[Merged by Bors] - feat: define bases of root pairings#20667
[Merged by Bors] - feat: define bases of root pairings#20667
Conversation
ocfnash
commented
Jan 11, 2025
|
messageFile.md |
| span_coroot_eq_top := P.span_root_eq_top } | ||
|
|
||
| @[simp] | ||
| protected lemma _root_.RootSystem.flip_flip (P : RootSystem ι R M N) : |
There was a problem hiding this comment.
Might be handy to state this with Bijective as well (Involutive is unfortunately not type-correct), or bundle it as flipEquiv
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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 _ := rflThere was a problem hiding this comment.
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!
There was a problem hiding this comment.
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.
| 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 |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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).
|
Thanks 🎉 bors merge |
|
Pull request successfully merged into master. Build succeeded: |
* 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) ...