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

tactic: let E := Equiv.ofBijective _ bij
state_before: X✝ : Type ?u.4524
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ((forget CompHaus).map f)
⊢ 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.4524
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ((forget CompHaus).map f)
E : (forget CompHaus).obj X ≃ (forget CompHaus).obj Y := Equiv.ofBijective ((forget CompHaus).map f) bij
⊢ IsIso f

tactic: refine' ⟨⟨⟨E.symm, hE⟩, _, _⟩⟩
state_before: X✝ : Type ?u.4524
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ((forget CompHaus).map f)
E : (forget CompHaus).obj X ≃ (forget CompHaus).obj Y := Equiv.ofBijective ((forget CompHaus).map f) bij
hE : Continuous ↑E.symm
⊢ IsIso f

tactic: rw [continuous_iff_isClosed]
state_before: X✝ : Type ?u.4524
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ((forget CompHaus).map f)
E : (forget CompHaus).obj X ≃ (forget CompHaus).obj Y := Equiv.ofBijective ((forget CompHaus).map f) bij
⊢ Continuous ↑E.symm

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

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

tactic: exact isClosedMap f S hS
state_before: X✝ : Type ?u.4524
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ((forget CompHaus).map f)
E : (forget CompHaus).obj X ≃ (forget CompHaus).obj Y := Equiv.ofBijective ((forget CompHaus).map f) bij
S : Set ((forget CompHaus).obj X)
hS : IsClosed S
⊢ IsClosed (↑E '' S)

tactic: ext x
state_before: case refine'_1
X✝ : Type ?u.4524
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ((forget CompHaus).map f)
E : (forget CompHaus).obj X ≃ (forget CompHaus).obj Y := Equiv.ofBijective ((forget CompHaus).map f) bij
hE : Continuous ↑E.symm
⊢ f ≫ ContinuousMap.mk ↑E.symm = 𝟙 X

tactic: apply E.symm_apply_apply
state_before: case refine'_1.w
X✝ : Type ?u.4524
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ((forget CompHaus).map f)
E : (forget CompHaus).obj X ≃ (forget CompHaus).obj Y := Equiv.ofBijective ((forget CompHaus).map f) bij
hE : Continuous ↑E.symm
x : (forget CompHaus).obj X
⊢ (forget CompHaus).map (f ≫ ContinuousMap.mk ↑E.symm) x = (forget CompHaus).map (𝟙 X) x

tactic: ext x
state_before: case refine'_2
X✝ : Type ?u.4524
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ((forget CompHaus).map f)
E : (forget CompHaus).obj X ≃ (forget CompHaus).obj Y := Equiv.ofBijective ((forget CompHaus).map f) bij
hE : Continuous ↑E.symm
⊢ ContinuousMap.mk ↑E.symm ≫ f = 𝟙 Y

tactic: apply E.apply_symm_apply
state_before: case refine'_2.w
X✝ : Type ?u.4524
inst✝² : TopologicalSpace X✝
inst✝¹ : CompactSpace X✝
inst✝ : T2Space X✝
X Y : CompHaus
f : X ⟶ Y
bij : Function.Bijective ((forget CompHaus).map f)
E : (forget CompHaus).obj X ≃ (forget CompHaus).obj Y := Equiv.ofBijective ((forget CompHaus).map f) bij
hE : Continuous ↑E.symm
x : (forget CompHaus).obj Y
⊢ (forget CompHaus).map (ContinuousMap.mk ↑E.symm ≫ f) x = (forget CompHaus).map (𝟙 Y) x