@@ -594,6 +594,23 @@ lemma differenceAux_tensorial (cov cov' : CovariantDerivative I F V) [T2Space M]
594594 rw [cov.addσ, cov'.addσ] <;> try assumption
595595 abel
596596
597+ omit [∀ (x : M), IsTopologicalAddGroup (V x)] [∀ (x : M), ContinuousSMul ℝ (V x)] in
598+ /-- A scalar product `f • s` of a smooth bump function `f` with a section `s` is smooth
599+ when `s` is smooth on some open set `a` such that `tsupport f ⊆ a`.
600+ This is a more global version of `contMDiff_of_tsupport` (which does not apply, as it assumes the
601+ co-domain has a zero: the total space of a vector bundle has none). -/
602+ lemma ContMDiff.of_contMDiffOn_smul_bump_function [T2Space M] [IsManifold I ∞ M]
603+ {s : (x : M) → V x} {a : Set M} (ha : IsOpen a) (hn : n ≤ ∞)
604+ (hs : ContMDiffOn I (I.prod 𝓘(ℝ, F)) n (fun x' ↦ TotalSpace.mk' F x' (s x')) a)
605+ {ψ : SmoothBumpFunction I x} (hψ : tsupport ψ ⊆ a) :
606+ ContMDiff I (I.prod 𝓘(ℝ, F)) n (fun x' ↦ TotalSpace.mk' F x' (ψ x' • s x')) := by
607+ refine contMDiff_of_contMDiffOn_union_of_isOpen ?_ ?_ ?_ ha (t := (tsupport ψ)ᶜ) ?_
608+ · exact contMDiffOn_smul_section hs (ψ.contMDiff.of_le hn).contMDiffOn
609+ · apply (contMDiff_zeroSection _ _).contMDiffOn.congr fun y hy ↦ ?_
610+ simpa [extend, zeroSection] using Or.inl <| image_eq_zero_of_notMem_tsupport hy
611+ · exact Set.compl_subset_iff_union.mp <| Set.compl_subset_compl.mpr hψ
612+ · exact isOpen_compl_iff.mpr <| isClosed_tsupport ψ
613+
597614-- TODO: either change `localFrame` to make sure it is everywhere smooth
598615-- or introduce a cut-off here. First option is probaly better.
599616-- TODO: comment why we chose the second option in the end, and adapt the definition accordingly
@@ -646,16 +663,8 @@ lemma contMDiff_extend [IsManifold I ∞ M] [FiniteDimensional ℝ F] [T2Space M
646663 -- XXX: extract ψ and hψ as helper declarations, perhaps private to prevent API leakage?
647664 let hψ :=
648665 Classical.choose_spec <| (SmoothBumpFunction.nhds_basis_support (I := I) ht).mem_iff.1 ht
649- -- XXX: can a version for a bump function make this result easier to use?
650- refine contMDiff_of_contMDiffOn_union_of_isOpen ?_ ?_ ?_ t.open_baseSet (t := (tsupport ψ)ᶜ) ?_
651- · apply contMDiffOn_smul_section ?_ ψ.contMDiff.contMDiffOn
652- exact contMDiffOn_localExtensionOn F (FiberBundle.mem_baseSet_trivializationAt' x) σ₀
653- · apply (contMDiff_zeroSection _ _).contMDiffOn.congr fun y hy ↦ ?_
654- simpa [extend, zeroSection] using Or.inl <| image_eq_zero_of_notMem_tsupport hy
655- · exact Set.compl_subset_iff_union.mp <| Set.compl_subset_compl.mpr hψ.1
656- · exact isOpen_compl_iff.mpr <| isClosed_tsupport ψ
657-
658- #exit
666+ apply ContMDiff.of_contMDiffOn_smul_bump_function _ t.open_baseSet le_rfl ?_ hψ.1
667+ exact contMDiffOn_localExtensionOn F (FiberBundle.mem_baseSet_trivializationAt' x) σ₀
659668
660669/-- The difference of two covariant derivatives, as a tensorial map -/
661670noncomputable def difference [FiniteDimensional ℝ F] [T2Space M] [FiniteDimensional ℝ E] [IsManifold I 1 M]
@@ -705,8 +714,8 @@ noncomputable def endomorph_of_trivial_aux [FiniteDimensional ℝ E] [FiniteDime
705714 cov (extend 𝓘(ℝ, E) E X (x := x)) (extend 𝓘(ℝ, E) E' y (x := x)) x +
706715 cov (extend 𝓘(ℝ, E) E X (x := x)) (extend 𝓘(ℝ, E) E' y' (x := x)) x := by
707716 apply cov.addσ
708- · exact (contMDiff_extend _ _).mdifferentiableAt (n := 1 ) (hn := by norm_num)
709- · apply (contMDiff_extend _ _).mdifferentiableAt (n := 1 ) (hn := by norm_num)
717+ · exact (contMDiff_extend _ _).mdifferentiableAt (n := ∞ ) (hn := by norm_num)
718+ · apply (contMDiff_extend _ _).mdifferentiableAt (n := ∞ ) (hn := by norm_num)
710719 simp [A, B]
711720 module
712721 map_smul' a v := by
0 commit comments