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,967 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ # sage.doctest: needs sage.combinat sage.graphs
3
+ r"""
4
+ Subalgebras and ideals of Lie algebras
5
+
6
+ AUTHORS:
7
+
8
+ - Eero Hakavuori (2018-08-29): initial version
9
+ - Travis Scrimshaw (2025-05-21): make all Lie subalgebras use elements
10
+ in the ambient Lie algebra
11
+ """
12
+ # ****************************************************************************
13
+ # Copyright (C) 2018 Eero Hakavuori <eero.hakavuori@gmail.com>
14
+ # 2025 Travis Scrimshaw <tcscrims at gmail.com>
15
+ #
16
+ # This program is free software: you can redistribute it and/or modify
17
+ # it under the terms of the GNU General Public License as published by
18
+ # the Free Software Foundation, either version 2 of the License, or
19
+ # (at your option) any later version.
20
+ # https://www.gnu.org/licenses/
21
+ # ****************************************************************************
22
+ from sage.algebras.lie_algebras.lie_algebra_element import LieSubalgebraElementWrapper
23
+ from sage.categories.lie_algebras import LieAlgebras
24
+ from sage.categories.homset import Hom
25
+ from sage.categories.morphism import SetMorphism
26
+ from sage.matrix.constructor import matrix
27
+ from sage.misc.cachefunc import cached_method
28
+ from sage.misc.lazy_attribute import lazy_attribute
29
+ from sage.sets.family import Family
30
+ from sage.sets.finite_enumerated_set import FiniteEnumeratedSet
31
+ from sage.structure.parent import Parent
32
+ from sage.structure.element import parent, Element
33
+ from sage.structure.unique_representation import UniqueRepresentation
34
+
35
+
36
+ class LieSubalgebra_finite_dimensional_with_basis(Parent, UniqueRepresentation):
37
+ r"""
38
+ A Lie subalgebra of a finite dimensional Lie algebra with basis.
39
+
40
+ INPUT:
41
+
42
+ - ``ambient`` -- the Lie algebra containing the subalgebra
43
+ - ``gens`` -- list of generators of the subalgebra
44
+ - ``ideal`` -- boolean (default: ``False``); if ``True``, then ``gens``
45
+ is interpreted as the generating set of an ideal instead of a subalgebra
46
+ - ``order`` -- (optional) the key used to sort the indices of ``ambient``
47
+ - ``category`` -- (optional) a subcategory of subobjects of finite
48
+ dimensional Lie algebras with basis
49
+
50
+ EXAMPLES:
51
+
52
+ Subalgebras and ideals are defined by giving a list of generators::
53
+
54
+ sage: L = lie_algebras.Heisenberg(QQ, 1)
55
+ sage: X, Y, Z = L.basis()
56
+ sage: S = L.subalgebra([X, Z]); S
57
+ Subalgebra generated by (p1, z) of Heisenberg algebra of rank 1 over Rational Field
58
+ sage: I = L.ideal([X, Z]); I
59
+ Ideal (p1, z) of Heisenberg algebra of rank 1 over Rational Field
60
+
61
+ An ideal is in general larger than the subalgebra with the same generators::
62
+
63
+ sage: S = L.subalgebra(Y)
64
+ sage: S.basis()
65
+ Finite family {'q1': q1}
66
+ sage: I = L.ideal(Y)
67
+ sage: I.basis()
68
+ Finite family {'q1': q1, 'z': z}
69
+
70
+ The zero dimensional subalgebra can be created by giving 0 as a generator
71
+ or with an empty list of generators::
72
+
73
+ sage: L.<X,Y,Z> = LieAlgebra(QQ, {('X','Y'): {'Z': 1}})
74
+ sage: S1 = L.subalgebra(0)
75
+ sage: S2 = L.subalgebra([])
76
+ sage: S1 is S2
77
+ True
78
+ sage: S1.basis()
79
+ Finite family {}
80
+
81
+ Elements of the ambient Lie algebra can be reduced modulo an
82
+ ideal or subalgebra::
83
+
84
+ sage: # needs sage.symbolic
85
+ sage: L.<X,Y,Z> = LieAlgebra(SR, {('X','Y'): {'Z': 1}})
86
+ sage: I = L.ideal(Y)
87
+ sage: I.reduce(X + 2*Y + 3*Z)
88
+ X
89
+ sage: S = L.subalgebra(Y)
90
+ sage: S.reduce(X + 2*Y + 3*Z)
91
+ X + 3*Z
92
+
93
+ The reduction gives elements in a fixed complementary subspace.
94
+ When the base ring is a field, the complementary subspace is spanned by
95
+ those basis elements which are not leading supports of the basis::
96
+
97
+ sage: # needs sage.symbolic
98
+ sage: I = L.ideal(X + Y)
99
+ sage: I.basis()
100
+ Finite family {'Y': X + Y, 'Z': Z}
101
+ sage: el = var('x')*X + var('y')*Y + var('z')*Z; el
102
+ x*X + y*Y + z*Z
103
+ sage: I.reduce(el)
104
+ (x-y)*X
105
+
106
+ Giving a different ``order`` may change the reduction of elements::
107
+
108
+ sage: I = L.ideal(X + Y, order=lambda s: ['Z','Y','X'].index(s)) # needs sage.symbolic
109
+ sage: I.basis() # needs sage.symbolic
110
+ Finite family {'Z': Z, 'X': X + Y}
111
+ sage: I.reduce(el) # needs sage.symbolic
112
+ (-x+y)*Y
113
+
114
+ A subalgebra of a subalgebra is a subalgebra of the original::
115
+
116
+ sage: sc = {('X','Y'): {'Z': 1}, ('X','Z'): {'W': 1}}
117
+ sage: L.<X,Y,Z,W> = LieAlgebra(QQ, sc)
118
+ sage: S1 = L.subalgebra([Y, Z, W]); S1
119
+ Subalgebra generated by (Y, Z, W) of Lie algebra on 4 generators (X, Y, Z, W) over Rational Field
120
+ sage: S2 = S1.subalgebra(S1.gens()[1:]); S2
121
+ Subalgebra generated by (Z, W) of Lie algebra on 4 generators (X, Y, Z, W) over Rational Field
122
+ sage: S3 = S2.subalgebra(S2.gens()[1:]); S3
123
+ Subalgebra generated by (W) of Lie algebra on 4 generators (X, Y, Z, W) over Rational Field
124
+
125
+ An ideal of an ideal is not necessarily an ideal of the original::
126
+
127
+ sage: I = L.ideal(Y); I
128
+ Ideal (Y) of Lie algebra on 4 generators (X, Y, Z, W) over Rational Field
129
+ sage: J = I.ideal(Z); J
130
+ Ideal (Z) of Ideal (Y) of Lie algebra on 4 generators (X, Y, Z, W) over Rational Field
131
+ sage: J.basis()
132
+ Finite family {'Z': Z}
133
+ sage: J.is_ideal(L)
134
+ False
135
+ sage: K = L.ideal(J.basis().list())
136
+ sage: K.basis()
137
+ Finite family {'Z': Z, 'W': W}
138
+
139
+ TESTS:
140
+
141
+ Test suites::
142
+
143
+ sage: sc = {('X','Y'): {'Z': 1}, ('X','Z'): {'W': 1}}
144
+ sage: L.<X,Y,Z,W> = LieAlgebra(QQ, sc)
145
+ sage: S = L.subalgebra(X + Y)
146
+ sage: TestSuite(S).run()
147
+ sage: I = L.ideal(X + Y)
148
+ sage: TestSuite(I).run()
149
+
150
+ Verify that subalgebras and ideals of nilpotent Lie algebras are nilpotent::
151
+
152
+ sage: L = LieAlgebra(QQ, 3, step=4)
153
+ sage: x,y,z = L.homogeneous_component_basis(1)
154
+ sage: S = L.subalgebra([x, y])
155
+ sage: S in LieAlgebras(QQ).Nilpotent()
156
+ True
157
+ sage: S.step()
158
+ 4
159
+ sage: I = L.ideal(z)
160
+ sage: I in LieAlgebras(QQ).Nilpotent()
161
+ True
162
+ sage: I.step()
163
+ 3
164
+
165
+ Test computation for a nested ideal::
166
+
167
+ sage: sc = {('X','Y'): {'Z': 1}, ('X','Z'): {'W': 1}}
168
+ sage: L.<X,Y,Z,W> = LieAlgebra(QQ, sc)
169
+ sage: I = L.ideal(Y)
170
+ sage: J = I.ideal(Z)
171
+ sage: J.reduce(I(Z) + I(W))
172
+ W
173
+ """
174
+ @staticmethod
175
+ def __classcall_private__(cls, ambient, gens, ideal_of=None,
176
+ order=None, category=None):
177
+ """
178
+ Normalize input to ensure a unique representation.
179
+
180
+ EXAMPLES:
181
+
182
+ Various ways to input one generator::
183
+
184
+ sage: L.<X,Y> = LieAlgebra(QQ, {('X','Y'): {'X': 1}})
185
+ sage: S1 = L.subalgebra(X)
186
+ sage: S2 = L.subalgebra((X,))
187
+ sage: S3 = L.subalgebra([X])
188
+ sage: S1 is S2 and S2 is S3
189
+ True
190
+
191
+ Zero generators are ignored::
192
+
193
+ sage: S1 = L.subalgebra(X)
194
+ sage: S2 = L.subalgebra((X, 0))
195
+ sage: S3 = L.subalgebra([X, 0, 0])
196
+ sage: S1 is S2 and S2 is S3
197
+ True
198
+ sage: T1 = L.subalgebra(0)
199
+ sage: T2 = L.subalgebra([])
200
+ sage: T3 = L.subalgebra([0, 0])
201
+ sage: T1 is T2 and T2 is T3
202
+ True
203
+
204
+ Subalgebras generated by a subalgebra returns the same subalgebra::
205
+
206
+ sage: S1 = L.subalgebra(X)
207
+ sage: S2 = L.subalgebra(S1)
208
+ sage: S1 is S2
209
+ True
210
+
211
+ We can have subalgebras generated by subalgebras::
212
+
213
+ sage: scoeffs = {('a','d'): {'a':1}, ('a','e'): {'b':-1},
214
+ ....: ('b','d'): {'b':1}, ('b','e'): {'a':1},
215
+ ....: ('d','e'): {'c':1}}
216
+ sage: L.<a,b,c,d,e> = LieAlgebra(QQ, scoeffs)
217
+ sage: S1 = L.subalgebra(a)
218
+ sage: S2 = L.subalgebra([b, e])
219
+ sage: S = L.subalgebra([S1, S2])
220
+ sage: S
221
+ Subalgebra generated by (a, a, b, e) of Lie algebra on
222
+ 5 generators (a, b, c, d, e) over Rational Field
223
+ sage: S.basis()
224
+ Finite family {'a': a, 'b': b, 'e': e}
225
+
226
+ Check that other container-like objects are handled properly
227
+ (:issue:`40137`)::
228
+
229
+ sage: L.<a,b,c,d> = LieAlgebra(QQ, {('a','b'): {'c': 1, 'd':1}})
230
+ sage: A = L.ideal([b, c, d])
231
+ sage: B = L.ideal([b, c+d])
232
+ sage: A.ideal(B)
233
+ Ideal (b, c + d) of Ideal (b, c, d) of Lie algebra on 4 generators
234
+ (a, b, c, d) over Rational Field
235
+ sage: A.ideal(B.basis())
236
+ Ideal (b, c + d) of Ideal (b, c, d) of Lie algebra on 4 generators
237
+ (a, b, c, d) over Rational Field
238
+ """
239
+ if isinstance(ambient, LieSubalgebra_finite_dimensional_with_basis):
240
+ ambient = ambient._ambient
241
+ if isinstance(gens, LieSubalgebra_finite_dimensional_with_basis):
242
+ if gens._ideal_of is ideal_of:
243
+ return gens
244
+ gens = gens.lie_algebra_generators()
245
+ if isinstance(gens, Element):
246
+ gens = [gens]
247
+ new_gens = []
248
+
249
+ # make sure all elements belong to the ambient Lie algebra
250
+ for gen in gens:
251
+ if isinstance(gen, LieSubalgebra_finite_dimensional_with_basis):
252
+ new_gens.extend(ambient(b) for b in gen.basis())
253
+ elif not gen.is_zero():
254
+ new_gens.append(ambient(gen))
255
+ gens = tuple(new_gens)
256
+
257
+ cat = LieAlgebras(ambient.base_ring()).FiniteDimensional().WithBasis()
258
+ category = cat.Subobjects().or_subcategory(category)
259
+ if ambient in LieAlgebras(ambient.base_ring()).Nilpotent():
260
+ category = category.Nilpotent()
261
+
262
+ return super().__classcall__(cls, ambient, gens, ideal_of,
263
+ order, category)
264
+
265
+ def __init__(self, ambient, gens, ideal_of, order=None, category=None):
266
+ r"""
267
+ Initialize ``self``.
268
+
269
+ TESTS::
270
+
271
+ sage: L.<X,Y,Z> = LieAlgebra(QQ, {('X','Y'): {'Z': 1}})
272
+ sage: S = L.subalgebra(X)
273
+ sage: TestSuite(S).run()
274
+ sage: I = L.ideal(X)
275
+ sage: TestSuite(I).run()
276
+
277
+ Check that :issue:`34006` is fixed::
278
+
279
+ sage: S.gens()[0].parent() is S
280
+ True
281
+ """
282
+ self._ambient = ambient
283
+ self._ideal_of = ideal_of
284
+
285
+ # initialize helper variables for ordering
286
+ if order is None:
287
+ if hasattr(ambient, "_basis_key"):
288
+ order = ambient._basis_key
289
+ else:
290
+ order = lambda x: x
291
+ self._order = order
292
+ self._reversed_indices = sorted(ambient.indices(), key=order,
293
+ reverse=True)
294
+ # helper to reorder a vector that has been jumbled by the above
295
+ self._reorganized_indices = [self._reversed_indices.index(i)
296
+ for i in ambient.indices()]
297
+
298
+ super().__init__(ambient.base_ring(), category=category)
299
+
300
+ self._gens = tuple([self.element_class(self, g) for g in gens])
301
+
302
+ # register a coercion to the ambient Lie algebra
303
+ H = Hom(self, ambient)
304
+ f = SetMorphism(H, self.lift)
305
+ ambient.register_coercion(f)
306
+
307
+ def __contains__(self, x):
308
+ r"""
309
+ Return ``True`` if ``x`` is an element of ``self``.
310
+
311
+ EXAMPLES:
312
+
313
+ Elements of the ambient Lie algebra are contained in the subalgebra
314
+ if they are iterated brackets of the generators::
315
+
316
+ sage: sc = {('x','y'): {'z': 1}, ('x','z'): {'w': 1}}
317
+ sage: L.<x,y,z,w,u> = LieAlgebra(QQ, sc)
318
+ sage: S = L.subalgebra([x, y])
319
+ sage: z in S
320
+ True
321
+ sage: w in S
322
+ True
323
+ sage: u in S
324
+ False
325
+
326
+ TESTS::
327
+
328
+ sage: L.<x,y,z> = LieAlgebra(QQ, {('x','y'): {'z': 1}})
329
+ sage: I = L.subalgebra(x)
330
+ sage: I(x) in I
331
+ True
332
+ """
333
+ if x in self._ambient:
334
+ x = self._ambient(x)
335
+ return x.to_vector() in self.module()
336
+ return super().__contains__(x)
337
+
338
+ def __getitem__(self, x):
339
+ r"""
340
+ If `x` is a pair `(a, b)`, return the Lie bracket `[a, b]`.
341
+ Otherwise try to return the `x`-th element of ``self``.
342
+
343
+ This replicates the convenience syntax for Lie brackets of Lie algebras.
344
+
345
+ EXAMPLES::
346
+
347
+ sage: L.<x,y, z> = LieAlgebra(QQ, {('x','y'): {'z': 1}})
348
+ sage: S = L.subalgebra([x, y])
349
+ sage: a = S(x); b = S(y)
350
+ sage: S[a, b]
351
+ z
352
+ sage: S[a, a + S[a,b]]
353
+ 0
354
+ """
355
+ if isinstance(x, tuple) and len(x) == 2:
356
+ return self(x[0])._bracket_(self(x[1]))
357
+ return super().__getitem__(x)
358
+
359
+ def _repr_(self):
360
+ r"""
361
+ Return a string representation of ``self``.
362
+
363
+ EXAMPLES::
364
+
365
+ sage: L.<X,Y> = LieAlgebra(QQ, abelian=True)
366
+ sage: L.subalgebra([X, Y])
367
+ Subalgebra generated by (X, Y) of Abelian Lie algebra on 2 generators (X, Y) over Rational Field
368
+ sage: L.ideal([X, Y])
369
+ Ideal (X, Y) of Abelian Lie algebra on 2 generators (X, Y) over Rational Field
370
+ """
371
+ if self._ideal_of is not None:
372
+ return "Ideal {} of {}".format(self._repr_short(), self._ideal_of)
373
+
374
+ return "Subalgebra generated by {} of {}".format(self._repr_short(), self.ambient())
375
+
376
+ def _repr_short(self):
377
+ """
378
+ Represent the list of generators.
379
+
380
+ EXAMPLES::
381
+
382
+ sage: L.<X,Y> = LieAlgebra(QQ, abelian=True)
383
+ sage: L.ideal([X, Y])._repr_short()
384
+ '(X, Y)'
385
+ sage: L.ideal(X)._repr_short()
386
+ '(X)'
387
+ sage: L.subalgebra(X)._repr_short()
388
+ '(X)'
389
+ """
390
+ return '(%s)' % (', '.join(str(X) for X in self.gens()))
391
+
392
+ def _an_element_(self):
393
+ r"""
394
+ Return an element of ``self``.
395
+
396
+ EXAMPLES::
397
+
398
+ sage: L.<X,Y> = LieAlgebra(QQ, abelian=True)
399
+ sage: S = L.subalgebra([X, Y])
400
+ sage: S._an_element_()
401
+ X
402
+ """
403
+ return next(iter(self.lie_algebra_generators()))
404
+
405
+ def _element_constructor_(self, x):
406
+ """
407
+ Convert ``x`` into ``self``.
408
+
409
+ EXAMPLES:
410
+
411
+ Elements of subalgebras are created directly from elements
412
+ of the ambient Lie algebra::
413
+
414
+ sage: L.<x,y,z,w> = LieAlgebra(ZZ, {('x','y'): {'z': 1}})
415
+ sage: S = L.subalgebra([x, y])
416
+ sage: S(y)
417
+ y
418
+ sage: S(y).parent()
419
+ Subalgebra generated by (x, y) of Lie algebra on 4 generators (x, y, z, w) over Integer Ring
420
+
421
+ A vector contained in the module corresponding to the subalgebra is
422
+ interpreted as a coordinate vector::
423
+
424
+ sage: S.module()
425
+ Free module of degree 4 and rank 3 over Integer Ring
426
+ User basis matrix:
427
+ [1 0 0 0]
428
+ [0 1 0 0]
429
+ [0 0 1 0]
430
+ sage: S(vector(ZZ, [2, 3, 5, 0]))
431
+ 2*x + 3*y + 5*z
432
+
433
+ A list of 2 elements is interpreted as a Lie bracket::
434
+
435
+ sage: S([S(x), S(y)])
436
+ z
437
+ sage: S([S(x), S(y)]) == S(L[x, y])
438
+ True
439
+ """
440
+ P = parent(x)
441
+ if P is self:
442
+ return x
443
+ if P == self._ambient:
444
+ return self.retract(x)
445
+ if isinstance(P, type(self)) and P._ambient == self._ambient:
446
+ return self.retract(x.value)
447
+
448
+ if x in self.module():
449
+ return self.from_vector(x)
450
+
451
+ if isinstance(x, list) and len(x) == 2:
452
+ return self(x[0])._bracket_(self(x[1]))
453
+
454
+ return super()._element_constructor_(x)
455
+
456
+ def _to_m(self, X):
457
+ r"""
458
+ Return the vector of an element of the ambient Lie algebra with indices
459
+ reorganized in decreasing order according to ``self._order``.
460
+
461
+ This is used internally for submodule computations, so that the pivot
462
+ elements in the echelon form are given by
463
+ :meth:`~sage.categories.modules_with_basis.ModulesWithBasis.ElementMethods.leading_term`
464
+ using the sort key ``self._order``.
465
+
466
+ INPUT:
467
+
468
+ - ``X`` -- an element of the ambient Lie algebra
469
+
470
+ EXAMPLES:
471
+
472
+ If the basis is in increasing order, it is reversed::
473
+
474
+ sage: L.<x,y,z> = LieAlgebra(QQ, {('x','y'): {'z': 1}})
475
+ sage: I = L.ideal([x, z])
476
+ sage: el = x + 2*y + 3*z
477
+ sage: el.to_vector()
478
+ (1, 2, 3)
479
+ sage: I._to_m(el)
480
+ (3, 2, 1)
481
+
482
+ This follows the reverse order of the ambient basis order::
483
+
484
+ sage: L.<x,z,y> = LieAlgebra(QQ, {('x','y'): {'z': 1}})
485
+ sage: I = L.ideal([x, z])
486
+ sage: el = x + 2*y + 3*z
487
+ sage: el.to_vector()
488
+ (1, 3, 2)
489
+ sage: I._to_m(el)
490
+ (2, 3, 1)
491
+ """
492
+ mc = X.monomial_coefficients()
493
+ M = self._ambient.module()
494
+ R = M.base_ring()
495
+ B = M.basis()
496
+ return M.sum(R(mc[self._reversed_indices[i]]) * B[i]
497
+ for i in range(len(B)) if self._reversed_indices[i] in mc)
498
+
499
+ def _from_m(self, v):
500
+ r"""
501
+ Return the element of the ambient Lie algebra from a reorganized vector.
502
+
503
+ This is used internally for submodule computations, so that the pivot
504
+ elements in the echelon form are given by
505
+ :meth:`~sage.categories.modules_with_basis.ModulesWithBasis.ElementMethods.leading_term`
506
+ using the sort key `self._order`.
507
+
508
+ INPUT:
509
+
510
+ - ``v`` -- a vector
511
+
512
+ EXAMPLES:
513
+
514
+ Unscrambling of a vector when the basis is in increasing order::
515
+
516
+ sage: L.<x,y,z> = LieAlgebra(QQ, {('x','y'): {'z': 1}})
517
+ sage: I = L.ideal([x, z])
518
+ sage: I._from_m([3, 2, 1])
519
+ x + 2*y + 3*z
520
+
521
+ The map is the inverse of :meth:`_to_m`::
522
+
523
+ sage: L.<c,a,e,f,b,d> = LieAlgebra(QQ, abelian=True)
524
+ sage: S = L.subalgebra(L.basis().list())
525
+ sage: v = S._to_m(c + 2*a + 3*e + 4*f + 5*b + 6*d); v
526
+ (6, 5, 4, 3, 2, 1)
527
+ sage: S._from_m(v)
528
+ c + 2*a + 3*e + 4*f + 5*b + 6*d
529
+ sage: all(S._from_m(S._to_m(X)) == X for X in L.some_elements())
530
+ True
531
+ """
532
+ L = self.ambient()
533
+ M = L.module()
534
+ R = M.base_ring()
535
+ v_self = M.coordinate_vector(v)
536
+ B = M.basis()
537
+ v_sorted = M.sum(R(v_self[self._reorganized_indices[i]]) * B[i]
538
+ for i in range(len(B)))
539
+ return L.from_vector(v_sorted)
540
+
541
+ @lazy_attribute
542
+ def _indices(self):
543
+ r"""
544
+ Return the set of indices for the basis of ``self``.
545
+
546
+ EXAMPLES::
547
+
548
+ sage: L.<x,y,z> = LieAlgebra(QQ, abelian=True)
549
+ sage: S = L.subalgebra([x, y])
550
+ sage: S._indices
551
+ {'x', 'y'}
552
+ sage: [S.basis()[k] for k in S._indices]
553
+ [x, y]
554
+ """
555
+ return FiniteEnumeratedSet(self.basis().keys())
556
+
557
+ def indices(self):
558
+ r"""
559
+ Return the set of indices for the basis of ``self``.
560
+
561
+ EXAMPLES::
562
+
563
+ sage: L.<x,y,z> = LieAlgebra(QQ, abelian=True)
564
+ sage: S = L.subalgebra([x+y, z])
565
+ sage: S.indices()
566
+ {'y', 'z'}
567
+ sage: [S.basis()[k] for k in S.indices()]
568
+ [x + y, z]
569
+ """
570
+ return self._indices
571
+
572
+ @cached_method
573
+ def zero(self):
574
+ r"""
575
+ Return the element `0`.
576
+
577
+ EXAMPLES::
578
+
579
+ sage: L.<x,y> = LieAlgebra(QQ, abelian=True)
580
+ sage: S = L.subalgebra(x)
581
+ sage: S.zero()
582
+ 0
583
+ sage: S.zero() == S(L.zero())
584
+ True
585
+ """
586
+ return self.element_class(self, self.ambient().zero())
587
+
588
+ def ambient(self):
589
+ r"""
590
+ Return the ambient Lie algebra of ``self``.
591
+
592
+ EXAMPLES::
593
+
594
+ sage: L.<x,y> = LieAlgebra(QQ, abelian=True)
595
+ sage: S = L.subalgebra(x)
596
+ sage: S.ambient() is L
597
+ True
598
+ """
599
+ return self._ambient
600
+
601
+ def lift(self, X):
602
+ r"""
603
+ Coerce an element ``X`` of ``self`` into the ambient Lie algebra.
604
+
605
+ INPUT:
606
+
607
+ - ``X`` -- an element of ``self``
608
+
609
+ EXAMPLES::
610
+
611
+ sage: L.<x,y> = LieAlgebra(QQ, abelian=True)
612
+ sage: S = L.subalgebra(x)
613
+ sage: sx = S(x); sx
614
+ x
615
+ sage: sx.parent()
616
+ Subalgebra generated by (x) of Abelian Lie algebra on 2 generators (x, y) over Rational Field
617
+ sage: a = S.lift(sx); a
618
+ x
619
+ sage: a.parent()
620
+ Abelian Lie algebra on 2 generators (x, y) over Rational Field
621
+ """
622
+ return X.value
623
+
624
+ def retract(self, X):
625
+ r"""
626
+ Retract ``X`` to ``self``.
627
+
628
+ INPUT:
629
+
630
+ - ``X`` -- an element of the ambient Lie algebra
631
+
632
+ EXAMPLES:
633
+
634
+ Retraction to a subalgebra of a free nilpotent Lie algebra::
635
+
636
+ sage: L = LieAlgebra(QQ, 3, step=2)
637
+ sage: L.inject_variables()
638
+ Defining X_1, X_2, X_3, X_12, X_13, X_23
639
+ sage: S = L.subalgebra([X_1, X_2])
640
+ sage: el = S.retract(2*X_1 + 3*X_2 + 5*X_12); el
641
+ 2*X_1 + 3*X_2 + 5*X_12
642
+ sage: el.parent()
643
+ Subalgebra generated by (X_1, X_2) of Free Nilpotent Lie algebra on
644
+ 6 generators (X_1, X_2, X_3, X_12, X_13, X_23) over Rational Field
645
+
646
+ Retraction raises an error if the element is not contained in the
647
+ subalgebra::
648
+
649
+ sage: S.retract(X_3)
650
+ Traceback (most recent call last):
651
+ ...
652
+ ValueError: the element X_3 is not in Subalgebra generated
653
+ by (X_1, X_2) of Free Nilpotent Lie algebra on 6 generators
654
+ (X_1, X_2, X_3, X_12, X_13, X_23) over Rational Field
655
+ """
656
+ X = self._ambient(X)
657
+ if X not in self:
658
+ raise ValueError("the element %s is not in %s" % (X, self))
659
+
660
+ return self.element_class(self, X)
661
+
662
+ def gens(self) -> tuple:
663
+ r"""
664
+ Return the generating set of ``self``.
665
+
666
+ EXAMPLES::
667
+
668
+ sage: L.<x,y,z> = LieAlgebra(QQ, {('x','y'): {'z': 1}})
669
+ sage: S = L.subalgebra(x)
670
+ sage: S.gens()
671
+ (x,)
672
+ """
673
+ return self._gens
674
+
675
+ def lie_algebra_generators(self):
676
+ r"""
677
+ Return the generating set of ``self`` as a Lie algebra.
678
+
679
+ EXAMPLES:
680
+
681
+ The Lie algebra generators of a subalgebra are the original generators::
682
+
683
+ sage: L.<x,y,z> = LieAlgebra(QQ, {('x','y'): {'z': 1}})
684
+ sage: S = L.subalgebra(x)
685
+ sage: S.lie_algebra_generators()
686
+ (x,)
687
+
688
+ The Lie algebra generators of an ideal is usually a larger set::
689
+
690
+ sage: I = L.ideal(x)
691
+ sage: I.lie_algebra_generators()
692
+ Finite family {'x': x, 'z': z}
693
+ """
694
+ if self._ideal_of is not None:
695
+ return self.basis()
696
+ return self._gens
697
+
698
+ @cached_method
699
+ def basis(self):
700
+ r"""
701
+ Return a basis of ``self``.
702
+
703
+ EXAMPLES:
704
+
705
+ A basis of a subalgebra::
706
+
707
+ sage: sc = {('a','b'): {'c': 1}, ('a','c'): {'d': 1}}
708
+ sage: L.<a,b,c,d> = LieAlgebra(QQ, sc)
709
+ sage: L.subalgebra([a + b, c + d]).basis()
710
+ Finite family {'b': a + b, 'c': c, 'd': d}
711
+
712
+ A basis of an ideal::
713
+
714
+ sage: sc = {('x','y'): {'z': 1}, ('x','z'): {'w': 1}}
715
+ sage: L.<x,y,z,w> = LieAlgebra(QQ, sc)
716
+ sage: L.ideal([x + y + z + w]).basis()
717
+ Finite family {'y': x + y, 'z': z, 'w': w}
718
+
719
+ This also works for Lie algebras whose natural basis elements
720
+ are not comparable (but have a well-defined basis ordering)::
721
+
722
+ sage: sl3 = LieAlgebra(QQ, cartan_type=['A',2])
723
+ sage: D = sl3.derived_subalgebra()
724
+ sage: len(D.basis())
725
+ 8
726
+ sage: e = list(sl3.e())
727
+ sage: sl3.ideal(e).dimension()
728
+ 8
729
+ sage: sl3.subalgebra(e).dimension()
730
+ 3
731
+ """
732
+ ambient = self._ambient
733
+ if self._ideal_of is not None:
734
+ L = self._ideal_of
735
+ B = [self._to_m(ambient(X)) for X in L.basis()]
736
+ else:
737
+ L = ambient
738
+ B = [self._to_m(X) for X in ambient.basis()]
739
+
740
+ m = ambient.module()
741
+ sm = m.submodule([self._to_m(X.value) for X in self.gens()])
742
+ d = 0
743
+
744
+ while sm.dimension() > d:
745
+ d = sm.dimension()
746
+ SB = sm.basis()
747
+ if self._ideal_of is None:
748
+ B = SB
749
+
750
+ brackets = [self._to_m(ambient.bracket(self._from_m(v), self._from_m(w)))
751
+ for v in B for w in SB]
752
+ sm = m.submodule(sm.basis() + brackets)
753
+
754
+ basis = [self.element_class(self, self._from_m(v))
755
+ for v in sm.echelonized_basis()]
756
+
757
+ indices = [self.lift(X).leading_support(key=self._order) for X in basis]
758
+ basis = dict(zip(indices, basis))
759
+ indices.sort(key=self._order)
760
+
761
+ return Family(indices, basis.__getitem__)
762
+
763
+ @cached_method
764
+ def leading_monomials(self):
765
+ r"""
766
+ Return the set of leading monomials of the basis of ``self``.
767
+
768
+ EXAMPLES:
769
+
770
+ A basis of an ideal and the corresponding leading monomials::
771
+
772
+ sage: sc = {('a','b'): {'c': 2}, ('a','c'): {'d': 4}}
773
+ sage: L.<a,b,c,d> = LieAlgebra(ZZ, sc)
774
+ sage: I = L.ideal(a + b)
775
+ sage: I.basis()
776
+ Finite family {'b': a + b, 'c': 2*c, 'd': 4*d}
777
+ sage: I.leading_monomials()
778
+ Family (b, c, d)
779
+
780
+ A different ordering can give different leading monomials::
781
+
782
+ sage: key = lambda s: ['d','c','b','a'].index(s)
783
+ sage: I = L.ideal(a + b, order=key)
784
+ sage: I.basis()
785
+ Finite family {'d': 4*d, 'c': 2*c, 'a': a + b}
786
+ sage: I.leading_monomials()
787
+ Family (d, c, a)
788
+ """
789
+ return Family(self.lift(X).leading_monomial(key=self._order)
790
+ for X in self.basis())
791
+
792
+ def from_vector(self, v, order=None, coerce=False):
793
+ r"""
794
+ Return the element of ``self`` corresponding to the vector ``v``.
795
+
796
+ INPUT:
797
+
798
+ - ``v`` -- a vector in ``self.module()`` or ``self.ambient().module()``
799
+
800
+ EXAMPLES:
801
+
802
+ An element from a vector of the intrinsic module::
803
+
804
+ sage: L.<X,Y,Z> = LieAlgebra(ZZ, abelian=True)
805
+ sage: L.dimension()
806
+ 3
807
+ sage: S = L.subalgebra([X, Y])
808
+ sage: S.dimension()
809
+ 2
810
+ sage: el = S.from_vector([1, 2]); el
811
+ X + 2*Y
812
+ sage: el.parent() == S
813
+ True
814
+
815
+ An element from a vector of the ambient module
816
+
817
+ sage: el = S.from_vector([1, 2, 0]); el
818
+ X + 2*Y
819
+ sage: el.parent() == S
820
+ True
821
+ """
822
+ if len(v) == self._ambient.dimension():
823
+ return self.retract(self._ambient.from_vector(v))
824
+ return super().from_vector(v)
825
+
826
+ def basis_matrix(self):
827
+ r"""
828
+ Return the basis matrix of ``self`` as a submodule
829
+ of the ambient Lie algebra.
830
+
831
+ EXAMPLES::
832
+
833
+ sage: L.<X,Y,Z> = LieAlgebra(ZZ, {('X','Y'): {'Z': 3}})
834
+ sage: S1 = L.subalgebra([4*X + Y, Y])
835
+ sage: S1.basis_matrix()
836
+ [ 4 0 0]
837
+ [ 0 1 0]
838
+ [ 0 0 12]
839
+ sage: K.<X,Y,Z> = LieAlgebra(QQ, {('X','Y'): {'Z': 3}})
840
+ sage: S2 = K.subalgebra([4*X + Y, Y])
841
+ sage: S2.basis_matrix()
842
+ [1 0 0]
843
+ [0 1 0]
844
+ [0 0 1]
845
+ """
846
+ return self.module().basis_matrix()
847
+
848
+ @cached_method
849
+ def module(self, sparse=False):
850
+ r"""
851
+ Return the submodule of the ambient Lie algebra
852
+ corresponding to ``self``.
853
+
854
+ EXAMPLES::
855
+
856
+ sage: L.<X,Y,Z> = LieAlgebra(ZZ, {('X','Y'): {'Z': 3}})
857
+ sage: S = L.subalgebra([X, Y])
858
+ sage: S.module()
859
+ Free module of degree 3 and rank 3 over Integer Ring
860
+ User basis matrix:
861
+ [1 0 0]
862
+ [0 1 0]
863
+ [0 0 3]
864
+ """
865
+ try:
866
+ m = self._ambient.module(sparse=sparse)
867
+ except TypeError:
868
+ m = self._ambient.module()
869
+ ambientbasis = [self.lift(X).to_vector() for X in self.basis()]
870
+ return m.submodule_with_basis(ambientbasis)
871
+
872
+ @cached_method
873
+ def is_ideal(self, A):
874
+ """
875
+ Return if ``self`` is an ideal of ``A``.
876
+
877
+ EXAMPLES:
878
+
879
+ Some subalgebras are ideals::
880
+
881
+ sage: L.<x,y,z> = LieAlgebra(QQ, {('x','y'): {'z': 1}})
882
+ sage: S1 = L.subalgebra([x])
883
+ sage: S1.is_ideal(L)
884
+ False
885
+ sage: S2 = L.subalgebra([x, y])
886
+ sage: S2.is_ideal(L)
887
+ True
888
+ sage: S3 = L.subalgebra([y, z])
889
+ sage: S3.is_ideal(L)
890
+ True
891
+
892
+ All ideals are ideals::
893
+
894
+ sage: L.<x,y> = LieAlgebra(QQ, {('x','y'): {'x': 1}})
895
+ sage: I = L.ideal(x)
896
+ sage: I.is_ideal(L)
897
+ True
898
+ sage: I.is_ideal(I)
899
+ True
900
+
901
+ TESTS::
902
+
903
+ sage: L.<x,y> = LieAlgebra(QQ, {('x','y'): {'x': 1}})
904
+ sage: I = L.ideal(x)
905
+ sage: L.is_ideal(I)
906
+ False
907
+ """
908
+ if A is self._ideal_of:
909
+ return True
910
+ return super().is_ideal(A)
911
+
912
+ class Element(LieSubalgebraElementWrapper):
913
+ def adjoint_matrix(self, sparse=False):
914
+ """
915
+ Return the matrix of the adjoint action of ``self``.
916
+
917
+ EXAMPLES::
918
+
919
+ sage: MS = MatrixSpace(QQ, 2)
920
+ sage: m = MS([[0, -1], [1, 0]])
921
+ sage: L = LieAlgebra(associative=MS)
922
+ sage: S = L.subalgebra([m])
923
+ sage: S.basis()
924
+ Finite family {(1, 0): [ 0 -1]
925
+ [ 1 0]}
926
+ sage: x = S.basis()[1,0]
927
+ sage: x.parent() is S
928
+ True
929
+ sage: x.adjoint_matrix()
930
+ [0]
931
+
932
+ sage: m1 = MS([[0, 1], [0, 0]])
933
+ sage: m2 = MS([[0, 0], [1, 0]])
934
+ sage: S = L.subalgebra([m1, m2])
935
+ sage: e,f = S.lie_algebra_generators()
936
+ sage: ascii_art([b.value.value for b in S.basis()])
937
+ [ [0 1] [0 0] [-1 0] ]
938
+ [ [0 0], [1 0], [ 0 1] ]
939
+ sage: E = e.adjoint_matrix(); E
940
+ [ 0 0 2]
941
+ [ 0 0 0]
942
+ [ 0 -1 0]
943
+ sage: F = f.adjoint_matrix(); F
944
+ [ 0 0 0]
945
+ [ 0 0 -2]
946
+ [ 1 0 0]
947
+ sage: h = e.bracket(f)
948
+ sage: E * F - F * E == h.adjoint_matrix()
949
+ True
950
+
951
+ TESTS:
952
+
953
+ Check that :issue:`34006` is fixed::
954
+
955
+ sage: MS = MatrixSpace(QQ, 2)
956
+ sage: m = MS([[0, -1], [1, 0]])
957
+ sage: L = LieAlgebra(associative=MS)
958
+ sage: S = L.subalgebra([m])
959
+ sage: S.killing_form_matrix()
960
+ [0]
961
+ """
962
+ P = self.parent()
963
+ basis = P.basis()
964
+ M = P.module(sparse=sparse)
965
+ return matrix(self.base_ring(),
966
+ [M.coordinate_vector(P.bracket(self, b).to_vector(sparse=sparse))
967
+ for b in basis], sparse=sparse).transpose()