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,820 @@
1
+ ////////////////////////////////////////////////////////////////////////////
2
+ version="version resjung.lib 4.1.2.0 Feb_2019 "; // $Id: 3d3614adf8963f2c001c60b1b5ddfaa9bdd30466 $
3
+ category="Commutative Algebra";
4
+ info="
5
+ LIBRARY: resjung.lib Resolution of surface singularities (Desingularization)
6
+ Algorithm of Jung
7
+ AUTHOR: Philipp Renner, philipp_renner@web.de
8
+
9
+ PROCEDURES:
10
+ jungresolve(J[,is_noeth]) computes a resolution (!not a strong one) of the
11
+ surface given by the ideal J using Jungs Method,
12
+ jungnormal(J[,is_noeth]) computes a representation of J such that all it's
13
+ singularities are of Hirzebruch-Jung type,
14
+ jungfib(J[,is_noeth]) computes a representation of J such that all it's
15
+ singularities are quasi-ordinary
16
+ ";
17
+
18
+ LIB "resolve.lib";
19
+ LIB "mregular.lib";
20
+ LIB "sing.lib";
21
+ LIB "normal.lib";
22
+ LIB "primdec.lib";
23
+
24
+
25
+ //-----------------------------------------------------------------------------------------
26
+ //Main procedure
27
+ //-----------------------------------------------------------------------------------------
28
+
29
+ proc jungfib(ideal id, list #)
30
+ "USAGE: jungfib(J[,is_noeth]);
31
+ @* J = ideal
32
+ @* j = int
33
+ ASSUME: J = two dimensional ideal
34
+ RETURN: a list l of rings
35
+ l[i] is a ring containing two Ideals: QIdeal and BMap.
36
+ BMap defines a birational morphism from V(QIdeal)-->V(J), such that
37
+ V(QIdeal) has only quasi-ordinary singularities.
38
+ If is_noeth=1 the algorithm assumes J is in noether position with respect to
39
+ the last two variables. As a default or if is_noeth = 0 the algorithm computes
40
+ a coordinate change such that J is in noether position.
41
+ NOTE: since the noether position algorithm is randomized the performance
42
+ can vary significantly.
43
+ EXAMPLE: example jungfib; shows an example.
44
+ "
45
+ {
46
+ int noeth = 0;
47
+ if(size(#) == 0)
48
+ {
49
+ #[1]=0;
50
+ noeth=0;
51
+ }
52
+ if(#[1]==1){
53
+ noeth=1;
54
+ }
55
+ ideal I = id;
56
+ I = radical(id);
57
+ def A = basering;
58
+ int n = nvars(A);
59
+ if(deg(NF(1,groebner(slocus(id)))) == -1){
60
+ list result;
61
+ ideal QIdeal = I;
62
+ ideal BMap = maxideal(1);
63
+ export(QIdeal);
64
+ export(BMap);
65
+ result[1] = A;
66
+ return(result);
67
+ }
68
+ if(char(A) <> 0){ERROR("only works for characterisitc 0");} //dummy check
69
+ if(dim(I)<> 2){ERROR("dimension is unequal 2");} //dummy check
70
+ //Noether Normalization
71
+ if(noeth == 0){
72
+ if(n==3){
73
+ int pos = NoetherP_test(I);
74
+ if(pos ==0){
75
+ ideal noethpos = NoetherPosition(I);
76
+ map phi = A,noethpos;
77
+ kill noethpos,pos;
78
+ }
79
+ else{
80
+ ideal NoetherPos = var(pos);
81
+ for(int i = 1;i<=3;i++){
82
+ if(i<>pos){
83
+ NoetherPos = NoetherPos + var(i);
84
+ }
85
+ }
86
+ map phi = A,NoetherPos;
87
+ kill i,pos,NoetherPos;
88
+ }
89
+ }
90
+ else{
91
+ map phi = A,NoetherPosition(I);
92
+ }
93
+ ideal NoetherN = ideal(phi(I)); //image of id under the NoetherN coordinate change
94
+ }
95
+ else{
96
+ ideal NoetherN = I;
97
+ map phi = A,maxideal(1);
98
+ }
99
+ kill I;
100
+ //Critical Locus
101
+ def C2 = branchlocus(NoetherN);
102
+ setring C2;
103
+ //dim of critical locus is 0 then the normalization is an resolution
104
+ if(dim(clocus) == 0){
105
+ setring A;
106
+ list nor = normal(NoetherN);
107
+ list result;
108
+ int sizeofnor = size(nor[1]);
109
+ for(int i = 1;i<=sizeofnor;i++){
110
+ def R = nor[1][i];
111
+ setring R;
112
+ ideal QIdeal = norid;
113
+ ideal BMap = BMap;
114
+ export(QIdeal);
115
+ export(BMap);
116
+ result[size(result)+1] = R;
117
+ kill R;
118
+ setring A;
119
+ }
120
+ kill sizeofnor;
121
+ print("This is a resolution.");
122
+ return(result);
123
+ }
124
+
125
+ //dim of critical locus is 1, so compute embedded resolution of the discriminant curve
126
+ list embresolvee = embresolve(clocus);
127
+
128
+ //build the fibreproduct
129
+ setring A;
130
+ list fibreP = buildFP(embresolvee,NoetherN,phi);
131
+ //a list of lists, where fibreP[i] contains the information concerning
132
+ //the i-th chart of the fibrepoduct
133
+ //fibreP[i] is the ring; QIdeal the quotientideal; BMap is the map from A
134
+ return(fibreP);
135
+ }
136
+ example{
137
+ "EXAMPLE:";echo = 2;
138
+ //Computing a resolution of singularities of the variety z2-x3-y3
139
+ ring r = 0,(x,y,z),dp;
140
+ ideal I = z2-x3-y3;
141
+ //The ideal is in noether position
142
+ list l = jungfib(I,1);
143
+ def R1 = l[1];
144
+ def R2 = l[2];
145
+ setring R1;
146
+ QIdeal;
147
+ BMap;
148
+ setring R2;
149
+ QIdeal;
150
+ BMap;
151
+ }
152
+
153
+ proc jungnormal(ideal id,list #)
154
+ "USAGE: jungnormal(ideal J[,is_noeth]);
155
+ @* J = ideal
156
+ @* i = int
157
+ ASSUME: J = two dimensional ideal
158
+ RETURN: a list l of rings
159
+ l[i] is a ring containing two Ideals: QIdeal and BMap.
160
+ BMap defines a birational morphism from V(QIdeal)-->V(J), such that
161
+ V(QIdeal) has only singularities of Hizebuch-Jung type.
162
+ If is_noeth=1 the algorithm assumes J is in noether position with respect to
163
+ the last two variables. As a default or if is_noeth = 0 the algorithm computes
164
+ a coordinate change such that J is in noether position.
165
+ NOTE: since the noether position algorithm is randomized the performance
166
+ can vary significantly.
167
+ EXAMPLE: example jungnormal; gives an example.
168
+ "
169
+ {
170
+ int noeth = 0;
171
+ if(size(#) == 0)
172
+ {
173
+ #[1]=0;
174
+ noeth=0;
175
+ }
176
+ if(#[1]==1){
177
+ noeth=1;
178
+ }
179
+ def A = basering;
180
+ list fibreP = jungfib(id,noeth);
181
+ list result;
182
+ for(int i =1;i<=size(fibreP);i++){
183
+ def R1 = fibreP[i];
184
+ setring R1;
185
+ map f1 = A,BMap;
186
+ list nor = normal(QIdeal);
187
+ int sizeofnor = size(nor[1]);
188
+ for(int j = 1;j<=sizeofnor;j++){
189
+ def Ri2 = nor[1][j];
190
+ setring Ri2;
191
+ map f2 = R1,normap;
192
+ ideal BMap = ideal(f2(f1));
193
+ ideal QIdeal = norid;
194
+ export(BMap);
195
+ export(QIdeal);
196
+ result[size(result)+1] = Ri2;
197
+ kill Ri2,f2;
198
+ setring R1;
199
+ }
200
+ kill j,sizeofnor,R1;
201
+ }
202
+ return(result);
203
+ }
204
+ example{
205
+ "EXAMPLE:";echo = 2;
206
+ //Computing a resolution of singularities of the variety z2-x3-y3
207
+ ring r = 0,(x,y,z),dp;
208
+ ideal I = z2-x3-y3;
209
+ //The ideal is in noether position
210
+ list l = jungnormal(I,1);
211
+ def R1 = l[1];
212
+ def R2 = l[2];
213
+ setring R1;
214
+ QIdeal;
215
+ BMap;
216
+ setring R2;
217
+ QIdeal;
218
+ BMap;
219
+ }
220
+
221
+ proc jungresolve(ideal id,list #)
222
+ "USAGE: jungresolve(ideal J[,is_noeth]);
223
+ @* J = ideal
224
+ @* i = int
225
+ ASSUME: J = two dimensional ideal
226
+ RETURN: a list l of rings
227
+ l[i] is a ring containing two Ideals: QIdeal and BMap.
228
+ BMap defines a birational morphism from V(QIdeal)-->V(J), such that
229
+ V(QIdeal) is smooth. For this the algorithm computes first with
230
+ jungnormal a representation of V(J) with Hirzebruch-Jung singularities
231
+ and then it uses Villamayor's algorithm to resolve these singularities
232
+ If is_noeth=1 the algorithm assumes J is in noether position with respect to
233
+ the last two variables. As a default or if is_noeth = 0 the algorithm computes
234
+ a coordinate change such that J is in noether position.
235
+ NOTE: since the noether position algorithm is randomized the performance
236
+ can vary significantly.
237
+ EXAMPLE: example jungresolve; shows an example.
238
+ "
239
+ {
240
+ int noeth = 0;
241
+ if(size(#) == 0)
242
+ {
243
+ #[1]=0;
244
+ noeth=0;
245
+ }
246
+ if(#[1]==1){
247
+ noeth=1;
248
+ }
249
+ def A = basering;
250
+ list result;
251
+ list nor = jungnormal(id,noeth);
252
+ for(int i = 1;i<=size(nor);i++){
253
+ if(defined(R)==voice){kill R;}
254
+ def R3 = nor[i];
255
+ setring R3;
256
+ def R = changeord(list(list("dp",1:nvars(basering))));
257
+ setring R;
258
+ ideal QIdeal = imap(R3,QIdeal);
259
+ ideal BMap = imap(R3,BMap);
260
+ map f = A,BMap;
261
+ if(QIdeal <> 0){
262
+ list res = resolve(QIdeal);
263
+ for(int j =1;j<=size(res[1]);j++){
264
+ def R2 = res[1][j];
265
+ setring R2;
266
+ if(defined(QIdeal)==voice){kill QIdeal;}
267
+ if(defined(BMap)==voice){kill BMap;}
268
+ if(BO[1]<>0){ideal QIdeal = BO[1]+BO[2];}
269
+ else{ideal QIdeal = BO[2];}
270
+ map g = R,BO[5];
271
+ ideal BMap = ideal(g(f));
272
+ export(QIdeal);
273
+ export(BMap);
274
+ result[size(result)+1] = R2;
275
+ kill R2;
276
+ }
277
+ kill j,res;
278
+ }
279
+ else{
280
+ result[size(result)+1] = nor[i];
281
+ }
282
+ setring A;
283
+ kill R,R3;
284
+ }
285
+ return(result);
286
+ }
287
+ example{
288
+ "EXAMPLE:";echo = 2;
289
+ //Computing a resolution of singularities of the variety z2-x3-y3
290
+ ring r = 0,(x,y,z),dp;
291
+ ideal I = z2-x3-y3;
292
+ //The ideal is in noether position
293
+ list l = jungresolve(I,1);
294
+ def R1 = l[1];
295
+ def R2 = l[2];
296
+ setring R1;
297
+ QIdeal;
298
+ BMap;
299
+ setring R2;
300
+ QIdeal;
301
+ BMap;
302
+ }
303
+
304
+ //---------------------------------------------------------------------------------------
305
+ //Critical locus for the Weierstrass map induced by the noether normalization
306
+ //---------------------------------------------------------------------------------------
307
+ static proc branchlocus(ideal id)
308
+ {
309
+ //"USAGE: branchlocus(ideal J);
310
+ // J = ideal
311
+ //ASSUME: J = two dimensional ideal in noether position with respect of
312
+ // the last two variables
313
+ //RETURN: A ring containing the ideal clocus representing the criticallocus
314
+ // of the projection V(J)-->C^2 on the last two coordinates
315
+ //EXAMPLE: none"
316
+ def A = basering;
317
+ int n = nvars(A);
318
+ list l = equidim(id);
319
+ int k = size(l);
320
+ ideal LastTwo = var(n-1),var(n);
321
+ ideal lowdim = 1; //the components of id with dimension smaller 2
322
+ if(k>1){
323
+ for(int j=1;j<k;j++){
324
+ lowdim = intersect(lowdim,radical(l[j]));
325
+ }
326
+ }
327
+ kill k;
328
+ lowdim = radical(lowdim);
329
+ ideal I = radical(l[size(l)]);
330
+ poly product=1;
331
+ kill l;
332
+ for(int i=1; i < n-1; i++){ //elimination of all variables except var(i),var(n-1),var(n)
333
+ intvec v;
334
+ for(int j=1; j < n-1; j++){
335
+ if(j<>i){
336
+ v[j]=1;
337
+ }
338
+ else{
339
+ v[j]=0;
340
+ }
341
+ }
342
+ v[size(v)+1]=0;
343
+ v[size(v)+1]=0;
344
+ list ringl = ringlist(A);
345
+ list l;
346
+ l[1] = "a";
347
+ l[2] = v;
348
+ list ll = insert(ringl[3],l);
349
+ ringl[3]=ll;
350
+ kill l,ll;
351
+ def R = ring(ringl); //now x_j > x_i > x_n-1 > x_n forall j <> i,n-1,n
352
+ setring R;
353
+ ideal J = groebner(fetch(A,I));//this eliminates the variables
354
+ setring A;
355
+ ideal J = fetch(R,J);
356
+ attrib(J,"isPrincipal",0);
357
+ if(size(J)==1){
358
+ attrib(J,"isPrincipal",1);
359
+ }
360
+ int index = 1;
361
+ if(attrib(J,"isPrincipal")==0){
362
+ setring R;
363
+ for(int j = 1;j<=size(J);j++){//determines the monic polynomial in var(i) with coefficients in C2
364
+ intvec w = leadexp(J[j]);
365
+ attrib(w,"isMonic",1);
366
+ for(int k = 1;k<=size(w);k++){
367
+ if(w[k] <> 0 && k <> i){
368
+ attrib(w,"isMonic",0);
369
+ break;
370
+ }
371
+ }
372
+ //kill k;
373
+ if(attrib(w,"isMonic")==1){
374
+ index = j;
375
+ break;
376
+ }
377
+ kill w;
378
+ }
379
+ kill j;
380
+ setring A;
381
+ }
382
+ product = product*resultant(J[index],diff(J[index],var(i)),var(i));
383
+ //Product of the discriminants, which lies in C2
384
+ kill index,J,v;
385
+ }
386
+ ring C2 = 0,(var(n-1),var(n)),dp;
387
+ setring C2;
388
+ ideal clocus= imap(A,product); //the critical locus is contained in this
389
+ ideal I = preimage(A,LastTwo,lowdim);
390
+ clocus= radical(intersect(clocus,I));
391
+ //radical is necessary since the resultant is in general not reduced
392
+ export(clocus);
393
+ return(C2);
394
+ }
395
+
396
+ //-----------------------------------------------------------------------------------------
397
+ //Build the fibre product of the embedded resolution and the coordinate ring of the variety
398
+ //-----------------------------------------------------------------------------------------
399
+
400
+ static proc buildFP(list embresolve,ideal NoetherN, map phi){
401
+ def A = basering;
402
+ list fibreP;
403
+ int n = nvars(A);
404
+ for(int i=1;i<=size(embresolve);i++){
405
+ def R = embresolve[i];
406
+ setring R;
407
+ list temp = ringlist(A);
408
+ //data for the new ring which is, if A=K[x_1,..,x_n] and
409
+ //R=K[y_1,..,y_m], K[x_1,..,x_n-2,y_1,..,y_m]
410
+ for(int j = 1; j<= nvars(R);j++){
411
+ string st = string(var(j));
412
+ temp[2][n-2+j] = st;
413
+ kill st;
414
+ }
415
+ temp[4] = BO[1];
416
+ ideal J = BO[5]; //ideal of the resolution map
417
+ export(J);
418
+ int m = size(J);
419
+ def R2 = ring(temp);
420
+ kill temp;
421
+ setring R2;
422
+ ideal Temp=0; //defines map from R to R2 which is the inclusion
423
+ for(int k=n-1;k<n-1+nvars(R);k++){
424
+ Temp = Temp + ideal(var(k));
425
+ }
426
+ map f = R,Temp;
427
+ kill Temp,k;
428
+ ideal FibPMI = ideal(0); //defines the map from A to R2
429
+ for(int k=1;k<=nvars(A)-m;k++){
430
+ FibPMI=FibPMI+var(k);
431
+ }
432
+ FibPMI= FibPMI+ideal(f(J));
433
+ map FibMap = A,FibPMI;
434
+ kill f,FibPMI;
435
+ ideal TotalT = groebner(FibMap(NoetherN));
436
+ ideal QIdeal = TotalT;
437
+ export(QIdeal);
438
+ ideal FibPMap = ideal(FibMap(phi));
439
+ ideal BMap = FibPMap;
440
+ export(BMap);
441
+ fibreP[i] = R2;
442
+ setring R;
443
+ kill J,R,R2,k,j,m;
444
+ }
445
+ return(fibreP);
446
+ }
447
+
448
+ //-------------------------------------------------------------------------------
449
+ //embedded resolution for curves
450
+ //-------------------------------------------------------------------------------
451
+
452
+ static proc embresolve(ideal C)
453
+ "USAGE: embresolve(ideal C);
454
+ @* C = ideal
455
+ ASSUME: C = ideal of plane curve
456
+ RETURN: a list l of rings
457
+ l[i] is a ring containing a basic object BO, the result of the
458
+ resolution. Whereas the algorithm does not resolve normal
459
+ crossings of V(C)
460
+ EXAMPLE: example embresolve shows an example
461
+ "
462
+ {
463
+ ideal J = 1;
464
+ attrib(J,"iswholeRing",1);
465
+ list primdec = equidim(C);
466
+ if(size(primdec)==2){
467
+ //zero dimensional components of the discrimiant curve are smooth
468
+ //an cross normally so they can be ignored in the resolution process
469
+ ideal Lowdim = radical(primdec[1]);
470
+ }
471
+ else{
472
+ J=radical(C);
473
+ }
474
+ kill primdec;
475
+ list l;
476
+ list BO = createBO(J,l);
477
+ kill J,l;
478
+ list result = resolve2(BO);
479
+ if(defined(Lowdim)==voice)
480
+ {
481
+ for(int i = 1;i<=size(result);i++)
482
+ {
483
+ //had zero dimensional components which I add now to the end result
484
+ def RingforEmbeddedResolution = result[i];
485
+ setring RingforEmbeddedResolution;
486
+ map f = R2,BO[5];
487
+ BO[2]=BO[2]*f(Lowdim);
488
+ kill RingforEmbeddedResolution,f;
489
+ }
490
+ }
491
+ return(result);
492
+ }
493
+ example
494
+ {
495
+ "EXAMPLE:";echo=2;
496
+ //The following curve is the critical locus of the projection z2-x3-y3
497
+ //onto y,z-coordinates.
498
+ ring R = 0,(y,z),dp;
499
+ ideal C = z2-y3;
500
+ list l = embresolve(C);
501
+ def R1 = l[1];
502
+ def R2 = l[2];
503
+ setring R1;
504
+ showBO(BO);
505
+ setring R2;
506
+ showBO(BO);
507
+ }
508
+
509
+ static proc resolve2(list BO){
510
+ //computes an embedded resolution for the basic object BO and returns
511
+ //a list of rings with BO
512
+ def H = basering;
513
+ setring H;
514
+ attrib(BO[2],"smoothC",0);
515
+ export(BO);
516
+ list result;
517
+ result[1]=H;
518
+ attrib(result[1],"isResolved",0); //has only simple normal crossings
519
+ attrib(result[1],"smoothC",0); //has smooth components
520
+ int safety=0; //number of runs restricted to 30
521
+ while(1){
522
+ int count2 = 0; //counts the number of smooth charts
523
+ int p = size(result);
524
+ for(int j = 1;j<=p;j++){
525
+ if(attrib(result[j],"isResolved")==0){
526
+ if(defined(R)){kill R;}
527
+ def R = result[j];
528
+ setring R;
529
+ if(attrib(result[j],"smoothC")==0){
530
+ //has possibly singular components so choose a singular point and blow up
531
+ list primdecPC = primdecGTZ(BO[2]);
532
+ attrib(result[j],"smoothC",1);
533
+ for(int i = 1;i<=size(primdecPC);i++){
534
+ ideal Sl = groebner(slocus(primdecPC[i][2]));
535
+ if(deg(NF(1,Sl))<>-1){
536
+ list primdecSL = primdecGTZ(Sl);
537
+ for(int h =1;h<=size(primdecSL);h++){
538
+ attrib(primdecSL[h],"isRational",1);
539
+ }
540
+ kill h;
541
+ if(!defined(index)){int index = 1;}
542
+ if(defined(blowup)){kill blowup;}
543
+ list blowup = blowUpBO(BO,primdecSL[index][2],3);
544
+ //if it has a rational singularity blow it up else choose
545
+ //some arbitrary singular point
546
+ if(attrib(primdecSL[1],"isRational")==0){
547
+ //if we blow up a non rational singularity the exceptional divisors
548
+ //are reduzible so we need to separate them
549
+ for(int k=1;k<=size(blowup);k++){
550
+ def R2=blowup[k];
551
+ setring R2;
552
+ list L;
553
+ for(int l = 1;l<=size(BO[4]);l++){
554
+ list primdecED=primdecGTZ(BO[4][l]);
555
+ L = L + primdecED;
556
+ kill primdecED;
557
+ }
558
+ kill l;
559
+ BO[4] = L;
560
+ blowup[k]=R2;
561
+ kill L,R2;
562
+ }
563
+ kill k;
564
+ }
565
+ kill primdecSL;
566
+ list hlp;
567
+ for(int k = 1;k<j;k++){
568
+ hlp[k]=result[k];
569
+ attrib(hlp[k],"isResolved",attrib(result[k],"isResolved"));
570
+ attrib(hlp[k],"smoothC",attrib(result[k],"smoothC"));
571
+ }
572
+ kill k;
573
+ for(int k =1;k<=size(blowup);k++){
574
+ hlp[size(hlp)+1]=blowup[k];
575
+ attrib(hlp[size(hlp)],"isResolved",0);
576
+ attrib(hlp[size(hlp)],"smoothC",0);
577
+ }
578
+ kill k;
579
+ for(int k = j+1;k<=size(result);k++){
580
+ hlp[size(hlp)+1]=result[k];
581
+ attrib(hlp[size(hlp)],"isResolved",attrib(result[k],"isResolved"));
582
+ attrib(hlp[size(hlp)],"smoothC",attrib(result[k],"smoothC"));
583
+ }
584
+ result = hlp;
585
+ kill hlp,k;
586
+ i=size(primdecPC);
587
+ }
588
+ else{
589
+ attrib(result[j],"smoothC",1);
590
+ }
591
+ kill Sl;
592
+ }
593
+ kill i,primdecPC;
594
+ j=p;
595
+ break;
596
+ }
597
+ else{ //if it has smooth components determine all the intersection
598
+ //points and check whether they are snc or not
599
+ int count = 0;
600
+ ideal Collect = BO[2];
601
+ for(int i = 1;i<=size(BO[4]);i++){
602
+ Collect = Collect*BO[4][i];
603
+ }
604
+ list primdecSL = primdecGTZ(slocus(Collect));
605
+ for(int k = 1;k<=size(primdecSL);k++){
606
+ attrib(primdecSL[k],"isRational",1);
607
+
608
+ }
609
+ kill k;
610
+ if(defined(blowup)){kill blowup;}
611
+ list blowup = blowUpBO(BO,primdecSL[1][2],3);
612
+ if(attrib(primdecSL[1],"isRational")==0){
613
+ for(int k=1;k<=size(blowup);k++){
614
+ def R2=blowup[k];
615
+ setring R2;
616
+ list L;
617
+ for(int l = 1;l<=size(BO[4]);l++){
618
+ list primdecED=primdecGTZ(BO[4][l]);
619
+ L = L + primdecED;
620
+ kill primdecED;
621
+ }
622
+ kill l;
623
+ BO[4] = L;
624
+ blowup[k]=R2;
625
+ kill L,R2;
626
+ }
627
+ kill k;
628
+ }
629
+ kill Collect,i;
630
+ for(int i=1;i<=size(primdecSL);i++){
631
+ list L = BO[4];
632
+ L[size(L)+1]=BO[2];
633
+ for(int l = 1;l<=size(L);l++){
634
+ if(L[l][1]==1){L=delete(L,l);}
635
+ }
636
+ kill l;
637
+ if(normalCrossing(ideal(0),L,primdecSL[i][2])==0){
638
+ if(defined(blowup)){kill blowup;}
639
+ list blowup = blowUpBO(BO,primdecSL[i][2],3);
640
+ list hlp;
641
+ for(int k = 1;k<j;k++){
642
+ hlp[k]=result[k];
643
+ attrib(hlp[k],"isResolved",attrib(result[k],"isResolved"));
644
+ attrib(hlp[k],"smoothC",attrib(result[k],"smoothC"));
645
+ }
646
+ kill k;
647
+ for(int k =1;k<=size(blowup);k++){
648
+ hlp[size(hlp)+1]=blowup[k];
649
+ attrib(hlp[size(hlp)],"isResolved",0);
650
+ attrib(hlp[size(hlp)],"smoothC",1);
651
+ }
652
+ kill k;
653
+ for(int k = j+1;k<=size(result);k++){
654
+ hlp[size(hlp)+1]=result[k];
655
+ attrib(hlp[size(hlp)],"isResolved",attrib(result[k],"isResolved"));
656
+ attrib(hlp[size(hlp)],"smoothC",attrib(result[k],"smoothC"));
657
+ }
658
+ result = hlp;
659
+ kill hlp,k;
660
+ j = p;
661
+ break;
662
+ }
663
+ else{
664
+ count++;
665
+ }
666
+ kill L;
667
+ }
668
+ kill i;
669
+ if(count == size(primdecSL)){
670
+ attrib(result[j],"isResolved",1);
671
+ }
672
+ kill count,primdecSL;
673
+ }
674
+ kill R;
675
+ }
676
+ else{
677
+ count2++;
678
+ }
679
+ }
680
+ if(count2==size(result)){
681
+ break;
682
+ }
683
+ kill count2,j,p;
684
+ safety++;
685
+ }
686
+ return(result);
687
+ }
688
+
689
+ static proc NoetherP_test(ideal id)
690
+ {
691
+ def A = basering;
692
+ list ringA=ringlist(A);
693
+ int index = 0;
694
+ if(size(id)==1 && nvars(A))
695
+ { //test if V(id) = C[x,y,z]/<f>
696
+ list L;
697
+ intvec v = 1,1,1;
698
+ L[1] = "lp";
699
+ L[2] = v;
700
+ kill v;
701
+ poly f = id[1];
702
+ int j = 0;
703
+ for(int i = 1;i<=3;i++)
704
+ {
705
+ setring A;
706
+ list l = ringA; //change ordering to lp and var(i)>var(j) j<>i
707
+ list vari = ringA[2];
708
+ string h = vari[1];
709
+ vari[1] = vari[i];
710
+ vari[i] = h;
711
+ l[2] = vari;
712
+ kill h,vari;
713
+ l[3][1] = L;
714
+ def R = ring(l);
715
+ kill l;
716
+ setring R;
717
+ ideal I = imap(A,id);
718
+ if(defined(v)){kill v;}
719
+ intvec v = leadexp(I[1]);
720
+ attrib(v,"isMonic",1);
721
+ //if(defined(k)==voice){kill k;}
722
+ for(int k = 2;k<=3;k++)
723
+ { //checks whether f is monic in var(i)
724
+ if(v[k] <> 0 || v[1] == 0)
725
+ {
726
+ attrib(v,"isMonic",0);
727
+ j++;
728
+ break;
729
+ }
730
+ }
731
+ kill k;
732
+ if(attrib(v,"isMonic")==1)
733
+ {
734
+ index = i;
735
+ return(index);
736
+ }
737
+ kill R;
738
+ }
739
+ if(j == 3){ return(0); }
740
+ }
741
+ else{ //not yet a test for more variables
742
+ return(index);
743
+ }
744
+ }
745
+
746
+ ////copied from resolve.lib/////////////////
747
+ static proc normalCrossing(ideal J,list E,ideal V)
748
+ "Internal procedure - no help and no example available
749
+ "
750
+ {
751
+ int i,d,j;
752
+ int n=nvars(basering);
753
+ list E1,E2;
754
+ ideal K,M,Estd;
755
+ intvec v,w;
756
+
757
+ for(i=1;i<=size(E);i++)
758
+ {
759
+ Estd=std(E[i]+J);
760
+ if(deg(Estd[1])>0)
761
+ {
762
+ E1[size(E1)+1]=Estd;
763
+ }
764
+ }
765
+ E=E1;
766
+ for(i=1;i<=size(E);i++)
767
+ {
768
+ v=i;
769
+ E1[i]=list(E[i],v);
770
+ }
771
+ list ll;
772
+ int re=1;
773
+
774
+ while((size(E1)>0)&&(re==1))
775
+ {
776
+ K=E1[1][1];
777
+ v=E1[1][2];
778
+ attrib(K,"isSB",1);
779
+ E1=delete(E1,1);
780
+ d=n-dim(K);
781
+ M=minor(jacob(K),d)+K;
782
+ if(deg(std(M+V)[1])>0)
783
+ {
784
+ re=0;
785
+ break;
786
+ }
787
+ for(i=1;i<=size(E);i++)
788
+ {
789
+ for(j=1;j<=size(v);j++){if(v[j]==i){break;}}
790
+ if(j<=size(v)){if(v[j]==i){i++;continue;}}
791
+ Estd=std(K+E[i]);
792
+ w=v;
793
+ if(deg(Estd[1])==0){i++;continue;}
794
+ if(d==n-dim(Estd))
795
+ {
796
+ if(deg(std(Estd+V)[1])>0)
797
+ {
798
+ re=0;
799
+ break;
800
+ }
801
+ }
802
+ w[size(w)+1]=i;
803
+ E2[size(E2)+1]=list(Estd,w);
804
+ }
805
+ if(size(E2)>0)
806
+ {
807
+ if(size(E1)>0)
808
+ {
809
+ E1[size(E1)+1..size(E1)+size(E2)]=E2[1..size(E2)];
810
+ }
811
+ else
812
+ {
813
+ E1=E2;
814
+ }
815
+ }
816
+ kill E2;
817
+ list E2;
818
+ }
819
+ return(re);
820
+ }