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,1359 @@
1
+ ////////////////////////////////////////////////////////////////////////////////
2
+ version="version GND.lib 4.1.2.0 Feb_2019 ";
3
+ category="Commutative Algebra";
4
+
5
+ info="
6
+ LIBRARY : GND.lib
7
+ AUTHOR : Adrian Popescu, popescu@mathematik.uni-kl.de
8
+
9
+ OVERVIEW :
10
+ A method to compute the General Neron Desingularization in the frame of
11
+ one dimensional local domains
12
+
13
+ REFERENCES:
14
+ @* [1] A. Popescu, D. Popescu, \"A method to compute the General Neron Desingularization in the frame of one dimensional local domains\", arxiv.org/abs/1508.05511
15
+
16
+ KEYWORDS: desingularization; general neron.
17
+
18
+ PROCEDURES:
19
+ desingularization()
20
+ ";
21
+
22
+ ///////////////////////////////////////////////////////////////////////////////////////////
23
+ LIB "primdec.lib";
24
+ LIB "linalg.lib";
25
+ LIB "polylib.lib";
26
+ ///////////////////////////////////////////////////////////////////////////////////////////
27
+
28
+ static proc deltaf(ideal i,int r,int howmanyy)
29
+ "USAGE: computes delta_f = ideal generated by the r x r minors of the jacobian of i"
30
+ {
31
+ matrix drond = jacob(i);
32
+ matrix drond2[size(i)][howmanyy] = drond[1..size(i),(nvars(basering)-howmanyy+1)..(nvars(basering))];
33
+ ideal d = minor(drond2,r);
34
+ return(d);
35
+ }
36
+
37
+ ///////////////////////////////////////////////////////////////////////////////////////////
38
+
39
+ static proc comb(int n, int r,int start,list l,list tot)
40
+ "USAGE: returns combinations of n taken r, and saves it in tot and returns tot"
41
+ {
42
+ int i;
43
+ if(size(l) == r)
44
+ {
45
+ tot[size(tot)+1] = l;
46
+ return(tot);
47
+ }
48
+ for(i=start+1;i<=n;i++)
49
+ {
50
+ list ll = l + list(i);
51
+ tot = comb(n,r,i,ll,tot);
52
+ kill ll;
53
+ }
54
+ return(tot);
55
+ }
56
+
57
+ ///////////////////////////////////////////////////////////////////////////////////////////
58
+ static proc H(ideal I, int howmanyy,ideal xid)
59
+ "USAGE: returns H_{B/A} = radical(...)"
60
+ {
61
+ I = std(I);
62
+ xid = std(xid);
63
+ list HBA;
64
+ int n=size(I);
65
+ int r,i,j,kk,found;
66
+ list total;
67
+ for(r = 1;r<=n && r<=howmanyy;r++)
68
+ {
69
+ list c;
70
+ total = total + comb(n,r,0,c,total);
71
+ kill c;
72
+ }
73
+ for(i = 1;i<=size(total);i++)
74
+ {
75
+ ideal f;
76
+ for(j = 1; j<= size(total[i]);j++)
77
+ {
78
+ f = f + I[total[i][j]];
79
+ }
80
+ ideal fx = f;
81
+ for(kk = 1;kk<=nvars(basering)-howmanyy;kk++)
82
+ {
83
+ fx = subst(fx,var(kk),1);
84
+ }
85
+ fx = fx + 0;
86
+ found = 0;
87
+ for(kk=1;(kk<=size(fx)) && (found == 0);kk++)
88
+ {
89
+ if(deg(fx[kk])>0)
90
+ {
91
+ found =1;
92
+ }
93
+ }
94
+ kill fx;
95
+ if((size(f)<=(howmanyy)) && found == 1)
96
+ {
97
+ list term;
98
+ attrib(xid,"isSB",1);
99
+ term[1] = reduce(quotient(f+xid,I),xid);
100
+ term[2] = deltaf(f,size(f),howmanyy);
101
+ term[3] = f;
102
+ term[4] = total[i];
103
+ if((term[1]!= 0) && (term[2] != 0) )
104
+ {
105
+ HBA[size(HBA)+1] = term;
106
+ }
107
+ kill term;
108
+ }
109
+ kill f;
110
+ }
111
+ //HBA = radical(HBA);
112
+ return(HBA);
113
+ }
114
+
115
+ ///////////////////////////////////////////////////////////////////////////////////////////
116
+
117
+
118
+ static proc extractP(list wP, ideal I)
119
+ "USAGE: choose P from wP and save it's properties"
120
+ {
121
+ list P;
122
+ int i,j,k;
123
+ poly f;
124
+ int found = 0;
125
+ for(i=1;(i<=size(wP)) && (found == 0);i++)
126
+ {
127
+ for(j=1;j<=size(wP[i][1]) && (found == 0);j++)
128
+ {
129
+ for(k = 1;k<=size(wP[i][2]) && (found == 0);k++)
130
+ {
131
+ f = wP[i][1][j] * wP[i][2][k];
132
+ /*if(size(std(f)) > 1)
133
+ {
134
+ //"Is this possible?";~;
135
+ }
136
+ f = std(f)[1];*/
137
+ if((f != 0) && (std(reduce(f,std(I))) != 0))
138
+ {
139
+ P[1] = f;
140
+ P[2] = wP[i][1][j];
141
+ P[3] = wP[i][2][k];
142
+ P[4] = wP[i][3];
143
+ P[5] = wP[i][4];
144
+ found = 1;
145
+ }
146
+ }
147
+ }
148
+ }
149
+ if(size(P) <1)
150
+ {
151
+ ERROR("No suitable P was found");
152
+ }
153
+ return(P);
154
+ }
155
+
156
+ ///////////////////////////////////////////////////////////////////////////////////////////
157
+
158
+ static proc isinList(string f, list L)
159
+ "USAGE: tests if string f is in the list L"
160
+ {
161
+ int i;
162
+ for(i=1;i<=size(L);i++)
163
+ {
164
+ if(L[i] == f)
165
+ {
166
+ return(1);
167
+ }
168
+ }
169
+ return(0);
170
+ }
171
+
172
+ ///////////////////////////////////////////////////////////////////////////////////////////
173
+
174
+ static proc findmc(ideal I,ideal m)
175
+ "USAGE: finds the smallest c s.t. m^c is included in I"
176
+ {
177
+ int i=1;
178
+ while(1)
179
+ {
180
+ if(std(reduce(I,std(m^i))) != 0)
181
+ {
182
+ return(i-1);
183
+ }
184
+ i++;
185
+ }
186
+ }
187
+
188
+ ///////////////////////////////////////////////////////////////////////////////////////////
189
+
190
+ static proc finddz(poly vp,int nra,int nrx)
191
+ "USAGE: finds d and z"
192
+ {
193
+ int i,j,k;
194
+ ideal x;
195
+ string xs;
196
+ //string as;
197
+ /*
198
+ for(i=1;i<=nra;i++)
199
+ {
200
+ as = as + ","+string(var(i));
201
+ }
202
+ as = as[2..size(as)];
203
+ */
204
+ for(i=1;i<=nrx;i++)
205
+ {
206
+ x[i] = var(i);
207
+ xs = xs + ","+string(var(i));
208
+ }
209
+ xs = xs[2..size(xs)];
210
+ /*
211
+ if(std(reduce(variables(vp), std(x))) == 0)
212
+ {
213
+ return(list(vp,poly(1)));
214
+ }
215
+ */
216
+ int c = findmc(vp,x);
217
+ ideal mc = x^c;
218
+ for(i=1; i<=ncols(mc);i++)
219
+ {
220
+ if(std(reduce(variables(mc[i]), std(x))) != 0)
221
+ {
222
+ mc[i] = 0;
223
+ }
224
+ }
225
+ mc = mc+0;
226
+ ideal mc2 = mc;
227
+ for(i=1;i<=ncols(mc2);i++)
228
+ {
229
+ if(std(reduce(mc2[i],std(vp))) != 0)
230
+ {
231
+ mc2[i] = 0;
232
+ }
233
+ }
234
+ mc2 = mc2 + 0;
235
+ if(mc2[1] != 0)
236
+ {
237
+ for(i=1;i<=ncols(mc2);i++)
238
+ {
239
+ if(mc2[i]/vp != 0)
240
+ {
241
+ return(list(mc2[i],mc2[i]/vp));
242
+ }
243
+ }
244
+ ideal vpid = std(vp);
245
+ for(i=1;i<=ncols(mc2);i++)
246
+ {
247
+ for(j=1;j<=ncols(vpid);j++)
248
+ {
249
+ if(vpid[j] != 0)
250
+ {
251
+ if(mc2[i]/vpid[j] != 0)
252
+ {
253
+ return(list(mc2[i],mc2[i]/vpid[j]));
254
+ }
255
+ }
256
+ }
257
+ }
258
+ }
259
+ else
260
+ {
261
+ ideal vpid = std(vp);
262
+ for(i=1;i<=ncols(mc);i++)
263
+ {
264
+ for(j=1;j<=ncols(vpid);j++)
265
+ {
266
+ if(vpid[j] != 0)
267
+ {
268
+ if(mc[i]/vpid[j] != 0)
269
+ {
270
+ return(list(mc[i],mc[i]/vpid[j]));
271
+ }
272
+ }
273
+ }
274
+ }
275
+ }
276
+ return(list(0,0));
277
+ }
278
+
279
+ ///////////////////////////////////////////////////////////////////////////////////////////
280
+
281
+ static proc inY(poly p,int nrx,int nry)
282
+ "USAGE: tests if poly p contains just the variables var(nrx+1),...,var(nry)"
283
+ {
284
+ int i;
285
+ ideal y;
286
+ for(i=1;i<=nry;i++)
287
+ {
288
+ y[size(y)+1] = var(nrx+i);
289
+ }
290
+ y = std(y);
291
+ if(std(reduce(variables(p),y)) == 0)
292
+ {
293
+ return(1);
294
+ }
295
+ return(0);
296
+ }
297
+
298
+ ///////////////////////////////////////////////////////////////////////////////////////////
299
+
300
+ static proc myjet(ideal p, int bound,string param,string variab)
301
+ "USAGE: computes the jet in the right ring (instead of switching it on and on)"
302
+ {
303
+ def r = basering;
304
+ def R2 = ring(crl(param,variab,"ds"));
305
+ setring(R2);
306
+ ideal p = imap(r,p);
307
+ for(int i=1;i<=ncols(p);i++)
308
+ {
309
+ p[i] = jet(p[i],bound);
310
+ }
311
+ setring r;
312
+ return(imap(R2,p));
313
+ }
314
+
315
+ ///////////////////////////////////////////////////////////////////////////////////////////
316
+
317
+ proc invp(poly p, int bound,list param,list variab)
318
+ "USAGE: computes the inverse in Q(param)[variab]"
319
+ {
320
+ def r = basering;
321
+ def R2 = ring(crl(param,variab,"ds"));
322
+ setring(R2);
323
+ poly p = imap(r,p);
324
+ if(bound<=0)
325
+ {
326
+ ERROR("My inverse : negative bound in the inverse");
327
+ }
328
+ if(p == 0)
329
+ {
330
+ ERROR("My inverse : p is 0");
331
+ }
332
+ poly original,res;
333
+ original = p;
334
+ if(ord(p) != 0)
335
+ {
336
+ ERROR("My inverse : the power series is not a unit.");
337
+ }
338
+ poly q = 1/p[1];
339
+ res = q;
340
+ p = q * (p[1] - jet(p,bound));
341
+ poly s = p;
342
+ while(p != 0)
343
+ {
344
+ res = res + q * p;
345
+ p = jet(p*s,bound);
346
+ }
347
+ //res = division(poly(1),p,bound);
348
+
349
+ //TEST
350
+ if(jet(original*res,bound) != poly(1))
351
+ {
352
+ ERROR("Myinverse does not work properly.");
353
+ }
354
+ setring r;
355
+ poly res = imap(R2,res);
356
+ return(res);
357
+ }
358
+
359
+ ///////////////////////////////////////////////////////////////////////////////////////////
360
+
361
+ static proc findminor(int y, poly mr, ideal f)
362
+ "USAGE: returns the entries from which the minor comes from"
363
+ {
364
+ int n = ncols(f);
365
+ int max = y;
366
+ if(n > y)
367
+ {
368
+ max = n;
369
+ }
370
+ matrix drond = jacob(f);
371
+ matrix M[n][y] = drond[1..n,(nvars(basering)-y+1)..(nvars(basering))];
372
+ list resf,resy;
373
+ list total2;
374
+ for(int r = 1;r<=max;r++)
375
+ {
376
+ list c;
377
+ total2 = total2 + comb(max,r,0,c,total2);
378
+ kill c;
379
+ }
380
+ int i,j;
381
+ i=1;
382
+ while(i<=size(total2))
383
+ {
384
+ if(size(total2[i]) == n)
385
+ {break;}
386
+ i=i+1;
387
+ }
388
+ while(size(total2[i]) == n)
389
+ {
390
+ if(total2[i][n] <= n)
391
+ {
392
+ def dummy = total2[i];
393
+ resf[size(resf)+1] = intvec(dummy[1..size(total2[i])]);
394
+ kill dummy;
395
+ }
396
+ if(total2[i][n] <= y)
397
+ {
398
+ def dummy = total2[i];
399
+ resy[size(resy)+1] = intvec(dummy[1..size(total2[i])]);
400
+ kill dummy;
401
+ }
402
+ i = i+1;
403
+ }
404
+ matrix m[n][n];
405
+ for(i = 1; i<=size(resf); i++)
406
+ {
407
+ for(j = 1; j<=size(resy); j++)
408
+ {
409
+ m = M[resf[i],resy[j]];
410
+ if(det(m) == mr || det(m) == -mr)
411
+ {
412
+ return(resf[i],resy[j]);
413
+ }
414
+ }
415
+ }
416
+ ERROR("No such minor found!");
417
+ }
418
+
419
+ ///////////////////////////////////////////////////////////////////////////////////////////
420
+
421
+
422
+ proc findnewvar(string Z)
423
+ "USAGE: Finds new unused variable Z,Z1,Z2,..."
424
+ {
425
+ string S = "," + charstr(basering) + "," + varstr(basering) + ",";
426
+ Z = "," + Z + ",";
427
+ if(find(S,Z) == 0)
428
+ {
429
+ return(Z[2..size(Z)-1]);
430
+ }
431
+ int i=1;
432
+ while(find(S,Z+"("+string(i)+")") == 1)
433
+ {
434
+ i++;
435
+ }
436
+ Z = string(Z[2..size(Z)-1])+"("+string(i)+")";
437
+ return(Z);
438
+ }
439
+
440
+ ///////////////////////////////////////////////////////////////////////////////////////////
441
+
442
+ static proc mylcm(ideal id,list asl)
443
+ "USAGE: computes the lcm of these numbers"
444
+ {
445
+ int i;
446
+ def r1 = basering;
447
+ def r2 = ring(crl(list(),asl,"dp"));
448
+ setring(r2);
449
+ ideal id = imap(r1,id);
450
+ poly lcmi=1;
451
+ for(i=1;i<=size(id);i++)
452
+ {
453
+ lcmi = lcm(lcmi,id[i]);
454
+ }
455
+ setring r1;
456
+ return(imap(r2,lcmi));
457
+ }
458
+
459
+ ///////////////////////////////////////////////////////////////////////////////////////////
460
+
461
+ static proc mysubstpoly(poly p,int which,poly what,list #)
462
+ "USAGE: substitutes parameters also for denominators (what is just a number)"
463
+ {
464
+ if(size(#)!= 1)
465
+ {
466
+ return(p);
467
+ }
468
+ if(#[1]!= "par" && #[1] != "var")
469
+ {
470
+ return(p);
471
+ }
472
+ number lcm = denominator(content(p));
473
+ p = p*lcm;
474
+ if(#[1] == "par")
475
+ {
476
+ p = subst(p,par(which),what);
477
+ lcm = leadcoef(subst(lcm,par(which),what));
478
+ }
479
+ if(#[1] == "var")
480
+ {
481
+ p = subst(p, var(which), what);
482
+ lcm = leadcoef(subst(lcm,var(which),what));
483
+ }
484
+ p = p / lcm;
485
+ return(p);
486
+ }
487
+
488
+ ///////////////////////////////////////////////////////////////////////////////////////////
489
+
490
+ static proc mysubst(ideal i,int which,poly what,list #)
491
+ "USAGE: substitutes parameters also for denominators (what is just a number)"
492
+ {
493
+ if(size(#)!= 1)
494
+ {
495
+ return(i);
496
+ }
497
+ if(#[1]!= "par" && #[1] != "var")
498
+ {
499
+ return(i);
500
+ }
501
+ for(int j = 1; j<=size(i);j++)
502
+ {
503
+ i[j] = mysubstpoly(i[j], which, what, #);
504
+ }
505
+ return(i);
506
+ }
507
+
508
+ ///////////////////////////////////////////////////////////////////////////////////////////
509
+
510
+ static proc crl(list param, list variab, string order)
511
+ "USAGE: construct the desired ringlist"
512
+ {
513
+ list l;
514
+ if(size(param)==0)
515
+ {
516
+ l[1] = 0;
517
+ }
518
+ else
519
+ {
520
+ l[1] = list(0,param,list(list("lp",1)),ideal(0));
521
+ }
522
+ l[2] = variab;
523
+ l[3] = list(list(order,1),list("C",0));
524
+ l[4] = ideal(0);
525
+ return(l);
526
+ }
527
+
528
+ ///////////////////////////////////////////////////////////////////////////////////////////
529
+
530
+ proc desingularization(all, int nra, int nrx, int nry, ideal xid, ideal yid, ideal aid, ideal f,
531
+ list #)
532
+ "USAGE : Returns as output a General Neron Desingularization as in the Paper http://arxiv.org/abs/1508.05511"
533
+ {
534
+
535
+ // First we construct everything
536
+
537
+ //def oldoption = option(get);
538
+ //option(notWarnSB);
539
+ if(ncols(f)!=nry || nra<0 || nrx<0 || nry<0 || nra+nrx+nry!=nvars(all))
540
+ {
541
+ ERROR("Input is wrong");
542
+ }
543
+ int computeker = 1;
544
+ int debug = 0;
545
+ if(size(#) > 0)
546
+ {
547
+ if(isinList("injective",#))
548
+ {
549
+ computeker = 0;
550
+ }
551
+ if(isinList("debug",#))
552
+ {
553
+ debug = 1;
554
+ }
555
+ }
556
+ string as,xs,ys;
557
+ list asl,xsl,ysl;
558
+ ideal a,x,y;
559
+ int i,j,k;
560
+ if(nra != 0)
561
+ {
562
+ as = string(var(1));
563
+ asl[1] = string(var(1));
564
+ a[1] = var(1);
565
+ for(i=2;i<=nra;i++)
566
+ {
567
+ as = as+","+string(var(i));
568
+ a[ncols(a)+1] = var(i);
569
+ asl[size(asl)+1] = string(var(i));
570
+ }
571
+ }
572
+ //as;
573
+ if(nrx!=0)
574
+ {
575
+ xs = string(var(nra+1));
576
+ x[1] = var(nra+1);
577
+ xsl[1] = string(var(nra+1));
578
+ for(i=nra+2;i<=nra+nrx;i++)
579
+ {
580
+ xs = xs+","+string(var(i));
581
+ x[ncols(x)+1] = var(i);
582
+ xsl[size(xsl)+1] = string(var(i));
583
+ }
584
+ }
585
+ //xs;
586
+ if(nry!=0)
587
+ {
588
+ ys = string(var(nra+nrx+1));
589
+ y[1] = var(nra+nrx+1);
590
+ ysl[1] = string(var(nra+nrx+1));
591
+ for(i=nra+nrx+2;i<=nra+nrx+nry;i++)
592
+ {
593
+ ys = ys+","+string(var(i));
594
+ y[ncols(y)+1] = var(i);
595
+ ysl[size(ysl)+1] = string(var(i));
596
+ }
597
+ }
598
+ //ys;
599
+ def Abase = ring(crl(list(),xsl,"dp"));
600
+ setring Abase;
601
+ qring A = std(imap(all,xid));
602
+ def Bbase = ring(crl(xsl,ysl,"dp"));
603
+ setring Bbase;
604
+ ideal yid = imap(all, yid);
605
+ i = ncols(yid);
606
+ yid = std(yid);
607
+ if(ncols(yid)!=i)
608
+ {
609
+ if(debug)
610
+ {
611
+ "yid is not a SB.";
612
+ "We change yid with its SB:";
613
+ yid;
614
+ }
615
+ }
616
+ qring B = yid;
617
+ def Bfalsebase = ring(crl(list(),xsl+ysl,"dp"));
618
+ setring(Bfalsebase);
619
+ qring Bfalse = std(imap(all,yid));
620
+ if(nra!=0)
621
+ {
622
+ def Apreal = ring(crl(asl,xsl,"dp"));
623
+ def Apbase = ring(crl(list(),asl+xsl,"dp"));
624
+ setring Apbase;
625
+ qring Ap = std(imap(all,xid)+imap(all,aid));
626
+ }
627
+ else
628
+ {
629
+ def Apbase = ring(crl(list(),xsl,"dp"));
630
+ setring Apbase;
631
+ qring Ap = std(imap(all,xid));
632
+ }
633
+ ideal vid;
634
+ for(i=1; i<=nrx; i++)
635
+ {
636
+ vid[ncols(vid)+1] = var(nra+i);
637
+ }
638
+ vid = vid + imap(all,f);
639
+ map vBfalse = Bfalse,vid;
640
+
641
+ // We start with the reduction to the case...
642
+
643
+ setring Bfalse;
644
+ if(computeker == 1)
645
+ {
646
+ if(debug)
647
+ {
648
+ "Computing the kernel:";
649
+ }
650
+ def ker = kernel(Ap, vBfalse);
651
+ if(debug)
652
+ {
653
+ ker;
654
+ }
655
+ Bfalse = std(ker);
656
+ }
657
+ else
658
+ {
659
+ if(debug)
660
+ {
661
+ "We do not compute the kernel since of \"injective\" argument in the input";
662
+ }
663
+ }
664
+ ideal I = ring_list(Bfalse)[4];
665
+ setring Bfalsebase;
666
+ list whereP = H(imap(Bfalse,I),nry,imap(all,xid));
667
+ if(debug)
668
+ {
669
+ //whereP[1];~;
670
+ }
671
+ def Plist = extractP(whereP,imap(Bfalse,I));
672
+ setring Bfalse;
673
+ def Plist = imap(Bfalsebase,Plist);
674
+ if(debug)
675
+ {
676
+ "This is Plist:";Plist;
677
+ }
678
+ list whichminor = findminor(nry, Plist[3], Plist[4]);
679
+ if(debug)
680
+ {
681
+ "The minor comes from these vars:";whichminor;
682
+ }
683
+ poly Pprim = Plist[1];
684
+ if(debug)
685
+ {
686
+ "P' = ",Pprim;
687
+ }
688
+ setring Ap;
689
+ poly vpprim = vBfalse(Pprim);
690
+ setring Apreal;
691
+ if(debug)
692
+ {
693
+ "v(P'):";imap(Ap,vpprim);
694
+ }
695
+ setring Apreal;
696
+ def dz = finddz(imap(Ap,vpprim),nra,nrx);
697
+ int secondstrategy = 0;
698
+ if(dz[1] == 0 && dz[2] == 0)
699
+ {
700
+ if(debug)
701
+ {
702
+ "The first strategy to find d and z failed";
703
+ "Try the second strategy (this may take longer)";
704
+ }
705
+ setring all;
706
+ secondstrategy = 1;
707
+ poly M = imap(Bfalse,Plist)[3];
708
+ ideal ff;
709
+ for(i=1;i<=nra+nrx;i++)
710
+ {
711
+ ff[i] = var(i);
712
+ }
713
+ ff = ff + f;
714
+ map v = basering,ff;
715
+ // It should be enough to consider the minor I have found.
716
+ int found = 0;
717
+ //ideal mino = minor(jacob(yid),min(nrows(jacob(yid)),ncols(jacob(yid))));
718
+ //mino;~;
719
+ //for(k = 1;size(mino);i++)
720
+ //{
721
+ //M = mino[k];
722
+ for(i=1;found == 0;i++)
723
+ {
724
+ for(j=1;j<=nrx && found == 0;j++)
725
+ {
726
+ a = var(nra+j);
727
+ if(reduce(a^i,std(v(M) + a^(2*i))) == 0)
728
+ {
729
+ dz[1] = a[1]^i;
730
+ dz[2] = v(M) /dz[1];
731
+ //z is actually 1/z so we have to construct it's invers
732
+ dz[2] = 1/leadcoef(dz[2])*invp(dz[2]/leadcoef(dz[2]),3*i,asl,xsl);
733
+ found = 1;
734
+ }
735
+ }
736
+ }
737
+ //}
738
+ }
739
+ poly d = dz[1];
740
+ poly z = dz[2];
741
+ // We have to truncate it:
742
+ z = reduce(jet(z,deg(d^3)),std(reduce(d^3, std(imap(all,xid)))));
743
+ if(secondstrategy == 1)
744
+ {
745
+ setring Apreal;
746
+ def d = imap(all, d);
747
+ def z = imap(all, z);
748
+ setring all;
749
+ }
750
+ if(z == 0)
751
+ {
752
+ ERROR("Something went wrong in finddz since z=0");
753
+ }
754
+ if(debug)
755
+ {
756
+ "d' =",d;
757
+ "z =",z;
758
+ }
759
+ ideal denz;
760
+ for(i=1;i<=size(z);i++)
761
+ {
762
+ denz[size(denz)+1] = denominator(leadcoef(z[i]));
763
+ }
764
+ def den = mylcm(denz,asl);
765
+ z = z * den;
766
+ int newAptest = 0;
767
+ if(den != 1)
768
+ {
769
+ newAptest = 1;
770
+ string aa = "a";
771
+ list newpar;
772
+ newpar[1] = string(findnewvar(aa));
773
+ as = as + "," + findnewvar(aa);
774
+ nra = nra + 1;
775
+ def newApbase = ring(crl(list(),asl+xsl,"dp"));
776
+ setring newApbase;
777
+ poly p = var(nra)*imap(Apreal,den)-1;
778
+ qring newAp = std(imap(all,xid)+imap(all,aid)+p);
779
+ def d = imap(Apreal,d);
780
+ def z = imap(Apreal,z)*var(nra);
781
+ if(debug)
782
+ {
783
+ "new z = ",z;
784
+ }
785
+ def vid = imap(Ap,vid);
786
+ Apbase = newApbase;
787
+ Ap = newAp;
788
+ def newApreal = ring(crl(asl,xsl,"dp"));
789
+ setring newApreal;
790
+ def z = imap(Ap,z);
791
+ def d = imap(Apreal,d);
792
+ def den = imap(Apreal,den);
793
+ Apreal = newApreal;
794
+ def newaring = ring(crl(list(),newpar,"dp"));
795
+ setring newaring;
796
+ }
797
+ else
798
+ {
799
+ setring Ap;
800
+ def d = imap(Apreal,d);
801
+ setring Apreal;
802
+ }
803
+
804
+
805
+ // Construct B1 = B[Z]/d-pz and the maps
806
+
807
+ string Z = "Z";
808
+ list newvar;
809
+ newvar[1] = string(findnewvar(Z));
810
+ def newvarring = ring(crl(list(),newvar,"dp"));
811
+ def B1base = Bbase+newvarring;
812
+ def B1 = B+newvarring;
813
+ def B1falsebase = Bfalsebase + newvarring;
814
+ def B1false2 = Bfalse + newvarring;
815
+ setring B1false2;
816
+ poly frp1 = -imap(Apreal,d)+imap(Bfalse,Pprim)*var(nvars(B1false2));
817
+ qring B1false = std(fetch(B1false2,frp1) + ring_list(B1false2)[4]);
818
+ ideal B1falseideal = ring_list(B1false)[4];
819
+ setring Apreal;
820
+ def vid = imap(Ap,vid);
821
+ vid[ncols(vid)+1] = z;
822
+ setring B1false;
823
+ //If P is constant (i.e. no Y), than I can work with d = d' = P = P'
824
+ poly Pconst = reduce(imap(Bfalse,Pprim),std(imap(all,y)));
825
+
826
+ if(Pconst == imap(Bfalse,Pprim))
827
+ {
828
+ poly P =Pconst;
829
+ //This is the case if P is constant
830
+ if(debug)
831
+ {
832
+ "P is constant (no Y), so d = d' = P = P'";
833
+ "P = P' = ",P;
834
+ }
835
+ setring Apreal;
836
+ def dprim = imap(B1false,P);
837
+ d = dprim;
838
+ }
839
+ else
840
+ {
841
+ poly P = imap(Bfalse,Pprim)^2*var(nvars(B1false))^2;
842
+ if(debug)
843
+ {
844
+ "P = P'^2 * Z^2";P;
845
+ }
846
+ setring Apreal;
847
+ def dprim = d;
848
+ d = d^2;
849
+ }
850
+ if(debug)
851
+ {
852
+ "d = ",d;
853
+ }
854
+ int c = deg(d);
855
+ int s = deg(d^3);
856
+ ideal vidjet;
857
+ if(debug)
858
+ {
859
+ //vid;
860
+ }
861
+ for(i=1;i<=ncols(vid);i++)
862
+ {
863
+ vidjet[size(vidjet)+1] = reduce(jet(vid[i],s),std(reduce(d^3, std(imap(all,xid)))));
864
+ }
865
+ if(debug)
866
+ {
867
+ "vidjet:";vidjet;
868
+ }
869
+ map vBfalse = B1false,vidjet;
870
+ poly Py = vBfalse(P);
871
+ if(debug)
872
+ {
873
+ "Py =",Py;
874
+ }
875
+
876
+ // Prepare and build C, D and S
877
+
878
+ setring Apreal;
879
+ ideal lam;
880
+ poly pp;
881
+ for(i=1;i<=size(vidjet);i++)
882
+ {
883
+ pp = vidjet[i];
884
+ while(pp != 0)
885
+ {
886
+ if(leadcoef(vidjet[i]) != 1)
887
+ {
888
+ lam[size(lam)+1] = denominator(leadcoef(pp));
889
+ lam[size(lam)+1] = numerator(leadcoef(pp));
890
+ }
891
+ pp = pp-lead(pp);
892
+ }
893
+ }
894
+ setring Ap;
895
+ def lam = imap(Apreal,lam);
896
+ list newas;
897
+ int howmanyfinala;
898
+ if(size(lam) == 0)
899
+ {
900
+ def Cbase = ring(crl(list(),xsl,"dp"));
901
+ setring Cbase;
902
+ }
903
+ else
904
+ {
905
+ ideal varlam = variables(lam);
906
+ howmanyfinala = ncols(varlam);
907
+ for(i=1;i<=ncols(varlam);i++)
908
+ {
909
+ newas[size(newas)+1] = string(varlam[i]);
910
+ }
911
+ def Cbase = ring(crl(list(),newas+xsl,"dp"));
912
+ setring Cbase;
913
+ }
914
+ setring Ap;
915
+ def aid = imap(all,aid);
916
+ if(newAptest == 1)
917
+ {
918
+ ideal newaid = reduce(aid+imap(newApbase,p),std(varlam));
919
+ }
920
+ else
921
+ {
922
+ ideal newaid = reduce(aid,std(varlam));
923
+ }
924
+ for(i=1;i<=ncols(newaid)-1;i++)
925
+ {
926
+ if(newaid[i]!=0 )
927
+ {
928
+ newaid[i] = aid[i];
929
+ }
930
+ }
931
+ if(newAptest == 1)
932
+ {
933
+ newaid[size(newaid)+1] = imap(newApbase,p);
934
+ }
935
+ newaid = newaid+0;
936
+ setring Cbase;
937
+ qring C = std(imap(Ap,newaid) + imap(all,xid)+imap(Apreal,d)^3);
938
+ if(debug)
939
+ {
940
+ "This is C:";C;
941
+ }
942
+ setring Cbase;
943
+ qring D = std(imap(Ap,newaid) + imap(all,xid));
944
+ if(debug)
945
+ {
946
+ "This is D:";D;
947
+ }
948
+ def vid = imap(Apreal,vid);
949
+ ideal vidjet = imap(Apreal,vidjet);
950
+
951
+
952
+ // Build the nice matrix
953
+
954
+ setring B1;
955
+ ideal wy,wf;
956
+ ideal I = imap(Bfalse,I);
957
+ for(i=1;i<=size(whichminor[1]);i++)
958
+ {
959
+ wf[size(wf)+1] = I[whichminor[1][i]];
960
+ }
961
+ for(i=1;i<=size(whichminor[2]);i++)
962
+ {
963
+ wy[size(wy)+1] = var(whichminor[2][i]);
964
+ }
965
+ wy = reduce(std(reduce(maxideal(1),std(var(nvars(B1))))),std(wy))+0;
966
+ poly frp1 = -imap(Apreal,d)+imap(Bfalse,Pprim)*var(nvars(B1));
967
+ ideal PMf = wf + wy + frp1;
968
+ matrix PM[size(PMf)][nvars(B1)];
969
+ PM = jacob(PMf);
970
+ matrix adj = adjoint(PM);
971
+ matrix G = imap(Bfalse,Plist)[2]*var(nvars(B1))^2*adj;
972
+ def seeGring = ring(crl(list(),list(string(ys[1])+string(nvars(B1))),"dp"));
973
+ def seeG = B1 + seeGring;
974
+ setring seeG;
975
+ matrix G = imap(Bfalse,Plist)[2]*var(nvars(seeG))^2*imap(B1,adj);
976
+ matrix H = imap(B1,PM);
977
+ H = subst(H,var(nvars(seeG)-1),var(nvars(seeG)));
978
+ G = subst(G,var(nvars(seeG)-1),var(nvars(seeG)));
979
+ if(debug)
980
+ {
981
+ "This is the minor bordered matrix (H)";print(H);
982
+ }
983
+ if(debug)
984
+ {
985
+ "This is G: ";print(G);
986
+ G;
987
+ }
988
+ setring D;
989
+ def d = imap(Apreal,d);
990
+ def Py = imap(Apreal,Py);
991
+ poly ss = Py/d;
992
+ ideal ssid = std(ss);
993
+ for(i=1;i<=size(ssid);i++)
994
+ {
995
+ if(size(ssid[i]) < size(ss))
996
+ {
997
+ ss = ssid[i];
998
+ }
999
+ }
1000
+ // Recall that a was a quotient
1001
+ /*if(newAptest == 1)
1002
+ {
1003
+ ss = reduce(ss, imap(Apreal, z)*imap(Apreal, den)-1);
1004
+ }*/
1005
+ if(debug)
1006
+ {
1007
+ if(newAptest == 1)
1008
+ {
1009
+ "s =",reduce(ss, std(var(nvars(basering)-nrx)*imap(Apreal, den)-1));
1010
+ //"s =",subst(ss, imap(Apreal, z),1/imap(Apreal, den));
1011
+ }
1012
+ else
1013
+ {
1014
+ "s =",ss;
1015
+ }
1016
+ }
1017
+ ideal dquot = ring_list(D)[4];
1018
+
1019
+ // Start constructing E
1020
+
1021
+ list ts,yz;
1022
+ yz = ysl + list(string(ys[1]) + string(nry+1));
1023
+ string t = "T";
1024
+ def newvart = findnewvar(t);
1025
+ for(i=1;i<=nry+1;i++)
1026
+ {
1027
+ ts[size(ts)+1] = newvart + string(i);
1028
+ }
1029
+ def Efalsebase = ring(crl(list(),newas+xsl+yz+ts,"dp"));
1030
+ setring Efalsebase;
1031
+ qring Efalse = std(imap(D,dquot));
1032
+ def f = imap(Bfalse,Plist)[4];
1033
+ f[size(f)+1] = -imap(Apreal,dprim)+imap(Bfalse,Pprim)*var(nvars(Efalsebase)-nry-1);
1034
+ def vidjet = imap(Apreal,vidjet);
1035
+ vidjet = vidjet[nrx+1..size(vidjet)];
1036
+ ideal id;
1037
+ for(i=1;i<=nvars(D);i++)
1038
+ {
1039
+ id[i] = var(i);
1040
+ }
1041
+ for(i=1;i<=size(vidjet);i++)
1042
+ {
1043
+ id[ncols(id)+1] = vidjet[i];
1044
+ }
1045
+ map mapvidjet = Efalse,id;
1046
+ f = mapvidjet(f);
1047
+ ideal cc;
1048
+ for(i=1;i<=ncols(f);i++)
1049
+ {
1050
+ cc[i] = f[i] / (imap(Ap,d)^2);
1051
+ }
1052
+ if(debug)
1053
+ {
1054
+ "This is cc";cc;
1055
+ }
1056
+ def E = ring(crl(newas+xsl,yz+ts,"dp"));
1057
+ setring E;
1058
+ def d = imap(D,d);
1059
+ number ss = leadcoef(imap(D,ss));
1060
+ def G = imap(seeG,G);
1061
+
1062
+ def vidjet = imap(Apreal,vidjet);
1063
+ map mapvidjet = E,vidjet[nrx+1..ncols(vidjet)];
1064
+ G = mapvidjet(G);
1065
+ execute("matrix T[nry+1][1] = "+string(ts)+";");
1066
+ execute("ideal tid = "+string(ts)+";");
1067
+ matrix ymy[nry+1][1];
1068
+ for(i=1;i<=nry+1;i++)
1069
+ {
1070
+ ymy[i,1] = var(i)-vidjet[i+nrx];
1071
+ }
1072
+ //ymy;
1073
+ //G;
1074
+ matrix hh = ss*ymy-d*G*T;
1075
+ ideal h;
1076
+ for(i=1;i<=nry+1;i++)
1077
+ {
1078
+ h[size(h)+1] = hh[i,1];
1079
+ }
1080
+ //if(debug)
1081
+ if(1)
1082
+ {
1083
+ if(newAptest == 1)
1084
+ {
1085
+ "h = ";mysubst(h, npars(basering)-nrx,1/imap(Apreal, den),"par");
1086
+ }
1087
+ else
1088
+ {
1089
+ "h = ";h;
1090
+ }
1091
+ }
1092
+ setring Apreal;
1093
+ /*
1094
+ matrix eps[nry+1][1];
1095
+ //def vid = imap(Ap,vid);
1096
+ ideal dummy;
1097
+ ideal d2 = std(d^2);
1098
+ for(i=1;i<=nry;i++)
1099
+ {
1100
+ dummy = std(vid[i+nrx]-vidjet[i+nrx]);
1101
+ for(j=1;j<=ncols(dummy);j++)
1102
+ {
1103
+ for(k=1;k<=size(d2);k++)
1104
+ {
1105
+ if(dummy[j] / d2[k] != 0)
1106
+ {
1107
+ eps[i,1] = dummy[j] / d2[k];
1108
+ }
1109
+ }
1110
+ }
1111
+ eps;
1112
+ if(eps[i,1] == 0 && vid[i+nrx] != vidjet[i+nrx])
1113
+ {
1114
+ ERROR("problem appeared at the construction of eps");
1115
+ }
1116
+ }
1117
+ if(debug)
1118
+ {
1119
+ "eps = ";eps;
1120
+ }
1121
+
1122
+ setring E;
1123
+ def eps = imap(Apreal,eps);
1124
+ def HH = imap(B1,PM);
1125
+ HH = mapvidjet(HH);
1126
+ def tm = HH * eps;
1127
+ ideal tid;
1128
+ for(i=1;i<=nry+1;i++)
1129
+ {
1130
+ tid[i] = tm[i,1];
1131
+ }
1132
+ if(debug)
1133
+ {
1134
+ "This is t:";tid;
1135
+ }
1136
+ */
1137
+ setring E;
1138
+ def f = imap(Bfalse,Plist)[4];
1139
+ f[size(f)+1] = -d+imap(Bfalse,Pprim)*var(nry+1);
1140
+ int m = deg(f[1]);
1141
+ for(i=2;i<=size(f);i++)
1142
+ {
1143
+ if(deg(f[i])>m)
1144
+ {
1145
+ m = deg(f[i]);
1146
+ }
1147
+ }
1148
+ if(debug)
1149
+ {
1150
+ "m =",m;
1151
+ }
1152
+ poly ff,ffx,fd;
1153
+ number ssm;
1154
+ ideal QT;
1155
+ ssm = ss^m;
1156
+ if(debug)
1157
+ {
1158
+ if(newAptest == 1)
1159
+ {
1160
+ "s^m =";mysubst(ssm, npars(basering)-nrx,1/imap(Apreal, den),"par");
1161
+ }
1162
+ else
1163
+ {
1164
+ "s^m =",ssm;
1165
+ }
1166
+ }
1167
+ poly ssmd2 = ssm*d^2;
1168
+ for(i=1;i<=size(f);i++)
1169
+ {
1170
+ ff = f[i];
1171
+ ffx = mapvidjet(ff);
1172
+ ffx = ssm*(ff-ffx);
1173
+ for(j=1;j<=nry+1;j++)
1174
+ {
1175
+ fd = diff(ff,var(j));
1176
+ fd = mapvidjet(fd);
1177
+ ffx = ffx - (ssm)*(var(j)-vidjet[j+nrx])*fd;
1178
+ }
1179
+ attrib(h,"isSB",1);
1180
+ ffx = reduce(ffx,h);
1181
+ QT[i] = ffx / ssmd2;
1182
+ }
1183
+ if(debug)
1184
+ {
1185
+ if(newAptest == 1)
1186
+ {
1187
+ "QT =";mysubst(QT, npars(basering)-nrx,1/imap(Apreal, den),"par");
1188
+ }
1189
+ else
1190
+ {
1191
+ "QT =";QT;
1192
+ }
1193
+ "f =";f;
1194
+ }
1195
+ ideal cc = imap(Efalse,cc);
1196
+ ideal g;
1197
+ for(i=1;i<=size(f);i++)
1198
+ {
1199
+ g[i] = ssm * cc[i] + ssm * var(nry+1+i) + QT[i];
1200
+ }
1201
+ if(debug)
1202
+ {
1203
+ "g = ";
1204
+ if(newAptest == 1)
1205
+ {
1206
+ mysubst(g, npars(basering)-nrx,1/imap(Apreal, den),"par");
1207
+ //reduce(mysubst(g, npars(basering)-nrx,1/imap(Apreal, den),"par"),std(x2^6,x1^4));
1208
+ }
1209
+ else
1210
+ {
1211
+ g;
1212
+ }
1213
+ }
1214
+ // Activate this if the output is too big - in this way you could see a truncation.
1215
+ // Remember to change myvar and mypar
1216
+
1217
+ if(0)
1218
+ {
1219
+ basering;
1220
+ poly gg;
1221
+ ideal p1,p2;
1222
+ string myvar = "x1,x2";
1223
+ string mypar = "a1,a2,T1,T2,T3,T4,T5,Y1,Y2,Y3,Y4,Y5";
1224
+ //QT = mysubst(QT, npars(basering)-nrx,1/imap(Apreal, den),"par");
1225
+ for(int kk = 1; kk<=3;kk++)
1226
+ {
1227
+ "Next one!";
1228
+ gg = QT[kk];
1229
+ while(gg!=0)
1230
+ {
1231
+ p1 = ideal(numerator(leadcoef(gg)));
1232
+ p2 = ideal(denominator(leadcoef(gg)));
1233
+ myjet(p1,10,mypar,myvar);
1234
+ myjet(p2,10,mypar,myvar);
1235
+ leadmonom(lead(gg));
1236
+ //lead(gg);
1237
+ ~;
1238
+ gg = gg-lead(gg);
1239
+ }
1240
+ }
1241
+ for(int kk = 1; kk<=3;kk++)
1242
+ {
1243
+ "Next one!";
1244
+ gg = g[kk];
1245
+ while(gg!=0)
1246
+ {
1247
+ p1 = ideal(numerator(leadcoef(gg)));
1248
+ p2 = ideal(denominator(leadcoef(gg)));
1249
+ myjet(p1,10,mypar,myvar);
1250
+ myjet(p2,10,mypar,myvar);
1251
+ leadmonom(lead(gg));
1252
+ //lead(gg);
1253
+ ~;
1254
+ gg = gg-lead(gg);
1255
+ }
1256
+ }
1257
+ }
1258
+ setring Efalse;
1259
+ if(0)
1260
+ {
1261
+ setring Efalse;
1262
+ "h";
1263
+ imap(E,h);
1264
+ "QT"
1265
+ imap(E,QT);
1266
+ "g";
1267
+ imap(E,g);
1268
+ //reduce(imap(E,g),poly(x2^5));
1269
+ def ggg = imap(E,g);
1270
+ ggg = reduce(ggg,x2^5);
1271
+ setring E;
1272
+ imap(Efalse,ggg);~;
1273
+ poly frp1 = -imap(E,d)+imap(Bfalse,Pprim)*var(nry+1);
1274
+ "frp1";~;
1275
+ frp1;
1276
+ qring Eprefinal = imap(D,dquot)+imap(E,h)+imap(E,g)+imap(Bfalse,I)+frp1;
1277
+ Eprefinal;
1278
+ setring E;
1279
+ def drond = jacob(g);
1280
+ matrix drond2[size(g)][nry+1] = drond[1..(size(g)),(nry+2)..ncols(drond)];
1281
+ poly ssp = minor(drond2,size(g))[1];
1282
+ poly invssp = ss*ssp;
1283
+ for(i=1;i<=nvars(E) div 2;i++)
1284
+ {
1285
+ invssp = subst(invssp,var(i),vidjet[i+nrx]);
1286
+ invssp = subst(invssp, var(nvars(E)-i+1),tid[i]);
1287
+ }
1288
+ //invssp = 1/invssp;
1289
+ ideal e2 = std(g,h);
1290
+ if(debug)
1291
+ {
1292
+ "And this is the map:";
1293
+ }
1294
+ invssp = 1/invssp;
1295
+ if(debug)
1296
+ {
1297
+ themap;
1298
+ }
1299
+ string zz = "Z";
1300
+ def newvar2 = findnewvar(zz);
1301
+ def q = imap(E,e2);
1302
+ poly teta = var(nvars(Efinalbase)) * imap(E,ss)*imap(E,ssp) - 1;
1303
+ qring Efinal = std(q,teta);
1304
+ if(debug)
1305
+ {
1306
+ "This is final E:";
1307
+ basering;
1308
+ }
1309
+ }
1310
+ //option(set,oldoption);
1311
+ }
1312
+ example
1313
+ { "EXAMPLE:"; echo = 2;
1314
+ //Example 1
1315
+ ring All = 0,(a1,a2,a3,x1,x2,x3,Y1,Y2,Y3),dp;
1316
+ int nra = 3;
1317
+ int nrx = 3;
1318
+ int nry = 3;
1319
+ ideal xid = x2^3-x3^2,x1^3-x3^2;
1320
+ ideal yid = Y1^3-Y2^3;
1321
+ ideal aid = a3^2-a1*a2;
1322
+ poly y;
1323
+ int i;
1324
+ for(i=0;i<=30;i++)
1325
+ {
1326
+ y = y + a1*x3^i/factorial(i);
1327
+ }
1328
+ for(i=31;i<=50;i++)
1329
+ {
1330
+ y = y + a2*x3^i/factorial(i);
1331
+ }
1332
+ ideal f = a3*x1,a3*x2,y;
1333
+ desingularization(All, nra,nrx,nry,xid,yid,aid,f);
1334
+ // With debug output
1335
+ desingularization(All, nra,nrx,nry,xid,yid,aid,f,"debug");
1336
+ kill All,nra,nrx,nry,i;
1337
+
1338
+ //Example 4
1339
+
1340
+ ring All = 0,(a1,a2,a3,a4,x,Y1,Y2,Y3),dp;
1341
+ int nra = 4;
1342
+ int nrx = 1;
1343
+ int nry = 3;
1344
+ ideal xid = 0;
1345
+ ideal yid = Y1^3-Y2^3;
1346
+ ideal aid = a3^2-a1*a2,a4^2+a4+1;
1347
+ poly y;
1348
+ int i;
1349
+ for(i=0;i<=30;i++)
1350
+ {
1351
+ y = y + a1*x3^i/factorial(i);
1352
+ }
1353
+ for(i=31;i<=50;i++)
1354
+ {
1355
+ y = y + a2*x3^i/factorial(i);
1356
+ }
1357
+ ideal f = a3*x,a3*a4*x,y;
1358
+ desingularization(All, nra,nrx,nry,xid,yid,aid,f);
1359
+ }