@@ -213,6 +213,34 @@ theorem mfderiv_extChartAt_eq_id_eventually
213213 exact (tangentBundleCore I M).coordChange_self (achart H x) y
214214 (by simpa [tangentBundleCore_baseSet] using hy_src) v
215215
216+ /-! ### Helper #3: chart-inverse mfderivWithin = id (eventually)
217+
218+ Analog of Helper #1 for the inverse chart. From Mathlib's chart-comp identity
219+ `mfderiv (extChartAt I x) βL mfderivWithin (extChartAt I x).symm = id` plus
220+ Helper #1, we get the inverse chart's mfderivWithin is identity in a
221+ chart-target nbhd within `range I`. -/
222+
223+ omit [IsLocallyConstantChartedSpace H M] in
224+ /-- **Chart-inverse mfderivWithin at chart-target-nbhd is identity.** -/
225+ theorem mfderivWithin_extChartAt_symm_eq_id_at_base
226+ [IsManifold I 1 M] [IsLocallyConstantChartedSpace H M] (x : M) :
227+ mfderivWithin π(β, E_M) I (extChartAt I x).symm (Set.range I) (extChartAt I x x)
228+ = ContinuousLinearMap.id β E_M := by
229+ -- Mathlib's `mfderiv_extChartAt_comp_mfderivWithin_extChartAt_symm`:
230+ -- mfderiv (extChartAt I x) (phi.symm (phi x)) βL mfderivWithin (extChartAt I x).symm (range I) (phi x) = id
231+ -- phi.symm (phi x) = x, so first factor = mfderiv (extChartAt I x) x = id (Helper #1).
232+ -- Hence id βL mfderivWithin (extChartAt I x).symm (range I) (phi x) = id.
233+ have h_comp := mfderiv_extChartAt_comp_mfderivWithin_extChartAt_symm
234+ (I := I) (M := M) (x := x) (mem_extChartAt_target x)
235+ have h_id : mfderiv I π(β, E_M) (extChartAt I x) x = ContinuousLinearMap.id β E_M :=
236+ (mfderiv_extChartAt_eq_id_eventually (I := I) (M := M) x).self_of_nhds
237+ have h_symm_eq_x : (extChartAt I x).symm (extChartAt I x x) = x :=
238+ (extChartAt I x).left_inv (mem_extChartAt_source x)
239+ rw [h_symm_eq_x] at h_comp
240+ rw [h_id] at h_comp
241+ -- h_comp : id βL mfderivWithin ... = id
242+ simpa using h_comp
243+
216244/-! ### Helper #2: chart-compose `mfderiv` reduces to flat `fderivWithin`
217245
218246For a flat function `g : E_M β F` differentiable within `range I` at the
@@ -598,11 +626,19 @@ theorem mfderiv_iterate_sub_eq_mlieBracket_apply
598626 have h_lieBr_eq : lieBracketWithin β V_loc W_loc s (phi x) = mlieBracket I V W x := by
599627 rw [show mlieBracket I V W x = mlieBracketWithin I V W Set.univ x from rfl,
600628 VectorField.mlieBracketWithin_apply]
601- -- Helper #1 β mfderiv (extChartAt I x) x = id. Its inverse is id.
602629 have h_id : mfderiv I π(β, E_M) (extChartAt I x) x = ContinuousLinearMap.id β E_M :=
603630 (mfderiv_extChartAt_eq_id_eventually (I := I) (M := M) x).self_of_nhds
604- -- mpullbackWithin V (range I) reduces to V β phi.symm = V_loc when chart-inverse
605- -- mfderivWithin = id (analogous Helper #1 for inverse chart). For now, sorry'd.
631+ rw [h_id]
632+ rw [show (ContinuousLinearMap.id β E_M).inverse = ContinuousLinearMap.id β E_M
633+ from ContinuousLinearMap.inverse_id]
634+ simp only [ContinuousLinearMap.coe_id, id_eq, Set.preimage_univ, Set.univ_inter]
635+ -- Goal: lieBracketWithin V_loc W_loc s (phi x)
636+ -- = lieBracketWithin (mpullbackWithin V) (mpullbackWithin W) (range I) (phi x)
637+ -- Need: V_loc =αΆ [ π[s ] (phi x)] mpullbackWithin V (range I) (and similarly W) so
638+ -- lieBracketWithin congruence applies.
639+ -- mpullbackWithin V (range I) e := (mfderivWithin phi.symm s e).inverse (V (phi.symm e))
640+ -- At e = phi x: mfderivWithin = id (Helper #3) β mpullbackWithin V (phi x) = V x = V_loc (phi x).
641+ -- Eventually-equal version of Helper #3 needed for lieBracketWithin congruence.
606642 sorry
607643 rw [h_lieBr_eq]
608644 exact h_helper2_f.symm
0 commit comments