passagemath-modules 10.6.31rc3__cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

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

Potentially problematic release.


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

Files changed (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 +6 -0
  4. passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
  5. passagemath_modules.libs/libgfortran-83c28eba.so.5.0.0 +0 -0
  6. passagemath_modules.libs/libgmp-6e109695.so.10.5.0 +0 -0
  7. passagemath_modules.libs/libgsl-cda90e79.so.28.0.0 +0 -0
  8. passagemath_modules.libs/libmpc-7f678fcf.so.3.3.1 +0 -0
  9. passagemath_modules.libs/libmpfr-82690d50.so.6.2.1 +0 -0
  10. passagemath_modules.libs/libopenblasp-r0-6dcb67f9.3.29.so +0 -0
  11. passagemath_modules.libs/libquadmath-2284e583.so.0.0.0 +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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.so +0 -0
  74. sage/calculus/integration.pyx +698 -0
  75. sage/calculus/interpolation.cpython-314-x86_64-linux-gnu.so +0 -0
  76. sage/calculus/interpolation.pxd +13 -0
  77. sage/calculus/interpolation.pyx +387 -0
  78. sage/calculus/interpolators.cpython-314-x86_64-linux-gnu.so +0 -0
  79. sage/calculus/interpolators.pyx +326 -0
  80. sage/calculus/ode.cpython-314-x86_64-linux-gnu.so +0 -0
  81. sage/calculus/ode.pxd +5 -0
  82. sage/calculus/ode.pyx +610 -0
  83. sage/calculus/riemann.cpython-314-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.so +0 -0
  401. sage/matrix/constructor.pyx +750 -0
  402. sage/matrix/docs.py +430 -0
  403. sage/matrix/echelon_matrix.cpython-314-x86_64-linux-gnu.so +0 -0
  404. sage/matrix/echelon_matrix.pyx +155 -0
  405. sage/matrix/matrix.pxd +2 -0
  406. sage/matrix/matrix0.cpython-314-x86_64-linux-gnu.so +0 -0
  407. sage/matrix/matrix0.pxd +68 -0
  408. sage/matrix/matrix0.pyx +6324 -0
  409. sage/matrix/matrix1.cpython-314-x86_64-linux-gnu.so +0 -0
  410. sage/matrix/matrix1.pxd +8 -0
  411. sage/matrix/matrix1.pyx +2851 -0
  412. sage/matrix/matrix2.cpython-314-x86_64-linux-gnu.so +0 -0
  413. sage/matrix/matrix2.pxd +25 -0
  414. sage/matrix/matrix2.pyx +20181 -0
  415. sage/matrix/matrix_cdv.cpython-314-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.so +0 -0
  492. sage/matroids/extension.pxd +34 -0
  493. sage/matroids/extension.pyx +519 -0
  494. sage/matroids/flats_matroid.cpython-314-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.so +0 -0
  701. sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
  702. sage/rings/function_field/khuri_makdisi.cpython-314-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.so +0 -0
  771. sage/stats/hmm/chmm.pyx +1595 -0
  772. sage/stats/hmm/distributions.cpython-314-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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,973 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ # sage.doctest: needs sage.combinat sage.graphs
3
+ """
4
+ Free Lie Algebras
5
+
6
+ AUTHORS:
7
+
8
+ - Travis Scrimshaw (2013-05-03): Initial version
9
+
10
+ REFERENCES:
11
+
12
+ - [Bou1989]_
13
+ - [Reu2003]_
14
+ """
15
+
16
+ # ****************************************************************************
17
+ # Copyright (C) 2013-2017 Travis Scrimshaw <tcscrims at gmail.com>
18
+ #
19
+ # This program is free software: you can redistribute it and/or modify
20
+ # it under the terms of the GNU General Public License as published by
21
+ # the Free Software Foundation, either version 2 of the License, or
22
+ # (at your option) any later version.
23
+ # https://www.gnu.org/licenses/
24
+ # *****************************************************************************
25
+
26
+ from sage.misc.abstract_method import abstract_method
27
+ from sage.misc.cachefunc import cached_method
28
+ from sage.misc.bindable_class import BindableClass
29
+ from sage.structure.parent import Parent
30
+ from sage.structure.unique_representation import UniqueRepresentation
31
+ from sage.structure.indexed_generators import (IndexedGenerators,
32
+ standardize_names_index_set)
33
+ from sage.categories.realizations import Realizations, Category_realization_of_parent
34
+ from sage.categories.lie_algebras import LieAlgebras
35
+ from sage.categories.homset import Hom
36
+
37
+ from sage.algebras.free_algebra import FreeAlgebra
38
+ from sage.algebras.lie_algebras.lie_algebra import FinitelyGeneratedLieAlgebra
39
+ from sage.algebras.lie_algebras.lie_algebra_element import (LieGenerator,
40
+ GradedLieBracket,
41
+ LyndonBracket,
42
+ FreeLieAlgebraElement)
43
+ from sage.algebras.lie_algebras.morphism import LieAlgebraHomomorphism_im_gens
44
+ from sage.misc.superseded import experimental_warning
45
+
46
+ from sage.rings.integer_ring import ZZ
47
+
48
+
49
+ class FreeLieBasis_abstract(FinitelyGeneratedLieAlgebra, IndexedGenerators, BindableClass):
50
+ """
51
+ Abstract base class for all bases of a free Lie algebra.
52
+ """
53
+ def __init__(self, lie, basis_name):
54
+ """
55
+ Initialize ``self``.
56
+
57
+ EXAMPLES::
58
+
59
+ sage: L.<x, y> = LieAlgebra(QQ)
60
+ sage: L.Hall()
61
+ doctest:warning
62
+ ...
63
+ FutureWarning: The Hall basis has not been fully proven correct, but currently no bugs are known
64
+ See https://github.com/sagemath/sage/issues/16823 for details.
65
+ Free Lie algebra generated by (x, y) over Rational Field in the Hall basis
66
+ """
67
+ self._basis_name = basis_name
68
+ IndexedGenerators.__init__(self, lie._indices, prefix='', bracket=False)
69
+ FinitelyGeneratedLieAlgebra.__init__(self, lie.base_ring(),
70
+ names=lie._names, index_set=lie._indices,
71
+ category=FreeLieAlgebraBases(lie))
72
+
73
+ def _repr_(self):
74
+ """
75
+ Return a string representation of ``self``.
76
+
77
+ EXAMPLES::
78
+
79
+ sage: L.<x, y> = LieAlgebra(QQ)
80
+ sage: L.Hall()
81
+ Free Lie algebra generated by (x, y) over Rational Field in the Hall basis
82
+ sage: L.Lyndon()
83
+ Free Lie algebra generated by (x, y) over Rational Field in the Lyndon basis
84
+ """
85
+ return "{} in the {} basis".format(self.realization_of(), self._basis_name)
86
+
87
+ def _repr_term(self, x):
88
+ """
89
+ Return a string representation for ``x``.
90
+
91
+ EXAMPLES::
92
+
93
+ sage: L = LieAlgebra(QQ, 'x,y')
94
+ sage: H = L.Hall()
95
+ sage: x,y = H.gens()
96
+ sage: H._repr_term(x.leading_support())
97
+ 'x'
98
+ sage: a = H([x, y]).leading_support()
99
+ sage: H._repr_term(a)
100
+ '[x, y]'
101
+ """
102
+ return repr(x)
103
+
104
+ def _latex_term(self, x):
105
+ r"""
106
+ Return a `\LaTeX` representation for ``x``.
107
+
108
+ EXAMPLES::
109
+
110
+ sage: L = LieAlgebra(QQ, 'x,y')
111
+ sage: H = L.Hall()
112
+ sage: x,y = H.gens()
113
+ sage: H._latex_term(x.leading_support())
114
+ 'x'
115
+ sage: a = H([x, y]).leading_support()
116
+ sage: H._latex_term(a)
117
+ \left[ x , y \right]
118
+ """
119
+ return x._latex_()
120
+
121
+ def _ascii_art_term(self, x):
122
+ r"""
123
+ Return an ascii art representation for ``x``.
124
+
125
+ EXAMPLES::
126
+
127
+ sage: L = LieAlgebra(QQ, 'x,y')
128
+ sage: H = L.Hall()
129
+ sage: x,y = H.gens()
130
+ sage: H._ascii_art_term(x.leading_support())
131
+ x
132
+ sage: a = H([x, y]).leading_support()
133
+ sage: H._ascii_art_term(a)
134
+ [x, y]
135
+ """
136
+ from sage.typeset.ascii_art import ascii_art
137
+ return ascii_art(x)
138
+
139
+ def _unicode_art_term(self, x):
140
+ r"""
141
+ Return a unicode art representation for ``x``.
142
+
143
+ EXAMPLES::
144
+
145
+ sage: L = LieAlgebra(QQ, 'x,y')
146
+ sage: H = L.Hall()
147
+ sage: x,y = H.gens()
148
+ sage: H._unicode_art_term(x.leading_support())
149
+ x
150
+ sage: a = H([x, y]).leading_support()
151
+ sage: H._unicode_art_term(a)
152
+ [x, y]
153
+ """
154
+ from sage.typeset.unicode_art import unicode_art
155
+ return unicode_art(x)
156
+
157
+ def _element_constructor_(self, x):
158
+ """
159
+ Convert ``x`` into ``self``.
160
+
161
+ EXAMPLES::
162
+
163
+ sage: L.<x,y> = LieAlgebra(QQ)
164
+ sage: Lyn = L.Lyndon()
165
+ sage: Lyn('x')
166
+ x
167
+ sage: elt = Lyn([x, y]); elt
168
+ [x, y]
169
+ sage: elt.parent() is Lyn
170
+ True
171
+ """
172
+ if not isinstance(x, list) and x in self._indices:
173
+ return self.monomial(x)
174
+ return super()._element_constructor_(x)
175
+
176
+ def monomial(self, x):
177
+ """
178
+ Return the monomial indexed by ``x``.
179
+
180
+ EXAMPLES::
181
+
182
+ sage: Lyn = LieAlgebra(QQ, 'x,y').Lyndon()
183
+ sage: x = Lyn.monomial('x'); x
184
+ x
185
+ sage: x.parent() is Lyn
186
+ True
187
+ """
188
+ if not isinstance(x, (LieGenerator, GradedLieBracket)):
189
+ if isinstance(x, list):
190
+ return super()._element_constructor_(x)
191
+ else:
192
+ i = self._indices.index(x)
193
+ x = LieGenerator(x, i)
194
+ return self.element_class(self, {x: self.base_ring().one()})
195
+
196
+ def _construct_UEA(self):
197
+ """
198
+ Construct the universal enveloping algebra of ``self``.
199
+
200
+ EXAMPLES::
201
+
202
+ sage: L.<x, y> = LieAlgebra(QQ)
203
+ sage: L._construct_UEA()
204
+ Free Algebra on 2 generators (x, y) over Rational Field
205
+ sage: L.<x> = LieAlgebra(QQ)
206
+ sage: L._construct_UEA()
207
+ Free Algebra on 1 generator (x,) over Rational Field
208
+ """
209
+ return FreeAlgebra(self.base_ring(), len(self._names), self._names)
210
+
211
+ def is_abelian(self):
212
+ """
213
+ Return ``True`` if this is an abelian Lie algebra.
214
+
215
+ EXAMPLES::
216
+
217
+ sage: L = LieAlgebra(QQ, 3, 'x')
218
+ sage: L.is_abelian()
219
+ False
220
+ sage: L = LieAlgebra(QQ, 1, 'x')
221
+ sage: L.is_abelian()
222
+ True
223
+ """
224
+ return len(self._indices) <= 1
225
+
226
+ def basis(self):
227
+ """
228
+ Return the basis of ``self``.
229
+
230
+ EXAMPLES::
231
+
232
+ sage: L = LieAlgebra(QQ, 3, 'x')
233
+ sage: L.Hall().basis()
234
+ Disjoint union of Lazy family (graded basis(i))_{i in Positive integers}
235
+ """
236
+ from sage.sets.disjoint_union_enumerated_sets import DisjointUnionEnumeratedSets
237
+ from sage.sets.positive_integers import PositiveIntegers
238
+ from sage.sets.family import Family
239
+ return DisjointUnionEnumeratedSets(Family(PositiveIntegers(), self.graded_basis, name="graded basis"))
240
+
241
+ @cached_method
242
+ def graded_dimension(self, k):
243
+ r"""
244
+ Return the dimension of the ``k``-th graded piece of ``self``.
245
+
246
+ The `k`-th graded part of a free Lie algebra on `n` generators
247
+ has dimension
248
+
249
+ .. MATH::
250
+
251
+ \frac{1}{k} \sum_{d \mid k} \mu(d) n^{k/d},
252
+
253
+ where `\mu` is the Mobius function.
254
+
255
+ REFERENCES:
256
+
257
+ [MKO1998]_
258
+
259
+ EXAMPLES::
260
+
261
+ sage: L = LieAlgebra(QQ, 'x', 3)
262
+ sage: H = L.Hall()
263
+ sage: [H.graded_dimension(i) for i in range(1, 11)]
264
+ [3, 3, 8, 18, 48, 116, 312, 810, 2184, 5880]
265
+ sage: H.graded_dimension(0)
266
+ 0
267
+ """
268
+ if k == 0:
269
+ return 0
270
+ from sage.arith.misc import moebius
271
+ s = len(self.lie_algebra_generators())
272
+ k = ZZ(k) # Make sure we have something that is in ZZ
273
+ return sum(moebius(d) * s**(k // d) for d in k.divisors()) // k
274
+
275
+ @abstract_method
276
+ def graded_basis(self, k):
277
+ """
278
+ Return the basis for the ``k``-th graded piece of ``self``.
279
+
280
+ EXAMPLES::
281
+
282
+ sage: H = LieAlgebra(QQ, 3, 'x').Hall()
283
+ sage: H.graded_basis(2)
284
+ ([x0, x1], [x0, x2], [x1, x2])
285
+ """
286
+
287
+ @abstract_method
288
+ def _rewrite_bracket(self, l, r):
289
+ """
290
+ Rewrite the bracket ``[l, r]`` in terms of the given basis.
291
+
292
+ INPUT:
293
+
294
+ - ``l``, ``r`` -- two keys of a basis such that ``l < r``
295
+
296
+ OUTPUT:
297
+
298
+ A dictionary ``{b: c}`` where ``b`` is a basis key
299
+ and ``c`` is the corresponding coefficient.
300
+
301
+ EXAMPLES::
302
+
303
+ sage: L = LieAlgebra(QQ, 'x,y,z')
304
+ sage: H = L.Hall()
305
+ sage: x,y,z = H.gens()
306
+ sage: H([x, [y, [z, x]]]) # indirect doctest
307
+ -[y, [x, [x, z]]] - [[x, y], [x, z]]
308
+ """
309
+
310
+ Element = FreeLieAlgebraElement
311
+
312
+
313
+ class FreeLieAlgebra(Parent, UniqueRepresentation):
314
+ r"""
315
+ The free Lie algebra of a set `X`.
316
+
317
+ The free Lie algebra `\mathfrak{g}_X` of a set `X` is the Lie algebra
318
+ with generators `\{g_x\}_{x \in X}` where there are no other relations
319
+ beyond the defining relations. This can be constructed as
320
+ the free magmatic algebra `M_X` quotiented by the ideal
321
+ generated by `\bigl( xx, xy + yx, x(yz) + y(zx) + z(xy) \bigr)`.
322
+
323
+ EXAMPLES:
324
+
325
+ We first construct the free Lie algebra in the Hall basis::
326
+
327
+ sage: L = LieAlgebra(QQ, 'x,y,z')
328
+ sage: H = L.Hall()
329
+ sage: x,y,z = H.gens()
330
+ sage: h_elt = H([x, [y, z]]) + H([x - H([y, x]), H([x, z])]); h_elt
331
+ [x, [x, z]] + [y, [x, z]] - [z, [x, y]] + [[x, y], [x, z]]
332
+
333
+ We can also use the Lyndon basis and go between the two::
334
+
335
+ sage: Lyn = L.Lyndon()
336
+ sage: l_elt = Lyn([x, [y, z]]) + Lyn([x - Lyn([y, x]), Lyn([x, z])]); l_elt
337
+ [x, [x, z]] + [[x, y], [x, z]] + [x, [y, z]]
338
+ sage: Lyn(h_elt) == l_elt
339
+ True
340
+ sage: H(l_elt) == h_elt
341
+ True
342
+
343
+ TESTS:
344
+
345
+ Check that we can convert between the two bases::
346
+
347
+ sage: L = LieAlgebra(QQ, 'x,y,z')
348
+ sage: Lyn = L.Lyndon()
349
+ sage: H = L.Hall()
350
+ sage: all(Lyn(H(x)) == x for x in Lyn.graded_basis(5))
351
+ True
352
+ sage: all(H(Lyn(x)) == x for x in H.graded_basis(5))
353
+ True
354
+ """
355
+ @staticmethod
356
+ def __classcall_private__(cls, R, names=None, index_set=None):
357
+ """
358
+ Normalize input to ensure a unique representation.
359
+
360
+ EXAMPLES::
361
+
362
+ sage: from sage.algebras.lie_algebras.free_lie_algebra import FreeLieAlgebra
363
+ sage: L1 = FreeLieAlgebra(QQ, ['x', 'y', 'z'])
364
+ sage: L2.<x,y,z> = LieAlgebra(QQ)
365
+ sage: L1 is L2
366
+ True
367
+ """
368
+ names, index_set = standardize_names_index_set(names, index_set)
369
+ return super().__classcall__(cls, R, names, index_set)
370
+
371
+ def __init__(self, R, names, index_set):
372
+ """
373
+ Initialize ``self``.
374
+
375
+ EXAMPLES::
376
+
377
+ sage: L = LieAlgebra(QQ, 3, 'x')
378
+ sage: TestSuite(L).run(skip=['_test_elements']) # _test_monomial_coefficients fails
379
+ """
380
+ self._names = names
381
+ self._indices = index_set
382
+ Parent.__init__(self, base=R, names=names,
383
+ category=LieAlgebras(R).WithRealizations())
384
+
385
+ def _repr_(self):
386
+ """
387
+ Return a string representation of ``self``.
388
+
389
+ EXAMPLES::
390
+
391
+ sage: LieAlgebra(QQ, 3, 'x')
392
+ Free Lie algebra generated by (x0, x1, x2) over Rational Field
393
+ """
394
+ n = tuple(map(LieGenerator, self._names, range(len(self._names)))) # To remove those stupid quote marks
395
+ return "Free Lie algebra generated by {} over {}".format(n, self.base_ring())
396
+
397
+ def _construct_UEA(self):
398
+ """
399
+ Construct the universal enveloping algebra of ``self``.
400
+
401
+ EXAMPLES::
402
+
403
+ sage: L.<x, y> = LieAlgebra(QQ)
404
+ sage: L._construct_UEA()
405
+ Free Algebra on 2 generators (x, y) over Rational Field
406
+ """
407
+ # TODO: Pass the index set along once FreeAlgebra accepts it
408
+ return FreeAlgebra(self.base_ring(), len(self._names), self._names)
409
+
410
+ def lie_algebra_generators(self):
411
+ """
412
+ Return the Lie algebra generators of ``self`` in the Lyndon basis.
413
+
414
+ EXAMPLES::
415
+
416
+ sage: L.<x, y> = LieAlgebra(QQ)
417
+ sage: L.lie_algebra_generators()
418
+ Finite family {'x': x, 'y': y}
419
+ sage: L.lie_algebra_generators()['x'].parent()
420
+ Free Lie algebra generated by (x, y) over Rational Field in the Lyndon basis
421
+ """
422
+ return self.Lyndon().lie_algebra_generators()
423
+
424
+ def gens(self) -> tuple:
425
+ """
426
+ Return the generators of ``self`` in the Lyndon basis.
427
+
428
+ EXAMPLES::
429
+
430
+ sage: L.<x, y> = LieAlgebra(QQ)
431
+ sage: L.gens()
432
+ (x, y)
433
+ sage: L.gens()[0].parent()
434
+ Free Lie algebra generated by (x, y) over Rational Field in the Lyndon basis
435
+ """
436
+ return self.Lyndon().gens()
437
+
438
+ def gen(self, i):
439
+ """
440
+ Return the ``i``-th generator of ``self`` in the Lyndon basis.
441
+
442
+ EXAMPLES::
443
+
444
+ sage: L.<x, y> = LieAlgebra(QQ)
445
+ sage: L.gen(0)
446
+ x
447
+ sage: L.gen(1)
448
+ y
449
+ sage: L.gen(0).parent()
450
+ Free Lie algebra generated by (x, y) over Rational Field in the Lyndon basis
451
+ """
452
+ return self.gens()[i]
453
+
454
+ def a_realization(self):
455
+ r"""
456
+ Return a particular realization of ``self`` (the Lyndon basis).
457
+
458
+ EXAMPLES::
459
+
460
+ sage: L.<x, y> = LieAlgebra(QQ)
461
+ sage: L.a_realization()
462
+ Free Lie algebra generated by (x, y) over Rational Field in the Lyndon basis
463
+ """
464
+ return self.Lyndon()
465
+
466
+ class Hall(FreeLieBasis_abstract):
467
+ """
468
+ The free Lie algebra in the Hall basis.
469
+
470
+ The basis keys are objects of class
471
+ :class:`~sage.algebras.lie_algebras.lie_algebra_element.LieObject`,
472
+ each of which is either a
473
+ :class:`~sage.algebras.lie_algebras.lie_algebra_element.LieGenerator`
474
+ (in degree `1`) or a
475
+ :class:`~sage.algebras.lie_algebras.lie_algebra_element.GradedLieBracket`
476
+ (in degree `> 1`).
477
+ """
478
+ def __init__(self, lie):
479
+ r"""
480
+ EXAMPLES::
481
+
482
+ sage: L = LieAlgebra(QQ, 3, 'x')
483
+ sage: TestSuite(L.Hall()).run(skip=['_test_elements']) # _test_monomial_coefficients fails
484
+ """
485
+ experimental_warning(16823, "The Hall basis has not been fully proven correct,"
486
+ " but currently no bugs are known")
487
+ FreeLieBasis_abstract.__init__(self, lie, "Hall")
488
+
489
+ # Register the coercions
490
+ Lyn = lie.Lyndon()
491
+ Hom_HL = Hom(self, Lyn)
492
+ Hom_LH = Hom(Lyn, self)
493
+ LieAlgebraHomomorphism_im_gens(Hom_HL, Lyn.gens()).register_as_coercion()
494
+ LieAlgebraHomomorphism_im_gens(Hom_LH, self.gens()).register_as_coercion()
495
+
496
+ @cached_method
497
+ def _generate_hall_set(self, k):
498
+ """
499
+ Generate the Hall set of grade ``k``.
500
+
501
+ OUTPUT: a sorted tuple of :class:`GradedLieBracket` elements
502
+
503
+ EXAMPLES::
504
+
505
+ sage: L = LieAlgebra(QQ, 3, 'x')
506
+ sage: H = L.Hall()
507
+ sage: H._generate_hall_set(3)
508
+ ([x0, [x0, x1]],
509
+ [x0, [x0, x2]],
510
+ [x1, [x0, x1]],
511
+ [x1, [x0, x2]],
512
+ [x1, [x1, x2]],
513
+ [x2, [x0, x1]],
514
+ [x2, [x0, x2]],
515
+ [x2, [x1, x2]])
516
+ """
517
+ if k <= 0:
518
+ return ()
519
+ if k == 1:
520
+ return tuple(map(LieGenerator, self.variable_names(),
521
+ range(len(self.variable_names()))))
522
+ if k == 2:
523
+ basis = self._generate_hall_set(1)
524
+ ret = [GradedLieBracket(a, b, 2) for i, a in enumerate(basis)
525
+ for b in basis[i+1:]]
526
+ return tuple(ret)
527
+
528
+ # We don't want to do the middle when we're even, so we add 1 and
529
+ # take the floor after dividing by 2.
530
+ ret = [GradedLieBracket(a, b, k) for i in range(1, (k+1) // 2)
531
+ for a in self._generate_hall_set(i)
532
+ for b in self._generate_hall_set(k-i)
533
+ if b._left <= a]
534
+
535
+ # Special case for when k = 4, we get the pairs [[a, b], [x, y]]
536
+ # where a,b,x,y are all grade 1 elements. Thus if we take
537
+ # [a, b] < [x, y], we will always be in the Hall set.
538
+ if k == 4:
539
+ basis = self._generate_hall_set(2)
540
+ for i, a in enumerate(basis):
541
+ for b in basis[i+1:]:
542
+ ret.append(GradedLieBracket(a, b, k))
543
+ # Do the middle case when we are even and k > 4
544
+ elif k % 2 == 0:
545
+ basis = self._generate_hall_set(k // 2) # grade >= 2
546
+ for i, a in enumerate(basis):
547
+ for b in basis[i+1:]:
548
+ if b._left <= a:
549
+ ret.append(GradedLieBracket(a, b, k))
550
+
551
+ # We sort the returned tuple in order to make computing the higher
552
+ # graded parts of the Hall set easier.
553
+ return tuple(sorted(ret))
554
+
555
+ @cached_method
556
+ def graded_basis(self, k):
557
+ """
558
+ Return the basis for the ``k``-th graded piece of ``self``.
559
+
560
+ EXAMPLES::
561
+
562
+ sage: L = LieAlgebra(QQ, 'x,y,z')
563
+ sage: H = L.Hall()
564
+ sage: H.graded_basis(2)
565
+ ([x, y], [x, z], [y, z])
566
+ sage: H.graded_basis(4)
567
+ ([x, [x, [x, y]]], [x, [x, [x, z]]],
568
+ [y, [x, [x, y]]], [y, [x, [x, z]]],
569
+ [y, [y, [x, y]]], [y, [y, [x, z]]],
570
+ [y, [y, [y, z]]], [z, [x, [x, y]]],
571
+ [z, [x, [x, z]]], [z, [y, [x, y]]],
572
+ [z, [y, [x, z]]], [z, [y, [y, z]]],
573
+ [z, [z, [x, y]]], [z, [z, [x, z]]],
574
+ [z, [z, [y, z]]], [[x, y], [x, z]],
575
+ [[x, y], [y, z]], [[x, z], [y, z]])
576
+
577
+ TESTS::
578
+
579
+ sage: L = LieAlgebra(QQ, 'x,y,z', 3)
580
+ sage: H = L.Hall()
581
+ sage: [H.graded_dimension(i) for i in range(1, 11)]
582
+ [3, 3, 8, 18, 48, 116, 312, 810, 2184, 5880]
583
+ sage: [len(H.graded_basis(i)) for i in range(1, 11)]
584
+ [3, 3, 8, 18, 48, 116, 312, 810, 2184, 5880]
585
+ """
586
+ one = self.base_ring().one()
587
+ return tuple([self.element_class(self, {x: one})
588
+ for x in self._generate_hall_set(k)])
589
+
590
+ # We require l < r because it is a requirement and to make the
591
+ # caching more efficient
592
+ @cached_method
593
+ def _rewrite_bracket(self, l, r):
594
+ """
595
+ Rewrite the bracket ``[l, r]`` in terms of the Hall basis.
596
+
597
+ INPUT:
598
+
599
+ - ``l``, ``r`` -- two keys of the Hall basis with ``l < r``
600
+
601
+ OUTPUT:
602
+
603
+ A dictionary ``{b: c}`` where ``b`` is a Hall basis key
604
+ and ``c`` is the corresponding coefficient.
605
+
606
+ EXAMPLES::
607
+
608
+ sage: L = LieAlgebra(QQ, 'x,y,z')
609
+ sage: H = L.Hall()
610
+ sage: x,y,z = H.gens()
611
+ sage: H([x, [y, [z, x]]]) # indirect doctest
612
+ -[y, [x, [x, z]]] - [[x, y], [x, z]]
613
+ """
614
+ # NOTE: If r is not a graded Lie bracket, then l cannot be a
615
+ # graded Lie bracket by the order respecting the grading
616
+ if not isinstance(r, GradedLieBracket) or r._left <= l:
617
+ # Compute the grade of the new element
618
+ grade = 0
619
+ # If not a graded Lie bracket, it must be a generator so the grade is 1
620
+ if isinstance(l, GradedLieBracket):
621
+ grade += l._grade
622
+ else:
623
+ grade += 1
624
+ if isinstance(r, GradedLieBracket):
625
+ grade += r._grade
626
+ else:
627
+ grade += 1
628
+ return {GradedLieBracket(l, r, grade): self.base_ring().one()}
629
+
630
+ ret = {}
631
+
632
+ # Rewrite [a, [b, c]] = [b, [a, c]] + [[a, b], c] with a < b < c
633
+ # Compute the left summand
634
+ for m, inner_coeff in self._rewrite_bracket(l, r._right).items():
635
+ if r._left == m:
636
+ continue
637
+ elif r._left < m:
638
+ x, y = r._left, m
639
+ else: # r._left > m
640
+ x, y = m, r._left
641
+ inner_coeff = -inner_coeff
642
+ for b_elt, coeff in self._rewrite_bracket(x, y).items():
643
+ ret[b_elt] = ret.get(b_elt, 0) + coeff * inner_coeff
644
+
645
+ # Compute the right summand
646
+ for m, inner_coeff in self._rewrite_bracket(l, r._left).items():
647
+ if m == r._right:
648
+ continue
649
+ elif m < r._right:
650
+ x, y = m, r._right
651
+ else: # m > r._right
652
+ x, y = r._right, m
653
+ inner_coeff = -inner_coeff
654
+ for b_elt, coeff in self._rewrite_bracket(x, y).items():
655
+ ret[b_elt] = ret.get(b_elt, 0) + coeff * inner_coeff
656
+
657
+ return ret
658
+
659
+ class Lyndon(FreeLieBasis_abstract):
660
+ """
661
+ The free Lie algebra in the Lyndon basis.
662
+
663
+ The basis keys are objects of class
664
+ :class:`~sage.algebras.lie_algebras.lie_algebra_element.LieObject`,
665
+ each of which is either a
666
+ :class:`~sage.algebras.lie_algebras.lie_algebra_element.LieGenerator`
667
+ (in degree `1`) or a
668
+ :class:`~sage.algebras.lie_algebras.lie_algebra_element.LyndonBracket`
669
+ (in degree `> 1`).
670
+
671
+ TESTS:
672
+
673
+ We check that :issue:`27069` is fixed::
674
+
675
+ sage: Lzxy = LieAlgebra(QQ, ['z','x','y']).Lyndon()
676
+ sage: z,x,y = Lzxy.gens(); z,x,y
677
+ (z, x, y)
678
+ sage: z.bracket(x)
679
+ [z, x]
680
+ sage: y.bracket(z)
681
+ -[z, y]
682
+ """
683
+ def __init__(self, lie):
684
+ r"""
685
+ EXAMPLES::
686
+
687
+ sage: L = LieAlgebra(QQ, 3, 'x')
688
+ sage: TestSuite(L.Lyndon()).run(skip=['_test_elements']) # _test_monomial_coefficients fails
689
+ """
690
+ FreeLieBasis_abstract.__init__(self, lie, "Lyndon")
691
+
692
+ @cached_method
693
+ def _rewrite_bracket(self, l, r):
694
+ """
695
+ Rewrite the bracket ``[l, r]`` in terms of the Lyndon basis.
696
+
697
+ INPUT:
698
+
699
+ - ``l``, ``r`` -- two keys of the Lyndon basis such
700
+ that ``l < r``
701
+
702
+ OUTPUT:
703
+
704
+ A dictionary ``{b: c}`` where ``b`` is a Lyndon basis key
705
+ and ``c`` is the corresponding coefficient.
706
+
707
+ EXAMPLES::
708
+
709
+ sage: L = LieAlgebra(QQ, 'x,y,z')
710
+ sage: Lyn = L.Lyndon()
711
+ sage: x,y,z = Lyn.gens()
712
+ sage: Lyn([x, [y, [z, x]]]) # indirect doctest
713
+ [x, [[x, z], y]]
714
+ """
715
+ assert l < r, "Order mismatch %s > %s" % (l, r)
716
+
717
+ if self._is_basis_element(l, r):
718
+ # Compute the grade of the new element
719
+ grade = 0
720
+ # If not a graded Lie bracket, it must be a generator so the grade is 1
721
+ if isinstance(l, GradedLieBracket):
722
+ grade += l._grade
723
+ else:
724
+ grade += 1
725
+ if isinstance(r, GradedLieBracket):
726
+ grade += r._grade
727
+ else:
728
+ grade += 1
729
+ return {LyndonBracket(l, r, grade): self.base_ring().one()}
730
+
731
+ ret = {}
732
+
733
+ # Rewrite [[a, b], c] = [a, [b, c]] + [[a, c], b] with a < b < c
734
+ # with a = l._left, b = l._right and c = r.
735
+ # Here, we use the fact that deg(l) > 1, because
736
+ # if we had deg(l) == 1, then the
737
+ # "if self._is_basis_element(l, r)" would already have
738
+ # caught us.
739
+ # For a similar reason, we have b >= c.
740
+ # Compute the left summand
741
+ for m, inner_coeff in self._rewrite_bracket(l._right, r).items():
742
+ if l._left == m:
743
+ continue
744
+ elif l._left < m:
745
+ x, y = l._left, m
746
+ else: # l._left > m
747
+ x, y = m, l._left
748
+ inner_coeff = -inner_coeff
749
+ for b_elt, coeff in self._rewrite_bracket(x, y).items():
750
+ ret[b_elt] = ret.get(b_elt, 0) + coeff * inner_coeff
751
+
752
+ # Compute the right summand
753
+ for m, inner_coeff in self._rewrite_bracket(l._left, r).items():
754
+ if m == l._right:
755
+ continue
756
+ elif m < l._right:
757
+ x, y = m, l._right
758
+ else: # m > l._right
759
+ x, y = l._right, m
760
+ inner_coeff = -inner_coeff
761
+ for b_elt, coeff in self._rewrite_bracket(x, y).items():
762
+ ret[b_elt] = ret.get(b_elt, 0) + coeff * inner_coeff
763
+
764
+ return ret
765
+
766
+ def _is_basis_element(self, l, r):
767
+ """
768
+ Check if the element ``[l, r]`` formed from
769
+ two basis keys ``l`` and ``r`` is a basis key.
770
+
771
+ EXAMPLES::
772
+
773
+ sage: Lyn = LieAlgebra(QQ, 'x,y,z').Lyndon()
774
+ sage: all(Lyn._is_basis_element(*x.list()[0][0]) for x in Lyn.graded_basis(4))
775
+ True
776
+ """
777
+ w = tuple(l._index_word + r._index_word)
778
+ if not is_lyndon(w):
779
+ return False
780
+ b = self._standard_bracket(w)
781
+ return b._left == l and b._right == r
782
+
783
+ @cached_method
784
+ def _standard_bracket(self, lw):
785
+ """
786
+ Return the standard bracketing (a :class:`LieObject`)
787
+ of a Lyndon word ``lw`` using the Lie bracket.
788
+
789
+ INPUT:
790
+
791
+ - ``lw`` -- tuple of positive integers that correspond to
792
+ the indices of the generators
793
+
794
+ EXAMPLES::
795
+
796
+ sage: L = LieAlgebra(QQ, 'x', 3)
797
+ sage: Lyn = L.Lyndon()
798
+ sage: Lyn._standard_bracket((0, 0, 1))
799
+ [x0, [x0, x1]]
800
+ sage: Lyn._standard_bracket((0, 1, 1))
801
+ [[x0, x1], x1]
802
+ """
803
+ if len(lw) == 1:
804
+ i = lw[0]
805
+ return LieGenerator(self._indices[i], i)
806
+
807
+ for i in range(1, len(lw)):
808
+ if is_lyndon(lw[i:]):
809
+ return LyndonBracket(self._standard_bracket(lw[:i]),
810
+ self._standard_bracket(lw[i:]),
811
+ len(lw))
812
+
813
+ @cached_method
814
+ def graded_basis(self, k):
815
+ """
816
+ Return the basis for the ``k``-th graded piece of ``self``.
817
+
818
+ EXAMPLES::
819
+
820
+ sage: L = LieAlgebra(QQ, 'x', 3)
821
+ sage: Lyn = L.Lyndon()
822
+ sage: Lyn.graded_basis(1)
823
+ (x0, x1, x2)
824
+ sage: Lyn.graded_basis(2)
825
+ ([x0, x1], [x0, x2], [x1, x2])
826
+ sage: Lyn.graded_basis(4)
827
+ ([x0, [x0, [x0, x1]]],
828
+ [x0, [x0, [x0, x2]]],
829
+ [x0, [[x0, x1], x1]],
830
+ [x0, [x0, [x1, x2]]],
831
+ [x0, [[x0, x2], x1]],
832
+ [x0, [[x0, x2], x2]],
833
+ [[x0, x1], [x0, x2]],
834
+ [[[x0, x1], x1], x1],
835
+ [x0, [x1, [x1, x2]]],
836
+ [[x0, [x1, x2]], x1],
837
+ [x0, [[x1, x2], x2]],
838
+ [[[x0, x2], x1], x1],
839
+ [[x0, x2], [x1, x2]],
840
+ [[[x0, x2], x2], x1],
841
+ [[[x0, x2], x2], x2],
842
+ [x1, [x1, [x1, x2]]],
843
+ [x1, [[x1, x2], x2]],
844
+ [[[x1, x2], x2], x2])
845
+
846
+ TESTS::
847
+
848
+ sage: L = LieAlgebra(QQ, 'x,y,z', 3)
849
+ sage: Lyn = L.Lyndon()
850
+ sage: [Lyn.graded_dimension(i) for i in range(1, 11)]
851
+ [3, 3, 8, 18, 48, 116, 312, 810, 2184, 5880]
852
+ sage: [len(Lyn.graded_basis(i)) for i in range(1, 11)]
853
+ [3, 3, 8, 18, 48, 116, 312, 810, 2184, 5880]
854
+ """
855
+ if k <= 0 or not self._indices:
856
+ return []
857
+
858
+ names = self.variable_names()
859
+ one = self.base_ring().one()
860
+ if k == 1:
861
+ return tuple(self.element_class(self, {LieGenerator(n, k): one})
862
+ for k, n in enumerate(names))
863
+
864
+ from sage.combinat.combinat_cython import lyndon_word_iterator
865
+ n = len(self._indices)
866
+ ret = []
867
+ for lw in lyndon_word_iterator(n, k):
868
+ b = self._standard_bracket(tuple(lw))
869
+ ret.append(self.element_class(self, {b: one}))
870
+ return tuple(ret)
871
+
872
+ def pbw_basis(self, **kwds):
873
+ """
874
+ Return the Poincare-Birkhoff-Witt basis corresponding to ``self``.
875
+
876
+ EXAMPLES::
877
+
878
+ sage: L = LieAlgebra(QQ, 'x,y,z', 3)
879
+ sage: Lyn = L.Lyndon()
880
+ sage: Lyn.pbw_basis()
881
+ The Poincare-Birkhoff-Witt basis of Free Algebra on 3 generators (x, y, z) over Rational Field
882
+ """
883
+ return self.universal_enveloping_algebra().pbw_basis()
884
+
885
+ poincare_birkhoff_witt_basis = pbw_basis
886
+
887
+
888
+ #######################################
889
+ # Category for the realizations
890
+
891
+ class FreeLieAlgebraBases(Category_realization_of_parent):
892
+ r"""
893
+ The category of bases of a free Lie algebra.
894
+ """
895
+ def __init__(self, base):
896
+ r"""
897
+ Initialize the bases of a free Lie algebra.
898
+
899
+ INPUT:
900
+
901
+ - ``base`` -- a free Lie algebra
902
+
903
+ TESTS::
904
+
905
+ sage: from sage.algebras.lie_algebras.free_lie_algebra import FreeLieAlgebraBases
906
+ sage: L.<x, y> = LieAlgebra(QQ)
907
+ sage: bases = FreeLieAlgebraBases(L)
908
+ sage: L.Hall() in bases
909
+ True
910
+ """
911
+ Category_realization_of_parent.__init__(self, base)
912
+
913
+ def _repr_(self):
914
+ r"""
915
+ Return the representation of ``self``.
916
+
917
+ EXAMPLES::
918
+
919
+ sage: from sage.algebras.lie_algebras.free_lie_algebra import FreeLieAlgebraBases
920
+ sage: L.<x, y> = LieAlgebra(QQ)
921
+ sage: FreeLieAlgebraBases(L)
922
+ Category of bases of Free Lie algebra generated by (x, y) over Rational Field
923
+ """
924
+ return "Category of bases of %s" % self.base()
925
+
926
+ def super_categories(self):
927
+ r"""
928
+ The super categories of ``self``.
929
+
930
+ EXAMPLES::
931
+
932
+ sage: from sage.algebras.lie_algebras.free_lie_algebra import FreeLieAlgebraBases
933
+ sage: L.<x, y> = LieAlgebra(QQ)
934
+ sage: bases = FreeLieAlgebraBases(L)
935
+ sage: bases.super_categories()
936
+ [Category of Lie algebras with basis over Rational Field,
937
+ Category of realizations of Free Lie algebra generated by (x, y) over Rational Field]
938
+ """
939
+ return [LieAlgebras(self.base().base_ring()).WithBasis(), Realizations(self.base())]
940
+
941
+
942
+ def is_lyndon(w) -> bool:
943
+ """
944
+ Modified form of ``Word(w).is_lyndon()`` which uses the default order
945
+ (this will either be the natural integer order or lex order) and assumes
946
+ the input ``w`` behaves like a nonempty list.
947
+
948
+ This function here is designed for speed.
949
+
950
+ EXAMPLES::
951
+
952
+ sage: from sage.algebras.lie_algebras.free_lie_algebra import is_lyndon
953
+ sage: is_lyndon([1])
954
+ True
955
+ sage: is_lyndon([1,3,1])
956
+ False
957
+ sage: is_lyndon((2,2,3))
958
+ True
959
+ sage: all(is_lyndon(x) for x in LyndonWords(3, 5))
960
+ True
961
+ sage: all(is_lyndon(x) for x in LyndonWords(6, 4))
962
+ True
963
+ """
964
+ i = 0
965
+ for let in w[1:]:
966
+ if w[i] < let:
967
+ i = 0
968
+ elif w[i] == let:
969
+ i += 1
970
+ else:
971
+ # we found the first word in the Lyndon factorization.
972
+ return False
973
+ return i == 0