Skip to content

feat: add Wanted statement for the classification of root systems - #43068

Open
ocfnash wants to merge 2 commits into
leanprover-community:masterfrom
ocfnash:ocfnash/rs_class
Open

feat: add Wanted statement for the classification of root systems#43068
ocfnash wants to merge 2 commits into
leanprover-community:masterfrom
ocfnash:ocfnash/rs_class

Conversation

@ocfnash

@ocfnash ocfnash commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

This is partly motivated by seeing somewhat less ergonomic versions of these results land in Tau Ceti.

Note that since we already have a complete reduction of the classification of Lie algebras to root systems, this would finish both classifications.

These constructions and proofs could probably be provided in a couple of weeks by an expert. I do not have any plans to carry out this work in the near or distant future and one goal of this PR is to invite others to implement this plan.


Open in Gitpod

@github-actions

github-actions Bot commented Aug 23, 2026

Copy link
Copy Markdown

PR summary e1cd5cdfc1

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference

Declarations diff (regex)

+ Base.HasCM

You can run this locally as follows
## from your `mathlib4` directory:
git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci

## summary with just the declaration names:
../mathlib-ci/scripts/pr_summary/declarations_diff.sh <optional_commit>

## more verbose report:
../mathlib-ci/scripts/pr_summary/declarations_diff.sh long <optional_commit>

The doc-module for scripts/pr_summary/declarations_diff.sh in the mathlib-ci repository contains some details about this script.

Declarations diff (Lean)

Lean-aware diff — post-build, computed from the Lean environment (commit e1cd5cd).

  • +0 new declarations
  • −0 removed declarations

No declaration differences.


No changes to strong technical debt.

No changes to weak technical debt.

Current commit e1cd5cdfc1
Reference commit f2916a5466

This script lives in the mathlib-ci repository. To run it locally, from your mathlib4 directory:

git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci
../mathlib-ci/scripts/reporting/technical-debt-metrics.sh pr_summary
  • The relative value is the weighted sum of the differences with weight given by the inverse of the current value of the statistic.
  • The absolute value is the relative value divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).

@ocfnash ocfnash added the t-algebra Algebra (groups, rings, fields, etc) label Aug 23, 2026
@ocfnash
ocfnash requested a review from kbuzzard August 23, 2026 14:43
This is partly motivated by seeing somewhat less ergonomic versions of
these results land in Tau Ceti.

These constructions and proofs could probably be provided in a couple
of weeks by an expert. (NB: I do not have any plans to carry out this
work in the near or distant future). Furthermore since we already
have a complete reduction of the classification of Lie algebras to root
systems, this would finish both classifications.

@faenuccio faenuccio left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks! I left some comments; I was also suggesting at a certain point the creation of a dedicated PR label (like Wanted or something) to indicate the kind of contribution.

public import Mathlib.LinearAlgebra.RootSystem.OfBilinear

/-!
# The classification of root systems.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Could you add a small description for the un-initiated, perhaps with a (precise) reference?


variable
{ι : Type*} [Finite ι]
{K : Type*} [Field K] [CharZero K]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Why not over an arbitrary CommRing R? People can weaken the theorem_wanted if they can't get to the full one immediately, but since the library is crafter to accommodate this it seems a pity. Or am I missing something?

{N : Type*} [AddCommGroup N] [Module K N]
{P : RootPairing ι K M N}

def Base.HasCM {n : Type*} [P.IsCrystallographic] (bs : P.Base) (A : Matrix n n ℤ) :=

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Why not a structure fixing e? I understand that this would not really be unique (because of the permutation), but it would be easier to access for the API, no?


-/

theorem_wanted Base.hasCM_A_or_B_or_C_or_D_or_E_or_F_or_G

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Doesn't this call for a definition of "classical groups", or something? It would probably just be an inductive type with the list of gadgets, but at least this statement would be nicer. Something like

 | A (n : ℕ) → ClassicalGroupOrWhatever
 |...
 | E6 : ClassicalGroupOrWhatever
 |...

does it make sense?

instance_wanted : (❰a❱ K M N n).IsIrreducible
instance_wanted : (❰a❱ K M N n).IsValuedIn ℤ
instance_wanted : (❰a❱ K M N n).IsRootSystem
theorem_wanted a_hasCM_a : ∀ bs : (❰a❱ K M N n).Base, bs.HasCM (CartanMatrix.A n)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actually only the instance_wanted : (❰a❱ K M N n).IsValuedIn ℤ is needed for the theorem, right? It might be worth it to section the file so that if someone feels like embarking on proving it, they don't need to prove reduceness/irreducibility.

@ocfnash ocfnash added the awaiting-author A reviewer has asked the author a question or requested changes. label Aug 25, 2026
{N : Type*} [AddCommGroup N] [Module K N]
{P : RootPairing ι K M N}

def Base.HasCM {n : Type*} [P.IsCrystallographic] (bs : P.Base) (A : Matrix n 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.

Rather annoyingly, an abelian variety "has CM" (aka "has complex multiplication") if its endomorphism ring is large in some precise sense, and this is a standard abbreviation in the area. Can we not face HasCartanMatrix?


-/

theorem_wanted Base.hasCM_A_or_B_or_C_or_D_or_E_or_F_or_G

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.

It occurred to me that the current statement is not ideal for a different reason: this should really be a result about matrices and not use the language of root systems at all. The right statement is:

theorem_wanted Matrix.IsFiniteCartan.exists_A_or_B_or_C_or_D_or_E_or_F_or_G
    {ι : Type*} [Fintype ι] [DecidableEq ι]
    (M : Matrix ι ι ℤ) (hM : M.IsFiniteCartan) (hM' : M.IsIndecomposable) :
    (∃ n e, M.reindex e e = CartanMatrix.A n) ∨
    (∃ n e, M.reindex e e = CartanMatrix.B n) ∨
    (∃ n e, M.reindex e e = CartanMatrix.C n) ∨
    (∃ n e, M.reindex e e = CartanMatrix.D n) ∨
    (∃ e, M.reindex e e = CartanMatrix.E 6) ∨
    (∃ e, M.reindex e e = CartanMatrix.E 7) ∨
    (∃ e, M.reindex e e = CartanMatrix.E 8) ∨
    (∃ e, M.reindex e e = CartanMatrix.F₄) ∨
    (∃ e, M.reindex e e = CartanMatrix.G₂)

This needs #43121 so I'll return to this work once that is (hopefully!) in master.

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. t-algebra Algebra (groups, rings, fields, etc)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants