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,732 @@
1
+ ////////////////////////////////////////////////////////////////////////////////
2
+ version="version nfsyzmod.lib 4.1.2.0 Feb_2019 "; // $Id: ec37507c0fd9319e9981ba988e15112df1520e85 $
3
+ category="Commutative Algebra";
4
+ info="
5
+
6
+ LIBRARY: nfmodsyz.lib Syzygy modules of submodules of free modules over
7
+ algebraic number fields
8
+ AUTHORS: D.K. Boku boku@mathematik.uni-kl.de
9
+ @* W. Decker decker@mathematik.uni-kl.de
10
+ @* C. Fieker fieker@mathematik.uni-kl.de
11
+
12
+ OVERVIEW:
13
+ A library for computing the syzygy module of a given submodule I in a polynomial ring
14
+ over an algebraic number field Q(t), where t is an algebraic number, using modular methods.
15
+ For the case Q(t)=Q, that is, where t is an element of Q, we compute, following
16
+ [1], the syzygy module of I as follows: For a submodule I of A^m with A = Q[X], we first
17
+ choose a sufficiently large set of primes P and compute the reduced Groebner basis of the
18
+ syzygy module of I_p, for each p in P, in parallel. We then use the Chinese remainder
19
+ algorithm and rational reconstruction to obtain the syzygy module of I over Q.
20
+ For the case where t is not in Q, we compute, following [2], the syzygy module of I as
21
+ follows:
22
+ Let f be the minimal polynomial of t. For a submodule I in A^m with A = Q(t)[X], we map I
23
+ to a submodule I' in A^m with A = (Q[t]/<f>)[X] via the map sending t to t + <f>. We first
24
+ choose a prime p such that f has at least two factors in characteristic p. For each
25
+ factor f_{i,p} of f_p:= (f mod p), we set I'_{i,p} := (I'_p mod f_{i,p}). We then
26
+ compute the reduced Groebner bases G'_i of the syzygy modules of I'_{i,p} over
27
+ F_p[t]/<f_{i,p}> and combine the G'_i to G_p (the syzygy module of I'_p) using chinese
28
+ remaindering for polynomials. As described in [2], the procedure is repeated for many primes
29
+ p, where we compute the G_p in parallel until the number of primes is sufficiently large to
30
+ recover the correct generating set for the syzygy module G' of I' which is, considered over
31
+ Q(t), also a generating set for the syzygy module of I.
32
+
33
+ REFERENCES:
34
+ [1] E. A. Arnold: Modular algorithms for computing Groebner bases.
35
+ J. Symb. Comp. 35, 403-419 (2003).
36
+ [2] D. Boku, W. Decker, C. Fieker, and A. Steenpass. Groebner bases over algebraic
37
+ number fields. In: Proceedings of the 2015 International Workshop on Parallel
38
+ Symb. Comp. PASCO'15, pages 16-24 (2015).
39
+
40
+ PROCEDURES:
41
+ nfmodSyz(I); syzygy module of I over algebraic number field using modular
42
+ methods
43
+ ";
44
+
45
+ LIB "nfmodstd.lib";
46
+
47
+ ////////////////////////////////////////////////////////////////////////////////
48
+
49
+ static proc testPrime(int p, list args)
50
+ {
51
+ /*
52
+ * test whether a prime p divides the denominator(s)
53
+ * and leading coefficients of generating set of ideal
54
+ */
55
+ int i,j,k;
56
+ vector f;
57
+ number num;
58
+ module I = args[1];
59
+ bigint d1,d2,d3;
60
+ for(i = 1; i <= ncols(I); i++)
61
+ {
62
+ f = cleardenom(I[i]);
63
+ if(f == 0)
64
+ {
65
+ return(0);
66
+ }
67
+ num = leadcoef(I[i])/leadcoef(f);
68
+ d1 = bigint(numerator(num));
69
+ d2 = bigint(denominator(num));
70
+ if( (d1 mod p) == 0)
71
+ {
72
+ return(0);
73
+ }
74
+ if((d2 mod p) == 0)
75
+ {
76
+ return(0);
77
+ }
78
+ for(j = nrows(f); j > 0; j--)
79
+ {
80
+ for(k=1;k<=size(f[j]);k++)
81
+ {
82
+ d3 = bigint(leadcoef(f[j][k]));
83
+ if((d3 mod p) == 0)
84
+ {
85
+ return(0);
86
+ }
87
+ }
88
+ }
89
+ }
90
+ return(1);
91
+ }
92
+
93
+ ////////////////////////////////////////////////////////////////////////////////
94
+ /* return 1 if the number of factors are in the required bound , 0 else */
95
+
96
+ static proc minpolyTask(poly f,int p)
97
+ {
98
+ /*
99
+ * bound for irreducible factor(s) of (f mod p)
100
+ * see testfact()
101
+ */
102
+ int nr,k,ur;
103
+ ur=deg(f);
104
+ list L=factmodp(f,p);
105
+ if(degtest(L[2])==1)
106
+ {
107
+ // now each factor is squarefree
108
+ if(ur<=3)
109
+ {
110
+ return(1);
111
+ }
112
+ else
113
+ {
114
+ nr = testfact(ur);
115
+ k=ncols(L[1]);
116
+ if(nr < k && k < (ur-nr)) // set a bound for k
117
+ {
118
+ return(1);
119
+ }
120
+ }
121
+ }
122
+ return(0);
123
+ }
124
+
125
+ ////////////////////////////////////////////////////////////////////////////////
126
+ /* return 1 if both testPrime(p,J) and minpolyTask(f,p) is true, 0 else */
127
+
128
+ static proc PrimeTestTask_syz(int p, list L)
129
+ {
130
+ /* L=list(I), I=J,f; J ideal , f minpoly */
131
+ int sz,nr;
132
+ module J = L[1];
133
+ sz=ncols(J);
134
+ def f=J[sz];
135
+ poly g = f[1];
136
+ if(!testPrime(p,list(J)) or !minpolyTask(g,p))
137
+ {
138
+ return(0);
139
+ }
140
+ return(1);
141
+ }
142
+
143
+ ////////////////////////////////////////////////////////////////////////////////
144
+ /* compute factors of f mod p with multiplicity */
145
+
146
+ static proc factmodp(poly f, int p)
147
+ {
148
+ def R=basering;
149
+ list l=ringlist(R);
150
+ l[1]=p;
151
+ def S=ring(l);
152
+ setring S;
153
+ list L=factorize(imap(R,f),2);
154
+ ideal J=L[1];
155
+ intvec v=L[2];
156
+ list scx=J,v;
157
+ setring R;
158
+ return(imap(S,scx));
159
+ kill S;
160
+ }
161
+
162
+ ////////////////////////////////////////////////////////////////////////////////
163
+ /* set a bound for number of factors w.r.t degree nr*/
164
+
165
+ static proc testfact(int nr)
166
+ {
167
+ // nr must be greater than 3
168
+ int i;
169
+ if(nr>3 and nr<=5)
170
+ {
171
+ i=1;
172
+ }
173
+ if(nr>5 and nr<=10)
174
+ {
175
+ i=2;
176
+ }
177
+ if(nr>10 and nr<=15)
178
+ {
179
+ i=3;
180
+ }
181
+ if(nr>15 and nr<=20)
182
+ {
183
+ i=4;
184
+ }
185
+ if(nr>20 and nr<=25)
186
+ {
187
+ i=5;
188
+ }
189
+ if(nr>25 and nr<=30)
190
+ {
191
+ i=6;
192
+ }
193
+ if(nr>30)
194
+ {
195
+ i=10;
196
+ }
197
+ return(i);
198
+ }
199
+
200
+ ///////////////////////////////////////////////////////////////////////////////
201
+ // return 1 if v[i]>1 , 0 else
202
+
203
+ static proc degtest(intvec v)
204
+ {
205
+ for(int j=1;j<=nrows(v);j++)
206
+ {
207
+ if(v[j]>1)
208
+ {
209
+ return(0);
210
+ }
211
+ }
212
+ return(1);
213
+ }
214
+
215
+ ////////////////////////////////////////////////////////////////////////////////
216
+
217
+ static proc check_leadmonom_and_size(list L)
218
+ {
219
+ /*
220
+ * compare the size of ideals in the list and
221
+ * check the corresponding leading monomials
222
+ * size(L)>=2
223
+ */
224
+ def J=L[1];
225
+ int i=size(L);
226
+ int sc=ncols(J);
227
+ int j,k;
228
+ def g=leadmonom(J[1]);
229
+ for(j=1;j<=i;j++)
230
+ {
231
+ if(ncols(L[j])!=sc)
232
+ {
233
+ return(0);
234
+ }
235
+ }
236
+ for(k=2;k<=i;k++)
237
+ {
238
+ for(j=1;j<=sc;j++)
239
+ {
240
+ if(leadmonom(J[j])!=leadmonom(L[k][j]))
241
+ {
242
+ return(0);
243
+ }
244
+ }
245
+ }
246
+ return(1);
247
+ }
248
+
249
+ ////////////////////////////////////////////////////////////////////////////////
250
+
251
+ static proc LiftPolyCRT_syz(def I)
252
+ {
253
+ /*
254
+ * compute syz for each factor and combine this result
255
+ * to modulo minpoly via CRT for poly over char p>0
256
+ */
257
+ def sl;
258
+ int u,in,j;
259
+ list LL,Lk,T2;
260
+ module J,II;
261
+ vector f;
262
+ u=ncols(I);
263
+ J=I[1..u-1];
264
+ f=I[u];
265
+ poly ff = f[1];
266
+ ideal K=factorize(ff,1);
267
+ in=ncols(K);
268
+ def Ls = basering;
269
+ list l = ringlist(Ls);
270
+ if(l[3][1][1]=="c")
271
+ {
272
+ l[1] = list(l[1]) + list(list(l[2][size(l[2])])) +
273
+ list(list(l[3][size(l[3])]))+list(ideal(0));
274
+ l[2] = delete(l[2],size(l[2]));
275
+ l[3] = delete(l[3],size(l[3]));
276
+ }
277
+ else
278
+ {
279
+ l[1] = list(l[1]) + list(list(l[2][size(l[2])])) +
280
+ list(list(l[3][size(l[3])-1]))+list(ideal(0));
281
+ l[2] = delete(l[2],size(l[2]));
282
+ l[3] = delete(l[3],size(l[3])-1);
283
+ }
284
+
285
+ def S1 = ring(l);
286
+ setring S1;
287
+ number Num= number(imap(Ls,ff));
288
+ list l = ringlist(S1);
289
+ l[1][4][1] = Num;
290
+ S1 = ring(l);
291
+ setring S1;
292
+ ideal K = imap(Ls,K);
293
+ def S2;
294
+ module II;
295
+ number Num;
296
+ /* ++++++ if minpoly is irreducible then K will be the zero ideal +++ */
297
+ if(size(K)==0)
298
+ {
299
+ module M = syz(imap(Ls,J));
300
+ if(size(M)==0)
301
+ {
302
+ setring Ls;
303
+ return(module([0]));
304
+ }
305
+ II = normalize(M);
306
+ }
307
+ else
308
+ {
309
+ for(j=1;j<=in;j++)
310
+ {
311
+ LL[j]=K[j];
312
+ Num = number(K[j]);
313
+ T2 = ringlist(S1);
314
+ T2[1][4][1] = Num;
315
+ S2 = ring(T2);
316
+ setring S2;
317
+ module M = syz(imap(Ls,J));
318
+ if(size(M)==0)
319
+ {
320
+ setring Ls;
321
+ return(module([0]));
322
+ break;
323
+ }
324
+ setring S1;
325
+ Lk[j] = imap(S2,M);
326
+ }
327
+
328
+ if(check_leadmonom_and_size(Lk))
329
+ {
330
+ // apply CRT for polynomials
331
+ setring Ls;
332
+ II =chinrempoly(imap(S1,Lk),imap(S1,LL));
333
+ setring S1;
334
+ II = normalize(imap(Ls,II));
335
+ }
336
+ else
337
+ {
338
+ setring S1;
339
+ II=[0];
340
+ }
341
+ }
342
+ setring Ls;
343
+ return(imap(S1,II));
344
+ }
345
+
346
+ ////////////////////////////////////////////////////////////////////////////////
347
+
348
+ static proc final_Test_syz(string command, alias list args, def result)
349
+ {
350
+ /*
351
+ * test if the set generating 'result' also generates the syzygy module
352
+ * of args[1] in characteristic zero
353
+ */
354
+ def Ls = basering;
355
+ def Ip = args[1];
356
+ vector f;
357
+ int u=ncols(Ip);
358
+ module J=Ip[1..u-1];
359
+ f=Ip[u];
360
+ poly ff = f[1];
361
+ list l = ringlist(Ls);
362
+
363
+ if(l[3][1][1]=="c")
364
+ {
365
+ l[1] = list(l[1]) + list(list(l[2][size(l[2])])) +
366
+ list(list(l[3][size(l[3])]))+list(ideal(0));
367
+ l[2] = delete(l[2],size(l[2]));
368
+ l[3] = delete(l[3],size(l[3]));
369
+ }
370
+ else
371
+ {
372
+ l[1] = list(l[1]) + list(list(l[2][size(l[2])])) +
373
+ list(list(l[3][size(l[3])-1]))+list(ideal(0));
374
+ l[2] = delete(l[2],size(l[2]));
375
+ l[3] = delete(l[3],size(l[3])-1);
376
+ }
377
+
378
+ def S1 = ring(l);
379
+ setring S1;
380
+ number Num= number(imap(Ls,ff));
381
+ list l = ringlist(S1);
382
+ l[1][4][1] = Num;
383
+ S1 = ring(l);
384
+ setring S1;
385
+ def result2 = imap(Ls,result);
386
+ def M = imap(Ls,J);
387
+ if(size(result2)==0)
388
+ {
389
+ return(1);
390
+ }
391
+ else
392
+ {
393
+ if(size(module(matrix(M)*matrix(result2)))!=0)
394
+ {
395
+ return(0);
396
+ }
397
+ return(1);
398
+ }
399
+ }
400
+
401
+ ////////////////////////////////////////////////////////////////////////////////
402
+
403
+ static proc final_test(string command, alias list args, def result)
404
+ {
405
+ /*
406
+ * test if the set generating 'result' also generates the syzygy module
407
+ * of args[1] in characteristic zero
408
+ */
409
+ module M=args[1];
410
+ if(size(result)==0)
411
+ {
412
+ return(1);
413
+ }
414
+ else
415
+ {
416
+ if(size(module(matrix(M)*matrix(result)))!=0)
417
+ {
418
+ return(0);
419
+ }
420
+ return(1);
421
+ }
422
+ }
423
+
424
+ ////////////////////////////////////////////////////////////////////////////////
425
+ // ------------------------ test in characteristic p ------------
426
+ static proc pTest_syzmod(string command, list args, def result, int p)
427
+ {
428
+ /*
429
+ * This procedure performs the first test in positive characteristic to
430
+ * verify whether the set generating 'result' also generates the syzygy
431
+ * module of the submodule args[1]. Note that this test works only
432
+ * over Z_p
433
+ */
434
+ def br = basering;
435
+ if(size(result)==0)
436
+ {
437
+ return(1);
438
+ }
439
+ list lbr = ringlist(br);
440
+ if (typeof(lbr[1]) == "int")
441
+ {
442
+ lbr[1] = p;
443
+ }
444
+ else
445
+ {
446
+ lbr[1][1] = p;
447
+ }
448
+ def rp = ring(lbr);
449
+ setring(rp);
450
+ module Jp = imap(br, args)[1];
451
+ module Gp = imap(br, result);
452
+ module Ip = syz(Jp);
453
+ // test if Ip is contained in Gp
454
+ attrib(Gp, "isSB", 1);
455
+ for (int i = ncols(Ip); i > 0; i--)
456
+ {
457
+ if (reduce(Ip[i], Gp, 1) != 0)
458
+ {
459
+ setring(br);
460
+ return(0);
461
+ }
462
+ }
463
+ // test if Gp is contained in syz(Jp)
464
+ if(size(module(matrix(Jp)*matrix(Gp)))!=0)
465
+ {
466
+ setring br;
467
+ return(0);
468
+ }
469
+ setring br;
470
+ return(1);
471
+ }
472
+
473
+ ////////////////////////////////////////////////////////////////////////////////
474
+ // ------------------------ test in characteristic p ------------
475
+ static proc pTest_syz(string command, list args, def result, int p)
476
+ {
477
+ /*
478
+ * This procedure performs the first test in positive characteristic to
479
+ * verify whether the set generating 'result' also generates the syzygy
480
+ * module of args[1]. Note that this test works only over Z_p(t) where
481
+ * t is an algebraic number which is not in Z_p.
482
+ */
483
+
484
+ def br = basering;
485
+ if(size(result)==0)
486
+ {
487
+ return(1);
488
+ }
489
+ list lbr = ringlist(br);
490
+ if (typeof(lbr[1]) == "int")
491
+ {
492
+ lbr[1] = p;
493
+ }
494
+ else
495
+ {
496
+ lbr[1][1] = p;
497
+ }
498
+ def rp = ring(lbr);
499
+ setring(rp);
500
+ def Ip = imap(br, args)[1];
501
+
502
+ int u,in,j,i;
503
+ list LL,Lk,T2;
504
+ module J,II;
505
+ vector f;
506
+ u=ncols(Ip);
507
+ J=Ip[1..u-1];
508
+ f=Ip[u];
509
+ poly ff = f[1];
510
+ ideal K=factorize(ff,1);
511
+ in=ncols(K);
512
+ def Ls = basering;
513
+ list l = ringlist(Ls);
514
+ if(l[3][1][1]=="c")
515
+ {
516
+ l[1] = list(l[1]) + list(list(l[2][size(l[2])])) +
517
+ list(list(l[3][size(l[3])]))+list(ideal(0));
518
+ l[2] = delete(l[2],size(l[2]));
519
+ l[3] = delete(l[3],size(l[3]));
520
+ }
521
+ else
522
+ {
523
+ l[1] = list(l[1]) + list(list(l[2][size(l[2])])) +
524
+ list(list(l[3][size(l[3])-1]))+list(ideal(0));
525
+ l[2] = delete(l[2],size(l[2]));
526
+ l[3] = delete(l[3],size(l[3])-1);
527
+ }
528
+
529
+ def S1 = ring(l);
530
+ setring S1;
531
+ number Num= number(imap(Ls,ff));
532
+ list l = ringlist(S1);
533
+ l[1][4][1] = Num;
534
+ S1 = ring(l);
535
+ setring S1;
536
+ ideal K = imap(Ls,K);
537
+ module Jp = imap(Ls,J);
538
+ def S2;
539
+ module Ip;
540
+ number Num;
541
+ /* ++++++ if the minpoly is irreducible then K = ideal(0) +++ */
542
+ if(size(K)==0)
543
+ {
544
+ module M = syz(Jp);
545
+ Ip = normalize(M);
546
+ }
547
+ else
548
+ {
549
+ for(j=1;j<=ncols(K);j++)
550
+ {
551
+ LL[j]=K[j];
552
+ Num = number(K[j]);
553
+ T2 = ringlist(S1);
554
+ T2[1][4][1] = Num;
555
+ S2 = ring(T2);
556
+ setring S2;
557
+ module M = syz(imap(Ls,J));
558
+ setring S1;
559
+ Lk[j]= imap(S2,M);
560
+ }
561
+ if(check_leadmonom_and_size(Lk))
562
+ {
563
+ // apply CRT for polynomials
564
+ setring Ls;
565
+ II =chinrempoly(imap(S1,Lk),imap(S1,LL));
566
+ setring S1;
567
+ Ip = normalize(imap(Ls,II));
568
+ }
569
+ else
570
+ {
571
+ setring S1;
572
+ Ip=[0];
573
+ }
574
+ }
575
+ setring S1;
576
+ module Gp = imap(br, result);
577
+ // test if Ip is contained in Gp
578
+ attrib(Gp, "isSB", 1);
579
+ for (i = ncols(Ip); i > 0; i--)
580
+ {
581
+ if (reduce(Ip[i], Gp, 1) != 0)
582
+ {
583
+ setring(br);
584
+ return(0);
585
+ }
586
+ }
587
+ // test if Gp is contained in syz(Jp)
588
+ if(size(module(matrix(Jp)*matrix(Gp)))!=0)
589
+ {
590
+ setring br;
591
+ return(0);
592
+ }
593
+ setring br;
594
+ return(1);
595
+ }
596
+
597
+ ////////////////////////////////////////////////////////////////////////////////
598
+
599
+ static proc cleardenomIdeal(def I)
600
+ {
601
+ int t=ncols(I);
602
+ if(size(I)==0)
603
+ {
604
+ return(I);
605
+ }
606
+ else
607
+ {
608
+ for(int i=1;i<=t;i++)
609
+ {
610
+ I[i]=cleardenom(I[i]);
611
+ }
612
+ }
613
+ return(I);
614
+ }
615
+
616
+ ////////////////////////////////////////////////////////////////////////////////
617
+
618
+ static proc modStdparallelized_syzSB(module I, list #)
619
+ {
620
+ /* save options */
621
+ intvec opt = option(get);
622
+ option(redSB);
623
+ option(returnSB);
624
+ /*------ if these options are set, the Singular command syz returns the
625
+ reduced Groebner basis of I ---------------------------------------*/
626
+
627
+ // apply modular command from modular.lib
628
+ if(size(#)>0)
629
+ {
630
+ I = modular("syz", list(I), testPrime, Modstd::deleteUnluckyPrimes_std,
631
+ pTest_syzmod, final_test, 536870909);
632
+ }
633
+ else
634
+ {
635
+ I = modular("Nfmodsyz::LiftPolyCRT_syz", list(I), PrimeTestTask_syz,
636
+ Modstd::deleteUnluckyPrimes_std,pTest_syz, final_Test_syz,536870909);
637
+ }
638
+ attrib(I, "isSB", 1);
639
+ option(set,opt);
640
+ return(I);
641
+ }
642
+
643
+ ////////////////////////////////////////////////////////////////////////////////
644
+ /* main procedure */
645
+ proc nfmodSyz(def I)
646
+ "USAGE: nfmodSyz(I); I ideal or module
647
+ RETURN: syzygy module of I over an algebraic number field
648
+ SEE ALSO: syz
649
+ EXAMPLE: example nfmodSyz; shows an example
650
+ "
651
+ {
652
+ if(typeof(I)!="ideal" and typeof(I)!="module")
653
+ {
654
+ ERROR("type of input must be either ideal or module");
655
+ }
656
+ else
657
+ {
658
+ module F = I;
659
+ kill I;
660
+ module I = F;
661
+ }
662
+ def Rbs=basering;
663
+ poly f;
664
+ int n=nvars(Rbs);
665
+ if(size(I)==0)
666
+ {
667
+ return(module([0]));
668
+ }
669
+ if(npars(Rbs)==0)
670
+ {
671
+ module M = modStdparallelized_syzSB(I,1); //if algebraic number is in Q
672
+ return(M);
673
+ }
674
+
675
+ def S;
676
+ list rl=ringlist(Rbs);
677
+ f=rl[1][4][1];
678
+
679
+ if(rl[3][1][1]!="c")
680
+ {
681
+ rl[2] = rl[2] + rl[1][2];
682
+ rl[3] = insert(rl[3], rl[1][3][1],1);
683
+ rl[1] = rl[1][1];
684
+ }
685
+ else
686
+ {
687
+ rl[2] = rl[2] + rl[1][2];
688
+ rl[3][size(rl[3])+1] = rl[1][3][1];
689
+ rl[1] = rl[1][1];
690
+ }
691
+
692
+ S = ring(rl);
693
+ setring S;
694
+ poly f=imap(Rbs,f);
695
+ def I=imap(Rbs,I);
696
+ I = simplify(I,2); // eraze the zero generatos
697
+ if(f==0)
698
+ {
699
+ ERROR("minpoly must be non-zero");
700
+ }
701
+ I=I,f;
702
+ def J_I = modStdparallelized_syzSB(I);
703
+ setring Rbs;
704
+ def J=imap(S,J_I);
705
+ J=simplify(J,2);
706
+ return(J);
707
+ }
708
+ example
709
+ { "EXAMPLE:"; echo = 2;
710
+ ring r1 =(0,a),(x,y),(c,dp);
711
+ minpoly = (a^3+2a+7);
712
+ module M1 = [(a/2+1)*y, 3*x-a*y],
713
+ [y-x,y2],
714
+ [x2-xy, ax-y];
715
+ nfmodSyz(M1);
716
+ ring r2 = (0,a),(x,y,z),(dp,c);
717
+ minpoly = (a3+a+1);
718
+ module M2 = [x2z+x+(-a)*y,z2+(a+2)*x],
719
+ [y2+(a)*z+(a),(a+3)*z3+(-a)*x2],
720
+ [-xz+(a2+3)*yz,xy+(a2)*z];
721
+ nfmodSyz(M2);
722
+ ring r3=0,(x,y),dp; // ring without parameter
723
+ module M3 = [x2 + y, xy], [-7y, 2x], [x2-y, 0];
724
+ nfmodSyz(M3);
725
+ ring r4=0,(x,y),(c,dp); // ring without parameter
726
+ module M4 = [xy, x-y],
727
+ [x2 + y, 5y],
728
+ [- 7y, 2x],
729
+ [x2-y, 0];
730
+ nfmodSyz(M4);
731
+ }
732
+