Skip to content

Interface for Regina (3-manifold topology and normal surface theory) #40370

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 10 commits into
base: develop
Choose a base branch
from

Conversation

soehms
Copy link
Member

@soehms soehms commented Jul 4, 2025

This PR is intended to resolve the old Trac ticket #17077 (now a GitHub issue). This branch is based on the branch of Trac ticket #31456, which addressed the implementation of the optional SPKG.

In the latter ticket it was noted that the package is not compatible with 32-bit systems and is therefore considered experimental (see #31456 (comment)). According to #31456 (comment), this should now be resolved. However, I haven't verified this yet. Are there still CI runs for this? Is this still a policy?

If this issue turns out to have resisted, I will change the type to experimental.

This PR initiates the integration of Regina via the Sage interface framework. Most of the basics should be included, but given Regina's broad functionality, this PR is still selective focusing on some applications of knot theory. However, future extensions should now be fairly straightforward. Explicitly it starts with the following specific conversions:

  • integers
  • rationals
  • rational univariate polynomials
  • rational uni- and bivariate Laurent polynomials
  • finitely presented groups
  • links (including fundamental group and Homfly polynomial integration and adding link simplification)

📝 Checklist

  • The title is concise and informative.
  • The description explains in detail what this PR is about.
  • I have linked a relevant issue or discussion.
  • I have created tests covering the changes.
  • I have updated the documentation and checked the documentation preview.

⌛ Dependencies

Copy link

github-actions bot commented Jul 4, 2025

Documentation preview for this PR (built with commit 35d7ca1; changes) is ready! 🎉
This preview will update shortly after each push to this PR.

@soehms
Copy link
Member Author

soehms commented Jul 4, 2025

All relevant CI-tests passed including the ones that have the optional package install (Linux Incremental except the one for Fedora 41 which failed by unrelated reason). For example for Debian bookworm wie have:

025-07-04T12:33:48.9074175Z Running doctests with ID 2025-07-04-12-33-48-1ef19743.
2025-07-04T12:33:48.9075400Z Running with SAGE_LOCAL='/sage/local' and SAGE_VENV='/sage/local/var/lib/sage/venv-python3.12.5'
2025-07-04T12:33:48.9076664Z Using --optional=!sagemath_doc_html,!sagemath_doc_pdf,debian,pip,sage,sage_spkg
2025-07-04T12:33:49.0609317Z Features to be detected: 4ti2,SAGE_SRC,benzene,bliss,buckygen,conway_polynomials,coxeter3,csdp,cvxopt,cvxopt,database_cremona_ellcurve,database_cremona_mini_ellcurve,database_cubic_hecke,database_ellcurves,database_graphs,database_jones_numfield,database_knotinfo,dot2tex,dvipng,ecm,fpylll,fricas,gap_package_atlasrep,gap_package_design,gap_package_grape,gap_package_guava,gap_package_hap,gap_package_polenta,gap_package_polycyclic,gap_package_qpa,gap_package_quagroup,gfan,giac,glucose,graphviz,imagemagick,info,ipython,jmol,jupymake,jupyter_sphinx,kenzo,kissat,latte_int,lrcalc_python,lrslib,mathics,matroid_database,mcqd,meataxe,meson_editable,mpmath,msolve,nauty,networkx,numpy,palp,pandoc,pdf2svg,pdftocairo,pexpect,phitigra,pillow,plantri,polytopes_db,polytopes_db_4d,pplpy,primecountpy,ptyprocess,pycosat,pycryptosat,pynormaliz,pyparsing,python_igraph,regina,requests,rpy2,rubiks,sage.combinat,sage.geometry.polyhedron,sage.graphs,sage.groups,sage.libs.braiding,sage.libs.ecl,sage.libs.flint,sage.libs.gap,sage.libs.giac,sage.libs.homfly,sage.libs.linbox,sage.libs.m4ri,sage.libs.ntl,sage.libs.pari,sage.libs.singular,sage.misc.cython,sage.modular,sage.modules,sage.numerical.mip,sage.plot,sage.rings.complex_double,sage.rings.finite_rings,sage.rings.function_field,sage.rings.number_field,sage.rings.padics,sage.rings.polynomial.pbori,sage.rings.real_double,sage.rings.real_mpfr,sage.sat,sage.schemes,sage.symbolic,sage_numerical_backends_coin,scipy,singular,sirocco,sloane_database,sphinx,symengine_py,sympy,tdlib,threejs,topcom
2025-07-04T12:33:49.0617911Z Doctesting entire Sage library.
2025-07-04T12:33:49.0618156Z Doctesting all documentation sources.
2025-07-04T12:33:49.4500686Z Sorting sources by runtime so that slower doctests are run first....
2025-07-04T12:33:49.6687339Z Doctesting 4708 files using 5 threads.
2025-07-04T12:33:50.7891947Z sage -t --warn-long 5.0 --random-seed=68504888485070477484283094754807837137 src/doc/de/thematische_anleitungen/index.rst
2025-07-04T12:33:50.9076966Z     [0 tests, 0.00s wall]
...
2025-07-04T12:50:22.1074071Z sage -t --warn-long 5.0 --random-seed=68504888485070477484283094754807837137 src/sage/interfaces/regina.py
2025-07-04T12:50:22.2735793Z     [134 tests, 0.36s wall]
...
2025-07-04T13:12:57.1259689Z sage -t --warn-long 5.0 --random-seed=68504888485070477484283094754807837137 src/sage/typeset/unicode_art.py
2025-07-04T13:12:57.3387639Z     [18 tests, 3.92s wall]
2025-07-04T13:12:57.3388697Z ----------------------------------------------------------------------
2025-07-04T13:12:57.3389685Z All tests passed!
2025-07-04T13:12:57.3390175Z ----------------------------------------------------------------------
2025-07-04T13:12:57.3390774Z Total time for all tests: 2346.4 seconds
2025-07-04T13:12:57.3391271Z     cpu time: 7928.8 seconds
2025-07-04T13:12:57.3391710Z     cumulative wall time: 9688.2 seconds
2025-07-04T13:12:57.3399913Z Features detected for doctesting: bliss,conway_polynomials,coxeter3,cvxopt,database_cremona_mini_ellcurve,database_ellcurves,database_graphs,fpylll,gap_package_polycyclic,gfan,info,jupyter_sphinx,lrcalc_python,mcqd,meataxe,mpmath,nauty,networkx,numpy,palp,pexpect,pillow,polytopes_db,pplpy,primecountpy,ptyprocess,pyparsing,regina,sage.combinat,sage.geometry.polyhedron,sage.graphs,sage.groups,sage.libs.braiding,sage.libs.ecl,sage.libs.flint,sage.libs.gap,sage.libs.homfly,sage.libs.linbox,sage.libs.m4ri,sage.libs.ntl,sage.libs.pari,sage.libs.singular,sage.misc.cython,sage.modular,sage.modules,sage.numerical.mip,sage.plot,sage.rings.complex_double,sage.rings.finite_rings,sage.rings.function_field,sage.rings.number_field,sage.rings.padics,sage.rings.polynomial.pbori,sage.rings.real_double,sage.rings.real_mpfr,sage.schemes,sage.symbolic,scipy,singular,sirocco,sphinx,sympy,tdlib,threejs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants