-- Mathlib/Geometry/Manifold/LocalInvariantProperties.lean
theorem liftPropWithinAt_indep_chart_target_aux2 (g : H → M') {x : H} {s : Set H}
    (hf : f ∈ G'.maximalAtlas M') (xf : g x ∈ f.source) (hf' : f' ∈ G'.maximalAtlas M')
    (xf' : g x ∈ f'.source) (hgs : ContinuousWithinAt g s x) : P (f ∘ g) s x ↔ P (f' ∘ g) s x

Proof state:
H : Type u_1
H' : Type u_3
M' : Type u_4
inst✝³ : TopologicalSpace H
inst✝² : TopologicalSpace H'
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H' M'
G : StructureGroupoid H
G' : StructureGroupoid H'
f f' : PartialHomeomorph M' H'
P : (H → H') → Set H → H → Prop
hG : G.LocalInvariantProp G' P
g : H → M'
x : H
s : Set H
hf : f ∈ maximalAtlas M' G'
xf : g x ∈ f.source
hf' : f' ∈ maximalAtlas M' G'
xf' : g x ∈ f'.source
hgs : ContinuousWithinAt g s x
hcont : ContinuousWithinAt (↑f ∘ g) s x
⊢ ↑(f.symm ≫ₕ f') ∘ ↑f ∘ g =ᶠ[𝓝[s] x] ↑f' ∘ g

Tactic:
exact (hgs.eventually <| f.eventually_left_inverse xf).mono fun y ↦ congr_arg f'

Result:
no goals

Proof state:
H : Type u_1
H' : Type u_3
M' : Type u_4
inst✝³ : TopologicalSpace H
inst✝² : TopologicalSpace H'
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H' M'
G : StructureGroupoid H
G' : StructureGroupoid H'
f f' : PartialHomeomorph M' H'
P : (H → H') → Set H → H → Prop
hG : G.LocalInvariantProp G' P
g : H → M'
x : H
s : Set H
hf : f ∈ maximalAtlas M' G'
xf : g x ∈ f.source
hf' : f' ∈ maximalAtlas M' G'
xf' : g x ∈ f'.source
hgs : ContinuousWithinAt g s x
hcont : ContinuousWithinAt (↑f ∘ g) s x
⊢ P (↑(f.symm ≫ₕ f') ∘ ↑f ∘ g) s x ↔ P (↑f' ∘ g) s x

Tactic:
refine hG.congr_iff_nhdsWithin ?_ (by simp only [xf, mfld_simps])

Result:
H : Type u_1
H' : Type u_3
M' : Type u_4
inst✝³ : TopologicalSpace H
inst✝² : TopologicalSpace H'
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H' M'
G : StructureGroupoid H
G' : StructureGroupoid H'
f f' : PartialHomeomorph M' H'
P : (H → H') → Set H → H → Prop
hG : G.LocalInvariantProp G' P
g : H → M'
x : H
s : Set H
hf : f ∈ maximalAtlas M' G'
xf : g x ∈ f.source
hf' : f' ∈ maximalAtlas M' G'
xf' : g x ∈ f'.source
hgs : ContinuousWithinAt g s x
hcont : ContinuousWithinAt (↑f ∘ g) s x
⊢ ↑(f.symm ≫ₕ f') ∘ ↑f ∘ g =ᶠ[𝓝[s] x] ↑f' ∘ g

Proof state:
H : Type u_1
H' : Type u_3
M' : Type u_4
inst✝³ : TopologicalSpace H
inst✝² : TopologicalSpace H'
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H' M'
G : StructureGroupoid H
G' : StructureGroupoid H'
f f' : PartialHomeomorph M' H'
P : (H → H') → Set H → H → Prop
hG : G.LocalInvariantProp G' P
g : H → M'
x : H
s : Set H
hf : f ∈ maximalAtlas M' G'
xf : g x ∈ f.source
hf' : f' ∈ maximalAtlas M' G'
xf' : g x ∈ f'.source
hgs : ContinuousWithinAt g s x
hcont : ContinuousWithinAt (↑f ∘ g) s x
⊢ (↑(f.symm ≫ₕ f') ∘ ↑f ∘ g) x = (↑f' ∘ g) x

Tactic:
simp only [xf, mfld_simps]

Result:
no goals

Proof state:
H : Type u_1
H' : Type u_3
M' : Type u_4
inst✝³ : TopologicalSpace H
inst✝² : TopologicalSpace H'
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H' M'
G : StructureGroupoid H
G' : StructureGroupoid H'
f f' : PartialHomeomorph M' H'
P : (H → H') → Set H → H → Prop
hG : G.LocalInvariantProp G' P
g : H → M'
x : H
s : Set H
hf : f ∈ maximalAtlas M' G'
xf : g x ∈ f.source
hf' : f' ∈ maximalAtlas M' G'
xf' : g x ∈ f'.source
hgs : ContinuousWithinAt g s x
hcont : ContinuousWithinAt (↑f ∘ g) s x
⊢ P (↑f ∘ g) s x ↔ P (↑f' ∘ g) s x

Tactic:
rw [← hG.left_invariance (compatible_of_mem_maximalAtlas hf hf') hcont
    (by simp only [xf, xf', mfld_simps])]

Result:
H : Type u_1
H' : Type u_3
M' : Type u_4
inst✝³ : TopologicalSpace H
inst✝² : TopologicalSpace H'
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H' M'
G : StructureGroupoid H
G' : StructureGroupoid H'
f f' : PartialHomeomorph M' H'
P : (H → H') → Set H → H → Prop
hG : G.LocalInvariantProp G' P
g : H → M'
x : H
s : Set H
hf : f ∈ maximalAtlas M' G'
xf : g x ∈ f.source
hf' : f' ∈ maximalAtlas M' G'
xf' : g x ∈ f'.source
hgs : ContinuousWithinAt g s x
hcont : ContinuousWithinAt (↑f ∘ g) s x
⊢ P (↑(f.symm ≫ₕ f') ∘ ↑f ∘ g) s x ↔ P (↑f' ∘ g) s x

Proof state:
H : Type u_1
H' : Type u_3
M' : Type u_4
inst✝³ : TopologicalSpace H
inst✝² : TopologicalSpace H'
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H' M'
G : StructureGroupoid H
G' : StructureGroupoid H'
f f' : PartialHomeomorph M' H'
P : (H → H') → Set H → H → Prop
hG : G.LocalInvariantProp G' P
g : H → M'
x : H
s : Set H
hf : f ∈ maximalAtlas M' G'
xf : g x ∈ f.source
hf' : f' ∈ maximalAtlas M' G'
xf' : g x ∈ f'.source
hgs : ContinuousWithinAt g s x
⊢ P (↑f ∘ g) s x ↔ P (↑f' ∘ g) s x

Tactic:
have hcont : ContinuousWithinAt (f ∘ g) s x := (f.continuousAt xf).comp_continuousWithinAt hgs

Result:
H : Type u_1
H' : Type u_3
M' : Type u_4
inst✝³ : TopologicalSpace H
inst✝² : TopologicalSpace H'
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H' M'
G : StructureGroupoid H
G' : StructureGroupoid H'
f f' : PartialHomeomorph M' H'
P : (H → H') → Set H → H → Prop
hG : G.LocalInvariantProp G' P
g : H → M'
x : H
s : Set H
hf : f ∈ maximalAtlas M' G'
xf : g x ∈ f.source
hf' : f' ∈ maximalAtlas M' G'
xf' : g x ∈ f'.source
hgs : ContinuousWithinAt g s x
hcont : ContinuousWithinAt (↑f ∘ g) s x
⊢ P (↑f ∘ g) s x ↔ P (↑f' ∘ g) s x

Proof state:
H : Type u_1
H' : Type u_3
M' : Type u_4
inst✝³ : TopologicalSpace H
inst✝² : TopologicalSpace H'
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H' M'
G : StructureGroupoid H
G' : StructureGroupoid H'
f f' : PartialHomeomorph M' H'
P : (H → H') → Set H → H → Prop
hG : G.LocalInvariantProp G' P
g : H → M'
x : H
s : Set H
hf : f ∈ maximalAtlas M' G'
xf : g x ∈ f.source
hf' : f' ∈ maximalAtlas M' G'
xf' : g x ∈ f'.source
hgs : ContinuousWithinAt g s x
hcont : ContinuousWithinAt (↑f ∘ g) s x
⊢ (↑f ∘ g) x ∈ (f.symm ≫ₕ f').source

Tactic:
simp only [xf, xf', mfld_simps]

Result:
no goals