application: group

The application group provides basic functionality for working with permutation groups.

An object of type Group records the abstract properties of the groups that do not depend on any particular representation, such as ORDER, CHARACTER_TABLE and CONJUGACY_CLASS_SIZES.

Moreover, it can contain several subobjects of type PermutationAction, PermutationActionOnSets or ImplicitActionOnSets that encode representations of the group. (We use the terms action and representation interchangeably).

If the group object is not contained inside a polytope::Cone or polytope::Polytope, the representation in question is encoded as a Group::PERMUTATION_ACTION, Group::SET_ACTION or Group::IMPLICIT_SET_ACTION, otherwise it may be encoded more specifically as a RAY_ACTION, FACET_ACTION, COORDINATE_ACTION, etc.

Different representations of the same group are convertible among each other either via specific rules, or by using the function induced_action, for example.

imports from: common

Objects

User Functions

  •  

    These functions are concerned with orbits in groups.

  •  

    With these clients you can produce objects of type Group -- groups from certain parameterized families, as stabilizers of sets in other groups or from different kinds of cycle notations.

    •  
      alternating_group (d) → Group

      Constructs an alternating group of given degree d.

      Parameters
      Intd
      degree of the alternating group
      Returns
      Group
    •  
      cube_group (d) → Group

      Constructs the symmetry group of a d-cube, acting on vertices, for 3 <= d <= 6 (for the moment), along with the corresponding character table and conjugacy class representatives.

      Parameters
      Intd
      the dimension of the cube
      Returns
      Group
    •  
      cyclic_group (d) → Group

      Constructs a cyclic group of given degree d.

      Parameters
      Intd
      degree of the cyclic group
      Returns
      Group
    •  
      dihedral_group (o) → Group

      Constructs a dihedral group of a given order o. If the order is 2, 4, 6, 8, 10, 12, 16, 20 or 24, the character table is exact, otherwise some entries are mutilated rational approximations of algebraic numbers.

      Parameters
      Into
      order of the dihedral group that acts on a regular (o/2)-gon
      Returns
      Group
    •  
      group_from_cyclic_notation0 (generators) → Group

      Constructs a group from a string with generators in cyclic notation. All numbers in the string are 0-based. Example: "(0,2)(1,3)"

      Parameters
      Stringgenerators
      the group generators in cyclic notation
      Returns
      Group
    •  
      group_from_cyclic_notation1 (generators) → Group

      Constructs a group from a string with generators in cyclic notation. All numbers in the string are 1-based. Example: "(1,3)(2,4)"

      Parameters
      Stringgenerators
      the group generators in cyclic notation
      Returns
      Group
    •  
      group_from_permlib_cyclic_notation (gens, degree) → Group

      Constructs a Group from generators given in permlib cyclic notation, i.e., indices separated by whitespace, generators separated by commas.

      Parameters
      Array<String>gens
      generators of the permutation group in permlib cyclic notation
      Intdegree
      the degree of the permutation group
      Returns
      Group
      the group generated by gens
    •  
      stabilizer_of_set (a, S) → Group

      Computes the subgroup of group which stabilizes the given set of indices set.

      Parameters
      PermutationActiona
      the action of a permutation group
      SetS
      the set to be stabilized
      Returns
      Group
      the stabilizer of S w.r.t. a
    •  
      stabilizer_of_vector (a, v) → Group

      Computes the subgroup of G which stabilizes the given vector v.

      Parameters
      PermutationActiona
      the action of a permutation group
      Vectorv
      the vector to be stabilized
      Returns
      Group
      the stabilizer of v w.r.t. a
    •  
      symmetric_group (d) → Group

      Constructs a symmetric group of given degree d.

      Parameters
      Intd
      degree of the symmetric group
      Returns
      Group
  •  

    These functions capture information of the object that is concerned with the action of permutation groups.

    •  
      all_group_elements <Scalar> (action) → Set<Matrix<Scalar>>

      Compute all elements of a given group, expressed as a matrix group action.

      Type Parameters
      Scalar
      S the underlying number type
      Parameters
      MatrixActionOnVectors<Scalar>action
      the action of a permutation group
      Returns
      Set<Matrix<Scalar>>
      G a set containing all group elements

      Example:
      • To generate all elements of the regular representation of S_3, type> print all_group_elements(symmetric_group(3)->REGULAR_REPRESENTATION); <0 0 1 0 1 0 1 0 0 > <0 0 1 1 0 0 0 1 0 > <0 1 0 0 0 1 1 0 0 > <0 1 0 1 0 0 0 0 1 > <1 0 0 0 0 1 0 1 0 > <1 0 0 0 1 0 0 0 1 >
    •  
      col_to_row_action (M, of) → Array

      If the action of some permutations on the entries of the rows maps each row of a matrix to another row we obtain an induced action on the set of rows of the matrix. Considering the rows as points this corresponds to the action on the points induced by the action of some permutations on the coordinates.

      Parameters
      MatrixM
      Arrayof
      permutations
      Returns
      Array
      of permutations
    •  
      conjugacy_class <Element> (action, e) → Set<Element>

      Compute the conjugacy class of a group element under a given action

      Type Parameters
      Element
      E the underlying element type
      Parameters
      Actionaction
      the action of the group
      Elemente
      the element to be acted upon
      Returns
      Set<Element>
      S a set containing the conjugacy class of the element
    •  
      conjugacy_class <Scalar> (action, e) → Set<Matrix<Element>>

      Compute the conjugacy class of a group element under a given action

      Type Parameters
      Scalar
      E the underlying number type
      Parameters
      MatrixActionOnVectors<Scalar>action
      the action of the group
      Matrix<Scalar>e
      the element to be acted upon
      Returns
      Set<Matrix<Element>>
      S a set containing the conjugacy class of the element
    •  
      group_left_multiplication_table (G) → Array<Array<Int>>

      Calculate the left multiplication table of a group action, in which GMT[g][h] = hg

      Parameters
      GroupG
      Options
      Stringaction
      which action to take for the calculation; default PERMUTATION_ACTION
      Returns
      Array<Array<Int>>
      GMT the multiplication table, where the elements of G are ordered by conjugacy classes (if available), else in generated order
    •  
      group_right_multiplication_table (G) → Array<Array<Int>>

      Calculate the right multiplication table of a group action, in which GMT[g][h] = gh

      Parameters
      GroupG
      Options
      Stringaction
      which action to take for the calculation; default PERMUTATION_ACTION
      Returns
      Array<Array<Int>>
      GMT the multiplication table, where the elements of G are ordered by conjugacy classes (if available), else in generated order
    •  
      implicit_character (A) → Array<Int>

      Calculate character of an implicit action

      Parameters
      ImplicitActionOnSetsA
      the given action
      Returns
      Array<Int>
    •  
      induced_action (a, domain) → PermutationActionOnSets

      Given a permutation action a on some indices and an ordered list domain of sets containing these indices, we ask for the permutation action induced by a on this list of sets.

      Parameters
      PermutationActiona
      a permutation action that acts on some indices
      Array<Set<Int>>domain
      a list of sets of indices that a should act on
      Returns
      PermutationActionOnSets

      Examples:
      • Consider the symmetry group of the 3-cube acting on vertices, and induce from it the action on the facets:> $a = cube_group(3)->PERMUTATION_ACTION;> $f = new Array<Set>([[0,2,4,6],[1,3,5,7],[0,1,4,5],[2,3,6,7],[0,1,2,3],[4,5,6,7]]);> print $a->GENERATORS; 1 0 3 2 5 4 7 6 0 2 1 3 4 6 5 7 0 1 4 5 2 3 6 7> print induced_action($a,$f)->GENERATORS; 1 0 2 3 4 5 2 3 0 1 4 5 0 1 4 5 2 3
      • To see what the permutation [0,2,1] induces on the array [{0,1},{0,2}], do the following:> $a = new Array<Set<Int>>(2);> $a->[0] = new Set<Int>(0,1);> $a->[1] = new Set<Int>(0,2);> $p = new PermutationAction(GENERATORS=>[[0,2,1]]);> print induced_action($p,$a)->properties; type: PermutationActionOnSets GENERATORS 1 0
    •  
      induced_permutations (gens, M) → Array<Array<Int>>

      gives the permutations that are induced on the rows of a matrix M by the action of gens on the columns of M

      Parameters
      Array<Array<Int>>gens
      a list of permutations
      MatrixM
      the matrix acted upon
      Options
      Boolhomogeneous_action
      should the generators also act on the homogeneous column? Default False
      Returns
      Array<Array<Int>>
    •  
      induced_permutations (gens, M) → Array<Array<Int>>

      gives the permutations that are induced on the rows of a matrix M by the action of gens on the columns of M

      Parameters
      Array<Matrix<Scalar>>gens
      a list of matrices that act as generators
      MatrixM
      the matrix acted upon
      Options
      Boolhomogeneous_action
      should the generators also act on the homogeneous column? Default False
      Returns
      Array<Array<Int>>
    •  
      induced_permutations (gens, S) → Array<Array<Int>>

      gives the permutations that are induced on an ordered collection S by the action of gens on the elements of S

      Parameters
      Array<Array<Int>>gens
      Array<DomainType>S
      the collection acted upon
      Returns
      Array<Array<Int>>
    •  
      induced_permutations (a, M) → Array<Array<Int>>

      gives the permutations that are induced on the rows of an incidence matrix M by the action of gens on the columns of M

      Parameters
      Array<Array<Int>>a
      the permutation action
      IncidenceMatrixM
      the matrix acted upon
      Returns
      Array<Array<Int>>
    •  
      induced_permutations_set_set (gens, domain) → Array<Array<Int>>

      gives the permutations that are induced on an Array<Set<Set>> by permuting the elements of the inner set

      Parameters
      Array<Array<Int>>gens
      the generators of permutation action
      Array<Set<Set>>domain
      the domain acted upon
      Returns
      Array<Array<Int>>
    •  
      induced_rep (C, A, g) → SparseMatrix

      Calculate the representation of a group element

      Parameters
      polytope::ConeC
      the cone or polytope containing the sets acted upon
      PermutationActionOnSetsA
      the action in question
      Array<Int>g
      the group element, acting on vertices
      Returns
      SparseMatrix
    •  
      induce_implicit_action (original_action, property) → ImplicitActionOnSets

      Construct an implicit action of the action induced on a collection of sets. Only a set of orbit representatives is stored, not the full induced action.

      Parameters
      PermutationActionoriginal_action
      the action of the group on indices
      Stringproperty
      the name of a property that describes an ordered list of sets on which the group should act
      Returns
      ImplicitActionOnSets
      the action of the group on the given property, such that only representatives are stored

      Example:
      • To construct the implicit action of the symmetry group of a cube on its maximal simplices, type:> $c=cube(3, group=>1, character_table=>0);> group::induce_implicit_action($c, $c->GROUP->VERTICES_ACTION, $c->GROUP->REPRESENTATIVE_MAX_INTERIOR_SIMPLICES, "MAX_INTERIOR_SIMPLICES")->properties(); name: induced_implicit_action_of_ray_action_on_MAX_INTERIOR_SIMPLICES type: ImplicitActionOnSets description: induced from ray_action on MAX_INTERIOR_SIMPLICES GENERATORS 1 0 3 2 5 4 7 6 0 2 1 3 4 6 5 7 0 1 4 5 2 3 6 7 DOMAIN_NAME MAX_INTERIOR_SIMPLICES EXPLICIT_ORBIT_REPRESENTATIVES {0 1 2 4} {0 1 2 5} {0 1 2 7} {0 3 5 6}
    •  
      induce_set_action (c, a, domain) → PermutationActionOnSets

      Construct the induced action of a permutation action on a property that is an ordered collection of sets, such as MAX_INTERIOR_SIMPLICES

      Parameters
      polytope::Conec
      the cone or polytope
      PermutationActiona
      a permutation action on, for example, the vertex indices
      Stringdomain
      the property the induced action should act upon
      Returns
      PermutationActionOnSets

      Example:
      • > $c=cube(3, group=>1, character_table=>0);> group::induce_set_action($c, $c->GROUP->VERTICES_ACTION, "MAX_INTERIOR_SIMPLICES")->properties(); name: induced_set_action_of_ray_action_on_MAX_INTERIOR_SIMPLICES type: PermutationActionOnSets description: induced from ray_action on MAX_INTERIOR_SIMPLICES GENERATORS 5 4 7 6 1 0 3 2 11 10 9 8 30 29 32 31 38 40 39 41 33 36 35 34 37 43 42 45 44 13 12 15 14 20 23 22 21 24 16 18 17 19 26 25 28 27 49 48 47 46 55 54 57 56 51 50 53 52 0 2 1 3 12 14 13 15 16 17 18 19 4 6 5 7 8 9 10 11 21 20 22 24 23 25 27 26 28 29 31 30 32 34 33 35 37 36 46 47 48 49 50 52 51 53 38 39 40 41 42 44 43 45 54 56 55 57 0 4 8 9 1 5 10 11 2 3 6 7 16 20 25 26 12 17 21 27 13 18 22 23 28 14 15 19 24 33 38 42 43 29 34 35 39 44 30 36 40 45 31 32 37 41 50 51 54 55 46 47 52 56 48 49 53 57 DOMAIN_NAME MAX_INTERIOR_SIMPLICES
    •  
      invariant_polynomials (a, d)

      Given a matrix action a of a group G on some n-dimensional vector space and a total degree d, calculate the G-invariant polynomials of total degree 0 < degd in n variables. This is done by calculating the a-orbit of all monomials of total degree at most d. By a theorem of Noether, for d = the order of G the output is guaranteed to generate the entire ring of G-invariant polynomials. No effort is made to calculate a basis of the ideal generated by these invariants.

      Parameters
      MatrixActionOnVectorsa
      the matrix action
      Intd
      the maximal degree of the sought invariants
      Options
      Boolaction_is_affine
      is the action a affine, ie., ignore the first row and column of the generating matrices? Default yes

      Example:
      • To calculate the invariants of degree at most six of the matrix action of the symmetry group of the 3-cube, type> $c = cube(3, group=>1);> print join "\n", @{group::invariant_polynomials($c->GROUP->MATRIX_ACTION, 6)}; x_0^2 + x_1^2 + x_2^2 x_0^2*x_1^2 + x_0^2*x_2^2 + x_1^2*x_2^2 x_0^2*x_1^2*x_2^2 x_0^4 + x_1^4 + x_2^4 x_0^4*x_1^2 + x_0^4*x_2^2 + x_0^2*x_1^4 + x_0^2*x_2^4 + x_1^4*x_2^2 + x_1^2*x_2^4 x_0^6 + x_1^6 + x_2^6
    •  
      irreducible_decomposition <Scalar> (character, G) → Vector<Int>

      Calculate the decomposition into irreducible components of a given representation

      Type Parameters
      Scalar
      the number type of the character
      Parameters
      Vector<Scalar>character
      the character of the given representation
      GroupG
      the given group; it needs to know its CHARACTER_TABLE and CONJUGACY_CLASS_SIZES.
      Returns
      Vector<Int>

      Example:
      • Remember that in polymake, we use the terms action and representation interchangeably. To calculate the irreducible decomposition of the vertex action of the symmetry group of the 3-cube, type> $g = cube_group(3); $a = $g->PERMUTATION_ACTION;> print irreducible_decomposition($a->CHARACTER, $g); 1 0 0 1 0 0 0 0 1 1 Thus, the action of the symmetry group on the vertices decomposes into one copy of each of the irreducible representations corresponding to the rows 0,3,8,9 of the character table:> print $g->CHARACTER_TABLE->minor([0,3,8,9],All); 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 1 1 -1 3 1 0 -1 1 -1 0 -1 -1 3 3 1 0 1 -1 1 0 -1 -1 -3 The first entries of these rows say that a decomposes into two 1-dimensional irreps and two 3-dimensional ones. This correctly brings the dimension of the representation a to 8, the number of vertices of the 3-cube.
    •  
      isotypic_basis (G, A, i) → SparseMatrix

      Calculate a basis of the isotypic component given by the i-th irrep

      Parameters
      GroupG
      the acting group, which needs to know its CHARACTER_TABLE
      PermutationActionOnSetsA
      the representation in question, which needs to know its corresponding CONJUGACY_CLASSES
      Inti
      the index of the sought irrep
      Options
      Boolpermute_to_orbit_order
      Should the rows and columns be ordered by orbits? Default 1
      Returns
      SparseMatrix
      a matrix whose rows form a basis of the i-th irrep

      Example:
      • Consider the action of the symmetry group of the 3-cube on the set of facets:> $g = cube_group(3);> $f = new Array<Set>([[0,2,4,6],[1,3,5,7],[0,1,4,5],[2,3,6,7],[0,1,2,3],[4,5,6,7]]);> $a = induced_action($g->PERMUTATION_ACTION, $f);> print irreducible_decomposition($a->CHARACTER, $g) 1 0 0 0 0 1 0 0 0 1 Now we can calculate a basis of the 5th irrep:> print isotypic_basis($g, $a, 5); -1/6 -1/6 1/3 1/3 -1/6 -1/6 1/3 1/3 -1/6 -1/6 -1/6 -1/6
    •  
      isotypic_basis (G, A, i) → SparseMatrix

      Calculate a basis of the isotypic component given by the i-th irrep

      Parameters
      GroupG
      the acting group, which needs to know its CHARACTER_TABLE
      PermutationActionA
      the action in question, which needs to know its corresponding CONJUGACY_CLASSES
      Inti
      the index of the sought irrep
      Options
      Boolpermute_to_orbit_order
      Should the rows and columns be ordered by orbits? Default 1
      Returns
      SparseMatrix
      a matrix whose rows form a basis of the i-th irrep

      Example:
      • Consider the action of the symmetry group of the 3-cube on its vertices. We first calculate its decomposition into irreducible representations via> $g = cube_group(3); $a = $g->PERMUTATION_ACTION;> print irreducible_decomposition($a->CHARACTER, $g); 1 0 0 1 0 0 0 0 1 1 We now calculate a basis of the 3rd irrep:> print isotypic_basis($g,$a,3); 1/8 -1/8 -1/8 1/8 -1/8 1/8 1/8 -1/8
    •  
      isotypic_basis <Scalar> (G, A, i) → SparseMatrix

      Calculate a basis of the isotypic component given by the i-th irrep

      Type Parameters
      Scalar
      S the underlying number type
      Parameters
      GroupG
      the acting group, which needs to know its CHARACTER_TABLE
      MatrixActionOnVectors<Scalar>A
      the matrix action in question, which needs to know its corresponding CONJUGACY_CLASSES
      Inti
      the index of the sought irrep
      Returns
      SparseMatrix
      a matrix whose rows form a basis of the i-th irrep > $s = symmetric_group(3); $a = $s->REGULAR_REPRESENTATION; > print irreducible_decomposition($a->CHARACTER, $s); | 0 1 1 We now calculate a basis of the 1st irrep: > print isotypic_basis($s, $a, 1); | 2/3 -1/3 -1/3 | -1/3 2/3 -1/3 This is consistent with the information collected in the character table: > print $g->CHARACTER_TABLE->row(1); | 2 0 1 In effect, the first entry in this rows says that the dimension of this irrep is 2.
    •  
      isotypic_projector (G, A, i) → SparseMatrix<QuadraticExtension>

      Calculate the projection map into the isotypic component given by the i-th irrep. The map is given by a block matrix, the rows and columns of which are indexed by the domain elements; by default, these are ordered by orbits.

      Parameters
      GroupG
      the acting group
      PermutationActionA
      the action in question
      Inti
      the index of the sought irrep
      Options
      Boolpermute_to_orbit_order
      Should the rows and columns be ordered by orbits? Default 1
      Returns
      SparseMatrix<QuadraticExtension>
      pi the matrix of the projection, the rows and columns of which are indexed by the domain elements; by default; these are ordered by orbits.

      Example:
      • Consider the action of the symmetry group of the 3-cube on its vertices. We first calculate its decomposition into irreducible representations via> $g = cube_group(3); $a = $g->PERMUTATION_ACTION;> print irreducible_decomposition($a->CHARACTER, $g); 1 0 0 1 0 0 0 0 1 1 We now calculate the projection matrices to the irreps number 3 and 8:> $p3 = isotypic_projector($g,$a,3); print $p3, "\n", rank($p3); 1/8 -1/8 -1/8 1/8 -1/8 1/8 1/8 -1/8 -1/8 1/8 1/8 -1/8 1/8 -1/8 -1/8 1/8 -1/8 1/8 1/8 -1/8 1/8 -1/8 -1/8 1/8 1/8 -1/8 -1/8 1/8 -1/8 1/8 1/8 -1/8 -1/8 1/8 1/8 -1/8 1/8 -1/8 -1/8 1/8 1/8 -1/8 -1/8 1/8 -1/8 1/8 1/8 -1/8 1/8 -1/8 -1/8 1/8 -1/8 1/8 1/8 -1/8 -1/8 1/8 1/8 -1/8 1/8 -1/8 -1/8 1/8 1> $p8 = isotypic_projector($g,$a,8); print $p8, "\n", rank($p8); 3/8 -1/8 -1/8 -1/8 -1/8 -1/8 -1/8 3/8 -1/8 3/8 -1/8 -1/8 -1/8 -1/8 3/8 -1/8 -1/8 -1/8 3/8 -1/8 -1/8 3/8 -1/8 -1/8 -1/8 -1/8 -1/8 3/8 3/8 -1/8 -1/8 -1/8 -1/8 -1/8 -1/8 3/8 3/8 -1/8 -1/8 -1/8 -1/8 -1/8 3/8 -1/8 -1/8 3/8 -1/8 -1/8 -1/8 3/8 -1/8 -1/8 -1/8 -1/8 3/8 -1/8 3/8 -1/8 -1/8 -1/8 -1/8 -1/8 -1/8 3/8 3 From this we deduce that the irrep indexed 3 has dimension 1, and the one indexed 8 has dimension 3. This is consistent with the information collected in the character table:> print $g->CHARACTER_TABLE->minor([3,8],All); 1 1 1 -1 -1 -1 -1 1 1 -1 3 1 0 -1 1 -1 0 -1 -1 3 In effect, the first entries in these rows are 1 and 3, respectively.
    •  
      isotypic_projector <Scalar> (G, A, i) → SparseMatrix<QuadraticExtension>

      Calculate the projection map into the isotypic component given by the i-th irrep. Note that the option permute_to_orbit_order makes no sense for matrix actions, so it is always set to 0.

      Type Parameters
      Scalar
      S the underlying number type
      Parameters
      GroupG
      the acting group
      MatrixActionOnVectors<Scalar>A
      the action in question
      Inti
      the index of the sought irrep
      Returns
      SparseMatrix<QuadraticExtension>
      pi the matrix of the projection

      Example:
      • We first construct a matrix action:> $s = symmetric_group(3); $a = $s->REGULAR_REPRESENTATION;> print irreducible_decomposition($a->CHARACTER, $s); 0 1 1 Since we now know that the irreps indexed 1 and 2 appear in the regular representation, we project to one of them:> print isotypic_projector($s, $a, 1); 2/3 -1/3 -1/3 -1/3 2/3 -1/3 -1/3 -1/3 2/3
    •  
      isotypic_supports (a, A) → IncidenceMatrix

      For each isotypic component of a representation a, which of a given array A of sets are supported on it?

      Parameters
      PermutationActionOnSetsa
      the representation in question
      Array<Set>A
      the given array of sets
      Options
      Boolpermute_to_orbit_order
      Should the columns be ordered by orbits? Default 1
      Returns
      IncidenceMatrix
    •  
      isotypic_supports (a, M) → IncidenceMatrix

      For each row of a given SparseMatrix M, to which isotypic components of a representation a does it have a non-zero projection? The columns of the SparseMatrix correspond, in order, to the sets of the representation.

      Parameters
      PermutationActionOnSetsa
      the representation in question
      SparseMatrixM
      the given matrix
      Options
      Boolpermute_to_orbit_order
      Should the columns be ordered by orbits? Default 1
      Returns
      IncidenceMatrix
    •  
      lex_min_representative (G, S) → Set

      Computes the lexicographically smallest representative of a given set with respect to a group

      Parameters
      GroupG
      a symmetry group
      SetS
      a set
      Returns
      Set
      the lex-min representative of S

      Example:
      • To calculate the lex-min representative of the triangle [2,5,7] under the symmetry group of the 3-cube, type> print lex_min_representative(cube_group(3)->PERMUTATION_ACTION, new Set([2,5,7])); {0 1 6}
    •  
      orbit_reps_and_sizes <Container> (generators, S) → Pair<Array<Set<Int>>,Array<Int>>

      Computes the lexicographically smallest representatives of a given array of sets with respect to a group, along with the corresponding orbit sizes

      Type Parameters
      Container
      a container of sets, for example Array<Set> or IncidenceMatrix
      Parameters
      Array<Array<Int>>generators
      the generators of a symmetry group
      ContainerS
      a container of sets, for example Array<Set> or IncidenceMatrix
      Returns
      Pair<Array<Set<Int>>,Array<Int>>
      the lex-min representatives of S, and the sizes of the corresponding orbits

      Example:
      • To calculate the orbits and orbit sizes of an icosidodecahedron, type> $q=polytope::icosidodecahedron();> print orbit_reps_and_sizes($q->GROUP->VERTICES_ACTION->GENERATORS,$q->VERTICES_IN_FACETS); <{0 1 2 4 6} {0 1 3} > 12 20
    •  
      partition_representatives (gens, S) → Array<Int>

      Partition a group into translates of a set stabilizer

      Parameters
      Array<Array<Int>>gens
      the generators of a given group action
      Set<Int>S
      a set
      Returns
      Array<Int>
    •  
      regular_representation (a) → MatrixActionOnVectors

      Calculate the regular representation of a permutation action

      Parameters
      PermutationActiona
      a permutation action
      Returns
      MatrixActionOnVectors
      g the regular representation of a by permutation matrices

      Example:
      • To calculate the regular representation of the symmetric group S_3, type> $s = symmetric_group(3); $s->REGULAR_REPRESENTATION;> print $s->REGULAR_REPRESENTATION->properties(); type: MatrixActionOnVectors<Rational> GENERATORS <0 1 0 1 0 0 0 0 1 > <1 0 0 0 0 1 0 1 0 > CONJUGACY_CLASS_REPRESENTATIVES <1 0 0 0 1 0 0 0 1 > <0 1 0 1 0 0 0 0 1 > <0 0 1 1 0 0 0 1 0 >
    •  
      row_support_sizes (M) → Array<Int>

      How many non-zero entries are there in each row of a SparseMatrix?

      Parameters
      SparseMatrixM
      the given matrix
      Returns
      Array<Int>
    •  
      spans_invariant_subspace (a, S) → Bool

      Does a set S of sparse vectors span an invariant subspace under an implicit group action a?

      Parameters
      ImplicitActionOnSetsa
      the given action
      Array<HashMap<Bitset, Rational>>S
      the sparsely given generating vectors of the subspace
      Options
      Boolverbose
      give a certificate if the answer is False
      Returns
      Bool
    •  
      span_same_subspace (S1, S2) → Bool

      Do two collections S1, S2 of sparse vectors span the same subspace?

      Parameters
      Array<HashMap<SetType, Rational>>S1
      the sparse generating vectors of the first subspace
      Array<HashMap<SetType, Rational>>S2
      the sparse generating vectors of the second subspace
      Returns
      Bool
    •  
      sparse_isotypic_basis (rep, i) → Array<HashMap<Bitset,Rational>>

      Calculate a sparse representation of a basis for an isotypic component. For this, the sets in the representation are listed in order by orbit. In this basis, the projection matrix to the isotypic component decomposes into blocks, one for each orbit.

      Parameters
      PermutationActionOnSetsrep
      the given representation
      Inti
      the index of the irrep that defines the isotypic component
      Options
      Booluse_double
      use inexact arithmetic for reducing the basis; default 0
      Stringfilename
      if defined, the basis will be written to a file with this name, but not returned. Use this option if you expect very large output.
      Returns
      Array<HashMap<Bitset,Rational>>
      Basis. Each entry tells the coefficient for each orbit representative.
    •  
      sparse_isotypic_spanning_set (rep, i) → Array<HashMap<Bitset,Rational>>

      Calculate a sparse representation of a spanning set for an isotypic component. For this, the sets in the representation are listed in order by orbit. In this basis, the projection matrix to the isotypic component decomposes into blocks, one for each orbit.

      Parameters
      PermutationActionOnSetsrep
      the given representation
      Inti
      the index of the irrep that defines the isotypic component
      Options
      Stringfilename
      if defined, the basis will be written to a file with this name, but not returned. Use this option if you expect very large output.
      Returns
      Array<HashMap<Bitset,Rational>>
      SpanningSet. Each entry tells the coefficient for each orbit representative.
    •  
      sparse_isotypic_support (rep, i) → HashSet<Bitset>

      Calculate the support of a sparse representation of a spanning set for an isotypic component.

      Parameters
      PermutationActionOnSetsrep
      the given representation
      Inti
      the index of the irrep that defines the isotypic component
      Options
      Stringfilename
      if defined, the basis will be written to a file with this name, but not returned. Use this option if you expect very large output.
      Bool equivalence_class_only only report representatives of simplices, default true
      Bool index_only only output the indices of the representatives to filename, default true
      Returns
      HashSet<Bitset>
      Support.
  •  

    Miscellaneous functions.

Property Types

  •  
    on_cols

    A template parameter used by action and orbit specifying that the permutation acts on the columns of a matrix.

  •  
    on_container

    A template parameter used by action and orbit specifying that the permutation acts on the given container. It will permute the order of the elements

  •  
    on_elements

    A template parameter used by action and orbit specifying that the permutation acts on the deepest elements inside a given container, which should be of type Int.

  •  
    on_nonhomog_cols

    A template parameter used by action and orbit specifying that the permutation acts on all columns of a matrix, except the '0'-th one, and adjusting the indices of the permutation

  •  
    on_nonhomog_container

    A template parameter used by action and orbit specifying that the permutation acts on the given container. It will permute the order of the elements, leaving the '0'-th one fixed and adjusting the indices of the permutation

  •  
    on_rows

    A template parameter used by action and orbit specifying that the permutation acts on the rows of a matrix.

  •  
    SwitchTable

    UNDOCUMENTED