Skip to content

Commit 3a89fb5

Browse files
HessianLie.lean: Helper #3 (chart-inverse mfderivWithin = id) closed,
id.inverse simplification in main theorem Helper #3 (`mfderivWithin_extChartAt_symm_eq_id_at_base`) closed via mfderiv_extChartAt_comp_mfderivWithin_extChartAt_symm + Helper #1. Main theorem: rewrite chain reaches `id (lieBracketWithin (mpullbackWithin V) (mpullbackWithin W) (range I) (phi x))` form. Final step needs: * `id v = v` (trivial) * `mpullbackWithin V (range I) =αΆ  V_loc` on chart-target nbhd within range I, via Helper #3 extended to nbhd + lieBracketWithin congruence
1 parent 38c9994 commit 3a89fb5

1 file changed

Lines changed: 39 additions & 3 deletions

File tree

β€ŽRiemannian/Foundations/HessianLie.leanβ€Ž

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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
218246
For 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

Comments
Β (0)