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,909 @@
1
+ ////////////////////////////////////////////////////////////////
2
+ version = "version goettsche.lib 0.931 Feb_2019 "; //$Id: 00ca106215df1dead97e924404ef3d9eeeedfdbf $
3
+ info="
4
+ LIBRARY: goettsche.lib Drezet's formula for the Betti numbers of the moduli space
5
+ of Kronecker modules;
6
+ Goettsche's formula for the Betti numbers of the Hilbert scheme
7
+ of points on a surface;
8
+ Nakajima's and Yoshioka's formula for the Betti numbers
9
+ of the punctual Quot-schemes on a plane or, equivalently,
10
+ of the moduli spaces of the framed torsion-free planar sheaves;
11
+ Macdonald's formula for the symmetric product
12
+
13
+ AUTHOR: Oleksandr Iena, o.g.yena@gmail.com
14
+
15
+ REFERENCES:
16
+ [1] Drezet, Jean-Marc Cohomologie des varie'te's de modules de hauter nulle.
17
+ Mathematische Annalen: 281, 43-85, (1988).
18
+
19
+ [2] Goettsche, Lothar, The Betti numbers of the Hilbert scheme of points
20
+ on a smooth projective surface.
21
+ Mathematische Annalen: 286, 193-208, (1990).
22
+
23
+ [3] Macdonald, I. G., The Poincare polynomial of a symmetric product,
24
+ Mathematical proceedings of the Cambridge Philosophical Society:
25
+ 58, 563-568, (1962).
26
+
27
+ [4] Nakajima, Hiraku; Lectures on instanton counting, CRM Proceedings and Lecture Notes,
28
+ Yoshioka, Kota Volume 88, 31-101, (2004).
29
+
30
+ PROCEDURES:
31
+ GoettscheF(z, t, n, b); The Goettsche's formula up to n-th degree
32
+ PPolyH(z, n, b); Poincare Polynomial of the Hilbert scheme of n points on a surface
33
+ BettiNumsH(n, b); Betti numbers of the Hilbert scheme of n points on a surface
34
+ NakYoshF(z, t, r, n); The Nakajima-Yoshioka formula up to n-th degree
35
+ PPolyQp(z, n, b); Poincare Polynomial of the punctual Quot-scheme
36
+ of rank r on n planar points
37
+ BettiNumsQp(n, b); Betti numbers of the punctual Quot-scheme
38
+ of rank r on n planar points
39
+ MacdonaldF(z, t, n, b); The Macdonald's formula up to n-th degree
40
+ PPolyS(z, n, b); Poincare Polynomial of the n-th symmetric power of a variety
41
+ BettiNumsS(n, b); Betti numbers of the n-th symmetric power of a variety
42
+ PPolyN(t, q, m, n); Poincare Polynomial of the moduli space
43
+ of Kronecker modules N (q; m, n)
44
+ BettiNumsN(q, m, n); Betti numbers of the moduli space
45
+ of Kronecker modules N (q; m, n)
46
+
47
+ KEYWORDS: Betty number; Goettsche's formula; Macdonald's formula;
48
+ Kronecker module; Hilbert scheme; Quot-scheme;
49
+ framed sheaves; symmetric product
50
+ ";
51
+ //----------------------------------------------------------
52
+
53
+ proc GoettscheF(poly z, poly t, int n, list b)
54
+ "USAGE: GoettscheF(z, t, n, b); z, t polynomials, n integer, b list of non-negative integers
55
+ RETURN: polynomial in z and t
56
+ PURPOSE: computes the Goettsche's formula up to degree n in t
57
+ EXAMPLE: example GoettscheF; shows an example
58
+ NOTE: zero is returned if n<0 or b is not a list of non-negative integers
59
+ or if there are not enough Betti numbers
60
+ "
61
+ {
62
+ // check the input data
63
+ if( !checkBetti(b) )
64
+ {
65
+ print("the Betti numbers must be non-negative integers");
66
+ print("zero polynomial is returned");
67
+ return( poly(0) );
68
+ }
69
+ if(n<0)
70
+ {
71
+ print("the number of points must be non-negative");
72
+ print("zero polynomial is returned");
73
+ return( poly(0) );
74
+ }
75
+ // now n is non-negative and b is a list of non-negative integers
76
+ if(size(b) < 5) // if there are not enough Betti numbers
77
+ {
78
+ print("a surface must habe 5 Betti numbers b_0, b_1, b_2, b_3, b_4");
79
+ print("zero polynomial is returned");
80
+ return( poly(0) );
81
+ }
82
+ // now there are at least 5 non-negative Betti numbers b_0, b_1, b_2, b_3, b_4
83
+ def br@=basering; // remember the base ring
84
+ // add additional variables z@, t@ to the base ring
85
+ ring r@ = create_ring(ring_list(basering)[1],"("+varstr(basering)+", z@, t@)","dp","no_minpoly");
86
+ execute( "map F= br@,"+varstr(br@)+";" ); // define the corresponding inclusion of rings
87
+ // compute the generating function by the Goettsche's formula up to degree n in t@
88
+ poly rez=1;
89
+ int k,i;
90
+ ideal I=std(t@^(n+1));
91
+ for(k=1;k<=n;k++)
92
+ {
93
+ for(i=0;i<=4;i++)
94
+ {
95
+ rez=NF( rez*generFactor( z@^(2*k-2+i)*t@^k, k, i, b[i+1], n), I);
96
+ }
97
+ }
98
+ setring br@; // come back to the initial base ring
99
+ // define the specialization homomorphism z@=z, t@=t
100
+ execute( "map FF= r@,"+varstr(br@)+", z, t;" );
101
+ poly rez=FF(rez); // bring the result to the base ring
102
+ return(rez);
103
+ }
104
+ example
105
+ {
106
+ "EXAMPLE:"; echo=2;
107
+ ring r=0, (t, z), ls;
108
+ // consider the projective plane with Betti numbers 1,0,1,0,1
109
+ list b=1,0,1,0,1;
110
+ // get the Goettsche's formula up to degree 3
111
+ print( GoettscheF(z, t, 3, b) );
112
+ }
113
+ //----------------------------------------------------------
114
+
115
+ proc PPolyH(poly z, int n, list b)
116
+ "USAGE: PPolyH(z, n, b); z polynomial, n integer, b list of non-negative integers
117
+ RETURN: polynomial in z
118
+ PURPOSE: computes the Poincare polynomial of the Hilbert scheme
119
+ of n points on a surface with Betti numbers b
120
+ EXAMPLE: example PPolyH; shows an example
121
+ NOTE: zero is returned if n<0 or b is not a list of non-negative integers
122
+ or if there are not enough Betti numbers
123
+ "
124
+ {
125
+ // check the input data
126
+ if( !checkBetti(b) )
127
+ {
128
+ print("the Betti numbers must be non-negative integers");
129
+ print("zero polynomial is returned");
130
+ return( poly(0) );
131
+ }
132
+ if(n<0)
133
+ {
134
+ print("the number of points must be non-negative");
135
+ print("zero polynomial is returned");
136
+ return( poly(0) );
137
+ }
138
+ // now n is non-negative and b is a list of non-negative integers
139
+ if(size(b) < 5) // if there are not enough Betti numbers
140
+ {
141
+ print("a surface must habe 5 Betti numbers b_0, b_1, b_2, b_3, b_4");
142
+ print("zero polynomial is returned");
143
+ return( poly(0) );
144
+ }
145
+ // now there are at least 5 non-negative Betti numbers b_0, b_1, b_2, b_3, b_4
146
+ def br@=basering; // remember the base ring
147
+ // add additional variables z@, t@ to the base ring
148
+ ring r@ = create_ring(ring_list(basering)[1], "("+varstr(basering)+",z@, t@)","dp","no_minpoly");
149
+ execute( "map F= br@,"+varstr(br@)+";" ); // define the corresponding inclusion of rings
150
+ // compute the generating function by the Goettsche's formula up to degree n in t@
151
+ poly rez=1;
152
+ int k,i;
153
+ ideal I=std(t@^(n+1));
154
+ for(k=1;k<=n;k++)
155
+ {
156
+ for(i=0;i<=4;i++)
157
+ {
158
+ rez=NF(rez*generFactor( z@^(2*k-2+i)*t@^k, k, i, b[i+1], n), I);
159
+ }
160
+ }
161
+ rez= coeffs(rez, t@)[n+1, 1]; // take the coefficient of the n-th power of t@
162
+ setring br@; // come back to the initial base ring
163
+ // define the specialization homomorphism z@=z, t@=0
164
+ execute( "map FF= r@,"+varstr(br@)+",z, 0;" );
165
+ poly rez=FF(rez); // bring the result to the base ring
166
+ return(rez);
167
+ }
168
+ example
169
+ {
170
+ "EXAMPLE:"; echo=2;
171
+ ring r=0, (z), ls;
172
+ // consider the projective plane P_2 with Betti numbers 1,0,1,0,1
173
+ list b=1,0,1,0,1;
174
+ // get the Poincare polynomial of the Hilbert scheme of 3 points on P_2
175
+ print( PPolyH(z, 3, b) );
176
+ }
177
+ //----------------------------------------------------------
178
+
179
+ proc BettiNumsH(int n, list b)
180
+ "USAGE: BettiNumsH(n, b); n integer, b list of non-negative integers
181
+ RETURN: list of non-negative integers
182
+ PURPOSE: computes the Betti numbers of the Hilbert scheme
183
+ of n points on a surface with Betti numbers b
184
+ EXAMPLE: example BettiNumsH; shows an example
185
+ NOTE: an empty list is returned if n<0 or b is not a list of non-negative integers
186
+ or if there are not enough Betti numbers
187
+ "
188
+ {
189
+ // check the input data
190
+ if( !checkBetti(b) )
191
+ {
192
+ print("the Betti numbers must be non-negative integers");
193
+ print("an empty list is returned");
194
+ return( list() );
195
+ }
196
+ if(n<0)
197
+ {
198
+ print("the number of points must be non-negative");
199
+ print("an empty list is returned");
200
+ return(list());
201
+ }
202
+ // now n is non-negative and b is a list of non-negative integers
203
+ if(size(b) < 5) // if there are not enough Betti numbers
204
+ {
205
+ print("a surface must habe 5 Betti numbers b_0, b_1, b_2, b_3, b_4");
206
+ print("an empty list is returned");
207
+ return( list() );
208
+ }
209
+ // now there are at least 5 non-negative Betti numbers b_0, b_1, b_2, b_3, b_4
210
+ def br@=basering; // remember the base ring
211
+ // add additional variables z@, t@ to the base ring
212
+ ring r@ = create_ring(ring_list(basering)[1],"("+varstr(basering)+", z@, t@)","dp","no_minpoly");
213
+ execute( "map F= br@,"+varstr(br@)+";" ); // define the corresponding inclusion of rings
214
+ poly rez=1;
215
+ int k,i;
216
+ ideal I=std(t@^(n+1));
217
+ for(k=1;k<=n;k++)
218
+ {
219
+ for(i=0;i<=4;i++)
220
+ {
221
+ rez=NF(rez*generFactor( z@^(2*k-2+i)*t@^k, k, i, b[i+1], n), I);
222
+ }
223
+ }
224
+ rez= coeffs(rez, t@)[n+1, 1]; // take the coefficient of the n-th power of t@
225
+ matrix CF=coeffs(rez, z@); // take the matrix of the coefficients
226
+ list res; // and transform it to a list
227
+ int d=size(CF);
228
+ for(i=1; i<=d; i++)
229
+ {
230
+ res=res+ list(int(CF[i, 1])) ;
231
+ }
232
+ setring br@; // come back to the initial base ring
233
+ return(res);
234
+ }
235
+ example
236
+ {
237
+ "EXAMPLE:"; echo=2;
238
+ ring r=0, (z), ls;
239
+ // consider the projective plane P_2 with Betti numbers 1,0,1,0,1
240
+ list b=1,0,1,0,1;
241
+ // get the Betti numbers of the Hilbert scheme of 3 points on P_2
242
+ print( BettiNumsH(3, b) );
243
+ }
244
+ //----------------------------------------------------------
245
+
246
+ proc NakYoshF(poly z, poly t, int r, int n)
247
+ "USAGE: NakYoshF(z, t, r, n); z, t polynomials, r, n integers
248
+ RETURN: polynomial in z and t
249
+ PURPOSE: computes the formula of Nakajima and Yoshioka
250
+ up to degree n in t
251
+ EXAMPLE: example NakYoshF; shows an example
252
+ NOTE: zero is returned if n<0 or r<=0
253
+ "
254
+ {
255
+ // check the input data
256
+ if(n<0)
257
+ {
258
+ print("the number of points must be non-negative");
259
+ print("zero polynomial is returned");
260
+ return( poly(0) );
261
+ }
262
+ if(r<=0)
263
+ {
264
+ print("r must be positive");
265
+ print("zero polynomial is returned");
266
+ return( poly(0) );
267
+ }
268
+ // now n is non-negative and r is positive
269
+ def br@=basering; // remember the base ring
270
+ // add additional variables z@, t@ to the base ring
271
+ ring r@ = create_ring(ring_list(basering)[1],"("+varstr(basering)+", z@, t@)","dp","no_minpoly");
272
+ execute( "map F= br@,"+varstr(br@)+";" ); // define the corresponding inclusion of rings
273
+ // compute the generating function by the Nakajima-Yoshioka formula up to degree n in t@
274
+ poly rez=1;
275
+ int k,i;
276
+ ideal I=std(t@^(n+1));
277
+ for(k=1;k<=n;k++)
278
+ {
279
+ for(i=1;i<=r;i++)
280
+ {
281
+ rez=NF( rez*generFactor( z@^(2*(r*k-i))*t@^k, k, 0, 1, n), I);
282
+ }
283
+ }
284
+ setring br@; // come back to the initial base ring
285
+ // define the specialization homomorphism z@=z, t@=t
286
+ execute( "map FF= r@,"+varstr(br@)+", z, t;" );
287
+ poly rez=FF(rez); // bring the result to the base ring
288
+ return(rez);
289
+ }
290
+ example
291
+ {
292
+ "EXAMPLE:"; echo=2;
293
+ ring r=0, (t, z), ls;
294
+ // get the Nakajima-Yoshioka formula for r=1 up to degree 3, i.e.,
295
+ // the generating function for the Poincare polynomials of the
296
+ // punctual Hilbert schemes of n planar points
297
+ print( NakYoshF(z, t, 1, 3) );
298
+ }
299
+ //----------------------------------------------------------
300
+
301
+ proc PPolyQp(poly z, int r, int n)
302
+ "USAGE: PPolyQp(z, r, n); z polynomial, r, n integers
303
+ RETURN: polynomial in z
304
+ PURPOSE: computes the Poincare polynomial of the punctual Quot-scheme
305
+ of rank r on n planar points
306
+ EXAMPLE: example PPolyQp; shows an example
307
+ NOTE: zero is returned if n<0 or r<=0
308
+ "
309
+ {
310
+ // check the input data
311
+ if(n<0)
312
+ {
313
+ print("the number of points must be non-negative");
314
+ print("zero polynomial is returned");
315
+ return( poly(0) );
316
+ }
317
+ if(r<=0)
318
+ {
319
+ print("r must be positive");
320
+ print("zero polynomial is returned");
321
+ return( poly(0) );
322
+ }
323
+ // now n is non-negative and r is positive
324
+ def br@=basering; // remember the base ring
325
+ // add additional variables z@, t@ to the base ring
326
+ ring r@ = create_ring(ring_list(basering)[1],"("+varstr(basering)+", z@, t@)","dp","no_minpoly");
327
+ execute( "map F= br@,"+varstr(br@)+";" ); // define the corresponding inclusion of rings
328
+ // compute the generating function by the Nakajima-Yoshioka formula up to degree n in t@
329
+ poly rez=1;
330
+ int k,i;
331
+ ideal I=std(t@^(n+1));
332
+ for(k=1;k<=n;k++)
333
+ {
334
+ for(i=1;i<=r;i++)
335
+ {
336
+ rez=NF(rez*generFactor( z@^(2*(r*k-i))*t@^k, k, 0, 1, n), I);
337
+ }
338
+ }
339
+ rez= coeffs(rez, t@)[n+1, 1]; // take the coefficient of the n-th power of t@
340
+ setring br@; // come back to the initial base ring
341
+ // define the specialization homomorphism z@=z, t@=0
342
+ execute( "map FF= r@,"+varstr(br@)+",z, 0;" );
343
+ poly rez=FF(rez); // bring the result to the base ring
344
+ return(rez);
345
+ }
346
+ example
347
+ {
348
+ "EXAMPLE:"; echo=2;
349
+ ring r=0, (z), ls;
350
+ // get the Poincare polynomial of the punctual Hilbert scheme (r=1)
351
+ // of 3 planar points
352
+ print( PPolyQp(z, 1, 3) );
353
+ }
354
+ //----------------------------------------------------------
355
+
356
+ proc BettiNumsQp(int r, int n)
357
+ "USAGE: BettiNumsQp(r, n); n, r integers
358
+ RETURN: list of non-negative integers
359
+ PURPOSE: computes the Betti numbers of the punctual Quot-scheme
360
+ of rank r on n points on a plane
361
+ EXAMPLE: example BettiNumsQp; shows an example
362
+ NOTE: an empty list is returned if n<0 or r<=0
363
+ "
364
+ {
365
+ // check the input data
366
+ if(n<0)
367
+ {
368
+ print("the number of points must be non-negative");
369
+ print("zero polynomial is returned");
370
+ return( poly(0) );
371
+ }
372
+ if(r<=0)
373
+ {
374
+ print("r must be positive");
375
+ print("zero polynomial is returned");
376
+ return( poly(0) );
377
+ }
378
+ // now n is non-negative and r is positive
379
+ def br@=basering; // remember the base ring
380
+ // add additional variables z@, t@ to the base ring
381
+ ring r@ = create_ring(ring_list(basering)[1],"("+varstr(basering)+", z@, t@)","dp","no_minpoly");
382
+ execute( "map F= br@,"+varstr(br@)+";" ); // define the corresponding inclusion of rings
383
+ poly rez=1;
384
+ int k,i;
385
+ ideal I=std(t@^(n+1));
386
+ for(k=1;k<=n;k++)
387
+ {
388
+ for(i=1;i<=r;i++)
389
+ {
390
+ rez=NF(rez*generFactor( z@^(2*(r*k-i))*t@^k, k, 0, 1, n), I);
391
+ }
392
+ }
393
+ rez= coeffs(rez, t@)[n+1, 1]; // take the coefficient of the n-th power of t@
394
+ matrix CF=coeffs(rez, z@); // take the matrix of the coefficients
395
+ list res; // and transform it to a list
396
+ int d=size(CF);
397
+ for(i=1; i<=d; i++)
398
+ {
399
+ res=res+ list(int(CF[i, 1])) ;
400
+ }
401
+ setring br@; // come back to the initial base ring
402
+ return(res);
403
+ }
404
+ example
405
+ {
406
+ "EXAMPLE:"; echo=2;
407
+ ring r=0, (z), ls;
408
+ // get the Betti numbers of the punctual Hilbert scheme (r=1)
409
+ // of 3 points on a plane
410
+ print( BettiNumsQp(1, 3) );
411
+ }
412
+ //----------------------------------------------------------
413
+
414
+ proc MacdonaldF(poly z, poly t, int n, list b)
415
+ "USAGE: MacdonaldF(z, t, n, b); z, t polynomials, n integer, b list of non-negative integers
416
+ RETURN: polynomial in z and t with integer coefficients
417
+ PURPOSE: computes the Macdonalds's formula up to degree n in t
418
+ EXAMPLE: example MacdonaldF; shows an example
419
+ NOTE: zero is returned if n<0 or b is not a list of non-negative integers
420
+ "
421
+ {
422
+ // check the input data
423
+ if( !checkBetti(b) )
424
+ {
425
+ print("the Betti numbers must be non-negative integers");
426
+ print("zero polynomial is returned");
427
+ return( poly(0) );
428
+ }
429
+ if(n<0)
430
+ {
431
+ print("the exponent of the symmetric power must be non-negative");
432
+ print("zero polynomial is returned");
433
+ return( poly(0) );
434
+ }
435
+ int d=size(b);
436
+ def br@=basering; // remember the base ring
437
+ // add additional variables z@, t@ to the base ring
438
+ ring r@ = create_ring(ring_list(basering)[1],"("+varstr(basering)+", z@, t@)","dp","no_minpoly");
439
+ execute( "map F= br@,"+varstr(br@)+";" ); // define the corresponding inclusion of rings
440
+ poly rez=1;
441
+ int i;
442
+ ideal I=std(t@^(n+1));
443
+ for(i=0;i<d;i++)
444
+ {
445
+ rez=NF(rez*generFactor( z@^i*t@, 1, i, b[i+1], n), I);
446
+ }
447
+ setring br@; // come back to the initial base ring
448
+ // define the specialization homomorphism z@=z, t@=t
449
+ execute( "map FF= r@,"+varstr(br@)+",z, t;" );
450
+ poly rez=FF(rez); // bring the result to the base ring
451
+ return(rez);
452
+ }
453
+ example
454
+ {
455
+ "EXAMPLE:"; echo=2;
456
+ ring r=0, (t, z), ls;
457
+ // consider the projective plane with Betti numbers 1,0,1,0,1
458
+ list b=1,0,1,0,1;
459
+ // get the Macdonald's formula up to degree 3
460
+ print( MacdonaldF(z, t, 3, b) );
461
+ }
462
+ //----------------------------------------------------------
463
+
464
+ proc PPolyS(poly z, int n, list b)
465
+ "USAGE: PPolyS(z, n, b); z polynomial, n integer, b list of non-negative integers
466
+ RETURN: polynomial in z with integer coefficients
467
+ PURPOSE: computes the Poincare polynomial of the n-th symmetric power
468
+ of a variety with Betti numbers b
469
+ EXAMPLE: example PPolyS; shows an example
470
+ NOTE: zero is returned if n<0 or b is not a list of non-negative integers
471
+ "
472
+ {
473
+ // check the input data
474
+ if( !checkBetti(b) )
475
+ {
476
+ print("the Betti numbers must be non-negative integers");
477
+ print("zero polynomial is returned");
478
+ return( poly(0) );
479
+ }
480
+ if(n<0)
481
+ {
482
+ print("the exponent of the symmetric power must be non-negative");
483
+ print("zero polynomial is returned");
484
+ return( poly(0) );
485
+ }
486
+ int d=size(b);
487
+ def br@=basering; // remember the base ring
488
+ // add additional variables z@, t@ to the base ring
489
+ ring r@ = create_ring(ring_list(basering)[1],"("+varstr(basering)+", z@, t@)","dp","no_minpoly");
490
+ execute( "map F= br@,"+varstr(br@)+";" ); // define the corresponding inclusion of rings
491
+ poly rez=1;
492
+ int i;
493
+ ideal I=std(t@^(n+1));
494
+ for(i=0;i<d;i++)
495
+ {
496
+ rez=NF(rez*generFactor( z@^i*t@, 1, i, b[i+1], n), I);
497
+ }
498
+ rez= coeffs(rez, t@)[n+1, 1]; // take the coefficient of the n-th power of t@
499
+ setring br@; // come back to the initial base ring
500
+ // define the specialization homomorphism z@=z, t@=0
501
+ execute( "map FF= r@,"+varstr(br@)+",z, 0;" );
502
+ poly rez=FF(rez); // bring the result to the base ring
503
+ return(rez);
504
+ }
505
+ example
506
+ {
507
+ "EXAMPLE:"; echo=2;
508
+ ring r=0, (z), ls;
509
+ // consider the projective plane P_2 with Betti numbers 1,0,1,0,1
510
+ list b=1,0,1,0,1;
511
+ // get the Poincare polynomial of the third symmetric power of P_2
512
+ print( PPolyS(z, 3, b) );
513
+ }
514
+ //----------------------------------------------------------
515
+
516
+ proc BettiNumsS(int n, list b)
517
+ "USAGE: BettiNumsS(n, b); n integer, b list of non-negative integers
518
+ RETURN: list of non-negative integers
519
+ PURPOSE: computes the Betti numbers of the n-th symmetric power of a variety with Betti numbers b
520
+ EXAMPLE: example BettiNumsS; shows an example
521
+ NOTE: an empty list is returned if n<0 or b is not a list of non-negative integers
522
+ "
523
+ {
524
+ // check the input data
525
+ if( !checkBetti(b) )
526
+ {
527
+ print("the Betti numbers must be non-negative integers");
528
+ print("an empty list is returned");
529
+ return( list() );
530
+ }
531
+ if(n<0)
532
+ {
533
+ print("the exponent of the symmetric power must be non-negative");
534
+ print("an empty list is returned");
535
+ return(list());
536
+ }
537
+ int d=size(b);
538
+ def br@=basering; // remember the base ring
539
+ // add additional variables z@, t@ to the base ring
540
+ ring r@ = create_ring(ring_list(basering)[1],"("+varstr(basering)+", z@, t@)","dp","no_minpoly");
541
+ execute( "map F= br@,"+varstr(br@)+";" ); // define the corresponding inclusion of rings
542
+ poly rez=1;
543
+ int i;
544
+ ideal I=std(t@^(n+1));
545
+ for(i=0;i<d;i++)
546
+ {
547
+ rez=NF(rez*generFactor( z@^i*t@, 1, i, b[i+1], n), I);
548
+ }
549
+ rez= coeffs(rez, t@)[n+1, 1]; // take the coefficient of the n-th power of t@
550
+ matrix CF=coeffs(rez, z@); // take the matrix of the coefficients
551
+ list res; // and transform it to a list
552
+ d=size(CF);
553
+ for(i=1; i<=d; i++)
554
+ {
555
+ res=res+ list(int(CF[i, 1])) ;
556
+ }
557
+ setring br@; // come back to the initial base ring
558
+ return(res);
559
+ }
560
+ example
561
+ {
562
+ "EXAMPLE:"; echo=2;
563
+ ring r=0, (z), ls;
564
+ // consider a complex torus T (elliptic curve) with Betti numbers 1,2,1
565
+ list b=1,2,1;
566
+ // get the Betti numbers of the second symmetric power of T
567
+ print( BettiNumsS(2, b) );
568
+ // consider a projective plane P_2 with Betti numbers 1,0,1,0,1
569
+ b=1,0,1,0,1;
570
+ // get the Betti numbers of the third symmetric power of P_2
571
+ print( BettiNumsS(3, b) );
572
+ }
573
+ //----------------------------------------------------------
574
+
575
+ proc PPolyN(poly t, int q, int m, int n)
576
+ "USAGE: PPolyN(t, q, m, n); t polynomial, q, m, n integers
577
+ RETURN: polynomial in t
578
+ PURPOSE: computes the Poincare polynomial of the moduli space
579
+ of Kronecker modules N(q; m, n)
580
+ EXAMPLE: example PPolyN; shows an example
581
+ NOTE: if m and n are not coprime, the result does not necessary make sense
582
+ "
583
+ {
584
+ int d=dimKron(q, m, n);
585
+ if(d<0)
586
+ {
587
+ return(0);
588
+ }
589
+ if(gcd(m, n)!=1)
590
+ {
591
+ "You are trying to compute the Poincare polynomial";
592
+ "of the moduli space of Kronecker modules N("+string(q)+"; "+string(m)+", "+string(n)+").";
593
+ "Notice that gcd(m,n)=1 is expected to get the correct Poincare polynomial";
594
+ "of the moduli space N(q; m, n)!";
595
+ }
596
+ def br@=basering; // remember the base ring
597
+ // add additional variable t@ to the base ring
598
+ ring r@ = create_ring(ring_list(basering)[1], "("+varstr(basering)+", t@)", "dp", "no_minpoly");
599
+ execute( "map F= br@,"+varstr(br@)+";" ); // define the corresponding inclusion of rings
600
+ poly rez=(1-t@^2)*PPolyW(q, m, n, t@, d);
601
+ ideal I=t@^(2*d+1);
602
+ rez=NF(rez, I);
603
+ setring br@; // come back to the initial base ring
604
+ // define the specialization homomorphism t@=t
605
+ execute( "map FF= r@,"+varstr(br@)+", t;" );
606
+ poly rez=FF(rez); // bring the result to the base ring
607
+ return(rez);
608
+ }
609
+ example
610
+ {
611
+ "EXAMPLE:"; echo=2;
612
+ ring r=0, (t), ls;
613
+ // get the Poincare polynomial of N(3; 2, 3)
614
+ print( PPolyN(t, 3, 2, 3) );
615
+ }
616
+ //----------------------------------------------------------
617
+
618
+ proc BettiNumsN(int q, int m, int n)
619
+ "USAGE: BettiNumsN(q, m, n); q, m, n integers
620
+ RETURN: list of integers
621
+ PURPOSE: computes the Betti numbers of the moduli space
622
+ of Kronecker modules N(q; m, n)
623
+ EXAMPLE: example BettiNumsN; shows an example
624
+ NOTE: if m and n are not coprime, the result does not necessary make sense
625
+ "
626
+ {
627
+ int d=dimKron(q, m, n);
628
+ if(d<0)
629
+ {
630
+ return(0);
631
+ }
632
+ if(gcd(m, n)!=1)
633
+ {
634
+ "You are trying to compute the Poincare polynomial";
635
+ "of the moduli space of Kronecker modules N("+string(q)+"; "+string(m)+", "+string(n)+").";
636
+ "Notice that gcd(m,n)=1 is expected to get the correct Poincare polynomial";
637
+ "of the moduli space N(q; m, n)!";
638
+ }
639
+ def br@=basering; // remember the base ring
640
+ // add additional variable t@ to the base ring
641
+ ring r@ = create_ring(ring_list(basering)[1], "("+varstr(basering)+", t@)", "dp", "no_minpoly");
642
+ execute( "map F= br@,"+varstr(br@)+";" ); // define the corresponding inclusion of rings
643
+ poly rez=(1-t@^2)*PPolyW(q, m, n, t@, d);
644
+ ideal I=t@^(2*d+1);
645
+ rez=NF(rez, I);
646
+ matrix CF=coeffs(rez, t@); // take the matrix of the coefficients
647
+ list res; // and transform it to a list
648
+ d=size(CF);
649
+ int i;
650
+ for(i=1; i<=d; i++)
651
+ {
652
+ res=res + list(int(CF[i, 1])) ;
653
+ }
654
+ setring br@; // come back to the initial base ring
655
+ return(res);
656
+ }
657
+ example
658
+ {
659
+ "EXAMPLE:"; echo=2;
660
+ ring r=0, (t), dp;
661
+ // get the Betti numbers of N(3; 2, 3)
662
+ print( BettiNumsN(3, 2, 3) );
663
+ }
664
+ //----------------------------------------------------------------------------------------
665
+ // The procedures below are for the internal usage only
666
+ //----------------------------------------------------------------------------------------
667
+
668
+ static proc checkBetti(list b)
669
+ "USAGE: checkBetti(b); b list of integers
670
+ RETURN: integer 1 or 0
671
+ PURPOSE: checks whether all entries of b are non-negative integers
672
+ EXAMPLE: example checkBetti; shows an example
673
+ NOTE:
674
+ "
675
+ {
676
+ int i;
677
+ int sz=size(b);
678
+ for(i=1;i<=sz;i++)
679
+ {
680
+ if( typeof(b[i])!="int" )
681
+ {
682
+ return(int(0));
683
+ }
684
+ if( b[i]<0 )
685
+ {
686
+ return(int(0));
687
+ }
688
+ }
689
+ return(int(1));
690
+ }
691
+ example
692
+ {
693
+ "EXAMPLE:"; echo=2;
694
+ ring r=0, (t), dp;
695
+ // not all entries are integers
696
+ list b=1,0,t,0,1;
697
+ print(checkBetti(b));
698
+ // all entries are integers but not all are non-negative
699
+ list b=1,0,-1,0,1;
700
+ print(checkBetti(b));
701
+ // all entries are non-negative integers
702
+ list b=1,0,1,0,1;
703
+ print(checkBetti(b));
704
+ }
705
+ //----------------------------------------------------------
706
+
707
+ static proc generFactor(poly X, int k, int i, int b, int n)
708
+ "USAGE: generFactor; X polynomial, k, b, n integers
709
+ RETURN: polynomial
710
+ PURPOSE: computes the corresponding factor from Goettsche's formula
711
+ EXAMPLE: example generFactor; shows an example
712
+ NOTE:
713
+ "
714
+ {
715
+ poly rez=0;
716
+ int j;
717
+ int pow;
718
+ pow=(-1)^(i+1)*b;
719
+ if(pow > 0)
720
+ {
721
+ rez=(1+X)^pow;
722
+ }
723
+ else
724
+ {
725
+ int m=n div k + 1;
726
+ for(j=0;j<m;j++)
727
+ {
728
+ rez=rez+ X^j;
729
+ }
730
+ rez=rez^(-pow);
731
+ }
732
+ return(rez);
733
+ }
734
+ example
735
+ {
736
+ "EXAMPLE:"; echo=2;
737
+ ring r=0, (t), ds;
738
+ // get the polynomial expansion of 1/(1-t)^2
739
+ // using the Taylor expansion of 1/(1-t) up to degree 11
740
+ // and assuming that the degree of t is 3
741
+ print( generFactor(t, 3, 0, 2, 11) );
742
+ }
743
+ //----------------------------------------------------------------------------------------
744
+ // The procedures below are related to the Kronecker modules
745
+ //----------------------------------------------------------------------------------------
746
+
747
+ static proc PPolyW(int q, int m, int n, poly t, int d, list #)
748
+ {
749
+ // without loss of generality assume that m >= n
750
+ int N;
751
+ int M;
752
+ if(n>m)
753
+ {
754
+ M = n;
755
+ N = m;
756
+ }
757
+ else
758
+ {
759
+ M = m;
760
+ N = n;
761
+ }
762
+ // now M >= N;
763
+ int i;
764
+ int j;
765
+ list plg;// will be the matrix-list with all the data
766
+ list newPlg;// will be used for computation of new entries of plg
767
+ // initial initialization of plg, M entries
768
+ for(i=1;i<=M;i++)
769
+ {
770
+ plg = plg + list( list() );
771
+ }
772
+ int ii;
773
+ int jj;
774
+ int st;
775
+ list P;
776
+ list PP;
777
+ int c;
778
+ int sz;
779
+ int pow;
780
+ poly pterm;
781
+ poly rez;// to be the result
782
+ ideal I=t^(2*d+1);
783
+ // starting in the bottom row, moving from left to right and from the bottom upwards
784
+ for(j=0;j<=N;j++)
785
+ {
786
+ for(i=max(j, 1);i<=M;i++)
787
+ {
788
+ // for each entry compute the relevant data inductively
789
+ // add the trivial polygon
790
+ newPlg = list( list( list( list(int(0), int(0)), list(i, j)) , poly(0), int(0) ) );
791
+ // first summand in the Drezet's formula
792
+ if(j==0)// if in the bottom row
793
+ {
794
+ if(i==1)
795
+ {
796
+ rez=geomS(t^2, d);
797
+ }
798
+ else
799
+ {
800
+ rez=plg[i-1][1][1][2]*geomS(t^(2*i), d div i );
801
+ }
802
+ }
803
+ else// otherwise use the values from the bottom row
804
+ {
805
+ rez=plg[i][1][1][2]*plg[j][1][1][2];
806
+ }
807
+ rez=NF(rez, I);// throw away the higher powers
808
+ //inductively compute the polygons
809
+ for(ii = 0; ii <= i; ii++)
810
+ {
811
+ st= ((j*ii) div i) + 1;
812
+ for(jj = st; jj <= j; jj++)
813
+ {
814
+ PP=list();// to be the list of polygons that will be added
815
+ P = plg[i-ii][j-jj+1];// list of smaller polygons
816
+ sz=size(P);
817
+ for(c=1;c<=sz;c++)// for every smaller polygon
818
+ {
819
+ if( jj*P[c][1][2][1]-P[c][1][2][2]*ii > 0 )// if the slopes fit
820
+ {
821
+ pow = P[c][3]+ jj*( q*(i-ii)-(j-jj) )-ii*(i-ii);// get the corresponding power
822
+ // and the corresponding product
823
+ pterm = NF(P[c][2]* plg[max(ii,jj)][min(ii,jj)+1][1][2], I);
824
+ // and add the data to PP
825
+ PP = PP + list(list(list(list(int(0),int(0))) + shift(P[c][1],ii,jj),pterm,pow));
826
+ // throw away the summands from the polygons with non-admissible slopes and pow<0
827
+ if(pterm!=0)
828
+ {
829
+ rez=rez-t^(2*pow) * pterm;// add the next summand
830
+ }
831
+ }
832
+ }
833
+ newPlg=newPlg + PP;// add the new polygons to the list
834
+ }
835
+ }
836
+ rez=NF(rez, I);// throw away the higher powers
837
+ newPlg[1][2]=rez;// set the polynomial corresponding to the trivial polygon
838
+ plg[i]=plg[i]+list(newPlg);// add the new data
839
+ // now all the data for (i, j) have been computed
840
+ }
841
+ }
842
+ if(size(#)==0)// if there are no optional parameters
843
+ {
844
+ return(plg[M][N+1][1][2]);// return the polynomial of the upper right entry
845
+ }
846
+ else// otherwise return all the computed data
847
+ {
848
+ return(plg);
849
+ }
850
+ }
851
+ //----------------------------------------------------------
852
+
853
+ static proc dimKron(int q, int m, int n)
854
+ {
855
+ if( (q<3)||(m<0)||(n<0) )
856
+ {
857
+ "Check the input data!";
858
+ "It is expected that for the moduli space of Kronecker modules N(q; m, n)";
859
+ "q >= 3, m >= 0, n >= 0.";
860
+ return(int(-1));
861
+ }
862
+ int ph=m^2+n^2-q*m*n;
863
+ if(ph<0)
864
+ {
865
+ return(1-ph);
866
+ }
867
+ int g=gcd(m, n);
868
+ if(g==0)
869
+ {
870
+ return(int(-1));
871
+ }
872
+ m = m div g;
873
+ n = n div g;
874
+ ph = m^2+n^2-q*m*n;
875
+ if(ph==1)
876
+ {
877
+ return(int(0));
878
+ }
879
+ else
880
+ {
881
+ return(int(-1));
882
+ }
883
+ }
884
+ //----------------------------------------------------------
885
+
886
+ static proc shift(list l, int a, int b)
887
+ {
888
+ int sz=size(l);
889
+ int i;
890
+ for(i=1;i<=sz;i++)
891
+ {
892
+ l[i][1]=l[i][1]+a;
893
+ l[i][2]=l[i][2]+b;
894
+ }
895
+ return(l);
896
+ }
897
+ //----------------------------------------------------------
898
+
899
+ static proc geomS(poly t, int d)
900
+ {
901
+ poly rez=1;
902
+ int i;
903
+ for(i=1;i<=d;i++)
904
+ {
905
+ rez=rez+t^i;
906
+ }
907
+ return(rez);
908
+ }
909
+ //----------------------------------------------------------