====== 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 ----