Theorem: IsLocallyHomeomorphOn.mk
File: Mathlib/Topology/IsLocallyHomeomorph.lean

tactic: intro x hx
state_before: X : Type u_1
Y : Type u_2
Z : Type ?u.404
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
g : Y → Z
f : X → Y
s : Set X
t : Set Y
h : ∀ (x : X), x ∈ s → ∃ e, x ∈ e.source ∧ ∀ (y : X), y ∈ e.source → f y = ↑e y
⊢ IsLocallyHomeomorphOn f s

tactic: obtain ⟨e, hx, he⟩ := h x hx
state_before: X : Type u_1
Y : Type u_2
Z : Type ?u.404
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
g : Y → Z
f : X → Y
s : Set X
t : Set Y
h : ∀ (x : X), x ∈ s → ∃ e, x ∈ e.source ∧ ∀ (y : X), y ∈ e.source → f y = ↑e y
x : X
hx : x ∈ s
⊢ ∃ e, x ∈ e.source ∧ f = ↑e

tactic: exact
  ⟨{ e with
      toFun := f
      map_source' := fun x hx => by rw [he x hx] ; exact e.map_source' hx
      left_inv' := fun x hx => by rw [he x hx] ; exact e.left_inv' hx
      right_inv' := fun y hy => by rw [he _ (e.map_target' hy)] ; exact e.right_inv' hy
      continuous_toFun := (continuousOn_congr he).mpr e.continuous_toFun },
    hx, rfl⟩
state_before: case intro.intro
X : Type u_1
Y : Type u_2
Z : Type ?u.404
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
g : Y → Z
f : X → Y
s : Set X
t : Set Y
h : ∀ (x : X), x ∈ s → ∃ e, x ∈ e.source ∧ ∀ (y : X), y ∈ e.source → f y = ↑e y
x : X
hx✝ : x ∈ s
e : LocalHomeomorph X Y
hx : x ∈ e.source
he : ∀ (y : X), y ∈ e.source → f y = ↑e y
⊢ ∃ e, x ∈ e.source ∧ f = ↑e

tactic: rw [he x hx]
state_before: X : Type u_1
Y : Type u_2
Z : Type ?u.404
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
g : Y → Z
f : X → Y
s : Set X
t : Set Y
h : ∀ (x : X), x ∈ s → ∃ e, x ∈ e.source ∧ ∀ (y : X), y ∈ e.source → f y = ↑e y
x✝ : X
hx✝¹ : x✝ ∈ s
e : LocalHomeomorph X Y
hx✝ : x✝ ∈ e.source
he : ∀ (y : X), y ∈ e.source → f y = ↑e y
x : X
hx : x ∈ e.source
⊢ f x ∈ e.target

tactic: exact e.map_source' hx
state_before: X : Type u_1
Y : Type u_2
Z : Type ?u.404
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
g : Y → Z
f : X → Y
s : Set X
t : Set Y
h : ∀ (x : X), x ∈ s → ∃ e, x ∈ e.source ∧ ∀ (y : X), y ∈ e.source → f y = ↑e y
x✝ : X
hx✝¹ : x✝ ∈ s
e : LocalHomeomorph X Y
hx✝ : x✝ ∈ e.source
he : ∀ (y : X), y ∈ e.source → f y = ↑e y
x : X
hx : x ∈ e.source
⊢ ↑e x ∈ e.target

tactic: rw [he x hx]
state_before: X : Type u_1
Y : Type u_2
Z : Type ?u.404
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
g : Y → Z
f : X → Y
s : Set X
t : Set Y
h : ∀ (x : X), x ∈ s → ∃ e, x ∈ e.source ∧ ∀ (y : X), y ∈ e.source → f y = ↑e y
x✝ : X
hx✝¹ : x✝ ∈ s
e : LocalHomeomorph X Y
hx✝ : x✝ ∈ e.source
he : ∀ (y : X), y ∈ e.source → f y = ↑e y
x : X
hx : x ∈ e.source
⊢ LocalEquiv.invFun e.toLocalEquiv (f x) = x

tactic: exact e.left_inv' hx
state_before: X : Type u_1
Y : Type u_2
Z : Type ?u.404
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
g : Y → Z
f : X → Y
s : Set X
t : Set Y
h : ∀ (x : X), x ∈ s → ∃ e, x ∈ e.source ∧ ∀ (y : X), y ∈ e.source → f y = ↑e y
x✝ : X
hx✝¹ : x✝ ∈ s
e : LocalHomeomorph X Y
hx✝ : x✝ ∈ e.source
he : ∀ (y : X), y ∈ e.source → f y = ↑e y
x : X
hx : x ∈ e.source
⊢ LocalEquiv.invFun e.toLocalEquiv (↑e x) = x

tactic: rw [he _ (e.map_target' hy)]
state_before: X : Type u_1
Y : Type u_2
Z : Type ?u.404
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
g : Y → Z
f : X → Y
s : Set X
t : Set Y
h : ∀ (x : X), x ∈ s → ∃ e, x ∈ e.source ∧ ∀ (y : X), y ∈ e.source → f y = ↑e y
x : X
hx✝ : x ∈ s
e : LocalHomeomorph X Y
hx : x ∈ e.source
he : ∀ (y : X), y ∈ e.source → f y = ↑e y
y : Y
hy : y ∈ e.target
⊢ f (LocalEquiv.invFun e.toLocalEquiv y) = y

tactic: exact e.right_inv' hy
state_before: X : Type u_1
Y : Type u_2
Z : Type ?u.404
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
g : Y → Z
f : X → Y
s : Set X
t : Set Y
h : ∀ (x : X), x ∈ s → ∃ e, x ∈ e.source ∧ ∀ (y : X), y ∈ e.source → f y = ↑e y
x : X
hx✝ : x ∈ s
e : LocalHomeomorph X Y
hx : x ∈ e.source
he : ∀ (y : X), y ∈ e.source → f y = ↑e y
y : Y
hy : y ∈ e.target
⊢ ↑e (LocalEquiv.invFun e.toLocalEquiv y) = y