Geometric representation of Coxeter groups #
This file defines the geometric representation of a Coxeter group.
Main definitions #
Coxeter.geomRep: The geometric representation
Main statements #
Coxeter.orderOf_simple_mul_simple: $s_i s_{i'}$ has the expected orderCoxeter.simple_inj
TODO #
- Pin down the orientation in
Coxeter.oangle_stdBasisE
References #
- [Bou07] N. Bourbaki, Groupes et algèbres de Lie
noncomputable def
Coxeter.stdBasis
{W : Type u_1}
[CoxeterGroup W]
:
Module.Basis (CoxeterGroup.B W) ℝ (V W)
Equations
Instances For
Equations
- Coxeter.bil = (Coxeter.Matrix.toBilin Coxeter.stdBasis) fun (i i' : Coxeter.CoxeterGroup.B W) => -Real.cos (Real.pi / ↑(Coxeter.CoxeterGroup.M.M i i'))
Instances For
@[simp]
@[simp]
theorem
Coxeter.bil_off_diag_le
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
(h : i ≠ i')
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
Coxeter.orderOf_geomRepAux_mul_geomRepAux₁
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
(h : CoxeterGroup.M.M i i' = 1)
:
@[simp]
theorem
Coxeter.bil_restrict_E_diag
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
(x y : ℝ)
:
theorem
Coxeter.bil_restrict_E_isPosSemidef
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
:
(bil.restrict (E i i')).IsPosSemidef
Bourbaki Ch V, §4, Proposition 1
theorem
Coxeter.bil_restrict_E_nondegenerate_iff
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
(h : i ≠ i')
:
Bourbaki Ch V, §4, Proposition 1 (continued)
theorem
Coxeter.geomRepAux_E_perp_left
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
(z : V W)
:
z ∈ (E i i').orthogonalBilin bil → (geomRepAux i) z = z
theorem
Coxeter.geomRepAux_E_perp_right
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
(z : V W)
:
z ∈ (E i i').orthogonalBilin bil → (geomRepAux i') z = z
theorem
Coxeter.geomRepAux_E_left
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
:
Set.MapsTo ⇑(geomRepAux i) ↑(E i i') ↑(E i i')
theorem
Coxeter.geomRepAux_E_right
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
:
Set.MapsTo ⇑(geomRepAux i') ↑(E i i') ↑(E i i')
theorem
Coxeter.geomRepAux_E_2
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
:
Set.MapsTo ⇑(geomRepAux i * geomRepAux i') ↑(E i i') ↑(E i i')
theorem
Coxeter.restrict_geomRepAux_mul
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
:
(↑(geomRepAux i * geomRepAux i')).restrict ⋯ = (↑(geomRepAux i)).restrict ⋯ ∘ₗ (↑(geomRepAux i')).restrict ⋯
theorem
Coxeter.geomRepAux_mul_geomRepAux_pow₀
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
(h : CoxeterGroup.M.M i i' = 0)
(n : ℕ)
:
theorem
Coxeter.orderOf_geomRepAux_mul_geomRepAux₀
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
(h : CoxeterGroup.M.M i i' = 0)
:
theorem
Coxeter.index_ne
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
[Fact (CoxeterGroup.M.M i i' ≥ 2)]
:
noncomputable def
Coxeter.e
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
[Fact (CoxeterGroup.M.M i i' ≥ 2)]
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
noncomputable def
Coxeter.stdBasisE
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
[Fact (CoxeterGroup.M.M i i' ≥ 2)]
:
Module.Basis (Fin 2) ℝ ↥(E i i')
Equations
- Coxeter.stdBasisE i i' = (Finsupp.basisSingleOne.map (Finsupp.supportedEquivFinsupp {i, i'}).symm).reindex (Coxeter.e i i')
Instances For
@[simp]
theorem
Coxeter.stdBasisE_0
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
[Fact (CoxeterGroup.M.M i i' ≥ 2)]
:
@[simp]
theorem
Coxeter.stdBasisE_1
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
[Fact (CoxeterGroup.M.M i i' ≥ 2)]
:
instance
Coxeter.instFiniteDimensionalRealSubtypeVMemSubmoduleE
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
[Fact (CoxeterGroup.M.M i i' ≥ 2)]
:
FiniteDimensional ℝ ↥(E i i')
theorem
Coxeter.finrank_E_eq_two
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
[Fact (CoxeterGroup.M.M i i' ≥ 2)]
:
instance
Coxeter.instFactEqNatFinrankRealSubtypeVMemSubmoduleEOfNat
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
[Fact (CoxeterGroup.M.M i i' ≥ 2)]
:
Fact (Module.finrank ℝ ↥(E i i') = 2)
theorem
Coxeter.E_sup_orthogonal
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
[Fact (CoxeterGroup.M.M i i' ≥ 2)]
:
theorem
Coxeter.orderOf_geomRepAux_mul_geomRepAux_eq_orderOf_restrict
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
[Fact (CoxeterGroup.M.M i i' ≥ 2)]
(m : ℕ)
:
@[implicit_reducible]
noncomputable instance
Coxeter.instCoreRealSubtypeVMemSubmoduleE
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
:
PreInnerProductSpace.Core ℝ ↥(E i i')
Equations
- One or more equations did not get rendered due to their size.
@[implicit_reducible]
noncomputable instance
Coxeter.instCoreRealSubtypeVMemSubmoduleE_1
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
[Fact (CoxeterGroup.M.M i i' ≥ 2)]
:
InnerProductSpace.Core ℝ ↥(E i i')
Equations
- Coxeter.instCoreRealSubtypeVMemSubmoduleE_1 i i' = { toCore := Coxeter.instCoreRealSubtypeVMemSubmoduleE i i', definite := ⋯ }
@[implicit_reducible]
noncomputable instance
Coxeter.instNormedAddCommGroupSubtypeVMemSubmoduleRealE
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
[Fact (CoxeterGroup.M.M i i' ≥ 2)]
:
NormedAddCommGroup ↥(E i i')
@[implicit_reducible]
noncomputable instance
Coxeter.instInnerProductSpaceRealSubtypeVMemSubmoduleE
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
[Fact (CoxeterGroup.M.M i i' ≥ 2)]
:
InnerProductSpace ℝ ↥(E i i')
@[simp]
theorem
Coxeter.norm_stdBasisE_0
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
[Fact (CoxeterGroup.M.M i i' ≥ 2)]
:
@[simp]
theorem
Coxeter.norm_stdBasisE_1
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
[Fact (CoxeterGroup.M.M i i' ≥ 2)]
:
@[simp]
theorem
Coxeter.inner_stdBasisE_0_1
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
[Fact (CoxeterGroup.M.M i i' ≥ 2)]
:
theorem
Coxeter.oangle_stdBasisE
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
[Fact (CoxeterGroup.M.M i i' ≥ 2)]
:
theorem
Coxeter.restrict_geomRepAux_left_eq_reflect
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
[Fact (CoxeterGroup.M.M i i' ≥ 2)]
:
theorem
Coxeter.restrict_geomRepAux_right_eq_reflect
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
[Fact (CoxeterGroup.M.M i i' ≥ 2)]
:
theorem
Coxeter.restrict_geomRepAux_mul_geomRep_aux_eq_rotate
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
[Fact (CoxeterGroup.M.M i i' ≥ 2)]
:
∃ (o : Orientation ℝ (↥(E i i')) (Fin 2)),
(↑(geomRepAux i * geomRepAux i')).restrict ⋯ = ↑(o.rotation ↑(2 * Real.pi / ↑(CoxeterGroup.M.M i i'))).toLinearEquiv
theorem
Coxeter.orderOf_geomRepAux_mul_geomRepAux₂
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
[Fact (CoxeterGroup.M.M i i' ≥ 2)]
:
The geometric representation
Equations
Instances For
theorem
Coxeter.geomRep_simple_apply
{W : Type u_1}
[CoxeterGroup W]
(i : CoxeterGroup.B W)
(x : V W)
:
theorem
Coxeter.orderOf_geomRep_simple_mul_simple
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
:
theorem
Coxeter.orderOf_simple_mul_simple
{W : Type u_1}
[CoxeterGroup W]
(i i' : CoxeterGroup.B W)
:
theorem
Coxeter.finite_generating_set
{W : Type u_1}
[CoxeterGroup W]
[Finite W]
:
Finite (CoxeterGroup.B W)