Skip to content

feat(CondensedMatter): action of crystal symmetries on dual group - #1975

Open
TomOleDiem wants to merge 1 commit into
leanprover-community:masterfrom
TomOleDiem:feat/crystal-translation-dual
Open

TomOleDiem wants to merge 1 commit into
leanprover-community:masterfrom
TomOleDiem:feat/crystal-translation-dual

Conversation

@TomOleDiem

@TomOleDiem TomOleDiem commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • `TranslationDual`: the characters of the translation group of a crystal (the crystal momenta).
  • The symmetries of a crystal act on them by group automorphisms, via the inverse of their lattice automorphism.
  • Pure translations act trivially.

The identification of the dual of a lattice with a torus, the reciprocal lattice and the Brillouin zone are left for later.

@TomOleDiem TomOleDiem changed the title feat(CondensedMatter): action of crystal symmetries on translation characters feat(CondensedMatter): action of crystal symmetries on dual group Oct 27, 2026
@github-actions github-actions Bot added the t-condensed-matter Condensed matter label Oct 27, 2026
@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Thank you for this pull-request (PR). If this is your first PR, welcome to the community!

While you wait for a review, note that you can review PRs too; reviewing is not restricted to maintainers. Our review guidelines explain what to look for.

Over time, contributions such as reviews, maintenance and documentation are recorded on contributions.physlib.io.

Four main points:

  • Comment -awaiting-author on its own line to remove that label from your PR.
  • Comment blocked-by-PR or -blocked-by-PR on its own line to add or remove that label, respectively.
  • The first review might take several days to arrive. If in doubt message on the Zulip.

For the author: Please read

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 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 changes.

If you have any problems or questions, please reach out to the community on the Zulip.

For reviewers: Summary of your PR

Found differences:
@@ Physlib.CondensedMatter.Crystal.Symmetry.Dual @@
+ module added Physlib.CondensedMatter.Crystal.Symmetry.Dual (+146 -0)
  namespaces Physlib.CondensedMatter.Crystal
+ added abbrev TranslationDual
+ added def dualMap
+ added def pointAction
+ added def symmetryAction
+ added instance (C : Crystal G) :
+ added instance (C : Crystal G) : MulDistribMulAction (Symmetry C) (TranslationDual G)
+ added lemma Symmetry.smul_dual_apply
+ added lemma Symmetry.smul_dual_lattice
+ added lemma Symmetry.translation_smul_dual
+ added lemma mk_smul
+ added lemma translations_le_ker_symmetryAction
@@ Physlib @@
! module modified Physlib (+1 -0)
13 differences

The declarations are found by reading the diff as text, without regard for namespaces, so a declaration whose keyword and name are on different lines is missed, and two declarations of the same name in different namespaces are listed as one. A change to a proof, or to the body of a definition, does not appear. See scripts/alpha/github/pr_summary.lean.

Summary of commit dfde0eb, remade whenever a commit is pushed.

@TomOleDiem
TomOleDiem force-pushed the feat/crystal-translation-dual branch 3 times, most recently from 4655cb8 to c6593e7 Compare October 27, 2026 20:50
…aracters

Define the characters of the translation group of a crystal, let the symmetries act on
them by group automorphisms, and descend the action to the quotient by the translations.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@TomOleDiem
TomOleDiem force-pushed the feat/crystal-translation-dual branch from c6593e7 to dfde0eb Compare October 27, 2026 20:51
@TomOleDiem
TomOleDiem marked this pull request as ready for review October 27, 2026 20:52
PontryaginDual (Multiplicative G)

/-- Precompose `χ` with the lattice automorphism `A`. -/
noncomputable def dualMap (A : G ≃+ G) (χ : TranslationDual G) : TranslationDual G :=

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.

Symmetry namespace?

A wave moving through a crystal picks up a phase whenever it is shifted by a lattice vector.
For a Bloch wave, these phases encode its crystal momentum. Since momenta differing by a
reciprocal lattice vector produce the same phases, crystal momentum naturally lives in the
dual of the translation lattice: the Brillouin zone.

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.

Would it be more physical to call TranslationDual, BrilloinZone

/-! ## C. Action modulo translations -/

/-- The symmetry action as a homomorphism to automorphisms of the character group. -/
noncomputable def symmetryAction (C : Crystal G) :

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.

Namespace or name could be more descriptive

@jstoobysmith jstoobysmith added the awaiting-author A reviewer has asked the author a question or requested changes label Oct 29, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting-author A reviewer has asked the author a question or requested changes medium t-condensed-matter Condensed matter

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants