passagemath-singular 10.6.31rc3__cp314-cp314-musllinux_1_2_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 (493) hide show
  1. PySingular.cpython-314-x86_64-linux-musl.so +0 -0
  2. passagemath_singular-10.6.31rc3.dist-info/METADATA +183 -0
  3. passagemath_singular-10.6.31rc3.dist-info/RECORD +493 -0
  4. passagemath_singular-10.6.31rc3.dist-info/WHEEL +5 -0
  5. passagemath_singular-10.6.31rc3.dist-info/top_level.txt +3 -0
  6. passagemath_singular.libs/libSingular-4-67059f19.4.1.so +0 -0
  7. passagemath_singular.libs/libcddgmp-30166d29.so.0.1.3 +0 -0
  8. passagemath_singular.libs/libfactory-4-9d37bcf4.4.1.so +0 -0
  9. passagemath_singular.libs/libflint-fd6f12fc.so.21.0.0 +0 -0
  10. passagemath_singular.libs/libgcc_s-0cd532bd.so.1 +0 -0
  11. passagemath_singular.libs/libgf2x-9e30c3e3.so.3.0.0 +0 -0
  12. passagemath_singular.libs/libgfortran-2c33b284.so.5.0.0 +0 -0
  13. passagemath_singular.libs/libgmp-0e7fc84e.so.10.5.0 +0 -0
  14. passagemath_singular.libs/libgsl-42cda06f.so.28.0.0 +0 -0
  15. passagemath_singular.libs/libmpfr-aaecbfc0.so.6.2.1 +0 -0
  16. passagemath_singular.libs/libncursesw-9c9e32c3.so.6.5 +0 -0
  17. passagemath_singular.libs/libntl-26885ca2.so.44.0.1 +0 -0
  18. passagemath_singular.libs/libomalloc-0-e9ff96db.9.6.so +0 -0
  19. passagemath_singular.libs/libopenblasp-r0-905cb27d.3.29.so +0 -0
  20. passagemath_singular.libs/libpolys-4-8bcf8e7d.4.1.so +0 -0
  21. passagemath_singular.libs/libquadmath-bb76a5fc.so.0.0.0 +0 -0
  22. passagemath_singular.libs/libreadline-06542304.so.8.2 +0 -0
  23. passagemath_singular.libs/libsingular_resources-4-73bf7623.4.1.so +0 -0
  24. passagemath_singular.libs/libstdc++-5d72f927.so.6.0.33 +0 -0
  25. sage/algebras/all__sagemath_singular.py +3 -0
  26. sage/algebras/fusion_rings/all.py +19 -0
  27. sage/algebras/fusion_rings/f_matrix.py +2448 -0
  28. sage/algebras/fusion_rings/fast_parallel_fmats_methods.cpython-314-x86_64-linux-musl.so +0 -0
  29. sage/algebras/fusion_rings/fast_parallel_fmats_methods.pxd +5 -0
  30. sage/algebras/fusion_rings/fast_parallel_fmats_methods.pyx +538 -0
  31. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.cpython-314-x86_64-linux-musl.so +0 -0
  32. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pxd +3 -0
  33. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pyx +331 -0
  34. sage/algebras/fusion_rings/fusion_double.py +899 -0
  35. sage/algebras/fusion_rings/fusion_ring.py +1580 -0
  36. sage/algebras/fusion_rings/poly_tup_engine.cpython-314-x86_64-linux-musl.so +0 -0
  37. sage/algebras/fusion_rings/poly_tup_engine.pxd +24 -0
  38. sage/algebras/fusion_rings/poly_tup_engine.pyx +579 -0
  39. sage/algebras/fusion_rings/shm_managers.cpython-314-x86_64-linux-musl.so +0 -0
  40. sage/algebras/fusion_rings/shm_managers.pxd +24 -0
  41. sage/algebras/fusion_rings/shm_managers.pyx +780 -0
  42. sage/algebras/letterplace/all.py +1 -0
  43. sage/algebras/letterplace/free_algebra_element_letterplace.cpython-314-x86_64-linux-musl.so +0 -0
  44. sage/algebras/letterplace/free_algebra_element_letterplace.pxd +18 -0
  45. sage/algebras/letterplace/free_algebra_element_letterplace.pyx +755 -0
  46. sage/algebras/letterplace/free_algebra_letterplace.cpython-314-x86_64-linux-musl.so +0 -0
  47. sage/algebras/letterplace/free_algebra_letterplace.pxd +35 -0
  48. sage/algebras/letterplace/free_algebra_letterplace.pyx +914 -0
  49. sage/algebras/letterplace/letterplace_ideal.cpython-314-x86_64-linux-musl.so +0 -0
  50. sage/algebras/letterplace/letterplace_ideal.pyx +408 -0
  51. sage/algebras/quatalg/all.py +2 -0
  52. sage/algebras/quatalg/quaternion_algebra.py +4778 -0
  53. sage/algebras/quatalg/quaternion_algebra_cython.cpython-314-x86_64-linux-musl.so +0 -0
  54. sage/algebras/quatalg/quaternion_algebra_cython.pyx +261 -0
  55. sage/algebras/quatalg/quaternion_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  56. sage/algebras/quatalg/quaternion_algebra_element.pxd +29 -0
  57. sage/algebras/quatalg/quaternion_algebra_element.pyx +2176 -0
  58. sage/all__sagemath_singular.py +11 -0
  59. sage/ext_data/all__sagemath_singular.py +1 -0
  60. sage/ext_data/singular/function_field/core.lib +98 -0
  61. sage/interfaces/all__sagemath_singular.py +1 -0
  62. sage/interfaces/singular.py +2835 -0
  63. sage/libs/all__sagemath_singular.py +1 -0
  64. sage/libs/singular/__init__.py +1 -0
  65. sage/libs/singular/decl.pxd +1168 -0
  66. sage/libs/singular/function.cpython-314-x86_64-linux-musl.so +0 -0
  67. sage/libs/singular/function.pxd +87 -0
  68. sage/libs/singular/function.pyx +1901 -0
  69. sage/libs/singular/function_factory.py +61 -0
  70. sage/libs/singular/groebner_strategy.cpython-314-x86_64-linux-musl.so +0 -0
  71. sage/libs/singular/groebner_strategy.pxd +22 -0
  72. sage/libs/singular/groebner_strategy.pyx +582 -0
  73. sage/libs/singular/option.cpython-314-x86_64-linux-musl.so +0 -0
  74. sage/libs/singular/option.pyx +671 -0
  75. sage/libs/singular/polynomial.cpython-314-x86_64-linux-musl.so +0 -0
  76. sage/libs/singular/polynomial.pxd +39 -0
  77. sage/libs/singular/polynomial.pyx +661 -0
  78. sage/libs/singular/ring.cpython-314-x86_64-linux-musl.so +0 -0
  79. sage/libs/singular/ring.pxd +58 -0
  80. sage/libs/singular/ring.pyx +893 -0
  81. sage/libs/singular/singular.cpython-314-x86_64-linux-musl.so +0 -0
  82. sage/libs/singular/singular.pxd +72 -0
  83. sage/libs/singular/singular.pyx +1944 -0
  84. sage/libs/singular/standard_options.py +145 -0
  85. sage/matrix/all__sagemath_singular.py +1 -0
  86. sage/matrix/matrix_mpolynomial_dense.cpython-314-x86_64-linux-musl.so +0 -0
  87. sage/matrix/matrix_mpolynomial_dense.pxd +7 -0
  88. sage/matrix/matrix_mpolynomial_dense.pyx +615 -0
  89. sage/rings/all__sagemath_singular.py +1 -0
  90. sage/rings/function_field/all__sagemath_singular.py +1 -0
  91. sage/rings/function_field/derivations_polymod.py +911 -0
  92. sage/rings/function_field/element_polymod.cpython-314-x86_64-linux-musl.so +0 -0
  93. sage/rings/function_field/element_polymod.pyx +406 -0
  94. sage/rings/function_field/function_field_polymod.py +2611 -0
  95. sage/rings/function_field/ideal_polymod.py +1775 -0
  96. sage/rings/function_field/order_polymod.py +1475 -0
  97. sage/rings/function_field/place_polymod.py +681 -0
  98. sage/rings/polynomial/all__sagemath_singular.py +1 -0
  99. sage/rings/polynomial/multi_polynomial_ideal_libsingular.cpython-314-x86_64-linux-musl.so +0 -0
  100. sage/rings/polynomial/multi_polynomial_ideal_libsingular.pxd +5 -0
  101. sage/rings/polynomial/multi_polynomial_ideal_libsingular.pyx +339 -0
  102. sage/rings/polynomial/multi_polynomial_libsingular.cpython-314-x86_64-linux-musl.so +0 -0
  103. sage/rings/polynomial/multi_polynomial_libsingular.pxd +30 -0
  104. sage/rings/polynomial/multi_polynomial_libsingular.pyx +6277 -0
  105. sage/rings/polynomial/plural.cpython-314-x86_64-linux-musl.so +0 -0
  106. sage/rings/polynomial/plural.pxd +48 -0
  107. sage/rings/polynomial/plural.pyx +3171 -0
  108. sage/symbolic/all__sagemath_singular.py +1 -0
  109. sage/symbolic/comparison_impl.pxi +428 -0
  110. sage/symbolic/constants_c_impl.pxi +178 -0
  111. sage/symbolic/expression.cpython-314-x86_64-linux-musl.so +0 -0
  112. sage/symbolic/expression.pxd +7 -0
  113. sage/symbolic/expression.pyx +14200 -0
  114. sage/symbolic/getitem_impl.pxi +202 -0
  115. sage/symbolic/pynac.pxi +572 -0
  116. sage/symbolic/pynac_constant_impl.pxi +133 -0
  117. sage/symbolic/pynac_function_impl.pxi +206 -0
  118. sage/symbolic/pynac_impl.pxi +2576 -0
  119. sage/symbolic/pynac_wrap.h +124 -0
  120. sage/symbolic/series_impl.pxi +272 -0
  121. sage/symbolic/substitution_map_impl.pxi +94 -0
  122. sage_wheels/bin/ESingular +0 -0
  123. sage_wheels/bin/Singular +0 -0
  124. sage_wheels/bin/TSingular +0 -0
  125. sage_wheels/lib/singular/MOD/cohomo.la +41 -0
  126. sage_wheels/lib/singular/MOD/cohomo.so +0 -0
  127. sage_wheels/lib/singular/MOD/customstd.la +41 -0
  128. sage_wheels/lib/singular/MOD/customstd.so +0 -0
  129. sage_wheels/lib/singular/MOD/freealgebra.la +41 -0
  130. sage_wheels/lib/singular/MOD/freealgebra.so +0 -0
  131. sage_wheels/lib/singular/MOD/gfanlib.la +41 -0
  132. sage_wheels/lib/singular/MOD/gfanlib.so +0 -0
  133. sage_wheels/lib/singular/MOD/gitfan.la +41 -0
  134. sage_wheels/lib/singular/MOD/gitfan.so +0 -0
  135. sage_wheels/lib/singular/MOD/interval.la +41 -0
  136. sage_wheels/lib/singular/MOD/interval.so +0 -0
  137. sage_wheels/lib/singular/MOD/loctriv.la +41 -0
  138. sage_wheels/lib/singular/MOD/loctriv.so +0 -0
  139. sage_wheels/lib/singular/MOD/machinelearning.la +41 -0
  140. sage_wheels/lib/singular/MOD/machinelearning.so +0 -0
  141. sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.la +41 -0
  142. sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.so +0 -0
  143. sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.la +41 -0
  144. sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.so +0 -0
  145. sage_wheels/lib/singular/MOD/p_Procs_FieldQ.la +41 -0
  146. sage_wheels/lib/singular/MOD/p_Procs_FieldQ.so +0 -0
  147. sage_wheels/lib/singular/MOD/p_Procs_FieldZp.la +41 -0
  148. sage_wheels/lib/singular/MOD/p_Procs_FieldZp.so +0 -0
  149. sage_wheels/lib/singular/MOD/partialgb.la +41 -0
  150. sage_wheels/lib/singular/MOD/partialgb.so +0 -0
  151. sage_wheels/lib/singular/MOD/pyobject.la +41 -0
  152. sage_wheels/lib/singular/MOD/pyobject.so +0 -0
  153. sage_wheels/lib/singular/MOD/singmathic.la +41 -0
  154. sage_wheels/lib/singular/MOD/singmathic.so +0 -0
  155. sage_wheels/lib/singular/MOD/sispasm.la +41 -0
  156. sage_wheels/lib/singular/MOD/sispasm.so +0 -0
  157. sage_wheels/lib/singular/MOD/subsets.la +41 -0
  158. sage_wheels/lib/singular/MOD/subsets.so +0 -0
  159. sage_wheels/lib/singular/MOD/systhreads.la +41 -0
  160. sage_wheels/lib/singular/MOD/systhreads.so +0 -0
  161. sage_wheels/lib/singular/MOD/syzextra.la +41 -0
  162. sage_wheels/lib/singular/MOD/syzextra.so +0 -0
  163. sage_wheels/libexec/singular/MOD/change_cost +0 -0
  164. sage_wheels/libexec/singular/MOD/singularsurf +11 -0
  165. sage_wheels/libexec/singular/MOD/singularsurf_jupyter +9 -0
  166. sage_wheels/libexec/singular/MOD/singularsurf_win +10 -0
  167. sage_wheels/libexec/singular/MOD/solve_IP +0 -0
  168. sage_wheels/libexec/singular/MOD/surfex +16 -0
  169. sage_wheels/libexec/singular/MOD/toric_ideal +0 -0
  170. sage_wheels/share/factory/gftables/10201 +342 -0
  171. sage_wheels/share/factory/gftables/1024 +37 -0
  172. sage_wheels/share/factory/gftables/10609 +356 -0
  173. sage_wheels/share/factory/gftables/11449 +384 -0
  174. sage_wheels/share/factory/gftables/11881 +398 -0
  175. sage_wheels/share/factory/gftables/121 +6 -0
  176. sage_wheels/share/factory/gftables/12167 +408 -0
  177. sage_wheels/share/factory/gftables/125 +7 -0
  178. sage_wheels/share/factory/gftables/12769 +428 -0
  179. sage_wheels/share/factory/gftables/128 +7 -0
  180. sage_wheels/share/factory/gftables/1331 +47 -0
  181. sage_wheels/share/factory/gftables/1369 +48 -0
  182. sage_wheels/share/factory/gftables/14641 +490 -0
  183. sage_wheels/share/factory/gftables/15625 +523 -0
  184. sage_wheels/share/factory/gftables/16 +3 -0
  185. sage_wheels/share/factory/gftables/16129 +540 -0
  186. sage_wheels/share/factory/gftables/16384 +549 -0
  187. sage_wheels/share/factory/gftables/16807 +563 -0
  188. sage_wheels/share/factory/gftables/1681 +58 -0
  189. sage_wheels/share/factory/gftables/169 +8 -0
  190. sage_wheels/share/factory/gftables/17161 +574 -0
  191. sage_wheels/share/factory/gftables/1849 +64 -0
  192. sage_wheels/share/factory/gftables/18769 +628 -0
  193. sage_wheels/share/factory/gftables/19321 +646 -0
  194. sage_wheels/share/factory/gftables/19683 +659 -0
  195. sage_wheels/share/factory/gftables/2048 +71 -0
  196. sage_wheels/share/factory/gftables/2187 +75 -0
  197. sage_wheels/share/factory/gftables/2197 +76 -0
  198. sage_wheels/share/factory/gftables/2209 +76 -0
  199. sage_wheels/share/factory/gftables/22201 +742 -0
  200. sage_wheels/share/factory/gftables/22801 +762 -0
  201. sage_wheels/share/factory/gftables/2401 +82 -0
  202. sage_wheels/share/factory/gftables/243 +11 -0
  203. sage_wheels/share/factory/gftables/24389 +815 -0
  204. sage_wheels/share/factory/gftables/24649 +824 -0
  205. sage_wheels/share/factory/gftables/25 +3 -0
  206. sage_wheels/share/factory/gftables/256 +11 -0
  207. sage_wheels/share/factory/gftables/26569 +888 -0
  208. sage_wheels/share/factory/gftables/27 +3 -0
  209. sage_wheels/share/factory/gftables/27889 +932 -0
  210. sage_wheels/share/factory/gftables/2809 +96 -0
  211. sage_wheels/share/factory/gftables/28561 +954 -0
  212. sage_wheels/share/factory/gftables/289 +12 -0
  213. sage_wheels/share/factory/gftables/29791 +995 -0
  214. sage_wheels/share/factory/gftables/29929 +1000 -0
  215. sage_wheels/share/factory/gftables/3125 +107 -0
  216. sage_wheels/share/factory/gftables/32 +4 -0
  217. sage_wheels/share/factory/gftables/32041 +1070 -0
  218. sage_wheels/share/factory/gftables/32761 +1094 -0
  219. sage_wheels/share/factory/gftables/32768 +1095 -0
  220. sage_wheels/share/factory/gftables/343 +14 -0
  221. sage_wheels/share/factory/gftables/3481 +118 -0
  222. sage_wheels/share/factory/gftables/361 +14 -0
  223. sage_wheels/share/factory/gftables/36481 +1218 -0
  224. sage_wheels/share/factory/gftables/3721 +126 -0
  225. sage_wheels/share/factory/gftables/37249 +1244 -0
  226. sage_wheels/share/factory/gftables/38809 +1296 -0
  227. sage_wheels/share/factory/gftables/39601 +1322 -0
  228. sage_wheels/share/factory/gftables/4 +3 -0
  229. sage_wheels/share/factory/gftables/4096 +139 -0
  230. sage_wheels/share/factory/gftables/44521 +1486 -0
  231. sage_wheels/share/factory/gftables/4489 +152 -0
  232. sage_wheels/share/factory/gftables/49 +4 -0
  233. sage_wheels/share/factory/gftables/4913 +166 -0
  234. sage_wheels/share/factory/gftables/49729 +1660 -0
  235. sage_wheels/share/factory/gftables/5041 +170 -0
  236. sage_wheels/share/factory/gftables/50653 +1691 -0
  237. sage_wheels/share/factory/gftables/512 +20 -0
  238. sage_wheels/share/factory/gftables/51529 +1720 -0
  239. sage_wheels/share/factory/gftables/52441 +1750 -0
  240. sage_wheels/share/factory/gftables/529 +20 -0
  241. sage_wheels/share/factory/gftables/5329 +180 -0
  242. sage_wheels/share/factory/gftables/54289 +1812 -0
  243. sage_wheels/share/factory/gftables/57121 +1906 -0
  244. sage_wheels/share/factory/gftables/58081 +1938 -0
  245. sage_wheels/share/factory/gftables/59049 +1971 -0
  246. sage_wheels/share/factory/gftables/6241 +210 -0
  247. sage_wheels/share/factory/gftables/625 +23 -0
  248. sage_wheels/share/factory/gftables/63001 +2102 -0
  249. sage_wheels/share/factory/gftables/64 +5 -0
  250. sage_wheels/share/factory/gftables/6561 +221 -0
  251. sage_wheels/share/factory/gftables/6859 +231 -0
  252. sage_wheels/share/factory/gftables/6889 +232 -0
  253. sage_wheels/share/factory/gftables/729 +27 -0
  254. sage_wheels/share/factory/gftables/7921 +266 -0
  255. sage_wheels/share/factory/gftables/8 +3 -0
  256. sage_wheels/share/factory/gftables/81 +5 -0
  257. sage_wheels/share/factory/gftables/8192 +276 -0
  258. sage_wheels/share/factory/gftables/841 +30 -0
  259. sage_wheels/share/factory/gftables/9 +3 -0
  260. sage_wheels/share/factory/gftables/9409 +316 -0
  261. sage_wheels/share/factory/gftables/961 +34 -0
  262. sage_wheels/share/info/singular.info +191898 -0
  263. sage_wheels/share/singular/LIB/GND.lib +1359 -0
  264. sage_wheels/share/singular/LIB/JMBTest.lib +976 -0
  265. sage_wheels/share/singular/LIB/JMSConst.lib +1363 -0
  266. sage_wheels/share/singular/LIB/KVequiv.lib +699 -0
  267. sage_wheels/share/singular/LIB/SingularityDBM.lib +491 -0
  268. sage_wheels/share/singular/LIB/VecField.lib +1542 -0
  269. sage_wheels/share/singular/LIB/absfact.lib +959 -0
  270. sage_wheels/share/singular/LIB/ainvar.lib +730 -0
  271. sage_wheels/share/singular/LIB/aksaka.lib +419 -0
  272. sage_wheels/share/singular/LIB/alexpoly.lib +2542 -0
  273. sage_wheels/share/singular/LIB/algebra.lib +1193 -0
  274. sage_wheels/share/singular/LIB/all.lib +136 -0
  275. sage_wheels/share/singular/LIB/arcpoint.lib +514 -0
  276. sage_wheels/share/singular/LIB/arnold.lib +4553 -0
  277. sage_wheels/share/singular/LIB/arnoldclassify.lib +2058 -0
  278. sage_wheels/share/singular/LIB/arr.lib +3486 -0
  279. sage_wheels/share/singular/LIB/assprimeszerodim.lib +755 -0
  280. sage_wheels/share/singular/LIB/autgradalg.lib +3361 -0
  281. sage_wheels/share/singular/LIB/bfun.lib +1964 -0
  282. sage_wheels/share/singular/LIB/bimodules.lib +774 -0
  283. sage_wheels/share/singular/LIB/brillnoether.lib +226 -0
  284. sage_wheels/share/singular/LIB/brnoeth.lib +5017 -0
  285. sage_wheels/share/singular/LIB/central.lib +2169 -0
  286. sage_wheels/share/singular/LIB/chern.lib +4162 -0
  287. sage_wheels/share/singular/LIB/cimonom.lib +571 -0
  288. sage_wheels/share/singular/LIB/cisimplicial.lib +1835 -0
  289. sage_wheels/share/singular/LIB/classify.lib +3239 -0
  290. sage_wheels/share/singular/LIB/classify2.lib +1462 -0
  291. sage_wheels/share/singular/LIB/classifyMapGerms.lib +1515 -0
  292. sage_wheels/share/singular/LIB/classify_aeq.lib +3253 -0
  293. sage_wheels/share/singular/LIB/classifyceq.lib +2092 -0
  294. sage_wheels/share/singular/LIB/classifyci.lib +1133 -0
  295. sage_wheels/share/singular/LIB/combinat.lib +91 -0
  296. sage_wheels/share/singular/LIB/compregb.lib +276 -0
  297. sage_wheels/share/singular/LIB/control.lib +1636 -0
  298. sage_wheels/share/singular/LIB/crypto.lib +3795 -0
  299. sage_wheels/share/singular/LIB/curveInv.lib +667 -0
  300. sage_wheels/share/singular/LIB/curvepar.lib +1817 -0
  301. sage_wheels/share/singular/LIB/customstd.lib +100 -0
  302. sage_wheels/share/singular/LIB/deRham.lib +5979 -0
  303. sage_wheels/share/singular/LIB/decodegb.lib +2134 -0
  304. sage_wheels/share/singular/LIB/decomp.lib +1655 -0
  305. sage_wheels/share/singular/LIB/deflation.lib +872 -0
  306. sage_wheels/share/singular/LIB/deform.lib +925 -0
  307. sage_wheels/share/singular/LIB/difform.lib +3055 -0
  308. sage_wheels/share/singular/LIB/divisors.lib +750 -0
  309. sage_wheels/share/singular/LIB/dmod.lib +5817 -0
  310. sage_wheels/share/singular/LIB/dmodapp.lib +3269 -0
  311. sage_wheels/share/singular/LIB/dmodideal.lib +1211 -0
  312. sage_wheels/share/singular/LIB/dmodloc.lib +2645 -0
  313. sage_wheels/share/singular/LIB/dmodvar.lib +818 -0
  314. sage_wheels/share/singular/LIB/dummy.lib +17 -0
  315. sage_wheels/share/singular/LIB/elim.lib +1009 -0
  316. sage_wheels/share/singular/LIB/ellipticcovers.lib +548 -0
  317. sage_wheels/share/singular/LIB/enumpoints.lib +146 -0
  318. sage_wheels/share/singular/LIB/equising.lib +2127 -0
  319. sage_wheels/share/singular/LIB/ffmodstd.lib +2384 -0
  320. sage_wheels/share/singular/LIB/ffsolve.lib +1289 -0
  321. sage_wheels/share/singular/LIB/findifs.lib +778 -0
  322. sage_wheels/share/singular/LIB/finitediff.lib +1768 -0
  323. sage_wheels/share/singular/LIB/finvar.lib +7989 -0
  324. sage_wheels/share/singular/LIB/fpadim.lib +2429 -0
  325. sage_wheels/share/singular/LIB/fpalgebras.lib +1666 -0
  326. sage_wheels/share/singular/LIB/fpaprops.lib +1462 -0
  327. sage_wheels/share/singular/LIB/freegb.lib +3853 -0
  328. sage_wheels/share/singular/LIB/general.lib +1350 -0
  329. sage_wheels/share/singular/LIB/gfan.lib +1768 -0
  330. sage_wheels/share/singular/LIB/gitfan.lib +3130 -0
  331. sage_wheels/share/singular/LIB/gkdim.lib +99 -0
  332. sage_wheels/share/singular/LIB/gmspoly.lib +589 -0
  333. sage_wheels/share/singular/LIB/gmssing.lib +1739 -0
  334. sage_wheels/share/singular/LIB/goettsche.lib +909 -0
  335. sage_wheels/share/singular/LIB/graal.lib +1366 -0
  336. sage_wheels/share/singular/LIB/gradedModules.lib +2541 -0
  337. sage_wheels/share/singular/LIB/graphics.lib +360 -0
  338. sage_wheels/share/singular/LIB/grobcov.lib +7706 -0
  339. sage_wheels/share/singular/LIB/groups.lib +1123 -0
  340. sage_wheels/share/singular/LIB/grwalk.lib +507 -0
  341. sage_wheels/share/singular/LIB/hdepth.lib +194 -0
  342. sage_wheels/share/singular/LIB/help.cnf +57 -0
  343. sage_wheels/share/singular/LIB/hess.lib +1946 -0
  344. sage_wheels/share/singular/LIB/hnoether.lib +4292 -0
  345. sage_wheels/share/singular/LIB/hodge.lib +400 -0
  346. sage_wheels/share/singular/LIB/homolog.lib +1965 -0
  347. sage_wheels/share/singular/LIB/hyperel.lib +975 -0
  348. sage_wheels/share/singular/LIB/inout.lib +679 -0
  349. sage_wheels/share/singular/LIB/integralbasis.lib +6224 -0
  350. sage_wheels/share/singular/LIB/interval.lib +1418 -0
  351. sage_wheels/share/singular/LIB/intprog.lib +778 -0
  352. sage_wheels/share/singular/LIB/invar.lib +443 -0
  353. sage_wheels/share/singular/LIB/involut.lib +980 -0
  354. sage_wheels/share/singular/LIB/jacobson.lib +1215 -0
  355. sage_wheels/share/singular/LIB/kskernel.lib +534 -0
  356. sage_wheels/share/singular/LIB/latex.lib +3146 -0
  357. sage_wheels/share/singular/LIB/lejeune.lib +651 -0
  358. sage_wheels/share/singular/LIB/linalg.lib +2040 -0
  359. sage_wheels/share/singular/LIB/locnormal.lib +212 -0
  360. sage_wheels/share/singular/LIB/lrcalc.lib +526 -0
  361. sage_wheels/share/singular/LIB/makedbm.lib +294 -0
  362. sage_wheels/share/singular/LIB/mathml.lib +813 -0
  363. sage_wheels/share/singular/LIB/matrix.lib +1372 -0
  364. sage_wheels/share/singular/LIB/maxlike.lib +1132 -0
  365. sage_wheels/share/singular/LIB/methods.lib +212 -0
  366. sage_wheels/share/singular/LIB/moddiq.lib +322 -0
  367. sage_wheels/share/singular/LIB/modfinduni.lib +181 -0
  368. sage_wheels/share/singular/LIB/modnormal.lib +218 -0
  369. sage_wheels/share/singular/LIB/modprimdec.lib +1278 -0
  370. sage_wheels/share/singular/LIB/modquotient.lib +269 -0
  371. sage_wheels/share/singular/LIB/modstd.lib +1024 -0
  372. sage_wheels/share/singular/LIB/modular.lib +545 -0
  373. sage_wheels/share/singular/LIB/modules.lib +2561 -0
  374. sage_wheels/share/singular/LIB/modwalk.lib +609 -0
  375. sage_wheels/share/singular/LIB/mondromy.lib +1016 -0
  376. sage_wheels/share/singular/LIB/monomialideal.lib +3851 -0
  377. sage_wheels/share/singular/LIB/mprimdec.lib +2353 -0
  378. sage_wheels/share/singular/LIB/mregular.lib +1863 -0
  379. sage_wheels/share/singular/LIB/multigrading.lib +5629 -0
  380. sage_wheels/share/singular/LIB/ncHilb.lib +777 -0
  381. sage_wheels/share/singular/LIB/ncModslimgb.lib +791 -0
  382. sage_wheels/share/singular/LIB/ncalg.lib +16311 -0
  383. sage_wheels/share/singular/LIB/ncall.lib +31 -0
  384. sage_wheels/share/singular/LIB/ncdecomp.lib +468 -0
  385. sage_wheels/share/singular/LIB/ncfactor.lib +13371 -0
  386. sage_wheels/share/singular/LIB/ncfrac.lib +1023 -0
  387. sage_wheels/share/singular/LIB/nchilbert.lib +448 -0
  388. sage_wheels/share/singular/LIB/nchomolog.lib +759 -0
  389. sage_wheels/share/singular/LIB/ncloc.lib +361 -0
  390. sage_wheels/share/singular/LIB/ncpreim.lib +795 -0
  391. sage_wheels/share/singular/LIB/ncrat.lib +2849 -0
  392. sage_wheels/share/singular/LIB/nctools.lib +1887 -0
  393. sage_wheels/share/singular/LIB/nets.lib +1456 -0
  394. sage_wheels/share/singular/LIB/nfmodstd.lib +1000 -0
  395. sage_wheels/share/singular/LIB/nfmodsyz.lib +732 -0
  396. sage_wheels/share/singular/LIB/noether.lib +1106 -0
  397. sage_wheels/share/singular/LIB/normal.lib +8700 -0
  398. sage_wheels/share/singular/LIB/normaliz.lib +2226 -0
  399. sage_wheels/share/singular/LIB/ntsolve.lib +362 -0
  400. sage_wheels/share/singular/LIB/numerAlg.lib +560 -0
  401. sage_wheels/share/singular/LIB/numerDecom.lib +2261 -0
  402. sage_wheels/share/singular/LIB/olga.lib +1933 -0
  403. sage_wheels/share/singular/LIB/orbitparam.lib +351 -0
  404. sage_wheels/share/singular/LIB/parallel.lib +319 -0
  405. sage_wheels/share/singular/LIB/paraplanecurves.lib +3110 -0
  406. sage_wheels/share/singular/LIB/perron.lib +202 -0
  407. sage_wheels/share/singular/LIB/pfd.lib +2223 -0
  408. sage_wheels/share/singular/LIB/phindex.lib +642 -0
  409. sage_wheels/share/singular/LIB/pointid.lib +673 -0
  410. sage_wheels/share/singular/LIB/polybori.lib +1430 -0
  411. sage_wheels/share/singular/LIB/polyclass.lib +525 -0
  412. sage_wheels/share/singular/LIB/polylib.lib +1174 -0
  413. sage_wheels/share/singular/LIB/polymake.lib +1902 -0
  414. sage_wheels/share/singular/LIB/presolve.lib +1533 -0
  415. sage_wheels/share/singular/LIB/primdec.lib +9576 -0
  416. sage_wheels/share/singular/LIB/primdecint.lib +1782 -0
  417. sage_wheels/share/singular/LIB/primitiv.lib +401 -0
  418. sage_wheels/share/singular/LIB/puiseuxexpansions.lib +1631 -0
  419. sage_wheels/share/singular/LIB/purityfiltration.lib +960 -0
  420. sage_wheels/share/singular/LIB/qhmoduli.lib +1561 -0
  421. sage_wheels/share/singular/LIB/qmatrix.lib +293 -0
  422. sage_wheels/share/singular/LIB/random.lib +455 -0
  423. sage_wheels/share/singular/LIB/ratgb.lib +489 -0
  424. sage_wheels/share/singular/LIB/realclassify.lib +5759 -0
  425. sage_wheels/share/singular/LIB/realizationMatroids.lib +772 -0
  426. sage_wheels/share/singular/LIB/realrad.lib +1197 -0
  427. sage_wheels/share/singular/LIB/recover.lib +2628 -0
  428. sage_wheels/share/singular/LIB/redcgs.lib +3984 -0
  429. sage_wheels/share/singular/LIB/reesclos.lib +465 -0
  430. sage_wheels/share/singular/LIB/resbinomial.lib +2802 -0
  431. sage_wheels/share/singular/LIB/resgraph.lib +789 -0
  432. sage_wheels/share/singular/LIB/resjung.lib +820 -0
  433. sage_wheels/share/singular/LIB/resolve.lib +5110 -0
  434. sage_wheels/share/singular/LIB/resources.lib +170 -0
  435. sage_wheels/share/singular/LIB/reszeta.lib +5473 -0
  436. sage_wheels/share/singular/LIB/ring.lib +1328 -0
  437. sage_wheels/share/singular/LIB/ringgb.lib +343 -0
  438. sage_wheels/share/singular/LIB/rinvar.lib +1153 -0
  439. sage_wheels/share/singular/LIB/rootisolation.lib +1481 -0
  440. sage_wheels/share/singular/LIB/rootsmr.lib +709 -0
  441. sage_wheels/share/singular/LIB/rootsur.lib +886 -0
  442. sage_wheels/share/singular/LIB/rstandard.lib +607 -0
  443. sage_wheels/share/singular/LIB/rwalk.lib +336 -0
  444. sage_wheels/share/singular/LIB/sagbi.lib +1353 -0
  445. sage_wheels/share/singular/LIB/sagbiNormaliz.lib +1622 -0
  446. sage_wheels/share/singular/LIB/sagbiNormaliz0.lib +1498 -0
  447. sage_wheels/share/singular/LIB/sagbigrob.lib +449 -0
  448. sage_wheels/share/singular/LIB/schreyer.lib +321 -0
  449. sage_wheels/share/singular/LIB/schubert.lib +2551 -0
  450. sage_wheels/share/singular/LIB/sets.lib +524 -0
  451. sage_wheels/share/singular/LIB/sheafcoh.lib +1663 -0
  452. sage_wheels/share/singular/LIB/signcond.lib +437 -0
  453. sage_wheels/share/singular/LIB/sing.lib +1094 -0
  454. sage_wheels/share/singular/LIB/sing4ti2.lib +419 -0
  455. sage_wheels/share/singular/LIB/solve.lib +2243 -0
  456. sage_wheels/share/singular/LIB/spcurve.lib +1077 -0
  457. sage_wheels/share/singular/LIB/spectrum.lib +62 -0
  458. sage_wheels/share/singular/LIB/sresext.lib +757 -0
  459. sage_wheels/share/singular/LIB/ssi.lib +143 -0
  460. sage_wheels/share/singular/LIB/standard.lib +2769 -0
  461. sage_wheels/share/singular/LIB/stanleyreisner.lib +473 -0
  462. sage_wheels/share/singular/LIB/stdmodule.lib +547 -0
  463. sage_wheels/share/singular/LIB/stratify.lib +1070 -0
  464. sage_wheels/share/singular/LIB/surf.lib +506 -0
  465. sage_wheels/share/singular/LIB/surf_jupyter.lib +223 -0
  466. sage_wheels/share/singular/LIB/surfacesignature.lib +522 -0
  467. sage_wheels/share/singular/LIB/surfex.lib +1462 -0
  468. sage_wheels/share/singular/LIB/swalk.lib +877 -0
  469. sage_wheels/share/singular/LIB/symodstd.lib +1570 -0
  470. sage_wheels/share/singular/LIB/systhreads.lib +74 -0
  471. sage_wheels/share/singular/LIB/tasks.lib +1324 -0
  472. sage_wheels/share/singular/LIB/tateProdCplxNegGrad.lib +2412 -0
  473. sage_wheels/share/singular/LIB/teachstd.lib +858 -0
  474. sage_wheels/share/singular/LIB/template.lib +116 -0
  475. sage_wheels/share/singular/LIB/toric.lib +1119 -0
  476. sage_wheels/share/singular/LIB/transformation.lib +116 -0
  477. sage_wheels/share/singular/LIB/triang.lib +1197 -0
  478. sage_wheels/share/singular/LIB/tropical.lib +8741 -0
  479. sage_wheels/share/singular/LIB/tropicalEllipticCovers.lib +2922 -0
  480. sage_wheels/share/singular/LIB/tropicalNewton.lib +1128 -0
  481. sage_wheels/share/singular/LIB/tst.lib +1108 -0
  482. sage_wheels/share/singular/LIB/weierstr.lib +241 -0
  483. sage_wheels/share/singular/LIB/zeroset.lib +1478 -0
  484. sage_wheels/share/singular/emacs/.emacs-general +184 -0
  485. sage_wheels/share/singular/emacs/.emacs-singular +234 -0
  486. sage_wheels/share/singular/emacs/COPYING +44 -0
  487. sage_wheels/share/singular/emacs/cmd-cmpl.el +241 -0
  488. sage_wheels/share/singular/emacs/ex-cmpl.el +1681 -0
  489. sage_wheels/share/singular/emacs/hlp-cmpl.el +4318 -0
  490. sage_wheels/share/singular/emacs/lib-cmpl.el +179 -0
  491. sage_wheels/share/singular/emacs/singular.el +4273 -0
  492. sage_wheels/share/singular/emacs/singular.xpm +39 -0
  493. sage_wheels/share/singular/singular.idx +5002 -0
@@ -0,0 +1,1666 @@
1
+ ////////////////////////////////////////////////////////////////
2
+ version="version fpalgebras.lib 4.1.2.0 Feb_2019 "; // $Id: 2ca3d9e326543222e30cb11db59d6bffbcea308a $
3
+ category="Noncommutative";
4
+ info="
5
+ LIBRARY: fpalgebras.lib Definitions of some finitely presented algebras and groups (Letterplace)
6
+ AUTHORS: Karim Abou Zeid, karim.abou.zeid at rwth-aachen.de@*
7
+ Viktor Levandovskyy, viktor.levandovskyy at math.rwth-aachen.de@*
8
+ Grischa Studzinski, grischa.studzinski at rwth-aachen.de
9
+
10
+ Support: Project II.6 in the transregional collaborative research centre
11
+ SFB-TRR 195 'Symbolic Tools in Mathematics and their Application' of the German DFG
12
+
13
+ OVERVIEW:
14
+ Generation of various algebras, including group algebras of finitely presented groups in the Letterplace ring.
15
+ FPA stands for finitely presented algebra.
16
+
17
+ KEYWORDS: free associative algebra; finitely presented algebra; finitely presented group; Serre relations
18
+
19
+ PROCEDURES:
20
+ operatorAlgebra(string a, int d); description of some common algebras of operators
21
+ serreRelations(A,z); compute the homogeneous part of Serre's relations associated to a generalized Cartan matrix A
22
+ fullSerreRelations(A,N,C,P,d); compute the ideal of all Serre's relations associated to a generalized Cartan matrix A
23
+ ademRelations(i,j); compute the ideal of Adem relations for i<2j in char 0
24
+ baumslagSolitar(int n, int m, int d, list #);
25
+ baumslagGroup(int m, int n, int d);
26
+ crystallographicGroupP1(int d);
27
+ crystallographicGroupPM(int d);
28
+ crystallographicGroupPG(int d);
29
+ crystallographicGroupP2MM(int d);
30
+ crystallographicGroupP2(int d);
31
+ crystallographicGroupP2GG(int d);
32
+ crystallographicGroupCM(int d);
33
+ crystallographicGroupC2MM(int d);
34
+ crystallographicGroupP4(int d);
35
+ crystallographicGroupP4MM(int d);
36
+ crystallographicGroupP4GM(int d);
37
+ crystallographicGroupP3(int d);
38
+ crystallographicGroupP31M(int d);
39
+ crystallographicGroupP3M1(int d);
40
+ crystallographicGroupP6(int d);
41
+ crystallographicGroupP6MM(int d);
42
+ dyckGroup1(int n, int d, intvec P);
43
+ dyckGroup2(int n, int d, intvec P);
44
+ dyckGroup3(int n, int d, intvec P);
45
+ fibonacciGroup(int m, int d);
46
+ tetrahedronGroup(int g, int d);
47
+ triangularGroup(int g, int d);
48
+
49
+ SEE ALSO: freegb_lib, fpadim_lib, fpaprops_lib, LETTERPLACE
50
+ ";
51
+
52
+ LIB "freegb.lib";
53
+ LIB "general.lib";
54
+ ////////////////////////////////////////////////////////////////////
55
+
56
+ /* very fast and cheap test of consistency and functionality
57
+ DO NOT make it static !
58
+ after adding the new proc, add it here */
59
+ proc tstfpalgebras()
60
+ {
61
+ example operatorAlgebra;
62
+ example serreRelations;
63
+ example fullSerreRelations;
64
+ example ademRelations;
65
+ example baumslagSolitar;
66
+ example baumslagGroup;
67
+ example dyckGroup1;
68
+ example dyckGroup2;
69
+ example dyckGroup3;
70
+ example fibonacciGroup;
71
+ example tetrahedronGroup;
72
+ example triangularGroup;
73
+ };
74
+
75
+ // Serre and Adem
76
+ proc serreRelations(intmat A, int zu)
77
+ "USAGE: serreRelations(A,z); A an intmat, z an int
78
+ RETURN: ideal
79
+ ASSUME: basering has a letterplace ring structure and
80
+ A is a generalized Cartan matrix with integer entries
81
+ PURPOSE: compute the ideal of Serre's relations associated to A
82
+ EXAMPLE: example serreRelations; shows examples
83
+ "
84
+ {
85
+ // zu = 1 -> with commutators [f_i,f_j]; zu == 0 without them
86
+ // suppose that A is cartan matrix
87
+ // then Serre's relations are
88
+ // (ad f_j)^{1-A_{ij}} ( f_i)
89
+ int ppl = printlevel-voice+2;
90
+ int n = ncols(A); // hence n variables
91
+ int i,j,k,el;
92
+ poly p,q;
93
+ ideal I;
94
+ for (i=1; i<=n; i++)
95
+ {
96
+ for (j=1; j<=n; j++)
97
+ {
98
+ el = 1 - A[i,j];
99
+ // printf("i:%s, j: %s, l: %s",i,j,l);
100
+ dbprint(ppl,"i, j, l: ",i,j,el);
101
+ // if ((i!=j) && (l >0))
102
+ // if ( (i!=j) && ( ((zu ==0) && (l >=2)) || ((zu ==1) && (l >=1)) ) )
103
+ if ((i!=j) && (el >0))
104
+ {
105
+ q = lieBracket(var(j),var(i));
106
+ dbprint(ppl,"first bracket: ",q);
107
+ // if (l >=2)
108
+ // {
109
+ for (k=1; k<=el-1; k++)
110
+ {
111
+ q = lieBracket(var(j),q);
112
+ dbprint(ppl,"further bracket:",q);
113
+ }
114
+ // }
115
+ }
116
+ if (q!=0) { I = I,q; q=0;}
117
+ }
118
+ }
119
+ I = simplify(I,2);
120
+ return(I);
121
+ }
122
+ example
123
+ {
124
+ "EXAMPLE:"; echo = 2;
125
+ intmat A[3][3] =
126
+ 2, -1, 0,
127
+ -1, 2, -3,
128
+ 0, -1, 2; // G^1_2 Cartan matrix
129
+ ring r = 0,(f1,f2,f3),dp;
130
+ int uptodeg = 5;
131
+ def R = freeAlgebra(r, uptodeg);
132
+ setring R;
133
+ ideal I = serreRelations(A,1); I = simplify(I,1+2+8);
134
+ I;
135
+ }
136
+
137
+ /* setup for older example:
138
+ intmat A[2][2] = 2, -1, -1, 2; // sl_3 == A_2
139
+ ring r = 0,(f1,f2),dp;
140
+ int uptodeg = 5; int lV = 2;
141
+ */
142
+
143
+ proc fullSerreRelations(intmat A, ideal rNegative, ideal rCartan, ideal rPositive, int uptodeg)
144
+ "USAGE: fullSerreRelations(A,N,C,P,d); A an intmat, N,C,P ideals, d an int
145
+ RETURN: ring (and ideal)
146
+ PURPOSE: compute the inhomogeneous Serre's relations associated to A in given
147
+ variable names
148
+ ASSUME: three ideals in the input are of the same sizes and contain merely
149
+ variables which are interpreted as follows: N resp. P stand for negative
150
+ resp. positive roots, C stand for Cartan elements. d is the degree bound for
151
+ letterplace ring, which will be returned.
152
+ The matrix A is a generalized Cartan matrix with integer entries
153
+ The result is the ideal called 'fsRel' in the returned ring.
154
+ EXAMPLE: example fullSerreRelations; shows examples
155
+ "
156
+ {
157
+ /* SerreRels on rNeg and rPos plus Cartans etc. */
158
+ int ppl = printlevel -voice+2;
159
+ /* ideals must be written in variables: assume each term is of degree 1 */
160
+ int i,j,k;
161
+ int N = nvars(basering);
162
+ def save = basering;
163
+ int comFlag = 0;
164
+ /* assume: (size(rNegative) == size(rPositive)) */
165
+ /* assume: (size(rNegative) == size(rCartan)) i.e. nonsimple Cartans */
166
+ if ( (size(rNegative) != size(rPositive)) || (size(rNegative) != size(rCartan)) )
167
+ {
168
+ ERROR("All input ideals must be of the same size");
169
+ }
170
+
171
+ // if (size(rNegative) != size(rPositive))
172
+ // {
173
+ // ERROR("The 1st and the 3rd input ideals must be of the same size");
174
+ // }
175
+
176
+ /* assume: 2*size(rNegative) + size(rCartan) >= nvars(basering) */
177
+ i = 2*size(rNegative) + size(rCartan);
178
+ if (i>N)
179
+ {
180
+ string s1="The total number of elements in input ideals";
181
+ string s2="must not exceed the dimension of the ground ring";
182
+ ERROR(s1+s2);
183
+ }
184
+ if (i < N)
185
+ {
186
+ comFlag = N-i; // so many elements will commute
187
+ "Warning: some elements will be treated as mutually commuting";
188
+ }
189
+ /* extract varnames from input ideals */
190
+ intvec iNeg = varIdeal2intvec(rNegative);
191
+ intvec iCartan = varIdeal2intvec(rCartan);
192
+ intvec iPos = varIdeal2intvec(rPositive);
193
+ /* for each vector in rNeg and rPositive, go into the corr. ring and create SerreRels */
194
+ /* rNegative: */
195
+ list L = ringlist(save);
196
+ def LPsave = freeAlgebra(basering, uptodeg); setring save;
197
+ list LNEG = L; list tmp;
198
+ /* L[1] field as is; L[2] vars: a subset; L[3] ordering: dp, L[4] as is */
199
+ for (i=1; i<=size(iNeg); i++)
200
+ {
201
+ tmp[i] = string(var(iNeg[i]));
202
+ }
203
+ LNEG[2] = tmp; LNEG[3] = list(list("dp",intvec(1:size(iNeg))), list("C",0));
204
+ def RNEG = ring(LNEG); setring RNEG;
205
+ def RRNEG = freeAlgebra(basering, uptodeg);
206
+ setring RRNEG;
207
+ ideal I = serreRelations(A,1); I = simplify(I,1+2+8);
208
+ setring LPsave;
209
+ ideal srNeg = imap(RRNEG,I);
210
+ dbprint(ppl,"0-1 ideal of negative relations is ready");
211
+ dbprint(ppl-1,srNeg);
212
+ setring save; kill L,tmp,RRNEG,RNEG, LNEG;
213
+ /* rPositive: */
214
+ list L = ringlist(save);
215
+ list LPOS = L; list tmp;
216
+ /* L[1] field as is; L[2] vars: a subset; L[3] ordering: dp, L[4] as is */
217
+ for (i=1; i<=size(iPos); i++)
218
+ {
219
+ tmp[i] = string(var(iPos[i]));
220
+ }
221
+ LPOS[2] = tmp; LPOS[3] = list(list("dp",intvec(1:size(iPos))), list("C",0));
222
+ def RPOS = ring(LPOS); setring RPOS;
223
+ def RRPOS = freeAlgebra(basering, uptodeg);
224
+ setring RRPOS;
225
+ ideal I = serreRelations(A,1); I = simplify(I,1+2+8);
226
+ setring LPsave;
227
+ ideal srPos = imap(RRPOS,I);
228
+ dbprint(ppl,"0-2 ideal of positive relations is ready");
229
+ dbprint(ppl-1,srPos);
230
+ setring save; kill L,tmp,RRPOS,RPOS, LPOS;
231
+ string sMap = "ideal Mmap =";
232
+ for (i=1; i<=nvars(save); i++)
233
+ {
234
+ sMap = sMap + string(var(i))+",";
235
+ }
236
+ sMap[size(sMap)] = ";";
237
+ /* cartans: h_j h_i = h_i h_j */
238
+ setring LPsave;
239
+ ideal ComCartan;
240
+ for (i=1; i<size(iCartan); i++)
241
+ {
242
+ for (j=i+1; j<=size(iCartan); j++)
243
+ {
244
+ ComCartan = ComCartan + lieBracket(var(iCartan[j]),var(iCartan[i]));
245
+ }
246
+ }
247
+ ComCartan = simplify(ComCartan,1+2+8);
248
+ execute(sMap); // defines an ideal Mmap
249
+ map F = save, Mmap;
250
+ dbprint(ppl,"1. commuting Cartans: ");
251
+ dbprint(ppl-1,ComCartan);
252
+ /* [e_i, f_j] =0 if i<>j */
253
+ ideal ComPosNeg; // assume: #Neg=#Pos
254
+ for (i=1; i<size(iPos); i++)
255
+ {
256
+ for (j=1; j<=size(iPos); j++)
257
+ {
258
+ if (j !=i)
259
+ {
260
+ ComPosNeg = ComPosNeg + lieBracket(var(iPos[i]),var(iNeg[j]));
261
+ ComPosNeg = ComPosNeg + lieBracket(var(iPos[j]),var(iNeg[i]));
262
+ }
263
+ }
264
+ }
265
+ ComPosNeg = simplify(ComPosNeg,1+2+8);
266
+ dbprint(ppl,"2. commuting Positive and Negative:");
267
+ dbprint(ppl-1,ComPosNeg);
268
+ /* [e_i, f_i] = h_i */
269
+ poly tempo;
270
+ for (i=1; i<=size(iCartan); i++)
271
+ {
272
+ tempo = lieBracket(var(iPos[i]),var(iNeg[i])) - var(iCartan[i]);
273
+ ComPosNeg = ComPosNeg + tempo;
274
+ }
275
+ // ComPosNeg = simplify(ComPosNeg,1+2+8);
276
+ dbprint(ppl,"3. added sl2 triples [e_i,f_i]=h_i");
277
+ dbprint(ppl-1,ComPosNeg);
278
+
279
+ /* [h_i, e_j] = A_ij e_j */
280
+ /* [h_i, f_j] = -A_ij f_j */
281
+ ideal ActCartan; // assume: #Neg=#Pos
282
+ for (i=1; i<=size(iCartan); i++)
283
+ {
284
+ for (j=1; j<=size(iCartan); j++)
285
+ {
286
+ tempo = lieBracket(var(iCartan[i]),var(iPos[j])) - A[i,j]*var(iPos[j]);
287
+ ActCartan = ActCartan + tempo;
288
+ tempo = lieBracket(var(iCartan[i]),var(iNeg[j])) + A[i,j]*var(iNeg[j]);
289
+ ActCartan = ActCartan + tempo;
290
+ }
291
+ }
292
+ ActCartan = simplify(ActCartan,1+2+8);
293
+ dbprint(ppl,"4. actions of Cartan:");
294
+ dbprint(ppl-1, ActCartan);
295
+
296
+ /* final part: prepare the output */
297
+ setring LPsave;
298
+ ideal fsRel = srNeg, srPos, ComPosNeg, ComCartan, ActCartan;
299
+ export fsRel;
300
+ setring save;
301
+ return(LPsave);
302
+ }
303
+ example
304
+ {
305
+ "EXAMPLE:"; echo = 2;
306
+ intmat A[2][2] =
307
+ 2, -1,
308
+ -1, 2; // A_2 = sl_3 Cartan matrix
309
+ ring r = 0,(f1,f2,h1,h2,e1,e2),dp;
310
+ ideal negroots = f1,f2; ideal cartans = h1,h2; ideal posroots = e1,e2;
311
+ int uptodeg = 5;
312
+ def RS = fullSerreRelations(A,negroots,cartans,posroots,uptodeg);
313
+ setring RS; fsRel;
314
+ }
315
+
316
+ /* intmat A[2][2] =
317
+ 2, -1,
318
+ -3, 2; // G_2 Cartan matrix
319
+ */
320
+
321
+
322
+ static proc varIdeal2intvec(ideal I)
323
+ {
324
+ // used in SerreRelations
325
+ /* assume1: input ideal is a list of variables of the ground ring */
326
+ int i,j; intvec V;
327
+ for (i=1; i<= size(I); i++)
328
+ {
329
+ j = univariate(I[i]);
330
+ if (j<=0)
331
+ {
332
+ ERROR("input ideal must contain only variables");
333
+ }
334
+ V[i] = j;
335
+ }
336
+ dbprint(printlevel-voice+2,V);
337
+ /* now we make a smaller list of non-repeating entries */
338
+ ideal iW = simplify(ideal(V),2+4); // no zeros, no repetitions
339
+ if (size(iW) < size(V))
340
+ {
341
+ /* extract intvec from iW */
342
+ intvec inW;
343
+ for(j=1; j<=size(iW); j++)
344
+ {
345
+ inW[j] = int(leadcoef(iW[j]));
346
+ }
347
+ return(inW);
348
+ }
349
+ return(V);
350
+ }
351
+ example
352
+ {
353
+ "EXAMPLE:"; echo = 2;
354
+ ring r = 0,(x,y,z),dp;
355
+ ideal I = x,z;
356
+ varIdeal2intvec(I);
357
+ varIdeal2intvec(ideal(x2,y^3,x+1));
358
+ varIdeal2intvec(ideal(x*y,y,x+1));
359
+ }
360
+
361
+ proc ademRelations(int i, int j)
362
+ "USAGE: ademRelations(i,j); i,j int
363
+ RETURN: ring (and exports ideal)
364
+ PURPOSE: compute the ideal of Adem relations for i<2j in characteristic 0
365
+ the ideal is exported under the name AdemRel in the output ring
366
+ EXAMPLE: example ademRelations; shows examples
367
+ "
368
+ {
369
+ // produces Adem relations for i<2j in char 0
370
+ // assume: 0<i<2j
371
+ // requires presence of vars up to i+j
372
+ if ( (i<0) || (i >= 2*j) )
373
+ {
374
+ ERROR("arguments out of range"); return(0);
375
+ }
376
+ ring @r = 0,(s(i+j..0)),lp;
377
+ poly p,q;
378
+ number n;
379
+ int ii = i div 2; int k;
380
+ // k=0 => s(0)=1
381
+ n = binomial(j-1,i);
382
+ q = n*s(i+j)*s(0);
383
+ // printf("k=0, term=%s",q);
384
+ p = p + q;
385
+ for (k=1; k<= ii; k++)
386
+ {
387
+ n = binomial(j-k-1,i-2*k);
388
+ q = n*s(i+j-k)*s(k);;
389
+ // printf("k=%s, term=%s",k,q);
390
+ p = p + q;
391
+ }
392
+ poly AdemRel = p;
393
+ export AdemRel;
394
+ return(@r);
395
+ }
396
+ example
397
+ {
398
+ "EXAMPLE:"; echo = 2;
399
+ def A = ademRelations(2,5);
400
+ setring A;
401
+ AdemRel;
402
+ }
403
+
404
+ /*
405
+ 1,1: 0
406
+ 1,2: s(3)*s(0) == s(3) -> def for s(3):=s(1)s(2)
407
+ 2,1: adm
408
+ 2,2: s(3)*s(1) == s(1)s(2)s(1)
409
+ 1,3: 0 ( since 2*s(4)*s(0) = 0 mod 2)
410
+ 3,1: adm
411
+ 2,3: s(5)*s(0)+s(4)*s(1) == s(5)+s(4)*s(1)
412
+ 3,2: 0
413
+ 3,3: s(5)*s(1)
414
+ 1,4: 3*s(5)*s(0) == s(5) -> def for s(5):=s(1)*s(4)
415
+ 4,1: adm
416
+ 2,4: 3*s(6)*s(0)+s(5)*s(1) == s(6) + s(5)*s(1) == s(6) + s(1)*s(4)*s(1)
417
+ 4,2: adm
418
+ 4,3: s(5)*s(2)
419
+ 3,4: s(7)*s(0)+2*s(6)*s(1) == s(7) -> def for s(7):=s(3)*s(4)
420
+ 4,4: s(7)*s(1)+s(6)*s(2)
421
+ */
422
+
423
+ /* s1,s2:
424
+ s1*s1 =0, s2*s2 = s1*s2*s1
425
+ try char 0:
426
+ s1,s2:
427
+ s1*s1 =0, s2*s2 = s1*s2*s1, s(1)*s(3)== s(1)*s(1)*s(3) == 0 = 2*s(4) ->def for s(4)
428
+ hence 2==0! only in char 2
429
+ Adem rels modulo 2 are interesting
430
+ */
431
+
432
+ ////////////////////////////////////////////////////////////////////
433
+ // Operator Algebras ///////////////////////////////////////////////
434
+ ////////////////////////////////////////////////////////////////////
435
+
436
+ proc operatorAlgebra(string a, int d)
437
+ "USAGE: operatorAlgebra(a,d); a a string, d an integer
438
+ RETURN: ring
439
+ NOTE: - the ring contains the ideal I, which contains the required relations
440
+ - a gives the name of the algebra
441
+ - d gives the degreebound for the Letterplace ring
442
+
443
+ a must be one of the following:
444
+ integrodiff3
445
+ toeplitz
446
+ weyl1
447
+ usl2
448
+ usl2h
449
+ shift1inverse
450
+ exterior2
451
+ quadrowmm
452
+ shift1
453
+ weyl1inverse
454
+
455
+ This is a collection of common algebras.
456
+ "
457
+ {
458
+ if (d < 2) {
459
+ ERROR("Degbound d is too small. Must be at least 2.");
460
+ }
461
+ int baseringdef;
462
+ if (defined(basering)) // if a basering is defined, it should be saved for later use
463
+ {
464
+ def save = basering;
465
+ baseringdef = 1;
466
+ }
467
+
468
+ if (a == "integrodiff3") {
469
+ ring r = 0,(D,II,x),dp;
470
+ def R = freeAlgebra(r, d);
471
+ setring(R);
472
+ ideal I = D*x-x*D-1,
473
+ II*x-x*II+II*II,
474
+ D*II-1;
475
+ }
476
+ if (a == "toeplitz") {
477
+ ring r = 0,(y,x),dp;
478
+ def R = freeAlgebra(r, d);
479
+ setring(R);
480
+ ideal I = y*x-1;
481
+ }
482
+ if (a == "weyl1") {
483
+ ring r = 0,(D,x),dp;
484
+ def R = freeAlgebra(r, d);
485
+ setring(R);
486
+ ideal I = D*x-x*D-1;
487
+ }
488
+ if (a == "usl2") {
489
+ ring r = 0,(h,f,e),dp;
490
+ def R = freeAlgebra(r, d);
491
+ setring(R);
492
+ ideal I = f*e-e*f+h,
493
+ h*e-e*h-2*e,
494
+ h*f-f*h+2*f;
495
+ }
496
+ if (a == "usl2h") {
497
+ ring r = 0,(H,h,f,e),dp;
498
+ def R = freeAlgebra(r, d);
499
+ setring(R);
500
+ ideal I = f*e-e*f+h*H,
501
+ h*e-e*h-2*e*H,
502
+ h*f-f*h+2*f*H,
503
+ f*H-H*f,
504
+ e*H-H*e,
505
+ h*H-H*h;
506
+ }
507
+ if (a == "shift1inverse") {
508
+ ring r = 0,(D,x,t),dp;
509
+ def R = freeAlgebra(r, d);
510
+ setring(R);
511
+ ideal I = D*x-x*D-D,
512
+ t*x-1,
513
+ x*t-1;
514
+ }
515
+ if (a == "exterior2") {
516
+ ring r = 0,(y,x),dp;
517
+ def R = freeAlgebra(r, d);
518
+ setring(R);
519
+ ideal I = y*x+x*y,
520
+ x*x,
521
+ y*y;
522
+ }
523
+ if (a == "quadrowmm") {
524
+ ring r = 0,(y,x),dp;
525
+ def R = freeAlgebra(r, d);
526
+ setring(R);
527
+ ideal I = y*x-x*y,
528
+ x*x,
529
+ y*y;
530
+ }
531
+ if (a == "shift1") {
532
+ ring r = 0,(s,x),dp;
533
+ def R = freeAlgebra(r, d);
534
+ setring(R);
535
+ ideal I = s*x-x*s-s;
536
+ }
537
+ if (a == "weyl1inverse") {
538
+ ring r = 0,(D,x,t),dp;
539
+ def R = freeAlgebra(r, d);
540
+ setring(R);
541
+ ideal I = D*x-x*D-1,
542
+ t*x-1,
543
+ x*t-1;
544
+ }
545
+
546
+ if (!defined(I)) {
547
+ ERROR("Illegal argument for algebra");
548
+ }
549
+
550
+ export(I);
551
+ if (baseringdef == 1) {setring save;}
552
+ return(R);
553
+ }
554
+ example
555
+ {
556
+ "EXAMPLE:"; echo = 2;
557
+ def R = operatorAlgebra("integrodiff3",5); setring R;
558
+ I; //relations of the algebra
559
+ }
560
+
561
+ ////////////////////////////////////////////////////////////////////
562
+ // Baumslag ////////////////////////////////////////////////////////
563
+ // from Grischa Studzinski /////////////////////////////////////////
564
+ ////////////////////////////////////////////////////////////////////
565
+
566
+ proc baumslagSolitar(int n, int m, int d, list #)
567
+ "USAGE: baumslagSolitar(m,n,d[,IsGroup]); n an integer, m an integer, d an integer, IsGroup an optional integer
568
+ RETURN: ring
569
+ NOTE: - the ring contains the ideal I, which contains the required relations
570
+ - in the group case: A = a^(-1), B = b^(-1)
571
+ - negative input is only allowed in the group case!
572
+ - d gives a degreebound and must be >m,n
573
+ - varying n and m produces a family of examples
574
+ "
575
+ {
576
+ int isGroup = 0;
577
+ if (size(#) > 0) {isGroup = #[1];}
578
+
579
+ if (isGroup != 0)
580
+ {
581
+ int baseringdef;
582
+ if (defined(basering)) // if a basering is defined, it should be saved for later use
583
+ {
584
+ def save = basering;
585
+ baseringdef = 1;
586
+ }
587
+ if (m < 0 || n < 0) {ERROR("Exponent can't be negative in monoid rings!");}
588
+ if (d < 1 || d < m || d < n) {ERROR("Degree bound must be positiv and greater then m,n!");}
589
+ int i;
590
+ ring mr = 0,(a,b),Dp;
591
+ def Mr = freeAlgebra(mr, d);
592
+ setring Mr;
593
+ poly p,q;
594
+ if (n==0) {p = b;}
595
+ else
596
+ {
597
+ p = a*b;
598
+ for (i = 1; i < n; i++) {p = a*p;}
599
+ }
600
+ if (m==0) {q = b;}
601
+ else
602
+ {
603
+ q = b*a;
604
+ for (i = 1; i < m; i++) {q = q*a;}
605
+ }
606
+ ideal I = p - q;
607
+ export(I);
608
+ if (baseringdef == 1) {setring save;}
609
+ return(Mr);
610
+ }
611
+ else
612
+ {
613
+ int baseringdef;
614
+ if (defined(basering)) // if a basering is defined, it should be saved for later use
615
+ {
616
+ def save = basering;
617
+ baseringdef = 1;
618
+ }
619
+ int i;
620
+ if (d < 1 || d < absValue(m) || d < absValue(n)) {ERROR("Degree bound must be positiv and greater then |m|,|n|!");}
621
+ ring gr = 0,(a,b,A,B),Dp;
622
+ def Gr = freeAlgebra(gr, d);
623
+ setring Gr;
624
+ poly p,q;
625
+ if (n==0) {p = b;}
626
+ else
627
+ {if (n > 0)
628
+ {
629
+ p = a*b;
630
+ for (i = 1; i < n; i++) {p = a*p;}
631
+ }
632
+ else
633
+ {
634
+ p = A*b;
635
+ for (i = 1; i < -n; i++) {p = A*p;}
636
+ }
637
+ }
638
+ if (m==0) {q = b;}
639
+ else
640
+ {if (m > 0)
641
+ {
642
+ q = b*a;
643
+ for (i = 1; i < m; i++) {q = q*a;}
644
+ }
645
+ else
646
+ {
647
+ q = A*b;
648
+ for (i = 1; i < -m; i++) {q = q*A;}
649
+ }
650
+ }
651
+ ideal I = p - q, a*A - 1, b*B - 1, a*A - A*a, b*B - B*b;
652
+ export(I);
653
+ if (baseringdef == 1) {setring save;}
654
+ return(Gr);
655
+ }
656
+ }
657
+ example
658
+ {
659
+ "EXAMPLE:"; echo = 2;
660
+ def R = baumslagSolitar(2,3,4); setring R;
661
+ I;
662
+ }
663
+
664
+ proc baumslagGroup(int m, int n, int d)
665
+ "USAGE: baumslagGroup(m,n,d); m an integer, n an integer, d an integer
666
+ RETURN: ring
667
+ NOTE: - the ring contains the ideal I, which contains the required relations
668
+ - Baumslag group with the following presentation
669
+ < a, b | a^m = b^n = 1 >
670
+ -d gives the degreebound for the Letterplace ring
671
+ - varying n and m produces a family of examples
672
+ "
673
+ {
674
+ if (m < 0 || n < 0 ) {ERROR("m,n must be non-negativ integers!");}
675
+ if (d < 1 || d < m || d < n) {ERROR("degreebound must be positiv and larger than n and m!");}
676
+ int i;
677
+ ring r = 0,(a,b),dp;
678
+ def R = freeAlgebra(r, d);
679
+ setring R;
680
+ poly p,q;
681
+ p = 1; q = 1;
682
+ for (i = 1; i <= m; i++){p = p*a;}
683
+ for (i = 1; i <= n; i++){q = q*b;}
684
+ ideal I = p-1,q-1;
685
+ export(I);
686
+ return(R);
687
+ }
688
+ example
689
+ {
690
+ "EXAMPLE:"; echo = 2;
691
+ def R = baumslagGroup(2,3,4); setring R;
692
+ I;
693
+ }
694
+
695
+ ////////////////////////////////////////////////////////////////////
696
+ // Crystallographic Groups //////////////////////////////////////////
697
+ // from Grischa Studzinski /////////////////////////////////////////
698
+ ////////////////////////////////////////////////////////////////////
699
+
700
+ proc crystallographicGroupP1(int d)
701
+ "USAGE: crystallographicGroupP1(d); d an integer
702
+ RETURN: ring
703
+ NOTE: - the ring contains the ideal I, which contains the required relations
704
+ - p1 group with the following presentation
705
+ < x, y | [x, y] = 1 >
706
+ -d gives the degreebound for the Letterplace ring
707
+ "
708
+ {
709
+ if (d < 2){ERROR("Degreebound is to small for chosen example!");}
710
+
711
+ int baseringdef;
712
+ if (defined(basering)) // if a basering is defined, it should be saved for later use
713
+ {
714
+ def save = basering;
715
+ baseringdef = 1;
716
+ }
717
+ ring r = 2,(x,y,X,Y),dp;
718
+ def R = freeAlgebra(r, d);
719
+ setring R;
720
+ ideal I = x*y-y*x-1, X*x-1, x*X-1, y*Y-1, Y*y-1;
721
+ I = simplify(I,2);
722
+ export(I);
723
+ if (baseringdef == 1) {setring save;}
724
+ return(R);
725
+ }
726
+ example
727
+ {
728
+ "EXAMPLE:"; echo = 2;
729
+ def R = crystallographicGroupP1(5); setring R;
730
+ I;
731
+ }
732
+
733
+ // old? there is already another crystallographicGroupP2 proc
734
+ /* proc crystallographicGroupP2(int d) */
735
+ /* " */
736
+ /* p2 group with the following presentation */
737
+ /* < x, y, r | [x, y] = r^2 = 1, r^(-1)*x*r = x^(-1), r^(-1)*y*r = y^(-1) > */
738
+ /* Note: r = r^(-1) */
739
+ /* " */
740
+ /* { */
741
+ /* if (d < 3){ERROR("Degreebound is to small for chosen example!");} */
742
+
743
+ /* int baseringdef; */
744
+ /* if (defined(basering)) // if a basering is defined, it should be saved for later use */
745
+ /* { */
746
+ /* def save = basering; */
747
+ /* baseringdef = 1; */
748
+ /* } */
749
+ /* ring r = 2,(x,y,r,X,Y),dp; */
750
+ /* def R = freeAlgebra(r, d); */
751
+ /* setring R; */
752
+ /* ideal I = x*y-y*x-1, x*y-y*x-r*r, r*r-1, r*x*r-X, r*y*r-Y,x*X-1, */
753
+ /* X*x-1, Y*y-1, y*Y-1; */
754
+ /* I = simplify(I,2); */
755
+ /* export(I); */
756
+ /* if (baseringdef == 1) {setring save;} */
757
+ /* return(R); */
758
+ /* } */
759
+
760
+ proc crystallographicGroupPM(int d)
761
+ "USAGE: crystallographicGroupPM(d); d an integer
762
+ RETURN: ring
763
+ NOTE: - the ring contains the ideal I, which contains the required relations
764
+ - pm group with the following presentation
765
+ < x, y, m | [x, y] = m^2 = 1, m^(-1)*x*m = x, m^(-1)*y*m = y^(-1) >
766
+ - d gives the degreebound for the Letterplace ring
767
+ "
768
+ {
769
+ if (d < 3){ERROR("Degreebound is to small for chosen example!");}
770
+
771
+ int baseringdef;
772
+ if (defined(basering)) // if a basering is defined, it should be saved for later use
773
+ {
774
+ def save = basering;
775
+ baseringdef = 1;
776
+ }
777
+ ring r = 2,(x,y,m,X,Y),dp;
778
+ def R = freeAlgebra(r, d);
779
+ setring R;
780
+ ideal I = x*y-y*x-1, x*y-y*x-m*m, m*m-1, m*x*m-x, m*y*m-Y,x*X-1,
781
+ X*x-1, Y*y-1, y*Y-1;
782
+ I = simplify(I,2);
783
+ export(I);
784
+ if (baseringdef == 1) {setring save;}
785
+ return(R);
786
+ }
787
+ example
788
+ {
789
+ "EXAMPLE:"; echo = 2;
790
+ def R = crystallographicGroupPM(5); setring R;
791
+ I;
792
+ }
793
+
794
+ proc crystallographicGroupPG(int d)
795
+ "USAGE: crystallographicGroupPG(d); d an integer
796
+ RETURN: ring
797
+ NOTE: - the ring contains the ideal I, which contains the required relations
798
+ - pg group with the following presentation
799
+ < x, y, t | [x, y] = 1, t^2 = x, t^(-1)*y*t = y^(-1) >
800
+ - d gives the degreebound for the Letterplace ring
801
+ "
802
+ {
803
+ if (d < 3){ERROR("Degreebound is to small for chosen example!");}
804
+
805
+ int baseringdef;
806
+ if (defined(basering)) // if a basering is defined, it should be saved for later use
807
+ {
808
+ def save = basering;
809
+ baseringdef = 1;
810
+ }
811
+ ring r = 2,(x,y,t,X,Y,T),dp;
812
+ def R = freeAlgebra(r, d);
813
+ setring R;
814
+ ideal I = x*y-y*x-1, t*t - x, T*y*t-Y, X*x-1, x*X-1,
815
+ Y*y-1, y*Y-1, t*T-1, T*t-1;
816
+ I = simplify(I,2);
817
+ export(I);
818
+ if (baseringdef == 1) {setring save;}
819
+ return(R);
820
+ }
821
+ example
822
+ {
823
+ "EXAMPLE:"; echo = 2;
824
+ def R = crystallographicGroupPG(5); setring R;
825
+ I;
826
+ }
827
+
828
+
829
+ proc crystallographicGroupP2MM(int d)
830
+ "USAGE: crystallographicGroupP2MM(d); d an integer
831
+ RETURN: ring
832
+ NOTE: - the ring contains the ideal I, which contains the required relations
833
+ - p2mm group with the following presentation
834
+ < x, y, p, q | [x, y] = [p, q] = p^2 = q^2 = 1, p^(-1)*x*p = x, q^(-1)*x*q = x^(-1), p^(-1)*y*p = y^(-1), q^(-1)*y*q = y >
835
+ - d gives the degreebound for the Letterplace ring
836
+ "
837
+ {
838
+ if (d < 3){ERROR("Degreebound is to small for chosen example!");}
839
+
840
+ int baseringdef;
841
+ if (defined(basering)) // if a basering is defined, it should be saved for later use
842
+ {
843
+ def save = basering;
844
+ baseringdef = 1;
845
+ }
846
+ ring r = 2,(x,y,p,q,X,Y),dp;
847
+ def R = freeAlgebra(r, d);
848
+ setring R;
849
+ ideal I = x*y-y*x-1, p*q-q*p-1, p*p - 1, q*q - 1, p*y*p-Y, p*x*p-x,
850
+ q*y*q-y, q*x*q-X, X*x-1, x*X-1, Y*y-1, y*Y-1, x*y-y*x- p*p,
851
+ x*y-y*x- q*q, p*p-q*q;
852
+ I = simplify(I,2);
853
+ export(I);
854
+ if (baseringdef == 1) {setring save;}
855
+ return(R);
856
+ }
857
+ example
858
+ {
859
+ "EXAMPLE:"; echo = 2;
860
+ def R = crystallographicGroupP2MM(5); setring R;
861
+ I;
862
+ }
863
+
864
+ proc crystallographicGroupP2(int d)
865
+ "USAGE: crystallographicGroupP2(d); d an integer
866
+ RETURN: ring
867
+ NOTE: - the ring contains the ideal I, which contains the required relations
868
+ - p2 group with the following presentation
869
+ < x, y, m, t | [x, y] = t^2 = 1, m^2 = y, t^(-1)*x*t = x, m^(-1)*x*m = x^(-1), t^(-1)*y*t = y^(-1), t^(-1)*m*t = m^(-1) >
870
+ - d gives the degreebound for the Letterplace ring
871
+ "
872
+ {
873
+ if (d < 3){ERROR("Degreebound is to small for chosen example!");}
874
+
875
+ int baseringdef;
876
+ if (defined(basering)) // if a basering is defined, it should be saved for later use
877
+ {
878
+ def save = basering;
879
+ baseringdef = 1;
880
+ }
881
+ ring r = 2,(x,y,m,t,X,Y,M),dp;
882
+ def R = freeAlgebra(r, d);
883
+ setring R;
884
+ ideal I = x*y-y*x-1, x*y-y*x-t*t, m*m-y, t*t - 1, t*x*t-x,
885
+ M*x*m-X, t*y*t-Y, t*m*t-M, X*x-1, x*X-1, Y*y-1, y*Y-1,
886
+ m*M-1, M*m-1;
887
+ I = simplify(I,2);
888
+ export(I);
889
+ if (baseringdef == 1) {setring save;}
890
+ return(R);
891
+ }
892
+ example
893
+ {
894
+ "EXAMPLE:"; echo = 2;
895
+ def R = crystallographicGroupP2(5); setring R;
896
+ I;
897
+ }
898
+
899
+ proc crystallographicGroupP2GG(int d)
900
+ "USAGE: crystallographicGroupP2GG(d); d an integer
901
+ RETURN: ring
902
+ NOTE: - the ring contains the ideal I, which contains the required relations
903
+ - p2gg group with the following presentation
904
+ < x, y, u, v | [x, y] = (u*v)^2 = 1, u^2 = x, v^2 = y, v^(-1)*x*v = x^(-1), u^(-1)*y*u = y^(-1) >
905
+ - d gives the degreebound for the Letterplace ring
906
+ "
907
+ {
908
+ if (d < 4){ERROR("Degreebound is to small for chosen example!");}
909
+
910
+ int baseringdef;
911
+ if (defined(basering)) // if a basering is defined, it should be saved for later use
912
+ {
913
+ def save = basering;
914
+ baseringdef = 1;
915
+ }
916
+ ring r = 2,(x,y,u,v,X,Y,U,V),dp;
917
+ def R = freeAlgebra(r, d);
918
+ setring R;
919
+ ideal I = x*y-y*x-1, x*y-y*x-u*v*u*v, u*v*u*v-1, u*u-x, v*v - y,
920
+ V*x*v-X, U*y*u-Y,
921
+ X*x-1, x*X-1, Y*y-1, y*Y-1, u*U-1, U*u-1, v*V-1, V*v-1;
922
+ I = simplify(I,2);
923
+ export(I);
924
+ if (baseringdef == 1) {setring save;}
925
+ return(R);
926
+ }
927
+ example
928
+ {
929
+ "EXAMPLE:"; echo = 2;
930
+ def R = crystallographicGroupP2GG(5); setring R;
931
+ I;
932
+ }
933
+
934
+ proc crystallographicGroupCM(int d)
935
+ "USAGE: crystallographicGroupCM(d); d an integer
936
+ RETURN: ring
937
+ NOTE: - the ring contains the ideal I, which contains the required relations
938
+ - cm group with the following presentation
939
+ < x, y, t | [x, y] = t^2 = 1, t^(-1)*x*t = x*y, t^(-1)*y*t = y^(-1) >
940
+ - d gives the degreebound for the Letterplace ring
941
+ "
942
+ {
943
+ if (d < 3){ERROR("Degreebound is to small for chosen example!");}
944
+
945
+ int baseringdef;
946
+ if (defined(basering)) // if a basering is defined, it should be saved for later use
947
+ {
948
+ def save = basering;
949
+ baseringdef = 1;
950
+ }
951
+ ring r = 2,(x,y,t,X,Y),dp;
952
+ def R = freeAlgebra(r, d);
953
+ setring R;
954
+ ideal I = x*y-y*x-1, x*y-y*x-t*t, t*t-1,
955
+ t*x*t-x*y, t*y*t-Y,
956
+ X*x-1, x*X-1, Y*y-1, y*Y-1;
957
+ I = simplify(I,2);
958
+ export(I);
959
+ if (baseringdef == 1) {setring save;}
960
+ return(R);
961
+ }
962
+ example
963
+ {
964
+ "EXAMPLE:"; echo = 2;
965
+ def R = crystallographicGroupCM(5); setring R;
966
+ I;
967
+ }
968
+
969
+ proc crystallographicGroupC2MM(int d)
970
+ "USAGE: crystallographicGroupC2MM(d); d an integer
971
+ RETURN: ring
972
+ NOTE: - the ring contains the ideal I, which contains the required relations
973
+ - c2mm group with the following presentation
974
+ < x, y, m, r | [x, y] = m^2 = r^2 = 1, m^(-1)*y*m = y^(-1), m^(-1)*x*m = x*y, r^(-1)*y*r = y^(-1), r^(-1)*x*r = x^(-1), m^(-1)*r*m = r^(-1) >
975
+ - d gives the degreebound for the Letterplace ring
976
+ "
977
+ {
978
+ if (d < 3){ERROR("Degreebound is to small for chosen example!");}
979
+
980
+ int baseringdef;
981
+ if (defined(basering)) // if a basering is defined, it should be saved for later use
982
+ {
983
+ def save = basering;
984
+ baseringdef = 1;
985
+ }
986
+ ring rr = 2,(x,y,m,r,X,Y),dp;
987
+ def R = freeAlgebra(rr, d);
988
+ setring R;
989
+ ideal I = x*y-y*x-1, x*y-y*x-m*m, x*y-y*x-r*r, m*m-1, r*r-1,
990
+ m*m-r*r, m*y*m-Y, m*x*m-x*y, r*y*r-Y, r*x*r-X, m*r*m-r,
991
+ X*x-1, x*X-1, Y*y-1, y*Y-1;
992
+ I = simplify(I,2);
993
+ export(I);
994
+ if (baseringdef == 1) {setring save;}
995
+ return(R);
996
+ }
997
+ example
998
+ {
999
+ "EXAMPLE:"; echo = 2;
1000
+ def R = crystallographicGroupC2MM(5); setring R;
1001
+ I;
1002
+ }
1003
+
1004
+ proc crystallographicGroupP4(int d)
1005
+ "USAGE: crystallographicGroupP4(d); d an integer
1006
+ RETURN: ring
1007
+ NOTE: - the ring contains the ideal I, which contains the required relations
1008
+ - p4 group with the following presentation
1009
+ < x, y, r | [x, y] = r^4 = 1, r^(-1)*x*r = x^(-1), r^(-1)*x*r = y >
1010
+ - d gives the degreebound for the Letterplace ring
1011
+ "
1012
+ {
1013
+ if (d < 5){ERROR("Degreebound is to small for chosen example!");}
1014
+
1015
+ int baseringdef;
1016
+ if (defined(basering)) // if a basering is defined, it should be saved for later use
1017
+ {
1018
+ def save = basering;
1019
+ baseringdef = 1;
1020
+ }
1021
+ ring rr = 2,(x,y,r,X,Y),dp;
1022
+ def R = freeAlgebra(rr, d);
1023
+ setring R;
1024
+ ideal I = x*y-y*x-1, x*y-y*x-r*r*r*r, r*r*r*r-1,
1025
+ r*r*r*x*r-X, r*r*r*x*r-y,
1026
+ X*x-1, x*X-1, Y*y-1, y*Y-1;
1027
+ I = simplify(I,2);
1028
+ export(I);
1029
+ if (baseringdef == 1) {setring save;}
1030
+ return(R);
1031
+ }
1032
+ example
1033
+ {
1034
+ "EXAMPLE:"; echo = 2;
1035
+ def R = crystallographicGroupP4(5); setring R;
1036
+ I;
1037
+ }
1038
+
1039
+ proc crystallographicGroupP4MM(int d)
1040
+ "USAGE: crystallographicGroupP4MM(d); d an integer
1041
+ RETURN: ring
1042
+ NOTE: - the ring contains the ideal I, which contains the required relations
1043
+ - p4mm group with the following presentation
1044
+ < x, y, r, m | [x, y] = r^4 = m^2 = 1, r^(-1)*y*r = x^(-1), r^(-1)*x*r = y, m^(-1)*x*m = y, m^(-1)*r*m = r^(-1) >
1045
+ - d gives the degreebound for the Letterplace ring
1046
+ "
1047
+ {
1048
+ if (d < 5){ERROR("Degreebound is to small for chosen example!");}
1049
+
1050
+ int baseringdef;
1051
+ if (defined(basering)) // if a basering is defined, it should be saved for later use
1052
+ {
1053
+ def save = basering;
1054
+ baseringdef = 1;
1055
+ }
1056
+ ring rr = 2,(x,y,r,m,X,Y),dp;
1057
+ def R = freeAlgebra(rr, d);
1058
+ setring R;
1059
+ ideal I = x*y-y*x-1, x*y-y*x-r*r*r*r, r*r*r*r-1,
1060
+ r*r*r*x*r-X, r*r*r*x*r-y,
1061
+ X*x-1, x*X-1, Y*y-1, y*Y-1;
1062
+ I = simplify(I,2);
1063
+ export(I);
1064
+ if (baseringdef == 1) {setring save;}
1065
+ return(R);
1066
+ }
1067
+ example
1068
+ {
1069
+ "EXAMPLE:"; echo = 2;
1070
+ def R = crystallographicGroupP4MM(5); setring R;
1071
+ I;
1072
+ }
1073
+
1074
+ proc crystallographicGroupP4GM(int d)
1075
+ "USAGE: crystallographicGroupP4GM(d); d an integer
1076
+ RETURN: ring
1077
+ NOTE: - the ring contains the ideal I, which contains the required relations
1078
+ - p4gm group with the following presentation
1079
+ < x, y, r, t | [x, y] = r^4 = t^2 = 1, r^(-1)*y*r = x^(-1), r^(-1)*x*r = y, t^(-1)*x*t = y, t^(-1)*r*t = x^(-1)*r^(-1)>
1080
+ - d gives the degreebound for the Letterplace ring
1081
+ "
1082
+ {
1083
+ if (d < 5){ERROR("Degreebound is to small for chosen example!");}
1084
+
1085
+ int baseringdef;
1086
+ if (defined(basering)) // if a basering is defined, it should be saved for later use
1087
+ {
1088
+ def save = basering;
1089
+ baseringdef = 1;
1090
+ }
1091
+ ring rr = 2,(x,y,r,t,X,Y),dp;
1092
+ def R = freeAlgebra(rr, d);
1093
+ setring R;
1094
+ ideal I = x*y-y*x-1, x*y-y*x-r*r*r*r, r*r*r*r-1, x*y-y*x-t*t,
1095
+ t*t-1, r*r*r*r-t*t, r*r*r*y*r-X, r*r*r*x*r-y,
1096
+ t*r*t-X*r*r*r, X*x-1, x*X-1, Y*y-1, y*Y-1;
1097
+ I = simplify(I,2);
1098
+ export(I);
1099
+ if (baseringdef == 1) {setring save;}
1100
+ return(R);
1101
+ }
1102
+ example
1103
+ {
1104
+ "EXAMPLE:"; echo = 2;
1105
+ def R = crystallographicGroupP4GM(5); setring R;
1106
+ I;
1107
+ }
1108
+
1109
+ proc crystallographicGroupP3(int d)
1110
+ "USAGE: crystallographicGroupP3(d); d an integer
1111
+ RETURN: ring
1112
+ NOTE: - the ring contains the ideal I, which contains the required relations
1113
+ - p3 group with the following presentation
1114
+ < x, y, r | [x, y] = r^3 = 1, r^(-1)*x*r = x^(-1)*y, r^(-1)*y*r = x^(-1)>
1115
+ - d gives the degreebound for the Letterplace ring
1116
+ "
1117
+ {
1118
+ if (d < 4){ERROR("Degreebound is to small for chosen example!");}
1119
+
1120
+ int baseringdef;
1121
+ if (defined(basering)) // if a basering is defined, it should be saved for later use
1122
+ {
1123
+ def save = basering;
1124
+ baseringdef = 1;
1125
+ }
1126
+ ring rr = 2,(x,y,r,X,Y),dp;
1127
+ def R = freeAlgebra(rr, d);
1128
+ setring R;
1129
+ ideal I = x*y-y*x-1, x*y-y*x-r*r*r, r*r*r-1,
1130
+ r*r*x*r-X*y, r*r*y*r-X, X*x-1, x*X-1, Y*y-1, y*Y-1;
1131
+ I = simplify(I,2);
1132
+ export(I);
1133
+ if (baseringdef == 1) {setring save;}
1134
+ return(R);
1135
+ }
1136
+ example
1137
+ {
1138
+ "EXAMPLE:"; echo = 2;
1139
+ def R = crystallographicGroupP3(5); setring R;
1140
+ I;
1141
+ }
1142
+
1143
+ proc crystallographicGroupP31M(int d)
1144
+ "USAGE: crystallographicGroupP31M(d); d an integer
1145
+ RETURN: ring
1146
+ NOTE: - the ring contains the ideal I, which contains the required relations
1147
+ - p31m group with the following presentation
1148
+ < x, y, r, t | [x, y] = r^2 = t^2 = (t*r)^3 = 1, r^(-1)*x*r = x, t^(-1)*y*t = y, t^(-1)*x*t = x^(-1)*y, r^(-1)*y*r = x*y^(-1) >
1149
+ - d gives the degreebound for the Letterplace ring
1150
+ "
1151
+ {
1152
+ if (d < 6){ERROR("Degreebound is to small for chosen example!");}
1153
+
1154
+ int baseringdef;
1155
+ if (defined(basering)) // if a basering is defined, it should be saved for later use
1156
+ {
1157
+ def save = basering;
1158
+ baseringdef = 1;
1159
+ }
1160
+ ring rr = 2,(x,y,r,t,X,Y),dp;
1161
+ def R = freeAlgebra(rr, d);
1162
+ setring R;
1163
+ ideal I = x*y-y*x-1, x*y-y*x-r*r, x*y-y*x-t*t, r*r-1, t*t-1,
1164
+ t*r*t*r*t*r-1, r*r-t*t, x*y-y*x-t*r*t*r*t*r,
1165
+ t*r*t*r*t*r-r*r, t*r*t*r*t*r-t*t,
1166
+ r*x*r-x, t*y*t-y, t*x*t-X*y, r*y*r-x*Y,
1167
+ X*x-1, x*X-1, Y*y-1, y*Y-1;
1168
+ I = simplify(I,2);
1169
+ export(I);
1170
+ if (baseringdef == 1) {setring save;}
1171
+ return(R);
1172
+ }
1173
+ example
1174
+ {
1175
+ "EXAMPLE:"; echo = 2;
1176
+ def R = crystallographicGroupP31M(6); setring R;
1177
+ I;
1178
+ }
1179
+
1180
+ proc crystallographicGroupP3M1(int d)
1181
+ "USAGE: crystallographicGroupP3M1(d); d an integer
1182
+ RETURN: ring
1183
+ NOTE: - the ring contains the ideal I, which contains the required relations
1184
+ - p3m1 group with the following presentation
1185
+ < x, y, r, m | [x, y] = r^3 = m^2 = 1, m^(-1)*r*m = r^2, r^(-1)*x*r = x^(-1)*y, r^(-1)*y*r = x^(-1), m^(-1)*x*m = x^(-1), m^(-1)*y*m = x^(-1)*y >
1186
+ - d gives the degreebound for the Letterplace ring
1187
+ "
1188
+ {
1189
+ if (d < 4){ERROR("Degreebound is to small for chosen example!");}
1190
+
1191
+ int baseringdef;
1192
+ if (defined(basering)) // if a basering is defined, it should be saved for later use
1193
+ {
1194
+ def save = basering;
1195
+ baseringdef = 1;
1196
+ }
1197
+ ring rr = 2,(x,y,r,m,X,Y),dp;
1198
+ def R = freeAlgebra(rr, d);
1199
+ setring R;
1200
+ ideal I = x*y-y*x-1, x*y-y*x-r*r*r, x*y-y*x-m*m, r*r*r-1, m*m-1,
1201
+ r*r*r-m*m, m*r*m-r*r, r*r*x*r-X*y, r*r*y*r-X,m*x*m-X,
1202
+ m*y*m-X*y, X*x-1, x*X-1, Y*y-1, y*Y-1;
1203
+ I = simplify(I,2);
1204
+ export(I);
1205
+ if (baseringdef == 1) {setring save;}
1206
+ return(R);
1207
+ }
1208
+ example
1209
+ {
1210
+ "EXAMPLE:"; echo = 2;
1211
+ def R = crystallographicGroupP3M1(5); setring R;
1212
+ I;
1213
+ }
1214
+
1215
+ proc crystallographicGroupP6(int d)
1216
+ "USAGE: crystallographicGroupP6(d); d an integer
1217
+ RETURN: ring
1218
+ NOTE: - the ring contains the ideal I, which contains the required relations
1219
+ - p6 group with the following presentation
1220
+ < x, y, r | [x, y] = r^6 = 1, r^(-1)*x*r = y, r^(-1)*y*r = x^(-1)*y>
1221
+ - d gives the degreebound for the Letterplace ring
1222
+ "
1223
+ {
1224
+ if (d < 7){ERROR("Degreebound is to small for chosen example!");}
1225
+
1226
+ int baseringdef;
1227
+ if (defined(basering)) // if a basering is defined, it should be saved for later use
1228
+ {
1229
+ def save = basering;
1230
+ baseringdef = 1;
1231
+ }
1232
+ ring rr = 2,(x,y,r,X,Y),dp;
1233
+ def R = freeAlgebra(rr, d);
1234
+ setring R;
1235
+ ideal I = x*y-y*x-1, x*y-y*x-r*r*r*r*r*r, r*r*r*r*r*r-1,
1236
+ r*r*r*r*r*x*r-y, r*r*r*r*r*y*r-X*y,
1237
+ X*x-1, x*X-1, Y*y-1, y*Y-1;
1238
+ I = simplify(I,2);
1239
+ export(I);
1240
+ if (baseringdef == 1) {setring save;}
1241
+ return(R);
1242
+ }
1243
+ example
1244
+ {
1245
+ "EXAMPLE:"; echo = 2;
1246
+ def R = crystallographicGroupP6(7); setring R;
1247
+ I;
1248
+ }
1249
+
1250
+ proc crystallographicGroupP6MM(int d)
1251
+ "USAGE: crystallographicGroupP6MM(d); d an integer
1252
+ RETURN: ring
1253
+ NOTE: - the ring contains the ideal I, which contains the required relations
1254
+ - p6mm group with the following presentation
1255
+ < x, y, r, m | [x, y] = r^6 = m^2 = 1, r^(-1)*y*r = x^(-1)*y, r^(-1)*x*r = y, m^(-1)*x*m = x^(-1), m^(-1)*y*m = x^(-1)*y, m^(-1)*r*m = r^(-1)*y>
1256
+ - d gives the degreebound for the Letterplace ring
1257
+ "
1258
+ {
1259
+ if (d < 7){ERROR("Degreebound is to small for chosen example!");}
1260
+
1261
+ int baseringdef;
1262
+ if (defined(basering)) // if a basering is defined, it should be saved for later use
1263
+ {
1264
+ def save = basering;
1265
+ baseringdef = 1;
1266
+ }
1267
+ ring rr = 2,(x,y,r,m,X,Y),dp;
1268
+ def R = freeAlgebra(rr, d);
1269
+ setring R;
1270
+ ideal I = x*y-y*x-1, x*y-y*x-r*r*r*r*r*r, r*r*r*r*r*r-1,
1271
+ x*y-y*x-m*m, r*r*r*r*r*r-m*m, m*m-1, m*x*m-X, m*y*m-X*y,
1272
+ r*r*r*r*r*x*r-y, r*r*r*r*r*y*r-X*y, m*r*m- r*r*r*r*r*y,
1273
+ X*x-1, x*X-1, Y*y-1, y*Y-1;
1274
+ I = simplify(I,2);
1275
+ export(I);
1276
+ if (baseringdef == 1) {setring save;}
1277
+ return(R);
1278
+ }
1279
+ example
1280
+ {
1281
+ "EXAMPLE:"; echo = 2;
1282
+ def R = crystallographicGroupP6MM(7); setring R;
1283
+ I;
1284
+ }
1285
+
1286
+ ////////////////////////////////////////////////////////////////////
1287
+ // Dyck Group //////////////////////////////////////////////////////
1288
+ // from Grischa Studzinski /////////////////////////////////////////
1289
+ ////////////////////////////////////////////////////////////////////
1290
+
1291
+ proc dyckGroup1(int n, int d, intvec P)
1292
+ "USAGE: dyckGroup1(n,d,P); n an integer, d an integer, P an intvec
1293
+ RETURN: ring
1294
+ NOTE: - the ring contains the ideal I, which contains the required relations
1295
+ - The Dyck group with the following presentation
1296
+ < x_1, x_2, ... , x_n | (x_1)^p1 = (x_2)^p2 = ... = (x_n)^pn = x_1 * x_2 * ... * x_n = 1 >
1297
+ - negative exponents are allowed
1298
+ - representation in the form x_i^p_i - x_(i+1)^p_(i+1)
1299
+ - d gives the degreebound for the Letterplace ring
1300
+ - varying n and P produces a family of examples
1301
+ "
1302
+ {
1303
+ int baseringdef,i,j;
1304
+ if (n < 1) {ERROR("There must be at least one variable!");}
1305
+ if (d < n) {ERROR("Degreebound is to small!");}
1306
+ for (i = 1; i <= size(P); i++) {if (d < absValue(P[i])){ERROR("Degreebound is to small!");}}
1307
+
1308
+ if (defined(basering)) // if a basering is defined, it should be saved for later use
1309
+ {
1310
+ def save = basering;
1311
+ baseringdef = 1;
1312
+ }
1313
+ ring r = 2,(x(1..n),Y(1..n)),dp;
1314
+ def R = freeAlgebra(r, d);
1315
+ setring R;
1316
+ ideal I; poly p,q;
1317
+ p = 1; q = 1;
1318
+ for (i = 1; i<= n; i++) {p = p*var(i);}
1319
+ I = p-1;
1320
+ for (i = n; i > 0; i--)
1321
+ {
1322
+ if (P[i] >= 0) {for (j = 1; j <= P[i]; j++){q = q*var(i);}}
1323
+ else {for (j = 1; j <= -P[i]; j++){q = q*var(i+n);}}
1324
+ I = p - q,I;
1325
+ p = q; q = 1;
1326
+ }
1327
+
1328
+ I = simplify(I,2);
1329
+ export(I);
1330
+ if (baseringdef == 1) {setring save;}
1331
+ return(R);
1332
+ }
1333
+ example
1334
+ {
1335
+ "EXAMPLE:"; echo = 2;
1336
+ intvec P = 1,2,3;
1337
+ def R = dyckGroup1(3,5,P); setring R;
1338
+ I;
1339
+ }
1340
+
1341
+
1342
+ proc dyckGroup2(int n, int d, intvec P)
1343
+ "USAGE: dyckGroup2(n,d,P); n an integer, d an integer, P an intvec
1344
+ RETURN: ring
1345
+ NOTE: - the ring contains the ideal I, which contains the required relations
1346
+ - The Dyck group with the following presentation
1347
+ < x_1, x_2, ... , x_n | (x_1)^p1 = (x_2)^p2 = ... = (x_n)^pn = x_1 * x_2 * ... * x_n = 1 >
1348
+ - negative exponents are allowed
1349
+ - representation in the form x_i^p_i - 1
1350
+ - d gives the degreebound for the Letterplace ring
1351
+ - varying n and P produces a family of examples
1352
+ "
1353
+ {
1354
+ int baseringdef,i,j;
1355
+ if (n < 1) {ERROR("There must be at least one variable!");}
1356
+ if (d < n) {ERROR("Degreebound is to small!");}
1357
+ for (i = 1; i <= size(P); i++) {if (d < absValue(P[i])){ERROR("Degreebound is to small!");}}
1358
+
1359
+ if (defined(basering)) // if a basering is defined, it should be saved for later use
1360
+ {
1361
+ def save = basering;
1362
+ baseringdef = 1;
1363
+ }
1364
+ ring r = 2,(x(1..n),Y(1..n)),dp;
1365
+ def R = freeAlgebra(r, d);
1366
+ setring R;
1367
+ ideal I; poly p;
1368
+ p = 1;
1369
+ for (i = 1; i<= n; i++) {p = p*var(i);}
1370
+ I = p-1;
1371
+ for (i = n; i > 0; i--)
1372
+ {
1373
+ p = 1;
1374
+ if (P[i] >= 0) {for (j = 1; j <= P[i]; j++){p = p*var(i);}}
1375
+ else {for (j = 1; j <= -P[i]; j++){p = p*var(i+n);}}
1376
+ I = p - 1,I;
1377
+ }
1378
+
1379
+ I = simplify(I,2);
1380
+ export(I);
1381
+ if (baseringdef == 1) {setring save;}
1382
+ return(R);
1383
+ }
1384
+ example
1385
+ {
1386
+ "EXAMPLE:"; echo = 2;
1387
+ intvec P = 1,2,3;
1388
+ def R = dyckGroup2(3,5,P); setring R;
1389
+ I;
1390
+ }
1391
+
1392
+
1393
+
1394
+ proc dyckGroup3(int n, int d, intvec P)
1395
+ "USAGE: dyckGroup2(n,d,P); n an integer, d an integer, P an intvec
1396
+ RETURN: ring
1397
+ NOTE: - the ring contains the ideal I, which contains the required relations
1398
+ - The Dyck group with the following presentation
1399
+ < x_1, x_2, ... , x_n | (x_1)^p1 = (x_2)^p2 = ... = (x_n)^pn = x_1 * x_2 * ... * x_n = 1 >
1400
+ - only positive exponents are allowed
1401
+ - no inverse generators needed
1402
+ - d gives the degreebound for the Letterplace ring
1403
+ - varying n and P produces a family of examples
1404
+ "
1405
+ {
1406
+ int baseringdef,i,j;
1407
+ if (n < 1) {ERROR("There must be at least one variable!");}
1408
+ if (d < n) {ERROR("Degreebound is to small!");}
1409
+ for (i = 1; i <= size(P); i++) {if (P[i] < 0){ERROR("Exponents must be positive!");}}
1410
+ for (i = 1; i <= size(P); i++) {if (d < P[i]){ERROR("Degreebound is to small!");}}
1411
+
1412
+
1413
+ if (defined(basering)) // if a basering is defined, it should be saved for later use
1414
+ {
1415
+ def save = basering;
1416
+ baseringdef = 1;
1417
+ }
1418
+ ring r = 2,x(1..n),dp;
1419
+ def R = freeAlgebra(r, d);
1420
+ setring R;
1421
+ ideal I; poly p;
1422
+ p = 1;
1423
+ for (i = 1; i<= n; i++) {p = p*var(i);}
1424
+ I = p-1;
1425
+ for (i = n; i > 0; i--)
1426
+ {
1427
+ p = 1;
1428
+ for (j = 1; j <= P[i]; j++){p = p*var(i);}
1429
+ I = p - 1,I;
1430
+ }
1431
+
1432
+ I = simplify(I,2);
1433
+ export(I);
1434
+ if (baseringdef == 1) {setring save;}
1435
+ return(R);
1436
+ }
1437
+ example
1438
+ {
1439
+ "EXAMPLE:"; echo = 2;
1440
+ intvec P = 1,2,3;
1441
+ def R = dyckGroup3(3,5,P); setring R;
1442
+ I;
1443
+ }
1444
+
1445
+ ////////////////////////////////////////////////////////////////////
1446
+ // Fibonacci Group /////////////////////////////////////////////////
1447
+ // from Grischa Studzinski /////////////////////////////////////////
1448
+ ////////////////////////////////////////////////////////////////////
1449
+
1450
+ proc fibonacciGroup(int m, int d)
1451
+ "USAGE: fibonacciGroup(m,d); m an integer, d an integer
1452
+ RETURN: ring
1453
+ NOTE: - the ring contains the ideal I, which contains the required relations
1454
+ - The Fibonacci group F(2, m) with the following presentation
1455
+ < x_1, x_2, ... , x_m | x_i * x_(i + 1) = x_(i + 2) >
1456
+ - d gives the degreebound for the Letterplace ring
1457
+ - varying m produces a family of examples
1458
+ "
1459
+ {
1460
+ // TODO: basefield Q oder F2?
1461
+ // TODO: inverse Elemente!
1462
+ if (m < 3) {ERROR("At least three generators are required!");}
1463
+ if (d < 2) {ERROR("Degree bound must be at least 2!");}
1464
+ int baseringdef,i;
1465
+ if (defined(basering)) // if a basering is defined, it should be saved for later use
1466
+ {
1467
+ def save = basering;
1468
+ baseringdef = 1;
1469
+ }
1470
+ ring r = 2,(x(1..m),Y(1..m)),dp;
1471
+ def R = freeAlgebra(r, d);
1472
+ setring R;
1473
+ ideal I; poly p;
1474
+ for (i = 1; i < m-1; i++)
1475
+ {
1476
+ p = var(i)*var(i+1)-var(i+2);
1477
+ I = I,p;
1478
+ }
1479
+ for (i = 1; i <= m; i++)
1480
+ {
1481
+ p = var(i)*var(i+m)-1;
1482
+ I = I,p;
1483
+ p = var(i+m)*var(i)-1;
1484
+ I = I,p;
1485
+ }
1486
+ I = simplify(I,2);
1487
+ export(I);
1488
+ if (baseringdef == 1) {setring save;}
1489
+ return(R);
1490
+ }
1491
+ example
1492
+ {
1493
+ "EXAMPLE:"; echo = 2;
1494
+ def R = fibonacciGroup(3,5); setring R;
1495
+ I;
1496
+ }
1497
+
1498
+
1499
+ ////////////////////////////////////////////////////////////////////
1500
+ // Tetrahedron Groups ///////////////////////////////////////////////
1501
+ // from Grischa Studzinski /////////////////////////////////////////
1502
+ ////////////////////////////////////////////////////////////////////
1503
+
1504
+ proc tetrahedronGroup(int g, int d)
1505
+ "USAGE: tetrahedronGroup(g,d); g an integer, d an integer
1506
+ RETURN: ring
1507
+ NOTE: - the ring contains the ideal I, which contains the required relations
1508
+ - g gives the number of the example (1 - 5)
1509
+ - d gives the degreebound for the Letterplace ring
1510
+ - varying g produces a family of examples
1511
+
1512
+ The examples are found in ``Classification of the finite generalized tetrahedron groups''
1513
+ by Gerhard Rosenberger and Martin Scheer.
1514
+ The 5 examples originate from Proposition 1.9 and describe
1515
+ finite generalized tetrahedron group in the Tsaranov-case, which are
1516
+ not equivalent to a presentation for an ordinary tetrahedron group.
1517
+ "
1518
+ {
1519
+ if (g < 1 || g > 5) {ERROR("There are only 5 examples!");}
1520
+ if ((g == 1 && d < 6)||(g == 2 && d < 6)||(g == 3 && d < 5)||(g == 4 && d < 4)||(g == 5 && d < 5))
1521
+ {ERROR("Degreebound is to small for chosen example!");}
1522
+
1523
+ int baseringdef,i,j;
1524
+ if (defined(basering)) // if a basering is defined, it should be saved for later use
1525
+ {
1526
+ def save = basering;
1527
+ baseringdef = 1;
1528
+ }
1529
+ ring r = 2,(x,y,z),dp;
1530
+ def R = freeAlgebra(r, d);
1531
+ setring R;
1532
+ ideal I;
1533
+ if (g == 1)
1534
+ {I = x*x*x*x*x-1, y*y-1, z*z*z-1, x*y*x*y*x*y-1, x*x*z*x*x*z-1,
1535
+ y*z*y*z-1;
1536
+ }
1537
+ if (g == 2)
1538
+ {I = x*x*x-1, y*y*y-1, z*z*z*z*z-1,x*y*x*y-1,x*z*x*z-1,
1539
+ y*z*z*y*z*z-1;
1540
+ }
1541
+ if (g == 3)
1542
+ {I = x*x*x-1, y*y*y-1, z*z*z-1, x*y*x*y-1, x*z*x*z-1, y*z*y*z-1;
1543
+ }
1544
+ if (g == 4)
1545
+ {I = x*x*x-1, y*y*y-1, z*z*z*z-1,x*y*x*y-1, x*z*x*z-1, y*z*y*z-1;
1546
+ }
1547
+ if (g ==5)
1548
+ {I = x*x*x-1, y*y*y-1, z*z*z*z*z-1,x*y*x*y-1, x*z*x*z-1, y*z*y*z-1;
1549
+ }
1550
+
1551
+ I = simplify(I,2);
1552
+ export(I);
1553
+ if (baseringdef == 1) {setring save;}
1554
+ return(R);
1555
+ }
1556
+ example
1557
+ {
1558
+ "EXAMPLE:"; echo = 2;
1559
+ def R = tetrahedronGroup(3,5); setring R;
1560
+ I;
1561
+ }
1562
+
1563
+
1564
+ ////////////////////////////////////////////////////////////////////
1565
+ // Triangular Groups ///////////////////////////////////////////////
1566
+ // from Grischa Studzinski /////////////////////////////////////////
1567
+ ////////////////////////////////////////////////////////////////////
1568
+
1569
+ proc triangularGroup(int g, int d)
1570
+ "USAGE: triangularGroup(g,d); g an integer, d an integer
1571
+ RETURN: ring
1572
+ NOTE: - the ring contains the ideal I, which contains the required relations
1573
+ - g gives the number of the example (1 - 14)
1574
+ - d gives the degreebound for the Letterplace ring
1575
+ - varying g produces a family of examples
1576
+
1577
+ The examples are found in
1578
+ Classification of the finite generalized tetrahedron groups
1579
+ by Gerhard Rosenberger and Martin Scheer.
1580
+ The 14 examples are denoted in theorem 2.12
1581
+ "
1582
+ {
1583
+ if (g < 1 || g > 14) {ERROR("There are only 14 examples!");}
1584
+ if ((g == 1 && d < 20)||(g == 2 && d < 21)||(g == 3 && d < 10)||(g == 4 && d < 12)||(g == 5 && d < 10)||(g == 6 && d < 18)||(g == 7 && d < 20)||(g == 8 && d < 16)||(g == 9 && d < 10)||(g == 10 && d < 14)||(g == 11 && d < 16)||(g == 12 && d < 24)||(g == 13 && d < 28)||(g == 14 && d < 37))
1585
+ {ERROR("Degreebound is to small for chosen example!");}
1586
+
1587
+ int baseringdef;
1588
+ if (defined(basering)) // if a basering is defined, it should be saved for later use
1589
+ {
1590
+ def save = basering;
1591
+ baseringdef = 1;
1592
+ }
1593
+ ring r = 2,(a,b),dp;
1594
+ def R = freeAlgebra(r, d);
1595
+ setring R;
1596
+ ideal I;
1597
+
1598
+ if (g == 1)
1599
+ {I = a*a-1, b*b*b-1,
1600
+ a*b*a*b*a*b*b*a*b*b*a*b*a*b*a*b*b*a*b*b-1;
1601
+ }
1602
+ if (g == 2)
1603
+ {I = a*a-1, b*b*b-1,
1604
+ a*b*a*b*a*b*b*a*b*a*b*a*b*b*a*b*a*b*a*b*b-1;
1605
+ }
1606
+ if (g == 3)
1607
+ {I = a*a*a-1, b*b*b-1,
1608
+ a*b*a*b*b*a*b*a*b*b-1;
1609
+ }
1610
+ if (g == 4)
1611
+ {I = a*a*a-1, b*b*b-1,
1612
+ a*b*a*a*b*b*a*b*a*a*b*b-1;
1613
+ }
1614
+ if (g == 5)
1615
+ {I = a*a-1, b*b*b*b*b-1,
1616
+ a*b*a*b*b*a*b*a*b*b-1;
1617
+ }
1618
+ if (g == 6)
1619
+ {I = a*a-1, b*b*b*b*b-1,
1620
+ a*b*a*b*a*b*b*b*b*a*b*a*b*a*b*b*b*b-1;
1621
+ }
1622
+ if (g == 7)
1623
+ {I = a*a-1, b*b*b*b*b-1,
1624
+ a*b*a*b*b*a*b*b*b*b*a*b*a*b*b*a*b*b*b*b-1;
1625
+ }
1626
+ if (g == 8)
1627
+ {I = a*a-1, b*b*b*b-1,
1628
+ a*b*a*b*a*b*b*b*a*b*a*b*a*b*b*b-1;
1629
+ }
1630
+ if (g == 9)
1631
+ {I = a*a-1, b*b*b-1,
1632
+ a*b*a*b*b*a*b*a*b*b-1;
1633
+ }
1634
+ if (g == 10)
1635
+ {I = a*a-1, b*b*b-1,
1636
+ a*b*a*b*a*b*b*a*b*a*b*a*b*b-1;
1637
+ }
1638
+ if (g == 11)
1639
+ {I = a*a-1, b*b*b-1,
1640
+ a*b*a*b*a*b*a*b*b*a*b*a*b*a*b*b-1;
1641
+ }
1642
+ if (g == 12)
1643
+ {I = a*a-1, b*b*b-1,
1644
+ a*b*a*b*a*b*b*a*b*a*b*b*a*b*a*b*a*b*b*a*b*a*b*b-1;
1645
+ }
1646
+ if (g == 13)
1647
+ {I = a*a-1, b*b*b-1,
1648
+ a*b*a*b*a*b*a*b*a*b*b*a*b*b*a*b*a*b*a*b*a*b*a*b*b*a*b*b-1;
1649
+ }
1650
+ if (g == 14)
1651
+ {I = a*a-1, b*b*b-1,
1652
+ a*b*a*b*a*b*a*b*b*a*b*b*a*b*a*b*b*a*b*b*a*b*a*b*a*b*a*b*b*a*b*a*b*b*a*b*b-1;
1653
+ }
1654
+
1655
+ I = simplify(I,2);
1656
+ export(I);
1657
+ if (baseringdef == 1) {setring save;}
1658
+ return(R);
1659
+ }
1660
+ example
1661
+ {
1662
+ "EXAMPLE:"; echo = 2;
1663
+ def R = triangularGroup(3,10); setring R;
1664
+ I;
1665
+ }
1666
+