Theorem: StructureGroupoid.HasGroupoid.comp
File: Mathlib/Geometry/Manifold/LocalInvariantProperties.lean

tactic: rintro _ _ ⟨e, f, he, hf, rfl⟩ ⟨e', f', he', hf', rfl⟩
state_before: H✝ : Type ?u.72128
M : Type ?u.72131
H' : Type ?u.72134
M' : Type ?u.72137
X : Type ?u.72140
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
H₁ : Type u_2
inst✝⁷ : TopologicalSpace H₁
H₂ : Type u_1
inst✝⁶ : TopologicalSpace H₂
H₃ : Type u_3
inst✝⁵ : TopologicalSpace H₃
inst✝⁴ : ChartedSpace H₁ H₂
inst✝³ : ChartedSpace H₂ H₃
G₁ : StructureGroupoid H₁
inst✝² : HasGroupoid H₂ G₁
inst✝¹ : ClosedUnderRestriction G₁
G₂ : StructureGroupoid H₂
inst✝ : HasGroupoid H₃ G₂
H : ∀ (e : LocalHomeomorph H₂ H₂), e ∈ G₂ → LiftPropOn (IsLocalStructomorphWithinAt G₁) (↑e) e.source
x✝ : ChartedSpace H₁ H₃ := ChartedSpace.comp H₁ H₂ H₃
⊢ ∀ {e e' : LocalHomeomorph H₃ H₁}, e ∈ atlas H₁ H₃ → e' ∈ atlas H₁ H₃ → LocalHomeomorph.symm e ≫ₕ e' ∈ G₁

tactic: apply G₁.locality
state_before: case intro.intro.intro.intro.intro.intro.intro.intro
H✝ : Type ?u.72128
M : Type ?u.72131
H' : Type ?u.72134
M' : Type ?u.72137
X : Type ?u.72140
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
H₁ : Type u_2
inst✝⁷ : TopologicalSpace H₁
H₂ : Type u_1
inst✝⁶ : TopologicalSpace H₂
H₃ : Type u_3
inst✝⁵ : TopologicalSpace H₃
inst✝⁴ : ChartedSpace H₁ H₂
inst✝³ : ChartedSpace H₂ H₃
G₁ : StructureGroupoid H₁
inst✝² : HasGroupoid H₂ G₁
inst✝¹ : ClosedUnderRestriction G₁
G₂ : StructureGroupoid H₂
inst✝ : HasGroupoid H₃ G₂
H : ∀ (e : LocalHomeomorph H₂ H₂), e ∈ G₂ → LiftPropOn (IsLocalStructomorphWithinAt G₁) (↑e) e.source
x✝ : ChartedSpace H₁ H₃ := ChartedSpace.comp H₁ H₂ H₃
e : LocalHomeomorph H₃ H₂
f : LocalHomeomorph H₂ H₁
he : e ∈ atlas H₂ H₃
hf : f ∈ atlas H₁ H₂
e' : LocalHomeomorph H₃ H₂
f' : LocalHomeomorph H₂ H₁
he' : e' ∈ atlas H₂ H₃
hf' : f' ∈ atlas H₁ H₂
⊢ LocalHomeomorph.symm (e ≫ₕ f) ≫ₕ e' ≫ₕ f' ∈ G₁

tactic: intro x hx
state_before: case intro.intro.intro.intro.intro.intro.intro.intro
H✝ : Type ?u.72128
M : Type ?u.72131
H' : Type ?u.72134
M' : Type ?u.72137
X : Type ?u.72140
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
H₁ : Type u_2
inst✝⁷ : TopologicalSpace H₁
H₂ : Type u_1
inst✝⁶ : TopologicalSpace H₂
H₃ : Type u_3
inst✝⁵ : TopologicalSpace H₃
inst✝⁴ : ChartedSpace H₁ H₂
inst✝³ : ChartedSpace H₂ H₃
G₁ : StructureGroupoid H₁
inst✝² : HasGroupoid H₂ G₁
inst✝¹ : ClosedUnderRestriction G₁
G₂ : StructureGroupoid H₂
inst✝ : HasGroupoid H₃ G₂
H : ∀ (e : LocalHomeomorph H₂ H₂), e ∈ G₂ → LiftPropOn (IsLocalStructomorphWithinAt G₁) (↑e) e.source
x✝ : ChartedSpace H₁ H₃ := ChartedSpace.comp H₁ H₂ H₃
e : LocalHomeomorph H₃ H₂
f : LocalHomeomorph H₂ H₁
he : e ∈ atlas H₂ H₃
hf : f ∈ atlas H₁ H₂
e' : LocalHomeomorph H₃ H₂
f' : LocalHomeomorph H₂ H₁
he' : e' ∈ atlas H₂ H₃
hf' : f' ∈ atlas H₁ H₂
⊢ ∀ (x : H₁),
    x ∈ (LocalHomeomorph.symm (e ≫ₕ f) ≫ₕ e' ≫ₕ f').toLocalEquiv.source →
      ∃ s, IsOpen s ∧ x ∈ s ∧ LocalHomeomorph.restr (LocalHomeomorph.symm (e ≫ₕ f) ≫ₕ e' ≫ₕ f') s ∈ G₁

tactic: simp only [mfld_simps] at hx
state_before: case intro.intro.intro.intro.intro.intro.intro.intro
H✝ : Type ?u.72128
M : Type ?u.72131
H' : Type ?u.72134
M' : Type ?u.72137
X : Type ?u.72140
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
H₁ : Type u_2
inst✝⁷ : TopologicalSpace H₁
H₂ : Type u_1
inst✝⁶ : TopologicalSpace H₂
H₃ : Type u_3
inst✝⁵ : TopologicalSpace H₃
inst✝⁴ : ChartedSpace H₁ H₂
inst✝³ : ChartedSpace H₂ H₃
G₁ : StructureGroupoid H₁
inst✝² : HasGroupoid H₂ G₁
inst✝¹ : ClosedUnderRestriction G₁
G₂ : StructureGroupoid H₂
inst✝ : HasGroupoid H₃ G₂
H : ∀ (e : LocalHomeomorph H₂ H₂), e ∈ G₂ → LiftPropOn (IsLocalStructomorphWithinAt G₁) (↑e) e.source
x✝ : ChartedSpace H₁ H₃ := ChartedSpace.comp H₁ H₂ H₃
e : LocalHomeomorph H₃ H₂
f : LocalHomeomorph H₂ H₁
he : e ∈ atlas H₂ H₃
hf : f ∈ atlas H₁ H₂
e' : LocalHomeomorph H₃ H₂
f' : LocalHomeomorph H₂ H₁
he' : e' ∈ atlas H₂ H₃
hf' : f' ∈ atlas H₁ H₂
x : H₁
hx : x ∈ (LocalHomeomorph.symm (e ≫ₕ f) ≫ₕ e' ≫ₕ f').toLocalEquiv.source
⊢ ∃ s, IsOpen s ∧ x ∈ s ∧ LocalHomeomorph.restr (LocalHomeomorph.symm (e ≫ₕ f) ≫ₕ e' ≫ₕ f') s ∈ G₁

tactic: have hxs : x ∈ f.symm ⁻¹' (e.symm ≫ₕ e').source := by simp only [hx, mfld_simps]
state_before: case intro.intro.intro.intro.intro.intro.intro.intro
H✝ : Type ?u.72128
M : Type ?u.72131
H' : Type ?u.72134
M' : Type ?u.72137
X : Type ?u.72140
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
H₁ : Type u_2
inst✝⁷ : TopologicalSpace H₁
H₂ : Type u_1
inst✝⁶ : TopologicalSpace H₂
H₃ : Type u_3
inst✝⁵ : TopologicalSpace H₃
inst✝⁴ : ChartedSpace H₁ H₂
inst✝³ : ChartedSpace H₂ H₃
G₁ : StructureGroupoid H₁
inst✝² : HasGroupoid H₂ G₁
inst✝¹ : ClosedUnderRestriction G₁
G₂ : StructureGroupoid H₂
inst✝ : HasGroupoid H₃ G₂
H : ∀ (e : LocalHomeomorph H₂ H₂), e ∈ G₂ → LiftPropOn (IsLocalStructomorphWithinAt G₁) (↑e) e.source
x✝ : ChartedSpace H₁ H₃ := ChartedSpace.comp H₁ H₂ H₃
e : LocalHomeomorph H₃ H₂
f : LocalHomeomorph H₂ H₁
he : e ∈ atlas H₂ H₃
hf : f ∈ atlas H₁ H₂
e' : LocalHomeomorph H₃ H₂
f' : LocalHomeomorph H₂ H₁
he' : e' ∈ atlas H₂ H₃
hf' : f' ∈ atlas H₁ H₂
x : H₁
hx :
  (x ∈ f.target ∧ ↑(LocalHomeomorph.symm f) x ∈ e.target) ∧
    ↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x) ∈ e'.source ∧
      ↑e' (↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x)) ∈ f'.source
⊢ ∃ s, IsOpen s ∧ x ∈ s ∧ LocalHomeomorph.restr (LocalHomeomorph.symm (e ≫ₕ f) ≫ₕ e' ≫ₕ f') s ∈ G₁

tactic: have hxs' : x ∈ f.target ∩ f.symm ⁻¹' ((e.symm ≫ₕ e').source ∩ e.symm ≫ₕ e' ⁻¹' f'.source) :=
  by simp only [hx, mfld_simps]
state_before: case intro.intro.intro.intro.intro.intro.intro.intro
H✝ : Type ?u.72128
M : Type ?u.72131
H' : Type ?u.72134
M' : Type ?u.72137
X : Type ?u.72140
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
H₁ : Type u_2
inst✝⁷ : TopologicalSpace H₁
H₂ : Type u_1
inst✝⁶ : TopologicalSpace H₂
H₃ : Type u_3
inst✝⁵ : TopologicalSpace H₃
inst✝⁴ : ChartedSpace H₁ H₂
inst✝³ : ChartedSpace H₂ H₃
G₁ : StructureGroupoid H₁
inst✝² : HasGroupoid H₂ G₁
inst✝¹ : ClosedUnderRestriction G₁
G₂ : StructureGroupoid H₂
inst✝ : HasGroupoid H₃ G₂
H : ∀ (e : LocalHomeomorph H₂ H₂), e ∈ G₂ → LiftPropOn (IsLocalStructomorphWithinAt G₁) (↑e) e.source
x✝ : ChartedSpace H₁ H₃ := ChartedSpace.comp H₁ H₂ H₃
e : LocalHomeomorph H₃ H₂
f : LocalHomeomorph H₂ H₁
he : e ∈ atlas H₂ H₃
hf : f ∈ atlas H₁ H₂
e' : LocalHomeomorph H₃ H₂
f' : LocalHomeomorph H₂ H₁
he' : e' ∈ atlas H₂ H₃
hf' : f' ∈ atlas H₁ H₂
x : H₁
hx :
  (x ∈ f.target ∧ ↑(LocalHomeomorph.symm f) x ∈ e.target) ∧
    ↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x) ∈ e'.source ∧
      ↑e' (↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x)) ∈ f'.source
hxs : x ∈ ↑(LocalHomeomorph.symm f) ⁻¹' (LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source
⊢ ∃ s, IsOpen s ∧ x ∈ s ∧ LocalHomeomorph.restr (LocalHomeomorph.symm (e ≫ₕ f) ≫ₕ e' ≫ₕ f') s ∈ G₁

tactic: obtain ⟨φ, hφG₁, hφ, hφ_dom⟩ := LocalInvariantProp.liftPropOn_indep_chart
  (isLocalStructomorphWithinAt_localInvariantProp G₁) (G₁.subset_maximalAtlas hf)
  (G₁.subset_maximalAtlas hf') (H _ (G₂.compatible he he')) hxs' hxs
state_before: case intro.intro.intro.intro.intro.intro.intro.intro
H✝ : Type ?u.72128
M : Type ?u.72131
H' : Type ?u.72134
M' : Type ?u.72137
X : Type ?u.72140
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
H₁ : Type u_2
inst✝⁷ : TopologicalSpace H₁
H₂ : Type u_1
inst✝⁶ : TopologicalSpace H₂
H₃ : Type u_3
inst✝⁵ : TopologicalSpace H₃
inst✝⁴ : ChartedSpace H₁ H₂
inst✝³ : ChartedSpace H₂ H₃
G₁ : StructureGroupoid H₁
inst✝² : HasGroupoid H₂ G₁
inst✝¹ : ClosedUnderRestriction G₁
G₂ : StructureGroupoid H₂
inst✝ : HasGroupoid H₃ G₂
H : ∀ (e : LocalHomeomorph H₂ H₂), e ∈ G₂ → LiftPropOn (IsLocalStructomorphWithinAt G₁) (↑e) e.source
x✝ : ChartedSpace H₁ H₃ := ChartedSpace.comp H₁ H₂ H₃
e : LocalHomeomorph H₃ H₂
f : LocalHomeomorph H₂ H₁
he : e ∈ atlas H₂ H₃
hf : f ∈ atlas H₁ H₂
e' : LocalHomeomorph H₃ H₂
f' : LocalHomeomorph H₂ H₁
he' : e' ∈ atlas H₂ H₃
hf' : f' ∈ atlas H₁ H₂
x : H₁
hx :
  (x ∈ f.target ∧ ↑(LocalHomeomorph.symm f) x ∈ e.target) ∧
    ↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x) ∈ e'.source ∧
      ↑e' (↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x)) ∈ f'.source
hxs : x ∈ ↑(LocalHomeomorph.symm f) ⁻¹' (LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source
hxs' :
  x ∈
    f.target ∩
      ↑(LocalHomeomorph.symm f) ⁻¹'
        ((LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source ∩ ↑(LocalHomeomorph.symm e ≫ₕ e') ⁻¹' f'.source)
⊢ ∃ s, IsOpen s ∧ x ∈ s ∧ LocalHomeomorph.restr (LocalHomeomorph.symm (e ≫ₕ f) ≫ₕ e' ≫ₕ f') s ∈ G₁

tactic: simp_rw [← LocalHomeomorph.coe_trans, LocalHomeomorph.trans_assoc] at hφ
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
H✝ : Type ?u.72128
M : Type ?u.72131
H' : Type ?u.72134
M' : Type ?u.72137
X : Type ?u.72140
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
H₁ : Type u_2
inst✝⁷ : TopologicalSpace H₁
H₂ : Type u_1
inst✝⁶ : TopologicalSpace H₂
H₃ : Type u_3
inst✝⁵ : TopologicalSpace H₃
inst✝⁴ : ChartedSpace H₁ H₂
inst✝³ : ChartedSpace H₂ H₃
G₁ : StructureGroupoid H₁
inst✝² : HasGroupoid H₂ G₁
inst✝¹ : ClosedUnderRestriction G₁
G₂ : StructureGroupoid H₂
inst✝ : HasGroupoid H₃ G₂
H : ∀ (e : LocalHomeomorph H₂ H₂), e ∈ G₂ → LiftPropOn (IsLocalStructomorphWithinAt G₁) (↑e) e.source
x✝ : ChartedSpace H₁ H₃ := ChartedSpace.comp H₁ H₂ H₃
e : LocalHomeomorph H₃ H₂
f : LocalHomeomorph H₂ H₁
he : e ∈ atlas H₂ H₃
hf : f ∈ atlas H₁ H₂
e' : LocalHomeomorph H₃ H₂
f' : LocalHomeomorph H₂ H₁
he' : e' ∈ atlas H₂ H₃
hf' : f' ∈ atlas H₁ H₂
x : H₁
hx :
  (x ∈ f.target ∧ ↑(LocalHomeomorph.symm f) x ∈ e.target) ∧
    ↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x) ∈ e'.source ∧
      ↑e' (↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x)) ∈ f'.source
hxs : x ∈ ↑(LocalHomeomorph.symm f) ⁻¹' (LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source
hxs' :
  x ∈
    f.target ∩
      ↑(LocalHomeomorph.symm f) ⁻¹'
        ((LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source ∩ ↑(LocalHomeomorph.symm e ≫ₕ e') ⁻¹' f'.source)
φ : LocalHomeomorph H₁ H₁
hφG₁ : φ ∈ G₁
hφ :
  EqOn (↑f' ∘ ↑(LocalHomeomorph.symm e ≫ₕ e') ∘ ↑(LocalHomeomorph.symm f)) (↑φ.toLocalEquiv)
    (↑(LocalHomeomorph.symm f) ⁻¹' (LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source ∩ φ.source)
hφ_dom : x ∈ φ.source
⊢ ∃ s, IsOpen s ∧ x ∈ s ∧ LocalHomeomorph.restr (LocalHomeomorph.symm (e ≫ₕ f) ≫ₕ e' ≫ₕ f') s ∈ G₁

tactic: simp_rw [LocalHomeomorph.trans_symm_eq_symm_trans_symm, LocalHomeomorph.trans_assoc]
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
H✝ : Type ?u.72128
M : Type ?u.72131
H' : Type ?u.72134
M' : Type ?u.72137
X : Type ?u.72140
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
H₁ : Type u_2
inst✝⁷ : TopologicalSpace H₁
H₂ : Type u_1
inst✝⁶ : TopologicalSpace H₂
H₃ : Type u_3
inst✝⁵ : TopologicalSpace H₃
inst✝⁴ : ChartedSpace H₁ H₂
inst✝³ : ChartedSpace H₂ H₃
G₁ : StructureGroupoid H₁
inst✝² : HasGroupoid H₂ G₁
inst✝¹ : ClosedUnderRestriction G₁
G₂ : StructureGroupoid H₂
inst✝ : HasGroupoid H₃ G₂
H : ∀ (e : LocalHomeomorph H₂ H₂), e ∈ G₂ → LiftPropOn (IsLocalStructomorphWithinAt G₁) (↑e) e.source
x✝ : ChartedSpace H₁ H₃ := ChartedSpace.comp H₁ H₂ H₃
e : LocalHomeomorph H₃ H₂
f : LocalHomeomorph H₂ H₁
he : e ∈ atlas H₂ H₃
hf : f ∈ atlas H₁ H₂
e' : LocalHomeomorph H₃ H₂
f' : LocalHomeomorph H₂ H₁
he' : e' ∈ atlas H₂ H₃
hf' : f' ∈ atlas H₁ H₂
x : H₁
hx :
  (x ∈ f.target ∧ ↑(LocalHomeomorph.symm f) x ∈ e.target) ∧
    ↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x) ∈ e'.source ∧
      ↑e' (↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x)) ∈ f'.source
hxs : x ∈ ↑(LocalHomeomorph.symm f) ⁻¹' (LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source
hxs' :
  x ∈
    f.target ∩
      ↑(LocalHomeomorph.symm f) ⁻¹'
        ((LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source ∩ ↑(LocalHomeomorph.symm e ≫ₕ e') ⁻¹' f'.source)
φ : LocalHomeomorph H₁ H₁
hφG₁ : φ ∈ G₁
hφ_dom : x ∈ φ.source
hφ :
  EqOn (↑(LocalHomeomorph.symm f ≫ₕ LocalHomeomorph.symm e ≫ₕ e' ≫ₕ f')) (↑φ.toLocalEquiv)
    (↑(LocalHomeomorph.symm f) ⁻¹' (LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source ∩ φ.source)
⊢ ∃ s, IsOpen s ∧ x ∈ s ∧ LocalHomeomorph.restr (LocalHomeomorph.symm (e ≫ₕ f) ≫ₕ e' ≫ₕ f') s ∈ G₁

tactic: have hs : IsOpen (f.symm ≫ₕ e.symm ≫ₕ e' ≫ₕ f').source :=
  (f.symm ≫ₕ e.symm ≫ₕ e' ≫ₕ f').open_source
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
H✝ : Type ?u.72128
M : Type ?u.72131
H' : Type ?u.72134
M' : Type ?u.72137
X : Type ?u.72140
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
H₁ : Type u_2
inst✝⁷ : TopologicalSpace H₁
H₂ : Type u_1
inst✝⁶ : TopologicalSpace H₂
H₃ : Type u_3
inst✝⁵ : TopologicalSpace H₃
inst✝⁴ : ChartedSpace H₁ H₂
inst✝³ : ChartedSpace H₂ H₃
G₁ : StructureGroupoid H₁
inst✝² : HasGroupoid H₂ G₁
inst✝¹ : ClosedUnderRestriction G₁
G₂ : StructureGroupoid H₂
inst✝ : HasGroupoid H₃ G₂
H : ∀ (e : LocalHomeomorph H₂ H₂), e ∈ G₂ → LiftPropOn (IsLocalStructomorphWithinAt G₁) (↑e) e.source
x✝ : ChartedSpace H₁ H₃ := ChartedSpace.comp H₁ H₂ H₃
e : LocalHomeomorph H₃ H₂
f : LocalHomeomorph H₂ H₁
he : e ∈ atlas H₂ H₃
hf : f ∈ atlas H₁ H₂
e' : LocalHomeomorph H₃ H₂
f' : LocalHomeomorph H₂ H₁
he' : e' ∈ atlas H₂ H₃
hf' : f' ∈ atlas H₁ H₂
x : H₁
hx :
  (x ∈ f.target ∧ ↑(LocalHomeomorph.symm f) x ∈ e.target) ∧
    ↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x) ∈ e'.source ∧
      ↑e' (↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x)) ∈ f'.source
hxs : x ∈ ↑(LocalHomeomorph.symm f) ⁻¹' (LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source
hxs' :
  x ∈
    f.target ∩
      ↑(LocalHomeomorph.symm f) ⁻¹'
        ((LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source ∩ ↑(LocalHomeomorph.symm e ≫ₕ e') ⁻¹' f'.source)
φ : LocalHomeomorph H₁ H₁
hφG₁ : φ ∈ G₁
hφ_dom : x ∈ φ.source
hφ :
  EqOn (↑(LocalHomeomorph.symm f ≫ₕ LocalHomeomorph.symm e ≫ₕ e' ≫ₕ f')) (↑φ.toLocalEquiv)
    (↑(LocalHomeomorph.symm f) ⁻¹' (LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source ∩ φ.source)
⊢ ∃ s, IsOpen s ∧ x ∈ s ∧ LocalHomeomorph.restr (LocalHomeomorph.symm f ≫ₕ LocalHomeomorph.symm e ≫ₕ e' ≫ₕ f') s ∈ G₁

tactic: refine' ⟨_, hs.inter φ.open_source, _, _⟩
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
H✝ : Type ?u.72128
M : Type ?u.72131
H' : Type ?u.72134
M' : Type ?u.72137
X : Type ?u.72140
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
H₁ : Type u_2
inst✝⁷ : TopologicalSpace H₁
H₂ : Type u_1
inst✝⁶ : TopologicalSpace H₂
H₃ : Type u_3
inst✝⁵ : TopologicalSpace H₃
inst✝⁴ : ChartedSpace H₁ H₂
inst✝³ : ChartedSpace H₂ H₃
G₁ : StructureGroupoid H₁
inst✝² : HasGroupoid H₂ G₁
inst✝¹ : ClosedUnderRestriction G₁
G₂ : StructureGroupoid H₂
inst✝ : HasGroupoid H₃ G₂
H : ∀ (e : LocalHomeomorph H₂ H₂), e ∈ G₂ → LiftPropOn (IsLocalStructomorphWithinAt G₁) (↑e) e.source
x✝ : ChartedSpace H₁ H₃ := ChartedSpace.comp H₁ H₂ H₃
e : LocalHomeomorph H₃ H₂
f : LocalHomeomorph H₂ H₁
he : e ∈ atlas H₂ H₃
hf : f ∈ atlas H₁ H₂
e' : LocalHomeomorph H₃ H₂
f' : LocalHomeomorph H₂ H₁
he' : e' ∈ atlas H₂ H₃
hf' : f' ∈ atlas H₁ H₂
x : H₁
hx :
  (x ∈ f.target ∧ ↑(LocalHomeomorph.symm f) x ∈ e.target) ∧
    ↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x) ∈ e'.source ∧
      ↑e' (↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x)) ∈ f'.source
hxs : x ∈ ↑(LocalHomeomorph.symm f) ⁻¹' (LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source
hxs' :
  x ∈
    f.target ∩
      ↑(LocalHomeomorph.symm f) ⁻¹'
        ((LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source ∩ ↑(LocalHomeomorph.symm e ≫ₕ e') ⁻¹' f'.source)
φ : LocalHomeomorph H₁ H₁
hφG₁ : φ ∈ G₁
hφ_dom : x ∈ φ.source
hφ :
  EqOn (↑(LocalHomeomorph.symm f ≫ₕ LocalHomeomorph.symm e ≫ₕ e' ≫ₕ f')) (↑φ.toLocalEquiv)
    (↑(LocalHomeomorph.symm f) ⁻¹' (LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source ∩ φ.source)
hs : IsOpen (LocalHomeomorph.symm f ≫ₕ LocalHomeomorph.symm e ≫ₕ e' ≫ₕ f').toLocalEquiv.source
⊢ ∃ s, IsOpen s ∧ x ∈ s ∧ LocalHomeomorph.restr (LocalHomeomorph.symm f ≫ₕ LocalHomeomorph.symm e ≫ₕ e' ≫ₕ f') s ∈ G₁

tactic: simp only [hx, mfld_simps]
state_before: H✝ : Type ?u.72128
M : Type ?u.72131
H' : Type ?u.72134
M' : Type ?u.72137
X : Type ?u.72140
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
H₁ : Type u_2
inst✝⁷ : TopologicalSpace H₁
H₂ : Type u_1
inst✝⁶ : TopologicalSpace H₂
H₃ : Type u_3
inst✝⁵ : TopologicalSpace H₃
inst✝⁴ : ChartedSpace H₁ H₂
inst✝³ : ChartedSpace H₂ H₃
G₁ : StructureGroupoid H₁
inst✝² : HasGroupoid H₂ G₁
inst✝¹ : ClosedUnderRestriction G₁
G₂ : StructureGroupoid H₂
inst✝ : HasGroupoid H₃ G₂
H : ∀ (e : LocalHomeomorph H₂ H₂), e ∈ G₂ → LiftPropOn (IsLocalStructomorphWithinAt G₁) (↑e) e.source
x✝ : ChartedSpace H₁ H₃ := ChartedSpace.comp H₁ H₂ H₃
e : LocalHomeomorph H₃ H₂
f : LocalHomeomorph H₂ H₁
he : e ∈ atlas H₂ H₃
hf : f ∈ atlas H₁ H₂
e' : LocalHomeomorph H₃ H₂
f' : LocalHomeomorph H₂ H₁
he' : e' ∈ atlas H₂ H₃
hf' : f' ∈ atlas H₁ H₂
x : H₁
hx :
  (x ∈ f.target ∧ ↑(LocalHomeomorph.symm f) x ∈ e.target) ∧
    ↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x) ∈ e'.source ∧
      ↑e' (↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x)) ∈ f'.source
⊢ x ∈ ↑(LocalHomeomorph.symm f) ⁻¹' (LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source

tactic: simp only [hx, mfld_simps]
state_before: H✝ : Type ?u.72128
M : Type ?u.72131
H' : Type ?u.72134
M' : Type ?u.72137
X : Type ?u.72140
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
H₁ : Type u_2
inst✝⁷ : TopologicalSpace H₁
H₂ : Type u_1
inst✝⁶ : TopologicalSpace H₂
H₃ : Type u_3
inst✝⁵ : TopologicalSpace H₃
inst✝⁴ : ChartedSpace H₁ H₂
inst✝³ : ChartedSpace H₂ H₃
G₁ : StructureGroupoid H₁
inst✝² : HasGroupoid H₂ G₁
inst✝¹ : ClosedUnderRestriction G₁
G₂ : StructureGroupoid H₂
inst✝ : HasGroupoid H₃ G₂
H : ∀ (e : LocalHomeomorph H₂ H₂), e ∈ G₂ → LiftPropOn (IsLocalStructomorphWithinAt G₁) (↑e) e.source
x✝ : ChartedSpace H₁ H₃ := ChartedSpace.comp H₁ H₂ H₃
e : LocalHomeomorph H₃ H₂
f : LocalHomeomorph H₂ H₁
he : e ∈ atlas H₂ H₃
hf : f ∈ atlas H₁ H₂
e' : LocalHomeomorph H₃ H₂
f' : LocalHomeomorph H₂ H₁
he' : e' ∈ atlas H₂ H₃
hf' : f' ∈ atlas H₁ H₂
x : H₁
hx :
  (x ∈ f.target ∧ ↑(LocalHomeomorph.symm f) x ∈ e.target) ∧
    ↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x) ∈ e'.source ∧
      ↑e' (↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x)) ∈ f'.source
hxs : x ∈ ↑(LocalHomeomorph.symm f) ⁻¹' (LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source
⊢ x ∈
    f.target ∩
      ↑(LocalHomeomorph.symm f) ⁻¹'
        ((LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source ∩ ↑(LocalHomeomorph.symm e ≫ₕ e') ⁻¹' f'.source)

tactic: simp only [hx, hφ_dom, mfld_simps]
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
H✝ : Type ?u.72128
M : Type ?u.72131
H' : Type ?u.72134
M' : Type ?u.72137
X : Type ?u.72140
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
H₁ : Type u_2
inst✝⁷ : TopologicalSpace H₁
H₂ : Type u_1
inst✝⁶ : TopologicalSpace H₂
H₃ : Type u_3
inst✝⁵ : TopologicalSpace H₃
inst✝⁴ : ChartedSpace H₁ H₂
inst✝³ : ChartedSpace H₂ H₃
G₁ : StructureGroupoid H₁
inst✝² : HasGroupoid H₂ G₁
inst✝¹ : ClosedUnderRestriction G₁
G₂ : StructureGroupoid H₂
inst✝ : HasGroupoid H₃ G₂
H : ∀ (e : LocalHomeomorph H₂ H₂), e ∈ G₂ → LiftPropOn (IsLocalStructomorphWithinAt G₁) (↑e) e.source
x✝ : ChartedSpace H₁ H₃ := ChartedSpace.comp H₁ H₂ H₃
e : LocalHomeomorph H₃ H₂
f : LocalHomeomorph H₂ H₁
he : e ∈ atlas H₂ H₃
hf : f ∈ atlas H₁ H₂
e' : LocalHomeomorph H₃ H₂
f' : LocalHomeomorph H₂ H₁
he' : e' ∈ atlas H₂ H₃
hf' : f' ∈ atlas H₁ H₂
x : H₁
hx :
  (x ∈ f.target ∧ ↑(LocalHomeomorph.symm f) x ∈ e.target) ∧
    ↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x) ∈ e'.source ∧
      ↑e' (↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x)) ∈ f'.source
hxs : x ∈ ↑(LocalHomeomorph.symm f) ⁻¹' (LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source
hxs' :
  x ∈
    f.target ∩
      ↑(LocalHomeomorph.symm f) ⁻¹'
        ((LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source ∩ ↑(LocalHomeomorph.symm e ≫ₕ e') ⁻¹' f'.source)
φ : LocalHomeomorph H₁ H₁
hφG₁ : φ ∈ G₁
hφ_dom : x ∈ φ.source
hφ :
  EqOn (↑(LocalHomeomorph.symm f ≫ₕ LocalHomeomorph.symm e ≫ₕ e' ≫ₕ f')) (↑φ.toLocalEquiv)
    (↑(LocalHomeomorph.symm f) ⁻¹' (LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source ∩ φ.source)
hs : IsOpen (LocalHomeomorph.symm f ≫ₕ LocalHomeomorph.symm e ≫ₕ e' ≫ₕ f').toLocalEquiv.source
⊢ x ∈ (LocalHomeomorph.symm f ≫ₕ LocalHomeomorph.symm e ≫ₕ e' ≫ₕ f').toLocalEquiv.source ∩ φ.source

tactic: refine' G₁.eq_on_source (closedUnderRestriction' hφG₁ hs) _
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
H✝ : Type ?u.72128
M : Type ?u.72131
H' : Type ?u.72134
M' : Type ?u.72137
X : Type ?u.72140
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
H₁ : Type u_2
inst✝⁷ : TopologicalSpace H₁
H₂ : Type u_1
inst✝⁶ : TopologicalSpace H₂
H₃ : Type u_3
inst✝⁵ : TopologicalSpace H₃
inst✝⁴ : ChartedSpace H₁ H₂
inst✝³ : ChartedSpace H₂ H₃
G₁ : StructureGroupoid H₁
inst✝² : HasGroupoid H₂ G₁
inst✝¹ : ClosedUnderRestriction G₁
G₂ : StructureGroupoid H₂
inst✝ : HasGroupoid H₃ G₂
H : ∀ (e : LocalHomeomorph H₂ H₂), e ∈ G₂ → LiftPropOn (IsLocalStructomorphWithinAt G₁) (↑e) e.source
x✝ : ChartedSpace H₁ H₃ := ChartedSpace.comp H₁ H₂ H₃
e : LocalHomeomorph H₃ H₂
f : LocalHomeomorph H₂ H₁
he : e ∈ atlas H₂ H₃
hf : f ∈ atlas H₁ H₂
e' : LocalHomeomorph H₃ H₂
f' : LocalHomeomorph H₂ H₁
he' : e' ∈ atlas H₂ H₃
hf' : f' ∈ atlas H₁ H₂
x : H₁
hx :
  (x ∈ f.target ∧ ↑(LocalHomeomorph.symm f) x ∈ e.target) ∧
    ↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x) ∈ e'.source ∧
      ↑e' (↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x)) ∈ f'.source
hxs : x ∈ ↑(LocalHomeomorph.symm f) ⁻¹' (LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source
hxs' :
  x ∈
    f.target ∩
      ↑(LocalHomeomorph.symm f) ⁻¹'
        ((LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source ∩ ↑(LocalHomeomorph.symm e ≫ₕ e') ⁻¹' f'.source)
φ : LocalHomeomorph H₁ H₁
hφG₁ : φ ∈ G₁
hφ_dom : x ∈ φ.source
hφ :
  EqOn (↑(LocalHomeomorph.symm f ≫ₕ LocalHomeomorph.symm e ≫ₕ e' ≫ₕ f')) (↑φ.toLocalEquiv)
    (↑(LocalHomeomorph.symm f) ⁻¹' (LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source ∩ φ.source)
hs : IsOpen (LocalHomeomorph.symm f ≫ₕ LocalHomeomorph.symm e ≫ₕ e' ≫ₕ f').toLocalEquiv.source
⊢ LocalHomeomorph.restr (LocalHomeomorph.symm f ≫ₕ LocalHomeomorph.symm e ≫ₕ e' ≫ₕ f')
      ((LocalHomeomorph.symm f ≫ₕ LocalHomeomorph.symm e ≫ₕ e' ≫ₕ f').toLocalEquiv.source ∩ φ.source) ∈
    G₁

tactic: rw [LocalHomeomorph.restr_source_inter]
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
H✝ : Type ?u.72128
M : Type ?u.72131
H' : Type ?u.72134
M' : Type ?u.72137
X : Type ?u.72140
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
H₁ : Type u_2
inst✝⁷ : TopologicalSpace H₁
H₂ : Type u_1
inst✝⁶ : TopologicalSpace H₂
H₃ : Type u_3
inst✝⁵ : TopologicalSpace H₃
inst✝⁴ : ChartedSpace H₁ H₂
inst✝³ : ChartedSpace H₂ H₃
G₁ : StructureGroupoid H₁
inst✝² : HasGroupoid H₂ G₁
inst✝¹ : ClosedUnderRestriction G₁
G₂ : StructureGroupoid H₂
inst✝ : HasGroupoid H₃ G₂
H : ∀ (e : LocalHomeomorph H₂ H₂), e ∈ G₂ → LiftPropOn (IsLocalStructomorphWithinAt G₁) (↑e) e.source
x✝ : ChartedSpace H₁ H₃ := ChartedSpace.comp H₁ H₂ H₃
e : LocalHomeomorph H₃ H₂
f : LocalHomeomorph H₂ H₁
he : e ∈ atlas H₂ H₃
hf : f ∈ atlas H₁ H₂
e' : LocalHomeomorph H₃ H₂
f' : LocalHomeomorph H₂ H₁
he' : e' ∈ atlas H₂ H₃
hf' : f' ∈ atlas H₁ H₂
x : H₁
hx :
  (x ∈ f.target ∧ ↑(LocalHomeomorph.symm f) x ∈ e.target) ∧
    ↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x) ∈ e'.source ∧
      ↑e' (↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x)) ∈ f'.source
hxs : x ∈ ↑(LocalHomeomorph.symm f) ⁻¹' (LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source
hxs' :
  x ∈
    f.target ∩
      ↑(LocalHomeomorph.symm f) ⁻¹'
        ((LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source ∩ ↑(LocalHomeomorph.symm e ≫ₕ e') ⁻¹' f'.source)
φ : LocalHomeomorph H₁ H₁
hφG₁ : φ ∈ G₁
hφ_dom : x ∈ φ.source
hφ :
  EqOn (↑(LocalHomeomorph.symm f ≫ₕ LocalHomeomorph.symm e ≫ₕ e' ≫ₕ f')) (↑φ.toLocalEquiv)
    (↑(LocalHomeomorph.symm f) ⁻¹' (LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source ∩ φ.source)
hs : IsOpen (LocalHomeomorph.symm f ≫ₕ LocalHomeomorph.symm e ≫ₕ e' ≫ₕ f').toLocalEquiv.source
⊢ LocalHomeomorph.restr (LocalHomeomorph.symm f ≫ₕ LocalHomeomorph.symm e ≫ₕ e' ≫ₕ f')
      ((LocalHomeomorph.symm f ≫ₕ LocalHomeomorph.symm e ≫ₕ e' ≫ₕ f').toLocalEquiv.source ∩ φ.source) ≈
    LocalHomeomorph.restr φ (LocalHomeomorph.symm f ≫ₕ LocalHomeomorph.symm e ≫ₕ e' ≫ₕ f').toLocalEquiv.source

tactic: refine' LocalHomeomorph.Set.EqOn.restr_eqOn_source (hφ.mono _)
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
H✝ : Type ?u.72128
M : Type ?u.72131
H' : Type ?u.72134
M' : Type ?u.72137
X : Type ?u.72140
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
H₁ : Type u_2
inst✝⁷ : TopologicalSpace H₁
H₂ : Type u_1
inst✝⁶ : TopologicalSpace H₂
H₃ : Type u_3
inst✝⁵ : TopologicalSpace H₃
inst✝⁴ : ChartedSpace H₁ H₂
inst✝³ : ChartedSpace H₂ H₃
G₁ : StructureGroupoid H₁
inst✝² : HasGroupoid H₂ G₁
inst✝¹ : ClosedUnderRestriction G₁
G₂ : StructureGroupoid H₂
inst✝ : HasGroupoid H₃ G₂
H : ∀ (e : LocalHomeomorph H₂ H₂), e ∈ G₂ → LiftPropOn (IsLocalStructomorphWithinAt G₁) (↑e) e.source
x✝ : ChartedSpace H₁ H₃ := ChartedSpace.comp H₁ H₂ H₃
e : LocalHomeomorph H₃ H₂
f : LocalHomeomorph H₂ H₁
he : e ∈ atlas H₂ H₃
hf : f ∈ atlas H₁ H₂
e' : LocalHomeomorph H₃ H₂
f' : LocalHomeomorph H₂ H₁
he' : e' ∈ atlas H₂ H₃
hf' : f' ∈ atlas H₁ H₂
x : H₁
hx :
  (x ∈ f.target ∧ ↑(LocalHomeomorph.symm f) x ∈ e.target) ∧
    ↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x) ∈ e'.source ∧
      ↑e' (↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x)) ∈ f'.source
hxs : x ∈ ↑(LocalHomeomorph.symm f) ⁻¹' (LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source
hxs' :
  x ∈
    f.target ∩
      ↑(LocalHomeomorph.symm f) ⁻¹'
        ((LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source ∩ ↑(LocalHomeomorph.symm e ≫ₕ e') ⁻¹' f'.source)
φ : LocalHomeomorph H₁ H₁
hφG₁ : φ ∈ G₁
hφ_dom : x ∈ φ.source
hφ :
  EqOn (↑(LocalHomeomorph.symm f ≫ₕ LocalHomeomorph.symm e ≫ₕ e' ≫ₕ f')) (↑φ.toLocalEquiv)
    (↑(LocalHomeomorph.symm f) ⁻¹' (LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source ∩ φ.source)
hs : IsOpen (LocalHomeomorph.symm f ≫ₕ LocalHomeomorph.symm e ≫ₕ e' ≫ₕ f').toLocalEquiv.source
⊢ LocalHomeomorph.restr (LocalHomeomorph.symm f ≫ₕ LocalHomeomorph.symm e ≫ₕ e' ≫ₕ f') φ.source ≈
    LocalHomeomorph.restr φ (LocalHomeomorph.symm f ≫ₕ LocalHomeomorph.symm e ≫ₕ e' ≫ₕ f').toLocalEquiv.source

tactic: mfld_set_tac
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
H✝ : Type ?u.72128
M : Type ?u.72131
H' : Type ?u.72134
M' : Type ?u.72137
X : Type ?u.72140
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
H₁ : Type u_2
inst✝⁷ : TopologicalSpace H₁
H₂ : Type u_1
inst✝⁶ : TopologicalSpace H₂
H₃ : Type u_3
inst✝⁵ : TopologicalSpace H₃
inst✝⁴ : ChartedSpace H₁ H₂
inst✝³ : ChartedSpace H₂ H₃
G₁ : StructureGroupoid H₁
inst✝² : HasGroupoid H₂ G₁
inst✝¹ : ClosedUnderRestriction G₁
G₂ : StructureGroupoid H₂
inst✝ : HasGroupoid H₃ G₂
H : ∀ (e : LocalHomeomorph H₂ H₂), e ∈ G₂ → LiftPropOn (IsLocalStructomorphWithinAt G₁) (↑e) e.source
x✝ : ChartedSpace H₁ H₃ := ChartedSpace.comp H₁ H₂ H₃
e : LocalHomeomorph H₃ H₂
f : LocalHomeomorph H₂ H₁
he : e ∈ atlas H₂ H₃
hf : f ∈ atlas H₁ H₂
e' : LocalHomeomorph H₃ H₂
f' : LocalHomeomorph H₂ H₁
he' : e' ∈ atlas H₂ H₃
hf' : f' ∈ atlas H₁ H₂
x : H₁
hx :
  (x ∈ f.target ∧ ↑(LocalHomeomorph.symm f) x ∈ e.target) ∧
    ↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x) ∈ e'.source ∧
      ↑e' (↑(LocalHomeomorph.symm e) (↑(LocalHomeomorph.symm f) x)) ∈ f'.source
hxs : x ∈ ↑(LocalHomeomorph.symm f) ⁻¹' (LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source
hxs' :
  x ∈
    f.target ∩
      ↑(LocalHomeomorph.symm f) ⁻¹'
        ((LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source ∩ ↑(LocalHomeomorph.symm e ≫ₕ e') ⁻¹' f'.source)
φ : LocalHomeomorph H₁ H₁
hφG₁ : φ ∈ G₁
hφ_dom : x ∈ φ.source
hφ :
  EqOn (↑(LocalHomeomorph.symm f ≫ₕ LocalHomeomorph.symm e ≫ₕ e' ≫ₕ f')) (↑φ.toLocalEquiv)
    (↑(LocalHomeomorph.symm f) ⁻¹' (LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source ∩ φ.source)
hs : IsOpen (LocalHomeomorph.symm f ≫ₕ LocalHomeomorph.symm e ≫ₕ e' ≫ₕ f').toLocalEquiv.source
⊢ (LocalHomeomorph.symm f ≫ₕ LocalHomeomorph.symm e ≫ₕ e' ≫ₕ f').toLocalEquiv.source ∩ φ.source ⊆
    ↑(LocalHomeomorph.symm f) ⁻¹' (LocalHomeomorph.symm e ≫ₕ e').toLocalEquiv.source ∩ φ.source