@@ -258,11 +258,12 @@ def demazure_operators(self):
258
258
Let us check this systematically on Schur functions of degree 6::
259
259
260
260
sage: for p in Partitions(6, max_length=3).list(): # optional - sage.combinat
261
- ....: assert s.monomial(p).expand(3, P.variable_names()) == pi0(KL.monomial(L(tuple(p)))).expand(P.gens())
261
+ ....: assert (s.monomial(p).expand(3, P.variable_names())
262
+ ....: == pi0(KL.monomial(L(tuple(p)))).expand(P.gens()))
262
263
263
264
We check systematically that these operators satisfy the Iwahori-Hecke algebra relations::
264
265
265
- sage: for cartan_type in CartanType.samples(crystallographic=True): # long time 12s
266
+ sage: for cartan_type in CartanType.samples(crystallographic=True): # long time 12s
266
267
....: L = RootSystem(cartan_type).weight_lattice()
267
268
....: KL = L.algebra(QQ)
268
269
....: T = KL.demazure_operators()
@@ -326,8 +327,8 @@ def demazure_lusztig_operator_on_basis(self, weight, i, q1, q2, convention="anti
326
327
327
328
- ``weight`` -- an element `\lambda` of the weight lattice
328
329
- ``i`` -- an element of the index set
329
- - ``q1, q2`` -- two elements of the ground ring
330
- - ``convention`` -- "antidominant", "bar", or "dominant" (default: "antidominant")
330
+ - ``q1``, `` q2`` -- two elements of the ground ring
331
+ - ``convention`` -- `` "antidominant"``, `` "bar"`` , or `` "dominant"`` (default: `` "antidominant"`` )
331
332
332
333
See :meth:`demazure_lusztig_operators` for the details.
333
334
@@ -442,7 +443,8 @@ def demazure_lusztig_operators(self, q1, q2, convention="antidominant"):
442
443
sage: KL = L.algebra(K)
443
444
sage: T = KL.demazure_lusztig_operators(q1, q2)
444
445
sage: Tbar = KL.demazure_lusztig_operators(q1, q2, convention="bar")
445
- sage: Tdominant = KL.demazure_lusztig_operators(q1, q2, convention="dominant")
446
+ sage: Tdominant = KL.demazure_lusztig_operators(q1, q2,
447
+ ....: convention="dominant")
446
448
sage: x = KL.monomial(L((3,0)))
447
449
sage: T[1](x)
448
450
(q1+q2)*B[(1, 2)] + (q1+q2)*B[(2, 1)] + (q1+q2)*B[(3, 0)] + q1*B[(0, 3)]
@@ -464,13 +466,16 @@ def demazure_lusztig_operators(self, q1, q2, convention="antidominant"):
464
466
sage: KL = L.algebra(K)
465
467
sage: T = KL.demazure_lusztig_operators(q1, q2)
466
468
sage: Tbar = KL.demazure_lusztig_operators(q1, q2, convention="bar")
467
- sage: Tdominant = KL.demazure_lusztig_operators(q1, q2, convention="dominant")
469
+ sage: Tdominant = KL.demazure_lusztig_operators(q1, q2,
470
+ ....: convention="dominant")
468
471
sage: e = L.basis()
469
472
sage: x = KL.monomial(3*e[0])
470
473
sage: T[1](x)
471
- (q1+q2)*B[e[0] + 2*e[1]] + (q1+q2)*B[2*e[0] + e[1]] + (q1+q2)*B[3*e[0]] + q1*B[3*e[1]]
474
+ (q1+q2)*B[e[0] + 2*e[1]] + (q1+q2)*B[2*e[0] + e[1]]
475
+ + (q1+q2)*B[3*e[0]] + q1*B[3*e[1]]
472
476
sage: Tbar[1](x)
473
- (-q1-q2)*B[e[0] + 2*e[1]] + (-q1-q2)*B[2*e[0] + e[1]] + (-q1-2*q2)*B[3*e[1]]
477
+ (-q1-q2)*B[e[0] + 2*e[1]] + (-q1-q2)*B[2*e[0] + e[1]]
478
+ + (-q1-2*q2)*B[3*e[1]]
474
479
sage: Tbar[1](x) + T[1](x)
475
480
(q1+q2)*B[3*e[0]] + (-2*q2)*B[3*e[1]]
476
481
sage: Tdominant[1](x)
@@ -503,8 +508,9 @@ def demazure_lusztig_operators(self, q1, q2, convention="antidominant"):
503
508
504
509
And the `\bar{T}` are basically the inverses of the `T` s::
505
510
506
- sage: Tinv = KL.demazure_lusztig_operators(2/q1+1/q2,-1/q1,convention="bar")
507
- sage: [Tinv[1](T[1](x))-x for x in KL.some_elements()]
511
+ sage: Tinv = KL.demazure_lusztig_operators(2/q1 + 1/q2, -1/q1,
512
+ ....: convention="bar")
513
+ sage: [Tinv[1](T[1](x)) - x for x in KL.some_elements()] # optional - sage.graphs
508
514
[0, 0, 0, 0, 0, 0, 0]
509
515
510
516
We check that `\Lambda_1-\Lambda_0` is an eigenvector for
@@ -519,7 +525,7 @@ def demazure_lusztig_operators(self, q1, q2, convention="antidominant"):
519
525
sage: KL = L.algebra(K)
520
526
sage: T = KL.demazure_lusztig_operators(q1, q2, convention="dominant")
521
527
sage: Y = T.Y()
522
- sage: alphacheck = Y.keys().alpha() # alpha of coroot lattice is alphacheck
528
+ sage: alphacheck = Y.keys().alpha() # alpha of coroot lattice is alphacheck
523
529
sage: alphacheck
524
530
Finite family {0: alphacheck[0], 1: alphacheck[1], 2: alphacheck[2]}
525
531
sage: x = KL.monomial(Lambda[1] - Lambda[0]); x # optional - sage.graphs
@@ -537,7 +543,7 @@ def demazure_lusztig_operators(self, q1, q2, convention="antidominant"):
537
543
sage: KL.q_project(Y[alphacheck[1]](x),q) # optional - sage.graphs
538
544
((-q2^2)/(-q*q1^2))*B[(1, 0, 0)]
539
545
540
- sage: KL.q_project(x, q)
546
+ sage: KL.q_project(x, q) # optional - sage.graphs
541
547
B[(1, 0, 0)]
542
548
sage: KL.q_project(Y[alphacheck[0]](x),q) # optional - sage.graphs
543
549
((-q*q1)/q2)*B[(1, 0, 0)]
@@ -591,7 +597,7 @@ def demazure_lusztig_operator_on_classical_on_basis(self, weight, i, q, q1, q2,
591
597
- ``weight`` -- a classical weight `\lambda`
592
598
- ``i`` -- an element of the index set
593
599
- ``q1,q2`` -- two elements of the ground ring
594
- - ``convention`` -- "antidominant", "bar", or "dominant" (default: "antidominant")
600
+ - ``convention`` -- `` "antidominant"``, `` "bar"`` , or `` "dominant"`` (default: `` "antidominant"`` )
595
601
596
602
See :meth:`demazure_lusztig_operators` for the details.
597
603
@@ -613,21 +619,25 @@ def demazure_lusztig_operator_on_classical_on_basis(self, weight, i, q, q1, q2,
613
619
These operators coincide with the usual Demazure-Lusztig
614
620
operators::
615
621
616
- sage: KL.demazure_lusztig_operator_on_classical_on_basis(L0((2,2)), 1, q, q1, q2) # optional - sage.graphs
622
+ sage: KL.demazure_lusztig_operator_on_classical_on_basis(L0((2,2)), # optional - sage.graphs
623
+ ....: 1, q, q1, q2)
617
624
q1*B[(2, 2)]
618
625
sage: KL0.demazure_lusztig_operator_on_basis(L0((2,2)), 1, q1, q2)
619
626
q1*B[(2, 2)]
620
627
621
- sage: KL.demazure_lusztig_operator_on_classical_on_basis(L0((3,0)), 1, q, q1, q2) # optional - sage.graphs
628
+ sage: KL.demazure_lusztig_operator_on_classical_on_basis(L0((3,0)), # optional - sage.graphs
629
+ ....: 1, q, q1, q2)
622
630
(q1+q2)*B[(1, 2)] + (q1+q2)*B[(2, 1)] + (q1+q2)*B[(3, 0)] + q1*B[(0, 3)]
623
631
sage: KL0.demazure_lusztig_operator_on_basis(L0((3,0)), 1, q1, q2)
624
632
(q1+q2)*B[(1, 2)] + (q1+q2)*B[(2, 1)] + (q1+q2)*B[(3, 0)] + q1*B[(0, 3)]
625
633
626
634
except that we now have an action of `T_0`, which introduces some `q` s::
627
635
628
- sage: KL.demazure_lusztig_operator_on_classical_on_basis(L0((2,2)), 0, q, q1, q2) # optional - sage.graphs
636
+ sage: KL.demazure_lusztig_operator_on_classical_on_basis(L0((2,2)), # optional - sage.graphs
637
+ ....: 0, q, q1, q2)
629
638
q1*B[(2, 2)]
630
- sage: KL.demazure_lusztig_operator_on_classical_on_basis(L0((3,0)), 0, q, q1, q2) # optional - sage.graphs
639
+ sage: KL.demazure_lusztig_operator_on_classical_on_basis(L0((3,0)), # optional - sage.graphs
640
+ ....: 0, q, q1, q2)
631
641
(-q^2*q1-q^2*q2)*B[(1, 2)] + (-q*q1-q*q2)*B[(2, 1)] + (-q^3*q2)*B[(0, 3)]
632
642
"""
633
643
L = self .basis ().keys ()
@@ -641,7 +651,7 @@ def demazure_lusztig_operators_on_classical(self, q, q1, q2, convention="antidom
641
651
INPUT:
642
652
643
653
- ``q,q1,q2`` -- three elements of the ground ring
644
- - ``convention`` -- "antidominant", "bar", or "dominant" (default: "antidominant")
654
+ - ``convention`` -- `` "antidominant"``, `` "bar"`` , or `` "dominant"`` (default: `` "antidominant"`` )
645
655
646
656
Let `KL` be the group algebra of an affine weight lattice
647
657
realization `L`. The Demazure-Lusztig operators for `KL`
@@ -783,7 +793,7 @@ def T0_check_on_basis(self, q1, q2, convention="antidominant"):
783
793
784
794
The following results have not been checked::
785
795
786
- sage: for x in some_weights:
796
+ sage: for x in some_weights: # optional - sage.graphs
787
797
....: print("{} : {}".format(x, f(x)))
788
798
(1, 0, 0, 0) : q1*B[(1, 0, 0, 0)]
789
799
(1, 1, 0, 0) : q1*B[(1, 1, 0, 0)]
@@ -890,7 +900,8 @@ def q_project_on_basis(self, l, q):
890
900
sage: KL = RootSystem(["A",2,1]).ambient_space().algebra(K)
891
901
sage: L = KL.basis().keys()
892
902
sage: e = L.basis()
893
- sage: KL.q_project_on_basis( 4*e[1] + 3*e[2] + e['deltacheck'] - 2*e['delta'], q)
903
+ sage: KL.q_project_on_basis(4*e[1] + 3*e[2]
904
+ ....: + e['deltacheck'] - 2*e['delta'], q)
894
905
1/q^2*B[(0, 4, 3)]
895
906
"""
896
907
KL0 = self .classical ()
@@ -917,16 +928,22 @@ def q_project(self, x, q):
917
928
sage: KL = RootSystem(["A",2,1]).ambient_space().algebra(K)
918
929
sage: L = KL.basis().keys()
919
930
sage: e = L.basis()
920
- sage: x = KL.an_element() + KL.monomial(4*e[1] + 3*e[2] + e['deltacheck'] - 2*e['delta']); x
921
- B[2*e[0] + 2*e[1] + 3*e[2]] + B[4*e[1] + 3*e[2] - 2*e['delta'] + e['deltacheck']]
931
+ sage: x = (KL.an_element()
932
+ ....: + KL.monomial(4*e[1] + 3*e[2]
933
+ ....: + e['deltacheck'] - 2*e['delta'])); x
934
+ B[2*e[0] + 2*e[1] + 3*e[2]]
935
+ + B[4*e[1] + 3*e[2] - 2*e['delta'] + e['deltacheck']]
922
936
sage: KL.q_project(x, q)
923
937
B[(2, 2, 3)] + 1/q^2*B[(0, 4, 3)]
924
938
925
939
sage: KL = RootSystem(["BC",3,2]).ambient_space().algebra(K)
926
940
sage: L = KL.basis().keys()
927
941
sage: e = L.basis()
928
- sage: x = KL.an_element() + KL.monomial(4*e[1] + 3*e[2] + e['deltacheck'] - 2*e['delta']); x
929
- B[2*e[0] + 2*e[1] + 3*e[2]] + B[4*e[1] + 3*e[2] - 2*e['delta'] + e['deltacheck']]
942
+ sage: x = (KL.an_element()
943
+ ....: + KL.monomial(4*e[1] + 3*e[2]
944
+ ....: + e['deltacheck'] - 2*e['delta'])); x
945
+ B[2*e[0] + 2*e[1] + 3*e[2]]
946
+ + B[4*e[1] + 3*e[2] - 2*e['delta'] + e['deltacheck']]
930
947
sage: KL.q_project(x, q)
931
948
B[(2, 2, 3)] + 1/q^2*B[(0, 4, 3)]
932
949
@@ -954,7 +971,7 @@ def twisted_demazure_lusztig_operator_on_basis(self, weight, i, q1, q2, conventi
954
971
- ``weight`` -- an element `\lambda` of the weight lattice
955
972
- ``i`` -- an element of the index set
956
973
- ``q1,q2`` -- two elements of the ground ring
957
- - ``convention`` -- "antidominant", "bar", or "dominant" (default: "antidominant")
974
+ - ``convention`` -- `` "antidominant"``, `` "bar"`` , or `` "dominant"`` (default: `` "antidominant"`` )
958
975
959
976
.. SEEALSO:: :meth:`twisted_demazure_lusztig_operators`
960
977
@@ -966,16 +983,23 @@ def twisted_demazure_lusztig_operator_on_basis(self, weight, i, q1, q2, conventi
966
983
sage: q1, q2 = K.gens()
967
984
sage: KL = L.algebra(K)
968
985
sage: Lambda = L.classical().fundamental_weights()
969
- sage: KL.twisted_demazure_lusztig_operator_on_basis(Lambda[1]+2*Lambda[2], 1, q1, q2, convention="dominant")
986
+ sage: KL.twisted_demazure_lusztig_operator_on_basis(
987
+ ....: Lambda[1] + 2*Lambda[2], 1, q1, q2, convention="dominant")
970
988
(-q2)*B[(2, 3, 0, 0)]
971
- sage: KL.twisted_demazure_lusztig_operator_on_basis(Lambda[1]+2*Lambda[2], 2, q1, q2, convention="dominant")
989
+ sage: KL.twisted_demazure_lusztig_operator_on_basis(
990
+ ....: Lambda[1] + 2*Lambda[2], 2, q1, q2, convention="dominant")
972
991
(-q1-q2)*B[(3, 1, 1, 0)] + (-q2)*B[(3, 0, 2, 0)]
973
- sage: KL.twisted_demazure_lusztig_operator_on_basis(Lambda[1]+2*Lambda[2], 3, q1, q2, convention="dominant")
992
+ sage: KL.twisted_demazure_lusztig_operator_on_basis(
993
+ ....: Lambda[1] + 2*Lambda[2], 3, q1, q2, convention="dominant")
974
994
q1*B[(3, 2, 0, 0)]
975
- sage: KL.twisted_demazure_lusztig_operator_on_basis(Lambda[1]+2*Lambda[2], 0, q1, q2, convention="dominant") # optional - sage.graphs
976
- ((q1*q2+q2^2)/q1)*B[(1, 2, 1, 1)] + ((q1*q2+q2^2)/q1)*B[(1, 2, 2, 0)] + q2^2/q1*B[(1, 2, 0, 2)]
977
- + ((q1^2+2*q1*q2+q2^2)/q1)*B[(2, 1, 1, 1)] + ((q1^2+2*q1*q2+q2^2)/q1)*B[(2, 1, 2, 0)]
978
- + ((q1*q2+q2^2)/q1)*B[(2, 1, 0, 2)] + ((q1^2+2*q1*q2+q2^2)/q1)*B[(2, 2, 1, 0)] + ((q1*q2+q2^2)/q1)*B[(2, 2, 0, 1)]
995
+ sage: KL.twisted_demazure_lusztig_operator_on_basis( # optional - sage.graphs
996
+ ....: Lambda[1]+2*Lambda[2], 0, q1, q2, convention="dominant")
997
+ ((q1*q2+q2^2)/q1)*B[(1, 2, 1, 1)] + ((q1*q2+q2^2)/q1)*B[(1, 2, 2, 0)]
998
+ + q2^2/q1*B[(1, 2, 0, 2)] + ((q1^2+2*q1*q2+q2^2)/q1)*B[(2, 1, 1, 1)]
999
+ + ((q1^2+2*q1*q2+q2^2)/q1)*B[(2, 1, 2, 0)]
1000
+ + ((q1*q2+q2^2)/q1)*B[(2, 1, 0, 2)]
1001
+ + ((q1^2+2*q1*q2+q2^2)/q1)*B[(2, 2, 1, 0)]
1002
+ + ((q1*q2+q2^2)/q1)*B[(2, 2, 0, 1)]
979
1003
"""
980
1004
if i == 0 : # should use the special node
981
1005
if convention != "dominant" :
@@ -992,12 +1016,12 @@ def twisted_demazure_lusztig_operators(self, q1, q2, convention="antidominant"):
992
1016
INPUT:
993
1017
994
1018
- ``q1,q2`` -- two elements of the ground ring
995
- - ``convention`` -- "antidominant", "bar", or "dominant" (default: "antidominant")
1019
+ - ``convention`` -- `` "antidominant"``, `` "bar"`` , or `` "dominant"`` (default: `` "antidominant"`` )
996
1020
997
1021
.. WARNING::
998
1022
999
1023
- the code is currently only tested for `q_1q_2=-1`
1000
- - only the "dominant" convention is functional for `i=0`
1024
+ - only the `` "dominant"`` convention is functional for `i=0`
1001
1025
1002
1026
For `T_1,\ldots,T_n`, these operators are the usual
1003
1027
Demazure-Lusztig operators. On the other hand, the
@@ -1088,7 +1112,7 @@ def twisted_demazure_lusztig_operators(self, q1, q2, convention="antidominant"):
1088
1112
sage: cartan_type = CartanType(["BC",1,2])
1089
1113
sage: KL = RootSystem(cartan_type).weight_lattice().algebra(K)
1090
1114
sage: T = KL.twisted_demazure_lusztig_operators(q1,q2, convention="dominant")
1091
- sage: T._test_relations()
1115
+ sage: T._test_relations() # optional - sage.graphs
1092
1116
Traceback (most recent call last):
1093
1117
... tester.assertTrue(Ti(Ti(x,i,-q2),i,-q1).is_zero()) ...
1094
1118
AssertionError: False is not true
@@ -1105,12 +1129,13 @@ def twisted_demazure_lusztig_operators(self, q1, q2, convention="antidominant"):
1105
1129
sage: L0 = L.classical()
1106
1130
sage: T = KL.demazure_lusztig_operators(q1,q2, convention="dominant")
1107
1131
sage: def T0(*l0): return KL.q_project(T[0].on_basis()(L.embed_at_level(L0(l0), 1)), q)
1108
- sage: T0_check_on_basis = KL.T0_check_on_basis(q1, q2, convention="dominant") # optional - sage.graphs
1132
+ sage: T0_check_on_basis = KL.T0_check_on_basis(q1, q2, # optional - sage.graphs
1133
+ ....: convention="dominant")
1109
1134
sage: def T0c(*l0): return T0_check_on_basis(L0(l0))
1110
1135
1111
1136
sage: T0(0,0,1) # not double checked # optional - sage.graphs
1112
1137
((-t+1)/q)*B[(1, 0, 0)] + 1/q^2*B[(2, 0, -1)]
1113
- sage: T0c(0,0,1)
1138
+ sage: T0c(0,0,1) # optional - sage.graphs
1114
1139
(t^2-t)*B[(1, 0, 0)] + (t^2-t)*B[(1, 1, -1)] + t^2*B[(2, 0, -1)] + (t-1)*B[(0, 0, 1)]
1115
1140
"""
1116
1141
T_on_basis = functools .partial (self .twisted_demazure_lusztig_operator_on_basis ,
0 commit comments