Home Software

Docker image for Software in the DFG SPP1489

We have created a "docker image" containing most of the software developed and used in the SPP. The image is available at:


At the moment, it contains the following software:

  • Singular (including flint)
  • Polymake
  • Normaliz
  • 4ti2 (independent of Polymake)
  • GAP together with:
    • homalg (deposited packages)
    • PolymakeInterface
    and the newer develepments in GAP
    • homalg (undeposited packages)
    • CAP
    • SingularInterface
    • NormalizInterface
    • 4ti2gap
  • Julia/nemo

To start a Docker container from the image, you need a new version of docker installed on your computer (cf. https://docs.docker.com/). Then you can start a new docker session with

docker run -it sppcomputeralgebra/sppdocker

After some initialization time you are presented with a shell, where you can execute the CASs listed above as you are used to. The Dockerfile used to create the image is available under


Polymake - a tool to study the combinatorics and the geometry of convex polytopes and polyhedra

Extensions for Polymake:

Normaliz logo

Normaliz is a tool for computations in affine monoids, vector configurations, lattice polytopes, and rational cones. It computes

  • the dual cone of a rational cone (in other words, given generators, Normaliz computes the defining hyperplanes, and vice versa)
  • a placing (or lexicographic) triangulation of a vector configuration (resulting in a triangulation of the cone generated by it)
  • the Hilbert basis of a rational cone
  • the lattice points of a rational polytopes and (unbounded) polyhedra
  • the Hilbert (or Ehrhart) series and the Hilbert (or Ehrhart) (quasi) polynomial under a Z-grading (for example, for rational polytopes)
  • generalized (or weighted) Ehrhart series and Lebesgue integrals of polynomials over rational polytopes via NmzIntegrate (also in the semiopen case)

Normaliz comes with interfaces for Macaulay2 and Singular. Normaliz is accessible from polymake and is used by B. Burton's Regina. Moreover, there exist interfaces for CoCoA, Sage and GAP.

SINGULAR - a computer algebra system for polynomial computations

SINGULAR spielwiese - a profoundly restructured version of SINGULAR which will soon become the official SINGULAR release

LELA - a library for exact linear algebra

SINGULAR Libraries:

  • assprimeszerodim.lib - associated primes of a zero-dimensional ideal, by N. Idrees, G. Pfister, and S. Steidel
  • cisimplicial.lib - determines if the toric ideal of a simplicial toric variety is a complete intersection, by I. Bermejo and I. Garcia-Marco
  • compcox.lib - Cox ring computations, by U. Derenthal, A. Heim, J. Hausen, S. Keicher, and A. Laface
  • ffsolve.lib - multivariate equation solving over finite fields, by G. G. Borus
  • findifs.lib - tools for finite difference schemes, by V. Levandovskyy
  • grobcov.lib - Groebner covers for parametric ideals, by A. Montes and H. Schönemann
  • integralbasis.lib - integral bases in algebraic function fields, by J. Boehm, W. Decker, S. Laplagne, and F. Seelisch
  • JMBTest.lib - J-marked basis test, by M. Ceria
  • JMSConst.lib - contruction of J-marked schemes, by M. Ceria
  • locnormal.lib - normalization of affine domains using local methods, by J. Boehm, W. Decker, S. Laplagne, G. Pfister, A. Steenpass, and S. Steidel
  • modnormal.lib - normalization of affine domains using modular methods, by J. Boehm, W. Decker, S. Laplagne, G. Pfister, A. Steenpass, and S. Steidel
  • modstd.lib - Groebner bases of ideals using modular techniques, by A. Hashemi, G. Pfister, H. Schoenemann, A. Steenpaß, and S. Steidel
  • multigrading.lib - multigraded rings, by B. Bechtold, R. Birkner, L. Kastner, S. Keicher, O. Motsak, and A.-L. Winz
  • numerAlg.lib - numerical algebraic algorithms, by S. Al-Rashed
  • numerDecom.lib - numerical decomposition of ideals, by S. Al-Rashed
  • parallel.lib - tools for parallelization, by A. Steenpaß
  • paraplanecurves.lib - rational parametrization of rational plane curves, by J. Boehm, W. Decker, S. Laplagne, and F. Seelisch
  • polybori.lib - PolyBoRi interface for Singular, by M. Kammermeier and S. Scherer
  • primdecint.lib - primary decomposition of an ideal in the polynomial ring over the integers, by G. Pfister, A. Sadiq, and S. Steidel
  • pyobject.so - Python interface for Singular, by A. Dreyer
  • realclassify.lib - classification of real singularities, by M. Marais and A. Steenpaß
  • realizationMatroids.lib - decides relative realizability for tropical fan curves in 2-dimensional matroidal fans, by A. L. Winstel
  • sagbi.lib - computes SAGBI basis (subalgebra bases analogous to Groebner bases for ideals) of a subalgebra, by J. Hackfeld, G. Pfister, and V. Levandovskyy
  • symodstd.lib - Groebner bases of ideals being invariant under certain variable permutations, by S. Steidel

Non-commutative libraries:

  • bfun.lib - b-functions and Bernstein-Sato polynomials, by D. Andres and V. Levandovskyy
  • dmodapp.lib - applications of algebraic D-modules, by D. Andres and V. Levandovskyy
  • dmodvar.lib - algebraic D-modules for varieties, by D. Andres, V. Levandovskyy, and J. Martin-Morales
  • fpadim.lib - quotient algebras in the letterplace cas, by G. Studzinski
  • freegb.lib - two-sided Groebner bases in free algebras via letterplace, by V. Levandovskyy and G. Studzinski
  • ncfactor.lib - factorization in some noncommutative algebras, by A. Heinle and V. Levandovskyy

cgit logo

The homalg project is a multi-author multi-package open source software project for constructive homological algebra.

Mainly written in GAP4 it allows the use of external programs and other computer algebra systems (CASs) for specific time critical tasks.
Although the central part of the source code is the formalization of abstract notions like Abelian categories, our focus lies on concrete applications ranging from linear control theory to commutative algebra and algebraic geometry.

A big part of the project is already distributed with GAP. The yet undeposited packages and the tested development versions of all packages can be downloaded from the project GitHub homepage.

The core part of the project is the homalg package. It provides an abstract structure and algorithms for abelian categories.

The other modules, so called packages, of the homalg-project implement data structures and algorithms for several mathematical objects, like modules over graded rings or toric varieties.

High level homalg project packages developed during the first period of SSP1489:

GradedRingForHomalg: GradedRingForHomalg adds gradings to the rings in homalg. It is currently capable of grading a ring by a finitely generated abelian group.

GradedModules: The package GradedModules implements graded modules over graded ring. It also supports grading by a finitely generated abelian group.

PolymakeInterface: PolymakeInterface provides a link from GAP to polymake.

Convex: Convex contains structures for objects from convex geometry like fans and polyhedra.

ToricVarieties: Using Convex and GradedModules this part of the homalg project implements data structures and algorithms for toric varieties.

ToolsForHomalg: This module contains concepts used in the implementation of the homalg project. Newest part are so called To-Do-Lists, a tool to propagate knowledge between mathematical objects at runtime, and also for tracing proofs.

All the packages listed above, with all the mentioned features, are part of the current GAP release.

Magma packages:

  • CHAMP - a CHerednik Algebra Magma Package, by Ulrich Thiel
  • IntegralFrobenius - computes an integral matrix of Frobenius on elliptic curves over finite fields, by Tommaso Centeleghe and Panagiotis Tsaknias
  • QaQuotGraphs - computes the action by unit groups of maximal orders in quaternion algebras over F_q(T) on the Bruhat-Tits tree, by Ralf Butenuth
  • WeakModularity - tests weak modularity modulo prime powers, relates to weak level lowering and weak weight lowering, by Panagiotis Tsaknias

Maple packages:

  • AlgebraicThomas - Thomas triangular decomposition for algebraic systems of equations and inequations, by Thomas Bächler
  • CoW - comprehensive weight enumerators of linear codes, by Thomas Bächler
  • DifferentialThomas - Thomas triangular decomposition for systems of polynomial partial differential equations and inequations, by Markus Lange-Hegermann
  • gitfanlib - a package for GIT-fans, by Simon Keicher
  • Involutive - Janet bases and derived structures for finitely presented modules over polynomial algebras, by Daniel Robertz
  • Janet - Janet bases and derived structures for systems of linear partial differential equations, by Daniel Robertz
  • JanetOre - Janet bases and derived structures for finitely presented left modules over Ore algebras, by Daniel Robertz
  • LDA - Janet bases and derived structures for systems of linear difference equations, by Daniel Robertz
  • MDS - a package on Mori Dream Spaces, by Jürgen Hausen and Simon Keicher
  • PSL - determines all quotients isomorphic to PSL(2) of a finitely presented group, by Anna Fabianska
  • QuillenSuslin - computes bases of finitely generated projective modules over polynomial algebras, by Anna Fabianska

Sage modules:

  • Letterplace - a full wrapper for Singular's letterplace functionality, plus positive integral degree weights, complete Groebner bases of weighted homogeneous two-sided ideals, and coercion, by Simon King, Michael Brickenstein, and Burcin Erocal
  • Plural wrapper - a wrapper for Singular's noncommutative Plural functionality, by Michael Brickenstein, Alexander Dreyer, Burcin Erocal, Simon King, and Oleksandr Motsak
  • DegNegLex - supporting PolyBoRi's built-in TermOrder "dp_asc" in Sage, by Alexander Dreyer
  • finite chain rings, by Thomas Feulner, see Ticket #13398
  • canonical forms and automorphism groups of linear codes, by Thomas Feulner, see Ticket #13771
  • Implementation of reflection groups and many related combinatorial structures, see Overview Ticket #20394

Sage packages:

  • p_group_cohomology-2.1.3 - computation of modular cohomology rings of finite groups, by David J. Green and Simon A. King
  • PolyBoRi 0.8.2 - updating PolyBoRi to recent release 0.8.2, by Alexander Dreyer
  • Singular 3-1-5 - updating Singular to recent release 3-1-5, by Jeroen Demeyer, Alexander Dreyer, Dmitrii Pasechnik, Karl-Dieter Crisman, and Jean-Pierre Flori
  • Optional package GAP3+Chevie, by Christian Stump, see Ticket #20107

C++ packages:

  • CodeCan - canonization of linear codes over finite fields and chain rings of cardinality 4, by Thomas Feulner
  • ginv - efficient Janet bases and derived structures for finitely presented modules over polynomial algebras, by Y. A. Blinkov, V. P. Gerdt, S. Jambor, and D. Robertz
  • mct - computation of constant term series for multivariate Laurent polynomials, by Pavel Metelitsyn, part of the project "Monodromy Algorithms in Singular" under the direction of Duco van Straten