Documentation

Atlas.LieGroups.code.HeckeKL

@[reducible, inline]
Instances For
    noncomputable def heckeQ :
    Instances For
      @[reducible, inline]
      noncomputable abbrev hecke_q :
      Instances For
        structure CoxeterGroupData :
        Type (u_1 + 1)
        Instances For
          @[implicit_reducible]
          instance instDecidableBruhatLE (C : CoxeterGroupData) (y w : C.W) :
          @[reducible, inline]
          Instances For
            @[implicit_reducible]
            @[implicit_reducible]
            @[implicit_reducible]
            noncomputable def HeckeAlgebra.T (C : CoxeterGroupData) (w : C.W) :
            Instances For
              noncomputable def simpleReflMulBasis (C : CoxeterGroupData) (s w : C.W) :
              Instances For
                noncomputable def simpleActOnLinComb (C : CoxeterGroupData) (s : C.W) (f : HeckeAlgebra C) :
                Instances For
                  @[irreducible]
                  def heckeMulBasis (C : CoxeterGroupData) (w₁ w₂ : C.W) :
                  Instances For
                    noncomputable def heckeMul (C : CoxeterGroupData) (f g : HeckeAlgebra C) :
                    Instances For
                      theorem CoxeterGroupData.simple_cancel (C : CoxeterGroupData) (s : C.W) (hs : s C.simpleReflections) (w : C.W) :
                      s * (s * w) = w
                      theorem CoxeterGroupData.length_zero_eq_one (C : CoxeterGroupData) (w : C.W) (h : C.length w = 0) :
                      w = 1
                      theorem simpleReflMulBasis_apply (C : CoxeterGroupData) (s y w : C.W) :
                      (simpleReflMulBasis C s y) w = if C.length (s * y) = C.length y + 1 then if s * y = w then 1 else 0 else (if y = w then hecke_q - 1 else 0) + if s * y = w then hecke_q else 0
                      theorem heckeMulBasis_descent (C : CoxeterGroupData) (w₁ : C.W) (hw₁ : w₁ 1) :
                      heckeMulBasis C (C.descentRefl w₁) (C.descentRefl w₁ * w₁) = Finsupp.single w₁ 1
                      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 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 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 finsupp_sum_comm_smul {W : Type u_1} {R : Type u_2} [CommRing R] (g : WW →₀ R) (outer : W →₀ R) (inner : WW →₀ R) :
                      (outer.sum fun (v : W) (c : R) => c (inner v).sum fun (u : W) (d : R) => d g u) = (outer.sum fun (v : W) (c : R) => c inner v).sum fun (u : W) (d : R) => d g u
                      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]
                      noncomputable instance HeckeAlgebra.instRing (C : CoxeterGroupData) :
                      Instances For
                        @[implicit_reducible]
                        theorem heckeMul_single_single (C : CoxeterGroupData) (w₁ w₂ : C.W) (r₁ r₂ : HeckeCoeffRing) :
                        heckeMul C (Finsupp.single w₁ r₁) (Finsupp.single w₂ r₂) = (r₁ * r₂) heckeMulBasis C w₁ w₂
                        theorem heckeMul_add_left (C : CoxeterGroupData) (f₁ f₂ g : HeckeAlgebra C) :
                        heckeMul C (f₁ + f₂) g = heckeMul C f₁ g + heckeMul C f₂ g
                        theorem heckeMul_add_right (C : CoxeterGroupData) (f g₁ g₂ : HeckeAlgebra C) :
                        heckeMul C f (g₁ + g₂) = heckeMul C f g₁ + heckeMul C f g₂
                        @[reducible, inline]
                        Instances For
                          Instances For
                            Instances For
                              @[irreducible]
                              def RPoly (C : CoxeterGroupData) (x y : C.W) :
                              Instances For
                                noncomputable def polyEvalQInv (p : Polynomial ) :
                                Instances For
                                  noncomputable def D_on_basis (C : CoxeterGroupData) (w : C.W) :
                                  Instances For
                                    noncomputable def HeckeAlgebra.D (C : CoxeterGroupData) :
                                    Instances For
                                      theorem HeckeAlgebra.D_add (C : CoxeterGroupData) (f g : HeckeAlgebra C) :
                                      D C (f + g) = D C f + D C g
                                      theorem HeckeAlgebra.D_finset_sum (C : CoxeterGroupData) {ι : Type u_1} (s : Finset ι) (f : ιHeckeAlgebra C) :
                                      D C (∑ is, f i) = is, D C (f i)
                                      noncomputable def D_coeff (C : CoxeterGroupData) (x w : C.W) :
                                      Instances For
                                        theorem finset_sum_single {α : Type u_1} [DecidableEq α] {β : Type u_2} [AddCommMonoid β] {ι : Type u_3} (s : Finset ι) (y : α) (f : ιβ) :
                                        is, Finsupp.single y (f i) = Finsupp.single y (∑ is, f i)
                                        theorem smul_D_on_basis (C : CoxeterGroupData) (c : HeckeCoeffRing) (x : C.W) :
                                        c D_on_basis C x = y : C.W, Finsupp.single y (c * D_coeff C y x)
                                        theorem RPoly_unfold_lt (C : CoxeterGroupData) (x y : C.W) (hy : y 1) (hlt : C.length (C.descentRefl y * x) < C.length x) :
                                        RPoly C x y = RPoly C (C.descentRefl y * x) (C.descentRefl y * y)
                                        theorem RPoly_unfold_ge (C : CoxeterGroupData) (x y : C.W) (hy : y 1) (hge : ¬C.length (C.descentRefl y * x) < C.length x) :
                                        theorem RPoly_orthog (C : CoxeterGroupData) (w y : C.W) :
                                        z : C.W, coeffInvolution (D_coeff C z w) * D_coeff C y z = if y = w then 1 else 0
                                        theorem sum_single_ite_eq (C : CoxeterGroupData) (w : C.W) :
                                        y : C.W, Finsupp.single y (if y = w then 1 else 0) = Finsupp.single w 1
                                        theorem HeckeAlgebra.D_D_on_basis (C : CoxeterGroupData) (w : C.W) :
                                        D C (D_on_basis C w) = T C w
                                        noncomputable def mkBoundedPoly (bound : ) (coeffs : ) :
                                        Instances For
                                          theorem mkBoundedPoly_natDegree_le (bound : ) (coeffs : ) :
                                          (mkBoundedPoly bound coeffs).natDegree bound
                                          theorem poly_eq_mkBoundedPoly_of_deg_le (p : Polynomial ) (bound : ) (hdeg : p.natDegree bound) :
                                          p = mkBoundedPoly bound fun (j : ) => p.coeff j
                                          theorem mkBoundedPoly_congr (bound : ) (f g : ) (h : jbound, f j = g j) :
                                          mkBoundedPoly bound f = mkBoundedPoly bound g
                                          noncomputable def middleCoeffs (C : CoxeterGroupData) (y _w : C.W) (rec_val : C.WPolynomial ) :
                                          Instances For
                                            noncomputable def self_dual_coeffs (C : CoxeterGroupData) (y w : C.W) (_bound : ) (rec_val : C.WPolynomial ) :
                                            Instances For
                                              @[irreducible]
                                              Instances For
                                                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) :
                                                        (categoryOMultiplicity C rd wg compat lam y w) = Polynomial.eval 1 (KazhdanLusztigPoly C y w)
                                                        theorem kl_poly_longest (C : CoxeterGroupData) (w₀ : C.W) (hw₀ : ∀ (w : C.W), C.bruhatLE w w₀) (y : C.W) :
                                                        Instances For
                                                          noncomputable def KLBasisElement (C : CoxeterGroupData) (w : C.W) :
                                                          Instances For
                                                            theorem klp_unfold (C : CoxeterGroupData) (y w : C.W) (hle : C.bruhatLE y w) (hne : y w) :
                                                            KazhdanLusztigPoly C 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 KazhdanLusztigPoly C z w else 0)
                                                            theorem self_dual_implies_coeff_eq (C : CoxeterGroupData) (Q : C.WC.WPolynomial ) (hQ_zero : ∀ (y w : C.W), ¬C.bruhatLE y wQ y w = 0) (hQ_diag : ∀ (w : C.W), Q w w = 1) (hQ_deg : ∀ (y w : C.W), C.bruhatLE y wy 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) :
                                                            (Q y w).coeff j = (middleCoeffs C y w fun (z : C.W) => if C.bruhatLE y z z y C.bruhatLE z w then Q z w else 0).coeff j
                                                            theorem self_dual_implies_recursion (C : CoxeterGroupData) (Q : C.WC.WPolynomial ) (hQ_zero : ∀ (y w : C.W), ¬C.bruhatLE y wQ y w = 0) (hQ_diag : ∀ (w : C.W), Q w w = 1) (hQ_deg : ∀ (y w : C.W), C.bruhatLE y wy 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) :
                                                            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)
                                                            theorem kl_poly_unique (C : CoxeterGroupData) (Q : C.WC.WPolynomial ) (hQ_zero : ∀ (y w : C.W), ¬C.bruhatLE y wQ y w = 0) (hQ_diag : ∀ (w : C.W), Q w w = 1) (hQ_deg : ∀ (y w : C.W), C.bruhatLE y wy w(Q y w).natDegree (C.length w - C.length y - 1) / 2) (hQ_recursion : ∀ (y w : C.W), C.bruhatLE y wy wQ 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) :
                                                            Q y w = KazhdanLusztigPoly C y w