New Features in Release 2.11
Release date: December 23, 2011.
Release 2.11 is now available on the Downloads page. Here are the most important new features:
- improved shared library handling
- new big object
SymmetricPolytope
- computation of linear symmetries via
SymPol
- solves a number of issues arising from empty polytopes
- multitude of minor editions and bugfixes
Improved shared library handling
The support for loading the shared library on demand (via dlopen) is now improved. It is no longer necessary to specify RTLD_GLOBAL, the correct symbol visibility of libpolymake and libperl is now set automatically during the initialization of polymake::Main (see also the discussion in the forum).
New object class: SymmetricPolytope
Release 2.11 provides a new “big object” class SymmetricPolytope
. These objects are defined via their GENERATING_GROUP and the input either of GEN_POINTS (and GEN_INPUT_LINEALITY), or of GEN_INEQUALITIES (and GEN_EQUATIONS). The GENERATING_GROUP property takes a permutation group object group::GroupOfPolytope
acting on the coordinates of the points, or the inequalities, respectively. Having defined a SymmetricPolytope one can ask for the orbits of its vertices and its facets. They are stored as a property of the GENERATING_GROUP. Here is a brief example:
$g=new group::GroupOfPolytope(GENERATORS=>[[1,2,0],[1,0,2]],DOMAIN=>$polytope::domain_OnCoords); $p=new SymmetricPolytope<Rational>(GEN_POINTS=>[[1,1,2,0],[1,1,0,0],[1,0,0,0]],GENERATING_GROUP=>$g); print $p->VERTICES; $p->VISUAL; print $p->GENERATING_GROUP->VERTICES_IN_ORBITS; print $p->GENERATING_GROUP->FACETS_IN_ORBITS;
Computing linear symmetries
Thanks to the new interface to SymPol
, a C++
tool to work with symmetric polyhedra written by Thomas Rehn and Achill Schürmann, polymake
is now able to compute linear symmetries of polyhedra.
$p=new Polytope<Rational>(POINTS=>cube(3)->VERTICES); linear_symmetries($p,1);
The symmetry group is stored in the property GROUP of the polytope $p
. The second parameter means that we are interested either in the permutation group acting on the facets (=0), or on the vertices (=1), as in our example. Asking for the generators of the group acting on the vertices we obtain the following output:
polytope > print $p->GROUP->GENERATORS; 0 4 2 6 1 5 3 7 0 1 4 5 2 3 6 7 7 6 5 4 3 2 1 0 2 6 0 4 3 7 1 5
Another new feature is the computation of stabilizers of sets and vectors. For example, we can compute the subgroup of the linear symmetries of $p
leaving the set {1,2} invariant:
$s12=new Set<Int>(1,2); $stab12=group::stabilizer_of_set($p->GROUP,$s12); print $stab1->GENERATORS;