yes you can do that with polymake. The client
automorphisms does what you want.
automorphisms(m) -> Array<Pair<Array<Int>,Array<Int>>>
Find the automorphism group of the non-symmetric incidence matrix.
Arguments:
IncidenceMatrix<NonSymmetric> m
Returns Array<Pair<Array<Int>,Array<Int>>> each element encodes a permutation of its rows (first) and columns (second).
So lets walk you through an example. Let us take just the combinatorial information of the 3-cube and plug it into the client:
Code: Select all
polytope > $gen = automorphisms(cube(3)->VERTICES_IN_FACETS);
polytope > print $gen;
(<0 1 4 5 2 3> <0 1 4 5 2 3 6 7>)
(<2 3 0 1 4 5> <0 2 1 3 4 6 5 7>)
(<1 0 2 3 4 5> <1 0 3 2 5 4 7 6>)
What you see here are generators of automorphism group of the cube. Every row is a generator. The first entry in each row is a permutation, which operates on the facets, and the second entry is a permutation, which operates on the vertices. To find out the order of that group, you should take the generators and plug it into a polymake group object. You may do it like this:
Code: Select all
polytope > $genarray = [map {$_->[1]} @$gen];
polytope > $G = new group::Group(GENERATORS=>$genarray);
What this code snippet does is, it takes the second entry of each row and writes it into a new array. This array then gets used as the generators of a group. To see the order of that group you just write:
let me know if that helped, and if this was what you want.