# SpechtModuleElement -- the class of Specht Module elements

## Description

Polytabloids of shape $p$ are elements of the module of tabloids of the form $\sum_{\tau \in C(T)}\sum_{\sigma \in R(T)}sgn(\tau) \tau\sigma(T)$ where T is a tabloid of shape $p$.

The set of polytabloids generates the Specht Module of shape $p$.

In other words the element in a SpechtModule are linear combinations of polytabloids. This is the way such elements are implemented in this package.

The constructor takes just one polytabloid and a coefficient

 i1 : p = new Partition from {3,2,1} o1 = Partition{3, 2, 1} o1 : Partition i2 : y = youngTableau(p,{2,0,3,4,5,1}) o2 = | 2 0 3 | | 4 5 | | 1 | o2 : YoungTableau i3 : e = spechtModuleElement(y,-2) o3 = -2 | 2 0 3 | | 4 5 | | 1 | o3 : SpechtModuleElement

More complex elements can be made by adding or subtracting previously build elements and multiplying by any element of the base field (which is assumed to be \mathbb{Q}).

 i4 : y2 = youngTableau(p,{5,0,2,4,1,3}) o4 = | 5 0 2 | | 4 1 | | 3 | o4 : YoungTableau i5 : e2 = spechtModuleElement(y2) o5 = | 5 0 2 | | 4 1 | | 3 | o5 : SpechtModuleElement i6 : e+e2 o6 = -2 | 2 0 3 | + | 5 0 2 | | 4 5 | | 4 1 | | 1 | | 3 | o6 : SpechtModuleElement i7 : e-e2 o7 = -2 | 2 0 3 | - | 5 0 2 | | 4 5 | | 4 1 | | 1 | | 3 | o7 : SpechtModuleElement i8 : 3*oo o8 = -6 | 2 0 3 | - 3 | 5 0 2 | | 4 5 | | 4 1 | | 1 | | 3 | o8 : SpechtModuleElement

The element SpechtModuleElement is implemented as a MutableHashTable. The keys are the filling of the tableaux that label the polytabloids and they point to their respective coefficients

 i9 : peek oo o9 = SpechtModuleElement{partition => Partition{3, 2, 1} } values => MutableHashTable{...2...} i10 : peek ooo#values o10 = MutableHashTable{{2, 0, 3, 4, 5, 1} => -6} {5, 0, 2, 4, 1, 3} => -3

The method terms is used to retrieve the polytabloid with their respective coefficient. This is given as a list of pairs of tableaux and coefficients.

 i11 : terms (3*(e-e2)) o11 = {(| 2 0 3 |, -6), (| 5 0 2 |, -3)} | 4 5 | | 4 1 | | 1 | | 3 | o11 : List

A method was implemented to apply a permutation to a SpechtModuleElement. The action is defined by permuting the entries of the tableaux that label the polytabloids.

 i12 : {0,1,2,3,4,5} (3*(e-e2)) o12 = -6 | 2 0 3 | - 3 | 5 0 2 | | 4 5 | | 4 1 | | 1 | | 3 | o12 : SpechtModuleElement i13 : {1,0,2,3,4,5} (3*(e-e2)) o13 = -6 | 2 1 3 | - 3 | 5 1 2 | | 4 5 | | 4 0 | | 0 | | 3 | o13 : SpechtModuleElement

## Functions and methods returning an object of class SpechtModuleElement :

• straighteningAlgorithm -- an algorithm for expressing any polytabloid as linear combinations of standard polytabloids

## Methods that use an object of class SpechtModuleElement :

• sortColumnsTableau(SpechtModuleElement) -- a method for sorting the columns of the tableaux in a SpechtModuleElement
• "List SpechtModuleElement"
• "net(SpechtModuleElement)"
• "QQ * SpechtModuleElement"
• "SpechtModuleElement + SpechtModuleElement"
• "SpechtModuleElement - SpechtModuleElement"
• "terms(SpechtModuleElement)"
• "trim(SpechtModuleElement)"
• "ZZ * SpechtModuleElement"
• "straighteningAlgorithm(SpechtModuleElement)" -- see straighteningAlgorithm -- an algorithm for expressing any polytabloid as linear combinations of standard polytabloids

## For the programmer

The object SpechtModuleElement is a type, with ancestor classes HashTable < Thing.