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,408 @@
1
+ # sage_setup: distribution = sagemath-singular
2
+ """
3
+ Homogeneous ideals of free algebras
4
+
5
+ For twosided ideals and when the base ring is a field, this implementation
6
+ also provides Groebner bases and ideal containment tests.
7
+
8
+ EXAMPLES::
9
+
10
+ sage: F.<x,y,z> = FreeAlgebra(QQ, implementation='letterplace')
11
+ sage: F
12
+ Free Associative Unital Algebra on 3 generators (x, y, z) over Rational Field
13
+ sage: I = F*[x*y+y*z,x^2+x*y-y*x-y^2]*F
14
+ sage: I
15
+ Twosided Ideal (x*y + y*z, x*x + x*y - y*x - y*y) of Free Associative Unital Algebra on 3 generators (x, y, z) over Rational Field
16
+
17
+ One can compute Groebner bases out to a finite degree, can compute normal
18
+ forms and can test containment in the ideal::
19
+
20
+ sage: I.groebner_basis(degbound=3)
21
+ Twosided Ideal (x*y + y*z,
22
+ x*x - y*x - y*y - y*z,
23
+ y*y*y - y*y*z + y*z*y - y*z*z,
24
+ y*y*x + y*y*z + y*z*x + y*z*z) of Free Associative Unital Algebra
25
+ on 3 generators (x, y, z) over Rational Field
26
+ sage: (x*y*z*y*x).normal_form(I)
27
+ y*z*z*y*z + y*z*z*z*x + y*z*z*z*z
28
+ sage: x*y*z*y*x - (x*y*z*y*x).normal_form(I) in I
29
+ True
30
+
31
+ AUTHOR:
32
+
33
+ - Simon King (2011-03-22): See :issue:`7797`.
34
+ """
35
+ # ****************************************************************************
36
+ # Copyright (C) 2011 Simon King <simon.king@uni-jena.de>
37
+ #
38
+ # This program is free software: you can redistribute it and/or modify
39
+ # it under the terms of the GNU General Public License as published by
40
+ # the Free Software Foundation, either version 2 of the License, or
41
+ # (at your option) any later version.
42
+ # https://www.gnu.org/licenses/
43
+ # ****************************************************************************
44
+ from sage.rings.noncommutative_ideals import Ideal_nc
45
+ from sage.libs.singular.function import lib
46
+ from sage.algebras.letterplace.free_algebra_letterplace cimport FreeAlgebra_letterplace, FreeAlgebra_letterplace_libsingular
47
+ from sage.algebras.letterplace.free_algebra_element_letterplace cimport FreeAlgebraElement_letterplace
48
+ from sage.rings.infinity import Infinity
49
+
50
+ #####################
51
+ # Define some singular functions
52
+ lib("freegb.lib")
53
+
54
+
55
+ class LetterplaceIdeal(Ideal_nc):
56
+ """
57
+ Graded homogeneous ideals in free algebras.
58
+
59
+ In the two-sided case over a field, one can compute Groebner bases
60
+ up to a degree bound, normal forms of graded homogeneous elements
61
+ of the free algebra, and ideal containment.
62
+
63
+ EXAMPLES::
64
+
65
+ sage: F.<x,y,z> = FreeAlgebra(QQ, implementation='letterplace')
66
+ sage: I = F*[x*y+y*z,x^2+x*y-y*x-y^2]*F
67
+ sage: I
68
+ Twosided Ideal (x*y + y*z, x*x + x*y - y*x - y*y) of Free Associative Unital Algebra on 3 generators (x, y, z) over Rational Field
69
+ sage: I.groebner_basis(2)
70
+ Twosided Ideal (x*y + y*z, x*x - y*x - y*y - y*z) of Free Associative Unital Algebra on 3 generators (x, y, z) over Rational Field
71
+ sage: I.groebner_basis(4)
72
+ Twosided Ideal (x*y + y*z,
73
+ x*x - y*x - y*y - y*z,
74
+ y*y*y - y*y*z + y*z*y - y*z*z,
75
+ y*y*x + y*y*z + y*z*x + y*z*z,
76
+ y*y*z*y - y*y*z*z + y*z*z*y - y*z*z*z,
77
+ y*z*y*y - y*z*y*z + y*z*z*y - y*z*z*z,
78
+ y*y*z*x + y*y*z*z + y*z*z*x + y*z*z*z,
79
+ y*z*y*x + y*z*y*z + y*z*z*x + y*z*z*z) of Free Associative Unital
80
+ Algebra on 3 generators (x, y, z) over Rational Field
81
+
82
+ Groebner bases are cached. If one has computed a Groebner basis
83
+ out to a high degree then it will also be returned if a Groebner
84
+ basis with a lower degree bound is requested::
85
+
86
+ sage: I.groebner_basis(2) is I.groebner_basis(4)
87
+ True
88
+
89
+ Of course, the normal form of any element has to satisfy the following::
90
+
91
+ sage: x*y*z*y*x - (x*y*z*y*x).normal_form(I) in I
92
+ True
93
+
94
+ Left and right ideals can be constructed, but only twosided ideals provide
95
+ Groebner bases::
96
+
97
+ sage: JL = F*[x*y+y*z,x^2+x*y-y*x-y^2]; JL
98
+ Left Ideal (x*y + y*z, x*x + x*y - y*x - y*y) of Free Associative Unital Algebra on 3 generators (x, y, z) over Rational Field
99
+ sage: JR = [x*y+y*z,x^2+x*y-y*x-y^2]*F; JR
100
+ Right Ideal (x*y + y*z, x*x + x*y - y*x - y*y) of Free Associative Unital Algebra on 3 generators (x, y, z) over Rational Field
101
+ sage: JR.groebner_basis(2)
102
+ Traceback (most recent call last):
103
+ ...
104
+ TypeError: Groebner bases exist only for two-sided ideals
105
+ sage: JL.groebner_basis(2)
106
+ Traceback (most recent call last):
107
+ ...
108
+ TypeError: Groebner bases exist only for two-sided ideals
109
+
110
+ Also, it is currently not possible to compute a Groebner basis when the base
111
+ ring is not a field::
112
+
113
+ sage: FZ.<a,b,c> = FreeAlgebra(ZZ, implementation='letterplace')
114
+ sage: J = FZ*[a^3-b^3]*FZ
115
+ sage: J.groebner_basis(2)
116
+ Traceback (most recent call last):
117
+ ...
118
+ NotImplementedError: currently, we can only compute Groebner bases if the ring of coefficients is a field
119
+
120
+ The letterplace implementation of free algebras also provides integral degree weights
121
+ for the generators, and we can compute Groebner bases for twosided graded homogeneous
122
+ ideals::
123
+
124
+ sage: F.<x,y,z> = FreeAlgebra(QQ, implementation='letterplace',degrees=[1,2,3])
125
+ sage: I = F*[x*y+z-y*x,x*y*z-x^6+y^3]*F
126
+ sage: I.groebner_basis(Infinity)
127
+ Twosided Ideal (x*y - y*x + z,
128
+ x*x*x*x*x*x - y*x*z - y*y*y + z*z,
129
+ x*z*z - y*x*x*z + y*x*z*x + y*y*z + y*z*y + z*x*z + z*y*y - z*z*x,
130
+ x*x*x*x*x*z + x*x*x*x*z*x + x*x*x*z*x*x + x*x*z*x*x*x + x*z*x*x*x*x +
131
+ y*x*z*y - y*y*x*z + y*z*z + z*x*x*x*x*x - z*z*y,
132
+ x*x*x*x*z*y*y + x*x*x*z*y*y*x - x*x*x*z*y*z - x*x*z*y*x*z + x*x*z*y*y*x*x +
133
+ x*x*z*y*y*y - x*x*z*y*z*x - x*z*y*x*x*z - x*z*y*x*z*x +
134
+ x*z*y*y*x*x*x + 2*x*z*y*y*y*x - 2*x*z*y*y*z - x*z*y*z*x*x -
135
+ x*z*y*z*y + y*x*z*x*x*x*x*x - 4*y*x*z*x*x*z - 4*y*x*z*x*z*x +
136
+ 4*y*x*z*y*x*x*x + 3*y*x*z*y*y*x - 4*y*x*z*y*z + y*y*x*x*x*x*z +
137
+ y*y*x*x*x*z*x - 3*y*y*x*x*z*x*x - y*y*x*x*z*y +
138
+ 5*y*y*x*z*x*x*x + 4*y*y*x*z*y*x - 4*y*y*y*x*x*z +
139
+ 4*y*y*y*x*z*x + 3*y*y*y*y*z + 4*y*y*y*z*x*x + 6*y*y*y*z*y +
140
+ y*y*z*x*x*x*x + y*y*z*x*z + 7*y*y*z*y*x*x + 7*y*y*z*y*y -
141
+ 7*y*y*z*z*x - y*z*x*x*x*z - y*z*x*x*z*x + 3*y*z*x*z*x*x +
142
+ y*z*x*z*y + y*z*y*x*x*x*x - 3*y*z*y*x*z + 7*y*z*y*y*x*x +
143
+ 3*y*z*y*y*y - 3*y*z*y*z*x - 5*y*z*z*x*x*x - 4*y*z*z*y*x +
144
+ 4*y*z*z*z - z*y*x*x*x*z - z*y*x*x*z*x - z*y*x*z*x*x -
145
+ z*y*x*z*y + z*y*y*x*x*x*x - 3*z*y*y*x*z + 3*z*y*y*y*x*x +
146
+ z*y*y*y*y - 3*z*y*y*z*x - z*y*z*x*x*x - 2*z*y*z*y*x +
147
+ 2*z*y*z*z - z*z*x*x*x*x*x + 4*z*z*x*x*z + 4*z*z*x*z*x -
148
+ 4*z*z*y*x*x*x - 3*z*z*y*y*x + 4*z*z*y*z + 4*z*z*z*x*x +
149
+ 2*z*z*z*y)
150
+ of Free Associative Unital Algebra on 3 generators (x, y, z) over Rational Field
151
+
152
+ Again, we can compute normal forms::
153
+
154
+ sage: (z*I.0-I.1).normal_form(I)
155
+ 0
156
+ sage: (z*I.0-x*y*z).normal_form(I)
157
+ -y*x*z + z*z
158
+ """
159
+ def __init__(self, ring, gens, coerce=True, side='twosided'):
160
+ """
161
+ INPUT:
162
+
163
+ - ``ring`` -- a free algebra in letterplace implementation
164
+ - ``gens`` -- list, tuple or sequence of generators
165
+ - ``coerce`` -- boolean (default: ``True``); whether ``gens`` shall be
166
+ coerced first
167
+ - ``side`` -- string; one of ``'twosided'`` (default),
168
+ ``'left'`` or ``'right'``. Determines whether the ideal
169
+ is a left, right or twosided ideal. Groebner bases or
170
+ only supported in the twosided case.
171
+
172
+ TESTS::
173
+
174
+ sage: F.<x,y,z> = FreeAlgebra(QQ, implementation='letterplace')
175
+ sage: from sage.algebras.letterplace.letterplace_ideal import LetterplaceIdeal
176
+ sage: LetterplaceIdeal(F,x)
177
+ Twosided Ideal (x) of Free Associative Unital Algebra on 3 generators (x, y, z) over Rational Field
178
+ sage: LetterplaceIdeal(F,[x,y],side='left')
179
+ Left Ideal (x, y) of Free Associative Unital Algebra on 3 generators (x, y, z) over Rational Field
180
+
181
+ It is not correctly detected that this class inherits from an
182
+ extension class. Therefore, we have to skip one item of the
183
+ test suite::
184
+
185
+ sage: I = F*[x*y+y*z,x^2+x*y-y*x-y^2]*F
186
+ sage: TestSuite(I).run(skip=['_test_category'],verbose=True)
187
+ running ._test_eq() . . . pass
188
+ running ._test_new() . . . pass
189
+ running ._test_not_implemented_methods() . . . pass
190
+ running ._test_pickling() . . . pass
191
+ """
192
+ Ideal_nc.__init__(self, ring, gens, coerce=coerce, side=side)
193
+ self.__GB = self
194
+ self.__uptodeg = 0
195
+
196
+ def groebner_basis(self, degbound=None):
197
+ """
198
+ Twosided Groebner basis with degree bound.
199
+
200
+ INPUT:
201
+
202
+ - ``degbound`` -- (optional) integer or Infinity; if it is provided,
203
+ a Groebner basis at least out to that degree is returned. By
204
+ default, the current degree bound of the underlying ring is used.
205
+
206
+ ASSUMPTIONS:
207
+
208
+ Currently, we can only compute Groebner bases for twosided
209
+ ideals, and the ring of coefficients must be a field. A
210
+ :exc:`TypeError` is raised if one of these conditions is violated.
211
+
212
+ .. NOTE::
213
+
214
+ - The result is cached. The same Groebner basis is returned
215
+ if a smaller degree bound than the known one is requested.
216
+ - If the degree bound ``Infinity`` is requested, it is attempted to
217
+ compute a complete Groebner basis. But we cannot guarantee
218
+ that the computation will terminate, since not all twosided
219
+ homogeneous ideals of a free algebra have a finite Groebner
220
+ basis.
221
+
222
+ EXAMPLES::
223
+
224
+ sage: F.<x,y,z> = FreeAlgebra(QQ, implementation='letterplace')
225
+ sage: I = F*[x*y+y*z,x^2+x*y-y*x-y^2]*F
226
+
227
+ Since `F` was cached and since its degree bound cannot be
228
+ decreased, it may happen that, as a side effect of other tests,
229
+ it already has a degree bound bigger than 3. So, we cannot
230
+ test against the output of ``I.groebner_basis()``::
231
+
232
+ sage: F.set_degbound(3)
233
+ sage: I.groebner_basis() # not tested
234
+ Twosided Ideal (y*y*y - y*y*z + y*z*y - y*z*z, y*y*x + y*y*z + y*z*x + y*z*z, x*y + y*z, x*x - y*x - y*y - y*z) of Free Associative Unital Algebra on 3 generators (x, y, z) over Rational Field
235
+ sage: I.groebner_basis(4)
236
+ Twosided Ideal (x*y + y*z,
237
+ x*x - y*x - y*y - y*z,
238
+ y*y*y - y*y*z + y*z*y - y*z*z,
239
+ y*y*x + y*y*z + y*z*x + y*z*z,
240
+ y*y*z*y - y*y*z*z + y*z*z*y - y*z*z*z,
241
+ y*z*y*y - y*z*y*z + y*z*z*y - y*z*z*z,
242
+ y*y*z*x + y*y*z*z + y*z*z*x + y*z*z*z,
243
+ y*z*y*x + y*z*y*z + y*z*z*x + y*z*z*z) of Free Associative
244
+ Unital Algebra on 3 generators (x, y, z) over Rational Field
245
+ sage: I.groebner_basis(2) is I.groebner_basis(4)
246
+ True
247
+ sage: G = I.groebner_basis(4)
248
+ sage: G.groebner_basis(3) is G
249
+ True
250
+
251
+ If a finite complete Groebner basis exists, we can compute
252
+ it as follows::
253
+
254
+ sage: I = F*[x*y-y*x,x*z-z*x,y*z-z*y,x^2*y-z^3,x*y^2+z*x^2]*F
255
+ sage: I.groebner_basis(Infinity)
256
+ Twosided Ideal (-y*z + z*y,
257
+ -x*z + z*x,
258
+ -x*y + y*x,
259
+ x*x*z + x*y*y,
260
+ x*x*y - z*z*z,
261
+ x*x*x*z + y*z*z*z,
262
+ x*z*z*z*z + y*y*z*z*z) of Free Associative Unital Algebra
263
+ on 3 generators (x, y, z) over Rational Field
264
+
265
+ Since the commutators of the generators are contained in the ideal,
266
+ we can verify the above result by a computation in a polynomial ring
267
+ in negative lexicographic order::
268
+
269
+ sage: P.<c,b,a> = PolynomialRing(QQ,order='neglex')
270
+ sage: J = P*[a^2*b-c^3,a*b^2+c*a^2]
271
+ sage: J.groebner_basis()
272
+ [b*a^2 - c^3, b^2*a + c*a^2, c*a^3 + c^3*b, c^3*b^2 + c^4*a]
273
+
274
+ Apparently, the results are compatible, by sending `a` to `x`, `b`
275
+ to `y` and `c` to `z`.
276
+ """
277
+ cdef FreeAlgebra_letterplace A = self.ring()
278
+ cdef FreeAlgebraElement_letterplace x
279
+ if degbound is None:
280
+ degbound = A.degbound()
281
+ if self.__uptodeg >= degbound:
282
+ return self.__GB
283
+ if not A.base().is_field():
284
+ raise NotImplementedError("currently, we can only compute Groebner bases if the ring of coefficients is a field")
285
+ if self.side() != 'twosided':
286
+ raise TypeError("Groebner bases exist only for two-sided ideals")
287
+ if degbound == Infinity:
288
+ while self.__uptodeg < Infinity:
289
+ test_bound = 2 * max([x._poly.degree()
290
+ for x in self.__GB.gens()])
291
+ self.groebner_basis(test_bound)
292
+ return self.__GB
293
+ # Set the options required by letterplace
294
+ from sage.libs.singular.option import LibSingularOptions
295
+ libsingular_options = LibSingularOptions()
296
+ bck = (libsingular_options['redTail'], libsingular_options['redSB'])
297
+ libsingular_options['redTail'] = True
298
+ libsingular_options['redSB'] = True
299
+ A.set_degbound(degbound)
300
+ P = A._current_ring
301
+
302
+ # note that degbound might be smaller than A._degbound due to caching,
303
+ # but degbound must be large enough to map all generators to the
304
+ # letterplace ring L
305
+ if degbound < A._degbound:
306
+ max_deg = max([x._poly.degree() for x in self.__GB.gens()])
307
+ if degbound < max_deg:
308
+ degbound = max_deg
309
+
310
+ # The following is a workaround for calling Singular's new Letterplace
311
+ # API (see :issue:`25993`). We construct a temporary polynomial ring L
312
+ # with letterplace attributes set as required by the API. As L has
313
+ # duplicate variable names, we need to handle this ring carefully; in
314
+ # particular, we cannot coerce to and from L, so we use homomorphisms
315
+ # for the conversion.
316
+
317
+ cdef FreeAlgebra_letterplace_libsingular lp_ring = \
318
+ FreeAlgebra_letterplace_libsingular(A._commutative_ring, degbound)
319
+ L = lp_ring._lp_ring_internal
320
+ to_L = P.hom(L.gens(), L, check=False)
321
+ from_L = L.hom(P.gens(), P, check=False)
322
+ I = L.ideal([to_L(x._poly) for x in self.__GB.gens()])
323
+ from sage.libs.singular.function import singular_function
324
+ singular_twostd = singular_function("twostd")
325
+ gb = singular_twostd(I)
326
+ out = [FreeAlgebraElement_letterplace(A, from_L(X), check=False)
327
+ for X in gb]
328
+
329
+ libsingular_options['redTail'] = bck[0]
330
+ libsingular_options['redSB'] = bck[1]
331
+ self.__GB = A.ideal(out, side='twosided', coerce=False)
332
+ if degbound >= 2 * max([x._poly.degree() for x in out]):
333
+ degbound = Infinity
334
+ self.__uptodeg = degbound
335
+ self.__GB.__uptodeg = degbound
336
+ return self.__GB
337
+
338
+ def __contains__(self, x):
339
+ """
340
+ The containment test is based on a normal form computation.
341
+
342
+ EXAMPLES::
343
+
344
+ sage: F.<x,y,z> = FreeAlgebra(QQ, implementation='letterplace')
345
+ sage: I = F*[x*y+y*z,x^2+x*y-y*x-y^2]*F
346
+ sage: x*I.0-I.1*y+I.0*y in I # indirect doctest
347
+ True
348
+ sage: 1 in I
349
+ False
350
+ """
351
+ R = self.ring()
352
+ return (x in R) and R(x).normal_form(self).is_zero()
353
+
354
+ def reduce(self, G):
355
+ """
356
+ Reduction of this ideal by another ideal,
357
+ or normal form of an algebra element with respect to this ideal.
358
+
359
+ INPUT:
360
+
361
+ - ``G`` -- a list or tuple of elements, an ideal,
362
+ the ambient algebra, or a single element
363
+
364
+ OUTPUT:
365
+
366
+ - The normal form of ``G`` with respect to this ideal, if
367
+ ``G`` is an element of the algebra.
368
+ - The reduction of this ideal by the elements resp. generators
369
+ of ``G``, if ``G`` is a list, tuple or ideal.
370
+ - The zero ideal, if ``G`` is the algebra containing this ideal.
371
+
372
+ EXAMPLES::
373
+
374
+ sage: F.<x,y,z> = FreeAlgebra(QQ, implementation='letterplace')
375
+ sage: I = F*[x*y+y*z,x^2+x*y-y*x-y^2]*F
376
+ sage: I.reduce(F)
377
+ Twosided Ideal (0) of Free Associative Unital Algebra on 3 generators (x, y, z) over Rational Field
378
+ sage: I.reduce(x^3)
379
+ -y*z*x - y*z*y - y*z*z
380
+ sage: I.reduce([x*y])
381
+ Twosided Ideal (y*z, x*x - y*x - y*y) of Free Associative Unital Algebra on 3 generators (x, y, z) over Rational Field
382
+ sage: I.reduce(F*[x^2+x*y,y^2+y*z]*F)
383
+ Twosided Ideal (x*y + y*z, -y*x + y*z) of Free Associative Unital Algebra on 3 generators (x, y, z) over Rational Field
384
+ """
385
+ P = self.ring()
386
+ if not isinstance(G, (list, tuple)):
387
+ if G == P:
388
+ return P.ideal([P.zero()])
389
+ if G in P:
390
+ return G.normal_form(self)
391
+ G = G.gens()
392
+ C = P.current_ring()
393
+ sI = C.ideal([C(X.letterplace_polynomial()) for X in self.gens()],
394
+ coerce=False)
395
+ selfdeg = max([x.degree() for x in sI.gens()])
396
+ gI = P._reductor_(G, selfdeg)
397
+ from sage.libs.singular.option import LibSingularOptions
398
+ libsingular_options = LibSingularOptions()
399
+ bck = (libsingular_options['redTail'], libsingular_options['redSB'])
400
+ libsingular_options['redTail'] = True
401
+ libsingular_options['redSB'] = True
402
+ from sage.libs.singular.function import singular_function
403
+ poly_reduce = singular_function("NF")
404
+ sI = poly_reduce(sI, gI, ring=C, attributes={gI: {"isSB": 1}})
405
+ libsingular_options['redTail'] = bck[0]
406
+ libsingular_options['redSB'] = bck[1]
407
+ return P.ideal([FreeAlgebraElement_letterplace(P, x, check=False)
408
+ for x in sI], coerce=False)
@@ -0,0 +1,2 @@
1
+ # sage_setup: distribution = sagemath-singular
2
+ from sage.algebras.quatalg.quaternion_algebra import QuaternionAlgebra