Theorem: PartialHomeomorph.replaceEquiv_eq_self
File: Mathlib/Topology/PartialHomeomorph.lean

Proof steps:
state_before: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e : PartialHomeomorph X Y
e' : PartialEquiv X Y
h : e.toPartialEquiv = e'
⊢ e.replaceEquiv e' h = e
state_after: case mk
X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e' toPartialEquiv✝ : PartialEquiv X Y
open_source✝ : IsOpen toPartialEquiv✝.source
open_target✝ : IsOpen toPartialEquiv✝.target
continuousOn_toFun✝ : ContinuousOn (↑toPartialEquiv✝) toPartialEquiv✝.source
continuousOn_invFun✝ : ContinuousOn toPartialEquiv✝.invFun toPartialEquiv✝.target
h :
  { toPartialEquiv := toPartialEquiv✝, open_source := open_source✝, open_target := open_target✝,
        continuousOn_toFun := continuousOn_toFun✝, continuousOn_invFun := continuousOn_invFun✝ }.toPartialEquiv =
    e'
⊢ { toPartialEquiv := toPartialEquiv✝, open_source := open_source✝, open_target := open_target✝,
          continuousOn_toFun := continuousOn_toFun✝, continuousOn_invFun := continuousOn_invFun✝ }.replaceEquiv
      e' h =
    { toPartialEquiv := toPartialEquiv✝, open_source := open_source✝, open_target := open_target✝,
      continuousOn_toFun := continuousOn_toFun✝, continuousOn_invFun := continuousOn_invFun✝ }
tactic: cases e
state_before: case mk
X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e' toPartialEquiv✝ : PartialEquiv X Y
open_source✝ : IsOpen toPartialEquiv✝.source
open_target✝ : IsOpen toPartialEquiv✝.target
continuousOn_toFun✝ : ContinuousOn (↑toPartialEquiv✝) toPartialEquiv✝.source
continuousOn_invFun✝ : ContinuousOn toPartialEquiv✝.invFun toPartialEquiv✝.target
h :
  { toPartialEquiv := toPartialEquiv✝, open_source := open_source✝, open_target := open_target✝,
        continuousOn_toFun := continuousOn_toFun✝, continuousOn_invFun := continuousOn_invFun✝ }.toPartialEquiv =
    e'
⊢ { toPartialEquiv := toPartialEquiv✝, open_source := open_source✝, open_target := open_target✝,
          continuousOn_toFun := continuousOn_toFun✝, continuousOn_invFun := continuousOn_invFun✝ }.replaceEquiv
      e' h =
    { toPartialEquiv := toPartialEquiv✝, open_source := open_source✝, open_target := open_target✝,
      continuousOn_toFun := continuousOn_toFun✝, continuousOn_invFun := continuousOn_invFun✝ }
state_after: case mk
X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
toPartialEquiv✝ : PartialEquiv X Y
open_source✝ : IsOpen toPartialEquiv✝.source
open_target✝ : IsOpen toPartialEquiv✝.target
continuousOn_toFun✝ : ContinuousOn (↑toPartialEquiv✝) toPartialEquiv✝.source
continuousOn_invFun✝ : ContinuousOn toPartialEquiv✝.invFun toPartialEquiv✝.target
⊢ { toPartialEquiv := toPartialEquiv✝, open_source := open_source✝, open_target := open_target✝,
          continuousOn_toFun := continuousOn_toFun✝, continuousOn_invFun := continuousOn_invFun✝ }.replaceEquiv
      { toPartialEquiv := toPartialEquiv✝, open_source := open_source✝, open_target := open_target✝,
          continuousOn_toFun := continuousOn_toFun✝, continuousOn_invFun := continuousOn_invFun✝ }.toPartialEquiv
      ⋯ =
    { toPartialEquiv := toPartialEquiv✝, open_source := open_source✝, open_target := open_target✝,
      continuousOn_toFun := continuousOn_toFun✝, continuousOn_invFun := continuousOn_invFun✝ }
tactic: subst e'
state_before: case mk
X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
toPartialEquiv✝ : PartialEquiv X Y
open_source✝ : IsOpen toPartialEquiv✝.source
open_target✝ : IsOpen toPartialEquiv✝.target
continuousOn_toFun✝ : ContinuousOn (↑toPartialEquiv✝) toPartialEquiv✝.source
continuousOn_invFun✝ : ContinuousOn toPartialEquiv✝.invFun toPartialEquiv✝.target
⊢ { toPartialEquiv := toPartialEquiv✝, open_source := open_source✝, open_target := open_target✝,
          continuousOn_toFun := continuousOn_toFun✝, continuousOn_invFun := continuousOn_invFun✝ }.replaceEquiv
      { toPartialEquiv := toPartialEquiv✝, open_source := open_source✝, open_target := open_target✝,
          continuousOn_toFun := continuousOn_toFun✝, continuousOn_invFun := continuousOn_invFun✝ }.toPartialEquiv
      ⋯ =
    { toPartialEquiv := toPartialEquiv✝, open_source := open_source✝, open_target := open_target✝,
      continuousOn_toFun := continuousOn_toFun✝, continuousOn_invFun := continuousOn_invFun✝ }
state_after: no goals
tactic: rfl