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.BasicandGroupTheory.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.Matrixabout what happens when an entry of the Coxeter matrix is zero. - There is now a note in the implementation details of
GroupTheory.Coxeter.Basicabout how we try to state our results in terms of the typeBthat 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:CoxeterMatrixandCoxeterSystem.- Rename
CoxeterGroup.Relations.ofMatrixtoCoxeterMatrix.relation. Also, change its type toB → B → FreeGroup B(fromB × B → FreeGroup B). - Rename
CoxeterGroup.Relations.toSettoCoxeterMatrix.relationsSet. - Rename
Matrix.CoxeterGrouptoCoxeterMatrix.group. - Rename
CoxeterGroup.oftoCoxeterMatrix.simple. - Remove
CoxeterSystem.funLike. RenameCoxeterSystem.funLike.coetoCoxeterSystem.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.ofCoxeterGrouptoCoxeterMatrix.toCoxeterSystem.CoxeterSystem.ofCoxeterGroupis a confusing name because the input to the definition is anCoxeterMatrix, not a Coxeter group. - Rename
CoxeterSystem.ofCoxeterGroup_applytoCoxeterMatrix.toCoxeterSystem_simpleand remove@[simp]. The theorem doesn't have a Coxeter system as input and it does have aCoxeterMatrixas input, so it makes more sense for it to be in theCoxeterMatrixnamespace. - Rename
CoxeterSystem.map_relations_eq_reindex_relationstoCoxeterMatrix.reindex_relationsSetand switch the two sides of the equality. The theorem doesn't mention Coxeter systems anywhere, so it shouldn't be in theCoxeterSystemnamespace. Also, the new name better indicates what is on the left-hand side of the equality. - Rename
CoxeterSystem.equivCoxeterGrouptoCoxeterMatrix.reindexGroupEquivand switch the two sides of the equivalence. The definition doesn't mention Coxeter systems anywhere, so it shouldn't be in theCoxeterSystemnamespace. 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_oftoCoxeterMatrix.reindexGroupEquiv_apply_simple. - Rename
CoxeterSystem.equivCoxeterGroup_symm_apply_ofCoxeterMatrix.reindexGroupEquiv_symm_apply_simple. - Rename
CoxeterSystem.reindex_applytoCoxeterSystem.reindex_simple. - Rename
CoxeterSystem.map_applytoCoxeterSystem.map_simple.
- Rename
- Simplify several of the proofs.