Symplectic group#

This module provides tools for computations of integrals of polynomials on the symplectic group.

Symplectic group Python interface

References

[1] Collins, B., & Śniady, P. (2006). Integration with respect to the Haar measure on unitary, orthogonal and symplectic group. Communications in Mathematical Physics, 264(3), 773-795.

[2] Matsumoto, S. (2013). Weingarten calculus for matrix ensembles associated with compact symmetric spaces. arXiv preprint arXiv:1301.5401.

[3] Macdonald, I. G. (1998). Symmetric functions and Hall polynomials. Oxford university press.

haarpy.symplectic.twisted_spherical_function(permutation, partition)[source]#

Returns the twisted spherical function of the Gelfand pair \((S_{2p}, H_p)\)

Parameters:
  • permutation (Permutation) – A permutation of the symmetric group \(S_{2p}\)

  • partition (tuple[int, ...]) – An integer partition of \(p\)

Returns:

The twisted spherical function of the given permutation

Return type:

Fraction

Raises:
  • TypeError – If partition is not of type tuple

  • TypeError – If permutation of type Permutation

  • ValueError – If the degree of the permutation is odd

  • ValueError – If the partition and the permutation are incompatible

Examples

>>> from sympy.combinatorics import Permutation
>>> from haarpy import twisted_spherical_function
>>> twisted_spherical_function(Permutation(5, 0, 1, 2), (2, 1))
Fraction(1, 4)

See also

haarpy.symmetric.murn_naka_rule()

Implementation of the Murnaghan-Nakayama rule for the characters irreducible representations of the symmetric group

haarpy.symplectic.weingarten_symplectic(permutation, half_dimension)[source]#

Returns the symplectic Weingarten function

Parameters:
  • permutation (Permutation) – A permutation of the symmetric group \(S_{2p}\)

  • half_dimension (Symbol) – Half the dimension of the symplectic group

Returns:

The Weingarten function

Return type:

Expr

Raises:

ValueError – If the degree \(2p\) of the symmetric group \(S_{2p}\) is odd

Examples

>>> from sympy import Symbol
>>> from sympy.combinatorics import Permutation
>>> from haarpy import weingarten_symplectic
>>> d = Symbol("d")
>>> weingarten_symplectic(Permutation(0, 1, 2, 3, 4, 5), 7)
Fraction(-1, 201600)
>>> weingarten_symplectic(Permutation(0, 1, 2, 3, 4, 5), d)
-1/(8*d*(d - 2)*(d - 1)*(d + 1)*(2*d + 1))

See also

haarpy.symplectic.twisted_spherical_function()

Computes the twisted spherical function of the Gelfand pair \((S_{2p}, H_p)\)

haarpy.symplectic.haar_integral_symplectic(sequences, half_dimension)[source]#

Returns integral over symplectic group polynomial sampled at random from the Haar measure

Parameters:
  • sequences (tuple[tuple[Expr, ...], ...]) – Indices of matrix elements

  • half_dimension (Symbol) – Half the dimension of the symplectic group

Returns:

Integral under the Haar measure

Return type:

Expr

Raises:
  • ValueError – If sequences do not contain 2 tuples

  • ValueError – If the sequences are of different lengths

  • TypeError – If half_dimension is neither int or Symbol

  • TypeError – If half_dimension is an int but sequences contain a Symbol

  • ValueError – If not all sequence indices are between 0 and 2*half_dimension - 1

  • TypeError – If sequences containt something else than Expr and int

  • TypeError – If symbolic sequences have the wrong format

Examples

>>> from sympy import Symbol
>>> from haarpy import haar_integral_symplectic
>>> d = Symbol("d")
>>> sequence_1, sequence_2 = (0, 1, 2, d, d+1, d+2), (0, 0, 0, d, d, d)
>>> haar_integral_symplectic((sequence_1, sequence_2), d)
1/(4*d*(d + 1)*(2*d + 1))
>>> d = 4
>>> sequence_1, sequence_2 = (0, 1, 2, d, d+1, d+2), (0, 0, 0, d, d, d)
>>> haar_integral_symplectic((sequence_1, sequence_2), d)
Fraction(1, 720)

See also

haarpy.symmetric.hyperoctahedral_transversal()

Yields the permutations of \(M_{2p}\), the complete set of coset representatives of the quotient group \(S_{2p}/H_p\)

haarpy.symplectic.weingarten_symplectic()

Returns the symplectic Weingarten function