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,759 @@
|
|
|
1
|
+
////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
version="version nchomolog.lib 4.1.2.0 Feb_2019 "; // $Id: 94310a252aaa213111462822d4eee80be15423d0 $
|
|
3
|
+
category="Noncommutative";
|
|
4
|
+
info="
|
|
5
|
+
LIBRARY: nchomolog.lib Procedures for Noncommutative Homological Algebra
|
|
6
|
+
AUTHORS: Viktor Levandovskyy levandov@math.rwth-aachen.de,
|
|
7
|
+
@* Christian Schilli, christian.schilli@rwth-aachen.de,
|
|
8
|
+
@* Gerhard Pfister, pfister@mathematik.uni-kl.de
|
|
9
|
+
|
|
10
|
+
OVERVIEW: In this library we present tools of homological algebra for
|
|
11
|
+
finitely presented modules over GR-algebras.
|
|
12
|
+
|
|
13
|
+
PROCEDURES:
|
|
14
|
+
ncExt_R(k,M); computes presentation of Ext^k(M',R), M module, R basering, M'=coker(M)
|
|
15
|
+
ncHom(M,N); computes presentation of Hom(M',N'), M,N modules, M'=coker(M), N'=coker(N)
|
|
16
|
+
coHom(A,k); computes presentation of Hom(R^k,A), A matrix over basering R
|
|
17
|
+
contraHom(A,k); computes presentation of Hom(A,R^k), A matrix over basering R
|
|
18
|
+
dmodoublext(M, l); computes presentation of Ext_D^i(Ext_D^i(M,D),D), where D is a basering
|
|
19
|
+
is_cenBimodule(M); checks whether a module presented by M is Artin-centralizing
|
|
20
|
+
is_cenSubbimodule(M); checks whether a subbimodule M is Artin-centralizing
|
|
21
|
+
";
|
|
22
|
+
|
|
23
|
+
LIB "dmod.lib";
|
|
24
|
+
LIB "gkdim.lib";
|
|
25
|
+
LIB "involut.lib";
|
|
26
|
+
LIB "nctools.lib";
|
|
27
|
+
LIB "ncalg.lib";
|
|
28
|
+
LIB "central.lib";
|
|
29
|
+
|
|
30
|
+
// ncExt(k,M,N); Ext^k(M',N'), M,N modules, M'=coker(M), N'=coker(N)
|
|
31
|
+
// ncTensorMod(M,N); Tensor product of modules M'=coker(M), N'=coker(N)
|
|
32
|
+
// ncTor(k,M,N); Tor_k(M',N'), M,N modules, M'=coker(M), N'=coker(N)
|
|
33
|
+
// tensorMaps(M,N); tensor product of matrices
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
/* LOG:
|
|
37
|
+
5.12.2012, VL: cleanup, is_cenSubbimodule and is_cenBimodule are added for assume checks;
|
|
38
|
+
added doc for contraHom and coHom; assume check for ncHom etc.
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
/* TODO:
|
|
42
|
+
add noncomm examples to important procedures ncHom,
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
proc contraHom(matrix M, int s)
|
|
46
|
+
"USAGE: contraHom(A,k); A matrix, k int
|
|
47
|
+
RETURN: matrix
|
|
48
|
+
PURPOSE: compute the matrix of a homomorphism Hom(A,R^k), where R is the basering. Let A be a matrix defining a map F1-->F2 of free R-modules, then the matrix of Hom(F2,R^k)-->Hom(F1,R^k) is computed.
|
|
49
|
+
NOTE: if A is matrix of a left (resp. right) R-module homomorphism, then Hom(A,R^k) is a right (resp. left) R-module R-module homomorphism
|
|
50
|
+
EXAMPLE: example contraHom; shows an example.
|
|
51
|
+
"
|
|
52
|
+
{
|
|
53
|
+
// also possible: compute with kontrahom from homolog_lib
|
|
54
|
+
// and warn that the module changes its side
|
|
55
|
+
int n,m=ncols(M),nrows(M);
|
|
56
|
+
int a,b,c;
|
|
57
|
+
matrix R[s*n][s*m];
|
|
58
|
+
for(b=1; b<=m; b++)
|
|
59
|
+
{
|
|
60
|
+
for(a=1; a<=s; a++)
|
|
61
|
+
{
|
|
62
|
+
for(c=1; c<=n; c++)
|
|
63
|
+
{
|
|
64
|
+
R[(a-1)*n+c,(a-1)*m+b] = M[b,c];
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return(R);
|
|
69
|
+
}
|
|
70
|
+
example
|
|
71
|
+
{ "EXAMPLE:"; echo = 2;
|
|
72
|
+
ring A=0,(x,y,z),dp;
|
|
73
|
+
matrix M[3][3]=1,2,3,
|
|
74
|
+
4,5,6,
|
|
75
|
+
7,8,9;
|
|
76
|
+
module cM = contraHom(M,2);
|
|
77
|
+
print(cM);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
proc coHom(matrix M, int s)
|
|
81
|
+
"USAGE: coHom(A,k); A matrix, k int
|
|
82
|
+
PURPOSE: compute the matrix of a homomorphism Hom(R^k,A), where R is the basering. Let A be a matrix defining a map F1-->F2 of free R-modules, then the matrix of Hom(R^k,F1)-->Hom(R^k,F2) is computed.
|
|
83
|
+
NOTE: Both A and Hom(A,R^k) are matrices for either left or right R-module homomorphisms
|
|
84
|
+
EXAMPLE: example coHom; shows an example.
|
|
85
|
+
"
|
|
86
|
+
{
|
|
87
|
+
int n,m=ncols(M),nrows(M);
|
|
88
|
+
int a,b,c;
|
|
89
|
+
matrix R[s*m][s*n];
|
|
90
|
+
for(b=1; b<=s; b++)
|
|
91
|
+
{
|
|
92
|
+
for(a=1; a<=m; a++)
|
|
93
|
+
{
|
|
94
|
+
for(c=1; c<=n; c++)
|
|
95
|
+
{
|
|
96
|
+
R[(a-1)*s+b,(c-1)*s+b] = M[a,c];
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return(R);
|
|
101
|
+
}
|
|
102
|
+
example
|
|
103
|
+
{ "EXAMPLE:"; echo = 2;
|
|
104
|
+
ring A=0,(x,y,z),dp;
|
|
105
|
+
matrix M[3][3]=1,2,3,
|
|
106
|
+
4,5,6,
|
|
107
|
+
7,8,9;
|
|
108
|
+
module cM = coHom(M,2);
|
|
109
|
+
print(cM);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
proc ncHom(matrix M, matrix N)
|
|
114
|
+
"USAGE: ncHom(M,N); M,N modules
|
|
115
|
+
COMPUTE: A presentation of Hom(M',N'), M'=coker(M), N'=coker(N)
|
|
116
|
+
ASSUME: M' is a left module, N' is a centralizing bimodule
|
|
117
|
+
NOTE: ncHom(M,N) is a right module, hence a right presentation matrix
|
|
118
|
+
is returned
|
|
119
|
+
EXAMPLE: example ncHom; shows examples
|
|
120
|
+
"
|
|
121
|
+
{
|
|
122
|
+
// assume: M is left module; nothing to check
|
|
123
|
+
// assume: N is centralizing bimodule: to check
|
|
124
|
+
if ( !is_cenBimodule(N) )
|
|
125
|
+
{
|
|
126
|
+
ERROR("Second module in not centralizing.");
|
|
127
|
+
}
|
|
128
|
+
// returns a right presentation matrix (for a right module)
|
|
129
|
+
matrix F = contraHom(M,nrows(N));
|
|
130
|
+
matrix B = coHom(N,ncols(M));
|
|
131
|
+
matrix C = coHom(N,nrows(M));
|
|
132
|
+
def Rbase = basering;
|
|
133
|
+
def Rop = opposite(Rbase);
|
|
134
|
+
setring Rop;
|
|
135
|
+
matrix Bop = oppose(Rbase, B);
|
|
136
|
+
matrix Cop = oppose(Rbase, C);
|
|
137
|
+
matrix Fop = oppose(Rbase, F);
|
|
138
|
+
matrix Dop = modulo(Fop, Bop);
|
|
139
|
+
matrix Eop = modulo(Dop, Cop);
|
|
140
|
+
setring Rbase;
|
|
141
|
+
matrix E = oppose(Rop, Eop);
|
|
142
|
+
kill Rop;
|
|
143
|
+
return(E);
|
|
144
|
+
}
|
|
145
|
+
example
|
|
146
|
+
{ "EXAMPLE:"; echo = 2;
|
|
147
|
+
ring A=0,(x,y,z),dp;
|
|
148
|
+
matrix M[3][3]=1,2,3,
|
|
149
|
+
4,5,6,
|
|
150
|
+
7,8,9;
|
|
151
|
+
matrix N[2][2]=x,y,
|
|
152
|
+
z,0;
|
|
153
|
+
module H = ncHom(M,N);
|
|
154
|
+
print(H);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
proc ncHom_alt(matrix M, matrix N)
|
|
158
|
+
{
|
|
159
|
+
// shorter but potentially slower
|
|
160
|
+
matrix F = contraHom(M,nrows(N)); // \varphi^*
|
|
161
|
+
matrix B = coHom(N,ncols(M)); // i
|
|
162
|
+
matrix C = coHom(N,nrows(M)); // j
|
|
163
|
+
matrix D = rightModulo(F,B); // D
|
|
164
|
+
matrix E = rightModulo(D,C); // Hom(M,N)
|
|
165
|
+
return(E);
|
|
166
|
+
}
|
|
167
|
+
example
|
|
168
|
+
{ "EXAMPLE:"; echo = 2;
|
|
169
|
+
ring A=0,(x,y,z),dp;
|
|
170
|
+
matrix M[3][3]=1,2,3,
|
|
171
|
+
4,5,6,
|
|
172
|
+
7,8,9;
|
|
173
|
+
matrix N[2][2]=x,y,
|
|
174
|
+
z,0;
|
|
175
|
+
module H = ncHom_alt(M,N);
|
|
176
|
+
print(H);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
proc ncHom_R(matrix M)
|
|
180
|
+
"USAGE: ncHom_R(M); M a module
|
|
181
|
+
COMPUTE: A presentation of Hom_R(M',R), M'=coker(M)
|
|
182
|
+
ASSUME: M' is a left module
|
|
183
|
+
NOTE: ncHom_R(M) is a right module, hence a right presentation matrix is returned
|
|
184
|
+
EXAMPLE: example ncHom_R; shows examples
|
|
185
|
+
"
|
|
186
|
+
{
|
|
187
|
+
// assume: M is left module
|
|
188
|
+
// returns a right presentation matrix
|
|
189
|
+
// for a right module
|
|
190
|
+
matrix F = transpose(M);
|
|
191
|
+
def Rbase = basering;
|
|
192
|
+
def Rop = opposite(Rbase);
|
|
193
|
+
setring Rop;
|
|
194
|
+
matrix Fop = oppose(Rbase, F);
|
|
195
|
+
matrix Dop = modulo(Fop, std(0)); //ker Hom(A^n,A) -> Hom(A^m,A)
|
|
196
|
+
matrix Eop = modulo(Dop, std(0)); // its presentation
|
|
197
|
+
setring Rbase;
|
|
198
|
+
matrix E = oppose(Rop, Eop);
|
|
199
|
+
kill Rop;
|
|
200
|
+
return(E);
|
|
201
|
+
}
|
|
202
|
+
example
|
|
203
|
+
{ "EXAMPLE:"; echo = 2;
|
|
204
|
+
ring A=0,(x,t,dx,dt),dp;
|
|
205
|
+
def W = Weyl(); setring W;
|
|
206
|
+
matrix M[2][2] =
|
|
207
|
+
dt, dx,
|
|
208
|
+
t*dx,x*dt;
|
|
209
|
+
module H = ncHom_R(M);
|
|
210
|
+
print(H);
|
|
211
|
+
matrix N[2][1] = x,dx;
|
|
212
|
+
H = ncHom_R(N);
|
|
213
|
+
print(H);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
proc is_cenBimodule(module M)
|
|
218
|
+
"USAGE: is_cenBimodule(M); M module
|
|
219
|
+
COMPUTE: 1, if a module, presented by M can be centralizing in the sense of Artin and 0 otherwise
|
|
220
|
+
NOTE: only one condition for centralizing factor module can be checked algorithmically
|
|
221
|
+
EXAMPLE: example is_cenBimodule; shows examples
|
|
222
|
+
"
|
|
223
|
+
{
|
|
224
|
+
// define in a ring R, for a module R: cen(M) ={ m in M: mr = rm for all r in R}
|
|
225
|
+
// according to the definition, M is a centralizing bimodule <=> M is generated by cen(M)
|
|
226
|
+
// if basering R is a G-algebra, then prop 6.4 of BGV indicates it's enough to provide
|
|
227
|
+
// commutation of elements of M with the generators x_i of R
|
|
228
|
+
// prop 6.4 verbatim generalizes to R = R'/I for a twosided I.
|
|
229
|
+
// is M generates submodule, see the proc is_cenSubbimodule
|
|
230
|
+
// let M be a presentation matrix for P=R*/R*M, then [e_i + M]x_j=x_j[e_i+M]
|
|
231
|
+
// <=> Mx_j - x_jM in M must hold; thus forall j: Mx_j in M; thus M has to be
|
|
232
|
+
// closed from the right, that is to be a two-sided submodule indeed
|
|
233
|
+
// the rest of checks are complicated by now, so do the check only
|
|
234
|
+
// *the algorithm *//
|
|
235
|
+
if (isCommutative() ) { return(int(1));}
|
|
236
|
+
int n = nvars(basering);
|
|
237
|
+
int ans = 0;
|
|
238
|
+
int i,j;
|
|
239
|
+
vector P;
|
|
240
|
+
module N;
|
|
241
|
+
if ( attrib(M,"isSB") != 1)
|
|
242
|
+
{
|
|
243
|
+
N = std(M);
|
|
244
|
+
}
|
|
245
|
+
else
|
|
246
|
+
{
|
|
247
|
+
N = M;
|
|
248
|
+
}
|
|
249
|
+
// N is std(M) now
|
|
250
|
+
for(i=1; i<=ncols(M); i++)
|
|
251
|
+
{
|
|
252
|
+
P = M[i];
|
|
253
|
+
if (P!=0)
|
|
254
|
+
{
|
|
255
|
+
for(j=1; j<=n; j++)
|
|
256
|
+
{
|
|
257
|
+
if ( NF(P*var(j) - var(j)*P, N) != 0)
|
|
258
|
+
{
|
|
259
|
+
return(ans);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
ans = 1;
|
|
265
|
+
return(ans);
|
|
266
|
+
}
|
|
267
|
+
example
|
|
268
|
+
{ "EXAMPLE:"; echo = 2;
|
|
269
|
+
def A = makeUsl2(); setring A;
|
|
270
|
+
poly p = 4*e*f + h^2-2*h; // generator of the center
|
|
271
|
+
matrix M[2][2] = p, p^2-7,0,p*(p+1);
|
|
272
|
+
is_cenBimodule(M); // M is centralizing
|
|
273
|
+
matrix N[2][2] = p, e*f,h,p*(p+1);
|
|
274
|
+
is_cenBimodule(N); // N is not centralizing
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
proc is_cenSubbimodule(module M)
|
|
278
|
+
"USAGE: is_cenSubbimodule(M); M module
|
|
279
|
+
COMPUTE: 1, if a subbimodule, generated by the columns of M is
|
|
280
|
+
centralizing in the sense of Artin and 0 otherwise
|
|
281
|
+
EXAMPLE: example is_cenSubbimodule; shows examples
|
|
282
|
+
"
|
|
283
|
+
{
|
|
284
|
+
// note: M in R^m is centralizing subbimodule iff it is generated by vectors,
|
|
285
|
+
// each nonconstant component of which is central; 2 check: every entry of the
|
|
286
|
+
// matrix M is central
|
|
287
|
+
if (isCommutative()) { return(int(1));}
|
|
288
|
+
return( inCenter(ideal(matrix(M))) );
|
|
289
|
+
}
|
|
290
|
+
example
|
|
291
|
+
{ "EXAMPLE:"; echo = 2;
|
|
292
|
+
def A = makeUsl2(); setring A;
|
|
293
|
+
poly p = 4*e*f + h^2-2*h; // generator of the center
|
|
294
|
+
matrix M[2][2] = p, p^2-7,0,p*(p+1);
|
|
295
|
+
is_cenSubbimodule(M); // M is centralizing subbimodule
|
|
296
|
+
matrix N[2][2] = p, e*f,h,p*(p+1);
|
|
297
|
+
is_cenSubbimodule(N); // N is not centralizing subbimodule
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
proc ncExt(int i, matrix Ps, matrix Ph)
|
|
302
|
+
"USAGE: Ext(i,M,N); i int, M,N matrices
|
|
303
|
+
COMPUTE: A presentation of Ext^i(M',N'); for M'=coker(M) and N'=coker(N).
|
|
304
|
+
ASSUME: M' is a left module, N' is a centralizing bimodule
|
|
305
|
+
NOTE: ncExt(M,N) is a right module, hence a right presentation matrix
|
|
306
|
+
is returned
|
|
307
|
+
EXAMPLE: example ncExt; shows examples
|
|
308
|
+
"
|
|
309
|
+
{
|
|
310
|
+
if ( !is_cenBimodule(Ph) )
|
|
311
|
+
{
|
|
312
|
+
ERROR("Second module in not centralizing.");
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
if(i==0) { return(module(ncHom(Ps,Ph))); }
|
|
316
|
+
list Phi = mres(Ps,i+1);
|
|
317
|
+
module Im = coHom(Ph,ncols(Phi[i+1]));
|
|
318
|
+
module f = contraHom(matrix(Phi[i+1]),nrows(Ph));
|
|
319
|
+
module Im1 = coHom(Ph,ncols(Phi[i]));
|
|
320
|
+
module Im2 = contraHom(matrix(Phi[i]),nrows(Ph));
|
|
321
|
+
def Rbase = basering;
|
|
322
|
+
def Rop = opposite(Rbase);
|
|
323
|
+
setring Rop;
|
|
324
|
+
module fop = oppose(Rbase,f);
|
|
325
|
+
module Imop = oppose(Rbase,Im);
|
|
326
|
+
module Im1op = oppose(Rbase,Im1);
|
|
327
|
+
module Im2op = oppose(Rbase,Im2);
|
|
328
|
+
module ker_op = modulo(fop,Imop);
|
|
329
|
+
module ext_op = modulo(ker_op,Im1op+Im2op);
|
|
330
|
+
// ext = prune(ext);
|
|
331
|
+
// to be discussed and done prune_from_the_left
|
|
332
|
+
setring Rbase;
|
|
333
|
+
module ext = oppose(Rop,ext_op);
|
|
334
|
+
kill Rop;
|
|
335
|
+
return(ext);
|
|
336
|
+
}
|
|
337
|
+
example
|
|
338
|
+
{ "EXAMPLE:"; echo = 2;
|
|
339
|
+
ring R = 0,(x,y),dp;
|
|
340
|
+
ideal I = x2-y3;
|
|
341
|
+
qring S = std(I);
|
|
342
|
+
module M = [-x,y],[-y2,x];
|
|
343
|
+
module E1 = ncExt(1,M,M);
|
|
344
|
+
E1;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
proc ncExt_R(int i, matrix Ps)
|
|
348
|
+
"USAGE: ncExt_R(i, M); i int, M module
|
|
349
|
+
COMPUTE: a presentation of Ext^i(M',R); for M'=coker(M).
|
|
350
|
+
RETURN: right module Ext, a presentation of Ext^i(M',R)
|
|
351
|
+
EXAMPLE: example ncExt_R; shows an example
|
|
352
|
+
"{
|
|
353
|
+
if (i==0)
|
|
354
|
+
{
|
|
355
|
+
return(ncHom_R(Ps)); // the rest is not needed
|
|
356
|
+
}
|
|
357
|
+
list Phi = nres(Ps,i+1); // left resolution
|
|
358
|
+
module f = transpose(matrix(Phi[i+1])); // transp. because of Hom_R
|
|
359
|
+
module Im2 = transpose(matrix(Phi[i]));
|
|
360
|
+
def Rbase = basering;
|
|
361
|
+
def Rop = opposite(Rbase);
|
|
362
|
+
setring Rop;
|
|
363
|
+
module fop = oppose(Rbase,f);
|
|
364
|
+
module Im2op = oppose(Rbase,Im2);
|
|
365
|
+
module ker_op = modulo(fop,std(0));
|
|
366
|
+
module ext_op = modulo(ker_op,Im2op);
|
|
367
|
+
// ext = prune(ext);
|
|
368
|
+
// to be discussed and done prune_from_the_left
|
|
369
|
+
// necessary: compute SB!
|
|
370
|
+
// "Computing SB of Ext";
|
|
371
|
+
// option(redSB);
|
|
372
|
+
// option(redTail);
|
|
373
|
+
// ext_op = std(ext_op);
|
|
374
|
+
// int dimop = GKdim(ext_op);
|
|
375
|
+
// printf("Ext has dimension %s",dimop);
|
|
376
|
+
// if (dimop==0)
|
|
377
|
+
// {
|
|
378
|
+
// printf("of K-dimension %s",vdim(ext_op));
|
|
379
|
+
// }
|
|
380
|
+
setring Rbase;
|
|
381
|
+
module ext = oppose(Rop,ext_op); // a right module!
|
|
382
|
+
kill Rop;
|
|
383
|
+
return(ext);
|
|
384
|
+
}
|
|
385
|
+
example
|
|
386
|
+
{ "EXAMPLE:"; echo = 2;
|
|
387
|
+
ring R = 0,(x,y),dp;
|
|
388
|
+
poly F = x2-y2;
|
|
389
|
+
def A = annfs(F); setring A; // A is the 2nd Weyl algebra
|
|
390
|
+
matrix M[1][size(LD)] = LD; // ideal
|
|
391
|
+
print(M);
|
|
392
|
+
print(ncExt_R(1,M)); // hence the Ext^1 is zero
|
|
393
|
+
module E = ncExt_R(2,M); // define the right module E
|
|
394
|
+
print(E); // E is in the opposite algebra
|
|
395
|
+
def Aop = opposite(A); setring Aop;
|
|
396
|
+
module Eop = oppose(A,E);
|
|
397
|
+
module T1 = ncExt_R(2,Eop);
|
|
398
|
+
setring A;
|
|
399
|
+
module T1 = oppose(Aop,T1);
|
|
400
|
+
print(T1); // this is a left module Ext^2(Ext^2(M,A),A)
|
|
401
|
+
print(M); // it is known that M holonomic implies Ext^2(Ext^2(M,A),A) iso to M
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
proc nctors(matrix M)
|
|
405
|
+
{
|
|
406
|
+
// ext^1_A(adj(M),A)
|
|
407
|
+
def save = basering;
|
|
408
|
+
matrix MM = M; // left
|
|
409
|
+
def sop = opposite(save);
|
|
410
|
+
setring sop;
|
|
411
|
+
matrix MM = oppose(save,MM); // right
|
|
412
|
+
MM = transpose(MM); // transposed
|
|
413
|
+
list Phi = nres(MM,2); // i=1
|
|
414
|
+
module f = transpose(matrix(Phi[2])); // transp. because of Hom_R
|
|
415
|
+
module Im2 = transpose(matrix(Phi[1]));
|
|
416
|
+
setring save;
|
|
417
|
+
module fop = oppose(sop,f);
|
|
418
|
+
module Im2op = oppose(sop,Im2);
|
|
419
|
+
module ker_op = modulo(fop,std(0));
|
|
420
|
+
module ext_op = modulo(ker_op,Im2op);
|
|
421
|
+
// matrix E = ncExt_R(1,MM);
|
|
422
|
+
// setring save;
|
|
423
|
+
// matrix E = oppose(sop,E);
|
|
424
|
+
return(ext_op);
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
proc altExt_R(int i, matrix Ps, map Invo)
|
|
428
|
+
// TODO!!!!!!!!
|
|
429
|
+
// matrix Ph
|
|
430
|
+
// work thru Involutions;
|
|
431
|
+
{
|
|
432
|
+
if(i==0)
|
|
433
|
+
{ // return the formal adjoint
|
|
434
|
+
matrix Ret = transpose(Ps);
|
|
435
|
+
matrix Retop = involution(Ret, Invo);
|
|
436
|
+
// "Computing prune of Hom";
|
|
437
|
+
// Retop = prune(Retop);
|
|
438
|
+
// Retop = std(Retop);
|
|
439
|
+
return(Retop);
|
|
440
|
+
}
|
|
441
|
+
list Phi = mres(Ps,i+1);
|
|
442
|
+
// module Im = coHom(Ph,ncols(Phi[i+1]));
|
|
443
|
+
module f = transpose(matrix(Phi[i+1]));
|
|
444
|
+
f = involution(f, Invo);
|
|
445
|
+
//= contraHom(matrix(Phi[i+1]),nrows(Ph));
|
|
446
|
+
// module Im1 = coHom(Ph,ncols(Phi[i]));
|
|
447
|
+
module Im2 = transpose(matrix(Phi[i]));
|
|
448
|
+
Im2 = involution(Im2, Invo);
|
|
449
|
+
//contraHom(matrix(Phi[i]),nrows(Ph));
|
|
450
|
+
module ker_op = modulo(f,std(0));
|
|
451
|
+
module ext_op = modulo(ker_op,Im2);
|
|
452
|
+
// ext = prune(ext);
|
|
453
|
+
// to be discussed and done prune_from_the_left
|
|
454
|
+
// optionally: compute SB!
|
|
455
|
+
// "Computing prune of Ext";
|
|
456
|
+
ext_op = std(ext_op);
|
|
457
|
+
int dimop = GKdim(ext_op);
|
|
458
|
+
printf("Ext has dimension %s",dimop);
|
|
459
|
+
if (dimop==0)
|
|
460
|
+
{
|
|
461
|
+
printf("of K-dimension %s",vdim(ext_op));
|
|
462
|
+
}
|
|
463
|
+
module ext = involution(ext_op, Invo); // what about transpose?
|
|
464
|
+
return(ext);
|
|
465
|
+
}
|
|
466
|
+
example
|
|
467
|
+
{ "EXAMPLE:"; echo = 2;
|
|
468
|
+
ring R = 0,(x,y),dp;
|
|
469
|
+
ideal I = x2-y3;
|
|
470
|
+
qring S = std(I);
|
|
471
|
+
module M = [-x,y],[-y2,x];
|
|
472
|
+
module E1 = ncExt(2,M,M);
|
|
473
|
+
E1;
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
proc tensorMaps(matrix M, matrix N)
|
|
477
|
+
{
|
|
478
|
+
int r = ncols(M);
|
|
479
|
+
int s = nrows(M);
|
|
480
|
+
int p = ncols(N);
|
|
481
|
+
int q = nrows(N);
|
|
482
|
+
int a,b,c,d;
|
|
483
|
+
matrix R[s*q][r*p];
|
|
484
|
+
for(b=1;b<=p;b++)
|
|
485
|
+
{
|
|
486
|
+
for(d=1;d<=q;d++)
|
|
487
|
+
{
|
|
488
|
+
for(a=1;a<=r;a++)
|
|
489
|
+
{
|
|
490
|
+
for(c=1;c<=s;c++)
|
|
491
|
+
{
|
|
492
|
+
R[(c-1)*q+d,(a-1)*p+b]=M[c,a]*N[d,b];
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
return(R);
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
proc ncTensorMod(matrix Phi, matrix Psi)
|
|
501
|
+
{
|
|
502
|
+
int s=nrows(Phi);
|
|
503
|
+
int q=nrows(Psi);
|
|
504
|
+
matrix A=tensorMaps(unitmat(s),Psi); //I_s tensor Psi
|
|
505
|
+
matrix B=tensorMaps(Phi,unitmat(q)); //Phi tensor I_q
|
|
506
|
+
matrix R=concat(A,B); //sum of A and B
|
|
507
|
+
return(R);
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
proc ncTor(int i, matrix Ps, matrix Ph)
|
|
512
|
+
{
|
|
513
|
+
if(i==0) { return(module(ncTensorMod(Ps,Ph))); }
|
|
514
|
+
// the tensor product
|
|
515
|
+
list Phi = mres(Ph,i+1); // a resolution of Ph
|
|
516
|
+
module Im = tensorMaps(unitmat(nrows(Phi[i])),Ps);
|
|
517
|
+
module f = tensorMaps(matrix(Phi[i]),unitmat(nrows(Ps)));
|
|
518
|
+
module Im1 = tensorMaps(unitmat(ncols(Phi[i])),Ps);
|
|
519
|
+
module Im2 = tensorMaps(matrix(Phi[i+1]),unitmat(nrows(Ps)));
|
|
520
|
+
module ker = modulo(f,Im);
|
|
521
|
+
module tor = modulo(ker,Im1+Im2);
|
|
522
|
+
// tor = prune(tor);
|
|
523
|
+
return(tor);
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
|
|
527
|
+
static proc Hochschild()
|
|
528
|
+
{
|
|
529
|
+
ring A = 0,(x,y),dp;
|
|
530
|
+
ideal I = x2-y3;
|
|
531
|
+
qring B = std(I);
|
|
532
|
+
module M = [-x,y],[-y2,x];
|
|
533
|
+
ring C = 0,(x,y,z,w),dp; // x->z, y->w
|
|
534
|
+
ideal I = x2-y3,z3-w2;
|
|
535
|
+
qring Be = std(I); //the enveloping algebra
|
|
536
|
+
matrix AA[1][2] = x-z,y-w; //the presentation of the algebra B as Be-module
|
|
537
|
+
module MM = imap(B,M);
|
|
538
|
+
module E = ncExt(1,AA,MM);
|
|
539
|
+
print(E); //the presentation of the H^1(A,M)
|
|
540
|
+
|
|
541
|
+
ring A = 0,(x,y),dp;
|
|
542
|
+
ideal I = x2-y3;
|
|
543
|
+
qring B = std(I);
|
|
544
|
+
ring C = 0,(x,y,z,w),dp;
|
|
545
|
+
ideal I = x2-y3,z3-w2;
|
|
546
|
+
qring Be = std(I); //the enveloping algebra
|
|
547
|
+
matrix AA[1][2] = x-z,y-w; //the presentation of B as Be-module
|
|
548
|
+
matrix AAA[1][2] = z,w; // equivalent? pres. of B
|
|
549
|
+
print(ncExt(1,AA,AA)); //the presentation of the H^1(A,A)
|
|
550
|
+
print(ncExt(1,AAA,AAA));
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
static proc Lie()
|
|
554
|
+
{
|
|
555
|
+
// consider U(sl2)* U(sl2)^opp;
|
|
556
|
+
LIB "ncalg.lib";
|
|
557
|
+
ring A = 0,(e,f,h,H,F,E),Dp; // any degree ordering
|
|
558
|
+
int N = 6; // nvars(A);
|
|
559
|
+
matrix @D[N][N];
|
|
560
|
+
@D[1,2] = -h;
|
|
561
|
+
@D[1,3] = 2*e;
|
|
562
|
+
@D[2,3] = -2*f;
|
|
563
|
+
@D[4,5] = 2*F;
|
|
564
|
+
@D[4,6] = -2*E;
|
|
565
|
+
@D[5,6] = H;
|
|
566
|
+
def AA = nc_algebra(1,@D); setring AA;
|
|
567
|
+
ideal Q = E,F,H;
|
|
568
|
+
poly Z = 4*e*f+h^2-2*h; // center
|
|
569
|
+
poly Zo = 4*F*E+H^2+2*H; // center opposed
|
|
570
|
+
ideal Qe = Z,Zo;
|
|
571
|
+
//qring B = twostd(Qe);
|
|
572
|
+
//ideal T = e-E,f-F,h-H;
|
|
573
|
+
//ideal T2 = e-H,f-F,h-E;
|
|
574
|
+
//Q = twostd(Q); // U is U(sl2) as left U(sl2)* U(sl2)^opp -- module
|
|
575
|
+
matrix M[1][3] = E,F,H;
|
|
576
|
+
module X0 = ncExt(0,M,M);
|
|
577
|
+
print(X0);
|
|
578
|
+
|
|
579
|
+
module X1 = ncExt(1,M,M);
|
|
580
|
+
print(X1);
|
|
581
|
+
module X2 = ncExt(2,M,M); // equal to Tor^Z_1(K,K)
|
|
582
|
+
print(X2);
|
|
583
|
+
|
|
584
|
+
// compute Tor^Z_1(K,K)
|
|
585
|
+
ring r = 0,(z),dp;
|
|
586
|
+
ideal i = z;
|
|
587
|
+
matrix I[1][1]=z;
|
|
588
|
+
Tor(1,I,I);
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
|
|
592
|
+
proc AllExts(module N, list #)
|
|
593
|
+
// computes and shows everything
|
|
594
|
+
// assumes we are in the opposite
|
|
595
|
+
// and N is dual of some M
|
|
596
|
+
// if # is given, map Invo and Ext_Invo are used
|
|
597
|
+
{
|
|
598
|
+
int UseInvo = 0;
|
|
599
|
+
int sl = size(#);
|
|
600
|
+
if (sl >0)
|
|
601
|
+
{
|
|
602
|
+
ideal I = ideal(#[1]);
|
|
603
|
+
map Invo = basering, I;
|
|
604
|
+
UseInvo = 1;
|
|
605
|
+
"Using the involution";
|
|
606
|
+
}
|
|
607
|
+
int nv = nvars(basering);
|
|
608
|
+
int i,d;
|
|
609
|
+
module E;
|
|
610
|
+
list EE;
|
|
611
|
+
print("--- module:"); print(matrix(N));
|
|
612
|
+
for (i=1; i<=nv; i++)
|
|
613
|
+
{
|
|
614
|
+
if (UseInvo)
|
|
615
|
+
{
|
|
616
|
+
E = altExt_R(i,N,Invo);
|
|
617
|
+
}
|
|
618
|
+
else
|
|
619
|
+
{
|
|
620
|
+
E = ncExt_R(i,N);
|
|
621
|
+
}
|
|
622
|
+
printf("--- Ext %s",i);
|
|
623
|
+
print(matrix(E));
|
|
624
|
+
EE[i] = E;
|
|
625
|
+
}
|
|
626
|
+
return(E);
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
proc dmodualtest(module M, int n)
|
|
630
|
+
{
|
|
631
|
+
// computes the "dual" of the "dual" of a d-mod M
|
|
632
|
+
// where n is the half-number of vars of Weyl algebra
|
|
633
|
+
// assumed to be basering
|
|
634
|
+
// returns the difference between M and Ext^n_D(Ext^n_D(M,D),D)
|
|
635
|
+
def save = basering;
|
|
636
|
+
setring save;
|
|
637
|
+
module Md = ncExt_R(n,M); // right module
|
|
638
|
+
// would be nice to use "prune"!
|
|
639
|
+
// NO! prune performs left sided operations!!!
|
|
640
|
+
// Md = prune(Md);
|
|
641
|
+
// print(Md);
|
|
642
|
+
def saveop = opposite(save);
|
|
643
|
+
setring saveop;
|
|
644
|
+
module Mdop = oppose(save,Md); // left module
|
|
645
|
+
// here we're eligible to use prune
|
|
646
|
+
Mdop = prune(Mdop);
|
|
647
|
+
module Mopd = ncExt_R(n,Mdop); // right module
|
|
648
|
+
setring save;
|
|
649
|
+
module M2 = oppose(saveop,Mopd); // left module
|
|
650
|
+
M2 = prune(M2); // eligible since M2 is a left mod
|
|
651
|
+
M2 = groebner(M2);
|
|
652
|
+
ideal tst = M2 - M;
|
|
653
|
+
tst = groebner(tst);
|
|
654
|
+
return(tst);
|
|
655
|
+
}
|
|
656
|
+
example
|
|
657
|
+
{ "EXAMPLE:"; echo = 2;
|
|
658
|
+
ring R = 0,(x,y),dp;
|
|
659
|
+
poly F = x3-y2;
|
|
660
|
+
def A = annfs(F);
|
|
661
|
+
setring A;
|
|
662
|
+
dmodualtest(LD,2);
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
|
|
666
|
+
proc dmodoublext(module M, list #)
|
|
667
|
+
"USAGE: dmodoublext(M [,i]); M module, i optional int
|
|
668
|
+
COMPUTE: a presentation of Ext^i(Ext^i(M,D),D) for basering D
|
|
669
|
+
RETURN: left module
|
|
670
|
+
NOTE: by default, i is set to the integer part of the half of number of variables of D
|
|
671
|
+
@* for holonomic modules over Weyl algebra, the double ext is known to be holonomic left module
|
|
672
|
+
EXAMPLE: example dmodoublext; shows an example
|
|
673
|
+
"
|
|
674
|
+
{
|
|
675
|
+
// assume: basering is a Weyl algebra?
|
|
676
|
+
def save = basering;
|
|
677
|
+
setring save;
|
|
678
|
+
// if a list is nonempty and contains an integer N, n = N; otherwise n = nvars/2
|
|
679
|
+
int n;
|
|
680
|
+
if (size(#) > 0)
|
|
681
|
+
{
|
|
682
|
+
// if (typeof(#) == "int")
|
|
683
|
+
// {
|
|
684
|
+
n = int(#[1]);
|
|
685
|
+
// }
|
|
686
|
+
// else
|
|
687
|
+
// {
|
|
688
|
+
// ERROR("the optional argument expected to have type int");
|
|
689
|
+
// }
|
|
690
|
+
}
|
|
691
|
+
else
|
|
692
|
+
{
|
|
693
|
+
n = nvars(save); n = n div 2;
|
|
694
|
+
}
|
|
695
|
+
// returns Ext^i_D(Ext^i_D(M,D),D), that is
|
|
696
|
+
// computes the "dual" of the "dual" of a d-mod M (for n = nvars/2)
|
|
697
|
+
module Md = ncExt_R(n,M); // right module
|
|
698
|
+
// no prune yet!
|
|
699
|
+
def saveop = opposite(save);
|
|
700
|
+
setring saveop;
|
|
701
|
+
module Mdop = oppose(save,Md); // left module
|
|
702
|
+
// here we're eligible to use prune
|
|
703
|
+
Mdop = prune(Mdop);
|
|
704
|
+
module Mopd = ncExt_R(n,Mdop); // right module
|
|
705
|
+
setring save;
|
|
706
|
+
module M2 = oppose(saveop,Mopd); // left module
|
|
707
|
+
kill saveop;
|
|
708
|
+
M2 = prune(M2); // eligible since M2 is a left mod
|
|
709
|
+
def M3;
|
|
710
|
+
if (nrows(M2)==1)
|
|
711
|
+
{
|
|
712
|
+
M3 = ideal(M2);
|
|
713
|
+
}
|
|
714
|
+
else
|
|
715
|
+
{
|
|
716
|
+
M3 = M2;
|
|
717
|
+
}
|
|
718
|
+
M3 = groebner(M3);
|
|
719
|
+
return(M3);
|
|
720
|
+
}
|
|
721
|
+
example
|
|
722
|
+
{ "EXAMPLE:"; echo = 2;
|
|
723
|
+
ring R = 0,(x,y),dp;
|
|
724
|
+
poly F = x3-y2;
|
|
725
|
+
def A = annfs(F);
|
|
726
|
+
setring A;
|
|
727
|
+
dmodoublext(LD);
|
|
728
|
+
LD;
|
|
729
|
+
// fancier example:
|
|
730
|
+
setring A;
|
|
731
|
+
ideal I = Dx*(x2-y3),Dy*(x2-y3);
|
|
732
|
+
I = groebner(I);
|
|
733
|
+
print(dmodoublext(I,1));
|
|
734
|
+
print(dmodoublext(I,2));
|
|
735
|
+
}
|
|
736
|
+
|
|
737
|
+
static proc part_Ext_R(matrix M)
|
|
738
|
+
{
|
|
739
|
+
// if i==0
|
|
740
|
+
matrix Ret = transpose(Ps);
|
|
741
|
+
def Rbase = basering;
|
|
742
|
+
def Rop = opposite(Rbase);
|
|
743
|
+
setring Rop;
|
|
744
|
+
module Retop = oppose(Rbase,Ret);
|
|
745
|
+
module Hm = modulo(Retop,std(0)); // right kernel of transposed
|
|
746
|
+
// "Computing prune of Hom";
|
|
747
|
+
// Retop = prune(Retop);
|
|
748
|
+
// Retop = std(Retop);
|
|
749
|
+
setring Rbase;
|
|
750
|
+
Ret = oppose(Rop, Hm);
|
|
751
|
+
kill Rop;
|
|
752
|
+
return(Ret);
|
|
753
|
+
// some checkz:
|
|
754
|
+
// setring Rbase;
|
|
755
|
+
// ker_op is the right Kernel of f^t:
|
|
756
|
+
// module ker = oppose(Rop,ker_op);
|
|
757
|
+
// print(f*ker);
|
|
758
|
+
// module ext = oppose(Rop,ext_op);
|
|
759
|
+
}
|