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,1363 @@
1
+ //////////////////////////////////////////////////////////////////////
2
+ version="version JMSConst.lib 4.2.0.0 Jan_2021 "; // $Id: 4531c6461d1a0d2c3372aa4f75c5ea2ab496b0ec $
3
+ category="Algebraic Geometry";
4
+ // summary description of the library
5
+ info="
6
+ LIBRARY: JMSConst.lib A library for Singular which constructs J-Marked Schemes.
7
+ AUTHOR: Michela Ceria, email: michela.ceria@unito.it
8
+
9
+ SEE ALSO: JMBTest_lib
10
+
11
+ KEYWORDS: J-marked schemes, Borel ideals
12
+
13
+ OVERVIEW:
14
+ The library performs the J-marked computation, as described in [BCLR].
15
+ As in JMBTest.lib we construct the V polynomials and we reduce the EK
16
+ polynomials w.r.t. them, putting the coefficients as results.
17
+
18
+
19
+ The algorithm terminates only if the ordering is ip.
20
+ Anyway, the number of reduction steps is bounded.
21
+
22
+ REFERENCES:
23
+ [CR] Francesca Cioffi, Margherita Roggero,Flat Families by Strongly
24
+ Stable Ideals and a Generalization of Groebner Bases,
25
+ J. Symbolic Comput. 46, 1070-1084, (2011).@*
26
+ [BCLR] Cristina Bertone, Francesca Cioffi, Paolo Lella,
27
+ Margherita Roggero, Upgraded methods for the effective
28
+ computation of marked schemes on a strongly stable ideal,
29
+ Journal of Symbolic Computation
30
+ (2012), http://dx.doi.org/10.1016/j.jsc.2012.07.006 @*
31
+
32
+
33
+
34
+ SEE ALSO: JMSConst_lib
35
+ PROCEDURES:
36
+ BorelCheck(ideal,r) checks whether the given ideal is Borel
37
+ JMarkedScheme(list, list, list, int) computes authomatically all the J-marked scheme
38
+ ";
39
+ LIB "presolve.lib";
40
+ LIB "qhmoduli.lib";
41
+ LIB "monomialideal.lib";
42
+ ////////////////////////////////////////////////////////////////////
43
+ proc BorelCheck(ideal Borid,def r)
44
+ "USAGE: BorelCheck(Borid,r); Borid ideal, r ring
45
+ RETURN: int: d
46
+ NOTE: Input must be a monomial ideal.
47
+ The procedure checks whether the Borel moves produce elements belonging to Borid.
48
+ EXAMPLE: example QuanteC; shows an example"
49
+ {
50
+ int n= nvars(r);
51
+ int b=1;
52
+ int i=1;
53
+ int k;
54
+ intvec v;
55
+ int j;
56
+ int u;
57
+ //b =bool. b=1 true; b=0 false
58
+ //we suppose true!
59
+ //i=counter on the elements of Borid
60
+ int s= size(Borid);
61
+ while(b && i<=s)
62
+ {
63
+ v=leadexp(Borid[i]);
64
+ j=1;
65
+ u=size(v);
66
+ while(b && j<=u)
67
+ {
68
+ if(v[j]!=0)
69
+ {
70
+ k=j+1;
71
+ while(b && k<=n)
72
+ {
73
+ b=(reduce(Borid[i]*var(k)/var(j),std(Borid))==0);
74
+ k++;
75
+ }
76
+ }
77
+ j++;
78
+ }
79
+ i++;
80
+ }
81
+ return(b);
82
+ }
83
+ example
84
+ { "EXAMPLE:"; echo = 2;
85
+ ring r=0, (x,y,z),ip;
86
+ ideal Borid=y^2*z,y*z^2,z^3,y^5;
87
+ BorelCheck(Borid,r);
88
+ }
89
+ ////////////////////////////////////////////////////////////////////
90
+ proc ArrangeBorel(ideal Borid)
91
+ "USAGE: ArrangeBorel(Borid); Borid ideal
92
+ RETURN: list: Input
93
+ NOTE: Input must be a monomial ideal, increasingly ordered by degree.
94
+ The procedure groups the monomials in a list of lists as needed to compute J-marked scheme.
95
+ // It also returns a list containing the size of every sublist generated.
96
+ EXAMPLE: example ArrangeBorel; shows an example"
97
+ {
98
+ list Input;
99
+ int j=1;
100
+ //list numero=1;
101
+ Input[1]=list(Borid[1]);
102
+ for(int i=2; i<=size(Borid); i++)
103
+ {
104
+ if(deg(Borid[i])!=deg(Borid[i-1]))
105
+ {
106
+ j++;
107
+ Input[j]=list();
108
+ // numero[j]=0;
109
+ }
110
+ Input[j]=insert(Input[j],Borid[i],size(Input[j]));
111
+ //numero[j]=numero[j]+1;
112
+ }
113
+ return(Input);
114
+ }
115
+ example
116
+ { "EXAMPLE:"; echo = 2;
117
+ ring r=0, (x,y,z),ip;
118
+ ideal Borid=y^2*z,y*z^2,z^3,y^5;
119
+ ArrangeBorel(Borid);
120
+ }
121
+ ////////////////////////////////////////////////////////////////////
122
+ proc NumNewVar(list B, list NumN)
123
+ "USAGE: NumNewVar(B,NumN); B list, NumN list
124
+ RETURN: int: d
125
+ NOTE: B is the grouped Borel, while NumN is a list containing the cardinalities of the obtained groups.
126
+ EXAMPLE: example NumNewVar; shows an example"
127
+ {
128
+ int d;
129
+ int j;
130
+ int i;
131
+ for(i=1; i<=size(B); i++)
132
+ {
133
+ d=d+size(B[i])*NumN[i];
134
+ }
135
+ return(d);
136
+ }
137
+ example
138
+ { "EXAMPLE:"; echo = 2;
139
+ ring r=0, (x,y,z),ip;
140
+ ideal Borid=y^2*z,y*z^2,z^3,y^5;
141
+ list B= ArrangeBorel(Borid);
142
+ list NumN=7,8;
143
+ NumNewVar(B,NumN);
144
+ }
145
+ ////////////////////////////////////////////////////////////////////
146
+ proc NewTails(ideal NI, int s)
147
+ "USAGE: NewTails(NI,s); NI ideal, s int
148
+ RETURN: list: M
149
+ NOTE: The procedure construct the tails of the required unknown J-marked polynomials.
150
+ EXAMPLE: example NewTails; shows an example"
151
+ {
152
+ poly p=0;
153
+ for(int i=1; i<=size(NI); i++)//Loop on the Groebner escalier
154
+ {
155
+ p=p+NI[i]*c(i+s); //multiply by c's
156
+ }
157
+ int u=size(NI);
158
+ list M=p,u;
159
+ return(M);
160
+ }
161
+ example
162
+ { "EXAMPLE:"; echo = 2;
163
+ ring r=(0,c(1..7)), (x,y,z),ip;
164
+ ideal NI=x^2,x*y,y^2,z^2;
165
+ NewTails(NI,3);
166
+ }
167
+ ////////////////////////////////////////////////////////////////////
168
+ proc ArrangeTails(list Q)
169
+ "USAGE: ArrangeTails(Q); Q list
170
+ RETURN: list: Q
171
+ NOTE: Constructs the final list of J-marked polynomials.
172
+ EXAMPLE: example FormaInput; shows an example"
173
+ {
174
+ jmp m=Q[1][1];
175
+ jmp M=Q[size(Q)][1];
176
+ int minimo=deg(m.h);
177
+ int massimo=deg(M.h);
178
+ int i=2;
179
+ jmp qi;
180
+ while(i<=size(Q))
181
+ {
182
+ qi=Q[i][1];
183
+ if(deg(qi.h)!=minimo+1)
184
+ {
185
+ Q=insert(Q,list(),i-1);//Insert empty list for all intermediate degree between the minimum and the maximum, not having polynomials.
186
+ }
187
+ minimo=minimo+1;
188
+ i=i+1;
189
+ }
190
+ return(Q);
191
+ }
192
+ example
193
+ { "EXAMPLE:"; echo = 2;
194
+ ring r=0, (x,y,z),ip;
195
+ ideal Borid=y^2*z,y*z^2,z^3,y^5;
196
+ attrib(Borid,"isSB",1);
197
+ list B=ArrangeBorel(Borid);
198
+ list NumN;
199
+ list N;
200
+ int i;
201
+ int d;
202
+ for(i=1;i<=size(B);i++)
203
+ {
204
+ d=deg(B[i][1]);
205
+ N[i]=kbase(Borid,d);
206
+ NumN[i]=size(N[i]);
207
+ }
208
+ int qc=NumNewVar(B, NumN);
209
+ //Now I must define the NEW RING, putting the c parameters inside.
210
+ list L=ring_list(r);
211
+ list L2;
212
+ L2[1]=L[1];
213
+ L2[2]=list();
214
+ for(i=qc;i>=1;i--)
215
+ {
216
+ L2[2][i]="c("+string(i)+")";
217
+ }
218
+ L2[3]=list(list("ip",qc));
219
+ L2[4]=L[4];
220
+ L[1]=L2;
221
+ def K=ring(L);
222
+ setring(K);
223
+ ideal Borid=imap(r,Borid);
224
+ list N=imap(r,N);
225
+ list B=imap(r,B);
226
+ //NumN contains only scalars so I do not imap it
227
+ int j;
228
+ list Q;
229
+ int s;
230
+ list M;
231
+ jmp pp;
232
+ for(i=1;i<=size(B);i++)
233
+ {
234
+ Q[i]=list();
235
+ for(j=1;j<=size(B[i]);j++)
236
+ {
237
+ M=NewTails(N[i],s);
238
+ pp.h=B[i][j];
239
+ pp.t=M[1];
240
+ Q[i][j]=pp;
241
+ s=s+M[2];
242
+ }
243
+ }
244
+ list P=ArrangeTails(Q);
245
+ int ll;
246
+ int uu;
247
+ jmp Pp;
248
+ for(ll=1; ll<=size(P);ll++)
249
+ {
250
+ for(uu=1;uu<=size(P[ll]);uu++)
251
+ {Pp=P[ll][uu]; Pp.h; Pp.t;}
252
+ }
253
+ }
254
+ ////////////////////////////////////////////////////////////////////
255
+ static proc mod_init()
256
+ {
257
+ newstruct("jmp", "poly h, poly t");
258
+ }
259
+ ////////////////////////////////////////////////////////////////////
260
+ proc Terns(list G, int c)
261
+ "USAGE: Terns(G,c); G list, c int
262
+ RETURN: list: T
263
+ NOTE: Input is a list of J-marked polynomials
264
+ (arranged by degree) and an integer.
265
+ EXAMPLE: example Terns; shows an example"
266
+ {
267
+ list T=list();
268
+ int z;
269
+ for(int k=1; k<=size(G[c]);k=k+1)
270
+ {
271
+ //Loop on G[c] making positions of polynomials in G[c]
272
+ z=size(T);
273
+ T=insert(T,list(1,c,k) ,size(T));
274
+ }
275
+ return(T);
276
+ }
277
+ example
278
+ { "EXAMPLE:"; echo = 2;
279
+ ring r=0, (x,y,z), ip;
280
+ jmp r1;
281
+ r1.h=z^3;
282
+ r1.t=poly(0);
283
+ jmp r2;
284
+ r2.h=z^2*y;
285
+ r2.t=poly(0);
286
+ jmp r3;
287
+ r3.h=z*y^2 ;
288
+ r3.t=-x^2*y;
289
+ jmp r4;
290
+ r4.h=y^5;
291
+ r4.t=poly(0);
292
+ list G2F=list(list(r1,r2,r3),list(r4));
293
+ Terns(G2F, 1);
294
+ Terns(G2F, 2);
295
+ }
296
+ ////////////////////////////////////////////////////////////////////
297
+ proc VConst(list G, int c)
298
+ "USAGE: VConst(G, c); G list, c int
299
+ RETURN: list: V
300
+ NOTES: this procedure computes the Vm polynomials following the
301
+ algorithm in [CR],but it only keeps in memory the monomials by
302
+ which the G's must be multiplied and their positions.
303
+ EXAMPLE: example VConst; shows an example"
304
+ {
305
+ jmp f=G[1][1];
306
+ int aJ=deg(f.h);
307
+ // minimal degree of polynomials in G
308
+ list V=list();
309
+ V[1]=Terns(G,1);
310
+ // V[1]=G[1] (keeping in memory only [head, position])
311
+ //print(c-aJ+1);
312
+ int i;
313
+ int j;
314
+ int m;
315
+ list OO;
316
+ jmp p;
317
+ for(m=2; m<=c-aJ+1; m=m+1)
318
+ {
319
+ //print("entro nel form");
320
+ if(m>size(G))
321
+ {V[m]=list();
322
+ //If we have not G[m] we insert a list()
323
+ //print("vuota prima");
324
+ }
325
+ else
326
+ {V[m]=Terns(G,m);
327
+ //print("piena prima");
328
+ }
329
+ for(i=1; i<nvars(basering)+1; i=i+1)
330
+ {
331
+ //print("entrata fori");
332
+ //print(i);
333
+ for(j=1; j<=size(V[m-1]); j=j+1)
334
+ {
335
+ p=G[V[m-1][j][2]][V[m-1][j][3]];
336
+ if(var(i)<=Minimus(variables(V[m-1][j][1]*p.h)))
337
+ {
338
+ //Can I multiply by the current variable?
339
+ OO=list(var(i)*V[m-1][j][1],V[m-1][j][2],V[m-1][j][3]);
340
+ V[m]=insert(V[m], OO ,size(V[m]));
341
+ }
342
+ }
343
+ }
344
+ }
345
+ return (V);}
346
+ example
347
+ { "EXAMPLE:"; echo = 2;
348
+ ring r=0, (x,y,z), ip;
349
+ jmp r1;
350
+ r1.h=z^3;
351
+ r1.t=poly(0);
352
+ jmp r2;
353
+ r2.h=z^2*y;
354
+ r2.t=poly(0);
355
+ jmp r3;
356
+ r3.h=z*y^2 ;
357
+ r3.t=-x^2*y;
358
+ jmp r4;
359
+ r4.h=y^5;
360
+ r4.t=poly(0);
361
+ list G2F=list(list(r1,r2,r3),list(r4));
362
+ VConst(G2F,4,basering);}
363
+ ////////////////////////////////////////////////////////////////////
364
+ proc Minimus(ideal L)
365
+ "USAGE: Minimus(L); G list, c int
366
+ RETURN: list: V
367
+ NOTES: it returns the minimal variable generating the ideal L;
368
+ input must be an ideal generated by variables.
369
+ EXAMPLE: example Minimus; shows an example"
370
+ {
371
+ poly min=L[1];
372
+ int i;
373
+ for(i=2;i<=size(L); i++)
374
+ {
375
+ if(L[i]<min){min=L[i];}
376
+ }
377
+ return(min);
378
+ }
379
+ example
380
+ { "EXAMPLE:"; echo = 2;
381
+ ring r=0, (x,y,z), ip;
382
+ ideal I=y,x,z;
383
+ Minimus(I);
384
+ }
385
+ ////////////////////////////////////////////////////////////////////
386
+ proc Maximus(ideal L)
387
+ "USAGE: Maximus(L); G list, c int
388
+ RETURN: list: V
389
+ NOTES: it returns the maximal variable generating the ideal L
390
+ input must be an ideal generated by variables.
391
+ EXAMPLE: example Maximus; shows an example"
392
+ {
393
+ poly max=L[1];
394
+ int i;
395
+ for(i=2;i<=size(L); i++)
396
+ {
397
+ if(L[i]>max){max=L[i];}
398
+ }
399
+ return(max);
400
+ }
401
+ example
402
+ { "EXAMPLE:"; echo = 2;
403
+ ring r=0, (x,y,z), ip;
404
+ ideal I=y,x,z;
405
+ Maximus(I);
406
+ }
407
+ ////////////////////////////////////////////////////////////////////
408
+ proc GPolyMin(jmp P, jmp Q)
409
+ "USAGE: GPolyMin(P,Q); P jmp, Q jmp
410
+ RETURN: int: d
411
+ EXAMPLE: example GPolyMin; shows an example"
412
+ {
413
+ int d=1;
414
+ //-1=lower, 0=equal, 1=higher
415
+ //At the beginning suppose Q is higher
416
+ if(deg(P.h)<deg(Q.h))
417
+ {
418
+ //Compare degrees;
419
+ d=-1;
420
+ //print("Per Grado");
421
+ }
422
+ if(deg(P.h)==deg(Q.h))
423
+ {
424
+ if(P.h==Q.h)
425
+ {
426
+ if(P.t==Q.t)
427
+ {
428
+ //head=tail
429
+ d=0;
430
+ //print("Uguali");
431
+ }
432
+ }
433
+ else
434
+ {
435
+ //print(Minimus(variables(P.h/gcdMon(P.h,Q.h))));
436
+ //print(Minimus(variables(Q.h/gcdMon(P.h,Q.h))));
437
+ if(Minimus(variables(P.h/gcdMon(P.h,Q.h)))<Minimus(variables(Q.h/gcdMon(P.h,Q.h))))
438
+ {
439
+ d=-1;
440
+ //print("Per Indice");
441
+ }
442
+ }
443
+ }
444
+ return(d);
445
+ }
446
+ example
447
+ { "EXAMPLE:"; echo = 2;
448
+ ring r=0, (x,y,z), ip;
449
+ jmp p1;
450
+ p1.h=poly(1);
451
+ p1.t=poly(1);
452
+ jmp p2;
453
+ p2.h=x^2;
454
+ p2.t=poly(0);
455
+ jmp p3;
456
+ p3.h=x;
457
+ p3.t=poly(0);
458
+ GPolyMin(p1,p2);
459
+ GPolyMin(p2, p3);
460
+ GPolyMin(p2,p2);
461
+ }
462
+ ////////////////////////////////////////////////////////////////////
463
+ proc TernComparer(list A, list B, list G)
464
+ "USAGE: TernComparer(A,B,C); A list, B list, G list
465
+ RETURN: int: d
466
+ NOTE: A and B are terns, while G is the given list of
467
+ J-marked polynomials.
468
+ EXAMPLE: example TernComparer; shows an example"
469
+ {
470
+ int d=-1;
471
+ //Start: A<B
472
+ if(A[1]==B[1])
473
+ {
474
+ if(A[2]==B[2]&& A[3]==B[3])
475
+ {
476
+ //print("Uguali");
477
+ d=0;
478
+ }
479
+ else
480
+ {
481
+ jmp g1=G[A[2]][A[3]];
482
+ jmp g2=G[B[2]][B[3]];
483
+ if(GPolyMin(g1, g2)==1)
484
+ {
485
+ //print("Maggiore per il G");
486
+ d=1;
487
+ }
488
+ }
489
+ }
490
+ else
491
+ {
492
+ if(A[1]>B[1])
493
+ {
494
+ //the ordering MUST be ip
495
+ //print("Maggiore per Lex");
496
+ d=1;
497
+ }
498
+ }
499
+ return(d);
500
+ }
501
+ example
502
+ { "EXAMPLE:"; echo = 2;
503
+ ring r=0, (x,y,z), ip;
504
+ jmp r1;
505
+ r1.h=z^3;
506
+ r1.t=poly(0);
507
+ jmp r2;
508
+ r2.h=z^2*y;
509
+ r2.t=poly(0);
510
+ jmp r3;
511
+ r3.h=z*y^2 ;
512
+ r3.t=-x^2*y;
513
+ jmp r4;
514
+ r4.h=y^5;
515
+ r4.t=poly(0);
516
+ list G2F=list(list(r1,r2,r3),list(r4));
517
+ TernComparer([1,1,1],[x,1,1],G2F);
518
+ }
519
+ ////////////////////////////////////////////////////////////////////
520
+ proc MinimalV(list V, list G)
521
+ "USAGE: Minimal(V,G); V list, G list
522
+ RETURN: int: R
523
+ NOTE: Input=list(terns), G.
524
+ EXAMPLE: example MinimalV; shows an example"
525
+ {
526
+ //Minimal element for a given degree
527
+ list R=list();
528
+ list MIN=V[1];
529
+ int h=1;
530
+ int i;
531
+ for(i=2; i<=size(V); i++)
532
+ {
533
+ //I consider the first as minimum
534
+ //If I find something smaller I change minimum
535
+ if(TernComparer(V[i],MIN,G)<=0)
536
+ {
537
+ MIN=V[i];
538
+ h=i;
539
+ }
540
+ }
541
+ //Return: [minimum,position of the minimum]
542
+ R=MIN,h;
543
+ return(R);
544
+ }
545
+ example
546
+ { "EXAMPLE:"; echo = 2;
547
+ ring r=0, (x,y,z), ip;
548
+ jmp r1;
549
+ r1.h=z^3;
550
+ r1.t=poly(0);
551
+ jmp r2;
552
+ r2.h=z^2*y;
553
+ r2.t=poly(0);
554
+ jmp r3;
555
+ r3.h=z*y^2 ;
556
+ r3.t=-x^2*y;
557
+ jmp r4;
558
+ r4.h=y^5;
559
+ r4.t=poly(0);
560
+ list G2F=list(list(r1,r2,r3),list(r4));
561
+ MinimalV(VConst(G2F,4,basering)[1],G2F);
562
+ }
563
+ ////////////////////////////////////////////////////////////////////
564
+ proc OrderV(list V,list G,list R)
565
+ "USAGE: Ordinare(V,G,R); V list, G list, R list
566
+ RETURN: list: R
567
+ NOTE: Input: Vm,G,emptylist
568
+ EXAMPLE: example Ordinare; shows an example"
569
+ {
570
+ //Order V[m]
571
+ //R will contain results but at the beginning it is empty
572
+ list M=list();
573
+ if(size(V)==1)
574
+ {
575
+ R=insert(R,V[1],size(R));
576
+ }
577
+ else
578
+ {
579
+ M=MinimalV(V,G);
580
+ R=insert(R,M[1],size(R));
581
+ V=delete(V,M[2]);
582
+ //recursive call
583
+ R=OrderV(V,G,R);
584
+ }
585
+ return(R);
586
+ }
587
+ example
588
+ { "EXAMPLE:"; echo = 2;
589
+ ring r=0, (x,y,z), ip;
590
+ jmp r1;
591
+ r1.h=z^3;
592
+ r1.t=poly(0);
593
+ jmp r2;
594
+ r2.h=z^2*y;
595
+ r2.t=poly(0);
596
+ jmp r3;
597
+ r3.h=z*y^2;
598
+ r3.t=-x^2*y;
599
+ jmp r4;
600
+ r4.h=y^5;
601
+ r4.t=poly(0);
602
+ list G2F=list(list(r1,r2,r3),list(r4));
603
+ OrderV(VConst(G2F,4,r)[1],G2F,list());
604
+ }
605
+ ////////////////////////////////////////////////////////////////////
606
+ proc StartOrderingV(list V,list G)
607
+ "USAGE: StartOrderingV(V,G); V list, G list
608
+ RETURN: list: R
609
+ NOTE: Input Vm,G. This procedure uses OrderV to get
610
+ the ordered polynomials as in [BCLR].
611
+ EXAMPLE: example StartOrderingV; shows an example"
612
+ {
613
+ return(OrderV(V,G, list()));
614
+ }
615
+ example
616
+ { "EXAMPLE:"; echo = 2;
617
+ ring r=0, (x,y,z), ip;
618
+ jmp r1;
619
+ r1.h=z^3;
620
+ r1.t=poly(0);
621
+ jmp r2;
622
+ r2.h=z^2*y;
623
+ r2.t=poly(0);
624
+ jmp r3;
625
+ r3.h=z*y^2;
626
+ r3.t=-x^2*y;
627
+ jmp r4;
628
+ r4.h=y^5;
629
+ r4.t=poly(0);
630
+ list G2F=list(list(r1,r2,r3),list(r4));
631
+ StartOrderingV(VConst(G2F,4,basering)[1],G2F);
632
+ }
633
+ ////////////////////////////////////////////////////////////////////
634
+ proc MultiplyJmP(list L, list G)
635
+ "USAGE: MultiplyJmP(L,G); L list, G list
636
+ RETURN: jmp: K
637
+ NOTE: Input: a 3-ple,G. It performs the product associated
638
+ to the 3-uple.
639
+ EXAMPLE: example MultiplyJmP; shows an example"
640
+ {
641
+ jmp g=G[L[2]][L[3]];
642
+ jmp K;
643
+ K.h=L[1]*g.h;
644
+ K.t=L[1]*g.t;
645
+ return(K);
646
+ }
647
+ example
648
+ { "EXAMPLE:"; echo = 2;
649
+ ring r=0, (x,y,z), ip;
650
+ list P=x^2,1,1;
651
+ jmp r1;
652
+ r1.h=z^3;
653
+ r1.t=poly(0);
654
+ jmp r2;
655
+ r2.h=z^2*y;
656
+ r2.t=poly(0);
657
+ jmp r3;
658
+ r3.h=z*y^2 ;
659
+ r3.t=-x^2*y;
660
+ jmp r4;
661
+ r4.h=y^5;
662
+ r4.t=poly(0);
663
+ list G2F=list(list(r1,r2,r3),list(r4));
664
+ MultiplyJmP(P,G2F);
665
+ }
666
+ ////////////////////////////////////////////////////////////////////
667
+ //proc JmpIdeal(list V,r)
668
+ //"USAGE: JmpIdeal(V); V list
669
+ //RETURN: ideal: I
670
+ //NOTES: this procedure takes a list of Vm's of a certain degree
671
+ //and construct their ideal, multiplying the head by the weighted
672
+ //variable t.
673
+ //EXAMPLE: example JmpIdeal; shows an example"
674
+ //{
675
+ //ideal I=0;
676
+ //int i;
677
+ //if (size(V)!=0)
678
+ // {
679
+ // list M=list();
680
+ //jmp g;
681
+ // for(i=1; i<= size(V); i++)
682
+ // {
683
+ // g=V[i];
684
+ // g.h=(g.h)*t;
685
+ // M[i]=g.h+g.t;
686
+ // }
687
+ // I=M[1..size(M)];
688
+ //attrib(I,"isSB",1);
689
+ // }
690
+ //return(I);
691
+ //}
692
+ //example
693
+ //{ "EXAMPLE:"; echo = 2;
694
+ // ring r=0, (x,y,z,t), ip;
695
+ //jmp r1;
696
+ //r1.h=z^3;
697
+ //r1.t=poly(0);
698
+ //jmp r2;
699
+ //r2.h=z^2*y;
700
+ //r2.t=poly(0);
701
+ //jmp r3;
702
+ //r3.h=z*y^2 ;
703
+ //r3.t=-x^2*y;
704
+ //jmp r4;
705
+ //r4.h=y^5;
706
+ //r4.t=poly(0);
707
+ //list G2F=list(list(r1,r2,r3),list(r4));
708
+ //JmpIdeal(VConst(G2F,6,r)[1],r);
709
+ //}
710
+ ////////////////////////////////////////////////////////////////////
711
+ proc NewWeight(int n)
712
+ "USAGE: NewWeight(n); n int
713
+ RETURN: intvec: u
714
+ EXAMPLE: example NewWeight; shows an example"
715
+ {
716
+ intvec u=0;
717
+ u[n]=1;
718
+ return(u);
719
+ }
720
+ example
721
+ { "EXAMPLE:"; echo = 2;
722
+ NewWeight(3);
723
+ }
724
+ ////////////////////////////////////////////////////////////////////
725
+ proc FinalVm(list V1 , list G1 , def r)
726
+ "USAGE: FinalVm(V1, G1, r); V1 list, G1 list , r
727
+ RETURN: intvec: u
728
+ EXAMPLE: example FinalVm; shows an example"
729
+ {
730
+ //multiply and reduce, degree by degree
731
+ intvec u=NewWeight(nvars(r)+1);
732
+ list L=ring_list(r);
733
+ L[2]=insert(L[2],"t",size(L[2]));
734
+ list ordlist="a",u;
735
+ L[3]=insert(L[3],ordlist,0);
736
+ def H=ring(L);
737
+ list M=list();
738
+ jmp p;
739
+ list N;
740
+ poly q;
741
+ poly s;
742
+ int i;
743
+ int j;
744
+ for(i=1; i<=size(G1); i++)
745
+ {
746
+ N=list();
747
+ for(j=1; j<=size(G1[i]); j++)
748
+ {
749
+ p=G1[i][j];
750
+ q=p.h;
751
+ s=p.t;
752
+ N[j]=list(q,s);
753
+ }
754
+ M[i]=N;
755
+ }
756
+ p.h=poly(0);
757
+ p.t=poly(0);
758
+ setring H;
759
+ list R=list();
760
+ list S=list();
761
+ //print("anello definito");
762
+ list V=imap(r,V1);
763
+ list MM=imap(r,M);
764
+ list G=list();
765
+ list N=list();
766
+ for(i=1; i<=size(MM); i++)
767
+ {
768
+ for(j=1; j<=size(MM[i]); j++)
769
+ {
770
+ p.h=MM[i][j][1];
771
+ p.t=MM[i][j][2];
772
+ N[j]=p;
773
+ }
774
+ G[i]=N;
775
+ }
776
+ ideal I=0;
777
+ jmp LL;
778
+ jmp UU;
779
+ //print("pronta x ridurre");
780
+ for(i=1; i<=size(V);i++)
781
+ {
782
+ //print("sono a V di");
783
+ //print(i);
784
+ R[i]=list();
785
+ S[i]=list();
786
+ I=0;
787
+ attrib(I,"isSB",1);
788
+ for(j=1;j<=size(V[i]); j++)
789
+ {
790
+ //print(j);
791
+ //print("esimo elem");
792
+ LL=MultiplyJmP(V[i][j],G);
793
+ LL.t=reduce(t*LL.t,I);
794
+ //I only reduce the tail
795
+ //print(LL.t);
796
+ LL.t=subst(LL.t,t,1);
797
+ S[i]=insert(S[i],LL,size(S[i]));
798
+ LL.h=t*LL.h;
799
+ R[i]=insert(R[i],LL,size(R[i]));
800
+ UU=R[i][j];
801
+ I=I+ideal(UU.h+UU.t);
802
+ attrib(I,"isSB",1);
803
+ }
804
+ }
805
+ //print("ho ridotto");
806
+ list M=list();
807
+ poly q;
808
+ poly s;
809
+ for(i=1; i<=size(S); i++)
810
+ {
811
+ N=list();
812
+ for(j=1; j<=size(S[i]); j++)
813
+ {
814
+ p=S[i][j];
815
+ q=p.h;
816
+ s=p.t;
817
+ N[j]=list(q,s);
818
+ }
819
+ M[i]=N;
820
+ }
821
+ p.h=poly(0);
822
+ p.t=poly(0);
823
+ setring r;
824
+ def MM=imap(H,M);
825
+ list MMM=list();
826
+ for(i=1; i<=size(MM); i++)
827
+ {
828
+ N=list();
829
+ for(j=1; j<=size(MM[i]); j++)
830
+ {
831
+ p.h=MM[i][j][1];
832
+ p.t=MM[i][j][2];
833
+ N[j]=p;
834
+ }
835
+ MMM[i]=N;
836
+ }
837
+ return(MMM);
838
+ }
839
+ example
840
+ { "EXAMPLE:"; echo = 2;
841
+ ring r=0, (x,y,z), ip;
842
+ jmp r1;
843
+ r1.h=z^3;
844
+ r1.t=poly(0);
845
+ jmp r2;
846
+ r2.h=z^2*y;
847
+ r2.t=poly(0);
848
+ jmp r3;
849
+ r3.h=z*y^2 ;
850
+ r3.t=-x^2*y;
851
+ jmp r4;
852
+ r4.h=y^5;
853
+ r4.t=poly(0);
854
+ list G2F=list(list(r1,r2,r3),list(r4));
855
+ FinalVm(VConst(G2F,6,r) , G2F, r);
856
+ }
857
+ ////////////////////////////////////////////////////////////////////
858
+ proc VmConstructor(list G, int c,def r)
859
+ "USAGE: VmConstructor(G,c); G list, c int
860
+ RETURN: list: R
861
+ NOTE: At the end separated by degree.
862
+ EXAMPLE: example VmConstructor; shows an example"
863
+ {
864
+ list V=list();
865
+ V= VConst(G,c);
866
+ //print("VConst");
867
+ //V non ordered
868
+ list L=list();
869
+ list R=list();
870
+ int i;
871
+ // head, position
872
+ //order the different degrees
873
+ for(i=1; i<=size(V); i++)
874
+ {
875
+ L[i]=StartOrderingV(V[i], G);
876
+ }
877
+ //print("finito ordine");
878
+ //multiply and reduce
879
+ //print("Ordinare");
880
+ //R=FinalVm(L, G, r);
881
+ //print("FinalVm");
882
+ return(L);
883
+ }
884
+ example
885
+ { "EXAMPLE:"; echo = 2;
886
+ ring r=0, (x,y,z), ip;
887
+ jmp r1;
888
+ r1.h=z^3;
889
+ r1.t=poly(0);
890
+ jmp r2;
891
+ r2.h=z^2*y;
892
+ r2.t=poly(0);
893
+ jmp r3;
894
+ r3.h=z*y^2 ;
895
+ r3.t=-x^2*y;
896
+ jmp r4;
897
+ r4.h=y^5;
898
+ r4.t=poly(0);
899
+ list G2F=list(list(r1,r2,r3),list(r4));
900
+ VmConstructor(G2F,6,r);
901
+ }
902
+ ////////////////////////////////////////////////////////////////////
903
+ proc EKCouples(jmp A, jmp B)
904
+ "USAGE: CoppiaEK(A,B); A list, B list
905
+ RETURN: list: L
906
+ NOTE: At the end the monomials involved by EK.
907
+ EXAMPLE: example EKCouples; shows an example"
908
+ {
909
+ poly E;
910
+ list L=0,0;
911
+ string s=varstr(basering);
912
+ list VVV=varstr(basering);
913
+ //L will contain results
914
+ poly h=Minimus(variables(A.h));
915
+ //print(h);
916
+ int l=findvars(h)[2][1];
917
+ if(l!=nvars(basering))
918
+ {
919
+ //print("vero");
920
+ //print(l);
921
+ for(int j=l+1;j<=nvars(basering); j++)
922
+ {
923
+ //print("entrata");
924
+ //print(var(j));
925
+ E=var(j)*A.h/B.h;
926
+ //Candidate for * product
927
+ //print(E);
928
+ if(E!=0)
929
+ {
930
+ //print("primo if passato");
931
+ if(Minimus(variables(B.h))>=Maximus(variables(E)))
932
+ {
933
+ //Does it work with * ?
934
+ //print("secondo if passato");
935
+ L[1]=j;
936
+ L[2]=E;
937
+ break;
938
+ }
939
+ }
940
+ }
941
+ }
942
+ return (L);
943
+ }
944
+ example
945
+ { "EXAMPLE:"; echo = 2;
946
+ ring r=0, (x,y,z), ip;
947
+ jmp A;
948
+ A.h=y*z^2;
949
+ A.t=poly(0);
950
+ jmp B;
951
+ B.h=y^2*z;
952
+ B.t=poly(0);
953
+ EKCouples(A,B);
954
+ EKCouples(B,A);
955
+ }
956
+ ////////////////////////////////////////////////////////////////////
957
+ proc EKPolynomials(list G)
958
+ "USAGE: EKPolynomials(G); G list
959
+ RETURN: list: EK, list: D
960
+ NOTE: At the end EK polynomials and their degrees
961
+
962
+ EXAMPLE: example EKPolynomials; shows an example"
963
+ {
964
+ list D=list();
965
+ list C=list();
966
+ list N=0,0;
967
+ list EK=list();
968
+ int i;
969
+ int j;
970
+ int k;
971
+ int l;
972
+ jmp p;
973
+ for(i=1; i<=size(G); i++)
974
+ {
975
+ for(j=1; j<=size(G[i]); j++)
976
+ {
977
+ for(k=1; k<=size(G); k++)
978
+ {
979
+ for(l=1; l<=size(G[k]); l++)
980
+ {
981
+ if(i!=k||j!=l)
982
+ {
983
+ //Loop on polynomials
984
+ C=EKCouples(G[i][j], G[k][l]);
985
+ //print("coppia");
986
+ if(C[2]!=0)
987
+ {
988
+ C=insert(C,list(i,j,k,l),size(C));
989
+ EK=insert(EK,C,size(EK));
990
+ p=G[k][l];
991
+ D=insert(D,deg(C[2]*p.h),size(D));
992
+ }
993
+ }
994
+ }
995
+ }
996
+ }
997
+ }
998
+ //Double Return
999
+ return(EK, D);
1000
+ }
1001
+ example
1002
+ { "EXAMPLE:"; echo = 2;
1003
+ ring r=0, (x,y,z), ip;
1004
+ jmp r1;
1005
+ r1.h=z^3;
1006
+ r1.t=poly(0);
1007
+ jmp r2;
1008
+ r2.h=z^2*y;
1009
+ r2.t=poly(0);
1010
+ jmp r3;
1011
+ r3.h=z*y^2;
1012
+ r3.t=-x^2*y;
1013
+ jmp r4;
1014
+ r4.h=y^5;
1015
+ r4.t=poly(0);
1016
+ list G2F=list(list(r1,r2,r3),list(r4));
1017
+ EKPolynomials(G2F);
1018
+ }
1019
+ ////////////////////////////////////////////////////////////////////
1020
+ proc MultEKPolys(list EK, list G)
1021
+ "USAGE: MultEKPolys(G); G list
1022
+ RETURN: list: p
1023
+ NOTE: At the end I obtain the EK polynomials and
1024
+ their degrees.
1025
+ EXAMPLE: example MultEKPolys; shows an example"
1026
+ {
1027
+ jmp u;
1028
+ u=G[EK[3][1]][EK[3][2]];
1029
+ //print("u");
1030
+ jmp q;
1031
+ q=G[EK[3][3]][EK[3][4]];
1032
+ return(var(EK[1])*(u.h+u.t)-EK[2]*(q.h+q.t));
1033
+ }
1034
+ example
1035
+ { "EXAMPLE:"; echo = 2;
1036
+ ring r=0, (x,y,z), ip;
1037
+ jmp r1;
1038
+ r1.h=z^3;
1039
+ r1.t=poly(0);
1040
+ jmp r2;
1041
+ r2.h=z^2*y;
1042
+ r2.t=poly(0);
1043
+ jmp r3;
1044
+ r3.h=z*y^2;
1045
+ r3.t=-x^2*y;
1046
+ jmp r4;
1047
+ r4.h=y^5;
1048
+ r4.t=poly(0);
1049
+ list G2F=list(list(r1,r2,r3),list(r4));
1050
+ list EK,D=EKPolynomials(G2F);
1051
+ MultEKPolys(EK[2],G2F);
1052
+ }
1053
+ ////////////////////////////////////////////////////////////////////
1054
+ proc SchemeEq(list W, list EK,list D,list Q,def r)
1055
+ "USAGE: SchemeEq(W,EK,D,Q,r); W list, EK list, D list, Q list, r ring
1056
+ RETURN: int: i
1057
+ NOTE:
1058
+ This procedure performs the reduction of EK-polynomials, obtaining
1059
+ the J-marked scheme.
1060
+ EXAMPLE: example SchemeEq; shows an example"
1061
+ {
1062
+ list Jms=list();
1063
+ //ideal I;
1064
+ list M=list();
1065
+ jmp mini;
1066
+ mini=W[1][1];
1067
+ int minimo=deg(mini.h);
1068
+ //multiply variables
1069
+ poly pd=poly(1);
1070
+ for(int i=1;i<=nvars(r);i++)
1071
+ { pd=pd*var(i);}
1072
+ //CHANGE RING
1073
+ intvec u=NewWeight(nvars(r)+1);
1074
+ list L=ring_list(r);
1075
+ L[2]=insert(L[2],"t",size(L[2]));
1076
+ //print(L[2]);
1077
+ list ordlist="a",u;
1078
+ L[3]=insert(L[3],ordlist,0);
1079
+ def H=ring(L);
1080
+ //list
1081
+ M=list();
1082
+ jmp pu;
1083
+ list N;
1084
+ poly q;
1085
+ poly s;
1086
+ i=0;
1087
+ int j;
1088
+ for(i=1; i<=size(Q); i++)
1089
+ {
1090
+ N=list();
1091
+ for(j=1; j<=size(Q[i]); j++)
1092
+ {
1093
+ pu=Q[i][j];
1094
+ q=pu.h;
1095
+ s=pu.t;
1096
+ N[j]=list(q,s);
1097
+ }
1098
+ M[i]=N;
1099
+ }
1100
+ list O;
1101
+ pu.h=poly(0);
1102
+ pu.t=poly(0);
1103
+ for(i=1; i<=size(W); i++)
1104
+ {
1105
+ N=list();
1106
+ for(j=1; j<=size(W[i]); j++)
1107
+ {
1108
+ pu=W[i][j];
1109
+ q=pu.h;
1110
+ s=pu.t;
1111
+ N[j]=list(q,s);
1112
+ }
1113
+ O[i]=N;
1114
+ }
1115
+ pu.h=poly(0);
1116
+ pu.t=poly(0);
1117
+ setring H;
1118
+ list R=list();
1119
+ list S=list();
1120
+ //print("anello definito");
1121
+ def EK=imap(r,EK);
1122
+ def MM=imap(r,M);
1123
+ def OO=imap(r,O);
1124
+ def pd=imap(r,pd);
1125
+ list G=list();
1126
+ list N=list();
1127
+ for(i=1; i<=size(MM); i++)
1128
+ {
1129
+ for(j=1; j<=size(MM[i]); j++)
1130
+ {
1131
+ pu.h=MM[i][j][1];
1132
+ pu.t=MM[i][j][2];
1133
+ N[j]=pu;
1134
+ }
1135
+ G[i]=N;
1136
+ }
1137
+ list V;
1138
+ for(i=1; i<=size(OO); i++)
1139
+ {
1140
+ for(j=1; j<=size(OO[i]); j++)
1141
+ {
1142
+ pu.h=OO[i][j][1];
1143
+ pu.t=OO[i][j][2];
1144
+ N[j]=pu;
1145
+ }
1146
+ V[i]=N;
1147
+ }
1148
+ //print(V);
1149
+ //print(G);
1150
+ matrix C;
1151
+ list COEFF;
1152
+ poly p=0;
1153
+ poly q=0;
1154
+ ideal I;
1155
+ list M;
1156
+ i=0;
1157
+ jmp g;
1158
+ int k;
1159
+ for(j=1; j<=size(EK);j++)
1160
+ {
1161
+ //print("arrivo");
1162
+ //print(j);
1163
+ p=MultEKPolys(EK[j],G);
1164
+ //ideal
1165
+ I=0;
1166
+ if (size(V[D[j]-minimo+1])!=0)
1167
+ {
1168
+ M=list();
1169
+ // jmp g;
1170
+ for(i=1; i<= size(V[D[j]-minimo+1]); i++)
1171
+ {
1172
+ g=V[D[j]-minimo+1][i];
1173
+ g.h=(g.h)*t;
1174
+ M[i]=g.h+g.t;
1175
+ }
1176
+ I=M[1..size(M)];
1177
+ attrib(I,"isSB",1);
1178
+ //print(I);
1179
+ }
1180
+ //print(I);
1181
+ q=reduce(t*p,I);
1182
+ q=subst(q,t,1);
1183
+ C=coef(q,pd);
1184
+ COEFF=C[2,1..ncols(C)];
1185
+ for(k=1;k<=size(COEFF);k++)
1186
+ {
1187
+ if(COEFF[k]!=0)
1188
+ { Jms=insert(Jms,COEFF[k],size(Jms));}
1189
+ }
1190
+ }
1191
+ setring r;
1192
+ def Jms=imap(H,Jms);
1193
+ return(Jms);
1194
+ }
1195
+ example
1196
+ { "EXAMPLE:"; echo = 2;
1197
+ ring r=0, (x,y,z),ip;
1198
+ ideal Borid=y^2*z,y*z^2,z^3,y^5;
1199
+ attrib(Borid,"isSB",1);
1200
+ list B=ArrangeBorel(Borid);
1201
+ list NumN;
1202
+ list N;
1203
+ int i;
1204
+ int d;
1205
+ for(i=1;i<=size(B);i++)
1206
+ {
1207
+ d=deg(B[i][1]);
1208
+ N[i]=kbase(Borid,d);
1209
+ NumN[i]=size(N[i]);
1210
+ }
1211
+ int qc=NumNewVar(B, NumN);
1212
+ //Now I must define the NEW RING,
1213
+ //putting the c parameters inside.
1214
+ list L=ring_list(r);
1215
+ list L2;
1216
+ L2[1]=L[1];
1217
+ L2[2]=list();
1218
+ for(i=qc;i>=1;i--)
1219
+ {
1220
+ L2[2][i]="c("+string(i)+")";
1221
+ }
1222
+ L2[3]=list(list("ip",qc));
1223
+ L2[4]=L[4];
1224
+ L[1]=L2;
1225
+ if(defined(K)){kill K;}
1226
+ def K=ring(L);
1227
+ export K;
1228
+ setring(K);
1229
+ def Borid=imap(r,Borid);
1230
+ def N=imap(r,N);
1231
+ def B=imap(r,B);
1232
+ //NumN contains only scalars so I do not imap it
1233
+ int j;
1234
+ list Q;
1235
+ int s;
1236
+ list M;
1237
+ jmp pp;
1238
+ for(i=1;i<=size(B);i++)
1239
+ {
1240
+ Q[i]=list();
1241
+ for(j=1;j<=size(B[i]);j++)
1242
+ {
1243
+ M=NewTails(N[i],s);
1244
+ pp.h=B[i][j];
1245
+ pp.t=M[1];
1246
+ Q[i][j]=pp;
1247
+ s=s+M[2];
1248
+ //print(s);
1249
+ }
1250
+ }
1251
+ list P=ArrangeTails(Q);
1252
+ list EK,D= EKPolynomials(P);
1253
+ int massimo=Max(D);
1254
+ //list V=VConst(P, massimo);
1255
+ //pause();
1256
+ list V=VmConstructor(P,massimo,r);
1257
+ list W=FinalVm(V,P,K);
1258
+ //print("I V ridotti in ordine sono");
1259
+ //print(W);
1260
+ list Jms=SchemeEq(W,EK,D,P,K);
1261
+ Jms;
1262
+ }
1263
+
1264
+ //////////////////////////////////////////////////////////////////////
1265
+ proc JMarkedScheme(ideal Borid,def r)
1266
+ "USAGE: JMarkedScheme(Borid, r); Borid ideal, r ring
1267
+ RETURN: list: Jms
1268
+ NOTE:
1269
+ This procedure performs automatically the whole construction
1270
+ of the J-marked scheme.
1271
+ EXAMPLE: example JMarkedScheme; shows an example"
1272
+ {
1273
+ list Jms;
1274
+ if(BorelCheck(Borid,r))
1275
+ {
1276
+ if(size(Borid)==1) { Jms=list();}
1277
+ else
1278
+ {
1279
+ //print("Input is OK");
1280
+ attrib(Borid,"isSB",1);
1281
+ list B=ArrangeBorel(Borid);
1282
+ list NumN;
1283
+ list N;
1284
+ int i;
1285
+ int d;
1286
+ for(i=1;i<=size(B);i++)
1287
+ {
1288
+ d=deg(B[i][1]);
1289
+ N[i]=kbase(Borid,d);
1290
+ NumN[i]=size(N[i]);
1291
+ }
1292
+ int qc=NumNewVar(B, NumN);
1293
+ if(qc==0) {Jms=list(0);}
1294
+ else
1295
+ {
1296
+ //Now I must define the NEW RING,
1297
+ //putting the c parameters inside.
1298
+ list L=ring_list(r);
1299
+ list L2;
1300
+ L2[1]=L[1];
1301
+ L2[2]=list();
1302
+ for(i=qc;i>=1;i--)
1303
+ {
1304
+ L2[2][i]="c("+string(i)+")";
1305
+ }
1306
+ L2[3]=list(list("ip",qc));
1307
+ L2[4]=L[4];
1308
+ L[1]=L2;
1309
+ if(defined(K)){kill K;}
1310
+ def K=ring(L);
1311
+ export K;
1312
+ setring(K);
1313
+ def Borid=imap(r,Borid);
1314
+ def N=imap(r,N);
1315
+ def B=imap(r,B);
1316
+ //NumN contains only scalars so I do not imap it
1317
+ int j;
1318
+ list Q;
1319
+ int s;
1320
+ list M;
1321
+ jmp pp;
1322
+ for(i=1;i<=size(B);i++)
1323
+ {
1324
+ Q[i]=list();
1325
+ for(j=1;j<=size(B[i]);j++)
1326
+ {
1327
+ M=NewTails(N[i],s);
1328
+ pp.h=B[i][j];
1329
+ pp.t=M[1];
1330
+ Q[i][j]=pp;
1331
+ s=s+M[2];
1332
+ //print(s);
1333
+ }
1334
+ }
1335
+ list P=ArrangeTails(Q);
1336
+ list EK,D= EKPolynomials(P);
1337
+ int massimo=Max(D);
1338
+ //list V=VConst(P, massimo);
1339
+ //pause();
1340
+ list V=VmConstructor(P,massimo,r);
1341
+ list W=FinalVm(V,P,K);
1342
+ //print("I V ridotti in ordine sono");
1343
+ //print(W);
1344
+ //list
1345
+ Jms=SchemeEq(W,EK,D,P,K);
1346
+ keepring K;
1347
+ }
1348
+ }
1349
+ }
1350
+ else
1351
+ {
1352
+ print("WRONG IDEAL IN INPUT");
1353
+ print("It is NOT BOREL");
1354
+ }
1355
+ return(Jms);
1356
+ }
1357
+ example
1358
+ { "EXAMPLE:"; echo = 2;
1359
+ ring r=0, (x,y,z),ip;
1360
+ ideal Borid=y^2*z,y*z^2,z^3,y^5;
1361
+ JMarkedScheme(Borid,r);
1362
+ }
1363
+ ////////////////////////////////////////////////////////////////////