Orthogonal group#

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

Orthogonal 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.orthogonal.zonal_spherical_function(permutation, partition)[source]#

Returns the zonal 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 zonal spherical function of the given permutation

Return type:

Fraction

Raises:
  • TypeError – If partition is not a tuple

  • TypeError – If permutation is not a permutation

Examples

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

See also

haarpy.symmetric.HyperoctahedralGroup()

Returns the hyperoctahedral group \(H_p\)

haarpy.symmetric.murn_naka_rule()

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

haarpy.orthogonal.weingarten_orthogonal(permutation, orthogonal_dimension)[source]#

Returns the orthogonal Weingarten function

Parameters:
  • permutation (Permutation | tuple[int, ...]) – A permutation of the symmetric group or its coset-type

  • orthogonal_dimension (Symbol) – The dimension of the orthogonal group

Returns:

The Weingarten function

Return type:

Expr

Raises:
  • TypeError – If unitary_dimension has the wrong type

  • TypeError – If permutation has the wrong type

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

Notes

Since the orthogonal Weingarten function is invariant over coset-types, the argument may be given either as a permutation or as its coset-type

Examples

>>> from sympy import Symbol
>>> from sympy.combinatorics import Permutation
>>> from haarpy import weingarten_orthogonal
>>> d = Symbol("d")
>>> weingarten_orthogonal(Permutation(5)(0,1,2), 6)
Fraction(-1, 1200)
>>> weingarten_orthogonal(Permutation(5)(0,1,2), d)
-1/(d*(d - 2)*(d - 1)*(d + 4))
>>> weingarten_orthogonal((2,1), d)
-1/(d*(d - 2)*(d - 1)*(d + 4))

See also

haarpy.orthogonal.zonal_spherical_function()

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

haarpy.symmetric.coset_type()

Returns the coset-type of a given permutation of the symmetric group

haarpy.symmetric.coset_type_representative()

Returns a representative permutation of the symmetric group \(S_{2p}\) for a given input coset-type

haarpy.orthogonal.haar_integral_orthogonal(sequences, orthogonal_dimension)[source]#

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

Parameters:
  • sequences (tuple[tuple[int, ...], ...]) – Sequences of matrix elements

  • orthogonal_dimension (Symbol) – The dimension of the orthogonal group

Returns:

The integral under the Haar measure

Return type:

Expr

Raises:
  • ValueError – If the argument sequences does not contain 2 tuples

  • ValueError – If the sequences are of different lengths

Examples

>>> from sympy import Symbol
>>> from haarpy import haar_integral_orthogonal
>>> d = Symbol("d")
>>> row_indices, column_indices = (0, 0, 1, 1, 2, 2), (0, 2, 2, 1, 1, 0)
>>> haar_integral_orthogonal((row_indices, column_indices), 4)
Fraction(1, 576)
>>> haar_integral_orthogonal((row_indices, column_indices), d)
2/(d*(d - 2)*(d - 1)*(d + 2)*(d + 4))

See also

haarpy.symmetric.coset_type()

Returns the coset-type of a given permutation of the symmetric group

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.orthogonal.weingarten_orthogonal()

Computes the orthogonal Weingarten function