Ramblings about work on subjects uninteresting to most people.


Survey: Sage and Enumerative Combinatorics

The project I'm helping out with for nearly two years now is Sage Math, which has 700k lines of Python code that glue about a hundred open source math software packages into one tool conglomerate. My mathematical interest was always discrete math, and the recent developments in symbolic computation fueling the new experimental mathematics fascinate me especially. This made me naturally gravitating towards advancing symbolics in Sage which, I regret to say, is in a poor (unsexy) state because most main developers of Sage are interested in abstract algebra and number theory, but less in enumerative combinatorics, nor in experimental symbolics, or even calculus.

Experimental symbolics is very successful in discrete math, especially enumerative combinatorics. The natural question arises, how far can Sage help with this branch of symbolics? To this end I present a table of respective mathematical objects and algorithms, and the support Sage has for them. I'm leaning heavily on the recent summary of computer algebra relevant for enumerative combinatorics by Manuel Kauers (published in Bona's new Handbook of Combinatorics).

Sage capability survey (Fall 2015)
Computation in/with Status Comments
Finite fields Documentation
Lattice reduction Documentation
Multivariate polynomials Documentation
Gröbner bases Documentation
Algebraic number arithmetic Documentation
Cylindrical Algebraic
Documentation (from Sage version 6.10.p2 up)
Formal power series Two implementations, a fast one missing most symbolic function expansions, and a slower one with function expansions, but neglected having many bugs. Both not interoperating.---Documentation1, Documentation2
Lazy power series rudimentary---Documentation
Laurent series Only univariate available
Puiseux series
Ore algebras optional package ore-algebra
C-finite sequences Documentation
D-finite sequences
Combinatorial species Documentation
Omega analysis (partitions)
Ehrhart theory incomplete, in progress
Computational group theory available via GAP
Symbolic summation: Gosper's algorithm part of sum(), available via Maxima
Zeilberger's algorithm part of sum(), available via Maxima
Petkovšek's algorithm
Karr's algorithm

Creative telescoping
Holonomic functions