Skip to content

feat(OperatorAlgebra): reorganize states, observables, and measurement - #1608

Merged
jstoobysmith merged 3 commits into
leanprover-community:masterfrom
TomOleDiem:agent/pr-observables-states-measurement
Sep 2, 2026
Merged

feat(OperatorAlgebra): reorganize states, observables, and measurement#1608
jstoobysmith merged 3 commits into
leanprover-community:masterfrom
TomOleDiem:agent/pr-observables-states-measurement

Conversation

@TomOleDiem

@TomOleDiem TomOleDiem commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Defined the first notions for Observable & State and how they together produce a probability measure.

  • Observables/Basic.lean, Positive.lean, Effects.lean, Jordan.lean, Lie.lean, Projection.lean
  • States/Basic.lean, Convex.lean, Pure.lean, Statistics.lean, Uncertainty.lean
  • Measurement/SpectralMeasure.lean

With the Discussion David Gross opened I expect some of these notions to be reworked in the future.
I wanted to get the code out there but can also put it into PhyslibAlpha if that is more appropriate.

Splits the monolithic OperatorAlgebra/Basic.lean vocabulary (Observable,
PositiveElement, Effect, POVM, State) out into dedicated files:

- Observables/Basic.lean, Positive.lean, Effects.lean, Jordan.lean, Lie.lean,
  Projection.lean
- States/Basic.lean, Convex.lean, Pure.lean, Statistics.lean, Uncertainty.lean
- Measurement/POVM.lean, Measurement/SpectralMeasure.lean

OperatorAlgebra/Basic.lean keeps only Unitary and Channel, the algebraic
starting point for dynamics.

Fixes a simpNF violation in State.toContinuousLinearMap_one along the way.

Replaces leanprover-community#1590.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UfaHTcti1B3LDEiroauoJe
@github-actions github-actions Bot added the large label Sep 2, 2026
@github-actions

github-actions Bot commented Sep 2, 2026

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.

@github-actions github-actions Bot added the t-quantum-mechanics Quantum mechanics label Sep 2, 2026
Not needed by anything else in this PR.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UfaHTcti1B3LDEiroauoJe
The states/observables/measurement reorganization isn't ready for the
public Physlib surface yet, so relocate the whole
QuantumMechanics/OperatorAlgebra folder under PhyslibAlpha and repoint
Physlib.lean/PhyslibAlpha.lean accordingly. Internal imports within the
folder are updated to the new PhyslibAlpha path.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jv3aja8R6JnqJTvmsjuGxF
@jstoobysmith jstoobysmith added the PhyslibAlpha Pull requests which are for modifications to PhyslibAlpha. label Sep 2, 2026

@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

@jstoobysmith jstoobysmith added the ready-to-merge This PR is approved and will be merged shortly label Sep 2, 2026
@jstoobysmith
jstoobysmith merged commit 119fd70 into leanprover-community:master Sep 2, 2026
7 checks passed
TomOleDiem added a commit to TomOleDiem/physlib that referenced this pull request Sep 2, 2026
… post-leanprover-community#1608 merge

PR leanprover-community#1608 (reorganize states, observables, and measurement) merged into
master first, and had independently moved
Physlib/QuantumMechanics/OperatorAlgebra to
PhyslibAlpha/QuantumMechanics/OperatorAlgebra (with a reorg splitting
Observable/State/Effect/PositiveElement/POVM into their own files).
PR leanprover-community#1607's branch had independently made the same folder move on top
of the pre-reorg layout, producing "added in both" conflicts at the
new PhyslibAlpha paths that git couldn't resolve as a 3-way merge.

Rebuilds this branch on top of current master:
- Basic.lean, HilbertSpace.lean, Observables/{Jordan,Lie}.lean under
  PhyslibAlpha/QuantumMechanics/OperatorAlgebra/ are left as master's
  post-reorg versions (PR leanprover-community#1607 never intended to touch them).
- Dynamics/Automorphism.lean: master's current file plus PR leanprover-community#1607's
  unitary-automorphism-group additions (AutomorphismGroup structure,
  conjugation, the UnitaryOneParameterGroup.toAutomorphism
  construction and its differential/uniqueness characterization),
  with imports updated for the post-leanprover-community#1608 module layout (Observables.Lie
  now lives under PhyslibAlpha).
- Dynamics/Hamiltonian.lean: new file, PR leanprover-community#1607's Hamiltonian dynamics
  content (unitaryEvolution, hamiltonianFlow, equivariance, Heisenberg
  equation, and the classification of Hamiltonians up to conjugation
  and scalar shift), with its Automorphism import updated to
  PhyslibAlpha.
- Physlib/Mathematics/OneParameterSubgroups/Unitary.lean: adds
  commute_generator, hasDerivAt, hasDerivAt_star (unaffected by the
  folder move, applies cleanly on top of master).
- PhyslibAlpha.lean: adds the missing import line for the new
  Dynamics.Hamiltonian module (Dynamics.Automorphism was already
  imported via leanprover-community#1608's merge).
- Physlib.lean: unchanged (already has no OperatorAlgebra imports
  post-leanprover-community#1608).

Verified: `lake build` (full) succeeds with 0 errors, and
scripts/PhyslibAlpha/noAlphaImports.py reports no violations.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jv3aja8R6JnqJTvmsjuGxF
jstoobysmith pushed a commit that referenced this pull request Sep 2, 2026
…1607)

PR #1608 (reorganize states, observables, and measurement) merged into
master first, and had independently moved
Physlib/QuantumMechanics/OperatorAlgebra to
PhyslibAlpha/QuantumMechanics/OperatorAlgebra (with a reorg splitting
Observable/State/Effect/PositiveElement/POVM into their own files).
PR #1607's branch had independently made the same folder move on top
of the pre-reorg layout, producing "added in both" conflicts at the
new PhyslibAlpha paths that git couldn't resolve as a 3-way merge.

Rebuilds this branch on top of current master:
- Basic.lean, HilbertSpace.lean, Observables/{Jordan,Lie}.lean under
  PhyslibAlpha/QuantumMechanics/OperatorAlgebra/ are left as master's
  post-reorg versions (PR #1607 never intended to touch them).
- Dynamics/Automorphism.lean: master's current file plus PR #1607's
  unitary-automorphism-group additions (AutomorphismGroup structure,
  conjugation, the UnitaryOneParameterGroup.toAutomorphism
  construction and its differential/uniqueness characterization),
  with imports updated for the post-#1608 module layout (Observables.Lie
  now lives under PhyslibAlpha).
- Dynamics/Hamiltonian.lean: new file, PR #1607's Hamiltonian dynamics
  content (unitaryEvolution, hamiltonianFlow, equivariance, Heisenberg
  equation, and the classification of Hamiltonians up to conjugation
  and scalar shift), with its Automorphism import updated to
  PhyslibAlpha.
- Physlib/Mathematics/OneParameterSubgroups/Unitary.lean: adds
  commute_generator, hasDerivAt, hasDerivAt_star (unaffected by the
  folder move, applies cleanly on top of master).
- PhyslibAlpha.lean: adds the missing import line for the new
  Dynamics.Hamiltonian module (Dynamics.Automorphism was already
  imported via #1608's merge).
- Physlib.lean: unchanged (already has no OperatorAlgebra imports
  post-#1608).

Verified: `lake build` (full) succeeds with 0 errors, and
scripts/PhyslibAlpha/noAlphaImports.py reports no violations.


Claude-Session: https://claude.ai/code/session_01Jv3aja8R6JnqJTvmsjuGxF

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

large PhyslibAlpha Pull requests which are for modifications to PhyslibAlpha. ready-to-merge This PR is approved and will be merged shortly t-quantum-mechanics Quantum mechanics

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants