# 107 Partitions and symbols

The functions described below, used in various parts of the CHEVIE package, sometimes duplicate or have similar functions to some functions in other packages (like the SPECHT package). It is hoped that a review of this area will be done in the future.

The combinatorial objects dealt with here are partitions, beta-sets and symbols. A partition in CHEVIE is a decreasing list of strictly positive integers p1 ≥ p2 ≥ ... pn>0, represented as a GAP3 list. A beta-set is a GAP3 Set of positive integers, up to the shift equivalence relation. This equivalence relation is the transitive closure of the elementary equivalence of [s1,...,sn] and [0,1+s1,...,1+sn]. An equivalence class has exactly one member which does not contain 0: it is called the normalized beta-set. To a partition p1 ≥ p2 ≥... ≥ pn>0 is associated a beta-set, whose normalized representative is pn,pn-1+1,...,p1+n-1. Conversely, to each beta-set is associated a partition, the one giving by the above formula its normalized representative.

A symbol is a list S=[S1,..,Sn] of beta-sets, taken modulo the equivalence relation generated by two elementary equivalences: the simultaneous shift of all beta-sets, and the cyclic permutation of the list (in the particular case where n=2 it is thus an unordered pair of beta-sets). This time there is a unique normalized symbol where 0 is not in the intersection of the Si.

A basic invariant attached to symbols is the rank, defined as

`Sum(S,Sum)-QuoInt((Sum(S,Length)-1)*(Sum(S,Length)-Length(S)+1),2*Length(S))`

Another function attached to symbols is the shape `List(S,Length)`; when n=2 one can assume that S1 has at least the same length as S2 and the difference of cardinals `Length(S[1])-Length(S[2])`, called the defect, is then an invariant of the symbol.

Partitions and pairs of partitions are parameters for characters of the Weyl groups of classical types, and tuples of partitions are parameters for characters of imprimitive complex reflection groups. Symbols with two lines are parameters for the unipotent characters of classical Chevalley groups, and more general symbols for the unipotent characters of Spetses associated to complex reflection groups. The rank of the symbol is the semi-simple rank of the corresponding Chevalley group or Spetses.

Symbols of rank n and defect 0 parameterize characters of the Weyl group of type Dn, and symbols of rank n and defect divisible by 4 parameterize unipotent characters of split orthogonal groups of dimension 2n. Symbols of rank n and defect congruent to 2 (mod 4) parameterize unipotent characters of non-split orthogonal groups of dimension 2n. Symbols of rank n and defect 1 parameterize characters of the Weyl group of type Bn, and finally symbols of rank n and odd defect parameterize unipotent characters of symplectic groups of dimension 2n or orthogonal groups of dimension 2n+1.

## 107.1 Compositions

`Compositions( n[,i] )`

Returns the list of compositions of the integer n (the compositions with i parts if a second argument i is given).

```    gap> Compositions(4);
[ [ 1, 1, 1, 1 ], [ 2, 1, 1 ], [ 1, 2, 1 ], [ 3, 1 ], [ 1, 1, 2 ],
[ 2, 2 ], [ 1, 3 ], [ 4 ] ]
gap> Compositions(4,2);
[ [ 3, 1 ], [ 2, 2 ], [ 1, 3 ] ]```

## 107.2 PartBeta

`PartBeta( b )`

Here b is an increasing list of integers representing a beta-set. `PartBeta` returns corresponding the partition (see the introduction of the section for definitions).

```    gap> PartBeta([0,4,5]);
[ 3, 3 ]```

## 107.3 ShiftBeta

`ShiftBeta( b, n )`

Here b is an increasing list of integers representing a beta-set. `ShiftBeta` returns the set shifted by n (see the introduction of the section for definitions).

```    gap> ShiftBeta([4,5],3);
[ 0, 1, 2, 7, 8 ]```

## 107.4 PartitionTupleToString

`PartitionTupleToString( tuple )`

converts the partition tuple tuple to a string where the partitions are separated by a dot.

```    gap> d:=PartitionTuples(3,2);
[ [ [ 1, 1, 1 ], [  ] ], [ [ 1, 1 ], [ 1 ] ], [ [ 1 ], [ 1, 1 ] ],
[ [  ], [ 1, 1, 1 ] ], [ [ 2, 1 ], [  ] ], [ [ 1 ], [ 2 ] ],
[ [ 2 ], [ 1 ] ], [ [  ], [ 2, 1 ] ], [ [ 3 ], [  ] ],
[ [  ], [ 3 ] ] ]
gap>  for i in d do
>      Print( PartitionTupleToString( i ),"   ");
>  od; Print("\n");
111.   11.1   1.11   .111   21.   1.2   2.1   .21   3.   .3```

## 107.5 SymbolPartitionTuple

`SymbolPartitionTuple( p, s)`

returns the symbol of shape s associated to partition tuple p.

In the most general case, s is a list of positive integers of same length as p and the BetaSets for p are shifted accordingly (a constant integer may be added to s to make the shifts possible).

When s is a positive integer it is interpreted as `[s,0,0,...]` and a negative integer is interpreted as `[0,-s,-s,....]` so when p is a double partition one gets the symbol of defect s associated to p; as other uses the principal series of G(e,1,r) is `SymbolPartitionTuple(p,1)` and that of G(e,e,r) is `SymbolPartitionTuple(p,0)`.

Note. The function works also for periodic p for G(e,e,r) provided s=0.

```    gap> SymbolPartitionTuple([[1,2],[1]],1);
[ [ 2, 2 ], [ 1 ] ]
gap> SymbolPartitionTuple([[1,2],[1]],0);
[ [ 2, 2 ], [ 0, 2 ] ]
gap> SymbolPartitionTuple([[1,2],[1]],-1);
[ [ 2, 2 ], [ 0, 1, 3 ] ]```

## 107.6 Tableaux

`Tableaux(partition tuple or partition)`

returns the list of standard tableaux associated to the partition tuple tuple, that is a filling of the associated young diagrams with the numbers `[1..Sum(tuple,Sum)]` such that the numbers increase across the rows and down the columns. If the imput is a single partition, the standard tableaux for that partition are returned.

```    gap> Tableaux([[2,1],[1]]);
[ [ [ [ 2, 4 ], [ 3 ] ], [ [ 1 ] ] ],
[ [ [ 1, 4 ], [ 3 ] ], [ [ 2 ] ] ],
[ [ [ 1, 4 ], [ 2 ] ], [ [ 3 ] ] ],
[ [ [ 2, 3 ], [ 4 ] ], [ [ 1 ] ] ],
[ [ [ 1, 3 ], [ 4 ] ], [ [ 2 ] ] ],
[ [ [ 1, 2 ], [ 4 ] ], [ [ 3 ] ] ],
[ [ [ 1, 3 ], [ 2 ] ], [ [ 4 ] ] ],
[ [ [ 1, 2 ], [ 3 ] ], [ [ 4 ] ] ] ]
gap> Tableaux([2,2]);
[ [ [ 1, 3 ], [ 2, 4 ] ], [ [ 1, 2 ], [ 3, 4 ] ] ]```

## 107.7 DefectSymbol

`DefectSymbol( s )`

Let s`=[S,T]` be a symbol given as a pair of lists (see the introduction to the section). `DefectSymbol` returns the defect of s, equal to `Length(S)-Length(T)`.

```    gap> DefectSymbol([[1,2],[1,5,6]]);
-1```

## 107.8 RankSymbol

`RankSymbol( s )`

Let s=[S1,..,Sn] be a symbol given as a tuple of lists (see the introduction to the section). `RankSymbol` returns the rank of s.

```    gap> RankSymbol([[1,2],[1,5,6]]);
11```

## 107.9 Symbols

`Symbols( n, d )`

Returns the list of all two-line symbols of defect d and rank n (see the introduction for definitions). If d=0 the symbols with equal entries are returned twice, represented as the first entry, followed by the repetition factor 2 and an ordinal number 0 or 1, so that `Symbols(n, 0)` returns a set of parameters for the characters of the Weyl group of type Dn.

```    gap> Symbols(2,1);
[ [ [ 1, 2 ], [ 0 ] ], [ [ 0, 2 ], [ 1 ] ], [ [ 0, 1, 2 ], [ 1, 2 ] ],
[ [ 2 ], [  ] ], [ [ 0, 1 ], [ 2 ] ] ]
gap> Symbols(4,0);
[ [ [ 1, 2 ], 2, 0 ], [ [ 1, 2 ], 2, 1 ],
[ [ 0, 1, 3 ], [ 1, 2, 3 ] ], [ [ 0, 1, 2, 3 ], [ 1, 2, 3, 4 ] ],
[ [ 1, 2 ], [ 0, 3 ] ], [ [ 0, 2 ], [ 1, 3 ] ],
[ [ 0, 1, 2 ], [ 1, 2, 4 ] ], [ [ 2 ], 2, 0 ], [ [ 2 ], 2, 1 ],
[ [ 0, 1 ], [ 2, 3 ] ], [ [ 1 ], [ 3 ] ], [ [ 0, 1 ], [ 1, 4 ] ],
[ [ 0 ], [ 4 ] ] ]```

## 107.10 SymbolsDefect

`SymbolsDefect( e, r, def , inh)`

Returns the list of symbols defined by Malle for Unipotent characters of imprimitive Spetses. Returns e-symbols of rank r, defect def (equal to 0 or 1) and content equal to inh modulo e. Thus the symbols for unipotent characters of `G(d,1,r)` are given by `SymbolsDefect(d,r,0,1)` and those for unipotent characters of `G(e,e,r)` by `SymbolsDefect(e,r,0,0)`.

```    gap> SymbolsDefect(3,2,0,1);
[ [ [ 1, 2 ], [ 0 ], [ 0 ] ], [ [ 0, 2 ], [ 1 ], [ 0 ] ],
[ [ 0, 2 ], [ 0 ], [ 1 ] ], [ [ 0, 1, 2 ], [ 1, 2 ], [ 0, 1 ] ],
[ [ 0, 1 ], [ 1 ], [ 1 ] ], [ [ 0, 1, 2 ], [ 0, 1 ], [ 1, 2 ] ],
[ [ 2 ], [  ], [  ] ], [ [ 0, 1 ], [ 2 ], [ 0 ] ],
[ [ 0, 1 ], [ 0 ], [ 2 ] ], [ [ 1 ], [ 0, 1, 2 ], [ 0, 1, 2 ] ],
[ [  ], [ 0, 2 ], [ 0, 1 ] ], [ [  ], [ 0, 1 ], [ 0, 2 ] ],
[ [ 0 ], [  ], [ 0, 1, 2 ] ], [ [ 0 ], [ 0, 1, 2 ], [  ] ] ]
gap> List(last,StringSymbol);
[ "(12,0,0)", "(02,1,0)", "(02,0,1)", "(012,12,01)", "(01,1,1)",
"(012,01,12)", "(2,,)", "(01,2,0)", "(01,0,2)", "(1,012,012)",
"(,02,01)", "(,01,02)", "(0,,012)", "(0,012,)" ]
gap> SymbolsDefect(3,3,0,0);
[ [ [ 1 ], [ 1 ], [ 1 ] ], [ [ 0, 1 ], [ 1, 2 ], [ 0, 2 ] ],
[ [ 0, 1 ], [ 0, 2 ], [ 1, 2 ] ],
[ [ 0, 1, 2 ], [ 0, 1, 2 ], [ 1, 2, 3 ] ], [ [ 0 ], [ 1 ], [ 2 ] ],
[ [ 0 ], [ 2 ], [ 1 ] ], [ [ 0, 1 ], [ 0, 1 ], [ 1, 3 ] ],
[ [ 0 ], [ 0 ], [ 3 ] ], [ [ 0, 1, 2 ], [  ], [  ] ],
[ [ 0, 1, 2 ], [ 0, 1, 2 ], [  ] ] ]
gap> List(last,StringSymbol);
[ "(1,1,1)", "(01,12,02)", "(01,02,12)", "(012,012,123)", "(0,1,2)",
"(0,2,1)", "(01,01,13)", "(0,0,3)", "(012,,)", "(012,012,)" ]```

## 107.11 CycPolGenericDegreeSymbol

`CycPolGenericDegreeSymbol( s )`

Let s=[S1,..,Sn] be a symbol given as a tuple of lists (see the introduction to the section). `CycPolGenericDegreeSymbol` returns as a `CycPol` the generic degree of the unipotent character parameterized by s.

```    gap> CycPolGenericDegreeSymbol([[1,2],[1,5,6]]);
1/2q^13P5P6P7P8^2P9P10P11P14P16P18P20P22```

## 107.12 CycPolFakeDegreeSymbol

`CycPolFakeDegreeSymbol( s )`

Let s=[S1,..,Sn] be a symbol given as a tuple of lists (see the introduction to the section). `CycPolFakeDegreeSymbol` returns as a `CycPol` the fake degree of the unipotent character parameterized by s.

```    gap> CycPolFakeDegreeSymbol([[1,5,6],[1,2]]);
q^16P5P7P8P9P10P11P14P16P18P20P22```

## 107.13 LowestPowerGenericDegreeSymbol

`LowestPowerGenericDegreeSymbol( s )`

Let s`=[S1,..,Sn]` be a symbol given as a pair of lists (see the introduction to the section). `LowestPowerGenericDegreeSymbol` returns the valuation of the generic degree of the unipotent character parameterized by s.

```    gap> LowestPowerGenericDegreeSymbol([[1,2],[1,5,6]]);
13```

## 107.14 HighestPowerGenericDegreeSymbol

`HighestPowerGenericDegreeSymbol( s )`

Let s`=[S1,..,Sn]` be a symbol given as a pair of lists (see the introduction to the section). `HighestPowerGenericDegreeSymbol` returns the degree of the generic degree of the unipotent character parameterized by s.

```    gap> HighestPowerGenericDegreeSymbol([[1,5,6],[1,2]]);
91```

gap3-jm
24 Apr 2021