ICMS 2026

This is the website for the Software for Enumerative and Analytic Combinatorics session at the International Congress on Mathematical Software 2026 taking place July 20–23 in Waterloo, Ontario.

This session aims to publicize recent algorithms, software implementations, and applications of computational techniques in enumerative combinatorics, analytic combinatorics, and related areas.

Each talk will be 20 minutes, followed by 5 minutes for questions.

The session is organized by Stephen Melczer.

Confirmed Speakers

Schedule

To be posted closer to the conference.

Titles and Abstracts

  • Robert Dougherty-Bliss (Dartmouth College) – Enumerating Balanced Matrices
    In 2023, Manuel Kauers and Christoph Koutschan performed an automated search of the OEIS for previously unknown D-finite sequences. Several of these sequences have since been proven to be D-finite by a mix of arguments that rely on combinatorial arguments or computer algebra computations. I will tell the story of one of a slight modification of one of these: How many $2n$ x $2k$ matrices are there over $\{0, 1\}$ with as many $1$'s as $0$'s in every row and column?

  • Leigh Foster (University of Waterloo) – Tilepaint: visualizations and calculations in tilings, perfect matchings, and polymermer covers
    Tilepaint is a stand alone program that allows the user to explore concepts in tilings and tilability, perfect matchings and n-mer (polymer) covers of a planar graph, and visual bijections between the two areas. It is written in JavaScript and published online, and the source code is available under the AGPLv3 license. It uses a point-and-click interface for users to build tilings of a graph, with three default base graphs (hexagonal, triangular, and square grids). On bipartite graphs it calculates Thurston’s height function, and checks whether it is consistent across the whole tiling (or matching). It also calculates a representative word for each tile from the Conway-Lagarias tiling group. It has the ability to find tile moves on all three default grids and iteratively creates a random tiling from a given input. It will save and load graph configurations, outputting a JSON file that can be used in Python or Sagemath (or other languages). One aim of Tilepaint is to make this kind of mathematical software more accessible. It allows the user to explore complex ideas in tilings and graph covers without needing to know anything about programming, and without having to install anything on a personal device, and since it runs entirely in a browser, it can be used on a computer or on mobile (and supports touch).

  • Casper Asbjørn Eriksen (University of Southern Denmark) – CombOL: a Library for Practical Enumeration and Boltzmann Sampling of Combinatorial Classes
    We present the Combinatorial Objects Library (CombOL), an open-source library written in Rust and Python that provides practical and efficient implementations of techniques from analytic combinatorics, enabling enumeration and Boltzmann sampling of combinatorial classes. Combinatorial classes can be specified either programmatically through Python or Rust, by JSON, or via a concise string notation similar to that of CombStruct. CombOL currently supports classes defined with an arbitrary number of parameters using the following constructions: Union (+), Product (×), Sequence, Cycle, MultiSet, and Diagonal (Δ), with or without cardinality restrictions. Given a class specification, CombOL automatically derives the generating functions by applying the symbolic transfer theorems. From these, the counting sequence of a class can be produced using the method of Pivoteau et al., which ensures quadratic convergence. The library also supports exact or approximate-size Boltzmann rejection sampling with adaptive numerical precision. Control parameters may be provided by the user, or determined automatically using the parameter tuning method of Bendkowski et al. To ensure statistical correctness while avoiding unnecessary numerical overhead, the numerical precision of the oracles is increased dynamically, eliminating statistical bias due to floating-point errors. Additionally, CombOL introduces a novel rejection sampling scheme that continuously tracks bounds on the size of the partially generated structure in all variables, enabling early rejection in many cases. The sampler operates on a compact intermediate representation and constructs the final object only after a sample is accepted, reducing overhead for rejected attempts. A key feature of the sampler is the ability to integrate into other workflows. Through the Python interface, users can associate combinatorial constructions with arbitrary Python functions constructing user-selected types. This allows the uniform random generation of domain-specific objects, such as graphs, chemical structure representations, or other complex data types. Compared to existing software such as ‘CombStruct’ and ‘Boltzmann Brain’, CombOL places a particular focus on accessibility, being built on free and open source software, as well as interoperability, allowing the sampling procedure to be directly integrated into Python-based workflows. We aim to provide performance benchmarks comparing CombOL to these systems. In the future, we wish to extend the functionality of CombOL to include labelled classes, the pointing operator, as well as ranking and unranking algorithms. This work is joint with Daniel Merkle (Bielefeld University).

  • Jaime Gutierrez (University of Cantabria) – PLPP: a SageMath package for computing and manipulating local permutation polynomials and Latin hypercubes
    In this talk we present the programs package PLPP (Permutation and Local Permutation Polynomials) which is designed for computing and manipulating permutation polynomials in several variables. The main objects in PLPP are polynomials in several variables over a finite field $\mathbb{F}_q$ of cardinality a prime power $q$. There is a bijective map between $n$-dimensional Latin hypercube of order a prime power $q$ and local permutation polynomial in $n$ variables with coefficients the finite field $\mathbb{F}_q$ of degree smaller than $q$ in each variable. We analyse several SageMath functions in order to establishment of new approaches to the problems of counting, enumerating and classifying Latin hypercubes. Finally, I will also present SageMath code for describing the set of orthogonal Latin hypercubes and it relation to an orthogonal system of polynomials. The work discussed in this talk is a joint collaboration with Raúl M. Falcón, Antonia Gerlach Krause and Jorge Jiménez-Urroz.

  • Yuzhuo Lei and Chirantan Mukherjee (University of Western Ontario) – Quasi-polynomials, Z-polyhedra and parametric integer linear programming
    A problem instance in parametric integer linear programming (PILP) requests the maximum (or minimum) value of an affine objective function defined over a parametric $Z$-polyhedron (that is, the intersection of a parametric polyhedron and an integer lattice). Of course, this maximum depends on the parameters and computing it generally leads to a partition of the parameter space so that, above each part of the partition, the maximum is given by a quasi-polynomial. Implemented algorithms for PILP rely either on an adaptation of the simplex method due to Paul Feautrier, or an adaptation of Barvinok’s algorithm proposed by Sven Verdoolaege. With each part of the partition, these algorithms provide a sample point (that is, a tuple of values of the varieties) realizing the maximum of the objective function. In this talk, we present a novel algorithm to solve PILP instances which enhance the previous approaches as follows. For each part of the partition, we compute the locus of all points realizing the maximum of the objective function. Our experimental results suggest that our algorithm brings improvement in terms of output size and running time. This is a joint work with Rui-Juan Jing (Jiangsu University) and Marc Moreno Maza (University of Western Ontario).

  • Lucas Pannier (Université de Versailles – Saint-Quentin-en-Yvelines) – An effective proof of the p-curvature conjecture for first-order differential equations with rational coefficients
    In 1974, Honda proved the p-curvature conjecture for order one differential equations with rational coefficients over a number field. He demonstrated that in this setting, the p-curvature conjecture was equivalent to a theorem due to Kronecker, providing a local-global criterion for the splitting of polynomials over the rational numbers. In 1985 the Chudnovskys published another proof of Honda’s theorem (and of Kronecker’s theorem) by means of Padé approximation and elementary number theory, thus paving the way to an effective version of these results. Here, by “effective” we mean that we wish to obtain an explicit finite bound on the number of p-curvatures to be computed in order to decide the algebraicity of the solution of the differential equation. In this talk, I will explain how to obtain such a bound, and report on an implementation. This is joint work with Florian Fürnsinn (University of Vienna).

  • Tiadora Ruza (University of Michigan) – Computing Asymptotics of Multivariate Algebraic Generating Functions
    The field of analytic combinatorics in several variables (ACSV) develops techniques for studying multivariate generating functions, which encode combinatorial structures with multiple parameters tracked. In this presentation, we describe a collection of methods for computing asymptotics of multivariate algebraic functions, including techniques for embedding the generating function into a higher-dimensional rational function and implicit integration on algebraic varieties. Examples highlighting these techniques on a variety of applications will be shown, as well as implementations in SageMath. This is joint work with Torin Greenwood, Stephen Melczer and Mark Wilson.

  • John H. Smith (University of Waterloo) – Fast Diagonals of Rational Functions in SageMath
    We present a SageMath implementation of a reduction-based algorithm for computing differential operators of rational period integrals due to Lairez. A specific focus has been placed on ensuring out-of-the-box compatibility with existing Sage packages frequently used in algebraic and analytic combinatorics, such as sage_acsv and ore_algebra, providing an approach to resolve the “connection problem” for asymptotics of some P-recursive sequences. We also add functions for routine tasks that might be typical for a combinatorial user, such as taking rational diagonals. In this talk we describe the basics of the software’s core algorithm and feature set, and demonstrate it on examples.

  • Marcos Tomaszewski (Federal University of Santa Catarina) – fcombinat: An Open-Source Framework for Generic (un)ranking
    Ranking and unranking combinatorial structures are fundamental tasks in random generation and data compression. While the symbolic method of analytic combinatorics provides a generic theoretical foundation for these operations, the current software landscape remains fragmented. The combstruct package of Maple requires yearly subscription fees; the MuPAD-Combinat software package is deprecated and only partially migrated to SageMath, with most generic (un)ranking capabilities unavailable at the time of writing. The Molinero–Martínez framework (RS&A ‘01) provides a complete theoretical solution to this problem, yet it was never fully released as open-source software for over two decades. To address this gap, we present fcombinat, a high-performance, open-source C implementation of the Molinero–Martínez ranking and unranking framework. Unlike implementations targeting specific structures, fcombinat operates generically: given a combinatorial class specified via the symbolic method, it derives ranking and unranking algorithms automatically, without hand-crafted code per structure. Implemented as a standalone C library with a minimal API and no runtime dependencies beyond FLINT, it is designed to be called from any language with a C FFI. It uses FLINT for arbitrary-precision arithmetic and avoids precomputation, reducing memory usage and enabling future cache optimizations. We implement all standard admissible operators across both labelled and unlabelled universes, except the cycles operator on unlabelled objects, as in the original framework. We validate the correctness of our system against over a thousand entries in the Encyclopedia of Combinatorial Structures dataset, while comparing fcombinat to Maple and Boltzmann sampling on a subset consisting of cycles, partitions, permutations, and surjections, which covers the breadth of admissible operators. Our work offers the combinatorics community a modern, dependency-free alternative to proprietary and deprecated tools, and a portable foundation for higher-level language bindings.