Skip to content

[Merged by Bors] - feat: define bases of root pairings#20667

Closed
ocfnash wants to merge 8 commits intomasterfrom
ocfnash/rs_base
Closed

[Merged by Bors] - feat: define bases of root pairings#20667
ocfnash wants to merge 8 commits intomasterfrom
ocfnash/rs_base

Conversation

@ocfnash
Copy link
Copy Markdown
Contributor

@ocfnash ocfnash commented Jan 11, 2025


Open in Gitpod

@ocfnash ocfnash added awaiting-CI This PR does not pass CI yet. This label is automatically removed once it does. t-algebra Algebra (groups, rings, fields, etc) labels Jan 11, 2025
@github-actions
Copy link
Copy Markdown

github-actions bot commented Jan 11, 2025

messageFile.md

@github-actions github-actions bot removed the awaiting-CI This PR does not pass CI yet. This label is automatically removed once it does. label Jan 12, 2025
span_coroot_eq_top := P.span_root_eq_top }

@[simp]
protected lemma _root_.RootSystem.flip_flip (P : RootSystem ι R M N) :
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.

Might be handy to state this with Bijective as well (Involutive is unfortunately not type-correct), or bundle it as flipEquiv

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

IIUC you're suggesting a lemma stating Bijective (RootPairing.flip (ι := ι) (R := R) (M := M) (N := N)) or similar?

I think it's not so likely this will be useful so I'd rather wait and see. No strong feelings though: I can add it if you think I really should.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Similar remarks for my understanding of the other suggestion:

variable (ι R M N) in
def flipEquiv : RootPairing ι R N M ≃ RootPairing ι R M N where
  toFun P := P.flip
  invFun P := P.flip
  left_inv _ := rfl
  right_inv _ := rfl

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.

The application I'm thinking of is one where you'd prefer to argue by flipping all the root pairings, either via Injective or via Surjective.forall. Bijectivity follows trivially from Equiv.bijective, but I think it's still worth stating explicitly to get in the simp normal form.

Maybe this type of argument never comes up, but it's always handy if the construction is already in the library when a future user needs it!

Copy link
Copy Markdown
Contributor Author

@ocfnash ocfnash Jan 16, 2025

Choose a reason for hiding this comment

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

I find it very hard to imagine a situation like the one you describe arising but as a compromise, I've added flipEquiv for both RootPairing and RootSystem.

Comment on lines +15 to +16
For reduced root pairings `RootSystem.Base` is equivalent to the usual definition appearing in the
informal literature. However for non-reduced root pairings, it is more restrictive because it
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.

Does the informal literature include definitions for non-reduced or infinite root systems?
(I've only ever studied the happy path.)

Could you please add some explicit refs to the literature?

Copy link
Copy Markdown
Contributor Author

@ocfnash ocfnash Jan 15, 2025

Choose a reason for hiding this comment

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

I really only know the finite story, and I think the infinite story is tricky, not least because IIUC there isn't an axiomatic account of infinite root systems: people always seem to start with a basis of simple roots and a (generalised) Cartan matrix. I do recall reading some old paper of Kac in which he observes that linear independence is the wrong condition (after Scott pointed this out to me) but if I am to supply a reference for the infinite case here I'd rather use one suggested by @ScottCarnahan

As to the finite case, I am indeed diverging from the informal literature. E.g., both Bourbaki and Serre ("Complex Semisimple Lie Algebras") define the concept of base for non-reduced systems (using different definitions). However I really think what I'm defining here is the "right" object. For a non-reduced (crystallographic) root system (in Bourbaki / Serre) if $\alpha$ belongs to a base and you want the corresponding coroot to form a base of the coroots then it is either $\check{\alpha}$ if $2\alpha$ is not a root or else it is $\check{\alpha}/2$. Also it is only for reduced systems that you get the simply transitive action of the Weyl group on bases (and of course the Weyl group is unchanged if you pass from a non-reduced root system to the reduced system of indivisible roots).

I certainly will understand if you think we shouldn't diverge here but I claim that it is the right call as long as we highlight it sufficiently clearly in the doc string.

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.

Thanks for these clarifications. I think they should be preserved in this file.
Maybe the discussion is too long for the docstring. But please add them (at least the finite case) to the module docstring, and add a pointer to this discussion from the docstring of RootSystem.Base.

I think especially in the finite case, it is important that we justify the divergence from the literature. After all, Bourbaki and Serre are mostly considered "ground truth".
But if Scott has remarks about the infinite case that should also be added to the discussion, I would love to hear those as well. We can add those in a later PR.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I've added these remarks to the module doc string and added a pointer to that from the definition doc string (which I have also shortened).

@jcommelin jcommelin added the awaiting-author A reviewer has asked the author a question or requested changes. label Jan 15, 2025
@ocfnash ocfnash removed the awaiting-author A reviewer has asked the author a question or requested changes. label Jan 15, 2025
@jcommelin
Copy link
Copy Markdown
Member

Thanks 🎉

bors merge

@ghost ghost added the ready-to-merge This PR has been sent to bors. label Jan 17, 2025
mathlib-bors bot pushed a commit that referenced this pull request Jan 17, 2025
@mathlib-bors
Copy link
Copy Markdown
Contributor

mathlib-bors bot commented Jan 17, 2025

Pull request successfully merged into master.

Build succeeded:

@mathlib-bors mathlib-bors bot changed the title feat: define bases of root pairings [Merged by Bors] - feat: define bases of root pairings Jan 17, 2025
@mathlib-bors mathlib-bors bot closed this Jan 17, 2025
@mathlib-bors mathlib-bors bot deleted the ocfnash/rs_base branch January 17, 2025 18:53
Julian added a commit that referenced this pull request Jan 20, 2025
* polynomial-sequences: (149 commits)
  Aha, here's how to get Lean to stop showing S.elems' in the infoview.
  Try satisfying the linter gods again.
  Probably enough initial tidying to send the PR.
  Kill more temporary names.
  Touch more natDegree.
  Does protected satisfy the docstring linter?
  Bit shorter.
  More
  Quiet linters.
  Remove redundant imports.
  Copyright header and more twiddling.
  Rename lemma to 'degree_smul_of_leadingCoeff_rightRegular' and split out
  feat(Polynomial): polynomial sequences are bases for R[X]
  chore(Dynamics/PeriodicPts): don't import `MonoidWithZero` (#20765)
  chore(Associated): split out `Ring` results (#20737)
  feat(AlgebraicGeometry): flat morphisms of schemes (#19790)
  feat(AlgebraicGeometry): scheme-theoretic fibre (#19427)
  chore: split Mathlib.Analysis.Asymptotics.Asymptotics (#20785)
  doc: typo (#20829)
  feat(CategoryTheory): condition for an induced functor between comma categories to be final  (#20139)
  feat(1000.yaml): allow statements of theorems also (#20637)
  feat(Algebra/Homology/Embedding): homology of truncGE' (#19570)
  chore: cleanup many porting notes in Combinatorics (#20823)
  chore: eliminate porting notes about `deriving Fintype` (#20820)
  feat(Algebra/Lie): a Lie algebra is solvable iff it is solvable after faithfully flat base change (#20808)
  feat: define bases of root pairings (#20667)
  feat(Tactic): basic ConcreteCategory support for elementwise (#20811)
  feat(CategoryTheory): define unbundled `ConcreteCategory` class  (#20810)
  chore(CategoryTheory): rename `ConcreteCategory` to `HasForget` (#20809)
  feat: `CommSemiring (NonemptyInterval ℚ≥0)` (#20783)
  chore(yaml_check.py): re-format (#20807)
  feat: elementary estimate for Real.log (#20766)
  feat: definition of linear topologies (#14990)
  feat(RingTheory): flatness over a semiring (#19115)
  feat(Algebra/Homology/Embedding): the canonical truncation truncLE (#19550)
  feat(Algebra/Homology/Embedding): API for the homology of an extension of homological complex (#19203)
  feat(Algebra/Ring): `RingEquiv.piUnique` (#20794)
  feat(RingTheory/LocalRing): add instance `Unique (MaximalSpectrum R)` for a local ring `R` (#20801)
  chore(GroupExtension/Defs): define `Section` and redefine `Splitting` (#20802)
  chore: restore `def` to `adicCompletion` (#20796)
  refactor: rename `UniqueContinuousFunctionalCalculus` to `ContinuousMap.UniqueHom` (#20643)
  feat(Algebra/Homology/Embedding): the morphism from a complex to its `truncGE` truncation (#19544)
  chore(Mathlib/Computability/TuringMachine): split file (#20790)
  feat(Data/Finset/Card): add `InjOn` and `SurjOn` versions of finset cardinality lemmas (#20753)
  feat(Order/WellFoundedSet): add convenience constructors for IsWF and IsPWO for WellFoundedLT types (#20752)
  feat(Set/Finite): a set is finite if its image and fibers are finite (#20751)
  chore: cleanup .gitignore files (#20795)
  feat(Topology/Group/Profinite):  Profinite group is limit of finite group (#16992)
  feat(Combinatorics/SimpleGraph): vertices in cycles (#20602)
  CI: merge `bot_fix_style` actions (#20789)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-to-merge This PR has been sent to bors. t-algebra Algebra (groups, rings, fields, etc)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants