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,351 @@
|
|
|
1
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
version="version orbitparam.lib 4.1.2.0 Feb_2019 "; // $Id: 0404076cf29a9a8402af8b496b751f0a9f3814b5 $
|
|
3
|
+
category="Algebraic Geometry";
|
|
4
|
+
info="
|
|
5
|
+
LIBRARY: orbitparam.lib Parametrizing orbits of unipotent actions
|
|
6
|
+
|
|
7
|
+
AUTHORS: J. Boehm, boehm at mathematik.uni-kl.de @*
|
|
8
|
+
S. Papadakis, papadak at math.ist.utl.pt @*
|
|
9
|
+
|
|
10
|
+
OVERVIEW:
|
|
11
|
+
|
|
12
|
+
This library implements the theorem of Chevalley-Rosenlicht as stated in Theorem 3.1.4 of [Corwin, Greenleaf].
|
|
13
|
+
Given a set of strictly upper triangular n x n matrices L_1,...,L_c which generate
|
|
14
|
+
a Lie algebra as a vector space, and a vector v of size n, the
|
|
15
|
+
function @code{parametrizeOrbit} constructs a parametrization of the orbit of v under
|
|
16
|
+
the action of exp(<L_1,...,L_c>).
|
|
17
|
+
|
|
18
|
+
To compute exp of the Lie algebra elements corresponding
|
|
19
|
+
to the parameters we require that the characteristic of the base field is zero or larger than n.
|
|
20
|
+
|
|
21
|
+
By determining the parameters from bottom to top
|
|
22
|
+
this allows you to find an element in the orbit with (at least) as many zeros as the dimension of the
|
|
23
|
+
orbit.
|
|
24
|
+
|
|
25
|
+
Note: Theorem 3.1.4 of [Corwin, Greenleaf] uses strictly lower triangular matrices.
|
|
26
|
+
|
|
27
|
+
REFERENCES:
|
|
28
|
+
|
|
29
|
+
Laurence Corwin, Frederick P. Greenleaf: Representations of Nilpotent Lie Groups and their Applications: Volume 1, Part 1, Basic Theory and Examples, Cambridge University Press (2004).
|
|
30
|
+
|
|
31
|
+
PROCEDURES:
|
|
32
|
+
|
|
33
|
+
tangentGens(list,matrix); Returns elements in the Lie algebra, which form a basis of the tangent space of the parametrization.
|
|
34
|
+
matrixExp(matrix); Matrix exp for nilpotent matrices.
|
|
35
|
+
matrixLog(matrix); Matrix log for unipotent matrices.
|
|
36
|
+
parametrizeOrbit(list,matrix); Returns parametrization of the orbit.
|
|
37
|
+
maxZeros(list,matrix); Determine an element in the orbit with the maximum number of zeroes.
|
|
38
|
+
|
|
39
|
+
KEYWORDS: nilpotent Lie algebras; unipotent groups; orbit; parametrization; Chevalley-Rosenlicht theorem
|
|
40
|
+
";
|
|
41
|
+
|
|
42
|
+
LIB "general.lib";
|
|
43
|
+
LIB "matrix.lib";
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
48
|
+
|
|
49
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
50
|
+
proc tangentGens(list L, matrix v)
|
|
51
|
+
"USAGE: tangentGens(L,v); L list, v matrix.
|
|
52
|
+
ASSUME: L is a list of strictly upper triangular n x n matrices of same size.
|
|
53
|
+
The vector space <L> generated by the elements of L should be closed
|
|
54
|
+
under the Lie bracket.
|
|
55
|
+
|
|
56
|
+
v is matrix of constants of size n x 1.
|
|
57
|
+
|
|
58
|
+
RETURN: list, with four entries
|
|
59
|
+
@* - first entry is the dimension of the orbit of under the action of exp(<L>)
|
|
60
|
+
@* - second entry is a list generators of the tangent space of the orbit of v at v
|
|
61
|
+
under the action of exp(<L>). If the characteristic p of the ground field is positive, then n has to be smaller than p. The generators are elements of <L>.
|
|
62
|
+
@* - third entry is the list of matrices with the coefficient to obtain the generators
|
|
63
|
+
as a linear combination of the elements of L
|
|
64
|
+
@* - fourth entry is list of integers with entries in v which can be made zero by the
|
|
65
|
+
action of exp(<L>)
|
|
66
|
+
|
|
67
|
+
THEORY: We apply the theorem of Chevalley-Rosenlicht.
|
|
68
|
+
|
|
69
|
+
KEYWORDS: Lie algebra; orbit; Chevalley-Rosenlicht theorem
|
|
70
|
+
|
|
71
|
+
EXAMPLE: example tangentGens; shows an example
|
|
72
|
+
|
|
73
|
+
"
|
|
74
|
+
{
|
|
75
|
+
list T;
|
|
76
|
+
list M;
|
|
77
|
+
int i;
|
|
78
|
+
int s;
|
|
79
|
+
int t;
|
|
80
|
+
list Z;
|
|
81
|
+
int d=size(L);
|
|
82
|
+
int n=nrows(v);
|
|
83
|
+
if (d<1){ERROR("expected nonempty list of generators");}
|
|
84
|
+
if (n<>nrows(L[1])){ERROR("vector should be same dimension as size of matrix");}
|
|
85
|
+
matrix A= L[1]*v;
|
|
86
|
+
for ( i=2; i <= d; i++ )
|
|
87
|
+
{
|
|
88
|
+
A=concat(A,L[i]*v);
|
|
89
|
+
}
|
|
90
|
+
matrix B;
|
|
91
|
+
for ( i=n-1; i >=1; i=i-1 )
|
|
92
|
+
{
|
|
93
|
+
B=submat(A,i..n,1..d);
|
|
94
|
+
matrix E[n-i+1][1];
|
|
95
|
+
E[1,1]=1;
|
|
96
|
+
list LU=ludecomp(B);
|
|
97
|
+
list Q=lusolve(LU[1],LU[2],LU[3],E);
|
|
98
|
+
if (Q[1]<>0){
|
|
99
|
+
s++;
|
|
100
|
+
T[s]=Q[2];
|
|
101
|
+
matrix C = Q[2][1,1]*L[1];
|
|
102
|
+
for ( t=2; t <= d; t++ )
|
|
103
|
+
{
|
|
104
|
+
C=C+Q[2][t,1]*L[t];
|
|
105
|
+
}
|
|
106
|
+
M[s]=C;
|
|
107
|
+
Z[s]=i;
|
|
108
|
+
kill C;
|
|
109
|
+
}
|
|
110
|
+
kill E,LU,Q;
|
|
111
|
+
}
|
|
112
|
+
return(list(s,M,T,Z));
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
example
|
|
116
|
+
{ "EXAMPLE:";
|
|
117
|
+
ring R = 0,(x),dp;
|
|
118
|
+
matrix L1[3][3] = 0,1,0, 0,0,0, 0,0,0;
|
|
119
|
+
matrix L2[3][3] = 0,0,1, 0,0,0, 0,0,0;
|
|
120
|
+
matrix L3[3][3] = 0,1,1, 0,0,1, 0,0,0;
|
|
121
|
+
list L = L1,L2,L3;
|
|
122
|
+
matrix v[3][1] = 1,2,3;
|
|
123
|
+
tangentGens(L,v);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
proc matrixExp(matrix A)
|
|
128
|
+
"USAGE: matrixExp(A); A matrix.
|
|
129
|
+
ASSUME: A is a nilpotent n x n matrix.
|
|
130
|
+
If the characteristic p of the ground field is positive, then n has to be
|
|
131
|
+
smaller than p.
|
|
132
|
+
|
|
133
|
+
RETURN: matrix, exp(A)
|
|
134
|
+
|
|
135
|
+
THEORY: We compute the power series, which terminates since A is nilpotent.
|
|
136
|
+
|
|
137
|
+
KEYWORDS: Exp for matrices
|
|
138
|
+
|
|
139
|
+
EXAMPLE: example matrixExp; shows an example
|
|
140
|
+
|
|
141
|
+
"
|
|
142
|
+
{
|
|
143
|
+
int i;
|
|
144
|
+
int n = nrows(A);
|
|
145
|
+
if (n<>ncols(A)){
|
|
146
|
+
ERROR("expected square matrix");
|
|
147
|
+
}
|
|
148
|
+
matrix Z[n][n];
|
|
149
|
+
matrix B[n][n];
|
|
150
|
+
B=B+1;
|
|
151
|
+
matrix D[n][n];
|
|
152
|
+
D=D+1;
|
|
153
|
+
number j=1;
|
|
154
|
+
for (i=1; i <= n; i++ )
|
|
155
|
+
{
|
|
156
|
+
j=j*i;
|
|
157
|
+
D=D*A;
|
|
158
|
+
if (D==Z){break;}
|
|
159
|
+
B=B+(1/j)*D;
|
|
160
|
+
}
|
|
161
|
+
return(B);}
|
|
162
|
+
example
|
|
163
|
+
{ "EXAMPLE:";
|
|
164
|
+
ring R = 0,(x),dp;
|
|
165
|
+
matrix A[4][4] = 0,0,1,0, 0,0,1,0, 0,0,0,0;
|
|
166
|
+
matrixExp(A);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
proc matrixLog(matrix A)
|
|
171
|
+
"USAGE: matrixLog(A); A matrix.
|
|
172
|
+
ASSUME: A-E is a nilpotent n x n matrix.
|
|
173
|
+
If the characteristic p of the ground field is positive, then n has to be
|
|
174
|
+
smaller than p.
|
|
175
|
+
|
|
176
|
+
RETURN: matrix, log(A)
|
|
177
|
+
|
|
178
|
+
THEORY: We compute the power series, which terminates since A-E is nilpotent.
|
|
179
|
+
|
|
180
|
+
KEYWORDS: Log for matrices
|
|
181
|
+
|
|
182
|
+
EXAMPLE: example matrixLog; shows an example
|
|
183
|
+
|
|
184
|
+
"
|
|
185
|
+
{
|
|
186
|
+
int i;
|
|
187
|
+
int n = nrows(A);
|
|
188
|
+
if (n<>ncols(A)){
|
|
189
|
+
ERROR("expected square matrix");
|
|
190
|
+
}
|
|
191
|
+
matrix Z[n][n];
|
|
192
|
+
matrix B[n][n];
|
|
193
|
+
matrix D[n][n];
|
|
194
|
+
matrix N[n][n]= A-1;
|
|
195
|
+
D=D+1;
|
|
196
|
+
number j;
|
|
197
|
+
for (i=1; i <= n; i++ )
|
|
198
|
+
{
|
|
199
|
+
j=j+1;
|
|
200
|
+
D=D*N;
|
|
201
|
+
if (D==Z){break;}
|
|
202
|
+
B=B+(1/j)*(-1)^(i+1)*D;
|
|
203
|
+
}
|
|
204
|
+
return(B);}
|
|
205
|
+
example
|
|
206
|
+
{ "EXAMPLE:";
|
|
207
|
+
ring R = 0,(s,t),dp;
|
|
208
|
+
matrix A[3][3] = 1,s,st/2, 0,1,t, 0,0,1;
|
|
209
|
+
matrixLog(A);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
proc parametrizeOrbit(list L, matrix v)
|
|
215
|
+
"USAGE: parametrizeOrbit(L,v); L list, v matrix.
|
|
216
|
+
ASSUME: L is a list of strictly upper triangular n x n matrices of same size.
|
|
217
|
+
The vector space <L> generated by the elements of L should be closed
|
|
218
|
+
under the Lie bracket.
|
|
219
|
+
@* v is matrix of constants of size n x 1.
|
|
220
|
+
@* The basering has at least size(L) variables. However we will only use
|
|
221
|
+
tangentGens(L,v)[1] many of them.
|
|
222
|
+
|
|
223
|
+
RETURN: list, with four entries
|
|
224
|
+
@* - int, dimension of the orbit
|
|
225
|
+
@* - matrix A over the basering giving a parametrization of the orbit of v under the action of exp(<L>).
|
|
226
|
+
@* - list of integers, with the (row)-indices of entries which can be deleted by the action
|
|
227
|
+
@* - the variables of the parametrization to solve for
|
|
228
|
+
|
|
229
|
+
THEORY: We apply the theorem of Chevalley-Rosenlicht. First we determine tangent space generators,
|
|
230
|
+
then apply @code{matrixExp} to the generators, and finally take the product
|
|
231
|
+
to obtain the parametrization.
|
|
232
|
+
|
|
233
|
+
KEYWORDS: Lie group; orbit; parametrization
|
|
234
|
+
|
|
235
|
+
EXAMPLE: example parametrizeOrbit; shows an example
|
|
236
|
+
"
|
|
237
|
+
{
|
|
238
|
+
list T = tangentGens(L,v);
|
|
239
|
+
list T2 = T[2];
|
|
240
|
+
int i;
|
|
241
|
+
int d=size(L);
|
|
242
|
+
list vL;
|
|
243
|
+
if (nvars(basering)<d)
|
|
244
|
+
{
|
|
245
|
+
ERROR("expected basering with at least generators many variables");
|
|
246
|
+
}
|
|
247
|
+
for (i=1; i <= size(T2); i++ )
|
|
248
|
+
{
|
|
249
|
+
v = matrixExp(T2[size(T2)-i+1]*var(size(T2)-i+1))*v;
|
|
250
|
+
vL[i]=var(i);
|
|
251
|
+
}
|
|
252
|
+
return(list(T[1],v,T[4],vL));
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
example
|
|
256
|
+
{ "EXAMPLE:";
|
|
257
|
+
ring R = 0,(t(1..3)),dp;
|
|
258
|
+
matrix L1[3][3] = 0,1,0, 0,0,0, 0,0,0;
|
|
259
|
+
matrix L2[3][3] = 0,0,1, 0,0,0, 0,0,0;
|
|
260
|
+
matrix L3[3][3] = 0,1,1, 0,0,1, 0,0,0;
|
|
261
|
+
list L = L1,L2,L3;
|
|
262
|
+
matrix v[3][1] = 1,2,3;
|
|
263
|
+
parametrizeOrbit(L,v);
|
|
264
|
+
|
|
265
|
+
ring R1 = 0,(t(1..2)),dp;
|
|
266
|
+
matrix L1[4][4] = 0,1,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0;
|
|
267
|
+
matrix L2[4][4] = 0,0,1,0, 0,0,0,1, 0,0,0,0, 0,0,0,0;
|
|
268
|
+
list L = L1,L2;
|
|
269
|
+
matrix v[4][1] = 1,2,3,4;
|
|
270
|
+
parametrizeOrbit(L,v);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
proc maxZeros(list L, matrix v)
|
|
275
|
+
"USAGE: maxZeros(L,v); L list, v matrix.
|
|
276
|
+
ASSUME: L is a list of strictly upper triangular n x n matrices of same size.
|
|
277
|
+
The vector space <L> generated by the elements of L should be closed
|
|
278
|
+
under the Lie bracket.
|
|
279
|
+
|
|
280
|
+
v is matrix of constants of size n x 1.
|
|
281
|
+
|
|
282
|
+
The basering has at least size(L) variables. However we will only use
|
|
283
|
+
tangentGens(L,v)[1] many of them.
|
|
284
|
+
|
|
285
|
+
RETURN: matrix of constants over the basering giving an element in the orbit of v
|
|
286
|
+
under the action of exp(<L>) with (at least) as many zeros as the dimension of the
|
|
287
|
+
orbit.
|
|
288
|
+
|
|
289
|
+
THEORY: We apply @code{parametrizeOrbit} to obtain a parametrization of the orbit
|
|
290
|
+
according to the theorem of Chevalley-Rosenlicht. By determining the parameters from bottom to top
|
|
291
|
+
we find an element in the orbit with (at least) as many zeros as the dimension of the
|
|
292
|
+
orbit.
|
|
293
|
+
|
|
294
|
+
KEYWORDS: Lie group; orbit; maximum number of zeroes
|
|
295
|
+
|
|
296
|
+
EXAMPLE: example parametrizeOrbit; shows an example
|
|
297
|
+
"
|
|
298
|
+
{
|
|
299
|
+
int d = size(L);
|
|
300
|
+
def Roriginal = basering;
|
|
301
|
+
list rl = ringlist(Roriginal);
|
|
302
|
+
int k;
|
|
303
|
+
for(k = 1; k <= d; k++)
|
|
304
|
+
{
|
|
305
|
+
rl[2][k] = "x("+string(k)+")";
|
|
306
|
+
}
|
|
307
|
+
rl[3]= list(list("dp",1:(d)),list("C",0));
|
|
308
|
+
def R = ring(rl);
|
|
309
|
+
setring R;
|
|
310
|
+
list L = fetch(Roriginal,L);
|
|
311
|
+
matrix v = fetch(Roriginal,v);
|
|
312
|
+
list P = parametrizeOrbit(L,v);
|
|
313
|
+
matrix p = P[2];
|
|
314
|
+
int n = P[1];
|
|
315
|
+
list idx = P[3];
|
|
316
|
+
list va = P[4];
|
|
317
|
+
poly equ,rhs;
|
|
318
|
+
number de;
|
|
319
|
+
list parval;
|
|
320
|
+
for(k = 1; k <= n; k++)
|
|
321
|
+
{
|
|
322
|
+
equ = p[idx[k],1];
|
|
323
|
+
rhs=-number(subst(equ,va[k],0));
|
|
324
|
+
de = number(diff (equ, va[k]));
|
|
325
|
+
parval[k] = rhs/de;
|
|
326
|
+
p = subst(p,va[k],rhs/de);
|
|
327
|
+
}
|
|
328
|
+
setring(Roriginal);
|
|
329
|
+
matrix p=fetch(R,p);
|
|
330
|
+
return(p);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
example
|
|
334
|
+
{ "EXAMPLE:";
|
|
335
|
+
ring R = 0,(x),dp;
|
|
336
|
+
matrix L1[3][3] = 0,1,0, 0,0,0, 0,0,0;
|
|
337
|
+
matrix L2[3][3] = 0,0,1, 0,0,0, 0,0,0;
|
|
338
|
+
matrix L3[3][3] = 0,1,1, 0,0,1, 0,0,0;
|
|
339
|
+
list L = L1,L2,L3;
|
|
340
|
+
matrix v[3][1] = 1,2,3;
|
|
341
|
+
maxZeros(L,v);
|
|
342
|
+
|
|
343
|
+
ring R1 = 0,(x),dp;
|
|
344
|
+
matrix L1[4][4] = 0,1,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0;
|
|
345
|
+
matrix L2[4][4] = 0,0,1,0, 0,0,0,1, 0,0,0,0, 0,0,0,0;
|
|
346
|
+
list L = L1,L2;
|
|
347
|
+
matrix v[4][1] = 1,2,3,4;
|
|
348
|
+
maxZeros(L,v);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
////////////////////////////////////////////////////////////////////
|
|
2
|
+
version="version parallel.lib 4.4.1.1 Feb_2025 "; // $Id: a5e93aee5a9d3333810fc57b6fd047fa89e9f5b9 $
|
|
3
|
+
category="General purpose";
|
|
4
|
+
info="
|
|
5
|
+
LIBRARY: parallel.lib An abstraction layer for parallel skeletons
|
|
6
|
+
|
|
7
|
+
AUTHOR: Andreas Steenpass, e-mail: steenpass@mathematik.uni-kl.de
|
|
8
|
+
|
|
9
|
+
OVERVIEW:
|
|
10
|
+
This library provides implementations of several parallel 'skeletons' (i.e.
|
|
11
|
+
ways in which parallel tasks rely upon and interact with each other). It is
|
|
12
|
+
based on the library tasks.lib and aims at both ordinary Singular users as well
|
|
13
|
+
as authors of Singular libraries.
|
|
14
|
+
|
|
15
|
+
KEYWORDS: parallelization; parallel skeletons; distributed computing
|
|
16
|
+
|
|
17
|
+
SEE ALSO: resources_lib, tasks_lib, modstd_lib, normal_lib
|
|
18
|
+
|
|
19
|
+
PROCEDURES:
|
|
20
|
+
parallelWaitN(); execute several jobs in parallel
|
|
21
|
+
and wait for N of them to finish
|
|
22
|
+
parallelWaitFirst(); execute several jobs in parallel
|
|
23
|
+
and wait for the first to finish
|
|
24
|
+
parallelWaitAll(); execute several jobs in parallel
|
|
25
|
+
and wait for all of them to finish
|
|
26
|
+
parallelTestAND(); run several tests in parallel
|
|
27
|
+
and determine if they all succeed
|
|
28
|
+
parallelTestOR(); run several tests in parallel
|
|
29
|
+
and determine if any of them succeeds
|
|
30
|
+
";
|
|
31
|
+
|
|
32
|
+
LIB "tasks.lib";
|
|
33
|
+
|
|
34
|
+
proc parallelWaitN(alias list commands, alias list args, int N, list #)
|
|
35
|
+
"USAGE: parallelWaitN(commands, arguments, N[, timeout]); commands list,
|
|
36
|
+
arguments list, N int, timeout int
|
|
37
|
+
RETURN: a list, containing the results of commands[i] applied to
|
|
38
|
+
arguments[i], i = 1, ..., size(arguments).
|
|
39
|
+
@* The procedure waits for N jobs to finish.
|
|
40
|
+
@* An optional timeout in ms can be provided. Default is 0 which
|
|
41
|
+
disables the timeout.
|
|
42
|
+
NOTE: The entries of the list commands must be strings. The entries of the
|
|
43
|
+
list arguments must be lists.
|
|
44
|
+
@* The type of any entry of the returned list whose corresponding task
|
|
45
|
+
did not finish (due to timeout or error) is \"none\".
|
|
46
|
+
@* The returned list may contain more than N results if several jobs
|
|
47
|
+
finished \"at the same time\". It may contain less than N results in
|
|
48
|
+
the case of timeout or errors occurring.
|
|
49
|
+
SEE ALSO: parallelWaitAll, parallelWaitFirst, tasks_lib
|
|
50
|
+
EXAMPLE: example parallelWaitN; shows an example"
|
|
51
|
+
{
|
|
52
|
+
// auxiliary variables
|
|
53
|
+
int i;
|
|
54
|
+
|
|
55
|
+
// read optional parameters
|
|
56
|
+
int timeout;
|
|
57
|
+
int ncores; // obsolete, but kept for compatibility with old libraries
|
|
58
|
+
if (size(#) > 0) {
|
|
59
|
+
if (typeof(#[1]) != "int") {
|
|
60
|
+
ERROR("wrong optional parameters");
|
|
61
|
+
}
|
|
62
|
+
timeout = #[1];
|
|
63
|
+
if (size(#) > 1) {
|
|
64
|
+
if (size(#) > 2 || typeof(#[2]) != "int") {
|
|
65
|
+
ERROR("wrong optional parameters");
|
|
66
|
+
}
|
|
67
|
+
ncores = #[2];
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// apply wrapper for obsolete optional parameter ncores
|
|
72
|
+
if (ncores) {
|
|
73
|
+
list semaphore_save = Resources::setcores_subtree(ncores);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// error checking
|
|
77
|
+
int njobs = size(commands);
|
|
78
|
+
if (njobs != size(args)) {
|
|
79
|
+
ERROR("The number of commands does not match the number of lists"
|
|
80
|
+
+newline+"of arguments.");
|
|
81
|
+
}
|
|
82
|
+
if (njobs == 0) {
|
|
83
|
+
ERROR("no commands specified");
|
|
84
|
+
}
|
|
85
|
+
for (i = 1; i <= njobs; i++) {
|
|
86
|
+
if (typeof(commands[i]) != "string") {
|
|
87
|
+
ERROR("The first argument is not a list of strings.");
|
|
88
|
+
}
|
|
89
|
+
if (typeof(args[i]) != "list") {
|
|
90
|
+
ERROR("The second argument is not a list of lists.");
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
list results;
|
|
95
|
+
if(system("cpu")<=1)
|
|
96
|
+
{
|
|
97
|
+
list tmp;
|
|
98
|
+
int tmp_s;
|
|
99
|
+
for(i=njobs;i>0;i--)
|
|
100
|
+
{
|
|
101
|
+
tmp=args[i];
|
|
102
|
+
tmp_s=size(tmp);
|
|
103
|
+
execute("results[i]="+commands[i]+"(tmp[1..tmp_s]);");
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
else
|
|
107
|
+
{
|
|
108
|
+
// compute the tasks
|
|
109
|
+
for (i = 1; i <= njobs; i++) {
|
|
110
|
+
task t(i) = commands[i], args[i];
|
|
111
|
+
}
|
|
112
|
+
startTasks(t(1..njobs));
|
|
113
|
+
list indices = waitTasks(list(t(1..njobs)), N, timeout);
|
|
114
|
+
|
|
115
|
+
// wrap back to saved semaphore
|
|
116
|
+
if (ncores) {
|
|
117
|
+
Resources::resetcores_subtree(semaphore_save);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// return results
|
|
121
|
+
for (i = size(indices); i > 0; i--) {
|
|
122
|
+
results[indices[i]] = getResult(t(indices[i]));
|
|
123
|
+
}
|
|
124
|
+
for (i = 1; i <= njobs; i++) {
|
|
125
|
+
killTask(t(i));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return(results);
|
|
129
|
+
}
|
|
130
|
+
example
|
|
131
|
+
{
|
|
132
|
+
"EXAMPLE:";
|
|
133
|
+
echo = 2;
|
|
134
|
+
ring R = 0, (x,y,z), lp;
|
|
135
|
+
ideal I = 3x3y+x3+xy3+y2z2, 2x3z-xy-xz3-y4-z2, 2x2yz-2xy2+xz2-y4;
|
|
136
|
+
ideal J = x10+x9y2, x2y7-y8;
|
|
137
|
+
list commands = list("std", "std");
|
|
138
|
+
list arguments = list(list(I), list(J));
|
|
139
|
+
parallelWaitN(commands, arguments, 1);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
proc parallelWaitFirst(alias list commands, alias list args, list #)
|
|
143
|
+
"USAGE: parallelWaitFirst(commands, args[, timeout]); commands list,
|
|
144
|
+
arguments list, timeout int
|
|
145
|
+
RETURN: a list, containing at least one (if no timeout occurs) of the results
|
|
146
|
+
of commands[i] applied to arguments[i], i = 1, ..., size(arguments).
|
|
147
|
+
@* The command @code{parallelWaitFirst(commands, arguments[, timeout])}
|
|
148
|
+
is synonymous to
|
|
149
|
+
@code{parallelWaitN(commands, arguments, 1[, timeout])}. See
|
|
150
|
+
@ref{parallelWaitN} for details on optional arguments and other
|
|
151
|
+
remarks.
|
|
152
|
+
SEE ALSO: parallelWaitN, parallelWaitAll, tasks_lib
|
|
153
|
+
EXAMPLE: example parallelWaitFirst; shows an example"
|
|
154
|
+
{
|
|
155
|
+
return(parallelWaitN(commands, args, 1, #));
|
|
156
|
+
}
|
|
157
|
+
example
|
|
158
|
+
{
|
|
159
|
+
"EXAMPLE:";
|
|
160
|
+
echo = 2;
|
|
161
|
+
ring R = 0, (x,y,z), lp;
|
|
162
|
+
ideal I = 3x3y+x3+xy3+y2z2, 2x3z-xy-xz3-y4-z2, 2x2yz-2xy2+xz2-y4;
|
|
163
|
+
ideal J = x10+x9y2, x2y7-y8;
|
|
164
|
+
list commands = list("std", "std");
|
|
165
|
+
list arguments = list(list(I), list(J));
|
|
166
|
+
parallelWaitFirst(commands, arguments);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
proc parallelWaitAll(alias def commands, alias list args, list #)
|
|
170
|
+
"USAGE: parallelWaitAll(commands, arguments[, timeout]); commands list or
|
|
171
|
+
string, arguments list, timeout int
|
|
172
|
+
RETURN: a list, containing the results of commands[i] applied to
|
|
173
|
+
arguments[i], i = 1, ..., size(arguments).
|
|
174
|
+
@* The command @code{parallelWaitAll(commands, arguments[, timeout])} is
|
|
175
|
+
synonymous to @code{parallelWaitN(commands, arguments,
|
|
176
|
+
size(arguments)[, timeout])}. See @ref{parallelWaitN} for details on
|
|
177
|
+
optional arguments and other remarks.
|
|
178
|
+
NOTE: As a shortcut, @code{commands} can be a string. This is synonymous to
|
|
179
|
+
providing a list of @code{size(arguments)} copies of this string.
|
|
180
|
+
SEE ALSO: parallelWaitFirst, parallelWaitN, tasks_lib
|
|
181
|
+
EXAMPLE: example parallelWaitAll; shows an example"
|
|
182
|
+
{
|
|
183
|
+
if (typeof(commands) != "list" && typeof(commands) != "string") {
|
|
184
|
+
ERROR("invalid type of first argument");
|
|
185
|
+
}
|
|
186
|
+
if (typeof(commands) == "list") {
|
|
187
|
+
return(parallelWaitN(commands, args, size(args), #));
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
list cmds;
|
|
191
|
+
for (int i = size(args); i > 0; i--) {
|
|
192
|
+
cmds[i] = commands;
|
|
193
|
+
}
|
|
194
|
+
return(parallelWaitN(cmds, args, size(args), #));
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
example
|
|
198
|
+
{
|
|
199
|
+
"EXAMPLE:";
|
|
200
|
+
echo = 2;
|
|
201
|
+
ring R = 0, (x,y,z), dp;
|
|
202
|
+
ideal I1 = z8+z6+4z5+4z3+4z2+4, -z2+y;
|
|
203
|
+
ideal I2 = x9y2+x10, x2y7-y8;
|
|
204
|
+
ideal I3 = x3-2xy, x2y-2y2+x;
|
|
205
|
+
string command = "std";
|
|
206
|
+
list arguments = list(list(I1), list(I2), list(I3));
|
|
207
|
+
parallelWaitAll(command, arguments);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
proc parallelTestAND(alias def commands, alias list args, list #)
|
|
211
|
+
"USAGE: parallelTestAND(commands, arguments[, timeout]); commands list or
|
|
212
|
+
string, arguments list, timeout int
|
|
213
|
+
RETURN: 1, if commands[i] applied to arguments[i] is not equal to zero for
|
|
214
|
+
all i = 1, ..., size(arguments);
|
|
215
|
+
0, otherwise.
|
|
216
|
+
@* An optional timeout in ms can be provided. Default is 0 which
|
|
217
|
+
disables the timeout. In case of timeout, -1 is returned.
|
|
218
|
+
NOTE: The entries of the list commands must be strings. The entries of the
|
|
219
|
+
list arguments must be lists.
|
|
220
|
+
@* commands[i] applied to arguments[i] must evaluate to an integer for
|
|
221
|
+
i = 1, ..., size(arguments).
|
|
222
|
+
@* As a shortcut, @code{commands} can be a string. This is synonymous to
|
|
223
|
+
providing a list of @code{size(arguments)} copies of this string.
|
|
224
|
+
SEE ALSO: parallelTestOR, tasks_lib
|
|
225
|
+
EXAMPLE: example parallelTestAND; shows an example"
|
|
226
|
+
{
|
|
227
|
+
// note: this can be improved
|
|
228
|
+
list results = parallelWaitAll(commands, args, #);
|
|
229
|
+
int i;
|
|
230
|
+
for (i = size(args); i > 0; i--) {
|
|
231
|
+
if (typeof(results[i]) != "int" && typeof(results[i]) != "none") {
|
|
232
|
+
ERROR("result no. "+string(i)+" not of type int");
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
for (i = size(args); i > 0; i--) {
|
|
236
|
+
if (typeof(results[i]) == "none") { // timeout
|
|
237
|
+
return(-1);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
for (i = size(results); i > 0; i--) {
|
|
241
|
+
if (!results[i]) {
|
|
242
|
+
return(0);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
return(1);
|
|
246
|
+
}
|
|
247
|
+
example
|
|
248
|
+
{
|
|
249
|
+
"EXAMPLE:";
|
|
250
|
+
echo = 2;
|
|
251
|
+
ring R = 0, (x,y,z), dp;
|
|
252
|
+
ideal I = x, y, z;
|
|
253
|
+
intvec v = 0:3;
|
|
254
|
+
list l = list(I, v);
|
|
255
|
+
module m1 = x*gen(1);
|
|
256
|
+
module m2;
|
|
257
|
+
string command = "size";
|
|
258
|
+
list arguments1 = list(list(I), list(v), list(l), list(m1));
|
|
259
|
+
list arguments2 = list(list(I), list(v), list(l), list(m2));
|
|
260
|
+
// test if all the arguments have non-zero size
|
|
261
|
+
parallelTestAND(command, arguments1);
|
|
262
|
+
parallelTestAND(command, arguments2);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
proc parallelTestOR(alias def commands, alias list args, list #)
|
|
266
|
+
"USAGE: parallelTestOR(commands, arguments[, timeout]); commands list or
|
|
267
|
+
string, arguments list, timeout int
|
|
268
|
+
RETURN: 1, if commands[i] applied to arguments[i] is not equal to zero for
|
|
269
|
+
any i = 1, ..., size(arguments);
|
|
270
|
+
0, otherwise.
|
|
271
|
+
@* An optional timeout in ms can be provided. Default is 0 which
|
|
272
|
+
disables the timeout. In case of timeout, -1 is returned.
|
|
273
|
+
NOTE: The entries of the list commands must be strings. The entries of the
|
|
274
|
+
list arguments must be lists.
|
|
275
|
+
@* commands[i] applied to arguments[i] must evaluate to an integer for
|
|
276
|
+
i = 1, ..., size(arguments).
|
|
277
|
+
@* As a shortcut, @code{commands} can be a string. This is synonymous to
|
|
278
|
+
providing a list of @code{size(arguments)} copies of this string.
|
|
279
|
+
SEE ALSO: parallelTestAND, tasks_lib
|
|
280
|
+
EXAMPLE: example parallelTestAND; shows an example"
|
|
281
|
+
{
|
|
282
|
+
// note: this can be improved
|
|
283
|
+
list results = parallelWaitAll(commands, args, #);
|
|
284
|
+
int i;
|
|
285
|
+
for (i = size(args); i > 0; i--) {
|
|
286
|
+
if (typeof(results[i]) != "int" && typeof(results[i]) != "none") {
|
|
287
|
+
ERROR("result no. "+string(i)+" not of type int");
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
for (i = size(args); i > 0; i--) {
|
|
291
|
+
if (typeof(results[i]) == "none") { // timeout
|
|
292
|
+
return(-1);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
for (i = size(results); i > 0; i--) {
|
|
296
|
+
if (results[i]) {
|
|
297
|
+
return(1);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
return(0);
|
|
301
|
+
}
|
|
302
|
+
example
|
|
303
|
+
{
|
|
304
|
+
"EXAMPLE:";
|
|
305
|
+
echo = 2;
|
|
306
|
+
ring R = 0, (x,y,z), dp;
|
|
307
|
+
ideal I;
|
|
308
|
+
string s;
|
|
309
|
+
list l;
|
|
310
|
+
module m1 = x*gen(1);
|
|
311
|
+
module m2;
|
|
312
|
+
string command = "size";
|
|
313
|
+
list arguments1 = list(list(I), list(s), list(l), list(m1));
|
|
314
|
+
list arguments2 = list(list(I), list(s), list(l), list(m2));
|
|
315
|
+
// test if any of the arguments has non-zero size
|
|
316
|
+
parallelTestOR(command, arguments1);
|
|
317
|
+
parallelTestOR(command, arguments2);
|
|
318
|
+
}
|
|
319
|
+
|