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,1040 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ # sage.doctest: needs sage.combinat sage.graphs
3
+ r"""
4
+ Representations of Lie algebras
5
+
6
+ AUTHORS:
7
+
8
+ - Travis Scrimshaw (2023-08-31): initial version
9
+ """
10
+
11
+ # ****************************************************************************
12
+ # Copyright (C) 2023 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.misc.cachefunc import cached_method
22
+ from sage.sets.family import Family, AbstractFamily
23
+ from sage.matrix.constructor import matrix
24
+ from sage.combinat.free_module import CombinatorialFreeModule
25
+ from sage.categories.modules import Modules
26
+
27
+
28
+ class Representation_abstract:
29
+ r"""
30
+ Mixin class for (left) representations of Lie algebras.
31
+
32
+ INPUT:
33
+
34
+ - ``lie_algebra`` -- a Lie algebra
35
+ """
36
+ def __init__(self, lie_algebra):
37
+ r"""
38
+ Initialize ``self``.
39
+
40
+ EXAMPLES::
41
+
42
+ sage: L = lie_algebras.sp(QQ, 6)
43
+ sage: R = L.trivial_representation()
44
+ sage: TestSuite(R).run()
45
+ """
46
+ self._lie_algebra = lie_algebra
47
+
48
+ def lie_algebra(self):
49
+ r"""
50
+ Return the Lie algebra whose representation ``self`` is.
51
+
52
+ EXAMPLES::
53
+
54
+ sage: L = lie_algebras.sl(QQ, 4)
55
+ sage: R = L.trivial_representation()
56
+ sage: R.lie_algebra() is L
57
+ True
58
+ """
59
+ return self._lie_algebra
60
+
61
+ def side(self):
62
+ r"""
63
+ Return that ``self`` is a left representation.
64
+
65
+ OUTPUT: the string ``'left'``
66
+
67
+ EXAMPLES::
68
+
69
+ sage: L = lie_algebras.sl(QQ, 4)
70
+ sage: R = L.trivial_representation()
71
+ sage: R.side()
72
+ 'left'
73
+ """
74
+ return 'left'
75
+
76
+ def _test_representation(self, **options):
77
+ r"""
78
+ Check (on some elements) that ``self`` is a representation of the
79
+ given Lie algebra using the basis of the Lie algebra.
80
+
81
+ EXAMPLES::
82
+
83
+ sage: L = lie_algebras.Heisenberg(QQ, 3)
84
+ sage: f = {b: b.adjoint_matrix() for b in L.basis()}
85
+ sage: R = L.representation(f)
86
+ sage: R._test_representation()
87
+ """
88
+ tester = self._tester(**options)
89
+ S = tester.some_elements()
90
+ elts = self._lie_algebra.basis()
91
+ if elts.cardinality() == float('inf'):
92
+ elts = list(elts.some_elements())
93
+ from sage.misc.misc import some_tuples
94
+ for x, y in some_tuples(elts, 2, tester._max_runs):
95
+ for v in S:
96
+ tester.assertEqual(x.bracket(y) * v, x * (y * v) - y * (x * v))
97
+
98
+ def representation_matrix(self, elt):
99
+ """
100
+ Return the matrix for the action of ``elt`` on ``self``.
101
+
102
+ EXAMPLES::
103
+
104
+ sage: H1 = lie_algebras.Heisenberg(QQ, 1)
105
+ sage: F = H1.faithful_representation(algorithm='minimal')
106
+ sage: P1 = F.representation_matrix(H1.gen(0)); P1
107
+ [0 0 0]
108
+ [0 0 0]
109
+ [1 0 0]
110
+ sage: Q1 = F.representation_matrix(H1.gen(1)); Q1
111
+ [ 0 0 0]
112
+ [ 0 0 -1]
113
+ [ 0 0 0]
114
+ sage: Z = P1.commutator(Q1); Z
115
+ [0 0 0]
116
+ [1 0 0]
117
+ [0 0 0]
118
+ sage: P1.commutator(Z) == Q1.commutator(Z) == 0
119
+ True
120
+ sage: (H1.gen(0) * F.an_element()).to_vector()
121
+ (0, 0, 2)
122
+ sage: P1 * F.an_element().to_vector()
123
+ (0, 0, 2)
124
+ sage: (H1.gen(1) * F.an_element()).to_vector()
125
+ (0, -3, 0)
126
+ sage: Q1 * F.an_element().to_vector()
127
+ (0, -3, 0)
128
+ sage: (H1.basis()['z'] * F.an_element()).to_vector()
129
+ (0, 2, 0)
130
+ sage: Z * F.an_element().to_vector()
131
+ (0, 2, 0)
132
+ """
133
+ B = self.basis()
134
+ return matrix([(elt * B[k]).to_vector() for k in self.get_order()]).transpose()
135
+
136
+
137
+ class RepresentationByMorphism(CombinatorialFreeModule, Representation_abstract):
138
+ r"""
139
+ Representation of a Lie algebra defined by a Lie algebra morphism.
140
+
141
+ INPUT:
142
+
143
+ - ``lie_algebra`` -- a Lie algebra
144
+ - ``f`` -- the Lie algebra morphism defining the action of the basis
145
+ elements of ``lie_algebra``
146
+ - ``index_set`` -- (optional) the index set of the module basis
147
+ - ``on_basis`` -- boolean (default: ``False``); the function `f` defines a
148
+ map from the basis elements or from a generic element of ``lie_algebra``
149
+
150
+ If `f` is encoded as a ``dict`` or ``Family``, then the keys must
151
+ be indices of the basis of ``lie_algebra`` and the values being the
152
+ corresponding matrix defining the action. This sets ``on_basis=True``.
153
+
154
+ EXAMPLES::
155
+
156
+ sage: L.<x,y> = LieAlgebra(QQ, {('x','y'): {'y':1}})
157
+ sage: f = {x: Matrix([[1,0],[0,0]]), y: Matrix([[0,1],[0,0]])}
158
+ sage: L.representation(f)
159
+ Representation of Lie algebra on 2 generators (x, y) over Rational Field defined by:
160
+ [1 0]
161
+ x |--> [0 0]
162
+ [0 1]
163
+ y |--> [0 0]
164
+
165
+ We construct the direct sum of two copies of the trivial representation
166
+ for an infinite dimensional Lie algebra::
167
+
168
+ sage: L = lie_algebras.Affine(QQ, ['E',6,1])
169
+ sage: R = L.representation(lambda b: matrix.zero(QQ, 2), index_set=['a','b'])
170
+ sage: x = L.an_element()
171
+ sage: v = R.an_element(); v
172
+ 2*R['a'] + 2*R['b']
173
+ sage: x * v
174
+ 0
175
+
176
+ We construct a finite dimensional representation of the affline Lie algebra
177
+ of type `A_2^{(1)}`::
178
+
179
+ sage: L = lie_algebras.Affine(QQ, ['A',2,1]).derived_subalgebra()
180
+ sage: Phi_plus = list(RootSystem(['A',2]).root_lattice().positive_roots())
181
+ sage: def aff_action(key):
182
+ ....: mat = matrix.zero(QQ, 3)
183
+ ....: if key == 'c': # central element
184
+ ....: return mat
185
+ ....: b, ell = key
186
+ ....: if b in Phi_plus: # positive root
187
+ ....: ind = tuple(sorted(b.to_ambient().support()))
188
+ ....: mat[ind] = 1
189
+ ....: if ind[0] + 1 != ind[1]:
190
+ ....: mat[ind] = -1
191
+ ....: elif -b in Phi_plus: # negative root
192
+ ....: ind = tuple(sorted(b.to_ambient().support(), reverse=True))
193
+ ....: mat[ind] = 1
194
+ ....: if ind[0] - 1 != ind[1]:
195
+ ....: mat[ind] = -1
196
+ ....: else: # must be in the Cartan
197
+ ....: i = b.leading_support()
198
+ ....: mat[i,i] = -1
199
+ ....: mat[i-1,i-1] = 1
200
+ ....: return mat
201
+ sage: F = Family(L.basis(), aff_action, name="lifted natural repr")
202
+ sage: R = L.representation(index_set=range(1,4), on_basis=F)
203
+ sage: x = L.an_element(); x
204
+ (E[alpha[2]] + E[alpha[1]] + h1 + h2 + E[-alpha[2]] + E[-alpha[1]])#t^0
205
+ + (E[-alpha[1] - alpha[2]])#t^1 + (E[alpha[1] + alpha[2]])#t^-1 + c
206
+ sage: v = R.an_element(); v
207
+ 2*R[1] + 2*R[2] + 3*R[3]
208
+ sage: x * v
209
+ R[1] + 5*R[2] - 3*R[3]
210
+ sage: R._test_representation() # verify that it is a representation
211
+ """
212
+ @staticmethod
213
+ def __classcall_private__(cls, lie_algebra, f=None, index_set=None, on_basis=False, **kwargs):
214
+ r"""
215
+ Normalize inpute to ensure a unique representation.
216
+
217
+ EXAMPLES::
218
+
219
+ sage: L.<x,y> = LieAlgebra(QQ, {('x','y'): {'y':1}})
220
+ sage: f1 = {'x': Matrix([[1,0],[0,0]]), 'y': Matrix([[0,1],[0,0]])}
221
+ sage: R1 = L.representation(f1)
222
+ sage: f2 = Family({x: Matrix([[1,0],[0,0]]), y: Matrix(QQ, [[0,1],[0,0]])})
223
+ sage: R2 = L.representation(f2)
224
+ sage: R1 is R2
225
+ True
226
+
227
+ TESTS::
228
+
229
+ sage: L.<x,y> = LieAlgebra(QQ, {('x','y'): {'y':1}})
230
+ sage: f = {'x': Matrix([[1,0]]), 'y': Matrix([[0,1]])}
231
+ sage: L.representation(f)
232
+ Traceback (most recent call last):
233
+ ...
234
+ ValueError: all matrices must be square
235
+
236
+ sage: f = {'x': Matrix([[1,0],[0,0]]), 'y': Matrix([[0]])}
237
+ sage: L.representation(f)
238
+ Traceback (most recent call last):
239
+ ...
240
+ ValueError: all matrices must be square of size 2
241
+
242
+ sage: L.representation(index_set=[1,2,3])
243
+ Traceback (most recent call last):
244
+ ...
245
+ ValueError: either 'f' or 'on_basis' must be specified
246
+ sage: L.representation(on_basis=lambda x: QQ.zero())
247
+ Traceback (most recent call last):
248
+ ...
249
+ ValueError: the index set needs to be specified
250
+ """
251
+ from sage.sets.finite_enumerated_set import FiniteEnumeratedSet
252
+ base = lie_algebra.base_ring()
253
+ C = Modules(base).WithBasis().FiniteDimensional()
254
+ C = C.or_subcategory(kwargs.pop('category', C))
255
+ B = lie_algebra.basis()
256
+ if not isinstance(on_basis, bool):
257
+ f = on_basis
258
+ on_basis = True
259
+ if isinstance(f, AbstractFamily):
260
+ if f.cardinality() < float('inf'):
261
+ f = dict(f)
262
+ on_basis = True
263
+ if isinstance(f, dict):
264
+ data = {}
265
+ dim = None
266
+ for k, mat in f.items():
267
+ if k in B:
268
+ k = k.leading_support()
269
+ if not mat.is_square():
270
+ raise ValueError("all matrices must be square")
271
+ if dim is None:
272
+ dim = mat.nrows()
273
+ elif mat.nrows() != dim or mat.ncols() != dim:
274
+ raise ValueError("all matrices must be square of size {}".format(dim))
275
+ data[k] = mat.change_ring(base)
276
+ data[k].set_immutable()
277
+
278
+ if index_set is None:
279
+ index_set = FiniteEnumeratedSet(range(dim))
280
+ f = Family(data)
281
+ on_basis = True
282
+
283
+ if f is None:
284
+ raise ValueError("either 'f' or 'on_basis' must be specified")
285
+ if index_set is None:
286
+ raise ValueError("the index set needs to be specified")
287
+
288
+ index_set = FiniteEnumeratedSet(index_set)
289
+
290
+ return super(cls, RepresentationByMorphism).__classcall__(cls, lie_algebra,
291
+ f, index_set, on_basis, category=C, **kwargs)
292
+
293
+ def __init__(self, lie_algebra, f, index_set, on_basis, category, **kwargs):
294
+ r"""
295
+ Initialize ``self``.
296
+
297
+ EXAMPLES::
298
+
299
+ sage: L.<x,y> = LieAlgebra(QQ, {('x','y'): {'y':1}})
300
+ sage: f = {'x': Matrix([[1,0],[0,0]]), 'y': Matrix([[0,1],[0,0]])}
301
+ sage: R = L.representation(f)
302
+ sage: TestSuite(R).run()
303
+ """
304
+ if on_basis:
305
+ self._family = f
306
+ self._f = f.__getitem__
307
+ else:
308
+ self._f = f
309
+ prefix = kwargs.pop("prefix", 'R')
310
+ self._on_basis = on_basis
311
+
312
+ Representation_abstract.__init__(self, lie_algebra)
313
+ CombinatorialFreeModule.__init__(self, lie_algebra.base_ring(), index_set,
314
+ category=category, prefix=prefix, **kwargs)
315
+
316
+ def _repr_(self):
317
+ r"""
318
+ Return a string representation of ``self``.
319
+
320
+ EXAMPLES::
321
+
322
+ sage: L.<x,y> = LieAlgebra(QQ, {('x','y'): {'y':1}})
323
+ sage: f = {'x': Matrix([[1,0],[0,0]]), 'y': Matrix([[0,1],[0,0]])}
324
+ sage: L.representation(f)
325
+ Representation of Lie algebra on 2 generators (x, y) over Rational Field defined by:
326
+ [1 0]
327
+ x |--> [0 0]
328
+ [0 1]
329
+ y |--> [0 0]
330
+
331
+ sage: L = lie_algebras.Affine(QQ, ['E',6,1])
332
+ sage: F = Family(L.basis(), lambda b: matrix.zero(QQ, 2), name="zero map")
333
+ sage: L.representation(F, index_set=['a','b'], on_basis=True)
334
+ Representation of Affine Kac-Moody algebra of ['E', 6] in the Chevalley basis defined by:
335
+ Lazy family (zero map(i))_{i in Lazy family...}
336
+
337
+ sage: L.representation(lambda b: matrix.zero(QQ, 2), index_set=['a','b'])
338
+ Representation of Affine Kac-Moody algebra of ['E', 6] in the Chevalley basis defined by:
339
+ <function <lambda> at 0x...>
340
+ """
341
+ ret = "Representation of {} defined by:".format(self._lie_algebra)
342
+ from sage.typeset.ascii_art import ascii_art
343
+ if self._on_basis:
344
+ B = self._lie_algebra.basis()
345
+ if B.cardinality() < float('inf'):
346
+ for k in B.keys():
347
+ ret += '\n' + repr(ascii_art(B[k], self._f(k), sep=" |--> ", sep_baseline=0))
348
+ else:
349
+ ret += '\n' + repr(self._family)
350
+ else:
351
+ ret += '\n' + repr(self._f)
352
+ return ret
353
+
354
+ class Element(CombinatorialFreeModule.Element):
355
+ def _acted_upon_(self, scalar, self_on_left=False):
356
+ r"""
357
+ Return the action of ``scalar`` on ``self``.
358
+
359
+ EXAMPLES::
360
+
361
+ sage: L.<x,y> = LieAlgebra(QQ, {('x','y'): {'y':1}})
362
+ sage: f = {'x': Matrix([[1,0],[0,0]]), 'y': Matrix([[0,1],[0,0]])}
363
+ sage: R = L.representation(f)
364
+ sage: v = R.an_element(); v
365
+ 2*R[0] + 2*R[1]
366
+ sage: x * v
367
+ 2*R[0]
368
+ sage: y * v
369
+ 2*R[0]
370
+ sage: (2*x + 5*y) * v
371
+ 14*R[0]
372
+ sage: v * x
373
+ Traceback (most recent call last):
374
+ ...
375
+ TypeError: unsupported operand parent(s) for *: ...
376
+
377
+ sage: v = sum((i+4) * b for i, b in enumerate(R.basis())); v
378
+ 4*R[0] + 5*R[1]
379
+ sage: (1/3*x - 5*y) * v
380
+ -71/3*R[0]
381
+
382
+ sage: L = lie_algebras.Affine(QQ, ['E',6,1])
383
+ sage: F = Family(L.basis(), lambda b: matrix.zero(QQ, 2), name="zero map")
384
+ sage: R = L.representation(F, index_set=['a','b'], on_basis=True)
385
+ sage: R.an_element()
386
+ 2*R['a'] + 2*R['b']
387
+ sage: L.an_element() * R.an_element()
388
+ 0
389
+ """
390
+ P = self.parent()
391
+ if scalar in P._lie_algebra:
392
+ if self_on_left:
393
+ return None
394
+ if not self: # we are (already) the zero vector
395
+ return self
396
+ scalar = P._lie_algebra(scalar)
397
+ if not scalar: # we are acting by zero
398
+ return P.zero()
399
+ if P._on_basis:
400
+ mat = sum(c * P._f(k) for k, c in scalar.monomial_coefficients(copy=False).items())
401
+ else:
402
+ mat = P._f(scalar)
403
+ return P.from_vector(mat * self.to_vector())
404
+
405
+ return super()._acted_upon_(scalar, self_on_left)
406
+
407
+
408
+ class TrivialRepresentation(CombinatorialFreeModule, Representation_abstract):
409
+ r"""
410
+ The trivial representation of a Lie algebra.
411
+
412
+ The trivial representation of a Lie algebra `L` over a commutative ring
413
+ `R` is the `1`-dimensional `R`-module on which every element of `L`
414
+ acts by zero.
415
+
416
+ INPUT:
417
+
418
+ - ``lie_algebra`` -- a Lie algebra
419
+
420
+ REFERENCES:
421
+
422
+ - :wikipedia:`Trivial_representation`
423
+ """
424
+ def __init__(self, lie_algebra, **kwargs):
425
+ r"""
426
+ Initialize ``self``.
427
+
428
+ EXAMPLES::
429
+
430
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
431
+ sage: R = L.trivial_representation()
432
+ sage: TestSuite(R).run()
433
+ """
434
+ R = lie_algebra.base_ring()
435
+ cat = Modules(R).WithBasis().FiniteDimensional()
436
+ Representation_abstract.__init__(self, lie_algebra)
437
+ CombinatorialFreeModule.__init__(self, R, ['v'], prefix='T', category=cat, **kwargs)
438
+
439
+ def _repr_(self):
440
+ r"""
441
+ Return a string representation of ``self``.
442
+
443
+ EXAMPLES::
444
+
445
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
446
+ sage: L.trivial_representation()
447
+ Trivial representation of The Virasoro algebra over Rational Field
448
+ """
449
+ return "Trivial representation of {}".format(self._lie_algebra)
450
+
451
+ class Element(CombinatorialFreeModule.Element):
452
+ def _acted_upon_(self, scalar, self_on_left=False):
453
+ r"""
454
+ Return the action of ``scalar`` on ``self``.
455
+
456
+ EXAMPLES::
457
+
458
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
459
+ sage: R = L.trivial_representation()
460
+ sage: L.an_element() * R.an_element()
461
+ 0
462
+ sage: R.an_element() * L.an_element()
463
+ Traceback (most recent call last):
464
+ ...
465
+ TypeError: unsupported operand parent(s) for *: ...
466
+ sage: 3 / 5 * R.an_element()
467
+ 6/5*T['v']
468
+ """
469
+ P = self.parent()
470
+ if scalar in P._lie_algebra:
471
+ if self_on_left:
472
+ return None
473
+ return P.zero()
474
+ return super()._acted_upon_(scalar, self_on_left)
475
+
476
+
477
+ class FaithfulRepresentationNilpotentPBW(CombinatorialFreeModule, Representation_abstract):
478
+ r"""
479
+ Return a faithful representation of a nilpotent Lie algebra
480
+ constructed using the PBW basis.
481
+
482
+ Let `L` be a `k`-step nilpotent Lie algebra. Define a weight function
483
+ on elements in `L` by the lower central series of `L`. Then a faithful
484
+ representation of `L` is `U(L) / U(L)^{k+1}`, where `U(L)^{k+1}`
485
+ is the (twosided) ideal of `U(L)` generated by all monomials
486
+ of weight at least `k + 1`.
487
+
488
+ We can also expand the ideal keeping the property that `I \cap Z(L) = 0`.
489
+ The resulting quotient `U(L) / I` remains faithful and is a minimal
490
+ faithful representation of `L` in the sense that it has no faithful
491
+ submodules or quotients. (Note: this is not necessarily the smallest
492
+ dimensional faithful representation of `L`.)
493
+
494
+ We consider an example of the rank 2 Heisenberg Lie algebra,
495
+ but with a non-standard basis given by `a = p_1 + z`, `b = q_1`,
496
+ and `c = q_1 + z`::
497
+
498
+ sage: scoeffs = {('a','b'): {'b':-1, 'c':1}, ('a','c'): {'b':-1, 'c':1}}
499
+ sage: L.<a,b,c> = LieAlgebra(QQ, scoeffs)
500
+ sage: TestSuite(L).run(elements=list(L.basis()))
501
+ sage: L.is_nilpotent()
502
+ True
503
+ sage: L.derived_series()
504
+ (Lie algebra on 3 generators (a, b, c) over Rational Field,
505
+ Ideal (b - c) of Lie algebra on 3 generators (a, b, c) over Rational Field,
506
+ Ideal () of Lie algebra on 3 generators (a, b, c) over Rational Field)
507
+ sage: F = L.faithful_representation()
508
+ sage: L.an_element() * F.an_element()
509
+ 2*F[1, 0, 0] + 8*F[1, 1, 0] + 3*F[2, 0, 0] + 4*F[0, 1, 0]
510
+ + 4*F[0, 2, 0] + 4*F[0, 0, 1]
511
+
512
+ sage: MF = L.faithful_representation(algorithm='minimal')
513
+ sage: MF.dimension()
514
+ 3
515
+ sage: [MF.representation_matrix(be) for be in L.basis()]
516
+ [
517
+ [0 0 0] [ 0 0 0] [ 0 0 0]
518
+ [0 0 0] [ 0 0 -1] [ 1 0 -1]
519
+ [1 0 0], [ 0 0 0], [ 0 0 0]
520
+ ]
521
+
522
+ An example with ``minimal=True`` for `H_2 \oplus A_1`, where `A_1` is
523
+ a `1`-dimensional Abelian Lie algebra::
524
+
525
+ sage: scoeffs = {('a','b'): {'b':-1, 'c':1}, ('a','c'): {'b':-1, 'c':1}}
526
+ sage: L.<a,b,c,d> = LieAlgebra(QQ, scoeffs)
527
+ sage: F = L.faithful_representation(); F
528
+ Faithful 11 dimensional representation of Lie algebra on 4
529
+ generators (a, b, c, d) over Rational Field
530
+ sage: MF = L.faithful_representation(algorithm='minimal'); MF
531
+ Minimal faithful representation of Lie algebra on 4
532
+ generators (a, b, c, d) over Rational Field
533
+ sage: MF.dimension()
534
+ 4
535
+
536
+ INPUT:
537
+
538
+ - ``minimal`` -- boolean (default: ``False``); whether to construct
539
+ the minimal basis or not
540
+
541
+ REFERENCES:
542
+
543
+ - [BEdG2009]_
544
+ """
545
+ def __init__(self, L, minimal=False):
546
+ r"""
547
+ Initialize ``self``.
548
+
549
+ EXAMPLES::
550
+
551
+ sage: H2 = lie_algebras.Heisenberg(QQ, 2)
552
+ sage: F = H2.faithful_representation()
553
+ sage: TestSuite(F).run(elements=list(F.basis()))
554
+ sage: MF = H2.faithful_representation(algorithm='minimal')
555
+ sage: TestSuite(MF).run(elements=list(MF.basis()))
556
+
557
+ sage: sc = {('a','b'): {'b':-1, 'c':1}, ('a','c'): {'b':-1, 'c':1}}
558
+ sage: L.<a,b,c> = LieAlgebra(QQ, sc)
559
+ sage: F = L.faithful_representation()
560
+ sage: TestSuite(F).run(elements=list(F.basis()))
561
+ sage: MF = L.faithful_representation(algorithm='minimal')
562
+ sage: TestSuite(MF).run(elements=list(MF.basis()))
563
+ """
564
+ LCS = L.lower_central_series()
565
+ if LCS[-1].dimension() != 0:
566
+ raise ValueError("the Lie algebra must be nilpotent")
567
+ # construct an appropriate basis of L
568
+ basis_by_deg = {}
569
+ self._step = len(LCS) - 1
570
+ self._minimal = minimal
571
+ if self._minimal:
572
+ Z = L.center()
573
+ ZB = [L(b) for b in Z.basis()]
574
+ prev = LCS[-1]
575
+ for D in reversed(LCS[:-1]):
576
+ cur = []
577
+ for ind in range(len(ZB) - 1, -1, -1):
578
+ z = ZB[ind]
579
+ if z in D:
580
+ ZB.pop(ind)
581
+ cur.append(z)
582
+ k = self._step - len(basis_by_deg)
583
+ basis_by_deg[k] = cur
584
+ temp = [bred for b in D.basis() if (bred := Z.reduce(prev.reduce(L(b))))]
585
+ basis_by_deg[k].extend(L.echelon_form(temp))
586
+ prev = D
587
+ else:
588
+ prev = LCS[-1]
589
+ for D in reversed(LCS[:-1]):
590
+ temp = [L(bred) for b in D.basis() if (bred := prev.reduce(L(b)))]
591
+ basis_by_deg[self._step - len(basis_by_deg)] = L.echelon_form(temp)
592
+ prev = D
593
+
594
+ L_basis = sum((basis_by_deg[deg] for deg in sorted(basis_by_deg)), [])
595
+
596
+ if all(len(b.support()) == 1 for b in L_basis):
597
+ self._Lp = L
598
+ else:
599
+ cob = matrix([b._vector_() for b in L_basis]).transpose()
600
+ self._invcob = cob.inverse()
601
+ scoeffs = {}
602
+ for i, b in enumerate(L_basis):
603
+ for j, bp in enumerate(L_basis[i+1:], start=i + 1):
604
+ scoeffs[i, j] = (self._invcob * b.bracket(bp)._vector_()).dict()
605
+ index_set = tuple(range(L.dimension()))
606
+ from sage.algebras.lie_algebras.lie_algebra import LieAlgebra
607
+ self._Lp = LieAlgebra(L.base_ring(), scoeffs, index_set=index_set)
608
+
609
+ self._pbw = self._Lp.pbw_basis()
610
+ self._degrees = tuple(sum(([deg] * len(B) for deg, B in sorted(basis_by_deg.items())), []))
611
+
612
+ from sage.sets.disjoint_union_enumerated_sets import DisjointUnionEnumeratedSets
613
+ from sage.combinat.integer_vector_weighted import WeightedIntegerVectors
614
+ indices = DisjointUnionEnumeratedSets([WeightedIntegerVectors(n, self._degrees)
615
+ for n in range(self._step+1)])
616
+
617
+ if self._minimal:
618
+ X = {tuple(index) for index in indices}
619
+ monoid = self._pbw._indices
620
+ I = monoid._indices
621
+ one = L.base_ring().one()
622
+ pbw_gens = self._pbw.algebra_generators()
623
+ ZB = frozenset([L(b) for b in Z.basis()])
624
+ Zind = [i for i, b in enumerate(L_basis) if b in ZB]
625
+ Ztup = set()
626
+ for i in Zind:
627
+ vec = [0] * L.dimension()
628
+ vec[i] = 1
629
+ Ztup.add(tuple(vec))
630
+
631
+ def as_exp(s):
632
+ sm = s._monomial
633
+ return tuple([sm[i] if i in sm else 0 for i in I])
634
+
635
+ def test_ideal(m, X):
636
+ elt = self._pbw.element_class(self._pbw, {monoid(list(zip(I, m))): one})
637
+ for g in pbw_gens:
638
+ gelt = g * elt
639
+ if any(as_exp(s) in X for s in gelt.support()):
640
+ return False
641
+ return True
642
+
643
+ to_remove = {None}
644
+ while to_remove:
645
+ X -= to_remove
646
+ to_remove = set()
647
+ for m in X:
648
+ m = tuple(m)
649
+ if m in Ztup or not test_ideal(m, X):
650
+ continue
651
+ to_remove.add(m)
652
+ indices = sorted(X)
653
+
654
+ Representation_abstract.__init__(self, L)
655
+ CombinatorialFreeModule.__init__(self, L.base_ring(), indices, prefix='F', bracket=False)
656
+
657
+ def _repr_(self):
658
+ r"""
659
+ Return a string representation of ``self``.
660
+
661
+ EXAMPLES::
662
+
663
+ sage: H2 = lie_algebras.Heisenberg(QQ, 2)
664
+ sage: H2.faithful_representation()
665
+ Faithful 16 dimensional representation of Heisenberg algebra
666
+ of rank 2 over Rational Field
667
+ """
668
+ if self._minimal:
669
+ return "Minimal faithful representation of {}".format(self._lie_algebra)
670
+ return "Faithful {} dimensional representation of {}".format(self.dimension(), self._lie_algebra)
671
+
672
+ def _latex_(self):
673
+ r"""
674
+ Return a string representation of ``self``.
675
+
676
+ EXAMPLES::
677
+
678
+ sage: H2 = lie_algebras.Heisenberg(QQ, 2)
679
+ sage: latex(H2.faithful_representation())
680
+ U(\text{\texttt{Heisenberg...}}) / U(\text{\texttt{Heisenberg...}})^{3}
681
+ """
682
+ from sage.misc.latex import latex
683
+ g = latex(self._lie_algebra)
684
+ ret = "U({0}) / U({0})^{{{1}}}".format(g, self._step + 1)
685
+ if self._minimal:
686
+ return "\\min " + ret
687
+ return ret
688
+
689
+ def _project(self, elt):
690
+ r"""
691
+ The projection to ``self`` from the PBW basis.
692
+
693
+ EXAMPLES::
694
+
695
+ sage: sc = {('a','b'): {'b':-1, 'c':1}, ('a','c'): {'b':-1, 'c':1}}
696
+ sage: L.<a,b,c> = LieAlgebra(QQ, sc)
697
+ sage: F = L.faithful_representation()
698
+ sage: elt = F._to_pbw(a + b + c)^2; elt
699
+ PBW[0]^2 + 4*PBW[0]*PBW[1] - 2*PBW[0]*PBW[2] + 4*PBW[1]^2
700
+ - 4*PBW[1]*PBW[2] + PBW[2]^2 + 2*PBW[2]
701
+ sage: F._project(elt)
702
+ 2*F[0, 0, 1] + 4*F[0, 2, 0] + 4*F[1, 1, 0] + F[2, 0, 0]
703
+ sage: F._project(F._to_pbw(a + b + c)^3)
704
+ 0
705
+ """
706
+ ret = {}
707
+ I = self._pbw._indices._indices
708
+ if self._minimal:
709
+ for m, c in elt._monomial_coefficients.items():
710
+ mm = m._monomial
711
+ vec = tuple([mm[i] if i in mm else 0 for i in I])
712
+ if vec in self._indices:
713
+ ret[self._indices(vec)] = c
714
+ else:
715
+ for m, c in elt._monomial_coefficients.items():
716
+ mm = m._monomial
717
+ vec = [mm[i] if i in mm else 0 for i in I]
718
+ if sum(e * d for e, d in zip(vec, self._degrees)) <= self._step:
719
+ ret[self._indices(vec)] = c
720
+ return self.element_class(self, ret)
721
+
722
+ def _to_pbw(self, elt):
723
+ """
724
+ Return the PBW element corresponding to ``elt``.
725
+
726
+ EXAMPLES::
727
+
728
+ sage: sc = {('a','b'): {'b':-1, 'c':1}, ('a','c'): {'b':-1, 'c':1}}
729
+ sage: L.<a,b,c> = LieAlgebra(QQ, sc)
730
+ sage: F = L.faithful_representation()
731
+ sage: F._to_pbw(a)
732
+ PBW[0]
733
+ sage: F._to_pbw(b)
734
+ PBW[1]
735
+ sage: F._to_pbw(c)
736
+ PBW[1] - PBW[2]
737
+
738
+ sage: H2 = lie_algebras.Heisenberg(QQ, 2)
739
+ sage: F = H2.faithful_representation()
740
+ sage: F._to_pbw(sum(H2.basis()))
741
+ PBW['p1'] + PBW['p2'] + PBW['q1'] + PBW['q2'] + PBW['z']
742
+ """
743
+ if self._Lp is self._lie_algebra:
744
+ return self._pbw(elt)
745
+ return self._pbw(self._Lp.from_vector(self._invcob * elt._vector_()))
746
+
747
+ class Element(CombinatorialFreeModule.Element):
748
+ def _lift_pbw(self):
749
+ """
750
+ Return ``self`` as an element of the PBW basis.
751
+
752
+ EXAMPLES::
753
+
754
+ sage: H2 = lie_algebras.Heisenberg(QQ, 2)
755
+ sage: F = H2.faithful_representation()
756
+ sage: F.an_element()._lift_pbw()
757
+ 3*PBW['q1'] + 2*PBW['q2'] + 2
758
+ """
759
+ P = self.parent()
760
+ monoid = P._pbw._indices
761
+ I = monoid._indices
762
+ return P._pbw.element_class(P._pbw, {monoid(list(zip(I, m))): coeff
763
+ for m, coeff in self._monomial_coefficients.items()})
764
+
765
+ def _acted_upon_(self, scalar, self_on_left=False):
766
+ r"""
767
+ Return the action of ``scalar`` on ``self``.
768
+
769
+ EXAMPLES::
770
+
771
+ sage: H2 = lie_algebras.Heisenberg(QQ, 2)
772
+ sage: F = H2.faithful_representation()
773
+ sage: H2.an_element()
774
+ p1
775
+ sage: F.an_element()
776
+ 2*F[0, 0, 0, 0, 0] + 2*F[0, 0, 0, 1, 0] + 3*F[0, 0, 1, 0, 0]
777
+ sage: H2.an_element() * F.an_element()
778
+ 2*F[1, 0, 0, 0, 0] + 2*F[1, 0, 0, 1, 0] + 3*F[1, 0, 1, 0, 0]
779
+ sage: 5 * F.an_element()
780
+ 10*F[0, 0, 0, 0, 0] + 10*F[0, 0, 0, 1, 0] + 15*F[0, 0, 1, 0, 0]
781
+ """
782
+ P = self.parent()
783
+ if scalar in P._lie_algebra:
784
+ if self_on_left:
785
+ return None
786
+ if not self: # we are (already) the zero vector
787
+ return self
788
+ scalar = P._lie_algebra(scalar)
789
+ return P._project(P._to_pbw(scalar) * self._lift_pbw())
790
+
791
+ return super()._acted_upon_(scalar, self_on_left)
792
+
793
+
794
+ class FaithfulRepresentationPBWPosChar(CombinatorialFreeModule, Representation_abstract):
795
+ r"""
796
+ A faithful representation of a finite dimensional Lie algebra
797
+ in positive characteristic.
798
+
799
+ .. WARNING::
800
+
801
+ This is often a very large dimensional representation relative
802
+ to the dimension of the Lie algebra.
803
+
804
+ ALGORITHM:
805
+
806
+ We implement the algorithm given in [deG2000] Section 6.6. Let `L`
807
+ be a finite dimensional Lie algebra over a ring of characteristic `p`
808
+ with basis `(b_1, \ldots, b_n)`. We compute (monic) `p`-polynomials
809
+ `f_i` such that `A = \mathrm{ad}(b_i)` (the adjoint action of `b_i`)
810
+ solves `f_i(A) = 0` by using minimal polynomial of `A`. The
811
+ `(f_1, \ldots, f_n)` is a Gröbner basis for an ideal `I` of the
812
+ universal enveloping algebra `U(L)` such that the quotient `U(L) / I`
813
+ is a faithful representation of `L`.
814
+
815
+ EXAMPLES::
816
+
817
+ sage: # needs sage.libs.pari
818
+ sage: sl2 = LieAlgebra(GF(3), cartan_type=['A',1])
819
+ sage: F = sl2.faithful_representation()
820
+ sage: F
821
+ Faithful representation with p-multiplicities (1, 3, 1) of Lie algebra
822
+ of ['A', 1] in the Chevalley basis
823
+ sage: F.dimension()
824
+ 243
825
+ """
826
+ def __init__(self, L):
827
+ r"""
828
+ Initialize ``self``.
829
+
830
+ EXAMPLES::
831
+
832
+ sage: # needs sage.libs.pari
833
+ sage: sl2 = LieAlgebra(GF(3), cartan_type=['A',1])
834
+ sage: F = sl2.faithful_representation()
835
+ sage: TestSuite(F).run()
836
+ """
837
+ R = L.base_ring()
838
+ self._p = R.characteristic()
839
+ if self._p == 0:
840
+ raise ValueError("the Lie algebra must be over a ring of positive characteristic")
841
+
842
+ self._pbw = L.pbw_basis()
843
+ self._key_order = tuple(self._pbw.algebra_generators().keys())
844
+
845
+ # calculate the Gröbner basis and p-exponents
846
+ gb = []
847
+ p_exp = []
848
+ B = L.basis()
849
+ for k in self._key_order:
850
+ b = B[k]
851
+ ad = b.adjoint_matrix()
852
+ g = ad.minpoly()
853
+ d = g.degree()
854
+ # TODO: Use the sparse polynomial ring?
855
+ x = g.parent().gen()
856
+ r = [x**(self._p**i) % g for i in range(d+1)]
857
+ deg = max(ri.degree() for ri in r)
858
+ mat = matrix(R, [[ri[j] for ri in r] for j in range(deg+1)])
859
+ la = mat.right_kernel_matrix()[0]
860
+ if la:
861
+ mongen = self._pbw._indices.monoid_generators()[k]
862
+ gb.append(self._pbw._from_dict({mongen ** (self._p ** i): val
863
+ for i, val in enumerate(la) if val},
864
+ remove_zeros=False))
865
+ p_exp.append(max(la.support()))
866
+
867
+ self._groebner_basis = gb
868
+ self._p_exp = tuple(p_exp)
869
+ self._degrees = [self._p ** m for m in self._p_exp]
870
+
871
+ from sage.groups.abelian_gps.abelian_group import AbelianGroup
872
+ indices = AbelianGroup(self._degrees)
873
+
874
+ Representation_abstract.__init__(self, L)
875
+ CombinatorialFreeModule.__init__(self, R, indices, prefix='', bracket=False)
876
+
877
+ def _repr_(self):
878
+ r"""
879
+ Return a string representation of ``self``.
880
+
881
+ EXAMPLES::
882
+
883
+ sage: # needs sage.libs.pari
884
+ sage: sl3 = LieAlgebra(GF(3), cartan_type=['A',2])
885
+ sage: sl3.faithful_representation()
886
+ Faithful representation with p-multiplicities (1, 1, 1, 3, 3, 1, 1, 1)
887
+ of Lie algebra of ['A', 2] in the Chevalley basis
888
+ """
889
+ return "Faithful representation with p-multiplicities {} of {}".format(self.p_exponents(), self._lie_algebra)
890
+
891
+ def _latex_(self):
892
+ r"""
893
+ Return a string representation of ``self``.
894
+
895
+ EXAMPLES::
896
+
897
+ sage: # needs sage.libs.pari
898
+ sage: sl2 = LieAlgebra(GF(3), cartan_type=['A',1])
899
+ sage: latex(sl2.faithful_representation())
900
+ U(\mathfrak{g}(A_{1})_{\Bold{F}_{3}}) / \langle PBW_{\alpha_{1}}^{3},
901
+ 2 PBW_{\alpha^\vee_{1}}^{27} + PBW_{\alpha^\vee_{1}},
902
+ PBW_{-\alpha_{1}}^{3} \rangle
903
+ """
904
+ from sage.misc.latex import latex
905
+ g = latex(self._lie_algebra)
906
+ data = ', '.join(latex(f) for f in self._groebner_basis)
907
+ return "U({}) / \\langle {} \\rangle".format(g, data)
908
+
909
+ @cached_method
910
+ def p_exponents(self):
911
+ """
912
+ Return the `p`-exponents of ``self``.
913
+
914
+ Let `p` be the characteristic of the base ring of ``self``.
915
+ The `p`-*exponents* are the exponents `m_i` such that the `i`-th
916
+ `p`-polynomial `f_i` is of degree `p^{m_i}`.
917
+
918
+ EXAMPLES::
919
+
920
+ sage: # needs sage.libs.pari
921
+ sage: sp4 = LieAlgebra(GF(3), cartan_type=['C',2])
922
+ sage: F = sp4.faithful_representation()
923
+ sage: F.p_exponents()
924
+ (1, 1, 1, 1, 3, 3, 1, 1, 1, 1)
925
+ """
926
+ return self._p_exp
927
+
928
+ def groebner_basis(self):
929
+ """
930
+ Return the defining Gröbner basis of ``self``.
931
+
932
+ EXAMPLES::
933
+
934
+ sage: # needs sage.libs.pari
935
+ sage: sp4 = LieAlgebra(GF(3), cartan_type=['C',2])
936
+ sage: F = sp4.faithful_representation()
937
+ sage: F.groebner_basis()
938
+ [PBW[alpha[2]]^3,
939
+ PBW[alpha[1]]^3,
940
+ PBW[alpha[1] + alpha[2]]^3,
941
+ PBW[2*alpha[1] + alpha[2]]^3,
942
+ 2*PBW[alphacheck[1]]^27 + PBW[alphacheck[1]],
943
+ 2*PBW[alphacheck[2]]^27 + PBW[alphacheck[2]],
944
+ PBW[-alpha[2]]^3,
945
+ PBW[-alpha[1]]^3,
946
+ PBW[-alpha[1] - alpha[2]]^3,
947
+ PBW[-2*alpha[1] - alpha[2]]^3]
948
+ """
949
+ return self._groebner_basis
950
+
951
+ def _project(self, x):
952
+ r"""
953
+ The projection to ``self`` from the PBW basis.
954
+
955
+ EXAMPLES::
956
+
957
+ sage: # needs sage.libs.pari
958
+ sage: sl2 = LieAlgebra(GF(3), cartan_type=['A',1])
959
+ sage: F = sl2.faithful_representation()
960
+ sage: PBW = F._pbw
961
+ sage: elt = PBW.an_element(); elt
962
+ PBW[alpha[1]]^2*PBW[alphacheck[1]]^2*PBW[-alpha[1]]^3
963
+ + 2*PBW[alpha[1]] + 1
964
+ sage: F._project(elt)
965
+ 1 + 2*f0
966
+ sage: F._project(elt^2)
967
+ 1 + f0 + f0^2
968
+ sage: F._project(elt^3)
969
+ 1
970
+
971
+ sage: # needs sage.libs.pari
972
+ sage: elt = PBW(sum(sl2.basis())); elt
973
+ PBW[alpha[1]] + PBW[alphacheck[1]] + PBW[-alpha[1]]
974
+ sage: F._project(elt)
975
+ f2 + f1 + f0
976
+ sage: F._project(elt^2)
977
+ 2*f2 + f2^2 + 2*f1 + 2*f1*f2 + f1^2 + 2*f0 + 2*f0*f2 + 2*f0*f1 + f0^2
978
+ sage: F._project(elt^3)
979
+ 2*f2 + f1 + f1^3 + 2*f0
980
+ sage: F._project(elt^4)
981
+ f2 + 2*f2^2 + f1 + f1^2 + f1^3*f2 + f1^4 + f0 + f0*f2 + f0*f1^3 + 2*f0^2
982
+ """
983
+ reduction = True
984
+ while reduction:
985
+ reduction = False
986
+ mc = x._monomial_coefficients
987
+ for m, c in mc.items():
988
+ d = m.dict()
989
+ for k, e, g in zip(self._key_order, self._degrees, self._groebner_basis):
990
+ if k not in d:
991
+ continue
992
+ if d[k] >= e:
993
+ d[k] -= e
994
+ x -= self._pbw.monomial(self._pbw._indices(d)) * g
995
+ reduction = True
996
+ break
997
+ data = {}
998
+ for m, c in x._monomial_coefficients.items():
999
+ d = m.dict()
1000
+ data[self._indices([d.get(k, 0) for k in self._key_order])] = c
1001
+ return self.element_class(self, data)
1002
+
1003
+ class Element(CombinatorialFreeModule.Element):
1004
+ def _acted_upon_(self, scalar, self_on_left=False):
1005
+ r"""
1006
+ Return the action of ``scalar`` on ``self``.
1007
+
1008
+ EXAMPLES::
1009
+
1010
+ sage: # needs sage.libs.pari
1011
+ sage: sl2 = LieAlgebra(GF(3), cartan_type=['A',1])
1012
+ sage: F = sl2.faithful_representation()
1013
+ sage: v = F.an_element(); v
1014
+ 1 + 2*f2 + f0*f1*f2
1015
+ sage: sl2.an_element() * v
1016
+ f2 + 2*f2^2 + f1 + 2*f1*f2 + 2*f1^2*f2 + f0 + 2*f0*f2 + 2*f0*f2^2
1017
+ + 2*f0*f1*f2 + f0*f1*f2^2 + f0*f1^2*f2 + f0^2*f1*f2
1018
+ sage: sl2.pbw_basis().an_element() * v
1019
+ 1 + 2*f2 + 2*f0 + f0*f2 + f0*f1*f2 + 2*f0^2*f1*f2
1020
+ sage: 5 * v
1021
+ 2 + f2 + 2*f0*f1*f2
1022
+ sage: v * 5
1023
+ 2 + f2 + 2*f0*f1*f2
1024
+ sage: v._acted_upon_(sl2.an_element(), True) is None
1025
+ True
1026
+ """
1027
+ P = self.parent()
1028
+ if scalar in P._lie_algebra or scalar in P._pbw:
1029
+ if self_on_left:
1030
+ return None
1031
+ if not self: # we are (already) the zero vector
1032
+ return self
1033
+ scalar = P._pbw(scalar)
1034
+ monoid = P._pbw._indices
1035
+ I = P._key_order
1036
+ lift = P._pbw.element_class(P._pbw, {monoid(list(zip(I, m.exponents()))): coeff
1037
+ for m, coeff in self._monomial_coefficients.items()})
1038
+ return P._project(scalar * lift)
1039
+
1040
+ return super()._acted_upon_(scalar, self_on_left)