Skip to content

Modularization of sagelib: Break out separate package sagemath-combinat #33660

@mkoeppe

Description

@mkoeppe

This distribution package sagemath-combinat would depend on sagemath-categories and would be a dependency of sagemath-standard-no-symbolics.

  • Relation to sagemath-graphs (for posets, ...) to be determined
  • Relation to sagemath-singular (for polynomials) to be determined
  • Which modules in sage.combinat need GAP? It comes in via sage.groups.perm_gps

Other imports that are not covered by sagemath-categories:

  • src/sage/combinat/binary_recurrence_sequences.py uses number fields, finite fields, and sage.functions.log
  • src/sage/combinat/cluster_algebra_quiver/ uses finite fields, sage.geometry.fan
  • src/sage/combinat/colored_permutations.py uses number fields
  • src/sage/combinat/crystals/kirillov_reshetikhin.py, mv_polytopes.py use sage.geometry.polyhedron
  • src/sage/combinat/designs uses sage.schemes, finite fields, GAP, sage.groups.additive_abelian, sage.numerical.mip, sage.graphs
  • src/sage/combinat/finite_state_machine.py uses sage.symbolic
  • src/sage/combinat/k_regular_sequence.py uses sage.symbolic.operators, sage.functions
  • src/sage/combinat/k_tableau.py uses sage.functions.generalized
  • src/sage/combinat/lr_tableau.py uses lrcalc
  • src/sage/combinat/matrices/dancing_links.pyx uses sage.sat, sage.numerical.mip
  • src/sage/combinat/matrices/hadamard_matrix.py uses finite fields, sage.graphs.strongly_regular_db
  • src/sage/combinat/matrices/latin.py uses GAP, finite fields
  • src/sage/combinat/partition.py uses FLINT, GAP
  • src/sage/combinat/partition_algebra.py uses sage.functions
  • src/sage/combinat/partition_tuple.py uses PARI
  • src/sage/combinat/path_tableaux/frieze.py uses sage.functions.trig, sage.geometry.hyperbolic_space
  • src/sage/combinat/plane_partition.py uses sage.functions.trig (but only for plotting)
  • src/sage/combinat/posets/hasse_cython.pyx has a compile-time dependency on FLINT (found with git grep cimport src/sage/combinat) for Matrix_integer_dense. Can this dependency be replaced by Matrix_numpy_integer_dense?
  • src/sage/combinat/posets/posets.py uses everything
  • src/sage/combinat/ribbon_tableau.py uses sage.symbolic.ring
  • src/sage/combinat/root_system/associahedron.py uses sage.geometry.polyhedron
  • src/sage/combinat/root_system/cartan_matrix.py defines a subclass of Matrix_integer_sparse (depends on FLINT), also uses sage.graphs
  • TBD: letters r-z

Compile-time dependencies:

  • symmetrica - Cython bindings in sage.libs.symmetrica make run-time imports (late_import) from sage.combinat, sage.rings.polynomial -- and sage.functions for sqrt

Related questions and tasks:

  • Deployment of GAP - possibly via Replace most of sage.libs.gap with gappy #31404 (Replace most of sage.libs.gap with gappy) + cibuildwheel of gappy
  • Fast univariate and multivariate polynomials (over which rings??) without dependency on Singular - possibly via cibuildwheel of python-flint, flint-py, or symengine. Possible synergies with the SymPy project
  • lrcalc needs cibuildwheel workflow
  • use of sage_eval in constructors

Part of Meta-ticket #29705: Modularize sagelib into separate distributions (pip-installable packages) sagemath-...

CC: @anneschilling

Component: refactoring

Issue created by migration from https://trac.sagemath.org/ticket/33660

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions