Zulip Chat Archive
Stream: maths
Topic: coordchange as function of base is smooth
Sam Lindauer (Nov 02 2024 at 09:55):
Hey there, in the project I am working on, I need to prove that the unitsection in the tangentbundle of the circle is smooth. I have defined the unitsection as follows:
import Mathlib
open scoped Manifold
notation "โยน" => EuclideanSpace โ (Fin 1)
notation "๐ยน" => Metric.sphere (0 : EuclideanSpace โ (Fin 2)) 1
/- The unit section of the tangent bundle of the circle -/
def unitSection : ๐ยน โ TangentBundle (๐ก 1) (๐ยน) := (โจยท, fun _ โฆ 1โฉ)
In the intuitive sense, this 'is' the product of the identity function and the constant function, which is clearly smooth. I have been able to reduce the proof to a statement on the smoothness of coordchanges between the tangent spaces, but I am not sure how to prove this...
/- Smooth coordchange function -/
lemma coordchange_smooth (x : ๐ยน) :
SmoothAt ๐(โ, โยน) ๐(โ, โยน โL[โ] โยน)
(fun (s : ๐ยน) โฆ
(tangentBundleCore (๐ก 1) (๐ยน)).coordChange
((tangentBundleCore (๐ก 1) (๐ยน)).indexAt s)
((tangentBundleCore (๐ก 1) (๐ยน)).indexAt x) s)
x := by
sorry
All help is much appreciated!
Sam
PS. For insight in how I have deduced the proof to this statement, the reduction is below.
/- unitSection is Smooth section -/
lemma smooth_unit : Smooth (๐ก 1) ((๐ก 1).prod (๐ก 1)) unitSection := by
-- Take arbitrary point `x` and trivialization at `x`
intro x
let e' := (trivializationAt (โยน) (TangentSpace (๐ก 1)) x)
-- Show `unitSection x` is in the source of the trivialization
have h1 : unitSection x โ e'.source := by
refine (Trivialization.mem_source (trivializationAt (โยน) (TangentSpace (๐ก 1)) x)).mpr ?_
exact FiberBundle.mem_baseSet_trivializationAt' (unitSection x).proj
haveI : MemTrivializationAtlas e' := by
exact instMemTrivializationAtlasTrivializationAt x
-- join of two smooth maps `id` and `const`
have h : SmoothAt (๐ก 1) (๐ก 1) (fun s โฆ (e' (unitSection s)).1) x โง
SmoothAt (๐ก 1) (๐ก 1) ((fun s โฆ (e' (unitSection s)).2)) x := by
constructor
ยท -- `id` is smooth
exact smooth_id x
ยท refine ContMDiffAt.clm_apply ?right.hg ?right.hf
ยท -- `coordchange function` is smooth
apply coordchange_smooth
ยท -- `const` is smooth
exact smoothAt_const
-- Finish proof using `h1` and `h`
refine (Trivialization.smoothAt_iff (๐ก 1) h1).mpr ?_
constructor
ยท exact h.left
ยท exact h.right
Patrick Massot (Nov 02 2024 at 12:15):
@Floris van Doorn is our expert in manifold smoothness proofs.
Floris van Doorn (Nov 03 2024 at 10:06):
For proving that something is smooth into the total space, I recommend using docs#Trivialization.contMDiffAt_iff. The fact that the coordinate change of the tangent bundle is smooth is stated in docs#TangentBundle.smoothVectorBundle. Probably those coordinate changes are not exactly the same, but they should be the same within charts.
Hope this helps.
Sam Lindauer (Nov 04 2024 at 09:28):
Thanks for the replies! Will be working on it today.
Sam Lindauer (Nov 05 2024 at 10:59):
@Floris van Doorn I am still having some trouble with finishing this proof. I have used docs#Trivialization.contMDiffAt_iff and can't quite get the two coordinate transformations, the one above and the one received from docs#TangentBundle.smoothVectorBundle, to line up. This is the coordtransformation we get from docs#TangentBundle.smoothVectorBundle:
class SmoothVectorBundle : Prop where
protected smoothOn_coordChangeL :
โ (e e' : Trivialization F (ฯ F E)) [MemTrivializationAtlas e] [MemTrivializationAtlas e'],
SmoothOn IB ๐(๐, F โL[๐] F) (fun b : B => (e.coordChangeL ๐ e' b : F โL[๐] F))
(e.baseSet โฉ e'.baseSet)
which needs me to give two fixed trivializations. Now, the problem I am having is that the coordchange function that I need to prove has one of the charts as a variable in the function itself, see the variable s
in the function coordchange_smooth above. My plan was to essentially shrink down the neighbourhood around x enough (say the baseSet of x using for example docs#ContMDiffAt.congr_of_eventuallyEq) and say that any chosen ((tangentBundleCore (๐ก 1) (๐ยน)).indexAt s)
within this neighbourhood is the same as ((tangentBundleCore (๐ก 1) (๐ยน)).indexAt x)
, but I don't know how to make the claim that these charts are the same in such a neighbourhood....
Last updated: May 02 2025 at 03:31 UTC