# Polymake 3.1

Release date March 28th, 2017

### Changelog

– distribution –

- polymake now requires C++ 14 to compile, in particular we need gcc >= 5 or clang >= 3.4 and perl >= 5.16.
- support for perl 5.24.
- fix endianness issue and update struct magic_state (thanks Jerry James)
- support for gcc 6 and clang up to 4.0.
- workaround for compile error under clang 3.8 / xcode 7.3.
- fix incompatibility of the Integer type with libnormaliz on 32bit platforms.
- fix several other minor compilation issues.
- ship test-driver to allow example-code to be tested in the distribution
- boost is now required for the polymake core (for permlib)
- perl module Term-ReadKey is now a requirement

– interfaces –

- include beta jupyter-polymake kernel (thanks: Sebastian Gutsche)
- include nauty interface in minimal tarball.
- warn when neither bliss nor nauty are enabled.
- polydb interface is now in the polymake core
- updated bundled permlib to 0.2.9
- improved interfaces for permlib and sympol:
- both have (experimental) support for using non-bundled installations
- permlib is now a core requirement
- bundled:group disbanded into bundled:sympol / core functionality
- bundled permlib headers are now installed with polymake unless external permlib is used

- improved handling of matrices with zero cols xor zero rows in convex hull interfaces
- improved singular configuration to support pkg-config (e.g. on Ubuntu)

– general –

- polymake can now generate xml schemes and validate the data files against those
- completely refactored Polynomial related data types:
- rings are now uniquely identified by coefficient type, exponent type and number of variables
- variable names are only used for pretty printing and parsing (and can be customized)
- improved parser for polynomials
- types Monomial, Term and Ring are gone

- improved visualization with graphviz and ThreeJS.
- new and improved visualization client svg.
- basic support for output of 3-polytopes in STL file format (common in 3d printing).
- new mechanism for “twin” properties (such as Matroid.DUAL).
- many more example code fragments, in particular for construction of big object types.
- improvements for map and set types:
- only accept ordered types as keys / elements

- various bugfixes and code optimizations.
- fixes for find_permutation with unordered types
- fixes for the TikZ visualization:
- for drawing PointConfigurations.
- for drawing lattice points in polytopes.
- for drawing subobjects

- fixes in singular value decomposition

– fan –

- new big object types SubdivisionOfPoints and SubdivisionOfVectors.
- new subobject SubdivisionOfPoints.TIGHT_SPAN with method VISUAL_METRIC_TIGHT_SPAN for metric tight spans.
- new functions metric_extended_tight_span and metric_tight_span
- new client to compute the k-skeleton of a fan
- secondary_cone is now a method of SubdivisionOfVectors.
- improved heuristics for planar nets of 3-polytopes.
- improved visualization for fans
- fix in regularity client (thanks: Sebastian Gutsche).
- another fix in regularity client.
- fixed issues with empty matrices

– graph –

- completely rewritten and modularized Hasse diagram data types and functions
- new client all_spanningtrees, which finds all spanning trees in a connected graph.
- new properties for bi-,weak and strong connectedness of a (directed) graph.
- new property EIGENVALUES_LAPLACIAN, containing the eigenvalues of the discrete Laplacian of a graph.
- new client for graph homomorphisms
- fixes in hungarian method and tropical::tdet

– group –

- major refactoring of symmetries on objects:
- new big object types Action, PermutationAction, PermutationActionOnSets, ImplicitActionOnSet, MatrixGroupActionOnVector.
- objects with symmetries now contain multiple subobjects of type Group, which in turn can contain different kinds of Actions as properties.

- boost_dynamic_bitset replaced with polymake Bitset

– ideal –

- new client pluecker_ideal, computing the Plücker ideal of the Grassmannian.
- new property INITIAL_FORMS in Ideal.

– matroid –

- refactoring of dual matroids:
- each matroid has a twin property DUAL, which is a matroid again.
- there are various rules, which compute properties in a matroid from its dual.

- new big object type ValuatedMatroid.
- added many new properties to Matroid: AUTOMORPHISM_GROUP, CATENARY_G_INVARIANT, G_INVARIANT, IDENTICALLY_SELF_DUAL, LAMINAR, LATTICE_OF_CYCLIC_FLATS, N_CONNECTED_COMPONENTS, N_CYCLIC_FLATS, N_FLATS, NESTED, SELF_DUAL, SIMPLE, SPLIT, SPLIT_FLACETS, SPARSE_PAVING, TRANSVERSAL, UNIFORM.
- various clients for matroid operations: various lifts and extensions, truncation, union, intersection.
- replaced client “oxley_matroids” by client “special_matroids”, where matroids can be selected by name.
- matroids can now be defined via their flats or cyclic flats.

– polytope –

- updated bundled extension libnormaliz to version 3.1.3.
- new properties in Polytope for excess vertex and facet degree.
- new client face to create Polytope from a face of a polytope
- new visualization for cones
- revived OrbitPolytope type as object specialization PointOrbit
- improved handling of matrices with zero cols xor zero rows
- improved initial rules for polytopes and cones
- improved computation of separating hyperplanes, which allows for weak separation as well.
- improved computation of whether a point lies in (the interior of) a polytope. In particular, this works now for generic polytopes, not just over the rationals.
- removed Object TightSpan. Functionality is now in fan:
- moved functions min_metric, max_metric, thrackle_metric into application fan.
- splitstree is moved to fan as a userfunction

- fix for degenerate hypersimplices (thanks: Charles Wang).
- fixes for solving LPs with lineality
- fixes in TOPCOM interface.
- fixed loading of old data files with OrbitPolytope and SymmetricPolytope

– topaz –

- homology can be computed for arbitrary chaincomplexes, represented by their boundary matrices.
- new clients for computing Vietoris-Rips complexes and filtrations.
- new client for computing persistent homology, both over arbitrary fields and the integers.
- new function to compute boundary matrices of simplicial complexes
- new function to compute betti numbers of chaincomplexes and simplicial complexes
- added property VERTEX_MAP for subcomplexes (e.g. BOUNDARY)
- various fixes and improvements regarding subcomplexes

– tropical –

- renamed tropical::Cone to tropical::Polytope.
- new clients for tropical distance, perimeter, Cramer's rule and variants of the determinant.
- new clients for computing the star of a cycle in bundled extension atint.
- new big object type MatroidRingCycle in bundled extension atint, which represents linear combinations of matroid fans.
- new client for computing tropical linear spaces of arbitrary valuated matroids.
- refactoring of function linear_space