Coxeter Systems #
This file defines Coxeter systems and Coxeter groups.
A Coxeter system is a pair (W, S)
where W
is a group generated by a set of
reflections (involutions) S = {s₁,s₂,...,sₙ}
, subject to relations determined
by a Coxeter matrix M = (mᵢⱼ)
. The Coxeter matrix is a symmetric matrix with
entries mᵢⱼ
representing the order of the product sᵢsⱼ
for i ≠ j
and mᵢᵢ = 1
.
When (W, S)
is a Coxeter system, one also says, by abuse of language, that W
is a
Coxeter group. A Coxeter group W
is determined by the presentation
W = ⟨s₁,s₂,...,sₙ | ∀ i j, (sᵢsⱼ)^mᵢⱼ = 1⟩
, where 1
is the identity element of W
.
The finite Coxeter groups are classified (TODO) as the four infinite families:
Aₙ, Bₙ, Dₙ, I₂ₘ
And the exceptional systems:
E₆, E₇, E₈, F₄, G₂, H₃, H₄
Implementation details #
In this file a Coxeter system, designated as CoxeterSystem M W
, is implemented as a
structure which effectively records the isomorphism between a group W
and the corresponding
group presentation derived from a Coxeter matrix M
. From another perspective, it serves as
a set of generators for W
, tailored to the underlying type of M
, while ensuring compliance
with the relations specified by the Coxeter matrix M
.
A type class IsCoxeterGroup
is introduced, for groups that are isomorphic to a group
presentation corresponding to a Coxeter matrix which is registered in a Coxeter system.
Main definitions #
Matrix.IsCoxeter
: A matrixIsCoxeter
if it is a symmetric matrix with diagonal entries equal to one and off-diagonal entries distinct from one.Matrix.CoxeterGroup
: The group presentation corresponding to a Coxeter matrix.CoxeterSystem
: A structure recording the isomorphism between a groupW
and the group presentation corresponding to a Coxeter matrix, i.e.Matrix.CoxeterGroup M
.equivCoxeterGroup
: Coxeter groups of isomorphic types are isomorphic.IsCoxeterGroup
: A group is a Coxeter group if it is registered in a Coxeter system.
References #
-
N. Bourbaki, Lie Groups and Lie Algebras, Chapters 4--6 chapter IV pages 4--5, 13--15
TODO #
- The canonical map from the type to the Coxeter group
W
is an injection. - A group
W
registered in a Coxeter system is a Coxeter group. - A Coxeter group is an instance of
IsCoxeterGroup
.
Tags #
coxeter system, coxeter group
A matrix IsCoxeter
if it is a symmetric matrix with diagonal entries equal to one
and off-diagonal entries distinct from one.
- symmetric : Matrix.IsSymm M
- diagonal : ∀ (b : B), M b b = 1
Instances For
The relations corresponding to a Coxeter matrix.
Equations
- CoxeterGroup.Relations.ofMatrix M = Function.uncurry fun (b₁ b₂ : B) => (FreeGroup.of b₁ * FreeGroup.of b₂) ^ M b₁ b₂
Instances For
The set of relations corresponding to a Coxeter matrix.
Equations
Instances For
The group presentation corresponding to a Coxeter matrix.
Equations
Instances For
The canonical map from B
to the Coxeter group with generators b : B
. The term b
is mapped to the equivalence class of the image of b
in CoxeterGroup M
.
Equations
Instances For
A Coxeter system CoxeterSystem W
is a structure recording the isomorphism between
a group W
and the group presentation corresponding to a Coxeter matrix. Equivalently, this
can be seen as a list of generators of W
parameterized by the underlying type of M
, which
satisfy the relations of the Coxeter matrix M
.
- ofMulEquiv :: (
- mulEquiv : W ≃* Matrix.CoxeterGroup M
mulEquiv
is the isomorphism between the groupW
and the group presentation corresponding to a Coxeter matrixM
. - )
Instances For
A group is a Coxeter group if it admits a Coxeter system for some Coxeter matrix M
.
- nonempty_system : ∃ (B : Type u) (M : Matrix B B ℕ), Matrix.IsCoxeter M ∧ Nonempty (CoxeterSystem M W)
Instances
A Coxeter system for W
with Coxeter matrix M
indexed by B
, is associated to
a map B → W
recording the images of the indices.
Equations
- CoxeterSystem.funLike = { coe := fun (cs : CoxeterSystem M W) (b : B) => (MulEquiv.symm cs.mulEquiv) (PresentedGroup.of b), coe_injective' := ⋯ }
The map sending a Coxeter system to its associated map B → W
is injective.
Extensionality rule for Coxeter systems.
The canonical Coxeter system of the Coxeter group over X
.
Equations
- CoxeterSystem.ofCoxeterGroup X D = { mulEquiv := MulEquiv.refl (Matrix.CoxeterGroup D) }
Instances For
Coxeter groups of isomorphic types are isomorphic.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Reindex a Coxeter system through a bijection of the indexing sets.
Equations
- CoxeterSystem.reindex cs e = { mulEquiv := MulEquiv.trans cs.mulEquiv (CoxeterSystem.equivCoxeterGroup e) }
Instances For
Pushing a Coxeter system through a group isomorphism.
Equations
- CoxeterSystem.map cs e = { mulEquiv := MulEquiv.trans (MulEquiv.symm e) cs.mulEquiv }