passagemath-singular 10.6.30__cp312-cp312-macosx_13_0_arm64.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 (488) hide show
  1. PySingular.cpython-312-darwin.so +0 -0
  2. passagemath_singular-10.6.30.dist-info/METADATA +182 -0
  3. passagemath_singular-10.6.30.dist-info/RECORD +488 -0
  4. passagemath_singular-10.6.30.dist-info/WHEEL +6 -0
  5. passagemath_singular-10.6.30.dist-info/top_level.txt +3 -0
  6. passagemath_singular.dylibs/libSingular-4.4.1.dylib +0 -0
  7. passagemath_singular.dylibs/libcddgmp.0.dylib +0 -0
  8. passagemath_singular.dylibs/libfactory-4.4.1.dylib +0 -0
  9. passagemath_singular.dylibs/libflint.21.0.dylib +0 -0
  10. passagemath_singular.dylibs/libgf2x.3.dylib +0 -0
  11. passagemath_singular.dylibs/libgfortran.5.dylib +0 -0
  12. passagemath_singular.dylibs/libgmp.10.dylib +0 -0
  13. passagemath_singular.dylibs/libgsl.28.dylib +0 -0
  14. passagemath_singular.dylibs/libmpfr.6.dylib +0 -0
  15. passagemath_singular.dylibs/libntl.44.dylib +0 -0
  16. passagemath_singular.dylibs/libomalloc-0.9.6.dylib +0 -0
  17. passagemath_singular.dylibs/libopenblasp-r0.3.29.dylib +0 -0
  18. passagemath_singular.dylibs/libpolys-4.4.1.dylib +0 -0
  19. passagemath_singular.dylibs/libquadmath.0.dylib +0 -0
  20. passagemath_singular.dylibs/libreadline.8.2.dylib +0 -0
  21. passagemath_singular.dylibs/libsingular_resources-4.4.1.dylib +0 -0
  22. sage/algebras/all__sagemath_singular.py +3 -0
  23. sage/algebras/fusion_rings/all.py +19 -0
  24. sage/algebras/fusion_rings/f_matrix.py +2448 -0
  25. sage/algebras/fusion_rings/fast_parallel_fmats_methods.cpython-312-darwin.so +0 -0
  26. sage/algebras/fusion_rings/fast_parallel_fmats_methods.pxd +5 -0
  27. sage/algebras/fusion_rings/fast_parallel_fmats_methods.pyx +538 -0
  28. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.cpython-312-darwin.so +0 -0
  29. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pxd +3 -0
  30. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pyx +331 -0
  31. sage/algebras/fusion_rings/fusion_double.py +899 -0
  32. sage/algebras/fusion_rings/fusion_ring.py +1580 -0
  33. sage/algebras/fusion_rings/poly_tup_engine.cpython-312-darwin.so +0 -0
  34. sage/algebras/fusion_rings/poly_tup_engine.pxd +24 -0
  35. sage/algebras/fusion_rings/poly_tup_engine.pyx +579 -0
  36. sage/algebras/fusion_rings/shm_managers.cpython-312-darwin.so +0 -0
  37. sage/algebras/fusion_rings/shm_managers.pxd +24 -0
  38. sage/algebras/fusion_rings/shm_managers.pyx +780 -0
  39. sage/algebras/letterplace/all.py +1 -0
  40. sage/algebras/letterplace/free_algebra_element_letterplace.cpython-312-darwin.so +0 -0
  41. sage/algebras/letterplace/free_algebra_element_letterplace.pxd +18 -0
  42. sage/algebras/letterplace/free_algebra_element_letterplace.pyx +755 -0
  43. sage/algebras/letterplace/free_algebra_letterplace.cpython-312-darwin.so +0 -0
  44. sage/algebras/letterplace/free_algebra_letterplace.pxd +35 -0
  45. sage/algebras/letterplace/free_algebra_letterplace.pyx +914 -0
  46. sage/algebras/letterplace/letterplace_ideal.cpython-312-darwin.so +0 -0
  47. sage/algebras/letterplace/letterplace_ideal.pyx +408 -0
  48. sage/algebras/quatalg/all.py +2 -0
  49. sage/algebras/quatalg/quaternion_algebra.py +4778 -0
  50. sage/algebras/quatalg/quaternion_algebra_cython.cpython-312-darwin.so +0 -0
  51. sage/algebras/quatalg/quaternion_algebra_cython.pyx +261 -0
  52. sage/algebras/quatalg/quaternion_algebra_element.cpython-312-darwin.so +0 -0
  53. sage/algebras/quatalg/quaternion_algebra_element.pxd +29 -0
  54. sage/algebras/quatalg/quaternion_algebra_element.pyx +2176 -0
  55. sage/all__sagemath_singular.py +11 -0
  56. sage/ext_data/all__sagemath_singular.py +1 -0
  57. sage/ext_data/singular/function_field/core.lib +98 -0
  58. sage/interfaces/all__sagemath_singular.py +1 -0
  59. sage/interfaces/singular.py +2835 -0
  60. sage/libs/all__sagemath_singular.py +1 -0
  61. sage/libs/singular/__init__.py +1 -0
  62. sage/libs/singular/decl.pxd +1168 -0
  63. sage/libs/singular/function.cpython-312-darwin.so +0 -0
  64. sage/libs/singular/function.pxd +87 -0
  65. sage/libs/singular/function.pyx +1901 -0
  66. sage/libs/singular/function_factory.py +61 -0
  67. sage/libs/singular/groebner_strategy.cpython-312-darwin.so +0 -0
  68. sage/libs/singular/groebner_strategy.pxd +22 -0
  69. sage/libs/singular/groebner_strategy.pyx +582 -0
  70. sage/libs/singular/option.cpython-312-darwin.so +0 -0
  71. sage/libs/singular/option.pyx +671 -0
  72. sage/libs/singular/polynomial.cpython-312-darwin.so +0 -0
  73. sage/libs/singular/polynomial.pxd +39 -0
  74. sage/libs/singular/polynomial.pyx +661 -0
  75. sage/libs/singular/ring.cpython-312-darwin.so +0 -0
  76. sage/libs/singular/ring.pxd +58 -0
  77. sage/libs/singular/ring.pyx +893 -0
  78. sage/libs/singular/singular.cpython-312-darwin.so +0 -0
  79. sage/libs/singular/singular.pxd +72 -0
  80. sage/libs/singular/singular.pyx +1944 -0
  81. sage/libs/singular/standard_options.py +145 -0
  82. sage/matrix/all__sagemath_singular.py +1 -0
  83. sage/matrix/matrix_mpolynomial_dense.cpython-312-darwin.so +0 -0
  84. sage/matrix/matrix_mpolynomial_dense.pxd +7 -0
  85. sage/matrix/matrix_mpolynomial_dense.pyx +615 -0
  86. sage/rings/all__sagemath_singular.py +1 -0
  87. sage/rings/function_field/all__sagemath_singular.py +1 -0
  88. sage/rings/function_field/derivations_polymod.py +911 -0
  89. sage/rings/function_field/element_polymod.cpython-312-darwin.so +0 -0
  90. sage/rings/function_field/element_polymod.pyx +406 -0
  91. sage/rings/function_field/function_field_polymod.py +2611 -0
  92. sage/rings/function_field/ideal_polymod.py +1775 -0
  93. sage/rings/function_field/order_polymod.py +1475 -0
  94. sage/rings/function_field/place_polymod.py +681 -0
  95. sage/rings/polynomial/all__sagemath_singular.py +1 -0
  96. sage/rings/polynomial/multi_polynomial_ideal_libsingular.cpython-312-darwin.so +0 -0
  97. sage/rings/polynomial/multi_polynomial_ideal_libsingular.pxd +5 -0
  98. sage/rings/polynomial/multi_polynomial_ideal_libsingular.pyx +339 -0
  99. sage/rings/polynomial/multi_polynomial_libsingular.cpython-312-darwin.so +0 -0
  100. sage/rings/polynomial/multi_polynomial_libsingular.pxd +30 -0
  101. sage/rings/polynomial/multi_polynomial_libsingular.pyx +6277 -0
  102. sage/rings/polynomial/plural.cpython-312-darwin.so +0 -0
  103. sage/rings/polynomial/plural.pxd +48 -0
  104. sage/rings/polynomial/plural.pyx +3171 -0
  105. sage/symbolic/all__sagemath_singular.py +1 -0
  106. sage/symbolic/comparison_impl.pxi +428 -0
  107. sage/symbolic/constants_c_impl.pxi +178 -0
  108. sage/symbolic/expression.cpython-312-darwin.so +0 -0
  109. sage/symbolic/expression.pxd +7 -0
  110. sage/symbolic/expression.pyx +14200 -0
  111. sage/symbolic/getitem_impl.pxi +202 -0
  112. sage/symbolic/pynac.pxi +572 -0
  113. sage/symbolic/pynac_constant_impl.pxi +133 -0
  114. sage/symbolic/pynac_function_impl.pxi +206 -0
  115. sage/symbolic/pynac_impl.pxi +2576 -0
  116. sage/symbolic/pynac_wrap.h +124 -0
  117. sage/symbolic/series_impl.pxi +272 -0
  118. sage/symbolic/substitution_map_impl.pxi +94 -0
  119. sage_wheels/bin/ESingular +0 -0
  120. sage_wheels/bin/Singular +0 -0
  121. sage_wheels/bin/TSingular +0 -0
  122. sage_wheels/lib/singular/MOD/cohomo.la +41 -0
  123. sage_wheels/lib/singular/MOD/cohomo.so +0 -0
  124. sage_wheels/lib/singular/MOD/customstd.la +41 -0
  125. sage_wheels/lib/singular/MOD/customstd.so +0 -0
  126. sage_wheels/lib/singular/MOD/freealgebra.la +41 -0
  127. sage_wheels/lib/singular/MOD/freealgebra.so +0 -0
  128. sage_wheels/lib/singular/MOD/gfanlib.la +41 -0
  129. sage_wheels/lib/singular/MOD/gfanlib.so +0 -0
  130. sage_wheels/lib/singular/MOD/gitfan.la +41 -0
  131. sage_wheels/lib/singular/MOD/gitfan.so +0 -0
  132. sage_wheels/lib/singular/MOD/interval.la +41 -0
  133. sage_wheels/lib/singular/MOD/interval.so +0 -0
  134. sage_wheels/lib/singular/MOD/loctriv.la +41 -0
  135. sage_wheels/lib/singular/MOD/loctriv.so +0 -0
  136. sage_wheels/lib/singular/MOD/machinelearning.la +41 -0
  137. sage_wheels/lib/singular/MOD/machinelearning.so +0 -0
  138. sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.la +41 -0
  139. sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.so +0 -0
  140. sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.la +41 -0
  141. sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.so +0 -0
  142. sage_wheels/lib/singular/MOD/p_Procs_FieldQ.la +41 -0
  143. sage_wheels/lib/singular/MOD/p_Procs_FieldQ.so +0 -0
  144. sage_wheels/lib/singular/MOD/p_Procs_FieldZp.la +41 -0
  145. sage_wheels/lib/singular/MOD/p_Procs_FieldZp.so +0 -0
  146. sage_wheels/lib/singular/MOD/partialgb.la +41 -0
  147. sage_wheels/lib/singular/MOD/partialgb.so +0 -0
  148. sage_wheels/lib/singular/MOD/pyobject.la +41 -0
  149. sage_wheels/lib/singular/MOD/pyobject.so +0 -0
  150. sage_wheels/lib/singular/MOD/singmathic.la +41 -0
  151. sage_wheels/lib/singular/MOD/singmathic.so +0 -0
  152. sage_wheels/lib/singular/MOD/sispasm.la +41 -0
  153. sage_wheels/lib/singular/MOD/sispasm.so +0 -0
  154. sage_wheels/lib/singular/MOD/subsets.la +41 -0
  155. sage_wheels/lib/singular/MOD/subsets.so +0 -0
  156. sage_wheels/lib/singular/MOD/systhreads.la +41 -0
  157. sage_wheels/lib/singular/MOD/systhreads.so +0 -0
  158. sage_wheels/lib/singular/MOD/syzextra.la +41 -0
  159. sage_wheels/lib/singular/MOD/syzextra.so +0 -0
  160. sage_wheels/libexec/singular/MOD/change_cost +0 -0
  161. sage_wheels/libexec/singular/MOD/singularsurf +11 -0
  162. sage_wheels/libexec/singular/MOD/singularsurf_jupyter +9 -0
  163. sage_wheels/libexec/singular/MOD/singularsurf_win +10 -0
  164. sage_wheels/libexec/singular/MOD/solve_IP +0 -0
  165. sage_wheels/libexec/singular/MOD/surfex +16 -0
  166. sage_wheels/libexec/singular/MOD/toric_ideal +0 -0
  167. sage_wheels/share/factory/gftables/10201 +342 -0
  168. sage_wheels/share/factory/gftables/1024 +37 -0
  169. sage_wheels/share/factory/gftables/10609 +356 -0
  170. sage_wheels/share/factory/gftables/11449 +384 -0
  171. sage_wheels/share/factory/gftables/11881 +398 -0
  172. sage_wheels/share/factory/gftables/121 +6 -0
  173. sage_wheels/share/factory/gftables/12167 +408 -0
  174. sage_wheels/share/factory/gftables/125 +7 -0
  175. sage_wheels/share/factory/gftables/12769 +428 -0
  176. sage_wheels/share/factory/gftables/128 +7 -0
  177. sage_wheels/share/factory/gftables/1331 +47 -0
  178. sage_wheels/share/factory/gftables/1369 +48 -0
  179. sage_wheels/share/factory/gftables/14641 +490 -0
  180. sage_wheels/share/factory/gftables/15625 +523 -0
  181. sage_wheels/share/factory/gftables/16 +3 -0
  182. sage_wheels/share/factory/gftables/16129 +540 -0
  183. sage_wheels/share/factory/gftables/16384 +549 -0
  184. sage_wheels/share/factory/gftables/16807 +563 -0
  185. sage_wheels/share/factory/gftables/1681 +58 -0
  186. sage_wheels/share/factory/gftables/169 +8 -0
  187. sage_wheels/share/factory/gftables/17161 +574 -0
  188. sage_wheels/share/factory/gftables/1849 +64 -0
  189. sage_wheels/share/factory/gftables/18769 +628 -0
  190. sage_wheels/share/factory/gftables/19321 +646 -0
  191. sage_wheels/share/factory/gftables/19683 +659 -0
  192. sage_wheels/share/factory/gftables/2048 +71 -0
  193. sage_wheels/share/factory/gftables/2187 +75 -0
  194. sage_wheels/share/factory/gftables/2197 +76 -0
  195. sage_wheels/share/factory/gftables/2209 +76 -0
  196. sage_wheels/share/factory/gftables/22201 +742 -0
  197. sage_wheels/share/factory/gftables/22801 +762 -0
  198. sage_wheels/share/factory/gftables/2401 +82 -0
  199. sage_wheels/share/factory/gftables/243 +11 -0
  200. sage_wheels/share/factory/gftables/24389 +815 -0
  201. sage_wheels/share/factory/gftables/24649 +824 -0
  202. sage_wheels/share/factory/gftables/25 +3 -0
  203. sage_wheels/share/factory/gftables/256 +11 -0
  204. sage_wheels/share/factory/gftables/26569 +888 -0
  205. sage_wheels/share/factory/gftables/27 +3 -0
  206. sage_wheels/share/factory/gftables/27889 +932 -0
  207. sage_wheels/share/factory/gftables/2809 +96 -0
  208. sage_wheels/share/factory/gftables/28561 +954 -0
  209. sage_wheels/share/factory/gftables/289 +12 -0
  210. sage_wheels/share/factory/gftables/29791 +995 -0
  211. sage_wheels/share/factory/gftables/29929 +1000 -0
  212. sage_wheels/share/factory/gftables/3125 +107 -0
  213. sage_wheels/share/factory/gftables/32 +4 -0
  214. sage_wheels/share/factory/gftables/32041 +1070 -0
  215. sage_wheels/share/factory/gftables/32761 +1094 -0
  216. sage_wheels/share/factory/gftables/32768 +1095 -0
  217. sage_wheels/share/factory/gftables/343 +14 -0
  218. sage_wheels/share/factory/gftables/3481 +118 -0
  219. sage_wheels/share/factory/gftables/361 +14 -0
  220. sage_wheels/share/factory/gftables/36481 +1218 -0
  221. sage_wheels/share/factory/gftables/3721 +126 -0
  222. sage_wheels/share/factory/gftables/37249 +1244 -0
  223. sage_wheels/share/factory/gftables/38809 +1296 -0
  224. sage_wheels/share/factory/gftables/39601 +1322 -0
  225. sage_wheels/share/factory/gftables/4 +3 -0
  226. sage_wheels/share/factory/gftables/4096 +139 -0
  227. sage_wheels/share/factory/gftables/44521 +1486 -0
  228. sage_wheels/share/factory/gftables/4489 +152 -0
  229. sage_wheels/share/factory/gftables/49 +4 -0
  230. sage_wheels/share/factory/gftables/4913 +166 -0
  231. sage_wheels/share/factory/gftables/49729 +1660 -0
  232. sage_wheels/share/factory/gftables/5041 +170 -0
  233. sage_wheels/share/factory/gftables/50653 +1691 -0
  234. sage_wheels/share/factory/gftables/512 +20 -0
  235. sage_wheels/share/factory/gftables/51529 +1720 -0
  236. sage_wheels/share/factory/gftables/52441 +1750 -0
  237. sage_wheels/share/factory/gftables/529 +20 -0
  238. sage_wheels/share/factory/gftables/5329 +180 -0
  239. sage_wheels/share/factory/gftables/54289 +1812 -0
  240. sage_wheels/share/factory/gftables/57121 +1906 -0
  241. sage_wheels/share/factory/gftables/58081 +1938 -0
  242. sage_wheels/share/factory/gftables/59049 +1971 -0
  243. sage_wheels/share/factory/gftables/6241 +210 -0
  244. sage_wheels/share/factory/gftables/625 +23 -0
  245. sage_wheels/share/factory/gftables/63001 +2102 -0
  246. sage_wheels/share/factory/gftables/64 +5 -0
  247. sage_wheels/share/factory/gftables/6561 +221 -0
  248. sage_wheels/share/factory/gftables/6859 +231 -0
  249. sage_wheels/share/factory/gftables/6889 +232 -0
  250. sage_wheels/share/factory/gftables/729 +27 -0
  251. sage_wheels/share/factory/gftables/7921 +266 -0
  252. sage_wheels/share/factory/gftables/8 +3 -0
  253. sage_wheels/share/factory/gftables/81 +5 -0
  254. sage_wheels/share/factory/gftables/8192 +276 -0
  255. sage_wheels/share/factory/gftables/841 +30 -0
  256. sage_wheels/share/factory/gftables/9 +3 -0
  257. sage_wheels/share/factory/gftables/9409 +316 -0
  258. sage_wheels/share/factory/gftables/961 +34 -0
  259. sage_wheels/share/info/singular.info +187111 -0
  260. sage_wheels/share/singular/LIB/GND.lib +1359 -0
  261. sage_wheels/share/singular/LIB/JMBTest.lib +976 -0
  262. sage_wheels/share/singular/LIB/JMSConst.lib +1363 -0
  263. sage_wheels/share/singular/LIB/KVequiv.lib +699 -0
  264. sage_wheels/share/singular/LIB/SingularityDBM.lib +491 -0
  265. sage_wheels/share/singular/LIB/VecField.lib +1542 -0
  266. sage_wheels/share/singular/LIB/absfact.lib +959 -0
  267. sage_wheels/share/singular/LIB/ainvar.lib +730 -0
  268. sage_wheels/share/singular/LIB/aksaka.lib +419 -0
  269. sage_wheels/share/singular/LIB/alexpoly.lib +2542 -0
  270. sage_wheels/share/singular/LIB/algebra.lib +1193 -0
  271. sage_wheels/share/singular/LIB/all.lib +136 -0
  272. sage_wheels/share/singular/LIB/arcpoint.lib +514 -0
  273. sage_wheels/share/singular/LIB/arnold.lib +4553 -0
  274. sage_wheels/share/singular/LIB/arnoldclassify.lib +2058 -0
  275. sage_wheels/share/singular/LIB/arr.lib +3486 -0
  276. sage_wheels/share/singular/LIB/assprimeszerodim.lib +769 -0
  277. sage_wheels/share/singular/LIB/autgradalg.lib +3361 -0
  278. sage_wheels/share/singular/LIB/bfun.lib +1964 -0
  279. sage_wheels/share/singular/LIB/bimodules.lib +774 -0
  280. sage_wheels/share/singular/LIB/brillnoether.lib +226 -0
  281. sage_wheels/share/singular/LIB/brnoeth.lib +5017 -0
  282. sage_wheels/share/singular/LIB/central.lib +2169 -0
  283. sage_wheels/share/singular/LIB/chern.lib +4162 -0
  284. sage_wheels/share/singular/LIB/cimonom.lib +571 -0
  285. sage_wheels/share/singular/LIB/cisimplicial.lib +1835 -0
  286. sage_wheels/share/singular/LIB/classify.lib +3239 -0
  287. sage_wheels/share/singular/LIB/classify2.lib +1462 -0
  288. sage_wheels/share/singular/LIB/classifyMapGerms.lib +1515 -0
  289. sage_wheels/share/singular/LIB/classify_aeq.lib +3253 -0
  290. sage_wheels/share/singular/LIB/classifyceq.lib +2092 -0
  291. sage_wheels/share/singular/LIB/classifyci.lib +1133 -0
  292. sage_wheels/share/singular/LIB/combinat.lib +91 -0
  293. sage_wheels/share/singular/LIB/compregb.lib +276 -0
  294. sage_wheels/share/singular/LIB/control.lib +1636 -0
  295. sage_wheels/share/singular/LIB/crypto.lib +3795 -0
  296. sage_wheels/share/singular/LIB/curveInv.lib +667 -0
  297. sage_wheels/share/singular/LIB/curvepar.lib +1817 -0
  298. sage_wheels/share/singular/LIB/customstd.lib +100 -0
  299. sage_wheels/share/singular/LIB/deRham.lib +5979 -0
  300. sage_wheels/share/singular/LIB/decodegb.lib +2134 -0
  301. sage_wheels/share/singular/LIB/decomp.lib +1655 -0
  302. sage_wheels/share/singular/LIB/deflation.lib +872 -0
  303. sage_wheels/share/singular/LIB/deform.lib +925 -0
  304. sage_wheels/share/singular/LIB/difform.lib +3055 -0
  305. sage_wheels/share/singular/LIB/divisors.lib +750 -0
  306. sage_wheels/share/singular/LIB/dmod.lib +5817 -0
  307. sage_wheels/share/singular/LIB/dmodapp.lib +3269 -0
  308. sage_wheels/share/singular/LIB/dmodideal.lib +1211 -0
  309. sage_wheels/share/singular/LIB/dmodloc.lib +2645 -0
  310. sage_wheels/share/singular/LIB/dmodvar.lib +818 -0
  311. sage_wheels/share/singular/LIB/dummy.lib +17 -0
  312. sage_wheels/share/singular/LIB/elim.lib +1009 -0
  313. sage_wheels/share/singular/LIB/ellipticcovers.lib +548 -0
  314. sage_wheels/share/singular/LIB/enumpoints.lib +146 -0
  315. sage_wheels/share/singular/LIB/equising.lib +2127 -0
  316. sage_wheels/share/singular/LIB/ffmodstd.lib +2384 -0
  317. sage_wheels/share/singular/LIB/ffsolve.lib +1289 -0
  318. sage_wheels/share/singular/LIB/findifs.lib +778 -0
  319. sage_wheels/share/singular/LIB/finitediff.lib +1768 -0
  320. sage_wheels/share/singular/LIB/finvar.lib +7989 -0
  321. sage_wheels/share/singular/LIB/fpadim.lib +2429 -0
  322. sage_wheels/share/singular/LIB/fpalgebras.lib +1666 -0
  323. sage_wheels/share/singular/LIB/fpaprops.lib +1462 -0
  324. sage_wheels/share/singular/LIB/freegb.lib +3853 -0
  325. sage_wheels/share/singular/LIB/general.lib +1350 -0
  326. sage_wheels/share/singular/LIB/gfan.lib +1768 -0
  327. sage_wheels/share/singular/LIB/gitfan.lib +3130 -0
  328. sage_wheels/share/singular/LIB/gkdim.lib +99 -0
  329. sage_wheels/share/singular/LIB/gmspoly.lib +589 -0
  330. sage_wheels/share/singular/LIB/gmssing.lib +1739 -0
  331. sage_wheels/share/singular/LIB/goettsche.lib +909 -0
  332. sage_wheels/share/singular/LIB/graal.lib +1366 -0
  333. sage_wheels/share/singular/LIB/gradedModules.lib +2541 -0
  334. sage_wheels/share/singular/LIB/graphics.lib +360 -0
  335. sage_wheels/share/singular/LIB/grobcov.lib +7706 -0
  336. sage_wheels/share/singular/LIB/groups.lib +1123 -0
  337. sage_wheels/share/singular/LIB/grwalk.lib +507 -0
  338. sage_wheels/share/singular/LIB/hdepth.lib +194 -0
  339. sage_wheels/share/singular/LIB/help.cnf +57 -0
  340. sage_wheels/share/singular/LIB/hess.lib +1946 -0
  341. sage_wheels/share/singular/LIB/hnoether.lib +4292 -0
  342. sage_wheels/share/singular/LIB/hodge.lib +400 -0
  343. sage_wheels/share/singular/LIB/homolog.lib +1927 -0
  344. sage_wheels/share/singular/LIB/hyperel.lib +975 -0
  345. sage_wheels/share/singular/LIB/inout.lib +679 -0
  346. sage_wheels/share/singular/LIB/integralbasis.lib +6224 -0
  347. sage_wheels/share/singular/LIB/interval.lib +1418 -0
  348. sage_wheels/share/singular/LIB/intprog.lib +778 -0
  349. sage_wheels/share/singular/LIB/invar.lib +443 -0
  350. sage_wheels/share/singular/LIB/involut.lib +980 -0
  351. sage_wheels/share/singular/LIB/jacobson.lib +1215 -0
  352. sage_wheels/share/singular/LIB/kskernel.lib +534 -0
  353. sage_wheels/share/singular/LIB/latex.lib +3146 -0
  354. sage_wheels/share/singular/LIB/lejeune.lib +651 -0
  355. sage_wheels/share/singular/LIB/linalg.lib +2040 -0
  356. sage_wheels/share/singular/LIB/locnormal.lib +212 -0
  357. sage_wheels/share/singular/LIB/lrcalc.lib +526 -0
  358. sage_wheels/share/singular/LIB/makedbm.lib +294 -0
  359. sage_wheels/share/singular/LIB/mathml.lib +813 -0
  360. sage_wheels/share/singular/LIB/matrix.lib +1372 -0
  361. sage_wheels/share/singular/LIB/maxlike.lib +1132 -0
  362. sage_wheels/share/singular/LIB/methods.lib +212 -0
  363. sage_wheels/share/singular/LIB/moddiq.lib +322 -0
  364. sage_wheels/share/singular/LIB/modfinduni.lib +181 -0
  365. sage_wheels/share/singular/LIB/modnormal.lib +218 -0
  366. sage_wheels/share/singular/LIB/modprimdec.lib +1258 -0
  367. sage_wheels/share/singular/LIB/modquotient.lib +269 -0
  368. sage_wheels/share/singular/LIB/modstd.lib +1025 -0
  369. sage_wheels/share/singular/LIB/modular.lib +438 -0
  370. sage_wheels/share/singular/LIB/modules.lib +2553 -0
  371. sage_wheels/share/singular/LIB/modwalk.lib +609 -0
  372. sage_wheels/share/singular/LIB/mondromy.lib +1016 -0
  373. sage_wheels/share/singular/LIB/monomialideal.lib +3851 -0
  374. sage_wheels/share/singular/LIB/mprimdec.lib +2353 -0
  375. sage_wheels/share/singular/LIB/mregular.lib +1863 -0
  376. sage_wheels/share/singular/LIB/multigrading.lib +5629 -0
  377. sage_wheels/share/singular/LIB/ncHilb.lib +777 -0
  378. sage_wheels/share/singular/LIB/ncModslimgb.lib +791 -0
  379. sage_wheels/share/singular/LIB/ncalg.lib +16311 -0
  380. sage_wheels/share/singular/LIB/ncall.lib +31 -0
  381. sage_wheels/share/singular/LIB/ncdecomp.lib +468 -0
  382. sage_wheels/share/singular/LIB/ncfactor.lib +13371 -0
  383. sage_wheels/share/singular/LIB/ncfrac.lib +1023 -0
  384. sage_wheels/share/singular/LIB/nchilbert.lib +448 -0
  385. sage_wheels/share/singular/LIB/nchomolog.lib +759 -0
  386. sage_wheels/share/singular/LIB/ncloc.lib +361 -0
  387. sage_wheels/share/singular/LIB/ncpreim.lib +795 -0
  388. sage_wheels/share/singular/LIB/ncrat.lib +2849 -0
  389. sage_wheels/share/singular/LIB/nctools.lib +1887 -0
  390. sage_wheels/share/singular/LIB/nets.lib +1456 -0
  391. sage_wheels/share/singular/LIB/nfmodstd.lib +1000 -0
  392. sage_wheels/share/singular/LIB/nfmodsyz.lib +732 -0
  393. sage_wheels/share/singular/LIB/noether.lib +1106 -0
  394. sage_wheels/share/singular/LIB/normal.lib +8700 -0
  395. sage_wheels/share/singular/LIB/normaliz.lib +2140 -0
  396. sage_wheels/share/singular/LIB/ntsolve.lib +362 -0
  397. sage_wheels/share/singular/LIB/numerAlg.lib +560 -0
  398. sage_wheels/share/singular/LIB/numerDecom.lib +2261 -0
  399. sage_wheels/share/singular/LIB/olga.lib +1933 -0
  400. sage_wheels/share/singular/LIB/orbitparam.lib +351 -0
  401. sage_wheels/share/singular/LIB/parallel.lib +305 -0
  402. sage_wheels/share/singular/LIB/paraplanecurves.lib +3110 -0
  403. sage_wheels/share/singular/LIB/perron.lib +202 -0
  404. sage_wheels/share/singular/LIB/pfd.lib +2223 -0
  405. sage_wheels/share/singular/LIB/phindex.lib +642 -0
  406. sage_wheels/share/singular/LIB/pointid.lib +673 -0
  407. sage_wheels/share/singular/LIB/polybori.lib +1430 -0
  408. sage_wheels/share/singular/LIB/polyclass.lib +525 -0
  409. sage_wheels/share/singular/LIB/polylib.lib +1174 -0
  410. sage_wheels/share/singular/LIB/polymake.lib +1902 -0
  411. sage_wheels/share/singular/LIB/presolve.lib +1533 -0
  412. sage_wheels/share/singular/LIB/primdec.lib +9593 -0
  413. sage_wheels/share/singular/LIB/primdecint.lib +1782 -0
  414. sage_wheels/share/singular/LIB/primitiv.lib +401 -0
  415. sage_wheels/share/singular/LIB/puiseuxexpansions.lib +1631 -0
  416. sage_wheels/share/singular/LIB/purityfiltration.lib +960 -0
  417. sage_wheels/share/singular/LIB/qhmoduli.lib +1561 -0
  418. sage_wheels/share/singular/LIB/qmatrix.lib +293 -0
  419. sage_wheels/share/singular/LIB/random.lib +455 -0
  420. sage_wheels/share/singular/LIB/ratgb.lib +489 -0
  421. sage_wheels/share/singular/LIB/realclassify.lib +5759 -0
  422. sage_wheels/share/singular/LIB/realizationMatroids.lib +772 -0
  423. sage_wheels/share/singular/LIB/realrad.lib +1197 -0
  424. sage_wheels/share/singular/LIB/recover.lib +2628 -0
  425. sage_wheels/share/singular/LIB/redcgs.lib +3984 -0
  426. sage_wheels/share/singular/LIB/reesclos.lib +465 -0
  427. sage_wheels/share/singular/LIB/resbinomial.lib +2802 -0
  428. sage_wheels/share/singular/LIB/resgraph.lib +789 -0
  429. sage_wheels/share/singular/LIB/resjung.lib +820 -0
  430. sage_wheels/share/singular/LIB/resolve.lib +5110 -0
  431. sage_wheels/share/singular/LIB/resources.lib +169 -0
  432. sage_wheels/share/singular/LIB/reszeta.lib +5473 -0
  433. sage_wheels/share/singular/LIB/ring.lib +1328 -0
  434. sage_wheels/share/singular/LIB/ringgb.lib +343 -0
  435. sage_wheels/share/singular/LIB/rinvar.lib +1153 -0
  436. sage_wheels/share/singular/LIB/rootisolation.lib +1481 -0
  437. sage_wheels/share/singular/LIB/rootsmr.lib +709 -0
  438. sage_wheels/share/singular/LIB/rootsur.lib +886 -0
  439. sage_wheels/share/singular/LIB/rstandard.lib +607 -0
  440. sage_wheels/share/singular/LIB/rwalk.lib +336 -0
  441. sage_wheels/share/singular/LIB/sagbi.lib +1353 -0
  442. sage_wheels/share/singular/LIB/sagbiNormaliz.lib +1498 -0
  443. sage_wheels/share/singular/LIB/sagbigrob.lib +449 -0
  444. sage_wheels/share/singular/LIB/schreyer.lib +321 -0
  445. sage_wheels/share/singular/LIB/schubert.lib +2551 -0
  446. sage_wheels/share/singular/LIB/sets.lib +524 -0
  447. sage_wheels/share/singular/LIB/sheafcoh.lib +1663 -0
  448. sage_wheels/share/singular/LIB/signcond.lib +437 -0
  449. sage_wheels/share/singular/LIB/sing.lib +1094 -0
  450. sage_wheels/share/singular/LIB/sing4ti2.lib +419 -0
  451. sage_wheels/share/singular/LIB/solve.lib +2243 -0
  452. sage_wheels/share/singular/LIB/spcurve.lib +1077 -0
  453. sage_wheels/share/singular/LIB/spectrum.lib +62 -0
  454. sage_wheels/share/singular/LIB/ssi.lib +143 -0
  455. sage_wheels/share/singular/LIB/standard.lib +2769 -0
  456. sage_wheels/share/singular/LIB/stanleyreisner.lib +473 -0
  457. sage_wheels/share/singular/LIB/stdmodule.lib +547 -0
  458. sage_wheels/share/singular/LIB/stratify.lib +1070 -0
  459. sage_wheels/share/singular/LIB/surf.lib +506 -0
  460. sage_wheels/share/singular/LIB/surf_jupyter.lib +223 -0
  461. sage_wheels/share/singular/LIB/surfacesignature.lib +522 -0
  462. sage_wheels/share/singular/LIB/surfex.lib +1462 -0
  463. sage_wheels/share/singular/LIB/swalk.lib +877 -0
  464. sage_wheels/share/singular/LIB/symodstd.lib +1570 -0
  465. sage_wheels/share/singular/LIB/systhreads.lib +74 -0
  466. sage_wheels/share/singular/LIB/tasks.lib +1324 -0
  467. sage_wheels/share/singular/LIB/tateProdCplxNegGrad.lib +2412 -0
  468. sage_wheels/share/singular/LIB/teachstd.lib +858 -0
  469. sage_wheels/share/singular/LIB/template.lib +116 -0
  470. sage_wheels/share/singular/LIB/toric.lib +1119 -0
  471. sage_wheels/share/singular/LIB/transformation.lib +116 -0
  472. sage_wheels/share/singular/LIB/triang.lib +1195 -0
  473. sage_wheels/share/singular/LIB/tropical.lib +8741 -0
  474. sage_wheels/share/singular/LIB/tropicalEllipticCovers.lib +2922 -0
  475. sage_wheels/share/singular/LIB/tropicalNewton.lib +1128 -0
  476. sage_wheels/share/singular/LIB/tst.lib +1108 -0
  477. sage_wheels/share/singular/LIB/weierstr.lib +241 -0
  478. sage_wheels/share/singular/LIB/zeroset.lib +1478 -0
  479. sage_wheels/share/singular/emacs/.emacs-general +184 -0
  480. sage_wheels/share/singular/emacs/.emacs-singular +234 -0
  481. sage_wheels/share/singular/emacs/COPYING +44 -0
  482. sage_wheels/share/singular/emacs/cmd-cmpl.el +241 -0
  483. sage_wheels/share/singular/emacs/ex-cmpl.el +1681 -0
  484. sage_wheels/share/singular/emacs/hlp-cmpl.el +4310 -0
  485. sage_wheels/share/singular/emacs/lib-cmpl.el +179 -0
  486. sage_wheels/share/singular/emacs/singular.el +4273 -0
  487. sage_wheels/share/singular/emacs/singular.xpm +39 -0
  488. sage_wheels/share/singular/singular.idx +4986 -0
@@ -0,0 +1,1025 @@
1
+ ///////////////////////////////////////////////////////////////////////////////
2
+ version="version modstd.lib 4.3.0.1 Mar_2022 "; // $Id: 49bcd8b8463c6dab12a3bac756f807885c0472e7 $
3
+ category="Commutative Algebra";
4
+ info="
5
+ LIBRARY: modstd.lib Groebner bases of ideals/modules using modular methods
6
+
7
+ AUTHORS: A. Hashemi Amir.Hashemi@lip6.fr
8
+ G. Pfister pfister@mathematik.uni-kl.de
9
+ H. Schoenemann hannes@mathematik.uni-kl.de
10
+ A. Steenpass steenpass@mathematik.uni-kl.de
11
+ S. Steidel steidel@mathematik.uni-kl.de
12
+
13
+ OVERVIEW:
14
+ A library for computing Groebner bases of ideals/modules in the polynomial ring
15
+ over the rational numbers using modular methods.
16
+
17
+ REFERENCES:
18
+ E. A. Arnold: Modular algorithms for computing Groebner bases.
19
+ J. Symb. Comp. 35, 403-419 (2003).
20
+
21
+ N. Idrees, G. Pfister, S. Steidel: Parallelization of Modular Algorithms.
22
+ J. Symb. Comp. 46, 672-684 (2011).
23
+
24
+ PROCEDURES:
25
+ modStd(I); standard basis of I using modular methods
26
+ modGB(cmd,I); standard basis of I using modular methods via cmd
27
+ modSyz(I); syzygy module of I using modular methods
28
+ modIntersect(I,J); intersection of I and J using modular methods
29
+ ";
30
+
31
+ LIB "polylib.lib";
32
+ LIB "modular.lib";
33
+
34
+ proc modStd(def I, list #)
35
+ "USAGE: modStd(I[, exactness]); I ideal/module, exactness int
36
+ RETURN: a standard basis of I
37
+ NOTE: The procedure computes a standard basis of I (over the rational
38
+ numbers) by using modular methods.
39
+ @* An optional parameter 'exactness' can be provided.
40
+ If exactness = 1(default), the procedure computes a standard basis
41
+ of I for sure; if exactness = 0, it computes a standard basis of I
42
+ with high probability.
43
+ SEE ALSO: modular
44
+ EXAMPLE: example modStd; shows an example"
45
+ {
46
+ if (system("--cpus")<1) { return(groebner(I)); }
47
+ /* read optional parameter */
48
+ int exactness = 1;
49
+ if (size(#) > 0)
50
+ {
51
+ /* For compatibility, we only test size(#) > 4. This can be changed to
52
+ * size(#) > 1 in the future. */
53
+ if (size(#) > 4 || typeof(#[1]) != "int")
54
+ {
55
+ ERROR("wrong optional parameter");
56
+ }
57
+ exactness = #[1];
58
+ }
59
+
60
+ /* save options */
61
+ intvec opt = option(get);
62
+ option(redSB);
63
+ if (attrib(basering,"global")==0)
64
+ {
65
+ if (noether!=0) { option(infRedTail);}
66
+ else
67
+ { def II=I; attrib(II,"isSB",1);
68
+ if (highcorner(II)!=0) { option(infRedTail);}
69
+ }
70
+ }
71
+
72
+ /* choose the right command */
73
+ string command = "std";
74
+ if ((system("nblocks")>2) || (npars(basering) > 0))
75
+ { command = "Modstd::groebner_norm"; }
76
+
77
+ /* call modular() */
78
+ if (exactness)
79
+ {
80
+ if(hasCommutativeVars(basering) && (attrib(basering,"global")==1))
81
+ {
82
+ I = modular(command, list(I), primeTest_std,
83
+ deleteUnluckyPrimes_std, pTest_std, finalTest_std_comm);
84
+ }
85
+ else
86
+ {
87
+ I = modular(command, list(I), primeTest_std,
88
+ deleteUnluckyPrimes_std, pTest_std, finalTest_std);
89
+ }
90
+ }
91
+ else
92
+ {
93
+ I = modular(command, list(I), primeTest_std,
94
+ deleteUnluckyPrimes_std, pTest_std);
95
+ }
96
+
97
+ /* return the result */
98
+ attrib(I, "isSB", 1);
99
+ option(set, opt);
100
+ return(I);
101
+ }
102
+ example
103
+ {
104
+ "EXAMPLE:";
105
+ echo = 2;
106
+ ring R1 = 0, (x,y,z,t), dp;
107
+ ideal I = 3x3+x2+1, 11y5+y3+2, 5z4+z2+4;
108
+ ideal J = modStd(I);
109
+ J;
110
+ I = homog(I, t);
111
+ J = modStd(I);
112
+ J;
113
+
114
+ ring R2 = 0, (x,y,z), ds;
115
+ ideal I = jacob(x5+y6+z7+xyz);
116
+ ideal J = modStd(I, 0);
117
+ J;
118
+
119
+ ring R3 = 0, x(1..4), lp;
120
+ ideal I = cyclic(4);
121
+ ideal J1 = modStd(I, 1); // default
122
+ ideal J2 = modStd(I, 0);
123
+ size(reduce(J1, J2));
124
+ size(reduce(J2, J1));
125
+ }
126
+
127
+ proc modGB(string command, def I, list #)
128
+ "USAGE: modGB(method, I[, exactness]); I ideal/module, exactness int
129
+ method can be: std, slimgb, sba
130
+ RETURN: a standard basis of I
131
+ NOTE: The procedure computes a standard basis of I (over the rational
132
+ numbers) by using modular methods.
133
+ @* An optional parameter 'exactness' can be provided.
134
+ If exactness = 1(default), the procedure computes a standard basis
135
+ of I for sure; if exactness = 0, it computes a standard basis of I
136
+ with high probability.
137
+ SEE ALSO: modular
138
+ EXAMPLE: example modGB; shows an example"
139
+ {
140
+ /* read optional parameter */
141
+ int exactness = 1;
142
+ if (size(#) > 0)
143
+ {
144
+ if (typeof(#[1]) != "int")
145
+ {
146
+ ERROR("wrong optional parameter");
147
+ }
148
+ exactness = #[1];
149
+ }
150
+
151
+ /* save options */
152
+ intvec opt = option(get);
153
+ option(redSB);
154
+ option(redTail);
155
+
156
+ /* call modular() */
157
+ if (exactness)
158
+ {
159
+ if(hasCommutativeVars(basering) && (attrib(basering,"global")==1))
160
+ {
161
+ I = modular(command, list(I), primeTest_std,
162
+ deleteUnluckyPrimes_std, pTest_std, finalTest_std_comm);
163
+ }
164
+ else
165
+ {
166
+ I = modular(command, list(I), primeTest_std,
167
+ deleteUnluckyPrimes_std, pTest_std, finalTest_std);
168
+ }
169
+ }
170
+ else
171
+ {
172
+ I = modular(command, list(I), primeTest_std,
173
+ deleteUnluckyPrimes_std, pTest_std);
174
+ }
175
+
176
+ /* return the result */
177
+ attrib(I, "isSB", 1);
178
+ option(set, opt);
179
+ return(I);
180
+ }
181
+ example
182
+ {
183
+ "EXAMPLE:";
184
+ echo = 2;
185
+ ring R1 = 0, (x,y,z,t), dp;
186
+ ideal I = 3x3+x2+1, 11y5+y3+2, 5z4+z2+4;
187
+ ideal J = modGB("slimgb",I);
188
+ J;
189
+ I = homog(I, t);
190
+ J = modGB("slimgb",I);
191
+ J;
192
+
193
+ ring R3 = 0, x(1..4), lp;
194
+ ideal I = cyclic(4);
195
+ ideal J1 = modGB("slimgb",I, 1); // default
196
+ ideal J2 = modGB("slimgb",I, 0);
197
+ size(reduce(J1, J2));
198
+ size(reduce(J2, J1));
199
+ }
200
+
201
+ proc modSyz(def I)
202
+ "USAGE: modSyz(I); I ideal/module
203
+ RETURN: a generating set of syzygies of I
204
+ NOTE: The procedure computes a the syzygy module of I (over the rational
205
+ numbers) by using modular methods with high probability.
206
+ The property of being a syzygy is tested.
207
+ SEE ALSO: modular
208
+ EXAMPLE: example modSyz; shows an example"
209
+ {
210
+ /* save options */
211
+ intvec opt = option(get);
212
+ option(redSB);
213
+
214
+ /* choose the right command */
215
+ string command = "syz";
216
+
217
+ /* call modular() */
218
+ module M = modular(command, list(I), primeTest_std,
219
+ deleteUnluckyPrimes_std, pTest_syz);
220
+
221
+ /* return the result */
222
+ option(set, opt);
223
+ return(M);
224
+ }
225
+ example
226
+ {
227
+ "EXAMPLE:"; echo = 2;
228
+ ring R1 = 0, (x,y,z,t), dp;
229
+ ideal I = 3x3+x2+1, 11y5+y3+2, 5z4+z2+4;
230
+ modSyz(I);
231
+ simplify(syz(I),1);
232
+ }
233
+
234
+ proc modIntersect(def I, def J)
235
+ "USAGE: modIntersect(I,J); I,J ideal/module
236
+ RETURN: a generating set of the intersection of I and J
237
+ NOTE: The procedure computes a the intersection of I and J
238
+ (over the rational numbers) by using modular methods
239
+ with high probability.
240
+ No additional tests are performed.
241
+ SEE ALSO: modular
242
+ EXAMPLE: example modIntersect; shows an example"
243
+ {
244
+ /* save options */
245
+ intvec opt = option(get);
246
+ option(redSB);
247
+
248
+ /* choose the right command */
249
+ string command = "intersect";
250
+
251
+ /* call modular() */
252
+ def M = modular(command, list(I,J), primeTest_std,
253
+ deleteUnluckyPrimes_std);
254
+
255
+ /* return the result */
256
+ option(set, opt);
257
+ return(M);
258
+ }
259
+ example
260
+ {
261
+ "EXAMPLE:"; echo = 2;
262
+ ring R1 = 0, (x,y,z,t), dp;
263
+ ideal I = 3x3+x2+1, 11y5+y3+2, 5z4+z2+4;
264
+ ideal J = maxideal(2);
265
+ modIntersect(I,J);
266
+ simplify(intersect(I,J),1);
267
+ }
268
+
269
+ /* compute a normalized GB via groebner() */
270
+ static proc groebner_norm(def I)
271
+ {
272
+ I = simplify(groebner(I), 1);
273
+ attrib(I, "isSB", 1);
274
+ return(I);
275
+ }
276
+
277
+ /* test if the prime p is suitable for the input, i.e. it does not divide
278
+ * the numerator or denominator of any of the coefficients */
279
+ static proc primeTest_std(int p, alias list args)
280
+ {
281
+ /* erase zero generators */
282
+ def I = simplify(args[1], 2);
283
+
284
+ /* clear denominators and count the terms */
285
+ def J=I; // dummy assign, to get the type of I
286
+ ideal K;
287
+ int n = ncols(I);
288
+ intvec sizes;
289
+ number cnt;
290
+ int i;
291
+ for(i = n; i > 0; i--)
292
+ {
293
+ J[i] = cleardenom(I[i]);
294
+ cnt = leadcoef(J[i])/leadcoef(I[i]);
295
+ K[i] = numerator(cnt)*var(1)+denominator(cnt);
296
+ }
297
+ sizes = size(J[1..n]);
298
+
299
+ /* change to characteristic p */
300
+ def br = basering;
301
+ list lbr = ringlist(br);
302
+ if (typeof(lbr[1]) == "int") { lbr[1] = p; }
303
+ else { lbr[1][1] = p; }
304
+ def rp = ring(lbr);
305
+ setring(rp);
306
+ def Jp = fetch(br, J);
307
+ ideal Kp = fetch(br, K);
308
+
309
+ /* test if any coefficient is missing */
310
+ if (intvec(size(Kp[1..n])) != 2:n) { setring(br); return(0); }
311
+ if (intvec(size(Jp[1..n])) != sizes) { setring(br); return(0); }
312
+ setring(br);
313
+ return(1);
314
+ }
315
+
316
+ /* find entries in modresults which come from unlucky primes.
317
+ * For this, sort the entries into categories depending on their leading
318
+ * ideal and return the indices in all but the biggest category. */
319
+ static proc deleteUnluckyPrimes_std(alias list modresults)
320
+ {
321
+ int size_modresults = size(modresults);
322
+
323
+ /* sort results into categories.
324
+ * each category is represented by three entries:
325
+ * - the corresponding leading ideal
326
+ * - the number of elements
327
+ * - the indices of the elements
328
+ */
329
+ list cat;
330
+ int size_cat;
331
+ def L=modresults[1]; // dummy assign to get the type of L
332
+ int i;
333
+ int j;
334
+ for (i = 1; i <= size_modresults; i++)
335
+ {
336
+ L = lead(modresults[i]);
337
+ attrib(L, "isSB", 1);
338
+ for (j = 1; j <= size_cat; j++)
339
+ {
340
+ if (size(L) == size(cat[j][1])
341
+ && size(reduce(L, cat[j][1], 5)) == 0
342
+ && size(reduce(cat[j][1], L, 5)) == 0)
343
+ {
344
+ cat[j][2] = cat[j][2]+1;
345
+ cat[j][3][cat[j][2]] = i;
346
+ break;
347
+ }
348
+ }
349
+ if (j > size_cat)
350
+ {
351
+ size_cat++;
352
+ cat[size_cat] = list();
353
+ cat[size_cat][1] = L;
354
+ cat[size_cat][2] = 1;
355
+ cat[size_cat][3] = list(i);
356
+ }
357
+ }
358
+
359
+ /* find the biggest categories */
360
+ int cat_max = 1;
361
+ int max = cat[1][2];
362
+ for (i = 2; i <= size_cat; i++)
363
+ {
364
+ if (cat[i][2] > max)
365
+ {
366
+ cat_max = i;
367
+ max = cat[i][2];
368
+ }
369
+ }
370
+
371
+ /* return all other indices */
372
+ list unluckyIndices;
373
+ for (i = 1; i <= size_cat; i++)
374
+ {
375
+ if (i != cat_max) { unluckyIndices = unluckyIndices + cat[i][3]; }
376
+ }
377
+ return(unluckyIndices);
378
+ }
379
+ ////////////////////////////////////////////////////////////////////////////////
380
+
381
+ static proc cleardenomModule(def I)
382
+ {
383
+ int t=ncols(I);
384
+ if(size(I)==0)
385
+ {
386
+ return(I);
387
+ }
388
+ else
389
+ {
390
+ for(int i=1;i<=t;i++)
391
+ {
392
+ I[i]=cleardenom(I[i]);
393
+ }
394
+ }
395
+ return(I);
396
+ }
397
+
398
+ static proc pTest_syz(string command, alias list args, alias def result, int p)
399
+ {
400
+ module result_without_denom=cleardenomModule(result);
401
+ return(size(module(matrix(args[1])*matrix(result_without_denom)))==0);
402
+ }
403
+
404
+ /* test if 'command' applied to 'args' in characteristic p is the same as
405
+ 'result' mapped to characteristic p */
406
+ static proc pTest_std(string command, alias list args, alias def result,
407
+ int p)
408
+ {
409
+ /* change to characteristic p */
410
+ def br = basering;
411
+ list lbr = ringlist(br);
412
+ if (typeof(lbr[1]) == "int") { lbr[1] = p; }
413
+ else { lbr[1][1] = p; }
414
+ def rp = ring(lbr);
415
+ setring(rp);
416
+ def Ip = fetch(br, args)[1];
417
+ def Gp = fetch(br, result);
418
+ attrib(Gp, "isSB", 1);
419
+
420
+ /* test if Ip is in Gp */
421
+ int i;
422
+ for (i = ncols(Ip); i > 0; i--)
423
+ {
424
+ if (reduce(Ip[i], Gp, 1) != 0)
425
+ {
426
+ setring(br);
427
+ return(0);
428
+ }
429
+ }
430
+
431
+ /* compute command(args) */
432
+ execute("Ip = "+command+"(Ip);");
433
+
434
+ /* test if Gp is in Ip */
435
+ for (i = ncols(Gp); i > 0; i--)
436
+ {
437
+ if (reduce(Gp[i], Ip, 1) != 0) { setring(br); return(0); }
438
+ }
439
+ setring(br);
440
+ return(1);
441
+ }
442
+
443
+ /* test if 'result' is a GB of the input ideal, commutative ring */
444
+ static proc finalTest_std_comm(string command, alias list args, def result)
445
+ {
446
+ /* test if args[1] is in result */
447
+ attrib(result, "isSB", 1);
448
+ int i;
449
+ for (i = ncols(args[1]); i > 0; i--)
450
+ {
451
+ if (reduce(args[1][i], result, 1) != 0) { return(0); }
452
+ }
453
+
454
+ /* test if result is a GB */
455
+ //def G = std(result);
456
+ //if (reduce_parallel(G, result)) { return(0); }
457
+ //return(1);
458
+ return(system("verifyGB",result));
459
+ }
460
+
461
+ /* test if 'result' is a GB of the input ideal, generic */
462
+ static proc finalTest_std(string command, alias list args, def result)
463
+ {
464
+ /* test if args[1] is in result */
465
+ attrib(result, "isSB", 1);
466
+ int i;
467
+ for (i = ncols(args[1]); i > 0; i--)
468
+ {
469
+ if (reduce(args[1][i], result, 1) != 0) { return(0); }
470
+ }
471
+
472
+ option(noredSB,noinfRedTail);
473
+ /* test if result is a GB */
474
+ def G = std(result);
475
+ if (reduce_parallel(G, result)) { return(0); }
476
+ return(1);
477
+ }
478
+
479
+ /* return 1, if I_reduce is _not_ in G_reduce,
480
+ * 0, otherwise
481
+ * (same as size(reduce(I_reduce, G_reduce))).
482
+ * Uses parallelization. */
483
+ static proc reduce_parallel(def I_reduce, def G_reduce)
484
+ {
485
+ exportto(Modstd, I_reduce);
486
+ exportto(Modstd, G_reduce);
487
+ int size_I = ncols(I_reduce);
488
+ int chunks = Modular::par_range(size_I);
489
+ intvec range;
490
+ int i;
491
+ for (i = chunks; i > 0; i--)
492
+ {
493
+ range = Modular::par_range(size_I, i);
494
+ task t(i) = "Modstd::reduce_task", list(range);
495
+ }
496
+ startTasks(t(1..chunks));
497
+ waitAllTasks(t(1..chunks));
498
+ int result = 0;
499
+ for (i = chunks; i > 0; i--)
500
+ {
501
+ if (getResult(t(i))) { result = 1; break; }
502
+ }
503
+ kill I_reduce;
504
+ kill G_reduce;
505
+ return(result);
506
+ }
507
+
508
+ /* compute a chunk of reductions for reduce_parallel */
509
+ static proc reduce_task(intvec range)
510
+ {
511
+ int result = 0;
512
+ int i;
513
+ for (i = range[1]; i <= range[2]; i++)
514
+ {
515
+ if (reduce(I_reduce[i], G_reduce, 1) != 0) { result = 1; break; }
516
+ }
517
+ return(result);
518
+ }
519
+
520
+ ////////////////////////////////////////////////////////////////////////////////
521
+ /*
522
+ * The following procedures are kept for backward compatibility with the old
523
+ * version of modstd.lib. As of now (May 2014), they are still needed in
524
+ * modnormal.lib, modwalk.lib, and symodstd.lib. They can be removed here as
525
+ * soon as they are not longer needed in these libraries.
526
+ */
527
+
528
+ LIB "parallel.lib";
529
+
530
+ static proc mod_init()
531
+ {
532
+ newstruct("idealPrimeTest", "ideal Ideal");
533
+ }
534
+
535
+ static proc redFork(ideal I, ideal J, int n)
536
+ {
537
+ attrib(J,"isSB",1);
538
+ return(reduce(I,J,1));
539
+ }
540
+
541
+ proc isIncluded(ideal I, ideal J, list #)
542
+ "USAGE: isIncluded(I,J); I,J ideals
543
+ RETURN: 1 if J includes I,
544
+ @* 0 if there is an element f in I which does not reduce to 0 w.r.t. J.
545
+ EXAMPLE: example isIncluded; shows an example
546
+ "
547
+ {
548
+ def R = basering;
549
+ setring R;
550
+
551
+ attrib(J,"isSB",1);
552
+ int i,j,k;
553
+
554
+ if(size(#) > 0)
555
+ {
556
+ int n = #[1];
557
+ if(n >= ncols(I)) { n = ncols(I); }
558
+ if(n > 1)
559
+ {
560
+ for(i = 1; i <= n - 1; i++)
561
+ {
562
+ //link l(i) = "MPtcp:fork";
563
+ link l(i) = "ssi:fork";
564
+ open(l(i));
565
+
566
+ write(l(i), quote(redFork(eval(I[ncols(I)-i]), eval(J), 1)));
567
+ }
568
+
569
+ int t = timer;
570
+ if(reduce(I[ncols(I)], J, 1) != 0)
571
+ {
572
+ for(i = 1; i <= n - 1; i++)
573
+ {
574
+ close(l(i));
575
+ }
576
+ return(0);
577
+ }
578
+ t = timer - t;
579
+ if(t > 60) { t = 60; }
580
+ int i_sleep = system("sh", "sleep "+string(t));
581
+
582
+ j = ncols(I) - n;
583
+
584
+ while(j >= 0)
585
+ {
586
+ for(i = 1; i <= n - 1; i++)
587
+ {
588
+ if(status(l(i), "read", "ready"))
589
+ {
590
+ if(read(l(i)) != 0)
591
+ {
592
+ for(i = 1; i <= n - 1; i++)
593
+ {
594
+ close(l(i));
595
+ }
596
+ return(0);
597
+ }
598
+ else
599
+ {
600
+ if(j >= 1)
601
+ {
602
+ write(l(i), quote(redFork(eval(I[j]), eval(J), 1)));
603
+ j--;
604
+ }
605
+ else
606
+ {
607
+ k++;
608
+ close(l(i));
609
+ }
610
+ }
611
+ }
612
+ }
613
+ if(k == n - 1)
614
+ {
615
+ j--;
616
+ }
617
+ i_sleep = system("sh", "sleep "+string(t));
618
+ }
619
+ return(1);
620
+ }
621
+ }
622
+
623
+ for(i = ncols(I); i >= 1; i--)
624
+ {
625
+ if(reduce(I[i],J,1) != 0){ return(0); }
626
+ }
627
+ return(1);
628
+ }
629
+ example
630
+ { "EXAMPLE:"; echo = 2;
631
+ ring r=0,(x,y,z),dp;
632
+ ideal I = x+1,x+y+1;
633
+ ideal J = x+1,y;
634
+ isIncluded(I,J);
635
+ isIncluded(J,I);
636
+ isIncluded(I,J,4);
637
+
638
+ ring R = 0, x(1..5), dp;
639
+ ideal I1 = cyclic(4);
640
+ ideal I2 = I1,x(5)^2;
641
+ isIncluded(I1,I2,4);
642
+ }
643
+
644
+ proc deleteUnluckyPrimes(list T, list L, int ho, list #)
645
+ "USAGE: deleteUnluckyPrimes(T,L,ho,#); T/L list of polys/primes, ho integer
646
+ RETURN: lists T,L(,M),lT with T/L(/M) list of polys/primes(/type of #),
647
+ lT ideal
648
+ NOTE: - if ho = 1, the polynomials in T are homogeneous, else ho = 0,
649
+ @* - lT is prevalent, i.e. the most appearing leading ideal in T
650
+ EXAMPLE: example deleteUnluckyPrimes; shows an example
651
+ "
652
+ {
653
+ ho = ((ho)||(ord_test(basering) == -1));
654
+ int j,k,c;
655
+ intvec hl,hc;
656
+ ideal cT,lT,cK;
657
+ lT = lead(T[size(T)]);
658
+ attrib(lT,"isSB",1);
659
+ if(!ho)
660
+ {
661
+ for(j = 1; j < size(T); j++)
662
+ {
663
+ cT = lead(T[j]);
664
+ attrib(cT,"isSB",1);
665
+ if((size(reduce(cT,lT,5))!=0)||(size(reduce(lT,cT,5))!=0))
666
+ {
667
+ cK = cT;
668
+ c++;
669
+ }
670
+ }
671
+ if(c > size(T) div 2){ lT = cK; }
672
+ }
673
+ else
674
+ {
675
+ hl = hilb(lT,1);
676
+ for(j = 1; j < size(T); j++)
677
+ {
678
+ cT = lead(T[j]);
679
+ attrib(cT,"isSB",1);
680
+ hc = hilb(cT,1);
681
+ if(hl == hc)
682
+ {
683
+ for(k = 1; k <= size(lT); k++)
684
+ {
685
+ if(lT[k] < cT[k]) { lT = cT; c++; break; }
686
+ if(lT[k] > cT[k]) { c++; break; }
687
+ }
688
+ }
689
+ else
690
+ {
691
+ if(hc < hl){ lT = cT; hl = hilb(lT,1); c++; }
692
+ }
693
+ }
694
+ }
695
+
696
+ int addList;
697
+ if(size(#) > 0) { list M = #; addList = 1; }
698
+ j = 1;
699
+ attrib(lT,"isSB",1);
700
+ while((j <= size(T))&&(c > 0))
701
+ {
702
+ cT = lead(T[j]);
703
+ attrib(cT,"isSB",1);
704
+ if((size(reduce(cT,lT,5)) != 0)||(size(reduce(lT,cT,5)) != 0))
705
+ {
706
+ T = delete(T,j);
707
+ if(j == 1)
708
+ {
709
+ L = L[2..size(L)];
710
+ if(addList == 1) { M = M[2..size(M)]; }
711
+ }
712
+ else
713
+ {
714
+ if(j == size(L))
715
+ {
716
+ L = L[1..size(L)-1];
717
+ if(addList == 1) { M = M[1..size(M)-1]; }
718
+ }
719
+ else
720
+ {
721
+ L = L[1..j-1],L[j+1..size(L)];
722
+ if(addList == 1) { M = M[1..j-1],M[j+1..size(M)]; }
723
+ }
724
+ }
725
+ j--;
726
+ }
727
+ j++;
728
+ }
729
+
730
+ for(j = 1; j <= size(L); j++)
731
+ {
732
+ L[j] = bigint(L[j]);
733
+ }
734
+
735
+ if(addList == 0) { return(list(T,L,lT)); }
736
+ if(addList == 1) { return(list(T,L,M,lT)); }
737
+ }
738
+ example
739
+ { "EXAMPLE:"; echo = 2;
740
+ list L = 2,3,5,7,11;
741
+ ring r = 0,(y,x),Dp;
742
+ ideal I1 = 2y2x,y6;
743
+ ideal I2 = yx2,y3x,x5,y6;
744
+ ideal I3 = y2x,x3y,x5,y6;
745
+ ideal I4 = y2x,11x3y,x5;
746
+ ideal I5 = y2x,yx3,x5,7y6;
747
+ list T = I1,I2,I3,I4,I5;
748
+ deleteUnluckyPrimes(T,L,1);
749
+ list P = poly(x),poly(x2),poly(x3),poly(x4),poly(x5);
750
+ deleteUnluckyPrimes(T,L,1,P);
751
+ }
752
+
753
+ proc primeTest(def II, bigint p)
754
+ {
755
+ if(typeof(II) == "string")
756
+ {
757
+ ideal I = `II`.Ideal;
758
+ }
759
+ else
760
+ {
761
+ ideal I = II;
762
+ }
763
+
764
+ I = simplify(I, 2); // erase zero generators
765
+
766
+ int i,j;
767
+ poly f;
768
+ number cnt;
769
+ for(i = 1; i <= size(I); i++)
770
+ {
771
+ f = cleardenom(I[i]);
772
+ if(f == 0) { return(0); }
773
+ cnt = leadcoef(I[i])/leadcoef(f);
774
+ if((bigint(numerator(cnt)) mod p) == 0) { return(0); }
775
+ if((bigint(denominator(cnt)) mod p) == 0) { return(0); }
776
+ for(j = size(f); j > 0; j--)
777
+ {
778
+ if((bigint(leadcoef(f[j])) mod p) == 0) { return(0); }
779
+ }
780
+ }
781
+ return(1);
782
+ }
783
+
784
+ proc primeList(ideal I, int n, list #)
785
+ "USAGE: primeList(I,n[,ncores]); ( resp. primeList(I,n[,L,ncores]); ) I ideal,
786
+ n integer
787
+ RETURN: the intvec of n greatest primes <= 2147483647 (resp. n greatest primes
788
+ < L[size(L)] union with L) such that none of these primes divides any
789
+ coefficient occurring in I
790
+ NOTE: The number of cores to use can be defined by ncores, default is 1.
791
+ EXAMPLE: example primeList; shows an example
792
+ "
793
+ {
794
+ intvec L;
795
+ int i,p;
796
+ int ncores = 1;
797
+
798
+ //----------------- Initialize optional parameter ncores ---------------------
799
+ if(size(#) > 0)
800
+ {
801
+ if(size(#) == 1)
802
+ {
803
+ if(typeof(#[1]) == "int")
804
+ {
805
+ ncores = #[1];
806
+ # = list();
807
+ }
808
+ }
809
+ else
810
+ {
811
+ ncores = #[2];
812
+ }
813
+ }
814
+
815
+ if(size(#) == 0)
816
+ {
817
+ p = 2147483647;
818
+ while(!primeTest(I,p))
819
+ {
820
+ p = prime(p-1);
821
+ if(p == 2) { ERROR("no more primes"); }
822
+ }
823
+ L[1] = p;
824
+ }
825
+ else
826
+ {
827
+ L = #[1];
828
+ p = prime(L[size(L)]-1);
829
+ while(!primeTest(I,p))
830
+ {
831
+ p = prime(p-1);
832
+ if(p == 2) { ERROR("no more primes"); }
833
+ }
834
+ L[size(L)+1] = p;
835
+ }
836
+ if(p == 2) { ERROR("no more primes"); }
837
+ if(ncores == 1)
838
+ {
839
+ for(i = 2; i <= n; i++)
840
+ {
841
+ p = prime(p-1);
842
+ while(!primeTest(I,p))
843
+ {
844
+ p = prime(p-1);
845
+ if(p == 2) { ERROR("no more primes"); }
846
+ }
847
+ L[size(L)+1] = p;
848
+ }
849
+ }
850
+ else
851
+ {
852
+ int neededSize = size(L)+n-1;;
853
+ list parallelResults;
854
+ list arguments;
855
+ int neededPrimes = neededSize-size(L);
856
+ idealPrimeTest Id;
857
+ Id.Ideal = I;
858
+ export(Id);
859
+ while(neededPrimes > 0)
860
+ {
861
+ arguments = list();
862
+ for(i = ((neededPrimes div ncores)+1-(neededPrimes%ncores == 0))
863
+ *ncores; i > 0; i--)
864
+ {
865
+ p = prime(p-1);
866
+ if(p == 2) { ERROR("no more primes"); }
867
+ arguments[i] = list("Id", p);
868
+ }
869
+ parallelResults = parallelWaitAll("primeTest", arguments, 0, ncores);
870
+ for(i = size(arguments); i > 0; i--)
871
+ {
872
+ if(parallelResults[i])
873
+ {
874
+ L[size(L)+1] = arguments[i][2];
875
+ }
876
+ }
877
+ neededPrimes = neededSize-size(L);
878
+ }
879
+ kill Id;
880
+ if(size(L) > neededSize)
881
+ {
882
+ L = L[1..neededSize];
883
+ }
884
+ }
885
+ return(L);
886
+ }
887
+ example
888
+ { "EXAMPLE:"; echo = 2;
889
+ ring r = 0,(x,y,z),dp;
890
+ ideal I = 2147483647x+y, z-181;
891
+ intvec L = primeList(I,10);
892
+ size(L);
893
+ L[1];
894
+ L[size(L)];
895
+ L = primeList(I,5,L);
896
+ size(L);
897
+ L[size(L)];
898
+ }
899
+
900
+ proc modStdL(def I, list #)
901
+ "USAGE: modStdL(I[, exactness]); I ideal/module, exactness int
902
+ RETURN: a standard basis of I
903
+ NOTE: The procedure computes a standard basis of I (over the rational
904
+ numbers) by using modular methods via an external Singular.
905
+ @* An optional parameter 'exactness' can be provided.
906
+ If exactness = 1(default), the procedure computes a standard basis
907
+ of I for sure; if exactness = 0, it computes a standard basis of I
908
+ with high probability.
909
+ SEE ALSO: modular, modStd
910
+ EXAMPLE: example modStdL; shows an example"
911
+ {
912
+ link l="ssi:tcp localhost:"+system("Singular");
913
+ write(l,quote(option(noloadLib))); // suppress "loaded..."
914
+ read(l); //dummy: return value of option
915
+ write(l,quote(load("modstd.lib","with"))); // load library
916
+ read(l); //dummy: return value of load
917
+ if (size(#)==0)
918
+ {
919
+ write(l,quote(modStd(eval(I))));
920
+ }
921
+ else
922
+ {
923
+ write(l,quote(modStd(eval(I),eval(#[1]))));
924
+ }
925
+ return(read(l));
926
+ }
927
+ example
928
+ {
929
+ "EXAMPLE:";
930
+ echo = 2;
931
+ ring R1 = 0, (x,y,z,t), dp;
932
+ ideal I = 3x3+x2+1, 11y5+y3+2, 5z4+z2+4;
933
+ ideal J = modStdL(I);
934
+ J;
935
+ I = homog(I, t);
936
+ J = modStdL(I);
937
+ J;
938
+
939
+ ring R2 = 0, (x,y,z), ds;
940
+ ideal I = jacob(x5+y6+z7+xyz);
941
+ ideal J = modStdL(I, 0);
942
+ J;
943
+
944
+ ring R3 = 0, x(1..4), lp;
945
+ ideal I = cyclic(4);
946
+ ideal J1 = modStdL(I, 1); // default
947
+ ideal J2 = modStdL(I, 0);
948
+ size(reduce(J1, J2));
949
+ size(reduce(J2, J1));
950
+ }
951
+
952
+ ////////////////////////////// further examples ////////////////////////////////
953
+
954
+ /*
955
+ ring r = 0, (x,y,z), lp;
956
+ poly s1 = 5x3y2z+3y3x2z+7xy2z2;
957
+ poly s2 = 3xy2z2+x5+11y2z2;
958
+ poly s3 = 4xyz+7x3+12y3+1;
959
+ poly s4 = 3x3-4y3+yz2;
960
+ ideal i = s1, s2, s3, s4;
961
+
962
+ ring r = 0, (x,y,z), lp;
963
+ poly s1 = 2xy4z2+x3y2z-x2y3z+2xyz2+7y3+7;
964
+ poly s2 = 2x2y4z+x2yz2-xy2z2+2x2yz-12x+12y;
965
+ poly s3 = 2y5z+x2y2z-xy3z-xy3+y4+2y2z;
966
+ poly s4 = 3xy4z3+x2y2z-xy3z+4y3z2+3xyz3+4z2-x+y;
967
+ ideal i = s1, s2, s3, s4;
968
+
969
+ ring r = 0, (x,y,z), lp;
970
+ poly s1 = 8x2y2 + 5xy3 + 3x3z + x2yz;
971
+ poly s2 = x5 + 2y3z2 + 13y2z3 + 5yz4;
972
+ poly s3 = 8x3 + 12y3 + xz2 + 3;
973
+ poly s4 = 7x2y4 + 18xy3z2 + y3z3;
974
+ ideal i = s1, s2, s3, s4;
975
+
976
+ int n = 6;
977
+ ring r = 0,(x(1..n)),lp;
978
+ ideal i = cyclic(n);
979
+ ring s = 0, (x(1..n),t), lp;
980
+ ideal i = imap(r,i);
981
+ i = homog(i,t);
982
+
983
+ ring r = 0, (x(1..4),s), (dp(4),dp);
984
+ poly s1 = 1 + s^2*x(1)*x(3) + s^8*x(2)*x(3) + s^19*x(1)*x(2)*x(4);
985
+ poly s2 = x(1) + s^8 *x(1)* x(2)* x(3) + s^19* x(2)* x(4);
986
+ poly s3 = x(2) + s^10*x(3)*x(4) + s^11*x(1)*x(4);
987
+ poly s4 = x(3) + s^4*x(1)*x(2) + s^19*x(1)*x(3)*x(4) +s^24*x(2)*x(3)*x(4);
988
+ poly s5 = x(4) + s^31* x(1)* x(2)* x(3)* x(4);
989
+ ideal i = s1, s2, s3, s4, s5;
990
+
991
+ ring r = 0, (x,y,z), ds;
992
+ int a = 16;
993
+ int b = 15;
994
+ int c = 4;
995
+ int t = 1;
996
+ poly f = x^a+y^b+z^(3*c)+x^(c+2)*y^(c-1)+x^(c-1)*y^(c-1)*z3
997
+ +x^(c-2)*y^c*(y2+t*x)^2;
998
+ ideal i = jacob(f);
999
+
1000
+ ring r = 0, (x,y,z), ds;
1001
+ int a = 25;
1002
+ int b = 25;
1003
+ int c = 5;
1004
+ int t = 1;
1005
+ poly f = x^a+y^b+z^(3*c)+x^(c+2)*y^(c-1)+x^(c-1)*y^(c-1)*z3
1006
+ +x^(c-2)*y^c*(y2+t*x)^2;
1007
+ ideal i = jacob(f),f;
1008
+
1009
+ ring r = 0, (x,y,z), ds;
1010
+ int a = 10;
1011
+ poly f = xyz*(x+y+z)^2 +(x+y+z)^3 +x^a+y^a+z^a;
1012
+ ideal i = jacob(f);
1013
+
1014
+ ring r = 0, (x,y,z), ds;
1015
+ int a = 6;
1016
+ int b = 8;
1017
+ int c = 10;
1018
+ int alpha = 5;
1019
+ int beta = 5;
1020
+ int t = 1;
1021
+ poly f = x^a+y^b+z^c+x^alpha*y^(beta-5)+x^(alpha-2)*y^(beta-3)
1022
+ +x^(alpha-3)*y^(beta-4)*z^2+x^(alpha-4)*y^(beta-4)*(y^2+t*x)^2;
1023
+ ideal i = jacob(f);
1024
+ */
1025
+