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,1106 @@
1
+ /////////////////////////////////////////////////////////////////////////////
2
+ version="version noether.lib 4.1.2.0 Feb_2019 "; // $Id: f758646fa2770854b19e14f64fdc527f1f59b0bc $
3
+ category="Commutative Algebra";
4
+ info="
5
+ LIBRARY: noether.lib Noether normalization of an ideal (not necessary
6
+ homogeneous)
7
+ AUTHORS: A. Hashemi, Amir.Hashemi@lip6.fr
8
+
9
+
10
+ OVERVIEW:
11
+ A library for computing the Noether normalization of an ideal that DOES NOT
12
+ require the computation of the dimension of the ideal.
13
+ It checks whether an ideal is in Noether position. A modular version of
14
+ these algorithms is also provided.
15
+ The procedures are based on a paper of Amir Hashemi 'Efficient Algorithms for
16
+ Computing Noether Normalization' (presented in ASCM 2007)
17
+
18
+ This library computes also Castelnuovo-Mumford regularity and satiety of an
19
+ ideal. A modular version of these algorithms is also provided.
20
+ The procedures are based on a paper of Amir Hashemi 'Computation of
21
+ Castelnuovo-Mumford regularity and satiety' (preprint 2008)
22
+
23
+
24
+ PROCEDURES:
25
+ NPos_test(id); checks whether monomial ideal id is in Noether position
26
+ modNpos_test(id); the same as above using modular methods
27
+ NPos(id); Noether normalization of ideal id
28
+ modNPos(id); Noether normalization of ideal id by modular methods
29
+ nsatiety(id); Satiety of ideal id
30
+ modsatiety(id) Satiety of ideal id by modular methods
31
+ regCM(id); Castelnuovo-Mumford regularity of ideal id
32
+ modregCM(id); Castelnuovo-Mumford regularity of ideal id by modular methods
33
+ ";
34
+ LIB "elim.lib";
35
+ LIB "algebra.lib";
36
+ LIB "polylib.lib";
37
+ LIB "ring.lib";
38
+ LIB "presolve.lib";
39
+
40
+ ///////////////////////////////////////////////////////////////////////////////
41
+
42
+ proc NPos_test (ideal I)
43
+ "
44
+ USAGE: NPos_test (I); I monomial ideal
45
+ RETURN: A list whose first element is 1, if i is in Noether position,
46
+ 0 otherwise. The second element of this list is a list of variables ordered
47
+ such that those variables are listed first, of which a power belongs to the
48
+ initial ideal of i. If i is in Noether position, the method returns furthermore
49
+ the dimension of i.
50
+ ASSUME: i is a nonzero monomial ideal.
51
+ "
52
+ {
53
+ //--------------------------- initialisation ---------------------------------
54
+ int time,ii,j,k,l,d,t,jj;
55
+ intvec v;
56
+ def r0 = basering;
57
+ int n = nvars(r0)-1;
58
+ list L,Y,P1,P2,P3;
59
+ if (I[1]==1)
60
+ {
61
+ print("The ideal is 1");return(1);
62
+ }
63
+ for ( ii = 1; ii <= n+1; ii++ )
64
+ {
65
+ L[ii]=0;
66
+ }
67
+ for ( ii = 1; ii <= size(I); ii++ )
68
+ {
69
+ Y=variables(I[ii]);
70
+ l=rvar(Y[1][1]);
71
+ if (size(Y[1])==1)
72
+ {
73
+ L[l]=1;
74
+ P1=insert(P1,Y[1][1]);
75
+ }
76
+ if (L[l]==0)
77
+ {
78
+ L[l]=-1;
79
+ }
80
+ }
81
+ t=size(P1);
82
+ if (t==0)
83
+ {
84
+ for ( jj = 1; jj <= n+1; jj++ )
85
+ {
86
+ P3=insert(P3,varstr(jj));
87
+ }
88
+ }
89
+ else
90
+ {
91
+ P2=findvars(ideal(P1[1..t]))[3];
92
+ for ( jj = 1; jj <= size(P2[1]); jj++ )
93
+ {
94
+ P3=insert(P3,P2[1][jj]);
95
+ }
96
+ }
97
+ if (L[n+1]==-1)
98
+ {
99
+ return(list(0,P1+P3));
100
+ }
101
+ for ( ii = 1; ii <= n; ii++ )
102
+ {
103
+ if (L[ii]==-1)
104
+ {
105
+ return(list(0,P1+P3));
106
+ }
107
+ if (L[ii]==0 and L[ii+1]==1)
108
+ {
109
+ return(list(0,P1+P3));
110
+ }
111
+ }
112
+ d=n+1-sum(L);
113
+ print("The dimension of the ideal is:");print(d);
114
+ return(list(1,P1+P3));
115
+ }
116
+ example
117
+ { "EXAMPLE:"; echo = 2;
118
+ ring r=0,(X,Y,a,b),dp;
119
+ poly f=X^8+a*Y^4-Y;
120
+ poly g=Y^8+b*X^4-X;
121
+ poly h=diff(f,X)*diff(g,Y)-diff(f,Y)*diff(g,X);
122
+ ideal i=f,g,h;
123
+ NPos_test(i);
124
+ }
125
+ //////////////////////////////////////////
126
+ proc modNpos_test (ideal i)
127
+ "USAGE: modNpos_test(i); i an ideal
128
+ RETURN: 1 if i is in Noether position 0 otherwise.
129
+ NOTE: This test is a probabilistic test, and it computes the initial of the ideal modulo the prime number 2147483647 (the biggest prime less than 2^31).
130
+ "
131
+ {
132
+ "// WARNING:
133
+ // The procedure is probabilistic and it computes the initial of the ideal modulo the prime number 2147483647";
134
+ int p;
135
+ def br=basering;
136
+ setring br;
137
+ ideal I;
138
+ list #;
139
+ option(redSB);
140
+ p=2147483647;
141
+ #=ringlist(br);
142
+ #[1]=p;
143
+ def oro=ring(#);
144
+ setring oro;
145
+ ideal sbi,lsbi;
146
+ sbi=fetch(br,i);
147
+ lsbi=lead(std(sbi));
148
+ setring br;
149
+ I=fetch(oro,lsbi);
150
+ I=simplify(I,1);
151
+ attrib(I,"isSB",1);
152
+ return(NPos_test(I));
153
+ }
154
+ example
155
+ { "EXAMPLE:"; echo = 2;
156
+ ring r=0,(X,Y,a,b),dp;
157
+ poly f=X^8+a*Y^4-Y;
158
+ poly g=Y^8+b*X^4-X;
159
+ poly h=diff(f,X)*diff(g,Y)-diff(f,Y)*diff(g,X);
160
+ ideal i=f,g,h;
161
+ modNpos_test(i);
162
+ }
163
+
164
+
165
+ ///////////////////////////////////////////////////////////////////////////////
166
+ proc NPos (ideal i)
167
+ "USAGE: NPos(i); i ideal
168
+ RETURN: A linear map phi such that phi(i) is in Noether position
169
+ KEYWORDS: Noether position
170
+ "
171
+ {
172
+ //--------------------------- initialisation ---------------------------------
173
+ int ii,jj,d,time,n,nl,zz;
174
+ intmat ran;
175
+ def r0 = basering;
176
+ ideal K,chcoord;
177
+ n = nvars(r0)-1;
178
+ list l1;
179
+ for (zz = 0; zz<= n; zz++)
180
+ {
181
+ l1[zz+1] = "x("+string(zz)+")";
182
+ }
183
+ ring r1 = create_ring(ring_list(r0)[1], l1, "dp", "no_minpoly");
184
+ ideal i,sbi,I,K,chcoord,m,L;
185
+ list #;
186
+ poly P;
187
+ map phi;
188
+ i = fetch(r0,i);
189
+ time=rtimer;
190
+ system("--ticks-per-sec",10);
191
+ i=std(i);
192
+ sbi=sort(lead(i))[1];
193
+ #=NPos_test(sbi);
194
+ if ( #[1]== 1 )
195
+ {
196
+ return ("The ideal is in Noether position and the time of this computation is:",rtimer-time,"/10 sec.");
197
+ }
198
+ else
199
+ {
200
+ L=maxideal(1);
201
+ chcoord=maxideal(1);
202
+ for ( ii = 1; ii<=n+1; ii++ )
203
+ {
204
+ chcoord[rvar(#[2][ii])]=L[ii];
205
+ }
206
+ phi=r1,chcoord;
207
+ sbi=phi(sbi);
208
+ if ( NPos_test(sbi)[1] == 1 )
209
+ {
210
+ setring r0;
211
+ chcoord=fetch(r1,chcoord);
212
+ return (chcoord,"and the time of this computation is:",rtimer-time,"/10 sec.");
213
+ }
214
+ }
215
+ while ( nl < 30 )
216
+ {
217
+ nl=nl+1;
218
+ I=i;
219
+ L=maxideal(1);
220
+ for ( ii = n; ii>=0; ii-- )
221
+ {
222
+ chcoord=select1(maxideal(1),1..ii);
223
+ ran=random(100,1,ii);
224
+ ran=intmat(ran,1,ii+1);
225
+ ran[1,ii+1]=1;
226
+ m=select1(maxideal(1),1..(ii+1));
227
+ for ( jj = 1; jj<=ii+1; jj++ )
228
+ {
229
+ P=P+ran[1,jj]*m[jj];
230
+ }
231
+ chcoord[ii+1]=P;
232
+ L[ii+1]=P;
233
+ P=0;
234
+ phi=r1,chcoord;
235
+ I=phi(I);
236
+ if ( NPos_test(sort(lead(std(I)))[1])[1] == 1 )
237
+ {
238
+ K=x(ii..n);
239
+ setring r0;
240
+ K=fetch(r1,K);
241
+ ideal L=fetch(r1,L);
242
+ return (L,"and the time of this computation is:",rtimer-time,"/10 sec.");
243
+ }
244
+ }
245
+ }
246
+ "// WARNING:
247
+ // The procedure has entered in more than 30 loops: in your example
248
+ // the method may enter an infinite loop over a finite field!";
249
+ return (-1);
250
+ }
251
+ example
252
+ { "EXAMPLE:"; echo = 2;
253
+ ring r=0,(X,Y,a,b),dp;
254
+ poly f=X^8+a*Y^4-Y;
255
+ poly g=Y^8+b*X^4-X;
256
+ poly h=diff(f,X)*diff(g,Y)-diff(f,Y)*diff(g,X);
257
+ ideal i=f,g,h;
258
+ NPos(i);
259
+ }
260
+ ///////////////////////////////////////////////////////////////////////////////
261
+ proc modNPos (ideal i)
262
+ "USAGE: modNPos(i); i ideal
263
+ RETURN: A linear map phi such that phi(i) is in Noether position
264
+ NOTE: It uses the procedure modNpos_test to test Noether position.
265
+ "
266
+ {
267
+ //--------------------------- initialisation ---------------------------------
268
+ int ii,jj,d,time,n,nl,zz;
269
+ intmat ran;
270
+ def r0 = basering;
271
+ ideal K,chcoord;
272
+ n = nvars(r0)-1;
273
+ list l2;
274
+ for (zz = 0; zz<= n; zz++)
275
+ {
276
+ l2[zz+1] = "x("+string(zz)+")";
277
+ }
278
+ ring r1 = create_ring(ring_list(r0)[1], l2, "dp", "no_minpoly");
279
+ ideal i,sbi,I,K,chcoord,m,L;
280
+ poly P;
281
+ list #;
282
+ map phi;
283
+ i = fetch(r0,i);
284
+ time=rtimer;
285
+ system("--ticks-per-sec",10);
286
+ #=modNpos_test(i);
287
+ if ( #[1]== 1 )
288
+ {
289
+ return ("The ideal is in Noether position and the time of this computation is:",rtimer-time,"/10 sec.");
290
+ }
291
+ else
292
+ {
293
+ L=maxideal(1);
294
+ chcoord=maxideal(1);
295
+ for ( ii = 1; ii<=n+1; ii++ )
296
+ {
297
+ chcoord[rvar(#[2][ii])]=L[ii];
298
+ }
299
+ phi=r1,chcoord;
300
+ I=phi(i);
301
+ if ( modNpos_test(I)[1] == 1 )
302
+ {
303
+ setring r0;
304
+ chcoord=fetch(r1,chcoord);
305
+ return (chcoord,"and the time of this computation is:",rtimer-time,"/10 sec.");
306
+ }
307
+ }
308
+ while ( nl < 30 )
309
+ {
310
+ nl=nl+1;
311
+ I=i;
312
+ L=maxideal(1);
313
+ for ( ii = n; ii>=0; ii-- )
314
+ {
315
+ chcoord=select1(maxideal(1),1..ii);
316
+ ran=random(100,1,ii);
317
+ ran=intmat(ran,1,ii+1);
318
+ ran[1,ii+1]=1;
319
+ m=select1(maxideal(1),1..(ii+1));
320
+ for ( jj = 1; jj<=ii+1; jj++ )
321
+ {
322
+ P=P+ran[1,jj]*m[jj];
323
+ }
324
+ chcoord[ii+1]=P;
325
+ L[ii+1]=P;
326
+ P=0;
327
+ phi=r1,chcoord;
328
+ I=phi(I);
329
+ if ( modNpos_test(I)[1] == 1 )
330
+ {
331
+ K=x(ii..n);
332
+ setring r0;
333
+ K=fetch(r1,K);
334
+ ideal L=fetch(r1,L);
335
+ return (L,"and the time of this computation is:",rtimer-time,"/10 sec.");
336
+ }
337
+ }
338
+ }
339
+ "// WARNING:
340
+ // The procedure has entered in more than 30 loops: in your example
341
+ // the method may enter an infinite loop over a finite field!";
342
+ return (-1);
343
+ }
344
+ example
345
+ { "EXAMPLE:"; echo = 2;
346
+ ring r=0,(X,Y,a,b),dp;
347
+ poly f=X^8+a*Y^4-Y;
348
+ poly g=Y^8+b*X^4-X;
349
+ poly h=diff(f,X)*diff(g,Y)-diff(f,Y)*diff(g,X);
350
+ ideal i=f,g,h;
351
+ modNPos(i);
352
+ }
353
+
354
+ ////////////////////////////////////////////////////////////////////////////////////
355
+ static proc TestLastVarIsInGenericPos (ideal i)
356
+ "USAGE: TestLastVarIsInGenericPos (i); i a monomial ideal,
357
+ RETURN: 1 if the last variable is in generic position for i and 0 otherwise.
358
+ THEORY: The last variable is in generic position if the quotient of the ideal
359
+ with respect to this variable is equal to the quotient of the ideal with respect to the maximal ideal.
360
+ "
361
+ {
362
+ //--------------------------- initialisation ---------------------------------
363
+ int n,ret,zz;
364
+ def r0 = basering;
365
+ n = nvars(r0)-1;
366
+ list l3;
367
+ for (zz = 0; zz<= n; zz++)
368
+ {
369
+ l3[zz+1] = "x("+string(zz)+")";
370
+ }
371
+ ring r1 = create_ring(ring_list(r0)[1], l3, "dp", "no_minpoly");
372
+ ideal I,i;
373
+ i = fetch(r0,i);
374
+ attrib(i,"isSB",1);
375
+ I=quotient(select(i,n+1),x(n));
376
+ I=I*maxideal(1);
377
+ ret=1;
378
+ if (size(reduce(I,i,5)) <> 0)
379
+ {
380
+ ret=0;
381
+ }
382
+ return(ret);
383
+ }
384
+
385
+ ////////////////////////////////////////////////////////////////////////////////////
386
+ proc nsatiety (ideal i)
387
+ "USAGE: nsatiety (i); i ideal,
388
+ RETURN: an integer, the satiety of i.
389
+ (returns -1 if i is not homogeneous)
390
+ ASSUME: i is a homogeneous ideal of the basering R=K[x(0)..x(n)].
391
+ THEORY: The satiety, or saturation index, of a homogeneous ideal i is the
392
+ least integer s such that, for all d>=s, the degree d part of the
393
+ ideals i and isat=sat(i,maxideal(1)) coincide.
394
+ KEYWORDS: saturation
395
+ "
396
+ {
397
+ //--------------------------- initialisation ---------------------------------
398
+ int e,ii,jj,h,d,time,lastv,nl,ret,zz;
399
+ intmat ran;
400
+ def r0 = basering;
401
+ int n = nvars(r0)-1;
402
+ list l4;
403
+ for (zz = 0; zz<= n; zz++)
404
+ {
405
+ l4[zz+1] = "x("+string(zz)+")";
406
+ }
407
+ ring r1 = create_ring(ring_list(r0)[1], l4, "dp", "no_minpoly");
408
+ ideal i,sbi,I,K,chcoord,m,L;
409
+ poly P;
410
+ map phi;
411
+ i = fetch(r0,i);
412
+ time=rtimer;
413
+ system("--ticks-per-sec",100);
414
+ sbi=std(i);
415
+ //----- Check ideal homogeneous
416
+ if ( homog(sbi) == 0 )
417
+ {
418
+ dbprint(2,"The ideal is not homogeneous, and time for this test is: " + string(rtimer-time) + "/100sec.");
419
+ return ();
420
+ }
421
+ I=simplify(lead(sbi),1);
422
+ attrib(I,"isSB",1);
423
+ K=select(I,n+1);
424
+ if (size(K) == 0)
425
+ {
426
+ dbprint(2,"sat(i)=0 and the time of this computation: " + string(rtimer-time) + "/100sec.");
427
+ return();
428
+ }
429
+ if (TestLastVarIsInGenericPos(I) == 1 )
430
+ {
431
+ dbprint(2,"sat(i)=" + string(maxdeg1(K)) + " and the time of this computation: " + string(rtimer-time) + "/100sec.");
432
+ return();
433
+ }
434
+ while ( nl < 5 )
435
+ {
436
+ nl=nl+1;
437
+ chcoord=select1(maxideal(1),1..n);
438
+ ran=random(100,1,n);
439
+ ran=intmat(ran,1,n+1);
440
+ ran[1,n+1]=1;
441
+ m=select1(maxideal(1),1..(n+1));
442
+ for ( jj = 1; jj<=n+1; jj++ )
443
+ {
444
+ P=P+ran[1,jj]*m[jj];
445
+ }
446
+ chcoord[n+1]=P;
447
+ P=0;
448
+ phi=r1,chcoord;
449
+ L=std(phi(i));
450
+ I=simplify(lead(L),1);
451
+ attrib(I,"isSB",1);
452
+ K=select(I,n+1);
453
+ if (size(K) == 0)
454
+ {
455
+ dbprint(2,"sat(i)=0 and the time of this computation: " + string(rtimer-time) + "/100sec.");
456
+ return();
457
+ }
458
+ if (TestLastVarIsInGenericPos(I) == 1 )
459
+ {
460
+ dbprint(2,"sat(i)=" + string(maxdeg1(K)) + " and the time of this computation: " + string(rtimer-time) + "/100sec.");
461
+ return();
462
+ }
463
+ }
464
+ }
465
+ example
466
+ { "EXAMPLE:"; echo = 2;
467
+ ring r=0,(t,a,b,c,d),dp;
468
+ ideal i=b4-a3d, ab3-a3c, bc4-ac3d-bcd3+ad4, c6-bc3d2-c3d3+bd5, ac5-b2c3d-ac2d3+b2d4, a2c4-a3d3+b3d3-a2cd3, b3c3-a3d3, ab2c3-a3cd2+b3cd2-ab2d3, a2bc3-a3c2d+b3c2d-a2bd3, a3c3-a3bd2, a4c2-a3b2d;
469
+ nsatiety(i);
470
+ }
471
+
472
+
473
+ //////////////////////////////////////////////////////////////////////////////
474
+ proc modsatiety (ideal i)
475
+ "USAGE: modsatiety(i); i ideal,
476
+ RETURN: an integer, the satiety of i.
477
+ (returns -1 if i is not homogeneous)
478
+ ASSUME: i is a homogeneous ideal of the basering R=K[x(0)..x(n)].
479
+ THEORY: The satiety, or saturation index, of a homogeneous ideal i is the
480
+ least integer s such that, for all d>=s, the degree d part of the
481
+ ideals i and isat=sat(i,maxideal(1)) coincide.
482
+ NOTE: This is a probabilistic procedure, and it computes the initial of the ideal modulo the prime number 2147483647 (the biggest prime less than 2^31).
483
+ KEYWORDS: saturation
484
+ "
485
+ {
486
+ //--------------------------- initialisation ---------------------------------
487
+ "// WARNING: The characteristic of base field must be zero.
488
+ // The procedure is probabilistic and it computes the
489
+ //initial ideals modulo the prime number 2147483647.";
490
+ int e,ii,jj,h,d,time,lastv,nl,ret,s1,d1,siz,j,si,u,k,p,zz;
491
+ intvec v1;
492
+ intmat ran;
493
+ def r0 = basering;
494
+ int n = nvars(r0)-1;
495
+ list l5;
496
+ for (zz = 0; zz<= n; zz++)
497
+ {
498
+ l5[zz+1] = "x("+string(zz)+")";
499
+ }
500
+ ring r1 = create_ring(ring_list(r0)[1], l5, "dp", "no_minpoly");
501
+ ideal i,sbi,I,K,chcoord,m,L,sbi1,lsbi1,id1;
502
+ vector V1;
503
+ list #,LL,PL,Gb1,VGb1,Gb2,VGb2,Res1,Res2;
504
+ poly P;
505
+ map phi;
506
+ time=rtimer;
507
+ system("--ticks-per-sec",100);
508
+ i = fetch(r0,i);
509
+ //----- Check ideal homogeneous
510
+ if ( homog(i) == 0 )
511
+ {
512
+ "// WARNING: The ideal is not homogeneous.";
513
+ dbprint(2,"Time for this test is: " + string(rtimer-time) + "/100sec.");
514
+ return ();
515
+ }
516
+ option(redSB);
517
+ p=2147483647;
518
+ list r2=ringlist(r1);
519
+ r2[1]=p;
520
+ def oro=ring(r2);
521
+ setring oro;
522
+ ideal sbi=fetch(r1,i);
523
+ sbi=std(sbi);
524
+ setring r1;
525
+ sbi=fetch(oro,sbi);
526
+ kill oro;
527
+ I=simplify(lead(sbi),1);
528
+ attrib(I,"isSB",1);
529
+ K=select(I,n+1);
530
+ if (size(K) == 0)
531
+ {
532
+ dbprint(2,"msat(i)=0 and the time of this computation: " + string(rtimer-time) + "/100sec.");
533
+ return();
534
+ }
535
+ if (TestLastVarIsInGenericPos(I) == 1 )
536
+ {
537
+ dbprint(2,"msat(i)=" + string(maxdeg1(K)) + " and the time of this computation: " + string(rtimer-time) + "/100sec.");
538
+ return();
539
+ }
540
+ while ( nl < 30 )
541
+ {
542
+ nl=nl+1;
543
+ chcoord=select1(maxideal(1),1..n);
544
+ ran=random(100,1,n);
545
+ ran=intmat(ran,1,n+1);
546
+ ran[1,n+1]=1;
547
+ m=select1(maxideal(1),1..(n+1));
548
+ for ( jj = 1; jj<=n+1; jj++ )
549
+ {
550
+ P=P+ran[1,jj]*m[jj];
551
+ }
552
+ chcoord[n+1]=P;
553
+ P=0;
554
+ phi=r1,chcoord;
555
+ sbi=phi(i);
556
+ list r2=ringlist(r1);
557
+ r2[1]=p;
558
+ def oro=ring(r2);
559
+ setring oro;
560
+ ideal sbi=fetch(r1,sbi);
561
+ sbi=std(sbi);
562
+ setring r1;
563
+ sbi=fetch(oro,sbi);
564
+ kill oro;
565
+ lsbi1=lead(sbi);
566
+ attrib(lsbi1,"isSB",1);
567
+ K=select(lsbi1,n+1);
568
+ if (size(K) == 0)
569
+ {
570
+ dbprint(2,"msat(i)=0 and the time of this computation: " + string(rtimer-time) + "/100sec.");
571
+ return();
572
+ }
573
+ if (TestLastVarIsInGenericPos(lsbi1) == 1 )
574
+ {
575
+ dbprint(2,"msat(i)=" + string(maxdeg1(K)) + " and the time of this computation: " + string(rtimer-time) + "/100sec.");
576
+ return();
577
+ }
578
+ }
579
+ }
580
+ example
581
+ { "EXAMPLE:"; echo = 2;
582
+ ring r=0,(t,a,b,c,d),dp;
583
+ ideal i=b4-a3d, ab3-a3c, bc4-ac3d-bcd3+ad4, c6-bc3d2-c3d3+bd5, ac5-b2c3d-ac2d3+b2d4, a2c4-a3d3+b3d3-a2cd3, b3c3-a3d3, ab2c3-a3cd2+b3cd2-ab2d3, a2bc3-a3c2d+b3c2d-a2bd3, a3c3-a3bd2, a4c2-a3b2d;
584
+ modsatiety(i);
585
+ }
586
+
587
+ //////////////////////////////////////////////////////////////////////////////
588
+ //
589
+ proc regCM (ideal i)
590
+ "USAGE: regCM (i); i ideal
591
+ RETURN: the Castelnuovo-Mumford regularity of i.
592
+ (returns -1 if i is not homogeneous)
593
+ ASSUME: i is a homogeneous ideal.
594
+ KEYWORDS: regularity
595
+ "
596
+ {
597
+ //--------------------------- initialisation ---------------------------------
598
+ int e,ii,jj,H,h,d,time,nl,zz;
599
+ def r0 = basering;
600
+ int n = nvars(r0)-1;
601
+ list l6;
602
+ for (zz = 0; zz<= n; zz++)
603
+ {
604
+ l6[zz+1] = "x("+string(zz)+")";
605
+ }
606
+ ring r1 = create_ring(ring_list(r0)[1], l6, "dp", "no_minpoly");
607
+ ideal i,sbi,I,J,K,L;
608
+ list #;
609
+ poly P;
610
+ map phi;
611
+ i = fetch(r0,i);
612
+ time=rtimer;
613
+ system("--ticks-per-sec",100);
614
+ sbi=std(i);
615
+ //----- Check ideal homogeneous
616
+ if ( homog(sbi) == 0 )
617
+ {
618
+ "// The ideal is not homogeneous!";
619
+ return (-1);
620
+ }
621
+ I=simplify(lead(sbi),1);
622
+ attrib(I,"isSB",1);
623
+ d=dim(I);
624
+ if (char(r1) > 0 and d == 0)
625
+ {
626
+ def r2=changechar(0,r1);
627
+ setring r2;
628
+ ideal sbi,I,i,K,T;
629
+ map phi;
630
+ I = fetch(r1,I);
631
+ i=I;
632
+ attrib(I,"isSB",1);
633
+ }
634
+ else
635
+ {
636
+ def r2=changechar(ring_list(r1)[1],r1);
637
+ setring r2;
638
+ ideal sbi,I,i,K,T,ic,Ic;
639
+ map phi;
640
+ I = imap(r1,I);
641
+ Ic=I;
642
+ attrib(I,"isSB",1);
643
+ i = imap(r1,i);
644
+ ic=i;
645
+ }
646
+ K=select(I,n+1);
647
+ if (size(K) == 0)
648
+ {
649
+ h=0;
650
+ }
651
+ else
652
+ {
653
+ if (TestLastVarIsInGenericPos(I) == 1)
654
+ {
655
+ h=maxdeg1(K);
656
+ }
657
+ else
658
+ {
659
+ while ( nl < 30 )
660
+ {
661
+ nl=nl+1;
662
+ phi=r2,randomLast(100);
663
+ T=phi(i);
664
+ I=simplify(lead(std(T)),1);
665
+ attrib(I,"isSB",1);
666
+ K=select(I,n+1);
667
+ if (size(K) == 0)
668
+ {
669
+ h=0;break;
670
+ }
671
+ if (TestLastVarIsInGenericPos(I) == 1 )
672
+ {
673
+ h=maxdeg1(K);break;
674
+ }
675
+ }
676
+ i=T;
677
+ }
678
+ }
679
+ list l7;
680
+ for ( ii = n; ii>=n-d+1; ii-- )
681
+ {
682
+ l7=list();
683
+ i=subst(i,x(ii),0);
684
+ for (zz = 0; zz<= ii-1; zz++)
685
+ {
686
+ l7[zz+1] = "x("+string(zz)+")";
687
+ }
688
+ ring mr = create_ring(ring_list(r1)[1], l7, "dp", "no_minpoly");
689
+ ideal i,sbi,I,J,K,L,T;
690
+ poly P;
691
+ map phi;
692
+ i=imap(r2,i);
693
+ I=simplify(lead(std(i)),1);
694
+ attrib(I,"isSB",1);
695
+ K=select(I,ii);
696
+ if (size(K) == 0)
697
+ {
698
+ H=0;
699
+ }
700
+ else
701
+ {
702
+ if (TestLastVarIsInGenericPos(I) == 1)
703
+ {
704
+ H=maxdeg1(K);
705
+ }
706
+ else
707
+ {
708
+ while ( nl < 30 )
709
+ {
710
+ nl=nl+1;
711
+ phi=mr,randomLast(100);
712
+ T=phi(i);
713
+ I=simplify(lead(std(T)),1);
714
+ attrib(I,"isSB",1);
715
+ K=select(I,ii);
716
+ if (size(K) == 0)
717
+ {
718
+ H=0;break;
719
+ }
720
+ if (TestLastVarIsInGenericPos(I) == 1 )
721
+ {
722
+ H=maxdeg1(K);break;
723
+ }
724
+ }
725
+ setring r2;
726
+ i=imap(mr,T);
727
+ kill mr;
728
+ }
729
+ }
730
+ if (H > h)
731
+ {
732
+ h=H;
733
+ }
734
+ }
735
+ if (nl < 30)
736
+ {
737
+ dbprint(2,"reg(i)=" + string(h) + " and the time of this computation: " + string(rtimer-time) + " sec./100");
738
+ return();
739
+ }
740
+ else
741
+ {
742
+ I=Ic;
743
+ attrib(I,"isSB",1);
744
+ i=ic;
745
+ K=subst(select(I,n+1),x(n),1);
746
+ K=K*maxideal(maxdeg1(I));
747
+ if (size(reduce(K,I,5)) <> 0)
748
+ {
749
+ nl=0;
750
+ while ( nl < 30 )
751
+ {
752
+ nl=nl+1;
753
+ phi=r1,randomLast(100);
754
+ sbi=phi(i);
755
+ I=simplify(lead(std(sbi)),1);
756
+ attrib(I,"isSB",1);
757
+ K=subst(select(I,n+1),x(n),1);
758
+ K=K*maxideal(maxdeg1(I));
759
+ if (size(reduce(K,I,5)) == 0)
760
+ {
761
+ break;
762
+ }
763
+ }
764
+ }
765
+ h=maxdeg1(simplify(reduce(quotient(I,maxideal(1)),I),2))+1;
766
+ list l8;
767
+ for ( ii = n; ii> n-d+1; ii-- )
768
+ {
769
+ l8=list();
770
+ sbi=subst(sbi,x(ii),0);
771
+ for (zz = 0; zz<= ii-1; zz++)
772
+ {
773
+ l8[zz+1] = "x("+string(zz)+")";
774
+ }
775
+ ring mr = create_ring(ring_list(r0)[1], l8, "dp", "no_minpoly");
776
+ ideal sbi,I,L,K,T;
777
+ map phi;
778
+ sbi=imap(r1,sbi);
779
+ I=simplify(lead(std(sbi)),1);
780
+ attrib(I,"isSB",1);
781
+ K=subst(select(I,ii),x(ii-1),1);
782
+ K=K*maxideal(maxdeg1(I));
783
+ if (size(reduce(K,I,5)) <> 0)
784
+ {
785
+ nl=0;
786
+ while ( nl < 30 )
787
+ {
788
+ nl=nl+1;
789
+ L=randomLast(100);
790
+ phi=mr,L;
791
+ T=phi(sbi);
792
+ I=simplify(lead(std(T)),1);
793
+ attrib(I,"isSB",1);
794
+ K=subst(select(I,ii),x(ii-1),1);
795
+ K=K*maxideal(maxdeg1(I));
796
+ if (size(reduce(K,I,5)) == 0)
797
+ {
798
+ sbi=T;
799
+ break;
800
+ }
801
+ }
802
+ }
803
+ H=maxdeg1(simplify(reduce(quotient(I,maxideal(1)),I),2))+1;
804
+ if (H > h)
805
+ {
806
+ h=H;
807
+ }
808
+ setring r1;
809
+ sbi=fetch(mr,sbi);
810
+ kill mr;
811
+ }
812
+ sbi=subst(sbi,x(n-d+1),0);
813
+ list l9;
814
+ for (zz = 0; zz<= n-d; zz++)
815
+ {
816
+ l9[zz+1] = "x("+string(zz)+")";
817
+ }
818
+ ring mr = create_ring(ring_list(r0)[1], l9, "dp", "no_minpoly");
819
+ ideal sbi,I,L,K,T;
820
+ map phi;
821
+ sbi=imap(r1,sbi);
822
+ I=simplify(lead(std(sbi)),1);
823
+ attrib(I,"isSB",1);
824
+ H=maxdeg1(simplify(reduce(quotient(I,maxideal(1)),I),2))+1;
825
+ if (H > h)
826
+ {
827
+ h=H;
828
+ }
829
+ dbprint(2,"reg(i)=" + string(h) + " and the time of this computation: " + string(rtimer-time) + " sec./100");
830
+ return();
831
+ }
832
+ }
833
+ example
834
+ { "EXAMPLE:"; echo = 2;
835
+ ring r=0,(t,a,b,c,d),dp;
836
+ ideal i=b4-a3d, ab3-a3c, bc4-ac3d-bcd3+ad4, c6-bc3d2-c3d3+bd5, ac5-b2c3d-ac2d3+b2d4, a2c4-a3d3+b3d3-a2cd3, b3c3-a3d3, ab2c3-a3cd2+b3cd2-ab2d3, a2bc3-a3c2d+b3c2d-a2bd3, a3c3-a3bd2, a4c2-a3b2d;
837
+ regCM(i);
838
+ }
839
+
840
+ //////////////////////////////////////////////////////////////////////////////
841
+ //
842
+ proc modregCM(ideal i)
843
+ "USAGE: modregCM(i); i ideal
844
+ RETURN: an integer, the Castelnuovo-Mumford regularity of i.
845
+ (returns -1 if i is not homogeneous)
846
+ ASSUME: i is a homogeneous ideal and the characteristic of base field is zero..
847
+ NOTE: This is a probabilistic procedure, and it computes the initial of the ideal modulo the prime number 2147483647 (the biggest prime less than 2^31).
848
+ KEYWORDS: regularity
849
+ "
850
+ {
851
+ //--------------------------- initialisation ---------------------------------
852
+ "// WARNING: The characteristic of base field must be zero.
853
+ // This procedure is probabilistic and it computes the initial
854
+ //ideals modulo the prime number 2147483647";
855
+ int e,ii,jj,H,h,d,time,p,nl;
856
+ def r0 = basering;
857
+ int n = nvars(r0)-1;
858
+ list l12;
859
+ for (int zz = 0; zz <= n; zz++)
860
+ {
861
+ l12[zz+1] = "x("+string(zz)+")";
862
+ }
863
+ ring r1 = create_ring(ring_list(r0)[1], l12, "dp", "no_minpoly");
864
+ ideal i,sbi,I,J,K,L,lsbi1,lsbi2;
865
+ list #;
866
+ poly P;
867
+ map phi;
868
+ i = fetch(r0,i);
869
+ time=rtimer;
870
+ system("--ticks-per-sec",100);
871
+ //----- Check ideal homogeneous
872
+ if ( homog(i) == 0 )
873
+ {
874
+ "// The ideal is not homogeneous!";
875
+ return (-1);
876
+ }
877
+ option(redSB);
878
+ p=2147483647;
879
+ #=ringlist(r1);
880
+ #[1]=p;
881
+ def oro=ring(#);
882
+ setring oro;
883
+ ideal sbi,lsbi;
884
+ sbi=fetch(r1,i);
885
+ lsbi=lead(std(sbi));
886
+ setring r1;
887
+ lsbi1=fetch(oro,lsbi);
888
+ lsbi1=simplify(lsbi1,1);
889
+ attrib(lsbi1,"isSB",1);
890
+ kill oro;
891
+ I=lsbi1;
892
+ d=dim(I);
893
+ K=select(I,n+1);
894
+ if (size(K) == 0)
895
+ {
896
+ h=0;
897
+ }
898
+ else
899
+ {
900
+ if (TestLastVarIsInGenericPos(I) == 1)
901
+ {
902
+ h=maxdeg1(K);
903
+ }
904
+ else
905
+ {
906
+ while ( nl < 30 )
907
+ {
908
+ nl=nl+1;
909
+ phi=r1,randomLast(100);
910
+ sbi=phi(i);
911
+ #=ringlist(r1);
912
+ #[1]=p;
913
+ def oro=ring(#);
914
+ setring oro;
915
+ ideal sbi,lsbi;
916
+ sbi=fetch(r1,sbi);
917
+ lsbi=lead(std(sbi));
918
+ setring r1;
919
+ lsbi1=fetch(oro,lsbi);
920
+ lsbi1=simplify(lsbi1,1);
921
+ attrib(lsbi1,"isSB",1);
922
+ kill oro;
923
+ I=lsbi1;
924
+ K=select(I,n+1);
925
+ if (size(K) == 0)
926
+ {
927
+ h=0;break;
928
+ }
929
+ if (TestLastVarIsInGenericPos(I) == 1 )
930
+ {
931
+ h=maxdeg1(K);break;
932
+ }
933
+ }
934
+ i=sbi;
935
+ }
936
+ }
937
+ list l11;int zz;
938
+ for ( ii = n; ii>=n-d+1; ii-- )
939
+ {
940
+ l11=list();
941
+ i=subst(i,x(ii),0);
942
+ for (zz = 0; zz <= ii-1; zz++)
943
+ {
944
+ l11[zz+1] = "x("+string(zz)+")";
945
+ }
946
+ ring mr = create_ring(0, l11, "dp");
947
+ ideal i,sbi,I,J,K,L,lsbi1;
948
+ poly P;
949
+ list #;
950
+ map phi;
951
+ i=imap(r1,i);
952
+ #=ringlist(mr);
953
+ #[1]=p;
954
+ def oro=ring(#);
955
+ setring oro;
956
+ ideal sbi,lsbi;
957
+ sbi=fetch(mr,i);
958
+ lsbi=lead(std(sbi));
959
+ setring mr;
960
+ lsbi1=fetch(oro,lsbi);
961
+ lsbi1=simplify(lsbi1,1);
962
+ attrib(lsbi1,"isSB",1);
963
+ kill oro;
964
+ I=lsbi1;
965
+ K=select(I,ii);
966
+ if (size(K) == 0)
967
+ {
968
+ H=0;
969
+ }
970
+ else
971
+ {
972
+ if (TestLastVarIsInGenericPos(I) == 1)
973
+ {
974
+ H=maxdeg1(K);
975
+ }
976
+ else
977
+ {
978
+ nl=0;
979
+ while ( nl < 30 )
980
+ {
981
+ nl=nl+1;
982
+ phi=mr,randomLast(100);
983
+ sbi=phi(i);
984
+ #=ringlist(mr);
985
+ #[1]=p;
986
+ def oro=ring(#);
987
+ setring oro;
988
+ ideal sbi,lsbi;
989
+ sbi=fetch(mr,sbi);
990
+ lsbi=lead(std(sbi));
991
+ setring mr;
992
+ lsbi1=fetch(oro,lsbi);
993
+ lsbi1=simplify(lsbi1,1);
994
+ kill oro;
995
+ I=lsbi1;
996
+ attrib(I,"isSB",1);
997
+ K=select(I,ii);
998
+ if (size(K) == 0)
999
+ {
1000
+ H=0;break;
1001
+ }
1002
+ if (TestLastVarIsInGenericPos(I) == 1 )
1003
+ {
1004
+ H=maxdeg1(K);break;
1005
+ }
1006
+ }
1007
+ setring r1;
1008
+ i=imap(mr,sbi);
1009
+ kill mr;
1010
+ }
1011
+ }
1012
+ if (H > h)
1013
+ {
1014
+ h=H;
1015
+ }
1016
+ }
1017
+ dbprint(2,"mreg(i)=" + string(h) + " and the time of this computation: " + string(rtimer-time) + "sec./100");
1018
+ return();
1019
+ }
1020
+ example
1021
+ { "EXAMPLE:"; echo = 2;
1022
+ ring r=0,(t,a,b,c,d),dp;
1023
+ ideal i=b4-a3d, ab3-a3c, bc4-ac3d-bcd3+ad4, c6-bc3d2-c3d3+bd5, ac5-b2c3d-ac2d3+b2d4, a2c4-a3d3+b3d3-a2cd3, b3c3-a3d3, ab2c3-a3cd2+b3cd2-ab2d3, a2bc3-a3c2d+b3c2d-a2bd3, a3c3-a3bd2, a4c2-a3b2d;
1024
+ modregCM(i);
1025
+ }
1026
+ /*
1027
+ //////////////////////////////////////////////////////////////
1028
+ example
1029
+ { "EXAMPLE:"; echo = 2;
1030
+ ring r=0,(X,Y,a,b),dp;
1031
+ poly f=X^8+a*Y^4-Y;
1032
+ poly g=Y^8+b*X^4-X;
1033
+ poly h=diff(f,X)*diff(g,Y)-diff(f,Y)*diff(g,X);
1034
+ ideal i=f,g,h;
1035
+ }
1036
+ example
1037
+ { "EXAMPLE:"; echo = 2;
1038
+ ring r=0,(x,y,z,a,b),dp;
1039
+ ideal i=2*y^2*(y^2+x^2)+(b^2-3*a^2)*y^2-2*b*y^2*(x+y)+2*a^2*b*(y+x)-a^2*x^2+a^2*(a^2-b^2),4*y^3+4*y*(y^2+x^2)-2*b*y^2-4*b*y*(y+x)+2*(b^2-3*a^2)*y+2*a^2*b,4*x*y^2-2*b*y^2-2*a^2*x+2*a^2*b;
1040
+ }
1041
+ example
1042
+ { "EXAMPLE:"; echo = 2;
1043
+ ring r=0,(t,a,b,c,d),dp;
1044
+ ideal i=b4-a3d, ab3-a3c, bc4-ac3d-bcd3+ad4, c6-bc3d2-c3d3+bd5, ac5-b2c3d-ac2d3+b2d4, a2c4-a3d3+b3d3-a2cd3, b3c3-a3d3, ab2c3-a3cd2+b3cd2-ab2d3, a2bc3-a3c2d+b3c2d-a2bd3, a3c3-a3bd2, a4c2-a3b2d;
1045
+ }
1046
+ example
1047
+ { "EXAMPLE:"; echo = 2;
1048
+ ring r=0,(a,b,c,d,e),dp;
1049
+ ideal i=6*b4*c3+21*b4*c2*d+15b4cd2+9b4d3-8b2c2e-28b2cde+36b2d2e-144b2c-648b2d-120, 9b4c4+30b4c3d+39b4c2d2+18b4cd3-24b2c3e-16b2c2de+16b2cd2e+24b2d3e-432b2c2-720b2cd-432b2d2+16c2e2-32cde2+16d2e2+576ce-576de-240c+5184,-15b2c3e+15b2c2de-81b2c2+216b2cd-162b2d2+40c2e2-80cde2+40d2e2+1008ce-1008de+5184, -4b2c2+4b2cd-3b2d2+22ce-22de+261;
1050
+ }
1051
+ example
1052
+ { "EXAMPLE:"; echo = 2;
1053
+ ring r=0,(c,b,d,p,q),dp;
1054
+ ideal i=2*(b-1)^2+2*(q-p*q+p^2)+c^2*(q-1)^2-2*b*q+2*c*d*(1-q)*(q-p)+2*b*p*q*d*(d-c)+b^2*d^2*(1-2*p)+2*b*d^2*(p-q)+2*b*d*c*(p-1)+2*b*p*q*(c+1)+(b^2-2*b)*p^2*d^2+2*b^2*p^2+4*b*(1-b)*p+d^2*(p-q)^2,d*(2*p+1)*(q-p)+c*(p+2)*(1-q)+b*(b-2)*d+b*(1-2*b)*p*d+b*c*(q+p-p*q-1)+b*(b+1)*p^2*d, -b^2*(p-1)^2+2*p*(p-q)-2*(q-1),b^2+4*(p-q*q)+3*c^2*(q-1)*(q-1)-3*d^2*(p-q)^2+3*b^2*d^2*(p-1)^2+b^2*p*(p-2)+6*b*d*c*(p+q+q*p-1);
1055
+ }
1056
+ example
1057
+ { "EXAMPLE:"; echo = 2;
1058
+ ring r=0,(a,b,c,d,e,f),dp;
1059
+ ideal i=2adef+3be2f-cef2,4ad2f+5bdef+cdf2,2abdf+3b2ef-bcf2,4a2df+5abef+acf2,4ad2e+3bde2+7cdef, 2acde+3bce2-c2ef, 4abde+3b2e2-4acdf+2bcef-c2f2, 4a2de+3abe2+7acef, 4acd2+5bcde+c2df, 4abd2+3b2de+7bcdf, 16a2d2-9b2e2+32acdf-18bcef+7c2f2, 2abcd+3b2ce-bc2f, 4a2cd+5abce+ac2f, 4a2bd+3ab2e+7abcf, abc2f-cdef2, ab2cf-bdef2, 2a2bcf+3be2f2-cef3, ab3f-3bdf3, 2a2b2f-4adf3+3bef3-cf4, a3bf+4aef3, 3ac3e-cde3, 3b2c2e-bc3f+2cd2ef, abc2e-cde2f, 6a2c2e-4ade3-3be4+ce3f, 3b3ce-b2c2f+2bd2ef, 2a2bce+3be3f-ce2f2, 3a3ce+4ae3f, 4bc3d+cd3e, 4ac3d-3bc3e-2cd2e2+c4f, 8b2c2d-4ad4-3bd3e-cd3f, 4b3cd+3bd3f, 4ab3d+3b4e-b3cf-6bd2f2, 4a4d+3a3be+a3cf-8ae2f2;
1060
+ }
1061
+ example
1062
+ { "EXAMPLE:"; echo = 2;
1063
+ ring r=0,(x,y,z,t,u,v,w),dp;
1064
+ ideal i=2tw+2wy-wz,2uw2-10vw2+20w3-7tu+35tv-70tw, 6tw2+2w2y-2w2z-21t2-7ty+7tz, 2v3-4uvw-5v2w+6uw2+7vw2-15w3-42vy, 6tw+9wy+2vz-3wz-21x, 9uw3-45vw3+135w4+14tv2-70tuw+196tvw-602tw2-14v2z+28uwz+14vwz-28w2z+147ux-735vx+2205wx-294ty+98tz+294yz-98z2, 36tw3+6w3y-9w3z-168t2w-14v2x+28uwx+14vwx-28w2x-28twy+42twz+588tx+392xy-245xz, 2uvw-6v2w-uw2+13vw2-5w3-28tw+14wy, u2w-3uvw+5uw2-28tw+14wy, tuw+tvw-11tw2-2vwy+8w2y+uwz-3vwz+5w2z-21wx, 5tuw-17tvw+33tw2-7uwy+22vwy-39w2y-2uwz+6vwz-10w2z+63wx, 20t2w-12uwx+30vwx-15w2x-10twy-8twz+4wyz, 4t2w-6uwx+12vwx-6w2x+2twy-2wy2-2twz+wyz, 8twx+8wxy-4wxz;
1065
+ }
1066
+ example
1067
+ { "EXAMPLE:"; echo = 2;
1068
+ ring r=0,(a,b,c,d,x,w,u,v),dp;
1069
+ ideal i=a+b+c+d,u+v+w+x, 3ab+3ac+3bc+3ad+3bd+3cd+2,bu+cu+du+av+cv+dv+aw+bw+dw+ax+bx+cx,bcu+bdu+cdu+acv+adv+cdv+abw+adw+bdw+abx+acx+bcx,abc+abd+acd+bcd,bcdu+acdv+abdw+abcx;
1070
+ }
1071
+ example
1072
+ { "EXAMPLE:"; echo = 2;
1073
+ ring r=0,(b,x,y,z,s,t,u,v,w),dp;
1074
+ ideal i=su+bv, tu+bw,tv+sw,sx+by,tx+bz,ty+sz,vx+uy,wx+uz,wy+vz;
1075
+ }
1076
+ example
1077
+ { "EXAMPLE:"; echo = 2;
1078
+ ring r=0,(t,a,b,c,d,e,f,g,h),dp;
1079
+ ideal i=a+c+d-e-h,2df+2cg+2eh-2h2-h-1,3df2+3cg2-3eh2+3h3+3h2-e+4h, 6bdg-6eh2+6h3-3eh+6h2-e+4h, 4df3+4cg3+4eh3-4h4-6h3+4eh-10h2-h-1, 8bdfg+8eh3-8h4+4eh2-12h3+4eh-14h2-3h-1, 12bdg2+12eh3-12h4+12eh2-18h3+8eh-14h2-h-1, -24eh3+24h4-24eh2+36h3-8eh+26h2+7h+1;
1080
+ }
1081
+ example
1082
+ { "EXAMPLE:"; echo = 2;
1083
+ ring r=0,(a,b,c,d,e,f,g,h,k,l),dp;
1084
+ ideal i=f2h-1,ek2-1,g2l-1, 2ef2g2hk2+f2g2h2k2+2ef2g2k2l+2f2g2hk2l+f2g2k2l2+ck2, 2e2fg2hk2+2efg2h2k2+2e2fg2k2l+4efg2hk2l+2fg2h2k2l+2efg2k2l2+2fg2hk2l2+2bfh, 2e2f2ghk2+2ef2gh2k2+2e2f2gk2l+4ef2ghk2l+2f2gh2k2l+2ef2gk2l2+2f2ghk2l2+2dgl, e2f2g2k2+2ef2g2hk2+2ef2g2k2l+2f2g2hk2l+f2g2k2l2+bf2, 2e2f2g2hk+2ef2g2h2k+2e2f2g2kl+4ef2g2hkl+2f2g2h2kl+2ef2g2kl2+2f2g2hkl2+2cek, e2f2g2k2+2ef2g2hk2+f2g2h2k2+2ef2g2k2l+2f2g2hk2l+dg2, -e2f2g2hk2-ef2g2h2k2-e2f2g2k2l-2ef2g2hk2l-f2g2h2k2l-ef2g2k2l2-f2g2hk2l2+a2;
1085
+ }
1086
+ example
1087
+ { "EXAMPLE:"; echo = 2;
1088
+ ring r=0,(b,c,d,e,f,g,h,j,k,l),dp;
1089
+ ideal i=-k9+9k8l-36k7l2+84k6l3-126k5l4+126k4l5-84k3l6+36k2l7-9kl8+l9, -bk8+8bk7l+k8l-28bk6l2-8k7l2+56bk5l3+28k6l3-70bk4l4-56k5l4+56bk3l5+70k4l5-28bk2l6-56k3l6+8bkl7+28k2l7-bl8-8kl8+l9, ck7-7ck6l-k7l+21ck5l2+7k6l2-35ck4l3-21k5l3+35ck3l4+35k4l4-21ck2l5-35k3l5+7ckl6+21k2l6-cl7-7kl7+l8, -dk6+6dk5l+k6l-15dk4l2-6k5l2+20dk3l3+15k4l3-15dk2l4-20k3l4+6dkl5+15k2l5-dl6-6kl6+l7, ek5-5ek4l-k5l+10ek3l2+5k4l2-10ek2l3-10k3l3+5ekl4+10k2l4-el5-5kl5+l6, -fk4+4fk3l+k4l-6fk2l2-4k3l2+4fkl3+6k2l3-fl4-4kl4+l5, gk3-3gk2l-k3l+3gkl2+3k2l2-gl3-3kl3+l4, -hk2+2hkl+k2l-hl2-2kl2+l3, jk-jl-kl+l2;
1090
+ }
1091
+ example
1092
+ { "EXAMPLE:"; echo = 2;
1093
+ ring r=0,x(0..10),dp;
1094
+ ideal i=x(1)*x(0),x(1)*x(2),x(2)*x(3),x(3)*x(4),x(4)*x(5),x(5)*x(6),x(6)*x(7),x(7)*x(8),x(8)*x(9),x(9)*x(10),x(10)*x(0);
1095
+ }
1096
+ example
1097
+ { "EXAMPLE:"; echo = 2;
1098
+ ring r=0,(a,b,c,d,e,f,g,h,j,k,l,m,n,o,p,q,s),dp;
1099
+ ideal i=ag,gj+am+np+q,bl,nq,bg+bk+al+lo+lp+b+c,ag+ak+jl+bm+bn+go+ko+gp+kp+lq+a+d+f+h+o+p,gj+jk+am+an+mo+no+mp+np+gq+kq+e+j+q+s-1,jm+jn+mq+nq,jn+mq+2nq,gj+am+2an+no+np+2gq+kq+q+s,2ag+ak+bn+go+gp+lq+a+d,bg+al, an+gq, 2jm+jn+mq, gj+jk+am+mo+2mp+np+e+2j+q, jl+bm+gp+kp+a+f+o+2p,lp+b,jn+mq,gp+a;
1100
+ }
1101
+ example
1102
+ { "EXAMPLE:"; echo = 2;
1103
+ ring r=0,(a,b,c,d,e,f,g,h,v,w,k,l,m,n,o,p,q,s,t,u),dp;
1104
+ ideal i=af+bg+ch+dv+ew-1/2, a2f+b2g+c2h+d2v+e2w-1/3,tdw+agk+ahl+bhm+avn+bvo+cvp+awq+bwu+cws-1/6, a3f+b3g+c3h+d3v+e3w-1/4, tdew+abgk+achl+bchm+advn+bdvo+cdvp+aewq+bewu+cews-1/8, td2w+a2gk+a2hl+b2hm+a2vn+b2vo+c2vp+a2wq+b2wu+c2ws-1/12, ahkm+tawn+tbwo+avko+tcwp+avlp+bvmp+awku+awls+bwms-1/24, a4f+b4g+c4h+d4v+e4w-1/5, tde2w+ab2gk+ac2hl+bc2hm+ad2vn+bd2vo+cd2vp+ae2wq+be2wu+ce2ws-1/10, td2ew+a2bgk+a2chl+b2chm+a2dvn+b2dvo+c2dvp+a2ewq+b2ewu+c2ews-1/15,achkm+taewn+tbewo+advko+tcewp+advlp+bdvmp+aewku+aewls+bewms-1/30,t2d2w+a2gk2+a2hl2+2abhlm+b2hm2+a2vn2+2abvno+b2vo2+2acvnp+2bcvop+c2vp2+2tadwq+a2wq2+2tbdwu+2abwqu+b2wu2+2tcdws+2acwqs+2bcwus+c2ws2-1/20,td3w+a3gk+a3hl+b3hm+a3vn+b3vo+c3vp+a3wq+b3wu+c3ws-1/20,abhkm+tadwn+tbdwo+abvko+tcdwp+acvlp+bcvmp+abwku+acwls+bcwms-1/40,a2hkm+ta2wn+tb2wo+a2vko+tc2wp+a2vlp+b2vmp+a2wku+a2wls+b2wms-1/60,tawko+tawlp+tbwmp+avkmp+awkms-1/20;
1105
+ }
1106
+ */