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.