Version 58 (modified by nthiery, 2 years ago) (diff)


Roadmap and status report for Sage-Combinat

This page is an attempt at drawing a road map for Sage-Combinat, and in particular the migration from MuPAD-Combinat.

Todo: extend the history, and include links to the relevant trac tickets.


All Sage-Combinat tickets

Progress of the migration to Sage

Topic Progress Priority Comments
Basic combinatorial classes 75% 2007-08 by Mike
Decomposable objects / Species 75% #10662
Trees 30%
Posets %
Words %
Symmetric functions 90%
k-Schur & the like 50%
Root systems / ... 90%
Crystals 90%
Category framework 80%
Hopf algebra framework 50%
Free modules & such 80%
Algebra (desosseur, ...) 30%
* with several bases 50%
Operads 10%
Linbox interface 100% (compares to 10% in MuPAD)
GAP interface 80% (compares to 1% in MuPAD)
Interface for fast Gröbner basis 100% (compares to 0% in MuPAD)
Nauty 100% (compares to 50% in MuPAD
Symmetrica 60%
lrcalc 60% #10333
GLIP 50% #6812
graphviz / dot2tex 80% #7004, #10518
Copy-on-write data structure 60% see #8702
Database access 100%
MachineIntegerListsLex? 0% Will be easy via cython
Rigged configurations 0%
Basic abstract data structures 100% (fast stacks, AVL, dancing links) compares to just the basic ones in MuPAD + no real way to implement some with serious speed ourselves

Road map

  • #10305 (prototype): Add rings for the center of the symmetric group algebras Mathieu Guay-Paquet, Valentin Feray
  • Root systems
  • #8906 (needs finalization): Optional package for gap3
  • Constructing a root/coroot lattice realization from a pair of matrices Work in progress by Christian Stump
  • Automatic finite Coxeter/(affine)Weyl type recognition, using graph isomorphism with predefined cartan types (complex reflection group is harder)


  • Computation of reflection degrees from positive roots (easy)
  • #8359 (needs finalization): permutation representation of a Coxeter group, using GAP3
  • #8327 (needs review): implement the universal cyclotomic field, using the Zumbroich basis Christian Stump
  • Implement general Coxeter groups given by a Coxeter diagram
  • #12912: Interface to Coxeter 3 from Fokko Ducloux (MikeHansen?)
  • Port over the character tables (depends on 1 to be most useful)
  • Representations/character tables of the Hecke algebras
  • #12774: (needs review): various enhancements for Coxeter and Weyl groups
  • Port Specht (AndrewMathas?)
  • Implement data structures for character tables / use it systematically in Sage (Volunteers? Nicolas has some design notes about this):
    • of groups in Sage / GAP
    • of semi-simple algebras (in Sage / GAP)
    • of a coset
    • See #7555: fix Cayley tables, add operation tables
  • Further improve root systems, Coxeter groups and the like, getting features, inspiration, code, doc, tests, developers from Chevie (...)
  • Implement the many representations of the Hecke algebra (AndrewMathas?, ...)
  • Implement more models of Crystals (alcove and littlemann path, ...): #8984, ...
  • Modules and vector spaces
    • Tensor products of morphism
    • Generalized tensor product
    • #10673: Roadmap for (Combinatorial)FreeModule?
    • #11111 (needs finalization): More support for finite dimensional free modules and algebras
  • Categories
  • Combinatorics
  • Generating series, analytic combinatorics, ...:
    • #10669: MacMahon? partition analysis, aka Omega operator
    • #10519 (needs review): Computation of asymptotics for multivariate rational fractions
  • Trees:
    • #8703 (needs review): Improve Trees
    • #11529 (needs review): Rooted_trees

Former road maps and history

  • Todo for/at Sage Days 20.5 (May 2010):
    • Finalize the basic Cython data-sctructure for combinatorial objects (in progress #8702, FlorenHivert?)
    • Finalize the cleanup of combinatorial object: permutations, partitions, compositions...
    • #8876: Generalize #7914 (Florent)
      • Support for a (partial) inverse function on terms (when the indices of the domain do not coincide with those of the codomain)
      • Non invertible triangular morphism:
        • phi.preimage(y): returns the preimage x of y or None if it does not exists (or raise an exception?)
          • phi.reduce(y): returns (x, r) such that y = phi(x) + r, and r contains no leading term of phi(domain) (that would be euclidean division if phi was x -> x * p where p is some polynomial) Better name for that method?
    • (6) Use breath-first-search or Dijkstra in Coercion, as discussed in #7420 (volunteers?)
    • (7) Allow for user defined overloaded operators, with signature declarations (#383 is a progress, but not enough) (NicolasThiéry?, depends on (6))
    • #7980: Extract basic support for the "concrete representation of an abstract algebra" relation out of the ncsf patch (JasonBandlow?)
    • (7), #7980 are building blocks for further progress in qsym/ncsf/polynomials with several basis (#6889)
    • (9) is a building block for the representation theory of monoids
    • (10) is the main building block for the representation theory of finite dimensional algebra
    • Design and implement framework for computing with representations / modules / character rings
    • Finalize interface to Jean-Éric Pin's Semigroupe package (#8360), and extend further the semigroup/monoid/group algebra code (#6654, ...)
    • Explore / expose the functionalities of KBMAG for computing with (semi)groups defined by presentations
    • Discussion about implementation of various algebras (affine nilCoxeter algebra, affine nilTemperley Lieb algebra, affine local plactic algebra), see also patch nilTemperley-as.patch in the sage-combinat queue) (AnneSchilling?) This could possibly make use of KBMAG.
    • Categorification of the crystal code (AnneSchilling?) #8911
    • Words improvements:
      • #8595, #8618, #8574, #8673 and #8674 (misc defect fixes),
      • #8429 (Split file into 4 files),
      • #8604 (Add a class for factor-enumerable words),
      • #8407 and #8670 (new methods for word paths),
      • #8287 (_check makes it slower),
      • #8431 (Rauzy fractal (discrete planes and broken lines)
  • Todo for Sage Days 20 (February 2010):
    • #7004 will be used intensively to visualize semigroups and others
    • words bug : #8095 (word morphism is primitive), #8140 (sturmian words definition), #8186 (length handling), #8215 (empty word), #8232 (cmp bug), #7520 (word construction)
    • words enhancement : #8187 (equality of words), #8268 (speed up christoffel words), #8287 (_check function), #8289 (word morphism call function), #7619 (pickle for word defined by callable or iterator), #8233 (concatenation), #8266 (documentation)
    • words new functions : #8093, #8127, #8227
    • Disjoint set data structure : #6775
  • 2011:
    • #8702: Datastructure for objects with prototype (clone) design pattern.
  • 2010:
    • #6655: Cleanups and new features about corners and cells in partition and tableau
    • Root systems, crystals, ...
      • #8984: Implementation of the Lenart--Postnikov alcove path crystal
      • #8380: Interface with GAP3
    • Categories:
      • #8001: Stronger category tests
      • #7921: Categories for extension types via getattr_
    • Symmetric functions:
      • #8259: Conversion from symmetric polynomials to basis of monomial symmetric functions
    • #7004: Refactor the graph layout code, and add interface with graphviz for acyclic layout
    • Modules and vector spaces:
      • #8876: Triangular morphisms with domain and codomain having different index sets
      • #7914: Triangular isomorphisms of free modules
      • #7938: swap_term_and_monomial
      • #9651: Addition on CombinatorialFreeModule? directly on dictionaries (closed: fixed)
      • #9648: ModulesWithBasis? allows module_morphism's to a wider class of ... (closed: fixed)
  • July 2009: FPSAC'09 (RISC, Linz, Austria)
    • Goal: Most features ported
    • Goal: Most of the research done with Sage-Combinat
    • Goal: All new users can start directly with Sage
  • October 08: Sage Days 10 (Nancy, France)
    • Get the core MuPAD-Combinat developers started with Sage
    • Design, prioritization, planning
    • Design of the categories and (Hopf) algebra framework using the new coercion system
  • September 08: announcement that Sciface is purchased by Mathworks (Matlab).
    • MuPAD does not qualify anymore as a "reasonably priced high quality computer algebra system".
    • Sciface cancels its formerly liberal licence policy for MuPAD-Combinat developers.
    • Plan for a last stable release of MuPAD-Combinat dropped.
  • Summer 2008: port of decomposable objects (from MuPAD-combinat) / species (from aldor-combinat) by Mike Hansen, funded by Google
  • June 24th 2008, FPSAC (Valparaiso, Chile):
    • Official announcement of the migration
    • Goal: elementary combinatorics users can start directly with Sage
  • June 19th 2008: Visit of Florent to Davis. Final decision to migrate!
  • February 2008: Sage Days 7 (Los Angeles)
    • Technical experimentation with Sage to see how fit it is for our purposes.
    • Partial port of the crystals library (#2742, AnneSchilling? and NicolasThiéry?)
    • Implementation of Xin's Omega algorithm by Jason and Greg #10669
  • January 2008: presentation of MuPAD-Combinat at the AMS meeting in San-Diego; meeting and discussions with the Sage team
  • June 2007: design discussions between Nicolas and Mike at the Axiom Workshop 2007
  • February 2007: First contact with Mike Hansen who wanted to port some features of MuPAD-Combinat, which we very much encouraged. Since then Mike translated 30k lines of code, which accounts for most of the basic combinatorics (tableaux, permutations, ...), and symmetric functions.

Attachments (1)

Download all attachments as: .zip