passagemath-singular 10.6.31rc3__cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of passagemath-singular might be problematic. Click here for more details.
- PySingular.cpython-314-x86_64-linux-gnu.so +0 -0
- passagemath_singular-10.6.31rc3.dist-info/METADATA +183 -0
- passagemath_singular-10.6.31rc3.dist-info/RECORD +491 -0
- passagemath_singular-10.6.31rc3.dist-info/WHEEL +6 -0
- passagemath_singular-10.6.31rc3.dist-info/top_level.txt +3 -0
- passagemath_singular.libs/libSingular-4-20aec911.4.1.so +0 -0
- passagemath_singular.libs/libcddgmp-21acf0c6.so.0.1.3 +0 -0
- passagemath_singular.libs/libfactory-4-fcee31da.4.1.so +0 -0
- passagemath_singular.libs/libflint-66e12231.so.21.0.0 +0 -0
- passagemath_singular.libs/libgf2x-a4cdec90.so.3.0.0 +0 -0
- passagemath_singular.libs/libgfortran-83c28eba.so.5.0.0 +0 -0
- passagemath_singular.libs/libgmp-6e109695.so.10.5.0 +0 -0
- passagemath_singular.libs/libgsl-cda90e79.so.28.0.0 +0 -0
- passagemath_singular.libs/libmpfr-82690d50.so.6.2.1 +0 -0
- passagemath_singular.libs/libntl-e6f0d543.so.44.0.1 +0 -0
- passagemath_singular.libs/libomalloc-0-5c9e866e.9.6.so +0 -0
- passagemath_singular.libs/libopenblasp-r0-6dcb67f9.3.29.so +0 -0
- passagemath_singular.libs/libpolys-4-5c0a87e0.4.1.so +0 -0
- passagemath_singular.libs/libquadmath-2284e583.so.0.0.0 +0 -0
- passagemath_singular.libs/libreadline-ea270e21.so.8.2 +0 -0
- passagemath_singular.libs/libsingular_resources-4-a1aafc6d.4.1.so +0 -0
- passagemath_singular.libs/libtinfo-ceb117d9.so.6.3 +0 -0
- sage/algebras/all__sagemath_singular.py +3 -0
- sage/algebras/fusion_rings/all.py +19 -0
- sage/algebras/fusion_rings/f_matrix.py +2448 -0
- sage/algebras/fusion_rings/fast_parallel_fmats_methods.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/algebras/fusion_rings/fast_parallel_fmats_methods.pxd +5 -0
- sage/algebras/fusion_rings/fast_parallel_fmats_methods.pyx +538 -0
- sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pxd +3 -0
- sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pyx +331 -0
- sage/algebras/fusion_rings/fusion_double.py +899 -0
- sage/algebras/fusion_rings/fusion_ring.py +1580 -0
- sage/algebras/fusion_rings/poly_tup_engine.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/algebras/fusion_rings/poly_tup_engine.pxd +24 -0
- sage/algebras/fusion_rings/poly_tup_engine.pyx +579 -0
- sage/algebras/fusion_rings/shm_managers.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/algebras/fusion_rings/shm_managers.pxd +24 -0
- sage/algebras/fusion_rings/shm_managers.pyx +780 -0
- sage/algebras/letterplace/all.py +1 -0
- sage/algebras/letterplace/free_algebra_element_letterplace.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/algebras/letterplace/free_algebra_element_letterplace.pxd +18 -0
- sage/algebras/letterplace/free_algebra_element_letterplace.pyx +755 -0
- sage/algebras/letterplace/free_algebra_letterplace.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/algebras/letterplace/free_algebra_letterplace.pxd +35 -0
- sage/algebras/letterplace/free_algebra_letterplace.pyx +914 -0
- sage/algebras/letterplace/letterplace_ideal.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/algebras/letterplace/letterplace_ideal.pyx +408 -0
- sage/algebras/quatalg/all.py +2 -0
- sage/algebras/quatalg/quaternion_algebra.py +4778 -0
- sage/algebras/quatalg/quaternion_algebra_cython.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/algebras/quatalg/quaternion_algebra_cython.pyx +261 -0
- sage/algebras/quatalg/quaternion_algebra_element.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/algebras/quatalg/quaternion_algebra_element.pxd +29 -0
- sage/algebras/quatalg/quaternion_algebra_element.pyx +2176 -0
- sage/all__sagemath_singular.py +11 -0
- sage/ext_data/all__sagemath_singular.py +1 -0
- sage/ext_data/singular/function_field/core.lib +98 -0
- sage/interfaces/all__sagemath_singular.py +1 -0
- sage/interfaces/singular.py +2835 -0
- sage/libs/all__sagemath_singular.py +1 -0
- sage/libs/singular/__init__.py +1 -0
- sage/libs/singular/decl.pxd +1168 -0
- sage/libs/singular/function.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/libs/singular/function.pxd +87 -0
- sage/libs/singular/function.pyx +1901 -0
- sage/libs/singular/function_factory.py +61 -0
- sage/libs/singular/groebner_strategy.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/libs/singular/groebner_strategy.pxd +22 -0
- sage/libs/singular/groebner_strategy.pyx +582 -0
- sage/libs/singular/option.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/libs/singular/option.pyx +671 -0
- sage/libs/singular/polynomial.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/libs/singular/polynomial.pxd +39 -0
- sage/libs/singular/polynomial.pyx +661 -0
- sage/libs/singular/ring.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/libs/singular/ring.pxd +58 -0
- sage/libs/singular/ring.pyx +893 -0
- sage/libs/singular/singular.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/libs/singular/singular.pxd +72 -0
- sage/libs/singular/singular.pyx +1944 -0
- sage/libs/singular/standard_options.py +145 -0
- sage/matrix/all__sagemath_singular.py +1 -0
- sage/matrix/matrix_mpolynomial_dense.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/matrix_mpolynomial_dense.pxd +7 -0
- sage/matrix/matrix_mpolynomial_dense.pyx +615 -0
- sage/rings/all__sagemath_singular.py +1 -0
- sage/rings/function_field/all__sagemath_singular.py +1 -0
- sage/rings/function_field/derivations_polymod.py +911 -0
- sage/rings/function_field/element_polymod.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/function_field/element_polymod.pyx +406 -0
- sage/rings/function_field/function_field_polymod.py +2611 -0
- sage/rings/function_field/ideal_polymod.py +1775 -0
- sage/rings/function_field/order_polymod.py +1475 -0
- sage/rings/function_field/place_polymod.py +681 -0
- sage/rings/polynomial/all__sagemath_singular.py +1 -0
- sage/rings/polynomial/multi_polynomial_ideal_libsingular.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/polynomial/multi_polynomial_ideal_libsingular.pxd +5 -0
- sage/rings/polynomial/multi_polynomial_ideal_libsingular.pyx +339 -0
- sage/rings/polynomial/multi_polynomial_libsingular.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/polynomial/multi_polynomial_libsingular.pxd +30 -0
- sage/rings/polynomial/multi_polynomial_libsingular.pyx +6277 -0
- sage/rings/polynomial/plural.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/polynomial/plural.pxd +48 -0
- sage/rings/polynomial/plural.pyx +3171 -0
- sage/symbolic/all__sagemath_singular.py +1 -0
- sage/symbolic/comparison_impl.pxi +428 -0
- sage/symbolic/constants_c_impl.pxi +178 -0
- sage/symbolic/expression.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/symbolic/expression.pxd +7 -0
- sage/symbolic/expression.pyx +14200 -0
- sage/symbolic/getitem_impl.pxi +202 -0
- sage/symbolic/pynac.pxi +572 -0
- sage/symbolic/pynac_constant_impl.pxi +133 -0
- sage/symbolic/pynac_function_impl.pxi +206 -0
- sage/symbolic/pynac_impl.pxi +2576 -0
- sage/symbolic/pynac_wrap.h +124 -0
- sage/symbolic/series_impl.pxi +272 -0
- sage/symbolic/substitution_map_impl.pxi +94 -0
- sage_wheels/bin/ESingular +0 -0
- sage_wheels/bin/Singular +0 -0
- sage_wheels/bin/TSingular +0 -0
- sage_wheels/lib/singular/MOD/cohomo.la +41 -0
- sage_wheels/lib/singular/MOD/cohomo.so +0 -0
- sage_wheels/lib/singular/MOD/customstd.la +41 -0
- sage_wheels/lib/singular/MOD/customstd.so +0 -0
- sage_wheels/lib/singular/MOD/freealgebra.la +41 -0
- sage_wheels/lib/singular/MOD/freealgebra.so +0 -0
- sage_wheels/lib/singular/MOD/gfanlib.la +41 -0
- sage_wheels/lib/singular/MOD/gfanlib.so +0 -0
- sage_wheels/lib/singular/MOD/gitfan.la +41 -0
- sage_wheels/lib/singular/MOD/gitfan.so +0 -0
- sage_wheels/lib/singular/MOD/interval.la +41 -0
- sage_wheels/lib/singular/MOD/interval.so +0 -0
- sage_wheels/lib/singular/MOD/loctriv.la +41 -0
- sage_wheels/lib/singular/MOD/loctriv.so +0 -0
- sage_wheels/lib/singular/MOD/machinelearning.la +41 -0
- sage_wheels/lib/singular/MOD/machinelearning.so +0 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.la +41 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.so +0 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.la +41 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.so +0 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldQ.la +41 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldQ.so +0 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldZp.la +41 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldZp.so +0 -0
- sage_wheels/lib/singular/MOD/partialgb.la +41 -0
- sage_wheels/lib/singular/MOD/partialgb.so +0 -0
- sage_wheels/lib/singular/MOD/pyobject.la +41 -0
- sage_wheels/lib/singular/MOD/pyobject.so +0 -0
- sage_wheels/lib/singular/MOD/singmathic.la +41 -0
- sage_wheels/lib/singular/MOD/singmathic.so +0 -0
- sage_wheels/lib/singular/MOD/sispasm.la +41 -0
- sage_wheels/lib/singular/MOD/sispasm.so +0 -0
- sage_wheels/lib/singular/MOD/subsets.la +41 -0
- sage_wheels/lib/singular/MOD/subsets.so +0 -0
- sage_wheels/lib/singular/MOD/systhreads.la +41 -0
- sage_wheels/lib/singular/MOD/systhreads.so +0 -0
- sage_wheels/lib/singular/MOD/syzextra.la +41 -0
- sage_wheels/lib/singular/MOD/syzextra.so +0 -0
- sage_wheels/libexec/singular/MOD/change_cost +0 -0
- sage_wheels/libexec/singular/MOD/singularsurf +11 -0
- sage_wheels/libexec/singular/MOD/singularsurf_jupyter +9 -0
- sage_wheels/libexec/singular/MOD/singularsurf_win +10 -0
- sage_wheels/libexec/singular/MOD/solve_IP +0 -0
- sage_wheels/libexec/singular/MOD/surfex +16 -0
- sage_wheels/libexec/singular/MOD/toric_ideal +0 -0
- sage_wheels/share/factory/gftables/10201 +342 -0
- sage_wheels/share/factory/gftables/1024 +37 -0
- sage_wheels/share/factory/gftables/10609 +356 -0
- sage_wheels/share/factory/gftables/11449 +384 -0
- sage_wheels/share/factory/gftables/11881 +398 -0
- sage_wheels/share/factory/gftables/121 +6 -0
- sage_wheels/share/factory/gftables/12167 +408 -0
- sage_wheels/share/factory/gftables/125 +7 -0
- sage_wheels/share/factory/gftables/12769 +428 -0
- sage_wheels/share/factory/gftables/128 +7 -0
- sage_wheels/share/factory/gftables/1331 +47 -0
- sage_wheels/share/factory/gftables/1369 +48 -0
- sage_wheels/share/factory/gftables/14641 +490 -0
- sage_wheels/share/factory/gftables/15625 +523 -0
- sage_wheels/share/factory/gftables/16 +3 -0
- sage_wheels/share/factory/gftables/16129 +540 -0
- sage_wheels/share/factory/gftables/16384 +549 -0
- sage_wheels/share/factory/gftables/16807 +563 -0
- sage_wheels/share/factory/gftables/1681 +58 -0
- sage_wheels/share/factory/gftables/169 +8 -0
- sage_wheels/share/factory/gftables/17161 +574 -0
- sage_wheels/share/factory/gftables/1849 +64 -0
- sage_wheels/share/factory/gftables/18769 +628 -0
- sage_wheels/share/factory/gftables/19321 +646 -0
- sage_wheels/share/factory/gftables/19683 +659 -0
- sage_wheels/share/factory/gftables/2048 +71 -0
- sage_wheels/share/factory/gftables/2187 +75 -0
- sage_wheels/share/factory/gftables/2197 +76 -0
- sage_wheels/share/factory/gftables/2209 +76 -0
- sage_wheels/share/factory/gftables/22201 +742 -0
- sage_wheels/share/factory/gftables/22801 +762 -0
- sage_wheels/share/factory/gftables/2401 +82 -0
- sage_wheels/share/factory/gftables/243 +11 -0
- sage_wheels/share/factory/gftables/24389 +815 -0
- sage_wheels/share/factory/gftables/24649 +824 -0
- sage_wheels/share/factory/gftables/25 +3 -0
- sage_wheels/share/factory/gftables/256 +11 -0
- sage_wheels/share/factory/gftables/26569 +888 -0
- sage_wheels/share/factory/gftables/27 +3 -0
- sage_wheels/share/factory/gftables/27889 +932 -0
- sage_wheels/share/factory/gftables/2809 +96 -0
- sage_wheels/share/factory/gftables/28561 +954 -0
- sage_wheels/share/factory/gftables/289 +12 -0
- sage_wheels/share/factory/gftables/29791 +995 -0
- sage_wheels/share/factory/gftables/29929 +1000 -0
- sage_wheels/share/factory/gftables/3125 +107 -0
- sage_wheels/share/factory/gftables/32 +4 -0
- sage_wheels/share/factory/gftables/32041 +1070 -0
- sage_wheels/share/factory/gftables/32761 +1094 -0
- sage_wheels/share/factory/gftables/32768 +1095 -0
- sage_wheels/share/factory/gftables/343 +14 -0
- sage_wheels/share/factory/gftables/3481 +118 -0
- sage_wheels/share/factory/gftables/361 +14 -0
- sage_wheels/share/factory/gftables/36481 +1218 -0
- sage_wheels/share/factory/gftables/3721 +126 -0
- sage_wheels/share/factory/gftables/37249 +1244 -0
- sage_wheels/share/factory/gftables/38809 +1296 -0
- sage_wheels/share/factory/gftables/39601 +1322 -0
- sage_wheels/share/factory/gftables/4 +3 -0
- sage_wheels/share/factory/gftables/4096 +139 -0
- sage_wheels/share/factory/gftables/44521 +1486 -0
- sage_wheels/share/factory/gftables/4489 +152 -0
- sage_wheels/share/factory/gftables/49 +4 -0
- sage_wheels/share/factory/gftables/4913 +166 -0
- sage_wheels/share/factory/gftables/49729 +1660 -0
- sage_wheels/share/factory/gftables/5041 +170 -0
- sage_wheels/share/factory/gftables/50653 +1691 -0
- sage_wheels/share/factory/gftables/512 +20 -0
- sage_wheels/share/factory/gftables/51529 +1720 -0
- sage_wheels/share/factory/gftables/52441 +1750 -0
- sage_wheels/share/factory/gftables/529 +20 -0
- sage_wheels/share/factory/gftables/5329 +180 -0
- sage_wheels/share/factory/gftables/54289 +1812 -0
- sage_wheels/share/factory/gftables/57121 +1906 -0
- sage_wheels/share/factory/gftables/58081 +1938 -0
- sage_wheels/share/factory/gftables/59049 +1971 -0
- sage_wheels/share/factory/gftables/6241 +210 -0
- sage_wheels/share/factory/gftables/625 +23 -0
- sage_wheels/share/factory/gftables/63001 +2102 -0
- sage_wheels/share/factory/gftables/64 +5 -0
- sage_wheels/share/factory/gftables/6561 +221 -0
- sage_wheels/share/factory/gftables/6859 +231 -0
- sage_wheels/share/factory/gftables/6889 +232 -0
- sage_wheels/share/factory/gftables/729 +27 -0
- sage_wheels/share/factory/gftables/7921 +266 -0
- sage_wheels/share/factory/gftables/8 +3 -0
- sage_wheels/share/factory/gftables/81 +5 -0
- sage_wheels/share/factory/gftables/8192 +276 -0
- sage_wheels/share/factory/gftables/841 +30 -0
- sage_wheels/share/factory/gftables/9 +3 -0
- sage_wheels/share/factory/gftables/9409 +316 -0
- sage_wheels/share/factory/gftables/961 +34 -0
- sage_wheels/share/info/singular.info +191898 -0
- sage_wheels/share/singular/LIB/GND.lib +1359 -0
- sage_wheels/share/singular/LIB/JMBTest.lib +976 -0
- sage_wheels/share/singular/LIB/JMSConst.lib +1363 -0
- sage_wheels/share/singular/LIB/KVequiv.lib +699 -0
- sage_wheels/share/singular/LIB/SingularityDBM.lib +491 -0
- sage_wheels/share/singular/LIB/VecField.lib +1542 -0
- sage_wheels/share/singular/LIB/absfact.lib +959 -0
- sage_wheels/share/singular/LIB/ainvar.lib +730 -0
- sage_wheels/share/singular/LIB/aksaka.lib +419 -0
- sage_wheels/share/singular/LIB/alexpoly.lib +2542 -0
- sage_wheels/share/singular/LIB/algebra.lib +1193 -0
- sage_wheels/share/singular/LIB/all.lib +136 -0
- sage_wheels/share/singular/LIB/arcpoint.lib +514 -0
- sage_wheels/share/singular/LIB/arnold.lib +4553 -0
- sage_wheels/share/singular/LIB/arnoldclassify.lib +2058 -0
- sage_wheels/share/singular/LIB/arr.lib +3486 -0
- sage_wheels/share/singular/LIB/assprimeszerodim.lib +755 -0
- sage_wheels/share/singular/LIB/autgradalg.lib +3361 -0
- sage_wheels/share/singular/LIB/bfun.lib +1964 -0
- sage_wheels/share/singular/LIB/bimodules.lib +774 -0
- sage_wheels/share/singular/LIB/brillnoether.lib +226 -0
- sage_wheels/share/singular/LIB/brnoeth.lib +5017 -0
- sage_wheels/share/singular/LIB/central.lib +2169 -0
- sage_wheels/share/singular/LIB/chern.lib +4162 -0
- sage_wheels/share/singular/LIB/cimonom.lib +571 -0
- sage_wheels/share/singular/LIB/cisimplicial.lib +1835 -0
- sage_wheels/share/singular/LIB/classify.lib +3239 -0
- sage_wheels/share/singular/LIB/classify2.lib +1462 -0
- sage_wheels/share/singular/LIB/classifyMapGerms.lib +1515 -0
- sage_wheels/share/singular/LIB/classify_aeq.lib +3253 -0
- sage_wheels/share/singular/LIB/classifyceq.lib +2092 -0
- sage_wheels/share/singular/LIB/classifyci.lib +1133 -0
- sage_wheels/share/singular/LIB/combinat.lib +91 -0
- sage_wheels/share/singular/LIB/compregb.lib +276 -0
- sage_wheels/share/singular/LIB/control.lib +1636 -0
- sage_wheels/share/singular/LIB/crypto.lib +3795 -0
- sage_wheels/share/singular/LIB/curveInv.lib +667 -0
- sage_wheels/share/singular/LIB/curvepar.lib +1817 -0
- sage_wheels/share/singular/LIB/customstd.lib +100 -0
- sage_wheels/share/singular/LIB/deRham.lib +5979 -0
- sage_wheels/share/singular/LIB/decodegb.lib +2134 -0
- sage_wheels/share/singular/LIB/decomp.lib +1655 -0
- sage_wheels/share/singular/LIB/deflation.lib +872 -0
- sage_wheels/share/singular/LIB/deform.lib +925 -0
- sage_wheels/share/singular/LIB/difform.lib +3055 -0
- sage_wheels/share/singular/LIB/divisors.lib +750 -0
- sage_wheels/share/singular/LIB/dmod.lib +5817 -0
- sage_wheels/share/singular/LIB/dmodapp.lib +3269 -0
- sage_wheels/share/singular/LIB/dmodideal.lib +1211 -0
- sage_wheels/share/singular/LIB/dmodloc.lib +2645 -0
- sage_wheels/share/singular/LIB/dmodvar.lib +818 -0
- sage_wheels/share/singular/LIB/dummy.lib +17 -0
- sage_wheels/share/singular/LIB/elim.lib +1009 -0
- sage_wheels/share/singular/LIB/ellipticcovers.lib +548 -0
- sage_wheels/share/singular/LIB/enumpoints.lib +146 -0
- sage_wheels/share/singular/LIB/equising.lib +2127 -0
- sage_wheels/share/singular/LIB/ffmodstd.lib +2384 -0
- sage_wheels/share/singular/LIB/ffsolve.lib +1289 -0
- sage_wheels/share/singular/LIB/findifs.lib +778 -0
- sage_wheels/share/singular/LIB/finitediff.lib +1768 -0
- sage_wheels/share/singular/LIB/finvar.lib +7989 -0
- sage_wheels/share/singular/LIB/fpadim.lib +2429 -0
- sage_wheels/share/singular/LIB/fpalgebras.lib +1666 -0
- sage_wheels/share/singular/LIB/fpaprops.lib +1462 -0
- sage_wheels/share/singular/LIB/freegb.lib +3853 -0
- sage_wheels/share/singular/LIB/general.lib +1350 -0
- sage_wheels/share/singular/LIB/gfan.lib +1768 -0
- sage_wheels/share/singular/LIB/gitfan.lib +3130 -0
- sage_wheels/share/singular/LIB/gkdim.lib +99 -0
- sage_wheels/share/singular/LIB/gmspoly.lib +589 -0
- sage_wheels/share/singular/LIB/gmssing.lib +1739 -0
- sage_wheels/share/singular/LIB/goettsche.lib +909 -0
- sage_wheels/share/singular/LIB/graal.lib +1366 -0
- sage_wheels/share/singular/LIB/gradedModules.lib +2541 -0
- sage_wheels/share/singular/LIB/graphics.lib +360 -0
- sage_wheels/share/singular/LIB/grobcov.lib +7706 -0
- sage_wheels/share/singular/LIB/groups.lib +1123 -0
- sage_wheels/share/singular/LIB/grwalk.lib +507 -0
- sage_wheels/share/singular/LIB/hdepth.lib +194 -0
- sage_wheels/share/singular/LIB/help.cnf +57 -0
- sage_wheels/share/singular/LIB/hess.lib +1946 -0
- sage_wheels/share/singular/LIB/hnoether.lib +4292 -0
- sage_wheels/share/singular/LIB/hodge.lib +400 -0
- sage_wheels/share/singular/LIB/homolog.lib +1965 -0
- sage_wheels/share/singular/LIB/hyperel.lib +975 -0
- sage_wheels/share/singular/LIB/inout.lib +679 -0
- sage_wheels/share/singular/LIB/integralbasis.lib +6224 -0
- sage_wheels/share/singular/LIB/interval.lib +1418 -0
- sage_wheels/share/singular/LIB/intprog.lib +778 -0
- sage_wheels/share/singular/LIB/invar.lib +443 -0
- sage_wheels/share/singular/LIB/involut.lib +980 -0
- sage_wheels/share/singular/LIB/jacobson.lib +1215 -0
- sage_wheels/share/singular/LIB/kskernel.lib +534 -0
- sage_wheels/share/singular/LIB/latex.lib +3146 -0
- sage_wheels/share/singular/LIB/lejeune.lib +651 -0
- sage_wheels/share/singular/LIB/linalg.lib +2040 -0
- sage_wheels/share/singular/LIB/locnormal.lib +212 -0
- sage_wheels/share/singular/LIB/lrcalc.lib +526 -0
- sage_wheels/share/singular/LIB/makedbm.lib +294 -0
- sage_wheels/share/singular/LIB/mathml.lib +813 -0
- sage_wheels/share/singular/LIB/matrix.lib +1372 -0
- sage_wheels/share/singular/LIB/maxlike.lib +1132 -0
- sage_wheels/share/singular/LIB/methods.lib +212 -0
- sage_wheels/share/singular/LIB/moddiq.lib +322 -0
- sage_wheels/share/singular/LIB/modfinduni.lib +181 -0
- sage_wheels/share/singular/LIB/modnormal.lib +218 -0
- sage_wheels/share/singular/LIB/modprimdec.lib +1278 -0
- sage_wheels/share/singular/LIB/modquotient.lib +269 -0
- sage_wheels/share/singular/LIB/modstd.lib +1024 -0
- sage_wheels/share/singular/LIB/modular.lib +545 -0
- sage_wheels/share/singular/LIB/modules.lib +2561 -0
- sage_wheels/share/singular/LIB/modwalk.lib +609 -0
- sage_wheels/share/singular/LIB/mondromy.lib +1016 -0
- sage_wheels/share/singular/LIB/monomialideal.lib +3851 -0
- sage_wheels/share/singular/LIB/mprimdec.lib +2353 -0
- sage_wheels/share/singular/LIB/mregular.lib +1863 -0
- sage_wheels/share/singular/LIB/multigrading.lib +5629 -0
- sage_wheels/share/singular/LIB/ncHilb.lib +777 -0
- sage_wheels/share/singular/LIB/ncModslimgb.lib +791 -0
- sage_wheels/share/singular/LIB/ncalg.lib +16311 -0
- sage_wheels/share/singular/LIB/ncall.lib +31 -0
- sage_wheels/share/singular/LIB/ncdecomp.lib +468 -0
- sage_wheels/share/singular/LIB/ncfactor.lib +13371 -0
- sage_wheels/share/singular/LIB/ncfrac.lib +1023 -0
- sage_wheels/share/singular/LIB/nchilbert.lib +448 -0
- sage_wheels/share/singular/LIB/nchomolog.lib +759 -0
- sage_wheels/share/singular/LIB/ncloc.lib +361 -0
- sage_wheels/share/singular/LIB/ncpreim.lib +795 -0
- sage_wheels/share/singular/LIB/ncrat.lib +2849 -0
- sage_wheels/share/singular/LIB/nctools.lib +1887 -0
- sage_wheels/share/singular/LIB/nets.lib +1456 -0
- sage_wheels/share/singular/LIB/nfmodstd.lib +1000 -0
- sage_wheels/share/singular/LIB/nfmodsyz.lib +732 -0
- sage_wheels/share/singular/LIB/noether.lib +1106 -0
- sage_wheels/share/singular/LIB/normal.lib +8700 -0
- sage_wheels/share/singular/LIB/normaliz.lib +2226 -0
- sage_wheels/share/singular/LIB/ntsolve.lib +362 -0
- sage_wheels/share/singular/LIB/numerAlg.lib +560 -0
- sage_wheels/share/singular/LIB/numerDecom.lib +2261 -0
- sage_wheels/share/singular/LIB/olga.lib +1933 -0
- sage_wheels/share/singular/LIB/orbitparam.lib +351 -0
- sage_wheels/share/singular/LIB/parallel.lib +319 -0
- sage_wheels/share/singular/LIB/paraplanecurves.lib +3110 -0
- sage_wheels/share/singular/LIB/perron.lib +202 -0
- sage_wheels/share/singular/LIB/pfd.lib +2223 -0
- sage_wheels/share/singular/LIB/phindex.lib +642 -0
- sage_wheels/share/singular/LIB/pointid.lib +673 -0
- sage_wheels/share/singular/LIB/polybori.lib +1430 -0
- sage_wheels/share/singular/LIB/polyclass.lib +525 -0
- sage_wheels/share/singular/LIB/polylib.lib +1174 -0
- sage_wheels/share/singular/LIB/polymake.lib +1902 -0
- sage_wheels/share/singular/LIB/presolve.lib +1533 -0
- sage_wheels/share/singular/LIB/primdec.lib +9576 -0
- sage_wheels/share/singular/LIB/primdecint.lib +1782 -0
- sage_wheels/share/singular/LIB/primitiv.lib +401 -0
- sage_wheels/share/singular/LIB/puiseuxexpansions.lib +1631 -0
- sage_wheels/share/singular/LIB/purityfiltration.lib +960 -0
- sage_wheels/share/singular/LIB/qhmoduli.lib +1561 -0
- sage_wheels/share/singular/LIB/qmatrix.lib +293 -0
- sage_wheels/share/singular/LIB/random.lib +455 -0
- sage_wheels/share/singular/LIB/ratgb.lib +489 -0
- sage_wheels/share/singular/LIB/realclassify.lib +5759 -0
- sage_wheels/share/singular/LIB/realizationMatroids.lib +772 -0
- sage_wheels/share/singular/LIB/realrad.lib +1197 -0
- sage_wheels/share/singular/LIB/recover.lib +2628 -0
- sage_wheels/share/singular/LIB/redcgs.lib +3984 -0
- sage_wheels/share/singular/LIB/reesclos.lib +465 -0
- sage_wheels/share/singular/LIB/resbinomial.lib +2802 -0
- sage_wheels/share/singular/LIB/resgraph.lib +789 -0
- sage_wheels/share/singular/LIB/resjung.lib +820 -0
- sage_wheels/share/singular/LIB/resolve.lib +5110 -0
- sage_wheels/share/singular/LIB/resources.lib +170 -0
- sage_wheels/share/singular/LIB/reszeta.lib +5473 -0
- sage_wheels/share/singular/LIB/ring.lib +1328 -0
- sage_wheels/share/singular/LIB/ringgb.lib +343 -0
- sage_wheels/share/singular/LIB/rinvar.lib +1153 -0
- sage_wheels/share/singular/LIB/rootisolation.lib +1481 -0
- sage_wheels/share/singular/LIB/rootsmr.lib +709 -0
- sage_wheels/share/singular/LIB/rootsur.lib +886 -0
- sage_wheels/share/singular/LIB/rstandard.lib +607 -0
- sage_wheels/share/singular/LIB/rwalk.lib +336 -0
- sage_wheels/share/singular/LIB/sagbi.lib +1353 -0
- sage_wheels/share/singular/LIB/sagbiNormaliz.lib +1622 -0
- sage_wheels/share/singular/LIB/sagbiNormaliz0.lib +1498 -0
- sage_wheels/share/singular/LIB/sagbigrob.lib +449 -0
- sage_wheels/share/singular/LIB/schreyer.lib +321 -0
- sage_wheels/share/singular/LIB/schubert.lib +2551 -0
- sage_wheels/share/singular/LIB/sets.lib +524 -0
- sage_wheels/share/singular/LIB/sheafcoh.lib +1663 -0
- sage_wheels/share/singular/LIB/signcond.lib +437 -0
- sage_wheels/share/singular/LIB/sing.lib +1094 -0
- sage_wheels/share/singular/LIB/sing4ti2.lib +419 -0
- sage_wheels/share/singular/LIB/solve.lib +2243 -0
- sage_wheels/share/singular/LIB/spcurve.lib +1077 -0
- sage_wheels/share/singular/LIB/spectrum.lib +62 -0
- sage_wheels/share/singular/LIB/sresext.lib +757 -0
- sage_wheels/share/singular/LIB/ssi.lib +143 -0
- sage_wheels/share/singular/LIB/standard.lib +2769 -0
- sage_wheels/share/singular/LIB/stanleyreisner.lib +473 -0
- sage_wheels/share/singular/LIB/stdmodule.lib +547 -0
- sage_wheels/share/singular/LIB/stratify.lib +1070 -0
- sage_wheels/share/singular/LIB/surf.lib +506 -0
- sage_wheels/share/singular/LIB/surf_jupyter.lib +223 -0
- sage_wheels/share/singular/LIB/surfacesignature.lib +522 -0
- sage_wheels/share/singular/LIB/surfex.lib +1462 -0
- sage_wheels/share/singular/LIB/swalk.lib +877 -0
- sage_wheels/share/singular/LIB/symodstd.lib +1570 -0
- sage_wheels/share/singular/LIB/systhreads.lib +74 -0
- sage_wheels/share/singular/LIB/tasks.lib +1324 -0
- sage_wheels/share/singular/LIB/tateProdCplxNegGrad.lib +2412 -0
- sage_wheels/share/singular/LIB/teachstd.lib +858 -0
- sage_wheels/share/singular/LIB/template.lib +116 -0
- sage_wheels/share/singular/LIB/toric.lib +1119 -0
- sage_wheels/share/singular/LIB/transformation.lib +116 -0
- sage_wheels/share/singular/LIB/triang.lib +1197 -0
- sage_wheels/share/singular/LIB/tropical.lib +8741 -0
- sage_wheels/share/singular/LIB/tropicalEllipticCovers.lib +2922 -0
- sage_wheels/share/singular/LIB/tropicalNewton.lib +1128 -0
- sage_wheels/share/singular/LIB/tst.lib +1108 -0
- sage_wheels/share/singular/LIB/weierstr.lib +241 -0
- sage_wheels/share/singular/LIB/zeroset.lib +1478 -0
- sage_wheels/share/singular/emacs/.emacs-general +184 -0
- sage_wheels/share/singular/emacs/.emacs-singular +234 -0
- sage_wheels/share/singular/emacs/COPYING +44 -0
- sage_wheels/share/singular/emacs/cmd-cmpl.el +241 -0
- sage_wheels/share/singular/emacs/ex-cmpl.el +1681 -0
- sage_wheels/share/singular/emacs/hlp-cmpl.el +4318 -0
- sage_wheels/share/singular/emacs/lib-cmpl.el +179 -0
- sage_wheels/share/singular/emacs/singular.el +4273 -0
- sage_wheels/share/singular/emacs/singular.xpm +39 -0
- sage_wheels/share/singular/singular.idx +5002 -0
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
version="version methods.lib 4.3.1.3 Feb_2023 "; //$Id: 7a36197a385ecb3774d2bfa2365fbfbda5183461 $
|
|
3
|
+
category="Miscellaneous";
|
|
4
|
+
info="
|
|
5
|
+
LIBRARY: methods.lib installing methods in Singular
|
|
6
|
+
|
|
7
|
+
AUTHORS: J. Boehm, boehm @ mathematik.uni-kl.de
|
|
8
|
+
|
|
9
|
+
OVERVIEW:
|
|
10
|
+
|
|
11
|
+
Methods select the function to execute by the types of the input tuple.
|
|
12
|
+
The central function is installMethod, which takes a hashtable associating a tuple of
|
|
13
|
+
input types to function names and creates a corresponding procedure.
|
|
14
|
+
|
|
15
|
+
HashTables are lists with arbitrary index sets. They can be created by the
|
|
16
|
+
command hashTable. Their size can be determined by the command size. Values
|
|
17
|
+
can be extracted by selectKey or the * operator. HashTables can also be added
|
|
18
|
+
using addHashTables or the + operator.
|
|
19
|
+
|
|
20
|
+
Methods can be added with the + operator.
|
|
21
|
+
|
|
22
|
+
TYPES:
|
|
23
|
+
Method the class of all methods
|
|
24
|
+
HashTable the class of all hash tables
|
|
25
|
+
|
|
26
|
+
KEYWORDS:
|
|
27
|
+
methods, hashtables
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
PROCEDURES:
|
|
31
|
+
|
|
32
|
+
installMethod install a method
|
|
33
|
+
method make a method
|
|
34
|
+
hashTable make a HashTable
|
|
35
|
+
selectKey select a key in a HashTable, can also be used by *
|
|
36
|
+
addHashTables add two HashTables, can also be used by +
|
|
37
|
+
";
|
|
38
|
+
|
|
39
|
+
static proc mod_init()
|
|
40
|
+
{
|
|
41
|
+
newstruct("HashTable","list keys, list values");
|
|
42
|
+
system("install","HashTable","print",printHashTable,1);
|
|
43
|
+
system("install","HashTable","size",sizeHashTable,1);
|
|
44
|
+
system("install","HashTable","*",selectKey,2);
|
|
45
|
+
system("install","HashTable","+",addHashTables,2);
|
|
46
|
+
|
|
47
|
+
newstruct("Method","HashTable functionClosures");
|
|
48
|
+
|
|
49
|
+
system("install","Method","print",printMethod,1);
|
|
50
|
+
system("install","Method","+",addMethods,2);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
proc hashTable(list k, list v)
|
|
55
|
+
"USAGE: hashTable(k, v); k,v,lists
|
|
56
|
+
RETURN: makes a HashTable with keys k and values v
|
|
57
|
+
EXAMPLE: example hashTable, shows an example
|
|
58
|
+
"
|
|
59
|
+
{
|
|
60
|
+
HashTable H;
|
|
61
|
+
H.keys = k;
|
|
62
|
+
H.values = v;
|
|
63
|
+
return(H);
|
|
64
|
+
}
|
|
65
|
+
example
|
|
66
|
+
{ "EXAMPLE:"; echo=2;
|
|
67
|
+
HashTable H = hashTable(list("a","b","c"),list("aa","bb","cc"));
|
|
68
|
+
H;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
proc printHashTable(HashTable H)
|
|
73
|
+
{
|
|
74
|
+
for (int j=1; j<=size(H); j++)
|
|
75
|
+
{
|
|
76
|
+
print(string((H.keys)[j])+" => "+string((H.values)[j]));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
proc sizeHashTable(HashTable H)
|
|
81
|
+
{
|
|
82
|
+
return(size(H.keys));
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
proc selectKey(HashTable H, def k)
|
|
87
|
+
"USAGE: selectKey(H, k); H HashTable, k key
|
|
88
|
+
RETURN: returns the k-th value of H
|
|
89
|
+
EXAMPLE: example selectKey, shows an example
|
|
90
|
+
"
|
|
91
|
+
{
|
|
92
|
+
for (int j=1; j<=size(H); j++)
|
|
93
|
+
{
|
|
94
|
+
if ((H.keys)[j]==k){return((H.values)[j]);}
|
|
95
|
+
}
|
|
96
|
+
ERROR("key not found");
|
|
97
|
+
}
|
|
98
|
+
example
|
|
99
|
+
{ "EXAMPLE:"; echo=2;
|
|
100
|
+
HashTable H = hashTable(list("a","b","c"),list("aa","bb","cc"));
|
|
101
|
+
selectKey(H,"b");
|
|
102
|
+
selectKey(H,"d");
|
|
103
|
+
H*"b";
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
proc addHashTables(HashTable H, HashTable W)
|
|
108
|
+
"USAGE: addHashTables(H, L); H HashTable, L HashTable
|
|
109
|
+
RETURN: joins two hash tables with disjoint key sets
|
|
110
|
+
THEORY: At the moment, the function does not check whether the key sets are disjoint.
|
|
111
|
+
EXAMPLE: example addHashTables, shows an example
|
|
112
|
+
"
|
|
113
|
+
{
|
|
114
|
+
HashTable D;
|
|
115
|
+
D.keys = (H.keys)+(W.keys);
|
|
116
|
+
D.values = (H.values)+(W.values);
|
|
117
|
+
return(D);
|
|
118
|
+
}
|
|
119
|
+
example
|
|
120
|
+
{ "EXAMPLE:"; echo=2;
|
|
121
|
+
HashTable H = hashTable(list("a","b","c"),list("aa","bb","cc"));
|
|
122
|
+
HashTable W = hashTable(list("d","e","f"),list("aa","bb","cc"));
|
|
123
|
+
addHashTables(H,W);
|
|
124
|
+
H+W;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
proc method(HashTable #)
|
|
128
|
+
{
|
|
129
|
+
Method M;
|
|
130
|
+
//typeof(#);
|
|
131
|
+
//if (typeof(#)=="HashTable"){
|
|
132
|
+
M.functionClosures = #;
|
|
133
|
+
//} else
|
|
134
|
+
//{
|
|
135
|
+
// HashTable H;
|
|
136
|
+
// H.keys=list(#[1]);
|
|
137
|
+
//H.values=list(#[2]);
|
|
138
|
+
//M.functionClosures = H;
|
|
139
|
+
//}
|
|
140
|
+
return(M);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
proc printMethod(Method f)
|
|
144
|
+
{
|
|
145
|
+
print(f.functionClosures);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
proc addMethods(Method f, Method g)
|
|
149
|
+
{
|
|
150
|
+
Method M;
|
|
151
|
+
HashTable H = (f.functionClosures)+(g.functionClosures);
|
|
152
|
+
M.functionClosures = H;
|
|
153
|
+
return(M);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
proc installMethod(Method M,string fname)
|
|
157
|
+
"USAGE: installMethod(M, st); M Method, st string
|
|
158
|
+
RETURN: installs a method calling procedures according to M
|
|
159
|
+
EXAMPLE: example installMethod, shows an example
|
|
160
|
+
"
|
|
161
|
+
{
|
|
162
|
+
HashTable H = M.functionClosures;
|
|
163
|
+
//string fname = nameof(M);
|
|
164
|
+
//fname=fname[1..size(fname)-1];
|
|
165
|
+
string s = "";
|
|
166
|
+
string ff;
|
|
167
|
+
list v = H.values;
|
|
168
|
+
list k = H.keys;
|
|
169
|
+
string ki;
|
|
170
|
+
int i,j,l;
|
|
171
|
+
for (i=1; i<=size(H); i++)
|
|
172
|
+
{
|
|
173
|
+
ff = v[i];
|
|
174
|
+
ki="";
|
|
175
|
+
for (j=1; j<size(k[i]); j++)
|
|
176
|
+
{
|
|
177
|
+
ki=ki+"\""+k[i][j]+"\",";
|
|
178
|
+
}
|
|
179
|
+
ki=ki+"\""+k[i][size(k[i])]+"\"";
|
|
180
|
+
s=s+"branchTo("+ki+","+ff+");";
|
|
181
|
+
};
|
|
182
|
+
s=s+"ERROR(\"No method found\");";
|
|
183
|
+
//s;
|
|
184
|
+
intvec o=option(get);
|
|
185
|
+
option(noredefine);
|
|
186
|
+
proc `fname`=s;
|
|
187
|
+
exportto(Top,`fname`);
|
|
188
|
+
option(set,o);
|
|
189
|
+
}
|
|
190
|
+
example
|
|
191
|
+
{ "EXAMPLE:"; echo=2;
|
|
192
|
+
proc square(int i){return(i^2);}; export(square);
|
|
193
|
+
HashTable H1 = hashTable(list(list("int")),list("square"));
|
|
194
|
+
Method m1 = method(H1);
|
|
195
|
+
installMethod(m1,"tst");
|
|
196
|
+
tst(2);
|
|
197
|
+
proc kbase2(ideal I,int n){return(kbase(I,n));};export(kbase2);
|
|
198
|
+
HashTable H2 = hashTable(list(list("ideal","int")),list("kbase2"));
|
|
199
|
+
Method m2=method(H2);
|
|
200
|
+
Method m=m1+m2;
|
|
201
|
+
installMethod(m,"tst");
|
|
202
|
+
ring R=0,(x,y),dp;
|
|
203
|
+
ideal I = x^3,y^7;
|
|
204
|
+
I=std(I);
|
|
205
|
+
tst(I,2);
|
|
206
|
+
HashTable F = hashTable(list(list("int"),list("ideal","int")),list("square","kbase2"));
|
|
207
|
+
Method m3 = method(F);
|
|
208
|
+
installMethod(m3,"tst");
|
|
209
|
+
tst(I,2);
|
|
210
|
+
tst(3);
|
|
211
|
+
}
|
|
212
|
+
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
version="version moddiq.lib 4.3.2.2 Jun_2023 "; // $Id: 1a9cf95b4aa16fae3f71be46f8cf9290b2a90199 $
|
|
3
|
+
category="Commutative Algebra";
|
|
4
|
+
info="
|
|
5
|
+
LIBRARY: moddiq.lib Double ideal quotient using modular methods
|
|
6
|
+
|
|
7
|
+
AUTHORS: Y. Ishihara yishihara@rikkyo.ac.jp
|
|
8
|
+
|
|
9
|
+
OVERVIEW:
|
|
10
|
+
A library for computing ideal quotient and saturation in the polynomial ring
|
|
11
|
+
over the rational numbers using modular methods.
|
|
12
|
+
|
|
13
|
+
REFERENCES:
|
|
14
|
+
M. Noro, K. Yokoyama: Usage of Modular Techniques for Efficient Computation of Ideal Operations.
|
|
15
|
+
Math.Comput.Sci. 12: 1, 1-32. (2017).
|
|
16
|
+
|
|
17
|
+
PROCEDURES:
|
|
18
|
+
modQuotient(I,J); standard basis of (I:J) using modular methods
|
|
19
|
+
modSat(I,J); standard basis of (I:J^\infty) using modular methods
|
|
20
|
+
";
|
|
21
|
+
//UPCOMING PROCEDURES:
|
|
22
|
+
// moddiq(I,J); standard basis of (I:(I:J)) using modular methods
|
|
23
|
+
// modAssCheck(I,P); check if P is associated of I or not using modular methods
|
|
24
|
+
// IntermediatePrimaryDecomposition(I); compute intermediate primary decomposition of I
|
|
25
|
+
// by using modular method
|
|
26
|
+
|
|
27
|
+
LIB "polylib.lib";
|
|
28
|
+
LIB "elim.lib";
|
|
29
|
+
LIB "modular.lib";
|
|
30
|
+
LIB "modstd.lib";
|
|
31
|
+
|
|
32
|
+
proc modQuotient(def I, def J)
|
|
33
|
+
"USAGE: modQuotient(I,J); I,J ideal
|
|
34
|
+
RETURN: a standard basis of (I:J)
|
|
35
|
+
NOTE: The procedure computes a standard basis of (I:J) (over the rational
|
|
36
|
+
numbers) by using modular methods.
|
|
37
|
+
SEE ALSO: modular; quotient
|
|
38
|
+
EXAMPLE: example modQuotient; shows an example"
|
|
39
|
+
{
|
|
40
|
+
if(system("--cpus")<1) { return(quotient(I,J));}
|
|
41
|
+
I = modStd(I);
|
|
42
|
+
def IJ=modular("quotient",list(I,J),primeTest_quotient,
|
|
43
|
+
Modstd::deleteUnluckyPrimes_std,pTest_quotient,finalTest_quotient);
|
|
44
|
+
return(IJ);
|
|
45
|
+
}
|
|
46
|
+
example
|
|
47
|
+
{
|
|
48
|
+
"EXAMPLE:";
|
|
49
|
+
echo=2;
|
|
50
|
+
ring r=0,x(1..6),dp;
|
|
51
|
+
ideal i=cyclic(6);
|
|
52
|
+
ideal j=-15*var(5)+16*var(6)^3-60*var(6)^2+225*var(6)-4,2*var(5)^2-7*var(5)+2*var(6)^2-7*var(6)+28,(4*var(6)-1)*var(5)-var(6)+4,4*var(1)+var(5)+var(6),4*var(2)+var(5)+var(6),4*var(3)+var(5)+var(6),4*var(4)+var(5)+var(6);
|
|
53
|
+
modQuotient(i,modQuotient(i,j));
|
|
54
|
+
ideal id2=x(1)^2+x(1)*x(2)*x(3),x(2)^2-x(3)^3*x(2),x(3)^3+x(2)^5*x(1)*x(3);
|
|
55
|
+
quotient(id2,maxideal(3));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/* test if a prime number p is permissible for an ideal I
|
|
59
|
+
* i.e. it does not divide the denominator of any of the coefficients
|
|
60
|
+
* or numerator of any of the leading coefficients */
|
|
61
|
+
static proc isPermissible(int p,ideal I)
|
|
62
|
+
{
|
|
63
|
+
/* erase zero generators */
|
|
64
|
+
def J = simplify(I, 2);
|
|
65
|
+
|
|
66
|
+
/* clear denominators and compute the leading coefficients of
|
|
67
|
+
the cleared one and the original one*/
|
|
68
|
+
int n = ncols(J);
|
|
69
|
+
int i;
|
|
70
|
+
ideal K;
|
|
71
|
+
for(i = n; i > 0; i--)
|
|
72
|
+
{
|
|
73
|
+
K[i] = leadcoef(cleardenom(J[i]))*var(1)+leadcoef(J[i]);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/* change to characteristic p */
|
|
77
|
+
def br = basering;
|
|
78
|
+
list lbr = ringlist(br);
|
|
79
|
+
if (typeof(lbr[1]) == "int") { lbr[1] = p; }
|
|
80
|
+
else { lbr[1][1] = p; }
|
|
81
|
+
def rp = ring(lbr);
|
|
82
|
+
setring(rp);
|
|
83
|
+
ideal Kp = fetch(br, K);
|
|
84
|
+
|
|
85
|
+
/* test if any leading coefficient is missing */
|
|
86
|
+
if (intvec(size(Kp[1..n])) != 2:n) { setring(br); return(0); }
|
|
87
|
+
setring(br);
|
|
88
|
+
return(1);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/* test if the prime p is permissible for I and J */
|
|
92
|
+
static proc primeTest_quotient(int p, alias list args)
|
|
93
|
+
{
|
|
94
|
+
def I = args[1];
|
|
95
|
+
def J = args[2];
|
|
96
|
+
if(!isPermissible(p,I)){print("not permissible");return(0);}
|
|
97
|
+
if(!isPermissible(p,J)){print("not permissible");return(0);}
|
|
98
|
+
return(1);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/* test if 'command' applied to 'args' in characteristic p is the same as
|
|
102
|
+
'result' mapped to characteristic p */
|
|
103
|
+
static proc pTest_quotient(string command, alias list args, alias def result,
|
|
104
|
+
int p)
|
|
105
|
+
{
|
|
106
|
+
/* change to characteristic p */
|
|
107
|
+
def br = basering;
|
|
108
|
+
list lbr = ringlist(br);
|
|
109
|
+
if (typeof(lbr[1]) == "int") { lbr[1] = p; }
|
|
110
|
+
else { lbr[1][1] = p; }
|
|
111
|
+
def rp = ring(lbr);
|
|
112
|
+
setring(rp);
|
|
113
|
+
list args_fetched = fetch(br, args);
|
|
114
|
+
def Ip = args_fetched[1];
|
|
115
|
+
def Jp = args_fetched[2];
|
|
116
|
+
def Gp = fetch(br, result);
|
|
117
|
+
def IJp;
|
|
118
|
+
attrib(Ip, "isSB", 1);
|
|
119
|
+
attrib(Gp, "isSB", 1);
|
|
120
|
+
|
|
121
|
+
/* test if (Ip:Jp) is in Gp */
|
|
122
|
+
/* compute command(args) */
|
|
123
|
+
execute("IJp = "+command+"(Ip,Jp);");
|
|
124
|
+
int i;
|
|
125
|
+
for (i = ncols(IJp); i > 0; i--)
|
|
126
|
+
{
|
|
127
|
+
if (reduce(IJp[i], Gp, 1) != 0)
|
|
128
|
+
{
|
|
129
|
+
setring(br);
|
|
130
|
+
return(0);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/* test if Gp is in (Ip:Jp) */
|
|
135
|
+
ideal GpJp=Gp*Jp;
|
|
136
|
+
for (i = ncols(GpJp); i > 0; i--)
|
|
137
|
+
{
|
|
138
|
+
if (reduce(GpJp[i], Ip, 1) != 0) { setring(br); return(0); }
|
|
139
|
+
}
|
|
140
|
+
setring(br);
|
|
141
|
+
return(1);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/* test if 'result' is a GB of (I:J) */
|
|
145
|
+
static proc finalTest_quotient(string command, alias list args, def result)
|
|
146
|
+
{
|
|
147
|
+
/* test if result is in (I:J)*/
|
|
148
|
+
attrib(result, "isSB", 1);
|
|
149
|
+
int i;
|
|
150
|
+
def IJ=result*args[2];
|
|
151
|
+
for (i = ncols(IJ); i > 0; i--)
|
|
152
|
+
{
|
|
153
|
+
if (reduce(IJ[i], args[1], 1) != 0) {print("fail") return(0); }
|
|
154
|
+
}
|
|
155
|
+
return(1);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
proc modSat(def I, def J)
|
|
159
|
+
"USAGE: modSat(I,J); I,J ideal
|
|
160
|
+
RETURN: a standard basis of (I:J^\infty)
|
|
161
|
+
NOTE: The procedure computes a standard basis of (I:J^\infty) (over the rational
|
|
162
|
+
numbers) by using modular methods.
|
|
163
|
+
KEYWORDS: saturation
|
|
164
|
+
SEE ALSO: modular; sat_with_exp
|
|
165
|
+
EXAMPLE: example modSat; shows an example"
|
|
166
|
+
{
|
|
167
|
+
I = modStd(I);
|
|
168
|
+
def IJ=modular("sat_with_exp",list(I,J),primeTest_sat,
|
|
169
|
+
deleteUnluckyPrimes_sat,pTest_sat,finalTest_sat);
|
|
170
|
+
return(IJ);
|
|
171
|
+
}
|
|
172
|
+
example
|
|
173
|
+
{
|
|
174
|
+
"EXAMPLE:";
|
|
175
|
+
echo=2;
|
|
176
|
+
ring r=0,x(1..6),dp;
|
|
177
|
+
ideal i=cyclic(6);
|
|
178
|
+
ideal j=-15*var(5)+16*var(6)^3-60*var(6)^2+225*var(6)-4,2*var(5)^2-7*var(5)+2*var(6)^2-7*var(6)+28,(4*var(6)-1)*var(5)-var(6)+4,4*var(1)+var(5)+var(6),4*var(2)+var(5)+var(6),4*var(3)+var(5)+var(6),4*var(4)+var(5)+var(6);
|
|
179
|
+
modSat(i,modSat(i,j)[1])[1];
|
|
180
|
+
poly F = x(1)^5+x(2)^5+(x(1)-x(2))^2*x(1)*x(2)*x(3);
|
|
181
|
+
ideal J = jacob(F);
|
|
182
|
+
modSat(J,maxideal(1));
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/* test if the prime p is permissible for I and J */
|
|
186
|
+
static proc primeTest_sat(int p, alias list args)
|
|
187
|
+
{
|
|
188
|
+
return(primeTest_quotient(p,args));
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/* find entries in modresults which come from unlucky primes.
|
|
192
|
+
* For this, sort the entries into categories depending on their leading
|
|
193
|
+
* ideal and return the indices in all but the biggest category.
|
|
194
|
+
* Referring to Modstd::deleteUnlickyPrimes_std. */
|
|
195
|
+
static proc deleteUnluckyPrimes_sat(alias list modresults)
|
|
196
|
+
{
|
|
197
|
+
int size_modresults = size(modresults);
|
|
198
|
+
|
|
199
|
+
/* sort results into categories.
|
|
200
|
+
* each category is represented by three entries:
|
|
201
|
+
* - the corresponding leading ideal
|
|
202
|
+
* - the number of elements
|
|
203
|
+
* - the indices of the elements
|
|
204
|
+
*/
|
|
205
|
+
list cat;
|
|
206
|
+
int size_cat;
|
|
207
|
+
def L=modresults[1][1]; // dummy assign to get the type of L
|
|
208
|
+
int i;
|
|
209
|
+
int j;
|
|
210
|
+
for (i = 1; i <= size_modresults; i++)
|
|
211
|
+
{
|
|
212
|
+
L = lead(modresults[i][1]);
|
|
213
|
+
attrib(L, "isSB", 1);
|
|
214
|
+
for (j = 1; j <= size_cat; j++)
|
|
215
|
+
{
|
|
216
|
+
if (size(L) == size(cat[j][1]))
|
|
217
|
+
{
|
|
218
|
+
if (size(reduce(L, cat[j][1], 5)) == 0)
|
|
219
|
+
{
|
|
220
|
+
if (size(reduce(cat[j][1], L, 5)) == 0)
|
|
221
|
+
{
|
|
222
|
+
cat[j][2] = cat[j][2]+1;
|
|
223
|
+
cat[j][3][cat[j][2]] = i;
|
|
224
|
+
break;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
if (j > size_cat)
|
|
230
|
+
{
|
|
231
|
+
size_cat++;
|
|
232
|
+
cat[size_cat] = list();
|
|
233
|
+
cat[size_cat][1] = L;
|
|
234
|
+
cat[size_cat][2] = 1;
|
|
235
|
+
cat[size_cat][3] = list(i);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/* find the biggest categories */
|
|
240
|
+
int cat_max = 1;
|
|
241
|
+
int max = cat[1][2];
|
|
242
|
+
for (i = 2; i <= size_cat; i++)
|
|
243
|
+
{
|
|
244
|
+
if (cat[i][2] > max)
|
|
245
|
+
{
|
|
246
|
+
cat_max = i;
|
|
247
|
+
max = cat[i][2];
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/* return all other indices */
|
|
252
|
+
list unluckyIndices;
|
|
253
|
+
for (i = 1; i <= size_cat; i++)
|
|
254
|
+
{
|
|
255
|
+
if (i != cat_max) { unluckyIndices = unluckyIndices + cat[i][3]; }
|
|
256
|
+
}
|
|
257
|
+
return(unluckyIndices);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/* test if 'command' applied to 'args' in characteristic p is the same as
|
|
261
|
+
'result' mapped to characteristic p */
|
|
262
|
+
static proc pTest_sat(string command, alias list args, alias def result,
|
|
263
|
+
int p)
|
|
264
|
+
{
|
|
265
|
+
/* change to characteristic p */
|
|
266
|
+
def br = basering;
|
|
267
|
+
list lbr = ringlist(br);
|
|
268
|
+
if (typeof(lbr[1]) == "int") { lbr[1] = p; }
|
|
269
|
+
else { lbr[1][1] = p; }
|
|
270
|
+
def rp = ring(lbr);
|
|
271
|
+
setring(rp);
|
|
272
|
+
list args_fetched = fetch(br, args);
|
|
273
|
+
def Ip = args_fetched[1];
|
|
274
|
+
def Jp = args_fetched[2];
|
|
275
|
+
def pResult = fetch(br, result);
|
|
276
|
+
def Gp=pResult[1];
|
|
277
|
+
def IJp;
|
|
278
|
+
attrib(Ip, "isSB", 1);
|
|
279
|
+
attrib(Gp, "isSB", 1);
|
|
280
|
+
|
|
281
|
+
/* test if (Ip:Jp^\infty) is in Gp */
|
|
282
|
+
/* compute command(args) */
|
|
283
|
+
execute("IJp = "+command+"(Ip,Jp)[1];");
|
|
284
|
+
int i;
|
|
285
|
+
for (i = ncols(IJp); i > 0; i--)
|
|
286
|
+
{
|
|
287
|
+
if (reduce(IJp[i], Gp, 5) != 0)
|
|
288
|
+
{
|
|
289
|
+
setring(br);
|
|
290
|
+
return(0);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/* test if Gp is in (Ip:Jp^\infty) */
|
|
295
|
+
for (i = ncols(Gp); i > 0; i--)
|
|
296
|
+
{
|
|
297
|
+
if (reduce(Gp[i], IJp, 5) != 0) { setring(br); return(0); }
|
|
298
|
+
}
|
|
299
|
+
setring(br);
|
|
300
|
+
return(1);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
/* test if 'result' is a GB of (I:J^\infty) */
|
|
304
|
+
static proc finalTest_sat(string command, alias list args, def result)
|
|
305
|
+
{
|
|
306
|
+
/* test if result is in (I:J^\infty)*/
|
|
307
|
+
int i;
|
|
308
|
+
ideal H = result[1];
|
|
309
|
+
int m=0;
|
|
310
|
+
for (i = 0 ; i < result[2]; i++){m++;}
|
|
311
|
+
ideal JGm;
|
|
312
|
+
for (i = 0 ; i < size(args[2]); i++)
|
|
313
|
+
{
|
|
314
|
+
JGm = JGm + args[2]^m;
|
|
315
|
+
}
|
|
316
|
+
def K=H*JGm;
|
|
317
|
+
for (i = ncols(K); i > 0; i--)
|
|
318
|
+
{
|
|
319
|
+
if (reduce(K[i], args[1], 5) != 0) {print("fail") return(0); }
|
|
320
|
+
}
|
|
321
|
+
return(1);
|
|
322
|
+
}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
version="version modfinduni.lib 4.4.0.0 Dec_2023 "; // $Id: 69c17fd1790f448fc2f1a7f30ac28a8aec62c6a6 $
|
|
3
|
+
category="Commutative Algebra";
|
|
4
|
+
info="
|
|
5
|
+
LIBRARY: modfinduni.lib finduni using modular methods
|
|
6
|
+
|
|
7
|
+
AUTHORS: H. Schoenemann hannes@mathematik.uni-kl.de
|
|
8
|
+
|
|
9
|
+
OVERVIEW: parallel version of finduni via modular.lib
|
|
10
|
+
|
|
11
|
+
PROCEDURES:
|
|
12
|
+
modFinduni(I); finduni of I using modular methods
|
|
13
|
+
";
|
|
14
|
+
|
|
15
|
+
LIB "modular.lib";
|
|
16
|
+
|
|
17
|
+
proc modFinduni(ideal I)
|
|
18
|
+
"USAGE: modFinduni(I); I ideal
|
|
19
|
+
RETURN:
|
|
20
|
+
NOTE: The procedure computes a standard basis of I (over the rational
|
|
21
|
+
numbers) by using modular methods.
|
|
22
|
+
SEE ALSO: modular
|
|
23
|
+
EXAMPLE: example modFinduni; shows an example"
|
|
24
|
+
{
|
|
25
|
+
/* save options */
|
|
26
|
+
intvec opt = option(get);
|
|
27
|
+
option(redSB);
|
|
28
|
+
/* choose the right command */
|
|
29
|
+
string command = "nFinduni";
|
|
30
|
+
|
|
31
|
+
/* call modular() */
|
|
32
|
+
I = modular(command, list(I), primeTest_std,
|
|
33
|
+
deleteUnluckyPrimes_default, pTest_default,
|
|
34
|
+
finalTest_finduni,536870909);
|
|
35
|
+
/* return the result */
|
|
36
|
+
option(set, opt);
|
|
37
|
+
return(I);
|
|
38
|
+
}
|
|
39
|
+
example
|
|
40
|
+
{
|
|
41
|
+
"EXAMPLE:";
|
|
42
|
+
echo = 2;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/* test if the prime p is suitable for the input, i.e. it does not divide
|
|
46
|
+
* the numerator or denominator of any of the coefficients */
|
|
47
|
+
static proc primeTest_std(int p, alias list args)
|
|
48
|
+
{
|
|
49
|
+
/* erase zero generators */
|
|
50
|
+
def I = simplify(args[1], 2);
|
|
51
|
+
|
|
52
|
+
/* clear denominators and count the terms */
|
|
53
|
+
def J=I; // dummy assign, to get the type of I
|
|
54
|
+
ideal K;
|
|
55
|
+
int n = ncols(I);
|
|
56
|
+
intvec sizes;
|
|
57
|
+
number cnt;
|
|
58
|
+
int i;
|
|
59
|
+
for(i = n; i > 0; i--)
|
|
60
|
+
{
|
|
61
|
+
J[i] = cleardenom(I[i]);
|
|
62
|
+
cnt = leadcoef(J[i])/leadcoef(I[i]);
|
|
63
|
+
K[i] = numerator(cnt)*var(1)+denominator(cnt);
|
|
64
|
+
}
|
|
65
|
+
sizes = size(J[1..n]);
|
|
66
|
+
|
|
67
|
+
/* change to characteristic p */
|
|
68
|
+
def br = basering;
|
|
69
|
+
list lbr = ringlist(br);
|
|
70
|
+
if (typeof(lbr[1]) == "int") { lbr[1] = p; }
|
|
71
|
+
else { lbr[1][1] = p; }
|
|
72
|
+
def rp = ring(lbr);
|
|
73
|
+
setring(rp);
|
|
74
|
+
def Jp = fetch(br, J);
|
|
75
|
+
ideal Kp = fetch(br, K);
|
|
76
|
+
|
|
77
|
+
/* test if any coefficient is missing */
|
|
78
|
+
if (intvec(size(Kp[1..n])) != 2:n) { setring(br); return(0); }
|
|
79
|
+
if (intvec(size(Jp[1..n])) != sizes) { setring(br); return(0); }
|
|
80
|
+
setring(br);
|
|
81
|
+
return(1);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
static proc deleteUnluckyPrimes_default(alias list modresults)
|
|
85
|
+
{
|
|
86
|
+
return(list());
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
proc nFinduni(ideal I)
|
|
90
|
+
{
|
|
91
|
+
attrib(I,"isSB",1);
|
|
92
|
+
I=finduni(I);
|
|
93
|
+
I=simplify(I,1);
|
|
94
|
+
return(I);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/* find entries in modresults which come from unlucky primes.
|
|
98
|
+
* For this, sort the entries into categories depending on their leading
|
|
99
|
+
* ideal and return the indices in all but the biggest category. */
|
|
100
|
+
static proc deleteUnluckyPrimes_std(alias list modresults)
|
|
101
|
+
{
|
|
102
|
+
int size_modresults = size(modresults);
|
|
103
|
+
|
|
104
|
+
/* sort results into categories.
|
|
105
|
+
* each category is represented by three entries:
|
|
106
|
+
* - the corresponding leading ideal
|
|
107
|
+
* - the number of elements
|
|
108
|
+
* - the indices of the elements
|
|
109
|
+
*/
|
|
110
|
+
list cat;
|
|
111
|
+
int size_cat;
|
|
112
|
+
def L=modresults[1]; // dummy assign to get the type of L
|
|
113
|
+
int i;
|
|
114
|
+
int j;
|
|
115
|
+
for (i = 1; i <= size_modresults; i++)
|
|
116
|
+
{
|
|
117
|
+
L = lead(modresults[i]);
|
|
118
|
+
attrib(L, "isSB", 1);
|
|
119
|
+
for (j = 1; j <= size_cat; j++)
|
|
120
|
+
{
|
|
121
|
+
if (size(L) == size(cat[j][1])
|
|
122
|
+
&& size(reduce(L, cat[j][1], 5)) == 0
|
|
123
|
+
&& size(reduce(cat[j][1], L, 5)) == 0)
|
|
124
|
+
{
|
|
125
|
+
cat[j][2] = cat[j][2]+1;
|
|
126
|
+
cat[j][3][cat[j][2]] = i;
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (j > size_cat)
|
|
131
|
+
{
|
|
132
|
+
size_cat++;
|
|
133
|
+
cat[size_cat] = list();
|
|
134
|
+
cat[size_cat][1] = L;
|
|
135
|
+
cat[size_cat][2] = 1;
|
|
136
|
+
cat[size_cat][3] = list(i);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/* find the biggest categories */
|
|
141
|
+
int cat_max = 1;
|
|
142
|
+
int max = cat[1][2];
|
|
143
|
+
for (i = 2; i <= size_cat; i++)
|
|
144
|
+
{
|
|
145
|
+
if (cat[i][2] > max)
|
|
146
|
+
{
|
|
147
|
+
cat_max = i;
|
|
148
|
+
max = cat[i][2];
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/* return all other indices */
|
|
153
|
+
list unluckyIndices;
|
|
154
|
+
for (i = 1; i <= size_cat; i++)
|
|
155
|
+
{
|
|
156
|
+
if (i != cat_max) { unluckyIndices = unluckyIndices + cat[i][3]; }
|
|
157
|
+
}
|
|
158
|
+
return(unluckyIndices);
|
|
159
|
+
}
|
|
160
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
161
|
+
|
|
162
|
+
/* test if 'result' is finduni of the input ideal */
|
|
163
|
+
static proc finalTest_finduni(string command, alias list args, def result)
|
|
164
|
+
{
|
|
165
|
+
/* test if args[1] is in result */
|
|
166
|
+
int i;
|
|
167
|
+
ideal I=args[1];
|
|
168
|
+
attrib(I,"isSB",1);
|
|
169
|
+
for (i = ncols(result); i > 0; i--)
|
|
170
|
+
{
|
|
171
|
+
if (reduce(result[i], I, 5) != 0) { return(0); }
|
|
172
|
+
}
|
|
173
|
+
return(1);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
static proc pTest_default(string command, alias list args, alias def result,
|
|
177
|
+
int p)
|
|
178
|
+
{
|
|
179
|
+
return(1);
|
|
180
|
+
}
|
|
181
|
+
|