α : Type u_1
inst✝² : UniformSpace α
β : Type ?u.37466
inst✝¹ : UniformSpace β
γ : Type ?u.37472
inst✝ : UniformSpace γ
this :
  (fun x => (↑α x.fst, ↑α x.snd)) =
    (fun x =>
        (Quotient.mk (separationSetoid (CauchyFilter α)) x.fst,
          Quotient.mk (separationSetoid (CauchyFilter α)) x.snd)) ∘
      fun x => (pureCauchy x.fst, pureCauchy x.snd)
⊢ Filter.comap (fun p => (↑α p.fst, ↑α p.snd)) (𝓤 (Completion α)) = 𝓤 α
α : Type u_1
inst✝² : UniformSpace α
β : Type ?u.37466
inst✝¹ : UniformSpace β
γ : Type ?u.37472
inst✝ : UniformSpace γ
⊢ Filter.comap (fun p => (↑α p.fst, ↑α p.snd)) (𝓤 (Completion α)) = 𝓤 α
have :
  (fun x : α × α => ((x.1 : Completion α), (x.2 : Completion α))) =
    (fun x : CauchyFilter α × CauchyFilter α => (⟦x.1⟧, ⟦x.2⟧)) ∘ fun x : α × α =>
      (pureCauchy x.1, pureCauchy x.2) :=
  by ext ⟨a, b⟩ <;> simp <;> rfl
α : Type u_1
inst✝² : UniformSpace α
β : Type ?u.37466
inst✝¹ : UniformSpace β
γ : Type ?u.37472
inst✝ : UniformSpace γ
this :
  (fun x => (↑α x.fst, ↑α x.snd)) =
    (fun x =>
        (Quotient.mk (separationSetoid (CauchyFilter α)) x.fst,
          Quotient.mk (separationSetoid (CauchyFilter α)) x.snd)) ∘
      fun x => (pureCauchy x.fst, pureCauchy x.snd)
⊢ Filter.comap (fun x => (pureCauchy x.fst, pureCauchy x.snd))
      (Filter.comap
        (fun x =>
          (Quotient.mk (separationSetoid (CauchyFilter α)) x.fst,
            Quotient.mk (separationSetoid (CauchyFilter α)) x.snd))
        (𝓤 (Completion α))) =
    𝓤 α
α : Type u_1
inst✝² : UniformSpace α
β : Type ?u.37466
inst✝¹ : UniformSpace β
γ : Type ?u.37472
inst✝ : UniformSpace γ
this :
  (fun x => (↑α x.fst, ↑α x.snd)) =
    (fun x =>
        (Quotient.mk (separationSetoid (CauchyFilter α)) x.fst,
          Quotient.mk (separationSetoid (CauchyFilter α)) x.snd)) ∘
      fun x => (pureCauchy x.fst, pureCauchy x.snd)
⊢ Filter.comap (fun p => (↑α p.fst, ↑α p.snd)) (𝓤 (Completion α)) = 𝓤 α
rw [this, ← Filter.comap_comap]
α : Type u_1
inst✝² : UniformSpace α
β : Type ?u.37466
inst✝¹ : UniformSpace β
γ : Type ?u.37472
inst✝ : UniformSpace γ
this :
  (fun x => (↑α x.fst, ↑α x.snd)) =
    (fun x =>
        (Quotient.mk (separationSetoid (CauchyFilter α)) x.fst,
          Quotient.mk (separationSetoid (CauchyFilter α)) x.snd)) ∘
      fun x => (pureCauchy x.fst, pureCauchy x.snd)
⊢ Filter.comap (fun x => (pureCauchy x.fst, pureCauchy x.snd))
      (Filter.comap
        (fun x =>
          (Quotient.mk (separationSetoid (CauchyFilter α)) x.fst,
            Quotient.mk (separationSetoid (CauchyFilter α)) x.snd))
        (𝓤 (Quotient (separationSetoid (CauchyFilter α))))) =
    𝓤 α
α : Type u_1
inst✝² : UniformSpace α
β : Type ?u.37466
inst✝¹ : UniformSpace β
γ : Type ?u.37472
inst✝ : UniformSpace γ
this :
  (fun x => (↑α x.fst, ↑α x.snd)) =
    (fun x =>
        (Quotient.mk (separationSetoid (CauchyFilter α)) x.fst,
          Quotient.mk (separationSetoid (CauchyFilter α)) x.snd)) ∘
      fun x => (pureCauchy x.fst, pureCauchy x.snd)
⊢ Filter.comap (fun x => (pureCauchy x.fst, pureCauchy x.snd))
      (Filter.comap
        (fun x =>
          (Quotient.mk (separationSetoid (CauchyFilter α)) x.fst,
            Quotient.mk (separationSetoid (CauchyFilter α)) x.snd))
        (𝓤 (Completion α))) =
    𝓤 α
change Filter.comap _ (Filter.comap _ (𝓤 <| Quotient <| separationSetoid <| CauchyFilter α)) = 𝓤 α
no goals
α : Type u_1
inst✝² : UniformSpace α
β : Type ?u.37466
inst✝¹ : UniformSpace β
γ : Type ?u.37472
inst✝ : UniformSpace γ
this :
  (fun x => (↑α x.fst, ↑α x.snd)) =
    (fun x =>
        (Quotient.mk (separationSetoid (CauchyFilter α)) x.fst,
          Quotient.mk (separationSetoid (CauchyFilter α)) x.snd)) ∘
      fun x => (pureCauchy x.fst, pureCauchy x.snd)
⊢ Filter.comap (fun x => (pureCauchy x.fst, pureCauchy x.snd))
      (Filter.comap
        (fun x =>
          (Quotient.mk (separationSetoid (CauchyFilter α)) x.fst,
            Quotient.mk (separationSetoid (CauchyFilter α)) x.snd))
        (𝓤 (Quotient (separationSetoid (CauchyFilter α))))) =
    𝓤 α
rw [comap_quotient_eq_uniformity, uniformEmbedding_pureCauchy.comap_uniformity]
no goals
α : Type u_1
inst✝² : UniformSpace α
β : Type ?u.37466
inst✝¹ : UniformSpace β
γ : Type ?u.37472
inst✝ : UniformSpace γ
⊢ (fun x => (↑α x.fst, ↑α x.snd)) =
    (fun x =>
        (Quotient.mk (separationSetoid (CauchyFilter α)) x.fst,
          Quotient.mk (separationSetoid (CauchyFilter α)) x.snd)) ∘
      fun x => (pureCauchy x.fst, pureCauchy x.snd)
ext ⟨a, b⟩ <;> simp <;> rfl