# Representations of the Symmetric Group¶

Todo

• construct the product of two irreducible representations.

• implement Induction/Restriction of representations.

Warning

This code uses a different convention than in Sagan’s book “The Symmetric Group”

class sage.combinat.symmetric_group_representations.SpechtRepresentation(parent, partition)
representation_matrix(permutation)

Return the matrix representing the `permutation` in this irreducible representation.

Note

This method caches the results.

EXAMPLES:

```sage: spc = SymmetricGroupRepresentation([3,1], 'specht')
sage: spc.representation_matrix(Permutation([2,1,3,4]))
[ 0 -1  0]
[-1  0  0]
[ 0  0  1]
sage: spc.representation_matrix(Permutation([3,2,1,4]))
[0 0 1]
[0 1 0]
[1 0 0]
```
scalar_product(u, v)

Return `0` if `u+v` is not a permutation, and the signature of the permutation otherwise.

This is the scalar product of a vertex `u` of the underlying Yang-Baxter graph with the vertex `v` in the ‘dual’ Yang-Baxter graph.

EXAMPLES:

```sage: spc = SymmetricGroupRepresentation([3,2], 'specht')
sage: spc.scalar_product((1,0,2,1,0),(0,3,0,3,0))
-1
sage: spc.scalar_product((1,0,2,1,0),(3,0,0,3,0))
0
```
scalar_product_matrix(permutation=None)

Return the scalar product matrix corresponding to `permutation`.

The entries are given by the scalar products of `u` and `permutation.action(v)`, where `u` is a vertex in the underlying Yang-Baxter graph and `v` is a vertex in the dual graph.

EXAMPLES:

```sage: spc = SymmetricGroupRepresentation([3,1], 'specht')
sage: spc.scalar_product_matrix()
[ 1  0  0]
[ 0 -1  0]
[ 0  0  1]
```
class sage.combinat.symmetric_group_representations.SpechtRepresentations(n, ring=None, cache_matrices=True)
Element

alias of `SpechtRepresentation`

sage.combinat.symmetric_group_representations.SymmetricGroupRepresentation(partition, implementation='specht', ring=None, cache_matrices=True)

The irreducible representation of the symmetric group corresponding to `partition`.

INPUT:

• `partition` – a partition of a positive integer

• `implementation` – string (default: `"specht"`), one of:

• `"seminormal"` - for Young’s seminormal representation

• `"orthogonal"` - for Young’s orthogonal representation

• `"specht"` - for Specht’s representation

• `ring` – the ring over which the representation is defined

• `cache_matrices` – boolean (default: `True`) if `True`, then any representation matrices that are computed are cached

EXAMPLES:

Young’s orthogonal representation: the matrices are orthogonal.

```sage: orth = SymmetricGroupRepresentation([2,1], "orthogonal"); orth
Orthogonal representation of the symmetric group corresponding to [2, 1]
sage: all(a*a.transpose() == a.parent().identity_matrix() for a in orth)
True
```
```sage: orth = SymmetricGroupRepresentation([3,2], "orthogonal"); orth
Orthogonal representation of the symmetric group corresponding to [3, 2]
sage: orth([2,1,3,4,5])
[ 1  0  0  0  0]
[ 0  1  0  0  0]
[ 0  0 -1  0  0]
[ 0  0  0  1  0]
[ 0  0  0  0 -1]
sage: orth([1,3,2,4,5])
[          1           0           0           0           0]
[          0        -1/2 1/2*sqrt(3)           0           0]
[          0 1/2*sqrt(3)         1/2           0           0]
[          0           0           0        -1/2 1/2*sqrt(3)]
[          0           0           0 1/2*sqrt(3)         1/2]
sage: orth([1,2,4,3,5])
[       -1/3 2/3*sqrt(2)           0           0           0]
[2/3*sqrt(2)         1/3           0           0           0]
[          0           0           1           0           0]
[          0           0           0           1           0]
[          0           0           0           0          -1]
```

The Specht representation:

```sage: spc = SymmetricGroupRepresentation([3,2], "specht")
sage: spc.scalar_product_matrix(Permutation([1,2,3,4,5]))
[ 1  0  0  0  0]
[ 0 -1  0  0  0]
[ 0  0  1  0  0]
[ 0  0  0  1  0]
[-1  0  0  0 -1]
sage: spc.scalar_product_matrix(Permutation([5,4,3,2,1]))
[ 1 -1  0  1  0]
[ 0  0  1  0 -1]
[ 0  0  0 -1  1]
[ 0  1 -1 -1  1]
[-1  0  0  0 -1]
sage: spc([5,4,3,2,1])
[ 1 -1  0  1  0]
[ 0  0 -1  0  1]
[ 0  0  0 -1  1]
[ 0  1 -1 -1  1]
[ 0  1  0 -1  1]
sage: spc.verify_representation()
True
```

By default, any representation matrices that are computed are cached:

```sage: spc = SymmetricGroupRepresentation([3,2], "specht")
sage: spc([5,4,3,2,1])
[ 1 -1  0  1  0]
[ 0  0 -1  0  1]
[ 0  0  0 -1  1]
[ 0  1 -1 -1  1]
[ 0  1  0 -1  1]
sage: spc._cache__representation_matrix
{(([5, 4, 3, 2, 1],), ()): [ 1 -1  0  1  0]
[ 0  0 -1  0  1]
[ 0  0  0 -1  1]
[ 0  1 -1 -1  1]
[ 0  1  0 -1  1]}
```

This can be turned off with the keyword `cache_matrices`:

```sage: spc = SymmetricGroupRepresentation([3,2], "specht", cache_matrices=False)
sage: spc([5,4,3,2,1])
[ 1 -1  0  1  0]
[ 0  0 -1  0  1]
[ 0  0  0 -1  1]
[ 0  1 -1 -1  1]
[ 0  1  0 -1  1]
sage: hasattr(spc, '_cache__representation_matrix')
False
```

Note

The implementation is based on the paper [Las].

REFERENCES:

Las(1,2)

Alain Lascoux, ‘Young representations of the symmetric group.’ http://phalanstere.univ-mlv.fr/~al/ARTICLES/ProcCrac.ps.gz

AUTHORS:

• Franco Saliola (2009-04-23)

class sage.combinat.symmetric_group_representations.SymmetricGroupRepresentation_generic_class(parent, partition)

Generic methods for a representation of the symmetric group.

to_character()

Return the character of the representation.

EXAMPLES:

The trivial character:

```sage: rho = SymmetricGroupRepresentation()
sage: chi = rho.to_character(); chi
Character of Symmetric group of order 3! as a permutation group
sage: chi.values()
[1, 1, 1]
sage: all(chi(g) == 1 for g in SymmetricGroup(3))
True
```

The sign character:

```sage: rho = SymmetricGroupRepresentation([1,1,1])
sage: chi = rho.to_character(); chi
Character of Symmetric group of order 3! as a permutation group
sage: chi.values()
[1, -1, 1]
sage: all(chi(g) == g.sign() for g in SymmetricGroup(3))
True
```

The defining representation:

```sage: triv = SymmetricGroupRepresentation()
sage: hook = SymmetricGroupRepresentation([3,1])
sage: def_rep = lambda p : triv(p).block_sum(hook(p)).trace()
sage: list(map(def_rep, Permutations(4)))
[4, 2, 2, 1, 1, 2, 2, 0, 1, 0, 0, 1, 1, 0, 2, 1, 0, 0, 0, 1, 1, 2, 0, 0]
sage: [p.to_matrix().trace() for p in Permutations(4)]
[4, 2, 2, 1, 1, 2, 2, 0, 1, 0, 0, 1, 1, 0, 2, 1, 0, 0, 0, 1, 1, 2, 0, 0]
```
verify_representation()

Verify the representation.

This tests that the images of the simple transpositions are involutions and tests that the braid relations hold.

EXAMPLES:

```sage: spc = SymmetricGroupRepresentation([1,1,1])
sage: spc.verify_representation()
True
sage: spc = SymmetricGroupRepresentation([4,2,1])
sage: spc.verify_representation()
True
```
sage.combinat.symmetric_group_representations.SymmetricGroupRepresentations(n, implementation='specht', ring=None, cache_matrices=True)

Irreducible representations of the symmetric group.

INPUT:

• `n` – positive integer

• `implementation` – string (default: `"specht"`), one of:

• `"seminormal"` - for Young’s seminormal representation

• `"orthogonal"` - for Young’s orthogonal representation

• `"specht"` - for Specht’s representation

• `ring` – the ring over which the representation is defined

• `cache_matrices` – boolean (default: `True`) if `True`, then any representation matrices that are computed are cached

EXAMPLES:

Young’s orthogonal representation: the matrices are orthogonal.

```sage: orth = SymmetricGroupRepresentations(3, "orthogonal"); orth
Orthogonal representations of the symmetric group of order 3! over Symbolic Ring
sage: orth.list()
[Orthogonal representation of the symmetric group corresponding to ,
Orthogonal representation of the symmetric group corresponding to [2, 1],
Orthogonal representation of the symmetric group corresponding to [1, 1, 1]]
sage: orth([2,1])([1,2,3])
[1 0]
[0 1]
```

Young’s seminormal representation.

```sage: snorm = SymmetricGroupRepresentations(3, "seminormal"); snorm
Seminormal representations of the symmetric group of order 3! over Rational Field
sage: sgn = snorm([1,1,1]); sgn
Seminormal representation of the symmetric group corresponding to [1, 1, 1]
sage: list(map(sgn, Permutations(3)))
[, [-1], [-1], , , [-1]]
```

The Specht Representation.

```sage: spc = SymmetricGroupRepresentations(5, "specht"); spc
Specht representations of the symmetric group of order 5! over Integer Ring
sage: spc([3,2])([5,4,3,2,1])
[ 1 -1  0  1  0]
[ 0  0 -1  0  1]
[ 0  0  0 -1  1]
[ 0  1 -1 -1  1]
[ 0  1  0 -1  1]
```

Note

The implementation is based on the paper [Las].

AUTHORS:

• Franco Saliola (2009-04-23)

class sage.combinat.symmetric_group_representations.SymmetricGroupRepresentations_class(n, ring=None, cache_matrices=True)

Generic methods for the CombinatorialClass of irreducible representations of the symmetric group.

cardinality()

Return the cardinality of `self`.

EXAMPLES:

```sage: sp = SymmetricGroupRepresentations(4, "specht")
sage: sp.cardinality()
5
```
class sage.combinat.symmetric_group_representations.YoungRepresentation_Orthogonal(parent, partition)
class sage.combinat.symmetric_group_representations.YoungRepresentation_Seminormal(parent, partition)
class sage.combinat.symmetric_group_representations.YoungRepresentation_generic(parent, partition)

Generic methods for Young’s representations of the symmetric group.

representation_matrix(permutation)

Return the matrix representing `permutation`.

EXAMPLES:

```sage: orth = SymmetricGroupRepresentation([2,1], "orthogonal")
sage: orth.representation_matrix(Permutation([2,1,3]))
[ 1  0]
[ 0 -1]
sage: orth.representation_matrix(Permutation([1,3,2]))
[       -1/2 1/2*sqrt(3)]
[1/2*sqrt(3)         1/2]
```
```sage: norm = SymmetricGroupRepresentation([2,1], "seminormal")
sage: p = PermutationGroupElement([2,1,3])
sage: norm.representation_matrix(p)
[ 1  0]
[ 0 -1]
sage: p = PermutationGroupElement([1,3,2])
sage: norm.representation_matrix(p)
[-1/2  3/2]
[ 1/2  1/2]
```
representation_matrix_for_simple_transposition(i)

Return the matrix representing the transposition that swaps `i` and `i+1`.

EXAMPLES:

```sage: orth = SymmetricGroupRepresentation([2,1], "orthogonal")
sage: orth.representation_matrix_for_simple_transposition(1)
[ 1  0]
[ 0 -1]
sage: orth.representation_matrix_for_simple_transposition(2)
[       -1/2 1/2*sqrt(3)]
[1/2*sqrt(3)         1/2]

sage: norm = SymmetricGroupRepresentation([2,1], "seminormal")
sage: norm.representation_matrix_for_simple_transposition(1)
[ 1  0]
[ 0 -1]
sage: norm.representation_matrix_for_simple_transposition(2)
[-1/2  3/2]
[ 1/2  1/2]
```
class sage.combinat.symmetric_group_representations.YoungRepresentations_Orthogonal(n, ring=None, cache_matrices=True)
Element
class sage.combinat.symmetric_group_representations.YoungRepresentations_Seminormal(n, ring=None, cache_matrices=True)
Element
sage.combinat.symmetric_group_representations.partition_to_vector_of_contents(partition, reverse=False)

Return the “vector of contents” associated to `partition`.

EXAMPLES:

```sage: from sage.combinat.symmetric_group_representations import partition_to_vector_of_contents
sage: partition_to_vector_of_contents([3,2])
(0, 1, 2, -1, 0)
```