Skip to content

Commit 4d14161

Browse files
committed
chore: golf the proof in #26875 (#28046)
From the path towards the existence of Riemannian metrics, i.e. towards the Levi-Civita connection.
1 parent 9aacf6e commit 4d14161

1 file changed

Lines changed: 14 additions & 42 deletions

File tree

Mathlib/Geometry/Manifold/PartitionOfUnity.lean

Lines changed: 14 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -570,43 +570,6 @@ theorem exists_isSubordinate_chartAt_source :
570570
apply exists_isSubordinate _ isClosed_univ _ (fun i ↦ (chartAt H _).open_source) (fun x _ ↦ ?_)
571571
exact mem_iUnion_of_mem x (mem_chart_source H x)
572572

573-
/--
574-
Let `ρ` be a smooth partition of unity subordinate to an open cover `U`.
575-
Let `s_loc` be a family of local sections, where each `s_loc i` is $C^n$ smooth on `U i`
576-
(when viewed as a map to the total space of the bundle).
577-
Then the global section `x ↦ ∑ᶠ i, ρ i x • s_loc i x`, when viewed as a map to the total space,
578-
is $C^n$ smooth.
579-
-/
580-
theorem contMDiff_totalSpace_weighted_sum_of_local_sections
581-
{E : Type uE} [NormedAddCommGroup E] [NormedSpace ℝ E]
582-
{H : Type uH} [TopologicalSpace H] (I : ModelWithCorners ℝ E H) {M : Type uM}
583-
[TopologicalSpace M] [ChartedSpace H M]
584-
{F_fiber : Type*} [NormedAddCommGroup F_fiber] [NormedSpace ℝ F_fiber]
585-
(V : M → Type*) [∀ x, NormedAddCommGroup (V x)] [∀ x, Module ℝ (V x)]
586-
[TopologicalSpace (TotalSpace F_fiber V)] [FiberBundle F_fiber V] [VectorBundle ℝ F_fiber V]
587-
{n : ℕ∞} {ι : Type*} (ρ : SmoothPartitionOfUnity ι I M univ) (s_loc : ι → ((x : M) → V x))
588-
(U : ι → Set M) (hU_isOpen : ∀ i, IsOpen (U i)) (hρ_subord : ρ.IsSubordinate U)
589-
(h_smooth_s_loc : ∀ i, ContMDiffOn I (I.prod 𝓘(ℝ, F_fiber)) n
590-
(fun x ↦ TotalSpace.mk' F_fiber x (s_loc i x)) (U i)) :
591-
ContMDiff I (I.prod 𝓘(ℝ, F_fiber)) n
592-
(fun x ↦ TotalSpace.mk' F_fiber x (∑ᶠ (j : ι), (ρ j x) • (s_loc j x))) := by
593-
intro x₀
594-
apply (Bundle.contMDiffAt_section x₀).mpr
595-
let e₀ := trivializationAt F_fiber V x₀
596-
apply ContMDiffAt.congr_of_eventuallyEq
597-
· apply ρ.contMDiffAt_finsum
598-
· intro j hx₀
599-
have := h_smooth_s_loc j |>.contMDiffAt <| (hU_isOpen j).mem_nhds <| hρ_subord j hx₀
600-
rwa [Bundle.contMDiffAt_section] at this
601-
· have h_base : {x : M | x ∈ e₀.baseSet} ∈ 𝓝 x₀ :=
602-
e₀.open_baseSet.mem_nhds (FiberBundle.mem_baseSet_trivializationAt' x₀)
603-
filter_upwards [ρ.eventually_fintsupport_subset x₀, h_base] with x _ hx_base
604-
have hfin : {i : ι | (ρ i x • s_loc i x) ≠ 0}.Finite := by
605-
refine (ρ.locallyFinite.point_finite x).subset fun i hi_smul_ne_zero => ?_
606-
have : ρ i x ≠ 0 ∧ s_loc i x ≠ 0 := by simpa using hi_smul_ne_zero
607-
exact this.1
608-
simpa using e₀.linearEquivAt ℝ x hx_base |>.toAddMonoidHom.map_finsum hfin
609-
610573
end SmoothPartitionOfUnity
611574

612575
variable [SigmaCompactSpace M] [T2Space M] {t : M → Set F} {n : ℕ∞}
@@ -621,7 +584,7 @@ Then there exists a global $C^n$ smooth section `s : Cₛ^n⟮I_M; F_fiber, V⟯
621584
-/
622585
theorem exists_contMDiffOn_section_forall_mem_convex_of_local
623586
{F_fiber : Type*} [NormedAddCommGroup F_fiber] [NormedSpace ℝ F_fiber]
624-
(V : M → Type*) [∀ x, NormedAddCommGroup (V x)] [∀ x, Module ℝ (V x)]
587+
(V : M → Type*) [∀ x, AddCommGroup (V x)] [∀ x, TopologicalSpace (V x)] [∀ x, Module ℝ (V x)]
625588
[TopologicalSpace (TotalSpace F_fiber V)] [FiberBundle F_fiber V] [VectorBundle ℝ F_fiber V]
626589
(t : ∀ x, Set (V x)) (ht_conv : ∀ x, Convex ℝ (t x))
627590
(Hloc :
@@ -644,11 +607,20 @@ theorem exists_contMDiffOn_section_forall_mem_convex_of_local
644607
-- Define the global section `s` by taking a weighted sum of the local sections.
645608
let s x : V x := ∑ᶠ j, (ρ j x) • s_loc j x
646609
-- Prove that `s`, when viewed as a map to the total space, is smooth.
647-
have s_smooth : ContMDiff I (I.prod 𝓘(ℝ, F_fiber)) n (fun x ↦ TotalSpace.mk' F_fiber x (s x)) :=
648-
ρ.contMDiff_totalSpace_weighted_sum_of_local_sections
649-
I V s_loc U (fun x ↦ isOpen_interior) hρU fun j ↦ (s_smooth j).mono interior_subset
610+
have (j : M) : ContMDiff I (I.prod 𝓘(ℝ, F_fiber)) n
611+
(fun x ↦ TotalSpace.mk' F_fiber x ((ρ j x) • (s_loc j x))) := by
612+
refine ContMDiffOn.smul_section_of_tsupport ?_ isOpen_interior (hρU j)
613+
((s_smooth j).mono interior_subset)
614+
exact ((ρ j).contMDiff).of_le (sup_eq_left.mp rfl) |>.contMDiffOn
615+
have hs : ContMDiff I (I.prod 𝓘(ℝ, F_fiber)) n (fun x ↦ TotalSpace.mk' F_fiber x (s x)) := by
616+
apply ContMDiff.finsum_section_of_locallyFinite ?_ this
617+
-- Future: can grind do this?
618+
apply ρ.locallyFinite.subset fun i x hx ↦ ?_
619+
rw [support]
620+
rw [mem_setOf_eq] at hx ⊢
621+
exact left_ne_zero_of_smul hx
650622
-- Construct the smooth section and prove it lies in the convex sets `t x`.
651-
refine ⟨⟨s, s_smooth⟩, fun x ↦ ?_⟩
623+
refine ⟨⟨s, hs⟩, fun x ↦ ?_⟩
652624
apply (ht_conv x).finsum_mem (ρ.nonneg · x) (ρ.sum_eq_one (mem_univ x))
653625
intro j h_ρjx_ne_zero
654626
have h_x_in_tsupport_ρj : x ∈ tsupport (ρ j) := subset_closure (mem_support.mpr h_ρjx_ne_zero)

0 commit comments

Comments
 (0)