Coxeter groups #
We build upon the the theory of Coxeter systems currently available in mathlib.
Main definitions #
- mul : W → W → W
- one : W
- inv : W → W
- div : W → W → W
- B : Type u_2
- M : CoxeterMatrix (B W)
- cs : CoxeterSystem M W
Instances
Equations
Instances For
@[implicit_reducible]
instance
Coxeter.instCoeOutReducedWordListB
{W : Type u_1}
[CoxeterGroup W]
{w : W}
:
CoeOut (ReducedWord w) (List (CoxeterGroup.B W))
Equations
@[implicit_reducible]
noncomputable instance
Coxeter.instInhabitedReducedWord
{W : Type u_1}
[CoxeterGroup W]
{w : W}
:
Inhabited (ReducedWord w)
Equations
- Coxeter.instInhabitedReducedWord = { default := ⟨Classical.choose ⋯, ⋯⟩ }
Instances For
theorem
Coxeter.ReducedWord.wordProd_eq
{W : Type u_1}
[CoxeterGroup W]
{w : W}
(ω : ReducedWord w)
:
theorem
Coxeter.IsReduced_cons
{W : Type u_1}
[CoxeterGroup W]
{ω : List (CoxeterGroup.B W)}
(hω : CoxeterGroup.cs.IsReduced ω)
(i : CoxeterGroup.B W)
:
theorem
Coxeter.not_IsReduced_cons
{W : Type u_1}
[CoxeterGroup W]
{ω : List (CoxeterGroup.B W)}
(hω : CoxeterGroup.cs.IsReduced ω)
(i : CoxeterGroup.B W)
:
theorem
Coxeter.isReduced_of_append_left
{W : Type u_1}
[CoxeterGroup W]
{μ ω : List (CoxeterGroup.B W)}
(h : CoxeterGroup.cs.IsReduced (μ ++ ω))
:
theorem
Coxeter.isReduced_of_append_right
{W : Type u_1}
[CoxeterGroup W]
{μ ω : List (CoxeterGroup.B W)}
(h : CoxeterGroup.cs.IsReduced (μ ++ ω))
:
theorem
Coxeter.tail_leftInvSeq
{W : Type u_1}
[CoxeterGroup W]
(i : CoxeterGroup.B W)
(ω : List (CoxeterGroup.B W))
:
(CoxeterGroup.cs.leftInvSeq (i :: ω)).tail = List.map (⇑(MulAut.conj (CoxeterGroup.cs.simple i))) (CoxeterGroup.cs.leftInvSeq ω)
theorem
Coxeter.drop_leftInvSeq
{W : Type u_1}
[CoxeterGroup W]
(j : ℕ)
(ω : List (CoxeterGroup.B W))
:
List.drop j (CoxeterGroup.cs.leftInvSeq ω) = List.map (⇑(MulAut.conj (CoxeterGroup.cs.wordProd (List.take j ω)))) (CoxeterGroup.cs.leftInvSeq (List.drop j ω))
theorem
Coxeter.leftInvSeq_append
{W : Type u_1}
[CoxeterGroup W]
(μ ω : List (CoxeterGroup.B W))
:
CoxeterGroup.cs.leftInvSeq (μ ++ ω) = CoxeterGroup.cs.leftInvSeq μ ++ List.map (⇑(MulAut.conj (CoxeterGroup.cs.wordProd μ))) (CoxeterGroup.cs.leftInvSeq ω)
theorem
Coxeter.tail_alternatingWord
{W : Type u_1}
[CoxeterGroup W]
(i j : CoxeterGroup.B W)
(p : ℕ)
:
theorem
Coxeter.drop_alternatingWord
{W : Type u_1}
[CoxeterGroup W]
(i j : CoxeterGroup.B W)
(p q : ℕ)
:
theorem
Coxeter.alternatingWord_even_add
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
(k m : ℕ)
:
CoxeterSystem.alternatingWord i i' (2 * k + m) = CoxeterSystem.alternatingWord i i' m ++ CoxeterSystem.alternatingWord i i' (2 * k)
theorem
Coxeter.reverse_alternatingWord
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
(k : ℕ)
:
theorem
Coxeter.getD_leftInvSeq_mul_wordProd₂
{W : Type u_1}
[CoxeterGroup W]
{i j : ℕ}
(ω : List (CoxeterGroup.B W))
(hij : i < j)
:
(CoxeterGroup.cs.leftInvSeq ω).getD i 1 * (CoxeterGroup.cs.leftInvSeq ω).getD j 1 * CoxeterGroup.cs.wordProd ω = CoxeterGroup.cs.wordProd ((ω.eraseIdx j).eraseIdx i)
theorem
Coxeter.getElem_leftInvSeq_mul_wordProd₂
{W : Type u_1}
[CoxeterGroup W]
{i j : ℕ}
(ω : List (CoxeterGroup.B W))
(h1 : i < j)
(h2 : j < ω.length)
:
(CoxeterGroup.cs.leftInvSeq ω)[i] * (CoxeterGroup.cs.leftInvSeq ω)[j] * CoxeterGroup.cs.wordProd ω = CoxeterGroup.cs.wordProd ((ω.eraseIdx j).eraseIdx i)
theorem
Coxeter.adjacent_ne_of_isReduced
{W : Type u_1}
[CoxeterGroup W]
{i : ℕ}
{ω : List (CoxeterGroup.B W)}
(hi : i + 1 < ω.length)
(hω : CoxeterGroup.cs.IsReduced ω)
:
@[simp]
@[simp]