passagemath-modules 10.6.31rc3__cp314-cp314-musllinux_1_2_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-modules might be problematic. Click here for more details.

Files changed (807) hide show
  1. passagemath_modules-10.6.31rc3.dist-info/METADATA +281 -0
  2. passagemath_modules-10.6.31rc3.dist-info/RECORD +807 -0
  3. passagemath_modules-10.6.31rc3.dist-info/WHEEL +5 -0
  4. passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
  5. passagemath_modules.libs/libgcc_s-2d945d6c.so.1 +0 -0
  6. passagemath_modules.libs/libgfortran-67378ab2.so.5.0.0 +0 -0
  7. passagemath_modules.libs/libgmp-28992bcb.so.10.5.0 +0 -0
  8. passagemath_modules.libs/libgsl-23768756.so.28.0.0 +0 -0
  9. passagemath_modules.libs/libmpc-7897025b.so.3.3.1 +0 -0
  10. passagemath_modules.libs/libmpfr-e34bb864.so.6.2.1 +0 -0
  11. passagemath_modules.libs/libopenblasp-r0-503f0c35.3.29.so +0 -0
  12. sage/algebras/all__sagemath_modules.py +20 -0
  13. sage/algebras/catalog.py +148 -0
  14. sage/algebras/clifford_algebra.py +3107 -0
  15. sage/algebras/clifford_algebra_element.cpython-314-aarch64-linux-musl.so +0 -0
  16. sage/algebras/clifford_algebra_element.pxd +16 -0
  17. sage/algebras/clifford_algebra_element.pyx +997 -0
  18. sage/algebras/commutative_dga.py +4252 -0
  19. sage/algebras/exterior_algebra_groebner.cpython-314-aarch64-linux-musl.so +0 -0
  20. sage/algebras/exterior_algebra_groebner.pxd +55 -0
  21. sage/algebras/exterior_algebra_groebner.pyx +727 -0
  22. sage/algebras/finite_dimensional_algebras/all.py +2 -0
  23. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +1029 -0
  24. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-314-aarch64-linux-musl.so +0 -0
  25. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +12 -0
  26. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +706 -0
  27. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_ideal.py +196 -0
  28. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_morphism.py +255 -0
  29. sage/algebras/finite_gca.py +528 -0
  30. sage/algebras/group_algebra.py +232 -0
  31. sage/algebras/lie_algebras/abelian.py +197 -0
  32. sage/algebras/lie_algebras/affine_lie_algebra.py +1213 -0
  33. sage/algebras/lie_algebras/all.py +25 -0
  34. sage/algebras/lie_algebras/all__sagemath_modules.py +1 -0
  35. sage/algebras/lie_algebras/bch.py +177 -0
  36. sage/algebras/lie_algebras/bgg_dual_module.py +1184 -0
  37. sage/algebras/lie_algebras/bgg_resolution.py +232 -0
  38. sage/algebras/lie_algebras/center_uea.py +767 -0
  39. sage/algebras/lie_algebras/classical_lie_algebra.py +2516 -0
  40. sage/algebras/lie_algebras/examples.py +683 -0
  41. sage/algebras/lie_algebras/free_lie_algebra.py +973 -0
  42. sage/algebras/lie_algebras/heisenberg.py +820 -0
  43. sage/algebras/lie_algebras/lie_algebra.py +1562 -0
  44. sage/algebras/lie_algebras/lie_algebra_element.cpython-314-aarch64-linux-musl.so +0 -0
  45. sage/algebras/lie_algebras/lie_algebra_element.pxd +68 -0
  46. sage/algebras/lie_algebras/lie_algebra_element.pyx +2122 -0
  47. sage/algebras/lie_algebras/morphism.py +661 -0
  48. sage/algebras/lie_algebras/nilpotent_lie_algebra.py +457 -0
  49. sage/algebras/lie_algebras/onsager.py +1324 -0
  50. sage/algebras/lie_algebras/poincare_birkhoff_witt.py +816 -0
  51. sage/algebras/lie_algebras/quotient.py +462 -0
  52. sage/algebras/lie_algebras/rank_two_heisenberg_virasoro.py +355 -0
  53. sage/algebras/lie_algebras/representation.py +1040 -0
  54. sage/algebras/lie_algebras/structure_coefficients.py +459 -0
  55. sage/algebras/lie_algebras/subalgebra.py +967 -0
  56. sage/algebras/lie_algebras/symplectic_derivation.py +289 -0
  57. sage/algebras/lie_algebras/verma_module.py +1630 -0
  58. sage/algebras/lie_algebras/virasoro.py +1186 -0
  59. sage/algebras/octonion_algebra.cpython-314-aarch64-linux-musl.so +0 -0
  60. sage/algebras/octonion_algebra.pxd +20 -0
  61. sage/algebras/octonion_algebra.pyx +987 -0
  62. sage/algebras/orlik_solomon.py +907 -0
  63. sage/algebras/orlik_terao.py +779 -0
  64. sage/algebras/steenrod/all.py +7 -0
  65. sage/algebras/steenrod/steenrod_algebra.py +4258 -0
  66. sage/algebras/steenrod/steenrod_algebra_bases.py +1179 -0
  67. sage/algebras/steenrod/steenrod_algebra_misc.py +1167 -0
  68. sage/algebras/steenrod/steenrod_algebra_mult.py +954 -0
  69. sage/algebras/weyl_algebra.py +1126 -0
  70. sage/all__sagemath_modules.py +62 -0
  71. sage/calculus/all__sagemath_modules.py +19 -0
  72. sage/calculus/expr.py +205 -0
  73. sage/calculus/integration.cpython-314-aarch64-linux-musl.so +0 -0
  74. sage/calculus/integration.pyx +698 -0
  75. sage/calculus/interpolation.cpython-314-aarch64-linux-musl.so +0 -0
  76. sage/calculus/interpolation.pxd +13 -0
  77. sage/calculus/interpolation.pyx +387 -0
  78. sage/calculus/interpolators.cpython-314-aarch64-linux-musl.so +0 -0
  79. sage/calculus/interpolators.pyx +326 -0
  80. sage/calculus/ode.cpython-314-aarch64-linux-musl.so +0 -0
  81. sage/calculus/ode.pxd +5 -0
  82. sage/calculus/ode.pyx +610 -0
  83. sage/calculus/riemann.cpython-314-aarch64-linux-musl.so +0 -0
  84. sage/calculus/riemann.pyx +1521 -0
  85. sage/calculus/test_sympy.py +201 -0
  86. sage/calculus/transforms/all.py +7 -0
  87. sage/calculus/transforms/dft.py +844 -0
  88. sage/calculus/transforms/dwt.cpython-314-aarch64-linux-musl.so +0 -0
  89. sage/calculus/transforms/dwt.pxd +7 -0
  90. sage/calculus/transforms/dwt.pyx +160 -0
  91. sage/calculus/transforms/fft.cpython-314-aarch64-linux-musl.so +0 -0
  92. sage/calculus/transforms/fft.pxd +12 -0
  93. sage/calculus/transforms/fft.pyx +487 -0
  94. sage/calculus/wester.py +662 -0
  95. sage/coding/abstract_code.py +1108 -0
  96. sage/coding/ag_code.py +868 -0
  97. sage/coding/ag_code_decoders.cpython-314-aarch64-linux-musl.so +0 -0
  98. sage/coding/ag_code_decoders.pyx +2639 -0
  99. sage/coding/all.py +15 -0
  100. sage/coding/bch_code.py +494 -0
  101. sage/coding/binary_code.cpython-314-aarch64-linux-musl.so +0 -0
  102. sage/coding/binary_code.pxd +124 -0
  103. sage/coding/binary_code.pyx +4139 -0
  104. sage/coding/bounds_catalog.py +43 -0
  105. sage/coding/channel.py +819 -0
  106. sage/coding/channels_catalog.py +29 -0
  107. sage/coding/code_bounds.py +755 -0
  108. sage/coding/code_constructions.py +804 -0
  109. sage/coding/codes_catalog.py +111 -0
  110. sage/coding/cyclic_code.py +1329 -0
  111. sage/coding/databases.py +316 -0
  112. sage/coding/decoder.py +373 -0
  113. sage/coding/decoders_catalog.py +88 -0
  114. sage/coding/delsarte_bounds.py +709 -0
  115. sage/coding/encoder.py +390 -0
  116. sage/coding/encoders_catalog.py +64 -0
  117. sage/coding/extended_code.py +468 -0
  118. sage/coding/gabidulin_code.py +1058 -0
  119. sage/coding/golay_code.py +404 -0
  120. sage/coding/goppa_code.py +441 -0
  121. sage/coding/grs_code.py +2371 -0
  122. sage/coding/guava.py +107 -0
  123. sage/coding/guruswami_sudan/all.py +1 -0
  124. sage/coding/guruswami_sudan/gs_decoder.py +897 -0
  125. sage/coding/guruswami_sudan/interpolation.py +409 -0
  126. sage/coding/guruswami_sudan/utils.py +176 -0
  127. sage/coding/hamming_code.py +176 -0
  128. sage/coding/information_set_decoder.py +1032 -0
  129. sage/coding/kasami_codes.cpython-314-aarch64-linux-musl.so +0 -0
  130. sage/coding/kasami_codes.pyx +351 -0
  131. sage/coding/linear_code.py +3067 -0
  132. sage/coding/linear_code_no_metric.py +1354 -0
  133. sage/coding/linear_rank_metric.py +961 -0
  134. sage/coding/parity_check_code.py +353 -0
  135. sage/coding/punctured_code.py +719 -0
  136. sage/coding/reed_muller_code.py +999 -0
  137. sage/coding/self_dual_codes.py +942 -0
  138. sage/coding/source_coding/all.py +2 -0
  139. sage/coding/source_coding/huffman.py +553 -0
  140. sage/coding/subfield_subcode.py +423 -0
  141. sage/coding/two_weight_db.py +399 -0
  142. sage/combinat/all__sagemath_modules.py +7 -0
  143. sage/combinat/cartesian_product.py +347 -0
  144. sage/combinat/family.py +11 -0
  145. sage/combinat/free_module.py +1977 -0
  146. sage/combinat/root_system/all.py +147 -0
  147. sage/combinat/root_system/ambient_space.py +527 -0
  148. sage/combinat/root_system/associahedron.py +471 -0
  149. sage/combinat/root_system/braid_move_calculator.py +143 -0
  150. sage/combinat/root_system/braid_orbit.cpython-314-aarch64-linux-musl.so +0 -0
  151. sage/combinat/root_system/braid_orbit.pyx +144 -0
  152. sage/combinat/root_system/branching_rules.py +2301 -0
  153. sage/combinat/root_system/cartan_matrix.py +1245 -0
  154. sage/combinat/root_system/cartan_type.py +3069 -0
  155. sage/combinat/root_system/coxeter_group.py +162 -0
  156. sage/combinat/root_system/coxeter_matrix.py +1261 -0
  157. sage/combinat/root_system/coxeter_type.py +681 -0
  158. sage/combinat/root_system/dynkin_diagram.py +900 -0
  159. sage/combinat/root_system/extended_affine_weyl_group.py +2993 -0
  160. sage/combinat/root_system/fundamental_group.py +795 -0
  161. sage/combinat/root_system/hecke_algebra_representation.py +1203 -0
  162. sage/combinat/root_system/integrable_representations.py +1227 -0
  163. sage/combinat/root_system/non_symmetric_macdonald_polynomials.py +1965 -0
  164. sage/combinat/root_system/pieri_factors.py +1147 -0
  165. sage/combinat/root_system/plot.py +1615 -0
  166. sage/combinat/root_system/root_lattice_realization_algebras.py +1214 -0
  167. sage/combinat/root_system/root_lattice_realizations.py +4628 -0
  168. sage/combinat/root_system/root_space.py +487 -0
  169. sage/combinat/root_system/root_system.py +882 -0
  170. sage/combinat/root_system/type_A.py +348 -0
  171. sage/combinat/root_system/type_A_affine.py +227 -0
  172. sage/combinat/root_system/type_A_infinity.py +241 -0
  173. sage/combinat/root_system/type_B.py +347 -0
  174. sage/combinat/root_system/type_BC_affine.py +287 -0
  175. sage/combinat/root_system/type_B_affine.py +216 -0
  176. sage/combinat/root_system/type_C.py +317 -0
  177. sage/combinat/root_system/type_C_affine.py +188 -0
  178. sage/combinat/root_system/type_D.py +357 -0
  179. sage/combinat/root_system/type_D_affine.py +208 -0
  180. sage/combinat/root_system/type_E.py +641 -0
  181. sage/combinat/root_system/type_E_affine.py +231 -0
  182. sage/combinat/root_system/type_F.py +387 -0
  183. sage/combinat/root_system/type_F_affine.py +137 -0
  184. sage/combinat/root_system/type_G.py +293 -0
  185. sage/combinat/root_system/type_G_affine.py +132 -0
  186. sage/combinat/root_system/type_H.py +105 -0
  187. sage/combinat/root_system/type_I.py +110 -0
  188. sage/combinat/root_system/type_Q.py +150 -0
  189. sage/combinat/root_system/type_affine.py +509 -0
  190. sage/combinat/root_system/type_dual.py +704 -0
  191. sage/combinat/root_system/type_folded.py +301 -0
  192. sage/combinat/root_system/type_marked.py +748 -0
  193. sage/combinat/root_system/type_reducible.py +601 -0
  194. sage/combinat/root_system/type_relabel.py +730 -0
  195. sage/combinat/root_system/type_super_A.py +837 -0
  196. sage/combinat/root_system/weight_lattice_realizations.py +1188 -0
  197. sage/combinat/root_system/weight_space.py +639 -0
  198. sage/combinat/root_system/weyl_characters.py +2238 -0
  199. sage/crypto/__init__.py +4 -0
  200. sage/crypto/all.py +28 -0
  201. sage/crypto/block_cipher/all.py +7 -0
  202. sage/crypto/block_cipher/des.py +1065 -0
  203. sage/crypto/block_cipher/miniaes.py +2171 -0
  204. sage/crypto/block_cipher/present.py +909 -0
  205. sage/crypto/block_cipher/sdes.py +1527 -0
  206. sage/crypto/boolean_function.cpython-314-aarch64-linux-musl.so +0 -0
  207. sage/crypto/boolean_function.pxd +10 -0
  208. sage/crypto/boolean_function.pyx +1487 -0
  209. sage/crypto/cipher.py +78 -0
  210. sage/crypto/classical.py +3668 -0
  211. sage/crypto/classical_cipher.py +569 -0
  212. sage/crypto/cryptosystem.py +387 -0
  213. sage/crypto/key_exchange/all.py +7 -0
  214. sage/crypto/key_exchange/catalog.py +24 -0
  215. sage/crypto/key_exchange/diffie_hellman.py +323 -0
  216. sage/crypto/key_exchange/key_exchange_scheme.py +107 -0
  217. sage/crypto/lattice.py +312 -0
  218. sage/crypto/lfsr.py +295 -0
  219. sage/crypto/lwe.py +840 -0
  220. sage/crypto/mq/__init__.py +4 -0
  221. sage/crypto/mq/mpolynomialsystemgenerator.py +204 -0
  222. sage/crypto/mq/rijndael_gf.py +2345 -0
  223. sage/crypto/mq/sbox.py +7 -0
  224. sage/crypto/mq/sr.py +3344 -0
  225. sage/crypto/public_key/all.py +5 -0
  226. sage/crypto/public_key/blum_goldwasser.py +776 -0
  227. sage/crypto/sbox.cpython-314-aarch64-linux-musl.so +0 -0
  228. sage/crypto/sbox.pyx +2090 -0
  229. sage/crypto/sboxes.py +2090 -0
  230. sage/crypto/stream.py +390 -0
  231. sage/crypto/stream_cipher.py +297 -0
  232. sage/crypto/util.py +519 -0
  233. sage/ext/all__sagemath_modules.py +1 -0
  234. sage/ext/interpreters/__init__.py +1 -0
  235. sage/ext/interpreters/all__sagemath_modules.py +2 -0
  236. sage/ext/interpreters/wrapper_cc.cpython-314-aarch64-linux-musl.so +0 -0
  237. sage/ext/interpreters/wrapper_cc.pxd +30 -0
  238. sage/ext/interpreters/wrapper_cc.pyx +252 -0
  239. sage/ext/interpreters/wrapper_cdf.cpython-314-aarch64-linux-musl.so +0 -0
  240. sage/ext/interpreters/wrapper_cdf.pxd +26 -0
  241. sage/ext/interpreters/wrapper_cdf.pyx +245 -0
  242. sage/ext/interpreters/wrapper_rdf.cpython-314-aarch64-linux-musl.so +0 -0
  243. sage/ext/interpreters/wrapper_rdf.pxd +23 -0
  244. sage/ext/interpreters/wrapper_rdf.pyx +221 -0
  245. sage/ext/interpreters/wrapper_rr.cpython-314-aarch64-linux-musl.so +0 -0
  246. sage/ext/interpreters/wrapper_rr.pxd +28 -0
  247. sage/ext/interpreters/wrapper_rr.pyx +335 -0
  248. sage/geometry/all__sagemath_modules.py +5 -0
  249. sage/geometry/toric_lattice.py +1745 -0
  250. sage/geometry/toric_lattice_element.cpython-314-aarch64-linux-musl.so +0 -0
  251. sage/geometry/toric_lattice_element.pyx +432 -0
  252. sage/groups/abelian_gps/abelian_group.py +1925 -0
  253. sage/groups/abelian_gps/abelian_group_element.py +164 -0
  254. sage/groups/abelian_gps/all__sagemath_modules.py +5 -0
  255. sage/groups/abelian_gps/dual_abelian_group.py +421 -0
  256. sage/groups/abelian_gps/dual_abelian_group_element.py +179 -0
  257. sage/groups/abelian_gps/element_base.py +341 -0
  258. sage/groups/abelian_gps/values.py +488 -0
  259. sage/groups/additive_abelian/additive_abelian_group.py +476 -0
  260. sage/groups/additive_abelian/additive_abelian_wrapper.py +857 -0
  261. sage/groups/additive_abelian/all.py +4 -0
  262. sage/groups/additive_abelian/qmodnz.py +231 -0
  263. sage/groups/additive_abelian/qmodnz_element.py +349 -0
  264. sage/groups/affine_gps/affine_group.py +535 -0
  265. sage/groups/affine_gps/all.py +1 -0
  266. sage/groups/affine_gps/catalog.py +17 -0
  267. sage/groups/affine_gps/euclidean_group.py +246 -0
  268. sage/groups/affine_gps/group_element.py +562 -0
  269. sage/groups/all__sagemath_modules.py +12 -0
  270. sage/groups/galois_group.py +479 -0
  271. sage/groups/matrix_gps/all.py +4 -0
  272. sage/groups/matrix_gps/all__sagemath_modules.py +13 -0
  273. sage/groups/matrix_gps/catalog.py +26 -0
  274. sage/groups/matrix_gps/coxeter_group.py +927 -0
  275. sage/groups/matrix_gps/finitely_generated.py +487 -0
  276. sage/groups/matrix_gps/group_element.cpython-314-aarch64-linux-musl.so +0 -0
  277. sage/groups/matrix_gps/group_element.pxd +11 -0
  278. sage/groups/matrix_gps/group_element.pyx +431 -0
  279. sage/groups/matrix_gps/linear.py +440 -0
  280. sage/groups/matrix_gps/matrix_group.py +617 -0
  281. sage/groups/matrix_gps/named_group.py +296 -0
  282. sage/groups/matrix_gps/orthogonal.py +544 -0
  283. sage/groups/matrix_gps/symplectic.py +251 -0
  284. sage/groups/matrix_gps/unitary.py +436 -0
  285. sage/groups/misc_gps/all__sagemath_modules.py +1 -0
  286. sage/groups/misc_gps/argument_groups.py +1905 -0
  287. sage/groups/misc_gps/imaginary_groups.py +479 -0
  288. sage/groups/perm_gps/all__sagemath_modules.py +1 -0
  289. sage/groups/perm_gps/partn_ref/all__sagemath_modules.py +1 -0
  290. sage/groups/perm_gps/partn_ref/refinement_binary.cpython-314-aarch64-linux-musl.so +0 -0
  291. sage/groups/perm_gps/partn_ref/refinement_binary.pxd +41 -0
  292. sage/groups/perm_gps/partn_ref/refinement_binary.pyx +1167 -0
  293. sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-314-aarch64-linux-musl.so +0 -0
  294. sage/groups/perm_gps/partn_ref/refinement_matrices.pxd +31 -0
  295. sage/groups/perm_gps/partn_ref/refinement_matrices.pyx +385 -0
  296. sage/homology/algebraic_topological_model.py +595 -0
  297. sage/homology/all.py +2 -0
  298. sage/homology/all__sagemath_modules.py +8 -0
  299. sage/homology/chain_complex.py +2148 -0
  300. sage/homology/chain_complex_homspace.py +165 -0
  301. sage/homology/chain_complex_morphism.py +629 -0
  302. sage/homology/chain_homotopy.py +604 -0
  303. sage/homology/chains.py +653 -0
  304. sage/homology/free_resolution.py +923 -0
  305. sage/homology/graded_resolution.py +567 -0
  306. sage/homology/hochschild_complex.py +756 -0
  307. sage/homology/homology_group.py +188 -0
  308. sage/homology/homology_morphism.py +422 -0
  309. sage/homology/homology_vector_space_with_basis.py +1454 -0
  310. sage/homology/koszul_complex.py +169 -0
  311. sage/homology/matrix_utils.py +205 -0
  312. sage/libs/all__sagemath_modules.py +1 -0
  313. sage/libs/gsl/__init__.py +1 -0
  314. sage/libs/gsl/airy.pxd +56 -0
  315. sage/libs/gsl/all.pxd +66 -0
  316. sage/libs/gsl/array.cpython-314-aarch64-linux-musl.so +0 -0
  317. sage/libs/gsl/array.pxd +5 -0
  318. sage/libs/gsl/array.pyx +102 -0
  319. sage/libs/gsl/bessel.pxd +208 -0
  320. sage/libs/gsl/blas.pxd +116 -0
  321. sage/libs/gsl/blas_types.pxd +34 -0
  322. sage/libs/gsl/block.pxd +52 -0
  323. sage/libs/gsl/chebyshev.pxd +37 -0
  324. sage/libs/gsl/clausen.pxd +12 -0
  325. sage/libs/gsl/combination.pxd +47 -0
  326. sage/libs/gsl/complex.pxd +151 -0
  327. sage/libs/gsl/coulomb.pxd +30 -0
  328. sage/libs/gsl/coupling.pxd +21 -0
  329. sage/libs/gsl/dawson.pxd +12 -0
  330. sage/libs/gsl/debye.pxd +24 -0
  331. sage/libs/gsl/dilog.pxd +14 -0
  332. sage/libs/gsl/eigen.pxd +46 -0
  333. sage/libs/gsl/elementary.pxd +12 -0
  334. sage/libs/gsl/ellint.pxd +48 -0
  335. sage/libs/gsl/elljac.pxd +8 -0
  336. sage/libs/gsl/erf.pxd +32 -0
  337. sage/libs/gsl/errno.pxd +26 -0
  338. sage/libs/gsl/exp.pxd +44 -0
  339. sage/libs/gsl/expint.pxd +44 -0
  340. sage/libs/gsl/fermi_dirac.pxd +44 -0
  341. sage/libs/gsl/fft.pxd +121 -0
  342. sage/libs/gsl/fit.pxd +50 -0
  343. sage/libs/gsl/gamma.pxd +94 -0
  344. sage/libs/gsl/gegenbauer.pxd +26 -0
  345. sage/libs/gsl/histogram.pxd +176 -0
  346. sage/libs/gsl/hyperg.pxd +52 -0
  347. sage/libs/gsl/integration.pxd +69 -0
  348. sage/libs/gsl/interp.pxd +109 -0
  349. sage/libs/gsl/laguerre.pxd +24 -0
  350. sage/libs/gsl/lambert.pxd +16 -0
  351. sage/libs/gsl/legendre.pxd +90 -0
  352. sage/libs/gsl/linalg.pxd +185 -0
  353. sage/libs/gsl/log.pxd +26 -0
  354. sage/libs/gsl/math.pxd +43 -0
  355. sage/libs/gsl/matrix.pxd +143 -0
  356. sage/libs/gsl/matrix_complex.pxd +130 -0
  357. sage/libs/gsl/min.pxd +67 -0
  358. sage/libs/gsl/monte.pxd +56 -0
  359. sage/libs/gsl/ntuple.pxd +32 -0
  360. sage/libs/gsl/odeiv.pxd +70 -0
  361. sage/libs/gsl/permutation.pxd +78 -0
  362. sage/libs/gsl/poly.pxd +40 -0
  363. sage/libs/gsl/pow_int.pxd +12 -0
  364. sage/libs/gsl/psi.pxd +28 -0
  365. sage/libs/gsl/qrng.pxd +29 -0
  366. sage/libs/gsl/random.pxd +257 -0
  367. sage/libs/gsl/rng.pxd +100 -0
  368. sage/libs/gsl/roots.pxd +72 -0
  369. sage/libs/gsl/sort.pxd +36 -0
  370. sage/libs/gsl/statistics.pxd +59 -0
  371. sage/libs/gsl/sum.pxd +55 -0
  372. sage/libs/gsl/synchrotron.pxd +16 -0
  373. sage/libs/gsl/transport.pxd +24 -0
  374. sage/libs/gsl/trig.pxd +58 -0
  375. sage/libs/gsl/types.pxd +137 -0
  376. sage/libs/gsl/vector.pxd +101 -0
  377. sage/libs/gsl/vector_complex.pxd +83 -0
  378. sage/libs/gsl/wavelet.pxd +49 -0
  379. sage/libs/gsl/zeta.pxd +28 -0
  380. sage/libs/mpc/__init__.pxd +114 -0
  381. sage/libs/mpc/types.pxd +28 -0
  382. sage/libs/mpfr/__init__.pxd +299 -0
  383. sage/libs/mpfr/types.pxd +26 -0
  384. sage/libs/mpmath/__init__.py +1 -0
  385. sage/libs/mpmath/all.py +27 -0
  386. sage/libs/mpmath/all__sagemath_modules.py +1 -0
  387. sage/libs/mpmath/utils.cpython-314-aarch64-linux-musl.so +0 -0
  388. sage/libs/mpmath/utils.pxd +4 -0
  389. sage/libs/mpmath/utils.pyx +319 -0
  390. sage/matrix/action.cpython-314-aarch64-linux-musl.so +0 -0
  391. sage/matrix/action.pxd +26 -0
  392. sage/matrix/action.pyx +596 -0
  393. sage/matrix/all.py +9 -0
  394. sage/matrix/args.cpython-314-aarch64-linux-musl.so +0 -0
  395. sage/matrix/args.pxd +144 -0
  396. sage/matrix/args.pyx +1668 -0
  397. sage/matrix/benchmark.py +1258 -0
  398. sage/matrix/berlekamp_massey.py +95 -0
  399. sage/matrix/compute_J_ideal.py +926 -0
  400. sage/matrix/constructor.cpython-314-aarch64-linux-musl.so +0 -0
  401. sage/matrix/constructor.pyx +750 -0
  402. sage/matrix/docs.py +430 -0
  403. sage/matrix/echelon_matrix.cpython-314-aarch64-linux-musl.so +0 -0
  404. sage/matrix/echelon_matrix.pyx +155 -0
  405. sage/matrix/matrix.pxd +2 -0
  406. sage/matrix/matrix0.cpython-314-aarch64-linux-musl.so +0 -0
  407. sage/matrix/matrix0.pxd +68 -0
  408. sage/matrix/matrix0.pyx +6324 -0
  409. sage/matrix/matrix1.cpython-314-aarch64-linux-musl.so +0 -0
  410. sage/matrix/matrix1.pxd +8 -0
  411. sage/matrix/matrix1.pyx +2851 -0
  412. sage/matrix/matrix2.cpython-314-aarch64-linux-musl.so +0 -0
  413. sage/matrix/matrix2.pxd +25 -0
  414. sage/matrix/matrix2.pyx +20181 -0
  415. sage/matrix/matrix_cdv.cpython-314-aarch64-linux-musl.so +0 -0
  416. sage/matrix/matrix_cdv.pxd +4 -0
  417. sage/matrix/matrix_cdv.pyx +93 -0
  418. sage/matrix/matrix_complex_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  419. sage/matrix/matrix_complex_double_dense.pxd +5 -0
  420. sage/matrix/matrix_complex_double_dense.pyx +98 -0
  421. sage/matrix/matrix_dense.cpython-314-aarch64-linux-musl.so +0 -0
  422. sage/matrix/matrix_dense.pxd +5 -0
  423. sage/matrix/matrix_dense.pyx +343 -0
  424. sage/matrix/matrix_domain_dense.pxd +5 -0
  425. sage/matrix/matrix_domain_sparse.pxd +5 -0
  426. sage/matrix/matrix_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  427. sage/matrix/matrix_double_dense.pxd +7 -0
  428. sage/matrix/matrix_double_dense.pyx +3906 -0
  429. sage/matrix/matrix_double_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  430. sage/matrix/matrix_double_sparse.pxd +6 -0
  431. sage/matrix/matrix_double_sparse.pyx +248 -0
  432. sage/matrix/matrix_generic_dense.cpython-314-aarch64-linux-musl.so +0 -0
  433. sage/matrix/matrix_generic_dense.pxd +7 -0
  434. sage/matrix/matrix_generic_dense.pyx +354 -0
  435. sage/matrix/matrix_generic_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  436. sage/matrix/matrix_generic_sparse.pxd +7 -0
  437. sage/matrix/matrix_generic_sparse.pyx +461 -0
  438. sage/matrix/matrix_laurent_mpolynomial_dense.cpython-314-aarch64-linux-musl.so +0 -0
  439. sage/matrix/matrix_laurent_mpolynomial_dense.pxd +5 -0
  440. sage/matrix/matrix_laurent_mpolynomial_dense.pyx +115 -0
  441. sage/matrix/matrix_misc.py +313 -0
  442. sage/matrix/matrix_numpy_dense.cpython-314-aarch64-linux-musl.so +0 -0
  443. sage/matrix/matrix_numpy_dense.pxd +14 -0
  444. sage/matrix/matrix_numpy_dense.pyx +450 -0
  445. sage/matrix/matrix_numpy_integer_dense.cpython-314-aarch64-linux-musl.so +0 -0
  446. sage/matrix/matrix_numpy_integer_dense.pxd +7 -0
  447. sage/matrix/matrix_numpy_integer_dense.pyx +59 -0
  448. sage/matrix/matrix_polynomial_dense.cpython-314-aarch64-linux-musl.so +0 -0
  449. sage/matrix/matrix_polynomial_dense.pxd +5 -0
  450. sage/matrix/matrix_polynomial_dense.pyx +5341 -0
  451. sage/matrix/matrix_real_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  452. sage/matrix/matrix_real_double_dense.pxd +7 -0
  453. sage/matrix/matrix_real_double_dense.pyx +122 -0
  454. sage/matrix/matrix_space.py +2848 -0
  455. sage/matrix/matrix_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  456. sage/matrix/matrix_sparse.pxd +5 -0
  457. sage/matrix/matrix_sparse.pyx +1222 -0
  458. sage/matrix/matrix_window.cpython-314-aarch64-linux-musl.so +0 -0
  459. sage/matrix/matrix_window.pxd +37 -0
  460. sage/matrix/matrix_window.pyx +242 -0
  461. sage/matrix/misc_mpfr.cpython-314-aarch64-linux-musl.so +0 -0
  462. sage/matrix/misc_mpfr.pyx +80 -0
  463. sage/matrix/operation_table.py +1182 -0
  464. sage/matrix/special.py +3666 -0
  465. sage/matrix/strassen.cpython-314-aarch64-linux-musl.so +0 -0
  466. sage/matrix/strassen.pyx +851 -0
  467. sage/matrix/symplectic_basis.py +541 -0
  468. sage/matrix/template.pxd +6 -0
  469. sage/matrix/tests.py +71 -0
  470. sage/matroids/advanced.py +77 -0
  471. sage/matroids/all.py +13 -0
  472. sage/matroids/basis_exchange_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  473. sage/matroids/basis_exchange_matroid.pxd +96 -0
  474. sage/matroids/basis_exchange_matroid.pyx +2344 -0
  475. sage/matroids/basis_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  476. sage/matroids/basis_matroid.pxd +45 -0
  477. sage/matroids/basis_matroid.pyx +1217 -0
  478. sage/matroids/catalog.py +44 -0
  479. sage/matroids/chow_ring.py +473 -0
  480. sage/matroids/chow_ring_ideal.py +849 -0
  481. sage/matroids/circuit_closures_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  482. sage/matroids/circuit_closures_matroid.pxd +16 -0
  483. sage/matroids/circuit_closures_matroid.pyx +559 -0
  484. sage/matroids/circuits_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  485. sage/matroids/circuits_matroid.pxd +38 -0
  486. sage/matroids/circuits_matroid.pyx +947 -0
  487. sage/matroids/constructor.py +1086 -0
  488. sage/matroids/database_collections.py +365 -0
  489. sage/matroids/database_matroids.py +5338 -0
  490. sage/matroids/dual_matroid.py +583 -0
  491. sage/matroids/extension.cpython-314-aarch64-linux-musl.so +0 -0
  492. sage/matroids/extension.pxd +34 -0
  493. sage/matroids/extension.pyx +519 -0
  494. sage/matroids/flats_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  495. sage/matroids/flats_matroid.pxd +28 -0
  496. sage/matroids/flats_matroid.pyx +715 -0
  497. sage/matroids/gammoid.py +600 -0
  498. sage/matroids/graphic_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  499. sage/matroids/graphic_matroid.pxd +39 -0
  500. sage/matroids/graphic_matroid.pyx +2024 -0
  501. sage/matroids/lean_matrix.cpython-314-aarch64-linux-musl.so +0 -0
  502. sage/matroids/lean_matrix.pxd +126 -0
  503. sage/matroids/lean_matrix.pyx +3667 -0
  504. sage/matroids/linear_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  505. sage/matroids/linear_matroid.pxd +180 -0
  506. sage/matroids/linear_matroid.pyx +6649 -0
  507. sage/matroids/matroid.cpython-314-aarch64-linux-musl.so +0 -0
  508. sage/matroids/matroid.pxd +243 -0
  509. sage/matroids/matroid.pyx +8759 -0
  510. sage/matroids/matroids_catalog.py +190 -0
  511. sage/matroids/matroids_plot_helpers.py +890 -0
  512. sage/matroids/minor_matroid.py +480 -0
  513. sage/matroids/minorfix.h +9 -0
  514. sage/matroids/named_matroids.py +5 -0
  515. sage/matroids/rank_matroid.py +268 -0
  516. sage/matroids/set_system.cpython-314-aarch64-linux-musl.so +0 -0
  517. sage/matroids/set_system.pxd +38 -0
  518. sage/matroids/set_system.pyx +800 -0
  519. sage/matroids/transversal_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  520. sage/matroids/transversal_matroid.pxd +14 -0
  521. sage/matroids/transversal_matroid.pyx +893 -0
  522. sage/matroids/union_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  523. sage/matroids/union_matroid.pxd +20 -0
  524. sage/matroids/union_matroid.pyx +331 -0
  525. sage/matroids/unpickling.cpython-314-aarch64-linux-musl.so +0 -0
  526. sage/matroids/unpickling.pyx +843 -0
  527. sage/matroids/utilities.py +809 -0
  528. sage/misc/all__sagemath_modules.py +20 -0
  529. sage/misc/c3.cpython-314-aarch64-linux-musl.so +0 -0
  530. sage/misc/c3.pyx +238 -0
  531. sage/misc/compat.py +87 -0
  532. sage/misc/element_with_label.py +173 -0
  533. sage/misc/func_persist.py +79 -0
  534. sage/misc/pickle_old.cpython-314-aarch64-linux-musl.so +0 -0
  535. sage/misc/pickle_old.pyx +19 -0
  536. sage/misc/proof.py +7 -0
  537. sage/misc/replace_dot_all.py +472 -0
  538. sage/misc/sagedoc_conf.py +168 -0
  539. sage/misc/sphinxify.py +167 -0
  540. sage/misc/test_class_pickling.py +85 -0
  541. sage/modules/all.py +42 -0
  542. sage/modules/complex_double_vector.py +25 -0
  543. sage/modules/diamond_cutting.py +380 -0
  544. sage/modules/fg_pid/all.py +1 -0
  545. sage/modules/fg_pid/fgp_element.py +456 -0
  546. sage/modules/fg_pid/fgp_module.py +2091 -0
  547. sage/modules/fg_pid/fgp_morphism.py +550 -0
  548. sage/modules/filtered_vector_space.py +1271 -0
  549. sage/modules/finite_submodule_iter.cpython-314-aarch64-linux-musl.so +0 -0
  550. sage/modules/finite_submodule_iter.pxd +27 -0
  551. sage/modules/finite_submodule_iter.pyx +452 -0
  552. sage/modules/fp_graded/all.py +1 -0
  553. sage/modules/fp_graded/element.py +346 -0
  554. sage/modules/fp_graded/free_element.py +298 -0
  555. sage/modules/fp_graded/free_homspace.py +53 -0
  556. sage/modules/fp_graded/free_module.py +1060 -0
  557. sage/modules/fp_graded/free_morphism.py +217 -0
  558. sage/modules/fp_graded/homspace.py +563 -0
  559. sage/modules/fp_graded/module.py +1340 -0
  560. sage/modules/fp_graded/morphism.py +1990 -0
  561. sage/modules/fp_graded/steenrod/all.py +1 -0
  562. sage/modules/fp_graded/steenrod/homspace.py +65 -0
  563. sage/modules/fp_graded/steenrod/module.py +477 -0
  564. sage/modules/fp_graded/steenrod/morphism.py +404 -0
  565. sage/modules/fp_graded/steenrod/profile.py +241 -0
  566. sage/modules/free_module.py +8447 -0
  567. sage/modules/free_module_element.cpython-314-aarch64-linux-musl.so +0 -0
  568. sage/modules/free_module_element.pxd +22 -0
  569. sage/modules/free_module_element.pyx +5445 -0
  570. sage/modules/free_module_homspace.py +369 -0
  571. sage/modules/free_module_integer.py +896 -0
  572. sage/modules/free_module_morphism.py +823 -0
  573. sage/modules/free_module_pseudohomspace.py +352 -0
  574. sage/modules/free_module_pseudomorphism.py +578 -0
  575. sage/modules/free_quadratic_module.py +1706 -0
  576. sage/modules/free_quadratic_module_integer_symmetric.py +1790 -0
  577. sage/modules/matrix_morphism.py +1745 -0
  578. sage/modules/misc.py +103 -0
  579. sage/modules/module_functors.py +192 -0
  580. sage/modules/multi_filtered_vector_space.py +719 -0
  581. sage/modules/ore_module.py +2208 -0
  582. sage/modules/ore_module_element.py +178 -0
  583. sage/modules/ore_module_homspace.py +147 -0
  584. sage/modules/ore_module_morphism.py +968 -0
  585. sage/modules/quotient_module.py +699 -0
  586. sage/modules/real_double_vector.py +22 -0
  587. sage/modules/submodule.py +255 -0
  588. sage/modules/tensor_operations.py +567 -0
  589. sage/modules/torsion_quadratic_module.py +1352 -0
  590. sage/modules/tutorial_free_modules.py +248 -0
  591. sage/modules/vector_complex_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  592. sage/modules/vector_complex_double_dense.pxd +6 -0
  593. sage/modules/vector_complex_double_dense.pyx +117 -0
  594. sage/modules/vector_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  595. sage/modules/vector_double_dense.pxd +6 -0
  596. sage/modules/vector_double_dense.pyx +604 -0
  597. sage/modules/vector_integer_dense.cpython-314-aarch64-linux-musl.so +0 -0
  598. sage/modules/vector_integer_dense.pxd +15 -0
  599. sage/modules/vector_integer_dense.pyx +361 -0
  600. sage/modules/vector_integer_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  601. sage/modules/vector_integer_sparse.pxd +29 -0
  602. sage/modules/vector_integer_sparse.pyx +406 -0
  603. sage/modules/vector_modn_dense.cpython-314-aarch64-linux-musl.so +0 -0
  604. sage/modules/vector_modn_dense.pxd +12 -0
  605. sage/modules/vector_modn_dense.pyx +394 -0
  606. sage/modules/vector_modn_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  607. sage/modules/vector_modn_sparse.pxd +21 -0
  608. sage/modules/vector_modn_sparse.pyx +298 -0
  609. sage/modules/vector_numpy_dense.cpython-314-aarch64-linux-musl.so +0 -0
  610. sage/modules/vector_numpy_dense.pxd +15 -0
  611. sage/modules/vector_numpy_dense.pyx +304 -0
  612. sage/modules/vector_numpy_integer_dense.cpython-314-aarch64-linux-musl.so +0 -0
  613. sage/modules/vector_numpy_integer_dense.pxd +7 -0
  614. sage/modules/vector_numpy_integer_dense.pyx +54 -0
  615. sage/modules/vector_rational_dense.cpython-314-aarch64-linux-musl.so +0 -0
  616. sage/modules/vector_rational_dense.pxd +15 -0
  617. sage/modules/vector_rational_dense.pyx +387 -0
  618. sage/modules/vector_rational_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  619. sage/modules/vector_rational_sparse.pxd +30 -0
  620. sage/modules/vector_rational_sparse.pyx +413 -0
  621. sage/modules/vector_real_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  622. sage/modules/vector_real_double_dense.pxd +6 -0
  623. sage/modules/vector_real_double_dense.pyx +126 -0
  624. sage/modules/vector_space_homspace.py +430 -0
  625. sage/modules/vector_space_morphism.py +989 -0
  626. sage/modules/with_basis/all.py +15 -0
  627. sage/modules/with_basis/cell_module.py +494 -0
  628. sage/modules/with_basis/indexed_element.cpython-314-aarch64-linux-musl.so +0 -0
  629. sage/modules/with_basis/indexed_element.pxd +13 -0
  630. sage/modules/with_basis/indexed_element.pyx +1058 -0
  631. sage/modules/with_basis/invariant.py +1075 -0
  632. sage/modules/with_basis/morphism.py +1636 -0
  633. sage/modules/with_basis/representation.py +2939 -0
  634. sage/modules/with_basis/subquotient.py +685 -0
  635. sage/numerical/all__sagemath_modules.py +6 -0
  636. sage/numerical/gauss_legendre.cpython-314-aarch64-linux-musl.so +0 -0
  637. sage/numerical/gauss_legendre.pyx +381 -0
  638. sage/numerical/optimize.py +910 -0
  639. sage/probability/all.py +10 -0
  640. sage/probability/probability_distribution.cpython-314-aarch64-linux-musl.so +0 -0
  641. sage/probability/probability_distribution.pyx +1242 -0
  642. sage/probability/random_variable.py +411 -0
  643. sage/quadratic_forms/all.py +4 -0
  644. sage/quadratic_forms/all__sagemath_modules.py +15 -0
  645. sage/quadratic_forms/binary_qf.py +2042 -0
  646. sage/quadratic_forms/bqf_class_group.py +748 -0
  647. sage/quadratic_forms/constructions.py +93 -0
  648. sage/quadratic_forms/count_local_2.cpython-314-aarch64-linux-musl.so +0 -0
  649. sage/quadratic_forms/count_local_2.pyx +365 -0
  650. sage/quadratic_forms/extras.py +195 -0
  651. sage/quadratic_forms/quadratic_form.py +1753 -0
  652. sage/quadratic_forms/quadratic_form__count_local_2.py +221 -0
  653. sage/quadratic_forms/quadratic_form__equivalence_testing.py +708 -0
  654. sage/quadratic_forms/quadratic_form__evaluate.cpython-314-aarch64-linux-musl.so +0 -0
  655. sage/quadratic_forms/quadratic_form__evaluate.pyx +139 -0
  656. sage/quadratic_forms/quadratic_form__local_density_congruence.py +977 -0
  657. sage/quadratic_forms/quadratic_form__local_field_invariants.py +1072 -0
  658. sage/quadratic_forms/quadratic_form__neighbors.py +424 -0
  659. sage/quadratic_forms/quadratic_form__reduction_theory.py +488 -0
  660. sage/quadratic_forms/quadratic_form__split_local_covering.py +416 -0
  661. sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +657 -0
  662. sage/quadratic_forms/quadratic_form__theta.py +352 -0
  663. sage/quadratic_forms/quadratic_form__variable_substitutions.py +370 -0
  664. sage/quadratic_forms/random_quadraticform.py +209 -0
  665. sage/quadratic_forms/ternary.cpython-314-aarch64-linux-musl.so +0 -0
  666. sage/quadratic_forms/ternary.pyx +1154 -0
  667. sage/quadratic_forms/ternary_qf.py +2027 -0
  668. sage/rings/all__sagemath_modules.py +28 -0
  669. sage/rings/asymptotic/all__sagemath_modules.py +1 -0
  670. sage/rings/asymptotic/misc.py +1252 -0
  671. sage/rings/cc.py +4 -0
  672. sage/rings/cfinite_sequence.py +1306 -0
  673. sage/rings/complex_conversion.cpython-314-aarch64-linux-musl.so +0 -0
  674. sage/rings/complex_conversion.pxd +8 -0
  675. sage/rings/complex_conversion.pyx +23 -0
  676. sage/rings/complex_double.cpython-314-aarch64-linux-musl.so +0 -0
  677. sage/rings/complex_double.pxd +21 -0
  678. sage/rings/complex_double.pyx +2654 -0
  679. sage/rings/complex_mpc.cpython-314-aarch64-linux-musl.so +0 -0
  680. sage/rings/complex_mpc.pxd +21 -0
  681. sage/rings/complex_mpc.pyx +2576 -0
  682. sage/rings/complex_mpfr.cpython-314-aarch64-linux-musl.so +0 -0
  683. sage/rings/complex_mpfr.pxd +18 -0
  684. sage/rings/complex_mpfr.pyx +3602 -0
  685. sage/rings/derivation.py +2334 -0
  686. sage/rings/finite_rings/all__sagemath_modules.py +1 -0
  687. sage/rings/finite_rings/maps_finite_field.py +191 -0
  688. sage/rings/function_field/all__sagemath_modules.py +8 -0
  689. sage/rings/function_field/derivations.py +102 -0
  690. sage/rings/function_field/derivations_rational.py +132 -0
  691. sage/rings/function_field/differential.py +853 -0
  692. sage/rings/function_field/divisor.py +1107 -0
  693. sage/rings/function_field/drinfeld_modules/action.py +199 -0
  694. sage/rings/function_field/drinfeld_modules/all.py +1 -0
  695. sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +673 -0
  696. sage/rings/function_field/drinfeld_modules/drinfeld_module.py +2087 -0
  697. sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1131 -0
  698. sage/rings/function_field/drinfeld_modules/homset.py +420 -0
  699. sage/rings/function_field/drinfeld_modules/morphism.py +820 -0
  700. sage/rings/function_field/hermite_form_polynomial.cpython-314-aarch64-linux-musl.so +0 -0
  701. sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
  702. sage/rings/function_field/khuri_makdisi.cpython-314-aarch64-linux-musl.so +0 -0
  703. sage/rings/function_field/khuri_makdisi.pyx +935 -0
  704. sage/rings/invariants/all.py +4 -0
  705. sage/rings/invariants/invariant_theory.py +4597 -0
  706. sage/rings/invariants/reconstruction.py +395 -0
  707. sage/rings/polynomial/all__sagemath_modules.py +17 -0
  708. sage/rings/polynomial/integer_valued_polynomials.py +1230 -0
  709. sage/rings/polynomial/laurent_polynomial_mpair.cpython-314-aarch64-linux-musl.so +0 -0
  710. sage/rings/polynomial/laurent_polynomial_mpair.pxd +15 -0
  711. sage/rings/polynomial/laurent_polynomial_mpair.pyx +2023 -0
  712. sage/rings/polynomial/ore_function_element.py +952 -0
  713. sage/rings/polynomial/ore_function_field.py +1028 -0
  714. sage/rings/polynomial/ore_polynomial_element.cpython-314-aarch64-linux-musl.so +0 -0
  715. sage/rings/polynomial/ore_polynomial_element.pxd +48 -0
  716. sage/rings/polynomial/ore_polynomial_element.pyx +3145 -0
  717. sage/rings/polynomial/ore_polynomial_ring.py +1334 -0
  718. sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-314-aarch64-linux-musl.so +0 -0
  719. sage/rings/polynomial/polynomial_real_mpfr_dense.pyx +788 -0
  720. sage/rings/polynomial/q_integer_valued_polynomials.py +1264 -0
  721. sage/rings/polynomial/skew_polynomial_element.cpython-314-aarch64-linux-musl.so +0 -0
  722. sage/rings/polynomial/skew_polynomial_element.pxd +9 -0
  723. sage/rings/polynomial/skew_polynomial_element.pyx +684 -0
  724. sage/rings/polynomial/skew_polynomial_finite_field.cpython-314-aarch64-linux-musl.so +0 -0
  725. sage/rings/polynomial/skew_polynomial_finite_field.pxd +19 -0
  726. sage/rings/polynomial/skew_polynomial_finite_field.pyx +1093 -0
  727. sage/rings/polynomial/skew_polynomial_finite_order.cpython-314-aarch64-linux-musl.so +0 -0
  728. sage/rings/polynomial/skew_polynomial_finite_order.pxd +10 -0
  729. sage/rings/polynomial/skew_polynomial_finite_order.pyx +567 -0
  730. sage/rings/polynomial/skew_polynomial_ring.py +908 -0
  731. sage/rings/real_double_element_gsl.cpython-314-aarch64-linux-musl.so +0 -0
  732. sage/rings/real_double_element_gsl.pxd +8 -0
  733. sage/rings/real_double_element_gsl.pyx +794 -0
  734. sage/rings/real_field.py +58 -0
  735. sage/rings/real_mpfr.cpython-314-aarch64-linux-musl.so +0 -0
  736. sage/rings/real_mpfr.pxd +29 -0
  737. sage/rings/real_mpfr.pyx +6122 -0
  738. sage/rings/ring_extension.cpython-314-aarch64-linux-musl.so +0 -0
  739. sage/rings/ring_extension.pxd +42 -0
  740. sage/rings/ring_extension.pyx +2779 -0
  741. sage/rings/ring_extension_conversion.cpython-314-aarch64-linux-musl.so +0 -0
  742. sage/rings/ring_extension_conversion.pxd +16 -0
  743. sage/rings/ring_extension_conversion.pyx +462 -0
  744. sage/rings/ring_extension_element.cpython-314-aarch64-linux-musl.so +0 -0
  745. sage/rings/ring_extension_element.pxd +21 -0
  746. sage/rings/ring_extension_element.pyx +1635 -0
  747. sage/rings/ring_extension_homset.py +64 -0
  748. sage/rings/ring_extension_morphism.cpython-314-aarch64-linux-musl.so +0 -0
  749. sage/rings/ring_extension_morphism.pxd +35 -0
  750. sage/rings/ring_extension_morphism.pyx +920 -0
  751. sage/schemes/all__sagemath_modules.py +1 -0
  752. sage/schemes/projective/all__sagemath_modules.py +1 -0
  753. sage/schemes/projective/coherent_sheaf.py +300 -0
  754. sage/schemes/projective/cohomology.py +510 -0
  755. sage/stats/all.py +15 -0
  756. sage/stats/basic_stats.py +489 -0
  757. sage/stats/distributions/all.py +7 -0
  758. sage/stats/distributions/catalog.py +34 -0
  759. sage/stats/distributions/dgs.h +50 -0
  760. sage/stats/distributions/dgs.pxd +111 -0
  761. sage/stats/distributions/dgs_bern.h +400 -0
  762. sage/stats/distributions/dgs_gauss.h +614 -0
  763. sage/stats/distributions/dgs_misc.h +104 -0
  764. sage/stats/distributions/discrete_gaussian_integer.cpython-314-aarch64-linux-musl.so +0 -0
  765. sage/stats/distributions/discrete_gaussian_integer.pxd +14 -0
  766. sage/stats/distributions/discrete_gaussian_integer.pyx +498 -0
  767. sage/stats/distributions/discrete_gaussian_lattice.py +908 -0
  768. sage/stats/distributions/discrete_gaussian_polynomial.py +141 -0
  769. sage/stats/hmm/all.py +15 -0
  770. sage/stats/hmm/chmm.cpython-314-aarch64-linux-musl.so +0 -0
  771. sage/stats/hmm/chmm.pyx +1595 -0
  772. sage/stats/hmm/distributions.cpython-314-aarch64-linux-musl.so +0 -0
  773. sage/stats/hmm/distributions.pxd +29 -0
  774. sage/stats/hmm/distributions.pyx +531 -0
  775. sage/stats/hmm/hmm.cpython-314-aarch64-linux-musl.so +0 -0
  776. sage/stats/hmm/hmm.pxd +17 -0
  777. sage/stats/hmm/hmm.pyx +1388 -0
  778. sage/stats/hmm/util.cpython-314-aarch64-linux-musl.so +0 -0
  779. sage/stats/hmm/util.pxd +7 -0
  780. sage/stats/hmm/util.pyx +165 -0
  781. sage/stats/intlist.cpython-314-aarch64-linux-musl.so +0 -0
  782. sage/stats/intlist.pxd +14 -0
  783. sage/stats/intlist.pyx +588 -0
  784. sage/stats/r.py +49 -0
  785. sage/stats/time_series.cpython-314-aarch64-linux-musl.so +0 -0
  786. sage/stats/time_series.pxd +6 -0
  787. sage/stats/time_series.pyx +2546 -0
  788. sage/tensor/all.py +2 -0
  789. sage/tensor/modules/all.py +8 -0
  790. sage/tensor/modules/alternating_contr_tensor.py +761 -0
  791. sage/tensor/modules/comp.py +5598 -0
  792. sage/tensor/modules/ext_pow_free_module.py +824 -0
  793. sage/tensor/modules/finite_rank_free_module.py +3589 -0
  794. sage/tensor/modules/format_utilities.py +333 -0
  795. sage/tensor/modules/free_module_alt_form.py +858 -0
  796. sage/tensor/modules/free_module_automorphism.py +1207 -0
  797. sage/tensor/modules/free_module_basis.py +1074 -0
  798. sage/tensor/modules/free_module_element.py +284 -0
  799. sage/tensor/modules/free_module_homset.py +652 -0
  800. sage/tensor/modules/free_module_linear_group.py +564 -0
  801. sage/tensor/modules/free_module_morphism.py +1581 -0
  802. sage/tensor/modules/free_module_tensor.py +3289 -0
  803. sage/tensor/modules/reflexive_module.py +386 -0
  804. sage/tensor/modules/tensor_free_module.py +780 -0
  805. sage/tensor/modules/tensor_free_submodule.py +538 -0
  806. sage/tensor/modules/tensor_free_submodule_basis.py +140 -0
  807. sage/tensor/modules/tensor_with_indices.py +1043 -0
@@ -0,0 +1,767 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ # sage.doctest: needs sage.graphs sage.rings.number_field
3
+ """
4
+ Center of a Universal Enveloping Algebra
5
+
6
+ AUTHORS:
7
+
8
+ - Travis Scrimshaw (2024-01-02): Initial version
9
+ """
10
+
11
+ # ****************************************************************************
12
+ # Copyright (C) 2024 Travis Scrimshaw <tcscrims at gmail.com>
13
+ #
14
+ # This program is free software: you can redistribute it and/or modify
15
+ # it under the terms of the GNU General Public License as published by
16
+ # the Free Software Foundation, either version 2 of the License, or
17
+ # (at your option) any later version.
18
+ # https://www.gnu.org/licenses/
19
+ # ****************************************************************************
20
+
21
+ # from sage.structure.unique_representation import UniqueRepresentation
22
+ # from sage.structure.parent import Parent
23
+ from sage.combinat.free_module import CombinatorialFreeModule
24
+ from sage.combinat.integer_lists.invlex import IntegerListsLex
25
+ from sage.matrix.constructor import matrix
26
+ from sage.monoids.indexed_free_monoid import IndexedFreeAbelianMonoid
27
+ from sage.monoids.indexed_free_monoid import IndexedMonoid
28
+ from sage.combinat.root_system.coxeter_group import CoxeterGroup
29
+ from sage.combinat.integer_vector_weighted import iterator_fast as intvecwt_iterator
30
+ from sage.sets.non_negative_integers import NonNegativeIntegers
31
+ from sage.sets.finite_enumerated_set import FiniteEnumeratedSet
32
+ from sage.sets.family import Family
33
+ from sage.rings.integer_ring import ZZ
34
+ from sage.categories.kac_moody_algebras import KacMoodyAlgebras
35
+ from sage.categories.finite_dimensional_lie_algebras_with_basis import FiniteDimensionalLieAlgebrasWithBasis
36
+ from sage.categories.graded_algebras_with_basis import GradedAlgebrasWithBasis
37
+ from sage.categories.fields import Fields
38
+ from sage.categories.monoids import Monoids
39
+ from sage.categories.enumerated_sets import EnumeratedSets
40
+ from sage.misc.cachefunc import cached_method
41
+ from sage.misc.lazy_attribute import lazy_attribute
42
+ from sage.data_structures.blas_dict import iaxpy
43
+ from collections import deque
44
+
45
+
46
+ class CenterIndices(IndexedFreeAbelianMonoid):
47
+ r"""
48
+ Set of basis indices for the center of a universal enveloping algebra.
49
+
50
+ This also constructs the lift from the center to the universal enveloping
51
+ algebra as part of computing the generators and basis elements. The
52
+ basic algorithm is to construct the centralizer of each filtered
53
+ component in increasing order (as each is a finite dimensional vector
54
+ space). For more precise details, see [Motsak2006]_.
55
+ """
56
+ @staticmethod
57
+ def __classcall__(cls, center):
58
+ r"""
59
+ Normalize input to ensure a unique representation.
60
+
61
+ EXAMPLES::
62
+
63
+ sage: from sage.algebras.lie_algebras.center_uea import CenterIndices
64
+ sage: g = lie_algebras.pwitt(GF(3), 3)
65
+ sage: U = g.pbw_basis()
66
+ sage: Z = U.center()
67
+ sage: CenterIndices(Z) is CenterIndices(Z)
68
+ True
69
+ """
70
+ return super(IndexedMonoid, cls).__classcall__(cls, center)
71
+
72
+ def __init__(self, center, indices=None):
73
+ r"""
74
+ Initialize ``self``.
75
+
76
+ EXAMPLES::
77
+
78
+ sage: g = lie_algebras.pwitt(GF(5), 5)
79
+ sage: U = g.pbw_basis()
80
+ sage: Z = U.center()
81
+ sage: I = Z.indices()
82
+ sage: TestSuite(I).run(max_runs=7)
83
+ """
84
+ if indices is None:
85
+ indices = NonNegativeIntegers()
86
+ category = Monoids() & EnumeratedSets().Infinite()
87
+ IndexedFreeAbelianMonoid.__init__(self, indices, prefix='Z', category=category)
88
+
89
+ self._center = center
90
+ self._envelop_alg = self._center._envelop_alg
91
+ self._g = self._envelop_alg._g
92
+ # The _lift_map will be a dict with the keys being the degree and the values
93
+ # given as dicts with the keys being the leading support. This will be
94
+ # used to do the corresponding reductions.
95
+ self._lift_map = {0: {self._envelop_alg.one_basis(): self._envelop_alg.one()}}
96
+ self._cur_deg = 0
97
+ self._cur_vecs = deque() # we do a lot of deletions in the middle
98
+ # The _cur_basis is a mapping from the leading supports to a monoid element of self
99
+ self._cur_basis = {self._envelop_alg.one_basis(): self.one()}
100
+ self._cur_basis_inv = {self.one(): self._envelop_alg.one_basis()}
101
+ self._gen_degrees = {}
102
+ self._cur_num_gens = 0
103
+
104
+ def _repr_(self):
105
+ r"""
106
+ Return a string representation of ``self``.
107
+
108
+ EXAMPLES::
109
+
110
+ sage: g = lie_algebras.pwitt(GF(5), 5)
111
+ sage: U = g.pbw_basis()
112
+ sage: Z = U.center()
113
+ sage: Z.indices()
114
+ Basis indices of Center of Universal enveloping algebra of
115
+ The 5-Witt Lie algebra over Finite Field of size 5 in the Poincare-Birkhoff-Witt basis
116
+ """
117
+ return "Basis indices of {}".format(self._center)
118
+
119
+ def _latex_(self):
120
+ r"""
121
+ Return a latex representation of ``self``.
122
+
123
+ EXAMPLES::
124
+
125
+ sage: g = lie_algebras.pwitt(GF(5), 5)
126
+ sage: U = g.pbw_basis()
127
+ sage: Z = U.center()
128
+ sage: I = Z.indices()
129
+ sage: latex(I)
130
+ B\left( Z\left( PBW\left( \mathcal{W}(5)_{\Bold{F}_{5}} \right) \right) \right)
131
+ """
132
+ from sage.misc.latex import latex
133
+ return r"B\left( {} \right)".format(latex(self._center))
134
+
135
+ def lift_on_basis(self, m):
136
+ r"""
137
+ Return the image of the basis element indexed by ``m`` in the
138
+ universal enveloping algebra.
139
+
140
+ EXAMPLES::
141
+
142
+ sage: g = lie_algebras.Heisenberg(QQ, 3)
143
+ sage: U = g.pbw_basis()
144
+ sage: Z = U.center()
145
+ sage: I = Z.indices()
146
+ sage: z0 = I.monoid_generators()[0]
147
+ sage: I._lift_map
148
+ {0: {1: 1}}
149
+ sage: I.lift_on_basis(z0)
150
+ PBW['z']
151
+ sage: I._lift_map
152
+ {0: {1: 1}, 1: {PBW['z']: PBW['z']}}
153
+ sage: I.lift_on_basis(z0^3)
154
+ PBW['z']^3
155
+ sage: I._lift_map
156
+ {0: {1: 1}, 1: {PBW['z']: PBW['z']}}
157
+ sage: I._construct_next_degree()
158
+ sage: I._construct_next_degree()
159
+ sage: I._lift_map
160
+ {0: {1: 1},
161
+ 1: {PBW['z']: PBW['z']},
162
+ 2: {PBW['z']^2: PBW['z']^2},
163
+ 3: {PBW['z']^3: PBW['z']^3}}
164
+ sage: I.lift_on_basis(z0^3)
165
+ PBW['z']^3
166
+ """
167
+ while m not in self._cur_basis_inv:
168
+ supp = m.support()
169
+ # We might have not computed the correct degree, but we can lift the
170
+ # element if we have computed all of the corresponding generators.
171
+ if all(i in self._gen_degrees and self._gen_degrees[i] in self._lift_map
172
+ for i in supp):
173
+ ret = self._envelop_alg.one()
174
+ divisors = [mp for mp in self._cur_basis_inv if mp.divides(m) and not mp.is_one()]
175
+ while not m.is_one():
176
+ div = max(divisors, key=lambda elt: len(elt))
177
+ ls = self._cur_basis_inv[div]
178
+ deg = ls.length()
179
+ ret *= self._lift_map[deg][ls]
180
+ m = m // div
181
+ divisors = [mp for mp in divisors if mp.divides(m)]
182
+ return ret
183
+ self._construct_next_degree()
184
+ ls = self._cur_basis_inv[m]
185
+ deg = ls.length()
186
+ return self._lift_map[deg][ls]
187
+
188
+ def __iter__(self):
189
+ r"""
190
+ Iterate over ``self`` in degree increasing order.
191
+
192
+ EXAMPLES::
193
+
194
+ sage: g = lie_algebras.pwitt(GF(3), 6)
195
+ sage: U = g.pbw_basis()
196
+ sage: Z = U.center()
197
+ sage: I = Z.indices()
198
+ sage: it = iter(I)
199
+ sage: [next(it) for _ in range(10)]
200
+ [1, Z[0], Z[1], Z[2], Z[3], Z[4], Z[5], Z[6], Z[7], Z[0]^2]
201
+ """
202
+ yield self.one() # start with the identity
203
+ deg = 1
204
+ while True:
205
+ while deg not in self._lift_map:
206
+ self._construct_next_degree()
207
+ for ls in self._lift_map[deg]:
208
+ yield self._cur_basis[ls]
209
+ deg += 1
210
+
211
+ def some_elements(self):
212
+ r"""
213
+ Return some elements of ``self``.
214
+
215
+ EXAMPLES::
216
+
217
+ sage: g = lie_algebras.pwitt(GF(3), 3)
218
+ sage: U = g.pbw_basis()
219
+ sage: Z = U.center()
220
+ sage: I = Z.indices()
221
+ sage: I.some_elements()
222
+ [1, Z[0], Z[1], Z[2], Z[0]*Z[1]*Z[2], Z[0]*Z[2]^4, Z[0]^4*Z[1]^3]
223
+ """
224
+ it = iter(self)
225
+ gens = [next(it) for _ in range(4)]
226
+ # We construct it as a set in case we introduce duplicates.
227
+ ret = set(gens)
228
+ ret.update([self.prod(gens), gens[1] * gens[3]**4, gens[1]**4 * gens[2]**3])
229
+ # Sort the output for uniqueness
230
+ ret = sorted(ret, key=lambda m: (self.degree(m), m.to_word_list()))
231
+ return ret
232
+
233
+ def degree(self, m):
234
+ r"""
235
+ Return the degre of ``m`` in ``self``.
236
+
237
+ EXAMPLES::
238
+
239
+ sage: g = LieAlgebra(QQ, cartan_type=['E', 6])
240
+ sage: U = g.pbw_basis()
241
+ sage: Z = U.center()
242
+ sage: I = Z.indices()
243
+ sage: [I.degree(g) for g in I.monoid_generators()]
244
+ [2, 5, 6, 8, 9, 12]
245
+ sage: [(elt, I.degree(elt)) for elt in I.some_elements()]
246
+ [(1, 0), (Z[0], 2), (Z[0]^2, 4), (Z[1], 5), (Z[0]^3*Z[1], 11),
247
+ (Z[0]^10, 20), (Z[0]*Z[1]^4, 22)]
248
+ """
249
+ return ZZ.sum(e * self._gen_degrees[i] for i, e in m._monomial.items())
250
+
251
+ def _construct_next_degree(self):
252
+ r"""
253
+ Construct the next elements of ``self`` for the next (uncomputed) degree.
254
+
255
+ EXAMPLES::
256
+
257
+ sage: g = lie_algebras.three_dimensional_by_rank(QQ, 2, 1)
258
+ sage: U = g.pbw_basis()
259
+ sage: Z = U.center()
260
+ sage: I = Z.indices()
261
+ sage: I._lift_map
262
+ {0: {1: 1}}
263
+ sage: I._construct_next_degree()
264
+ sage: I._construct_next_degree()
265
+ sage: I._construct_next_degree()
266
+ sage: I._construct_next_degree()
267
+ sage: I._lift_map
268
+ {0: {1: 1}, 1: {}, 2: {}, 3: {}, 4: {}}
269
+ """
270
+ UEA = self._envelop_alg
271
+ gens = UEA.algebra_generators()
272
+ monoid = UEA.basis().keys()
273
+ self._cur_deg += 1
274
+
275
+ # We first update the lift map with all possible products
276
+ # Note that we are using the fact that the elements are central
277
+ # so the product order doesn't matter.
278
+ # Since we always update this, it is sufficient to compute it
279
+ new_red = {}
280
+ for i in range(1, self._cur_deg//2+1):
281
+ for ls, lelt in self._lift_map[self._cur_deg-i].items():
282
+ for rs, relt in self._lift_map[i].items():
283
+ supp = ls * rs
284
+ new_red[supp] = lelt * relt
285
+ mon = self._cur_basis[ls] * self._cur_basis[rs]
286
+ self._cur_basis[supp] = mon
287
+ self._cur_basis_inv[mon] = supp
288
+ # TODO: Determine if we need to or benefit from another reduction of the new elements
289
+ self._lift_map[self._cur_deg] = new_red
290
+
291
+ # Determine the PBW elements of the current degree that are not reduced
292
+ # modulo the currently computed center.
293
+ for exps in IntegerListsLex(n=self._cur_deg, length=len(gens)):
294
+ elt = monoid.element_class(monoid, {k: p for k, p in zip(monoid._indices, exps) if p})
295
+ if elt in new_red: # already has a central element with this leading term
296
+ continue
297
+ # A new basis element to consider
298
+ self._cur_vecs.append(UEA.monomial(elt))
299
+
300
+ # Perform the centralization
301
+ R = UEA.base_ring()
302
+ vecs = list(self._cur_vecs)
303
+ for g in gens:
304
+ # TODO: We should hold onto previously computed values under the adjoint action
305
+ ad = [g * v - v * g for v in vecs]
306
+ # Compute the kernel
307
+ supp = set()
308
+ for v in ad:
309
+ supp.update(v._monomial_coefficients)
310
+ supp = sorted(supp, key=UEA._monomial_key, reverse=True)
311
+ if not supp: # no support for the image, so everything is in the kernel
312
+ continue
313
+ M = matrix(R, [[v[s] for v in ad] for s in supp])
314
+ ker = M.right_kernel_matrix()
315
+ vecs = [self._reduce(UEA.linear_combination((vecs[i], c) for i, c in kv.iteritems()))
316
+ for kv in ker.rows()]
317
+
318
+ # Lastly, update the appropriate data
319
+ if not vecs: # No new central elements, so nothing to do
320
+ return
321
+ new_gens = {}
322
+ for v in vecs:
323
+ v = self._reduce(v) # possibly not needed to check this
324
+ if not v:
325
+ continue
326
+ ls = v.trailing_support(key=UEA._monomial_key)
327
+ self._cur_vecs.remove(UEA.monomial(ls))
328
+ new_gens[ls] = self._reduce(v)
329
+ assert (self._cur_num_gens not in self._gen_degrees
330
+ or self._gen_degrees[self._cur_num_gens] == self._cur_deg)
331
+ self._gen_degrees[self._cur_num_gens] = self._cur_deg
332
+ mon = self.gen(self._cur_num_gens)
333
+ self._cur_basis[ls] = mon
334
+ self._cur_basis_inv[mon] = ls
335
+ self._cur_num_gens += 1
336
+ self._lift_map[self._cur_deg].update(new_gens)
337
+
338
+ def _reduce(self, vec):
339
+ r"""
340
+ Return the UEA vector ``vec`` by the currently computed center.
341
+
342
+ EXAMPLES::
343
+
344
+ sage: g = LieAlgebra(QQ, cartan_type=['A', 1])
345
+ sage: U = g.pbw_basis()
346
+ sage: Z = U.center()
347
+ sage: I = Z.indices()
348
+ sage: z0 = I.gen(0)
349
+ sage: I._reduce(I.lift_on_basis(z0))
350
+ 0
351
+ sage: max(I._lift_map)
352
+ 2
353
+ sage: I._reduce(I.lift_on_basis(z0^2))
354
+ 4*PBW[alpha[1]]^2*PBW[-alpha[1]]^2
355
+ + 2*PBW[alpha[1]]*PBW[alphacheck[1]]^2*PBW[-alpha[1]]
356
+ + 1/4*PBW[alphacheck[1]]^4 - PBW[alphacheck[1]]^3
357
+ + PBW[alphacheck[1]]^2
358
+ sage: I._reduce(I.lift_on_basis(z0^2) - I.lift_on_basis(z0))
359
+ 4*PBW[alpha[1]]^2*PBW[-alpha[1]]^2
360
+ + 2*PBW[alpha[1]]*PBW[alphacheck[1]]^2*PBW[-alpha[1]]
361
+ + 1/4*PBW[alphacheck[1]]^4 - PBW[alphacheck[1]]^3
362
+ + PBW[alphacheck[1]]^2
363
+ sage: I._construct_next_degree()
364
+ sage: I._construct_next_degree()
365
+ sage: max(I._lift_map)
366
+ 4
367
+ sage: I._reduce(I.lift_on_basis(z0^2) - I.lift_on_basis(z0))
368
+ 0
369
+ """
370
+ # This is replicating what SubmoduleWithBasis does
371
+ ret = dict(vec._monomial_coefficients)
372
+ for data in self._lift_map.values():
373
+ for m, qv in data.items():
374
+ if m not in ret:
375
+ continue
376
+ iaxpy(-ret[m] / qv[m], qv._monomial_coefficients, ret)
377
+ return self._envelop_alg._from_dict(ret, remove_zeros=False)
378
+
379
+
380
+ class SimpleLieCenterIndices(CenterIndices):
381
+ r"""
382
+ Set of basis indices for the center of a universal enveloping algebra of
383
+ a simple Lie algebra.
384
+
385
+ For more information, see
386
+ :class:`~sage.algebras.lie_algebras.center_uea.CenterIndices`.
387
+ """
388
+ def __init__(self, center):
389
+ r"""
390
+ Initialize ``self``.
391
+
392
+ EXAMPLES::
393
+
394
+ sage: g = LieAlgebra(QQ, cartan_type=['E', 6])
395
+ sage: U = g.pbw_basis()
396
+ sage: Z = U.center()
397
+ sage: I = Z.indices()
398
+ sage: TestSuite(I).run()
399
+ """
400
+ self._cartan_type = center._envelop_alg._g.cartan_type()
401
+ r = self._cartan_type.rank()
402
+ super().__init__(center, indices=FiniteEnumeratedSet(range(r)))
403
+ W = CoxeterGroup(self._cartan_type)
404
+ self._gen_degrees = dict(enumerate(W.degrees()))
405
+
406
+ def __iter__(self):
407
+ r"""
408
+ Iterate over ``self`` in degree increasing order.
409
+
410
+ EXAMPLES::
411
+
412
+ sage: g = LieAlgebra(QQ, cartan_type=['E', 6])
413
+ sage: U = g.pbw_basis()
414
+ sage: Z = U.center()
415
+ sage: I = Z.indices()
416
+ sage: it = iter(I)
417
+ sage: [next(it) for _ in range(10)]
418
+ [1, Z[0], Z[0]^2, Z[1], Z[2], Z[0]^3, Z[0]*Z[1], Z[3], Z[0]*Z[2], Z[0]^4]
419
+ """
420
+ deg = 0
421
+ n = len(self._gen_degrees)
422
+ wts = sorted(self._gen_degrees.values(), reverse=True)
423
+ while True:
424
+ for exps in intvecwt_iterator(deg, wts):
425
+ yield self.element_class(self, {n-1-i: e for i, e in enumerate(exps) if e})
426
+ deg += 1
427
+
428
+
429
+ class CenterUEA(CombinatorialFreeModule):
430
+ r"""
431
+ The center of a universal enveloping algebra.
432
+
433
+ .. TODO::
434
+
435
+ Generalize this to be the centralizer of any set of the UEA.
436
+
437
+ .. TODO::
438
+
439
+ For characteristic `p > 0`, implement the `p`-center of a simple
440
+ Lie algebra. See, e.g.,
441
+
442
+ - Theorem 5.12 of [Motsak2006]_
443
+ - http://www.math.kobe-u.ac.jp/icms2006/icms2006-video/slides/059.pdf
444
+
445
+ EXAMPLES::
446
+
447
+ sage: g = LieAlgebra(QQ, cartan_type=['A', 2])
448
+ sage: U = g.pbw_basis()
449
+ sage: Z = U.center()
450
+ sage: B = Z.basis()
451
+ sage: it = iter(B)
452
+ sage: center_elts = [next(it) for _ in range(6)]; center_elts
453
+ [1, Z[0], Z[1], Z[0]^2, Z[0]*Z[1], Z[1]^2]
454
+ sage: elts = [U(v) for v in center_elts] # long time
455
+ sage: all(v * g == g * v for g in U.algebra_generators() for v in elts) # long time
456
+ True
457
+
458
+ The Heisenberg Lie algebra `H_4` over a finite field; note the basis
459
+ elements `b^p \in Z(U(H_4))` for the basis elements `b \in H_4`::
460
+
461
+ sage: g = lie_algebras.Heisenberg(GF(3), 4)
462
+ sage: U = g.pbw_basis()
463
+ sage: Z = U.center()
464
+ sage: B = Z.basis()
465
+ sage: it = iter(B)
466
+ sage: center_elts = [next(it) for _ in range(12)]; center_elts
467
+ [1, Z[0], Z[0]^2, Z[0]^3, Z[1], Z[2], Z[3], Z[4], Z[5], Z[6], Z[7], Z[8]]
468
+ sage: elts = [U(v) for v in center_elts]; elts
469
+ [1, PBW['z'], PBW['z']^2, PBW['z']^3, PBW['p1']^3, PBW['p2']^3, PBW['p3']^3,
470
+ PBW['p4']^3, PBW['q1']^3, PBW['q2']^3, PBW['q3']^3, PBW['q4']^3]
471
+ sage: all(v * g == g * v for g in U.algebra_generators() for v in elts)
472
+ True
473
+
474
+ An example with a free 4-step nilpotent Lie algebras on 2 generators::
475
+
476
+ sage: # needs sage.combinat
477
+ sage: L = LieAlgebra(QQ, 2, step=4); L
478
+ Free Nilpotent Lie algebra on 8 generators
479
+ (X_1, X_2, X_12, X_112, X_122, X_1112, X_1122, X_1222) over Rational Field
480
+ sage: U = L.pbw_basis()
481
+ sage: Z = U.center()
482
+ sage: it = iter(Z.basis())
483
+ sage: center_elts = [next(it) for _ in range(10)]; center_elts
484
+ [1, Z[0], Z[1], Z[2], Z[0]^2, Z[0]*Z[1], Z[0]*Z[2], Z[1]^2, Z[1]*Z[2], Z[2]^2]
485
+ sage: elts = [U(v) for v in center_elts]; elts
486
+ [1, PBW[(1, 1, 1, 2)], PBW[(1, 1, 2, 2)], PBW[(1, 2, 2, 2)], PBW[(1, 1, 1, 2)]^2,
487
+ PBW[(1, 1, 1, 2)]*PBW[(1, 1, 2, 2)], PBW[(1, 1, 1, 2)]*PBW[(1, 2, 2, 2)],
488
+ PBW[(1, 1, 2, 2)]^2, PBW[(1, 1, 2, 2)]*PBW[(1, 2, 2, 2)], PBW[(1, 2, 2, 2)]^2]
489
+ sage: all(v * g == g * v for g in U.algebra_generators() for v in elts)
490
+ True
491
+
492
+ Using the Engel Lie algebra::
493
+
494
+ sage: L.<X,Y,Z> = LieAlgebra(QQ, {('X','Y'): {'Z': 1}}, nilpotent=True)
495
+ sage: U = L.pbw_basis()
496
+ sage: Z = U.center()
497
+ sage: it = iter(Z.basis())
498
+ sage: center_elts = [next(it) for _ in range(6)]; center_elts
499
+ [1, Z[0], Z[0]^2, Z[0]^3, Z[0]^4, Z[0]^5]
500
+ sage: elts = [U(v) for v in center_elts]; elts
501
+ [1, PBW['Z'], PBW['Z']^2, PBW['Z']^3, PBW['Z']^4, PBW['Z']^5]
502
+ sage: all(v * g == g * v for g in U.algebra_generators() for v in elts)
503
+ True
504
+ """
505
+ def __init__(self, g, UEA):
506
+ r"""
507
+ Initialize ``self``.
508
+
509
+ EXAMPLES::
510
+
511
+ sage: g = LieAlgebra(ZZ['t'].fraction_field(), cartan_type=['D', 4])
512
+ sage: U = g.pbw_basis()
513
+ sage: Z = U.center()
514
+ sage: TestSuite(Z).run()
515
+
516
+ sage: g = lie_algebras.Heisenberg(GF(3), 4)
517
+ sage: U = g.pbw_basis()
518
+ sage: Z = U.center()
519
+ sage: TestSuite(Z).run()
520
+ """
521
+ if g not in FiniteDimensionalLieAlgebrasWithBasis:
522
+ raise NotImplementedError("only implemented for finite dimensional Lie algebras with a distinguished basis")
523
+
524
+ R = UEA.base_ring()
525
+ if R not in Fields():
526
+ raise NotImplementedError("only implemented for the base ring a field")
527
+
528
+ self._g = g
529
+ self._envelop_alg = UEA
530
+ if (self._g in KacMoodyAlgebras
531
+ and self._g.cartan_type().is_finite()
532
+ and R.characteristic() == 0):
533
+ indices = SimpleLieCenterIndices(self)
534
+ else:
535
+ indices = CenterIndices(self)
536
+ category = UEA.category()
537
+ base = category.base()
538
+ category = GradedAlgebrasWithBasis(base).Commutative() | category.Subobjects()
539
+ CombinatorialFreeModule.__init__(self, R, indices, category=category,
540
+ prefix='', bracket=False, latex_bracket=False,
541
+ sorting_key=self._sorting_key)
542
+ self.lift.register_as_coercion()
543
+
544
+ def _repr_(self):
545
+ r"""
546
+ Return a string representation of ``self``.
547
+
548
+ EXAMPLES::
549
+
550
+ sage: g = LieAlgebra(QQ, cartan_type=['A',2])
551
+ sage: U = g.pbw_basis()
552
+ sage: U.center()
553
+ Center of Universal enveloping algebra of Lie algebra of ['A', 2]
554
+ in the Chevalley basis in the Poincare-Birkhoff-Witt basis
555
+ """
556
+ return "Center of " + repr(self._envelop_alg)
557
+
558
+ def _latex_(self):
559
+ r"""
560
+ Return a latex representation of ``self``.
561
+
562
+ EXAMPLES::
563
+
564
+ sage: g = lie_algebras.pwitt(GF(5), 5)
565
+ sage: U = g.pbw_basis()
566
+ sage: Z = U.center()
567
+ sage: latex(Z)
568
+ Z\left( PBW\left( \mathcal{W}(5)_{\Bold{F}_{5}} \right) \right)
569
+ """
570
+ from sage.misc.latex import latex
571
+ return r"Z\left( {} \right)".format(latex(self._envelop_alg))
572
+
573
+ def _sorting_key(self, m):
574
+ r"""
575
+ Return a key for ``m`` used in sorting elements of ``self``.
576
+
577
+ EXAMPLES::
578
+
579
+ sage: g = LieAlgebra(QQ, cartan_type=['A', 2])
580
+ sage: U = g.pbw_basis()
581
+ sage: Z = U.center()
582
+ sage: z0, z1 = Z.algebra_generators()
583
+ sage: z0 * z1 # indirect doctest
584
+ Z[0]*Z[1]
585
+ sage: z1^2 + z0*z1 + z0^2 # indirect doctest
586
+ Z[0]^2 + Z[0]*Z[1] + Z[1]^2
587
+ sage: z1^3 + z0*z1^2 + z0^2*z1 + z0^3 # indirect doctest
588
+ Z[0]^3 + Z[0]^2*Z[1] + Z[0]*Z[1]^2 + Z[1]^3
589
+ """
590
+ return (-m.length(), m.to_word_list())
591
+
592
+ @cached_method
593
+ def algebra_generators(self):
594
+ r"""
595
+ Return the algebra generators of ``self``.
596
+
597
+ .. WARNING::
598
+
599
+ When the universal enveloping algebra is not known to have
600
+ a finite generating set, the generating set will be the basis
601
+ of ``self`` in a degree (weakly) increasing order indexed by
602
+ `\ZZ_{\geq 0}`. In particular, the `0`-th generator will be
603
+ the multiplicative identity `1`.
604
+
605
+ EXAMPLES::
606
+
607
+ sage: g = lie_algebras.Heisenberg(QQ, 3)
608
+ sage: U = g.pbw_basis()
609
+ sage: Z = U.center()
610
+ sage: Z.algebra_generators()[0]
611
+ 1
612
+ sage: Z.algebra_generators()[1]
613
+ Z[0]
614
+
615
+ sage: g = LieAlgebra(QQ, cartan_type=['G', 2])
616
+ sage: U = g.pbw_basis()
617
+ sage: Z = U.center()
618
+ sage: Z.algebra_generators()
619
+ Finite family {0: Z[0], 1: Z[1]}
620
+ """
621
+ mon_gens = self._indices.monoid_generators()
622
+ if mon_gens.cardinality() == float("inf"):
623
+ return Family(NonNegativeIntegers(), lambda m: self.monomial(self._indices.unrank(m)))
624
+ return Family({i: self.monomial(mon_gens[i]) for i in mon_gens.keys()})
625
+
626
+ @cached_method
627
+ def one_basis(self):
628
+ r"""
629
+ Return the basis index of `1` in ``self``.
630
+
631
+ EXAMPLES::
632
+
633
+ sage: g = LieAlgebra(QQ['t'].fraction_field(), cartan_type=['B', 5])
634
+ sage: U = g.pbw_basis()
635
+ sage: Z = U.center()
636
+ sage: ob = Z.one_basis(); ob
637
+ 1
638
+ sage: ob.parent() is Z.indices()
639
+ True
640
+ """
641
+ return self._indices.one()
642
+
643
+ def ambient(self):
644
+ r"""
645
+ Return the ambient algebra of ``self``.
646
+
647
+ EXAMPLES::
648
+
649
+ sage: g = LieAlgebra(GF(5), cartan_type=['A', 2])
650
+ sage: U = g.pbw_basis()
651
+ sage: Z = U.center()
652
+ sage: Z.ambient() is U
653
+ True
654
+ """
655
+ return self._envelop_alg
656
+
657
+ def product_on_basis(self, left, right):
658
+ r"""
659
+ Return the product of basis elements indexed by ``left`` and ``right``.
660
+
661
+ EXAMPLES::
662
+
663
+ sage: g = LieAlgebra(QQ, cartan_type=['E', 6])
664
+ sage: U = g.pbw_basis()
665
+ sage: Z = U.center()
666
+ sage: mg = Z.indices().monoid_generators()
667
+ sage: Z.product_on_basis(mg[1]*mg[2], mg[0]*mg[1]^3*mg[2]*mg[3]^3)
668
+ Z[0]*Z[1]^4*Z[2]^2*Z[3]^3
669
+ """
670
+ return self.monomial(left * right)
671
+
672
+ def degree_on_basis(self, m):
673
+ r"""
674
+ Return the degree of the basis element indexed by ``m`` in ``self``.
675
+
676
+ EXAMPLES::
677
+
678
+ sage: g = LieAlgebra(QQ, cartan_type=['E', 6])
679
+ sage: U = g.pbw_basis()
680
+ sage: Z = U.center()
681
+ sage: I = Z.indices()
682
+ sage: it = iter(I)
683
+ sage: supports = [next(it) for _ in range(10)]; supports
684
+ [1, Z[0], Z[0]^2, Z[1], Z[2], Z[0]^3, Z[0]*Z[1], Z[3], Z[0]*Z[2], Z[0]^4]
685
+ sage: [Z.degree_on_basis(m) for m in supports]
686
+ [0, 2, 4, 5, 6, 6, 7, 8, 8, 8]
687
+ """
688
+ return self._indices.degree(m)
689
+
690
+ @lazy_attribute
691
+ def lift(self):
692
+ r"""
693
+ The lift map from ``self`` to the universal enveloping algebra.
694
+
695
+ EXAMPLES::
696
+
697
+ sage: g = LieAlgebra(QQ, cartan_type=['A', 1])
698
+ sage: U = g.pbw_basis()
699
+ sage: Z = U.center()
700
+ sage: gens = Z.algebra_generators()
701
+ sage: U(gens[0]^2 + gens[0])
702
+ 4*PBW[alpha[1]]^2*PBW[-alpha[1]]^2
703
+ + 2*PBW[alpha[1]]*PBW[alphacheck[1]]^2*PBW[-alpha[1]]
704
+ + 1/4*PBW[alphacheck[1]]^4 - PBW[alphacheck[1]]^3
705
+ - 2*PBW[alpha[1]]*PBW[-alpha[1]] + 1/2*PBW[alphacheck[1]]^2
706
+ + PBW[alphacheck[1]]
707
+ sage: U(-1/4*gens[0]) == U.casimir_element()
708
+ True
709
+ """
710
+ # This is correct if we are using key=self._envelop_alg._monomial_key,
711
+ # but we are currently unable to pass such an option.
712
+ return self.module_morphism(self._indices.lift_on_basis, codomain=self._envelop_alg, unitriangular='upper')
713
+
714
+ def retract(self, elt):
715
+ r"""
716
+ The retraction map to ``self`` from the universal enveloping algebra.
717
+
718
+ .. TODO::
719
+
720
+ Implement a version of this that checks if the leading term of
721
+ ``elt`` is divisible by a product of all of the currently known
722
+ generators in order to avoid constructing the full centralizer
723
+ of larger degrees than needed.
724
+
725
+ EXAMPLES::
726
+
727
+ sage: g = lie_algebras.Heisenberg(QQ, 3)
728
+ sage: U = g.pbw_basis()
729
+ sage: Z = U.center()
730
+ sage: z0 = Z.algebra_generators()[1]; z0
731
+ Z[0]
732
+ sage: Z.retract(U(z0^2) - U(3*z0))
733
+ Z[0]^2 - 3*Z[0]
734
+
735
+ sage: g = LieAlgebra(QQ, cartan_type=['A', 2])
736
+ sage: U = g.pbw_basis()
737
+ sage: Z = U.center()
738
+ sage: z0, z1 = Z.algebra_generators()
739
+ sage: Z.retract(U(z0*z0) - U(z1)) # long time
740
+ Z[0]^2 - Z[1]
741
+ sage: zc = Z.retract(U.casimir_element()); zc
742
+ -1/3*Z[0]
743
+ sage: U(zc) == U.casimir_element()
744
+ True
745
+ """
746
+ # This should work except it needs the monomials of the PBW basis to be
747
+ # comparable. However, this does not work for, e.g., Lie algebras
748
+ # in the Chevalley basis as ee are unable to pass a key for the
749
+ # module morphism. Additionally, the implementation below does more
750
+ # operations in-place than the module morphism.
751
+ #return self.lift.section()
752
+ UEA = self._envelop_alg
753
+ elt = UEA(elt)
754
+ # We manipulate the dictionary (in place) to avoid creating elements
755
+ data = elt.monomial_coefficients(copy=True)
756
+ indices = self._indices
757
+ ret = {}
758
+ while data:
759
+ lm = min(data, key=UEA._monomial_key)
760
+ while indices._cur_deg < UEA.degree_on_basis(lm):
761
+ indices._construct_next_degree()
762
+ ind = indices._cur_basis[lm]
763
+ other = indices.lift_on_basis(ind).monomial_coefficients(copy=False)
764
+ coeff = data[lm] / other[lm]
765
+ ret[ind] = coeff
766
+ iaxpy(-coeff, other, data)
767
+ return self.element_class(self, ret)