====== BigObject Group ======
//from application [[..:group|group]]//\\
\\
Object encoding a finite group.
? Example:
:: Often the group is given by a ''[[..:group:Group#PERMUTATION_ACTION |PERMUTATION_ACTION]]''. A permutation of degree //d// is a vector which lists the //d// images of the numbers 0,1,...,//d//-1.
:: > $action = new PermutationAction(GENERATORS => [[1,0,2],[0,2,1]]);
> $G = new Group(PERMUTATION_ACTION => $action);
> print $G->ORDER;
6
===== Properties =====
==== Symmetry ====
These properties capture information of the object that is concerned with the action of permutation groups.
----
{{anchor:character_table:}}
? **''CHARACTER_TABLE''**
:: The character table. The columns are ordered the same way as [[..:group:Action#CONJUGACY_CLASS_REPRESENTATIVES |CONJUGACY_CLASS_REPRESENTATIVES]]. The rows are ordered the same way as [[..:group:Action#IRREDUCIBLE_DECOMPOSITION |IRREDUCIBLE_DECOMPOSITION]]. NOTE: The current version of polymake only supports real characters, meaning polymake does not support complex characters.
? Type:
:''[[..:common#Matrix |Matrix]]<[[..:common#QuadraticExtension |QuadraticExtension]]<[[..:common#Rational |Rational]]>,[[..:common#NonSymmetric |NonSymmetric]]>''
? Example:
:: The symmetric group on three elements has three conjugacy classes, and three irreduicble representations (trivial, alternating, standard).
:: > print symmetric_group(3)->CHARACTER_TABLE;
1 -1 1
2 0 -1
1 1 1
:: > print symmetric_group(3)->PERMUTATION_ACTION->CONJUGACY_CLASS_REPRESENTATIVES;
0 1 2
1 0 2
1 2 0
:: > print symmetric_group(3)->PERMUTATION_ACTION->IRREDUCIBLE_DECOMPOSITION;
0 1 1
----
{{anchor:conjugacy_class_sizes:}}
? **''CONJUGACY_CLASS_SIZES''**
:: The sizes of the conjugacy classes
? Type:
:''[[..:common#Array |Array]]<[[..:common#Int |Int]]>''
? Example:
:: The symmetric group on three elements has three conjugacy classes, one of size 1, one of size 2, and the last of size 3.
:: > print symmetric_group(3)->CONJUGACY_CLASS_SIZES;
1 3 2
:: > print symmetric_group(3)->PERMUTATION_ACTION->CONJUGACY_CLASSES;
{<0 1 2>}
{<0 2 1> <1 0 2> <2 1 0>}
{<1 2 0> <2 0 1>}
----
{{anchor:facets_action:}}
? **''FACETS_ACTION''**
:: A group action which operates on facets (via their indices). These facets are found in ''[[..:polytope:Cone#FACETS |FACETS]]''. Depending on how the group was constructed, this may or may not be available. To generate the combinatorial FACETS_ACTIONS of a general polytope, call ''[[..:polytope#combinatorial_symmetries |combinatorial_symmetries]]''.
? Type:
:''[[..:group:PermutationAction |PermutationAction]]<[[..:common#Int |Int]],[[..:common#Rational |Rational]]>''
? Example:
:: The facets of a regular cube are affinely identical, i.e. the action of the symmetry group of a regular cube is transitive on the cube's facets.
:: > $c = cube(4, group=>true);
> print $c->GROUP->FACETS_ACTION->ORBITS;
{0 1 2 3 4 5 6 7}
----
{{anchor:facet_normals_action:}}
? **''FACET_NORMALS_ACTION''**
:: A group action which operates on facet normals (via their indices). The facet normals are found in ''[[..:fan:PolyhedralFan#FACET_NORMALS |FACET_NORMALS]]''. Depending on how the group was constructed, this may or may not be available.
? Type:
:''[[..:group:PermutationAction |PermutationAction]]<[[..:common#Int |Int]],[[..:common#Rational |Rational]]>''
? Example:
:: In the following, a fan is constructed whose facet normals are the three standard basis vectors in three dimensional space. The corresponding group can be described as any permutation of the coordinates.
:: > $a = new group::PermutationAction(GENERATORS=>[[1,2,0]]);
> $g = new group::Group(HOMOGENEOUS_COORDINATE_ACTION=>$a);
> $f = new PolyhedralFan(RAYS=>[[1,0,0],[-1,0,0],[0,1,0],[0,-1,0],[0,0,1],[0,0,-1]], MAXIMAL_CONES=>[[0,2,4],[1,2,4],[0,3,4],[1,3,4],[0,2,5],[1,2,5],[0,3,5],[1,3,5]], GROUP=>$g);
> print $f->FACET_NORMALS;
1 0 0
0 1 0
0 0 1
:: > print $f->GROUP->FACET_NORMALS_ACTION->ORBITS;
{0 1 2}
----
{{anchor:homogeneous_coordinate_action:}}
? **''HOMOGENEOUS_COORDINATE_ACTION''**
:: A group action which operates on coordinates, including the '0'-th homogeneous coordinate. This can be used to generate the actions ''[[..:group:Group#INPUT_RAYS_ACTION |INPUT_RAYS_ACTION]]'', ''[[..:group:Group#INEQUALITIES_ACTION |INEQUALITIES_ACTION]]'', ''[[..:group:Group#FACET_NORMALS_ACTION |FACET_NORMALS_ACTION]]'' when the corresponding actions can be interpeted as permutations of coordinates.
? Type:
:''[[..:group:PermutationAction |PermutationAction]]<[[..:common#Int |Int]],[[..:common#Rational |Rational]]>''
? Example:
:: The following induces an action on input rays using a coordinates action.
:: > $g = new group::Group(HOMOGENEOUS_COORDINATE_ACTION=>group::symmetric_group(3)->PERMUTATION_ACTION);
> $f = new PolyhedralFan(INPUT_RAYS=>[[1,0,0],[0,1,0], [0,0,1]], GROUP=>$g);
> print $f->GROUP->INPUT_RAYS_ACTION->GENERATORS;
1 0 2
0 2 1
----
{{anchor:implicit_set_action:}}
? **''IMPLICIT_SET_ACTION''**
:: An action on sets where only one representative for each orbit is stored. Depending on how the group the group was constructed, this may or may not be available.
? Type:
:''[[..:group:ImplicitActionOnSets |ImplicitActionOnSets]]''
? Example:
:: The symmetry group of the cube induces a group action on its maximal simplices.
:: > $c=cube(3, group=>true, character_table=>0);
> print group::induce_implicit_action($c, $c->GROUP->VERTICES_ACTION, $c->GROUP->REPRESENTATIVE_MAX_INTERIOR_SIMPLICES, "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
----
{{anchor:inequalities_action:}}
? **''INEQUALITIES_ACTION''**
:: A group action which operates on inequalities (via their indices). These inequalities are found in ''[[..:polytope:Polytope#INEQUALITIES |INEQUALITIES]]''. Depending on how the group was constructed, this may or may not be available.
? Type:
:''[[..:group:PermutationAction |PermutationAction]]<[[..:common#Int |Int]],[[..:common#Rational |Rational]]>''
? Example:
:: The full symmetry group on a right triangle with inequalties defined by x1 + x2 <= 1, x1 >= -1, x2 >=-1 is given by any permuaton of cooordinates x1, x2.
:: > $a = new group::PermutationAction(GENERATORS=>[[1,0]]);
> $g = new group::Group(HOMOGENEOUS_COORDINATE_ACTION=>$a);
> $p = new Polytope(INEQUALITIES=>[[1,-1,-1],[1,0,1],[1,1,0]], GROUP=>$g);
> print_constraints($p);
Inequalities:
0: -x1 - x2 >= -1
1: x2 >= -1
2: x1 >= -1
3: 0 >= -1
:: > print $p->GROUP->INEQUALITIES_ACTION->ORBITS;
{0}
{1 2}
{3}
----
{{anchor:input_cones_action:}}
? **''INPUT_CONES_ACTION''**
:: A group action which operates on input cones (via their indices). The input cones are found in ''[[..:fan:PolyhedralFan#INPUT_CONES |INPUT_CONES]]''. Depending on how the group was constructed, this may or may not be available.
? Type:
:''[[..:group:PermutationAction |PermutationAction]]<[[..:common#Int |Int]],[[..:common#Rational |Rational]]>''
? Example:
:: The following constructs an explicit group with which the input cones may be permuted.
:: > $a = new group::PermutationAction(GENERATORS=>[[1,0]]);
> $g = new group::Group(INPUT_CONES_ACTION=>$a);
> $f = new PolyhedralFan(INPUT_RAYS=>[[1,0],[-1,0],[0,1]],INPUT_CONES=>[[0,1],[0,2],[1,2]],GROUP=>$g);
> print $f->GROUP->INPUT_CONES_ACTION->ORBITS;
{0 1}
----
{{anchor:input_rays_action:}}
? **''INPUT_RAYS_ACTION''**
:: A group action which operates on input rays (via their indices). These input rays are commonly found in ''[[..:fan:PolyhedralFan#INPUT_RAYS |INPUT_RAYS]]'' or ''[[..:polytope:Cone#INPUT_RAYS |INPUT_RAYS]]''. Depending on how the group was constructed, this may or may not be available. This group action could, for example, correspond to the symmetry group on the input rays.
? Type:
:''[[..:group:PermutationAction |PermutationAction]]<[[..:common#Int |Int]],[[..:common#Rational |Rational]]>''
? Example:
:: The symmetry group of the fan induced by the three standard vectors in three dimensional space corresponds to the full symmetric group on 3 elements acting on the coordinates.
:: > $g = new group::Group(HOMOGENEOUS_COORDINATE_ACTION=>group::symmetric_group(3)->PERMUTATION_ACTION);
> $f = new PolyhedralFan(INPUT_RAYS=>[[1,0,0],[0,1,0], [0,0,1]], GROUP=>$g);
> print $f->GROUP->INPUT_RAYS_ACTION->GENERATORS;
1 0 2
0 2 1
----
{{anchor:maximal_cones_action:}}
? **''MAXIMAL_CONES_ACTION''**
::
? Type:
:''[[..:group:PermutationAction |PermutationAction]]<[[..:common#Int |Int]],[[..:common#Rational |Rational]]>''
? Example:
:: The following fan consists of four rays, and one can generate from one ray all four by 90-degree rotations. The combinatorial symmetry group acts transitively on the maximal cones.
:: > $f = new PolyhedralFan(INPUT_RAYS=>[[1,0],[0,1],[-1,0],[0,-1],[2,0]], INPUT_CONES=>[[0,1,4],[1,2],[2,3],[3,0],[0]]);
> combinatorial_symmetries($f);
> print $f->MAXIMAL_CONES;
{0 1}
{1 2}
{2 3}
{0 3}
:: > print $f->GROUP->MAXIMAL_CONES_ACTION->ORBITS;
{0 1 2 3}
----
{{anchor:order:}}
? **''ORDER''**
:: The number of elements in the group.
? Type:
:''[[..:common#Integer |Integer]]''
? Example:
:: The symmetric group on four elements has 4! = 24 elements.
:: > print symmetric_group(4)->ORDER;
24
----
{{anchor:permutation_action:}}
? **''PERMUTATION_ACTION''**
:: A permutation action on integers. Depending on how the group was constructed, this may or may not be availabe.
? Type:
:''[[..:group:PermutationAction |PermutationAction]]<[[..:common#Int |Int]],[[..:common#Rational |Rational]]>''
? Example:
:: Symmetric groups on n elements have a natural interpretation as a permutation action on the integers 0, 1, ... , n-1.
:: > print symmetric_group(3)->PERMUTATION_ACTION->GENERATORS;
1 0 2
0 2 1
----
{{anchor:rays_action:}}
? **''RAYS_ACTION''**
:: A group action which operates on rays (via their indices). These rays are commonly found in ''[[..:fan:PolyhedralFan#RAYS |RAYS]]'' or ''[[..:polytope:Cone#INPUT_RAYS |INPUT_RAYS]]''. Depending on how the group was constructed, this may or may not be available.
? Type:
:''[[..:group:PermutationAction |PermutationAction]]<[[..:common#Int |Int]],[[..:common#Rational |Rational]]>''
? Example:
:: The following computes the combinatorial symmetry group of a fan, and then gives the corresponding action on its rays.
:: > $f = new PolyhedralFan(INPUT_RAYS=>[[1,1],[1,0],[-1,-1]], INPUT_CONES=>[[0,1],[1,2]]);
> combinatorial_symmetries($f);
> print $f->GROUP->RAYS_ACTION->GENERATORS;
2 1 0
----
{{anchor:regular_representation:}}
? **''REGULAR_REPRESENTATION''**
:: The regular representation of this group. This represents the group using permutation matrices of size ''[[..:group:Group#ORDER |ORDER]]''.
? Type:
:''[[..:group:MatrixActionOnVectors |MatrixActionOnVectors]]<[[..:common#Rational |Rational]]>''
? Example:
:: The following constructs the regular represenation of the alternating group on five elements.
:: > print alternating_group(5)->REGULAR_REPRESENTATION->GENERATORS;
<0 0 1 0 0
1 0 0 0 0
0 1 0 0 0
0 0 0 1 0
0 0 0 0 1
>
<0 0 0 0 1
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
>
----
{{anchor:set_action:}}
? **''SET_ACTION''**
:: A permutation action on a collection of sets of integers. Depending on how the group was constructed, this may or may not be availabe.
? Type:
:''[[..:group:PermutationAction |PermutationAction]]<[[..:common#Set |Set]]<[[..:common#Int |Int]]>,[[..:common#Rational |Rational]]>''
? Example:
:: The symmetry group of the cube induces a group action on its facets. Each facet itself can be described by the set of vertices it contains. The outputs of this group refer to indices of sets.
:: > $f = new Array([[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 induced_action(cube_group(3)->PERMUTATION_ACTION, $f)->GENERATORS;
1 0 2 3 4 5
2 3 0 1 4 5
0 1 4 5 2 3
----
{{anchor:simplexity_lower_bound:}}
? **''SIMPLEXITY_LOWER_BOUND''**
:: The symmetrized version of ''[[..:group:Group#SIMPLEXITY_LOWER_BOUND |SIMPLEXITY_LOWER_BOUND]]''.
? Type:
:''[[..:common#Int |Int]]''
----
{{anchor:vector_action:}}
? **''VECTOR_ACTION''**
:: A group action which operates on vectors (via their indices). These vectors can be found in ''[[..:polytope:VectorConfiguration#VECTORS |VECTORS]]''.
? Type:
:''[[..:group:PermutationAction |PermutationAction]]<[[..:common#Int |Int]],[[..:common#Rational |Rational]]>''
? Example:
:: The following constructs the linear symmetries on the three standard basis vectors in three dimensional space.
:: > $v = new VectorConfiguration(VECTORS=>[[1,0,0],[0,1,0],[0,0,1]]);
> linear_symmetries($v);
> print $v->GROUP->VECTOR_ACTION->GENERATORS;
1 0 2
0 2 1
----