Theorem: StructureGroupoid.LocalInvariantProp.left_invariance
File: Mathlib/Geometry/Manifold/LocalInvariantProperties.lean

tactic: have h2f := hfs.preimage_mem_nhdsWithin (e'.open_source.mem_nhds hxe')
state_before: H : Type u_1
M : Type ?u.5019
H' : Type u_2
M' : Type ?u.5025
X : Type ?u.5028
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'
P : (H → H') → Set H → H → Prop
s✝ t u : Set H
x✝ : H
hG : LocalInvariantProp G G' P
s : Set H
x : H
f : H → H'
e' : LocalHomeomorph H' H'
he' : e' ∈ G'
hfs : ContinuousWithinAt f s x
hxe' : f x ∈ e'.source
⊢ P (↑e' ∘ f) s x ↔ P f s x

tactic: have h3f :=
  ((e'.continuousAt hxe').comp_continuousWithinAt hfs).preimage_mem_nhdsWithin <|
    e'.symm.open_source.mem_nhds <| e'.mapsTo hxe'
state_before: H : Type u_1
M : Type ?u.5019
H' : Type u_2
M' : Type ?u.5025
X : Type ?u.5028
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'
P : (H → H') → Set H → H → Prop
s✝ t u : Set H
x✝ : H
hG : LocalInvariantProp G G' P
s : Set H
x : H
f : H → H'
e' : LocalHomeomorph H' H'
he' : e' ∈ G'
hfs : ContinuousWithinAt f s x
hxe' : f x ∈ e'.source
h2f : f ⁻¹' e'.source ∈ 𝓝[s] x
⊢ P (↑e' ∘ f) s x ↔ P f s x

tactic: constructor
state_before: H : Type u_1
M : Type ?u.5019
H' : Type u_2
M' : Type ?u.5025
X : Type ?u.5028
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'
P : (H → H') → Set H → H → Prop
s✝ t u : Set H
x✝ : H
hG : LocalInvariantProp G G' P
s : Set H
x : H
f : H → H'
e' : LocalHomeomorph H' H'
he' : e' ∈ G'
hfs : ContinuousWithinAt f s x
hxe' : f x ∈ e'.source
h2f : f ⁻¹' e'.source ∈ 𝓝[s] x
h3f : ↑e' ∘ f ⁻¹' (LocalHomeomorph.symm e').toLocalEquiv.source ∈ 𝓝[s] x
⊢ P (↑e' ∘ f) s x ↔ P f s x

tactic: intro h
state_before: case mp
H : Type u_1
M : Type ?u.5019
H' : Type u_2
M' : Type ?u.5025
X : Type ?u.5028
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'
P : (H → H') → Set H → H → Prop
s✝ t u : Set H
x✝ : H
hG : LocalInvariantProp G G' P
s : Set H
x : H
f : H → H'
e' : LocalHomeomorph H' H'
he' : e' ∈ G'
hfs : ContinuousWithinAt f s x
hxe' : f x ∈ e'.source
h2f : f ⁻¹' e'.source ∈ 𝓝[s] x
h3f : ↑e' ∘ f ⁻¹' (LocalHomeomorph.symm e').toLocalEquiv.source ∈ 𝓝[s] x
⊢ P (↑e' ∘ f) s x → P f s x

tactic: rw [hG.is_local_nhds h3f] at h
state_before: case mp
H : Type u_1
M : Type ?u.5019
H' : Type u_2
M' : Type ?u.5025
X : Type ?u.5028
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'
P : (H → H') → Set H → H → Prop
s✝ t u : Set H
x✝ : H
hG : LocalInvariantProp G G' P
s : Set H
x : H
f : H → H'
e' : LocalHomeomorph H' H'
he' : e' ∈ G'
hfs : ContinuousWithinAt f s x
hxe' : f x ∈ e'.source
h2f : f ⁻¹' e'.source ∈ 𝓝[s] x
h3f : ↑e' ∘ f ⁻¹' (LocalHomeomorph.symm e').toLocalEquiv.source ∈ 𝓝[s] x
h : P (↑e' ∘ f) s x
⊢ P f s x

tactic: have h2 := hG.left_invariance' (G'.symm he') (inter_subset_right _ _) (e'.mapsTo hxe') h
state_before: case mp
H : Type u_1
M : Type ?u.5019
H' : Type u_2
M' : Type ?u.5025
X : Type ?u.5028
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'
P : (H → H') → Set H → H → Prop
s✝ t u : Set H
x✝ : H
hG : LocalInvariantProp G G' P
s : Set H
x : H
f : H → H'
e' : LocalHomeomorph H' H'
he' : e' ∈ G'
hfs : ContinuousWithinAt f s x
hxe' : f x ∈ e'.source
h2f : f ⁻¹' e'.source ∈ 𝓝[s] x
h3f : ↑e' ∘ f ⁻¹' (LocalHomeomorph.symm e').toLocalEquiv.source ∈ 𝓝[s] x
h : P (↑e' ∘ f) (s ∩ ↑e' ∘ f ⁻¹' (LocalHomeomorph.symm e').toLocalEquiv.source) x
⊢ P f s x

tactic: rw [← hG.is_local_nhds h3f] at h2
state_before: case mp
H : Type u_1
M : Type ?u.5019
H' : Type u_2
M' : Type ?u.5025
X : Type ?u.5028
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'
P : (H → H') → Set H → H → Prop
s✝ t u : Set H
x✝ : H
hG : LocalInvariantProp G G' P
s : Set H
x : H
f : H → H'
e' : LocalHomeomorph H' H'
he' : e' ∈ G'
hfs : ContinuousWithinAt f s x
hxe' : f x ∈ e'.source
h2f : f ⁻¹' e'.source ∈ 𝓝[s] x
h3f : ↑e' ∘ f ⁻¹' (LocalHomeomorph.symm e').toLocalEquiv.source ∈ 𝓝[s] x
h : P (↑e' ∘ f) (s ∩ ↑e' ∘ f ⁻¹' (LocalHomeomorph.symm e').toLocalEquiv.source) x
h2 : P (↑(LocalHomeomorph.symm e') ∘ ↑e' ∘ f) (s ∩ ↑e' ∘ f ⁻¹' (LocalHomeomorph.symm e').toLocalEquiv.source) x
⊢ P f s x

tactic: refine' hG.congr_nhdsWithin _ (e'.left_inv hxe') h2
state_before: case mp
H : Type u_1
M : Type ?u.5019
H' : Type u_2
M' : Type ?u.5025
X : Type ?u.5028
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'
P : (H → H') → Set H → H → Prop
s✝ t u : Set H
x✝ : H
hG : LocalInvariantProp G G' P
s : Set H
x : H
f : H → H'
e' : LocalHomeomorph H' H'
he' : e' ∈ G'
hfs : ContinuousWithinAt f s x
hxe' : f x ∈ e'.source
h2f : f ⁻¹' e'.source ∈ 𝓝[s] x
h3f : ↑e' ∘ f ⁻¹' (LocalHomeomorph.symm e').toLocalEquiv.source ∈ 𝓝[s] x
h : P (↑e' ∘ f) (s ∩ ↑e' ∘ f ⁻¹' (LocalHomeomorph.symm e').toLocalEquiv.source) x
h2 : P (↑(LocalHomeomorph.symm e') ∘ ↑e' ∘ f) s x
⊢ P f s x

tactic: exact eventually_of_mem h2f fun x' ↦ e'.left_inv
state_before: case mp
H : Type u_1
M : Type ?u.5019
H' : Type u_2
M' : Type ?u.5025
X : Type ?u.5028
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'
P : (H → H') → Set H → H → Prop
s✝ t u : Set H
x✝ : H
hG : LocalInvariantProp G G' P
s : Set H
x : H
f : H → H'
e' : LocalHomeomorph H' H'
he' : e' ∈ G'
hfs : ContinuousWithinAt f s x
hxe' : f x ∈ e'.source
h2f : f ⁻¹' e'.source ∈ 𝓝[s] x
h3f : ↑e' ∘ f ⁻¹' (LocalHomeomorph.symm e').toLocalEquiv.source ∈ 𝓝[s] x
h : P (↑e' ∘ f) (s ∩ ↑e' ∘ f ⁻¹' (LocalHomeomorph.symm e').toLocalEquiv.source) x
h2 : P (↑(LocalHomeomorph.symm e') ∘ ↑e' ∘ f) s x
⊢ ↑(LocalHomeomorph.symm e') ∘ ↑e' ∘ f =ᶠ[𝓝[s] x] f

tactic: simp_rw [hG.is_local_nhds h2f]
state_before: case mpr
H : Type u_1
M : Type ?u.5019
H' : Type u_2
M' : Type ?u.5025
X : Type ?u.5028
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'
P : (H → H') → Set H → H → Prop
s✝ t u : Set H
x✝ : H
hG : LocalInvariantProp G G' P
s : Set H
x : H
f : H → H'
e' : LocalHomeomorph H' H'
he' : e' ∈ G'
hfs : ContinuousWithinAt f s x
hxe' : f x ∈ e'.source
h2f : f ⁻¹' e'.source ∈ 𝓝[s] x
h3f : ↑e' ∘ f ⁻¹' (LocalHomeomorph.symm e').toLocalEquiv.source ∈ 𝓝[s] x
⊢ P f s x → P (↑e' ∘ f) s x

tactic: exact hG.left_invariance' he' (inter_subset_right _ _) hxe'
state_before: case mpr
H : Type u_1
M : Type ?u.5019
H' : Type u_2
M' : Type ?u.5025
X : Type ?u.5028
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'
P : (H → H') → Set H → H → Prop
s✝ t u : Set H
x✝ : H
hG : LocalInvariantProp G G' P
s : Set H
x : H
f : H → H'
e' : LocalHomeomorph H' H'
he' : e' ∈ G'
hfs : ContinuousWithinAt f s x
hxe' : f x ∈ e'.source
h2f : f ⁻¹' e'.source ∈ 𝓝[s] x
h3f : ↑e' ∘ f ⁻¹' (LocalHomeomorph.symm e').toLocalEquiv.source ∈ 𝓝[s] x
⊢ P f (s ∩ f ⁻¹' e'.source) x → P (↑e' ∘ f) (s ∩ f ⁻¹' e'.source) x