passagemath-singular 10.6.31rc3__cp314-cp314-musllinux_1_2_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of passagemath-singular might be problematic. Click here for more details.
- PySingular.cpython-314-x86_64-linux-musl.so +0 -0
- passagemath_singular-10.6.31rc3.dist-info/METADATA +183 -0
- passagemath_singular-10.6.31rc3.dist-info/RECORD +493 -0
- passagemath_singular-10.6.31rc3.dist-info/WHEEL +5 -0
- passagemath_singular-10.6.31rc3.dist-info/top_level.txt +3 -0
- passagemath_singular.libs/libSingular-4-67059f19.4.1.so +0 -0
- passagemath_singular.libs/libcddgmp-30166d29.so.0.1.3 +0 -0
- passagemath_singular.libs/libfactory-4-9d37bcf4.4.1.so +0 -0
- passagemath_singular.libs/libflint-fd6f12fc.so.21.0.0 +0 -0
- passagemath_singular.libs/libgcc_s-0cd532bd.so.1 +0 -0
- passagemath_singular.libs/libgf2x-9e30c3e3.so.3.0.0 +0 -0
- passagemath_singular.libs/libgfortran-2c33b284.so.5.0.0 +0 -0
- passagemath_singular.libs/libgmp-0e7fc84e.so.10.5.0 +0 -0
- passagemath_singular.libs/libgsl-42cda06f.so.28.0.0 +0 -0
- passagemath_singular.libs/libmpfr-aaecbfc0.so.6.2.1 +0 -0
- passagemath_singular.libs/libncursesw-9c9e32c3.so.6.5 +0 -0
- passagemath_singular.libs/libntl-26885ca2.so.44.0.1 +0 -0
- passagemath_singular.libs/libomalloc-0-e9ff96db.9.6.so +0 -0
- passagemath_singular.libs/libopenblasp-r0-905cb27d.3.29.so +0 -0
- passagemath_singular.libs/libpolys-4-8bcf8e7d.4.1.so +0 -0
- passagemath_singular.libs/libquadmath-bb76a5fc.so.0.0.0 +0 -0
- passagemath_singular.libs/libreadline-06542304.so.8.2 +0 -0
- passagemath_singular.libs/libsingular_resources-4-73bf7623.4.1.so +0 -0
- passagemath_singular.libs/libstdc++-5d72f927.so.6.0.33 +0 -0
- sage/algebras/all__sagemath_singular.py +3 -0
- sage/algebras/fusion_rings/all.py +19 -0
- sage/algebras/fusion_rings/f_matrix.py +2448 -0
- sage/algebras/fusion_rings/fast_parallel_fmats_methods.cpython-314-x86_64-linux-musl.so +0 -0
- sage/algebras/fusion_rings/fast_parallel_fmats_methods.pxd +5 -0
- sage/algebras/fusion_rings/fast_parallel_fmats_methods.pyx +538 -0
- sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.cpython-314-x86_64-linux-musl.so +0 -0
- sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pxd +3 -0
- sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pyx +331 -0
- sage/algebras/fusion_rings/fusion_double.py +899 -0
- sage/algebras/fusion_rings/fusion_ring.py +1580 -0
- sage/algebras/fusion_rings/poly_tup_engine.cpython-314-x86_64-linux-musl.so +0 -0
- sage/algebras/fusion_rings/poly_tup_engine.pxd +24 -0
- sage/algebras/fusion_rings/poly_tup_engine.pyx +579 -0
- sage/algebras/fusion_rings/shm_managers.cpython-314-x86_64-linux-musl.so +0 -0
- sage/algebras/fusion_rings/shm_managers.pxd +24 -0
- sage/algebras/fusion_rings/shm_managers.pyx +780 -0
- sage/algebras/letterplace/all.py +1 -0
- sage/algebras/letterplace/free_algebra_element_letterplace.cpython-314-x86_64-linux-musl.so +0 -0
- sage/algebras/letterplace/free_algebra_element_letterplace.pxd +18 -0
- sage/algebras/letterplace/free_algebra_element_letterplace.pyx +755 -0
- sage/algebras/letterplace/free_algebra_letterplace.cpython-314-x86_64-linux-musl.so +0 -0
- sage/algebras/letterplace/free_algebra_letterplace.pxd +35 -0
- sage/algebras/letterplace/free_algebra_letterplace.pyx +914 -0
- sage/algebras/letterplace/letterplace_ideal.cpython-314-x86_64-linux-musl.so +0 -0
- sage/algebras/letterplace/letterplace_ideal.pyx +408 -0
- sage/algebras/quatalg/all.py +2 -0
- sage/algebras/quatalg/quaternion_algebra.py +4778 -0
- sage/algebras/quatalg/quaternion_algebra_cython.cpython-314-x86_64-linux-musl.so +0 -0
- sage/algebras/quatalg/quaternion_algebra_cython.pyx +261 -0
- sage/algebras/quatalg/quaternion_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
- sage/algebras/quatalg/quaternion_algebra_element.pxd +29 -0
- sage/algebras/quatalg/quaternion_algebra_element.pyx +2176 -0
- sage/all__sagemath_singular.py +11 -0
- sage/ext_data/all__sagemath_singular.py +1 -0
- sage/ext_data/singular/function_field/core.lib +98 -0
- sage/interfaces/all__sagemath_singular.py +1 -0
- sage/interfaces/singular.py +2835 -0
- sage/libs/all__sagemath_singular.py +1 -0
- sage/libs/singular/__init__.py +1 -0
- sage/libs/singular/decl.pxd +1168 -0
- sage/libs/singular/function.cpython-314-x86_64-linux-musl.so +0 -0
- sage/libs/singular/function.pxd +87 -0
- sage/libs/singular/function.pyx +1901 -0
- sage/libs/singular/function_factory.py +61 -0
- sage/libs/singular/groebner_strategy.cpython-314-x86_64-linux-musl.so +0 -0
- sage/libs/singular/groebner_strategy.pxd +22 -0
- sage/libs/singular/groebner_strategy.pyx +582 -0
- sage/libs/singular/option.cpython-314-x86_64-linux-musl.so +0 -0
- sage/libs/singular/option.pyx +671 -0
- sage/libs/singular/polynomial.cpython-314-x86_64-linux-musl.so +0 -0
- sage/libs/singular/polynomial.pxd +39 -0
- sage/libs/singular/polynomial.pyx +661 -0
- sage/libs/singular/ring.cpython-314-x86_64-linux-musl.so +0 -0
- sage/libs/singular/ring.pxd +58 -0
- sage/libs/singular/ring.pyx +893 -0
- sage/libs/singular/singular.cpython-314-x86_64-linux-musl.so +0 -0
- sage/libs/singular/singular.pxd +72 -0
- sage/libs/singular/singular.pyx +1944 -0
- sage/libs/singular/standard_options.py +145 -0
- sage/matrix/all__sagemath_singular.py +1 -0
- sage/matrix/matrix_mpolynomial_dense.cpython-314-x86_64-linux-musl.so +0 -0
- sage/matrix/matrix_mpolynomial_dense.pxd +7 -0
- sage/matrix/matrix_mpolynomial_dense.pyx +615 -0
- sage/rings/all__sagemath_singular.py +1 -0
- sage/rings/function_field/all__sagemath_singular.py +1 -0
- sage/rings/function_field/derivations_polymod.py +911 -0
- sage/rings/function_field/element_polymod.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/function_field/element_polymod.pyx +406 -0
- sage/rings/function_field/function_field_polymod.py +2611 -0
- sage/rings/function_field/ideal_polymod.py +1775 -0
- sage/rings/function_field/order_polymod.py +1475 -0
- sage/rings/function_field/place_polymod.py +681 -0
- sage/rings/polynomial/all__sagemath_singular.py +1 -0
- sage/rings/polynomial/multi_polynomial_ideal_libsingular.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/polynomial/multi_polynomial_ideal_libsingular.pxd +5 -0
- sage/rings/polynomial/multi_polynomial_ideal_libsingular.pyx +339 -0
- sage/rings/polynomial/multi_polynomial_libsingular.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/polynomial/multi_polynomial_libsingular.pxd +30 -0
- sage/rings/polynomial/multi_polynomial_libsingular.pyx +6277 -0
- sage/rings/polynomial/plural.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/polynomial/plural.pxd +48 -0
- sage/rings/polynomial/plural.pyx +3171 -0
- sage/symbolic/all__sagemath_singular.py +1 -0
- sage/symbolic/comparison_impl.pxi +428 -0
- sage/symbolic/constants_c_impl.pxi +178 -0
- sage/symbolic/expression.cpython-314-x86_64-linux-musl.so +0 -0
- sage/symbolic/expression.pxd +7 -0
- sage/symbolic/expression.pyx +14200 -0
- sage/symbolic/getitem_impl.pxi +202 -0
- sage/symbolic/pynac.pxi +572 -0
- sage/symbolic/pynac_constant_impl.pxi +133 -0
- sage/symbolic/pynac_function_impl.pxi +206 -0
- sage/symbolic/pynac_impl.pxi +2576 -0
- sage/symbolic/pynac_wrap.h +124 -0
- sage/symbolic/series_impl.pxi +272 -0
- sage/symbolic/substitution_map_impl.pxi +94 -0
- sage_wheels/bin/ESingular +0 -0
- sage_wheels/bin/Singular +0 -0
- sage_wheels/bin/TSingular +0 -0
- sage_wheels/lib/singular/MOD/cohomo.la +41 -0
- sage_wheels/lib/singular/MOD/cohomo.so +0 -0
- sage_wheels/lib/singular/MOD/customstd.la +41 -0
- sage_wheels/lib/singular/MOD/customstd.so +0 -0
- sage_wheels/lib/singular/MOD/freealgebra.la +41 -0
- sage_wheels/lib/singular/MOD/freealgebra.so +0 -0
- sage_wheels/lib/singular/MOD/gfanlib.la +41 -0
- sage_wheels/lib/singular/MOD/gfanlib.so +0 -0
- sage_wheels/lib/singular/MOD/gitfan.la +41 -0
- sage_wheels/lib/singular/MOD/gitfan.so +0 -0
- sage_wheels/lib/singular/MOD/interval.la +41 -0
- sage_wheels/lib/singular/MOD/interval.so +0 -0
- sage_wheels/lib/singular/MOD/loctriv.la +41 -0
- sage_wheels/lib/singular/MOD/loctriv.so +0 -0
- sage_wheels/lib/singular/MOD/machinelearning.la +41 -0
- sage_wheels/lib/singular/MOD/machinelearning.so +0 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.la +41 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.so +0 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.la +41 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.so +0 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldQ.la +41 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldQ.so +0 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldZp.la +41 -0
- sage_wheels/lib/singular/MOD/p_Procs_FieldZp.so +0 -0
- sage_wheels/lib/singular/MOD/partialgb.la +41 -0
- sage_wheels/lib/singular/MOD/partialgb.so +0 -0
- sage_wheels/lib/singular/MOD/pyobject.la +41 -0
- sage_wheels/lib/singular/MOD/pyobject.so +0 -0
- sage_wheels/lib/singular/MOD/singmathic.la +41 -0
- sage_wheels/lib/singular/MOD/singmathic.so +0 -0
- sage_wheels/lib/singular/MOD/sispasm.la +41 -0
- sage_wheels/lib/singular/MOD/sispasm.so +0 -0
- sage_wheels/lib/singular/MOD/subsets.la +41 -0
- sage_wheels/lib/singular/MOD/subsets.so +0 -0
- sage_wheels/lib/singular/MOD/systhreads.la +41 -0
- sage_wheels/lib/singular/MOD/systhreads.so +0 -0
- sage_wheels/lib/singular/MOD/syzextra.la +41 -0
- sage_wheels/lib/singular/MOD/syzextra.so +0 -0
- sage_wheels/libexec/singular/MOD/change_cost +0 -0
- sage_wheels/libexec/singular/MOD/singularsurf +11 -0
- sage_wheels/libexec/singular/MOD/singularsurf_jupyter +9 -0
- sage_wheels/libexec/singular/MOD/singularsurf_win +10 -0
- sage_wheels/libexec/singular/MOD/solve_IP +0 -0
- sage_wheels/libexec/singular/MOD/surfex +16 -0
- sage_wheels/libexec/singular/MOD/toric_ideal +0 -0
- sage_wheels/share/factory/gftables/10201 +342 -0
- sage_wheels/share/factory/gftables/1024 +37 -0
- sage_wheels/share/factory/gftables/10609 +356 -0
- sage_wheels/share/factory/gftables/11449 +384 -0
- sage_wheels/share/factory/gftables/11881 +398 -0
- sage_wheels/share/factory/gftables/121 +6 -0
- sage_wheels/share/factory/gftables/12167 +408 -0
- sage_wheels/share/factory/gftables/125 +7 -0
- sage_wheels/share/factory/gftables/12769 +428 -0
- sage_wheels/share/factory/gftables/128 +7 -0
- sage_wheels/share/factory/gftables/1331 +47 -0
- sage_wheels/share/factory/gftables/1369 +48 -0
- sage_wheels/share/factory/gftables/14641 +490 -0
- sage_wheels/share/factory/gftables/15625 +523 -0
- sage_wheels/share/factory/gftables/16 +3 -0
- sage_wheels/share/factory/gftables/16129 +540 -0
- sage_wheels/share/factory/gftables/16384 +549 -0
- sage_wheels/share/factory/gftables/16807 +563 -0
- sage_wheels/share/factory/gftables/1681 +58 -0
- sage_wheels/share/factory/gftables/169 +8 -0
- sage_wheels/share/factory/gftables/17161 +574 -0
- sage_wheels/share/factory/gftables/1849 +64 -0
- sage_wheels/share/factory/gftables/18769 +628 -0
- sage_wheels/share/factory/gftables/19321 +646 -0
- sage_wheels/share/factory/gftables/19683 +659 -0
- sage_wheels/share/factory/gftables/2048 +71 -0
- sage_wheels/share/factory/gftables/2187 +75 -0
- sage_wheels/share/factory/gftables/2197 +76 -0
- sage_wheels/share/factory/gftables/2209 +76 -0
- sage_wheels/share/factory/gftables/22201 +742 -0
- sage_wheels/share/factory/gftables/22801 +762 -0
- sage_wheels/share/factory/gftables/2401 +82 -0
- sage_wheels/share/factory/gftables/243 +11 -0
- sage_wheels/share/factory/gftables/24389 +815 -0
- sage_wheels/share/factory/gftables/24649 +824 -0
- sage_wheels/share/factory/gftables/25 +3 -0
- sage_wheels/share/factory/gftables/256 +11 -0
- sage_wheels/share/factory/gftables/26569 +888 -0
- sage_wheels/share/factory/gftables/27 +3 -0
- sage_wheels/share/factory/gftables/27889 +932 -0
- sage_wheels/share/factory/gftables/2809 +96 -0
- sage_wheels/share/factory/gftables/28561 +954 -0
- sage_wheels/share/factory/gftables/289 +12 -0
- sage_wheels/share/factory/gftables/29791 +995 -0
- sage_wheels/share/factory/gftables/29929 +1000 -0
- sage_wheels/share/factory/gftables/3125 +107 -0
- sage_wheels/share/factory/gftables/32 +4 -0
- sage_wheels/share/factory/gftables/32041 +1070 -0
- sage_wheels/share/factory/gftables/32761 +1094 -0
- sage_wheels/share/factory/gftables/32768 +1095 -0
- sage_wheels/share/factory/gftables/343 +14 -0
- sage_wheels/share/factory/gftables/3481 +118 -0
- sage_wheels/share/factory/gftables/361 +14 -0
- sage_wheels/share/factory/gftables/36481 +1218 -0
- sage_wheels/share/factory/gftables/3721 +126 -0
- sage_wheels/share/factory/gftables/37249 +1244 -0
- sage_wheels/share/factory/gftables/38809 +1296 -0
- sage_wheels/share/factory/gftables/39601 +1322 -0
- sage_wheels/share/factory/gftables/4 +3 -0
- sage_wheels/share/factory/gftables/4096 +139 -0
- sage_wheels/share/factory/gftables/44521 +1486 -0
- sage_wheels/share/factory/gftables/4489 +152 -0
- sage_wheels/share/factory/gftables/49 +4 -0
- sage_wheels/share/factory/gftables/4913 +166 -0
- sage_wheels/share/factory/gftables/49729 +1660 -0
- sage_wheels/share/factory/gftables/5041 +170 -0
- sage_wheels/share/factory/gftables/50653 +1691 -0
- sage_wheels/share/factory/gftables/512 +20 -0
- sage_wheels/share/factory/gftables/51529 +1720 -0
- sage_wheels/share/factory/gftables/52441 +1750 -0
- sage_wheels/share/factory/gftables/529 +20 -0
- sage_wheels/share/factory/gftables/5329 +180 -0
- sage_wheels/share/factory/gftables/54289 +1812 -0
- sage_wheels/share/factory/gftables/57121 +1906 -0
- sage_wheels/share/factory/gftables/58081 +1938 -0
- sage_wheels/share/factory/gftables/59049 +1971 -0
- sage_wheels/share/factory/gftables/6241 +210 -0
- sage_wheels/share/factory/gftables/625 +23 -0
- sage_wheels/share/factory/gftables/63001 +2102 -0
- sage_wheels/share/factory/gftables/64 +5 -0
- sage_wheels/share/factory/gftables/6561 +221 -0
- sage_wheels/share/factory/gftables/6859 +231 -0
- sage_wheels/share/factory/gftables/6889 +232 -0
- sage_wheels/share/factory/gftables/729 +27 -0
- sage_wheels/share/factory/gftables/7921 +266 -0
- sage_wheels/share/factory/gftables/8 +3 -0
- sage_wheels/share/factory/gftables/81 +5 -0
- sage_wheels/share/factory/gftables/8192 +276 -0
- sage_wheels/share/factory/gftables/841 +30 -0
- sage_wheels/share/factory/gftables/9 +3 -0
- sage_wheels/share/factory/gftables/9409 +316 -0
- sage_wheels/share/factory/gftables/961 +34 -0
- sage_wheels/share/info/singular.info +191898 -0
- sage_wheels/share/singular/LIB/GND.lib +1359 -0
- sage_wheels/share/singular/LIB/JMBTest.lib +976 -0
- sage_wheels/share/singular/LIB/JMSConst.lib +1363 -0
- sage_wheels/share/singular/LIB/KVequiv.lib +699 -0
- sage_wheels/share/singular/LIB/SingularityDBM.lib +491 -0
- sage_wheels/share/singular/LIB/VecField.lib +1542 -0
- sage_wheels/share/singular/LIB/absfact.lib +959 -0
- sage_wheels/share/singular/LIB/ainvar.lib +730 -0
- sage_wheels/share/singular/LIB/aksaka.lib +419 -0
- sage_wheels/share/singular/LIB/alexpoly.lib +2542 -0
- sage_wheels/share/singular/LIB/algebra.lib +1193 -0
- sage_wheels/share/singular/LIB/all.lib +136 -0
- sage_wheels/share/singular/LIB/arcpoint.lib +514 -0
- sage_wheels/share/singular/LIB/arnold.lib +4553 -0
- sage_wheels/share/singular/LIB/arnoldclassify.lib +2058 -0
- sage_wheels/share/singular/LIB/arr.lib +3486 -0
- sage_wheels/share/singular/LIB/assprimeszerodim.lib +755 -0
- sage_wheels/share/singular/LIB/autgradalg.lib +3361 -0
- sage_wheels/share/singular/LIB/bfun.lib +1964 -0
- sage_wheels/share/singular/LIB/bimodules.lib +774 -0
- sage_wheels/share/singular/LIB/brillnoether.lib +226 -0
- sage_wheels/share/singular/LIB/brnoeth.lib +5017 -0
- sage_wheels/share/singular/LIB/central.lib +2169 -0
- sage_wheels/share/singular/LIB/chern.lib +4162 -0
- sage_wheels/share/singular/LIB/cimonom.lib +571 -0
- sage_wheels/share/singular/LIB/cisimplicial.lib +1835 -0
- sage_wheels/share/singular/LIB/classify.lib +3239 -0
- sage_wheels/share/singular/LIB/classify2.lib +1462 -0
- sage_wheels/share/singular/LIB/classifyMapGerms.lib +1515 -0
- sage_wheels/share/singular/LIB/classify_aeq.lib +3253 -0
- sage_wheels/share/singular/LIB/classifyceq.lib +2092 -0
- sage_wheels/share/singular/LIB/classifyci.lib +1133 -0
- sage_wheels/share/singular/LIB/combinat.lib +91 -0
- sage_wheels/share/singular/LIB/compregb.lib +276 -0
- sage_wheels/share/singular/LIB/control.lib +1636 -0
- sage_wheels/share/singular/LIB/crypto.lib +3795 -0
- sage_wheels/share/singular/LIB/curveInv.lib +667 -0
- sage_wheels/share/singular/LIB/curvepar.lib +1817 -0
- sage_wheels/share/singular/LIB/customstd.lib +100 -0
- sage_wheels/share/singular/LIB/deRham.lib +5979 -0
- sage_wheels/share/singular/LIB/decodegb.lib +2134 -0
- sage_wheels/share/singular/LIB/decomp.lib +1655 -0
- sage_wheels/share/singular/LIB/deflation.lib +872 -0
- sage_wheels/share/singular/LIB/deform.lib +925 -0
- sage_wheels/share/singular/LIB/difform.lib +3055 -0
- sage_wheels/share/singular/LIB/divisors.lib +750 -0
- sage_wheels/share/singular/LIB/dmod.lib +5817 -0
- sage_wheels/share/singular/LIB/dmodapp.lib +3269 -0
- sage_wheels/share/singular/LIB/dmodideal.lib +1211 -0
- sage_wheels/share/singular/LIB/dmodloc.lib +2645 -0
- sage_wheels/share/singular/LIB/dmodvar.lib +818 -0
- sage_wheels/share/singular/LIB/dummy.lib +17 -0
- sage_wheels/share/singular/LIB/elim.lib +1009 -0
- sage_wheels/share/singular/LIB/ellipticcovers.lib +548 -0
- sage_wheels/share/singular/LIB/enumpoints.lib +146 -0
- sage_wheels/share/singular/LIB/equising.lib +2127 -0
- sage_wheels/share/singular/LIB/ffmodstd.lib +2384 -0
- sage_wheels/share/singular/LIB/ffsolve.lib +1289 -0
- sage_wheels/share/singular/LIB/findifs.lib +778 -0
- sage_wheels/share/singular/LIB/finitediff.lib +1768 -0
- sage_wheels/share/singular/LIB/finvar.lib +7989 -0
- sage_wheels/share/singular/LIB/fpadim.lib +2429 -0
- sage_wheels/share/singular/LIB/fpalgebras.lib +1666 -0
- sage_wheels/share/singular/LIB/fpaprops.lib +1462 -0
- sage_wheels/share/singular/LIB/freegb.lib +3853 -0
- sage_wheels/share/singular/LIB/general.lib +1350 -0
- sage_wheels/share/singular/LIB/gfan.lib +1768 -0
- sage_wheels/share/singular/LIB/gitfan.lib +3130 -0
- sage_wheels/share/singular/LIB/gkdim.lib +99 -0
- sage_wheels/share/singular/LIB/gmspoly.lib +589 -0
- sage_wheels/share/singular/LIB/gmssing.lib +1739 -0
- sage_wheels/share/singular/LIB/goettsche.lib +909 -0
- sage_wheels/share/singular/LIB/graal.lib +1366 -0
- sage_wheels/share/singular/LIB/gradedModules.lib +2541 -0
- sage_wheels/share/singular/LIB/graphics.lib +360 -0
- sage_wheels/share/singular/LIB/grobcov.lib +7706 -0
- sage_wheels/share/singular/LIB/groups.lib +1123 -0
- sage_wheels/share/singular/LIB/grwalk.lib +507 -0
- sage_wheels/share/singular/LIB/hdepth.lib +194 -0
- sage_wheels/share/singular/LIB/help.cnf +57 -0
- sage_wheels/share/singular/LIB/hess.lib +1946 -0
- sage_wheels/share/singular/LIB/hnoether.lib +4292 -0
- sage_wheels/share/singular/LIB/hodge.lib +400 -0
- sage_wheels/share/singular/LIB/homolog.lib +1965 -0
- sage_wheels/share/singular/LIB/hyperel.lib +975 -0
- sage_wheels/share/singular/LIB/inout.lib +679 -0
- sage_wheels/share/singular/LIB/integralbasis.lib +6224 -0
- sage_wheels/share/singular/LIB/interval.lib +1418 -0
- sage_wheels/share/singular/LIB/intprog.lib +778 -0
- sage_wheels/share/singular/LIB/invar.lib +443 -0
- sage_wheels/share/singular/LIB/involut.lib +980 -0
- sage_wheels/share/singular/LIB/jacobson.lib +1215 -0
- sage_wheels/share/singular/LIB/kskernel.lib +534 -0
- sage_wheels/share/singular/LIB/latex.lib +3146 -0
- sage_wheels/share/singular/LIB/lejeune.lib +651 -0
- sage_wheels/share/singular/LIB/linalg.lib +2040 -0
- sage_wheels/share/singular/LIB/locnormal.lib +212 -0
- sage_wheels/share/singular/LIB/lrcalc.lib +526 -0
- sage_wheels/share/singular/LIB/makedbm.lib +294 -0
- sage_wheels/share/singular/LIB/mathml.lib +813 -0
- sage_wheels/share/singular/LIB/matrix.lib +1372 -0
- sage_wheels/share/singular/LIB/maxlike.lib +1132 -0
- sage_wheels/share/singular/LIB/methods.lib +212 -0
- sage_wheels/share/singular/LIB/moddiq.lib +322 -0
- sage_wheels/share/singular/LIB/modfinduni.lib +181 -0
- sage_wheels/share/singular/LIB/modnormal.lib +218 -0
- sage_wheels/share/singular/LIB/modprimdec.lib +1278 -0
- sage_wheels/share/singular/LIB/modquotient.lib +269 -0
- sage_wheels/share/singular/LIB/modstd.lib +1024 -0
- sage_wheels/share/singular/LIB/modular.lib +545 -0
- sage_wheels/share/singular/LIB/modules.lib +2561 -0
- sage_wheels/share/singular/LIB/modwalk.lib +609 -0
- sage_wheels/share/singular/LIB/mondromy.lib +1016 -0
- sage_wheels/share/singular/LIB/monomialideal.lib +3851 -0
- sage_wheels/share/singular/LIB/mprimdec.lib +2353 -0
- sage_wheels/share/singular/LIB/mregular.lib +1863 -0
- sage_wheels/share/singular/LIB/multigrading.lib +5629 -0
- sage_wheels/share/singular/LIB/ncHilb.lib +777 -0
- sage_wheels/share/singular/LIB/ncModslimgb.lib +791 -0
- sage_wheels/share/singular/LIB/ncalg.lib +16311 -0
- sage_wheels/share/singular/LIB/ncall.lib +31 -0
- sage_wheels/share/singular/LIB/ncdecomp.lib +468 -0
- sage_wheels/share/singular/LIB/ncfactor.lib +13371 -0
- sage_wheels/share/singular/LIB/ncfrac.lib +1023 -0
- sage_wheels/share/singular/LIB/nchilbert.lib +448 -0
- sage_wheels/share/singular/LIB/nchomolog.lib +759 -0
- sage_wheels/share/singular/LIB/ncloc.lib +361 -0
- sage_wheels/share/singular/LIB/ncpreim.lib +795 -0
- sage_wheels/share/singular/LIB/ncrat.lib +2849 -0
- sage_wheels/share/singular/LIB/nctools.lib +1887 -0
- sage_wheels/share/singular/LIB/nets.lib +1456 -0
- sage_wheels/share/singular/LIB/nfmodstd.lib +1000 -0
- sage_wheels/share/singular/LIB/nfmodsyz.lib +732 -0
- sage_wheels/share/singular/LIB/noether.lib +1106 -0
- sage_wheels/share/singular/LIB/normal.lib +8700 -0
- sage_wheels/share/singular/LIB/normaliz.lib +2226 -0
- sage_wheels/share/singular/LIB/ntsolve.lib +362 -0
- sage_wheels/share/singular/LIB/numerAlg.lib +560 -0
- sage_wheels/share/singular/LIB/numerDecom.lib +2261 -0
- sage_wheels/share/singular/LIB/olga.lib +1933 -0
- sage_wheels/share/singular/LIB/orbitparam.lib +351 -0
- sage_wheels/share/singular/LIB/parallel.lib +319 -0
- sage_wheels/share/singular/LIB/paraplanecurves.lib +3110 -0
- sage_wheels/share/singular/LIB/perron.lib +202 -0
- sage_wheels/share/singular/LIB/pfd.lib +2223 -0
- sage_wheels/share/singular/LIB/phindex.lib +642 -0
- sage_wheels/share/singular/LIB/pointid.lib +673 -0
- sage_wheels/share/singular/LIB/polybori.lib +1430 -0
- sage_wheels/share/singular/LIB/polyclass.lib +525 -0
- sage_wheels/share/singular/LIB/polylib.lib +1174 -0
- sage_wheels/share/singular/LIB/polymake.lib +1902 -0
- sage_wheels/share/singular/LIB/presolve.lib +1533 -0
- sage_wheels/share/singular/LIB/primdec.lib +9576 -0
- sage_wheels/share/singular/LIB/primdecint.lib +1782 -0
- sage_wheels/share/singular/LIB/primitiv.lib +401 -0
- sage_wheels/share/singular/LIB/puiseuxexpansions.lib +1631 -0
- sage_wheels/share/singular/LIB/purityfiltration.lib +960 -0
- sage_wheels/share/singular/LIB/qhmoduli.lib +1561 -0
- sage_wheels/share/singular/LIB/qmatrix.lib +293 -0
- sage_wheels/share/singular/LIB/random.lib +455 -0
- sage_wheels/share/singular/LIB/ratgb.lib +489 -0
- sage_wheels/share/singular/LIB/realclassify.lib +5759 -0
- sage_wheels/share/singular/LIB/realizationMatroids.lib +772 -0
- sage_wheels/share/singular/LIB/realrad.lib +1197 -0
- sage_wheels/share/singular/LIB/recover.lib +2628 -0
- sage_wheels/share/singular/LIB/redcgs.lib +3984 -0
- sage_wheels/share/singular/LIB/reesclos.lib +465 -0
- sage_wheels/share/singular/LIB/resbinomial.lib +2802 -0
- sage_wheels/share/singular/LIB/resgraph.lib +789 -0
- sage_wheels/share/singular/LIB/resjung.lib +820 -0
- sage_wheels/share/singular/LIB/resolve.lib +5110 -0
- sage_wheels/share/singular/LIB/resources.lib +170 -0
- sage_wheels/share/singular/LIB/reszeta.lib +5473 -0
- sage_wheels/share/singular/LIB/ring.lib +1328 -0
- sage_wheels/share/singular/LIB/ringgb.lib +343 -0
- sage_wheels/share/singular/LIB/rinvar.lib +1153 -0
- sage_wheels/share/singular/LIB/rootisolation.lib +1481 -0
- sage_wheels/share/singular/LIB/rootsmr.lib +709 -0
- sage_wheels/share/singular/LIB/rootsur.lib +886 -0
- sage_wheels/share/singular/LIB/rstandard.lib +607 -0
- sage_wheels/share/singular/LIB/rwalk.lib +336 -0
- sage_wheels/share/singular/LIB/sagbi.lib +1353 -0
- sage_wheels/share/singular/LIB/sagbiNormaliz.lib +1622 -0
- sage_wheels/share/singular/LIB/sagbiNormaliz0.lib +1498 -0
- sage_wheels/share/singular/LIB/sagbigrob.lib +449 -0
- sage_wheels/share/singular/LIB/schreyer.lib +321 -0
- sage_wheels/share/singular/LIB/schubert.lib +2551 -0
- sage_wheels/share/singular/LIB/sets.lib +524 -0
- sage_wheels/share/singular/LIB/sheafcoh.lib +1663 -0
- sage_wheels/share/singular/LIB/signcond.lib +437 -0
- sage_wheels/share/singular/LIB/sing.lib +1094 -0
- sage_wheels/share/singular/LIB/sing4ti2.lib +419 -0
- sage_wheels/share/singular/LIB/solve.lib +2243 -0
- sage_wheels/share/singular/LIB/spcurve.lib +1077 -0
- sage_wheels/share/singular/LIB/spectrum.lib +62 -0
- sage_wheels/share/singular/LIB/sresext.lib +757 -0
- sage_wheels/share/singular/LIB/ssi.lib +143 -0
- sage_wheels/share/singular/LIB/standard.lib +2769 -0
- sage_wheels/share/singular/LIB/stanleyreisner.lib +473 -0
- sage_wheels/share/singular/LIB/stdmodule.lib +547 -0
- sage_wheels/share/singular/LIB/stratify.lib +1070 -0
- sage_wheels/share/singular/LIB/surf.lib +506 -0
- sage_wheels/share/singular/LIB/surf_jupyter.lib +223 -0
- sage_wheels/share/singular/LIB/surfacesignature.lib +522 -0
- sage_wheels/share/singular/LIB/surfex.lib +1462 -0
- sage_wheels/share/singular/LIB/swalk.lib +877 -0
- sage_wheels/share/singular/LIB/symodstd.lib +1570 -0
- sage_wheels/share/singular/LIB/systhreads.lib +74 -0
- sage_wheels/share/singular/LIB/tasks.lib +1324 -0
- sage_wheels/share/singular/LIB/tateProdCplxNegGrad.lib +2412 -0
- sage_wheels/share/singular/LIB/teachstd.lib +858 -0
- sage_wheels/share/singular/LIB/template.lib +116 -0
- sage_wheels/share/singular/LIB/toric.lib +1119 -0
- sage_wheels/share/singular/LIB/transformation.lib +116 -0
- sage_wheels/share/singular/LIB/triang.lib +1197 -0
- sage_wheels/share/singular/LIB/tropical.lib +8741 -0
- sage_wheels/share/singular/LIB/tropicalEllipticCovers.lib +2922 -0
- sage_wheels/share/singular/LIB/tropicalNewton.lib +1128 -0
- sage_wheels/share/singular/LIB/tst.lib +1108 -0
- sage_wheels/share/singular/LIB/weierstr.lib +241 -0
- sage_wheels/share/singular/LIB/zeroset.lib +1478 -0
- sage_wheels/share/singular/emacs/.emacs-general +184 -0
- sage_wheels/share/singular/emacs/.emacs-singular +234 -0
- sage_wheels/share/singular/emacs/COPYING +44 -0
- sage_wheels/share/singular/emacs/cmd-cmpl.el +241 -0
- sage_wheels/share/singular/emacs/ex-cmpl.el +1681 -0
- sage_wheels/share/singular/emacs/hlp-cmpl.el +4318 -0
- sage_wheels/share/singular/emacs/lib-cmpl.el +179 -0
- sage_wheels/share/singular/emacs/singular.el +4273 -0
- sage_wheels/share/singular/emacs/singular.xpm +39 -0
- sage_wheels/share/singular/singular.idx +5002 -0
|
@@ -0,0 +1,980 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////////
|
|
2
|
+
version="version involut.lib 4.1.2.0 Feb_2019 "; // $Id: e853d9b62c484f96d0a44f5f6b0ff79da47e36e2 $
|
|
3
|
+
category="Noncommutative";
|
|
4
|
+
info="
|
|
5
|
+
LIBRARY: involut.lib Computations and operations with involutions
|
|
6
|
+
AUTHORS: Oleksandr Iena, yena@mathematik.uni-kl.de,
|
|
7
|
+
@* Markus Becker, mbecker@mathematik.uni-kl.de,
|
|
8
|
+
@* Viktor Levandovskyy, levandov@mathematik.uni-kl.de
|
|
9
|
+
|
|
10
|
+
OVERVIEW:
|
|
11
|
+
Involution is an anti-automorphism of a non-commutative K-algebra
|
|
12
|
+
with the property that applied an involution twice, one gets an identity.
|
|
13
|
+
Involution is linear with respect to the ground field. In this library we
|
|
14
|
+
compute linear involutions, distinguishing the case of a diagonal matrix
|
|
15
|
+
(such involutions are called homothetic) and a general one.
|
|
16
|
+
Also, linear automorphisms of different order can be computed.
|
|
17
|
+
|
|
18
|
+
SUPPORT: Forschungsschwerpunkt 'Mathematik und Praxis' (Project of Dr. E. Zerz
|
|
19
|
+
and V. Levandovskyy), Uni Kaiserslautern
|
|
20
|
+
|
|
21
|
+
REMARK: This library provides algebraic tools for computations and operations
|
|
22
|
+
with algebraic involutions and linear automorphisms of non-commutative algebras
|
|
23
|
+
|
|
24
|
+
PROCEDURES:
|
|
25
|
+
findInvo(); computes linear involutions on a basering;
|
|
26
|
+
findInvoDiag(); computes homothetic (diagonal) involutions on a basering;
|
|
27
|
+
findAuto(n); computes linear automorphisms of order n of a basering;
|
|
28
|
+
ncdetection(); computes an ideal, presenting an involution map on some particular noncommutative algebras;
|
|
29
|
+
involution(m,theta); applies the involution to an object;
|
|
30
|
+
isInvolution(F); check whether a map F in an involution;
|
|
31
|
+
isAntiEndo(F); check whether a map F in an antiendomorphism.
|
|
32
|
+
";
|
|
33
|
+
|
|
34
|
+
LIB "nctools.lib";
|
|
35
|
+
LIB "ncalg.lib";
|
|
36
|
+
LIB "polylib.lib";
|
|
37
|
+
LIB "primdec.lib";
|
|
38
|
+
LIB "ring.lib";
|
|
39
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
40
|
+
proc ncdetection()
|
|
41
|
+
"USAGE: ncdetection();
|
|
42
|
+
RETURN: ideal, representing an involution map
|
|
43
|
+
PURPOSE: compute classical involutions (i.e. acting rather on operators than on variables) for some particular noncommutative algebras
|
|
44
|
+
ASSUME: the procedure is aimed at non-commutative algebras with differential, shift or advance operators arising in Control Theory.
|
|
45
|
+
It has to be executed in a ring.
|
|
46
|
+
EXAMPLE: example ncdetection; shows an example
|
|
47
|
+
"{
|
|
48
|
+
// in this procedure an involution map is generated from the NCRelations
|
|
49
|
+
// that will be used in the function involution
|
|
50
|
+
// in dieser proc. wird eine matrix erzeugt, die in der i-ten zeile die indices
|
|
51
|
+
// der differential-, shift- oder advance-operatoren enthaelt mit denen die i-te
|
|
52
|
+
// variable nicht kommutiert.
|
|
53
|
+
if ( nameof(basering)=="basering" )
|
|
54
|
+
{
|
|
55
|
+
"No current ring defined.";
|
|
56
|
+
return(ideal(0));
|
|
57
|
+
}
|
|
58
|
+
def r = basering;
|
|
59
|
+
setring r;
|
|
60
|
+
int i,j,k,LExp;
|
|
61
|
+
int NVars = nvars(r);
|
|
62
|
+
matrix rel = ncRelations(r)[2];
|
|
63
|
+
intmat M[NVars][3];
|
|
64
|
+
int NRows = nrows(rel);
|
|
65
|
+
intvec v,w;
|
|
66
|
+
poly d,d_lead;
|
|
67
|
+
ideal I;
|
|
68
|
+
map theta;
|
|
69
|
+
for( j=NRows; j>=2; j-- )
|
|
70
|
+
{
|
|
71
|
+
if( rel[j] == w ) //the whole column is zero
|
|
72
|
+
{
|
|
73
|
+
j--;
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
for( i=1; i<j; i++ )
|
|
77
|
+
{
|
|
78
|
+
if( rel[i,j]==1 ) //relation of type var(j)*var(i) = var(i)*var(j) +1
|
|
79
|
+
{
|
|
80
|
+
M[i,1]=j;
|
|
81
|
+
}
|
|
82
|
+
if( rel[i,j] == -1 ) //relation of type var(i)*var(j) = var(j)*var(i) -1
|
|
83
|
+
{
|
|
84
|
+
M[j,1]=i;
|
|
85
|
+
}
|
|
86
|
+
d = rel[i,j];
|
|
87
|
+
d_lead = lead(d);
|
|
88
|
+
v = leadexp(d_lead); //in the next lines we check whether we have a relation of differential or shift type
|
|
89
|
+
LExp=0;
|
|
90
|
+
for(k=1; k<=NVars; k++)
|
|
91
|
+
{
|
|
92
|
+
LExp = LExp + v[k];
|
|
93
|
+
}
|
|
94
|
+
// if( (d-d_lead != 0) || (LExp > 1) )
|
|
95
|
+
if ( ( (d-d_lead) != 0) || (LExp > 1) || ( (LExp==0) && ((d_lead>1) || (d_lead<-1)) ) )
|
|
96
|
+
{
|
|
97
|
+
return(theta);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if( v[j] == 1) //relation of type var(j)*var(i) = var(i)*var(j) -lambda*var(j)
|
|
101
|
+
{
|
|
102
|
+
if (leadcoef(d) < 0)
|
|
103
|
+
{
|
|
104
|
+
M[i,2] = j;
|
|
105
|
+
}
|
|
106
|
+
else
|
|
107
|
+
{
|
|
108
|
+
M[i,3] = j;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if( v[i]==1 ) //relation of type var(j)*var(i) = var(i)*var(j) -lambda*var(i)
|
|
112
|
+
{
|
|
113
|
+
if (leadcoef(d) > 0)
|
|
114
|
+
{
|
|
115
|
+
M[j,2] = i;
|
|
116
|
+
}
|
|
117
|
+
else
|
|
118
|
+
{
|
|
119
|
+
M[j,3] = i;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// from here on, the map is computed
|
|
125
|
+
for(i=1;i<=NVars;i++)
|
|
126
|
+
{
|
|
127
|
+
I=I+var(i);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
for(i=1;i<=NVars;i++)
|
|
131
|
+
{
|
|
132
|
+
if( M[i,1..3]==(0,0,0) )
|
|
133
|
+
{
|
|
134
|
+
i++;
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
if( M[i,1]!=0 )
|
|
138
|
+
{
|
|
139
|
+
if( (M[i,2]!=0) && (M[i,3]!=0) )
|
|
140
|
+
{
|
|
141
|
+
I[M[i,1]] = -var(M[i,1]);
|
|
142
|
+
I[M[i,2]] = var(M[i,3]);
|
|
143
|
+
I[M[i,3]] = var(M[i,2]);
|
|
144
|
+
}
|
|
145
|
+
if( (M[i,2]==0) && (M[i,3]==0) )
|
|
146
|
+
{
|
|
147
|
+
I[M[i,1]] = -var(M[i,1]);
|
|
148
|
+
}
|
|
149
|
+
if( ( (M[i,2]!=0) && (M[i,3]==0) )|| ( (M[i,2]!=0) && (M[i,3]==0) )
|
|
150
|
+
)
|
|
151
|
+
{
|
|
152
|
+
I[i] = -var(i);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
else
|
|
156
|
+
{
|
|
157
|
+
if( (M[i,2]!=0) && (M[i,3]!=0) )
|
|
158
|
+
{
|
|
159
|
+
I[i] = -var(i);
|
|
160
|
+
I[M[i,2]] = var(M[i,3]);
|
|
161
|
+
I[M[i,3]] = var(M[i,2]);
|
|
162
|
+
}
|
|
163
|
+
else
|
|
164
|
+
{
|
|
165
|
+
I[i] = -var(i);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return(I);
|
|
170
|
+
}
|
|
171
|
+
example
|
|
172
|
+
{
|
|
173
|
+
"EXAMPLE:"; echo = 2;
|
|
174
|
+
ring R = 0,(x,y,z,D(1..3)),dp;
|
|
175
|
+
matrix D[6][6];
|
|
176
|
+
D[1,4]=1; D[2,5]=1; D[3,6]=1;
|
|
177
|
+
def r = nc_algebra(1,D); setring r;
|
|
178
|
+
ncdetection();
|
|
179
|
+
kill r, R;
|
|
180
|
+
//----------------------------------------
|
|
181
|
+
ring R=0,(x,S),dp;
|
|
182
|
+
def r = nc_algebra(1,-S); setring r;
|
|
183
|
+
ncdetection();
|
|
184
|
+
kill r, R;
|
|
185
|
+
//----------------------------------------
|
|
186
|
+
ring R=0,(x,D(1),S),dp;
|
|
187
|
+
matrix D[3][3];
|
|
188
|
+
D[1,2]=1; D[1,3]=-S;
|
|
189
|
+
def r = nc_algebra(1,D); setring r;
|
|
190
|
+
ncdetection();
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
static proc In_Poly(poly mm, list l, int NVars)
|
|
194
|
+
// applies the involution to the polynomial mm
|
|
195
|
+
// entries of a list l are images of variables under invo
|
|
196
|
+
// more general than invo_poly; used in many rings setting
|
|
197
|
+
{
|
|
198
|
+
int i,j;
|
|
199
|
+
intvec v;
|
|
200
|
+
poly pp, zz;
|
|
201
|
+
poly nn = 0;
|
|
202
|
+
i = 1;
|
|
203
|
+
while(mm[i]!=0)
|
|
204
|
+
{
|
|
205
|
+
v = leadexp(mm[i]);
|
|
206
|
+
zz = 1;
|
|
207
|
+
for( j=NVars; j>=1; j--)
|
|
208
|
+
{
|
|
209
|
+
if (v[j]!=0)
|
|
210
|
+
{
|
|
211
|
+
pp = l[j];
|
|
212
|
+
zz = zz*(pp^v[j]);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
nn = nn + (leadcoef(mm[i])*zz);
|
|
216
|
+
i++;
|
|
217
|
+
}
|
|
218
|
+
return(nn);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
static proc Hom_Poly(poly mm, list l, int NVars)
|
|
222
|
+
// applies the endomorphism to the polynomial mm
|
|
223
|
+
// entries of a list l are images of variables under endo
|
|
224
|
+
// should not be replaced by map-based stuff! used in
|
|
225
|
+
// many rings setting
|
|
226
|
+
{
|
|
227
|
+
int i,j;
|
|
228
|
+
intvec v;
|
|
229
|
+
poly pp, zz;
|
|
230
|
+
poly nn = 0;
|
|
231
|
+
i = 1;
|
|
232
|
+
while(mm[i]!=0)
|
|
233
|
+
{
|
|
234
|
+
v = leadexp(mm[i]);
|
|
235
|
+
zz = 1;
|
|
236
|
+
for( j=NVars; j>=1; j--)
|
|
237
|
+
{
|
|
238
|
+
if (v[j]!=0)
|
|
239
|
+
{
|
|
240
|
+
pp = l[j];
|
|
241
|
+
zz = (pp^v[j])*zz;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
nn = nn + (leadcoef(mm[i])*zz);
|
|
245
|
+
i++;
|
|
246
|
+
}
|
|
247
|
+
return(nn);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
static proc invo_poly(poly m, map theta)
|
|
251
|
+
// applies the involution map theta to m, where m=polynomial
|
|
252
|
+
{
|
|
253
|
+
// compatibility:
|
|
254
|
+
ideal l = ideal(theta);
|
|
255
|
+
int i;
|
|
256
|
+
list L;
|
|
257
|
+
for (i=1; i<=size(l); i++)
|
|
258
|
+
{
|
|
259
|
+
L[i] = l[i];
|
|
260
|
+
}
|
|
261
|
+
int nv = nvars(basering);
|
|
262
|
+
return (In_Poly(m,L,nv));
|
|
263
|
+
// if (m==0) { return(m); }
|
|
264
|
+
// int i,j;
|
|
265
|
+
// intvec v;
|
|
266
|
+
// poly p,z;
|
|
267
|
+
// poly n = 0;
|
|
268
|
+
// i = 1;
|
|
269
|
+
// while(m[i]!=0)
|
|
270
|
+
// {
|
|
271
|
+
// v = leadexp(m[i]);
|
|
272
|
+
// z =1;
|
|
273
|
+
// for(j=nvars(basering); j>=1; j--)
|
|
274
|
+
// {
|
|
275
|
+
// if (v[j]!=0)
|
|
276
|
+
// {
|
|
277
|
+
// p = var(j);
|
|
278
|
+
// p = theta(p);
|
|
279
|
+
// z = z*(p^v[j]);
|
|
280
|
+
// }
|
|
281
|
+
// }
|
|
282
|
+
// n = n + (leadcoef(m[i])*z);
|
|
283
|
+
// i++;
|
|
284
|
+
// }
|
|
285
|
+
// return(n);
|
|
286
|
+
}
|
|
287
|
+
///////////////////////////////////////////////////////////////////////////////////
|
|
288
|
+
proc involution(def m, map theta)
|
|
289
|
+
"USAGE: involution(m, theta); m is a poly/vector/ideal/matrix/module, theta is a map
|
|
290
|
+
RETURN: object of the same type as m
|
|
291
|
+
PURPOSE: applies the involution, presented by theta to the object m
|
|
292
|
+
THEORY: for an involution theta and two polynomials a,b from the algebra,
|
|
293
|
+
@* theta(ab) = theta(b) theta(a); theta is linear with respect to the ground field
|
|
294
|
+
NOTE: This is generalized ''theta(m)'' for data types unsupported by ''map''.
|
|
295
|
+
EXAMPLE: example involution; shows an example
|
|
296
|
+
"{
|
|
297
|
+
// applies the involution map theta to m,
|
|
298
|
+
// where m= vector, polynomial, module, matrix, ideal
|
|
299
|
+
int i,j;
|
|
300
|
+
intvec v;
|
|
301
|
+
poly p,z;
|
|
302
|
+
if (typeof(m)=="poly")
|
|
303
|
+
{
|
|
304
|
+
return (invo_poly(m,theta));
|
|
305
|
+
}
|
|
306
|
+
if ( typeof(m)=="ideal" )
|
|
307
|
+
{
|
|
308
|
+
ideal n;
|
|
309
|
+
for (i=1; i<=size(m); i++)
|
|
310
|
+
{
|
|
311
|
+
n[i] = invo_poly(m[i], theta);
|
|
312
|
+
}
|
|
313
|
+
return(n);
|
|
314
|
+
}
|
|
315
|
+
if (typeof(m)=="vector")
|
|
316
|
+
{
|
|
317
|
+
for(i=1; i<=size(m); i++)
|
|
318
|
+
{
|
|
319
|
+
m[i] = invo_poly(m[i], theta);
|
|
320
|
+
}
|
|
321
|
+
return (m);
|
|
322
|
+
}
|
|
323
|
+
if ( (typeof(m)=="matrix") || (typeof(m)=="module"))
|
|
324
|
+
{
|
|
325
|
+
matrix n = matrix(m);
|
|
326
|
+
int @R=nrows(n);
|
|
327
|
+
int @C=ncols(n);
|
|
328
|
+
for(i=1; i<=@R; i++)
|
|
329
|
+
{
|
|
330
|
+
for(j=1; j<=@C; j++)
|
|
331
|
+
{
|
|
332
|
+
if (m[i,j]!=0)
|
|
333
|
+
{
|
|
334
|
+
n[i,j] = invo_poly( m[i,j], theta);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
if (typeof(m)=="module")
|
|
339
|
+
{
|
|
340
|
+
return (module(n));
|
|
341
|
+
}
|
|
342
|
+
else // matrix
|
|
343
|
+
{
|
|
344
|
+
return(n);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
// if m is not of the supported type:
|
|
348
|
+
"Error: unsupported argument type!";
|
|
349
|
+
return();
|
|
350
|
+
}
|
|
351
|
+
example
|
|
352
|
+
{
|
|
353
|
+
"EXAMPLE:";echo = 2;
|
|
354
|
+
ring R = 0,(x,d),dp;
|
|
355
|
+
def r = nc_algebra(1,1); setring r; // Weyl-Algebra
|
|
356
|
+
map F = r,x,-d;
|
|
357
|
+
F(F); // should be maxideal(1) for an involution
|
|
358
|
+
poly f = x*d^2+d;
|
|
359
|
+
poly If = involution(f,F);
|
|
360
|
+
f-If;
|
|
361
|
+
poly g = x^2*d+2*x*d+3*x+7*d;
|
|
362
|
+
poly tg = -d*x^2-2*d*x+3*x-7*d;
|
|
363
|
+
poly Ig = involution(g,F);
|
|
364
|
+
tg-Ig;
|
|
365
|
+
ideal I = f,g;
|
|
366
|
+
ideal II = involution(I,F);
|
|
367
|
+
II;
|
|
368
|
+
matrix(I) - involution(II,F);
|
|
369
|
+
module M = [f,g,0],[g,0,x^2*d];
|
|
370
|
+
module IM = involution(M,F);
|
|
371
|
+
print(IM);
|
|
372
|
+
print(matrix(M) - involution(IM,F));
|
|
373
|
+
}
|
|
374
|
+
///////////////////////////////////////////////////////////////////////////////////
|
|
375
|
+
static proc new_var()
|
|
376
|
+
//generates a string of new variables
|
|
377
|
+
{
|
|
378
|
+
|
|
379
|
+
int NVars=nvars(basering);
|
|
380
|
+
int i,j;
|
|
381
|
+
// string s="@_1_1";
|
|
382
|
+
string s="a11";
|
|
383
|
+
for(i=1; i<=NVars; i++)
|
|
384
|
+
{
|
|
385
|
+
for(j=1; j<=NVars; j++)
|
|
386
|
+
{
|
|
387
|
+
if(i*j!=1)
|
|
388
|
+
{
|
|
389
|
+
s = s+ ","+NVAR(i,j);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
return(s);
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
static proc NVAR(int i, int j)
|
|
397
|
+
{
|
|
398
|
+
// return("@_"+string(i)+"_"+string(j));
|
|
399
|
+
return("a"+string(i)+string(j));
|
|
400
|
+
}
|
|
401
|
+
///////////////////////////////////////////////////////////////////////////////////
|
|
402
|
+
static proc new_var_special()
|
|
403
|
+
//generates a string of new variables
|
|
404
|
+
{
|
|
405
|
+
int NVars=nvars(basering);
|
|
406
|
+
int i;
|
|
407
|
+
// string s="@_1_1";
|
|
408
|
+
string s="a11";
|
|
409
|
+
for(i=2; i<=NVars; i++)
|
|
410
|
+
{
|
|
411
|
+
s = s+ ","+NVAR(i,i);
|
|
412
|
+
}
|
|
413
|
+
return(s);
|
|
414
|
+
}
|
|
415
|
+
///////////////////////////////////////////////////////////////////////////////////
|
|
416
|
+
static proc RelMatr()
|
|
417
|
+
// returns the matrix of relations
|
|
418
|
+
// only Lie-type relations x_j x_i= x_i x_j + .. are taken into account
|
|
419
|
+
{
|
|
420
|
+
int i,j;
|
|
421
|
+
int NVars = nvars(basering);
|
|
422
|
+
matrix Rel[NVars][NVars];
|
|
423
|
+
for(i=1; i<NVars; i++)
|
|
424
|
+
{
|
|
425
|
+
for(j=i+1; j<=NVars; j++)
|
|
426
|
+
{
|
|
427
|
+
Rel[i,j]=var(j)*var(i)-var(i)*var(j);
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
return(Rel);
|
|
431
|
+
}
|
|
432
|
+
/////////////////////////////////////////////////////////////////
|
|
433
|
+
proc findInvo()
|
|
434
|
+
"USAGE: findInvo();
|
|
435
|
+
RETURN: a ring containing a list L of pairs, where
|
|
436
|
+
@* L[i][1] = ideal; a Groebner Basis of an i-th associated prime,
|
|
437
|
+
@* L[i][2] = matrix, defining a linear map, with entries, reduced with respect to L[i][1]
|
|
438
|
+
PURPOSE: computed the ideal of linear involutions of the basering
|
|
439
|
+
ASSUME: the relations on the algebra are of the form YX = XY + D, that is
|
|
440
|
+
the current ring is a G-algebra of Lie type.
|
|
441
|
+
NOTE: for convenience, the full ideal of relations @code{idJ}
|
|
442
|
+
and the initial matrix with indeterminates @code{matD} are exported in the output ring
|
|
443
|
+
SEE ALSO: findInvoDiag, involution
|
|
444
|
+
EXAMPLE: example findInvo; shows examples
|
|
445
|
+
|
|
446
|
+
"{
|
|
447
|
+
def @B = basering; //save the name of basering
|
|
448
|
+
int NVars = nvars(@B); //number of variables in basering
|
|
449
|
+
int i, j;
|
|
450
|
+
|
|
451
|
+
// check basering is of Lie type:
|
|
452
|
+
if (!isLieType())
|
|
453
|
+
{
|
|
454
|
+
ERROR("Assume violated: basering is of non-Lie type");
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
matrix Rel = RelMatr(); //the matrix of relations
|
|
458
|
+
|
|
459
|
+
string @ss = new_var(); //string of new variables
|
|
460
|
+
string Par = parstr(@B); //string of parameters in old ring
|
|
461
|
+
|
|
462
|
+
if (Par=="") // if there are no parameters
|
|
463
|
+
{
|
|
464
|
+
ring @@@KK = create_ring(0, "("+varstr(@B)+","+@ss+")", "dp"); //new ring with new variables
|
|
465
|
+
}
|
|
466
|
+
else //if there exist parameters
|
|
467
|
+
{
|
|
468
|
+
ring @@@KK = create_ring("(0,"+Par+")", "("+varstr(@B)+","+@ss+")", "dp"); //new ring with new variables
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
matrix Rel = imap(@B, Rel); //consider the matrix of relations in new ring
|
|
472
|
+
|
|
473
|
+
int Sz = NVars*NVars+NVars; // number of variables in new ring
|
|
474
|
+
|
|
475
|
+
matrix M[Sz][Sz]; //to be the matrix of relations in new ring
|
|
476
|
+
|
|
477
|
+
for(i=1; i<NVars; i++) //initialize that matrix of relations
|
|
478
|
+
{
|
|
479
|
+
for(j=i+1; j<=NVars; j++)
|
|
480
|
+
{
|
|
481
|
+
M[i,j] = Rel[i,j];
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
def @@K = nc_algebra(1, M); setring @@K; //now new ring @@K become a noncommutative ring
|
|
486
|
+
|
|
487
|
+
list l; //list to define an involution
|
|
488
|
+
poly @@F;
|
|
489
|
+
for(i=1; i<=NVars; i++) //initializing list for involution
|
|
490
|
+
{
|
|
491
|
+
@@F=0;
|
|
492
|
+
for(j=1; j<=NVars; j++)
|
|
493
|
+
{
|
|
494
|
+
execute( "@@F = @@F+"+NVAR(i,j)+"*"+string( var(j) )+";" );
|
|
495
|
+
}
|
|
496
|
+
l=l+list(@@F);
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
matrix N = imap(@@@KK,Rel);
|
|
500
|
+
|
|
501
|
+
for(i=1; i<NVars; i++)//get matrix by applying the involution to relations
|
|
502
|
+
{
|
|
503
|
+
for(j=i+1; j<=NVars; j++)
|
|
504
|
+
{
|
|
505
|
+
N[i,j]= l[j]*l[i] - l[i]*l[j] + In_Poly( N[i,j], l, NVars);
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
kill l;
|
|
509
|
+
//---------------------------------------------
|
|
510
|
+
//get the ideal of coefficients of N
|
|
511
|
+
ideal J;
|
|
512
|
+
ideal idN = simplify(ideal(N),2);
|
|
513
|
+
J = ideal(coeffs( idN, var(1) ) );
|
|
514
|
+
for(i=2; i<=NVars; i++)
|
|
515
|
+
{
|
|
516
|
+
J = ideal( coeffs( J, var(i) ) );
|
|
517
|
+
}
|
|
518
|
+
J = simplify(J,2);
|
|
519
|
+
//-------------------------------------------------
|
|
520
|
+
if ( Par=="" ) //initializes the ring of relations
|
|
521
|
+
{
|
|
522
|
+
ring @@KK = create_ring(0, "("+@ss+")", "dp");
|
|
523
|
+
}
|
|
524
|
+
else
|
|
525
|
+
{
|
|
526
|
+
ring @@KK = create_ring("(0,"+Par+")", "("+@ss+")", "dp");
|
|
527
|
+
}
|
|
528
|
+
ideal J = imap(@@K,J); // ideal, considered in @@KK now
|
|
529
|
+
string snv = "["+string(NVars)+"]";
|
|
530
|
+
execute("matrix @@D"+snv+snv+"="+@ss+";"); // matrix with entries=new variables
|
|
531
|
+
|
|
532
|
+
J = J, ideal( @@D*@@D-matrix( freemodule(NVars) ) ); // add the condition that involution to square is just identity
|
|
533
|
+
J = simplify(J,2); // without extra zeros
|
|
534
|
+
list mL = minAssGTZ(J); // components not in GB
|
|
535
|
+
int sL = size(mL);
|
|
536
|
+
intvec saveopt=option(get);
|
|
537
|
+
option(redSB); // important for reduced GBs
|
|
538
|
+
option(redTail);
|
|
539
|
+
matrix IM = @@D; // involution map
|
|
540
|
+
list L = list(); // the answer
|
|
541
|
+
list TL;
|
|
542
|
+
ideal tmp = 0;
|
|
543
|
+
for (i=1; i<=sL; i++) // compute GBs of components
|
|
544
|
+
{
|
|
545
|
+
TL = list();
|
|
546
|
+
TL[1] = std(mL[i]);
|
|
547
|
+
tmp = NF( ideal(IM), TL[1] );
|
|
548
|
+
TL[2] = matrix(tmp, NVars,NVars);
|
|
549
|
+
L[i] = TL;
|
|
550
|
+
}
|
|
551
|
+
export(L); // main export
|
|
552
|
+
ideal idJ = J; // debug-comfortable exports
|
|
553
|
+
matrix matD = @@D;
|
|
554
|
+
export(idJ);
|
|
555
|
+
export(matD);
|
|
556
|
+
option(set,saveopt);
|
|
557
|
+
return(@@KK);
|
|
558
|
+
}
|
|
559
|
+
example
|
|
560
|
+
{ "EXAMPLE:"; echo = 2;
|
|
561
|
+
def a = makeWeyl(1);
|
|
562
|
+
setring a; // this algebra is a first Weyl algebra
|
|
563
|
+
a;
|
|
564
|
+
def X = findInvo();
|
|
565
|
+
setring X; // ring with new variables, corr. to unknown coefficients
|
|
566
|
+
X;
|
|
567
|
+
L;
|
|
568
|
+
// look at the matrix in the new variables, defining the linear involution
|
|
569
|
+
print(L[1][2]);
|
|
570
|
+
L[1][1]; // where new variables obey these relations
|
|
571
|
+
idJ;
|
|
572
|
+
}
|
|
573
|
+
///////////////////////////////////////////////////////////////////////////
|
|
574
|
+
proc findInvoDiag()
|
|
575
|
+
"USAGE: findInvoDiag();
|
|
576
|
+
RETURN: a ring together with a list of pairs L, where
|
|
577
|
+
@* L[i][1] = ideal; a Groebner Basis of an i-th associated prime,
|
|
578
|
+
@* L[i][2] = matrix, defining a linear map, with entries, reduced with respect to L[i][1]
|
|
579
|
+
PURPOSE: compute homothetic (diagonal) involutions of the basering
|
|
580
|
+
ASSUME: the relations on the algebra are of the form YX = XY + D, that is
|
|
581
|
+
the current ring is a G-algebra of Lie type.
|
|
582
|
+
NOTE: for convenience, the full ideal of relations @code{idJ}
|
|
583
|
+
and the initial matrix with indeterminates @code{matD} are exported in the output ring
|
|
584
|
+
SEE ALSO: findInvo, involution
|
|
585
|
+
EXAMPLE: example findInvoDiag; shows examples
|
|
586
|
+
"{
|
|
587
|
+
def @B = basering; //save the name of basering
|
|
588
|
+
int NVars = nvars(@B); //number of variables in basering
|
|
589
|
+
int i, j;
|
|
590
|
+
|
|
591
|
+
// check basering is of Lie type:
|
|
592
|
+
if (!isLieType())
|
|
593
|
+
{
|
|
594
|
+
ERROR("Assume violated: basering is of non-Lie type");
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
matrix Rel = RelMatr(); //the matrix of relations
|
|
598
|
+
|
|
599
|
+
string @ss = new_var_special(); //string of new variables
|
|
600
|
+
string Par = parstr(@B); //string of parameters in old ring
|
|
601
|
+
|
|
602
|
+
if (Par=="") // if there are no parameters
|
|
603
|
+
{
|
|
604
|
+
ring @@@KK = create_ring(0, "("+varstr(@B)+","+@ss+")", "dp"); //new ring with new variables
|
|
605
|
+
}
|
|
606
|
+
else //if there exist parameters
|
|
607
|
+
{
|
|
608
|
+
ring @@@KK = create_ring("(0,"+Par+")", "("+varstr(@B)+","+@ss+")", "dp"); //new ring with new variables
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
matrix Rel = imap(@B, Rel); //consider the matrix of relations in new ring
|
|
612
|
+
|
|
613
|
+
int Sz = 2*NVars; // number of variables in new ring
|
|
614
|
+
|
|
615
|
+
matrix M[Sz][Sz]; //to be the matrix of relations in new ring
|
|
616
|
+
for(i=1; i<NVars; i++) //initialize that matrix of relations
|
|
617
|
+
{
|
|
618
|
+
for(j=i+1; j<=NVars; j++)
|
|
619
|
+
{
|
|
620
|
+
M[i,j] = Rel[i,j];
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
def @@K = nc_algebra(1, M); setring @@K; //now new ring @@K become a noncommutative ring
|
|
625
|
+
|
|
626
|
+
list l; //list to define an involution
|
|
627
|
+
|
|
628
|
+
for(i=1; i<=NVars; i++) //initializing list for involution
|
|
629
|
+
{
|
|
630
|
+
execute( "l["+string(i)+"]="+NVAR(i,i)+"*"+string( var(i) )+";" );
|
|
631
|
+
|
|
632
|
+
}
|
|
633
|
+
matrix N = imap(@@@KK,Rel);
|
|
634
|
+
|
|
635
|
+
for(i=1; i<NVars; i++)//get matrix by applying the involution to relations
|
|
636
|
+
{
|
|
637
|
+
for(j=i+1; j<=NVars; j++)
|
|
638
|
+
{
|
|
639
|
+
N[i,j]= l[j]*l[i] - l[i]*l[j] + In_Poly( N[i,j], l, NVars);
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
kill l;
|
|
643
|
+
//---------------------------------------------
|
|
644
|
+
//get the ideal of coefficients of N
|
|
645
|
+
|
|
646
|
+
ideal J;
|
|
647
|
+
ideal idN = simplify(ideal(N),2);
|
|
648
|
+
J = ideal(coeffs( idN, var(1) ) );
|
|
649
|
+
for(i=2; i<=NVars; i++)
|
|
650
|
+
{
|
|
651
|
+
J = ideal( coeffs( J, var(i) ) );
|
|
652
|
+
}
|
|
653
|
+
J = simplify(J,2);
|
|
654
|
+
//-------------------------------------------------
|
|
655
|
+
|
|
656
|
+
if ( Par=="" ) //initializes the ring of relations
|
|
657
|
+
{
|
|
658
|
+
ring @@KK = create_ring(0, "("+@ss+")", "dp");
|
|
659
|
+
}
|
|
660
|
+
else
|
|
661
|
+
{
|
|
662
|
+
ring @@KK = create_ring("(0,"+Par+")", "("+@ss+")", "dp");
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
ideal J = imap(@@K,J); // ideal, considered in @@KK now
|
|
666
|
+
|
|
667
|
+
matrix @@D[NVars][NVars]; // matrix with entries=new variables to square i.e. @@D=@@D^2
|
|
668
|
+
for(i=1;i<=NVars;i++)
|
|
669
|
+
{
|
|
670
|
+
execute("@@D["+string(i)+","+string(i)+"]="+NVAR(i,i)+";");
|
|
671
|
+
}
|
|
672
|
+
J = J, ideal( @@D*@@D - matrix( freemodule(NVars) ) ); // add the condition that involution to square is just identity
|
|
673
|
+
J = simplify(J,2); // without extra zeros
|
|
674
|
+
|
|
675
|
+
list mL = minAssGTZ(J); // components not in GB
|
|
676
|
+
int sL = size(mL);
|
|
677
|
+
intvec saveopt=option(get);
|
|
678
|
+
option(redSB); // important for reduced GBs
|
|
679
|
+
option(redTail);
|
|
680
|
+
matrix IM = @@D; // involution map
|
|
681
|
+
list L = list(); // the answer
|
|
682
|
+
list TL;
|
|
683
|
+
ideal tmp = 0;
|
|
684
|
+
for (i=1; i<=sL; i++) // compute GBs of components
|
|
685
|
+
{
|
|
686
|
+
TL = list();
|
|
687
|
+
TL[1] = std(mL[i]);
|
|
688
|
+
tmp = NF( ideal(IM), TL[1] );
|
|
689
|
+
TL[2] = matrix(tmp, NVars,NVars);
|
|
690
|
+
L[i] = TL;
|
|
691
|
+
}
|
|
692
|
+
export(L);
|
|
693
|
+
ideal idJ = J; // debug-comfortable exports
|
|
694
|
+
matrix matD = @@D;
|
|
695
|
+
export(idJ);
|
|
696
|
+
export(matD);
|
|
697
|
+
option(set,saveopt);
|
|
698
|
+
return(@@KK);
|
|
699
|
+
}
|
|
700
|
+
example
|
|
701
|
+
{ "EXAMPLE:"; echo = 2;
|
|
702
|
+
def a = makeWeyl(1);
|
|
703
|
+
setring a; // this algebra is a first Weyl algebra
|
|
704
|
+
a;
|
|
705
|
+
def X = findInvoDiag();
|
|
706
|
+
setring X; // ring with new variables, corresponding to unknown coefficients
|
|
707
|
+
X;
|
|
708
|
+
// print matrices, defining linear involutions
|
|
709
|
+
print(L[1][2]); // a first matrix: we see it is constant
|
|
710
|
+
print(L[2][2]); // and a second possible matrix; it is constant too
|
|
711
|
+
L; // let us take a look on the whole list
|
|
712
|
+
idJ;
|
|
713
|
+
}
|
|
714
|
+
/////////////////////////////////////////////////////////////////////
|
|
715
|
+
proc findAuto(int n)
|
|
716
|
+
"USAGE: findAuto(n); n an integer
|
|
717
|
+
RETURN: a ring together with a list of pairs L, where
|
|
718
|
+
@* L[i][1] = ideal; a Groebner Basis of an i-th associated prime,
|
|
719
|
+
@* L[i][2] = matrix, defining a linear map, with entries, reduced with respect to L[i][1]
|
|
720
|
+
PURPOSE: compute the ideal of linear automorphisms of the basering,
|
|
721
|
+
@* given by a matrix, n-th power of which gives identity (i.e. unipotent matrix)
|
|
722
|
+
ASSUME: the relations on the algebra are of the form YX = XY + D, that is
|
|
723
|
+
the current ring is a G-algebra of Lie type.
|
|
724
|
+
NOTE: if n=0, a matrix, defining an automorphism is not assumed to be unipotent
|
|
725
|
+
@* but just non-degenerate. A nonzero parameter @code{@@p} is introduced as the value of
|
|
726
|
+
@* the determinant of the matrix above.
|
|
727
|
+
@* For convenience, the full ideal of relations @code{idJ} and the initial matrix with indeterminates
|
|
728
|
+
@* @code{matD} are mutually exported in the output ring
|
|
729
|
+
SEE ALSO: findInvo
|
|
730
|
+
EXAMPLE: example findAuto; shows examples
|
|
731
|
+
"{
|
|
732
|
+
if ((n<0 ) || (n==1))
|
|
733
|
+
{
|
|
734
|
+
"The index of unipotency is too small.";
|
|
735
|
+
return(0);
|
|
736
|
+
}
|
|
737
|
+
|
|
738
|
+
|
|
739
|
+
def @B = basering; //save the name of basering
|
|
740
|
+
int NVars = nvars(@B); //number of variables in basering
|
|
741
|
+
int i, j;
|
|
742
|
+
|
|
743
|
+
// check basering is of Lie type:
|
|
744
|
+
if (!isLieType())
|
|
745
|
+
{
|
|
746
|
+
ERROR("Assume violated: basering is of non-Lie type");
|
|
747
|
+
}
|
|
748
|
+
|
|
749
|
+
matrix Rel = RelMatr(); //the matrix of relations
|
|
750
|
+
|
|
751
|
+
string @ss = new_var(); //string of new variables
|
|
752
|
+
string Par = parstr(@B); //string of parameters in old ring
|
|
753
|
+
|
|
754
|
+
if (Par=="") // if there are no parameters
|
|
755
|
+
{
|
|
756
|
+
ring @@@K = create_ring(0, "("+varstr(@B)+","+@ss+")", "dp"); //new ring with new variables
|
|
757
|
+
}
|
|
758
|
+
else //if there exist parameters
|
|
759
|
+
{
|
|
760
|
+
ring @@@K = create_ring("(0,"+Par+")", "("+varstr(@B)+","+@ss+")", "dp"); //new ring with new variables
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
matrix Rel = imap(@B, Rel); //consider the matrix of relations in new ring
|
|
764
|
+
|
|
765
|
+
int Sz = NVars*NVars+NVars; // number of variables in new ring
|
|
766
|
+
|
|
767
|
+
matrix M[Sz][Sz]; //to be the matrix of relations in new ring
|
|
768
|
+
|
|
769
|
+
for(i=1; i<NVars; i++) //initialize that matrix of relations
|
|
770
|
+
{
|
|
771
|
+
for(j=i+1; j<=NVars; j++)
|
|
772
|
+
{
|
|
773
|
+
M[i,j] = Rel[i,j];
|
|
774
|
+
}
|
|
775
|
+
}
|
|
776
|
+
|
|
777
|
+
def @@K = nc_algebra(1, M); setring @@K; //now new ring @@K become a noncommutative ring
|
|
778
|
+
|
|
779
|
+
list l; //list to define a homomorphism(isomorphism)
|
|
780
|
+
poly @@F;
|
|
781
|
+
for(i=1; i<=NVars; i++) //initializing list for involution
|
|
782
|
+
{
|
|
783
|
+
@@F=0;
|
|
784
|
+
for(j=1; j<=NVars; j++)
|
|
785
|
+
{
|
|
786
|
+
execute( "@@F = @@F+"+NVAR(i,j)+"*"+string( var(j) )+";" );
|
|
787
|
+
}
|
|
788
|
+
l=l+list(@@F);
|
|
789
|
+
}
|
|
790
|
+
|
|
791
|
+
matrix N = imap(@@@K,Rel);
|
|
792
|
+
|
|
793
|
+
for(i=1; i<NVars; i++)//get matrix by applying the homomorphism to relations
|
|
794
|
+
{
|
|
795
|
+
for(j=i+1; j<=NVars; j++)
|
|
796
|
+
{
|
|
797
|
+
N[i,j]= l[j]*l[i] - l[i]*l[j] - Hom_Poly( N[i,j], l, NVars);
|
|
798
|
+
}
|
|
799
|
+
}
|
|
800
|
+
kill l;
|
|
801
|
+
//---------------------------------------------
|
|
802
|
+
//get the ideal of coefficients of N
|
|
803
|
+
ideal J;
|
|
804
|
+
ideal idN = simplify(ideal(N),2);
|
|
805
|
+
J = ideal(coeffs( idN, var(1) ) );
|
|
806
|
+
for(i=2; i<=NVars; i++)
|
|
807
|
+
{
|
|
808
|
+
J = ideal( coeffs( J, var(i) ) );
|
|
809
|
+
}
|
|
810
|
+
J = simplify(J,2);
|
|
811
|
+
//-------------------------------------------------
|
|
812
|
+
if (( Par=="" ) && (n!=0)) //initializes the ring of relations
|
|
813
|
+
{
|
|
814
|
+
ring @@KK = create_ring(0, "("+@ss+")", "dp");
|
|
815
|
+
}
|
|
816
|
+
if (( Par=="" ) && (n==0)) //initializes the ring of relations
|
|
817
|
+
{
|
|
818
|
+
ring @@KK = create_ring("(0,@p)", "("+@ss+")", "dp");
|
|
819
|
+
}
|
|
820
|
+
if ( Par!="" )
|
|
821
|
+
{
|
|
822
|
+
ring @@KK = create_ring("(0,"+Par+")", "("+@ss+")", "dp");
|
|
823
|
+
}
|
|
824
|
+
// basering;
|
|
825
|
+
ideal J = imap(@@K,J); // ideal, considered in @@KK now
|
|
826
|
+
string snv = "["+string(NVars)+"]";
|
|
827
|
+
execute("matrix @@D"+snv+snv+"="+@ss+";"); // matrix with entries=new variables
|
|
828
|
+
|
|
829
|
+
if (n>=2)
|
|
830
|
+
{
|
|
831
|
+
J = J, ideal( @@D*@@D-matrix( freemodule(NVars) ) ); // add the condition that homomorphism to square is just identity
|
|
832
|
+
}
|
|
833
|
+
if (n==0)
|
|
834
|
+
{
|
|
835
|
+
J = J, det(@@D)-@p; // det of non-unipotent matrix is nonzero
|
|
836
|
+
}
|
|
837
|
+
J = simplify(J,2); // without extra zeros
|
|
838
|
+
list mL = minAssGTZ(J); // components not in GB
|
|
839
|
+
int sL = size(mL);
|
|
840
|
+
intvec saveopt=option(get);
|
|
841
|
+
option(redSB); // important for reduced GBs
|
|
842
|
+
option(redTail);
|
|
843
|
+
matrix IM = @@D; // map
|
|
844
|
+
list L = list(); // the answer
|
|
845
|
+
list TL;
|
|
846
|
+
ideal tmp = 0;
|
|
847
|
+
for (i=1; i<=sL; i++)// compute GBs of components
|
|
848
|
+
{
|
|
849
|
+
TL = list();
|
|
850
|
+
TL[1] = std(mL[i]);
|
|
851
|
+
tmp = NF( ideal(IM), TL[1] );
|
|
852
|
+
TL[2] = matrix(tmp,NVars, NVars);
|
|
853
|
+
L[i] = TL;
|
|
854
|
+
}
|
|
855
|
+
export(L);
|
|
856
|
+
ideal idJ = J; // debug-comfortable exports
|
|
857
|
+
matrix matD = @@D;
|
|
858
|
+
export(idJ);
|
|
859
|
+
export(matD);
|
|
860
|
+
option(set,saveopt);
|
|
861
|
+
return(@@KK);
|
|
862
|
+
}
|
|
863
|
+
example
|
|
864
|
+
{ "EXAMPLE:"; echo = 2;
|
|
865
|
+
def a = makeWeyl(1);
|
|
866
|
+
setring a; // this algebra is a first Weyl algebra
|
|
867
|
+
a;
|
|
868
|
+
def X = findAuto(2); // in contrast to findInvo look for automorphisms
|
|
869
|
+
setring X; // ring with new variables - unknown coefficients
|
|
870
|
+
X;
|
|
871
|
+
size(L); // we have (size(L)) families in the answer
|
|
872
|
+
// look at matrices, defining linear automorphisms:
|
|
873
|
+
print(L[1][2]); // a first one: we see it is the identity
|
|
874
|
+
print(L[2][2]); // and a second possible matrix; it is diagonal
|
|
875
|
+
// L; // we can take a look on the whole list, too
|
|
876
|
+
idJ;
|
|
877
|
+
kill X; kill a;
|
|
878
|
+
//----------- find all the linear automorphisms --------------------
|
|
879
|
+
//----------- use the call findAuto(0) --------------------
|
|
880
|
+
ring R = 0,(x,s),dp;
|
|
881
|
+
def r = nc_algebra(1,s); setring r; // the shift algebra
|
|
882
|
+
s*x; // the only relation in the algebra is:
|
|
883
|
+
def Y = findAuto(0);
|
|
884
|
+
setring Y;
|
|
885
|
+
size(L); // here, we have 1 parametrized family
|
|
886
|
+
print(L[1][2]); // here, @p is a nonzero parameter
|
|
887
|
+
det(L[1][2]-@p); // check whether determinante is zero
|
|
888
|
+
}
|
|
889
|
+
|
|
890
|
+
|
|
891
|
+
proc isAntiEndo(def F)
|
|
892
|
+
"USAGE: isAntiEndo(F); F is a map from current ring to itself
|
|
893
|
+
RETURN: integer, 1 if F determines an antiendomorphism of
|
|
894
|
+
current ring and 0 otherwise
|
|
895
|
+
ASSUME: F is a map from current ring to itself
|
|
896
|
+
SEE ALSO: isInvolution, involution, findInvo
|
|
897
|
+
EXAMPLE: example isAntiEndo; shows examples
|
|
898
|
+
"
|
|
899
|
+
{
|
|
900
|
+
// assumes:
|
|
901
|
+
// (1) F is from br to br
|
|
902
|
+
// I don't see how to check it; in case of error it will happen in the body
|
|
903
|
+
// (2) do not assume: F is linear, F is bijective
|
|
904
|
+
int n = nvars(basering);
|
|
905
|
+
int i,j;
|
|
906
|
+
poly pi,pj,q;
|
|
907
|
+
int answer=1;
|
|
908
|
+
ideal @f = ideal(F); list L=@f[1..ncols(@f)];
|
|
909
|
+
for (i=1; i<n; i++)
|
|
910
|
+
{
|
|
911
|
+
for (j=i+1; j<=n; j++)
|
|
912
|
+
{
|
|
913
|
+
// F( x_j x_i) =def= F(x_i) F(x_j)
|
|
914
|
+
pi = var(i);
|
|
915
|
+
pj = var(j);
|
|
916
|
+
// q = involution(pj*pi,F) - F(pi)*F(pj);
|
|
917
|
+
q = In_Poly(pj*pi,L,n) - F[i]*F[j];
|
|
918
|
+
if (q!=0)
|
|
919
|
+
{
|
|
920
|
+
answer=0; return(answer);
|
|
921
|
+
}
|
|
922
|
+
}
|
|
923
|
+
}
|
|
924
|
+
return(answer);
|
|
925
|
+
}
|
|
926
|
+
example
|
|
927
|
+
{"EXAMPLE:";echo = 2;
|
|
928
|
+
def A = makeUsl(2); setring A;
|
|
929
|
+
map I = A,-e,-f,-h; //correct antiauto involution
|
|
930
|
+
isAntiEndo(I);
|
|
931
|
+
map J = A,3*e,1/3*f,-h; // antiauto but not involution
|
|
932
|
+
isAntiEndo(J);
|
|
933
|
+
map K = A,f,e,-h; // not antiendo
|
|
934
|
+
isAntiEndo(K);
|
|
935
|
+
}
|
|
936
|
+
|
|
937
|
+
|
|
938
|
+
proc isInvolution(def F)
|
|
939
|
+
"USAGE: isInvolution(F); F is a map from current ring to itself
|
|
940
|
+
RETURN: integer, 1 if F determines an involution and 0 otherwise
|
|
941
|
+
THEORY: involution is an antiautomorphism of order 2
|
|
942
|
+
ASSUME: F is a map from current ring to itself
|
|
943
|
+
SEE ALSO: involution, findInvo, isAntiEndo
|
|
944
|
+
EXAMPLE: example isInvolution; shows examples
|
|
945
|
+
"
|
|
946
|
+
{
|
|
947
|
+
// does not assume: F is an antiautomorphism, can be antiendo
|
|
948
|
+
// allows to detect endos which are not autos
|
|
949
|
+
// isInvolution == ( F isAntiEndo && F(F)==id )
|
|
950
|
+
if (!isAntiEndo(F))
|
|
951
|
+
{
|
|
952
|
+
return(0);
|
|
953
|
+
}
|
|
954
|
+
// def G = F(F);
|
|
955
|
+
int j; poly p; ideal @f = ideal(F); list L=@f[1..ncols(@f)];
|
|
956
|
+
int nv = nvars(basering);
|
|
957
|
+
for(j=nv; j>=1; j--)
|
|
958
|
+
{
|
|
959
|
+
// p = var(j); p = F(p); p = F(p) - var(j);
|
|
960
|
+
//p = G(p) - p;
|
|
961
|
+
p = In_Poly(var(j),L,nv);
|
|
962
|
+
p = In_Poly(p,L,nv) -var(j) ;
|
|
963
|
+
|
|
964
|
+
if (p!=0)
|
|
965
|
+
{
|
|
966
|
+
return(0);
|
|
967
|
+
}
|
|
968
|
+
}
|
|
969
|
+
return(1);
|
|
970
|
+
}
|
|
971
|
+
example
|
|
972
|
+
{"EXAMPLE:";echo = 2;
|
|
973
|
+
def A = makeUsl(2); setring A;
|
|
974
|
+
map I = A,-e,-f,-h; //correct antiauto involution
|
|
975
|
+
isInvolution(I);
|
|
976
|
+
map J = A,3*e,1/3*f,-h; // antiauto but not involution
|
|
977
|
+
isInvolution(J);
|
|
978
|
+
map K = A,f,e,-h; // not antiauto
|
|
979
|
+
isInvolution(K);
|
|
980
|
+
}
|