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,795 @@
1
+ /////////////////////////////////////////////////////////////////////
2
+ version="version ncpreim.lib 4.1.2.0 Feb_2019 "; // $Id: f12c1cc4074988e006ec2eaea73e2a69d604427f $
3
+ category="Noncommutative";
4
+ info="
5
+ LIBRARY: ncpreim.lib Non-commutative elimination and preimage computations
6
+ AUTHOR: Daniel Andres, daniel.andres@math.rwth-aachen.de
7
+
8
+ Support: DFG Graduiertenkolleg 1632 `Experimentelle und konstruktive Algebra'
9
+
10
+
11
+ OVERVIEW:
12
+ In G-algebras, elimination of variables is more involved than in the
13
+ commutative case.
14
+ One, not every subset of variables generates an algebra, which is again a
15
+ G-algebra.
16
+ Two, even if the subset of variables in question generates an admissible
17
+ subalgebra, there might be no admissible elimination ordering, i.e. an
18
+ elimination ordering which also satisfies the ordering condition for
19
+ G-algebras.
20
+
21
+ The difference between the procedure @code{eliminateNC} provided in this
22
+ library and the procedure @code{eliminate (plural)} from the kernel is that
23
+ eliminateNC will always find an admissible elimination if such one exists.
24
+ Moreover, the use of @code{slimgb} for performing Groebner basis computations
25
+ is possible.
26
+
27
+ As an application of the theory of elimination, the procedure @code{preimageNC}
28
+ is provided, which computes the preimage of an ideal under a homomorphism
29
+ f: A -> B between G-algebras A and B. In contrast to the kernel procedure
30
+ @code{preimage (plural)}, the assumption that A is commutative is not required.
31
+
32
+
33
+ REFERENCES:
34
+ (BGL) J.L. Bueso, J. Gomez-Torrecillas, F.J. Lobillo:
35
+ `Re-filtering and exactness of the Gelfand-Kirillov dimension',
36
+ Bull. Sci. math. 125, 8, 689-715, 2001.
37
+ @* (GML) J.I. Garcia Garcia, J. Garcia Miranda, F.J. Lobillo:
38
+ `Elimination orderings and localization in PBW algebras',
39
+ Linear Algebra and its Applications 430(8-9), 2133-2148, 2009.
40
+ @* (Lev) V. Levandovskyy: `Intersection of ideals with non-commutative
41
+ subalgebras', ISSAC'06, 212-219, ACM, 2006.
42
+
43
+
44
+ PROCEDURES:
45
+ eliminateNC(I,v,eng); elimination in G-algebras
46
+ preimageNC(A,f,J[,P,eng]); preimage of ideals under homomorphisms of G-algebras
47
+ admissibleSub(v); checks whether subalgebra is admissible
48
+ isUpperTriangular(M,k); checks whether matrix is (strictly) upper triangular
49
+ appendWeight2Ord(w); appends weight to ordering
50
+ elimWeight(v); computes elimination weight
51
+ extendedTensor(A,I); tensor product of rings with additional relations
52
+
53
+
54
+ KEYWORDS: preimage; elimination
55
+
56
+
57
+ SEE ALSO: elim_lib, preimage (plural)
58
+ ";
59
+
60
+
61
+ LIB "elim.lib"; // for nselect
62
+ LIB "nctools.lib"; // for makeWeyl etc.
63
+ LIB "dmodapp.lib"; // for sortIntvec
64
+ LIB "ncalg.lib"; // for makeUgl
65
+ LIB "dmodloc.lib"; // for commRing
66
+
67
+
68
+ /*
69
+ CHANGELOG
70
+ 11.12.12: docu, typos, fixed variable names in extendedTensor,
71
+ moved commRing to dmodloc.lib
72
+ 12.12.12: typos
73
+ 17.12.12: docu
74
+ 24.09.13: bugfix preimageNC naming conflict if f is map from ring called 'B'
75
+ */
76
+
77
+
78
+ // -- Testing for consistency of the library ---------------
79
+
80
+ static proc testncpreimlib()
81
+ {
82
+ example admissibleSub;
83
+ example isUpperTriangular;
84
+ example appendWeight2Ord;
85
+ example elimWeight;
86
+ example eliminateNC;
87
+ example extendedTensor;
88
+ example preimageNC;
89
+ }
90
+
91
+
92
+ // -- Tools ------------------------------------------------
93
+
94
+
95
+ proc admissibleSub (intvec v)
96
+ "
97
+ USAGE: admissibleSub(v); v intvec
98
+ ASSUME: The entries of v are in the range 1..nvars(basering).
99
+ RETURN: int, 1 if the variables indexed by the entries of v form an
100
+ admissible subalgebra, 0 otherwise
101
+ EXAMPLE: example admissibleSub; shows examples
102
+ "
103
+ {
104
+ v = checkIntvec(v);
105
+ int i,j;
106
+ list RL = ringlist(basering);
107
+ if (size(RL) == 4)
108
+ {
109
+ return(int(1));
110
+ }
111
+ matrix D = RL[6];
112
+ ideal I;
113
+ for (i=1; i<=size(v); i++)
114
+ {
115
+ for (j=i+1; j<=size(v); j++)
116
+ {
117
+ I[size(I)+1] = D[v[j],v[i]];
118
+ }
119
+ }
120
+ ideal M = maxideal(1);
121
+ ideal J = M[v];
122
+ attrib(J,"isSB",1);
123
+ M = NF(M,J);
124
+ M = simplify(M,2); // get rid of double entries in v
125
+ intvec opt = option(get);
126
+ attrib(M,"isSB",1);
127
+ option(redSB);
128
+ J = NF(I,M);
129
+ option(set,opt);
130
+ for (i=1; i<=ncols(I); i++)
131
+ {
132
+ if (J[i]<>I[i])
133
+ {
134
+ return(int(0));
135
+ }
136
+ }
137
+ return(int(1));
138
+ }
139
+ example
140
+ {
141
+ "EXAMPLE:"; echo = 2;
142
+ ring r = 0,(e,f,h),dp;
143
+ matrix d[3][3];
144
+ d[1,2] = -h; d[1,3] = 2*e; d[2,3] = -2*f;
145
+ def A = nc_algebra(1,d);
146
+ setring A; A; // A is U(sl_2)
147
+ // the subalgebra generated by e,f is not admissible since [e,f]=h
148
+ admissibleSub(1..2);
149
+ // but the subalgebra generated by f,h is admissible since [f,h]=2f
150
+ admissibleSub(2..3);
151
+ }
152
+
153
+
154
+ proc isUpperTriangular(matrix M, list #)
155
+ "
156
+ USAGE: isUpperTriangular(M[,k]); M a matrix, k an optional int
157
+ RETURN: int, 1 if the given matrix is upper triangular,
158
+ 0 otherwise.
159
+ NOTE: If k<>0 is given, it is checked whether M is strictly upper
160
+ triangular.
161
+ EXAMPLE: example isUpperTriangular; shows examples
162
+ "
163
+ {
164
+ int strict;
165
+ if (size(#)>0)
166
+ {
167
+ if ((typeof(#[1])=="int") || (typeof(#[1])=="number"))
168
+ {
169
+ strict = (0<>int(#[1]));
170
+ }
171
+ }
172
+ int m = Min(intvec(nrows(M),ncols(M)));
173
+ int j;
174
+ ideal I;
175
+ for (j=1; j<=m; j++)
176
+ {
177
+ I = M[j..nrows(M),j];
178
+ if (!strict)
179
+ {
180
+ I[1] = 0;
181
+ }
182
+ if (size(I)>0)
183
+ {
184
+ return(int(0));
185
+ }
186
+ }
187
+ return(int(1));
188
+ }
189
+ example
190
+ {
191
+ "EXAMPLE:"; echo = 2;
192
+ ring r = 0,x,dp;
193
+ matrix M[2][3] =
194
+ 0,1,2,
195
+ 0,0,3;
196
+ isUpperTriangular(M);
197
+ isUpperTriangular(M,1);
198
+ M[2,2] = 4;
199
+ isUpperTriangular(M);
200
+ isUpperTriangular(M,1);
201
+ }
202
+
203
+
204
+ proc appendWeight2Ord (intvec w)
205
+ "
206
+ USAGE: appendWeight2Ord(w); w an intvec
207
+ RETURN: ring, the basering equipped with the ordering (a(w),<), where < is
208
+ the ordering of the basering.
209
+ EXAMPLE: example appendWeight2Ord; shows examples
210
+ "
211
+ {
212
+ list RL = ringlist(basering);
213
+ RL[3] = insert(RL[3],list("a",w),0);
214
+ def A = ring(RL);
215
+ return(A);
216
+ }
217
+ example
218
+ {
219
+ "EXAMPLE:"; echo = 2;
220
+ ring r = 0,(a,b,x,d),Dp;
221
+ intvec w = 1,2,3,4;
222
+ def r2 = appendWeight2Ord(w); // for a commutative ring
223
+ r2;
224
+ matrix D[4][4];
225
+ D[1,2] = 3*a; D[1,4] = 3*x^2; D[2,3] = -x;
226
+ D[2,4] = d; D[3,4] = 1;
227
+ def A = nc_algebra(1,D);
228
+ setring A; A;
229
+ w = 2,1,1,1;
230
+ def B = appendWeight2Ord(w); // for a non-commutative ring
231
+ setring B; B;
232
+ }
233
+
234
+
235
+ static proc checkIntvec (intvec v)
236
+ "
237
+ USAGE: checkIntvec(v); v intvec
238
+ RETURN: intvec consisting of entries of v in ascending order
239
+ NOTE: Purpose of this proc: check if all entries of v are in the range
240
+ 1..nvars(basering).
241
+ "
242
+ {
243
+ if (size(v)>1)
244
+ {
245
+ v = sortIntvec(v)[1];
246
+ }
247
+ int n = nvars(basering);
248
+ if ( (v[1]<1) || v[size(v)]>n)
249
+ {
250
+ ERROR("Entries of intvec must be in the range 1.." + string(n));
251
+ }
252
+ return(v);
253
+ }
254
+
255
+
256
+
257
+ // -- Elimination ------------------------------------------
258
+
259
+
260
+ /*
261
+ // this is the same as Gweights@nctools.lib
262
+ //
263
+ // proc orderingCondition (matrix D)
264
+ // "
265
+ // USAGE: orderingCondition(D); D a matrix
266
+ // ASSUME: The matrix D is a strictly upper triangular square matrix.
267
+ // RETURN: intvec, say w, such that the ordering (a(w),<), where < is
268
+ // any global ordering, satisfies the ordering condition for
269
+ // all G-algebras induced by D.
270
+ // NOTE: If no such ordering exists, the zero intvec is returned.
271
+ // REMARK: Reference: (BGL)
272
+ // EXAMPLE: example orderingCondition; shows examples
273
+ // "
274
+ // {
275
+ // if (ncols(D) <> nrows(D))
276
+ // {
277
+ // ERROR("Expected square matrix.");
278
+ // }
279
+ // if (isUpperTriangular(D,1)==0)
280
+ // {
281
+ // ERROR("Expected strictly upper triangular matrix.");
282
+ // }
283
+ // intvec v = 1..nvars(basering);
284
+ // intvec w = orderingConditionEngine(D,v,0);
285
+ // return(w);
286
+ // }
287
+ // example
288
+ // {
289
+ // "EXAMPLE:"; echo = 2;
290
+ // // (Lev): Example 2
291
+ // ring r = 0,(a,b,x,d),dp;
292
+ // matrix D[4][4];
293
+ // D[1,2] = 3*a; D[1,4] = 3*x^2; D[2,3] = -x;
294
+ // D[2,4] = d; D[3,4] = 1;
295
+ // // To create a G-algebra, the ordering condition implies
296
+ // // that x^2<a*d must hold (see D[1,4]), which is not fulfilled:
297
+ // x^2 < a*d;
298
+ // // Hence, we look for an appropriate weight vector
299
+ // intwec w = orderingCondition(D); w;
300
+ // // and use it accordingly.
301
+ // ring r2 = 0,(a,b,x,d),(a(w),dp);
302
+ // x^2 < a*d;
303
+ // matrix D = imap(r,D);
304
+ // def A = nc_algebra(1,D);
305
+ // setring A; A;
306
+ // }
307
+ */
308
+
309
+
310
+ proc elimWeight (intvec v)
311
+ "
312
+ USAGE: elimWeight(v); v an intvec
313
+ ASSUME: The basering is a G-algebra.
314
+ @* The entries of v are in the range 1..nvars(basering) and the
315
+ corresponding variables generate an admissible subalgebra.
316
+ RETURN: intvec, say w, such that the ordering (a(w),<), where < is
317
+ any admissible global ordering, is an elimination ordering
318
+ for the subalgebra generated by the variables indexed by the
319
+ entries of the given intvec.
320
+ NOTE: If no such ordering exists, the zero intvec is returned.
321
+ REMARK: Reference: (BGL), (GML)
322
+ EXAMPLE: example elimWeight; shows examples
323
+ "
324
+ {
325
+ list RL = ringlist(basering);
326
+ if (size(RL)==4)
327
+ {
328
+ ERROR("Expected non-commutative basering.");
329
+ }
330
+ matrix D = RL[6];
331
+ intvec w = orderingConditionEngine(D,v,1);
332
+ return(w);
333
+ }
334
+ example
335
+ {
336
+ "EXAMPLE:"; echo = 2;
337
+ // (Lev): Example 2
338
+ ring r = 0,(a,b,x,d),Dp;
339
+ matrix D[4][4];
340
+ D[1,2] = 3*a; D[1,4] = 3*x^2; D[2,3] = -x;
341
+ D[2,4] = d; D[3,4] = 1;
342
+ def A = nc_algebra(1,D);
343
+ setring A; A;
344
+ // Since d*a-a*d = 3*x^2, any admissible ordering has to satisfy
345
+ // x^2 < a*d, while any elimination ordering for {x,d} additionally
346
+ // has to fulfil a << x and a << d.
347
+ // Hence neither a block ordering with weights
348
+ // (1,1,1,1) nor a weighted ordering with weight (0,0,1,1) will do.
349
+ intvec v = 3,4;
350
+ elimWeight(v);
351
+ }
352
+
353
+
354
+ static proc orderingConditionEngine (matrix D, intvec v, int elimweight)
355
+ {
356
+ // algorithm from (BGL) and (GML), respectively
357
+ // solving an LPP via simplex
358
+ int ppl = printlevel - voice + 1;
359
+ def save = basering;
360
+ int n = nvars(save);
361
+ ideal EV = maxideal(1);
362
+ EV = EV[v]; // also assumption check for v
363
+ attrib(EV,"isSB",1);
364
+ ideal NEV = maxideal(1);
365
+ NEV = NF(NEV,EV);
366
+ intmat V1[n-size(NEV)][n+1];
367
+ if (elimweight)
368
+ {
369
+ intmat V2[size(NEV)][n+1];
370
+ }
371
+ int rowV1,rowV2;
372
+ intmat M[1][n];
373
+ intmat M2,oldM;
374
+ int i,j,k;
375
+ for (i=1; i<=n; i++)
376
+ {
377
+ if (elimweight)
378
+ {
379
+ if (NEV[i]<>0)
380
+ {
381
+ V2[rowV2+1,i+1] = 1; // xj == 0
382
+ rowV2++;
383
+ }
384
+ else
385
+ {
386
+ V1[rowV1+1,1] = 1; // 1-xi <= 0
387
+ V1[rowV1+1,i+1] = -1;
388
+ rowV1++;
389
+ }
390
+ }
391
+ else
392
+ {
393
+ V1[i,1] = 1; // 1-xi <= 0
394
+ V1[i,i+1] = -1;
395
+ rowV1++;
396
+ }
397
+ for (j=i+1; j<=n; j++)
398
+ {
399
+ if (deg(D[i,j])>0)
400
+ {
401
+ M2 = newtonDiag(D[i,j]);
402
+ for (k=1; k<=nrows(M2); k++)
403
+ {
404
+ M2[k,i] = M2[k,i] - 1; // <beta,x> >= 0
405
+ M2[k,j] = M2[k,j] - 1;
406
+ }
407
+ oldM = M;
408
+ M = intmat(M,nrows(M)+nrows(M2),n);
409
+ M = oldM,M2;
410
+ }
411
+ }
412
+ }
413
+ intvec eq = 0,(-1:n);
414
+ ring r = 0,x,dp; // to avoid problems with pars or char>0
415
+ module MM = module(transpose(matrix(M)));
416
+ MM = simplify(MM,2+4);
417
+ matrix A;
418
+ if (MM[1]<>0)
419
+ {
420
+ if (elimweight)
421
+ {
422
+ MM = 0,transpose(MM);
423
+ }
424
+ else
425
+ {
426
+ MM = module(matrix(1:ncols(MM)))[1],transpose(MM);
427
+ }
428
+ A = transpose(concat(matrix(eq),transpose(-MM)));
429
+ }
430
+ else
431
+ {
432
+ A = transpose(eq);
433
+ }
434
+ A = transpose(concat(transpose(A),matrix(transpose(V1))));
435
+ if (elimweight)
436
+ {
437
+ A = transpose(concat(transpose(A),matrix(transpose(V2))));
438
+ }
439
+ int m = nrows(A)-1;
440
+ ring realr = (real,10),x,lp;
441
+ matrix A = imap(r,A);
442
+ dbprint(ppl,"// Calling simplex...");
443
+ dbprint(ppl-1,"// with the matrix " + print(A));
444
+ dbprint(ppl-1,"// and parameters "
445
+ + string(intvec(m,n,m-rowV1-rowV2,rowV1,rowV2)));
446
+ list L = simplex(A,m,n,m-rowV1-rowV2,rowV1,rowV2);
447
+ int se = L[2];
448
+ if (se==-2)
449
+ {
450
+ ERROR("simplex yielded an error. Please inform the authors.");
451
+ }
452
+ intvec w = 0:n;
453
+ if (se==0)
454
+ {
455
+ matrix S = L[1];
456
+ intvec s = L[3];
457
+ for (i=2; i<=nrows(S); i++)
458
+ {
459
+ if (s[i-1]<=n)
460
+ {
461
+ w[s[i-1]] = int(S[i,1]);
462
+ }
463
+ }
464
+ }
465
+ setring save;
466
+ return(w);
467
+ }
468
+
469
+
470
+ proc eliminateNC (ideal I, intvec v, list #)
471
+ "
472
+ USAGE: eliminateNC(I,v,eng); I ideal, v intvec, eng optional int
473
+ RETURN: ideal, I intersected with the subring defined by the variables not
474
+ index by the entries of v
475
+ ASSUME: The entries of v are in the range 1..nvars(basering) and the
476
+ corresponding variables generate an admissible subalgebra.
477
+ REMARKS: In order to determine the required elimination ordering, a linear
478
+ programming problem is solved with the simplex algorithm.
479
+ @* Reference: (GML)
480
+ @* Unlike eliminate, this procedure will always find an elimination
481
+ ordering, if such exists.
482
+ NOTE: If eng<>0, @code{std} is used for Groebner basis computations,
483
+ otherwise (and by default) @code{slimgb} is used.
484
+ @* If printlevel=1, progress debug messages will be printed,
485
+ if printlevel>=2, all the debug messages will be printed.
486
+ SEE ALSO: eliminate (plural)
487
+ EXAMPLE: example eliminateNC; shows examples
488
+ "
489
+ {
490
+ int ppl = printlevel - voice + 2;
491
+ v = checkIntvec(v);
492
+ if (!admissibleSub(v))
493
+ {
494
+ ERROR("Subalgebra is not admissible: no elimination is possible.");
495
+ }
496
+ dbprint(ppl,"// Subalgebra is admissible.");
497
+ int eng;
498
+ if (size(#)>0)
499
+ {
500
+ if (typeof(#[1])=="int" || typeof(#[1])=="number")
501
+ {
502
+ eng = int(#[1]);
503
+ }
504
+ }
505
+ def save = basering;
506
+ int n = nvars(save);
507
+ dbprint(ppl,"// Computing elimination weight...");
508
+ intvec w = elimWeight(v);
509
+ if (w==(0:n))
510
+ {
511
+ ERROR("No elimination ordering exists.");
512
+ }
513
+ dbprint(ppl,"// ...done.");
514
+ dbprint(ppl-1,"// Using elimination weight " + string(w) + ".");
515
+ def r = appendWeight2Ord(w);
516
+ setring r;
517
+ ideal I = imap(save,I);
518
+ dbprint(ppl,"// Computing Groebner basis with engine " + string(eng)+"...");
519
+ I = engine(I,eng);
520
+ dbprint(ppl,"// ...done.");
521
+ dbprint(ppl-1,string(I));
522
+ I = nselect(I,v);
523
+ setring save;
524
+ I = imap(r,I);
525
+ return(I);
526
+ }
527
+ example
528
+ {
529
+ "EXAMPLE:"; echo = 2;
530
+ // (Lev): Example 2
531
+ ring r = 0,(a,b,x,d),Dp;
532
+ matrix D[4][4];
533
+ D[1,2] = 3*a; D[1,4] = 3*x^2;
534
+ D[2,3] = -x; D[2,4] = d; D[3,4] = 1;
535
+ def A = nc_algebra(1,D);
536
+ setring A; A;
537
+ ideal I = a,x;
538
+ // Since d*a-a*d = 3*x^2, any admissible ordering has to satisfy
539
+ // x^2 < a*d, while any elimination ordering for {x,d} additionally
540
+ // has to fulfil a << x and a << d.
541
+ // Hence, the weight (0,0,1,1) is not an elimination weight for
542
+ // (x,d) and the call eliminate(I,x*d); will produce an error.
543
+ eliminateNC(I,3..4);
544
+ // This call uses the elimination weight (0,0,1,2), which works.
545
+ }
546
+
547
+
548
+
549
+ // -- Preimages ------------------------------------------------
550
+
551
+ // TODO A or B commutative
552
+ proc extendedTensor(def A, ideal I)
553
+ "
554
+ USAGE: extendedTensor(A,I); A ring, I ideal
555
+ RETURN: ring, A+B (where B denotes the basering) extended with non-
556
+ commutative relations between the vars of A and B, which arise from
557
+ the homomorphism A -> B induced by I in the usual sense, i.e. if the
558
+ vars of A are named x(i) and the vars of B y(j), then putting
559
+ q(i)(j) = leadcoef(y(j)*I[i])/leadcoef(I[i]*y(j)) and
560
+ r(i)(j) = y(j)*I[i] - q(i)(j)*I[i]*y(j) yields the relation
561
+ y(j)*x(i) = q(i)(j)*x(i)*y(j)+r(i)(j).
562
+ REMARK: Reference: (Lev)
563
+ EXAMPLE: example extendedTensor; shows examples
564
+ "
565
+ {
566
+ def B = basering;
567
+ setring A;
568
+ int nA = nvars(A);
569
+ string varA = "," + charstr(A) + "," + varstr(A) + ",";
570
+ setring B;
571
+ int nB = nvars(B);
572
+ list RL = ringlist(B);
573
+ list L = RL[2];
574
+ string vB;
575
+ int i,j;
576
+ for (i=1; i<=nB; i++)
577
+ {
578
+ vB = "," + L[i] + ",";
579
+ while (find(varA,vB)<>0)
580
+ {
581
+ vB[1] = "@";
582
+ vB = "," + vB;
583
+ }
584
+ vB = vB[2..size(vB)-1];
585
+ L[i] = vB;
586
+ }
587
+ RL[2] = L;
588
+ def @B = ring(RL);
589
+ kill L,RL;
590
+ setring @B;
591
+ ideal I = fetch(B,I);
592
+ def E = A+@B;
593
+ setring E;
594
+ ideal I = imap(@B,I);
595
+ matrix C = ringlist(E)[5];
596
+ matrix D = ringlist(E)[6];
597
+ poly p,q;
598
+ for (i=1; i<=nA; i++)
599
+ {
600
+ for (j=nA+1; j<=nA+nB; j++)
601
+ {
602
+ // upper right block: new relations
603
+ p = var(j)*I[i];
604
+ q = I[i]*var(j);
605
+ C[i,j] = leadcoef(p)/leadcoef(q);
606
+ D[i,j] = p - C[i,j]*q;
607
+ }
608
+ }
609
+ def @EE = commRing();
610
+ setring @EE;
611
+ matrix C = imap(E,C);
612
+ matrix D = imap(E,D);
613
+ def EE = nc_algebra(C,D);
614
+ setring B;
615
+ return(EE);
616
+ }
617
+ example
618
+ {
619
+ "EXAMPLE:"; echo = 2;
620
+ def A = makeWeyl(2);
621
+ setring A; A;
622
+ def B = makeUgl(2);
623
+ setring B; B;
624
+ ideal I = var(1)*var(3), var(1)*var(4), var(2)*var(3), var(2)*var(4);
625
+ I;
626
+ def C = extendedTensor(A,I);
627
+ setring C; C;
628
+ }
629
+
630
+
631
+ proc preimageNC (list #)
632
+ "
633
+ USAGE: preimageNC(A,f,J[,P,eng]); A ring, f map or ideal, J ideal,
634
+ P optional string, eng optional int
635
+ ASSUME: f defines a map from A to the basering.
636
+ RETURN: nothing, instead exports an object `preim' of type ideal to ring A,
637
+ being the preimage of J under f.
638
+ NOTE: If P is given and not equal to the empty string, the preimage is
639
+ exported to A under the name specified by P.
640
+ Otherwise (and by default), P is set to `preim'.
641
+ @* If eng<>0, @code{std} is used for Groebner basis computations,
642
+ otherwise (and by default) @code{slimgb} is used.
643
+ @* If printlevel=1, progress debug messages will be printed,
644
+ if printlevel>=2, all the debug messages will be printed.
645
+ REMARK: Reference: (Lev)
646
+ SEE ALSO: preimage (plural)
647
+ EXAMPLE: example preimageNC; shows examples
648
+ "
649
+ {
650
+ int ppl = printlevel - voice + 2;
651
+ if (size(#) <3)
652
+ {
653
+ ERROR("Expected 3 arguments.")
654
+ }
655
+ def B = basering;
656
+ if (typeof(#[1])<>"ring")
657
+ {
658
+ ERROR("First argument must be a ring.");
659
+ }
660
+ def A = #[1];
661
+ setring A;
662
+ ideal mm = maxideal(1);
663
+ setring B;
664
+ if (typeof(#[2])=="map" || typeof(#[2])=="ideal")
665
+ {
666
+ map phi = A,ideal(#[2]);
667
+ }
668
+ else
669
+ {
670
+ ERROR("Second argument must define a map from the specified ring to the basering.");
671
+ }
672
+ if (typeof(#[3])<>"ideal")
673
+ {
674
+ ERROR("Third argument must be an ideal in the specified ring");
675
+ }
676
+ ideal J = #[3];
677
+ string str = "preim";
678
+ int eng;
679
+ if (size(#)>3)
680
+ {
681
+ if (typeof(#[4])=="string")
682
+ {
683
+ if (#[4]<>"")
684
+ {
685
+ str = #[4];
686
+ }
687
+ }
688
+ if (size(#)>4)
689
+ {
690
+ if (typeof(#[5])=="int")
691
+ {
692
+ eng = #[5];
693
+ }
694
+ }
695
+ }
696
+ setring B;
697
+ ideal I = phi(mm);
698
+ def E = extendedTensor(A,I);
699
+ setring E;
700
+ dbprint(ppl,"// Computing in ring");
701
+ dbprint(ppl,E);
702
+ int nA = nvars(A);
703
+ int nB = nvars(B);
704
+ ideal @B2E = maxideal(1);
705
+ @B2E = @B2E[(nA+1)..(nA+nB)];
706
+ map B2E = B,@B2E;
707
+ ideal I = B2E(I);
708
+ ideal Iphi;
709
+ int i,j;
710
+ for (i=1; i<=nA; i++)
711
+ {
712
+ Iphi[size(Iphi)+1] = var(i) - I[i];
713
+ }
714
+ dbprint(ppl,"// I_{phi} is " + string(Iphi));
715
+ ideal J = imap(B,J);
716
+ J = J + Iphi;
717
+ intvec v = (nA+1)..(nA+nB);
718
+ dbprint(ppl,"// Starting elimination...");
719
+ dbprint(ppl-1,string(J));
720
+ J = eliminateNC(J,v,eng);
721
+ dbprint(ppl,"// ...done.");
722
+ dbprint(ppl-1,string(J));
723
+ J = nselect(J,v);
724
+ attrib(J,"isSB",1);
725
+ setring A;
726
+ dbprint(ppl,"// Writing output to specified ring under the name `"
727
+ + str + "'.");
728
+ ideal `str` = imap(E,J); export(`str`);
729
+ setring B;
730
+ return();
731
+ }
732
+ example
733
+ {
734
+ "EXAMPLE:"; echo = 2;
735
+ def A = makeUgl(3); setring A; A; // universal enveloping algebra of gl_3
736
+ ring r3 = 0,(x,y,z,Dx,Dy,Dz),dp;
737
+ def B = Weyl(); setring B; B; // third Weyl algebra
738
+ ideal ff = x*Dx,x*Dy,x*Dz,y*Dx,y*Dy,y*Dz,z*Dx,z*Dy,z*Dz;
739
+ map f = A,ff; // f: A -> B, e(i,j) |-> x(i)D(j)
740
+ ideal J = 0;
741
+ preimageNC(A,f,J,"K"); // compute K := ker(f)
742
+ setring A;
743
+ K;
744
+ }
745
+
746
+
747
+ // -- Examples ---------------------------------------------
748
+
749
+ static proc ex1 ()
750
+ {
751
+ ring r1 = 0,(a,b),dp;
752
+ int t = 7;
753
+ def St = nc_algebra(1,t*a);
754
+ ring r2 = 0,(x,D),dp;
755
+ def W = nc_algebra(1,1); // W is the first Weyl algebra
756
+ setring W;
757
+ map psit = St, x^t,x*D+t;
758
+ int p = 3;
759
+ ideal Ip = x^p, x*D+p;
760
+ preimageNC(St,psit,Ip);
761
+ setring St; preim;
762
+ }
763
+
764
+
765
+ static proc ex2 ()
766
+ {
767
+ ring r1 = 0,(e,f,h),dp;
768
+ matrix D1[3][3]; D1[1,2] = -h; D1[1,3] = 2*e; D1[2,3] = -2*f;
769
+ def U = nc_algebra(1,D1); // D is U(sl_2)
770
+ ring r2 = 0,(x,D),dp;
771
+ def W = nc_algebra(1,1); // W is the first Weyl algebra
772
+ setring W;
773
+ ideal tau = x,-x*D^2,2*x*D;
774
+ def E = extendedTensor(U,tau);
775
+ setring E; E;
776
+ elimWeight(4..5);
777
+ // zero, since there is no elimination ordering for x,D in E
778
+ }
779
+
780
+
781
+ static proc ex3 ()
782
+ {
783
+ ring r1 = 0,(x,d,s),dp;
784
+ matrix D1[3][3]; D1[1,2] = 1;
785
+ def A = nc_algebra(1,D1);
786
+ ring r2 = 0,(X,DX,T,DT),dp;
787
+ matrix D2[4][4]; D2[1,2] = 1; D2[3,4] = 1;
788
+ def B = nc_algebra(1,D2);
789
+ setring B;
790
+ map phi = A, X,DX,-DT*T;
791
+ ideal J = T-X^2, DX+2*X*DT;
792
+ preimageNC(A,phi,J);
793
+ setring A;
794
+ preim;
795
+ }