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,5 @@
1
+ # sage_setup: distribution = sagemath-singular
2
+ cdef _fmat(fvars, Nk_ij, one, a, b, c, d, x, y)
3
+ cpdef _backward_subs(factory, bint flatten=*)
4
+ cpdef executor(tuple params)
5
+ cpdef _solve_for_linear_terms(factory, list eqns=*)
@@ -0,0 +1,538 @@
1
+ # sage_setup: distribution = sagemath-singular
2
+ """
3
+ Fast F-Matrix Methods
4
+ """
5
+ # ****************************************************************************
6
+ # Copyright (C) 2021 Guillermo Aboumrad <gh_willieab>
7
+ #
8
+ # Distributed under the terms of the GNU General Public License (GPL)
9
+ # https://www.gnu.org/licenses/
10
+ # ****************************************************************************
11
+
12
+ cimport cython
13
+ from sage.algebras.fusion_rings.poly_tup_engine cimport (
14
+ compute_known_powers,
15
+ get_variables_degrees, variables,
16
+ poly_to_tup, _tup_to_poly,
17
+ subs, subs_squares, reduce_poly_dict, resize,
18
+ _flatten_coeffs, _unflatten_coeffs,
19
+ has_appropriate_linear_term,
20
+ resize
21
+ )
22
+ from sage.algebras.fusion_rings.shm_managers cimport KSHandler, FvarsHandler
23
+ from sage.rings.number_field.number_field_element cimport NumberFieldElement_absolute
24
+ from sage.rings.polynomial.multi_polynomial_libsingular cimport MPolynomial_libsingular, MPolynomialRing_libsingular
25
+ from sage.rings.polynomial.polydict cimport ETuple
26
+
27
+ from ctypes import cast, py_object
28
+ from itertools import product
29
+ from sage.rings.ideal import Ideal
30
+ from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
31
+
32
+ ##########################
33
+ # Fast class methods #
34
+ ##########################
35
+
36
+ cpdef _solve_for_linear_terms(factory, list eqns=None):
37
+ r"""
38
+ Solve for a linear term occurring in a two-term equation, and for
39
+ variables appearing in univariate single-term equations.
40
+
41
+ EXAMPLES::
42
+
43
+ sage: f = FusionRing("D3", 1).get_fmatrix(inject_variables=True, new=True)
44
+ creating variables fx1..fx27
45
+ Defining fx0, ..., fx26
46
+ sage: f._reset_solver_state()
47
+ sage: f.ideal_basis = [fx0**3, fx0 + fx3**4, fx2**2 - fx3, fx2 - fx3**2, fx4 - fx2]
48
+ sage: from sage.algebras.fusion_rings.poly_tup_engine import poly_to_tup
49
+ sage: f.ideal_basis = [poly_to_tup(p) for p in f.ideal_basis]
50
+ sage: from sage.algebras.fusion_rings.poly_tup_engine import poly_tup_sortkey
51
+ sage: f.ideal_basis.sort(key=poly_tup_sortkey)
52
+ sage: from sage.algebras.fusion_rings.shm_managers import FvarsHandler
53
+ sage: n = f._poly_ring.ngens()
54
+ sage: f._fvars = FvarsHandler(n, f._field, f._idx_to_sextuple, init_data=f._fvars)
55
+ sage: from sage.algebras.fusion_rings.fast_parallel_fmats_methods import _solve_for_linear_terms
56
+ sage: _solve_for_linear_terms(f)
57
+ True
58
+ sage: f._tup_to_fpoly(f._fvars[f._idx_to_sextuple[0]])
59
+ 0
60
+ sage: f._tup_to_fpoly(f._fvars[f._idx_to_sextuple[2]])
61
+ fx4
62
+ sage: f._tup_to_fpoly(f._fvars[f._idx_to_sextuple[3]])
63
+ fx3
64
+ sage: f._tup_to_fpoly(f._fvars[f._idx_to_sextuple[4]])
65
+ fx4
66
+ """
67
+ if eqns is None:
68
+ eqns = factory.ideal_basis
69
+
70
+ cdef bint linear_terms_exist = False
71
+ cdef ETuple exp, rhs_exp
72
+ cdef int max_var
73
+ cdef tuple eq_tup
74
+ cdef FvarsHandler fvars = factory._fvars
75
+ cdef NumberFieldElement_absolute coeff, other
76
+ cdef tuple rhs_coeff
77
+ for eq_tup in eqns:
78
+ if len(eq_tup) == 1:
79
+ vars = variables(eq_tup)
80
+ if len(vars) == 1 and not factory._solved[vars[0]]:
81
+ fvars[factory._idx_to_sextuple[vars[0]]] = tuple()
82
+ factory._solved[vars[0]] = True
83
+ linear_terms_exist = True
84
+
85
+ # TESTS:
86
+ # s = factory._idx_to_sextuple[vars[0]]
87
+ # factory.test_fvars[s] = tuple()
88
+ # assert factory.test_fvars[s] == fvars[s], "OG value {}, Shared: {}".format(fvars[s], factory.test_fvars[s])
89
+ if len(eq_tup) == 2:
90
+ idx = has_appropriate_linear_term(eq_tup)
91
+ if idx < 0:
92
+ continue
93
+ # The chosen term is guaranteed to be univariate in the largest variable
94
+ exp = eq_tup[idx][0]
95
+ max_var = exp._data[0]
96
+ if not factory._solved[max_var]:
97
+ rhs_exp = eq_tup[(idx+1) % 2][0]
98
+ coeff = factory._field(list(eq_tup[(idx+1) % 2][1]))
99
+ other = factory._field(list(eq_tup[idx][1]))
100
+ rhs_coeff = tuple((-coeff / other)._coefficients())
101
+ fvars[factory._idx_to_sextuple[max_var]] = ((rhs_exp, rhs_coeff), )
102
+ factory._solved[max_var] = True
103
+ linear_terms_exist = True
104
+
105
+ # TESTS:
106
+ # s = factory._idx_to_sextuple[max_var]
107
+ # factory.test_fvars[s] = ((rhs_exp, rhs_coeff), )
108
+ # assert _unflatten_coeffs(factory._field, factory.test_fvars[s]) == fvars[s], "OG value {}, Shared: {}".format(factory.test_fvars[s], fvars[s])
109
+ return linear_terms_exist
110
+
111
+ cpdef _backward_subs(factory, bint flatten=True):
112
+ r"""
113
+ Perform backward substitution on ``self.ideal_basis``, traversing
114
+ variables in reverse lexicographical order.
115
+
116
+ EXAMPLES::
117
+
118
+ sage: f = FusionRing("D3", 1).get_fmatrix(inject_variables=True, new=True)
119
+ creating variables fx1..fx27
120
+ Defining fx0, ..., fx26
121
+ sage: f._reset_solver_state()
122
+ sage: f.ideal_basis = [fx0**3, fx0 + fx3**4, fx2**2 - fx3, fx2 - fx3**2, fx4 - fx2]
123
+ sage: from sage.algebras.fusion_rings.poly_tup_engine import poly_to_tup
124
+ sage: f.ideal_basis = [poly_to_tup(p) for p in f.ideal_basis]
125
+ sage: from sage.algebras.fusion_rings.poly_tup_engine import poly_tup_sortkey
126
+ sage: f.ideal_basis.sort(key=poly_tup_sortkey)
127
+ sage: from sage.algebras.fusion_rings.shm_managers import FvarsHandler
128
+ sage: n = f._poly_ring.ngens()
129
+ sage: f._fvars = FvarsHandler(n, f._field, f._idx_to_sextuple, init_data=f._fvars)
130
+ sage: from sage.algebras.fusion_rings.fast_parallel_fmats_methods import _solve_for_linear_terms
131
+ sage: _solve_for_linear_terms(f)
132
+ True
133
+ sage: f._tup_to_fpoly(f._fvars[f._idx_to_sextuple[0]])
134
+ 0
135
+ sage: f._tup_to_fpoly(f._fvars[f._idx_to_sextuple[2]])
136
+ fx4
137
+ sage: f._tup_to_fpoly(f._fvars[f._idx_to_sextuple[3]])
138
+ fx3
139
+ sage: f._tup_to_fpoly(f._fvars[f._idx_to_sextuple[4]])
140
+ fx4
141
+ sage: f.ideal_basis.append(poly_to_tup(fx4-1))
142
+ sage: f.ideal_basis.sort(key=poly_tup_sortkey)
143
+ sage: _solve_for_linear_terms(f)
144
+ True
145
+ sage: from sage.algebras.fusion_rings.fast_parallel_fmats_methods import _backward_subs
146
+ sage: _backward_subs(f)
147
+ sage: f._tup_to_fpoly(f._fvars[f._idx_to_sextuple[0]])
148
+ 0
149
+ sage: f._tup_to_fpoly(f._fvars[f._idx_to_sextuple[2]])
150
+ 1
151
+ sage: f._tup_to_fpoly(f._fvars[f._idx_to_sextuple[3]])
152
+ fx3
153
+ sage: f._tup_to_fpoly(f._fvars[f._idx_to_sextuple[4]])
154
+ 1
155
+ """
156
+ one = factory._field.one()
157
+ fvars = factory._fvars
158
+ solved = factory._solved
159
+ cdef KSHandler _ks = factory._ks
160
+ cdef dict idx_to_sextuple = factory._idx_to_sextuple
161
+ cdef int nvars = len(idx_to_sextuple)
162
+ for i in range(nvars-1, -1, -1):
163
+ sextuple = idx_to_sextuple[i]
164
+ rhs = fvars[sextuple]
165
+ d = {var_idx: fvars[idx_to_sextuple[var_idx]]
166
+ for var_idx in variables(rhs) if solved[var_idx]}
167
+ if d:
168
+ kp = compute_known_powers(get_variables_degrees([rhs], nvars), d, one)
169
+ res = tuple(subs_squares(subs(rhs, kp, one), _ks).items())
170
+ if flatten:
171
+ res = _flatten_coeffs(res)
172
+ fvars[sextuple] = res
173
+
174
+
175
+ cdef _fmat(fvars, _Nk_ij, id_anyon, a, b, c, d, x, y):
176
+ """
177
+ Cython version of fmat class method. Using cdef for fastest dispatch
178
+ """
179
+ if _Nk_ij(a, b, x) == 0 or _Nk_ij(x, c, d) == 0 or _Nk_ij(b, c, y) == 0 or _Nk_ij(a, y, d) == 0:
180
+ return 0
181
+ # Some known F-symbols
182
+ if a == id_anyon:
183
+ return int(x == b and y == d)
184
+ if b == id_anyon:
185
+ return int(x == a and y == c)
186
+ if c == id_anyon:
187
+ return int(x == d and y == b)
188
+ return fvars[a, b, c, d, x, y]
189
+
190
+ ######################################
191
+ # Fast fusion coefficients cache #
192
+ ######################################
193
+
194
+ # from sage.misc.cachefunc import cached_function
195
+ # cdef dict _Nk_ij = dict()
196
+
197
+ # cpdef _Nk_ij(factory, proc):
198
+ # cdef int coeff
199
+ # for a, b, c in product(factory._FR.basis(), repeat=3):
200
+ # try:
201
+ # coeff = (a*b).monomial_coefficients(copy=False)[c.weight()]
202
+ # except:
203
+ # coeff = 0
204
+ # _Nk_ij[a, b, c] = coeff
205
+
206
+ # cpdef int _Nk_ij(a, b, c):
207
+ # try:
208
+ # return (a*b).monomial_coefficients(copy=False)[c.weight()]
209
+ # except KeyError:
210
+ # return 0
211
+ #
212
+ # _Nk_ij = cached_function(_Nk_ij, name='_Nk_ij')
213
+
214
+ ###############
215
+ # Mappers #
216
+ ###############
217
+
218
+ cdef req_cy(tuple basis, r_matrix, dict fvars, Nk_ij, id_anyon, tuple sextuple):
219
+ """
220
+ Given an FMatrix factory and a sextuple, return a hexagon equation
221
+ as a polynomial object.
222
+ """
223
+ a, b, c, d, e, g = sextuple
224
+ # To add typing we need to ensure all fmats.fmat are of the same type?
225
+ # Return fmats._poly_ring.zero() and fmats._poly_ring.one() instead of 0 and 1?
226
+ lhs = r_matrix(a, c, e, base_coercion=False) * _fmat(fvars, Nk_ij, id_anyon, a, c, b, d, e, g) * r_matrix(b, c, g, base_coercion=False)
227
+ rhs = 0
228
+ for f in basis:
229
+ rhs += _fmat(fvars, Nk_ij, id_anyon, c, a, b, d, e, f) * r_matrix(f, c, d, base_coercion=False) * _fmat(fvars, Nk_ij, id_anyon, a, b, c, d, f, g)
230
+ return lhs-rhs
231
+
232
+
233
+ @cython.wraparound(False)
234
+ @cython.nonecheck(False)
235
+ @cython.cdivision(True)
236
+ cdef get_reduced_hexagons(factory, tuple mp_params):
237
+ """
238
+ Set up and reduce the hexagon equations corresponding to this worker.
239
+ """
240
+ # Set up multiprocessing parameters
241
+ cdef list worker_results = list()
242
+ cdef int child_id, n_proc
243
+ cdef unsigned long i
244
+ child_id, n_proc, output = mp_params
245
+ cdef tuple sextuple, red
246
+
247
+ # Pre-compute common parameters for speed
248
+ cdef tuple basis = tuple(factory._FR.basis())
249
+ cdef dict fvars
250
+ cdef bint must_zip_up = False
251
+ if not output:
252
+ fvars = {s: factory._poly_ring.gen(i) for i, s in factory._idx_to_sextuple.items()}
253
+ else:
254
+ # Handle both cyclotomic and orthogonal solution method
255
+ for k, v in factory._fvars.items():
256
+ must_zip_up = isinstance(v, tuple)
257
+ break
258
+ if must_zip_up:
259
+ fvars = {k: _tup_to_poly(v, parent=factory._poly_ring) for k, v in factory._fvars.items()}
260
+ else:
261
+ fvars = factory._fvars
262
+ r_matrix = factory._FR.r_matrix
263
+ _Nk_ij = factory._FR.Nk_ij
264
+ id_anyon = factory._FR.one()
265
+ _field = factory._field
266
+ cdef NumberFieldElement_absolute one = _field.one()
267
+ cdef ETuple _nnz = factory._nnz
268
+ _ks = factory._ks
269
+
270
+ # Computation loop
271
+ it = product(basis, repeat=6)
272
+ for i in range(len(basis)**6):
273
+ sextuple = next(it)
274
+ if i % n_proc == child_id:
275
+ he = req_cy(basis, r_matrix, fvars, _Nk_ij, id_anyon, sextuple)
276
+ if he:
277
+ red = reduce_poly_dict(he.monomial_coefficients(), _nnz, _ks, one)
278
+
279
+ # Avoid pickling cyclotomic coefficients
280
+ red = _flatten_coeffs(red)
281
+
282
+ worker_results.append(red)
283
+
284
+ return collect_eqns(worker_results)
285
+
286
+ cdef MPolynomial_libsingular feq_cy(tuple basis, fvars, Nk_ij, id_anyon, zero, tuple nonuple, bint prune=False):
287
+ r"""
288
+ Given an FMatrix factory and a nonuple, return a pentagon equation
289
+ as a polynomial object.
290
+ """
291
+ a, b, c, d, e, f, g, k, l = nonuple
292
+ lhs = _fmat(fvars, Nk_ij, id_anyon, f, c, d, e, g, l) * _fmat(fvars, Nk_ij, id_anyon, a, b, l, e, f, k)
293
+ if lhs == 0 and prune:
294
+ # it is believed that if lhs=0, the equation carries no new information
295
+ return zero
296
+ rhs = zero
297
+ for h in basis:
298
+ rhs += _fmat(fvars, Nk_ij, id_anyon, a, b, c, g, f, h)*_fmat(fvars, Nk_ij, id_anyon, a, h, d, e, g, k)*_fmat(fvars, Nk_ij, id_anyon, b, c, d, k, h, l)
299
+ return lhs - rhs
300
+
301
+
302
+ @cython.wraparound(False)
303
+ @cython.nonecheck(False)
304
+ @cython.cdivision(True)
305
+ cdef get_reduced_pentagons(factory, tuple mp_params):
306
+ r"""
307
+ Set up and reduce the pentagon equations corresponding to this worker.
308
+ """
309
+ # Set up multiprocessing parameters
310
+ cdef list worker_results = list()
311
+ cdef int child_id, n_proc
312
+ child_id, n_proc, _ = mp_params
313
+ cdef unsigned long i
314
+ cdef tuple nonuple, red
315
+ cdef MPolynomial_libsingular pe
316
+
317
+ # Pre-compute common parameters for speed
318
+ cdef tuple basis = tuple(factory._FR.basis())
319
+ # Handle both cyclotomic and orthogonal solution method
320
+ cdef bint must_zip_up
321
+ for k, v in factory._fvars.items():
322
+ must_zip_up = isinstance(v, tuple)
323
+ break
324
+ cdef dict fvars
325
+ if must_zip_up:
326
+ fvars = {k: _tup_to_poly(v, parent=factory._poly_ring) for k, v in factory._fvars.items()}
327
+ else:
328
+ fvars = factory._fvars
329
+ _Nk_ij = factory._FR.Nk_ij
330
+ id_anyon = factory._FR.one()
331
+ _field = factory._field
332
+ cdef NumberFieldElement_absolute one = _field.one()
333
+ cdef MPolynomial_libsingular zero = factory._poly_ring.zero()
334
+ cdef KSHandler _ks = factory._ks
335
+ factory._nnz = factory._get_known_nonz()
336
+ cdef ETuple _nnz = factory._nnz
337
+
338
+ # Computation loop
339
+ it = product(basis, repeat=9)
340
+ for i in range(len(basis)**9):
341
+ nonuple = next(it)
342
+ if i % n_proc == child_id:
343
+ pe = feq_cy(basis, fvars, _Nk_ij, id_anyon, zero, nonuple, prune=True)
344
+ if pe:
345
+ red = reduce_poly_dict(pe.monomial_coefficients(), _nnz, _ks, one)
346
+
347
+ # Avoid pickling cyclotomic coefficients
348
+ red = _flatten_coeffs(red)
349
+
350
+ worker_results.append(red)
351
+ return collect_eqns(worker_results)
352
+
353
+ cdef list update_reduce(factory, list eqns):
354
+ r"""
355
+ Substitute known values, known squares, and reduce.
356
+ """
357
+ cdef list res = list()
358
+ cdef tuple eq_tup, red, unflat
359
+ cdef dict eq_dict
360
+
361
+ # Pre-compute common parameters for speed
362
+ _field = factory._field
363
+ one = _field.one()
364
+ cdef KSHandler _ks = factory._ks
365
+ # Update reduction params
366
+ factory._nnz = factory._get_known_nonz()
367
+ factory._kp = compute_known_powers(factory._var_degs, factory._get_known_vals(), factory._field.one())
368
+ cdef dict _kp = factory._kp
369
+ cdef ETuple _nnz = factory._nnz
370
+
371
+ for i in range(len(eqns)):
372
+ eq_tup = eqns[i]
373
+ # Construct cyclotomic field elts from list repn
374
+ unflat = _unflatten_coeffs(_field, eq_tup)
375
+
376
+ eq_dict = subs(unflat, _kp, one)
377
+ red = reduce_poly_dict(eq_dict, _nnz, _ks, one)
378
+
379
+ # Avoid pickling cyclotomic coefficients
380
+ red = _flatten_coeffs(red)
381
+
382
+ res.append(red)
383
+ return collect_eqns(res)
384
+
385
+ cdef list compute_gb(factory, tuple args):
386
+ r"""
387
+ Compute the reduced Groebner basis for given equations iterable.
388
+ """
389
+ cdef list res = list()
390
+ cdef list eqns, sorted_vars
391
+ eqns, term_order = args
392
+ # Define smaller poly ring in component vars
393
+ sorted_vars = []
394
+ cdef tuple eq_tup
395
+ cdef int fx
396
+ for eq_tup in eqns:
397
+ for fx in variables(eq_tup):
398
+ sorted_vars.append(fx)
399
+ sorted_vars = sorted(set(sorted_vars))
400
+ cdef MPolynomialRing_libsingular R = PolynomialRing(factory._FR.field(), len(sorted_vars), 'a', order=term_order)
401
+
402
+ # Zip tuples into R and compute Groebner basis
403
+ cdef idx_map = {old: new for new, old in enumerate(sorted_vars)}
404
+ nvars = len(sorted_vars)
405
+ F = factory.field()
406
+ cdef list polys = list()
407
+ for eq_tup in eqns:
408
+ eq_tup = _unflatten_coeffs(F, eq_tup)
409
+ polys.append(_tup_to_poly(resize(eq_tup, idx_map, nvars), parent=R))
410
+ gb = Ideal(sorted(polys)).groebner_basis(algorithm='libsingular:slimgb')
411
+
412
+ # Change back to fmats poly ring and append to temp_eqns
413
+ cdef dict inv_idx_map = {v: k for k, v in idx_map.items()}
414
+ cdef tuple t
415
+ nvars = factory._poly_ring.ngens()
416
+ for p in gb:
417
+ t = resize(poly_to_tup(p), inv_idx_map, nvars)
418
+
419
+ # Avoid pickling cyclotomic coefficients
420
+ t = _flatten_coeffs(t)
421
+
422
+ res.append(t)
423
+ return collect_eqns(res)
424
+
425
+ ################
426
+ # Reducers #
427
+ ################
428
+
429
+ cdef inline list collect_eqns(list eqns):
430
+ r"""
431
+ Helper function for returning processed results back to parent process.
432
+
433
+ Trivial reducer: simply collects objects with the same key in the worker.
434
+ This method is only useful when called after :meth:`executor`, whose
435
+ function argument appends output to the ``worker_results`` list.
436
+ """
437
+ # Discard the zero polynomial
438
+ reduced = set(eqns) - set([tuple()])
439
+ return list(reduced)
440
+
441
+ ##############################
442
+ # Parallel code executor #
443
+ ##############################
444
+
445
+ # Hard-coded module __dict__-style attribute with visible cdef methods
446
+ cdef dict mappers = {
447
+ "get_reduced_hexagons": get_reduced_hexagons,
448
+ "get_reduced_pentagons": get_reduced_pentagons,
449
+ "update_reduce": update_reduce,
450
+ "compute_gb": compute_gb,
451
+ "pent_verify": pent_verify
452
+ }
453
+
454
+ cpdef executor(tuple params):
455
+ r"""
456
+ Execute a function defined in this module
457
+ (``sage.algebras.fusion_rings.fast_parallel_fmats_methods``) in a worker
458
+ process, and supply the factory parameter by constructing a reference
459
+ to the ``FMatrix`` object in the worker's memory address space from
460
+ its ``id``.
461
+
462
+ INPUT:
463
+
464
+ - ``params`` -- tuple ``((fn_name, fmats_id), fn_args)`` where
465
+ ``fn_name`` is the name of the function to be executed, ``fmats_id``
466
+ is the ``id`` of the :class:`FMatrix` object, and ``fn_args`` is a
467
+ tuple containing all arguments to be passed to the function ``fn_name``.
468
+
469
+ .. NOTE::
470
+
471
+ When the parent process is forked, each worker gets a copy of
472
+ every global variable. The virtual memory address of object `X` in
473
+ the parent process equals the *virtual* memory address of the copy
474
+ of object `X` in each worker, so we may construct references to
475
+ forked copies of `X` using an ``id`` obtained in the parent process.
476
+
477
+ TESTS::
478
+
479
+ sage: from sage.algebras.fusion_rings.fast_parallel_fmats_methods import executor
480
+ sage: fmats = FusionRing("A1", 3).get_fmatrix()
481
+ sage: fmats._reset_solver_state()
482
+ sage: params = (('get_reduced_hexagons', id(fmats)), (0, 1, True))
483
+ sage: len(executor(params)) == 63
484
+ True
485
+ sage: fmats = FusionRing("E6", 1).get_fmatrix()
486
+ sage: fmats._reset_solver_state()
487
+ sage: params = (('get_reduced_hexagons', id(fmats)), (0, 1, False))
488
+ sage: len(executor(params)) == 6
489
+ True
490
+ """
491
+ (fn_name, fmats_id), args = params
492
+ # Construct a reference to global FMatrix object in this worker's memory
493
+ fmats_obj = cast(fmats_id, py_object).value
494
+ # Bind module method to FMatrix object in worker process, and call the method
495
+ return mappers[fn_name](fmats_obj, args)
496
+
497
+ ####################
498
+ # Verification #
499
+ ####################
500
+
501
+ cdef feq_verif(factory, worker_results, fvars, Nk_ij, id_anyon, tuple nonuple, float tol=5e-8):
502
+ r"""
503
+ Check the pentagon equation corresponding to the given nonuple.
504
+ """
505
+ a, b, c, d, e, f, g, k, l = nonuple
506
+ cdef float diff, lhs, rhs
507
+
508
+ lhs = _fmat(fvars, Nk_ij, id_anyon, f, c, d, e, g, l)*_fmat(fvars, Nk_ij, id_anyon, a, b, l, e, f, k)
509
+ rhs = 0.0
510
+ for h in factory._FR.basis():
511
+ rhs += _fmat(fvars, Nk_ij, id_anyon, a, b, c, g, f, h)*_fmat(fvars, Nk_ij, id_anyon, a, h, d, e, g, k)*_fmat(fvars, Nk_ij, id_anyon, b, c, d, k, h, l)
512
+ diff = lhs - rhs
513
+ if diff > tol or diff < -tol:
514
+ worker_results.append(diff)
515
+
516
+
517
+ @cython.wraparound(False)
518
+ @cython.nonecheck(False)
519
+ @cython.cdivision(True)
520
+ cdef pent_verify(factory, tuple mp_params):
521
+ r"""
522
+ Generate all the pentagon equations assigned to this process,
523
+ and reduce them.
524
+ """
525
+ child_id, n_proc, verbose = mp_params
526
+ cdef tuple nonuple
527
+ cdef unsigned long long i
528
+ cdef list worker_results = list()
529
+
530
+ # Pre-compute common parameters for speed
531
+ Nk_ij = factory._FR.Nk_ij
532
+ cdef dict fvars = factory._fvars
533
+ id_anyon = factory._FR.one()
534
+ for i, nonuple in enumerate(product(factory._FR.basis(), repeat=9)):
535
+ if i % n_proc == child_id:
536
+ feq_verif(factory, worker_results, fvars, Nk_ij, id_anyon, nonuple)
537
+ if i % 50000000 == 0 and i and verbose:
538
+ print("{:5d}m equations checked... {} potential misses so far...".format(i // 1000000, len(worker_results)))
@@ -0,0 +1,3 @@
1
+ # sage_setup: distribution = sagemath-singular
2
+ cpdef _unflatten_entries(factory, list entries)
3
+ cpdef executor(tuple params)