Theorem: TopCat.pullback_topology
File: Mathlib/Topology/Category/TopCat/Limits/Pullbacks.lean

Proof steps:
state_before: J : Type v
inst✝ : SmallCategory J
X✝ Y✝ Z✝ X Y Z : TopCat
f : X ⟶ Z
g : Y ⟶ Z
⊢ (pullback f g).str = induced (⇑(pullback.fst f g)) X.str ⊓ induced (⇑(pullback.snd f g)) Y.str
state_after: J : Type v
inst✝ : SmallCategory J
X✝ Y✝ Z✝ X Y Z : TopCat
f : X ⟶ Z
g : Y ⟶ Z
homeo : ↑(pullback f g) ≃ₜ ↑(of { p // f p.1 = g p.2 }) := homeoOfIso (pullbackIsoProdSubtype f g)
⊢ (pullback f g).str = induced (⇑(pullback.fst f g)) X.str ⊓ induced (⇑(pullback.snd f g)) Y.str
tactic: let homeo := homeoOfIso (pullbackIsoProdSubtype f g)
state_before: J : Type v
inst✝ : SmallCategory J
X✝ Y✝ Z✝ X Y Z : TopCat
f : X ⟶ Z
g : Y ⟶ Z
homeo : ↑(pullback f g) ≃ₜ ↑(of { p // f p.1 = g p.2 }) := homeoOfIso (pullbackIsoProdSubtype f g)
⊢ (pullback f g).str = induced (⇑(pullback.fst f g)) X.str ⊓ induced (⇑(pullback.snd f g)) Y.str
state_after: J : Type v
inst✝ : SmallCategory J
X✝ Y✝ Z✝ X Y Z : TopCat
f : X ⟶ Z
g : Y ⟶ Z
homeo : ↑(pullback f g) ≃ₜ ↑(of { p // f p.1 = g p.2 }) := homeoOfIso (pullbackIsoProdSubtype f g)
⊢ induced (⇑homeo) (of { p // f p.1 = g p.2 }).topologicalSpace_coe =
    induced (⇑(pullback.fst f g)) X.str ⊓ induced (⇑(pullback.snd f g)) Y.str
tactic: refine homeo.inducing.induced.trans ?_
state_before: J : Type v
inst✝ : SmallCategory J
X✝ Y✝ Z✝ X Y Z : TopCat
f : X ⟶ Z
g : Y ⟶ Z
homeo : ↑(pullback f g) ≃ₜ ↑(of { p // f p.1 = g p.2 }) := homeoOfIso (pullbackIsoProdSubtype f g)
⊢ induced (⇑homeo) (of { p // f p.1 = g p.2 }).topologicalSpace_coe =
    induced (⇑(pullback.fst f g)) X.str ⊓ induced (⇑(pullback.snd f g)) Y.str
state_after: J : Type v
inst✝ : SmallCategory J
X✝ Y✝ Z✝ X Y Z : TopCat
f : X ⟶ Z
g : Y ⟶ Z
homeo : ↑(pullback f g) ≃ₜ ↑(of { p // f p.1 = g p.2 }) := homeoOfIso (pullbackIsoProdSubtype f g)
⊢ induced (⇑homeo) (induced Subtype.val (induced Prod.fst X.str ⊓ induced Prod.snd Y.str)) =
    induced (⇑(pullback.fst f g)) X.str ⊓ induced (⇑(pullback.snd f g)) Y.str
tactic: change induced homeo (induced _ ( (induced Prod.fst X.str) ⊓ (induced Prod.snd Y.str))) = _
state_before: J : Type v
inst✝ : SmallCategory J
X✝ Y✝ Z✝ X Y Z : TopCat
f : X ⟶ Z
g : Y ⟶ Z
homeo : ↑(pullback f g) ≃ₜ ↑(of { p // f p.1 = g p.2 }) := homeoOfIso (pullbackIsoProdSubtype f g)
⊢ induced (⇑homeo) (induced Subtype.val (induced Prod.fst X.str ⊓ induced Prod.snd Y.str)) =
    induced (⇑(pullback.fst f g)) X.str ⊓ induced (⇑(pullback.snd f g)) Y.str
state_after: J : Type v
inst✝ : SmallCategory J
X✝ Y✝ Z✝ X Y Z : TopCat
f : X ⟶ Z
g : Y ⟶ Z
homeo : ↑(pullback f g) ≃ₜ ↑(of { p // f p.1 = g p.2 }) := homeoOfIso (pullbackIsoProdSubtype f g)
⊢ induced ((Prod.fst ∘ Subtype.val) ∘ ⇑homeo) X.str ⊓ induced ((Prod.snd ∘ Subtype.val) ∘ ⇑homeo) Y.str =
    induced (⇑(pullback.fst f g)) X.str ⊓ induced (⇑(pullback.snd f g)) Y.str
tactic: simp only [induced_compose, induced_inf]
state_before: J : Type v
inst✝ : SmallCategory J
X✝ Y✝ Z✝ X Y Z : TopCat
f : X ⟶ Z
g : Y ⟶ Z
homeo : ↑(pullback f g) ≃ₜ ↑(of { p // f p.1 = g p.2 }) := homeoOfIso (pullbackIsoProdSubtype f g)
⊢ induced ((Prod.fst ∘ Subtype.val) ∘ ⇑homeo) X.str ⊓ induced ((Prod.snd ∘ Subtype.val) ∘ ⇑homeo) Y.str =
    induced (⇑(pullback.fst f g)) X.str ⊓ induced (⇑(pullback.snd f g)) Y.str
state_after: no goals
tactic: congr