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,980 @@
1
+ ///////////////////////////////////////////////////////////////////
2
+ version="version involut.lib 4.1.2.0 Feb_2019 "; // $Id: e853d9b62c484f96d0a44f5f6b0ff79da47e36e2 $
3
+ category="Noncommutative";
4
+ info="
5
+ LIBRARY: involut.lib Computations and operations with involutions
6
+ AUTHORS: Oleksandr Iena, yena@mathematik.uni-kl.de,
7
+ @* Markus Becker, mbecker@mathematik.uni-kl.de,
8
+ @* Viktor Levandovskyy, levandov@mathematik.uni-kl.de
9
+
10
+ OVERVIEW:
11
+ Involution is an anti-automorphism of a non-commutative K-algebra
12
+ with the property that applied an involution twice, one gets an identity.
13
+ Involution is linear with respect to the ground field. In this library we
14
+ compute linear involutions, distinguishing the case of a diagonal matrix
15
+ (such involutions are called homothetic) and a general one.
16
+ Also, linear automorphisms of different order can be computed.
17
+
18
+ SUPPORT: Forschungsschwerpunkt 'Mathematik und Praxis' (Project of Dr. E. Zerz
19
+ and V. Levandovskyy), Uni Kaiserslautern
20
+
21
+ REMARK: This library provides algebraic tools for computations and operations
22
+ with algebraic involutions and linear automorphisms of non-commutative algebras
23
+
24
+ PROCEDURES:
25
+ findInvo(); computes linear involutions on a basering;
26
+ findInvoDiag(); computes homothetic (diagonal) involutions on a basering;
27
+ findAuto(n); computes linear automorphisms of order n of a basering;
28
+ ncdetection(); computes an ideal, presenting an involution map on some particular noncommutative algebras;
29
+ involution(m,theta); applies the involution to an object;
30
+ isInvolution(F); check whether a map F in an involution;
31
+ isAntiEndo(F); check whether a map F in an antiendomorphism.
32
+ ";
33
+
34
+ LIB "nctools.lib";
35
+ LIB "ncalg.lib";
36
+ LIB "polylib.lib";
37
+ LIB "primdec.lib";
38
+ LIB "ring.lib";
39
+ ///////////////////////////////////////////////////////////////////////////////
40
+ proc ncdetection()
41
+ "USAGE: ncdetection();
42
+ RETURN: ideal, representing an involution map
43
+ PURPOSE: compute classical involutions (i.e. acting rather on operators than on variables) for some particular noncommutative algebras
44
+ ASSUME: the procedure is aimed at non-commutative algebras with differential, shift or advance operators arising in Control Theory.
45
+ It has to be executed in a ring.
46
+ EXAMPLE: example ncdetection; shows an example
47
+ "{
48
+ // in this procedure an involution map is generated from the NCRelations
49
+ // that will be used in the function involution
50
+ // in dieser proc. wird eine matrix erzeugt, die in der i-ten zeile die indices
51
+ // der differential-, shift- oder advance-operatoren enthaelt mit denen die i-te
52
+ // variable nicht kommutiert.
53
+ if ( nameof(basering)=="basering" )
54
+ {
55
+ "No current ring defined.";
56
+ return(ideal(0));
57
+ }
58
+ def r = basering;
59
+ setring r;
60
+ int i,j,k,LExp;
61
+ int NVars = nvars(r);
62
+ matrix rel = ncRelations(r)[2];
63
+ intmat M[NVars][3];
64
+ int NRows = nrows(rel);
65
+ intvec v,w;
66
+ poly d,d_lead;
67
+ ideal I;
68
+ map theta;
69
+ for( j=NRows; j>=2; j-- )
70
+ {
71
+ if( rel[j] == w ) //the whole column is zero
72
+ {
73
+ j--;
74
+ continue;
75
+ }
76
+ for( i=1; i<j; i++ )
77
+ {
78
+ if( rel[i,j]==1 ) //relation of type var(j)*var(i) = var(i)*var(j) +1
79
+ {
80
+ M[i,1]=j;
81
+ }
82
+ if( rel[i,j] == -1 ) //relation of type var(i)*var(j) = var(j)*var(i) -1
83
+ {
84
+ M[j,1]=i;
85
+ }
86
+ d = rel[i,j];
87
+ d_lead = lead(d);
88
+ v = leadexp(d_lead); //in the next lines we check whether we have a relation of differential or shift type
89
+ LExp=0;
90
+ for(k=1; k<=NVars; k++)
91
+ {
92
+ LExp = LExp + v[k];
93
+ }
94
+ // if( (d-d_lead != 0) || (LExp > 1) )
95
+ if ( ( (d-d_lead) != 0) || (LExp > 1) || ( (LExp==0) && ((d_lead>1) || (d_lead<-1)) ) )
96
+ {
97
+ return(theta);
98
+ }
99
+
100
+ if( v[j] == 1) //relation of type var(j)*var(i) = var(i)*var(j) -lambda*var(j)
101
+ {
102
+ if (leadcoef(d) < 0)
103
+ {
104
+ M[i,2] = j;
105
+ }
106
+ else
107
+ {
108
+ M[i,3] = j;
109
+ }
110
+ }
111
+ if( v[i]==1 ) //relation of type var(j)*var(i) = var(i)*var(j) -lambda*var(i)
112
+ {
113
+ if (leadcoef(d) > 0)
114
+ {
115
+ M[j,2] = i;
116
+ }
117
+ else
118
+ {
119
+ M[j,3] = i;
120
+ }
121
+ }
122
+ }
123
+ }
124
+ // from here on, the map is computed
125
+ for(i=1;i<=NVars;i++)
126
+ {
127
+ I=I+var(i);
128
+ }
129
+
130
+ for(i=1;i<=NVars;i++)
131
+ {
132
+ if( M[i,1..3]==(0,0,0) )
133
+ {
134
+ i++;
135
+ continue;
136
+ }
137
+ if( M[i,1]!=0 )
138
+ {
139
+ if( (M[i,2]!=0) && (M[i,3]!=0) )
140
+ {
141
+ I[M[i,1]] = -var(M[i,1]);
142
+ I[M[i,2]] = var(M[i,3]);
143
+ I[M[i,3]] = var(M[i,2]);
144
+ }
145
+ if( (M[i,2]==0) && (M[i,3]==0) )
146
+ {
147
+ I[M[i,1]] = -var(M[i,1]);
148
+ }
149
+ if( ( (M[i,2]!=0) && (M[i,3]==0) )|| ( (M[i,2]!=0) && (M[i,3]==0) )
150
+ )
151
+ {
152
+ I[i] = -var(i);
153
+ }
154
+ }
155
+ else
156
+ {
157
+ if( (M[i,2]!=0) && (M[i,3]!=0) )
158
+ {
159
+ I[i] = -var(i);
160
+ I[M[i,2]] = var(M[i,3]);
161
+ I[M[i,3]] = var(M[i,2]);
162
+ }
163
+ else
164
+ {
165
+ I[i] = -var(i);
166
+ }
167
+ }
168
+ }
169
+ return(I);
170
+ }
171
+ example
172
+ {
173
+ "EXAMPLE:"; echo = 2;
174
+ ring R = 0,(x,y,z,D(1..3)),dp;
175
+ matrix D[6][6];
176
+ D[1,4]=1; D[2,5]=1; D[3,6]=1;
177
+ def r = nc_algebra(1,D); setring r;
178
+ ncdetection();
179
+ kill r, R;
180
+ //----------------------------------------
181
+ ring R=0,(x,S),dp;
182
+ def r = nc_algebra(1,-S); setring r;
183
+ ncdetection();
184
+ kill r, R;
185
+ //----------------------------------------
186
+ ring R=0,(x,D(1),S),dp;
187
+ matrix D[3][3];
188
+ D[1,2]=1; D[1,3]=-S;
189
+ def r = nc_algebra(1,D); setring r;
190
+ ncdetection();
191
+ }
192
+
193
+ static proc In_Poly(poly mm, list l, int NVars)
194
+ // applies the involution to the polynomial mm
195
+ // entries of a list l are images of variables under invo
196
+ // more general than invo_poly; used in many rings setting
197
+ {
198
+ int i,j;
199
+ intvec v;
200
+ poly pp, zz;
201
+ poly nn = 0;
202
+ i = 1;
203
+ while(mm[i]!=0)
204
+ {
205
+ v = leadexp(mm[i]);
206
+ zz = 1;
207
+ for( j=NVars; j>=1; j--)
208
+ {
209
+ if (v[j]!=0)
210
+ {
211
+ pp = l[j];
212
+ zz = zz*(pp^v[j]);
213
+ }
214
+ }
215
+ nn = nn + (leadcoef(mm[i])*zz);
216
+ i++;
217
+ }
218
+ return(nn);
219
+ }
220
+
221
+ static proc Hom_Poly(poly mm, list l, int NVars)
222
+ // applies the endomorphism to the polynomial mm
223
+ // entries of a list l are images of variables under endo
224
+ // should not be replaced by map-based stuff! used in
225
+ // many rings setting
226
+ {
227
+ int i,j;
228
+ intvec v;
229
+ poly pp, zz;
230
+ poly nn = 0;
231
+ i = 1;
232
+ while(mm[i]!=0)
233
+ {
234
+ v = leadexp(mm[i]);
235
+ zz = 1;
236
+ for( j=NVars; j>=1; j--)
237
+ {
238
+ if (v[j]!=0)
239
+ {
240
+ pp = l[j];
241
+ zz = (pp^v[j])*zz;
242
+ }
243
+ }
244
+ nn = nn + (leadcoef(mm[i])*zz);
245
+ i++;
246
+ }
247
+ return(nn);
248
+ }
249
+
250
+ static proc invo_poly(poly m, map theta)
251
+ // applies the involution map theta to m, where m=polynomial
252
+ {
253
+ // compatibility:
254
+ ideal l = ideal(theta);
255
+ int i;
256
+ list L;
257
+ for (i=1; i<=size(l); i++)
258
+ {
259
+ L[i] = l[i];
260
+ }
261
+ int nv = nvars(basering);
262
+ return (In_Poly(m,L,nv));
263
+ // if (m==0) { return(m); }
264
+ // int i,j;
265
+ // intvec v;
266
+ // poly p,z;
267
+ // poly n = 0;
268
+ // i = 1;
269
+ // while(m[i]!=0)
270
+ // {
271
+ // v = leadexp(m[i]);
272
+ // z =1;
273
+ // for(j=nvars(basering); j>=1; j--)
274
+ // {
275
+ // if (v[j]!=0)
276
+ // {
277
+ // p = var(j);
278
+ // p = theta(p);
279
+ // z = z*(p^v[j]);
280
+ // }
281
+ // }
282
+ // n = n + (leadcoef(m[i])*z);
283
+ // i++;
284
+ // }
285
+ // return(n);
286
+ }
287
+ ///////////////////////////////////////////////////////////////////////////////////
288
+ proc involution(def m, map theta)
289
+ "USAGE: involution(m, theta); m is a poly/vector/ideal/matrix/module, theta is a map
290
+ RETURN: object of the same type as m
291
+ PURPOSE: applies the involution, presented by theta to the object m
292
+ THEORY: for an involution theta and two polynomials a,b from the algebra,
293
+ @* theta(ab) = theta(b) theta(a); theta is linear with respect to the ground field
294
+ NOTE: This is generalized ''theta(m)'' for data types unsupported by ''map''.
295
+ EXAMPLE: example involution; shows an example
296
+ "{
297
+ // applies the involution map theta to m,
298
+ // where m= vector, polynomial, module, matrix, ideal
299
+ int i,j;
300
+ intvec v;
301
+ poly p,z;
302
+ if (typeof(m)=="poly")
303
+ {
304
+ return (invo_poly(m,theta));
305
+ }
306
+ if ( typeof(m)=="ideal" )
307
+ {
308
+ ideal n;
309
+ for (i=1; i<=size(m); i++)
310
+ {
311
+ n[i] = invo_poly(m[i], theta);
312
+ }
313
+ return(n);
314
+ }
315
+ if (typeof(m)=="vector")
316
+ {
317
+ for(i=1; i<=size(m); i++)
318
+ {
319
+ m[i] = invo_poly(m[i], theta);
320
+ }
321
+ return (m);
322
+ }
323
+ if ( (typeof(m)=="matrix") || (typeof(m)=="module"))
324
+ {
325
+ matrix n = matrix(m);
326
+ int @R=nrows(n);
327
+ int @C=ncols(n);
328
+ for(i=1; i<=@R; i++)
329
+ {
330
+ for(j=1; j<=@C; j++)
331
+ {
332
+ if (m[i,j]!=0)
333
+ {
334
+ n[i,j] = invo_poly( m[i,j], theta);
335
+ }
336
+ }
337
+ }
338
+ if (typeof(m)=="module")
339
+ {
340
+ return (module(n));
341
+ }
342
+ else // matrix
343
+ {
344
+ return(n);
345
+ }
346
+ }
347
+ // if m is not of the supported type:
348
+ "Error: unsupported argument type!";
349
+ return();
350
+ }
351
+ example
352
+ {
353
+ "EXAMPLE:";echo = 2;
354
+ ring R = 0,(x,d),dp;
355
+ def r = nc_algebra(1,1); setring r; // Weyl-Algebra
356
+ map F = r,x,-d;
357
+ F(F); // should be maxideal(1) for an involution
358
+ poly f = x*d^2+d;
359
+ poly If = involution(f,F);
360
+ f-If;
361
+ poly g = x^2*d+2*x*d+3*x+7*d;
362
+ poly tg = -d*x^2-2*d*x+3*x-7*d;
363
+ poly Ig = involution(g,F);
364
+ tg-Ig;
365
+ ideal I = f,g;
366
+ ideal II = involution(I,F);
367
+ II;
368
+ matrix(I) - involution(II,F);
369
+ module M = [f,g,0],[g,0,x^2*d];
370
+ module IM = involution(M,F);
371
+ print(IM);
372
+ print(matrix(M) - involution(IM,F));
373
+ }
374
+ ///////////////////////////////////////////////////////////////////////////////////
375
+ static proc new_var()
376
+ //generates a string of new variables
377
+ {
378
+
379
+ int NVars=nvars(basering);
380
+ int i,j;
381
+ // string s="@_1_1";
382
+ string s="a11";
383
+ for(i=1; i<=NVars; i++)
384
+ {
385
+ for(j=1; j<=NVars; j++)
386
+ {
387
+ if(i*j!=1)
388
+ {
389
+ s = s+ ","+NVAR(i,j);
390
+ }
391
+ }
392
+ }
393
+ return(s);
394
+ }
395
+
396
+ static proc NVAR(int i, int j)
397
+ {
398
+ // return("@_"+string(i)+"_"+string(j));
399
+ return("a"+string(i)+string(j));
400
+ }
401
+ ///////////////////////////////////////////////////////////////////////////////////
402
+ static proc new_var_special()
403
+ //generates a string of new variables
404
+ {
405
+ int NVars=nvars(basering);
406
+ int i;
407
+ // string s="@_1_1";
408
+ string s="a11";
409
+ for(i=2; i<=NVars; i++)
410
+ {
411
+ s = s+ ","+NVAR(i,i);
412
+ }
413
+ return(s);
414
+ }
415
+ ///////////////////////////////////////////////////////////////////////////////////
416
+ static proc RelMatr()
417
+ // returns the matrix of relations
418
+ // only Lie-type relations x_j x_i= x_i x_j + .. are taken into account
419
+ {
420
+ int i,j;
421
+ int NVars = nvars(basering);
422
+ matrix Rel[NVars][NVars];
423
+ for(i=1; i<NVars; i++)
424
+ {
425
+ for(j=i+1; j<=NVars; j++)
426
+ {
427
+ Rel[i,j]=var(j)*var(i)-var(i)*var(j);
428
+ }
429
+ }
430
+ return(Rel);
431
+ }
432
+ /////////////////////////////////////////////////////////////////
433
+ proc findInvo()
434
+ "USAGE: findInvo();
435
+ RETURN: a ring containing a list L of pairs, where
436
+ @* L[i][1] = ideal; a Groebner Basis of an i-th associated prime,
437
+ @* L[i][2] = matrix, defining a linear map, with entries, reduced with respect to L[i][1]
438
+ PURPOSE: computed the ideal of linear involutions of the basering
439
+ ASSUME: the relations on the algebra are of the form YX = XY + D, that is
440
+ the current ring is a G-algebra of Lie type.
441
+ NOTE: for convenience, the full ideal of relations @code{idJ}
442
+ and the initial matrix with indeterminates @code{matD} are exported in the output ring
443
+ SEE ALSO: findInvoDiag, involution
444
+ EXAMPLE: example findInvo; shows examples
445
+
446
+ "{
447
+ def @B = basering; //save the name of basering
448
+ int NVars = nvars(@B); //number of variables in basering
449
+ int i, j;
450
+
451
+ // check basering is of Lie type:
452
+ if (!isLieType())
453
+ {
454
+ ERROR("Assume violated: basering is of non-Lie type");
455
+ }
456
+
457
+ matrix Rel = RelMatr(); //the matrix of relations
458
+
459
+ string @ss = new_var(); //string of new variables
460
+ string Par = parstr(@B); //string of parameters in old ring
461
+
462
+ if (Par=="") // if there are no parameters
463
+ {
464
+ ring @@@KK = create_ring(0, "("+varstr(@B)+","+@ss+")", "dp"); //new ring with new variables
465
+ }
466
+ else //if there exist parameters
467
+ {
468
+ ring @@@KK = create_ring("(0,"+Par+")", "("+varstr(@B)+","+@ss+")", "dp"); //new ring with new variables
469
+ }
470
+
471
+ matrix Rel = imap(@B, Rel); //consider the matrix of relations in new ring
472
+
473
+ int Sz = NVars*NVars+NVars; // number of variables in new ring
474
+
475
+ matrix M[Sz][Sz]; //to be the matrix of relations in new ring
476
+
477
+ for(i=1; i<NVars; i++) //initialize that matrix of relations
478
+ {
479
+ for(j=i+1; j<=NVars; j++)
480
+ {
481
+ M[i,j] = Rel[i,j];
482
+ }
483
+ }
484
+
485
+ def @@K = nc_algebra(1, M); setring @@K; //now new ring @@K become a noncommutative ring
486
+
487
+ list l; //list to define an involution
488
+ poly @@F;
489
+ for(i=1; i<=NVars; i++) //initializing list for involution
490
+ {
491
+ @@F=0;
492
+ for(j=1; j<=NVars; j++)
493
+ {
494
+ execute( "@@F = @@F+"+NVAR(i,j)+"*"+string( var(j) )+";" );
495
+ }
496
+ l=l+list(@@F);
497
+ }
498
+
499
+ matrix N = imap(@@@KK,Rel);
500
+
501
+ for(i=1; i<NVars; i++)//get matrix by applying the involution to relations
502
+ {
503
+ for(j=i+1; j<=NVars; j++)
504
+ {
505
+ N[i,j]= l[j]*l[i] - l[i]*l[j] + In_Poly( N[i,j], l, NVars);
506
+ }
507
+ }
508
+ kill l;
509
+ //---------------------------------------------
510
+ //get the ideal of coefficients of N
511
+ ideal J;
512
+ ideal idN = simplify(ideal(N),2);
513
+ J = ideal(coeffs( idN, var(1) ) );
514
+ for(i=2; i<=NVars; i++)
515
+ {
516
+ J = ideal( coeffs( J, var(i) ) );
517
+ }
518
+ J = simplify(J,2);
519
+ //-------------------------------------------------
520
+ if ( Par=="" ) //initializes the ring of relations
521
+ {
522
+ ring @@KK = create_ring(0, "("+@ss+")", "dp");
523
+ }
524
+ else
525
+ {
526
+ ring @@KK = create_ring("(0,"+Par+")", "("+@ss+")", "dp");
527
+ }
528
+ ideal J = imap(@@K,J); // ideal, considered in @@KK now
529
+ string snv = "["+string(NVars)+"]";
530
+ execute("matrix @@D"+snv+snv+"="+@ss+";"); // matrix with entries=new variables
531
+
532
+ J = J, ideal( @@D*@@D-matrix( freemodule(NVars) ) ); // add the condition that involution to square is just identity
533
+ J = simplify(J,2); // without extra zeros
534
+ list mL = minAssGTZ(J); // components not in GB
535
+ int sL = size(mL);
536
+ intvec saveopt=option(get);
537
+ option(redSB); // important for reduced GBs
538
+ option(redTail);
539
+ matrix IM = @@D; // involution map
540
+ list L = list(); // the answer
541
+ list TL;
542
+ ideal tmp = 0;
543
+ for (i=1; i<=sL; i++) // compute GBs of components
544
+ {
545
+ TL = list();
546
+ TL[1] = std(mL[i]);
547
+ tmp = NF( ideal(IM), TL[1] );
548
+ TL[2] = matrix(tmp, NVars,NVars);
549
+ L[i] = TL;
550
+ }
551
+ export(L); // main export
552
+ ideal idJ = J; // debug-comfortable exports
553
+ matrix matD = @@D;
554
+ export(idJ);
555
+ export(matD);
556
+ option(set,saveopt);
557
+ return(@@KK);
558
+ }
559
+ example
560
+ { "EXAMPLE:"; echo = 2;
561
+ def a = makeWeyl(1);
562
+ setring a; // this algebra is a first Weyl algebra
563
+ a;
564
+ def X = findInvo();
565
+ setring X; // ring with new variables, corr. to unknown coefficients
566
+ X;
567
+ L;
568
+ // look at the matrix in the new variables, defining the linear involution
569
+ print(L[1][2]);
570
+ L[1][1]; // where new variables obey these relations
571
+ idJ;
572
+ }
573
+ ///////////////////////////////////////////////////////////////////////////
574
+ proc findInvoDiag()
575
+ "USAGE: findInvoDiag();
576
+ RETURN: a ring together with a list of pairs L, where
577
+ @* L[i][1] = ideal; a Groebner Basis of an i-th associated prime,
578
+ @* L[i][2] = matrix, defining a linear map, with entries, reduced with respect to L[i][1]
579
+ PURPOSE: compute homothetic (diagonal) involutions of the basering
580
+ ASSUME: the relations on the algebra are of the form YX = XY + D, that is
581
+ the current ring is a G-algebra of Lie type.
582
+ NOTE: for convenience, the full ideal of relations @code{idJ}
583
+ and the initial matrix with indeterminates @code{matD} are exported in the output ring
584
+ SEE ALSO: findInvo, involution
585
+ EXAMPLE: example findInvoDiag; shows examples
586
+ "{
587
+ def @B = basering; //save the name of basering
588
+ int NVars = nvars(@B); //number of variables in basering
589
+ int i, j;
590
+
591
+ // check basering is of Lie type:
592
+ if (!isLieType())
593
+ {
594
+ ERROR("Assume violated: basering is of non-Lie type");
595
+ }
596
+
597
+ matrix Rel = RelMatr(); //the matrix of relations
598
+
599
+ string @ss = new_var_special(); //string of new variables
600
+ string Par = parstr(@B); //string of parameters in old ring
601
+
602
+ if (Par=="") // if there are no parameters
603
+ {
604
+ ring @@@KK = create_ring(0, "("+varstr(@B)+","+@ss+")", "dp"); //new ring with new variables
605
+ }
606
+ else //if there exist parameters
607
+ {
608
+ ring @@@KK = create_ring("(0,"+Par+")", "("+varstr(@B)+","+@ss+")", "dp"); //new ring with new variables
609
+ }
610
+
611
+ matrix Rel = imap(@B, Rel); //consider the matrix of relations in new ring
612
+
613
+ int Sz = 2*NVars; // number of variables in new ring
614
+
615
+ matrix M[Sz][Sz]; //to be the matrix of relations in new ring
616
+ for(i=1; i<NVars; i++) //initialize that matrix of relations
617
+ {
618
+ for(j=i+1; j<=NVars; j++)
619
+ {
620
+ M[i,j] = Rel[i,j];
621
+ }
622
+ }
623
+
624
+ def @@K = nc_algebra(1, M); setring @@K; //now new ring @@K become a noncommutative ring
625
+
626
+ list l; //list to define an involution
627
+
628
+ for(i=1; i<=NVars; i++) //initializing list for involution
629
+ {
630
+ execute( "l["+string(i)+"]="+NVAR(i,i)+"*"+string( var(i) )+";" );
631
+
632
+ }
633
+ matrix N = imap(@@@KK,Rel);
634
+
635
+ for(i=1; i<NVars; i++)//get matrix by applying the involution to relations
636
+ {
637
+ for(j=i+1; j<=NVars; j++)
638
+ {
639
+ N[i,j]= l[j]*l[i] - l[i]*l[j] + In_Poly( N[i,j], l, NVars);
640
+ }
641
+ }
642
+ kill l;
643
+ //---------------------------------------------
644
+ //get the ideal of coefficients of N
645
+
646
+ ideal J;
647
+ ideal idN = simplify(ideal(N),2);
648
+ J = ideal(coeffs( idN, var(1) ) );
649
+ for(i=2; i<=NVars; i++)
650
+ {
651
+ J = ideal( coeffs( J, var(i) ) );
652
+ }
653
+ J = simplify(J,2);
654
+ //-------------------------------------------------
655
+
656
+ if ( Par=="" ) //initializes the ring of relations
657
+ {
658
+ ring @@KK = create_ring(0, "("+@ss+")", "dp");
659
+ }
660
+ else
661
+ {
662
+ ring @@KK = create_ring("(0,"+Par+")", "("+@ss+")", "dp");
663
+ }
664
+
665
+ ideal J = imap(@@K,J); // ideal, considered in @@KK now
666
+
667
+ matrix @@D[NVars][NVars]; // matrix with entries=new variables to square i.e. @@D=@@D^2
668
+ for(i=1;i<=NVars;i++)
669
+ {
670
+ execute("@@D["+string(i)+","+string(i)+"]="+NVAR(i,i)+";");
671
+ }
672
+ J = J, ideal( @@D*@@D - matrix( freemodule(NVars) ) ); // add the condition that involution to square is just identity
673
+ J = simplify(J,2); // without extra zeros
674
+
675
+ list mL = minAssGTZ(J); // components not in GB
676
+ int sL = size(mL);
677
+ intvec saveopt=option(get);
678
+ option(redSB); // important for reduced GBs
679
+ option(redTail);
680
+ matrix IM = @@D; // involution map
681
+ list L = list(); // the answer
682
+ list TL;
683
+ ideal tmp = 0;
684
+ for (i=1; i<=sL; i++) // compute GBs of components
685
+ {
686
+ TL = list();
687
+ TL[1] = std(mL[i]);
688
+ tmp = NF( ideal(IM), TL[1] );
689
+ TL[2] = matrix(tmp, NVars,NVars);
690
+ L[i] = TL;
691
+ }
692
+ export(L);
693
+ ideal idJ = J; // debug-comfortable exports
694
+ matrix matD = @@D;
695
+ export(idJ);
696
+ export(matD);
697
+ option(set,saveopt);
698
+ return(@@KK);
699
+ }
700
+ example
701
+ { "EXAMPLE:"; echo = 2;
702
+ def a = makeWeyl(1);
703
+ setring a; // this algebra is a first Weyl algebra
704
+ a;
705
+ def X = findInvoDiag();
706
+ setring X; // ring with new variables, corresponding to unknown coefficients
707
+ X;
708
+ // print matrices, defining linear involutions
709
+ print(L[1][2]); // a first matrix: we see it is constant
710
+ print(L[2][2]); // and a second possible matrix; it is constant too
711
+ L; // let us take a look on the whole list
712
+ idJ;
713
+ }
714
+ /////////////////////////////////////////////////////////////////////
715
+ proc findAuto(int n)
716
+ "USAGE: findAuto(n); n an integer
717
+ RETURN: a ring together with a list of pairs L, where
718
+ @* L[i][1] = ideal; a Groebner Basis of an i-th associated prime,
719
+ @* L[i][2] = matrix, defining a linear map, with entries, reduced with respect to L[i][1]
720
+ PURPOSE: compute the ideal of linear automorphisms of the basering,
721
+ @* given by a matrix, n-th power of which gives identity (i.e. unipotent matrix)
722
+ ASSUME: the relations on the algebra are of the form YX = XY + D, that is
723
+ the current ring is a G-algebra of Lie type.
724
+ NOTE: if n=0, a matrix, defining an automorphism is not assumed to be unipotent
725
+ @* but just non-degenerate. A nonzero parameter @code{@@p} is introduced as the value of
726
+ @* the determinant of the matrix above.
727
+ @* For convenience, the full ideal of relations @code{idJ} and the initial matrix with indeterminates
728
+ @* @code{matD} are mutually exported in the output ring
729
+ SEE ALSO: findInvo
730
+ EXAMPLE: example findAuto; shows examples
731
+ "{
732
+ if ((n<0 ) || (n==1))
733
+ {
734
+ "The index of unipotency is too small.";
735
+ return(0);
736
+ }
737
+
738
+
739
+ def @B = basering; //save the name of basering
740
+ int NVars = nvars(@B); //number of variables in basering
741
+ int i, j;
742
+
743
+ // check basering is of Lie type:
744
+ if (!isLieType())
745
+ {
746
+ ERROR("Assume violated: basering is of non-Lie type");
747
+ }
748
+
749
+ matrix Rel = RelMatr(); //the matrix of relations
750
+
751
+ string @ss = new_var(); //string of new variables
752
+ string Par = parstr(@B); //string of parameters in old ring
753
+
754
+ if (Par=="") // if there are no parameters
755
+ {
756
+ ring @@@K = create_ring(0, "("+varstr(@B)+","+@ss+")", "dp"); //new ring with new variables
757
+ }
758
+ else //if there exist parameters
759
+ {
760
+ ring @@@K = create_ring("(0,"+Par+")", "("+varstr(@B)+","+@ss+")", "dp"); //new ring with new variables
761
+ }
762
+
763
+ matrix Rel = imap(@B, Rel); //consider the matrix of relations in new ring
764
+
765
+ int Sz = NVars*NVars+NVars; // number of variables in new ring
766
+
767
+ matrix M[Sz][Sz]; //to be the matrix of relations in new ring
768
+
769
+ for(i=1; i<NVars; i++) //initialize that matrix of relations
770
+ {
771
+ for(j=i+1; j<=NVars; j++)
772
+ {
773
+ M[i,j] = Rel[i,j];
774
+ }
775
+ }
776
+
777
+ def @@K = nc_algebra(1, M); setring @@K; //now new ring @@K become a noncommutative ring
778
+
779
+ list l; //list to define a homomorphism(isomorphism)
780
+ poly @@F;
781
+ for(i=1; i<=NVars; i++) //initializing list for involution
782
+ {
783
+ @@F=0;
784
+ for(j=1; j<=NVars; j++)
785
+ {
786
+ execute( "@@F = @@F+"+NVAR(i,j)+"*"+string( var(j) )+";" );
787
+ }
788
+ l=l+list(@@F);
789
+ }
790
+
791
+ matrix N = imap(@@@K,Rel);
792
+
793
+ for(i=1; i<NVars; i++)//get matrix by applying the homomorphism to relations
794
+ {
795
+ for(j=i+1; j<=NVars; j++)
796
+ {
797
+ N[i,j]= l[j]*l[i] - l[i]*l[j] - Hom_Poly( N[i,j], l, NVars);
798
+ }
799
+ }
800
+ kill l;
801
+ //---------------------------------------------
802
+ //get the ideal of coefficients of N
803
+ ideal J;
804
+ ideal idN = simplify(ideal(N),2);
805
+ J = ideal(coeffs( idN, var(1) ) );
806
+ for(i=2; i<=NVars; i++)
807
+ {
808
+ J = ideal( coeffs( J, var(i) ) );
809
+ }
810
+ J = simplify(J,2);
811
+ //-------------------------------------------------
812
+ if (( Par=="" ) && (n!=0)) //initializes the ring of relations
813
+ {
814
+ ring @@KK = create_ring(0, "("+@ss+")", "dp");
815
+ }
816
+ if (( Par=="" ) && (n==0)) //initializes the ring of relations
817
+ {
818
+ ring @@KK = create_ring("(0,@p)", "("+@ss+")", "dp");
819
+ }
820
+ if ( Par!="" )
821
+ {
822
+ ring @@KK = create_ring("(0,"+Par+")", "("+@ss+")", "dp");
823
+ }
824
+ // basering;
825
+ ideal J = imap(@@K,J); // ideal, considered in @@KK now
826
+ string snv = "["+string(NVars)+"]";
827
+ execute("matrix @@D"+snv+snv+"="+@ss+";"); // matrix with entries=new variables
828
+
829
+ if (n>=2)
830
+ {
831
+ J = J, ideal( @@D*@@D-matrix( freemodule(NVars) ) ); // add the condition that homomorphism to square is just identity
832
+ }
833
+ if (n==0)
834
+ {
835
+ J = J, det(@@D)-@p; // det of non-unipotent matrix is nonzero
836
+ }
837
+ J = simplify(J,2); // without extra zeros
838
+ list mL = minAssGTZ(J); // components not in GB
839
+ int sL = size(mL);
840
+ intvec saveopt=option(get);
841
+ option(redSB); // important for reduced GBs
842
+ option(redTail);
843
+ matrix IM = @@D; // map
844
+ list L = list(); // the answer
845
+ list TL;
846
+ ideal tmp = 0;
847
+ for (i=1; i<=sL; i++)// compute GBs of components
848
+ {
849
+ TL = list();
850
+ TL[1] = std(mL[i]);
851
+ tmp = NF( ideal(IM), TL[1] );
852
+ TL[2] = matrix(tmp,NVars, NVars);
853
+ L[i] = TL;
854
+ }
855
+ export(L);
856
+ ideal idJ = J; // debug-comfortable exports
857
+ matrix matD = @@D;
858
+ export(idJ);
859
+ export(matD);
860
+ option(set,saveopt);
861
+ return(@@KK);
862
+ }
863
+ example
864
+ { "EXAMPLE:"; echo = 2;
865
+ def a = makeWeyl(1);
866
+ setring a; // this algebra is a first Weyl algebra
867
+ a;
868
+ def X = findAuto(2); // in contrast to findInvo look for automorphisms
869
+ setring X; // ring with new variables - unknown coefficients
870
+ X;
871
+ size(L); // we have (size(L)) families in the answer
872
+ // look at matrices, defining linear automorphisms:
873
+ print(L[1][2]); // a first one: we see it is the identity
874
+ print(L[2][2]); // and a second possible matrix; it is diagonal
875
+ // L; // we can take a look on the whole list, too
876
+ idJ;
877
+ kill X; kill a;
878
+ //----------- find all the linear automorphisms --------------------
879
+ //----------- use the call findAuto(0) --------------------
880
+ ring R = 0,(x,s),dp;
881
+ def r = nc_algebra(1,s); setring r; // the shift algebra
882
+ s*x; // the only relation in the algebra is:
883
+ def Y = findAuto(0);
884
+ setring Y;
885
+ size(L); // here, we have 1 parametrized family
886
+ print(L[1][2]); // here, @p is a nonzero parameter
887
+ det(L[1][2]-@p); // check whether determinante is zero
888
+ }
889
+
890
+
891
+ proc isAntiEndo(def F)
892
+ "USAGE: isAntiEndo(F); F is a map from current ring to itself
893
+ RETURN: integer, 1 if F determines an antiendomorphism of
894
+ current ring and 0 otherwise
895
+ ASSUME: F is a map from current ring to itself
896
+ SEE ALSO: isInvolution, involution, findInvo
897
+ EXAMPLE: example isAntiEndo; shows examples
898
+ "
899
+ {
900
+ // assumes:
901
+ // (1) F is from br to br
902
+ // I don't see how to check it; in case of error it will happen in the body
903
+ // (2) do not assume: F is linear, F is bijective
904
+ int n = nvars(basering);
905
+ int i,j;
906
+ poly pi,pj,q;
907
+ int answer=1;
908
+ ideal @f = ideal(F); list L=@f[1..ncols(@f)];
909
+ for (i=1; i<n; i++)
910
+ {
911
+ for (j=i+1; j<=n; j++)
912
+ {
913
+ // F( x_j x_i) =def= F(x_i) F(x_j)
914
+ pi = var(i);
915
+ pj = var(j);
916
+ // q = involution(pj*pi,F) - F(pi)*F(pj);
917
+ q = In_Poly(pj*pi,L,n) - F[i]*F[j];
918
+ if (q!=0)
919
+ {
920
+ answer=0; return(answer);
921
+ }
922
+ }
923
+ }
924
+ return(answer);
925
+ }
926
+ example
927
+ {"EXAMPLE:";echo = 2;
928
+ def A = makeUsl(2); setring A;
929
+ map I = A,-e,-f,-h; //correct antiauto involution
930
+ isAntiEndo(I);
931
+ map J = A,3*e,1/3*f,-h; // antiauto but not involution
932
+ isAntiEndo(J);
933
+ map K = A,f,e,-h; // not antiendo
934
+ isAntiEndo(K);
935
+ }
936
+
937
+
938
+ proc isInvolution(def F)
939
+ "USAGE: isInvolution(F); F is a map from current ring to itself
940
+ RETURN: integer, 1 if F determines an involution and 0 otherwise
941
+ THEORY: involution is an antiautomorphism of order 2
942
+ ASSUME: F is a map from current ring to itself
943
+ SEE ALSO: involution, findInvo, isAntiEndo
944
+ EXAMPLE: example isInvolution; shows examples
945
+ "
946
+ {
947
+ // does not assume: F is an antiautomorphism, can be antiendo
948
+ // allows to detect endos which are not autos
949
+ // isInvolution == ( F isAntiEndo && F(F)==id )
950
+ if (!isAntiEndo(F))
951
+ {
952
+ return(0);
953
+ }
954
+ // def G = F(F);
955
+ int j; poly p; ideal @f = ideal(F); list L=@f[1..ncols(@f)];
956
+ int nv = nvars(basering);
957
+ for(j=nv; j>=1; j--)
958
+ {
959
+ // p = var(j); p = F(p); p = F(p) - var(j);
960
+ //p = G(p) - p;
961
+ p = In_Poly(var(j),L,nv);
962
+ p = In_Poly(p,L,nv) -var(j) ;
963
+
964
+ if (p!=0)
965
+ {
966
+ return(0);
967
+ }
968
+ }
969
+ return(1);
970
+ }
971
+ example
972
+ {"EXAMPLE:";echo = 2;
973
+ def A = makeUsl(2); setring A;
974
+ map I = A,-e,-f,-h; //correct antiauto involution
975
+ isInvolution(I);
976
+ map J = A,3*e,1/3*f,-h; // antiauto but not involution
977
+ isInvolution(J);
978
+ map K = A,f,e,-h; // not antiauto
979
+ isInvolution(K);
980
+ }