Documentation

Mathlib.GroupTheory.Coxeter.Basic

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:

And the exceptional systems:

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 #

References #

TODO #

Tags #

coxeter system, coxeter group

structure Matrix.IsCoxeter {B : Type u_1} (M : Matrix B B ) :

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
  • off_diagonal : ∀ (b₁ b₂ : B), b₁ b₂M b₁ b₂ 1
Instances For
    def CoxeterGroup.Relations.ofMatrix {B : Type u_1} (M : Matrix B B ) :
    B × BFreeGroup B

    The relations corresponding to a Coxeter matrix.

    Equations
    Instances For

      The set of relations corresponding to a Coxeter matrix.

      Equations
      Instances For
        def Matrix.CoxeterGroup {B : Type u_1} (M : Matrix B B ) :
        Type u_1

        The group presentation corresponding to a Coxeter matrix.

        Equations
        Instances For
          def CoxeterGroup.of {B : Type u_1} (M : Matrix B B ) (b : B) :

          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
            @[simp]
            theorem CoxeterGroup.of_apply {B : Type u_1} (M : Matrix B B ) (b : B) :
            structure CoxeterSystem {B : Type u_1} (M : Matrix B B ) (W : Type u_2) [Group W] :
            Type (max u_1 u_2)

            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 :: (
            • )
            Instances For
              class IsCoxeterGroup (W : Type u) [Group W] :

              A group is a Coxeter group if it admits a Coxeter system for some Coxeter matrix M.

              Instances
                instance CoxeterSystem.funLike {B : Type u_2} {W : Type u_4} [Group W] {M : Matrix B B } :

                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
                @[simp]
                theorem CoxeterSystem.mulEquiv_apply_coe {B : Type u_2} {W : Type u_4} [Group W] {M : Matrix B B } (cs : CoxeterSystem M W) (b : B) :
                cs.mulEquiv (cs b) = PresentedGroup.of b
                theorem CoxeterSystem.ext' {B : Type u_2} {W : Type u_4} [Group W] {M : Matrix B B } {cs₁ : CoxeterSystem M W} {cs₂ : CoxeterSystem M W} (H : cs₁ = cs₂) :
                cs₁ = cs₂

                The map sending a Coxeter system to its associated map B → W is injective.

                theorem CoxeterSystem.ext {B : Type u_2} {W : Type u_4} [Group W] {M : Matrix B B } {cs₁ : CoxeterSystem M W} {cs₂ : CoxeterSystem M W} (H : ∀ (b : B), cs₁ b = cs₂ b) :
                cs₁ = cs₂

                Extensionality rule for Coxeter systems.

                The canonical Coxeter system of the Coxeter group over X.

                Equations
                Instances For

                  Coxeter groups of isomorphic types are isomorphic.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    theorem CoxeterSystem.equivCoxeterGroup_apply_of {B : Type u_2} {B' : Type u_3} (b : B) (M : Matrix B B ) (e : B B') :
                    theorem CoxeterSystem.equivCoxeterGroup_symm_apply_of {B : Type u_2} {B' : Type u_3} (b' : B') (M : Matrix B B ) (e : B B') :
                    @[simp]
                    theorem CoxeterSystem.reindex_mulEquiv {B : Type u_2} {B' : Type u_3} {W : Type u_4} [Group W] {M : Matrix B B } (cs : CoxeterSystem M W) (e : B B') :
                    def CoxeterSystem.reindex {B : Type u_2} {B' : Type u_3} {W : Type u_4} [Group W] {M : Matrix B B } (cs : CoxeterSystem M W) (e : B B') :

                    Reindex a Coxeter system through a bijection of the indexing sets.

                    Equations
                    Instances For
                      @[simp]
                      theorem CoxeterSystem.reindex_apply {B : Type u_2} {B' : Type u_3} {W : Type u_4} [Group W] {M : Matrix B B } (cs : CoxeterSystem M W) (e : B B') (b' : B') :
                      (CoxeterSystem.reindex cs e) b' = cs (e.symm b')
                      @[simp]
                      theorem CoxeterSystem.map_mulEquiv {B : Type u_2} {W : Type u_4} {H : Type u_5} [Group W] [Group H] {M : Matrix B B } (cs : CoxeterSystem M W) (e : W ≃* H) :
                      (CoxeterSystem.map cs e).mulEquiv = MulEquiv.trans (MulEquiv.symm e) cs.mulEquiv
                      def CoxeterSystem.map {B : Type u_2} {W : Type u_4} {H : Type u_5} [Group W] [Group H] {M : Matrix B B } (cs : CoxeterSystem M W) (e : W ≃* H) :

                      Pushing a Coxeter system through a group isomorphism.

                      Equations
                      Instances For
                        @[simp]
                        theorem CoxeterSystem.map_apply {B : Type u_2} {W : Type u_4} {H : Type u_5} [Group W] [Group H] {M : Matrix B B } (cs : CoxeterSystem M W) (e : W ≃* H) (b : B) :
                        (CoxeterSystem.map cs e) b = e (cs b)