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,791 @@
1
+ //////////////////////////////////////////////////////////////////////////////
2
+ version="version ncModslimgb.lib 4.1.3.0 Apr_2020 "; // $Id: e2403a4312f0dc11a412b17f39d6519b541d4713 $
3
+ category="Noncommutative";
4
+ info="
5
+ LIBRARY: ncModslimgb.lib A library for computing Groebner bases over G-algebras
6
+ defined over the rationals using modular techniques.
7
+
8
+ AUTHORS: Wolfram Decker, Christian Eder, Viktor Levandovskyy, and
9
+ Sharwan K. Tiwari shrawant@gmail.com
10
+
11
+ REFERENCES:
12
+ Wolfram Decker, Christian Eder, Viktor Levandovskyy, and
13
+ Sharwan K. Tiwari, Modular Techniques For Noncommutative
14
+ Groebner Bases, https://link.springer.com/article/10.1007/s11786-019-00412-9
15
+ and https://arxiv.org/abs/1704.02852.
16
+
17
+ E. A. Arnold, Modular algorithms for computing Groebner bases.
18
+ Journal of Symbolic Computation 35, 403-419 (2003).
19
+
20
+ N. Idrees, G. Pfister, S. Steidel, Parallelization of Modular
21
+ Algorithms, Journal of Symbolic Computation 46, 672-684 (2011).
22
+
23
+ PROCEDURES:
24
+ ncmodslimgb(ideal I, list #); Groebner basis of a given left ideal I
25
+ using modular methods (Chinese remainder theorem and Farey map).
26
+ ";
27
+
28
+ LIB "parallel.lib";
29
+ LIB "resources.lib";
30
+ LIB "nctools.lib";
31
+ LIB "dmod.lib";
32
+
33
+
34
+ static proc mod_init()
35
+ {
36
+ newstruct("idealPrimeTestId", "ideal Ideal");
37
+ }
38
+
39
+ //==========================Main Procedure===================================
40
+ proc ncmodslimgb(ideal I, list #)
41
+ "USAGE: ncmodslimgb(I[, exactness, ncores]); I ideal, optional integers exactness and n(umber of )cores
42
+ RETURN: ideal
43
+ PURPOSE: compute a left Groebner basis of I by modular approach
44
+ ASSUME: basering is a G-algebra; base field is prime field Q of rationals.
45
+ NOTE: - If the given algebra and ideal are graded (it is not checked by this command), then the computed Groebner
46
+ basis will be exact. Otherwise, the result will be correct with a very high probability.
47
+ - The optional parameter `exactness` justifies, whether the final (expensive)
48
+ verification step will be performed or not (exactness=0, default value is 1).
49
+ - The optional parameter `ncores` (default value is 1) provides an integer to use
50
+ the number of cores (this must not exceed the number of available cores in the computing machine).
51
+ EXAMPLE: example ncmodslimgb; shows an example
52
+ "
53
+ {
54
+ int ncores=1; // default
55
+ int exactness = 1; // default
56
+ int sz=size(#);
57
+
58
+ if(sz>2)
59
+ {
60
+ ERROR("wrong optional parameters");
61
+ }
62
+
63
+ while(sz > 0)
64
+ {
65
+ if(typeof(#[sz]) == "int" && #[sz] == 0)
66
+ {
67
+ exactness = #[sz];
68
+ }
69
+ else
70
+ {
71
+ if(typeof(#[sz]) == "int" && #[sz] > 1)
72
+ {
73
+ ncores=setcores(#[sz]);
74
+ }
75
+ }
76
+ sz = sz-1;
77
+ }
78
+
79
+ def R0 = basering;
80
+ list rl = ringlist(R0);
81
+ if(rl[1][1] > 0)
82
+ {
83
+ ERROR("Characteristic of basering should be zero, basering should
84
+ have no parameters.");
85
+ }
86
+
87
+ //check the non-degenracy condition to ensure that the defined is
88
+ //a G-algbera
89
+ // V.L.: commented out, added ASSUME for basering to be a G-algebra
90
+ // ideal ndc = ndcond();
91
+ // if(ndc != 0)
92
+ // {
93
+ // ERROR("The given input is not a G-algebra");
94
+ // }
95
+
96
+ int index = 1;
97
+ int nextbp=1;
98
+ int i,k,c;
99
+ int j = 1;
100
+ int pTest, sizeTest;
101
+ bigint N;
102
+
103
+ //Initialization of number of primes to be taken
104
+ int n2 = 20; //number of primes to be taken first time
105
+
106
+ if(ncores > 1)
107
+ {
108
+ int a = n2 % ncores;
109
+ if(a>0)
110
+ {
111
+ n2 = n2 - a + ncores;
112
+ }
113
+ }
114
+
115
+ //second round onwards, number of primes to be taken,
116
+ //one can decide;
117
+ int n3 = n2; //default
118
+
119
+ intvec opt = option(get);
120
+ option(redSB);
121
+
122
+ //PrimeList procedure selects suitable primes such that
123
+ //these primes do not divide coefficients occurring
124
+ //in the generating polynomials of input ideal and
125
+ //in the defining relations of input algebra
126
+
127
+ intvec L = PrimeList(I, n2, ncores);
128
+
129
+ list P,T1,T2,LL;
130
+ int sizeT1;
131
+ int sizeT2;
132
+ ideal J,K,H;
133
+
134
+ // modular algorithm steps start here
135
+ list arguments_farey, results_farey, argumentpar;
136
+
137
+ while(1)
138
+ {
139
+ //sequential GB computation for the selected primes
140
+ if(ncores == 1)
141
+ {
142
+ while(nextbp <= size(L))
143
+ {
144
+ P = ModpSlim(I, L[nextbp]);
145
+ T1[index] = P[1];
146
+ T2[index] = bigint(P[2]);
147
+ index++;
148
+ nextbp++;
149
+ }
150
+ }
151
+ //GB computations in parallel for the primes
152
+ else
153
+ {
154
+ argumentpar = list();
155
+ for(i = nextbp; i <= size(L); i++)
156
+ {
157
+ argumentpar[i-nextbp+1] = list(I,L[i]);
158
+ }
159
+ P = parallelWaitAll("NcModslimgb::ModpSlim",argumentpar, 0,ncores);
160
+
161
+ for(i = 1; i <= size(P); i++)
162
+ {
163
+ T1[i+sizeT1] = P[i][1];
164
+ T2[i+sizeT2] = bigint(P[i][2]);
165
+ }
166
+ }
167
+
168
+ LL = DeleteUnluckyPrimes(T1,T2);
169
+ T1 = LL[1];
170
+ T2 = LL[2];
171
+
172
+ //Lifting of results via CRT
173
+ N = T2[1];
174
+ for(i = 2; i <= size(T2); i++)
175
+ {
176
+ N = N*T2[i];
177
+ }
178
+ H = chinrem(T1,T2);
179
+
180
+ //Lifting of results to Rationals via Farey map
181
+ //sequential lifting
182
+ if(ncores == 1)
183
+ {
184
+ J = farey(H,N);
185
+ }
186
+ //parallel lifting
187
+ else
188
+ {
189
+ for(i = size(H); i > 0; i--)
190
+ {
191
+ arguments_farey[i] = list(ideal(H[i]), N);
192
+ }
193
+ results_farey = parallelWaitAll("farey", arguments_farey, 0, ncores);
194
+ for(i = size(H); i > 0; i--)
195
+ {
196
+ J[i] = results_farey[i][1];
197
+ }
198
+ }
199
+
200
+ //Verification steps
201
+ pTest = PTestGB(I,J,L,ncores);
202
+ if(pTest)
203
+ {
204
+ attrib(J,"isSB",1);
205
+ if(exactness == 0)
206
+ {
207
+ option(set, opt);
208
+ return(J);
209
+ }
210
+ if(exactness == 1)
211
+ {
212
+ //sizeTest = 1 - IsIncluded(I,J,ncores);
213
+ sizeTest = 1 - IsIncludedseq(I,J);
214
+ if(sizeTest == 0)
215
+ {
216
+ K = slimgb(J);
217
+ if(size(reduce(K,J,5)) == 0)
218
+ {
219
+ option(set, opt);
220
+ return(J);
221
+ }
222
+ }
223
+ }
224
+ }
225
+ // If, J is not Groebner basis of I
226
+ // compute for more number of primes
227
+ T1 = H;
228
+ sizeT1=size(T1);
229
+ T2 = N;
230
+ sizeT2=size(T2);
231
+ index = 2;
232
+ nextbp = size(L) + 1;
233
+ L = PrimeList(I,n3,L,ncores);
234
+ }
235
+ }
236
+ example
237
+ {
238
+ "EXAMPLE:"; echo = 2;
239
+ ring r = 0,(x,y),dp;
240
+ poly P = y^4+x^3+x*y^3; // a (3,4)-Reiffen curve
241
+ def A = Sannfs(P); setring A; // computed D-module data from P
242
+ ideal bs = LD, imap(r,P); // preparing the computation of the Bernstein-Sato polynomial
243
+ ideal I1 = ncmodslimgb(bs,0,2); // no final verification, use 2 cores
244
+ I1[1]; // the Bernstein-Sato polynomial of P, univariate in s
245
+ ideal I2 = ncmodslimgb(bs); // do the final verification, use 1 core (default)
246
+ I2[1]; // the Bernstein-Sato polynomial of P, univariate in s
247
+ }
248
+
249
+ /*
250
+ ring r = 0,(x,y,z),Dp;
251
+ poly F = x^3+y^3+z^3;
252
+ def A = Sannfs(F);
253
+ setring A;
254
+ ideal I=LD,imap(r,F) ;
255
+ ideal J=ncmodslimgb(I);
256
+ */
257
+
258
+ static proc PrimeList(ideal I, int n, list #)
259
+ "USAGE: PrimeList(I,n[,ncores]); ( resp. PrimeList(I,n[,L,ncores]); ) I ideal,
260
+ n an integer
261
+ RETURN: n number of primes <= 2147483647 such that these primes do not divide
262
+ any coefficient of any generating polynomial of I.
263
+ EXAMPLE: example PrimeList; shows an example
264
+ {
265
+ intvec L;
266
+ int i,p;
267
+ int ncores = 1;
268
+
269
+ //Initialize optional parameter ncores
270
+ if(size(#) > 0)
271
+ {
272
+ if(size(#) == 1)
273
+ {
274
+ if(typeof(#[1]) == "int")
275
+ {
276
+ ncores = #[1];
277
+ # = list();
278
+ }
279
+ }
280
+ else
281
+ {
282
+ ncores = #[2];
283
+ }
284
+ }
285
+ if(size(#) == 0)
286
+ {
287
+ p = 2147483647;
288
+
289
+ //largest prime which can be represented as an @code{int} in Singular
290
+ while(!PrimeTestId(I,p) || !PrimeTestCommutatorRel(p))
291
+ {
292
+ p = prime(p-1);
293
+ if(p == 2)
294
+ {
295
+ ERROR("no more primes");
296
+ }
297
+ }
298
+ L[1] = p;
299
+ }
300
+ else
301
+ {
302
+ L = #[1];
303
+ p = prime(L[size(L)]-1);
304
+ while(!PrimeTestId(I,p) || !PrimeTestCommutatorRel(p))
305
+ {
306
+ p = prime(p-1);
307
+ if(p == 2)
308
+ {
309
+ ERROR("no more primes");
310
+ }
311
+ }
312
+ L[size(L)+1] = p;
313
+ }
314
+ if(p == 2)
315
+ {
316
+ ERROR("no more primes");
317
+ }
318
+
319
+ //sequential selection of remaining n-1 suitable primes
320
+ if(ncores == 1)
321
+ {
322
+ for(i = 2; i <= n; i++)
323
+ {
324
+ p = prime(p-1);
325
+ while(!PrimeTestId(I,p) || !PrimeTestCommutatorRel(p))
326
+ {
327
+ p = prime(p-1);
328
+ if(p == 2)
329
+ {
330
+ ERROR("no more primes");
331
+ }
332
+ }
333
+ L[size(L)+1] = p;
334
+ }
335
+ }
336
+ //parallel selection of remaining n-1 suitable primes
337
+ else
338
+ {
339
+ int neededSize = size(L)+n-1;;
340
+ list parallelResults;
341
+ list parallelResults2;
342
+ list arguments;
343
+ list arguments2;
344
+ int neededPrimes = neededSize-size(L);
345
+ idealPrimeTestId Id;
346
+ Id.Ideal = I;
347
+ export(Id);
348
+ while(neededPrimes > 0)
349
+ {
350
+ arguments = list();
351
+ for(i = ((neededPrimes div ncores)+1-(neededPrimes%ncores == 0)) *ncores;
352
+ i > 0; i--)
353
+ {
354
+ p = prime(p-1);
355
+ if(p == 2)
356
+ {
357
+ ERROR("no more primes");
358
+ }
359
+ arguments[i] = list("Id", p);
360
+ arguments2[i] = list(p);
361
+ }
362
+ parallelResults = parallelWaitAll("NcModslimgb::PrimeTestId", arguments, 0, ncores);
363
+
364
+ //check that primes are suitable for commutator relations
365
+ parallelResults2 = parallelWaitAll("NcModslimgb::PrimeTestCommutatorRel", arguments2,
366
+ 0, ncores);
367
+
368
+ for(i = size(arguments); i > 0; i--)
369
+ {
370
+ if(parallelResults[i] && parallelResults2[i])
371
+ {
372
+ L[size(L)+1] = arguments[i][2];
373
+ }
374
+ }
375
+ neededPrimes = neededSize-size(L);
376
+ }
377
+ kill Id;
378
+ if(size(L) > neededSize)
379
+ {
380
+ L = L[1..neededSize];
381
+ }
382
+ }
383
+ return(L);
384
+ }
385
+ example
386
+ {
387
+ "EXAMPLE:"; echo = 2;
388
+ ring r = 0,(x,y),dp;
389
+ def a = nc_algebra(2147483647, 1);
390
+ setring a;
391
+ ideal I = x+2147483629y, x3+y3;
392
+ intvec V = PrimeList(I,5);
393
+ V;
394
+ intvec W = PrimeList(I,5,2); // number of cores = 2
395
+ W;
396
+ }
397
+
398
+ static proc PrimeTestCommutatorRel(int p)
399
+ "USAGE: PrimeTestCommutatorRel(p); p a prime integer
400
+ RETURN: 1 if p does not divide any coefficient of any defining relation of
401
+ G-algebra, 0 otherwise.
402
+ EXAMPLE: example PrimeTestCommutatorRel; shows an example
403
+ {
404
+ list rl = ringlist(basering);
405
+ int nvar = nvars(basering);
406
+ matrix commrelmatC = UpOneMatrix(nvar);
407
+ matrix commrelmatD[nvar][nvar];
408
+ if (size(rl) == 6)
409
+ {
410
+ commrelmatC = rl[5];
411
+ commrelmatD = rl[6];
412
+ }
413
+ int i, j, k;
414
+ poly f; number cnt;
415
+ for(i = 1; i <= nvar; i++)
416
+ {
417
+ for(j = i+1; j <= nvar; j++)
418
+ {
419
+ cnt = leadcoef(commrelmatC[i,j]);
420
+ if(cnt == 0)
421
+ {
422
+ ERROR("wrong relations");
423
+ }
424
+ if((bigint(numerator(cnt)) mod p) == 0)
425
+ {
426
+ return(0);
427
+ }
428
+ if((bigint(denominator(cnt)) mod p) == 0)
429
+ {
430
+ return(0);
431
+ }
432
+ }
433
+ }
434
+ // checks for standard polynomials d_ij
435
+ for(i = 1; i <= nvar; i++)
436
+ {
437
+ for(j = i+1; j <= nvar; j++)
438
+ {
439
+ if(commrelmatD[i,j] != 0)
440
+ {
441
+ f = cleardenom(commrelmatD[i,j]);
442
+ cnt = leadcoef(commrelmatD[i,j])/leadcoef(f);
443
+ if((bigint(numerator(cnt)) mod p) == 0)
444
+ {
445
+ return(0);
446
+ }
447
+ if((bigint(denominator(cnt)) mod p) == 0)
448
+ {
449
+ return(0);
450
+ }
451
+ for(k = size(f); k > 0; k--)
452
+ {
453
+ if((bigint(leadcoef(f[k])) mod p) == 0)
454
+ {
455
+ return(0);
456
+ }
457
+ }
458
+ }
459
+ }
460
+ }
461
+ return(1);
462
+ }
463
+ example
464
+ {
465
+ "EXAMPLE:"; echo = 2;
466
+ ring r = 0,(x,y),dp;
467
+ def a = nc_algebra(2147483647,1);
468
+ setring a;
469
+ ideal I = x+2147483629y;
470
+ int p1 = 2147483647;
471
+ int p2 = 2147483629;
472
+ int p3 = 2147483549;
473
+ PrimeTestCommutatorRel(p1);
474
+ PrimeTestCommutatorRel(p2);
475
+ PrimeTestCommutatorRel(p3);
476
+ }
477
+
478
+ static proc PrimeTestId(def II, bigint p)
479
+ "USAGE: PrimeTestId(I, p); I ideal, p a prime integer
480
+ RETURN: 1 if p does not divide any numerator or denominator of any coefficient
481
+ in any polynomial of I, 0 otherwise.
482
+ EXAMPLE: example PrimeTestId; shows an example
483
+ {
484
+ if(typeof(II) == "string")
485
+ {
486
+ ideal I = `II`.Ideal;
487
+ }
488
+ else
489
+ {
490
+ ideal I = II;
491
+ }
492
+ I = simplify(I, 2);
493
+ int i,j;
494
+ poly f;
495
+ number cnt;
496
+
497
+ for(i = 1; i <= size(I); i++)
498
+ {
499
+ f = cleardenom(I[i]);
500
+ if(f == 0)
501
+ {
502
+ return(0);
503
+ }
504
+ cnt = leadcoef(I[i])/leadcoef(f);
505
+ if((bigint(numerator(cnt)) mod p) == 0)
506
+ {
507
+ return(0);
508
+ }
509
+ if((bigint(denominator(cnt)) mod p) == 0)
510
+ {
511
+ return(0);
512
+ }
513
+ for(j = size(f); j > 0; j--)
514
+ {
515
+ if((bigint(leadcoef(f[j])) mod p) == 0)
516
+ {
517
+ return(0);
518
+ }
519
+ }
520
+ }
521
+ return(1);
522
+ }
523
+ example
524
+ {
525
+ "EXAMPLE:"; echo = 2;
526
+ ring r = 0,(x,y),dp;
527
+ def a = nc_algebra(2147483647,1);
528
+ setring a;
529
+ ideal I = x+2147483629y;
530
+ int p1 = 2147483647;
531
+ int p2 = 2147483629;
532
+ int p3 = 2147483549;
533
+ PrimeTestId(I,p1);
534
+ PrimeTestId(I,p2);
535
+ PrimeTestId(I,p3);
536
+ }
537
+
538
+ static proc ModpSlim(ideal I, int p)
539
+ "USAGE: ModpSlim(I, p); I ideal, p a prime
540
+ RETURN: The reduced Groebner basis of I mod p.
541
+ ASSUME: The base field is precisely Q.
542
+ EXAMPLE: example ModpSlim; shows an example
543
+ {
544
+ def R0 = basering;
545
+ list rl = ringlist(R0);
546
+ int nvar = nvars(basering);
547
+ matrix commrelmatC = UpOneMatrix(nvar);
548
+ matrix commrelmatD[nvar][nvar];
549
+ if (size(rl) == 6)
550
+ {
551
+ commrelmatC = rl[5];
552
+ commrelmatD = rl[6];
553
+ }
554
+ // matrix commrelmatC = rl[5];
555
+ // matrix commrelmatD = rl[6];
556
+ rl[1] = p;
557
+ def @rr = ring(rl);
558
+ setring @rr;
559
+ list rll = ringlist(@rr);
560
+
561
+ rll[5] = imap(R0,commrelmatC);
562
+ rll[6] = imap(R0,commrelmatD);
563
+ def @r = ring(rll);
564
+ setring @r;
565
+ kill @rr;
566
+ ideal ii = fetch(R0,I);
567
+ option(redSB);
568
+ ii = slimgb(ii);
569
+ setring R0;
570
+ return(list(fetch(@r,ii),p));
571
+ }
572
+ example
573
+ {
574
+ "EXAMPLE:"; echo = 2;
575
+ def r = reiffen(4,5);
576
+ setring r;
577
+ def A = Sannfs(RC);
578
+ setring A;
579
+ ideal bs = LD, imap(r,RC);
580
+ int p = 2147483647;
581
+ list l = ModpSlim(bs, p);
582
+ l;
583
+ }
584
+
585
+ static proc DeleteUnluckyPrimes(list T, list L)
586
+ {
587
+ int sizeModgbs = size(T);
588
+ list class;
589
+ int sizeClass;
590
+ ideal Lm;
591
+ int i;
592
+ int j;
593
+ for(i = 1; i <= sizeModgbs; i++)
594
+ {
595
+ Lm=lead(T[i]);
596
+ attrib(Lm, "isSB", 1);
597
+ for(j = 1; j <= sizeClass; j++)
598
+ {
599
+ if (size(Lm) == size(class[j][1])
600
+ && size(reduce(Lm, class[j][1],5)) == 0
601
+ && size(reduce(class[j][1], Lm,5)) == 0)
602
+ {
603
+ class[j][2] = class[j][2]+1;
604
+ class[j][3][class[j][2]] = i;
605
+ break;
606
+ }
607
+ }
608
+ if(j > sizeClass)
609
+ {
610
+ sizeClass++;
611
+ class[sizeClass]=list();
612
+ class[sizeClass][1]=Lm;
613
+ class[sizeClass][2]=1;
614
+ class[sizeClass][3]=list(i);
615
+ }
616
+ }
617
+ int classMax = 1;
618
+ int max = class[1][2];
619
+ for (i = 2; i <= sizeClass; i++)
620
+ {
621
+ if (class[i][2] > max)
622
+ {
623
+ ClassMax = i;
624
+ max = class[i][2];
625
+ }
626
+ }
627
+ list unluckyIndices;
628
+ for (i = 1; i <= sizeClass; i++)
629
+ {
630
+ if (i != classMax)
631
+ {
632
+ unluckyIndices = unluckyIndices + class[i][3];
633
+ }
634
+ }
635
+ for (i = size(unluckyIndices); i > 0; i--)
636
+ {
637
+ T = delete(T, unluckyIndices[i]);
638
+ L = delete(L, unluckyIndices[i]);
639
+ }
640
+ return(T,L);
641
+ }
642
+
643
+ static proc PTestGB(ideal I, ideal J, list L, int ncores)
644
+ "USAGE: PTestGB(I, J, L, ncores); I, J ideals, L intvec of primes
645
+ RETURN: 1 (respectively 0) if for a randomly chosen prime p which is not in L
646
+ J mod p is (respectively is not) a Groebner basis of I mod p.
647
+ "
648
+ {
649
+ int i,k,p;
650
+ int ptest;
651
+ def R = basering;
652
+ list r = ringlist(R);
653
+ int nvar = nvars(basering);
654
+ matrix commrelC = UpOneMatrix(nvar);
655
+ matrix commrelD[nvar][nvar];
656
+ if (size(r) == 6)
657
+ {
658
+ commrelC = r[5];
659
+ commrelD = r[6];
660
+ }
661
+ // matrix commrelC = r[5];
662
+ // matrix commrelD = r[6];
663
+ while(!ptest)
664
+ {
665
+ ptest = 1;
666
+ p = prime(random(1000000000,2134567879));
667
+ for(i = 1; i <= size(L); i++)
668
+ {
669
+ if(p == L[i])
670
+ {
671
+ ptest = 0;
672
+ break;
673
+ }
674
+ }
675
+ if(!PrimeTestCommutatorRel(p))
676
+ {
677
+ ptest = 0;
678
+ }
679
+ if(ptest)
680
+ {
681
+ for(i = 1; i <= ncols(J); i++)
682
+ {
683
+ for(k = 2; k <= size(J[i]); k++)
684
+ {
685
+ if((bigint(denominator(leadcoef(J[i][k]))) mod p) == 0)
686
+ {
687
+ ptest = 0;
688
+ break;
689
+ }
690
+ }
691
+ if(!ptest)
692
+ {
693
+ break;
694
+ }
695
+ }
696
+ }
697
+ if(ptest)
698
+ {
699
+ if(!PrimeTestId(I,p) )
700
+ {
701
+ ptest = 0;
702
+ }
703
+ }
704
+ }
705
+ r[1] = p;
706
+ def @RR = ring(r);
707
+ setring @RR;
708
+ list rr=ringlist(@RR);
709
+ rr[5]=imap(R,commrelC);
710
+ rr[6]=imap(R,commrelD);
711
+ def @R=ring(rr);
712
+ setring @R;
713
+ kill @RR;
714
+
715
+ ideal I = imap(R,I);
716
+ ideal J = imap(R, J);
717
+ attrib(J,"isSB",1);
718
+ ptest = 1;
719
+ //if(IsIncluded(I,J,ncores) == 0)
720
+ if(IsIncludedseq(I, J) == 0)
721
+ {
722
+ ptest = 0;
723
+ }
724
+
725
+ if(ptest)
726
+ {
727
+ ideal K = slimgb(I);
728
+ // if(IsIncludedseq(J, K,ncores) == 0)
729
+ if(IsIncludedseq(J, K) == 0)
730
+ {
731
+ ptest = 0;
732
+ }
733
+ }
734
+ setring R;
735
+ return(ptest);
736
+ }
737
+
738
+ proc IsIncludedseq(ideal I, ideal J, list #)
739
+ "USAGE: IsIncludedseq(I,J), where I, J are ideals
740
+ RETURN: 1 if J includes I, 0 if there is a generating element f of I which
741
+ does not reduce to 0 with respect to J. The set of generators of J
742
+ should be a Groebner basis otherwise the result might not be correct.
743
+ {
744
+ int i, k;
745
+ int ncores = 1;
746
+ //def R = basering;
747
+ //setring R;
748
+ attrib(J,"isSB",1);
749
+
750
+ /*if( size(#) == 1)
751
+ {
752
+ if(typeof(#[1]) == "int")
753
+ {
754
+ ncores = #[1];
755
+ }
756
+ }*/
757
+ //sequential reduction
758
+ //if(ncores==1)
759
+ //{
760
+ for(k = 1; k <= ncols(I); k++)
761
+ {
762
+ if(reduce(I[k],J,1) != 0)
763
+ {
764
+ return(0);
765
+ }
766
+ }
767
+ return(1);
768
+ // }
769
+
770
+ //parallel reduction
771
+ /*
772
+ else
773
+ {
774
+ list args,results;
775
+ for(k = 1; k <= ncols(I); k++)
776
+ {
777
+ args[k] = list(ideal(I[k]),J,1);
778
+ }
779
+ option(notWarnSB);
780
+ results = parallelWaitAll("reduce",args, 0, ncores);
781
+ for(k=1; k <= size(results); k++)
782
+ {
783
+ if(results[k] != 0)
784
+ {
785
+ return(0);
786
+ }
787
+ }
788
+ return(1);
789
+ }*/
790
+ }
791
+ //===========================================================