passagemath-singular 10.6.31rc3__cp314-cp314-musllinux_1_2_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 (493) hide show
  1. PySingular.cpython-314-x86_64-linux-musl.so +0 -0
  2. passagemath_singular-10.6.31rc3.dist-info/METADATA +183 -0
  3. passagemath_singular-10.6.31rc3.dist-info/RECORD +493 -0
  4. passagemath_singular-10.6.31rc3.dist-info/WHEEL +5 -0
  5. passagemath_singular-10.6.31rc3.dist-info/top_level.txt +3 -0
  6. passagemath_singular.libs/libSingular-4-67059f19.4.1.so +0 -0
  7. passagemath_singular.libs/libcddgmp-30166d29.so.0.1.3 +0 -0
  8. passagemath_singular.libs/libfactory-4-9d37bcf4.4.1.so +0 -0
  9. passagemath_singular.libs/libflint-fd6f12fc.so.21.0.0 +0 -0
  10. passagemath_singular.libs/libgcc_s-0cd532bd.so.1 +0 -0
  11. passagemath_singular.libs/libgf2x-9e30c3e3.so.3.0.0 +0 -0
  12. passagemath_singular.libs/libgfortran-2c33b284.so.5.0.0 +0 -0
  13. passagemath_singular.libs/libgmp-0e7fc84e.so.10.5.0 +0 -0
  14. passagemath_singular.libs/libgsl-42cda06f.so.28.0.0 +0 -0
  15. passagemath_singular.libs/libmpfr-aaecbfc0.so.6.2.1 +0 -0
  16. passagemath_singular.libs/libncursesw-9c9e32c3.so.6.5 +0 -0
  17. passagemath_singular.libs/libntl-26885ca2.so.44.0.1 +0 -0
  18. passagemath_singular.libs/libomalloc-0-e9ff96db.9.6.so +0 -0
  19. passagemath_singular.libs/libopenblasp-r0-905cb27d.3.29.so +0 -0
  20. passagemath_singular.libs/libpolys-4-8bcf8e7d.4.1.so +0 -0
  21. passagemath_singular.libs/libquadmath-bb76a5fc.so.0.0.0 +0 -0
  22. passagemath_singular.libs/libreadline-06542304.so.8.2 +0 -0
  23. passagemath_singular.libs/libsingular_resources-4-73bf7623.4.1.so +0 -0
  24. passagemath_singular.libs/libstdc++-5d72f927.so.6.0.33 +0 -0
  25. sage/algebras/all__sagemath_singular.py +3 -0
  26. sage/algebras/fusion_rings/all.py +19 -0
  27. sage/algebras/fusion_rings/f_matrix.py +2448 -0
  28. sage/algebras/fusion_rings/fast_parallel_fmats_methods.cpython-314-x86_64-linux-musl.so +0 -0
  29. sage/algebras/fusion_rings/fast_parallel_fmats_methods.pxd +5 -0
  30. sage/algebras/fusion_rings/fast_parallel_fmats_methods.pyx +538 -0
  31. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.cpython-314-x86_64-linux-musl.so +0 -0
  32. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pxd +3 -0
  33. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pyx +331 -0
  34. sage/algebras/fusion_rings/fusion_double.py +899 -0
  35. sage/algebras/fusion_rings/fusion_ring.py +1580 -0
  36. sage/algebras/fusion_rings/poly_tup_engine.cpython-314-x86_64-linux-musl.so +0 -0
  37. sage/algebras/fusion_rings/poly_tup_engine.pxd +24 -0
  38. sage/algebras/fusion_rings/poly_tup_engine.pyx +579 -0
  39. sage/algebras/fusion_rings/shm_managers.cpython-314-x86_64-linux-musl.so +0 -0
  40. sage/algebras/fusion_rings/shm_managers.pxd +24 -0
  41. sage/algebras/fusion_rings/shm_managers.pyx +780 -0
  42. sage/algebras/letterplace/all.py +1 -0
  43. sage/algebras/letterplace/free_algebra_element_letterplace.cpython-314-x86_64-linux-musl.so +0 -0
  44. sage/algebras/letterplace/free_algebra_element_letterplace.pxd +18 -0
  45. sage/algebras/letterplace/free_algebra_element_letterplace.pyx +755 -0
  46. sage/algebras/letterplace/free_algebra_letterplace.cpython-314-x86_64-linux-musl.so +0 -0
  47. sage/algebras/letterplace/free_algebra_letterplace.pxd +35 -0
  48. sage/algebras/letterplace/free_algebra_letterplace.pyx +914 -0
  49. sage/algebras/letterplace/letterplace_ideal.cpython-314-x86_64-linux-musl.so +0 -0
  50. sage/algebras/letterplace/letterplace_ideal.pyx +408 -0
  51. sage/algebras/quatalg/all.py +2 -0
  52. sage/algebras/quatalg/quaternion_algebra.py +4778 -0
  53. sage/algebras/quatalg/quaternion_algebra_cython.cpython-314-x86_64-linux-musl.so +0 -0
  54. sage/algebras/quatalg/quaternion_algebra_cython.pyx +261 -0
  55. sage/algebras/quatalg/quaternion_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  56. sage/algebras/quatalg/quaternion_algebra_element.pxd +29 -0
  57. sage/algebras/quatalg/quaternion_algebra_element.pyx +2176 -0
  58. sage/all__sagemath_singular.py +11 -0
  59. sage/ext_data/all__sagemath_singular.py +1 -0
  60. sage/ext_data/singular/function_field/core.lib +98 -0
  61. sage/interfaces/all__sagemath_singular.py +1 -0
  62. sage/interfaces/singular.py +2835 -0
  63. sage/libs/all__sagemath_singular.py +1 -0
  64. sage/libs/singular/__init__.py +1 -0
  65. sage/libs/singular/decl.pxd +1168 -0
  66. sage/libs/singular/function.cpython-314-x86_64-linux-musl.so +0 -0
  67. sage/libs/singular/function.pxd +87 -0
  68. sage/libs/singular/function.pyx +1901 -0
  69. sage/libs/singular/function_factory.py +61 -0
  70. sage/libs/singular/groebner_strategy.cpython-314-x86_64-linux-musl.so +0 -0
  71. sage/libs/singular/groebner_strategy.pxd +22 -0
  72. sage/libs/singular/groebner_strategy.pyx +582 -0
  73. sage/libs/singular/option.cpython-314-x86_64-linux-musl.so +0 -0
  74. sage/libs/singular/option.pyx +671 -0
  75. sage/libs/singular/polynomial.cpython-314-x86_64-linux-musl.so +0 -0
  76. sage/libs/singular/polynomial.pxd +39 -0
  77. sage/libs/singular/polynomial.pyx +661 -0
  78. sage/libs/singular/ring.cpython-314-x86_64-linux-musl.so +0 -0
  79. sage/libs/singular/ring.pxd +58 -0
  80. sage/libs/singular/ring.pyx +893 -0
  81. sage/libs/singular/singular.cpython-314-x86_64-linux-musl.so +0 -0
  82. sage/libs/singular/singular.pxd +72 -0
  83. sage/libs/singular/singular.pyx +1944 -0
  84. sage/libs/singular/standard_options.py +145 -0
  85. sage/matrix/all__sagemath_singular.py +1 -0
  86. sage/matrix/matrix_mpolynomial_dense.cpython-314-x86_64-linux-musl.so +0 -0
  87. sage/matrix/matrix_mpolynomial_dense.pxd +7 -0
  88. sage/matrix/matrix_mpolynomial_dense.pyx +615 -0
  89. sage/rings/all__sagemath_singular.py +1 -0
  90. sage/rings/function_field/all__sagemath_singular.py +1 -0
  91. sage/rings/function_field/derivations_polymod.py +911 -0
  92. sage/rings/function_field/element_polymod.cpython-314-x86_64-linux-musl.so +0 -0
  93. sage/rings/function_field/element_polymod.pyx +406 -0
  94. sage/rings/function_field/function_field_polymod.py +2611 -0
  95. sage/rings/function_field/ideal_polymod.py +1775 -0
  96. sage/rings/function_field/order_polymod.py +1475 -0
  97. sage/rings/function_field/place_polymod.py +681 -0
  98. sage/rings/polynomial/all__sagemath_singular.py +1 -0
  99. sage/rings/polynomial/multi_polynomial_ideal_libsingular.cpython-314-x86_64-linux-musl.so +0 -0
  100. sage/rings/polynomial/multi_polynomial_ideal_libsingular.pxd +5 -0
  101. sage/rings/polynomial/multi_polynomial_ideal_libsingular.pyx +339 -0
  102. sage/rings/polynomial/multi_polynomial_libsingular.cpython-314-x86_64-linux-musl.so +0 -0
  103. sage/rings/polynomial/multi_polynomial_libsingular.pxd +30 -0
  104. sage/rings/polynomial/multi_polynomial_libsingular.pyx +6277 -0
  105. sage/rings/polynomial/plural.cpython-314-x86_64-linux-musl.so +0 -0
  106. sage/rings/polynomial/plural.pxd +48 -0
  107. sage/rings/polynomial/plural.pyx +3171 -0
  108. sage/symbolic/all__sagemath_singular.py +1 -0
  109. sage/symbolic/comparison_impl.pxi +428 -0
  110. sage/symbolic/constants_c_impl.pxi +178 -0
  111. sage/symbolic/expression.cpython-314-x86_64-linux-musl.so +0 -0
  112. sage/symbolic/expression.pxd +7 -0
  113. sage/symbolic/expression.pyx +14200 -0
  114. sage/symbolic/getitem_impl.pxi +202 -0
  115. sage/symbolic/pynac.pxi +572 -0
  116. sage/symbolic/pynac_constant_impl.pxi +133 -0
  117. sage/symbolic/pynac_function_impl.pxi +206 -0
  118. sage/symbolic/pynac_impl.pxi +2576 -0
  119. sage/symbolic/pynac_wrap.h +124 -0
  120. sage/symbolic/series_impl.pxi +272 -0
  121. sage/symbolic/substitution_map_impl.pxi +94 -0
  122. sage_wheels/bin/ESingular +0 -0
  123. sage_wheels/bin/Singular +0 -0
  124. sage_wheels/bin/TSingular +0 -0
  125. sage_wheels/lib/singular/MOD/cohomo.la +41 -0
  126. sage_wheels/lib/singular/MOD/cohomo.so +0 -0
  127. sage_wheels/lib/singular/MOD/customstd.la +41 -0
  128. sage_wheels/lib/singular/MOD/customstd.so +0 -0
  129. sage_wheels/lib/singular/MOD/freealgebra.la +41 -0
  130. sage_wheels/lib/singular/MOD/freealgebra.so +0 -0
  131. sage_wheels/lib/singular/MOD/gfanlib.la +41 -0
  132. sage_wheels/lib/singular/MOD/gfanlib.so +0 -0
  133. sage_wheels/lib/singular/MOD/gitfan.la +41 -0
  134. sage_wheels/lib/singular/MOD/gitfan.so +0 -0
  135. sage_wheels/lib/singular/MOD/interval.la +41 -0
  136. sage_wheels/lib/singular/MOD/interval.so +0 -0
  137. sage_wheels/lib/singular/MOD/loctriv.la +41 -0
  138. sage_wheels/lib/singular/MOD/loctriv.so +0 -0
  139. sage_wheels/lib/singular/MOD/machinelearning.la +41 -0
  140. sage_wheels/lib/singular/MOD/machinelearning.so +0 -0
  141. sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.la +41 -0
  142. sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.so +0 -0
  143. sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.la +41 -0
  144. sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.so +0 -0
  145. sage_wheels/lib/singular/MOD/p_Procs_FieldQ.la +41 -0
  146. sage_wheels/lib/singular/MOD/p_Procs_FieldQ.so +0 -0
  147. sage_wheels/lib/singular/MOD/p_Procs_FieldZp.la +41 -0
  148. sage_wheels/lib/singular/MOD/p_Procs_FieldZp.so +0 -0
  149. sage_wheels/lib/singular/MOD/partialgb.la +41 -0
  150. sage_wheels/lib/singular/MOD/partialgb.so +0 -0
  151. sage_wheels/lib/singular/MOD/pyobject.la +41 -0
  152. sage_wheels/lib/singular/MOD/pyobject.so +0 -0
  153. sage_wheels/lib/singular/MOD/singmathic.la +41 -0
  154. sage_wheels/lib/singular/MOD/singmathic.so +0 -0
  155. sage_wheels/lib/singular/MOD/sispasm.la +41 -0
  156. sage_wheels/lib/singular/MOD/sispasm.so +0 -0
  157. sage_wheels/lib/singular/MOD/subsets.la +41 -0
  158. sage_wheels/lib/singular/MOD/subsets.so +0 -0
  159. sage_wheels/lib/singular/MOD/systhreads.la +41 -0
  160. sage_wheels/lib/singular/MOD/systhreads.so +0 -0
  161. sage_wheels/lib/singular/MOD/syzextra.la +41 -0
  162. sage_wheels/lib/singular/MOD/syzextra.so +0 -0
  163. sage_wheels/libexec/singular/MOD/change_cost +0 -0
  164. sage_wheels/libexec/singular/MOD/singularsurf +11 -0
  165. sage_wheels/libexec/singular/MOD/singularsurf_jupyter +9 -0
  166. sage_wheels/libexec/singular/MOD/singularsurf_win +10 -0
  167. sage_wheels/libexec/singular/MOD/solve_IP +0 -0
  168. sage_wheels/libexec/singular/MOD/surfex +16 -0
  169. sage_wheels/libexec/singular/MOD/toric_ideal +0 -0
  170. sage_wheels/share/factory/gftables/10201 +342 -0
  171. sage_wheels/share/factory/gftables/1024 +37 -0
  172. sage_wheels/share/factory/gftables/10609 +356 -0
  173. sage_wheels/share/factory/gftables/11449 +384 -0
  174. sage_wheels/share/factory/gftables/11881 +398 -0
  175. sage_wheels/share/factory/gftables/121 +6 -0
  176. sage_wheels/share/factory/gftables/12167 +408 -0
  177. sage_wheels/share/factory/gftables/125 +7 -0
  178. sage_wheels/share/factory/gftables/12769 +428 -0
  179. sage_wheels/share/factory/gftables/128 +7 -0
  180. sage_wheels/share/factory/gftables/1331 +47 -0
  181. sage_wheels/share/factory/gftables/1369 +48 -0
  182. sage_wheels/share/factory/gftables/14641 +490 -0
  183. sage_wheels/share/factory/gftables/15625 +523 -0
  184. sage_wheels/share/factory/gftables/16 +3 -0
  185. sage_wheels/share/factory/gftables/16129 +540 -0
  186. sage_wheels/share/factory/gftables/16384 +549 -0
  187. sage_wheels/share/factory/gftables/16807 +563 -0
  188. sage_wheels/share/factory/gftables/1681 +58 -0
  189. sage_wheels/share/factory/gftables/169 +8 -0
  190. sage_wheels/share/factory/gftables/17161 +574 -0
  191. sage_wheels/share/factory/gftables/1849 +64 -0
  192. sage_wheels/share/factory/gftables/18769 +628 -0
  193. sage_wheels/share/factory/gftables/19321 +646 -0
  194. sage_wheels/share/factory/gftables/19683 +659 -0
  195. sage_wheels/share/factory/gftables/2048 +71 -0
  196. sage_wheels/share/factory/gftables/2187 +75 -0
  197. sage_wheels/share/factory/gftables/2197 +76 -0
  198. sage_wheels/share/factory/gftables/2209 +76 -0
  199. sage_wheels/share/factory/gftables/22201 +742 -0
  200. sage_wheels/share/factory/gftables/22801 +762 -0
  201. sage_wheels/share/factory/gftables/2401 +82 -0
  202. sage_wheels/share/factory/gftables/243 +11 -0
  203. sage_wheels/share/factory/gftables/24389 +815 -0
  204. sage_wheels/share/factory/gftables/24649 +824 -0
  205. sage_wheels/share/factory/gftables/25 +3 -0
  206. sage_wheels/share/factory/gftables/256 +11 -0
  207. sage_wheels/share/factory/gftables/26569 +888 -0
  208. sage_wheels/share/factory/gftables/27 +3 -0
  209. sage_wheels/share/factory/gftables/27889 +932 -0
  210. sage_wheels/share/factory/gftables/2809 +96 -0
  211. sage_wheels/share/factory/gftables/28561 +954 -0
  212. sage_wheels/share/factory/gftables/289 +12 -0
  213. sage_wheels/share/factory/gftables/29791 +995 -0
  214. sage_wheels/share/factory/gftables/29929 +1000 -0
  215. sage_wheels/share/factory/gftables/3125 +107 -0
  216. sage_wheels/share/factory/gftables/32 +4 -0
  217. sage_wheels/share/factory/gftables/32041 +1070 -0
  218. sage_wheels/share/factory/gftables/32761 +1094 -0
  219. sage_wheels/share/factory/gftables/32768 +1095 -0
  220. sage_wheels/share/factory/gftables/343 +14 -0
  221. sage_wheels/share/factory/gftables/3481 +118 -0
  222. sage_wheels/share/factory/gftables/361 +14 -0
  223. sage_wheels/share/factory/gftables/36481 +1218 -0
  224. sage_wheels/share/factory/gftables/3721 +126 -0
  225. sage_wheels/share/factory/gftables/37249 +1244 -0
  226. sage_wheels/share/factory/gftables/38809 +1296 -0
  227. sage_wheels/share/factory/gftables/39601 +1322 -0
  228. sage_wheels/share/factory/gftables/4 +3 -0
  229. sage_wheels/share/factory/gftables/4096 +139 -0
  230. sage_wheels/share/factory/gftables/44521 +1486 -0
  231. sage_wheels/share/factory/gftables/4489 +152 -0
  232. sage_wheels/share/factory/gftables/49 +4 -0
  233. sage_wheels/share/factory/gftables/4913 +166 -0
  234. sage_wheels/share/factory/gftables/49729 +1660 -0
  235. sage_wheels/share/factory/gftables/5041 +170 -0
  236. sage_wheels/share/factory/gftables/50653 +1691 -0
  237. sage_wheels/share/factory/gftables/512 +20 -0
  238. sage_wheels/share/factory/gftables/51529 +1720 -0
  239. sage_wheels/share/factory/gftables/52441 +1750 -0
  240. sage_wheels/share/factory/gftables/529 +20 -0
  241. sage_wheels/share/factory/gftables/5329 +180 -0
  242. sage_wheels/share/factory/gftables/54289 +1812 -0
  243. sage_wheels/share/factory/gftables/57121 +1906 -0
  244. sage_wheels/share/factory/gftables/58081 +1938 -0
  245. sage_wheels/share/factory/gftables/59049 +1971 -0
  246. sage_wheels/share/factory/gftables/6241 +210 -0
  247. sage_wheels/share/factory/gftables/625 +23 -0
  248. sage_wheels/share/factory/gftables/63001 +2102 -0
  249. sage_wheels/share/factory/gftables/64 +5 -0
  250. sage_wheels/share/factory/gftables/6561 +221 -0
  251. sage_wheels/share/factory/gftables/6859 +231 -0
  252. sage_wheels/share/factory/gftables/6889 +232 -0
  253. sage_wheels/share/factory/gftables/729 +27 -0
  254. sage_wheels/share/factory/gftables/7921 +266 -0
  255. sage_wheels/share/factory/gftables/8 +3 -0
  256. sage_wheels/share/factory/gftables/81 +5 -0
  257. sage_wheels/share/factory/gftables/8192 +276 -0
  258. sage_wheels/share/factory/gftables/841 +30 -0
  259. sage_wheels/share/factory/gftables/9 +3 -0
  260. sage_wheels/share/factory/gftables/9409 +316 -0
  261. sage_wheels/share/factory/gftables/961 +34 -0
  262. sage_wheels/share/info/singular.info +191898 -0
  263. sage_wheels/share/singular/LIB/GND.lib +1359 -0
  264. sage_wheels/share/singular/LIB/JMBTest.lib +976 -0
  265. sage_wheels/share/singular/LIB/JMSConst.lib +1363 -0
  266. sage_wheels/share/singular/LIB/KVequiv.lib +699 -0
  267. sage_wheels/share/singular/LIB/SingularityDBM.lib +491 -0
  268. sage_wheels/share/singular/LIB/VecField.lib +1542 -0
  269. sage_wheels/share/singular/LIB/absfact.lib +959 -0
  270. sage_wheels/share/singular/LIB/ainvar.lib +730 -0
  271. sage_wheels/share/singular/LIB/aksaka.lib +419 -0
  272. sage_wheels/share/singular/LIB/alexpoly.lib +2542 -0
  273. sage_wheels/share/singular/LIB/algebra.lib +1193 -0
  274. sage_wheels/share/singular/LIB/all.lib +136 -0
  275. sage_wheels/share/singular/LIB/arcpoint.lib +514 -0
  276. sage_wheels/share/singular/LIB/arnold.lib +4553 -0
  277. sage_wheels/share/singular/LIB/arnoldclassify.lib +2058 -0
  278. sage_wheels/share/singular/LIB/arr.lib +3486 -0
  279. sage_wheels/share/singular/LIB/assprimeszerodim.lib +755 -0
  280. sage_wheels/share/singular/LIB/autgradalg.lib +3361 -0
  281. sage_wheels/share/singular/LIB/bfun.lib +1964 -0
  282. sage_wheels/share/singular/LIB/bimodules.lib +774 -0
  283. sage_wheels/share/singular/LIB/brillnoether.lib +226 -0
  284. sage_wheels/share/singular/LIB/brnoeth.lib +5017 -0
  285. sage_wheels/share/singular/LIB/central.lib +2169 -0
  286. sage_wheels/share/singular/LIB/chern.lib +4162 -0
  287. sage_wheels/share/singular/LIB/cimonom.lib +571 -0
  288. sage_wheels/share/singular/LIB/cisimplicial.lib +1835 -0
  289. sage_wheels/share/singular/LIB/classify.lib +3239 -0
  290. sage_wheels/share/singular/LIB/classify2.lib +1462 -0
  291. sage_wheels/share/singular/LIB/classifyMapGerms.lib +1515 -0
  292. sage_wheels/share/singular/LIB/classify_aeq.lib +3253 -0
  293. sage_wheels/share/singular/LIB/classifyceq.lib +2092 -0
  294. sage_wheels/share/singular/LIB/classifyci.lib +1133 -0
  295. sage_wheels/share/singular/LIB/combinat.lib +91 -0
  296. sage_wheels/share/singular/LIB/compregb.lib +276 -0
  297. sage_wheels/share/singular/LIB/control.lib +1636 -0
  298. sage_wheels/share/singular/LIB/crypto.lib +3795 -0
  299. sage_wheels/share/singular/LIB/curveInv.lib +667 -0
  300. sage_wheels/share/singular/LIB/curvepar.lib +1817 -0
  301. sage_wheels/share/singular/LIB/customstd.lib +100 -0
  302. sage_wheels/share/singular/LIB/deRham.lib +5979 -0
  303. sage_wheels/share/singular/LIB/decodegb.lib +2134 -0
  304. sage_wheels/share/singular/LIB/decomp.lib +1655 -0
  305. sage_wheels/share/singular/LIB/deflation.lib +872 -0
  306. sage_wheels/share/singular/LIB/deform.lib +925 -0
  307. sage_wheels/share/singular/LIB/difform.lib +3055 -0
  308. sage_wheels/share/singular/LIB/divisors.lib +750 -0
  309. sage_wheels/share/singular/LIB/dmod.lib +5817 -0
  310. sage_wheels/share/singular/LIB/dmodapp.lib +3269 -0
  311. sage_wheels/share/singular/LIB/dmodideal.lib +1211 -0
  312. sage_wheels/share/singular/LIB/dmodloc.lib +2645 -0
  313. sage_wheels/share/singular/LIB/dmodvar.lib +818 -0
  314. sage_wheels/share/singular/LIB/dummy.lib +17 -0
  315. sage_wheels/share/singular/LIB/elim.lib +1009 -0
  316. sage_wheels/share/singular/LIB/ellipticcovers.lib +548 -0
  317. sage_wheels/share/singular/LIB/enumpoints.lib +146 -0
  318. sage_wheels/share/singular/LIB/equising.lib +2127 -0
  319. sage_wheels/share/singular/LIB/ffmodstd.lib +2384 -0
  320. sage_wheels/share/singular/LIB/ffsolve.lib +1289 -0
  321. sage_wheels/share/singular/LIB/findifs.lib +778 -0
  322. sage_wheels/share/singular/LIB/finitediff.lib +1768 -0
  323. sage_wheels/share/singular/LIB/finvar.lib +7989 -0
  324. sage_wheels/share/singular/LIB/fpadim.lib +2429 -0
  325. sage_wheels/share/singular/LIB/fpalgebras.lib +1666 -0
  326. sage_wheels/share/singular/LIB/fpaprops.lib +1462 -0
  327. sage_wheels/share/singular/LIB/freegb.lib +3853 -0
  328. sage_wheels/share/singular/LIB/general.lib +1350 -0
  329. sage_wheels/share/singular/LIB/gfan.lib +1768 -0
  330. sage_wheels/share/singular/LIB/gitfan.lib +3130 -0
  331. sage_wheels/share/singular/LIB/gkdim.lib +99 -0
  332. sage_wheels/share/singular/LIB/gmspoly.lib +589 -0
  333. sage_wheels/share/singular/LIB/gmssing.lib +1739 -0
  334. sage_wheels/share/singular/LIB/goettsche.lib +909 -0
  335. sage_wheels/share/singular/LIB/graal.lib +1366 -0
  336. sage_wheels/share/singular/LIB/gradedModules.lib +2541 -0
  337. sage_wheels/share/singular/LIB/graphics.lib +360 -0
  338. sage_wheels/share/singular/LIB/grobcov.lib +7706 -0
  339. sage_wheels/share/singular/LIB/groups.lib +1123 -0
  340. sage_wheels/share/singular/LIB/grwalk.lib +507 -0
  341. sage_wheels/share/singular/LIB/hdepth.lib +194 -0
  342. sage_wheels/share/singular/LIB/help.cnf +57 -0
  343. sage_wheels/share/singular/LIB/hess.lib +1946 -0
  344. sage_wheels/share/singular/LIB/hnoether.lib +4292 -0
  345. sage_wheels/share/singular/LIB/hodge.lib +400 -0
  346. sage_wheels/share/singular/LIB/homolog.lib +1965 -0
  347. sage_wheels/share/singular/LIB/hyperel.lib +975 -0
  348. sage_wheels/share/singular/LIB/inout.lib +679 -0
  349. sage_wheels/share/singular/LIB/integralbasis.lib +6224 -0
  350. sage_wheels/share/singular/LIB/interval.lib +1418 -0
  351. sage_wheels/share/singular/LIB/intprog.lib +778 -0
  352. sage_wheels/share/singular/LIB/invar.lib +443 -0
  353. sage_wheels/share/singular/LIB/involut.lib +980 -0
  354. sage_wheels/share/singular/LIB/jacobson.lib +1215 -0
  355. sage_wheels/share/singular/LIB/kskernel.lib +534 -0
  356. sage_wheels/share/singular/LIB/latex.lib +3146 -0
  357. sage_wheels/share/singular/LIB/lejeune.lib +651 -0
  358. sage_wheels/share/singular/LIB/linalg.lib +2040 -0
  359. sage_wheels/share/singular/LIB/locnormal.lib +212 -0
  360. sage_wheels/share/singular/LIB/lrcalc.lib +526 -0
  361. sage_wheels/share/singular/LIB/makedbm.lib +294 -0
  362. sage_wheels/share/singular/LIB/mathml.lib +813 -0
  363. sage_wheels/share/singular/LIB/matrix.lib +1372 -0
  364. sage_wheels/share/singular/LIB/maxlike.lib +1132 -0
  365. sage_wheels/share/singular/LIB/methods.lib +212 -0
  366. sage_wheels/share/singular/LIB/moddiq.lib +322 -0
  367. sage_wheels/share/singular/LIB/modfinduni.lib +181 -0
  368. sage_wheels/share/singular/LIB/modnormal.lib +218 -0
  369. sage_wheels/share/singular/LIB/modprimdec.lib +1278 -0
  370. sage_wheels/share/singular/LIB/modquotient.lib +269 -0
  371. sage_wheels/share/singular/LIB/modstd.lib +1024 -0
  372. sage_wheels/share/singular/LIB/modular.lib +545 -0
  373. sage_wheels/share/singular/LIB/modules.lib +2561 -0
  374. sage_wheels/share/singular/LIB/modwalk.lib +609 -0
  375. sage_wheels/share/singular/LIB/mondromy.lib +1016 -0
  376. sage_wheels/share/singular/LIB/monomialideal.lib +3851 -0
  377. sage_wheels/share/singular/LIB/mprimdec.lib +2353 -0
  378. sage_wheels/share/singular/LIB/mregular.lib +1863 -0
  379. sage_wheels/share/singular/LIB/multigrading.lib +5629 -0
  380. sage_wheels/share/singular/LIB/ncHilb.lib +777 -0
  381. sage_wheels/share/singular/LIB/ncModslimgb.lib +791 -0
  382. sage_wheels/share/singular/LIB/ncalg.lib +16311 -0
  383. sage_wheels/share/singular/LIB/ncall.lib +31 -0
  384. sage_wheels/share/singular/LIB/ncdecomp.lib +468 -0
  385. sage_wheels/share/singular/LIB/ncfactor.lib +13371 -0
  386. sage_wheels/share/singular/LIB/ncfrac.lib +1023 -0
  387. sage_wheels/share/singular/LIB/nchilbert.lib +448 -0
  388. sage_wheels/share/singular/LIB/nchomolog.lib +759 -0
  389. sage_wheels/share/singular/LIB/ncloc.lib +361 -0
  390. sage_wheels/share/singular/LIB/ncpreim.lib +795 -0
  391. sage_wheels/share/singular/LIB/ncrat.lib +2849 -0
  392. sage_wheels/share/singular/LIB/nctools.lib +1887 -0
  393. sage_wheels/share/singular/LIB/nets.lib +1456 -0
  394. sage_wheels/share/singular/LIB/nfmodstd.lib +1000 -0
  395. sage_wheels/share/singular/LIB/nfmodsyz.lib +732 -0
  396. sage_wheels/share/singular/LIB/noether.lib +1106 -0
  397. sage_wheels/share/singular/LIB/normal.lib +8700 -0
  398. sage_wheels/share/singular/LIB/normaliz.lib +2226 -0
  399. sage_wheels/share/singular/LIB/ntsolve.lib +362 -0
  400. sage_wheels/share/singular/LIB/numerAlg.lib +560 -0
  401. sage_wheels/share/singular/LIB/numerDecom.lib +2261 -0
  402. sage_wheels/share/singular/LIB/olga.lib +1933 -0
  403. sage_wheels/share/singular/LIB/orbitparam.lib +351 -0
  404. sage_wheels/share/singular/LIB/parallel.lib +319 -0
  405. sage_wheels/share/singular/LIB/paraplanecurves.lib +3110 -0
  406. sage_wheels/share/singular/LIB/perron.lib +202 -0
  407. sage_wheels/share/singular/LIB/pfd.lib +2223 -0
  408. sage_wheels/share/singular/LIB/phindex.lib +642 -0
  409. sage_wheels/share/singular/LIB/pointid.lib +673 -0
  410. sage_wheels/share/singular/LIB/polybori.lib +1430 -0
  411. sage_wheels/share/singular/LIB/polyclass.lib +525 -0
  412. sage_wheels/share/singular/LIB/polylib.lib +1174 -0
  413. sage_wheels/share/singular/LIB/polymake.lib +1902 -0
  414. sage_wheels/share/singular/LIB/presolve.lib +1533 -0
  415. sage_wheels/share/singular/LIB/primdec.lib +9576 -0
  416. sage_wheels/share/singular/LIB/primdecint.lib +1782 -0
  417. sage_wheels/share/singular/LIB/primitiv.lib +401 -0
  418. sage_wheels/share/singular/LIB/puiseuxexpansions.lib +1631 -0
  419. sage_wheels/share/singular/LIB/purityfiltration.lib +960 -0
  420. sage_wheels/share/singular/LIB/qhmoduli.lib +1561 -0
  421. sage_wheels/share/singular/LIB/qmatrix.lib +293 -0
  422. sage_wheels/share/singular/LIB/random.lib +455 -0
  423. sage_wheels/share/singular/LIB/ratgb.lib +489 -0
  424. sage_wheels/share/singular/LIB/realclassify.lib +5759 -0
  425. sage_wheels/share/singular/LIB/realizationMatroids.lib +772 -0
  426. sage_wheels/share/singular/LIB/realrad.lib +1197 -0
  427. sage_wheels/share/singular/LIB/recover.lib +2628 -0
  428. sage_wheels/share/singular/LIB/redcgs.lib +3984 -0
  429. sage_wheels/share/singular/LIB/reesclos.lib +465 -0
  430. sage_wheels/share/singular/LIB/resbinomial.lib +2802 -0
  431. sage_wheels/share/singular/LIB/resgraph.lib +789 -0
  432. sage_wheels/share/singular/LIB/resjung.lib +820 -0
  433. sage_wheels/share/singular/LIB/resolve.lib +5110 -0
  434. sage_wheels/share/singular/LIB/resources.lib +170 -0
  435. sage_wheels/share/singular/LIB/reszeta.lib +5473 -0
  436. sage_wheels/share/singular/LIB/ring.lib +1328 -0
  437. sage_wheels/share/singular/LIB/ringgb.lib +343 -0
  438. sage_wheels/share/singular/LIB/rinvar.lib +1153 -0
  439. sage_wheels/share/singular/LIB/rootisolation.lib +1481 -0
  440. sage_wheels/share/singular/LIB/rootsmr.lib +709 -0
  441. sage_wheels/share/singular/LIB/rootsur.lib +886 -0
  442. sage_wheels/share/singular/LIB/rstandard.lib +607 -0
  443. sage_wheels/share/singular/LIB/rwalk.lib +336 -0
  444. sage_wheels/share/singular/LIB/sagbi.lib +1353 -0
  445. sage_wheels/share/singular/LIB/sagbiNormaliz.lib +1622 -0
  446. sage_wheels/share/singular/LIB/sagbiNormaliz0.lib +1498 -0
  447. sage_wheels/share/singular/LIB/sagbigrob.lib +449 -0
  448. sage_wheels/share/singular/LIB/schreyer.lib +321 -0
  449. sage_wheels/share/singular/LIB/schubert.lib +2551 -0
  450. sage_wheels/share/singular/LIB/sets.lib +524 -0
  451. sage_wheels/share/singular/LIB/sheafcoh.lib +1663 -0
  452. sage_wheels/share/singular/LIB/signcond.lib +437 -0
  453. sage_wheels/share/singular/LIB/sing.lib +1094 -0
  454. sage_wheels/share/singular/LIB/sing4ti2.lib +419 -0
  455. sage_wheels/share/singular/LIB/solve.lib +2243 -0
  456. sage_wheels/share/singular/LIB/spcurve.lib +1077 -0
  457. sage_wheels/share/singular/LIB/spectrum.lib +62 -0
  458. sage_wheels/share/singular/LIB/sresext.lib +757 -0
  459. sage_wheels/share/singular/LIB/ssi.lib +143 -0
  460. sage_wheels/share/singular/LIB/standard.lib +2769 -0
  461. sage_wheels/share/singular/LIB/stanleyreisner.lib +473 -0
  462. sage_wheels/share/singular/LIB/stdmodule.lib +547 -0
  463. sage_wheels/share/singular/LIB/stratify.lib +1070 -0
  464. sage_wheels/share/singular/LIB/surf.lib +506 -0
  465. sage_wheels/share/singular/LIB/surf_jupyter.lib +223 -0
  466. sage_wheels/share/singular/LIB/surfacesignature.lib +522 -0
  467. sage_wheels/share/singular/LIB/surfex.lib +1462 -0
  468. sage_wheels/share/singular/LIB/swalk.lib +877 -0
  469. sage_wheels/share/singular/LIB/symodstd.lib +1570 -0
  470. sage_wheels/share/singular/LIB/systhreads.lib +74 -0
  471. sage_wheels/share/singular/LIB/tasks.lib +1324 -0
  472. sage_wheels/share/singular/LIB/tateProdCplxNegGrad.lib +2412 -0
  473. sage_wheels/share/singular/LIB/teachstd.lib +858 -0
  474. sage_wheels/share/singular/LIB/template.lib +116 -0
  475. sage_wheels/share/singular/LIB/toric.lib +1119 -0
  476. sage_wheels/share/singular/LIB/transformation.lib +116 -0
  477. sage_wheels/share/singular/LIB/triang.lib +1197 -0
  478. sage_wheels/share/singular/LIB/tropical.lib +8741 -0
  479. sage_wheels/share/singular/LIB/tropicalEllipticCovers.lib +2922 -0
  480. sage_wheels/share/singular/LIB/tropicalNewton.lib +1128 -0
  481. sage_wheels/share/singular/LIB/tst.lib +1108 -0
  482. sage_wheels/share/singular/LIB/weierstr.lib +241 -0
  483. sage_wheels/share/singular/LIB/zeroset.lib +1478 -0
  484. sage_wheels/share/singular/emacs/.emacs-general +184 -0
  485. sage_wheels/share/singular/emacs/.emacs-singular +234 -0
  486. sage_wheels/share/singular/emacs/COPYING +44 -0
  487. sage_wheels/share/singular/emacs/cmd-cmpl.el +241 -0
  488. sage_wheels/share/singular/emacs/ex-cmpl.el +1681 -0
  489. sage_wheels/share/singular/emacs/hlp-cmpl.el +4318 -0
  490. sage_wheels/share/singular/emacs/lib-cmpl.el +179 -0
  491. sage_wheels/share/singular/emacs/singular.el +4273 -0
  492. sage_wheels/share/singular/emacs/singular.xpm +39 -0
  493. sage_wheels/share/singular/singular.idx +5002 -0
@@ -0,0 +1,61 @@
1
+ # sage_setup: distribution = sagemath-singular
2
+ """
3
+ libSingular: Function Factory
4
+
5
+ AUTHORS:
6
+
7
+ - Martin Albrecht (2010-01): initial version
8
+ """
9
+ # ****************************************************************************
10
+ # Copyright (C) 2010 Martin Albrecht <M.R.Albrecht@rhul.ac.uk>
11
+ #
12
+ # Distributed under the terms of the GNU General Public License (GPL)
13
+ # https://www.gnu.org/licenses/
14
+ # ****************************************************************************
15
+
16
+ from sage.libs.singular.function import singular_function, lib, list_of_functions
17
+
18
+
19
+ class SingularFunctionFactory:
20
+ """
21
+ A convenient interface to libsingular functions.
22
+ """
23
+ def __getattr__(self, name):
24
+ """
25
+ EXAMPLES::
26
+
27
+ sage: import sage.libs.singular.function_factory
28
+ sage: groebner = sage.libs.singular.function_factory.ff.groebner
29
+ sage: groebner
30
+ groebner (singular function)
31
+
32
+ sage: import sage.libs.singular.function_factory
33
+ sage: primdecSY = sage.libs.singular.function_factory.ff.primdec__lib.primdecSY
34
+ sage: primdecSY
35
+ primdecSY (singular function)
36
+ """
37
+ if name.startswith("_"):
38
+ raise AttributeError("Singular Function Factory has no attribute '%s'" % name)
39
+
40
+ try:
41
+ return singular_function(name)
42
+ except NameError:
43
+ if name.endswith("__lib"):
44
+ name = name[:-5]
45
+ lib(name + ".lib")
46
+ return SingularFunctionFactory()
47
+ else:
48
+ raise NameError("function or package '%s' unknown." % (name))
49
+
50
+ def __dir__(self):
51
+ """
52
+ EXAMPLES::
53
+
54
+ sage: import sage.libs.singular.function_factory
55
+ sage: "groebner" in sage.libs.singular.function_factory.ff.__dir__()
56
+ True
57
+ """
58
+ return list_of_functions()
59
+
60
+
61
+ ff = SingularFunctionFactory()
@@ -0,0 +1,22 @@
1
+ # sage_setup: distribution = sagemath-singular
2
+ from sage.libs.singular.decl cimport skStrategy, ring
3
+
4
+ from sage.rings.polynomial.multi_polynomial_libsingular cimport \
5
+ MPolynomialRing_libsingular, MPolynomial_libsingular
6
+ from sage.structure.sage_object cimport SageObject
7
+ from sage.rings.polynomial.plural cimport NCPolynomialRing_plural, NCPolynomial_plural
8
+
9
+ cdef class GroebnerStrategy(SageObject):
10
+ cdef skStrategy *_strat
11
+ cdef ring *_parent_ring
12
+ cdef MPolynomialRing_libsingular _parent
13
+ cdef object _ideal
14
+
15
+ cpdef MPolynomial_libsingular normal_form(self, MPolynomial_libsingular p)
16
+
17
+ cdef class NCGroebnerStrategy(SageObject):
18
+ cdef skStrategy *_strat
19
+ cdef NCPolynomialRing_plural _parent
20
+ cdef object _ideal
21
+
22
+ cpdef NCPolynomial_plural normal_form(self, NCPolynomial_plural p)
@@ -0,0 +1,582 @@
1
+ # sage_setup: distribution = sagemath-singular
2
+ """
3
+ Singular's Groebner Strategy Objects
4
+
5
+ AUTHORS:
6
+
7
+ - Martin Albrecht (2009-07): initial implementation
8
+ - Michael Brickenstein (2009-07): initial implementation
9
+ - Hans Schoenemann (2009-07): initial implementation
10
+ """
11
+
12
+ #*****************************************************************************
13
+ # Copyright (C) 2009 Martin Albrecht <M.R.Albrecht@rhul.ac.uk>
14
+ # Copyright (C) 2009 Michael Brickenstein <brickenstein@mfo.de>
15
+ # Copyright (C) 2009 Hans Schoenemann <hannes@mathematik.uni-kl.de>
16
+ #
17
+ # Distributed under the terms of the GNU General Public License (GPL)
18
+ # http://www.gnu.org/licenses/
19
+ #*****************************************************************************
20
+
21
+ cdef extern from *: # hack to get at cython macro
22
+ int unlikely(int)
23
+ int likely(int)
24
+
25
+ from sage.structure.richcmp cimport richcmp
26
+ from sage.libs.singular.decl cimport ideal, ring, poly, currRing
27
+ from sage.libs.singular.decl cimport rChangeCurrRing
28
+ from sage.libs.singular.decl cimport new_skStrategy, delete_skStrategy, id_RankFreeModule
29
+ from sage.libs.singular.decl cimport initEcartBBA, enterSBba, initBuchMoraCrit, initS, pNorm, id_Delete, kTest
30
+ from sage.libs.singular.decl cimport omfree, redNF, p_Copy, redtailBba
31
+
32
+ from sage.libs.singular.ring cimport singular_ring_reference, singular_ring_delete
33
+
34
+ from sage.rings.polynomial.multi_polynomial_ideal import MPolynomialIdeal, NCPolynomialIdeal
35
+ from sage.rings.polynomial.multi_polynomial_ideal_libsingular cimport sage_ideal_to_singular_ideal
36
+ from sage.rings.polynomial.multi_polynomial_libsingular cimport MPolynomial_libsingular, MPolynomialRing_libsingular, new_MP
37
+ from sage.rings.polynomial.plural cimport new_NCP
38
+
39
+ cdef class GroebnerStrategy(SageObject):
40
+ """
41
+ A Wrapper for Singular's Groebner Strategy Object.
42
+
43
+ This object provides functions for normal form computations and
44
+ other functions for Groebner basis computation.
45
+
46
+ ALGORITHM:
47
+
48
+ Uses Singular via libSINGULAR
49
+ """
50
+ def __cinit__(self, L):
51
+ """
52
+ Create a new :class:`GroebnerStrategy` object for the
53
+ generators of the ideal ``L``.
54
+
55
+ INPUT:
56
+
57
+ - ``L`` -- a multivariate polynomial ideal
58
+
59
+ EXAMPLES::
60
+
61
+ sage: from sage.libs.singular.groebner_strategy import GroebnerStrategy
62
+ sage: P.<x,y,z> = PolynomialRing(QQ)
63
+ sage: I = Ideal([x+z,y+z+1])
64
+ sage: strat = GroebnerStrategy(I); strat
65
+ Groebner Strategy for ideal generated by 2 elements
66
+ over Multivariate Polynomial Ring in x, y, z over Rational Field
67
+
68
+ TESTS::
69
+
70
+ sage: from sage.libs.singular.groebner_strategy import GroebnerStrategy
71
+ sage: strat = GroebnerStrategy(None)
72
+ Traceback (most recent call last):
73
+ ...
74
+ TypeError: First parameter must be a multivariate polynomial ideal.
75
+
76
+ sage: P.<x,y,z> = PolynomialRing(QQ,order='neglex')
77
+ sage: I = Ideal([x+z,y+z+1])
78
+ sage: strat = GroebnerStrategy(I)
79
+ Traceback (most recent call last):
80
+ ...
81
+ NotImplementedError: The local case is not implemented yet.
82
+
83
+ sage: P.<x,y,z> = PolynomialRing(CC,order='neglex')
84
+ sage: I = Ideal([x+z,y+z+1])
85
+ sage: strat = GroebnerStrategy(I)
86
+ Traceback (most recent call last):
87
+ ...
88
+ TypeError: First parameter's ring must be multivariate polynomial ring via libsingular.
89
+
90
+ sage: P.<x,y,z> = PolynomialRing(ZZ)
91
+ sage: I = Ideal([x+z,y+z+1])
92
+ sage: strat = GroebnerStrategy(I)
93
+ Traceback (most recent call last):
94
+ ...
95
+ NotImplementedError: Only coefficient fields are implemented so far.
96
+
97
+ Check that :issue:`27508` is fixed::
98
+
99
+ sage: R2.<x,y> = PolynomialRing(QQ, 2, order='lex')
100
+ sage: I2 = R2.ideal(["x^2 - x", "y^2 - y"])
101
+ sage: R2("x^2 + y").mod(I2), R2("x + y^2").mod(I2)
102
+ (x + y, x + y)
103
+ """
104
+ if not isinstance(L, MPolynomialIdeal):
105
+ raise TypeError("First parameter must be a multivariate polynomial ideal.")
106
+
107
+ if not isinstance(L.ring(), MPolynomialRing_libsingular):
108
+ raise TypeError("First parameter's ring must be multivariate polynomial ring via libsingular.")
109
+
110
+ self._ideal = L
111
+
112
+ cdef MPolynomialRing_libsingular R = <MPolynomialRing_libsingular>L.ring()
113
+ self._parent = R
114
+ self._parent_ring = singular_ring_reference(R._ring)
115
+
116
+ if not R.term_order().is_global():
117
+ raise NotImplementedError("The local case is not implemented yet.")
118
+
119
+ if not R.base_ring().is_field():
120
+ raise NotImplementedError("Only coefficient fields are implemented so far.")
121
+
122
+ if (R._ring != currRing):
123
+ rChangeCurrRing(R._ring)
124
+
125
+ cdef ideal *i = sage_ideal_to_singular_ideal(L)
126
+ self._strat = new_skStrategy()
127
+
128
+ self._strat.ak = id_RankFreeModule(i, R._ring)
129
+ #- creating temp data structures
130
+ initBuchMoraCrit(self._strat)
131
+ self._strat.initEcart = initEcartBBA
132
+ self._strat.enterS = enterSBba
133
+ #- set S
134
+ self._strat.sl = -1
135
+ #- init local data struct
136
+ initS(i, NULL, self._strat)
137
+ self._strat.noTailReduction = False
138
+
139
+ cdef int j
140
+ cdef bint base_ring_is_field = R.base_ring().is_field()
141
+ if (R._ring != currRing):
142
+ rChangeCurrRing(R._ring)
143
+ if base_ring_is_field:
144
+ for j in range(self._strat.sl, -1, -1):
145
+ pNorm(self._strat.S[j])
146
+
147
+ id_Delete(&i, R._ring)
148
+ kTest(self._strat)
149
+
150
+ def __dealloc__(self):
151
+ """
152
+ TESTS::
153
+
154
+ sage: from sage.libs.singular.groebner_strategy import GroebnerStrategy
155
+ sage: P.<x,y,z> = PolynomialRing(GF(32003))
156
+ sage: I = Ideal([x + z, y + z])
157
+ sage: strat = GroebnerStrategy(I)
158
+ sage: del strat
159
+ """
160
+ # WARNING: the Cython class self._parent is no longer accessible!
161
+ # see https://github.com/sagemath/sage/issues/11339
162
+ cdef ring *oldRing = NULL
163
+ if self._strat:
164
+ omfree(self._strat.sevS)
165
+ omfree(self._strat.ecartS)
166
+ omfree(self._strat.T)
167
+ omfree(self._strat.sevT)
168
+ omfree(self._strat.R)
169
+ omfree(self._strat.S_2_R)
170
+ omfree(self._strat.L)
171
+ omfree(self._strat.B)
172
+ omfree(self._strat.fromQ)
173
+ id_Delete(&self._strat.Shdl, self._parent_ring)
174
+
175
+ if self._parent_ring != currRing:
176
+ oldRing = currRing
177
+ rChangeCurrRing(self._parent_ring)
178
+ delete_skStrategy(self._strat)
179
+ rChangeCurrRing(oldRing)
180
+ else:
181
+ delete_skStrategy(self._strat)
182
+ if self._parent_ring:
183
+ singular_ring_delete(self._parent_ring)
184
+
185
+ def _repr_(self) -> str:
186
+ """
187
+ TESTS::
188
+
189
+ sage: from sage.libs.singular.groebner_strategy import GroebnerStrategy
190
+ sage: P.<x,y,z> = PolynomialRing(GF(32003))
191
+ sage: I = Ideal([x + z, y + z])
192
+ sage: strat = GroebnerStrategy(I)
193
+ sage: strat # indirect doctest
194
+ Groebner Strategy for ideal generated by 2 elements over
195
+ Multivariate Polynomial Ring in x, y, z over Finite Field of size 32003
196
+ """
197
+ return "Groebner Strategy for ideal generated by %d elements over %s" % (self._ideal.ngens(), self._parent)
198
+
199
+ def ideal(self):
200
+ """
201
+ Return the ideal this strategy object is defined for.
202
+
203
+ EXAMPLES::
204
+
205
+ sage: from sage.libs.singular.groebner_strategy import GroebnerStrategy
206
+ sage: P.<x,y,z> = PolynomialRing(GF(32003))
207
+ sage: I = Ideal([x + z, y + z])
208
+ sage: strat = GroebnerStrategy(I)
209
+ sage: strat.ideal()
210
+ Ideal (x + z, y + z) of Multivariate Polynomial Ring in x, y, z over Finite Field of size 32003
211
+ """
212
+ return self._ideal
213
+
214
+ def ring(self):
215
+ """
216
+ Return the ring this strategy object is defined over.
217
+
218
+ EXAMPLES::
219
+
220
+ sage: from sage.libs.singular.groebner_strategy import GroebnerStrategy
221
+ sage: P.<x,y,z> = PolynomialRing(GF(32003))
222
+ sage: I = Ideal([x + z, y + z])
223
+ sage: strat = GroebnerStrategy(I)
224
+ sage: strat.ring()
225
+ Multivariate Polynomial Ring in x, y, z over Finite Field of size 32003
226
+ """
227
+ return self._parent
228
+
229
+ def __richcmp__(self, other, op):
230
+ """
231
+ EXAMPLES::
232
+
233
+ sage: from sage.libs.singular.groebner_strategy import GroebnerStrategy
234
+ sage: P.<x,y,z> = PolynomialRing(GF(19))
235
+ sage: I = Ideal([P(0)])
236
+ sage: strat = GroebnerStrategy(I)
237
+ sage: strat == GroebnerStrategy(I)
238
+ True
239
+ sage: I = Ideal([x+1,y+z])
240
+ sage: strat == GroebnerStrategy(I)
241
+ False
242
+ """
243
+ try:
244
+ lx = <GroebnerStrategy?>self
245
+ rx = <GroebnerStrategy?>other
246
+ except TypeError:
247
+ return NotImplemented
248
+ return richcmp(lx._ideal.gens(),
249
+ rx._ideal.gens(), op)
250
+
251
+ def __reduce__(self):
252
+ """
253
+ EXAMPLES::
254
+
255
+ sage: from sage.libs.singular.groebner_strategy import GroebnerStrategy
256
+ sage: P.<x,y,z> = PolynomialRing(GF(32003))
257
+ sage: I = Ideal([x + z, y + z])
258
+ sage: strat = GroebnerStrategy(I)
259
+ sage: loads(dumps(strat)) == strat
260
+ True
261
+ """
262
+ return unpickle_GroebnerStrategy0, (self._ideal,)
263
+
264
+ cpdef MPolynomial_libsingular normal_form(self, MPolynomial_libsingular p):
265
+ """
266
+ Compute the normal form of ``p`` with respect to the
267
+ generators of this object.
268
+
269
+ EXAMPLES::
270
+
271
+ sage: from sage.libs.singular.groebner_strategy import GroebnerStrategy
272
+ sage: P.<x,y,z> = PolynomialRing(QQ)
273
+ sage: I = Ideal([x + z, y + z])
274
+ sage: strat = GroebnerStrategy(I)
275
+ sage: strat.normal_form(x*y) # indirect doctest
276
+ z^2
277
+ sage: strat.normal_form(x + 1)
278
+ -z + 1
279
+
280
+ TESTS::
281
+
282
+ sage: from sage.libs.singular.groebner_strategy import GroebnerStrategy
283
+ sage: P.<x,y,z> = PolynomialRing(QQ)
284
+ sage: I = Ideal([P(0)])
285
+ sage: strat = GroebnerStrategy(I)
286
+ sage: strat.normal_form(x)
287
+ x
288
+ sage: strat.normal_form(P(0))
289
+ 0
290
+ """
291
+ if unlikely(p._parent is not self._parent):
292
+ raise TypeError("parent(p) must be the same as this object's parent.")
293
+ if unlikely(self._parent._ring != currRing):
294
+ rChangeCurrRing(self._parent._ring)
295
+
296
+ cdef int max_ind = 0
297
+ cdef poly *_p = redNF(p_Copy(p._poly, self._parent._ring), max_ind, 0, self._strat)
298
+ if likely(_p!=NULL):
299
+ _p = redtailBba(_p, max_ind, self._strat)
300
+ return new_MP(self._parent, _p)
301
+
302
+ cdef class NCGroebnerStrategy(SageObject):
303
+ """
304
+ A Wrapper for Singular's Groebner Strategy Object.
305
+
306
+ This object provides functions for normal form computations and
307
+ other functions for Groebner basis computation.
308
+
309
+ ALGORITHM:
310
+
311
+ Uses Singular via libSINGULAR
312
+ """
313
+ def __init__(self, L):
314
+ """
315
+ Create a new :class:`GroebnerStrategy` object for the
316
+ generators of the ideal ``L``.
317
+
318
+ INPUT:
319
+
320
+ - ``L`` -- an ideal in a g-algebra
321
+
322
+ EXAMPLES::
323
+
324
+ sage: from sage.libs.singular.groebner_strategy import NCGroebnerStrategy
325
+
326
+ sage: # needs sage.combinat
327
+ sage: A.<x,y,z> = FreeAlgebra(QQ, 3)
328
+ sage: H.<x,y,z> = A.g_algebra({y*x:x*y-z, z*x:x*z+2*x, z*y:y*z-2*y})
329
+ sage: I = H.ideal([y^2, x^2, z^2-H.one()])
330
+ sage: NCGroebnerStrategy(I) #random
331
+ Groebner Strategy for ideal generated by 3 elements over Noncommutative Multivariate Polynomial Ring in x, y, z over Rational Field, nc-relations: {z*x: x*z + 2*x, z*y: y*z - 2*y, y*x: x*y - z}
332
+
333
+ TESTS::
334
+
335
+ sage: strat = NCGroebnerStrategy(None)
336
+ Traceback (most recent call last):
337
+ ...
338
+ TypeError: First parameter must be an ideal in a g-algebra.
339
+
340
+ sage: P.<x,y,z> = PolynomialRing(CC,order='neglex')
341
+ sage: I = Ideal([x+z,y+z+1])
342
+ sage: strat = NCGroebnerStrategy(I)
343
+ Traceback (most recent call last):
344
+ ...
345
+ TypeError: First parameter must be an ideal in a g-algebra.
346
+
347
+ Check that tail reduction is applied too::
348
+
349
+ sage: # needs sage.combinat
350
+ sage: F = PolynomialRing(QQ,'t').fraction_field()
351
+ sage: FA = FreeAlgebra(F, 6, 'x1,x2,x3,x4,x5,x6')
352
+ sage: N = FA.g_algebra({FA.gen(j)*FA.gen(i):-FA.gen(i)*FA.gen(j) for i in range(5) for j in range(i+1,6)})
353
+ sage: I = N.ideal([g^2 for g in N.gens()],side='twosided')
354
+ sage: N.inject_variables()
355
+ Defining x1, x2, x3, x4, x5, x6
356
+ sage: I.reduce(x1*x2*x3 + x2^2*x4)
357
+ x1*x2*x3
358
+ """
359
+ if not isinstance(L, NCPolynomialIdeal):
360
+ raise TypeError("First parameter must be an ideal in a g-algebra.")
361
+
362
+ if not isinstance(L.ring(), NCPolynomialRing_plural):
363
+ raise TypeError("First parameter's ring must be a g-algebra.")
364
+
365
+ self._ideal = L
366
+
367
+ cdef NCPolynomialRing_plural R = <NCPolynomialRing_plural>L.ring()
368
+ self._parent = R
369
+
370
+ if not R.term_order().is_global():
371
+ raise NotImplementedError("The local case is not implemented yet.")
372
+
373
+ if not R.base_ring().is_field():
374
+ raise NotImplementedError("Only coefficient fields are implemented so far.")
375
+
376
+ if (R._ring != currRing):
377
+ rChangeCurrRing(R._ring)
378
+
379
+ cdef ideal *i = sage_ideal_to_singular_ideal(L)
380
+ self._strat = new_skStrategy()
381
+
382
+ self._strat.ak = id_RankFreeModule(i, R._ring)
383
+ #- creating temp data structures
384
+ initBuchMoraCrit(self._strat)
385
+ self._strat.initEcart = initEcartBBA
386
+ self._strat.enterS = enterSBba
387
+ #- set S
388
+ self._strat.sl = -1
389
+ self._strat.noTailReduction = False
390
+ #- init local data struct
391
+ initS(i, NULL, self._strat)
392
+
393
+ cdef int j
394
+ if R.base_ring().is_field():
395
+ for j in range(self._strat.sl,-1,-1):
396
+ pNorm(self._strat.S[j])
397
+
398
+ id_Delete(&i, R._ring)
399
+ kTest(self._strat)
400
+
401
+ def __dealloc__(self):
402
+ """
403
+ TESTS::
404
+
405
+ sage: # needs sage.combinat
406
+ sage: from sage.libs.singular.groebner_strategy import NCGroebnerStrategy
407
+ sage: A.<x,y,z> = FreeAlgebra(QQ, 3)
408
+ sage: H.<x,y,z> = A.g_algebra({y*x:x*y-z, z*x:x*z+2*x, z*y:y*z-2*y})
409
+ sage: I = H.ideal([y^2, x^2, z^2-H.one()])
410
+ sage: strat = NCGroebnerStrategy(I)
411
+ sage: del strat # indirect doctest
412
+ """
413
+ cdef ring *oldRing = NULL
414
+ if self._strat:
415
+ omfree(self._strat.sevS)
416
+ omfree(self._strat.ecartS)
417
+ omfree(self._strat.T)
418
+ omfree(self._strat.sevT)
419
+ omfree(self._strat.R)
420
+ omfree(self._strat.S_2_R)
421
+ omfree(self._strat.L)
422
+ omfree(self._strat.B)
423
+ omfree(self._strat.fromQ)
424
+ id_Delete(&self._strat.Shdl, self._parent._ring)
425
+
426
+ if self._parent._ring != currRing:
427
+ oldRing = currRing
428
+ rChangeCurrRing(self._parent._ring)
429
+ delete_skStrategy(self._strat)
430
+ rChangeCurrRing(oldRing)
431
+ else:
432
+ delete_skStrategy(self._strat)
433
+
434
+ def _repr_(self):
435
+ """
436
+ TESTS::
437
+
438
+ sage: # needs sage.combinat
439
+ sage: from sage.libs.singular.groebner_strategy import NCGroebnerStrategy
440
+ sage: A.<x,y,z> = FreeAlgebra(QQ, 3)
441
+ sage: H.<x,y,z> = A.g_algebra({y*x:x*y-z, z*x:x*z+2*x, z*y:y*z-2*y})
442
+ sage: I = H.ideal([y^2, x^2, z^2-H.one()])
443
+ sage: strat = NCGroebnerStrategy(I)
444
+ sage: strat # indirect doctest #random
445
+ Groebner Strategy for ideal generated by 3 elements over Noncommutative Multivariate Polynomial Ring in x, y, z over Rational Field, nc-relations: {z*x: x*z + 2*x, z*y: y*z - 2*y, y*x: x*y - z}
446
+ """
447
+ return "Groebner Strategy for ideal generated by %d elements over %s" % (self._ideal.ngens(), self._parent)
448
+
449
+ def ideal(self):
450
+ """
451
+ Return the ideal this strategy object is defined for.
452
+
453
+ EXAMPLES::
454
+
455
+ sage: # needs sage.combinat
456
+ sage: from sage.libs.singular.groebner_strategy import NCGroebnerStrategy
457
+ sage: A.<x,y,z> = FreeAlgebra(QQ, 3)
458
+ sage: H.<x,y,z> = A.g_algebra({y*x:x*y-z, z*x:x*z+2*x, z*y:y*z-2*y})
459
+ sage: I = H.ideal([y^2, x^2, z^2-H.one()])
460
+ sage: strat = NCGroebnerStrategy(I)
461
+ sage: strat.ideal() == I
462
+ True
463
+ """
464
+ return self._ideal
465
+
466
+ def ring(self):
467
+ """
468
+ Return the ring this strategy object is defined over.
469
+
470
+ EXAMPLES::
471
+
472
+ sage: # needs sage.combinat
473
+ sage: from sage.libs.singular.groebner_strategy import NCGroebnerStrategy
474
+ sage: A.<x,y,z> = FreeAlgebra(QQ, 3)
475
+ sage: H.<x,y,z> = A.g_algebra({y*x:x*y-z, z*x:x*z+2*x, z*y:y*z-2*y})
476
+ sage: I = H.ideal([y^2, x^2, z^2-H.one()])
477
+ sage: strat = NCGroebnerStrategy(I)
478
+ sage: strat.ring() is H
479
+ True
480
+ """
481
+ return self._parent
482
+
483
+ def __richcmp__(self, other, op):
484
+ """
485
+ EXAMPLES::
486
+
487
+ sage: # needs sage.combinat
488
+ sage: from sage.libs.singular.groebner_strategy import NCGroebnerStrategy
489
+ sage: A.<x,y,z> = FreeAlgebra(QQ, 3)
490
+ sage: H.<x,y,z> = A.g_algebra({y*x:x*y-z, z*x:x*z+2*x, z*y:y*z-2*y})
491
+ sage: I = H.ideal([y^2, x^2, z^2-H.one()])
492
+ sage: strat = NCGroebnerStrategy(I)
493
+ sage: strat == NCGroebnerStrategy(I)
494
+ True
495
+ sage: I = H.ideal([y^2, x^2, z^2-H.one()], side='twosided')
496
+ sage: strat == NCGroebnerStrategy(I)
497
+ False
498
+ """
499
+ try:
500
+ lx = <NCGroebnerStrategy?>self
501
+ rx = <NCGroebnerStrategy?>other
502
+ except TypeError:
503
+ return NotImplemented
504
+ return richcmp((lx._ideal.gens(), lx._ideal.side()),
505
+ (rx._ideal.gens(), rx._ideal.side()), op)
506
+
507
+ def __reduce__(self):
508
+ """
509
+ EXAMPLES::
510
+
511
+ sage: # needs sage.combinat
512
+ sage: from sage.libs.singular.groebner_strategy import NCGroebnerStrategy
513
+ sage: A.<x,y,z> = FreeAlgebra(QQ, 3)
514
+ sage: H.<x,y,z> = A.g_algebra({y*x:x*y-z, z*x:x*z+2*x, z*y:y*z-2*y})
515
+ sage: I = H.ideal([y^2, x^2, z^2-H.one()])
516
+ sage: strat = NCGroebnerStrategy(I)
517
+ sage: loads(dumps(strat)) == strat
518
+ True
519
+ """
520
+ return unpickle_NCGroebnerStrategy0, (self._ideal,)
521
+
522
+ cpdef NCPolynomial_plural normal_form(self, NCPolynomial_plural p):
523
+ """
524
+ Compute the normal form of ``p`` with respect to the
525
+ generators of this object.
526
+
527
+ EXAMPLES::
528
+
529
+ sage: # needs sage.combinat
530
+ sage: A.<x,y,z> = FreeAlgebra(QQ, 3)
531
+ sage: H.<x,y,z> = A.g_algebra({y*x:x*y-z, z*x:x*z+2*x, z*y:y*z-2*y})
532
+ sage: JL = H.ideal([x^3, y^3, z^3 - 4*z])
533
+ sage: JT = H.ideal([x^3, y^3, z^3 - 4*z], side='twosided')
534
+ sage: from sage.libs.singular.groebner_strategy import NCGroebnerStrategy
535
+ sage: SL = NCGroebnerStrategy(JL.std())
536
+ sage: ST = NCGroebnerStrategy(JT.std())
537
+ sage: SL.normal_form(x*y^2)
538
+ x*y^2
539
+ sage: ST.normal_form(x*y^2)
540
+ y*z
541
+ """
542
+ if unlikely(p._parent is not self._parent):
543
+ raise TypeError("parent(p) must be the same as this object's parent.")
544
+ if unlikely(self._parent._ring != currRing):
545
+ rChangeCurrRing(self._parent._ring)
546
+
547
+ cdef int max_ind = 0
548
+ cdef poly *_p = redNF(p_Copy(p._poly, self._parent._ring), max_ind, 0, self._strat)
549
+ if likely(_p!=NULL):
550
+ _p = redtailBba(_p, max_ind, self._strat)
551
+ return new_NCP(self._parent, _p)
552
+
553
+
554
+ def unpickle_NCGroebnerStrategy0(I):
555
+ """
556
+ EXAMPLES::
557
+
558
+ sage: # needs sage.combinat
559
+ sage: from sage.libs.singular.groebner_strategy import NCGroebnerStrategy
560
+ sage: A.<x,y,z> = FreeAlgebra(QQ, 3)
561
+ sage: H.<x,y,z> = A.g_algebra({y*x:x*y-z, z*x:x*z+2*x, z*y:y*z-2*y})
562
+ sage: I = H.ideal([y^2, x^2, z^2-H.one()])
563
+ sage: strat = NCGroebnerStrategy(I)
564
+ sage: loads(dumps(strat)) == strat # indirect doctest
565
+ True
566
+ """
567
+ return NCGroebnerStrategy(I)
568
+
569
+
570
+ def unpickle_GroebnerStrategy0(I):
571
+ """
572
+ EXAMPLES::
573
+
574
+ sage: # needs sage.rings.finite_rings
575
+ sage: from sage.libs.singular.groebner_strategy import GroebnerStrategy
576
+ sage: P.<x,y,z> = PolynomialRing(GF(32003))
577
+ sage: I = Ideal([x + z, y + z])
578
+ sage: strat = GroebnerStrategy(I)
579
+ sage: loads(dumps(strat)) == strat # indirect doctest
580
+ True
581
+ """
582
+ return GroebnerStrategy(I)