On Monday, June 12, 2023 at 4:54:21 PM UTC-7 Nathan Dunfield wrote:

On Monday, June 12, 2023 at 2:58:18 PM UTC-4 Matthias Koeppe wrote:

What parts of Sage does SnapPy use? 


Primarily the various rings/fields, including matrices over them and basic 
linear algebra.


In the present design (reflected in the currently "disputed" PRs 
https://github.com/sagemath/sage/pull/36676 
and https://github.com/sagemath/sage/pull/36964, as well as the 
Mega-PR https://github.com/sagemath/sage/pull/35095):

Linear algebra over basic rings is provided by a distribution 
*sagemath-modules* 
(https://github.com/mkoeppe/sage/tree/t/32432/modularization_of_sagelib__break_out_a_separate_package_sagemath_polyhedra/pkgs/sagemath-modules)
 

  Specifically, interval arithmetic (Real/ComplexIntervalField), polynomial 
rings (in several variables, including Laurent polynomials), number fields, 
and the basic rings ZZ, QQ, GF, RealField, ComplexField, etc.


For GF beyond small prime fields, you would additionally need 
*sagemath-pari*
. 
https://github.com/mkoeppe/sage/tree/t/32432/modularization_of_sagelib__break_out_a_separate_package_sagemath_polyhedra/pkgs/sagemath-pari

For the interval fields, you would need *sagemath-flint*
. 
https://github.com/mkoeppe/sage/tree/t/32432/modularization_of_sagelib__break_out_a_separate_package_sagemath_polyhedra/pkgs/sagemath-flint

For number fields, you may additionally need *sagemath-linbox* currently 
because the class NumberFieldElement_quadratic is still encumbered with 
lots of gratuitous compile-time dependencies ( I have removed dependencies 
of this kind from other modules such as the Integers already). Rewriting 
this class using FLINT would be an easy and high-impact improvement of the 
modularity. 
https://github.com/mkoeppe/sage/tree/t/32432/modularization_of_sagelib__break_out_a_separate_package_sagemath_polyhedra/pkgs/sagemath-linbox

Instead of referring to these libraries explicitly, SnapPy would also be 
able to declare these dependencies in a high-level way using the "extras" 
(declared optional dependencies) of *sagemath-modules*, for example as 
*"sagemath-modules[RIF,CIF,GF,NumberField]"*. See 
https://github.com/mkoeppe/sage/blob/t/32432/modularization_of_sagelib__break_out_a_separate_package_sagemath_polyhedra/pkgs/sagemath-modules/pyproject.toml.m4#L58

  Also, the ptolemy submodule uses Sage for groebner_basis calculations.


For any Groebner basis functionality, you would need *sagemath-singular*. 
It sounds like this would be declared as an optional dependency of SnapPy 
even if you decide to make the dependencies on the other Sage distribution 
packages required dependencies. 
https://github.com/mkoeppe/sage/tree/t/32432/modularization_of_sagelib__break_out_a_separate_package_sagemath_polyhedra/pkgs/sagemath-singular

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-devel/4647b37f-f0be-461c-a665-38e05ba7c7dfn%40googlegroups.com.

Reply via email to