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,2551 @@
1
+ ////////////////////////////////////////////////////////////////////////////////
2
+ version="version schubert.lib 4.2.0.1 Jan_2021 "; // $Id: 86df014868ca417401f2c2a4bcbecf731118e722 $
3
+ category="Algebraic Geometry";
4
+ info="
5
+ LIBRARY: schubert.lib Procedures for Intersection Theory
6
+
7
+ AUTHOR: Hiep Dang, email: hiep@mathematik.uni-kl.de
8
+
9
+ OVERVIEW:
10
+
11
+ We implement new classes (variety, sheaf, stack, graph) and methods for
12
+ computing with them. An abstract variety is represented by a nonnegative
13
+ integer which is its dimension and a graded ring which is its Chow ring.
14
+ An abstract sheaf is represented by a variety and a polynomial which is its
15
+ Chern character. In particular, we implement the concrete varieties such as
16
+ projective spaces, Grassmannians, and projective bundles.
17
+
18
+ An important task of this library is related to the computation of
19
+ Gromov-Witten invariants. In particular, we implement new tools for the
20
+ computation in equivariant intersection theory. These tools are based on the
21
+ localization of moduli spaces of stable maps and Bott's formula. They are
22
+ useful for the computation of Gromov-Witten invariants. In order to do this,
23
+ we have to deal with moduli spaces of stable maps, which were introduced by
24
+ Kontsevich, and the graphs corresponding to the fixed point components of a
25
+ torus action on the moduli spaces of stable maps.
26
+
27
+ As an insightful example, the numbers of rational curves on general complete
28
+ intersection Calabi-Yau threefolds in projective spaces are computed up to
29
+ degree 6. The results are all in agreement with predictions made from mirror
30
+ symmetry computations.
31
+
32
+ REFERENCES:
33
+
34
+ Hiep Dang, Intersection theory with applications to the computation of
35
+ Gromov-Witten invariants, Ph.D thesis, TU Kaiserslautern, 2013.
36
+
37
+ Sheldon Katz and Stein A. Stromme, Schubert-A Maple package for intersection
38
+ theory and enumerative geometry, 1992.
39
+
40
+ Daniel R. Grayson, Michael E. Stillman, Stein A. Stromme, David Eisenbud and
41
+ Charley Crissman, Schubert2-A Macaulay2 package for computation in
42
+ intersection theory, 2010.
43
+
44
+ Maxim Kontsevich, Enumeration of rational curves via torus actions, 1995.
45
+
46
+ PROCEDURES:
47
+ makeVariety(int,ideal) create a variety
48
+ printVariety(variety) print procedure for a variety
49
+ productVariety(variety,variety) make the product of two varieties
50
+ ChowRing(variety) create the Chow ring of a variety
51
+ Grassmannian(int,int) create a Grassmannian as a variety
52
+ projectiveSpace(int) create a projective space as a variety
53
+ projectiveBundle(sheaf) create a projective bundle as a variety
54
+ integral(variety,poly) degree of a 0-cycle on a variety
55
+ makeSheaf(variety,poly) create a sheaf
56
+ printSheaf(sheaf) print procedure for sheaves
57
+ rankSheaf(sheaf) return the rank of a sheaf
58
+ totalChernClass(sheaf) compute the total Chern class of a sheaf
59
+ ChernClass(sheaf,int) compute the k-th Chern class of a sheaf
60
+ topChernClass(sheaf) compute the top Chern class of a sheaf
61
+ totalSegreClass(sheaf) compute the total Segre class of a sheaf
62
+ dualSheaf(sheaf) make the dual of a sheaf
63
+ tensorSheaf(sheaf,sheaf) make the tensor of two sheaves
64
+ symmetricPowerSheaf(sheaf,int) make the k-th symmetric power of a sheaf
65
+ quotSheaf(sheaf,sheaf) make the quotient of two sheaves
66
+ addSheaf(sheaf,sheaf) make the direct sum of two sheaves
67
+ makeGraphVE(list,list) create a graph from a list of vertices
68
+ and a list of edges
69
+ printGraphG(graph) print procedure for graphs
70
+ moduliSpace(variety,int) create a moduli space of stable maps as
71
+ an algebraic stack
72
+ printStack(stack) print procedure for stacks
73
+ dimStack(stack) compute the dimension of a stack
74
+ fixedPoints(stack) compute the list of graphs corresponding
75
+ the fixed point components of a torus
76
+ action on the stack
77
+ contributionBundle(stack,graph) compute the contribution bundle on a
78
+ stack at a graph
79
+ normalBundle(stack,graph) compute the normal bundle on a stack at
80
+ a graph
81
+ multipleCover(int) compute the contribution of multiple
82
+ covers of a smooth rational curve as a
83
+ Gromov-Witten invariant
84
+ linesHypersurface(int) compute the number of lines on a general
85
+ hypersurface
86
+ rationalCurve(int,list) compute the Gromov-Witten invariant
87
+ corresponding the number of rational
88
+ curves on a general Calabi-Yau threefold
89
+ sumofquotients(stack,list) prepare a command for parallel
90
+ computation
91
+ homog_part(poly,int) compute a homogeneous component of a
92
+ polynomial.
93
+ homog_parts(poly,int,int) compute the sum of homogeneous
94
+ components of a polynomial
95
+ logg(poly,int) compute Chern characters from total
96
+ Chern classes.
97
+ expp(poly,int) compute total Chern classes from Chern
98
+ characters
99
+ SchubertClass(list) compute the Schubert classes on a
100
+ Grassmannian
101
+ dualPartition(list) compute the dual of a partition
102
+
103
+ KEYWORDS: Intersection theory; Enumerative geometry; Schubert calculus;
104
+ Bott's formula; Gromov-Witten invariants.
105
+
106
+ ";
107
+
108
+ ////////////////////////////////////////////////////////////////////////////////
109
+
110
+ LIB "general.lib";
111
+ LIB "homolog.lib";
112
+ LIB "parallel.lib";
113
+ LIB "ring.lib";
114
+
115
+ ////////////////////////////////////////////////////////////////////////////////
116
+ /////////// create new objects in this library ////////////////////////////////
117
+ ////////////////////////////////////////////////////////////////////////////////
118
+
119
+ static proc mod_init()
120
+ {
121
+ newstruct("variety","int dimension, ring baseRing, ideal relations");
122
+ newstruct("sheaf","variety currentVariety, poly ChernCharacter");
123
+ newstruct("graph","list vertices, list edges");
124
+ newstruct("stack","variety currentVariety, int degreeCurve");
125
+
126
+ system("install","variety","print",printVariety,1);
127
+ system("install","variety","*",productVariety,2);
128
+ system("install","sheaf","print",printSheaf,1);
129
+ system("install","sheaf","*",tensorSheaf,2);
130
+ system("install","sheaf","+",addSheaf,2);
131
+ system("install","sheaf","-",quotSheaf,2);
132
+ system("install","sheaf","^",symmetricPowerSheaf,2);
133
+ system("install","graph","print",printGraphG,1);
134
+ system("install","stack","print",printStack,1);
135
+ }
136
+
137
+ ////////////////////////////////////////////////////////////////////////////////
138
+ //////// Procedures concerned with moduli spaces of stable maps ////////////////
139
+ ////////////////////////////////////////////////////////////////////////////////
140
+
141
+ proc printStack(stack M)
142
+ "USAGE: printStack(M); M stack
143
+ ASSUME: M is a moduli space of stable maps.
144
+ THEORY: This is the print function used by Singular to print a stack.
145
+ KEYWORDS: stack, moduli space of stable maps
146
+ EXAMPLE: example printStack; shows an example
147
+ "
148
+ {
149
+ "A moduli space of dimension", dimStack(M);
150
+ }
151
+ example
152
+ {
153
+ "EXAMPLE:"; echo=2;
154
+ ring r = 0,(x),dp;
155
+ variety P = projectiveSpace(4);
156
+ stack M = moduliSpace(P,2);
157
+ M;
158
+ }
159
+
160
+ proc moduliSpace(variety V, int d)
161
+ "USAGE: moduliSpace(V,d); V variety, d int
162
+ ASSUME: V is a projective space and d is a positive integer.
163
+ THEORY: This is the function used by Singular to create a moduli space of
164
+ stable maps from a genus zero curve to a projective space.
165
+ KEYWORDS: stack, moduli space of stable maps, rational curves
166
+ EXAMPLE: example moduliSpace; shows an example
167
+ "
168
+ {
169
+ stack M;
170
+ M.currentVariety = V;
171
+ M.degreeCurve = d;
172
+ return(M);
173
+ }
174
+ example
175
+ {
176
+ "EXAMPLE:"; echo=2;
177
+ ring r = 0,(x),dp;
178
+ variety P = projectiveSpace(4);
179
+ stack M = moduliSpace(P,2);
180
+ M;
181
+ }
182
+
183
+ proc dimStack(stack M)
184
+ "USAGE: dimStack(M); M stack
185
+ RETURN: int
186
+ INPUT: M is a moduli space of stable maps.
187
+ OUTPUT: the dimension of moduli space of stable maps.
188
+ KEYWORDS: dimension, moduli space of stable maps, rational curves
189
+ EXAMPLE: example dimStack; shows an example
190
+ "
191
+ {
192
+ variety V = M.currentVariety;
193
+ int n = V.dimension;
194
+ int d = M.degreeCurve;
195
+ return (n*d+n+d-3);
196
+ }
197
+ example
198
+ {
199
+ "EXAMPLE:"; echo=2;
200
+ ring r = 0,(x),dp;
201
+ variety P = projectiveSpace(4);
202
+ stack M = moduliSpace(P,2);
203
+ dimStack(M);
204
+ }
205
+
206
+ proc fixedPoints(stack M)
207
+ "USAGE: fixedPoints(M); M stack
208
+ RETURN: list
209
+ INPUT: M is a moduli space of stable maps.
210
+ OUTPUT: a list of graphs corresponding the fixed point components of a torus
211
+ action on a moduli space of stable maps.
212
+ KEYWORDS: fixed points, moduli space of stable maps, graph
213
+ EXAMPLE: example fixedPoints; shows an example
214
+ "
215
+ {
216
+ int i,j,k,h,m,n,p,q;
217
+ list l;
218
+ int d = M.degreeCurve;
219
+ variety V = M.currentVariety;
220
+ int r = V.dimension;
221
+ for (i=0;i<=r;i++)
222
+ {
223
+ for (j=0;j<=r;j++)
224
+ {
225
+ if (i <> j)
226
+ {
227
+ l[size(l)+1] = list(graph1(d,i,j),2*d);
228
+ }
229
+ }
230
+ }
231
+ if (d == 2)
232
+ {
233
+ for (i=0;i<=r;i++)
234
+ {
235
+ for (j=0;j<=r;j++)
236
+ {
237
+ for (k=0;k<=r;k++)
238
+ {
239
+ if (i <> j and j <> k)
240
+ {
241
+ l[size(l)+1] = list(graph2(list(1,1),i,j,k),2);
242
+ }
243
+ }
244
+ }
245
+ }
246
+ }
247
+ if (d == 3)
248
+ {
249
+ for (i=0;i<=r;i++)
250
+ {
251
+ for (j=0;j<=r;j++)
252
+ {
253
+ for (k=0;k<=r;k++)
254
+ {
255
+ if (i <> j and j <> k)
256
+ {
257
+ l[size(l)+1] = list(graph2(list(2,1),i,j,k),2);
258
+ for (h=0;h<=r;h++)
259
+ {
260
+ if (h <> k)
261
+ {
262
+ l[size(l)+1] = list(graph31(list(1,1,1),i,j,k,h),2);
263
+ }
264
+ if (h <> j)
265
+ {
266
+ l[size(l)+1] = list(graph32(list(1,1,1),i,j,k,h),6);
267
+ }
268
+ }
269
+ }
270
+ }
271
+ }
272
+ }
273
+ }
274
+ if (d == 4)
275
+ {
276
+ for (i=0;i<=r;i++)
277
+ {
278
+ for (j=0;j<=r;j++)
279
+ {
280
+ for (k=0;k<=r;k++)
281
+ {
282
+ if (i <> j and j <> k)
283
+ {
284
+ l[size(l)+1] = list(graph2(list(3,1),i,j,k),3);
285
+ l[size(l)+1] = list(graph2(list(2,2),i,j,k),8);
286
+ for (h=0;h<=r;h++)
287
+ {
288
+ if (h <> k)
289
+ {
290
+ l[size(l)+1] = list(graph31(list(2,1,1),i,j,k,h),2);
291
+ l[size(l)+1] = list(graph31(list(1,2,1),i,j,k,h),4);
292
+ }
293
+ if (h <> j)
294
+ {
295
+ l[size(l)+1] = list(graph32(list(2,1,1),i,j,k,h),4);
296
+ }
297
+ for (m=0;m<=r;m++)
298
+ {
299
+ if (k <> h and m <> h)
300
+ {
301
+ l[size(l)+1] = list(graph41(list(1,1,1,1),i,j,k,h,m),2);
302
+ }
303
+ if (k <> h and m <> k)
304
+ {
305
+ l[size(l)+1] = list(graph42(list(1,1,1,1),i,j,k,h,m),2);
306
+ }
307
+ if (h <> j and m <> j)
308
+ {
309
+ l[size(l)+1] = list(graph43(list(1,1,1,1),i,j,k,h,m),24);
310
+ }
311
+ }
312
+ }
313
+ }
314
+ }
315
+ }
316
+ }
317
+ }
318
+ if (d == 5)
319
+ {
320
+ for (i=0;i<=r;i++)
321
+ {
322
+ for (j=0;j<=r;j++)
323
+ {
324
+ for (k=0;k<=r;k++)
325
+ {
326
+ if (i <> j and j <> k)
327
+ {
328
+ l[size(l)+1] = list(graph2(list(4,1),i,j,k),4);
329
+ l[size(l)+1] = list(graph2(list(3,2),i,j,k),6);
330
+ for (h=0;h<=r;h++)
331
+ {
332
+ if (k <> h)
333
+ {
334
+ l[size(l)+1] = list(graph31(list(3,1,1),i,j,k,h),3);
335
+ l[size(l)+1] = list(graph31(list(1,3,1),i,j,k,h),6);
336
+ l[size(l)+1] = list(graph31(list(2,2,1),i,j,k,h),4);
337
+ l[size(l)+1] = list(graph31(list(2,1,2),i,j,k,h),8);
338
+ }
339
+ if (j <> h)
340
+ {
341
+ l[size(l)+1] = list(graph32(list(3,1,1),i,j,k,h),6);
342
+ l[size(l)+1] = list(graph32(list(2,2,1),i,j,k,h),8);
343
+ }
344
+ for (m=0;m<=r;m++)
345
+ {
346
+ if (k <> h and h <> m)
347
+ {
348
+ l[size(l)+1] = list(graph41(list(2,1,1,1),i,j,k,h,m),2);
349
+ l[size(l)+1] = list(graph41(list(1,2,1,1),i,j,k,h,m),2);
350
+ }
351
+ if (k <> h and k <> m)
352
+ {
353
+ l[size(l)+1] = list(graph42(list(2,1,1,1),i,j,k,h,m),4);
354
+ l[size(l)+1] = list(graph42(list(1,2,1,1),i,j,k,h,m),4);
355
+ l[size(l)+1] = list(graph42(list(1,1,2,1),i,j,k,h,m),2);
356
+ }
357
+ if (j <> h and j <> m)
358
+ {
359
+ l[size(l)+1] = list(graph43(list(2,1,1,1),i,j,k,h,m),12);
360
+ }
361
+ for (n=0;n<=r;n++)
362
+ {
363
+ if (k <> h and h <> m and m <> n)
364
+ {
365
+ l[size(l)+1] = list(graph51(list(1,1,1,1,1),i,j,k,h,m,n),2);
366
+ }
367
+ if (k <> h and h <> m and h <> n)
368
+ {
369
+ l[size(l)+1] = list(graph52(list(1,1,1,1,1),i,j,k,h,m,n),2);
370
+ }
371
+ if (k <> h and k <> m and k <> n)
372
+ {
373
+ l[size(l)+1] = list(graph53(list(1,1,1,1,1),i,j,k,h,m,n),6);
374
+ }
375
+ if (j <> h and h <> m and h <> n)
376
+ {
377
+ l[size(l)+1] = list(graph54(list(1,1,1,1,1),i,j,k,h,m,n),8);
378
+ }
379
+ if (k <> h and k <> m and h <> n)
380
+ {
381
+ l[size(l)+1] = list(graph55(list(1,1,1,1,1),i,j,k,h,m,n),2);
382
+ }
383
+ if (j <> h and j <> m and j <> n)
384
+ {
385
+ l[size(l)+1] = list(graph56(list(1,1,1,1,1),i,j,k,h,m,n),120);
386
+ }
387
+ }
388
+ }
389
+ }
390
+ }
391
+ }
392
+ }
393
+ }
394
+ }
395
+ if (d == 6)
396
+ {
397
+ for (i=0;i<=r;i++)
398
+ {
399
+ for (j=0;j<=r;j++)
400
+ {
401
+ for (k=0;k<=r;k++)
402
+ {
403
+ if (i <> j and j <> k)
404
+ {
405
+ l[size(l)+1] = list(graph2(list(5,1),i,j,k),5);
406
+ l[size(l)+1] = list(graph2(list(4,2),i,j,k),8);
407
+ l[size(l)+1] = list(graph2(list(3,3),i,j,k),18);
408
+ for (h=0;h<=r;h++)
409
+ {
410
+ if (k <> h)
411
+ {
412
+ l[size(l)+1] = list(graph31(list(4,1,1),i,j,k,h),4);
413
+ l[size(l)+1] = list(graph31(list(1,4,1),i,j,k,h),8);
414
+ l[size(l)+1] = list(graph31(list(3,2,1),i,j,k,h),6);
415
+ l[size(l)+1] = list(graph31(list(3,1,2),i,j,k,h),6);
416
+ l[size(l)+1] = list(graph31(list(1,3,2),i,j,k,h),6);
417
+ l[size(l)+1] = list(graph31(list(2,2,2),i,j,k,h),16);
418
+ }
419
+ if (j <> h)
420
+ {
421
+ l[size(l)+1] = list(graph32(list(4,1,1),i,j,k,h),8);
422
+ l[size(l)+1] = list(graph32(list(3,2,1),i,j,k,h),6);
423
+ l[size(l)+1] = list(graph32(list(2,2,2),i,j,k,h),48);
424
+ }
425
+ for (m=0;m<=r;m++)
426
+ {
427
+ if (k <> h and h <> m)
428
+ {
429
+ l[size(l)+1] = list(graph41(list(3,1,1,1),i,j,k,h,m),3);
430
+ l[size(l)+1] = list(graph41(list(1,3,1,1),i,j,k,h,m),3);
431
+ l[size(l)+1] = list(graph41(list(2,2,1,1),i,j,k,h,m),4);
432
+ l[size(l)+1] = list(graph41(list(2,1,2,1),i,j,k,h,m),4);
433
+ l[size(l)+1] = list(graph41(list(2,1,1,2),i,j,k,h,m),8);
434
+ l[size(l)+1] = list(graph41(list(1,2,2,1),i,j,k,h,m),8);
435
+ }
436
+ if (k <> h and k <> m)
437
+ {
438
+ l[size(l)+1] = list(graph42(list(3,1,1,1),i,j,k,h,m),6);
439
+ l[size(l)+1] = list(graph42(list(1,3,1,1),i,j,k,h,m),6);
440
+ l[size(l)+1] = list(graph42(list(1,1,3,1),i,j,k,h,m),3);
441
+ l[size(l)+1] = list(graph42(list(2,2,1,1),i,j,k,h,m),8);
442
+ l[size(l)+1] = list(graph42(list(1,1,2,2),i,j,k,h,m),8);
443
+ l[size(l)+1] = list(graph42(list(2,1,2,1),i,j,k,h,m),4);
444
+ l[size(l)+1] = list(graph42(list(1,2,2,1),i,j,k,h,m),4);
445
+ }
446
+ if (j <> h and j <> m)
447
+ {
448
+ l[size(l)+1] = list(graph43(list(3,1,1,1),i,j,k,h,m),18);
449
+ l[size(l)+1] = list(graph43(list(2,2,1,1),i,j,k,h,m),16);
450
+ }
451
+ for (n=0;n<=r;n++)
452
+ {
453
+ if (k <> h and h <> m and m <> n)
454
+ {
455
+ l[size(l)+1] = list(graph51(list(2,1,1,1,1),i,j,k,h,m,n),2);
456
+ l[size(l)+1] = list(graph51(list(1,2,1,1,1),i,j,k,h,m,n),2);
457
+ l[size(l)+1] = list(graph51(list(1,1,2,1,1),i,j,k,h,m,n),4);
458
+ }
459
+ if (k <> h and h <> m and h <> n)
460
+ {
461
+ l[size(l)+1] = list(graph52(list(2,1,1,1,1),i,j,k,h,m,n),4);
462
+ l[size(l)+1] = list(graph52(list(1,2,1,1,1),i,j,k,h,m,n),4);
463
+ l[size(l)+1] = list(graph52(list(1,1,2,1,1),i,j,k,h,m,n),4);
464
+ l[size(l)+1] = list(graph52(list(1,1,1,2,1),i,j,k,h,m,n),2);
465
+ }
466
+ if (k <> h and k <> m and k <> n)
467
+ {
468
+ l[size(l)+1] = list(graph53(list(2,1,1,1,1),i,j,k,h,m,n),12);
469
+ l[size(l)+1] = list(graph53(list(1,2,1,1,1),i,j,k,h,m,n),12);
470
+ l[size(l)+1] = list(graph53(list(1,1,2,1,1),i,j,k,h,m,n),4);
471
+ }
472
+ if (j <> h and h <> m and h <> n)
473
+ {
474
+ l[size(l)+1] = list(graph54(list(2,1,1,1,1),i,j,k,h,m,n),4);
475
+ l[size(l)+1] = list(graph54(list(1,1,2,1,1),i,j,k,h,m,n),16);
476
+ }
477
+ if (k <> h and k <> m and h <> n)
478
+ {
479
+ l[size(l)+1] = list(graph55(list(2,1,1,1,1),i,j,k,h,m,n),2);
480
+ l[size(l)+1] = list(graph55(list(1,2,1,1,1),i,j,k,h,m,n),2);
481
+ l[size(l)+1] = list(graph55(list(1,1,1,2,1),i,j,k,h,m,n),4);
482
+ }
483
+ if (j <> h and j <> m and j <> n)
484
+ {
485
+ l[size(l)+1] = list(graph56(list(2,1,1,1,1),i,j,k,h,m,n),48);
486
+ }
487
+ for (p=0;p<=r;p++)
488
+ {
489
+ if (k <> h and h <> m and m <> n and n <> p)
490
+ {
491
+ l[size(l)+1] = list(graph61(list(1,1,1,1,1,1),i,j,k,h,m,n,p),2);
492
+ }
493
+ if (k <> h and h <> m and m <> n and m <> p)
494
+ {
495
+ l[size(l)+1] = list(graph62(list(1,1,1,1,1,1),i,j,k,h,m,n,p),2);
496
+ }
497
+ if (k <> h and h <> m and h <> n and n <> p)
498
+ {
499
+ l[size(l)+1] = list(graph63(list(1,1,1,1,1,1),i,j,k,h,m,n,p),1);
500
+ }
501
+ if (k <> h and h <> m and h <> n and h <> p)
502
+ {
503
+ l[size(l)+1] = list(graph64(list(1,1,1,1,1,1),i,j,k,h,m,n,p),6);
504
+ }
505
+ if (k <> h and k <> m and k <> n and n <> p)
506
+ {
507
+ l[size(l)+1] = list(graph65(list(1,1,1,1,1,1),i,j,k,h,m,n,p),4);
508
+ }
509
+ if (k <> h and k <> m and m <> p and h <> n)
510
+ {
511
+ l[size(l)+1] = list(graph66(list(1,1,1,1,1,1),i,j,k,h,m,n,p),6);
512
+ }
513
+ if (j <> h and h <> m and m <> n and m <> p)
514
+ {
515
+ l[size(l)+1] = list(graph67(list(1,1,1,1,1,1),i,j,k,h,m,n,p),8);
516
+ }
517
+ if (j <> h and h <> m and h <> n and h <> p)
518
+ {
519
+ l[size(l)+1] = list(graph68(list(1,1,1,1,1,1),i,j,k,h,m,n,p),12);
520
+ }
521
+ if (j <> h and h <> m and h <> n and n <> p)
522
+ {
523
+ l[size(l)+1] = list(graph69(list(1,1,1,1,1,1),i,j,k,h,m,n,p),2);
524
+ }
525
+ if (k <> h and k <> m and k <> n and k <> p)
526
+ {
527
+ l[size(l)+1] = list(graph610(list(1,1,1,1,1,1),i,j,k,h,m,n,p),24);
528
+ }
529
+ if (j <> h and j <> m and j <> n and j <> p)
530
+ {
531
+ l[size(l)+1] = list(graph611(list(1,1,1,1,1,1),i,j,k,h,m,n,p),720);
532
+ }
533
+ }
534
+ }
535
+ }
536
+ }
537
+ }
538
+ }
539
+ }
540
+ }
541
+ }
542
+ return (l);
543
+ }
544
+ example
545
+ {
546
+ "EXAMPLE:"; echo=2;
547
+ ring r = 0,x,dp;
548
+ variety P = projectiveSpace(4);
549
+ stack M = moduliSpace(P,2);
550
+ def F = fixedPoints(M);
551
+ size(F);
552
+ typeof(F[1]) == "list";
553
+ typeof(F[1][1]) == "graph";
554
+ typeof(F[1][2]) == "int";
555
+ }
556
+
557
+ static proc torusList(variety P)
558
+ "USAGE: torusList(P); P variety
559
+ RETURN: list
560
+ INPUT: P is a projective space
561
+ OUTPUT: a list of numbers
562
+ THEORY: This is a procedure concerning the enumeration of rational curves.
563
+ KEYWORDS: torus action
564
+ EXAMPLE: example torusList; shows an example
565
+ "
566
+ {
567
+ int i;
568
+ int n = P.dimension;
569
+ list l;
570
+ for (i=0;i<=n;i++)
571
+ {
572
+ l = insert(l,number(10^i),size(l));
573
+ }
574
+ return (l);
575
+ }
576
+ example
577
+ {
578
+ "EXAMPLE:"; echo=2;
579
+ ring r = 0,x,dp;
580
+ variety P = projectiveSpace(4);
581
+ def L = torusList(P);
582
+ L;
583
+ }
584
+
585
+ proc contributionBundle(stack M, graph G, list #)
586
+ "USAGE: contributionBundle(M,G,#); M stack, G graph, # list
587
+ RETURN: number
588
+ INPUT: M is a moduli space of stable maps, G is a graph, # is a list.
589
+ OUTPUT: a number corresponding to the contribution bundle on a moduli space
590
+ of stable maps at a fixed point component (graph)
591
+ KEYWORDS: contribution bundle, graph, multiple cover, rational curve,
592
+ SEE ALSO: normalBundle
593
+ EXAMPLE: example contributionBundle; shows an example
594
+ "
595
+ {
596
+ def R = basering;
597
+ setring R;
598
+ int i,j,a;
599
+ variety P = M.currentVariety;
600
+ def L = torusList(P);
601
+ int r = P.dimension;
602
+ int d;
603
+ if (size(#)==0) {d = 2*r - 3;}
604
+ else
605
+ {
606
+ if (typeof(#[1]) == "int") {d = #[1];}
607
+ else {Error("invalid optional argument");}
608
+ }
609
+ list e = G.edges;
610
+ list v = G.vertices;
611
+ number E = 1;
612
+ number V = 1;
613
+ if (r == 1)
614
+ {
615
+ for (i=1;i<=size(v);i++)
616
+ {
617
+ V = V*(-L[v[i][1]+1])^(v[i][2]-1);
618
+ }
619
+ for (j=1;j<=size(e);j++)
620
+ {
621
+ number f = 1;
622
+ if (e[j][3]<>1)
623
+ {
624
+ for (a=1;a<e[j][3];a++)
625
+ {
626
+ f=f*(-a*L[e[j][1]+1]-(e[j][3]-a)*L[e[j][2]+1])/e[j][3];
627
+ }
628
+ }
629
+ E = E*f;
630
+ kill f;
631
+ }
632
+ return ((E*V)^2);
633
+ }
634
+ else
635
+ {
636
+ for (i=1;i<=size(v);i++)
637
+ {
638
+ V = V*((d*L[v[i][1]+1])^(v[i][2]-1));
639
+ }
640
+ for (j=1;j<=size(e);j++)
641
+ {
642
+ number f = 1;
643
+ for (a=0;a<=d*e[j][3];a++)
644
+ {
645
+ f = f*((a*L[e[j][1]+1]+(d*e[j][3]-a)*L[e[j][2]+1])/e[j][3]);
646
+ }
647
+ E = E*f;
648
+ kill f;
649
+ }
650
+ return (E/V);
651
+ }
652
+ }
653
+ example
654
+ {
655
+ "EXAMPLE:"; echo=2;
656
+ ring r = 0,x,dp;
657
+ variety P = projectiveSpace(4);
658
+ stack M = moduliSpace(P,2);
659
+ def F = fixedPoints(M);
660
+ graph G = F[1][1];
661
+ number f = contributionBundle(M,G);
662
+ number g = contributionBundle(M,G,5);
663
+ f == g;
664
+ }
665
+
666
+ proc normalBundle(stack M, graph G)
667
+ "USAGE: normalBundle(M,G); M stack, G graph
668
+ RETURN: number
669
+ INPUT: M is a moduli space of stable maps, G is a graph
670
+ OUTPUT: a number corresponding to the normal bundle on a moduli space of
671
+ stable maps at a graph
672
+ KEYWORDS: normal bundle, graph, rational curves, multiple covers, lines on
673
+ hypersurfaces
674
+ SEE ALSO: contributionBundle
675
+ EXAMPLE: example normalBundle; shows an example
676
+ {
677
+ def R = basering;
678
+ setring R;
679
+ variety P = M.currentVariety;
680
+ def L = torusList(P);
681
+ int n = P.dimension;
682
+ list e = G.edges;
683
+ list v = G.vertices;
684
+ int i,j,k,h,b,m,a;
685
+ number N = 1;
686
+ for (j=1;j<=size(e);j++)
687
+ {
688
+ int d = e[j][3];
689
+ number c = (-1)^d*factorial(d)^2;
690
+ number y = c*(L[e[j][1]+1]-L[e[j][2]+1])^(2*d)/(number(d)^(2*d));
691
+ for (k=0;k<=n;k++)
692
+ {
693
+ if (k <> e[j][1] and k <> e[j][2])
694
+ {
695
+ for (a=0;a<=d;a++)
696
+ {
697
+ y=y*((a*L[e[j][1]+1]+(d-a)*L[e[j][2]+1])/d - L[k+1]);
698
+ }
699
+ }
700
+ }
701
+ N = N*y;
702
+ kill y,d,c;
703
+ }
704
+ for (i=1;i<=size(v);i++)
705
+ {
706
+ number F = 1;
707
+ for (h=3;h<=size(v[i]);h++)
708
+ {
709
+ F = F*(L[v[i][h][1]+1]-L[v[i][h][2]+1])/v[i][h][3];
710
+ }
711
+ if (v[i][2] == 1)
712
+ {
713
+ N = N/F;
714
+ kill F;
715
+ }
716
+ else
717
+ {
718
+ number z = 1;
719
+ for (m=0;m<=n;m++)
720
+ {
721
+ if (m<>v[i][1])
722
+ {
723
+ z = z*(L[v[i][1]+1]-L[m+1]);
724
+ }
725
+ }
726
+ if (v[i][2] == 3)
727
+ {
728
+ N = N*F/z^2;
729
+ kill F,z;
730
+ }
731
+ else
732
+ {
733
+ number g = 0;
734
+ for (b=3;b<=size(v[i]);b++)
735
+ {
736
+ g = g + v[i][b][3]/(L[v[i][b][1]+1]-L[v[i][b][2]+1]);
737
+ }
738
+ N = N*F*g^(3-v[i][2])/(z^(v[i][2]-1));
739
+ kill g,F,z;
740
+ }
741
+ }
742
+ }
743
+ return (N);
744
+ }
745
+ example
746
+ {
747
+ "EXAMPLE:"; echo=2;
748
+ ring r = 0,x,dp;
749
+ variety P = projectiveSpace(4);
750
+ stack M = moduliSpace(P,2);
751
+ def F = fixedPoints(M);
752
+ graph G = F[1][1];
753
+ number f = normalBundle(M,G);
754
+ f <> 0;
755
+ }
756
+
757
+ proc multipleCover(int d)
758
+ "USAGE: multipleCover(d); d int
759
+ RETURN: number
760
+ THEORY: This is the contribution of degree d multiple covers of a smooth
761
+ rational curve as a Gromov-Witten invariant.
762
+ KEYWORDS: Gromov-Witten invariants, multiple covers
763
+ SEE ALSO: rationalCurve, linesHypersurface
764
+ EXAMPLE: example multipleCover; shows an example
765
+ "
766
+ {
767
+ def R = basering;
768
+ setring R;
769
+ variety P = projectiveSpace(1);
770
+ stack M = moduliSpace(P,d);
771
+ def F = fixedPoints(M);
772
+ int i;
773
+ number r = 0;
774
+ for (i=1;i<=size(F);i++)
775
+ {
776
+ graph G = F[i][1];
777
+ number s = contributionBundle(M,G);
778
+ number t = F[i][2]*normalBundle(M,G);
779
+ r = r + s/t;
780
+ kill s,t,G;
781
+ }
782
+ return (r);
783
+ }
784
+ example
785
+ {
786
+ "EXAMPLE:"; echo=2;
787
+ ring r = 0,x,dp;
788
+ multipleCover(1);
789
+ multipleCover(2);
790
+ multipleCover(3);
791
+ multipleCover(4);
792
+ multipleCover(5);
793
+ multipleCover(6);
794
+ }
795
+
796
+ proc linesHypersurface(int n)
797
+ "USAGE: linesHypersurface(n); n int
798
+ RETURN: number
799
+ THEORY: This is the number of lines on a general hypersurface of degree
800
+ d = 2n-3 in an n-dimensional projective space.
801
+ KEYWORDS: Gromov-Witten invariants, lines on hypersurfaces
802
+ SEE ALSO: linesHypersurface, multipleCover
803
+ EXAMPLE: example linesHypersurface; shows an example
804
+ "
805
+ {
806
+ def R = basering;
807
+ setring R;
808
+ variety P = projectiveSpace(n);
809
+ stack M = moduliSpace(P,1);
810
+ def F = fixedPoints(M);
811
+ int i;
812
+ number r = 0;
813
+ for (i=1;i<=size(F);i++)
814
+ {
815
+ graph G = F[i][1];
816
+ number s = contributionBundle(M,G);
817
+ number t = F[i][2]*normalBundle(M,G);
818
+ r = r + s/t;
819
+ kill s,t,G;
820
+ }
821
+ return (r);
822
+ }
823
+ example
824
+ {
825
+ "EXAMPLE:"; echo=2;
826
+ ring r = 0,x,dp;
827
+ linesHypersurface(2);
828
+ linesHypersurface(3);
829
+ linesHypersurface(4);
830
+ linesHypersurface(5);
831
+ linesHypersurface(6);
832
+ linesHypersurface(7);
833
+ linesHypersurface(8);
834
+ linesHypersurface(9);
835
+ linesHypersurface(10);
836
+ }
837
+
838
+ proc sumofquotients(stack M, list F, list #)
839
+ "USAGE: sumofquotient(M,F,#); M stack, F list, # list
840
+ RETURN: number
841
+ THEORY: This is useful for the parallel computation of rationalCurve.
842
+ KEYWORDS: Gromov-Witten invariants, rational curves on Calabi-Yau threefolds
843
+ EXAMPLE: example sumofquotients; shows an example
844
+ "
845
+ {
846
+ if (size(#) == 0) {list l = 5;}
847
+ else {list l = #;}
848
+ number sum = 0;
849
+ number s, t;
850
+ int i,j;
851
+ for (i = size(F); i > 0; i--)
852
+ {
853
+ s = 1;
854
+ for (j=1;j<=size(l);j++)
855
+ {
856
+ s = s*contributionBundle(M,F[i][1],list(l[j]));
857
+ }
858
+ t = F[i][2]*normalBundle(M,F[i][1]);
859
+ sum = sum + s/t;
860
+ }
861
+ return(sum);
862
+ }
863
+ example
864
+ {
865
+ "EXAMPLE:"; echo=2;
866
+ ring r = 0,x,dp;
867
+ variety P = projectiveSpace(4);
868
+ stack M = moduliSpace(P,2);
869
+ list F = fixedPoints(M);
870
+ sumofquotients(M,F);
871
+ sumofquotients(M,F,list(5));
872
+ }
873
+
874
+ proc rationalCurve(int d, list #)
875
+ "USAGE: rationalCurve(d,#); d int, # list
876
+ RETURN: number
877
+ THEORY: This is the Gromov-Witten invariant corresponding the number of
878
+ rational curves on a general Calabi-Yau threefold.
879
+ KEYWORDS: Gromov-Witten invariants, rational curves on Calabi-Yau threefolds
880
+ SEE ALSO: linesHypersurface, multipleCover
881
+ EXAMPLE: example rationalCurve; shows an example
882
+ "
883
+ {
884
+ def R = basering;
885
+ setring R;
886
+ int n,i;
887
+ if (size(#) == 0) {n = 4; list l = 5;}
888
+ else {n = size(#)+3; list l = #;}
889
+ variety P = projectiveSpace(n);
890
+ stack M = moduliSpace(P,d);
891
+ def F = fixedPoints(M);
892
+ int ncpus = system("--cpus");
893
+ int sizeF = size(F);
894
+ list args;
895
+ int from = 1;
896
+ int to;
897
+ if (ncpus>sizeF) { ncpus=sizeF; }
898
+ for (i = 1; i <= ncpus; i++)
899
+ {
900
+ to = (sizeF*i) div ncpus;
901
+ args[i] = list(M, list(F[from..to]), l);
902
+ from = to+1;
903
+ }
904
+ list results = parallelWaitAll("sumofquotients", args);
905
+ number r = 0;
906
+ for (i = 1; i <= ncpus; i++)
907
+ {
908
+ r = r + results[i];
909
+ }
910
+ return (r);
911
+ }
912
+ example
913
+ {
914
+ "EXAMPLE:"; echo=2;
915
+ ring r = 0,x,dp;
916
+ rationalCurve(1);
917
+ /*
918
+ rationalCurve(2);
919
+ rationalCurve(3);
920
+ rationalCurve(4);
921
+ rationalCurve(1,list(4,2));
922
+ rationalCurve(1,list(3,3));
923
+ rationalCurve(1,list(3,2,2));
924
+ rationalCurve(1,list(2,2,2,2));
925
+ rationalCurve(2,list(4,2));
926
+ rationalCurve(2,list(3,3));
927
+ rationalCurve(2,list(3,2,2));
928
+ rationalCurve(2,list(2,2,2,2));
929
+ rationalCurve(3,list(4,2));
930
+ rationalCurve(3,list(3,3));
931
+ rationalCurve(3,list(3,2,2));
932
+ rationalCurve(3,list(2,2,2,2));
933
+ rationalCurve(4,list(4,2));
934
+ rationalCurve(4,list(3,3));
935
+ rationalCurve(4,list(3,2,2));
936
+ rationalCurve(4,list(2,2,2,2));
937
+ */
938
+ }
939
+
940
+ ////////////////////////////////////////////////////////////////////////////////
941
+ /////////// Procedures concerned with graphs ///////////////////////////////////
942
+ ////////////////////////////////////////////////////////////////////////////////
943
+
944
+ proc printGraphG(graph G)
945
+ "USAGE: printGraphG(G); G graph
946
+ ASSUME: G is a graph.
947
+ THEORY: This is the print function used by Singular to print a graph.
948
+ KEYWORDS: graph
949
+ EXAMPLE: example printGraphG; shows an example
950
+ "
951
+ {
952
+ "A graph with", size(G.vertices), "vertices and", size(G.edges), "edges";
953
+ }
954
+ example
955
+ {
956
+ "EXAMPLE:"; echo=2;
957
+ ring r = 0,x,dp;
958
+ graph G = makeGraphVE(list(list(0,1,list(0,1,2)),list(1,1,list(1,0,2))),
959
+ list(list(0,1,2)));
960
+ G;
961
+ }
962
+
963
+ proc makeGraphVE(list v, list e)
964
+ "USAGE: makeGraphVE(v,e); v list, e list
965
+ ASSUME: v is a list of vertices, e is a list of edges.
966
+ RETURN: graph with vertices v and edges e.
967
+ THEORY: Creates a graph from a list of vertices and edges.
968
+ KEYWORDS: graph
969
+ EXAMPLE: example makeGraphVE; shows an example
970
+ {
971
+ graph G;
972
+ G.vertices = v;
973
+ G.edges = e;
974
+ return(G);
975
+ }
976
+ example
977
+ {
978
+ "EXAMPLE:"; echo=2;
979
+ ring r = 0,x,dp;
980
+ graph G = makeGraphVE(list(list(0,1,list(0,1,2)),list(1,1,list(1,0,2))),
981
+ list(list(0,1,2)));
982
+ G;
983
+ }
984
+
985
+ static proc graph1(int d, int i, int j)
986
+ {
987
+ graph G;
988
+ list f1 = i,j,d;
989
+ list f2 = j,i,d;
990
+ list v1 = i,1,f1;
991
+ list v2 = j,1,f2;
992
+ G.vertices = v1,v2;
993
+ G.edges = list(f1);
994
+ return (G);
995
+ }
996
+
997
+ static proc graph2(list d, int i, int j, int k)
998
+ {
999
+ graph G;
1000
+ list f1 = i,j,d[1];
1001
+ list f2 = j,i,d[1];
1002
+ list f3 = j,k,d[2];
1003
+ list f4 = k,j,d[2];
1004
+ list v1 = i,1,f1;
1005
+ list v2 = j,2,f2,f3;
1006
+ list v3 = k,1,f4;
1007
+ G.vertices = v1,v2,v3;
1008
+ G.edges = f1,f3;
1009
+ return (G);
1010
+ }
1011
+
1012
+ static proc graph31(list d, int i, int j, int k, int h)
1013
+ {
1014
+ graph G;
1015
+ list f1 = i,j,d[1];
1016
+ list f2 = j,i,d[1];
1017
+ list f3 = j,k,d[2];
1018
+ list f4 = k,j,d[2];
1019
+ list f5 = k,h,d[3];
1020
+ list f6 = h,k,d[3];
1021
+ list v1 = i,1,f1;
1022
+ list v2 = j,2,f2,f3;
1023
+ list v3 = k,2,f4,f5;
1024
+ list v4 = h,1,f6;
1025
+ G.vertices = v1,v2,v3,v4;
1026
+ G.edges = f1,f3,f5;
1027
+ return (G);
1028
+ }
1029
+
1030
+ static proc graph32(list d, int i, int j, int k, int h)
1031
+ {
1032
+ graph G;
1033
+ list f1 = i,j,d[1];
1034
+ list f2 = j,i,d[1];
1035
+ list f3 = j,k,d[2];
1036
+ list f4 = j,h,d[3];
1037
+ list f5 = k,j,d[2];
1038
+ list f6 = h,j,d[3];
1039
+ list v1 = i,1,f1;
1040
+ list v2 = j,3,f2,f3,f4;
1041
+ list v3 = k,1,f5;
1042
+ list v4 = h,1,f6;
1043
+ G.vertices = v1,v2,v3,v4;
1044
+ G.edges = f1,f3,f4;
1045
+ return (G);
1046
+ }
1047
+
1048
+ static proc graph41(list d, int i, int j, int k, int h, int l)
1049
+ {
1050
+ graph G;
1051
+ list f1 = i,j,d[1];
1052
+ list f2 = j,i,d[1];
1053
+ list f3 = j,k,d[2];
1054
+ list f4 = k,j,d[2];
1055
+ list f5 = k,h,d[3];
1056
+ list f6 = h,k,d[3];
1057
+ list f7 = h,l,d[4];
1058
+ list f8 = l,h,d[4];
1059
+ list v1 = i,1,f1;
1060
+ list v2 = j,2,f2,f3;
1061
+ list v3 = k,2,f4,f5;
1062
+ list v4 = h,2,f6,f7;
1063
+ list v5 = l,1,f8;
1064
+ G.vertices = v1,v2,v3,v4,v5;
1065
+ G.edges = f1,f3,f5,f7;
1066
+ return (G);
1067
+ }
1068
+
1069
+ static proc graph42(list d, int i, int j, int k, int h, int l)
1070
+ {
1071
+ graph G;
1072
+ list f1 = i,j,d[1];
1073
+ list f2 = j,i,d[1];
1074
+ list f3 = j,k,d[2];
1075
+ list f4 = k,j,d[2];
1076
+ list f5 = k,h,d[3];
1077
+ list f6 = k,l,d[4];
1078
+ list f7 = h,k,d[3];
1079
+ list f8 = l,k,d[4];
1080
+ list v1 = i,1,f1;
1081
+ list v2 = j,2,f2,f3;
1082
+ list v3 = k,3,f4,f5,f6;
1083
+ list v4 = h,1,f7;
1084
+ list v5 = l,1,f8;
1085
+ G.vertices = v1,v2,v3,v4,v5;
1086
+ G.edges = f1,f3,f5,f6;
1087
+ return (G);
1088
+ }
1089
+
1090
+ static proc graph43(list d, int i, int j, int k, int h, int l)
1091
+ {
1092
+ graph G;
1093
+ list f1 = i,j,d[1];
1094
+ list f2 = j,i,d[1];
1095
+ list f3 = j,k,d[2];
1096
+ list f4 = j,h,d[3];
1097
+ list f5 = j,l,d[4];
1098
+ list f6 = k,j,d[2];
1099
+ list f7 = h,j,d[3];
1100
+ list f8 = l,j,d[4];
1101
+ list v1 = i,1,f1;
1102
+ list v2 = j,4,f2,f3,f4,f5;
1103
+ list v3 = k,1,f6;
1104
+ list v4 = h,1,f7;
1105
+ list v5 = l,1,f8;
1106
+ G.vertices = v1,v2,v3,v4,v5;
1107
+ G.edges = f1,f3,f4,f5;
1108
+ return (G);
1109
+ }
1110
+
1111
+ static proc graph51(list d, int i, int j, int k, int h, int m, int n)
1112
+ {
1113
+ graph G;
1114
+ list f1 = i,j,d[1];
1115
+ list f2 = j,i,d[1];
1116
+ list f3 = j,k,d[2];
1117
+ list f4 = k,j,d[2];
1118
+ list f5 = k,h,d[3];
1119
+ list f6 = h,k,d[3];
1120
+ list f7 = h,m,d[4];
1121
+ list f8 = m,h,d[4];
1122
+ list f9 = m,n,d[5];
1123
+ list f10 = n,m,d[5];
1124
+ list v1 = i,1,f1;
1125
+ list v2 = j,2,f2,f3;
1126
+ list v3 = k,2,f4,f5;
1127
+ list v4 = h,2,f6,f7;
1128
+ list v5 = m,2,f8,f9;
1129
+ list v6 = n,1,f10;
1130
+ G.vertices = v1,v2,v3,v4,v5,v6;
1131
+ G.edges = f1,f3,f5,f7,f9;
1132
+ return (G);
1133
+ }
1134
+
1135
+ static proc graph52(list d, int i, int j, int k, int h, int m, int n)
1136
+ {
1137
+ graph G;
1138
+ list f1 = i,j,d[1];
1139
+ list f2 = j,i,d[1];
1140
+ list f3 = j,k,d[2];
1141
+ list f4 = k,j,d[2];
1142
+ list f5 = k,h,d[3];
1143
+ list f6 = h,k,d[3];
1144
+ list f7 = h,m,d[4];
1145
+ list f8 = m,h,d[4];
1146
+ list f9 = h,n,d[5];
1147
+ list f10 = n,h,d[5];
1148
+ list v1 = i,1,f1;
1149
+ list v2 = j,2,f2,f3;
1150
+ list v3 = k,2,f4,f5;
1151
+ list v4 = h,3,f6,f7,f9;
1152
+ list v5 = m,1,f8;
1153
+ list v6 = n,1,f10;
1154
+ G.vertices = v1,v2,v3,v4,v5,v6;
1155
+ G.edges = f1,f3,f5,f7,f9;
1156
+ return (G);
1157
+ }
1158
+
1159
+ static proc graph53(list d, int i, int j, int k, int h, int m, int n)
1160
+ {
1161
+ graph G;
1162
+ list f1 = i,j,d[1];
1163
+ list f2 = j,i,d[1];
1164
+ list f3 = j,k,d[2];
1165
+ list f4 = k,j,d[2];
1166
+ list f5 = k,h,d[3];
1167
+ list f6 = h,k,d[3];
1168
+ list f7 = k,m,d[4];
1169
+ list f8 = m,k,d[4];
1170
+ list f9 = k,n,d[5];
1171
+ list f10 = n,k,d[5];
1172
+ list v1 = i,1,f1;
1173
+ list v2 = j,2,f2,f3;
1174
+ list v3 = k,4,f4,f5,f7,f9;
1175
+ list v4 = h,1,f6;
1176
+ list v5 = m,1,f8;
1177
+ list v6 = n,1,f10;
1178
+ G.vertices = v1,v2,v3,v4,v5,v6;
1179
+ G.edges = f1,f3,f5,f7,f9;
1180
+ return (G);
1181
+ }
1182
+
1183
+ static proc graph54(list d, int i, int j, int k, int h, int m, int n)
1184
+ {
1185
+ graph G;
1186
+ list f1 = i,j,d[1];
1187
+ list f2 = j,i,d[1];
1188
+ list f3 = j,k,d[2];
1189
+ list f4 = k,j,d[2];
1190
+ list f5 = j,h,d[3];
1191
+ list f6 = h,j,d[3];
1192
+ list f7 = h,m,d[4];
1193
+ list f8 = m,h,d[4];
1194
+ list f9 = h,n,d[5];
1195
+ list f10 = n,h,d[5];
1196
+ list v1 = i,1,f1;
1197
+ list v2 = j,3,f2,f3,f5;
1198
+ list v3 = k,1,f4;
1199
+ list v4 = h,3,f6,f7,f9;
1200
+ list v5 = m,1,f8;
1201
+ list v6 = n,1,f10;
1202
+ G.vertices = v1,v2,v3,v4,v5,v6;
1203
+ G.edges = f1,f3,f5,f7,f9;
1204
+ return (G);
1205
+ }
1206
+
1207
+ static proc graph55(list d, int i, int j, int k, int h, int m, int n)
1208
+ {
1209
+ graph G;
1210
+ list f1 = i,j,d[1];
1211
+ list f2 = j,i,d[1];
1212
+ list f3 = j,k,d[2];
1213
+ list f4 = k,j,d[2];
1214
+ list f5 = k,h,d[3];
1215
+ list f6 = h,k,d[3];
1216
+ list f7 = k,m,d[4];
1217
+ list f8 = m,k,d[4];
1218
+ list f9 = h,n,d[5];
1219
+ list f10 = n,h,d[5];
1220
+ list v1 = i,1,f1;
1221
+ list v2 = j,2,f2,f3;
1222
+ list v3 = k,3,f4,f5,f7;
1223
+ list v4 = h,2,f6,f9;
1224
+ list v5 = m,1,f8;
1225
+ list v6 = n,1,f10;
1226
+ G.vertices = v1,v2,v3,v4,v5,v6;
1227
+ G.edges = f1,f3,f5,f7,f9;
1228
+ return (G);
1229
+ }
1230
+
1231
+ static proc graph56(list d, int i, int j, int k, int h, int m, int n)
1232
+ {
1233
+ graph G;
1234
+ list f1 = i,j,d[1];
1235
+ list f2 = j,i,d[1];
1236
+ list f3 = j,k,d[2];
1237
+ list f4 = k,j,d[2];
1238
+ list f5 = j,h,d[3];
1239
+ list f6 = h,j,d[3];
1240
+ list f7 = j,m,d[4];
1241
+ list f8 = m,j,d[4];
1242
+ list f9 = j,n,d[5];
1243
+ list f10 = n,j,d[5];
1244
+ list v1 = i,1,f1;
1245
+ list v2 = j,5,f2,f3,f5,f7,f9;
1246
+ list v3 = k,1,f4;
1247
+ list v4 = h,1,f6;
1248
+ list v5 = m,1,f8;
1249
+ list v6 = n,1,f10;
1250
+ G.vertices = v1,v2,v3,v4,v5,v6;
1251
+ G.edges = f1,f3,f5,f7,f9;
1252
+ return (G);
1253
+ }
1254
+
1255
+ static proc graph61(list d, int i, int j, int k, int h, int m, int n, int p)
1256
+ {
1257
+ graph G;
1258
+ list f1 = i,j,d[1];
1259
+ list f2 = j,i,d[1];
1260
+ list f3 = j,k,d[2];
1261
+ list f4 = k,j,d[2];
1262
+ list f5 = k,h,d[3];
1263
+ list f6 = h,k,d[3];
1264
+ list f7 = h,m,d[4];
1265
+ list f8 = m,h,d[4];
1266
+ list f9 = m,n,d[5];
1267
+ list f10 = n,m,d[5];
1268
+ list f11 = n,p,d[6];
1269
+ list f12 = p,n,d[6];
1270
+ list v1 = i,1,f1;
1271
+ list v2 = j,2,f2,f3;
1272
+ list v3 = k,2,f4,f5;
1273
+ list v4 = h,2,f6,f7;
1274
+ list v5 = m,2,f8,f9;
1275
+ list v6 = n,2,f10,f11;
1276
+ list v7 = p,1,f12;
1277
+ G.vertices = v1,v2,v3,v4,v5,v6,v7;
1278
+ G.edges = f1,f3,f5,f7,f9,f11;
1279
+ return (G);
1280
+ }
1281
+
1282
+ static proc graph62(list d, int i, int j, int k, int h, int m, int n, int p)
1283
+ {
1284
+ graph G;
1285
+ list f1 = i,j,d[1];
1286
+ list f2 = j,i,d[1];
1287
+ list f3 = j,k,d[2];
1288
+ list f4 = k,j,d[2];
1289
+ list f5 = k,h,d[3];
1290
+ list f6 = h,k,d[3];
1291
+ list f7 = h,m,d[4];
1292
+ list f8 = m,h,d[4];
1293
+ list f9 = m,n,d[5];
1294
+ list f10 = n,m,d[5];
1295
+ list f11 = m,p,d[6];
1296
+ list f12 = p,m,d[6];
1297
+ list v1 = i,1,f1;
1298
+ list v2 = j,2,f2,f3;
1299
+ list v3 = k,2,f4,f5;
1300
+ list v4 = h,2,f6,f7;
1301
+ list v5 = m,3,f8,f9,f11;
1302
+ list v6 = n,1,f10;
1303
+ list v7 = p,1,f12;
1304
+ G.vertices = v1,v2,v3,v4,v5,v6,v7;
1305
+ G.edges = f1,f3,f5,f7,f9,f11;
1306
+ return (G);
1307
+ }
1308
+
1309
+ static proc graph63(list d, int i, int j, int k, int h, int m, int n, int p)
1310
+ {
1311
+ graph G;
1312
+ list f1 = i,j,d[1];
1313
+ list f2 = j,i,d[1];
1314
+ list f3 = j,k,d[2];
1315
+ list f4 = k,j,d[2];
1316
+ list f5 = k,h,d[3];
1317
+ list f6 = h,k,d[3];
1318
+ list f7 = h,m,d[4];
1319
+ list f8 = m,h,d[4];
1320
+ list f9 = h,n,d[5];
1321
+ list f10 = n,h,d[5];
1322
+ list f11 = n,p,d[6];
1323
+ list f12 = p,n,d[6];
1324
+ list v1 = i,1,f1;
1325
+ list v2 = j,2,f2,f3;
1326
+ list v3 = k,2,f4,f5;
1327
+ list v4 = h,3,f6,f7,f9;
1328
+ list v5 = m,1,f8;
1329
+ list v6 = n,2,f10,f11;
1330
+ list v7 = p,1,f12;
1331
+ G.vertices = v1,v2,v3,v4,v5,v6,v7;
1332
+ G.edges = f1,f3,f5,f7,f9,f11;
1333
+ return (G);
1334
+ }
1335
+
1336
+ static proc graph64(list d, int i, int j, int k, int h, int m, int n, int p)
1337
+ {
1338
+ graph G;
1339
+ list f1 = i,j,d[1];
1340
+ list f2 = j,i,d[1];
1341
+ list f3 = j,k,d[2];
1342
+ list f4 = k,j,d[2];
1343
+ list f5 = k,h,d[3];
1344
+ list f6 = h,k,d[3];
1345
+ list f7 = h,m,d[4];
1346
+ list f8 = m,h,d[4];
1347
+ list f9 = h,n,d[5];
1348
+ list f10 = n,h,d[5];
1349
+ list f11 = h,p,d[6];
1350
+ list f12 = p,h,d[6];
1351
+ list v1 = i,1,f1;
1352
+ list v2 = j,2,f2,f3;
1353
+ list v3 = k,2,f4,f5;
1354
+ list v4 = h,4,f6,f7,f9,f11;
1355
+ list v5 = m,1,f8;
1356
+ list v6 = n,1,f10;
1357
+ list v7 = p,1,f12;
1358
+ G.vertices = v1,v2,v3,v4,v5,v6,v7;
1359
+ G.edges = f1,f3,f5,f7,f9,f11;
1360
+ return (G);
1361
+ }
1362
+
1363
+ static proc graph65(list d, int i, int j, int k, int h, int m, int n, int p)
1364
+ {
1365
+ graph G;
1366
+ list f1 = i,j,d[1];
1367
+ list f2 = j,i,d[1];
1368
+ list f3 = j,k,d[2];
1369
+ list f4 = k,j,d[2];
1370
+ list f5 = k,h,d[3];
1371
+ list f6 = h,k,d[3];
1372
+ list f7 = k,m,d[4];
1373
+ list f8 = m,k,d[4];
1374
+ list f9 = k,n,d[5];
1375
+ list f10 = n,k,d[5];
1376
+ list f11 = n,p,d[6];
1377
+ list f12 = p,n,d[6];
1378
+ list v1 = i,1,f1;
1379
+ list v2 = j,2,f2,f3;
1380
+ list v3 = k,4,f4,f5,f7,f9;
1381
+ list v4 = h,1,f6;
1382
+ list v5 = m,1,f8;
1383
+ list v6 = n,2,f10,f11;
1384
+ list v7 = p,1,f12;
1385
+ G.vertices = v1,v2,v3,v4,v5,v6,v7;
1386
+ G.edges = f1,f3,f5,f7,f9,f11;
1387
+ return (G);
1388
+ }
1389
+
1390
+ static proc graph66(list d, int i, int j, int k, int h, int m, int n, int p)
1391
+ {
1392
+ graph G;
1393
+ list f1 = i,j,d[1];
1394
+ list f2 = j,i,d[1];
1395
+ list f3 = j,k,d[2];
1396
+ list f4 = k,j,d[2];
1397
+ list f5 = k,h,d[3];
1398
+ list f6 = h,k,d[3];
1399
+ list f7 = k,m,d[4];
1400
+ list f8 = m,k,d[4];
1401
+ list f9 = h,n,d[5];
1402
+ list f10 = n,h,d[5];
1403
+ list f11 = m,p,d[6];
1404
+ list f12 = p,m,d[6];
1405
+ list v1 = i,1,f1;
1406
+ list v2 = j,2,f2,f3;
1407
+ list v3 = k,3,f4,f5,f7;
1408
+ list v4 = h,2,f6,f9;
1409
+ list v5 = m,2,f8,f11;
1410
+ list v6 = n,1,f10;
1411
+ list v7 = p,1,f12;
1412
+ G.vertices = v1,v2,v3,v4,v5,v6,v7;
1413
+ G.edges = f1,f3,f5,f7,f9,f11;
1414
+ return (G);
1415
+ }
1416
+
1417
+ static proc graph67(list d, int i, int j, int k, int h, int m, int n, int p)
1418
+ {
1419
+ graph G;
1420
+ list f1 = i,j,d[1];
1421
+ list f2 = j,i,d[1];
1422
+ list f3 = j,k,d[2];
1423
+ list f4 = k,j,d[2];
1424
+ list f5 = j,h,d[3];
1425
+ list f6 = h,j,d[3];
1426
+ list f7 = h,m,d[4];
1427
+ list f8 = m,h,d[4];
1428
+ list f9 = m,n,d[5];
1429
+ list f10 = n,m,d[5];
1430
+ list f11 = m,p,d[6];
1431
+ list f12 = p,m,d[6];
1432
+ list v1 = i,1,f1;
1433
+ list v2 = j,3,f2,f3,f5;
1434
+ list v3 = k,1,f4;
1435
+ list v4 = h,2,f6,f7;
1436
+ list v5 = m,3,f8,f9,f11;
1437
+ list v6 = n,1,f10;
1438
+ list v7 = p,1,f12;
1439
+ G.vertices = v1,v2,v3,v4,v5,v6,v7;
1440
+ G.edges = f1,f3,f5,f7,f9,f11;
1441
+ return (G);
1442
+ }
1443
+
1444
+ static proc graph68(list d, int i, int j, int k, int h, int m, int n, int p)
1445
+ {
1446
+ graph G;
1447
+ list f1 = i,j,d[1];
1448
+ list f2 = j,i,d[1];
1449
+ list f3 = j,k,d[2];
1450
+ list f4 = k,j,d[2];
1451
+ list f5 = j,h,d[3];
1452
+ list f6 = h,j,d[3];
1453
+ list f7 = h,m,d[4];
1454
+ list f8 = m,h,d[4];
1455
+ list f9 = h,n,d[5];
1456
+ list f10 = n,h,d[5];
1457
+ list f11 = h,p,d[6];
1458
+ list f12 = p,h,d[6];
1459
+ list v1 = i,1,f1;
1460
+ list v2 = j,3,f2,f3,f5;
1461
+ list v3 = k,1,f4;
1462
+ list v4 = h,4,f6,f7,f9,f11;
1463
+ list v5 = m,1,f8;
1464
+ list v6 = n,1,f10;
1465
+ list v7 = p,1,f12;
1466
+ G.vertices = v1,v2,v3,v4,v5,v6,v7;
1467
+ G.edges = f1,f3,f5,f7,f9,f11;
1468
+ return (G);
1469
+ }
1470
+
1471
+ static proc graph69(list d, int i, int j, int k, int h, int m, int n, int p)
1472
+ {
1473
+ graph G;
1474
+ list f1 = i,j,d[1];
1475
+ list f2 = j,i,d[1];
1476
+ list f3 = j,k,d[2];
1477
+ list f4 = k,j,d[2];
1478
+ list f5 = j,h,d[3];
1479
+ list f6 = h,j,d[3];
1480
+ list f7 = h,m,d[4];
1481
+ list f8 = m,h,d[4];
1482
+ list f9 = h,n,d[5];
1483
+ list f10 = n,h,d[5];
1484
+ list f11 = n,p,d[6];
1485
+ list f12 = p,n,d[6];
1486
+ list v1 = i,1,f1;
1487
+ list v2 = j,3,f2,f3,f5;
1488
+ list v3 = k,1,f4;
1489
+ list v4 = h,3,f6,f7,f9;
1490
+ list v5 = m,1,f8;
1491
+ list v6 = n,2,f10,f11;
1492
+ list v7 = p,1,f12;
1493
+ G.vertices = v1,v2,v3,v4,v5,v6,v7;
1494
+ G.edges = f1,f3,f5,f7,f9,f11;
1495
+ return (G);
1496
+ }
1497
+
1498
+ static proc graph610(list d, int i, int j, int k, int h, int m, int n, int p)
1499
+ {
1500
+ graph G;
1501
+ list f1 = i,j,d[1];
1502
+ list f2 = j,i,d[1];
1503
+ list f3 = j,k,d[2];
1504
+ list f4 = k,j,d[2];
1505
+ list f5 = k,h,d[3];
1506
+ list f6 = h,k,d[3];
1507
+ list f7 = k,m,d[4];
1508
+ list f8 = m,k,d[4];
1509
+ list f9 = k,n,d[5];
1510
+ list f10 = n,k,d[5];
1511
+ list f11 = k,p,d[6];
1512
+ list f12 = p,k,d[6];
1513
+ list v1 = i,1,f1;
1514
+ list v2 = j,2,f2,f3;
1515
+ list v3 = k,5,f4,f5,f7,f9,f11;
1516
+ list v4 = h,1,f6;
1517
+ list v5 = m,1,f8;
1518
+ list v6 = n,1,f10;
1519
+ list v7 = p,1,f12;
1520
+ G.vertices = v1,v2,v3,v4,v5,v6,v7;
1521
+ G.edges = f1,f3,f5,f7,f9,f11;
1522
+ return (G);
1523
+ }
1524
+
1525
+ static proc graph611(list d, int i, int j, int k, int h, int m, int n, int p)
1526
+ {
1527
+ graph G;
1528
+ list f1 = i,j,d[1];
1529
+ list f2 = j,i,d[1];
1530
+ list f3 = j,k,d[2];
1531
+ list f4 = k,j,d[2];
1532
+ list f5 = j,h,d[3];
1533
+ list f6 = h,j,d[3];
1534
+ list f7 = j,m,d[4];
1535
+ list f8 = m,j,d[4];
1536
+ list f9 = j,n,d[5];
1537
+ list f10 = n,j,d[5];
1538
+ list f11 = j,p,d[6];
1539
+ list f12 = p,j,d[6];
1540
+ list v1 = i,1,f1;
1541
+ list v2 = j,6,f2,f3,f5,f7,f9,f11;
1542
+ list v3 = k,1,f4;
1543
+ list v4 = h,1,f6;
1544
+ list v5 = m,1,f8;
1545
+ list v6 = n,1,f10;
1546
+ list v7 = p,1,f12;
1547
+ G.vertices = v1,v2,v3,v4,v5,v6,v7;
1548
+ G.edges = f1,f3,f5,f7,f9,f11;
1549
+ return (G);
1550
+ }
1551
+
1552
+ proc homog_part(poly f, int n)
1553
+ "USAGE: homog_part(f,n); f poly, n int
1554
+ RETURN: poly
1555
+ PURPOSE: computing the homogeneous component of a polynomial.
1556
+ EXAMPLE: example homog_part; shows examples
1557
+ "
1558
+ {
1559
+ int i;
1560
+ poly p;
1561
+ for (i=1;i<=size(f);i++)
1562
+ {
1563
+ if (deg(f[i])==n) {p=p+f[i];}
1564
+ }
1565
+ return (p);
1566
+ }
1567
+ example
1568
+ {
1569
+ "EXAMPLE:"; echo=2;
1570
+ ring r = 0,(x,y,z),wp(1,2,3);
1571
+ poly f = 1+x+x2+x3+x4+y+y2+y3+z+z2+xy+xz+yz+xyz;
1572
+ homog_part(f,0);
1573
+ homog_part(f,1);
1574
+ homog_part(f,2);
1575
+ homog_part(f,3);
1576
+ homog_part(f,4);
1577
+ homog_part(f,5);
1578
+ homog_part(f,6);
1579
+ }
1580
+
1581
+ proc homog_parts(poly f, int i, int j)
1582
+ "USAGE: homog_parts(f,i,j); f poly, i int, j int
1583
+ RETURN: poly
1584
+ THEORY: computing a polynomial which is the sum of the homogeneous
1585
+ components of a polynomial.
1586
+ EXAMPLE: example homog_parts; shows examples
1587
+ "
1588
+ {
1589
+ int k;
1590
+ poly p;
1591
+ for (k=i;k<=j;k++)
1592
+ {
1593
+ p=p+homog_part(f,k);
1594
+ }
1595
+ return (p);
1596
+ }
1597
+ example
1598
+ {
1599
+ "EXAMPLE:"; echo=2;
1600
+ ring r = 0,(x,y,z),wp(1,2,3);
1601
+ poly f = 1+x+x2+x3+x4+y+y2+y3+z+z2+xy+xz+yz+xyz;
1602
+ homog_parts(f,2,4);
1603
+ }
1604
+
1605
+ proc logg(poly f, int n)
1606
+ "USAGE: logg(f,n); f poly, n int
1607
+ RETURN: poly
1608
+ THEORY: computing Chern characters from total Chern classes.
1609
+ EXAMPLE: example logg; shows examples
1610
+ "
1611
+ {
1612
+ poly p;
1613
+ int i,j,k,m;
1614
+ if (n==0) {p=0;}
1615
+ if (n==1) {p=homog_part(f,1);}
1616
+ else
1617
+ {
1618
+ list l=-homog_part(f,1);
1619
+ for (j=2;j<=n;j++)
1620
+ {
1621
+ poly q;
1622
+ for (k=1;k<j;k++)
1623
+ {
1624
+ q=q+homog_part(f,k)*l[j-k];
1625
+ }
1626
+ q=-j*homog_part(f,j)-q;
1627
+ l=insert(l,q,size(l));
1628
+ kill q;
1629
+ }
1630
+ for (m=1;m<=n;m++)
1631
+ {
1632
+ p=p+1/factorial(m)*(-1)^m*l[m];
1633
+ }
1634
+ }
1635
+ return (p);
1636
+ }
1637
+ example
1638
+ {
1639
+ "EXAMPLE:"; echo=2;
1640
+ ring r = 0,(x,y),wp(1,2);
1641
+ poly f = 1+x+y;
1642
+ logg(f,4);
1643
+ }
1644
+
1645
+ proc expp(poly f, int n)
1646
+ "USAGE: expp(f,n); f poly, n int
1647
+ RETURN: poly
1648
+ PURPOSE: computing total Chern classes from Chern characters.
1649
+ EXAMPLE: example expp; shows examples
1650
+ "
1651
+ {
1652
+ poly p;
1653
+ int i,j,k;
1654
+ if (deg(f)==0) {p=1;}
1655
+ else
1656
+ {
1657
+ list l=1;
1658
+ for (i=1;i<=n;i++)
1659
+ {
1660
+ poly q;
1661
+ for (j=1;j<=i;j++)
1662
+ {
1663
+ q=q+factorial(j)*(-1)^(j-1)*l[i-j+1]*homog_part(f,j)/i;
1664
+ }
1665
+ l=insert(l,q,size(l));
1666
+ kill q;
1667
+ }
1668
+ for (k=1;k<=size(l);k++)
1669
+ {
1670
+ p=p+l[k];
1671
+ }
1672
+ }
1673
+ return (p);
1674
+ }
1675
+ example
1676
+ {
1677
+ "EXAMPLE:"; echo=2;
1678
+ ring r = 0,x,dp;
1679
+ poly f = 3+x;
1680
+ expp(f,3);
1681
+ }
1682
+
1683
+ static proc adams(poly f, int n)
1684
+ {
1685
+ poly p;
1686
+ int i;
1687
+ for (i=0;i<=deg(f);i++)
1688
+ {
1689
+ p=p+n^i*homog_part(f,i);
1690
+ }
1691
+ return (p);
1692
+ }
1693
+
1694
+ static proc wedges(int n, poly f, int d)
1695
+ {
1696
+ int i,j;
1697
+ list l;
1698
+ if (n==0) {l=1;}
1699
+ if (n==1) {l=1,f;}
1700
+ else
1701
+ {
1702
+ l=1,f;
1703
+ for (i=2;i<=n;i++)
1704
+ {
1705
+ poly q;
1706
+ for (j=1;j<=i;j++)
1707
+ {
1708
+ q=q+((-1)^(i-j))*homog_parts(l[j]*adams(f,i-j+1),0,d)/i;
1709
+ }
1710
+ l=insert(l,q,size(l));
1711
+ kill q;
1712
+ }
1713
+ }
1714
+ return (l);
1715
+ }
1716
+
1717
+ static proc schur(list p, poly f)
1718
+ {
1719
+ int i,j;
1720
+ int n = size(p);
1721
+ matrix M[n][n];
1722
+ for (i=1;i<=n;i++)
1723
+ {
1724
+ for (j=1;j<=n;j++)
1725
+ {
1726
+ M[i,j] = homog_part(f,p[i]+j-i);
1727
+ }
1728
+ }
1729
+ return (det(M));
1730
+ }
1731
+
1732
+ ////////////////////////////////////////////////////////////////////////////////
1733
+ //////// Procedures concerned with abstract varieties //////////////////////////
1734
+ ////////////////////////////////////////////////////////////////////////////////
1735
+
1736
+ proc printVariety(variety V)
1737
+ "USAGE: printVariety(V); V variety
1738
+ ASSUME: V is an abstract variety
1739
+ THEORY: This is the print function used by Singular to print an abstract
1740
+ variety.
1741
+ KEYWORDS: abstract variety, projective space, Grassmannian
1742
+ EXAMPLE: example printVariety; shows an example
1743
+ "
1744
+ {
1745
+ "A variety of dimension", V.dimension;
1746
+ }
1747
+ example
1748
+ {
1749
+ "EXAMPLE:"; echo=2;
1750
+ ring r = 0,(h,e),wp(1,1);
1751
+ ideal rels = he,h2+e2;
1752
+ variety V = makeVariety(2,rels);
1753
+ V;
1754
+ }
1755
+
1756
+ proc makeVariety(int d, ideal i)
1757
+ "USAGE: makeVariety(d,i); d int, i ideal
1758
+ ASSUME: d is a nonnegative integer, i is an ideal
1759
+ RETURN: variety
1760
+ THEORY: create an abstract variety which has dimension d, and its Chow ring
1761
+ should be a quotient ring
1762
+ KEYWORDS: abstract variety, projective space, Grassmannian
1763
+ EXAMPLE: example makeVariety; shows an example
1764
+ "
1765
+ {
1766
+ def R = basering;
1767
+ variety V;
1768
+ V.dimension = d;
1769
+ V.baseRing = R;
1770
+ V.relations = i;
1771
+ return(V);
1772
+ }
1773
+ example
1774
+ {
1775
+ "EXAMPLE:"; echo=2;
1776
+ ring r = 0,(h,e),wp(1,1);
1777
+ ideal rels = he,h2+e2;
1778
+ variety V = makeVariety(2,rels);
1779
+ V;
1780
+ V.dimension;
1781
+ V.relations;
1782
+ }
1783
+
1784
+ proc ChowRing(variety V)
1785
+ "USAGE: ChowRing(V); V variety
1786
+ ASSUME: V is an abstract variety
1787
+ RETURN: qring
1788
+ KEYWORDS: Chow ring, abstract variety, projective space, Grassmannian
1789
+ EXAMPLE: example makeVariety; shows an example
1790
+ "
1791
+ {
1792
+ def R = V.baseRing;
1793
+ setring R;
1794
+ ideal rels = V.relations;
1795
+ qring CR = std(rels);
1796
+ return (CR);
1797
+ }
1798
+ example
1799
+ {
1800
+ "EXAMPLE:"; echo=2;
1801
+ ring r = 0,(h,e),wp(1,1);
1802
+ ideal rels = he,h2+e2;
1803
+ int d = 2;
1804
+ variety V = makeVariety(2,rels);
1805
+ ChowRing(V);
1806
+ }
1807
+
1808
+ ////////////////////////////////////////////////////////////////////////////////
1809
+
1810
+ proc Grassmannian(int k, int n, list #)
1811
+ "USAGE: Grassmannian(k,n); k int, n int
1812
+ RETURN: variety
1813
+ THEORY: create a Grassmannian G(k,n) as an abstract variety. This abstract
1814
+ variety has diemnsion k(n-k) and its Chow ring is the quotient ring
1815
+ of a polynomial ring in n-k variables q(1),...,q(n-k), which are the
1816
+ Chern classes of tautological quotient bundle on G(k,n), modulo some
1817
+ ideal generated by n-k polynomials which come from the Giambelli
1818
+ formula. The monomial ordering of this Chow ring is 'wp' with vector
1819
+ (1..k,1..n-k). Moreover, we export the Chern characters of
1820
+ tautological subbundle and quotient bundle on G(k,n)
1821
+ (say 'subBundle' and 'quotientBundle').
1822
+ KEYWORDS: Grassmannian, abstract variety, Schubert calculus
1823
+ SEE ALSO: projectiveSpace, projectiveBundle
1824
+ EXAMPLE: example Grassmannian; shows examples
1825
+ "
1826
+ {
1827
+ string q;
1828
+ if (size(#)==0) {q = "q";}
1829
+ else
1830
+ {
1831
+ if (typeof(#[1]) == "string") {q = #[1];}
1832
+ else {Error("invalid optional argument");}
1833
+ }
1834
+ variety G;
1835
+ G.dimension = k*(n-k);
1836
+ execute("ring r = 0,("+q+"(1..n-k)),wp(1..n-k);");
1837
+ setring r;
1838
+ G.baseRing = r;
1839
+ int i,j;
1840
+ poly v = 1;
1841
+ poly u = 1;
1842
+ for (j=1;j<=n-k;j++) {v=v+q(j);}
1843
+ list l;
1844
+ for (i=1;i<=k;i++)
1845
+ {
1846
+ l=insert(l,1,size(l));
1847
+ u=u+(-1)^i*schur(l,v);
1848
+ }
1849
+ l=insert(l,1,size(l));
1850
+ ideal rels = schur(l,v);
1851
+ int h = k+2;
1852
+ while (h<=n)
1853
+ {
1854
+ l=insert(l,1,size(l));
1855
+ rels = rels,schur(l,v);
1856
+ h++;
1857
+ }
1858
+ G.relations = rels;
1859
+ int d = k*(n-k);
1860
+ poly subBundle = reduce(logg(u,d)+k,std(rels));
1861
+ poly quotientBundle = reduce(logg(v,d)+n-k,std(rels));
1862
+ export (subBundle,quotientBundle);
1863
+ kill u,v,d,l,rels;
1864
+ return (G);
1865
+ }
1866
+ example
1867
+ {
1868
+ "EXAMPLE:"; echo=2;
1869
+ variety G24 = Grassmannian(2,4);
1870
+ G24;
1871
+ def r = G24.baseRing;
1872
+ setring r;
1873
+ subBundle;
1874
+ quotientBundle;
1875
+ G24.dimension;
1876
+ G24.relations;
1877
+ ChowRing(G24);
1878
+ }
1879
+
1880
+ proc projectiveSpace(int n, list #)
1881
+ "USAGE: projectiveSpace(n); n int
1882
+ RETURN: variety
1883
+ THEORY: create a projective space of dimension n as an abstract variety. Its
1884
+ Chow ring is a quotient ring in one variable h modulo the ideal
1885
+ generated by h^(n+1).
1886
+ KEYWORDS: projective space, abstract variety
1887
+ SEE ALSO: Grassmannian, projectiveBundle
1888
+ EXAMPLE: example projectiveSpace; shows examples
1889
+ "
1890
+ {
1891
+ string h;
1892
+ if (size(#)==0) {h = "h";}
1893
+ else
1894
+ {
1895
+ if (typeof(#[1]) == "string") {h = #[1];}
1896
+ else {Error("invalid optional argument");}
1897
+ }
1898
+ variety P;
1899
+ P.dimension = n;
1900
+ ring r = create_ring(0, "("+h+")", "wp(1)");
1901
+ setring r;
1902
+ P.baseRing = r;
1903
+ ideal rels = var(1)^(n+1);
1904
+ P.relations = rels;
1905
+ poly u = 1;
1906
+ poly v = 1 + var(1);
1907
+ list l;
1908
+ int i;
1909
+ for (i=1;i<=n;i++)
1910
+ {
1911
+ l=insert(l,1,size(l));
1912
+ u=u+(-1)^i*schur(l,v);
1913
+ }
1914
+ poly subBundle = reduce(logg(u,n)+n,std(rels));
1915
+ poly quotientBundle = reduce(logg(v,n)+1,std(rels));
1916
+ export(subBundle,quotientBundle);
1917
+ kill rels,u,v,l;
1918
+ return (P);
1919
+ }
1920
+ example
1921
+ {
1922
+ "EXAMPLE:"; echo=2;
1923
+ variety P = projectiveSpace(3);
1924
+ P;
1925
+ P.dimension;
1926
+ def r = P.baseRing;
1927
+ setring r;
1928
+ P.relations;
1929
+ ChowRing(P);
1930
+ }
1931
+
1932
+ proc projectiveBundle(sheaf S, list #)
1933
+ "USAGE: projectiveBundle(S); S sheaf
1934
+ INPUT: a sheaf on an abstract variety
1935
+ RETURN: variety
1936
+ THEORY: create a projective bundle as an abstract variety. This is related
1937
+ to the enumeration of conics.
1938
+ KEYWORDS: projective bundle, abstract variety, sheaf, enumeration of conics
1939
+ SEE ALSO: projectiveSpace, Grassmannian
1940
+ EXAMPLE: example projectiveBundle; shows examples
1941
+ "
1942
+ {
1943
+ string z;
1944
+ if (size(#)==0) {z = "z";}
1945
+ else
1946
+ {
1947
+ if (typeof(#[1]) == "string") {z = #[1];}
1948
+ else {Error("invalid optional argument");}
1949
+ }
1950
+ variety A;
1951
+ def B = S.currentVariety;
1952
+ def R = B.baseRing;
1953
+ setring R;
1954
+ ideal rels = B.relations;
1955
+ int r = rankSheaf(S);
1956
+ A.dimension = r - 1 + B.dimension;
1957
+ poly c = totalChernClass(S);
1958
+ ring P = create_ring(0, "("+z+")", "wp(1)");
1959
+ def CR = P + R;
1960
+ setring CR;
1961
+ A.baseRing = CR;
1962
+ poly c = imap(R,c);
1963
+ ideal rels = imap(R,rels);
1964
+ poly g = var(1)^r;
1965
+ int i;
1966
+ for (i=1;i<=r;i++) {g=g+var(1)^(r-i)*homog_part(c,i);}
1967
+ A.relations = rels,g;
1968
+ poly u = 1 + var(1);
1969
+ poly f = logg(u,A.dimension)+1;
1970
+ poly QuotientBundle = reduce(f,std(A.relations));
1971
+ export (QuotientBundle);
1972
+ kill f,rels;
1973
+ return (A);
1974
+ }
1975
+ example
1976
+ {
1977
+ "EXAMPLE:"; echo=2;
1978
+ variety G = Grassmannian(3,5);
1979
+ def r = G.baseRing;
1980
+ setring r;
1981
+ sheaf S = makeSheaf(G,subBundle);
1982
+ sheaf B = dualSheaf(S)^2;
1983
+ variety PB = projectiveBundle(B);
1984
+ PB;
1985
+ def R = PB.baseRing;
1986
+ setring R;
1987
+ QuotientBundle;
1988
+ ChowRing(PB);
1989
+ }
1990
+
1991
+ proc productVariety(variety U, variety V)
1992
+ "USAGE: productVariety(U,V); U variety, V variety
1993
+ INPUT: two abstract varieties
1994
+ OUTPUT: a product variety as an abstract variety
1995
+ RETURN: variety
1996
+ KEYWORDS: product variety, abstract variety
1997
+ SEE ALSO: projectiveSpace, Grassmannian, projectiveBundle
1998
+ EXAMPLE: example productVariety; shows examples
1999
+ "
2000
+ {
2001
+ //def br = basering;
2002
+ def ur = U.baseRing; setring ur;
2003
+ ideal ii1 = U.relations;
2004
+ def vr = V.baseRing; setring vr;
2005
+ ideal ii2 = V.relations;
2006
+ variety W;
2007
+ W.dimension = U.dimension + V.dimension;
2008
+ def temp = ringtensor(ur,vr);
2009
+ setring temp;
2010
+ W.baseRing = temp;
2011
+ ideal i1 = imap(ur,ii1);
2012
+ ideal i2 = imap(vr,ii2);
2013
+ W.relations = i1 + i2;
2014
+ setring ur;
2015
+ kill ii1;
2016
+ setring vr;
2017
+ kill ii2;
2018
+ //setring br;
2019
+ return (W);
2020
+ }
2021
+ example
2022
+ {
2023
+ "EXAMPLE:"; echo=2;
2024
+ variety P = projectiveSpace(3);
2025
+ variety G = Grassmannian(2,4);
2026
+ variety W = productVariety(P,G);
2027
+ W;
2028
+ W.dimension == P.dimension + G.dimension;
2029
+ def r = W.baseRing;
2030
+ setring r;
2031
+ W.relations;
2032
+ }
2033
+
2034
+ ////////////////////////////////////////////////////////////////////////////////
2035
+
2036
+ proc integral(variety V, poly f)
2037
+ "USAGE: integral(V,f); V variety, f poly
2038
+ INPUT: a abstract variety and a polynomial
2039
+ RETURN: int
2040
+ PURPOSE: computing intersection numbers.
2041
+ EXAMPLE: example integral; shows an example
2042
+ "
2043
+ {
2044
+ def R = V.baseRing;
2045
+ setring R;
2046
+ ideal rels = V.relations;
2047
+ return (leadcoef(reduce(f,std(rels))));
2048
+ }
2049
+ example
2050
+ {
2051
+ "EXAMPLE:"; echo=2;
2052
+ variety G = Grassmannian(2,4);
2053
+ def r = G.baseRing;
2054
+ setring r;
2055
+ integral(G,q(1)^4);
2056
+ }
2057
+
2058
+ proc SchubertClass(list p)
2059
+ "USAGE: SchubertClass(p); p list
2060
+ INPUT: a list of integers which is a partition
2061
+ RETURN: poly
2062
+ PURPOSE: compute the Schubert classes on a Grassmannian.
2063
+ EXAMPLE: example SchubertClass; shows an example
2064
+ "
2065
+ {
2066
+ def R = basering;
2067
+ setring R;
2068
+ poly f = 1;
2069
+ if (size(p) == 0) {return (f);}
2070
+ int i;
2071
+ for (i=1;i<=nvars(R);i++)
2072
+ {
2073
+ f = f + var(i);
2074
+ }
2075
+ return (schur(p,f));
2076
+ }
2077
+ example
2078
+ {
2079
+ "EXAMPLE:"; echo=2;
2080
+ variety G = Grassmannian(2,4);
2081
+ def r = G.baseRing;
2082
+ setring r;
2083
+ list p = 1,1;
2084
+ SchubertClass(p);
2085
+ }
2086
+
2087
+ ////////////////////////////////////////////////////////////////////////////////
2088
+
2089
+ proc dualPartition(int k, int n, list p)
2090
+ "USAGE: dualPartition(k,n,p); k int, n int, p list
2091
+ INPUT: two integers and a partition
2092
+ RETURN: list
2093
+ PURPOSE: compute the dual of a partition.
2094
+ SEE ALSO: SchubertClass
2095
+ EXAMPLE: example dualPartition; shows an example
2096
+ "
2097
+ {
2098
+ while (size(p) < k)
2099
+ {
2100
+ p = insert(p,0,size(p));
2101
+ }
2102
+ int i;
2103
+ list l;
2104
+ for (i=1;i<=size(p);i++)
2105
+ {
2106
+ l[i] = n-k-p[size(p)-i+1];
2107
+ }
2108
+ return (l);
2109
+ }
2110
+ example
2111
+ {
2112
+ "EXAMPLE:"; echo=2;
2113
+ ring r = 0,(x),dp;
2114
+ dualPartition(2,4,list(2,1));
2115
+ }
2116
+
2117
+ ////////////////////////////////////////////////////////////////////////////////
2118
+ ////////// Procedures concerned with abstract sheaves ///////////////////////////////////
2119
+ ////////////////////////////////////////////////////////////////////////////////
2120
+
2121
+ proc printSheaf(sheaf S)
2122
+ "USAGE: printSheaf(S); S sheaf
2123
+ RETURN: string
2124
+ INPUT: a sheaf
2125
+ THEORY: This is the print function used by Singular to print a sheaf.
2126
+ SEE ALSO: makeSheaf, rankSheaf
2127
+ EXAMPLE: example printSheaf; shows an example
2128
+ "
2129
+ {
2130
+ "A sheaf of rank ", rankSheaf(S);
2131
+ }
2132
+ example
2133
+ {
2134
+ "EXAMPLE:"; echo=2;
2135
+ variety X;
2136
+ X.dimension = 4;
2137
+ ring r = 0,(c(1..2),d(1..3)),wp(1..2,1..3);
2138
+ setring r;
2139
+ X.baseRing = r;
2140
+ poly c = 1 + c(1) + c(2);
2141
+ poly ch = 2 + logg(c,4);
2142
+ sheaf S = makeSheaf(X,ch);
2143
+ S;
2144
+ }
2145
+
2146
+ proc makeSheaf(variety V, poly ch)
2147
+ "USAGE: makeSheaf(V,ch); V variety, ch poly
2148
+ RETURN: sheaf
2149
+ THEORY: create a sheaf on an abstract variety, and its Chern character is
2150
+ the polynomial ch.
2151
+ SEE ALSO: printSheaf, rankSheaf
2152
+ EXAMPLE: example makeSheaf; shows an example
2153
+ "
2154
+ {
2155
+ def R = basering;
2156
+ sheaf S;
2157
+ S.currentVariety = V;
2158
+ S.ChernCharacter = ch;
2159
+ return(S);
2160
+ }
2161
+ example
2162
+ {
2163
+ "EXAMPLE:"; echo=2;
2164
+ variety X;
2165
+ X.dimension = 4;
2166
+ ring r = 0,(c(1..2),d(1..3)),wp(1..2,1..3);
2167
+ setring r;
2168
+ X.baseRing = r;
2169
+ poly c = 1 + c(1) + c(2);
2170
+ poly ch = 2 + logg(c,4);
2171
+ sheaf S = makeSheaf(X,ch);
2172
+ S;
2173
+ }
2174
+
2175
+ proc rankSheaf(sheaf S)
2176
+ "USAGE: rankSheaf(S); S sheaf
2177
+ RETURN: int
2178
+ INPUT: S is a sheaf
2179
+ OUTPUT: a positive integer which is the rank of a sheaf.
2180
+ SEE ALSO: makeSheaf, printSheaf
2181
+ EXAMPLE: example rankSheaf; shows an example
2182
+ "
2183
+ {
2184
+ variety V = S.currentVariety;
2185
+ def R = V.baseRing;
2186
+ setring R;
2187
+ poly f = S.ChernCharacter;
2188
+ return (int(homog_part(f,0)));
2189
+ }
2190
+ example
2191
+ {
2192
+ "EXAMPLE:"; echo=2;
2193
+ variety G = Grassmannian(2,4);
2194
+ def R = G.baseRing;
2195
+ setring R;
2196
+ sheaf S = makeSheaf(G,subBundle);
2197
+ rankSheaf(S);
2198
+ }
2199
+
2200
+ proc totalChernClass(sheaf S)
2201
+ "USAGE: totalChernClass(S); S sheaf
2202
+ RETURN: poly
2203
+ INPUT: S is a sheaf
2204
+ OUTPUT: a polynomial which is the total Chern class of a sheaf
2205
+ SEE ALSO: totalSegreClass, topChernClass, ChernClass
2206
+ EXAMPLE: example totalChernClass; shows an example
2207
+ "
2208
+ {
2209
+ variety V = S.currentVariety;
2210
+ int d = V.dimension;
2211
+ def R = V.baseRing;
2212
+ setring R;
2213
+ poly ch = S.ChernCharacter;
2214
+ poly f = expp(ch,d);
2215
+ ideal rels = std(V.relations);
2216
+ return (reduce(f,rels));
2217
+ }
2218
+ example
2219
+ {
2220
+ "EXAMPLE:"; echo=2;
2221
+ variety X;
2222
+ X.dimension = 4;
2223
+ ring r = 0,(c(1..2),d(1..3)),wp(1..2,1..3);
2224
+ setring r;
2225
+ X.baseRing = r;
2226
+ poly c = 1 + c(1) + c(2);
2227
+ poly ch = 2 + logg(c,4);
2228
+ sheaf E = makeSheaf(X,ch);
2229
+ sheaf S = E^3;
2230
+ totalChernClass(S);
2231
+ }
2232
+
2233
+ proc ChernClass(sheaf S, int i)
2234
+ "USAGE: ChernClass(S,i); S sheaf, i int
2235
+ INPUT: S is a sheaf, i is a nonnegative integer
2236
+ RETURN: poly
2237
+ THEORY: This is the i-th Chern class of a sheaf
2238
+ SEE ALSO: topChernClass, totalChernClass
2239
+ EXAMPLE: example ChernClass; shows an example
2240
+ "
2241
+ {
2242
+ return (homog_part(totalChernClass(S),i));
2243
+ }
2244
+ example
2245
+ {
2246
+ "EXAMPLE:"; echo=2;
2247
+ variety X;
2248
+ X.dimension = 4;
2249
+ ring r = 0,(c(1..2),d(1..3)),wp(1..2,1..3);
2250
+ setring r;
2251
+ X.baseRing = r;
2252
+ poly c = 1 + c(1) + c(2);
2253
+ poly ch = 2 + logg(c,4);
2254
+ sheaf E = makeSheaf(X,ch);
2255
+ sheaf S = E^3;
2256
+ ChernClass(S,1);
2257
+ ChernClass(S,2);
2258
+ ChernClass(S,3);
2259
+ ChernClass(S,4);
2260
+ }
2261
+
2262
+ proc topChernClass(sheaf S)
2263
+ "USAGE: topChernClass(S); S sheaf
2264
+ RETURN: poly
2265
+ INPUT: S is a sheaf
2266
+ THEORY: This is the top Chern class of a sheaf
2267
+ SEE ALSO: ChernClass, totalChernClass
2268
+ EXAMPLE: example topChernClass; shows an example
2269
+ "
2270
+ {
2271
+ return (ChernClass(S,rankSheaf(S)));
2272
+ }
2273
+ example
2274
+ {
2275
+ "EXAMPLE:"; echo=2;
2276
+ variety G = Grassmannian(2,4);
2277
+ def R = G.baseRing;
2278
+ setring R;
2279
+ sheaf S = makeSheaf(G,quotientBundle);
2280
+ sheaf B = S^3;
2281
+ topChernClass(B);
2282
+ }
2283
+
2284
+ proc totalSegreClass(sheaf S)
2285
+ "USAGE: totalSegreClass(S); S sheaf
2286
+ RETURN: poly
2287
+ INPUT: S is a sheaf
2288
+ THEORY: This is the total Segre class of a sheaf.
2289
+ SEE AlSO: totalChernClass
2290
+ EXAMPLE: example totalSegreClass; shows an example
2291
+ "
2292
+ {
2293
+ //def D = dualSheaf(S);
2294
+ variety V = S.currentVariety;
2295
+ def R = V.baseRing;
2296
+ setring R;
2297
+ poly f = totalChernClass(S);
2298
+ poly g;
2299
+ int d = V.dimension;
2300
+ ideal rels = std(V.relations);
2301
+ if (f == 1) {return (1);}
2302
+ else
2303
+ {
2304
+ poly t,h;
2305
+ int i,j;
2306
+ for (i=0;i<=d;i++) {t = t + (1-f)^i;}
2307
+ for (j=0;j<=d;j++) {h = h + homog_part(t,j);}
2308
+ return (reduce(h,rels));
2309
+ }
2310
+ }
2311
+ example
2312
+ {
2313
+ "EXAMPLE:"; echo=2;
2314
+ variety G = Grassmannian(2,4);
2315
+ def R = G.baseRing;
2316
+ setring R;
2317
+ sheaf S = makeSheaf(G,subBundle);
2318
+ totalSegreClass(S);
2319
+ }
2320
+
2321
+ proc dualSheaf(sheaf S)
2322
+ "USAGE: dualSheaf(S); S sheaf
2323
+ RETURN: sheaf
2324
+ THEORY: This is the dual of a sheaf
2325
+ SEE ALSO: addSheaf, symmetricPowerSheaf, tensorSheaf, quotSheaf
2326
+ EXAMPLE: example dualSheaf; shows examples
2327
+ "
2328
+ {
2329
+ variety V = S.currentVariety;
2330
+ int d = V.dimension;
2331
+ def R = V.baseRing;
2332
+ setring R;
2333
+ poly ch = S.ChernCharacter;
2334
+ poly f = adams(ch,-1);
2335
+ sheaf D;
2336
+ D.currentVariety = V;
2337
+ D.ChernCharacter = f;
2338
+ return (D);
2339
+ }
2340
+ example
2341
+ {
2342
+ "EXAMPLE:"; echo=2;
2343
+ variety G = Grassmannian(2,4);
2344
+ def R = G.baseRing;
2345
+ setring R;
2346
+ sheaf S = makeSheaf(G,subBundle);
2347
+ sheaf D = dualSheaf(S);
2348
+ D;
2349
+ }
2350
+
2351
+ proc tensorSheaf(sheaf A, sheaf B)
2352
+ "USAGE: tensorSheaf(A,B); A sheaf, B sheaf
2353
+ RETURN: sheaf
2354
+ THEORY: This is the tensor product of two sheaves
2355
+ SEE ALSO: addSheaf, symmetricPowerSheaf, quotSheaf, dualSheaf
2356
+ EXAMPLE: example tensorSheaf; shows examples
2357
+ "
2358
+ {
2359
+ sheaf S;
2360
+ variety V1 = A.currentVariety;
2361
+ variety V2 = B.currentVariety;
2362
+ def R1 = V1.baseRing;
2363
+ setring R1;
2364
+ poly c1 = A.ChernCharacter;
2365
+ def R2 = V2.baseRing;
2366
+ setring R2;
2367
+ poly c2 = B.ChernCharacter;
2368
+ if (nvars(R1) < nvars(R2))
2369
+ {
2370
+ S.currentVariety = V2;
2371
+ poly c = imap(R1,c1);
2372
+ poly f = homog_parts(c*c2,0,V2.dimension);
2373
+ S.ChernCharacter = f;
2374
+ return (S);
2375
+ }
2376
+ else
2377
+ {
2378
+ setring R1;
2379
+ S.currentVariety = V1;
2380
+ poly c = imap(R2,c2);
2381
+ poly f = homog_parts(c1*c,0,V1.dimension);
2382
+ S.ChernCharacter = f;
2383
+ return (S);
2384
+ }
2385
+ }
2386
+ example
2387
+ {
2388
+ "EXAMPLE:"; echo=2;
2389
+ variety G = Grassmannian(3,4);
2390
+ def R = G.baseRing;
2391
+ setring R;
2392
+ sheaf S = makeSheaf(G,subBundle);
2393
+ sheaf Q = makeSheaf(G,quotientBundle);
2394
+ sheaf T = S*Q;
2395
+ T;
2396
+ }
2397
+
2398
+ proc symmetricPowerSheaf(sheaf S, int n)
2399
+ "USAGE: symmetricPowerSheaf(S,n); S sheaf, n int
2400
+ RETURN: sheaf
2401
+ THEORY: This is the n-th symmetric power of a sheaf
2402
+ SEE ALSO: quotSheaf, addSheaf, tensorSheaf, dualSheaf
2403
+ EXAMPLE: example symmetricPowerSheaf; shows examples
2404
+ "
2405
+ {
2406
+ variety V = S.currentVariety;
2407
+ def R = V.baseRing;
2408
+ setring R;
2409
+ int r = rankSheaf(S);
2410
+ int d = V.dimension;
2411
+ int i,j,m;
2412
+ poly f = S.ChernCharacter;
2413
+ poly result;
2414
+ list s,w;
2415
+ if (n==0) {result=1;}
2416
+ if (n==1) {result=f;}
2417
+ else
2418
+ {
2419
+ s = 1,f;
2420
+ w = wedges(n,f,d);
2421
+ for (i=2;i<=n;i++)
2422
+ {
2423
+ if (i<=r) {m=i;}
2424
+ else {m=r;}
2425
+ poly q;
2426
+ for (j=1;j<=m;j++)
2427
+ {
2428
+ q = q + ((-1)^(j+1))*homog_parts(w[j+1]*s[i-j+1],0,d);
2429
+ }
2430
+ s = insert(s,q,size(s));
2431
+ kill q;
2432
+ }
2433
+ result = s[n+1];
2434
+ }
2435
+ sheaf A;
2436
+ A.currentVariety = V;
2437
+ A.ChernCharacter = result;
2438
+ return (A);
2439
+ }
2440
+ example
2441
+ {
2442
+ "EXAMPLE:"; echo=2;
2443
+ variety G = Grassmannian(2,4);
2444
+ def R = G.baseRing;
2445
+ setring R;
2446
+ sheaf S = makeSheaf(G,quotientBundle);
2447
+ sheaf B = symmetricPowerSheaf(S,3);
2448
+ B;
2449
+ sheaf A = S^3;
2450
+ A;
2451
+ A.ChernCharacter == B.ChernCharacter;
2452
+ }
2453
+
2454
+ proc quotSheaf(sheaf A, sheaf B)
2455
+ "USAGE: quotSheaf(A,B); A sheaf, B sheaf
2456
+ RETURN: sheaf
2457
+ THEORY: This is the quotient of two sheaves
2458
+ SEE ALSO: addSheaf, symmetricPowerSheaf, tensorSheaf, dualSheaf
2459
+ EXAMPLE: example quotSheaf; shows an example
2460
+ "
2461
+ {
2462
+ sheaf S;
2463
+ variety V1 = A.currentVariety;
2464
+ variety V2 = B.currentVariety;
2465
+ def R1 = V1.baseRing;
2466
+ setring R1;
2467
+ poly c1 = A.ChernCharacter;
2468
+ def R2 = V2.baseRing;
2469
+ setring R2;
2470
+ poly c2 = B.ChernCharacter;
2471
+ if (nvars(R1) < nvars(R2))
2472
+ {
2473
+ S.currentVariety = V2;
2474
+ poly c = imap(R1,c1);
2475
+ S.ChernCharacter = c - c2;
2476
+ return (S);
2477
+ }
2478
+ else
2479
+ {
2480
+ setring R1;
2481
+ S.currentVariety = V1;
2482
+ poly c = imap(R2,c2);
2483
+ S.ChernCharacter = c1 - c;
2484
+ return (S);
2485
+ }
2486
+ }
2487
+ example
2488
+ {
2489
+ "EXAMPLE:"; echo=2;
2490
+ variety G = Grassmannian(3,5);
2491
+ def r = G.baseRing;
2492
+ setring r;
2493
+ sheaf S = makeSheaf(G,subBundle);
2494
+ sheaf B = dualSheaf(S)^2;
2495
+ sheaf B3 = dualSheaf(S)^3;
2496
+ sheaf B5 = dualSheaf(S)^5;
2497
+ variety PB = projectiveBundle(B);
2498
+ def R = PB.baseRing;
2499
+ setring R;
2500
+ sheaf Q = makeSheaf(PB,QuotientBundle);
2501
+ sheaf V = dualSheaf(Q)*B3;
2502
+ sheaf A = B5 - V;
2503
+ A;
2504
+ }
2505
+
2506
+ proc addSheaf(sheaf A, sheaf B)
2507
+ "USAGE: addSheaf(A,B); A sheaf, B sheaf
2508
+ RETURN: sheaf
2509
+ THEORY: This is the direct sum of two sheaves.
2510
+ SEE ALSO: quotSheaf, symmetricPowerSheaf, tensorSheaf, dualSheaf
2511
+ EXAMPLE: example addSheaf; shows an example
2512
+ "
2513
+ {
2514
+ sheaf S;
2515
+ variety V1 = A.currentVariety;
2516
+ variety V2 = B.currentVariety;
2517
+ def R1 = V1.baseRing;
2518
+ setring R1;
2519
+ poly c1 = A.ChernCharacter;
2520
+ def R2 = V2.baseRing;
2521
+ setring R2;
2522
+ poly c2 = B.ChernCharacter;
2523
+ if (nvars(R1) < nvars(R2))
2524
+ {
2525
+ S.currentVariety = V2;
2526
+ poly c = imap(R1,c1);
2527
+ S.ChernCharacter = c + c2;
2528
+ return (S);
2529
+ }
2530
+ else
2531
+ {
2532
+ setring R1;
2533
+ S.currentVariety = V1;
2534
+ poly c = imap(R2,c2);
2535
+ S.ChernCharacter = c1 + c;
2536
+ return (S);
2537
+ }
2538
+ }
2539
+ example
2540
+ {
2541
+ "EXAMPLE:"; echo=2;
2542
+ variety G = Grassmannian(3,5);
2543
+ def r = G.baseRing;
2544
+ setring r;
2545
+ sheaf S = makeSheaf(G,subBundle);
2546
+ sheaf Q = makeSheaf(G,quotientBundle);
2547
+ sheaf D = S + Q;
2548
+ D;
2549
+ D.ChernCharacter == rankSheaf(D);
2550
+ totalChernClass(D) == 1;
2551
+ }