passagemath-singular 10.6.31rc3__cp314-cp314-macosx_13_0_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 (490) hide show
  1. PySingular.cpython-314-darwin.so +0 -0
  2. passagemath_singular-10.6.31rc3.dist-info/METADATA +183 -0
  3. passagemath_singular-10.6.31rc3.dist-info/RECORD +490 -0
  4. passagemath_singular-10.6.31rc3.dist-info/WHEEL +6 -0
  5. passagemath_singular-10.6.31rc3.dist-info/top_level.txt +3 -0
  6. passagemath_singular.dylibs/libSingular-4.4.1.dylib +0 -0
  7. passagemath_singular.dylibs/libcddgmp.0.dylib +0 -0
  8. passagemath_singular.dylibs/libfactory-4.4.1.dylib +0 -0
  9. passagemath_singular.dylibs/libflint.21.0.dylib +0 -0
  10. passagemath_singular.dylibs/libgf2x.3.dylib +0 -0
  11. passagemath_singular.dylibs/libgfortran.5.dylib +0 -0
  12. passagemath_singular.dylibs/libgmp.10.dylib +0 -0
  13. passagemath_singular.dylibs/libgsl.28.dylib +0 -0
  14. passagemath_singular.dylibs/libmpfr.6.dylib +0 -0
  15. passagemath_singular.dylibs/libntl.44.dylib +0 -0
  16. passagemath_singular.dylibs/libomalloc-0.9.6.dylib +0 -0
  17. passagemath_singular.dylibs/libopenblasp-r0.3.29.dylib +0 -0
  18. passagemath_singular.dylibs/libpolys-4.4.1.dylib +0 -0
  19. passagemath_singular.dylibs/libquadmath.0.dylib +0 -0
  20. passagemath_singular.dylibs/libreadline.8.2.dylib +0 -0
  21. passagemath_singular.dylibs/libsingular_resources-4.4.1.dylib +0 -0
  22. sage/algebras/all__sagemath_singular.py +3 -0
  23. sage/algebras/fusion_rings/all.py +19 -0
  24. sage/algebras/fusion_rings/f_matrix.py +2448 -0
  25. sage/algebras/fusion_rings/fast_parallel_fmats_methods.cpython-314-darwin.so +0 -0
  26. sage/algebras/fusion_rings/fast_parallel_fmats_methods.pxd +5 -0
  27. sage/algebras/fusion_rings/fast_parallel_fmats_methods.pyx +538 -0
  28. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.cpython-314-darwin.so +0 -0
  29. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pxd +3 -0
  30. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pyx +331 -0
  31. sage/algebras/fusion_rings/fusion_double.py +899 -0
  32. sage/algebras/fusion_rings/fusion_ring.py +1580 -0
  33. sage/algebras/fusion_rings/poly_tup_engine.cpython-314-darwin.so +0 -0
  34. sage/algebras/fusion_rings/poly_tup_engine.pxd +24 -0
  35. sage/algebras/fusion_rings/poly_tup_engine.pyx +579 -0
  36. sage/algebras/fusion_rings/shm_managers.cpython-314-darwin.so +0 -0
  37. sage/algebras/fusion_rings/shm_managers.pxd +24 -0
  38. sage/algebras/fusion_rings/shm_managers.pyx +780 -0
  39. sage/algebras/letterplace/all.py +1 -0
  40. sage/algebras/letterplace/free_algebra_element_letterplace.cpython-314-darwin.so +0 -0
  41. sage/algebras/letterplace/free_algebra_element_letterplace.pxd +18 -0
  42. sage/algebras/letterplace/free_algebra_element_letterplace.pyx +755 -0
  43. sage/algebras/letterplace/free_algebra_letterplace.cpython-314-darwin.so +0 -0
  44. sage/algebras/letterplace/free_algebra_letterplace.pxd +35 -0
  45. sage/algebras/letterplace/free_algebra_letterplace.pyx +914 -0
  46. sage/algebras/letterplace/letterplace_ideal.cpython-314-darwin.so +0 -0
  47. sage/algebras/letterplace/letterplace_ideal.pyx +408 -0
  48. sage/algebras/quatalg/all.py +2 -0
  49. sage/algebras/quatalg/quaternion_algebra.py +4778 -0
  50. sage/algebras/quatalg/quaternion_algebra_cython.cpython-314-darwin.so +0 -0
  51. sage/algebras/quatalg/quaternion_algebra_cython.pyx +261 -0
  52. sage/algebras/quatalg/quaternion_algebra_element.cpython-314-darwin.so +0 -0
  53. sage/algebras/quatalg/quaternion_algebra_element.pxd +29 -0
  54. sage/algebras/quatalg/quaternion_algebra_element.pyx +2176 -0
  55. sage/all__sagemath_singular.py +11 -0
  56. sage/ext_data/all__sagemath_singular.py +1 -0
  57. sage/ext_data/singular/function_field/core.lib +98 -0
  58. sage/interfaces/all__sagemath_singular.py +1 -0
  59. sage/interfaces/singular.py +2835 -0
  60. sage/libs/all__sagemath_singular.py +1 -0
  61. sage/libs/singular/__init__.py +1 -0
  62. sage/libs/singular/decl.pxd +1168 -0
  63. sage/libs/singular/function.cpython-314-darwin.so +0 -0
  64. sage/libs/singular/function.pxd +87 -0
  65. sage/libs/singular/function.pyx +1901 -0
  66. sage/libs/singular/function_factory.py +61 -0
  67. sage/libs/singular/groebner_strategy.cpython-314-darwin.so +0 -0
  68. sage/libs/singular/groebner_strategy.pxd +22 -0
  69. sage/libs/singular/groebner_strategy.pyx +582 -0
  70. sage/libs/singular/option.cpython-314-darwin.so +0 -0
  71. sage/libs/singular/option.pyx +671 -0
  72. sage/libs/singular/polynomial.cpython-314-darwin.so +0 -0
  73. sage/libs/singular/polynomial.pxd +39 -0
  74. sage/libs/singular/polynomial.pyx +661 -0
  75. sage/libs/singular/ring.cpython-314-darwin.so +0 -0
  76. sage/libs/singular/ring.pxd +58 -0
  77. sage/libs/singular/ring.pyx +893 -0
  78. sage/libs/singular/singular.cpython-314-darwin.so +0 -0
  79. sage/libs/singular/singular.pxd +72 -0
  80. sage/libs/singular/singular.pyx +1944 -0
  81. sage/libs/singular/standard_options.py +145 -0
  82. sage/matrix/all__sagemath_singular.py +1 -0
  83. sage/matrix/matrix_mpolynomial_dense.cpython-314-darwin.so +0 -0
  84. sage/matrix/matrix_mpolynomial_dense.pxd +7 -0
  85. sage/matrix/matrix_mpolynomial_dense.pyx +615 -0
  86. sage/rings/all__sagemath_singular.py +1 -0
  87. sage/rings/function_field/all__sagemath_singular.py +1 -0
  88. sage/rings/function_field/derivations_polymod.py +911 -0
  89. sage/rings/function_field/element_polymod.cpython-314-darwin.so +0 -0
  90. sage/rings/function_field/element_polymod.pyx +406 -0
  91. sage/rings/function_field/function_field_polymod.py +2611 -0
  92. sage/rings/function_field/ideal_polymod.py +1775 -0
  93. sage/rings/function_field/order_polymod.py +1475 -0
  94. sage/rings/function_field/place_polymod.py +681 -0
  95. sage/rings/polynomial/all__sagemath_singular.py +1 -0
  96. sage/rings/polynomial/multi_polynomial_ideal_libsingular.cpython-314-darwin.so +0 -0
  97. sage/rings/polynomial/multi_polynomial_ideal_libsingular.pxd +5 -0
  98. sage/rings/polynomial/multi_polynomial_ideal_libsingular.pyx +339 -0
  99. sage/rings/polynomial/multi_polynomial_libsingular.cpython-314-darwin.so +0 -0
  100. sage/rings/polynomial/multi_polynomial_libsingular.pxd +30 -0
  101. sage/rings/polynomial/multi_polynomial_libsingular.pyx +6277 -0
  102. sage/rings/polynomial/plural.cpython-314-darwin.so +0 -0
  103. sage/rings/polynomial/plural.pxd +48 -0
  104. sage/rings/polynomial/plural.pyx +3171 -0
  105. sage/symbolic/all__sagemath_singular.py +1 -0
  106. sage/symbolic/comparison_impl.pxi +428 -0
  107. sage/symbolic/constants_c_impl.pxi +178 -0
  108. sage/symbolic/expression.cpython-314-darwin.so +0 -0
  109. sage/symbolic/expression.pxd +7 -0
  110. sage/symbolic/expression.pyx +14200 -0
  111. sage/symbolic/getitem_impl.pxi +202 -0
  112. sage/symbolic/pynac.pxi +572 -0
  113. sage/symbolic/pynac_constant_impl.pxi +133 -0
  114. sage/symbolic/pynac_function_impl.pxi +206 -0
  115. sage/symbolic/pynac_impl.pxi +2576 -0
  116. sage/symbolic/pynac_wrap.h +124 -0
  117. sage/symbolic/series_impl.pxi +272 -0
  118. sage/symbolic/substitution_map_impl.pxi +94 -0
  119. sage_wheels/bin/ESingular +0 -0
  120. sage_wheels/bin/Singular +0 -0
  121. sage_wheels/bin/TSingular +0 -0
  122. sage_wheels/lib/singular/MOD/cohomo.la +41 -0
  123. sage_wheels/lib/singular/MOD/cohomo.so +0 -0
  124. sage_wheels/lib/singular/MOD/customstd.la +41 -0
  125. sage_wheels/lib/singular/MOD/customstd.so +0 -0
  126. sage_wheels/lib/singular/MOD/freealgebra.la +41 -0
  127. sage_wheels/lib/singular/MOD/freealgebra.so +0 -0
  128. sage_wheels/lib/singular/MOD/gfanlib.la +41 -0
  129. sage_wheels/lib/singular/MOD/gfanlib.so +0 -0
  130. sage_wheels/lib/singular/MOD/gitfan.la +41 -0
  131. sage_wheels/lib/singular/MOD/gitfan.so +0 -0
  132. sage_wheels/lib/singular/MOD/interval.la +41 -0
  133. sage_wheels/lib/singular/MOD/interval.so +0 -0
  134. sage_wheels/lib/singular/MOD/loctriv.la +41 -0
  135. sage_wheels/lib/singular/MOD/loctriv.so +0 -0
  136. sage_wheels/lib/singular/MOD/machinelearning.la +41 -0
  137. sage_wheels/lib/singular/MOD/machinelearning.so +0 -0
  138. sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.la +41 -0
  139. sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.so +0 -0
  140. sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.la +41 -0
  141. sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.so +0 -0
  142. sage_wheels/lib/singular/MOD/p_Procs_FieldQ.la +41 -0
  143. sage_wheels/lib/singular/MOD/p_Procs_FieldQ.so +0 -0
  144. sage_wheels/lib/singular/MOD/p_Procs_FieldZp.la +41 -0
  145. sage_wheels/lib/singular/MOD/p_Procs_FieldZp.so +0 -0
  146. sage_wheels/lib/singular/MOD/partialgb.la +41 -0
  147. sage_wheels/lib/singular/MOD/partialgb.so +0 -0
  148. sage_wheels/lib/singular/MOD/pyobject.la +41 -0
  149. sage_wheels/lib/singular/MOD/pyobject.so +0 -0
  150. sage_wheels/lib/singular/MOD/singmathic.la +41 -0
  151. sage_wheels/lib/singular/MOD/singmathic.so +0 -0
  152. sage_wheels/lib/singular/MOD/sispasm.la +41 -0
  153. sage_wheels/lib/singular/MOD/sispasm.so +0 -0
  154. sage_wheels/lib/singular/MOD/subsets.la +41 -0
  155. sage_wheels/lib/singular/MOD/subsets.so +0 -0
  156. sage_wheels/lib/singular/MOD/systhreads.la +41 -0
  157. sage_wheels/lib/singular/MOD/systhreads.so +0 -0
  158. sage_wheels/lib/singular/MOD/syzextra.la +41 -0
  159. sage_wheels/lib/singular/MOD/syzextra.so +0 -0
  160. sage_wheels/libexec/singular/MOD/change_cost +0 -0
  161. sage_wheels/libexec/singular/MOD/singularsurf +11 -0
  162. sage_wheels/libexec/singular/MOD/singularsurf_jupyter +9 -0
  163. sage_wheels/libexec/singular/MOD/singularsurf_win +10 -0
  164. sage_wheels/libexec/singular/MOD/solve_IP +0 -0
  165. sage_wheels/libexec/singular/MOD/surfex +16 -0
  166. sage_wheels/libexec/singular/MOD/toric_ideal +0 -0
  167. sage_wheels/share/factory/gftables/10201 +342 -0
  168. sage_wheels/share/factory/gftables/1024 +37 -0
  169. sage_wheels/share/factory/gftables/10609 +356 -0
  170. sage_wheels/share/factory/gftables/11449 +384 -0
  171. sage_wheels/share/factory/gftables/11881 +398 -0
  172. sage_wheels/share/factory/gftables/121 +6 -0
  173. sage_wheels/share/factory/gftables/12167 +408 -0
  174. sage_wheels/share/factory/gftables/125 +7 -0
  175. sage_wheels/share/factory/gftables/12769 +428 -0
  176. sage_wheels/share/factory/gftables/128 +7 -0
  177. sage_wheels/share/factory/gftables/1331 +47 -0
  178. sage_wheels/share/factory/gftables/1369 +48 -0
  179. sage_wheels/share/factory/gftables/14641 +490 -0
  180. sage_wheels/share/factory/gftables/15625 +523 -0
  181. sage_wheels/share/factory/gftables/16 +3 -0
  182. sage_wheels/share/factory/gftables/16129 +540 -0
  183. sage_wheels/share/factory/gftables/16384 +549 -0
  184. sage_wheels/share/factory/gftables/16807 +563 -0
  185. sage_wheels/share/factory/gftables/1681 +58 -0
  186. sage_wheels/share/factory/gftables/169 +8 -0
  187. sage_wheels/share/factory/gftables/17161 +574 -0
  188. sage_wheels/share/factory/gftables/1849 +64 -0
  189. sage_wheels/share/factory/gftables/18769 +628 -0
  190. sage_wheels/share/factory/gftables/19321 +646 -0
  191. sage_wheels/share/factory/gftables/19683 +659 -0
  192. sage_wheels/share/factory/gftables/2048 +71 -0
  193. sage_wheels/share/factory/gftables/2187 +75 -0
  194. sage_wheels/share/factory/gftables/2197 +76 -0
  195. sage_wheels/share/factory/gftables/2209 +76 -0
  196. sage_wheels/share/factory/gftables/22201 +742 -0
  197. sage_wheels/share/factory/gftables/22801 +762 -0
  198. sage_wheels/share/factory/gftables/2401 +82 -0
  199. sage_wheels/share/factory/gftables/243 +11 -0
  200. sage_wheels/share/factory/gftables/24389 +815 -0
  201. sage_wheels/share/factory/gftables/24649 +824 -0
  202. sage_wheels/share/factory/gftables/25 +3 -0
  203. sage_wheels/share/factory/gftables/256 +11 -0
  204. sage_wheels/share/factory/gftables/26569 +888 -0
  205. sage_wheels/share/factory/gftables/27 +3 -0
  206. sage_wheels/share/factory/gftables/27889 +932 -0
  207. sage_wheels/share/factory/gftables/2809 +96 -0
  208. sage_wheels/share/factory/gftables/28561 +954 -0
  209. sage_wheels/share/factory/gftables/289 +12 -0
  210. sage_wheels/share/factory/gftables/29791 +995 -0
  211. sage_wheels/share/factory/gftables/29929 +1000 -0
  212. sage_wheels/share/factory/gftables/3125 +107 -0
  213. sage_wheels/share/factory/gftables/32 +4 -0
  214. sage_wheels/share/factory/gftables/32041 +1070 -0
  215. sage_wheels/share/factory/gftables/32761 +1094 -0
  216. sage_wheels/share/factory/gftables/32768 +1095 -0
  217. sage_wheels/share/factory/gftables/343 +14 -0
  218. sage_wheels/share/factory/gftables/3481 +118 -0
  219. sage_wheels/share/factory/gftables/361 +14 -0
  220. sage_wheels/share/factory/gftables/36481 +1218 -0
  221. sage_wheels/share/factory/gftables/3721 +126 -0
  222. sage_wheels/share/factory/gftables/37249 +1244 -0
  223. sage_wheels/share/factory/gftables/38809 +1296 -0
  224. sage_wheels/share/factory/gftables/39601 +1322 -0
  225. sage_wheels/share/factory/gftables/4 +3 -0
  226. sage_wheels/share/factory/gftables/4096 +139 -0
  227. sage_wheels/share/factory/gftables/44521 +1486 -0
  228. sage_wheels/share/factory/gftables/4489 +152 -0
  229. sage_wheels/share/factory/gftables/49 +4 -0
  230. sage_wheels/share/factory/gftables/4913 +166 -0
  231. sage_wheels/share/factory/gftables/49729 +1660 -0
  232. sage_wheels/share/factory/gftables/5041 +170 -0
  233. sage_wheels/share/factory/gftables/50653 +1691 -0
  234. sage_wheels/share/factory/gftables/512 +20 -0
  235. sage_wheels/share/factory/gftables/51529 +1720 -0
  236. sage_wheels/share/factory/gftables/52441 +1750 -0
  237. sage_wheels/share/factory/gftables/529 +20 -0
  238. sage_wheels/share/factory/gftables/5329 +180 -0
  239. sage_wheels/share/factory/gftables/54289 +1812 -0
  240. sage_wheels/share/factory/gftables/57121 +1906 -0
  241. sage_wheels/share/factory/gftables/58081 +1938 -0
  242. sage_wheels/share/factory/gftables/59049 +1971 -0
  243. sage_wheels/share/factory/gftables/6241 +210 -0
  244. sage_wheels/share/factory/gftables/625 +23 -0
  245. sage_wheels/share/factory/gftables/63001 +2102 -0
  246. sage_wheels/share/factory/gftables/64 +5 -0
  247. sage_wheels/share/factory/gftables/6561 +221 -0
  248. sage_wheels/share/factory/gftables/6859 +231 -0
  249. sage_wheels/share/factory/gftables/6889 +232 -0
  250. sage_wheels/share/factory/gftables/729 +27 -0
  251. sage_wheels/share/factory/gftables/7921 +266 -0
  252. sage_wheels/share/factory/gftables/8 +3 -0
  253. sage_wheels/share/factory/gftables/81 +5 -0
  254. sage_wheels/share/factory/gftables/8192 +276 -0
  255. sage_wheels/share/factory/gftables/841 +30 -0
  256. sage_wheels/share/factory/gftables/9 +3 -0
  257. sage_wheels/share/factory/gftables/9409 +316 -0
  258. sage_wheels/share/factory/gftables/961 +34 -0
  259. sage_wheels/share/info/singular.info +191898 -0
  260. sage_wheels/share/singular/LIB/GND.lib +1359 -0
  261. sage_wheels/share/singular/LIB/JMBTest.lib +976 -0
  262. sage_wheels/share/singular/LIB/JMSConst.lib +1363 -0
  263. sage_wheels/share/singular/LIB/KVequiv.lib +699 -0
  264. sage_wheels/share/singular/LIB/SingularityDBM.lib +491 -0
  265. sage_wheels/share/singular/LIB/VecField.lib +1542 -0
  266. sage_wheels/share/singular/LIB/absfact.lib +959 -0
  267. sage_wheels/share/singular/LIB/ainvar.lib +730 -0
  268. sage_wheels/share/singular/LIB/aksaka.lib +419 -0
  269. sage_wheels/share/singular/LIB/alexpoly.lib +2542 -0
  270. sage_wheels/share/singular/LIB/algebra.lib +1193 -0
  271. sage_wheels/share/singular/LIB/all.lib +136 -0
  272. sage_wheels/share/singular/LIB/arcpoint.lib +514 -0
  273. sage_wheels/share/singular/LIB/arnold.lib +4553 -0
  274. sage_wheels/share/singular/LIB/arnoldclassify.lib +2058 -0
  275. sage_wheels/share/singular/LIB/arr.lib +3486 -0
  276. sage_wheels/share/singular/LIB/assprimeszerodim.lib +755 -0
  277. sage_wheels/share/singular/LIB/autgradalg.lib +3361 -0
  278. sage_wheels/share/singular/LIB/bfun.lib +1964 -0
  279. sage_wheels/share/singular/LIB/bimodules.lib +774 -0
  280. sage_wheels/share/singular/LIB/brillnoether.lib +226 -0
  281. sage_wheels/share/singular/LIB/brnoeth.lib +5017 -0
  282. sage_wheels/share/singular/LIB/central.lib +2169 -0
  283. sage_wheels/share/singular/LIB/chern.lib +4162 -0
  284. sage_wheels/share/singular/LIB/cimonom.lib +571 -0
  285. sage_wheels/share/singular/LIB/cisimplicial.lib +1835 -0
  286. sage_wheels/share/singular/LIB/classify.lib +3239 -0
  287. sage_wheels/share/singular/LIB/classify2.lib +1462 -0
  288. sage_wheels/share/singular/LIB/classifyMapGerms.lib +1515 -0
  289. sage_wheels/share/singular/LIB/classify_aeq.lib +3253 -0
  290. sage_wheels/share/singular/LIB/classifyceq.lib +2092 -0
  291. sage_wheels/share/singular/LIB/classifyci.lib +1133 -0
  292. sage_wheels/share/singular/LIB/combinat.lib +91 -0
  293. sage_wheels/share/singular/LIB/compregb.lib +276 -0
  294. sage_wheels/share/singular/LIB/control.lib +1636 -0
  295. sage_wheels/share/singular/LIB/crypto.lib +3795 -0
  296. sage_wheels/share/singular/LIB/curveInv.lib +667 -0
  297. sage_wheels/share/singular/LIB/curvepar.lib +1817 -0
  298. sage_wheels/share/singular/LIB/customstd.lib +100 -0
  299. sage_wheels/share/singular/LIB/deRham.lib +5979 -0
  300. sage_wheels/share/singular/LIB/decodegb.lib +2134 -0
  301. sage_wheels/share/singular/LIB/decomp.lib +1655 -0
  302. sage_wheels/share/singular/LIB/deflation.lib +872 -0
  303. sage_wheels/share/singular/LIB/deform.lib +925 -0
  304. sage_wheels/share/singular/LIB/difform.lib +3055 -0
  305. sage_wheels/share/singular/LIB/divisors.lib +750 -0
  306. sage_wheels/share/singular/LIB/dmod.lib +5817 -0
  307. sage_wheels/share/singular/LIB/dmodapp.lib +3269 -0
  308. sage_wheels/share/singular/LIB/dmodideal.lib +1211 -0
  309. sage_wheels/share/singular/LIB/dmodloc.lib +2645 -0
  310. sage_wheels/share/singular/LIB/dmodvar.lib +818 -0
  311. sage_wheels/share/singular/LIB/dummy.lib +17 -0
  312. sage_wheels/share/singular/LIB/elim.lib +1009 -0
  313. sage_wheels/share/singular/LIB/ellipticcovers.lib +548 -0
  314. sage_wheels/share/singular/LIB/enumpoints.lib +146 -0
  315. sage_wheels/share/singular/LIB/equising.lib +2127 -0
  316. sage_wheels/share/singular/LIB/ffmodstd.lib +2384 -0
  317. sage_wheels/share/singular/LIB/ffsolve.lib +1289 -0
  318. sage_wheels/share/singular/LIB/findifs.lib +778 -0
  319. sage_wheels/share/singular/LIB/finitediff.lib +1768 -0
  320. sage_wheels/share/singular/LIB/finvar.lib +7989 -0
  321. sage_wheels/share/singular/LIB/fpadim.lib +2429 -0
  322. sage_wheels/share/singular/LIB/fpalgebras.lib +1666 -0
  323. sage_wheels/share/singular/LIB/fpaprops.lib +1462 -0
  324. sage_wheels/share/singular/LIB/freegb.lib +3853 -0
  325. sage_wheels/share/singular/LIB/general.lib +1350 -0
  326. sage_wheels/share/singular/LIB/gfan.lib +1768 -0
  327. sage_wheels/share/singular/LIB/gitfan.lib +3130 -0
  328. sage_wheels/share/singular/LIB/gkdim.lib +99 -0
  329. sage_wheels/share/singular/LIB/gmspoly.lib +589 -0
  330. sage_wheels/share/singular/LIB/gmssing.lib +1739 -0
  331. sage_wheels/share/singular/LIB/goettsche.lib +909 -0
  332. sage_wheels/share/singular/LIB/graal.lib +1366 -0
  333. sage_wheels/share/singular/LIB/gradedModules.lib +2541 -0
  334. sage_wheels/share/singular/LIB/graphics.lib +360 -0
  335. sage_wheels/share/singular/LIB/grobcov.lib +7706 -0
  336. sage_wheels/share/singular/LIB/groups.lib +1123 -0
  337. sage_wheels/share/singular/LIB/grwalk.lib +507 -0
  338. sage_wheels/share/singular/LIB/hdepth.lib +194 -0
  339. sage_wheels/share/singular/LIB/help.cnf +57 -0
  340. sage_wheels/share/singular/LIB/hess.lib +1946 -0
  341. sage_wheels/share/singular/LIB/hnoether.lib +4292 -0
  342. sage_wheels/share/singular/LIB/hodge.lib +400 -0
  343. sage_wheels/share/singular/LIB/homolog.lib +1965 -0
  344. sage_wheels/share/singular/LIB/hyperel.lib +975 -0
  345. sage_wheels/share/singular/LIB/inout.lib +679 -0
  346. sage_wheels/share/singular/LIB/integralbasis.lib +6224 -0
  347. sage_wheels/share/singular/LIB/interval.lib +1418 -0
  348. sage_wheels/share/singular/LIB/intprog.lib +778 -0
  349. sage_wheels/share/singular/LIB/invar.lib +443 -0
  350. sage_wheels/share/singular/LIB/involut.lib +980 -0
  351. sage_wheels/share/singular/LIB/jacobson.lib +1215 -0
  352. sage_wheels/share/singular/LIB/kskernel.lib +534 -0
  353. sage_wheels/share/singular/LIB/latex.lib +3146 -0
  354. sage_wheels/share/singular/LIB/lejeune.lib +651 -0
  355. sage_wheels/share/singular/LIB/linalg.lib +2040 -0
  356. sage_wheels/share/singular/LIB/locnormal.lib +212 -0
  357. sage_wheels/share/singular/LIB/lrcalc.lib +526 -0
  358. sage_wheels/share/singular/LIB/makedbm.lib +294 -0
  359. sage_wheels/share/singular/LIB/mathml.lib +813 -0
  360. sage_wheels/share/singular/LIB/matrix.lib +1372 -0
  361. sage_wheels/share/singular/LIB/maxlike.lib +1132 -0
  362. sage_wheels/share/singular/LIB/methods.lib +212 -0
  363. sage_wheels/share/singular/LIB/moddiq.lib +322 -0
  364. sage_wheels/share/singular/LIB/modfinduni.lib +181 -0
  365. sage_wheels/share/singular/LIB/modnormal.lib +218 -0
  366. sage_wheels/share/singular/LIB/modprimdec.lib +1278 -0
  367. sage_wheels/share/singular/LIB/modquotient.lib +269 -0
  368. sage_wheels/share/singular/LIB/modstd.lib +1024 -0
  369. sage_wheels/share/singular/LIB/modular.lib +545 -0
  370. sage_wheels/share/singular/LIB/modules.lib +2561 -0
  371. sage_wheels/share/singular/LIB/modwalk.lib +609 -0
  372. sage_wheels/share/singular/LIB/mondromy.lib +1016 -0
  373. sage_wheels/share/singular/LIB/monomialideal.lib +3851 -0
  374. sage_wheels/share/singular/LIB/mprimdec.lib +2353 -0
  375. sage_wheels/share/singular/LIB/mregular.lib +1863 -0
  376. sage_wheels/share/singular/LIB/multigrading.lib +5629 -0
  377. sage_wheels/share/singular/LIB/ncHilb.lib +777 -0
  378. sage_wheels/share/singular/LIB/ncModslimgb.lib +791 -0
  379. sage_wheels/share/singular/LIB/ncalg.lib +16311 -0
  380. sage_wheels/share/singular/LIB/ncall.lib +31 -0
  381. sage_wheels/share/singular/LIB/ncdecomp.lib +468 -0
  382. sage_wheels/share/singular/LIB/ncfactor.lib +13371 -0
  383. sage_wheels/share/singular/LIB/ncfrac.lib +1023 -0
  384. sage_wheels/share/singular/LIB/nchilbert.lib +448 -0
  385. sage_wheels/share/singular/LIB/nchomolog.lib +759 -0
  386. sage_wheels/share/singular/LIB/ncloc.lib +361 -0
  387. sage_wheels/share/singular/LIB/ncpreim.lib +795 -0
  388. sage_wheels/share/singular/LIB/ncrat.lib +2849 -0
  389. sage_wheels/share/singular/LIB/nctools.lib +1887 -0
  390. sage_wheels/share/singular/LIB/nets.lib +1456 -0
  391. sage_wheels/share/singular/LIB/nfmodstd.lib +1000 -0
  392. sage_wheels/share/singular/LIB/nfmodsyz.lib +732 -0
  393. sage_wheels/share/singular/LIB/noether.lib +1106 -0
  394. sage_wheels/share/singular/LIB/normal.lib +8700 -0
  395. sage_wheels/share/singular/LIB/normaliz.lib +2226 -0
  396. sage_wheels/share/singular/LIB/ntsolve.lib +362 -0
  397. sage_wheels/share/singular/LIB/numerAlg.lib +560 -0
  398. sage_wheels/share/singular/LIB/numerDecom.lib +2261 -0
  399. sage_wheels/share/singular/LIB/olga.lib +1933 -0
  400. sage_wheels/share/singular/LIB/orbitparam.lib +351 -0
  401. sage_wheels/share/singular/LIB/parallel.lib +319 -0
  402. sage_wheels/share/singular/LIB/paraplanecurves.lib +3110 -0
  403. sage_wheels/share/singular/LIB/perron.lib +202 -0
  404. sage_wheels/share/singular/LIB/pfd.lib +2223 -0
  405. sage_wheels/share/singular/LIB/phindex.lib +642 -0
  406. sage_wheels/share/singular/LIB/pointid.lib +673 -0
  407. sage_wheels/share/singular/LIB/polybori.lib +1430 -0
  408. sage_wheels/share/singular/LIB/polyclass.lib +525 -0
  409. sage_wheels/share/singular/LIB/polylib.lib +1174 -0
  410. sage_wheels/share/singular/LIB/polymake.lib +1902 -0
  411. sage_wheels/share/singular/LIB/presolve.lib +1533 -0
  412. sage_wheels/share/singular/LIB/primdec.lib +9576 -0
  413. sage_wheels/share/singular/LIB/primdecint.lib +1782 -0
  414. sage_wheels/share/singular/LIB/primitiv.lib +401 -0
  415. sage_wheels/share/singular/LIB/puiseuxexpansions.lib +1631 -0
  416. sage_wheels/share/singular/LIB/purityfiltration.lib +960 -0
  417. sage_wheels/share/singular/LIB/qhmoduli.lib +1561 -0
  418. sage_wheels/share/singular/LIB/qmatrix.lib +293 -0
  419. sage_wheels/share/singular/LIB/random.lib +455 -0
  420. sage_wheels/share/singular/LIB/ratgb.lib +489 -0
  421. sage_wheels/share/singular/LIB/realclassify.lib +5759 -0
  422. sage_wheels/share/singular/LIB/realizationMatroids.lib +772 -0
  423. sage_wheels/share/singular/LIB/realrad.lib +1197 -0
  424. sage_wheels/share/singular/LIB/recover.lib +2628 -0
  425. sage_wheels/share/singular/LIB/redcgs.lib +3984 -0
  426. sage_wheels/share/singular/LIB/reesclos.lib +465 -0
  427. sage_wheels/share/singular/LIB/resbinomial.lib +2802 -0
  428. sage_wheels/share/singular/LIB/resgraph.lib +789 -0
  429. sage_wheels/share/singular/LIB/resjung.lib +820 -0
  430. sage_wheels/share/singular/LIB/resolve.lib +5110 -0
  431. sage_wheels/share/singular/LIB/resources.lib +170 -0
  432. sage_wheels/share/singular/LIB/reszeta.lib +5473 -0
  433. sage_wheels/share/singular/LIB/ring.lib +1328 -0
  434. sage_wheels/share/singular/LIB/ringgb.lib +343 -0
  435. sage_wheels/share/singular/LIB/rinvar.lib +1153 -0
  436. sage_wheels/share/singular/LIB/rootisolation.lib +1481 -0
  437. sage_wheels/share/singular/LIB/rootsmr.lib +709 -0
  438. sage_wheels/share/singular/LIB/rootsur.lib +886 -0
  439. sage_wheels/share/singular/LIB/rstandard.lib +607 -0
  440. sage_wheels/share/singular/LIB/rwalk.lib +336 -0
  441. sage_wheels/share/singular/LIB/sagbi.lib +1353 -0
  442. sage_wheels/share/singular/LIB/sagbiNormaliz.lib +1622 -0
  443. sage_wheels/share/singular/LIB/sagbiNormaliz0.lib +1498 -0
  444. sage_wheels/share/singular/LIB/sagbigrob.lib +449 -0
  445. sage_wheels/share/singular/LIB/schreyer.lib +321 -0
  446. sage_wheels/share/singular/LIB/schubert.lib +2551 -0
  447. sage_wheels/share/singular/LIB/sets.lib +524 -0
  448. sage_wheels/share/singular/LIB/sheafcoh.lib +1663 -0
  449. sage_wheels/share/singular/LIB/signcond.lib +437 -0
  450. sage_wheels/share/singular/LIB/sing.lib +1094 -0
  451. sage_wheels/share/singular/LIB/sing4ti2.lib +419 -0
  452. sage_wheels/share/singular/LIB/solve.lib +2243 -0
  453. sage_wheels/share/singular/LIB/spcurve.lib +1077 -0
  454. sage_wheels/share/singular/LIB/spectrum.lib +62 -0
  455. sage_wheels/share/singular/LIB/sresext.lib +757 -0
  456. sage_wheels/share/singular/LIB/ssi.lib +143 -0
  457. sage_wheels/share/singular/LIB/standard.lib +2769 -0
  458. sage_wheels/share/singular/LIB/stanleyreisner.lib +473 -0
  459. sage_wheels/share/singular/LIB/stdmodule.lib +547 -0
  460. sage_wheels/share/singular/LIB/stratify.lib +1070 -0
  461. sage_wheels/share/singular/LIB/surf.lib +506 -0
  462. sage_wheels/share/singular/LIB/surf_jupyter.lib +223 -0
  463. sage_wheels/share/singular/LIB/surfacesignature.lib +522 -0
  464. sage_wheels/share/singular/LIB/surfex.lib +1462 -0
  465. sage_wheels/share/singular/LIB/swalk.lib +877 -0
  466. sage_wheels/share/singular/LIB/symodstd.lib +1570 -0
  467. sage_wheels/share/singular/LIB/systhreads.lib +74 -0
  468. sage_wheels/share/singular/LIB/tasks.lib +1324 -0
  469. sage_wheels/share/singular/LIB/tateProdCplxNegGrad.lib +2412 -0
  470. sage_wheels/share/singular/LIB/teachstd.lib +858 -0
  471. sage_wheels/share/singular/LIB/template.lib +116 -0
  472. sage_wheels/share/singular/LIB/toric.lib +1119 -0
  473. sage_wheels/share/singular/LIB/transformation.lib +116 -0
  474. sage_wheels/share/singular/LIB/triang.lib +1197 -0
  475. sage_wheels/share/singular/LIB/tropical.lib +8741 -0
  476. sage_wheels/share/singular/LIB/tropicalEllipticCovers.lib +2922 -0
  477. sage_wheels/share/singular/LIB/tropicalNewton.lib +1128 -0
  478. sage_wheels/share/singular/LIB/tst.lib +1108 -0
  479. sage_wheels/share/singular/LIB/weierstr.lib +241 -0
  480. sage_wheels/share/singular/LIB/zeroset.lib +1478 -0
  481. sage_wheels/share/singular/emacs/.emacs-general +184 -0
  482. sage_wheels/share/singular/emacs/.emacs-singular +234 -0
  483. sage_wheels/share/singular/emacs/COPYING +44 -0
  484. sage_wheels/share/singular/emacs/cmd-cmpl.el +241 -0
  485. sage_wheels/share/singular/emacs/ex-cmpl.el +1681 -0
  486. sage_wheels/share/singular/emacs/hlp-cmpl.el +4318 -0
  487. sage_wheels/share/singular/emacs/lib-cmpl.el +179 -0
  488. sage_wheels/share/singular/emacs/singular.el +4273 -0
  489. sage_wheels/share/singular/emacs/singular.xpm +39 -0
  490. sage_wheels/share/singular/singular.idx +5002 -0
@@ -0,0 +1,571 @@
1
+ //////////////////////////////////////////////////////////////////////////////
2
+ version="version cimonom.lib 4.1.2.0 Feb_2019 "; // $Id: 269ef0f4d3307e52b87e2ae0512019ef019bc270 $
3
+ category="Commutative Algebra";
4
+ info="
5
+ LIBRARY: cimonom.lib Determines if the toric ideal of an affine monomial curve is a complete intersection
6
+
7
+ AUTHORS: I.Bermejo, ibermejo@ull.es
8
+ @* I.Garcia-Marco, iggarcia@ull.es
9
+ @* J.-J.Salazar-Gonzalez, jjsalaza@ull.es
10
+
11
+ OVERVIEW:
12
+ A library for determining if the toric ideal of an affine monomial curve is a complete intersection with NO
13
+ NEED of computing explicitly a system of generators of such ideal. It also contains procedures to obtain the
14
+ minimum positive multiple of an integer which is in a semigroup of positive integers.
15
+ The procedures are based on a paper by Isabel Bermejo, Ignacio Garcia and Juan Jose Salazar-Gonzalez: 'An
16
+ algorithm to check whether the toric ideal of an affine monomial curve is a complete intersection', Preprint.
17
+
18
+ SEE ALSO: Integer programming
19
+
20
+ PROCEDURES:
21
+ BelongSemig(n,v[,sup]); checks whether n is in the semigroup generated by v;
22
+ MinMult(a,b); computes k, the minimum positive integer such that k*a is in the semigroup of
23
+ positive integers generated by the elements in b.
24
+ CompInt(d); checks wether I(d) is a complete intersection or not.
25
+ ";
26
+
27
+ LIB "general.lib";
28
+
29
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////////
30
+ //
31
+ proc BelongSemig(bigint n, intvec v, list #)
32
+ "
33
+ USAGE: BelongSemig (n,v[,sup]); n bigint, v and sup intvec
34
+ RETURN: In the default form, it returns 1 if n is in the semigroup generated by
35
+ the elements of v or 0 otherwise. If the argument sup is added and in case
36
+ n belongs to the semigroup generated by the elements of v, it returns
37
+ a monomial in the variables {x(i) | i in sup} of degree n if we set
38
+ deg(x(sup[j])) = v[j].
39
+ ASSUME: v and sup positive integer vectors of same size, sup has no
40
+ repeated entries, x(i) has to be an indeterminate in the current ring for
41
+ all i in sup.
42
+ EXAMPLE: example BelongSemig; shows some examples
43
+ "
44
+ {
45
+ //--------------------------- initialisation ---------------------------------
46
+ int i, j, num;
47
+ bigint PartialSum;
48
+ num = size(v);
49
+ int e = size(#);
50
+
51
+ if (e > 0)
52
+ {
53
+ intvec sup = #[1];
54
+ poly mon;
55
+ }
56
+
57
+ for (i = 1; i <= nrows(v); i++)
58
+ {
59
+ if ((n % v[i]) == 0)
60
+ {
61
+ // ---- n is multiple of v[i]
62
+ if (e)
63
+ {
64
+ mon = x(sup[i])^(int(n/v[i]));
65
+ return(mon);
66
+ }
67
+ else
68
+ {
69
+ return (1);
70
+ }
71
+ }
72
+ }
73
+
74
+ if (num == 1)
75
+ {
76
+ // ---- num = 1 and n is not multiple of v[1] --> FALSE
77
+ return(0);
78
+ }
79
+
80
+ intvec counter;
81
+ counter[num] = 0;
82
+ PartialSum = 0;
83
+
84
+ intvec w = sort(v)[1];
85
+ intvec cambio = sort(v)[2];
86
+
87
+ // ---- Iterative procedure to determine if n is in the semigroup generated by v
88
+ while (1)
89
+ {
90
+ if (n >= PartialSum)
91
+ {
92
+ if (((n - PartialSum) % w[1]) == 0)
93
+ {
94
+ // ---- n belongs to the semigroup generated by v,
95
+ if (e)
96
+ {
97
+ // ---- obtain the monomial.
98
+ mon = x(sup[cambio[1]])^(int((n - PartialSum) / w[1]));
99
+ for (j = 2; j <= num; j++)
100
+ {
101
+ mon = mon * x(sup[cambio[j]])^(counter[j]);
102
+ }
103
+ return(mon);
104
+ }
105
+ else
106
+ {
107
+ // ---- returns true.
108
+ return (1);
109
+ }
110
+ }
111
+ }
112
+ i = num;
113
+ while (!defined(end))
114
+ {
115
+ if (i == 1)
116
+ {
117
+ // ---- Stop, n is not in the semigroup
118
+ return(0);
119
+ }
120
+ if (i > 1)
121
+ {
122
+ // counters control
123
+ if (counter[i] >= ((n - PartialSum) / w[i]))
124
+ {
125
+ PartialSum = PartialSum - (counter[i]*w[i]);
126
+ counter[i] = 0;
127
+ i--;
128
+ }
129
+ else
130
+ {
131
+ counter[i] = counter[i] + 1;
132
+ PartialSum = PartialSum + w[i];
133
+ int end;
134
+ }
135
+ }
136
+ }
137
+ kill end;
138
+ }
139
+ }
140
+ example
141
+ { "EXAMPLE:";
142
+ ring r=0,x(1..5),dp;
143
+ int a = 125;
144
+ intvec v = 13,17,51;
145
+ intvec sup = 2,4,1;
146
+ BelongSemig(a,v,sup);
147
+ BelongSemig(a,v);
148
+ }
149
+
150
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////////
151
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////////
152
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////////
153
+
154
+ proc MinMult(int a, intvec b)
155
+ "
156
+ USAGE: MinMult (a, b); a integer, b integer vector.
157
+ RETURN: an integer k, the minimum positive integer such that ka belongs to the
158
+ semigroup generated by the integers in b.
159
+ ASSUME: a is a positive integer, b is a positive integers vector.
160
+ EXAMPLE: example MinMult; shows some examples.
161
+ "
162
+ {
163
+ //--------------------------- initialisation ---------------------------------
164
+ int i, j, min, max;
165
+ int n = nrows(b);
166
+
167
+ if (n == 1)
168
+ {
169
+ // ---- trivial case
170
+ return(b[1] div gcd(a,b[1]));
171
+ }
172
+
173
+ max = b[1];
174
+ for (i = 2; i <= n; i++)
175
+ {
176
+ if (b[i] > max)
177
+ {
178
+ max = b[i];
179
+ }
180
+ }
181
+ int NumNodes = a + max; //----Number of nodes in the graph
182
+
183
+ int dist = 1;
184
+ // ---- Auxiliary structures to obtain the shortest path between the nodes 1 and a+1 of this graph
185
+ intvec queue = 1;
186
+ intvec queue2;
187
+
188
+ // ---- Control vector:
189
+ // control[i] = 0 -> node not reached yet
190
+ // control[i] = 1 -> node in queue1
191
+ // control[i] = 2 -> node in queue2
192
+ // control[i] = 3 -> node already processed
193
+ intvec control;
194
+ control[1] = 3; // Starting node
195
+ control[a + max] = 0; // Ending node
196
+ int current = 1; // Current node
197
+ int next; // Node connected to corrent by arc (current, next)
198
+
199
+ int ElemQueue, ElemQueue2;
200
+ int PosQueue = 1;
201
+
202
+ // Algoritmo de Dijkstra
203
+ while (1)
204
+ {
205
+ if (current <= a)
206
+ {
207
+ // ---- current <= a, arcs are (current, current + b[i])
208
+ for (i = 1; i <= n; i++)
209
+ {
210
+ next = current + b[i];
211
+ if (next == a+1)
212
+ {
213
+ kill control;
214
+ kill queue;
215
+ kill queue2;
216
+ return (dist);
217
+ }
218
+ if ((control[next] == 0)||(control[next] == 2))
219
+ {
220
+ control[next] = 1;
221
+ queue = queue, next;
222
+ }
223
+ }
224
+ }
225
+ if (current > a)
226
+ {
227
+ // ---- current > a, the only possible ars is (current, current - a)
228
+ next = current - a;
229
+ if (control[next] == 0)
230
+ {
231
+ control[next] = 2;
232
+ queue2[nrows(queue2) + 1] = next;
233
+ }
234
+ }
235
+ PosQueue++;
236
+ if (PosQueue <= nrows(queue))
237
+ {
238
+ current = queue[PosQueue];
239
+ }
240
+ else
241
+ {
242
+ dist++;
243
+ if (control[a+1] == 2)
244
+ {
245
+ return(dist);
246
+ }
247
+ queue = queue2[2..nrows(queue2)];
248
+ current = queue[1];
249
+ PosQueue = 1;
250
+ queue2 = 0;
251
+ }
252
+ control[current] = 3;
253
+ }
254
+ }
255
+ example
256
+ { "EXAMPLE:";
257
+ "int a = 46;";
258
+ "intvec b = 13,17,59;";
259
+ "MinMult(a,b);";
260
+ int a = 46;
261
+ intvec b = 13,17,59;
262
+ MinMult(a,b);
263
+ "// 3*a = 8*b[1] + 2*b[2]"
264
+ }
265
+
266
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////////
267
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////////
268
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////////
269
+
270
+ proc CompInt(intvec d)
271
+ "
272
+ USAGE: CompInt(d); d intvec.
273
+ RETURN: 1 if the toric ideal I(d) is a complete intersection or 0 otherwise.
274
+ ASSUME: d is a vector of positive integers.
275
+ NOTE: If printlevel > 0, additional info is displayed in case
276
+ I(d) is a complete intersection:
277
+ if printlevel >= 1, it displays a minimal set of generators of the toric
278
+ ideal formed by quasihomogeneous binomials. Moreover, if printlevel >= 2
279
+ and gcd(d) = 1, it also shows the Frobenius number of the semigroup
280
+ generated by the elements in d.
281
+ EXAMPLE: example CompInt; shows some examples
282
+ "
283
+ {
284
+ //--------------------------- initialisation ---------------------------------
285
+
286
+ int i,j,k,l,divide,equal,possible;
287
+
288
+ int n = nrows(d);
289
+ int max = 2*n - 1;
290
+ ring r = 0, x(1..n), dp;
291
+
292
+ int level = printlevel - voice + 2;
293
+ // ---- To decide how much extra information calculate and display
294
+ if (level > 1)
295
+ {
296
+ int e = d[1];
297
+ for (i = 2; i <= n; i++)
298
+ {
299
+ e = gcd(e,d[i]);
300
+ }
301
+ if (e <> 1)
302
+ {
303
+ print ("// Semigroup generated by d is not numerical!");
304
+ }
305
+ }
306
+ if (level > 0)
307
+ {
308
+ ideal id;
309
+ vector mon;
310
+ mon[max] = 0;
311
+ if ((level > 1)&&(e == 1))
312
+ {
313
+ bigint frob = 0;
314
+ }
315
+ }
316
+
317
+ // ---- Trivial cases: n = 1,2 (it is a complete intersection).
318
+ if (n == 1)
319
+ {
320
+ print("// Ideal is (0)");
321
+ return (1);
322
+ }
323
+
324
+ if (n == 2)
325
+ {
326
+ if (level > 0)
327
+ {
328
+ intvec d1 = d[1];
329
+ intvec d2 = d[2];
330
+ int f1 = MinMult(d[1],d2);
331
+ int f2 = MinMult(d[2],d1);
332
+ id = x(1)^(f1) - x(2)^(f2);
333
+ print ("// Toric ideal:");
334
+ id;
335
+ if ((level > 1)&&(e == 1))
336
+ {
337
+ frob = d[1]*f1 - d[1] - d[2];
338
+ print ("// Frobenius number of the numerical semigroup:");
339
+ frob;
340
+ }
341
+ }
342
+ return (1);
343
+ }
344
+
345
+ // ---- For n >= 3 (non-trivial cases)
346
+ matrix mat[max][n];
347
+ intvec using, bound, multiple;
348
+ multiple[max] = 0;
349
+ bound[max] = 0;
350
+ using[max] = 0;
351
+
352
+ for (i = 1; i <= n; i++)
353
+ {
354
+ using[i] = 1;
355
+ multiple[i] = 0;
356
+ mat[i,i] = 1;
357
+ }
358
+ if (level > 1)
359
+ {
360
+ if (e == 1)
361
+ {
362
+ for (i = 1; i <= n; i++)
363
+ {
364
+ frob = frob - d[i];
365
+ }
366
+ }
367
+ }
368
+
369
+ int new, new1, new2;
370
+ for (i = 1; i <= n; i++)
371
+ {
372
+ for (j = 1; j < i; j++)
373
+ {
374
+ if (i <> j)
375
+ {
376
+ new = gcd(d[i],d[j]);
377
+ new1 = d[j] div new;
378
+ new2 = d[i] div new;
379
+ if (!bound[i] ||(new1 < bound[i]))
380
+ {
381
+ bound[i] = new1;
382
+ }
383
+ if (!bound[j] ||(new2 < bound[j]))
384
+ {
385
+ bound[j] = new2;
386
+ }
387
+ }
388
+ }
389
+ }
390
+
391
+ // ---- Begins the inductive part
392
+ for (i = 1; i < n; i++)
393
+ {
394
+ // ---- n-1 stages
395
+ for (j = 1; j < n + i; j++)
396
+ {
397
+ if ((using[j])&&(multiple[j] == 0))
398
+ {
399
+ possible = 0;
400
+ for (k = 1; (k < n + i)&&(!possible); k++)
401
+ {
402
+ if ((using[k])&&(k != j)&&(bigint(bound[k])*d[k] == bigint(bound[j])*d[j]))
403
+ {
404
+ possible = 1;
405
+ }
406
+ }
407
+ if (possible)
408
+ {
409
+ // ---- If possible == 1, then c_j has to be computed
410
+ intvec aux;
411
+ // ---- auxiliary vector containing all d[l] in use except d[j]
412
+ k = 1;
413
+ for (l = 1; l < n + i; l++)
414
+ {
415
+ if (using[l] && (l != j))
416
+ {
417
+ aux[k] = d[l];
418
+ k++;
419
+ }
420
+ }
421
+
422
+ multiple[j] = MinMult(d[j], aux);
423
+ kill aux;
424
+
425
+ if (j <= n)
426
+ {
427
+ if (level > 0)
428
+ {
429
+ mon = mon + (x(j)^multiple[j])*gen(j);
430
+ }
431
+ }
432
+ else
433
+ {
434
+ // ---- if j > n, it has to be checked if c_j belongs to a certain semigroup
435
+ intvec aux, sup;
436
+ k = 1;
437
+ for (l = 1; l <= n; l++)
438
+ {
439
+ if (mat[j, l] <> 0)
440
+ {
441
+ sup[k] = l;
442
+ aux[k] = d[l];
443
+ k++;
444
+ }
445
+ }
446
+ if (level > 0)
447
+ {
448
+ mon = mon + (BelongSemig(bigint(multiple[j])*d[j], aux, sup))*gen(j);
449
+ if (mon[j] == 0)
450
+ {
451
+ // ---- multiple[j]*d[j] does not belong to the semigroup generated by aux,
452
+ // ---- then it is NOT a complete intersection
453
+ return (0);
454
+ }
455
+ }
456
+ else
457
+ {
458
+ if (!BelongSemig(bigint(multiple[j])*d[j], aux))
459
+ {
460
+ // ---- multiple[j]*d[j] does not belong to the semigroup generated by aux,
461
+ // ---- then it is NOT a complete intersection
462
+ return (0);
463
+ }
464
+ }
465
+ kill sup;
466
+ kill aux;
467
+ }
468
+
469
+ // ---- Searching if there exist k such that multiple[k]*d[k]= multiple[j]*d[j]
470
+ equal = 0;
471
+ for (k = 1; k < n+i; k++)
472
+ {
473
+ if ((k <> j) && multiple[k] && using[k])
474
+ {
475
+ if (d[j]*bigint(multiple[j]) == d[k]*bigint(multiple[k]))
476
+ {
477
+ // found
478
+ equal = k;
479
+ break;
480
+ }
481
+ }
482
+ }
483
+ // ---- if equal = 0 no coincidence
484
+ if (!equal)
485
+ {
486
+ if (j == n + i - 1)
487
+ {
488
+ // ---- All multiple[k]*d[k] in use are different -> NOT complete intersection
489
+ return (0);
490
+ }
491
+ }
492
+ else
493
+ {
494
+ // ---- Next stage is prepared
495
+ if (level > 0)
496
+ {
497
+ //---- New generator of the toric ideal
498
+ id[i] = mon[j] - mon[equal];
499
+ if ((level > 1)&&(e == 1))
500
+ {
501
+ frob = frob + bigint(multiple[j])*d[j];
502
+ }
503
+ }
504
+ //---- Two exponents are removed and one is added
505
+ using[j] = 0;
506
+ using[equal] = 0;
507
+ using[n + i] = 1;
508
+ d[n + i] = gcd(d[j], d[equal]); //---- new exponent
509
+ for (l = 1; l <= n; l++)
510
+ {
511
+ mat[n + i, l] = mat[j, l] + mat[equal, l];
512
+ }
513
+
514
+ // Bounds are reestablished
515
+ for (l = 1; l < n+i; l++)
516
+ {
517
+ if (using[l])
518
+ {
519
+ divide = gcd(d[l],d[n+i]);
520
+ new = d[n+i] div divide;
521
+ if ((multiple[l])&&(multiple[l] > new))
522
+ {
523
+ return (0);
524
+ }
525
+ if (new < bound[l])
526
+ {
527
+ bound[l] = new;
528
+ }
529
+ new = d[l] div divide;
530
+ if ( !bound[n+i] || (new < bound[n+i]))
531
+ {
532
+ bound[n+i] = new;
533
+ }
534
+ }
535
+ }
536
+ break;
537
+ }
538
+ }
539
+ }
540
+ if (j == n + i - 1)
541
+ {
542
+ // ---- All multiple[k]*d[k] in use are different -> NOT complete intersection
543
+ return (0);
544
+ }
545
+ }
546
+ }
547
+ if (level > 0)
548
+ {
549
+ "// Toric ideal: ";
550
+ id;
551
+ if ((level > 1)&&(e == 1))
552
+ {
553
+ "// Frobenius number of the numerical semigroup: ";
554
+ frob;
555
+ }
556
+ }
557
+ return(1);
558
+ }
559
+ example
560
+ { "EXAMPLE:";
561
+ printlevel = 0;
562
+ intvec d = 14,15,10,21;
563
+ CompInt(d);
564
+ printlevel = 3;
565
+ d = 36,54,125,150,225;
566
+ CompInt(d);
567
+ d = 45,70,75,98,147;
568
+ CompInt(d);
569
+ };
570
+ ///////////////////////////////////////////////////////////////////////////////
571
+ ///////////////////////////////////////////////////////////////////////////////