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,1094 @@
|
|
|
1
|
+
////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
version="version sing.lib 4.4.0.0 Nov_2023 "; // $Id: c46a2bbc5ff6705e99a87ff038f7854abe8b1282 $
|
|
3
|
+
category="Singularities";
|
|
4
|
+
info="
|
|
5
|
+
LIBRARY: sing.lib Invariants of Singularities
|
|
6
|
+
AUTHORS: Gert-Martin Greuel, email: greuel@mathematik.uni-kl.de @*
|
|
7
|
+
Bernd Martin, email: martin@math.tu-cottbus.de
|
|
8
|
+
|
|
9
|
+
PROCEDURES:
|
|
10
|
+
codim(id1, id2); vector space dimension of id2/id1 if finite
|
|
11
|
+
deform(i); infinitesimal deformations of ideal i
|
|
12
|
+
dim_slocus(i); dimension of singular locus of ideal i
|
|
13
|
+
is_active(f,id); is polynomial f an active element mod id? (id ideal/module)
|
|
14
|
+
is_ci(i); is ideal i a complete intersection?
|
|
15
|
+
is_is(i); is ideal i an isolated singularity?
|
|
16
|
+
is_reg(f,id); is polynomial f a regular element mod id? (id ideal/module)
|
|
17
|
+
is_regs(i[,id]); are gen's of ideal i regular sequence modulo id?
|
|
18
|
+
locstd(i); SB for local degree ordering without cancelling units
|
|
19
|
+
milnor(i); milnor number of ideal i; (assume i is ICIS in nf)
|
|
20
|
+
nf_icis(i); generic combinations of generators; get ICIS in nf
|
|
21
|
+
slocus(i); ideal of singular locus of ideal i
|
|
22
|
+
qhspectrum(f,w); spectrum numbers of w-homogeneous polynomial f
|
|
23
|
+
Tjurina(i); SB of Tjurina module of ideal i (assume i is ICIS)
|
|
24
|
+
tjurina(i); Tjurina number of ideal i (assume i is ICIS)
|
|
25
|
+
T_1(i); T^1-module of ideal i
|
|
26
|
+
T_2((i); T^2-module of ideal i
|
|
27
|
+
T_12(i); T^1- and T^2-module of ideal i
|
|
28
|
+
tangentcone(id); compute tangent cone of id
|
|
29
|
+
|
|
30
|
+
";
|
|
31
|
+
|
|
32
|
+
LIB "inout.lib";
|
|
33
|
+
LIB "random.lib";
|
|
34
|
+
LIB "primdec.lib";
|
|
35
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
36
|
+
|
|
37
|
+
proc deform (ideal id)
|
|
38
|
+
"USAGE: deform(id); id=ideal or poly
|
|
39
|
+
RETURN: matrix, columns are kbase of infinitesimal deformations
|
|
40
|
+
EXAMPLE: example deform; shows an example
|
|
41
|
+
"
|
|
42
|
+
{
|
|
43
|
+
list L=T_1(id,"");
|
|
44
|
+
def K=L[1]; attrib(K,"isSB",1);
|
|
45
|
+
return(matrix(L[2])*matrix(kbase(K)));
|
|
46
|
+
}
|
|
47
|
+
example
|
|
48
|
+
{ "EXAMPLE:"; echo = 2;
|
|
49
|
+
ring r = 32003,(x,y,z),ds;
|
|
50
|
+
ideal i = xy,xz,yz;
|
|
51
|
+
matrix T = deform(i);
|
|
52
|
+
print(T);
|
|
53
|
+
print(deform(x3+y5+z2));
|
|
54
|
+
}
|
|
55
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
56
|
+
|
|
57
|
+
proc dim_slocus (ideal i)
|
|
58
|
+
"USAGE: dim_slocus(i); i ideal or poly
|
|
59
|
+
RETURN: dimension of singular locus of i
|
|
60
|
+
EXAMPLE: example dim_slocus; shows an example
|
|
61
|
+
"
|
|
62
|
+
{
|
|
63
|
+
return(dim(std(slocus(i))));
|
|
64
|
+
}
|
|
65
|
+
example
|
|
66
|
+
{ "EXAMPLE:"; echo = 2;
|
|
67
|
+
ring r = 32003,(x,y,z),ds;
|
|
68
|
+
ideal i = x5+y6+z6,x2+2y2+3z2;
|
|
69
|
+
dim_slocus(i);
|
|
70
|
+
}
|
|
71
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
72
|
+
|
|
73
|
+
proc is_active (poly f,def id)
|
|
74
|
+
"USAGE: is_active(f,id); f poly, id ideal or module
|
|
75
|
+
RETURN: 1 if f is an active element modulo id (i.e. dim(id)=dim(id+f*R^n)+1,
|
|
76
|
+
if id is a submodule of R^n) resp. 0 if f is not active.
|
|
77
|
+
The basering may be a quotient ring
|
|
78
|
+
NOTE: regular parameters are active but not vice versa (id may have embedded
|
|
79
|
+
components). proc is_reg tests whether f is a regular parameter
|
|
80
|
+
EXAMPLE: example is_active; shows an example
|
|
81
|
+
"
|
|
82
|
+
{
|
|
83
|
+
if( size(id)==0 ) { return(1); }
|
|
84
|
+
if( typeof(id)=="ideal" ) { ideal m=f; }
|
|
85
|
+
if( typeof(id)=="module" ) { module m=f*freemodule(nrows(id)); }
|
|
86
|
+
return(dim(std(id))-dim(std(id+m)));
|
|
87
|
+
}
|
|
88
|
+
example
|
|
89
|
+
{ "EXAMPLE:"; echo = 2;
|
|
90
|
+
ring r =32003,(x,y,z),ds;
|
|
91
|
+
ideal i = yx3+y,yz3+y3z;
|
|
92
|
+
poly f = x;
|
|
93
|
+
is_active(f,i);
|
|
94
|
+
qring q = std(x4y5);
|
|
95
|
+
poly f = x;
|
|
96
|
+
module m = [yx3+x,yx3+y3x];
|
|
97
|
+
is_active(f,m);
|
|
98
|
+
}
|
|
99
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
100
|
+
|
|
101
|
+
proc is_ci (ideal i)
|
|
102
|
+
"USAGE: is_ci(i); i ideal
|
|
103
|
+
RETURN: intvec = sequence of dimensions of ideals (j[1],...,j[k]), for
|
|
104
|
+
k=1,...,size(j), where j is minimal base of i. i is a complete
|
|
105
|
+
intersection if last number equals nvars-size(i)
|
|
106
|
+
NOTE: dim(0-ideal) = -1. You may first apply simplify(i,10); in order to
|
|
107
|
+
delete zeroes and multiples from set of generators
|
|
108
|
+
printlevel >=0: display comments (default)
|
|
109
|
+
EXAMPLE: example is_ci; shows an example
|
|
110
|
+
"
|
|
111
|
+
{
|
|
112
|
+
int n; intvec dimvec; ideal id;
|
|
113
|
+
i=minbase(i);
|
|
114
|
+
int s = ncols(i);
|
|
115
|
+
int p = printlevel-voice+3; // p=printlevel+1 (default: p=1)
|
|
116
|
+
//--------------------------- compute dimensions ------------------------------
|
|
117
|
+
for( n=1; n<=s; n=n+1 )
|
|
118
|
+
{
|
|
119
|
+
id = i[1..n];
|
|
120
|
+
dimvec[n] = dim(std(id));
|
|
121
|
+
}
|
|
122
|
+
n = dimvec[s];
|
|
123
|
+
//--------------------------- output ------------------------------------------
|
|
124
|
+
if( n+s != nvars(basering) )
|
|
125
|
+
{ dbprint(p,"// no complete intersection"); }
|
|
126
|
+
if( n+s == nvars(basering) )
|
|
127
|
+
{ dbprint(p,"// complete intersection of dim "+string(n)); }
|
|
128
|
+
dbprint(p,"// dim-sequence:");
|
|
129
|
+
return(dimvec);
|
|
130
|
+
}
|
|
131
|
+
example
|
|
132
|
+
{ "EXAMPLE:"; echo = 2;
|
|
133
|
+
int p = printlevel;
|
|
134
|
+
printlevel = 1; // display comments
|
|
135
|
+
ring r = 32003,(x,y,z),ds;
|
|
136
|
+
ideal i = x4+y5+z6,xyz,yx2+xz2+zy7;
|
|
137
|
+
is_ci(i);
|
|
138
|
+
i = xy,yz;
|
|
139
|
+
is_ci(i);
|
|
140
|
+
printlevel = p;
|
|
141
|
+
}
|
|
142
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
143
|
+
|
|
144
|
+
proc is_is (ideal i)
|
|
145
|
+
"USAGE: is_is(id); id ideal or poly
|
|
146
|
+
RETURN: intvec = sequence of dimensions of singular loci of ideals
|
|
147
|
+
generated by id[1]..id[i], k = 1..size(id); @*
|
|
148
|
+
dim(0-ideal) = -1;
|
|
149
|
+
id defines an isolated singularity if last number is 0
|
|
150
|
+
NOTE: printlevel >=0: display comments (default)
|
|
151
|
+
EXAMPLE: example is_is; shows an example
|
|
152
|
+
"
|
|
153
|
+
{
|
|
154
|
+
int l; intvec dims; ideal j;
|
|
155
|
+
int p = printlevel-voice+3; // p=printlevel+1 (default: p=1)
|
|
156
|
+
//--------------------------- compute dimensions ------------------------------
|
|
157
|
+
for( l=1; l<=ncols(i); l=l+1 )
|
|
158
|
+
{
|
|
159
|
+
j = i[1..l];
|
|
160
|
+
dims[l] = dim(std(slocus(j)));
|
|
161
|
+
}
|
|
162
|
+
dbprint(p,"// dim of singular locus = "+string(dims[size(dims)]),
|
|
163
|
+
"// isolated singularity if last number is 0 in dim-sequence:");
|
|
164
|
+
return(dims);
|
|
165
|
+
}
|
|
166
|
+
example
|
|
167
|
+
{ "EXAMPLE:"; echo = 2;
|
|
168
|
+
int p = printlevel;
|
|
169
|
+
printlevel = 1;
|
|
170
|
+
ring r = 32003,(x,y,z),ds;
|
|
171
|
+
ideal i = x2y,x4+y5+z6,yx2+xz2+zy7;
|
|
172
|
+
is_is(i);
|
|
173
|
+
poly f = xy+yz;
|
|
174
|
+
is_is(f);
|
|
175
|
+
printlevel = p;
|
|
176
|
+
}
|
|
177
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
178
|
+
|
|
179
|
+
proc is_reg (poly f,def id)
|
|
180
|
+
"USAGE: is_reg(f,id); f poly, id ideal or module
|
|
181
|
+
RETURN: 1 if multiplication with f is injective modulo id, 0 otherwise
|
|
182
|
+
NOTE: Let R be the basering and id a submodule of R^n. The procedure checks
|
|
183
|
+
injectivity of multiplication with f on R^n/id. The basering may be a
|
|
184
|
+
quotient ring.
|
|
185
|
+
EXAMPLE: example is_reg; shows an example
|
|
186
|
+
"
|
|
187
|
+
{
|
|
188
|
+
if( f==0 ) { return(0); }
|
|
189
|
+
int d,ii;
|
|
190
|
+
def q = quotient(id,ideal(f));
|
|
191
|
+
id=std(id);
|
|
192
|
+
d=size(q);
|
|
193
|
+
for( ii=1; ii<=d; ii=ii+1 )
|
|
194
|
+
{
|
|
195
|
+
if( reduce(q[ii],id)!=0 )
|
|
196
|
+
{ return(0); }
|
|
197
|
+
}
|
|
198
|
+
return(1);
|
|
199
|
+
}
|
|
200
|
+
example
|
|
201
|
+
{ "EXAMPLE:"; echo = 2;
|
|
202
|
+
ring r = 32003,(x,y),ds;
|
|
203
|
+
ideal i = x8,y8;
|
|
204
|
+
ideal j = (x+y)^4;
|
|
205
|
+
i = intersect(i,j);
|
|
206
|
+
poly f = xy;
|
|
207
|
+
is_reg(f,i);
|
|
208
|
+
}
|
|
209
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
210
|
+
|
|
211
|
+
proc is_regs (ideal i, list #)
|
|
212
|
+
"USAGE: is_regs(i[,id]); i poly, id ideal or module (default: id=0)
|
|
213
|
+
RETURN: 1 if generators of i are a regular sequence modulo id, 0 otherwise
|
|
214
|
+
NOTE: Let R be the basering and id a submodule of R^n. The procedure checks
|
|
215
|
+
injectivity of multiplication with i[k] on R^n/id+i[1..k-1].
|
|
216
|
+
The basering may be a quotient ring.
|
|
217
|
+
printlevel >=0: display comments (default)
|
|
218
|
+
printlevel >=1: display comments during computation
|
|
219
|
+
EXAMPLE: example is_regs; shows an example
|
|
220
|
+
"
|
|
221
|
+
{
|
|
222
|
+
int d,ii,r;
|
|
223
|
+
int p = printlevel-voice+3; // p=printlevel+1 (default: p=1)
|
|
224
|
+
if( size(#)==0 ) { ideal id; }
|
|
225
|
+
else { def id=#[1]; }
|
|
226
|
+
if( size(i)==0 ) { return(0); }
|
|
227
|
+
d=size(i);
|
|
228
|
+
if( typeof(id)=="ideal" ) { ideal m=1; }
|
|
229
|
+
if( typeof(id)=="module" ) { module m=freemodule(nrows(id)); }
|
|
230
|
+
for( ii=1; ii<=d; ii=ii+1 )
|
|
231
|
+
{
|
|
232
|
+
if( p>=2 )
|
|
233
|
+
{ "// checking whether element",ii,"is regular mod 1 ..",ii-1; }
|
|
234
|
+
if( is_reg(i[ii],id)==0 )
|
|
235
|
+
{
|
|
236
|
+
dbprint(p,"// elements 1.."+string(ii-1)+" are regular, " +
|
|
237
|
+
string(ii)+" is not regular mod 1.."+string(ii-1));
|
|
238
|
+
return(0);
|
|
239
|
+
}
|
|
240
|
+
id=id+i[ii]*m;
|
|
241
|
+
}
|
|
242
|
+
if( p>=1 ) { "// elements are a regular sequence of length",d; }
|
|
243
|
+
return(1);
|
|
244
|
+
}
|
|
245
|
+
example
|
|
246
|
+
{ "EXAMPLE:"; echo = 2;
|
|
247
|
+
int p = printlevel;
|
|
248
|
+
printlevel = 1;
|
|
249
|
+
ring r1 = 32003,(x,y,z),ds;
|
|
250
|
+
ideal i = x8,y8,(x+y)^4;
|
|
251
|
+
is_regs(i);
|
|
252
|
+
module m = [x,0,y];
|
|
253
|
+
i = x8,(x+z)^4;;
|
|
254
|
+
is_regs(i,m);
|
|
255
|
+
printlevel = p;
|
|
256
|
+
}
|
|
257
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
258
|
+
|
|
259
|
+
proc milnor (ideal i)
|
|
260
|
+
"USAGE: milnor(i); i ideal or poly
|
|
261
|
+
RETURN: Milnor number of i, if i is ICIS (isolated complete intersection
|
|
262
|
+
singularity) in generic form, resp. -1 if not
|
|
263
|
+
NOTE: use proc nf_icis to put generators in generic form
|
|
264
|
+
printlevel >=1: display comments
|
|
265
|
+
EXAMPLE: example milnor; shows an example
|
|
266
|
+
"
|
|
267
|
+
{
|
|
268
|
+
i = simplify(i,10); //delete zeroes and multiples from set of generators
|
|
269
|
+
int n = size(i);
|
|
270
|
+
int l,q,m_nr; ideal t; intvec disc;
|
|
271
|
+
int p = printlevel-voice+2; // p=printlevel+1 (default: p=0)
|
|
272
|
+
//---------------------------- hypersurface case ------------------------------
|
|
273
|
+
if( n==1 or n==0 )
|
|
274
|
+
{
|
|
275
|
+
i = std(jacob(i[1]));
|
|
276
|
+
m_nr = vdim(i);
|
|
277
|
+
if( m_nr<0 and p>=1 ) { "// Milnor number is infinite"; }
|
|
278
|
+
return(m_nr);
|
|
279
|
+
}
|
|
280
|
+
//------------ isolated complete intersection singularity (ICIS) --------------
|
|
281
|
+
for( l=n; l>0; l=l-1)
|
|
282
|
+
{ t = minor(jacob(i),l);
|
|
283
|
+
i[l] = 0;
|
|
284
|
+
q = vdim(std(i+t));
|
|
285
|
+
disc[l]= q;
|
|
286
|
+
if( q ==-1 )
|
|
287
|
+
{ if( p>=1 )
|
|
288
|
+
{ "// not in generic form or no ICIS; use proc nf_icis to put";
|
|
289
|
+
"// generators in generic form and then try milnor again!"; }
|
|
290
|
+
return(q);
|
|
291
|
+
}
|
|
292
|
+
m_nr = q-m_nr;
|
|
293
|
+
}
|
|
294
|
+
//---------------------------- change sign ------------------------------------
|
|
295
|
+
if (m_nr < 0) { m_nr=-m_nr; }
|
|
296
|
+
if( p>=1 ) { "//sequence of discriminant numbers:",disc; }
|
|
297
|
+
return(m_nr);
|
|
298
|
+
}
|
|
299
|
+
example
|
|
300
|
+
{ "EXAMPLE:"; echo = 2;
|
|
301
|
+
int p = printlevel;
|
|
302
|
+
printlevel = 2;
|
|
303
|
+
ring r = 32003,(x,y,z),ds;
|
|
304
|
+
ideal j = x5+y6+z6,x2+2y2+3z2,xyz+yx;
|
|
305
|
+
milnor(j);
|
|
306
|
+
poly f = x7+y7+(x-y)^2*x2y2+z2;
|
|
307
|
+
milnor(f);
|
|
308
|
+
printlevel = p;
|
|
309
|
+
}
|
|
310
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
311
|
+
|
|
312
|
+
proc nf_icis (ideal i)
|
|
313
|
+
"USAGE: nf_icis(i); i ideal
|
|
314
|
+
RETURN: ideal = generic linear combination of generators of i if i is an ICIS
|
|
315
|
+
(isolated complete intersection singularity), return i if not
|
|
316
|
+
NOTE: this proc is useful in connection with proc milnor
|
|
317
|
+
printlevel >=0: display comments (default)
|
|
318
|
+
EXAMPLE: example nf_icis; shows an example
|
|
319
|
+
"
|
|
320
|
+
{
|
|
321
|
+
i = simplify(i,10); //delete zeroes and multiples from set of generators
|
|
322
|
+
int p,b = 100,0;
|
|
323
|
+
int n = size(i);
|
|
324
|
+
matrix mat=freemodule(n);
|
|
325
|
+
int P = printlevel-voice+3; // P=printlevel+1 (default: P=1)
|
|
326
|
+
//---------------------------- test: complete intersection? -------------------
|
|
327
|
+
intvec sl = is_ci(i);
|
|
328
|
+
if( n+sl[n] != nvars(basering) )
|
|
329
|
+
{
|
|
330
|
+
dbprint(P,"// no complete intersection");
|
|
331
|
+
return(i);
|
|
332
|
+
}
|
|
333
|
+
//--------------- test: isolated singularity in generic form? -----------------
|
|
334
|
+
sl = is_is(i);
|
|
335
|
+
if ( sl[n] != 0 )
|
|
336
|
+
{
|
|
337
|
+
dbprint(P,"// no isolated singularity");
|
|
338
|
+
return(i);
|
|
339
|
+
}
|
|
340
|
+
//------------ produce generic linear combinations of generators --------------
|
|
341
|
+
int prob;
|
|
342
|
+
while ( sum(sl) > 0 )
|
|
343
|
+
{ prob=prob+1;
|
|
344
|
+
p=p-25; b=b+10;
|
|
345
|
+
i = genericid(i,p,b); // proc genericid from random.lib
|
|
346
|
+
sl = is_is(i);
|
|
347
|
+
}
|
|
348
|
+
dbprint(P,"// ICIS in generic form after "+string(prob)+" genericity loop(s)");
|
|
349
|
+
return(i);
|
|
350
|
+
}
|
|
351
|
+
example
|
|
352
|
+
{ "EXAMPLE:"; echo = 2;
|
|
353
|
+
int p = printlevel;
|
|
354
|
+
printlevel = 1;
|
|
355
|
+
ring r = 32003,(x,y,z),ds;
|
|
356
|
+
ideal i = x3+y4,z4+yx;
|
|
357
|
+
nf_icis(i);
|
|
358
|
+
ideal j = x3+y4,xy,yz;
|
|
359
|
+
nf_icis(j);
|
|
360
|
+
printlevel = p;
|
|
361
|
+
}
|
|
362
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
363
|
+
|
|
364
|
+
proc slocus(ideal i)
|
|
365
|
+
"USAGE: slocus(i); i ideal
|
|
366
|
+
RETURN: ideal of singular locus of i. Quotient rings and rings with integer coefficients are currently not supported.
|
|
367
|
+
EXAMPLE: example slocus; shows an example
|
|
368
|
+
"
|
|
369
|
+
{
|
|
370
|
+
// quotient rings currently not supported
|
|
371
|
+
ASSUME( 0, 0==isQuotientRing(basering) );
|
|
372
|
+
// integer coefficient rings currently not supported
|
|
373
|
+
ASSUME( 0, hasFieldCoefficient(basering) );
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
def R=basering;
|
|
377
|
+
int j,k;
|
|
378
|
+
ideal res;
|
|
379
|
+
|
|
380
|
+
if(ord_test(basering)!=1)
|
|
381
|
+
{
|
|
382
|
+
string va=varstr(basering);
|
|
383
|
+
if( size( parstr(basering))>0){va=va+","+parstr(basering);}
|
|
384
|
+
execute ("ring S = ("+charstr(basering)+"),("+va+"),dp;");
|
|
385
|
+
ideal i=imap(R,i);
|
|
386
|
+
list l=equidim(i);
|
|
387
|
+
setring R;
|
|
388
|
+
list l=imap(S,l);
|
|
389
|
+
}
|
|
390
|
+
else
|
|
391
|
+
{
|
|
392
|
+
list l=equidim(i);
|
|
393
|
+
}
|
|
394
|
+
int n=size(l);
|
|
395
|
+
if (n==1){return(slocusEqi(i));}
|
|
396
|
+
res=slocusEqi(l[1]);
|
|
397
|
+
for(j=2;j<=n;j++){res=intersect(res,slocusEqi(l[j]));}
|
|
398
|
+
for(j=1;j<n;j++)
|
|
399
|
+
{
|
|
400
|
+
for(k=j+1;k<=n;k++){res=intersect(res,l[j]+l[k]);}
|
|
401
|
+
}
|
|
402
|
+
return(res);
|
|
403
|
+
}
|
|
404
|
+
example
|
|
405
|
+
{ "EXAMPLE:"; echo = 2;
|
|
406
|
+
ring r = 0,(u,v,w,x,y,z),dp;
|
|
407
|
+
ideal i = wx,wy,wz,vx,vy,vz,ux,uy,uz,y3-x2;;
|
|
408
|
+
slocus(i);
|
|
409
|
+
}
|
|
410
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
411
|
+
|
|
412
|
+
static proc slocusEqi (ideal i)
|
|
413
|
+
"USAGE: slocus(i); i ideal
|
|
414
|
+
RETURN: ideal of singular locus of i if i is pure dimensional
|
|
415
|
+
NOTE: this proc returns i and c-minors of jacobian ideal of i where c is the
|
|
416
|
+
codimension of i. Hence, if i is not pure dimensional, slocus may
|
|
417
|
+
return an ideal such that its 0-locus is strictly contained in the
|
|
418
|
+
singular locus of i
|
|
419
|
+
EXAMPLE: example slocus; shows an example
|
|
420
|
+
"
|
|
421
|
+
{
|
|
422
|
+
ideal ist=std(i);
|
|
423
|
+
if ( size(ist)==0 ) // we have a zero ideal
|
|
424
|
+
{
|
|
425
|
+
// the zero locus of the zero ideal is nonsingular
|
|
426
|
+
return( ideal(1) ) ;
|
|
427
|
+
}
|
|
428
|
+
if( deg( ist[1] ) == 0 ) // the ideal has a constant generator
|
|
429
|
+
{
|
|
430
|
+
return(ist);
|
|
431
|
+
}
|
|
432
|
+
int cod = nvars(basering) - dim(ist);
|
|
433
|
+
i = i + minor( jacob(i), cod );
|
|
434
|
+
return(i);
|
|
435
|
+
}
|
|
436
|
+
example
|
|
437
|
+
{ "EXAMPLE:"; echo = 2;
|
|
438
|
+
ring r = 0,(x,y,z),ds;
|
|
439
|
+
ideal i = x5+y6+z6,x2+2y2+3z2;
|
|
440
|
+
slocus(i);
|
|
441
|
+
}
|
|
442
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
443
|
+
|
|
444
|
+
proc qhspectrum (poly f, intvec w)
|
|
445
|
+
"USAGE: qhspectrum(f,w); f=poly, w=intvec
|
|
446
|
+
ASSUME: f is a weighted homogeneous isolated singularity w.r.t. the weights
|
|
447
|
+
given by w; w must consist of as many positive integers as there
|
|
448
|
+
are variables of the basering
|
|
449
|
+
COMPUTE: the spectral numbers of the w-homogeneous polynomial f, computed in a
|
|
450
|
+
ring of characteristic 0
|
|
451
|
+
RETURN: intvec d,s1,...,su where:
|
|
452
|
+
d = w-degree(f) and si/d = i-th spectral-number(f)
|
|
453
|
+
No return value if basering has parameters or if f is no isolated
|
|
454
|
+
singularity, displays a warning in this case.
|
|
455
|
+
EXAMPLE: example qhspectrum; shows an example
|
|
456
|
+
"
|
|
457
|
+
{
|
|
458
|
+
int i,d,W;
|
|
459
|
+
intvec sp;
|
|
460
|
+
def r = basering;
|
|
461
|
+
if( find(charstr(r),",")!=0 )
|
|
462
|
+
{
|
|
463
|
+
"// coefficient field must not have parameters!";
|
|
464
|
+
return();
|
|
465
|
+
}
|
|
466
|
+
ring s = 0,x(1..nvars(r)),ws(w);
|
|
467
|
+
map phi = r,maxideal(1);
|
|
468
|
+
poly f = phi(f);
|
|
469
|
+
d = ord(f);
|
|
470
|
+
W = sum(w)-d;
|
|
471
|
+
ideal k = std(jacob(f));
|
|
472
|
+
if( vdim(k) == -1 )
|
|
473
|
+
{
|
|
474
|
+
"// f is no isolated singularity!";
|
|
475
|
+
return();
|
|
476
|
+
}
|
|
477
|
+
k = kbase(k);
|
|
478
|
+
for (i=1; i<=size(k); i++)
|
|
479
|
+
{
|
|
480
|
+
sp[i]=W+ord(k[i]);
|
|
481
|
+
}
|
|
482
|
+
list L = sort(sp);
|
|
483
|
+
sp = d,L[1];
|
|
484
|
+
return(sp);
|
|
485
|
+
}
|
|
486
|
+
example
|
|
487
|
+
{ "EXAMPLE:"; echo = 2;
|
|
488
|
+
ring r;
|
|
489
|
+
poly f=x3+y5+z2;
|
|
490
|
+
intvec w=10,6,15;
|
|
491
|
+
qhspectrum(f,w);
|
|
492
|
+
// the spectrum numbers are:
|
|
493
|
+
// 1/30,7/30,11/30,13/30,17/30,19/30,23/30,29/30
|
|
494
|
+
}
|
|
495
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
496
|
+
|
|
497
|
+
proc Tjurina (def id, list #)
|
|
498
|
+
"USAGE: Tjurina(id[,<any>]); id=ideal or poly
|
|
499
|
+
ASSUME: id=ICIS (isolated complete intersection singularity)
|
|
500
|
+
RETURN: standard basis of Tjurina-module of id,
|
|
501
|
+
of type module if id=ideal, resp. of type ideal if id=poly.
|
|
502
|
+
If a second argument is present (of any type) return a list: @*
|
|
503
|
+
[1] = Tjurina number,
|
|
504
|
+
[2] = k-basis of miniversal deformation,
|
|
505
|
+
[3] = SB of Tjurina module,
|
|
506
|
+
[4] = Tjurina module
|
|
507
|
+
DISPLAY: Tjurina number if printlevel >= 0 (default)
|
|
508
|
+
NOTE: Tjurina number = -1 implies that id is not an ICIS
|
|
509
|
+
EXAMPLE: example Tjurina; shows examples
|
|
510
|
+
"
|
|
511
|
+
{
|
|
512
|
+
//---------------------------- initialisation ---------------------------------
|
|
513
|
+
def i = simplify(id,10);
|
|
514
|
+
int tau,n = 0,size(i);
|
|
515
|
+
if( size(ideal(i))==1 ) { def m=i; } // hypersurface case
|
|
516
|
+
else { def m=i*freemodule(n); } // complete intersection case
|
|
517
|
+
//--------------- compute Tjurina module, Tjurina number etc ------------------
|
|
518
|
+
def t1 = jacob(i)+m; // Tjurina module/ideal
|
|
519
|
+
def st1 = std(t1); // SB of Tjurina module/ideal
|
|
520
|
+
tau = vdim(st1); // Tjurina number
|
|
521
|
+
dbprint(printlevel-voice+3,"// Tjurina number = "+string(tau));
|
|
522
|
+
if( size(#)>0 )
|
|
523
|
+
{
|
|
524
|
+
def kB = kbase(st1); // basis of miniversal deformation
|
|
525
|
+
return(tau,kB,st1,t1);
|
|
526
|
+
}
|
|
527
|
+
return(st1);
|
|
528
|
+
}
|
|
529
|
+
example
|
|
530
|
+
{ "EXAMPLE:"; echo = 2;
|
|
531
|
+
int p = printlevel;
|
|
532
|
+
printlevel = 1;
|
|
533
|
+
ring r = 0,(x,y,z),ds;
|
|
534
|
+
poly f = x5+y6+z7+xyz; // singularity T[5,6,7]
|
|
535
|
+
list T = Tjurina(f,"");
|
|
536
|
+
show(T[1]); // Tjurina number, should be 16
|
|
537
|
+
show(T[2]); // basis of miniversal deformation
|
|
538
|
+
show(T[3]); // SB of Tjurina ideal
|
|
539
|
+
show(T[4]); ""; // Tjurina ideal
|
|
540
|
+
ideal j = x2+y2+z2,x2+2y2+3z2;
|
|
541
|
+
show(kbase(Tjurina(j))); // basis of miniversal deformation
|
|
542
|
+
hilb(Tjurina(j)); // Hilbert series of Tjurina module
|
|
543
|
+
printlevel = p;
|
|
544
|
+
}
|
|
545
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
546
|
+
|
|
547
|
+
proc tjurina (ideal i)
|
|
548
|
+
"USAGE: tjurina(id); id=ideal or poly
|
|
549
|
+
ASSUME: id=ICIS (isolated complete intersection singularity)
|
|
550
|
+
RETURN: int = Tjurina number of id
|
|
551
|
+
NOTE: Tjurina number = -1 implies that id is not an ICIS
|
|
552
|
+
EXAMPLE: example tjurina; shows an example
|
|
553
|
+
"
|
|
554
|
+
{
|
|
555
|
+
return(vdim(Tjurina(i)));
|
|
556
|
+
}
|
|
557
|
+
example
|
|
558
|
+
{ "EXAMPLE:"; echo = 2;
|
|
559
|
+
ring r=32003,(x,y,z),(c,ds);
|
|
560
|
+
ideal j=x2+y2+z2,x2+2y2+3z2;
|
|
561
|
+
tjurina(j);
|
|
562
|
+
}
|
|
563
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
564
|
+
|
|
565
|
+
proc T_1 (ideal id, list #)
|
|
566
|
+
"USAGE: T_1(id[,<any>]); id = ideal or poly
|
|
567
|
+
RETURN: T_1(id): of type module/ideal if id is of type ideal/poly.
|
|
568
|
+
We call T_1(id) the T_1-module of id. It is a std basis of the
|
|
569
|
+
presentation of 1st order deformations of P/id, if P is the basering.
|
|
570
|
+
If a second argument is present (of any type) return a list of
|
|
571
|
+
3 modules:
|
|
572
|
+
[1]= T_1(id)
|
|
573
|
+
[2]= generators of normal bundle of id, lifted to P
|
|
574
|
+
[3]= module of relations of [2], lifted to P
|
|
575
|
+
(note: transpose[3]*[2]=0 mod id)
|
|
576
|
+
The list contains all non-easy objects which must be computed
|
|
577
|
+
to get T_1(id).
|
|
578
|
+
DISPLAY: k-dimension of T_1(id) if printlevel >= 0 (default)
|
|
579
|
+
NOTE: T_1(id) itself is usually of minor importance. Nevertheless, from it
|
|
580
|
+
all relevant information can be obtained. The most important are
|
|
581
|
+
probably vdim(T_1(id)); (which computes the Tjurina number),
|
|
582
|
+
hilb(T_1(id)); and kbase(T_1(id)).
|
|
583
|
+
If T_1 is called with two arguments, then matrix([2])*(kbase([1]))
|
|
584
|
+
represents a basis of 1st order semiuniversal deformation of id
|
|
585
|
+
(use proc 'deform', to get this in a direct way).
|
|
586
|
+
For a complete intersection the proc Tjurina is faster.
|
|
587
|
+
EXAMPLE: example T_1; shows an example
|
|
588
|
+
"
|
|
589
|
+
{
|
|
590
|
+
def RR=basering;
|
|
591
|
+
list RRL=ring_list(RR);
|
|
592
|
+
if(RRL[4]!=0)
|
|
593
|
+
{
|
|
594
|
+
int aa=size(#);
|
|
595
|
+
ideal QU=RRL[4];
|
|
596
|
+
RRL[4]=ideal(0);
|
|
597
|
+
def RS=ring(RRL);
|
|
598
|
+
setring RS;
|
|
599
|
+
ideal id=imap(RR,id);
|
|
600
|
+
ideal QU=imap(RR,QU);
|
|
601
|
+
if(aa)
|
|
602
|
+
{
|
|
603
|
+
list RES=T_1(id+QU,1);
|
|
604
|
+
}
|
|
605
|
+
else
|
|
606
|
+
{
|
|
607
|
+
module RES=T_1(id+QU);
|
|
608
|
+
}
|
|
609
|
+
setring RR;
|
|
610
|
+
def RES=imap(RS,RES);
|
|
611
|
+
return(RES);
|
|
612
|
+
}
|
|
613
|
+
ideal J=simplify(id,10);
|
|
614
|
+
//--------------------------- hypersurface case -------------------------------
|
|
615
|
+
if( size(J)<2 )
|
|
616
|
+
{
|
|
617
|
+
ideal t1 = std(J+jacob(J[1]));
|
|
618
|
+
module nb = [1]; module pnb;
|
|
619
|
+
dbprint(printlevel-voice+3,"// dim T_1 = "+string(vdim(t1)));
|
|
620
|
+
if( size(#)>0 )
|
|
621
|
+
{
|
|
622
|
+
module st1 = t1*gen(1);
|
|
623
|
+
attrib(st1,"isSB",1);
|
|
624
|
+
return(st1,nb,pnb);
|
|
625
|
+
}
|
|
626
|
+
return(t1);
|
|
627
|
+
}
|
|
628
|
+
//--------------------------- presentation of J -------------------------------
|
|
629
|
+
int rk;
|
|
630
|
+
def P = basering;
|
|
631
|
+
module jac, t1;
|
|
632
|
+
jac = jacob(J); // jacobian matrix of J converted to module
|
|
633
|
+
list A=nres(J,2); // compute presentation of J
|
|
634
|
+
def A(1..2)=A[1..2]; kill A; // A(2) = 1st syzygy module of J
|
|
635
|
+
//---------- go to quotient ring mod J and compute normal bundle --------------
|
|
636
|
+
qring R = std(J);
|
|
637
|
+
module jac = fetch(P,jac);
|
|
638
|
+
module t1 = transpose(fetch(P,A(2)));
|
|
639
|
+
list B=nres(t1,2); // resolve t1, B(2)=(J/J^2)*=normal_bdl
|
|
640
|
+
def B(1..2)=B[1..2]; kill B;
|
|
641
|
+
t1 = modulo(B(2),jac); // pres. of normal_bdl/trivial_deformations
|
|
642
|
+
rk=nrows(t1);
|
|
643
|
+
//-------------------------- pull back to basering ----------------------------
|
|
644
|
+
setring P;
|
|
645
|
+
t1 = fetch(R,t1)+J*freemodule(rk); // T_1-module, presentation of T_1
|
|
646
|
+
t1 = std(t1);
|
|
647
|
+
dbprint(printlevel-voice+3,"// dim T_1 = "+string(vdim(t1)));
|
|
648
|
+
if( size(#)>0 )
|
|
649
|
+
{
|
|
650
|
+
module B2 = fetch(R,B(2)); // presentation of normal bundle
|
|
651
|
+
list L = t1,B2,A(2);
|
|
652
|
+
attrib(L[1],"isSB",1);
|
|
653
|
+
return(L);
|
|
654
|
+
}
|
|
655
|
+
return(t1);
|
|
656
|
+
}
|
|
657
|
+
example
|
|
658
|
+
{ "EXAMPLE:"; echo = 2;
|
|
659
|
+
int p = printlevel;
|
|
660
|
+
printlevel = 1;
|
|
661
|
+
ring r = 32003,(x,y,z),(c,ds);
|
|
662
|
+
ideal i = xy,xz,yz;
|
|
663
|
+
module T = T_1(i);
|
|
664
|
+
vdim(T); // Tjurina number = dim_K(T_1), should be 3
|
|
665
|
+
list L=T_1(i,"");
|
|
666
|
+
module kB = kbase(L[1]);
|
|
667
|
+
print(matrix(L[2])*matrix(kB)); // basis of 1st order miniversal deformation
|
|
668
|
+
show(L[2]); // presentation of normal bundle
|
|
669
|
+
print(L[3]); // relations of i
|
|
670
|
+
print(transpose(matrix(L[3]))*matrix(L[2])); // should be 0 (mod i)
|
|
671
|
+
printlevel = p;
|
|
672
|
+
}
|
|
673
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
674
|
+
|
|
675
|
+
proc T_2 (ideal id, list #)
|
|
676
|
+
"USAGE: T_2(id[,<any>]); id = ideal
|
|
677
|
+
RETURN: T_2(id): T_2-module of id . This is a std basis of a presentation of
|
|
678
|
+
the module of obstructions of R=P/id, if P is the basering.
|
|
679
|
+
If a second argument is present (of any type) return a list of
|
|
680
|
+
4 modules and 1 ideal:
|
|
681
|
+
[1]= T_2(id)
|
|
682
|
+
[2]= standard basis of id (ideal)
|
|
683
|
+
[3]= module of relations of id (=1st syzygy module of id) @*
|
|
684
|
+
[4]= presentation of syz/kos
|
|
685
|
+
[5]= relations of Hom_P([3]/kos,R), lifted to P
|
|
686
|
+
The list contains all non-easy objects which must be computed
|
|
687
|
+
to get T_2(id).
|
|
688
|
+
DISPLAY: k-dimension of T_2(id) if printlevel >= 0 (default)
|
|
689
|
+
NOTE: The most important information is probably vdim(T_2(id)).
|
|
690
|
+
Use proc miniversal to get equations of the miniversal deformation.
|
|
691
|
+
EXAMPLE: example T_2; shows an example
|
|
692
|
+
"
|
|
693
|
+
{
|
|
694
|
+
def RR=basering;
|
|
695
|
+
list RRL=ring_list(RR);
|
|
696
|
+
if(RRL[4]!=0)
|
|
697
|
+
{
|
|
698
|
+
int aa=size(#);
|
|
699
|
+
ideal QU=RRL[4];
|
|
700
|
+
RRL[4]=ideal(0);
|
|
701
|
+
def RS=ring(RRL);
|
|
702
|
+
setring RS;
|
|
703
|
+
ideal id=imap(RR,id);
|
|
704
|
+
ideal QU=imap(RR,QU);
|
|
705
|
+
if(aa)
|
|
706
|
+
{
|
|
707
|
+
list RES=T_2(id+QU,1);
|
|
708
|
+
}
|
|
709
|
+
else
|
|
710
|
+
{
|
|
711
|
+
module RES=T_2(id+QU);
|
|
712
|
+
}
|
|
713
|
+
setring RR;
|
|
714
|
+
def RES=imap(RS,RES);
|
|
715
|
+
return(RES);
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
//--------------------------- initialisation ----------------------------------
|
|
719
|
+
def P = basering;
|
|
720
|
+
ideal J = id;
|
|
721
|
+
module kos,SK,B2,t2;
|
|
722
|
+
list L;
|
|
723
|
+
int n,rk;
|
|
724
|
+
//------------------- presentation of non-trivial syzygies --------------------
|
|
725
|
+
list A=nres(J,2); // resolve J, A(2)=syz
|
|
726
|
+
def A(1..2)=A[1..2]; kill A;
|
|
727
|
+
kos = koszul(2,J); // module of Koszul relations
|
|
728
|
+
SK = modulo(A(2),kos); // presentation of syz/kos
|
|
729
|
+
ideal J0 = std(J); // standard basis of J
|
|
730
|
+
//?*** sollte bei der Berechnung von res mit anfallen, zu aendern!!
|
|
731
|
+
//---------------------- fetch to quotient ring mod J -------------------------
|
|
732
|
+
qring R = J0; // make P/J the basering
|
|
733
|
+
module A2' = transpose(fetch(P,A(2))); // dual of syz
|
|
734
|
+
module t2 = transpose(fetch(P,SK)); // dual of syz/kos
|
|
735
|
+
list B=nres(t2,2); // resolve (syz/kos)*
|
|
736
|
+
def B(1..2)=B[1..2]; kill B;
|
|
737
|
+
t2 = modulo(B(2),A2'); // presentation of T_2
|
|
738
|
+
rk = nrows(t2);
|
|
739
|
+
//--------------------- fetch back to basering -------------------------------
|
|
740
|
+
setring P;
|
|
741
|
+
t2 = fetch(R,t2)+J*freemodule(rk);
|
|
742
|
+
t2 = std(t2);
|
|
743
|
+
dbprint(printlevel-voice+3,"// dim T_2 = "+string(vdim(t2)));
|
|
744
|
+
if( size(#)>0 )
|
|
745
|
+
{
|
|
746
|
+
B2 = fetch(R,B(2)); // generators of Hom_P(syz/kos,R)
|
|
747
|
+
L = t2,J0,A(2),SK,B2;
|
|
748
|
+
return(L);
|
|
749
|
+
}
|
|
750
|
+
return(t2);
|
|
751
|
+
}
|
|
752
|
+
example
|
|
753
|
+
{ "EXAMPLE:"; echo = 2;
|
|
754
|
+
int p = printlevel;
|
|
755
|
+
printlevel = 1;
|
|
756
|
+
ring r = 32003,(x,y),(c,dp);
|
|
757
|
+
ideal j = x6-y4,x6y6,x2y4-x5y2;
|
|
758
|
+
module T = T_2(j);
|
|
759
|
+
vdim(T);
|
|
760
|
+
hilb(T);"";
|
|
761
|
+
ring r1 = 0,(x,y,z),dp;
|
|
762
|
+
ideal id = xy,xz,yz;
|
|
763
|
+
list L = T_2(id,"");
|
|
764
|
+
vdim(L[1]); // vdim of T_2
|
|
765
|
+
print(L[3]); // syzygy module of id
|
|
766
|
+
printlevel = p;
|
|
767
|
+
}
|
|
768
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
769
|
+
|
|
770
|
+
proc T_12 (ideal i, list #)
|
|
771
|
+
"USAGE: T_12(i[,any]); i = ideal
|
|
772
|
+
RETURN: T_12(i): list of 2 modules: @*
|
|
773
|
+
* standard basis of T_1-module =T_1(i), 1st order deformations @*
|
|
774
|
+
* standard basis of T_2-module =T_2(i), obstructions of R=P/i @*
|
|
775
|
+
If a second argument is present (of any type) return a list of
|
|
776
|
+
9 modules, matrices, integers: @*
|
|
777
|
+
[1]= standard basis of T_1-module
|
|
778
|
+
[2]= standard basis of T_2-module
|
|
779
|
+
[3]= vdim of T_1
|
|
780
|
+
[4]= vdim of T_2
|
|
781
|
+
[5]= matrix, whose cols present infinitesimal deformations @*
|
|
782
|
+
[6]= matrix, whose cols are generators of relations of i(=syz(i)) @*
|
|
783
|
+
[7]= matrix, presenting Hom_P(syz/kos,R), lifted to P @*
|
|
784
|
+
[8]= presentation of T_1-module, no std basis
|
|
785
|
+
[9]= presentation of T_2-module, no std basis
|
|
786
|
+
DISPLAY: k-dimension of T_1 and T_2 if printlevel >= 0 (default)
|
|
787
|
+
NOTE: Use proc miniversal from deform.lib to get miniversal deformation of i,
|
|
788
|
+
the list contains all objects used by proc miniversal.
|
|
789
|
+
EXAMPLE: example T_12; shows an example
|
|
790
|
+
"
|
|
791
|
+
{
|
|
792
|
+
def RR=basering;
|
|
793
|
+
list RRL=ring_list(RR);
|
|
794
|
+
if(RRL[4]!=0)
|
|
795
|
+
{
|
|
796
|
+
int aa=size(#);
|
|
797
|
+
ideal QU=RRL[4];
|
|
798
|
+
RRL[4]=ideal(0);
|
|
799
|
+
def RS=ring(RRL);
|
|
800
|
+
setring RS;
|
|
801
|
+
ideal id=imap(RR,id);
|
|
802
|
+
ideal QU=imap(RR,QU);
|
|
803
|
+
if(aa)
|
|
804
|
+
{
|
|
805
|
+
list RES=T_12(id+QU,1);
|
|
806
|
+
}
|
|
807
|
+
else
|
|
808
|
+
{
|
|
809
|
+
list RES=T_12(id+QU);
|
|
810
|
+
}
|
|
811
|
+
setring RR;
|
|
812
|
+
list RES=imap(RS,RES);
|
|
813
|
+
return(RES);
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
//--------------------------- initialisation ----------------------------------
|
|
817
|
+
int n,r1,r2,d1,d2;
|
|
818
|
+
def P = basering;
|
|
819
|
+
i = simplify(i,10);
|
|
820
|
+
module jac,t1,t2,sbt1,sbt2;
|
|
821
|
+
matrix Kos,Syz,SK,kbT_1,Sx;
|
|
822
|
+
list L;
|
|
823
|
+
ideal i0 = std(i);
|
|
824
|
+
//-------------------- presentation of non-trivial syzygies -------------------
|
|
825
|
+
list I= nres(i,2); // resolve i
|
|
826
|
+
Syz = matrix(I[2]); // syz(i)
|
|
827
|
+
jac = jacob(i); // jacobi ideal
|
|
828
|
+
Kos = koszul(2,i); // koszul-relations
|
|
829
|
+
SK = modulo(Syz,Kos); // presentation of syz/kos
|
|
830
|
+
//--------------------- fetch to quotient ring mod i -------------------------
|
|
831
|
+
qring Ox = i0; // make P/i the basering
|
|
832
|
+
module Jac = fetch(P,jac);
|
|
833
|
+
matrix No = transpose(fetch(P,Syz)); // ker(No) = Hom(syz,Ox)
|
|
834
|
+
module So = transpose(fetch(P,SK)); // Hom(syz/kos,R)
|
|
835
|
+
list resS = nres(So,2);
|
|
836
|
+
matrix Sx = resS[2];
|
|
837
|
+
list resN = nres(No,2);
|
|
838
|
+
matrix Nx = resN[2];
|
|
839
|
+
module T_2 = modulo(Sx,No); // presentation of T_2
|
|
840
|
+
r2 = nrows(T_2);
|
|
841
|
+
module T_1 = modulo(Nx,Jac); // presentation of T_1
|
|
842
|
+
r1 = nrows(T_1);
|
|
843
|
+
//------------------------ pull back to basering ------------------------------
|
|
844
|
+
setring P;
|
|
845
|
+
t1 = fetch(Ox,T_1)+i*freemodule(r1);
|
|
846
|
+
t2 = fetch(Ox,T_2)+i*freemodule(r2);
|
|
847
|
+
sbt1 = std(t1);
|
|
848
|
+
d1 = vdim(sbt1);
|
|
849
|
+
sbt2 = std(t2);
|
|
850
|
+
d2 = vdim(sbt2);
|
|
851
|
+
dbprint(printlevel-voice+3,"// dim T_1 = "+string(d1),"// dim T_2 = "+string(d2));
|
|
852
|
+
if ( size(#)>0)
|
|
853
|
+
{
|
|
854
|
+
if (d1>0)
|
|
855
|
+
{
|
|
856
|
+
kbT_1 = fetch(Ox,Nx)*kbase(sbt1);
|
|
857
|
+
}
|
|
858
|
+
else
|
|
859
|
+
{
|
|
860
|
+
kbT_1 = 0;
|
|
861
|
+
}
|
|
862
|
+
Sx = fetch(Ox,Sx);
|
|
863
|
+
L = sbt1,sbt2,d1,d2,kbT_1,Syz,Sx,t1,t2;
|
|
864
|
+
return(L);
|
|
865
|
+
}
|
|
866
|
+
L = sbt1,sbt2;
|
|
867
|
+
return(L);
|
|
868
|
+
}
|
|
869
|
+
example
|
|
870
|
+
{ "EXAMPLE:"; echo = 2;
|
|
871
|
+
int p = printlevel;
|
|
872
|
+
printlevel = 1;
|
|
873
|
+
ring r = 199,(x,y,z,u,v),(c,ws(4,3,2,3,4));
|
|
874
|
+
ideal i = xz-y2,yz2-xu,xv-yzu,yu-z3,z2u-yv,zv-u2;
|
|
875
|
+
//a cyclic quotient singularity
|
|
876
|
+
list L = T_12(i,1);
|
|
877
|
+
print(L[5]); //matrix of infin. deformations
|
|
878
|
+
printlevel = p;
|
|
879
|
+
}
|
|
880
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
881
|
+
proc codim (def id1,def id2)
|
|
882
|
+
"USAGE: codim(id1,id2); id1,id2 ideal or module, both must be standard bases
|
|
883
|
+
RETURN: int, which is:
|
|
884
|
+
1. the vectorspace dimension of id1/id2 if id2 is contained in id1
|
|
885
|
+
and if this number is finite@*
|
|
886
|
+
2. -1 if the dimension of id1/id2 is infinite@*
|
|
887
|
+
3. -2 if id2 is not contained in id1
|
|
888
|
+
COMPUTE: consider the Hilbert series iv1(t) of id1 and iv2(t) of id2.
|
|
889
|
+
If codim(id1,id2) is finite, q(t)=(iv2(t)-iv1(t))/(1-t)^n is
|
|
890
|
+
rational, and the codimension is the sum of the coefficients of q(t)
|
|
891
|
+
(n = dimension of basering).
|
|
892
|
+
EXAMPLE: example codim; shows an example
|
|
893
|
+
"
|
|
894
|
+
{
|
|
895
|
+
if (attrib(id1,"isSB")!=1) { "first argument of codim is not a SB";}
|
|
896
|
+
if (attrib(id2,"isSB")!=1) { "second argument of codim is not a SB";}
|
|
897
|
+
intvec iv1, iv2, iv;
|
|
898
|
+
int i, d1, d2, dd, i1, i2, ia, ie;
|
|
899
|
+
//--------------------------- check id2 < id1 -------------------------------
|
|
900
|
+
ideal led = lead(id1);
|
|
901
|
+
attrib(led, "isSB",1);
|
|
902
|
+
i = size(NF(lead(id2),led));
|
|
903
|
+
if ( i > 0 )
|
|
904
|
+
{
|
|
905
|
+
return(-2);
|
|
906
|
+
}
|
|
907
|
+
//--------------------------- 1. check finiteness ---------------------------
|
|
908
|
+
i1 = dim(id1);
|
|
909
|
+
i2 = dim(id2);
|
|
910
|
+
if (i1 < 0)
|
|
911
|
+
{
|
|
912
|
+
if ( i2 < 0 )
|
|
913
|
+
{
|
|
914
|
+
return(0);
|
|
915
|
+
}
|
|
916
|
+
if (i2 == 0)
|
|
917
|
+
{
|
|
918
|
+
return (vdim(id2));
|
|
919
|
+
}
|
|
920
|
+
else
|
|
921
|
+
{
|
|
922
|
+
return(-1);
|
|
923
|
+
}
|
|
924
|
+
}
|
|
925
|
+
if (i2 != i1)
|
|
926
|
+
{
|
|
927
|
+
return(-1);
|
|
928
|
+
}
|
|
929
|
+
if (i2 <= 0)
|
|
930
|
+
{
|
|
931
|
+
return(vdim(id2)-vdim(id1));
|
|
932
|
+
}
|
|
933
|
+
// if (mult(id2) != mult(id1))
|
|
934
|
+
//{
|
|
935
|
+
// return(-1);
|
|
936
|
+
// }
|
|
937
|
+
//--------------------------- module ---------------------------------------
|
|
938
|
+
d1 = nrows(module(id1));
|
|
939
|
+
d2 = nrows(module(id2));
|
|
940
|
+
dd = 0;
|
|
941
|
+
if (d1 > d2)
|
|
942
|
+
{
|
|
943
|
+
id2=id2,maxideal(1)*gen(d1);
|
|
944
|
+
dd = -1;
|
|
945
|
+
}
|
|
946
|
+
if (d2 > d1)
|
|
947
|
+
{
|
|
948
|
+
id1=id1,maxideal(1)*gen(d2);
|
|
949
|
+
dd = 1;
|
|
950
|
+
}
|
|
951
|
+
//--------------------------- compute first hilbertseries ------------------
|
|
952
|
+
iv1 = intvec(hilb(id1,1));
|
|
953
|
+
i1 = size(iv1);
|
|
954
|
+
iv2 = intvec(hilb(id2,1));
|
|
955
|
+
i2 = size(iv2);
|
|
956
|
+
//--------------------------- difference of hilbertseries ------------------
|
|
957
|
+
if (i2 > i1)
|
|
958
|
+
{
|
|
959
|
+
for ( i=1; i<=i1; i=i+1)
|
|
960
|
+
{
|
|
961
|
+
iv2[i] = iv2[i]-iv1[i];
|
|
962
|
+
}
|
|
963
|
+
ie = i2;
|
|
964
|
+
iv = iv2;
|
|
965
|
+
}
|
|
966
|
+
else
|
|
967
|
+
{
|
|
968
|
+
for ( i=1; i<=i2; i=i+1)
|
|
969
|
+
{
|
|
970
|
+
iv1[i] = iv2[i]-iv1[i];
|
|
971
|
+
}
|
|
972
|
+
iv = iv1;
|
|
973
|
+
for (ie=i1;ie>=0;ie=ie-1)
|
|
974
|
+
{
|
|
975
|
+
if (ie == 0)
|
|
976
|
+
{
|
|
977
|
+
return(0);
|
|
978
|
+
}
|
|
979
|
+
if (iv[ie] != 0)
|
|
980
|
+
{
|
|
981
|
+
break;
|
|
982
|
+
}
|
|
983
|
+
}
|
|
984
|
+
}
|
|
985
|
+
ia = 1;
|
|
986
|
+
while (iv[ia] == 0) { ia=ia+1; }
|
|
987
|
+
//--------------------------- ia <= nonzeros <= ie -------------------------
|
|
988
|
+
iv1 = iv[ia];
|
|
989
|
+
for(i=ia+1;i<=ie;i=i+1)
|
|
990
|
+
{
|
|
991
|
+
iv1=iv1,iv[i];
|
|
992
|
+
}
|
|
993
|
+
//--------------------------- compute second hilbertseries -----------------
|
|
994
|
+
iv2 = hilb(iv1);
|
|
995
|
+
//--------------------------- check finitenes ------------------------------
|
|
996
|
+
i2 = size(iv2);
|
|
997
|
+
i1 = ie - ia + 1 - i2;
|
|
998
|
+
if (i1 != nvars(basering))
|
|
999
|
+
{
|
|
1000
|
+
return(-1);
|
|
1001
|
+
}
|
|
1002
|
+
//--------------------------- compute result -------------------------------
|
|
1003
|
+
i1 = 0;
|
|
1004
|
+
for ( i=1; i<=i2; i=i+1)
|
|
1005
|
+
{
|
|
1006
|
+
i1 = i1 + iv2[i];
|
|
1007
|
+
}
|
|
1008
|
+
return(i1+dd);
|
|
1009
|
+
}
|
|
1010
|
+
example
|
|
1011
|
+
{ "EXAMPLE:"; echo = 2;
|
|
1012
|
+
ring r = 0,(x,y),dp;
|
|
1013
|
+
ideal j = y6,x4;
|
|
1014
|
+
ideal m = x,y;
|
|
1015
|
+
attrib(m,"isSB",1); //let Singular know that ideals are a standard basis
|
|
1016
|
+
attrib(j,"isSB",1);
|
|
1017
|
+
codim(m,j); // should be 23 (Milnor number -1 of y7-x5)
|
|
1018
|
+
}
|
|
1019
|
+
|
|
1020
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
1021
|
+
|
|
1022
|
+
proc tangentcone (def id,list #)
|
|
1023
|
+
"USAGE: tangentcone(id [,n]); id = ideal, n = int
|
|
1024
|
+
RETURN: the tangent cone of id
|
|
1025
|
+
NOTE: The procedure works for any monomial ordering.
|
|
1026
|
+
If n=0 use std w.r.t. local ordering ds, if n=1 use locstd.
|
|
1027
|
+
EXAMPLE: example tangentcone; shows an example
|
|
1028
|
+
"
|
|
1029
|
+
{
|
|
1030
|
+
int ii,n;
|
|
1031
|
+
def bas = basering;
|
|
1032
|
+
ideal tang;
|
|
1033
|
+
if (size(#) !=0) { n= #[1]; }
|
|
1034
|
+
if( n==0 )
|
|
1035
|
+
{
|
|
1036
|
+
def @newr@=changeord(list(list("ds",1:nvars(basering))));
|
|
1037
|
+
setring @newr@;
|
|
1038
|
+
ideal @id = imap(bas,id);
|
|
1039
|
+
@id = std(@id);
|
|
1040
|
+
setring bas;
|
|
1041
|
+
id = imap(@newr@,@id);
|
|
1042
|
+
kill @newr@;
|
|
1043
|
+
}
|
|
1044
|
+
else
|
|
1045
|
+
{
|
|
1046
|
+
id = locstd(id);
|
|
1047
|
+
}
|
|
1048
|
+
|
|
1049
|
+
for(ii=1; ii<=size(id); ii++)
|
|
1050
|
+
{
|
|
1051
|
+
tang[ii]=jet(id[ii],mindeg(id[ii]));
|
|
1052
|
+
}
|
|
1053
|
+
return(tang);
|
|
1054
|
+
}
|
|
1055
|
+
example
|
|
1056
|
+
{ "EXAMPLE:"; echo = 2;
|
|
1057
|
+
ring R = 0,(x,y,z),ds;
|
|
1058
|
+
ideal i = 7xyz+z5,x2+y3+z7,5z5+y5;
|
|
1059
|
+
tangentcone(i);
|
|
1060
|
+
}
|
|
1061
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
1062
|
+
|
|
1063
|
+
proc locstd (def id)
|
|
1064
|
+
"USAGE: locstd (id); id = ideal
|
|
1065
|
+
RETURN: a standard basis for a local degree ordering
|
|
1066
|
+
NOTE: the procedure homogenizes id w.r.t. a new 1st variable @t@, computes
|
|
1067
|
+
a SB w.r.t. (dp(1),dp) and substitutes @t@ by 1.
|
|
1068
|
+
Hence the result is a SB with respect to an ordering which sorts
|
|
1069
|
+
first w.r.t. the order and then refines it with dp. This is a
|
|
1070
|
+
local degree ordering.
|
|
1071
|
+
This is done in order to avoid cancellation of units and thus
|
|
1072
|
+
be able to use option(contentSB);
|
|
1073
|
+
EXAMPLE: example locstd; shows an example
|
|
1074
|
+
"
|
|
1075
|
+
{
|
|
1076
|
+
int ii;
|
|
1077
|
+
def bas = basering;
|
|
1078
|
+
ring @r_locstd = create_ring(ring_list(bas)[1], "(@t@,"+varstr(bas)+")", "(dp(1),dp)", "no_minpoly");
|
|
1079
|
+
ideal @id = imap(bas,id);
|
|
1080
|
+
ideal @hid = homog(@id,@t@);
|
|
1081
|
+
@hid = std(@hid);
|
|
1082
|
+
@hid = subst(@hid,@t@,1);
|
|
1083
|
+
setring bas;
|
|
1084
|
+
def @hid = imap(@r_locstd,@hid);
|
|
1085
|
+
attrib(@hid,"isSB",1);
|
|
1086
|
+
kill @r_locstd;
|
|
1087
|
+
return(@hid);
|
|
1088
|
+
}
|
|
1089
|
+
example
|
|
1090
|
+
{ "EXAMPLE:"; echo = 2;
|
|
1091
|
+
ring R = 0,(x,y,z),ds;
|
|
1092
|
+
ideal i = xyz+z5,2x2+y3+z7,3z5+y5;
|
|
1093
|
+
locstd(i);
|
|
1094
|
+
}
|