Commit 2024-04-22 10:39 24e020ad
View on Github →refactor(GroupTheory/Coxeter/Basic): Coxeter groups (#11836)
- Remove the definition
def Matrix.IsCoxeter : Prop
. Replace it with a typeCoxeterMatrix B
, which is the type of all Coxeter matrices indexed byB
. - Simplify the definitions of Coxeter matrices
Aₙ
(n : ℕ
),Bₙ
(n : ℕ
),Dₙ
(n : ℕ
),I₂ₘ
(m : ℕ
),E₆
,E₇
,E₈
,F₄
,G₂
,H₃
, andH₄
. - All definitions involving a matrix (including the definition of a Coxeter group, Coxeter relation, and Coxeter system) now require the matrix to be a Coxeter matrix.
- Update docstrings of
GroupTheory.Coxeter.Basic
andGroupTheory.Coxeter.Matrix
.- The terms "Coxeter matrix", "Coxeter group", and "Coxeter system" are now defined in the header docstring.
- It is now clearer that the rank of a Coxeter system can be infinite.
- There is now a note in the implementation details of
GroupTheory.Coxeter.Matrix
about what happens when an entry of the Coxeter matrix is zero. - There is now a note in the implementation details of
GroupTheory.Coxeter.Basic
about how we try to state our results in terms of the typeB
that indexes the simple reflections, rather than the set $S$ of simple reflections.
- Rename these definitions, structures, and theorems. Previously, there were six namespaces to keep track of:
Matrix
,Matrix.IsCoxeter
,CoxeterMatrix
,CoxeterGroup
,CoxeterGroup.Relations
, andCoxeterSystem
. It was difficult to guess the fully qualified name of many theorems, and the names were not designed for use with field notation. Instead, we put everything into two namespaces:CoxeterMatrix
andCoxeterSystem
.- Rename
CoxeterGroup.Relations.ofMatrix
toCoxeterMatrix.relation
. Also, change its type toB → B → FreeGroup B
(fromB × B → FreeGroup B
). - Rename
CoxeterGroup.Relations.toSet
toCoxeterMatrix.relationsSet
. - Rename
Matrix.CoxeterGroup
toCoxeterMatrix.group
. - Rename
CoxeterGroup.of
toCoxeterMatrix.simple
. - Remove
CoxeterSystem.funLike
. RenameCoxeterSystem.funLike.coe
toCoxeterSystem.simple
, because "simple reflection" (or "simple" for short) is the name used in the literature for this concept, and it is unintuitive to think of a Coxeter system as a function. - Rename
CoxeterSystem.funLike.coe_injective'
andCoxeterSystem.ext'
, which are exactly the same theorem, toCoxeterSystem.simple_determines_coxeterSystem
. (This theorem is forthcoming in #11406.) - Rename
CoxeterSystem.ofCoxeterGroup
toCoxeterMatrix.toCoxeterSystem
.CoxeterSystem.ofCoxeterGroup
is a confusing name because the input to the definition is anCoxeterMatrix
, not a Coxeter group. - Rename
CoxeterSystem.ofCoxeterGroup_apply
toCoxeterMatrix.toCoxeterSystem_simple
and remove@[simp]
. The theorem doesn't have a Coxeter system as input and it does have aCoxeterMatrix
as input, so it makes more sense for it to be in theCoxeterMatrix
namespace. - Rename
CoxeterSystem.map_relations_eq_reindex_relations
toCoxeterMatrix.reindex_relationsSet
and switch the two sides of the equality. The theorem doesn't mention Coxeter systems anywhere, so it shouldn't be in theCoxeterSystem
namespace. Also, the new name better indicates what is on the left-hand side of the equality. - Rename
CoxeterSystem.equivCoxeterGroup
toCoxeterMatrix.reindexGroupEquiv
and switch the two sides of the equivalence. The definition doesn't mention Coxeter systems anywhere, so it shouldn't be in theCoxeterSystem
namespace. Also, the new name conveys that the definition is about the Coxeter group associated to a reindexed matrix, rather than merely conveying that it is about an isomorphism of Coxeter groups. - Rename
CoxeterSystem.equivCoxeterGroup_apply_of
toCoxeterMatrix.reindexGroupEquiv_apply_simple
. - Rename
CoxeterSystem.equivCoxeterGroup_symm_apply_of
CoxeterMatrix.reindexGroupEquiv_symm_apply_simple
. - Rename
CoxeterSystem.reindex_apply
toCoxeterSystem.reindex_simple
. - Rename
CoxeterSystem.map_apply
toCoxeterSystem.map_simple
.
- Rename
- Simplify several of the proofs.