@@ -511,39 +511,39 @@ def demazure_lusztig_operators(self, q1, q2, convention="antidominant"):
511
511
the `Y` s in affine type::
512
512
513
513
sage: K = QQ['q,q1,q2'].fraction_field()
514
- sage: q,q1,q2= K.gens()
514
+ sage: q,q1,q2 = K.gens()
515
515
sage: L = RootSystem(["A",2,1]).ambient_space()
516
516
sage: L0 = L.classical()
517
- sage: Lambda = L.fundamental_weights()
517
+ sage: Lambda = L.fundamental_weights() # optional - sage.graphs
518
518
sage: alphacheck = L0.simple_coroots()
519
519
sage: KL = L.algebra(K)
520
520
sage: T = KL.demazure_lusztig_operators(q1, q2, convention="dominant")
521
521
sage: Y = T.Y()
522
522
sage: alphacheck = Y.keys().alpha() # alpha of coroot lattice is alphacheck
523
523
sage: alphacheck
524
524
Finite family {0: alphacheck[0], 1: alphacheck[1], 2: alphacheck[2]}
525
- sage: x = KL.monomial(Lambda[1]- Lambda[0]); x
525
+ sage: x = KL.monomial(Lambda[1] - Lambda[0]); x # optional - sage.graphs
526
526
B[e[0]]
527
527
528
528
In fact it is not exactly an eigenvector, but the extra
529
529
'\delta` term is to be interpreted as a `q` parameter::
530
530
531
- sage: Y[alphacheck[0]](KL.one())
531
+ sage: Y[alphacheck[0]](KL.one()) # optional - sage.graphs
532
532
q2^2/q1^2*B[0]
533
- sage: Y[alphacheck[1]](x)
533
+ sage: Y[alphacheck[1]](x) # optional - sage.graphs
534
534
((-q2^2)/(-q1^2))*B[e[0] - e['delta']]
535
- sage: Y[alphacheck[2]](x)
535
+ sage: Y[alphacheck[2]](x) # optional - sage.graphs
536
536
(q1/(-q2))*B[e[0]]
537
- sage: KL.q_project(Y[alphacheck[1]](x),q)
537
+ sage: KL.q_project(Y[alphacheck[1]](x),q) # optional - sage.graphs
538
538
((-q2^2)/(-q*q1^2))*B[(1, 0, 0)]
539
539
540
540
sage: KL.q_project(x, q)
541
541
B[(1, 0, 0)]
542
- sage: KL.q_project(Y[alphacheck[0]](x),q)
542
+ sage: KL.q_project(Y[alphacheck[0]](x),q) # optional - sage.graphs
543
543
((-q*q1)/q2)*B[(1, 0, 0)]
544
- sage: KL.q_project(Y[alphacheck[1]](x),q)
544
+ sage: KL.q_project(Y[alphacheck[1]](x),q) # optional - sage.graphs
545
545
((-q2^2)/(-q*q1^2))*B[(1, 0, 0)]
546
- sage: KL.q_project(Y[alphacheck[2]](x),q)
546
+ sage: KL.q_project(Y[alphacheck[2]](x),q) # optional - sage.graphs
547
547
(q1/(-q2))*B[(1, 0, 0)]
548
548
549
549
We now check systematically that the Demazure-Lusztig
@@ -613,21 +613,21 @@ def demazure_lusztig_operator_on_classical_on_basis(self, weight, i, q, q1, q2,
613
613
These operators coincide with the usual Demazure-Lusztig
614
614
operators::
615
615
616
- sage: KL.demazure_lusztig_operator_on_classical_on_basis(L0((2,2)), 1, q, q1, q2)
616
+ sage: KL.demazure_lusztig_operator_on_classical_on_basis(L0((2,2)), 1, q, q1, q2) # optional - sage.graphs
617
617
q1*B[(2, 2)]
618
618
sage: KL0.demazure_lusztig_operator_on_basis(L0((2,2)), 1, q1, q2)
619
619
q1*B[(2, 2)]
620
620
621
- sage: KL.demazure_lusztig_operator_on_classical_on_basis(L0((3,0)), 1, q, q1, q2)
621
+ sage: KL.demazure_lusztig_operator_on_classical_on_basis(L0((3,0)), 1, q, q1, q2) # optional - sage.graphs
622
622
(q1+q2)*B[(1, 2)] + (q1+q2)*B[(2, 1)] + (q1+q2)*B[(3, 0)] + q1*B[(0, 3)]
623
623
sage: KL0.demazure_lusztig_operator_on_basis(L0((3,0)), 1, q1, q2)
624
624
(q1+q2)*B[(1, 2)] + (q1+q2)*B[(2, 1)] + (q1+q2)*B[(3, 0)] + q1*B[(0, 3)]
625
625
626
626
except that we now have an action of `T_0`, which introduces some `q` s::
627
627
628
- sage: KL.demazure_lusztig_operator_on_classical_on_basis(L0((2,2)), 0, q, q1, q2)
628
+ sage: KL.demazure_lusztig_operator_on_classical_on_basis(L0((2,2)), 0, q, q1, q2) # optional - sage.graphs
629
629
q1*B[(2, 2)]
630
- sage: KL.demazure_lusztig_operator_on_classical_on_basis(L0((3,0)), 0, q, q1, q2)
630
+ sage: KL.demazure_lusztig_operator_on_classical_on_basis(L0((3,0)), 0, q, q1, q2) # optional - sage.graphs
631
631
(-q^2*q1-q^2*q2)*B[(1, 2)] + (-q*q1-q*q2)*B[(2, 1)] + (-q^3*q2)*B[(0, 3)]
632
632
"""
633
633
L = self .basis ().keys ()
@@ -663,33 +663,33 @@ def demazure_lusztig_operators_on_classical(self, q, q1, q2, convention="antidom
663
663
sage: KL = L.algebra(K)
664
664
sage: KL0 = KL.classical()
665
665
sage: L0 = KL0.basis().keys()
666
- sage: T = KL.demazure_lusztig_operators_on_classical(q, q1, q2)
666
+ sage: T = KL.demazure_lusztig_operators_on_classical(q, q1, q2) # optional - sage.graphs
667
667
668
668
sage: x = KL0.monomial(L0((3,0))); x
669
669
B[(3, 0)]
670
670
671
671
For `T_1,\dots` we recover the usual Demazure-Lusztig operators::
672
672
673
- sage: T[1](x)
673
+ sage: T[1](x) # optional - sage.graphs
674
674
(q1+q2)*B[(1, 2)] + (q1+q2)*B[(2, 1)] + (q1+q2)*B[(3, 0)] + q1*B[(0, 3)]
675
675
676
676
For `T_0`, we can note that, in the projection, `\delta`
677
677
is mapped to `q`::
678
678
679
- sage: T[0](x)
679
+ sage: T[0](x) # optional - sage.graphs
680
680
(-q^2*q1-q^2*q2)*B[(1, 2)] + (-q*q1-q*q2)*B[(2, 1)] + (-q^3*q2)*B[(0, 3)]
681
681
682
682
Note that there is no translation part, and in particular
683
683
1 is an eigenvector for all `T_i`'s::
684
684
685
- sage: T[0](KL0.one())
685
+ sage: T[0](KL0.one()) # optional - sage.graphs
686
686
q1*B[(0, 0)]
687
- sage: T[1](KL0.one())
687
+ sage: T[1](KL0.one()) # optional - sage.graphs
688
688
q1*B[(0, 0)]
689
689
690
- sage: Y = T.Y()
691
- sage: alphacheck= Y.keys().simple_roots()
692
- sage: Y[alphacheck[0]](KL0.one())
690
+ sage: Y = T.Y() # optional - sage.graphs
691
+ sage: alphacheck = Y.keys().simple_roots() # optional - sage.graphs
692
+ sage: Y[alphacheck[0]](KL0.one()) # optional - sage.graphs
693
693
((-q2)/(q*q1))*B[(0, 0)]
694
694
695
695
Matching with Ion Bogdan's hand calculations from 3/15/2013::
@@ -701,33 +701,33 @@ def demazure_lusztig_operators_on_classical(self, q, q1, q2, convention="antidom
701
701
sage: KL0 = KL.classical()
702
702
sage: L0 = KL0.basis().keys()
703
703
sage: omega = L0.fundamental_weights()
704
- sage: T = KL.demazure_lusztig_operators_on_classical(q, u, -1/u, convention="dominant")
705
- sage: Y = T.Y( )
706
- sage: alphacheck = Y.keys().simple_roots()
707
-
708
- sage: Ydelta = Y[Y.keys().null_root()]
709
- sage: Ydelta.word, Ydelta.signs, Ydelta.scalar
704
+ sage: T = KL.demazure_lusztig_operators_on_classical(q, u, -1/u, # optional - sage.graphs
705
+ ....: convention="dominant" )
706
+ sage: Y = T.Y() # optional - sage.graphs
707
+ sage: alphacheck = Y.keys().simple_roots() # optional - sage.graphs
708
+ sage: Ydelta = Y[Y.keys().null_root()] # optional - sage.graphs
709
+ sage: Ydelta.word, Ydelta.signs, Ydelta.scalar # optional - sage.graphs
710
710
((), (), 1/q)
711
711
712
- sage: Y1 = Y[alphacheck[1]]
713
- sage: Y1.word, Y1.signs, Y1.scalar # This is T_0 T_1 (T_1 acts first, then T_0); Ion gets T_1 T_0
712
+ sage: Y1 = Y[alphacheck[1]] # optional - sage.graphs
713
+ sage: Y1.word, Y1.signs, Y1.scalar # This is T_0 T_1 (T_1 acts first, then T_0); Ion gets T_1 T_0 # optional - sage.graphs
714
714
((1, 0), (1, 1), 1)
715
715
716
- sage: Y0 = Y[alphacheck[0]]
717
- sage: Y0.word, Y0.signs, Y0.scalar # This is 1/q T_1^-1 T_0^-1
716
+ sage: Y0 = Y[alphacheck[0]] # optional - sage.graphs
717
+ sage: Y0.word, Y0.signs, Y0.scalar # This is 1/q T_1^-1 T_0^-1 # optional - sage.graphs
718
718
((0, 1), (-1, -1), 1/q)
719
719
720
720
Note that the following computations use the "dominant" convention::
721
721
722
- sage: T0 = T.Tw(0)
723
- sage: T0(KL0.monomial(omega[1]))
722
+ sage: T0 = T.Tw(0) # optional - sage.graphs
723
+ sage: T0(KL0.monomial(omega[1])) # optional - sage.graphs
724
724
q*u*B[-Lambda[1]] + ((u^2-1)/u)*B[Lambda[1]]
725
- sage: T0(KL0.monomial(2*omega[1]))
725
+ sage: T0(KL0.monomial(2*omega[1])) # optional - sage.graphs
726
726
((q*u^2-q)/u)*B[0] + q^2*u*B[-2*Lambda[1]] + ((u^2-1)/u)*B[2*Lambda[1]]
727
727
728
- sage: T0(KL0.monomial(-omega[1]))
728
+ sage: T0(KL0.monomial(-omega[1])) # optional - sage.graphs
729
729
1/(q*u)*B[Lambda[1]]
730
- sage: T0(KL0.monomial(-2*omega[1]))
730
+ sage: T0(KL0.monomial(-2*omega[1])) # optional - sage.graphs
731
731
((-u^2+1)/(q*u))*B[0] + 1/(q^2*u)*B[2*Lambda[1]]
732
732
733
733
"""
@@ -768,17 +768,17 @@ def T0_check_on_basis(self, q1, q2, convention="antidominant"):
768
768
sage: L = RootSystem(["A",1,1]).ambient_space()
769
769
sage: L0 = L.classical()
770
770
sage: KL = L.algebra(K)
771
- sage: some_weights = L.fundamental_weights()
772
- sage: f = KL.T0_check_on_basis(q1,q2, convention="dominant")
773
- sage: f(L0.zero())
771
+ sage: some_weights = L.fundamental_weights() # optional - sage.graphs
772
+ sage: f = KL.T0_check_on_basis(q1,q2, convention="dominant") # optional - sage.graphs
773
+ sage: f(L0.zero()) # optional - sage.graphs
774
774
(q1+q2)*B[(0, 0)] + q1*B[(1, -1)]
775
775
776
776
sage: L = RootSystem(["A",3,1]).ambient_space()
777
777
sage: L0 = L.classical()
778
778
sage: KL = L.algebra(K)
779
779
sage: some_weights = L0.fundamental_weights()
780
- sage: f = KL.T0_check_on_basis(q1,q2, convention="dominant")
781
- sage: f(L0.zero()) # not checked
780
+ sage: f = KL.T0_check_on_basis(q1,q2, convention="dominant") # optional - sage.graphs
781
+ sage: f(L0.zero()) # not checked # optional - sage.graphs
782
782
(q1+q2)*B[(0, 0, 0, 0)] + q1^3/q2^2*B[(1, 0, 0, -1)]
783
783
784
784
The following results have not been checked::
@@ -800,14 +800,14 @@ def T0_check_on_basis(self, q1, q2, convention="antidominant"):
800
800
sage: q2 = -1/u
801
801
sage: KL = L.algebra(K)
802
802
sage: KL0 = KL.classical()
803
- sage: f = KL.T0_check_on_basis(q1,q2, convention="dominant")
803
+ sage: f = KL.T0_check_on_basis(q1,q2, convention="dominant") # optional - sage.graphs
804
804
sage: T = KL.twisted_demazure_lusztig_operators(q1,q2, convention="dominant")
805
805
806
806
Direct calculation::
807
807
808
- sage: T.Tw(0)(KL0.monomial(L0([0,0])))
808
+ sage: T.Tw(0)(KL0.monomial(L0([0,0]))) # optional - sage.graphs
809
809
((u^2-1)/u)*B[(0, 0)] + u^3*B[(1, 1)]
810
- sage: KL.T0_check_on_basis(q1,q2, convention="dominant")(L0([0,0]))
810
+ sage: KL.T0_check_on_basis(q1,q2, convention="dominant")(L0([0,0])) # optional - sage.graphs
811
811
((u^2-1)/u)*B[(0, 0)] + u^3*B[(1, 1)]
812
812
813
813
Step by step calculation, comparing by hand with Mark Shimozono::
@@ -939,7 +939,7 @@ def q_project(self, x, q):
939
939
denoted `q` is in fact ``q^a[0]`` in Sage's notations,
940
940
to avoid manipulating square roots::
941
941
942
- sage: KL.q_project(KL.monomial(L.null_root()),q)
942
+ sage: KL.q_project(KL.monomial(L.null_root()),q) # optional - sage.graphs
943
943
q^2*B[(0, 0, 0)]
944
944
"""
945
945
L0 = self .classical ()
@@ -972,7 +972,7 @@ def twisted_demazure_lusztig_operator_on_basis(self, weight, i, q1, q2, conventi
972
972
(-q1-q2)*B[(3, 1, 1, 0)] + (-q2)*B[(3, 0, 2, 0)]
973
973
sage: KL.twisted_demazure_lusztig_operator_on_basis(Lambda[1]+2*Lambda[2], 3, q1, q2, convention="dominant")
974
974
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")
975
+ sage: KL.twisted_demazure_lusztig_operator_on_basis(Lambda[1]+2*Lambda[2], 0, q1, q2, convention="dominant") # optional - sage.graphs
976
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
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
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)]
@@ -1032,7 +1032,7 @@ def twisted_demazure_lusztig_operators(self, q1, q2, convention="antidominant"):
1032
1032
(-q1-q2)*B[(0, 0)] + (-q2)*B[(-1, 1)]
1033
1033
sage: T.Ti_inverse_on_basis(alpha[1], 1)
1034
1034
((q1+q2)/(q1*q2))*B[(0, 0)] + 1/q1*B[(-1, 1)] + ((q1+q2)/(q1*q2))*B[(1, -1)]
1035
- sage: T.Ti_on_basis(L0.zero(), 0)
1035
+ sage: T.Ti_on_basis(L0.zero(), 0) # optional - sage.graphs
1036
1036
(q1+q2)*B[(0, 0)] + q1*B[(1, -1)]
1037
1037
1038
1038
The next computations were checked with Mark Shimozono for type `A_2^{(1)}`::
@@ -1105,10 +1105,10 @@ def twisted_demazure_lusztig_operators(self, q1, q2, convention="antidominant"):
1105
1105
sage: L0 = L.classical()
1106
1106
sage: T = KL.demazure_lusztig_operators(q1,q2, convention="dominant")
1107
1107
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")
1108
+ sage: T0_check_on_basis = KL.T0_check_on_basis(q1, q2, convention="dominant") # optional - sage.graphs
1109
1109
sage: def T0c(*l0): return T0_check_on_basis(L0(l0))
1110
1110
1111
- sage: T0(0,0,1) # not double checked
1111
+ sage: T0(0,0,1) # not double checked # optional - sage.graphs
1112
1112
((-t+1)/q)*B[(1, 0, 0)] + 1/q^2*B[(2, 0, -1)]
1113
1113
sage: T0c(0,0,1)
1114
1114
(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)]
0 commit comments