Theorem: CompHaus.isIso_of_bijective
File: Mathlib/Topology/Category/CompHaus/Basic.lean

tactic: let E := Equiv.ofBijective _ bij
state_before: X✝ : Type u_1
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ⇑f
⊢ IsIso f
state_after: X✝ : Type u_1
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ⇑f
E : (forget CompHaus).obj X ≃ (forget CompHaus).obj Y := Equiv.ofBijective (⇑f) bij
⊢ IsIso f

tactic: have hE : Continuous E.symm := by
  rw [continuous_iff_isClosed]
  intro S hS
  rw [← E.image_eq_preimage]
  exact isClosedMap f S hS
state_before: X✝ : Type u_1
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ⇑f
E : (forget CompHaus).obj X ≃ (forget CompHaus).obj Y := Equiv.ofBijective (⇑f) bij
⊢ IsIso f
state_after: X✝ : Type u_1
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ⇑f
E : (forget CompHaus).obj X ≃ (forget CompHaus).obj Y := Equiv.ofBijective (⇑f) bij
hE : Continuous ⇑E.symm
⊢ IsIso f

tactic: refine ⟨⟨⟨E.symm, hE⟩, ?_, ?_⟩⟩
state_before: X✝ : Type u_1
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ⇑f
E : (forget CompHaus).obj X ≃ (forget CompHaus).obj Y := Equiv.ofBijective (⇑f) bij
hE : Continuous ⇑E.symm
⊢ IsIso f
state_after: case refine_1
X✝ : Type u_1
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ⇑f
E : (forget CompHaus).obj X ≃ (forget CompHaus).obj Y := Equiv.ofBijective (⇑f) bij
hE : Continuous ⇑E.symm
⊢ f ≫ { toFun := ⇑E.symm, continuous_toFun := hE } = 𝟙 X

case refine_2
X✝ : Type u_1
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ⇑f
E : (forget CompHaus).obj X ≃ (forget CompHaus).obj Y := Equiv.ofBijective (⇑f) bij
hE : Continuous ⇑E.symm
⊢ { toFun := ⇑E.symm, continuous_toFun := hE } ≫ f = 𝟙 Y

tactic: rw [continuous_iff_isClosed]
state_before: X✝ : Type u_1
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ⇑f
E : (forget CompHaus).obj X ≃ (forget CompHaus).obj Y := Equiv.ofBijective (⇑f) bij
⊢ Continuous ⇑E.symm
state_after: X✝ : Type u_1
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ⇑f
E : (forget CompHaus).obj X ≃ (forget CompHaus).obj Y := Equiv.ofBijective (⇑f) bij
⊢ ∀ (s : Set ((forget CompHaus).obj X)), IsClosed s → IsClosed (⇑E.symm ⁻¹' s)

tactic: intro S hS
state_before: X✝ : Type u_1
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ⇑f
E : (forget CompHaus).obj X ≃ (forget CompHaus).obj Y := Equiv.ofBijective (⇑f) bij
⊢ ∀ (s : Set ((forget CompHaus).obj X)), IsClosed s → IsClosed (⇑E.symm ⁻¹' s)
state_after: X✝ : Type u_1
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ⇑f
E : (forget CompHaus).obj X ≃ (forget CompHaus).obj Y := Equiv.ofBijective (⇑f) bij
S : Set ((forget CompHaus).obj X)
hS : IsClosed S
⊢ IsClosed (⇑E.symm ⁻¹' S)

tactic: rw [← E.image_eq_preimage]
state_before: X✝ : Type u_1
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ⇑f
E : (forget CompHaus).obj X ≃ (forget CompHaus).obj Y := Equiv.ofBijective (⇑f) bij
S : Set ((forget CompHaus).obj X)
hS : IsClosed S
⊢ IsClosed (⇑E.symm ⁻¹' S)
state_after: X✝ : Type u_1
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ⇑f
E : (forget CompHaus).obj X ≃ (forget CompHaus).obj Y := Equiv.ofBijective (⇑f) bij
S : Set ((forget CompHaus).obj X)
hS : IsClosed S
⊢ IsClosed (⇑E '' S)

tactic: exact isClosedMap f S hS
state_before: X✝ : Type u_1
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ⇑f
E : (forget CompHaus).obj X ≃ (forget CompHaus).obj Y := Equiv.ofBijective (⇑f) bij
S : Set ((forget CompHaus).obj X)
hS : IsClosed S
⊢ IsClosed (⇑E '' S)
state_after: no goals

tactic: ext x
state_before: case refine_1
X✝ : Type u_1
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ⇑f
E : (forget CompHaus).obj X ≃ (forget CompHaus).obj Y := Equiv.ofBijective (⇑f) bij
hE : Continuous ⇑E.symm
⊢ f ≫ { toFun := ⇑E.symm, continuous_toFun := hE } = 𝟙 X
state_after: case refine_1.w
X✝ : Type u_1
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ⇑f
E : (forget CompHaus).obj X ≃ (forget CompHaus).obj Y := Equiv.ofBijective (⇑f) bij
hE : Continuous ⇑E.symm
x : (forget CompHaus).obj X
⊢ (f ≫ { toFun := ⇑E.symm, continuous_toFun := hE }) x = (𝟙 X) x

tactic: apply E.symm_apply_apply
state_before: case refine_1.w
X✝ : Type u_1
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ⇑f
E : (forget CompHaus).obj X ≃ (forget CompHaus).obj Y := Equiv.ofBijective (⇑f) bij
hE : Continuous ⇑E.symm
x : (forget CompHaus).obj X
⊢ (f ≫ { toFun := ⇑E.symm, continuous_toFun := hE }) x = (𝟙 X) x
state_after: no goals

tactic: ext x
state_before: case refine_2
X✝ : Type u_1
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ⇑f
E : (forget CompHaus).obj X ≃ (forget CompHaus).obj Y := Equiv.ofBijective (⇑f) bij
hE : Continuous ⇑E.symm
⊢ { toFun := ⇑E.symm, continuous_toFun := hE } ≫ f = 𝟙 Y
state_after: case refine_2.w
X✝ : Type u_1
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ⇑f
E : (forget CompHaus).obj X ≃ (forget CompHaus).obj Y := Equiv.ofBijective (⇑f) bij
hE : Continuous ⇑E.symm
x : (forget CompHaus).obj Y
⊢ ({ toFun := ⇑E.symm, continuous_toFun := hE } ≫ f) x = (𝟙 Y) x

tactic: apply E.apply_symm_apply
state_before: case refine_2.w
X✝ : Type u_1
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ⇑f
E : (forget CompHaus).obj X ≃ (forget CompHaus).obj Y := Equiv.ofBijective (⇑f) bij
hE : Continuous ⇑E.symm
x : (forget CompHaus).obj Y
⊢ ({ toFun := ⇑E.symm, continuous_toFun := hE } ≫ f) x = (𝟙 Y) x
state_after: no goals