passagemath-singular 10.6.31rc3__cp314-cp314-musllinux_1_2_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 (493) hide show
  1. PySingular.cpython-314-x86_64-linux-musl.so +0 -0
  2. passagemath_singular-10.6.31rc3.dist-info/METADATA +183 -0
  3. passagemath_singular-10.6.31rc3.dist-info/RECORD +493 -0
  4. passagemath_singular-10.6.31rc3.dist-info/WHEEL +5 -0
  5. passagemath_singular-10.6.31rc3.dist-info/top_level.txt +3 -0
  6. passagemath_singular.libs/libSingular-4-67059f19.4.1.so +0 -0
  7. passagemath_singular.libs/libcddgmp-30166d29.so.0.1.3 +0 -0
  8. passagemath_singular.libs/libfactory-4-9d37bcf4.4.1.so +0 -0
  9. passagemath_singular.libs/libflint-fd6f12fc.so.21.0.0 +0 -0
  10. passagemath_singular.libs/libgcc_s-0cd532bd.so.1 +0 -0
  11. passagemath_singular.libs/libgf2x-9e30c3e3.so.3.0.0 +0 -0
  12. passagemath_singular.libs/libgfortran-2c33b284.so.5.0.0 +0 -0
  13. passagemath_singular.libs/libgmp-0e7fc84e.so.10.5.0 +0 -0
  14. passagemath_singular.libs/libgsl-42cda06f.so.28.0.0 +0 -0
  15. passagemath_singular.libs/libmpfr-aaecbfc0.so.6.2.1 +0 -0
  16. passagemath_singular.libs/libncursesw-9c9e32c3.so.6.5 +0 -0
  17. passagemath_singular.libs/libntl-26885ca2.so.44.0.1 +0 -0
  18. passagemath_singular.libs/libomalloc-0-e9ff96db.9.6.so +0 -0
  19. passagemath_singular.libs/libopenblasp-r0-905cb27d.3.29.so +0 -0
  20. passagemath_singular.libs/libpolys-4-8bcf8e7d.4.1.so +0 -0
  21. passagemath_singular.libs/libquadmath-bb76a5fc.so.0.0.0 +0 -0
  22. passagemath_singular.libs/libreadline-06542304.so.8.2 +0 -0
  23. passagemath_singular.libs/libsingular_resources-4-73bf7623.4.1.so +0 -0
  24. passagemath_singular.libs/libstdc++-5d72f927.so.6.0.33 +0 -0
  25. sage/algebras/all__sagemath_singular.py +3 -0
  26. sage/algebras/fusion_rings/all.py +19 -0
  27. sage/algebras/fusion_rings/f_matrix.py +2448 -0
  28. sage/algebras/fusion_rings/fast_parallel_fmats_methods.cpython-314-x86_64-linux-musl.so +0 -0
  29. sage/algebras/fusion_rings/fast_parallel_fmats_methods.pxd +5 -0
  30. sage/algebras/fusion_rings/fast_parallel_fmats_methods.pyx +538 -0
  31. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.cpython-314-x86_64-linux-musl.so +0 -0
  32. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pxd +3 -0
  33. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pyx +331 -0
  34. sage/algebras/fusion_rings/fusion_double.py +899 -0
  35. sage/algebras/fusion_rings/fusion_ring.py +1580 -0
  36. sage/algebras/fusion_rings/poly_tup_engine.cpython-314-x86_64-linux-musl.so +0 -0
  37. sage/algebras/fusion_rings/poly_tup_engine.pxd +24 -0
  38. sage/algebras/fusion_rings/poly_tup_engine.pyx +579 -0
  39. sage/algebras/fusion_rings/shm_managers.cpython-314-x86_64-linux-musl.so +0 -0
  40. sage/algebras/fusion_rings/shm_managers.pxd +24 -0
  41. sage/algebras/fusion_rings/shm_managers.pyx +780 -0
  42. sage/algebras/letterplace/all.py +1 -0
  43. sage/algebras/letterplace/free_algebra_element_letterplace.cpython-314-x86_64-linux-musl.so +0 -0
  44. sage/algebras/letterplace/free_algebra_element_letterplace.pxd +18 -0
  45. sage/algebras/letterplace/free_algebra_element_letterplace.pyx +755 -0
  46. sage/algebras/letterplace/free_algebra_letterplace.cpython-314-x86_64-linux-musl.so +0 -0
  47. sage/algebras/letterplace/free_algebra_letterplace.pxd +35 -0
  48. sage/algebras/letterplace/free_algebra_letterplace.pyx +914 -0
  49. sage/algebras/letterplace/letterplace_ideal.cpython-314-x86_64-linux-musl.so +0 -0
  50. sage/algebras/letterplace/letterplace_ideal.pyx +408 -0
  51. sage/algebras/quatalg/all.py +2 -0
  52. sage/algebras/quatalg/quaternion_algebra.py +4778 -0
  53. sage/algebras/quatalg/quaternion_algebra_cython.cpython-314-x86_64-linux-musl.so +0 -0
  54. sage/algebras/quatalg/quaternion_algebra_cython.pyx +261 -0
  55. sage/algebras/quatalg/quaternion_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  56. sage/algebras/quatalg/quaternion_algebra_element.pxd +29 -0
  57. sage/algebras/quatalg/quaternion_algebra_element.pyx +2176 -0
  58. sage/all__sagemath_singular.py +11 -0
  59. sage/ext_data/all__sagemath_singular.py +1 -0
  60. sage/ext_data/singular/function_field/core.lib +98 -0
  61. sage/interfaces/all__sagemath_singular.py +1 -0
  62. sage/interfaces/singular.py +2835 -0
  63. sage/libs/all__sagemath_singular.py +1 -0
  64. sage/libs/singular/__init__.py +1 -0
  65. sage/libs/singular/decl.pxd +1168 -0
  66. sage/libs/singular/function.cpython-314-x86_64-linux-musl.so +0 -0
  67. sage/libs/singular/function.pxd +87 -0
  68. sage/libs/singular/function.pyx +1901 -0
  69. sage/libs/singular/function_factory.py +61 -0
  70. sage/libs/singular/groebner_strategy.cpython-314-x86_64-linux-musl.so +0 -0
  71. sage/libs/singular/groebner_strategy.pxd +22 -0
  72. sage/libs/singular/groebner_strategy.pyx +582 -0
  73. sage/libs/singular/option.cpython-314-x86_64-linux-musl.so +0 -0
  74. sage/libs/singular/option.pyx +671 -0
  75. sage/libs/singular/polynomial.cpython-314-x86_64-linux-musl.so +0 -0
  76. sage/libs/singular/polynomial.pxd +39 -0
  77. sage/libs/singular/polynomial.pyx +661 -0
  78. sage/libs/singular/ring.cpython-314-x86_64-linux-musl.so +0 -0
  79. sage/libs/singular/ring.pxd +58 -0
  80. sage/libs/singular/ring.pyx +893 -0
  81. sage/libs/singular/singular.cpython-314-x86_64-linux-musl.so +0 -0
  82. sage/libs/singular/singular.pxd +72 -0
  83. sage/libs/singular/singular.pyx +1944 -0
  84. sage/libs/singular/standard_options.py +145 -0
  85. sage/matrix/all__sagemath_singular.py +1 -0
  86. sage/matrix/matrix_mpolynomial_dense.cpython-314-x86_64-linux-musl.so +0 -0
  87. sage/matrix/matrix_mpolynomial_dense.pxd +7 -0
  88. sage/matrix/matrix_mpolynomial_dense.pyx +615 -0
  89. sage/rings/all__sagemath_singular.py +1 -0
  90. sage/rings/function_field/all__sagemath_singular.py +1 -0
  91. sage/rings/function_field/derivations_polymod.py +911 -0
  92. sage/rings/function_field/element_polymod.cpython-314-x86_64-linux-musl.so +0 -0
  93. sage/rings/function_field/element_polymod.pyx +406 -0
  94. sage/rings/function_field/function_field_polymod.py +2611 -0
  95. sage/rings/function_field/ideal_polymod.py +1775 -0
  96. sage/rings/function_field/order_polymod.py +1475 -0
  97. sage/rings/function_field/place_polymod.py +681 -0
  98. sage/rings/polynomial/all__sagemath_singular.py +1 -0
  99. sage/rings/polynomial/multi_polynomial_ideal_libsingular.cpython-314-x86_64-linux-musl.so +0 -0
  100. sage/rings/polynomial/multi_polynomial_ideal_libsingular.pxd +5 -0
  101. sage/rings/polynomial/multi_polynomial_ideal_libsingular.pyx +339 -0
  102. sage/rings/polynomial/multi_polynomial_libsingular.cpython-314-x86_64-linux-musl.so +0 -0
  103. sage/rings/polynomial/multi_polynomial_libsingular.pxd +30 -0
  104. sage/rings/polynomial/multi_polynomial_libsingular.pyx +6277 -0
  105. sage/rings/polynomial/plural.cpython-314-x86_64-linux-musl.so +0 -0
  106. sage/rings/polynomial/plural.pxd +48 -0
  107. sage/rings/polynomial/plural.pyx +3171 -0
  108. sage/symbolic/all__sagemath_singular.py +1 -0
  109. sage/symbolic/comparison_impl.pxi +428 -0
  110. sage/symbolic/constants_c_impl.pxi +178 -0
  111. sage/symbolic/expression.cpython-314-x86_64-linux-musl.so +0 -0
  112. sage/symbolic/expression.pxd +7 -0
  113. sage/symbolic/expression.pyx +14200 -0
  114. sage/symbolic/getitem_impl.pxi +202 -0
  115. sage/symbolic/pynac.pxi +572 -0
  116. sage/symbolic/pynac_constant_impl.pxi +133 -0
  117. sage/symbolic/pynac_function_impl.pxi +206 -0
  118. sage/symbolic/pynac_impl.pxi +2576 -0
  119. sage/symbolic/pynac_wrap.h +124 -0
  120. sage/symbolic/series_impl.pxi +272 -0
  121. sage/symbolic/substitution_map_impl.pxi +94 -0
  122. sage_wheels/bin/ESingular +0 -0
  123. sage_wheels/bin/Singular +0 -0
  124. sage_wheels/bin/TSingular +0 -0
  125. sage_wheels/lib/singular/MOD/cohomo.la +41 -0
  126. sage_wheels/lib/singular/MOD/cohomo.so +0 -0
  127. sage_wheels/lib/singular/MOD/customstd.la +41 -0
  128. sage_wheels/lib/singular/MOD/customstd.so +0 -0
  129. sage_wheels/lib/singular/MOD/freealgebra.la +41 -0
  130. sage_wheels/lib/singular/MOD/freealgebra.so +0 -0
  131. sage_wheels/lib/singular/MOD/gfanlib.la +41 -0
  132. sage_wheels/lib/singular/MOD/gfanlib.so +0 -0
  133. sage_wheels/lib/singular/MOD/gitfan.la +41 -0
  134. sage_wheels/lib/singular/MOD/gitfan.so +0 -0
  135. sage_wheels/lib/singular/MOD/interval.la +41 -0
  136. sage_wheels/lib/singular/MOD/interval.so +0 -0
  137. sage_wheels/lib/singular/MOD/loctriv.la +41 -0
  138. sage_wheels/lib/singular/MOD/loctriv.so +0 -0
  139. sage_wheels/lib/singular/MOD/machinelearning.la +41 -0
  140. sage_wheels/lib/singular/MOD/machinelearning.so +0 -0
  141. sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.la +41 -0
  142. sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.so +0 -0
  143. sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.la +41 -0
  144. sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.so +0 -0
  145. sage_wheels/lib/singular/MOD/p_Procs_FieldQ.la +41 -0
  146. sage_wheels/lib/singular/MOD/p_Procs_FieldQ.so +0 -0
  147. sage_wheels/lib/singular/MOD/p_Procs_FieldZp.la +41 -0
  148. sage_wheels/lib/singular/MOD/p_Procs_FieldZp.so +0 -0
  149. sage_wheels/lib/singular/MOD/partialgb.la +41 -0
  150. sage_wheels/lib/singular/MOD/partialgb.so +0 -0
  151. sage_wheels/lib/singular/MOD/pyobject.la +41 -0
  152. sage_wheels/lib/singular/MOD/pyobject.so +0 -0
  153. sage_wheels/lib/singular/MOD/singmathic.la +41 -0
  154. sage_wheels/lib/singular/MOD/singmathic.so +0 -0
  155. sage_wheels/lib/singular/MOD/sispasm.la +41 -0
  156. sage_wheels/lib/singular/MOD/sispasm.so +0 -0
  157. sage_wheels/lib/singular/MOD/subsets.la +41 -0
  158. sage_wheels/lib/singular/MOD/subsets.so +0 -0
  159. sage_wheels/lib/singular/MOD/systhreads.la +41 -0
  160. sage_wheels/lib/singular/MOD/systhreads.so +0 -0
  161. sage_wheels/lib/singular/MOD/syzextra.la +41 -0
  162. sage_wheels/lib/singular/MOD/syzextra.so +0 -0
  163. sage_wheels/libexec/singular/MOD/change_cost +0 -0
  164. sage_wheels/libexec/singular/MOD/singularsurf +11 -0
  165. sage_wheels/libexec/singular/MOD/singularsurf_jupyter +9 -0
  166. sage_wheels/libexec/singular/MOD/singularsurf_win +10 -0
  167. sage_wheels/libexec/singular/MOD/solve_IP +0 -0
  168. sage_wheels/libexec/singular/MOD/surfex +16 -0
  169. sage_wheels/libexec/singular/MOD/toric_ideal +0 -0
  170. sage_wheels/share/factory/gftables/10201 +342 -0
  171. sage_wheels/share/factory/gftables/1024 +37 -0
  172. sage_wheels/share/factory/gftables/10609 +356 -0
  173. sage_wheels/share/factory/gftables/11449 +384 -0
  174. sage_wheels/share/factory/gftables/11881 +398 -0
  175. sage_wheels/share/factory/gftables/121 +6 -0
  176. sage_wheels/share/factory/gftables/12167 +408 -0
  177. sage_wheels/share/factory/gftables/125 +7 -0
  178. sage_wheels/share/factory/gftables/12769 +428 -0
  179. sage_wheels/share/factory/gftables/128 +7 -0
  180. sage_wheels/share/factory/gftables/1331 +47 -0
  181. sage_wheels/share/factory/gftables/1369 +48 -0
  182. sage_wheels/share/factory/gftables/14641 +490 -0
  183. sage_wheels/share/factory/gftables/15625 +523 -0
  184. sage_wheels/share/factory/gftables/16 +3 -0
  185. sage_wheels/share/factory/gftables/16129 +540 -0
  186. sage_wheels/share/factory/gftables/16384 +549 -0
  187. sage_wheels/share/factory/gftables/16807 +563 -0
  188. sage_wheels/share/factory/gftables/1681 +58 -0
  189. sage_wheels/share/factory/gftables/169 +8 -0
  190. sage_wheels/share/factory/gftables/17161 +574 -0
  191. sage_wheels/share/factory/gftables/1849 +64 -0
  192. sage_wheels/share/factory/gftables/18769 +628 -0
  193. sage_wheels/share/factory/gftables/19321 +646 -0
  194. sage_wheels/share/factory/gftables/19683 +659 -0
  195. sage_wheels/share/factory/gftables/2048 +71 -0
  196. sage_wheels/share/factory/gftables/2187 +75 -0
  197. sage_wheels/share/factory/gftables/2197 +76 -0
  198. sage_wheels/share/factory/gftables/2209 +76 -0
  199. sage_wheels/share/factory/gftables/22201 +742 -0
  200. sage_wheels/share/factory/gftables/22801 +762 -0
  201. sage_wheels/share/factory/gftables/2401 +82 -0
  202. sage_wheels/share/factory/gftables/243 +11 -0
  203. sage_wheels/share/factory/gftables/24389 +815 -0
  204. sage_wheels/share/factory/gftables/24649 +824 -0
  205. sage_wheels/share/factory/gftables/25 +3 -0
  206. sage_wheels/share/factory/gftables/256 +11 -0
  207. sage_wheels/share/factory/gftables/26569 +888 -0
  208. sage_wheels/share/factory/gftables/27 +3 -0
  209. sage_wheels/share/factory/gftables/27889 +932 -0
  210. sage_wheels/share/factory/gftables/2809 +96 -0
  211. sage_wheels/share/factory/gftables/28561 +954 -0
  212. sage_wheels/share/factory/gftables/289 +12 -0
  213. sage_wheels/share/factory/gftables/29791 +995 -0
  214. sage_wheels/share/factory/gftables/29929 +1000 -0
  215. sage_wheels/share/factory/gftables/3125 +107 -0
  216. sage_wheels/share/factory/gftables/32 +4 -0
  217. sage_wheels/share/factory/gftables/32041 +1070 -0
  218. sage_wheels/share/factory/gftables/32761 +1094 -0
  219. sage_wheels/share/factory/gftables/32768 +1095 -0
  220. sage_wheels/share/factory/gftables/343 +14 -0
  221. sage_wheels/share/factory/gftables/3481 +118 -0
  222. sage_wheels/share/factory/gftables/361 +14 -0
  223. sage_wheels/share/factory/gftables/36481 +1218 -0
  224. sage_wheels/share/factory/gftables/3721 +126 -0
  225. sage_wheels/share/factory/gftables/37249 +1244 -0
  226. sage_wheels/share/factory/gftables/38809 +1296 -0
  227. sage_wheels/share/factory/gftables/39601 +1322 -0
  228. sage_wheels/share/factory/gftables/4 +3 -0
  229. sage_wheels/share/factory/gftables/4096 +139 -0
  230. sage_wheels/share/factory/gftables/44521 +1486 -0
  231. sage_wheels/share/factory/gftables/4489 +152 -0
  232. sage_wheels/share/factory/gftables/49 +4 -0
  233. sage_wheels/share/factory/gftables/4913 +166 -0
  234. sage_wheels/share/factory/gftables/49729 +1660 -0
  235. sage_wheels/share/factory/gftables/5041 +170 -0
  236. sage_wheels/share/factory/gftables/50653 +1691 -0
  237. sage_wheels/share/factory/gftables/512 +20 -0
  238. sage_wheels/share/factory/gftables/51529 +1720 -0
  239. sage_wheels/share/factory/gftables/52441 +1750 -0
  240. sage_wheels/share/factory/gftables/529 +20 -0
  241. sage_wheels/share/factory/gftables/5329 +180 -0
  242. sage_wheels/share/factory/gftables/54289 +1812 -0
  243. sage_wheels/share/factory/gftables/57121 +1906 -0
  244. sage_wheels/share/factory/gftables/58081 +1938 -0
  245. sage_wheels/share/factory/gftables/59049 +1971 -0
  246. sage_wheels/share/factory/gftables/6241 +210 -0
  247. sage_wheels/share/factory/gftables/625 +23 -0
  248. sage_wheels/share/factory/gftables/63001 +2102 -0
  249. sage_wheels/share/factory/gftables/64 +5 -0
  250. sage_wheels/share/factory/gftables/6561 +221 -0
  251. sage_wheels/share/factory/gftables/6859 +231 -0
  252. sage_wheels/share/factory/gftables/6889 +232 -0
  253. sage_wheels/share/factory/gftables/729 +27 -0
  254. sage_wheels/share/factory/gftables/7921 +266 -0
  255. sage_wheels/share/factory/gftables/8 +3 -0
  256. sage_wheels/share/factory/gftables/81 +5 -0
  257. sage_wheels/share/factory/gftables/8192 +276 -0
  258. sage_wheels/share/factory/gftables/841 +30 -0
  259. sage_wheels/share/factory/gftables/9 +3 -0
  260. sage_wheels/share/factory/gftables/9409 +316 -0
  261. sage_wheels/share/factory/gftables/961 +34 -0
  262. sage_wheels/share/info/singular.info +191898 -0
  263. sage_wheels/share/singular/LIB/GND.lib +1359 -0
  264. sage_wheels/share/singular/LIB/JMBTest.lib +976 -0
  265. sage_wheels/share/singular/LIB/JMSConst.lib +1363 -0
  266. sage_wheels/share/singular/LIB/KVequiv.lib +699 -0
  267. sage_wheels/share/singular/LIB/SingularityDBM.lib +491 -0
  268. sage_wheels/share/singular/LIB/VecField.lib +1542 -0
  269. sage_wheels/share/singular/LIB/absfact.lib +959 -0
  270. sage_wheels/share/singular/LIB/ainvar.lib +730 -0
  271. sage_wheels/share/singular/LIB/aksaka.lib +419 -0
  272. sage_wheels/share/singular/LIB/alexpoly.lib +2542 -0
  273. sage_wheels/share/singular/LIB/algebra.lib +1193 -0
  274. sage_wheels/share/singular/LIB/all.lib +136 -0
  275. sage_wheels/share/singular/LIB/arcpoint.lib +514 -0
  276. sage_wheels/share/singular/LIB/arnold.lib +4553 -0
  277. sage_wheels/share/singular/LIB/arnoldclassify.lib +2058 -0
  278. sage_wheels/share/singular/LIB/arr.lib +3486 -0
  279. sage_wheels/share/singular/LIB/assprimeszerodim.lib +755 -0
  280. sage_wheels/share/singular/LIB/autgradalg.lib +3361 -0
  281. sage_wheels/share/singular/LIB/bfun.lib +1964 -0
  282. sage_wheels/share/singular/LIB/bimodules.lib +774 -0
  283. sage_wheels/share/singular/LIB/brillnoether.lib +226 -0
  284. sage_wheels/share/singular/LIB/brnoeth.lib +5017 -0
  285. sage_wheels/share/singular/LIB/central.lib +2169 -0
  286. sage_wheels/share/singular/LIB/chern.lib +4162 -0
  287. sage_wheels/share/singular/LIB/cimonom.lib +571 -0
  288. sage_wheels/share/singular/LIB/cisimplicial.lib +1835 -0
  289. sage_wheels/share/singular/LIB/classify.lib +3239 -0
  290. sage_wheels/share/singular/LIB/classify2.lib +1462 -0
  291. sage_wheels/share/singular/LIB/classifyMapGerms.lib +1515 -0
  292. sage_wheels/share/singular/LIB/classify_aeq.lib +3253 -0
  293. sage_wheels/share/singular/LIB/classifyceq.lib +2092 -0
  294. sage_wheels/share/singular/LIB/classifyci.lib +1133 -0
  295. sage_wheels/share/singular/LIB/combinat.lib +91 -0
  296. sage_wheels/share/singular/LIB/compregb.lib +276 -0
  297. sage_wheels/share/singular/LIB/control.lib +1636 -0
  298. sage_wheels/share/singular/LIB/crypto.lib +3795 -0
  299. sage_wheels/share/singular/LIB/curveInv.lib +667 -0
  300. sage_wheels/share/singular/LIB/curvepar.lib +1817 -0
  301. sage_wheels/share/singular/LIB/customstd.lib +100 -0
  302. sage_wheels/share/singular/LIB/deRham.lib +5979 -0
  303. sage_wheels/share/singular/LIB/decodegb.lib +2134 -0
  304. sage_wheels/share/singular/LIB/decomp.lib +1655 -0
  305. sage_wheels/share/singular/LIB/deflation.lib +872 -0
  306. sage_wheels/share/singular/LIB/deform.lib +925 -0
  307. sage_wheels/share/singular/LIB/difform.lib +3055 -0
  308. sage_wheels/share/singular/LIB/divisors.lib +750 -0
  309. sage_wheels/share/singular/LIB/dmod.lib +5817 -0
  310. sage_wheels/share/singular/LIB/dmodapp.lib +3269 -0
  311. sage_wheels/share/singular/LIB/dmodideal.lib +1211 -0
  312. sage_wheels/share/singular/LIB/dmodloc.lib +2645 -0
  313. sage_wheels/share/singular/LIB/dmodvar.lib +818 -0
  314. sage_wheels/share/singular/LIB/dummy.lib +17 -0
  315. sage_wheels/share/singular/LIB/elim.lib +1009 -0
  316. sage_wheels/share/singular/LIB/ellipticcovers.lib +548 -0
  317. sage_wheels/share/singular/LIB/enumpoints.lib +146 -0
  318. sage_wheels/share/singular/LIB/equising.lib +2127 -0
  319. sage_wheels/share/singular/LIB/ffmodstd.lib +2384 -0
  320. sage_wheels/share/singular/LIB/ffsolve.lib +1289 -0
  321. sage_wheels/share/singular/LIB/findifs.lib +778 -0
  322. sage_wheels/share/singular/LIB/finitediff.lib +1768 -0
  323. sage_wheels/share/singular/LIB/finvar.lib +7989 -0
  324. sage_wheels/share/singular/LIB/fpadim.lib +2429 -0
  325. sage_wheels/share/singular/LIB/fpalgebras.lib +1666 -0
  326. sage_wheels/share/singular/LIB/fpaprops.lib +1462 -0
  327. sage_wheels/share/singular/LIB/freegb.lib +3853 -0
  328. sage_wheels/share/singular/LIB/general.lib +1350 -0
  329. sage_wheels/share/singular/LIB/gfan.lib +1768 -0
  330. sage_wheels/share/singular/LIB/gitfan.lib +3130 -0
  331. sage_wheels/share/singular/LIB/gkdim.lib +99 -0
  332. sage_wheels/share/singular/LIB/gmspoly.lib +589 -0
  333. sage_wheels/share/singular/LIB/gmssing.lib +1739 -0
  334. sage_wheels/share/singular/LIB/goettsche.lib +909 -0
  335. sage_wheels/share/singular/LIB/graal.lib +1366 -0
  336. sage_wheels/share/singular/LIB/gradedModules.lib +2541 -0
  337. sage_wheels/share/singular/LIB/graphics.lib +360 -0
  338. sage_wheels/share/singular/LIB/grobcov.lib +7706 -0
  339. sage_wheels/share/singular/LIB/groups.lib +1123 -0
  340. sage_wheels/share/singular/LIB/grwalk.lib +507 -0
  341. sage_wheels/share/singular/LIB/hdepth.lib +194 -0
  342. sage_wheels/share/singular/LIB/help.cnf +57 -0
  343. sage_wheels/share/singular/LIB/hess.lib +1946 -0
  344. sage_wheels/share/singular/LIB/hnoether.lib +4292 -0
  345. sage_wheels/share/singular/LIB/hodge.lib +400 -0
  346. sage_wheels/share/singular/LIB/homolog.lib +1965 -0
  347. sage_wheels/share/singular/LIB/hyperel.lib +975 -0
  348. sage_wheels/share/singular/LIB/inout.lib +679 -0
  349. sage_wheels/share/singular/LIB/integralbasis.lib +6224 -0
  350. sage_wheels/share/singular/LIB/interval.lib +1418 -0
  351. sage_wheels/share/singular/LIB/intprog.lib +778 -0
  352. sage_wheels/share/singular/LIB/invar.lib +443 -0
  353. sage_wheels/share/singular/LIB/involut.lib +980 -0
  354. sage_wheels/share/singular/LIB/jacobson.lib +1215 -0
  355. sage_wheels/share/singular/LIB/kskernel.lib +534 -0
  356. sage_wheels/share/singular/LIB/latex.lib +3146 -0
  357. sage_wheels/share/singular/LIB/lejeune.lib +651 -0
  358. sage_wheels/share/singular/LIB/linalg.lib +2040 -0
  359. sage_wheels/share/singular/LIB/locnormal.lib +212 -0
  360. sage_wheels/share/singular/LIB/lrcalc.lib +526 -0
  361. sage_wheels/share/singular/LIB/makedbm.lib +294 -0
  362. sage_wheels/share/singular/LIB/mathml.lib +813 -0
  363. sage_wheels/share/singular/LIB/matrix.lib +1372 -0
  364. sage_wheels/share/singular/LIB/maxlike.lib +1132 -0
  365. sage_wheels/share/singular/LIB/methods.lib +212 -0
  366. sage_wheels/share/singular/LIB/moddiq.lib +322 -0
  367. sage_wheels/share/singular/LIB/modfinduni.lib +181 -0
  368. sage_wheels/share/singular/LIB/modnormal.lib +218 -0
  369. sage_wheels/share/singular/LIB/modprimdec.lib +1278 -0
  370. sage_wheels/share/singular/LIB/modquotient.lib +269 -0
  371. sage_wheels/share/singular/LIB/modstd.lib +1024 -0
  372. sage_wheels/share/singular/LIB/modular.lib +545 -0
  373. sage_wheels/share/singular/LIB/modules.lib +2561 -0
  374. sage_wheels/share/singular/LIB/modwalk.lib +609 -0
  375. sage_wheels/share/singular/LIB/mondromy.lib +1016 -0
  376. sage_wheels/share/singular/LIB/monomialideal.lib +3851 -0
  377. sage_wheels/share/singular/LIB/mprimdec.lib +2353 -0
  378. sage_wheels/share/singular/LIB/mregular.lib +1863 -0
  379. sage_wheels/share/singular/LIB/multigrading.lib +5629 -0
  380. sage_wheels/share/singular/LIB/ncHilb.lib +777 -0
  381. sage_wheels/share/singular/LIB/ncModslimgb.lib +791 -0
  382. sage_wheels/share/singular/LIB/ncalg.lib +16311 -0
  383. sage_wheels/share/singular/LIB/ncall.lib +31 -0
  384. sage_wheels/share/singular/LIB/ncdecomp.lib +468 -0
  385. sage_wheels/share/singular/LIB/ncfactor.lib +13371 -0
  386. sage_wheels/share/singular/LIB/ncfrac.lib +1023 -0
  387. sage_wheels/share/singular/LIB/nchilbert.lib +448 -0
  388. sage_wheels/share/singular/LIB/nchomolog.lib +759 -0
  389. sage_wheels/share/singular/LIB/ncloc.lib +361 -0
  390. sage_wheels/share/singular/LIB/ncpreim.lib +795 -0
  391. sage_wheels/share/singular/LIB/ncrat.lib +2849 -0
  392. sage_wheels/share/singular/LIB/nctools.lib +1887 -0
  393. sage_wheels/share/singular/LIB/nets.lib +1456 -0
  394. sage_wheels/share/singular/LIB/nfmodstd.lib +1000 -0
  395. sage_wheels/share/singular/LIB/nfmodsyz.lib +732 -0
  396. sage_wheels/share/singular/LIB/noether.lib +1106 -0
  397. sage_wheels/share/singular/LIB/normal.lib +8700 -0
  398. sage_wheels/share/singular/LIB/normaliz.lib +2226 -0
  399. sage_wheels/share/singular/LIB/ntsolve.lib +362 -0
  400. sage_wheels/share/singular/LIB/numerAlg.lib +560 -0
  401. sage_wheels/share/singular/LIB/numerDecom.lib +2261 -0
  402. sage_wheels/share/singular/LIB/olga.lib +1933 -0
  403. sage_wheels/share/singular/LIB/orbitparam.lib +351 -0
  404. sage_wheels/share/singular/LIB/parallel.lib +319 -0
  405. sage_wheels/share/singular/LIB/paraplanecurves.lib +3110 -0
  406. sage_wheels/share/singular/LIB/perron.lib +202 -0
  407. sage_wheels/share/singular/LIB/pfd.lib +2223 -0
  408. sage_wheels/share/singular/LIB/phindex.lib +642 -0
  409. sage_wheels/share/singular/LIB/pointid.lib +673 -0
  410. sage_wheels/share/singular/LIB/polybori.lib +1430 -0
  411. sage_wheels/share/singular/LIB/polyclass.lib +525 -0
  412. sage_wheels/share/singular/LIB/polylib.lib +1174 -0
  413. sage_wheels/share/singular/LIB/polymake.lib +1902 -0
  414. sage_wheels/share/singular/LIB/presolve.lib +1533 -0
  415. sage_wheels/share/singular/LIB/primdec.lib +9576 -0
  416. sage_wheels/share/singular/LIB/primdecint.lib +1782 -0
  417. sage_wheels/share/singular/LIB/primitiv.lib +401 -0
  418. sage_wheels/share/singular/LIB/puiseuxexpansions.lib +1631 -0
  419. sage_wheels/share/singular/LIB/purityfiltration.lib +960 -0
  420. sage_wheels/share/singular/LIB/qhmoduli.lib +1561 -0
  421. sage_wheels/share/singular/LIB/qmatrix.lib +293 -0
  422. sage_wheels/share/singular/LIB/random.lib +455 -0
  423. sage_wheels/share/singular/LIB/ratgb.lib +489 -0
  424. sage_wheels/share/singular/LIB/realclassify.lib +5759 -0
  425. sage_wheels/share/singular/LIB/realizationMatroids.lib +772 -0
  426. sage_wheels/share/singular/LIB/realrad.lib +1197 -0
  427. sage_wheels/share/singular/LIB/recover.lib +2628 -0
  428. sage_wheels/share/singular/LIB/redcgs.lib +3984 -0
  429. sage_wheels/share/singular/LIB/reesclos.lib +465 -0
  430. sage_wheels/share/singular/LIB/resbinomial.lib +2802 -0
  431. sage_wheels/share/singular/LIB/resgraph.lib +789 -0
  432. sage_wheels/share/singular/LIB/resjung.lib +820 -0
  433. sage_wheels/share/singular/LIB/resolve.lib +5110 -0
  434. sage_wheels/share/singular/LIB/resources.lib +170 -0
  435. sage_wheels/share/singular/LIB/reszeta.lib +5473 -0
  436. sage_wheels/share/singular/LIB/ring.lib +1328 -0
  437. sage_wheels/share/singular/LIB/ringgb.lib +343 -0
  438. sage_wheels/share/singular/LIB/rinvar.lib +1153 -0
  439. sage_wheels/share/singular/LIB/rootisolation.lib +1481 -0
  440. sage_wheels/share/singular/LIB/rootsmr.lib +709 -0
  441. sage_wheels/share/singular/LIB/rootsur.lib +886 -0
  442. sage_wheels/share/singular/LIB/rstandard.lib +607 -0
  443. sage_wheels/share/singular/LIB/rwalk.lib +336 -0
  444. sage_wheels/share/singular/LIB/sagbi.lib +1353 -0
  445. sage_wheels/share/singular/LIB/sagbiNormaliz.lib +1622 -0
  446. sage_wheels/share/singular/LIB/sagbiNormaliz0.lib +1498 -0
  447. sage_wheels/share/singular/LIB/sagbigrob.lib +449 -0
  448. sage_wheels/share/singular/LIB/schreyer.lib +321 -0
  449. sage_wheels/share/singular/LIB/schubert.lib +2551 -0
  450. sage_wheels/share/singular/LIB/sets.lib +524 -0
  451. sage_wheels/share/singular/LIB/sheafcoh.lib +1663 -0
  452. sage_wheels/share/singular/LIB/signcond.lib +437 -0
  453. sage_wheels/share/singular/LIB/sing.lib +1094 -0
  454. sage_wheels/share/singular/LIB/sing4ti2.lib +419 -0
  455. sage_wheels/share/singular/LIB/solve.lib +2243 -0
  456. sage_wheels/share/singular/LIB/spcurve.lib +1077 -0
  457. sage_wheels/share/singular/LIB/spectrum.lib +62 -0
  458. sage_wheels/share/singular/LIB/sresext.lib +757 -0
  459. sage_wheels/share/singular/LIB/ssi.lib +143 -0
  460. sage_wheels/share/singular/LIB/standard.lib +2769 -0
  461. sage_wheels/share/singular/LIB/stanleyreisner.lib +473 -0
  462. sage_wheels/share/singular/LIB/stdmodule.lib +547 -0
  463. sage_wheels/share/singular/LIB/stratify.lib +1070 -0
  464. sage_wheels/share/singular/LIB/surf.lib +506 -0
  465. sage_wheels/share/singular/LIB/surf_jupyter.lib +223 -0
  466. sage_wheels/share/singular/LIB/surfacesignature.lib +522 -0
  467. sage_wheels/share/singular/LIB/surfex.lib +1462 -0
  468. sage_wheels/share/singular/LIB/swalk.lib +877 -0
  469. sage_wheels/share/singular/LIB/symodstd.lib +1570 -0
  470. sage_wheels/share/singular/LIB/systhreads.lib +74 -0
  471. sage_wheels/share/singular/LIB/tasks.lib +1324 -0
  472. sage_wheels/share/singular/LIB/tateProdCplxNegGrad.lib +2412 -0
  473. sage_wheels/share/singular/LIB/teachstd.lib +858 -0
  474. sage_wheels/share/singular/LIB/template.lib +116 -0
  475. sage_wheels/share/singular/LIB/toric.lib +1119 -0
  476. sage_wheels/share/singular/LIB/transformation.lib +116 -0
  477. sage_wheels/share/singular/LIB/triang.lib +1197 -0
  478. sage_wheels/share/singular/LIB/tropical.lib +8741 -0
  479. sage_wheels/share/singular/LIB/tropicalEllipticCovers.lib +2922 -0
  480. sage_wheels/share/singular/LIB/tropicalNewton.lib +1128 -0
  481. sage_wheels/share/singular/LIB/tst.lib +1108 -0
  482. sage_wheels/share/singular/LIB/weierstr.lib +241 -0
  483. sage_wheels/share/singular/LIB/zeroset.lib +1478 -0
  484. sage_wheels/share/singular/emacs/.emacs-general +184 -0
  485. sage_wheels/share/singular/emacs/.emacs-singular +234 -0
  486. sage_wheels/share/singular/emacs/COPYING +44 -0
  487. sage_wheels/share/singular/emacs/cmd-cmpl.el +241 -0
  488. sage_wheels/share/singular/emacs/ex-cmpl.el +1681 -0
  489. sage_wheels/share/singular/emacs/hlp-cmpl.el +4318 -0
  490. sage_wheels/share/singular/emacs/lib-cmpl.el +179 -0
  491. sage_wheels/share/singular/emacs/singular.el +4273 -0
  492. sage_wheels/share/singular/emacs/singular.xpm +39 -0
  493. sage_wheels/share/singular/singular.idx +5002 -0
@@ -0,0 +1,1000 @@
1
+ ////////////////////////////////////////////////////////////////////////////////
2
+ version="version nfmodstd.lib 4.4.0.6 Oct_2024 "; // $Id: afbfa7db6535520f7a9b9fbb1bae94194bfcf565 $
3
+ category="Commutative Algebra";
4
+ info="
5
+
6
+ LIBRARY: nfmodstd.lib Groebner bases of ideals in polynomial rings
7
+ over 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 Groebner basis of an ideal in the polynomial
14
+ ring over an algebraic number field Q(t) using the modular methods, where t is
15
+ algebraic over the field of rational numbers Q. For the case Q(t) = Q, the
16
+ procedure is inspired by Arnold [1]. This idea is then extended to the case
17
+ t not in Q using factorization as follows:
18
+ Let f be the minimal polynomial of t.
19
+ For I, I' ideals in Q(t)[X], Q[X,t]/<f> respectively, we map I to I' via the
20
+ map sending t to t + <f>. We first choose a prime p such that f has at least
21
+ two factors in characteristic p and add each factor f_i to I' to obtain the
22
+ ideal J'_i = I' + <f_i>. We then compute a standard basis G'_i of J'_i for each
23
+ i and combine the G'_i to G_p (a standard basis of I'_p) using chinese remaindering
24
+ for polynomials. The procedure is repeated for many primes p, where we compute the
25
+ G_p in parallel until the number of primes is sufficiently large to recover the
26
+ correct standard basis G' of I'. Finally, by mapping G' back to Q(t)[X], a standard
27
+ basis G of I is obtained.
28
+ @*The procedure also works if the input is a module. For this, we consider the
29
+ rings A = Q(t)[X] and A' = (Q[t]/<f>)[X]. For submodules I, I' in A^m, A'^m,
30
+ respectively, we map I to I' via the map sending t to t + <f>. As above, we first
31
+ choose a prime p such that f has at least two factors in characteristic p. For each
32
+ factor f_{i,p} of f_p := (f mod p), we set I'_{i,p} := (I'_p mod f_{i,p}). We then
33
+ compute a standard basis G'_i of I'_{i,p} over F_p[t]/<f_{i,p}> for each i and
34
+ combine the G'_i to G_p (a standard basis of I'_p) using chinese remaindering for
35
+ polynomials. The procedure is repeated for many primes p as described above and we
36
+ finally obtain a standard basis of I.
37
+
38
+ REFERENCES:
39
+ [1] E. A. Arnold: Modular algorithms for computing Groebner bases.
40
+ J. Symb. Comp. 35, 403-419 (2003).
41
+
42
+ PROCEDURES:
43
+ chinrempoly(l,m); chinese remaindering for polynomials
44
+ nfmodStd(I); standard basis of I over algebraic number field using modular
45
+ methods
46
+ ";
47
+
48
+ LIB "modstd.lib";
49
+
50
+ ////////////////////////////////////////////////////////////////////////////////
51
+
52
+ static proc testPrime(int p, list L)
53
+ {
54
+ /*
55
+ * test whether a prime p divides the denominator(s)
56
+ * and leading coefficients of generating set of ideal
57
+ */
58
+ int i,j,k, tmp;
59
+ def f;
60
+ def I = L[1]; // list L = def I
61
+ number num;
62
+ bigint d1,d2,d3;
63
+ if(typeof(I)=="ideal")
64
+ {
65
+ tmp=1;
66
+ }
67
+ for(i = 1; i <= ncols(I); i++)
68
+ {
69
+ f = cleardenom(I[i]);
70
+ if(f == 0)
71
+ {
72
+ return(0);
73
+ }
74
+ num = leadcoef(I[i])/leadcoef(f);
75
+ d1 = bigint(numerator(num));
76
+ d2 = bigint(denominator(num));
77
+ if( (d1 mod p) == 0)
78
+ {
79
+ return(0);
80
+ }
81
+ if((d2 mod p) == 0)
82
+ {
83
+ return(0);
84
+ }
85
+ if(tmp)
86
+ {
87
+ for(j = size(f); j > 0; j--)
88
+ {
89
+ d3 = bigint(leadcoef(f[j]));
90
+ if( (d3 mod p) == 0)
91
+ {
92
+ return(0);
93
+ }
94
+ }
95
+ }
96
+ else
97
+ {
98
+ for(j = nrows(f); j > 0; j--)
99
+ {
100
+ for(k=1;k<=size(f[j]);k++)
101
+ {
102
+ d3 = bigint(leadcoef(f[j][k]));
103
+ if((d3 mod p) == 0)
104
+ {
105
+ return(0);
106
+ }
107
+ }
108
+ }
109
+ }
110
+
111
+ }
112
+ return(1);
113
+ }
114
+
115
+ ////////////////////////////////////////////////////////////////////////////////
116
+ /* return 1 if the number of factors are in the required bound , 0 else */
117
+
118
+ static proc minpolyTask(poly f,int p)
119
+ {
120
+ /*
121
+ * bound for irreducible factor(s) of (f mod p)
122
+ * see testfact()
123
+ */
124
+ int nr,k,ur;
125
+ ur=deg(f);
126
+ list L=factmodp(f,p);
127
+ if(degtest(L[2])==1)
128
+ {
129
+ // now each factor is squarefree
130
+ if(ur<=3)
131
+ {
132
+ return(1);
133
+ }
134
+ else
135
+ {
136
+ nr = testfact(ur);
137
+ k=ncols(L[1]);
138
+ if(nr < k && k < (ur-nr))// set a bound for k
139
+ {
140
+ return(1);
141
+ }
142
+ }
143
+ }
144
+ return(0);
145
+ }
146
+
147
+ ////////////////////////////////////////////////////////////////////////////////
148
+ /* return 1 if both testPrime(p,J) and minpolyTask(f,p) is true, 0 else */
149
+
150
+ static proc PrimeTestTask(int p, list L)
151
+ {
152
+ /* L=list(I), I=J,f; J ideal , f minpoly */
153
+ int sz,nr;
154
+ def J=L[1];
155
+ sz=ncols(J);
156
+ def f=J[sz];
157
+ poly g;
158
+ if(typeof(f)=="vector")
159
+ {
160
+ g = f[1];
161
+ }
162
+ else
163
+ {
164
+ g = f;
165
+ }
166
+ if(!testPrime(p,list(J)) or !minpolyTask(g,p))
167
+ {
168
+ return(0);
169
+ }
170
+ return(1);
171
+ }
172
+
173
+ ////////////////////////////////////////////////////////////////////////////////
174
+ /* compute factors of f mod p with multiplicity */
175
+
176
+ static proc factmodp(poly f, int p)
177
+ {
178
+ def R=basering;
179
+ list l=ringlist(R);
180
+ l[1]=p;
181
+ def S=ring(l);
182
+ setring S;
183
+ list L=factorize(imap(R,f),2);
184
+ ideal J=L[1];
185
+ intvec v=L[2];
186
+ list scx=J,v;
187
+ setring R;
188
+ return(imap(S,scx));
189
+ kill S;
190
+ }
191
+
192
+ ////////////////////////////////////////////////////////////////////////////////
193
+ /* set a bound for number of factors w.r.t degree nr*/
194
+
195
+ static proc testfact(int nr)
196
+ {
197
+ // nr must be greater than 3
198
+ int i;
199
+ if(nr>3 and nr<=5)
200
+ {
201
+ i=1;
202
+ }
203
+ if(nr>5 and nr<=10)
204
+ {
205
+ i=2;
206
+ }
207
+ if(nr>10 and nr<=15)
208
+ {
209
+ i=3;
210
+ }
211
+ if(nr>15 and nr<=20)
212
+ {
213
+ i=4;
214
+ }
215
+ if(nr>20 and nr<=25)
216
+ {
217
+ i=5;
218
+ }
219
+ if(nr>25 and nr<=30)
220
+ {
221
+ i=6;
222
+ }
223
+ if(nr>30)
224
+ {
225
+ i=10;
226
+ }
227
+ return(i);
228
+ }
229
+
230
+ ///////////////////////////////////////////////////////////////////////////////
231
+ // return 1 if v[i]>1 , 0 else
232
+
233
+ static proc degtest(intvec v)
234
+ {
235
+ for(int j=1;j<=nrows(v);j++)
236
+ {
237
+ if(v[j]>1)
238
+ {
239
+ return(0);
240
+ }
241
+ }
242
+ return(1);
243
+ }
244
+
245
+ ////////////////////////////////////////////////////////////////////////////////
246
+
247
+ static proc chinRm(list m, list ll, list lk,list l1,int uz)
248
+ {
249
+ if(typeof(l1[1])=="ideal" or typeof(l1[1])=="poly")
250
+ {
251
+ poly ff,c;
252
+ for(int i=1;i<=uz;i++)
253
+ {
254
+ c = division(l1[i]*ll[i],m[i])[2][1];
255
+ ff = ff + c*lk[i];
256
+ }
257
+ return(ff);
258
+ }
259
+ else
260
+ {
261
+ vector ff,c;
262
+ for(int i=1;i<=uz;i++)
263
+ {
264
+ c = vector(m[i]);
265
+ attrib(c,"isSB",1);
266
+ ff = ff + (reduce(l1[i]*ll[i],c))*lk[i];
267
+ }
268
+ return(ff);
269
+ }
270
+ }
271
+
272
+ ////////////////////////////////////////////////////////////////////////////////
273
+
274
+ proc chinrempoly(list l,list m)
275
+ "USAGE: chinrempoly(l, m); l list, m list
276
+ RETURN: a polynomial (resp. ideal/module) which is congruent to l[i] modulo m[i]
277
+ for all i
278
+ NOTE: The procedure applies chinese remaindering to the first argument w.r.t. the
279
+ moduli given in the second. The elements in the first list must be of the same
280
+ type which can be polynomial, ideal, or module. The moduli must be of type
281
+ polynomial. The elements in the second list must be distinct and co-prime.
282
+ SEE ALSO: chinrem
283
+ EXAMPLE: example chinrempoly; shows an example
284
+ "
285
+ {
286
+ int i,j,sz,uz, tmp;
287
+ uz = size(l);
288
+ if(typeof(l[1])=="ideal" or typeof(l[1])=="poly")
289
+ {
290
+ sz = ncols(ideal(l[1]));
291
+ tmp = 1;
292
+ }
293
+ else
294
+ {
295
+ sz = ncols(module(l[1]));
296
+ }
297
+ poly f=1;
298
+ for(i=1;i<=uz;i++)
299
+ {
300
+ f=f*m[i];
301
+ }
302
+
303
+ list l1,ll,lk,l2;
304
+ poly c,ff;
305
+ for(j=1;j<=uz;j++)
306
+ {
307
+ lk[j]=f/m[j];
308
+ ll[j]=extgcd(lk[j],m[j])[2];
309
+ }
310
+
311
+ if(tmp)
312
+ {
313
+ ideal I,J;
314
+ for(i=1;i<=sz;i++)
315
+ {
316
+ for(j=1;j<=uz;j++)
317
+ {
318
+ I = l[j];
319
+ l1[j] = I[i];
320
+ }
321
+ J[i] = chinRm(m,ll,lk,l1,uz);
322
+ }
323
+ return(J);
324
+ }
325
+ else
326
+ {
327
+ module I,J;
328
+ for(i=1;i<=sz;i++)
329
+ {
330
+ for(j=1;j<=uz;j++)
331
+ {
332
+ I = l[j];
333
+ l1[j] = I[i];
334
+ }
335
+ J[i] = chinRm(m,ll,lk,l1,uz);
336
+ }
337
+ return(J);
338
+ }
339
+ }
340
+ example
341
+ { "EXAMPLE:"; echo = 2;
342
+ ring rr=97,x,dp;
343
+ poly f=x^7-7*x + 3;
344
+ ideal J=factorize(f,1);
345
+ J;
346
+ list m=J[1..ncols(J)];
347
+ list l= x^2+2*x+3, x^2+5, x^2+7;
348
+ ideal I=chinrempoly(l,m);
349
+ I;
350
+ ring s=0,x,dp;
351
+ list m= x^2+2*x+3, x^3+5, x^4+x^3+7;
352
+ list l=x^3 + 2, x^4 + 7, x^5 + 11;
353
+ ideal I=chinrempoly(l,m);
354
+ I;
355
+ int p=prime(536546513);
356
+ ring r = p, (x,y,a), (dp(2),dp(1));
357
+ poly minpolynomial = a^2+1;
358
+ ideal kf=factorize(minpolynomial,1); //return factors without multiplicity
359
+ kf;
360
+ ideal k=(a+1)*x2+y, 3x-ay+ a+2;
361
+ option(redSB);
362
+ ideal k1=k,kf[1];
363
+ ideal k2 =k,kf[2];
364
+ k1=std(k1);
365
+ k2=std(k2);
366
+ list l=k1,k2;
367
+ list m=kf[1..ncols(kf)];
368
+ ideal I=chinrempoly(l,m);
369
+ I=simplify(I,2);
370
+ I;
371
+ l = module(k1[2..ncols(k1)]), module(k2[2..ncols(k2)]);
372
+ module M = chinrempoly(l,m);
373
+ M;
374
+ }
375
+ ////////////////////////////////////////////////////////////////////////////////
376
+
377
+ static proc check_leadmonom_and_size(list L)
378
+ {
379
+ /*
380
+ * compare the size of ideals in the list and
381
+ * check the corresponding leading monomials
382
+ * size(L)>=2
383
+ */
384
+ def J=L[1];
385
+ int i=size(L);
386
+ int sc=ncols(J);
387
+ int j,k;
388
+ def g=leadmonom(J[1]);
389
+ for(j=1;j<=i;j++)
390
+ {
391
+ if(ncols(L[j])!=sc)
392
+ {
393
+ return(0);
394
+ }
395
+ }
396
+ for(k=2;k<=i;k++)
397
+ {
398
+ for(j=1;j<=sc;j++)
399
+ {
400
+ if(leadmonom(J[j])!=leadmonom(L[k][j]))
401
+ {
402
+ return(0);
403
+ }
404
+ }
405
+ }
406
+ return(1);
407
+ }
408
+
409
+ ////////////////////////////////////////////////////////////////////////////////
410
+
411
+ static proc LiftPolyCRT(def I)
412
+ {
413
+ /*
414
+ * compute std for each factor and combine this result
415
+ * to modulo minpoly via CRT for poly over char p>0
416
+ */
417
+ def sl;
418
+ int u,in,j;
419
+ list LL,Lk,T2;
420
+ if(typeof(I)=="ideal")
421
+ {
422
+
423
+ ideal J,K,II;
424
+ poly f;
425
+ u=ncols(I);
426
+ J=I[1..u-1];
427
+ f=I[u];
428
+ K=factorize(f,1);
429
+ in=ncols(K);
430
+ for(j=1;j<=in;j++)
431
+ {
432
+ LL[j]=K[j];
433
+ ideal I(j)=J,K[j];
434
+ I(j)=std(I(j));
435
+ if(size(I(j))==1)
436
+ {
437
+ Lk[j]=I(j);
438
+ }
439
+ else
440
+ {
441
+ I(j)[1]=0;
442
+ I(j)=simplify(I(j), 2);
443
+ Lk[j]=I(j);
444
+ }
445
+ }
446
+ if(check_leadmonom_and_size(Lk))
447
+ {
448
+ // apply CRT for polynomials
449
+ II =chinrempoly(Lk,LL),f;
450
+ }
451
+ else
452
+ {
453
+ II=0;
454
+ }
455
+ return(II);
456
+ }
457
+ else
458
+ {
459
+ module J,II;
460
+ vector f;
461
+ u=ncols(I);
462
+ J=I[1..u-1];
463
+ f=I[u];
464
+ poly ff = f[1];
465
+ ideal K=factorize(ff,1);
466
+ in=ncols(K);
467
+ def Ls = basering;
468
+ list l = ringlist(Ls);
469
+ if(l[3][1][1]=="c")
470
+ {
471
+ l[1] = list(l[1]) + list(list(l[2][size(l[2])])) +
472
+ list(list(l[3][size(l[3])]))+list(ideal(0));
473
+ l[2] = delete(l[2],size(l[2]));
474
+ l[3] = delete(l[3],size(l[3]));
475
+ }
476
+ else
477
+ {
478
+ l[1] = list(l[1]) + list(list(l[2][size(l[2])])) +
479
+ list(list(l[3][size(l[3])-1]))+list(ideal(0));
480
+ l[2] = delete(l[2],size(l[2]));
481
+ l[3] = delete(l[3],size(l[3])-1);
482
+ }
483
+
484
+ def S1 = ring(l);
485
+ setring S1;
486
+ number Num= number(imap(Ls,ff));
487
+ list l = ringlist(S1);
488
+ l[1][4][1] = Num;
489
+ S1 = ring(l);
490
+ setring S1;
491
+ ideal K = imap(Ls,K);
492
+ def S2;
493
+ module II;
494
+ number Num;
495
+ /* ++++++ if minpoly is irreducible then K will be the zero ideal +++ */
496
+ if(size(K)==0)
497
+ {
498
+ module M = std(imap(Ls,J));
499
+ if(size(M)==1 && M[1]==[1])
500
+ {
501
+ setring Ls;
502
+ return(module([1]));
503
+ }
504
+ II = normalize(M);
505
+ }
506
+ else
507
+ {
508
+ for(j=1;j<=in;j++)
509
+ {
510
+ LL[j]=K[j];
511
+ Num = number(K[j]);
512
+ T2 = ringlist(S1);
513
+ T2[1][4][1] = Num;
514
+ S2 = ring(T2);
515
+ setring S2;
516
+ module M = std(imap(Ls,J));
517
+ if(size(M)== 1 && M[1]==[1])
518
+ {
519
+ setring Ls;
520
+ return(module([1]));
521
+ }
522
+ setring S1;
523
+ Lk[j]= imap(S2,M);
524
+ }
525
+
526
+ if(check_leadmonom_and_size(Lk))
527
+ {
528
+ // apply CRT for polynomials
529
+ setring Ls;
530
+ II =chinrempoly(imap(S1,Lk),imap(S1,LL));
531
+ setring S1;
532
+ II = normalize(imap(Ls,II));
533
+ }
534
+ else
535
+ {
536
+ setring S1;
537
+ II=[0];
538
+ }
539
+ }
540
+ setring Ls;
541
+ return(imap(S1,II));
542
+ }
543
+ }
544
+
545
+ ////////////////////////////////////////////////////////////////////////////////
546
+
547
+ /* test if 'result' is a GB of the input ideal */
548
+ static proc final_Test_minpolyzero(string command, alias list args, module result)
549
+ {
550
+ int i;
551
+ list arg = args;
552
+ attrib(result, "isSB", 1);
553
+ for (i = ncols(args[1]); i > 0; i--)
554
+ {
555
+ if (reduce(args[1][i], result, 5) != 0)
556
+ {
557
+ return(0);
558
+ }
559
+ }
560
+ /* test if result is a GB */
561
+ module G = std(result);
562
+ if (size(reduce(G, result,5))!=0) //Modstd::reduce_parallel(G, result)
563
+ {
564
+ return(0);
565
+ }
566
+ return(1);
567
+ }
568
+
569
+ ////////////////////////////////////////////////////////////////////////////////
570
+
571
+ /* test if 'result' is a GB of the input ideal */
572
+ static proc final_Test(string command, alias list args, def result)
573
+ {
574
+ int i;
575
+ list arg = args;
576
+ // modified for module case
577
+ if(typeof(args[1])=="ideal")
578
+ {
579
+ /* test if args[1] is in result */
580
+ attrib(result, "isSB", 1);
581
+ for (i = ncols(args[1]); i > 0; i--)
582
+ {
583
+ if (reduce(args[1][i], result, 5) != 0)
584
+ {
585
+ return(0);
586
+ }
587
+ }
588
+
589
+ /* test if result is a GB */
590
+ ideal G = std(result);
591
+ if (size(reduce(G, result,5))!=0) //Modstd::reduce_parallel(G, result)
592
+ {
593
+ return(0);
594
+ }
595
+ return(1);
596
+ }
597
+ else
598
+ {
599
+ /* test if args[1] is in result */
600
+ def Ls = basering;
601
+ list l = ringlist(Ls);
602
+ if(l[3][1][1]=="c")
603
+ {
604
+ l[1] = list(l[1]) + list(list(l[2][size(l[2])])) +
605
+ list(list(l[3][size(l[3])]))+list(ideal(0));
606
+ l[2] = delete(l[2],size(l[2]));
607
+ l[3] = delete(l[3],size(l[3]));
608
+ }
609
+ else
610
+ {
611
+ l[1] = list(l[1]) + list(list(l[2][size(l[2])])) +
612
+ list(list(l[3][size(l[3])-1]))+list(ideal(0));
613
+ l[2] = delete(l[2],size(l[2]));
614
+ l[3] = delete(l[3],size(l[3])-1);
615
+ }
616
+ def sL = ring(l);
617
+ kill l;
618
+ setring sL;
619
+ list arg = imap(Ls,arg);
620
+ module arg_s =arg[1];
621
+ list l = ringlist(sL);
622
+ l[1][4][1] = arg_s[ncols(arg_s)][1];
623
+ arg_s = arg_s[1..ncols(arg_s)-1];
624
+ def cL = ring(l);
625
+ setring cL;
626
+ module ar_gs = imap(sL,arg_s);
627
+ def Result = imap(Ls,result);
628
+ attrib(Result, "isSB", 1);
629
+ for (i = ncols(ar_gs); i > 0; i--)
630
+ {
631
+ if (reduce(ar_gs[i], Result, 5) != 0)
632
+ {
633
+ setring Ls;
634
+ return(0);
635
+ }
636
+ }
637
+ // test if result is a GB
638
+ module G = std(Result);
639
+ if (size(reduce(G,Result,5))!=0) //Modstd::reduce_parallel(G, Result)
640
+ {
641
+ setring Ls;
642
+ return(0);
643
+ }
644
+ setring Ls;
645
+ return(1);
646
+ }
647
+ }
648
+
649
+ ////////////////////////////////////////////////////////////////////////////////
650
+
651
+ static proc PtestStd_minpolyzero(string command, list args, module result, int p)
652
+ {
653
+ /*
654
+ * let G be std of I which is not yet known whether it is the correct
655
+ * standard basis. So this procedure does the first test
656
+ */
657
+ def br = basering;
658
+ list lbr = ringlist(br);
659
+ if (typeof(lbr[1]) == "int")
660
+ {
661
+ lbr[1] = p;
662
+ }
663
+ else
664
+ {
665
+ lbr[1][1] = p;
666
+ }
667
+ def rp = ring(lbr);
668
+ setring(rp);
669
+ module Ip = imap(br, args)[1];
670
+ int i;
671
+ module Gp = imap(br, result);
672
+ attrib(Gp, "isSB", 1);
673
+ for (i = ncols(Ip); i > 0; i--)
674
+ {
675
+ if (reduce(Ip[i], Gp, 5) != 0)
676
+ {
677
+ setring(br);
678
+ return(0);
679
+ }
680
+ }
681
+ Ip = std(Ip);
682
+ attrib(Ip,"isSB",1);
683
+ for (i = ncols(Gp); i > 0; i--)
684
+ {
685
+ if (reduce(Gp[i], Ip, 5) != 0)
686
+ {
687
+ setring(br);
688
+ return(0);
689
+ }
690
+ }
691
+ setring(br);
692
+ return(1);
693
+ }
694
+
695
+ ////////////////////////////////////////////////////////////////////////////////
696
+
697
+ static proc PtestStd(string command, list args, def result, int p)
698
+ {
699
+ /*
700
+ * let G be std of I which is not yet known whether it is the correct
701
+ * standard basis. So this procedure does the first test
702
+ */
703
+ def br = basering;
704
+
705
+ list lbr = ringlist(br);
706
+ if (typeof(lbr[1]) == "int")
707
+ {
708
+ lbr[1] = p;
709
+ }
710
+ else
711
+ {
712
+ lbr[1][1] = p;
713
+ }
714
+ def rp = ring(lbr);
715
+ setring(rp);
716
+ def Ip = imap(br, args)[1];
717
+
718
+ int u,in,j,i;
719
+ list LL,Lk,T2;
720
+ if(typeof(Ip)!="ideal")
721
+ {
722
+ module J,II;
723
+ vector f;
724
+ u=ncols(Ip);
725
+ J=Ip[1..u-1];
726
+ f=Ip[u];
727
+ poly ff = f[1];
728
+ ideal K=factorize(ff,1);
729
+ in=ncols(K);
730
+ def Ls = basering;
731
+ list l = ringlist(Ls);
732
+ if(l[3][1][1]=="c")
733
+ {
734
+ l[1] = list(l[1]) + list(list(l[2][size(l[2])])) +
735
+ list(list(l[3][size(l[3])]))+list(ideal(0));
736
+ l[2] = delete(l[2],size(l[2]));
737
+ l[3] = delete(l[3],size(l[3]));
738
+ }
739
+ else
740
+ {
741
+ l[1] = list(l[1]) + list(list(l[2][size(l[2])])) +
742
+ list(list(l[3][size(l[3])-1]))+list(ideal(0));
743
+ l[2] = delete(l[2],size(l[2]));
744
+ l[3] = delete(l[3],size(l[3])-1);
745
+ }
746
+ def S1 = ring(l);
747
+ setring S1;
748
+ number Num= number(imap(Ls,ff));
749
+ list l = ringlist(S1);
750
+ l[1][4][1] = Num;
751
+ S1 = ring(l);
752
+ setring S1;
753
+ ideal K = imap(Ls,K);
754
+ module Jp = imap(Ls,J);
755
+ def S2;
756
+ module Ip;
757
+ number Num;
758
+ /* ++++++ if the minpoly is irreducible then K = ideal(0) +++ */
759
+ if(size(K)==0)
760
+ {
761
+ module M = std(Jp);
762
+ Ip = normalize(M);
763
+ }
764
+ else
765
+ {
766
+ for(j=1;j<=ncols(K);j++)
767
+ {
768
+ LL[j]=K[j];
769
+ Num = number(K[j]);
770
+ T2 = ringlist(S1);
771
+ T2[1][4][1] = Num;
772
+ S2 = ring(T2);
773
+ setring S2;
774
+ module M = std(imap(Ls,J));
775
+ setring S1;
776
+ Lk[j]= imap(S2,M);
777
+ }
778
+ if(check_leadmonom_and_size(Lk))
779
+ {
780
+ // apply CRT for polynomials
781
+ setring Ls;
782
+ II =chinrempoly(imap(S1,Lk),imap(S1,LL));
783
+ setring S1;
784
+ Ip = normalize(imap(Ls,II));
785
+ }
786
+ else
787
+ {
788
+ setring S1;
789
+ Ip=[0];
790
+ }
791
+ }
792
+ setring S1;
793
+ module Gp = imap(br, result);
794
+ attrib(Gp, "isSB", 1);
795
+ for (i = ncols(Jp); i > 0; i--)
796
+ {
797
+ if (reduce(Jp[i], Gp, 5) != 0)
798
+ {
799
+ setring(br);
800
+ return(0);
801
+ }
802
+ }
803
+
804
+ attrib(Ip,"isSB",1);
805
+ for (i = ncols(Gp); i > 0; i--)
806
+ {
807
+ if (reduce(Gp[i], Ip, 5) != 0)
808
+ {
809
+ setring(br);
810
+ return(0);
811
+ }
812
+ }
813
+ setring(br);
814
+ return(1);
815
+ }
816
+ else
817
+ {
818
+ ideal Gp = imap(br, result);
819
+ attrib(Gp, "isSB", 1);
820
+ for (i = ncols(Ip); i > 0; i--)
821
+ {
822
+ if (reduce(Ip[i], Gp, 5) != 0)
823
+ {
824
+ setring(br);
825
+ return(0);
826
+ }
827
+ }
828
+ Ip = LiftPolyCRT(Ip);
829
+ attrib(Ip,"isSB",1);
830
+ for (i = ncols(Gp); i > 0; i--)
831
+ {
832
+ if (reduce(Gp[i], Ip, 5) != 0)
833
+ {
834
+ setring(br);
835
+ return(0);
836
+ }
837
+ }
838
+ setring(br);
839
+ return(1);
840
+ }
841
+ }
842
+
843
+ ////////////////////////////////////////////////////////////////////////////////
844
+
845
+ static proc cleardenomIdeal(def I)
846
+ {
847
+ int t=ncols(I);
848
+ if(size(I)==0)
849
+ {
850
+ return(I);
851
+ }
852
+ else
853
+ {
854
+ for(int i=1;i<=t;i++)
855
+ {
856
+ I[i]=cleardenom(I[i]);
857
+ }
858
+ }
859
+ return(I);
860
+ }
861
+
862
+ ////////////////////////////////////////////////////////////////////////////////
863
+
864
+ static proc modStdparallelized(def I, list #)
865
+ {
866
+ // apply modular.lib
867
+ /* save options */
868
+ intvec opt = option(get);
869
+ option(redSB);
870
+ if(size(#)>0)
871
+ {
872
+ I = modular("std", list(I), testPrime, Modstd::deleteUnluckyPrimes_std,
873
+ PtestStd_minpolyzero, final_Test_minpolyzero,536870909);
874
+ }
875
+ else
876
+ {
877
+ I = modular("Nfmodstd::LiftPolyCRT", list(I), PrimeTestTask,
878
+ Modstd::deleteUnluckyPrimes_std,PtestStd, final_Test,536870909);
879
+ }
880
+ attrib(I, "isSB", 1);
881
+ option(set,opt);
882
+ return(I);
883
+ }
884
+
885
+ ////////////////////////////////////////////////////////////////////////////////
886
+ /* main procedure */
887
+ proc nfmodStd(def I, list #)
888
+ "USAGE: nfmodStd(I, #); I ideal or module, # optional parameters
889
+ RETURN: standard basis of I over algebraic number field
890
+ NOTE: The procedure passes to @ref{modStd} if the ground field has no
891
+ parameter. In this case, the optional parameters # (if given)
892
+ are directly passed to @ref{modStd}.
893
+ SEE ALSO: modStd
894
+ EXAMPLE: example nfmodStd; shows an example
895
+ "
896
+ {
897
+ intvec save_opt=option(get);option(pure_gb);
898
+ list L=#;
899
+ def Rbs=basering;
900
+ poly f;
901
+ int tmp=1;
902
+ if(typeof(I)!="ideal")
903
+ {
904
+ tmp =0;
905
+ }
906
+ int n=nvars(Rbs);
907
+ if(size(I)==0)
908
+ {
909
+ if(!tmp)
910
+ {
911
+ return(module([0]));
912
+ }
913
+ return(ideal(0));
914
+ }
915
+ if(npars(Rbs)==0)
916
+ {
917
+ //if algebraic number is in Q
918
+ if(typeof(I)=="module")
919
+ {
920
+ def J = modStdparallelized(I,1);
921
+ option(set,save_opt);
922
+ return(J);
923
+ }
924
+ else
925
+ {
926
+ def J=modStd(I,L);
927
+ option(set,save_opt);
928
+ return(J);
929
+ }
930
+ }
931
+ def S;
932
+ list rl=ringlist(Rbs);
933
+ f=rl[1][4][1];
934
+ if(tmp)
935
+ {
936
+ rl[2][n+1]=rl[1][2][1];
937
+ rl[1]=rl[1][1];
938
+ rl[3][size(rl[3])+1]=rl[3][size(rl[3])];
939
+ rl[3][size(rl[3])-1]=list("dp",1);
940
+ }
941
+ else
942
+ {
943
+ if(rl[3][1][1]!="c")
944
+ {
945
+ rl[2] = rl[2] + rl[1][2];
946
+ rl[3] = insert(rl[3], rl[1][3][1],1);
947
+ rl[1] = rl[1][1];
948
+ }
949
+ else
950
+ {
951
+ rl[2] = rl[2] + rl[1][2];
952
+ rl[3][size(rl[3])+1] = rl[1][3][1];
953
+ rl[1] = rl[1][1];
954
+ }
955
+ }
956
+ S = ring(rl);
957
+ setring S;
958
+ poly f=imap(Rbs,f);
959
+ def I=imap(Rbs,I);
960
+ I = simplify(I,2); // eraze the zero generatos
961
+ if(f==0)
962
+ {
963
+ ERROR("minpoly must be non-zero");
964
+ }
965
+ I=I,f;
966
+ def J_I=modStdparallelized(I);
967
+ setring Rbs;
968
+ def J=imap(S,J_I);
969
+ J=simplify(J,2);
970
+ option(set,save_opt);
971
+ return(J);
972
+ }
973
+ example
974
+ { "EXAMPLE:"; echo = 2;
975
+ ring r1 = (0,a),(x,y),dp;
976
+ minpoly = a^2+1;
977
+ ideal k = (a/2+1)*x^2+2/3y, 3*x-a*y+ a/7+2;
978
+ ideal I = nfmodStd(k);
979
+ I;
980
+ ring rm = (0,a),(x,y),(c,dp);
981
+ minpoly = a^3+2a+7;
982
+ module M = [(a/2+1)*x^2+2/3y, 3*x-a*y+ a/7+2], [ax, y];
983
+ M = nfmodStd(M);
984
+ M;
985
+ ring r2 = (0,a),(x,y,z),dp;
986
+ minpoly = a^3 +2;
987
+ ideal k = (a^2+a/2)*x^2+(a^2 -2/3*a)*yz, (3*a^2+1)*zx-(a+4/7)*y+ a+2/5;
988
+ ideal IJ = nfmodStd(k);
989
+ IJ;
990
+ ring r3 = 0, (x,y), dp; // ring without parameter
991
+ ideal I = x2 + y, xy - 7y + 2x;
992
+ ideal J1 = nfmodStd(I);
993
+ J1;
994
+ module J2 = nfmodStd(module(I));
995
+ J2;
996
+ ring r4 = 0, (x,y), (c,dp);
997
+ module I = [x2, x-y], [xy,0], [0,-7y + 2x];
998
+ I=nfmodStd(I);
999
+ I;
1000
+ }