geometry.manifold.local_invariant_properties
⟷
Mathlib.Geometry.Manifold.LocalInvariantProperties
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
local_invariant_prop
(#19146)
Define structure_groupoid.local_invariant_prop.sheaf
, the sheaf-of-types of functions f : M → M'
(for charted spaces M
, M'
) satisfying some local property in the sense of structure_groupoid.local_invariant_prop
(for example continuity, differentiability, smoothness).
@@ -48,7 +48,7 @@ in the one for `lift_prop_within_at`.
noncomputable theory
open_locale classical manifold topology
-open set filter
+open set filter topological_space
variables {H M H' M' X : Type*}
variables [topological_space H] [topological_space M] [charted_space H M]
@@ -569,6 +569,28 @@ begin
exact λ x, hG.congr' ((chart_at H x).eventually_right_inverse $ mem_chart_target H x) (hQ _)
end
+lemma lift_prop_at_iff_comp_inclusion (hG : local_invariant_prop G G' P) {U V : opens M}
+ (hUV : U ≤ V) (f : V → M') (x : U) :
+ lift_prop_at P f (set.inclusion hUV x) ↔ lift_prop_at P (f ∘ set.inclusion hUV : U → M') x :=
+begin
+ congrm _ ∧ _,
+ { simp [continuous_within_at_univ,
+ (topological_space.opens.open_embedding_of_le hUV).continuous_at_iff] },
+ { apply hG.congr_iff,
+ exact (topological_space.opens.chart_at_inclusion_symm_eventually_eq hUV).fun_comp
+ (chart_at H' (f (set.inclusion hUV x)) ∘ f) },
+end
+
+lemma lift_prop_inclusion {Q : (H → H) → (set H) → H → Prop} (hG : local_invariant_prop G G Q)
+ (hQ : ∀ y, Q id univ y) {U V : opens M} (hUV : U ≤ V) :
+ lift_prop Q (set.inclusion hUV : U → V) :=
+begin
+ intro x,
+ show lift_prop_at Q (id ∘ inclusion hUV) x,
+ rw ← hG.lift_prop_at_iff_comp_inclusion hUV,
+ apply hG.lift_prop_id hQ,
+end
+
end local_invariant_prop
section local_structomorph
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(first ported)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -93,7 +93,7 @@ namespace LocalInvariantProp
theorem congr_set {s t : Set H} {x : H} {f : H → H'} (hu : s =ᶠ[𝓝 x] t) : P f s x ↔ P f t x :=
by
obtain ⟨o, host, ho, hxo⟩ := mem_nhds_iff.mp hu.mem_iff
- simp_rw [subset_def, mem_set_of, ← and_congr_left_iff, ← mem_inter_iff, ← Set.ext_iff] at host
+ simp_rw [subset_def, mem_set_of, ← and_congr_left_iff, ← mem_inter_iff, ← Set.ext_iff] at host
rw [hG.is_local ho hxo, host, ← hG.is_local ho hxo]
#align structure_groupoid.local_invariant_prop.congr_set StructureGroupoid.LocalInvariantProp.congr_set
-/
@@ -158,9 +158,9 @@ theorem left_invariance {s : Set H} {x : H} {f : H → H'} {e' : PartialHomeomor
e'.symm.open_source.mem_nhds <| e'.maps_to hxe'
constructor
· intro h
- rw [hG.is_local_nhds h3f] at h
+ rw [hG.is_local_nhds h3f] at h
have h2 := hG.left_invariance' (G'.symm he') (inter_subset_right _ _) (e'.maps_to hxe') h
- rw [← hG.is_local_nhds h3f] at h2
+ rw [← hG.is_local_nhds h3f] at h2
refine' hG.congr_nhds_within _ (e'.left_inv hxe') h2
exact eventually_of_mem h2f fun x' => e'.left_inv
· simp_rw [hG.is_local_nhds h2f]
@@ -174,7 +174,7 @@ theorem right_invariance {s : Set H} {x : H} {f : H → H'} {e : PartialHomeomor
by
refine' ⟨fun h => _, hG.right_invariance' he hxe⟩
have := hG.right_invariance' (G.symm he) (e.maps_to hxe) h
- rw [e.symm_symm, e.left_inv hxe] at this
+ rw [e.symm_symm, e.left_inv hxe] at this
refine' hG.congr _ ((hG.congr_set _).mp this)
· refine' eventually_of_mem (e.open_source.mem_nhds hxe) fun x' hx' => _
simp_rw [Function.comp_apply, e.left_inv hx']
@@ -353,7 +353,7 @@ theorem liftPropWithinAt_indep_chart_target_aux {g : X → M'} {e : PartialHomeo
(hf' : f' ∈ G'.maximalAtlas M') (xf' : g x ∈ f'.source) (hgs : ContinuousWithinAt g s x) :
P (f ∘ g ∘ e.symm) (e.symm ⁻¹' s) (e x) ↔ P (f' ∘ g ∘ e.symm) (e.symm ⁻¹' s) (e x) :=
by
- rw [← e.left_inv xe] at xf xf' hgs
+ rw [← e.left_inv xe] at xf xf' hgs
refine' hG.lift_prop_within_at_indep_chart_target_aux2 (g ∘ e.symm) hf xf hf' xf' _
exact hgs.comp (e.symm.continuous_at <| e.maps_to xe).ContinuousWithinAt subset.rfl
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target_aux StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target_aux
@@ -394,7 +394,7 @@ theorem liftPropWithinAt_indep_chart_source [HasGroupoid M G] (he : e ∈ G.maxi
LiftPropWithinAt P g s x ↔ LiftPropWithinAt P (g ∘ e.symm) (e.symm ⁻¹' s) (e x) :=
by
have := e.symm.continuous_within_at_iff_continuous_within_at_comp_right xe
- rw [e.symm_symm] at this
+ rw [e.symm_symm] at this
rw [lift_prop_within_at_self_source, lift_prop_within_at, ← this]
simp_rw [Function.comp_apply, e.left_inv xe]
refine' and_congr Iff.rfl _
@@ -467,7 +467,7 @@ theorem liftPropWithinAt_inter (ht : t ∈ 𝓝 x) :
#print StructureGroupoid.LocalInvariantProp.liftPropAt_of_liftPropWithinAt /-
theorem liftPropAt_of_liftPropWithinAt (h : LiftPropWithinAt P g s x) (hs : s ∈ 𝓝 x) :
- LiftPropAt P g x := by rwa [← univ_inter s, hG.lift_prop_within_at_inter hs] at h
+ LiftPropAt P g x := by rwa [← univ_inter s, hG.lift_prop_within_at_inter hs] at h
#align structure_groupoid.local_invariant_prop.lift_prop_at_of_lift_prop_within_at StructureGroupoid.LocalInvariantProp.liftPropAt_of_liftPropWithinAt
-/
@@ -484,7 +484,7 @@ theorem liftPropOn_of_locally_liftPropOn
intro x hx
rcases h x hx with ⟨u, u_open, xu, hu⟩
have := hu x ⟨hx, xu⟩
- rwa [hG.lift_prop_within_at_inter] at this
+ rwa [hG.lift_prop_within_at_inter] at this
exact IsOpen.mem_nhds u_open xu
#align structure_groupoid.local_invariant_prop.lift_prop_on_of_locally_lift_prop_on StructureGroupoid.LocalInvariantProp.liftPropOn_of_locally_liftPropOn
-/
@@ -578,7 +578,7 @@ theorem liftPropWithinAt_mono (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆
by
refine' ⟨h.1.mono hts, _⟩
apply mono (fun y hy => _) h.2
- simp only [mfld_simps] at hy
+ simp only [mfld_simps] at hy
simp only [hy, hts _, mfld_simps]
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_mono StructureGroupoid.LocalInvariantProp.liftPropWithinAt_mono
-/
@@ -587,7 +587,7 @@ theorem liftPropWithinAt_mono (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆
theorem liftPropWithinAt_of_liftPropAt (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆ s → P f s x → P f t x)
(h : LiftPropAt P g x) : LiftPropWithinAt P g s x :=
by
- rw [← lift_prop_within_at_univ] at h
+ rw [← lift_prop_within_at_univ] at h
exact lift_prop_within_at_mono mono h (subset_univ _)
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_of_lift_prop_at StructureGroupoid.LocalInvariantProp.liftPropWithinAt_of_liftPropAt
-/
@@ -603,7 +603,7 @@ theorem liftPropOn_mono (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆ s →
theorem liftPropOn_of_liftProp (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆ s → P f s x → P f t x)
(h : LiftProp P g) : LiftPropOn P g s :=
by
- rw [← lift_prop_on_univ] at h
+ rw [← lift_prop_on_univ] at h
exact lift_prop_on_mono mono h (subset_univ _)
#align structure_groupoid.local_invariant_prop.lift_prop_on_of_lift_prop StructureGroupoid.LocalInvariantProp.liftPropOn_of_liftProp
-/
@@ -781,7 +781,7 @@ theorem isLocalStructomorphWithinAt_localInvariantProp [ClosedUnderRestriction G
rcases h hxs with ⟨e, heG, hef, hex⟩
refine' ⟨e'.symm.trans e, G.trans (G.symm he'G) heG, _, _⟩
· intro y hy
- simp only [mfld_simps] at hy
+ simp only [mfld_simps] at hy
simp only [hef ⟨hy.1, hy.2.2⟩, mfld_simps]
· simp only [hex, he'x, mfld_simps]
congr_of_forall := by
@@ -795,7 +795,7 @@ theorem isLocalStructomorphWithinAt_localInvariantProp [ClosedUnderRestriction G
rcases h hx with ⟨e, heG, hef, hex⟩
refine' ⟨e.trans e', G.trans heG he'G, _, _⟩
· intro y hy
- simp only [mfld_simps] at hy
+ simp only [mfld_simps] at hy
simp only [hef ⟨hy.1, hy.2.1⟩, mfld_simps]
· simpa only [hex, hef ⟨hx, hex⟩, mfld_simps] using hfx }
#align structure_groupoid.is_local_structomorph_within_at_local_invariant_prop StructureGroupoid.isLocalStructomorphWithinAt_localInvariantProp
@@ -871,7 +871,7 @@ theorem HasGroupoid.comp
rintro _ _ ⟨e, f, he, hf, rfl⟩ ⟨e', f', he', hf', rfl⟩
apply G₁.locality
intro x hx
- simp only [mfld_simps] at hx
+ simp only [mfld_simps] at hx
have hxs : x ∈ f.symm ⁻¹' (e.symm ≫ₕ e').source := by simp only [hx, mfld_simps]
have hxs' : x ∈ f.target ∩ f.symm ⁻¹' ((e.symm ≫ₕ e').source ∩ e.symm ≫ₕ e' ⁻¹' f'.source) :=
by simp only [hx, mfld_simps]
@@ -879,7 +879,7 @@ theorem HasGroupoid.comp
local_invariant_prop.lift_prop_on_indep_chart
(is_local_structomorph_within_at_local_invariant_prop G₁) (G₁.subset_maximal_atlas hf)
(G₁.subset_maximal_atlas hf') (H _ (G₂.compatible he he')) hxs' hxs
- simp_rw [← PartialHomeomorph.coe_trans, PartialHomeomorph.trans_assoc] at hφ
+ simp_rw [← PartialHomeomorph.coe_trans, PartialHomeomorph.trans_assoc] at hφ
simp_rw [PartialHomeomorph.trans_symm_eq_symm_trans_symm, PartialHomeomorph.trans_assoc]
have hs : IsOpen (f.symm ≫ₕ e.symm ≫ₕ e' ≫ₕ f').source :=
(f.symm ≫ₕ e.symm ≫ₕ e' ≫ₕ f').open_source
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -74,11 +74,11 @@ to charted spaces admitting these groupoids will inherit the good behavior. -/
structure LocalInvariantProp (P : (H → H') → Set H → H → Prop) : Prop where
is_local : ∀ {s x u} {f : H → H'}, IsOpen u → x ∈ u → (P f s x ↔ P f (s ∩ u) x)
right_invariance' :
- ∀ {s x f} {e : LocalHomeomorph H H},
+ ∀ {s x f} {e : PartialHomeomorph H H},
e ∈ G → x ∈ e.source → P f s x → P (f ∘ e.symm) (e.symm ⁻¹' s) (e x)
congr_of_forall : ∀ {s x} {f g : H → H'}, (∀ y ∈ s, f y = g y) → f x = g x → P f s x → P g s x
left_invariance' :
- ∀ {s x f} {e' : LocalHomeomorph H' H'},
+ ∀ {s x f} {e' : PartialHomeomorph H' H'},
e' ∈ G' → s ⊆ f ⁻¹' e'.source → f x ∈ e'.source → P f s x → P (e' ∘ f) s x
#align structure_groupoid.local_invariant_prop StructureGroupoid.LocalInvariantProp
-/
@@ -148,7 +148,7 @@ theorem congr' {s : Set H} {x : H} {f g : H → H'} (h : f =ᶠ[𝓝 x] g) (hP :
-/
#print StructureGroupoid.LocalInvariantProp.left_invariance /-
-theorem left_invariance {s : Set H} {x : H} {f : H → H'} {e' : LocalHomeomorph H' H'}
+theorem left_invariance {s : Set H} {x : H} {f : H → H'} {e' : PartialHomeomorph H' H'}
(he' : e' ∈ G') (hfs : ContinuousWithinAt f s x) (hxe' : f x ∈ e'.source) :
P (e' ∘ f) s x ↔ P f s x :=
by
@@ -169,7 +169,7 @@ theorem left_invariance {s : Set H} {x : H} {f : H → H'} {e' : LocalHomeomorph
-/
#print StructureGroupoid.LocalInvariantProp.right_invariance /-
-theorem right_invariance {s : Set H} {x : H} {f : H → H'} {e : LocalHomeomorph H H} (he : e ∈ G)
+theorem right_invariance {s : Set H} {x : H} {f : H → H'} {e : PartialHomeomorph H H} (he : e ∈ G)
(hxe : x ∈ e.source) : P (f ∘ e.symm) (e.symm ⁻¹' s) (e x) ↔ P f s x :=
by
refine' ⟨fun h => _, hG.right_invariance' he hxe⟩
@@ -252,8 +252,8 @@ open ChartedSpace
namespace StructureGroupoid
-variable {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}
+variable {G : StructureGroupoid H} {G' : StructureGroupoid H'} {e e' : PartialHomeomorph M H}
+ {f f' : PartialHomeomorph 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}
#print StructureGroupoid.liftPropWithinAt_univ /-
@@ -307,7 +307,7 @@ theorem liftPropWithinAt_iff {f : M → M'} :
by
refine' and_congr_right fun hf => hG.congr_set _
exact
- LocalHomeomorph.preimage_eventuallyEq_target_inter_preimage_inter hf (mem_chart_source H x)
+ PartialHomeomorph.preimage_eventuallyEq_target_inter_preimage_inter hf (mem_chart_source H x)
(chart_source_mem_nhds H' (f x))
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_iff StructureGroupoid.LocalInvariantProp.liftPropWithinAt_iff
-/
@@ -319,13 +319,13 @@ theorem liftPropWithinAt_indep_chart_source_aux (g : M → H') (he : e ∈ G.max
by
rw [← hG.right_invariance (compatible_of_mem_maximal_atlas he he')]
swap; · simp only [xe, xe', mfld_simps]
- simp_rw [LocalHomeomorph.trans_apply, e.left_inv xe]
+ simp_rw [PartialHomeomorph.trans_apply, e.left_inv xe]
rw [hG.congr_iff]
· refine' hG.congr_set _
refine' (eventually_of_mem _ fun y (hy : y ∈ e'.symm ⁻¹' e.source) => _).set_eq
· refine' (e'.symm.continuous_at <| e'.maps_to xe').preimage_mem_nhds (e.open_source.mem_nhds _)
simp_rw [e'.left_inv xe', xe]
- simp_rw [mem_preimage, LocalHomeomorph.coe_trans_symm, LocalHomeomorph.symm_symm,
+ simp_rw [mem_preimage, PartialHomeomorph.coe_trans_symm, PartialHomeomorph.symm_symm,
Function.comp_apply, e.left_inv hy]
· refine' ((e'.eventually_nhds' _ xe').mpr <| e.eventually_left_inverse xe).mono fun y hy => _
simp only [mfld_simps]
@@ -348,7 +348,7 @@ theorem liftPropWithinAt_indep_chart_target_aux2 (g : H → M') {x : H} {s : Set
-/
#print StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target_aux /-
-theorem liftPropWithinAt_indep_chart_target_aux {g : X → M'} {e : LocalHomeomorph X H} {x : X}
+theorem liftPropWithinAt_indep_chart_target_aux {g : X → M'} {e : PartialHomeomorph X H} {x : X}
{s : Set X} (xe : x ∈ e.source) (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 ∘ e.symm) (e.symm ⁻¹' s) (e x) ↔ P (f' ∘ g ∘ e.symm) (e.symm ⁻¹' s) (e x) :=
@@ -689,14 +689,14 @@ theorem liftPropOn_chart_symm [HasGroupoid M G] (hG : G.LocalInvariantProp G Q)
#print StructureGroupoid.LocalInvariantProp.liftPropAt_of_mem_groupoid /-
theorem liftPropAt_of_mem_groupoid (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y)
- {f : LocalHomeomorph H H} (hf : f ∈ G) {x : H} (hx : x ∈ f.source) : LiftPropAt Q f x :=
+ {f : PartialHomeomorph H H} (hf : f ∈ G) {x : H} (hx : x ∈ f.source) : LiftPropAt Q f x :=
liftPropAt_of_mem_maximalAtlas hG hQ (G.mem_maximalAtlas_of_mem_groupoid hf) hx
#align structure_groupoid.local_invariant_prop.lift_prop_at_of_mem_groupoid StructureGroupoid.LocalInvariantProp.liftPropAt_of_mem_groupoid
-/
#print StructureGroupoid.LocalInvariantProp.liftPropOn_of_mem_groupoid /-
theorem liftPropOn_of_mem_groupoid (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y)
- {f : LocalHomeomorph H H} (hf : f ∈ G) : LiftPropOn Q f f.source :=
+ {f : PartialHomeomorph H H} (hf : f ∈ G) : LiftPropOn Q f f.source :=
liftPropOn_of_mem_maximalAtlas hG hQ (G.mem_maximalAtlas_of_mem_groupoid hf)
#align structure_groupoid.local_invariant_prop.lift_prop_on_of_mem_groupoid StructureGroupoid.LocalInvariantProp.liftPropOn_of_mem_groupoid
-/
@@ -745,14 +745,14 @@ section LocalStructomorph
variable (G)
-open LocalHomeomorph
+open PartialHomeomorph
#print StructureGroupoid.IsLocalStructomorphWithinAt /-
/-- A function from a model space `H` to itself is a local structomorphism, with respect to a
structure groupoid `G` for `H`, relative to a set `s` in `H`, if for all points `x` in the set, the
function agrees with a `G`-structomorphism on `s` in a neighbourhood of `x`. -/
def IsLocalStructomorphWithinAt (f : H → H) (s : Set H) (x : H) : Prop :=
- x ∈ s → ∃ e : LocalHomeomorph H H, e ∈ G ∧ EqOn f e.toFun (s ∩ e.source) ∧ x ∈ e.source
+ x ∈ s → ∃ e : PartialHomeomorph H H, e ∈ G ∧ EqOn f e.toFun (s ∩ e.source) ∧ x ∈ e.source
#align structure_groupoid.is_local_structomorph_within_at StructureGroupoid.IsLocalStructomorphWithinAt
-/
@@ -801,59 +801,59 @@ theorem isLocalStructomorphWithinAt_localInvariantProp [ClosedUnderRestriction G
#align structure_groupoid.is_local_structomorph_within_at_local_invariant_prop StructureGroupoid.isLocalStructomorphWithinAt_localInvariantProp
-/
-#print LocalHomeomorph.isLocalStructomorphWithinAt_iff /-
+#print PartialHomeomorph.isLocalStructomorphWithinAt_iff /-
/-- A slight reformulation of `is_local_structomorph_within_at` when `f` is a local homeomorph.
This gives us an `e` that is defined on a subset of `f.source`. -/
-theorem LocalHomeomorph.isLocalStructomorphWithinAt_iff {G : StructureGroupoid H}
- [ClosedUnderRestriction G] (f : LocalHomeomorph H H) {s : Set H} {x : H}
+theorem PartialHomeomorph.isLocalStructomorphWithinAt_iff {G : StructureGroupoid H}
+ [ClosedUnderRestriction G] (f : PartialHomeomorph H H) {s : Set H} {x : H}
(hx : x ∈ f.source ∪ sᶜ) :
G.IsLocalStructomorphWithinAt (⇑f) s x ↔
x ∈ s →
- ∃ e : LocalHomeomorph H H,
+ ∃ e : PartialHomeomorph H H,
e ∈ G ∧ e.source ⊆ f.source ∧ EqOn f (⇑e) (s ∩ e.source) ∧ x ∈ e.source :=
by
constructor
· intro hf h2x
obtain ⟨e, he, hfe, hxe⟩ := hf h2x
refine' ⟨e.restr f.source, closedUnderRestriction' he f.open_source, _, _, hxe, _⟩
- · simp_rw [LocalHomeomorph.restr_source]
+ · simp_rw [PartialHomeomorph.restr_source]
refine' (inter_subset_right _ _).trans interior_subset
· intro x' hx'; exact hfe ⟨hx'.1, hx'.2.1⟩
· rw [f.open_source.interior_eq]; exact Or.resolve_right hx (not_not.mpr h2x)
· intro hf hx; obtain ⟨e, he, h2e, hfe, hxe⟩ := hf hx; exact ⟨e, he, hfe, hxe⟩
-#align local_homeomorph.is_local_structomorph_within_at_iff LocalHomeomorph.isLocalStructomorphWithinAt_iff
+#align local_homeomorph.is_local_structomorph_within_at_iff PartialHomeomorph.isLocalStructomorphWithinAt_iff
-/
-#print LocalHomeomorph.isLocalStructomorphWithinAt_iff' /-
+#print PartialHomeomorph.isLocalStructomorphWithinAt_iff' /-
/-- A slight reformulation of `is_local_structomorph_within_at` when `f` is a local homeomorph and
the set we're considering is a superset of `f.source`. -/
-theorem LocalHomeomorph.isLocalStructomorphWithinAt_iff' {G : StructureGroupoid H}
- [ClosedUnderRestriction G] (f : LocalHomeomorph H H) {s : Set H} {x : H} (hs : f.source ⊆ s)
+theorem PartialHomeomorph.isLocalStructomorphWithinAt_iff' {G : StructureGroupoid H}
+ [ClosedUnderRestriction G] (f : PartialHomeomorph H H) {s : Set H} {x : H} (hs : f.source ⊆ s)
(hx : x ∈ f.source ∪ sᶜ) :
G.IsLocalStructomorphWithinAt (⇑f) s x ↔
x ∈ s →
- ∃ e : LocalHomeomorph H H,
+ ∃ e : PartialHomeomorph H H,
e ∈ G ∧ e.source ⊆ f.source ∧ EqOn f (⇑e) e.source ∧ x ∈ e.source :=
by
simp_rw [f.is_local_structomorph_within_at_iff hx]
refine' imp_congr_right fun hx => exists_congr fun e => and_congr_right fun he => _
refine' and_congr_right fun h2e => _
rw [inter_eq_right_iff_subset.mpr (h2e.trans hs)]
-#align local_homeomorph.is_local_structomorph_within_at_iff' LocalHomeomorph.isLocalStructomorphWithinAt_iff'
+#align local_homeomorph.is_local_structomorph_within_at_iff' PartialHomeomorph.isLocalStructomorphWithinAt_iff'
-/
-#print LocalHomeomorph.isLocalStructomorphWithinAt_source_iff /-
+#print PartialHomeomorph.isLocalStructomorphWithinAt_source_iff /-
/-- A slight reformulation of `is_local_structomorph_within_at` when `f` is a local homeomorph and
the set we're considering is `f.source`. -/
-theorem LocalHomeomorph.isLocalStructomorphWithinAt_source_iff {G : StructureGroupoid H}
- [ClosedUnderRestriction G] (f : LocalHomeomorph H H) {x : H} :
+theorem PartialHomeomorph.isLocalStructomorphWithinAt_source_iff {G : StructureGroupoid H}
+ [ClosedUnderRestriction G] (f : PartialHomeomorph H H) {x : H} :
G.IsLocalStructomorphWithinAt (⇑f) f.source x ↔
x ∈ f.source →
- ∃ e : LocalHomeomorph H H,
+ ∃ e : PartialHomeomorph H H,
e ∈ G ∧ e.source ⊆ f.source ∧ EqOn f (⇑e) e.source ∧ x ∈ e.source :=
haveI : x ∈ f.source ∪ f.sourceᶜ := by simp_rw [union_compl_self]
f.is_local_structomorph_within_at_iff' subset.rfl this
-#align local_homeomorph.is_local_structomorph_within_at_source_iff LocalHomeomorph.isLocalStructomorphWithinAt_source_iff
+#align local_homeomorph.is_local_structomorph_within_at_source_iff PartialHomeomorph.isLocalStructomorphWithinAt_source_iff
-/
variable {H₁ : Type _} [TopologicalSpace H₁] {H₂ : Type _} [TopologicalSpace H₂] {H₃ : Type _}
@@ -879,14 +879,14 @@ theorem HasGroupoid.comp
local_invariant_prop.lift_prop_on_indep_chart
(is_local_structomorph_within_at_local_invariant_prop G₁) (G₁.subset_maximal_atlas hf)
(G₁.subset_maximal_atlas hf') (H _ (G₂.compatible he he')) hxs' hxs
- simp_rw [← LocalHomeomorph.coe_trans, LocalHomeomorph.trans_assoc] at hφ
- simp_rw [LocalHomeomorph.trans_symm_eq_symm_trans_symm, LocalHomeomorph.trans_assoc]
+ simp_rw [← PartialHomeomorph.coe_trans, PartialHomeomorph.trans_assoc] at hφ
+ simp_rw [PartialHomeomorph.trans_symm_eq_symm_trans_symm, PartialHomeomorph.trans_assoc]
have hs : IsOpen (f.symm ≫ₕ e.symm ≫ₕ e' ≫ₕ f').source :=
(f.symm ≫ₕ e.symm ≫ₕ e' ≫ₕ f').open_source
refine' ⟨_, hs.inter φ.open_source, _, _⟩
· simp only [hx, hφ_dom, mfld_simps]
· refine' G₁.eq_on_source (closedUnderRestriction' hφG₁ hs) _
- rw [LocalHomeomorph.restr_source_inter]
+ rw [PartialHomeomorph.restr_source_inter]
refine' (hφ.mono _).restr_eqOn_source
mfld_set_tac }
#align structure_groupoid.has_groupoid.comp StructureGroupoid.HasGroupoid.comp
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,7 +3,7 @@ Copyright (c) 2020 Sébastien Gouëzel. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel, Floris van Doorn
-/
-import Mathbin.Geometry.Manifold.ChartedSpace
+import Geometry.Manifold.ChartedSpace
#align_import geometry.manifold.local_invariant_properties from "leanprover-community/mathlib"@"431589bce478b2229eba14b14a283250428217db"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,14 +2,11 @@
Copyright (c) 2020 Sébastien Gouëzel. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel, Floris van Doorn
-
-! This file was ported from Lean 3 source module geometry.manifold.local_invariant_properties
-! leanprover-community/mathlib commit 431589bce478b2229eba14b14a283250428217db
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Geometry.Manifold.ChartedSpace
+#align_import geometry.manifold.local_invariant_properties from "leanprover-community/mathlib"@"431589bce478b2229eba14b14a283250428217db"
+
/-!
# Local properties invariant under a groupoid
mathlib commit https://github.com/leanprover-community/mathlib/commit/d30d31261cdb4d2f5e612eabc3c4bf45556350d5
@@ -714,6 +714,7 @@ theorem liftProp_id (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y) :
-/
/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr «expr ∧ »(_, _)]] -/
+#print StructureGroupoid.LocalInvariantProp.liftPropAt_iff_comp_inclusion /-
theorem liftPropAt_iff_comp_inclusion (hG : LocalInvariantProp G G' P) {U V : Opens M} (hUV : U ≤ V)
(f : V → M') (x : U) :
LiftPropAt P f (Set.inclusion hUV x) ↔ LiftPropAt P (f ∘ Set.inclusion hUV : U → M') x :=
@@ -728,7 +729,9 @@ theorem liftPropAt_iff_comp_inclusion (hG : LocalInvariantProp G G' P) {U V : Op
(TopologicalSpace.Opens.chartAt_inclusion_symm_eventuallyEq hUV).fun_comp
(chart_at H' (f (Set.inclusion hUV x)) ∘ f)
#align structure_groupoid.local_invariant_prop.lift_prop_at_iff_comp_inclusion StructureGroupoid.LocalInvariantProp.liftPropAt_iff_comp_inclusion
+-/
+#print StructureGroupoid.LocalInvariantProp.liftProp_inclusion /-
theorem liftProp_inclusion {Q : (H → H) → Set H → H → Prop} (hG : LocalInvariantProp G G Q)
(hQ : ∀ y, Q id univ y) {U V : Opens M} (hUV : U ≤ V) :
LiftProp Q (Set.inclusion hUV : U → V) := by
@@ -737,6 +740,7 @@ theorem liftProp_inclusion {Q : (H → H) → Set H → H → Prop} (hG : LocalI
rw [← hG.lift_prop_at_iff_comp_inclusion hUV]
apply hG.lift_prop_id hQ
#align structure_groupoid.local_invariant_prop.lift_prop_inclusion StructureGroupoid.LocalInvariantProp.liftProp_inclusion
+-/
end LocalInvariantProp
mathlib commit https://github.com/leanprover-community/mathlib/commit/6285167a053ad0990fc88e56c48ccd9fae6550eb
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel, Floris van Doorn
! This file was ported from Lean 3 source module geometry.manifold.local_invariant_properties
-! leanprover-community/mathlib commit ce38d86c0b2d427ce208c3cee3159cb421d2b3c4
+! leanprover-community/mathlib commit 431589bce478b2229eba14b14a283250428217db
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -55,7 +55,7 @@ noncomputable section
open scoped Classical Manifold Topology
-open Set Filter
+open Set Filter TopologicalSpace
variable {H M H' M' X : Type _}
@@ -713,6 +713,31 @@ theorem liftProp_id (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y) :
#align structure_groupoid.local_invariant_prop.lift_prop_id StructureGroupoid.LocalInvariantProp.liftProp_id
-/
+/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr «expr ∧ »(_, _)]] -/
+theorem liftPropAt_iff_comp_inclusion (hG : LocalInvariantProp G G' P) {U V : Opens M} (hUV : U ≤ V)
+ (f : V → M') (x : U) :
+ LiftPropAt P f (Set.inclusion hUV x) ↔ LiftPropAt P (f ∘ Set.inclusion hUV : U → M') x :=
+ by
+ trace
+ "./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr «expr ∧ »(_, _)]]"
+ ·
+ simp [continuousWithinAt_univ,
+ (TopologicalSpace.Opens.openEmbedding_of_le hUV).continuousAt_iff]
+ · apply hG.congr_iff
+ exact
+ (TopologicalSpace.Opens.chartAt_inclusion_symm_eventuallyEq hUV).fun_comp
+ (chart_at H' (f (Set.inclusion hUV x)) ∘ f)
+#align structure_groupoid.local_invariant_prop.lift_prop_at_iff_comp_inclusion StructureGroupoid.LocalInvariantProp.liftPropAt_iff_comp_inclusion
+
+theorem liftProp_inclusion {Q : (H → H) → Set H → H → Prop} (hG : LocalInvariantProp G G Q)
+ (hQ : ∀ y, Q id univ y) {U V : Opens M} (hUV : U ≤ V) :
+ LiftProp Q (Set.inclusion hUV : U → V) := by
+ intro x
+ show lift_prop_at Q (id ∘ inclusion hUV) x
+ rw [← hG.lift_prop_at_iff_comp_inclusion hUV]
+ apply hG.lift_prop_id hQ
+#align structure_groupoid.local_invariant_prop.lift_prop_inclusion StructureGroupoid.LocalInvariantProp.liftProp_inclusion
+
end LocalInvariantProp
section LocalStructomorph
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -90,8 +90,6 @@ variable {G G'} {P : (H → H') → Set H → H → Prop} {s t u : Set H} {x : H
variable (hG : G.LocalInvariantProp G' P)
-include hG
-
namespace LocalInvariantProp
#print StructureGroupoid.LocalInvariantProp.congr_set /-
@@ -103,11 +101,14 @@ theorem congr_set {s t : Set H} {x : H} {f : H → H'} (hu : s =ᶠ[𝓝 x] t) :
#align structure_groupoid.local_invariant_prop.congr_set StructureGroupoid.LocalInvariantProp.congr_set
-/
+#print StructureGroupoid.LocalInvariantProp.is_local_nhds /-
theorem is_local_nhds {s u : Set H} {x : H} {f : H → H'} (hu : u ∈ 𝓝[s] x) :
P f s x ↔ P f (s ∩ u) x :=
hG.congr_set <| mem_nhdsWithin_iff_eventuallyEq.mp hu
#align structure_groupoid.local_invariant_prop.is_local_nhds StructureGroupoid.LocalInvariantProp.is_local_nhds
+-/
+#print StructureGroupoid.LocalInvariantProp.congr_iff_nhdsWithin /-
theorem congr_iff_nhdsWithin {s : Set H} {x : H} {f g : H → H'} (h1 : f =ᶠ[𝓝[s] x] g)
(h2 : f x = g x) : P f s x ↔ P g s x :=
by
@@ -115,29 +116,41 @@ theorem congr_iff_nhdsWithin {s : Set H} {x : H} {f g : H → H'} (h1 : f =ᶠ[
exact
⟨hG.congr_of_forall (fun y hy => hy.2) h2, hG.congr_of_forall (fun y hy => hy.2.symm) h2.symm⟩
#align structure_groupoid.local_invariant_prop.congr_iff_nhds_within StructureGroupoid.LocalInvariantProp.congr_iff_nhdsWithin
+-/
+#print StructureGroupoid.LocalInvariantProp.congr_nhdsWithin /-
theorem congr_nhdsWithin {s : Set H} {x : H} {f g : H → H'} (h1 : f =ᶠ[𝓝[s] x] g) (h2 : f x = g x)
(hP : P f s x) : P g s x :=
(hG.congr_iff_nhdsWithin h1 h2).mp hP
#align structure_groupoid.local_invariant_prop.congr_nhds_within StructureGroupoid.LocalInvariantProp.congr_nhdsWithin
+-/
+#print StructureGroupoid.LocalInvariantProp.congr_nhdsWithin' /-
theorem congr_nhdsWithin' {s : Set H} {x : H} {f g : H → H'} (h1 : f =ᶠ[𝓝[s] x] g) (h2 : f x = g x)
(hP : P g s x) : P f s x :=
(hG.congr_iff_nhdsWithin h1 h2).mpr hP
#align structure_groupoid.local_invariant_prop.congr_nhds_within' StructureGroupoid.LocalInvariantProp.congr_nhdsWithin'
+-/
+#print StructureGroupoid.LocalInvariantProp.congr_iff /-
theorem congr_iff {s : Set H} {x : H} {f g : H → H'} (h : f =ᶠ[𝓝 x] g) : P f s x ↔ P g s x :=
hG.congr_iff_nhdsWithin (mem_nhdsWithin_of_mem_nhds h) (mem_of_mem_nhds h : _)
#align structure_groupoid.local_invariant_prop.congr_iff StructureGroupoid.LocalInvariantProp.congr_iff
+-/
+#print StructureGroupoid.LocalInvariantProp.congr /-
theorem congr {s : Set H} {x : H} {f g : H → H'} (h : f =ᶠ[𝓝 x] g) (hP : P f s x) : P g s x :=
(hG.congr_iff h).mp hP
#align structure_groupoid.local_invariant_prop.congr StructureGroupoid.LocalInvariantProp.congr
+-/
+#print StructureGroupoid.LocalInvariantProp.congr' /-
theorem congr' {s : Set H} {x : H} {f g : H → H'} (h : f =ᶠ[𝓝 x] g) (hP : P g s x) : P f s x :=
hG.congr h.symm hP
#align structure_groupoid.local_invariant_prop.congr' StructureGroupoid.LocalInvariantProp.congr'
+-/
+#print StructureGroupoid.LocalInvariantProp.left_invariance /-
theorem left_invariance {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 :=
@@ -156,7 +169,9 @@ theorem left_invariance {s : Set H} {x : H} {f : H → H'} {e' : LocalHomeomorph
· simp_rw [hG.is_local_nhds h2f]
exact hG.left_invariance' he' (inter_subset_right _ _) hxe'
#align structure_groupoid.local_invariant_prop.left_invariance StructureGroupoid.LocalInvariantProp.left_invariance
+-/
+#print StructureGroupoid.LocalInvariantProp.right_invariance /-
theorem right_invariance {s : Set H} {x : H} {f : H → H'} {e : LocalHomeomorph H H} (he : e ∈ G)
(hxe : x ∈ e.source) : P (f ∘ e.symm) (e.symm ⁻¹' s) (e x) ↔ P f s x :=
by
@@ -170,6 +185,7 @@ theorem right_invariance {s : Set H} {x : H} {f : H → H'} {e : LocalHomeomorph
refine' eventually_of_mem (e.open_source.mem_nhds hxe) fun x' hx' => _
simp_rw [mem_preimage, e.left_inv hx']
#align structure_groupoid.local_invariant_prop.right_invariance StructureGroupoid.LocalInvariantProp.right_invariance
+-/
end LocalInvariantProp
@@ -208,11 +224,13 @@ def LiftPropAt (P : (H → H') → Set H → H → Prop) (f : M → M') (x : M)
#align charted_space.lift_prop_at ChartedSpace.LiftPropAt
-/
+#print ChartedSpace.liftPropAt_iff /-
theorem liftPropAt_iff {P : (H → H') → Set H → H → Prop} {f : M → M'} {x : M} :
LiftPropAt P f x ↔
ContinuousAt f x ∧ P (chartAt H' (f x) ∘ f ∘ (chartAt H x).symm) univ (chartAt H x x) :=
by rw [lift_prop_at, lift_prop_within_at, continuousWithinAt_univ, preimage_univ]
#align charted_space.lift_prop_at_iff ChartedSpace.liftPropAt_iff
+-/
#print ChartedSpace.LiftProp /-
/-- Given a property of germs of functions and sets in the model space, then one defines
@@ -223,11 +241,13 @@ def LiftProp (P : (H → H') → Set H → H → Prop) (f : M → M') :=
#align charted_space.lift_prop ChartedSpace.LiftProp
-/
+#print ChartedSpace.liftProp_iff /-
theorem liftProp_iff {P : (H → H') → Set H → H → Prop} {f : M → M'} :
LiftProp P f ↔
Continuous f ∧ ∀ x, P (chartAt H' (f x) ∘ f ∘ (chartAt H x).symm) univ (chartAt H x x) :=
by simp_rw [lift_prop, lift_prop_at_iff, forall_and, continuous_iff_continuousAt]
#align charted_space.lift_prop_iff ChartedSpace.liftProp_iff
+-/
end ChartedSpace
@@ -239,37 +259,46 @@ variable {G : StructureGroupoid H} {G' : StructureGroupoid H'} {e e' : LocalHome
{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}
+#print StructureGroupoid.liftPropWithinAt_univ /-
theorem liftPropWithinAt_univ : LiftPropWithinAt P g univ x ↔ LiftPropAt P g x :=
Iff.rfl
#align structure_groupoid.lift_prop_within_at_univ StructureGroupoid.liftPropWithinAt_univ
+-/
+#print StructureGroupoid.liftPropOn_univ /-
theorem liftPropOn_univ : LiftPropOn P g univ ↔ LiftProp P g := by
simp [lift_prop_on, lift_prop, lift_prop_at]
#align structure_groupoid.lift_prop_on_univ StructureGroupoid.liftPropOn_univ
+-/
+#print StructureGroupoid.liftPropWithinAt_self /-
theorem liftPropWithinAt_self {f : H → H'} {s : Set H} {x : H} :
LiftPropWithinAt P f s x ↔ ContinuousWithinAt f s x ∧ P f s x :=
Iff.rfl
#align structure_groupoid.lift_prop_within_at_self StructureGroupoid.liftPropWithinAt_self
+-/
+#print StructureGroupoid.liftPropWithinAt_self_source /-
theorem liftPropWithinAt_self_source {f : H → M'} {s : Set H} {x : H} :
LiftPropWithinAt P f s x ↔ ContinuousWithinAt f s x ∧ P (chartAt H' (f x) ∘ f) s x :=
Iff.rfl
#align structure_groupoid.lift_prop_within_at_self_source StructureGroupoid.liftPropWithinAt_self_source
+-/
+#print StructureGroupoid.liftPropWithinAt_self_target /-
theorem liftPropWithinAt_self_target {f : M → H'} :
LiftPropWithinAt P f s x ↔
ContinuousWithinAt f s x ∧
P (f ∘ (chartAt H x).symm) ((chartAt H x).symm ⁻¹' s) (chartAt H x x) :=
Iff.rfl
#align structure_groupoid.lift_prop_within_at_self_target StructureGroupoid.liftPropWithinAt_self_target
+-/
namespace LocalInvariantProp
variable (hG : G.LocalInvariantProp G' P)
-include hG
-
+#print StructureGroupoid.LocalInvariantProp.liftPropWithinAt_iff /-
/-- `lift_prop_within_at P f s x` is equivalent to a definition where we restrict the set we are
considering to the domain of the charts at `x` and `f x`. -/
theorem liftPropWithinAt_iff {f : M → M'} :
@@ -284,7 +313,9 @@ theorem liftPropWithinAt_iff {f : M → M'} :
LocalHomeomorph.preimage_eventuallyEq_target_inter_preimage_inter hf (mem_chart_source H x)
(chart_source_mem_nhds H' (f x))
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_iff StructureGroupoid.LocalInvariantProp.liftPropWithinAt_iff
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_source_aux /-
theorem liftPropWithinAt_indep_chart_source_aux (g : M → H') (he : e ∈ G.maximalAtlas M)
(xe : x ∈ e.source) (he' : e' ∈ G.maximalAtlas M) (xe' : x ∈ e'.source) :
P (g ∘ e.symm) (e.symm ⁻¹' s) (e x) ↔ P (g ∘ e'.symm) (e'.symm ⁻¹' s) (e' x) :=
@@ -303,7 +334,9 @@ theorem liftPropWithinAt_indep_chart_source_aux (g : M → H') (he : e ∈ G.max
simp only [mfld_simps]
rw [hy]
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_source_aux StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_source_aux
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target_aux2 /-
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 :=
@@ -315,7 +348,9 @@ theorem liftPropWithinAt_indep_chart_target_aux2 (g : H → M') {x : H} {s : Set
refine' hG.congr_iff_nhds_within _ (by simp only [xf, mfld_simps])
exact (hgs.eventually <| f.eventually_left_inverse xf).mono fun y => congr_arg f'
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target_aux2 StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target_aux2
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target_aux /-
theorem liftPropWithinAt_indep_chart_target_aux {g : X → M'} {e : LocalHomeomorph X H} {x : X}
{s : Set X} (xe : x ∈ e.source) (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) :
@@ -325,7 +360,9 @@ theorem liftPropWithinAt_indep_chart_target_aux {g : X → M'} {e : LocalHomeomo
refine' hG.lift_prop_within_at_indep_chart_target_aux2 (g ∘ e.symm) hf xf hf' xf' _
exact hgs.comp (e.symm.continuous_at <| e.maps_to xe).ContinuousWithinAt subset.rfl
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target_aux StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target_aux
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_aux /-
/-- If a property of a germ of function `g` on a pointed set `(s, x)` is invariant under the
structure groupoid (by composition in the source space and in the target space), then
expressing it in charted spaces does not depend on the element of the maximal atlas one uses
@@ -340,7 +377,9 @@ theorem liftPropWithinAt_indep_chart_aux (he : e ∈ G.maximalAtlas M) (xe : x
rw [hG.lift_prop_within_at_indep_chart_source_aux (f ∘ g) he xe he' xe',
hG.lift_prop_within_at_indep_chart_target_aux xe' hf xf hf' xf' hgs]
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_aux StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_aux
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart /-
theorem liftPropWithinAt_indep_chart [HasGroupoid M G] [HasGroupoid M' G']
(he : e ∈ G.maximalAtlas M) (xe : x ∈ e.source) (hf : f ∈ G'.maximalAtlas M')
(xf : g x ∈ f.source) :
@@ -349,7 +388,9 @@ theorem liftPropWithinAt_indep_chart [HasGroupoid M G] [HasGroupoid M' G']
hG.liftPropWithinAt_indep_chart_aux (chart_mem_maximalAtlas _ _) (mem_chart_source _ _) he xe
(chart_mem_maximalAtlas _ _) (mem_chart_source _ _) hf xf
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_source /-
/-- A version of `lift_prop_within_at_indep_chart`, only for the source. -/
theorem liftPropWithinAt_indep_chart_source [HasGroupoid M G] (he : e ∈ G.maximalAtlas M)
(xe : x ∈ e.source) :
@@ -363,7 +404,9 @@ theorem liftPropWithinAt_indep_chart_source [HasGroupoid M G] (he : e ∈ G.maxi
rw [hG.lift_prop_within_at_indep_chart_source_aux (chart_at H' (g x) ∘ g)
(chart_mem_maximal_atlas G x) (mem_chart_source H x) he xe]
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_source StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_source
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target /-
/-- A version of `lift_prop_within_at_indep_chart`, only for the target. -/
theorem liftPropWithinAt_indep_chart_target [HasGroupoid M' G'] (hf : f ∈ G'.maximalAtlas M')
(xf : g x ∈ f.source) :
@@ -376,7 +419,9 @@ theorem liftPropWithinAt_indep_chart_target [HasGroupoid M' G'] (hf : f ∈ G'.m
hG.lift_prop_within_at_indep_chart_target_aux (mem_chart_source _ _)
(chart_mem_maximal_atlas _ _) (mem_chart_source _ _) hf xf hg
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart' /-
/-- A version of `lift_prop_within_at_indep_chart`, that uses `lift_prop_within_at` on both sides.
-/
theorem liftPropWithinAt_indep_chart' [HasGroupoid M G] [HasGroupoid M' G']
@@ -393,7 +438,9 @@ theorem liftPropWithinAt_indep_chart' [HasGroupoid M G] [HasGroupoid M' G']
simp_rw [Function.comp, e.left_inv xe, f.continuous_at xf]
exact this.comp_continuous_within_at h1
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart' StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart'
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropOn_indep_chart /-
theorem liftPropOn_indep_chart [HasGroupoid M G] [HasGroupoid M' G'] (he : e ∈ G.maximalAtlas M)
(hf : f ∈ G'.maximalAtlas M') (h : LiftPropOn P g s) {y : H}
(hy : y ∈ e.target ∩ e.symm ⁻¹' (s ∩ g ⁻¹' f.source)) : P (f ∘ g ∘ e.symm) (e.symm ⁻¹' s) y :=
@@ -401,7 +448,9 @@ theorem liftPropOn_indep_chart [HasGroupoid M G] [HasGroupoid M' G'] (he : e ∈
convert ((hG.lift_prop_within_at_indep_chart he (e.symm_maps_to hy.1) hf hy.2.2).1 (h _ hy.2.1)).2
rw [e.right_inv hy.1]
#align structure_groupoid.local_invariant_prop.lift_prop_on_indep_chart StructureGroupoid.LocalInvariantProp.liftPropOn_indep_chart
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropWithinAt_inter' /-
theorem liftPropWithinAt_inter' (ht : t ∈ 𝓝[s] x) :
LiftPropWithinAt P g (s ∩ t) x ↔ LiftPropWithinAt P g s x :=
by
@@ -410,20 +459,28 @@ theorem liftPropWithinAt_inter' (ht : t ∈ 𝓝[s] x) :
(chart_at H x).eventually_nhds' (fun x => x ∈ s ∩ t ↔ x ∈ s) (mem_chart_source H x)]
exact (mem_nhds_within_iff_eventually_eq.mp ht).symm.mem_iff
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_inter' StructureGroupoid.LocalInvariantProp.liftPropWithinAt_inter'
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropWithinAt_inter /-
theorem liftPropWithinAt_inter (ht : t ∈ 𝓝 x) :
LiftPropWithinAt P g (s ∩ t) x ↔ LiftPropWithinAt P g s x :=
hG.liftPropWithinAt_inter' (mem_nhdsWithin_of_mem_nhds ht)
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_inter StructureGroupoid.LocalInvariantProp.liftPropWithinAt_inter
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropAt_of_liftPropWithinAt /-
theorem liftPropAt_of_liftPropWithinAt (h : LiftPropWithinAt P g s x) (hs : s ∈ 𝓝 x) :
LiftPropAt P g x := by rwa [← univ_inter s, hG.lift_prop_within_at_inter hs] at h
#align structure_groupoid.local_invariant_prop.lift_prop_at_of_lift_prop_within_at StructureGroupoid.LocalInvariantProp.liftPropAt_of_liftPropWithinAt
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropWithinAt_of_liftPropAt_of_mem_nhds /-
theorem liftPropWithinAt_of_liftPropAt_of_mem_nhds (h : LiftPropAt P g x) (hs : s ∈ 𝓝 x) :
LiftPropWithinAt P g s x := by rwa [← univ_inter s, hG.lift_prop_within_at_inter hs]
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_of_lift_prop_at_of_mem_nhds StructureGroupoid.LocalInvariantProp.liftPropWithinAt_of_liftPropAt_of_mem_nhds
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropOn_of_locally_liftPropOn /-
theorem liftPropOn_of_locally_liftPropOn
(h : ∀ x ∈ s, ∃ u, IsOpen u ∧ x ∈ u ∧ LiftPropOn P g (s ∩ u)) : LiftPropOn P g s :=
by
@@ -433,14 +490,18 @@ theorem liftPropOn_of_locally_liftPropOn
rwa [hG.lift_prop_within_at_inter] at this
exact IsOpen.mem_nhds u_open xu
#align structure_groupoid.local_invariant_prop.lift_prop_on_of_locally_lift_prop_on StructureGroupoid.LocalInvariantProp.liftPropOn_of_locally_liftPropOn
+-/
+#print StructureGroupoid.LocalInvariantProp.liftProp_of_locally_liftPropOn /-
theorem liftProp_of_locally_liftPropOn (h : ∀ x, ∃ u, IsOpen u ∧ x ∈ u ∧ LiftPropOn P g u) :
LiftProp P g := by
rw [← lift_prop_on_univ]
apply hG.lift_prop_on_of_locally_lift_prop_on fun x hx => _
simp [h x]
#align structure_groupoid.local_invariant_prop.lift_prop_of_locally_lift_prop_on StructureGroupoid.LocalInvariantProp.liftProp_of_locally_liftPropOn
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_of_eventuallyEq /-
theorem liftPropWithinAt_congr_of_eventuallyEq (h : LiftPropWithinAt P g s x) (h₁ : g' =ᶠ[𝓝[s] x] g)
(hx : g' x = g x) : LiftPropWithinAt P g' s x :=
by
@@ -453,43 +514,57 @@ theorem liftPropWithinAt_congr_of_eventuallyEq (h : LiftPropWithinAt P g s x) (h
(fun y => chart_at H' (g' x) (g' y) = chart_at H' (g x) (g y)) (mem_chart_source H x)]
exact h₁.mono fun y hy => by rw [hx, hy]
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_of_eventuallyEq
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_iff_of_eventuallyEq /-
theorem liftPropWithinAt_congr_iff_of_eventuallyEq (h₁ : g' =ᶠ[𝓝[s] x] g) (hx : g' x = g x) :
LiftPropWithinAt P g' s x ↔ LiftPropWithinAt P g s x :=
⟨fun h => hG.liftPropWithinAt_congr_of_eventuallyEq h h₁.symm hx.symm, fun h =>
hG.liftPropWithinAt_congr_of_eventuallyEq h h₁ hx⟩
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_iff_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_iff_of_eventuallyEq
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_iff /-
theorem liftPropWithinAt_congr_iff (h₁ : ∀ y ∈ s, g' y = g y) (hx : g' x = g x) :
LiftPropWithinAt P g' s x ↔ LiftPropWithinAt P g s x :=
hG.liftPropWithinAt_congr_iff_of_eventuallyEq (eventually_nhdsWithin_of_forall h₁) hx
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_iff StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_iff
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr /-
theorem liftPropWithinAt_congr (h : LiftPropWithinAt P g s x) (h₁ : ∀ y ∈ s, g' y = g y)
(hx : g' x = g x) : LiftPropWithinAt P g' s x :=
(hG.liftPropWithinAt_congr_iff h₁ hx).mpr h
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropAt_congr_iff_of_eventuallyEq /-
theorem liftPropAt_congr_iff_of_eventuallyEq (h₁ : g' =ᶠ[𝓝 x] g) :
LiftPropAt P g' x ↔ LiftPropAt P g x :=
hG.liftPropWithinAt_congr_iff_of_eventuallyEq (by simp_rw [nhdsWithin_univ, h₁]) h₁.eq_of_nhds
#align structure_groupoid.local_invariant_prop.lift_prop_at_congr_iff_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropAt_congr_iff_of_eventuallyEq
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropAt_congr_of_eventuallyEq /-
theorem liftPropAt_congr_of_eventuallyEq (h : LiftPropAt P g x) (h₁ : g' =ᶠ[𝓝 x] g) :
LiftPropAt P g' x :=
(hG.liftPropAt_congr_iff_of_eventuallyEq h₁).mpr h
#align structure_groupoid.local_invariant_prop.lift_prop_at_congr_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropAt_congr_of_eventuallyEq
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropOn_congr /-
theorem liftPropOn_congr (h : LiftPropOn P g s) (h₁ : ∀ y ∈ s, g' y = g y) : LiftPropOn P g' s :=
fun x hx => hG.liftPropWithinAt_congr (h x hx) h₁ (h₁ x hx)
#align structure_groupoid.local_invariant_prop.lift_prop_on_congr StructureGroupoid.LocalInvariantProp.liftPropOn_congr
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropOn_congr_iff /-
theorem liftPropOn_congr_iff (h₁ : ∀ y ∈ s, g' y = g y) : LiftPropOn P g' s ↔ LiftPropOn P g s :=
⟨fun h => hG.liftPropOn_congr h fun y hy => (h₁ y hy).symm, fun h => hG.liftPropOn_congr h h₁⟩
#align structure_groupoid.local_invariant_prop.lift_prop_on_congr_iff StructureGroupoid.LocalInvariantProp.liftPropOn_congr_iff
+-/
-omit hG
-
+#print StructureGroupoid.LocalInvariantProp.liftPropWithinAt_mono_of_mem /-
theorem liftPropWithinAt_mono_of_mem
(mono_of_mem : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, s ∈ 𝓝[t] x → P f s x → P f t x)
(h : LiftPropWithinAt P g s x) (hst : s ∈ 𝓝[t] x) : LiftPropWithinAt P g t x :=
@@ -498,7 +573,9 @@ theorem liftPropWithinAt_mono_of_mem
simp_rw [← mem_map, (chart_at H x).symm.map_nhdsWithin_preimage_eq (mem_chart_target H x),
(chart_at H x).left_inv (mem_chart_source H x), hst]
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_mono_of_mem StructureGroupoid.LocalInvariantProp.liftPropWithinAt_mono_of_mem
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropWithinAt_mono /-
theorem liftPropWithinAt_mono (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆ s → P f s x → P f t x)
(h : LiftPropWithinAt P g s x) (hts : t ⊆ s) : LiftPropWithinAt P g t x :=
by
@@ -507,26 +584,34 @@ theorem liftPropWithinAt_mono (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆
simp only [mfld_simps] at hy
simp only [hy, hts _, mfld_simps]
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_mono StructureGroupoid.LocalInvariantProp.liftPropWithinAt_mono
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropWithinAt_of_liftPropAt /-
theorem liftPropWithinAt_of_liftPropAt (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆ s → P f s x → P f t x)
(h : LiftPropAt P g x) : LiftPropWithinAt P g s x :=
by
rw [← lift_prop_within_at_univ] at h
exact lift_prop_within_at_mono mono h (subset_univ _)
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_of_lift_prop_at StructureGroupoid.LocalInvariantProp.liftPropWithinAt_of_liftPropAt
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropOn_mono /-
theorem liftPropOn_mono (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆ s → P f s x → P f t x)
(h : LiftPropOn P g t) (hst : s ⊆ t) : LiftPropOn P g s := fun x hx =>
liftPropWithinAt_mono mono (h x (hst hx)) hst
#align structure_groupoid.local_invariant_prop.lift_prop_on_mono StructureGroupoid.LocalInvariantProp.liftPropOn_mono
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropOn_of_liftProp /-
theorem liftPropOn_of_liftProp (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆ s → P f s x → P f t x)
(h : LiftProp P g) : LiftPropOn P g s :=
by
rw [← lift_prop_on_univ] at h
exact lift_prop_on_mono mono h (subset_univ _)
#align structure_groupoid.local_invariant_prop.lift_prop_on_of_lift_prop StructureGroupoid.LocalInvariantProp.liftPropOn_of_liftProp
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropAt_of_mem_maximalAtlas /-
theorem liftPropAt_of_mem_maximalAtlas [HasGroupoid M G] (hG : G.LocalInvariantProp G Q)
(hQ : ∀ y, Q id univ y) (he : e ∈ maximalAtlas M G) (hx : x ∈ e.source) : LiftPropAt Q e x :=
by
@@ -535,7 +620,9 @@ theorem liftPropAt_of_mem_maximalAtlas [HasGroupoid M G] (hG : G.LocalInvariantP
(e.continuous_at hx).ContinuousWithinAt, true_and_iff]
exact hG.congr' (e.eventually_right_inverse' hx) (hQ _)
#align structure_groupoid.local_invariant_prop.lift_prop_at_of_mem_maximal_atlas StructureGroupoid.LocalInvariantProp.liftPropAt_of_mem_maximalAtlas
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropOn_of_mem_maximalAtlas /-
theorem liftPropOn_of_mem_maximalAtlas [HasGroupoid M G] (hG : G.LocalInvariantProp G Q)
(hQ : ∀ y, Q id univ y) (he : e ∈ maximalAtlas M G) : LiftPropOn Q e e.source :=
by
@@ -545,7 +632,9 @@ theorem liftPropOn_of_mem_maximalAtlas [HasGroupoid M G] (hG : G.LocalInvariantP
(hG.lift_prop_at_of_mem_maximal_atlas hQ he hx)
exact IsOpen.mem_nhds e.open_source hx
#align structure_groupoid.local_invariant_prop.lift_prop_on_of_mem_maximal_atlas StructureGroupoid.LocalInvariantProp.liftPropOn_of_mem_maximalAtlas
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropAt_symm_of_mem_maximalAtlas /-
theorem liftPropAt_symm_of_mem_maximalAtlas [HasGroupoid M G] {x : H}
(hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y) (he : e ∈ maximalAtlas M G)
(hx : x ∈ e.target) : LiftPropAt Q e.symm x :=
@@ -559,7 +648,9 @@ theorem liftPropAt_symm_of_mem_maximalAtlas [HasGroupoid M G] {x : H}
simp only [h, mfld_simps]
exact hG.congr' (e.eventually_right_inverse hx) (hQ x)
#align structure_groupoid.local_invariant_prop.lift_prop_at_symm_of_mem_maximal_atlas StructureGroupoid.LocalInvariantProp.liftPropAt_symm_of_mem_maximalAtlas
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropOn_symm_of_mem_maximalAtlas /-
theorem liftPropOn_symm_of_mem_maximalAtlas [HasGroupoid M G] (hG : G.LocalInvariantProp G Q)
(hQ : ∀ y, Q id univ y) (he : e ∈ maximalAtlas M G) : LiftPropOn Q e.symm e.target :=
by
@@ -569,26 +660,35 @@ theorem liftPropOn_symm_of_mem_maximalAtlas [HasGroupoid M G] (hG : G.LocalInvar
(hG.lift_prop_at_symm_of_mem_maximal_atlas hQ he hx)
exact IsOpen.mem_nhds e.open_target hx
#align structure_groupoid.local_invariant_prop.lift_prop_on_symm_of_mem_maximal_atlas StructureGroupoid.LocalInvariantProp.liftPropOn_symm_of_mem_maximalAtlas
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropAt_chart /-
theorem liftPropAt_chart [HasGroupoid M G] (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y) :
LiftPropAt Q (chartAt H x) x :=
hG.liftPropAt_of_mem_maximalAtlas hQ (chart_mem_maximalAtlas G x) (mem_chart_source H x)
#align structure_groupoid.local_invariant_prop.lift_prop_at_chart StructureGroupoid.LocalInvariantProp.liftPropAt_chart
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropOn_chart /-
theorem liftPropOn_chart [HasGroupoid M G] (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y) :
LiftPropOn Q (chartAt H x) (chartAt H x).source :=
hG.liftPropOn_of_mem_maximalAtlas hQ (chart_mem_maximalAtlas G x)
#align structure_groupoid.local_invariant_prop.lift_prop_on_chart StructureGroupoid.LocalInvariantProp.liftPropOn_chart
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropAt_chart_symm /-
theorem liftPropAt_chart_symm [HasGroupoid M G] (hG : G.LocalInvariantProp G Q)
(hQ : ∀ y, Q id univ y) : LiftPropAt Q (chartAt H x).symm ((chartAt H x) x) :=
hG.liftPropAt_symm_of_mem_maximalAtlas hQ (chart_mem_maximalAtlas G x) (by simp)
#align structure_groupoid.local_invariant_prop.lift_prop_at_chart_symm StructureGroupoid.LocalInvariantProp.liftPropAt_chart_symm
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropOn_chart_symm /-
theorem liftPropOn_chart_symm [HasGroupoid M G] (hG : G.LocalInvariantProp G Q)
(hQ : ∀ y, Q id univ y) : LiftPropOn Q (chartAt H x).symm (chartAt H x).target :=
hG.liftPropOn_symm_of_mem_maximalAtlas hQ (chart_mem_maximalAtlas G x)
#align structure_groupoid.local_invariant_prop.lift_prop_on_chart_symm StructureGroupoid.LocalInvariantProp.liftPropOn_chart_symm
+-/
#print StructureGroupoid.LocalInvariantProp.liftPropAt_of_mem_groupoid /-
theorem liftPropAt_of_mem_groupoid (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y)
@@ -604,12 +704,14 @@ theorem liftPropOn_of_mem_groupoid (hG : G.LocalInvariantProp G Q) (hQ : ∀ y,
#align structure_groupoid.local_invariant_prop.lift_prop_on_of_mem_groupoid StructureGroupoid.LocalInvariantProp.liftPropOn_of_mem_groupoid
-/
+#print StructureGroupoid.LocalInvariantProp.liftProp_id /-
theorem liftProp_id (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y) :
LiftProp Q (id : M → M) :=
by
simp_rw [lift_prop_iff, continuous_id, true_and_iff]
exact fun x => hG.congr' ((chart_at H x).eventually_right_inverse <| mem_chart_target H x) (hQ _)
#align structure_groupoid.local_invariant_prop.lift_prop_id StructureGroupoid.LocalInvariantProp.liftProp_id
+-/
end LocalInvariantProp
@@ -673,6 +775,7 @@ theorem isLocalStructomorphWithinAt_localInvariantProp [ClosedUnderRestriction G
#align structure_groupoid.is_local_structomorph_within_at_local_invariant_prop StructureGroupoid.isLocalStructomorphWithinAt_localInvariantProp
-/
+#print LocalHomeomorph.isLocalStructomorphWithinAt_iff /-
/-- A slight reformulation of `is_local_structomorph_within_at` when `f` is a local homeomorph.
This gives us an `e` that is defined on a subset of `f.source`. -/
theorem LocalHomeomorph.isLocalStructomorphWithinAt_iff {G : StructureGroupoid H}
@@ -693,7 +796,9 @@ theorem LocalHomeomorph.isLocalStructomorphWithinAt_iff {G : StructureGroupoid H
· rw [f.open_source.interior_eq]; exact Or.resolve_right hx (not_not.mpr h2x)
· intro hf hx; obtain ⟨e, he, h2e, hfe, hxe⟩ := hf hx; exact ⟨e, he, hfe, hxe⟩
#align local_homeomorph.is_local_structomorph_within_at_iff LocalHomeomorph.isLocalStructomorphWithinAt_iff
+-/
+#print LocalHomeomorph.isLocalStructomorphWithinAt_iff' /-
/-- A slight reformulation of `is_local_structomorph_within_at` when `f` is a local homeomorph and
the set we're considering is a superset of `f.source`. -/
theorem LocalHomeomorph.isLocalStructomorphWithinAt_iff' {G : StructureGroupoid H}
@@ -709,6 +814,7 @@ theorem LocalHomeomorph.isLocalStructomorphWithinAt_iff' {G : StructureGroupoid
refine' and_congr_right fun h2e => _
rw [inter_eq_right_iff_subset.mpr (h2e.trans hs)]
#align local_homeomorph.is_local_structomorph_within_at_iff' LocalHomeomorph.isLocalStructomorphWithinAt_iff'
+-/
#print LocalHomeomorph.isLocalStructomorphWithinAt_source_iff /-
/-- A slight reformulation of `is_local_structomorph_within_at` when `f` is a local homeomorph and
@@ -730,6 +836,7 @@ variable {H₁ : Type _} [TopologicalSpace H₁] {H₂ : Type _} [TopologicalSpa
variable (G₂)
+#print StructureGroupoid.HasGroupoid.comp /-
theorem HasGroupoid.comp
(H : ∀ e ∈ G₂, LiftPropOn (IsLocalStructomorphWithinAt G₁) (e : H₂ → H₂) e.source) :
@HasGroupoid H₁ _ H₃ _ (ChartedSpace.comp H₁ H₂ H₃) G₁ :=
@@ -757,6 +864,7 @@ theorem HasGroupoid.comp
refine' (hφ.mono _).restr_eqOn_source
mfld_set_tac }
#align structure_groupoid.has_groupoid.comp StructureGroupoid.HasGroupoid.comp
+-/
end LocalStructomorph
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -398,7 +398,7 @@ theorem liftPropOn_indep_chart [HasGroupoid M G] [HasGroupoid M' G'] (he : e ∈
(hf : f ∈ G'.maximalAtlas M') (h : LiftPropOn P g s) {y : H}
(hy : y ∈ e.target ∩ e.symm ⁻¹' (s ∩ g ⁻¹' f.source)) : P (f ∘ g ∘ e.symm) (e.symm ⁻¹' s) y :=
by
- convert((hG.lift_prop_within_at_indep_chart he (e.symm_maps_to hy.1) hf hy.2.2).1 (h _ hy.2.1)).2
+ convert ((hG.lift_prop_within_at_indep_chart he (e.symm_maps_to hy.1) hf hy.2.2).1 (h _ hy.2.1)).2
rw [e.right_inv hy.1]
#align structure_groupoid.local_invariant_prop.lift_prop_on_indep_chart StructureGroupoid.LocalInvariantProp.liftPropOn_indep_chart
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -98,7 +98,7 @@ namespace LocalInvariantProp
theorem congr_set {s t : Set H} {x : H} {f : H → H'} (hu : s =ᶠ[𝓝 x] t) : P f s x ↔ P f t x :=
by
obtain ⟨o, host, ho, hxo⟩ := mem_nhds_iff.mp hu.mem_iff
- simp_rw [subset_def, mem_set_of, ← and_congr_left_iff, ← mem_inter_iff, ← Set.ext_iff] at host
+ simp_rw [subset_def, mem_set_of, ← and_congr_left_iff, ← mem_inter_iff, ← Set.ext_iff] at host
rw [hG.is_local ho hxo, host, ← hG.is_local ho hxo]
#align structure_groupoid.local_invariant_prop.congr_set StructureGroupoid.LocalInvariantProp.congr_set
-/
@@ -148,9 +148,9 @@ theorem left_invariance {s : Set H} {x : H} {f : H → H'} {e' : LocalHomeomorph
e'.symm.open_source.mem_nhds <| e'.maps_to hxe'
constructor
· intro h
- rw [hG.is_local_nhds h3f] at h
+ rw [hG.is_local_nhds h3f] at h
have h2 := hG.left_invariance' (G'.symm he') (inter_subset_right _ _) (e'.maps_to hxe') h
- rw [← hG.is_local_nhds h3f] at h2
+ rw [← hG.is_local_nhds h3f] at h2
refine' hG.congr_nhds_within _ (e'.left_inv hxe') h2
exact eventually_of_mem h2f fun x' => e'.left_inv
· simp_rw [hG.is_local_nhds h2f]
@@ -162,7 +162,7 @@ theorem right_invariance {s : Set H} {x : H} {f : H → H'} {e : LocalHomeomorph
by
refine' ⟨fun h => _, hG.right_invariance' he hxe⟩
have := hG.right_invariance' (G.symm he) (e.maps_to hxe) h
- rw [e.symm_symm, e.left_inv hxe] at this
+ rw [e.symm_symm, e.left_inv hxe] at this
refine' hG.congr _ ((hG.congr_set _).mp this)
· refine' eventually_of_mem (e.open_source.mem_nhds hxe) fun x' hx' => _
simp_rw [Function.comp_apply, e.left_inv hx']
@@ -321,7 +321,7 @@ theorem liftPropWithinAt_indep_chart_target_aux {g : X → M'} {e : LocalHomeomo
(hf' : f' ∈ G'.maximalAtlas M') (xf' : g x ∈ f'.source) (hgs : ContinuousWithinAt g s x) :
P (f ∘ g ∘ e.symm) (e.symm ⁻¹' s) (e x) ↔ P (f' ∘ g ∘ e.symm) (e.symm ⁻¹' s) (e x) :=
by
- rw [← e.left_inv xe] at xf xf' hgs
+ rw [← e.left_inv xe] at xf xf' hgs
refine' hG.lift_prop_within_at_indep_chart_target_aux2 (g ∘ e.symm) hf xf hf' xf' _
exact hgs.comp (e.symm.continuous_at <| e.maps_to xe).ContinuousWithinAt subset.rfl
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target_aux StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target_aux
@@ -356,7 +356,7 @@ theorem liftPropWithinAt_indep_chart_source [HasGroupoid M G] (he : e ∈ G.maxi
LiftPropWithinAt P g s x ↔ LiftPropWithinAt P (g ∘ e.symm) (e.symm ⁻¹' s) (e x) :=
by
have := e.symm.continuous_within_at_iff_continuous_within_at_comp_right xe
- rw [e.symm_symm] at this
+ rw [e.symm_symm] at this
rw [lift_prop_within_at_self_source, lift_prop_within_at, ← this]
simp_rw [Function.comp_apply, e.left_inv xe]
refine' and_congr Iff.rfl _
@@ -417,7 +417,7 @@ theorem liftPropWithinAt_inter (ht : t ∈ 𝓝 x) :
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_inter StructureGroupoid.LocalInvariantProp.liftPropWithinAt_inter
theorem liftPropAt_of_liftPropWithinAt (h : LiftPropWithinAt P g s x) (hs : s ∈ 𝓝 x) :
- LiftPropAt P g x := by rwa [← univ_inter s, hG.lift_prop_within_at_inter hs] at h
+ LiftPropAt P g x := by rwa [← univ_inter s, hG.lift_prop_within_at_inter hs] at h
#align structure_groupoid.local_invariant_prop.lift_prop_at_of_lift_prop_within_at StructureGroupoid.LocalInvariantProp.liftPropAt_of_liftPropWithinAt
theorem liftPropWithinAt_of_liftPropAt_of_mem_nhds (h : LiftPropAt P g x) (hs : s ∈ 𝓝 x) :
@@ -430,7 +430,7 @@ theorem liftPropOn_of_locally_liftPropOn
intro x hx
rcases h x hx with ⟨u, u_open, xu, hu⟩
have := hu x ⟨hx, xu⟩
- rwa [hG.lift_prop_within_at_inter] at this
+ rwa [hG.lift_prop_within_at_inter] at this
exact IsOpen.mem_nhds u_open xu
#align structure_groupoid.local_invariant_prop.lift_prop_on_of_locally_lift_prop_on StructureGroupoid.LocalInvariantProp.liftPropOn_of_locally_liftPropOn
@@ -504,14 +504,14 @@ theorem liftPropWithinAt_mono (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆
by
refine' ⟨h.1.mono hts, _⟩
apply mono (fun y hy => _) h.2
- simp only [mfld_simps] at hy
+ simp only [mfld_simps] at hy
simp only [hy, hts _, mfld_simps]
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_mono StructureGroupoid.LocalInvariantProp.liftPropWithinAt_mono
theorem liftPropWithinAt_of_liftPropAt (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆ s → P f s x → P f t x)
(h : LiftPropAt P g x) : LiftPropWithinAt P g s x :=
by
- rw [← lift_prop_within_at_univ] at h
+ rw [← lift_prop_within_at_univ] at h
exact lift_prop_within_at_mono mono h (subset_univ _)
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_of_lift_prop_at StructureGroupoid.LocalInvariantProp.liftPropWithinAt_of_liftPropAt
@@ -523,7 +523,7 @@ theorem liftPropOn_mono (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆ s →
theorem liftPropOn_of_liftProp (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆ s → P f s x → P f t x)
(h : LiftProp P g) : LiftPropOn P g s :=
by
- rw [← lift_prop_on_univ] at h
+ rw [← lift_prop_on_univ] at h
exact lift_prop_on_mono mono h (subset_univ _)
#align structure_groupoid.local_invariant_prop.lift_prop_on_of_lift_prop StructureGroupoid.LocalInvariantProp.liftPropOn_of_liftProp
@@ -653,7 +653,7 @@ theorem isLocalStructomorphWithinAt_localInvariantProp [ClosedUnderRestriction G
rcases h hxs with ⟨e, heG, hef, hex⟩
refine' ⟨e'.symm.trans e, G.trans (G.symm he'G) heG, _, _⟩
· intro y hy
- simp only [mfld_simps] at hy
+ simp only [mfld_simps] at hy
simp only [hef ⟨hy.1, hy.2.2⟩, mfld_simps]
· simp only [hex, he'x, mfld_simps]
congr_of_forall := by
@@ -667,7 +667,7 @@ theorem isLocalStructomorphWithinAt_localInvariantProp [ClosedUnderRestriction G
rcases h hx with ⟨e, heG, hef, hex⟩
refine' ⟨e.trans e', G.trans heG he'G, _, _⟩
· intro y hy
- simp only [mfld_simps] at hy
+ simp only [mfld_simps] at hy
simp only [hef ⟨hy.1, hy.2.1⟩, mfld_simps]
· simpa only [hex, hef ⟨hx, hex⟩, mfld_simps] using hfx }
#align structure_groupoid.is_local_structomorph_within_at_local_invariant_prop StructureGroupoid.isLocalStructomorphWithinAt_localInvariantProp
@@ -738,7 +738,7 @@ theorem HasGroupoid.comp
rintro _ _ ⟨e, f, he, hf, rfl⟩ ⟨e', f', he', hf', rfl⟩
apply G₁.locality
intro x hx
- simp only [mfld_simps] at hx
+ simp only [mfld_simps] at hx
have hxs : x ∈ f.symm ⁻¹' (e.symm ≫ₕ e').source := by simp only [hx, mfld_simps]
have hxs' : x ∈ f.target ∩ f.symm ⁻¹' ((e.symm ≫ₕ e').source ∩ e.symm ≫ₕ e' ⁻¹' f'.source) :=
by simp only [hx, mfld_simps]
@@ -746,7 +746,7 @@ theorem HasGroupoid.comp
local_invariant_prop.lift_prop_on_indep_chart
(is_local_structomorph_within_at_local_invariant_prop G₁) (G₁.subset_maximal_atlas hf)
(G₁.subset_maximal_atlas hf') (H _ (G₂.compatible he he')) hxs' hxs
- simp_rw [← LocalHomeomorph.coe_trans, LocalHomeomorph.trans_assoc] at hφ
+ simp_rw [← LocalHomeomorph.coe_trans, LocalHomeomorph.trans_assoc] at hφ
simp_rw [LocalHomeomorph.trans_symm_eq_symm_trans_symm, LocalHomeomorph.trans_assoc]
have hs : IsOpen (f.symm ≫ₕ e.symm ≫ₕ e' ≫ₕ f').source :=
(f.symm ≫ₕ e.symm ≫ₕ e' ≫ₕ f').open_source
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -53,7 +53,7 @@ in the one for `lift_prop_within_at`.
noncomputable section
-open Classical Manifold Topology
+open scoped Classical Manifold Topology
open Set Filter
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -103,23 +103,11 @@ theorem congr_set {s t : Set H} {x : H} {f : H → H'} (hu : s =ᶠ[𝓝 x] t) :
#align structure_groupoid.local_invariant_prop.congr_set StructureGroupoid.LocalInvariantProp.congr_set
-/
-/- warning: structure_groupoid.local_invariant_prop.is_local_nhds -> StructureGroupoid.LocalInvariantProp.is_local_nhds is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {H' : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u1, u2} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u1} H} {u : Set.{u1} H} {x : H} {f : H -> H'}, (Membership.Mem.{u1, u1} (Set.{u1} H) (Filter.{u1} H) (Filter.hasMem.{u1} H) u (nhdsWithin.{u1} H _inst_1 x s)) -> (Iff (P f s x) (P f (Inter.inter.{u1} (Set.{u1} H) (Set.hasInter.{u1} H) s u) x)))
-but is expected to have type
- forall {H : Type.{u1}} {H' : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u1, u2} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u1} H} {u : Set.{u1} H} {x : H} {f : H -> H'}, (Membership.mem.{u1, u1} (Set.{u1} H) (Filter.{u1} H) (instMembershipSetFilter.{u1} H) u (nhdsWithin.{u1} H _inst_1 x s)) -> (Iff (P f s x) (P f (Inter.inter.{u1} (Set.{u1} H) (Set.instInterSet.{u1} H) s u) x)))
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.is_local_nhds StructureGroupoid.LocalInvariantProp.is_local_nhdsₓ'. -/
theorem is_local_nhds {s u : Set H} {x : H} {f : H → H'} (hu : u ∈ 𝓝[s] x) :
P f s x ↔ P f (s ∩ u) x :=
hG.congr_set <| mem_nhdsWithin_iff_eventuallyEq.mp hu
#align structure_groupoid.local_invariant_prop.is_local_nhds StructureGroupoid.LocalInvariantProp.is_local_nhds
-/- warning: structure_groupoid.local_invariant_prop.congr_iff_nhds_within -> StructureGroupoid.LocalInvariantProp.congr_iff_nhdsWithin is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {H' : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u1, u2} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u1} H} {x : H} {f : H -> H'} {g : H -> H'}, (Filter.EventuallyEq.{u1, u2} H H' (nhdsWithin.{u1} H _inst_1 x s) f g) -> (Eq.{succ u2} H' (f x) (g x)) -> (Iff (P f s x) (P g s x)))
-but is expected to have type
- forall {H : Type.{u2}} {H' : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_4 : TopologicalSpace.{u1} H'] {G : StructureGroupoid.{u2} H _inst_1} {G' : StructureGroupoid.{u1} H' _inst_4} {P : (H -> H') -> (Set.{u2} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u2, u1} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u2} H} {x : H} {f : H -> H'} {g : H -> H'}, (Filter.EventuallyEq.{u2, u1} H H' (nhdsWithin.{u2} H _inst_1 x s) f g) -> (Eq.{succ u1} H' (f x) (g x)) -> (Iff (P f s x) (P g s x)))
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.congr_iff_nhds_within StructureGroupoid.LocalInvariantProp.congr_iff_nhdsWithinₓ'. -/
theorem congr_iff_nhdsWithin {s : Set H} {x : H} {f g : H → H'} (h1 : f =ᶠ[𝓝[s] x] g)
(h2 : f x = g x) : P f s x ↔ P g s x :=
by
@@ -128,64 +116,28 @@ theorem congr_iff_nhdsWithin {s : Set H} {x : H} {f g : H → H'} (h1 : f =ᶠ[
⟨hG.congr_of_forall (fun y hy => hy.2) h2, hG.congr_of_forall (fun y hy => hy.2.symm) h2.symm⟩
#align structure_groupoid.local_invariant_prop.congr_iff_nhds_within StructureGroupoid.LocalInvariantProp.congr_iff_nhdsWithin
-/- warning: structure_groupoid.local_invariant_prop.congr_nhds_within -> StructureGroupoid.LocalInvariantProp.congr_nhdsWithin is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {H' : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u1, u2} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u1} H} {x : H} {f : H -> H'} {g : H -> H'}, (Filter.EventuallyEq.{u1, u2} H H' (nhdsWithin.{u1} H _inst_1 x s) f g) -> (Eq.{succ u2} H' (f x) (g x)) -> (P f s x) -> (P g s x))
-but is expected to have type
- forall {H : Type.{u2}} {H' : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_4 : TopologicalSpace.{u1} H'] {G : StructureGroupoid.{u2} H _inst_1} {G' : StructureGroupoid.{u1} H' _inst_4} {P : (H -> H') -> (Set.{u2} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u2, u1} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u2} H} {x : H} {f : H -> H'} {g : H -> H'}, (Filter.EventuallyEq.{u2, u1} H H' (nhdsWithin.{u2} H _inst_1 x s) f g) -> (Eq.{succ u1} H' (f x) (g x)) -> (P f s x) -> (P g s x))
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.congr_nhds_within StructureGroupoid.LocalInvariantProp.congr_nhdsWithinₓ'. -/
theorem congr_nhdsWithin {s : Set H} {x : H} {f g : H → H'} (h1 : f =ᶠ[𝓝[s] x] g) (h2 : f x = g x)
(hP : P f s x) : P g s x :=
(hG.congr_iff_nhdsWithin h1 h2).mp hP
#align structure_groupoid.local_invariant_prop.congr_nhds_within StructureGroupoid.LocalInvariantProp.congr_nhdsWithin
-/- warning: structure_groupoid.local_invariant_prop.congr_nhds_within' -> StructureGroupoid.LocalInvariantProp.congr_nhdsWithin' is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {H' : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u1, u2} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u1} H} {x : H} {f : H -> H'} {g : H -> H'}, (Filter.EventuallyEq.{u1, u2} H H' (nhdsWithin.{u1} H _inst_1 x s) f g) -> (Eq.{succ u2} H' (f x) (g x)) -> (P g s x) -> (P f s x))
-but is expected to have type
- forall {H : Type.{u2}} {H' : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_4 : TopologicalSpace.{u1} H'] {G : StructureGroupoid.{u2} H _inst_1} {G' : StructureGroupoid.{u1} H' _inst_4} {P : (H -> H') -> (Set.{u2} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u2, u1} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u2} H} {x : H} {f : H -> H'} {g : H -> H'}, (Filter.EventuallyEq.{u2, u1} H H' (nhdsWithin.{u2} H _inst_1 x s) f g) -> (Eq.{succ u1} H' (f x) (g x)) -> (P g s x) -> (P f s x))
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.congr_nhds_within' StructureGroupoid.LocalInvariantProp.congr_nhdsWithin'ₓ'. -/
theorem congr_nhdsWithin' {s : Set H} {x : H} {f g : H → H'} (h1 : f =ᶠ[𝓝[s] x] g) (h2 : f x = g x)
(hP : P g s x) : P f s x :=
(hG.congr_iff_nhdsWithin h1 h2).mpr hP
#align structure_groupoid.local_invariant_prop.congr_nhds_within' StructureGroupoid.LocalInvariantProp.congr_nhdsWithin'
-/- warning: structure_groupoid.local_invariant_prop.congr_iff -> StructureGroupoid.LocalInvariantProp.congr_iff is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {H' : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u1, u2} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u1} H} {x : H} {f : H -> H'} {g : H -> H'}, (Filter.EventuallyEq.{u1, u2} H H' (nhds.{u1} H _inst_1 x) f g) -> (Iff (P f s x) (P g s x)))
-but is expected to have type
- forall {H : Type.{u2}} {H' : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_4 : TopologicalSpace.{u1} H'] {G : StructureGroupoid.{u2} H _inst_1} {G' : StructureGroupoid.{u1} H' _inst_4} {P : (H -> H') -> (Set.{u2} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u2, u1} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u2} H} {x : H} {f : H -> H'} {g : H -> H'}, (Filter.EventuallyEq.{u2, u1} H H' (nhds.{u2} H _inst_1 x) f g) -> (Iff (P f s x) (P g s x)))
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.congr_iff StructureGroupoid.LocalInvariantProp.congr_iffₓ'. -/
theorem congr_iff {s : Set H} {x : H} {f g : H → H'} (h : f =ᶠ[𝓝 x] g) : P f s x ↔ P g s x :=
hG.congr_iff_nhdsWithin (mem_nhdsWithin_of_mem_nhds h) (mem_of_mem_nhds h : _)
#align structure_groupoid.local_invariant_prop.congr_iff StructureGroupoid.LocalInvariantProp.congr_iff
-/- warning: structure_groupoid.local_invariant_prop.congr -> StructureGroupoid.LocalInvariantProp.congr is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {H' : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u1, u2} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u1} H} {x : H} {f : H -> H'} {g : H -> H'}, (Filter.EventuallyEq.{u1, u2} H H' (nhds.{u1} H _inst_1 x) f g) -> (P f s x) -> (P g s x))
-but is expected to have type
- forall {H : Type.{u2}} {H' : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_4 : TopologicalSpace.{u1} H'] {G : StructureGroupoid.{u2} H _inst_1} {G' : StructureGroupoid.{u1} H' _inst_4} {P : (H -> H') -> (Set.{u2} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u2, u1} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u2} H} {x : H} {f : H -> H'} {g : H -> H'}, (Filter.EventuallyEq.{u2, u1} H H' (nhds.{u2} H _inst_1 x) f g) -> (P f s x) -> (P g s x))
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.congr StructureGroupoid.LocalInvariantProp.congrₓ'. -/
theorem congr {s : Set H} {x : H} {f g : H → H'} (h : f =ᶠ[𝓝 x] g) (hP : P f s x) : P g s x :=
(hG.congr_iff h).mp hP
#align structure_groupoid.local_invariant_prop.congr StructureGroupoid.LocalInvariantProp.congr
-/- warning: structure_groupoid.local_invariant_prop.congr' -> StructureGroupoid.LocalInvariantProp.congr' is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {H' : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u1, u2} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u1} H} {x : H} {f : H -> H'} {g : H -> H'}, (Filter.EventuallyEq.{u1, u2} H H' (nhds.{u1} H _inst_1 x) f g) -> (P g s x) -> (P f s x))
-but is expected to have type
- forall {H : Type.{u2}} {H' : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_4 : TopologicalSpace.{u1} H'] {G : StructureGroupoid.{u2} H _inst_1} {G' : StructureGroupoid.{u1} H' _inst_4} {P : (H -> H') -> (Set.{u2} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u2, u1} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u2} H} {x : H} {f : H -> H'} {g : H -> H'}, (Filter.EventuallyEq.{u2, u1} H H' (nhds.{u2} H _inst_1 x) f g) -> (P g s x) -> (P f s x))
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.congr' StructureGroupoid.LocalInvariantProp.congr'ₓ'. -/
theorem congr' {s : Set H} {x : H} {f g : H → H'} (h : f =ᶠ[𝓝 x] g) (hP : P g s x) : P f s x :=
hG.congr h.symm hP
#align structure_groupoid.local_invariant_prop.congr' StructureGroupoid.LocalInvariantProp.congr'
-/- warning: structure_groupoid.local_invariant_prop.left_invariance -> StructureGroupoid.LocalInvariantProp.left_invariance is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {H' : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u1, u2} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u1} H} {x : H} {f : H -> H'} {e' : LocalHomeomorph.{u2, u2} H' H' _inst_4 _inst_4}, (Membership.Mem.{u2, u2} (LocalHomeomorph.{u2, u2} H' H' _inst_4 _inst_4) (StructureGroupoid.{u2} H' _inst_4) (StructureGroupoid.hasMem.{u2} H' _inst_4) e' G') -> (ContinuousWithinAt.{u1, u2} H H' _inst_1 _inst_4 f s x) -> (Membership.Mem.{u2, u2} H' (Set.{u2} H') (Set.hasMem.{u2} H') (f x) (LocalEquiv.source.{u2, u2} H' H' (LocalHomeomorph.toLocalEquiv.{u2, u2} H' H' _inst_4 _inst_4 e'))) -> (Iff (P (Function.comp.{succ u1, succ u2, succ u2} H H' H' (coeFn.{succ u2, succ u2} (LocalHomeomorph.{u2, u2} H' H' _inst_4 _inst_4) (fun (_x : LocalHomeomorph.{u2, u2} H' H' _inst_4 _inst_4) => H' -> H') (LocalHomeomorph.hasCoeToFun.{u2, u2} H' H' _inst_4 _inst_4) e') f) s x) (P f s x)))
-but is expected to have type
- forall {H : Type.{u2}} {H' : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_4 : TopologicalSpace.{u1} H'] {G : StructureGroupoid.{u2} H _inst_1} {G' : StructureGroupoid.{u1} H' _inst_4} {P : (H -> H') -> (Set.{u2} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u2, u1} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u2} H} {x : H} {f : H -> H'} {e' : LocalHomeomorph.{u1, u1} H' H' _inst_4 _inst_4}, (Membership.mem.{u1, u1} (LocalHomeomorph.{u1, u1} H' H' _inst_4 _inst_4) (StructureGroupoid.{u1} H' _inst_4) (instMembershipLocalHomeomorphStructureGroupoid.{u1} H' _inst_4) e' G') -> (ContinuousWithinAt.{u2, u1} H H' _inst_1 _inst_4 f s x) -> (Membership.mem.{u1, u1} H' (Set.{u1} H') (Set.instMembershipSet.{u1} H') (f x) (LocalEquiv.source.{u1, u1} H' H' (LocalHomeomorph.toLocalEquiv.{u1, u1} H' H' _inst_4 _inst_4 e'))) -> (Iff (P (Function.comp.{succ u2, succ u1, succ u1} H H' H' (LocalHomeomorph.toFun'.{u1, u1} H' H' _inst_4 _inst_4 e') f) s x) (P f s x)))
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.left_invariance StructureGroupoid.LocalInvariantProp.left_invarianceₓ'. -/
theorem left_invariance {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 :=
@@ -205,12 +157,6 @@ theorem left_invariance {s : Set H} {x : H} {f : H → H'} {e' : LocalHomeomorph
exact hG.left_invariance' he' (inter_subset_right _ _) hxe'
#align structure_groupoid.local_invariant_prop.left_invariance StructureGroupoid.LocalInvariantProp.left_invariance
-/- warning: structure_groupoid.local_invariant_prop.right_invariance -> StructureGroupoid.LocalInvariantProp.right_invariance is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {H' : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u1, u2} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u1} H} {x : H} {f : H -> H'} {e : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1}, (Membership.Mem.{u1, u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (StructureGroupoid.{u1} H _inst_1) (StructureGroupoid.hasMem.{u1} H _inst_1) e G) -> (Membership.Mem.{u1, u1} H (Set.{u1} H) (Set.hasMem.{u1} H) x (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 e))) -> (Iff (P (Function.comp.{succ u1, succ u1, succ u2} H H H' f (coeFn.{succ u1, succ u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (fun (_x : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) => H -> H) (LocalHomeomorph.hasCoeToFun.{u1, u1} H H _inst_1 _inst_1) (LocalHomeomorph.symm.{u1, u1} H H _inst_1 _inst_1 e))) (Set.preimage.{u1, u1} H H (coeFn.{succ u1, succ u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (fun (_x : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) => H -> H) (LocalHomeomorph.hasCoeToFun.{u1, u1} H H _inst_1 _inst_1) (LocalHomeomorph.symm.{u1, u1} H H _inst_1 _inst_1 e)) s) (coeFn.{succ u1, succ u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (fun (_x : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) => H -> H) (LocalHomeomorph.hasCoeToFun.{u1, u1} H H _inst_1 _inst_1) e x)) (P f s x)))
-but is expected to have type
- forall {H : Type.{u2}} {H' : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_4 : TopologicalSpace.{u1} H'] {G : StructureGroupoid.{u2} H _inst_1} {G' : StructureGroupoid.{u1} H' _inst_4} {P : (H -> H') -> (Set.{u2} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u2, u1} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u2} H} {x : H} {f : H -> H'} {e : LocalHomeomorph.{u2, u2} H H _inst_1 _inst_1}, (Membership.mem.{u2, u2} (LocalHomeomorph.{u2, u2} H H _inst_1 _inst_1) (StructureGroupoid.{u2} H _inst_1) (instMembershipLocalHomeomorphStructureGroupoid.{u2} H _inst_1) e G) -> (Membership.mem.{u2, u2} H (Set.{u2} H) (Set.instMembershipSet.{u2} H) x (LocalEquiv.source.{u2, u2} H H (LocalHomeomorph.toLocalEquiv.{u2, u2} H H _inst_1 _inst_1 e))) -> (Iff (P (Function.comp.{succ u2, succ u2, succ u1} H H H' f (LocalHomeomorph.toFun'.{u2, u2} H H _inst_1 _inst_1 (LocalHomeomorph.symm.{u2, u2} H H _inst_1 _inst_1 e))) (Set.preimage.{u2, u2} H H (LocalHomeomorph.toFun'.{u2, u2} H H _inst_1 _inst_1 (LocalHomeomorph.symm.{u2, u2} H H _inst_1 _inst_1 e)) s) (LocalHomeomorph.toFun'.{u2, u2} H H _inst_1 _inst_1 e x)) (P f s x)))
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.right_invariance StructureGroupoid.LocalInvariantProp.right_invarianceₓ'. -/
theorem right_invariance {s : Set H} {x : H} {f : H → H'} {e : LocalHomeomorph H H} (he : e ∈ G)
(hxe : x ∈ e.source) : P (f ∘ e.symm) (e.symm ⁻¹' s) (e x) ↔ P f s x :=
by
@@ -262,12 +208,6 @@ def LiftPropAt (P : (H → H') → Set H → H → Prop) (f : M → M') (x : M)
#align charted_space.lift_prop_at ChartedSpace.LiftPropAt
-/
-/- warning: charted_space.lift_prop_at_iff -> ChartedSpace.liftPropAt_iff is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {f : M -> M'} {x : M}, Iff (ChartedSpace.LiftPropAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P f x) (And (ContinuousAt.{u2, u4} M M' _inst_2 _inst_5 f x) (P (Function.comp.{succ u1, succ u4, succ u3} H M' H' (coeFn.{max (succ u4) (succ u3), max (succ u4) (succ u3)} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u4, u3} M' H' _inst_5 _inst_4) (ChartedSpace.chartAt.{u3, u4} H' _inst_4 M' _inst_5 _inst_6 (f x))) (Function.comp.{succ u1, succ u2, succ u4} H M M' f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x))))) (Set.univ.{u1} H) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x) x)))
-but is expected to have type
- forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {f : M -> M'} {x : M}, Iff (ChartedSpace.LiftPropAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P f x) (And (ContinuousAt.{u3, u1} M M' _inst_2 _inst_5 f x) (P (Function.comp.{succ u4, succ u1, succ u2} H M' H' (LocalHomeomorph.toFun'.{u1, u2} M' H' _inst_5 _inst_4 (ChartedSpace.chartAt.{u2, u1} H' _inst_4 M' _inst_5 _inst_6 (f x))) (Function.comp.{succ u4, succ u3, succ u1} H M M' f (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u4, u3} H _inst_1 M _inst_2 _inst_3 x))))) (Set.univ.{u4} H) (LocalHomeomorph.toFun'.{u3, u4} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u4, u3} H _inst_1 M _inst_2 _inst_3 x) x)))
-Case conversion may be inaccurate. Consider using '#align charted_space.lift_prop_at_iff ChartedSpace.liftPropAt_iffₓ'. -/
theorem liftPropAt_iff {P : (H → H') → Set H → H → Prop} {f : M → M'} {x : M} :
LiftPropAt P f x ↔
ContinuousAt f x ∧ P (chartAt H' (f x) ∘ f ∘ (chartAt H x).symm) univ (chartAt H x x) :=
@@ -283,12 +223,6 @@ def LiftProp (P : (H → H') → Set H → H → Prop) (f : M → M') :=
#align charted_space.lift_prop ChartedSpace.LiftProp
-/
-/- warning: charted_space.lift_prop_iff -> ChartedSpace.liftProp_iff is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {f : M -> M'}, Iff (ChartedSpace.LiftProp.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P f) (And (Continuous.{u2, u4} M M' _inst_2 _inst_5 f) (forall (x : M), P (Function.comp.{succ u1, succ u4, succ u3} H M' H' (coeFn.{max (succ u4) (succ u3), max (succ u4) (succ u3)} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u4, u3} M' H' _inst_5 _inst_4) (ChartedSpace.chartAt.{u3, u4} H' _inst_4 M' _inst_5 _inst_6 (f x))) (Function.comp.{succ u1, succ u2, succ u4} H M M' f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x))))) (Set.univ.{u1} H) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x) x)))
-but is expected to have type
- forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {f : M -> M'}, Iff (ChartedSpace.LiftProp.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P f) (And (Continuous.{u3, u1} M M' _inst_2 _inst_5 f) (forall (x : M), P (Function.comp.{succ u4, succ u1, succ u2} H M' H' (LocalHomeomorph.toFun'.{u1, u2} M' H' _inst_5 _inst_4 (ChartedSpace.chartAt.{u2, u1} H' _inst_4 M' _inst_5 _inst_6 (f x))) (Function.comp.{succ u4, succ u3, succ u1} H M M' f (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u4, u3} H _inst_1 M _inst_2 _inst_3 x))))) (Set.univ.{u4} H) (LocalHomeomorph.toFun'.{u3, u4} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u4, u3} H _inst_1 M _inst_2 _inst_3 x) x)))
-Case conversion may be inaccurate. Consider using '#align charted_space.lift_prop_iff ChartedSpace.liftProp_iffₓ'. -/
theorem liftProp_iff {P : (H → H') → Set H → H → Prop} {f : M → M'} :
LiftProp P f ↔
Continuous f ∧ ∀ x, P (chartAt H' (f x) ∘ f ∘ (chartAt H x).symm) univ (chartAt H x x) :=
@@ -305,54 +239,24 @@ variable {G : StructureGroupoid H} {G' : StructureGroupoid H'} {e e' : LocalHome
{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}
-/- warning: structure_groupoid.lift_prop_within_at_univ -> StructureGroupoid.liftPropWithinAt_univ is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {x : M}, Iff (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g (Set.univ.{u2} M) x) (ChartedSpace.LiftPropAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g x)
-but is expected to have type
- forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {x : M}, Iff (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g (Set.univ.{u3} M) x) (ChartedSpace.LiftPropAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g x)
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.lift_prop_within_at_univ StructureGroupoid.liftPropWithinAt_univₓ'. -/
theorem liftPropWithinAt_univ : LiftPropWithinAt P g univ x ↔ LiftPropAt P g x :=
Iff.rfl
#align structure_groupoid.lift_prop_within_at_univ StructureGroupoid.liftPropWithinAt_univ
-/- warning: structure_groupoid.lift_prop_on_univ -> StructureGroupoid.liftPropOn_univ is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'}, Iff (ChartedSpace.LiftPropOn.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g (Set.univ.{u2} M)) (ChartedSpace.LiftProp.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g)
-but is expected to have type
- forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'}, Iff (ChartedSpace.LiftPropOn.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g (Set.univ.{u3} M)) (ChartedSpace.LiftProp.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g)
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.lift_prop_on_univ StructureGroupoid.liftPropOn_univₓ'. -/
theorem liftPropOn_univ : LiftPropOn P g univ ↔ LiftProp P g := by
simp [lift_prop_on, lift_prop, lift_prop_at]
#align structure_groupoid.lift_prop_on_univ StructureGroupoid.liftPropOn_univ
-/- warning: structure_groupoid.lift_prop_within_at_self -> StructureGroupoid.liftPropWithinAt_self is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {H' : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {f : H -> H'} {s : Set.{u1} H} {x : H}, Iff (ChartedSpace.LiftPropWithinAt.{u1, u1, u2, u2} H H H' H' _inst_1 _inst_1 (chartedSpaceSelf.{u1} H _inst_1) _inst_4 _inst_4 (chartedSpaceSelf.{u2} H' _inst_4) P f s x) (And (ContinuousWithinAt.{u1, u2} H H' _inst_1 _inst_4 f s x) (P f s x))
-but is expected to have type
- forall {H : Type.{u2}} {H' : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_4 : TopologicalSpace.{u1} H'] {P : (H -> H') -> (Set.{u2} H) -> H -> Prop} {f : H -> H'} {s : Set.{u2} H} {x : H}, Iff (ChartedSpace.LiftPropWithinAt.{u2, u2, u1, u1} H H H' H' _inst_1 _inst_1 (chartedSpaceSelf.{u2} H _inst_1) _inst_4 _inst_4 (chartedSpaceSelf.{u1} H' _inst_4) P f s x) (And (ContinuousWithinAt.{u2, u1} H H' _inst_1 _inst_4 f s x) (P f s x))
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.lift_prop_within_at_self StructureGroupoid.liftPropWithinAt_selfₓ'. -/
theorem liftPropWithinAt_self {f : H → H'} {s : Set H} {x : H} :
LiftPropWithinAt P f s x ↔ ContinuousWithinAt f s x ∧ P f s x :=
Iff.rfl
#align structure_groupoid.lift_prop_within_at_self StructureGroupoid.liftPropWithinAt_self
-/- warning: structure_groupoid.lift_prop_within_at_self_source -> StructureGroupoid.liftPropWithinAt_self_source is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {H' : Type.{u2}} {M' : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u3} M'] [_inst_6 : ChartedSpace.{u2, u3} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {f : H -> M'} {s : Set.{u1} H} {x : H}, Iff (ChartedSpace.LiftPropWithinAt.{u1, u1, u2, u3} H H H' M' _inst_1 _inst_1 (chartedSpaceSelf.{u1} H _inst_1) _inst_4 _inst_5 _inst_6 P f s x) (And (ContinuousWithinAt.{u1, u3} H M' _inst_1 _inst_5 f s x) (P (Function.comp.{succ u1, succ u3, succ u2} H M' H' (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u3, u2} M' H' _inst_5 _inst_4) (ChartedSpace.chartAt.{u2, u3} H' _inst_4 M' _inst_5 _inst_6 (f x))) f) s x))
-but is expected to have type
- forall {H : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} H] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u3} H) -> H -> Prop} {f : H -> M'} {s : Set.{u3} H} {x : H}, Iff (ChartedSpace.LiftPropWithinAt.{u3, u3, u2, u1} H H H' M' _inst_1 _inst_1 (chartedSpaceSelf.{u3} H _inst_1) _inst_4 _inst_5 _inst_6 P f s x) (And (ContinuousWithinAt.{u3, u1} H M' _inst_1 _inst_5 f s x) (P (Function.comp.{succ u3, succ u1, succ u2} H M' H' (LocalHomeomorph.toFun'.{u1, u2} M' H' _inst_5 _inst_4 (ChartedSpace.chartAt.{u2, u1} H' _inst_4 M' _inst_5 _inst_6 (f x))) f) s x))
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.lift_prop_within_at_self_source StructureGroupoid.liftPropWithinAt_self_sourceₓ'. -/
theorem liftPropWithinAt_self_source {f : H → M'} {s : Set H} {x : H} :
LiftPropWithinAt P f s x ↔ ContinuousWithinAt f s x ∧ P (chartAt H' (f x) ∘ f) s x :=
Iff.rfl
#align structure_groupoid.lift_prop_within_at_self_source StructureGroupoid.liftPropWithinAt_self_source
-/- warning: structure_groupoid.lift_prop_within_at_self_target -> StructureGroupoid.liftPropWithinAt_self_target is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {s : Set.{u2} M} {x : M} {f : M -> H'}, Iff (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u3} H M H' H' _inst_1 _inst_2 _inst_3 _inst_4 _inst_4 (chartedSpaceSelf.{u3} H' _inst_4) P f s x) (And (ContinuousWithinAt.{u2, u3} M H' _inst_2 _inst_4 f s x) (P (Function.comp.{succ u1, succ u2, succ u3} H M H' f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x)))) (Set.preimage.{u1, u2} H M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x))) s) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x) x)))
-but is expected to have type
- forall {H : Type.{u3}} {M : Type.{u2}} {H' : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u3, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u1} H'] {P : (H -> H') -> (Set.{u3} H) -> H -> Prop} {s : Set.{u2} M} {x : M} {f : M -> H'}, Iff (ChartedSpace.LiftPropWithinAt.{u3, u2, u1, u1} H M H' H' _inst_1 _inst_2 _inst_3 _inst_4 _inst_4 (chartedSpaceSelf.{u1} H' _inst_4) P f s x) (And (ContinuousWithinAt.{u2, u1} M H' _inst_2 _inst_4 f s x) (P (Function.comp.{succ u3, succ u2, succ u1} H M H' f (LocalHomeomorph.toFun'.{u3, u2} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u2, u3} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u3, u2} H _inst_1 M _inst_2 _inst_3 x)))) (Set.preimage.{u3, u2} H M (LocalHomeomorph.toFun'.{u3, u2} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u2, u3} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u3, u2} H _inst_1 M _inst_2 _inst_3 x))) s) (LocalHomeomorph.toFun'.{u2, u3} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u3, u2} H _inst_1 M _inst_2 _inst_3 x) x)))
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.lift_prop_within_at_self_target StructureGroupoid.liftPropWithinAt_self_targetₓ'. -/
theorem liftPropWithinAt_self_target {f : M → H'} :
LiftPropWithinAt P f s x ↔
ContinuousWithinAt f s x ∧
@@ -366,9 +270,6 @@ variable (hG : G.LocalInvariantProp G' P)
include hG
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_iff -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_iff is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_iff StructureGroupoid.LocalInvariantProp.liftPropWithinAt_iffₓ'. -/
/-- `lift_prop_within_at P f s x` is equivalent to a definition where we restrict the set we are
considering to the domain of the charts at `x` and `f x`. -/
theorem liftPropWithinAt_iff {f : M → M'} :
@@ -384,9 +285,6 @@ theorem liftPropWithinAt_iff {f : M → M'} :
(chart_source_mem_nhds H' (f x))
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_iff StructureGroupoid.LocalInvariantProp.liftPropWithinAt_iff
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_source_aux -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_source_aux is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_source_aux StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_source_auxₓ'. -/
theorem liftPropWithinAt_indep_chart_source_aux (g : M → H') (he : e ∈ G.maximalAtlas M)
(xe : x ∈ e.source) (he' : e' ∈ G.maximalAtlas M) (xe' : x ∈ e'.source) :
P (g ∘ e.symm) (e.symm ⁻¹' s) (e x) ↔ P (g ∘ e'.symm) (e'.symm ⁻¹' s) (e' x) :=
@@ -406,9 +304,6 @@ theorem liftPropWithinAt_indep_chart_source_aux (g : M → H') (he : e ∈ G.max
rw [hy]
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_source_aux StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_source_aux
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target_aux2 -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target_aux2 is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target_aux2 StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target_aux2ₓ'. -/
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 :=
@@ -421,9 +316,6 @@ theorem liftPropWithinAt_indep_chart_target_aux2 (g : H → M') {x : H} {s : Set
exact (hgs.eventually <| f.eventually_left_inverse xf).mono fun y => congr_arg f'
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target_aux2 StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target_aux2
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target_aux -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target_aux is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target_aux StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target_auxₓ'. -/
theorem liftPropWithinAt_indep_chart_target_aux {g : X → M'} {e : LocalHomeomorph X H} {x : X}
{s : Set X} (xe : x ∈ e.source) (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) :
@@ -434,9 +326,6 @@ theorem liftPropWithinAt_indep_chart_target_aux {g : X → M'} {e : LocalHomeomo
exact hgs.comp (e.symm.continuous_at <| e.maps_to xe).ContinuousWithinAt subset.rfl
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target_aux StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target_aux
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_aux -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_aux is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_aux StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_auxₓ'. -/
/-- If a property of a germ of function `g` on a pointed set `(s, x)` is invariant under the
structure groupoid (by composition in the source space and in the target space), then
expressing it in charted spaces does not depend on the element of the maximal atlas one uses
@@ -452,9 +341,6 @@ theorem liftPropWithinAt_indep_chart_aux (he : e ∈ G.maximalAtlas M) (xe : x
hG.lift_prop_within_at_indep_chart_target_aux xe' hf xf hf' xf' hgs]
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_aux StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_aux
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chartₓ'. -/
theorem liftPropWithinAt_indep_chart [HasGroupoid M G] [HasGroupoid M' G']
(he : e ∈ G.maximalAtlas M) (xe : x ∈ e.source) (hf : f ∈ G'.maximalAtlas M')
(xf : g x ∈ f.source) :
@@ -464,9 +350,6 @@ theorem liftPropWithinAt_indep_chart [HasGroupoid M G] [HasGroupoid M' G']
(chart_mem_maximalAtlas _ _) (mem_chart_source _ _) hf xf
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_source -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_source is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_source StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_sourceₓ'. -/
/-- A version of `lift_prop_within_at_indep_chart`, only for the source. -/
theorem liftPropWithinAt_indep_chart_source [HasGroupoid M G] (he : e ∈ G.maximalAtlas M)
(xe : x ∈ e.source) :
@@ -481,9 +364,6 @@ theorem liftPropWithinAt_indep_chart_source [HasGroupoid M G] (he : e ∈ G.maxi
(chart_mem_maximal_atlas G x) (mem_chart_source H x) he xe]
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_source StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_source
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_targetₓ'. -/
/-- A version of `lift_prop_within_at_indep_chart`, only for the target. -/
theorem liftPropWithinAt_indep_chart_target [HasGroupoid M' G'] (hf : f ∈ G'.maximalAtlas M')
(xf : g x ∈ f.source) :
@@ -497,9 +377,6 @@ theorem liftPropWithinAt_indep_chart_target [HasGroupoid M' G'] (hf : f ∈ G'.m
(chart_mem_maximal_atlas _ _) (mem_chart_source _ _) hf xf hg
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart' -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart' StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart'ₓ'. -/
/-- A version of `lift_prop_within_at_indep_chart`, that uses `lift_prop_within_at` on both sides.
-/
theorem liftPropWithinAt_indep_chart' [HasGroupoid M G] [HasGroupoid M' G']
@@ -517,9 +394,6 @@ theorem liftPropWithinAt_indep_chart' [HasGroupoid M G] [HasGroupoid M' G']
exact this.comp_continuous_within_at h1
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart' StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart'
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_on_indep_chart -> StructureGroupoid.LocalInvariantProp.liftPropOn_indep_chart is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_on_indep_chart StructureGroupoid.LocalInvariantProp.liftPropOn_indep_chartₓ'. -/
theorem liftPropOn_indep_chart [HasGroupoid M G] [HasGroupoid M' G'] (he : e ∈ G.maximalAtlas M)
(hf : f ∈ G'.maximalAtlas M') (h : LiftPropOn P g s) {y : H}
(hy : y ∈ e.target ∩ e.symm ⁻¹' (s ∩ g ⁻¹' f.source)) : P (f ∘ g ∘ e.symm) (e.symm ⁻¹' s) y :=
@@ -528,9 +402,6 @@ theorem liftPropOn_indep_chart [HasGroupoid M G] [HasGroupoid M' G'] (he : e ∈
rw [e.right_inv hy.1]
#align structure_groupoid.local_invariant_prop.lift_prop_on_indep_chart StructureGroupoid.LocalInvariantProp.liftPropOn_indep_chart
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_inter' -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_inter' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_inter' StructureGroupoid.LocalInvariantProp.liftPropWithinAt_inter'ₓ'. -/
theorem liftPropWithinAt_inter' (ht : t ∈ 𝓝[s] x) :
LiftPropWithinAt P g (s ∩ t) x ↔ LiftPropWithinAt P g s x :=
by
@@ -540,31 +411,19 @@ theorem liftPropWithinAt_inter' (ht : t ∈ 𝓝[s] x) :
exact (mem_nhds_within_iff_eventually_eq.mp ht).symm.mem_iff
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_inter' StructureGroupoid.LocalInvariantProp.liftPropWithinAt_inter'
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_inter -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_inter is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_inter StructureGroupoid.LocalInvariantProp.liftPropWithinAt_interₓ'. -/
theorem liftPropWithinAt_inter (ht : t ∈ 𝓝 x) :
LiftPropWithinAt P g (s ∩ t) x ↔ LiftPropWithinAt P g s x :=
hG.liftPropWithinAt_inter' (mem_nhdsWithin_of_mem_nhds ht)
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_inter StructureGroupoid.LocalInvariantProp.liftPropWithinAt_inter
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_at_of_lift_prop_within_at -> StructureGroupoid.LocalInvariantProp.liftPropAt_of_liftPropWithinAt is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_at_of_lift_prop_within_at StructureGroupoid.LocalInvariantProp.liftPropAt_of_liftPropWithinAtₓ'. -/
theorem liftPropAt_of_liftPropWithinAt (h : LiftPropWithinAt P g s x) (hs : s ∈ 𝓝 x) :
LiftPropAt P g x := by rwa [← univ_inter s, hG.lift_prop_within_at_inter hs] at h
#align structure_groupoid.local_invariant_prop.lift_prop_at_of_lift_prop_within_at StructureGroupoid.LocalInvariantProp.liftPropAt_of_liftPropWithinAt
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_of_lift_prop_at_of_mem_nhds -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_of_liftPropAt_of_mem_nhds is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_of_lift_prop_at_of_mem_nhds StructureGroupoid.LocalInvariantProp.liftPropWithinAt_of_liftPropAt_of_mem_nhdsₓ'. -/
theorem liftPropWithinAt_of_liftPropAt_of_mem_nhds (h : LiftPropAt P g x) (hs : s ∈ 𝓝 x) :
LiftPropWithinAt P g s x := by rwa [← univ_inter s, hG.lift_prop_within_at_inter hs]
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_of_lift_prop_at_of_mem_nhds StructureGroupoid.LocalInvariantProp.liftPropWithinAt_of_liftPropAt_of_mem_nhds
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_on_of_locally_lift_prop_on -> StructureGroupoid.LocalInvariantProp.liftPropOn_of_locally_liftPropOn is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_on_of_locally_lift_prop_on StructureGroupoid.LocalInvariantProp.liftPropOn_of_locally_liftPropOnₓ'. -/
theorem liftPropOn_of_locally_liftPropOn
(h : ∀ x ∈ s, ∃ u, IsOpen u ∧ x ∈ u ∧ LiftPropOn P g (s ∩ u)) : LiftPropOn P g s :=
by
@@ -575,9 +434,6 @@ theorem liftPropOn_of_locally_liftPropOn
exact IsOpen.mem_nhds u_open xu
#align structure_groupoid.local_invariant_prop.lift_prop_on_of_locally_lift_prop_on StructureGroupoid.LocalInvariantProp.liftPropOn_of_locally_liftPropOn
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_of_locally_lift_prop_on -> StructureGroupoid.LocalInvariantProp.liftProp_of_locally_liftPropOn is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_of_locally_lift_prop_on StructureGroupoid.LocalInvariantProp.liftProp_of_locally_liftPropOnₓ'. -/
theorem liftProp_of_locally_liftPropOn (h : ∀ x, ∃ u, IsOpen u ∧ x ∈ u ∧ LiftPropOn P g u) :
LiftProp P g := by
rw [← lift_prop_on_univ]
@@ -585,9 +441,6 @@ theorem liftProp_of_locally_liftPropOn (h : ∀ x, ∃ u, IsOpen u ∧ x ∈ u
simp [h x]
#align structure_groupoid.local_invariant_prop.lift_prop_of_locally_lift_prop_on StructureGroupoid.LocalInvariantProp.liftProp_of_locally_liftPropOn
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_of_eventually_eq -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_of_eventuallyEq is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_of_eventuallyEqₓ'. -/
theorem liftPropWithinAt_congr_of_eventuallyEq (h : LiftPropWithinAt P g s x) (h₁ : g' =ᶠ[𝓝[s] x] g)
(hx : g' x = g x) : LiftPropWithinAt P g' s x :=
by
@@ -601,66 +454,42 @@ theorem liftPropWithinAt_congr_of_eventuallyEq (h : LiftPropWithinAt P g s x) (h
exact h₁.mono fun y hy => by rw [hx, hy]
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_of_eventuallyEq
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_iff_of_eventually_eq -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_iff_of_eventuallyEq is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_iff_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_iff_of_eventuallyEqₓ'. -/
theorem liftPropWithinAt_congr_iff_of_eventuallyEq (h₁ : g' =ᶠ[𝓝[s] x] g) (hx : g' x = g x) :
LiftPropWithinAt P g' s x ↔ LiftPropWithinAt P g s x :=
⟨fun h => hG.liftPropWithinAt_congr_of_eventuallyEq h h₁.symm hx.symm, fun h =>
hG.liftPropWithinAt_congr_of_eventuallyEq h h₁ hx⟩
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_iff_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_iff_of_eventuallyEq
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_iff -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_iff is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_iff StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_iffₓ'. -/
theorem liftPropWithinAt_congr_iff (h₁ : ∀ y ∈ s, g' y = g y) (hx : g' x = g x) :
LiftPropWithinAt P g' s x ↔ LiftPropWithinAt P g s x :=
hG.liftPropWithinAt_congr_iff_of_eventuallyEq (eventually_nhdsWithin_of_forall h₁) hx
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_iff StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_iff
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_congr -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congrₓ'. -/
theorem liftPropWithinAt_congr (h : LiftPropWithinAt P g s x) (h₁ : ∀ y ∈ s, g' y = g y)
(hx : g' x = g x) : LiftPropWithinAt P g' s x :=
(hG.liftPropWithinAt_congr_iff h₁ hx).mpr h
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_at_congr_iff_of_eventually_eq -> StructureGroupoid.LocalInvariantProp.liftPropAt_congr_iff_of_eventuallyEq is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_at_congr_iff_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropAt_congr_iff_of_eventuallyEqₓ'. -/
theorem liftPropAt_congr_iff_of_eventuallyEq (h₁ : g' =ᶠ[𝓝 x] g) :
LiftPropAt P g' x ↔ LiftPropAt P g x :=
hG.liftPropWithinAt_congr_iff_of_eventuallyEq (by simp_rw [nhdsWithin_univ, h₁]) h₁.eq_of_nhds
#align structure_groupoid.local_invariant_prop.lift_prop_at_congr_iff_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropAt_congr_iff_of_eventuallyEq
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_at_congr_of_eventually_eq -> StructureGroupoid.LocalInvariantProp.liftPropAt_congr_of_eventuallyEq is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_at_congr_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropAt_congr_of_eventuallyEqₓ'. -/
theorem liftPropAt_congr_of_eventuallyEq (h : LiftPropAt P g x) (h₁ : g' =ᶠ[𝓝 x] g) :
LiftPropAt P g' x :=
(hG.liftPropAt_congr_iff_of_eventuallyEq h₁).mpr h
#align structure_groupoid.local_invariant_prop.lift_prop_at_congr_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropAt_congr_of_eventuallyEq
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_on_congr -> StructureGroupoid.LocalInvariantProp.liftPropOn_congr is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_on_congr StructureGroupoid.LocalInvariantProp.liftPropOn_congrₓ'. -/
theorem liftPropOn_congr (h : LiftPropOn P g s) (h₁ : ∀ y ∈ s, g' y = g y) : LiftPropOn P g' s :=
fun x hx => hG.liftPropWithinAt_congr (h x hx) h₁ (h₁ x hx)
#align structure_groupoid.local_invariant_prop.lift_prop_on_congr StructureGroupoid.LocalInvariantProp.liftPropOn_congr
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_on_congr_iff -> StructureGroupoid.LocalInvariantProp.liftPropOn_congr_iff is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_on_congr_iff StructureGroupoid.LocalInvariantProp.liftPropOn_congr_iffₓ'. -/
theorem liftPropOn_congr_iff (h₁ : ∀ y ∈ s, g' y = g y) : LiftPropOn P g' s ↔ LiftPropOn P g s :=
⟨fun h => hG.liftPropOn_congr h fun y hy => (h₁ y hy).symm, fun h => hG.liftPropOn_congr h h₁⟩
#align structure_groupoid.local_invariant_prop.lift_prop_on_congr_iff StructureGroupoid.LocalInvariantProp.liftPropOn_congr_iff
omit hG
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_mono_of_mem -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_mono_of_mem is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_mono_of_mem StructureGroupoid.LocalInvariantProp.liftPropWithinAt_mono_of_memₓ'. -/
theorem liftPropWithinAt_mono_of_mem
(mono_of_mem : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, s ∈ 𝓝[t] x → P f s x → P f t x)
(h : LiftPropWithinAt P g s x) (hst : s ∈ 𝓝[t] x) : LiftPropWithinAt P g t x :=
@@ -670,9 +499,6 @@ theorem liftPropWithinAt_mono_of_mem
(chart_at H x).left_inv (mem_chart_source H x), hst]
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_mono_of_mem StructureGroupoid.LocalInvariantProp.liftPropWithinAt_mono_of_mem
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_mono -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_mono is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_mono StructureGroupoid.LocalInvariantProp.liftPropWithinAt_monoₓ'. -/
theorem liftPropWithinAt_mono (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆ s → P f s x → P f t x)
(h : LiftPropWithinAt P g s x) (hts : t ⊆ s) : LiftPropWithinAt P g t x :=
by
@@ -682,12 +508,6 @@ theorem liftPropWithinAt_mono (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆
simp only [hy, hts _, mfld_simps]
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_mono StructureGroupoid.LocalInvariantProp.liftPropWithinAt_mono
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_of_lift_prop_at -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_of_liftPropAt is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M} {x : M}, (forall {{s : Set.{u1} H}} {{x : H}} {{t : Set.{u1} H}} {{f : H -> H'}}, (HasSubset.Subset.{u1} (Set.{u1} H) (Set.hasSubset.{u1} H) t s) -> (P f s x) -> (P f t x)) -> (ChartedSpace.LiftPropAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g x) -> (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x)
-but is expected to have type
- forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {s : Set.{u3} M} {x : M}, (forall {{s : Set.{u4} H}} {{x : H}} {{t : Set.{u4} H}} {{f : H -> H'}}, (HasSubset.Subset.{u4} (Set.{u4} H) (Set.instHasSubsetSet.{u4} H) t s) -> (P f s x) -> (P f t x)) -> (ChartedSpace.LiftPropAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g x) -> (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x)
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_of_lift_prop_at StructureGroupoid.LocalInvariantProp.liftPropWithinAt_of_liftPropAtₓ'. -/
theorem liftPropWithinAt_of_liftPropAt (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆ s → P f s x → P f t x)
(h : LiftPropAt P g x) : LiftPropWithinAt P g s x :=
by
@@ -695,23 +515,11 @@ theorem liftPropWithinAt_of_liftPropAt (mono : ∀ ⦃s x t⦄ ⦃f : H → H'
exact lift_prop_within_at_mono mono h (subset_univ _)
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_of_lift_prop_at StructureGroupoid.LocalInvariantProp.liftPropWithinAt_of_liftPropAt
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_on_mono -> StructureGroupoid.LocalInvariantProp.liftPropOn_mono is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M} {t : Set.{u2} M}, (forall {{s : Set.{u1} H}} {{x : H}} {{t : Set.{u1} H}} {{f : H -> H'}}, (HasSubset.Subset.{u1} (Set.{u1} H) (Set.hasSubset.{u1} H) t s) -> (P f s x) -> (P f t x)) -> (ChartedSpace.LiftPropOn.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g t) -> (HasSubset.Subset.{u2} (Set.{u2} M) (Set.hasSubset.{u2} M) s t) -> (ChartedSpace.LiftPropOn.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s)
-but is expected to have type
- forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {s : Set.{u3} M} {t : Set.{u3} M}, (forall {{s : Set.{u4} H}} {{x : H}} {{t : Set.{u4} H}} {{f : H -> H'}}, (HasSubset.Subset.{u4} (Set.{u4} H) (Set.instHasSubsetSet.{u4} H) t s) -> (P f s x) -> (P f t x)) -> (ChartedSpace.LiftPropOn.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g t) -> (HasSubset.Subset.{u3} (Set.{u3} M) (Set.instHasSubsetSet.{u3} M) s t) -> (ChartedSpace.LiftPropOn.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s)
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_on_mono StructureGroupoid.LocalInvariantProp.liftPropOn_monoₓ'. -/
theorem liftPropOn_mono (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆ s → P f s x → P f t x)
(h : LiftPropOn P g t) (hst : s ⊆ t) : LiftPropOn P g s := fun x hx =>
liftPropWithinAt_mono mono (h x (hst hx)) hst
#align structure_groupoid.local_invariant_prop.lift_prop_on_mono StructureGroupoid.LocalInvariantProp.liftPropOn_mono
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_on_of_lift_prop -> StructureGroupoid.LocalInvariantProp.liftPropOn_of_liftProp is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M}, (forall {{s : Set.{u1} H}} {{x : H}} {{t : Set.{u1} H}} {{f : H -> H'}}, (HasSubset.Subset.{u1} (Set.{u1} H) (Set.hasSubset.{u1} H) t s) -> (P f s x) -> (P f t x)) -> (ChartedSpace.LiftProp.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g) -> (ChartedSpace.LiftPropOn.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s)
-but is expected to have type
- forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {s : Set.{u3} M}, (forall {{s : Set.{u4} H}} {{x : H}} {{t : Set.{u4} H}} {{f : H -> H'}}, (HasSubset.Subset.{u4} (Set.{u4} H) (Set.instHasSubsetSet.{u4} H) t s) -> (P f s x) -> (P f t x)) -> (ChartedSpace.LiftProp.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g) -> (ChartedSpace.LiftPropOn.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s)
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_on_of_lift_prop StructureGroupoid.LocalInvariantProp.liftPropOn_of_liftPropₓ'. -/
theorem liftPropOn_of_liftProp (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆ s → P f s x → P f t x)
(h : LiftProp P g) : LiftPropOn P g s :=
by
@@ -719,12 +527,6 @@ theorem liftPropOn_of_liftProp (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆
exact lift_prop_on_mono mono h (subset_univ _)
#align structure_groupoid.local_invariant_prop.lift_prop_on_of_lift_prop StructureGroupoid.LocalInvariantProp.liftPropOn_of_liftProp
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_at_of_mem_maximal_atlas -> StructureGroupoid.LocalInvariantProp.liftPropAt_of_mem_maximalAtlas is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] {G : StructureGroupoid.{u1} H _inst_1} {e : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1} {x : M} {Q : (H -> H) -> (Set.{u1} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u1, u2} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u1, u1} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u1} H) (Set.univ.{u1} H) y) -> (Membership.Mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) (Set.hasMem.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u1, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) x (LocalEquiv.source.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 e))) -> (ChartedSpace.LiftPropAt.{u1, u2, u1, u1} H M H H _inst_1 _inst_2 _inst_3 _inst_1 _inst_1 (chartedSpaceSelf.{u1} H _inst_1) Q (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) e) x)
-but is expected to have type
- forall {H : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : ChartedSpace.{u2, u1} H _inst_1 M _inst_2] {G : StructureGroupoid.{u2} H _inst_1} {e : LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1} {x : M} {Q : (H -> H) -> (Set.{u2} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u2, u1} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u2, u2} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u2} H) (Set.univ.{u2} H) y) -> (Membership.mem.{max u2 u1, max u1 u2} (LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1)) (Set.instMembershipSet.{max u2 u1} (LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u2, u1} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (LocalEquiv.source.{u1, u2} M H (LocalHomeomorph.toLocalEquiv.{u1, u2} M H _inst_2 _inst_1 e))) -> (ChartedSpace.LiftPropAt.{u2, u1, u2, u2} H M H H _inst_1 _inst_2 _inst_3 _inst_1 _inst_1 (chartedSpaceSelf.{u2} H _inst_1) Q (LocalHomeomorph.toFun'.{u1, u2} M H _inst_2 _inst_1 e) x)
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_at_of_mem_maximal_atlas StructureGroupoid.LocalInvariantProp.liftPropAt_of_mem_maximalAtlasₓ'. -/
theorem liftPropAt_of_mem_maximalAtlas [HasGroupoid M G] (hG : G.LocalInvariantProp G Q)
(hQ : ∀ y, Q id univ y) (he : e ∈ maximalAtlas M G) (hx : x ∈ e.source) : LiftPropAt Q e x :=
by
@@ -734,12 +536,6 @@ theorem liftPropAt_of_mem_maximalAtlas [HasGroupoid M G] (hG : G.LocalInvariantP
exact hG.congr' (e.eventually_right_inverse' hx) (hQ _)
#align structure_groupoid.local_invariant_prop.lift_prop_at_of_mem_maximal_atlas StructureGroupoid.LocalInvariantProp.liftPropAt_of_mem_maximalAtlas
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_on_of_mem_maximal_atlas -> StructureGroupoid.LocalInvariantProp.liftPropOn_of_mem_maximalAtlas is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] {G : StructureGroupoid.{u1} H _inst_1} {e : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1} {Q : (H -> H) -> (Set.{u1} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u1, u2} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u1, u1} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u1} H) (Set.univ.{u1} H) y) -> (Membership.Mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) (Set.hasMem.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u1, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (ChartedSpace.LiftPropOn.{u1, u2, u1, u1} H M H H _inst_1 _inst_2 _inst_3 _inst_1 _inst_1 (chartedSpaceSelf.{u1} H _inst_1) Q (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) e) (LocalEquiv.source.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 e)))
-but is expected to have type
- forall {H : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : ChartedSpace.{u2, u1} H _inst_1 M _inst_2] {G : StructureGroupoid.{u2} H _inst_1} {e : LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1} {Q : (H -> H) -> (Set.{u2} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u2, u1} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u2, u2} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u2} H) (Set.univ.{u2} H) y) -> (Membership.mem.{max u2 u1, max u1 u2} (LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1)) (Set.instMembershipSet.{max u2 u1} (LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u2, u1} H M _inst_1 _inst_2 _inst_3 G)) -> (ChartedSpace.LiftPropOn.{u2, u1, u2, u2} H M H H _inst_1 _inst_2 _inst_3 _inst_1 _inst_1 (chartedSpaceSelf.{u2} H _inst_1) Q (LocalHomeomorph.toFun'.{u1, u2} M H _inst_2 _inst_1 e) (LocalEquiv.source.{u1, u2} M H (LocalHomeomorph.toLocalEquiv.{u1, u2} M H _inst_2 _inst_1 e)))
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_on_of_mem_maximal_atlas StructureGroupoid.LocalInvariantProp.liftPropOn_of_mem_maximalAtlasₓ'. -/
theorem liftPropOn_of_mem_maximalAtlas [HasGroupoid M G] (hG : G.LocalInvariantProp G Q)
(hQ : ∀ y, Q id univ y) (he : e ∈ maximalAtlas M G) : LiftPropOn Q e e.source :=
by
@@ -750,12 +546,6 @@ theorem liftPropOn_of_mem_maximalAtlas [HasGroupoid M G] (hG : G.LocalInvariantP
exact IsOpen.mem_nhds e.open_source hx
#align structure_groupoid.local_invariant_prop.lift_prop_on_of_mem_maximal_atlas StructureGroupoid.LocalInvariantProp.liftPropOn_of_mem_maximalAtlas
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_at_symm_of_mem_maximal_atlas -> StructureGroupoid.LocalInvariantProp.liftPropAt_symm_of_mem_maximalAtlas is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] {G : StructureGroupoid.{u1} H _inst_1} {e : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1} {Q : (H -> H) -> (Set.{u1} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u1, u2} H _inst_1 M _inst_2 _inst_3 G] {x : H}, (StructureGroupoid.LocalInvariantProp.{u1, u1} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u1} H) (Set.univ.{u1} H) y) -> (Membership.Mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) (Set.hasMem.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u1, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.Mem.{u1, u1} H (Set.{u1} H) (Set.hasMem.{u1} H) x (LocalEquiv.target.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 e))) -> (ChartedSpace.LiftPropAt.{u1, u1, u1, u2} H H H M _inst_1 _inst_1 (chartedSpaceSelf.{u1} H _inst_1) _inst_1 _inst_2 _inst_3 Q (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e)) x)
-but is expected to have type
- forall {H : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : ChartedSpace.{u2, u1} H _inst_1 M _inst_2] {G : StructureGroupoid.{u2} H _inst_1} {e : LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1} {Q : (H -> H) -> (Set.{u2} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u2, u1} H _inst_1 M _inst_2 _inst_3 G] {x : H}, (StructureGroupoid.LocalInvariantProp.{u2, u2} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u2} H) (Set.univ.{u2} H) y) -> (Membership.mem.{max u2 u1, max u1 u2} (LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1)) (Set.instMembershipSet.{max u2 u1} (LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u2, u1} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.mem.{u2, u2} H (Set.{u2} H) (Set.instMembershipSet.{u2} H) x (LocalEquiv.target.{u1, u2} M H (LocalHomeomorph.toLocalEquiv.{u1, u2} M H _inst_2 _inst_1 e))) -> (ChartedSpace.LiftPropAt.{u2, u2, u2, u1} H H H M _inst_1 _inst_1 (chartedSpaceSelf.{u2} H _inst_1) _inst_1 _inst_2 _inst_3 Q (LocalHomeomorph.toFun'.{u2, u1} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u1, u2} M H _inst_2 _inst_1 e)) x)
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_at_symm_of_mem_maximal_atlas StructureGroupoid.LocalInvariantProp.liftPropAt_symm_of_mem_maximalAtlasₓ'. -/
theorem liftPropAt_symm_of_mem_maximalAtlas [HasGroupoid M G] {x : H}
(hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y) (he : e ∈ maximalAtlas M G)
(hx : x ∈ e.target) : LiftPropAt Q e.symm x :=
@@ -770,12 +560,6 @@ theorem liftPropAt_symm_of_mem_maximalAtlas [HasGroupoid M G] {x : H}
exact hG.congr' (e.eventually_right_inverse hx) (hQ x)
#align structure_groupoid.local_invariant_prop.lift_prop_at_symm_of_mem_maximal_atlas StructureGroupoid.LocalInvariantProp.liftPropAt_symm_of_mem_maximalAtlas
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_on_symm_of_mem_maximal_atlas -> StructureGroupoid.LocalInvariantProp.liftPropOn_symm_of_mem_maximalAtlas is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] {G : StructureGroupoid.{u1} H _inst_1} {e : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1} {Q : (H -> H) -> (Set.{u1} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u1, u2} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u1, u1} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u1} H) (Set.univ.{u1} H) y) -> (Membership.Mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) (Set.hasMem.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u1, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (ChartedSpace.LiftPropOn.{u1, u1, u1, u2} H H H M _inst_1 _inst_1 (chartedSpaceSelf.{u1} H _inst_1) _inst_1 _inst_2 _inst_3 Q (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e)) (LocalEquiv.target.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 e)))
-but is expected to have type
- forall {H : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : ChartedSpace.{u2, u1} H _inst_1 M _inst_2] {G : StructureGroupoid.{u2} H _inst_1} {e : LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1} {Q : (H -> H) -> (Set.{u2} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u2, u1} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u2, u2} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u2} H) (Set.univ.{u2} H) y) -> (Membership.mem.{max u2 u1, max u1 u2} (LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1)) (Set.instMembershipSet.{max u2 u1} (LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u2, u1} H M _inst_1 _inst_2 _inst_3 G)) -> (ChartedSpace.LiftPropOn.{u2, u2, u2, u1} H H H M _inst_1 _inst_1 (chartedSpaceSelf.{u2} H _inst_1) _inst_1 _inst_2 _inst_3 Q (LocalHomeomorph.toFun'.{u2, u1} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u1, u2} M H _inst_2 _inst_1 e)) (LocalEquiv.target.{u1, u2} M H (LocalHomeomorph.toLocalEquiv.{u1, u2} M H _inst_2 _inst_1 e)))
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_on_symm_of_mem_maximal_atlas StructureGroupoid.LocalInvariantProp.liftPropOn_symm_of_mem_maximalAtlasₓ'. -/
theorem liftPropOn_symm_of_mem_maximalAtlas [HasGroupoid M G] (hG : G.LocalInvariantProp G Q)
(hQ : ∀ y, Q id univ y) (he : e ∈ maximalAtlas M G) : LiftPropOn Q e.symm e.target :=
by
@@ -786,45 +570,21 @@ theorem liftPropOn_symm_of_mem_maximalAtlas [HasGroupoid M G] (hG : G.LocalInvar
exact IsOpen.mem_nhds e.open_target hx
#align structure_groupoid.local_invariant_prop.lift_prop_on_symm_of_mem_maximal_atlas StructureGroupoid.LocalInvariantProp.liftPropOn_symm_of_mem_maximalAtlas
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_at_chart -> StructureGroupoid.LocalInvariantProp.liftPropAt_chart is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] {G : StructureGroupoid.{u1} H _inst_1} {x : M} {Q : (H -> H) -> (Set.{u1} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u1, u2} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u1, u1} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u1} H) (Set.univ.{u1} H) y) -> (ChartedSpace.LiftPropAt.{u1, u2, u1, u1} H M H H _inst_1 _inst_2 _inst_3 _inst_1 _inst_1 (chartedSpaceSelf.{u1} H _inst_1) Q (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x)) x)
-but is expected to have type
- forall {H : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : ChartedSpace.{u2, u1} H _inst_1 M _inst_2] {G : StructureGroupoid.{u2} H _inst_1} {x : M} {Q : (H -> H) -> (Set.{u2} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u2, u1} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u2, u2} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u2} H) (Set.univ.{u2} H) y) -> (ChartedSpace.LiftPropAt.{u2, u1, u2, u2} H M H H _inst_1 _inst_2 _inst_3 _inst_1 _inst_1 (chartedSpaceSelf.{u2} H _inst_1) Q (LocalHomeomorph.toFun'.{u1, u2} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u2, u1} H _inst_1 M _inst_2 _inst_3 x)) x)
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_at_chart StructureGroupoid.LocalInvariantProp.liftPropAt_chartₓ'. -/
theorem liftPropAt_chart [HasGroupoid M G] (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y) :
LiftPropAt Q (chartAt H x) x :=
hG.liftPropAt_of_mem_maximalAtlas hQ (chart_mem_maximalAtlas G x) (mem_chart_source H x)
#align structure_groupoid.local_invariant_prop.lift_prop_at_chart StructureGroupoid.LocalInvariantProp.liftPropAt_chart
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_on_chart -> StructureGroupoid.LocalInvariantProp.liftPropOn_chart is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] {G : StructureGroupoid.{u1} H _inst_1} {x : M} {Q : (H -> H) -> (Set.{u1} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u1, u2} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u1, u1} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u1} H) (Set.univ.{u1} H) y) -> (ChartedSpace.LiftPropOn.{u1, u2, u1, u1} H M H H _inst_1 _inst_2 _inst_3 _inst_1 _inst_1 (chartedSpaceSelf.{u1} H _inst_1) Q (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x)) (LocalEquiv.source.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x))))
-but is expected to have type
- forall {H : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : ChartedSpace.{u2, u1} H _inst_1 M _inst_2] {G : StructureGroupoid.{u2} H _inst_1} {x : M} {Q : (H -> H) -> (Set.{u2} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u2, u1} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u2, u2} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u2} H) (Set.univ.{u2} H) y) -> (ChartedSpace.LiftPropOn.{u2, u1, u2, u2} H M H H _inst_1 _inst_2 _inst_3 _inst_1 _inst_1 (chartedSpaceSelf.{u2} H _inst_1) Q (LocalHomeomorph.toFun'.{u1, u2} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u2, u1} H _inst_1 M _inst_2 _inst_3 x)) (LocalEquiv.source.{u1, u2} M H (LocalHomeomorph.toLocalEquiv.{u1, u2} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u2, u1} H _inst_1 M _inst_2 _inst_3 x))))
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_on_chart StructureGroupoid.LocalInvariantProp.liftPropOn_chartₓ'. -/
theorem liftPropOn_chart [HasGroupoid M G] (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y) :
LiftPropOn Q (chartAt H x) (chartAt H x).source :=
hG.liftPropOn_of_mem_maximalAtlas hQ (chart_mem_maximalAtlas G x)
#align structure_groupoid.local_invariant_prop.lift_prop_on_chart StructureGroupoid.LocalInvariantProp.liftPropOn_chart
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_at_chart_symm -> StructureGroupoid.LocalInvariantProp.liftPropAt_chart_symm is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] {G : StructureGroupoid.{u1} H _inst_1} {x : M} {Q : (H -> H) -> (Set.{u1} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u1, u2} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u1, u1} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u1} H) (Set.univ.{u1} H) y) -> (ChartedSpace.LiftPropAt.{u1, u1, u1, u2} H H H M _inst_1 _inst_1 (chartedSpaceSelf.{u1} H _inst_1) _inst_1 _inst_2 _inst_3 Q (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x) x))
-but is expected to have type
- forall {H : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : ChartedSpace.{u2, u1} H _inst_1 M _inst_2] {G : StructureGroupoid.{u2} H _inst_1} {x : M} {Q : (H -> H) -> (Set.{u2} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u2, u1} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u2, u2} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u2} H) (Set.univ.{u2} H) y) -> (ChartedSpace.LiftPropAt.{u2, u2, u2, u1} H H H M _inst_1 _inst_1 (chartedSpaceSelf.{u2} H _inst_1) _inst_1 _inst_2 _inst_3 Q (LocalHomeomorph.toFun'.{u2, u1} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u1, u2} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u2, u1} H _inst_1 M _inst_2 _inst_3 x))) (LocalHomeomorph.toFun'.{u1, u2} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u2, u1} H _inst_1 M _inst_2 _inst_3 x) x))
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_at_chart_symm StructureGroupoid.LocalInvariantProp.liftPropAt_chart_symmₓ'. -/
theorem liftPropAt_chart_symm [HasGroupoid M G] (hG : G.LocalInvariantProp G Q)
(hQ : ∀ y, Q id univ y) : LiftPropAt Q (chartAt H x).symm ((chartAt H x) x) :=
hG.liftPropAt_symm_of_mem_maximalAtlas hQ (chart_mem_maximalAtlas G x) (by simp)
#align structure_groupoid.local_invariant_prop.lift_prop_at_chart_symm StructureGroupoid.LocalInvariantProp.liftPropAt_chart_symm
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_on_chart_symm -> StructureGroupoid.LocalInvariantProp.liftPropOn_chart_symm is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] {G : StructureGroupoid.{u1} H _inst_1} {x : M} {Q : (H -> H) -> (Set.{u1} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u1, u2} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u1, u1} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u1} H) (Set.univ.{u1} H) y) -> (ChartedSpace.LiftPropOn.{u1, u1, u1, u2} H H H M _inst_1 _inst_1 (chartedSpaceSelf.{u1} H _inst_1) _inst_1 _inst_2 _inst_3 Q (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x))) (LocalEquiv.target.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x))))
-but is expected to have type
- forall {H : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : ChartedSpace.{u2, u1} H _inst_1 M _inst_2] {G : StructureGroupoid.{u2} H _inst_1} {x : M} {Q : (H -> H) -> (Set.{u2} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u2, u1} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u2, u2} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u2} H) (Set.univ.{u2} H) y) -> (ChartedSpace.LiftPropOn.{u2, u2, u2, u1} H H H M _inst_1 _inst_1 (chartedSpaceSelf.{u2} H _inst_1) _inst_1 _inst_2 _inst_3 Q (LocalHomeomorph.toFun'.{u2, u1} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u1, u2} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u2, u1} H _inst_1 M _inst_2 _inst_3 x))) (LocalEquiv.target.{u1, u2} M H (LocalHomeomorph.toLocalEquiv.{u1, u2} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u2, u1} H _inst_1 M _inst_2 _inst_3 x))))
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_on_chart_symm StructureGroupoid.LocalInvariantProp.liftPropOn_chart_symmₓ'. -/
theorem liftPropOn_chart_symm [HasGroupoid M G] (hG : G.LocalInvariantProp G Q)
(hQ : ∀ y, Q id univ y) : LiftPropOn Q (chartAt H x).symm (chartAt H x).target :=
hG.liftPropOn_symm_of_mem_maximalAtlas hQ (chart_mem_maximalAtlas G x)
@@ -844,12 +604,6 @@ theorem liftPropOn_of_mem_groupoid (hG : G.LocalInvariantProp G Q) (hQ : ∀ y,
#align structure_groupoid.local_invariant_prop.lift_prop_on_of_mem_groupoid StructureGroupoid.LocalInvariantProp.liftPropOn_of_mem_groupoid
-/
-/- warning: structure_groupoid.local_invariant_prop.lift_prop_id -> StructureGroupoid.LocalInvariantProp.liftProp_id is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] {G : StructureGroupoid.{u1} H _inst_1} {Q : (H -> H) -> (Set.{u1} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u1, u1} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u1} H) (Set.univ.{u1} H) y) -> (ChartedSpace.LiftProp.{u1, u2, u1, u2} H M H M _inst_1 _inst_2 _inst_3 _inst_1 _inst_2 _inst_3 Q (id.{succ u2} M))
-but is expected to have type
- forall {H : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : ChartedSpace.{u2, u1} H _inst_1 M _inst_2] {G : StructureGroupoid.{u2} H _inst_1} {Q : (H -> H) -> (Set.{u2} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u2, u2} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u2} H) (Set.univ.{u2} H) y) -> (ChartedSpace.LiftProp.{u2, u1, u2, u1} H M H M _inst_1 _inst_2 _inst_3 _inst_1 _inst_2 _inst_3 Q (id.{succ u1} M))
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_id StructureGroupoid.LocalInvariantProp.liftProp_idₓ'. -/
theorem liftProp_id (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y) :
LiftProp Q (id : M → M) :=
by
@@ -919,12 +673,6 @@ theorem isLocalStructomorphWithinAt_localInvariantProp [ClosedUnderRestriction G
#align structure_groupoid.is_local_structomorph_within_at_local_invariant_prop StructureGroupoid.isLocalStructomorphWithinAt_localInvariantProp
-/
-/- warning: local_homeomorph.is_local_structomorph_within_at_iff -> LocalHomeomorph.isLocalStructomorphWithinAt_iff is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} H] {G : StructureGroupoid.{u1} H _inst_1} [_inst_8 : ClosedUnderRestriction.{u1} H _inst_1 G] (f : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) {s : Set.{u1} H} {x : H}, (Membership.Mem.{u1, u1} H (Set.{u1} H) (Set.hasMem.{u1} H) x (Union.union.{u1} (Set.{u1} H) (Set.hasUnion.{u1} H) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 f)) (HasCompl.compl.{u1} (Set.{u1} H) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} H) (Set.booleanAlgebra.{u1} H)) s))) -> (Iff (StructureGroupoid.IsLocalStructomorphWithinAt.{u1} H _inst_1 G (coeFn.{succ u1, succ u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (fun (f : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) => H -> H) (LocalHomeomorph.hasCoeToFun.{u1, u1} H H _inst_1 _inst_1) f) s x) ((Membership.Mem.{u1, u1} H (Set.{u1} H) (Set.hasMem.{u1} H) x s) -> (Exists.{succ u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (fun (e : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) => And (Membership.Mem.{u1, u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (StructureGroupoid.{u1} H _inst_1) (StructureGroupoid.hasMem.{u1} H _inst_1) e G) (And (HasSubset.Subset.{u1} (Set.{u1} H) (Set.hasSubset.{u1} H) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 e)) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 f))) (And (Set.EqOn.{u1, u1} H H (coeFn.{succ u1, succ u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (fun (_x : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) => H -> H) (LocalHomeomorph.hasCoeToFun.{u1, u1} H H _inst_1 _inst_1) f) (coeFn.{succ u1, succ u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (fun (e : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) => H -> H) (LocalHomeomorph.hasCoeToFun.{u1, u1} H H _inst_1 _inst_1) e) (Inter.inter.{u1} (Set.{u1} H) (Set.hasInter.{u1} H) s (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 e)))) (Membership.Mem.{u1, u1} H (Set.{u1} H) (Set.hasMem.{u1} H) x (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 e)))))))))
-but is expected to have type
- forall {H : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} H] {G : StructureGroupoid.{u1} H _inst_1} [_inst_8 : ClosedUnderRestriction.{u1} H _inst_1 G] (f : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) {s : Set.{u1} H} {x : H}, (Membership.mem.{u1, u1} H (Set.{u1} H) (Set.instMembershipSet.{u1} H) x (Union.union.{u1} (Set.{u1} H) (Set.instUnionSet.{u1} H) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 f)) (HasCompl.compl.{u1} (Set.{u1} H) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} H) (Set.instBooleanAlgebraSet.{u1} H)) s))) -> (Iff (StructureGroupoid.IsLocalStructomorphWithinAt.{u1} H _inst_1 G (LocalHomeomorph.toFun'.{u1, u1} H H _inst_1 _inst_1 f) s x) ((Membership.mem.{u1, u1} H (Set.{u1} H) (Set.instMembershipSet.{u1} H) x s) -> (Exists.{succ u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (fun (e : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) => And (Membership.mem.{u1, u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (StructureGroupoid.{u1} H _inst_1) (instMembershipLocalHomeomorphStructureGroupoid.{u1} H _inst_1) e G) (And (HasSubset.Subset.{u1} (Set.{u1} H) (Set.instHasSubsetSet.{u1} H) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 e)) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 f))) (And (Set.EqOn.{u1, u1} H H (LocalHomeomorph.toFun'.{u1, u1} H H _inst_1 _inst_1 f) (LocalHomeomorph.toFun'.{u1, u1} H H _inst_1 _inst_1 e) (Inter.inter.{u1} (Set.{u1} H) (Set.instInterSet.{u1} H) s (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 e)))) (Membership.mem.{u1, u1} H (Set.{u1} H) (Set.instMembershipSet.{u1} H) x (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 e)))))))))
-Case conversion may be inaccurate. Consider using '#align local_homeomorph.is_local_structomorph_within_at_iff LocalHomeomorph.isLocalStructomorphWithinAt_iffₓ'. -/
/-- A slight reformulation of `is_local_structomorph_within_at` when `f` is a local homeomorph.
This gives us an `e` that is defined on a subset of `f.source`. -/
theorem LocalHomeomorph.isLocalStructomorphWithinAt_iff {G : StructureGroupoid H}
@@ -946,12 +694,6 @@ theorem LocalHomeomorph.isLocalStructomorphWithinAt_iff {G : StructureGroupoid H
· intro hf hx; obtain ⟨e, he, h2e, hfe, hxe⟩ := hf hx; exact ⟨e, he, hfe, hxe⟩
#align local_homeomorph.is_local_structomorph_within_at_iff LocalHomeomorph.isLocalStructomorphWithinAt_iff
-/- warning: local_homeomorph.is_local_structomorph_within_at_iff' -> LocalHomeomorph.isLocalStructomorphWithinAt_iff' is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} H] {G : StructureGroupoid.{u1} H _inst_1} [_inst_8 : ClosedUnderRestriction.{u1} H _inst_1 G] (f : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) {s : Set.{u1} H} {x : H}, (HasSubset.Subset.{u1} (Set.{u1} H) (Set.hasSubset.{u1} H) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 f)) s) -> (Membership.Mem.{u1, u1} H (Set.{u1} H) (Set.hasMem.{u1} H) x (Union.union.{u1} (Set.{u1} H) (Set.hasUnion.{u1} H) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 f)) (HasCompl.compl.{u1} (Set.{u1} H) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} H) (Set.booleanAlgebra.{u1} H)) s))) -> (Iff (StructureGroupoid.IsLocalStructomorphWithinAt.{u1} H _inst_1 G (coeFn.{succ u1, succ u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (fun (f : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) => H -> H) (LocalHomeomorph.hasCoeToFun.{u1, u1} H H _inst_1 _inst_1) f) s x) ((Membership.Mem.{u1, u1} H (Set.{u1} H) (Set.hasMem.{u1} H) x s) -> (Exists.{succ u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (fun (e : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) => And (Membership.Mem.{u1, u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (StructureGroupoid.{u1} H _inst_1) (StructureGroupoid.hasMem.{u1} H _inst_1) e G) (And (HasSubset.Subset.{u1} (Set.{u1} H) (Set.hasSubset.{u1} H) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 e)) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 f))) (And (Set.EqOn.{u1, u1} H H (coeFn.{succ u1, succ u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (fun (_x : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) => H -> H) (LocalHomeomorph.hasCoeToFun.{u1, u1} H H _inst_1 _inst_1) f) (coeFn.{succ u1, succ u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (fun (e : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) => H -> H) (LocalHomeomorph.hasCoeToFun.{u1, u1} H H _inst_1 _inst_1) e) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 e))) (Membership.Mem.{u1, u1} H (Set.{u1} H) (Set.hasMem.{u1} H) x (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 e)))))))))
-but is expected to have type
- forall {H : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} H] {G : StructureGroupoid.{u1} H _inst_1} [_inst_8 : ClosedUnderRestriction.{u1} H _inst_1 G] (f : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) {s : Set.{u1} H} {x : H}, (HasSubset.Subset.{u1} (Set.{u1} H) (Set.instHasSubsetSet.{u1} H) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 f)) s) -> (Membership.mem.{u1, u1} H (Set.{u1} H) (Set.instMembershipSet.{u1} H) x (Union.union.{u1} (Set.{u1} H) (Set.instUnionSet.{u1} H) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 f)) (HasCompl.compl.{u1} (Set.{u1} H) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} H) (Set.instBooleanAlgebraSet.{u1} H)) s))) -> (Iff (StructureGroupoid.IsLocalStructomorphWithinAt.{u1} H _inst_1 G (LocalHomeomorph.toFun'.{u1, u1} H H _inst_1 _inst_1 f) s x) ((Membership.mem.{u1, u1} H (Set.{u1} H) (Set.instMembershipSet.{u1} H) x s) -> (Exists.{succ u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (fun (e : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) => And (Membership.mem.{u1, u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (StructureGroupoid.{u1} H _inst_1) (instMembershipLocalHomeomorphStructureGroupoid.{u1} H _inst_1) e G) (And (HasSubset.Subset.{u1} (Set.{u1} H) (Set.instHasSubsetSet.{u1} H) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 e)) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 f))) (And (Set.EqOn.{u1, u1} H H (LocalHomeomorph.toFun'.{u1, u1} H H _inst_1 _inst_1 f) (LocalHomeomorph.toFun'.{u1, u1} H H _inst_1 _inst_1 e) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 e))) (Membership.mem.{u1, u1} H (Set.{u1} H) (Set.instMembershipSet.{u1} H) x (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 e)))))))))
-Case conversion may be inaccurate. Consider using '#align local_homeomorph.is_local_structomorph_within_at_iff' LocalHomeomorph.isLocalStructomorphWithinAt_iff'ₓ'. -/
/-- A slight reformulation of `is_local_structomorph_within_at` when `f` is a local homeomorph and
the set we're considering is a superset of `f.source`. -/
theorem LocalHomeomorph.isLocalStructomorphWithinAt_iff' {G : StructureGroupoid H}
@@ -988,12 +730,6 @@ variable {H₁ : Type _} [TopologicalSpace H₁] {H₂ : Type _} [TopologicalSpa
variable (G₂)
-/- warning: structure_groupoid.has_groupoid.comp -> StructureGroupoid.HasGroupoid.comp is a dubious translation:
-lean 3 declaration is
- forall {H₁ : Type.{u1}} [_inst_8 : TopologicalSpace.{u1} H₁] {H₂ : Type.{u2}} [_inst_9 : TopologicalSpace.{u2} H₂] {H₃ : Type.{u3}} [_inst_10 : TopologicalSpace.{u3} H₃] [_inst_11 : ChartedSpace.{u1, u2} H₁ _inst_8 H₂ _inst_9] [_inst_12 : ChartedSpace.{u2, u3} H₂ _inst_9 H₃ _inst_10] {G₁ : StructureGroupoid.{u1} H₁ _inst_8} [_inst_13 : HasGroupoid.{u1, u2} H₁ _inst_8 H₂ _inst_9 _inst_11 G₁] [_inst_14 : ClosedUnderRestriction.{u1} H₁ _inst_8 G₁] (G₂ : StructureGroupoid.{u2} H₂ _inst_9) [_inst_15 : HasGroupoid.{u2, u3} H₂ _inst_9 H₃ _inst_10 _inst_12 G₂], (forall (e : LocalHomeomorph.{u2, u2} H₂ H₂ _inst_9 _inst_9), (Membership.Mem.{u2, u2} (LocalHomeomorph.{u2, u2} H₂ H₂ _inst_9 _inst_9) (StructureGroupoid.{u2} H₂ _inst_9) (StructureGroupoid.hasMem.{u2} H₂ _inst_9) e G₂) -> (ChartedSpace.LiftPropOn.{u1, u2, u1, u2} H₁ H₂ H₁ H₂ _inst_8 _inst_9 _inst_11 _inst_8 _inst_9 _inst_11 (StructureGroupoid.IsLocalStructomorphWithinAt.{u1} H₁ _inst_8 G₁) (coeFn.{succ u2, succ u2} (LocalHomeomorph.{u2, u2} H₂ H₂ _inst_9 _inst_9) (fun (_x : LocalHomeomorph.{u2, u2} H₂ H₂ _inst_9 _inst_9) => H₂ -> H₂) (LocalHomeomorph.hasCoeToFun.{u2, u2} H₂ H₂ _inst_9 _inst_9) e) (LocalEquiv.source.{u2, u2} H₂ H₂ (LocalHomeomorph.toLocalEquiv.{u2, u2} H₂ H₂ _inst_9 _inst_9 e)))) -> (HasGroupoid.{u1, u3} H₁ _inst_8 H₃ _inst_10 (ChartedSpace.comp.{u1, u2, u3} H₁ _inst_8 H₂ _inst_9 H₃ _inst_10 _inst_11 _inst_12) G₁)
-but is expected to have type
- forall {H₁ : Type.{u2}} [_inst_8 : TopologicalSpace.{u2} H₁] {H₂ : Type.{u3}} [_inst_9 : TopologicalSpace.{u3} H₂] {H₃ : Type.{u1}} [_inst_10 : TopologicalSpace.{u1} H₃] [_inst_11 : ChartedSpace.{u2, u3} H₁ _inst_8 H₂ _inst_9] [_inst_12 : ChartedSpace.{u3, u1} H₂ _inst_9 H₃ _inst_10] {G₁ : StructureGroupoid.{u2} H₁ _inst_8} [_inst_13 : HasGroupoid.{u2, u3} H₁ _inst_8 H₂ _inst_9 _inst_11 G₁] [_inst_14 : ClosedUnderRestriction.{u2} H₁ _inst_8 G₁] (G₂ : StructureGroupoid.{u3} H₂ _inst_9) [_inst_15 : HasGroupoid.{u3, u1} H₂ _inst_9 H₃ _inst_10 _inst_12 G₂], (forall (e : LocalHomeomorph.{u3, u3} H₂ H₂ _inst_9 _inst_9), (Membership.mem.{u3, u3} (LocalHomeomorph.{u3, u3} H₂ H₂ _inst_9 _inst_9) (StructureGroupoid.{u3} H₂ _inst_9) (instMembershipLocalHomeomorphStructureGroupoid.{u3} H₂ _inst_9) e G₂) -> (ChartedSpace.LiftPropOn.{u2, u3, u2, u3} H₁ H₂ H₁ H₂ _inst_8 _inst_9 _inst_11 _inst_8 _inst_9 _inst_11 (StructureGroupoid.IsLocalStructomorphWithinAt.{u2} H₁ _inst_8 G₁) (LocalHomeomorph.toFun'.{u3, u3} H₂ H₂ _inst_9 _inst_9 e) (LocalEquiv.source.{u3, u3} H₂ H₂ (LocalHomeomorph.toLocalEquiv.{u3, u3} H₂ H₂ _inst_9 _inst_9 e)))) -> (HasGroupoid.{u2, u1} H₁ _inst_8 H₃ _inst_10 (ChartedSpace.comp.{u2, u3, u1} H₁ _inst_8 H₂ _inst_9 H₃ _inst_10 _inst_11 _inst_12) G₁)
-Case conversion may be inaccurate. Consider using '#align structure_groupoid.has_groupoid.comp StructureGroupoid.HasGroupoid.compₓ'. -/
theorem HasGroupoid.comp
(H : ∀ e ∈ G₂, LiftPropOn (IsLocalStructomorphWithinAt G₁) (e : H₂ → H₂) e.source) :
@HasGroupoid H₁ _ H₃ _ (ChartedSpace.comp H₁ H₂ H₃) G₁ :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -941,13 +941,9 @@ theorem LocalHomeomorph.isLocalStructomorphWithinAt_iff {G : StructureGroupoid H
refine' ⟨e.restr f.source, closedUnderRestriction' he f.open_source, _, _, hxe, _⟩
· simp_rw [LocalHomeomorph.restr_source]
refine' (inter_subset_right _ _).trans interior_subset
- · intro x' hx'
- exact hfe ⟨hx'.1, hx'.2.1⟩
- · rw [f.open_source.interior_eq]
- exact Or.resolve_right hx (not_not.mpr h2x)
- · intro hf hx
- obtain ⟨e, he, h2e, hfe, hxe⟩ := hf hx
- exact ⟨e, he, hfe, hxe⟩
+ · intro x' hx'; exact hfe ⟨hx'.1, hx'.2.1⟩
+ · rw [f.open_source.interior_eq]; exact Or.resolve_right hx (not_not.mpr h2x)
+ · intro hf hx; obtain ⟨e, he, h2e, hfe, hxe⟩ := hf hx; exact ⟨e, he, hfe, hxe⟩
#align local_homeomorph.is_local_structomorph_within_at_iff LocalHomeomorph.isLocalStructomorphWithinAt_iff
/- warning: local_homeomorph.is_local_structomorph_within_at_iff' -> LocalHomeomorph.isLocalStructomorphWithinAt_iff' is a dubious translation:
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -367,10 +367,7 @@ variable (hG : G.LocalInvariantProp G' P)
include hG
/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_iff -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_iff is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (forall {f : M -> M'}, Iff (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P f s x) (And (ContinuousWithinAt.{u2, u4} M M' _inst_2 _inst_5 f s x) (P (Function.comp.{succ u1, succ u4, succ u3} H M' H' (coeFn.{max (succ u4) (succ u3), max (succ u4) (succ u3)} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u4, u3} M' H' _inst_5 _inst_4) (ChartedSpace.chartAt.{u3, u4} H' _inst_4 M' _inst_5 _inst_6 (f x))) (Function.comp.{succ u1, succ u2, succ u4} H M M' f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x))))) (Inter.inter.{u1} (Set.{u1} H) (Set.hasInter.{u1} H) (LocalEquiv.target.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x))) (Set.preimage.{u1, u2} H M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x))) (Inter.inter.{u2} (Set.{u2} M) (Set.hasInter.{u2} M) s (Set.preimage.{u2, u4} M M' f (LocalEquiv.source.{u4, u3} M' H' (LocalHomeomorph.toLocalEquiv.{u4, u3} M' H' _inst_5 _inst_4 (ChartedSpace.chartAt.{u3, u4} H' _inst_4 M' _inst_5 _inst_6 (f x)))))))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x) x))))
-but is expected to have type
- forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u4} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {s : Set.{u3} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u4, u2} H H' _inst_1 _inst_4 G G' P) -> (forall {f : M -> M'}, Iff (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P f s x) (And (ContinuousWithinAt.{u3, u1} M M' _inst_2 _inst_5 f s x) (P (Function.comp.{succ u4, succ u1, succ u2} H M' H' (LocalHomeomorph.toFun'.{u1, u2} M' H' _inst_5 _inst_4 (ChartedSpace.chartAt.{u2, u1} H' _inst_4 M' _inst_5 _inst_6 (f x))) (Function.comp.{succ u4, succ u3, succ u1} H M M' f (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u4, u3} H _inst_1 M _inst_2 _inst_3 x))))) (Inter.inter.{u4} (Set.{u4} H) (Set.instInterSet.{u4} H) (LocalEquiv.target.{u3, u4} M H (LocalHomeomorph.toLocalEquiv.{u3, u4} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u4, u3} H _inst_1 M _inst_2 _inst_3 x))) (Set.preimage.{u4, u3} H M (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u4, u3} H _inst_1 M _inst_2 _inst_3 x))) (Inter.inter.{u3} (Set.{u3} M) (Set.instInterSet.{u3} M) s (Set.preimage.{u3, u1} M M' f (LocalEquiv.source.{u1, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u1, u2} M' H' _inst_5 _inst_4 (ChartedSpace.chartAt.{u2, u1} H' _inst_4 M' _inst_5 _inst_6 (f x)))))))) (LocalHomeomorph.toFun'.{u3, u4} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u4, u3} H _inst_1 M _inst_2 _inst_3 x) x))))
+<too large>
Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_iff StructureGroupoid.LocalInvariantProp.liftPropWithinAt_iffₓ'. -/
/-- `lift_prop_within_at P f s x` is equivalent to a definition where we restrict the set we are
considering to the domain of the charts at `x` and `f x`. -/
@@ -388,10 +385,7 @@ theorem liftPropWithinAt_iff {f : M → M'} :
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_iff StructureGroupoid.LocalInvariantProp.liftPropWithinAt_iff
/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_source_aux -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_source_aux is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {e : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1} {e' : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (forall (g : M -> H'), (Membership.Mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) (Set.hasMem.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u1, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) x (LocalEquiv.source.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 e))) -> (Membership.Mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) (Set.hasMem.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) e' (StructureGroupoid.maximalAtlas.{u1, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) x (LocalEquiv.source.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 e'))) -> (Iff (P (Function.comp.{succ u1, succ u2, succ u3} H M H' g (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e))) (Set.preimage.{u1, u2} H M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e)) s) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) e x)) (P (Function.comp.{succ u1, succ u2, succ u3} H M H' g (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e'))) (Set.preimage.{u1, u2} H M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e')) s) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) e' x))))
-but is expected to have type
- forall {H : Type.{u3}} {M : Type.{u2}} {H' : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u3, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u1} H'] {G : StructureGroupoid.{u3} H _inst_1} {G' : StructureGroupoid.{u1} H' _inst_4} {e : LocalHomeomorph.{u2, u3} M H _inst_2 _inst_1} {e' : LocalHomeomorph.{u2, u3} M H _inst_2 _inst_1} {P : (H -> H') -> (Set.{u3} H) -> H -> Prop} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u3, u1} H H' _inst_1 _inst_4 G G' P) -> (forall (g : M -> H'), (Membership.mem.{max u3 u2, max u3 u2} (LocalHomeomorph.{u2, u3} M H _inst_2 _inst_1) (Set.{max u3 u2} (LocalHomeomorph.{u2, u3} M H _inst_2 _inst_1)) (Set.instMembershipSet.{max u3 u2} (LocalHomeomorph.{u2, u3} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u3, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (LocalEquiv.source.{u2, u3} M H (LocalHomeomorph.toLocalEquiv.{u2, u3} M H _inst_2 _inst_1 e))) -> (Membership.mem.{max u3 u2, max u3 u2} (LocalHomeomorph.{u2, u3} M H _inst_2 _inst_1) (Set.{max u3 u2} (LocalHomeomorph.{u2, u3} M H _inst_2 _inst_1)) (Set.instMembershipSet.{max u3 u2} (LocalHomeomorph.{u2, u3} M H _inst_2 _inst_1)) e' (StructureGroupoid.maximalAtlas.{u3, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (LocalEquiv.source.{u2, u3} M H (LocalHomeomorph.toLocalEquiv.{u2, u3} M H _inst_2 _inst_1 e'))) -> (Iff (P (Function.comp.{succ u3, succ u2, succ u1} H M H' g (LocalHomeomorph.toFun'.{u3, u2} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u2, u3} M H _inst_2 _inst_1 e))) (Set.preimage.{u3, u2} H M (LocalHomeomorph.toFun'.{u3, u2} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u2, u3} M H _inst_2 _inst_1 e)) s) (LocalHomeomorph.toFun'.{u2, u3} M H _inst_2 _inst_1 e x)) (P (Function.comp.{succ u3, succ u2, succ u1} H M H' g (LocalHomeomorph.toFun'.{u3, u2} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u2, u3} M H _inst_2 _inst_1 e'))) (Set.preimage.{u3, u2} H M (LocalHomeomorph.toFun'.{u3, u2} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u2, u3} M H _inst_2 _inst_1 e')) s) (LocalHomeomorph.toFun'.{u2, u3} M H _inst_2 _inst_1 e' x))))
+<too large>
Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_source_aux StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_source_auxₓ'. -/
theorem liftPropWithinAt_indep_chart_source_aux (g : M → H') (he : e ∈ G.maximalAtlas M)
(xe : x ∈ e.source) (he' : e' ∈ G.maximalAtlas M) (xe' : x ∈ e'.source) :
@@ -413,10 +407,7 @@ theorem liftPropWithinAt_indep_chart_source_aux (g : M → H') (he : e ∈ G.max
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_source_aux StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_source_aux
/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target_aux2 -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target_aux2 is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {H' : Type.{u2}} {M' : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u3} M'] [_inst_6 : ChartedSpace.{u2, u3} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {f : LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4} {f' : LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u1, u2} H H' _inst_1 _inst_4 G G' P) -> (forall (g : H -> M') {x : H} {s : Set.{u1} H}, (Membership.Mem.{max u3 u2, max u3 u2} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) (Set.{max u3 u2} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4)) (Set.hasMem.{max u3 u2} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u2, u3} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.Mem.{u3, u3} M' (Set.{u3} M') (Set.hasMem.{u3} M') (g x) (LocalEquiv.source.{u3, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u3, u2} M' H' _inst_5 _inst_4 f))) -> (Membership.Mem.{max u3 u2, max u3 u2} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) (Set.{max u3 u2} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4)) (Set.hasMem.{max u3 u2} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4)) f' (StructureGroupoid.maximalAtlas.{u2, u3} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.Mem.{u3, u3} M' (Set.{u3} M') (Set.hasMem.{u3} M') (g x) (LocalEquiv.source.{u3, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u3, u2} M' H' _inst_5 _inst_4 f'))) -> (ContinuousWithinAt.{u1, u3} H M' _inst_1 _inst_5 g s x) -> (Iff (P (Function.comp.{succ u1, succ u3, succ u2} H M' H' (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u3, u2} M' H' _inst_5 _inst_4) f) g) s x) (P (Function.comp.{succ u1, succ u3, succ u2} H M' H' (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u3, u2} M' H' _inst_5 _inst_4) f') g) s x)))
-but is expected to have type
- forall {H : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} H] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u3} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {f : LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4} {f' : LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u3} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u3, u2} H H' _inst_1 _inst_4 G G' P) -> (forall (g : H -> M') {x : H} {s : Set.{u3} H}, (Membership.mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4) (Set.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) (Set.instMembershipSet.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u2, u1} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.mem.{u1, u1} M' (Set.{u1} M') (Set.instMembershipSet.{u1} M') (g x) (LocalEquiv.source.{u1, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u1, u2} M' H' _inst_5 _inst_4 f))) -> (Membership.mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4) (Set.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) (Set.instMembershipSet.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) f' (StructureGroupoid.maximalAtlas.{u2, u1} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.mem.{u1, u1} M' (Set.{u1} M') (Set.instMembershipSet.{u1} M') (g x) (LocalEquiv.source.{u1, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u1, u2} M' H' _inst_5 _inst_4 f'))) -> (ContinuousWithinAt.{u3, u1} H M' _inst_1 _inst_5 g s x) -> (Iff (P (Function.comp.{succ u3, succ u1, succ u2} H M' H' (LocalHomeomorph.toFun'.{u1, u2} M' H' _inst_5 _inst_4 f) g) s x) (P (Function.comp.{succ u3, succ u1, succ u2} H M' H' (LocalHomeomorph.toFun'.{u1, u2} M' H' _inst_5 _inst_4 f') g) s x)))
+<too large>
Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target_aux2 StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target_aux2ₓ'. -/
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')
@@ -431,10 +422,7 @@ theorem liftPropWithinAt_indep_chart_target_aux2 (g : H → M') {x : H} {s : Set
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target_aux2 StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target_aux2
/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target_aux -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target_aux is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {H' : Type.{u2}} {M' : Type.{u3}} {X : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u3} M'] [_inst_6 : ChartedSpace.{u2, u3} H' _inst_4 M' _inst_5] [_inst_7 : TopologicalSpace.{u4} X] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {f : LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4} {f' : LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u1, u2} H H' _inst_1 _inst_4 G G' P) -> (forall {g : X -> M'} {e : LocalHomeomorph.{u4, u1} X H _inst_7 _inst_1} {x : X} {s : Set.{u4} X}, (Membership.Mem.{u4, u4} X (Set.{u4} X) (Set.hasMem.{u4} X) x (LocalEquiv.source.{u4, u1} X H (LocalHomeomorph.toLocalEquiv.{u4, u1} X H _inst_7 _inst_1 e))) -> (Membership.Mem.{max u3 u2, max u3 u2} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) (Set.{max u3 u2} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4)) (Set.hasMem.{max u3 u2} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u2, u3} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.Mem.{u3, u3} M' (Set.{u3} M') (Set.hasMem.{u3} M') (g x) (LocalEquiv.source.{u3, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u3, u2} M' H' _inst_5 _inst_4 f))) -> (Membership.Mem.{max u3 u2, max u3 u2} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) (Set.{max u3 u2} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4)) (Set.hasMem.{max u3 u2} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4)) f' (StructureGroupoid.maximalAtlas.{u2, u3} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.Mem.{u3, u3} M' (Set.{u3} M') (Set.hasMem.{u3} M') (g x) (LocalEquiv.source.{u3, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u3, u2} M' H' _inst_5 _inst_4 f'))) -> (ContinuousWithinAt.{u4, u3} X M' _inst_7 _inst_5 g s x) -> (Iff (P (Function.comp.{succ u1, succ u3, succ u2} H M' H' (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u3, u2} M' H' _inst_5 _inst_4) f) (Function.comp.{succ u1, succ u4, succ u3} H X M' g (coeFn.{max (succ u1) (succ u4), max (succ u1) (succ u4)} (LocalHomeomorph.{u1, u4} H X _inst_1 _inst_7) (fun (_x : LocalHomeomorph.{u1, u4} H X _inst_1 _inst_7) => H -> X) (LocalHomeomorph.hasCoeToFun.{u1, u4} H X _inst_1 _inst_7) (LocalHomeomorph.symm.{u4, u1} X H _inst_7 _inst_1 e)))) (Set.preimage.{u1, u4} H X (coeFn.{max (succ u1) (succ u4), max (succ u1) (succ u4)} (LocalHomeomorph.{u1, u4} H X _inst_1 _inst_7) (fun (_x : LocalHomeomorph.{u1, u4} H X _inst_1 _inst_7) => H -> X) (LocalHomeomorph.hasCoeToFun.{u1, u4} H X _inst_1 _inst_7) (LocalHomeomorph.symm.{u4, u1} X H _inst_7 _inst_1 e)) s) (coeFn.{max (succ u4) (succ u1), max (succ u4) (succ u1)} (LocalHomeomorph.{u4, u1} X H _inst_7 _inst_1) (fun (_x : LocalHomeomorph.{u4, u1} X H _inst_7 _inst_1) => X -> H) (LocalHomeomorph.hasCoeToFun.{u4, u1} X H _inst_7 _inst_1) e x)) (P (Function.comp.{succ u1, succ u3, succ u2} H M' H' (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u3, u2} M' H' _inst_5 _inst_4) f') (Function.comp.{succ u1, succ u4, succ u3} H X M' g (coeFn.{max (succ u1) (succ u4), max (succ u1) (succ u4)} (LocalHomeomorph.{u1, u4} H X _inst_1 _inst_7) (fun (_x : LocalHomeomorph.{u1, u4} H X _inst_1 _inst_7) => H -> X) (LocalHomeomorph.hasCoeToFun.{u1, u4} H X _inst_1 _inst_7) (LocalHomeomorph.symm.{u4, u1} X H _inst_7 _inst_1 e)))) (Set.preimage.{u1, u4} H X (coeFn.{max (succ u1) (succ u4), max (succ u1) (succ u4)} (LocalHomeomorph.{u1, u4} H X _inst_1 _inst_7) (fun (_x : LocalHomeomorph.{u1, u4} H X _inst_1 _inst_7) => H -> X) (LocalHomeomorph.hasCoeToFun.{u1, u4} H X _inst_1 _inst_7) (LocalHomeomorph.symm.{u4, u1} X H _inst_7 _inst_1 e)) s) (coeFn.{max (succ u4) (succ u1), max (succ u4) (succ u1)} (LocalHomeomorph.{u4, u1} X H _inst_7 _inst_1) (fun (_x : LocalHomeomorph.{u4, u1} X H _inst_7 _inst_1) => X -> H) (LocalHomeomorph.hasCoeToFun.{u4, u1} X H _inst_7 _inst_1) e x))))
-but is expected to have type
- forall {H : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} {X : Type.{u4}} [_inst_1 : TopologicalSpace.{u3} H] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] [_inst_7 : TopologicalSpace.{u4} X] {G : StructureGroupoid.{u3} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {f : LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4} {f' : LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u3} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u3, u2} H H' _inst_1 _inst_4 G G' P) -> (forall {g : X -> M'} {e : LocalHomeomorph.{u4, u3} X H _inst_7 _inst_1} {x : X} {s : Set.{u4} X}, (Membership.mem.{u4, u4} X (Set.{u4} X) (Set.instMembershipSet.{u4} X) x (LocalEquiv.source.{u4, u3} X H (LocalHomeomorph.toLocalEquiv.{u4, u3} X H _inst_7 _inst_1 e))) -> (Membership.mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4) (Set.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) (Set.instMembershipSet.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u2, u1} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.mem.{u1, u1} M' (Set.{u1} M') (Set.instMembershipSet.{u1} M') (g x) (LocalEquiv.source.{u1, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u1, u2} M' H' _inst_5 _inst_4 f))) -> (Membership.mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4) (Set.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) (Set.instMembershipSet.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) f' (StructureGroupoid.maximalAtlas.{u2, u1} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.mem.{u1, u1} M' (Set.{u1} M') (Set.instMembershipSet.{u1} M') (g x) (LocalEquiv.source.{u1, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u1, u2} M' H' _inst_5 _inst_4 f'))) -> (ContinuousWithinAt.{u4, u1} X M' _inst_7 _inst_5 g s x) -> (Iff (P (Function.comp.{succ u3, succ u1, succ u2} H M' H' (LocalHomeomorph.toFun'.{u1, u2} M' H' _inst_5 _inst_4 f) (Function.comp.{succ u3, succ u4, succ u1} H X M' g (LocalHomeomorph.toFun'.{u3, u4} H X _inst_1 _inst_7 (LocalHomeomorph.symm.{u4, u3} X H _inst_7 _inst_1 e)))) (Set.preimage.{u3, u4} H X (LocalHomeomorph.toFun'.{u3, u4} H X _inst_1 _inst_7 (LocalHomeomorph.symm.{u4, u3} X H _inst_7 _inst_1 e)) s) (LocalHomeomorph.toFun'.{u4, u3} X H _inst_7 _inst_1 e x)) (P (Function.comp.{succ u3, succ u1, succ u2} H M' H' (LocalHomeomorph.toFun'.{u1, u2} M' H' _inst_5 _inst_4 f') (Function.comp.{succ u3, succ u4, succ u1} H X M' g (LocalHomeomorph.toFun'.{u3, u4} H X _inst_1 _inst_7 (LocalHomeomorph.symm.{u4, u3} X H _inst_7 _inst_1 e)))) (Set.preimage.{u3, u4} H X (LocalHomeomorph.toFun'.{u3, u4} H X _inst_1 _inst_7 (LocalHomeomorph.symm.{u4, u3} X H _inst_7 _inst_1 e)) s) (LocalHomeomorph.toFun'.{u4, u3} X H _inst_7 _inst_1 e x))))
+<too large>
Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target_aux StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target_auxₓ'. -/
theorem liftPropWithinAt_indep_chart_target_aux {g : X → M'} {e : LocalHomeomorph X H} {x : X}
{s : Set X} (xe : x ∈ e.source) (hf : f ∈ G'.maximalAtlas M') (xf : g x ∈ f.source)
@@ -447,10 +435,7 @@ theorem liftPropWithinAt_indep_chart_target_aux {g : X → M'} {e : LocalHomeomo
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target_aux StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target_aux
/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_aux -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_aux is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {e : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1} {e' : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1} {f : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4} {f' : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (Membership.Mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) (Set.hasMem.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u1, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) x (LocalEquiv.source.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 e))) -> (Membership.Mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) (Set.hasMem.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) e' (StructureGroupoid.maximalAtlas.{u1, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) x (LocalEquiv.source.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 e'))) -> (Membership.Mem.{max u4 u3, max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (Set.{max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4)) (Set.hasMem.{max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u3, u4} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.Mem.{u4, u4} M' (Set.{u4} M') (Set.hasMem.{u4} M') (g x) (LocalEquiv.source.{u4, u3} M' H' (LocalHomeomorph.toLocalEquiv.{u4, u3} M' H' _inst_5 _inst_4 f))) -> (Membership.Mem.{max u4 u3, max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (Set.{max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4)) (Set.hasMem.{max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4)) f' (StructureGroupoid.maximalAtlas.{u3, u4} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.Mem.{u4, u4} M' (Set.{u4} M') (Set.hasMem.{u4} M') (g x) (LocalEquiv.source.{u4, u3} M' H' (LocalHomeomorph.toLocalEquiv.{u4, u3} M' H' _inst_5 _inst_4 f'))) -> (ContinuousWithinAt.{u2, u4} M M' _inst_2 _inst_5 g s x) -> (Iff (P (Function.comp.{succ u1, succ u4, succ u3} H M' H' (coeFn.{max (succ u4) (succ u3), max (succ u4) (succ u3)} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u4, u3} M' H' _inst_5 _inst_4) f) (Function.comp.{succ u1, succ u2, succ u4} H M M' g (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e)))) (Set.preimage.{u1, u2} H M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e)) s) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) e x)) (P (Function.comp.{succ u1, succ u4, succ u3} H M' H' (coeFn.{max (succ u4) (succ u3), max (succ u4) (succ u3)} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u4, u3} M' H' _inst_5 _inst_4) f') (Function.comp.{succ u1, succ u2, succ u4} H M M' g (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e')))) (Set.preimage.{u1, u2} H M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e')) s) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) e' x)))
-but is expected to have type
- forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u4} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {e : LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1} {e' : LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1} {f : LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4} {f' : LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {s : Set.{u3} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u4, u2} H H' _inst_1 _inst_4 G G' P) -> (Membership.mem.{max u4 u3, max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1) (Set.{max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1)) (Set.instMembershipSet.{max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u4, u3} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (LocalEquiv.source.{u3, u4} M H (LocalHomeomorph.toLocalEquiv.{u3, u4} M H _inst_2 _inst_1 e))) -> (Membership.mem.{max u4 u3, max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1) (Set.{max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1)) (Set.instMembershipSet.{max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1)) e' (StructureGroupoid.maximalAtlas.{u4, u3} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (LocalEquiv.source.{u3, u4} M H (LocalHomeomorph.toLocalEquiv.{u3, u4} M H _inst_2 _inst_1 e'))) -> (Membership.mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4) (Set.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) (Set.instMembershipSet.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u2, u1} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.mem.{u1, u1} M' (Set.{u1} M') (Set.instMembershipSet.{u1} M') (g x) (LocalEquiv.source.{u1, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u1, u2} M' H' _inst_5 _inst_4 f))) -> (Membership.mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4) (Set.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) (Set.instMembershipSet.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) f' (StructureGroupoid.maximalAtlas.{u2, u1} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.mem.{u1, u1} M' (Set.{u1} M') (Set.instMembershipSet.{u1} M') (g x) (LocalEquiv.source.{u1, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u1, u2} M' H' _inst_5 _inst_4 f'))) -> (ContinuousWithinAt.{u3, u1} M M' _inst_2 _inst_5 g s x) -> (Iff (P (Function.comp.{succ u4, succ u1, succ u2} H M' H' (LocalHomeomorph.toFun'.{u1, u2} M' H' _inst_5 _inst_4 f) (Function.comp.{succ u4, succ u3, succ u1} H M M' g (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 e)))) (Set.preimage.{u4, u3} H M (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 e)) s) (LocalHomeomorph.toFun'.{u3, u4} M H _inst_2 _inst_1 e x)) (P (Function.comp.{succ u4, succ u1, succ u2} H M' H' (LocalHomeomorph.toFun'.{u1, u2} M' H' _inst_5 _inst_4 f') (Function.comp.{succ u4, succ u3, succ u1} H M M' g (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 e')))) (Set.preimage.{u4, u3} H M (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 e')) s) (LocalHomeomorph.toFun'.{u3, u4} M H _inst_2 _inst_1 e' x)))
+<too large>
Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_aux StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_auxₓ'. -/
/-- If a property of a germ of function `g` on a pointed set `(s, x)` is invariant under the
structure groupoid (by composition in the source space and in the target space), then
@@ -468,10 +453,7 @@ theorem liftPropWithinAt_indep_chart_aux (he : e ∈ G.maximalAtlas M) (xe : x
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_aux StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_aux
/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {e : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1} {f : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (forall [_inst_8 : HasGroupoid.{u1, u2} H _inst_1 M _inst_2 _inst_3 G] [_inst_9 : HasGroupoid.{u3, u4} H' _inst_4 M' _inst_5 _inst_6 G'], (Membership.Mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) (Set.hasMem.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u1, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) x (LocalEquiv.source.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 e))) -> (Membership.Mem.{max u4 u3, max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (Set.{max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4)) (Set.hasMem.{max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u3, u4} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.Mem.{u4, u4} M' (Set.{u4} M') (Set.hasMem.{u4} M') (g x) (LocalEquiv.source.{u4, u3} M' H' (LocalHomeomorph.toLocalEquiv.{u4, u3} M' H' _inst_5 _inst_4 f))) -> (Iff (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) (And (ContinuousWithinAt.{u2, u4} M M' _inst_2 _inst_5 g s x) (P (Function.comp.{succ u1, succ u4, succ u3} H M' H' (coeFn.{max (succ u4) (succ u3), max (succ u4) (succ u3)} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u4, u3} M' H' _inst_5 _inst_4) f) (Function.comp.{succ u1, succ u2, succ u4} H M M' g (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e)))) (Set.preimage.{u1, u2} H M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e)) s) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) e x)))))
-but is expected to have type
- forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u4} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {e : LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1} {f : LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {s : Set.{u3} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u4, u2} H H' _inst_1 _inst_4 G G' P) -> (forall [_inst_8 : HasGroupoid.{u4, u3} H _inst_1 M _inst_2 _inst_3 G] [_inst_9 : HasGroupoid.{u2, u1} H' _inst_4 M' _inst_5 _inst_6 G'], (Membership.mem.{max u4 u3, max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1) (Set.{max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1)) (Set.instMembershipSet.{max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u4, u3} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (LocalEquiv.source.{u3, u4} M H (LocalHomeomorph.toLocalEquiv.{u3, u4} M H _inst_2 _inst_1 e))) -> (Membership.mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4) (Set.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) (Set.instMembershipSet.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u2, u1} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.mem.{u1, u1} M' (Set.{u1} M') (Set.instMembershipSet.{u1} M') (g x) (LocalEquiv.source.{u1, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u1, u2} M' H' _inst_5 _inst_4 f))) -> (Iff (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) (And (ContinuousWithinAt.{u3, u1} M M' _inst_2 _inst_5 g s x) (P (Function.comp.{succ u4, succ u1, succ u2} H M' H' (LocalHomeomorph.toFun'.{u1, u2} M' H' _inst_5 _inst_4 f) (Function.comp.{succ u4, succ u3, succ u1} H M M' g (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 e)))) (Set.preimage.{u4, u3} H M (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 e)) s) (LocalHomeomorph.toFun'.{u3, u4} M H _inst_2 _inst_1 e x)))))
+<too large>
Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chartₓ'. -/
theorem liftPropWithinAt_indep_chart [HasGroupoid M G] [HasGroupoid M' G']
(he : e ∈ G.maximalAtlas M) (xe : x ∈ e.source) (hf : f ∈ G'.maximalAtlas M')
@@ -483,10 +465,7 @@ theorem liftPropWithinAt_indep_chart [HasGroupoid M G] [HasGroupoid M' G']
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart
/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_source -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_source is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {e : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (forall [_inst_8 : HasGroupoid.{u1, u2} H _inst_1 M _inst_2 _inst_3 G], (Membership.Mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) (Set.hasMem.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u1, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) x (LocalEquiv.source.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 e))) -> (Iff (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) (ChartedSpace.LiftPropWithinAt.{u1, u1, u3, u4} H H H' M' _inst_1 _inst_1 (chartedSpaceSelf.{u1} H _inst_1) _inst_4 _inst_5 _inst_6 P (Function.comp.{succ u1, succ u2, succ u4} H M M' g (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e))) (Set.preimage.{u1, u2} H M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e)) s) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) e x))))
-but is expected to have type
- forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u4} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {e : LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1} {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {s : Set.{u3} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u4, u2} H H' _inst_1 _inst_4 G G' P) -> (forall [_inst_8 : HasGroupoid.{u4, u3} H _inst_1 M _inst_2 _inst_3 G], (Membership.mem.{max u4 u3, max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1) (Set.{max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1)) (Set.instMembershipSet.{max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u4, u3} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (LocalEquiv.source.{u3, u4} M H (LocalHomeomorph.toLocalEquiv.{u3, u4} M H _inst_2 _inst_1 e))) -> (Iff (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) (ChartedSpace.LiftPropWithinAt.{u4, u4, u2, u1} H H H' M' _inst_1 _inst_1 (chartedSpaceSelf.{u4} H _inst_1) _inst_4 _inst_5 _inst_6 P (Function.comp.{succ u4, succ u3, succ u1} H M M' g (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 e))) (Set.preimage.{u4, u3} H M (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 e)) s) (LocalHomeomorph.toFun'.{u3, u4} M H _inst_2 _inst_1 e x))))
+<too large>
Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_source StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_sourceₓ'. -/
/-- A version of `lift_prop_within_at_indep_chart`, only for the source. -/
theorem liftPropWithinAt_indep_chart_source [HasGroupoid M G] (he : e ∈ G.maximalAtlas M)
@@ -503,10 +482,7 @@ theorem liftPropWithinAt_indep_chart_source [HasGroupoid M G] (he : e ∈ G.maxi
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_source StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_source
/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {f : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (forall [_inst_8 : HasGroupoid.{u3, u4} H' _inst_4 M' _inst_5 _inst_6 G'], (Membership.Mem.{max u4 u3, max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (Set.{max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4)) (Set.hasMem.{max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u3, u4} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.Mem.{u4, u4} M' (Set.{u4} M') (Set.hasMem.{u4} M') (g x) (LocalEquiv.source.{u4, u3} M' H' (LocalHomeomorph.toLocalEquiv.{u4, u3} M' H' _inst_5 _inst_4 f))) -> (Iff (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) (And (ContinuousWithinAt.{u2, u4} M M' _inst_2 _inst_5 g s x) (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u3} H M H' H' _inst_1 _inst_2 _inst_3 _inst_4 _inst_4 (chartedSpaceSelf.{u3} H' _inst_4) P (Function.comp.{succ u2, succ u4, succ u3} M M' H' (coeFn.{max (succ u4) (succ u3), max (succ u4) (succ u3)} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u4, u3} M' H' _inst_5 _inst_4) f) g) s x))))
-but is expected to have type
- forall {H : Type.{u2}} {M : Type.{u1}} {H' : Type.{u4}} {M' : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : ChartedSpace.{u2, u1} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u4} H'] [_inst_5 : TopologicalSpace.{u3} M'] [_inst_6 : ChartedSpace.{u4, u3} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u2} H _inst_1} {G' : StructureGroupoid.{u4} H' _inst_4} {f : LocalHomeomorph.{u3, u4} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u2} H) -> H -> Prop} {g : M -> M'} {s : Set.{u1} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u2, u4} H H' _inst_1 _inst_4 G G' P) -> (forall [_inst_8 : HasGroupoid.{u4, u3} H' _inst_4 M' _inst_5 _inst_6 G'], (Membership.mem.{max u4 u3, max u4 u3} (LocalHomeomorph.{u3, u4} M' H' _inst_5 _inst_4) (Set.{max u4 u3} (LocalHomeomorph.{u3, u4} M' H' _inst_5 _inst_4)) (Set.instMembershipSet.{max u4 u3} (LocalHomeomorph.{u3, u4} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u4, u3} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.mem.{u3, u3} M' (Set.{u3} M') (Set.instMembershipSet.{u3} M') (g x) (LocalEquiv.source.{u3, u4} M' H' (LocalHomeomorph.toLocalEquiv.{u3, u4} M' H' _inst_5 _inst_4 f))) -> (Iff (ChartedSpace.LiftPropWithinAt.{u2, u1, u4, u3} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) (And (ContinuousWithinAt.{u1, u3} M M' _inst_2 _inst_5 g s x) (ChartedSpace.LiftPropWithinAt.{u2, u1, u4, u4} H M H' H' _inst_1 _inst_2 _inst_3 _inst_4 _inst_4 (chartedSpaceSelf.{u4} H' _inst_4) P (Function.comp.{succ u1, succ u3, succ u4} M M' H' (LocalHomeomorph.toFun'.{u3, u4} M' H' _inst_5 _inst_4 f) g) s x))))
+<too large>
Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_targetₓ'. -/
/-- A version of `lift_prop_within_at_indep_chart`, only for the target. -/
theorem liftPropWithinAt_indep_chart_target [HasGroupoid M' G'] (hf : f ∈ G'.maximalAtlas M')
@@ -522,10 +498,7 @@ theorem liftPropWithinAt_indep_chart_target [HasGroupoid M' G'] (hf : f ∈ G'.m
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target
/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart' -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart' is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {e : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1} {f : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (forall [_inst_8 : HasGroupoid.{u1, u2} H _inst_1 M _inst_2 _inst_3 G] [_inst_9 : HasGroupoid.{u3, u4} H' _inst_4 M' _inst_5 _inst_6 G'], (Membership.Mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) (Set.hasMem.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u1, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) x (LocalEquiv.source.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 e))) -> (Membership.Mem.{max u4 u3, max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (Set.{max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4)) (Set.hasMem.{max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u3, u4} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.Mem.{u4, u4} M' (Set.{u4} M') (Set.hasMem.{u4} M') (g x) (LocalEquiv.source.{u4, u3} M' H' (LocalHomeomorph.toLocalEquiv.{u4, u3} M' H' _inst_5 _inst_4 f))) -> (Iff (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) (And (ContinuousWithinAt.{u2, u4} M M' _inst_2 _inst_5 g s x) (ChartedSpace.LiftPropWithinAt.{u1, u1, u3, u3} H H H' H' _inst_1 _inst_1 (chartedSpaceSelf.{u1} H _inst_1) _inst_4 _inst_4 (chartedSpaceSelf.{u3} H' _inst_4) P (Function.comp.{succ u1, succ u4, succ u3} H M' H' (coeFn.{max (succ u4) (succ u3), max (succ u4) (succ u3)} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u4, u3} M' H' _inst_5 _inst_4) f) (Function.comp.{succ u1, succ u2, succ u4} H M M' g (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e)))) (Set.preimage.{u1, u2} H M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e)) s) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) e x)))))
-but is expected to have type
- forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u4} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {e : LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1} {f : LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {s : Set.{u3} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u4, u2} H H' _inst_1 _inst_4 G G' P) -> (forall [_inst_8 : HasGroupoid.{u4, u3} H _inst_1 M _inst_2 _inst_3 G] [_inst_9 : HasGroupoid.{u2, u1} H' _inst_4 M' _inst_5 _inst_6 G'], (Membership.mem.{max u4 u3, max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1) (Set.{max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1)) (Set.instMembershipSet.{max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u4, u3} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (LocalEquiv.source.{u3, u4} M H (LocalHomeomorph.toLocalEquiv.{u3, u4} M H _inst_2 _inst_1 e))) -> (Membership.mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4) (Set.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) (Set.instMembershipSet.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u2, u1} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.mem.{u1, u1} M' (Set.{u1} M') (Set.instMembershipSet.{u1} M') (g x) (LocalEquiv.source.{u1, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u1, u2} M' H' _inst_5 _inst_4 f))) -> (Iff (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) (And (ContinuousWithinAt.{u3, u1} M M' _inst_2 _inst_5 g s x) (ChartedSpace.LiftPropWithinAt.{u4, u4, u2, u2} H H H' H' _inst_1 _inst_1 (chartedSpaceSelf.{u4} H _inst_1) _inst_4 _inst_4 (chartedSpaceSelf.{u2} H' _inst_4) P (Function.comp.{succ u4, succ u1, succ u2} H M' H' (LocalHomeomorph.toFun'.{u1, u2} M' H' _inst_5 _inst_4 f) (Function.comp.{succ u4, succ u3, succ u1} H M M' g (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 e)))) (Set.preimage.{u4, u3} H M (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 e)) s) (LocalHomeomorph.toFun'.{u3, u4} M H _inst_2 _inst_1 e x)))))
+<too large>
Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart' StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart'ₓ'. -/
/-- A version of `lift_prop_within_at_indep_chart`, that uses `lift_prop_within_at` on both sides.
-/
@@ -545,10 +518,7 @@ theorem liftPropWithinAt_indep_chart' [HasGroupoid M G] [HasGroupoid M' G']
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart' StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart'
/- warning: structure_groupoid.local_invariant_prop.lift_prop_on_indep_chart -> StructureGroupoid.LocalInvariantProp.liftPropOn_indep_chart is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {e : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1} {f : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (forall [_inst_8 : HasGroupoid.{u1, u2} H _inst_1 M _inst_2 _inst_3 G] [_inst_9 : HasGroupoid.{u3, u4} H' _inst_4 M' _inst_5 _inst_6 G'], (Membership.Mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) (Set.hasMem.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u1, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.Mem.{max u4 u3, max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (Set.{max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4)) (Set.hasMem.{max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u3, u4} H' M' _inst_4 _inst_5 _inst_6 G')) -> (ChartedSpace.LiftPropOn.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s) -> (forall {y : H}, (Membership.Mem.{u1, u1} H (Set.{u1} H) (Set.hasMem.{u1} H) y (Inter.inter.{u1} (Set.{u1} H) (Set.hasInter.{u1} H) (LocalEquiv.target.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 e)) (Set.preimage.{u1, u2} H M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e)) (Inter.inter.{u2} (Set.{u2} M) (Set.hasInter.{u2} M) s (Set.preimage.{u2, u4} M M' g (LocalEquiv.source.{u4, u3} M' H' (LocalHomeomorph.toLocalEquiv.{u4, u3} M' H' _inst_5 _inst_4 f))))))) -> (P (Function.comp.{succ u1, succ u4, succ u3} H M' H' (coeFn.{max (succ u4) (succ u3), max (succ u4) (succ u3)} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u4, u3} M' H' _inst_5 _inst_4) f) (Function.comp.{succ u1, succ u2, succ u4} H M M' g (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e)))) (Set.preimage.{u1, u2} H M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e)) s) y)))
-but is expected to have type
- forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u4} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {e : LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1} {f : LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {s : Set.{u3} M}, (StructureGroupoid.LocalInvariantProp.{u4, u2} H H' _inst_1 _inst_4 G G' P) -> (forall [_inst_8 : HasGroupoid.{u4, u3} H _inst_1 M _inst_2 _inst_3 G] [_inst_9 : HasGroupoid.{u2, u1} H' _inst_4 M' _inst_5 _inst_6 G'], (Membership.mem.{max u4 u3, max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1) (Set.{max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1)) (Set.instMembershipSet.{max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u4, u3} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4) (Set.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) (Set.instMembershipSet.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u2, u1} H' M' _inst_4 _inst_5 _inst_6 G')) -> (ChartedSpace.LiftPropOn.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s) -> (forall {y : H}, (Membership.mem.{u4, u4} H (Set.{u4} H) (Set.instMembershipSet.{u4} H) y (Inter.inter.{u4} (Set.{u4} H) (Set.instInterSet.{u4} H) (LocalEquiv.target.{u3, u4} M H (LocalHomeomorph.toLocalEquiv.{u3, u4} M H _inst_2 _inst_1 e)) (Set.preimage.{u4, u3} H M (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 e)) (Inter.inter.{u3} (Set.{u3} M) (Set.instInterSet.{u3} M) s (Set.preimage.{u3, u1} M M' g (LocalEquiv.source.{u1, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u1, u2} M' H' _inst_5 _inst_4 f))))))) -> (P (Function.comp.{succ u4, succ u1, succ u2} H M' H' (LocalHomeomorph.toFun'.{u1, u2} M' H' _inst_5 _inst_4 f) (Function.comp.{succ u4, succ u3, succ u1} H M M' g (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 e)))) (Set.preimage.{u4, u3} H M (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 e)) s) y)))
+<too large>
Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_on_indep_chart StructureGroupoid.LocalInvariantProp.liftPropOn_indep_chartₓ'. -/
theorem liftPropOn_indep_chart [HasGroupoid M G] [HasGroupoid M' G'] (he : e ∈ G.maximalAtlas M)
(hf : f ∈ G'.maximalAtlas M') (h : LiftPropOn P g s) {y : H}
@@ -559,10 +529,7 @@ theorem liftPropOn_indep_chart [HasGroupoid M G] [HasGroupoid M' G'] (he : e ∈
#align structure_groupoid.local_invariant_prop.lift_prop_on_indep_chart StructureGroupoid.LocalInvariantProp.liftPropOn_indep_chart
/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_inter' -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_inter' is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M} {t : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (Membership.Mem.{u2, u2} (Set.{u2} M) (Filter.{u2} M) (Filter.hasMem.{u2} M) t (nhdsWithin.{u2} M _inst_2 x s)) -> (Iff (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g (Inter.inter.{u2} (Set.{u2} M) (Set.hasInter.{u2} M) s t) x) (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x))
-but is expected to have type
- forall {H : Type.{u3}} {M : Type.{u4}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} H] [_inst_2 : TopologicalSpace.{u4} M] [_inst_3 : ChartedSpace.{u3, u4} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u3} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u3} H) -> H -> Prop} {g : M -> M'} {s : Set.{u4} M} {t : Set.{u4} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u3, u2} H H' _inst_1 _inst_4 G G' P) -> (Membership.mem.{u4, u4} (Set.{u4} M) (Filter.{u4} M) (instMembershipSetFilter.{u4} M) t (nhdsWithin.{u4} M _inst_2 x s)) -> (Iff (ChartedSpace.LiftPropWithinAt.{u3, u4, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g (Inter.inter.{u4} (Set.{u4} M) (Set.instInterSet.{u4} M) s t) x) (ChartedSpace.LiftPropWithinAt.{u3, u4, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x))
+<too large>
Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_inter' StructureGroupoid.LocalInvariantProp.liftPropWithinAt_inter'ₓ'. -/
theorem liftPropWithinAt_inter' (ht : t ∈ 𝓝[s] x) :
LiftPropWithinAt P g (s ∩ t) x ↔ LiftPropWithinAt P g s x :=
@@ -574,10 +541,7 @@ theorem liftPropWithinAt_inter' (ht : t ∈ 𝓝[s] x) :
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_inter' StructureGroupoid.LocalInvariantProp.liftPropWithinAt_inter'
/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_inter -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_inter is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M} {t : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (Membership.Mem.{u2, u2} (Set.{u2} M) (Filter.{u2} M) (Filter.hasMem.{u2} M) t (nhds.{u2} M _inst_2 x)) -> (Iff (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g (Inter.inter.{u2} (Set.{u2} M) (Set.hasInter.{u2} M) s t) x) (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x))
-but is expected to have type
- forall {H : Type.{u3}} {M : Type.{u4}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} H] [_inst_2 : TopologicalSpace.{u4} M] [_inst_3 : ChartedSpace.{u3, u4} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u3} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u3} H) -> H -> Prop} {g : M -> M'} {s : Set.{u4} M} {t : Set.{u4} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u3, u2} H H' _inst_1 _inst_4 G G' P) -> (Membership.mem.{u4, u4} (Set.{u4} M) (Filter.{u4} M) (instMembershipSetFilter.{u4} M) t (nhds.{u4} M _inst_2 x)) -> (Iff (ChartedSpace.LiftPropWithinAt.{u3, u4, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g (Inter.inter.{u4} (Set.{u4} M) (Set.instInterSet.{u4} M) s t) x) (ChartedSpace.LiftPropWithinAt.{u3, u4, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x))
+<too large>
Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_inter StructureGroupoid.LocalInvariantProp.liftPropWithinAt_interₓ'. -/
theorem liftPropWithinAt_inter (ht : t ∈ 𝓝 x) :
LiftPropWithinAt P g (s ∩ t) x ↔ LiftPropWithinAt P g s x :=
@@ -585,30 +549,21 @@ theorem liftPropWithinAt_inter (ht : t ∈ 𝓝 x) :
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_inter StructureGroupoid.LocalInvariantProp.liftPropWithinAt_inter
/- warning: structure_groupoid.local_invariant_prop.lift_prop_at_of_lift_prop_within_at -> StructureGroupoid.LocalInvariantProp.liftPropAt_of_liftPropWithinAt is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) -> (Membership.Mem.{u2, u2} (Set.{u2} M) (Filter.{u2} M) (Filter.hasMem.{u2} M) s (nhds.{u2} M _inst_2 x)) -> (ChartedSpace.LiftPropAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g x)
-but is expected to have type
- forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u4} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {s : Set.{u3} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u4, u2} H H' _inst_1 _inst_4 G G' P) -> (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) -> (Membership.mem.{u3, u3} (Set.{u3} M) (Filter.{u3} M) (instMembershipSetFilter.{u3} M) s (nhds.{u3} M _inst_2 x)) -> (ChartedSpace.LiftPropAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g x)
+<too large>
Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_at_of_lift_prop_within_at StructureGroupoid.LocalInvariantProp.liftPropAt_of_liftPropWithinAtₓ'. -/
theorem liftPropAt_of_liftPropWithinAt (h : LiftPropWithinAt P g s x) (hs : s ∈ 𝓝 x) :
LiftPropAt P g x := by rwa [← univ_inter s, hG.lift_prop_within_at_inter hs] at h
#align structure_groupoid.local_invariant_prop.lift_prop_at_of_lift_prop_within_at StructureGroupoid.LocalInvariantProp.liftPropAt_of_liftPropWithinAt
/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_of_lift_prop_at_of_mem_nhds -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_of_liftPropAt_of_mem_nhds is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (ChartedSpace.LiftPropAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g x) -> (Membership.Mem.{u2, u2} (Set.{u2} M) (Filter.{u2} M) (Filter.hasMem.{u2} M) s (nhds.{u2} M _inst_2 x)) -> (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x)
-but is expected to have type
- forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u4} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {s : Set.{u3} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u4, u2} H H' _inst_1 _inst_4 G G' P) -> (ChartedSpace.LiftPropAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g x) -> (Membership.mem.{u3, u3} (Set.{u3} M) (Filter.{u3} M) (instMembershipSetFilter.{u3} M) s (nhds.{u3} M _inst_2 x)) -> (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x)
+<too large>
Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_of_lift_prop_at_of_mem_nhds StructureGroupoid.LocalInvariantProp.liftPropWithinAt_of_liftPropAt_of_mem_nhdsₓ'. -/
theorem liftPropWithinAt_of_liftPropAt_of_mem_nhds (h : LiftPropAt P g x) (hs : s ∈ 𝓝 x) :
LiftPropWithinAt P g s x := by rwa [← univ_inter s, hG.lift_prop_within_at_inter hs]
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_of_lift_prop_at_of_mem_nhds StructureGroupoid.LocalInvariantProp.liftPropWithinAt_of_liftPropAt_of_mem_nhds
/- warning: structure_groupoid.local_invariant_prop.lift_prop_on_of_locally_lift_prop_on -> StructureGroupoid.LocalInvariantProp.liftPropOn_of_locally_liftPropOn is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (forall (x : M), (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) x s) -> (Exists.{succ u2} (Set.{u2} M) (fun (u : Set.{u2} M) => And (IsOpen.{u2} M _inst_2 u) (And (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) x u) (ChartedSpace.LiftPropOn.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g (Inter.inter.{u2} (Set.{u2} M) (Set.hasInter.{u2} M) s u)))))) -> (ChartedSpace.LiftPropOn.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s)
-but is expected to have type
- forall {H : Type.{u3}} {M : Type.{u4}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} H] [_inst_2 : TopologicalSpace.{u4} M] [_inst_3 : ChartedSpace.{u3, u4} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u3} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u3} H) -> H -> Prop} {g : M -> M'} {s : Set.{u4} M}, (StructureGroupoid.LocalInvariantProp.{u3, u2} H H' _inst_1 _inst_4 G G' P) -> (forall (x : M), (Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x s) -> (Exists.{succ u4} (Set.{u4} M) (fun (u : Set.{u4} M) => And (IsOpen.{u4} M _inst_2 u) (And (Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x u) (ChartedSpace.LiftPropOn.{u3, u4, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g (Inter.inter.{u4} (Set.{u4} M) (Set.instInterSet.{u4} M) s u)))))) -> (ChartedSpace.LiftPropOn.{u3, u4, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s)
+<too large>
Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_on_of_locally_lift_prop_on StructureGroupoid.LocalInvariantProp.liftPropOn_of_locally_liftPropOnₓ'. -/
theorem liftPropOn_of_locally_liftPropOn
(h : ∀ x ∈ s, ∃ u, IsOpen u ∧ x ∈ u ∧ LiftPropOn P g (s ∩ u)) : LiftPropOn P g s :=
@@ -621,10 +576,7 @@ theorem liftPropOn_of_locally_liftPropOn
#align structure_groupoid.local_invariant_prop.lift_prop_on_of_locally_lift_prop_on StructureGroupoid.LocalInvariantProp.liftPropOn_of_locally_liftPropOn
/- warning: structure_groupoid.local_invariant_prop.lift_prop_of_locally_lift_prop_on -> StructureGroupoid.LocalInvariantProp.liftProp_of_locally_liftPropOn is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (forall (x : M), Exists.{succ u2} (Set.{u2} M) (fun (u : Set.{u2} M) => And (IsOpen.{u2} M _inst_2 u) (And (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) x u) (ChartedSpace.LiftPropOn.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g u)))) -> (ChartedSpace.LiftProp.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g)
-but is expected to have type
- forall {H : Type.{u3}} {M : Type.{u4}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} H] [_inst_2 : TopologicalSpace.{u4} M] [_inst_3 : ChartedSpace.{u3, u4} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u3} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u3} H) -> H -> Prop} {g : M -> M'}, (StructureGroupoid.LocalInvariantProp.{u3, u2} H H' _inst_1 _inst_4 G G' P) -> (forall (x : M), Exists.{succ u4} (Set.{u4} M) (fun (u : Set.{u4} M) => And (IsOpen.{u4} M _inst_2 u) (And (Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x u) (ChartedSpace.LiftPropOn.{u3, u4, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g u)))) -> (ChartedSpace.LiftProp.{u3, u4, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g)
+<too large>
Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_of_locally_lift_prop_on StructureGroupoid.LocalInvariantProp.liftProp_of_locally_liftPropOnₓ'. -/
theorem liftProp_of_locally_liftPropOn (h : ∀ x, ∃ u, IsOpen u ∧ x ∈ u ∧ LiftPropOn P g u) :
LiftProp P g := by
@@ -634,10 +586,7 @@ theorem liftProp_of_locally_liftPropOn (h : ∀ x, ∃ u, IsOpen u ∧ x ∈ u
#align structure_groupoid.local_invariant_prop.lift_prop_of_locally_lift_prop_on StructureGroupoid.LocalInvariantProp.liftProp_of_locally_liftPropOn
/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_of_eventually_eq -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_of_eventuallyEq is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) -> (Filter.EventuallyEq.{u2, u4} M M' (nhdsWithin.{u2} M _inst_2 x s) g' g) -> (Eq.{succ u4} M' (g' x) (g x)) -> (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' s x)
-but is expected to have type
- forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u4} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {s : Set.{u3} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u4, u2} H H' _inst_1 _inst_4 G G' P) -> (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) -> (Filter.EventuallyEq.{u3, u1} M M' (nhdsWithin.{u3} M _inst_2 x s) g' g) -> (Eq.{succ u1} M' (g' x) (g x)) -> (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' s x)
+<too large>
Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_of_eventuallyEqₓ'. -/
theorem liftPropWithinAt_congr_of_eventuallyEq (h : LiftPropWithinAt P g s x) (h₁ : g' =ᶠ[𝓝[s] x] g)
(hx : g' x = g x) : LiftPropWithinAt P g' s x :=
@@ -653,10 +602,7 @@ theorem liftPropWithinAt_congr_of_eventuallyEq (h : LiftPropWithinAt P g s x) (h
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_of_eventuallyEq
/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_iff_of_eventually_eq -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_iff_of_eventuallyEq is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (Filter.EventuallyEq.{u2, u4} M M' (nhdsWithin.{u2} M _inst_2 x s) g' g) -> (Eq.{succ u4} M' (g' x) (g x)) -> (Iff (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' s x) (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x))
-but is expected to have type
- forall {H : Type.{u2}} {M : Type.{u4}} {H' : Type.{u1}} {M' : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u4} M] [_inst_3 : ChartedSpace.{u2, u4} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u1} H'] [_inst_5 : TopologicalSpace.{u3} M'] [_inst_6 : ChartedSpace.{u1, u3} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u2} H _inst_1} {G' : StructureGroupoid.{u1} H' _inst_4} {P : (H -> H') -> (Set.{u2} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {s : Set.{u4} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u2, u1} H H' _inst_1 _inst_4 G G' P) -> (Filter.EventuallyEq.{u4, u3} M M' (nhdsWithin.{u4} M _inst_2 x s) g' g) -> (Eq.{succ u3} M' (g' x) (g x)) -> (Iff (ChartedSpace.LiftPropWithinAt.{u2, u4, u1, u3} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' s x) (ChartedSpace.LiftPropWithinAt.{u2, u4, u1, u3} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x))
+<too large>
Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_iff_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_iff_of_eventuallyEqₓ'. -/
theorem liftPropWithinAt_congr_iff_of_eventuallyEq (h₁ : g' =ᶠ[𝓝[s] x] g) (hx : g' x = g x) :
LiftPropWithinAt P g' s x ↔ LiftPropWithinAt P g s x :=
@@ -665,10 +611,7 @@ theorem liftPropWithinAt_congr_iff_of_eventuallyEq (h₁ : g' =ᶠ[𝓝[s] x] g)
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_iff_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_iff_of_eventuallyEq
/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_iff -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_iff is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (forall (y : M), (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) y s) -> (Eq.{succ u4} M' (g' y) (g y))) -> (Eq.{succ u4} M' (g' x) (g x)) -> (Iff (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' s x) (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x))
-but is expected to have type
- forall {H : Type.{u2}} {M : Type.{u4}} {H' : Type.{u1}} {M' : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u4} M] [_inst_3 : ChartedSpace.{u2, u4} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u1} H'] [_inst_5 : TopologicalSpace.{u3} M'] [_inst_6 : ChartedSpace.{u1, u3} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u2} H _inst_1} {G' : StructureGroupoid.{u1} H' _inst_4} {P : (H -> H') -> (Set.{u2} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {s : Set.{u4} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u2, u1} H H' _inst_1 _inst_4 G G' P) -> (forall (y : M), (Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) y s) -> (Eq.{succ u3} M' (g' y) (g y))) -> (Eq.{succ u3} M' (g' x) (g x)) -> (Iff (ChartedSpace.LiftPropWithinAt.{u2, u4, u1, u3} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' s x) (ChartedSpace.LiftPropWithinAt.{u2, u4, u1, u3} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x))
+<too large>
Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_iff StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_iffₓ'. -/
theorem liftPropWithinAt_congr_iff (h₁ : ∀ y ∈ s, g' y = g y) (hx : g' x = g x) :
LiftPropWithinAt P g' s x ↔ LiftPropWithinAt P g s x :=
@@ -676,10 +619,7 @@ theorem liftPropWithinAt_congr_iff (h₁ : ∀ y ∈ s, g' y = g y) (hx : g' x =
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_iff StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_iff
/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_congr -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) -> (forall (y : M), (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) y s) -> (Eq.{succ u4} M' (g' y) (g y))) -> (Eq.{succ u4} M' (g' x) (g x)) -> (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' s x)
-but is expected to have type
- forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u4} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {s : Set.{u3} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u4, u2} H H' _inst_1 _inst_4 G G' P) -> (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) -> (forall (y : M), (Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) y s) -> (Eq.{succ u1} M' (g' y) (g y))) -> (Eq.{succ u1} M' (g' x) (g x)) -> (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' s x)
+<too large>
Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congrₓ'. -/
theorem liftPropWithinAt_congr (h : LiftPropWithinAt P g s x) (h₁ : ∀ y ∈ s, g' y = g y)
(hx : g' x = g x) : LiftPropWithinAt P g' s x :=
@@ -687,10 +627,7 @@ theorem liftPropWithinAt_congr (h : LiftPropWithinAt P g s x) (h₁ : ∀ y ∈
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr
/- warning: structure_groupoid.local_invariant_prop.lift_prop_at_congr_iff_of_eventually_eq -> StructureGroupoid.LocalInvariantProp.liftPropAt_congr_iff_of_eventuallyEq is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (Filter.EventuallyEq.{u2, u4} M M' (nhds.{u2} M _inst_2 x) g' g) -> (Iff (ChartedSpace.LiftPropAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' x) (ChartedSpace.LiftPropAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g x))
-but is expected to have type
- forall {H : Type.{u2}} {M : Type.{u4}} {H' : Type.{u1}} {M' : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u4} M] [_inst_3 : ChartedSpace.{u2, u4} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u1} H'] [_inst_5 : TopologicalSpace.{u3} M'] [_inst_6 : ChartedSpace.{u1, u3} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u2} H _inst_1} {G' : StructureGroupoid.{u1} H' _inst_4} {P : (H -> H') -> (Set.{u2} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {x : M}, (StructureGroupoid.LocalInvariantProp.{u2, u1} H H' _inst_1 _inst_4 G G' P) -> (Filter.EventuallyEq.{u4, u3} M M' (nhds.{u4} M _inst_2 x) g' g) -> (Iff (ChartedSpace.LiftPropAt.{u2, u4, u1, u3} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' x) (ChartedSpace.LiftPropAt.{u2, u4, u1, u3} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g x))
+<too large>
Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_at_congr_iff_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropAt_congr_iff_of_eventuallyEqₓ'. -/
theorem liftPropAt_congr_iff_of_eventuallyEq (h₁ : g' =ᶠ[𝓝 x] g) :
LiftPropAt P g' x ↔ LiftPropAt P g x :=
@@ -698,10 +635,7 @@ theorem liftPropAt_congr_iff_of_eventuallyEq (h₁ : g' =ᶠ[𝓝 x] g) :
#align structure_groupoid.local_invariant_prop.lift_prop_at_congr_iff_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropAt_congr_iff_of_eventuallyEq
/- warning: structure_groupoid.local_invariant_prop.lift_prop_at_congr_of_eventually_eq -> StructureGroupoid.LocalInvariantProp.liftPropAt_congr_of_eventuallyEq is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (ChartedSpace.LiftPropAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g x) -> (Filter.EventuallyEq.{u2, u4} M M' (nhds.{u2} M _inst_2 x) g' g) -> (ChartedSpace.LiftPropAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' x)
-but is expected to have type
- forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u4} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {x : M}, (StructureGroupoid.LocalInvariantProp.{u4, u2} H H' _inst_1 _inst_4 G G' P) -> (ChartedSpace.LiftPropAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g x) -> (Filter.EventuallyEq.{u3, u1} M M' (nhds.{u3} M _inst_2 x) g' g) -> (ChartedSpace.LiftPropAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' x)
+<too large>
Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_at_congr_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropAt_congr_of_eventuallyEqₓ'. -/
theorem liftPropAt_congr_of_eventuallyEq (h : LiftPropAt P g x) (h₁ : g' =ᶠ[𝓝 x] g) :
LiftPropAt P g' x :=
@@ -709,20 +643,14 @@ theorem liftPropAt_congr_of_eventuallyEq (h : LiftPropAt P g x) (h₁ : g' =ᶠ[
#align structure_groupoid.local_invariant_prop.lift_prop_at_congr_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropAt_congr_of_eventuallyEq
/- warning: structure_groupoid.local_invariant_prop.lift_prop_on_congr -> StructureGroupoid.LocalInvariantProp.liftPropOn_congr is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {s : Set.{u2} M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (ChartedSpace.LiftPropOn.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s) -> (forall (y : M), (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) y s) -> (Eq.{succ u4} M' (g' y) (g y))) -> (ChartedSpace.LiftPropOn.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' s)
-but is expected to have type
- forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u4} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {s : Set.{u3} M}, (StructureGroupoid.LocalInvariantProp.{u4, u2} H H' _inst_1 _inst_4 G G' P) -> (ChartedSpace.LiftPropOn.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s) -> (forall (y : M), (Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) y s) -> (Eq.{succ u1} M' (g' y) (g y))) -> (ChartedSpace.LiftPropOn.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' s)
+<too large>
Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_on_congr StructureGroupoid.LocalInvariantProp.liftPropOn_congrₓ'. -/
theorem liftPropOn_congr (h : LiftPropOn P g s) (h₁ : ∀ y ∈ s, g' y = g y) : LiftPropOn P g' s :=
fun x hx => hG.liftPropWithinAt_congr (h x hx) h₁ (h₁ x hx)
#align structure_groupoid.local_invariant_prop.lift_prop_on_congr StructureGroupoid.LocalInvariantProp.liftPropOn_congr
/- warning: structure_groupoid.local_invariant_prop.lift_prop_on_congr_iff -> StructureGroupoid.LocalInvariantProp.liftPropOn_congr_iff is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {s : Set.{u2} M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (forall (y : M), (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) y s) -> (Eq.{succ u4} M' (g' y) (g y))) -> (Iff (ChartedSpace.LiftPropOn.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' s) (ChartedSpace.LiftPropOn.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s))
-but is expected to have type
- forall {H : Type.{u2}} {M : Type.{u4}} {H' : Type.{u1}} {M' : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u4} M] [_inst_3 : ChartedSpace.{u2, u4} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u1} H'] [_inst_5 : TopologicalSpace.{u3} M'] [_inst_6 : ChartedSpace.{u1, u3} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u2} H _inst_1} {G' : StructureGroupoid.{u1} H' _inst_4} {P : (H -> H') -> (Set.{u2} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {s : Set.{u4} M}, (StructureGroupoid.LocalInvariantProp.{u2, u1} H H' _inst_1 _inst_4 G G' P) -> (forall (y : M), (Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) y s) -> (Eq.{succ u3} M' (g' y) (g y))) -> (Iff (ChartedSpace.LiftPropOn.{u2, u4, u1, u3} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' s) (ChartedSpace.LiftPropOn.{u2, u4, u1, u3} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s))
+<too large>
Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_on_congr_iff StructureGroupoid.LocalInvariantProp.liftPropOn_congr_iffₓ'. -/
theorem liftPropOn_congr_iff (h₁ : ∀ y ∈ s, g' y = g y) : LiftPropOn P g' s ↔ LiftPropOn P g s :=
⟨fun h => hG.liftPropOn_congr h fun y hy => (h₁ y hy).symm, fun h => hG.liftPropOn_congr h h₁⟩
@@ -731,10 +659,7 @@ theorem liftPropOn_congr_iff (h₁ : ∀ y ∈ s, g' y = g y) : LiftPropOn P g'
omit hG
/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_mono_of_mem -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_mono_of_mem is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M} {t : Set.{u2} M} {x : M}, (forall {{s : Set.{u1} H}} {{x : H}} {{t : Set.{u1} H}} {{f : H -> H'}}, (Membership.Mem.{u1, u1} (Set.{u1} H) (Filter.{u1} H) (Filter.hasMem.{u1} H) s (nhdsWithin.{u1} H _inst_1 x t)) -> (P f s x) -> (P f t x)) -> (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) -> (Membership.Mem.{u2, u2} (Set.{u2} M) (Filter.{u2} M) (Filter.hasMem.{u2} M) s (nhdsWithin.{u2} M _inst_2 x t)) -> (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g t x)
-but is expected to have type
- forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {s : Set.{u3} M} {t : Set.{u3} M} {x : M}, (forall {{s : Set.{u4} H}} {{x : H}} {{t : Set.{u4} H}} {{f : H -> H'}}, (Membership.mem.{u4, u4} (Set.{u4} H) (Filter.{u4} H) (instMembershipSetFilter.{u4} H) s (nhdsWithin.{u4} H _inst_1 x t)) -> (P f s x) -> (P f t x)) -> (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) -> (Membership.mem.{u3, u3} (Set.{u3} M) (Filter.{u3} M) (instMembershipSetFilter.{u3} M) s (nhdsWithin.{u3} M _inst_2 x t)) -> (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g t x)
+<too large>
Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_mono_of_mem StructureGroupoid.LocalInvariantProp.liftPropWithinAt_mono_of_memₓ'. -/
theorem liftPropWithinAt_mono_of_mem
(mono_of_mem : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, s ∈ 𝓝[t] x → P f s x → P f t x)
@@ -746,10 +671,7 @@ theorem liftPropWithinAt_mono_of_mem
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_mono_of_mem StructureGroupoid.LocalInvariantProp.liftPropWithinAt_mono_of_mem
/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_mono -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_mono is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M} {t : Set.{u2} M} {x : M}, (forall {{s : Set.{u1} H}} {{x : H}} {{t : Set.{u1} H}} {{f : H -> H'}}, (HasSubset.Subset.{u1} (Set.{u1} H) (Set.hasSubset.{u1} H) t s) -> (P f s x) -> (P f t x)) -> (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) -> (HasSubset.Subset.{u2} (Set.{u2} M) (Set.hasSubset.{u2} M) t s) -> (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g t x)
-but is expected to have type
- forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {s : Set.{u3} M} {t : Set.{u3} M} {x : M}, (forall {{s : Set.{u4} H}} {{x : H}} {{t : Set.{u4} H}} {{f : H -> H'}}, (HasSubset.Subset.{u4} (Set.{u4} H) (Set.instHasSubsetSet.{u4} H) t s) -> (P f s x) -> (P f t x)) -> (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) -> (HasSubset.Subset.{u3} (Set.{u3} M) (Set.instHasSubsetSet.{u3} M) t s) -> (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g t x)
+<too large>
Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_mono StructureGroupoid.LocalInvariantProp.liftPropWithinAt_monoₓ'. -/
theorem liftPropWithinAt_mono (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆ s → P f s x → P f t x)
(h : LiftPropWithinAt P g s x) (hts : t ⊆ s) : LiftPropWithinAt P g t x :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/09079525fd01b3dda35e96adaa08d2f943e1648c
@@ -967,7 +967,7 @@ theorem isLocalStructomorphWithinAt_localInvariantProp [ClosedUnderRestriction G
· rintro h hx
rcases h ⟨hx, hux⟩ with ⟨e, heG, hef, hex⟩
refine' ⟨e.restr (interior u), _, _, _⟩
- · exact closed_under_restriction' heG isOpen_interior
+ · exact closedUnderRestriction' heG isOpen_interior
· have : s ∩ u ∩ e.source = s ∩ (e.source ∩ u) := by mfld_set_tac
simpa only [this, interior_interior, hu.interior_eq, mfld_simps] using hef
· simp only [*, interior_interior, hu.interior_eq, mfld_simps]
@@ -1016,7 +1016,7 @@ theorem LocalHomeomorph.isLocalStructomorphWithinAt_iff {G : StructureGroupoid H
constructor
· intro hf h2x
obtain ⟨e, he, hfe, hxe⟩ := hf h2x
- refine' ⟨e.restr f.source, closed_under_restriction' he f.open_source, _, _, hxe, _⟩
+ refine' ⟨e.restr f.source, closedUnderRestriction' he f.open_source, _, _, hxe, _⟩
· simp_rw [LocalHomeomorph.restr_source]
refine' (inter_subset_right _ _).trans interior_subset
· intro x' hx'
@@ -1098,7 +1098,7 @@ theorem HasGroupoid.comp
(f.symm ≫ₕ e.symm ≫ₕ e' ≫ₕ f').open_source
refine' ⟨_, hs.inter φ.open_source, _, _⟩
· simp only [hx, hφ_dom, mfld_simps]
- · refine' G₁.eq_on_source (closed_under_restriction' hφG₁ hs) _
+ · refine' G₁.eq_on_source (closedUnderRestriction' hφG₁ hs) _
rw [LocalHomeomorph.restr_source_inter]
refine' (hφ.mono _).restr_eqOn_source
mfld_set_tac }
mathlib commit https://github.com/leanprover-community/mathlib/commit/cd8fafa2fac98e1a67097e8a91ad9901cfde48af
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel, Floris van Doorn
! This file was ported from Lean 3 source module geometry.manifold.local_invariant_properties
-! leanprover-community/mathlib commit be2c24f56783935652cefffb4bfca7e4b25d167e
+! leanprover-community/mathlib commit ce38d86c0b2d427ce208c3cee3159cb421d2b3c4
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -13,6 +13,9 @@ import Mathbin.Geometry.Manifold.ChartedSpace
/-!
# Local properties invariant under a groupoid
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
We study properties of a triple `(g, s, x)` where `g` is a function between two spaces `H` and `H'`,
`s` is a subset of `H` and `x` is a point of `H`. Our goal is to register how such a property
should behave to make sense in charted spaces modelled on `H` and `H'`.
mathlib commit https://github.com/leanprover-community/mathlib/commit/17ad94b4953419f3e3ce3e77da3239c62d1d09f0
@@ -66,6 +66,7 @@ namespace StructureGroupoid
variable (G : StructureGroupoid H) (G' : StructureGroupoid H')
+#print StructureGroupoid.LocalInvariantProp /-
/-- Structure recording good behavior of a property of a triple `(f, s, x)` where `f` is a function,
`s` a set and `x` a point. Good behavior here means locality and invariance under given groupoids
(both in the source and in the target). Given such a good behavior, the lift of this property
@@ -80,6 +81,7 @@ structure LocalInvariantProp (P : (H → H') → Set H → H → Prop) : Prop wh
∀ {s x f} {e' : LocalHomeomorph H' H'},
e' ∈ G' → s ⊆ f ⁻¹' e'.source → f x ∈ e'.source → P f s x → P (e' ∘ f) s x
#align structure_groupoid.local_invariant_prop StructureGroupoid.LocalInvariantProp
+-/
variable {G G'} {P : (H → H') → Set H → H → Prop} {s t u : Set H} {x : H}
@@ -89,18 +91,32 @@ include hG
namespace LocalInvariantProp
+#print StructureGroupoid.LocalInvariantProp.congr_set /-
theorem congr_set {s t : Set H} {x : H} {f : H → H'} (hu : s =ᶠ[𝓝 x] t) : P f s x ↔ P f t x :=
by
obtain ⟨o, host, ho, hxo⟩ := mem_nhds_iff.mp hu.mem_iff
simp_rw [subset_def, mem_set_of, ← and_congr_left_iff, ← mem_inter_iff, ← Set.ext_iff] at host
rw [hG.is_local ho hxo, host, ← hG.is_local ho hxo]
#align structure_groupoid.local_invariant_prop.congr_set StructureGroupoid.LocalInvariantProp.congr_set
+-/
+/- warning: structure_groupoid.local_invariant_prop.is_local_nhds -> StructureGroupoid.LocalInvariantProp.is_local_nhds is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {H' : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u1, u2} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u1} H} {u : Set.{u1} H} {x : H} {f : H -> H'}, (Membership.Mem.{u1, u1} (Set.{u1} H) (Filter.{u1} H) (Filter.hasMem.{u1} H) u (nhdsWithin.{u1} H _inst_1 x s)) -> (Iff (P f s x) (P f (Inter.inter.{u1} (Set.{u1} H) (Set.hasInter.{u1} H) s u) x)))
+but is expected to have type
+ forall {H : Type.{u1}} {H' : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u1, u2} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u1} H} {u : Set.{u1} H} {x : H} {f : H -> H'}, (Membership.mem.{u1, u1} (Set.{u1} H) (Filter.{u1} H) (instMembershipSetFilter.{u1} H) u (nhdsWithin.{u1} H _inst_1 x s)) -> (Iff (P f s x) (P f (Inter.inter.{u1} (Set.{u1} H) (Set.instInterSet.{u1} H) s u) x)))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.is_local_nhds StructureGroupoid.LocalInvariantProp.is_local_nhdsₓ'. -/
theorem is_local_nhds {s u : Set H} {x : H} {f : H → H'} (hu : u ∈ 𝓝[s] x) :
P f s x ↔ P f (s ∩ u) x :=
hG.congr_set <| mem_nhdsWithin_iff_eventuallyEq.mp hu
#align structure_groupoid.local_invariant_prop.is_local_nhds StructureGroupoid.LocalInvariantProp.is_local_nhds
+/- warning: structure_groupoid.local_invariant_prop.congr_iff_nhds_within -> StructureGroupoid.LocalInvariantProp.congr_iff_nhdsWithin is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {H' : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u1, u2} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u1} H} {x : H} {f : H -> H'} {g : H -> H'}, (Filter.EventuallyEq.{u1, u2} H H' (nhdsWithin.{u1} H _inst_1 x s) f g) -> (Eq.{succ u2} H' (f x) (g x)) -> (Iff (P f s x) (P g s x)))
+but is expected to have type
+ forall {H : Type.{u2}} {H' : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_4 : TopologicalSpace.{u1} H'] {G : StructureGroupoid.{u2} H _inst_1} {G' : StructureGroupoid.{u1} H' _inst_4} {P : (H -> H') -> (Set.{u2} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u2, u1} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u2} H} {x : H} {f : H -> H'} {g : H -> H'}, (Filter.EventuallyEq.{u2, u1} H H' (nhdsWithin.{u2} H _inst_1 x s) f g) -> (Eq.{succ u1} H' (f x) (g x)) -> (Iff (P f s x) (P g s x)))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.congr_iff_nhds_within StructureGroupoid.LocalInvariantProp.congr_iff_nhdsWithinₓ'. -/
theorem congr_iff_nhdsWithin {s : Set H} {x : H} {f g : H → H'} (h1 : f =ᶠ[𝓝[s] x] g)
(h2 : f x = g x) : P f s x ↔ P g s x :=
by
@@ -109,28 +125,64 @@ theorem congr_iff_nhdsWithin {s : Set H} {x : H} {f g : H → H'} (h1 : f =ᶠ[
⟨hG.congr_of_forall (fun y hy => hy.2) h2, hG.congr_of_forall (fun y hy => hy.2.symm) h2.symm⟩
#align structure_groupoid.local_invariant_prop.congr_iff_nhds_within StructureGroupoid.LocalInvariantProp.congr_iff_nhdsWithin
+/- warning: structure_groupoid.local_invariant_prop.congr_nhds_within -> StructureGroupoid.LocalInvariantProp.congr_nhdsWithin is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {H' : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u1, u2} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u1} H} {x : H} {f : H -> H'} {g : H -> H'}, (Filter.EventuallyEq.{u1, u2} H H' (nhdsWithin.{u1} H _inst_1 x s) f g) -> (Eq.{succ u2} H' (f x) (g x)) -> (P f s x) -> (P g s x))
+but is expected to have type
+ forall {H : Type.{u2}} {H' : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_4 : TopologicalSpace.{u1} H'] {G : StructureGroupoid.{u2} H _inst_1} {G' : StructureGroupoid.{u1} H' _inst_4} {P : (H -> H') -> (Set.{u2} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u2, u1} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u2} H} {x : H} {f : H -> H'} {g : H -> H'}, (Filter.EventuallyEq.{u2, u1} H H' (nhdsWithin.{u2} H _inst_1 x s) f g) -> (Eq.{succ u1} H' (f x) (g x)) -> (P f s x) -> (P g s x))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.congr_nhds_within StructureGroupoid.LocalInvariantProp.congr_nhdsWithinₓ'. -/
theorem congr_nhdsWithin {s : Set H} {x : H} {f g : H → H'} (h1 : f =ᶠ[𝓝[s] x] g) (h2 : f x = g x)
(hP : P f s x) : P g s x :=
(hG.congr_iff_nhdsWithin h1 h2).mp hP
#align structure_groupoid.local_invariant_prop.congr_nhds_within StructureGroupoid.LocalInvariantProp.congr_nhdsWithin
-theorem congr_nhds_within' {s : Set H} {x : H} {f g : H → H'} (h1 : f =ᶠ[𝓝[s] x] g) (h2 : f x = g x)
+/- warning: structure_groupoid.local_invariant_prop.congr_nhds_within' -> StructureGroupoid.LocalInvariantProp.congr_nhdsWithin' is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {H' : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u1, u2} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u1} H} {x : H} {f : H -> H'} {g : H -> H'}, (Filter.EventuallyEq.{u1, u2} H H' (nhdsWithin.{u1} H _inst_1 x s) f g) -> (Eq.{succ u2} H' (f x) (g x)) -> (P g s x) -> (P f s x))
+but is expected to have type
+ forall {H : Type.{u2}} {H' : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_4 : TopologicalSpace.{u1} H'] {G : StructureGroupoid.{u2} H _inst_1} {G' : StructureGroupoid.{u1} H' _inst_4} {P : (H -> H') -> (Set.{u2} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u2, u1} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u2} H} {x : H} {f : H -> H'} {g : H -> H'}, (Filter.EventuallyEq.{u2, u1} H H' (nhdsWithin.{u2} H _inst_1 x s) f g) -> (Eq.{succ u1} H' (f x) (g x)) -> (P g s x) -> (P f s x))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.congr_nhds_within' StructureGroupoid.LocalInvariantProp.congr_nhdsWithin'ₓ'. -/
+theorem congr_nhdsWithin' {s : Set H} {x : H} {f g : H → H'} (h1 : f =ᶠ[𝓝[s] x] g) (h2 : f x = g x)
(hP : P g s x) : P f s x :=
(hG.congr_iff_nhdsWithin h1 h2).mpr hP
-#align structure_groupoid.local_invariant_prop.congr_nhds_within' StructureGroupoid.LocalInvariantProp.congr_nhds_within'
-
+#align structure_groupoid.local_invariant_prop.congr_nhds_within' StructureGroupoid.LocalInvariantProp.congr_nhdsWithin'
+
+/- warning: structure_groupoid.local_invariant_prop.congr_iff -> StructureGroupoid.LocalInvariantProp.congr_iff is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {H' : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u1, u2} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u1} H} {x : H} {f : H -> H'} {g : H -> H'}, (Filter.EventuallyEq.{u1, u2} H H' (nhds.{u1} H _inst_1 x) f g) -> (Iff (P f s x) (P g s x)))
+but is expected to have type
+ forall {H : Type.{u2}} {H' : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_4 : TopologicalSpace.{u1} H'] {G : StructureGroupoid.{u2} H _inst_1} {G' : StructureGroupoid.{u1} H' _inst_4} {P : (H -> H') -> (Set.{u2} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u2, u1} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u2} H} {x : H} {f : H -> H'} {g : H -> H'}, (Filter.EventuallyEq.{u2, u1} H H' (nhds.{u2} H _inst_1 x) f g) -> (Iff (P f s x) (P g s x)))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.congr_iff StructureGroupoid.LocalInvariantProp.congr_iffₓ'. -/
theorem congr_iff {s : Set H} {x : H} {f g : H → H'} (h : f =ᶠ[𝓝 x] g) : P f s x ↔ P g s x :=
hG.congr_iff_nhdsWithin (mem_nhdsWithin_of_mem_nhds h) (mem_of_mem_nhds h : _)
#align structure_groupoid.local_invariant_prop.congr_iff StructureGroupoid.LocalInvariantProp.congr_iff
+/- warning: structure_groupoid.local_invariant_prop.congr -> StructureGroupoid.LocalInvariantProp.congr is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {H' : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u1, u2} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u1} H} {x : H} {f : H -> H'} {g : H -> H'}, (Filter.EventuallyEq.{u1, u2} H H' (nhds.{u1} H _inst_1 x) f g) -> (P f s x) -> (P g s x))
+but is expected to have type
+ forall {H : Type.{u2}} {H' : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_4 : TopologicalSpace.{u1} H'] {G : StructureGroupoid.{u2} H _inst_1} {G' : StructureGroupoid.{u1} H' _inst_4} {P : (H -> H') -> (Set.{u2} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u2, u1} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u2} H} {x : H} {f : H -> H'} {g : H -> H'}, (Filter.EventuallyEq.{u2, u1} H H' (nhds.{u2} H _inst_1 x) f g) -> (P f s x) -> (P g s x))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.congr StructureGroupoid.LocalInvariantProp.congrₓ'. -/
theorem congr {s : Set H} {x : H} {f g : H → H'} (h : f =ᶠ[𝓝 x] g) (hP : P f s x) : P g s x :=
(hG.congr_iff h).mp hP
#align structure_groupoid.local_invariant_prop.congr StructureGroupoid.LocalInvariantProp.congr
+/- warning: structure_groupoid.local_invariant_prop.congr' -> StructureGroupoid.LocalInvariantProp.congr' is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {H' : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u1, u2} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u1} H} {x : H} {f : H -> H'} {g : H -> H'}, (Filter.EventuallyEq.{u1, u2} H H' (nhds.{u1} H _inst_1 x) f g) -> (P g s x) -> (P f s x))
+but is expected to have type
+ forall {H : Type.{u2}} {H' : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_4 : TopologicalSpace.{u1} H'] {G : StructureGroupoid.{u2} H _inst_1} {G' : StructureGroupoid.{u1} H' _inst_4} {P : (H -> H') -> (Set.{u2} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u2, u1} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u2} H} {x : H} {f : H -> H'} {g : H -> H'}, (Filter.EventuallyEq.{u2, u1} H H' (nhds.{u2} H _inst_1 x) f g) -> (P g s x) -> (P f s x))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.congr' StructureGroupoid.LocalInvariantProp.congr'ₓ'. -/
theorem congr' {s : Set H} {x : H} {f g : H → H'} (h : f =ᶠ[𝓝 x] g) (hP : P g s x) : P f s x :=
hG.congr h.symm hP
#align structure_groupoid.local_invariant_prop.congr' StructureGroupoid.LocalInvariantProp.congr'
+/- warning: structure_groupoid.local_invariant_prop.left_invariance -> StructureGroupoid.LocalInvariantProp.left_invariance is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {H' : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u1, u2} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u1} H} {x : H} {f : H -> H'} {e' : LocalHomeomorph.{u2, u2} H' H' _inst_4 _inst_4}, (Membership.Mem.{u2, u2} (LocalHomeomorph.{u2, u2} H' H' _inst_4 _inst_4) (StructureGroupoid.{u2} H' _inst_4) (StructureGroupoid.hasMem.{u2} H' _inst_4) e' G') -> (ContinuousWithinAt.{u1, u2} H H' _inst_1 _inst_4 f s x) -> (Membership.Mem.{u2, u2} H' (Set.{u2} H') (Set.hasMem.{u2} H') (f x) (LocalEquiv.source.{u2, u2} H' H' (LocalHomeomorph.toLocalEquiv.{u2, u2} H' H' _inst_4 _inst_4 e'))) -> (Iff (P (Function.comp.{succ u1, succ u2, succ u2} H H' H' (coeFn.{succ u2, succ u2} (LocalHomeomorph.{u2, u2} H' H' _inst_4 _inst_4) (fun (_x : LocalHomeomorph.{u2, u2} H' H' _inst_4 _inst_4) => H' -> H') (LocalHomeomorph.hasCoeToFun.{u2, u2} H' H' _inst_4 _inst_4) e') f) s x) (P f s x)))
+but is expected to have type
+ forall {H : Type.{u2}} {H' : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_4 : TopologicalSpace.{u1} H'] {G : StructureGroupoid.{u2} H _inst_1} {G' : StructureGroupoid.{u1} H' _inst_4} {P : (H -> H') -> (Set.{u2} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u2, u1} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u2} H} {x : H} {f : H -> H'} {e' : LocalHomeomorph.{u1, u1} H' H' _inst_4 _inst_4}, (Membership.mem.{u1, u1} (LocalHomeomorph.{u1, u1} H' H' _inst_4 _inst_4) (StructureGroupoid.{u1} H' _inst_4) (instMembershipLocalHomeomorphStructureGroupoid.{u1} H' _inst_4) e' G') -> (ContinuousWithinAt.{u2, u1} H H' _inst_1 _inst_4 f s x) -> (Membership.mem.{u1, u1} H' (Set.{u1} H') (Set.instMembershipSet.{u1} H') (f x) (LocalEquiv.source.{u1, u1} H' H' (LocalHomeomorph.toLocalEquiv.{u1, u1} H' H' _inst_4 _inst_4 e'))) -> (Iff (P (Function.comp.{succ u2, succ u1, succ u1} H H' H' (LocalHomeomorph.toFun'.{u1, u1} H' H' _inst_4 _inst_4 e') f) s x) (P f s x)))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.left_invariance StructureGroupoid.LocalInvariantProp.left_invarianceₓ'. -/
theorem left_invariance {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 :=
@@ -150,6 +202,12 @@ theorem left_invariance {s : Set H} {x : H} {f : H → H'} {e' : LocalHomeomorph
exact hG.left_invariance' he' (inter_subset_right _ _) hxe'
#align structure_groupoid.local_invariant_prop.left_invariance StructureGroupoid.LocalInvariantProp.left_invariance
+/- warning: structure_groupoid.local_invariant_prop.right_invariance -> StructureGroupoid.LocalInvariantProp.right_invariance is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {H' : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u1, u2} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u1} H} {x : H} {f : H -> H'} {e : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1}, (Membership.Mem.{u1, u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (StructureGroupoid.{u1} H _inst_1) (StructureGroupoid.hasMem.{u1} H _inst_1) e G) -> (Membership.Mem.{u1, u1} H (Set.{u1} H) (Set.hasMem.{u1} H) x (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 e))) -> (Iff (P (Function.comp.{succ u1, succ u1, succ u2} H H H' f (coeFn.{succ u1, succ u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (fun (_x : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) => H -> H) (LocalHomeomorph.hasCoeToFun.{u1, u1} H H _inst_1 _inst_1) (LocalHomeomorph.symm.{u1, u1} H H _inst_1 _inst_1 e))) (Set.preimage.{u1, u1} H H (coeFn.{succ u1, succ u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (fun (_x : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) => H -> H) (LocalHomeomorph.hasCoeToFun.{u1, u1} H H _inst_1 _inst_1) (LocalHomeomorph.symm.{u1, u1} H H _inst_1 _inst_1 e)) s) (coeFn.{succ u1, succ u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (fun (_x : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) => H -> H) (LocalHomeomorph.hasCoeToFun.{u1, u1} H H _inst_1 _inst_1) e x)) (P f s x)))
+but is expected to have type
+ forall {H : Type.{u2}} {H' : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_4 : TopologicalSpace.{u1} H'] {G : StructureGroupoid.{u2} H _inst_1} {G' : StructureGroupoid.{u1} H' _inst_4} {P : (H -> H') -> (Set.{u2} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u2, u1} H H' _inst_1 _inst_4 G G' P) -> (forall {s : Set.{u2} H} {x : H} {f : H -> H'} {e : LocalHomeomorph.{u2, u2} H H _inst_1 _inst_1}, (Membership.mem.{u2, u2} (LocalHomeomorph.{u2, u2} H H _inst_1 _inst_1) (StructureGroupoid.{u2} H _inst_1) (instMembershipLocalHomeomorphStructureGroupoid.{u2} H _inst_1) e G) -> (Membership.mem.{u2, u2} H (Set.{u2} H) (Set.instMembershipSet.{u2} H) x (LocalEquiv.source.{u2, u2} H H (LocalHomeomorph.toLocalEquiv.{u2, u2} H H _inst_1 _inst_1 e))) -> (Iff (P (Function.comp.{succ u2, succ u2, succ u1} H H H' f (LocalHomeomorph.toFun'.{u2, u2} H H _inst_1 _inst_1 (LocalHomeomorph.symm.{u2, u2} H H _inst_1 _inst_1 e))) (Set.preimage.{u2, u2} H H (LocalHomeomorph.toFun'.{u2, u2} H H _inst_1 _inst_1 (LocalHomeomorph.symm.{u2, u2} H H _inst_1 _inst_1 e)) s) (LocalHomeomorph.toFun'.{u2, u2} H H _inst_1 _inst_1 e x)) (P f s x)))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.right_invariance StructureGroupoid.LocalInvariantProp.right_invarianceₓ'. -/
theorem right_invariance {s : Set H} {x : H} {f : H → H'} {e : LocalHomeomorph H H} (he : e ∈ G)
(hxe : x ∈ e.source) : P (f ∘ e.symm) (e.symm ⁻¹' s) (e x) ↔ P f s x :=
by
@@ -170,6 +228,7 @@ end StructureGroupoid
namespace ChartedSpace
+#print ChartedSpace.LiftPropWithinAt /-
/-- Given a property of germs of functions and sets in the model space, then one defines
a corresponding property in a charted space, by requiring that it holds at the preferred chart at
this point. (When the property is local and invariant, it will in fact hold using any chart, see
@@ -180,34 +239,53 @@ def LiftPropWithinAt (P : (H → H') → Set H → H → Prop) (f : M → M') (s
ContinuousWithinAt f s x ∧
P (chartAt H' (f x) ∘ f ∘ (chartAt H x).symm) ((chartAt H x).symm ⁻¹' s) (chartAt H x x)
#align charted_space.lift_prop_within_at ChartedSpace.LiftPropWithinAt
+-/
+#print ChartedSpace.LiftPropOn /-
/-- Given a property of germs of functions and sets in the model space, then one defines
a corresponding property of functions on sets in a charted space, by requiring that it holds
around each point of the set, in the preferred charts. -/
def LiftPropOn (P : (H → H') → Set H → H → Prop) (f : M → M') (s : Set M) :=
∀ x ∈ s, LiftPropWithinAt P f s x
#align charted_space.lift_prop_on ChartedSpace.LiftPropOn
+-/
+#print ChartedSpace.LiftPropAt /-
/-- Given a property of germs of functions and sets in the model space, then one defines
a corresponding property of a function at a point in a charted space, by requiring that it holds
in the preferred chart. -/
def LiftPropAt (P : (H → H') → Set H → H → Prop) (f : M → M') (x : M) :=
LiftPropWithinAt P f univ x
#align charted_space.lift_prop_at ChartedSpace.LiftPropAt
+-/
+/- warning: charted_space.lift_prop_at_iff -> ChartedSpace.liftPropAt_iff is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {f : M -> M'} {x : M}, Iff (ChartedSpace.LiftPropAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P f x) (And (ContinuousAt.{u2, u4} M M' _inst_2 _inst_5 f x) (P (Function.comp.{succ u1, succ u4, succ u3} H M' H' (coeFn.{max (succ u4) (succ u3), max (succ u4) (succ u3)} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u4, u3} M' H' _inst_5 _inst_4) (ChartedSpace.chartAt.{u3, u4} H' _inst_4 M' _inst_5 _inst_6 (f x))) (Function.comp.{succ u1, succ u2, succ u4} H M M' f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x))))) (Set.univ.{u1} H) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x) x)))
+but is expected to have type
+ forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {f : M -> M'} {x : M}, Iff (ChartedSpace.LiftPropAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P f x) (And (ContinuousAt.{u3, u1} M M' _inst_2 _inst_5 f x) (P (Function.comp.{succ u4, succ u1, succ u2} H M' H' (LocalHomeomorph.toFun'.{u1, u2} M' H' _inst_5 _inst_4 (ChartedSpace.chartAt.{u2, u1} H' _inst_4 M' _inst_5 _inst_6 (f x))) (Function.comp.{succ u4, succ u3, succ u1} H M M' f (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u4, u3} H _inst_1 M _inst_2 _inst_3 x))))) (Set.univ.{u4} H) (LocalHomeomorph.toFun'.{u3, u4} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u4, u3} H _inst_1 M _inst_2 _inst_3 x) x)))
+Case conversion may be inaccurate. Consider using '#align charted_space.lift_prop_at_iff ChartedSpace.liftPropAt_iffₓ'. -/
theorem liftPropAt_iff {P : (H → H') → Set H → H → Prop} {f : M → M'} {x : M} :
LiftPropAt P f x ↔
ContinuousAt f x ∧ P (chartAt H' (f x) ∘ f ∘ (chartAt H x).symm) univ (chartAt H x x) :=
by rw [lift_prop_at, lift_prop_within_at, continuousWithinAt_univ, preimage_univ]
#align charted_space.lift_prop_at_iff ChartedSpace.liftPropAt_iff
+#print ChartedSpace.LiftProp /-
/-- Given a property of germs of functions and sets in the model space, then one defines
a corresponding property of a function in a charted space, by requiring that it holds
in the preferred chart around every point. -/
def LiftProp (P : (H → H') → Set H → H → Prop) (f : M → M') :=
∀ x, LiftPropAt P f x
#align charted_space.lift_prop ChartedSpace.LiftProp
+-/
+/- warning: charted_space.lift_prop_iff -> ChartedSpace.liftProp_iff is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {f : M -> M'}, Iff (ChartedSpace.LiftProp.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P f) (And (Continuous.{u2, u4} M M' _inst_2 _inst_5 f) (forall (x : M), P (Function.comp.{succ u1, succ u4, succ u3} H M' H' (coeFn.{max (succ u4) (succ u3), max (succ u4) (succ u3)} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u4, u3} M' H' _inst_5 _inst_4) (ChartedSpace.chartAt.{u3, u4} H' _inst_4 M' _inst_5 _inst_6 (f x))) (Function.comp.{succ u1, succ u2, succ u4} H M M' f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x))))) (Set.univ.{u1} H) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x) x)))
+but is expected to have type
+ forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {f : M -> M'}, Iff (ChartedSpace.LiftProp.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P f) (And (Continuous.{u3, u1} M M' _inst_2 _inst_5 f) (forall (x : M), P (Function.comp.{succ u4, succ u1, succ u2} H M' H' (LocalHomeomorph.toFun'.{u1, u2} M' H' _inst_5 _inst_4 (ChartedSpace.chartAt.{u2, u1} H' _inst_4 M' _inst_5 _inst_6 (f x))) (Function.comp.{succ u4, succ u3, succ u1} H M M' f (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u4, u3} H _inst_1 M _inst_2 _inst_3 x))))) (Set.univ.{u4} H) (LocalHomeomorph.toFun'.{u3, u4} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u4, u3} H _inst_1 M _inst_2 _inst_3 x) x)))
+Case conversion may be inaccurate. Consider using '#align charted_space.lift_prop_iff ChartedSpace.liftProp_iffₓ'. -/
theorem liftProp_iff {P : (H → H') → Set H → H → Prop} {f : M → M'} :
LiftProp P f ↔
Continuous f ∧ ∀ x, P (chartAt H' (f x) ∘ f ∘ (chartAt H x).symm) univ (chartAt H x x) :=
@@ -224,24 +302,54 @@ variable {G : StructureGroupoid H} {G' : StructureGroupoid H'} {e e' : LocalHome
{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}
+/- warning: structure_groupoid.lift_prop_within_at_univ -> StructureGroupoid.liftPropWithinAt_univ is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {x : M}, Iff (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g (Set.univ.{u2} M) x) (ChartedSpace.LiftPropAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g x)
+but is expected to have type
+ forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {x : M}, Iff (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g (Set.univ.{u3} M) x) (ChartedSpace.LiftPropAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g x)
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.lift_prop_within_at_univ StructureGroupoid.liftPropWithinAt_univₓ'. -/
theorem liftPropWithinAt_univ : LiftPropWithinAt P g univ x ↔ LiftPropAt P g x :=
Iff.rfl
#align structure_groupoid.lift_prop_within_at_univ StructureGroupoid.liftPropWithinAt_univ
+/- warning: structure_groupoid.lift_prop_on_univ -> StructureGroupoid.liftPropOn_univ is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'}, Iff (ChartedSpace.LiftPropOn.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g (Set.univ.{u2} M)) (ChartedSpace.LiftProp.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g)
+but is expected to have type
+ forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'}, Iff (ChartedSpace.LiftPropOn.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g (Set.univ.{u3} M)) (ChartedSpace.LiftProp.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g)
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.lift_prop_on_univ StructureGroupoid.liftPropOn_univₓ'. -/
theorem liftPropOn_univ : LiftPropOn P g univ ↔ LiftProp P g := by
simp [lift_prop_on, lift_prop, lift_prop_at]
#align structure_groupoid.lift_prop_on_univ StructureGroupoid.liftPropOn_univ
+/- warning: structure_groupoid.lift_prop_within_at_self -> StructureGroupoid.liftPropWithinAt_self is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {H' : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {f : H -> H'} {s : Set.{u1} H} {x : H}, Iff (ChartedSpace.LiftPropWithinAt.{u1, u1, u2, u2} H H H' H' _inst_1 _inst_1 (chartedSpaceSelf.{u1} H _inst_1) _inst_4 _inst_4 (chartedSpaceSelf.{u2} H' _inst_4) P f s x) (And (ContinuousWithinAt.{u1, u2} H H' _inst_1 _inst_4 f s x) (P f s x))
+but is expected to have type
+ forall {H : Type.{u2}} {H' : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_4 : TopologicalSpace.{u1} H'] {P : (H -> H') -> (Set.{u2} H) -> H -> Prop} {f : H -> H'} {s : Set.{u2} H} {x : H}, Iff (ChartedSpace.LiftPropWithinAt.{u2, u2, u1, u1} H H H' H' _inst_1 _inst_1 (chartedSpaceSelf.{u2} H _inst_1) _inst_4 _inst_4 (chartedSpaceSelf.{u1} H' _inst_4) P f s x) (And (ContinuousWithinAt.{u2, u1} H H' _inst_1 _inst_4 f s x) (P f s x))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.lift_prop_within_at_self StructureGroupoid.liftPropWithinAt_selfₓ'. -/
theorem liftPropWithinAt_self {f : H → H'} {s : Set H} {x : H} :
LiftPropWithinAt P f s x ↔ ContinuousWithinAt f s x ∧ P f s x :=
Iff.rfl
#align structure_groupoid.lift_prop_within_at_self StructureGroupoid.liftPropWithinAt_self
+/- warning: structure_groupoid.lift_prop_within_at_self_source -> StructureGroupoid.liftPropWithinAt_self_source is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {H' : Type.{u2}} {M' : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u3} M'] [_inst_6 : ChartedSpace.{u2, u3} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {f : H -> M'} {s : Set.{u1} H} {x : H}, Iff (ChartedSpace.LiftPropWithinAt.{u1, u1, u2, u3} H H H' M' _inst_1 _inst_1 (chartedSpaceSelf.{u1} H _inst_1) _inst_4 _inst_5 _inst_6 P f s x) (And (ContinuousWithinAt.{u1, u3} H M' _inst_1 _inst_5 f s x) (P (Function.comp.{succ u1, succ u3, succ u2} H M' H' (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u3, u2} M' H' _inst_5 _inst_4) (ChartedSpace.chartAt.{u2, u3} H' _inst_4 M' _inst_5 _inst_6 (f x))) f) s x))
+but is expected to have type
+ forall {H : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} H] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u3} H) -> H -> Prop} {f : H -> M'} {s : Set.{u3} H} {x : H}, Iff (ChartedSpace.LiftPropWithinAt.{u3, u3, u2, u1} H H H' M' _inst_1 _inst_1 (chartedSpaceSelf.{u3} H _inst_1) _inst_4 _inst_5 _inst_6 P f s x) (And (ContinuousWithinAt.{u3, u1} H M' _inst_1 _inst_5 f s x) (P (Function.comp.{succ u3, succ u1, succ u2} H M' H' (LocalHomeomorph.toFun'.{u1, u2} M' H' _inst_5 _inst_4 (ChartedSpace.chartAt.{u2, u1} H' _inst_4 M' _inst_5 _inst_6 (f x))) f) s x))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.lift_prop_within_at_self_source StructureGroupoid.liftPropWithinAt_self_sourceₓ'. -/
theorem liftPropWithinAt_self_source {f : H → M'} {s : Set H} {x : H} :
LiftPropWithinAt P f s x ↔ ContinuousWithinAt f s x ∧ P (chartAt H' (f x) ∘ f) s x :=
Iff.rfl
#align structure_groupoid.lift_prop_within_at_self_source StructureGroupoid.liftPropWithinAt_self_source
+/- warning: structure_groupoid.lift_prop_within_at_self_target -> StructureGroupoid.liftPropWithinAt_self_target is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {s : Set.{u2} M} {x : M} {f : M -> H'}, Iff (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u3} H M H' H' _inst_1 _inst_2 _inst_3 _inst_4 _inst_4 (chartedSpaceSelf.{u3} H' _inst_4) P f s x) (And (ContinuousWithinAt.{u2, u3} M H' _inst_2 _inst_4 f s x) (P (Function.comp.{succ u1, succ u2, succ u3} H M H' f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x)))) (Set.preimage.{u1, u2} H M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x))) s) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x) x)))
+but is expected to have type
+ forall {H : Type.{u3}} {M : Type.{u2}} {H' : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u3, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u1} H'] {P : (H -> H') -> (Set.{u3} H) -> H -> Prop} {s : Set.{u2} M} {x : M} {f : M -> H'}, Iff (ChartedSpace.LiftPropWithinAt.{u3, u2, u1, u1} H M H' H' _inst_1 _inst_2 _inst_3 _inst_4 _inst_4 (chartedSpaceSelf.{u1} H' _inst_4) P f s x) (And (ContinuousWithinAt.{u2, u1} M H' _inst_2 _inst_4 f s x) (P (Function.comp.{succ u3, succ u2, succ u1} H M H' f (LocalHomeomorph.toFun'.{u3, u2} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u2, u3} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u3, u2} H _inst_1 M _inst_2 _inst_3 x)))) (Set.preimage.{u3, u2} H M (LocalHomeomorph.toFun'.{u3, u2} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u2, u3} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u3, u2} H _inst_1 M _inst_2 _inst_3 x))) s) (LocalHomeomorph.toFun'.{u2, u3} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u3, u2} H _inst_1 M _inst_2 _inst_3 x) x)))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.lift_prop_within_at_self_target StructureGroupoid.liftPropWithinAt_self_targetₓ'. -/
theorem liftPropWithinAt_self_target {f : M → H'} :
LiftPropWithinAt P f s x ↔
ContinuousWithinAt f s x ∧
@@ -255,6 +363,12 @@ variable (hG : G.LocalInvariantProp G' P)
include hG
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_iff -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_iff is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (forall {f : M -> M'}, Iff (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P f s x) (And (ContinuousWithinAt.{u2, u4} M M' _inst_2 _inst_5 f s x) (P (Function.comp.{succ u1, succ u4, succ u3} H M' H' (coeFn.{max (succ u4) (succ u3), max (succ u4) (succ u3)} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u4, u3} M' H' _inst_5 _inst_4) (ChartedSpace.chartAt.{u3, u4} H' _inst_4 M' _inst_5 _inst_6 (f x))) (Function.comp.{succ u1, succ u2, succ u4} H M M' f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x))))) (Inter.inter.{u1} (Set.{u1} H) (Set.hasInter.{u1} H) (LocalEquiv.target.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x))) (Set.preimage.{u1, u2} H M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x))) (Inter.inter.{u2} (Set.{u2} M) (Set.hasInter.{u2} M) s (Set.preimage.{u2, u4} M M' f (LocalEquiv.source.{u4, u3} M' H' (LocalHomeomorph.toLocalEquiv.{u4, u3} M' H' _inst_5 _inst_4 (ChartedSpace.chartAt.{u3, u4} H' _inst_4 M' _inst_5 _inst_6 (f x)))))))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x) x))))
+but is expected to have type
+ forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u4} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {s : Set.{u3} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u4, u2} H H' _inst_1 _inst_4 G G' P) -> (forall {f : M -> M'}, Iff (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P f s x) (And (ContinuousWithinAt.{u3, u1} M M' _inst_2 _inst_5 f s x) (P (Function.comp.{succ u4, succ u1, succ u2} H M' H' (LocalHomeomorph.toFun'.{u1, u2} M' H' _inst_5 _inst_4 (ChartedSpace.chartAt.{u2, u1} H' _inst_4 M' _inst_5 _inst_6 (f x))) (Function.comp.{succ u4, succ u3, succ u1} H M M' f (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u4, u3} H _inst_1 M _inst_2 _inst_3 x))))) (Inter.inter.{u4} (Set.{u4} H) (Set.instInterSet.{u4} H) (LocalEquiv.target.{u3, u4} M H (LocalHomeomorph.toLocalEquiv.{u3, u4} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u4, u3} H _inst_1 M _inst_2 _inst_3 x))) (Set.preimage.{u4, u3} H M (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u4, u3} H _inst_1 M _inst_2 _inst_3 x))) (Inter.inter.{u3} (Set.{u3} M) (Set.instInterSet.{u3} M) s (Set.preimage.{u3, u1} M M' f (LocalEquiv.source.{u1, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u1, u2} M' H' _inst_5 _inst_4 (ChartedSpace.chartAt.{u2, u1} H' _inst_4 M' _inst_5 _inst_6 (f x)))))))) (LocalHomeomorph.toFun'.{u3, u4} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u4, u3} H _inst_1 M _inst_2 _inst_3 x) x))))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_iff StructureGroupoid.LocalInvariantProp.liftPropWithinAt_iffₓ'. -/
/-- `lift_prop_within_at P f s x` is equivalent to a definition where we restrict the set we are
considering to the domain of the charts at `x` and `f x`. -/
theorem liftPropWithinAt_iff {f : M → M'} :
@@ -270,7 +384,13 @@ theorem liftPropWithinAt_iff {f : M → M'} :
(chart_source_mem_nhds H' (f x))
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_iff StructureGroupoid.LocalInvariantProp.liftPropWithinAt_iff
-theorem lift_prop_within_at_indep_chart_source_aux (g : M → H') (he : e ∈ G.maximalAtlas M)
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_source_aux -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_source_aux is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {e : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1} {e' : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (forall (g : M -> H'), (Membership.Mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) (Set.hasMem.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u1, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) x (LocalEquiv.source.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 e))) -> (Membership.Mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) (Set.hasMem.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) e' (StructureGroupoid.maximalAtlas.{u1, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) x (LocalEquiv.source.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 e'))) -> (Iff (P (Function.comp.{succ u1, succ u2, succ u3} H M H' g (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e))) (Set.preimage.{u1, u2} H M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e)) s) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) e x)) (P (Function.comp.{succ u1, succ u2, succ u3} H M H' g (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e'))) (Set.preimage.{u1, u2} H M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e')) s) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) e' x))))
+but is expected to have type
+ forall {H : Type.{u3}} {M : Type.{u2}} {H' : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u3, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u1} H'] {G : StructureGroupoid.{u3} H _inst_1} {G' : StructureGroupoid.{u1} H' _inst_4} {e : LocalHomeomorph.{u2, u3} M H _inst_2 _inst_1} {e' : LocalHomeomorph.{u2, u3} M H _inst_2 _inst_1} {P : (H -> H') -> (Set.{u3} H) -> H -> Prop} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u3, u1} H H' _inst_1 _inst_4 G G' P) -> (forall (g : M -> H'), (Membership.mem.{max u3 u2, max u3 u2} (LocalHomeomorph.{u2, u3} M H _inst_2 _inst_1) (Set.{max u3 u2} (LocalHomeomorph.{u2, u3} M H _inst_2 _inst_1)) (Set.instMembershipSet.{max u3 u2} (LocalHomeomorph.{u2, u3} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u3, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (LocalEquiv.source.{u2, u3} M H (LocalHomeomorph.toLocalEquiv.{u2, u3} M H _inst_2 _inst_1 e))) -> (Membership.mem.{max u3 u2, max u3 u2} (LocalHomeomorph.{u2, u3} M H _inst_2 _inst_1) (Set.{max u3 u2} (LocalHomeomorph.{u2, u3} M H _inst_2 _inst_1)) (Set.instMembershipSet.{max u3 u2} (LocalHomeomorph.{u2, u3} M H _inst_2 _inst_1)) e' (StructureGroupoid.maximalAtlas.{u3, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (LocalEquiv.source.{u2, u3} M H (LocalHomeomorph.toLocalEquiv.{u2, u3} M H _inst_2 _inst_1 e'))) -> (Iff (P (Function.comp.{succ u3, succ u2, succ u1} H M H' g (LocalHomeomorph.toFun'.{u3, u2} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u2, u3} M H _inst_2 _inst_1 e))) (Set.preimage.{u3, u2} H M (LocalHomeomorph.toFun'.{u3, u2} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u2, u3} M H _inst_2 _inst_1 e)) s) (LocalHomeomorph.toFun'.{u2, u3} M H _inst_2 _inst_1 e x)) (P (Function.comp.{succ u3, succ u2, succ u1} H M H' g (LocalHomeomorph.toFun'.{u3, u2} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u2, u3} M H _inst_2 _inst_1 e'))) (Set.preimage.{u3, u2} H M (LocalHomeomorph.toFun'.{u3, u2} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u2, u3} M H _inst_2 _inst_1 e')) s) (LocalHomeomorph.toFun'.{u2, u3} M H _inst_2 _inst_1 e' x))))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_source_aux StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_source_auxₓ'. -/
+theorem liftPropWithinAt_indep_chart_source_aux (g : M → H') (he : e ∈ G.maximalAtlas M)
(xe : x ∈ e.source) (he' : e' ∈ G.maximalAtlas M) (xe' : x ∈ e'.source) :
P (g ∘ e.symm) (e.symm ⁻¹' s) (e x) ↔ P (g ∘ e'.symm) (e'.symm ⁻¹' s) (e' x) :=
by
@@ -287,9 +407,15 @@ theorem lift_prop_within_at_indep_chart_source_aux (g : M → H') (he : e ∈ G.
· refine' ((e'.eventually_nhds' _ xe').mpr <| e.eventually_left_inverse xe).mono fun y hy => _
simp only [mfld_simps]
rw [hy]
-#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_source_aux StructureGroupoid.LocalInvariantProp.lift_prop_within_at_indep_chart_source_aux
-
-theorem lift_prop_within_at_indep_chart_target_aux2 (g : H → M') {x : H} {s : Set H}
+#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_source_aux StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_source_aux
+
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target_aux2 -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target_aux2 is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {H' : Type.{u2}} {M' : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u3} M'] [_inst_6 : ChartedSpace.{u2, u3} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {f : LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4} {f' : LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u1, u2} H H' _inst_1 _inst_4 G G' P) -> (forall (g : H -> M') {x : H} {s : Set.{u1} H}, (Membership.Mem.{max u3 u2, max u3 u2} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) (Set.{max u3 u2} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4)) (Set.hasMem.{max u3 u2} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u2, u3} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.Mem.{u3, u3} M' (Set.{u3} M') (Set.hasMem.{u3} M') (g x) (LocalEquiv.source.{u3, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u3, u2} M' H' _inst_5 _inst_4 f))) -> (Membership.Mem.{max u3 u2, max u3 u2} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) (Set.{max u3 u2} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4)) (Set.hasMem.{max u3 u2} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4)) f' (StructureGroupoid.maximalAtlas.{u2, u3} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.Mem.{u3, u3} M' (Set.{u3} M') (Set.hasMem.{u3} M') (g x) (LocalEquiv.source.{u3, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u3, u2} M' H' _inst_5 _inst_4 f'))) -> (ContinuousWithinAt.{u1, u3} H M' _inst_1 _inst_5 g s x) -> (Iff (P (Function.comp.{succ u1, succ u3, succ u2} H M' H' (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u3, u2} M' H' _inst_5 _inst_4) f) g) s x) (P (Function.comp.{succ u1, succ u3, succ u2} H M' H' (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u3, u2} M' H' _inst_5 _inst_4) f') g) s x)))
+but is expected to have type
+ forall {H : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} H] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u3} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {f : LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4} {f' : LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u3} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u3, u2} H H' _inst_1 _inst_4 G G' P) -> (forall (g : H -> M') {x : H} {s : Set.{u3} H}, (Membership.mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4) (Set.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) (Set.instMembershipSet.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u2, u1} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.mem.{u1, u1} M' (Set.{u1} M') (Set.instMembershipSet.{u1} M') (g x) (LocalEquiv.source.{u1, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u1, u2} M' H' _inst_5 _inst_4 f))) -> (Membership.mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4) (Set.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) (Set.instMembershipSet.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) f' (StructureGroupoid.maximalAtlas.{u2, u1} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.mem.{u1, u1} M' (Set.{u1} M') (Set.instMembershipSet.{u1} M') (g x) (LocalEquiv.source.{u1, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u1, u2} M' H' _inst_5 _inst_4 f'))) -> (ContinuousWithinAt.{u3, u1} H M' _inst_1 _inst_5 g s x) -> (Iff (P (Function.comp.{succ u3, succ u1, succ u2} H M' H' (LocalHomeomorph.toFun'.{u1, u2} M' H' _inst_5 _inst_4 f) g) s x) (P (Function.comp.{succ u3, succ u1, succ u2} H M' H' (LocalHomeomorph.toFun'.{u1, u2} M' H' _inst_5 _inst_4 f') g) s x)))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target_aux2 StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target_aux2ₓ'. -/
+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 :=
by
@@ -299,9 +425,15 @@ theorem lift_prop_within_at_indep_chart_target_aux2 (g : H → M') {x : H} {s :
(by simp only [xf, xf', mfld_simps])]
refine' hG.congr_iff_nhds_within _ (by simp only [xf, mfld_simps])
exact (hgs.eventually <| f.eventually_left_inverse xf).mono fun y => congr_arg f'
-#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target_aux2 StructureGroupoid.LocalInvariantProp.lift_prop_within_at_indep_chart_target_aux2
-
-theorem lift_prop_within_at_indep_chart_target_aux {g : X → M'} {e : LocalHomeomorph X H} {x : X}
+#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target_aux2 StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target_aux2
+
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target_aux -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target_aux is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {H' : Type.{u2}} {M' : Type.{u3}} {X : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u3} M'] [_inst_6 : ChartedSpace.{u2, u3} H' _inst_4 M' _inst_5] [_inst_7 : TopologicalSpace.{u4} X] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {f : LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4} {f' : LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u1, u2} H H' _inst_1 _inst_4 G G' P) -> (forall {g : X -> M'} {e : LocalHomeomorph.{u4, u1} X H _inst_7 _inst_1} {x : X} {s : Set.{u4} X}, (Membership.Mem.{u4, u4} X (Set.{u4} X) (Set.hasMem.{u4} X) x (LocalEquiv.source.{u4, u1} X H (LocalHomeomorph.toLocalEquiv.{u4, u1} X H _inst_7 _inst_1 e))) -> (Membership.Mem.{max u3 u2, max u3 u2} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) (Set.{max u3 u2} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4)) (Set.hasMem.{max u3 u2} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u2, u3} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.Mem.{u3, u3} M' (Set.{u3} M') (Set.hasMem.{u3} M') (g x) (LocalEquiv.source.{u3, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u3, u2} M' H' _inst_5 _inst_4 f))) -> (Membership.Mem.{max u3 u2, max u3 u2} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) (Set.{max u3 u2} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4)) (Set.hasMem.{max u3 u2} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4)) f' (StructureGroupoid.maximalAtlas.{u2, u3} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.Mem.{u3, u3} M' (Set.{u3} M') (Set.hasMem.{u3} M') (g x) (LocalEquiv.source.{u3, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u3, u2} M' H' _inst_5 _inst_4 f'))) -> (ContinuousWithinAt.{u4, u3} X M' _inst_7 _inst_5 g s x) -> (Iff (P (Function.comp.{succ u1, succ u3, succ u2} H M' H' (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u3, u2} M' H' _inst_5 _inst_4) f) (Function.comp.{succ u1, succ u4, succ u3} H X M' g (coeFn.{max (succ u1) (succ u4), max (succ u1) (succ u4)} (LocalHomeomorph.{u1, u4} H X _inst_1 _inst_7) (fun (_x : LocalHomeomorph.{u1, u4} H X _inst_1 _inst_7) => H -> X) (LocalHomeomorph.hasCoeToFun.{u1, u4} H X _inst_1 _inst_7) (LocalHomeomorph.symm.{u4, u1} X H _inst_7 _inst_1 e)))) (Set.preimage.{u1, u4} H X (coeFn.{max (succ u1) (succ u4), max (succ u1) (succ u4)} (LocalHomeomorph.{u1, u4} H X _inst_1 _inst_7) (fun (_x : LocalHomeomorph.{u1, u4} H X _inst_1 _inst_7) => H -> X) (LocalHomeomorph.hasCoeToFun.{u1, u4} H X _inst_1 _inst_7) (LocalHomeomorph.symm.{u4, u1} X H _inst_7 _inst_1 e)) s) (coeFn.{max (succ u4) (succ u1), max (succ u4) (succ u1)} (LocalHomeomorph.{u4, u1} X H _inst_7 _inst_1) (fun (_x : LocalHomeomorph.{u4, u1} X H _inst_7 _inst_1) => X -> H) (LocalHomeomorph.hasCoeToFun.{u4, u1} X H _inst_7 _inst_1) e x)) (P (Function.comp.{succ u1, succ u3, succ u2} H M' H' (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u3, u2} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u3, u2} M' H' _inst_5 _inst_4) f') (Function.comp.{succ u1, succ u4, succ u3} H X M' g (coeFn.{max (succ u1) (succ u4), max (succ u1) (succ u4)} (LocalHomeomorph.{u1, u4} H X _inst_1 _inst_7) (fun (_x : LocalHomeomorph.{u1, u4} H X _inst_1 _inst_7) => H -> X) (LocalHomeomorph.hasCoeToFun.{u1, u4} H X _inst_1 _inst_7) (LocalHomeomorph.symm.{u4, u1} X H _inst_7 _inst_1 e)))) (Set.preimage.{u1, u4} H X (coeFn.{max (succ u1) (succ u4), max (succ u1) (succ u4)} (LocalHomeomorph.{u1, u4} H X _inst_1 _inst_7) (fun (_x : LocalHomeomorph.{u1, u4} H X _inst_1 _inst_7) => H -> X) (LocalHomeomorph.hasCoeToFun.{u1, u4} H X _inst_1 _inst_7) (LocalHomeomorph.symm.{u4, u1} X H _inst_7 _inst_1 e)) s) (coeFn.{max (succ u4) (succ u1), max (succ u4) (succ u1)} (LocalHomeomorph.{u4, u1} X H _inst_7 _inst_1) (fun (_x : LocalHomeomorph.{u4, u1} X H _inst_7 _inst_1) => X -> H) (LocalHomeomorph.hasCoeToFun.{u4, u1} X H _inst_7 _inst_1) e x))))
+but is expected to have type
+ forall {H : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} {X : Type.{u4}} [_inst_1 : TopologicalSpace.{u3} H] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] [_inst_7 : TopologicalSpace.{u4} X] {G : StructureGroupoid.{u3} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {f : LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4} {f' : LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u3} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u3, u2} H H' _inst_1 _inst_4 G G' P) -> (forall {g : X -> M'} {e : LocalHomeomorph.{u4, u3} X H _inst_7 _inst_1} {x : X} {s : Set.{u4} X}, (Membership.mem.{u4, u4} X (Set.{u4} X) (Set.instMembershipSet.{u4} X) x (LocalEquiv.source.{u4, u3} X H (LocalHomeomorph.toLocalEquiv.{u4, u3} X H _inst_7 _inst_1 e))) -> (Membership.mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4) (Set.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) (Set.instMembershipSet.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u2, u1} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.mem.{u1, u1} M' (Set.{u1} M') (Set.instMembershipSet.{u1} M') (g x) (LocalEquiv.source.{u1, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u1, u2} M' H' _inst_5 _inst_4 f))) -> (Membership.mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4) (Set.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) (Set.instMembershipSet.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) f' (StructureGroupoid.maximalAtlas.{u2, u1} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.mem.{u1, u1} M' (Set.{u1} M') (Set.instMembershipSet.{u1} M') (g x) (LocalEquiv.source.{u1, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u1, u2} M' H' _inst_5 _inst_4 f'))) -> (ContinuousWithinAt.{u4, u1} X M' _inst_7 _inst_5 g s x) -> (Iff (P (Function.comp.{succ u3, succ u1, succ u2} H M' H' (LocalHomeomorph.toFun'.{u1, u2} M' H' _inst_5 _inst_4 f) (Function.comp.{succ u3, succ u4, succ u1} H X M' g (LocalHomeomorph.toFun'.{u3, u4} H X _inst_1 _inst_7 (LocalHomeomorph.symm.{u4, u3} X H _inst_7 _inst_1 e)))) (Set.preimage.{u3, u4} H X (LocalHomeomorph.toFun'.{u3, u4} H X _inst_1 _inst_7 (LocalHomeomorph.symm.{u4, u3} X H _inst_7 _inst_1 e)) s) (LocalHomeomorph.toFun'.{u4, u3} X H _inst_7 _inst_1 e x)) (P (Function.comp.{succ u3, succ u1, succ u2} H M' H' (LocalHomeomorph.toFun'.{u1, u2} M' H' _inst_5 _inst_4 f') (Function.comp.{succ u3, succ u4, succ u1} H X M' g (LocalHomeomorph.toFun'.{u3, u4} H X _inst_1 _inst_7 (LocalHomeomorph.symm.{u4, u3} X H _inst_7 _inst_1 e)))) (Set.preimage.{u3, u4} H X (LocalHomeomorph.toFun'.{u3, u4} H X _inst_1 _inst_7 (LocalHomeomorph.symm.{u4, u3} X H _inst_7 _inst_1 e)) s) (LocalHomeomorph.toFun'.{u4, u3} X H _inst_7 _inst_1 e x))))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target_aux StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target_auxₓ'. -/
+theorem liftPropWithinAt_indep_chart_target_aux {g : X → M'} {e : LocalHomeomorph X H} {x : X}
{s : Set X} (xe : x ∈ e.source) (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 ∘ e.symm) (e.symm ⁻¹' s) (e x) ↔ P (f' ∘ g ∘ e.symm) (e.symm ⁻¹' s) (e x) :=
@@ -309,32 +441,50 @@ theorem lift_prop_within_at_indep_chart_target_aux {g : X → M'} {e : LocalHome
rw [← e.left_inv xe] at xf xf' hgs
refine' hG.lift_prop_within_at_indep_chart_target_aux2 (g ∘ e.symm) hf xf hf' xf' _
exact hgs.comp (e.symm.continuous_at <| e.maps_to xe).ContinuousWithinAt subset.rfl
-#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target_aux StructureGroupoid.LocalInvariantProp.lift_prop_within_at_indep_chart_target_aux
-
+#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target_aux StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target_aux
+
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_aux -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_aux is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {e : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1} {e' : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1} {f : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4} {f' : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (Membership.Mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) (Set.hasMem.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u1, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) x (LocalEquiv.source.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 e))) -> (Membership.Mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) (Set.hasMem.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) e' (StructureGroupoid.maximalAtlas.{u1, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) x (LocalEquiv.source.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 e'))) -> (Membership.Mem.{max u4 u3, max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (Set.{max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4)) (Set.hasMem.{max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u3, u4} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.Mem.{u4, u4} M' (Set.{u4} M') (Set.hasMem.{u4} M') (g x) (LocalEquiv.source.{u4, u3} M' H' (LocalHomeomorph.toLocalEquiv.{u4, u3} M' H' _inst_5 _inst_4 f))) -> (Membership.Mem.{max u4 u3, max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (Set.{max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4)) (Set.hasMem.{max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4)) f' (StructureGroupoid.maximalAtlas.{u3, u4} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.Mem.{u4, u4} M' (Set.{u4} M') (Set.hasMem.{u4} M') (g x) (LocalEquiv.source.{u4, u3} M' H' (LocalHomeomorph.toLocalEquiv.{u4, u3} M' H' _inst_5 _inst_4 f'))) -> (ContinuousWithinAt.{u2, u4} M M' _inst_2 _inst_5 g s x) -> (Iff (P (Function.comp.{succ u1, succ u4, succ u3} H M' H' (coeFn.{max (succ u4) (succ u3), max (succ u4) (succ u3)} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u4, u3} M' H' _inst_5 _inst_4) f) (Function.comp.{succ u1, succ u2, succ u4} H M M' g (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e)))) (Set.preimage.{u1, u2} H M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e)) s) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) e x)) (P (Function.comp.{succ u1, succ u4, succ u3} H M' H' (coeFn.{max (succ u4) (succ u3), max (succ u4) (succ u3)} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u4, u3} M' H' _inst_5 _inst_4) f') (Function.comp.{succ u1, succ u2, succ u4} H M M' g (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e')))) (Set.preimage.{u1, u2} H M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e')) s) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) e' x)))
+but is expected to have type
+ forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u4} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {e : LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1} {e' : LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1} {f : LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4} {f' : LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {s : Set.{u3} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u4, u2} H H' _inst_1 _inst_4 G G' P) -> (Membership.mem.{max u4 u3, max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1) (Set.{max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1)) (Set.instMembershipSet.{max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u4, u3} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (LocalEquiv.source.{u3, u4} M H (LocalHomeomorph.toLocalEquiv.{u3, u4} M H _inst_2 _inst_1 e))) -> (Membership.mem.{max u4 u3, max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1) (Set.{max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1)) (Set.instMembershipSet.{max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1)) e' (StructureGroupoid.maximalAtlas.{u4, u3} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (LocalEquiv.source.{u3, u4} M H (LocalHomeomorph.toLocalEquiv.{u3, u4} M H _inst_2 _inst_1 e'))) -> (Membership.mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4) (Set.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) (Set.instMembershipSet.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u2, u1} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.mem.{u1, u1} M' (Set.{u1} M') (Set.instMembershipSet.{u1} M') (g x) (LocalEquiv.source.{u1, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u1, u2} M' H' _inst_5 _inst_4 f))) -> (Membership.mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4) (Set.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) (Set.instMembershipSet.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) f' (StructureGroupoid.maximalAtlas.{u2, u1} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.mem.{u1, u1} M' (Set.{u1} M') (Set.instMembershipSet.{u1} M') (g x) (LocalEquiv.source.{u1, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u1, u2} M' H' _inst_5 _inst_4 f'))) -> (ContinuousWithinAt.{u3, u1} M M' _inst_2 _inst_5 g s x) -> (Iff (P (Function.comp.{succ u4, succ u1, succ u2} H M' H' (LocalHomeomorph.toFun'.{u1, u2} M' H' _inst_5 _inst_4 f) (Function.comp.{succ u4, succ u3, succ u1} H M M' g (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 e)))) (Set.preimage.{u4, u3} H M (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 e)) s) (LocalHomeomorph.toFun'.{u3, u4} M H _inst_2 _inst_1 e x)) (P (Function.comp.{succ u4, succ u1, succ u2} H M' H' (LocalHomeomorph.toFun'.{u1, u2} M' H' _inst_5 _inst_4 f') (Function.comp.{succ u4, succ u3, succ u1} H M M' g (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 e')))) (Set.preimage.{u4, u3} H M (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 e')) s) (LocalHomeomorph.toFun'.{u3, u4} M H _inst_2 _inst_1 e' x)))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_aux StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_auxₓ'. -/
/-- If a property of a germ of function `g` on a pointed set `(s, x)` is invariant under the
structure groupoid (by composition in the source space and in the target space), then
expressing it in charted spaces does not depend on the element of the maximal atlas one uses
both in the source and in the target manifolds, provided they are defined around `x` and `g x`
respectively, and provided `g` is continuous within `s` at `x` (otherwise, the local behavior
of `g` at `x` can not be captured with a chart in the target). -/
-theorem lift_prop_within_at_indep_chart_aux (he : e ∈ G.maximalAtlas M) (xe : x ∈ e.source)
+theorem liftPropWithinAt_indep_chart_aux (he : e ∈ G.maximalAtlas M) (xe : x ∈ e.source)
(he' : e' ∈ G.maximalAtlas M) (xe' : x ∈ e'.source) (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 ∘ e.symm) (e.symm ⁻¹' s) (e x) ↔ P (f' ∘ g ∘ e'.symm) (e'.symm ⁻¹' s) (e' x) := by
rw [hG.lift_prop_within_at_indep_chart_source_aux (f ∘ g) he xe he' xe',
hG.lift_prop_within_at_indep_chart_target_aux xe' hf xf hf' xf' hgs]
-#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_aux StructureGroupoid.LocalInvariantProp.lift_prop_within_at_indep_chart_aux
-
+#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_aux StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_aux
+
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {e : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1} {f : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (forall [_inst_8 : HasGroupoid.{u1, u2} H _inst_1 M _inst_2 _inst_3 G] [_inst_9 : HasGroupoid.{u3, u4} H' _inst_4 M' _inst_5 _inst_6 G'], (Membership.Mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) (Set.hasMem.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u1, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) x (LocalEquiv.source.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 e))) -> (Membership.Mem.{max u4 u3, max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (Set.{max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4)) (Set.hasMem.{max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u3, u4} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.Mem.{u4, u4} M' (Set.{u4} M') (Set.hasMem.{u4} M') (g x) (LocalEquiv.source.{u4, u3} M' H' (LocalHomeomorph.toLocalEquiv.{u4, u3} M' H' _inst_5 _inst_4 f))) -> (Iff (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) (And (ContinuousWithinAt.{u2, u4} M M' _inst_2 _inst_5 g s x) (P (Function.comp.{succ u1, succ u4, succ u3} H M' H' (coeFn.{max (succ u4) (succ u3), max (succ u4) (succ u3)} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u4, u3} M' H' _inst_5 _inst_4) f) (Function.comp.{succ u1, succ u2, succ u4} H M M' g (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e)))) (Set.preimage.{u1, u2} H M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e)) s) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) e x)))))
+but is expected to have type
+ forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u4} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {e : LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1} {f : LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {s : Set.{u3} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u4, u2} H H' _inst_1 _inst_4 G G' P) -> (forall [_inst_8 : HasGroupoid.{u4, u3} H _inst_1 M _inst_2 _inst_3 G] [_inst_9 : HasGroupoid.{u2, u1} H' _inst_4 M' _inst_5 _inst_6 G'], (Membership.mem.{max u4 u3, max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1) (Set.{max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1)) (Set.instMembershipSet.{max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u4, u3} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (LocalEquiv.source.{u3, u4} M H (LocalHomeomorph.toLocalEquiv.{u3, u4} M H _inst_2 _inst_1 e))) -> (Membership.mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4) (Set.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) (Set.instMembershipSet.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u2, u1} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.mem.{u1, u1} M' (Set.{u1} M') (Set.instMembershipSet.{u1} M') (g x) (LocalEquiv.source.{u1, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u1, u2} M' H' _inst_5 _inst_4 f))) -> (Iff (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) (And (ContinuousWithinAt.{u3, u1} M M' _inst_2 _inst_5 g s x) (P (Function.comp.{succ u4, succ u1, succ u2} H M' H' (LocalHomeomorph.toFun'.{u1, u2} M' H' _inst_5 _inst_4 f) (Function.comp.{succ u4, succ u3, succ u1} H M M' g (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 e)))) (Set.preimage.{u4, u3} H M (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 e)) s) (LocalHomeomorph.toFun'.{u3, u4} M H _inst_2 _inst_1 e x)))))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chartₓ'. -/
theorem liftPropWithinAt_indep_chart [HasGroupoid M G] [HasGroupoid M' G']
(he : e ∈ G.maximalAtlas M) (xe : x ∈ e.source) (hf : f ∈ G'.maximalAtlas M')
(xf : g x ∈ f.source) :
LiftPropWithinAt P g s x ↔ ContinuousWithinAt g s x ∧ P (f ∘ g ∘ e.symm) (e.symm ⁻¹' s) (e x) :=
and_congr_right <|
- hG.lift_prop_within_at_indep_chart_aux (chart_mem_maximalAtlas _ _) (mem_chart_source _ _) he xe
+ hG.liftPropWithinAt_indep_chart_aux (chart_mem_maximalAtlas _ _) (mem_chart_source _ _) he xe
(chart_mem_maximalAtlas _ _) (mem_chart_source _ _) hf xf
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_source -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_source is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {e : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (forall [_inst_8 : HasGroupoid.{u1, u2} H _inst_1 M _inst_2 _inst_3 G], (Membership.Mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) (Set.hasMem.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u1, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) x (LocalEquiv.source.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 e))) -> (Iff (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) (ChartedSpace.LiftPropWithinAt.{u1, u1, u3, u4} H H H' M' _inst_1 _inst_1 (chartedSpaceSelf.{u1} H _inst_1) _inst_4 _inst_5 _inst_6 P (Function.comp.{succ u1, succ u2, succ u4} H M M' g (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e))) (Set.preimage.{u1, u2} H M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e)) s) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) e x))))
+but is expected to have type
+ forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u4} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {e : LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1} {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {s : Set.{u3} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u4, u2} H H' _inst_1 _inst_4 G G' P) -> (forall [_inst_8 : HasGroupoid.{u4, u3} H _inst_1 M _inst_2 _inst_3 G], (Membership.mem.{max u4 u3, max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1) (Set.{max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1)) (Set.instMembershipSet.{max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u4, u3} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (LocalEquiv.source.{u3, u4} M H (LocalHomeomorph.toLocalEquiv.{u3, u4} M H _inst_2 _inst_1 e))) -> (Iff (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) (ChartedSpace.LiftPropWithinAt.{u4, u4, u2, u1} H H H' M' _inst_1 _inst_1 (chartedSpaceSelf.{u4} H _inst_1) _inst_4 _inst_5 _inst_6 P (Function.comp.{succ u4, succ u3, succ u1} H M M' g (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 e))) (Set.preimage.{u4, u3} H M (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 e)) s) (LocalHomeomorph.toFun'.{u3, u4} M H _inst_2 _inst_1 e x))))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_source StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_sourceₓ'. -/
/-- A version of `lift_prop_within_at_indep_chart`, only for the source. -/
theorem liftPropWithinAt_indep_chart_source [HasGroupoid M G] (he : e ∈ G.maximalAtlas M)
(xe : x ∈ e.source) :
@@ -349,6 +499,12 @@ theorem liftPropWithinAt_indep_chart_source [HasGroupoid M G] (he : e ∈ G.maxi
(chart_mem_maximal_atlas G x) (mem_chart_source H x) he xe]
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_source StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_source
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {f : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (forall [_inst_8 : HasGroupoid.{u3, u4} H' _inst_4 M' _inst_5 _inst_6 G'], (Membership.Mem.{max u4 u3, max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (Set.{max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4)) (Set.hasMem.{max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u3, u4} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.Mem.{u4, u4} M' (Set.{u4} M') (Set.hasMem.{u4} M') (g x) (LocalEquiv.source.{u4, u3} M' H' (LocalHomeomorph.toLocalEquiv.{u4, u3} M' H' _inst_5 _inst_4 f))) -> (Iff (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) (And (ContinuousWithinAt.{u2, u4} M M' _inst_2 _inst_5 g s x) (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u3} H M H' H' _inst_1 _inst_2 _inst_3 _inst_4 _inst_4 (chartedSpaceSelf.{u3} H' _inst_4) P (Function.comp.{succ u2, succ u4, succ u3} M M' H' (coeFn.{max (succ u4) (succ u3), max (succ u4) (succ u3)} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u4, u3} M' H' _inst_5 _inst_4) f) g) s x))))
+but is expected to have type
+ forall {H : Type.{u2}} {M : Type.{u1}} {H' : Type.{u4}} {M' : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : ChartedSpace.{u2, u1} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u4} H'] [_inst_5 : TopologicalSpace.{u3} M'] [_inst_6 : ChartedSpace.{u4, u3} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u2} H _inst_1} {G' : StructureGroupoid.{u4} H' _inst_4} {f : LocalHomeomorph.{u3, u4} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u2} H) -> H -> Prop} {g : M -> M'} {s : Set.{u1} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u2, u4} H H' _inst_1 _inst_4 G G' P) -> (forall [_inst_8 : HasGroupoid.{u4, u3} H' _inst_4 M' _inst_5 _inst_6 G'], (Membership.mem.{max u4 u3, max u4 u3} (LocalHomeomorph.{u3, u4} M' H' _inst_5 _inst_4) (Set.{max u4 u3} (LocalHomeomorph.{u3, u4} M' H' _inst_5 _inst_4)) (Set.instMembershipSet.{max u4 u3} (LocalHomeomorph.{u3, u4} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u4, u3} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.mem.{u3, u3} M' (Set.{u3} M') (Set.instMembershipSet.{u3} M') (g x) (LocalEquiv.source.{u3, u4} M' H' (LocalHomeomorph.toLocalEquiv.{u3, u4} M' H' _inst_5 _inst_4 f))) -> (Iff (ChartedSpace.LiftPropWithinAt.{u2, u1, u4, u3} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) (And (ContinuousWithinAt.{u1, u3} M M' _inst_2 _inst_5 g s x) (ChartedSpace.LiftPropWithinAt.{u2, u1, u4, u4} H M H' H' _inst_1 _inst_2 _inst_3 _inst_4 _inst_4 (chartedSpaceSelf.{u4} H' _inst_4) P (Function.comp.{succ u1, succ u3, succ u4} M M' H' (LocalHomeomorph.toFun'.{u3, u4} M' H' _inst_5 _inst_4 f) g) s x))))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_targetₓ'. -/
/-- A version of `lift_prop_within_at_indep_chart`, only for the target. -/
theorem liftPropWithinAt_indep_chart_target [HasGroupoid M' G'] (hf : f ∈ G'.maximalAtlas M')
(xf : g x ∈ f.source) :
@@ -362,6 +518,12 @@ theorem liftPropWithinAt_indep_chart_target [HasGroupoid M' G'] (hf : f ∈ G'.m
(chart_mem_maximal_atlas _ _) (mem_chart_source _ _) hf xf hg
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart' -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart' is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {e : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1} {f : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (forall [_inst_8 : HasGroupoid.{u1, u2} H _inst_1 M _inst_2 _inst_3 G] [_inst_9 : HasGroupoid.{u3, u4} H' _inst_4 M' _inst_5 _inst_6 G'], (Membership.Mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) (Set.hasMem.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u1, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) x (LocalEquiv.source.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 e))) -> (Membership.Mem.{max u4 u3, max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (Set.{max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4)) (Set.hasMem.{max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u3, u4} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.Mem.{u4, u4} M' (Set.{u4} M') (Set.hasMem.{u4} M') (g x) (LocalEquiv.source.{u4, u3} M' H' (LocalHomeomorph.toLocalEquiv.{u4, u3} M' H' _inst_5 _inst_4 f))) -> (Iff (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) (And (ContinuousWithinAt.{u2, u4} M M' _inst_2 _inst_5 g s x) (ChartedSpace.LiftPropWithinAt.{u1, u1, u3, u3} H H H' H' _inst_1 _inst_1 (chartedSpaceSelf.{u1} H _inst_1) _inst_4 _inst_4 (chartedSpaceSelf.{u3} H' _inst_4) P (Function.comp.{succ u1, succ u4, succ u3} H M' H' (coeFn.{max (succ u4) (succ u3), max (succ u4) (succ u3)} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u4, u3} M' H' _inst_5 _inst_4) f) (Function.comp.{succ u1, succ u2, succ u4} H M M' g (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e)))) (Set.preimage.{u1, u2} H M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e)) s) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) e x)))))
+but is expected to have type
+ forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u4} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {e : LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1} {f : LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {s : Set.{u3} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u4, u2} H H' _inst_1 _inst_4 G G' P) -> (forall [_inst_8 : HasGroupoid.{u4, u3} H _inst_1 M _inst_2 _inst_3 G] [_inst_9 : HasGroupoid.{u2, u1} H' _inst_4 M' _inst_5 _inst_6 G'], (Membership.mem.{max u4 u3, max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1) (Set.{max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1)) (Set.instMembershipSet.{max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u4, u3} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (LocalEquiv.source.{u3, u4} M H (LocalHomeomorph.toLocalEquiv.{u3, u4} M H _inst_2 _inst_1 e))) -> (Membership.mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4) (Set.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) (Set.instMembershipSet.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u2, u1} H' M' _inst_4 _inst_5 _inst_6 G')) -> (Membership.mem.{u1, u1} M' (Set.{u1} M') (Set.instMembershipSet.{u1} M') (g x) (LocalEquiv.source.{u1, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u1, u2} M' H' _inst_5 _inst_4 f))) -> (Iff (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) (And (ContinuousWithinAt.{u3, u1} M M' _inst_2 _inst_5 g s x) (ChartedSpace.LiftPropWithinAt.{u4, u4, u2, u2} H H H' H' _inst_1 _inst_1 (chartedSpaceSelf.{u4} H _inst_1) _inst_4 _inst_4 (chartedSpaceSelf.{u2} H' _inst_4) P (Function.comp.{succ u4, succ u1, succ u2} H M' H' (LocalHomeomorph.toFun'.{u1, u2} M' H' _inst_5 _inst_4 f) (Function.comp.{succ u4, succ u3, succ u1} H M M' g (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 e)))) (Set.preimage.{u4, u3} H M (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 e)) s) (LocalHomeomorph.toFun'.{u3, u4} M H _inst_2 _inst_1 e x)))))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart' StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart'ₓ'. -/
/-- A version of `lift_prop_within_at_indep_chart`, that uses `lift_prop_within_at` on both sides.
-/
theorem liftPropWithinAt_indep_chart' [HasGroupoid M G] [HasGroupoid M' G']
@@ -379,6 +541,12 @@ theorem liftPropWithinAt_indep_chart' [HasGroupoid M G] [HasGroupoid M' G']
exact this.comp_continuous_within_at h1
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart' StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart'
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_on_indep_chart -> StructureGroupoid.LocalInvariantProp.liftPropOn_indep_chart is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {e : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1} {f : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (forall [_inst_8 : HasGroupoid.{u1, u2} H _inst_1 M _inst_2 _inst_3 G] [_inst_9 : HasGroupoid.{u3, u4} H' _inst_4 M' _inst_5 _inst_6 G'], (Membership.Mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) (Set.hasMem.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u1, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.Mem.{max u4 u3, max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (Set.{max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4)) (Set.hasMem.{max u4 u3} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u3, u4} H' M' _inst_4 _inst_5 _inst_6 G')) -> (ChartedSpace.LiftPropOn.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s) -> (forall {y : H}, (Membership.Mem.{u1, u1} H (Set.{u1} H) (Set.hasMem.{u1} H) y (Inter.inter.{u1} (Set.{u1} H) (Set.hasInter.{u1} H) (LocalEquiv.target.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 e)) (Set.preimage.{u1, u2} H M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e)) (Inter.inter.{u2} (Set.{u2} M) (Set.hasInter.{u2} M) s (Set.preimage.{u2, u4} M M' g (LocalEquiv.source.{u4, u3} M' H' (LocalHomeomorph.toLocalEquiv.{u4, u3} M' H' _inst_5 _inst_4 f))))))) -> (P (Function.comp.{succ u1, succ u4, succ u3} H M' H' (coeFn.{max (succ u4) (succ u3), max (succ u4) (succ u3)} (LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) (fun (_x : LocalHomeomorph.{u4, u3} M' H' _inst_5 _inst_4) => M' -> H') (LocalHomeomorph.hasCoeToFun.{u4, u3} M' H' _inst_5 _inst_4) f) (Function.comp.{succ u1, succ u2, succ u4} H M M' g (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e)))) (Set.preimage.{u1, u2} H M (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e)) s) y)))
+but is expected to have type
+ forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u4} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {e : LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1} {f : LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4} {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {s : Set.{u3} M}, (StructureGroupoid.LocalInvariantProp.{u4, u2} H H' _inst_1 _inst_4 G G' P) -> (forall [_inst_8 : HasGroupoid.{u4, u3} H _inst_1 M _inst_2 _inst_3 G] [_inst_9 : HasGroupoid.{u2, u1} H' _inst_4 M' _inst_5 _inst_6 G'], (Membership.mem.{max u4 u3, max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1) (Set.{max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1)) (Set.instMembershipSet.{max u4 u3} (LocalHomeomorph.{u3, u4} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u4, u3} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4) (Set.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) (Set.instMembershipSet.{max u2 u1} (LocalHomeomorph.{u1, u2} M' H' _inst_5 _inst_4)) f (StructureGroupoid.maximalAtlas.{u2, u1} H' M' _inst_4 _inst_5 _inst_6 G')) -> (ChartedSpace.LiftPropOn.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s) -> (forall {y : H}, (Membership.mem.{u4, u4} H (Set.{u4} H) (Set.instMembershipSet.{u4} H) y (Inter.inter.{u4} (Set.{u4} H) (Set.instInterSet.{u4} H) (LocalEquiv.target.{u3, u4} M H (LocalHomeomorph.toLocalEquiv.{u3, u4} M H _inst_2 _inst_1 e)) (Set.preimage.{u4, u3} H M (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 e)) (Inter.inter.{u3} (Set.{u3} M) (Set.instInterSet.{u3} M) s (Set.preimage.{u3, u1} M M' g (LocalEquiv.source.{u1, u2} M' H' (LocalHomeomorph.toLocalEquiv.{u1, u2} M' H' _inst_5 _inst_4 f))))))) -> (P (Function.comp.{succ u4, succ u1, succ u2} H M' H' (LocalHomeomorph.toFun'.{u1, u2} M' H' _inst_5 _inst_4 f) (Function.comp.{succ u4, succ u3, succ u1} H M M' g (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 e)))) (Set.preimage.{u4, u3} H M (LocalHomeomorph.toFun'.{u4, u3} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u3, u4} M H _inst_2 _inst_1 e)) s) y)))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_on_indep_chart StructureGroupoid.LocalInvariantProp.liftPropOn_indep_chartₓ'. -/
theorem liftPropOn_indep_chart [HasGroupoid M G] [HasGroupoid M' G'] (he : e ∈ G.maximalAtlas M)
(hf : f ∈ G'.maximalAtlas M') (h : LiftPropOn P g s) {y : H}
(hy : y ∈ e.target ∩ e.symm ⁻¹' (s ∩ g ⁻¹' f.source)) : P (f ∘ g ∘ e.symm) (e.symm ⁻¹' s) y :=
@@ -387,6 +555,12 @@ theorem liftPropOn_indep_chart [HasGroupoid M G] [HasGroupoid M' G'] (he : e ∈
rw [e.right_inv hy.1]
#align structure_groupoid.local_invariant_prop.lift_prop_on_indep_chart StructureGroupoid.LocalInvariantProp.liftPropOn_indep_chart
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_inter' -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_inter' is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M} {t : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (Membership.Mem.{u2, u2} (Set.{u2} M) (Filter.{u2} M) (Filter.hasMem.{u2} M) t (nhdsWithin.{u2} M _inst_2 x s)) -> (Iff (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g (Inter.inter.{u2} (Set.{u2} M) (Set.hasInter.{u2} M) s t) x) (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x))
+but is expected to have type
+ forall {H : Type.{u3}} {M : Type.{u4}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} H] [_inst_2 : TopologicalSpace.{u4} M] [_inst_3 : ChartedSpace.{u3, u4} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u3} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u3} H) -> H -> Prop} {g : M -> M'} {s : Set.{u4} M} {t : Set.{u4} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u3, u2} H H' _inst_1 _inst_4 G G' P) -> (Membership.mem.{u4, u4} (Set.{u4} M) (Filter.{u4} M) (instMembershipSetFilter.{u4} M) t (nhdsWithin.{u4} M _inst_2 x s)) -> (Iff (ChartedSpace.LiftPropWithinAt.{u3, u4, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g (Inter.inter.{u4} (Set.{u4} M) (Set.instInterSet.{u4} M) s t) x) (ChartedSpace.LiftPropWithinAt.{u3, u4, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_inter' StructureGroupoid.LocalInvariantProp.liftPropWithinAt_inter'ₓ'. -/
theorem liftPropWithinAt_inter' (ht : t ∈ 𝓝[s] x) :
LiftPropWithinAt P g (s ∩ t) x ↔ LiftPropWithinAt P g s x :=
by
@@ -396,19 +570,43 @@ theorem liftPropWithinAt_inter' (ht : t ∈ 𝓝[s] x) :
exact (mem_nhds_within_iff_eventually_eq.mp ht).symm.mem_iff
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_inter' StructureGroupoid.LocalInvariantProp.liftPropWithinAt_inter'
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_inter -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_inter is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M} {t : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (Membership.Mem.{u2, u2} (Set.{u2} M) (Filter.{u2} M) (Filter.hasMem.{u2} M) t (nhds.{u2} M _inst_2 x)) -> (Iff (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g (Inter.inter.{u2} (Set.{u2} M) (Set.hasInter.{u2} M) s t) x) (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x))
+but is expected to have type
+ forall {H : Type.{u3}} {M : Type.{u4}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} H] [_inst_2 : TopologicalSpace.{u4} M] [_inst_3 : ChartedSpace.{u3, u4} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u3} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u3} H) -> H -> Prop} {g : M -> M'} {s : Set.{u4} M} {t : Set.{u4} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u3, u2} H H' _inst_1 _inst_4 G G' P) -> (Membership.mem.{u4, u4} (Set.{u4} M) (Filter.{u4} M) (instMembershipSetFilter.{u4} M) t (nhds.{u4} M _inst_2 x)) -> (Iff (ChartedSpace.LiftPropWithinAt.{u3, u4, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g (Inter.inter.{u4} (Set.{u4} M) (Set.instInterSet.{u4} M) s t) x) (ChartedSpace.LiftPropWithinAt.{u3, u4, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_inter StructureGroupoid.LocalInvariantProp.liftPropWithinAt_interₓ'. -/
theorem liftPropWithinAt_inter (ht : t ∈ 𝓝 x) :
LiftPropWithinAt P g (s ∩ t) x ↔ LiftPropWithinAt P g s x :=
hG.liftPropWithinAt_inter' (mem_nhdsWithin_of_mem_nhds ht)
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_inter StructureGroupoid.LocalInvariantProp.liftPropWithinAt_inter
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_at_of_lift_prop_within_at -> StructureGroupoid.LocalInvariantProp.liftPropAt_of_liftPropWithinAt is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) -> (Membership.Mem.{u2, u2} (Set.{u2} M) (Filter.{u2} M) (Filter.hasMem.{u2} M) s (nhds.{u2} M _inst_2 x)) -> (ChartedSpace.LiftPropAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g x)
+but is expected to have type
+ forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u4} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {s : Set.{u3} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u4, u2} H H' _inst_1 _inst_4 G G' P) -> (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) -> (Membership.mem.{u3, u3} (Set.{u3} M) (Filter.{u3} M) (instMembershipSetFilter.{u3} M) s (nhds.{u3} M _inst_2 x)) -> (ChartedSpace.LiftPropAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g x)
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_at_of_lift_prop_within_at StructureGroupoid.LocalInvariantProp.liftPropAt_of_liftPropWithinAtₓ'. -/
theorem liftPropAt_of_liftPropWithinAt (h : LiftPropWithinAt P g s x) (hs : s ∈ 𝓝 x) :
LiftPropAt P g x := by rwa [← univ_inter s, hG.lift_prop_within_at_inter hs] at h
#align structure_groupoid.local_invariant_prop.lift_prop_at_of_lift_prop_within_at StructureGroupoid.LocalInvariantProp.liftPropAt_of_liftPropWithinAt
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_of_lift_prop_at_of_mem_nhds -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_of_liftPropAt_of_mem_nhds is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (ChartedSpace.LiftPropAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g x) -> (Membership.Mem.{u2, u2} (Set.{u2} M) (Filter.{u2} M) (Filter.hasMem.{u2} M) s (nhds.{u2} M _inst_2 x)) -> (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x)
+but is expected to have type
+ forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u4} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {s : Set.{u3} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u4, u2} H H' _inst_1 _inst_4 G G' P) -> (ChartedSpace.LiftPropAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g x) -> (Membership.mem.{u3, u3} (Set.{u3} M) (Filter.{u3} M) (instMembershipSetFilter.{u3} M) s (nhds.{u3} M _inst_2 x)) -> (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x)
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_of_lift_prop_at_of_mem_nhds StructureGroupoid.LocalInvariantProp.liftPropWithinAt_of_liftPropAt_of_mem_nhdsₓ'. -/
theorem liftPropWithinAt_of_liftPropAt_of_mem_nhds (h : LiftPropAt P g x) (hs : s ∈ 𝓝 x) :
LiftPropWithinAt P g s x := by rwa [← univ_inter s, hG.lift_prop_within_at_inter hs]
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_of_lift_prop_at_of_mem_nhds StructureGroupoid.LocalInvariantProp.liftPropWithinAt_of_liftPropAt_of_mem_nhds
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_on_of_locally_lift_prop_on -> StructureGroupoid.LocalInvariantProp.liftPropOn_of_locally_liftPropOn is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (forall (x : M), (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) x s) -> (Exists.{succ u2} (Set.{u2} M) (fun (u : Set.{u2} M) => And (IsOpen.{u2} M _inst_2 u) (And (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) x u) (ChartedSpace.LiftPropOn.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g (Inter.inter.{u2} (Set.{u2} M) (Set.hasInter.{u2} M) s u)))))) -> (ChartedSpace.LiftPropOn.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s)
+but is expected to have type
+ forall {H : Type.{u3}} {M : Type.{u4}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} H] [_inst_2 : TopologicalSpace.{u4} M] [_inst_3 : ChartedSpace.{u3, u4} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u3} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u3} H) -> H -> Prop} {g : M -> M'} {s : Set.{u4} M}, (StructureGroupoid.LocalInvariantProp.{u3, u2} H H' _inst_1 _inst_4 G G' P) -> (forall (x : M), (Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x s) -> (Exists.{succ u4} (Set.{u4} M) (fun (u : Set.{u4} M) => And (IsOpen.{u4} M _inst_2 u) (And (Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x u) (ChartedSpace.LiftPropOn.{u3, u4, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g (Inter.inter.{u4} (Set.{u4} M) (Set.instInterSet.{u4} M) s u)))))) -> (ChartedSpace.LiftPropOn.{u3, u4, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s)
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_on_of_locally_lift_prop_on StructureGroupoid.LocalInvariantProp.liftPropOn_of_locally_liftPropOnₓ'. -/
theorem liftPropOn_of_locally_liftPropOn
(h : ∀ x ∈ s, ∃ u, IsOpen u ∧ x ∈ u ∧ LiftPropOn P g (s ∩ u)) : LiftPropOn P g s :=
by
@@ -419,6 +617,12 @@ theorem liftPropOn_of_locally_liftPropOn
exact IsOpen.mem_nhds u_open xu
#align structure_groupoid.local_invariant_prop.lift_prop_on_of_locally_lift_prop_on StructureGroupoid.LocalInvariantProp.liftPropOn_of_locally_liftPropOn
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_of_locally_lift_prop_on -> StructureGroupoid.LocalInvariantProp.liftProp_of_locally_liftPropOn is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (forall (x : M), Exists.{succ u2} (Set.{u2} M) (fun (u : Set.{u2} M) => And (IsOpen.{u2} M _inst_2 u) (And (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) x u) (ChartedSpace.LiftPropOn.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g u)))) -> (ChartedSpace.LiftProp.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g)
+but is expected to have type
+ forall {H : Type.{u3}} {M : Type.{u4}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} H] [_inst_2 : TopologicalSpace.{u4} M] [_inst_3 : ChartedSpace.{u3, u4} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u3} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u3} H) -> H -> Prop} {g : M -> M'}, (StructureGroupoid.LocalInvariantProp.{u3, u2} H H' _inst_1 _inst_4 G G' P) -> (forall (x : M), Exists.{succ u4} (Set.{u4} M) (fun (u : Set.{u4} M) => And (IsOpen.{u4} M _inst_2 u) (And (Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x u) (ChartedSpace.LiftPropOn.{u3, u4, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g u)))) -> (ChartedSpace.LiftProp.{u3, u4, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g)
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_of_locally_lift_prop_on StructureGroupoid.LocalInvariantProp.liftProp_of_locally_liftPropOnₓ'. -/
theorem liftProp_of_locally_liftPropOn (h : ∀ x, ∃ u, IsOpen u ∧ x ∈ u ∧ LiftPropOn P g u) :
LiftProp P g := by
rw [← lift_prop_on_univ]
@@ -426,6 +630,12 @@ theorem liftProp_of_locally_liftPropOn (h : ∀ x, ∃ u, IsOpen u ∧ x ∈ u
simp [h x]
#align structure_groupoid.local_invariant_prop.lift_prop_of_locally_lift_prop_on StructureGroupoid.LocalInvariantProp.liftProp_of_locally_liftPropOn
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_of_eventually_eq -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_of_eventuallyEq is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) -> (Filter.EventuallyEq.{u2, u4} M M' (nhdsWithin.{u2} M _inst_2 x s) g' g) -> (Eq.{succ u4} M' (g' x) (g x)) -> (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' s x)
+but is expected to have type
+ forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u4} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {s : Set.{u3} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u4, u2} H H' _inst_1 _inst_4 G G' P) -> (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) -> (Filter.EventuallyEq.{u3, u1} M M' (nhdsWithin.{u3} M _inst_2 x s) g' g) -> (Eq.{succ u1} M' (g' x) (g x)) -> (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' s x)
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_of_eventuallyEqₓ'. -/
theorem liftPropWithinAt_congr_of_eventuallyEq (h : LiftPropWithinAt P g s x) (h₁ : g' =ᶠ[𝓝[s] x] g)
(hx : g' x = g x) : LiftPropWithinAt P g' s x :=
by
@@ -439,42 +649,90 @@ theorem liftPropWithinAt_congr_of_eventuallyEq (h : LiftPropWithinAt P g s x) (h
exact h₁.mono fun y hy => by rw [hx, hy]
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_of_eventuallyEq
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_iff_of_eventually_eq -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_iff_of_eventuallyEq is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (Filter.EventuallyEq.{u2, u4} M M' (nhdsWithin.{u2} M _inst_2 x s) g' g) -> (Eq.{succ u4} M' (g' x) (g x)) -> (Iff (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' s x) (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x))
+but is expected to have type
+ forall {H : Type.{u2}} {M : Type.{u4}} {H' : Type.{u1}} {M' : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u4} M] [_inst_3 : ChartedSpace.{u2, u4} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u1} H'] [_inst_5 : TopologicalSpace.{u3} M'] [_inst_6 : ChartedSpace.{u1, u3} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u2} H _inst_1} {G' : StructureGroupoid.{u1} H' _inst_4} {P : (H -> H') -> (Set.{u2} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {s : Set.{u4} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u2, u1} H H' _inst_1 _inst_4 G G' P) -> (Filter.EventuallyEq.{u4, u3} M M' (nhdsWithin.{u4} M _inst_2 x s) g' g) -> (Eq.{succ u3} M' (g' x) (g x)) -> (Iff (ChartedSpace.LiftPropWithinAt.{u2, u4, u1, u3} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' s x) (ChartedSpace.LiftPropWithinAt.{u2, u4, u1, u3} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_iff_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_iff_of_eventuallyEqₓ'. -/
theorem liftPropWithinAt_congr_iff_of_eventuallyEq (h₁ : g' =ᶠ[𝓝[s] x] g) (hx : g' x = g x) :
LiftPropWithinAt P g' s x ↔ LiftPropWithinAt P g s x :=
⟨fun h => hG.liftPropWithinAt_congr_of_eventuallyEq h h₁.symm hx.symm, fun h =>
hG.liftPropWithinAt_congr_of_eventuallyEq h h₁ hx⟩
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_iff_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_iff_of_eventuallyEq
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_iff -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_iff is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (forall (y : M), (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) y s) -> (Eq.{succ u4} M' (g' y) (g y))) -> (Eq.{succ u4} M' (g' x) (g x)) -> (Iff (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' s x) (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x))
+but is expected to have type
+ forall {H : Type.{u2}} {M : Type.{u4}} {H' : Type.{u1}} {M' : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u4} M] [_inst_3 : ChartedSpace.{u2, u4} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u1} H'] [_inst_5 : TopologicalSpace.{u3} M'] [_inst_6 : ChartedSpace.{u1, u3} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u2} H _inst_1} {G' : StructureGroupoid.{u1} H' _inst_4} {P : (H -> H') -> (Set.{u2} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {s : Set.{u4} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u2, u1} H H' _inst_1 _inst_4 G G' P) -> (forall (y : M), (Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) y s) -> (Eq.{succ u3} M' (g' y) (g y))) -> (Eq.{succ u3} M' (g' x) (g x)) -> (Iff (ChartedSpace.LiftPropWithinAt.{u2, u4, u1, u3} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' s x) (ChartedSpace.LiftPropWithinAt.{u2, u4, u1, u3} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_iff StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_iffₓ'. -/
theorem liftPropWithinAt_congr_iff (h₁ : ∀ y ∈ s, g' y = g y) (hx : g' x = g x) :
LiftPropWithinAt P g' s x ↔ LiftPropWithinAt P g s x :=
hG.liftPropWithinAt_congr_iff_of_eventuallyEq (eventually_nhdsWithin_of_forall h₁) hx
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_iff StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_iff
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_congr -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {s : Set.{u2} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) -> (forall (y : M), (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) y s) -> (Eq.{succ u4} M' (g' y) (g y))) -> (Eq.{succ u4} M' (g' x) (g x)) -> (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' s x)
+but is expected to have type
+ forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u4} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {s : Set.{u3} M} {x : M}, (StructureGroupoid.LocalInvariantProp.{u4, u2} H H' _inst_1 _inst_4 G G' P) -> (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) -> (forall (y : M), (Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) y s) -> (Eq.{succ u1} M' (g' y) (g y))) -> (Eq.{succ u1} M' (g' x) (g x)) -> (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' s x)
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congrₓ'. -/
theorem liftPropWithinAt_congr (h : LiftPropWithinAt P g s x) (h₁ : ∀ y ∈ s, g' y = g y)
(hx : g' x = g x) : LiftPropWithinAt P g' s x :=
(hG.liftPropWithinAt_congr_iff h₁ hx).mpr h
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_at_congr_iff_of_eventually_eq -> StructureGroupoid.LocalInvariantProp.liftPropAt_congr_iff_of_eventuallyEq is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (Filter.EventuallyEq.{u2, u4} M M' (nhds.{u2} M _inst_2 x) g' g) -> (Iff (ChartedSpace.LiftPropAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' x) (ChartedSpace.LiftPropAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g x))
+but is expected to have type
+ forall {H : Type.{u2}} {M : Type.{u4}} {H' : Type.{u1}} {M' : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u4} M] [_inst_3 : ChartedSpace.{u2, u4} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u1} H'] [_inst_5 : TopologicalSpace.{u3} M'] [_inst_6 : ChartedSpace.{u1, u3} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u2} H _inst_1} {G' : StructureGroupoid.{u1} H' _inst_4} {P : (H -> H') -> (Set.{u2} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {x : M}, (StructureGroupoid.LocalInvariantProp.{u2, u1} H H' _inst_1 _inst_4 G G' P) -> (Filter.EventuallyEq.{u4, u3} M M' (nhds.{u4} M _inst_2 x) g' g) -> (Iff (ChartedSpace.LiftPropAt.{u2, u4, u1, u3} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' x) (ChartedSpace.LiftPropAt.{u2, u4, u1, u3} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g x))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_at_congr_iff_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropAt_congr_iff_of_eventuallyEqₓ'. -/
theorem liftPropAt_congr_iff_of_eventuallyEq (h₁ : g' =ᶠ[𝓝 x] g) :
LiftPropAt P g' x ↔ LiftPropAt P g x :=
hG.liftPropWithinAt_congr_iff_of_eventuallyEq (by simp_rw [nhdsWithin_univ, h₁]) h₁.eq_of_nhds
#align structure_groupoid.local_invariant_prop.lift_prop_at_congr_iff_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropAt_congr_iff_of_eventuallyEq
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_at_congr_of_eventually_eq -> StructureGroupoid.LocalInvariantProp.liftPropAt_congr_of_eventuallyEq is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {x : M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (ChartedSpace.LiftPropAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g x) -> (Filter.EventuallyEq.{u2, u4} M M' (nhds.{u2} M _inst_2 x) g' g) -> (ChartedSpace.LiftPropAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' x)
+but is expected to have type
+ forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u4} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {x : M}, (StructureGroupoid.LocalInvariantProp.{u4, u2} H H' _inst_1 _inst_4 G G' P) -> (ChartedSpace.LiftPropAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g x) -> (Filter.EventuallyEq.{u3, u1} M M' (nhds.{u3} M _inst_2 x) g' g) -> (ChartedSpace.LiftPropAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' x)
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_at_congr_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropAt_congr_of_eventuallyEqₓ'. -/
theorem liftPropAt_congr_of_eventuallyEq (h : LiftPropAt P g x) (h₁ : g' =ᶠ[𝓝 x] g) :
LiftPropAt P g' x :=
(hG.liftPropAt_congr_iff_of_eventuallyEq h₁).mpr h
#align structure_groupoid.local_invariant_prop.lift_prop_at_congr_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropAt_congr_of_eventuallyEq
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_on_congr -> StructureGroupoid.LocalInvariantProp.liftPropOn_congr is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {s : Set.{u2} M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (ChartedSpace.LiftPropOn.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s) -> (forall (y : M), (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) y s) -> (Eq.{succ u4} M' (g' y) (g y))) -> (ChartedSpace.LiftPropOn.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' s)
+but is expected to have type
+ forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u4} H _inst_1} {G' : StructureGroupoid.{u2} H' _inst_4} {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {s : Set.{u3} M}, (StructureGroupoid.LocalInvariantProp.{u4, u2} H H' _inst_1 _inst_4 G G' P) -> (ChartedSpace.LiftPropOn.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s) -> (forall (y : M), (Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) y s) -> (Eq.{succ u1} M' (g' y) (g y))) -> (ChartedSpace.LiftPropOn.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' s)
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_on_congr StructureGroupoid.LocalInvariantProp.liftPropOn_congrₓ'. -/
theorem liftPropOn_congr (h : LiftPropOn P g s) (h₁ : ∀ y ∈ s, g' y = g y) : LiftPropOn P g' s :=
fun x hx => hG.liftPropWithinAt_congr (h x hx) h₁ (h₁ x hx)
#align structure_groupoid.local_invariant_prop.lift_prop_on_congr StructureGroupoid.LocalInvariantProp.liftPropOn_congr
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_on_congr_iff -> StructureGroupoid.LocalInvariantProp.liftPropOn_congr_iff is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u1} H _inst_1} {G' : StructureGroupoid.{u3} H' _inst_4} {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {s : Set.{u2} M}, (StructureGroupoid.LocalInvariantProp.{u1, u3} H H' _inst_1 _inst_4 G G' P) -> (forall (y : M), (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) y s) -> (Eq.{succ u4} M' (g' y) (g y))) -> (Iff (ChartedSpace.LiftPropOn.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' s) (ChartedSpace.LiftPropOn.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s))
+but is expected to have type
+ forall {H : Type.{u2}} {M : Type.{u4}} {H' : Type.{u1}} {M' : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u4} M] [_inst_3 : ChartedSpace.{u2, u4} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u1} H'] [_inst_5 : TopologicalSpace.{u3} M'] [_inst_6 : ChartedSpace.{u1, u3} H' _inst_4 M' _inst_5] {G : StructureGroupoid.{u2} H _inst_1} {G' : StructureGroupoid.{u1} H' _inst_4} {P : (H -> H') -> (Set.{u2} H) -> H -> Prop} {g : M -> M'} {g' : M -> M'} {s : Set.{u4} M}, (StructureGroupoid.LocalInvariantProp.{u2, u1} H H' _inst_1 _inst_4 G G' P) -> (forall (y : M), (Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) y s) -> (Eq.{succ u3} M' (g' y) (g y))) -> (Iff (ChartedSpace.LiftPropOn.{u2, u4, u1, u3} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g' s) (ChartedSpace.LiftPropOn.{u2, u4, u1, u3} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_on_congr_iff StructureGroupoid.LocalInvariantProp.liftPropOn_congr_iffₓ'. -/
theorem liftPropOn_congr_iff (h₁ : ∀ y ∈ s, g' y = g y) : LiftPropOn P g' s ↔ LiftPropOn P g s :=
⟨fun h => hG.liftPropOn_congr h fun y hy => (h₁ y hy).symm, fun h => hG.liftPropOn_congr h h₁⟩
#align structure_groupoid.local_invariant_prop.lift_prop_on_congr_iff StructureGroupoid.LocalInvariantProp.liftPropOn_congr_iff
omit hG
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_mono_of_mem -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_mono_of_mem is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M} {t : Set.{u2} M} {x : M}, (forall {{s : Set.{u1} H}} {{x : H}} {{t : Set.{u1} H}} {{f : H -> H'}}, (Membership.Mem.{u1, u1} (Set.{u1} H) (Filter.{u1} H) (Filter.hasMem.{u1} H) s (nhdsWithin.{u1} H _inst_1 x t)) -> (P f s x) -> (P f t x)) -> (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) -> (Membership.Mem.{u2, u2} (Set.{u2} M) (Filter.{u2} M) (Filter.hasMem.{u2} M) s (nhdsWithin.{u2} M _inst_2 x t)) -> (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g t x)
+but is expected to have type
+ forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {s : Set.{u3} M} {t : Set.{u3} M} {x : M}, (forall {{s : Set.{u4} H}} {{x : H}} {{t : Set.{u4} H}} {{f : H -> H'}}, (Membership.mem.{u4, u4} (Set.{u4} H) (Filter.{u4} H) (instMembershipSetFilter.{u4} H) s (nhdsWithin.{u4} H _inst_1 x t)) -> (P f s x) -> (P f t x)) -> (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) -> (Membership.mem.{u3, u3} (Set.{u3} M) (Filter.{u3} M) (instMembershipSetFilter.{u3} M) s (nhdsWithin.{u3} M _inst_2 x t)) -> (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g t x)
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_mono_of_mem StructureGroupoid.LocalInvariantProp.liftPropWithinAt_mono_of_memₓ'. -/
theorem liftPropWithinAt_mono_of_mem
(mono_of_mem : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, s ∈ 𝓝[t] x → P f s x → P f t x)
(h : LiftPropWithinAt P g s x) (hst : s ∈ 𝓝[t] x) : LiftPropWithinAt P g t x :=
@@ -484,6 +742,12 @@ theorem liftPropWithinAt_mono_of_mem
(chart_at H x).left_inv (mem_chart_source H x), hst]
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_mono_of_mem StructureGroupoid.LocalInvariantProp.liftPropWithinAt_mono_of_mem
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_mono -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_mono is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M} {t : Set.{u2} M} {x : M}, (forall {{s : Set.{u1} H}} {{x : H}} {{t : Set.{u1} H}} {{f : H -> H'}}, (HasSubset.Subset.{u1} (Set.{u1} H) (Set.hasSubset.{u1} H) t s) -> (P f s x) -> (P f t x)) -> (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) -> (HasSubset.Subset.{u2} (Set.{u2} M) (Set.hasSubset.{u2} M) t s) -> (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g t x)
+but is expected to have type
+ forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {s : Set.{u3} M} {t : Set.{u3} M} {x : M}, (forall {{s : Set.{u4} H}} {{x : H}} {{t : Set.{u4} H}} {{f : H -> H'}}, (HasSubset.Subset.{u4} (Set.{u4} H) (Set.instHasSubsetSet.{u4} H) t s) -> (P f s x) -> (P f t x)) -> (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x) -> (HasSubset.Subset.{u3} (Set.{u3} M) (Set.instHasSubsetSet.{u3} M) t s) -> (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g t x)
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_mono StructureGroupoid.LocalInvariantProp.liftPropWithinAt_monoₓ'. -/
theorem liftPropWithinAt_mono (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆ s → P f s x → P f t x)
(h : LiftPropWithinAt P g s x) (hts : t ⊆ s) : LiftPropWithinAt P g t x :=
by
@@ -493,6 +757,12 @@ theorem liftPropWithinAt_mono (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆
simp only [hy, hts _, mfld_simps]
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_mono StructureGroupoid.LocalInvariantProp.liftPropWithinAt_mono
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_within_at_of_lift_prop_at -> StructureGroupoid.LocalInvariantProp.liftPropWithinAt_of_liftPropAt is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M} {x : M}, (forall {{s : Set.{u1} H}} {{x : H}} {{t : Set.{u1} H}} {{f : H -> H'}}, (HasSubset.Subset.{u1} (Set.{u1} H) (Set.hasSubset.{u1} H) t s) -> (P f s x) -> (P f t x)) -> (ChartedSpace.LiftPropAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g x) -> (ChartedSpace.LiftPropWithinAt.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x)
+but is expected to have type
+ forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {s : Set.{u3} M} {x : M}, (forall {{s : Set.{u4} H}} {{x : H}} {{t : Set.{u4} H}} {{f : H -> H'}}, (HasSubset.Subset.{u4} (Set.{u4} H) (Set.instHasSubsetSet.{u4} H) t s) -> (P f s x) -> (P f t x)) -> (ChartedSpace.LiftPropAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g x) -> (ChartedSpace.LiftPropWithinAt.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s x)
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_within_at_of_lift_prop_at StructureGroupoid.LocalInvariantProp.liftPropWithinAt_of_liftPropAtₓ'. -/
theorem liftPropWithinAt_of_liftPropAt (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆ s → P f s x → P f t x)
(h : LiftPropAt P g x) : LiftPropWithinAt P g s x :=
by
@@ -500,11 +770,23 @@ theorem liftPropWithinAt_of_liftPropAt (mono : ∀ ⦃s x t⦄ ⦃f : H → H'
exact lift_prop_within_at_mono mono h (subset_univ _)
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_of_lift_prop_at StructureGroupoid.LocalInvariantProp.liftPropWithinAt_of_liftPropAt
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_on_mono -> StructureGroupoid.LocalInvariantProp.liftPropOn_mono is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M} {t : Set.{u2} M}, (forall {{s : Set.{u1} H}} {{x : H}} {{t : Set.{u1} H}} {{f : H -> H'}}, (HasSubset.Subset.{u1} (Set.{u1} H) (Set.hasSubset.{u1} H) t s) -> (P f s x) -> (P f t x)) -> (ChartedSpace.LiftPropOn.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g t) -> (HasSubset.Subset.{u2} (Set.{u2} M) (Set.hasSubset.{u2} M) s t) -> (ChartedSpace.LiftPropOn.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s)
+but is expected to have type
+ forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {s : Set.{u3} M} {t : Set.{u3} M}, (forall {{s : Set.{u4} H}} {{x : H}} {{t : Set.{u4} H}} {{f : H -> H'}}, (HasSubset.Subset.{u4} (Set.{u4} H) (Set.instHasSubsetSet.{u4} H) t s) -> (P f s x) -> (P f t x)) -> (ChartedSpace.LiftPropOn.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g t) -> (HasSubset.Subset.{u3} (Set.{u3} M) (Set.instHasSubsetSet.{u3} M) s t) -> (ChartedSpace.LiftPropOn.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s)
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_on_mono StructureGroupoid.LocalInvariantProp.liftPropOn_monoₓ'. -/
theorem liftPropOn_mono (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆ s → P f s x → P f t x)
(h : LiftPropOn P g t) (hst : s ⊆ t) : LiftPropOn P g s := fun x hx =>
liftPropWithinAt_mono mono (h x (hst hx)) hst
#align structure_groupoid.local_invariant_prop.lift_prop_on_mono StructureGroupoid.LocalInvariantProp.liftPropOn_mono
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_on_of_lift_prop -> StructureGroupoid.LocalInvariantProp.liftPropOn_of_liftProp is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} {H' : Type.{u3}} {M' : Type.{u4}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u3} H'] [_inst_5 : TopologicalSpace.{u4} M'] [_inst_6 : ChartedSpace.{u3, u4} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u1} H) -> H -> Prop} {g : M -> M'} {s : Set.{u2} M}, (forall {{s : Set.{u1} H}} {{x : H}} {{t : Set.{u1} H}} {{f : H -> H'}}, (HasSubset.Subset.{u1} (Set.{u1} H) (Set.hasSubset.{u1} H) t s) -> (P f s x) -> (P f t x)) -> (ChartedSpace.LiftProp.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g) -> (ChartedSpace.LiftPropOn.{u1, u2, u3, u4} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s)
+but is expected to have type
+ forall {H : Type.{u4}} {M : Type.{u3}} {H' : Type.{u2}} {M' : Type.{u1}} [_inst_1 : TopologicalSpace.{u4} H] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : ChartedSpace.{u4, u3} H _inst_1 M _inst_2] [_inst_4 : TopologicalSpace.{u2} H'] [_inst_5 : TopologicalSpace.{u1} M'] [_inst_6 : ChartedSpace.{u2, u1} H' _inst_4 M' _inst_5] {P : (H -> H') -> (Set.{u4} H) -> H -> Prop} {g : M -> M'} {s : Set.{u3} M}, (forall {{s : Set.{u4} H}} {{x : H}} {{t : Set.{u4} H}} {{f : H -> H'}}, (HasSubset.Subset.{u4} (Set.{u4} H) (Set.instHasSubsetSet.{u4} H) t s) -> (P f s x) -> (P f t x)) -> (ChartedSpace.LiftProp.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g) -> (ChartedSpace.LiftPropOn.{u4, u3, u2, u1} H M H' M' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 P g s)
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_on_of_lift_prop StructureGroupoid.LocalInvariantProp.liftPropOn_of_liftPropₓ'. -/
theorem liftPropOn_of_liftProp (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆ s → P f s x → P f t x)
(h : LiftProp P g) : LiftPropOn P g s :=
by
@@ -512,6 +794,12 @@ theorem liftPropOn_of_liftProp (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆
exact lift_prop_on_mono mono h (subset_univ _)
#align structure_groupoid.local_invariant_prop.lift_prop_on_of_lift_prop StructureGroupoid.LocalInvariantProp.liftPropOn_of_liftProp
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_at_of_mem_maximal_atlas -> StructureGroupoid.LocalInvariantProp.liftPropAt_of_mem_maximalAtlas is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] {G : StructureGroupoid.{u1} H _inst_1} {e : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1} {x : M} {Q : (H -> H) -> (Set.{u1} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u1, u2} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u1, u1} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u1} H) (Set.univ.{u1} H) y) -> (Membership.Mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) (Set.hasMem.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u1, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.Mem.{u2, u2} M (Set.{u2} M) (Set.hasMem.{u2} M) x (LocalEquiv.source.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 e))) -> (ChartedSpace.LiftPropAt.{u1, u2, u1, u1} H M H H _inst_1 _inst_2 _inst_3 _inst_1 _inst_1 (chartedSpaceSelf.{u1} H _inst_1) Q (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) e) x)
+but is expected to have type
+ forall {H : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : ChartedSpace.{u2, u1} H _inst_1 M _inst_2] {G : StructureGroupoid.{u2} H _inst_1} {e : LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1} {x : M} {Q : (H -> H) -> (Set.{u2} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u2, u1} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u2, u2} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u2} H) (Set.univ.{u2} H) y) -> (Membership.mem.{max u2 u1, max u1 u2} (LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1)) (Set.instMembershipSet.{max u2 u1} (LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u2, u1} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (LocalEquiv.source.{u1, u2} M H (LocalHomeomorph.toLocalEquiv.{u1, u2} M H _inst_2 _inst_1 e))) -> (ChartedSpace.LiftPropAt.{u2, u1, u2, u2} H M H H _inst_1 _inst_2 _inst_3 _inst_1 _inst_1 (chartedSpaceSelf.{u2} H _inst_1) Q (LocalHomeomorph.toFun'.{u1, u2} M H _inst_2 _inst_1 e) x)
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_at_of_mem_maximal_atlas StructureGroupoid.LocalInvariantProp.liftPropAt_of_mem_maximalAtlasₓ'. -/
theorem liftPropAt_of_mem_maximalAtlas [HasGroupoid M G] (hG : G.LocalInvariantProp G Q)
(hQ : ∀ y, Q id univ y) (he : e ∈ maximalAtlas M G) (hx : x ∈ e.source) : LiftPropAt Q e x :=
by
@@ -521,6 +809,12 @@ theorem liftPropAt_of_mem_maximalAtlas [HasGroupoid M G] (hG : G.LocalInvariantP
exact hG.congr' (e.eventually_right_inverse' hx) (hQ _)
#align structure_groupoid.local_invariant_prop.lift_prop_at_of_mem_maximal_atlas StructureGroupoid.LocalInvariantProp.liftPropAt_of_mem_maximalAtlas
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_on_of_mem_maximal_atlas -> StructureGroupoid.LocalInvariantProp.liftPropOn_of_mem_maximalAtlas is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] {G : StructureGroupoid.{u1} H _inst_1} {e : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1} {Q : (H -> H) -> (Set.{u1} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u1, u2} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u1, u1} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u1} H) (Set.univ.{u1} H) y) -> (Membership.Mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) (Set.hasMem.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u1, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (ChartedSpace.LiftPropOn.{u1, u2, u1, u1} H M H H _inst_1 _inst_2 _inst_3 _inst_1 _inst_1 (chartedSpaceSelf.{u1} H _inst_1) Q (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) e) (LocalEquiv.source.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 e)))
+but is expected to have type
+ forall {H : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : ChartedSpace.{u2, u1} H _inst_1 M _inst_2] {G : StructureGroupoid.{u2} H _inst_1} {e : LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1} {Q : (H -> H) -> (Set.{u2} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u2, u1} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u2, u2} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u2} H) (Set.univ.{u2} H) y) -> (Membership.mem.{max u2 u1, max u1 u2} (LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1)) (Set.instMembershipSet.{max u2 u1} (LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u2, u1} H M _inst_1 _inst_2 _inst_3 G)) -> (ChartedSpace.LiftPropOn.{u2, u1, u2, u2} H M H H _inst_1 _inst_2 _inst_3 _inst_1 _inst_1 (chartedSpaceSelf.{u2} H _inst_1) Q (LocalHomeomorph.toFun'.{u1, u2} M H _inst_2 _inst_1 e) (LocalEquiv.source.{u1, u2} M H (LocalHomeomorph.toLocalEquiv.{u1, u2} M H _inst_2 _inst_1 e)))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_on_of_mem_maximal_atlas StructureGroupoid.LocalInvariantProp.liftPropOn_of_mem_maximalAtlasₓ'. -/
theorem liftPropOn_of_mem_maximalAtlas [HasGroupoid M G] (hG : G.LocalInvariantProp G Q)
(hQ : ∀ y, Q id univ y) (he : e ∈ maximalAtlas M G) : LiftPropOn Q e e.source :=
by
@@ -531,6 +825,12 @@ theorem liftPropOn_of_mem_maximalAtlas [HasGroupoid M G] (hG : G.LocalInvariantP
exact IsOpen.mem_nhds e.open_source hx
#align structure_groupoid.local_invariant_prop.lift_prop_on_of_mem_maximal_atlas StructureGroupoid.LocalInvariantProp.liftPropOn_of_mem_maximalAtlas
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_at_symm_of_mem_maximal_atlas -> StructureGroupoid.LocalInvariantProp.liftPropAt_symm_of_mem_maximalAtlas is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] {G : StructureGroupoid.{u1} H _inst_1} {e : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1} {Q : (H -> H) -> (Set.{u1} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u1, u2} H _inst_1 M _inst_2 _inst_3 G] {x : H}, (StructureGroupoid.LocalInvariantProp.{u1, u1} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u1} H) (Set.univ.{u1} H) y) -> (Membership.Mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) (Set.hasMem.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u1, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.Mem.{u1, u1} H (Set.{u1} H) (Set.hasMem.{u1} H) x (LocalEquiv.target.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 e))) -> (ChartedSpace.LiftPropAt.{u1, u1, u1, u2} H H H M _inst_1 _inst_1 (chartedSpaceSelf.{u1} H _inst_1) _inst_1 _inst_2 _inst_3 Q (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e)) x)
+but is expected to have type
+ forall {H : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : ChartedSpace.{u2, u1} H _inst_1 M _inst_2] {G : StructureGroupoid.{u2} H _inst_1} {e : LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1} {Q : (H -> H) -> (Set.{u2} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u2, u1} H _inst_1 M _inst_2 _inst_3 G] {x : H}, (StructureGroupoid.LocalInvariantProp.{u2, u2} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u2} H) (Set.univ.{u2} H) y) -> (Membership.mem.{max u2 u1, max u1 u2} (LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1)) (Set.instMembershipSet.{max u2 u1} (LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u2, u1} H M _inst_1 _inst_2 _inst_3 G)) -> (Membership.mem.{u2, u2} H (Set.{u2} H) (Set.instMembershipSet.{u2} H) x (LocalEquiv.target.{u1, u2} M H (LocalHomeomorph.toLocalEquiv.{u1, u2} M H _inst_2 _inst_1 e))) -> (ChartedSpace.LiftPropAt.{u2, u2, u2, u1} H H H M _inst_1 _inst_1 (chartedSpaceSelf.{u2} H _inst_1) _inst_1 _inst_2 _inst_3 Q (LocalHomeomorph.toFun'.{u2, u1} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u1, u2} M H _inst_2 _inst_1 e)) x)
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_at_symm_of_mem_maximal_atlas StructureGroupoid.LocalInvariantProp.liftPropAt_symm_of_mem_maximalAtlasₓ'. -/
theorem liftPropAt_symm_of_mem_maximalAtlas [HasGroupoid M G] {x : H}
(hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y) (he : e ∈ maximalAtlas M G)
(hx : x ∈ e.target) : LiftPropAt Q e.symm x :=
@@ -545,6 +845,12 @@ theorem liftPropAt_symm_of_mem_maximalAtlas [HasGroupoid M G] {x : H}
exact hG.congr' (e.eventually_right_inverse hx) (hQ x)
#align structure_groupoid.local_invariant_prop.lift_prop_at_symm_of_mem_maximal_atlas StructureGroupoid.LocalInvariantProp.liftPropAt_symm_of_mem_maximalAtlas
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_on_symm_of_mem_maximal_atlas -> StructureGroupoid.LocalInvariantProp.liftPropOn_symm_of_mem_maximalAtlas is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] {G : StructureGroupoid.{u1} H _inst_1} {e : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1} {Q : (H -> H) -> (Set.{u1} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u1, u2} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u1, u1} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u1} H) (Set.univ.{u1} H) y) -> (Membership.Mem.{max u2 u1, max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) (Set.hasMem.{max u2 u1} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u1, u2} H M _inst_1 _inst_2 _inst_3 G)) -> (ChartedSpace.LiftPropOn.{u1, u1, u1, u2} H H H M _inst_1 _inst_1 (chartedSpaceSelf.{u1} H _inst_1) _inst_1 _inst_2 _inst_3 Q (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 e)) (LocalEquiv.target.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 e)))
+but is expected to have type
+ forall {H : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : ChartedSpace.{u2, u1} H _inst_1 M _inst_2] {G : StructureGroupoid.{u2} H _inst_1} {e : LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1} {Q : (H -> H) -> (Set.{u2} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u2, u1} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u2, u2} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u2} H) (Set.univ.{u2} H) y) -> (Membership.mem.{max u2 u1, max u1 u2} (LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1) (Set.{max u2 u1} (LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1)) (Set.instMembershipSet.{max u2 u1} (LocalHomeomorph.{u1, u2} M H _inst_2 _inst_1)) e (StructureGroupoid.maximalAtlas.{u2, u1} H M _inst_1 _inst_2 _inst_3 G)) -> (ChartedSpace.LiftPropOn.{u2, u2, u2, u1} H H H M _inst_1 _inst_1 (chartedSpaceSelf.{u2} H _inst_1) _inst_1 _inst_2 _inst_3 Q (LocalHomeomorph.toFun'.{u2, u1} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u1, u2} M H _inst_2 _inst_1 e)) (LocalEquiv.target.{u1, u2} M H (LocalHomeomorph.toLocalEquiv.{u1, u2} M H _inst_2 _inst_1 e)))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_on_symm_of_mem_maximal_atlas StructureGroupoid.LocalInvariantProp.liftPropOn_symm_of_mem_maximalAtlasₓ'. -/
theorem liftPropOn_symm_of_mem_maximalAtlas [HasGroupoid M G] (hG : G.LocalInvariantProp G Q)
(hQ : ∀ y, Q id univ y) (he : e ∈ maximalAtlas M G) : LiftPropOn Q e.symm e.target :=
by
@@ -555,36 +861,70 @@ theorem liftPropOn_symm_of_mem_maximalAtlas [HasGroupoid M G] (hG : G.LocalInvar
exact IsOpen.mem_nhds e.open_target hx
#align structure_groupoid.local_invariant_prop.lift_prop_on_symm_of_mem_maximal_atlas StructureGroupoid.LocalInvariantProp.liftPropOn_symm_of_mem_maximalAtlas
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_at_chart -> StructureGroupoid.LocalInvariantProp.liftPropAt_chart is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] {G : StructureGroupoid.{u1} H _inst_1} {x : M} {Q : (H -> H) -> (Set.{u1} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u1, u2} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u1, u1} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u1} H) (Set.univ.{u1} H) y) -> (ChartedSpace.LiftPropAt.{u1, u2, u1, u1} H M H H _inst_1 _inst_2 _inst_3 _inst_1 _inst_1 (chartedSpaceSelf.{u1} H _inst_1) Q (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x)) x)
+but is expected to have type
+ forall {H : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : ChartedSpace.{u2, u1} H _inst_1 M _inst_2] {G : StructureGroupoid.{u2} H _inst_1} {x : M} {Q : (H -> H) -> (Set.{u2} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u2, u1} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u2, u2} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u2} H) (Set.univ.{u2} H) y) -> (ChartedSpace.LiftPropAt.{u2, u1, u2, u2} H M H H _inst_1 _inst_2 _inst_3 _inst_1 _inst_1 (chartedSpaceSelf.{u2} H _inst_1) Q (LocalHomeomorph.toFun'.{u1, u2} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u2, u1} H _inst_1 M _inst_2 _inst_3 x)) x)
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_at_chart StructureGroupoid.LocalInvariantProp.liftPropAt_chartₓ'. -/
theorem liftPropAt_chart [HasGroupoid M G] (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y) :
LiftPropAt Q (chartAt H x) x :=
hG.liftPropAt_of_mem_maximalAtlas hQ (chart_mem_maximalAtlas G x) (mem_chart_source H x)
#align structure_groupoid.local_invariant_prop.lift_prop_at_chart StructureGroupoid.LocalInvariantProp.liftPropAt_chart
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_on_chart -> StructureGroupoid.LocalInvariantProp.liftPropOn_chart is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] {G : StructureGroupoid.{u1} H _inst_1} {x : M} {Q : (H -> H) -> (Set.{u1} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u1, u2} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u1, u1} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u1} H) (Set.univ.{u1} H) y) -> (ChartedSpace.LiftPropOn.{u1, u2, u1, u1} H M H H _inst_1 _inst_2 _inst_3 _inst_1 _inst_1 (chartedSpaceSelf.{u1} H _inst_1) Q (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x)) (LocalEquiv.source.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x))))
+but is expected to have type
+ forall {H : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : ChartedSpace.{u2, u1} H _inst_1 M _inst_2] {G : StructureGroupoid.{u2} H _inst_1} {x : M} {Q : (H -> H) -> (Set.{u2} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u2, u1} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u2, u2} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u2} H) (Set.univ.{u2} H) y) -> (ChartedSpace.LiftPropOn.{u2, u1, u2, u2} H M H H _inst_1 _inst_2 _inst_3 _inst_1 _inst_1 (chartedSpaceSelf.{u2} H _inst_1) Q (LocalHomeomorph.toFun'.{u1, u2} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u2, u1} H _inst_1 M _inst_2 _inst_3 x)) (LocalEquiv.source.{u1, u2} M H (LocalHomeomorph.toLocalEquiv.{u1, u2} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u2, u1} H _inst_1 M _inst_2 _inst_3 x))))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_on_chart StructureGroupoid.LocalInvariantProp.liftPropOn_chartₓ'. -/
theorem liftPropOn_chart [HasGroupoid M G] (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y) :
LiftPropOn Q (chartAt H x) (chartAt H x).source :=
hG.liftPropOn_of_mem_maximalAtlas hQ (chart_mem_maximalAtlas G x)
#align structure_groupoid.local_invariant_prop.lift_prop_on_chart StructureGroupoid.LocalInvariantProp.liftPropOn_chart
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_at_chart_symm -> StructureGroupoid.LocalInvariantProp.liftPropAt_chart_symm is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] {G : StructureGroupoid.{u1} H _inst_1} {x : M} {Q : (H -> H) -> (Set.{u1} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u1, u2} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u1, u1} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u1} H) (Set.univ.{u1} H) y) -> (ChartedSpace.LiftPropAt.{u1, u1, u1, u2} H H H M _inst_1 _inst_1 (chartedSpaceSelf.{u1} H _inst_1) _inst_1 _inst_2 _inst_3 Q (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) (fun (_x : LocalHomeomorph.{u2, u1} M H _inst_2 _inst_1) => M -> H) (LocalHomeomorph.hasCoeToFun.{u2, u1} M H _inst_2 _inst_1) (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x) x))
+but is expected to have type
+ forall {H : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : ChartedSpace.{u2, u1} H _inst_1 M _inst_2] {G : StructureGroupoid.{u2} H _inst_1} {x : M} {Q : (H -> H) -> (Set.{u2} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u2, u1} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u2, u2} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u2} H) (Set.univ.{u2} H) y) -> (ChartedSpace.LiftPropAt.{u2, u2, u2, u1} H H H M _inst_1 _inst_1 (chartedSpaceSelf.{u2} H _inst_1) _inst_1 _inst_2 _inst_3 Q (LocalHomeomorph.toFun'.{u2, u1} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u1, u2} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u2, u1} H _inst_1 M _inst_2 _inst_3 x))) (LocalHomeomorph.toFun'.{u1, u2} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u2, u1} H _inst_1 M _inst_2 _inst_3 x) x))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_at_chart_symm StructureGroupoid.LocalInvariantProp.liftPropAt_chart_symmₓ'. -/
theorem liftPropAt_chart_symm [HasGroupoid M G] (hG : G.LocalInvariantProp G Q)
(hQ : ∀ y, Q id univ y) : LiftPropAt Q (chartAt H x).symm ((chartAt H x) x) :=
hG.liftPropAt_symm_of_mem_maximalAtlas hQ (chart_mem_maximalAtlas G x) (by simp)
#align structure_groupoid.local_invariant_prop.lift_prop_at_chart_symm StructureGroupoid.LocalInvariantProp.liftPropAt_chart_symm
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_on_chart_symm -> StructureGroupoid.LocalInvariantProp.liftPropOn_chart_symm is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] {G : StructureGroupoid.{u1} H _inst_1} {x : M} {Q : (H -> H) -> (Set.{u1} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u1, u2} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u1, u1} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u1} H) (Set.univ.{u1} H) y) -> (ChartedSpace.LiftPropOn.{u1, u1, u1, u2} H H H M _inst_1 _inst_1 (chartedSpaceSelf.{u1} H _inst_1) _inst_1 _inst_2 _inst_3 Q (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) (fun (_x : LocalHomeomorph.{u1, u2} H M _inst_1 _inst_2) => H -> M) (LocalHomeomorph.hasCoeToFun.{u1, u2} H M _inst_1 _inst_2) (LocalHomeomorph.symm.{u2, u1} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x))) (LocalEquiv.target.{u2, u1} M H (LocalHomeomorph.toLocalEquiv.{u2, u1} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u1, u2} H _inst_1 M _inst_2 _inst_3 x))))
+but is expected to have type
+ forall {H : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : ChartedSpace.{u2, u1} H _inst_1 M _inst_2] {G : StructureGroupoid.{u2} H _inst_1} {x : M} {Q : (H -> H) -> (Set.{u2} H) -> H -> Prop} [_inst_8 : HasGroupoid.{u2, u1} H _inst_1 M _inst_2 _inst_3 G], (StructureGroupoid.LocalInvariantProp.{u2, u2} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u2} H) (Set.univ.{u2} H) y) -> (ChartedSpace.LiftPropOn.{u2, u2, u2, u1} H H H M _inst_1 _inst_1 (chartedSpaceSelf.{u2} H _inst_1) _inst_1 _inst_2 _inst_3 Q (LocalHomeomorph.toFun'.{u2, u1} H M _inst_1 _inst_2 (LocalHomeomorph.symm.{u1, u2} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u2, u1} H _inst_1 M _inst_2 _inst_3 x))) (LocalEquiv.target.{u1, u2} M H (LocalHomeomorph.toLocalEquiv.{u1, u2} M H _inst_2 _inst_1 (ChartedSpace.chartAt.{u2, u1} H _inst_1 M _inst_2 _inst_3 x))))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_on_chart_symm StructureGroupoid.LocalInvariantProp.liftPropOn_chart_symmₓ'. -/
theorem liftPropOn_chart_symm [HasGroupoid M G] (hG : G.LocalInvariantProp G Q)
(hQ : ∀ y, Q id univ y) : LiftPropOn Q (chartAt H x).symm (chartAt H x).target :=
hG.liftPropOn_symm_of_mem_maximalAtlas hQ (chart_mem_maximalAtlas G x)
#align structure_groupoid.local_invariant_prop.lift_prop_on_chart_symm StructureGroupoid.LocalInvariantProp.liftPropOn_chart_symm
+#print StructureGroupoid.LocalInvariantProp.liftPropAt_of_mem_groupoid /-
theorem liftPropAt_of_mem_groupoid (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y)
{f : LocalHomeomorph H H} (hf : f ∈ G) {x : H} (hx : x ∈ f.source) : LiftPropAt Q f x :=
liftPropAt_of_mem_maximalAtlas hG hQ (G.mem_maximalAtlas_of_mem_groupoid hf) hx
#align structure_groupoid.local_invariant_prop.lift_prop_at_of_mem_groupoid StructureGroupoid.LocalInvariantProp.liftPropAt_of_mem_groupoid
+-/
+#print StructureGroupoid.LocalInvariantProp.liftPropOn_of_mem_groupoid /-
theorem liftPropOn_of_mem_groupoid (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y)
{f : LocalHomeomorph H H} (hf : f ∈ G) : LiftPropOn Q f f.source :=
liftPropOn_of_mem_maximalAtlas hG hQ (G.mem_maximalAtlas_of_mem_groupoid hf)
#align structure_groupoid.local_invariant_prop.lift_prop_on_of_mem_groupoid StructureGroupoid.LocalInvariantProp.liftPropOn_of_mem_groupoid
+-/
+/- warning: structure_groupoid.local_invariant_prop.lift_prop_id -> StructureGroupoid.LocalInvariantProp.liftProp_id is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} H] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : ChartedSpace.{u1, u2} H _inst_1 M _inst_2] {G : StructureGroupoid.{u1} H _inst_1} {Q : (H -> H) -> (Set.{u1} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u1, u1} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u1} H) (Set.univ.{u1} H) y) -> (ChartedSpace.LiftProp.{u1, u2, u1, u2} H M H M _inst_1 _inst_2 _inst_3 _inst_1 _inst_2 _inst_3 Q (id.{succ u2} M))
+but is expected to have type
+ forall {H : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} H] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : ChartedSpace.{u2, u1} H _inst_1 M _inst_2] {G : StructureGroupoid.{u2} H _inst_1} {Q : (H -> H) -> (Set.{u2} H) -> H -> Prop}, (StructureGroupoid.LocalInvariantProp.{u2, u2} H H _inst_1 _inst_1 G G Q) -> (forall (y : H), Q (id.{succ u2} H) (Set.univ.{u2} H) y) -> (ChartedSpace.LiftProp.{u2, u1, u2, u1} H M H M _inst_1 _inst_2 _inst_3 _inst_1 _inst_2 _inst_3 Q (id.{succ u1} M))
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.local_invariant_prop.lift_prop_id StructureGroupoid.LocalInvariantProp.liftProp_idₓ'. -/
theorem liftProp_id (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y) :
LiftProp Q (id : M → M) :=
by
@@ -600,13 +940,16 @@ variable (G)
open LocalHomeomorph
+#print StructureGroupoid.IsLocalStructomorphWithinAt /-
/-- A function from a model space `H` to itself is a local structomorphism, with respect to a
structure groupoid `G` for `H`, relative to a set `s` in `H`, if for all points `x` in the set, the
function agrees with a `G`-structomorphism on `s` in a neighbourhood of `x`. -/
def IsLocalStructomorphWithinAt (f : H → H) (s : Set H) (x : H) : Prop :=
x ∈ s → ∃ e : LocalHomeomorph H H, e ∈ G ∧ EqOn f e.toFun (s ∩ e.source) ∧ x ∈ e.source
#align structure_groupoid.is_local_structomorph_within_at StructureGroupoid.IsLocalStructomorphWithinAt
+-/
+#print StructureGroupoid.isLocalStructomorphWithinAt_localInvariantProp /-
/-- For a groupoid `G` which is `closed_under_restriction`, being a local structomorphism is a local
invariant property. -/
theorem isLocalStructomorphWithinAt_localInvariantProp [ClosedUnderRestriction G] :
@@ -649,7 +992,14 @@ theorem isLocalStructomorphWithinAt_localInvariantProp [ClosedUnderRestriction G
simp only [hef ⟨hy.1, hy.2.1⟩, mfld_simps]
· simpa only [hex, hef ⟨hx, hex⟩, mfld_simps] using hfx }
#align structure_groupoid.is_local_structomorph_within_at_local_invariant_prop StructureGroupoid.isLocalStructomorphWithinAt_localInvariantProp
+-/
+/- warning: local_homeomorph.is_local_structomorph_within_at_iff -> LocalHomeomorph.isLocalStructomorphWithinAt_iff is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} H] {G : StructureGroupoid.{u1} H _inst_1} [_inst_8 : ClosedUnderRestriction.{u1} H _inst_1 G] (f : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) {s : Set.{u1} H} {x : H}, (Membership.Mem.{u1, u1} H (Set.{u1} H) (Set.hasMem.{u1} H) x (Union.union.{u1} (Set.{u1} H) (Set.hasUnion.{u1} H) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 f)) (HasCompl.compl.{u1} (Set.{u1} H) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} H) (Set.booleanAlgebra.{u1} H)) s))) -> (Iff (StructureGroupoid.IsLocalStructomorphWithinAt.{u1} H _inst_1 G (coeFn.{succ u1, succ u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (fun (f : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) => H -> H) (LocalHomeomorph.hasCoeToFun.{u1, u1} H H _inst_1 _inst_1) f) s x) ((Membership.Mem.{u1, u1} H (Set.{u1} H) (Set.hasMem.{u1} H) x s) -> (Exists.{succ u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (fun (e : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) => And (Membership.Mem.{u1, u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (StructureGroupoid.{u1} H _inst_1) (StructureGroupoid.hasMem.{u1} H _inst_1) e G) (And (HasSubset.Subset.{u1} (Set.{u1} H) (Set.hasSubset.{u1} H) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 e)) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 f))) (And (Set.EqOn.{u1, u1} H H (coeFn.{succ u1, succ u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (fun (_x : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) => H -> H) (LocalHomeomorph.hasCoeToFun.{u1, u1} H H _inst_1 _inst_1) f) (coeFn.{succ u1, succ u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (fun (e : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) => H -> H) (LocalHomeomorph.hasCoeToFun.{u1, u1} H H _inst_1 _inst_1) e) (Inter.inter.{u1} (Set.{u1} H) (Set.hasInter.{u1} H) s (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 e)))) (Membership.Mem.{u1, u1} H (Set.{u1} H) (Set.hasMem.{u1} H) x (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 e)))))))))
+but is expected to have type
+ forall {H : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} H] {G : StructureGroupoid.{u1} H _inst_1} [_inst_8 : ClosedUnderRestriction.{u1} H _inst_1 G] (f : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) {s : Set.{u1} H} {x : H}, (Membership.mem.{u1, u1} H (Set.{u1} H) (Set.instMembershipSet.{u1} H) x (Union.union.{u1} (Set.{u1} H) (Set.instUnionSet.{u1} H) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 f)) (HasCompl.compl.{u1} (Set.{u1} H) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} H) (Set.instBooleanAlgebraSet.{u1} H)) s))) -> (Iff (StructureGroupoid.IsLocalStructomorphWithinAt.{u1} H _inst_1 G (LocalHomeomorph.toFun'.{u1, u1} H H _inst_1 _inst_1 f) s x) ((Membership.mem.{u1, u1} H (Set.{u1} H) (Set.instMembershipSet.{u1} H) x s) -> (Exists.{succ u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (fun (e : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) => And (Membership.mem.{u1, u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (StructureGroupoid.{u1} H _inst_1) (instMembershipLocalHomeomorphStructureGroupoid.{u1} H _inst_1) e G) (And (HasSubset.Subset.{u1} (Set.{u1} H) (Set.instHasSubsetSet.{u1} H) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 e)) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 f))) (And (Set.EqOn.{u1, u1} H H (LocalHomeomorph.toFun'.{u1, u1} H H _inst_1 _inst_1 f) (LocalHomeomorph.toFun'.{u1, u1} H H _inst_1 _inst_1 e) (Inter.inter.{u1} (Set.{u1} H) (Set.instInterSet.{u1} H) s (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 e)))) (Membership.mem.{u1, u1} H (Set.{u1} H) (Set.instMembershipSet.{u1} H) x (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 e)))))))))
+Case conversion may be inaccurate. Consider using '#align local_homeomorph.is_local_structomorph_within_at_iff LocalHomeomorph.isLocalStructomorphWithinAt_iffₓ'. -/
/-- A slight reformulation of `is_local_structomorph_within_at` when `f` is a local homeomorph.
This gives us an `e` that is defined on a subset of `f.source`. -/
theorem LocalHomeomorph.isLocalStructomorphWithinAt_iff {G : StructureGroupoid H}
@@ -675,6 +1025,12 @@ theorem LocalHomeomorph.isLocalStructomorphWithinAt_iff {G : StructureGroupoid H
exact ⟨e, he, hfe, hxe⟩
#align local_homeomorph.is_local_structomorph_within_at_iff LocalHomeomorph.isLocalStructomorphWithinAt_iff
+/- warning: local_homeomorph.is_local_structomorph_within_at_iff' -> LocalHomeomorph.isLocalStructomorphWithinAt_iff' is a dubious translation:
+lean 3 declaration is
+ forall {H : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} H] {G : StructureGroupoid.{u1} H _inst_1} [_inst_8 : ClosedUnderRestriction.{u1} H _inst_1 G] (f : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) {s : Set.{u1} H} {x : H}, (HasSubset.Subset.{u1} (Set.{u1} H) (Set.hasSubset.{u1} H) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 f)) s) -> (Membership.Mem.{u1, u1} H (Set.{u1} H) (Set.hasMem.{u1} H) x (Union.union.{u1} (Set.{u1} H) (Set.hasUnion.{u1} H) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 f)) (HasCompl.compl.{u1} (Set.{u1} H) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} H) (Set.booleanAlgebra.{u1} H)) s))) -> (Iff (StructureGroupoid.IsLocalStructomorphWithinAt.{u1} H _inst_1 G (coeFn.{succ u1, succ u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (fun (f : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) => H -> H) (LocalHomeomorph.hasCoeToFun.{u1, u1} H H _inst_1 _inst_1) f) s x) ((Membership.Mem.{u1, u1} H (Set.{u1} H) (Set.hasMem.{u1} H) x s) -> (Exists.{succ u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (fun (e : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) => And (Membership.Mem.{u1, u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (StructureGroupoid.{u1} H _inst_1) (StructureGroupoid.hasMem.{u1} H _inst_1) e G) (And (HasSubset.Subset.{u1} (Set.{u1} H) (Set.hasSubset.{u1} H) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 e)) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 f))) (And (Set.EqOn.{u1, u1} H H (coeFn.{succ u1, succ u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (fun (_x : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) => H -> H) (LocalHomeomorph.hasCoeToFun.{u1, u1} H H _inst_1 _inst_1) f) (coeFn.{succ u1, succ u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (fun (e : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) => H -> H) (LocalHomeomorph.hasCoeToFun.{u1, u1} H H _inst_1 _inst_1) e) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 e))) (Membership.Mem.{u1, u1} H (Set.{u1} H) (Set.hasMem.{u1} H) x (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 e)))))))))
+but is expected to have type
+ forall {H : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} H] {G : StructureGroupoid.{u1} H _inst_1} [_inst_8 : ClosedUnderRestriction.{u1} H _inst_1 G] (f : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) {s : Set.{u1} H} {x : H}, (HasSubset.Subset.{u1} (Set.{u1} H) (Set.instHasSubsetSet.{u1} H) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 f)) s) -> (Membership.mem.{u1, u1} H (Set.{u1} H) (Set.instMembershipSet.{u1} H) x (Union.union.{u1} (Set.{u1} H) (Set.instUnionSet.{u1} H) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 f)) (HasCompl.compl.{u1} (Set.{u1} H) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} H) (Set.instBooleanAlgebraSet.{u1} H)) s))) -> (Iff (StructureGroupoid.IsLocalStructomorphWithinAt.{u1} H _inst_1 G (LocalHomeomorph.toFun'.{u1, u1} H H _inst_1 _inst_1 f) s x) ((Membership.mem.{u1, u1} H (Set.{u1} H) (Set.instMembershipSet.{u1} H) x s) -> (Exists.{succ u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (fun (e : LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) => And (Membership.mem.{u1, u1} (LocalHomeomorph.{u1, u1} H H _inst_1 _inst_1) (StructureGroupoid.{u1} H _inst_1) (instMembershipLocalHomeomorphStructureGroupoid.{u1} H _inst_1) e G) (And (HasSubset.Subset.{u1} (Set.{u1} H) (Set.instHasSubsetSet.{u1} H) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 e)) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 f))) (And (Set.EqOn.{u1, u1} H H (LocalHomeomorph.toFun'.{u1, u1} H H _inst_1 _inst_1 f) (LocalHomeomorph.toFun'.{u1, u1} H H _inst_1 _inst_1 e) (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 e))) (Membership.mem.{u1, u1} H (Set.{u1} H) (Set.instMembershipSet.{u1} H) x (LocalEquiv.source.{u1, u1} H H (LocalHomeomorph.toLocalEquiv.{u1, u1} H H _inst_1 _inst_1 e)))))))))
+Case conversion may be inaccurate. Consider using '#align local_homeomorph.is_local_structomorph_within_at_iff' LocalHomeomorph.isLocalStructomorphWithinAt_iff'ₓ'. -/
/-- A slight reformulation of `is_local_structomorph_within_at` when `f` is a local homeomorph and
the set we're considering is a superset of `f.source`. -/
theorem LocalHomeomorph.isLocalStructomorphWithinAt_iff' {G : StructureGroupoid H}
@@ -691,6 +1047,7 @@ theorem LocalHomeomorph.isLocalStructomorphWithinAt_iff' {G : StructureGroupoid
rw [inter_eq_right_iff_subset.mpr (h2e.trans hs)]
#align local_homeomorph.is_local_structomorph_within_at_iff' LocalHomeomorph.isLocalStructomorphWithinAt_iff'
+#print LocalHomeomorph.isLocalStructomorphWithinAt_source_iff /-
/-- A slight reformulation of `is_local_structomorph_within_at` when `f` is a local homeomorph and
the set we're considering is `f.source`. -/
theorem LocalHomeomorph.isLocalStructomorphWithinAt_source_iff {G : StructureGroupoid H}
@@ -702,6 +1059,7 @@ theorem LocalHomeomorph.isLocalStructomorphWithinAt_source_iff {G : StructureGro
haveI : x ∈ f.source ∪ f.sourceᶜ := by simp_rw [union_compl_self]
f.is_local_structomorph_within_at_iff' subset.rfl this
#align local_homeomorph.is_local_structomorph_within_at_source_iff LocalHomeomorph.isLocalStructomorphWithinAt_source_iff
+-/
variable {H₁ : Type _} [TopologicalSpace H₁] {H₂ : Type _} [TopologicalSpace H₂] {H₃ : Type _}
[TopologicalSpace H₃] [ChartedSpace H₁ H₂] [ChartedSpace H₂ H₃] {G₁ : StructureGroupoid H₁}
@@ -709,6 +1067,12 @@ variable {H₁ : Type _} [TopologicalSpace H₁] {H₂ : Type _} [TopologicalSpa
variable (G₂)
+/- warning: structure_groupoid.has_groupoid.comp -> StructureGroupoid.HasGroupoid.comp is a dubious translation:
+lean 3 declaration is
+ forall {H₁ : Type.{u1}} [_inst_8 : TopologicalSpace.{u1} H₁] {H₂ : Type.{u2}} [_inst_9 : TopologicalSpace.{u2} H₂] {H₃ : Type.{u3}} [_inst_10 : TopologicalSpace.{u3} H₃] [_inst_11 : ChartedSpace.{u1, u2} H₁ _inst_8 H₂ _inst_9] [_inst_12 : ChartedSpace.{u2, u3} H₂ _inst_9 H₃ _inst_10] {G₁ : StructureGroupoid.{u1} H₁ _inst_8} [_inst_13 : HasGroupoid.{u1, u2} H₁ _inst_8 H₂ _inst_9 _inst_11 G₁] [_inst_14 : ClosedUnderRestriction.{u1} H₁ _inst_8 G₁] (G₂ : StructureGroupoid.{u2} H₂ _inst_9) [_inst_15 : HasGroupoid.{u2, u3} H₂ _inst_9 H₃ _inst_10 _inst_12 G₂], (forall (e : LocalHomeomorph.{u2, u2} H₂ H₂ _inst_9 _inst_9), (Membership.Mem.{u2, u2} (LocalHomeomorph.{u2, u2} H₂ H₂ _inst_9 _inst_9) (StructureGroupoid.{u2} H₂ _inst_9) (StructureGroupoid.hasMem.{u2} H₂ _inst_9) e G₂) -> (ChartedSpace.LiftPropOn.{u1, u2, u1, u2} H₁ H₂ H₁ H₂ _inst_8 _inst_9 _inst_11 _inst_8 _inst_9 _inst_11 (StructureGroupoid.IsLocalStructomorphWithinAt.{u1} H₁ _inst_8 G₁) (coeFn.{succ u2, succ u2} (LocalHomeomorph.{u2, u2} H₂ H₂ _inst_9 _inst_9) (fun (_x : LocalHomeomorph.{u2, u2} H₂ H₂ _inst_9 _inst_9) => H₂ -> H₂) (LocalHomeomorph.hasCoeToFun.{u2, u2} H₂ H₂ _inst_9 _inst_9) e) (LocalEquiv.source.{u2, u2} H₂ H₂ (LocalHomeomorph.toLocalEquiv.{u2, u2} H₂ H₂ _inst_9 _inst_9 e)))) -> (HasGroupoid.{u1, u3} H₁ _inst_8 H₃ _inst_10 (ChartedSpace.comp.{u1, u2, u3} H₁ _inst_8 H₂ _inst_9 H₃ _inst_10 _inst_11 _inst_12) G₁)
+but is expected to have type
+ forall {H₁ : Type.{u2}} [_inst_8 : TopologicalSpace.{u2} H₁] {H₂ : Type.{u3}} [_inst_9 : TopologicalSpace.{u3} H₂] {H₃ : Type.{u1}} [_inst_10 : TopologicalSpace.{u1} H₃] [_inst_11 : ChartedSpace.{u2, u3} H₁ _inst_8 H₂ _inst_9] [_inst_12 : ChartedSpace.{u3, u1} H₂ _inst_9 H₃ _inst_10] {G₁ : StructureGroupoid.{u2} H₁ _inst_8} [_inst_13 : HasGroupoid.{u2, u3} H₁ _inst_8 H₂ _inst_9 _inst_11 G₁] [_inst_14 : ClosedUnderRestriction.{u2} H₁ _inst_8 G₁] (G₂ : StructureGroupoid.{u3} H₂ _inst_9) [_inst_15 : HasGroupoid.{u3, u1} H₂ _inst_9 H₃ _inst_10 _inst_12 G₂], (forall (e : LocalHomeomorph.{u3, u3} H₂ H₂ _inst_9 _inst_9), (Membership.mem.{u3, u3} (LocalHomeomorph.{u3, u3} H₂ H₂ _inst_9 _inst_9) (StructureGroupoid.{u3} H₂ _inst_9) (instMembershipLocalHomeomorphStructureGroupoid.{u3} H₂ _inst_9) e G₂) -> (ChartedSpace.LiftPropOn.{u2, u3, u2, u3} H₁ H₂ H₁ H₂ _inst_8 _inst_9 _inst_11 _inst_8 _inst_9 _inst_11 (StructureGroupoid.IsLocalStructomorphWithinAt.{u2} H₁ _inst_8 G₁) (LocalHomeomorph.toFun'.{u3, u3} H₂ H₂ _inst_9 _inst_9 e) (LocalEquiv.source.{u3, u3} H₂ H₂ (LocalHomeomorph.toLocalEquiv.{u3, u3} H₂ H₂ _inst_9 _inst_9 e)))) -> (HasGroupoid.{u2, u1} H₁ _inst_8 H₃ _inst_10 (ChartedSpace.comp.{u2, u3, u1} H₁ _inst_8 H₂ _inst_9 H₃ _inst_10 _inst_11 _inst_12) G₁)
+Case conversion may be inaccurate. Consider using '#align structure_groupoid.has_groupoid.comp StructureGroupoid.HasGroupoid.compₓ'. -/
theorem HasGroupoid.comp
(H : ∀ e ∈ G₂, LiftPropOn (IsLocalStructomorphWithinAt G₁) (e : H₂ → H₂) e.source) :
@HasGroupoid H₁ _ H₃ _ (ChartedSpace.comp H₁ H₂ H₃) G₁ :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce7e9d53d4bbc38065db3b595cd5bd73c323bc1d
@@ -383,7 +383,7 @@ theorem liftPropOn_indep_chart [HasGroupoid M G] [HasGroupoid M' G'] (he : e ∈
(hf : f ∈ G'.maximalAtlas M') (h : LiftPropOn P g s) {y : H}
(hy : y ∈ e.target ∩ e.symm ⁻¹' (s ∩ g ⁻¹' f.source)) : P (f ∘ g ∘ e.symm) (e.symm ⁻¹' s) y :=
by
- convert ((hG.lift_prop_within_at_indep_chart he (e.symm_maps_to hy.1) hf hy.2.2).1 (h _ hy.2.1)).2
+ convert((hG.lift_prop_within_at_indep_chart he (e.symm_maps_to hy.1) hf hy.2.2).1 (h _ hy.2.1)).2
rw [e.right_inv hy.1]
#align structure_groupoid.local_invariant_prop.lift_prop_on_indep_chart StructureGroupoid.LocalInvariantProp.liftPropOn_indep_chart
mathlib commit https://github.com/leanprover-community/mathlib/commit/38f16f960f5006c6c0c2bac7b0aba5273188f4e5
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel, Floris van Doorn
! This file was ported from Lean 3 source module geometry.manifold.local_invariant_properties
-! leanprover-community/mathlib commit 8e57ff9a1d998da9ab3da9256bada5ba51a35a72
+! leanprover-community/mathlib commit be2c24f56783935652cefffb4bfca7e4b25d167e
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -707,6 +707,8 @@ variable {H₁ : Type _} [TopologicalSpace H₁] {H₂ : Type _} [TopologicalSpa
[TopologicalSpace H₃] [ChartedSpace H₁ H₂] [ChartedSpace H₂ H₃] {G₁ : StructureGroupoid H₁}
[HasGroupoid H₂ G₁] [ClosedUnderRestriction G₁] (G₂ : StructureGroupoid H₂) [HasGroupoid H₃ G₂]
+variable (G₂)
+
theorem HasGroupoid.comp
(H : ∀ e ∈ G₂, LiftPropOn (IsLocalStructomorphWithinAt G₁) (e : H₂ → H₂) e.source) :
@HasGroupoid H₁ _ H₃ _ (ChartedSpace.comp H₁ H₂ H₃) G₁ :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/271bf175e6c51b8d31d6c0107b7bb4a967c7277e
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel, Floris van Doorn
! This file was ported from Lean 3 source module geometry.manifold.local_invariant_properties
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
+! leanprover-community/mathlib commit 8e57ff9a1d998da9ab3da9256bada5ba51a35a72
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -575,6 +575,16 @@ theorem liftPropOn_chart_symm [HasGroupoid M G] (hG : G.LocalInvariantProp G Q)
hG.liftPropOn_symm_of_mem_maximalAtlas hQ (chart_mem_maximalAtlas G x)
#align structure_groupoid.local_invariant_prop.lift_prop_on_chart_symm StructureGroupoid.LocalInvariantProp.liftPropOn_chart_symm
+theorem liftPropAt_of_mem_groupoid (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y)
+ {f : LocalHomeomorph H H} (hf : f ∈ G) {x : H} (hx : x ∈ f.source) : LiftPropAt Q f x :=
+ liftPropAt_of_mem_maximalAtlas hG hQ (G.mem_maximalAtlas_of_mem_groupoid hf) hx
+#align structure_groupoid.local_invariant_prop.lift_prop_at_of_mem_groupoid StructureGroupoid.LocalInvariantProp.liftPropAt_of_mem_groupoid
+
+theorem liftPropOn_of_mem_groupoid (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y)
+ {f : LocalHomeomorph H H} (hf : f ∈ G) : LiftPropOn Q f f.source :=
+ liftPropOn_of_mem_maximalAtlas hG hQ (G.mem_maximalAtlas_of_mem_groupoid hf)
+#align structure_groupoid.local_invariant_prop.lift_prop_on_of_mem_groupoid StructureGroupoid.LocalInvariantProp.liftPropOn_of_mem_groupoid
+
theorem liftProp_id (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y) :
LiftProp Q (id : M → M) :=
by
@@ -640,6 +650,59 @@ theorem isLocalStructomorphWithinAt_localInvariantProp [ClosedUnderRestriction G
· simpa only [hex, hef ⟨hx, hex⟩, mfld_simps] using hfx }
#align structure_groupoid.is_local_structomorph_within_at_local_invariant_prop StructureGroupoid.isLocalStructomorphWithinAt_localInvariantProp
+/-- A slight reformulation of `is_local_structomorph_within_at` when `f` is a local homeomorph.
+ This gives us an `e` that is defined on a subset of `f.source`. -/
+theorem LocalHomeomorph.isLocalStructomorphWithinAt_iff {G : StructureGroupoid H}
+ [ClosedUnderRestriction G] (f : LocalHomeomorph H H) {s : Set H} {x : H}
+ (hx : x ∈ f.source ∪ sᶜ) :
+ G.IsLocalStructomorphWithinAt (⇑f) s x ↔
+ x ∈ s →
+ ∃ e : LocalHomeomorph H H,
+ e ∈ G ∧ e.source ⊆ f.source ∧ EqOn f (⇑e) (s ∩ e.source) ∧ x ∈ e.source :=
+ by
+ constructor
+ · intro hf h2x
+ obtain ⟨e, he, hfe, hxe⟩ := hf h2x
+ refine' ⟨e.restr f.source, closed_under_restriction' he f.open_source, _, _, hxe, _⟩
+ · simp_rw [LocalHomeomorph.restr_source]
+ refine' (inter_subset_right _ _).trans interior_subset
+ · intro x' hx'
+ exact hfe ⟨hx'.1, hx'.2.1⟩
+ · rw [f.open_source.interior_eq]
+ exact Or.resolve_right hx (not_not.mpr h2x)
+ · intro hf hx
+ obtain ⟨e, he, h2e, hfe, hxe⟩ := hf hx
+ exact ⟨e, he, hfe, hxe⟩
+#align local_homeomorph.is_local_structomorph_within_at_iff LocalHomeomorph.isLocalStructomorphWithinAt_iff
+
+/-- A slight reformulation of `is_local_structomorph_within_at` when `f` is a local homeomorph and
+ the set we're considering is a superset of `f.source`. -/
+theorem LocalHomeomorph.isLocalStructomorphWithinAt_iff' {G : StructureGroupoid H}
+ [ClosedUnderRestriction G] (f : LocalHomeomorph H H) {s : Set H} {x : H} (hs : f.source ⊆ s)
+ (hx : x ∈ f.source ∪ sᶜ) :
+ G.IsLocalStructomorphWithinAt (⇑f) s x ↔
+ x ∈ s →
+ ∃ e : LocalHomeomorph H H,
+ e ∈ G ∧ e.source ⊆ f.source ∧ EqOn f (⇑e) e.source ∧ x ∈ e.source :=
+ by
+ simp_rw [f.is_local_structomorph_within_at_iff hx]
+ refine' imp_congr_right fun hx => exists_congr fun e => and_congr_right fun he => _
+ refine' and_congr_right fun h2e => _
+ rw [inter_eq_right_iff_subset.mpr (h2e.trans hs)]
+#align local_homeomorph.is_local_structomorph_within_at_iff' LocalHomeomorph.isLocalStructomorphWithinAt_iff'
+
+/-- A slight reformulation of `is_local_structomorph_within_at` when `f` is a local homeomorph and
+ the set we're considering is `f.source`. -/
+theorem LocalHomeomorph.isLocalStructomorphWithinAt_source_iff {G : StructureGroupoid H}
+ [ClosedUnderRestriction G] (f : LocalHomeomorph H H) {x : H} :
+ G.IsLocalStructomorphWithinAt (⇑f) f.source x ↔
+ x ∈ f.source →
+ ∃ e : LocalHomeomorph H H,
+ e ∈ G ∧ e.source ⊆ f.source ∧ EqOn f (⇑e) e.source ∧ x ∈ e.source :=
+ haveI : x ∈ f.source ∪ f.sourceᶜ := by simp_rw [union_compl_self]
+ f.is_local_structomorph_within_at_iff' subset.rfl this
+#align local_homeomorph.is_local_structomorph_within_at_source_iff LocalHomeomorph.isLocalStructomorphWithinAt_source_iff
+
variable {H₁ : Type _} [TopologicalSpace H₁] {H₂ : Type _} [TopologicalSpace H₂] {H₃ : Type _}
[TopologicalSpace H₃] [ChartedSpace H₁ H₂] [ChartedSpace H₂ H₃] {G₁ : StructureGroupoid H₁}
[HasGroupoid H₂ G₁] [ClosedUnderRestriction G₁] (G₂ : StructureGroupoid H₂) [HasGroupoid H₃ G₂]
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
MDifferentiableWithinAt
and MDifferentiableAt
so that they are using LiftProp[Within]At
.ContMDiffWithinAt.cle_arrowCongr
by 25%.ContMDiffWithinAt.cle_arrowCongr
to speed it up by another factor of 4.hasSmoothAddSelf
) is from Lean unfolding way too many definitions to make things definitionally equal. Since LiftPropWithinAt
is now a structure, the old proofs now break, unless you rewrite with chartedSpaceSelf_prod
), causing much less defeq-abuse.MDifferentiableWithinAt.differentiableWithinAt_writtenInExtChartAt
and MDifferentiableAt.differentiableWithinAt_writtenInExtChartAt
have a bit long names. This is to avoid naming clash with the existing MDifferentiableWithinAt.differentiableWithinAt
. I'm open for other suggestions.@@ -161,9 +161,11 @@ this point. (When the property is local and invariant, it will in fact hold usin
`liftPropWithinAt_indep_chart`). We require continuity in the lifted property, as otherwise one
single chart might fail to capture the behavior of the function.
-/
-def LiftPropWithinAt (P : (H → H') → Set H → H → Prop) (f : M → M') (s : Set M) (x : M) : Prop :=
- ContinuousWithinAt f s x ∧
- P (chartAt H' (f x) ∘ f ∘ (chartAt H x).symm) ((chartAt H x).symm ⁻¹' s) (chartAt H x x)
+@[mk_iff liftPropWithinAt_iff']
+structure LiftPropWithinAt (P : (H → H') → Set H → H → Prop) (f : M → M') (s : Set M) (x : M) :
+ Prop where
+ continuousWithinAt : ContinuousWithinAt f s x
+ prop : P (chartAt H' (f x) ∘ f ∘ (chartAt H x).symm) ((chartAt H x).symm ⁻¹' s) (chartAt H x x)
#align charted_space.lift_prop_within_at ChartedSpace.LiftPropWithinAt
/-- Given a property of germs of functions and sets in the model space, then one defines
@@ -183,7 +185,7 @@ def LiftPropAt (P : (H → H') → Set H → H → Prop) (f : M → M') (x : M)
theorem liftPropAt_iff {P : (H → H') → Set H → H → Prop} {f : M → M'} {x : M} :
LiftPropAt P f x ↔
ContinuousAt f x ∧ P (chartAt H' (f x) ∘ f ∘ (chartAt H x).symm) univ (chartAt H x x) := by
- rw [LiftPropAt, LiftPropWithinAt, continuousWithinAt_univ, preimage_univ]
+ rw [LiftPropAt, liftPropWithinAt_iff', continuousWithinAt_univ, preimage_univ]
#align charted_space.lift_prop_at_iff ChartedSpace.liftPropAt_iff
/-- Given a property of germs of functions and sets in the model space, then one defines
@@ -217,17 +219,19 @@ theorem liftPropOn_univ : LiftPropOn P g univ ↔ LiftProp P g := by
#align structure_groupoid.lift_prop_on_univ StructureGroupoid.liftPropOn_univ
theorem liftPropWithinAt_self {f : H → H'} {s : Set H} {x : H} :
- LiftPropWithinAt P f s x ↔ ContinuousWithinAt f s x ∧ P f s x := Iff.rfl
+ LiftPropWithinAt P f s x ↔ ContinuousWithinAt f s x ∧ P f s x :=
+ liftPropWithinAt_iff' ..
#align structure_groupoid.lift_prop_within_at_self StructureGroupoid.liftPropWithinAt_self
theorem liftPropWithinAt_self_source {f : H → M'} {s : Set H} {x : H} :
- LiftPropWithinAt P f s x ↔ ContinuousWithinAt f s x ∧ P (chartAt H' (f x) ∘ f) s x := Iff.rfl
+ LiftPropWithinAt P f s x ↔ ContinuousWithinAt f s x ∧ P (chartAt H' (f x) ∘ f) s x :=
+ liftPropWithinAt_iff' ..
#align structure_groupoid.lift_prop_within_at_self_source StructureGroupoid.liftPropWithinAt_self_source
theorem liftPropWithinAt_self_target {f : M → H'} :
LiftPropWithinAt P f s x ↔ ContinuousWithinAt f s x ∧
P (f ∘ (chartAt H x).symm) ((chartAt H x).symm ⁻¹' s) (chartAt H x x) :=
- Iff.rfl
+ liftPropWithinAt_iff' ..
#align structure_groupoid.lift_prop_within_at_self_target StructureGroupoid.liftPropWithinAt_self_target
namespace LocalInvariantProp
@@ -242,6 +246,7 @@ theorem liftPropWithinAt_iff {f : M → M'} :
P (chartAt H' (f x) ∘ f ∘ (chartAt H x).symm)
((chartAt H x).target ∩ (chartAt H x).symm ⁻¹' (s ∩ f ⁻¹' (chartAt H' (f x)).source))
(chartAt H x x) := by
+ rw [liftPropWithinAt_iff']
refine' and_congr_right fun hf ↦ hG.congr_set _
exact PartialHomeomorph.preimage_eventuallyEq_target_inter_preimage_inter hf
(mem_chart_source H x) (chart_source_mem_nhds H' (f x))
@@ -302,8 +307,10 @@ theorem liftPropWithinAt_indep_chart_aux (he : e ∈ G.maximalAtlas M) (xe : x
theorem liftPropWithinAt_indep_chart [HasGroupoid M G] [HasGroupoid M' G']
(he : e ∈ G.maximalAtlas M) (xe : x ∈ e.source) (hf : f ∈ G'.maximalAtlas M')
(xf : g x ∈ f.source) :
- LiftPropWithinAt P g s x ↔ ContinuousWithinAt g s x ∧ P (f ∘ g ∘ e.symm) (e.symm ⁻¹' s) (e x) :=
- and_congr_right <|
+ LiftPropWithinAt P g s x ↔
+ ContinuousWithinAt g s x ∧ P (f ∘ g ∘ e.symm) (e.symm ⁻¹' s) (e x) := by
+ simp only [liftPropWithinAt_iff']
+ exact and_congr_right <|
hG.liftPropWithinAt_indep_chart_aux (chart_mem_maximalAtlas _ _) (mem_chart_source _ _) he xe
(chart_mem_maximalAtlas _ _) (mem_chart_source _ _) hf xf
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart
@@ -312,7 +319,7 @@ theorem liftPropWithinAt_indep_chart [HasGroupoid M G] [HasGroupoid M' G']
theorem liftPropWithinAt_indep_chart_source [HasGroupoid M G] (he : e ∈ G.maximalAtlas M)
(xe : x ∈ e.source) :
LiftPropWithinAt P g s x ↔ LiftPropWithinAt P (g ∘ e.symm) (e.symm ⁻¹' s) (e x) := by
- rw [liftPropWithinAt_self_source, LiftPropWithinAt,
+ rw [liftPropWithinAt_self_source, liftPropWithinAt_iff',
e.symm.continuousWithinAt_iff_continuousWithinAt_comp_right xe, e.symm_symm]
refine' and_congr Iff.rfl _
rw [Function.comp_apply, e.left_inv xe, ← Function.comp.assoc,
@@ -324,7 +331,7 @@ theorem liftPropWithinAt_indep_chart_source [HasGroupoid M G] (he : e ∈ G.maxi
theorem liftPropWithinAt_indep_chart_target [HasGroupoid M' G'] (hf : f ∈ G'.maximalAtlas M')
(xf : g x ∈ f.source) :
LiftPropWithinAt P g s x ↔ ContinuousWithinAt g s x ∧ LiftPropWithinAt P (f ∘ g) s x := by
- rw [liftPropWithinAt_self_target, LiftPropWithinAt, and_congr_right_iff]
+ rw [liftPropWithinAt_self_target, liftPropWithinAt_iff', and_congr_right_iff]
intro hg
simp_rw [(f.continuousAt xf).comp_continuousWithinAt hg, true_and_iff]
exact hG.liftPropWithinAt_indep_chart_target_aux (mem_chart_source _ _)
@@ -356,7 +363,7 @@ theorem liftPropOn_indep_chart [HasGroupoid M G] [HasGroupoid M' G'] (he : e ∈
theorem liftPropWithinAt_inter' (ht : t ∈ 𝓝[s] x) :
LiftPropWithinAt P g (s ∩ t) x ↔ LiftPropWithinAt P g s x := by
- rw [LiftPropWithinAt, LiftPropWithinAt, continuousWithinAt_inter' ht, hG.congr_set]
+ rw [liftPropWithinAt_iff', liftPropWithinAt_iff', continuousWithinAt_inter' ht, hG.congr_set]
simp_rw [eventuallyEq_set, mem_preimage,
(chartAt _ x).eventually_nhds' (fun x ↦ x ∈ s ∩ t ↔ x ∈ s) (mem_chart_source _ x)]
exact (mem_nhdsWithin_iff_eventuallyEq.mp ht).symm.mem_iff
@@ -441,6 +448,7 @@ theorem liftPropOn_congr_iff (h₁ : ∀ y ∈ s, g' y = g y) : LiftPropOn P g'
theorem liftPropWithinAt_mono_of_mem
(mono_of_mem : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, s ∈ 𝓝[t] x → P f s x → P f t x)
(h : LiftPropWithinAt P g s x) (hst : s ∈ 𝓝[t] x) : LiftPropWithinAt P g t x := by
+ simp only [liftPropWithinAt_iff'] at h ⊢
refine' ⟨h.1.mono_of_mem hst, mono_of_mem _ h.2⟩
simp_rw [← mem_map, (chartAt H x).symm.map_nhdsWithin_preimage_eq (mem_chart_target H x),
(chartAt H x).left_inv (mem_chart_source H x), hst]
@@ -542,6 +550,7 @@ theorem liftProp_id (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y) :
theorem liftPropAt_iff_comp_subtype_val (hG : LocalInvariantProp G G' P) {U : Opens M}
(f : M → M') (x : U) :
LiftPropAt P f x ↔ LiftPropAt P (f ∘ Subtype.val) x := by
+ simp only [LiftPropAt, liftPropWithinAt_iff']
congrm ?_ ∧ ?_
· simp_rw [continuousWithinAt_univ, U.openEmbedding'.continuousAt_iff]
· apply hG.congr_iff
@@ -550,6 +559,7 @@ theorem liftPropAt_iff_comp_subtype_val (hG : LocalInvariantProp G G' P) {U : Op
theorem liftPropAt_iff_comp_inclusion (hG : LocalInvariantProp G G' P) {U V : Opens M} (hUV : U ≤ V)
(f : V → M') (x : U) :
LiftPropAt P f (Set.inclusion hUV x) ↔ LiftPropAt P (f ∘ Set.inclusion hUV : U → M') x := by
+ simp only [LiftPropAt, liftPropWithinAt_iff']
congrm ?_ ∧ ?_
· simp_rw [continuousWithinAt_univ,
(TopologicalSpace.Opens.openEmbedding_of_le hUV).continuousAt_iff]
Empty lines were removed by executing the following Python script twice
import os
import re
# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
for filename in files:
if filename.endswith('.lean'):
file_path = os.path.join(dir_path, filename)
# Open the file and read its contents
with open(file_path, 'r') as file:
content = file.read()
# Use a regular expression to replace sequences of "variable" lines separated by empty lines
# with sequences without empty lines
modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)
# Write the modified content back to the file
with open(file_path, 'w') as file:
file.write(modified_content)
@@ -53,11 +53,8 @@ open Manifold Topology
open Set Filter TopologicalSpace
variable {H M H' M' X : Type*}
-
variable [TopologicalSpace H] [TopologicalSpace M] [ChartedSpace H M]
-
variable [TopologicalSpace H'] [TopologicalSpace M'] [ChartedSpace H' M']
-
variable [TopologicalSpace X]
namespace StructureGroupoid
@@ -78,7 +75,6 @@ structure LocalInvariantProp (P : (H → H') → Set H → H → Prop) : Prop wh
#align structure_groupoid.local_invariant_prop StructureGroupoid.LocalInvariantProp
variable {G G'} {P : (H → H') → Set H → H → Prop} {s t u : Set H} {x : H}
-
variable (hG : G.LocalInvariantProp G' P)
namespace LocalInvariantProp
open Classical
(#11199)
We remove all but one open Classical
s, instead preferring to use open scoped Classical
. The only real side-effect this led to is moving a couple declarations to use Exists.choose
instead of Classical.choose
.
The first few commits are explicitly labelled regex replaces for ease of review.
@@ -47,7 +47,8 @@ in the one for `LiftPropWithinAt`.
noncomputable section
-open Classical Manifold Topology
+open scoped Classical
+open Manifold Topology
open Set Filter TopologicalSpace
refine
s (#10762)
I replaced a few "terminal" refine/refine'
s with exact
.
The strategy was very simple-minded: essentially any refine
whose following line had smaller indentation got replaced by exact
and then I cleaned up the mess.
This PR certainly leaves some further terminal refine
s, but maybe the current change is beneficial.
@@ -649,7 +649,7 @@ theorem _root_.PartialHomeomorph.isLocalStructomorphWithinAt_iff {G : StructureG
obtain ⟨e, he, hfe, hxe⟩ := hf h2x
refine' ⟨e.restr f.source, closedUnderRestriction' he f.open_source, _, _, hxe, _⟩
· simp_rw [PartialHomeomorph.restr_source]
- refine' (inter_subset_right _ _).trans interior_subset
+ exact (inter_subset_right _ _).trans interior_subset
· intro x' hx'
exact hfe ⟨hx'.1, hx'.2.1⟩
· rw [f.open_source.interior_eq]
have
, replace
and suffices
(#10640)
No changes to tactic file, it's just boring fixes throughout the library.
This follows on from #6964.
Co-authored-by: sgouezel <sebastien.gouezel@univ-rennes1.fr> Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
@@ -490,8 +490,8 @@ theorem liftPropOn_of_mem_maximalAtlas [HasGroupoid M G] (hG : G.LocalInvariantP
theorem liftPropAt_symm_of_mem_maximalAtlas [HasGroupoid M G] {x : H}
(hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y) (he : e ∈ maximalAtlas M G)
(hx : x ∈ e.target) : LiftPropAt Q e.symm x := by
- suffices h : Q (e ∘ e.symm) univ x
- · have : e.symm x ∈ e.source := by simp only [hx, mfld_simps]
+ suffices h : Q (e ∘ e.symm) univ x by
+ have : e.symm x ∈ e.source := by simp only [hx, mfld_simps]
rw [LiftPropAt, hG.liftPropWithinAt_indep_chart G.id_mem_maximalAtlas (mem_univ _) he this]
refine' ⟨(e.symm.continuousAt hx).continuousWithinAt, _⟩
simp only [h, mfld_simps]
StructureGroupoid.eq_on_source'
to StructureGroupoid.mem_of_eqOnSource'
(#9802)
Since it refers to PartialEquiv.EqOnSource
, the correct naming scheme should not be snake case eq_on_source
. I also added mem_of_
because that's the target of the lemma, while EqOnSource
is just a hypothesis.
There are no added lemmas or docstrings in this PR. It's all just renaming.
@@ -709,7 +709,7 @@ theorem HasGroupoid.comp
(f.symm ≫ₕ e.symm ≫ₕ e' ≫ₕ f').open_source
refine' ⟨_, hs.inter φ.open_source, _, _⟩
· simp only [hx, hφ_dom, mfld_simps]
- · refine' G₁.eq_on_source (closedUnderRestriction' hφG₁ hs) _
+ · refine' G₁.mem_of_eqOnSource (closedUnderRestriction' hφG₁ hs) _
rw [PartialHomeomorph.restr_source_inter]
refine' PartialHomeomorph.Set.EqOn.restr_eqOn_source (hφ.mono _)
mfld_set_tac }
While at it, switch from refine' to refine (easy cases only) in the lines I'm touching anyway.
@@ -386,7 +386,7 @@ theorem liftPropOn_of_locally_liftPropOn
rcases h x hx with ⟨u, u_open, xu, hu⟩
have := hu x ⟨hx, xu⟩
rwa [hG.liftPropWithinAt_inter] at this
- exact IsOpen.mem_nhds u_open xu
+ exact u_open.mem_nhds xu
#align structure_groupoid.local_invariant_prop.lift_prop_on_of_locally_lift_prop_on StructureGroupoid.LocalInvariantProp.liftPropOn_of_locally_liftPropOn
theorem liftProp_of_locally_liftPropOn (h : ∀ x, ∃ u, IsOpen u ∧ x ∈ u ∧ LiftPropOn P g u) :
@@ -484,7 +484,7 @@ theorem liftPropOn_of_mem_maximalAtlas [HasGroupoid M G] (hG : G.LocalInvariantP
(hQ : ∀ y, Q id univ y) (he : e ∈ maximalAtlas M G) : LiftPropOn Q e e.source := by
intro x hx
apply hG.liftPropWithinAt_of_liftPropAt_of_mem_nhds (hG.liftPropAt_of_mem_maximalAtlas hQ he hx)
- exact IsOpen.mem_nhds e.open_source hx
+ exact e.open_source.mem_nhds hx
#align structure_groupoid.local_invariant_prop.lift_prop_on_of_mem_maximal_atlas StructureGroupoid.LocalInvariantProp.liftPropOn_of_mem_maximalAtlas
theorem liftPropAt_symm_of_mem_maximalAtlas [HasGroupoid M G] {x : H}
@@ -503,7 +503,7 @@ theorem liftPropOn_symm_of_mem_maximalAtlas [HasGroupoid M G] (hG : G.LocalInvar
intro x hx
apply hG.liftPropWithinAt_of_liftPropAt_of_mem_nhds
(hG.liftPropAt_symm_of_mem_maximalAtlas hQ he hx)
- exact IsOpen.mem_nhds e.open_target hx
+ exact e.open_target.mem_nhds hx
#align structure_groupoid.local_invariant_prop.lift_prop_on_symm_of_mem_maximal_atlas StructureGroupoid.LocalInvariantProp.liftPropOn_symm_of_mem_maximalAtlas
theorem liftPropAt_chart [HasGroupoid M G] (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y) :
Set.image2
etc (#9275)
Set.image2
to use ∃ a ∈ s, ∃ b ∈ t, f a b = c
instead of ∃ a b, a ∈ s ∧ b ∈ t ∧ f a b = c
.Set.seq
as Set.image2
. The new definition is equal to the old one but rw [Set.seq]
gives a different result.Filter.map₂
to use ∃ u ∈ f, ∃ v ∈ g, image2 m u v ⊆ s
instead of ∃ u v, u ∈ f ∧ v ∈ g ∧ ...
Set.mem_image2
, Finset.mem_image₂
, Set.mem_mul
, Finset.mem_div
etcThe two reasons to make the change are:
∃ a ∈ s, ∃ b ∈ t, _
is a simp
-normal form, and@@ -693,7 +693,7 @@ theorem HasGroupoid.comp
@HasGroupoid H₁ _ H₃ _ (ChartedSpace.comp H₁ H₂ H₃) G₁ :=
let _ := ChartedSpace.comp H₁ H₂ H₃ -- Porting note: need this to synthesize `ChartedSpace H₁ H₃`
{ compatible := by
- rintro _ _ ⟨e, f, he, hf, rfl⟩ ⟨e', f', he', hf', rfl⟩
+ rintro _ _ ⟨e, he, f, hf, rfl⟩ ⟨e', he', f', hf', rfl⟩
apply G₁.locality
intro x hx
simp only [mfld_simps] at hx
@@ -636,7 +636,7 @@ theorem isLocalStructomorphWithinAt_localInvariantProp [ClosedUnderRestriction G
· simpa only [hex, hef ⟨hx, hex⟩, mfld_simps] using hfx }
#align structure_groupoid.is_local_structomorph_within_at_local_invariant_prop StructureGroupoid.isLocalStructomorphWithinAt_localInvariantProp
-/-- A slight reformulation of `IsLocalStructomorphWithinAt` when `f` is a local homeomorph.
+/-- A slight reformulation of `IsLocalStructomorphWithinAt` when `f` is a partial homeomorph.
This gives us an `e` that is defined on a subset of `f.source`. -/
theorem _root_.PartialHomeomorph.isLocalStructomorphWithinAt_iff {G : StructureGroupoid H}
[ClosedUnderRestriction G] (f : PartialHomeomorph H H) {s : Set H} {x : H}
@@ -659,7 +659,7 @@ theorem _root_.PartialHomeomorph.isLocalStructomorphWithinAt_iff {G : StructureG
exact ⟨e, he, hfe, hxe⟩
#align local_homeomorph.is_local_structomorph_within_at_iff PartialHomeomorph.isLocalStructomorphWithinAt_iff
-/-- A slight reformulation of `IsLocalStructomorphWithinAt` when `f` is a local homeomorph and
+/-- A slight reformulation of `IsLocalStructomorphWithinAt` when `f` is a partial homeomorph and
the set we're considering is a superset of `f.source`. -/
theorem _root_.PartialHomeomorph.isLocalStructomorphWithinAt_iff' {G : StructureGroupoid H}
[ClosedUnderRestriction G] (f : PartialHomeomorph H H) {s : Set H} {x : H} (hs : f.source ⊆ s)
@@ -673,7 +673,7 @@ theorem _root_.PartialHomeomorph.isLocalStructomorphWithinAt_iff' {G : Structure
rw [inter_eq_right.mpr (h2e.trans hs)]
#align local_homeomorph.is_local_structomorph_within_at_iff' PartialHomeomorph.isLocalStructomorphWithinAt_iff'
-/-- A slight reformulation of `IsLocalStructomorphWithinAt` when `f` is a local homeomorph and
+/-- A slight reformulation of `IsLocalStructomorphWithinAt` when `f` is a partial homeomorph and
the set we're considering is `f.source`. -/
theorem _root_.PartialHomeomorph.isLocalStructomorphWithinAt_source_iff {G : StructureGroupoid H}
[ClosedUnderRestriction G] (f : PartialHomeomorph H H) {x : H} :
LocalHomeomorph
evokes a "local homeomorphism": this is not what this means.
Instead, this is a homeomorphism on an open set of the domain (extended to the whole space, by the junk value pattern). Hence, partial homeomorphism is more appropriate, and avoids confusion with IsLocallyHomeomorph
.
A future PR will rename LocalEquiv
to PartialEquiv
.
@@ -69,10 +69,10 @@ variable (G : StructureGroupoid H) (G' : StructureGroupoid H')
to charted spaces admitting these groupoids will inherit the good behavior. -/
structure LocalInvariantProp (P : (H → H') → Set H → H → Prop) : Prop where
is_local : ∀ {s x u} {f : H → H'}, IsOpen u → x ∈ u → (P f s x ↔ P f (s ∩ u) x)
- right_invariance' : ∀ {s x f} {e : LocalHomeomorph H H},
+ right_invariance' : ∀ {s x f} {e : PartialHomeomorph H H},
e ∈ G → x ∈ e.source → P f s x → P (f ∘ e.symm) (e.symm ⁻¹' s) (e x)
congr_of_forall : ∀ {s x} {f g : H → H'}, (∀ y ∈ s, f y = g y) → f x = g x → P f s x → P g s x
- left_invariance' : ∀ {s x f} {e' : LocalHomeomorph H' H'},
+ left_invariance' : ∀ {s x f} {e' : PartialHomeomorph H' H'},
e' ∈ G' → s ⊆ f ⁻¹' e'.source → f x ∈ e'.source → P f s x → P (e' ∘ f) s x
#align structure_groupoid.local_invariant_prop StructureGroupoid.LocalInvariantProp
@@ -121,7 +121,7 @@ theorem congr' {s : Set H} {x : H} {f g : H → H'} (h : f =ᶠ[𝓝 x] g) (hP :
hG.congr h.symm hP
#align structure_groupoid.local_invariant_prop.congr' StructureGroupoid.LocalInvariantProp.congr'
-theorem left_invariance {s : Set H} {x : H} {f : H → H'} {e' : LocalHomeomorph H' H'}
+theorem left_invariance {s : Set H} {x : H} {f : H → H'} {e' : PartialHomeomorph H' H'}
(he' : e' ∈ G') (hfs : ContinuousWithinAt f s x) (hxe' : f x ∈ e'.source) :
P (e' ∘ f) s x ↔ P f s x := by
have h2f := hfs.preimage_mem_nhdsWithin (e'.open_source.mem_nhds hxe')
@@ -139,7 +139,7 @@ theorem left_invariance {s : Set H} {x : H} {f : H → H'} {e' : LocalHomeomorph
exact hG.left_invariance' he' (inter_subset_right _ _) hxe'
#align structure_groupoid.local_invariant_prop.left_invariance StructureGroupoid.LocalInvariantProp.left_invariance
-theorem right_invariance {s : Set H} {x : H} {f : H → H'} {e : LocalHomeomorph H H} (he : e ∈ G)
+theorem right_invariance {s : Set H} {x : H} {f : H → H'} {e : PartialHomeomorph H H} (he : e ∈ G)
(hxe : x ∈ e.source) : P (f ∘ e.symm) (e.symm ⁻¹' s) (e x) ↔ P f s x := by
refine' ⟨fun h ↦ _, hG.right_invariance' he hxe⟩
have := hG.right_invariance' (G.symm he) (e.mapsTo hxe) h
@@ -208,8 +208,8 @@ open ChartedSpace
namespace StructureGroupoid
-variable {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}
+variable {G : StructureGroupoid H} {G' : StructureGroupoid H'} {e e' : PartialHomeomorph M H}
+ {f f' : PartialHomeomorph 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}
theorem liftPropWithinAt_univ : LiftPropWithinAt P g univ x ↔ LiftPropAt P g x := Iff.rfl
@@ -246,8 +246,8 @@ theorem liftPropWithinAt_iff {f : M → M'} :
((chartAt H x).target ∩ (chartAt H x).symm ⁻¹' (s ∩ f ⁻¹' (chartAt H' (f x)).source))
(chartAt H x x) := by
refine' and_congr_right fun hf ↦ hG.congr_set _
- exact LocalHomeomorph.preimage_eventuallyEq_target_inter_preimage_inter hf (mem_chart_source H x)
- (chart_source_mem_nhds H' (f x))
+ exact PartialHomeomorph.preimage_eventuallyEq_target_inter_preimage_inter hf
+ (mem_chart_source H x) (chart_source_mem_nhds H' (f x))
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_iff StructureGroupoid.LocalInvariantProp.liftPropWithinAt_iff
theorem liftPropWithinAt_indep_chart_source_aux (g : M → H') (he : e ∈ G.maximalAtlas M)
@@ -255,13 +255,13 @@ theorem liftPropWithinAt_indep_chart_source_aux (g : M → H') (he : e ∈ G.max
P (g ∘ e.symm) (e.symm ⁻¹' s) (e x) ↔ P (g ∘ e'.symm) (e'.symm ⁻¹' s) (e' x) := by
rw [← hG.right_invariance (compatible_of_mem_maximalAtlas he he')]
swap; · simp only [xe, xe', mfld_simps]
- simp_rw [LocalHomeomorph.trans_apply, e.left_inv xe]
+ simp_rw [PartialHomeomorph.trans_apply, e.left_inv xe]
rw [hG.congr_iff]
· refine' hG.congr_set _
refine' (eventually_of_mem _ fun y (hy : y ∈ e'.symm ⁻¹' e.source) ↦ _).set_eq
· refine' (e'.symm.continuousAt <| e'.mapsTo xe').preimage_mem_nhds (e.open_source.mem_nhds _)
simp_rw [e'.left_inv xe', xe]
- simp_rw [mem_preimage, LocalHomeomorph.coe_trans_symm, LocalHomeomorph.symm_symm,
+ simp_rw [mem_preimage, PartialHomeomorph.coe_trans_symm, PartialHomeomorph.symm_symm,
Function.comp_apply, e.left_inv hy]
· refine' ((e'.eventually_nhds' _ xe').mpr <| e.eventually_left_inverse xe).mono fun y hy ↦ _
simp only [mfld_simps]
@@ -278,7 +278,7 @@ theorem liftPropWithinAt_indep_chart_target_aux2 (g : H → M') {x : H} {s : Set
exact (hgs.eventually <| f.eventually_left_inverse xf).mono fun y ↦ congr_arg f'
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target_aux2 StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target_aux2
-theorem liftPropWithinAt_indep_chart_target_aux {g : X → M'} {e : LocalHomeomorph X H} {x : X}
+theorem liftPropWithinAt_indep_chart_target_aux {g : X → M'} {e : PartialHomeomorph X H} {x : X}
{s : Set X} (xe : x ∈ e.source) (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 ∘ e.symm) (e.symm ⁻¹' s) (e x) ↔ P (f' ∘ g ∘ e.symm) (e.symm ⁻¹' s) (e x) := by
@@ -527,12 +527,12 @@ theorem liftPropOn_chart_symm [HasGroupoid M G] (hG : G.LocalInvariantProp G Q)
#align structure_groupoid.local_invariant_prop.lift_prop_on_chart_symm StructureGroupoid.LocalInvariantProp.liftPropOn_chart_symm
theorem liftPropAt_of_mem_groupoid (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y)
- {f : LocalHomeomorph H H} (hf : f ∈ G) {x : H} (hx : x ∈ f.source) : LiftPropAt Q f x :=
+ {f : PartialHomeomorph H H} (hf : f ∈ G) {x : H} (hx : x ∈ f.source) : LiftPropAt Q f x :=
liftPropAt_of_mem_maximalAtlas hG hQ (G.mem_maximalAtlas_of_mem_groupoid hf) hx
#align structure_groupoid.local_invariant_prop.lift_prop_at_of_mem_groupoid StructureGroupoid.LocalInvariantProp.liftPropAt_of_mem_groupoid
theorem liftPropOn_of_mem_groupoid (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y)
- {f : LocalHomeomorph H H} (hf : f ∈ G) : LiftPropOn Q f f.source :=
+ {f : PartialHomeomorph H H} (hf : f ∈ G) : LiftPropOn Q f f.source :=
liftPropOn_of_mem_maximalAtlas hG hQ (G.mem_maximalAtlas_of_mem_groupoid hf)
#align structure_groupoid.local_invariant_prop.lift_prop_on_of_mem_groupoid StructureGroupoid.LocalInvariantProp.liftPropOn_of_mem_groupoid
@@ -584,13 +584,13 @@ section LocalStructomorph
variable (G)
-open LocalHomeomorph
+open PartialHomeomorph
/-- A function from a model space `H` to itself is a local structomorphism, with respect to a
structure groupoid `G` for `H`, relative to a set `s` in `H`, if for all points `x` in the set, the
function agrees with a `G`-structomorphism on `s` in a neighbourhood of `x`. -/
def IsLocalStructomorphWithinAt (f : H → H) (s : Set H) (x : H) : Prop :=
- x ∈ s → ∃ e : LocalHomeomorph H H, e ∈ G ∧ EqOn f e.toFun (s ∩ e.source) ∧ x ∈ e.source
+ x ∈ s → ∃ e : PartialHomeomorph H H, e ∈ G ∧ EqOn f e.toFun (s ∩ e.source) ∧ x ∈ e.source
#align structure_groupoid.is_local_structomorph_within_at StructureGroupoid.IsLocalStructomorphWithinAt
/-- For a groupoid `G` which is `ClosedUnderRestriction`, being a local structomorphism is a local
@@ -638,17 +638,17 @@ theorem isLocalStructomorphWithinAt_localInvariantProp [ClosedUnderRestriction G
/-- A slight reformulation of `IsLocalStructomorphWithinAt` when `f` is a local homeomorph.
This gives us an `e` that is defined on a subset of `f.source`. -/
-theorem _root_.LocalHomeomorph.isLocalStructomorphWithinAt_iff {G : StructureGroupoid H}
- [ClosedUnderRestriction G] (f : LocalHomeomorph H H) {s : Set H} {x : H}
+theorem _root_.PartialHomeomorph.isLocalStructomorphWithinAt_iff {G : StructureGroupoid H}
+ [ClosedUnderRestriction G] (f : PartialHomeomorph H H) {s : Set H} {x : H}
(hx : x ∈ f.source ∪ sᶜ) :
G.IsLocalStructomorphWithinAt (⇑f) s x ↔
- x ∈ s → ∃ e : LocalHomeomorph H H,
+ x ∈ s → ∃ e : PartialHomeomorph H H,
e ∈ G ∧ e.source ⊆ f.source ∧ EqOn f (⇑e) (s ∩ e.source) ∧ x ∈ e.source := by
constructor
· intro hf h2x
obtain ⟨e, he, hfe, hxe⟩ := hf h2x
refine' ⟨e.restr f.source, closedUnderRestriction' he f.open_source, _, _, hxe, _⟩
- · simp_rw [LocalHomeomorph.restr_source]
+ · simp_rw [PartialHomeomorph.restr_source]
refine' (inter_subset_right _ _).trans interior_subset
· intro x' hx'
exact hfe ⟨hx'.1, hx'.2.1⟩
@@ -657,32 +657,32 @@ theorem _root_.LocalHomeomorph.isLocalStructomorphWithinAt_iff {G : StructureGro
· intro hf hx
obtain ⟨e, he, _, hfe, hxe⟩ := hf hx
exact ⟨e, he, hfe, hxe⟩
-#align local_homeomorph.is_local_structomorph_within_at_iff LocalHomeomorph.isLocalStructomorphWithinAt_iff
+#align local_homeomorph.is_local_structomorph_within_at_iff PartialHomeomorph.isLocalStructomorphWithinAt_iff
/-- A slight reformulation of `IsLocalStructomorphWithinAt` when `f` is a local homeomorph and
the set we're considering is a superset of `f.source`. -/
-theorem _root_.LocalHomeomorph.isLocalStructomorphWithinAt_iff' {G : StructureGroupoid H}
- [ClosedUnderRestriction G] (f : LocalHomeomorph H H) {s : Set H} {x : H} (hs : f.source ⊆ s)
+theorem _root_.PartialHomeomorph.isLocalStructomorphWithinAt_iff' {G : StructureGroupoid H}
+ [ClosedUnderRestriction G] (f : PartialHomeomorph H H) {s : Set H} {x : H} (hs : f.source ⊆ s)
(hx : x ∈ f.source ∪ sᶜ) :
G.IsLocalStructomorphWithinAt (⇑f) s x ↔
- x ∈ s → ∃ e : LocalHomeomorph H H,
+ x ∈ s → ∃ e : PartialHomeomorph H H,
e ∈ G ∧ e.source ⊆ f.source ∧ EqOn f (⇑e) e.source ∧ x ∈ e.source := by
rw [f.isLocalStructomorphWithinAt_iff hx]
refine' imp_congr_right fun _ ↦ exists_congr fun e ↦ and_congr_right fun _ ↦ _
refine' and_congr_right fun h2e ↦ _
rw [inter_eq_right.mpr (h2e.trans hs)]
-#align local_homeomorph.is_local_structomorph_within_at_iff' LocalHomeomorph.isLocalStructomorphWithinAt_iff'
+#align local_homeomorph.is_local_structomorph_within_at_iff' PartialHomeomorph.isLocalStructomorphWithinAt_iff'
/-- A slight reformulation of `IsLocalStructomorphWithinAt` when `f` is a local homeomorph and
the set we're considering is `f.source`. -/
-theorem _root_.LocalHomeomorph.isLocalStructomorphWithinAt_source_iff {G : StructureGroupoid H}
- [ClosedUnderRestriction G] (f : LocalHomeomorph H H) {x : H} :
+theorem _root_.PartialHomeomorph.isLocalStructomorphWithinAt_source_iff {G : StructureGroupoid H}
+ [ClosedUnderRestriction G] (f : PartialHomeomorph H H) {x : H} :
G.IsLocalStructomorphWithinAt (⇑f) f.source x ↔
- x ∈ f.source → ∃ e : LocalHomeomorph H H,
+ x ∈ f.source → ∃ e : PartialHomeomorph H H,
e ∈ G ∧ e.source ⊆ f.source ∧ EqOn f (⇑e) e.source ∧ x ∈ e.source :=
haveI : x ∈ f.source ∪ f.sourceᶜ := by simp_rw [union_compl_self, mem_univ]
f.isLocalStructomorphWithinAt_iff' Subset.rfl this
-#align local_homeomorph.is_local_structomorph_within_at_source_iff LocalHomeomorph.isLocalStructomorphWithinAt_source_iff
+#align local_homeomorph.is_local_structomorph_within_at_source_iff PartialHomeomorph.isLocalStructomorphWithinAt_source_iff
variable {H₁ : Type*} [TopologicalSpace H₁] {H₂ : Type*} [TopologicalSpace H₂] {H₃ : Type*}
[TopologicalSpace H₃] [ChartedSpace H₁ H₂] [ChartedSpace H₂ H₃] {G₁ : StructureGroupoid H₁}
@@ -703,15 +703,15 @@ theorem HasGroupoid.comp
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
- simp_rw [← LocalHomeomorph.coe_trans, LocalHomeomorph.trans_assoc] at hφ
- simp_rw [LocalHomeomorph.trans_symm_eq_symm_trans_symm, LocalHomeomorph.trans_assoc]
+ simp_rw [← PartialHomeomorph.coe_trans, PartialHomeomorph.trans_assoc] at hφ
+ simp_rw [PartialHomeomorph.trans_symm_eq_symm_trans_symm, PartialHomeomorph.trans_assoc]
have hs : IsOpen (f.symm ≫ₕ e.symm ≫ₕ e' ≫ₕ f').source :=
(f.symm ≫ₕ e.symm ≫ₕ e' ≫ₕ f').open_source
refine' ⟨_, hs.inter φ.open_source, _, _⟩
· simp only [hx, hφ_dom, mfld_simps]
· refine' G₁.eq_on_source (closedUnderRestriction' hφG₁ hs) _
- rw [LocalHomeomorph.restr_source_inter]
- refine' LocalHomeomorph.Set.EqOn.restr_eqOn_source (hφ.mono _)
+ rw [PartialHomeomorph.restr_source_inter]
+ refine' PartialHomeomorph.Set.EqOn.restr_eqOn_source (hφ.mono _)
mfld_set_tac }
#align structure_groupoid.has_groupoid.comp StructureGroupoid.HasGroupoid.comp
A stronger version of #8800, the differences are:
assume either IsSigmaCompact U
or SigmaCompactSpace M
;
only need test functions satisfying tsupport g ⊆ U
rather than support g ⊆ U
;
requires LocallyIntegrableOn
U rather than LocallyIntegrable
on the whole space.
Also fills in some missing APIs around the manifold and measure theory libraries.
Co-authored-by: sgouezel <sebastien.gouezel@univ-rennes1.fr> Co-authored-by: Junyan Xu <junyanxu.math@gmail.com>
@@ -542,17 +542,33 @@ theorem liftProp_id (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y) :
exact fun x ↦ hG.congr' ((chartAt H x).eventually_right_inverse <| mem_chart_target H x) (hQ _)
#align structure_groupoid.local_invariant_prop.lift_prop_id StructureGroupoid.LocalInvariantProp.liftProp_id
+theorem liftPropAt_iff_comp_subtype_val (hG : LocalInvariantProp G G' P) {U : Opens M}
+ (f : M → M') (x : U) :
+ LiftPropAt P f x ↔ LiftPropAt P (f ∘ Subtype.val) x := by
+ congrm ?_ ∧ ?_
+ · simp_rw [continuousWithinAt_univ, U.openEmbedding'.continuousAt_iff]
+ · apply hG.congr_iff
+ exact (U.chartAt_subtype_val_symm_eventuallyEq).fun_comp (chartAt H' (f x) ∘ f)
+
theorem liftPropAt_iff_comp_inclusion (hG : LocalInvariantProp G G' P) {U V : Opens M} (hUV : U ≤ V)
(f : V → M') (x : U) :
LiftPropAt P f (Set.inclusion hUV x) ↔ LiftPropAt P (f ∘ Set.inclusion hUV : U → M') x := by
congrm ?_ ∧ ?_
- · simp [continuousWithinAt_univ,
+ · simp_rw [continuousWithinAt_univ,
(TopologicalSpace.Opens.openEmbedding_of_le hUV).continuousAt_iff]
· apply hG.congr_iff
exact (TopologicalSpace.Opens.chartAt_inclusion_symm_eventuallyEq hUV).fun_comp
(chartAt H' (f (Set.inclusion hUV x)) ∘ f)
#align structure_groupoid.local_invariant_prop.lift_prop_at_iff_comp_inclusion StructureGroupoid.LocalInvariantProp.liftPropAt_iff_comp_inclusion
+theorem liftProp_subtype_val {Q : (H → H) → Set H → H → Prop} (hG : LocalInvariantProp G G Q)
+ (hQ : ∀ y, Q id univ y) (U : Opens M) :
+ LiftProp Q (Subtype.val : U → M) := by
+ intro x
+ show LiftPropAt Q (id ∘ Subtype.val) x
+ rw [← hG.liftPropAt_iff_comp_subtype_val]
+ apply hG.liftProp_id hQ
+
theorem liftProp_inclusion {Q : (H → H) → Set H → H → Prop} (hG : LocalInvariantProp G G Q)
(hQ : ∀ y, Q id univ y) {U V : Opens M} (hUV : U ≤ V) :
LiftProp Q (Set.inclusion hUV : U → V) := by
rcases
, convert
and congrm
(#7725)
Replace rcases(
with rcases (
. Same thing for convert(
and congrm(
. No other change.
@@ -353,7 +353,7 @@ theorem liftPropOn_indep_chart [HasGroupoid M G] [HasGroupoid M' G'] (he : e ∈
(hf : f ∈ G'.maximalAtlas M') (h : LiftPropOn P g s) {y : H}
(hy : y ∈ e.target ∩ e.symm ⁻¹' (s ∩ g ⁻¹' f.source)) :
P (f ∘ g ∘ e.symm) (e.symm ⁻¹' s) y := by
- convert((hG.liftPropWithinAt_indep_chart he (e.symm_mapsTo hy.1) hf hy.2.2).1 (h _ hy.2.1)).2
+ convert ((hG.liftPropWithinAt_indep_chart he (e.symm_mapsTo hy.1) hf hy.2.2).1 (h _ hy.2.1)).2
rw [e.right_inv hy.1]
#align structure_groupoid.local_invariant_prop.lift_prop_on_indep_chart StructureGroupoid.LocalInvariantProp.liftPropOn_indep_chart
Set
/Finset
lemmas match lattice lemma names (#7378)
Rename union_eq_left_iff_subset
to union_eq_left
to match sup_eq_left
. Similarly for the right
and inter
versions.
@@ -654,7 +654,7 @@ theorem _root_.LocalHomeomorph.isLocalStructomorphWithinAt_iff' {G : StructureGr
rw [f.isLocalStructomorphWithinAt_iff hx]
refine' imp_congr_right fun _ ↦ exists_congr fun e ↦ and_congr_right fun _ ↦ _
refine' and_congr_right fun h2e ↦ _
- rw [inter_eq_right_iff_subset.mpr (h2e.trans hs)]
+ rw [inter_eq_right.mpr (h2e.trans hs)]
#align local_homeomorph.is_local_structomorph_within_at_iff' LocalHomeomorph.isLocalStructomorphWithinAt_iff'
/-- A slight reformulation of `IsLocalStructomorphWithinAt` when `f` is a local homeomorph and
congr(...)
congruence quotations and port congrm
tactic (#2544)
Adds a term elaborator for congr(...)
"congruence quotations". For example, if hf : f = f'
and hx : x = x'
, then we have congr($hf $x) : f x = f' x'
. This supports the functions having implicit arguments, and it has support for subsingleton instance arguments. So for example, if s t : Set X
are sets with Fintype
instances and h : s = t
then congr(Fintype.card $h) : Fintype.card s = Fintype.card t
works.
Ports the congrm
tactic as a convenient frontend for applying a congruence quotation to the goal. Holes are turned into congruence holes. For example, congrm 1 + ?_
uses congr(1 + $(?_))
. Placeholders (_
) do not turn into congruence holes; that's not to say they have to be identical on the LHS and RHS, but congrm
itself is responsible for finding a congruence lemma for such arguments.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Moritz Doll <moritz.doll@googlemail.com>
@@ -545,7 +545,7 @@ theorem liftProp_id (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y) :
theorem liftPropAt_iff_comp_inclusion (hG : LocalInvariantProp G G' P) {U V : Opens M} (hUV : U ≤ V)
(f : V → M') (x : U) :
LiftPropAt P f (Set.inclusion hUV x) ↔ LiftPropAt P (f ∘ Set.inclusion hUV : U → M') x := by
- change (_ ∧ _) ↔ (_ ∧ _); congr! 1 -- Porting note: was `congrm _ ∧ _`
+ congrm ?_ ∧ ?_
· simp [continuousWithinAt_univ,
(TopologicalSpace.Opens.openEmbedding_of_le hUV).continuousAt_iff]
· apply hG.congr_iff
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -51,7 +51,7 @@ open Classical Manifold Topology
open Set Filter TopologicalSpace
-variable {H M H' M' X : Type _}
+variable {H M H' M' X : Type*}
variable [TopologicalSpace H] [TopologicalSpace M] [ChartedSpace H M]
@@ -668,7 +668,7 @@ theorem _root_.LocalHomeomorph.isLocalStructomorphWithinAt_source_iff {G : Struc
f.isLocalStructomorphWithinAt_iff' Subset.rfl this
#align local_homeomorph.is_local_structomorph_within_at_source_iff LocalHomeomorph.isLocalStructomorphWithinAt_source_iff
-variable {H₁ : Type _} [TopologicalSpace H₁] {H₂ : Type _} [TopologicalSpace H₂] {H₃ : Type _}
+variable {H₁ : Type*} [TopologicalSpace H₁] {H₂ : Type*} [TopologicalSpace H₂] {H₃ : Type*}
[TopologicalSpace H₃] [ChartedSpace H₁ H₂] [ChartedSpace H₂ H₃] {G₁ : StructureGroupoid H₁}
[HasGroupoid H₂ G₁] [ClosedUnderRestriction G₁] (G₂ : StructureGroupoid H₂) [HasGroupoid H₃ G₂]
@@ -2,14 +2,11 @@
Copyright (c) 2020 Sébastien Gouëzel. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel, Floris van Doorn
-
-! This file was ported from Lean 3 source module geometry.manifold.local_invariant_properties
-! leanprover-community/mathlib commit 431589bce478b2229eba14b14a283250428217db
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Geometry.Manifold.ChartedSpace
+#align_import geometry.manifold.local_invariant_properties from "leanprover-community/mathlib"@"431589bce478b2229eba14b14a283250428217db"
+
/-!
# Local properties invariant under a groupoid
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel, Floris van Doorn
! This file was ported from Lean 3 source module geometry.manifold.local_invariant_properties
-! leanprover-community/mathlib commit be2c24f56783935652cefffb4bfca7e4b25d167e
+! leanprover-community/mathlib commit 431589bce478b2229eba14b14a283250428217db
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -52,7 +52,7 @@ noncomputable section
open Classical Manifold Topology
-open Set Filter
+open Set Filter TopologicalSpace
variable {H M H' M' X : Type _}
@@ -545,6 +545,26 @@ theorem liftProp_id (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y) :
exact fun x ↦ hG.congr' ((chartAt H x).eventually_right_inverse <| mem_chart_target H x) (hQ _)
#align structure_groupoid.local_invariant_prop.lift_prop_id StructureGroupoid.LocalInvariantProp.liftProp_id
+theorem liftPropAt_iff_comp_inclusion (hG : LocalInvariantProp G G' P) {U V : Opens M} (hUV : U ≤ V)
+ (f : V → M') (x : U) :
+ LiftPropAt P f (Set.inclusion hUV x) ↔ LiftPropAt P (f ∘ Set.inclusion hUV : U → M') x := by
+ change (_ ∧ _) ↔ (_ ∧ _); congr! 1 -- Porting note: was `congrm _ ∧ _`
+ · simp [continuousWithinAt_univ,
+ (TopologicalSpace.Opens.openEmbedding_of_le hUV).continuousAt_iff]
+ · apply hG.congr_iff
+ exact (TopologicalSpace.Opens.chartAt_inclusion_symm_eventuallyEq hUV).fun_comp
+ (chartAt H' (f (Set.inclusion hUV x)) ∘ f)
+#align structure_groupoid.local_invariant_prop.lift_prop_at_iff_comp_inclusion StructureGroupoid.LocalInvariantProp.liftPropAt_iff_comp_inclusion
+
+theorem liftProp_inclusion {Q : (H → H) → Set H → H → Prop} (hG : LocalInvariantProp G G Q)
+ (hQ : ∀ y, Q id univ y) {U V : Opens M} (hUV : U ≤ V) :
+ LiftProp Q (Set.inclusion hUV : U → V) := by
+ intro x
+ show LiftPropAt Q (id ∘ inclusion hUV) x
+ rw [← hG.liftPropAt_iff_comp_inclusion hUV]
+ apply hG.liftProp_id hQ
+#align structure_groupoid.local_invariant_prop.lift_prop_inclusion StructureGroupoid.LocalInvariantProp.liftProp_inclusion
+
end LocalInvariantProp
section LocalStructomorph
Lean 4 does not support []
fields in classes, so some definitions
like ChartedSpace.atlas
have fewer explicit arguments than they used
to have in Lean 3. This PR adds abbreviations in the root namespace
with explicit arguments.
@@ -169,7 +169,7 @@ single chart might fail to capture the behavior of the function.
-/
def LiftPropWithinAt (P : (H → H') → Set H → H → Prop) (f : M → M') (s : Set M) (x : M) : Prop :=
ContinuousWithinAt f s x ∧
- P (chartAt (f x) ∘ f ∘ (chartAt x).symm) ((chartAt x).symm ⁻¹' s) (chartAt x x)
+ P (chartAt H' (f x) ∘ f ∘ (chartAt H x).symm) ((chartAt H x).symm ⁻¹' s) (chartAt H x x)
#align charted_space.lift_prop_within_at ChartedSpace.LiftPropWithinAt
/-- Given a property of germs of functions and sets in the model space, then one defines
@@ -188,7 +188,7 @@ def LiftPropAt (P : (H → H') → Set H → H → Prop) (f : M → M') (x : M)
theorem liftPropAt_iff {P : (H → H') → Set H → H → Prop} {f : M → M'} {x : M} :
LiftPropAt P f x ↔
- ContinuousAt f x ∧ P (chartAt (f x) ∘ f ∘ (chartAt x).symm) univ (chartAt x x) := by
+ ContinuousAt f x ∧ P (chartAt H' (f x) ∘ f ∘ (chartAt H x).symm) univ (chartAt H x x) := by
rw [LiftPropAt, LiftPropWithinAt, continuousWithinAt_univ, preimage_univ]
#align charted_space.lift_prop_at_iff ChartedSpace.liftPropAt_iff
@@ -201,7 +201,7 @@ def LiftProp (P : (H → H') → Set H → H → Prop) (f : M → M') :=
theorem liftProp_iff {P : (H → H') → Set H → H → Prop} {f : M → M'} :
LiftProp P f ↔
- Continuous f ∧ ∀ x, P (chartAt (f x) ∘ f ∘ (chartAt x).symm) univ (chartAt x x) := by
+ Continuous f ∧ ∀ x, P (chartAt H' (f x) ∘ f ∘ (chartAt H x).symm) univ (chartAt H x x) := by
simp_rw [LiftProp, liftPropAt_iff, forall_and, continuous_iff_continuousAt]
#align charted_space.lift_prop_iff ChartedSpace.liftProp_iff
@@ -227,12 +227,12 @@ theorem liftPropWithinAt_self {f : H → H'} {s : Set H} {x : H} :
#align structure_groupoid.lift_prop_within_at_self StructureGroupoid.liftPropWithinAt_self
theorem liftPropWithinAt_self_source {f : H → M'} {s : Set H} {x : H} :
- LiftPropWithinAt P f s x ↔ ContinuousWithinAt f s x ∧ P (chartAt (f x) ∘ f) s x := Iff.rfl
+ LiftPropWithinAt P f s x ↔ ContinuousWithinAt f s x ∧ P (chartAt H' (f x) ∘ f) s x := Iff.rfl
#align structure_groupoid.lift_prop_within_at_self_source StructureGroupoid.liftPropWithinAt_self_source
theorem liftPropWithinAt_self_target {f : M → H'} :
- LiftPropWithinAt P f s x ↔
- ContinuousWithinAt f s x ∧ P (f ∘ (chartAt x).symm) ((chartAt x).symm ⁻¹' s) (chartAt x x) :=
+ LiftPropWithinAt P f s x ↔ ContinuousWithinAt f s x ∧
+ P (f ∘ (chartAt H x).symm) ((chartAt H x).symm ⁻¹' s) (chartAt H x x) :=
Iff.rfl
#align structure_groupoid.lift_prop_within_at_self_target StructureGroupoid.liftPropWithinAt_self_target
@@ -245,11 +245,11 @@ variable (hG : G.LocalInvariantProp G' P)
theorem liftPropWithinAt_iff {f : M → M'} :
LiftPropWithinAt P f s x ↔
ContinuousWithinAt f s x ∧
- P (chartAt (f x) ∘ f ∘ (chartAt x).symm)
- ((chartAt x).target ∩ (chartAt x).symm ⁻¹' (s ∩ f ⁻¹' (chartAt (H := H') (f x)).source))
- (chartAt x x) := by
+ P (chartAt H' (f x) ∘ f ∘ (chartAt H x).symm)
+ ((chartAt H x).target ∩ (chartAt H x).symm ⁻¹' (s ∩ f ⁻¹' (chartAt H' (f x)).source))
+ (chartAt H x x) := by
refine' and_congr_right fun hf ↦ hG.congr_set _
- exact LocalHomeomorph.preimage_eventuallyEq_target_inter_preimage_inter hf (mem_chart_source x)
+ exact LocalHomeomorph.preimage_eventuallyEq_target_inter_preimage_inter hf (mem_chart_source H x)
(chart_source_mem_nhds H' (f x))
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_iff StructureGroupoid.LocalInvariantProp.liftPropWithinAt_iff
@@ -310,8 +310,8 @@ theorem liftPropWithinAt_indep_chart [HasGroupoid M G] [HasGroupoid M' G']
(xf : g x ∈ f.source) :
LiftPropWithinAt P g s x ↔ ContinuousWithinAt g s x ∧ P (f ∘ g ∘ e.symm) (e.symm ⁻¹' s) (e x) :=
and_congr_right <|
- hG.liftPropWithinAt_indep_chart_aux (chart_mem_maximalAtlas _ _) (mem_chart_source _) he xe
- (chart_mem_maximalAtlas _ _) (mem_chart_source _) hf xf
+ hG.liftPropWithinAt_indep_chart_aux (chart_mem_maximalAtlas _ _) (mem_chart_source _ _) he xe
+ (chart_mem_maximalAtlas _ _) (mem_chart_source _ _) hf xf
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart
/-- A version of `liftPropWithinAt_indep_chart`, only for the source. -/
@@ -322,8 +322,8 @@ theorem liftPropWithinAt_indep_chart_source [HasGroupoid M G] (he : e ∈ G.maxi
e.symm.continuousWithinAt_iff_continuousWithinAt_comp_right xe, e.symm_symm]
refine' and_congr Iff.rfl _
rw [Function.comp_apply, e.left_inv xe, ← Function.comp.assoc,
- hG.liftPropWithinAt_indep_chart_source_aux (chartAt (g x) ∘ g) (chart_mem_maximalAtlas G x)
- (mem_chart_source x) he xe, Function.comp.assoc]
+ hG.liftPropWithinAt_indep_chart_source_aux (chartAt _ (g x) ∘ g) (chart_mem_maximalAtlas G x)
+ (mem_chart_source _ x) he xe, Function.comp.assoc]
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_source StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_source
/-- A version of `liftPropWithinAt_indep_chart`, only for the target. -/
@@ -333,8 +333,8 @@ theorem liftPropWithinAt_indep_chart_target [HasGroupoid M' G'] (hf : f ∈ G'.m
rw [liftPropWithinAt_self_target, LiftPropWithinAt, and_congr_right_iff]
intro hg
simp_rw [(f.continuousAt xf).comp_continuousWithinAt hg, true_and_iff]
- exact hG.liftPropWithinAt_indep_chart_target_aux (mem_chart_source _)
- (chart_mem_maximalAtlas _ _) (mem_chart_source _) hf xf hg
+ exact hG.liftPropWithinAt_indep_chart_target_aux (mem_chart_source _ _)
+ (chart_mem_maximalAtlas _ _) (mem_chart_source _ _) hf xf hg
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_indep_chart_target StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart_target
/-- A version of `liftPropWithinAt_indep_chart`, that uses `LiftPropWithinAt` on both sides. -/
@@ -364,7 +364,7 @@ theorem liftPropWithinAt_inter' (ht : t ∈ 𝓝[s] x) :
LiftPropWithinAt P g (s ∩ t) x ↔ LiftPropWithinAt P g s x := by
rw [LiftPropWithinAt, LiftPropWithinAt, continuousWithinAt_inter' ht, hG.congr_set]
simp_rw [eventuallyEq_set, mem_preimage,
- (chartAt x).eventually_nhds' (fun x ↦ x ∈ s ∩ t ↔ x ∈ s) (mem_chart_source x)]
+ (chartAt _ x).eventually_nhds' (fun x ↦ x ∈ s ∩ t ↔ x ∈ s) (mem_chart_source _ x)]
exact (mem_nhdsWithin_iff_eventuallyEq.mp ht).symm.mem_iff
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_inter' StructureGroupoid.LocalInvariantProp.liftPropWithinAt_inter'
@@ -403,10 +403,10 @@ theorem liftPropWithinAt_congr_of_eventuallyEq (h : LiftPropWithinAt P g s x) (h
(hx : g' x = g x) : LiftPropWithinAt P g' s x := by
refine' ⟨h.1.congr_of_eventuallyEq h₁ hx, _⟩
refine' hG.congr_nhdsWithin' _
- (by simp_rw [Function.comp_apply, (chartAt x).left_inv (mem_chart_source x), hx]) h.2
+ (by simp_rw [Function.comp_apply, (chartAt H x).left_inv (mem_chart_source H x), hx]) h.2
simp_rw [EventuallyEq, Function.comp_apply]
- rw [(chartAt x).eventually_nhdsWithin' (fun y ↦ chartAt (g' x) (g' y) = chartAt (g x) (g y))
- (mem_chart_source x)]
+ rw [(chartAt H x).eventually_nhdsWithin'
+ (fun y ↦ chartAt H' (g' x) (g' y) = chartAt H' (g x) (g y)) (mem_chart_source H x)]
exact h₁.mono fun y hy ↦ by rw [hx, hy]
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_congr_of_eventually_eq StructureGroupoid.LocalInvariantProp.liftPropWithinAt_congr_of_eventuallyEq
@@ -448,8 +448,8 @@ theorem liftPropWithinAt_mono_of_mem
(mono_of_mem : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, s ∈ 𝓝[t] x → P f s x → P f t x)
(h : LiftPropWithinAt P g s x) (hst : s ∈ 𝓝[t] x) : LiftPropWithinAt P g t x := by
refine' ⟨h.1.mono_of_mem hst, mono_of_mem _ h.2⟩
- simp_rw [← mem_map, (chartAt x).symm.map_nhdsWithin_preimage_eq (mem_chart_target H x),
- (chartAt x).left_inv (mem_chart_source x), hst]
+ simp_rw [← mem_map, (chartAt H x).symm.map_nhdsWithin_preimage_eq (mem_chart_target H x),
+ (chartAt H x).left_inv (mem_chart_source H x), hst]
#align structure_groupoid.local_invariant_prop.lift_prop_within_at_mono_of_mem StructureGroupoid.LocalInvariantProp.liftPropWithinAt_mono_of_mem
theorem liftPropWithinAt_mono (mono : ∀ ⦃s x t⦄ ⦃f : H → H'⦄, t ⊆ s → P f s x → P f t x)
@@ -511,7 +511,7 @@ theorem liftPropOn_symm_of_mem_maximalAtlas [HasGroupoid M G] (hG : G.LocalInvar
theorem liftPropAt_chart [HasGroupoid M G] (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y) :
LiftPropAt Q (chartAt (H := H) x) x :=
- hG.liftPropAt_of_mem_maximalAtlas hQ (chart_mem_maximalAtlas G x) (mem_chart_source x)
+ hG.liftPropAt_of_mem_maximalAtlas hQ (chart_mem_maximalAtlas G x) (mem_chart_source H x)
#align structure_groupoid.local_invariant_prop.lift_prop_at_chart StructureGroupoid.LocalInvariantProp.liftPropAt_chart
theorem liftPropOn_chart [HasGroupoid M G] (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y) :
@@ -520,12 +520,12 @@ theorem liftPropOn_chart [HasGroupoid M G] (hG : G.LocalInvariantProp G Q) (hQ :
#align structure_groupoid.local_invariant_prop.lift_prop_on_chart StructureGroupoid.LocalInvariantProp.liftPropOn_chart
theorem liftPropAt_chart_symm [HasGroupoid M G] (hG : G.LocalInvariantProp G Q)
- (hQ : ∀ y, Q id univ y) : LiftPropAt Q (chartAt (H := H) x).symm ((chartAt x) x) :=
+ (hQ : ∀ y, Q id univ y) : LiftPropAt Q (chartAt (H := H) x).symm ((chartAt H x) x) :=
hG.liftPropAt_symm_of_mem_maximalAtlas hQ (chart_mem_maximalAtlas G x) (by simp)
#align structure_groupoid.local_invariant_prop.lift_prop_at_chart_symm StructureGroupoid.LocalInvariantProp.liftPropAt_chart_symm
theorem liftPropOn_chart_symm [HasGroupoid M G] (hG : G.LocalInvariantProp G Q)
- (hQ : ∀ y, Q id univ y) : LiftPropOn Q (chartAt (H := H) x).symm (chartAt x).target :=
+ (hQ : ∀ y, Q id univ y) : LiftPropOn Q (chartAt (H := H) x).symm (chartAt H x).target :=
hG.liftPropOn_symm_of_mem_maximalAtlas hQ (chart_mem_maximalAtlas G x)
#align structure_groupoid.local_invariant_prop.lift_prop_on_chart_symm StructureGroupoid.LocalInvariantProp.liftPropOn_chart_symm
@@ -542,7 +542,7 @@ theorem liftPropOn_of_mem_groupoid (hG : G.LocalInvariantProp G Q) (hQ : ∀ y,
theorem liftProp_id (hG : G.LocalInvariantProp G Q) (hQ : ∀ y, Q id univ y) :
LiftProp Q (id : M → M) := by
simp_rw [liftProp_iff, continuous_id, true_and_iff]
- exact fun x ↦ hG.congr' ((chartAt x).eventually_right_inverse <| mem_chart_target H x) (hQ _)
+ exact fun x ↦ hG.congr' ((chartAt H x).eventually_right_inverse <| mem_chart_target H x) (hQ _)
#align structure_groupoid.local_invariant_prop.lift_prop_id StructureGroupoid.LocalInvariantProp.liftProp_id
end LocalInvariantProp
@@ -574,7 +574,7 @@ theorem isLocalStructomorphWithinAt_localInvariantProp [ClosedUnderRestriction G
· rintro h hx
rcases h ⟨hx, hux⟩ with ⟨e, heG, hef, hex⟩
refine' ⟨e.restr (interior u), _, _, _⟩
- · exact closed_under_restriction' heG isOpen_interior
+ · exact closedUnderRestriction' heG isOpen_interior
· have : s ∩ u ∩ e.source = s ∩ (e.source ∩ u) := by mfld_set_tac
simpa only [this, interior_interior, hu.interior_eq, mfld_simps] using hef
· simp only [*, interior_interior, hu.interior_eq, mfld_simps]
@@ -614,7 +614,7 @@ theorem _root_.LocalHomeomorph.isLocalStructomorphWithinAt_iff {G : StructureGro
constructor
· intro hf h2x
obtain ⟨e, he, hfe, hxe⟩ := hf h2x
- refine' ⟨e.restr f.source, closed_under_restriction' he f.open_source, _, _, hxe, _⟩
+ refine' ⟨e.restr f.source, closedUnderRestriction' he f.open_source, _, _, hxe, _⟩
· simp_rw [LocalHomeomorph.restr_source]
refine' (inter_subset_right _ _).trans interior_subset
· intro x' hx'
@@ -676,7 +676,7 @@ theorem HasGroupoid.comp
(f.symm ≫ₕ e.symm ≫ₕ e' ≫ₕ f').open_source
refine' ⟨_, hs.inter φ.open_source, _, _⟩
· simp only [hx, hφ_dom, mfld_simps]
- · refine' G₁.eq_on_source (closed_under_restriction' hφG₁ hs) _
+ · refine' G₁.eq_on_source (closedUnderRestriction' hφG₁ hs) _
rw [LocalHomeomorph.restr_source_inter]
refine' LocalHomeomorph.Set.EqOn.restr_eqOn_source (hφ.mono _)
mfld_set_tac }
The unported dependencies are