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 group::PermutationAction, group::PermutationActionOnSets or group::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::Cone, 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 group::induced_action, for example.
Objects
-
parametrized object used for encoding group actions (representations). GeneratorType is Array<Int> for permutation groups, or Matrix<Scalar> for matrix groups. DomainType is Int for permutation groups, Vector<Scalar> for matrix groups acting on facets or vertices, Set<Int> or Bitset for groups acting on simplices OrbitGeneratorScalarType is the type of the entries of vectors that generate a geometric orbit; default Rational
Properties of Action
-
These properties capture information of the object that is concerned with the action of permutation groups.
-
CHARACTER: common::Array<Int>
The character of the action. The ordering corresponds to the columns of the CHARACTER_TABLE
-
-
CONJUGACY_CLASS_REPRESENTATIVES: common::Array
A set of representatives for each conjugacy class. The order of these representatives must agree with the implicit order of the columns of the CHARACTER_TABLE.
-
DEGREE: common::Int
The degree of the representation. For permutation groups, this is the number of permuted indices, for matrix groups it is the dimension of the vector space the group acts on
-
DOMAIN_NAME: common::String
the name of the property that we act on, for example MAX_INTERIOR_SIMPLICES or INTERIOR_RIDGES
-
EQUATIONS_GENERATORS: common::Matrix
A set of generators for equations, stored as the rows of a matrix. The list of generators may be redundant and non-canonical.
-
EXPLICIT_ORBIT_REPRESENTATIVES: common::Array
the representatives of orbits explicitly, not via their indices
-
EXPLICIT_ORBIT_REPRESENTATIVE_MATRIX: common::Matrix
the representatives of orbits explicitly, not via their indices
-
FACETS_GENERATORS: common::Matrix
A set of generators for facets, stored as the rows of a matrix. The list of generators may be redundant and non-canonical.
-
-
INDEX_OF: common::HashMap
The map giving the index of each group element This is a temporary property; it will not be stored in any file.
-
-
INEQUALITIES_GENERATORS: common::Matrix
A set of generators for inequalities, stored as the rows of a matrix. The list of generators may be redundant and non-canonical.
-
INPUT_LINEALITY_GENERATORS: common::Matrix
A set of generators for input lineality, stored as the rows of a matrix. The list of generators may be redundant and non-canonical.
-
INPUT_RAYS_GENERATORS: common::Matrix
A set of generators for input rays, stored as the rows of a matrix. The list of generators may be redundant and non-canonical.
-
IRREDUCIBLE_DECOMPOSITION: common::Array<Int>
The multiplicities of each irreducible representation in this action. The ordering corresponds to the rows of the CHARACTER_TABLE
-
LINEALITY_SPACE_GENERATORS: common::Matrix
A set of generators for input lineality, stored as the rows of a matrix. The list of generators may be redundant and non-canonical.
-
-
-
-
-
-
-
N_ORBITS: common::Int
The number of orbits in the domain under the group action transform: { N_ORBITS_OF_RAYS, N_ORBITS_OF_FACETS, N_ORBITS_OF_COORDINATES, N_ORBITS_OF_INPUT_RAYS, N_ORBITS_OF_INEQUALITIES } => N_ORBITS
-
N_ORBIT_REPRESENTATIVES: common::Int
the number of representatives of orbits transform: { N_REPRESENTATIVE_RAYS, N_REPRESENTATIVE_FACETS } => N_ORBIT_REPRESENTATIVES
-
-
ORBITS: common::Array<HashSet<Int>>
The orbits of the domain, represented via their indices transform: { RAYS_IN_ORBITS, FACETS_IN_ORBITS, COORDINATES_IN_ORBITS, INPUT_RAYS_IN_ORBITS, INEQUALITIES_IN_ORBITS } => ORBITS
-
ORBIT_REPRESENTATIVES: common::Array<Int>
A collection of representatives for each orbit, represented via their indices transform: { REPRESENTATIVE_RAYS, REPRESENTATIVE_FACETS, REPRESENTATIVE_LINEAR_SPAN, REPRESENTATIVE_AFFINE_HULL } => ORBIT_REPRESENTATIVES
-
-
PERMUTATION_TO_ORBIT_ORDER: common::Array<Int>
A permutation that orders the domain elements by orbits
-
RAYS_GENERATORS: common::Matrix
A set of generators for rays, stored as the rows of a matrix. The list of generators may be redundant and non-canonical.
-
-
-
Object encoding a finite group.
Properties of Group
-
These properties capture information of the object that is concerned with the action of permutation groups.
-
CHARACTER_TABLE: common::Matrix<QuadraticExtension<Rational>, NonSymmetric>
The character table. NOTE: We do not support complex characters, but for the moment only real ones.
-
-
-
HOMOGENEOUS_COORDINATE_ACTION: PermutationAction<Int, Rational>
operates on indices, including the '0'-th homogeneous coordinate
-
IMPLICIT_SET_ACTION: ImplicitActionOnSets
an action on sets where only one representative for each orbit is stored
-
-
-
-
-
-
-
SET_ACTION: PermutationAction<Set<Int>, Rational>
a permutation action on a collection of sets of integers
-
-
SYMMETRIZED_COCIRCUIT_EQUATIONS: polytope::SymmetrizedCocircuitEquations
The cocircuit equations, projected to a certain direct sum of isotypic components
-
-
-
-
derived object encoding an action of a permutation group on a collection of sets, but where only one representative of each orbit is stored explicitly
-
-
derived objects for permutation representations
Properties of PermutationAction
-
-
derived object for permuting collections of sets
User Functions
-
induced_action ()
UNDOCUMENTED
-
These functions are concerned with orbits in groups.
-
are_in_same_orbit (action, vec1, vec2) → Bool
Checks whether vector vec1 and vec2 are in the same orbit with respect to the (coordinate) action of group.
Parameters
PermutationAction action the permutation group acting on coordinatesVector vec1 Vector vec2 Returns
Bool -
orbit <action_type> (G, O) → Set<Object>
The orbit of an object O under a group generated by G.
-
orbit (G, C) → Set<container>
-
orbits_in_orbit_order (action, mat) → List
Computes the orbit of the rows of the matrix mat under the permutation action on coordinates action.
Parameters
PermutationAction action an action of a group of coordinate permutationsMatrix<Scalar> mat some input vectorsReturns
List ( Matrix generated vectors in orbit order, Array orbits of generated vectors) -
orbits_of_action (a) → Array<Set<Int>>
Computes the orbits of the basic set under a.
-
orbits_of_coordinate_action (a, M) → Array<Set<Int>>
Computes the orbits of the vectors (homogenized) of the rows of a matrix M by permuting the coordinates of the vectors (skipping the homogenizing coordinate). The group must act on the set of vectors, and the rows of the matrix must contain the entire orbit.
Parameters
PermutationAction a an action of a group acting by permuting the coordinatesMatrix<Scalar> M a matrix on whose columns the group acts by coordinate permutationReturns
Array<Set<Int>> an array of the orbits under the action on the coordinates -
orbits_of_induced_action (action, inc) → Array<Set<Int>>
Computes the orbits of a set on which an action is induced. The incidences between the domain elements and the elements in the set are given by an incidence matrix inc.
Parameters
PermutationAction action an action of groupIncidenceMatrix inc the incidences between domain elements and elements on which an action is inducedReturns
Array<Set<Int>> an array of the orbits of the induced action -
orbit_permlib (G, S) → Set
-
orbit_permlib (G, S) → Set
-
orbit_representatives (G) → Array<Int>
The indices of one representative for each orbit under the group generated by G.
-
-
Special purpose functions.
-
conjugacy_classes (the, the) → Array<Array<Array<Int>>>
Calculate the conjugacy classes of a group
Parameters
Array<Array<Int>> the generators of the groupArray<Array<Int>> the representatives of the conjugacy classesReturns
Array<Array<Array<Int>>> -
induced_rep (C, A, g) → SparseMatrix
Calculate the representation of a group element
Parameters
polytope::Cone C the cone or polytope containing the sets acted uponPermutationActionOnSets A the action in questionArray<Int> g the group element, acting on verticesReturns
SparseMatrix -
irreducible_decomposition (the, the) → Array<Int>
Calculate the decomposition into irreducible components of a given representation
-
isotypic_basis (the, the) → SparseMatrix
Calculate a basis of the isotypic component given by the i-th irrep
Parameters
PermutationActionOnSets the representation in questionInt the index of the sought irrepReturns
SparseMatrix a matrix whose rows form a basis of the i-th irrep -
isotypic_basis (G, the, the) → SparseMatrix
Calculate a basis of the isotypic component given by the i-th irrep
Parameters
group::Group G the acting groupPermutationAction the action in questionInt the index of the sought irrepReturns
SparseMatrix a matrix whose rows form a basis of the i-th irrep -
isotypic_projector (G, A, i) → SparseMatrix<AccurateFloat>
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 in order of their orbits.
Parameters
group::Group G the acting groupPermutationAction A the action in questionInt i the index of the sought irrepReturns
SparseMatrix<AccurateFloat> -
isotypic_projector (C, A, i) → SparseMatrix
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 in order of their orbits.
Parameters
polytope::Cone C the cone or polytope containing the action in questionPermutationActionOnSets A the action in questionInt i the index of the sought irrepReturns
SparseMatrix -
isotypic_supports (the, the) → IncidenceMatrix
For each isotypic component, which of a given array of sets are supported on it?
Parameters
PermutationActionOnSets the representation in questionArray<Set> the given array of setsReturns
IncidenceMatrix -
isotypic_supports (the, the) → IncidenceMatrix
For each row of a given SparseMatrix, to which isotypic components does it have a non-zero projection? The columns of the SparseMatrix correspond, in order, to the sets of the representation.
Parameters
PermutationActionOnSets the representation in questionSparseMatrix the given matrixReturns
IncidenceMatrix -
row_support_sizes (the) → Array<Int>
How many non-zero entries are there in each row of a SparseMatrix?
-
-
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 (degree) → Group
-
cube_group (dimension) → Group
-
cyclic_group (degree) → Group
-
dihedral_group (order) → Group
-
group_from_cyclic_notation0 (group) → Group
-
group_from_cyclic_notation1 (group) → 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 notationInt degree the degree of the permutation groupReturns
Group the group generated by gens -
stabilizer_of_set (action, set) → Group
Computes the subgroup of group which stabilizes the given set of indices set.
Parameters
PermutationAction action the action of a permutation groupSet set the set to be stabilizedReturns
Group the stabilizer of set w.r.t. group -
stabilizer_of_vector (group, vec) → Group
-
symmetric_group (degree) → Group
-
-
These functions capture information of the object that is concerned with the action of permutation groups.
-
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.
-
group_left_multiplication_table (G) → Array<Array<Int>>
Calculate the left multiplication table of a group action, in which GMT[g][h] = hg
Parameters
Group G Options
String action which action to take for the calculation; default PERMUTATION_ACTIONReturns
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
Group G Options
String action which action to take for the calculation; default PERMUTATION_ACTIONReturns
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 (the) → Array<Int>
Calculate character of an implicit action
-
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 permutationsMatrix M the matrix acted uponOptions
Bool homogeneous_action should the generators also act on the homogeneous column? Default FalseReturns
Array<Array<Int>> -
induced_permutations (gens, the) → Array<Array<Int>>
gives the permutations that are induced on an ordered collection S by the action of gens on the elements of S
-
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 actionIncidenceMatrix M the matrix acted uponReturns
Array<Array<Int>> -
lex_min_representative (G, S) → Set
-
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 actionSet<Int> S a setReturns
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
group::ImplicitActionOnSets a the given actionArray<HashMap<Bitset, Rational>> S the sparsely given generating vectors of the subspaceOptions
Bool verbose give a certificate if the answer is FalseReturns
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 subspaceArray<HashMap<SetType, Rational>> S2 the sparse generating vectors of the second subspaceReturns
Bool -
sparse_isotypic_basis (the, the) → 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
PermutationActionOnSets the given representationInt the index of the irrep that defines the isotypic componentOptions
Bool use_double use inexact arithmetic for reducing the basis; default 0String filename 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 (the, the) → 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
PermutationActionOnSets the given representationInt the index of the irrep that defines the isotypic componentOptions
String filename 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 (the, the) → HashSet<Bitset>
Calculate the support of a sparse representation of a spanning set for an isotypic component.
Parameters
PermutationActionOnSets the given representationInt the index of the irrep that defines the isotypic componentOptions
String filename 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 trueBool index_only only output the indices of the representatives to filename, default trueReturns
HashSet<Bitset> Support.
-
-
Miscellaneous functions.
-
action_from_generators (gens, action)
Computes groups with a permutation action with the basic properties BASE, STRONG_GENERATORS, and TRANSVERSALS.
Parameters
Array<Array<Int>> gens some generators of the groupGroup action the generated action -
action_inv <action_type> (p, O) → Object
The image of an object O under the inverse of a permutation p.
-
action_to_cyclic_notation (a) → String
Returns group generators in 1-based cyclic notation (GAP like, not permlib like notation)
Parameters
PermutationAction a the action of the permutation groupReturns
String group generators, separated by newline and comma -
all_group_elements (action) → Array
Compute all elements of a given group.
Parameters
PermutationAction action the action of a permutation groupReturns
Array <Array<Int> contains all group elements