Theorem: LocalHomeomorph.isLocalStructomorphWithinAt_iff
File: Mathlib/Geometry/Manifold/LocalInvariantProperties.lean

tactic: constructor
state_before: H : Type u_1
M : Type ?u.69060
H' : Type ?u.69063
M' : Type ?u.69066
X : Type ?u.69069
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
inst✝⁵ : ChartedSpace H M
inst✝⁴ : TopologicalSpace H'
inst✝³ : TopologicalSpace M'
inst✝² : ChartedSpace H' M'
inst✝¹ : TopologicalSpace X
G✝ : StructureGroupoid H
G' : StructureGroupoid H'
e e' : LocalHomeomorph M H
f✝ f' : LocalHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s✝ t : Set M
x✝ : M
Q : (H → H) → Set H → H → Prop
G : StructureGroupoid H
inst✝ : ClosedUnderRestriction G
f : LocalHomeomorph H H
s : Set H
x : H
hx : x ∈ f.source ∪ sᶜ
⊢ IsLocalStructomorphWithinAt G (↑f) s x ↔
    x ∈ s → ∃ e, e ∈ G ∧ e.source ⊆ f.source ∧ EqOn (↑f) (↑e) (s ∩ e.source) ∧ x ∈ e.source

tactic: intro hf h2x
state_before: case mp
H : Type u_1
M : Type ?u.69060
H' : Type ?u.69063
M' : Type ?u.69066
X : Type ?u.69069
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
inst✝⁵ : ChartedSpace H M
inst✝⁴ : TopologicalSpace H'
inst✝³ : TopologicalSpace M'
inst✝² : ChartedSpace H' M'
inst✝¹ : TopologicalSpace X
G✝ : StructureGroupoid H
G' : StructureGroupoid H'
e e' : LocalHomeomorph M H
f✝ f' : LocalHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s✝ t : Set M
x✝ : M
Q : (H → H) → Set H → H → Prop
G : StructureGroupoid H
inst✝ : ClosedUnderRestriction G
f : LocalHomeomorph H H
s : Set H
x : H
hx : x ∈ f.source ∪ sᶜ
⊢ IsLocalStructomorphWithinAt G (↑f) s x →
    x ∈ s → ∃ e, e ∈ G ∧ e.source ⊆ f.source ∧ EqOn (↑f) (↑e) (s ∩ e.source) ∧ x ∈ e.source

tactic: obtain ⟨e, he, hfe, hxe⟩ := hf h2x
state_before: case mp
H : Type u_1
M : Type ?u.69060
H' : Type ?u.69063
M' : Type ?u.69066
X : Type ?u.69069
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
inst✝⁵ : ChartedSpace H M
inst✝⁴ : TopologicalSpace H'
inst✝³ : TopologicalSpace M'
inst✝² : ChartedSpace H' M'
inst✝¹ : TopologicalSpace X
G✝ : StructureGroupoid H
G' : StructureGroupoid H'
e e' : LocalHomeomorph M H
f✝ f' : LocalHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s✝ t : Set M
x✝ : M
Q : (H → H) → Set H → H → Prop
G : StructureGroupoid H
inst✝ : ClosedUnderRestriction G
f : LocalHomeomorph H H
s : Set H
x : H
hx : x ∈ f.source ∪ sᶜ
hf : IsLocalStructomorphWithinAt G (↑f) s x
h2x : x ∈ s
⊢ ∃ e, e ∈ G ∧ e.source ⊆ f.source ∧ EqOn (↑f) (↑e) (s ∩ e.source) ∧ x ∈ e.source

tactic: refine' ⟨e.restr f.source, closedUnderRestriction' he f.open_source, _, _, hxe, _⟩
state_before: case mp.intro.intro.intro
H : Type u_1
M : Type ?u.69060
H' : Type ?u.69063
M' : Type ?u.69066
X : Type ?u.69069
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
inst✝⁵ : ChartedSpace H M
inst✝⁴ : TopologicalSpace H'
inst✝³ : TopologicalSpace M'
inst✝² : ChartedSpace H' M'
inst✝¹ : TopologicalSpace X
G✝ : StructureGroupoid H
G' : StructureGroupoid H'
e✝ e' : LocalHomeomorph M H
f✝ f' : LocalHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s✝ t : Set M
x✝ : M
Q : (H → H) → Set H → H → Prop
G : StructureGroupoid H
inst✝ : ClosedUnderRestriction G
f : LocalHomeomorph H H
s : Set H
x : H
hx : x ∈ f.source ∪ sᶜ
hf : IsLocalStructomorphWithinAt G (↑f) s x
h2x : x ∈ s
e : LocalHomeomorph H H
he : e ∈ G
hfe : EqOn (↑f) (↑e.toLocalEquiv) (s ∩ e.source)
hxe : x ∈ e.source
⊢ ∃ e, e ∈ G ∧ e.source ⊆ f.source ∧ EqOn (↑f) (↑e) (s ∩ e.source) ∧ x ∈ e.source

tactic: simp_rw [LocalHomeomorph.restr_source]
state_before: case mp.intro.intro.intro.refine'_1
H : Type u_1
M : Type ?u.69060
H' : Type ?u.69063
M' : Type ?u.69066
X : Type ?u.69069
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
inst✝⁵ : ChartedSpace H M
inst✝⁴ : TopologicalSpace H'
inst✝³ : TopologicalSpace M'
inst✝² : ChartedSpace H' M'
inst✝¹ : TopologicalSpace X
G✝ : StructureGroupoid H
G' : StructureGroupoid H'
e✝ e' : LocalHomeomorph M H
f✝ f' : LocalHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s✝ t : Set M
x✝ : M
Q : (H → H) → Set H → H → Prop
G : StructureGroupoid H
inst✝ : ClosedUnderRestriction G
f : LocalHomeomorph H H
s : Set H
x : H
hx : x ∈ f.source ∪ sᶜ
hf : IsLocalStructomorphWithinAt G (↑f) s x
h2x : x ∈ s
e : LocalHomeomorph H H
he : e ∈ G
hfe : EqOn (↑f) (↑e.toLocalEquiv) (s ∩ e.source)
hxe : x ∈ e.source
⊢ (LocalHomeomorph.restr e f.source).toLocalEquiv.source ⊆ f.source

tactic: refine' (inter_subset_right _ _).trans interior_subset
state_before: case mp.intro.intro.intro.refine'_1
H : Type u_1
M : Type ?u.69060
H' : Type ?u.69063
M' : Type ?u.69066
X : Type ?u.69069
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
inst✝⁵ : ChartedSpace H M
inst✝⁴ : TopologicalSpace H'
inst✝³ : TopologicalSpace M'
inst✝² : ChartedSpace H' M'
inst✝¹ : TopologicalSpace X
G✝ : StructureGroupoid H
G' : StructureGroupoid H'
e✝ e' : LocalHomeomorph M H
f✝ f' : LocalHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s✝ t : Set M
x✝ : M
Q : (H → H) → Set H → H → Prop
G : StructureGroupoid H
inst✝ : ClosedUnderRestriction G
f : LocalHomeomorph H H
s : Set H
x : H
hx : x ∈ f.source ∪ sᶜ
hf : IsLocalStructomorphWithinAt G (↑f) s x
h2x : x ∈ s
e : LocalHomeomorph H H
he : e ∈ G
hfe : EqOn (↑f) (↑e.toLocalEquiv) (s ∩ e.source)
hxe : x ∈ e.source
⊢ e.source ∩ interior f.source ⊆ f.source

tactic: intro x' hx'
state_before: case mp.intro.intro.intro.refine'_2
H : Type u_1
M : Type ?u.69060
H' : Type ?u.69063
M' : Type ?u.69066
X : Type ?u.69069
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
inst✝⁵ : ChartedSpace H M
inst✝⁴ : TopologicalSpace H'
inst✝³ : TopologicalSpace M'
inst✝² : ChartedSpace H' M'
inst✝¹ : TopologicalSpace X
G✝ : StructureGroupoid H
G' : StructureGroupoid H'
e✝ e' : LocalHomeomorph M H
f✝ f' : LocalHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s✝ t : Set M
x✝ : M
Q : (H → H) → Set H → H → Prop
G : StructureGroupoid H
inst✝ : ClosedUnderRestriction G
f : LocalHomeomorph H H
s : Set H
x : H
hx : x ∈ f.source ∪ sᶜ
hf : IsLocalStructomorphWithinAt G (↑f) s x
h2x : x ∈ s
e : LocalHomeomorph H H
he : e ∈ G
hfe : EqOn (↑f) (↑e.toLocalEquiv) (s ∩ e.source)
hxe : x ∈ e.source
⊢ EqOn (↑f) (↑(LocalHomeomorph.restr e f.source)) (s ∩ (LocalHomeomorph.restr e f.source).toLocalEquiv.source)

tactic: exact hfe ⟨hx'.1, hx'.2.1⟩
state_before: case mp.intro.intro.intro.refine'_2
H : Type u_1
M : Type ?u.69060
H' : Type ?u.69063
M' : Type ?u.69066
X : Type ?u.69069
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
inst✝⁵ : ChartedSpace H M
inst✝⁴ : TopologicalSpace H'
inst✝³ : TopologicalSpace M'
inst✝² : ChartedSpace H' M'
inst✝¹ : TopologicalSpace X
G✝ : StructureGroupoid H
G' : StructureGroupoid H'
e✝ e' : LocalHomeomorph M H
f✝ f' : LocalHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s✝ t : Set M
x✝ : M
Q : (H → H) → Set H → H → Prop
G : StructureGroupoid H
inst✝ : ClosedUnderRestriction G
f : LocalHomeomorph H H
s : Set H
x : H
hx : x ∈ f.source ∪ sᶜ
hf : IsLocalStructomorphWithinAt G (↑f) s x
h2x : x ∈ s
e : LocalHomeomorph H H
he : e ∈ G
hfe : EqOn (↑f) (↑e.toLocalEquiv) (s ∩ e.source)
hxe : x ∈ e.source
x' : H
hx' : x' ∈ s ∩ (LocalHomeomorph.restr e f.source).toLocalEquiv.source
⊢ ↑f x' = ↑(LocalHomeomorph.restr e f.source) x'

tactic: rw [f.open_source.interior_eq]
state_before: case mp.intro.intro.intro.refine'_3
H : Type u_1
M : Type ?u.69060
H' : Type ?u.69063
M' : Type ?u.69066
X : Type ?u.69069
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
inst✝⁵ : ChartedSpace H M
inst✝⁴ : TopologicalSpace H'
inst✝³ : TopologicalSpace M'
inst✝² : ChartedSpace H' M'
inst✝¹ : TopologicalSpace X
G✝ : StructureGroupoid H
G' : StructureGroupoid H'
e✝ e' : LocalHomeomorph M H
f✝ f' : LocalHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s✝ t : Set M
x✝ : M
Q : (H → H) → Set H → H → Prop
G : StructureGroupoid H
inst✝ : ClosedUnderRestriction G
f : LocalHomeomorph H H
s : Set H
x : H
hx : x ∈ f.source ∪ sᶜ
hf : IsLocalStructomorphWithinAt G (↑f) s x
h2x : x ∈ s
e : LocalHomeomorph H H
he : e ∈ G
hfe : EqOn (↑f) (↑e.toLocalEquiv) (s ∩ e.source)
hxe : x ∈ e.source
⊢ x ∈ interior f.source

tactic: exact Or.resolve_right hx (not_not.mpr h2x)
state_before: case mp.intro.intro.intro.refine'_3
H : Type u_1
M : Type ?u.69060
H' : Type ?u.69063
M' : Type ?u.69066
X : Type ?u.69069
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
inst✝⁵ : ChartedSpace H M
inst✝⁴ : TopologicalSpace H'
inst✝³ : TopologicalSpace M'
inst✝² : ChartedSpace H' M'
inst✝¹ : TopologicalSpace X
G✝ : StructureGroupoid H
G' : StructureGroupoid H'
e✝ e' : LocalHomeomorph M H
f✝ f' : LocalHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s✝ t : Set M
x✝ : M
Q : (H → H) → Set H → H → Prop
G : StructureGroupoid H
inst✝ : ClosedUnderRestriction G
f : LocalHomeomorph H H
s : Set H
x : H
hx : x ∈ f.source ∪ sᶜ
hf : IsLocalStructomorphWithinAt G (↑f) s x
h2x : x ∈ s
e : LocalHomeomorph H H
he : e ∈ G
hfe : EqOn (↑f) (↑e.toLocalEquiv) (s ∩ e.source)
hxe : x ∈ e.source
⊢ x ∈ f.source

tactic: intro hf hx
state_before: case mpr
H : Type u_1
M : Type ?u.69060
H' : Type ?u.69063
M' : Type ?u.69066
X : Type ?u.69069
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
inst✝⁵ : ChartedSpace H M
inst✝⁴ : TopologicalSpace H'
inst✝³ : TopologicalSpace M'
inst✝² : ChartedSpace H' M'
inst✝¹ : TopologicalSpace X
G✝ : StructureGroupoid H
G' : StructureGroupoid H'
e e' : LocalHomeomorph M H
f✝ f' : LocalHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s✝ t : Set M
x✝ : M
Q : (H → H) → Set H → H → Prop
G : StructureGroupoid H
inst✝ : ClosedUnderRestriction G
f : LocalHomeomorph H H
s : Set H
x : H
hx : x ∈ f.source ∪ sᶜ
⊢ (x ∈ s → ∃ e, e ∈ G ∧ e.source ⊆ f.source ∧ EqOn (↑f) (↑e) (s ∩ e.source) ∧ x ∈ e.source) →
    IsLocalStructomorphWithinAt G (↑f) s x

tactic: obtain ⟨e, he, _, hfe, hxe⟩ := hf hx
state_before: case mpr
H : Type u_1
M : Type ?u.69060
H' : Type ?u.69063
M' : Type ?u.69066
X : Type ?u.69069
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
inst✝⁵ : ChartedSpace H M
inst✝⁴ : TopologicalSpace H'
inst✝³ : TopologicalSpace M'
inst✝² : ChartedSpace H' M'
inst✝¹ : TopologicalSpace X
G✝ : StructureGroupoid H
G' : StructureGroupoid H'
e e' : LocalHomeomorph M H
f✝ f' : LocalHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s✝ t : Set M
x✝ : M
Q : (H → H) → Set H → H → Prop
G : StructureGroupoid H
inst✝ : ClosedUnderRestriction G
f : LocalHomeomorph H H
s : Set H
x : H
hx✝ : x ∈ f.source ∪ sᶜ
hf : x ∈ s → ∃ e, e ∈ G ∧ e.source ⊆ f.source ∧ EqOn (↑f) (↑e) (s ∩ e.source) ∧ x ∈ e.source
hx : x ∈ s
⊢ ∃ e, e ∈ G ∧ EqOn (↑f) (↑e.toLocalEquiv) (s ∩ e.source) ∧ x ∈ e.source

tactic: exact ⟨e, he, hfe, hxe⟩
state_before: case mpr.intro.intro.intro.intro
H : Type u_1
M : Type ?u.69060
H' : Type ?u.69063
M' : Type ?u.69066
X : Type ?u.69069
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
inst✝⁵ : ChartedSpace H M
inst✝⁴ : TopologicalSpace H'
inst✝³ : TopologicalSpace M'
inst✝² : ChartedSpace H' M'
inst✝¹ : TopologicalSpace X
G✝ : StructureGroupoid H
G' : StructureGroupoid H'
e✝ e' : LocalHomeomorph M H
f✝ f' : LocalHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s✝ t : Set M
x✝ : M
Q : (H → H) → Set H → H → Prop
G : StructureGroupoid H
inst✝ : ClosedUnderRestriction G
f : LocalHomeomorph H H
s : Set H
x : H
hx✝ : x ∈ f.source ∪ sᶜ
hf : x ∈ s → ∃ e, e ∈ G ∧ e.source ⊆ f.source ∧ EqOn (↑f) (↑e) (s ∩ e.source) ∧ x ∈ e.source
hx : x ∈ s
e : LocalHomeomorph H H
he : e ∈ G
left✝ : e.source ⊆ f.source
hfe : EqOn (↑f) (↑e) (s ∩ e.source)
hxe : x ∈ e.source
⊢ ∃ e, e ∈ G ∧ EqOn (↑f) (↑e.toLocalEquiv) (s ∩ e.source) ∧ x ∈ e.source