passagemath-modules 10.6.31rc3__cp314-cp314-musllinux_1_2_x86_64.whl

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

Potentially problematic release.


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

Files changed (808) hide show
  1. passagemath_modules-10.6.31rc3.dist-info/METADATA +281 -0
  2. passagemath_modules-10.6.31rc3.dist-info/RECORD +808 -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-0cd532bd.so.1 +0 -0
  6. passagemath_modules.libs/libgfortran-2c33b284.so.5.0.0 +0 -0
  7. passagemath_modules.libs/libgmp-0e7fc84e.so.10.5.0 +0 -0
  8. passagemath_modules.libs/libgsl-42cda06f.so.28.0.0 +0 -0
  9. passagemath_modules.libs/libmpc-d8ebe4b5.so.3.3.1 +0 -0
  10. passagemath_modules.libs/libmpfr-aaecbfc0.so.6.2.1 +0 -0
  11. passagemath_modules.libs/libopenblasp-r0-905cb27d.3.29.so +0 -0
  12. passagemath_modules.libs/libquadmath-bb76a5fc.so.0.0.0 +0 -0
  13. sage/algebras/all__sagemath_modules.py +20 -0
  14. sage/algebras/catalog.py +148 -0
  15. sage/algebras/clifford_algebra.py +3107 -0
  16. sage/algebras/clifford_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  17. sage/algebras/clifford_algebra_element.pxd +16 -0
  18. sage/algebras/clifford_algebra_element.pyx +997 -0
  19. sage/algebras/commutative_dga.py +4252 -0
  20. sage/algebras/exterior_algebra_groebner.cpython-314-x86_64-linux-musl.so +0 -0
  21. sage/algebras/exterior_algebra_groebner.pxd +55 -0
  22. sage/algebras/exterior_algebra_groebner.pyx +727 -0
  23. sage/algebras/finite_dimensional_algebras/all.py +2 -0
  24. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +1029 -0
  25. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  26. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +12 -0
  27. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +706 -0
  28. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_ideal.py +196 -0
  29. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_morphism.py +255 -0
  30. sage/algebras/finite_gca.py +528 -0
  31. sage/algebras/group_algebra.py +232 -0
  32. sage/algebras/lie_algebras/abelian.py +197 -0
  33. sage/algebras/lie_algebras/affine_lie_algebra.py +1213 -0
  34. sage/algebras/lie_algebras/all.py +25 -0
  35. sage/algebras/lie_algebras/all__sagemath_modules.py +1 -0
  36. sage/algebras/lie_algebras/bch.py +177 -0
  37. sage/algebras/lie_algebras/bgg_dual_module.py +1184 -0
  38. sage/algebras/lie_algebras/bgg_resolution.py +232 -0
  39. sage/algebras/lie_algebras/center_uea.py +767 -0
  40. sage/algebras/lie_algebras/classical_lie_algebra.py +2516 -0
  41. sage/algebras/lie_algebras/examples.py +683 -0
  42. sage/algebras/lie_algebras/free_lie_algebra.py +973 -0
  43. sage/algebras/lie_algebras/heisenberg.py +820 -0
  44. sage/algebras/lie_algebras/lie_algebra.py +1562 -0
  45. sage/algebras/lie_algebras/lie_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  46. sage/algebras/lie_algebras/lie_algebra_element.pxd +68 -0
  47. sage/algebras/lie_algebras/lie_algebra_element.pyx +2122 -0
  48. sage/algebras/lie_algebras/morphism.py +661 -0
  49. sage/algebras/lie_algebras/nilpotent_lie_algebra.py +457 -0
  50. sage/algebras/lie_algebras/onsager.py +1324 -0
  51. sage/algebras/lie_algebras/poincare_birkhoff_witt.py +816 -0
  52. sage/algebras/lie_algebras/quotient.py +462 -0
  53. sage/algebras/lie_algebras/rank_two_heisenberg_virasoro.py +355 -0
  54. sage/algebras/lie_algebras/representation.py +1040 -0
  55. sage/algebras/lie_algebras/structure_coefficients.py +459 -0
  56. sage/algebras/lie_algebras/subalgebra.py +967 -0
  57. sage/algebras/lie_algebras/symplectic_derivation.py +289 -0
  58. sage/algebras/lie_algebras/verma_module.py +1630 -0
  59. sage/algebras/lie_algebras/virasoro.py +1186 -0
  60. sage/algebras/octonion_algebra.cpython-314-x86_64-linux-musl.so +0 -0
  61. sage/algebras/octonion_algebra.pxd +20 -0
  62. sage/algebras/octonion_algebra.pyx +987 -0
  63. sage/algebras/orlik_solomon.py +907 -0
  64. sage/algebras/orlik_terao.py +779 -0
  65. sage/algebras/steenrod/all.py +7 -0
  66. sage/algebras/steenrod/steenrod_algebra.py +4258 -0
  67. sage/algebras/steenrod/steenrod_algebra_bases.py +1179 -0
  68. sage/algebras/steenrod/steenrod_algebra_misc.py +1167 -0
  69. sage/algebras/steenrod/steenrod_algebra_mult.py +954 -0
  70. sage/algebras/weyl_algebra.py +1126 -0
  71. sage/all__sagemath_modules.py +62 -0
  72. sage/calculus/all__sagemath_modules.py +19 -0
  73. sage/calculus/expr.py +205 -0
  74. sage/calculus/integration.cpython-314-x86_64-linux-musl.so +0 -0
  75. sage/calculus/integration.pyx +698 -0
  76. sage/calculus/interpolation.cpython-314-x86_64-linux-musl.so +0 -0
  77. sage/calculus/interpolation.pxd +13 -0
  78. sage/calculus/interpolation.pyx +387 -0
  79. sage/calculus/interpolators.cpython-314-x86_64-linux-musl.so +0 -0
  80. sage/calculus/interpolators.pyx +326 -0
  81. sage/calculus/ode.cpython-314-x86_64-linux-musl.so +0 -0
  82. sage/calculus/ode.pxd +5 -0
  83. sage/calculus/ode.pyx +610 -0
  84. sage/calculus/riemann.cpython-314-x86_64-linux-musl.so +0 -0
  85. sage/calculus/riemann.pyx +1521 -0
  86. sage/calculus/test_sympy.py +201 -0
  87. sage/calculus/transforms/all.py +7 -0
  88. sage/calculus/transforms/dft.py +844 -0
  89. sage/calculus/transforms/dwt.cpython-314-x86_64-linux-musl.so +0 -0
  90. sage/calculus/transforms/dwt.pxd +7 -0
  91. sage/calculus/transforms/dwt.pyx +160 -0
  92. sage/calculus/transforms/fft.cpython-314-x86_64-linux-musl.so +0 -0
  93. sage/calculus/transforms/fft.pxd +12 -0
  94. sage/calculus/transforms/fft.pyx +487 -0
  95. sage/calculus/wester.py +662 -0
  96. sage/coding/abstract_code.py +1108 -0
  97. sage/coding/ag_code.py +868 -0
  98. sage/coding/ag_code_decoders.cpython-314-x86_64-linux-musl.so +0 -0
  99. sage/coding/ag_code_decoders.pyx +2639 -0
  100. sage/coding/all.py +15 -0
  101. sage/coding/bch_code.py +494 -0
  102. sage/coding/binary_code.cpython-314-x86_64-linux-musl.so +0 -0
  103. sage/coding/binary_code.pxd +124 -0
  104. sage/coding/binary_code.pyx +4139 -0
  105. sage/coding/bounds_catalog.py +43 -0
  106. sage/coding/channel.py +819 -0
  107. sage/coding/channels_catalog.py +29 -0
  108. sage/coding/code_bounds.py +755 -0
  109. sage/coding/code_constructions.py +804 -0
  110. sage/coding/codes_catalog.py +111 -0
  111. sage/coding/cyclic_code.py +1329 -0
  112. sage/coding/databases.py +316 -0
  113. sage/coding/decoder.py +373 -0
  114. sage/coding/decoders_catalog.py +88 -0
  115. sage/coding/delsarte_bounds.py +709 -0
  116. sage/coding/encoder.py +390 -0
  117. sage/coding/encoders_catalog.py +64 -0
  118. sage/coding/extended_code.py +468 -0
  119. sage/coding/gabidulin_code.py +1058 -0
  120. sage/coding/golay_code.py +404 -0
  121. sage/coding/goppa_code.py +441 -0
  122. sage/coding/grs_code.py +2371 -0
  123. sage/coding/guava.py +107 -0
  124. sage/coding/guruswami_sudan/all.py +1 -0
  125. sage/coding/guruswami_sudan/gs_decoder.py +897 -0
  126. sage/coding/guruswami_sudan/interpolation.py +409 -0
  127. sage/coding/guruswami_sudan/utils.py +176 -0
  128. sage/coding/hamming_code.py +176 -0
  129. sage/coding/information_set_decoder.py +1032 -0
  130. sage/coding/kasami_codes.cpython-314-x86_64-linux-musl.so +0 -0
  131. sage/coding/kasami_codes.pyx +351 -0
  132. sage/coding/linear_code.py +3067 -0
  133. sage/coding/linear_code_no_metric.py +1354 -0
  134. sage/coding/linear_rank_metric.py +961 -0
  135. sage/coding/parity_check_code.py +353 -0
  136. sage/coding/punctured_code.py +719 -0
  137. sage/coding/reed_muller_code.py +999 -0
  138. sage/coding/self_dual_codes.py +942 -0
  139. sage/coding/source_coding/all.py +2 -0
  140. sage/coding/source_coding/huffman.py +553 -0
  141. sage/coding/subfield_subcode.py +423 -0
  142. sage/coding/two_weight_db.py +399 -0
  143. sage/combinat/all__sagemath_modules.py +7 -0
  144. sage/combinat/cartesian_product.py +347 -0
  145. sage/combinat/family.py +11 -0
  146. sage/combinat/free_module.py +1977 -0
  147. sage/combinat/root_system/all.py +147 -0
  148. sage/combinat/root_system/ambient_space.py +527 -0
  149. sage/combinat/root_system/associahedron.py +471 -0
  150. sage/combinat/root_system/braid_move_calculator.py +143 -0
  151. sage/combinat/root_system/braid_orbit.cpython-314-x86_64-linux-musl.so +0 -0
  152. sage/combinat/root_system/braid_orbit.pyx +144 -0
  153. sage/combinat/root_system/branching_rules.py +2301 -0
  154. sage/combinat/root_system/cartan_matrix.py +1245 -0
  155. sage/combinat/root_system/cartan_type.py +3069 -0
  156. sage/combinat/root_system/coxeter_group.py +162 -0
  157. sage/combinat/root_system/coxeter_matrix.py +1261 -0
  158. sage/combinat/root_system/coxeter_type.py +681 -0
  159. sage/combinat/root_system/dynkin_diagram.py +900 -0
  160. sage/combinat/root_system/extended_affine_weyl_group.py +2993 -0
  161. sage/combinat/root_system/fundamental_group.py +795 -0
  162. sage/combinat/root_system/hecke_algebra_representation.py +1203 -0
  163. sage/combinat/root_system/integrable_representations.py +1227 -0
  164. sage/combinat/root_system/non_symmetric_macdonald_polynomials.py +1965 -0
  165. sage/combinat/root_system/pieri_factors.py +1147 -0
  166. sage/combinat/root_system/plot.py +1615 -0
  167. sage/combinat/root_system/root_lattice_realization_algebras.py +1214 -0
  168. sage/combinat/root_system/root_lattice_realizations.py +4628 -0
  169. sage/combinat/root_system/root_space.py +487 -0
  170. sage/combinat/root_system/root_system.py +882 -0
  171. sage/combinat/root_system/type_A.py +348 -0
  172. sage/combinat/root_system/type_A_affine.py +227 -0
  173. sage/combinat/root_system/type_A_infinity.py +241 -0
  174. sage/combinat/root_system/type_B.py +347 -0
  175. sage/combinat/root_system/type_BC_affine.py +287 -0
  176. sage/combinat/root_system/type_B_affine.py +216 -0
  177. sage/combinat/root_system/type_C.py +317 -0
  178. sage/combinat/root_system/type_C_affine.py +188 -0
  179. sage/combinat/root_system/type_D.py +357 -0
  180. sage/combinat/root_system/type_D_affine.py +208 -0
  181. sage/combinat/root_system/type_E.py +641 -0
  182. sage/combinat/root_system/type_E_affine.py +231 -0
  183. sage/combinat/root_system/type_F.py +387 -0
  184. sage/combinat/root_system/type_F_affine.py +137 -0
  185. sage/combinat/root_system/type_G.py +293 -0
  186. sage/combinat/root_system/type_G_affine.py +132 -0
  187. sage/combinat/root_system/type_H.py +105 -0
  188. sage/combinat/root_system/type_I.py +110 -0
  189. sage/combinat/root_system/type_Q.py +150 -0
  190. sage/combinat/root_system/type_affine.py +509 -0
  191. sage/combinat/root_system/type_dual.py +704 -0
  192. sage/combinat/root_system/type_folded.py +301 -0
  193. sage/combinat/root_system/type_marked.py +748 -0
  194. sage/combinat/root_system/type_reducible.py +601 -0
  195. sage/combinat/root_system/type_relabel.py +730 -0
  196. sage/combinat/root_system/type_super_A.py +837 -0
  197. sage/combinat/root_system/weight_lattice_realizations.py +1188 -0
  198. sage/combinat/root_system/weight_space.py +639 -0
  199. sage/combinat/root_system/weyl_characters.py +2238 -0
  200. sage/crypto/__init__.py +4 -0
  201. sage/crypto/all.py +28 -0
  202. sage/crypto/block_cipher/all.py +7 -0
  203. sage/crypto/block_cipher/des.py +1065 -0
  204. sage/crypto/block_cipher/miniaes.py +2171 -0
  205. sage/crypto/block_cipher/present.py +909 -0
  206. sage/crypto/block_cipher/sdes.py +1527 -0
  207. sage/crypto/boolean_function.cpython-314-x86_64-linux-musl.so +0 -0
  208. sage/crypto/boolean_function.pxd +10 -0
  209. sage/crypto/boolean_function.pyx +1487 -0
  210. sage/crypto/cipher.py +78 -0
  211. sage/crypto/classical.py +3668 -0
  212. sage/crypto/classical_cipher.py +569 -0
  213. sage/crypto/cryptosystem.py +387 -0
  214. sage/crypto/key_exchange/all.py +7 -0
  215. sage/crypto/key_exchange/catalog.py +24 -0
  216. sage/crypto/key_exchange/diffie_hellman.py +323 -0
  217. sage/crypto/key_exchange/key_exchange_scheme.py +107 -0
  218. sage/crypto/lattice.py +312 -0
  219. sage/crypto/lfsr.py +295 -0
  220. sage/crypto/lwe.py +840 -0
  221. sage/crypto/mq/__init__.py +4 -0
  222. sage/crypto/mq/mpolynomialsystemgenerator.py +204 -0
  223. sage/crypto/mq/rijndael_gf.py +2345 -0
  224. sage/crypto/mq/sbox.py +7 -0
  225. sage/crypto/mq/sr.py +3344 -0
  226. sage/crypto/public_key/all.py +5 -0
  227. sage/crypto/public_key/blum_goldwasser.py +776 -0
  228. sage/crypto/sbox.cpython-314-x86_64-linux-musl.so +0 -0
  229. sage/crypto/sbox.pyx +2090 -0
  230. sage/crypto/sboxes.py +2090 -0
  231. sage/crypto/stream.py +390 -0
  232. sage/crypto/stream_cipher.py +297 -0
  233. sage/crypto/util.py +519 -0
  234. sage/ext/all__sagemath_modules.py +1 -0
  235. sage/ext/interpreters/__init__.py +1 -0
  236. sage/ext/interpreters/all__sagemath_modules.py +2 -0
  237. sage/ext/interpreters/wrapper_cc.cpython-314-x86_64-linux-musl.so +0 -0
  238. sage/ext/interpreters/wrapper_cc.pxd +30 -0
  239. sage/ext/interpreters/wrapper_cc.pyx +252 -0
  240. sage/ext/interpreters/wrapper_cdf.cpython-314-x86_64-linux-musl.so +0 -0
  241. sage/ext/interpreters/wrapper_cdf.pxd +26 -0
  242. sage/ext/interpreters/wrapper_cdf.pyx +245 -0
  243. sage/ext/interpreters/wrapper_rdf.cpython-314-x86_64-linux-musl.so +0 -0
  244. sage/ext/interpreters/wrapper_rdf.pxd +23 -0
  245. sage/ext/interpreters/wrapper_rdf.pyx +221 -0
  246. sage/ext/interpreters/wrapper_rr.cpython-314-x86_64-linux-musl.so +0 -0
  247. sage/ext/interpreters/wrapper_rr.pxd +28 -0
  248. sage/ext/interpreters/wrapper_rr.pyx +335 -0
  249. sage/geometry/all__sagemath_modules.py +5 -0
  250. sage/geometry/toric_lattice.py +1745 -0
  251. sage/geometry/toric_lattice_element.cpython-314-x86_64-linux-musl.so +0 -0
  252. sage/geometry/toric_lattice_element.pyx +432 -0
  253. sage/groups/abelian_gps/abelian_group.py +1925 -0
  254. sage/groups/abelian_gps/abelian_group_element.py +164 -0
  255. sage/groups/abelian_gps/all__sagemath_modules.py +5 -0
  256. sage/groups/abelian_gps/dual_abelian_group.py +421 -0
  257. sage/groups/abelian_gps/dual_abelian_group_element.py +179 -0
  258. sage/groups/abelian_gps/element_base.py +341 -0
  259. sage/groups/abelian_gps/values.py +488 -0
  260. sage/groups/additive_abelian/additive_abelian_group.py +476 -0
  261. sage/groups/additive_abelian/additive_abelian_wrapper.py +857 -0
  262. sage/groups/additive_abelian/all.py +4 -0
  263. sage/groups/additive_abelian/qmodnz.py +231 -0
  264. sage/groups/additive_abelian/qmodnz_element.py +349 -0
  265. sage/groups/affine_gps/affine_group.py +535 -0
  266. sage/groups/affine_gps/all.py +1 -0
  267. sage/groups/affine_gps/catalog.py +17 -0
  268. sage/groups/affine_gps/euclidean_group.py +246 -0
  269. sage/groups/affine_gps/group_element.py +562 -0
  270. sage/groups/all__sagemath_modules.py +12 -0
  271. sage/groups/galois_group.py +479 -0
  272. sage/groups/matrix_gps/all.py +4 -0
  273. sage/groups/matrix_gps/all__sagemath_modules.py +13 -0
  274. sage/groups/matrix_gps/catalog.py +26 -0
  275. sage/groups/matrix_gps/coxeter_group.py +927 -0
  276. sage/groups/matrix_gps/finitely_generated.py +487 -0
  277. sage/groups/matrix_gps/group_element.cpython-314-x86_64-linux-musl.so +0 -0
  278. sage/groups/matrix_gps/group_element.pxd +11 -0
  279. sage/groups/matrix_gps/group_element.pyx +431 -0
  280. sage/groups/matrix_gps/linear.py +440 -0
  281. sage/groups/matrix_gps/matrix_group.py +617 -0
  282. sage/groups/matrix_gps/named_group.py +296 -0
  283. sage/groups/matrix_gps/orthogonal.py +544 -0
  284. sage/groups/matrix_gps/symplectic.py +251 -0
  285. sage/groups/matrix_gps/unitary.py +436 -0
  286. sage/groups/misc_gps/all__sagemath_modules.py +1 -0
  287. sage/groups/misc_gps/argument_groups.py +1905 -0
  288. sage/groups/misc_gps/imaginary_groups.py +479 -0
  289. sage/groups/perm_gps/all__sagemath_modules.py +1 -0
  290. sage/groups/perm_gps/partn_ref/all__sagemath_modules.py +1 -0
  291. sage/groups/perm_gps/partn_ref/refinement_binary.cpython-314-x86_64-linux-musl.so +0 -0
  292. sage/groups/perm_gps/partn_ref/refinement_binary.pxd +41 -0
  293. sage/groups/perm_gps/partn_ref/refinement_binary.pyx +1167 -0
  294. sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-314-x86_64-linux-musl.so +0 -0
  295. sage/groups/perm_gps/partn_ref/refinement_matrices.pxd +31 -0
  296. sage/groups/perm_gps/partn_ref/refinement_matrices.pyx +385 -0
  297. sage/homology/algebraic_topological_model.py +595 -0
  298. sage/homology/all.py +2 -0
  299. sage/homology/all__sagemath_modules.py +8 -0
  300. sage/homology/chain_complex.py +2148 -0
  301. sage/homology/chain_complex_homspace.py +165 -0
  302. sage/homology/chain_complex_morphism.py +629 -0
  303. sage/homology/chain_homotopy.py +604 -0
  304. sage/homology/chains.py +653 -0
  305. sage/homology/free_resolution.py +923 -0
  306. sage/homology/graded_resolution.py +567 -0
  307. sage/homology/hochschild_complex.py +756 -0
  308. sage/homology/homology_group.py +188 -0
  309. sage/homology/homology_morphism.py +422 -0
  310. sage/homology/homology_vector_space_with_basis.py +1454 -0
  311. sage/homology/koszul_complex.py +169 -0
  312. sage/homology/matrix_utils.py +205 -0
  313. sage/libs/all__sagemath_modules.py +1 -0
  314. sage/libs/gsl/__init__.py +1 -0
  315. sage/libs/gsl/airy.pxd +56 -0
  316. sage/libs/gsl/all.pxd +66 -0
  317. sage/libs/gsl/array.cpython-314-x86_64-linux-musl.so +0 -0
  318. sage/libs/gsl/array.pxd +5 -0
  319. sage/libs/gsl/array.pyx +102 -0
  320. sage/libs/gsl/bessel.pxd +208 -0
  321. sage/libs/gsl/blas.pxd +116 -0
  322. sage/libs/gsl/blas_types.pxd +34 -0
  323. sage/libs/gsl/block.pxd +52 -0
  324. sage/libs/gsl/chebyshev.pxd +37 -0
  325. sage/libs/gsl/clausen.pxd +12 -0
  326. sage/libs/gsl/combination.pxd +47 -0
  327. sage/libs/gsl/complex.pxd +151 -0
  328. sage/libs/gsl/coulomb.pxd +30 -0
  329. sage/libs/gsl/coupling.pxd +21 -0
  330. sage/libs/gsl/dawson.pxd +12 -0
  331. sage/libs/gsl/debye.pxd +24 -0
  332. sage/libs/gsl/dilog.pxd +14 -0
  333. sage/libs/gsl/eigen.pxd +46 -0
  334. sage/libs/gsl/elementary.pxd +12 -0
  335. sage/libs/gsl/ellint.pxd +48 -0
  336. sage/libs/gsl/elljac.pxd +8 -0
  337. sage/libs/gsl/erf.pxd +32 -0
  338. sage/libs/gsl/errno.pxd +26 -0
  339. sage/libs/gsl/exp.pxd +44 -0
  340. sage/libs/gsl/expint.pxd +44 -0
  341. sage/libs/gsl/fermi_dirac.pxd +44 -0
  342. sage/libs/gsl/fft.pxd +121 -0
  343. sage/libs/gsl/fit.pxd +50 -0
  344. sage/libs/gsl/gamma.pxd +94 -0
  345. sage/libs/gsl/gegenbauer.pxd +26 -0
  346. sage/libs/gsl/histogram.pxd +176 -0
  347. sage/libs/gsl/hyperg.pxd +52 -0
  348. sage/libs/gsl/integration.pxd +69 -0
  349. sage/libs/gsl/interp.pxd +109 -0
  350. sage/libs/gsl/laguerre.pxd +24 -0
  351. sage/libs/gsl/lambert.pxd +16 -0
  352. sage/libs/gsl/legendre.pxd +90 -0
  353. sage/libs/gsl/linalg.pxd +185 -0
  354. sage/libs/gsl/log.pxd +26 -0
  355. sage/libs/gsl/math.pxd +43 -0
  356. sage/libs/gsl/matrix.pxd +143 -0
  357. sage/libs/gsl/matrix_complex.pxd +130 -0
  358. sage/libs/gsl/min.pxd +67 -0
  359. sage/libs/gsl/monte.pxd +56 -0
  360. sage/libs/gsl/ntuple.pxd +32 -0
  361. sage/libs/gsl/odeiv.pxd +70 -0
  362. sage/libs/gsl/permutation.pxd +78 -0
  363. sage/libs/gsl/poly.pxd +40 -0
  364. sage/libs/gsl/pow_int.pxd +12 -0
  365. sage/libs/gsl/psi.pxd +28 -0
  366. sage/libs/gsl/qrng.pxd +29 -0
  367. sage/libs/gsl/random.pxd +257 -0
  368. sage/libs/gsl/rng.pxd +100 -0
  369. sage/libs/gsl/roots.pxd +72 -0
  370. sage/libs/gsl/sort.pxd +36 -0
  371. sage/libs/gsl/statistics.pxd +59 -0
  372. sage/libs/gsl/sum.pxd +55 -0
  373. sage/libs/gsl/synchrotron.pxd +16 -0
  374. sage/libs/gsl/transport.pxd +24 -0
  375. sage/libs/gsl/trig.pxd +58 -0
  376. sage/libs/gsl/types.pxd +137 -0
  377. sage/libs/gsl/vector.pxd +101 -0
  378. sage/libs/gsl/vector_complex.pxd +83 -0
  379. sage/libs/gsl/wavelet.pxd +49 -0
  380. sage/libs/gsl/zeta.pxd +28 -0
  381. sage/libs/mpc/__init__.pxd +114 -0
  382. sage/libs/mpc/types.pxd +28 -0
  383. sage/libs/mpfr/__init__.pxd +299 -0
  384. sage/libs/mpfr/types.pxd +26 -0
  385. sage/libs/mpmath/__init__.py +1 -0
  386. sage/libs/mpmath/all.py +27 -0
  387. sage/libs/mpmath/all__sagemath_modules.py +1 -0
  388. sage/libs/mpmath/utils.cpython-314-x86_64-linux-musl.so +0 -0
  389. sage/libs/mpmath/utils.pxd +4 -0
  390. sage/libs/mpmath/utils.pyx +319 -0
  391. sage/matrix/action.cpython-314-x86_64-linux-musl.so +0 -0
  392. sage/matrix/action.pxd +26 -0
  393. sage/matrix/action.pyx +596 -0
  394. sage/matrix/all.py +9 -0
  395. sage/matrix/args.cpython-314-x86_64-linux-musl.so +0 -0
  396. sage/matrix/args.pxd +144 -0
  397. sage/matrix/args.pyx +1668 -0
  398. sage/matrix/benchmark.py +1258 -0
  399. sage/matrix/berlekamp_massey.py +95 -0
  400. sage/matrix/compute_J_ideal.py +926 -0
  401. sage/matrix/constructor.cpython-314-x86_64-linux-musl.so +0 -0
  402. sage/matrix/constructor.pyx +750 -0
  403. sage/matrix/docs.py +430 -0
  404. sage/matrix/echelon_matrix.cpython-314-x86_64-linux-musl.so +0 -0
  405. sage/matrix/echelon_matrix.pyx +155 -0
  406. sage/matrix/matrix.pxd +2 -0
  407. sage/matrix/matrix0.cpython-314-x86_64-linux-musl.so +0 -0
  408. sage/matrix/matrix0.pxd +68 -0
  409. sage/matrix/matrix0.pyx +6324 -0
  410. sage/matrix/matrix1.cpython-314-x86_64-linux-musl.so +0 -0
  411. sage/matrix/matrix1.pxd +8 -0
  412. sage/matrix/matrix1.pyx +2851 -0
  413. sage/matrix/matrix2.cpython-314-x86_64-linux-musl.so +0 -0
  414. sage/matrix/matrix2.pxd +25 -0
  415. sage/matrix/matrix2.pyx +20181 -0
  416. sage/matrix/matrix_cdv.cpython-314-x86_64-linux-musl.so +0 -0
  417. sage/matrix/matrix_cdv.pxd +4 -0
  418. sage/matrix/matrix_cdv.pyx +93 -0
  419. sage/matrix/matrix_complex_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  420. sage/matrix/matrix_complex_double_dense.pxd +5 -0
  421. sage/matrix/matrix_complex_double_dense.pyx +98 -0
  422. sage/matrix/matrix_dense.cpython-314-x86_64-linux-musl.so +0 -0
  423. sage/matrix/matrix_dense.pxd +5 -0
  424. sage/matrix/matrix_dense.pyx +343 -0
  425. sage/matrix/matrix_domain_dense.pxd +5 -0
  426. sage/matrix/matrix_domain_sparse.pxd +5 -0
  427. sage/matrix/matrix_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  428. sage/matrix/matrix_double_dense.pxd +7 -0
  429. sage/matrix/matrix_double_dense.pyx +3906 -0
  430. sage/matrix/matrix_double_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  431. sage/matrix/matrix_double_sparse.pxd +6 -0
  432. sage/matrix/matrix_double_sparse.pyx +248 -0
  433. sage/matrix/matrix_generic_dense.cpython-314-x86_64-linux-musl.so +0 -0
  434. sage/matrix/matrix_generic_dense.pxd +7 -0
  435. sage/matrix/matrix_generic_dense.pyx +354 -0
  436. sage/matrix/matrix_generic_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  437. sage/matrix/matrix_generic_sparse.pxd +7 -0
  438. sage/matrix/matrix_generic_sparse.pyx +461 -0
  439. sage/matrix/matrix_laurent_mpolynomial_dense.cpython-314-x86_64-linux-musl.so +0 -0
  440. sage/matrix/matrix_laurent_mpolynomial_dense.pxd +5 -0
  441. sage/matrix/matrix_laurent_mpolynomial_dense.pyx +115 -0
  442. sage/matrix/matrix_misc.py +313 -0
  443. sage/matrix/matrix_numpy_dense.cpython-314-x86_64-linux-musl.so +0 -0
  444. sage/matrix/matrix_numpy_dense.pxd +14 -0
  445. sage/matrix/matrix_numpy_dense.pyx +450 -0
  446. sage/matrix/matrix_numpy_integer_dense.cpython-314-x86_64-linux-musl.so +0 -0
  447. sage/matrix/matrix_numpy_integer_dense.pxd +7 -0
  448. sage/matrix/matrix_numpy_integer_dense.pyx +59 -0
  449. sage/matrix/matrix_polynomial_dense.cpython-314-x86_64-linux-musl.so +0 -0
  450. sage/matrix/matrix_polynomial_dense.pxd +5 -0
  451. sage/matrix/matrix_polynomial_dense.pyx +5341 -0
  452. sage/matrix/matrix_real_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  453. sage/matrix/matrix_real_double_dense.pxd +7 -0
  454. sage/matrix/matrix_real_double_dense.pyx +122 -0
  455. sage/matrix/matrix_space.py +2848 -0
  456. sage/matrix/matrix_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  457. sage/matrix/matrix_sparse.pxd +5 -0
  458. sage/matrix/matrix_sparse.pyx +1222 -0
  459. sage/matrix/matrix_window.cpython-314-x86_64-linux-musl.so +0 -0
  460. sage/matrix/matrix_window.pxd +37 -0
  461. sage/matrix/matrix_window.pyx +242 -0
  462. sage/matrix/misc_mpfr.cpython-314-x86_64-linux-musl.so +0 -0
  463. sage/matrix/misc_mpfr.pyx +80 -0
  464. sage/matrix/operation_table.py +1182 -0
  465. sage/matrix/special.py +3666 -0
  466. sage/matrix/strassen.cpython-314-x86_64-linux-musl.so +0 -0
  467. sage/matrix/strassen.pyx +851 -0
  468. sage/matrix/symplectic_basis.py +541 -0
  469. sage/matrix/template.pxd +6 -0
  470. sage/matrix/tests.py +71 -0
  471. sage/matroids/advanced.py +77 -0
  472. sage/matroids/all.py +13 -0
  473. sage/matroids/basis_exchange_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  474. sage/matroids/basis_exchange_matroid.pxd +96 -0
  475. sage/matroids/basis_exchange_matroid.pyx +2344 -0
  476. sage/matroids/basis_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  477. sage/matroids/basis_matroid.pxd +45 -0
  478. sage/matroids/basis_matroid.pyx +1217 -0
  479. sage/matroids/catalog.py +44 -0
  480. sage/matroids/chow_ring.py +473 -0
  481. sage/matroids/chow_ring_ideal.py +849 -0
  482. sage/matroids/circuit_closures_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  483. sage/matroids/circuit_closures_matroid.pxd +16 -0
  484. sage/matroids/circuit_closures_matroid.pyx +559 -0
  485. sage/matroids/circuits_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  486. sage/matroids/circuits_matroid.pxd +38 -0
  487. sage/matroids/circuits_matroid.pyx +947 -0
  488. sage/matroids/constructor.py +1086 -0
  489. sage/matroids/database_collections.py +365 -0
  490. sage/matroids/database_matroids.py +5338 -0
  491. sage/matroids/dual_matroid.py +583 -0
  492. sage/matroids/extension.cpython-314-x86_64-linux-musl.so +0 -0
  493. sage/matroids/extension.pxd +34 -0
  494. sage/matroids/extension.pyx +519 -0
  495. sage/matroids/flats_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  496. sage/matroids/flats_matroid.pxd +28 -0
  497. sage/matroids/flats_matroid.pyx +715 -0
  498. sage/matroids/gammoid.py +600 -0
  499. sage/matroids/graphic_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  500. sage/matroids/graphic_matroid.pxd +39 -0
  501. sage/matroids/graphic_matroid.pyx +2024 -0
  502. sage/matroids/lean_matrix.cpython-314-x86_64-linux-musl.so +0 -0
  503. sage/matroids/lean_matrix.pxd +126 -0
  504. sage/matroids/lean_matrix.pyx +3667 -0
  505. sage/matroids/linear_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  506. sage/matroids/linear_matroid.pxd +180 -0
  507. sage/matroids/linear_matroid.pyx +6649 -0
  508. sage/matroids/matroid.cpython-314-x86_64-linux-musl.so +0 -0
  509. sage/matroids/matroid.pxd +243 -0
  510. sage/matroids/matroid.pyx +8759 -0
  511. sage/matroids/matroids_catalog.py +190 -0
  512. sage/matroids/matroids_plot_helpers.py +890 -0
  513. sage/matroids/minor_matroid.py +480 -0
  514. sage/matroids/minorfix.h +9 -0
  515. sage/matroids/named_matroids.py +5 -0
  516. sage/matroids/rank_matroid.py +268 -0
  517. sage/matroids/set_system.cpython-314-x86_64-linux-musl.so +0 -0
  518. sage/matroids/set_system.pxd +38 -0
  519. sage/matroids/set_system.pyx +800 -0
  520. sage/matroids/transversal_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  521. sage/matroids/transversal_matroid.pxd +14 -0
  522. sage/matroids/transversal_matroid.pyx +893 -0
  523. sage/matroids/union_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  524. sage/matroids/union_matroid.pxd +20 -0
  525. sage/matroids/union_matroid.pyx +331 -0
  526. sage/matroids/unpickling.cpython-314-x86_64-linux-musl.so +0 -0
  527. sage/matroids/unpickling.pyx +843 -0
  528. sage/matroids/utilities.py +809 -0
  529. sage/misc/all__sagemath_modules.py +20 -0
  530. sage/misc/c3.cpython-314-x86_64-linux-musl.so +0 -0
  531. sage/misc/c3.pyx +238 -0
  532. sage/misc/compat.py +87 -0
  533. sage/misc/element_with_label.py +173 -0
  534. sage/misc/func_persist.py +79 -0
  535. sage/misc/pickle_old.cpython-314-x86_64-linux-musl.so +0 -0
  536. sage/misc/pickle_old.pyx +19 -0
  537. sage/misc/proof.py +7 -0
  538. sage/misc/replace_dot_all.py +472 -0
  539. sage/misc/sagedoc_conf.py +168 -0
  540. sage/misc/sphinxify.py +167 -0
  541. sage/misc/test_class_pickling.py +85 -0
  542. sage/modules/all.py +42 -0
  543. sage/modules/complex_double_vector.py +25 -0
  544. sage/modules/diamond_cutting.py +380 -0
  545. sage/modules/fg_pid/all.py +1 -0
  546. sage/modules/fg_pid/fgp_element.py +456 -0
  547. sage/modules/fg_pid/fgp_module.py +2091 -0
  548. sage/modules/fg_pid/fgp_morphism.py +550 -0
  549. sage/modules/filtered_vector_space.py +1271 -0
  550. sage/modules/finite_submodule_iter.cpython-314-x86_64-linux-musl.so +0 -0
  551. sage/modules/finite_submodule_iter.pxd +27 -0
  552. sage/modules/finite_submodule_iter.pyx +452 -0
  553. sage/modules/fp_graded/all.py +1 -0
  554. sage/modules/fp_graded/element.py +346 -0
  555. sage/modules/fp_graded/free_element.py +298 -0
  556. sage/modules/fp_graded/free_homspace.py +53 -0
  557. sage/modules/fp_graded/free_module.py +1060 -0
  558. sage/modules/fp_graded/free_morphism.py +217 -0
  559. sage/modules/fp_graded/homspace.py +563 -0
  560. sage/modules/fp_graded/module.py +1340 -0
  561. sage/modules/fp_graded/morphism.py +1990 -0
  562. sage/modules/fp_graded/steenrod/all.py +1 -0
  563. sage/modules/fp_graded/steenrod/homspace.py +65 -0
  564. sage/modules/fp_graded/steenrod/module.py +477 -0
  565. sage/modules/fp_graded/steenrod/morphism.py +404 -0
  566. sage/modules/fp_graded/steenrod/profile.py +241 -0
  567. sage/modules/free_module.py +8447 -0
  568. sage/modules/free_module_element.cpython-314-x86_64-linux-musl.so +0 -0
  569. sage/modules/free_module_element.pxd +22 -0
  570. sage/modules/free_module_element.pyx +5445 -0
  571. sage/modules/free_module_homspace.py +369 -0
  572. sage/modules/free_module_integer.py +896 -0
  573. sage/modules/free_module_morphism.py +823 -0
  574. sage/modules/free_module_pseudohomspace.py +352 -0
  575. sage/modules/free_module_pseudomorphism.py +578 -0
  576. sage/modules/free_quadratic_module.py +1706 -0
  577. sage/modules/free_quadratic_module_integer_symmetric.py +1790 -0
  578. sage/modules/matrix_morphism.py +1745 -0
  579. sage/modules/misc.py +103 -0
  580. sage/modules/module_functors.py +192 -0
  581. sage/modules/multi_filtered_vector_space.py +719 -0
  582. sage/modules/ore_module.py +2208 -0
  583. sage/modules/ore_module_element.py +178 -0
  584. sage/modules/ore_module_homspace.py +147 -0
  585. sage/modules/ore_module_morphism.py +968 -0
  586. sage/modules/quotient_module.py +699 -0
  587. sage/modules/real_double_vector.py +22 -0
  588. sage/modules/submodule.py +255 -0
  589. sage/modules/tensor_operations.py +567 -0
  590. sage/modules/torsion_quadratic_module.py +1352 -0
  591. sage/modules/tutorial_free_modules.py +248 -0
  592. sage/modules/vector_complex_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  593. sage/modules/vector_complex_double_dense.pxd +6 -0
  594. sage/modules/vector_complex_double_dense.pyx +117 -0
  595. sage/modules/vector_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  596. sage/modules/vector_double_dense.pxd +6 -0
  597. sage/modules/vector_double_dense.pyx +604 -0
  598. sage/modules/vector_integer_dense.cpython-314-x86_64-linux-musl.so +0 -0
  599. sage/modules/vector_integer_dense.pxd +15 -0
  600. sage/modules/vector_integer_dense.pyx +361 -0
  601. sage/modules/vector_integer_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  602. sage/modules/vector_integer_sparse.pxd +29 -0
  603. sage/modules/vector_integer_sparse.pyx +406 -0
  604. sage/modules/vector_modn_dense.cpython-314-x86_64-linux-musl.so +0 -0
  605. sage/modules/vector_modn_dense.pxd +12 -0
  606. sage/modules/vector_modn_dense.pyx +394 -0
  607. sage/modules/vector_modn_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  608. sage/modules/vector_modn_sparse.pxd +21 -0
  609. sage/modules/vector_modn_sparse.pyx +298 -0
  610. sage/modules/vector_numpy_dense.cpython-314-x86_64-linux-musl.so +0 -0
  611. sage/modules/vector_numpy_dense.pxd +15 -0
  612. sage/modules/vector_numpy_dense.pyx +304 -0
  613. sage/modules/vector_numpy_integer_dense.cpython-314-x86_64-linux-musl.so +0 -0
  614. sage/modules/vector_numpy_integer_dense.pxd +7 -0
  615. sage/modules/vector_numpy_integer_dense.pyx +54 -0
  616. sage/modules/vector_rational_dense.cpython-314-x86_64-linux-musl.so +0 -0
  617. sage/modules/vector_rational_dense.pxd +15 -0
  618. sage/modules/vector_rational_dense.pyx +387 -0
  619. sage/modules/vector_rational_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  620. sage/modules/vector_rational_sparse.pxd +30 -0
  621. sage/modules/vector_rational_sparse.pyx +413 -0
  622. sage/modules/vector_real_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  623. sage/modules/vector_real_double_dense.pxd +6 -0
  624. sage/modules/vector_real_double_dense.pyx +126 -0
  625. sage/modules/vector_space_homspace.py +430 -0
  626. sage/modules/vector_space_morphism.py +989 -0
  627. sage/modules/with_basis/all.py +15 -0
  628. sage/modules/with_basis/cell_module.py +494 -0
  629. sage/modules/with_basis/indexed_element.cpython-314-x86_64-linux-musl.so +0 -0
  630. sage/modules/with_basis/indexed_element.pxd +13 -0
  631. sage/modules/with_basis/indexed_element.pyx +1058 -0
  632. sage/modules/with_basis/invariant.py +1075 -0
  633. sage/modules/with_basis/morphism.py +1636 -0
  634. sage/modules/with_basis/representation.py +2939 -0
  635. sage/modules/with_basis/subquotient.py +685 -0
  636. sage/numerical/all__sagemath_modules.py +6 -0
  637. sage/numerical/gauss_legendre.cpython-314-x86_64-linux-musl.so +0 -0
  638. sage/numerical/gauss_legendre.pyx +381 -0
  639. sage/numerical/optimize.py +910 -0
  640. sage/probability/all.py +10 -0
  641. sage/probability/probability_distribution.cpython-314-x86_64-linux-musl.so +0 -0
  642. sage/probability/probability_distribution.pyx +1242 -0
  643. sage/probability/random_variable.py +411 -0
  644. sage/quadratic_forms/all.py +4 -0
  645. sage/quadratic_forms/all__sagemath_modules.py +15 -0
  646. sage/quadratic_forms/binary_qf.py +2042 -0
  647. sage/quadratic_forms/bqf_class_group.py +748 -0
  648. sage/quadratic_forms/constructions.py +93 -0
  649. sage/quadratic_forms/count_local_2.cpython-314-x86_64-linux-musl.so +0 -0
  650. sage/quadratic_forms/count_local_2.pyx +365 -0
  651. sage/quadratic_forms/extras.py +195 -0
  652. sage/quadratic_forms/quadratic_form.py +1753 -0
  653. sage/quadratic_forms/quadratic_form__count_local_2.py +221 -0
  654. sage/quadratic_forms/quadratic_form__equivalence_testing.py +708 -0
  655. sage/quadratic_forms/quadratic_form__evaluate.cpython-314-x86_64-linux-musl.so +0 -0
  656. sage/quadratic_forms/quadratic_form__evaluate.pyx +139 -0
  657. sage/quadratic_forms/quadratic_form__local_density_congruence.py +977 -0
  658. sage/quadratic_forms/quadratic_form__local_field_invariants.py +1072 -0
  659. sage/quadratic_forms/quadratic_form__neighbors.py +424 -0
  660. sage/quadratic_forms/quadratic_form__reduction_theory.py +488 -0
  661. sage/quadratic_forms/quadratic_form__split_local_covering.py +416 -0
  662. sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +657 -0
  663. sage/quadratic_forms/quadratic_form__theta.py +352 -0
  664. sage/quadratic_forms/quadratic_form__variable_substitutions.py +370 -0
  665. sage/quadratic_forms/random_quadraticform.py +209 -0
  666. sage/quadratic_forms/ternary.cpython-314-x86_64-linux-musl.so +0 -0
  667. sage/quadratic_forms/ternary.pyx +1154 -0
  668. sage/quadratic_forms/ternary_qf.py +2027 -0
  669. sage/rings/all__sagemath_modules.py +28 -0
  670. sage/rings/asymptotic/all__sagemath_modules.py +1 -0
  671. sage/rings/asymptotic/misc.py +1252 -0
  672. sage/rings/cc.py +4 -0
  673. sage/rings/cfinite_sequence.py +1306 -0
  674. sage/rings/complex_conversion.cpython-314-x86_64-linux-musl.so +0 -0
  675. sage/rings/complex_conversion.pxd +8 -0
  676. sage/rings/complex_conversion.pyx +23 -0
  677. sage/rings/complex_double.cpython-314-x86_64-linux-musl.so +0 -0
  678. sage/rings/complex_double.pxd +21 -0
  679. sage/rings/complex_double.pyx +2654 -0
  680. sage/rings/complex_mpc.cpython-314-x86_64-linux-musl.so +0 -0
  681. sage/rings/complex_mpc.pxd +21 -0
  682. sage/rings/complex_mpc.pyx +2576 -0
  683. sage/rings/complex_mpfr.cpython-314-x86_64-linux-musl.so +0 -0
  684. sage/rings/complex_mpfr.pxd +18 -0
  685. sage/rings/complex_mpfr.pyx +3602 -0
  686. sage/rings/derivation.py +2334 -0
  687. sage/rings/finite_rings/all__sagemath_modules.py +1 -0
  688. sage/rings/finite_rings/maps_finite_field.py +191 -0
  689. sage/rings/function_field/all__sagemath_modules.py +8 -0
  690. sage/rings/function_field/derivations.py +102 -0
  691. sage/rings/function_field/derivations_rational.py +132 -0
  692. sage/rings/function_field/differential.py +853 -0
  693. sage/rings/function_field/divisor.py +1107 -0
  694. sage/rings/function_field/drinfeld_modules/action.py +199 -0
  695. sage/rings/function_field/drinfeld_modules/all.py +1 -0
  696. sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +673 -0
  697. sage/rings/function_field/drinfeld_modules/drinfeld_module.py +2087 -0
  698. sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1131 -0
  699. sage/rings/function_field/drinfeld_modules/homset.py +420 -0
  700. sage/rings/function_field/drinfeld_modules/morphism.py +820 -0
  701. sage/rings/function_field/hermite_form_polynomial.cpython-314-x86_64-linux-musl.so +0 -0
  702. sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
  703. sage/rings/function_field/khuri_makdisi.cpython-314-x86_64-linux-musl.so +0 -0
  704. sage/rings/function_field/khuri_makdisi.pyx +935 -0
  705. sage/rings/invariants/all.py +4 -0
  706. sage/rings/invariants/invariant_theory.py +4597 -0
  707. sage/rings/invariants/reconstruction.py +395 -0
  708. sage/rings/polynomial/all__sagemath_modules.py +17 -0
  709. sage/rings/polynomial/integer_valued_polynomials.py +1230 -0
  710. sage/rings/polynomial/laurent_polynomial_mpair.cpython-314-x86_64-linux-musl.so +0 -0
  711. sage/rings/polynomial/laurent_polynomial_mpair.pxd +15 -0
  712. sage/rings/polynomial/laurent_polynomial_mpair.pyx +2023 -0
  713. sage/rings/polynomial/ore_function_element.py +952 -0
  714. sage/rings/polynomial/ore_function_field.py +1028 -0
  715. sage/rings/polynomial/ore_polynomial_element.cpython-314-x86_64-linux-musl.so +0 -0
  716. sage/rings/polynomial/ore_polynomial_element.pxd +48 -0
  717. sage/rings/polynomial/ore_polynomial_element.pyx +3145 -0
  718. sage/rings/polynomial/ore_polynomial_ring.py +1334 -0
  719. sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-314-x86_64-linux-musl.so +0 -0
  720. sage/rings/polynomial/polynomial_real_mpfr_dense.pyx +788 -0
  721. sage/rings/polynomial/q_integer_valued_polynomials.py +1264 -0
  722. sage/rings/polynomial/skew_polynomial_element.cpython-314-x86_64-linux-musl.so +0 -0
  723. sage/rings/polynomial/skew_polynomial_element.pxd +9 -0
  724. sage/rings/polynomial/skew_polynomial_element.pyx +684 -0
  725. sage/rings/polynomial/skew_polynomial_finite_field.cpython-314-x86_64-linux-musl.so +0 -0
  726. sage/rings/polynomial/skew_polynomial_finite_field.pxd +19 -0
  727. sage/rings/polynomial/skew_polynomial_finite_field.pyx +1093 -0
  728. sage/rings/polynomial/skew_polynomial_finite_order.cpython-314-x86_64-linux-musl.so +0 -0
  729. sage/rings/polynomial/skew_polynomial_finite_order.pxd +10 -0
  730. sage/rings/polynomial/skew_polynomial_finite_order.pyx +567 -0
  731. sage/rings/polynomial/skew_polynomial_ring.py +908 -0
  732. sage/rings/real_double_element_gsl.cpython-314-x86_64-linux-musl.so +0 -0
  733. sage/rings/real_double_element_gsl.pxd +8 -0
  734. sage/rings/real_double_element_gsl.pyx +794 -0
  735. sage/rings/real_field.py +58 -0
  736. sage/rings/real_mpfr.cpython-314-x86_64-linux-musl.so +0 -0
  737. sage/rings/real_mpfr.pxd +29 -0
  738. sage/rings/real_mpfr.pyx +6122 -0
  739. sage/rings/ring_extension.cpython-314-x86_64-linux-musl.so +0 -0
  740. sage/rings/ring_extension.pxd +42 -0
  741. sage/rings/ring_extension.pyx +2779 -0
  742. sage/rings/ring_extension_conversion.cpython-314-x86_64-linux-musl.so +0 -0
  743. sage/rings/ring_extension_conversion.pxd +16 -0
  744. sage/rings/ring_extension_conversion.pyx +462 -0
  745. sage/rings/ring_extension_element.cpython-314-x86_64-linux-musl.so +0 -0
  746. sage/rings/ring_extension_element.pxd +21 -0
  747. sage/rings/ring_extension_element.pyx +1635 -0
  748. sage/rings/ring_extension_homset.py +64 -0
  749. sage/rings/ring_extension_morphism.cpython-314-x86_64-linux-musl.so +0 -0
  750. sage/rings/ring_extension_morphism.pxd +35 -0
  751. sage/rings/ring_extension_morphism.pyx +920 -0
  752. sage/schemes/all__sagemath_modules.py +1 -0
  753. sage/schemes/projective/all__sagemath_modules.py +1 -0
  754. sage/schemes/projective/coherent_sheaf.py +300 -0
  755. sage/schemes/projective/cohomology.py +510 -0
  756. sage/stats/all.py +15 -0
  757. sage/stats/basic_stats.py +489 -0
  758. sage/stats/distributions/all.py +7 -0
  759. sage/stats/distributions/catalog.py +34 -0
  760. sage/stats/distributions/dgs.h +50 -0
  761. sage/stats/distributions/dgs.pxd +111 -0
  762. sage/stats/distributions/dgs_bern.h +400 -0
  763. sage/stats/distributions/dgs_gauss.h +614 -0
  764. sage/stats/distributions/dgs_misc.h +104 -0
  765. sage/stats/distributions/discrete_gaussian_integer.cpython-314-x86_64-linux-musl.so +0 -0
  766. sage/stats/distributions/discrete_gaussian_integer.pxd +14 -0
  767. sage/stats/distributions/discrete_gaussian_integer.pyx +498 -0
  768. sage/stats/distributions/discrete_gaussian_lattice.py +908 -0
  769. sage/stats/distributions/discrete_gaussian_polynomial.py +141 -0
  770. sage/stats/hmm/all.py +15 -0
  771. sage/stats/hmm/chmm.cpython-314-x86_64-linux-musl.so +0 -0
  772. sage/stats/hmm/chmm.pyx +1595 -0
  773. sage/stats/hmm/distributions.cpython-314-x86_64-linux-musl.so +0 -0
  774. sage/stats/hmm/distributions.pxd +29 -0
  775. sage/stats/hmm/distributions.pyx +531 -0
  776. sage/stats/hmm/hmm.cpython-314-x86_64-linux-musl.so +0 -0
  777. sage/stats/hmm/hmm.pxd +17 -0
  778. sage/stats/hmm/hmm.pyx +1388 -0
  779. sage/stats/hmm/util.cpython-314-x86_64-linux-musl.so +0 -0
  780. sage/stats/hmm/util.pxd +7 -0
  781. sage/stats/hmm/util.pyx +165 -0
  782. sage/stats/intlist.cpython-314-x86_64-linux-musl.so +0 -0
  783. sage/stats/intlist.pxd +14 -0
  784. sage/stats/intlist.pyx +588 -0
  785. sage/stats/r.py +49 -0
  786. sage/stats/time_series.cpython-314-x86_64-linux-musl.so +0 -0
  787. sage/stats/time_series.pxd +6 -0
  788. sage/stats/time_series.pyx +2546 -0
  789. sage/tensor/all.py +2 -0
  790. sage/tensor/modules/all.py +8 -0
  791. sage/tensor/modules/alternating_contr_tensor.py +761 -0
  792. sage/tensor/modules/comp.py +5598 -0
  793. sage/tensor/modules/ext_pow_free_module.py +824 -0
  794. sage/tensor/modules/finite_rank_free_module.py +3589 -0
  795. sage/tensor/modules/format_utilities.py +333 -0
  796. sage/tensor/modules/free_module_alt_form.py +858 -0
  797. sage/tensor/modules/free_module_automorphism.py +1207 -0
  798. sage/tensor/modules/free_module_basis.py +1074 -0
  799. sage/tensor/modules/free_module_element.py +284 -0
  800. sage/tensor/modules/free_module_homset.py +652 -0
  801. sage/tensor/modules/free_module_linear_group.py +564 -0
  802. sage/tensor/modules/free_module_morphism.py +1581 -0
  803. sage/tensor/modules/free_module_tensor.py +3289 -0
  804. sage/tensor/modules/reflexive_module.py +386 -0
  805. sage/tensor/modules/tensor_free_module.py +780 -0
  806. sage/tensor/modules/tensor_free_submodule.py +538 -0
  807. sage/tensor/modules/tensor_free_submodule_basis.py +140 -0
  808. sage/tensor/modules/tensor_with_indices.py +1043 -0
@@ -0,0 +1,816 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ # sage.doctest: needs sage.graphs
3
+ """
4
+ The Poincare-Birkhoff-Witt Basis For A Universal Enveloping Algebra
5
+
6
+ AUTHORS:
7
+
8
+ - Travis Scrimshaw (2013-11-03): Initial version
9
+ - Travis Scrimshaw (2024-01-02): Adding the center
10
+ """
11
+
12
+ #*****************************************************************************
13
+ # Copyright (C) 2013-2024 Travis Scrimshaw <tcscrims at gmail.com>
14
+ #
15
+ # This program is free software: you can redistribute it and/or modify
16
+ # it under the terms of the GNU General Public License as published by
17
+ # the Free Software Foundation, either version 2 of the License, or
18
+ # (at your option) any later version.
19
+ # http://www.gnu.org/licenses/
20
+ #*****************************************************************************
21
+
22
+ from sage.misc.cachefunc import cached_method
23
+ from sage.misc.lazy_attribute import lazy_attribute
24
+ from sage.structure.element import get_coercion_model
25
+ from operator import mul
26
+ from sage.categories.algebras import Algebras
27
+ from sage.categories.triangular_kac_moody_algebras import TriangularKacMoodyAlgebras
28
+ from sage.monoids.indexed_free_monoid import IndexedFreeAbelianMonoid
29
+ from sage.combinat.free_module import CombinatorialFreeModule
30
+ from sage.sets.family import Family
31
+
32
+
33
+ class PoincareBirkhoffWittBasis(CombinatorialFreeModule):
34
+ r"""
35
+ The Poincare-Birkhoff-Witt (PBW) basis of the universal enveloping
36
+ algebra of a Lie algebra.
37
+
38
+ Consider a Lie algebra `\mathfrak{g}` with ordered basis
39
+ `(b_1,\dots,b_n)`. Then the universal enveloping algebra `U(\mathfrak{g})`
40
+ is generated by `b_1,\dots,b_n` and subject to the relations
41
+
42
+ .. MATH::
43
+
44
+ [b_i, b_j] = \sum_{k = 1}^n c_{ij}^k b_k
45
+
46
+ where `c_{ij}^k` are the structure coefficients of `\mathfrak{g}`. The
47
+ Poincare-Birkhoff-Witt (PBW) basis is given by the monomials
48
+ `b_1^{e_1} b_2^{e_2} \cdots b_n^{e_n}`. Specifically, we can rewrite
49
+ `b_j b_i = b_i b_j + [b_j, b_i]` where `j > i`, and we can repeat
50
+ this to sort any monomial into
51
+
52
+ .. MATH::
53
+
54
+ b_{i_1} \cdots b_{i_k} = b_1^{e_1} \cdots b_n^{e_n} + LOT
55
+
56
+ where `LOT` are lower order terms. Thus the PBW basis is a filtered basis
57
+ for `U(\mathfrak{g})`.
58
+
59
+ EXAMPLES:
60
+
61
+ We construct the PBW basis of `\mathfrak{sl}_2`::
62
+
63
+ sage: L = lie_algebras.three_dimensional_by_rank(QQ, 3, names=['E','F','H'])
64
+ sage: PBW = L.pbw_basis()
65
+
66
+ We then do some computations; in particular, we check that `[E, F] = H`::
67
+
68
+ sage: E, F, H = PBW.algebra_generators()
69
+ sage: E * F
70
+ PBW['E']*PBW['F']
71
+ sage: F * E
72
+ PBW['E']*PBW['F'] - PBW['H']
73
+ sage: E * F - F * E
74
+ PBW['H']
75
+
76
+ Next we construct another instance of the PBW basis, but sorted in the
77
+ reverse order::
78
+
79
+ sage: def neg_key(x):
80
+ ....: return -L.basis().keys().index(x)
81
+ sage: PBW2 = L.pbw_basis(prefix='PBW2', basis_key=neg_key)
82
+
83
+ We then check the multiplication is preserved::
84
+
85
+ sage: PBW2(E) * PBW2(F)
86
+ PBW2['F']*PBW2['E'] + PBW2['H']
87
+ sage: PBW2(E*F)
88
+ PBW2['F']*PBW2['E'] + PBW2['H']
89
+ sage: F * E + H
90
+ PBW['E']*PBW['F']
91
+
92
+ We now construct the PBW basis for Lie algebra of regular
93
+ vector fields on `\CC^{\times}`::
94
+
95
+ sage: L = lie_algebras.regular_vector_fields(QQ)
96
+ sage: PBW = L.pbw_basis()
97
+ sage: G = PBW.algebra_generators()
98
+ sage: G[2] * G[3]
99
+ PBW[2]*PBW[3]
100
+ sage: G[3] * G[2]
101
+ PBW[2]*PBW[3] + PBW[5]
102
+ sage: G[-2] * G[3] * G[2]
103
+ PBW[-2]*PBW[2]*PBW[3] + PBW[-2]*PBW[5]
104
+
105
+ .. TODO::
106
+
107
+ When the Lie algebra is finite dimensional, set the ordering of the
108
+ basis elements, translate the structure coefficients, and work with
109
+ fixed-length lists as the exponent vectors. This way we only will
110
+ run any nontrivial sorting only once and avoid other potentially
111
+ expensive comparisons between keys.
112
+ """
113
+ @staticmethod
114
+ def __classcall_private__(cls, g, basis_key=None, prefix='PBW', **kwds):
115
+ r"""
116
+ Normalize input to ensure a unique representation.
117
+
118
+ TESTS::
119
+
120
+ sage: from sage.algebras.lie_algebras.poincare_birkhoff_witt import PoincareBirkhoffWittBasis
121
+ sage: L = lie_algebras.sl(QQ, 2)
122
+ sage: P1 = PoincareBirkhoffWittBasis(L)
123
+ sage: P2 = PoincareBirkhoffWittBasis(L, prefix='PBW')
124
+ sage: P1 is P2
125
+ True
126
+ """
127
+ if g in TriangularKacMoodyAlgebras.FiniteDimensional:
128
+ return PoincareBirkhoffWittBasisSemisimpleLieAlgebra(g, basis_key, prefix, **kwds)
129
+ return super().__classcall__(cls, g, basis_key, prefix, **kwds)
130
+
131
+ def __init__(self, g, basis_key, prefix, **kwds):
132
+ r"""
133
+ Initialize ``self``.
134
+
135
+ TESTS::
136
+
137
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
138
+ sage: U = L.pbw_basis()
139
+ sage: d = U.algebra_generators()
140
+ sage: TestSuite(U).run()
141
+ sage: elts = [d[1], d[-1], d[2], d[-2]*d[1], d[-1]*d[1], d[3]^3*d[5], d['c']]
142
+ sage: TestSuite(U).run(elements=elts) # long time
143
+ """
144
+ if basis_key is not None:
145
+ self._basis_key = basis_key
146
+ else:
147
+ try:
148
+ self._basis_key = g._basis_key
149
+ except AttributeError:
150
+ self._basis_key_inverse = None
151
+
152
+ R = g.base_ring()
153
+ self._g = g
154
+ monomials = IndexedFreeAbelianMonoid(g.basis().keys(), prefix,
155
+ sorting_key=self._monoid_key, **kwds)
156
+ CombinatorialFreeModule.__init__(self, R, monomials,
157
+ prefix='', bracket=False, latex_bracket=False,
158
+ sorting_key=self._monomial_key,
159
+ category=Algebras(R).WithBasis().Filtered())
160
+
161
+ def _basis_key(self, x):
162
+ """
163
+ Return a key for sorting for the index ``x``.
164
+
165
+ TESTS::
166
+
167
+ sage: L = lie_algebras.three_dimensional_by_rank(QQ, 3, names=['E','F','H'])
168
+ sage: PBW = L.pbw_basis()
169
+ sage: PBW._basis_key('E') < PBW._basis_key('H')
170
+ True
171
+
172
+ ::
173
+
174
+ sage: L = lie_algebras.sl(QQ, 2)
175
+ sage: def neg_key(x):
176
+ ....: return -L.basis().keys().index(x)
177
+ sage: PBW = L.pbw_basis(basis_key=neg_key)
178
+ sage: prod(PBW.gens()) # indirect doctest
179
+ PBW[-alpha[1]]*PBW[alphacheck[1]]*PBW[alpha[1]]
180
+ - 4*PBW[-alpha[1]]*PBW[alpha[1]]
181
+ + PBW[alphacheck[1]]^2
182
+ - 2*PBW[alphacheck[1]]
183
+
184
+ Check that :issue:`23266` is fixed::
185
+
186
+ sage: sl2 = lie_algebras.sl(QQ, 2, 'matrix')
187
+ sage: sl2.indices()
188
+ {'e1', 'f1', 'h1'}
189
+ sage: type(sl2.basis().keys())
190
+ <... 'list'>
191
+ sage: Usl2 = sl2.pbw_basis()
192
+ sage: Usl2._basis_key(2)
193
+ 2
194
+ sage: Usl2._basis_key(3)
195
+ Traceback (most recent call last):
196
+ ...
197
+ KeyError: 3
198
+ """
199
+ if self._basis_key_inverse is None:
200
+ K = self._g.basis().keys()
201
+ if isinstance(K, (list, tuple)) or K.cardinality() < float('inf'):
202
+ self._basis_key_inverse = {k: i for i,k in enumerate(K)}
203
+ else:
204
+ self._basis_key_inverse = False
205
+ if self._basis_key_inverse is False:
206
+ return x
207
+ else:
208
+ return self._basis_key_inverse[x]
209
+
210
+ def _monoid_key(self, x):
211
+ """
212
+ Comparison key for the underlying monoid.
213
+
214
+ EXAMPLES::
215
+
216
+ sage: L = lie_algebras.sl(QQ, 2)
217
+ sage: def neg_key(x):
218
+ ....: return -L.basis().keys().index(x)
219
+ sage: PBW = L.pbw_basis(basis_key=neg_key)
220
+ sage: M = PBW.basis().keys()
221
+ sage: prod(M.gens()) # indirect doctest
222
+ PBW[-alpha[1]]*PBW[alphacheck[1]]*PBW[alpha[1]]
223
+ """
224
+ return self._basis_key(x[0])
225
+
226
+ def _monomial_key(self, x):
227
+ """
228
+ Compute the key for ``x`` so that the comparison is done by
229
+ reverse degree lexicographic order.
230
+
231
+ EXAMPLES::
232
+
233
+ sage: L = lie_algebras.sl(QQ, 2)
234
+ sage: PBW = L.pbw_basis()
235
+ sage: E,H,F = PBW.algebra_generators()
236
+ sage: F*H*H*E # indirect doctest
237
+ PBW[alpha[1]]*PBW[alphacheck[1]]^2*PBW[-alpha[1]]
238
+ + 8*PBW[alpha[1]]*PBW[alphacheck[1]]*PBW[-alpha[1]]
239
+ - PBW[alphacheck[1]]^3 + 16*PBW[alpha[1]]*PBW[-alpha[1]]
240
+ - 4*PBW[alphacheck[1]]^2 - 4*PBW[alphacheck[1]]
241
+
242
+ sage: def neg_key(x):
243
+ ....: return -L.basis().keys().index(x)
244
+ sage: PBW = L.pbw_basis(basis_key=neg_key)
245
+ sage: E,H,F = PBW.algebra_generators()
246
+ sage: E*H*H*F # indirect doctest
247
+ PBW[-alpha[1]]*PBW[alphacheck[1]]^2*PBW[alpha[1]]
248
+ - 8*PBW[-alpha[1]]*PBW[alphacheck[1]]*PBW[alpha[1]]
249
+ + PBW[alphacheck[1]]^3 + 16*PBW[-alpha[1]]*PBW[alpha[1]]
250
+ - 4*PBW[alphacheck[1]]^2 + 4*PBW[alphacheck[1]]
251
+ """
252
+ return (-len(x), [self._basis_key(l) for l in x.to_word_list()])
253
+
254
+ def _repr_(self):
255
+ """
256
+ Return a string representation of ``self``.
257
+
258
+ EXAMPLES::
259
+
260
+ sage: L = lie_algebras.sl(QQ, 2)
261
+ sage: L.pbw_basis()
262
+ Universal enveloping algebra of
263
+ Lie algebra of ['A', 1] in the Chevalley basis
264
+ in the Poincare-Birkhoff-Witt basis
265
+ """
266
+ return "Universal enveloping algebra of {} in the Poincare-Birkhoff-Witt basis".format(self._g)
267
+
268
+ def _latex_(self):
269
+ r"""
270
+ Return a latex representation of ``self``.
271
+
272
+ EXAMPLES::
273
+
274
+ sage: g = lie_algebras.pwitt(GF(3), 6)
275
+ sage: U = g.pbw_basis()
276
+ sage: latex(U)
277
+ PBW\left( \mathcal{W}(6)_{\Bold{F}_{3}} \right)
278
+ """
279
+ from sage.misc.latex import latex
280
+ return r"PBW\left( {} \right)".format(latex(self._g))
281
+
282
+ def _coerce_map_from_(self, R):
283
+ """
284
+ Return ``True`` if there is a coercion map from ``R`` to ``self``.
285
+
286
+ EXAMPLES:
287
+
288
+ We lift from the Lie algebra::
289
+
290
+ sage: L = lie_algebras.sl(QQ, 2)
291
+ sage: PBW = L.pbw_basis()
292
+ sage: PBW.has_coerce_map_from(L)
293
+ True
294
+ sage: [PBW(g) for g in L.basis()]
295
+ [PBW[alpha[1]], PBW[alphacheck[1]], PBW[-alpha[1]]]
296
+
297
+ We can go between PBW bases under different sorting orders::
298
+
299
+ sage: def neg_key(x):
300
+ ....: return -L.basis().keys().index(x)
301
+ sage: PBW2 = L.pbw_basis(basis_key=neg_key)
302
+ sage: E,H,F = PBW.algebra_generators()
303
+ sage: PBW2(E*H*F)
304
+ PBW[-alpha[1]]*PBW[alphacheck[1]]*PBW[alpha[1]]
305
+ - 4*PBW[-alpha[1]]*PBW[alpha[1]]
306
+ + PBW[alphacheck[1]]^2
307
+ - 2*PBW[alphacheck[1]]
308
+
309
+ We can lift from another Lie algebra and its PBW basis that
310
+ coerces into the defining Lie algebra::
311
+
312
+ sage: L = lie_algebras.sl(QQ, 2)
313
+ sage: LZ = lie_algebras.sl(ZZ, 2)
314
+ sage: L.has_coerce_map_from(LZ) and L != LZ
315
+ True
316
+ sage: PBW = L.pbw_basis()
317
+ sage: PBWZ = LZ.pbw_basis()
318
+ sage: PBW.coerce_map_from(LZ)
319
+ Composite map:
320
+ From: Lie algebra of ['A', 1] in the Chevalley basis
321
+ To: Universal enveloping algebra of Lie algebra of ['A', 1] in the Chevalley basis
322
+ in the Poincare-Birkhoff-Witt basis
323
+ Defn: Coercion map:
324
+ From: Lie algebra of ['A', 1] in the Chevalley basis
325
+ To: Lie algebra of ['A', 1] in the Chevalley basis
326
+ then
327
+ Generic morphism:
328
+ From: Lie algebra of ['A', 1] in the Chevalley basis
329
+ To: Universal enveloping algebra of Lie algebra of ['A', 1] in the Chevalley basis
330
+ in the Poincare-Birkhoff-Witt basis
331
+ sage: PBW.coerce_map_from(PBWZ)
332
+ Generic morphism:
333
+ From: Universal enveloping algebra of Lie algebra of ['A', 1] in the Chevalley basis
334
+ in the Poincare-Birkhoff-Witt basis
335
+ To: Universal enveloping algebra of Lie algebra of ['A', 1] in the Chevalley basis
336
+ in the Poincare-Birkhoff-Witt basis
337
+
338
+ TESTS:
339
+
340
+ Check that we can take the preimage (:issue:`23375`)::
341
+
342
+ sage: L = lie_algebras.cross_product(QQ)
343
+ sage: pbw = L.pbw_basis()
344
+ sage: L(pbw(L.an_element()))
345
+ X + Y + Z
346
+ sage: L(pbw(L.an_element())) == L.an_element()
347
+ True
348
+ sage: L(prod(pbw.gens()))
349
+ Traceback (most recent call last):
350
+ ...
351
+ ValueError: PBW['X']*PBW['Y']*PBW['Z'] is not in the image
352
+ sage: L(pbw.one())
353
+ Traceback (most recent call last):
354
+ ...
355
+ ValueError: 1 is not in the image
356
+ """
357
+ if R == self._g:
358
+ # Make this into the lift map
359
+ I = self._indices
360
+
361
+ def basis_function(x):
362
+ return self.monomial(I.gen(x))
363
+
364
+ def inv_supp(m):
365
+ return None if m.length() != 1 else m.leading_support()
366
+ # TODO: this diagonal, but with a smaller indexing set...
367
+ return self._g.module_morphism(basis_function, codomain=self,
368
+ triangular='upper', unitriangular=True,
369
+ inverse_on_support=inv_supp)
370
+
371
+ coerce_map = self._g.coerce_map_from(R)
372
+ if coerce_map:
373
+ return self.coerce_map_from(self._g) * coerce_map
374
+
375
+ if isinstance(R, PoincareBirkhoffWittBasis):
376
+ if self._g == R._g:
377
+ I = self._indices
378
+
379
+ def basis_function(x):
380
+ return self.prod(self.monomial(I.gen(g)**e)
381
+ for g, e in x._sorted_items())
382
+ # TODO: this diagonal, but with a smaller indexing set...
383
+ return R.module_morphism(basis_function, codomain=self)
384
+ coerce_map = self._g.coerce_map_from(R._g)
385
+ if coerce_map:
386
+ I = self._indices
387
+ lift = self.coerce_map_from(self._g)
388
+
389
+ def basis_function(x):
390
+ return self.prod(lift(coerce_map(g))**e
391
+ for g, e in x._sorted_items())
392
+ # TODO: this diagonal, but with a smaller indexing set...
393
+ return R.module_morphism(basis_function, codomain=self)
394
+
395
+ return super()._coerce_map_from_(R)
396
+
397
+ def lie_algebra(self):
398
+ """
399
+ Return the underlying Lie algebra of ``self``.
400
+
401
+ EXAMPLES::
402
+
403
+ sage: L = lie_algebras.sl(QQ, 2)
404
+ sage: PBW = L.pbw_basis()
405
+ sage: PBW.lie_algebra() is L
406
+ True
407
+ """
408
+ return self._g
409
+
410
+ def algebra_generators(self):
411
+ """
412
+ Return the algebra generators of ``self``.
413
+
414
+ EXAMPLES::
415
+
416
+ sage: L = lie_algebras.sl(QQ, 2)
417
+ sage: PBW = L.pbw_basis()
418
+ sage: PBW.algebra_generators()
419
+ Finite family {alpha[1]: PBW[alpha[1]], alphacheck[1]: PBW[alphacheck[1]], -alpha[1]: PBW[-alpha[1]]}
420
+ """
421
+ G = self._indices.gens()
422
+ return Family(self._indices._indices, lambda x: self.monomial(G[x]),
423
+ name="generator map")
424
+
425
+ gens = algebra_generators
426
+
427
+ @cached_method
428
+ def one_basis(self):
429
+ """
430
+ Return the basis element indexing `1`.
431
+
432
+ EXAMPLES::
433
+
434
+ sage: L = lie_algebras.three_dimensional_by_rank(QQ, 3, names=['E','F','H'])
435
+ sage: PBW = L.pbw_basis()
436
+ sage: ob = PBW.one_basis(); ob
437
+ 1
438
+ sage: ob.parent()
439
+ Free abelian monoid indexed by {'E', 'F', 'H'}
440
+ """
441
+ return self._indices.one()
442
+
443
+ @cached_method
444
+ def product_on_basis(self, lhs, rhs):
445
+ """
446
+ Return the product of the two basis elements ``lhs`` and ``rhs``.
447
+
448
+ EXAMPLES::
449
+
450
+ sage: L = lie_algebras.three_dimensional_by_rank(QQ, 3, names=['E','F','H'])
451
+ sage: PBW = L.pbw_basis()
452
+ sage: I = PBW.indices()
453
+ sage: PBW.product_on_basis(I.gen('E'), I.gen('F'))
454
+ PBW['E']*PBW['F']
455
+ sage: PBW.product_on_basis(I.gen('E'), I.gen('H'))
456
+ PBW['E']*PBW['H']
457
+ sage: PBW.product_on_basis(I.gen('H'), I.gen('E'))
458
+ PBW['E']*PBW['H'] + 2*PBW['E']
459
+ sage: PBW.product_on_basis(I.gen('F'), I.gen('E'))
460
+ PBW['E']*PBW['F'] - PBW['H']
461
+ sage: PBW.product_on_basis(I.gen('F'), I.gen('H'))
462
+ PBW['F']*PBW['H']
463
+ sage: PBW.product_on_basis(I.gen('H'), I.gen('F'))
464
+ PBW['F']*PBW['H'] - 2*PBW['F']
465
+ sage: PBW.product_on_basis(I.gen('H')**2, I.gen('F')**2)
466
+ PBW['F']^2*PBW['H']^2 - 8*PBW['F']^2*PBW['H'] + 16*PBW['F']^2
467
+
468
+ sage: E,F,H = PBW.algebra_generators()
469
+ sage: E*F - F*E
470
+ PBW['H']
471
+ sage: H * F * E
472
+ PBW['E']*PBW['F']*PBW['H'] - PBW['H']^2
473
+ sage: E * F * H * E
474
+ PBW['E']^2*PBW['F']*PBW['H'] + 2*PBW['E']^2*PBW['F']
475
+ - PBW['E']*PBW['H']^2 - 2*PBW['E']*PBW['H']
476
+
477
+ TESTS:
478
+
479
+ Check that :issue:`23268` is fixed::
480
+
481
+ sage: MS = MatrixSpace(QQ, 2,2)
482
+ sage: gl = LieAlgebra(associative=MS)
483
+ sage: Ugl = gl.pbw_basis()
484
+ sage: prod(Ugl.gens())
485
+ PBW[(0, 0)]*PBW[(0, 1)]*PBW[(1, 0)]*PBW[(1, 1)]
486
+ sage: prod(reversed(list(Ugl.gens())))
487
+ PBW[(0, 0)]*PBW[(0, 1)]*PBW[(1, 0)]*PBW[(1, 1)]
488
+ - PBW[(0, 0)]^2*PBW[(1, 1)] + PBW[(0, 0)]*PBW[(1, 1)]^2
489
+ """
490
+ # Some trivial base cases
491
+ if lhs == self.one_basis():
492
+ return self.monomial(rhs)
493
+ if rhs == self.one_basis():
494
+ return self.monomial(lhs)
495
+
496
+ I = self._indices
497
+ trail = lhs.trailing_support()
498
+ lead = rhs.leading_support()
499
+ if self._basis_key(trail) <= self._basis_key(lead):
500
+ return self.monomial(lhs * rhs)
501
+
502
+ # Create the commutator
503
+ # We have xy - yx = [x, y] -> xy = yx + [x, y] and we have x > y
504
+ terms = self._g.monomial(trail).bracket(self._g.monomial(lead))
505
+ lead = I.gen(lead)
506
+ trail = I.gen(trail)
507
+ mc = terms.monomial_coefficients(copy=False)
508
+ terms = self.sum_of_terms((I.gen(t), c) for t,c in mc.items())
509
+ terms += self.monomial(lead * trail)
510
+ return self.monomial(lhs // trail) * terms * self.monomial(rhs // lead)
511
+
512
+ def degree_on_basis(self, m):
513
+ """
514
+ Return the degree of the basis element indexed by ``m``.
515
+
516
+ EXAMPLES::
517
+
518
+ sage: L = lie_algebras.sl(QQ, 2)
519
+ sage: PBW = L.pbw_basis()
520
+ sage: E,H,F = PBW.algebra_generators()
521
+ sage: PBW.degree_on_basis(E.leading_support())
522
+ 1
523
+ sage: m = ((H*F)^10).trailing_support(key=PBW._monomial_key) # long time
524
+ sage: PBW.degree_on_basis(m) # long time
525
+ 20
526
+ sage: ((H*F*E)^4).maximal_degree() # long time
527
+ 12
528
+ """
529
+ return m.length()
530
+
531
+ def casimir_element(self, order=2, *args, **kwds):
532
+ r"""
533
+ Return the Casimir element of ``self``.
534
+
535
+ .. SEEALSO::
536
+
537
+ :meth:`~sage.categories.finite_dimensional_lie_algebras_with_basis.FiniteDimensionalLieAlgebrasWithBasis.ParentMethods.casimir_element`
538
+
539
+ INPUT:
540
+
541
+ - ``order`` -- (default: ``2``) the order of the Casimir element
542
+
543
+ EXAMPLES::
544
+
545
+ sage: L = LieAlgebra(QQ, cartan_type=['G', 2])
546
+ sage: U = L.pbw_basis()
547
+ sage: C = U.casimir_element(); C
548
+ 1/4*PBW[alpha[2]]*PBW[-alpha[2]] + 1/12*PBW[alpha[1]]*PBW[-alpha[1]]
549
+ + 1/12*PBW[alpha[1] + alpha[2]]*PBW[-alpha[1] - alpha[2]] + 1/12*PBW[2*alpha[1] + alpha[2]]*PBW[-2*alpha[1] - alpha[2]]
550
+ + 1/4*PBW[3*alpha[1] + alpha[2]]*PBW[-3*alpha[1] - alpha[2]]
551
+ + 1/4*PBW[3*alpha[1] + 2*alpha[2]]*PBW[-3*alpha[1] - 2*alpha[2]]
552
+ + 1/12*PBW[alphacheck[1]]^2 + 1/4*PBW[alphacheck[1]]*PBW[alphacheck[2]]
553
+ + 1/4*PBW[alphacheck[2]]^2 - 5/12*PBW[alphacheck[1]] - 3/4*PBW[alphacheck[2]]
554
+ sage: all(g * C == C * g for g in U.algebra_generators())
555
+ True
556
+
557
+ TESTS::
558
+
559
+ sage: H = lie_algebras.Heisenberg(QQ, oo)
560
+ sage: U = H.pbw_basis()
561
+ sage: U.casimir_element()
562
+ Traceback (most recent call last):
563
+ ...
564
+ ValueError: the Lie algebra must be finite dimensional
565
+ """
566
+ from sage.rings.infinity import Infinity
567
+ if self._g.dimension() == Infinity:
568
+ raise ValueError("the Lie algebra must be finite dimensional")
569
+ return self._g.casimir_element(order=order, UEA=self, *args, **kwds)
570
+
571
+ def center(self):
572
+ r"""
573
+ Return the center of ``self``.
574
+
575
+ .. SEEALSO::
576
+
577
+ :class:`~sage.algebras.lie_algebras.center_uea.CenterUEA`
578
+
579
+ EXAMPLES::
580
+
581
+ sage: g = LieAlgebra(QQ, cartan_type=['A', 2])
582
+ sage: U = g.pbw_basis()
583
+ sage: U.center() # needs sage.rings.number_field
584
+ Center of Universal enveloping algebra of Lie algebra of ['A', 2]
585
+ in the Chevalley basis in the Poincare-Birkhoff-Witt basis
586
+
587
+ sage: g = lie_algebras.Heisenberg(GF(3), 4)
588
+ sage: U = g.pbw_basis()
589
+ sage: U.center() # needs sage.rings.number_field
590
+ Center of Universal enveloping algebra of Heisenberg algebra of rank 4
591
+ over Finite Field of size 3 in the Poincare-Birkhoff-Witt basis
592
+ """
593
+ from sage.algebras.lie_algebras.center_uea import CenterUEA
594
+ return CenterUEA(self._g, self)
595
+
596
+ class Element(CombinatorialFreeModule.Element):
597
+ def _act_on_(self, x, self_on_left):
598
+ """
599
+ Return the action of ``self`` on ``x`` by seeing if there is an
600
+ action of the defining Lie algebra.
601
+
602
+ EXAMPLES::
603
+
604
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
605
+ sage: d = L.basis()
606
+ sage: x = d[-1]*d[-2]*d[-1] + 3*d[-3]
607
+ sage: x
608
+ PBW[-2]*PBW[-1]^2 + PBW[-3]*PBW[-1] + 3*PBW[-3]
609
+ sage: M = L.verma_module(1/2,3/4)
610
+ sage: v = M.highest_weight_vector()
611
+ sage: x * v
612
+ 3*d[-3]*v + d[-3]*d[-1]*v + d[-2]*d[-1]*d[-1]*v
613
+ """
614
+ # Try the _acted_upon_ first as it might have a direct PBW action
615
+ # implemented that is faster
616
+ ret = x._acted_upon_(self, not self_on_left)
617
+ if ret is not None:
618
+ return ret
619
+ cm = get_coercion_model()
620
+ L = self.parent()._g
621
+ if self_on_left:
622
+ if cm.discover_action(L, x.parent(), mul):
623
+ ret = x.parent().zero()
624
+ for mon, coeff in self._monomial_coefficients.items():
625
+ term = coeff * x
626
+ for k, exp in reversed(mon._sorted_items()):
627
+ for _ in range(exp):
628
+ term = L.monomial(k) * term
629
+ ret += term
630
+ return ret
631
+ else:
632
+ if cm.discover_action(x.parent(), L, mul):
633
+ ret = x.parent().zero()
634
+ for mon, coeff in self._monomial_coefficients.items():
635
+ term = coeff * x
636
+ for k, exp in reversed(mon._sorted_items()):
637
+ for _ in range(exp):
638
+ term = term * L.monomial(k)
639
+ ret += term
640
+ return ret
641
+ return None
642
+
643
+
644
+ class PoincareBirkhoffWittBasisSemisimpleLieAlgebra(PoincareBirkhoffWittBasis):
645
+ r"""
646
+ The Poincare-Birkhoff-Witt basis of a finite dimensional triangular
647
+ Kac-Moody Lie algebra (i.e., a semisimple Lie algebra).
648
+ """
649
+ def __init__(self, g, basis_key=None, *args, **kwds):
650
+ r"""
651
+ Initialize ``self``.
652
+
653
+ EXAMPLES::
654
+
655
+ sage: U = lie_algebras.so(QQ, 5).pbw_basis()
656
+ sage: TestSuite(U).run()
657
+
658
+ sage: L = lie_algebras.sl(QQ, 2)
659
+ sage: PBW = L.pbw_basis()
660
+ sage: E, F, H = PBW.algebra_generators()
661
+ sage: TestSuite(PBW).run(elements=[E, F, H])
662
+ sage: TestSuite(PBW).run(elements=[E, F, H, E*F + H]) # long time
663
+ """
664
+ super().__init__(g, basis_key, *args, **kwds)
665
+ if self._basis_key == self._g._triangular_key:
666
+ self._triangular_pbw = self
667
+ else:
668
+ self._triangular_pbw = self._g.pbw_basis(basis_key=self._g._triangular_key)
669
+
670
+ def e(self, i=None):
671
+ r"""
672
+ Return the generators `e` of ``self``.
673
+
674
+ INPUT:
675
+
676
+ - ``i`` -- (optional) if specified, return just the
677
+ generator `e_i`
678
+
679
+ EXAMPLES::
680
+
681
+ sage: U = lie_algebras.so(QQ, 5).pbw_basis()
682
+ sage: U.e()
683
+ Finite family {1: PBW[alpha[1]], 2: PBW[alpha[2]]}
684
+ sage: U.e(1)
685
+ PBW[alpha[1]]
686
+ """
687
+ if i is None:
688
+ return Family({i: self.e(i) for i in self._g.cartan_type().index_set()})
689
+ return self(self._g.e(i))
690
+
691
+ def f(self, i=None):
692
+ r"""
693
+ Return the generators `f` of ``self``.
694
+
695
+ INPUT:
696
+
697
+ - ``i`` -- (optional) if specified, return just the
698
+ generator `f_i`
699
+
700
+ EXAMPLES::
701
+
702
+ sage: U = lie_algebras.so(QQ, 5).pbw_basis()
703
+ sage: U.f()
704
+ Finite family {1: PBW[-alpha[1]], 2: PBW[-alpha[2]]}
705
+ sage: U.f(1)
706
+ PBW[-alpha[1]]
707
+ """
708
+ if i is None:
709
+ return Family({i: self.f(i) for i in self._g.cartan_type().index_set()})
710
+ return self(self._g.f(i))
711
+
712
+ def contravariant_form(self, x, y):
713
+ r"""
714
+ Return the (universal) contravariant form of ``x`` and ``y``.
715
+
716
+ Let `\varphi \colon U(\mathfrak{g}) \to U(\mathfrak{h})` denote
717
+ the projection onto the Cartan subalgebra and `\tau` be the transpose
718
+ map. The *(universal) contravariant form* is defined as
719
+
720
+ .. MATH::
721
+
722
+ (x, y) = \varphi(\tau(x) y).
723
+
724
+ EXAMPLES::
725
+
726
+ sage: g = LieAlgebra(QQ, cartan_type=['G', 2])
727
+ sage: U = g.pbw_basis()
728
+ sage: f1, f2 = U.f()
729
+ sage: e1, e2 = U.e()
730
+ sage: U.contravariant_form(U.one(), U.one())
731
+ 1
732
+ sage: U.contravariant_form(f1, f1)
733
+ PBW[alphacheck[1]]
734
+ sage: U.contravariant_form(f2, f2)
735
+ PBW[alphacheck[2]]
736
+ sage: U.contravariant_form(f1*f2, f1*f2)
737
+ PBW[alphacheck[1]]*PBW[alphacheck[2]] + 3*PBW[alphacheck[2]]
738
+ sage: U.contravariant_form(e1*e1*e2, e2*e1*e2)
739
+ 0
740
+ sage: cas = U.casimir_element()
741
+ sage: ccc = U.contravariant_form(cas, cas); ccc
742
+ 1/144*PBW[alphacheck[1]]^4 + 1/24*PBW[alphacheck[1]]^3*PBW[alphacheck[2]]
743
+ + 5/48*PBW[alphacheck[1]]^2*PBW[alphacheck[2]]^2
744
+ + 1/8*PBW[alphacheck[1]]*PBW[alphacheck[2]]^3 + 1/16*PBW[alphacheck[2]]^4
745
+ + 5/72*PBW[alphacheck[1]]^3 + 1/3*PBW[alphacheck[1]]^2*PBW[alphacheck[2]]
746
+ + 7/12*PBW[alphacheck[1]]*PBW[alphacheck[2]]^2 + 3/8*PBW[alphacheck[2]]^3
747
+ + 25/144*PBW[alphacheck[1]]^2 + 5/8*PBW[alphacheck[1]]*PBW[alphacheck[2]]
748
+ + 9/16*PBW[alphacheck[2]]^2
749
+ sage: ccc.parent() is U
750
+ True
751
+ """
752
+ x = self._triangular_pbw(x)
753
+ y = self._triangular_pbw(y)
754
+ temp = (x.transpose() * y)._monomial_coefficients
755
+ part = self._g._part_on_basis
756
+ ret = {mon: temp[mon] for mon in temp if all(part(b) == 0 for b in mon.support())}
757
+ # TODO: Construct this direct in ``self``
758
+ return self(self._triangular_pbw.element_class(self._triangular_pbw, ret))
759
+
760
+ @cached_method
761
+ def _transpose_on_basis(self, m):
762
+ """
763
+ Return the transpose map applied to the basis element indexed by ``m``.
764
+
765
+ EXAMPLES::
766
+
767
+ sage: g = LieAlgebra(QQ, cartan_type=['E', 6])
768
+ sage: U = g.pbw_basis()
769
+ sage: f1, f2, f3, f4, f5, f6 = U.f()
770
+ sage: e1, e2, e3, e4, e5, e6 = U.e()
771
+ sage: elt = e1 * e4^2 * f1 * f2^3
772
+ sage: U._transpose_on_basis(elt.support()[0])
773
+ PBW[alpha[2]]^3*PBW[alpha[1]]*PBW[-alpha[4]]^2*PBW[-alpha[1]]
774
+ """
775
+ I = self._indices
776
+ basis_mapping = self._g._transpose_basis_mapping
777
+ return self.prod(self.monomial(I({basis_mapping[k]: e}))
778
+ for k, e in reversed(m._sorted_items()))
779
+
780
+ @lazy_attribute
781
+ def transpose(self):
782
+ r"""
783
+ The transpose map.
784
+
785
+ EXAMPLES::
786
+
787
+ sage: g = LieAlgebra(QQ, cartan_type=['F', 4])
788
+ sage: U = g.pbw_basis()
789
+ sage: U.transpose
790
+ Generic endomorphism of Universal enveloping algebra of Lie algebra
791
+ of ['F', 4] in the Chevalley basis in the Poincare-Birkhoff-Witt basis
792
+ """
793
+ return self.module_morphism(self._transpose_on_basis, codomain=self)
794
+
795
+ class Element(PoincareBirkhoffWittBasis.Element):
796
+ def transpose(self):
797
+ r"""
798
+ Return the transpose map of ``self``.
799
+
800
+ This is the transpose map on the Lie algebra extended
801
+ as an anti-involution of ``self``.
802
+
803
+ EXAMPLES::
804
+
805
+ sage: g = LieAlgebra(QQ, cartan_type=['D', 4])
806
+ sage: U = g.pbw_basis()
807
+ sage: e = U.e()
808
+ sage: f = U.f()
809
+ sage: elts = [e[1], e[1]*e[2], e[3]+e[4], e[1]*e[3]*e[4] + e[2],
810
+ ....: f[1], f[1]*f[2], f[3]+f[4], e[1]*e[3]*e[4] + e[2],
811
+ ....: e[1]*f[1], f[1]*e[1], (e[2]*f[2] - f[2]*e[2])^2]
812
+ sage: all((b*bp).transpose() == bp.transpose() * b.transpose()
813
+ ....: for b in elts for bp in elts)
814
+ True
815
+ """
816
+ return self.parent().transpose(self)