Skip to content

feat(PhyslibAlpha): Souriau's moment map on a symplectic vector space, cocycle and Noether's theorem - #1680

Merged
jstoobysmith merged 2 commits into
leanprover-community:masterfrom
KevorkianPhilippe:moment-map-1
Sep 23, 2026
Merged

jstoobysmith merged 2 commits into
leanprover-community:masterfrom
KevorkianPhilippe:moment-map-1

Conversation

@KevorkianPhilippe

Copy link
Copy Markdown
Contributor

AI disclosure

This file was generated with Claude (Claude Code: Fable 5.1 for the file, Opus 5.5 for opening
this PR) under my supervision, following AI-POLICY.md and AGENTS.md. I have read every
definition and lemma statement and I vouch that they state what the docstrings say. The statements
were frozen before any proof was written and proved first in a separate development; the proofs
of this file were then written by Claude in Physlib style. The bibliographic reference (Souriau
1970, chapter 11, pp. 104-117, and the equation numbers cited in the docstrings) was checked by me
on the printed pages, not by the AI.

Summary

Adds PhyslibAlpha/ClassicalMechanics/MomentMap.lean, one self-contained file (imports Mathlib
only) on Souriau's moment map in the setting of his example (11.2): a real finite-dimensional
symplectic vector space E on which a real Lie algebra g acts by affine infinitesimally
symplectic vector fields Z_E(x) = A Z x + b Z, with Souriau's printed bracket convention
(11.22 a). It proves (11.7)-(11.9) for the moment, Souriau's cocycle f(Z)(Z') = σ(b Z, b Z')
and its identities, Noether's theorem (11.12) for a Hamiltonian flow on E, and that for the
translations of the plane the cocycle is not a coboundary. No manifold is involved.

Declarations added (namespace ClassicalMechanics)

Section A:

  • IsSymplecticForm: structure, an alternating non-degenerate bilinear form.

Section B (sub-namespace AffineSymplecticAction unless noted):

  • AffineSymplecticAction (structure, in ClassicalMechanics): the action Z_E(x) = A Z x + b Z.
  • coadjoint (in ClassicalMechanics): the coadjoint vector field (11.16), ν ↦ ν ∘ ad(Z).
  • vectorField: Z_E (6.11); moment: μ.Z (x) = -½ σ(A Z x, x) - σ(b Z, x) (11.7);
    cocycle: f(Z)(Z') = σ(b Z, b Z') (11.17 c).
  • sigma_A_left, sigma_A_right, sigma_A_symm: infinitesimal symplecticity in three forms.
  • moment_add, moment_smul: the moment is linear in Z.

Section C:

  • sigma_vectorField_vectorField: (11.17 d), σ(Z_E, Z'_E) = μ[Z, Z'] + f(Z)(Z').
  • cocycle_antisymm (11.30), cocycle_cyclic (11.33), cocycle_lie ((11.22)/(11.24), f is a
    Lie algebra cocycle for the coadjoint representation).
  • sigma_vectorField_vectorField_shift (11.18), equivariant_of_coboundary (11.27),
    cocycle_eq_zero_of_linear (11.21, linear actions have zero cocycle).
  • IsSymplecticGradient (in ClassicalMechanics): the symplectic gradient (9.16) with the sign
    of (11.7).

Section D:

  • sigmaA, sigmaA_apply, sigmaB, sigmaB_apply, hasFDerivAt_quad,
    hasFDerivAt_moment_of_symm, hasFDerivAt_negSigmaVectorField: derivative computations.
  • hasFDerivAt_moment: (11.7), σ(Z_E(x)) = -∇[μ.Z].
  • vectorField_isSymplecticGradient: (11.9).
  • moment_unique: (11.8 a), two moments differ by a constant torsor.
  • fderiv_moment_vectorField: infinitesimal equivariance up to the cocycle (11.17 d).
  • sigma_vectorField_bracket: (11.8 c).

Section E:

  • noether, noether_const: (11.12), μ.Z is conserved along a motion of a Hamiltonian
    invariant under Z_E.

Section F (the plane):

  • instLieRingPlane, instLieAlgebraPlane: ℝ × ℝ as an abelian Lie algebra.
  • planeForm, isSymplecticForm_planeForm: the standard symplectic form of the plane.
  • planeTranslations, planeTranslations_cocycle: the translations, cocycle σ(Z, Z').
  • planeTranslations_not_coboundary: that cocycle is not a coboundary (11.21).

Also: one line in PhyslibAlpha.lean, and the entry Souriau1970 in docs/references.bib.

Reviewer map

  1. The module docstring, then sections A and B (the two structures and the three definitions).
  2. hasFDerivAt_moment and vectorField_isSymplecticGradient (section D): the moment is right.
  3. sigma_vectorField_vectorField and the cocycle identities of section C.
  4. noether (section E) and section F.
  5. The derivative computations of section D (technical).

Checks run

  • lake build -KCI PhyslibAlpha on the branch merged with current master: success, no warning in
    this file.
  • lake exe runPhyslibAlphaLinters, alphaFileImports.py, noAlphaImports.py,
    ./scripts/PhyslibAlpha/alphaPythonLinters.sh, ./scripts/lint-style.sh: pass.
  • #print axioms on every declaration: [propext, Classical.choice, Quot.sound].

🤖 Generated with Claude Code

…d Noether on a symplectic vector space

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

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.

  1. Some automated checks will be run on your PR. You can see the results of these checks at the buttom of your PR page. If any of these checks fail, you will need to fix the issues before your PR can be merged. You can learn more about these here, including how to run them locally, which is sometimes quicker than relying on the GitHub Actions. If you have never had a PR merged before, you may have to wait for a reviewer to manually start these checks (this is for security).

  2. A reviewer will look at your PR and may ask you to make changes. This may happen a couple of days after you submit your PR, so you may need to be patient. But it should not be longer than that - if it is please bring it to the attention of the community on the Zulip. The level of review will depend on where your PR is submitted. If it is submitted to ./Physlib or ./QuantumInfo, the review will be more thorough than if it is submitted to ./PhyslibAlpha. You can find out more about what the review process is looking for in our review guidelines. If a reviewer adds an awaiting-author label to your PR, address the review comments, then please remove that label by adding a comment with -awaiting-author. This helps us keep track of reviews.

  3. The reviewer will either approve your PR, or request more changes (in which case we return to step 2). Once your PR is approved, it will be merged by a maintainer, this should happen shortly after approval, though you may get more comments at this stage.

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.

… of MomentMap

codespell reads "Groupes" as a misspelling of "Groups"; the chapter number and the pages
are enough to locate the reference.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@jstoobysmith jstoobysmith left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved, will merge shortly.

@jstoobysmith jstoobysmith added the ready-to-merge This PR is approved and will be merged shortly label Sep 23, 2026
@jstoobysmith
jstoobysmith merged commit 711f8cd into leanprover-community:master Sep 23, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

large ready-to-merge This PR is approved and will be merged shortly

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants