passagemath-singular 10.6.31rc3__cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.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 (490) hide show
  1. PySingular.cpython-314-aarch64-linux-gnu.so +0 -0
  2. passagemath_singular-10.6.31rc3.dist-info/METADATA +183 -0
  3. passagemath_singular-10.6.31rc3.dist-info/RECORD +490 -0
  4. passagemath_singular-10.6.31rc3.dist-info/WHEEL +6 -0
  5. passagemath_singular-10.6.31rc3.dist-info/top_level.txt +3 -0
  6. passagemath_singular.libs/libSingular-4-6a2a8666.4.1.so +0 -0
  7. passagemath_singular.libs/libcddgmp-ac579979.so.0.1.3 +0 -0
  8. passagemath_singular.libs/libfactory-4-66e33516.4.1.so +0 -0
  9. passagemath_singular.libs/libflint-81de1160.so.21.0.0 +0 -0
  10. passagemath_singular.libs/libgf2x-fbd36f80.so.3.0.0 +0 -0
  11. passagemath_singular.libs/libgfortran-e1b7dfc8.so.5.0.0 +0 -0
  12. passagemath_singular.libs/libgmp-93ebf16a.so.10.5.0 +0 -0
  13. passagemath_singular.libs/libgsl-e3525837.so.28.0.0 +0 -0
  14. passagemath_singular.libs/libmpfr-e0f11cf3.so.6.2.1 +0 -0
  15. passagemath_singular.libs/libntl-0043a3a2.so.44.0.1 +0 -0
  16. passagemath_singular.libs/libomalloc-0-06512335.9.6.so +0 -0
  17. passagemath_singular.libs/libopenblasp-r0-4c5b64b1.3.29.so +0 -0
  18. passagemath_singular.libs/libpolys-4-cb7246b5.4.1.so +0 -0
  19. passagemath_singular.libs/libreadline-28330744.so.8.2 +0 -0
  20. passagemath_singular.libs/libsingular_resources-4-8c425241.4.1.so +0 -0
  21. passagemath_singular.libs/libtinfo-f81c2d16.so.6.3 +0 -0
  22. sage/algebras/all__sagemath_singular.py +3 -0
  23. sage/algebras/fusion_rings/all.py +19 -0
  24. sage/algebras/fusion_rings/f_matrix.py +2448 -0
  25. sage/algebras/fusion_rings/fast_parallel_fmats_methods.cpython-314-aarch64-linux-gnu.so +0 -0
  26. sage/algebras/fusion_rings/fast_parallel_fmats_methods.pxd +5 -0
  27. sage/algebras/fusion_rings/fast_parallel_fmats_methods.pyx +538 -0
  28. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.cpython-314-aarch64-linux-gnu.so +0 -0
  29. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pxd +3 -0
  30. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pyx +331 -0
  31. sage/algebras/fusion_rings/fusion_double.py +899 -0
  32. sage/algebras/fusion_rings/fusion_ring.py +1580 -0
  33. sage/algebras/fusion_rings/poly_tup_engine.cpython-314-aarch64-linux-gnu.so +0 -0
  34. sage/algebras/fusion_rings/poly_tup_engine.pxd +24 -0
  35. sage/algebras/fusion_rings/poly_tup_engine.pyx +579 -0
  36. sage/algebras/fusion_rings/shm_managers.cpython-314-aarch64-linux-gnu.so +0 -0
  37. sage/algebras/fusion_rings/shm_managers.pxd +24 -0
  38. sage/algebras/fusion_rings/shm_managers.pyx +780 -0
  39. sage/algebras/letterplace/all.py +1 -0
  40. sage/algebras/letterplace/free_algebra_element_letterplace.cpython-314-aarch64-linux-gnu.so +0 -0
  41. sage/algebras/letterplace/free_algebra_element_letterplace.pxd +18 -0
  42. sage/algebras/letterplace/free_algebra_element_letterplace.pyx +755 -0
  43. sage/algebras/letterplace/free_algebra_letterplace.cpython-314-aarch64-linux-gnu.so +0 -0
  44. sage/algebras/letterplace/free_algebra_letterplace.pxd +35 -0
  45. sage/algebras/letterplace/free_algebra_letterplace.pyx +914 -0
  46. sage/algebras/letterplace/letterplace_ideal.cpython-314-aarch64-linux-gnu.so +0 -0
  47. sage/algebras/letterplace/letterplace_ideal.pyx +408 -0
  48. sage/algebras/quatalg/all.py +2 -0
  49. sage/algebras/quatalg/quaternion_algebra.py +4778 -0
  50. sage/algebras/quatalg/quaternion_algebra_cython.cpython-314-aarch64-linux-gnu.so +0 -0
  51. sage/algebras/quatalg/quaternion_algebra_cython.pyx +261 -0
  52. sage/algebras/quatalg/quaternion_algebra_element.cpython-314-aarch64-linux-gnu.so +0 -0
  53. sage/algebras/quatalg/quaternion_algebra_element.pxd +29 -0
  54. sage/algebras/quatalg/quaternion_algebra_element.pyx +2176 -0
  55. sage/all__sagemath_singular.py +11 -0
  56. sage/ext_data/all__sagemath_singular.py +1 -0
  57. sage/ext_data/singular/function_field/core.lib +98 -0
  58. sage/interfaces/all__sagemath_singular.py +1 -0
  59. sage/interfaces/singular.py +2835 -0
  60. sage/libs/all__sagemath_singular.py +1 -0
  61. sage/libs/singular/__init__.py +1 -0
  62. sage/libs/singular/decl.pxd +1168 -0
  63. sage/libs/singular/function.cpython-314-aarch64-linux-gnu.so +0 -0
  64. sage/libs/singular/function.pxd +87 -0
  65. sage/libs/singular/function.pyx +1901 -0
  66. sage/libs/singular/function_factory.py +61 -0
  67. sage/libs/singular/groebner_strategy.cpython-314-aarch64-linux-gnu.so +0 -0
  68. sage/libs/singular/groebner_strategy.pxd +22 -0
  69. sage/libs/singular/groebner_strategy.pyx +582 -0
  70. sage/libs/singular/option.cpython-314-aarch64-linux-gnu.so +0 -0
  71. sage/libs/singular/option.pyx +671 -0
  72. sage/libs/singular/polynomial.cpython-314-aarch64-linux-gnu.so +0 -0
  73. sage/libs/singular/polynomial.pxd +39 -0
  74. sage/libs/singular/polynomial.pyx +661 -0
  75. sage/libs/singular/ring.cpython-314-aarch64-linux-gnu.so +0 -0
  76. sage/libs/singular/ring.pxd +58 -0
  77. sage/libs/singular/ring.pyx +893 -0
  78. sage/libs/singular/singular.cpython-314-aarch64-linux-gnu.so +0 -0
  79. sage/libs/singular/singular.pxd +72 -0
  80. sage/libs/singular/singular.pyx +1944 -0
  81. sage/libs/singular/standard_options.py +145 -0
  82. sage/matrix/all__sagemath_singular.py +1 -0
  83. sage/matrix/matrix_mpolynomial_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  84. sage/matrix/matrix_mpolynomial_dense.pxd +7 -0
  85. sage/matrix/matrix_mpolynomial_dense.pyx +615 -0
  86. sage/rings/all__sagemath_singular.py +1 -0
  87. sage/rings/function_field/all__sagemath_singular.py +1 -0
  88. sage/rings/function_field/derivations_polymod.py +911 -0
  89. sage/rings/function_field/element_polymod.cpython-314-aarch64-linux-gnu.so +0 -0
  90. sage/rings/function_field/element_polymod.pyx +406 -0
  91. sage/rings/function_field/function_field_polymod.py +2611 -0
  92. sage/rings/function_field/ideal_polymod.py +1775 -0
  93. sage/rings/function_field/order_polymod.py +1475 -0
  94. sage/rings/function_field/place_polymod.py +681 -0
  95. sage/rings/polynomial/all__sagemath_singular.py +1 -0
  96. sage/rings/polynomial/multi_polynomial_ideal_libsingular.cpython-314-aarch64-linux-gnu.so +0 -0
  97. sage/rings/polynomial/multi_polynomial_ideal_libsingular.pxd +5 -0
  98. sage/rings/polynomial/multi_polynomial_ideal_libsingular.pyx +339 -0
  99. sage/rings/polynomial/multi_polynomial_libsingular.cpython-314-aarch64-linux-gnu.so +0 -0
  100. sage/rings/polynomial/multi_polynomial_libsingular.pxd +30 -0
  101. sage/rings/polynomial/multi_polynomial_libsingular.pyx +6277 -0
  102. sage/rings/polynomial/plural.cpython-314-aarch64-linux-gnu.so +0 -0
  103. sage/rings/polynomial/plural.pxd +48 -0
  104. sage/rings/polynomial/plural.pyx +3171 -0
  105. sage/symbolic/all__sagemath_singular.py +1 -0
  106. sage/symbolic/comparison_impl.pxi +428 -0
  107. sage/symbolic/constants_c_impl.pxi +178 -0
  108. sage/symbolic/expression.cpython-314-aarch64-linux-gnu.so +0 -0
  109. sage/symbolic/expression.pxd +7 -0
  110. sage/symbolic/expression.pyx +14200 -0
  111. sage/symbolic/getitem_impl.pxi +202 -0
  112. sage/symbolic/pynac.pxi +572 -0
  113. sage/symbolic/pynac_constant_impl.pxi +133 -0
  114. sage/symbolic/pynac_function_impl.pxi +206 -0
  115. sage/symbolic/pynac_impl.pxi +2576 -0
  116. sage/symbolic/pynac_wrap.h +124 -0
  117. sage/symbolic/series_impl.pxi +272 -0
  118. sage/symbolic/substitution_map_impl.pxi +94 -0
  119. sage_wheels/bin/ESingular +0 -0
  120. sage_wheels/bin/Singular +0 -0
  121. sage_wheels/bin/TSingular +0 -0
  122. sage_wheels/lib/singular/MOD/cohomo.la +41 -0
  123. sage_wheels/lib/singular/MOD/cohomo.so +0 -0
  124. sage_wheels/lib/singular/MOD/customstd.la +41 -0
  125. sage_wheels/lib/singular/MOD/customstd.so +0 -0
  126. sage_wheels/lib/singular/MOD/freealgebra.la +41 -0
  127. sage_wheels/lib/singular/MOD/freealgebra.so +0 -0
  128. sage_wheels/lib/singular/MOD/gfanlib.la +41 -0
  129. sage_wheels/lib/singular/MOD/gfanlib.so +0 -0
  130. sage_wheels/lib/singular/MOD/gitfan.la +41 -0
  131. sage_wheels/lib/singular/MOD/gitfan.so +0 -0
  132. sage_wheels/lib/singular/MOD/interval.la +41 -0
  133. sage_wheels/lib/singular/MOD/interval.so +0 -0
  134. sage_wheels/lib/singular/MOD/loctriv.la +41 -0
  135. sage_wheels/lib/singular/MOD/loctriv.so +0 -0
  136. sage_wheels/lib/singular/MOD/machinelearning.la +41 -0
  137. sage_wheels/lib/singular/MOD/machinelearning.so +0 -0
  138. sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.la +41 -0
  139. sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.so +0 -0
  140. sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.la +41 -0
  141. sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.so +0 -0
  142. sage_wheels/lib/singular/MOD/p_Procs_FieldQ.la +41 -0
  143. sage_wheels/lib/singular/MOD/p_Procs_FieldQ.so +0 -0
  144. sage_wheels/lib/singular/MOD/p_Procs_FieldZp.la +41 -0
  145. sage_wheels/lib/singular/MOD/p_Procs_FieldZp.so +0 -0
  146. sage_wheels/lib/singular/MOD/partialgb.la +41 -0
  147. sage_wheels/lib/singular/MOD/partialgb.so +0 -0
  148. sage_wheels/lib/singular/MOD/pyobject.la +41 -0
  149. sage_wheels/lib/singular/MOD/pyobject.so +0 -0
  150. sage_wheels/lib/singular/MOD/singmathic.la +41 -0
  151. sage_wheels/lib/singular/MOD/singmathic.so +0 -0
  152. sage_wheels/lib/singular/MOD/sispasm.la +41 -0
  153. sage_wheels/lib/singular/MOD/sispasm.so +0 -0
  154. sage_wheels/lib/singular/MOD/subsets.la +41 -0
  155. sage_wheels/lib/singular/MOD/subsets.so +0 -0
  156. sage_wheels/lib/singular/MOD/systhreads.la +41 -0
  157. sage_wheels/lib/singular/MOD/systhreads.so +0 -0
  158. sage_wheels/lib/singular/MOD/syzextra.la +41 -0
  159. sage_wheels/lib/singular/MOD/syzextra.so +0 -0
  160. sage_wheels/libexec/singular/MOD/change_cost +0 -0
  161. sage_wheels/libexec/singular/MOD/singularsurf +11 -0
  162. sage_wheels/libexec/singular/MOD/singularsurf_jupyter +9 -0
  163. sage_wheels/libexec/singular/MOD/singularsurf_win +10 -0
  164. sage_wheels/libexec/singular/MOD/solve_IP +0 -0
  165. sage_wheels/libexec/singular/MOD/surfex +16 -0
  166. sage_wheels/libexec/singular/MOD/toric_ideal +0 -0
  167. sage_wheels/share/factory/gftables/10201 +342 -0
  168. sage_wheels/share/factory/gftables/1024 +37 -0
  169. sage_wheels/share/factory/gftables/10609 +356 -0
  170. sage_wheels/share/factory/gftables/11449 +384 -0
  171. sage_wheels/share/factory/gftables/11881 +398 -0
  172. sage_wheels/share/factory/gftables/121 +6 -0
  173. sage_wheels/share/factory/gftables/12167 +408 -0
  174. sage_wheels/share/factory/gftables/125 +7 -0
  175. sage_wheels/share/factory/gftables/12769 +428 -0
  176. sage_wheels/share/factory/gftables/128 +7 -0
  177. sage_wheels/share/factory/gftables/1331 +47 -0
  178. sage_wheels/share/factory/gftables/1369 +48 -0
  179. sage_wheels/share/factory/gftables/14641 +490 -0
  180. sage_wheels/share/factory/gftables/15625 +523 -0
  181. sage_wheels/share/factory/gftables/16 +3 -0
  182. sage_wheels/share/factory/gftables/16129 +540 -0
  183. sage_wheels/share/factory/gftables/16384 +549 -0
  184. sage_wheels/share/factory/gftables/16807 +563 -0
  185. sage_wheels/share/factory/gftables/1681 +58 -0
  186. sage_wheels/share/factory/gftables/169 +8 -0
  187. sage_wheels/share/factory/gftables/17161 +574 -0
  188. sage_wheels/share/factory/gftables/1849 +64 -0
  189. sage_wheels/share/factory/gftables/18769 +628 -0
  190. sage_wheels/share/factory/gftables/19321 +646 -0
  191. sage_wheels/share/factory/gftables/19683 +659 -0
  192. sage_wheels/share/factory/gftables/2048 +71 -0
  193. sage_wheels/share/factory/gftables/2187 +75 -0
  194. sage_wheels/share/factory/gftables/2197 +76 -0
  195. sage_wheels/share/factory/gftables/2209 +76 -0
  196. sage_wheels/share/factory/gftables/22201 +742 -0
  197. sage_wheels/share/factory/gftables/22801 +762 -0
  198. sage_wheels/share/factory/gftables/2401 +82 -0
  199. sage_wheels/share/factory/gftables/243 +11 -0
  200. sage_wheels/share/factory/gftables/24389 +815 -0
  201. sage_wheels/share/factory/gftables/24649 +824 -0
  202. sage_wheels/share/factory/gftables/25 +3 -0
  203. sage_wheels/share/factory/gftables/256 +11 -0
  204. sage_wheels/share/factory/gftables/26569 +888 -0
  205. sage_wheels/share/factory/gftables/27 +3 -0
  206. sage_wheels/share/factory/gftables/27889 +932 -0
  207. sage_wheels/share/factory/gftables/2809 +96 -0
  208. sage_wheels/share/factory/gftables/28561 +954 -0
  209. sage_wheels/share/factory/gftables/289 +12 -0
  210. sage_wheels/share/factory/gftables/29791 +995 -0
  211. sage_wheels/share/factory/gftables/29929 +1000 -0
  212. sage_wheels/share/factory/gftables/3125 +107 -0
  213. sage_wheels/share/factory/gftables/32 +4 -0
  214. sage_wheels/share/factory/gftables/32041 +1070 -0
  215. sage_wheels/share/factory/gftables/32761 +1094 -0
  216. sage_wheels/share/factory/gftables/32768 +1095 -0
  217. sage_wheels/share/factory/gftables/343 +14 -0
  218. sage_wheels/share/factory/gftables/3481 +118 -0
  219. sage_wheels/share/factory/gftables/361 +14 -0
  220. sage_wheels/share/factory/gftables/36481 +1218 -0
  221. sage_wheels/share/factory/gftables/3721 +126 -0
  222. sage_wheels/share/factory/gftables/37249 +1244 -0
  223. sage_wheels/share/factory/gftables/38809 +1296 -0
  224. sage_wheels/share/factory/gftables/39601 +1322 -0
  225. sage_wheels/share/factory/gftables/4 +3 -0
  226. sage_wheels/share/factory/gftables/4096 +139 -0
  227. sage_wheels/share/factory/gftables/44521 +1486 -0
  228. sage_wheels/share/factory/gftables/4489 +152 -0
  229. sage_wheels/share/factory/gftables/49 +4 -0
  230. sage_wheels/share/factory/gftables/4913 +166 -0
  231. sage_wheels/share/factory/gftables/49729 +1660 -0
  232. sage_wheels/share/factory/gftables/5041 +170 -0
  233. sage_wheels/share/factory/gftables/50653 +1691 -0
  234. sage_wheels/share/factory/gftables/512 +20 -0
  235. sage_wheels/share/factory/gftables/51529 +1720 -0
  236. sage_wheels/share/factory/gftables/52441 +1750 -0
  237. sage_wheels/share/factory/gftables/529 +20 -0
  238. sage_wheels/share/factory/gftables/5329 +180 -0
  239. sage_wheels/share/factory/gftables/54289 +1812 -0
  240. sage_wheels/share/factory/gftables/57121 +1906 -0
  241. sage_wheels/share/factory/gftables/58081 +1938 -0
  242. sage_wheels/share/factory/gftables/59049 +1971 -0
  243. sage_wheels/share/factory/gftables/6241 +210 -0
  244. sage_wheels/share/factory/gftables/625 +23 -0
  245. sage_wheels/share/factory/gftables/63001 +2102 -0
  246. sage_wheels/share/factory/gftables/64 +5 -0
  247. sage_wheels/share/factory/gftables/6561 +221 -0
  248. sage_wheels/share/factory/gftables/6859 +231 -0
  249. sage_wheels/share/factory/gftables/6889 +232 -0
  250. sage_wheels/share/factory/gftables/729 +27 -0
  251. sage_wheels/share/factory/gftables/7921 +266 -0
  252. sage_wheels/share/factory/gftables/8 +3 -0
  253. sage_wheels/share/factory/gftables/81 +5 -0
  254. sage_wheels/share/factory/gftables/8192 +276 -0
  255. sage_wheels/share/factory/gftables/841 +30 -0
  256. sage_wheels/share/factory/gftables/9 +3 -0
  257. sage_wheels/share/factory/gftables/9409 +316 -0
  258. sage_wheels/share/factory/gftables/961 +34 -0
  259. sage_wheels/share/info/singular.info +191898 -0
  260. sage_wheels/share/singular/LIB/GND.lib +1359 -0
  261. sage_wheels/share/singular/LIB/JMBTest.lib +976 -0
  262. sage_wheels/share/singular/LIB/JMSConst.lib +1363 -0
  263. sage_wheels/share/singular/LIB/KVequiv.lib +699 -0
  264. sage_wheels/share/singular/LIB/SingularityDBM.lib +491 -0
  265. sage_wheels/share/singular/LIB/VecField.lib +1542 -0
  266. sage_wheels/share/singular/LIB/absfact.lib +959 -0
  267. sage_wheels/share/singular/LIB/ainvar.lib +730 -0
  268. sage_wheels/share/singular/LIB/aksaka.lib +419 -0
  269. sage_wheels/share/singular/LIB/alexpoly.lib +2542 -0
  270. sage_wheels/share/singular/LIB/algebra.lib +1193 -0
  271. sage_wheels/share/singular/LIB/all.lib +136 -0
  272. sage_wheels/share/singular/LIB/arcpoint.lib +514 -0
  273. sage_wheels/share/singular/LIB/arnold.lib +4553 -0
  274. sage_wheels/share/singular/LIB/arnoldclassify.lib +2058 -0
  275. sage_wheels/share/singular/LIB/arr.lib +3486 -0
  276. sage_wheels/share/singular/LIB/assprimeszerodim.lib +755 -0
  277. sage_wheels/share/singular/LIB/autgradalg.lib +3361 -0
  278. sage_wheels/share/singular/LIB/bfun.lib +1964 -0
  279. sage_wheels/share/singular/LIB/bimodules.lib +774 -0
  280. sage_wheels/share/singular/LIB/brillnoether.lib +226 -0
  281. sage_wheels/share/singular/LIB/brnoeth.lib +5017 -0
  282. sage_wheels/share/singular/LIB/central.lib +2169 -0
  283. sage_wheels/share/singular/LIB/chern.lib +4162 -0
  284. sage_wheels/share/singular/LIB/cimonom.lib +571 -0
  285. sage_wheels/share/singular/LIB/cisimplicial.lib +1835 -0
  286. sage_wheels/share/singular/LIB/classify.lib +3239 -0
  287. sage_wheels/share/singular/LIB/classify2.lib +1462 -0
  288. sage_wheels/share/singular/LIB/classifyMapGerms.lib +1515 -0
  289. sage_wheels/share/singular/LIB/classify_aeq.lib +3253 -0
  290. sage_wheels/share/singular/LIB/classifyceq.lib +2092 -0
  291. sage_wheels/share/singular/LIB/classifyci.lib +1133 -0
  292. sage_wheels/share/singular/LIB/combinat.lib +91 -0
  293. sage_wheels/share/singular/LIB/compregb.lib +276 -0
  294. sage_wheels/share/singular/LIB/control.lib +1636 -0
  295. sage_wheels/share/singular/LIB/crypto.lib +3795 -0
  296. sage_wheels/share/singular/LIB/curveInv.lib +667 -0
  297. sage_wheels/share/singular/LIB/curvepar.lib +1817 -0
  298. sage_wheels/share/singular/LIB/customstd.lib +100 -0
  299. sage_wheels/share/singular/LIB/deRham.lib +5979 -0
  300. sage_wheels/share/singular/LIB/decodegb.lib +2134 -0
  301. sage_wheels/share/singular/LIB/decomp.lib +1655 -0
  302. sage_wheels/share/singular/LIB/deflation.lib +872 -0
  303. sage_wheels/share/singular/LIB/deform.lib +925 -0
  304. sage_wheels/share/singular/LIB/difform.lib +3055 -0
  305. sage_wheels/share/singular/LIB/divisors.lib +750 -0
  306. sage_wheels/share/singular/LIB/dmod.lib +5817 -0
  307. sage_wheels/share/singular/LIB/dmodapp.lib +3269 -0
  308. sage_wheels/share/singular/LIB/dmodideal.lib +1211 -0
  309. sage_wheels/share/singular/LIB/dmodloc.lib +2645 -0
  310. sage_wheels/share/singular/LIB/dmodvar.lib +818 -0
  311. sage_wheels/share/singular/LIB/dummy.lib +17 -0
  312. sage_wheels/share/singular/LIB/elim.lib +1009 -0
  313. sage_wheels/share/singular/LIB/ellipticcovers.lib +548 -0
  314. sage_wheels/share/singular/LIB/enumpoints.lib +146 -0
  315. sage_wheels/share/singular/LIB/equising.lib +2127 -0
  316. sage_wheels/share/singular/LIB/ffmodstd.lib +2384 -0
  317. sage_wheels/share/singular/LIB/ffsolve.lib +1289 -0
  318. sage_wheels/share/singular/LIB/findifs.lib +778 -0
  319. sage_wheels/share/singular/LIB/finitediff.lib +1768 -0
  320. sage_wheels/share/singular/LIB/finvar.lib +7989 -0
  321. sage_wheels/share/singular/LIB/fpadim.lib +2429 -0
  322. sage_wheels/share/singular/LIB/fpalgebras.lib +1666 -0
  323. sage_wheels/share/singular/LIB/fpaprops.lib +1462 -0
  324. sage_wheels/share/singular/LIB/freegb.lib +3853 -0
  325. sage_wheels/share/singular/LIB/general.lib +1350 -0
  326. sage_wheels/share/singular/LIB/gfan.lib +1768 -0
  327. sage_wheels/share/singular/LIB/gitfan.lib +3130 -0
  328. sage_wheels/share/singular/LIB/gkdim.lib +99 -0
  329. sage_wheels/share/singular/LIB/gmspoly.lib +589 -0
  330. sage_wheels/share/singular/LIB/gmssing.lib +1739 -0
  331. sage_wheels/share/singular/LIB/goettsche.lib +909 -0
  332. sage_wheels/share/singular/LIB/graal.lib +1366 -0
  333. sage_wheels/share/singular/LIB/gradedModules.lib +2541 -0
  334. sage_wheels/share/singular/LIB/graphics.lib +360 -0
  335. sage_wheels/share/singular/LIB/grobcov.lib +7706 -0
  336. sage_wheels/share/singular/LIB/groups.lib +1123 -0
  337. sage_wheels/share/singular/LIB/grwalk.lib +507 -0
  338. sage_wheels/share/singular/LIB/hdepth.lib +194 -0
  339. sage_wheels/share/singular/LIB/help.cnf +57 -0
  340. sage_wheels/share/singular/LIB/hess.lib +1946 -0
  341. sage_wheels/share/singular/LIB/hnoether.lib +4292 -0
  342. sage_wheels/share/singular/LIB/hodge.lib +400 -0
  343. sage_wheels/share/singular/LIB/homolog.lib +1965 -0
  344. sage_wheels/share/singular/LIB/hyperel.lib +975 -0
  345. sage_wheels/share/singular/LIB/inout.lib +679 -0
  346. sage_wheels/share/singular/LIB/integralbasis.lib +6224 -0
  347. sage_wheels/share/singular/LIB/interval.lib +1418 -0
  348. sage_wheels/share/singular/LIB/intprog.lib +778 -0
  349. sage_wheels/share/singular/LIB/invar.lib +443 -0
  350. sage_wheels/share/singular/LIB/involut.lib +980 -0
  351. sage_wheels/share/singular/LIB/jacobson.lib +1215 -0
  352. sage_wheels/share/singular/LIB/kskernel.lib +534 -0
  353. sage_wheels/share/singular/LIB/latex.lib +3146 -0
  354. sage_wheels/share/singular/LIB/lejeune.lib +651 -0
  355. sage_wheels/share/singular/LIB/linalg.lib +2040 -0
  356. sage_wheels/share/singular/LIB/locnormal.lib +212 -0
  357. sage_wheels/share/singular/LIB/lrcalc.lib +526 -0
  358. sage_wheels/share/singular/LIB/makedbm.lib +294 -0
  359. sage_wheels/share/singular/LIB/mathml.lib +813 -0
  360. sage_wheels/share/singular/LIB/matrix.lib +1372 -0
  361. sage_wheels/share/singular/LIB/maxlike.lib +1132 -0
  362. sage_wheels/share/singular/LIB/methods.lib +212 -0
  363. sage_wheels/share/singular/LIB/moddiq.lib +322 -0
  364. sage_wheels/share/singular/LIB/modfinduni.lib +181 -0
  365. sage_wheels/share/singular/LIB/modnormal.lib +218 -0
  366. sage_wheels/share/singular/LIB/modprimdec.lib +1278 -0
  367. sage_wheels/share/singular/LIB/modquotient.lib +269 -0
  368. sage_wheels/share/singular/LIB/modstd.lib +1024 -0
  369. sage_wheels/share/singular/LIB/modular.lib +545 -0
  370. sage_wheels/share/singular/LIB/modules.lib +2561 -0
  371. sage_wheels/share/singular/LIB/modwalk.lib +609 -0
  372. sage_wheels/share/singular/LIB/mondromy.lib +1016 -0
  373. sage_wheels/share/singular/LIB/monomialideal.lib +3851 -0
  374. sage_wheels/share/singular/LIB/mprimdec.lib +2353 -0
  375. sage_wheels/share/singular/LIB/mregular.lib +1863 -0
  376. sage_wheels/share/singular/LIB/multigrading.lib +5629 -0
  377. sage_wheels/share/singular/LIB/ncHilb.lib +777 -0
  378. sage_wheels/share/singular/LIB/ncModslimgb.lib +791 -0
  379. sage_wheels/share/singular/LIB/ncalg.lib +16311 -0
  380. sage_wheels/share/singular/LIB/ncall.lib +31 -0
  381. sage_wheels/share/singular/LIB/ncdecomp.lib +468 -0
  382. sage_wheels/share/singular/LIB/ncfactor.lib +13371 -0
  383. sage_wheels/share/singular/LIB/ncfrac.lib +1023 -0
  384. sage_wheels/share/singular/LIB/nchilbert.lib +448 -0
  385. sage_wheels/share/singular/LIB/nchomolog.lib +759 -0
  386. sage_wheels/share/singular/LIB/ncloc.lib +361 -0
  387. sage_wheels/share/singular/LIB/ncpreim.lib +795 -0
  388. sage_wheels/share/singular/LIB/ncrat.lib +2849 -0
  389. sage_wheels/share/singular/LIB/nctools.lib +1887 -0
  390. sage_wheels/share/singular/LIB/nets.lib +1456 -0
  391. sage_wheels/share/singular/LIB/nfmodstd.lib +1000 -0
  392. sage_wheels/share/singular/LIB/nfmodsyz.lib +732 -0
  393. sage_wheels/share/singular/LIB/noether.lib +1106 -0
  394. sage_wheels/share/singular/LIB/normal.lib +8700 -0
  395. sage_wheels/share/singular/LIB/normaliz.lib +2226 -0
  396. sage_wheels/share/singular/LIB/ntsolve.lib +362 -0
  397. sage_wheels/share/singular/LIB/numerAlg.lib +560 -0
  398. sage_wheels/share/singular/LIB/numerDecom.lib +2261 -0
  399. sage_wheels/share/singular/LIB/olga.lib +1933 -0
  400. sage_wheels/share/singular/LIB/orbitparam.lib +351 -0
  401. sage_wheels/share/singular/LIB/parallel.lib +319 -0
  402. sage_wheels/share/singular/LIB/paraplanecurves.lib +3110 -0
  403. sage_wheels/share/singular/LIB/perron.lib +202 -0
  404. sage_wheels/share/singular/LIB/pfd.lib +2223 -0
  405. sage_wheels/share/singular/LIB/phindex.lib +642 -0
  406. sage_wheels/share/singular/LIB/pointid.lib +673 -0
  407. sage_wheels/share/singular/LIB/polybori.lib +1430 -0
  408. sage_wheels/share/singular/LIB/polyclass.lib +525 -0
  409. sage_wheels/share/singular/LIB/polylib.lib +1174 -0
  410. sage_wheels/share/singular/LIB/polymake.lib +1902 -0
  411. sage_wheels/share/singular/LIB/presolve.lib +1533 -0
  412. sage_wheels/share/singular/LIB/primdec.lib +9576 -0
  413. sage_wheels/share/singular/LIB/primdecint.lib +1782 -0
  414. sage_wheels/share/singular/LIB/primitiv.lib +401 -0
  415. sage_wheels/share/singular/LIB/puiseuxexpansions.lib +1631 -0
  416. sage_wheels/share/singular/LIB/purityfiltration.lib +960 -0
  417. sage_wheels/share/singular/LIB/qhmoduli.lib +1561 -0
  418. sage_wheels/share/singular/LIB/qmatrix.lib +293 -0
  419. sage_wheels/share/singular/LIB/random.lib +455 -0
  420. sage_wheels/share/singular/LIB/ratgb.lib +489 -0
  421. sage_wheels/share/singular/LIB/realclassify.lib +5759 -0
  422. sage_wheels/share/singular/LIB/realizationMatroids.lib +772 -0
  423. sage_wheels/share/singular/LIB/realrad.lib +1197 -0
  424. sage_wheels/share/singular/LIB/recover.lib +2628 -0
  425. sage_wheels/share/singular/LIB/redcgs.lib +3984 -0
  426. sage_wheels/share/singular/LIB/reesclos.lib +465 -0
  427. sage_wheels/share/singular/LIB/resbinomial.lib +2802 -0
  428. sage_wheels/share/singular/LIB/resgraph.lib +789 -0
  429. sage_wheels/share/singular/LIB/resjung.lib +820 -0
  430. sage_wheels/share/singular/LIB/resolve.lib +5110 -0
  431. sage_wheels/share/singular/LIB/resources.lib +170 -0
  432. sage_wheels/share/singular/LIB/reszeta.lib +5473 -0
  433. sage_wheels/share/singular/LIB/ring.lib +1328 -0
  434. sage_wheels/share/singular/LIB/ringgb.lib +343 -0
  435. sage_wheels/share/singular/LIB/rinvar.lib +1153 -0
  436. sage_wheels/share/singular/LIB/rootisolation.lib +1481 -0
  437. sage_wheels/share/singular/LIB/rootsmr.lib +709 -0
  438. sage_wheels/share/singular/LIB/rootsur.lib +886 -0
  439. sage_wheels/share/singular/LIB/rstandard.lib +607 -0
  440. sage_wheels/share/singular/LIB/rwalk.lib +336 -0
  441. sage_wheels/share/singular/LIB/sagbi.lib +1353 -0
  442. sage_wheels/share/singular/LIB/sagbiNormaliz.lib +1622 -0
  443. sage_wheels/share/singular/LIB/sagbiNormaliz0.lib +1498 -0
  444. sage_wheels/share/singular/LIB/sagbigrob.lib +449 -0
  445. sage_wheels/share/singular/LIB/schreyer.lib +321 -0
  446. sage_wheels/share/singular/LIB/schubert.lib +2551 -0
  447. sage_wheels/share/singular/LIB/sets.lib +524 -0
  448. sage_wheels/share/singular/LIB/sheafcoh.lib +1663 -0
  449. sage_wheels/share/singular/LIB/signcond.lib +437 -0
  450. sage_wheels/share/singular/LIB/sing.lib +1094 -0
  451. sage_wheels/share/singular/LIB/sing4ti2.lib +419 -0
  452. sage_wheels/share/singular/LIB/solve.lib +2243 -0
  453. sage_wheels/share/singular/LIB/spcurve.lib +1077 -0
  454. sage_wheels/share/singular/LIB/spectrum.lib +62 -0
  455. sage_wheels/share/singular/LIB/sresext.lib +757 -0
  456. sage_wheels/share/singular/LIB/ssi.lib +143 -0
  457. sage_wheels/share/singular/LIB/standard.lib +2769 -0
  458. sage_wheels/share/singular/LIB/stanleyreisner.lib +473 -0
  459. sage_wheels/share/singular/LIB/stdmodule.lib +547 -0
  460. sage_wheels/share/singular/LIB/stratify.lib +1070 -0
  461. sage_wheels/share/singular/LIB/surf.lib +506 -0
  462. sage_wheels/share/singular/LIB/surf_jupyter.lib +223 -0
  463. sage_wheels/share/singular/LIB/surfacesignature.lib +522 -0
  464. sage_wheels/share/singular/LIB/surfex.lib +1462 -0
  465. sage_wheels/share/singular/LIB/swalk.lib +877 -0
  466. sage_wheels/share/singular/LIB/symodstd.lib +1570 -0
  467. sage_wheels/share/singular/LIB/systhreads.lib +74 -0
  468. sage_wheels/share/singular/LIB/tasks.lib +1324 -0
  469. sage_wheels/share/singular/LIB/tateProdCplxNegGrad.lib +2412 -0
  470. sage_wheels/share/singular/LIB/teachstd.lib +858 -0
  471. sage_wheels/share/singular/LIB/template.lib +116 -0
  472. sage_wheels/share/singular/LIB/toric.lib +1119 -0
  473. sage_wheels/share/singular/LIB/transformation.lib +116 -0
  474. sage_wheels/share/singular/LIB/triang.lib +1197 -0
  475. sage_wheels/share/singular/LIB/tropical.lib +8741 -0
  476. sage_wheels/share/singular/LIB/tropicalEllipticCovers.lib +2922 -0
  477. sage_wheels/share/singular/LIB/tropicalNewton.lib +1128 -0
  478. sage_wheels/share/singular/LIB/tst.lib +1108 -0
  479. sage_wheels/share/singular/LIB/weierstr.lib +241 -0
  480. sage_wheels/share/singular/LIB/zeroset.lib +1478 -0
  481. sage_wheels/share/singular/emacs/.emacs-general +184 -0
  482. sage_wheels/share/singular/emacs/.emacs-singular +234 -0
  483. sage_wheels/share/singular/emacs/COPYING +44 -0
  484. sage_wheels/share/singular/emacs/cmd-cmpl.el +241 -0
  485. sage_wheels/share/singular/emacs/ex-cmpl.el +1681 -0
  486. sage_wheels/share/singular/emacs/hlp-cmpl.el +4318 -0
  487. sage_wheels/share/singular/emacs/lib-cmpl.el +179 -0
  488. sage_wheels/share/singular/emacs/singular.el +4273 -0
  489. sage_wheels/share/singular/emacs/singular.xpm +39 -0
  490. sage_wheels/share/singular/singular.idx +5002 -0
@@ -0,0 +1,925 @@
1
+ //////////////////////////////////////////////////////////////////////////////
2
+ version="version deform.lib 4.3.1.3 Jan_2023 "; // $Id: 2c496e9bb836e18fda75ad35289a7a0421c5aad4 $
3
+ category="Singularities";
4
+ info="
5
+ LIBRARY: deform.lib Miniversal Deformation of Singularities and Modules
6
+ AUTHOR: Bernd Martin, email: martin@math.tu-cottbus.de
7
+
8
+ PROCEDURES:
9
+ versal(Fo[,d,any]) miniversal deformation of isolated singularity Fo
10
+ mod_versal(Mo,I,[,d,any]) miniversal deformation of module Mo modulo ideal I
11
+ lift_kbase(N,M); lifting N into standard kbase of M
12
+ lift_rel_kb(N,M[,kbM,p]) relative lifting N into a kbase of M
13
+ ";
14
+
15
+ LIB "inout.lib";
16
+ LIB "general.lib";
17
+ LIB "matrix.lib";
18
+ LIB "homolog.lib";
19
+ LIB "sing.lib";
20
+ ///////////////////////////////////////////////////////////////////////////////
21
+
22
+ proc versal (ideal Fo,list #)
23
+ "USAGE: versal(Fo[,d,any]); Fo=ideal, d=int, any=list
24
+ COMPUTE: miniversal deformation of Fo up to degree d (default d=100),
25
+ RETURN: list L of 4 rings:
26
+ L[1] extending the basering Po by new variables given by
27
+ \"A,B,..\" (deformation parameters); the new variables precede
28
+ the old ones, the ordering is the product of \"ls\" and \"ord(Po)\" @*
29
+ L[2] = L[1]/Fo extending Qo=Po/Fo, @*
30
+ L[3] = the embedding ring of the versal base space, @*
31
+ L[4] = L[1]/Js extending L[3]/Js. @*
32
+ In the ring L[1] the following matrices are stored:
33
+ @*Js = giving the versal base space (obstructions),
34
+ @*Fs = giving the versal family of Fo,
35
+ @*Rs = giving the lifting of Ro=syz(Fo).
36
+
37
+ If d is defined (!=0), it computes up to degree d.
38
+ @*If 'any' is defined and any[1] is no string, interactive version.
39
+ @*Otherwise 'any' is interpreted as a list of predefined strings:
40
+ \"my\",\"param\",\"order\",\"out\": @*
41
+ (\"my\" internal prefix, \"param\" is a letter (e.g. \"A\") for the
42
+ name of the first parameter or (e.g. \"A(\") for index parameter
43
+ variables, \"order\" ordering string for ring extension), \"out\" name
44
+ of output file).
45
+ NOTE: printlevel < 0 no additional output,
46
+ printlevel >=0,1,2,.. informs you, what is going on;
47
+ this proc uses 'execute'.
48
+ EXAMPLE:example versal; shows an example
49
+ "
50
+ {
51
+ //------- prepare -------------------------------------------------------------
52
+ string str,@param,@order,@my,@out,@degrees;
53
+ int @d,d_max,@t1,t1',@t2,@colR,ok_ann,@smooth,@noObstr,@size,@j;
54
+ int p = printlevel-voice+3;
55
+ int time = timer;
56
+ intvec @iv,@jv,@is_qh,@degr;
57
+ d_max = 100;
58
+ @my = ""; @param="A"; @order="ds"; @out="no";
59
+ @size = size(#);
60
+ if( @size>0 ) { if (#[1]>0) { d_max = #[1];} }
61
+ if( @size>1 )
62
+ { if(typeof(#[2])!="string")
63
+ { string @active;
64
+ @my,@param,@order,@out = interact1();
65
+ }
66
+ else
67
+ { @my = #[2];
68
+ if (@size>2) {@param = #[3];}
69
+ if (@size>3) {@order = #[4];}
70
+ if (@size>4) {@out = #[5];}
71
+ }
72
+ }
73
+ if (ord_test(basering)==-1) { Fo = minbase(Fo);}
74
+ else { Fo =interred(Fo);}
75
+ @is_qh = qhweight(Fo);
76
+ int @rowR= size(Fo);
77
+ def Po = basering;
78
+ setring Po;
79
+ poly X_s = product(maxideal(1));
80
+ //------- reproduce T_12 -----------------------------------------------------
81
+ list Ls = T_12(Fo,1);
82
+ matrix Ro = Ls[6]; // syz(i)
83
+ matrix InfD = Ls[5]; // matrix of inf. deformations
84
+ matrix PreO = Ls[7]; // representation of (Syz/Kos)*
85
+ module PreO'= std(PreO);
86
+ module PreT = Ls[2]; // representation of modT_2 (sb)
87
+ if(dim(PreT)==0)
88
+ {
89
+ matrix kbT_2 = kbase(PreT); // kbase of T_2
90
+ }
91
+ else
92
+ {
93
+ matrix kbT_2 ; // kbase of T_2 : empty
94
+ }
95
+ @t1 = Ls[3]; // vdim of T_1
96
+ @t2 = Ls[4]; // vdim of T_2
97
+ kill Ls;
98
+ t1' = @t1;
99
+ if( @t1==0) { dbprint(p,"// rigid!"); return(list());}
100
+ if( @t2==0) { @smooth=1; dbprint(p,"// smooth base space");}
101
+ dbprint(p,"// ready: T_1 and T_2");
102
+ @colR = ncols(Ro);
103
+ //----- test: quasi-homogeneous, choice of inf. def.--------------------------
104
+ @degrees = homog_test(@is_qh,matrix(Fo),InfD);
105
+ @jv = 1..@t1;
106
+ if (@degrees!="")
107
+ { dbprint(p-1,"// T_1 is quasi-homogeneous represented with weight-vector",
108
+ @degrees);
109
+ }
110
+ if (defined(@active))
111
+ { "// matrix of infinitesimal deformations:";print(InfD);
112
+ "// weights of infinitesimal deformations ( empty ='not qhomog'):";
113
+ @degrees;
114
+ matrix dummy;
115
+ InfD,dummy,t1' = interact2(InfD,@jv);kill dummy;
116
+ }
117
+ //---- create new rings and objects ------------------------------------------
118
+ list list_of_rings=get_rings(Fo,t1',1,@order,@param);
119
+ def myPx= list_of_rings[1];
120
+ def myQx= list_of_rings[2];
121
+ def myOx= list_of_rings[3];
122
+ def mySo= list_of_rings[4];
123
+ kill list_of_rings;
124
+ setring myPx;
125
+ @jv=0; @jv[t1']=0; @jv=@jv+1; @jv[nvars(basering)]=0;
126
+ //weight-vector for calculating
127
+ //rel-jet with resp to def-para
128
+ ideal Io = imap(Po,Fo);
129
+ ideal J,m_J,tid; attrib(J,"isSB",1);
130
+ matrix Fo = matrix(Io); //initial equations
131
+ matrix homF = kohom(Fo,@colR);
132
+ matrix Ro = imap(Po,Ro);
133
+ matrix homR = transpose(Ro);
134
+ matrix homFR= concat(homR,homF);
135
+ module hom' = std(homFR);
136
+ matrix Js[1][@t2];
137
+ matrix F_R,Fs,Rs,Fn,Rn;
138
+ export Js,Fs,Rs;
139
+ matrix Mon[t1'][1]=maxideal(1);
140
+ Fn = transpose(imap(Po,InfD)*Mon); //infinitesimal deformations
141
+ Fs = Fo + Fn;
142
+ dbprint(p-1,"// infinitesimal deformation: Fs: ",Fs);
143
+ Rn = (-1)*lift(Fo,Fs*Ro); //infinit. relations
144
+ Rs = Ro + Rn;
145
+ F_R = Fs*Rs;
146
+ tid = 0 + ideal(F_R);
147
+ if (tid[1]==0) {d_max=1;} //finished ?
148
+ setring myOx;
149
+ matrix Fs,Rs,Cup,Cup',F_R,homFR,New,Rn,Fn;
150
+ module hom';
151
+ ideal null,tid; attrib(null,"isSB",1);
152
+ setring myQx;
153
+ poly X_s = imap(Po,X_s);
154
+ matrix Cup,Cup',MASS;
155
+ ideal tid,null; attrib(null,"isSB",1);
156
+ ideal J,m_J; attrib(J,"isSB",1);
157
+ attrib(m_J,"isSB",1);
158
+ matrix PreO = imap(Po,PreO);
159
+ module PreO'= imap(Po,PreO'); attrib(PreO',"isSB",1);
160
+ module PreT = imap(Po,PreT); attrib(PreT,"isSB",1);
161
+ matrix kbT_2 = imap(Po,kbT_2);
162
+ matrix Mon = fetch(myPx,Mon);
163
+ matrix F_R = fetch(myPx,F_R);
164
+ matrix Js[1][@t2];
165
+ //------- start the loop ------------------------------------------------------
166
+ for (@d=2;@d<=d_max;@d=@d+1)
167
+ {
168
+ if( @t1==0) {break};
169
+ dbprint(p,"// start computation in degree "+string(@d)+".");
170
+ dbprint(p-3,">>> TIME = "+string(timer-time));
171
+ dbprint(p-3,"==> memory = "+string(kmemory())+"k");
172
+ //------- compute obstruction-vector -----------------------------------------
173
+ if (@smooth) { @noObstr=1;}
174
+ else
175
+ { Cup = jet(F_R,@d,@jv);
176
+ Cup = matrix(reduce(ideal(Cup),m_J),@colR,1);
177
+ Cup = jet(Cup,@d,@jv);
178
+ }
179
+ //------- express obstructions in kbase of T_2 -------------------------------
180
+ if ( @noObstr==0 )
181
+ { Cup' = reduce(Cup,PreO');
182
+ tid = simplify(ideal(Cup'),10);
183
+ if(tid[1]!=0)
184
+ { dbprint(p-4,"// *");
185
+ Cup=Cup-Cup';
186
+ }
187
+ Cup = lift(PreO,Cup);
188
+ MASS = lift_rel_kb(Cup,PreT,kbT_2,X_s);
189
+ dbprint(p-3,"// next MASSEY-products:",MASS-jet(MASS,@d-1,@jv));
190
+ if (MASS==transpose(Js))
191
+ { @noObstr=1;dbprint(p-1,"// no obstruction"); }
192
+ else { @noObstr=0; }
193
+ }
194
+ //------- obtain equations of base space --------------------------------------
195
+ if ( @noObstr==0 )
196
+ { Js = transpose(MASS);
197
+ dbprint(p-2,"// next equation of base space:",
198
+ simplify(ideal(Js),10));
199
+ setring myPx;
200
+ Js = imap(myQx,Js);
201
+ degBound = @d+1;
202
+ J = std(ideal(Js));
203
+ m_J = std(J*ideal(Mon));
204
+ degBound = 0;
205
+ //--------------- obtain new base-ring ----------------------------------------
206
+ if(defined(myOx)) {kill myOx;}
207
+ attrib(J,"isSB",1); // J is a degBound-SB (deg @d)
208
+ qring myOx = J;
209
+ matrix Fs,Rs,F_R,Cup,Cup',homFR,New,Rn,Fn;
210
+ module hom';
211
+ ideal null,tid; attrib(null,"isSB",1);
212
+ }
213
+ //---------------- lift equations F and relations R ---------------------------
214
+ setring myOx;
215
+ Fs = fetch(myPx,Fs);
216
+ Rs = fetch(myPx,Rs);
217
+ F_R = Fs*Rs;
218
+ F_R = matrix(reduce(ideal(F_R),null));
219
+ tid = 0 + ideal(F_R);
220
+ if (tid[1]==0) { dbprint(p-1,"// finished"); break;}
221
+ Cup = (-1)*transpose(jet(F_R,@d,@jv));
222
+ homFR = fetch(myPx,homFR);
223
+ hom' = fetch(myPx,hom'); attrib(hom',"isSB",1);
224
+ Cup' = simplify(reduce(Cup,hom'),10);
225
+ tid = simplify(ideal(Cup'),10);
226
+ if (tid[1]!=0)
227
+ { dbprint(p-4,"// #");
228
+ Cup=Cup-Cup';
229
+ }
230
+ New = lift(homFR,Cup);
231
+ Rn = matrix(ideal(New[1+@rowR..nrows(New),1]),@rowR,@colR);
232
+ Fn = matrix(ideal(New[1..@rowR,1]),1,@rowR);
233
+ Fs = Fs+Fn;
234
+ Rs = Rs+Rn;
235
+ F_R = Fs*Rs;
236
+ tid = 0+reduce(ideal(F_R),null);
237
+ //---------------- fetch results into other rings -----------------------------
238
+ setring myPx;
239
+ Fs = fetch(myOx,Fs);
240
+ Rs = fetch(myOx,Rs);
241
+ F_R = Fs*Rs;
242
+ setring myQx;
243
+ F_R = fetch(myPx,F_R);
244
+ m_J = fetch(myPx,m_J); attrib(m_J,"isSB",1);
245
+ J = fetch(myPx,J); attrib(J,"isSB",1);
246
+ Js = fetch(myPx,Js);
247
+ tid = fetch(myOx,tid);
248
+ if (tid[1]==0) { dbprint(p-1,"// finished");break;}
249
+ }
250
+ //--------- end loop and final output ----------------------------------------
251
+ setring myPx;
252
+ if (@out!="no")
253
+ { string out = @out+"_"+string(@d);
254
+ "// writing file "+out+" with matrix Js, matrix Fs, matrix Rs ready
255
+ for reading in rings "+myPx+" or "+myQx;
256
+ write(out,"matrix Js[1][",@t2,"]=",Js,";matrix Fs[1][",@rowR,"]=",Fs,
257
+ ";matrix Rs[",@rowR,"][",@colR,"]=",Rs,";");
258
+ }
259
+ dbprint(p-3,">>> TIME = "+string(timer-time));
260
+ if (@is_qh != 0)
261
+ { @degr = qhweight(ideal(Js));
262
+ @degr = @degr[1..t1'];
263
+ dbprint(p-1,"// quasi-homogeneous weights of miniversal base",@degr);
264
+ }
265
+ dbprint(p-1,
266
+ "// ___ Equations of miniversal base space ___",Js,
267
+ "// ___ Equations of miniversal total space ___",Fs);
268
+ dbprint(p,"","
269
+ // 'versal' returned a list, say L, of four rings. In L[1] are stored:
270
+ // as matrix Fs: Equations of total space of the miniversal deformation,
271
+ // as matrix Js: Equations of miniversal base space,
272
+ // as matrix Rs: syzygies of Fs mod Js.
273
+ // To access these data, type
274
+ def Px=L[1]; setring Px; print(Fs); print(Js); print(Rs);
275
+
276
+ // L[2] = L[1]/Fo extending Qo=Po/Fo,
277
+ // L[3] = the embedding ring of the versal base space,
278
+ // L[4] = L[1]/Js extending L[3]/Js.
279
+ ");
280
+ return(list(myPx,myQx,mySo,myOx));
281
+ }
282
+ example
283
+ { "EXAMPLE:"; echo = 2;
284
+ int p = printlevel;
285
+ printlevel = 0;
286
+ ring r1 = 0,(x,y,z,u,v),ds;
287
+ matrix m[2][4] = x,y,z,u,y,z,u,v;
288
+ ideal Fo = minor(m,2);
289
+ // cone over rational normal curve of degree 4
290
+ list L=versal(Fo);
291
+ L;
292
+ def Px=L[1];
293
+ setring Px;
294
+ // ___ Equations of miniversal base space ___:
295
+ Js;"";
296
+ // ___ Equations of miniversal total space ___:
297
+ Fs;"";
298
+ }
299
+ ///////////////////////////////////////////////////////////////////////////////
300
+
301
+ proc mod_versal(matrix Mo, ideal I, list #)
302
+ "USAGE: mod_versal(Mo,Io[,d,any]); Io=ideal, Mo=module, d=int, any =list
303
+ COMPUTE: miniversal deformation of coker(Mo) over Qo=Po/Io, Po=basering;
304
+ RETURN: list L of 4 rings:
305
+ L[1] extending the basering Po by new variables given by
306
+ \"A,B,..\" (deformation parameters); the new variables precede
307
+ the old ones, the ordering is the product of \"ls\" and \"ord(Po)\" @*
308
+ L[2] = L[1]/Io extending Qo, @*
309
+ L[3] = the embedding ring of the versal base space, @*
310
+ L[4] = L[1]/(Io+Js) ring of the versal deformation of coker(Ms). @*
311
+ In the ring L[1] the following matrices are stored:
312
+ @*Js = giving the versal base space (obstructions),
313
+ @*Fs = giving the versal family of Mo,
314
+ @*Rs = giving the lifting of syzygies Lo=syz(Mo).
315
+ If d is defined (!=0), it computes up to degree d.
316
+ @*If 'any' is defined and any[1] is no string, interactive version.
317
+ @*Otherwise 'any' is interpreted as a list of predefined strings:
318
+ \"my\",\"param\",\"order\",\"out\": @*
319
+ (\"my\" internal prefix, \"param\" is a letter (e.g. \"A\") for the
320
+ name of the first parameter or (e.g. \"A(\") for index parameter
321
+ variables, \"order\" ordering string for ring extension), \"out\" name
322
+ of output file).
323
+ NOTE: printlevel < 0 no additional output,
324
+ printlevel >=0,1,2,.. informs you, what is going on,
325
+ this proc uses 'execute'.
326
+ EXAMPLE:example mod_versal; shows an example
327
+ "
328
+ {
329
+ //------- prepare -------------------------------------------------------------
330
+ intvec save_opt=option(get);
331
+ option(cancelunit);
332
+ string str,@param,@order,@my,@out,@degrees;
333
+ int @d,d_max,f0,f1,f2,e1,e1',e2,ok_ann,@smooth,@noObstr,@size,@j;
334
+ int p = printlevel-voice+3;
335
+ int time = timer;
336
+ intvec @iv,@jv,@is_qh,@degr;
337
+ d_max = 100;
338
+ @my = ""; @param="A"; @order="ds"; @out="no";
339
+ @size = size(#);
340
+ if( @size>0 ) { d_max = #[1]; }
341
+ if( @size>1 )
342
+ { if(typeof(#[2])!="string")
343
+ { string @active;
344
+ @my,@param,@order,@out = interact1();
345
+ }
346
+ else
347
+ { @my = #[2];
348
+ if (@size>2) {@param = #[3];}
349
+ if (@size>3) {@order = #[4];}
350
+ if (@size>4) {@out = #[5];}
351
+ }
352
+ }
353
+ @is_qh = qhweight(I);
354
+ def Po = basering;
355
+ setring Po;
356
+ poly X_s = product(maxideal(1));
357
+ //-------- compute Ext's ------------------------------------------------------
358
+ I = std(I);
359
+ qring Qo = I;
360
+ matrix Mo = fetch(Po,Mo);
361
+ list Lo = compute_ext(Mo,p);
362
+ f0,f1,f2,e1,e2,ok_ann=Lo[1];
363
+ matrix Ls,kb1,lift1 = Lo[2],Lo[3],Lo[4];
364
+ matrix kb2,C',D' = Lo[5][2],Lo[5][3],Lo[5][5];
365
+ module ex2,Co,Do = Lo[5][1],Lo[5][4],Lo[5][6];
366
+ kill Lo;
367
+ dbprint(p,"// ready: Ext1 and Ext2");
368
+ //----- test: quasi-homogeneous, choice of inf. def.--------------------------
369
+ @degrees = homog_test(@is_qh,Mo,kb1);
370
+ e1' = e1; @jv = 1..e1;
371
+ if (@degrees != "")
372
+ { dbprint(p-1,"// Ext1 is quasi-homogeneous represented: "+@degrees);
373
+ }
374
+ if (defined(@active))
375
+ { "// kbase of Ext1:";
376
+ print(kb1);
377
+ "// weights of kbase of Ext1 ( empty = 'not qhomog')";@degrees;
378
+ kb1,lift1,e1' = interact2(kb1,@jv,lift1);
379
+ }
380
+ //-------- get new rings and objects ------------------------------------------
381
+ setring Po;
382
+ list list_of_rings=get_rings(I,e1',0,@order,@param);
383
+ def ooPx= list_of_rings[1];
384
+ def ooQx= list_of_rings[2];
385
+ def ooOx= list_of_rings[3];
386
+ def ooSo= list_of_rings[4];
387
+ kill list_of_rings;
388
+ setring ooPx;
389
+ ideal J,m_J;
390
+ ideal I_J = imap(Po,I);
391
+ ideal Io = I_J;
392
+ matrix Mon[e1'][1] = maxideal(1);
393
+ matrix Ms = imap(Qo,Mo);
394
+ matrix Ls = imap(Qo,Ls);
395
+ matrix Js[1][e2];
396
+ setring ooQx;
397
+ ideal J,I_J,tet,null; attrib(null,"isSB",1);
398
+ ideal m_J = fetch(ooPx,m_J); attrib(m_J,"isSB",1);
399
+ @jv=0; @jv[e1] = 0; @jv = @jv+1; @jv[nvars(ooPx)] = 0;
400
+ matrix Ms = imap(Qo,Mo); export(Ms);
401
+ matrix Ls = imap(Qo,Ls); export(Ls);
402
+ matrix Js[e2][1]; export(Js);
403
+ matrix MASS;
404
+ matrix Mon = fetch(ooPx,Mon);
405
+ matrix Mn,Ln,ML,Cup,Cup',Lift;
406
+ matrix C' = imap(Qo,C');
407
+ module Co = imap(Qo,Co); attrib(Co,"isSB",1);
408
+ module ex2 = imap(Qo,ex2); attrib(ex2,"isSB",1);
409
+ matrix D' = imap(Qo,D');
410
+ module Do = imap(Qo,Do); attrib(Do,"isSB",1);
411
+ matrix kb2 = imap(Qo,kb2);
412
+ matrix kb1 = imap(Qo,kb1);
413
+ matrix lift1= imap(Qo,lift1);
414
+ poly X_s = imap(Po,X_s);
415
+ intvec intv = e1',e1,f0,f1,f2;
416
+ Ms,Ls= get_inf_def(Ms,Ls,kb1,lift1,X_s);
417
+ kill kb1,lift1;
418
+ dbprint(p-1,"// infinitesimal extension",Ms);
419
+ //----------- start the loop --------------------------------------------------
420
+ for (@d=2;@d<=d_max;@d=@d+1)
421
+ {
422
+ dbprint(p-3,">>> time = "+string(timer-time));
423
+ dbprint(p-3,"==> memory = "+string(memory(0)/1000)+
424
+ ", allocated = "+string(memory(1)/1000));
425
+ dbprint(p,"// start deg = "+string(@d));
426
+ //-------- get obstruction ----------------------------------------------------
427
+ Cup = matrix(ideal(Ms*Ls),f0*f2,1);
428
+ Cup = jet(Cup,@d,@jv);
429
+ Cup = reduce(ideal(Cup),m_J);
430
+ Cup = jet(Cup,@d,@jv);
431
+ //-------- express obstruction in kbase ---------------------------------------
432
+ Cup' = reduce(Cup,Do);
433
+ tet = simplify(ideal(Cup'),10);
434
+ if (tet[1]!=0)
435
+ { dbprint(p-4,"// *");
436
+ Cup = Cup-Cup';
437
+ }
438
+ Cup = lift(D',Cup);
439
+ if (ok_ann)
440
+ { MASS = lift_rel_kb(Cup,ex2,kb2,X_s);}
441
+ else
442
+ { MASS = reduce(Cup,ex2);}
443
+ dbprint(p-3,"// next MATRIC-MASSEY-products",
444
+ MASS-jet(MASS,@d-1,@jv));
445
+ if ( MASS==transpose(Js))
446
+ { @noObstr = 1;dbprint(p-1,"//no obstruction"); }
447
+ else { @noObstr = 0; }
448
+ //-------- obtain equations of base space -------------------------------------
449
+ if (@noObstr == 0)
450
+ { Js = MASS;
451
+ dbprint(p-2,"// next equation of base space:",simplify(ideal(Js),10));
452
+ setring ooPx;
453
+ Js = imap(ooQx,Js);
454
+ degBound=@d+1;
455
+ J = std(ideal(Js));
456
+ m_J = std(ideal(Mon)*J);
457
+ degBound=0;
458
+ I_J = Io,J; attrib(I_J,"isSB",1);
459
+ //-------- obtain new base ring -----------------------------------------------
460
+ if (defined(ooOx)) {kill ooOx;}
461
+ qring ooOx = I_J;
462
+ ideal null,tet; attrib(null,"isSB",1);
463
+ matrix Ms = imap(ooQx,Ms);
464
+ matrix Ls = imap(ooQx,Ls);
465
+ matrix Mn,Ln,ML,Cup,Cup',Lift;
466
+ matrix C' = imap(Qo,C');
467
+ module Co = imap(Qo,Co); attrib(Co,"isSB",1);
468
+ module ex2 = imap(Qo,ex2); attrib(ex2,"isSB",1);
469
+ matrix kb2 = imap(Qo,kb2);
470
+ poly X_s = imap(Po,X_s);
471
+ }
472
+ //-------- get lifts ----------------------------------------------------------
473
+ setring ooOx;
474
+ ML = matrix(reduce(ideal(Ms*Ls),null),f0,f2);
475
+ Cup = matrix(ideal(ML),f0*f2,1);
476
+ Cup = jet(Cup,@d,@jv);
477
+ Cup'= reduce(Cup,Co);
478
+ tet = simplify(ideal(Cup'),10);
479
+ if (tet[1]!=0)
480
+ { dbprint(p-4,"// #");
481
+ Cup = Cup-Cup';
482
+ }
483
+ Lift = lift(C',Cup);
484
+ Mn = matrix(ideal(Lift),f0,f1);
485
+ Ln = matrix(ideal(Lift[f0*f1+1..nrows(Lift),1]),f1,f2);
486
+ Ms = Ms-Mn;
487
+ Ls = Ls-Ln;
488
+ dbprint(p-3,"// next extension of Mo",Mn);
489
+ dbprint(p-3,"// next extension of syz(Mo)",Ln);
490
+ ML = reduce(ideal(Ms*Ls),null);
491
+ //--------- test: finished ----------------------------------------------------
492
+ tet = simplify(ideal(ML),10);
493
+ if (tet[1]==0) { dbprint(p-1,"// finished in degree ",@d);}
494
+ //---------fetch results into Qx and Px ---------------------------------------
495
+ setring ooPx;
496
+ Ms = fetch(ooOx,Ms);
497
+ Ls = fetch(ooOx,Ls);
498
+ setring ooQx;
499
+ Ms = fetch(ooOx,Ms);
500
+ Ls = fetch(ooOx,Ls);
501
+ ML = Ms*Ls;
502
+ ML = matrix(reduce(ideal(ML),null),f0,f2);
503
+ tet = imap(ooOx,tet);
504
+ if (tet[1]==0) { break;}
505
+ }
506
+ //------- end of loop, final output -------------------------------------------
507
+ if (@out != "no")
508
+ { string out = @out+"_"+string(@d);
509
+ "// writing file '"+out+"' with matrix Js, matrix Ms, matrix Ls
510
+ ready for reading in rings qqPx or qqQx";
511
+ write(out,"matrix Js[1][",e2,"]=",Js,";matrix Ms[",f0,"][",f1,"]=",Ms,
512
+ ";matrix Ls[",f1,"][",f2,"]=",Ls,";");
513
+ }
514
+ dbprint(p-3,">>> TIME = "+string(timer-time));
515
+ if (@is_qh != 0)
516
+ { @degr = qhweight(ideal(Js));
517
+ @degr = @degr[1..e1'];
518
+ dbprint(p-1,"// quasi-homogeneous weights of miniversal base",@degr);
519
+ }
520
+ dbprint(p,"
521
+ // 'mod_versal' returned a list, say L, of four rings. In L[2] are stored:
522
+ // as matrix Ms: presentation matrix of the deformed module,
523
+ // as matrix Ls: lifted syzygies,
524
+ // as matrix Js: Equations of total space of miniversal deformation
525
+ // To access these data, type
526
+ def Qx=L[2]; setring Qx; print(Ms); print(Ls); print(Js);
527
+ ");
528
+ option(set,save_opt);
529
+ return(list(ooPx,ooQx,ooSo,ooOx));
530
+ }
531
+ example
532
+ { "EXAMPLE:"; echo = 2;
533
+ int p = printlevel;
534
+ printlevel = 1;
535
+ ring Ro = 0,(x,y),wp(3,4);
536
+ ideal Io = x4+y3;
537
+ matrix Mo[2][2] = x2,y,-y2,x2;
538
+ list L = mod_versal(Mo,Io);
539
+ def Qx=L[2]; setring Qx;
540
+ print(Ms);
541
+ print(Ls);
542
+ print(Js);
543
+ printlevel = p;
544
+ if (defined(Px)) {kill Px,Qx,So;}
545
+ }
546
+ ///////////////////////////////////////////////////////////////////////////////
547
+ proc compute_ext(matrix Mo,int p)
548
+ "
549
+ Sub-procedure: obtain Ext1 and Ext2 and other objects used by mod_versal
550
+ "
551
+ {
552
+ int l,f0,f1,f2,f3,e1,e2,ok_ann;
553
+ module Co,Do,ima,ex1,ex2;
554
+ matrix M0,M1,M2,ker,kb1,lift1,kb2,A,B,C,D;
555
+ //------- resM ---------------------------------------------------------------
556
+ list resM = nres(Mo,3);
557
+ M0 = resM[1];
558
+ M1 = resM[2];
559
+ M2 = resM[3]; kill resM;
560
+ f0 = nrows(M0);
561
+ f1 = ncols(M0);
562
+ f2 = ncols(M1);
563
+ f3 = ncols(M2);
564
+ //------ compute Ext^2 ------------------------------------------------------
565
+ B = kohom(M0,f3);
566
+ A = kontrahom(M2,f0);
567
+ D = modulo(A,B);
568
+ Do = std(D);
569
+ ima = kohom(M0,f2),kontrahom(M1,f0);
570
+ ex2 = modulo(D,ima);
571
+ ex2 = std(ex2);
572
+ e2 = vdim(ex2);
573
+ kb2 = kbase(ex2);
574
+ dbprint(p,"// vdim (Ext^2) = "+string(e2));
575
+ //------ test: max = Ann(Ext2) -----------------------------------------------
576
+ for (l=1;l<=e2;l=l+1)
577
+ { ok_ann = ok_ann+ord(kb2[l]);
578
+ }
579
+ if (ok_ann==0)
580
+ { e2 =nrows(ex2);
581
+ dbprint(p,"// Ann(Ext2) is maximal");
582
+ }
583
+ //------ compute Ext^1 -------------------------------------------------------
584
+ B = kohom(M0,f2);
585
+ A = kontrahom(M1,f0);
586
+ ker = modulo(A,B);
587
+ ima = kohom(M0,f1),kontrahom(M0,f0);
588
+ ex1 = modulo(ker,ima);
589
+ ex1 = std(ex1);
590
+ e1 = vdim(ex1);
591
+ dbprint(p,"// vdim (Ext^1) = "+string(e1));
592
+ kb1 = kbase(ex1);
593
+ kb1 = ker*kb1;
594
+ C = concat(A,B);
595
+ Co = std(C);
596
+ //------ compute the liftings of Ext^1 ---------------------------------------
597
+ lift1 = A*kb1;
598
+ lift1 = lift(B,lift1);
599
+ intvec iv = f0,f1,f2,e1,e2,ok_ann;
600
+ list L' = ex2,kb2,C,Co,D,Do;
601
+ return(iv,M1,kb1,lift1,L');
602
+ }
603
+ ///////////////////////////////////////////////////////////////////////////////
604
+ static proc get_rings(ideal Io,int e1,int switch, list #)
605
+ "
606
+ Sub-procedure: creating ring-extensions, returned as a list of 4 rings
607
+ "
608
+ {
609
+ def Po = basering;
610
+ string my;
611
+ string my_ord = "ds";
612
+ string my_var = "A";
613
+ if (size(#)>1)
614
+ {
615
+ my_ord = #[1];
616
+ my_var = #[2];
617
+ }
618
+ def my_Px=extendring(e1,my_var,my_ord);
619
+ setring my_Px;
620
+ ideal Io = imap(Po,Io);
621
+ attrib(Io,"isSB",1);
622
+ qring my_Qx = Io;
623
+ if (switch)
624
+ {
625
+ setring my_Px;
626
+ qring my_Ox = std(ideal(0));
627
+ }
628
+ else
629
+ {
630
+ def my_Ox = my_Qx;
631
+ }
632
+ def my_So=defring(charstr(Po),e1,my_var,my_ord);
633
+ setring my_So;
634
+ list erg=list(my_Px,my_Qx,my_Ox,my_So);
635
+ return(erg);
636
+ }
637
+ ///////////////////////////////////////////////////////////////////////////////
638
+ proc get_inf_def(list #)
639
+ "
640
+ Sub-procedure: compute infinitesimal family of a module and its syzygies
641
+ from a kbase of Ext1 and its lifts
642
+ "
643
+ {
644
+ matrix Ms = #[1];
645
+ matrix Ls = #[2];
646
+ matrix kb1 = #[3];
647
+ matrix li1 = #[4];
648
+ int e1,f0,f1,f2;
649
+ poly X_s = #[5];
650
+ e1 = ncols(kb1);
651
+ f0 = nrows(Ms);
652
+ f1 = nrows(Ls);
653
+ f2 = ncols(Ls);
654
+ int l;
655
+ for (l=1;l<=e1;l=l+1)
656
+ {
657
+ Ms = Ms + var(l)*matrix(ideal(kb1[l]),f0,f1);
658
+ Ls = Ls - var(l)*matrix(ideal(li1[l]),f1,f2);
659
+ }
660
+ return(Ms,Ls);
661
+ }
662
+ //////////////////////////////////////////////////////////////////////////////
663
+ proc lift_rel_kb (module N, module M, list #)
664
+ "USAGE: lift_rel_kb(N,M[,kbaseM,p]);
665
+ ASSUME: [p a monomial ] or the product of all variables
666
+ N, M modules of same rank, M depending only on variables not in p
667
+ and vdim(M) is finite in this ring,
668
+ [ kbaseM the kbase of M in the subring given by variables not in p ] @*
669
+ warning: these assumptions are not checked by the procedure
670
+ RETURN: matrix A, whose j-th columns present the coeff's of N[j] in kbaseM,
671
+ i.e. kbaseM*A = reduce(N,std(M))
672
+ EXAMPLE: example lift_rel_kb; shows examples
673
+ "
674
+ {
675
+ poly p = product(maxideal(1));
676
+ if (!attrib(M,"isSB")) { M = std(M);}
677
+ if (size(#)>0) { p=#[2]; module kbaseM=#[1];}
678
+ else
679
+ { if (vdim(M)<=0) { "// vdim(M) not finite";return(A);}
680
+ module kbaseM = kbase(M);
681
+ }
682
+ N = reduce(N,M);
683
+ matrix A;
684
+ if (simplify(N,10)[1]==[0]) {return(A);}
685
+ A = coeffs(N,kbaseM,p);
686
+ return(A);
687
+ }
688
+ example
689
+ {
690
+ "EXAMPLE:"; echo=2;
691
+ ring r=0,(A,B,x,y),dp;
692
+ module M = [x2,xy],[xy,y3],[y2],[0,x];
693
+ module kbaseM = [1],[x],[xy],[y],[0,1],[0,y],[0,y2];
694
+ poly f=xy;
695
+ module N = [AB,BBy],[A3xy+x4,AB*(1+y2)];
696
+ matrix A = lift_rel_kb(N,M,kbaseM,f);
697
+ print(A);
698
+ "TEST:";
699
+ print(matrix(kbaseM)*A-matrix(reduce(N,std(M))));
700
+ }
701
+ ///////////////////////////////////////////////////////////////////////////////
702
+ proc lift_kbase (def N,def M)
703
+ "USAGE: lift_kbase(N,M); N,M=poly/ideal/vector/module
704
+ RETURN: matrix A, coefficient matrix expressing N as linear combination of
705
+ k-basis of M. Let the k-basis have k elements and size(N)=c columns.
706
+ Then A satisfies:
707
+ matrix(reduce(N,std(M)),k,c) = matrix(kbase(std(M)))*A
708
+ ASSUME: dim(M)=0 and the monomial ordering is a well ordering or the last
709
+ block of the ordering is c or C
710
+ EXAMPLE: example lift_kbase; shows an example
711
+ "
712
+ {
713
+ return(lift_rel_kb(N,M));
714
+ }
715
+ example
716
+ {"EXAMPLE:"; echo=2;
717
+ ring R=0,(x,y),ds;
718
+ module M=[x2,xy],[y2,xy],[0,xx],[0,yy];
719
+ module N=[x3+xy,x],[x,x+y2];
720
+ print(M);
721
+ module kb=kbase(std(M));
722
+ print(kb);
723
+ print(N);
724
+ matrix A=lift_kbase(N,M);
725
+ print(A);
726
+ matrix(reduce(N,std(M)),nrows(kb),ncols(A)) - matrix(kbase(std(M)))*A;
727
+ }
728
+
729
+
730
+ ///////////////////////////////////////////////////////////////////////////////
731
+ proc interact1 ()
732
+ "
733
+ Sub_procedure: asking for and reading your input-strings
734
+ "
735
+ {
736
+ string my = "@";
737
+ string str,out,my_ord,my_var;
738
+ my_ord = "ds";
739
+ my_var = "A";
740
+ "INPUT: name of output-file (ENTER = no output, do not use \"my\"!)";
741
+ str = read("");
742
+ if (size(str)>1)
743
+ { out = str[1..size(str)-1];}
744
+ else
745
+ { out = "no";}
746
+ "INPUT: prefix-string of ring-extension (ENTER = '@')";
747
+ str = read("");
748
+ if ( size(str) > 1 )
749
+ { my = str[1..size(str)-1]; }
750
+ "INPUT:parameter-string
751
+ (give a letter corresponding to first new variable followed by the next letters,
752
+ or 'T(' - a letter + '(' - getting a string of indexed variables)
753
+ (ENTER = A) :";
754
+ str = read("");
755
+ if (size(str)>1) { my_var=str[1..size(str)-1]; }
756
+ "INPUT:order-string (local or weighted!) (ENTER = ds) :";
757
+ str = read("");
758
+ if (size(str)>1) { my_ord=str[1..size(str)-1]; }
759
+ if( find(my_ord,"s")+find(my_ord,"w") == 0 )
760
+ { "// ordering must be an local! changed into 'ds'";
761
+ my_ord = "ds";
762
+ }
763
+ return(my,my_var,my_ord,out);
764
+ }
765
+ ///////////////////////////////////////////////////////////////////////////////
766
+ proc interact2 (matrix A, intvec col_vec, list #)
767
+ "
768
+ Sub-procedure: asking for and reading your input
769
+ "
770
+ {
771
+ module B,C;
772
+ matrix D;
773
+ int flag;
774
+ if (size(#)>0) { D=#[1];flag=1;}
775
+ int t1 = ncols(A);
776
+ ">>Do you want all deformations? (ENTER=yes)";
777
+ string str = read("");
778
+ if ((size(str)>1) and (str<>"yes"))
779
+ { ">> Choose columns of the matrix";
780
+ ">> (Enter = all columns)";
781
+ "INPUT (number of columns to use as integer-list 'i_1,i_2,.. ,i_t' ):";
782
+ string columnes = read("");
783
+
784
+ // improved: CL
785
+ // ==========================================================
786
+ // old: if (size(columnes)<2) {columnes=string(col_vec);}
787
+ // t1 = size(columnes)/2;
788
+ // new:
789
+ if (columnes=="")
790
+ {
791
+ intvec vvvv=1..ncols(A);
792
+ }
793
+ else
794
+ {
795
+ execute("intvec vvvv="+columnes);
796
+ }
797
+ t1=size(vvvv);
798
+ // ==========================================================
799
+
800
+ int l,l1;
801
+ for (l=1;l<=t1;l=l+1)
802
+ {
803
+ l1=vvvv[l];
804
+ B[l] = A[l1];
805
+ if(flag) { C[l]=D[l1];}
806
+ }
807
+ A = matrix(B,nrows(A),ncols(B));
808
+ D = matrix(C,nrows(D),ncols(C));
809
+ }
810
+ return(A,D,t1);
811
+ }
812
+ ///////////////////////////////////////////////////////////////////////////////
813
+ proc negative_part(intvec iv)
814
+ "
815
+ RETURNS intvec of indices of jv having negative entries (or iv, if non)
816
+ "
817
+ {
818
+ intvec jv;
819
+ int l,k;
820
+ for (l=1;l<=size(iv);l=l+1)
821
+ { if (iv[l]<0)
822
+ { k = k+1;
823
+ jv[k]=l;
824
+ }
825
+ }
826
+ if (jv==0) {jv=1; dbprint(printlevel-1,"// empty negative part, return all ");}
827
+ return(jv);
828
+ }
829
+ ///////////////////////////////////////////////////////////////////////////////
830
+ proc find_ord(matrix A, intvec w_vec)
831
+ "
832
+ Sub-proc: return martix ord(a_ij) with respect to weight_vec, or
833
+ 0 if A non-qh
834
+ "
835
+ {
836
+ int @r = nrows(A);
837
+ int @c = ncols(A);
838
+ int i,j;
839
+ def br = basering;
840
+ def nr=changeord(list(list("wp",w_vec)));
841
+ setring nr;
842
+ matrix A = imap(br,A);
843
+ intmat degA[@r][@c];
844
+ if (homog(ideal(A)))
845
+ { for (i=1;i<=@r;i=i+1)
846
+ { for(j=1;j<=@c;j=j+1)
847
+ { degA[i,j]=ord(A[i,j]); }
848
+ }
849
+ }
850
+ setring br;
851
+ if (defined(nr)) { kill nr; }
852
+ return(degA);
853
+ }
854
+ ///////////////////////////////////////////////////////////////////////////////
855
+ proc homog_test(intvec w_vec, matrix Mo, matrix A)
856
+ "
857
+ Sub proc: return relative weight string of columns of A with respect
858
+ to the given w_vec and to Mo, or \"\" if not qh
859
+ NOTE: * means weight is not determined
860
+ "
861
+ {
862
+ int k,l;
863
+ intvec tv;
864
+ string @nv;
865
+ int @r = nrows(A);
866
+ int @c = ncols(A);
867
+ A = concat(matrix(ideal(Mo),@r,1),A);
868
+ intmat a = find_ord(A,w_vec);
869
+ intmat b[@r][@c];
870
+ for (l=1;l<=@c;l=l+1)
871
+ {
872
+ for (k=1;k<=@r;k=k+1)
873
+ { if (A[k,l+1]!=0)
874
+ { b[k,l] = a[k,l+1]-a[k,1];}
875
+ }
876
+ tv = 0;
877
+ for (k=1;k<=@r;k=k+1)
878
+ { if (A[k,l+1]*A[k,1]!=0)
879
+ {tv = tv,b[k,l];}
880
+ }
881
+ if (size(tv)>1)
882
+ { k = tv[2];
883
+ tv = tv[2..size(tv)];
884
+ tv = tv -k;
885
+ if (tv==0) { @nv = @nv+string(-k)+",";}
886
+ else {return("");}
887
+ }
888
+ else { @nv = @nv+"*,";}
889
+ }
890
+ @nv = @nv[1..size(@nv)-1];
891
+ return(@nv);
892
+ }
893
+ ///////////////////////////////////////////////////////////////////////////////
894
+ proc homog_t(intvec d_vec, matrix Fo, matrix A)
895
+ "
896
+ Sub-procedure: Computing relative (with respect to flatten(Fo)) weight_vec
897
+ of columns of A (return zero if Fo or A not qh)
898
+ "
899
+ {
900
+ Fo = matrix(Fo,nrows(A),1);
901
+ A = concat(Fo,A);
902
+ A = transpose(A);
903
+ def br = basering;
904
+ def nr=changeord(list(list("wp",d_vec)));
905
+ setring nr;
906
+ module A = fetch(br,A);
907
+ intvec dv;
908
+ int l = homog(A) ;
909
+ if (l==0)
910
+ {
911
+ setring br;
912
+ kill Top::nr;
913
+ if (defined(nr)) { kill nr; }
914
+ return(l);
915
+ }
916
+ dv = attrib(A,"isHomog");
917
+ l = dv[1];
918
+ dv = dv[2..size(dv)];
919
+ dv = dv-l;
920
+ setring br;
921
+ kill Top::nr;
922
+ if (defined(nr)) { kill nr; }
923
+ return(dv);
924
+ }
925
+ ///////////////////////////////////////////////////////////////////////////////