passagemath-singular 10.6.31rc3__cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of passagemath-singular might be problematic. Click here for more details.
- PySingular.cpython-314-x86_64-linux-gnu.so +0 -0
- passagemath_singular-10.6.31rc3.dist-info/METADATA +183 -0
- passagemath_singular-10.6.31rc3.dist-info/RECORD +491 -0
- passagemath_singular-10.6.31rc3.dist-info/WHEEL +6 -0
- passagemath_singular-10.6.31rc3.dist-info/top_level.txt +3 -0
- passagemath_singular.libs/libSingular-4-20aec911.4.1.so +0 -0
- passagemath_singular.libs/libcddgmp-21acf0c6.so.0.1.3 +0 -0
- passagemath_singular.libs/libfactory-4-fcee31da.4.1.so +0 -0
- passagemath_singular.libs/libflint-66e12231.so.21.0.0 +0 -0
- passagemath_singular.libs/libgf2x-a4cdec90.so.3.0.0 +0 -0
- passagemath_singular.libs/libgfortran-83c28eba.so.5.0.0 +0 -0
- passagemath_singular.libs/libgmp-6e109695.so.10.5.0 +0 -0
- passagemath_singular.libs/libgsl-cda90e79.so.28.0.0 +0 -0
- passagemath_singular.libs/libmpfr-82690d50.so.6.2.1 +0 -0
- passagemath_singular.libs/libntl-e6f0d543.so.44.0.1 +0 -0
- passagemath_singular.libs/libomalloc-0-5c9e866e.9.6.so +0 -0
- passagemath_singular.libs/libopenblasp-r0-6dcb67f9.3.29.so +0 -0
- passagemath_singular.libs/libpolys-4-5c0a87e0.4.1.so +0 -0
- passagemath_singular.libs/libquadmath-2284e583.so.0.0.0 +0 -0
- passagemath_singular.libs/libreadline-ea270e21.so.8.2 +0 -0
- passagemath_singular.libs/libsingular_resources-4-a1aafc6d.4.1.so +0 -0
- passagemath_singular.libs/libtinfo-ceb117d9.so.6.3 +0 -0
- sage/algebras/all__sagemath_singular.py +3 -0
- sage/algebras/fusion_rings/all.py +19 -0
- sage/algebras/fusion_rings/f_matrix.py +2448 -0
- sage/algebras/fusion_rings/fast_parallel_fmats_methods.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/algebras/fusion_rings/fast_parallel_fmats_methods.pxd +5 -0
- sage/algebras/fusion_rings/fast_parallel_fmats_methods.pyx +538 -0
- sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pxd +3 -0
- sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pyx +331 -0
- sage/algebras/fusion_rings/fusion_double.py +899 -0
- sage/algebras/fusion_rings/fusion_ring.py +1580 -0
- sage/algebras/fusion_rings/poly_tup_engine.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/algebras/fusion_rings/poly_tup_engine.pxd +24 -0
- sage/algebras/fusion_rings/poly_tup_engine.pyx +579 -0
- sage/algebras/fusion_rings/shm_managers.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/algebras/fusion_rings/shm_managers.pxd +24 -0
- sage/algebras/fusion_rings/shm_managers.pyx +780 -0
- sage/algebras/letterplace/all.py +1 -0
- sage/algebras/letterplace/free_algebra_element_letterplace.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/algebras/letterplace/free_algebra_element_letterplace.pxd +18 -0
- sage/algebras/letterplace/free_algebra_element_letterplace.pyx +755 -0
- sage/algebras/letterplace/free_algebra_letterplace.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/algebras/letterplace/free_algebra_letterplace.pxd +35 -0
- sage/algebras/letterplace/free_algebra_letterplace.pyx +914 -0
- sage/algebras/letterplace/letterplace_ideal.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/algebras/letterplace/letterplace_ideal.pyx +408 -0
- sage/algebras/quatalg/all.py +2 -0
- sage/algebras/quatalg/quaternion_algebra.py +4778 -0
- sage/algebras/quatalg/quaternion_algebra_cython.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/algebras/quatalg/quaternion_algebra_cython.pyx +261 -0
- sage/algebras/quatalg/quaternion_algebra_element.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/algebras/quatalg/quaternion_algebra_element.pxd +29 -0
- sage/algebras/quatalg/quaternion_algebra_element.pyx +2176 -0
- sage/all__sagemath_singular.py +11 -0
- sage/ext_data/all__sagemath_singular.py +1 -0
- sage/ext_data/singular/function_field/core.lib +98 -0
- sage/interfaces/all__sagemath_singular.py +1 -0
- sage/interfaces/singular.py +2835 -0
- sage/libs/all__sagemath_singular.py +1 -0
- sage/libs/singular/__init__.py +1 -0
- sage/libs/singular/decl.pxd +1168 -0
- sage/libs/singular/function.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/libs/singular/function.pxd +87 -0
- sage/libs/singular/function.pyx +1901 -0
- sage/libs/singular/function_factory.py +61 -0
- sage/libs/singular/groebner_strategy.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/libs/singular/groebner_strategy.pxd +22 -0
- sage/libs/singular/groebner_strategy.pyx +582 -0
- sage/libs/singular/option.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/libs/singular/option.pyx +671 -0
- sage/libs/singular/polynomial.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/libs/singular/polynomial.pxd +39 -0
- sage/libs/singular/polynomial.pyx +661 -0
- sage/libs/singular/ring.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/libs/singular/ring.pxd +58 -0
- sage/libs/singular/ring.pyx +893 -0
- sage/libs/singular/singular.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/libs/singular/singular.pxd +72 -0
- sage/libs/singular/singular.pyx +1944 -0
- sage/libs/singular/standard_options.py +145 -0
- sage/matrix/all__sagemath_singular.py +1 -0
- sage/matrix/matrix_mpolynomial_dense.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/matrix_mpolynomial_dense.pxd +7 -0
- sage/matrix/matrix_mpolynomial_dense.pyx +615 -0
- sage/rings/all__sagemath_singular.py +1 -0
- sage/rings/function_field/all__sagemath_singular.py +1 -0
- sage/rings/function_field/derivations_polymod.py +911 -0
- sage/rings/function_field/element_polymod.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/function_field/element_polymod.pyx +406 -0
- sage/rings/function_field/function_field_polymod.py +2611 -0
- sage/rings/function_field/ideal_polymod.py +1775 -0
- sage/rings/function_field/order_polymod.py +1475 -0
- sage/rings/function_field/place_polymod.py +681 -0
- sage/rings/polynomial/all__sagemath_singular.py +1 -0
- sage/rings/polynomial/multi_polynomial_ideal_libsingular.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/polynomial/multi_polynomial_ideal_libsingular.pxd +5 -0
- sage/rings/polynomial/multi_polynomial_ideal_libsingular.pyx +339 -0
- sage/rings/polynomial/multi_polynomial_libsingular.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/polynomial/multi_polynomial_libsingular.pxd +30 -0
- sage/rings/polynomial/multi_polynomial_libsingular.pyx +6277 -0
- sage/rings/polynomial/plural.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/polynomial/plural.pxd +48 -0
- sage/rings/polynomial/plural.pyx +3171 -0
- sage/symbolic/all__sagemath_singular.py +1 -0
- sage/symbolic/comparison_impl.pxi +428 -0
- sage/symbolic/constants_c_impl.pxi +178 -0
- sage/symbolic/expression.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/symbolic/expression.pxd +7 -0
- sage/symbolic/expression.pyx +14200 -0
- sage/symbolic/getitem_impl.pxi +202 -0
- sage/symbolic/pynac.pxi +572 -0
- sage/symbolic/pynac_constant_impl.pxi +133 -0
- sage/symbolic/pynac_function_impl.pxi +206 -0
- sage/symbolic/pynac_impl.pxi +2576 -0
- sage/symbolic/pynac_wrap.h +124 -0
- sage/symbolic/series_impl.pxi +272 -0
- sage/symbolic/substitution_map_impl.pxi +94 -0
- sage_wheels/bin/ESingular +0 -0
- sage_wheels/bin/Singular +0 -0
- sage_wheels/bin/TSingular +0 -0
- sage_wheels/lib/singular/MOD/cohomo.la +41 -0
- sage_wheels/lib/singular/MOD/cohomo.so +0 -0
- sage_wheels/lib/singular/MOD/customstd.la +41 -0
- sage_wheels/lib/singular/MOD/customstd.so +0 -0
- sage_wheels/lib/singular/MOD/freealgebra.la +41 -0
- sage_wheels/lib/singular/MOD/freealgebra.so +0 -0
- sage_wheels/lib/singular/MOD/gfanlib.la +41 -0
- sage_wheels/lib/singular/MOD/gfanlib.so +0 -0
- sage_wheels/lib/singular/MOD/gitfan.la +41 -0
- sage_wheels/lib/singular/MOD/gitfan.so +0 -0
- sage_wheels/lib/singular/MOD/interval.la +41 -0
- sage_wheels/lib/singular/MOD/interval.so +0 -0
- sage_wheels/lib/singular/MOD/loctriv.la +41 -0
- sage_wheels/lib/singular/MOD/loctriv.so +0 -0
- sage_wheels/lib/singular/MOD/machinelearning.la +41 -0
- sage_wheels/lib/singular/MOD/machinelearning.so +0 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.la +41 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.so +0 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.la +41 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.so +0 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldQ.la +41 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldQ.so +0 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldZp.la +41 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldZp.so +0 -0
- sage_wheels/lib/singular/MOD/partialgb.la +41 -0
- sage_wheels/lib/singular/MOD/partialgb.so +0 -0
- sage_wheels/lib/singular/MOD/pyobject.la +41 -0
- sage_wheels/lib/singular/MOD/pyobject.so +0 -0
- sage_wheels/lib/singular/MOD/singmathic.la +41 -0
- sage_wheels/lib/singular/MOD/singmathic.so +0 -0
- sage_wheels/lib/singular/MOD/sispasm.la +41 -0
- sage_wheels/lib/singular/MOD/sispasm.so +0 -0
- sage_wheels/lib/singular/MOD/subsets.la +41 -0
- sage_wheels/lib/singular/MOD/subsets.so +0 -0
- sage_wheels/lib/singular/MOD/systhreads.la +41 -0
- sage_wheels/lib/singular/MOD/systhreads.so +0 -0
- sage_wheels/lib/singular/MOD/syzextra.la +41 -0
- sage_wheels/lib/singular/MOD/syzextra.so +0 -0
- sage_wheels/libexec/singular/MOD/change_cost +0 -0
- sage_wheels/libexec/singular/MOD/singularsurf +11 -0
- sage_wheels/libexec/singular/MOD/singularsurf_jupyter +9 -0
- sage_wheels/libexec/singular/MOD/singularsurf_win +10 -0
- sage_wheels/libexec/singular/MOD/solve_IP +0 -0
- sage_wheels/libexec/singular/MOD/surfex +16 -0
- sage_wheels/libexec/singular/MOD/toric_ideal +0 -0
- sage_wheels/share/factory/gftables/10201 +342 -0
- sage_wheels/share/factory/gftables/1024 +37 -0
- sage_wheels/share/factory/gftables/10609 +356 -0
- sage_wheels/share/factory/gftables/11449 +384 -0
- sage_wheels/share/factory/gftables/11881 +398 -0
- sage_wheels/share/factory/gftables/121 +6 -0
- sage_wheels/share/factory/gftables/12167 +408 -0
- sage_wheels/share/factory/gftables/125 +7 -0
- sage_wheels/share/factory/gftables/12769 +428 -0
- sage_wheels/share/factory/gftables/128 +7 -0
- sage_wheels/share/factory/gftables/1331 +47 -0
- sage_wheels/share/factory/gftables/1369 +48 -0
- sage_wheels/share/factory/gftables/14641 +490 -0
- sage_wheels/share/factory/gftables/15625 +523 -0
- sage_wheels/share/factory/gftables/16 +3 -0
- sage_wheels/share/factory/gftables/16129 +540 -0
- sage_wheels/share/factory/gftables/16384 +549 -0
- sage_wheels/share/factory/gftables/16807 +563 -0
- sage_wheels/share/factory/gftables/1681 +58 -0
- sage_wheels/share/factory/gftables/169 +8 -0
- sage_wheels/share/factory/gftables/17161 +574 -0
- sage_wheels/share/factory/gftables/1849 +64 -0
- sage_wheels/share/factory/gftables/18769 +628 -0
- sage_wheels/share/factory/gftables/19321 +646 -0
- sage_wheels/share/factory/gftables/19683 +659 -0
- sage_wheels/share/factory/gftables/2048 +71 -0
- sage_wheels/share/factory/gftables/2187 +75 -0
- sage_wheels/share/factory/gftables/2197 +76 -0
- sage_wheels/share/factory/gftables/2209 +76 -0
- sage_wheels/share/factory/gftables/22201 +742 -0
- sage_wheels/share/factory/gftables/22801 +762 -0
- sage_wheels/share/factory/gftables/2401 +82 -0
- sage_wheels/share/factory/gftables/243 +11 -0
- sage_wheels/share/factory/gftables/24389 +815 -0
- sage_wheels/share/factory/gftables/24649 +824 -0
- sage_wheels/share/factory/gftables/25 +3 -0
- sage_wheels/share/factory/gftables/256 +11 -0
- sage_wheels/share/factory/gftables/26569 +888 -0
- sage_wheels/share/factory/gftables/27 +3 -0
- sage_wheels/share/factory/gftables/27889 +932 -0
- sage_wheels/share/factory/gftables/2809 +96 -0
- sage_wheels/share/factory/gftables/28561 +954 -0
- sage_wheels/share/factory/gftables/289 +12 -0
- sage_wheels/share/factory/gftables/29791 +995 -0
- sage_wheels/share/factory/gftables/29929 +1000 -0
- sage_wheels/share/factory/gftables/3125 +107 -0
- sage_wheels/share/factory/gftables/32 +4 -0
- sage_wheels/share/factory/gftables/32041 +1070 -0
- sage_wheels/share/factory/gftables/32761 +1094 -0
- sage_wheels/share/factory/gftables/32768 +1095 -0
- sage_wheels/share/factory/gftables/343 +14 -0
- sage_wheels/share/factory/gftables/3481 +118 -0
- sage_wheels/share/factory/gftables/361 +14 -0
- sage_wheels/share/factory/gftables/36481 +1218 -0
- sage_wheels/share/factory/gftables/3721 +126 -0
- sage_wheels/share/factory/gftables/37249 +1244 -0
- sage_wheels/share/factory/gftables/38809 +1296 -0
- sage_wheels/share/factory/gftables/39601 +1322 -0
- sage_wheels/share/factory/gftables/4 +3 -0
- sage_wheels/share/factory/gftables/4096 +139 -0
- sage_wheels/share/factory/gftables/44521 +1486 -0
- sage_wheels/share/factory/gftables/4489 +152 -0
- sage_wheels/share/factory/gftables/49 +4 -0
- sage_wheels/share/factory/gftables/4913 +166 -0
- sage_wheels/share/factory/gftables/49729 +1660 -0
- sage_wheels/share/factory/gftables/5041 +170 -0
- sage_wheels/share/factory/gftables/50653 +1691 -0
- sage_wheels/share/factory/gftables/512 +20 -0
- sage_wheels/share/factory/gftables/51529 +1720 -0
- sage_wheels/share/factory/gftables/52441 +1750 -0
- sage_wheels/share/factory/gftables/529 +20 -0
- sage_wheels/share/factory/gftables/5329 +180 -0
- sage_wheels/share/factory/gftables/54289 +1812 -0
- sage_wheels/share/factory/gftables/57121 +1906 -0
- sage_wheels/share/factory/gftables/58081 +1938 -0
- sage_wheels/share/factory/gftables/59049 +1971 -0
- sage_wheels/share/factory/gftables/6241 +210 -0
- sage_wheels/share/factory/gftables/625 +23 -0
- sage_wheels/share/factory/gftables/63001 +2102 -0
- sage_wheels/share/factory/gftables/64 +5 -0
- sage_wheels/share/factory/gftables/6561 +221 -0
- sage_wheels/share/factory/gftables/6859 +231 -0
- sage_wheels/share/factory/gftables/6889 +232 -0
- sage_wheels/share/factory/gftables/729 +27 -0
- sage_wheels/share/factory/gftables/7921 +266 -0
- sage_wheels/share/factory/gftables/8 +3 -0
- sage_wheels/share/factory/gftables/81 +5 -0
- sage_wheels/share/factory/gftables/8192 +276 -0
- sage_wheels/share/factory/gftables/841 +30 -0
- sage_wheels/share/factory/gftables/9 +3 -0
- sage_wheels/share/factory/gftables/9409 +316 -0
- sage_wheels/share/factory/gftables/961 +34 -0
- sage_wheels/share/info/singular.info +191898 -0
- sage_wheels/share/singular/LIB/GND.lib +1359 -0
- sage_wheels/share/singular/LIB/JMBTest.lib +976 -0
- sage_wheels/share/singular/LIB/JMSConst.lib +1363 -0
- sage_wheels/share/singular/LIB/KVequiv.lib +699 -0
- sage_wheels/share/singular/LIB/SingularityDBM.lib +491 -0
- sage_wheels/share/singular/LIB/VecField.lib +1542 -0
- sage_wheels/share/singular/LIB/absfact.lib +959 -0
- sage_wheels/share/singular/LIB/ainvar.lib +730 -0
- sage_wheels/share/singular/LIB/aksaka.lib +419 -0
- sage_wheels/share/singular/LIB/alexpoly.lib +2542 -0
- sage_wheels/share/singular/LIB/algebra.lib +1193 -0
- sage_wheels/share/singular/LIB/all.lib +136 -0
- sage_wheels/share/singular/LIB/arcpoint.lib +514 -0
- sage_wheels/share/singular/LIB/arnold.lib +4553 -0
- sage_wheels/share/singular/LIB/arnoldclassify.lib +2058 -0
- sage_wheels/share/singular/LIB/arr.lib +3486 -0
- sage_wheels/share/singular/LIB/assprimeszerodim.lib +755 -0
- sage_wheels/share/singular/LIB/autgradalg.lib +3361 -0
- sage_wheels/share/singular/LIB/bfun.lib +1964 -0
- sage_wheels/share/singular/LIB/bimodules.lib +774 -0
- sage_wheels/share/singular/LIB/brillnoether.lib +226 -0
- sage_wheels/share/singular/LIB/brnoeth.lib +5017 -0
- sage_wheels/share/singular/LIB/central.lib +2169 -0
- sage_wheels/share/singular/LIB/chern.lib +4162 -0
- sage_wheels/share/singular/LIB/cimonom.lib +571 -0
- sage_wheels/share/singular/LIB/cisimplicial.lib +1835 -0
- sage_wheels/share/singular/LIB/classify.lib +3239 -0
- sage_wheels/share/singular/LIB/classify2.lib +1462 -0
- sage_wheels/share/singular/LIB/classifyMapGerms.lib +1515 -0
- sage_wheels/share/singular/LIB/classify_aeq.lib +3253 -0
- sage_wheels/share/singular/LIB/classifyceq.lib +2092 -0
- sage_wheels/share/singular/LIB/classifyci.lib +1133 -0
- sage_wheels/share/singular/LIB/combinat.lib +91 -0
- sage_wheels/share/singular/LIB/compregb.lib +276 -0
- sage_wheels/share/singular/LIB/control.lib +1636 -0
- sage_wheels/share/singular/LIB/crypto.lib +3795 -0
- sage_wheels/share/singular/LIB/curveInv.lib +667 -0
- sage_wheels/share/singular/LIB/curvepar.lib +1817 -0
- sage_wheels/share/singular/LIB/customstd.lib +100 -0
- sage_wheels/share/singular/LIB/deRham.lib +5979 -0
- sage_wheels/share/singular/LIB/decodegb.lib +2134 -0
- sage_wheels/share/singular/LIB/decomp.lib +1655 -0
- sage_wheels/share/singular/LIB/deflation.lib +872 -0
- sage_wheels/share/singular/LIB/deform.lib +925 -0
- sage_wheels/share/singular/LIB/difform.lib +3055 -0
- sage_wheels/share/singular/LIB/divisors.lib +750 -0
- sage_wheels/share/singular/LIB/dmod.lib +5817 -0
- sage_wheels/share/singular/LIB/dmodapp.lib +3269 -0
- sage_wheels/share/singular/LIB/dmodideal.lib +1211 -0
- sage_wheels/share/singular/LIB/dmodloc.lib +2645 -0
- sage_wheels/share/singular/LIB/dmodvar.lib +818 -0
- sage_wheels/share/singular/LIB/dummy.lib +17 -0
- sage_wheels/share/singular/LIB/elim.lib +1009 -0
- sage_wheels/share/singular/LIB/ellipticcovers.lib +548 -0
- sage_wheels/share/singular/LIB/enumpoints.lib +146 -0
- sage_wheels/share/singular/LIB/equising.lib +2127 -0
- sage_wheels/share/singular/LIB/ffmodstd.lib +2384 -0
- sage_wheels/share/singular/LIB/ffsolve.lib +1289 -0
- sage_wheels/share/singular/LIB/findifs.lib +778 -0
- sage_wheels/share/singular/LIB/finitediff.lib +1768 -0
- sage_wheels/share/singular/LIB/finvar.lib +7989 -0
- sage_wheels/share/singular/LIB/fpadim.lib +2429 -0
- sage_wheels/share/singular/LIB/fpalgebras.lib +1666 -0
- sage_wheels/share/singular/LIB/fpaprops.lib +1462 -0
- sage_wheels/share/singular/LIB/freegb.lib +3853 -0
- sage_wheels/share/singular/LIB/general.lib +1350 -0
- sage_wheels/share/singular/LIB/gfan.lib +1768 -0
- sage_wheels/share/singular/LIB/gitfan.lib +3130 -0
- sage_wheels/share/singular/LIB/gkdim.lib +99 -0
- sage_wheels/share/singular/LIB/gmspoly.lib +589 -0
- sage_wheels/share/singular/LIB/gmssing.lib +1739 -0
- sage_wheels/share/singular/LIB/goettsche.lib +909 -0
- sage_wheels/share/singular/LIB/graal.lib +1366 -0
- sage_wheels/share/singular/LIB/gradedModules.lib +2541 -0
- sage_wheels/share/singular/LIB/graphics.lib +360 -0
- sage_wheels/share/singular/LIB/grobcov.lib +7706 -0
- sage_wheels/share/singular/LIB/groups.lib +1123 -0
- sage_wheels/share/singular/LIB/grwalk.lib +507 -0
- sage_wheels/share/singular/LIB/hdepth.lib +194 -0
- sage_wheels/share/singular/LIB/help.cnf +57 -0
- sage_wheels/share/singular/LIB/hess.lib +1946 -0
- sage_wheels/share/singular/LIB/hnoether.lib +4292 -0
- sage_wheels/share/singular/LIB/hodge.lib +400 -0
- sage_wheels/share/singular/LIB/homolog.lib +1965 -0
- sage_wheels/share/singular/LIB/hyperel.lib +975 -0
- sage_wheels/share/singular/LIB/inout.lib +679 -0
- sage_wheels/share/singular/LIB/integralbasis.lib +6224 -0
- sage_wheels/share/singular/LIB/interval.lib +1418 -0
- sage_wheels/share/singular/LIB/intprog.lib +778 -0
- sage_wheels/share/singular/LIB/invar.lib +443 -0
- sage_wheels/share/singular/LIB/involut.lib +980 -0
- sage_wheels/share/singular/LIB/jacobson.lib +1215 -0
- sage_wheels/share/singular/LIB/kskernel.lib +534 -0
- sage_wheels/share/singular/LIB/latex.lib +3146 -0
- sage_wheels/share/singular/LIB/lejeune.lib +651 -0
- sage_wheels/share/singular/LIB/linalg.lib +2040 -0
- sage_wheels/share/singular/LIB/locnormal.lib +212 -0
- sage_wheels/share/singular/LIB/lrcalc.lib +526 -0
- sage_wheels/share/singular/LIB/makedbm.lib +294 -0
- sage_wheels/share/singular/LIB/mathml.lib +813 -0
- sage_wheels/share/singular/LIB/matrix.lib +1372 -0
- sage_wheels/share/singular/LIB/maxlike.lib +1132 -0
- sage_wheels/share/singular/LIB/methods.lib +212 -0
- sage_wheels/share/singular/LIB/moddiq.lib +322 -0
- sage_wheels/share/singular/LIB/modfinduni.lib +181 -0
- sage_wheels/share/singular/LIB/modnormal.lib +218 -0
- sage_wheels/share/singular/LIB/modprimdec.lib +1278 -0
- sage_wheels/share/singular/LIB/modquotient.lib +269 -0
- sage_wheels/share/singular/LIB/modstd.lib +1024 -0
- sage_wheels/share/singular/LIB/modular.lib +545 -0
- sage_wheels/share/singular/LIB/modules.lib +2561 -0
- sage_wheels/share/singular/LIB/modwalk.lib +609 -0
- sage_wheels/share/singular/LIB/mondromy.lib +1016 -0
- sage_wheels/share/singular/LIB/monomialideal.lib +3851 -0
- sage_wheels/share/singular/LIB/mprimdec.lib +2353 -0
- sage_wheels/share/singular/LIB/mregular.lib +1863 -0
- sage_wheels/share/singular/LIB/multigrading.lib +5629 -0
- sage_wheels/share/singular/LIB/ncHilb.lib +777 -0
- sage_wheels/share/singular/LIB/ncModslimgb.lib +791 -0
- sage_wheels/share/singular/LIB/ncalg.lib +16311 -0
- sage_wheels/share/singular/LIB/ncall.lib +31 -0
- sage_wheels/share/singular/LIB/ncdecomp.lib +468 -0
- sage_wheels/share/singular/LIB/ncfactor.lib +13371 -0
- sage_wheels/share/singular/LIB/ncfrac.lib +1023 -0
- sage_wheels/share/singular/LIB/nchilbert.lib +448 -0
- sage_wheels/share/singular/LIB/nchomolog.lib +759 -0
- sage_wheels/share/singular/LIB/ncloc.lib +361 -0
- sage_wheels/share/singular/LIB/ncpreim.lib +795 -0
- sage_wheels/share/singular/LIB/ncrat.lib +2849 -0
- sage_wheels/share/singular/LIB/nctools.lib +1887 -0
- sage_wheels/share/singular/LIB/nets.lib +1456 -0
- sage_wheels/share/singular/LIB/nfmodstd.lib +1000 -0
- sage_wheels/share/singular/LIB/nfmodsyz.lib +732 -0
- sage_wheels/share/singular/LIB/noether.lib +1106 -0
- sage_wheels/share/singular/LIB/normal.lib +8700 -0
- sage_wheels/share/singular/LIB/normaliz.lib +2226 -0
- sage_wheels/share/singular/LIB/ntsolve.lib +362 -0
- sage_wheels/share/singular/LIB/numerAlg.lib +560 -0
- sage_wheels/share/singular/LIB/numerDecom.lib +2261 -0
- sage_wheels/share/singular/LIB/olga.lib +1933 -0
- sage_wheels/share/singular/LIB/orbitparam.lib +351 -0
- sage_wheels/share/singular/LIB/parallel.lib +319 -0
- sage_wheels/share/singular/LIB/paraplanecurves.lib +3110 -0
- sage_wheels/share/singular/LIB/perron.lib +202 -0
- sage_wheels/share/singular/LIB/pfd.lib +2223 -0
- sage_wheels/share/singular/LIB/phindex.lib +642 -0
- sage_wheels/share/singular/LIB/pointid.lib +673 -0
- sage_wheels/share/singular/LIB/polybori.lib +1430 -0
- sage_wheels/share/singular/LIB/polyclass.lib +525 -0
- sage_wheels/share/singular/LIB/polylib.lib +1174 -0
- sage_wheels/share/singular/LIB/polymake.lib +1902 -0
- sage_wheels/share/singular/LIB/presolve.lib +1533 -0
- sage_wheels/share/singular/LIB/primdec.lib +9576 -0
- sage_wheels/share/singular/LIB/primdecint.lib +1782 -0
- sage_wheels/share/singular/LIB/primitiv.lib +401 -0
- sage_wheels/share/singular/LIB/puiseuxexpansions.lib +1631 -0
- sage_wheels/share/singular/LIB/purityfiltration.lib +960 -0
- sage_wheels/share/singular/LIB/qhmoduli.lib +1561 -0
- sage_wheels/share/singular/LIB/qmatrix.lib +293 -0
- sage_wheels/share/singular/LIB/random.lib +455 -0
- sage_wheels/share/singular/LIB/ratgb.lib +489 -0
- sage_wheels/share/singular/LIB/realclassify.lib +5759 -0
- sage_wheels/share/singular/LIB/realizationMatroids.lib +772 -0
- sage_wheels/share/singular/LIB/realrad.lib +1197 -0
- sage_wheels/share/singular/LIB/recover.lib +2628 -0
- sage_wheels/share/singular/LIB/redcgs.lib +3984 -0
- sage_wheels/share/singular/LIB/reesclos.lib +465 -0
- sage_wheels/share/singular/LIB/resbinomial.lib +2802 -0
- sage_wheels/share/singular/LIB/resgraph.lib +789 -0
- sage_wheels/share/singular/LIB/resjung.lib +820 -0
- sage_wheels/share/singular/LIB/resolve.lib +5110 -0
- sage_wheels/share/singular/LIB/resources.lib +170 -0
- sage_wheels/share/singular/LIB/reszeta.lib +5473 -0
- sage_wheels/share/singular/LIB/ring.lib +1328 -0
- sage_wheels/share/singular/LIB/ringgb.lib +343 -0
- sage_wheels/share/singular/LIB/rinvar.lib +1153 -0
- sage_wheels/share/singular/LIB/rootisolation.lib +1481 -0
- sage_wheels/share/singular/LIB/rootsmr.lib +709 -0
- sage_wheels/share/singular/LIB/rootsur.lib +886 -0
- sage_wheels/share/singular/LIB/rstandard.lib +607 -0
- sage_wheels/share/singular/LIB/rwalk.lib +336 -0
- sage_wheels/share/singular/LIB/sagbi.lib +1353 -0
- sage_wheels/share/singular/LIB/sagbiNormaliz.lib +1622 -0
- sage_wheels/share/singular/LIB/sagbiNormaliz0.lib +1498 -0
- sage_wheels/share/singular/LIB/sagbigrob.lib +449 -0
- sage_wheels/share/singular/LIB/schreyer.lib +321 -0
- sage_wheels/share/singular/LIB/schubert.lib +2551 -0
- sage_wheels/share/singular/LIB/sets.lib +524 -0
- sage_wheels/share/singular/LIB/sheafcoh.lib +1663 -0
- sage_wheels/share/singular/LIB/signcond.lib +437 -0
- sage_wheels/share/singular/LIB/sing.lib +1094 -0
- sage_wheels/share/singular/LIB/sing4ti2.lib +419 -0
- sage_wheels/share/singular/LIB/solve.lib +2243 -0
- sage_wheels/share/singular/LIB/spcurve.lib +1077 -0
- sage_wheels/share/singular/LIB/spectrum.lib +62 -0
- sage_wheels/share/singular/LIB/sresext.lib +757 -0
- sage_wheels/share/singular/LIB/ssi.lib +143 -0
- sage_wheels/share/singular/LIB/standard.lib +2769 -0
- sage_wheels/share/singular/LIB/stanleyreisner.lib +473 -0
- sage_wheels/share/singular/LIB/stdmodule.lib +547 -0
- sage_wheels/share/singular/LIB/stratify.lib +1070 -0
- sage_wheels/share/singular/LIB/surf.lib +506 -0
- sage_wheels/share/singular/LIB/surf_jupyter.lib +223 -0
- sage_wheels/share/singular/LIB/surfacesignature.lib +522 -0
- sage_wheels/share/singular/LIB/surfex.lib +1462 -0
- sage_wheels/share/singular/LIB/swalk.lib +877 -0
- sage_wheels/share/singular/LIB/symodstd.lib +1570 -0
- sage_wheels/share/singular/LIB/systhreads.lib +74 -0
- sage_wheels/share/singular/LIB/tasks.lib +1324 -0
- sage_wheels/share/singular/LIB/tateProdCplxNegGrad.lib +2412 -0
- sage_wheels/share/singular/LIB/teachstd.lib +858 -0
- sage_wheels/share/singular/LIB/template.lib +116 -0
- sage_wheels/share/singular/LIB/toric.lib +1119 -0
- sage_wheels/share/singular/LIB/transformation.lib +116 -0
- sage_wheels/share/singular/LIB/triang.lib +1197 -0
- sage_wheels/share/singular/LIB/tropical.lib +8741 -0
- sage_wheels/share/singular/LIB/tropicalEllipticCovers.lib +2922 -0
- sage_wheels/share/singular/LIB/tropicalNewton.lib +1128 -0
- sage_wheels/share/singular/LIB/tst.lib +1108 -0
- sage_wheels/share/singular/LIB/weierstr.lib +241 -0
- sage_wheels/share/singular/LIB/zeroset.lib +1478 -0
- sage_wheels/share/singular/emacs/.emacs-general +184 -0
- sage_wheels/share/singular/emacs/.emacs-singular +234 -0
- sage_wheels/share/singular/emacs/COPYING +44 -0
- sage_wheels/share/singular/emacs/cmd-cmpl.el +241 -0
- sage_wheels/share/singular/emacs/ex-cmpl.el +1681 -0
- sage_wheels/share/singular/emacs/hlp-cmpl.el +4318 -0
- sage_wheels/share/singular/emacs/lib-cmpl.el +179 -0
- sage_wheels/share/singular/emacs/singular.el +4273 -0
- sage_wheels/share/singular/emacs/singular.xpm +39 -0
- sage_wheels/share/singular/singular.idx +5002 -0
|
@@ -0,0 +1,750 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
version="version divisors.lib 4.2.0.1 Jan_2021 "; // $Id: 654f5ddbed8add1d9fbdc300fee234bd650a9e6e $
|
|
3
|
+
category = "Commutative Algebra";
|
|
4
|
+
info="
|
|
5
|
+
LIBRARY: divisors.lib Divisors and P-Divisors
|
|
6
|
+
|
|
7
|
+
AUTHORS: Janko Boehm boehm@mathematik.uni-kl.de
|
|
8
|
+
@* Lars Kastner kastner@math.fu-berlin.de
|
|
9
|
+
@* Benjamin Lorenz blorenz@math.uni-frankfurt.de
|
|
10
|
+
@* Hans Schoenemann hannes@mathematik.uni-kl.de
|
|
11
|
+
@* Yue Ren ren@mathematik.uni-kl.de
|
|
12
|
+
|
|
13
|
+
OVERVIEW:
|
|
14
|
+
|
|
15
|
+
We implement a class divisor on an algebraic variety and methods
|
|
16
|
+
for computing with them. Divisors are represented by tuples of ideals
|
|
17
|
+
defining the positive and the negative part. In particular, we implement the group
|
|
18
|
+
structure on divisors, computing global sections and testing linear
|
|
19
|
+
equivalence.
|
|
20
|
+
|
|
21
|
+
In addition to this we provide a class formaldivisor which implements
|
|
22
|
+
integer formal sums of divisors (not necessarily prime). A formal divisor
|
|
23
|
+
can be evaluated to a divisor, and a divisor can be decomposed into
|
|
24
|
+
a formal sum.
|
|
25
|
+
|
|
26
|
+
Finally we provide a class pdivisor which implements polyhedral formal sums of
|
|
27
|
+
divisors (P-divisors) where the coefficients are assumed to be polyhedra with fixed tail cone.
|
|
28
|
+
There is a function to evaluate a P-divisor on a vector in the dual of the tail cone. The
|
|
29
|
+
result will be a formal divisor.
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
REFERENCES:
|
|
33
|
+
|
|
34
|
+
For the class divisor we closely follow Macaulay2's tutorial on divisors.
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
PROCEDURES:
|
|
38
|
+
|
|
39
|
+
makeDivisor(ideal,ideal) create a divisor
|
|
40
|
+
divisorplus(divisor,divisor) add two divisors
|
|
41
|
+
multdivisor(int,divisor) multiply a divisor by an integer
|
|
42
|
+
negativedivisor(divisor) compute the negative of the divisor
|
|
43
|
+
normalFormDivisor(divisor) normal form of a divisor
|
|
44
|
+
isEqualDivisor(divisor,divisor) test whether two divisors are equal
|
|
45
|
+
globalSections(divisor) compute the global sections of a divisor
|
|
46
|
+
degreeDivisor(divisor) degree of a divisor
|
|
47
|
+
linearlyEquivalent(divisor,divisor) test whether two divisors a linearly equivalent
|
|
48
|
+
effective(divisor) compute an effective divisor
|
|
49
|
+
linearly equivalent to a divisor
|
|
50
|
+
|
|
51
|
+
makeFormalDivisor(list) make a formal integer sum of divisors
|
|
52
|
+
evaluateFormalDivisor(formaldivisor) evaluate a formal sum of divisors to a divisor
|
|
53
|
+
formaldivisorplus(formaldivisor,formaldivisor) add two formal divisors
|
|
54
|
+
negativeformaldivisor(formaldivisor) compute the negative of the formal divisor
|
|
55
|
+
multformaldivisor(int,formaldivisor) multiply a formal divisor by an integer
|
|
56
|
+
degreeFormalDivisor(formaldivisor) degree of a formal divisor
|
|
57
|
+
|
|
58
|
+
makePDivisor(List) make a formal polyhedral sum of divisors
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
";
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
65
|
+
|
|
66
|
+
LIB "primdec.lib";
|
|
67
|
+
|
|
68
|
+
static proc mod_init()
|
|
69
|
+
{
|
|
70
|
+
LIB"customstd.lib";
|
|
71
|
+
LIB"gfan.lib";
|
|
72
|
+
newstruct("divisor","ideal den,ideal num");
|
|
73
|
+
newstruct("formaldivisor","list summands");
|
|
74
|
+
newstruct("pdivisor","list summands, cone tail");
|
|
75
|
+
|
|
76
|
+
system("install","divisor","print",divisor_print,1);
|
|
77
|
+
system("install","divisor","+",divisorplus,2);
|
|
78
|
+
system("install","divisor","*",proxymultdivisor,2);
|
|
79
|
+
system("install","formaldivisor","print",formaldivisor_print,1);
|
|
80
|
+
system("install","formaldivisor","+",formaldivisorplus,2);
|
|
81
|
+
system("install","formaldivisor","*",proxymultformaldivisor,2);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
proc divisor_print(divisor D)
|
|
87
|
+
"USAGE: divisor_print(D); D; D = divisor. @*
|
|
88
|
+
ASSUME: D is a divisor.
|
|
89
|
+
RETURN: Will print D.
|
|
90
|
+
KEYWORDS: divisors
|
|
91
|
+
EXAMPLE: example divisor_print; shows an example
|
|
92
|
+
"
|
|
93
|
+
{
|
|
94
|
+
"("+string(D.num)+") - ("+string(D.den)+")";
|
|
95
|
+
}
|
|
96
|
+
example
|
|
97
|
+
{ "EXAMPLE:";
|
|
98
|
+
ring r=31991,(x,y,z),dp;
|
|
99
|
+
ideal I = y^2*z - x*(x-z)*(x+3*z);
|
|
100
|
+
qring Q = std(I);
|
|
101
|
+
divisor P = makeDivisor(ideal(x,z),ideal(1));
|
|
102
|
+
P;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
proc formaldivisor_print(formaldivisor fD)
|
|
107
|
+
"USAGE: formaldivisor_print(D); D; D = formaldivisor. @*
|
|
108
|
+
ASSUME: fD is a formaldivisor.
|
|
109
|
+
RETURN: Will print fD.
|
|
110
|
+
KEYWORDS: divisors
|
|
111
|
+
EXAMPLE: example formaldivisor_print; shows an example
|
|
112
|
+
"
|
|
113
|
+
{
|
|
114
|
+
int i; string s; list L=fD.summands;
|
|
115
|
+
list cd; int c; divisor d;
|
|
116
|
+
string linebreak =
|
|
117
|
+
"
|
|
118
|
+
";
|
|
119
|
+
for (i=1; i<=size(L); i++)
|
|
120
|
+
{
|
|
121
|
+
cd=L[i]; c=cd[1]; d=cd[2];
|
|
122
|
+
if (i>1 && c>=0) { s = s + "+"; }
|
|
123
|
+
s = s + string(c)+"*( ("+string(d.num)+") - ("+string(d.den)+") )";
|
|
124
|
+
if (i!=size(L)) { s = s + linebreak; }
|
|
125
|
+
}
|
|
126
|
+
s;
|
|
127
|
+
}
|
|
128
|
+
example
|
|
129
|
+
{ "EXAMPLE:";
|
|
130
|
+
ring r=31991,(x,y,z),dp;
|
|
131
|
+
ideal I = y^2*z - x*(x-z)*(x+3*z);
|
|
132
|
+
qring Q = std(I);
|
|
133
|
+
divisor P = makeDivisor(ideal(x,z),ideal(1));
|
|
134
|
+
P;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
139
|
+
// divisors as numerator and denomiator ideals
|
|
140
|
+
|
|
141
|
+
proc makeDivisor(ideal I, ideal J)
|
|
142
|
+
"USAGE: makeDivisor(I ,J); I = ideal, J = ideal. @*
|
|
143
|
+
ASSUME: I and J are ideals in a qring Q of a smooth irreducible variety X
|
|
144
|
+
such that any ideal in Q satisfies the S2 condition.
|
|
145
|
+
RETURN: a divisor on X
|
|
146
|
+
THEORY: The procedure will eliminate all components which are not of codimension 1.
|
|
147
|
+
The S2 condition requires that every proper nonzero principal ideal
|
|
148
|
+
has pure codimension 1.
|
|
149
|
+
KEYWORDS: divisors
|
|
150
|
+
EXAMPLE: example makeDivisor; shows an example
|
|
151
|
+
"
|
|
152
|
+
{
|
|
153
|
+
divisor C;
|
|
154
|
+
C.num = purify1(I);
|
|
155
|
+
C.den = purify1(J);
|
|
156
|
+
return(C);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
example
|
|
160
|
+
{ "EXAMPLE:";
|
|
161
|
+
ring r=31991,(x,y,z),dp;
|
|
162
|
+
ideal I = y^2*z - x*(x-z)*(x+3*z);
|
|
163
|
+
qring Q = std(I);
|
|
164
|
+
divisor P = makeDivisor(ideal(x,z),ideal(1));
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
proc divisorplus(divisor A, divisor B)
|
|
169
|
+
"USAGE: divisorplus(A ,B); A + B; A = divisor, B = divisor. @*
|
|
170
|
+
ASSUME: A and B are divisors on X.
|
|
171
|
+
RETURN: a divisor on X
|
|
172
|
+
THEORY: The procedure will compute the product of the numerator
|
|
173
|
+
and denominator ideals, respectively.
|
|
174
|
+
KEYWORDS: divisors
|
|
175
|
+
EXAMPLE: example divisorplus; shows an example
|
|
176
|
+
"
|
|
177
|
+
{
|
|
178
|
+
return(makeDivisor(interred(A.num*B.num),interred(A.den*B.den)));
|
|
179
|
+
}
|
|
180
|
+
example
|
|
181
|
+
{ "EXAMPLE:";
|
|
182
|
+
ring r=31991,(x,y,z),dp;
|
|
183
|
+
ideal I = y^2*z - x*(x-z)*(x+3*z);
|
|
184
|
+
qring Q = std(I);
|
|
185
|
+
divisor A = makeDivisor(ideal(x,z),ideal(1));
|
|
186
|
+
divisor B = makeDivisor(ideal(x,y),ideal(1));
|
|
187
|
+
A+B;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
proc multdivisor(int n, divisor A)
|
|
192
|
+
"USAGE: multdivisor(n ,A); A*n; n = integer, A = divisor.@*
|
|
193
|
+
ASSUME: n is an integer and A is a divisor on X.
|
|
194
|
+
RETURN: a divisor on X
|
|
195
|
+
THEORY: The procedure will compute the n-th power of the numerator
|
|
196
|
+
and denominator ideals, respectively.
|
|
197
|
+
KEYWORDS: divisors
|
|
198
|
+
EXAMPLE: example multdivisor; shows an example
|
|
199
|
+
"
|
|
200
|
+
{
|
|
201
|
+
if (n<0) {return(multdivisor(-n,negativedivisor(A)));}
|
|
202
|
+
return(makeDivisor(interred((A.num)^n),interred((A.den)^n)));
|
|
203
|
+
}
|
|
204
|
+
example
|
|
205
|
+
{ "EXAMPLE:";
|
|
206
|
+
ring r=31991,(x,y,z),dp;
|
|
207
|
+
ideal I = y^2*z - x*(x-z)*(x+3*z);
|
|
208
|
+
qring Q = std(I);
|
|
209
|
+
divisor A = makeDivisor(ideal(x,z),ideal(1));
|
|
210
|
+
A;
|
|
211
|
+
divisor D = multdivisor(4,A);
|
|
212
|
+
D;
|
|
213
|
+
A*4;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
/***
|
|
218
|
+
* For operator overloading, which needs a procedure which takes a divisor first
|
|
219
|
+
* and integer second.
|
|
220
|
+
**/
|
|
221
|
+
proc proxymultdivisor(divisor A, int n)
|
|
222
|
+
{
|
|
223
|
+
if (n<0) {return(multdivisor(-n,negativedivisor(A)));}
|
|
224
|
+
return(makeDivisor(interred((A.num)^n),interred((A.den)^n)));
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
proc negativedivisor(divisor A)
|
|
229
|
+
"USAGE: negativedivisor(A); A*(-1); A = divisor.@*
|
|
230
|
+
ASSUME: A is a divisor on X.
|
|
231
|
+
RETURN: a divisor on X
|
|
232
|
+
THEORY: The procedure will interchange the numerator and denominator ideals.
|
|
233
|
+
KEYWORDS: divisors
|
|
234
|
+
EXAMPLE: example negativedivisor; shows an example
|
|
235
|
+
"
|
|
236
|
+
{
|
|
237
|
+
divisor B;
|
|
238
|
+
B.num=A.den;
|
|
239
|
+
B.den=A.num;
|
|
240
|
+
return(B);
|
|
241
|
+
}
|
|
242
|
+
example
|
|
243
|
+
{ "EXAMPLE:";
|
|
244
|
+
ring r=31991,(x,y,z),dp;
|
|
245
|
+
ideal I = y^2*z - x*(x-z)*(x+3*z);
|
|
246
|
+
qring Q = std(I);
|
|
247
|
+
divisor A = makeDivisor(ideal(x,z),ideal(1));
|
|
248
|
+
A;
|
|
249
|
+
divisor D = negativedivisor(A);
|
|
250
|
+
D;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
proc normalFormDivisor(divisor A)
|
|
255
|
+
"USAGE: normalFormDivisor(A); A = divisor.@*
|
|
256
|
+
ASSUME: A is a divisor on X.
|
|
257
|
+
RETURN: different representative of the same divisor on X
|
|
258
|
+
THEORY: The procedure will cancel common components of numerator and denominator.
|
|
259
|
+
KEYWORDS: divisors
|
|
260
|
+
EXAMPLE: example normalFormDivisor; shows an example
|
|
261
|
+
"
|
|
262
|
+
{
|
|
263
|
+
divisor B;
|
|
264
|
+
B.num=quotient(A.num,A.den);
|
|
265
|
+
B.den=quotient(A.den,A.num);
|
|
266
|
+
return(B);
|
|
267
|
+
}
|
|
268
|
+
example
|
|
269
|
+
{ "EXAMPLE:";
|
|
270
|
+
ring r=31991,(x,y,z),dp;
|
|
271
|
+
ideal I = y^2*z - x*(x-z)*(x+3*z);
|
|
272
|
+
qring Q = std(I);
|
|
273
|
+
divisor A = makeDivisor(ideal(x,z),ideal(1));
|
|
274
|
+
divisor B = makeDivisor(ideal(x,y),ideal(1));
|
|
275
|
+
divisor D = (A+B)+multdivisor(-1,B);
|
|
276
|
+
D;
|
|
277
|
+
normalFormDivisor(D);
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
static proc isEqualIdeal(ideal A,ideal B){
|
|
284
|
+
return((size(NF(A,std(B)))==0) && (size(NF(B,std(A)))==0));
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
proc isEqualDivisor(divisor A,divisor B)
|
|
289
|
+
"USAGE: isEqualDivisor(A,B); A = divisor, B = divisor.@*
|
|
290
|
+
ASSUME: A and B are divisors on X.
|
|
291
|
+
RETURN: int 0 or 1, checks equality of A and B.
|
|
292
|
+
THEORY: The procedure will compute the normal forms of A and B and compare.
|
|
293
|
+
KEYWORDS: divisors
|
|
294
|
+
EXAMPLE: example isEqualDivisor; shows an example
|
|
295
|
+
"
|
|
296
|
+
{
|
|
297
|
+
A=normalFormDivisor(A);
|
|
298
|
+
B=normalFormDivisor(B);
|
|
299
|
+
return((isEqualIdeal(A.num,B.num)) && (isEqualIdeal(A.den,B.den)));
|
|
300
|
+
}
|
|
301
|
+
example
|
|
302
|
+
{ "EXAMPLE:";
|
|
303
|
+
ring r=31991,(x,y,z),dp;
|
|
304
|
+
ideal I = y^2*z - x*(x-z)*(x+3*z);
|
|
305
|
+
qring Q = std(I);
|
|
306
|
+
divisor A = makeDivisor(ideal(x,z),ideal(1));
|
|
307
|
+
divisor B = makeDivisor(ideal(x,y),ideal(1));
|
|
308
|
+
divisor D = (A+B)+multdivisor(-1,B);
|
|
309
|
+
isEqualDivisor(A,D);
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
static proc purify1(ideal I)
|
|
314
|
+
{
|
|
315
|
+
I = simplify(I,2);
|
|
316
|
+
if (I[1]==0){ERROR("expected a non-zero ideal");}
|
|
317
|
+
ideal f = I[1];
|
|
318
|
+
return(minbase(quotient(f,quotient(f,I))));
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
static proc basis(ideal I,int d)
|
|
323
|
+
{
|
|
324
|
+
I=simplify(jet(intersect(I,maxideal(d)),d),2);
|
|
325
|
+
return(I)}
|
|
326
|
+
|
|
327
|
+
//basis(ideal(x,y^3),2);
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
proc globalSections(divisor D)
|
|
331
|
+
"USAGE: globalSections(A); A = divisor.@*
|
|
332
|
+
ASSUME: A is a divisor on X.
|
|
333
|
+
RETURN: a list with a basis of the space of global sections of D.
|
|
334
|
+
THEORY: We assume that the qring of X satisfies the S2-condition and that X is smooth. We compute sat((f*J) : I) /f
|
|
335
|
+
where D = (I)-(J).
|
|
336
|
+
KEYWORDS: divisors
|
|
337
|
+
EXAMPLE: example globalSections; shows an example
|
|
338
|
+
"
|
|
339
|
+
{
|
|
340
|
+
poly f =(simplify(D.num,2))[1];
|
|
341
|
+
ideal LD = basis(purify1(quotient(f*D.den,D.num)),deg(f));
|
|
342
|
+
list L = simplify(LD,2),f;
|
|
343
|
+
return(L);
|
|
344
|
+
}
|
|
345
|
+
example
|
|
346
|
+
{ "EXAMPLE:";
|
|
347
|
+
ring r=31991,(x,y,z),dp;
|
|
348
|
+
ideal I = y^2*z - x*(x-z)*(x+3*z);
|
|
349
|
+
qring Q = std(I);
|
|
350
|
+
divisor P = makeDivisor(ideal(x,z),ideal(1));
|
|
351
|
+
divisor D = multdivisor(4,P);
|
|
352
|
+
globalSections(D);
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
static proc sectionIdeal(poly f, poly g, divisor D){
|
|
357
|
+
return(purify1(quotient(quotient(f*D.num,g), D.den)));
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
proc degreeDivisor(divisor A)
|
|
361
|
+
"USAGE: degreeDivisor(A); A = divisor.@*
|
|
362
|
+
ASSUME: A is a divisor on X.
|
|
363
|
+
RETURN: The degree of A.
|
|
364
|
+
THEORY: We compute difference of the degrees of the numerator and denominator ideals.
|
|
365
|
+
KEYWORDS: divisors
|
|
366
|
+
EXAMPLE: example degreeDivisor; shows an example
|
|
367
|
+
"
|
|
368
|
+
{
|
|
369
|
+
return( mult(std(A.num))-mult(std(A.den)));
|
|
370
|
+
}
|
|
371
|
+
example
|
|
372
|
+
{ "EXAMPLE:";
|
|
373
|
+
ring r=31991,(x,y,z),dp;
|
|
374
|
+
ideal I = y^2*z - x*(x-z)*(x+3*z);
|
|
375
|
+
qring Q = std(I);
|
|
376
|
+
divisor P = makeDivisor(ideal(x,z),ideal(1));
|
|
377
|
+
degreeDivisor(P);
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
proc linearlyEquivalent(divisor A, divisor B)
|
|
381
|
+
"USAGE: linearlyEquivalent(A,B); A = divisor, B = divisor.@*
|
|
382
|
+
ASSUME: A and B are divisors on X.
|
|
383
|
+
RETURN: list if A and B a linearly equivalent and int 0 otherwise.
|
|
384
|
+
THEORY: Checks whether A-B is principle. If yes, returns a list L=(f,g) where
|
|
385
|
+
A - B = (f/g).
|
|
386
|
+
KEYWORDS: divisors
|
|
387
|
+
EXAMPLE: example linearlyEquivalent; shows an example
|
|
388
|
+
"
|
|
389
|
+
{
|
|
390
|
+
divisor F = normalFormDivisor(divisorplus(A,negativedivisor(B)));
|
|
391
|
+
list LB = globalSections(F);
|
|
392
|
+
if (size(LB[1])!=1) {return(0);}
|
|
393
|
+
ideal V = sectionIdeal(LB[1][1,1],LB[2],F);
|
|
394
|
+
if (isEqualIdeal(V,ideal(1))==1) {return(list(LB[1][1,1],LB[2]));}
|
|
395
|
+
return(0);
|
|
396
|
+
}
|
|
397
|
+
example
|
|
398
|
+
{ "EXAMPLE:";
|
|
399
|
+
ring r=31991,(x,y,z),dp;
|
|
400
|
+
ideal I = y^2*z - x*(x-z)*(x+3*z);
|
|
401
|
+
qring Q = std(I);
|
|
402
|
+
divisor A = makeDivisor(ideal(x,z),ideal(1));
|
|
403
|
+
divisor B = makeDivisor(ideal(x,y),ideal(1));
|
|
404
|
+
linearlyEquivalent(A,B);
|
|
405
|
+
linearlyEquivalent(multdivisor(2,A),multdivisor(2,B));
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
proc effective(divisor A)
|
|
410
|
+
"USAGE: effective(A); A = divisor.@*
|
|
411
|
+
ASSUME: A is a divisor on X which is linearly equivalent to an effective divisor.
|
|
412
|
+
RETURN: divisor on X.
|
|
413
|
+
THEORY: We compute an effective divisor linearly equivalent to A.
|
|
414
|
+
KEYWORDS: divisors
|
|
415
|
+
EXAMPLE: example effective; shows an example
|
|
416
|
+
"
|
|
417
|
+
{
|
|
418
|
+
list LB = globalSections(A);
|
|
419
|
+
if (size(LB[1])==0) {ERROR("the divisor is not linearly equivalent to an effective divisor");}
|
|
420
|
+
ideal V = sectionIdeal(LB[1][1,1],LB[2],A);
|
|
421
|
+
return(makeDivisor(V,ideal(1)));
|
|
422
|
+
}
|
|
423
|
+
example
|
|
424
|
+
{ "EXAMPLE:";
|
|
425
|
+
ring r=31991,(x,y,z),dp;
|
|
426
|
+
ideal I = y^2*z - x*(x-z)*(x+3*z);
|
|
427
|
+
qring Q = std(I);
|
|
428
|
+
divisor A = makeDivisor(ideal(x,z),ideal(1));
|
|
429
|
+
divisor B = makeDivisor(ideal(x,y),ideal(1));
|
|
430
|
+
divisor D = divisorplus(multdivisor(2,B),negativedivisor(A));
|
|
431
|
+
effective(D);
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
437
|
+
// formal sums of divisors
|
|
438
|
+
|
|
439
|
+
proc makeFormalDivisor(list L)
|
|
440
|
+
"USAGE: makeFormalDivisor(L); L = list.@*
|
|
441
|
+
ASSUME: L is a list of tuples of an integer and a divisor.
|
|
442
|
+
RETURN: a formal divisor on X
|
|
443
|
+
THEORY: Represents an integer formal sum of divisors.
|
|
444
|
+
KEYWORDS: divisors
|
|
445
|
+
EXAMPLE: example makeFormalDivisor; shows an example
|
|
446
|
+
"
|
|
447
|
+
{
|
|
448
|
+
formaldivisor C;
|
|
449
|
+
C.summands = L;
|
|
450
|
+
return(C);
|
|
451
|
+
}
|
|
452
|
+
example
|
|
453
|
+
{ "EXAMPLE:";
|
|
454
|
+
ring r=31991,(x,y,z),dp;
|
|
455
|
+
ideal I = y^2*z - x*(x-z)*(x+3*z);
|
|
456
|
+
qring Q = std(I);
|
|
457
|
+
divisor A = makeDivisor(ideal(x,z),ideal(1));
|
|
458
|
+
divisor B = makeDivisor(ideal(x,y),ideal(1));
|
|
459
|
+
makeFormalDivisor(list(list(-5,A),list(2,B)));
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
|
|
463
|
+
proc evaluateFormalDivisor(formaldivisor D)
|
|
464
|
+
"USAGE: evaluateFormalDivisor(D); D = formal divisor.@*
|
|
465
|
+
ASSUME: D is a formal divisor on X.
|
|
466
|
+
RETURN: a divisor on X
|
|
467
|
+
THEORY: Will evaluate the formal sum.
|
|
468
|
+
KEYWORDS: divisors
|
|
469
|
+
EXAMPLE: example evaluateFormalDivisor; shows an example
|
|
470
|
+
"
|
|
471
|
+
{
|
|
472
|
+
list L = D.summands;
|
|
473
|
+
if (size(L)==0) {return(makeDivisor(ideal(1),ideal(1)));}
|
|
474
|
+
int i;
|
|
475
|
+
divisor E = multdivisor(L[1][1],L[1][2]);
|
|
476
|
+
for ( i=2; i <= size(L); i++ )
|
|
477
|
+
{
|
|
478
|
+
E = divisorplus(E, multdivisor(L[i][1],L[i][2]));
|
|
479
|
+
}
|
|
480
|
+
return(E);
|
|
481
|
+
}
|
|
482
|
+
example
|
|
483
|
+
{ "EXAMPLE:";
|
|
484
|
+
ring r=31991,(x,y,z),dp;
|
|
485
|
+
ideal I = y^2*z - x*(x-z)*(x+3*z);
|
|
486
|
+
qring Q = std(I);
|
|
487
|
+
divisor A = makeDivisor(ideal(x,z),ideal(1));
|
|
488
|
+
divisor B = makeDivisor(ideal(x,y),ideal(1));
|
|
489
|
+
formaldivisor fE= makeFormalDivisor(list(list(-5,A),list(2,B)));
|
|
490
|
+
evaluateFormalDivisor(fE);
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
|
|
494
|
+
|
|
495
|
+
static proc position(divisor I,list L){
|
|
496
|
+
int i;
|
|
497
|
+
for (i=1; i <=size(L); i++){
|
|
498
|
+
if (isEqualDivisor(I,L[i][2])==1) {return(i);}
|
|
499
|
+
}
|
|
500
|
+
return(0);}
|
|
501
|
+
|
|
502
|
+
|
|
503
|
+
proc formaldivisorplus(formaldivisor A, formaldivisor B)
|
|
504
|
+
"USAGE: formaldivisorplus(A ,B); A + B; A = formaldivisor, B = formaldivisor. @*
|
|
505
|
+
ASSUME: A and B are formal divisors on X.
|
|
506
|
+
RETURN: a formal divisor on X
|
|
507
|
+
THEORY: The procedure will add the formal sums.
|
|
508
|
+
KEYWORDS: divisors
|
|
509
|
+
EXAMPLE: example formaldivisorplus; shows an example
|
|
510
|
+
"
|
|
511
|
+
{
|
|
512
|
+
formaldivisor C;
|
|
513
|
+
int i,p;
|
|
514
|
+
int j=1;
|
|
515
|
+
list L;
|
|
516
|
+
list LA=A.summands;
|
|
517
|
+
list LB=B.summands;
|
|
518
|
+
for (i=1; i<=size(LA);i++){
|
|
519
|
+
p=position(LA[i][2],L);
|
|
520
|
+
if (p==0) {
|
|
521
|
+
L[j]=list();
|
|
522
|
+
L[j][2]=LA[i][2];
|
|
523
|
+
L[j][1]=LA[i][1];
|
|
524
|
+
j=j+1;
|
|
525
|
+
} else {
|
|
526
|
+
L[p][1]=L[p][1]+LA[i][1];
|
|
527
|
+
};
|
|
528
|
+
}
|
|
529
|
+
for (i=1; i<=size(LB);i++){
|
|
530
|
+
p=position(LB[i][2],L);
|
|
531
|
+
if (p==0) {
|
|
532
|
+
L[j]=list();
|
|
533
|
+
L[j][2]=LB[i][2];
|
|
534
|
+
L[j][1]=LB[i][1];
|
|
535
|
+
j=j+1;
|
|
536
|
+
} else {
|
|
537
|
+
L[p][1]=L[p][1]+LB[i][1];
|
|
538
|
+
};
|
|
539
|
+
}
|
|
540
|
+
//C.summands = (A.summands)+(B.summands);
|
|
541
|
+
return(L);
|
|
542
|
+
}
|
|
543
|
+
example
|
|
544
|
+
{ "EXAMPLE:";
|
|
545
|
+
ring r=31991,(x,y,z),dp;
|
|
546
|
+
ideal I = y^2*z - x*(x-z)*(x+3*z);
|
|
547
|
+
qring Q = std(I);
|
|
548
|
+
divisor A = makeDivisor(ideal(x,z),ideal(1));
|
|
549
|
+
divisor B = makeDivisor(ideal(x,y),ideal(1));
|
|
550
|
+
divisor C = makeDivisor(ideal(x-z,y),ideal(1));
|
|
551
|
+
formaldivisor fE= makeFormalDivisor(list(list(-5,A),list(2,B)));
|
|
552
|
+
formaldivisor fE2= makeFormalDivisor(list(list(-5,A),list(2,C)));
|
|
553
|
+
formaldivisorplus(fE,fE2);
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
|
|
557
|
+
proc degreeFormalDivisor(formaldivisor A)
|
|
558
|
+
"USAGE: degreeFormalDivisor(A); A = formaldivisor.@*
|
|
559
|
+
ASSUME: A is a formaldivisor on X.
|
|
560
|
+
RETURN: The degree of A.
|
|
561
|
+
THEORY: We compute degrees of the summands and return the weighted sum.
|
|
562
|
+
KEYWORDS: divisors
|
|
563
|
+
EXAMPLE: example degreeFormalDivisor; shows an example
|
|
564
|
+
"
|
|
565
|
+
{
|
|
566
|
+
int i,s;
|
|
567
|
+
list L = A.summands;
|
|
568
|
+
for (i=1;i<=size(L);i++){
|
|
569
|
+
s=s+L[i][1]*degreeDivisor(L[i][2]);
|
|
570
|
+
}
|
|
571
|
+
return(s);
|
|
572
|
+
}
|
|
573
|
+
example
|
|
574
|
+
{ "EXAMPLE:";
|
|
575
|
+
ring r=31991,(x,y,z),dp;
|
|
576
|
+
ideal I = y^2*z - x*(x-z)*(x+3*z);
|
|
577
|
+
qring Q = std(I);
|
|
578
|
+
divisor A = makeDivisor(ideal(x,z),ideal(1));
|
|
579
|
+
divisor B = makeDivisor(ideal(x,y),ideal(1));
|
|
580
|
+
formaldivisor fE= makeFormalDivisor(list(list(-5,A),list(2,B)));
|
|
581
|
+
degreeFormalDivisor(fE);
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
|
|
585
|
+
proc multformaldivisor(int n,formaldivisor A)
|
|
586
|
+
"USAGE: multformaldivisor(n ,A); A*n; n = integer, A = formaldivisor.@*
|
|
587
|
+
ASSUME: n is an integer and A is a formal divisor on X.
|
|
588
|
+
RETURN: a formal divisor on X
|
|
589
|
+
THEORY: The procedure will multiply the formal sum with n.
|
|
590
|
+
KEYWORDS: divisors
|
|
591
|
+
EXAMPLE: example multformaldivisor; shows an example
|
|
592
|
+
"
|
|
593
|
+
{
|
|
594
|
+
formaldivisor B;
|
|
595
|
+
list L=A.summands;
|
|
596
|
+
int i;
|
|
597
|
+
for (i=1;i<=size(L);i++){
|
|
598
|
+
L[i][1]=n*L[i][1];
|
|
599
|
+
}
|
|
600
|
+
B.summands=L;
|
|
601
|
+
return(B);
|
|
602
|
+
}
|
|
603
|
+
example
|
|
604
|
+
{ "EXAMPLE:";
|
|
605
|
+
ring r=31991,(x,y,z),dp;
|
|
606
|
+
ideal I = y^2*z - x*(x-z)*(x+3*z);
|
|
607
|
+
qring Q = std(I);
|
|
608
|
+
divisor A = makeDivisor(ideal(x,z),ideal(1));
|
|
609
|
+
divisor B = makeDivisor(ideal(x,y),ideal(1));
|
|
610
|
+
formaldivisor fE= makeFormalDivisor(list(list(-5,A),list(2,B)));
|
|
611
|
+
fE*2;
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
|
|
615
|
+
/***
|
|
616
|
+
* For operator overloading, which needs a procedure which takes a divisor first
|
|
617
|
+
* and integer second.
|
|
618
|
+
**/
|
|
619
|
+
proc proxymultformaldivisor(formaldivisor A, int n)
|
|
620
|
+
{
|
|
621
|
+
formaldivisor B;
|
|
622
|
+
list L=A.summands;
|
|
623
|
+
int i;
|
|
624
|
+
for (i=1;i<=size(L);i++){
|
|
625
|
+
L[i][1]=n*L[i][1];
|
|
626
|
+
}
|
|
627
|
+
B.summands=L;
|
|
628
|
+
return(B);
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
|
|
632
|
+
|
|
633
|
+
proc negativeformaldivisor(formaldivisor A)
|
|
634
|
+
"USAGE: negativeformaldivisor(A); A = formaldivisor.@*
|
|
635
|
+
ASSUME: A is a formaldivisor on X.
|
|
636
|
+
RETURN: a formal divisor on X
|
|
637
|
+
THEORY: The procedure will change the signs of the coefficients.
|
|
638
|
+
KEYWORDS: divisors
|
|
639
|
+
EXAMPLE: example negativeformaldivisor; shows an example
|
|
640
|
+
"
|
|
641
|
+
{
|
|
642
|
+
formaldivisor B;
|
|
643
|
+
list L=A.summands;
|
|
644
|
+
int i;
|
|
645
|
+
for (i=1;i<=size(L);i++){
|
|
646
|
+
L[i][1]=-L[i][1];
|
|
647
|
+
}
|
|
648
|
+
B.summands=L;
|
|
649
|
+
return(B);
|
|
650
|
+
}
|
|
651
|
+
example
|
|
652
|
+
{ "EXAMPLE:";
|
|
653
|
+
ring r=31991,(x,y,z),dp;
|
|
654
|
+
ideal I = y^2*z - x*(x-z)*(x+3*z);
|
|
655
|
+
qring Q = std(I);
|
|
656
|
+
divisor A = makeDivisor(ideal(x,z),ideal(1));
|
|
657
|
+
divisor B = makeDivisor(ideal(x,y),ideal(1));
|
|
658
|
+
formaldivisor fE= makeFormalDivisor(list(list(-5,A),list(2,B)));
|
|
659
|
+
negativeformaldivisor(fE);
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
|
|
663
|
+
static proc primDecDivisor(divisor D)
|
|
664
|
+
"decompose a divisor into a formal divisor of primary divisors"
|
|
665
|
+
{
|
|
666
|
+
formaldivisor E;
|
|
667
|
+
ideal I = D.num;
|
|
668
|
+
ideal J = D.den;
|
|
669
|
+
list L;
|
|
670
|
+
int i;
|
|
671
|
+
int j = 1;
|
|
672
|
+
list LI = primdecGTZ(I);
|
|
673
|
+
for (i=1;i<=size(LI);i++){
|
|
674
|
+
LI[i][2];
|
|
675
|
+
L[j]=list(1,makeDivisor(LI[i][1],ideal(1)));
|
|
676
|
+
j=j+1;
|
|
677
|
+
};
|
|
678
|
+
list LJ = primdecGTZ(J);
|
|
679
|
+
for (i=1;i<=size(LJ);i++){
|
|
680
|
+
LJ[i][2];
|
|
681
|
+
L[j]=list(-1,makeDivisor(LJ[i][1],ideal(1)));
|
|
682
|
+
j=j+1;
|
|
683
|
+
};
|
|
684
|
+
E.summands=L;
|
|
685
|
+
return(E);}
|
|
686
|
+
|
|
687
|
+
|
|
688
|
+
|
|
689
|
+
|
|
690
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
691
|
+
// P-divisors
|
|
692
|
+
|
|
693
|
+
proc makePDivisor(list L)
|
|
694
|
+
"USAGE: makePDivisor(L); L = list.@*
|
|
695
|
+
ASSUME: L is a list of tuples of a integral polyhedron and a divisor such that
|
|
696
|
+
all polyhedra have the same tail cone.
|
|
697
|
+
RETURN: a pdivisor on X
|
|
698
|
+
THEORY: Represents an polyhedral formal sum of divisors.
|
|
699
|
+
KEYWORDS: divisors, polyhedra
|
|
700
|
+
EXAMPLE: example makePDivisor; shows an example
|
|
701
|
+
"
|
|
702
|
+
{
|
|
703
|
+
pdivisor P;
|
|
704
|
+
list CP = decomposePolyhedron(L[1][1]);
|
|
705
|
+
P.tail = CP[1];
|
|
706
|
+
list LP;
|
|
707
|
+
LP[1]=list(CP[2],L[1][2]);
|
|
708
|
+
int i;
|
|
709
|
+
for (i=2; i<=size(L);i++){
|
|
710
|
+
CP = decomposePolyhedron(L[i][1]);
|
|
711
|
+
if (!(CP[1]==P.tail)) {ERROR("All P-coefficients should have the same tail cone");}
|
|
712
|
+
LP[i]=list(CP[2],L[i][2]);
|
|
713
|
+
}
|
|
714
|
+
P.summands = LP;
|
|
715
|
+
return(P);
|
|
716
|
+
}
|
|
717
|
+
example
|
|
718
|
+
{ "EXAMPLE:";
|
|
719
|
+
ring r=31991,(x,y,z),dp;
|
|
720
|
+
ideal I = y^2*z - x*(x-z)*(x+3*z);
|
|
721
|
+
qring Q = std(I);
|
|
722
|
+
divisor A = makeDivisor(ideal(x,z),ideal(1));
|
|
723
|
+
divisor B = makeDivisor(ideal(x,y),ideal(1));
|
|
724
|
+
intmat M[4][4]= 1,4,0,0,
|
|
725
|
+
1,0,3,0,
|
|
726
|
+
0,0,0,2,
|
|
727
|
+
1,1,1,1;
|
|
728
|
+
polytope PP = polytopeViaPoints(M);
|
|
729
|
+
makePDivisor(list(list(PP,A),list(PP,B)));
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
static proc decomposePolyhedron(polytope P){
|
|
733
|
+
bigintmat rays = vertices(P);
|
|
734
|
+
bigintmat rays2 = rays;
|
|
735
|
+
int i,j;
|
|
736
|
+
for (i=1; i<=nrows(rays);i++){
|
|
737
|
+
if (rays[i,1]==1) {
|
|
738
|
+
for (j=1; j<=ncols(rays);j++){
|
|
739
|
+
rays[i,j]=0;
|
|
740
|
+
}
|
|
741
|
+
} else {
|
|
742
|
+
for (j=1; j<=ncols(rays);j++){
|
|
743
|
+
rays2[i,j]=0;
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
}
|
|
747
|
+
cone C = coneViaPoints(rays);
|
|
748
|
+
polytope C2 = polytopeViaPoints(rays2);
|
|
749
|
+
return(list(C,C2));
|
|
750
|
+
}
|