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,1009 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
version="version elim.lib 4.3.2.5 Jul_2023 "; // $Id: 76d540a115e0082bf7265fd0ac42bad3e1943bbe $
|
|
3
|
+
category="Commutative Algebra";
|
|
4
|
+
info="
|
|
5
|
+
LIBRARY: elim.lib Elimination, Saturation and Blowing up
|
|
6
|
+
|
|
7
|
+
PROCEDURES:
|
|
8
|
+
blowup0(j[,s1,s2]) create presentation of blownup ring of ideal j
|
|
9
|
+
elimRing(p) create ring with block ordering for elimating vars in p
|
|
10
|
+
elim(id,..) variables .. eliminated from id (ideal/module)
|
|
11
|
+
elim1(id,p) variables .. eliminated from id (different algorithm)
|
|
12
|
+
elim2(id,..) variables .. eliminated from id (different algorithm)
|
|
13
|
+
nselect(id,v) select generators not containing variables given by v
|
|
14
|
+
sat(id,j) saturated quotient of ideal/module id by ideal j
|
|
15
|
+
sat_with_exp(id,j) saturated quotient of ideal/module id by ideal j with exponent
|
|
16
|
+
select(id,v) select generators containing all variables given by v
|
|
17
|
+
select1(id,v) select generators containing one variable given by v
|
|
18
|
+
(parameters in square brackets [] are optional)
|
|
19
|
+
";
|
|
20
|
+
|
|
21
|
+
LIB "inout.lib";
|
|
22
|
+
LIB "general.lib";
|
|
23
|
+
LIB "polylib.lib";
|
|
24
|
+
LIB "ring.lib";
|
|
25
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
26
|
+
|
|
27
|
+
proc blowup0 (ideal J,ideal C, list #)
|
|
28
|
+
"USAGE: blowup0(J,C [,W]); J,C,W ideals
|
|
29
|
+
@* C = ideal of center of blowup, J = ideal to be blown up,
|
|
30
|
+
W = ideal of ambient space
|
|
31
|
+
ASSUME: inclusion of ideals : W in J, J in C.
|
|
32
|
+
If not, the procedure replaces J by J+W and C by C+J+W
|
|
33
|
+
RETURN: a ring, say B, containing the ideals C,J,W and the ideals
|
|
34
|
+
@* - bR (ideal defining the blown up basering)
|
|
35
|
+
@* - aS (ideal of blown up ambient space)
|
|
36
|
+
@* - eD (ideal of exceptional divisor)
|
|
37
|
+
@* - tT (ideal of total transform)
|
|
38
|
+
@* - sT (ideal of strict transform)
|
|
39
|
+
@* - bM (ideal of the blowup map from basering to B)
|
|
40
|
+
@* such that B/bR is isomorphic to the blowup ring BC.
|
|
41
|
+
PURPOSE: compute the projective blowup of the basering in the center C, the
|
|
42
|
+
exceptional locus, the total and strict transform of J,
|
|
43
|
+
and the blowup map.
|
|
44
|
+
The projective blowup is a presentation of the blowup ring
|
|
45
|
+
BC = R[C] = R + t*C + t^2*C^2 + ... (also called Rees ring) of the
|
|
46
|
+
ideal C in the ring basering R.
|
|
47
|
+
THEORY: If basering = K[x1,...,xn] and C = <f1,...,fk> then let
|
|
48
|
+
B = K[x1,...,xn,y1,...,yk] and aS the preimage in B of W
|
|
49
|
+
under the map B -> K[x1,...,xn,t], xi -> xi, yi -> t*fi.
|
|
50
|
+
aS is homogeneous in the variables yi and defines a variety
|
|
51
|
+
Z=V(aS) in A^n x P^(k-1), the ambient space of the blowup of V(W).
|
|
52
|
+
The projection Z -> A^n is an isomorphism outside the preimage
|
|
53
|
+
of the center V(C) in A^n and is called the blowup of the center.
|
|
54
|
+
The preimage of V(C) is called the exceptional set, the preimage of
|
|
55
|
+
V(J) is called the total transform of V(J). The strict transform
|
|
56
|
+
is the closure of (total transform minus the exceptional set).
|
|
57
|
+
@* If C = <x1,...,xn> then aS = <yi*xj - yj*xi | i,j=1,...,n>
|
|
58
|
+
and Z is the blowup of A^n in 0, the exceptional set is P^(k-1).
|
|
59
|
+
NOTE: The procedure creates a new ring with variables y(1..k) and x(1..n)
|
|
60
|
+
where n=nvars(basering) and k=ncols(C). The ordering is a block
|
|
61
|
+
ordering where the x-block has the ordering of the basering and
|
|
62
|
+
the y-block has ordering dp if C is not homogeneous
|
|
63
|
+
resp. the weighted ordering wp(b1,...bk) if C is homogeneous
|
|
64
|
+
with deg(C[i])=bi.
|
|
65
|
+
SEE ALSO:blowUp, blowUp2
|
|
66
|
+
EXAMPLE: example blowup0; shows examples
|
|
67
|
+
"{
|
|
68
|
+
def br = basering;
|
|
69
|
+
list l = ringlist(br);
|
|
70
|
+
int n,k,i = nvars(br),ncols(C),0;
|
|
71
|
+
ideal W;
|
|
72
|
+
if (size(#) !=0)
|
|
73
|
+
{ W = #[1];}
|
|
74
|
+
J = J,W;
|
|
75
|
+
//J = interred(J+W);
|
|
76
|
+
//------------------------- create rings for blowup ------------------------
|
|
77
|
+
//Create rings tr = K[x(1),...,x(n),t] and nr = K[x(1),...,x(n),y(1),...,y(k)]
|
|
78
|
+
//and map Bl: nr --> tr, x(i)->x(i), y(i)->t*fi.
|
|
79
|
+
//Let ord be the ordering of the basering.
|
|
80
|
+
//We change the ringlist l by changing l[2] and l[3]
|
|
81
|
+
//For K[t,x(1),...,x(n),t]
|
|
82
|
+
// - l[2]: the variables to x(1),...,x(n),t
|
|
83
|
+
// - l[3]: the ordering to a block ordering (ord,dp(1))
|
|
84
|
+
//For K[x(1),...,x(n),y(1),...,y(k)]
|
|
85
|
+
// - l[2]: the variables to x(1),...,x(n),y(1),...,y(k),
|
|
86
|
+
// - l[3]: the ordering to a block ordering (ord,dp) if C is
|
|
87
|
+
// not homogeneous or to (ord,wp(b1,...bk),ord) if C is
|
|
88
|
+
// homogeneous with deg(C[i])=bi;
|
|
89
|
+
|
|
90
|
+
//--------------- create tr = K[x(1),...,x(n),t] ---------------------------
|
|
91
|
+
int s = size(l[3]);
|
|
92
|
+
for ( i=n; i>=1; i--)
|
|
93
|
+
{
|
|
94
|
+
l[2][i]="x("+string(i)+")";
|
|
95
|
+
}
|
|
96
|
+
l[2]=insert(l[2],"t",n);
|
|
97
|
+
l[3]=insert(l[3],list("dp",1),s-1);
|
|
98
|
+
def tr = ring(l);
|
|
99
|
+
|
|
100
|
+
//--------------- create nr = K[x(1),...,x(n),y(1),...,y(k)] ---------------
|
|
101
|
+
l[2]=delete(l[2],n+1);
|
|
102
|
+
l[3]=delete(l[3],s);
|
|
103
|
+
for ( i=k; i>=1; i--)
|
|
104
|
+
{
|
|
105
|
+
l[2][n+i]="y("+string(i)+")";
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
//---- change l[3]:
|
|
109
|
+
l[3][s+1] = l[3][s]; // save the module ordering of the basering
|
|
110
|
+
intvec w=1:k;
|
|
111
|
+
intvec v; // containing the weights for the variable
|
|
112
|
+
if( homog(C) )
|
|
113
|
+
{
|
|
114
|
+
for( i=k; i>=1; i--)
|
|
115
|
+
{
|
|
116
|
+
v[i]=deg(C[i]);
|
|
117
|
+
}
|
|
118
|
+
if (v != w)
|
|
119
|
+
{
|
|
120
|
+
l[3][s]=list("wp",v);
|
|
121
|
+
}
|
|
122
|
+
else
|
|
123
|
+
{
|
|
124
|
+
l[3][s]=list("dp",v);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
else
|
|
128
|
+
{
|
|
129
|
+
v=1:k;
|
|
130
|
+
l[3][s]=list("dp",v);
|
|
131
|
+
}
|
|
132
|
+
def nr = ring(l);
|
|
133
|
+
|
|
134
|
+
//-------- create blowup map Bl: nr --> tr, x(i)->x(i), y(i)->t*fi ---------
|
|
135
|
+
setring tr;
|
|
136
|
+
ideal C = fetch(br,C);
|
|
137
|
+
ideal bl = x(1..n);
|
|
138
|
+
for( i=1; i<=k; i++) { bl = bl,t*C[i]; }
|
|
139
|
+
map Bl = nr,bl;
|
|
140
|
+
ideal Z;
|
|
141
|
+
//------------------ compute blown up objects and return -------------------
|
|
142
|
+
setring nr;
|
|
143
|
+
ideal bR = preimage(tr,Bl,Z); //ideal of blown up affine space A^n
|
|
144
|
+
ideal C = fetch(br,C);
|
|
145
|
+
ideal J = fetch(br,J);
|
|
146
|
+
ideal W = fetch(br,W);
|
|
147
|
+
ideal aS = interred(bR+W); //ideal of ambient space
|
|
148
|
+
ideal tT = interred(J+bR+W); //ideal of total transform
|
|
149
|
+
ideal eD = interred(C+J+bR+W); //ideal of exceptional divisor
|
|
150
|
+
ideal sT = sat(tT,C)[1]; //ideal of strict transform
|
|
151
|
+
ideal bM = x(1..n); //ideal of blowup map br --> nr
|
|
152
|
+
|
|
153
|
+
export(bR,C,J,W,aS,tT,eD,sT,bM);
|
|
154
|
+
return(nr);
|
|
155
|
+
}
|
|
156
|
+
example
|
|
157
|
+
{ "EXAMPLE:"; echo = 2;
|
|
158
|
+
ring r = 0,(x,y),dp;
|
|
159
|
+
poly f = x2+y3;
|
|
160
|
+
ideal C = x,y; //center of blowup
|
|
161
|
+
def B1 = blowup0(f,C);
|
|
162
|
+
setring B1;
|
|
163
|
+
aS; //ideal of blown up ambient space
|
|
164
|
+
tT; //ideal of total transform of f
|
|
165
|
+
sT; //ideal of strict transform of f
|
|
166
|
+
eD; //ideal of exceptional divisor
|
|
167
|
+
bM; //ideal of blowup map r --> B1
|
|
168
|
+
|
|
169
|
+
ring R = 0,(x,y,z),ds;
|
|
170
|
+
poly f = y2+x3+z5;
|
|
171
|
+
ideal C = y2,x,z;
|
|
172
|
+
ideal W = z-x;
|
|
173
|
+
def B2 = blowup0(f,C,W);
|
|
174
|
+
setring B2;
|
|
175
|
+
B2; //weighted ordering
|
|
176
|
+
bR; //ideal of blown up R
|
|
177
|
+
aS; //ideal of blown up R/W
|
|
178
|
+
sT; //strict transform of f
|
|
179
|
+
eD; //ideal of exceptional divisor
|
|
180
|
+
//Note that the different affine charts are {y(i)=1}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
184
|
+
proc elimRing ( poly vars, list #)
|
|
185
|
+
"USAGE: elimRing(vars [,w,str]); vars = product of variables to be eliminated
|
|
186
|
+
(type poly), w = intvec (specifying weights for all variables),
|
|
187
|
+
str = string either \"a\" or \"b\" (default: w=ringweights, str=\"a\")
|
|
188
|
+
RETURN: a list, say L, with R:=L[1] a ring and L[2] an intvec.
|
|
189
|
+
The ordering in R is an elimination ordering for the variables
|
|
190
|
+
appearing in vars depending on \"a\" resp. \"b\". Let w1 (resp. w2)
|
|
191
|
+
be the intvec of weights of the variables to be eliminated (resp. not
|
|
192
|
+
to be eliminated).
|
|
193
|
+
The monomial ordering of R has always 2 blocks, the first
|
|
194
|
+
block corresponds to the (given) variables to be eliminated.
|
|
195
|
+
@* If str = \"a\" the first block is a(w1,0..0) and the second block is
|
|
196
|
+
wp(w) resp. ws(w) if the first variable not to be eliminated is local.
|
|
197
|
+
@* If str = \"b\" the 1st block has ordering wp(w1) and the 2nd block
|
|
198
|
+
is wp(w2) resp. ws(w2) if the first variable not to be eliminated is
|
|
199
|
+
local.
|
|
200
|
+
@* If the basering is a quotient ring P/Q, then R is also a quotient ring
|
|
201
|
+
with Q replaced by a standard basis of Q w.r.t. the new ordering
|
|
202
|
+
(parameters are not touched).
|
|
203
|
+
@* The intvec L[2] is the intvec of variable weights (or the given w)
|
|
204
|
+
with weights <= 0 replaced by 1.
|
|
205
|
+
PURPOSE: Prepare a ring for eliminating vars from an ideal/module by
|
|
206
|
+
computing a standard basis in R with a fast monomial ordering.
|
|
207
|
+
This procedure is used by the procedure elim.
|
|
208
|
+
EXAMPLE: example elimRing; shows an example
|
|
209
|
+
"
|
|
210
|
+
{
|
|
211
|
+
def BR = basering;
|
|
212
|
+
int nvarBR = nvars(BR);
|
|
213
|
+
list BRlist = ringlist(BR);
|
|
214
|
+
//------------------ set resp. compute ring weights ----------------------
|
|
215
|
+
int ii;
|
|
216
|
+
intvec @w; //to store weights of all variables
|
|
217
|
+
@w[nvarBR] = 0;
|
|
218
|
+
@w = @w + 1; //initialize @w as 1..1
|
|
219
|
+
string str = "a"; //default for specifying elimination ordering
|
|
220
|
+
if (size(#) == 0) //default values
|
|
221
|
+
{
|
|
222
|
+
@w = ringweights(BR); //compute the ring weights (proc from ring.lib)
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
if (size(#) == 1)
|
|
226
|
+
{
|
|
227
|
+
if ( typeof(#[1]) == "intvec" )
|
|
228
|
+
{
|
|
229
|
+
@w = #[1]; //take the given weights
|
|
230
|
+
}
|
|
231
|
+
if ( typeof(#[1]) == "string" )
|
|
232
|
+
{
|
|
233
|
+
str = #[1]; //string for specifying elimination ordering
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
if (size(#) >= 2)
|
|
238
|
+
{
|
|
239
|
+
if ( typeof(#[1]) == "intvec" and typeof(#[2]) == "string" )
|
|
240
|
+
{
|
|
241
|
+
@w = #[1]; //take the given weights
|
|
242
|
+
str = #[2]; //string for specifying elimination ordering
|
|
243
|
+
|
|
244
|
+
}
|
|
245
|
+
if ( typeof(#[1]) == "string" and typeof(#[2]) == "intvec" )
|
|
246
|
+
{
|
|
247
|
+
str = #[1]; //string for specifying elimination ordering
|
|
248
|
+
@w = #[2]; //take the given weights
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
for ( ii=1; ii<=size(@w); ii++ )
|
|
253
|
+
{
|
|
254
|
+
if ( @w[ii] <= 0 )
|
|
255
|
+
{
|
|
256
|
+
@w[ii] = 1; //replace non-positive weights by 1
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
//------ get variables to be eliminated together with their weights -------
|
|
261
|
+
intvec w1,w2; //for ringweights of first (w1) and second (w2) block
|
|
262
|
+
list v1,v2; //for variables of first (to be liminated) and second block
|
|
263
|
+
|
|
264
|
+
for( ii=1; ii<=nvarBR; ii++ )
|
|
265
|
+
{
|
|
266
|
+
if( vars/var(ii)==0 ) //treat variables not to be eliminated
|
|
267
|
+
{
|
|
268
|
+
w2 = w2,@w[ii];
|
|
269
|
+
v2 = v2+list(string(var(ii)));
|
|
270
|
+
if ( ! defined(local) )
|
|
271
|
+
{
|
|
272
|
+
int local = (var(ii) < 1);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
else
|
|
276
|
+
{
|
|
277
|
+
w1 = w1,@w[ii];
|
|
278
|
+
v1 = v1+list(string(var(ii)));
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
if ( size(w1) <= 1 )
|
|
283
|
+
{
|
|
284
|
+
ERROR("## elimination of no variables?");
|
|
285
|
+
}
|
|
286
|
+
if ( size(w2) <= 1 )
|
|
287
|
+
{
|
|
288
|
+
ERROR("## elimination of all variables is not possible");
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
w1 = w1[2..size(w1)];
|
|
292
|
+
w2 = w2[2..size(w2)];
|
|
293
|
+
BRlist[2] = v1 + v2; //put variables to be eliminated in front
|
|
294
|
+
|
|
295
|
+
//-------- create elimination ordering with two blocks and weights ---------
|
|
296
|
+
//Assume that the first r of the n variables are to be eliminated.
|
|
297
|
+
//Then, in case of an a-ordering (default), the new ring ordering will be
|
|
298
|
+
//of the form (a(1..1,0..0),dp) with r 1's and n-r 0's or (a(w1,0..0),wp(@w))
|
|
299
|
+
//if there are variable weights which are not 1.
|
|
300
|
+
//In the case of a b-ordering the ordering will be a block ordering with two
|
|
301
|
+
//blocks of the form (dp(r),dp(n-r)) resp. (wp(w1),dp(w2))
|
|
302
|
+
|
|
303
|
+
list B3; //this will become the list for new ordering
|
|
304
|
+
|
|
305
|
+
//----- b-ordering case:
|
|
306
|
+
if ( str == "b" )
|
|
307
|
+
{
|
|
308
|
+
if( w1==1 ) //weights for vars to be eliminated are all 1
|
|
309
|
+
{
|
|
310
|
+
B3[1] = list("dp", w1);
|
|
311
|
+
}
|
|
312
|
+
else
|
|
313
|
+
{
|
|
314
|
+
B3[1] = list("wp", w1);
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
if( w2==1 ) //weights for vars not to be eliminated are all 1
|
|
318
|
+
{
|
|
319
|
+
if ( local )
|
|
320
|
+
{
|
|
321
|
+
B3[2] = list("ds", w2);
|
|
322
|
+
}
|
|
323
|
+
else
|
|
324
|
+
{
|
|
325
|
+
B3[2] = list("dp", w2);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
else
|
|
329
|
+
{
|
|
330
|
+
if ( local )
|
|
331
|
+
{
|
|
332
|
+
B3[2] = list("ws", w2);
|
|
333
|
+
}
|
|
334
|
+
else
|
|
335
|
+
{
|
|
336
|
+
B3[2] = list("wp", w2);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
//----- a-ordering case:
|
|
342
|
+
else
|
|
343
|
+
{
|
|
344
|
+
//define first the second block
|
|
345
|
+
if( @w==1 ) //weights for all vars are 1
|
|
346
|
+
{
|
|
347
|
+
if ( local )
|
|
348
|
+
{
|
|
349
|
+
B3[2] = list("ls", @w);
|
|
350
|
+
}
|
|
351
|
+
else
|
|
352
|
+
{
|
|
353
|
+
B3[2] = list("dp", @w);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
else
|
|
357
|
+
{
|
|
358
|
+
if ( local )
|
|
359
|
+
{
|
|
360
|
+
B3[2] = list("ws", @w);
|
|
361
|
+
}
|
|
362
|
+
else
|
|
363
|
+
{
|
|
364
|
+
B3[2] = list("wp", @w);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
//define now the first a-block of the form a(w1,0..0)
|
|
369
|
+
intvec @v;
|
|
370
|
+
@v[nvarBR] = 0;
|
|
371
|
+
@v = @v+w1;
|
|
372
|
+
B3[1] = list("a", @v);
|
|
373
|
+
}
|
|
374
|
+
BRlist[3] = B3;
|
|
375
|
+
|
|
376
|
+
//----------- put module ordering always at the end and return -------------
|
|
377
|
+
|
|
378
|
+
BRlist[3] = insert(BRlist[3],list("C",intvec(0)),size(B3));
|
|
379
|
+
|
|
380
|
+
def eRing = ring(quotientList(BRlist));
|
|
381
|
+
list result = eRing, @w;
|
|
382
|
+
return (result);
|
|
383
|
+
}
|
|
384
|
+
example
|
|
385
|
+
{ "EXAMPLE:"; echo = 2;
|
|
386
|
+
ring R = 0,(x,y,z,u,v),(c,lp);
|
|
387
|
+
def P = elimRing(yu); P;
|
|
388
|
+
intvec w = 1,1,3,4,5;
|
|
389
|
+
elimRing(yu,w);
|
|
390
|
+
|
|
391
|
+
ring S = (0,a),(x,y,z,u,v),ws(1,2,3,4,5);
|
|
392
|
+
minpoly = a2+1;
|
|
393
|
+
qring T = std(ideal(x+y2+v3,(x+v)^2));
|
|
394
|
+
def Q = elimRing(yv)[1];
|
|
395
|
+
setring Q; Q;
|
|
396
|
+
}
|
|
397
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
398
|
+
|
|
399
|
+
proc elim (def id, list #)
|
|
400
|
+
"USAGE: elim(id,arg[,s]); id ideal/module, arg can be either an intvec v or
|
|
401
|
+
a product p of variables (type poly), s a string determining the
|
|
402
|
+
method which can be \"slimgb\" or \"std\" or, additionally,
|
|
403
|
+
\"withWeigts\".
|
|
404
|
+
RETURN: ideal/module obtained from id by eliminating either the variables
|
|
405
|
+
with indices appearing in v or the variables appearing in p.
|
|
406
|
+
Does not work in a qring.
|
|
407
|
+
METHOD: elim uses elimRing to create a ring with an elimination ordering for
|
|
408
|
+
the variables to be eliminated and then applies std if \"std\"
|
|
409
|
+
is given, or slimgb if \"slimgb\" is given, or a heuristically chosen
|
|
410
|
+
method.
|
|
411
|
+
@* If the variables in the basering have weights these weights are used
|
|
412
|
+
in elimRing. If a string \"withWeigts\" as (optional) argument is given
|
|
413
|
+
Singular computes weights for the variables to make the input as
|
|
414
|
+
homogeneous as possible.
|
|
415
|
+
@* The method is different from that used by eliminate and elim1;
|
|
416
|
+
depending on the example, any of these commands can be faster.
|
|
417
|
+
NOTE: No special monomial ordering is required, i.e. the ordering can be
|
|
418
|
+
local or mixed. The result is a SB with respect to the ordering of
|
|
419
|
+
the second block used by elimRing. E.g. if the first var not to be
|
|
420
|
+
eliminated is global, resp. local, this ordering is dp, resp. ds
|
|
421
|
+
(or wp, resp. ws, with the given weights for these variables).
|
|
422
|
+
If printlevel > 0 the ring for which the output is a SB is shown.
|
|
423
|
+
SEE ALSO: eliminate, elim1
|
|
424
|
+
EXAMPLE: example elim; shows an example
|
|
425
|
+
"
|
|
426
|
+
{
|
|
427
|
+
if (size(#) == 0)
|
|
428
|
+
{
|
|
429
|
+
ERROR("## specify variables to be eliminated");
|
|
430
|
+
}
|
|
431
|
+
if (isQuotientRing(basering))
|
|
432
|
+
{
|
|
433
|
+
ERROR("`elim` cannot eliminate in qring, use `eliminate`");
|
|
434
|
+
}
|
|
435
|
+
int pr = printlevel - voice + 2; //for ring display if printlevel > 0
|
|
436
|
+
def BR = basering;
|
|
437
|
+
intvec save_opt=option(get);
|
|
438
|
+
list lER; //for list returned by elimRing
|
|
439
|
+
//-------------------------------- check input -------------------------------
|
|
440
|
+
poly vars;
|
|
441
|
+
int ne; //for number of vars to be eliminated
|
|
442
|
+
int ii;
|
|
443
|
+
if (size(#) > 0)
|
|
444
|
+
{
|
|
445
|
+
if ( typeof(#[1]) == "poly" )
|
|
446
|
+
{
|
|
447
|
+
vars = #[1];
|
|
448
|
+
for( ii=1; ii<=nvars(BR); ii++ )
|
|
449
|
+
{
|
|
450
|
+
if ( vars/var(ii) != 0)
|
|
451
|
+
{ ne++; }
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
if ( typeof(#[1]) == "intvec" or typeof(#[1]) == "int")
|
|
455
|
+
{
|
|
456
|
+
ne = size(#[1]);
|
|
457
|
+
vars=1;
|
|
458
|
+
for( ii=1; ii<=ne; ii++ )
|
|
459
|
+
{
|
|
460
|
+
vars=vars*var(#[1][ii]);
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
string method; //for "std" or "slimgb" or "withWeights"
|
|
466
|
+
if (size(#) >= 2)
|
|
467
|
+
{
|
|
468
|
+
if ( typeof(#[2]) == "string" )
|
|
469
|
+
{
|
|
470
|
+
if ( #[2] == "withWeights" )
|
|
471
|
+
{
|
|
472
|
+
intvec @w = weight(id); //computation of weights
|
|
473
|
+
}
|
|
474
|
+
if ( #[2] == "std" ) { method = "std"; }
|
|
475
|
+
if ( #[2] == "slimgb" ) { method = "slimgb"; }
|
|
476
|
+
|
|
477
|
+
}
|
|
478
|
+
else
|
|
479
|
+
{
|
|
480
|
+
ERROR("expected `elim(ideal,intvec[,string])`");
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
if (size(#) == 3)
|
|
484
|
+
{
|
|
485
|
+
if ( typeof(#[3]) == "string" )
|
|
486
|
+
{
|
|
487
|
+
if ( #[3] == "withWeights" )
|
|
488
|
+
{
|
|
489
|
+
intvec @w = weight(id); //computation of weights
|
|
490
|
+
}
|
|
491
|
+
if ( #[3] == "std" ) { method = "std"; }
|
|
492
|
+
if ( #[3] == "slimgb" ) { method = "slimgb"; }
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
if ( method == "" )
|
|
497
|
+
{
|
|
498
|
+
ERROR("expected \"std\" or \"slimgb\" or \"withWeights\" as the optional string parameters");
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
//-------------- create new ring and map objects to new ring ------------------
|
|
503
|
+
if ( defined(@w) )
|
|
504
|
+
{
|
|
505
|
+
lER = elimRing(vars,@w); //in this case lER[2] = @w
|
|
506
|
+
}
|
|
507
|
+
else
|
|
508
|
+
{
|
|
509
|
+
lER = elimRing(vars);
|
|
510
|
+
intvec @w = lER[2]; //in this case w is the intvec of
|
|
511
|
+
//variable weights as computed in elimRing
|
|
512
|
+
}
|
|
513
|
+
def ER = lER[1];
|
|
514
|
+
setring ER;
|
|
515
|
+
def id = imap(BR,id);
|
|
516
|
+
poly vars = imap(BR,vars);
|
|
517
|
+
|
|
518
|
+
//---------- now eliminate in new ring and map back to old ring ---------------
|
|
519
|
+
//if possible apply std(id,hi,w) where hi is the first hilbert function
|
|
520
|
+
//of id with respect to the weights w. If w is not defined (i.e. good weights
|
|
521
|
+
//@w are computed then id is only approximately @w-homogeneous and
|
|
522
|
+
//the hilbert driven std cannot be used directly; however, stdhilb
|
|
523
|
+
//homogenizes first and applies the hilbert driven std to the homogenization
|
|
524
|
+
|
|
525
|
+
option(redThrough);
|
|
526
|
+
if (typeof(id)=="matrix")
|
|
527
|
+
{
|
|
528
|
+
id = matrix(stdhilb(module(id),method,@w));
|
|
529
|
+
}
|
|
530
|
+
else
|
|
531
|
+
{
|
|
532
|
+
id = stdhilb(id,method,@w);
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
//### Todo: hier sollte id = groebner(id, "hilb"); verwendet werden.
|
|
536
|
+
//da z.Zt. (Jan 09) groebener bei extra Gewichtsvektor a(...) aber stets std
|
|
537
|
+
//aufruft und ausserdem "withWeigts" nicht kennt, ist groebner(id, "hilb")
|
|
538
|
+
//zunaechst nicht aktiviert. Ev. nach Ueberarbeitung von groebner aktivieren
|
|
539
|
+
|
|
540
|
+
id = nselect(id,1..ne);
|
|
541
|
+
if ( pr > 0 )
|
|
542
|
+
{
|
|
543
|
+
"// result is a SB in the following ring:";
|
|
544
|
+
ER;
|
|
545
|
+
}
|
|
546
|
+
option(set,save_opt);
|
|
547
|
+
setring BR;
|
|
548
|
+
return(imap(ER,id));
|
|
549
|
+
}
|
|
550
|
+
example
|
|
551
|
+
{ "EXAMPLE:"; echo = 2;
|
|
552
|
+
ring r=0,(x,y,u,v,w),dp;
|
|
553
|
+
ideal i=x-u,y-u2,w-u3,v-x+y3;
|
|
554
|
+
elim(i,3..4);
|
|
555
|
+
elim(i,uv);
|
|
556
|
+
int p = printlevel;
|
|
557
|
+
printlevel = 2;
|
|
558
|
+
elim(i,uv,"withWeights","slimgb");
|
|
559
|
+
printlevel = p;
|
|
560
|
+
|
|
561
|
+
ring S = (0,a),(x,y,z,u,v),ws(1,2,3,4,5);
|
|
562
|
+
minpoly = a2+1;
|
|
563
|
+
ideal i=x-u,y-u2,az-u3,v-x+ay3;
|
|
564
|
+
module m=i*gen(1)+i*gen(2);
|
|
565
|
+
m=elim(m,xy);
|
|
566
|
+
show(m);
|
|
567
|
+
}
|
|
568
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
569
|
+
|
|
570
|
+
proc elim2 (def id, intvec va)
|
|
571
|
+
"USAGE: elim2(id,v); id ideal/module, v intvec
|
|
572
|
+
RETURNS: ideal/module obtained from id by eliminating variables in v
|
|
573
|
+
NOTE: no special monomial ordering is required, result is a SB with
|
|
574
|
+
respect to ordering dp (resp. ls) if the first var not to be
|
|
575
|
+
eliminated belongs to a -p (resp. -s) blockordering
|
|
576
|
+
SEE ALSO: elim1, eliminate, elim
|
|
577
|
+
EXAMPLE: example elim2; shows examples
|
|
578
|
+
"
|
|
579
|
+
{
|
|
580
|
+
//---- get variables to be eliminated and create string for new ordering ------
|
|
581
|
+
int ii; poly vars=1;
|
|
582
|
+
for( ii=1; ii<=size(va); ii++ ) { vars=vars*var(va[ii]); }
|
|
583
|
+
if( attrib(basering,"global")) { string ordering = "dp"; }
|
|
584
|
+
else { string ordering = "ls"; }
|
|
585
|
+
//-------------- create new ring and map objects to new ring ------------------
|
|
586
|
+
def br = basering;
|
|
587
|
+
ring @newr = create_ring(ring_list(br)[1], "("+varstr(br)+")", ordering);
|
|
588
|
+
def i = imap(br,id);
|
|
589
|
+
poly vars = imap(br,vars);
|
|
590
|
+
//---------- now eliminate in new ring and map back to old ring ---------------
|
|
591
|
+
i = eliminate(i,vars);
|
|
592
|
+
setring br;
|
|
593
|
+
return(imap(@newr,i));
|
|
594
|
+
}
|
|
595
|
+
example
|
|
596
|
+
{ "EXAMPLE:"; echo = 2;
|
|
597
|
+
ring r=0,(x,y,u,v,w),dp;
|
|
598
|
+
ideal i=x-u,y-u2,w-u3,v-x+y3;
|
|
599
|
+
elim2(i,3..4);
|
|
600
|
+
module m=i*gen(1)+i*gen(2);
|
|
601
|
+
m=elim2(m,3..4);show(m);
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
605
|
+
proc elim1 (def id, list #)
|
|
606
|
+
"USAGE: elim1(id,arg); id ideal/module, arg can be either an intvec v or a
|
|
607
|
+
product p of variables (type poly)
|
|
608
|
+
RETURN: ideal/module obtained from id by eliminating either the variables
|
|
609
|
+
with indices appearing in v or the variables appearing in p
|
|
610
|
+
METHOD: elim1 calls eliminate but in a ring with ordering dp (resp. ls)
|
|
611
|
+
if the first var not to be eliminated belongs to a -p (resp. -s)
|
|
612
|
+
ordering.
|
|
613
|
+
NOTE: no special monomial ordering is required.
|
|
614
|
+
SEE ALSO: elim, eliminate
|
|
615
|
+
EXAMPLE: example elim1; shows examples
|
|
616
|
+
"
|
|
617
|
+
{
|
|
618
|
+
def br = basering;
|
|
619
|
+
if (isQuotientRing(br))
|
|
620
|
+
{
|
|
621
|
+
ERROR ("elim1 cannot eliminate in a qring, use eliminate");
|
|
622
|
+
}
|
|
623
|
+
//------------- create product vars of variables to be eliminated -------------
|
|
624
|
+
poly vars;
|
|
625
|
+
int ii;
|
|
626
|
+
if (size(#) > 0)
|
|
627
|
+
{
|
|
628
|
+
if ( typeof(#[1]) == "poly" ) { vars = #[1]; }
|
|
629
|
+
if ( typeof(#[1]) == "intvec" or typeof(#[1]) == "int")
|
|
630
|
+
{
|
|
631
|
+
vars=1;
|
|
632
|
+
for( ii=1; ii<=size(#[1]); ii++ )
|
|
633
|
+
{
|
|
634
|
+
vars=vars*var(#[1][ii]);
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
//---- get variables to be eliminated and create string for new ordering ------
|
|
639
|
+
for( ii=1; ii<=nvars(basering); ii++ )
|
|
640
|
+
{
|
|
641
|
+
if( vars/var(ii)==0 ) { poly p = 1+var(ii); break;}
|
|
642
|
+
}
|
|
643
|
+
if( ord(p)==0 ) { string ordering = "ls"; }
|
|
644
|
+
if( ord(p)>0 ) { string ordering = "dp"; }
|
|
645
|
+
//-------------- create new ring and map objects to new ring ------------------
|
|
646
|
+
ring @newr = create_ring(ring_list(br)[1], "("+varstr(br)+")", ordering, "no_minpoly");
|
|
647
|
+
def id = fetch(br,id);
|
|
648
|
+
poly vars = fetch(br,vars);
|
|
649
|
+
//---------- now eliminate in new ring and map back to old ring ---------------
|
|
650
|
+
id = eliminate(id,vars);
|
|
651
|
+
setring br;
|
|
652
|
+
return(imap(@newr,id));
|
|
653
|
+
}
|
|
654
|
+
example
|
|
655
|
+
{ "EXAMPLE:"; echo = 2;
|
|
656
|
+
ring r=0,(x,y,t,s,z),dp;
|
|
657
|
+
ideal i=x-t,y-t2,z-t3,s-x+y3;
|
|
658
|
+
elim1(i,ts);
|
|
659
|
+
module m=i*gen(1)+i*gen(2);
|
|
660
|
+
m=elim1(m,3..4); show(m);
|
|
661
|
+
}
|
|
662
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
663
|
+
|
|
664
|
+
proc nselect (def id, intvec v)
|
|
665
|
+
"USAGE: nselect(id,v); id = ideal, module or matrix, v = intvec
|
|
666
|
+
RETURN: generators (or columns) of id not containing the variables with index
|
|
667
|
+
an entry of v
|
|
668
|
+
SEE ALSO: select, select1
|
|
669
|
+
EXAMPLE: example nselect; shows examples
|
|
670
|
+
"
|
|
671
|
+
{
|
|
672
|
+
if (typeof(id) != "ideal")
|
|
673
|
+
{
|
|
674
|
+
if (typeof(id)=="module" || typeof(id)=="matrix")
|
|
675
|
+
{
|
|
676
|
+
module id1 = module(id);
|
|
677
|
+
}
|
|
678
|
+
else
|
|
679
|
+
{
|
|
680
|
+
ERROR("// *** input must be of type ideal or module or matrix");
|
|
681
|
+
}
|
|
682
|
+
}
|
|
683
|
+
else
|
|
684
|
+
{
|
|
685
|
+
ideal id1 = id;
|
|
686
|
+
}
|
|
687
|
+
int j,k;
|
|
688
|
+
int n,m = size(v), ncols(id1);
|
|
689
|
+
for( k=1; k<=m; k++ )
|
|
690
|
+
{
|
|
691
|
+
for( j=1; j<=n; j++ )
|
|
692
|
+
{
|
|
693
|
+
if( size(id1[k]/var(v[j]))!=0 )
|
|
694
|
+
{
|
|
695
|
+
id1[k]=0; break;
|
|
696
|
+
}
|
|
697
|
+
}
|
|
698
|
+
}
|
|
699
|
+
if(typeof(id)=="matrix")
|
|
700
|
+
{
|
|
701
|
+
return(matrix(simplify(id1,2)));
|
|
702
|
+
}
|
|
703
|
+
return(simplify(id1,2));
|
|
704
|
+
}
|
|
705
|
+
example
|
|
706
|
+
{ "EXAMPLE:"; echo = 2;
|
|
707
|
+
ring r=0,(x,y,t,s,z),(c,dp);
|
|
708
|
+
ideal i=x-y,y-z2,z-t3,s-x+y3;
|
|
709
|
+
nselect(i,3);
|
|
710
|
+
module m=i*(gen(1)+gen(2));
|
|
711
|
+
m;
|
|
712
|
+
nselect(m,3..4);
|
|
713
|
+
nselect(matrix(m),3..4);
|
|
714
|
+
}
|
|
715
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
716
|
+
|
|
717
|
+
proc sat (def id, ideal j)
|
|
718
|
+
"USAGE: sat(id,j); id=ideal/module, j=ideal
|
|
719
|
+
RETURN: ideal/module
|
|
720
|
+
saturation of id with respect to j (= union_(k=1...) of id:j^k)
|
|
721
|
+
NOTE: result is a standard basis in the basering
|
|
722
|
+
KEYWORDS: saturation
|
|
723
|
+
SEE ALSO: modSat; sat_with_exp
|
|
724
|
+
EXAMPLE: example sat; shows an example
|
|
725
|
+
"{
|
|
726
|
+
return(system("sat",id,j));
|
|
727
|
+
}
|
|
728
|
+
example
|
|
729
|
+
{ "EXAMPLE:"; echo = 2;
|
|
730
|
+
ring r = 2,(x,y,z),dp;
|
|
731
|
+
poly F = x5+y5+(x-y)^2*xyz;
|
|
732
|
+
ideal j = jacob(F);
|
|
733
|
+
sat(j,maxideal(1));
|
|
734
|
+
sat(j,maxideal(2));
|
|
735
|
+
}
|
|
736
|
+
proc sat_with_exp (def id, ideal j)
|
|
737
|
+
"USAGE: sat(id,j); id=ideal/module, j=ideal
|
|
738
|
+
RETURN: list of an ideal/module [1] and an integer [2]:
|
|
739
|
+
[1] = saturation of id with respect to j (= union_(k=1...) of id:j^k)
|
|
740
|
+
[2] = saturation exponent (= min( k | id:j^k = id:j^(k+1) ))
|
|
741
|
+
NOTE: [1] is a standard basis in the basering
|
|
742
|
+
KEYWORDS: saturation
|
|
743
|
+
SEE ALSO: modSat; sat
|
|
744
|
+
EXAMPLE: example sat_with_exp; shows an example
|
|
745
|
+
"{
|
|
746
|
+
int ii,kk;
|
|
747
|
+
def i=id;
|
|
748
|
+
if (!attrib(id,"isSB")) { id=std(id);}
|
|
749
|
+
int p = printlevel-voice+2; // p=printlevel (default: p=0)
|
|
750
|
+
while( ii<=ncols(i) )
|
|
751
|
+
{
|
|
752
|
+
dbprint(p,"// compute quotient "+string(kk+1));
|
|
753
|
+
i=quotient(id,j);
|
|
754
|
+
for( ii=1; ii<=ncols(i); ii++ )
|
|
755
|
+
{
|
|
756
|
+
if( reduce(i[ii],id,5)!=0 ) break;
|
|
757
|
+
}
|
|
758
|
+
id=std(i);
|
|
759
|
+
kk++;
|
|
760
|
+
}
|
|
761
|
+
dbprint(p,"// saturation becomes stable after "+string(kk-1)+" iteration(s)","");
|
|
762
|
+
list L = id,kk-1;
|
|
763
|
+
return (L);
|
|
764
|
+
}
|
|
765
|
+
example
|
|
766
|
+
{ "EXAMPLE:"; echo = 2;
|
|
767
|
+
ring r = 2,(x,y,z),dp;
|
|
768
|
+
poly F = x5+y5+(x-y)^2*xyz;
|
|
769
|
+
ideal j = jacob(F);
|
|
770
|
+
sat(j,maxideal(1));
|
|
771
|
+
sat(j,maxideal(2));
|
|
772
|
+
}
|
|
773
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
774
|
+
|
|
775
|
+
proc select (def id, intvec v)
|
|
776
|
+
"USAGE: select(id,n[,m]); id = ideal/module/matrix, v = intvec
|
|
777
|
+
RETURN: generators/columns of id containing all variables with index
|
|
778
|
+
an entry of v
|
|
779
|
+
NOTE: use 'select1' for selecting generators/columns containing at least
|
|
780
|
+
one of the variables with index an entry of v
|
|
781
|
+
SEE ALSO: select1, nselect
|
|
782
|
+
EXAMPLE: example select; shows examples
|
|
783
|
+
"
|
|
784
|
+
{
|
|
785
|
+
if (typeof(id) != "ideal")
|
|
786
|
+
{
|
|
787
|
+
if (typeof(id)=="module" || typeof(id)=="matrix")
|
|
788
|
+
{
|
|
789
|
+
module id1 = module(id);
|
|
790
|
+
}
|
|
791
|
+
else
|
|
792
|
+
{
|
|
793
|
+
ERROR("// *** input must be of type ideal or module or matrix");
|
|
794
|
+
}
|
|
795
|
+
}
|
|
796
|
+
else
|
|
797
|
+
{
|
|
798
|
+
ideal id1 = id;
|
|
799
|
+
}
|
|
800
|
+
int j,k;
|
|
801
|
+
int n,m = size(v), ncols(id1);
|
|
802
|
+
for( k=1; k<=m; k++ )
|
|
803
|
+
{
|
|
804
|
+
for( j=1; j<=n; j++ )
|
|
805
|
+
{
|
|
806
|
+
if( size(id1[k]/var(v[j]))==0)
|
|
807
|
+
{
|
|
808
|
+
id1[k]=0; break;
|
|
809
|
+
}
|
|
810
|
+
}
|
|
811
|
+
}
|
|
812
|
+
if(typeof(id)=="matrix")
|
|
813
|
+
{
|
|
814
|
+
return(matrix(simplify(id1,2)));
|
|
815
|
+
}
|
|
816
|
+
return(simplify(id1,2));
|
|
817
|
+
}
|
|
818
|
+
example
|
|
819
|
+
{ "EXAMPLE:"; echo = 2;
|
|
820
|
+
ring r=0,(x,y,t,s,z),(c,dp);
|
|
821
|
+
ideal i=x-y,y-z2,z-t3,s-x+y3;
|
|
822
|
+
ideal j=select(i,1);
|
|
823
|
+
j;
|
|
824
|
+
module m=i*(gen(1)+gen(2));
|
|
825
|
+
m;
|
|
826
|
+
select(m,1..2);
|
|
827
|
+
select(matrix(m),1..2);
|
|
828
|
+
}
|
|
829
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
830
|
+
|
|
831
|
+
proc select1 (def id, intvec v)
|
|
832
|
+
"USAGE: select1(id,v); id = ideal/module/matrix, v = intvec
|
|
833
|
+
RETURN: generators/columns of id containing at least one of the variables
|
|
834
|
+
with index an entry of v
|
|
835
|
+
NOTE: use 'select' for selecting generators/columns containing all variables
|
|
836
|
+
with index an entry of v
|
|
837
|
+
SEE ALSO: select, nselect
|
|
838
|
+
EXAMPLE: example select1; shows examples
|
|
839
|
+
"
|
|
840
|
+
{
|
|
841
|
+
if (typeof(id) != "ideal")
|
|
842
|
+
{
|
|
843
|
+
if (typeof(id)=="module" || typeof(id)=="matrix")
|
|
844
|
+
{
|
|
845
|
+
module id1 = module(id);
|
|
846
|
+
module I;
|
|
847
|
+
}
|
|
848
|
+
else
|
|
849
|
+
{
|
|
850
|
+
ERROR("// *** input must be of type ideal or module or matrix");
|
|
851
|
+
}
|
|
852
|
+
}
|
|
853
|
+
else
|
|
854
|
+
{
|
|
855
|
+
ideal id1 = id;
|
|
856
|
+
ideal I;
|
|
857
|
+
}
|
|
858
|
+
int j,k;
|
|
859
|
+
int n,m = size(v), ncols(id1);
|
|
860
|
+
for( k=1; k<=m; k++ )
|
|
861
|
+
{ for( j=1; j<=n; j++ )
|
|
862
|
+
{
|
|
863
|
+
if( size(subst(id1[k],var(v[j]),0)) != size(id1[k]) )
|
|
864
|
+
{
|
|
865
|
+
I = I,id1[k]; break;
|
|
866
|
+
}
|
|
867
|
+
}
|
|
868
|
+
}
|
|
869
|
+
if(typeof(id)=="matrix")
|
|
870
|
+
{
|
|
871
|
+
return(matrix(simplify(I,2)));
|
|
872
|
+
}
|
|
873
|
+
return(simplify(I,2));
|
|
874
|
+
}
|
|
875
|
+
example
|
|
876
|
+
{ "EXAMPLE:"; echo = 2;
|
|
877
|
+
ring r=0,(x,y,t,s,z),(c,dp);
|
|
878
|
+
ideal i=x-y,y-z2,z-t3,s-x+y3;
|
|
879
|
+
ideal j=select1(i,1);j;
|
|
880
|
+
module m=i*(gen(1)+gen(2)); m;
|
|
881
|
+
select1(m,1..2);
|
|
882
|
+
select1(matrix(m),1..2);
|
|
883
|
+
}
|
|
884
|
+
/*
|
|
885
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
886
|
+
// EXAMPLEs
|
|
887
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
888
|
+
// Siehe auch file 'tst-elim' mit grossem Beispiel;
|
|
889
|
+
example blowup0;
|
|
890
|
+
example elimRing;
|
|
891
|
+
example elim;
|
|
892
|
+
example elim1;
|
|
893
|
+
example nselect;
|
|
894
|
+
example sat;
|
|
895
|
+
example select;
|
|
896
|
+
example select1;
|
|
897
|
+
//===========================================================================
|
|
898
|
+
// Rationale Normalkurve vom Grad d im P^d bzw. im A^d:
|
|
899
|
+
//homogen s:t -> (t^d:t^(d-1)s: ...: s^d), inhomogen t ->(t^d:t^(d-1): ...:t)
|
|
900
|
+
|
|
901
|
+
//------------------- 1. Homogen:
|
|
902
|
+
//Varianten der Methode
|
|
903
|
+
int d = 5;
|
|
904
|
+
ring R = 0,(s,t,x(0..d)),dp;
|
|
905
|
+
ideal I;
|
|
906
|
+
for( int ii=0; ii<=d; ii++) {I = I,ideal(x(ii)-t^(d-ii)*s^ii); }
|
|
907
|
+
|
|
908
|
+
int tt = timer;
|
|
909
|
+
ideal eI = elim(I,1..2,"std");
|
|
910
|
+
ideal eI = elim(I,1..2,"slimgb");
|
|
911
|
+
ideal eI = elim(I,st,"withWeights");
|
|
912
|
+
ideal eI = elim(I,st,"std","withWeights");
|
|
913
|
+
//komplizierter
|
|
914
|
+
int d = 50;
|
|
915
|
+
ring R = 0,(s,t,x(0..d)),dp;
|
|
916
|
+
ideal I;
|
|
917
|
+
for( int ii=0; ii<=d; ii++) {I = I,ideal(x(ii)-t^(d-ii)*s^ii); }
|
|
918
|
+
int tt = timer;
|
|
919
|
+
ideal eI = elim(I,1..2); //56(44)sec (slimgb 22(17),hilb 33(26))
|
|
920
|
+
timer-tt; tt = timer;
|
|
921
|
+
ideal eI = elim1(I,1..2); //71(53)sec
|
|
922
|
+
timer-tt; tt = timer;
|
|
923
|
+
ideal eI = eliminate(I,st); //70(51)sec (wie elim1)
|
|
924
|
+
timer-tt;
|
|
925
|
+
timer-tt; tt = timer;
|
|
926
|
+
ideal eI = elim(I,1..2,"withWeights"); //190(138)sec
|
|
927
|
+
//(weights73(49), slimgb43(33), hilb71(53)
|
|
928
|
+
timer-tt;
|
|
929
|
+
//------------------- 2. Inhomogen
|
|
930
|
+
int d = 50;
|
|
931
|
+
ring r = 0,(t,x(0..d)),dp;
|
|
932
|
+
ideal I;
|
|
933
|
+
for( int ii=0; ii<=d; ii++) {I = I+ideal(x(ii)-t^(d-ii)); }
|
|
934
|
+
int tt = timer;
|
|
935
|
+
ideal eI = elim(I,1,); //20(15)sec (slimgb13(10), hilb6(5))
|
|
936
|
+
ideal eI = elim(I,1,"std"); //17sec (std 11, hilb 6)
|
|
937
|
+
timer-tt; tt = timer;
|
|
938
|
+
ideal eI = elim1(I,t); //8(6)sec
|
|
939
|
+
timer-tt; tt = timer;
|
|
940
|
+
ideal eI = eliminate(I,t); //7(6)sec
|
|
941
|
+
timer-tt;
|
|
942
|
+
timer-tt; tt = timer;
|
|
943
|
+
ideal eI = elim(I,1..1,"withWeights"); //189(47)sec
|
|
944
|
+
//(weights73(42), slimgb43(1), hilb70(2)
|
|
945
|
+
timer-tt;
|
|
946
|
+
|
|
947
|
+
//===========================================================================
|
|
948
|
+
// Zufaellige Beispiele, homogen
|
|
949
|
+
system("random",37);
|
|
950
|
+
ring R = 0,x(1..6),lp;
|
|
951
|
+
ideal I = sparseid(4,3);
|
|
952
|
+
|
|
953
|
+
int tt = timer;
|
|
954
|
+
ideal eI = elim(I,1); //108(85)sec (slimgb 29(23), hilb79(61)
|
|
955
|
+
timer-tt; tt = timer;
|
|
956
|
+
ideal eI = elim(I,1,"std"); //(139)sec (std 77, hilb 61)
|
|
957
|
+
timer-tt; tt = timer;
|
|
958
|
+
ideal eI = elim1(I,1); //(nach 45 min abgebrochen)
|
|
959
|
+
timer-tt; tt = timer;
|
|
960
|
+
ideal eI = eliminate(I,x(1)); //(nach 45 min abgebrochen)
|
|
961
|
+
timer-tt; tt = timer;
|
|
962
|
+
|
|
963
|
+
// Zufaellige Beispiele, inhomogen
|
|
964
|
+
system("random",37);
|
|
965
|
+
ring R = 32003,x(1..5),dp;
|
|
966
|
+
ideal I = sparseid(4,2,3);
|
|
967
|
+
option(prot,redThrough);
|
|
968
|
+
|
|
969
|
+
intvec w = 1,1,1,1,1,1;
|
|
970
|
+
int tt = timer;
|
|
971
|
+
ideal eI = elim(I,1,w); //(nach 5min abgebr.) hilb schlaegt nicht zu
|
|
972
|
+
timer-tt; tt = timer; //BUG!!!!!!
|
|
973
|
+
|
|
974
|
+
int tt = timer;
|
|
975
|
+
ideal eI = elim(I,1); //(nach 5min abgebr.) hilb schlaegt nicht zu
|
|
976
|
+
timer-tt; tt = timer; //BUG!!!!!!
|
|
977
|
+
ideal eI = elim1(I,1); //8(7.8)sec
|
|
978
|
+
timer-tt; tt = timer;
|
|
979
|
+
ideal eI = eliminate(I,x(1)); //8(7.8)sec
|
|
980
|
+
timer-tt; tt = timer;
|
|
981
|
+
|
|
982
|
+
BUG!!!!
|
|
983
|
+
// Zufaellige Beispiele, inhomogen, lokal
|
|
984
|
+
system("random",37);
|
|
985
|
+
ring R = 32003,x(1..6),ds;
|
|
986
|
+
ideal I = sparseid(4,1,2);
|
|
987
|
+
option(prot,redThrough);
|
|
988
|
+
int tt = timer;
|
|
989
|
+
ideal eI = elim(I,1); //(haengt sich auf)
|
|
990
|
+
timer-tt; tt = timer;
|
|
991
|
+
ideal eI = elim1(I,1); //(0)sec !!!!!!
|
|
992
|
+
timer-tt; tt = timer;
|
|
993
|
+
ideal eI = eliminate(I,x(1)); //(ewig mit ...., abgebrochen)
|
|
994
|
+
timer-tt; tt = timer;
|
|
995
|
+
|
|
996
|
+
ring R1 =(32003),(x(1),x(2),x(3),x(4),x(5),x(6)),(a(1,0,0,0,0,0),ds,C);
|
|
997
|
+
ideal I = imap(R,I);
|
|
998
|
+
I = std(I); //(haengt sich auf) !!!!!!!
|
|
999
|
+
|
|
1000
|
+
ideal eI = elim(I,1..1,"withWeights"); //(47)sec (weights42, slimgb1, hilb2)
|
|
1001
|
+
timer-tt;
|
|
1002
|
+
|
|
1003
|
+
ring R1 =(32003),(x(1),x(2),x(3),x(4),x(5),x(6)),(a(1,0,0,0,0,0),ds,C);
|
|
1004
|
+
ideal I = imap(R,I);
|
|
1005
|
+
I = std(I); //(haengt sich auf) !!!!!!!
|
|
1006
|
+
|
|
1007
|
+
ideal eI = elim(I,1..1,"withWeights"); //(47)sec (weights42, slimgb1, hilb2)
|
|
1008
|
+
timer-tt;
|
|
1009
|
+
*/
|