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,858 @@
1
+ ////////////////////////////////////////////////////////////////////////////
2
+ version="version teachstd.lib 4.1.2.0 Feb_2019 "; // $Id: 4eea43732c1eb110ab24d9613c3c53c9d464921c $
3
+ category="Teaching";
4
+ info="
5
+ LIBRARY: teachstd.lib Procedures for teaching standard bases
6
+ AUTHOR: G.-M. Greuel, greuel@mathematik.uni-kl.de
7
+
8
+ NOTE: The library is intended to be used for teaching purposes, but not
9
+ for serious computations. Sufficiently high printlevel allows to
10
+ control each step, thus illustrating the algorithms at work.
11
+ The procedures are implemented exactly as described in the book
12
+ 'A SINGULAR Introduction to Commutative Algebra' by G.-M. Greuel and
13
+ G. Pfister (Springer 2002).
14
+
15
+ PROCEDURES:
16
+ ecart(f); ecart of f
17
+ tail(f); tail of f
18
+ sameComponent(f,g); test for same module component of lead(f) and lead(g)
19
+ leadmonomial(f); leading monomial as polynomial (also for vectors)
20
+ monomialLcm(m,n); lcm of monomials m and n as polynomial (also for vectors)
21
+ spoly(f[,1]); s-polynomial of f [symmetric form]
22
+ minEcart(T,h); element g from T of minimal ecart s.t. LM(g)|LM(h)
23
+ NFMora(i); normal form of i w.r.t Mora algorithm
24
+ prodcrit(f,g[,o]); test for product criterion
25
+ chaincrit(f,g,h); test for chain criterion
26
+ pairset(G); pairs form G neither satisfying prodcrit nor chaincrit
27
+ updatePairs(P,S,h); pairset P enlarded by not useless pairs (h,f), f in S
28
+ standard(id); standard basis of ideal/module
29
+ localstd(id); local standard basis of id using Lazard's method
30
+
31
+ [parameters in square brackets are optional]
32
+ ";
33
+
34
+ LIB "polylib.lib";
35
+ LIB "ring.lib";
36
+
37
+ ///////////////////////////////////////////////////////////////////////////////
38
+ proc ecart(def f)
39
+ "USAGE: ecart(f); f poly or vector
40
+ RETURN: the ecart e of f of type int
41
+ EXAMPLE: example ecart; shows an example
42
+ "
43
+ {
44
+ int e = maxdeg1(f)-maxdeg1(lead(f));
45
+ return(e);
46
+ }
47
+ example
48
+ { "EXAMPLE:"; echo = 2;
49
+ ring r=0,(x,y,z),ls;
50
+ ecart((y+z+x+xyz)**2);
51
+ ring s=0,(x,y,z),dp;
52
+ ecart((y+z+x+xyz)**2);
53
+ }
54
+ ///////////////////////////////////////////////////////////////////////////////
55
+ proc leadmonomial(def f)
56
+ "USAGE: leadmonomial(f); f poly or vector
57
+ RETURN: the leading monomial of f of type poly
58
+ NOTE: if f is of type poly, leadmonomial(f)=leadmonom(f), if f is of type
59
+ vector and if leadmonom(f)=m*gen(i) then leadmonomial(f)=m
60
+ EXAMPLE: example leadmonomial; shows an example
61
+ "
62
+ {
63
+ int e;
64
+ poly m;
65
+ if(typeof(f) == "vector")
66
+ {
67
+ e=leadexp(f)[nvars(basering)+1];
68
+ m=leadmonom(f)[e,1];
69
+ }
70
+ if(typeof(f) == "poly")
71
+ {
72
+ m=leadmonom(f);
73
+ }
74
+ return(m);
75
+ }
76
+ example
77
+ { "EXAMPLE:"; echo = 2;
78
+ ring s=0,(x,y,z),(c,dp);
79
+ leadmonomial((y+z+x+xyz)^2);
80
+ leadmonomial([(y+z+x+xyz)^2,xyz5]);
81
+ }
82
+ ///////////////////////////////////////////////////////////////////////////////
83
+ proc tail(def f)
84
+ "USAGE: tail(f); f poly or vector
85
+ RETURN: f-lead(f), the tail of f of type poly
86
+ EXAMPLE: example tail; shows an example
87
+ "
88
+ {
89
+ def t = f-lead(f);
90
+ return(t);
91
+ }
92
+ example
93
+ { "EXAMPLE:"; echo = 2;
94
+ ring r=0,(x,y,z),ls;
95
+ tail((y+z+x+xyz)**2);
96
+ ring s=0,(x,y,z),dp;
97
+ tail((y+z+x+xyz)**2);
98
+ }
99
+ ///////////////////////////////////////////////////////////////////////////////
100
+ proc sameComponent(def f,def g)
101
+ "USAGE: sameComponent(f,g); f,g poly or vector
102
+ RETURN: 1 if f and g are of type poly or if f and g are of type vector and
103
+ their leading monomials involve the same module component,
104
+ 0 if not
105
+ EXAMPLE: example sameComponent; shows an example
106
+ "
107
+ {
108
+ if(typeof(f) != typeof(g))
109
+ {
110
+ ERROR("** arguments must be of same type");
111
+ }
112
+ if(typeof(f) == "vector")
113
+ {
114
+ if( leadexp(f)[nvars(basering)+1] != leadexp(g)[nvars(basering)+1] )
115
+ {
116
+ return(0);
117
+ }
118
+ }
119
+ return(1);
120
+ }
121
+ example
122
+ { "EXAMPLE:"; echo = 2;
123
+ ring r=0,(x,y,z),dp;
124
+ sameComponent([y+z+x,xyz],[z2,xyz]);
125
+ sameComponent([y+z+x,xyz],[z4,xyz]);
126
+ sameComponent(y+z+x+xyz, xy+z5);
127
+ }
128
+ ///////////////////////////////////////////////////////////////////////////////
129
+ proc monomialLcm(def m,def n)
130
+ "USAGE: monomialLcm(m,n); m,n of type poly or vector
131
+ RETURN: least common multiple of leading monomials of m and n, of type poly
132
+ NOTE: if m = (x1...xr)^(a1,...,ar)*gen(i) (gen(i)=1 if m is of type poly)
133
+ and n = (x1...xr)^(b1,...,br)*gen(j), then the proc returns
134
+ (x1,...,xr)^(max(a1,b1),...,max(ar,br)) if i=j and 0 if i!=j.
135
+ EXAMPLE: example monomialLcm; shows an example
136
+ "
137
+ {
138
+ if(typeof(n) != typeof(m))
139
+ {
140
+ ERROR("** arguments must be of same type");
141
+ }
142
+
143
+ poly u ;
144
+ if(sameComponent(m,n) == 0) //leading term of vectors involve
145
+ { //different module components
146
+ return(u);
147
+ }
148
+
149
+ intvec v = leadexp(m); //now start to compute lcm
150
+ intvec w = leadexp(n);
151
+ u=1;
152
+ int i;
153
+ for (i=1; i<=nvars(basering); i++)
154
+ {
155
+ if(v[i]>=w[i])
156
+ {
157
+ u = u*var(i)**v[i];
158
+ }
159
+ else
160
+ {
161
+ u = u*var(i)**w[i];
162
+ }
163
+ }
164
+ return(u);
165
+ }
166
+ example
167
+ { "EXAMPLE:"; echo = 2;
168
+ ring r=0,(x,y,z),ds;
169
+ monomialLcm(xy2,yz3);
170
+ monomialLcm([xy2,xz],[yz3]);
171
+ monomialLcm([xy2,xz3],[yz3]);
172
+ }
173
+ ///////////////////////////////////////////////////////////////////////////////
174
+ proc spoly(def f,def g,list #)
175
+ "USAGE: spoly(f,g[,s]); f,g poly or vector, s int
176
+ RETURN: the s-polynomial of f and g, of type poly or vector
177
+ if s!=0 the symmetric s-polynomial (without division) is returned
178
+ EXAMPLE: example spoly; shows an example
179
+ "
180
+ {
181
+ if(typeof(f) != typeof(g))
182
+ {
183
+ ERROR("** arguments must be of same type");
184
+ }
185
+ if(size(#) == 0)
186
+ {
187
+ #[1]=0;
188
+ }
189
+
190
+ int e;
191
+ poly o = monomialLcm(f,g);
192
+
193
+ if( o == 0) //can only happen, if vectors f and g involve
194
+ { //different module components
195
+ vector sp;
196
+ return(sp);
197
+ }
198
+
199
+ poly m=(o/leadmonomial(f)); //compute the leading monomial as poly
200
+ poly n=(o/leadmonomial(g));
201
+
202
+ f = m * f;
203
+ g = n * g; // now they have the same LM!
204
+
205
+ if (#[1]==0) //the asymmetric s-poly
206
+ {
207
+ def sp = f - (leadcoef(f)/leadcoef(g))*g;
208
+ }
209
+ else //the symmetric s-poly, avoiding division
210
+ {
211
+ def sp = leadcoef(g)*f - leadcoef(f)*g;
212
+ }
213
+ return(sp);
214
+ }
215
+ example
216
+ { "EXAMPLE:"; echo = 2;
217
+ ring r=0,(x,y,z),ls;
218
+ spoly(2x2+x2y,3y3+xyz);
219
+ ring s=0,(x,y,z),(c,dp);
220
+ spoly(2x2+x2y,3y3+xyz);
221
+ spoly(2x2+x2y,3y3+xyz,1); //symmetric s-poly without division
222
+ spoly([5x2+x2y,z5],[x2,y3,y4]); //s-poly for vectors
223
+ }
224
+ ///////////////////////////////////////////////////////////////////////////////
225
+ proc minEcart(def T,def h)
226
+ "USAGE: minEcart(T,h); T ideal or module, h poly or vector
227
+ RETURN: element g from T such that leadmonom(g) divides leadmonom(h)@*
228
+ ecart(g) is minimal with this property (if T != 0);
229
+ return 0 if T is 0 or h = 0
230
+ EXAMPLE: example minEcart; shows an example
231
+ "
232
+ {
233
+ int i,k,e;
234
+ if (size(T)==0 or h==0 ) //trivial cases
235
+ {
236
+ h = 0;
237
+ return(h);
238
+ }
239
+ //---- check whether some element in T has the same module component as h ----
240
+ int v;
241
+ intvec w;
242
+ T = simplify(T,2);
243
+
244
+ if (typeof(h) == "vector")
245
+ {
246
+ e=1;
247
+ v = leadexp(h)[nvars(basering)+1];
248
+ for( i=1; i<=size(T); i++)
249
+ {
250
+ w[i]=leadexp(T[i])[nvars(basering)+1];
251
+ if(v == w[i])
252
+ {
253
+ e=0; //some element in T involves the same component as h
254
+ }
255
+ }
256
+ }
257
+ if ( e == 1 ) //no element in T involves the same component as h
258
+ {
259
+ h = 0;
260
+ return(h);
261
+ }
262
+
263
+ if (typeof(h) == "poly") //for polys v=w[i] for all i
264
+ {
265
+ v = 1;
266
+ w[size(T)]=0;
267
+ w=w+1;
268
+ }
269
+
270
+ //------ check whether for some g in T leadmonom(g) divides leadmonom(h) -----
271
+ def g = T[1];
272
+ poly f = leadmonomial(h);
273
+
274
+ for( i=1; i<=size(T); i++)
275
+ {
276
+ if( f/leadmonomial(T[i]) != 0 and v==w[i] )
277
+ {
278
+ g=T[i];
279
+ k=i;
280
+ break;
281
+ }
282
+ }
283
+ if (k == 0) //no leadmonom(g) divides leadmonom(h)
284
+ {
285
+ g = 0;
286
+ return(g);
287
+ }
288
+ //--look for T[i] with minimal ecart s.t.leadmonom(T[i]) divides leadmonom(h)--
289
+
290
+ for( i=k+1; i<=size(T); i++)
291
+ {
292
+ if( f/leadmonomial(T[i]) != 0 and v==w[i] )
293
+ {
294
+ if (ecart(T[i]) < ecart(g))
295
+ {
296
+ g=T[i];
297
+ }
298
+ }
299
+ }
300
+ return(g);
301
+ }
302
+ example
303
+ { "EXAMPLE:"; echo = 2;
304
+ ring R=0,(x,y,z),dp;
305
+ ideal T = x2y+x2,y3+xyz,xyz2+z4;
306
+ poly h = x2y2z2+x5+yx3+z6;
307
+ minEcart(T,h);"";
308
+ ring S=0,(x,y,z),(c,ds);
309
+ module T = [x2+x2y,y2],[y3+xyz,x3-z3],[x3y+z4,0,x2];
310
+ vector h = [x3y+x5+x2y2z2+z6,x3];
311
+ minEcart(T,h);
312
+ }
313
+ ///////////////////////////////////////////////////////////////////////////////
314
+ proc NFMora(def f,def G,list #)
315
+ "USAGE: NFMora(f,G[,s]); f poly or vector,G ideal or module, s int
316
+ RETURN: the Mora normal form of f w.r.t. G, same type as f
317
+ if s!=0 the symmetric s-polynomial (without division) is used
318
+ NOTE: Show comments if printlevel > 0, pauses computation if printlevel > 1
319
+ EXAMPLE: example NFMora; shows an example
320
+ "
321
+ {
322
+ if(size(#) == 0)
323
+ {
324
+ #[1]=0;
325
+ }
326
+
327
+ int y = printlevel - voice + 2;
328
+ if( f==0 or size(G) ==0 )
329
+ {
330
+ if (y>0)
331
+ {
332
+ "// 1st or 2nd argument 0";
333
+ }
334
+ return(f);
335
+ }
336
+
337
+ int i,e;
338
+ def h = f;
339
+ def T = G;
340
+ // -------------------- start with f to be reduced by G --------------------
341
+ if (y>0)
342
+ {"";
343
+ "// Input for NFMora is (f,T):";
344
+ "// f:"; f;
345
+ "// T:"; T;
346
+ "// Reduce f with T, eventually enlarging T for local ordering";
347
+ }
348
+
349
+ // ----------------------- enter the reduction loop ------------------------
350
+ def g = minEcart(T,h);
351
+ while (h!=0 and g!=0)
352
+ {
353
+ if (y>0)
354
+ { "";
355
+ "// Reduction-step in NFMora:",i;
356
+ "// h = (f after",i,"reductions) reduction with g from T:";
357
+ "// g = element of minimal ecart in T s.t. LM(g)|LM(h):";
358
+ "// h:";h;
359
+ "// g:";g;
360
+ }
361
+ if (y>1)
362
+ {
363
+ pause("press <return> to continue");
364
+ "// T, set used for reduction:"; T;
365
+ pause("press <return> to continue");
366
+ }
367
+ e=0;
368
+ if( ecart(g) > ecart(h) )
369
+ {
370
+ T=T,h; e=1;
371
+ }
372
+ if (y>0 )
373
+ {
374
+ "// T-set enlarged for next reduction? (yes/no = 1/0): ", e;
375
+ if( e==1 )
376
+ {
377
+ "// T-set for next reduction got enlarged by h:";
378
+ "// h:";h;
379
+ if (y>1)
380
+ {
381
+ pause("press <return> to continue");
382
+ }
383
+ }
384
+ }
385
+ h = spoly(h,g,#[1]);
386
+ g = minEcart(T,h);
387
+ i=i+1;
388
+ }
389
+ if(y>0)
390
+ { "";
391
+ "// normal form is:";
392
+ }
393
+ return(h);
394
+ }
395
+ example
396
+ { "EXAMPLE:"; echo = 2;
397
+ ring r=0,(x,y,z),dp;
398
+ poly f = x2y2z2+x5+yx3+z6-3y3;
399
+ ideal G = x2y+x2,y3+xyz,xyz2+z6;
400
+ NFMora(f,G);"";
401
+ ring s=0,(x,y,z),ds;
402
+ poly f = x3y+x5+x2y2z2+z6;
403
+ ideal G = x2+x2y,y3+xyz,x3y2+z4;
404
+ NFMora(f,G);"";
405
+ vector v = [f,x2+x2y];
406
+ module M = [x2+x2y,f],[y3+xyz,y3],[x3y2+z4,z2];
407
+ NFMora(v,M);
408
+ }
409
+ ///////////////////////////////////////////////////////////////////////////////
410
+ proc prodcrit(def f,def g,list #)
411
+ "USAGE: prodcrit(f,g[,o]); f,g poly or vector, and optional int argument o
412
+ RETURN: 1 if product criterion applies in the same module component,
413
+ 2 if lead(f) and lead(g) involve different components, 0 else
414
+ NOTE: if product criterion applies we can delete (f,g) from pairset.
415
+ This procedure returns 0 if o is given and is a positive integer, or
416
+ you may set the attribute \"default_arg\" for prodcrit to 1.
417
+ EXAMPLE: example prodcrit; shows an example
418
+ "
419
+ {
420
+ // ------------------ check for optional disabling argument -------------
421
+ if( size(#) > 0 )
422
+ {// "size(#): ", size(#); "typeof(#[1]): ", typeof(#[1]);
423
+
424
+ if( typeof(#[1]) == "int" )
425
+ {// "#[1] = int ", #[1];
426
+ if( #[1] > 0 )
427
+ {
428
+ return(0);
429
+ }
430
+ }
431
+ }
432
+
433
+ // ------------------- product criterion for polynomials ---------------------
434
+ if(typeof(f)=="poly")
435
+ {
436
+ if( monomialLcm(f,g)==leadmonom(f)*leadmonom(g))
437
+ {
438
+ return(1);
439
+ }
440
+ return(0);
441
+ }
442
+ // ------------------- product criterion for modules ---------------------
443
+ if(sameComponent(f,g)==1)
444
+ {
445
+ if( monomialLcm(f,g)==leadmonomial(f)*leadmonomial(g) )
446
+ {
447
+ int c = leadexp(f)[nvars(basering)+1]; //component involving lead(f)
448
+ if((f-f[c]*gen(c))-(g-g[c]*gen(c))==0) //other components are 0
449
+ {
450
+ return(1);
451
+ }
452
+ }
453
+ return(0);
454
+ }
455
+ return(2);
456
+ }
457
+ example
458
+ { "EXAMPLE:"; echo = 2;
459
+ ring r=0,(x,y,z),dp;
460
+ poly f = y3z3+x5+yx3+z6;
461
+ poly g = x5+yx3;
462
+ prodcrit(f,g);
463
+ vector v = x3z2*gen(1)+x3y*gen(1)+x2y*gen(2);
464
+ vector w = y4*gen(1)+y3*gen(2)+xyz*gen(1);
465
+ prodcrit(v,w);
466
+ }
467
+ ///////////////////////////////////////////////////////////////////////////////
468
+ proc chaincrit(def f,def g,def h)
469
+ "USAGE: chaincrit(f,g,h); f,g,h poly or module
470
+ RETURN: 1 if chain criterion applies, 0 else
471
+ NOTE: if chain criterion applies to f,g,h we can delete (g,h) from pairset
472
+ EXAMPLE: example chaincrit; shows an example
473
+ "
474
+ {
475
+ if(sameComponent(f,g) and sameComponent(f,h))
476
+ {
477
+ if( monomialLcm(g,h)/leadmonomial(f) !=0 )
478
+ {
479
+ return(1);
480
+ }
481
+ }
482
+ return(0);
483
+ }
484
+ example
485
+ { "EXAMPLE:"; echo = 2;
486
+ ring r=0,(x,y,z),dp;
487
+ poly f = x2y2z2+x5+yx3+z6;
488
+ poly g = x5+yx3;
489
+ poly h = y2z5+x5+yx3;
490
+ chaincrit(f,g,h);
491
+ vector u = [x2y3-z2,x2y];
492
+ vector v = [x2y2+z2,x2-y2];
493
+ vector w = [x2y4+z3,x2+y2];
494
+ chaincrit(u,v,w);
495
+ }
496
+ ///////////////////////////////////////////////////////////////////////////////
497
+ proc pairset(def G)
498
+ "USAGE: pairset(G); G ideal or module
499
+ RETURN: list L,
500
+ L[1] = the pairset of G as list (not containing pairs for
501
+ which the product or the chain criterion applies),
502
+ L[2] = intvec v, v[1]= # product criterion, v[2]= # chain criterion
503
+ EXAMPLE: example pairset; shows an example
504
+ "
505
+ {
506
+ int i,j,k,s,c,ccrit,pcrit,pr;
507
+ int y = printlevel - voice + 2;
508
+ G = simplify(G,10);
509
+ def g = G;
510
+ ideal pair;
511
+ list P,I; //P=pairlist of G, I=list of corresponding indices of pairs
512
+ for (i=1; i<=size(G); i++)
513
+ {
514
+ for(j = i+1; j<=size(G); j++)
515
+ {
516
+ pr = prodcrit(G[i],G[j]); //check first product criterion
517
+ if( pr != 0 )
518
+ {
519
+ pcrit=pcrit+(pr==1);
520
+ }
521
+ else
522
+ {
523
+ s = size(P); //now check chain criterion
524
+ for(k=1; k<=s; k++)
525
+ {
526
+ if( i==I[k][2] )
527
+ {
528
+ if ( chaincrit(P[k][1],P[k][2],G[j]) )
529
+ { //need not include (G[i],G[j]) in P
530
+ c=1; ccrit=ccrit+1;
531
+ break;
532
+ }
533
+ }
534
+ if( j==I[k][1] and c==0 )
535
+ {
536
+ "########### enter pairset2 #############";
537
+ if ( chaincrit(G[i],P[k][1],P[k][2]) )
538
+ { //can delete P[k]=(P[k][1],P[k][2])
539
+ ccrit=ccrit+1;
540
+ P = delete(P,k);
541
+ s = s-1;
542
+ }
543
+ }
544
+ }
545
+ if ( c==0 )
546
+ {
547
+ g = G[i],G[j];
548
+ P[s+1]=g;
549
+ I[s+1]=intvec(i,j);
550
+ }
551
+ c=0;
552
+ }
553
+ }
554
+ }
555
+ if (y>0)
556
+ { "";
557
+ "// product criterion:",pcrit," chain criterion:",ccrit;
558
+ }
559
+ intvec v = pcrit,ccrit;
560
+ P=P,v;
561
+ return(P);
562
+ }
563
+ example
564
+ { "EXAMPLE:"; echo = 2;
565
+ ring r=0,(x,y,z),dp;
566
+ ideal G = x2y+x2,y3+xyz,xyz2+z4;
567
+ pairset(G);"";
568
+ module T = [x2y3-z2,x2y],[x2y2+z2,x2-y2],[x2y4+z3,x2+y2];
569
+ pairset(T);
570
+ }
571
+ ///////////////////////////////////////////////////////////////////////////////
572
+ proc updatePairs(def P,def S,def h)
573
+ "USAGE: updatePairs(P,S,h); P list, S ideal or module, h poly or vector@*
574
+ P a list of pairs of polys or vectors (obtained from pairset)
575
+ RETURN: list Q,
576
+ Q[1] = the pairset P enlarged by all pairs (f,h), f from S,
577
+ without pairs for which the product or the chain criterion applies@*
578
+ Q[2] = intvec v, v[1]= # product criterion, v[2]= # chain criterion
579
+ EXAMPLE: example updatePairs; shows an example
580
+ "
581
+ {
582
+ int i,j,k,s,r,c,ccrit,pcrit,pr;
583
+ int y = printlevel - voice + 2;
584
+ ideal pair;
585
+ list Q = P; //Q will become enlarged pairset
586
+ s = size(P);
587
+ r = size(Q); //r will grow with Q
588
+ list R;
589
+ def g = S; //give g the correct type ideal/module
590
+ for (i=1; i<=size(S); i++)
591
+ {
592
+ pr = prodcrit(h,S[i]);
593
+ if( pr != 0 ) //check product criterion
594
+ {
595
+ pcrit=pcrit+(pr==1); //count product criterion in same component
596
+ }
597
+ else
598
+ { //prodcrit did not apply, check for chaincrit
599
+ r=size(Q);
600
+ for(k=1; k<=r; k++)
601
+ {
602
+ if( Q[k][2]==S[i] ) //S[i]=Q[k][2]
603
+ {
604
+ if( chaincrit(Q[k][1],S[i],h) )
605
+ { //can forget (S[i],h)
606
+ c=1; ccrit=ccrit+1;
607
+ break;
608
+ }
609
+ }
610
+ }
611
+ if ( c==0 )
612
+ {
613
+ g = S[i],h; //add pair (S[i],h)
614
+ Q[r+1] = g;
615
+ }
616
+ c=0;
617
+ }
618
+ }
619
+ if (y>0)
620
+ { "";;
621
+ "// product criterion:",pcrit," chain criterion:",ccrit;
622
+ }
623
+ intvec v = pcrit,ccrit;
624
+ Q = Q,v;
625
+ return(Q);
626
+ }
627
+ example
628
+ { "EXAMPLE:"; echo = 2;
629
+ ring R1=0,(x,y,z),(c,dp);
630
+ ideal S = x2y+x2,y3+xyz;
631
+ poly h = x2y+xyz;
632
+ list P = pairset(S)[1];
633
+ P;"";
634
+ updatePairs(P,S,h);"";
635
+ module T = [x2y3-z2,x2y],[x2y4+z3,x2+y2];
636
+ P = pairset(T)[1];
637
+ P;"";
638
+ updatePairs(P,T,[x2+x2y,y3+xyz]);
639
+ }
640
+ ///////////////////////////////////////////////////////////////////////////////
641
+ proc standard(def id, list #)
642
+ "USAGE: standard(i[,s]); id ideal or module, s int
643
+ RETURN: a standard basis of id, using generalized Mora's algorithm
644
+ which is Buchberger's algorithm for global monomial orderings.
645
+ If s!=0 the symmetric s-polynomial (without division) is used
646
+ NOTE: Show comments if printlevel > 0, pauses computation if printlevel > 1
647
+ EXAMPLE: example standard; shows an example
648
+ "
649
+ {
650
+ if(size(#) == 0)
651
+ {
652
+ #[1]=0;
653
+ }
654
+
655
+ def S = id; //S will become the standard basis of id
656
+ def h = S[1];
657
+ int i,z;
658
+ int y = printlevel - voice + 2;
659
+ if(y>0)
660
+ { "";
661
+ "// the set S, to become a standard basis:"; S;
662
+ if(y>1)
663
+ {
664
+ "// create pairset, i.e. pairs from S,";
665
+ "// after application of product and chain criterion";
666
+ }
667
+ }
668
+ list P = pairset(S); //create pairset of S=id
669
+ intvec v = P[2];
670
+ P = P[1];
671
+ //-------------------------- Main loop in SB lgorithm ----------------------
672
+ while (size(P) !=0)
673
+ { z=z+1;
674
+ if(y>0)
675
+ { "";
676
+ "// Enter NFMora for next pair, count",z;
677
+ "// size of partial standard basis S: (",size(S),")";
678
+ "// number of pairs of S after updating: (",size(P),")";
679
+ if(y>1)
680
+ {
681
+ "// 1st pair of new pairset:"; P[1];
682
+ "// set T=S used for reduction:";S;
683
+ "// apply NFMora to (spoly,S), spoly = spoly(1st pair)";
684
+ }
685
+ }
686
+ //-------------------- apply NFMora = Mora's normal form -------------
687
+ h = spoly(P[1][1],P[1][2],#[1]);
688
+ if(y>1)
689
+ {
690
+ "// spoly:";h;
691
+ }
692
+ h = NFMora(h,S,#[1]);
693
+ if(h==0) //normal form is 0
694
+ {
695
+ if(y==1)
696
+ {
697
+ "// pair has reduced to 0";
698
+ }
699
+ if(y>1)
700
+ { h;"";
701
+ pause("press <return> to continue");
702
+ }
703
+ }
704
+ P = delete(P,1); //spoly of pair reduced to 0, pair can be deleted
705
+ //--- spoly of pair did not reduce to 0, update S and paiset of S ----
706
+ if( h != 0)
707
+ {
708
+ if(y==1)
709
+ {
710
+ "// ** new spoly in degree **:", deg(h);
711
+ }
712
+ if(y>1)
713
+ { h;"";
714
+ pause("press <return> to continue");
715
+ "// update pairset";
716
+ }
717
+ P=updatePairs(P,S,h); //update P (=paisert of S)
718
+ v=v+P[2]; //with useful pairs (g,h), g from S
719
+ P=P[1];
720
+ S=S,h; //update S, will become the standard basis
721
+ }
722
+ }
723
+ //------------------------------ finished ---------------------------------
724
+ if( find(option(),"prot") or y>0 )
725
+ { ""; //show how often prodcrit and chaincrit applied
726
+ "// product criterion:",v[1]," chain criterion:",v[2];
727
+ "";
728
+ "// Final standard basis:";
729
+ }
730
+ return(S);
731
+ }
732
+ example
733
+ { "EXAMPLE:"; echo = 2;
734
+ ring r=0,(x,y,z),dp;
735
+ ideal G = x2y+x2,y3+xyz,xyz2+z4;
736
+ standard(G);"";
737
+ ring s=0,(x,y,z),(c,ds);
738
+ ideal G = 2x2+x2y,y3+xyz,3x3y+z4;
739
+ standard(G);"";
740
+ standard(G,1);""; //use symmetric s-poly without division
741
+ module M = [2x2,x3y+z4],[3y3+xyz,y3],[5z4,z2];
742
+ standard(M);
743
+ }
744
+ ///////////////////////////////////////////////////////////////////////////////
745
+ proc localstd (def id)
746
+ "USAGE: localstd(id); id = ideal
747
+ RETURN: A standard basis for a local degree ordering, using Lazard's method.
748
+ NOTE: The procedure homogenizes id w.r.t. a new 1st variable local@t,
749
+ computes a SB w.r.t. (dp(1),dp) and substitutes local@t by 1.
750
+ Hence the result is a SB with respect to an ordering which sorts
751
+ first w.r.t. the subdegree of the original variables and then refines
752
+ it with dp. This is the local degree ordering ds.
753
+ localstd may be used in order to avoid cancellation of units and thus
754
+ to be able to use option(contentSB) also for local orderings.
755
+ EXAMPLE: example localstd; shows an example
756
+ "
757
+ {
758
+ int ii;
759
+ def bas = basering;
760
+ ring @r_locstd = create_ring(ring_list(bas)[1],"(local@t,"+varstr(bas)+")","(dp(1),dp)","no_minpoly");
761
+ ideal id = imap(bas,id);
762
+ ideal hid = homog(id,local@t);
763
+ hid = std(hid);
764
+ hid = subst(hid,local@t,1);
765
+ setring bas;
766
+ def hid = imap(@r_locstd,hid);
767
+ attrib(hid,"isSB",1);
768
+ kill @r_locstd;
769
+ return(hid);
770
+ }
771
+ example
772
+ { "EXAMPLE:"; echo = 2;
773
+ ring R = 0,(x,y,z),ds;
774
+ ideal i = xyz+z5,2x2+y3+z7,3z5+y5;
775
+ localstd(i);
776
+ }
777
+ ///////////////////////////////////////////////////////////////////////////////
778
+
779
+ /*
780
+ // some examples:
781
+ LIB"teachstd.lib";
782
+ option(prot); printlevel=3;
783
+ ring r0 = 0,(t,x,y),lp;
784
+ ideal i = x-t2,y-t3;
785
+ standard(i);
786
+
787
+ printlevel=1;
788
+ standard(i);
789
+
790
+ option(prot); printlevel =1;
791
+ ring r1 = (0,a,b),(x,y,z),(c,ds);
792
+ module M = [ax2,bx3y+z4],[a3y3+xyz,by3],[5az4,(a+b)*z2];
793
+ module N1= std(M);
794
+ module N2 = standard(M,1);
795
+ NF(lead(N2),lead(N1));
796
+ NF(lead(N1),lead(N2));rom T
797
+ ring r2 = 0,(x,y,z),dp;
798
+ ideal I = x2y+x2,y3+xyz,xyz2+z4;
799
+ option(prot);
800
+ int tt = timer;
801
+ ideal J = standard(I);
802
+ timer -tt; //4sec, product criterion: 9 chain criterion: 6
803
+ ideal J1 = std(I);
804
+ NF(lead(J),lead(J1));
805
+ NF(lead(J1),lead(J));
806
+
807
+ ring r3 = 0,(x,y,z),ds;
808
+ poly f = x3*y4+z5+xyz;
809
+ ideal I = f,jacob(f);
810
+ option(prot);
811
+ int tt = timer;
812
+ ideal J = standard(I);
813
+ timer -tt; //3sec, product criterion: 1 chain criterion: 3
814
+ ideal J1 = std(I);
815
+ NF(lead(J),lead(J1));
816
+ NF(lead(J1),lead(J));
817
+
818
+ //Becker:
819
+ ring r4 = 32003,(x,y,z),lp;
820
+ ideal I = x3-1, y3-1,
821
+ -27x3-243x2y+27x2z-729xy2+162xyz-9xz2-729y3+243y2z-27yz2+z3-27;
822
+ option(prot);
823
+ int tt = timer;
824
+ ideal J = standard(I);
825
+ timer -tt; //201sec, product criterion: 42 chain criterion: 33
826
+ ideal J1 = std(I);
827
+ NF(lead(J),lead(J1));
828
+ NF(lead(J1),lead(J));
829
+
830
+ //Alex
831
+ ring r5 = 32003,(x,y,z,t),dp;
832
+ ideal I =
833
+ 2t3xy2z+x2ty+2x2y,
834
+ 2tz+y3x2t+z2t3y2x;
835
+ option(prot); printlevel =1;
836
+ ideal J1 = std(I);
837
+ int tt = timer;
838
+ ideal J = standard(I);
839
+ timer -tt; //15sec product criterion: 0 chain criterion: 12
840
+ NF(lead(J),lead(J1));
841
+ NF(lead(J1),lead(J));
842
+
843
+ ring r6 = 32003,(x,y,z,t),dp; //is already SB for ds, for dp too long
844
+ ideal I=
845
+ 9x8+y7t3z4+5x4y2t2+2xy2z3t2,
846
+ 9y8+7xy6t+2x5y4t2+2x2yz3t2,
847
+ 9z8+3x2y3z2t4;
848
+ option(prot);
849
+ int tt = timer;
850
+ ideal J = standard(I);
851
+ timer -tt; //0sec, product criterion: 3 chain criterion: 0
852
+ ideal J1 = std(I);
853
+ NF(lead(J),lead(J1));
854
+ NF(lead(J1),lead(J));
855
+
856
+
857
+ */
858
+