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.

Files changed (491) hide show
  1. PySingular.cpython-314-x86_64-linux-gnu.so +0 -0
  2. passagemath_singular-10.6.31rc3.dist-info/METADATA +183 -0
  3. passagemath_singular-10.6.31rc3.dist-info/RECORD +491 -0
  4. passagemath_singular-10.6.31rc3.dist-info/WHEEL +6 -0
  5. passagemath_singular-10.6.31rc3.dist-info/top_level.txt +3 -0
  6. passagemath_singular.libs/libSingular-4-20aec911.4.1.so +0 -0
  7. passagemath_singular.libs/libcddgmp-21acf0c6.so.0.1.3 +0 -0
  8. passagemath_singular.libs/libfactory-4-fcee31da.4.1.so +0 -0
  9. passagemath_singular.libs/libflint-66e12231.so.21.0.0 +0 -0
  10. passagemath_singular.libs/libgf2x-a4cdec90.so.3.0.0 +0 -0
  11. passagemath_singular.libs/libgfortran-83c28eba.so.5.0.0 +0 -0
  12. passagemath_singular.libs/libgmp-6e109695.so.10.5.0 +0 -0
  13. passagemath_singular.libs/libgsl-cda90e79.so.28.0.0 +0 -0
  14. passagemath_singular.libs/libmpfr-82690d50.so.6.2.1 +0 -0
  15. passagemath_singular.libs/libntl-e6f0d543.so.44.0.1 +0 -0
  16. passagemath_singular.libs/libomalloc-0-5c9e866e.9.6.so +0 -0
  17. passagemath_singular.libs/libopenblasp-r0-6dcb67f9.3.29.so +0 -0
  18. passagemath_singular.libs/libpolys-4-5c0a87e0.4.1.so +0 -0
  19. passagemath_singular.libs/libquadmath-2284e583.so.0.0.0 +0 -0
  20. passagemath_singular.libs/libreadline-ea270e21.so.8.2 +0 -0
  21. passagemath_singular.libs/libsingular_resources-4-a1aafc6d.4.1.so +0 -0
  22. passagemath_singular.libs/libtinfo-ceb117d9.so.6.3 +0 -0
  23. sage/algebras/all__sagemath_singular.py +3 -0
  24. sage/algebras/fusion_rings/all.py +19 -0
  25. sage/algebras/fusion_rings/f_matrix.py +2448 -0
  26. sage/algebras/fusion_rings/fast_parallel_fmats_methods.cpython-314-x86_64-linux-gnu.so +0 -0
  27. sage/algebras/fusion_rings/fast_parallel_fmats_methods.pxd +5 -0
  28. sage/algebras/fusion_rings/fast_parallel_fmats_methods.pyx +538 -0
  29. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.cpython-314-x86_64-linux-gnu.so +0 -0
  30. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pxd +3 -0
  31. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pyx +331 -0
  32. sage/algebras/fusion_rings/fusion_double.py +899 -0
  33. sage/algebras/fusion_rings/fusion_ring.py +1580 -0
  34. sage/algebras/fusion_rings/poly_tup_engine.cpython-314-x86_64-linux-gnu.so +0 -0
  35. sage/algebras/fusion_rings/poly_tup_engine.pxd +24 -0
  36. sage/algebras/fusion_rings/poly_tup_engine.pyx +579 -0
  37. sage/algebras/fusion_rings/shm_managers.cpython-314-x86_64-linux-gnu.so +0 -0
  38. sage/algebras/fusion_rings/shm_managers.pxd +24 -0
  39. sage/algebras/fusion_rings/shm_managers.pyx +780 -0
  40. sage/algebras/letterplace/all.py +1 -0
  41. sage/algebras/letterplace/free_algebra_element_letterplace.cpython-314-x86_64-linux-gnu.so +0 -0
  42. sage/algebras/letterplace/free_algebra_element_letterplace.pxd +18 -0
  43. sage/algebras/letterplace/free_algebra_element_letterplace.pyx +755 -0
  44. sage/algebras/letterplace/free_algebra_letterplace.cpython-314-x86_64-linux-gnu.so +0 -0
  45. sage/algebras/letterplace/free_algebra_letterplace.pxd +35 -0
  46. sage/algebras/letterplace/free_algebra_letterplace.pyx +914 -0
  47. sage/algebras/letterplace/letterplace_ideal.cpython-314-x86_64-linux-gnu.so +0 -0
  48. sage/algebras/letterplace/letterplace_ideal.pyx +408 -0
  49. sage/algebras/quatalg/all.py +2 -0
  50. sage/algebras/quatalg/quaternion_algebra.py +4778 -0
  51. sage/algebras/quatalg/quaternion_algebra_cython.cpython-314-x86_64-linux-gnu.so +0 -0
  52. sage/algebras/quatalg/quaternion_algebra_cython.pyx +261 -0
  53. sage/algebras/quatalg/quaternion_algebra_element.cpython-314-x86_64-linux-gnu.so +0 -0
  54. sage/algebras/quatalg/quaternion_algebra_element.pxd +29 -0
  55. sage/algebras/quatalg/quaternion_algebra_element.pyx +2176 -0
  56. sage/all__sagemath_singular.py +11 -0
  57. sage/ext_data/all__sagemath_singular.py +1 -0
  58. sage/ext_data/singular/function_field/core.lib +98 -0
  59. sage/interfaces/all__sagemath_singular.py +1 -0
  60. sage/interfaces/singular.py +2835 -0
  61. sage/libs/all__sagemath_singular.py +1 -0
  62. sage/libs/singular/__init__.py +1 -0
  63. sage/libs/singular/decl.pxd +1168 -0
  64. sage/libs/singular/function.cpython-314-x86_64-linux-gnu.so +0 -0
  65. sage/libs/singular/function.pxd +87 -0
  66. sage/libs/singular/function.pyx +1901 -0
  67. sage/libs/singular/function_factory.py +61 -0
  68. sage/libs/singular/groebner_strategy.cpython-314-x86_64-linux-gnu.so +0 -0
  69. sage/libs/singular/groebner_strategy.pxd +22 -0
  70. sage/libs/singular/groebner_strategy.pyx +582 -0
  71. sage/libs/singular/option.cpython-314-x86_64-linux-gnu.so +0 -0
  72. sage/libs/singular/option.pyx +671 -0
  73. sage/libs/singular/polynomial.cpython-314-x86_64-linux-gnu.so +0 -0
  74. sage/libs/singular/polynomial.pxd +39 -0
  75. sage/libs/singular/polynomial.pyx +661 -0
  76. sage/libs/singular/ring.cpython-314-x86_64-linux-gnu.so +0 -0
  77. sage/libs/singular/ring.pxd +58 -0
  78. sage/libs/singular/ring.pyx +893 -0
  79. sage/libs/singular/singular.cpython-314-x86_64-linux-gnu.so +0 -0
  80. sage/libs/singular/singular.pxd +72 -0
  81. sage/libs/singular/singular.pyx +1944 -0
  82. sage/libs/singular/standard_options.py +145 -0
  83. sage/matrix/all__sagemath_singular.py +1 -0
  84. sage/matrix/matrix_mpolynomial_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  85. sage/matrix/matrix_mpolynomial_dense.pxd +7 -0
  86. sage/matrix/matrix_mpolynomial_dense.pyx +615 -0
  87. sage/rings/all__sagemath_singular.py +1 -0
  88. sage/rings/function_field/all__sagemath_singular.py +1 -0
  89. sage/rings/function_field/derivations_polymod.py +911 -0
  90. sage/rings/function_field/element_polymod.cpython-314-x86_64-linux-gnu.so +0 -0
  91. sage/rings/function_field/element_polymod.pyx +406 -0
  92. sage/rings/function_field/function_field_polymod.py +2611 -0
  93. sage/rings/function_field/ideal_polymod.py +1775 -0
  94. sage/rings/function_field/order_polymod.py +1475 -0
  95. sage/rings/function_field/place_polymod.py +681 -0
  96. sage/rings/polynomial/all__sagemath_singular.py +1 -0
  97. sage/rings/polynomial/multi_polynomial_ideal_libsingular.cpython-314-x86_64-linux-gnu.so +0 -0
  98. sage/rings/polynomial/multi_polynomial_ideal_libsingular.pxd +5 -0
  99. sage/rings/polynomial/multi_polynomial_ideal_libsingular.pyx +339 -0
  100. sage/rings/polynomial/multi_polynomial_libsingular.cpython-314-x86_64-linux-gnu.so +0 -0
  101. sage/rings/polynomial/multi_polynomial_libsingular.pxd +30 -0
  102. sage/rings/polynomial/multi_polynomial_libsingular.pyx +6277 -0
  103. sage/rings/polynomial/plural.cpython-314-x86_64-linux-gnu.so +0 -0
  104. sage/rings/polynomial/plural.pxd +48 -0
  105. sage/rings/polynomial/plural.pyx +3171 -0
  106. sage/symbolic/all__sagemath_singular.py +1 -0
  107. sage/symbolic/comparison_impl.pxi +428 -0
  108. sage/symbolic/constants_c_impl.pxi +178 -0
  109. sage/symbolic/expression.cpython-314-x86_64-linux-gnu.so +0 -0
  110. sage/symbolic/expression.pxd +7 -0
  111. sage/symbolic/expression.pyx +14200 -0
  112. sage/symbolic/getitem_impl.pxi +202 -0
  113. sage/symbolic/pynac.pxi +572 -0
  114. sage/symbolic/pynac_constant_impl.pxi +133 -0
  115. sage/symbolic/pynac_function_impl.pxi +206 -0
  116. sage/symbolic/pynac_impl.pxi +2576 -0
  117. sage/symbolic/pynac_wrap.h +124 -0
  118. sage/symbolic/series_impl.pxi +272 -0
  119. sage/symbolic/substitution_map_impl.pxi +94 -0
  120. sage_wheels/bin/ESingular +0 -0
  121. sage_wheels/bin/Singular +0 -0
  122. sage_wheels/bin/TSingular +0 -0
  123. sage_wheels/lib/singular/MOD/cohomo.la +41 -0
  124. sage_wheels/lib/singular/MOD/cohomo.so +0 -0
  125. sage_wheels/lib/singular/MOD/customstd.la +41 -0
  126. sage_wheels/lib/singular/MOD/customstd.so +0 -0
  127. sage_wheels/lib/singular/MOD/freealgebra.la +41 -0
  128. sage_wheels/lib/singular/MOD/freealgebra.so +0 -0
  129. sage_wheels/lib/singular/MOD/gfanlib.la +41 -0
  130. sage_wheels/lib/singular/MOD/gfanlib.so +0 -0
  131. sage_wheels/lib/singular/MOD/gitfan.la +41 -0
  132. sage_wheels/lib/singular/MOD/gitfan.so +0 -0
  133. sage_wheels/lib/singular/MOD/interval.la +41 -0
  134. sage_wheels/lib/singular/MOD/interval.so +0 -0
  135. sage_wheels/lib/singular/MOD/loctriv.la +41 -0
  136. sage_wheels/lib/singular/MOD/loctriv.so +0 -0
  137. sage_wheels/lib/singular/MOD/machinelearning.la +41 -0
  138. sage_wheels/lib/singular/MOD/machinelearning.so +0 -0
  139. sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.la +41 -0
  140. sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.so +0 -0
  141. sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.la +41 -0
  142. sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.so +0 -0
  143. sage_wheels/lib/singular/MOD/p_Procs_FieldQ.la +41 -0
  144. sage_wheels/lib/singular/MOD/p_Procs_FieldQ.so +0 -0
  145. sage_wheels/lib/singular/MOD/p_Procs_FieldZp.la +41 -0
  146. sage_wheels/lib/singular/MOD/p_Procs_FieldZp.so +0 -0
  147. sage_wheels/lib/singular/MOD/partialgb.la +41 -0
  148. sage_wheels/lib/singular/MOD/partialgb.so +0 -0
  149. sage_wheels/lib/singular/MOD/pyobject.la +41 -0
  150. sage_wheels/lib/singular/MOD/pyobject.so +0 -0
  151. sage_wheels/lib/singular/MOD/singmathic.la +41 -0
  152. sage_wheels/lib/singular/MOD/singmathic.so +0 -0
  153. sage_wheels/lib/singular/MOD/sispasm.la +41 -0
  154. sage_wheels/lib/singular/MOD/sispasm.so +0 -0
  155. sage_wheels/lib/singular/MOD/subsets.la +41 -0
  156. sage_wheels/lib/singular/MOD/subsets.so +0 -0
  157. sage_wheels/lib/singular/MOD/systhreads.la +41 -0
  158. sage_wheels/lib/singular/MOD/systhreads.so +0 -0
  159. sage_wheels/lib/singular/MOD/syzextra.la +41 -0
  160. sage_wheels/lib/singular/MOD/syzextra.so +0 -0
  161. sage_wheels/libexec/singular/MOD/change_cost +0 -0
  162. sage_wheels/libexec/singular/MOD/singularsurf +11 -0
  163. sage_wheels/libexec/singular/MOD/singularsurf_jupyter +9 -0
  164. sage_wheels/libexec/singular/MOD/singularsurf_win +10 -0
  165. sage_wheels/libexec/singular/MOD/solve_IP +0 -0
  166. sage_wheels/libexec/singular/MOD/surfex +16 -0
  167. sage_wheels/libexec/singular/MOD/toric_ideal +0 -0
  168. sage_wheels/share/factory/gftables/10201 +342 -0
  169. sage_wheels/share/factory/gftables/1024 +37 -0
  170. sage_wheels/share/factory/gftables/10609 +356 -0
  171. sage_wheels/share/factory/gftables/11449 +384 -0
  172. sage_wheels/share/factory/gftables/11881 +398 -0
  173. sage_wheels/share/factory/gftables/121 +6 -0
  174. sage_wheels/share/factory/gftables/12167 +408 -0
  175. sage_wheels/share/factory/gftables/125 +7 -0
  176. sage_wheels/share/factory/gftables/12769 +428 -0
  177. sage_wheels/share/factory/gftables/128 +7 -0
  178. sage_wheels/share/factory/gftables/1331 +47 -0
  179. sage_wheels/share/factory/gftables/1369 +48 -0
  180. sage_wheels/share/factory/gftables/14641 +490 -0
  181. sage_wheels/share/factory/gftables/15625 +523 -0
  182. sage_wheels/share/factory/gftables/16 +3 -0
  183. sage_wheels/share/factory/gftables/16129 +540 -0
  184. sage_wheels/share/factory/gftables/16384 +549 -0
  185. sage_wheels/share/factory/gftables/16807 +563 -0
  186. sage_wheels/share/factory/gftables/1681 +58 -0
  187. sage_wheels/share/factory/gftables/169 +8 -0
  188. sage_wheels/share/factory/gftables/17161 +574 -0
  189. sage_wheels/share/factory/gftables/1849 +64 -0
  190. sage_wheels/share/factory/gftables/18769 +628 -0
  191. sage_wheels/share/factory/gftables/19321 +646 -0
  192. sage_wheels/share/factory/gftables/19683 +659 -0
  193. sage_wheels/share/factory/gftables/2048 +71 -0
  194. sage_wheels/share/factory/gftables/2187 +75 -0
  195. sage_wheels/share/factory/gftables/2197 +76 -0
  196. sage_wheels/share/factory/gftables/2209 +76 -0
  197. sage_wheels/share/factory/gftables/22201 +742 -0
  198. sage_wheels/share/factory/gftables/22801 +762 -0
  199. sage_wheels/share/factory/gftables/2401 +82 -0
  200. sage_wheels/share/factory/gftables/243 +11 -0
  201. sage_wheels/share/factory/gftables/24389 +815 -0
  202. sage_wheels/share/factory/gftables/24649 +824 -0
  203. sage_wheels/share/factory/gftables/25 +3 -0
  204. sage_wheels/share/factory/gftables/256 +11 -0
  205. sage_wheels/share/factory/gftables/26569 +888 -0
  206. sage_wheels/share/factory/gftables/27 +3 -0
  207. sage_wheels/share/factory/gftables/27889 +932 -0
  208. sage_wheels/share/factory/gftables/2809 +96 -0
  209. sage_wheels/share/factory/gftables/28561 +954 -0
  210. sage_wheels/share/factory/gftables/289 +12 -0
  211. sage_wheels/share/factory/gftables/29791 +995 -0
  212. sage_wheels/share/factory/gftables/29929 +1000 -0
  213. sage_wheels/share/factory/gftables/3125 +107 -0
  214. sage_wheels/share/factory/gftables/32 +4 -0
  215. sage_wheels/share/factory/gftables/32041 +1070 -0
  216. sage_wheels/share/factory/gftables/32761 +1094 -0
  217. sage_wheels/share/factory/gftables/32768 +1095 -0
  218. sage_wheels/share/factory/gftables/343 +14 -0
  219. sage_wheels/share/factory/gftables/3481 +118 -0
  220. sage_wheels/share/factory/gftables/361 +14 -0
  221. sage_wheels/share/factory/gftables/36481 +1218 -0
  222. sage_wheels/share/factory/gftables/3721 +126 -0
  223. sage_wheels/share/factory/gftables/37249 +1244 -0
  224. sage_wheels/share/factory/gftables/38809 +1296 -0
  225. sage_wheels/share/factory/gftables/39601 +1322 -0
  226. sage_wheels/share/factory/gftables/4 +3 -0
  227. sage_wheels/share/factory/gftables/4096 +139 -0
  228. sage_wheels/share/factory/gftables/44521 +1486 -0
  229. sage_wheels/share/factory/gftables/4489 +152 -0
  230. sage_wheels/share/factory/gftables/49 +4 -0
  231. sage_wheels/share/factory/gftables/4913 +166 -0
  232. sage_wheels/share/factory/gftables/49729 +1660 -0
  233. sage_wheels/share/factory/gftables/5041 +170 -0
  234. sage_wheels/share/factory/gftables/50653 +1691 -0
  235. sage_wheels/share/factory/gftables/512 +20 -0
  236. sage_wheels/share/factory/gftables/51529 +1720 -0
  237. sage_wheels/share/factory/gftables/52441 +1750 -0
  238. sage_wheels/share/factory/gftables/529 +20 -0
  239. sage_wheels/share/factory/gftables/5329 +180 -0
  240. sage_wheels/share/factory/gftables/54289 +1812 -0
  241. sage_wheels/share/factory/gftables/57121 +1906 -0
  242. sage_wheels/share/factory/gftables/58081 +1938 -0
  243. sage_wheels/share/factory/gftables/59049 +1971 -0
  244. sage_wheels/share/factory/gftables/6241 +210 -0
  245. sage_wheels/share/factory/gftables/625 +23 -0
  246. sage_wheels/share/factory/gftables/63001 +2102 -0
  247. sage_wheels/share/factory/gftables/64 +5 -0
  248. sage_wheels/share/factory/gftables/6561 +221 -0
  249. sage_wheels/share/factory/gftables/6859 +231 -0
  250. sage_wheels/share/factory/gftables/6889 +232 -0
  251. sage_wheels/share/factory/gftables/729 +27 -0
  252. sage_wheels/share/factory/gftables/7921 +266 -0
  253. sage_wheels/share/factory/gftables/8 +3 -0
  254. sage_wheels/share/factory/gftables/81 +5 -0
  255. sage_wheels/share/factory/gftables/8192 +276 -0
  256. sage_wheels/share/factory/gftables/841 +30 -0
  257. sage_wheels/share/factory/gftables/9 +3 -0
  258. sage_wheels/share/factory/gftables/9409 +316 -0
  259. sage_wheels/share/factory/gftables/961 +34 -0
  260. sage_wheels/share/info/singular.info +191898 -0
  261. sage_wheels/share/singular/LIB/GND.lib +1359 -0
  262. sage_wheels/share/singular/LIB/JMBTest.lib +976 -0
  263. sage_wheels/share/singular/LIB/JMSConst.lib +1363 -0
  264. sage_wheels/share/singular/LIB/KVequiv.lib +699 -0
  265. sage_wheels/share/singular/LIB/SingularityDBM.lib +491 -0
  266. sage_wheels/share/singular/LIB/VecField.lib +1542 -0
  267. sage_wheels/share/singular/LIB/absfact.lib +959 -0
  268. sage_wheels/share/singular/LIB/ainvar.lib +730 -0
  269. sage_wheels/share/singular/LIB/aksaka.lib +419 -0
  270. sage_wheels/share/singular/LIB/alexpoly.lib +2542 -0
  271. sage_wheels/share/singular/LIB/algebra.lib +1193 -0
  272. sage_wheels/share/singular/LIB/all.lib +136 -0
  273. sage_wheels/share/singular/LIB/arcpoint.lib +514 -0
  274. sage_wheels/share/singular/LIB/arnold.lib +4553 -0
  275. sage_wheels/share/singular/LIB/arnoldclassify.lib +2058 -0
  276. sage_wheels/share/singular/LIB/arr.lib +3486 -0
  277. sage_wheels/share/singular/LIB/assprimeszerodim.lib +755 -0
  278. sage_wheels/share/singular/LIB/autgradalg.lib +3361 -0
  279. sage_wheels/share/singular/LIB/bfun.lib +1964 -0
  280. sage_wheels/share/singular/LIB/bimodules.lib +774 -0
  281. sage_wheels/share/singular/LIB/brillnoether.lib +226 -0
  282. sage_wheels/share/singular/LIB/brnoeth.lib +5017 -0
  283. sage_wheels/share/singular/LIB/central.lib +2169 -0
  284. sage_wheels/share/singular/LIB/chern.lib +4162 -0
  285. sage_wheels/share/singular/LIB/cimonom.lib +571 -0
  286. sage_wheels/share/singular/LIB/cisimplicial.lib +1835 -0
  287. sage_wheels/share/singular/LIB/classify.lib +3239 -0
  288. sage_wheels/share/singular/LIB/classify2.lib +1462 -0
  289. sage_wheels/share/singular/LIB/classifyMapGerms.lib +1515 -0
  290. sage_wheels/share/singular/LIB/classify_aeq.lib +3253 -0
  291. sage_wheels/share/singular/LIB/classifyceq.lib +2092 -0
  292. sage_wheels/share/singular/LIB/classifyci.lib +1133 -0
  293. sage_wheels/share/singular/LIB/combinat.lib +91 -0
  294. sage_wheels/share/singular/LIB/compregb.lib +276 -0
  295. sage_wheels/share/singular/LIB/control.lib +1636 -0
  296. sage_wheels/share/singular/LIB/crypto.lib +3795 -0
  297. sage_wheels/share/singular/LIB/curveInv.lib +667 -0
  298. sage_wheels/share/singular/LIB/curvepar.lib +1817 -0
  299. sage_wheels/share/singular/LIB/customstd.lib +100 -0
  300. sage_wheels/share/singular/LIB/deRham.lib +5979 -0
  301. sage_wheels/share/singular/LIB/decodegb.lib +2134 -0
  302. sage_wheels/share/singular/LIB/decomp.lib +1655 -0
  303. sage_wheels/share/singular/LIB/deflation.lib +872 -0
  304. sage_wheels/share/singular/LIB/deform.lib +925 -0
  305. sage_wheels/share/singular/LIB/difform.lib +3055 -0
  306. sage_wheels/share/singular/LIB/divisors.lib +750 -0
  307. sage_wheels/share/singular/LIB/dmod.lib +5817 -0
  308. sage_wheels/share/singular/LIB/dmodapp.lib +3269 -0
  309. sage_wheels/share/singular/LIB/dmodideal.lib +1211 -0
  310. sage_wheels/share/singular/LIB/dmodloc.lib +2645 -0
  311. sage_wheels/share/singular/LIB/dmodvar.lib +818 -0
  312. sage_wheels/share/singular/LIB/dummy.lib +17 -0
  313. sage_wheels/share/singular/LIB/elim.lib +1009 -0
  314. sage_wheels/share/singular/LIB/ellipticcovers.lib +548 -0
  315. sage_wheels/share/singular/LIB/enumpoints.lib +146 -0
  316. sage_wheels/share/singular/LIB/equising.lib +2127 -0
  317. sage_wheels/share/singular/LIB/ffmodstd.lib +2384 -0
  318. sage_wheels/share/singular/LIB/ffsolve.lib +1289 -0
  319. sage_wheels/share/singular/LIB/findifs.lib +778 -0
  320. sage_wheels/share/singular/LIB/finitediff.lib +1768 -0
  321. sage_wheels/share/singular/LIB/finvar.lib +7989 -0
  322. sage_wheels/share/singular/LIB/fpadim.lib +2429 -0
  323. sage_wheels/share/singular/LIB/fpalgebras.lib +1666 -0
  324. sage_wheels/share/singular/LIB/fpaprops.lib +1462 -0
  325. sage_wheels/share/singular/LIB/freegb.lib +3853 -0
  326. sage_wheels/share/singular/LIB/general.lib +1350 -0
  327. sage_wheels/share/singular/LIB/gfan.lib +1768 -0
  328. sage_wheels/share/singular/LIB/gitfan.lib +3130 -0
  329. sage_wheels/share/singular/LIB/gkdim.lib +99 -0
  330. sage_wheels/share/singular/LIB/gmspoly.lib +589 -0
  331. sage_wheels/share/singular/LIB/gmssing.lib +1739 -0
  332. sage_wheels/share/singular/LIB/goettsche.lib +909 -0
  333. sage_wheels/share/singular/LIB/graal.lib +1366 -0
  334. sage_wheels/share/singular/LIB/gradedModules.lib +2541 -0
  335. sage_wheels/share/singular/LIB/graphics.lib +360 -0
  336. sage_wheels/share/singular/LIB/grobcov.lib +7706 -0
  337. sage_wheels/share/singular/LIB/groups.lib +1123 -0
  338. sage_wheels/share/singular/LIB/grwalk.lib +507 -0
  339. sage_wheels/share/singular/LIB/hdepth.lib +194 -0
  340. sage_wheels/share/singular/LIB/help.cnf +57 -0
  341. sage_wheels/share/singular/LIB/hess.lib +1946 -0
  342. sage_wheels/share/singular/LIB/hnoether.lib +4292 -0
  343. sage_wheels/share/singular/LIB/hodge.lib +400 -0
  344. sage_wheels/share/singular/LIB/homolog.lib +1965 -0
  345. sage_wheels/share/singular/LIB/hyperel.lib +975 -0
  346. sage_wheels/share/singular/LIB/inout.lib +679 -0
  347. sage_wheels/share/singular/LIB/integralbasis.lib +6224 -0
  348. sage_wheels/share/singular/LIB/interval.lib +1418 -0
  349. sage_wheels/share/singular/LIB/intprog.lib +778 -0
  350. sage_wheels/share/singular/LIB/invar.lib +443 -0
  351. sage_wheels/share/singular/LIB/involut.lib +980 -0
  352. sage_wheels/share/singular/LIB/jacobson.lib +1215 -0
  353. sage_wheels/share/singular/LIB/kskernel.lib +534 -0
  354. sage_wheels/share/singular/LIB/latex.lib +3146 -0
  355. sage_wheels/share/singular/LIB/lejeune.lib +651 -0
  356. sage_wheels/share/singular/LIB/linalg.lib +2040 -0
  357. sage_wheels/share/singular/LIB/locnormal.lib +212 -0
  358. sage_wheels/share/singular/LIB/lrcalc.lib +526 -0
  359. sage_wheels/share/singular/LIB/makedbm.lib +294 -0
  360. sage_wheels/share/singular/LIB/mathml.lib +813 -0
  361. sage_wheels/share/singular/LIB/matrix.lib +1372 -0
  362. sage_wheels/share/singular/LIB/maxlike.lib +1132 -0
  363. sage_wheels/share/singular/LIB/methods.lib +212 -0
  364. sage_wheels/share/singular/LIB/moddiq.lib +322 -0
  365. sage_wheels/share/singular/LIB/modfinduni.lib +181 -0
  366. sage_wheels/share/singular/LIB/modnormal.lib +218 -0
  367. sage_wheels/share/singular/LIB/modprimdec.lib +1278 -0
  368. sage_wheels/share/singular/LIB/modquotient.lib +269 -0
  369. sage_wheels/share/singular/LIB/modstd.lib +1024 -0
  370. sage_wheels/share/singular/LIB/modular.lib +545 -0
  371. sage_wheels/share/singular/LIB/modules.lib +2561 -0
  372. sage_wheels/share/singular/LIB/modwalk.lib +609 -0
  373. sage_wheels/share/singular/LIB/mondromy.lib +1016 -0
  374. sage_wheels/share/singular/LIB/monomialideal.lib +3851 -0
  375. sage_wheels/share/singular/LIB/mprimdec.lib +2353 -0
  376. sage_wheels/share/singular/LIB/mregular.lib +1863 -0
  377. sage_wheels/share/singular/LIB/multigrading.lib +5629 -0
  378. sage_wheels/share/singular/LIB/ncHilb.lib +777 -0
  379. sage_wheels/share/singular/LIB/ncModslimgb.lib +791 -0
  380. sage_wheels/share/singular/LIB/ncalg.lib +16311 -0
  381. sage_wheels/share/singular/LIB/ncall.lib +31 -0
  382. sage_wheels/share/singular/LIB/ncdecomp.lib +468 -0
  383. sage_wheels/share/singular/LIB/ncfactor.lib +13371 -0
  384. sage_wheels/share/singular/LIB/ncfrac.lib +1023 -0
  385. sage_wheels/share/singular/LIB/nchilbert.lib +448 -0
  386. sage_wheels/share/singular/LIB/nchomolog.lib +759 -0
  387. sage_wheels/share/singular/LIB/ncloc.lib +361 -0
  388. sage_wheels/share/singular/LIB/ncpreim.lib +795 -0
  389. sage_wheels/share/singular/LIB/ncrat.lib +2849 -0
  390. sage_wheels/share/singular/LIB/nctools.lib +1887 -0
  391. sage_wheels/share/singular/LIB/nets.lib +1456 -0
  392. sage_wheels/share/singular/LIB/nfmodstd.lib +1000 -0
  393. sage_wheels/share/singular/LIB/nfmodsyz.lib +732 -0
  394. sage_wheels/share/singular/LIB/noether.lib +1106 -0
  395. sage_wheels/share/singular/LIB/normal.lib +8700 -0
  396. sage_wheels/share/singular/LIB/normaliz.lib +2226 -0
  397. sage_wheels/share/singular/LIB/ntsolve.lib +362 -0
  398. sage_wheels/share/singular/LIB/numerAlg.lib +560 -0
  399. sage_wheels/share/singular/LIB/numerDecom.lib +2261 -0
  400. sage_wheels/share/singular/LIB/olga.lib +1933 -0
  401. sage_wheels/share/singular/LIB/orbitparam.lib +351 -0
  402. sage_wheels/share/singular/LIB/parallel.lib +319 -0
  403. sage_wheels/share/singular/LIB/paraplanecurves.lib +3110 -0
  404. sage_wheels/share/singular/LIB/perron.lib +202 -0
  405. sage_wheels/share/singular/LIB/pfd.lib +2223 -0
  406. sage_wheels/share/singular/LIB/phindex.lib +642 -0
  407. sage_wheels/share/singular/LIB/pointid.lib +673 -0
  408. sage_wheels/share/singular/LIB/polybori.lib +1430 -0
  409. sage_wheels/share/singular/LIB/polyclass.lib +525 -0
  410. sage_wheels/share/singular/LIB/polylib.lib +1174 -0
  411. sage_wheels/share/singular/LIB/polymake.lib +1902 -0
  412. sage_wheels/share/singular/LIB/presolve.lib +1533 -0
  413. sage_wheels/share/singular/LIB/primdec.lib +9576 -0
  414. sage_wheels/share/singular/LIB/primdecint.lib +1782 -0
  415. sage_wheels/share/singular/LIB/primitiv.lib +401 -0
  416. sage_wheels/share/singular/LIB/puiseuxexpansions.lib +1631 -0
  417. sage_wheels/share/singular/LIB/purityfiltration.lib +960 -0
  418. sage_wheels/share/singular/LIB/qhmoduli.lib +1561 -0
  419. sage_wheels/share/singular/LIB/qmatrix.lib +293 -0
  420. sage_wheels/share/singular/LIB/random.lib +455 -0
  421. sage_wheels/share/singular/LIB/ratgb.lib +489 -0
  422. sage_wheels/share/singular/LIB/realclassify.lib +5759 -0
  423. sage_wheels/share/singular/LIB/realizationMatroids.lib +772 -0
  424. sage_wheels/share/singular/LIB/realrad.lib +1197 -0
  425. sage_wheels/share/singular/LIB/recover.lib +2628 -0
  426. sage_wheels/share/singular/LIB/redcgs.lib +3984 -0
  427. sage_wheels/share/singular/LIB/reesclos.lib +465 -0
  428. sage_wheels/share/singular/LIB/resbinomial.lib +2802 -0
  429. sage_wheels/share/singular/LIB/resgraph.lib +789 -0
  430. sage_wheels/share/singular/LIB/resjung.lib +820 -0
  431. sage_wheels/share/singular/LIB/resolve.lib +5110 -0
  432. sage_wheels/share/singular/LIB/resources.lib +170 -0
  433. sage_wheels/share/singular/LIB/reszeta.lib +5473 -0
  434. sage_wheels/share/singular/LIB/ring.lib +1328 -0
  435. sage_wheels/share/singular/LIB/ringgb.lib +343 -0
  436. sage_wheels/share/singular/LIB/rinvar.lib +1153 -0
  437. sage_wheels/share/singular/LIB/rootisolation.lib +1481 -0
  438. sage_wheels/share/singular/LIB/rootsmr.lib +709 -0
  439. sage_wheels/share/singular/LIB/rootsur.lib +886 -0
  440. sage_wheels/share/singular/LIB/rstandard.lib +607 -0
  441. sage_wheels/share/singular/LIB/rwalk.lib +336 -0
  442. sage_wheels/share/singular/LIB/sagbi.lib +1353 -0
  443. sage_wheels/share/singular/LIB/sagbiNormaliz.lib +1622 -0
  444. sage_wheels/share/singular/LIB/sagbiNormaliz0.lib +1498 -0
  445. sage_wheels/share/singular/LIB/sagbigrob.lib +449 -0
  446. sage_wheels/share/singular/LIB/schreyer.lib +321 -0
  447. sage_wheels/share/singular/LIB/schubert.lib +2551 -0
  448. sage_wheels/share/singular/LIB/sets.lib +524 -0
  449. sage_wheels/share/singular/LIB/sheafcoh.lib +1663 -0
  450. sage_wheels/share/singular/LIB/signcond.lib +437 -0
  451. sage_wheels/share/singular/LIB/sing.lib +1094 -0
  452. sage_wheels/share/singular/LIB/sing4ti2.lib +419 -0
  453. sage_wheels/share/singular/LIB/solve.lib +2243 -0
  454. sage_wheels/share/singular/LIB/spcurve.lib +1077 -0
  455. sage_wheels/share/singular/LIB/spectrum.lib +62 -0
  456. sage_wheels/share/singular/LIB/sresext.lib +757 -0
  457. sage_wheels/share/singular/LIB/ssi.lib +143 -0
  458. sage_wheels/share/singular/LIB/standard.lib +2769 -0
  459. sage_wheels/share/singular/LIB/stanleyreisner.lib +473 -0
  460. sage_wheels/share/singular/LIB/stdmodule.lib +547 -0
  461. sage_wheels/share/singular/LIB/stratify.lib +1070 -0
  462. sage_wheels/share/singular/LIB/surf.lib +506 -0
  463. sage_wheels/share/singular/LIB/surf_jupyter.lib +223 -0
  464. sage_wheels/share/singular/LIB/surfacesignature.lib +522 -0
  465. sage_wheels/share/singular/LIB/surfex.lib +1462 -0
  466. sage_wheels/share/singular/LIB/swalk.lib +877 -0
  467. sage_wheels/share/singular/LIB/symodstd.lib +1570 -0
  468. sage_wheels/share/singular/LIB/systhreads.lib +74 -0
  469. sage_wheels/share/singular/LIB/tasks.lib +1324 -0
  470. sage_wheels/share/singular/LIB/tateProdCplxNegGrad.lib +2412 -0
  471. sage_wheels/share/singular/LIB/teachstd.lib +858 -0
  472. sage_wheels/share/singular/LIB/template.lib +116 -0
  473. sage_wheels/share/singular/LIB/toric.lib +1119 -0
  474. sage_wheels/share/singular/LIB/transformation.lib +116 -0
  475. sage_wheels/share/singular/LIB/triang.lib +1197 -0
  476. sage_wheels/share/singular/LIB/tropical.lib +8741 -0
  477. sage_wheels/share/singular/LIB/tropicalEllipticCovers.lib +2922 -0
  478. sage_wheels/share/singular/LIB/tropicalNewton.lib +1128 -0
  479. sage_wheels/share/singular/LIB/tst.lib +1108 -0
  480. sage_wheels/share/singular/LIB/weierstr.lib +241 -0
  481. sage_wheels/share/singular/LIB/zeroset.lib +1478 -0
  482. sage_wheels/share/singular/emacs/.emacs-general +184 -0
  483. sage_wheels/share/singular/emacs/.emacs-singular +234 -0
  484. sage_wheels/share/singular/emacs/COPYING +44 -0
  485. sage_wheels/share/singular/emacs/cmd-cmpl.el +241 -0
  486. sage_wheels/share/singular/emacs/ex-cmpl.el +1681 -0
  487. sage_wheels/share/singular/emacs/hlp-cmpl.el +4318 -0
  488. sage_wheels/share/singular/emacs/lib-cmpl.el +179 -0
  489. sage_wheels/share/singular/emacs/singular.el +4273 -0
  490. sage_wheels/share/singular/emacs/singular.xpm +39 -0
  491. sage_wheels/share/singular/singular.idx +5002 -0
@@ -0,0 +1,730 @@
1
+ //////////////////////////////////////////////////////////////////////////////
2
+ version="version ainvar.lib 4.3.1.3 Feb_2023 "; // $Id: abafaea133c8f6bb49b1fc6ca1b3730412f94e80 $
3
+ category="Invariant theory";
4
+ info="
5
+ LIBRARY: ainvar.lib Invariant Rings of the Additive Group
6
+ AUTHORS: Gerhard Pfister (email: pfister@mathematik.uni-kl.de),
7
+ Gert-Martin Greuel (email: greuel@mathematik.uni-kl.de)
8
+
9
+ PROCEDURES:
10
+ invariantRing(m..); compute ring of invariants of (K,+)-action given by m
11
+ derivate(m,f); derivation of f with respect to the vector field m
12
+ actionIsProper(m); tests whether action defined by m is proper
13
+ reduction(p,I); SAGBI reduction of p in the subring generated by I
14
+ completeReduction(); complete SAGBI reduction
15
+ localInvar(m,p..); invariant polynomial under m computed from p,...
16
+ furtherInvar(m..); compute further invariants of m from the given ones
17
+ sortier(id); sorts generators of id by increasing leading terms
18
+ ";
19
+
20
+ LIB "inout.lib";
21
+ LIB "general.lib";
22
+ LIB "algebra.lib";
23
+ LIB "ring.lib";
24
+ ///////////////////////////////////////////////////////////////////////////////
25
+
26
+ proc sortier(def id)
27
+ "USAGE: sortier(id); id ideal/module
28
+ RETURN: the same ideal/module but with generators ordered by their
29
+ leading terms, starting with the smallest
30
+ EXAMPLE: example sortier; shows an example
31
+ "
32
+ {
33
+ if(size(id)==0)
34
+ {return(id); }
35
+ intvec i=sortvec(id);
36
+ int j;
37
+ if( typeof(id)=="ideal")
38
+ { ideal m; }
39
+ if( typeof(id)=="module")
40
+ { module m; }
41
+ if( typeof(id)!="ideal" and typeof(id)!="module")
42
+ { ERROR("input must be of type ideal or module"); }
43
+ for (j=1;j<=size(i);j++)
44
+ {
45
+ m[j] = id[i[j]];
46
+ }
47
+ return(m);
48
+ }
49
+ example
50
+ { "EXAMPLE:"; echo = 2;
51
+ ring q=0,(x,y,z,u,v,w),dp;
52
+ ideal i=w,x,z,y,v;
53
+ sortier(i);
54
+ }
55
+ ///////////////////////////////////////////////////////////////////////////////
56
+
57
+ proc derivate (matrix m, def id)
58
+ "USAGE: derivate(m,id); m matrix, id poly/vector/ideal
59
+ ASSUME: m is an nx1 matrix, where n = number of variables of the basering
60
+ RETURN: poly/vector/ideal (same type as input), result of applying the
61
+ vector field by the matrix m componentwise to id;
62
+ NOTE: the vector field is m[1,1]*d/dx(1) +...+ m[1,n]*d/dx(n)
63
+ EXAMPLE: example derivate; shows an example
64
+ "
65
+ {
66
+ ideal I = ideal(id);
67
+ matrix mh=matrix(jacob(I))*m;
68
+ if(typeof(id)=="poly")
69
+ { poly j = mh[1,1];
70
+ }
71
+ else
72
+ { if (typeof(id)=="vector") { vector j = mh[1]; /*the first column*/ }
73
+ else { ideal j = ideal(mh[1]);}
74
+ }
75
+ return(j);
76
+ }
77
+ example
78
+ { "EXAMPLE:"; echo = 2;
79
+ ring q=0,(x,y,z,u,v,w),dp;
80
+ poly f=2xz-y2;
81
+ matrix m[6][1] =x,y,0,u,v;
82
+ derivate(m,f);
83
+ vector v = [2xz-y2,u6-3];
84
+ derivate(m,v);
85
+ derivate(m,ideal(2xz-y2,u6-3));
86
+ }
87
+
88
+ ///////////////////////////////////////////////////////////////////////////////
89
+
90
+ proc actionIsProper(matrix m)
91
+ "USAGE: actionIsProper(m); m matrix
92
+ ASSUME: m is a nx1 matrix, where n = number of variables of the basering
93
+ RETURN: int = 1, if the action defined by m is proper, 0 if not
94
+ NOTE: m defines a group action which is the exponential of the vector
95
+ field m[1,1]*d/dx(1) +...+ m[1,n]*d/dx(n)
96
+ EXAMPLE: example actionIsProper; shows an example
97
+ "
98
+ {
99
+ int i;
100
+ ideal id=maxideal(1);
101
+ def bsr=basering;
102
+
103
+ //changes the basering bsr to bsr[@t]
104
+ ring s = create_ring(ring_list(basering)[1],"("+varstr(basering)+",@t)","dp","no_minpoly");
105
+ poly inv,delta,tee,j;
106
+ ideal id=imap(bsr,id);
107
+ matrix @m[size(id)+1][1];
108
+ @m=imap(bsr,m),0;
109
+ int auxv;
110
+
111
+ //computes the exp(@t*m)(var(i)) for all i
112
+ for(i=1;i<=nvars(basering)-1;i++)
113
+ {
114
+ inv=var(i);
115
+ delta=derivate(@m,inv);
116
+ j=1;
117
+ auxv=1;
118
+ tee=@t;
119
+ while(delta!=0)
120
+ {
121
+ inv=inv+1/j*delta*tee;
122
+ auxv=auxv+1;
123
+ j=j*auxv;
124
+ tee=tee*@t;
125
+ delta=derivate(@m,delta);
126
+ }
127
+ id=id+ideal(inv);
128
+ }
129
+ i=inSubring(@t,id)[1];
130
+ setring(bsr);
131
+ return(i);
132
+ }
133
+ example
134
+ { "EXAMPLE:"; echo = 2;
135
+
136
+ ring rf=0,x(1..7),dp;
137
+ matrix m[7][1];
138
+ m[4,1]=x(1)^3;
139
+ m[5,1]=x(2)^3;
140
+ m[6,1]=x(3)^3;
141
+ m[7,1]=(x(1)*x(2)*x(3))^2;
142
+ actionIsProper(m);
143
+
144
+ ring rd=0,x(1..5),dp;
145
+ matrix m[5][1];
146
+ m[3,1]=x(1);
147
+ m[4,1]=x(2);
148
+ m[5,1]=1+x(1)*x(4)^2;
149
+ actionIsProper(m);
150
+ }
151
+ ///////////////////////////////////////////////////////////////////////////////
152
+
153
+ proc reduction(poly p, ideal dom, list #)
154
+ "USAGE: reduction(p,I[,q,n]); p poly, I ideal, [q monomial, n int (optional)]
155
+ RETURN: a polynomial equal to p-H(f1,...,fr), in case the leading
156
+ term LT(p) of p is of the form H(LT(f1),...,LT(fr)) for some
157
+ polynomial H in r variables over the base field, I=f1,...,fr;
158
+ if q is given, a maximal power a is computed such that q^a divides
159
+ p-H(f1,...,fr), and then (p-H(f1,...,fr))/q^a is returned;
160
+ return p if no H is found
161
+ if n=1, a different algorithm is chosen which is sometimes faster
162
+ (default: n=0; q and n can be given (or not) in any order)
163
+ NOTE: this is a kind of SAGBI reduction in the subalgebra K[f1,...,fr] of
164
+ the basering
165
+ EXAMPLE: example reduction; shows an example
166
+ "
167
+ {
168
+ int i,choose;
169
+ int z=ncols(dom);
170
+ def bsr=basering;
171
+ if( size(#) >0 )
172
+ { if( typeof(#[1]) == "int")
173
+ { choose = #[1];
174
+ }
175
+ if( typeof(#[1]) == "poly")
176
+ { poly q = #[1];
177
+ }
178
+ if( size(#)>1 )
179
+ { if( typeof(#[2]) == "poly")
180
+ { poly q = #[2];
181
+ }
182
+ if( typeof(#[2]) == "int")
183
+ { choose = #[2];
184
+ }
185
+ }
186
+ }
187
+
188
+ // -------------------- first algorithm (default) -----------------------
189
+ if ( choose == 0 )
190
+ {
191
+ list L = algebra_containment(lead(p),lead(dom),1);
192
+ if( L[1]==1 )
193
+ {
194
+ // the ring L[2] = char(bsr),(x(1..nvars(bsr)),y(1..z)),(dp(n),dp(m)),
195
+ // contains polynomial check s.t. LT(p) is of the form check(LT(f1),...,LT(fr))
196
+ def s1 = L[2];
197
+ map psi = s1,maxideal(1),dom;
198
+ poly re = p - psi(check);
199
+ // divide by the maximal power of #[1]
200
+ if ( defined(q) == voice )
201
+ { while ((re!=0) && (re!=#[1]) &&(subst(re,#[1],0)==0))
202
+ { re=re/#[1];
203
+ }
204
+ }
205
+ return(re);
206
+ }
207
+ return(p);
208
+ }
209
+ // ------------------------- second algorithm ---------------------------
210
+ else
211
+ {
212
+ //----------------- arranges the monomial v for elimination -------------
213
+ poly v=product(maxideal(1));
214
+
215
+ //------------- changes the basering bsr to bsr[@(0),...,@(z)] ----------
216
+ list l2 = ring_list(basering)[2];
217
+ for (int ii = 0; ii <= z; ii++)
218
+ {
219
+ l2[size(l2)+1] = "@("+string(ii)+")";
220
+ }
221
+ ring s = create_ring(ring_list(basering)[1], l2, "dp", "no_minpoly");
222
+ //constructs the leading ideal of dom=(p-@(0),dom[1]-@(1),...,dom[z]-@(z))
223
+ ideal dom=imap(bsr,dom);
224
+ for (i=1;i<=z;i++)
225
+ {
226
+ dom[i]=lead(dom[i])-var(nvars(bsr)+i+1);
227
+ }
228
+ dom=lead(imap(bsr,p))-@(0),dom;
229
+
230
+ //---------- eliminates the variables of the basering bsr --------------
231
+ //i.e. computes dom intersected with K[@(0),...,@(z)] (this is hard)
232
+ //### hier Variante analog zu algebra_containment einbauen!
233
+ ideal kern=eliminate(dom,imap(bsr,v));
234
+
235
+ //--------- test whether @(0)-h(@(1),...,@(z)) is in ker ---------------
236
+ // for some polynomial h and divide by maximal power of q=#[1]
237
+ poly h;
238
+ z=size(kern);
239
+ for (i=1;i<=z;i++)
240
+ {
241
+ h=kern[i]/@(0);
242
+ if (deg(h)==0)
243
+ { h=(1/h)*kern[i];
244
+ // define the map psi : s ---> bsr defined by @(i) ---> p,dom[i]
245
+ setring bsr;
246
+ map psi=s,maxideal(1),p,dom;
247
+ poly re=psi(h);
248
+ // divide by the maximal power of #[1]
249
+ if (size(#)>0)
250
+ { while ((re!=0) && (re!=#[1]) &&(subst(re,#[1],0)==0))
251
+ { re=re/#[1];
252
+ }
253
+ }
254
+ return(re);
255
+ }
256
+ }
257
+ setring bsr;
258
+ return(p);
259
+ }
260
+ }
261
+
262
+ example
263
+ { "EXAMPLE:"; echo = 2;
264
+ ring q=0,(x,y,z,u,v,w),dp;
265
+ poly p=x2yz-x2v;
266
+ ideal dom =x-w,u2w+1,yz-v;
267
+ reduction(p,dom);
268
+ reduction(p,dom,w);
269
+ }
270
+
271
+ ///////////////////////////////////////////////////////////////////////////////
272
+
273
+ proc completeReduction(poly p, ideal dom, list #)
274
+ "USAGE: completeReduction(p,I[,q,n]); p poly, I ideal, [q monomial, n int]
275
+ RETURN: a polynomial, the SAGBI reduction of the polynomial p with respect to I
276
+ via the procedure 'reduction' as long as possible
277
+ if n=1, a different algorithm is chosen which is sometimes faster
278
+ (default: n=0; q and n can be given (or not) in any order)
279
+ NOTE: help reduction; shows an explanation of SAGBI reduction
280
+ EXAMPLE: example completeReduction; shows an example
281
+ "
282
+ {
283
+ poly p1=p;
284
+ poly p2=reduction(p,dom,#);
285
+ while (p1!=p2)
286
+ {
287
+ p1=p2;
288
+ p2=reduction(p1,dom,#);
289
+ }
290
+ return(p2);
291
+ }
292
+ example
293
+ { "EXAMPLE:"; echo = 2;
294
+ ring q=0,(x,y,z,u,v,w),dp;
295
+ poly p=x2yz-x2v;
296
+ ideal dom =x-w,u2w+1,yz-v;
297
+ completeReduction(p,dom);
298
+ completeReduction(p,dom,w);
299
+ }
300
+
301
+ ///////////////////////////////////////////////////////////////////////////////
302
+
303
+ proc completeReductionnew(poly p, ideal dom, list #)
304
+ "USAGE: completeReduction(p,I[,q,n]); p poly, I ideal, [q monomial, n int]
305
+ RETURN: a polynomial, the SAGBI reduction of the polynomial p with I
306
+ via the procedure 'reduction' as long as possible
307
+ if n=1, a different algorithm is chosen which is sometimes faster
308
+ (default: n=0; q and n can be given (or not) in any order)
309
+ NOTE: help reduction; shows an explanation of SAGBI reduction
310
+ EXAMPLE: example completeReduction; shows an example
311
+ "
312
+ {
313
+ if(p==0)
314
+ {
315
+ return(p);
316
+ }
317
+ poly p1=p;
318
+ poly p2=reduction(p,dom,#);
319
+ while (p1!=p2)
320
+ {
321
+ p1=p2;
322
+ p2=reduction(p1,dom,#);
323
+ }
324
+ poly re=lead(p2)+completeReduction(p2-lead(p2),dom,#);
325
+ return(re);
326
+ }
327
+
328
+ ///////////////////////////////////////////////////////////////////////////////
329
+
330
+ proc localInvar(matrix m, poly p, poly q, poly h)
331
+ "USAGE: localInvar(m,p,q,h); m matrix, p,q,h polynomials
332
+ ASSUME: m(q) and h are invariant under the vector field m, i.e. m(m(q))=m(h)=0
333
+ h must be a ring variable
334
+ RETURN: a polynomial, the invariant polynomial of the vector field
335
+ @format
336
+ m = m[1,1]*d/dx(1) +...+ m[n,1]*d/dx(n)
337
+ @end format
338
+ with respect to p,q,h. It is defined as follows: set inv = p if p is
339
+ invariant, and else set
340
+ inv = m(q)^N * sum_i=1..N-1{ (-1)^i*(1/i!)*m^i(p)*(q/m(q))^i }
341
+ where m^N(p) = 0, m^(N-1)(p) != 0; the result is inv divided by h
342
+ as often as possible
343
+ EXAMPLE: example localInvar; shows an example
344
+ "
345
+ {
346
+ if ((derivate(m,h) !=0) || (derivate(m,derivate(m,q)) !=0))
347
+ {
348
+ "//the last two polynomials of the input must be invariant functions";
349
+ return(q);
350
+ }
351
+ int ii,k;
352
+ for ( k=1; k <= nvars(basering); k++ )
353
+ { if (h == var(k))
354
+ { ii=1;
355
+ }
356
+ }
357
+ if( ii==0 )
358
+ { "// the last argument must be a ring variable";
359
+ return(q);
360
+ }
361
+
362
+ poly inv=p;
363
+ poly dif= derivate(m,inv);
364
+ poly a=derivate(m,q);
365
+ poly sgn=-1;
366
+ poly coeff=sgn*q;
367
+ k=1;
368
+ if (dif==0)
369
+ {
370
+ return(inv);
371
+ }
372
+ while (dif!=0)
373
+ {
374
+ inv=(a*inv)+(coeff*dif);
375
+ dif=derivate(m,dif);
376
+ k=k+1;
377
+ coeff=q*coeff*sgn/k;
378
+ }
379
+ while ((inv!=0) && (inv!=h) &&(subst(inv,h,0)==0))
380
+ {
381
+ inv=inv/h;
382
+ }
383
+ return(inv);
384
+ }
385
+ example
386
+ { "EXAMPLE:"; echo = 2;
387
+ ring q=0,(x,y,z),dp;
388
+ matrix m[3][1];
389
+ m[2,1]=x;
390
+ m[3,1]=y;
391
+ poly in=localInvar(m,z,y,x);
392
+ in;
393
+ }
394
+ ///////////////////////////////////////////////////////////////////////////////
395
+
396
+ proc furtherInvar(matrix m, ideal id, ideal karl, poly q, list #)
397
+ "USAGE: furtherInvar(m,id,karl,q); m matrix, id,karl ideals, q poly, n int
398
+ ASSUME: karl,id,q are invariant under the vector field m,
399
+ moreover, q must be a variable
400
+ RETURN: list of two ideals, the first ideal contains further invariants of
401
+ the vector field
402
+ @format
403
+ m = sum m[i,1]*d/dx(i) with respect to id,p,q,
404
+ @end format
405
+ i.e. we compute elements in the (invariant) subring generated by id
406
+ which are divisible by q and divide them by q as often as possible.
407
+ The second ideal contains all invariants given before.
408
+ If n=1, a different algorithm is chosen which is sometimes faster
409
+ (default: n=0)
410
+ EXAMPLE: example furtherInvar; shows an example
411
+ "
412
+ {
413
+ list ll = q;
414
+ if ( size(#)>0 )
415
+ { ll = ll+list(#[1]);
416
+ }
417
+ int i;
418
+ ideal null,eins;
419
+ int z=ncols(id);
420
+ intvec v;
421
+ def br=basering;
422
+ ideal su;
423
+ list @l;
424
+ for (i=1; i<=z; i++)
425
+ {
426
+ su[i]=subst(id[i],q,0);
427
+ @l[i]="y("+string(i)+")";
428
+ }
429
+ // -- define the map phi : r1 ---> br defined by y(i) ---> id[i](q=0) --
430
+ def r1=ring(list(ring_list(br)[1],@l,list(list("dp",1:z)),ideal(0)));
431
+ setring br;
432
+ map phi=r1,su;
433
+ setring r1;
434
+ // --------------- compute the kernel of phi ---------------------------
435
+ ideal ker=preimage(br,phi,null);
436
+ ker=mstd(ker)[2];
437
+ // ---- define the map psi : r1 ---> br defined by y(i) ---> id[i] -----
438
+ setring br;
439
+ map psi=r1,id;
440
+ // ------------------- compute psi(ker(phi)) --------------------------
441
+ ideal rel=psi(ker);
442
+ // divide by maximal power of q, test whether we really obtain invariants
443
+ for (i=1;i<=size(rel);i++)
444
+ {
445
+ while ((rel[i]!=0) && (rel[i]!=q) &&(subst(rel[i],q,0)==0))
446
+ {
447
+ rel[i]=rel[i]/q;
448
+ if (derivate(m,rel[i])!=0)
449
+ {
450
+ "// error in furtherInvar, function not invariant:";
451
+ rel[i];
452
+ }
453
+ }
454
+ rel[i]=simplify(rel[i],1);
455
+ }
456
+ // ---------------------------------------------------------------------
457
+ // test whether some variables occur linearly and then delete the
458
+ // corresponding invariant function
459
+ setring r1;
460
+ int j;
461
+ for (i=1;i<=size(ker);i=i+1)
462
+ {
463
+ for (j=1;j<=z;j++)
464
+ {
465
+ if (deg(ker[i]/y(j))==0)
466
+ {
467
+ setring br;
468
+ rel[i]= completeReduction(rel[i],karl,ll);
469
+ if(rel[i]!=0)
470
+ {
471
+ karl[j+1]=rel[i];
472
+ rel[i]=0;
473
+ eins=1;
474
+ }
475
+ setring r1;
476
+ }
477
+ }
478
+
479
+ }
480
+ setring br;
481
+ rel=rel+null;
482
+ if(size(rel)==0){rel=eins;}
483
+ list l=rel,karl;
484
+ return(l);
485
+ }
486
+ example
487
+ { "EXAMPLE:"; echo = 2;
488
+ ring r=0,(x,y,z,u),dp;
489
+ matrix m[4][1];
490
+ m[2,1]=x;
491
+ m[3,1]=y;
492
+ m[4,1]=z;
493
+ ideal id=localInvar(m,z,y,x),localInvar(m,u,y,x);
494
+ ideal karl=id,x;
495
+ list in=furtherInvar(m,id,karl,x);
496
+ in;
497
+ }
498
+ ///////////////////////////////////////////////////////////////////////////////
499
+
500
+ proc invariantRing(matrix m, poly p, poly q, int b, list #)
501
+ "USAGE: invariantRing(m,p,q,b[,r,pa]); m matrix, p,q poly, b,r int, pa string
502
+ ASSUME: p,q variables with m(p)=q and q invariant under m
503
+ i.e. if p=x(i) and q=x(j) then m[j,1]=0 and m[i,1]=x(j)
504
+ RETURN: ideal, containing generators of the ring of invariants of the
505
+ additive group (K,+) given by the vector field
506
+ @format
507
+ m = m[1,1]*d/dx(1) +...+ m[n,1]*d/dx(n).
508
+ @end format
509
+ If b>0 the computation stops after all invariants of degree <= b
510
+ (and at least one of higher degree) are found or when all invariants
511
+ are computed.
512
+ If b<=0, the computation continues until all generators
513
+ of the ring of invariants are computed (should be used only if the
514
+ ring of invariants is known to be finitely generated, otherwise the
515
+ algorithm might not stop).
516
+ If r=1 a different reduction is used which is sometimes faster
517
+ (default r=0).
518
+ DISPLAY: if pa is given (any string as 5th or 6th argument), the computation
519
+ pauses whenever new invariants are found and displays them
520
+ THEORY: The algorithm for computing the ring of invariants works in char 0
521
+ or sufficiently large characteristic.
522
+ (K,+) acts as the exponential of the vector field defined by the
523
+ matrix m.
524
+ For background see G.-M. Greuel, G. Pfister,
525
+ Geometric quotients of unipotent group actions, Proc.
526
+ London Math. Soc. (3) 67, 75-105 (1993).
527
+ EXAMPLE: example invariantRing; shows an example
528
+ "
529
+ {
530
+ ideal j;
531
+ int i,it;
532
+ list ll=q;
533
+ int bou=b;
534
+ if( size(#) >0 )
535
+ { if( typeof(#[1]) == "int")
536
+ { ll=ll+list(#[1]);
537
+ }
538
+ if( typeof(#[1]) == "string")
539
+ { string pau=#[1];
540
+ }
541
+ if( size(#)>1 )
542
+ {
543
+ if( typeof(#[2]) == "string")
544
+ { string pau=#[2];
545
+ }
546
+ if( typeof(#[2]) == "int")
547
+ { ll=ll+list(#[2]);
548
+ }
549
+ }
550
+ }
551
+ int z;
552
+ ideal karl;
553
+ ideal k1=1;
554
+ list k2;
555
+ //------------------ computation of local invariants ------------------
556
+ for (i=1;i<=nvars(basering);i++)
557
+ {
558
+ karl=karl+localInvar(m,var(i),p,q);
559
+ }
560
+ if( defined(pau) )
561
+ { "";
562
+ "// local invariants computed:";
563
+ "";
564
+ karl;
565
+ "";
566
+ pause("// hit return key to continue!");
567
+ "";
568
+ }
569
+ //------------------ computation of further invariants ----------------
570
+ it=0;
571
+ while (size(k1)!=0)
572
+ {
573
+ // test if the new invariants are already in the ring generated
574
+ // by the invariants we constructed so far
575
+ it++;
576
+ karl=sortier(karl);
577
+ j=q;
578
+ for (i=1;i<=size(karl);i++)
579
+ {
580
+ j=j + simplify(completeReduction(karl[i],j,ll),1);
581
+ }
582
+ karl=j;
583
+ j[1]=0;
584
+ j=simplify(j,2);
585
+ k2=furtherInvar(m,j,karl,q);
586
+ k1=k2[1];
587
+ karl=k2[2];
588
+ if(k1[1]!=1)
589
+ {
590
+ k1=sortier(k1);
591
+ z=size(k1);
592
+ for (i=1;i<=z;i++)
593
+ {
594
+ k1[i]= completeReduction(k1[i],karl,ll);
595
+ if (k1[i]!=0)
596
+ {
597
+ karl=karl+simplify(k1[i],1);
598
+ }
599
+ }
600
+ if( defined(pau) == voice)
601
+ {
602
+ "// the invariants after",it,"iteration(s):"; "";
603
+ karl;"";
604
+ pause("// hit return key to continue!");
605
+ "";
606
+ }
607
+ if( (bou>0) && (size(k1)>0) )
608
+ {
609
+ if( deg(k1[size(k1)])>bou )
610
+ {
611
+ return(karl);
612
+ }
613
+ }
614
+ }
615
+ }
616
+ return(karl);
617
+ }
618
+ example
619
+ { "EXAMPLE:"; echo = 2;
620
+
621
+ //Winkelmann: free action but Spec(k[x(1),...,x(5)]) --> Spec(invariant ring)
622
+ //is not surjective
623
+
624
+ ring rw=0,(x(1..5)),dp;
625
+ matrix m[5][1];
626
+ m[3,1]=x(1);
627
+ m[4,1]=x(2);
628
+ m[5,1]=1+x(1)*x(4)+x(2)*x(3);
629
+ ideal in=invariantRing(m,x(3),x(1),0); //compute full invarint ring
630
+ in;
631
+
632
+ //Deveney/Finston: The ring of invariants is not finitely generated
633
+
634
+ ring rf=0,(x(1..7)),dp;
635
+ matrix m[7][1];
636
+ m[4,1]=x(1)^3;
637
+ m[5,1]=x(2)^3;
638
+ m[6,1]=x(3)^3;
639
+ m[7,1]=(x(1)*x(2)*x(3))^2;
640
+ ideal in=invariantRing(m,x(4),x(1),6); //all invariants up to degree 6
641
+ in;
642
+ }
643
+ ///////////////////////////////////////////////////////////////////////////////
644
+ /* Further examplex
645
+
646
+ //Deveney/Finston: Proper Ga-action which is not locally trivial
647
+ //r[x(1),...,x(5)] is not flat over the ring of invariants
648
+ LIB "invar.lib";
649
+ ring rd=0,(x(1..5)),dp;
650
+ matrix m[5][1];
651
+ m[3,1]=x(1);
652
+ m[4,1]=x(2);
653
+ m[5,1]=1+x(1)*x(4)^2;
654
+ ideal in=invariantRing(m,x(3),x(1),0,1);
655
+ in;
656
+
657
+ actionIsProper(m);
658
+
659
+ //compute the algebraic relations between the invariants
660
+ int z=size(in);
661
+ ideal null;
662
+ ring r1=0,(y(1..z)),dp;
663
+ setring rd;
664
+ map phi=r1,in;
665
+ setring r1;
666
+ ideal ker=preimage(rd,phi,null);
667
+ ker;
668
+
669
+ //the discriminant
670
+
671
+ ring r=0,(x(1..2),y(1..2),z,t),dp;
672
+ poly p=z+(1+x(1)*y(2)^2)*t+x(1)*y(1)*y(2)*t^2+(1/3)*x(1)*y(1)^2*t^3;
673
+
674
+ matrix m[5][5];
675
+ m[1,1]=z;
676
+ m[1,2]=x(1)*y(2)^2+1;
677
+ m[1,3]=x(1)*y(1)*y(2);
678
+ m[1,4]=1/3*x(1)*y(1)^2;
679
+ m[1,5]=0;
680
+ m[2,1]=0;
681
+ m[2,2]=z;
682
+ m[2,3]=x(1)*y(2)^2+1;
683
+ m[2,4]=x(1)*y(1)*y(2);
684
+ m[2,5]=1/3*x(1)*y(1)^2;
685
+ m[3,1]=x(1)*y(2)^2+1;
686
+ m[3,2]=2*x(1)*y(1)*y(2);
687
+ m[3,3]=x(1)*y(1)^2;
688
+ m[3,4]=0;
689
+ m[3,5]=0;
690
+ m[4,1]=0;
691
+ m[4,2]=x(1)*y(2)^2+1;
692
+ m[4,3]=2*x(1)*y(1)*y(2);
693
+ m[4,4]=x(1)*y(1)^2;
694
+ m[4,5]=0;
695
+ m[5,1]=0;
696
+ m[5,2]=0;
697
+ m[5,3]=x(1)*y(2)^2+1;
698
+ m[5,4]=2*x(1)*y(1)*y(2);
699
+ m[5,5]=x(1)*y(1)^2;
700
+
701
+ poly disc=9*det(m)/(x(1)^2*y(1)^4);
702
+
703
+ LIB "invar.lib";
704
+ matrix n[6][1];
705
+ n[2,1]=x(1);
706
+ n[4,1]=y(1);
707
+ n[5,1]=1+x(1)*y(2)^2;
708
+
709
+ derivate(n,disc);
710
+
711
+ //x(1)^3*y(2)^6-6*x(1)^2*y(1)*y(2)^3*z+6*x(1)^2*y(2)^4+9*x(1)*y(1)^2*z^2-18*x(1)*y(1)*y(2)*z+9*x(1)*y(2)^2+4
712
+
713
+ //////////////////////////////////////////////////////////////////////////////
714
+ //constructive approach to Weizenboecks theorem
715
+
716
+ int n=5;
717
+ // int n=6; //limit
718
+ ring w=32003,(x(1..n)),wp(1..n);
719
+
720
+ // definition of the vector field m=sum m[i]*d/dx(i)
721
+ matrix m[n][1];
722
+ int i;
723
+ for (i=1;i<=n-1;i=i+1)
724
+ {
725
+ m[i+1,1]=x(i);
726
+ }
727
+ ideal in=invariantRing(m,x(2),x(1),0,"");
728
+
729
+ in;
730
+ */