@@ -65,53 +65,53 @@ def frobenius_image(self):
65
65
66
66
where `\chi` is the character of the `S_n`-module ``self``,
67
67
`p_{\lambda}` is the powersum symmetric function basis element
68
- indexed by `\lambda`, and `\rho(w)` is partition of the cycle type
69
- of `w` . Specifically, this map takes irreducible representations
68
+ indexed by `\lambda`, and `\rho(w)` is the cycle type of `w` as a
69
+ partition . Specifically, this map takes irreducible representations
70
70
indexed by `\lambda` to the Schur function `s_{\lambda}`.
71
71
72
72
EXAMPLES::
73
73
74
74
sage: s = SymmetricFunctions(QQ).s()
75
75
sage: SM = Partition([2,2,1]).specht_module(QQ)
76
- sage: s( SM.frobenius_image() )
76
+ sage: SM.frobenius_image()
77
77
s[2, 2, 1]
78
78
sage: SM = Partition([4,1]).specht_module(CyclotomicField(5))
79
- sage: s( SM.frobenius_image() )
79
+ sage: SM.frobenius_image()
80
80
s[4, 1]
81
81
82
82
We verify the regular representation::
83
83
84
84
sage: from sage.combinat.diagram import Diagram
85
85
sage: D = Diagram([(0,0), (1,1), (2,2), (3,3), (4,4)])
86
- sage: F = s( D.specht_module(QQ).frobenius_image() ); F
86
+ sage: F = D.specht_module(QQ).frobenius_image(); F
87
87
s[1, 1, 1, 1, 1] + 4*s[2, 1, 1, 1] + 5*s[2, 2, 1]
88
88
+ 6*s[3, 1, 1] + 5*s[3, 2] + 4*s[4, 1] + s[5]
89
89
sage: F == sum(StandardTableaux(la).cardinality() * s[la]
90
90
....: for la in Partitions(5))
91
91
True
92
- sage: all(s[la] == s( la.specht_module(QQ).frobenius_image() )
92
+ sage: all(s[la] == la.specht_module(QQ).frobenius_image()
93
93
....: for n in range(1, 5) for la in Partitions(n))
94
94
True
95
95
96
96
sage: D = Diagram([(0,0), (1,1), (1,2), (2,3), (2,4)])
97
97
sage: SM = D.specht_module(QQ)
98
- sage: s( SM.frobenius_image() )
98
+ sage: SM.frobenius_image()
99
99
s[2, 2, 1] + s[3, 1, 1] + 2*s[3, 2] + 2*s[4, 1] + s[5]
100
100
101
101
An example using the tabloid module::
102
102
103
103
sage: SGA = SymmetricGroupAlgebra(QQ, 5)
104
104
sage: TM = SGA.tabloid_module([2, 2, 1])
105
- sage: s( TM.frobenius_image() )
105
+ sage: TM.frobenius_image()
106
106
s[2, 2, 1] + s[3, 1, 1] + 2*s[3, 2] + 2*s[4, 1] + s[5]
107
107
"""
108
108
from sage .combinat .sf .sf import SymmetricFunctions
109
- BR = self . base_ring ()
110
- p = SymmetricFunctions (BR ). p ()
109
+ p = SymmetricFunctions ( QQ ). p ()
110
+ s = SymmetricFunctions (QQ ). s ()
111
111
G = self ._semigroup
112
112
CCR = [(elt , elt .cycle_type ()) for elt in G .conjugacy_classes_representatives ()]
113
- return p .sum (self .representation_matrix (elt ).trace () / la .centralizer_size () * p [la ]
114
- for elt , la in CCR )
113
+ return s ( p .sum (QQ ( self .representation_matrix (elt ).trace () ) / la .centralizer_size () * p [la ]
114
+ for elt , la in CCR ) )
115
115
116
116
# TODO: Move these methods up to methods of general representations
117
117
@@ -493,6 +493,23 @@ def _acted_upon_(self, x, self_on_left=False):
493
493
9*S[[1, 2, 3], [4]] + 17*S[[1, 2, 4], [3]] + 14*S[[1, 3, 4], [2]]
494
494
sage: 4 * SM.an_element()
495
495
12*S[[1, 2, 3], [4]] + 8*S[[1, 2, 4], [3]] + 8*S[[1, 3, 4], [2]]
496
+
497
+ TESTS::
498
+
499
+ sage: SGA = SymmetricGroupAlgebra(QQ, 4)
500
+ sage: SM = SGA.specht_module([3,1])
501
+ sage: SM.an_element() * SGA.an_element()
502
+ Traceback (most recent call last):
503
+ ...
504
+ TypeError: unsupported operand parent(s) for *:
505
+ 'Specht module of [3, 1] over Rational Field'
506
+ and 'Symmetric group algebra of order 4 over Rational Field'
507
+ sage: groups.permutation.Dihedral(3).an_element() * SM.an_element()
508
+ Traceback (most recent call last):
509
+ ...
510
+ TypeError: unsupported operand parent(s) for *:
511
+ 'Dihedral group of order 6 as a permutation group'
512
+ and 'Specht module of [3, 1] over Rational Field'
496
513
"""
497
514
# Check for a scalar first
498
515
ret = super ()._acted_upon_ (x , self_on_left )
@@ -507,6 +524,7 @@ def _acted_upon_(self, x, self_on_left=False):
507
524
return P .retract (P ._SGA (x ) * self .lift ())
508
525
return None
509
526
527
+
510
528
class TabloidModule (CombinatorialFreeModule , SymmetricGroupRepresentation ):
511
529
r"""
512
530
The vector space of all tabloids with the natural symmetric group action.
@@ -595,6 +613,8 @@ def bilinear_form(self, u, v):
595
613
sage: v = sum(TM.basis())
596
614
sage: TM.bilinear_form(u, v)
597
615
7
616
+ sage: TM.bilinear_form(u, TM.zero())
617
+ 0
598
618
"""
599
619
if len (v ) < len (u ):
600
620
u , v = v , u
@@ -622,6 +642,12 @@ def _acted_upon_(self, x, self_on_left):
622
642
+ 12*T[{1, 2}, {3, 4}, {5}] + 15*T[{1, 2}, {3, 5}, {4}] + 15*T[{1, 2}, {4, 5}, {3}]
623
643
sage: 4 * SM.an_element()
624
644
8*T[{1, 2}, {3, 4}, {5}] + 8*T[{1, 2}, {3, 5}, {4}] + 12*T[{1, 2}, {4, 5}, {3}]
645
+ sage: SM.an_element() * SGA.an_element()
646
+ Traceback (most recent call last):
647
+ ...
648
+ TypeError: unsupported operand parent(s) for *:
649
+ 'Tabloid module of [2, 2, 1] over Rational Field'
650
+ and 'Symmetric group algebra of order 5 over Rational Field'
625
651
"""
626
652
# first check for the base action
627
653
ret = super ()._acted_upon_ (x , self_on_left )
@@ -665,14 +691,10 @@ def __init__(self, ambient):
665
691
self ._diagram = ambient ._shape
666
692
SymmetricGroupRepresentation .__init__ (self , ambient ._SGA )
667
693
668
- from sage .combinat .symmetric_group_algebra import e
669
694
ambient_basis = ambient .basis ()
670
695
tabloids = ambient_basis .keys ()
671
696
support_order = list (tabloids )
672
697
673
- G = self ._SGA .basis ().keys ()
674
- BR = self ._SGA .base_ring ()
675
-
676
698
def elt (T ):
677
699
tab = tabloids .from_tableau (T )
678
700
return ambient .sum_of_terms ((tab .symmetric_group_action (sigma ), sigma .sign ())
@@ -720,6 +742,10 @@ def retract(self):
720
742
721
743
sage: Y.retract(X.zero())
722
744
0
745
+ sage: Y.retract(sum(X.basis()))
746
+ Traceback (most recent call last):
747
+ ...
748
+ ValueError: ... is not in the image
723
749
"""
724
750
B = self .basis ()
725
751
COB = matrix ([b .lift ().to_vector () for b in B ]).T
@@ -867,12 +893,19 @@ def __init__(self, specht_module):
867
893
Traceback (most recent call last):
868
894
...
869
895
NotImplementedError: only implemented for 3-regular partitions
896
+
897
+ sage: SGA = SymmetricGroupAlgebra(QQ, 5)
898
+ sage: SM = SGA.specht_module([3,2])
899
+ sage: U = SM.maximal_submodule()
900
+ sage: TestSuite(U).run(skip="_test_cardinality") # skip due to bug for 0 dimensional modules
901
+ sage: U.dimension()
902
+ 0
870
903
"""
871
904
SymmetricGroupRepresentation .__init__ (self , specht_module ._SGA )
872
905
873
906
p = specht_module .base_ring ().characteristic ()
874
907
if p == 0 :
875
- basis = []
908
+ basis = Family ([])
876
909
else :
877
910
TM = specht_module ._ambient
878
911
if not TM ._shape .is_regular (p ):
0 commit comments