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 *p _{1} ≥ p_{2} ≥ ... p_{n}>0*, represented as a

A symbol is a list *S=[S _{1},..,S_{n}]* 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

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 *S _{1}* has at least the same length as

`Length(S[1])-Length(S[2])`

, called the
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 *D _{n}*, and symbols of rank

- Compositions
- PartBeta
- ShiftBeta
- PartitionTupleToString
- SymbolPartitionTuple
- Tableaux
- DefectSymbol
- RankSymbol
- Symbols
- SymbolsDefect
- CycPolGenericDegreeSymbol
- CycPolFakeDegreeSymbol
- LowestPowerGenericDegreeSymbol
- HighestPowerGenericDegreeSymbol

`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 ] ]

`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 ]

`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 ]

`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

`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 ] ]

`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(`

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.
`tuple`,Sum)]

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 ] ] ]

`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

`RankSymbol( `

`s` )

Let `s`*=[S _{1},..,S_{n}]* be a symbol given as a tuple of lists (see the
introduction to the section).

`RankSymbol`

returns the rank of

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

`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(`

returns a set of parameters for the characters of the Weyl group of type
`n`, 0)*D _{n}*.

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 ] ] ]

`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,)" ]

`CycPolGenericDegreeSymbol( `

`s` )

Let `s`*=[S _{1},..,S_{n}]* 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

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

`CycPolFakeDegreeSymbol( `

`s` )

Let `s`*=[S _{1},..,S_{n}]* 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

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

`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

`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