passagemath-singular 10.6.31rc3__cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl

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

Potentially problematic release.


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

Files changed (490) hide show
  1. PySingular.cpython-314-aarch64-linux-gnu.so +0 -0
  2. passagemath_singular-10.6.31rc3.dist-info/METADATA +183 -0
  3. passagemath_singular-10.6.31rc3.dist-info/RECORD +490 -0
  4. passagemath_singular-10.6.31rc3.dist-info/WHEEL +6 -0
  5. passagemath_singular-10.6.31rc3.dist-info/top_level.txt +3 -0
  6. passagemath_singular.libs/libSingular-4-6a2a8666.4.1.so +0 -0
  7. passagemath_singular.libs/libcddgmp-ac579979.so.0.1.3 +0 -0
  8. passagemath_singular.libs/libfactory-4-66e33516.4.1.so +0 -0
  9. passagemath_singular.libs/libflint-81de1160.so.21.0.0 +0 -0
  10. passagemath_singular.libs/libgf2x-fbd36f80.so.3.0.0 +0 -0
  11. passagemath_singular.libs/libgfortran-e1b7dfc8.so.5.0.0 +0 -0
  12. passagemath_singular.libs/libgmp-93ebf16a.so.10.5.0 +0 -0
  13. passagemath_singular.libs/libgsl-e3525837.so.28.0.0 +0 -0
  14. passagemath_singular.libs/libmpfr-e0f11cf3.so.6.2.1 +0 -0
  15. passagemath_singular.libs/libntl-0043a3a2.so.44.0.1 +0 -0
  16. passagemath_singular.libs/libomalloc-0-06512335.9.6.so +0 -0
  17. passagemath_singular.libs/libopenblasp-r0-4c5b64b1.3.29.so +0 -0
  18. passagemath_singular.libs/libpolys-4-cb7246b5.4.1.so +0 -0
  19. passagemath_singular.libs/libreadline-28330744.so.8.2 +0 -0
  20. passagemath_singular.libs/libsingular_resources-4-8c425241.4.1.so +0 -0
  21. passagemath_singular.libs/libtinfo-f81c2d16.so.6.3 +0 -0
  22. sage/algebras/all__sagemath_singular.py +3 -0
  23. sage/algebras/fusion_rings/all.py +19 -0
  24. sage/algebras/fusion_rings/f_matrix.py +2448 -0
  25. sage/algebras/fusion_rings/fast_parallel_fmats_methods.cpython-314-aarch64-linux-gnu.so +0 -0
  26. sage/algebras/fusion_rings/fast_parallel_fmats_methods.pxd +5 -0
  27. sage/algebras/fusion_rings/fast_parallel_fmats_methods.pyx +538 -0
  28. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.cpython-314-aarch64-linux-gnu.so +0 -0
  29. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pxd +3 -0
  30. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pyx +331 -0
  31. sage/algebras/fusion_rings/fusion_double.py +899 -0
  32. sage/algebras/fusion_rings/fusion_ring.py +1580 -0
  33. sage/algebras/fusion_rings/poly_tup_engine.cpython-314-aarch64-linux-gnu.so +0 -0
  34. sage/algebras/fusion_rings/poly_tup_engine.pxd +24 -0
  35. sage/algebras/fusion_rings/poly_tup_engine.pyx +579 -0
  36. sage/algebras/fusion_rings/shm_managers.cpython-314-aarch64-linux-gnu.so +0 -0
  37. sage/algebras/fusion_rings/shm_managers.pxd +24 -0
  38. sage/algebras/fusion_rings/shm_managers.pyx +780 -0
  39. sage/algebras/letterplace/all.py +1 -0
  40. sage/algebras/letterplace/free_algebra_element_letterplace.cpython-314-aarch64-linux-gnu.so +0 -0
  41. sage/algebras/letterplace/free_algebra_element_letterplace.pxd +18 -0
  42. sage/algebras/letterplace/free_algebra_element_letterplace.pyx +755 -0
  43. sage/algebras/letterplace/free_algebra_letterplace.cpython-314-aarch64-linux-gnu.so +0 -0
  44. sage/algebras/letterplace/free_algebra_letterplace.pxd +35 -0
  45. sage/algebras/letterplace/free_algebra_letterplace.pyx +914 -0
  46. sage/algebras/letterplace/letterplace_ideal.cpython-314-aarch64-linux-gnu.so +0 -0
  47. sage/algebras/letterplace/letterplace_ideal.pyx +408 -0
  48. sage/algebras/quatalg/all.py +2 -0
  49. sage/algebras/quatalg/quaternion_algebra.py +4778 -0
  50. sage/algebras/quatalg/quaternion_algebra_cython.cpython-314-aarch64-linux-gnu.so +0 -0
  51. sage/algebras/quatalg/quaternion_algebra_cython.pyx +261 -0
  52. sage/algebras/quatalg/quaternion_algebra_element.cpython-314-aarch64-linux-gnu.so +0 -0
  53. sage/algebras/quatalg/quaternion_algebra_element.pxd +29 -0
  54. sage/algebras/quatalg/quaternion_algebra_element.pyx +2176 -0
  55. sage/all__sagemath_singular.py +11 -0
  56. sage/ext_data/all__sagemath_singular.py +1 -0
  57. sage/ext_data/singular/function_field/core.lib +98 -0
  58. sage/interfaces/all__sagemath_singular.py +1 -0
  59. sage/interfaces/singular.py +2835 -0
  60. sage/libs/all__sagemath_singular.py +1 -0
  61. sage/libs/singular/__init__.py +1 -0
  62. sage/libs/singular/decl.pxd +1168 -0
  63. sage/libs/singular/function.cpython-314-aarch64-linux-gnu.so +0 -0
  64. sage/libs/singular/function.pxd +87 -0
  65. sage/libs/singular/function.pyx +1901 -0
  66. sage/libs/singular/function_factory.py +61 -0
  67. sage/libs/singular/groebner_strategy.cpython-314-aarch64-linux-gnu.so +0 -0
  68. sage/libs/singular/groebner_strategy.pxd +22 -0
  69. sage/libs/singular/groebner_strategy.pyx +582 -0
  70. sage/libs/singular/option.cpython-314-aarch64-linux-gnu.so +0 -0
  71. sage/libs/singular/option.pyx +671 -0
  72. sage/libs/singular/polynomial.cpython-314-aarch64-linux-gnu.so +0 -0
  73. sage/libs/singular/polynomial.pxd +39 -0
  74. sage/libs/singular/polynomial.pyx +661 -0
  75. sage/libs/singular/ring.cpython-314-aarch64-linux-gnu.so +0 -0
  76. sage/libs/singular/ring.pxd +58 -0
  77. sage/libs/singular/ring.pyx +893 -0
  78. sage/libs/singular/singular.cpython-314-aarch64-linux-gnu.so +0 -0
  79. sage/libs/singular/singular.pxd +72 -0
  80. sage/libs/singular/singular.pyx +1944 -0
  81. sage/libs/singular/standard_options.py +145 -0
  82. sage/matrix/all__sagemath_singular.py +1 -0
  83. sage/matrix/matrix_mpolynomial_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  84. sage/matrix/matrix_mpolynomial_dense.pxd +7 -0
  85. sage/matrix/matrix_mpolynomial_dense.pyx +615 -0
  86. sage/rings/all__sagemath_singular.py +1 -0
  87. sage/rings/function_field/all__sagemath_singular.py +1 -0
  88. sage/rings/function_field/derivations_polymod.py +911 -0
  89. sage/rings/function_field/element_polymod.cpython-314-aarch64-linux-gnu.so +0 -0
  90. sage/rings/function_field/element_polymod.pyx +406 -0
  91. sage/rings/function_field/function_field_polymod.py +2611 -0
  92. sage/rings/function_field/ideal_polymod.py +1775 -0
  93. sage/rings/function_field/order_polymod.py +1475 -0
  94. sage/rings/function_field/place_polymod.py +681 -0
  95. sage/rings/polynomial/all__sagemath_singular.py +1 -0
  96. sage/rings/polynomial/multi_polynomial_ideal_libsingular.cpython-314-aarch64-linux-gnu.so +0 -0
  97. sage/rings/polynomial/multi_polynomial_ideal_libsingular.pxd +5 -0
  98. sage/rings/polynomial/multi_polynomial_ideal_libsingular.pyx +339 -0
  99. sage/rings/polynomial/multi_polynomial_libsingular.cpython-314-aarch64-linux-gnu.so +0 -0
  100. sage/rings/polynomial/multi_polynomial_libsingular.pxd +30 -0
  101. sage/rings/polynomial/multi_polynomial_libsingular.pyx +6277 -0
  102. sage/rings/polynomial/plural.cpython-314-aarch64-linux-gnu.so +0 -0
  103. sage/rings/polynomial/plural.pxd +48 -0
  104. sage/rings/polynomial/plural.pyx +3171 -0
  105. sage/symbolic/all__sagemath_singular.py +1 -0
  106. sage/symbolic/comparison_impl.pxi +428 -0
  107. sage/symbolic/constants_c_impl.pxi +178 -0
  108. sage/symbolic/expression.cpython-314-aarch64-linux-gnu.so +0 -0
  109. sage/symbolic/expression.pxd +7 -0
  110. sage/symbolic/expression.pyx +14200 -0
  111. sage/symbolic/getitem_impl.pxi +202 -0
  112. sage/symbolic/pynac.pxi +572 -0
  113. sage/symbolic/pynac_constant_impl.pxi +133 -0
  114. sage/symbolic/pynac_function_impl.pxi +206 -0
  115. sage/symbolic/pynac_impl.pxi +2576 -0
  116. sage/symbolic/pynac_wrap.h +124 -0
  117. sage/symbolic/series_impl.pxi +272 -0
  118. sage/symbolic/substitution_map_impl.pxi +94 -0
  119. sage_wheels/bin/ESingular +0 -0
  120. sage_wheels/bin/Singular +0 -0
  121. sage_wheels/bin/TSingular +0 -0
  122. sage_wheels/lib/singular/MOD/cohomo.la +41 -0
  123. sage_wheels/lib/singular/MOD/cohomo.so +0 -0
  124. sage_wheels/lib/singular/MOD/customstd.la +41 -0
  125. sage_wheels/lib/singular/MOD/customstd.so +0 -0
  126. sage_wheels/lib/singular/MOD/freealgebra.la +41 -0
  127. sage_wheels/lib/singular/MOD/freealgebra.so +0 -0
  128. sage_wheels/lib/singular/MOD/gfanlib.la +41 -0
  129. sage_wheels/lib/singular/MOD/gfanlib.so +0 -0
  130. sage_wheels/lib/singular/MOD/gitfan.la +41 -0
  131. sage_wheels/lib/singular/MOD/gitfan.so +0 -0
  132. sage_wheels/lib/singular/MOD/interval.la +41 -0
  133. sage_wheels/lib/singular/MOD/interval.so +0 -0
  134. sage_wheels/lib/singular/MOD/loctriv.la +41 -0
  135. sage_wheels/lib/singular/MOD/loctriv.so +0 -0
  136. sage_wheels/lib/singular/MOD/machinelearning.la +41 -0
  137. sage_wheels/lib/singular/MOD/machinelearning.so +0 -0
  138. sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.la +41 -0
  139. sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.so +0 -0
  140. sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.la +41 -0
  141. sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.so +0 -0
  142. sage_wheels/lib/singular/MOD/p_Procs_FieldQ.la +41 -0
  143. sage_wheels/lib/singular/MOD/p_Procs_FieldQ.so +0 -0
  144. sage_wheels/lib/singular/MOD/p_Procs_FieldZp.la +41 -0
  145. sage_wheels/lib/singular/MOD/p_Procs_FieldZp.so +0 -0
  146. sage_wheels/lib/singular/MOD/partialgb.la +41 -0
  147. sage_wheels/lib/singular/MOD/partialgb.so +0 -0
  148. sage_wheels/lib/singular/MOD/pyobject.la +41 -0
  149. sage_wheels/lib/singular/MOD/pyobject.so +0 -0
  150. sage_wheels/lib/singular/MOD/singmathic.la +41 -0
  151. sage_wheels/lib/singular/MOD/singmathic.so +0 -0
  152. sage_wheels/lib/singular/MOD/sispasm.la +41 -0
  153. sage_wheels/lib/singular/MOD/sispasm.so +0 -0
  154. sage_wheels/lib/singular/MOD/subsets.la +41 -0
  155. sage_wheels/lib/singular/MOD/subsets.so +0 -0
  156. sage_wheels/lib/singular/MOD/systhreads.la +41 -0
  157. sage_wheels/lib/singular/MOD/systhreads.so +0 -0
  158. sage_wheels/lib/singular/MOD/syzextra.la +41 -0
  159. sage_wheels/lib/singular/MOD/syzextra.so +0 -0
  160. sage_wheels/libexec/singular/MOD/change_cost +0 -0
  161. sage_wheels/libexec/singular/MOD/singularsurf +11 -0
  162. sage_wheels/libexec/singular/MOD/singularsurf_jupyter +9 -0
  163. sage_wheels/libexec/singular/MOD/singularsurf_win +10 -0
  164. sage_wheels/libexec/singular/MOD/solve_IP +0 -0
  165. sage_wheels/libexec/singular/MOD/surfex +16 -0
  166. sage_wheels/libexec/singular/MOD/toric_ideal +0 -0
  167. sage_wheels/share/factory/gftables/10201 +342 -0
  168. sage_wheels/share/factory/gftables/1024 +37 -0
  169. sage_wheels/share/factory/gftables/10609 +356 -0
  170. sage_wheels/share/factory/gftables/11449 +384 -0
  171. sage_wheels/share/factory/gftables/11881 +398 -0
  172. sage_wheels/share/factory/gftables/121 +6 -0
  173. sage_wheels/share/factory/gftables/12167 +408 -0
  174. sage_wheels/share/factory/gftables/125 +7 -0
  175. sage_wheels/share/factory/gftables/12769 +428 -0
  176. sage_wheels/share/factory/gftables/128 +7 -0
  177. sage_wheels/share/factory/gftables/1331 +47 -0
  178. sage_wheels/share/factory/gftables/1369 +48 -0
  179. sage_wheels/share/factory/gftables/14641 +490 -0
  180. sage_wheels/share/factory/gftables/15625 +523 -0
  181. sage_wheels/share/factory/gftables/16 +3 -0
  182. sage_wheels/share/factory/gftables/16129 +540 -0
  183. sage_wheels/share/factory/gftables/16384 +549 -0
  184. sage_wheels/share/factory/gftables/16807 +563 -0
  185. sage_wheels/share/factory/gftables/1681 +58 -0
  186. sage_wheels/share/factory/gftables/169 +8 -0
  187. sage_wheels/share/factory/gftables/17161 +574 -0
  188. sage_wheels/share/factory/gftables/1849 +64 -0
  189. sage_wheels/share/factory/gftables/18769 +628 -0
  190. sage_wheels/share/factory/gftables/19321 +646 -0
  191. sage_wheels/share/factory/gftables/19683 +659 -0
  192. sage_wheels/share/factory/gftables/2048 +71 -0
  193. sage_wheels/share/factory/gftables/2187 +75 -0
  194. sage_wheels/share/factory/gftables/2197 +76 -0
  195. sage_wheels/share/factory/gftables/2209 +76 -0
  196. sage_wheels/share/factory/gftables/22201 +742 -0
  197. sage_wheels/share/factory/gftables/22801 +762 -0
  198. sage_wheels/share/factory/gftables/2401 +82 -0
  199. sage_wheels/share/factory/gftables/243 +11 -0
  200. sage_wheels/share/factory/gftables/24389 +815 -0
  201. sage_wheels/share/factory/gftables/24649 +824 -0
  202. sage_wheels/share/factory/gftables/25 +3 -0
  203. sage_wheels/share/factory/gftables/256 +11 -0
  204. sage_wheels/share/factory/gftables/26569 +888 -0
  205. sage_wheels/share/factory/gftables/27 +3 -0
  206. sage_wheels/share/factory/gftables/27889 +932 -0
  207. sage_wheels/share/factory/gftables/2809 +96 -0
  208. sage_wheels/share/factory/gftables/28561 +954 -0
  209. sage_wheels/share/factory/gftables/289 +12 -0
  210. sage_wheels/share/factory/gftables/29791 +995 -0
  211. sage_wheels/share/factory/gftables/29929 +1000 -0
  212. sage_wheels/share/factory/gftables/3125 +107 -0
  213. sage_wheels/share/factory/gftables/32 +4 -0
  214. sage_wheels/share/factory/gftables/32041 +1070 -0
  215. sage_wheels/share/factory/gftables/32761 +1094 -0
  216. sage_wheels/share/factory/gftables/32768 +1095 -0
  217. sage_wheels/share/factory/gftables/343 +14 -0
  218. sage_wheels/share/factory/gftables/3481 +118 -0
  219. sage_wheels/share/factory/gftables/361 +14 -0
  220. sage_wheels/share/factory/gftables/36481 +1218 -0
  221. sage_wheels/share/factory/gftables/3721 +126 -0
  222. sage_wheels/share/factory/gftables/37249 +1244 -0
  223. sage_wheels/share/factory/gftables/38809 +1296 -0
  224. sage_wheels/share/factory/gftables/39601 +1322 -0
  225. sage_wheels/share/factory/gftables/4 +3 -0
  226. sage_wheels/share/factory/gftables/4096 +139 -0
  227. sage_wheels/share/factory/gftables/44521 +1486 -0
  228. sage_wheels/share/factory/gftables/4489 +152 -0
  229. sage_wheels/share/factory/gftables/49 +4 -0
  230. sage_wheels/share/factory/gftables/4913 +166 -0
  231. sage_wheels/share/factory/gftables/49729 +1660 -0
  232. sage_wheels/share/factory/gftables/5041 +170 -0
  233. sage_wheels/share/factory/gftables/50653 +1691 -0
  234. sage_wheels/share/factory/gftables/512 +20 -0
  235. sage_wheels/share/factory/gftables/51529 +1720 -0
  236. sage_wheels/share/factory/gftables/52441 +1750 -0
  237. sage_wheels/share/factory/gftables/529 +20 -0
  238. sage_wheels/share/factory/gftables/5329 +180 -0
  239. sage_wheels/share/factory/gftables/54289 +1812 -0
  240. sage_wheels/share/factory/gftables/57121 +1906 -0
  241. sage_wheels/share/factory/gftables/58081 +1938 -0
  242. sage_wheels/share/factory/gftables/59049 +1971 -0
  243. sage_wheels/share/factory/gftables/6241 +210 -0
  244. sage_wheels/share/factory/gftables/625 +23 -0
  245. sage_wheels/share/factory/gftables/63001 +2102 -0
  246. sage_wheels/share/factory/gftables/64 +5 -0
  247. sage_wheels/share/factory/gftables/6561 +221 -0
  248. sage_wheels/share/factory/gftables/6859 +231 -0
  249. sage_wheels/share/factory/gftables/6889 +232 -0
  250. sage_wheels/share/factory/gftables/729 +27 -0
  251. sage_wheels/share/factory/gftables/7921 +266 -0
  252. sage_wheels/share/factory/gftables/8 +3 -0
  253. sage_wheels/share/factory/gftables/81 +5 -0
  254. sage_wheels/share/factory/gftables/8192 +276 -0
  255. sage_wheels/share/factory/gftables/841 +30 -0
  256. sage_wheels/share/factory/gftables/9 +3 -0
  257. sage_wheels/share/factory/gftables/9409 +316 -0
  258. sage_wheels/share/factory/gftables/961 +34 -0
  259. sage_wheels/share/info/singular.info +191898 -0
  260. sage_wheels/share/singular/LIB/GND.lib +1359 -0
  261. sage_wheels/share/singular/LIB/JMBTest.lib +976 -0
  262. sage_wheels/share/singular/LIB/JMSConst.lib +1363 -0
  263. sage_wheels/share/singular/LIB/KVequiv.lib +699 -0
  264. sage_wheels/share/singular/LIB/SingularityDBM.lib +491 -0
  265. sage_wheels/share/singular/LIB/VecField.lib +1542 -0
  266. sage_wheels/share/singular/LIB/absfact.lib +959 -0
  267. sage_wheels/share/singular/LIB/ainvar.lib +730 -0
  268. sage_wheels/share/singular/LIB/aksaka.lib +419 -0
  269. sage_wheels/share/singular/LIB/alexpoly.lib +2542 -0
  270. sage_wheels/share/singular/LIB/algebra.lib +1193 -0
  271. sage_wheels/share/singular/LIB/all.lib +136 -0
  272. sage_wheels/share/singular/LIB/arcpoint.lib +514 -0
  273. sage_wheels/share/singular/LIB/arnold.lib +4553 -0
  274. sage_wheels/share/singular/LIB/arnoldclassify.lib +2058 -0
  275. sage_wheels/share/singular/LIB/arr.lib +3486 -0
  276. sage_wheels/share/singular/LIB/assprimeszerodim.lib +755 -0
  277. sage_wheels/share/singular/LIB/autgradalg.lib +3361 -0
  278. sage_wheels/share/singular/LIB/bfun.lib +1964 -0
  279. sage_wheels/share/singular/LIB/bimodules.lib +774 -0
  280. sage_wheels/share/singular/LIB/brillnoether.lib +226 -0
  281. sage_wheels/share/singular/LIB/brnoeth.lib +5017 -0
  282. sage_wheels/share/singular/LIB/central.lib +2169 -0
  283. sage_wheels/share/singular/LIB/chern.lib +4162 -0
  284. sage_wheels/share/singular/LIB/cimonom.lib +571 -0
  285. sage_wheels/share/singular/LIB/cisimplicial.lib +1835 -0
  286. sage_wheels/share/singular/LIB/classify.lib +3239 -0
  287. sage_wheels/share/singular/LIB/classify2.lib +1462 -0
  288. sage_wheels/share/singular/LIB/classifyMapGerms.lib +1515 -0
  289. sage_wheels/share/singular/LIB/classify_aeq.lib +3253 -0
  290. sage_wheels/share/singular/LIB/classifyceq.lib +2092 -0
  291. sage_wheels/share/singular/LIB/classifyci.lib +1133 -0
  292. sage_wheels/share/singular/LIB/combinat.lib +91 -0
  293. sage_wheels/share/singular/LIB/compregb.lib +276 -0
  294. sage_wheels/share/singular/LIB/control.lib +1636 -0
  295. sage_wheels/share/singular/LIB/crypto.lib +3795 -0
  296. sage_wheels/share/singular/LIB/curveInv.lib +667 -0
  297. sage_wheels/share/singular/LIB/curvepar.lib +1817 -0
  298. sage_wheels/share/singular/LIB/customstd.lib +100 -0
  299. sage_wheels/share/singular/LIB/deRham.lib +5979 -0
  300. sage_wheels/share/singular/LIB/decodegb.lib +2134 -0
  301. sage_wheels/share/singular/LIB/decomp.lib +1655 -0
  302. sage_wheels/share/singular/LIB/deflation.lib +872 -0
  303. sage_wheels/share/singular/LIB/deform.lib +925 -0
  304. sage_wheels/share/singular/LIB/difform.lib +3055 -0
  305. sage_wheels/share/singular/LIB/divisors.lib +750 -0
  306. sage_wheels/share/singular/LIB/dmod.lib +5817 -0
  307. sage_wheels/share/singular/LIB/dmodapp.lib +3269 -0
  308. sage_wheels/share/singular/LIB/dmodideal.lib +1211 -0
  309. sage_wheels/share/singular/LIB/dmodloc.lib +2645 -0
  310. sage_wheels/share/singular/LIB/dmodvar.lib +818 -0
  311. sage_wheels/share/singular/LIB/dummy.lib +17 -0
  312. sage_wheels/share/singular/LIB/elim.lib +1009 -0
  313. sage_wheels/share/singular/LIB/ellipticcovers.lib +548 -0
  314. sage_wheels/share/singular/LIB/enumpoints.lib +146 -0
  315. sage_wheels/share/singular/LIB/equising.lib +2127 -0
  316. sage_wheels/share/singular/LIB/ffmodstd.lib +2384 -0
  317. sage_wheels/share/singular/LIB/ffsolve.lib +1289 -0
  318. sage_wheels/share/singular/LIB/findifs.lib +778 -0
  319. sage_wheels/share/singular/LIB/finitediff.lib +1768 -0
  320. sage_wheels/share/singular/LIB/finvar.lib +7989 -0
  321. sage_wheels/share/singular/LIB/fpadim.lib +2429 -0
  322. sage_wheels/share/singular/LIB/fpalgebras.lib +1666 -0
  323. sage_wheels/share/singular/LIB/fpaprops.lib +1462 -0
  324. sage_wheels/share/singular/LIB/freegb.lib +3853 -0
  325. sage_wheels/share/singular/LIB/general.lib +1350 -0
  326. sage_wheels/share/singular/LIB/gfan.lib +1768 -0
  327. sage_wheels/share/singular/LIB/gitfan.lib +3130 -0
  328. sage_wheels/share/singular/LIB/gkdim.lib +99 -0
  329. sage_wheels/share/singular/LIB/gmspoly.lib +589 -0
  330. sage_wheels/share/singular/LIB/gmssing.lib +1739 -0
  331. sage_wheels/share/singular/LIB/goettsche.lib +909 -0
  332. sage_wheels/share/singular/LIB/graal.lib +1366 -0
  333. sage_wheels/share/singular/LIB/gradedModules.lib +2541 -0
  334. sage_wheels/share/singular/LIB/graphics.lib +360 -0
  335. sage_wheels/share/singular/LIB/grobcov.lib +7706 -0
  336. sage_wheels/share/singular/LIB/groups.lib +1123 -0
  337. sage_wheels/share/singular/LIB/grwalk.lib +507 -0
  338. sage_wheels/share/singular/LIB/hdepth.lib +194 -0
  339. sage_wheels/share/singular/LIB/help.cnf +57 -0
  340. sage_wheels/share/singular/LIB/hess.lib +1946 -0
  341. sage_wheels/share/singular/LIB/hnoether.lib +4292 -0
  342. sage_wheels/share/singular/LIB/hodge.lib +400 -0
  343. sage_wheels/share/singular/LIB/homolog.lib +1965 -0
  344. sage_wheels/share/singular/LIB/hyperel.lib +975 -0
  345. sage_wheels/share/singular/LIB/inout.lib +679 -0
  346. sage_wheels/share/singular/LIB/integralbasis.lib +6224 -0
  347. sage_wheels/share/singular/LIB/interval.lib +1418 -0
  348. sage_wheels/share/singular/LIB/intprog.lib +778 -0
  349. sage_wheels/share/singular/LIB/invar.lib +443 -0
  350. sage_wheels/share/singular/LIB/involut.lib +980 -0
  351. sage_wheels/share/singular/LIB/jacobson.lib +1215 -0
  352. sage_wheels/share/singular/LIB/kskernel.lib +534 -0
  353. sage_wheels/share/singular/LIB/latex.lib +3146 -0
  354. sage_wheels/share/singular/LIB/lejeune.lib +651 -0
  355. sage_wheels/share/singular/LIB/linalg.lib +2040 -0
  356. sage_wheels/share/singular/LIB/locnormal.lib +212 -0
  357. sage_wheels/share/singular/LIB/lrcalc.lib +526 -0
  358. sage_wheels/share/singular/LIB/makedbm.lib +294 -0
  359. sage_wheels/share/singular/LIB/mathml.lib +813 -0
  360. sage_wheels/share/singular/LIB/matrix.lib +1372 -0
  361. sage_wheels/share/singular/LIB/maxlike.lib +1132 -0
  362. sage_wheels/share/singular/LIB/methods.lib +212 -0
  363. sage_wheels/share/singular/LIB/moddiq.lib +322 -0
  364. sage_wheels/share/singular/LIB/modfinduni.lib +181 -0
  365. sage_wheels/share/singular/LIB/modnormal.lib +218 -0
  366. sage_wheels/share/singular/LIB/modprimdec.lib +1278 -0
  367. sage_wheels/share/singular/LIB/modquotient.lib +269 -0
  368. sage_wheels/share/singular/LIB/modstd.lib +1024 -0
  369. sage_wheels/share/singular/LIB/modular.lib +545 -0
  370. sage_wheels/share/singular/LIB/modules.lib +2561 -0
  371. sage_wheels/share/singular/LIB/modwalk.lib +609 -0
  372. sage_wheels/share/singular/LIB/mondromy.lib +1016 -0
  373. sage_wheels/share/singular/LIB/monomialideal.lib +3851 -0
  374. sage_wheels/share/singular/LIB/mprimdec.lib +2353 -0
  375. sage_wheels/share/singular/LIB/mregular.lib +1863 -0
  376. sage_wheels/share/singular/LIB/multigrading.lib +5629 -0
  377. sage_wheels/share/singular/LIB/ncHilb.lib +777 -0
  378. sage_wheels/share/singular/LIB/ncModslimgb.lib +791 -0
  379. sage_wheels/share/singular/LIB/ncalg.lib +16311 -0
  380. sage_wheels/share/singular/LIB/ncall.lib +31 -0
  381. sage_wheels/share/singular/LIB/ncdecomp.lib +468 -0
  382. sage_wheels/share/singular/LIB/ncfactor.lib +13371 -0
  383. sage_wheels/share/singular/LIB/ncfrac.lib +1023 -0
  384. sage_wheels/share/singular/LIB/nchilbert.lib +448 -0
  385. sage_wheels/share/singular/LIB/nchomolog.lib +759 -0
  386. sage_wheels/share/singular/LIB/ncloc.lib +361 -0
  387. sage_wheels/share/singular/LIB/ncpreim.lib +795 -0
  388. sage_wheels/share/singular/LIB/ncrat.lib +2849 -0
  389. sage_wheels/share/singular/LIB/nctools.lib +1887 -0
  390. sage_wheels/share/singular/LIB/nets.lib +1456 -0
  391. sage_wheels/share/singular/LIB/nfmodstd.lib +1000 -0
  392. sage_wheels/share/singular/LIB/nfmodsyz.lib +732 -0
  393. sage_wheels/share/singular/LIB/noether.lib +1106 -0
  394. sage_wheels/share/singular/LIB/normal.lib +8700 -0
  395. sage_wheels/share/singular/LIB/normaliz.lib +2226 -0
  396. sage_wheels/share/singular/LIB/ntsolve.lib +362 -0
  397. sage_wheels/share/singular/LIB/numerAlg.lib +560 -0
  398. sage_wheels/share/singular/LIB/numerDecom.lib +2261 -0
  399. sage_wheels/share/singular/LIB/olga.lib +1933 -0
  400. sage_wheels/share/singular/LIB/orbitparam.lib +351 -0
  401. sage_wheels/share/singular/LIB/parallel.lib +319 -0
  402. sage_wheels/share/singular/LIB/paraplanecurves.lib +3110 -0
  403. sage_wheels/share/singular/LIB/perron.lib +202 -0
  404. sage_wheels/share/singular/LIB/pfd.lib +2223 -0
  405. sage_wheels/share/singular/LIB/phindex.lib +642 -0
  406. sage_wheels/share/singular/LIB/pointid.lib +673 -0
  407. sage_wheels/share/singular/LIB/polybori.lib +1430 -0
  408. sage_wheels/share/singular/LIB/polyclass.lib +525 -0
  409. sage_wheels/share/singular/LIB/polylib.lib +1174 -0
  410. sage_wheels/share/singular/LIB/polymake.lib +1902 -0
  411. sage_wheels/share/singular/LIB/presolve.lib +1533 -0
  412. sage_wheels/share/singular/LIB/primdec.lib +9576 -0
  413. sage_wheels/share/singular/LIB/primdecint.lib +1782 -0
  414. sage_wheels/share/singular/LIB/primitiv.lib +401 -0
  415. sage_wheels/share/singular/LIB/puiseuxexpansions.lib +1631 -0
  416. sage_wheels/share/singular/LIB/purityfiltration.lib +960 -0
  417. sage_wheels/share/singular/LIB/qhmoduli.lib +1561 -0
  418. sage_wheels/share/singular/LIB/qmatrix.lib +293 -0
  419. sage_wheels/share/singular/LIB/random.lib +455 -0
  420. sage_wheels/share/singular/LIB/ratgb.lib +489 -0
  421. sage_wheels/share/singular/LIB/realclassify.lib +5759 -0
  422. sage_wheels/share/singular/LIB/realizationMatroids.lib +772 -0
  423. sage_wheels/share/singular/LIB/realrad.lib +1197 -0
  424. sage_wheels/share/singular/LIB/recover.lib +2628 -0
  425. sage_wheels/share/singular/LIB/redcgs.lib +3984 -0
  426. sage_wheels/share/singular/LIB/reesclos.lib +465 -0
  427. sage_wheels/share/singular/LIB/resbinomial.lib +2802 -0
  428. sage_wheels/share/singular/LIB/resgraph.lib +789 -0
  429. sage_wheels/share/singular/LIB/resjung.lib +820 -0
  430. sage_wheels/share/singular/LIB/resolve.lib +5110 -0
  431. sage_wheels/share/singular/LIB/resources.lib +170 -0
  432. sage_wheels/share/singular/LIB/reszeta.lib +5473 -0
  433. sage_wheels/share/singular/LIB/ring.lib +1328 -0
  434. sage_wheels/share/singular/LIB/ringgb.lib +343 -0
  435. sage_wheels/share/singular/LIB/rinvar.lib +1153 -0
  436. sage_wheels/share/singular/LIB/rootisolation.lib +1481 -0
  437. sage_wheels/share/singular/LIB/rootsmr.lib +709 -0
  438. sage_wheels/share/singular/LIB/rootsur.lib +886 -0
  439. sage_wheels/share/singular/LIB/rstandard.lib +607 -0
  440. sage_wheels/share/singular/LIB/rwalk.lib +336 -0
  441. sage_wheels/share/singular/LIB/sagbi.lib +1353 -0
  442. sage_wheels/share/singular/LIB/sagbiNormaliz.lib +1622 -0
  443. sage_wheels/share/singular/LIB/sagbiNormaliz0.lib +1498 -0
  444. sage_wheels/share/singular/LIB/sagbigrob.lib +449 -0
  445. sage_wheels/share/singular/LIB/schreyer.lib +321 -0
  446. sage_wheels/share/singular/LIB/schubert.lib +2551 -0
  447. sage_wheels/share/singular/LIB/sets.lib +524 -0
  448. sage_wheels/share/singular/LIB/sheafcoh.lib +1663 -0
  449. sage_wheels/share/singular/LIB/signcond.lib +437 -0
  450. sage_wheels/share/singular/LIB/sing.lib +1094 -0
  451. sage_wheels/share/singular/LIB/sing4ti2.lib +419 -0
  452. sage_wheels/share/singular/LIB/solve.lib +2243 -0
  453. sage_wheels/share/singular/LIB/spcurve.lib +1077 -0
  454. sage_wheels/share/singular/LIB/spectrum.lib +62 -0
  455. sage_wheels/share/singular/LIB/sresext.lib +757 -0
  456. sage_wheels/share/singular/LIB/ssi.lib +143 -0
  457. sage_wheels/share/singular/LIB/standard.lib +2769 -0
  458. sage_wheels/share/singular/LIB/stanleyreisner.lib +473 -0
  459. sage_wheels/share/singular/LIB/stdmodule.lib +547 -0
  460. sage_wheels/share/singular/LIB/stratify.lib +1070 -0
  461. sage_wheels/share/singular/LIB/surf.lib +506 -0
  462. sage_wheels/share/singular/LIB/surf_jupyter.lib +223 -0
  463. sage_wheels/share/singular/LIB/surfacesignature.lib +522 -0
  464. sage_wheels/share/singular/LIB/surfex.lib +1462 -0
  465. sage_wheels/share/singular/LIB/swalk.lib +877 -0
  466. sage_wheels/share/singular/LIB/symodstd.lib +1570 -0
  467. sage_wheels/share/singular/LIB/systhreads.lib +74 -0
  468. sage_wheels/share/singular/LIB/tasks.lib +1324 -0
  469. sage_wheels/share/singular/LIB/tateProdCplxNegGrad.lib +2412 -0
  470. sage_wheels/share/singular/LIB/teachstd.lib +858 -0
  471. sage_wheels/share/singular/LIB/template.lib +116 -0
  472. sage_wheels/share/singular/LIB/toric.lib +1119 -0
  473. sage_wheels/share/singular/LIB/transformation.lib +116 -0
  474. sage_wheels/share/singular/LIB/triang.lib +1197 -0
  475. sage_wheels/share/singular/LIB/tropical.lib +8741 -0
  476. sage_wheels/share/singular/LIB/tropicalEllipticCovers.lib +2922 -0
  477. sage_wheels/share/singular/LIB/tropicalNewton.lib +1128 -0
  478. sage_wheels/share/singular/LIB/tst.lib +1108 -0
  479. sage_wheels/share/singular/LIB/weierstr.lib +241 -0
  480. sage_wheels/share/singular/LIB/zeroset.lib +1478 -0
  481. sage_wheels/share/singular/emacs/.emacs-general +184 -0
  482. sage_wheels/share/singular/emacs/.emacs-singular +234 -0
  483. sage_wheels/share/singular/emacs/COPYING +44 -0
  484. sage_wheels/share/singular/emacs/cmd-cmpl.el +241 -0
  485. sage_wheels/share/singular/emacs/ex-cmpl.el +1681 -0
  486. sage_wheels/share/singular/emacs/hlp-cmpl.el +4318 -0
  487. sage_wheels/share/singular/emacs/lib-cmpl.el +179 -0
  488. sage_wheels/share/singular/emacs/singular.el +4273 -0
  489. sage_wheels/share/singular/emacs/singular.xpm +39 -0
  490. sage_wheels/share/singular/singular.idx +5002 -0
@@ -0,0 +1,1070 @@
1
+ //////////////////////////////////////////////////////////////////////////
2
+ version="version stratify.lib 4.1.2.0 Feb_2019 "; // $Id: 0660458ee82a1b1df36aba6f605116db59657c78 $
3
+ category="Invariant theory";
4
+ info="
5
+ LIBRARY: stratify.lib Algorithmic Stratification for Unipotent Group-Actions
6
+ AUTHOR: Anne Fruehbis-Krueger, anne@mathematik.uni-kl.de
7
+
8
+ PROCEDURES:
9
+ prepMat(M,wr,ws,step); list of submatrices corresp. to given filtration
10
+ stratify(M,wr,ws,step); algorithmic stratifcation (main procedure)
11
+ ";
12
+ ////////////////////////////////////////////////////////////////////////////
13
+ // REQUIRED LIBRARIES
14
+ ////////////////////////////////////////////////////////////////////////////
15
+
16
+ // first the ones written in Singular
17
+ LIB "general.lib";
18
+ LIB "primdec.lib";
19
+
20
+ // then the ones written in C/C++
21
+
22
+ ////////////////////////////////////////////////////////////////////////////
23
+ // PROCEDURES
24
+ /////////////////////////////////////////////////////////////////////////////
25
+
26
+ /////////////////////////////////////////////////////////////////////////////
27
+ // For the kernel of the Kodaira-Spencer map in the case of hypersurface
28
+ // singularities or CM codimension 2 singularities:
29
+ // * step=min{ord(x_i)}
30
+ // * wr corresponds to the weight vector of the d/dt_i (i.e. to -ord(t_i))
31
+ // (since the entries should be non-negative it may be necessary to
32
+ // multiply the whole vector by -1)
33
+ // * ws corresponds to the weight vector of the delta_i
34
+ // * M is the matrix delta_i(t_j)
35
+ /////////////////////////////////////////////////////////////////////////////
36
+
37
+ proc prepMat(matrix M, intvec wr, intvec ws, int step)
38
+ "USAGE: prepMat(M,wr,ws,step);
39
+ where M is a matrix, wr is an intvec of size ncols(M),
40
+ ws an intvec of size nrows(M) and step is an integer
41
+ RETURN: 2 lists of submatrices corresponding to the filtrations
42
+ specified by wr and ws:
43
+ the first list corresponds to the list for the filtration
44
+ of AdA, i.e. the ranks of these matrices will be the r_i,
45
+ the second one to the list for the filtration of L, i.e.
46
+ the ranks of these matrices will be the s_i
47
+ NOTE: * the entries of the matrix M are M_ij=delta_i(x_j),
48
+ * wr is used to determine what subset of the set of all dx_i is
49
+ generating AdF^l(A):
50
+ if (k-1)*step <= wr[i] < k*step, then dx_i is in the set of
51
+ generators of AdF^l(A) for all l>=k and the i-th column
52
+ of M appears in each submatrix starting from the k-th
53
+ * ws is used to determine what subset of the set of all delta_i
54
+ is generating Z_l(L):
55
+ if (k-1)*step <= ws[i] < k*step, then delta_i is in the set
56
+ of generators of Z_l(A) for l < k and the i-th row of M
57
+ appears in each submatrix up to the (k-1)th
58
+ * the entries of wr and ws as well as step should be positive
59
+ integers
60
+ EXAMPLE: example prepMat; shows an example"
61
+ {
62
+ //----------------------------------------------------------------------
63
+ // Initialization and sanity checks
64
+ //----------------------------------------------------------------------
65
+ int i,j;
66
+ if ((size(wr)!=ncols(M)) || (size(ws)!=nrows(M)))
67
+ {
68
+ "size mismatch: wr should have " + string(ncols(M)) + "entries";
69
+ " ws should have " + string(nrows(M)) + "entries";
70
+ return("ERROR");
71
+ }
72
+ //----------------------------------------------------------------------
73
+ // Sorting the matrix to obtain nice structure
74
+ //----------------------------------------------------------------------
75
+ list sortwr=sort(wr);
76
+ list sortws=sort(ws);
77
+ if(sortwr[1]!=wr)
78
+ {
79
+ matrix N[nrows(M)][ncols(M)];
80
+ for(i=1;i<=size(wr);i++)
81
+ {
82
+ N[1..nrows(M),i]=M[1..nrows(M),sortwr[2][i]];
83
+ }
84
+ wr=sortwr[1];
85
+ M=N;
86
+ kill N;
87
+ }
88
+ if(sortws[1]!=ws)
89
+ {
90
+ matrix N[nrows(M)][ncols(M)];
91
+ for(i=1;i<=size(ws);i++)
92
+ {
93
+ N[i,1..ncols(M)]=M[sortws[2][i],1..ncols(M)];
94
+ }
95
+ ws=sortws[1];
96
+ M=N;
97
+ kill N;
98
+ }
99
+ //---------------------------------------------------------------------
100
+ // Forming the submatrices
101
+ //---------------------------------------------------------------------
102
+ list R,S;
103
+ i=1;
104
+ j=0;
105
+ while ((step*(i-1))<=wr[size(wr)])
106
+ {
107
+ while ((step*i)>wr[j+1])
108
+ {
109
+ j++;
110
+ if(j==size(wr)) break;
111
+ }
112
+ if(j!=0)
113
+ {
114
+ matrix N[nrows(M)][j]=M[1..nrows(M),1..j];
115
+ }
116
+ else
117
+ {
118
+ matrix N=matrix(0);
119
+ }
120
+ R[i]=N;
121
+ kill N;
122
+ i++;
123
+ if(j==size(wr)) break;
124
+ }
125
+ i=1;
126
+ j=0;
127
+ while ((step*i)<=ws[size(ws)])
128
+ {
129
+ while ((step*i)>ws[j+1])
130
+ {
131
+ j++;
132
+ if(j==size(ws)) break;
133
+ }
134
+ if(j==size(ws)) break;
135
+ if(j!=0)
136
+ {
137
+ matrix N[nrows(M)-j][ncols(M)]=M[j+1..nrows(M),1..ncols(M)];
138
+ S[i]=N;
139
+ kill N;
140
+ }
141
+ else
142
+ {
143
+ S[i]=M;
144
+ }
145
+ i++;
146
+ }
147
+ list ret=R,S;
148
+ return(ret);
149
+ }
150
+ example
151
+ { "EXAMPLE:"; echo=2;
152
+ ring r=0,(t(1..3)),dp;
153
+ matrix M[2][3]=0,t(1),3*t(2),0,0,t(1);
154
+ print(M);
155
+ intvec wr=1,3,5;
156
+ intvec ws=2,4;
157
+ int step=2;
158
+ prepMat(M,wr,ws,step);
159
+ }
160
+ /////////////////////////////////////////////////////////////////////////////
161
+ static
162
+ proc minorList (list matlist)
163
+ "USAGE: minorList(l);
164
+ where l is a list of matrices satisfying the condition that l[i]
165
+ is a submatrix of l[i+1]
166
+ RETURN: list of lists in which each entry of the returned list corresponds
167
+ to one of the matrices of the list l and is itself the list of
168
+ the minors (i.e. the 1st entry is the ideal generated by the
169
+ 1-minors of the matrix etc.)
170
+ EXAMPLE: example minorList(l); shows an example"
171
+ {
172
+ //---------------------------------------------------------------------------
173
+ // Initialization and sanity checks
174
+ //---------------------------------------------------------------------------
175
+ int maxminor;
176
+ int counter;
177
+ if(size(matlist)==0)
178
+ {
179
+ return(matlist);
180
+ }
181
+ for(int i=1;i<=size(matlist);i++)
182
+ {
183
+ if(((typeof(matlist[i]))!="matrix") && ((typeof(matlist[i]))!="intmat"))
184
+ {
185
+ "The list should only contain matrices or intmats";
186
+ return("ERROR");
187
+ }
188
+ }
189
+ list ret,templist;
190
+ int j;
191
+ int k=0;
192
+ ideal minid;
193
+ //---------------------------------------------------------------------------
194
+ // find the maximal size of the minors and compute all possible minors,
195
+ // and put a minimal system of generators into the list that will be returned
196
+ //---------------------------------------------------------------------------
197
+ for(i=1;i<=size(matlist);i++)
198
+ {
199
+ if (nrows(matlist[i]) < ncols(matlist[i]))
200
+ {
201
+ maxminor=nrows(matlist[i]);
202
+ }
203
+ else
204
+ {
205
+ maxminor=ncols(matlist[i]);
206
+ }
207
+ if (maxminor < 1)
208
+ {
209
+ "The matrices should be of size at least 1 x 1";
210
+ return("ERROR");
211
+ }
212
+ kill templist;
213
+ list templist;
214
+ for(j=1;j<=maxminor;j++)
215
+ {
216
+ minid=minor(matlist[i],j);
217
+ if(size(minid)>0)
218
+ {
219
+ if (defined(watchdog_interrupt))
220
+ {
221
+ kill watchdog_interrupt;
222
+ }
223
+ string watchstring="radical(ideal(";
224
+ for(counter=1;counter <size(minid);counter++)
225
+ {
226
+ watchstring=watchstring+"eval("+string(minid[counter])+"),";
227
+ }
228
+ watchstring=watchstring+"eval("+string(minid[size(minid)])+")))";
229
+ def watchtempid=watchdog(180,watchstring);
230
+ kill watchstring;
231
+ if ((defined(watchdog_interrupt)) || (typeof(watchtempid)=="string"))
232
+ {
233
+ templist[j-k]=mstd(minid)[2];
234
+ }
235
+ else
236
+ {
237
+ templist[j-k]=mstd(watchtempid)[2];
238
+ }
239
+ kill watchtempid;
240
+ }
241
+ else
242
+ {
243
+ k++;
244
+ }
245
+ }
246
+ k=0;
247
+ ret[i]=templist;
248
+ }
249
+ return(ret);
250
+ }
251
+ example
252
+ { "EXAMPLE:"; echo=2;
253
+ ring r=0,(t(1..3)),dp;
254
+ matrix M[2][3]=0,t(1),3*t(2),0,0,t(1);
255
+ intvec wr=1,3,5;
256
+ intvec ws=2,4;
257
+ int step=2;
258
+ list l=prepMat(M,wr,ws,step);
259
+ l[1];
260
+ minorList(l[1]);
261
+ }
262
+ /////////////////////////////////////////////////////////////////////////////
263
+ static
264
+ proc strataList(list Minors, list d, ideal V, int r, int nl)
265
+ "USAGE: strataList(Minors,d,V,r,nl);
266
+ Minors: list of minors as returned by minorRadList
267
+ d: list of polynomials
268
+ the open set that we are dealing with is D(d[1])
269
+ d[2..size(d)]=list of the factors of d
270
+ V: ideal
271
+ the closed set we are dealing with is V(V)
272
+ r: offset of the rank
273
+ nl: nesting level of the recursion
274
+ RETURN: list of lists, each entry of the big list corresponds to one
275
+ locally closed set and has the following entries:
276
+ 1) intvec giving the corresponding r- resp. s-vector
277
+ 2) ideal determining the closed set (cf. 3rd parameter V)
278
+ 3) list of polynomials determining the open set (cf. 2nd
279
+ parameter d)
280
+ NOTE: * sensible default values are
281
+ d[1]=1; (list of length 1)
282
+ V=ideal(0);
283
+ r=0;
284
+ nl=0;
285
+ these parameters are only important in the recursion
286
+ (if you know what you are doing, you are free to set d, V
287
+ and r, but setting nl to a value other than 0 may give
288
+ unexpected results)
289
+ * no sanity checks are performed, since the procedure is designed
290
+ for internal use only
291
+ * for use with the list of minors corresponding to the s-vectors,
292
+ the list of minors has to be specified from back to front
293
+ EXAMPLE: example strataList; shows an example"
294
+ {
295
+ //---------------------------------------------------------------------------
296
+ // * No sanity checks, since the procedure is static
297
+ // * First reduce everything using the ideal V of which we know
298
+ // that the desired stratum lies in its zero locus
299
+ // * Throw away zero ideals
300
+ //---------------------------------------------------------------------------
301
+ poly D=d[1];
302
+ int i,j,k,ll;
303
+ int isZero,isEmpty;
304
+ intvec rv=r;
305
+ intvec delvec;
306
+ list l=mstd(V);
307
+ ideal sV=l[1];
308
+ ideal mV=l[2];
309
+ list Ml;
310
+ for(i=1;i<=size(Minors);i++)
311
+ {
312
+ list templist;
313
+ for(j=1;j<=size(Minors[i]);j++)
314
+ {
315
+ templist[j]=reduce(Minors[i][j],sV);
316
+ }
317
+ Ml[i]=templist;
318
+ kill templist;
319
+ }
320
+ for(i=1;i<=size(Ml);i++)
321
+ {
322
+ list templist;
323
+ isZero=1;
324
+ for(j=size(Ml[i]);j>=1;j--)
325
+ {
326
+ if(size(Ml[i][j])!=0)
327
+ {
328
+ templist[j]=Ml[i][j];
329
+ isZero=0;
330
+ }
331
+ else
332
+ {
333
+ if(isZero==0)
334
+ {
335
+ return("ERROR");
336
+ }
337
+ }
338
+ }
339
+ if(size(templist)!=0)
340
+ {
341
+ Ml[i]=templist;
342
+ }
343
+ else
344
+ {
345
+ rv=rv,r;
346
+ delvec=delvec,i;
347
+ }
348
+ kill templist;
349
+ }
350
+ if(size(delvec)>=2)
351
+ {
352
+ intvec dummydel=delvec[2..size(delvec)];
353
+ Ml=deleteSublist(dummydel,Ml);
354
+ kill dummydel;
355
+ }
356
+ //---------------------------------------------------------------------------
357
+ // We do not need to go on if Ml disappeared
358
+ //---------------------------------------------------------------------------
359
+ if(size(Ml)==0)
360
+ {
361
+ list ret;
362
+ list templist;
363
+ templist[1]=rv;
364
+ templist[2]=mV;
365
+ templist[3]=d;
366
+ ret[1]=templist;
367
+ return(ret);
368
+ }
369
+ //---------------------------------------------------------------------------
370
+ // Check for minors which cannot vanish at all
371
+ //---------------------------------------------------------------------------
372
+ def rt=basering;
373
+ ring ru=0,(U),dp;
374
+ def rtu=rt+ru;
375
+ setring rtu;
376
+ def tempMl;
377
+ def ML;
378
+ def D;
379
+ setring rt;
380
+ int Mlrank=0;
381
+ setring rtu;
382
+ tempMl=imap(rt,Ml);
383
+ ML=tempMl[1];
384
+ D=imap(rt,D);
385
+ while(Mlrank<size(ML))
386
+ {
387
+ if(reduce(1,std(ML[Mlrank+1]+poly((U*D)-1)))==0)
388
+ {
389
+ Mlrank++;
390
+ }
391
+ else
392
+ {
393
+ break;
394
+ }
395
+ }
396
+ setring rt;
397
+ if(Mlrank!=0)
398
+ {
399
+ kill delvec;
400
+ intvec delvec;
401
+ isEmpty=1;
402
+ for(i=1;i<=size(Ml);i++)
403
+ {
404
+ if(Mlrank<size(Ml[i]))
405
+ {
406
+ list templi2=Ml[i];
407
+ list templist=templi2[Mlrank+1..size(Ml[i])];
408
+ kill templi2;
409
+ Ml[i]=templist;
410
+ isEmpty=0;
411
+ }
412
+ else
413
+ {
414
+ if(isEmpty==0)
415
+ {
416
+ return("ERROR");
417
+ }
418
+ rv=rv,(r+Mlrank);
419
+ delvec=delvec,i;
420
+ }
421
+ if(defined(templist)>1)
422
+ {
423
+ kill templist;
424
+ }
425
+ }
426
+ if(size(delvec)>=2)
427
+ {
428
+ intvec dummydel=delvec[2..size(delvec)];
429
+ Ml=deleteSublist(dummydel,Ml);
430
+ kill dummydel;
431
+ }
432
+ }
433
+ //---------------------------------------------------------------------------
434
+ // We do not need to go on if Ml disappeared
435
+ //---------------------------------------------------------------------------
436
+ if(size(Ml)==0)
437
+ {
438
+ list ret;
439
+ list templist;
440
+ templist[1]=intvec(rv);
441
+ templist[2]=mV;
442
+ templist[3]=d;
443
+ ret[1]=templist;
444
+ return(ret);
445
+ }
446
+ //---------------------------------------------------------------------------
447
+ // For each possible rank of Ml[1] and each element of Ml[1][rk]
448
+ // call this procedure again
449
+ //---------------------------------------------------------------------------
450
+ ideal Did;
451
+ ideal newV;
452
+ ideal tempid;
453
+ poly f;
454
+ list newd;
455
+ int newr;
456
+ list templist,retlist;
457
+ setring rtu;
458
+ ideal newV;
459
+ ideal Did;
460
+ def d;
461
+ poly f;
462
+ setring rt;
463
+ for(i=0;i<=size(Ml[1]);i++)
464
+ {
465
+ // find the polynomials which are not allowed to vanish simulateously
466
+ if((i<size(Ml[1]))&&(i!=0))
467
+ {
468
+ Did=mstd(reduce(Ml[1][i],std(Ml[1][i+1])))[2];
469
+ }
470
+ else
471
+ {
472
+ if(i==0)
473
+ {
474
+ Did=0;
475
+ }
476
+ else
477
+ {
478
+ Did=mstd(Ml[1][i])[2];
479
+ }
480
+ }
481
+ // initialize the rank
482
+ newr=r + Mlrank + i;
483
+ // find the new ideal V
484
+ for(j=0;j<=size(Did);j++)
485
+ {
486
+ if((i!=0)&&(j==0))
487
+ {
488
+ j++;
489
+ continue;
490
+ }
491
+ if(i<size(Ml[1]))
492
+ {
493
+ newV=mV,Ml[1][i+1];
494
+ }
495
+ else
496
+ {
497
+ newV=mV;
498
+ }
499
+ // check whether the intersection of V and the new D is empty
500
+ setring rtu;
501
+ newV=imap(rt,newV);
502
+ Did=imap(rt,Did);
503
+ D=imap(rt,D);
504
+ d=imap(rt,d);
505
+ if(j==0)
506
+ {
507
+ if(reduce(1,std(newV+poly(D*U-1)))==0)
508
+ {
509
+ j++;
510
+ setring rt;
511
+ continue;
512
+ }
513
+ }
514
+ if(i!=0)
515
+ {
516
+ if(reduce(1,std(newV+poly(Did[j]*D*U-1)))==0)
517
+ {
518
+ j++;
519
+ setring rt;
520
+ continue;
521
+ }
522
+ f=Did[j];
523
+ for(k=2;k<=size(d);k++)
524
+ {
525
+ while(((f/d[k])*d[k])==f)
526
+ {
527
+ f=f/d[k];
528
+ }
529
+ if(deg(f)==0) break;
530
+ }
531
+ }
532
+ setring rt;
533
+ f=imap(rtu,f);
534
+ // i==0 ==> f==0 ==> deg(f)<=0
535
+ // otherwise factorize f, if it does not take too long,
536
+ // and add its factors, resp. f itself, to the list d
537
+ if(deg(f)>0)
538
+ {
539
+ f=cleardenom(f);
540
+ if (defined(watchdog_interrupt))
541
+ {
542
+ kill watchdog_interrupt;
543
+ }
544
+ def watchtempid=watchdog(180,"factorize(eval(" + string(f) + "),1)");
545
+ if (defined(watchdog_interrupt))
546
+ {
547
+ newd=d;
548
+ newd[size(d)+1]=f;
549
+ newd[1]=d[1]*f;
550
+ }
551
+ else
552
+ {
553
+ tempid=watchtempid;
554
+ templist=tempid[1..size(tempid)];
555
+ newd=d+templist;
556
+ f=newd[1]*f;
557
+ tempid=simplify(ideal(newd[2..size(newd)]),14);
558
+ templist=tempid[1..size(tempid)];
559
+ kill newd;
560
+ list newd=f;
561
+ newd=newd+templist;
562
+ }
563
+ kill watchtempid;
564
+ }
565
+ else
566
+ {
567
+ newd=d;
568
+ }
569
+ // take the corresponding sublist of the list of minors
570
+ list Mltemp=delete(Ml,1);
571
+ for(k=1;k<=size(Mltemp);k++)
572
+ {
573
+ templist=Mltemp[k];
574
+ if(i<size(Mltemp[k]))
575
+ {
576
+ Mltemp[k]=list(templist[(i+1)..size(Mltemp[k])]);
577
+ }
578
+ else
579
+ {
580
+ kill templist;
581
+ list templist;
582
+ Mltemp[k]=templist;
583
+ }
584
+ }
585
+ // recursion
586
+ templist=strataList(Mltemp,newd,newV,newr,(nl+1));
587
+ kill Mltemp;
588
+ // build up the result list
589
+ if(size(templist)!=0)
590
+ {
591
+ k=1;
592
+ ll=1;
593
+ while(k<=size(templist))
594
+ {
595
+ if(size(templist[k])!=0)
596
+ {
597
+ retlist[size(retlist)+ll]=templist[k];
598
+ ll++;
599
+ }
600
+ k++;
601
+ }
602
+ }
603
+ }
604
+ }
605
+ kill delvec;
606
+ intvec delvec;
607
+ // clean up of the result list
608
+ for(i=1;i<=size(retlist);i++)
609
+ {
610
+ if(typeof(retlist[i])=="none")
611
+ {
612
+ delvec=delvec,i;
613
+ }
614
+ }
615
+ if(size(delvec)>=2)
616
+ {
617
+ intvec dummydel=delvec[2..size(delvec)];
618
+ retlist=deleteSublist(dummydel,retlist);
619
+ kill dummydel;
620
+ }
621
+ // set the intvec to the correct value
622
+ for(i=1;i<=size(retlist);i++)
623
+ {
624
+ if(nl!=0)
625
+ {
626
+ intvec tempiv=rv,retlist[i][1];
627
+ retlist[i][1]=tempiv;
628
+ kill tempiv;
629
+ }
630
+ else
631
+ {
632
+ if(size(rv)>1)
633
+ {
634
+ intvec tempiv=rv[2..size(rv)];
635
+ retlist[i][1]=tempiv;
636
+ kill tempiv;
637
+ }
638
+ }
639
+ }
640
+ return(retlist);
641
+ }
642
+ example
643
+ { "EXAMPLE:"; echo=2;
644
+ ring r=0,(t(1..3)),dp;
645
+ matrix M[2][3]=0,t(1),3*t(2),0,0,t(1);
646
+ intvec wr=1,3,5;
647
+ intvec ws=2,4;
648
+ int step=2;
649
+ list l=prepMat(M,wr,ws,step);
650
+ l[1];
651
+ list l2=minorRadList(l[1]);
652
+ list d=poly(1);
653
+ strataList(l2,d,ideal(0),0,0);
654
+ }
655
+ /////////////////////////////////////////////////////////////////////////////
656
+ static
657
+ proc cleanup(list stratlist)
658
+ "USAGE: cleanup(l);
659
+ where l is a list of lists in the format which is e.g. returned
660
+ by strataList
661
+ RETURN: list in which entries to the same integer vector have been
662
+ joined to one entry
663
+ the changed entries may be identified by checking whether its
664
+ 3rd entry is an empty list, then all entries starting from the
665
+ 4th one give the different possibilities for the open set
666
+ NOTE: use the procedure killdups first to kill entries which are
667
+ contained in other entries to the same integer vector
668
+ otherwise the result will be meaningless
669
+ EXAMPLE: example cleanup; shows an example"
670
+ {
671
+ int i,j;
672
+ list leer;
673
+ intvec delvec;
674
+ if(size(stratlist)==0)
675
+ {
676
+ return(stratlist);
677
+ }
678
+ list ivlist;
679
+ // sort the list using the intvec as criterion
680
+ for(i=1;i<=size(stratlist);i++)
681
+ {
682
+ ivlist[i]=stratlist[i][1];
683
+ }
684
+ list sortlist=sort(ivlist);
685
+ list retlist;
686
+ for(i=1;i<=size(stratlist);i++)
687
+ {
688
+ retlist[i]=stratlist[sortlist[2][i]];
689
+ }
690
+ i=1;
691
+ // find duplicate intvecs in the list
692
+ while(i<size(stratlist))
693
+ {
694
+ j=i+1;
695
+ while(retlist[i][1]==retlist[j][1])
696
+ {
697
+ retlist[i][3+j-i]=retlist[j][3];
698
+ delvec=delvec,j;
699
+ j++;
700
+ if(j>size(stratlist)) break;
701
+ }
702
+ if (j!=(i+1))
703
+ {
704
+ retlist[i][3+j-i]=retlist[i][3];
705
+ retlist[i][3]=leer;
706
+ i=j-1;
707
+ // retlist[..][3] is empty if and only if there was more than one entry to this intvec
708
+ }
709
+ if(j>size(stratlist)) break;
710
+ i++;
711
+ }
712
+ if(size(delvec)>=2)
713
+ {
714
+ intvec dummydel=delvec[2..size(delvec)];
715
+ retlist=deleteSublist(dummydel,retlist);
716
+ kill dummydel;
717
+ }
718
+ return(retlist);
719
+ }
720
+ example
721
+ { "EXAMPLE:"; echo=2;
722
+ ring r=0,(t(1),t(2)),dp;
723
+ intvec iv=1;
724
+ list plist=t(1),t(1);
725
+ list l1=iv,ideal(0),plist;
726
+ plist=t(2),t(2);
727
+ list l2=iv,ideal(0),plist;
728
+ list l=l1,l2;
729
+ cleanup(l);
730
+ }
731
+ /////////////////////////////////////////////////////////////////////////////
732
+ static
733
+ proc joinRS(list Rlist,list Slist)
734
+ "USAGE: joinRS(Rlist,Slist);
735
+ where Rlist and Slist are lists in the format returned by
736
+ strataList
737
+ RETURN: one list in the format returned by stratalist in which the
738
+ integer vector is the concatenation of the corresponding vectors
739
+ from Rlist and Slist
740
+ (of course only non-empty locally closed sets are returned)
741
+ NOTE: since Slist is a list returned by strataList corresponding to the
742
+ s-vector, it corresponds to the list of minors read from back to
743
+ front
744
+ EXAMPLE: no example available at the moment"
745
+ {
746
+ int j,k;
747
+ list retlist;
748
+ list templist,templi2;
749
+ intvec tempiv;
750
+ ideal tempid;
751
+ ideal dlist;
752
+ poly D;
753
+ def rt=basering;
754
+ ring ru=0,(U),dp;
755
+ def rtu=rt+ru;
756
+ setring rtu;
757
+ def Rlist=imap(rt,Rlist);
758
+ def Slist=imap(rt,Slist);
759
+ setring rt;
760
+ for(int i=1;i<=size(Rlist);i++)
761
+ {
762
+ for(j=1;j<=size(Slist);j++)
763
+ {
764
+ // skip empty sets
765
+ if(Rlist[i][1][size(Rlist[i][1])]<Slist[j][1][size(Slist[j][1])])
766
+ {
767
+ j++;
768
+ continue;
769
+ }
770
+ setring rtu;
771
+ if(reduce(1,std(Slist[j][2]+poly(((Rlist[i][3][1])*U)-1)))==0)
772
+ {
773
+ j++;
774
+ setring rt;
775
+ continue;
776
+ }
777
+ if(reduce(1,std(Rlist[i][2]+poly(((Slist[j][3][1])*U)-1)))==0)
778
+ {
779
+ j++;
780
+ setring rt;
781
+ continue;
782
+ }
783
+ setring rt;
784
+ // join the intvecs and the ideals V
785
+ tempiv=Rlist[i][1],Slist[j][1];
786
+ kill templist;
787
+ list templist;
788
+ templist[1]=tempiv;
789
+ if(size(Rlist[i][2]+Slist[j][2])>0)
790
+ {
791
+ templist[2]=mstd(Rlist[i][2]+Slist[j][2])[2];
792
+ }
793
+ else
794
+ {
795
+ templist[2]=ideal(0);
796
+ }
797
+ // test again whether we are talking about the empty set
798
+ setring rtu;
799
+ def templist=imap(rt,templist);
800
+ def tempid=templist[2];
801
+ if(reduce(1,std(tempid+poly(((Slist[j][3][1])*(Rlist[i][3][1])*U)-1)))==0)
802
+ {
803
+ kill templist;
804
+ kill tempid;
805
+ j++;
806
+ setring rt;
807
+ continue;
808
+ }
809
+ else
810
+ {
811
+ kill templist;
812
+ kill tempid;
813
+ setring rt;
814
+ }
815
+ // join the lists d
816
+ if(size(Rlist[i][3])>1)
817
+ {
818
+ templi2=Rlist[i][3];
819
+ dlist=templi2[2..size(templi2)];
820
+ }
821
+ else
822
+ {
823
+ kill dlist;
824
+ ideal dlist;
825
+ }
826
+ if(size(Slist[j][3])>1)
827
+ {
828
+ templi2=Slist[j][3];
829
+ tempid=templi2[2..size(templi2)];
830
+ }
831
+ else
832
+ {
833
+ kill tempid;
834
+ ideal tempid;
835
+ }
836
+ dlist=dlist+tempid;
837
+ dlist=simplify(dlist,14);
838
+ D=1;
839
+ for(k=1;k<=size(dlist);k++)
840
+ {
841
+ D=D*dlist[k];
842
+ }
843
+ if(size(dlist)>0)
844
+ {
845
+ templi2=D,dlist[1..size(dlist)];
846
+ }
847
+ else
848
+ {
849
+ templi2=list(1);
850
+ }
851
+ templist[3]=templi2;
852
+ retlist[size(retlist)+1]=templist;
853
+ }
854
+ }
855
+ return(retlist);
856
+ }
857
+ ////////////////////////////////////////////////////////////////////////////
858
+
859
+ proc stratify(matrix M, intvec wr, intvec ws,int step)
860
+ "USAGE: stratify(M,wr,ws,step);
861
+ where M is a matrix, wr is an intvec of size ncols(M),
862
+ ws an intvec of size nrows(M) and step is an integer
863
+ RETURN: list of lists, each entry of the big list corresponds to one
864
+ locally closed set and has the following entries:
865
+ 1) intvec giving the corresponding rs-vector
866
+ 2) ideal determining the closed set
867
+ 3) list d of polynomials determining the open set D(d[1])
868
+ empty list if there is more than one open set
869
+ 4-n) lists of polynomials determining open sets which all lead
870
+ to the same rs-vector
871
+ NOTE: * ring ordering should be global, i.e. the ring should be a
872
+ polynomial ring
873
+ * the entries of the matrix M are M_ij=delta_i(x_j),
874
+ * wr is used to determine what subset of the set of all dx_i is
875
+ generating AdF^l(A):
876
+ if (k-1)*step < wr[i] <= k*step, then dx_i is in the set of
877
+ generators of AdF^l(A) for all l>=k
878
+ * ws is used to determine what subset of the set of all delta_i
879
+ is generating Z_l(L):
880
+ if (k-1)*step <= ws[i] < k*step, then delta_i is in the set
881
+ of generators of Z_l(A) for l < k
882
+ * the entries of wr and ws as well as step should be positive
883
+ integers
884
+ * the filtrations have to be known, no sanity checks concerning
885
+ the filtrations are performed !!!
886
+ EXAMPLE: example stratify; shows an example"
887
+ {
888
+ //---------------------------------------------------------------------------
889
+ // Initialization and sanity checks
890
+ //---------------------------------------------------------------------------
891
+ int i,j;
892
+ list submat=prepMat(M,wr,ws,step);
893
+ if(defined(watchProgress))
894
+ {
895
+ "List of submatrices to consider:";
896
+ submat;
897
+ }
898
+ if(ncols(submat[1][size(submat[1])])==nrows(submat[1][size(submat[1])]))
899
+ {
900
+ int symm=1;
901
+ int nr=nrows(submat[1][size(submat[1])]);
902
+ for(i=1;i<=nr;i++)
903
+ {
904
+ for(j=1;j<=nr-i;j++)
905
+ {
906
+ if(submat[1][size(submat[1])][i,j]!=submat[1][size(submat[1])][nr-j+1,nr-i+1])
907
+ {
908
+ symm=0;
909
+ break;
910
+ }
911
+ }
912
+ if(symm==0) break;
913
+ }
914
+ }
915
+ if(defined(symm)>1)
916
+ {
917
+ if(symm==0)
918
+ {
919
+ kill symm;
920
+ }
921
+ }
922
+ list Rminors=minorList(submat[1]);
923
+ if(defined(watchProgress))
924
+ {
925
+ "minors corresponding to the r-vector:";
926
+ Rminors;
927
+ }
928
+ if(defined(symm)<2)
929
+ {
930
+ list Sminors=minorList(submat[2]);
931
+ if(defined(watchProgress))
932
+ {
933
+ "minors corresponding to the s-vector:";
934
+ Sminors;
935
+ }
936
+ }
937
+ if(size(Rminors[1])==0)
938
+ {
939
+ Rminors=delete(Rminors,1);
940
+ }
941
+ //---------------------------------------------------------------------------
942
+ // Start the recursion and cleanup afterwards
943
+ //---------------------------------------------------------------------------
944
+ list leer=poly(1);
945
+ list Rlist=strataList(Rminors,leer,0,0,0);
946
+ if(defined(watchProgress))
947
+ {
948
+ "list of strata corresponding to r-vectors:";
949
+ Rlist;
950
+ }
951
+ Rlist=killdups(Rlist);
952
+ if(defined(watchProgress))
953
+ {
954
+ "previous list after killing duplicate entries:";
955
+ Rminors;
956
+ }
957
+ if(defined(symm)<2)
958
+ {
959
+ // Sminors have the smallest entry as the last one
960
+ // In order to use the same routines as for the Rminors
961
+ // we handle the s-vector in inverse order
962
+ list Stemp;
963
+ for(i=1;i<=size(Sminors);i++)
964
+ {
965
+ Stemp[size(Sminors)-i+1]=Sminors[i];
966
+ }
967
+ list Slist=strataList(Stemp,leer,0,0,0);
968
+ if(defined(watchProgress))
969
+ {
970
+ "list of strata corresponding to s-vectors:";
971
+ Slist;
972
+ }
973
+ //---------------------------------------------------------------------------
974
+ // Join the Rlist and the Slist to obtain the stratification
975
+ //---------------------------------------------------------------------------
976
+ Slist=killdups(Slist);
977
+ if(defined(watchProgress))
978
+ {
979
+ "previous list after killing duplicate entries:";
980
+ Slist;
981
+ }
982
+ list ret=joinRS(Rlist,Slist);
983
+ if(defined(watchProgress))
984
+ {
985
+ "list of strata corresponding to r- and s-vectors:";
986
+ ret;
987
+ }
988
+ ret=killdups(ret);
989
+ if(defined(watchProgress))
990
+ {
991
+ "previous list after killing duplicate entries:";
992
+ ret;
993
+ }
994
+ ret=cleanup(ret);
995
+ }
996
+ else
997
+ {
998
+ list ret=cleanup(Rlist);
999
+ }
1000
+ return(ret);
1001
+ }
1002
+ example
1003
+ { "EXAMPLE:"; echo=2;
1004
+ ring r=0,(t(1..3)),dp;
1005
+ matrix M[2][3]=0,t(1),3*t(2),0,0,t(1);
1006
+ intvec wr=1,3,5;
1007
+ intvec ws=2,4;
1008
+ int step=2;
1009
+ stratify(M,wr,ws,step);
1010
+ }
1011
+ /////////////////////////////////////////////////////////////////////////////
1012
+ static
1013
+ proc killdups(list l)
1014
+ "USAGE: killdups(l);
1015
+ where l is a list in the form returned by strataList
1016
+ RETURN: list which is obtained from the previous list by leaving out
1017
+ entries which have the same intvec as another entry in which
1018
+ the locally closed set is contained
1019
+ EXAMPLE: no example available at the moment"
1020
+ {
1021
+ int i=1;
1022
+ int j,k,skip;
1023
+ while(i<size(l))
1024
+ {
1025
+ intvec delvec;
1026
+ for(j=i+1;j<=size(l);j++)
1027
+ {
1028
+ // we do not need to check the V ideals, since the intvecs coincide
1029
+ if(l[i][1]==l[j][1])
1030
+ {
1031
+ if((l[i][3][1]/l[j][3][1])*l[j][3][1]==l[i][3][1])
1032
+ {
1033
+
1034
+ delvec=delvec,i;
1035
+ break;
1036
+ }
1037
+ else
1038
+ {
1039
+ if((l[j][3][1]/l[i][3][1])*l[i][3][1]==l[j][3][1])
1040
+ {
1041
+ delvec=delvec,j;
1042
+ j++;
1043
+ continue;
1044
+ }
1045
+ }
1046
+ }
1047
+ }
1048
+ if(size(delvec)>=2)
1049
+ {
1050
+ delvec=sort(delvec)[1];
1051
+ intvec dummydel=delvec[2..size(delvec)];
1052
+ l=deleteSublist(dummydel,l);
1053
+ kill dummydel;
1054
+ }
1055
+ kill delvec;
1056
+ i++;
1057
+ }
1058
+ list ret=l;
1059
+ return(ret);
1060
+ }
1061
+ /////////////////////////////////////////////////////////////////////////////
1062
+
1063
+
1064
+
1065
+
1066
+
1067
+
1068
+
1069
+
1070
+