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,661 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ # sage.doctest: needs sage.combinat sage.graphs
3
+ """
4
+ Homomorphisms of Lie Algebras
5
+
6
+ AUTHORS:
7
+
8
+ - Travis Scrimshaw (07-15-2013): Initial implementation
9
+ - Eero Hakavuori (08-09-2018): Morphisms defined by a generating subset
10
+ """
11
+ # ****************************************************************************
12
+ # Copyright (C) 2013 Travis Scrimshaw <tscrim at ucdavis.edu>
13
+ # 2018 Eero Hakavuori <eero.hakavuori at gmail.com>
14
+ #
15
+ # Distributed under the terms of the GNU General Public License (GPL)
16
+ # https://www.gnu.org/licenses/
17
+ # *****************************************************************************
18
+
19
+ from sage.misc.cachefunc import cached_method
20
+ from sage.categories.morphism import Morphism
21
+ from sage.categories.morphism import SetMorphism
22
+ from sage.categories.homset import Homset, Hom
23
+ from sage.structure.sequence import Sequence, Sequence_generic
24
+ from sage.structure.element import get_coercion_model
25
+ from sage.structure.richcmp import richcmp
26
+ from sage.matrix.constructor import matrix
27
+ from itertools import combinations
28
+
29
+ # TODO: Refactor out common functionality with RingHomomorphism_im_gens
30
+
31
+
32
+ class LieAlgebraHomomorphism_im_gens(Morphism):
33
+ r"""
34
+ A homomorphism of Lie algebras.
35
+
36
+ Let `\mathfrak{g}` and `\mathfrak{g}^{\prime}` be Lie algebras.
37
+ A linear map `f \colon \mathfrak{g} \to \mathfrak{g}^{\prime}` is a
38
+ homomorphism (of Lie algebras) if `f([x, y]) = [f(x), f(y)]` for all
39
+ `x, y \in \mathfrak{g}`. Thus homomorphisms are completely determined
40
+ by the image of the generators of `\mathfrak{g}`.
41
+
42
+ INPUT:
43
+
44
+ - ``parent`` -- a homset between two Lie algebras
45
+ - ``im_gens`` -- the image of the generators of the domain
46
+ - ``base_map`` -- a homomorphism to apply to the coefficients.
47
+ It should be a map from the base ring of the domain to the
48
+ base ring of the codomain.
49
+ Note that if base_map is nontrivial then the result will
50
+ not be a morphism in the category of Lie algebras over
51
+ the base ring.
52
+ - ``check`` -- whether to run checks on the validity of the defining data
53
+
54
+ EXAMPLES::
55
+
56
+ sage: L = LieAlgebra(QQ, 'x,y,z')
57
+ sage: Lyn = L.Lyndon()
58
+ sage: H = L.Hall()
59
+ doctest:warning...:
60
+ FutureWarning: The Hall basis has not been fully proven correct, but currently no bugs are known
61
+ See https://github.com/sagemath/sage/issues/16823 for details.
62
+ sage: phi = Lyn.coerce_map_from(H); phi
63
+ Lie algebra morphism:
64
+ From: Free Lie algebra generated by (x, y, z) over Rational Field in the Hall basis
65
+ To: Free Lie algebra generated by (x, y, z) over Rational Field in the Lyndon basis
66
+ Defn: x |--> x
67
+ y |--> y
68
+ z |--> z
69
+
70
+ You can provide a base map, creating a semilinear map that (sometimes)
71
+ preserves the Lie bracket::
72
+
73
+ sage: R.<x> = ZZ[]
74
+ sage: K.<i> = NumberField(x^2 + 1)
75
+ sage: cc = K.hom([-i])
76
+ sage: L.<X,Y,Z,W> = LieAlgebra(K, {('X','Y'): {'Z':1}, ('X','Z'): {'W':1}})
77
+ sage: M.<A,B,C,D> = LieAlgebra(K, {('A','B'): {'C':1}, ('A','C'): {'D':1}})
78
+ sage: phi = L.morphism({X:A, Y:B, Z:C, W:D}, base_map=cc)
79
+ sage: phi(X)
80
+ A
81
+ sage: phi(i*X)
82
+ -i*A
83
+ sage: all(phi(x.bracket(y)) == phi(x).bracket(phi(y)) for x,y in cartesian_product_iterator([[X,Y,Z,W],[X,Y,Z,W]]))
84
+ True
85
+
86
+ Note that the Lie bracket should still be preserved, even though the map is no longer linear
87
+ over the base ring::
88
+
89
+ sage: L.<X,Y,Z,W> = LieAlgebra(K, {('X','Y'): {'Z':i}, ('X','Z'): {'W':1}})
90
+ sage: M.<A,B,C,D> = LieAlgebra(K, {('A','B'): {'C':-i}, ('A','C'): {'D':1}})
91
+ sage: phi = L.morphism({X:A, Y:B, Z:C, W:D}, base_map=cc)
92
+ sage: phi(X.bracket(Y))
93
+ -i*C
94
+ sage: phi(X).bracket(phi(Y))
95
+ -i*C
96
+ """
97
+ def __init__(self, parent, im_gens, base_map=None, check=True):
98
+ """
99
+ EXAMPLES::
100
+
101
+ sage: L = LieAlgebra(QQ, 'x,y,z')
102
+ sage: Lyn = L.Lyndon()
103
+ sage: H = L.Hall()
104
+ sage: phi = Lyn.coerce_map_from(H)
105
+
106
+ We skip the category test because the Homset's element class
107
+ does not match this class::
108
+
109
+ sage: TestSuite(phi).run(skip=['_test_category'])
110
+ """
111
+ Morphism.__init__(self, parent)
112
+ if not isinstance(im_gens, Sequence_generic):
113
+ if not isinstance(im_gens, (tuple, list)):
114
+ im_gens = [im_gens]
115
+ im_gens = Sequence(im_gens, parent.codomain(), immutable=True)
116
+ if check:
117
+ if len(im_gens) != len(parent.domain().lie_algebra_generators()):
118
+ raise ValueError("number of images must equal number of generators")
119
+ if base_map is not None and not (base_map.domain() is parent.domain().base_ring() and parent.codomain().base_ring().has_coerce_map_from(base_map.codomain())):
120
+ raise ValueError("invalid base homomorphism")
121
+ # TODO: Implement a (meaningful) _is_valid_homomorphism_()
122
+ #if not parent.domain()._is_valid_homomorphism_(parent.codomain(), im_gens, base_map=base_map):
123
+ # raise ValueError("relations do not all (canonically) map to 0 under map determined by images of generators")
124
+ if not im_gens.is_immutable():
125
+ import copy
126
+ im_gens = copy.copy(im_gens)
127
+ im_gens.set_immutable()
128
+ self._im_gens = im_gens
129
+ self._base_map = base_map
130
+
131
+ def _repr_type(self):
132
+ """
133
+ TESTS::
134
+
135
+ sage: L = LieAlgebra(QQ, 'x,y,z')
136
+ sage: Lyn = L.Lyndon()
137
+ sage: H = L.Hall()
138
+ sage: f = Lyn.coerce_map_from(H)
139
+ sage: type(f)
140
+ <class 'sage.algebras.lie_algebras.morphism.LieAlgebraHomomorphism_im_gens'>
141
+ sage: f._repr_type()
142
+ 'Lie algebra'
143
+ """
144
+ return "Lie algebra"
145
+
146
+ def im_gens(self):
147
+ """
148
+ Return the images of the generators of the domain.
149
+
150
+ OUTPUT:
151
+
152
+ - ``list`` -- a copy of the list of gens (it is safe to change this)
153
+
154
+ EXAMPLES::
155
+
156
+ sage: L = LieAlgebra(QQ, 'x,y,z')
157
+ sage: Lyn = L.Lyndon()
158
+ sage: H = L.Hall()
159
+ sage: f = Lyn.coerce_map_from(H)
160
+ sage: f.im_gens()
161
+ [x, y, z]
162
+ """
163
+ return list(self._im_gens)
164
+
165
+ def base_map(self):
166
+ """
167
+ Return the map on the base ring that is part of the defining
168
+ data for this morphism. May return ``None`` if a coercion is used.
169
+
170
+ EXAMPLES::
171
+
172
+ sage: # needs sage.rings.number_field
173
+ sage: R.<x> = ZZ[]
174
+ sage: K.<i> = NumberField(x^2 + 1)
175
+ sage: cc = K.hom([-i])
176
+ sage: L.<X,Y,Z,W> = LieAlgebra(K, {('X','Y'): {'Z':1}, ('X','Z'): {'W':1}})
177
+ sage: M.<A,B> = LieAlgebra(K, abelian=True)
178
+ sage: phi = L.morphism({X: A, Y: B}, base_map=cc)
179
+ sage: phi(X)
180
+ A
181
+ sage: phi(i*X)
182
+ -i*A
183
+ sage: phi.base_map()
184
+ Ring endomorphism of Number Field in i with defining polynomial x^2 + 1
185
+ Defn: i |--> -i
186
+ """
187
+ return self._base_map
188
+
189
+ def _richcmp_(self, other, op):
190
+ """
191
+ Rich comparisons.
192
+
193
+ EXAMPLES::
194
+
195
+ sage: L = LieAlgebra(QQ, 'x,y,z')
196
+ sage: Lyn = L.Lyndon()
197
+ sage: H = L.Hall()
198
+ sage: x,y,z = H.gens()
199
+ sage: f = Hom(Lyn, H)([x,y,z])
200
+ sage: g = Hom(Lyn, H)([x,y,z])
201
+ sage: h = Hom(Lyn, H)([y,x,z])
202
+ sage: f == g
203
+ True
204
+ sage: f is g
205
+ False
206
+ sage: f != h
207
+ True
208
+ """
209
+ return richcmp((self._im_gens, self._base_map), (other._im_gens, other._base_map), op)
210
+
211
+ def __hash__(self):
212
+ """
213
+ Return the hash of this morphism.
214
+
215
+ EXAMPLES::
216
+
217
+ sage: L = LieAlgebra(QQ, 'x,y,z')
218
+ sage: Lyn = L.Lyndon()
219
+ sage: H = L.Hall()
220
+ sage: phi = Lyn.coerce_map_from(H)
221
+ sage: hash(phi) == hash(phi)
222
+ True
223
+ """
224
+ return hash((self._im_gens, self._base_map))
225
+
226
+ def _repr_defn(self):
227
+ """
228
+ Used in constructing string representation of ``self``.
229
+
230
+ EXAMPLES::
231
+
232
+ sage: L = LieAlgebra(QQ, 'x,y,z')
233
+ sage: Lyn = L.Lyndon()
234
+ sage: H = L.Hall()
235
+ sage: phi = Lyn.coerce_map_from(H)
236
+ sage: print(phi._repr_defn())
237
+ x |--> x
238
+ y |--> y
239
+ z |--> z
240
+ """
241
+ D = self.domain()
242
+ s = '\n'.join('%s |--> %s' % (x, gen)
243
+ for gen, x in zip(self._im_gens, D.gens()))
244
+ if s and self._base_map is not None:
245
+ s += '\nwith map of base ring'
246
+ return s
247
+
248
+ def _call_(self, x):
249
+ """
250
+ Evaluate this homomorphism at ``x``.
251
+
252
+ EXAMPLES::
253
+
254
+ sage: L = LieAlgebra(QQ, 'x,y,z')
255
+ sage: Lyn = L.Lyndon()
256
+ sage: H = L.Hall()
257
+ sage: phi = Lyn.coerce_map_from(H)
258
+ sage: a = H.graded_basis(5)[12]; a
259
+ [z, [y, [x, [x, z]]]]
260
+ sage: phi(a)
261
+ [x, [[x, z], [y, z]]] + [x, [[[x, z], z], y]]
262
+ + [[x, y], [[x, z], z]] + [[x, [y, z]], [x, z]]
263
+ """
264
+ return x._im_gens_(self.codomain(), self.im_gens(), base_map=self.base_map())
265
+
266
+
267
+ class LieAlgebraHomset(Homset):
268
+ """
269
+ Homset between two Lie algebras.
270
+
271
+ .. TODO::
272
+
273
+ This is a very minimal implementation which does not
274
+ have coercions of the morphisms.
275
+ """
276
+ def __init__(self, X, Y, category=None, base=None, check=True):
277
+ """
278
+ Initialize ``self``.
279
+
280
+ EXAMPLES::
281
+
282
+ sage: L = LieAlgebra(QQ, 'x,y,z')
283
+ sage: Lyn = L.Lyndon()
284
+ sage: H = L.Hall()
285
+ sage: HS = Hom(Lyn, H)
286
+
287
+ We skip the elements test since homsets are not proper parents::
288
+
289
+ sage: TestSuite(HS).run(skip=["_test_elements"])
290
+ """
291
+ if base is None:
292
+ base = X.base_ring()
293
+ Homset.__init__(self, X, Y, category, base, check)
294
+
295
+ def _repr_(self):
296
+ """
297
+ Return a string representation of ``self``.
298
+
299
+ EXAMPLES::
300
+
301
+ sage: L = LieAlgebra(QQ, 'x,y,z')
302
+ sage: Lyn = L.Lyndon()
303
+ sage: H = L.Hall()
304
+ sage: Hom(Lyn, H)
305
+ Set of Lie algebra morphisms
306
+ from Free Lie algebra generated by (x, y, z) over Rational Field in the Lyndon basis
307
+ to Free Lie algebra generated by (x, y, z) over Rational Field in the Hall basis
308
+ """
309
+ return "Set of Lie algebra morphisms from {} to {}".format(
310
+ self.domain(), self.codomain())
311
+
312
+ def __call__(self, im_gens, check=True):
313
+ """
314
+ Construct a morphism from ``im_gens``.
315
+
316
+ EXAMPLES::
317
+
318
+ sage: L = LieAlgebra(QQ, 'x,y,z')
319
+ sage: Lyn = L.Lyndon()
320
+ sage: H = L.Hall()
321
+ sage: HS = Hom(Lyn, H)
322
+ sage: x,y,z = Lyn.gens()
323
+ sage: phi = HS([z,x,y])
324
+ sage: phi(x + Lyn[z,y])
325
+ z - [x, y]
326
+
327
+ sage: HS = Hom(Lyn, Lyn)
328
+ sage: phi = HS([z,x,y])
329
+ sage: a = Lyn([z, [x, [[y, z], x]]]); a
330
+ [x, [x, [[y, z], z]]] + [x, [[x, z], [y, z]]] - [[x, [y, z]], [x, z]]
331
+ sage: phi(a)
332
+ [[x, [[y, z], z]], y] + 2*[[[x, z], [y, z]], y] + [[[[x, z], z], y], y]
333
+ sage: phi(phi(phi(a))) == a
334
+ True
335
+ """
336
+ if isinstance(im_gens, Morphism):
337
+ return im_gens
338
+ from sage.categories.lie_algebras import LieAlgebras
339
+ if (self.domain() in LieAlgebras.FiniteDimensional.WithBasis
340
+ and self.codomain() in LieAlgebras.FiniteDimensional.WithBasis):
341
+ try:
342
+ return LieAlgebraMorphism_from_generators(self.domain(), im_gens,
343
+ codomain=self.codomain(),
344
+ check=check)
345
+ except (TypeError, ValueError):
346
+ pass
347
+ return LieAlgebraHomomorphism_im_gens(self, im_gens)
348
+
349
+ @cached_method
350
+ def zero(self):
351
+ """
352
+ Return the zero morphism.
353
+
354
+ EXAMPLES::
355
+
356
+ sage: L = LieAlgebra(QQ, 'x,y,z')
357
+ sage: Lyn = L.Lyndon()
358
+ sage: H = L.Hall()
359
+ sage: HS = Hom(Lyn, H)
360
+ sage: HS.zero()
361
+ Generic morphism:
362
+ From: Free Lie algebra generated by (x, y, z) over Rational Field in the Lyndon basis
363
+ To: Free Lie algebra generated by (x, y, z) over Rational Field in the Hall basis
364
+ """
365
+ return SetMorphism(self, lambda x: self.codomain().zero())
366
+
367
+ _an_element_ = zero
368
+
369
+
370
+ class LieAlgebraMorphism_from_generators(LieAlgebraHomomorphism_im_gens):
371
+ r"""
372
+ A morphism between two Lie algebras defined by images of a
373
+ generating set as a Lie algebra.
374
+
375
+ This is the Lie algebra morphism `\phi \colon L \to K` defined on
376
+ the chosen basis of `L` to that of `K` be using the image of some
377
+ generating set (as a Lie algebra) of `L`.
378
+
379
+ INPUT:
380
+
381
+ - ``on_generators`` -- dictionary ``{X: Y}`` of the images `Y`
382
+ in ``codomain`` of elements `X` of ``domain``
383
+ - ``codomain`` -- a Lie algebra (optional); this is inferred
384
+ from the values of ``on_generators`` if not given
385
+ - ``base_map`` -- a homomorphism to apply to the coefficients.
386
+ It should be a map from the base ring of the domain to the
387
+ base ring of the codomain.
388
+ Note that if base_map is nontrivial then the result will
389
+ not be a morphism in the category of Lie algebras over
390
+ the base ring.
391
+ - ``check`` -- boolean (default: ``True``); if ``False`` the
392
+ values on the Lie brackets implied by ``on_generators`` will
393
+ not be checked for contradictory values
394
+
395
+ EXAMPLES:
396
+
397
+ A reflection of one horizontal vector in the Heisenberg algebra::
398
+
399
+ sage: L.<X,Y,Z> = LieAlgebra(QQ, {('X','Y'): {'Z':1}})
400
+ sage: phi = L.morphism({X:-X, Y:Y}); phi
401
+ Lie algebra endomorphism of Lie algebra on 3 generators (X, Y, Z) over Rational Field
402
+ Defn: X |--> -X
403
+ Y |--> Y
404
+ Z |--> -Z
405
+
406
+ There is no Lie algebra morphism that reflects one horizontal vector,
407
+ but not the vertical one::
408
+
409
+ sage: L.morphism({X:-X, Y:Y, Z:Z})
410
+ Traceback (most recent call last):
411
+ ...
412
+ ValueError: this does not define a Lie algebra morphism;
413
+ contradictory values for brackets of length 2
414
+
415
+ Checking for mistakes can be disabled, which can produce
416
+ invalid results::
417
+
418
+ sage: phi = L.morphism({X:-X, Y:Y, Z:Z}, check=False); phi
419
+ Lie algebra endomorphism of Lie algebra on 3 generators (X, Y, Z) over Rational Field
420
+ Defn: X |--> -X
421
+ Y |--> Y
422
+ Z |--> Z
423
+ sage: L[phi(X), phi(Y)] == phi(L[X,Y])
424
+ False
425
+
426
+ The set of keys must generate the Lie algebra::
427
+
428
+ sage: L.morphism({X: X})
429
+ Traceback (most recent call last):
430
+ ...
431
+ ValueError: [X] is not a generating set of Lie algebra on 3 generators
432
+ (X, Y, Z) over Rational Field
433
+
434
+ Over non-fields, generating subsets are more restricted::
435
+
436
+ sage: L.<X,Y,Z> = LieAlgebra(ZZ, {('X','Y'): {'Z':2}})
437
+ sage: L.morphism({X: X, Y: Y})
438
+ Traceback (most recent call last):
439
+ ...
440
+ ValueError: [X, Y] is not a generating set of Lie algebra on 3
441
+ generators (X, Y, Z) over Integer Ring
442
+
443
+ The generators do not have to correspond to the defined generating
444
+ set of the domain::
445
+
446
+ sage: L.<X,Y,Z,W> = LieAlgebra(QQ, {('X','Y'): {'Z':1}, ('X','Z'): {'W':1}})
447
+ sage: K.<A,B,C> = LieAlgebra(QQ, {('A','B'): {'C':2}})
448
+ sage: phi = L.morphism({X+2*Y: A, X-Y: B}); phi
449
+ Lie algebra morphism:
450
+ From: Lie algebra on 4 generators (X, Y, Z, W) over Rational Field
451
+ To: Lie algebra on 3 generators (A, B, C) over Rational Field
452
+ Defn: X |--> 1/3*A + 2/3*B
453
+ Y |--> 1/3*A - 1/3*B
454
+ Z |--> -2/3*C
455
+ W |--> 0
456
+ sage: phi(X+2*Y)
457
+ A
458
+ sage: phi(X)
459
+ 1/3*A + 2/3*B
460
+ sage: phi(W)
461
+ 0
462
+ sage: phi(Z)
463
+ -2/3*C
464
+ sage: all(K[phi(p), phi(q)] == phi(L[p,q])
465
+ ....: for p in L.basis() for q in L.basis())
466
+ True
467
+
468
+ A quotient type Lie algebra morphism::
469
+
470
+ sage: K.<A,B> = LieAlgebra(SR, abelian=True) # needs sage.symbolic
471
+ sage: L.morphism({X: A, Y: B}) # needs sage.symbolic
472
+ Lie algebra morphism:
473
+ From: Lie algebra on 4 generators (X, Y, Z, W) over Rational Field
474
+ To: Abelian Lie algebra on 2 generators (A, B) over Symbolic Ring
475
+ Defn: X |--> A
476
+ Y |--> B
477
+ Z |--> 0
478
+ W |--> 0
479
+ """
480
+ def __init__(self, on_generators, domain=None, codomain=None, check=True, base_map=None, category=None):
481
+ r"""
482
+ Initialize ``self``.
483
+
484
+ The keys of ``on_generators`` need to generate ``domain``
485
+ as a Lie algebra.
486
+
487
+ .. TODO::
488
+
489
+ It might be possible to extract an explicit bracket relation that
490
+ fails whenever some linear system fails to be solved. This would
491
+ allow outputting an even more explicit error.
492
+
493
+ TESTS:
494
+
495
+ Test suite for a morphism::
496
+
497
+ sage: L.<X,Y,Z,W> = LieAlgebra(QQ, {('X','Y'): {'Z':1}, ('X','Z'): {'W':1}})
498
+ sage: K.<A,B,C> = LieAlgebra(QQ, {('A','B'): {'C':2}})
499
+ sage: phi = L.morphism({X+2*Y: A, X-Y: B})
500
+ sage: TestSuite(phi).run(skip=['_test_category'])
501
+
502
+ Failure of inferring codomain::
503
+
504
+ sage: L.<X> = LieAlgebra(QQ, abelian=True)
505
+ sage: L.morphism({X: int(1)})
506
+ Traceback (most recent call last):
507
+ ...
508
+ TypeError: codomain <class 'int'> is not a Lie algebra
509
+
510
+ sage: from sage.algebras.lie_algebras.morphism import LieAlgebraMorphism_from_generators
511
+ sage: LieAlgebraMorphism_from_generators({ZZ(1): X})
512
+ Traceback (most recent call last):
513
+ ...
514
+ TypeError: domain Integer Ring is not a Lie algebra
515
+ sage: LieAlgebraMorphism_from_generators({})
516
+ Traceback (most recent call last):
517
+ ...
518
+ ValueError: no elements to infer domain from
519
+ sage: LieAlgebraMorphism_from_generators({}, domain=L)
520
+ Traceback (most recent call last):
521
+ ...
522
+ ValueError: no elements to infer codomain from
523
+
524
+ We check that we can specify a base map to get a semi-linear morphism of Lie algebras::
525
+
526
+ sage: # needs sage.rings.number_field
527
+ sage: R.<x> = ZZ[]
528
+ sage: K.<i> = NumberField(x^2 + 1)
529
+ sage: cc = K.hom([-i])
530
+ sage: L.<X,Y,Z> = LieAlgebra(K, {('X','Y'): {'Z':i}})
531
+ sage: M.<A,B,C> = LieAlgebra(K, {('A','B'): {'C':-i}})
532
+ sage: phi = L.morphism({X:A, Y:B, Z:C}, base_map=cc)
533
+ sage: phi(Z)
534
+ C
535
+ sage: phi(i*Z)
536
+ -i*C
537
+ """
538
+ from sage.categories.lie_algebras import LieAlgebras
539
+
540
+ cm = get_coercion_model()
541
+ if domain is None:
542
+ if not on_generators:
543
+ raise ValueError("no elements to infer domain from")
544
+ domain = cm.common_parent(*on_generators)
545
+ if domain not in LieAlgebras:
546
+ raise TypeError("domain %s is not a Lie algebra" % domain)
547
+ if codomain is None:
548
+ if not on_generators:
549
+ raise ValueError("no elements to infer codomain from")
550
+ codomain = cm.common_parent(*list(on_generators.values()))
551
+ if codomain not in LieAlgebras:
552
+ raise TypeError("codomain %s is not a Lie algebra" % codomain)
553
+
554
+ # If the base map is nontrivial, ideally we would have machinery
555
+ # here to determine how the base map affects the category of the
556
+ # resulting morphism. But for now it's not clear how to do this,
557
+ # so we leave the category as the default for now.
558
+ parent = Hom(domain, codomain, category=category)
559
+ m = domain.module()
560
+ cm = codomain.module()
561
+
562
+ spanning_set = [X.to_vector() for X in on_generators]
563
+ im_gens = [Y.to_vector() for Y in on_generators.values()]
564
+
565
+ if not im_gens:
566
+ LieAlgebraHomomorphism_im_gens.__init__(self, parent, [], base_map=base_map, check=check)
567
+ return
568
+
569
+ # helper function to solve linear systems Ax = b, where both x and b
570
+ # are vectors of vectors
571
+ def solve_linear_system(A, b, check):
572
+ R = cm.base_ring()
573
+ A_inv = A.solve_left(matrix.identity(A.ncols()))
574
+
575
+ if check:
576
+ # Verify validity of solution x = A_inv*b. Since b is a vector of
577
+ # vectors, need to expand the matrix product by hand.
578
+ M = A * A_inv
579
+ for Mi, bk in zip(M.rows(), b):
580
+ test_bk = sum((R(Mij) * bj for Mij,bj in zip(Mi,b)), cm.zero())
581
+ if test_bk != bk:
582
+ raise ValueError("contradictory linear system")
583
+
584
+ return [sum((R(Aij) * bk for Aij,bk in zip(Ai,b)), cm.zero())
585
+ for Ai in A_inv.rows()]
586
+
587
+ bracketlength = 1
588
+ n = 0
589
+ while True:
590
+ sm = m.submodule(spanning_set)
591
+ A = matrix(sm.base_ring(), [sm.coordinate_vector(X) for X in spanning_set])
592
+ if base_map is not None:
593
+ A = A.apply_map(base_map)
594
+ try:
595
+ im_gens = solve_linear_system(A, im_gens, check)
596
+ except ValueError:
597
+ raise ValueError("this does not define a Lie algebra morphism; "
598
+ "contradictory values for brackets of length %d"
599
+ % bracketlength)
600
+
601
+ spanning_set = list(sm.basis())
602
+ if n == len(spanning_set):
603
+ # no increase in dimension => no further values will be computed
604
+ break
605
+
606
+ # compute brackets and repeat
607
+ bracketlength += 1
608
+ n = len(spanning_set)
609
+ for i,j in combinations(range(n), 2):
610
+ # add the value of the bracket to known images
611
+ Z = domain.bracket(spanning_set[i], spanning_set[j])
612
+ imZ = codomain.bracket(im_gens[i], im_gens[j])
613
+ spanning_set.append(Z.to_vector())
614
+ im_gens.append(imZ.to_vector())
615
+
616
+ # verify that sm is the full module m
617
+ if not sm.has_coerce_map_from(m):
618
+ raise ValueError("%s is not a generating set of %s"
619
+ % (list(on_generators), domain))
620
+
621
+ A = matrix(m.base_ring(), spanning_set)
622
+ im_gens = solve_linear_system(A, im_gens, check)
623
+
624
+ LieAlgebraHomomorphism_im_gens.__init__(self, parent, im_gens, base_map=base_map, check=check)
625
+
626
+ def _call_(self, x):
627
+ """
628
+ Evaluate this homomorphism at ``x``.
629
+
630
+ EXAMPLES::
631
+
632
+ sage: L.<X,Y,Z,W> = LieAlgebra(QQ, {('X','Y'): {'Z':1}, ('X','Z'): {'W':1}})
633
+ sage: K.<A,B> = LieAlgebra(SR, abelian=True) # needs sage.symbolic
634
+ sage: phi = L.morphism({X: A, Y: B}) # needs sage.symbolic
635
+ sage: phi(X) # needs sage.symbolic
636
+ A
637
+ sage: phi(Y) # needs sage.symbolic
638
+ B
639
+ sage: phi(Z) # needs sage.symbolic
640
+ 0
641
+ sage: phi(W) # needs sage.symbolic
642
+ 0
643
+ sage: phi(-X + 3*Y) # needs sage.symbolic
644
+ -A + 3*B
645
+
646
+ sage: K.<A,B,C> = LieAlgebra(QQ, {('A','B'): {'C':2}})
647
+ sage: phi = L.morphism({X+2*Y: A, X-Y: B})
648
+ sage: phi(X)
649
+ 1/3*A + 2/3*B
650
+ sage: phi(Y)
651
+ 1/3*A - 1/3*B
652
+ sage: phi(3*X+Y)
653
+ 4/3*A + 5/3*B
654
+ sage: phi(3/2*W-Z+Y)
655
+ 1/3*A - 1/3*B + 2/3*C
656
+ """
657
+ C = self.codomain()
658
+ bh = self._base_map
659
+ if bh is None:
660
+ bh = lambda t: t
661
+ return C.sum(bh(c) * self._im_gens[i] for i, c in (x.to_vector()).items())