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

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

Potentially problematic release.


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

Files changed (490) hide show
  1. PySingular.cpython-314-aarch64-linux-gnu.so +0 -0
  2. passagemath_singular-10.6.31rc3.dist-info/METADATA +183 -0
  3. passagemath_singular-10.6.31rc3.dist-info/RECORD +490 -0
  4. passagemath_singular-10.6.31rc3.dist-info/WHEEL +6 -0
  5. passagemath_singular-10.6.31rc3.dist-info/top_level.txt +3 -0
  6. passagemath_singular.libs/libSingular-4-6a2a8666.4.1.so +0 -0
  7. passagemath_singular.libs/libcddgmp-ac579979.so.0.1.3 +0 -0
  8. passagemath_singular.libs/libfactory-4-66e33516.4.1.so +0 -0
  9. passagemath_singular.libs/libflint-81de1160.so.21.0.0 +0 -0
  10. passagemath_singular.libs/libgf2x-fbd36f80.so.3.0.0 +0 -0
  11. passagemath_singular.libs/libgfortran-e1b7dfc8.so.5.0.0 +0 -0
  12. passagemath_singular.libs/libgmp-93ebf16a.so.10.5.0 +0 -0
  13. passagemath_singular.libs/libgsl-e3525837.so.28.0.0 +0 -0
  14. passagemath_singular.libs/libmpfr-e0f11cf3.so.6.2.1 +0 -0
  15. passagemath_singular.libs/libntl-0043a3a2.so.44.0.1 +0 -0
  16. passagemath_singular.libs/libomalloc-0-06512335.9.6.so +0 -0
  17. passagemath_singular.libs/libopenblasp-r0-4c5b64b1.3.29.so +0 -0
  18. passagemath_singular.libs/libpolys-4-cb7246b5.4.1.so +0 -0
  19. passagemath_singular.libs/libreadline-28330744.so.8.2 +0 -0
  20. passagemath_singular.libs/libsingular_resources-4-8c425241.4.1.so +0 -0
  21. passagemath_singular.libs/libtinfo-f81c2d16.so.6.3 +0 -0
  22. sage/algebras/all__sagemath_singular.py +3 -0
  23. sage/algebras/fusion_rings/all.py +19 -0
  24. sage/algebras/fusion_rings/f_matrix.py +2448 -0
  25. sage/algebras/fusion_rings/fast_parallel_fmats_methods.cpython-314-aarch64-linux-gnu.so +0 -0
  26. sage/algebras/fusion_rings/fast_parallel_fmats_methods.pxd +5 -0
  27. sage/algebras/fusion_rings/fast_parallel_fmats_methods.pyx +538 -0
  28. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.cpython-314-aarch64-linux-gnu.so +0 -0
  29. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pxd +3 -0
  30. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pyx +331 -0
  31. sage/algebras/fusion_rings/fusion_double.py +899 -0
  32. sage/algebras/fusion_rings/fusion_ring.py +1580 -0
  33. sage/algebras/fusion_rings/poly_tup_engine.cpython-314-aarch64-linux-gnu.so +0 -0
  34. sage/algebras/fusion_rings/poly_tup_engine.pxd +24 -0
  35. sage/algebras/fusion_rings/poly_tup_engine.pyx +579 -0
  36. sage/algebras/fusion_rings/shm_managers.cpython-314-aarch64-linux-gnu.so +0 -0
  37. sage/algebras/fusion_rings/shm_managers.pxd +24 -0
  38. sage/algebras/fusion_rings/shm_managers.pyx +780 -0
  39. sage/algebras/letterplace/all.py +1 -0
  40. sage/algebras/letterplace/free_algebra_element_letterplace.cpython-314-aarch64-linux-gnu.so +0 -0
  41. sage/algebras/letterplace/free_algebra_element_letterplace.pxd +18 -0
  42. sage/algebras/letterplace/free_algebra_element_letterplace.pyx +755 -0
  43. sage/algebras/letterplace/free_algebra_letterplace.cpython-314-aarch64-linux-gnu.so +0 -0
  44. sage/algebras/letterplace/free_algebra_letterplace.pxd +35 -0
  45. sage/algebras/letterplace/free_algebra_letterplace.pyx +914 -0
  46. sage/algebras/letterplace/letterplace_ideal.cpython-314-aarch64-linux-gnu.so +0 -0
  47. sage/algebras/letterplace/letterplace_ideal.pyx +408 -0
  48. sage/algebras/quatalg/all.py +2 -0
  49. sage/algebras/quatalg/quaternion_algebra.py +4778 -0
  50. sage/algebras/quatalg/quaternion_algebra_cython.cpython-314-aarch64-linux-gnu.so +0 -0
  51. sage/algebras/quatalg/quaternion_algebra_cython.pyx +261 -0
  52. sage/algebras/quatalg/quaternion_algebra_element.cpython-314-aarch64-linux-gnu.so +0 -0
  53. sage/algebras/quatalg/quaternion_algebra_element.pxd +29 -0
  54. sage/algebras/quatalg/quaternion_algebra_element.pyx +2176 -0
  55. sage/all__sagemath_singular.py +11 -0
  56. sage/ext_data/all__sagemath_singular.py +1 -0
  57. sage/ext_data/singular/function_field/core.lib +98 -0
  58. sage/interfaces/all__sagemath_singular.py +1 -0
  59. sage/interfaces/singular.py +2835 -0
  60. sage/libs/all__sagemath_singular.py +1 -0
  61. sage/libs/singular/__init__.py +1 -0
  62. sage/libs/singular/decl.pxd +1168 -0
  63. sage/libs/singular/function.cpython-314-aarch64-linux-gnu.so +0 -0
  64. sage/libs/singular/function.pxd +87 -0
  65. sage/libs/singular/function.pyx +1901 -0
  66. sage/libs/singular/function_factory.py +61 -0
  67. sage/libs/singular/groebner_strategy.cpython-314-aarch64-linux-gnu.so +0 -0
  68. sage/libs/singular/groebner_strategy.pxd +22 -0
  69. sage/libs/singular/groebner_strategy.pyx +582 -0
  70. sage/libs/singular/option.cpython-314-aarch64-linux-gnu.so +0 -0
  71. sage/libs/singular/option.pyx +671 -0
  72. sage/libs/singular/polynomial.cpython-314-aarch64-linux-gnu.so +0 -0
  73. sage/libs/singular/polynomial.pxd +39 -0
  74. sage/libs/singular/polynomial.pyx +661 -0
  75. sage/libs/singular/ring.cpython-314-aarch64-linux-gnu.so +0 -0
  76. sage/libs/singular/ring.pxd +58 -0
  77. sage/libs/singular/ring.pyx +893 -0
  78. sage/libs/singular/singular.cpython-314-aarch64-linux-gnu.so +0 -0
  79. sage/libs/singular/singular.pxd +72 -0
  80. sage/libs/singular/singular.pyx +1944 -0
  81. sage/libs/singular/standard_options.py +145 -0
  82. sage/matrix/all__sagemath_singular.py +1 -0
  83. sage/matrix/matrix_mpolynomial_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  84. sage/matrix/matrix_mpolynomial_dense.pxd +7 -0
  85. sage/matrix/matrix_mpolynomial_dense.pyx +615 -0
  86. sage/rings/all__sagemath_singular.py +1 -0
  87. sage/rings/function_field/all__sagemath_singular.py +1 -0
  88. sage/rings/function_field/derivations_polymod.py +911 -0
  89. sage/rings/function_field/element_polymod.cpython-314-aarch64-linux-gnu.so +0 -0
  90. sage/rings/function_field/element_polymod.pyx +406 -0
  91. sage/rings/function_field/function_field_polymod.py +2611 -0
  92. sage/rings/function_field/ideal_polymod.py +1775 -0
  93. sage/rings/function_field/order_polymod.py +1475 -0
  94. sage/rings/function_field/place_polymod.py +681 -0
  95. sage/rings/polynomial/all__sagemath_singular.py +1 -0
  96. sage/rings/polynomial/multi_polynomial_ideal_libsingular.cpython-314-aarch64-linux-gnu.so +0 -0
  97. sage/rings/polynomial/multi_polynomial_ideal_libsingular.pxd +5 -0
  98. sage/rings/polynomial/multi_polynomial_ideal_libsingular.pyx +339 -0
  99. sage/rings/polynomial/multi_polynomial_libsingular.cpython-314-aarch64-linux-gnu.so +0 -0
  100. sage/rings/polynomial/multi_polynomial_libsingular.pxd +30 -0
  101. sage/rings/polynomial/multi_polynomial_libsingular.pyx +6277 -0
  102. sage/rings/polynomial/plural.cpython-314-aarch64-linux-gnu.so +0 -0
  103. sage/rings/polynomial/plural.pxd +48 -0
  104. sage/rings/polynomial/plural.pyx +3171 -0
  105. sage/symbolic/all__sagemath_singular.py +1 -0
  106. sage/symbolic/comparison_impl.pxi +428 -0
  107. sage/symbolic/constants_c_impl.pxi +178 -0
  108. sage/symbolic/expression.cpython-314-aarch64-linux-gnu.so +0 -0
  109. sage/symbolic/expression.pxd +7 -0
  110. sage/symbolic/expression.pyx +14200 -0
  111. sage/symbolic/getitem_impl.pxi +202 -0
  112. sage/symbolic/pynac.pxi +572 -0
  113. sage/symbolic/pynac_constant_impl.pxi +133 -0
  114. sage/symbolic/pynac_function_impl.pxi +206 -0
  115. sage/symbolic/pynac_impl.pxi +2576 -0
  116. sage/symbolic/pynac_wrap.h +124 -0
  117. sage/symbolic/series_impl.pxi +272 -0
  118. sage/symbolic/substitution_map_impl.pxi +94 -0
  119. sage_wheels/bin/ESingular +0 -0
  120. sage_wheels/bin/Singular +0 -0
  121. sage_wheels/bin/TSingular +0 -0
  122. sage_wheels/lib/singular/MOD/cohomo.la +41 -0
  123. sage_wheels/lib/singular/MOD/cohomo.so +0 -0
  124. sage_wheels/lib/singular/MOD/customstd.la +41 -0
  125. sage_wheels/lib/singular/MOD/customstd.so +0 -0
  126. sage_wheels/lib/singular/MOD/freealgebra.la +41 -0
  127. sage_wheels/lib/singular/MOD/freealgebra.so +0 -0
  128. sage_wheels/lib/singular/MOD/gfanlib.la +41 -0
  129. sage_wheels/lib/singular/MOD/gfanlib.so +0 -0
  130. sage_wheels/lib/singular/MOD/gitfan.la +41 -0
  131. sage_wheels/lib/singular/MOD/gitfan.so +0 -0
  132. sage_wheels/lib/singular/MOD/interval.la +41 -0
  133. sage_wheels/lib/singular/MOD/interval.so +0 -0
  134. sage_wheels/lib/singular/MOD/loctriv.la +41 -0
  135. sage_wheels/lib/singular/MOD/loctriv.so +0 -0
  136. sage_wheels/lib/singular/MOD/machinelearning.la +41 -0
  137. sage_wheels/lib/singular/MOD/machinelearning.so +0 -0
  138. sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.la +41 -0
  139. sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.so +0 -0
  140. sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.la +41 -0
  141. sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.so +0 -0
  142. sage_wheels/lib/singular/MOD/p_Procs_FieldQ.la +41 -0
  143. sage_wheels/lib/singular/MOD/p_Procs_FieldQ.so +0 -0
  144. sage_wheels/lib/singular/MOD/p_Procs_FieldZp.la +41 -0
  145. sage_wheels/lib/singular/MOD/p_Procs_FieldZp.so +0 -0
  146. sage_wheels/lib/singular/MOD/partialgb.la +41 -0
  147. sage_wheels/lib/singular/MOD/partialgb.so +0 -0
  148. sage_wheels/lib/singular/MOD/pyobject.la +41 -0
  149. sage_wheels/lib/singular/MOD/pyobject.so +0 -0
  150. sage_wheels/lib/singular/MOD/singmathic.la +41 -0
  151. sage_wheels/lib/singular/MOD/singmathic.so +0 -0
  152. sage_wheels/lib/singular/MOD/sispasm.la +41 -0
  153. sage_wheels/lib/singular/MOD/sispasm.so +0 -0
  154. sage_wheels/lib/singular/MOD/subsets.la +41 -0
  155. sage_wheels/lib/singular/MOD/subsets.so +0 -0
  156. sage_wheels/lib/singular/MOD/systhreads.la +41 -0
  157. sage_wheels/lib/singular/MOD/systhreads.so +0 -0
  158. sage_wheels/lib/singular/MOD/syzextra.la +41 -0
  159. sage_wheels/lib/singular/MOD/syzextra.so +0 -0
  160. sage_wheels/libexec/singular/MOD/change_cost +0 -0
  161. sage_wheels/libexec/singular/MOD/singularsurf +11 -0
  162. sage_wheels/libexec/singular/MOD/singularsurf_jupyter +9 -0
  163. sage_wheels/libexec/singular/MOD/singularsurf_win +10 -0
  164. sage_wheels/libexec/singular/MOD/solve_IP +0 -0
  165. sage_wheels/libexec/singular/MOD/surfex +16 -0
  166. sage_wheels/libexec/singular/MOD/toric_ideal +0 -0
  167. sage_wheels/share/factory/gftables/10201 +342 -0
  168. sage_wheels/share/factory/gftables/1024 +37 -0
  169. sage_wheels/share/factory/gftables/10609 +356 -0
  170. sage_wheels/share/factory/gftables/11449 +384 -0
  171. sage_wheels/share/factory/gftables/11881 +398 -0
  172. sage_wheels/share/factory/gftables/121 +6 -0
  173. sage_wheels/share/factory/gftables/12167 +408 -0
  174. sage_wheels/share/factory/gftables/125 +7 -0
  175. sage_wheels/share/factory/gftables/12769 +428 -0
  176. sage_wheels/share/factory/gftables/128 +7 -0
  177. sage_wheels/share/factory/gftables/1331 +47 -0
  178. sage_wheels/share/factory/gftables/1369 +48 -0
  179. sage_wheels/share/factory/gftables/14641 +490 -0
  180. sage_wheels/share/factory/gftables/15625 +523 -0
  181. sage_wheels/share/factory/gftables/16 +3 -0
  182. sage_wheels/share/factory/gftables/16129 +540 -0
  183. sage_wheels/share/factory/gftables/16384 +549 -0
  184. sage_wheels/share/factory/gftables/16807 +563 -0
  185. sage_wheels/share/factory/gftables/1681 +58 -0
  186. sage_wheels/share/factory/gftables/169 +8 -0
  187. sage_wheels/share/factory/gftables/17161 +574 -0
  188. sage_wheels/share/factory/gftables/1849 +64 -0
  189. sage_wheels/share/factory/gftables/18769 +628 -0
  190. sage_wheels/share/factory/gftables/19321 +646 -0
  191. sage_wheels/share/factory/gftables/19683 +659 -0
  192. sage_wheels/share/factory/gftables/2048 +71 -0
  193. sage_wheels/share/factory/gftables/2187 +75 -0
  194. sage_wheels/share/factory/gftables/2197 +76 -0
  195. sage_wheels/share/factory/gftables/2209 +76 -0
  196. sage_wheels/share/factory/gftables/22201 +742 -0
  197. sage_wheels/share/factory/gftables/22801 +762 -0
  198. sage_wheels/share/factory/gftables/2401 +82 -0
  199. sage_wheels/share/factory/gftables/243 +11 -0
  200. sage_wheels/share/factory/gftables/24389 +815 -0
  201. sage_wheels/share/factory/gftables/24649 +824 -0
  202. sage_wheels/share/factory/gftables/25 +3 -0
  203. sage_wheels/share/factory/gftables/256 +11 -0
  204. sage_wheels/share/factory/gftables/26569 +888 -0
  205. sage_wheels/share/factory/gftables/27 +3 -0
  206. sage_wheels/share/factory/gftables/27889 +932 -0
  207. sage_wheels/share/factory/gftables/2809 +96 -0
  208. sage_wheels/share/factory/gftables/28561 +954 -0
  209. sage_wheels/share/factory/gftables/289 +12 -0
  210. sage_wheels/share/factory/gftables/29791 +995 -0
  211. sage_wheels/share/factory/gftables/29929 +1000 -0
  212. sage_wheels/share/factory/gftables/3125 +107 -0
  213. sage_wheels/share/factory/gftables/32 +4 -0
  214. sage_wheels/share/factory/gftables/32041 +1070 -0
  215. sage_wheels/share/factory/gftables/32761 +1094 -0
  216. sage_wheels/share/factory/gftables/32768 +1095 -0
  217. sage_wheels/share/factory/gftables/343 +14 -0
  218. sage_wheels/share/factory/gftables/3481 +118 -0
  219. sage_wheels/share/factory/gftables/361 +14 -0
  220. sage_wheels/share/factory/gftables/36481 +1218 -0
  221. sage_wheels/share/factory/gftables/3721 +126 -0
  222. sage_wheels/share/factory/gftables/37249 +1244 -0
  223. sage_wheels/share/factory/gftables/38809 +1296 -0
  224. sage_wheels/share/factory/gftables/39601 +1322 -0
  225. sage_wheels/share/factory/gftables/4 +3 -0
  226. sage_wheels/share/factory/gftables/4096 +139 -0
  227. sage_wheels/share/factory/gftables/44521 +1486 -0
  228. sage_wheels/share/factory/gftables/4489 +152 -0
  229. sage_wheels/share/factory/gftables/49 +4 -0
  230. sage_wheels/share/factory/gftables/4913 +166 -0
  231. sage_wheels/share/factory/gftables/49729 +1660 -0
  232. sage_wheels/share/factory/gftables/5041 +170 -0
  233. sage_wheels/share/factory/gftables/50653 +1691 -0
  234. sage_wheels/share/factory/gftables/512 +20 -0
  235. sage_wheels/share/factory/gftables/51529 +1720 -0
  236. sage_wheels/share/factory/gftables/52441 +1750 -0
  237. sage_wheels/share/factory/gftables/529 +20 -0
  238. sage_wheels/share/factory/gftables/5329 +180 -0
  239. sage_wheels/share/factory/gftables/54289 +1812 -0
  240. sage_wheels/share/factory/gftables/57121 +1906 -0
  241. sage_wheels/share/factory/gftables/58081 +1938 -0
  242. sage_wheels/share/factory/gftables/59049 +1971 -0
  243. sage_wheels/share/factory/gftables/6241 +210 -0
  244. sage_wheels/share/factory/gftables/625 +23 -0
  245. sage_wheels/share/factory/gftables/63001 +2102 -0
  246. sage_wheels/share/factory/gftables/64 +5 -0
  247. sage_wheels/share/factory/gftables/6561 +221 -0
  248. sage_wheels/share/factory/gftables/6859 +231 -0
  249. sage_wheels/share/factory/gftables/6889 +232 -0
  250. sage_wheels/share/factory/gftables/729 +27 -0
  251. sage_wheels/share/factory/gftables/7921 +266 -0
  252. sage_wheels/share/factory/gftables/8 +3 -0
  253. sage_wheels/share/factory/gftables/81 +5 -0
  254. sage_wheels/share/factory/gftables/8192 +276 -0
  255. sage_wheels/share/factory/gftables/841 +30 -0
  256. sage_wheels/share/factory/gftables/9 +3 -0
  257. sage_wheels/share/factory/gftables/9409 +316 -0
  258. sage_wheels/share/factory/gftables/961 +34 -0
  259. sage_wheels/share/info/singular.info +191898 -0
  260. sage_wheels/share/singular/LIB/GND.lib +1359 -0
  261. sage_wheels/share/singular/LIB/JMBTest.lib +976 -0
  262. sage_wheels/share/singular/LIB/JMSConst.lib +1363 -0
  263. sage_wheels/share/singular/LIB/KVequiv.lib +699 -0
  264. sage_wheels/share/singular/LIB/SingularityDBM.lib +491 -0
  265. sage_wheels/share/singular/LIB/VecField.lib +1542 -0
  266. sage_wheels/share/singular/LIB/absfact.lib +959 -0
  267. sage_wheels/share/singular/LIB/ainvar.lib +730 -0
  268. sage_wheels/share/singular/LIB/aksaka.lib +419 -0
  269. sage_wheels/share/singular/LIB/alexpoly.lib +2542 -0
  270. sage_wheels/share/singular/LIB/algebra.lib +1193 -0
  271. sage_wheels/share/singular/LIB/all.lib +136 -0
  272. sage_wheels/share/singular/LIB/arcpoint.lib +514 -0
  273. sage_wheels/share/singular/LIB/arnold.lib +4553 -0
  274. sage_wheels/share/singular/LIB/arnoldclassify.lib +2058 -0
  275. sage_wheels/share/singular/LIB/arr.lib +3486 -0
  276. sage_wheels/share/singular/LIB/assprimeszerodim.lib +755 -0
  277. sage_wheels/share/singular/LIB/autgradalg.lib +3361 -0
  278. sage_wheels/share/singular/LIB/bfun.lib +1964 -0
  279. sage_wheels/share/singular/LIB/bimodules.lib +774 -0
  280. sage_wheels/share/singular/LIB/brillnoether.lib +226 -0
  281. sage_wheels/share/singular/LIB/brnoeth.lib +5017 -0
  282. sage_wheels/share/singular/LIB/central.lib +2169 -0
  283. sage_wheels/share/singular/LIB/chern.lib +4162 -0
  284. sage_wheels/share/singular/LIB/cimonom.lib +571 -0
  285. sage_wheels/share/singular/LIB/cisimplicial.lib +1835 -0
  286. sage_wheels/share/singular/LIB/classify.lib +3239 -0
  287. sage_wheels/share/singular/LIB/classify2.lib +1462 -0
  288. sage_wheels/share/singular/LIB/classifyMapGerms.lib +1515 -0
  289. sage_wheels/share/singular/LIB/classify_aeq.lib +3253 -0
  290. sage_wheels/share/singular/LIB/classifyceq.lib +2092 -0
  291. sage_wheels/share/singular/LIB/classifyci.lib +1133 -0
  292. sage_wheels/share/singular/LIB/combinat.lib +91 -0
  293. sage_wheels/share/singular/LIB/compregb.lib +276 -0
  294. sage_wheels/share/singular/LIB/control.lib +1636 -0
  295. sage_wheels/share/singular/LIB/crypto.lib +3795 -0
  296. sage_wheels/share/singular/LIB/curveInv.lib +667 -0
  297. sage_wheels/share/singular/LIB/curvepar.lib +1817 -0
  298. sage_wheels/share/singular/LIB/customstd.lib +100 -0
  299. sage_wheels/share/singular/LIB/deRham.lib +5979 -0
  300. sage_wheels/share/singular/LIB/decodegb.lib +2134 -0
  301. sage_wheels/share/singular/LIB/decomp.lib +1655 -0
  302. sage_wheels/share/singular/LIB/deflation.lib +872 -0
  303. sage_wheels/share/singular/LIB/deform.lib +925 -0
  304. sage_wheels/share/singular/LIB/difform.lib +3055 -0
  305. sage_wheels/share/singular/LIB/divisors.lib +750 -0
  306. sage_wheels/share/singular/LIB/dmod.lib +5817 -0
  307. sage_wheels/share/singular/LIB/dmodapp.lib +3269 -0
  308. sage_wheels/share/singular/LIB/dmodideal.lib +1211 -0
  309. sage_wheels/share/singular/LIB/dmodloc.lib +2645 -0
  310. sage_wheels/share/singular/LIB/dmodvar.lib +818 -0
  311. sage_wheels/share/singular/LIB/dummy.lib +17 -0
  312. sage_wheels/share/singular/LIB/elim.lib +1009 -0
  313. sage_wheels/share/singular/LIB/ellipticcovers.lib +548 -0
  314. sage_wheels/share/singular/LIB/enumpoints.lib +146 -0
  315. sage_wheels/share/singular/LIB/equising.lib +2127 -0
  316. sage_wheels/share/singular/LIB/ffmodstd.lib +2384 -0
  317. sage_wheels/share/singular/LIB/ffsolve.lib +1289 -0
  318. sage_wheels/share/singular/LIB/findifs.lib +778 -0
  319. sage_wheels/share/singular/LIB/finitediff.lib +1768 -0
  320. sage_wheels/share/singular/LIB/finvar.lib +7989 -0
  321. sage_wheels/share/singular/LIB/fpadim.lib +2429 -0
  322. sage_wheels/share/singular/LIB/fpalgebras.lib +1666 -0
  323. sage_wheels/share/singular/LIB/fpaprops.lib +1462 -0
  324. sage_wheels/share/singular/LIB/freegb.lib +3853 -0
  325. sage_wheels/share/singular/LIB/general.lib +1350 -0
  326. sage_wheels/share/singular/LIB/gfan.lib +1768 -0
  327. sage_wheels/share/singular/LIB/gitfan.lib +3130 -0
  328. sage_wheels/share/singular/LIB/gkdim.lib +99 -0
  329. sage_wheels/share/singular/LIB/gmspoly.lib +589 -0
  330. sage_wheels/share/singular/LIB/gmssing.lib +1739 -0
  331. sage_wheels/share/singular/LIB/goettsche.lib +909 -0
  332. sage_wheels/share/singular/LIB/graal.lib +1366 -0
  333. sage_wheels/share/singular/LIB/gradedModules.lib +2541 -0
  334. sage_wheels/share/singular/LIB/graphics.lib +360 -0
  335. sage_wheels/share/singular/LIB/grobcov.lib +7706 -0
  336. sage_wheels/share/singular/LIB/groups.lib +1123 -0
  337. sage_wheels/share/singular/LIB/grwalk.lib +507 -0
  338. sage_wheels/share/singular/LIB/hdepth.lib +194 -0
  339. sage_wheels/share/singular/LIB/help.cnf +57 -0
  340. sage_wheels/share/singular/LIB/hess.lib +1946 -0
  341. sage_wheels/share/singular/LIB/hnoether.lib +4292 -0
  342. sage_wheels/share/singular/LIB/hodge.lib +400 -0
  343. sage_wheels/share/singular/LIB/homolog.lib +1965 -0
  344. sage_wheels/share/singular/LIB/hyperel.lib +975 -0
  345. sage_wheels/share/singular/LIB/inout.lib +679 -0
  346. sage_wheels/share/singular/LIB/integralbasis.lib +6224 -0
  347. sage_wheels/share/singular/LIB/interval.lib +1418 -0
  348. sage_wheels/share/singular/LIB/intprog.lib +778 -0
  349. sage_wheels/share/singular/LIB/invar.lib +443 -0
  350. sage_wheels/share/singular/LIB/involut.lib +980 -0
  351. sage_wheels/share/singular/LIB/jacobson.lib +1215 -0
  352. sage_wheels/share/singular/LIB/kskernel.lib +534 -0
  353. sage_wheels/share/singular/LIB/latex.lib +3146 -0
  354. sage_wheels/share/singular/LIB/lejeune.lib +651 -0
  355. sage_wheels/share/singular/LIB/linalg.lib +2040 -0
  356. sage_wheels/share/singular/LIB/locnormal.lib +212 -0
  357. sage_wheels/share/singular/LIB/lrcalc.lib +526 -0
  358. sage_wheels/share/singular/LIB/makedbm.lib +294 -0
  359. sage_wheels/share/singular/LIB/mathml.lib +813 -0
  360. sage_wheels/share/singular/LIB/matrix.lib +1372 -0
  361. sage_wheels/share/singular/LIB/maxlike.lib +1132 -0
  362. sage_wheels/share/singular/LIB/methods.lib +212 -0
  363. sage_wheels/share/singular/LIB/moddiq.lib +322 -0
  364. sage_wheels/share/singular/LIB/modfinduni.lib +181 -0
  365. sage_wheels/share/singular/LIB/modnormal.lib +218 -0
  366. sage_wheels/share/singular/LIB/modprimdec.lib +1278 -0
  367. sage_wheels/share/singular/LIB/modquotient.lib +269 -0
  368. sage_wheels/share/singular/LIB/modstd.lib +1024 -0
  369. sage_wheels/share/singular/LIB/modular.lib +545 -0
  370. sage_wheels/share/singular/LIB/modules.lib +2561 -0
  371. sage_wheels/share/singular/LIB/modwalk.lib +609 -0
  372. sage_wheels/share/singular/LIB/mondromy.lib +1016 -0
  373. sage_wheels/share/singular/LIB/monomialideal.lib +3851 -0
  374. sage_wheels/share/singular/LIB/mprimdec.lib +2353 -0
  375. sage_wheels/share/singular/LIB/mregular.lib +1863 -0
  376. sage_wheels/share/singular/LIB/multigrading.lib +5629 -0
  377. sage_wheels/share/singular/LIB/ncHilb.lib +777 -0
  378. sage_wheels/share/singular/LIB/ncModslimgb.lib +791 -0
  379. sage_wheels/share/singular/LIB/ncalg.lib +16311 -0
  380. sage_wheels/share/singular/LIB/ncall.lib +31 -0
  381. sage_wheels/share/singular/LIB/ncdecomp.lib +468 -0
  382. sage_wheels/share/singular/LIB/ncfactor.lib +13371 -0
  383. sage_wheels/share/singular/LIB/ncfrac.lib +1023 -0
  384. sage_wheels/share/singular/LIB/nchilbert.lib +448 -0
  385. sage_wheels/share/singular/LIB/nchomolog.lib +759 -0
  386. sage_wheels/share/singular/LIB/ncloc.lib +361 -0
  387. sage_wheels/share/singular/LIB/ncpreim.lib +795 -0
  388. sage_wheels/share/singular/LIB/ncrat.lib +2849 -0
  389. sage_wheels/share/singular/LIB/nctools.lib +1887 -0
  390. sage_wheels/share/singular/LIB/nets.lib +1456 -0
  391. sage_wheels/share/singular/LIB/nfmodstd.lib +1000 -0
  392. sage_wheels/share/singular/LIB/nfmodsyz.lib +732 -0
  393. sage_wheels/share/singular/LIB/noether.lib +1106 -0
  394. sage_wheels/share/singular/LIB/normal.lib +8700 -0
  395. sage_wheels/share/singular/LIB/normaliz.lib +2226 -0
  396. sage_wheels/share/singular/LIB/ntsolve.lib +362 -0
  397. sage_wheels/share/singular/LIB/numerAlg.lib +560 -0
  398. sage_wheels/share/singular/LIB/numerDecom.lib +2261 -0
  399. sage_wheels/share/singular/LIB/olga.lib +1933 -0
  400. sage_wheels/share/singular/LIB/orbitparam.lib +351 -0
  401. sage_wheels/share/singular/LIB/parallel.lib +319 -0
  402. sage_wheels/share/singular/LIB/paraplanecurves.lib +3110 -0
  403. sage_wheels/share/singular/LIB/perron.lib +202 -0
  404. sage_wheels/share/singular/LIB/pfd.lib +2223 -0
  405. sage_wheels/share/singular/LIB/phindex.lib +642 -0
  406. sage_wheels/share/singular/LIB/pointid.lib +673 -0
  407. sage_wheels/share/singular/LIB/polybori.lib +1430 -0
  408. sage_wheels/share/singular/LIB/polyclass.lib +525 -0
  409. sage_wheels/share/singular/LIB/polylib.lib +1174 -0
  410. sage_wheels/share/singular/LIB/polymake.lib +1902 -0
  411. sage_wheels/share/singular/LIB/presolve.lib +1533 -0
  412. sage_wheels/share/singular/LIB/primdec.lib +9576 -0
  413. sage_wheels/share/singular/LIB/primdecint.lib +1782 -0
  414. sage_wheels/share/singular/LIB/primitiv.lib +401 -0
  415. sage_wheels/share/singular/LIB/puiseuxexpansions.lib +1631 -0
  416. sage_wheels/share/singular/LIB/purityfiltration.lib +960 -0
  417. sage_wheels/share/singular/LIB/qhmoduli.lib +1561 -0
  418. sage_wheels/share/singular/LIB/qmatrix.lib +293 -0
  419. sage_wheels/share/singular/LIB/random.lib +455 -0
  420. sage_wheels/share/singular/LIB/ratgb.lib +489 -0
  421. sage_wheels/share/singular/LIB/realclassify.lib +5759 -0
  422. sage_wheels/share/singular/LIB/realizationMatroids.lib +772 -0
  423. sage_wheels/share/singular/LIB/realrad.lib +1197 -0
  424. sage_wheels/share/singular/LIB/recover.lib +2628 -0
  425. sage_wheels/share/singular/LIB/redcgs.lib +3984 -0
  426. sage_wheels/share/singular/LIB/reesclos.lib +465 -0
  427. sage_wheels/share/singular/LIB/resbinomial.lib +2802 -0
  428. sage_wheels/share/singular/LIB/resgraph.lib +789 -0
  429. sage_wheels/share/singular/LIB/resjung.lib +820 -0
  430. sage_wheels/share/singular/LIB/resolve.lib +5110 -0
  431. sage_wheels/share/singular/LIB/resources.lib +170 -0
  432. sage_wheels/share/singular/LIB/reszeta.lib +5473 -0
  433. sage_wheels/share/singular/LIB/ring.lib +1328 -0
  434. sage_wheels/share/singular/LIB/ringgb.lib +343 -0
  435. sage_wheels/share/singular/LIB/rinvar.lib +1153 -0
  436. sage_wheels/share/singular/LIB/rootisolation.lib +1481 -0
  437. sage_wheels/share/singular/LIB/rootsmr.lib +709 -0
  438. sage_wheels/share/singular/LIB/rootsur.lib +886 -0
  439. sage_wheels/share/singular/LIB/rstandard.lib +607 -0
  440. sage_wheels/share/singular/LIB/rwalk.lib +336 -0
  441. sage_wheels/share/singular/LIB/sagbi.lib +1353 -0
  442. sage_wheels/share/singular/LIB/sagbiNormaliz.lib +1622 -0
  443. sage_wheels/share/singular/LIB/sagbiNormaliz0.lib +1498 -0
  444. sage_wheels/share/singular/LIB/sagbigrob.lib +449 -0
  445. sage_wheels/share/singular/LIB/schreyer.lib +321 -0
  446. sage_wheels/share/singular/LIB/schubert.lib +2551 -0
  447. sage_wheels/share/singular/LIB/sets.lib +524 -0
  448. sage_wheels/share/singular/LIB/sheafcoh.lib +1663 -0
  449. sage_wheels/share/singular/LIB/signcond.lib +437 -0
  450. sage_wheels/share/singular/LIB/sing.lib +1094 -0
  451. sage_wheels/share/singular/LIB/sing4ti2.lib +419 -0
  452. sage_wheels/share/singular/LIB/solve.lib +2243 -0
  453. sage_wheels/share/singular/LIB/spcurve.lib +1077 -0
  454. sage_wheels/share/singular/LIB/spectrum.lib +62 -0
  455. sage_wheels/share/singular/LIB/sresext.lib +757 -0
  456. sage_wheels/share/singular/LIB/ssi.lib +143 -0
  457. sage_wheels/share/singular/LIB/standard.lib +2769 -0
  458. sage_wheels/share/singular/LIB/stanleyreisner.lib +473 -0
  459. sage_wheels/share/singular/LIB/stdmodule.lib +547 -0
  460. sage_wheels/share/singular/LIB/stratify.lib +1070 -0
  461. sage_wheels/share/singular/LIB/surf.lib +506 -0
  462. sage_wheels/share/singular/LIB/surf_jupyter.lib +223 -0
  463. sage_wheels/share/singular/LIB/surfacesignature.lib +522 -0
  464. sage_wheels/share/singular/LIB/surfex.lib +1462 -0
  465. sage_wheels/share/singular/LIB/swalk.lib +877 -0
  466. sage_wheels/share/singular/LIB/symodstd.lib +1570 -0
  467. sage_wheels/share/singular/LIB/systhreads.lib +74 -0
  468. sage_wheels/share/singular/LIB/tasks.lib +1324 -0
  469. sage_wheels/share/singular/LIB/tateProdCplxNegGrad.lib +2412 -0
  470. sage_wheels/share/singular/LIB/teachstd.lib +858 -0
  471. sage_wheels/share/singular/LIB/template.lib +116 -0
  472. sage_wheels/share/singular/LIB/toric.lib +1119 -0
  473. sage_wheels/share/singular/LIB/transformation.lib +116 -0
  474. sage_wheels/share/singular/LIB/triang.lib +1197 -0
  475. sage_wheels/share/singular/LIB/tropical.lib +8741 -0
  476. sage_wheels/share/singular/LIB/tropicalEllipticCovers.lib +2922 -0
  477. sage_wheels/share/singular/LIB/tropicalNewton.lib +1128 -0
  478. sage_wheels/share/singular/LIB/tst.lib +1108 -0
  479. sage_wheels/share/singular/LIB/weierstr.lib +241 -0
  480. sage_wheels/share/singular/LIB/zeroset.lib +1478 -0
  481. sage_wheels/share/singular/emacs/.emacs-general +184 -0
  482. sage_wheels/share/singular/emacs/.emacs-singular +234 -0
  483. sage_wheels/share/singular/emacs/COPYING +44 -0
  484. sage_wheels/share/singular/emacs/cmd-cmpl.el +241 -0
  485. sage_wheels/share/singular/emacs/ex-cmpl.el +1681 -0
  486. sage_wheels/share/singular/emacs/hlp-cmpl.el +4318 -0
  487. sage_wheels/share/singular/emacs/lib-cmpl.el +179 -0
  488. sage_wheels/share/singular/emacs/singular.el +4273 -0
  489. sage_wheels/share/singular/emacs/singular.xpm +39 -0
  490. sage_wheels/share/singular/singular.idx +5002 -0
@@ -0,0 +1,911 @@
1
+ # sage_setup: distribution = sagemath-singular
2
+ r"""
3
+ Derivations of function fields: extension
4
+ """
5
+
6
+ # ****************************************************************************
7
+ # Copyright (C) 2010 William Stein <wstein@gmail.com>
8
+ # 2011-2017 Julian Rüth <julian.rueth@gmail.com>
9
+ # 2017 Alyson Deines
10
+ # 2017-2019 Kwankyu Lee
11
+ # 2018-2019 Travis Scrimshaw
12
+ # 2019 Brent Baccala
13
+ # 2022 Xavier Caruso
14
+ # 2022 Frédéric Chapoton
15
+ #
16
+ # Distributed under the terms of the GNU General Public License (GPL)
17
+ # as published by the Free Software Foundation; either version 2 of
18
+ # the License, or (at your option) any later version.
19
+ # https://www.gnu.org/licenses/
20
+ # ****************************************************************************
21
+
22
+ from sage.arith.misc import binomial
23
+ from sage.categories.homset import Hom
24
+ from sage.categories.map import Map
25
+ from sage.categories.sets_cat import Sets
26
+ from sage.rings.derivation import RingDerivationWithoutTwist
27
+
28
+ from .derivations import FunctionFieldDerivation
29
+
30
+
31
+ class FunctionFieldDerivation_separable(FunctionFieldDerivation):
32
+ """
33
+ Derivations of separable extensions.
34
+
35
+ EXAMPLES::
36
+
37
+ sage: K.<x> = FunctionField(QQ)
38
+ sage: R.<y> = K[]
39
+ sage: L.<y> = K.extension(y^2 - x)
40
+ sage: L.derivation()
41
+ d/dx
42
+ """
43
+ def __init__(self, parent, d):
44
+ """
45
+ Initialize a derivation.
46
+
47
+ INPUT:
48
+
49
+ - ``parent`` -- the parent of this derivation
50
+
51
+ - ``d`` -- a variable name or a derivation over
52
+ the base field (or something capable to create
53
+ such a derivation)
54
+
55
+ EXAMPLES::
56
+
57
+ sage: K.<x> = FunctionField(QQ)
58
+ sage: R.<y> = K[]
59
+ sage: L.<y> = K.extension(y^2 - x)
60
+ sage: d = L.derivation()
61
+ sage: TestSuite(d).run()
62
+
63
+ sage: L.derivation(y) # d/dy
64
+ 2*y*d/dx
65
+
66
+ sage: dK = K.derivation([x]); dK
67
+ x*d/dx
68
+ sage: L.derivation(dK)
69
+ x*d/dx
70
+ """
71
+ FunctionFieldDerivation.__init__(self, parent)
72
+ L = parent.domain()
73
+ C = parent.codomain()
74
+ dm = parent._defining_morphism
75
+ u = L.gen()
76
+ if d == L.gen():
77
+ d = parent._base_derivation(None)
78
+ f = L.polynomial().change_ring(L)
79
+ coeff = -f.derivative()(u) / f.map_coefficients(d)(u)
80
+ if dm is not None:
81
+ coeff = dm(coeff)
82
+ self._d = parent._base_derivation([coeff])
83
+ self._gen_image = C.one()
84
+ else:
85
+ if isinstance(d, RingDerivationWithoutTwist) and d.domain() is L.base_ring():
86
+ self._d = d
87
+ else:
88
+ self._d = d = parent._base_derivation(d)
89
+ f = L.polynomial()
90
+ if dm is None:
91
+ denom = f.derivative()(u)
92
+ else:
93
+ u = dm(u)
94
+ denom = f.derivative().map_coefficients(dm, new_base_ring=C)(u)
95
+ num = f.map_coefficients(d, new_base_ring=C)(u)
96
+ self._gen_image = -num / denom
97
+
98
+ def _call_(self, x):
99
+ r"""
100
+ Evaluate the derivation on ``x``.
101
+
102
+ INPUT:
103
+
104
+ - ``x`` -- element of the function field
105
+
106
+ EXAMPLES::
107
+
108
+ sage: K.<x> = FunctionField(QQ)
109
+ sage: R.<y> = K[]
110
+ sage: L.<y> = K.extension(y^2 - x)
111
+ sage: d = L.derivation()
112
+ sage: d(x) # indirect doctest
113
+ 1
114
+ sage: d(y)
115
+ 1/2/x*y
116
+ sage: d(y^2)
117
+ 1
118
+ """
119
+ parent = self.parent()
120
+ if x.is_zero():
121
+ return parent.codomain().zero()
122
+ x = x._x
123
+ y = parent.domain().gen()
124
+ dm = parent._defining_morphism
125
+ tmp1 = x.map_coefficients(self._d, new_base_ring=parent.codomain())
126
+ tmp2 = x.derivative()(y)
127
+ if dm is not None:
128
+ tmp2 = dm(tmp2)
129
+ y = dm(y)
130
+ return tmp1(y) + tmp2 * self._gen_image
131
+
132
+ def _add_(self, other):
133
+ """
134
+ Return the sum of this derivation and ``other``.
135
+
136
+ EXAMPLES::
137
+
138
+ sage: K.<x> = FunctionField(QQ)
139
+ sage: R.<y> = K[]
140
+ sage: L.<y> = K.extension(y^2 - x)
141
+ sage: d = L.derivation()
142
+ sage: d
143
+ d/dx
144
+ sage: d + d
145
+ 2*d/dx
146
+ """
147
+ return type(self)(self.parent(), self._d + other._d)
148
+
149
+ def _lmul_(self, factor):
150
+ """
151
+ Return the product of this derivation by the scalar ``factor``.
152
+
153
+ EXAMPLES::
154
+
155
+ sage: K.<x> = FunctionField(QQ)
156
+ sage: R.<y> = K[]
157
+ sage: L.<y> = K.extension(y^2 - x)
158
+ sage: d = L.derivation()
159
+ sage: d
160
+ d/dx
161
+ sage: y * d
162
+ y*d/dx
163
+ """
164
+ return type(self)(self.parent(), factor * self._d)
165
+
166
+
167
+ class FunctionFieldDerivation_inseparable(FunctionFieldDerivation):
168
+ def __init__(self, parent, u=None):
169
+ r"""
170
+ Initialize this derivation.
171
+
172
+ INPUT:
173
+
174
+ - ``parent`` -- the parent of this derivation
175
+
176
+ - ``u`` -- a parameter describing the derivation
177
+
178
+ EXAMPLES::
179
+
180
+ sage: K.<x> = FunctionField(GF(2))
181
+ sage: R.<y> = K[]
182
+ sage: L.<y> = K.extension(y^2 - x)
183
+ sage: d = L.derivation()
184
+
185
+ This also works for iterated non-monic extensions::
186
+
187
+ sage: K.<x> = FunctionField(GF(2))
188
+ sage: R.<y> = K[]
189
+ sage: L.<y> = K.extension(y^2 - 1/x)
190
+ sage: R.<z> = L[]
191
+ sage: M.<z> = L.extension(z^2*y - x^3)
192
+ sage: M.derivation()
193
+ d/dz
194
+
195
+ We can also create a multiple of the canonical derivation::
196
+
197
+ sage: M.derivation([x])
198
+ x*d/dz
199
+ """
200
+ FunctionFieldDerivation.__init__(self, parent)
201
+ if u is None:
202
+ self._u = parent.codomain().one()
203
+ elif u == 0 or isinstance(u, (list, tuple)):
204
+ if u == 0 or len(u) == 0:
205
+ self._u = parent.codomain().zero()
206
+ elif len(u) == 1:
207
+ self._u = parent.codomain()(u[0])
208
+ else:
209
+ raise ValueError("the length does not match")
210
+ else:
211
+ raise ValueError("you must pass in either a name of a variable or a list of coefficients")
212
+
213
+ def _call_(self, x):
214
+ r"""
215
+ Evaluate the derivation on ``x``.
216
+
217
+ INPUT:
218
+
219
+ - ``x`` -- an element of the function field
220
+
221
+ EXAMPLES::
222
+
223
+ sage: K.<x> = FunctionField(GF(2))
224
+ sage: R.<y> = K[]
225
+ sage: L.<y> = K.extension(y^2 - x)
226
+ sage: d = L.derivation()
227
+ sage: d(x) # indirect doctest
228
+ 0
229
+ sage: d(y)
230
+ 1
231
+ sage: d(y^2)
232
+ 0
233
+ """
234
+ if x.is_zero():
235
+ return self.codomain().zero()
236
+ parent = self.parent()
237
+ return self._u * parent._d(parent._t(x))
238
+
239
+ def _add_(self, other):
240
+ """
241
+ Return the sum of this derivation and ``other``.
242
+
243
+ EXAMPLES::
244
+
245
+ sage: K.<x> = FunctionField(GF(3))
246
+ sage: R.<y> = K[]
247
+ sage: L.<y> = K.extension(y^3 - x)
248
+ sage: d = L.derivation()
249
+ sage: d
250
+ d/dy
251
+ sage: d + d
252
+ 2*d/dy
253
+ """
254
+ return type(self)(self.parent(), [self._u + other._u])
255
+
256
+ def _lmul_(self, factor):
257
+ """
258
+ Return the product of this derivation by the scalar ``factor``.
259
+
260
+ EXAMPLES::
261
+
262
+ sage: K.<x> = FunctionField(GF(2))
263
+ sage: R.<y> = K[]
264
+ sage: L.<y> = K.extension(y^2 - x)
265
+ sage: d = L.derivation()
266
+ sage: d
267
+ d/dy
268
+ sage: y * d
269
+ y*d/dy
270
+ """
271
+ return type(self)(self.parent(), [factor * self._u])
272
+
273
+
274
+ class FunctionFieldHigherDerivation(Map):
275
+ """
276
+ Base class of higher derivations on function fields.
277
+
278
+ INPUT:
279
+
280
+ - ``field`` -- function field on which the derivation operates
281
+
282
+ EXAMPLES::
283
+
284
+ sage: F.<x> = FunctionField(GF(2))
285
+ sage: F.higher_derivation()
286
+ Higher derivation map:
287
+ From: Rational function field in x over Finite Field of size 2
288
+ To: Rational function field in x over Finite Field of size 2
289
+ """
290
+ def __init__(self, field):
291
+ """
292
+ Initialize.
293
+
294
+ TESTS::
295
+
296
+ sage: F.<x> = FunctionField(GF(4)) # needs sage.rings.finite_rings
297
+ sage: h = F.higher_derivation() # needs sage.rings.finite_rings
298
+ sage: TestSuite(h).run(skip='_test_category') # needs sage.rings.finite_rings
299
+ """
300
+ Map.__init__(self, Hom(field, field, Sets()))
301
+ self._field = field
302
+ # elements of a prime finite field do not have pth_root method
303
+ if field.constant_base_field().is_prime_field():
304
+ self._pth_root_func = _pth_root_in_prime_field
305
+ else:
306
+ self._pth_root_func = _pth_root_in_finite_field
307
+
308
+ def _repr_type(self) -> str:
309
+ """
310
+ Return a string containing the type of the map.
311
+
312
+ EXAMPLES::
313
+
314
+ sage: F.<x> = FunctionField(GF(2))
315
+ sage: h = F.higher_derivation()
316
+ sage: h # indirect doctest
317
+ Higher derivation map:
318
+ From: Rational function field in x over Finite Field of size 2
319
+ To: Rational function field in x over Finite Field of size 2
320
+ """
321
+ return 'Higher derivation'
322
+
323
+ def __eq__(self, other) -> bool:
324
+ """
325
+ Test if ``self`` equals ``other``.
326
+
327
+ TESTS::
328
+
329
+ sage: F.<x> = FunctionField(GF(2))
330
+ sage: h = F.higher_derivation()
331
+ sage: loads(dumps(h)) == h
332
+ True
333
+ """
334
+ if isinstance(other, FunctionFieldHigherDerivation):
335
+ return self._field == other._field
336
+ return False
337
+
338
+
339
+ def _pth_root_in_prime_field(e):
340
+ """
341
+ Return the `p`-th root of element ``e`` in a prime finite field.
342
+
343
+ TESTS::
344
+
345
+ sage: from sage.rings.function_field.derivations_polymod import _pth_root_in_prime_field
346
+ sage: p = 5
347
+ sage: F.<a> = GF(p)
348
+ sage: e = F.random_element()
349
+ sage: _pth_root_in_prime_field(e)^p == e
350
+ True
351
+ """
352
+ return e
353
+
354
+
355
+ def _pth_root_in_finite_field(e):
356
+ """
357
+ Return the `p`-th root of element ``e`` in a finite field.
358
+
359
+ TESTS::
360
+
361
+ sage: from sage.rings.function_field.derivations_polymod import _pth_root_in_finite_field
362
+ sage: p = 3
363
+ sage: F.<a> = GF(p^2) # needs sage.rings.finite_rings
364
+ sage: e = F.random_element() # needs sage.rings.finite_rings
365
+ sage: _pth_root_in_finite_field(e)^p == e # needs sage.rings.finite_rings
366
+ True
367
+ """
368
+ return e.pth_root()
369
+
370
+
371
+ class RationalFunctionFieldHigherDerivation_global(FunctionFieldHigherDerivation):
372
+ """
373
+ Higher derivations of rational function fields over finite fields.
374
+
375
+ INPUT:
376
+
377
+ - ``field`` -- function field on which the derivation operates
378
+
379
+ EXAMPLES::
380
+
381
+ sage: F.<x> = FunctionField(GF(2))
382
+ sage: h = F.higher_derivation()
383
+ sage: h
384
+ Higher derivation map:
385
+ From: Rational function field in x over Finite Field of size 2
386
+ To: Rational function field in x over Finite Field of size 2
387
+ sage: h(x^2, 2)
388
+ 1
389
+ """
390
+ def __init__(self, field):
391
+ """
392
+ Initialize.
393
+
394
+ TESTS::
395
+
396
+ sage: F.<x> = FunctionField(GF(2))
397
+ sage: h = F.higher_derivation()
398
+ sage: TestSuite(h).run(skip='_test_category')
399
+ """
400
+ FunctionFieldHigherDerivation.__init__(self, field)
401
+
402
+ self._p = field.characteristic()
403
+ self._separating_element = field.gen()
404
+
405
+ def _call_with_args(self, f, args=(), kwds={}):
406
+ """
407
+ Call the derivation with args and kwds.
408
+
409
+ EXAMPLES::
410
+
411
+ sage: F.<x> = FunctionField(GF(2))
412
+ sage: h = F.higher_derivation()
413
+ sage: h(x^2, 2) # indirect doctest
414
+ 1
415
+ """
416
+ return self._derive(f, *args, **kwds)
417
+
418
+ def _derive(self, f, i, separating_element=None):
419
+ """
420
+ Return the `i`-th derivative of ``f`` with respect to the
421
+ separating element.
422
+
423
+ This implements Hess' Algorithm 26 in [Hes2002b]_.
424
+
425
+ EXAMPLES::
426
+
427
+ sage: F.<x> = FunctionField(GF(2))
428
+ sage: h = F.higher_derivation()
429
+ sage: h._derive(x^3, 0)
430
+ x^3
431
+ sage: h._derive(x^3, 1)
432
+ x^2
433
+ sage: h._derive(x^3, 2)
434
+ x
435
+ sage: h._derive(x^3, 3)
436
+ 1
437
+ sage: h._derive(x^3, 4)
438
+ 0
439
+ """
440
+ F = self._field
441
+ p = self._p
442
+
443
+ if separating_element is None:
444
+ x = self._separating_element
445
+
446
+ def derivative(f):
447
+ return f.derivative()
448
+ else:
449
+ x = separating_element
450
+ xderinv = ~(x.derivative())
451
+
452
+ def derivative(f):
453
+ return xderinv * f.derivative()
454
+
455
+ prime_power_representation = self._prime_power_representation
456
+
457
+ def derive(f, i):
458
+ # Step 1: zero-th derivative
459
+ if i == 0:
460
+ return f
461
+ # Step 2:
462
+ s = i % p
463
+ r = i // p
464
+ # Step 3:
465
+ e = f
466
+ while s > 0:
467
+ e = derivative(e) / F(s)
468
+ s -= 1
469
+ # Step 4:
470
+ if r == 0:
471
+ return e
472
+ else:
473
+ # Step 5:
474
+ lambdas = prime_power_representation(e, x)
475
+ # Step 6 and 7:
476
+ der = 0
477
+ for i in range(p):
478
+ mu = derive(lambdas[i], r)
479
+ der += mu**p * x**i
480
+ return der
481
+
482
+ return derive(f, i)
483
+
484
+ def _prime_power_representation(self, f, separating_element=None):
485
+ """
486
+ Return `p`-th power representation of the element ``f``.
487
+
488
+ Here `p` is the characteristic of the function field.
489
+
490
+ This implements Hess' Algorithm 25.
491
+
492
+ EXAMPLES::
493
+
494
+ sage: F.<x> = FunctionField(GF(2))
495
+ sage: h = F.higher_derivation()
496
+ sage: h._prime_power_representation(x^2 + x + 1)
497
+ [x + 1, 1]
498
+ sage: x^2 + x + 1 == _[0]^2 + _[1]^2 * x
499
+ True
500
+ """
501
+ F = self._field
502
+ p = self._p
503
+
504
+ if separating_element is None:
505
+ x = self._separating_element
506
+
507
+ def derivative(f):
508
+ return f.derivative()
509
+ else:
510
+ x = separating_element
511
+ xderinv = ~(x.derivative())
512
+
513
+ def derivative(f):
514
+ return xderinv * f.derivative()
515
+
516
+ # Step 1:
517
+ a = [f]
518
+ aprev = f
519
+ j = 1
520
+ while j < p:
521
+ aprev = derivative(aprev) / F(j)
522
+ a.append(aprev)
523
+ j += 1
524
+ # Step 2:
525
+ b = a
526
+ j = p - 2
527
+ while j >= 0:
528
+ b[j] -= sum(binomial(i, j) * b[i] * x**(i - j)
529
+ for i in range(j + 1, p))
530
+ j -= 1
531
+ # Step 3
532
+ return [self._pth_root(c) for c in b]
533
+
534
+ def _pth_root(self, c):
535
+ """
536
+ Return the `p`-th root of the rational function ``c``.
537
+
538
+ INPUT:
539
+
540
+ - ``c`` -- rational function
541
+
542
+ EXAMPLES::
543
+
544
+ sage: F.<x> = FunctionField(GF(2))
545
+ sage: h = F.higher_derivation()
546
+ sage: h._pth_root((x^2+1)^2)
547
+ x^2 + 1
548
+ """
549
+ K = self._field
550
+ p = self._p
551
+
552
+ R = K._field.ring()
553
+
554
+ poly = c.numerator()
555
+ num = R([self._pth_root_func(poly[i])
556
+ for i in range(0, poly.degree() + 1, p)])
557
+ poly = c.denominator()
558
+ den = R([self._pth_root_func(poly[i])
559
+ for i in range(0, poly.degree() + 1, p)])
560
+ return K.element_class(K, num / den)
561
+
562
+
563
+ class FunctionFieldHigherDerivation_global(FunctionFieldHigherDerivation):
564
+ """
565
+ Higher derivations of global function fields.
566
+
567
+ INPUT:
568
+
569
+ - ``field`` -- function field on which the derivation operates
570
+
571
+ EXAMPLES::
572
+
573
+ sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]
574
+ sage: L.<y> = K.extension(Y^3 + x + x^3*Y)
575
+ sage: h = L.higher_derivation()
576
+ sage: h
577
+ Higher derivation map:
578
+ From: Function field in y defined by y^3 + x^3*y + x
579
+ To: Function field in y defined by y^3 + x^3*y + x
580
+ sage: h(y^2, 2)
581
+ ((x^7 + 1)/x^2)*y^2 + x^3*y
582
+ """
583
+
584
+ def __init__(self, field):
585
+ """
586
+ Initialize.
587
+
588
+ TESTS::
589
+
590
+ sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]
591
+ sage: L.<y> = K.extension(Y^3 + x + x^3*Y)
592
+ sage: h = L.higher_derivation()
593
+ sage: TestSuite(h).run(skip=['_test_category'])
594
+ """
595
+ from sage.matrix.constructor import matrix
596
+
597
+ FunctionFieldHigherDerivation.__init__(self, field)
598
+
599
+ self._p = field.characteristic()
600
+ self._separating_element = field(field.base_field().gen())
601
+
602
+ p = field.characteristic()
603
+ y = field.gen()
604
+
605
+ # matrix for pth power map; used in _prime_power_representation method
606
+ self.__pth_root_matrix = matrix([(y**(i * p)).list()
607
+ for i in range(field.degree())]).transpose()
608
+
609
+ # cache computed higher derivatives to speed up later computations
610
+ self._cache = {}
611
+
612
+ def _call_with_args(self, f, args, kwds):
613
+ """
614
+ Call the derivation with ``args`` and ``kwds``.
615
+
616
+ EXAMPLES::
617
+
618
+ sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]
619
+ sage: L.<y> = K.extension(Y^3 + x + x^3*Y)
620
+ sage: h = L.higher_derivation()
621
+ sage: h(y^2, 2) # indirect doctest
622
+ ((x^7 + 1)/x^2)*y^2 + x^3*y
623
+ """
624
+ return self._derive(f, *args, **kwds)
625
+
626
+ def _derive(self, f, i, separating_element=None):
627
+ """
628
+ Return ``i``-th derivative of ``f`` with respect to the separating
629
+ element.
630
+
631
+ This implements Hess' Algorithm 26 in [Hes2002b]_.
632
+
633
+ EXAMPLES::
634
+
635
+ sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]
636
+ sage: L.<y> = K.extension(Y^3 + x + x^3*Y)
637
+ sage: h = L.higher_derivation()
638
+ sage: y^3
639
+ x^3*y + x
640
+ sage: h._derive(y^3, 0)
641
+ x^3*y + x
642
+ sage: h._derive(y^3, 1)
643
+ x^4*y^2 + 1
644
+ sage: h._derive(y^3, 2)
645
+ x^10*y^2 + (x^8 + x)*y
646
+ sage: h._derive(y^3, 3)
647
+ (x^9 + x^2)*y^2 + x^7*y
648
+ sage: h._derive(y^3, 4)
649
+ (x^22 + x)*y^2 + ((x^21 + x^14 + x^7 + 1)/x)*y
650
+ """
651
+ F = self._field
652
+ p = self._p
653
+ frob = F.frobenius_endomorphism() # p-th power map
654
+
655
+ if separating_element is None:
656
+ x = self._separating_element
657
+
658
+ def derivative(f):
659
+ return f.derivative()
660
+ else:
661
+ x = separating_element
662
+ xderinv = ~(x.derivative())
663
+
664
+ def derivative(f):
665
+ return xderinv * f.derivative()
666
+
667
+ try:
668
+ cache = self._cache[separating_element]
669
+ except KeyError:
670
+ cache = self._cache[separating_element] = {}
671
+
672
+ def derive(f, i):
673
+ # Step 1: zero-th derivative
674
+ if i == 0:
675
+ return f
676
+
677
+ # Step 1.5: use cached result if available
678
+ try:
679
+ return cache[f, i]
680
+ except KeyError:
681
+ pass
682
+
683
+ # Step 2:
684
+ s = i % p
685
+ r = i // p
686
+ # Step 3:
687
+ e = f
688
+ while s > 0:
689
+ e = derivative(e) / F(s)
690
+ s -= 1
691
+ # Step 4:
692
+ if r == 0:
693
+ der = e
694
+ else:
695
+ # Step 5: inlined self._prime_power_representation
696
+ a = [e]
697
+ aprev = e
698
+ j = 1
699
+ while j < p:
700
+ aprev = derivative(aprev) / F(j)
701
+ a.append(aprev)
702
+ j += 1
703
+ b = a
704
+ j = p - 2
705
+ while j >= 0:
706
+ b[j] -= sum(binomial(k, j) * b[k] * x**(k - j)
707
+ for k in range(j + 1, p))
708
+ j -= 1
709
+ lambdas = [self._pth_root(c) for c in b]
710
+
711
+ # Step 6 and 7:
712
+ der = 0
713
+ xpow = 1
714
+ for k in range(p):
715
+ mu = derive(lambdas[k], r)
716
+ der += frob(mu) * xpow
717
+ xpow *= x
718
+
719
+ cache[f, i] = der
720
+ return der
721
+
722
+ return derive(f, i)
723
+
724
+ def _prime_power_representation(self, f, separating_element=None):
725
+ """
726
+ Return `p`-th power representation of the element ``f``.
727
+
728
+ Here `p` is the characteristic of the function field.
729
+
730
+ This implements Hess' Algorithm 25 in [Hes2002b]_.
731
+
732
+ EXAMPLES::
733
+
734
+ sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]
735
+ sage: L.<y> = K.extension(Y^3 + x + x^3*Y)
736
+ sage: h = L.higher_derivation()
737
+ sage: b = h._prime_power_representation(y)
738
+ sage: y == b[0]^2 + b[1]^2 * x
739
+ True
740
+ """
741
+ F = self._field
742
+ p = self._p
743
+
744
+ if separating_element is None:
745
+ x = self._separating_element
746
+
747
+ def derivative(f):
748
+ return f.derivative()
749
+ else:
750
+ x = separating_element
751
+ xderinv = ~(x.derivative())
752
+
753
+ def derivative(f):
754
+ return xderinv * f.derivative()
755
+
756
+ # Step 1:
757
+ a = [f]
758
+ aprev = f
759
+ j = 1
760
+ while j < p:
761
+ aprev = derivative(aprev) / F(j)
762
+ a.append(aprev)
763
+ j += 1
764
+ # Step 2:
765
+ b = a
766
+ j = p - 2
767
+ while j >= 0:
768
+ b[j] -= sum(binomial(i, j) * b[i] * x**(i - j)
769
+ for i in range(j + 1, p))
770
+ j -= 1
771
+ # Step 3
772
+ return [self._pth_root(c) for c in b]
773
+
774
+ def _pth_root(self, c):
775
+ """
776
+ Return the `p`-th root of function field element ``c``.
777
+
778
+ EXAMPLES::
779
+
780
+ sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]
781
+ sage: L.<y> = K.extension(Y^3 + x + x^3*Y)
782
+ sage: h = L.higher_derivation()
783
+ sage: h._pth_root((x^2 + y^2)^2)
784
+ y^2 + x^2
785
+ """
786
+ from sage.modules.free_module_element import vector
787
+
788
+ K = self._field.base_field() # rational function field
789
+ p = self._p
790
+
791
+ coeffs = []
792
+ for d in self.__pth_root_matrix.solve_right(vector(c.list())):
793
+ poly = d.numerator()
794
+ num = K([self._pth_root_func(poly[i])
795
+ for i in range(0, poly.degree() + 1, p)])
796
+ poly = d.denominator()
797
+ den = K([self._pth_root_func(poly[i])
798
+ for i in range(0, poly.degree() + 1, p)])
799
+ coeffs.append(num / den)
800
+ return self._field(coeffs)
801
+
802
+
803
+ class FunctionFieldHigherDerivation_char_zero(FunctionFieldHigherDerivation):
804
+ """
805
+ Higher derivations of function fields of characteristic zero.
806
+
807
+ INPUT:
808
+
809
+ - ``field`` -- function field on which the derivation operates
810
+
811
+ EXAMPLES::
812
+
813
+ sage: K.<x> = FunctionField(QQ); _.<Y> = K[]
814
+ sage: L.<y> = K.extension(Y^3 + x + x^3*Y)
815
+ sage: h = L.higher_derivation()
816
+ sage: h
817
+ Higher derivation map:
818
+ From: Function field in y defined by y^3 + x^3*y + x
819
+ To: Function field in y defined by y^3 + x^3*y + x
820
+ sage: h(y,1) == -(3*x^2*y+1)/(3*y^2+x^3)
821
+ True
822
+ sage: h(y^2,1) == -2*y*(3*x^2*y+1)/(3*y^2+x^3)
823
+ True
824
+ sage: e = L.random_element()
825
+ sage: h(h(e,1),1) == 2*h(e,2)
826
+ True
827
+ sage: h(h(h(e,1),1),1) == 3*2*h(e,3)
828
+ True
829
+ """
830
+ def __init__(self, field):
831
+ """
832
+ Initialize.
833
+
834
+ TESTS::
835
+
836
+ sage: K.<x> = FunctionField(QQ); _.<Y> = K[]
837
+ sage: L.<y> = K.extension(Y^3 + x + x^3*Y)
838
+ sage: h = L.higher_derivation()
839
+ sage: TestSuite(h).run(skip=['_test_category'])
840
+ """
841
+ FunctionFieldHigherDerivation.__init__(self, field)
842
+
843
+ self._separating_element = field(field.base_field().gen())
844
+
845
+ # cache computed higher derivatives to speed up later computations
846
+ self._cache = {}
847
+
848
+ def _call_with_args(self, f, args, kwds):
849
+ """
850
+ Call the derivation with ``args`` and ``kwds``.
851
+
852
+ EXAMPLES::
853
+
854
+ sage: K.<x> = FunctionField(QQ); _.<Y> = K[]
855
+ sage: L.<y> = K.extension(Y^3 + x + x^3*Y)
856
+ sage: h = L.higher_derivation()
857
+ sage: e = L.random_element()
858
+ sage: h(h(e,1),1) == 2*h(e,2) # indirect doctest
859
+ True
860
+ """
861
+ return self._derive(f, *args, **kwds)
862
+
863
+ def _derive(self, f, i, separating_element=None):
864
+ """
865
+ Return ``i``-th derivative of ``f`` with respect to the separating
866
+ element.
867
+
868
+ EXAMPLES::
869
+
870
+ sage: K.<x> = FunctionField(QQ); _.<Y> = K[]
871
+ sage: L.<y> = K.extension(Y^3 + x + x^3*Y)
872
+ sage: h = L.higher_derivation()
873
+ sage: y^3
874
+ -x^3*y - x
875
+ sage: h._derive(y^3, 0)
876
+ -x^3*y - x
877
+ sage: h._derive(y^3, 1)
878
+ (-21/4*x^4/(x^7 + 27/4))*y^2 + ((-9/2*x^9 - 45/2*x^2)/(x^7 + 27/4))*y + (-9/2*x^7 - 27/4)/(x^7 + 27/4)
879
+ """
880
+ F = self._field
881
+
882
+ if separating_element is None:
883
+ x = self._separating_element
884
+ xderinv = 1
885
+ else:
886
+ x = separating_element
887
+ xderinv = ~(x.derivative())
888
+
889
+ try:
890
+ cache = self._cache[separating_element]
891
+ except KeyError:
892
+ cache = self._cache[separating_element] = {}
893
+
894
+ if i == 0:
895
+ return f
896
+
897
+ try:
898
+ return cache[f, i]
899
+ except KeyError:
900
+ pass
901
+
902
+ s = i
903
+ e = f
904
+ while s > 0:
905
+ e = xderinv * e.derivative() / F(s)
906
+ s -= 1
907
+
908
+ der = e
909
+
910
+ cache[f, i] = der
911
+ return der