feat(PhyslibAlpha): the mass as a cohomology class of the Galilean Lie algebra (Souriau) - #1684
KevorkianPhilippe wants to merge 4 commits into
Conversation
… of the Galilean Lie algebra
Souriau's chapter 12 (SDS, Dunod 1970, pp. 132-153) at the level of the Lie algebra, for N free
material points in Fin 3 -> R. Adds GalileanAlgebra (omega, beta, gamma, epsilon) with Souriau's
bracket, GalileanTorsor {l, g, p, E} with the pairing (12.122), the 2-form f0 (12.130), and
EvolutionSpace N with the vector fields (12.119), the Lagrange form (12.40) without forces and
the moment (12.135).
Results: the Jacobi identity; (12.129); M f0 is a coboundary of the algebra iff M = 0; (12.124)
as a derivative along lines; (12.121) along the free motions; (12.134) with m = sum of the m_j;
(12.136) at the level of the algebra; (12.141) g = m R - p t and the uniform motion of the centre
of gravity of free points.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thank you for this pull-request (PR). If this is your first PR, welcome to the community! Below is what will happen next. Please read carefully if you are not familiar with the process. You may open other PRs while this one is being reviewed, and can stack PRs on top of each other, so don't let these steps slow you down.
Tip: The easiest way to get have a fast review is to submit a PR that is small and self-contained, and has clear documentation explaining why things are the way they are in your chages. If you have any problems or questions, please reach out to the community on the Zulip. |
…a read-back against the book An independent read-back of GalileanMass.lean against the printed pages found no error in the statements and corrects the docstrings: the bracket of vector fields in (6.12 b) is (2.45), the usual Lie bracket of vector fields; only on the matrices (12.74) is Souriau's bracket the opposite of the usual commutator. Physlib's GalileanGroup has rotations in O(3) while Souriau's group (12.73) has them in SO(3). F_j = 0 alone does not give B_j = 0, which is the choice (12.49). Also: p. 151 works at the level of the group, the algebra coboundary is (11.24) with (11.16), (6.13 b), the presymplectic evolution space is (12.114), two more items in what is not formalised, and fuller references. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Maybe we should think of a good subdirectory for these results? |
|
Agreed. All these files revolve around Souriau's moment map, so I would suggest Drafted with Claude, reviewed and validated by me. |
|
This looks good to me. Feel free to move files in this pull request. |
|
awaiting-author |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…into MomentMap/ As agreed in the review of this PR: MomentMap.lean becomes MomentMap/Basic.lean, MomentMapCohomology.lean becomes MomentMap/Cohomology.lean, and GalileanMass.lean moves to MomentMap/GalileanMass.lean. Only the imports and two docstring references to the module name change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Done (ae21c03): Drafted with Claude, reviewed and validated by me. -awaiting-author |
…ean into MomentMap/ Next to GalileanMass.lean, as agreed in the review of leanprover-community#1684. Only the import line in PhyslibAlpha.lean and two docstring references to module names change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
jstoobysmith
left a comment
There was a problem hiding this comment.
Approved, will merge shortly.
…logy.lean into MomentMap/ Next to GalileanMass.lean, as agreed in the review of leanprover-community#1684. Only the import line in PhyslibAlpha.lean and three docstring references to module names change, with the lines they are in rewrapped. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
AI disclosure
This file was generated with Claude (Claude Code, Opus 5.5) under my supervision, following
AI-POLICY.mdandAGENTS.md. I have read every definition and lemma statement and I vouch thatthey state what the docstrings say. The statements were frozen before any proof was written and
proved first in a separate development, where the proofs came from local models (BFS-Prover-V2,
Qwen3.8-27B) and from Claude; Claude then wrote this file in Physlib style from that development.
A second, independent Claude session then checked every statement and docstring against the
printed pages; it found no error in the statements, and its corrections to the docstrings are the
second commit. The bibliographic references (Souriau 1970, pp. 27, 50, 109, 113-116, 132-133,
139-140, 148, 150-153, and the equation numbers cited in the docstrings) were checked by me on the
printed pages, not by the AI.
Summary
Adds
PhyslibAlpha/ClassicalMechanics/MomentMap/GalileanMass.lean, one self-contained file(imports Mathlib only) on Souriau's chapter 12: the total mass of a system of material points as the
cohomology class of the Galilean group, here at the level of the Lie algebra and for
Nfreematerial points in
Fin 3 → ℝ. It defines the Galilean Lie algebra in Souriau's parametrisation(ω, β, γ, ε)with his bracket, the torsors{l, g, p, E}, the 2-formf₀(Z)(Z') = ⟨β, γ'⟩ - ⟨β', γ⟩, and the evolution space with its vector fields, Lagrange formand moment. It proves (12.134),
σ(Z_V, Z'_V) = μ[Z, Z'] + (Σ m_j) f₀(Z)(Z'), and thatM f₀is a coboundary of the algebra only forM = 0. No manifold is involved.Physlib has
GalileanGroupinPhyslib.SpaceAndTime.GalileanGroup.Basic, whose rotation partranges over O(3), while Souriau's group (12.73) has its rotation in SO(3). Both have the same Lie
algebra, with which this file works in dimension 3; the file links it to neither group (the module
docstring lists what is not formalised). The evolution space is presymplectic (12.114) and its
Lagrange form depends on the point, so the setting of
PhyslibAlpha.ClassicalMechanics.MomentMap.Basic(#1680) is not reused.As agreed in the review, the two merged files on the moment map move into the same subdirectory
PhyslibAlpha/ClassicalMechanics/MomentMap/:MomentMap.leanbecomesMomentMap/Basic.lean(#1680) and
MomentMapCohomology.leanbecomesMomentMap/Cohomology.lean(#1681). Only theirimports and one docstring reference to the module name change (last commit).
Declarations added (namespace
ClassicalMechanics)Section A (sub-namespace
GalileanAlgebra):GalileanAlgebra(structure, inClassicalMechanics), withZeroandAddinstances.bracket: Souriau's bracket (6.12 b), (11.22 a).bracket_antisymm,bracket_jacobi,bracket_boost_translation.Section B:
GalileanTorsor(structure):{l, g, p, E}(12.123);GalileanTorsor.pair: (12.122).Section C (sub-namespace
GalileanAlgebra):cocycle:f₀(12.130);cocycle_antisymm;cocycle_cyclic(12.129);cocycle_boost_translation.smul_cocycle_isCoboundary_iff:M f₀is a coboundary of the algebra iffM = 0;cocycle_not_coboundary.Section D (sub-namespace
EvolutionSpace):EvolutionSpace N(structure, inClassicalMechanics), with aSubinstance.vectorField:Z_V(12.119);linearPart;vectorField_bracket.lagrangeForm: (12.40) with no forces;lagrangeForm_antisymm;lagrangeForm_motion((12.41)-(12.43), the free motion is in the kernel of
σ).Section E (sub-namespace
EvolutionSpace):moment(12.135);line;motion;pair_moment.hasDerivAt_moment: (12.124).moment_motion: (12.121).Section F (sub-namespace
EvolutionSpace):totalMass;centerOfMass.lagrangeForm_vectorField: (12.134) withm = Σ_j m_j.totalMass_cocycle_not_coboundary: (12.136) at the level of the algebra.moment_g,centerOfMass_motion: (12.141).Also: the imports in
PhyslibAlpha.lean. Two private helper lemmas (pair_term_line,hasDerivAt_quadratic) servehasDerivAt_moment.Reviewer map
bracket,GalileanTorsor.pair,cocycle,vectorField,lagrangeForm,moment.lagrangeForm_vectorFieldandtotalMass_cocycle_not_coboundary(section F), the mainresults.
smul_cocycle_isCoboundary_iffandcocycle_cyclic(section C).hasDerivAt_momentandmoment_motion(section E).vectorField_bracket, (12.141)).Checks run
lake build -KCIandlake build -KCI PhyslibAlphaon the branch, with current master mergedin (toolchain v4.34.1): success, no warning in the three files of
MomentMap/.lake exe runPhyslibAlphaLinters,alphaFileImports.py,noAlphaImports.py,./scripts/PhyslibAlpha/alphaPythonLinters.sh,./scripts/lint-style.sh,scripts/api_map_linter.py, codespell: pass.#print axiomson every public lemma:[propext, Classical.choice, Quot.sound].🤖 Generated with Claude Code