- W : Type u_1
- decEq : DecidableEq self.W
- length_simple (s : self.W) : s ∈ self.simpleReflections → self.length s = 1
- simple_sq (s : self.W) : s ∈ self.simpleReflections → s * s = 1
- descentRefl_simple (y : self.W) : y ≠ 1 → self.descentRefl y ∈ self.simpleReflections
Instances For
@[implicit_reducible]
@[implicit_reducible]
@[implicit_reducible]
@[implicit_reducible]
Instances For
Instances For
Instances For
@[irreducible]
Instances For
Instances For
theorem
CoxeterGroupData.simple_cancel
(C : CoxeterGroupData)
(s : C.W)
(hs : s ∈ C.simpleReflections)
(w : C.W)
:
theorem
CoxeterGroupData.simple_ne_one
(C : CoxeterGroupData)
(s : C.W)
(hs : s ∈ C.simpleReflections)
:
theorem
CoxeterGroupData.descentRefl_of_simple
(C : CoxeterGroupData)
(s : C.W)
(hs : s ∈ C.simpleReflections)
:
theorem
heckeMulBasis_simple
(C : CoxeterGroupData)
(s : C.W)
(hs : s ∈ C.simpleReflections)
(w : C.W)
:
theorem
heckeMulBasis_unfold
(C : CoxeterGroupData)
(w₁ : C.W)
(hw₁ : w₁ ≠ 1)
(w₂ : C.W)
:
heckeMulBasis C w₁ w₂ = simpleActOnLinComb C (C.descentRefl w₁) (heckeMulBasis C (C.descentRefl w₁ * w₁) w₂)
theorem
simpleActOnLinComb_quadratic
(C : CoxeterGroupData)
(s : C.W)
(hs : s ∈ C.simpleReflections)
(w : C.W)
:
simpleActOnLinComb C s (simpleReflMulBasis C s w) = hecke_q • Finsupp.single w 1 + (hecke_q - 1) • simpleReflMulBasis C s w
theorem
simpleActOnLinComb_smul
(C : CoxeterGroupData)
(s : C.W)
(c : HeckeCoeffRing)
(f : HeckeAlgebra C)
:
theorem
heckeMulBasis_assoc_gen_rhs
(C : CoxeterGroupData)
(s : C.W)
(hs : s ∈ C.simpleReflections)
(w₂ w₃ : C.W)
:
(Finsupp.sum (heckeMulBasis C w₂ w₃) fun (v : C.W) (c : HeckeCoeffRing) => c • heckeMulBasis C s v) = simpleActOnLinComb C s (heckeMulBasis C w₂ w₃)
theorem
simpleActOnLinComb_quadratic_gen
(C : CoxeterGroupData)
(s : C.W)
(hs : s ∈ C.simpleReflections)
(f : HeckeAlgebra C)
:
simpleActOnLinComb C s (simpleActOnLinComb C s f) = (hecke_q - 1) • simpleActOnLinComb C s f + hecke_q • f
theorem
heckeMulBasis_assoc_gen
(C : CoxeterGroupData)
(s : C.W)
(hs : s ∈ C.simpleReflections)
(w₂ w₃ : C.W)
:
(Finsupp.sum (heckeMulBasis C s w₂) fun (v : C.W) (c : HeckeCoeffRing) => c • heckeMulBasis C v w₃) = Finsupp.sum (heckeMulBasis C w₂ w₃) fun (v : C.W) (c : HeckeCoeffRing) => c • heckeMulBasis C s v
theorem
heckeMulBasis_assoc
(C : CoxeterGroupData)
(w₁ w₂ w₃ : C.W)
:
(Finsupp.sum (heckeMulBasis C w₁ w₂) fun (v : C.W) (c : HeckeCoeffRing) => c • heckeMulBasis C v w₃) = Finsupp.sum (heckeMulBasis C w₂ w₃) fun (v : C.W) (c : HeckeCoeffRing) => c • heckeMulBasis C w₁ v
@[implicit_reducible]
Instances For
Instances For
@[implicit_reducible]
Instances For
Instances For
theorem
HeckeAlgebra.D_semilinear
(C : CoxeterGroupData)
(a : HeckeCoeffRing)
(h : HeckeAlgebra C)
:
Instances For
theorem
HeckeAlgebra.D_finset_sum
(C : CoxeterGroupData)
{ι : Type u_1}
(s : Finset ι)
(f : ι → HeckeAlgebra C)
:
theorem
finset_sum_single
{α : Type u_1}
[DecidableEq α]
{β : Type u_2}
[AddCommMonoid β]
{ι : Type u_3}
(s : Finset ι)
(y : α)
(f : ι → β)
:
theorem
RPoly_unfold_lt
(C : CoxeterGroupData)
(x y : C.W)
(hy : y ≠ 1)
(hlt : C.length (C.descentRefl y * x) < C.length x)
:
theorem
RPoly_unfold_ge
(C : CoxeterGroupData)
(x y : C.W)
(hy : y ≠ 1)
(hge : ¬C.length (C.descentRefl y * x) < C.length x)
:
RPoly C x y = (Polynomial.X - Polynomial.C 1) * RPoly C x (C.descentRefl y * y) + Polynomial.X * RPoly C (C.descentRefl y * x) (C.descentRefl y * y)
theorem
poly_eq_mkBoundedPoly_of_deg_le
(p : Polynomial ℤ)
(bound : ℕ)
(hdeg : p.natDegree ≤ bound)
:
Instances For
noncomputable def
self_dual_coeffs
(C : CoxeterGroupData)
(y w : C.W)
(_bound : ℕ)
(rec_val : C.W → Polynomial ℤ)
:
Instances For
@[irreducible]
Instances For
theorem
kl_poly_zero_unless_bruhat_le
(C : CoxeterGroupData)
(y w : C.W)
:
¬C.bruhatLE y w → KazhdanLusztigPoly C y w = 0
structure
CoxeterWeylCompatibility
{R : Type u_1}
[CommRing R]
{𝔤 : Type u_2}
[LieRing 𝔤]
[LieAlgebra R 𝔤]
{Δ : TriangularDecomposition R 𝔤}
(C : CoxeterGroupData)
(rd : PositiveRootData Δ)
(wg : WeylGroupData Δ)
:
Type (max u_3 u_4)
Instances For
noncomputable def
categoryOMultiplicity
{R : Type u_1}
[CommRing R]
{𝔤 : Type u_2}
[LieRing 𝔤]
[LieAlgebra R 𝔤]
{Δ : TriangularDecomposition R 𝔤}
(C : CoxeterGroupData)
(rd : PositiveRootData Δ)
(wg : WeylGroupData Δ)
(compat : CoxeterWeylCompatibility C rd wg)
(lam : ↥Δ.𝔥 →ₗ[R] R)
(y w : C.W)
:
Instances For
@[reducible, inline]
noncomputable abbrev
categoryO_multiplicity
{R : Type u_1}
[CommRing R]
{𝔤 : Type u_2}
[LieRing 𝔤]
[LieAlgebra R 𝔤]
{Δ : TriangularDecomposition R 𝔤}
(C : CoxeterGroupData)
(rd : PositiveRootData Δ)
(wg : WeylGroupData Δ)
(compat : CoxeterWeylCompatibility C rd wg)
(lam : ↥Δ.𝔥 →ₗ[R] R)
(y w : C.W)
:
Instances For
def
IsDominantRegularWeight
{R : Type u_1}
[CommRing R]
{𝔤 : Type u_2}
[LieRing 𝔤]
[LieAlgebra R 𝔤]
{Δ : TriangularDecomposition R 𝔤}
(rd : PositiveRootData Δ)
(wg : WeylGroupData Δ)
(lam : ↥Δ.𝔥 →ₗ[R] R)
:
Instances For
theorem
kazhdan_lusztig_conjecture_multiplicity
{R : Type u_1}
[Field R]
[IsAlgClosed R]
[CharZero R]
{𝔤 : Type u_2}
[LieRing 𝔤]
[LieAlgebra R 𝔤]
{Δ : TriangularDecomposition R 𝔤}
(C : CoxeterGroupData)
(rd : PositiveRootData Δ)
(wg : WeylGroupData Δ)
(compat : CoxeterWeylCompatibility C rd wg)
(lam : ↥Δ.𝔥 →ₗ[R] R)
(hlam_dr : IsDominantRegularWeight rd wg lam)
(y w : C.W)
:
theorem
kl_poly_longest
(C : CoxeterGroupData)
(w₀ : C.W)
(hw₀ : ∀ (w : C.W), C.bruhatLE w w₀)
(y : C.W)
:
Instances For
theorem
kl_coeff_self_dual_identity
(C : CoxeterGroupData)
(x w : C.W)
:
∑ y : C.W,
coeffInvolution (LaurentPolynomial.T (-↑(C.length w)) * polyToHeckeCoeff (KazhdanLusztigPoly C y w)) * D_coeff C x y = LaurentPolynomial.T (-↑(C.length w)) * polyToHeckeCoeff (KazhdanLusztigPoly C x w)
theorem
self_dual_implies_coeff_eq
(C : CoxeterGroupData)
(Q : C.W → C.W → Polynomial ℤ)
(hQ_zero : ∀ (y w : C.W), ¬C.bruhatLE y w → Q y w = 0)
(hQ_diag : ∀ (w : C.W), Q w w = 1)
(hQ_deg : ∀ (y w : C.W), C.bruhatLE y w → y ≠ w → (Q y w).natDegree ≤ (C.length w - C.length y - 1) / 2)
(hQ_self_dual :
∀ (w : C.W),
HeckeAlgebra.D C (∑ y : C.W, Finsupp.single y (LaurentPolynomial.T (-↑(C.length w)) * polyToHeckeCoeff (Q y w))) = ∑ y : C.W, Finsupp.single y (LaurentPolynomial.T (-↑(C.length w)) * polyToHeckeCoeff (Q y w)))
(y w : C.W)
(hle : C.bruhatLE y w)
(hne : y ≠ w)
(j : ℕ)
(hj : j ≤ (C.length w - C.length y - 1) / 2)
:
theorem
self_dual_implies_recursion
(C : CoxeterGroupData)
(Q : C.W → C.W → Polynomial ℤ)
(hQ_zero : ∀ (y w : C.W), ¬C.bruhatLE y w → Q y w = 0)
(hQ_diag : ∀ (w : C.W), Q w w = 1)
(hQ_deg : ∀ (y w : C.W), C.bruhatLE y w → y ≠ w → (Q y w).natDegree ≤ (C.length w - C.length y - 1) / 2)
(hQ_self_dual :
∀ (w : C.W),
HeckeAlgebra.D C (∑ y : C.W, Finsupp.single y (LaurentPolynomial.T (-↑(C.length w)) * polyToHeckeCoeff (Q y w))) = ∑ y : C.W, Finsupp.single y (LaurentPolynomial.T (-↑(C.length w)) * polyToHeckeCoeff (Q y w)))
(y w : C.W)
(hle : C.bruhatLE y w)
(hne : y ≠ w)
:
theorem
kl_poly_unique
(C : CoxeterGroupData)
(Q : C.W → C.W → Polynomial ℤ)
(hQ_zero : ∀ (y w : C.W), ¬C.bruhatLE y w → Q y w = 0)
(hQ_diag : ∀ (w : C.W), Q w w = 1)
(hQ_deg : ∀ (y w : C.W), C.bruhatLE y w → y ≠ w → (Q y w).natDegree ≤ (C.length w - C.length y - 1) / 2)
(hQ_recursion :
∀ (y w : C.W),
C.bruhatLE y w →
y ≠ w →
Q y w = mkBoundedPoly ((C.length w - C.length y - 1) / 2)
(self_dual_coeffs C y w ((C.length w - C.length y - 1) / 2) fun (z : C.W) =>
if C.bruhatLE y z ∧ z ≠ y ∧ C.bruhatLE z w then Q z w else 0))
(y w : C.W)
: