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,1186 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ # sage.doctest: needs sage.graphs
3
+ """
4
+ Virasoro Algebra and Related Lie Algebras
5
+
6
+ AUTHORS:
7
+
8
+ - Travis Scrimshaw (2013-05-03): Initial version
9
+ """
10
+ # ****************************************************************************
11
+ # Copyright (C) 2013-2017 Travis Scrimshaw <tcscrims at gmail.com>
12
+ #
13
+ # This program is free software: you can redistribute it and/or modify
14
+ # it under the terms of the GNU General Public License as published by
15
+ # the Free Software Foundation, either version 2 of the License, or
16
+ # (at your option) any later version.
17
+ # https://www.gnu.org/licenses/
18
+ # ****************************************************************************
19
+
20
+ from sage.misc.cachefunc import cached_method
21
+ from sage.categories.lie_algebras import LieAlgebras
22
+ from sage.categories.modules import Modules
23
+ from sage.rings.integer_ring import ZZ
24
+ from sage.rings.finite_rings.integer_mod_ring import IntegerModRing
25
+ from sage.sets.family import Family
26
+ from sage.sets.set import Set
27
+ from sage.sets.disjoint_union_enumerated_sets import DisjointUnionEnumeratedSets
28
+ from sage.structure.indexed_generators import IndexedGenerators
29
+ from sage.algebras.lie_algebras.lie_algebra_element import LieAlgebraElement
30
+ from sage.algebras.lie_algebras.lie_algebra import (InfinitelyGeneratedLieAlgebra,
31
+ FinitelyGeneratedLieAlgebra)
32
+ from sage.combinat.free_module import CombinatorialFreeModule
33
+
34
+
35
+ class LieAlgebraRegularVectorFields(InfinitelyGeneratedLieAlgebra, IndexedGenerators):
36
+ r"""
37
+ The Lie algebra of regular vector fields on `\CC^{\times}`.
38
+
39
+ This is the Lie algebra with basis `\{d_i\}_{i \in \ZZ}` and subject
40
+ to the relations
41
+
42
+ .. MATH::
43
+
44
+ [d_i, d_j] = (i - j) d_{i+j}.
45
+
46
+ This is also known as the Witt (Lie) algebra.
47
+
48
+ .. NOTE::
49
+
50
+ This differs from some conventions (e.g., [Ka1990]_), where
51
+ we have `d'_i \mapsto -d_i`.
52
+
53
+ REFERENCES:
54
+
55
+ - :wikipedia:`Witt_algebra`
56
+
57
+ .. SEEALSO::
58
+
59
+ :class:`WittLieAlgebra_charp`
60
+ """
61
+ def __init__(self, R):
62
+ """
63
+ Initialize ``self``.
64
+
65
+ EXAMPLES::
66
+
67
+ sage: L = lie_algebras.regular_vector_fields(QQ)
68
+ sage: TestSuite(L).run()
69
+ """
70
+ cat = LieAlgebras(R).WithBasis().Graded()
71
+ InfinitelyGeneratedLieAlgebra.__init__(self, R, index_set=ZZ, category=cat)
72
+ IndexedGenerators.__init__(self, ZZ, prefix='d', bracket='[')
73
+
74
+ def _repr_(self):
75
+ """
76
+ Return a string representation of ``self``.
77
+
78
+ EXAMPLES::
79
+
80
+ sage: lie_algebras.regular_vector_fields(QQ)
81
+ The Lie algebra of regular vector fields over Rational Field
82
+ """
83
+ return "The Lie algebra of regular vector fields over {}".format(self.base_ring())
84
+
85
+ def _latex_(self):
86
+ r"""
87
+ Return a latex representation of ``self``.
88
+
89
+ EXAMPLES::
90
+
91
+ sage: g = lie_algebras.regular_vector_fields(QQ)
92
+ sage: latex(g)
93
+ \mathcal{W}_{\Bold{Q}}
94
+ """
95
+ from sage.misc.latex import latex
96
+ return r"\mathcal{{W}}_{{{}}}".format(latex(self.base_ring()))
97
+
98
+ # For compatibility with CombinatorialFreeModuleElement
99
+ _repr_term = IndexedGenerators._repr_generator
100
+ _latex_term = IndexedGenerators._latex_generator
101
+
102
+ @cached_method
103
+ def lie_algebra_generators(self):
104
+ """
105
+ Return the generators of ``self`` as a Lie algebra.
106
+
107
+ EXAMPLES::
108
+
109
+ sage: L = lie_algebras.regular_vector_fields(QQ)
110
+ sage: L.lie_algebra_generators()
111
+ Lazy family (generator map(i))_{i in Integer Ring}
112
+ """
113
+ return Family(self._indices, self.monomial, name='generator map')
114
+
115
+ def bracket_on_basis(self, i, j):
116
+ """
117
+ Return the bracket of basis elements indexed by ``x`` and ``y``
118
+ where ``x < y``.
119
+
120
+ (This particular implementation actually does not require
121
+ ``x < y``.)
122
+
123
+ EXAMPLES::
124
+
125
+ sage: L = lie_algebras.regular_vector_fields(QQ)
126
+ sage: L.bracket_on_basis(2, -2)
127
+ 4*d[0]
128
+ sage: L.bracket_on_basis(2, 4)
129
+ -2*d[6]
130
+ sage: L.bracket_on_basis(4, 4)
131
+ 0
132
+ """
133
+ return self.term(i + j, i - j)
134
+
135
+ def degree_on_basis(self, i):
136
+ r"""
137
+ Return the degree of the basis element indexed by ``i``,
138
+ which is ``i``.
139
+
140
+ EXAMPLES::
141
+
142
+ sage: L = lie_algebras.regular_vector_fields(QQ)
143
+ sage: L.degree_on_basis(2)
144
+ 2
145
+ """
146
+ return i
147
+
148
+ def _an_element_(self):
149
+ """
150
+ Return an element of ``self``.
151
+
152
+ EXAMPLES::
153
+
154
+ sage: L = lie_algebras.regular_vector_fields(QQ)
155
+ sage: L.an_element()
156
+ d[-1] + d[0] - 3*d[1]
157
+ """
158
+ return self.monomial(0) - 3*self.monomial(1) + self.monomial(-1)
159
+
160
+ def some_elements(self):
161
+ """
162
+ Return some elements of ``self``.
163
+
164
+ EXAMPLES::
165
+
166
+ sage: L = lie_algebras.regular_vector_fields(QQ)
167
+ sage: L.some_elements()
168
+ [d[0], d[2], d[-2], d[-1] + d[0] - 3*d[1]]
169
+ """
170
+ return [self.monomial(0), self.monomial(2), self.monomial(-2), self.an_element()]
171
+
172
+ class Element(LieAlgebraElement):
173
+ pass
174
+
175
+
176
+ class WittLieAlgebra_charp(FinitelyGeneratedLieAlgebra, IndexedGenerators):
177
+ r"""
178
+ The `p`-Witt Lie algebra over a ring `R` in which
179
+ `p \cdot 1_R = 0`.
180
+
181
+ Let `R` be a ring and `p` be a positive integer such that
182
+ `p \cdot 1_R = 0`. The `p`-Witt Lie algebra over `R` is
183
+ the Lie algebra with basis `\{d_0, d_1, \ldots, d_{p-1}\}`
184
+ and subject to the relations
185
+
186
+ .. MATH::
187
+
188
+ [d_i, d_j] = (i - j) d_{i+j},
189
+
190
+ where the `i+j` on the right hand side is identified with its
191
+ remainder modulo `p`.
192
+
193
+ .. SEEALSO::
194
+
195
+ :class:`LieAlgebraRegularVectorFields`
196
+ """
197
+ def __init__(self, R, p):
198
+ """
199
+ Initialize ``self``.
200
+
201
+ EXAMPLES::
202
+
203
+ sage: L = lie_algebras.pwitt(GF(5), 5); L
204
+ The 5-Witt Lie algebra over Finite Field of size 5
205
+ sage: TestSuite(L).run()
206
+
207
+ We skip the grading test as we need to be able to echelonize a
208
+ matrix over the base ring as part of the test::
209
+
210
+ sage: L = lie_algebras.pwitt(Zmod(6), 6)
211
+ sage: TestSuite(L).run(skip='_test_grading')
212
+ """
213
+ if R(p) != 0:
214
+ raise ValueError("{} is not 0 in {}".format(p, R))
215
+ cat = LieAlgebras(R).FiniteDimensional().WithBasis().Graded()
216
+ FinitelyGeneratedLieAlgebra.__init__(self, R, index_set=list(range(p)),
217
+ category=cat)
218
+ IndexedGenerators.__init__(self, list(range(p)), prefix='d',
219
+ bracket='[')
220
+ self._p = p
221
+
222
+ def _repr_(self):
223
+ """
224
+ Return a string representation of ``self``.
225
+
226
+ EXAMPLES::
227
+
228
+ sage: lie_algebras.pwitt(Zmod(5), 5)
229
+ The 5-Witt Lie algebra over Ring of integers modulo 5
230
+ sage: lie_algebras.pwitt(Zmod(5), 15)
231
+ The 15-Witt Lie algebra over Ring of integers modulo 5
232
+ """
233
+ return "The {}-Witt Lie algebra over {}".format(self._p, self.base_ring())
234
+
235
+ def _latex_(self):
236
+ r"""
237
+ Return a latex representation of ``self``.
238
+
239
+ EXAMPLES::
240
+
241
+ sage: g = lie_algebras.pwitt(GF(3), 15)
242
+ sage: latex(g)
243
+ \mathcal{W}(15)_{\Bold{F}_{3}}
244
+ """
245
+ from sage.misc.latex import latex
246
+ return r"\mathcal{{W}}({})_{{{}}}".format(latex(self._p), latex(self.base_ring()))
247
+
248
+ # For compatibility with CombinatorialFreeModuleElement
249
+ _repr_term = IndexedGenerators._repr_generator
250
+ _latex_term = IndexedGenerators._latex_generator
251
+
252
+ @cached_method
253
+ def lie_algebra_generators(self):
254
+ """
255
+ Return the generators of ``self`` as a Lie algebra.
256
+
257
+ EXAMPLES::
258
+
259
+ sage: L = lie_algebras.pwitt(Zmod(5), 5)
260
+ sage: L.lie_algebra_generators()
261
+ Finite family {0: d[0], 1: d[1], 2: d[2], 3: d[3], 4: d[4]}
262
+ """
263
+ return Family(self._indices, self.monomial, name='generator map')
264
+
265
+ def bracket_on_basis(self, i, j):
266
+ """
267
+ Return the bracket of basis elements indexed by ``x`` and ``y``
268
+ where ``x < y``.
269
+
270
+ (This particular implementation actually does not require
271
+ ``x < y``.)
272
+
273
+ EXAMPLES::
274
+
275
+ sage: L = lie_algebras.pwitt(Zmod(5), 5)
276
+ sage: L.bracket_on_basis(2, 3)
277
+ 4*d[0]
278
+ sage: L.bracket_on_basis(3, 2)
279
+ d[0]
280
+ sage: L.bracket_on_basis(2, 2)
281
+ 0
282
+ sage: L.bracket_on_basis(1, 3)
283
+ 3*d[4]
284
+ """
285
+ return self.term((i + j) % self._p, i - j)
286
+
287
+ def _an_element_(self):
288
+ """
289
+ Return an element of ``self``.
290
+
291
+ EXAMPLES::
292
+
293
+ sage: L = lie_algebras.pwitt(Zmod(5), 5)
294
+ sage: L.an_element()
295
+ d[0] + 2*d[1] + d[4]
296
+ """
297
+ return self.monomial(0) - 3*self.monomial(1 % self._p) + self.monomial((-1) % self._p)
298
+
299
+ def some_elements(self):
300
+ """
301
+ Return some elements of ``self``.
302
+
303
+ EXAMPLES::
304
+
305
+ sage: L = lie_algebras.pwitt(Zmod(5), 5)
306
+ sage: L.some_elements()
307
+ [d[0], d[2], d[3], d[0] + 2*d[1] + d[4]]
308
+ """
309
+ return [self.monomial(0), self.monomial(2 % self._p),
310
+ self.monomial((-2) % self._p),
311
+ self.an_element()]
312
+
313
+ def degree_on_basis(self, i):
314
+ r"""
315
+ Return the degree of the basis element indexed by ``i``,
316
+ which is ``i`` mod `p`.
317
+
318
+ EXAMPLES::
319
+
320
+ sage: L = lie_algebras.pwitt(Zmod(5), 5)
321
+ sage: L.degree_on_basis(7)
322
+ 2
323
+ sage: L.degree_on_basis(2).parent()
324
+ Ring of integers modulo 5
325
+ """
326
+ return IntegerModRing(self._p)(i)
327
+
328
+ class Element(LieAlgebraElement):
329
+ pass
330
+
331
+
332
+ def _basis_key(x):
333
+ """
334
+ Helper function that generates a key for the basis elements
335
+ of the Virasoro algebra.
336
+
337
+ EXAMPLES::
338
+
339
+ sage: from sage.algebras.lie_algebras.virasoro import _basis_key
340
+ sage: _basis_key('c')
341
+ +Infinity
342
+ sage: _basis_key(2)
343
+ 2
344
+ """
345
+ if x == 'c':
346
+ from sage.rings.infinity import infinity
347
+ return infinity
348
+ return x
349
+
350
+
351
+ class VirasoroAlgebra(InfinitelyGeneratedLieAlgebra, IndexedGenerators):
352
+ r"""
353
+ The Virasoro algebra.
354
+
355
+ This is the Lie algebra with basis `\{d_i\}_{i \in \ZZ} \cup \{c\}`
356
+ and subject to the relations
357
+
358
+ .. MATH::
359
+
360
+ [d_i, d_j] = (i - j) d_{i+j} + \frac{1}{12}(i^3 - i) \delta_{i,-j} c
361
+
362
+ and
363
+
364
+ .. MATH::
365
+
366
+ [d_i, c] = 0.
367
+
368
+ (Here, it is assumed that the base ring `R` has `2` invertible.)
369
+
370
+ This is the universal central extension `\widetilde{\mathfrak{d}}` of
371
+ the Lie algebra `\mathfrak{d}` of
372
+ :class:`regular vector fields <LieAlgebraRegularVectorFields>`
373
+ on `\CC^{\times}`.
374
+
375
+ EXAMPLES::
376
+
377
+ sage: d = lie_algebras.VirasoroAlgebra(QQ)
378
+
379
+ REFERENCES:
380
+
381
+ - :wikipedia:`Virasoro_algebra`
382
+ """
383
+ def __init__(self, R):
384
+ """
385
+ Initialize ``self``.
386
+
387
+ EXAMPLES::
388
+
389
+ sage: d = lie_algebras.VirasoroAlgebra(QQ)
390
+ sage: TestSuite(d).run()
391
+ """
392
+ cat = LieAlgebras(R).WithBasis().Graded()
393
+ InfinitelyGeneratedLieAlgebra.__init__(self, R, index_set=ZZ, category=cat)
394
+ IndexedGenerators.__init__(self, ZZ, prefix='d', bracket='[',
395
+ sorting_key=_basis_key)
396
+
397
+ def _basis_key(self, m):
398
+ """
399
+ Return a key for sorting for the index ``m``.
400
+
401
+ TESTS::
402
+
403
+ sage: d = lie_algebras.VirasoroAlgebra(QQ)
404
+ sage: d._basis_key(3)
405
+ 3
406
+ sage: d._basis_key('c')
407
+ +Infinity
408
+ sage: d._basis_key(4) < d._basis_key('c')
409
+ True
410
+ """
411
+ return _basis_key(m)
412
+
413
+ def _repr_term(self, m):
414
+ """
415
+ Return a string representation of the term indexed by ``m``.
416
+
417
+ EXAMPLES::
418
+
419
+ sage: d = lie_algebras.VirasoroAlgebra(QQ)
420
+ sage: d._repr_term('c')
421
+ 'c'
422
+ sage: d._repr_term(2)
423
+ 'd[2]'
424
+ """
425
+ if isinstance(m, str):
426
+ return m
427
+ return IndexedGenerators._repr_generator(self, m)
428
+
429
+ def _latex_term(self, m):
430
+ r"""
431
+ Return a `\LaTeX` representation of the term indexed by ``m``.
432
+
433
+ EXAMPLES::
434
+
435
+ sage: d = lie_algebras.VirasoroAlgebra(QQ)
436
+ sage: d._latex_term('c')
437
+ 'c'
438
+ sage: d._latex_term(2)
439
+ 'd_{2}'
440
+ sage: d._latex_term(-13)
441
+ 'd_{-13}'
442
+ """
443
+ if isinstance(m, str):
444
+ return m
445
+ return IndexedGenerators._latex_generator(self, m)
446
+
447
+ def _unicode_art_term(self, m):
448
+ r"""
449
+ Return a unicode art representation of the term indexed by ``m``.
450
+
451
+ EXAMPLES::
452
+
453
+ sage: d = lie_algebras.VirasoroAlgebra(QQ)
454
+ sage: d._unicode_art_term('c')
455
+ c
456
+ sage: d._unicode_art_term(2)
457
+ d₂
458
+ sage: d._unicode_art_term(-13)
459
+ d₋₁₃
460
+ """
461
+ from sage.typeset.unicode_art import unicode_art, unicode_subscript
462
+ if isinstance(m, str):
463
+ return unicode_art(m)
464
+ return unicode_art('d' + unicode_subscript(m))
465
+
466
+ def _repr_(self):
467
+ """
468
+ Return a string representation of ``self``.
469
+
470
+ EXAMPLES::
471
+
472
+ sage: lie_algebras.VirasoroAlgebra(QQ)
473
+ The Virasoro algebra over Rational Field
474
+ """
475
+ return "The Virasoro algebra over {}".format(self.base_ring())
476
+
477
+ def _latex_(self):
478
+ r"""
479
+ Return a latex representation of ``self``.
480
+
481
+ EXAMPLES::
482
+
483
+ sage: g = lie_algebras.VirasoroAlgebra(QQ)
484
+ sage: latex(g)
485
+ \mathcal{V}_{\Bold{Q}}
486
+ """
487
+ from sage.misc.latex import latex
488
+ return r"\mathcal{{V}}_{{{}}}".format(latex(self.base_ring()))
489
+
490
+ @cached_method
491
+ def lie_algebra_generators(self):
492
+ """
493
+ Return the generators of ``self`` as a Lie algebra.
494
+
495
+ EXAMPLES::
496
+
497
+ sage: d = lie_algebras.VirasoroAlgebra(QQ)
498
+ sage: d.lie_algebra_generators()
499
+ Lazy family (generator map(i))_{i in Integer Ring}
500
+ """
501
+ return Family(self._indices, self.monomial, name='generator map')
502
+
503
+ @cached_method
504
+ def basis(self):
505
+ """
506
+ Return a basis of ``self``.
507
+
508
+ EXAMPLES::
509
+
510
+ sage: d = lie_algebras.VirasoroAlgebra(QQ)
511
+ sage: B = d.basis(); B
512
+ Lazy family (basis map(i))_{i in Disjoint union of
513
+ Family ({'c'}, Integer Ring)}
514
+ sage: B['c']
515
+ c
516
+ sage: B[3]
517
+ d[3]
518
+ sage: B[-15]
519
+ d[-15]
520
+ """
521
+ I = DisjointUnionEnumeratedSets([Set(['c']), ZZ])
522
+ return Family(I, self.monomial, name='basis map')
523
+
524
+ def d(self, i):
525
+ """
526
+ Return the element `d_i` in ``self``.
527
+
528
+ EXAMPLES::
529
+
530
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
531
+ sage: L.d(2)
532
+ d[2]
533
+ """
534
+ return self.monomial(i)
535
+
536
+ def c(self):
537
+ """
538
+ The central element `c` in ``self``.
539
+
540
+ EXAMPLES::
541
+
542
+ sage: d = lie_algebras.VirasoroAlgebra(QQ)
543
+ sage: d.c()
544
+ c
545
+ """
546
+ return self.monomial('c')
547
+
548
+ def bracket_on_basis(self, i, j):
549
+ """
550
+ Return the bracket of basis elements indexed by ``x`` and ``y``
551
+ where ``x < y``.
552
+
553
+ (This particular implementation actually does not require
554
+ ``x < y``.)
555
+
556
+ EXAMPLES::
557
+
558
+ sage: d = lie_algebras.VirasoroAlgebra(QQ)
559
+ sage: d.bracket_on_basis('c', 2)
560
+ 0
561
+ sage: d.bracket_on_basis(2, -2)
562
+ 4*d[0] + 1/2*c
563
+ """
564
+ if i == 'c' or j == 'c':
565
+ return self.zero()
566
+ ret = self._from_dict({i + j: i-j})
567
+ R = self.base_ring()
568
+ if i == -j:
569
+ ret += R(i ** 3 - i) / R(12) * self.c()
570
+ return ret
571
+
572
+ def degree_on_basis(self, i):
573
+ r"""
574
+ Return the degree of the basis element indexed by ``i``,
575
+ which is ``i`` and `0` for ``'c'``.
576
+
577
+ EXAMPLES::
578
+
579
+ sage: d = lie_algebras.VirasoroAlgebra(QQ)
580
+ sage: d.degree_on_basis(2)
581
+ 2
582
+ sage: d.c().degree()
583
+ 0
584
+ sage: (d.c() + d.basis()[0]).is_homogeneous()
585
+ True
586
+ """
587
+ if i == 'c':
588
+ return ZZ.zero()
589
+ return i
590
+
591
+ def _an_element_(self):
592
+ """
593
+ Return an element of ``self``.
594
+
595
+ EXAMPLES::
596
+
597
+ sage: d = lie_algebras.VirasoroAlgebra(QQ)
598
+ sage: d.an_element()
599
+ d[-1] + d[0] - 1/2*d[1] + c
600
+ """
601
+ d = self.monomial
602
+ return d(0) - self.base_ring().an_element()*d(1) + d(-1) + d('c')
603
+
604
+ def some_elements(self):
605
+ """
606
+ Return some elements of ``self``.
607
+
608
+ EXAMPLES::
609
+
610
+ sage: d = lie_algebras.VirasoroAlgebra(QQ)
611
+ sage: d.some_elements()
612
+ [d[0], d[2], d[-2], c, d[-1] + d[0] - 1/2*d[1] + c]
613
+ """
614
+ d = self.monomial
615
+ return [d(0), d(2), d(-2), d('c'), self.an_element()]
616
+
617
+ def chargeless_representation(self, a, b):
618
+ """
619
+ Return the chargeless representation of ``self`` with
620
+ parameters ``a`` and ``b``.
621
+
622
+ .. SEEALSO::
623
+
624
+ :class:`~sage.algebras.lie_algebras.virasoro.ChargelessRepresentation`
625
+
626
+ EXAMPLES::
627
+
628
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
629
+ sage: L.chargeless_representation(3, 2)
630
+ Chargeless representation (3, 2) of
631
+ The Virasoro algebra over Rational Field
632
+ """
633
+ return ChargelessRepresentation(self, a, b)
634
+
635
+ def verma_module(self, c, h):
636
+ """
637
+ Return the Verma module with central charge ``c`` and
638
+ conformal (or highest) weight ``h``.
639
+
640
+ .. SEEALSO::
641
+
642
+ :class:`~sage.algebras.lie_algebras.virasoro.VermaModule`
643
+
644
+ EXAMPLES::
645
+
646
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
647
+ sage: L.verma_module(3, 2)
648
+ Verma module with charge 3 and conformal weight 2 of
649
+ The Virasoro algebra over Rational Field
650
+ """
651
+ return VermaModule(self, c, h)
652
+
653
+ class Element(LieAlgebraElement):
654
+ pass
655
+
656
+ #####################################################################
657
+ # Representations
658
+
659
+
660
+ class ChargelessRepresentation(CombinatorialFreeModule):
661
+ r"""
662
+ A chargeless representation of the Virasoro algebra.
663
+
664
+ Let `L` be the Virasoro algebra over the field `F` of
665
+ characteristic `0`. For `\alpha, \beta \in R`, we denote `V_{a,b}`
666
+ as the `(a, b)`-*chargeless representation* of `L`, which is the
667
+ `F`-span of `\{v_k \mid k \in \ZZ\}` with `L` action
668
+
669
+ .. MATH::
670
+
671
+ \begin{aligned}
672
+ d_n \cdot v_k & = (a n + b - k) v_{n+k},
673
+ \\ c \cdot v_k & = 0,
674
+ \end{aligned}
675
+
676
+ This comes from the action of `d_n = -t^{n+1} \frac{d}{dt}` on
677
+ `F[t, t^{-1}]` (recall that `L` is the central extension of the
678
+ :class:`algebra of derivations <LieAlgebraRegularVectorFields>`
679
+ of `F[t, t^{-1}]`), where
680
+
681
+ .. MATH::
682
+
683
+ V_{a,b} = F[t, t^{-1}] t^{a-b} (dt)^{-a}
684
+
685
+ and `v_k = t^{a-b+k} (dz)^{-a}`.
686
+
687
+ The chargeless representations are either irreducible or
688
+ contains exactly two simple subquotients, one of which is the
689
+ trivial representation and the other is `F[t, t^{-1}] / F`.
690
+ The non-trivial simple subquotients are called the
691
+ *intermediate series*.
692
+
693
+ The module `V_{a,b}` is irreducible if and only if
694
+ `a \neq 0, -1` or `b \notin \ZZ`. When `a = 0` and `b \in \ZZ`,
695
+ then there exists a subrepresentation isomorphic to the trivial
696
+ representation. If `a = -1` and `b \in \ZZ`, then there exists
697
+ a subrepresentation `V` such that `V_{a,b} / V` is isomorphic
698
+ to `K \frac{dt}{t}` and `V` is irreducible.
699
+
700
+ In characteristic `p`, the non-trivial simple subquotient
701
+ is isomorphic to `F[t, t^{-1}] / F[t^p, t^{-p}]`. For
702
+ `p \neq 2,3`, then the action is given as above.
703
+
704
+ EXAMPLES:
705
+
706
+ We first construct the irreducible `V_{1/2, 3/4}` and do some
707
+ basic computations::
708
+
709
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
710
+ sage: M = L.chargeless_representation(1/2, 3/4)
711
+ sage: d = L.basis()
712
+ sage: v = M.basis()
713
+ sage: d[3] * v[2]
714
+ 1/4*v[5]
715
+ sage: d[3] * v[-1]
716
+ 13/4*v[2]
717
+ sage: (d[3] - d[-2]) * (v[-1] + 1/2*v[0] - v[4])
718
+ -3/4*v[-3] + 1/8*v[-2] - v[2] + 9/8*v[3] + 7/4*v[7]
719
+
720
+ We construct the reducible `V_{0,2}` and the trivial
721
+ subrepresentation given by the span of `v_2`. We verify
722
+ this for `\{d_i \mid -10 \leq i < 10\}`::
723
+
724
+ sage: M = L.chargeless_representation(0, 2)
725
+ sage: v = M.basis()
726
+ sage: all(d[i] * v[2] == M.zero() for i in range(-10, 10))
727
+ True
728
+
729
+ REFERENCES:
730
+
731
+ - [Mat1992]_
732
+ - [IK2010]_
733
+ """
734
+ def __init__(self, V, a, b):
735
+ """
736
+ Initialize ``self``.
737
+
738
+ EXAMPLES::
739
+
740
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
741
+ sage: M = L.chargeless_representation(1/2, 3/4)
742
+ sage: TestSuite(M).run()
743
+ """
744
+ self._a = a
745
+ self._b = b
746
+ self._V = V
747
+ R = V.base_ring()
748
+ if R.characteristic() in [2, 3]:
749
+ raise NotImplementedError("not implemented for characteristic 2,3")
750
+ cat = Modules(R).WithBasis().Graded()
751
+ CombinatorialFreeModule.__init__(self, R, ZZ, prefix='v', category=cat)
752
+
753
+ def _repr_(self):
754
+ """
755
+ Return a string representation of ``self``.
756
+
757
+ EXAMPLES::
758
+
759
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
760
+ sage: L.chargeless_representation(1/2, 3/4)
761
+ Chargeless representation (1/2, 3/4) of
762
+ The Virasoro algebra over Rational Field
763
+ """
764
+ return "Chargeless representation ({}, {}) of {}".format(
765
+ self._a, self._b, self._V)
766
+
767
+ def parameters(self):
768
+ """
769
+ Return the parameters `(a, b)` of ``self``.
770
+
771
+ EXAMPLES::
772
+
773
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
774
+ sage: M = L.chargeless_representation(1/2, 3/4)
775
+ sage: M.parameters()
776
+ (1/2, 3/4)
777
+ """
778
+ return (self._a, self._b)
779
+
780
+ def virasoro_algebra(self):
781
+ """
782
+ Return the Virasoro algebra ``self`` is a representation of.
783
+
784
+ EXAMPLES::
785
+
786
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
787
+ sage: M = L.chargeless_representation(1/2, 3/4)
788
+ sage: M.virasoro_algebra() is L
789
+ True
790
+ """
791
+ return self._V
792
+
793
+ def degree_on_basis(self, i):
794
+ r"""
795
+ Return the degree of the basis element indexed by ``i``,
796
+ which is `i`.
797
+
798
+ EXAMPLES::
799
+
800
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
801
+ sage: M = L.chargeless_representation(1/2, 3/4)
802
+ sage: M.degree_on_basis(-3)
803
+ -3
804
+ """
805
+ return i
806
+
807
+ class Element(CombinatorialFreeModule.Element):
808
+ def _acted_upon_(self, scalar, self_on_left=False):
809
+ """
810
+ Return the action of ``scalar`` on ``self``.
811
+
812
+ EXAMPLES::
813
+
814
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
815
+ sage: d = L.basis()
816
+ sage: M = L.chargeless_representation(1/2, 3/4)
817
+ sage: x = d[-5] * M.an_element() + M.basis()[10]; x
818
+ -9/4*v[-6] - 7/4*v[-5] - 33/4*v[-4] + v[10]
819
+ sage: d[2] * x
820
+ -279/16*v[-4] - 189/16*v[-3] - 759/16*v[-2] - 33/4*v[12]
821
+
822
+ sage: v = M.basis()
823
+ sage: all(d[i]*(d[j]*v[k]) - d[j]*(d[i]*v[k]) == d[i].bracket(d[j])*v[k]
824
+ ....: for i in range(-5, 5) for j in range(-5, 5) for k in range(-5, 5))
825
+ True
826
+ """
827
+ P = self.parent()
828
+ # We implement only a left action
829
+ if not self_on_left and scalar in P._V:
830
+ scalar = P._V(scalar)
831
+ return P.sum_of_terms((n+k, (P._a * n + P._b - k) * cv * cm)
832
+ for n,cv in scalar.monomial_coefficients(copy=False).items() if n != 'c'
833
+ for k,cm in self.monomial_coefficients(copy=False).items())
834
+ return CombinatorialFreeModule.Element._acted_upon_(self, scalar, self_on_left)
835
+
836
+ _rmul_ = _lmul_ = _acted_upon_
837
+
838
+
839
+ class VermaModule(CombinatorialFreeModule):
840
+ r"""
841
+ A Verma module of the Virasoro algebra.
842
+
843
+ The Virasoro algebra admits a triangular decomposition
844
+
845
+ .. MATH::
846
+
847
+ V_- \oplus R d_0 \oplus R \hat{c} \oplus V_+,
848
+
849
+ where `V_-` (resp. `V_+`) is the span of `\{d_i \mid i < 0\}`
850
+ (resp. `\{d_i \mid i > 0\}`). We can construct the *Verma module*
851
+ `M_{c,h}` as the induced representation of the `R d_0 \oplus
852
+ R \hat{c} \oplus V_+` representation `R_{c,H} = Rv`, where
853
+
854
+ .. MATH::
855
+
856
+ V_+ v = 0, \qquad \hat{c} v = c v, \qquad d_0 v = h v.
857
+
858
+ Therefore, we have a basis of `M_{c,h}`
859
+
860
+ .. MATH::
861
+
862
+ \{ L_{i_1} \cdots L_{i_k} v \mid i_1 \leq \cdots \leq i_k < 0 \}.
863
+
864
+ Moreover, the Verma modules are the free objects in the category of
865
+ highest weight representations of `V` and are indecomposable.
866
+ The Verma module `M_{c,h}` is irreducible for generic values of `c`
867
+ and `h` and when it is reducible, the quotient by the maximal
868
+ submodule is the unique irreducible highest weight representation
869
+ `V_{c,h}`.
870
+
871
+ EXAMPLES:
872
+
873
+ We construct a Verma module and do some basic computations::
874
+
875
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
876
+ sage: M = L.verma_module(3, 0)
877
+ sage: d = L.basis()
878
+ sage: v = M.highest_weight_vector()
879
+ sage: d[3] * v
880
+ 0
881
+ sage: d[-3] * v
882
+ d[-3]*v
883
+ sage: d[-1] * (d[-3] * v)
884
+ 2*d[-4]*v + d[-3]*d[-1]*v
885
+ sage: d[2] * (d[-1] * (d[-3] * v))
886
+ 12*d[-2]*v + 5*d[-1]*d[-1]*v
887
+
888
+ We verify that `d_{-1} v` is a singular vector for
889
+ `\{d_i \mid 1 \leq i < 20\}`::
890
+
891
+ sage: w = M.basis()[-1]; w
892
+ d[-1]*v
893
+ sage: all(d[i] * w == M.zero() for i in range(1,20))
894
+ True
895
+
896
+ We also verify a singular vector for `V_{-2,1}`::
897
+
898
+ sage: M = L.verma_module(-2, 1)
899
+ sage: B = M.basis()
900
+ sage: w = B[-1,-1] - 2 * B[-2]
901
+ sage: d = L.basis()
902
+ sage: all(d[i] * w == M.zero() for i in range(1,20))
903
+ True
904
+
905
+ REFERENCES:
906
+
907
+ - :wikipedia:`Virasoro_algebra#Representation_theory`
908
+ """
909
+ @staticmethod
910
+ def __classcall_private__(cls, V, c, h):
911
+ """
912
+ Normalize input to ensure a unique representation.
913
+
914
+ EXAMPLES::
915
+
916
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
917
+ sage: M = L.verma_module(3, 1/2)
918
+ sage: M2 = L.verma_module(int(3), 1/2)
919
+ sage: M is M2
920
+ True
921
+ """
922
+ R = V.base_ring()
923
+ return super().__classcall__(cls, V, R(c), R(h))
924
+
925
+ @staticmethod
926
+ def _partition_to_neg_tuple(x):
927
+ """
928
+ Helper function to convert a partition to an increasing
929
+ sequence of negative numbers.
930
+
931
+ EXAMPLES::
932
+
933
+ sage: from sage.algebras.lie_algebras.virasoro import VermaModule
934
+ sage: VermaModule._partition_to_neg_tuple([3,2,2,1])
935
+ (-3, -2, -2, -1)
936
+ """
937
+ # The entries of the partition are likely ints, but we need to
938
+ # make sure they are Integers.
939
+ return tuple([ZZ(-i) for i in x])
940
+
941
+ def __init__(self, V, c, h):
942
+ """
943
+ Initialize ``self``.
944
+
945
+ EXAMPLES::
946
+
947
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
948
+ sage: M = L.verma_module(3, 1/2)
949
+ sage: TestSuite(M).run()
950
+ """
951
+ self._c = c
952
+ self._h = h
953
+ self._V = V
954
+ from sage.combinat.partition import _Partitions
955
+ indices = _Partitions.map(VermaModule._partition_to_neg_tuple)
956
+ R = V.base_ring()
957
+ cat = Modules(R).WithBasis().Graded()
958
+ CombinatorialFreeModule.__init__(self, R, indices, prefix='v', category=cat)
959
+
960
+ def _repr_term(self, k):
961
+ """
962
+ Return a string representation for the term indexed by ``k``.
963
+
964
+ EXAMPLES::
965
+
966
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
967
+ sage: M = L.verma_module(1, -2)
968
+ sage: M._repr_term((-3,-2,-2,-1))
969
+ 'd[-3]*d[-2]*d[-2]*d[-1]*v'
970
+ """
971
+ if not k:
972
+ return 'v'
973
+ d = self._V.basis()
974
+ return '*'.join(repr(d[i]) for i in k) + '*v'
975
+
976
+ def _latex_term(self, k):
977
+ """
978
+ Return a latex representation for the term indexed by ``k``.
979
+
980
+ EXAMPLES::
981
+
982
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
983
+ sage: M = L.verma_module(1, -2)
984
+ sage: M._latex_term((-3,-2,-2,-1))
985
+ 'd_{-3} d_{-2} d_{-2} d_{-1} v'
986
+ """
987
+ if not k:
988
+ return 'v'
989
+ d = self._V.basis()
990
+ from sage.misc.latex import latex
991
+ return ' '.join(latex(d[i]) for i in k) + ' v'
992
+
993
+ def _repr_(self):
994
+ """
995
+ Return a string representation of ``self``.
996
+
997
+ EXAMPLES::
998
+
999
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
1000
+ sage: M = L.verma_module(3, 0)
1001
+ sage: M
1002
+ Verma module with charge 3 and conformal weight 0 of
1003
+ The Virasoro algebra over Rational Field
1004
+ """
1005
+ return "Verma module with charge {} and conformal weight {} of {}".format(
1006
+ self._c, self._h, self._V)
1007
+
1008
+ def _monomial(self, index):
1009
+ """
1010
+ TESTS::
1011
+
1012
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
1013
+ sage: M = L.verma_module(3, 0)
1014
+ sage: v = M.basis()
1015
+ sage: v[-3] # indirect doctest
1016
+ d[-3]*v
1017
+ sage: v[-3,-2,-2] # indirect doctest
1018
+ d[-3]*d[-2]*d[-2]*v
1019
+ """
1020
+ if index in ZZ:
1021
+ if index >= 0:
1022
+ raise ValueError("sequence must have nonpositive entries")
1023
+ index = (index,)
1024
+ return super()._monomial(index)
1025
+
1026
+ def central_charge(self):
1027
+ """
1028
+ Return the central charge of ``self``.
1029
+
1030
+ EXAMPLES::
1031
+
1032
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
1033
+ sage: M = L.verma_module(3, 0)
1034
+ sage: M.central_charge()
1035
+ 3
1036
+ """
1037
+ return self._c
1038
+
1039
+ def conformal_weight(self):
1040
+ """
1041
+ Return the conformal weight of ``self``.
1042
+
1043
+ EXAMPLES::
1044
+
1045
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
1046
+ sage: M = L.verma_module(3, 0)
1047
+ sage: M.conformal_weight()
1048
+ 3
1049
+ """
1050
+ return self._c
1051
+
1052
+ def virasoro_algebra(self):
1053
+ """
1054
+ Return the Virasoro algebra ``self`` is a representation of.
1055
+
1056
+ EXAMPLES::
1057
+
1058
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
1059
+ sage: M = L.verma_module(1/2, 3/4)
1060
+ sage: M.virasoro_algebra() is L
1061
+ True
1062
+ """
1063
+ return self._V
1064
+
1065
+ @cached_method
1066
+ def highest_weight_vector(self):
1067
+ """
1068
+ Return the highest weight vector of ``self``.
1069
+
1070
+ EXAMPLES::
1071
+
1072
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
1073
+ sage: M = L.verma_module(-2/7, 3)
1074
+ sage: M.highest_weight_vector()
1075
+ v
1076
+ """
1077
+ return self.monomial(())
1078
+
1079
+ def _d_action_on_basis(self, n, k):
1080
+ """
1081
+ Return the action of `d_n` on `v_k`.
1082
+
1083
+ EXAMPLES::
1084
+
1085
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
1086
+ sage: M = L.verma_module(-2/7, 3)
1087
+ sage: M._d_action_on_basis(-3, ())
1088
+ d[-3]*v
1089
+ sage: M._d_action_on_basis(0, ())
1090
+ 3*v
1091
+ sage: M._d_action_on_basis('c', ())
1092
+ -2/7*v
1093
+ sage: M._d_action_on_basis('c', (-4,-2,-2,-1))
1094
+ -2/7*d[-4]*d[-2]*d[-2]*d[-1]*v
1095
+ sage: M._d_action_on_basis(3, (-4,-2,-2,-1))
1096
+ 7*d[-5]*d[-1]*v + 60*d[-4]*d[-2]*v + 15*d[-4]*d[-1]*d[-1]*v
1097
+ + 14*d[-3]*d[-2]*d[-1]*v + 7*d[-2]*d[-2]*d[-1]*d[-1]*v
1098
+ sage: M._d_action_on_basis(-1, (-4,-2,-2,-1))
1099
+ d[-9]*d[-1]*v + d[-5]*d[-4]*d[-1]*v + 3*d[-5]*d[-2]*d[-2]*d[-1]*v
1100
+ + 2*d[-4]*d[-3]*d[-2]*d[-1]*v + d[-4]*d[-2]*d[-2]*d[-1]*d[-1]*v
1101
+ """
1102
+ # c acts my multiplication by self._c on all elements
1103
+ if n == 'c':
1104
+ return self.term(k, self._c)
1105
+
1106
+ # when k corresponds to the highest weight vector
1107
+ if not k:
1108
+ if n > 0:
1109
+ return self.zero()
1110
+ if n == 0:
1111
+ return self.term(k, self._h)
1112
+ return self.monomial((n,))
1113
+
1114
+ # The basis are eigenvectors for d_0
1115
+ if n == 0:
1116
+ return self.term(k, self._h - sum(k))
1117
+
1118
+ # We keep things in order
1119
+ if n <= k[0]:
1120
+ return self.monomial((n,) + k)
1121
+
1122
+ # [L_n, L_m] v = L_n L_m v - L_m L_n v
1123
+ # L_n L_m v = L_m L_n v + [L_n, L_m] v
1124
+ d = self._V.basis()
1125
+ m = k[0]
1126
+ k = k[1:]
1127
+ # We need to explicitly call the action as this method is
1128
+ # used in discovering the action
1129
+ return (self._d_action_on_basis(n, k)._acted_upon_(d[m], False)
1130
+ + self.monomial(k)._acted_upon_(d[n].bracket(d[m]), False))
1131
+
1132
+ def degree_on_basis(self, d):
1133
+ r"""
1134
+ Return the degree of the basis element indexed by ``d``, which
1135
+ is the sum of the entries of ``d``.
1136
+
1137
+ EXAMPLES::
1138
+
1139
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
1140
+ sage: M = L.verma_module(-2/7, 3)
1141
+ sage: M.degree_on_basis((-3,-3,-1))
1142
+ -7
1143
+ """
1144
+ return sum(d)
1145
+
1146
+ class Element(CombinatorialFreeModule.Element):
1147
+ def _acted_upon_(self, scalar, self_on_left=False):
1148
+ """
1149
+ Return the action of ``scalar`` on ``self``.
1150
+
1151
+ EXAMPLES::
1152
+
1153
+ sage: L = lie_algebras.VirasoroAlgebra(QQ)
1154
+ sage: d = L.basis()
1155
+ sage: M = L.verma_module(1/2, 3/4)
1156
+ sage: x = d[-5] * M.an_element() + M.basis()[-10]; x
1157
+ d[-10]*v + 2*d[-5]*v + 3*d[-5]*d[-2]*v + 2*d[-5]*d[-1]*v
1158
+ sage: d[2] * x
1159
+ 12*d[-8]*v + 39/4*d[-5]*v + 14*d[-3]*v + 21*d[-3]*d[-2]*v
1160
+ + 14*d[-3]*d[-1]*v
1161
+ sage: v = M.highest_weight_vector()
1162
+ sage: d[2] * (d[-2] * v)
1163
+ 13/4*v
1164
+
1165
+ sage: it = iter(M.basis())
1166
+ sage: B = [next(it) for _ in range(10)]
1167
+ sage: all(d[i]*(d[j]*v) - d[j]*(d[i]*v) == d[i].bracket(d[j])*v
1168
+ ....: for i in range(-5, 5) for j in range(-5, 5) for v in B)
1169
+ True
1170
+ """
1171
+ P = self.parent()
1172
+ # We implement only a left action
1173
+ if not self_on_left:
1174
+ S = scalar.parent()
1175
+ R = P.base_ring()
1176
+ if S is R or scalar in R:
1177
+ scalar = R(scalar)
1178
+ return P._from_dict({k: scalar*c for k,c in self._monomial_coefficients.items()})
1179
+ elif S is P._V or scalar in P._V:
1180
+ scalar = P._V(scalar)
1181
+ return P.linear_combination((P._d_action_on_basis(n, k), cv * cm)
1182
+ for n,cv in scalar.monomial_coefficients(copy=False).items()
1183
+ for k,cm in self._monomial_coefficients.items())
1184
+ return CombinatorialFreeModule.Element._acted_upon_(self, scalar, self_on_left)
1185
+
1186
+ _rmul_ = _lmul_ = _acted_upon_