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,61 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-singular
|
|
2
|
+
"""
|
|
3
|
+
libSingular: Function Factory
|
|
4
|
+
|
|
5
|
+
AUTHORS:
|
|
6
|
+
|
|
7
|
+
- Martin Albrecht (2010-01): initial version
|
|
8
|
+
"""
|
|
9
|
+
# ****************************************************************************
|
|
10
|
+
# Copyright (C) 2010 Martin Albrecht <M.R.Albrecht@rhul.ac.uk>
|
|
11
|
+
#
|
|
12
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
13
|
+
# https://www.gnu.org/licenses/
|
|
14
|
+
# ****************************************************************************
|
|
15
|
+
|
|
16
|
+
from sage.libs.singular.function import singular_function, lib, list_of_functions
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class SingularFunctionFactory:
|
|
20
|
+
"""
|
|
21
|
+
A convenient interface to libsingular functions.
|
|
22
|
+
"""
|
|
23
|
+
def __getattr__(self, name):
|
|
24
|
+
"""
|
|
25
|
+
EXAMPLES::
|
|
26
|
+
|
|
27
|
+
sage: import sage.libs.singular.function_factory
|
|
28
|
+
sage: groebner = sage.libs.singular.function_factory.ff.groebner
|
|
29
|
+
sage: groebner
|
|
30
|
+
groebner (singular function)
|
|
31
|
+
|
|
32
|
+
sage: import sage.libs.singular.function_factory
|
|
33
|
+
sage: primdecSY = sage.libs.singular.function_factory.ff.primdec__lib.primdecSY
|
|
34
|
+
sage: primdecSY
|
|
35
|
+
primdecSY (singular function)
|
|
36
|
+
"""
|
|
37
|
+
if name.startswith("_"):
|
|
38
|
+
raise AttributeError("Singular Function Factory has no attribute '%s'" % name)
|
|
39
|
+
|
|
40
|
+
try:
|
|
41
|
+
return singular_function(name)
|
|
42
|
+
except NameError:
|
|
43
|
+
if name.endswith("__lib"):
|
|
44
|
+
name = name[:-5]
|
|
45
|
+
lib(name + ".lib")
|
|
46
|
+
return SingularFunctionFactory()
|
|
47
|
+
else:
|
|
48
|
+
raise NameError("function or package '%s' unknown." % (name))
|
|
49
|
+
|
|
50
|
+
def __dir__(self):
|
|
51
|
+
"""
|
|
52
|
+
EXAMPLES::
|
|
53
|
+
|
|
54
|
+
sage: import sage.libs.singular.function_factory
|
|
55
|
+
sage: "groebner" in sage.libs.singular.function_factory.ff.__dir__()
|
|
56
|
+
True
|
|
57
|
+
"""
|
|
58
|
+
return list_of_functions()
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
ff = SingularFunctionFactory()
|
|
Binary file
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-singular
|
|
2
|
+
from sage.libs.singular.decl cimport skStrategy, ring
|
|
3
|
+
|
|
4
|
+
from sage.rings.polynomial.multi_polynomial_libsingular cimport \
|
|
5
|
+
MPolynomialRing_libsingular, MPolynomial_libsingular
|
|
6
|
+
from sage.structure.sage_object cimport SageObject
|
|
7
|
+
from sage.rings.polynomial.plural cimport NCPolynomialRing_plural, NCPolynomial_plural
|
|
8
|
+
|
|
9
|
+
cdef class GroebnerStrategy(SageObject):
|
|
10
|
+
cdef skStrategy *_strat
|
|
11
|
+
cdef ring *_parent_ring
|
|
12
|
+
cdef MPolynomialRing_libsingular _parent
|
|
13
|
+
cdef object _ideal
|
|
14
|
+
|
|
15
|
+
cpdef MPolynomial_libsingular normal_form(self, MPolynomial_libsingular p)
|
|
16
|
+
|
|
17
|
+
cdef class NCGroebnerStrategy(SageObject):
|
|
18
|
+
cdef skStrategy *_strat
|
|
19
|
+
cdef NCPolynomialRing_plural _parent
|
|
20
|
+
cdef object _ideal
|
|
21
|
+
|
|
22
|
+
cpdef NCPolynomial_plural normal_form(self, NCPolynomial_plural p)
|
|
@@ -0,0 +1,582 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-singular
|
|
2
|
+
"""
|
|
3
|
+
Singular's Groebner Strategy Objects
|
|
4
|
+
|
|
5
|
+
AUTHORS:
|
|
6
|
+
|
|
7
|
+
- Martin Albrecht (2009-07): initial implementation
|
|
8
|
+
- Michael Brickenstein (2009-07): initial implementation
|
|
9
|
+
- Hans Schoenemann (2009-07): initial implementation
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
#*****************************************************************************
|
|
13
|
+
# Copyright (C) 2009 Martin Albrecht <M.R.Albrecht@rhul.ac.uk>
|
|
14
|
+
# Copyright (C) 2009 Michael Brickenstein <brickenstein@mfo.de>
|
|
15
|
+
# Copyright (C) 2009 Hans Schoenemann <hannes@mathematik.uni-kl.de>
|
|
16
|
+
#
|
|
17
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
18
|
+
# http://www.gnu.org/licenses/
|
|
19
|
+
#*****************************************************************************
|
|
20
|
+
|
|
21
|
+
cdef extern from *: # hack to get at cython macro
|
|
22
|
+
int unlikely(int)
|
|
23
|
+
int likely(int)
|
|
24
|
+
|
|
25
|
+
from sage.structure.richcmp cimport richcmp
|
|
26
|
+
from sage.libs.singular.decl cimport ideal, ring, poly, currRing
|
|
27
|
+
from sage.libs.singular.decl cimport rChangeCurrRing
|
|
28
|
+
from sage.libs.singular.decl cimport new_skStrategy, delete_skStrategy, id_RankFreeModule
|
|
29
|
+
from sage.libs.singular.decl cimport initEcartBBA, enterSBba, initBuchMoraCrit, initS, pNorm, id_Delete, kTest
|
|
30
|
+
from sage.libs.singular.decl cimport omfree, redNF, p_Copy, redtailBba
|
|
31
|
+
|
|
32
|
+
from sage.libs.singular.ring cimport singular_ring_reference, singular_ring_delete
|
|
33
|
+
|
|
34
|
+
from sage.rings.polynomial.multi_polynomial_ideal import MPolynomialIdeal, NCPolynomialIdeal
|
|
35
|
+
from sage.rings.polynomial.multi_polynomial_ideal_libsingular cimport sage_ideal_to_singular_ideal
|
|
36
|
+
from sage.rings.polynomial.multi_polynomial_libsingular cimport MPolynomial_libsingular, MPolynomialRing_libsingular, new_MP
|
|
37
|
+
from sage.rings.polynomial.plural cimport new_NCP
|
|
38
|
+
|
|
39
|
+
cdef class GroebnerStrategy(SageObject):
|
|
40
|
+
"""
|
|
41
|
+
A Wrapper for Singular's Groebner Strategy Object.
|
|
42
|
+
|
|
43
|
+
This object provides functions for normal form computations and
|
|
44
|
+
other functions for Groebner basis computation.
|
|
45
|
+
|
|
46
|
+
ALGORITHM:
|
|
47
|
+
|
|
48
|
+
Uses Singular via libSINGULAR
|
|
49
|
+
"""
|
|
50
|
+
def __cinit__(self, L):
|
|
51
|
+
"""
|
|
52
|
+
Create a new :class:`GroebnerStrategy` object for the
|
|
53
|
+
generators of the ideal ``L``.
|
|
54
|
+
|
|
55
|
+
INPUT:
|
|
56
|
+
|
|
57
|
+
- ``L`` -- a multivariate polynomial ideal
|
|
58
|
+
|
|
59
|
+
EXAMPLES::
|
|
60
|
+
|
|
61
|
+
sage: from sage.libs.singular.groebner_strategy import GroebnerStrategy
|
|
62
|
+
sage: P.<x,y,z> = PolynomialRing(QQ)
|
|
63
|
+
sage: I = Ideal([x+z,y+z+1])
|
|
64
|
+
sage: strat = GroebnerStrategy(I); strat
|
|
65
|
+
Groebner Strategy for ideal generated by 2 elements
|
|
66
|
+
over Multivariate Polynomial Ring in x, y, z over Rational Field
|
|
67
|
+
|
|
68
|
+
TESTS::
|
|
69
|
+
|
|
70
|
+
sage: from sage.libs.singular.groebner_strategy import GroebnerStrategy
|
|
71
|
+
sage: strat = GroebnerStrategy(None)
|
|
72
|
+
Traceback (most recent call last):
|
|
73
|
+
...
|
|
74
|
+
TypeError: First parameter must be a multivariate polynomial ideal.
|
|
75
|
+
|
|
76
|
+
sage: P.<x,y,z> = PolynomialRing(QQ,order='neglex')
|
|
77
|
+
sage: I = Ideal([x+z,y+z+1])
|
|
78
|
+
sage: strat = GroebnerStrategy(I)
|
|
79
|
+
Traceback (most recent call last):
|
|
80
|
+
...
|
|
81
|
+
NotImplementedError: The local case is not implemented yet.
|
|
82
|
+
|
|
83
|
+
sage: P.<x,y,z> = PolynomialRing(CC,order='neglex')
|
|
84
|
+
sage: I = Ideal([x+z,y+z+1])
|
|
85
|
+
sage: strat = GroebnerStrategy(I)
|
|
86
|
+
Traceback (most recent call last):
|
|
87
|
+
...
|
|
88
|
+
TypeError: First parameter's ring must be multivariate polynomial ring via libsingular.
|
|
89
|
+
|
|
90
|
+
sage: P.<x,y,z> = PolynomialRing(ZZ)
|
|
91
|
+
sage: I = Ideal([x+z,y+z+1])
|
|
92
|
+
sage: strat = GroebnerStrategy(I)
|
|
93
|
+
Traceback (most recent call last):
|
|
94
|
+
...
|
|
95
|
+
NotImplementedError: Only coefficient fields are implemented so far.
|
|
96
|
+
|
|
97
|
+
Check that :issue:`27508` is fixed::
|
|
98
|
+
|
|
99
|
+
sage: R2.<x,y> = PolynomialRing(QQ, 2, order='lex')
|
|
100
|
+
sage: I2 = R2.ideal(["x^2 - x", "y^2 - y"])
|
|
101
|
+
sage: R2("x^2 + y").mod(I2), R2("x + y^2").mod(I2)
|
|
102
|
+
(x + y, x + y)
|
|
103
|
+
"""
|
|
104
|
+
if not isinstance(L, MPolynomialIdeal):
|
|
105
|
+
raise TypeError("First parameter must be a multivariate polynomial ideal.")
|
|
106
|
+
|
|
107
|
+
if not isinstance(L.ring(), MPolynomialRing_libsingular):
|
|
108
|
+
raise TypeError("First parameter's ring must be multivariate polynomial ring via libsingular.")
|
|
109
|
+
|
|
110
|
+
self._ideal = L
|
|
111
|
+
|
|
112
|
+
cdef MPolynomialRing_libsingular R = <MPolynomialRing_libsingular>L.ring()
|
|
113
|
+
self._parent = R
|
|
114
|
+
self._parent_ring = singular_ring_reference(R._ring)
|
|
115
|
+
|
|
116
|
+
if not R.term_order().is_global():
|
|
117
|
+
raise NotImplementedError("The local case is not implemented yet.")
|
|
118
|
+
|
|
119
|
+
if not R.base_ring().is_field():
|
|
120
|
+
raise NotImplementedError("Only coefficient fields are implemented so far.")
|
|
121
|
+
|
|
122
|
+
if (R._ring != currRing):
|
|
123
|
+
rChangeCurrRing(R._ring)
|
|
124
|
+
|
|
125
|
+
cdef ideal *i = sage_ideal_to_singular_ideal(L)
|
|
126
|
+
self._strat = new_skStrategy()
|
|
127
|
+
|
|
128
|
+
self._strat.ak = id_RankFreeModule(i, R._ring)
|
|
129
|
+
#- creating temp data structures
|
|
130
|
+
initBuchMoraCrit(self._strat)
|
|
131
|
+
self._strat.initEcart = initEcartBBA
|
|
132
|
+
self._strat.enterS = enterSBba
|
|
133
|
+
#- set S
|
|
134
|
+
self._strat.sl = -1
|
|
135
|
+
#- init local data struct
|
|
136
|
+
initS(i, NULL, self._strat)
|
|
137
|
+
self._strat.noTailReduction = False
|
|
138
|
+
|
|
139
|
+
cdef int j
|
|
140
|
+
cdef bint base_ring_is_field = R.base_ring().is_field()
|
|
141
|
+
if (R._ring != currRing):
|
|
142
|
+
rChangeCurrRing(R._ring)
|
|
143
|
+
if base_ring_is_field:
|
|
144
|
+
for j in range(self._strat.sl, -1, -1):
|
|
145
|
+
pNorm(self._strat.S[j])
|
|
146
|
+
|
|
147
|
+
id_Delete(&i, R._ring)
|
|
148
|
+
kTest(self._strat)
|
|
149
|
+
|
|
150
|
+
def __dealloc__(self):
|
|
151
|
+
"""
|
|
152
|
+
TESTS::
|
|
153
|
+
|
|
154
|
+
sage: from sage.libs.singular.groebner_strategy import GroebnerStrategy
|
|
155
|
+
sage: P.<x,y,z> = PolynomialRing(GF(32003))
|
|
156
|
+
sage: I = Ideal([x + z, y + z])
|
|
157
|
+
sage: strat = GroebnerStrategy(I)
|
|
158
|
+
sage: del strat
|
|
159
|
+
"""
|
|
160
|
+
# WARNING: the Cython class self._parent is no longer accessible!
|
|
161
|
+
# see https://github.com/sagemath/sage/issues/11339
|
|
162
|
+
cdef ring *oldRing = NULL
|
|
163
|
+
if self._strat:
|
|
164
|
+
omfree(self._strat.sevS)
|
|
165
|
+
omfree(self._strat.ecartS)
|
|
166
|
+
omfree(self._strat.T)
|
|
167
|
+
omfree(self._strat.sevT)
|
|
168
|
+
omfree(self._strat.R)
|
|
169
|
+
omfree(self._strat.S_2_R)
|
|
170
|
+
omfree(self._strat.L)
|
|
171
|
+
omfree(self._strat.B)
|
|
172
|
+
omfree(self._strat.fromQ)
|
|
173
|
+
id_Delete(&self._strat.Shdl, self._parent_ring)
|
|
174
|
+
|
|
175
|
+
if self._parent_ring != currRing:
|
|
176
|
+
oldRing = currRing
|
|
177
|
+
rChangeCurrRing(self._parent_ring)
|
|
178
|
+
delete_skStrategy(self._strat)
|
|
179
|
+
rChangeCurrRing(oldRing)
|
|
180
|
+
else:
|
|
181
|
+
delete_skStrategy(self._strat)
|
|
182
|
+
if self._parent_ring:
|
|
183
|
+
singular_ring_delete(self._parent_ring)
|
|
184
|
+
|
|
185
|
+
def _repr_(self) -> str:
|
|
186
|
+
"""
|
|
187
|
+
TESTS::
|
|
188
|
+
|
|
189
|
+
sage: from sage.libs.singular.groebner_strategy import GroebnerStrategy
|
|
190
|
+
sage: P.<x,y,z> = PolynomialRing(GF(32003))
|
|
191
|
+
sage: I = Ideal([x + z, y + z])
|
|
192
|
+
sage: strat = GroebnerStrategy(I)
|
|
193
|
+
sage: strat # indirect doctest
|
|
194
|
+
Groebner Strategy for ideal generated by 2 elements over
|
|
195
|
+
Multivariate Polynomial Ring in x, y, z over Finite Field of size 32003
|
|
196
|
+
"""
|
|
197
|
+
return "Groebner Strategy for ideal generated by %d elements over %s" % (self._ideal.ngens(), self._parent)
|
|
198
|
+
|
|
199
|
+
def ideal(self):
|
|
200
|
+
"""
|
|
201
|
+
Return the ideal this strategy object is defined for.
|
|
202
|
+
|
|
203
|
+
EXAMPLES::
|
|
204
|
+
|
|
205
|
+
sage: from sage.libs.singular.groebner_strategy import GroebnerStrategy
|
|
206
|
+
sage: P.<x,y,z> = PolynomialRing(GF(32003))
|
|
207
|
+
sage: I = Ideal([x + z, y + z])
|
|
208
|
+
sage: strat = GroebnerStrategy(I)
|
|
209
|
+
sage: strat.ideal()
|
|
210
|
+
Ideal (x + z, y + z) of Multivariate Polynomial Ring in x, y, z over Finite Field of size 32003
|
|
211
|
+
"""
|
|
212
|
+
return self._ideal
|
|
213
|
+
|
|
214
|
+
def ring(self):
|
|
215
|
+
"""
|
|
216
|
+
Return the ring this strategy object is defined over.
|
|
217
|
+
|
|
218
|
+
EXAMPLES::
|
|
219
|
+
|
|
220
|
+
sage: from sage.libs.singular.groebner_strategy import GroebnerStrategy
|
|
221
|
+
sage: P.<x,y,z> = PolynomialRing(GF(32003))
|
|
222
|
+
sage: I = Ideal([x + z, y + z])
|
|
223
|
+
sage: strat = GroebnerStrategy(I)
|
|
224
|
+
sage: strat.ring()
|
|
225
|
+
Multivariate Polynomial Ring in x, y, z over Finite Field of size 32003
|
|
226
|
+
"""
|
|
227
|
+
return self._parent
|
|
228
|
+
|
|
229
|
+
def __richcmp__(self, other, op):
|
|
230
|
+
"""
|
|
231
|
+
EXAMPLES::
|
|
232
|
+
|
|
233
|
+
sage: from sage.libs.singular.groebner_strategy import GroebnerStrategy
|
|
234
|
+
sage: P.<x,y,z> = PolynomialRing(GF(19))
|
|
235
|
+
sage: I = Ideal([P(0)])
|
|
236
|
+
sage: strat = GroebnerStrategy(I)
|
|
237
|
+
sage: strat == GroebnerStrategy(I)
|
|
238
|
+
True
|
|
239
|
+
sage: I = Ideal([x+1,y+z])
|
|
240
|
+
sage: strat == GroebnerStrategy(I)
|
|
241
|
+
False
|
|
242
|
+
"""
|
|
243
|
+
try:
|
|
244
|
+
lx = <GroebnerStrategy?>self
|
|
245
|
+
rx = <GroebnerStrategy?>other
|
|
246
|
+
except TypeError:
|
|
247
|
+
return NotImplemented
|
|
248
|
+
return richcmp(lx._ideal.gens(),
|
|
249
|
+
rx._ideal.gens(), op)
|
|
250
|
+
|
|
251
|
+
def __reduce__(self):
|
|
252
|
+
"""
|
|
253
|
+
EXAMPLES::
|
|
254
|
+
|
|
255
|
+
sage: from sage.libs.singular.groebner_strategy import GroebnerStrategy
|
|
256
|
+
sage: P.<x,y,z> = PolynomialRing(GF(32003))
|
|
257
|
+
sage: I = Ideal([x + z, y + z])
|
|
258
|
+
sage: strat = GroebnerStrategy(I)
|
|
259
|
+
sage: loads(dumps(strat)) == strat
|
|
260
|
+
True
|
|
261
|
+
"""
|
|
262
|
+
return unpickle_GroebnerStrategy0, (self._ideal,)
|
|
263
|
+
|
|
264
|
+
cpdef MPolynomial_libsingular normal_form(self, MPolynomial_libsingular p):
|
|
265
|
+
"""
|
|
266
|
+
Compute the normal form of ``p`` with respect to the
|
|
267
|
+
generators of this object.
|
|
268
|
+
|
|
269
|
+
EXAMPLES::
|
|
270
|
+
|
|
271
|
+
sage: from sage.libs.singular.groebner_strategy import GroebnerStrategy
|
|
272
|
+
sage: P.<x,y,z> = PolynomialRing(QQ)
|
|
273
|
+
sage: I = Ideal([x + z, y + z])
|
|
274
|
+
sage: strat = GroebnerStrategy(I)
|
|
275
|
+
sage: strat.normal_form(x*y) # indirect doctest
|
|
276
|
+
z^2
|
|
277
|
+
sage: strat.normal_form(x + 1)
|
|
278
|
+
-z + 1
|
|
279
|
+
|
|
280
|
+
TESTS::
|
|
281
|
+
|
|
282
|
+
sage: from sage.libs.singular.groebner_strategy import GroebnerStrategy
|
|
283
|
+
sage: P.<x,y,z> = PolynomialRing(QQ)
|
|
284
|
+
sage: I = Ideal([P(0)])
|
|
285
|
+
sage: strat = GroebnerStrategy(I)
|
|
286
|
+
sage: strat.normal_form(x)
|
|
287
|
+
x
|
|
288
|
+
sage: strat.normal_form(P(0))
|
|
289
|
+
0
|
|
290
|
+
"""
|
|
291
|
+
if unlikely(p._parent is not self._parent):
|
|
292
|
+
raise TypeError("parent(p) must be the same as this object's parent.")
|
|
293
|
+
if unlikely(self._parent._ring != currRing):
|
|
294
|
+
rChangeCurrRing(self._parent._ring)
|
|
295
|
+
|
|
296
|
+
cdef int max_ind = 0
|
|
297
|
+
cdef poly *_p = redNF(p_Copy(p._poly, self._parent._ring), max_ind, 0, self._strat)
|
|
298
|
+
if likely(_p!=NULL):
|
|
299
|
+
_p = redtailBba(_p, max_ind, self._strat)
|
|
300
|
+
return new_MP(self._parent, _p)
|
|
301
|
+
|
|
302
|
+
cdef class NCGroebnerStrategy(SageObject):
|
|
303
|
+
"""
|
|
304
|
+
A Wrapper for Singular's Groebner Strategy Object.
|
|
305
|
+
|
|
306
|
+
This object provides functions for normal form computations and
|
|
307
|
+
other functions for Groebner basis computation.
|
|
308
|
+
|
|
309
|
+
ALGORITHM:
|
|
310
|
+
|
|
311
|
+
Uses Singular via libSINGULAR
|
|
312
|
+
"""
|
|
313
|
+
def __init__(self, L):
|
|
314
|
+
"""
|
|
315
|
+
Create a new :class:`GroebnerStrategy` object for the
|
|
316
|
+
generators of the ideal ``L``.
|
|
317
|
+
|
|
318
|
+
INPUT:
|
|
319
|
+
|
|
320
|
+
- ``L`` -- an ideal in a g-algebra
|
|
321
|
+
|
|
322
|
+
EXAMPLES::
|
|
323
|
+
|
|
324
|
+
sage: from sage.libs.singular.groebner_strategy import NCGroebnerStrategy
|
|
325
|
+
|
|
326
|
+
sage: # needs sage.combinat
|
|
327
|
+
sage: A.<x,y,z> = FreeAlgebra(QQ, 3)
|
|
328
|
+
sage: H.<x,y,z> = A.g_algebra({y*x:x*y-z, z*x:x*z+2*x, z*y:y*z-2*y})
|
|
329
|
+
sage: I = H.ideal([y^2, x^2, z^2-H.one()])
|
|
330
|
+
sage: NCGroebnerStrategy(I) #random
|
|
331
|
+
Groebner Strategy for ideal generated by 3 elements over Noncommutative Multivariate Polynomial Ring in x, y, z over Rational Field, nc-relations: {z*x: x*z + 2*x, z*y: y*z - 2*y, y*x: x*y - z}
|
|
332
|
+
|
|
333
|
+
TESTS::
|
|
334
|
+
|
|
335
|
+
sage: strat = NCGroebnerStrategy(None)
|
|
336
|
+
Traceback (most recent call last):
|
|
337
|
+
...
|
|
338
|
+
TypeError: First parameter must be an ideal in a g-algebra.
|
|
339
|
+
|
|
340
|
+
sage: P.<x,y,z> = PolynomialRing(CC,order='neglex')
|
|
341
|
+
sage: I = Ideal([x+z,y+z+1])
|
|
342
|
+
sage: strat = NCGroebnerStrategy(I)
|
|
343
|
+
Traceback (most recent call last):
|
|
344
|
+
...
|
|
345
|
+
TypeError: First parameter must be an ideal in a g-algebra.
|
|
346
|
+
|
|
347
|
+
Check that tail reduction is applied too::
|
|
348
|
+
|
|
349
|
+
sage: # needs sage.combinat
|
|
350
|
+
sage: F = PolynomialRing(QQ,'t').fraction_field()
|
|
351
|
+
sage: FA = FreeAlgebra(F, 6, 'x1,x2,x3,x4,x5,x6')
|
|
352
|
+
sage: N = FA.g_algebra({FA.gen(j)*FA.gen(i):-FA.gen(i)*FA.gen(j) for i in range(5) for j in range(i+1,6)})
|
|
353
|
+
sage: I = N.ideal([g^2 for g in N.gens()],side='twosided')
|
|
354
|
+
sage: N.inject_variables()
|
|
355
|
+
Defining x1, x2, x3, x4, x5, x6
|
|
356
|
+
sage: I.reduce(x1*x2*x3 + x2^2*x4)
|
|
357
|
+
x1*x2*x3
|
|
358
|
+
"""
|
|
359
|
+
if not isinstance(L, NCPolynomialIdeal):
|
|
360
|
+
raise TypeError("First parameter must be an ideal in a g-algebra.")
|
|
361
|
+
|
|
362
|
+
if not isinstance(L.ring(), NCPolynomialRing_plural):
|
|
363
|
+
raise TypeError("First parameter's ring must be a g-algebra.")
|
|
364
|
+
|
|
365
|
+
self._ideal = L
|
|
366
|
+
|
|
367
|
+
cdef NCPolynomialRing_plural R = <NCPolynomialRing_plural>L.ring()
|
|
368
|
+
self._parent = R
|
|
369
|
+
|
|
370
|
+
if not R.term_order().is_global():
|
|
371
|
+
raise NotImplementedError("The local case is not implemented yet.")
|
|
372
|
+
|
|
373
|
+
if not R.base_ring().is_field():
|
|
374
|
+
raise NotImplementedError("Only coefficient fields are implemented so far.")
|
|
375
|
+
|
|
376
|
+
if (R._ring != currRing):
|
|
377
|
+
rChangeCurrRing(R._ring)
|
|
378
|
+
|
|
379
|
+
cdef ideal *i = sage_ideal_to_singular_ideal(L)
|
|
380
|
+
self._strat = new_skStrategy()
|
|
381
|
+
|
|
382
|
+
self._strat.ak = id_RankFreeModule(i, R._ring)
|
|
383
|
+
#- creating temp data structures
|
|
384
|
+
initBuchMoraCrit(self._strat)
|
|
385
|
+
self._strat.initEcart = initEcartBBA
|
|
386
|
+
self._strat.enterS = enterSBba
|
|
387
|
+
#- set S
|
|
388
|
+
self._strat.sl = -1
|
|
389
|
+
self._strat.noTailReduction = False
|
|
390
|
+
#- init local data struct
|
|
391
|
+
initS(i, NULL, self._strat)
|
|
392
|
+
|
|
393
|
+
cdef int j
|
|
394
|
+
if R.base_ring().is_field():
|
|
395
|
+
for j in range(self._strat.sl,-1,-1):
|
|
396
|
+
pNorm(self._strat.S[j])
|
|
397
|
+
|
|
398
|
+
id_Delete(&i, R._ring)
|
|
399
|
+
kTest(self._strat)
|
|
400
|
+
|
|
401
|
+
def __dealloc__(self):
|
|
402
|
+
"""
|
|
403
|
+
TESTS::
|
|
404
|
+
|
|
405
|
+
sage: # needs sage.combinat
|
|
406
|
+
sage: from sage.libs.singular.groebner_strategy import NCGroebnerStrategy
|
|
407
|
+
sage: A.<x,y,z> = FreeAlgebra(QQ, 3)
|
|
408
|
+
sage: H.<x,y,z> = A.g_algebra({y*x:x*y-z, z*x:x*z+2*x, z*y:y*z-2*y})
|
|
409
|
+
sage: I = H.ideal([y^2, x^2, z^2-H.one()])
|
|
410
|
+
sage: strat = NCGroebnerStrategy(I)
|
|
411
|
+
sage: del strat # indirect doctest
|
|
412
|
+
"""
|
|
413
|
+
cdef ring *oldRing = NULL
|
|
414
|
+
if self._strat:
|
|
415
|
+
omfree(self._strat.sevS)
|
|
416
|
+
omfree(self._strat.ecartS)
|
|
417
|
+
omfree(self._strat.T)
|
|
418
|
+
omfree(self._strat.sevT)
|
|
419
|
+
omfree(self._strat.R)
|
|
420
|
+
omfree(self._strat.S_2_R)
|
|
421
|
+
omfree(self._strat.L)
|
|
422
|
+
omfree(self._strat.B)
|
|
423
|
+
omfree(self._strat.fromQ)
|
|
424
|
+
id_Delete(&self._strat.Shdl, self._parent._ring)
|
|
425
|
+
|
|
426
|
+
if self._parent._ring != currRing:
|
|
427
|
+
oldRing = currRing
|
|
428
|
+
rChangeCurrRing(self._parent._ring)
|
|
429
|
+
delete_skStrategy(self._strat)
|
|
430
|
+
rChangeCurrRing(oldRing)
|
|
431
|
+
else:
|
|
432
|
+
delete_skStrategy(self._strat)
|
|
433
|
+
|
|
434
|
+
def _repr_(self):
|
|
435
|
+
"""
|
|
436
|
+
TESTS::
|
|
437
|
+
|
|
438
|
+
sage: # needs sage.combinat
|
|
439
|
+
sage: from sage.libs.singular.groebner_strategy import NCGroebnerStrategy
|
|
440
|
+
sage: A.<x,y,z> = FreeAlgebra(QQ, 3)
|
|
441
|
+
sage: H.<x,y,z> = A.g_algebra({y*x:x*y-z, z*x:x*z+2*x, z*y:y*z-2*y})
|
|
442
|
+
sage: I = H.ideal([y^2, x^2, z^2-H.one()])
|
|
443
|
+
sage: strat = NCGroebnerStrategy(I)
|
|
444
|
+
sage: strat # indirect doctest #random
|
|
445
|
+
Groebner Strategy for ideal generated by 3 elements over Noncommutative Multivariate Polynomial Ring in x, y, z over Rational Field, nc-relations: {z*x: x*z + 2*x, z*y: y*z - 2*y, y*x: x*y - z}
|
|
446
|
+
"""
|
|
447
|
+
return "Groebner Strategy for ideal generated by %d elements over %s" % (self._ideal.ngens(), self._parent)
|
|
448
|
+
|
|
449
|
+
def ideal(self):
|
|
450
|
+
"""
|
|
451
|
+
Return the ideal this strategy object is defined for.
|
|
452
|
+
|
|
453
|
+
EXAMPLES::
|
|
454
|
+
|
|
455
|
+
sage: # needs sage.combinat
|
|
456
|
+
sage: from sage.libs.singular.groebner_strategy import NCGroebnerStrategy
|
|
457
|
+
sage: A.<x,y,z> = FreeAlgebra(QQ, 3)
|
|
458
|
+
sage: H.<x,y,z> = A.g_algebra({y*x:x*y-z, z*x:x*z+2*x, z*y:y*z-2*y})
|
|
459
|
+
sage: I = H.ideal([y^2, x^2, z^2-H.one()])
|
|
460
|
+
sage: strat = NCGroebnerStrategy(I)
|
|
461
|
+
sage: strat.ideal() == I
|
|
462
|
+
True
|
|
463
|
+
"""
|
|
464
|
+
return self._ideal
|
|
465
|
+
|
|
466
|
+
def ring(self):
|
|
467
|
+
"""
|
|
468
|
+
Return the ring this strategy object is defined over.
|
|
469
|
+
|
|
470
|
+
EXAMPLES::
|
|
471
|
+
|
|
472
|
+
sage: # needs sage.combinat
|
|
473
|
+
sage: from sage.libs.singular.groebner_strategy import NCGroebnerStrategy
|
|
474
|
+
sage: A.<x,y,z> = FreeAlgebra(QQ, 3)
|
|
475
|
+
sage: H.<x,y,z> = A.g_algebra({y*x:x*y-z, z*x:x*z+2*x, z*y:y*z-2*y})
|
|
476
|
+
sage: I = H.ideal([y^2, x^2, z^2-H.one()])
|
|
477
|
+
sage: strat = NCGroebnerStrategy(I)
|
|
478
|
+
sage: strat.ring() is H
|
|
479
|
+
True
|
|
480
|
+
"""
|
|
481
|
+
return self._parent
|
|
482
|
+
|
|
483
|
+
def __richcmp__(self, other, op):
|
|
484
|
+
"""
|
|
485
|
+
EXAMPLES::
|
|
486
|
+
|
|
487
|
+
sage: # needs sage.combinat
|
|
488
|
+
sage: from sage.libs.singular.groebner_strategy import NCGroebnerStrategy
|
|
489
|
+
sage: A.<x,y,z> = FreeAlgebra(QQ, 3)
|
|
490
|
+
sage: H.<x,y,z> = A.g_algebra({y*x:x*y-z, z*x:x*z+2*x, z*y:y*z-2*y})
|
|
491
|
+
sage: I = H.ideal([y^2, x^2, z^2-H.one()])
|
|
492
|
+
sage: strat = NCGroebnerStrategy(I)
|
|
493
|
+
sage: strat == NCGroebnerStrategy(I)
|
|
494
|
+
True
|
|
495
|
+
sage: I = H.ideal([y^2, x^2, z^2-H.one()], side='twosided')
|
|
496
|
+
sage: strat == NCGroebnerStrategy(I)
|
|
497
|
+
False
|
|
498
|
+
"""
|
|
499
|
+
try:
|
|
500
|
+
lx = <NCGroebnerStrategy?>self
|
|
501
|
+
rx = <NCGroebnerStrategy?>other
|
|
502
|
+
except TypeError:
|
|
503
|
+
return NotImplemented
|
|
504
|
+
return richcmp((lx._ideal.gens(), lx._ideal.side()),
|
|
505
|
+
(rx._ideal.gens(), rx._ideal.side()), op)
|
|
506
|
+
|
|
507
|
+
def __reduce__(self):
|
|
508
|
+
"""
|
|
509
|
+
EXAMPLES::
|
|
510
|
+
|
|
511
|
+
sage: # needs sage.combinat
|
|
512
|
+
sage: from sage.libs.singular.groebner_strategy import NCGroebnerStrategy
|
|
513
|
+
sage: A.<x,y,z> = FreeAlgebra(QQ, 3)
|
|
514
|
+
sage: H.<x,y,z> = A.g_algebra({y*x:x*y-z, z*x:x*z+2*x, z*y:y*z-2*y})
|
|
515
|
+
sage: I = H.ideal([y^2, x^2, z^2-H.one()])
|
|
516
|
+
sage: strat = NCGroebnerStrategy(I)
|
|
517
|
+
sage: loads(dumps(strat)) == strat
|
|
518
|
+
True
|
|
519
|
+
"""
|
|
520
|
+
return unpickle_NCGroebnerStrategy0, (self._ideal,)
|
|
521
|
+
|
|
522
|
+
cpdef NCPolynomial_plural normal_form(self, NCPolynomial_plural p):
|
|
523
|
+
"""
|
|
524
|
+
Compute the normal form of ``p`` with respect to the
|
|
525
|
+
generators of this object.
|
|
526
|
+
|
|
527
|
+
EXAMPLES::
|
|
528
|
+
|
|
529
|
+
sage: # needs sage.combinat
|
|
530
|
+
sage: A.<x,y,z> = FreeAlgebra(QQ, 3)
|
|
531
|
+
sage: H.<x,y,z> = A.g_algebra({y*x:x*y-z, z*x:x*z+2*x, z*y:y*z-2*y})
|
|
532
|
+
sage: JL = H.ideal([x^3, y^3, z^3 - 4*z])
|
|
533
|
+
sage: JT = H.ideal([x^3, y^3, z^3 - 4*z], side='twosided')
|
|
534
|
+
sage: from sage.libs.singular.groebner_strategy import NCGroebnerStrategy
|
|
535
|
+
sage: SL = NCGroebnerStrategy(JL.std())
|
|
536
|
+
sage: ST = NCGroebnerStrategy(JT.std())
|
|
537
|
+
sage: SL.normal_form(x*y^2)
|
|
538
|
+
x*y^2
|
|
539
|
+
sage: ST.normal_form(x*y^2)
|
|
540
|
+
y*z
|
|
541
|
+
"""
|
|
542
|
+
if unlikely(p._parent is not self._parent):
|
|
543
|
+
raise TypeError("parent(p) must be the same as this object's parent.")
|
|
544
|
+
if unlikely(self._parent._ring != currRing):
|
|
545
|
+
rChangeCurrRing(self._parent._ring)
|
|
546
|
+
|
|
547
|
+
cdef int max_ind = 0
|
|
548
|
+
cdef poly *_p = redNF(p_Copy(p._poly, self._parent._ring), max_ind, 0, self._strat)
|
|
549
|
+
if likely(_p!=NULL):
|
|
550
|
+
_p = redtailBba(_p, max_ind, self._strat)
|
|
551
|
+
return new_NCP(self._parent, _p)
|
|
552
|
+
|
|
553
|
+
|
|
554
|
+
def unpickle_NCGroebnerStrategy0(I):
|
|
555
|
+
"""
|
|
556
|
+
EXAMPLES::
|
|
557
|
+
|
|
558
|
+
sage: # needs sage.combinat
|
|
559
|
+
sage: from sage.libs.singular.groebner_strategy import NCGroebnerStrategy
|
|
560
|
+
sage: A.<x,y,z> = FreeAlgebra(QQ, 3)
|
|
561
|
+
sage: H.<x,y,z> = A.g_algebra({y*x:x*y-z, z*x:x*z+2*x, z*y:y*z-2*y})
|
|
562
|
+
sage: I = H.ideal([y^2, x^2, z^2-H.one()])
|
|
563
|
+
sage: strat = NCGroebnerStrategy(I)
|
|
564
|
+
sage: loads(dumps(strat)) == strat # indirect doctest
|
|
565
|
+
True
|
|
566
|
+
"""
|
|
567
|
+
return NCGroebnerStrategy(I)
|
|
568
|
+
|
|
569
|
+
|
|
570
|
+
def unpickle_GroebnerStrategy0(I):
|
|
571
|
+
"""
|
|
572
|
+
EXAMPLES::
|
|
573
|
+
|
|
574
|
+
sage: # needs sage.rings.finite_rings
|
|
575
|
+
sage: from sage.libs.singular.groebner_strategy import GroebnerStrategy
|
|
576
|
+
sage: P.<x,y,z> = PolynomialRing(GF(32003))
|
|
577
|
+
sage: I = Ideal([x + z, y + z])
|
|
578
|
+
sage: strat = GroebnerStrategy(I)
|
|
579
|
+
sage: loads(dumps(strat)) == strat # indirect doctest
|
|
580
|
+
True
|
|
581
|
+
"""
|
|
582
|
+
return GroebnerStrategy(I)
|
|
Binary file
|