passagemath-singular 10.6.31rc3__cp314-cp314-musllinux_1_2_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-musl.so +0 -0
- passagemath_singular-10.6.31rc3.dist-info/METADATA +183 -0
- passagemath_singular-10.6.31rc3.dist-info/RECORD +493 -0
- passagemath_singular-10.6.31rc3.dist-info/WHEEL +5 -0
- passagemath_singular-10.6.31rc3.dist-info/top_level.txt +3 -0
- passagemath_singular.libs/libSingular-4-67059f19.4.1.so +0 -0
- passagemath_singular.libs/libcddgmp-30166d29.so.0.1.3 +0 -0
- passagemath_singular.libs/libfactory-4-9d37bcf4.4.1.so +0 -0
- passagemath_singular.libs/libflint-fd6f12fc.so.21.0.0 +0 -0
- passagemath_singular.libs/libgcc_s-0cd532bd.so.1 +0 -0
- passagemath_singular.libs/libgf2x-9e30c3e3.so.3.0.0 +0 -0
- passagemath_singular.libs/libgfortran-2c33b284.so.5.0.0 +0 -0
- passagemath_singular.libs/libgmp-0e7fc84e.so.10.5.0 +0 -0
- passagemath_singular.libs/libgsl-42cda06f.so.28.0.0 +0 -0
- passagemath_singular.libs/libmpfr-aaecbfc0.so.6.2.1 +0 -0
- passagemath_singular.libs/libncursesw-9c9e32c3.so.6.5 +0 -0
- passagemath_singular.libs/libntl-26885ca2.so.44.0.1 +0 -0
- passagemath_singular.libs/libomalloc-0-e9ff96db.9.6.so +0 -0
- passagemath_singular.libs/libopenblasp-r0-905cb27d.3.29.so +0 -0
- passagemath_singular.libs/libpolys-4-8bcf8e7d.4.1.so +0 -0
- passagemath_singular.libs/libquadmath-bb76a5fc.so.0.0.0 +0 -0
- passagemath_singular.libs/libreadline-06542304.so.8.2 +0 -0
- passagemath_singular.libs/libsingular_resources-4-73bf7623.4.1.so +0 -0
- passagemath_singular.libs/libstdc++-5d72f927.so.6.0.33 +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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.so +0 -0
- sage/algebras/quatalg/quaternion_algebra_cython.pyx +261 -0
- sage/algebras/quatalg/quaternion_algebra_element.cpython-314-x86_64-linux-musl.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-musl.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-musl.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-musl.so +0 -0
- sage/libs/singular/option.pyx +671 -0
- sage/libs/singular/polynomial.cpython-314-x86_64-linux-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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,419 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////
|
|
2
|
+
version="version sing4ti2.lib 4.2.1 Nov_2021 "; // $Id: c59a0cb5b5e85f08cd5fcb96972d4e12ab62abad $
|
|
3
|
+
category="Commutative Algebra";
|
|
4
|
+
info="
|
|
5
|
+
LIBRARY: sing4ti2.lib Communication Interface to 4ti2
|
|
6
|
+
|
|
7
|
+
AUTHORS: Thomas Kahle , kahle@mis.mpg.de
|
|
8
|
+
@* Anne Fruehbis-Krueger, anne@math.uni-hannover.de
|
|
9
|
+
|
|
10
|
+
NOTE: This library uses the external program 4ti2 for calculations
|
|
11
|
+
@* and the standard unix tools sed and awk for conversion of
|
|
12
|
+
@* the returned result
|
|
13
|
+
|
|
14
|
+
PROCEDURES:
|
|
15
|
+
markov4ti2(A[,i]) compute Markov basis of given lattice
|
|
16
|
+
hilbert4ti2(A[,i]) compute Hilbert basis of given lattice
|
|
17
|
+
graver4ti2(A[,i]) compute Graver basis of given lattice
|
|
18
|
+
";
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
proc markov4ti2(matrix A, list #)
|
|
22
|
+
"USAGE: markov4ti2(A[,i]);
|
|
23
|
+
@* A=intmat
|
|
24
|
+
@* i=int
|
|
25
|
+
ASSUME: - A is a matrix with integer entries which describes the lattice
|
|
26
|
+
@* as ker(A), if second argument is not present,
|
|
27
|
+
@* as left image Im(A) = {zA, z \in ZZ^k}(!), if second argument is a positive integer
|
|
28
|
+
@* - number of variables of basering equals number of columns of A
|
|
29
|
+
@* (for ker(A)) resp. of rows of A (for Im(A))
|
|
30
|
+
CREATE: files sing4ti2.mat, sing4ti2.lat, sing4ti2.mar in the current
|
|
31
|
+
@* directory (I/O files for communication with 4ti2)
|
|
32
|
+
NOTE: input rules for 4ti2 also apply to input to this procedure
|
|
33
|
+
@* hence ker(A)={x|Ax=0} and Im(A)={xA}
|
|
34
|
+
RETURN: toric ideal specified by Markov basis thereof
|
|
35
|
+
EXAMPLE: example markov4ti2; shows an example
|
|
36
|
+
"
|
|
37
|
+
{
|
|
38
|
+
//--------------------------------------------------------------------------
|
|
39
|
+
// Initialization and Sanity Checks
|
|
40
|
+
//--------------------------------------------------------------------------
|
|
41
|
+
int i,j;
|
|
42
|
+
int nr=nrows(A);
|
|
43
|
+
int nc=ncols(A);
|
|
44
|
+
string fileending="mat";
|
|
45
|
+
if (size(#)!=0)
|
|
46
|
+
{
|
|
47
|
+
//--- default behaviour: use ker(A) as lattice
|
|
48
|
+
//--- if #[1]!=0 use Im(A) as lattice
|
|
49
|
+
if(typeof(#[1])!="int")
|
|
50
|
+
{
|
|
51
|
+
ERROR("optional parameter needs to be integer value");\
|
|
52
|
+
}
|
|
53
|
+
if(#[1]!=0)
|
|
54
|
+
{
|
|
55
|
+
fileending="lat";
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//--- we should also be checking whether all entries are indeed integers
|
|
59
|
+
//--- or whether there are fractions, but in this case the error message
|
|
60
|
+
//--- of 4ti2 is printed directly
|
|
61
|
+
if(nvars(basering)!=ncols(A))
|
|
62
|
+
{
|
|
63
|
+
ERROR("number of columns needs to match number of variables");
|
|
64
|
+
}
|
|
65
|
+
//--------------------------------------------------------------------------
|
|
66
|
+
// preparing input file for 4ti2
|
|
67
|
+
//--------------------------------------------------------------------------
|
|
68
|
+
link eing=":w sing4ti2."+fileending;
|
|
69
|
+
string eingstring=string(nr)+" "+string(nc);
|
|
70
|
+
write(eing,eingstring);
|
|
71
|
+
for(i=1;i<=nr;i++)
|
|
72
|
+
{
|
|
73
|
+
kill eingstring;
|
|
74
|
+
string eingstring;
|
|
75
|
+
for(j=1;j<=nc;j++)
|
|
76
|
+
{
|
|
77
|
+
if((deg(A[i,j])>0)||(char(basering)!=0)||(npars(basering)>0))
|
|
78
|
+
{
|
|
79
|
+
ERROR("Input to markov4ti2 needs to be a matrix with integer entries");
|
|
80
|
+
}
|
|
81
|
+
eingstring=eingstring+string(A[i,j])+" ";
|
|
82
|
+
}
|
|
83
|
+
write(eing, eingstring);
|
|
84
|
+
}
|
|
85
|
+
close(eing);
|
|
86
|
+
|
|
87
|
+
//----------------------------------------------------------------------
|
|
88
|
+
// calling 4ti2 and converting output
|
|
89
|
+
// Singular's string is too clumsy for this, hence we first prepare
|
|
90
|
+
// using standard unix commands
|
|
91
|
+
//----------------------------------------------------------------------
|
|
92
|
+
// find the name of markov/4ti2-markov
|
|
93
|
+
string s_name=system("executable","markov");
|
|
94
|
+
if (size(s_name)==0)
|
|
95
|
+
{
|
|
96
|
+
s_name=system("executable","4ti2-markov"); /* debian*/
|
|
97
|
+
if (size(s_name)==0)
|
|
98
|
+
{
|
|
99
|
+
ERROR("markov not found (part of 4ti2)");
|
|
100
|
+
}
|
|
101
|
+
else { s_name="4ti2-markov";}
|
|
102
|
+
}
|
|
103
|
+
else { s_name="markov";}
|
|
104
|
+
j=system("sh",s_name+" sing4ti2 >/dev/null 2>&1");
|
|
105
|
+
j=system("sh","awk \'BEGIN{ORS=\",\";}{print $0;}\' sing4ti2.mar | sed s/[\\\ \\\t\\\v\\\f]/,/g | sed s/,+/,/g|sed s/,,/,/g|sed s/,,/,/g > sing4ti2.converted");
|
|
106
|
+
if(!defined(keepfiles))
|
|
107
|
+
{
|
|
108
|
+
j=system("sh",("rm -f sing4ti2.mar sing4ti2."+fileending));
|
|
109
|
+
}
|
|
110
|
+
//----------------------------------------------------------------------
|
|
111
|
+
// reading output of 4ti2
|
|
112
|
+
//----------------------------------------------------------------------
|
|
113
|
+
link ausg=":r sing4ti2.converted";
|
|
114
|
+
//--- last entry ideal(0) is used to tie the list to the basering
|
|
115
|
+
//--- it will not be processed any further
|
|
116
|
+
string ergstr="list erglist="+read(ausg)+ string(ideal(0))+";";
|
|
117
|
+
execute(ergstr);
|
|
118
|
+
ideal toric;
|
|
119
|
+
poly temppol1,temppol2;
|
|
120
|
+
for(i=1;i<=erglist[1];i++)
|
|
121
|
+
{
|
|
122
|
+
temppol1=1;
|
|
123
|
+
temppol2=1;
|
|
124
|
+
for(j=1;j<=erglist[2];j++)
|
|
125
|
+
{
|
|
126
|
+
if(erglist[2+(i-1)*erglist[2]+j]>=0)
|
|
127
|
+
{
|
|
128
|
+
//--- positive exponents
|
|
129
|
+
temppol1=temppol1*(var(j)^erglist[2+(i-1)*erglist[2]+j]);
|
|
130
|
+
}
|
|
131
|
+
else
|
|
132
|
+
{
|
|
133
|
+
//--- negative exponents
|
|
134
|
+
temppol2=temppol2*(var(j)^(-erglist[2+(i-1)*erglist[2]+j]));
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
toric=toric,temppol1-temppol2;
|
|
138
|
+
}
|
|
139
|
+
//--- get rid of leading entry 0;
|
|
140
|
+
toric=toric[2..ncols(toric)];
|
|
141
|
+
return(toric);
|
|
142
|
+
}
|
|
143
|
+
example
|
|
144
|
+
{"EXAMPLE:";
|
|
145
|
+
echo=2;
|
|
146
|
+
ring r=0,(x,y,z),dp;
|
|
147
|
+
matrix M[2][3]=0,1,2,2,1,0;
|
|
148
|
+
markov4ti2(M);
|
|
149
|
+
matrix N[1][3]=1,2,1;
|
|
150
|
+
markov4ti2(N,1);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
154
|
+
|
|
155
|
+
proc graver4ti2(matrix A, list #)
|
|
156
|
+
"USAGE: graver4ti2(A[,i]);
|
|
157
|
+
@* A=intmat
|
|
158
|
+
@* i=int
|
|
159
|
+
ASSUME: - A is a matrix with integer entries which describes the lattice
|
|
160
|
+
@* as ker(A), if second argument is not present,
|
|
161
|
+
@* as the left image Im(A) = {zA : z \in ZZ^k}, if second argument is a positive integer
|
|
162
|
+
@* - number of variables of basering equals number of columns of A
|
|
163
|
+
@* (for ker(A)) resp. of rows of A (for Im(A))
|
|
164
|
+
CREATE: temporary files sing4ti2.mat, sing4ti2.lat, sing4ti2.gra
|
|
165
|
+
@* in the current directory (I/O files for communication with 4ti2)
|
|
166
|
+
NOTE: input rules for 4ti2 also apply to input to this procedure
|
|
167
|
+
@* hence ker(A)={x|Ax=0} and Im(A)={xA}
|
|
168
|
+
RETURN: toric ideal specified by Graver basis thereof
|
|
169
|
+
EXAMPLE: example graver4ti2; shows an example
|
|
170
|
+
"
|
|
171
|
+
{
|
|
172
|
+
//--------------------------------------------------------------------------
|
|
173
|
+
// Initialization and Sanity Checks
|
|
174
|
+
//--------------------------------------------------------------------------
|
|
175
|
+
int i,j;
|
|
176
|
+
int nr=nrows(A);
|
|
177
|
+
int nc=ncols(A);
|
|
178
|
+
string fileending="mat";
|
|
179
|
+
if (size(#)!=0)
|
|
180
|
+
{
|
|
181
|
+
//--- default behaviour: use ker(A) as lattice
|
|
182
|
+
//--- if #[1]!=0 use Im(A) as lattice
|
|
183
|
+
if(typeof(#[1])!="int")
|
|
184
|
+
{
|
|
185
|
+
ERROR("optional parameter needs to be integer value");\
|
|
186
|
+
}
|
|
187
|
+
if(#[1]!=0)
|
|
188
|
+
{
|
|
189
|
+
fileending="lat";
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
//--- we should also be checking whether all entries are indeed integers
|
|
193
|
+
//--- or whether there are fractions, but in this case the error message
|
|
194
|
+
//--- of 4ti2 is printed directly
|
|
195
|
+
if(nvars(basering)!=ncols(A))
|
|
196
|
+
{
|
|
197
|
+
ERROR("number of columns needs to match number of variables");
|
|
198
|
+
}
|
|
199
|
+
//--------------------------------------------------------------------------
|
|
200
|
+
// preparing input file for 4ti2
|
|
201
|
+
//--------------------------------------------------------------------------
|
|
202
|
+
link eing=":w sing4ti2."+fileending;
|
|
203
|
+
string eingstring=string(nr)+" "+string(nc);
|
|
204
|
+
write(eing,eingstring);
|
|
205
|
+
for(i=1;i<=nr;i++)
|
|
206
|
+
{
|
|
207
|
+
kill eingstring;
|
|
208
|
+
string eingstring;
|
|
209
|
+
for(j=1;j<=nc;j++)
|
|
210
|
+
{
|
|
211
|
+
if((deg(A[i,j])>0)||(char(basering)!=0)||(npars(basering)>0))
|
|
212
|
+
{
|
|
213
|
+
ERROR("Input to graver4ti2 needs to be a matrix with integer entries");
|
|
214
|
+
}
|
|
215
|
+
eingstring=eingstring+string(A[i,j])+" ";
|
|
216
|
+
}
|
|
217
|
+
write(eing, eingstring);
|
|
218
|
+
}
|
|
219
|
+
close(eing);
|
|
220
|
+
|
|
221
|
+
//----------------------------------------------------------------------
|
|
222
|
+
// calling 4ti2 and converting output
|
|
223
|
+
// Singular's string is too clumsy for this, hence we first prepare
|
|
224
|
+
// using standard unix commands
|
|
225
|
+
//----------------------------------------------------------------------
|
|
226
|
+
// find the name of graver/4ti2-graver
|
|
227
|
+
string s_name=system("executable","graver");
|
|
228
|
+
if (size(s_name)==0)
|
|
229
|
+
{
|
|
230
|
+
s_name=system("executable","4ti2-graver"); /* debian*/
|
|
231
|
+
if (size(s_name)==0)
|
|
232
|
+
{
|
|
233
|
+
ERROR("graver not found (part of 4ti2)");
|
|
234
|
+
}
|
|
235
|
+
else { s_name="4ti2-graver"; }
|
|
236
|
+
}
|
|
237
|
+
else { s_name="graver"; }
|
|
238
|
+
j=system("sh",s_name+" sing4ti2 >/dev/null 2>&1");
|
|
239
|
+
j=system("sh","awk \'BEGIN{ORS=\",\";}{print $0;}\' sing4ti2.gra | sed s/[\\\ \\\t\\\v\\\f]/,/g | sed s/,+/,/g |sed s/,,/,/g|sed s/,,/,/g > sing4ti2.converted");
|
|
240
|
+
if(!defined(keepfiles))
|
|
241
|
+
{
|
|
242
|
+
j=system("sh",("rm -f sing4ti2.gra sing4ti2."+fileending));
|
|
243
|
+
}
|
|
244
|
+
//----------------------------------------------------------------------
|
|
245
|
+
// reading output of 4ti2
|
|
246
|
+
//----------------------------------------------------------------------
|
|
247
|
+
link ausg=":r sing4ti2.converted";
|
|
248
|
+
//--- last entry ideal(0) is used to tie the list to the basering
|
|
249
|
+
//--- it will not be processed any further
|
|
250
|
+
string ergstr="list erglist="+read(ausg)+ string(ideal(0))+";";
|
|
251
|
+
execute(ergstr);
|
|
252
|
+
ideal toric;
|
|
253
|
+
poly temppol1,temppol2;
|
|
254
|
+
for(i=1;i<=erglist[1];i++)
|
|
255
|
+
{
|
|
256
|
+
temppol1=1;
|
|
257
|
+
temppol2=1;
|
|
258
|
+
for(j=1;j<=erglist[2];j++)
|
|
259
|
+
{
|
|
260
|
+
if(erglist[2+(i-1)*erglist[2]+j]>=0)
|
|
261
|
+
{
|
|
262
|
+
//--- positive exponents
|
|
263
|
+
temppol1=temppol1*(var(j)^erglist[2+(i-1)*erglist[2]+j]);
|
|
264
|
+
}
|
|
265
|
+
else
|
|
266
|
+
{
|
|
267
|
+
//--- negative exponents
|
|
268
|
+
temppol2=temppol2*(var(j)^(-erglist[2+(i-1)*erglist[2]+j]));
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
toric=toric,temppol1-temppol2;
|
|
272
|
+
}
|
|
273
|
+
//--- get rid of leading entry 0;
|
|
274
|
+
toric=toric[2..ncols(toric)];
|
|
275
|
+
return(toric);
|
|
276
|
+
}
|
|
277
|
+
example
|
|
278
|
+
{"EXAMPLE:";
|
|
279
|
+
echo=2;
|
|
280
|
+
ring r=0,(x,y,z,w),dp;
|
|
281
|
+
matrix M[2][4]=0,1,2,3,3,2,1,0;
|
|
282
|
+
graver4ti2(M);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
286
|
+
|
|
287
|
+
proc hilbert4ti2(matrix A, list #)
|
|
288
|
+
"USAGE: hilbert4ti2(A[,i]);
|
|
289
|
+
@* A=intmat
|
|
290
|
+
@* i=int
|
|
291
|
+
ASSUME: - A is a matrix with integer entries which describes the lattice
|
|
292
|
+
@* as ker(A), if second argument is not present,
|
|
293
|
+
@* as the left image Im(A) = {zA : z \in ZZ^k}, if second argument is a positive integer
|
|
294
|
+
@* - number of variables of basering equals number of columns of A
|
|
295
|
+
@* (for ker(A)) resp. of rows of A (for Im(A))
|
|
296
|
+
CREATE: temporary files sing4ti2.mat, sing4ti2.lat, sing4ti2.mar
|
|
297
|
+
@* in the current directory (I/O files for communication with 4ti2)
|
|
298
|
+
NOTE: input rules for 4ti2 also apply to input to this procedure
|
|
299
|
+
@* hence ker(A)={x|Ax=0} and Im(A)={xA}
|
|
300
|
+
RETURN: toric ideal specified by Hilbert basis thereof
|
|
301
|
+
EXAMPLE: example graver4ti2; shows an example
|
|
302
|
+
"
|
|
303
|
+
{
|
|
304
|
+
//--------------------------------------------------------------------------
|
|
305
|
+
// Initialization and Sanity Checks
|
|
306
|
+
//--------------------------------------------------------------------------
|
|
307
|
+
int i,j;
|
|
308
|
+
int nr=nrows(A);
|
|
309
|
+
int nc=ncols(A);
|
|
310
|
+
string fileending="mat";
|
|
311
|
+
if (size(#)!=0)
|
|
312
|
+
{
|
|
313
|
+
//--- default behaviour: use ker(A) as lattice
|
|
314
|
+
//--- if #[1]!=0 use Im(A) as lattice
|
|
315
|
+
if(typeof(#[1])!="int")
|
|
316
|
+
{
|
|
317
|
+
ERROR("optional parameter needs to be integer value");\
|
|
318
|
+
}
|
|
319
|
+
if(#[1]!=0)
|
|
320
|
+
{
|
|
321
|
+
fileending="lat";
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
//--- we should also be checking whether all entries are indeed integers
|
|
325
|
+
//--- or whether there are fractions, but in this case the error message
|
|
326
|
+
//--- of 4ti2 is printed directly
|
|
327
|
+
if(nvars(basering)!=ncols(A))
|
|
328
|
+
{
|
|
329
|
+
ERROR("number of columns needs to match number of variables");
|
|
330
|
+
}
|
|
331
|
+
//--------------------------------------------------------------------------
|
|
332
|
+
// preparing input file for 4ti2
|
|
333
|
+
//--------------------------------------------------------------------------
|
|
334
|
+
link eing=":w sing4ti2."+fileending;
|
|
335
|
+
string eingstring=string(nr)+" "+string(nc);
|
|
336
|
+
write(eing,eingstring);
|
|
337
|
+
for(i=1;i<=nr;i++)
|
|
338
|
+
{
|
|
339
|
+
kill eingstring;
|
|
340
|
+
string eingstring;
|
|
341
|
+
for(j=1;j<=nc;j++)
|
|
342
|
+
{
|
|
343
|
+
if((deg(A[i,j])>0)||(char(basering)!=0)||(npars(basering)>0))
|
|
344
|
+
{
|
|
345
|
+
ERROR("Input to hilbert4ti2 needs to be a matrix with integer entries");
|
|
346
|
+
}
|
|
347
|
+
eingstring=eingstring+string(A[i,j])+" ";
|
|
348
|
+
}
|
|
349
|
+
write(eing, eingstring);
|
|
350
|
+
}
|
|
351
|
+
close(eing);
|
|
352
|
+
|
|
353
|
+
//----------------------------------------------------------------------
|
|
354
|
+
// calling 4ti2 and converting output
|
|
355
|
+
// Singular's string is too clumsy for this, hence we first prepare
|
|
356
|
+
// using standard unix commands
|
|
357
|
+
//----------------------------------------------------------------------
|
|
358
|
+
// find the name of hilbert/4ti2-hilbert
|
|
359
|
+
string s_name=system("executable","hilbert");
|
|
360
|
+
if (size(s_name)==0)
|
|
361
|
+
{
|
|
362
|
+
s_name=system("executable","4ti2-hilbert"); /* debian*/
|
|
363
|
+
if (size(s_name)==0)
|
|
364
|
+
{
|
|
365
|
+
ERROR("hilbert not found (part of 4ti2)");
|
|
366
|
+
}
|
|
367
|
+
else { s_name="4ti2-hilbert"; }
|
|
368
|
+
}
|
|
369
|
+
else { s_name="hilbert"; }
|
|
370
|
+
j=system("sh",s_name+" sing4ti2 >/dev/null 2>&1");
|
|
371
|
+
j=system("sh","awk \'BEGIN{ORS=\",\";}{print $0;}\' sing4ti2.hil | sed s/[\\\ \\\t\\\v\\\f]/,/g | sed s/,+/,/g |sed s/,,/,/g|sed s/,,/,/g > sing4ti2.converted");
|
|
372
|
+
if(!defined(keepfiles))
|
|
373
|
+
{
|
|
374
|
+
j=system("sh",("rm -f sing4ti2.hil sing4ti2."+fileending));
|
|
375
|
+
}
|
|
376
|
+
//----------------------------------------------------------------------
|
|
377
|
+
// reading output of 4ti2
|
|
378
|
+
//----------------------------------------------------------------------
|
|
379
|
+
link ausg=":r sing4ti2.converted";
|
|
380
|
+
//--- last entry ideal(0) is used to tie the list to the basering
|
|
381
|
+
//--- it will not be processed any further
|
|
382
|
+
string ergstr="list erglist="+read(ausg)+ string(ideal(0))+";";
|
|
383
|
+
execute(ergstr);
|
|
384
|
+
ideal toric;
|
|
385
|
+
poly temppol1,temppol2;
|
|
386
|
+
for(i=1;i<=erglist[1];i++)
|
|
387
|
+
{
|
|
388
|
+
temppol1=1;
|
|
389
|
+
temppol2=1;
|
|
390
|
+
for(j=1;j<=erglist[2];j++)
|
|
391
|
+
{
|
|
392
|
+
if(erglist[2+(i-1)*erglist[2]+j]>=0)
|
|
393
|
+
{
|
|
394
|
+
//--- positive exponents
|
|
395
|
+
temppol1=temppol1*(var(j)^erglist[2+(i-1)*erglist[2]+j]);
|
|
396
|
+
}
|
|
397
|
+
else
|
|
398
|
+
{
|
|
399
|
+
//--- negative exponents
|
|
400
|
+
temppol2=temppol2*(var(j)^(-erglist[2+(i-1)*erglist[2]+j]));
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
toric=toric,temppol1-temppol2;
|
|
404
|
+
}
|
|
405
|
+
//--- get rid of leading entry 0;
|
|
406
|
+
toric=toric[2..ncols(toric)];
|
|
407
|
+
return(toric);
|
|
408
|
+
}
|
|
409
|
+
// A nice example here is the 3x3 Magic Squares
|
|
410
|
+
example
|
|
411
|
+
{"EXAMPLE:";
|
|
412
|
+
echo=2;
|
|
413
|
+
ring r=0,(x1,x2,x3,x4,x5,x6,x7,x8,x9),dp;
|
|
414
|
+
matrix M[7][9]=1,1,1,-1,-1,-1,0,0,0,1,1,1,0,0,0,-1,-1,-1,0,1,1,-1,0,0,-1,0,0,1,0,1,0,-1,0,0,-1,0,1,1,0,0,0,-1,0,0,-1,0,1,1,0,-1,0,0,0,-1,1,1,0,0,-1,0,-1,0,0;
|
|
415
|
+
hilbert4ti2(M);
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
/////////////////////////////////////////////////////////////////////////////
|
|
419
|
+
|