passagemath-singular 10.6.31rc3__cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of passagemath-singular might be problematic. Click here for more details.

Files changed (491) hide show
  1. PySingular.cpython-314-x86_64-linux-gnu.so +0 -0
  2. passagemath_singular-10.6.31rc3.dist-info/METADATA +183 -0
  3. passagemath_singular-10.6.31rc3.dist-info/RECORD +491 -0
  4. passagemath_singular-10.6.31rc3.dist-info/WHEEL +6 -0
  5. passagemath_singular-10.6.31rc3.dist-info/top_level.txt +3 -0
  6. passagemath_singular.libs/libSingular-4-20aec911.4.1.so +0 -0
  7. passagemath_singular.libs/libcddgmp-21acf0c6.so.0.1.3 +0 -0
  8. passagemath_singular.libs/libfactory-4-fcee31da.4.1.so +0 -0
  9. passagemath_singular.libs/libflint-66e12231.so.21.0.0 +0 -0
  10. passagemath_singular.libs/libgf2x-a4cdec90.so.3.0.0 +0 -0
  11. passagemath_singular.libs/libgfortran-83c28eba.so.5.0.0 +0 -0
  12. passagemath_singular.libs/libgmp-6e109695.so.10.5.0 +0 -0
  13. passagemath_singular.libs/libgsl-cda90e79.so.28.0.0 +0 -0
  14. passagemath_singular.libs/libmpfr-82690d50.so.6.2.1 +0 -0
  15. passagemath_singular.libs/libntl-e6f0d543.so.44.0.1 +0 -0
  16. passagemath_singular.libs/libomalloc-0-5c9e866e.9.6.so +0 -0
  17. passagemath_singular.libs/libopenblasp-r0-6dcb67f9.3.29.so +0 -0
  18. passagemath_singular.libs/libpolys-4-5c0a87e0.4.1.so +0 -0
  19. passagemath_singular.libs/libquadmath-2284e583.so.0.0.0 +0 -0
  20. passagemath_singular.libs/libreadline-ea270e21.so.8.2 +0 -0
  21. passagemath_singular.libs/libsingular_resources-4-a1aafc6d.4.1.so +0 -0
  22. passagemath_singular.libs/libtinfo-ceb117d9.so.6.3 +0 -0
  23. sage/algebras/all__sagemath_singular.py +3 -0
  24. sage/algebras/fusion_rings/all.py +19 -0
  25. sage/algebras/fusion_rings/f_matrix.py +2448 -0
  26. sage/algebras/fusion_rings/fast_parallel_fmats_methods.cpython-314-x86_64-linux-gnu.so +0 -0
  27. sage/algebras/fusion_rings/fast_parallel_fmats_methods.pxd +5 -0
  28. sage/algebras/fusion_rings/fast_parallel_fmats_methods.pyx +538 -0
  29. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.cpython-314-x86_64-linux-gnu.so +0 -0
  30. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pxd +3 -0
  31. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pyx +331 -0
  32. sage/algebras/fusion_rings/fusion_double.py +899 -0
  33. sage/algebras/fusion_rings/fusion_ring.py +1580 -0
  34. sage/algebras/fusion_rings/poly_tup_engine.cpython-314-x86_64-linux-gnu.so +0 -0
  35. sage/algebras/fusion_rings/poly_tup_engine.pxd +24 -0
  36. sage/algebras/fusion_rings/poly_tup_engine.pyx +579 -0
  37. sage/algebras/fusion_rings/shm_managers.cpython-314-x86_64-linux-gnu.so +0 -0
  38. sage/algebras/fusion_rings/shm_managers.pxd +24 -0
  39. sage/algebras/fusion_rings/shm_managers.pyx +780 -0
  40. sage/algebras/letterplace/all.py +1 -0
  41. sage/algebras/letterplace/free_algebra_element_letterplace.cpython-314-x86_64-linux-gnu.so +0 -0
  42. sage/algebras/letterplace/free_algebra_element_letterplace.pxd +18 -0
  43. sage/algebras/letterplace/free_algebra_element_letterplace.pyx +755 -0
  44. sage/algebras/letterplace/free_algebra_letterplace.cpython-314-x86_64-linux-gnu.so +0 -0
  45. sage/algebras/letterplace/free_algebra_letterplace.pxd +35 -0
  46. sage/algebras/letterplace/free_algebra_letterplace.pyx +914 -0
  47. sage/algebras/letterplace/letterplace_ideal.cpython-314-x86_64-linux-gnu.so +0 -0
  48. sage/algebras/letterplace/letterplace_ideal.pyx +408 -0
  49. sage/algebras/quatalg/all.py +2 -0
  50. sage/algebras/quatalg/quaternion_algebra.py +4778 -0
  51. sage/algebras/quatalg/quaternion_algebra_cython.cpython-314-x86_64-linux-gnu.so +0 -0
  52. sage/algebras/quatalg/quaternion_algebra_cython.pyx +261 -0
  53. sage/algebras/quatalg/quaternion_algebra_element.cpython-314-x86_64-linux-gnu.so +0 -0
  54. sage/algebras/quatalg/quaternion_algebra_element.pxd +29 -0
  55. sage/algebras/quatalg/quaternion_algebra_element.pyx +2176 -0
  56. sage/all__sagemath_singular.py +11 -0
  57. sage/ext_data/all__sagemath_singular.py +1 -0
  58. sage/ext_data/singular/function_field/core.lib +98 -0
  59. sage/interfaces/all__sagemath_singular.py +1 -0
  60. sage/interfaces/singular.py +2835 -0
  61. sage/libs/all__sagemath_singular.py +1 -0
  62. sage/libs/singular/__init__.py +1 -0
  63. sage/libs/singular/decl.pxd +1168 -0
  64. sage/libs/singular/function.cpython-314-x86_64-linux-gnu.so +0 -0
  65. sage/libs/singular/function.pxd +87 -0
  66. sage/libs/singular/function.pyx +1901 -0
  67. sage/libs/singular/function_factory.py +61 -0
  68. sage/libs/singular/groebner_strategy.cpython-314-x86_64-linux-gnu.so +0 -0
  69. sage/libs/singular/groebner_strategy.pxd +22 -0
  70. sage/libs/singular/groebner_strategy.pyx +582 -0
  71. sage/libs/singular/option.cpython-314-x86_64-linux-gnu.so +0 -0
  72. sage/libs/singular/option.pyx +671 -0
  73. sage/libs/singular/polynomial.cpython-314-x86_64-linux-gnu.so +0 -0
  74. sage/libs/singular/polynomial.pxd +39 -0
  75. sage/libs/singular/polynomial.pyx +661 -0
  76. sage/libs/singular/ring.cpython-314-x86_64-linux-gnu.so +0 -0
  77. sage/libs/singular/ring.pxd +58 -0
  78. sage/libs/singular/ring.pyx +893 -0
  79. sage/libs/singular/singular.cpython-314-x86_64-linux-gnu.so +0 -0
  80. sage/libs/singular/singular.pxd +72 -0
  81. sage/libs/singular/singular.pyx +1944 -0
  82. sage/libs/singular/standard_options.py +145 -0
  83. sage/matrix/all__sagemath_singular.py +1 -0
  84. sage/matrix/matrix_mpolynomial_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  85. sage/matrix/matrix_mpolynomial_dense.pxd +7 -0
  86. sage/matrix/matrix_mpolynomial_dense.pyx +615 -0
  87. sage/rings/all__sagemath_singular.py +1 -0
  88. sage/rings/function_field/all__sagemath_singular.py +1 -0
  89. sage/rings/function_field/derivations_polymod.py +911 -0
  90. sage/rings/function_field/element_polymod.cpython-314-x86_64-linux-gnu.so +0 -0
  91. sage/rings/function_field/element_polymod.pyx +406 -0
  92. sage/rings/function_field/function_field_polymod.py +2611 -0
  93. sage/rings/function_field/ideal_polymod.py +1775 -0
  94. sage/rings/function_field/order_polymod.py +1475 -0
  95. sage/rings/function_field/place_polymod.py +681 -0
  96. sage/rings/polynomial/all__sagemath_singular.py +1 -0
  97. sage/rings/polynomial/multi_polynomial_ideal_libsingular.cpython-314-x86_64-linux-gnu.so +0 -0
  98. sage/rings/polynomial/multi_polynomial_ideal_libsingular.pxd +5 -0
  99. sage/rings/polynomial/multi_polynomial_ideal_libsingular.pyx +339 -0
  100. sage/rings/polynomial/multi_polynomial_libsingular.cpython-314-x86_64-linux-gnu.so +0 -0
  101. sage/rings/polynomial/multi_polynomial_libsingular.pxd +30 -0
  102. sage/rings/polynomial/multi_polynomial_libsingular.pyx +6277 -0
  103. sage/rings/polynomial/plural.cpython-314-x86_64-linux-gnu.so +0 -0
  104. sage/rings/polynomial/plural.pxd +48 -0
  105. sage/rings/polynomial/plural.pyx +3171 -0
  106. sage/symbolic/all__sagemath_singular.py +1 -0
  107. sage/symbolic/comparison_impl.pxi +428 -0
  108. sage/symbolic/constants_c_impl.pxi +178 -0
  109. sage/symbolic/expression.cpython-314-x86_64-linux-gnu.so +0 -0
  110. sage/symbolic/expression.pxd +7 -0
  111. sage/symbolic/expression.pyx +14200 -0
  112. sage/symbolic/getitem_impl.pxi +202 -0
  113. sage/symbolic/pynac.pxi +572 -0
  114. sage/symbolic/pynac_constant_impl.pxi +133 -0
  115. sage/symbolic/pynac_function_impl.pxi +206 -0
  116. sage/symbolic/pynac_impl.pxi +2576 -0
  117. sage/symbolic/pynac_wrap.h +124 -0
  118. sage/symbolic/series_impl.pxi +272 -0
  119. sage/symbolic/substitution_map_impl.pxi +94 -0
  120. sage_wheels/bin/ESingular +0 -0
  121. sage_wheels/bin/Singular +0 -0
  122. sage_wheels/bin/TSingular +0 -0
  123. sage_wheels/lib/singular/MOD/cohomo.la +41 -0
  124. sage_wheels/lib/singular/MOD/cohomo.so +0 -0
  125. sage_wheels/lib/singular/MOD/customstd.la +41 -0
  126. sage_wheels/lib/singular/MOD/customstd.so +0 -0
  127. sage_wheels/lib/singular/MOD/freealgebra.la +41 -0
  128. sage_wheels/lib/singular/MOD/freealgebra.so +0 -0
  129. sage_wheels/lib/singular/MOD/gfanlib.la +41 -0
  130. sage_wheels/lib/singular/MOD/gfanlib.so +0 -0
  131. sage_wheels/lib/singular/MOD/gitfan.la +41 -0
  132. sage_wheels/lib/singular/MOD/gitfan.so +0 -0
  133. sage_wheels/lib/singular/MOD/interval.la +41 -0
  134. sage_wheels/lib/singular/MOD/interval.so +0 -0
  135. sage_wheels/lib/singular/MOD/loctriv.la +41 -0
  136. sage_wheels/lib/singular/MOD/loctriv.so +0 -0
  137. sage_wheels/lib/singular/MOD/machinelearning.la +41 -0
  138. sage_wheels/lib/singular/MOD/machinelearning.so +0 -0
  139. sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.la +41 -0
  140. sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.so +0 -0
  141. sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.la +41 -0
  142. sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.so +0 -0
  143. sage_wheels/lib/singular/MOD/p_Procs_FieldQ.la +41 -0
  144. sage_wheels/lib/singular/MOD/p_Procs_FieldQ.so +0 -0
  145. sage_wheels/lib/singular/MOD/p_Procs_FieldZp.la +41 -0
  146. sage_wheels/lib/singular/MOD/p_Procs_FieldZp.so +0 -0
  147. sage_wheels/lib/singular/MOD/partialgb.la +41 -0
  148. sage_wheels/lib/singular/MOD/partialgb.so +0 -0
  149. sage_wheels/lib/singular/MOD/pyobject.la +41 -0
  150. sage_wheels/lib/singular/MOD/pyobject.so +0 -0
  151. sage_wheels/lib/singular/MOD/singmathic.la +41 -0
  152. sage_wheels/lib/singular/MOD/singmathic.so +0 -0
  153. sage_wheels/lib/singular/MOD/sispasm.la +41 -0
  154. sage_wheels/lib/singular/MOD/sispasm.so +0 -0
  155. sage_wheels/lib/singular/MOD/subsets.la +41 -0
  156. sage_wheels/lib/singular/MOD/subsets.so +0 -0
  157. sage_wheels/lib/singular/MOD/systhreads.la +41 -0
  158. sage_wheels/lib/singular/MOD/systhreads.so +0 -0
  159. sage_wheels/lib/singular/MOD/syzextra.la +41 -0
  160. sage_wheels/lib/singular/MOD/syzextra.so +0 -0
  161. sage_wheels/libexec/singular/MOD/change_cost +0 -0
  162. sage_wheels/libexec/singular/MOD/singularsurf +11 -0
  163. sage_wheels/libexec/singular/MOD/singularsurf_jupyter +9 -0
  164. sage_wheels/libexec/singular/MOD/singularsurf_win +10 -0
  165. sage_wheels/libexec/singular/MOD/solve_IP +0 -0
  166. sage_wheels/libexec/singular/MOD/surfex +16 -0
  167. sage_wheels/libexec/singular/MOD/toric_ideal +0 -0
  168. sage_wheels/share/factory/gftables/10201 +342 -0
  169. sage_wheels/share/factory/gftables/1024 +37 -0
  170. sage_wheels/share/factory/gftables/10609 +356 -0
  171. sage_wheels/share/factory/gftables/11449 +384 -0
  172. sage_wheels/share/factory/gftables/11881 +398 -0
  173. sage_wheels/share/factory/gftables/121 +6 -0
  174. sage_wheels/share/factory/gftables/12167 +408 -0
  175. sage_wheels/share/factory/gftables/125 +7 -0
  176. sage_wheels/share/factory/gftables/12769 +428 -0
  177. sage_wheels/share/factory/gftables/128 +7 -0
  178. sage_wheels/share/factory/gftables/1331 +47 -0
  179. sage_wheels/share/factory/gftables/1369 +48 -0
  180. sage_wheels/share/factory/gftables/14641 +490 -0
  181. sage_wheels/share/factory/gftables/15625 +523 -0
  182. sage_wheels/share/factory/gftables/16 +3 -0
  183. sage_wheels/share/factory/gftables/16129 +540 -0
  184. sage_wheels/share/factory/gftables/16384 +549 -0
  185. sage_wheels/share/factory/gftables/16807 +563 -0
  186. sage_wheels/share/factory/gftables/1681 +58 -0
  187. sage_wheels/share/factory/gftables/169 +8 -0
  188. sage_wheels/share/factory/gftables/17161 +574 -0
  189. sage_wheels/share/factory/gftables/1849 +64 -0
  190. sage_wheels/share/factory/gftables/18769 +628 -0
  191. sage_wheels/share/factory/gftables/19321 +646 -0
  192. sage_wheels/share/factory/gftables/19683 +659 -0
  193. sage_wheels/share/factory/gftables/2048 +71 -0
  194. sage_wheels/share/factory/gftables/2187 +75 -0
  195. sage_wheels/share/factory/gftables/2197 +76 -0
  196. sage_wheels/share/factory/gftables/2209 +76 -0
  197. sage_wheels/share/factory/gftables/22201 +742 -0
  198. sage_wheels/share/factory/gftables/22801 +762 -0
  199. sage_wheels/share/factory/gftables/2401 +82 -0
  200. sage_wheels/share/factory/gftables/243 +11 -0
  201. sage_wheels/share/factory/gftables/24389 +815 -0
  202. sage_wheels/share/factory/gftables/24649 +824 -0
  203. sage_wheels/share/factory/gftables/25 +3 -0
  204. sage_wheels/share/factory/gftables/256 +11 -0
  205. sage_wheels/share/factory/gftables/26569 +888 -0
  206. sage_wheels/share/factory/gftables/27 +3 -0
  207. sage_wheels/share/factory/gftables/27889 +932 -0
  208. sage_wheels/share/factory/gftables/2809 +96 -0
  209. sage_wheels/share/factory/gftables/28561 +954 -0
  210. sage_wheels/share/factory/gftables/289 +12 -0
  211. sage_wheels/share/factory/gftables/29791 +995 -0
  212. sage_wheels/share/factory/gftables/29929 +1000 -0
  213. sage_wheels/share/factory/gftables/3125 +107 -0
  214. sage_wheels/share/factory/gftables/32 +4 -0
  215. sage_wheels/share/factory/gftables/32041 +1070 -0
  216. sage_wheels/share/factory/gftables/32761 +1094 -0
  217. sage_wheels/share/factory/gftables/32768 +1095 -0
  218. sage_wheels/share/factory/gftables/343 +14 -0
  219. sage_wheels/share/factory/gftables/3481 +118 -0
  220. sage_wheels/share/factory/gftables/361 +14 -0
  221. sage_wheels/share/factory/gftables/36481 +1218 -0
  222. sage_wheels/share/factory/gftables/3721 +126 -0
  223. sage_wheels/share/factory/gftables/37249 +1244 -0
  224. sage_wheels/share/factory/gftables/38809 +1296 -0
  225. sage_wheels/share/factory/gftables/39601 +1322 -0
  226. sage_wheels/share/factory/gftables/4 +3 -0
  227. sage_wheels/share/factory/gftables/4096 +139 -0
  228. sage_wheels/share/factory/gftables/44521 +1486 -0
  229. sage_wheels/share/factory/gftables/4489 +152 -0
  230. sage_wheels/share/factory/gftables/49 +4 -0
  231. sage_wheels/share/factory/gftables/4913 +166 -0
  232. sage_wheels/share/factory/gftables/49729 +1660 -0
  233. sage_wheels/share/factory/gftables/5041 +170 -0
  234. sage_wheels/share/factory/gftables/50653 +1691 -0
  235. sage_wheels/share/factory/gftables/512 +20 -0
  236. sage_wheels/share/factory/gftables/51529 +1720 -0
  237. sage_wheels/share/factory/gftables/52441 +1750 -0
  238. sage_wheels/share/factory/gftables/529 +20 -0
  239. sage_wheels/share/factory/gftables/5329 +180 -0
  240. sage_wheels/share/factory/gftables/54289 +1812 -0
  241. sage_wheels/share/factory/gftables/57121 +1906 -0
  242. sage_wheels/share/factory/gftables/58081 +1938 -0
  243. sage_wheels/share/factory/gftables/59049 +1971 -0
  244. sage_wheels/share/factory/gftables/6241 +210 -0
  245. sage_wheels/share/factory/gftables/625 +23 -0
  246. sage_wheels/share/factory/gftables/63001 +2102 -0
  247. sage_wheels/share/factory/gftables/64 +5 -0
  248. sage_wheels/share/factory/gftables/6561 +221 -0
  249. sage_wheels/share/factory/gftables/6859 +231 -0
  250. sage_wheels/share/factory/gftables/6889 +232 -0
  251. sage_wheels/share/factory/gftables/729 +27 -0
  252. sage_wheels/share/factory/gftables/7921 +266 -0
  253. sage_wheels/share/factory/gftables/8 +3 -0
  254. sage_wheels/share/factory/gftables/81 +5 -0
  255. sage_wheels/share/factory/gftables/8192 +276 -0
  256. sage_wheels/share/factory/gftables/841 +30 -0
  257. sage_wheels/share/factory/gftables/9 +3 -0
  258. sage_wheels/share/factory/gftables/9409 +316 -0
  259. sage_wheels/share/factory/gftables/961 +34 -0
  260. sage_wheels/share/info/singular.info +191898 -0
  261. sage_wheels/share/singular/LIB/GND.lib +1359 -0
  262. sage_wheels/share/singular/LIB/JMBTest.lib +976 -0
  263. sage_wheels/share/singular/LIB/JMSConst.lib +1363 -0
  264. sage_wheels/share/singular/LIB/KVequiv.lib +699 -0
  265. sage_wheels/share/singular/LIB/SingularityDBM.lib +491 -0
  266. sage_wheels/share/singular/LIB/VecField.lib +1542 -0
  267. sage_wheels/share/singular/LIB/absfact.lib +959 -0
  268. sage_wheels/share/singular/LIB/ainvar.lib +730 -0
  269. sage_wheels/share/singular/LIB/aksaka.lib +419 -0
  270. sage_wheels/share/singular/LIB/alexpoly.lib +2542 -0
  271. sage_wheels/share/singular/LIB/algebra.lib +1193 -0
  272. sage_wheels/share/singular/LIB/all.lib +136 -0
  273. sage_wheels/share/singular/LIB/arcpoint.lib +514 -0
  274. sage_wheels/share/singular/LIB/arnold.lib +4553 -0
  275. sage_wheels/share/singular/LIB/arnoldclassify.lib +2058 -0
  276. sage_wheels/share/singular/LIB/arr.lib +3486 -0
  277. sage_wheels/share/singular/LIB/assprimeszerodim.lib +755 -0
  278. sage_wheels/share/singular/LIB/autgradalg.lib +3361 -0
  279. sage_wheels/share/singular/LIB/bfun.lib +1964 -0
  280. sage_wheels/share/singular/LIB/bimodules.lib +774 -0
  281. sage_wheels/share/singular/LIB/brillnoether.lib +226 -0
  282. sage_wheels/share/singular/LIB/brnoeth.lib +5017 -0
  283. sage_wheels/share/singular/LIB/central.lib +2169 -0
  284. sage_wheels/share/singular/LIB/chern.lib +4162 -0
  285. sage_wheels/share/singular/LIB/cimonom.lib +571 -0
  286. sage_wheels/share/singular/LIB/cisimplicial.lib +1835 -0
  287. sage_wheels/share/singular/LIB/classify.lib +3239 -0
  288. sage_wheels/share/singular/LIB/classify2.lib +1462 -0
  289. sage_wheels/share/singular/LIB/classifyMapGerms.lib +1515 -0
  290. sage_wheels/share/singular/LIB/classify_aeq.lib +3253 -0
  291. sage_wheels/share/singular/LIB/classifyceq.lib +2092 -0
  292. sage_wheels/share/singular/LIB/classifyci.lib +1133 -0
  293. sage_wheels/share/singular/LIB/combinat.lib +91 -0
  294. sage_wheels/share/singular/LIB/compregb.lib +276 -0
  295. sage_wheels/share/singular/LIB/control.lib +1636 -0
  296. sage_wheels/share/singular/LIB/crypto.lib +3795 -0
  297. sage_wheels/share/singular/LIB/curveInv.lib +667 -0
  298. sage_wheels/share/singular/LIB/curvepar.lib +1817 -0
  299. sage_wheels/share/singular/LIB/customstd.lib +100 -0
  300. sage_wheels/share/singular/LIB/deRham.lib +5979 -0
  301. sage_wheels/share/singular/LIB/decodegb.lib +2134 -0
  302. sage_wheels/share/singular/LIB/decomp.lib +1655 -0
  303. sage_wheels/share/singular/LIB/deflation.lib +872 -0
  304. sage_wheels/share/singular/LIB/deform.lib +925 -0
  305. sage_wheels/share/singular/LIB/difform.lib +3055 -0
  306. sage_wheels/share/singular/LIB/divisors.lib +750 -0
  307. sage_wheels/share/singular/LIB/dmod.lib +5817 -0
  308. sage_wheels/share/singular/LIB/dmodapp.lib +3269 -0
  309. sage_wheels/share/singular/LIB/dmodideal.lib +1211 -0
  310. sage_wheels/share/singular/LIB/dmodloc.lib +2645 -0
  311. sage_wheels/share/singular/LIB/dmodvar.lib +818 -0
  312. sage_wheels/share/singular/LIB/dummy.lib +17 -0
  313. sage_wheels/share/singular/LIB/elim.lib +1009 -0
  314. sage_wheels/share/singular/LIB/ellipticcovers.lib +548 -0
  315. sage_wheels/share/singular/LIB/enumpoints.lib +146 -0
  316. sage_wheels/share/singular/LIB/equising.lib +2127 -0
  317. sage_wheels/share/singular/LIB/ffmodstd.lib +2384 -0
  318. sage_wheels/share/singular/LIB/ffsolve.lib +1289 -0
  319. sage_wheels/share/singular/LIB/findifs.lib +778 -0
  320. sage_wheels/share/singular/LIB/finitediff.lib +1768 -0
  321. sage_wheels/share/singular/LIB/finvar.lib +7989 -0
  322. sage_wheels/share/singular/LIB/fpadim.lib +2429 -0
  323. sage_wheels/share/singular/LIB/fpalgebras.lib +1666 -0
  324. sage_wheels/share/singular/LIB/fpaprops.lib +1462 -0
  325. sage_wheels/share/singular/LIB/freegb.lib +3853 -0
  326. sage_wheels/share/singular/LIB/general.lib +1350 -0
  327. sage_wheels/share/singular/LIB/gfan.lib +1768 -0
  328. sage_wheels/share/singular/LIB/gitfan.lib +3130 -0
  329. sage_wheels/share/singular/LIB/gkdim.lib +99 -0
  330. sage_wheels/share/singular/LIB/gmspoly.lib +589 -0
  331. sage_wheels/share/singular/LIB/gmssing.lib +1739 -0
  332. sage_wheels/share/singular/LIB/goettsche.lib +909 -0
  333. sage_wheels/share/singular/LIB/graal.lib +1366 -0
  334. sage_wheels/share/singular/LIB/gradedModules.lib +2541 -0
  335. sage_wheels/share/singular/LIB/graphics.lib +360 -0
  336. sage_wheels/share/singular/LIB/grobcov.lib +7706 -0
  337. sage_wheels/share/singular/LIB/groups.lib +1123 -0
  338. sage_wheels/share/singular/LIB/grwalk.lib +507 -0
  339. sage_wheels/share/singular/LIB/hdepth.lib +194 -0
  340. sage_wheels/share/singular/LIB/help.cnf +57 -0
  341. sage_wheels/share/singular/LIB/hess.lib +1946 -0
  342. sage_wheels/share/singular/LIB/hnoether.lib +4292 -0
  343. sage_wheels/share/singular/LIB/hodge.lib +400 -0
  344. sage_wheels/share/singular/LIB/homolog.lib +1965 -0
  345. sage_wheels/share/singular/LIB/hyperel.lib +975 -0
  346. sage_wheels/share/singular/LIB/inout.lib +679 -0
  347. sage_wheels/share/singular/LIB/integralbasis.lib +6224 -0
  348. sage_wheels/share/singular/LIB/interval.lib +1418 -0
  349. sage_wheels/share/singular/LIB/intprog.lib +778 -0
  350. sage_wheels/share/singular/LIB/invar.lib +443 -0
  351. sage_wheels/share/singular/LIB/involut.lib +980 -0
  352. sage_wheels/share/singular/LIB/jacobson.lib +1215 -0
  353. sage_wheels/share/singular/LIB/kskernel.lib +534 -0
  354. sage_wheels/share/singular/LIB/latex.lib +3146 -0
  355. sage_wheels/share/singular/LIB/lejeune.lib +651 -0
  356. sage_wheels/share/singular/LIB/linalg.lib +2040 -0
  357. sage_wheels/share/singular/LIB/locnormal.lib +212 -0
  358. sage_wheels/share/singular/LIB/lrcalc.lib +526 -0
  359. sage_wheels/share/singular/LIB/makedbm.lib +294 -0
  360. sage_wheels/share/singular/LIB/mathml.lib +813 -0
  361. sage_wheels/share/singular/LIB/matrix.lib +1372 -0
  362. sage_wheels/share/singular/LIB/maxlike.lib +1132 -0
  363. sage_wheels/share/singular/LIB/methods.lib +212 -0
  364. sage_wheels/share/singular/LIB/moddiq.lib +322 -0
  365. sage_wheels/share/singular/LIB/modfinduni.lib +181 -0
  366. sage_wheels/share/singular/LIB/modnormal.lib +218 -0
  367. sage_wheels/share/singular/LIB/modprimdec.lib +1278 -0
  368. sage_wheels/share/singular/LIB/modquotient.lib +269 -0
  369. sage_wheels/share/singular/LIB/modstd.lib +1024 -0
  370. sage_wheels/share/singular/LIB/modular.lib +545 -0
  371. sage_wheels/share/singular/LIB/modules.lib +2561 -0
  372. sage_wheels/share/singular/LIB/modwalk.lib +609 -0
  373. sage_wheels/share/singular/LIB/mondromy.lib +1016 -0
  374. sage_wheels/share/singular/LIB/monomialideal.lib +3851 -0
  375. sage_wheels/share/singular/LIB/mprimdec.lib +2353 -0
  376. sage_wheels/share/singular/LIB/mregular.lib +1863 -0
  377. sage_wheels/share/singular/LIB/multigrading.lib +5629 -0
  378. sage_wheels/share/singular/LIB/ncHilb.lib +777 -0
  379. sage_wheels/share/singular/LIB/ncModslimgb.lib +791 -0
  380. sage_wheels/share/singular/LIB/ncalg.lib +16311 -0
  381. sage_wheels/share/singular/LIB/ncall.lib +31 -0
  382. sage_wheels/share/singular/LIB/ncdecomp.lib +468 -0
  383. sage_wheels/share/singular/LIB/ncfactor.lib +13371 -0
  384. sage_wheels/share/singular/LIB/ncfrac.lib +1023 -0
  385. sage_wheels/share/singular/LIB/nchilbert.lib +448 -0
  386. sage_wheels/share/singular/LIB/nchomolog.lib +759 -0
  387. sage_wheels/share/singular/LIB/ncloc.lib +361 -0
  388. sage_wheels/share/singular/LIB/ncpreim.lib +795 -0
  389. sage_wheels/share/singular/LIB/ncrat.lib +2849 -0
  390. sage_wheels/share/singular/LIB/nctools.lib +1887 -0
  391. sage_wheels/share/singular/LIB/nets.lib +1456 -0
  392. sage_wheels/share/singular/LIB/nfmodstd.lib +1000 -0
  393. sage_wheels/share/singular/LIB/nfmodsyz.lib +732 -0
  394. sage_wheels/share/singular/LIB/noether.lib +1106 -0
  395. sage_wheels/share/singular/LIB/normal.lib +8700 -0
  396. sage_wheels/share/singular/LIB/normaliz.lib +2226 -0
  397. sage_wheels/share/singular/LIB/ntsolve.lib +362 -0
  398. sage_wheels/share/singular/LIB/numerAlg.lib +560 -0
  399. sage_wheels/share/singular/LIB/numerDecom.lib +2261 -0
  400. sage_wheels/share/singular/LIB/olga.lib +1933 -0
  401. sage_wheels/share/singular/LIB/orbitparam.lib +351 -0
  402. sage_wheels/share/singular/LIB/parallel.lib +319 -0
  403. sage_wheels/share/singular/LIB/paraplanecurves.lib +3110 -0
  404. sage_wheels/share/singular/LIB/perron.lib +202 -0
  405. sage_wheels/share/singular/LIB/pfd.lib +2223 -0
  406. sage_wheels/share/singular/LIB/phindex.lib +642 -0
  407. sage_wheels/share/singular/LIB/pointid.lib +673 -0
  408. sage_wheels/share/singular/LIB/polybori.lib +1430 -0
  409. sage_wheels/share/singular/LIB/polyclass.lib +525 -0
  410. sage_wheels/share/singular/LIB/polylib.lib +1174 -0
  411. sage_wheels/share/singular/LIB/polymake.lib +1902 -0
  412. sage_wheels/share/singular/LIB/presolve.lib +1533 -0
  413. sage_wheels/share/singular/LIB/primdec.lib +9576 -0
  414. sage_wheels/share/singular/LIB/primdecint.lib +1782 -0
  415. sage_wheels/share/singular/LIB/primitiv.lib +401 -0
  416. sage_wheels/share/singular/LIB/puiseuxexpansions.lib +1631 -0
  417. sage_wheels/share/singular/LIB/purityfiltration.lib +960 -0
  418. sage_wheels/share/singular/LIB/qhmoduli.lib +1561 -0
  419. sage_wheels/share/singular/LIB/qmatrix.lib +293 -0
  420. sage_wheels/share/singular/LIB/random.lib +455 -0
  421. sage_wheels/share/singular/LIB/ratgb.lib +489 -0
  422. sage_wheels/share/singular/LIB/realclassify.lib +5759 -0
  423. sage_wheels/share/singular/LIB/realizationMatroids.lib +772 -0
  424. sage_wheels/share/singular/LIB/realrad.lib +1197 -0
  425. sage_wheels/share/singular/LIB/recover.lib +2628 -0
  426. sage_wheels/share/singular/LIB/redcgs.lib +3984 -0
  427. sage_wheels/share/singular/LIB/reesclos.lib +465 -0
  428. sage_wheels/share/singular/LIB/resbinomial.lib +2802 -0
  429. sage_wheels/share/singular/LIB/resgraph.lib +789 -0
  430. sage_wheels/share/singular/LIB/resjung.lib +820 -0
  431. sage_wheels/share/singular/LIB/resolve.lib +5110 -0
  432. sage_wheels/share/singular/LIB/resources.lib +170 -0
  433. sage_wheels/share/singular/LIB/reszeta.lib +5473 -0
  434. sage_wheels/share/singular/LIB/ring.lib +1328 -0
  435. sage_wheels/share/singular/LIB/ringgb.lib +343 -0
  436. sage_wheels/share/singular/LIB/rinvar.lib +1153 -0
  437. sage_wheels/share/singular/LIB/rootisolation.lib +1481 -0
  438. sage_wheels/share/singular/LIB/rootsmr.lib +709 -0
  439. sage_wheels/share/singular/LIB/rootsur.lib +886 -0
  440. sage_wheels/share/singular/LIB/rstandard.lib +607 -0
  441. sage_wheels/share/singular/LIB/rwalk.lib +336 -0
  442. sage_wheels/share/singular/LIB/sagbi.lib +1353 -0
  443. sage_wheels/share/singular/LIB/sagbiNormaliz.lib +1622 -0
  444. sage_wheels/share/singular/LIB/sagbiNormaliz0.lib +1498 -0
  445. sage_wheels/share/singular/LIB/sagbigrob.lib +449 -0
  446. sage_wheels/share/singular/LIB/schreyer.lib +321 -0
  447. sage_wheels/share/singular/LIB/schubert.lib +2551 -0
  448. sage_wheels/share/singular/LIB/sets.lib +524 -0
  449. sage_wheels/share/singular/LIB/sheafcoh.lib +1663 -0
  450. sage_wheels/share/singular/LIB/signcond.lib +437 -0
  451. sage_wheels/share/singular/LIB/sing.lib +1094 -0
  452. sage_wheels/share/singular/LIB/sing4ti2.lib +419 -0
  453. sage_wheels/share/singular/LIB/solve.lib +2243 -0
  454. sage_wheels/share/singular/LIB/spcurve.lib +1077 -0
  455. sage_wheels/share/singular/LIB/spectrum.lib +62 -0
  456. sage_wheels/share/singular/LIB/sresext.lib +757 -0
  457. sage_wheels/share/singular/LIB/ssi.lib +143 -0
  458. sage_wheels/share/singular/LIB/standard.lib +2769 -0
  459. sage_wheels/share/singular/LIB/stanleyreisner.lib +473 -0
  460. sage_wheels/share/singular/LIB/stdmodule.lib +547 -0
  461. sage_wheels/share/singular/LIB/stratify.lib +1070 -0
  462. sage_wheels/share/singular/LIB/surf.lib +506 -0
  463. sage_wheels/share/singular/LIB/surf_jupyter.lib +223 -0
  464. sage_wheels/share/singular/LIB/surfacesignature.lib +522 -0
  465. sage_wheels/share/singular/LIB/surfex.lib +1462 -0
  466. sage_wheels/share/singular/LIB/swalk.lib +877 -0
  467. sage_wheels/share/singular/LIB/symodstd.lib +1570 -0
  468. sage_wheels/share/singular/LIB/systhreads.lib +74 -0
  469. sage_wheels/share/singular/LIB/tasks.lib +1324 -0
  470. sage_wheels/share/singular/LIB/tateProdCplxNegGrad.lib +2412 -0
  471. sage_wheels/share/singular/LIB/teachstd.lib +858 -0
  472. sage_wheels/share/singular/LIB/template.lib +116 -0
  473. sage_wheels/share/singular/LIB/toric.lib +1119 -0
  474. sage_wheels/share/singular/LIB/transformation.lib +116 -0
  475. sage_wheels/share/singular/LIB/triang.lib +1197 -0
  476. sage_wheels/share/singular/LIB/tropical.lib +8741 -0
  477. sage_wheels/share/singular/LIB/tropicalEllipticCovers.lib +2922 -0
  478. sage_wheels/share/singular/LIB/tropicalNewton.lib +1128 -0
  479. sage_wheels/share/singular/LIB/tst.lib +1108 -0
  480. sage_wheels/share/singular/LIB/weierstr.lib +241 -0
  481. sage_wheels/share/singular/LIB/zeroset.lib +1478 -0
  482. sage_wheels/share/singular/emacs/.emacs-general +184 -0
  483. sage_wheels/share/singular/emacs/.emacs-singular +234 -0
  484. sage_wheels/share/singular/emacs/COPYING +44 -0
  485. sage_wheels/share/singular/emacs/cmd-cmpl.el +241 -0
  486. sage_wheels/share/singular/emacs/ex-cmpl.el +1681 -0
  487. sage_wheels/share/singular/emacs/hlp-cmpl.el +4318 -0
  488. sage_wheels/share/singular/emacs/lib-cmpl.el +179 -0
  489. sage_wheels/share/singular/emacs/singular.el +4273 -0
  490. sage_wheels/share/singular/emacs/singular.xpm +39 -0
  491. sage_wheels/share/singular/singular.idx +5002 -0
@@ -0,0 +1,1016 @@
1
+ //////////////////////////////////////////////////////////////////////////////
2
+ version="version mondromy.lib 4.1.2.0 Feb_2019 "; // $Id: aaa46c06e98fe751ce0236b11f16037fa22ee6d7 $
3
+ category="Singularities";
4
+ info="
5
+ LIBRARY: mondromy.lib Monodromy of an Isolated Hypersurface Singularity
6
+ AUTHOR: Mathias Schulze, email: mschulze@mathematik.uni-kl.de
7
+
8
+ OVERVIEW:
9
+ A library to compute the monodromy of an isolated hypersurface singularity.
10
+ It uses an algorithm by Brieskorn (manuscripta math. 2 (1970), 103-161) to
11
+ compute a connection matrix of the meromorphic Gauss-Manin connection up to
12
+ arbitrarily high order, and an algorithm of Gerard and Levelt (Ann. Inst.
13
+ Fourier, Grenoble 23,1 (1973), pp. 157-195) to transform it to a simple pole.
14
+
15
+ PROCEDURES:
16
+ detadj(U); determinant and adjoint matrix of square matrix U
17
+ invunit(u,n); series inverse of polynomial u up to order n
18
+ jacoblift(f); lifts f^kappa in jacob(f) with minimal kappa
19
+ monodromyB(f[,opt]); monodromy of isolated hypersurface singularity f
20
+ H2basis(f); basis of Brieskorn lattice H''
21
+
22
+ KEYWORDS: Monodromy; hypersurface singularity; Gauss-Manin connection;
23
+ Brieskorn lattice
24
+
25
+ SEE ALSO: gmspoly_lib, gmssing_lib
26
+ ";
27
+
28
+ LIB "ring.lib";
29
+ LIB "sing.lib";
30
+ LIB "linalg.lib";
31
+
32
+ ///////////////////////////////////////////////////////////////////////////////
33
+
34
+ static proc pcvladdl(list l1,list l2)
35
+ {
36
+ return(system("pcvLAddL",l1,l2));
37
+ }
38
+
39
+ static proc pcvpmull(poly p,list l)
40
+ {
41
+ return(system("pcvPMulL",p,l));
42
+ }
43
+
44
+ static proc pcvmindeg(list #)
45
+ {
46
+ return(system("pcvMinDeg",#[1]));
47
+ }
48
+
49
+ static proc pcvp2cv(list l,int i0,int i1)
50
+ {
51
+ return(system("pcvP2CV",l,i0,i1));
52
+ }
53
+
54
+ static proc pcvcv2p(list l,int i0,int i1)
55
+ {
56
+ return(system("pcvCV2P",l,i0,i1));
57
+ }
58
+
59
+ static proc pcvdim(int i0,int i1)
60
+ {
61
+ return(system("pcvDim",i0,i1));
62
+ }
63
+
64
+ static proc pcvbasis(int i0,int i1)
65
+ {
66
+ return(system("pcvBasis",i0,i1));
67
+ }
68
+
69
+ ///////////////////////////////////////////////////////////////////////////////
70
+
71
+ static proc min(intvec v)
72
+ {
73
+ int m=v[1];
74
+ int i;
75
+ for(i=2;i<=size(v);i++)
76
+ {
77
+ if(m>v[i])
78
+ {
79
+ m=v[i];
80
+ }
81
+ }
82
+ return(m);
83
+ }
84
+ ///////////////////////////////////////////////////////////////////////////////
85
+
86
+ static proc max(intvec v)
87
+ {
88
+ int m=v[1];
89
+ int i;
90
+ for(i=2;i<=size(v);i++)
91
+ {
92
+ if(m<v[i])
93
+ {
94
+ m=v[i];
95
+ }
96
+ }
97
+ return(m);
98
+ }
99
+ ///////////////////////////////////////////////////////////////////////////////
100
+
101
+ static proc mdivp(matrix m,poly p)
102
+ {
103
+ int i,j;
104
+ for(i=nrows(m);i>=1;i--)
105
+ {
106
+ for(j=ncols(m);j>=1;j--)
107
+ {
108
+ m[i,j]=m[i,j]/p;
109
+ }
110
+ }
111
+ return(m);
112
+ }
113
+ ///////////////////////////////////////////////////////////////////////////////
114
+
115
+ proc codimV(list V,int N)
116
+ {
117
+ int codim=pcvdim(0,N);
118
+ if(size(V)>0)
119
+ {
120
+ dbprint(printlevel-voice+2,"//vector space dimension: "+string(codim));
121
+ dbprint(printlevel-voice+2,
122
+ "//number of subspace generators: "+string(size(V)));
123
+ int t=timer;
124
+ codim=codim-ncols(interred(module(V[1..size(V)])));
125
+ dbprint(printlevel-voice+2,"//codimension: "+string(codim));
126
+ }
127
+ return(codim);
128
+ }
129
+ ///////////////////////////////////////////////////////////////////////////////
130
+
131
+ proc quotV(list V,int N)
132
+ {
133
+ module Q=freemodule(pcvdim(0,N));
134
+ if(size(V)>0)
135
+ {
136
+ dbprint(printlevel-voice+2,"//vector space dimension: "+string(nrows(Q)));
137
+ dbprint(printlevel-voice+2,
138
+ "//number of subspace generators: "+string(size(V)));
139
+ int t=timer;
140
+ Q=interred(reduce(std(Q),std(module(V[1..size(V)]))));
141
+ }
142
+ return(list(Q[1..size(Q)]));
143
+ }
144
+ ///////////////////////////////////////////////////////////////////////////////
145
+ proc invunit(poly u,int n)
146
+ "USAGE: invunit(u,n); u poly, n int
147
+ ASSUME: The polynomial u is a series unit.
148
+ RETURN: The procedure returns the series inverse of u up to order n
149
+ or a zero polynomial if u is no series unit.
150
+ DISPLAY: The procedure displays comments if printlevel>=1.
151
+ EXAMPLE: example invunit; shows an example.
152
+ "
153
+ {
154
+ if(pcvmindeg(u)==0)
155
+ {
156
+ dbprint(printlevel-voice+2,"//computing inverse...");
157
+ int t=timer;
158
+ poly u0=jet(u,0);
159
+ u=jet(1-u/u0,n);
160
+ poly ui=u;
161
+ poly v=1+u;
162
+ int i;
163
+ for(i=n div pcvmindeg(u);i>1;i--)
164
+ {
165
+ ui=jet(ui*u,n);
166
+ v=v+ui;
167
+ }
168
+ v=jet(v,n)/u0;
169
+ dbprint(printlevel-voice+2,"//...inverse computed ["+string(timer-t)+
170
+ " secs, "+string((memory(1)+1023)/1024)+" K]");
171
+ return(v);
172
+ }
173
+ else
174
+ {
175
+ print("//no series unit");
176
+ return(poly(0));
177
+ }
178
+ }
179
+ example
180
+ { "EXAMPLE:"; echo=2;
181
+ ring R=0,(x,y),dp;
182
+ invunit(2+x3+xy4,10);
183
+ }
184
+
185
+ ///////////////////////////////////////////////////////////////////////////////
186
+
187
+ proc detadj(module U)
188
+ "USAGE: detadj(U); U matrix
189
+ ASSUME: U is a square matrix with non zero determinant.
190
+ RETURN: The procedure returns a list with at most 2 entries.
191
+ If U is not a square matrix, the list is empty.
192
+ If U is a square matrix, then the first entry is the determinant of U.
193
+ If U is a square matrix and the determinant of U not zero,
194
+ then the second entry is the adjoint matrix of U.
195
+ DISPLAY: The procedure displays comments if printlevel>=1.
196
+ EXAMPLE: example detadj; shows an example.
197
+ "
198
+ {
199
+ if(nrows(U)==ncols(U))
200
+ {
201
+ dbprint(printlevel-voice+2,"//computing determinant...");
202
+ int t=timer;
203
+ poly detU=det(U);
204
+ dbprint(printlevel-voice+2,"//...determinant computed ["+string(timer-t)+
205
+ " secs, "+string((memory(1)+1023)/1024)+" K]");
206
+
207
+ if(detU==0)
208
+ {
209
+ print("//determinant zero");
210
+ return(list(detU));
211
+ }
212
+ else
213
+ {
214
+ def br=basering;
215
+ def pr=changeord(list(list("dp",1:nvars(basering))));
216
+ setring pr;
217
+ matrix U=fetch(br,U);
218
+ poly detU=fetch(br,detU);
219
+
220
+ dbprint(printlevel-voice+2,"//computing adjoint matrix...");
221
+ t=timer;
222
+ matrix adjU=lift(U,detU*freemodule(nrows(U)));
223
+ dbprint(printlevel-voice+2,"//...adjoint matrix computed ["
224
+ +string(timer-t)+" secs, "+string((memory(1)+1023)/1024)+" K]");
225
+
226
+ setring br;
227
+ matrix adjU=fetch(pr,adjU);
228
+ kill pr;
229
+ }
230
+ }
231
+ else
232
+ {
233
+ print("//no square matrix");
234
+ return(list());
235
+ }
236
+
237
+ return(list(detU,adjU));
238
+ }
239
+ example
240
+ { "EXAMPLE:"; echo=2;
241
+ ring R=0,x,dp;
242
+ matrix U[2][2]=1,1+x,1+x2,1+x3;
243
+ list daU=detadj(U);
244
+ daU[1];
245
+ print(daU[2]);
246
+ }
247
+ ///////////////////////////////////////////////////////////////////////////////
248
+
249
+ proc jacoblift(poly f)
250
+ "USAGE: jacoblift(f); f poly
251
+ ASSUME: The polynomial f in a series ring (local ordering) defines
252
+ an isolated hypersurface singularity.
253
+ RETURN: The procedure returns a list with entries kappa, xi, u of type
254
+ int, vector, poly such that kappa is minimal with f^kappa in jacob(f),
255
+ u is a unit, and u*f^kappa=(matrix(jacob(f))*xi)[1,1].
256
+ DISPLAY: The procedure displays comments if printlevel>=1.
257
+ EXAMPLE: example jacoblift; shows an example.
258
+ "
259
+ {
260
+ dbprint(printlevel-voice+2,"//computing kappa...");
261
+ int t=timer;
262
+ ideal jf=jacob(f);
263
+ ideal sjf=std(jf);
264
+ int kappa=1;
265
+ poly fkappa=f;
266
+ while(reduce(fkappa,sjf)!=0)
267
+ {
268
+ dbprint(printlevel-voice+2,"//kappa="+string(kappa));
269
+ kappa++;
270
+ fkappa=fkappa*f;
271
+ }
272
+ dbprint(printlevel-voice+2,"//kappa="+string(kappa));
273
+ dbprint(printlevel-voice+2,"//...kappa computed ["+string(timer-t)+" secs, "
274
+ +string((memory(1)+1023)/1024)+" K]");
275
+
276
+ dbprint(printlevel-voice+2,"//computing xi...");
277
+ t=timer;
278
+ vector xi=lift(jf,fkappa)[1];
279
+ dbprint(printlevel-voice+2,"//...xi computed ["+string(timer-t)+" secs, "
280
+ +string((memory(1)+1023)/1024)+" K]");
281
+
282
+ dbprint(printlevel-voice+2,"//computing u...");
283
+ t=timer;
284
+ poly u=(matrix(jf)*xi)[1,1]/fkappa;
285
+ dbprint(printlevel-voice+2,"//...u computed ["+string(timer-t)+" secs, "
286
+ +string((memory(1)+1023)/1024)+" K]");
287
+
288
+ return(list(kappa,xi,u));
289
+ }
290
+ example
291
+ { "EXAMPLE:"; echo=2;
292
+ ring R=0,(x,y),ds;
293
+ poly f=x2y2+x6+y6;
294
+ jacoblift(f);
295
+ }
296
+ ///////////////////////////////////////////////////////////////////////////////
297
+
298
+ static proc getdeltaP1(poly f,int K,int N,int dN)
299
+ {
300
+ return(pcvpmull(f^K,pcvbasis(0,N+dN-K*pcvmindeg(f))));
301
+ }
302
+ ///////////////////////////////////////////////////////////////////////////////
303
+
304
+ static proc getdeltaP2(poly f,int N,int dN)
305
+ {
306
+ def of,jf=pcvmindeg(f),jacob(f);
307
+ list b=pcvbasis(N-of+2,N+dN-of+2);
308
+ list P2;
309
+ P2[size(b)*((nvars(basering)-1)*nvars(basering)) div 2]=0;
310
+ int i,j,k,l;
311
+ intvec alpha;
312
+ for(k,l=1,1;k<=size(b);k++)
313
+ {
314
+ alpha=leadexp(b[k]);
315
+ for(i=nvars(basering)-1;i>=1;i--)
316
+ {
317
+ for(j=nvars(basering);j>i;j--)
318
+ {
319
+ P2[l]=alpha[i]*jf[j]*(b[k]/var(i))-alpha[j]*jf[i]*(b[k]/var(j));
320
+ l++;
321
+ }
322
+ }
323
+ }
324
+ return(P2);
325
+ }
326
+ ///////////////////////////////////////////////////////////////////////////////
327
+
328
+ static proc getdeltaPe(poly f,list e,int K,int dK)
329
+ {
330
+ int k;
331
+ list Pe,fke;
332
+ for(k,fke=K,pcvpmull(f^K,e);k<K+dK;k,fke=k+1,pcvpmull(f,fke))
333
+ {
334
+ Pe=Pe+fke;
335
+ }
336
+ return(Pe);
337
+ }
338
+ ///////////////////////////////////////////////////////////////////////////////
339
+
340
+ static proc incK(poly f,int mu,int K,int deltaK,int N,
341
+ list e,list P1,list P2,list Pe,list V1,list V2,list Ve)
342
+ {
343
+ int deltaN=deltaK*pcvmindeg(f);
344
+
345
+ list deltaP1;
346
+ P1=pcvpmull(f^deltaK,P1);
347
+ V1=pcvp2cv(P1,0,N+deltaN);
348
+
349
+ list deltaP2=getdeltaP2(f,N,deltaN);
350
+ V2=pcvladdl(V2,pcvp2cv(P2,N,N+deltaN))+pcvp2cv(deltaP2,0,N+deltaN);
351
+ P2=P2+deltaP2;
352
+
353
+ list deltaPe=getdeltaPe(f,e,K,deltaK);
354
+ Ve=pcvladdl(Ve,pcvp2cv(Pe,N,N+deltaN))+pcvp2cv(deltaPe,0,N+deltaN);
355
+ Pe=Pe+deltaPe;
356
+
357
+ K=K+deltaK;
358
+ dbprint(printlevel-voice+2,"//K="+string(K));
359
+
360
+ N=N+deltaN;
361
+ dbprint(printlevel-voice+2,"//N="+string(N));
362
+
363
+ deltaN=1;
364
+ dbprint(printlevel-voice+2,"//computing codimension of");
365
+ dbprint(printlevel-voice+2,"//df^dOmega^(n-1)+f^K*Omega^(n+1) in "
366
+ +"Omega^(n+1) mod m^N*Omega^(n+1)...");
367
+ int t=timer;
368
+ while(codimV(V1+V2,N)<K*mu)
369
+ {
370
+ dbprint(printlevel-voice+2,"//...codimension computed ["+string(timer-t)
371
+ +" secs, "+string((memory(1)+1023)/1024)+" K]");
372
+
373
+ deltaP1=getdeltaP1(f,K,N,deltaN);
374
+ V1=pcvladdl(V1,pcvp2cv(P1,N,N+deltaN))+pcvp2cv(deltaP1,0,N+deltaN);
375
+ P1=P1+deltaP1;
376
+
377
+ deltaP2=getdeltaP2(f,N,deltaN);
378
+ V2=pcvladdl(V2,pcvp2cv(P2,N,N+deltaN))+pcvp2cv(deltaP2,0,N+deltaN);
379
+ P2=P2+deltaP2;
380
+
381
+ Ve=pcvladdl(Ve,pcvp2cv(Pe,N,N+deltaN));
382
+
383
+ N=N+deltaN;
384
+ dbprint(printlevel-voice+2,"//N="+string(N));
385
+
386
+ dbprint(printlevel-voice+2,"//computing codimension of");
387
+ dbprint(printlevel-voice+2,"//df^dOmega^(n-1)+f^K*Omega^(n+1) in "
388
+ +"Omega^(n+1) mod m^N*Omega^(n+1)...");
389
+ t=timer;
390
+ }
391
+ dbprint(printlevel-voice+2,"//...codimension computed ["+string(timer-t)
392
+ +" secs, "+string((memory(1)+1023)/1024)+" K]");
393
+
394
+ return(K,N,P1,P2,Pe,V1,V2,Ve);
395
+ }
396
+ ///////////////////////////////////////////////////////////////////////////////
397
+
398
+ static proc nablaK(poly f,int kappa,vector xi,poly u,int N,int prevN,
399
+ list Vnablae,list e)
400
+ {
401
+ xi=jet(xi,N);
402
+ u=invunit(u,N);
403
+ poly fkappa=kappa*f^(kappa-1);
404
+
405
+ poly p,q;
406
+ list nablae;
407
+ int i,j;
408
+ for(i=1;i<=size(e);i++)
409
+ {
410
+ for(j,p=nvars(basering),0;j>=1;j--)
411
+ {
412
+ q=jet(e[i]*xi[j],N);
413
+ if(q!=0)
414
+ {
415
+ p=p+diff(q*jet(u,N-pcvmindeg(q)),var(j));
416
+ }
417
+ }
418
+ nablae=nablae+list(p-jet(fkappa*e[i],N-1));
419
+ }
420
+
421
+ return(pcvladdl(Vnablae,pcvp2cv(nablae,prevN,N-prevN)));
422
+ }
423
+ ///////////////////////////////////////////////////////////////////////////////
424
+
425
+ static proc MK(poly f,int mu,int kappa,vector xi,poly u,
426
+ int K,int N,int prevN,list e,list V1,list V2,list Ve,list Vnablae)
427
+ {
428
+ dbprint(printlevel-voice+2,"//computing nabla(e)...");
429
+ int t=timer;
430
+ Vnablae=nablaK(f,kappa,xi,u,N,prevN,Vnablae,e);
431
+ dbprint(printlevel-voice+2,"//...nabla(e) computed ["+string(timer-t)
432
+ +" secs, "+string((memory(1)+1023)/1024)+" K]");
433
+
434
+ dbprint(printlevel-voice+2,
435
+ "//lifting nabla(e) to C-basis of H''/t^KH''...");
436
+ list V=Ve+V1+V2;
437
+ module W=module(V[1..size(V)]);
438
+ dbprint(printlevel-voice+2,"//vector space dimension: "+string(nrows(W)));
439
+ dbprint(printlevel-voice+2,"//number of generators: "+string(ncols(W)));
440
+ t=timer;
441
+ matrix C=lift(W,module(Vnablae[1..size(Vnablae)]));
442
+ dbprint(printlevel-voice+2,"//...nabla(e) lifted ["+string(timer-t)
443
+ +" secs, "+string((memory(1)+1023)/1024)+" K]");
444
+
445
+ dbprint(printlevel-voice+2,"//computing e-lift of nabla(e)...");
446
+ t=timer;
447
+ int i1,i2,j,k;
448
+ matrix M[mu][mu];
449
+ for(j=1;j<=mu;j++)
450
+ {
451
+ for(k,i2=0,1;k<K;k++)
452
+ {
453
+ for(i1=1;i1<=mu;i1,i2=i1+1,i2+1)
454
+ {
455
+ M[i1,j]=M[i1,j]+C[i2,j]*var(1)^k;
456
+ }
457
+ }
458
+ }
459
+ dbprint(printlevel-voice+2,"//...e-lift of nabla(e) computed ["
460
+ +string(timer-t)+" secs, "+string((memory(1)+1023)/1024)+" K]");
461
+
462
+ return(M,N,Vnablae);
463
+ }
464
+ ///////////////////////////////////////////////////////////////////////////////
465
+
466
+ static proc mid(ideal l)
467
+ {
468
+ int i,j,id;
469
+ int mid=0;
470
+ for(i=size(l);i>=1;i--)
471
+ {
472
+ for(j=i-1;j>=1;j--)
473
+ {
474
+ id=int(l[i]-l[j]);
475
+ id=max(intvec(id,-id));
476
+ mid=max(intvec(id,mid));
477
+ }
478
+ }
479
+ return(mid);
480
+ }
481
+ ///////////////////////////////////////////////////////////////////////////////
482
+
483
+ static proc decmide(matrix M,ideal eM0,list bM0)
484
+ {
485
+ matrix M0=jet(M,0);
486
+
487
+ dbprint(printlevel-voice+2,
488
+ "//computing basis U of generalized eigenspaces of M0...");
489
+ int t=timer;
490
+ int i,j;
491
+ matrix U,M0e;
492
+ matrix E=freemodule(nrows(M));
493
+ for(i=ncols(eM0);i>=1;i--)
494
+ {
495
+ M0e=E;
496
+ for(j=max(bM0[i]);j>=1;j--)
497
+ {
498
+ M0e=M0e*(M0-eM0[i]*E);
499
+ }
500
+ U=syz(M0e)+U;
501
+ }
502
+ dbprint(printlevel-voice+2,"//...U computed ["+string(timer-t)+" secs, "
503
+ +string((memory(1)+1023)/1024)+" K]");
504
+
505
+ dbprint(printlevel-voice+2,"//transforming M to U...");
506
+ t=timer;
507
+ list daU=detadj(U);
508
+ daU[2]=(1/number(daU[1]))*daU[2];
509
+ M=daU[2]*M*U;
510
+ dbprint(printlevel-voice+2,"//...M transformed ["+string(timer-t)+" secs, "
511
+ +string((memory(1)+1023)/1024)+" K]");
512
+
513
+ dbprint(printlevel-voice+2,
514
+ "//computing integer differences of eigenvalues of M0...");
515
+ t=timer;
516
+ int k;
517
+ intvec ideM0;
518
+ ideM0[ncols(eM0)]=0;
519
+ for(i=ncols(eM0);i>=1;i--)
520
+ {
521
+ for(j=ncols(eM0);j>=1;j--)
522
+ {
523
+ k=int(eM0[i]-eM0[j]);
524
+ if(k)
525
+ {
526
+ if(k>0)
527
+ {
528
+ ideM0[i]=max(intvec(k,ideM0[i]));
529
+ }
530
+ else
531
+ {
532
+ ideM0[j]=max(intvec(-k,ideM0[j]));
533
+ }
534
+ }
535
+ }
536
+ }
537
+ for(i,k=size(bM0),nrows(M);i>=1;i--)
538
+ {
539
+ for(j=sum(bM0[i]);j>=1;j--)
540
+ {
541
+ ideM0[k]=ideM0[i];
542
+ k--;
543
+ }
544
+ }
545
+ dbprint(printlevel-voice+2,
546
+ "//...integer differences of eigenvalues of M0 computed ["+string(timer-t)
547
+ +" secs, "+string((memory(1)+1023)/1024)+" K]");
548
+
549
+ dbprint(printlevel-voice+2,"//transforming M...");
550
+ t=timer;
551
+ for(i=nrows(M);i>=1;i--)
552
+ {
553
+ if(!ideM0[i])
554
+ {
555
+ M[i,i]=M[i,i]+1;
556
+ }
557
+ for(j=ncols(M);j>=1;j--)
558
+ {
559
+ if(ideM0[i]&&!ideM0[j])
560
+ {
561
+ M[i,j]=M[i,j]*var(1);
562
+ }
563
+ else
564
+ {
565
+ if(!ideM0[i]&&ideM0[j])
566
+ {
567
+ M[i,j]=M[i,j]/var(1);
568
+ }
569
+ }
570
+ }
571
+ }
572
+ dbprint(printlevel-voice+2,"//...M transformed ["+string(timer-t)+" secs, "
573
+ +string((memory(1)+1023)/1024)+" K]");
574
+
575
+ return(M);
576
+ }
577
+ ///////////////////////////////////////////////////////////////////////////////
578
+
579
+ static proc nonqhmonodromy(poly f,int mu,int opt)
580
+ {
581
+ dbprint(printlevel-voice+2,"//computing kappa, xi and u with "+
582
+ "u*f^kappa=(matrix(jacob(f))*xi)[1,1]...");
583
+ list jl=jacoblift(f);
584
+ def kappa,xi,u=jl[1..3];
585
+ dbprint(printlevel-voice+2,"//...kappa, xi and u computed");
586
+ dbprint(printlevel-voice+2,"//kappa="+string(kappa));
587
+ if(kappa==1)
588
+ {
589
+ dbprint(printlevel-voice+2,
590
+ "//f quasihomogenous with respect to suitable coordinates");
591
+ }
592
+ else
593
+ {
594
+ dbprint(printlevel-voice+2,
595
+ "//f not quasihomogenous for any choice of coordinates");
596
+ }
597
+ dbprint(printlevel-voice+2,"//xi=");
598
+ dbprint(printlevel-voice+2,xi);
599
+ dbprint(printlevel-voice+2,"//u="+string(u));
600
+
601
+ int K,N,prevN;
602
+ list e,P1,P2,Pe,V1,V2,Ve,Vnablae;
603
+
604
+ dbprint(printlevel-voice+2,"//increasing K and N...");
605
+ K,N,P1,P2,Pe,V1,V2,Ve=incK(f,mu,K,1,N,e,P1,P2,Pe,V1,V2,Ve);
606
+ dbprint(printlevel-voice+2,"//...K and N increased");
607
+
608
+ dbprint(printlevel-voice+2,"//computing C{f}-basis e of Brieskorn lattice "
609
+ +"H''=Omega^(n+1)/df^dOmega^(n-1)...");
610
+ int t=timer;
611
+ e=pcvcv2p(quotV(V1+V2,N),0,N);
612
+ dbprint(printlevel-voice+2,"//...e computed ["+string(timer-t)+" secs, "
613
+ +string((memory(1)+1023)/1024)+" K]");
614
+
615
+ dbprint(printlevel-voice+2,"//e=");
616
+ dbprint(printlevel-voice+2,e);
617
+
618
+ Pe=e;
619
+ Ve=pcvp2cv(Pe,0,N);
620
+
621
+ if(kappa==1)
622
+ {
623
+ dbprint(printlevel-voice+2,
624
+ "//computing 0-jet M of e-matrix of t*nabla...");
625
+ matrix M=list(MK(f,mu,kappa,xi,u,K,N,prevN,e,V1,V2,Ve,Vnablae))[1];
626
+ dbprint(printlevel-voice+2,"//...M computed");
627
+ }
628
+ else
629
+ {
630
+ dbprint(printlevel-voice+2,
631
+ "//computing transformation matrix U to simple pole...");
632
+
633
+ dbprint(printlevel-voice+2,"//computing t*nabla-stable lattice...");
634
+ matrix M,prevU;
635
+ matrix U=freemodule(mu)*var(1)^((mu-1)*(kappa-1));
636
+ int i;
637
+ dbprint(printlevel-voice+2,"//comparing with previous lattice...");
638
+ t=timer;
639
+ for(i=mu-1;i>=1&&size(reduce(U,std(prevU),5))>0;i--)
640
+ {
641
+ dbprint(printlevel-voice+2,"//...compared with previous lattice ["
642
+ +string(timer-t)+" secs, "+string((memory(1)+1023)/1024)+" K]");
643
+
644
+ dbprint(printlevel-voice+2,"//increasing K and N...");
645
+ K,N,P1,P2,Pe,V1,V2,Ve=incK(f,mu,K,kappa-1,N,e,P1,P2,Pe,V1,V2,Ve);
646
+ dbprint(printlevel-voice+2,"//...K and N increased");
647
+
648
+ dbprint(printlevel-voice+2,
649
+ "//computing (K-1)-jet M of e-matrix of t^kappa*nabla...");
650
+ M,prevN,Vnablae=MK(f,mu,kappa,xi,u,K,N,prevN,e,V1,V2,Ve,Vnablae);
651
+ dbprint(printlevel-voice+2,"//...M computed");
652
+
653
+ prevU=U;
654
+
655
+ dbprint(printlevel-voice+2,"//enlarging lattice...");
656
+ t=timer;
657
+ U=interred(jet(module(U)+module(var(1)*diff(U,var(1)))+
658
+ module(mdivp(M*U,var(1)^(kappa-1))),(kappa-1)*(mu-1)));
659
+ dbprint(printlevel-voice+2,"//...lattice enlarged ["+string(timer-t)
660
+ +" secs, "+string((memory(1)+1023)/1024)+" K]");
661
+
662
+ dbprint(printlevel-voice+2,"//comparing with previous lattice...");
663
+ t=timer;
664
+ }
665
+ dbprint(printlevel-voice+2,"//...compared with previous lattice ["
666
+ +string(timer-t)+" secs, "+string((memory(1)+1023)/1024)+" K]");
667
+ dbprint(printlevel-voice+2,"//...t*nabla-stable lattice computed");
668
+
669
+ if(ncols(U)>nrows(U))
670
+ {
671
+ dbprint(printlevel-voice+2,
672
+ "//computing C{f}-basis of t*nabla-stable lattice...");
673
+ t=timer;
674
+ U=minbase(U);
675
+ dbprint(printlevel-voice+2,
676
+ "//...C{f}-basis of t*nabla-stable lattice computed ["+string(timer-t)
677
+ +" secs, "+string((memory(1)+1023)/1024)+" K]");
678
+ }
679
+
680
+ U=mdivp(U,var(1)^pcvmindeg(U));
681
+
682
+ dbprint(printlevel-voice+2,"//...U computed");
683
+
684
+ dbprint(printlevel-voice+2,
685
+ "//computing determinant and adjoint matrix of U...");
686
+ list daU=detadj(U);
687
+ poly p=var(1)^min(intvec(pcvmindeg(daU[2]),pcvmindeg(daU[1])));
688
+ daU[1]=daU[1]/p;
689
+ daU[2]=mdivp(daU[2],p);
690
+ dbprint(printlevel-voice+2,
691
+ "//...determinant and adjoint matrix of U computed");
692
+
693
+ if(K<kappa+pcvmindeg(daU[1]))
694
+ {
695
+ dbprint(printlevel-voice+2,"//increasing K and N...");
696
+ K,N,P1,P2,Pe,V1,V2,Ve=
697
+ incK(f,mu,K,kappa+pcvmindeg(daU[1])-K,N,e,P1,P2,Pe,V1,V2,Ve);
698
+ dbprint(printlevel-voice+2,"//...K and N increased");
699
+
700
+ dbprint(printlevel-voice+2,"//computing M...");
701
+ M,prevN,Vnablae=MK(f,mu,kappa,xi,u,K,N,prevN,e,V1,V2,Ve,Vnablae);
702
+ dbprint(printlevel-voice+2,"//...M computed");
703
+ }
704
+
705
+ dbprint(printlevel-voice+2,"//transforming M/t^kappa to simple pole...");
706
+ t=timer;
707
+ M=mdivp(daU[2]*(var(1)^kappa*diff(U,var(1))+M*U),
708
+ leadcoef(daU[1])*var(1)^(kappa+pcvmindeg(daU[1])-1));
709
+ dbprint(printlevel-voice+2,"//...M/t^kappa transformed to simple pole ["
710
+ +string(timer-t)+" secs, "+string((memory(1)+1023)/1024)+" K]");
711
+ }
712
+
713
+ if(opt==0)
714
+ {
715
+ dbprint(printlevel-voice+2,
716
+ "//computing maximal integer difference delta of eigenvalues of M0...");
717
+ t=timer;
718
+ list jd=jordan(M);
719
+ def eM0,bM0=jd[1..2];
720
+ int delta=mid(eM0);
721
+ dbprint(printlevel-voice+2,"//...delta computed ["+string(timer-t)
722
+ +" secs, "+string((memory(1)+1023)/1024)+" K]");
723
+
724
+ dbprint(printlevel-voice+2,"//delta="+string(delta));
725
+
726
+ if(delta>0)
727
+ {
728
+ dbprint(printlevel-voice+2,"//increasing K and N...");
729
+ if(kappa==1)
730
+ {
731
+ K,N,P1,P2,Pe,V1,V2,Ve=incK(f,mu,K,1+delta-K,N,e,P1,P2,Pe,V1,V2,Ve);
732
+ }
733
+ else
734
+ {
735
+ K,N,P1,P2,Pe,V1,V2,Ve=
736
+ incK(f,mu,K,kappa+pcvmindeg(daU[1])+delta-K,N,e,P1,P2,Pe,V1,V2,Ve);
737
+ }
738
+ dbprint(printlevel-voice+2,"//...K and N increased");
739
+
740
+ dbprint(printlevel-voice+2,"//computing M...");
741
+ M,prevN,Vnablae=MK(f,mu,kappa,xi,u,K,N,prevN,e,V1,V2,Ve,Vnablae);
742
+ dbprint(printlevel-voice+2,"//...M computed");
743
+
744
+ if(kappa>1)
745
+ {
746
+ dbprint(printlevel-voice+2,
747
+ "//transforming M/t^kappa to simple pole...");
748
+ t=timer;
749
+ M=mdivp(invunit(daU[1]/var(1)^pcvmindeg(daU[1]),delta)*
750
+ daU[2]*(var(1)^kappa*diff(U,var(1))+M*U),
751
+ var(1)^(kappa+pcvmindeg(daU[1])-1));
752
+ dbprint(printlevel-voice+2,
753
+ "//...M/t^kappa transformed to simple pole ["+string(timer-t)
754
+ +" secs, "+string((memory(1)+1023)/1024)+" K]");
755
+ }
756
+
757
+ dbprint(printlevel-voice+2,"//decreasing delta...");
758
+ M=decmide(M,eM0,bM0);
759
+ delta--;
760
+ dbprint(printlevel-voice+2,"//delta="+string(delta));
761
+
762
+ while(delta>0)
763
+ {
764
+ jd=jordan(M);
765
+ eM0,bM0=jd[1..2];
766
+ M=decmide(M,eM0,bM0);
767
+ delta--;
768
+ dbprint(printlevel-voice+2,"//delta="+string(delta));
769
+ }
770
+ dbprint(printlevel-voice+2,"//...delta decreased");
771
+ }
772
+ }
773
+
774
+ dbprint(printlevel-voice+2,"//computing 0-jet M0 of M...");
775
+ matrix M0=jet(M,0);
776
+ dbprint(printlevel-voice+2,"//...M0 computed");
777
+
778
+ return(M0);
779
+ }
780
+ ///////////////////////////////////////////////////////////////////////////////
781
+
782
+ static proc qhmonodromy(poly f,intvec w)
783
+ {
784
+ dbprint(printlevel-voice+2,"//computing basis e of Milnor algebra...");
785
+ int t=timer;
786
+ ideal e=kbase(std(jacob(f)));
787
+ dbprint(printlevel-voice+2,"//...e computed ["+string(timer-t)+" secs, "
788
+ +string((memory(1)+1023)/1024)+" K]");
789
+
790
+ dbprint(printlevel-voice+2,
791
+ "//computing Milnor number mu and quasihomogeneous degree d...");
792
+ int mu,d=size(e),(transpose(leadexp(f))*w)[1];
793
+ dbprint(printlevel-voice+2,"...mu and d computed");
794
+
795
+ dbprint(printlevel-voice+2,"//computing te-matrix M of t*nabla...");
796
+ matrix M[mu][mu];
797
+ int i;
798
+ for(i=mu;i>=1;i--)
799
+ {
800
+ M[i,i]=number((transpose(leadexp(e[i])+1)*w)[1])/d;
801
+ }
802
+ dbprint(printlevel-voice+2,"//...M computed");
803
+
804
+ return(M);
805
+ }
806
+ ///////////////////////////////////////////////////////////////////////////////
807
+
808
+ proc monodromyB(poly f, list #)
809
+ "USAGE: monodromyB(f[,opt]); f poly, opt int
810
+ ASSUME: The polynomial f in a series ring (local ordering) defines
811
+ an isolated hypersurface singularity.
812
+ RETURN: The procedure returns a residue matrix M of the meromorphic
813
+ Gauss-Manin connection of the singularity defined by f
814
+ or an empty matrix if the assumptions are not fulfilled.
815
+ If opt=0 (default), exp(-2*pi*i*M) is a monodromy matrix of f,
816
+ else, only the characteristic polynomial of exp(-2*pi*i*M) coincides
817
+ with the characteristic polynomial of the monodromy of f.
818
+ DISPLAY: The procedure displays more comments for higher printlevel.
819
+ EXAMPLE: example monodromyB; shows an example.
820
+ "
821
+ {
822
+ int opt;
823
+ if(size(#)>0)
824
+ {
825
+ if(typeof(#[1])=="int")
826
+ {
827
+ opt=#[1];
828
+ }
829
+ else
830
+ {
831
+ print("\\second parameter no int");
832
+ return();
833
+ }
834
+
835
+ }
836
+
837
+ dbprint(printlevel-voice+2,"//basering="+string(basering));
838
+
839
+ int i;
840
+ for(i=nvars(basering);i>=1;i--)
841
+ {
842
+ if(1<var(i))
843
+ {
844
+ i=-1;
845
+ }
846
+ }
847
+
848
+ if(i<0)
849
+ {
850
+ print("//no series ring (local ordering)");
851
+
852
+ matrix M[1][0];
853
+ return(M);
854
+ }
855
+ else
856
+ {
857
+ dbprint(printlevel-voice+2,"//f="+string(f));
858
+
859
+ dbprint(printlevel-voice+2,"//computing milnor number mu of f...");
860
+ int t=timer;
861
+ int mu=milnor(f);
862
+ dbprint(printlevel-voice+2,"//...mu computed ["+string(timer-t)+" secs, "
863
+ +string((memory(1)+1023)/1024)+" K]");
864
+
865
+ dbprint(printlevel-voice+2,"//mu="+string(mu));
866
+
867
+ if(mu<=0)
868
+ {
869
+ if(mu==0)
870
+ {
871
+ print("//no singularity");
872
+ }
873
+ else
874
+ {
875
+ print("//non isolated singularity");
876
+ }
877
+
878
+ matrix M[1][0];
879
+ return(M);
880
+ }
881
+ else
882
+ {
883
+ dbprint(printlevel-voice+2,"//computing weight vector w...");
884
+ intvec w=qhweight(f);
885
+ dbprint(printlevel-voice+2,"//...w computed");
886
+
887
+ dbprint(printlevel-voice+2,"//w="+string(w));
888
+
889
+ if(w==0)
890
+ {
891
+ dbprint(printlevel-voice+2,
892
+ "//f not quasihomogeneous with respect to given coordinates");
893
+ return(nonqhmonodromy(f,mu,opt));
894
+ }
895
+ else
896
+ {
897
+ dbprint(printlevel-voice+2,
898
+ "//f quasihomogeneous with respect to given coordinates");
899
+ return(qhmonodromy(f,w));
900
+ }
901
+ }
902
+ }
903
+ }
904
+ example
905
+ { "EXAMPLE:"; echo=2;
906
+ ring R=0,(x,y),ds;
907
+ poly f=x2y2+x6+y6;
908
+ matrix M=monodromyB(f);
909
+ print(M);
910
+ }
911
+ ///////////////////////////////////////////////////////////////////////////////
912
+
913
+ proc H2basis(poly f)
914
+ "USAGE: H2basis(f); f poly
915
+ ASSUME: The polynomial f in a series ring (local ordering) defines
916
+ an isolated hypersurface singularity.
917
+ RETURN: The procedure returns a list of representatives of a C{f}-basis of the
918
+ Brieskorn lattice H''=Omega^(n+1)/df^dOmega^(n-1).
919
+ THEORY: H'' is a free C{f}-module of rank milnor(f).
920
+ DISPLAY: The procedure displays more comments for higher printlevel.
921
+ EXAMPLE: example H2basis; shows an example.
922
+ "
923
+ {
924
+ dbprint(printlevel-voice+2,"//basering="+string(basering));
925
+
926
+ int i;
927
+ for(i=nvars(basering);i>=1;i--)
928
+ {
929
+ if(1<var(i))
930
+ {
931
+ i=-1;
932
+ }
933
+ }
934
+
935
+ if(i<0)
936
+ {
937
+ print("//no series ring (local ordering)");
938
+
939
+ return(list());
940
+ }
941
+ else
942
+ {
943
+ dbprint(printlevel-voice+2,"//f="+string(f));
944
+
945
+ dbprint(printlevel-voice+2,"//computing milnor number mu of f...");
946
+ int t=timer;
947
+ int mu=milnor(f);
948
+ dbprint(printlevel-voice+2,"//...mu computed ["+string(timer-t)+" secs, "
949
+ +string((memory(1)+1023)/1024)+" K]");
950
+
951
+ dbprint(printlevel-voice+2,"//mu="+string(mu));
952
+
953
+ if(mu<=0)
954
+ {
955
+ if(mu==0)
956
+ {
957
+ print("//no singularity");
958
+ }
959
+ else
960
+ {
961
+ print("//non isolated singularity");
962
+ }
963
+
964
+ return(list());
965
+ }
966
+ else
967
+ {
968
+ dbprint(printlevel-voice+2,"//computing kappa, xi and u with "+
969
+ "u*f^kappa=(matrix(jacob(f))*xi)[1,1]...");
970
+ list jl=jacoblift(f);
971
+ def kappa,xi,u=jl[1..3];
972
+ dbprint(printlevel-voice+2,"//...kappa, xi and u computed");
973
+ dbprint(printlevel-voice+2,"//kappa="+string(kappa));
974
+ if(kappa==1)
975
+ {
976
+ dbprint(printlevel-voice+2,
977
+ "//f quasihomogenous with respect to suitable coordinates");
978
+ }
979
+ else
980
+ {
981
+ dbprint(printlevel-voice+2,
982
+ "//f not quasihomogenous for any choice of coordinates");
983
+ }
984
+ dbprint(printlevel-voice+2,"//xi=");
985
+ dbprint(printlevel-voice+2,xi);
986
+ dbprint(printlevel-voice+2,"//u="+string(u));
987
+
988
+ int K,N,prevN;
989
+ list e,P1,P2,Pe,V1,V2,Ve,Vnablae;
990
+
991
+ dbprint(printlevel-voice+2,"//increasing K and N...");
992
+ K,N,P1,P2,Pe,V1,V2,Ve=incK(f,mu,K,1,N,e,P1,P2,Pe,V1,V2,Ve);
993
+ dbprint(printlevel-voice+2,"//...K and N increased");
994
+
995
+ dbprint(printlevel-voice+2,
996
+ "//computing C{f}-basis e of Brieskorn lattice "
997
+ +"H''=Omega^(n+1)/df^dOmega^(n-1)...");
998
+ t=timer;
999
+ e=pcvcv2p(quotV(V1+V2,N),0,N);
1000
+ dbprint(printlevel-voice+2,"//...e computed ["+string(timer-t)+" secs, "
1001
+ +string((memory(1)+1023)/1024)+" K]");
1002
+
1003
+ dbprint(printlevel-voice+2,"//e=");
1004
+ dbprint(printlevel-voice+2,e);
1005
+
1006
+ return(e);
1007
+ }
1008
+ }
1009
+ }
1010
+ example
1011
+ { "EXAMPLE:"; echo=2;
1012
+ ring R=0,(x,y),ds;
1013
+ poly f=x2y2+x6+y6;
1014
+ H2basis(f);
1015
+ }
1016
+ ///////////////////////////////////////////////////////////////////////////////