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,778 @@
1
+ //////////////////////////////////////////////////////////////////////////////
2
+ version="version intprog.lib 4.2.1.3 Dec_2021 "; // $Id: 9e7345cc99ddc8bbfb8c8e044e0740aaa0defe24 $
3
+ category="Commutative Algebra";
4
+ info="
5
+ LIBRARY: intprog.lib Integer Programming with Groebner Basis Methods
6
+ AUTHOR: Christine Theis, email: ctheis@math.uni-sb.de
7
+
8
+ PROCEDURES:
9
+ solve_IP(..); procedures for solving Integer Programming problems
10
+ ";
11
+
12
+ ///////////////////////////////////////////////////////////////////////////////
13
+ static proc solve_IP_1(intmat A, intvec bx, intvec c, string alg)
14
+ {
15
+ intvec v;
16
+ // to be returned
17
+
18
+ // check arguments as far as necessary
19
+ // other inconsistencies are detected by the external program
20
+ if(size(c)!=ncols(A))
21
+ {
22
+ "ERROR: The number of matrix columns does not equal the size of the cost vector.";
23
+ return(v);
24
+ }
25
+
26
+ // create first temporary file with which the external program is
27
+ // called
28
+
29
+ int process=system("pid");
30
+ string matrixfile="temp_MATRIX"+string(process);
31
+ link MATRIX=":w "+matrixfile;
32
+ open(MATRIX);
33
+
34
+ write(MATRIX,"MATRIX","columns:",ncols(A),"cost vector:");
35
+ int i,j;
36
+ for(j=1;j<=ncols(A);j++)
37
+ {
38
+ write(MATRIX,c[j]);
39
+ }
40
+ write(MATRIX,"rows:",nrows(A),"matrix:");
41
+ for(i=1;i<=nrows(A);i++)
42
+ {
43
+ for(j=1;j<=ncols(A);j++)
44
+ {
45
+ write(MATRIX,A[i,j]);
46
+ }
47
+ }
48
+
49
+ // search for positive row space vector, if required by the
50
+ // algorithm
51
+ int found=0;
52
+ if((alg=="blr") || (alg=="hs"))
53
+ {
54
+ for(i=1;i<=nrows(A);i++)
55
+ {
56
+ found=i;
57
+ for(j=1;j<=ncols(A);j++)
58
+ {
59
+ if(A[i,j]<=0)
60
+ {
61
+ found=0;
62
+ }
63
+ }
64
+ if(found>0)
65
+ {
66
+ break;
67
+ }
68
+ }
69
+ if(found==0)
70
+ {
71
+ "ERROR: The chosen algorithm needs a positive vector in the row space of the matrix.";
72
+ close(MATRIX);
73
+ system("sh","rm -f "+matrixfile);
74
+ return(v);
75
+ }
76
+ write(MATRIX,"positive row space vector:");
77
+ for(j=1;j<=ncols(A);j++)
78
+ {
79
+ write(MATRIX,A[found,j]);
80
+ }
81
+ }
82
+ close(MATRIX);
83
+
84
+ // create second temporary file for the external program
85
+
86
+ string problemfile="temp_PROBLEM"+string(process);
87
+ link PROBLEM=":w "+problemfile;
88
+ open(PROBLEM);
89
+
90
+ write(PROBLEM,"PROBLEM","vector size:",size(bx),"number of instances:",1,"right hand or initial solution vectors:");
91
+ for(i=1;i<=size(bx);i++)
92
+ {
93
+ write(PROBLEM,bx[i]);
94
+ }
95
+ close(PROBLEM);
96
+
97
+ // call external program
98
+ if (status(system("SingularBin")+"solve_IP","exists")=="yes")
99
+ {
100
+ int dummy=system("sh",system("SingularBin")+"solve_IP -alg "+alg+" "+matrixfile+" "+problemfile);
101
+ }
102
+ else
103
+ {
104
+ int dummy=system("sh","solve_IP -alg "+alg+" "+matrixfile+" "+problemfile);
105
+ }
106
+
107
+ // read solution from created file
108
+ link SOLUTION=":r "+matrixfile+".sol."+alg;
109
+ string solution=read(SOLUTION);
110
+ int pos;
111
+ string s;
112
+ if(alg=="ct" || alg=="pct")
113
+ {
114
+ pos=find(solution,"NO");
115
+ if(pos!=0)
116
+ {
117
+ "not solvable";
118
+ }
119
+ else
120
+ {
121
+ pos=find(solution,"YES");
122
+ pos=find(solution,":",pos);
123
+ pos++;
124
+ for(j=1;j<=ncols(A);j++)
125
+ {
126
+ while(solution[pos]==" " || solution[pos]==newline)
127
+ {
128
+ pos++;
129
+ }
130
+ s="";
131
+ while(solution[pos]!=" " && solution[pos]!=newline)
132
+ {
133
+ s=s+solution[pos];
134
+ pos++;
135
+ }
136
+ execute("v[j]="+s+";");
137
+ }
138
+ }
139
+ }
140
+ else
141
+ {
142
+ pos=find(solution,"optimal");
143
+ pos=find(solution,":",pos);
144
+ pos++;
145
+ for(j=1;j<=ncols(A);j++)
146
+ {
147
+ while(solution[pos]==" " || solution[pos]==newline)
148
+ {
149
+ pos++;
150
+ }
151
+ s="";
152
+ while(solution[pos]!=" " && solution[pos]!=newline)
153
+ {
154
+ s=s+solution[pos];
155
+ pos++;
156
+ }
157
+ execute("v[j]="+s+";");
158
+ }
159
+ }
160
+
161
+ // delete all created files
162
+ dummy=system("sh","rm -f "+matrixfile);
163
+ dummy=system("sh","rm -f "+matrixfile+".GB."+alg);
164
+ dummy=system("sh","rm -f "+problemfile);
165
+ dummy=system("sh","rm -f "+matrixfile+".sol."+alg);
166
+
167
+ return(v);
168
+ }
169
+ ///////////////////////////////////////////////////////////////////////////////
170
+ static proc solve_IP_2(intmat A, list bx, intvec c, string alg)
171
+ {
172
+ list l;;
173
+ // to be returned
174
+
175
+ // check arguments as far as necessary
176
+ // other inconsistencies are detected by the external program
177
+ if(size(c)!=ncols(A))
178
+ {
179
+ "ERROR: The number of matrix columns does not equal the size of the cost vector.";
180
+ return(l);
181
+ }
182
+
183
+ int k;
184
+ for(k=2;k<=size(bx);k++)
185
+ {
186
+ if(size(bx[k])!=size(bx[1]))
187
+ {
188
+ "ERROR: The size of all right-hand vectors must be equal.";
189
+ return(l);
190
+ }
191
+ }
192
+
193
+ // create first temporary file with which the external program is
194
+ // called
195
+
196
+ int process=system("pid");
197
+ string matrixfile="temp_MATRIX"+string(process);
198
+ link MATRIX=":w "+matrixfile;
199
+ open(MATRIX);
200
+
201
+ write(MATRIX,"MATRIX","columns:",ncols(A),"cost vector:");
202
+ int i,j;
203
+ for(j=1;j<=ncols(A);j++)
204
+ {
205
+ write(MATRIX,c[j]);
206
+ }
207
+ write(MATRIX,"rows:",nrows(A),"matrix:");
208
+ for(i=1;i<=nrows(A);i++)
209
+ {
210
+ for(j=1;j<=ncols(A);j++)
211
+ {
212
+ write(MATRIX,A[i,j]);
213
+ }
214
+ }
215
+
216
+ // search for positive row space vector, if required by the
217
+ // algorithm
218
+ int found=0;
219
+ if((alg=="blr") || (alg=="hs"))
220
+ {
221
+ for(i=1;i<=nrows(A);i++)
222
+ {
223
+ found=i;
224
+ for(j=1;j<=ncols(A);j++)
225
+ {
226
+ if(A[i,j]<=0)
227
+ {
228
+ found=0;
229
+ }
230
+ }
231
+ if(found>0)
232
+ {
233
+ break;
234
+ }
235
+ }
236
+ if(found==0)
237
+ {
238
+ "ERROR: The chosen algorithm needs a positive vector in the row space of the matrix.";
239
+ close(MATRIX);
240
+ system("sh","rm -f "+matrixfile);
241
+ return(l);
242
+ }
243
+ write(MATRIX,"positive row space vector:");
244
+ for(j=1;j<=ncols(A);j++)
245
+ {
246
+ write(MATRIX,A[found,j]);
247
+ }
248
+ }
249
+ close(MATRIX);
250
+
251
+ // create second temporary file for the external program
252
+
253
+ string problemfile="temp_PROBLEM"+string(process);
254
+ link PROBLEM=":w "+problemfile;
255
+ open(PROBLEM);
256
+
257
+ write(PROBLEM,"PROBLEM","vector size:",size(bx[1]),"number of instances:",size(bx),"right hand or initial solution vectors:");
258
+ for(k=1;k<=size(bx);k++)
259
+ {
260
+ for(i=1;i<=size(bx[1]);i++)
261
+ {
262
+ write(PROBLEM,bx[k][i]);
263
+ }
264
+ }
265
+ close(PROBLEM);
266
+
267
+ // call external program
268
+ if (status(system("SingularBin")+"solve_IP","exists")=="yes")
269
+ {
270
+ int dummy=system("sh",system("SingularBin")+"solve_IP -alg "+alg+" "+matrixfile+" "+problemfile);
271
+ }
272
+ else
273
+ {
274
+ int dummy=system("sh","solve_IP -alg "+alg+" "+matrixfile+" "+problemfile);
275
+ }
276
+
277
+ // read solution from created file
278
+ link SOLUTION=":r "+matrixfile+".sol."+alg;
279
+ string solution=read(SOLUTION);
280
+ intvec v;
281
+ int pos,pos1,pos2;
282
+ string s;
283
+ if(alg=="ct" || alg=="pct")
284
+ {
285
+ pos=1;
286
+ for(k=1;k<=size(bx);k++)
287
+ {
288
+ pos1=find(solution,"NO",pos);
289
+ pos2=find(solution,"YES",pos);
290
+ if(pos1!=0 && (pos1<pos2 || pos2==0))
291
+ // first problem not solvable
292
+ {
293
+ pos=find(solution,":",pos1);
294
+ l=insert(l,"not solvable",size(l));
295
+ }
296
+ else
297
+ // first problem solvable
298
+ {
299
+ pos=find(solution,":",pos2);
300
+ pos++;
301
+ for(j=1;j<=ncols(A);j++)
302
+ {
303
+ while(solution[pos]==" " || solution[pos]==newline)
304
+ {
305
+ pos++;
306
+ }
307
+ s="";
308
+ while(solution[pos]!=" " && solution[pos]!=newline)
309
+ {
310
+ s=s+solution[pos];
311
+ pos++;
312
+ }
313
+ execute("v[j]="+s+";");
314
+ }
315
+ l=insert(l,v,size(l));
316
+ }
317
+ }
318
+ }
319
+ else
320
+ {
321
+ pos=1;
322
+ for(k=1;k<=size(bx);k++)
323
+ {
324
+ pos=find(solution,"optimal",pos);
325
+ pos=find(solution,":",pos);
326
+ pos++;
327
+ for(j=1;j<=ncols(A);j++)
328
+ {
329
+ while(solution[pos]==" " || solution[pos]==newline)
330
+ {
331
+ pos++;
332
+ }
333
+ s="";
334
+ while(solution[pos]!=" " && solution[pos]!=newline)
335
+ {
336
+ s=s+solution[pos];
337
+ pos++;
338
+ }
339
+ execute("v[j]="+s+";");
340
+ }
341
+ l=insert(l,v,size(l));
342
+ }
343
+ }
344
+
345
+ // delete all created files
346
+ dummy=system("sh","rm -f "+matrixfile);
347
+ dummy=system("sh","rm -f "+matrixfile+".GB."+alg);
348
+ dummy=system("sh","rm -f "+problemfile);
349
+ dummy=system("sh","rm -f "+matrixfile+".sol."+alg);
350
+
351
+ return(l);
352
+ }
353
+ ///////////////////////////////////////////////////////////////////////////////
354
+
355
+ static proc solve_IP_3(intmat A, intvec bx, intvec c, string alg, intvec prsv)
356
+ {
357
+ intvec v;
358
+ // to be returned
359
+
360
+ // check arguments as far as necessary
361
+ // other inconsistencies are detected by the external program
362
+ if(size(c)!=ncols(A))
363
+ {
364
+ "ERROR: The number of matrix columns does not equal the size of the cost vector.";
365
+ return(v);
366
+ }
367
+
368
+ if(size(prsv)!=ncols(A))
369
+ {
370
+ "ERROR: The number of matrix columns does not equal the size of the positive row space vector.";
371
+ return(v);
372
+ }
373
+
374
+ // create first temporary file with which the external program is
375
+ // called
376
+
377
+ int process=system("pid");
378
+ string matrixfile="temp_MATRIX"+string(process);
379
+ link MATRIX=":w "+matrixfile;
380
+ open(MATRIX);
381
+
382
+ write(MATRIX,"MATRIX","columns:",ncols(A),"cost vector:");
383
+ int i,j;
384
+ for(j=1;j<=ncols(A);j++)
385
+ {
386
+ write(MATRIX,c[j]);
387
+ }
388
+ write(MATRIX,"rows:",nrows(A),"matrix:");
389
+ for(i=1;i<=nrows(A);i++)
390
+ {
391
+ for(j=1;j<=ncols(A);j++)
392
+ {
393
+ write(MATRIX,A[i,j]);
394
+ }
395
+ }
396
+
397
+ // enter positive row space vector, if required by the algorithm
398
+ if((alg=="blr") || (alg=="hs"))
399
+ {
400
+ write(MATRIX,"positive row space vector:");
401
+ for(j=1;j<=ncols(A);j++)
402
+ {
403
+ write(MATRIX,prsv[j]);
404
+ }
405
+ }
406
+ close(MATRIX);
407
+
408
+ // create second temporary file for the external program
409
+
410
+ string problemfile="temp_PROBLEM"+string(process);
411
+ link PROBLEM=":w "+problemfile;
412
+ open(PROBLEM);
413
+
414
+ write(PROBLEM,"PROBLEM","vector size:",size(bx),"number of instances:",1,"right hand or initial solution vectors:");
415
+ for(i=1;i<=size(bx);i++)
416
+ {
417
+ write(PROBLEM,bx[i]);
418
+ }
419
+ close(PROBLEM);
420
+
421
+ // call external program
422
+ if (status(system("SingularBin")+"solve_IP","exists")=="yes")
423
+ {
424
+ int dummy=system("sh",system("SingularBin")+"solve_IP -alg "+alg+" "+matrixfile+" "+problemfile);
425
+ }
426
+ else
427
+ {
428
+ int dummy=system("sh","solve_IP -alg "+alg+" "+matrixfile+" "+problemfile);
429
+ }
430
+
431
+ // read solution from created file
432
+ link SOLUTION=":r "+matrixfile+".sol."+alg;
433
+ string solution=read(SOLUTION);
434
+ int pos;
435
+ string s;
436
+ if(alg=="ct" || alg=="pct")
437
+ {
438
+ pos=find(solution,"NO");
439
+ if(pos!=0)
440
+ {
441
+ "not solvable";
442
+ }
443
+ else
444
+ {
445
+ pos=find(solution,"YES");
446
+ pos=find(solution,":",pos);
447
+ pos++;
448
+ for(j=1;j<=ncols(A);j++)
449
+ {
450
+ while(solution[pos]==" " || solution[pos]==newline)
451
+ {
452
+ pos++;
453
+ }
454
+ s="";
455
+ while(solution[pos]!=" " && solution[pos]!=newline)
456
+ {
457
+ s=s+solution[pos];
458
+ pos++;
459
+ }
460
+ execute("v[j]="+s+";");
461
+ }
462
+ }
463
+ }
464
+ else
465
+ {
466
+ pos=find(solution,"optimal");
467
+ pos=find(solution,":",pos);
468
+ pos++;
469
+ for(j=1;j<=ncols(A);j++)
470
+ {
471
+ while(solution[pos]==" " || solution[pos]==newline)
472
+ {
473
+ pos++;
474
+ }
475
+ s="";
476
+ while(solution[pos]!=" " && solution[pos]!=newline)
477
+ {
478
+ s=s+solution[pos];
479
+ pos++;
480
+ }
481
+ execute("v[j]="+s+";");
482
+ }
483
+ }
484
+
485
+ // delete all created files
486
+ dummy=system("sh","rm -f "+matrixfile);
487
+ dummy=system("sh","rm -f "+matrixfile+".GB."+alg);
488
+ dummy=system("sh","rm -f "+problemfile);
489
+ dummy=system("sh","rm -f "+matrixfile+".sol."+alg);
490
+
491
+ return(v);
492
+ }
493
+ ///////////////////////////////////////////////////////////////////////////////
494
+
495
+ static proc solve_IP_4(intmat A, list bx, intvec c, string alg, intvec prsv)
496
+ {
497
+ list l;
498
+ // to be returned
499
+
500
+ // check arguments as far as necessary
501
+ // other inconsistencies are detected by the external program
502
+ if(size(c)!=ncols(A))
503
+ {
504
+ "ERROR: The number of matrix columns does not equal the size of the cost vector.";
505
+ return(l);
506
+ }
507
+
508
+ if(size(prsv)!=ncols(A))
509
+ {
510
+ "ERROR: The number of matrix columns does not equal the size of the positive row space vector";
511
+ return(v);
512
+ }
513
+
514
+ int k;
515
+ for(k=2;k<=size(bx);k++)
516
+ {
517
+ if(size(bx[k])!=size(bx[1]))
518
+ {
519
+ "ERROR: The size of all right-hand vectors must be equal.";
520
+ return(l);
521
+ }
522
+ }
523
+
524
+ // create first temporary file with which the external program is
525
+ // called
526
+
527
+ int process=system("pid");
528
+ string matrixfile="temp_MATRIX"+string(process);
529
+ link MATRIX=":w "+matrixfile;
530
+ open(MATRIX);
531
+
532
+ write(MATRIX,"MATRIX","columns:",ncols(A),"cost vector:");
533
+ int i,j;
534
+ for(j=1;j<=ncols(A);j++)
535
+ {
536
+ write(MATRIX,c[j]);
537
+ }
538
+ write(MATRIX,"rows:",nrows(A),"matrix:");
539
+ for(i=1;i<=nrows(A);i++)
540
+ {
541
+ for(j=1;j<=ncols(A);j++)
542
+ {
543
+ write(MATRIX,A[i,j]);
544
+ }
545
+ }
546
+
547
+ // enter positive row space vector if required by the algorithm
548
+ if((alg=="blr") || (alg=="hs"))
549
+ {
550
+ write(MATRIX,"positive row space vector:");
551
+ for(j=1;j<=ncols(A);j++)
552
+ {
553
+ write(MATRIX,prsv[j]);
554
+ }
555
+ }
556
+ close(MATRIX);
557
+
558
+ // create second temporary file for the external program
559
+
560
+ string problemfile="temp_PROBLEM"+string(process);
561
+ link PROBLEM=":w "+problemfile;
562
+ open(PROBLEM);
563
+
564
+ write(PROBLEM,"PROBLEM","vector size:",size(bx[1]),"number of instances:",size(bx),"right hand or initial solution vectors:");
565
+ for(k=1;k<=size(bx);k++)
566
+ {
567
+ for(i=1;i<=size(bx[1]);i++)
568
+ {
569
+ write(PROBLEM,bx[k][i]);
570
+ }
571
+ }
572
+ close(PROBLEM);
573
+
574
+ // call external program
575
+ if (status(system("SingularBin")+"solve_IP","exists")=="yes")
576
+ {
577
+ int dummy=system("sh",system("SingularBin")+"solve_IP -alg "+alg+" "+matrixfile+" "+problemfile);
578
+ }
579
+ else
580
+ {
581
+ int dummy=system("sh","solve_IP -alg "+alg+" "+matrixfile+" "+problemfile);
582
+ }
583
+
584
+ // read solution from created file
585
+ link SOLUTION=":r "+matrixfile+".sol."+alg;
586
+ string solution=read(SOLUTION);
587
+ intvec v;
588
+ int pos,pos1,pos2;
589
+ string s;
590
+ if(alg=="ct" || alg=="pct")
591
+ {
592
+ pos=1;
593
+ for(k=1;k<=size(bx);k++)
594
+ {
595
+ pos1=find(solution,"NO",pos);
596
+ pos2=find(solution,"YES",pos);
597
+ if(pos1!=0 && (pos1<pos2 || pos2==0))
598
+ // first problem not solvable
599
+ {
600
+ pos=find(solution,":",pos1);
601
+ l=insert(l,"not solvable",size(l));
602
+ }
603
+ else
604
+ // first problem solvable
605
+ {
606
+ pos=find(solution,":",pos2);
607
+ pos++;
608
+ for(j=1;j<=ncols(A);j++)
609
+ {
610
+ while(solution[pos]==" " || solution[pos]==newline)
611
+ {
612
+ pos++;
613
+ }
614
+ s="";
615
+ while(solution[pos]!=" " && solution[pos]!=newline)
616
+ {
617
+ s=s+solution[pos];
618
+ pos++;
619
+ }
620
+ execute("v[j]="+s+";");
621
+ }
622
+ l=insert(l,v,size(l));
623
+ }
624
+ }
625
+ }
626
+ else
627
+ {
628
+ pos=1;
629
+ for(k=1;k<=size(bx);k++)
630
+ {
631
+ pos=find(solution,"optimal",pos);
632
+ pos=find(solution,":",pos);
633
+ pos++;
634
+ for(j=1;j<=ncols(A);j++)
635
+ {
636
+ while(solution[pos]==" " || solution[pos]==newline)
637
+ {
638
+ pos++;
639
+ }
640
+ s="";
641
+ while(solution[pos]!=" " && solution[pos]!=newline)
642
+ {
643
+ s=s+solution[pos];
644
+ pos++;
645
+ }
646
+ execute("v[j]="+s+";");
647
+ }
648
+ l=insert(l,v,size(l));
649
+ }
650
+ }
651
+
652
+ // delete all created files
653
+ dummy=system("sh","rm -f "+matrixfile);
654
+ dummy=system("sh","rm -f "+matrixfile+".GB."+alg);
655
+ dummy=system("sh","rm -f "+problemfile);
656
+ dummy=system("sh","rm -f "+matrixfile+".sol."+alg);
657
+
658
+ return(l);
659
+ }
660
+ ///////////////////////////////////////////////////////////////////////////////
661
+
662
+ proc solve_IP
663
+ "USAGE: solve_IP(A,bx,c,alg); A intmat, bx intvec, c intvec, alg string.@*
664
+ solve_IP(A,bx,c,alg); A intmat, bx list of intvec, c intvec,
665
+ alg string.@*
666
+ solve_IP(A,bx,c,alg,prsv); A intmat, bx intvec, c intvec,
667
+ alg string, prsv intvec.@*
668
+ solve_IP(A,bx,c,alg,prsv); A intmat, bx list of intvec, c intvec,
669
+ alg string, prsv intvec.
670
+ RETURN: same type as bx: solution of the associated integer programming
671
+ problem(s) as explained in
672
+ @texinfo
673
+ @ref{Toric ideals and integer programming}.
674
+ @end texinfo
675
+ NOTE: This procedure returns the solution(s) of the given IP-problem(s)
676
+ or the message `not solvable'.
677
+ One may call the procedure with several different algorithms:
678
+ @*- the algorithm of Conti/Traverso (ct),
679
+ @*- the positive variant of the algorithm of Conti/Traverso (pct),
680
+ @*- the algorithm of Conti/Traverso using elimination (ect),
681
+ @*- the algorithm of Pottier (pt),
682
+ @*- an algorithm of Bigatti/La Scala/Robbiano (blr),
683
+ @*- the algorithm of Hosten/Sturmfels (hs),
684
+ @*- the algorithm of DiBiase/Urbanke (du).
685
+ @*The argument `alg' should be the abbreviation for an algorithm as
686
+ above: ct, pct, ect, pt, blr, hs or du.
687
+
688
+ `ct' allows computation of an optimal solution of the IP-problem
689
+ directly from the right-hand vector b.
690
+ The same is true for its `positive' variant `pct' which may only be
691
+ applied if A and b have nonnegative entries.
692
+ All other algorithms need initial solutions of the IP-problem.
693
+
694
+ If `alg' is chosen to be `ct' or `pct', bx is read as the right hand
695
+ vector b of the system Ax=b. b should then be an intvec of size m
696
+ where m is the number of rows of A.
697
+ Furthermore, bx and A should be nonnegative if `pct' is used.
698
+ If `alg' is chosen to be `ect',`pt',`blr',`hs' or `du',
699
+ bx is read as an initial solution x of the system Ax=b.
700
+ bx should then be a nonnegative intvec of size n where n is the
701
+ number of columns of A.
702
+
703
+ If `alg' is chosen to be `blr' or `hs', the algorithm needs a vector
704
+ with positive coefficients in the row space of A.
705
+ If no row of A contains only positive entries, one has to use the
706
+ versions of solve_IP which take such a vector prsv as an argument.
707
+
708
+ solve_IP may also be called with a list bx of intvecs instead of a
709
+ single intvec.
710
+ SEE ALSO: intprog_lib, toric_lib, Integer programming
711
+ EXAMPLE: example solve_IP; shows an example
712
+ "
713
+ {
714
+ if(size(#)==4)
715
+ {
716
+ if(typeof(#[2])=="intvec")
717
+ {
718
+ return(solve_IP_1(#[1],#[2],#[3],#[4]));
719
+ }
720
+ else
721
+ {
722
+ return(solve_IP_2(#[1],#[2],#[3],#[4]));
723
+ }
724
+ }
725
+ else
726
+ {
727
+ if(typeof(#[2])=="intvec")
728
+ {
729
+ return(solve_IP_3(#[1],#[2],#[3],#[4],#[5]));
730
+ }
731
+ else
732
+ {
733
+ return(solve_IP_4(#[1],#[2],#[3],#[4],#[5]));
734
+ }
735
+ }
736
+ }
737
+
738
+
739
+
740
+ example
741
+ { "EXAMPLE"; echo=2;
742
+ // 1. call with single right-hand vector
743
+ intmat A[2][3]=1,1,0,0,1,1;
744
+ intvec b1=1,1;
745
+ intvec c=2,2,1;
746
+ intvec solution_vector=solve_IP(A,b1,c,"pct");
747
+ solution_vector;"";
748
+
749
+ // 2. call with list of right-hand vectors
750
+ intvec b2=-1,1;
751
+ list l=b1,b2;
752
+ l;
753
+ list solution_list=solve_IP(A,l,c,"ct");
754
+ solution_list;"";
755
+
756
+ // 3. call with single initial solution vector
757
+ A=2,1,-1,-1,1,2;
758
+ b1=3,4,5;
759
+ solve_IP(A,b1,c,"du");"";
760
+
761
+ // 4. call with single initial solution vector
762
+ // and algorithm needing a positive row space vector
763
+ solution_vector=solve_IP(A,b1,c,"hs");"";
764
+
765
+ // 5. call with single initial solution vector
766
+ // and positive row space vector
767
+ intvec prsv=1,2,1;
768
+ solution_vector=solve_IP(A,b1,c,"hs",prsv);
769
+ solution_vector;"";
770
+
771
+ // 6. call with list of initial solution vectors
772
+ // and positive row space vector
773
+ b2=7,8,0;
774
+ l=b1,b2;
775
+ l;
776
+ solution_list=solve_IP(A,l,c,"blr",prsv);
777
+ solution_list;
778
+ }