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,756 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ # sage.doctest: needs sage.combinat (because all doctests use FreeAlgebra, SymmetricGroupAlgebra, etc.)
3
+ """
4
+ Hochschild Complexes
5
+ """
6
+
7
+ ########################################################################
8
+ # Copyright (C) 2014 Travis Scrimshaw <tscrim at ucdavis.edu>
9
+ #
10
+ # Distributed under the terms of the GNU General Public License (GPL)
11
+ # as published by the Free Software Foundation; either version 2 of
12
+ # the License, or (at your option) any later version.
13
+ #
14
+ # https://www.gnu.org/licenses/
15
+ ########################################################################
16
+
17
+ from sage.misc.cachefunc import cached_method
18
+ from sage.structure.unique_representation import UniqueRepresentation
19
+ from sage.structure.parent import Parent
20
+ from sage.structure.element import ModuleElement, parent
21
+ from sage.structure.richcmp import richcmp
22
+ from sage.categories.chain_complexes import ChainComplexes
23
+ from sage.categories.tensor import tensor
24
+ from sage.combinat.free_module import CombinatorialFreeModule
25
+ from sage.homology.chain_complex import ChainComplex, Chain_class
26
+
27
+
28
+ class HochschildComplex(UniqueRepresentation, Parent):
29
+ r"""
30
+ The Hochschild complex.
31
+
32
+ Let `A` be an algebra over a commutative ring `R` such
33
+ that `A` a projective `R`-module, and `M` an `A`-bimodule.
34
+ The *Hochschild complex* is the chain complex given by
35
+
36
+ .. MATH::
37
+
38
+ C_n(A, M) := M \otimes A^{\otimes n}
39
+
40
+ with the boundary operators given as follows. For fixed `n`, define
41
+ the face maps
42
+
43
+ .. MATH::
44
+
45
+ f_{n,i}(m \otimes a_1 \otimes \cdots \otimes a_n) = \begin{cases}
46
+ m a_1 \otimes \cdots \otimes a_n & \text{if } i = 0, \\
47
+ a_n m \otimes a_1 \otimes \cdots \otimes a_{n-1}
48
+ & \text{if } i = n, \\
49
+ m \otimes a_1 \otimes \cdots \otimes a_i a_{i+1} \otimes
50
+ \cdots \otimes a_n & \text{otherwise.}
51
+ \end{cases}
52
+
53
+ We define the boundary operators as
54
+
55
+ .. MATH::
56
+
57
+ d_n = \sum_{i=0}^n (-1)^i f_{n,i}.
58
+
59
+ The *Hochschild homology* of `A` is the homology of this complex.
60
+ Alternatively, the Hochschild homology can be described by
61
+ `HH_n(A, M) = \operatorname{Tor}_n^{A^e}(A, M)`, where
62
+ `A^e = A \otimes A^o` (`A^o` is the opposite algebra of `A`)
63
+ is the enveloping algebra of `A`.
64
+
65
+ *Hochschild cohomology* is the homology of the dual complex and
66
+ can be described by `HH^n(A, M) = \operatorname{Ext}^n_{A^e}(A, M)`.
67
+
68
+ Another perspective on Hochschild homology is that `f_{n,i}`
69
+ make the family `C_n(A, M)` a simplicial object in the
70
+ category of `R`-modules, and the degeneracy maps are
71
+
72
+ .. MATH::
73
+
74
+ s_i(a_0 \otimes \cdots \otimes a_n) =
75
+ a_0 \otimes \cdots \otimes a_i \otimes 1 \otimes a_{i+1}
76
+ \otimes \cdots \otimes a_n
77
+
78
+ The Hochschild homology can also be constructed as the homology
79
+ of this simplicial module.
80
+
81
+ REFERENCES:
82
+
83
+ - :wikipedia:`Hochschild_homology`
84
+ - https://ncatlab.org/nlab/show/Hochschild+cohomology
85
+ - [Red2001]_
86
+ """
87
+ def __init__(self, A, M):
88
+ """
89
+ Initialize ``self``.
90
+
91
+ EXAMPLES::
92
+
93
+ sage: SGA = SymmetricGroupAlgebra(QQ, 3)
94
+ sage: T = SGA.trivial_representation()
95
+ sage: H = SGA.hochschild_complex(T)
96
+
97
+ sage: H.category()
98
+ Category of chain complexes over Rational Field
99
+ sage: H in ChainComplexes(QQ)
100
+ True
101
+
102
+ sage: TestSuite(H).run()
103
+ """
104
+ self._A = A
105
+ self._M = M
106
+ Parent.__init__(self, base=A.base_ring(),
107
+ category=ChainComplexes(A.base_ring()))
108
+
109
+ def _repr_(self):
110
+ """
111
+ Return a string representation of ``self``.
112
+
113
+ EXAMPLES::
114
+
115
+ sage: SGA = SymmetricGroupAlgebra(QQ, 3)
116
+ sage: T = SGA.trivial_representation()
117
+ sage: T.rename('Trivial representation of SGA')
118
+ sage: SGA.hochschild_complex(T)
119
+ Hochschild complex of Symmetric group algebra of order 3 over Rational Field
120
+ with coefficients in Trivial representation of SGA
121
+ sage: T.rename() # reset the name
122
+ """
123
+ return "Hochschild complex of {} with coefficients in {}".format(self._A, self._M)
124
+
125
+ def _latex_(self):
126
+ r"""
127
+ Return a latex representation of ``self``.
128
+
129
+ EXAMPLES::
130
+
131
+ sage: SGA = SymmetricGroupAlgebra(QQ, 3)
132
+ sage: T = SGA.trivial_representation()
133
+ sage: H = SGA.hochschild_complex(T)
134
+ sage: latex(H)
135
+ C_{\bullet}\left(..., ...\right)
136
+ """
137
+ from sage.misc.latex import latex
138
+ return "C_{{\\bullet}}\\left({}, {}\\right)".format(latex(self._A), latex(self._M))
139
+
140
+ def algebra(self):
141
+ """
142
+ Return the defining algebra of ``self``.
143
+
144
+ EXAMPLES::
145
+
146
+ sage: SGA = SymmetricGroupAlgebra(QQ, 3)
147
+ sage: T = SGA.trivial_representation()
148
+ sage: H = SGA.hochschild_complex(T)
149
+ sage: H.algebra()
150
+ Symmetric group algebra of order 3 over Rational Field
151
+ """
152
+ return self._A
153
+
154
+ def coefficients(self):
155
+ """
156
+ Return the coefficients of ``self``.
157
+
158
+ EXAMPLES::
159
+
160
+ sage: SGA = SymmetricGroupAlgebra(QQ, 3)
161
+ sage: T = SGA.trivial_representation()
162
+ sage: H = SGA.hochschild_complex(T)
163
+ sage: H.coefficients()
164
+ Trivial representation of Standard permutations of 3 over Rational Field
165
+ """
166
+ return self._M
167
+
168
+ def module(self, d):
169
+ """
170
+ Return the module in degree ``d``.
171
+
172
+ EXAMPLES::
173
+
174
+ sage: SGA = SymmetricGroupAlgebra(QQ, 3)
175
+ sage: T = SGA.trivial_representation()
176
+ sage: H = SGA.hochschild_complex(T)
177
+ sage: H.module(0)
178
+ Trivial representation of Standard permutations of 3 over Rational Field
179
+ sage: H.module(1)
180
+ Trivial representation of Standard permutations of 3 over Rational Field
181
+ # Symmetric group algebra of order 3 over Rational Field
182
+ sage: H.module(2)
183
+ Trivial representation of Standard permutations of 3 over Rational Field
184
+ # Symmetric group algebra of order 3 over Rational Field
185
+ # Symmetric group algebra of order 3 over Rational Field
186
+ """
187
+ if d < 0:
188
+ raise ValueError("only defined for nonnegative degree")
189
+ return tensor([self._M] + [self._A] * d)
190
+
191
+ @cached_method
192
+ def trivial_module(self):
193
+ """
194
+ Return the trivial module of ``self``.
195
+
196
+ EXAMPLES::
197
+
198
+ sage: E.<x,y> = ExteriorAlgebra(QQ)
199
+ sage: H = E.hochschild_complex(E)
200
+ sage: H.trivial_module()
201
+ Free module generated by {} over Rational Field
202
+ """
203
+ return CombinatorialFreeModule(self._A.base_ring(), [])
204
+
205
+ def boundary(self, d):
206
+ """
207
+ Return the boundary operator in degree ``d``.
208
+
209
+ EXAMPLES::
210
+
211
+ sage: E.<x,y> = ExteriorAlgebra(QQ)
212
+ sage: H = E.hochschild_complex(E)
213
+ sage: d1 = H.boundary(1)
214
+ sage: z = d1.domain().an_element(); z
215
+ 2*1 # 1 + 2*1 # x + 3*1 # y
216
+ sage: d1(z)
217
+ 0
218
+ sage: d1.matrix()
219
+ [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
220
+ [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
221
+ [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
222
+ [ 0 0 0 0 0 0 2 0 0 -2 0 0 0 0 0 0]
223
+
224
+ sage: s = SymmetricFunctions(QQ).s()
225
+ sage: H = s.hochschild_complex(s)
226
+ sage: d1 = H.boundary(1)
227
+ sage: x = d1.domain().an_element(); x
228
+ 2*s[] # s[] + 2*s[] # s[1] + 3*s[] # s[2]
229
+ sage: d1(x) # needs lrcalc_python
230
+ 0
231
+ sage: y = tensor([s.an_element(), s.an_element()])
232
+ sage: d1(y) # needs lrcalc_python
233
+ 0
234
+ sage: z = tensor([s[2,1] + s[3], s.an_element()])
235
+ sage: d1(z) # needs lrcalc_python
236
+ 0
237
+
238
+ TESTS::
239
+
240
+ sage: def test_complex(H, n):
241
+ ....: phi = H.boundary(n)
242
+ ....: psi = H.boundary(n+1)
243
+ ....: comp = phi * psi
244
+ ....: zero = H.module(n-1).zero()
245
+ ....: return all(comp(b) == zero for b in H.module(n+1).basis())
246
+
247
+ sage: SGA = SymmetricGroupAlgebra(QQ, 3)
248
+ sage: H = SGA.hochschild_complex(SGA)
249
+ sage: test_complex(H, 1)
250
+ True
251
+ sage: test_complex(H, 2)
252
+ True
253
+ sage: test_complex(H, 3) # long time
254
+ True
255
+
256
+ sage: E.<x,y> = ExteriorAlgebra(QQ)
257
+ sage: H = E.hochschild_complex(E)
258
+ sage: test_complex(H, 1)
259
+ True
260
+ sage: test_complex(H, 2)
261
+ True
262
+ sage: test_complex(H, 3)
263
+ True
264
+ """
265
+ R = self._A.base_ring()
266
+ one = R.one()
267
+ if d == 0:
268
+ t = self.trivial_module()
269
+ zero = t.zero()
270
+ return self.module(0).module_morphism(lambda x: zero, codomain=t)
271
+ Fd = self.module(d-1)
272
+ Fd1 = self.module(d)
273
+ mone = -one
274
+
275
+ def on_basis(k):
276
+ p = self._M.monomial(k[0]) * self._A.monomial(k[1])
277
+ ret = Fd._from_dict({(m,) + k[2:]: c for m, c in p}, remove_zeros=False)
278
+ for i in range(1, d):
279
+ p = self._A.monomial(k[i]) * self._A.monomial(k[i+1])
280
+ ret += mone**i * Fd._from_dict({k[:i] + (m,) + k[i+2:]: c
281
+ for m, c in p}, remove_zeros=False)
282
+ p = self._A.monomial(k[-1]) * self._M.monomial(k[0])
283
+ ret += mone**d * Fd._from_dict({(m,) + k[1:-1]: c for m, c in p},
284
+ remove_zeros=False)
285
+ return ret
286
+ return Fd1.module_morphism(on_basis, codomain=Fd)
287
+
288
+ differential = boundary
289
+
290
+ def coboundary(self, d):
291
+ """
292
+ Return the coboundary morphism of degree ``d``.
293
+
294
+ EXAMPLES::
295
+
296
+ sage: E.<x,y> = ExteriorAlgebra(QQ)
297
+ sage: H = E.hochschild_complex(E)
298
+ sage: del1 = H.coboundary(1)
299
+ sage: z = del1.domain().an_element(); z
300
+ 2 + 2*x + 3*y
301
+ sage: del1(z)
302
+ 0
303
+ sage: del1.matrix()
304
+ [ 0 0 0 0]
305
+ [ 0 0 0 0]
306
+ [ 0 0 0 0]
307
+ [ 0 0 0 0]
308
+ [ 0 0 0 0]
309
+ [ 0 0 0 0]
310
+ [ 0 0 0 2]
311
+ [ 0 0 0 0]
312
+ [ 0 0 0 0]
313
+ [ 0 0 0 -2]
314
+ [ 0 0 0 0]
315
+ [ 0 0 0 0]
316
+ [ 0 0 0 0]
317
+ [ 0 0 0 0]
318
+ [ 0 0 0 0]
319
+ [ 0 0 0 0]
320
+
321
+ TESTS::
322
+
323
+ sage: def test_complex(H, n):
324
+ ....: phi = H.coboundary(n)
325
+ ....: psi = H.coboundary(n+1)
326
+ ....: comp = psi * phi
327
+ ....: zero = H.module(n+1).zero()
328
+ ....: return all(comp(b) == zero for b in H.module(n-1).basis())
329
+
330
+ sage: SGA = SymmetricGroupAlgebra(QQ, 3)
331
+ sage: H = SGA.hochschild_complex(SGA)
332
+ sage: test_complex(H, 1)
333
+ True
334
+ sage: test_complex(H, 2)
335
+ True
336
+
337
+ sage: E.<x,y> = ExteriorAlgebra(QQ)
338
+ sage: H = E.hochschild_complex(E)
339
+ sage: test_complex(H, 1)
340
+ True
341
+ sage: test_complex(H, 2)
342
+ True
343
+ sage: test_complex(H, 3)
344
+ True
345
+ """
346
+ if self._A.category() is not self._A.category().FiniteDimensional():
347
+ raise NotImplementedError("the algebra must be finite dimensional")
348
+ bdry = self.boundary(d)
349
+ dom = bdry.domain()
350
+ cod = bdry.codomain()
351
+ return cod.module_morphism(matrix=bdry.matrix().transpose(), codomain=dom)
352
+
353
+ def homology(self, d):
354
+ r"""
355
+ Return the ``d``-th homology group.
356
+
357
+ EXAMPLES::
358
+
359
+ sage: E.<x,y> = ExteriorAlgebra(QQ)
360
+ sage: H = E.hochschild_complex(E)
361
+ sage: H.homology(0)
362
+ Vector space of dimension 3 over Rational Field
363
+ sage: H.homology(1)
364
+ Vector space of dimension 4 over Rational Field
365
+ sage: H.homology(2)
366
+ Vector space of dimension 6 over Rational Field
367
+
368
+ sage: SGA = SymmetricGroupAlgebra(QQ, 3)
369
+ sage: T = SGA.trivial_representation()
370
+ sage: H = SGA.hochschild_complex(T)
371
+ sage: H.homology(0)
372
+ Vector space of dimension 1 over Rational Field
373
+ sage: H.homology(1)
374
+ Vector space of dimension 0 over Rational Field
375
+ sage: H.homology(2)
376
+ Vector space of dimension 0 over Rational Field
377
+
378
+ When working over general rings (except `\ZZ`) and we can
379
+ construct a unitriangular basis for the image quotient,
380
+ we fallback to a slower implementation using (combinatorial)
381
+ free modules::
382
+
383
+ sage: R.<x,y> = QQ[]
384
+ sage: SGA = SymmetricGroupAlgebra(R, 2)
385
+ sage: T = SGA.trivial_representation()
386
+ sage: H = SGA.hochschild_complex(T)
387
+ sage: H.homology(1) # needs sage.libs.singular
388
+ Free module generated by {}
389
+ over Multivariate Polynomial Ring in x, y over Rational Field
390
+ """
391
+ if self._A.category() is not self._A.category().FiniteDimensional():
392
+ raise NotImplementedError("the algebra must be finite dimensional")
393
+
394
+ maps = {d: self.boundary(d).matrix(), d+1: self.boundary(d+1).matrix()}
395
+ C = ChainComplex(maps, degree_of_differential=-1)
396
+ try:
397
+ return C.homology(d)
398
+ except NotImplementedError:
399
+ pass
400
+ # Fallback if we are not working over a field or \ZZ
401
+ bdry = self.boundary(d)
402
+ bdry1 = self.boundary(d+1)
403
+ ker = bdry.kernel()
404
+ im_retract = ker.submodule([ker.retract(b) for b in bdry1.image_basis()],
405
+ unitriangular=True)
406
+ return ker.quotient_module(im_retract)
407
+
408
+ def cohomology(self, d):
409
+ r"""
410
+ Return the ``d``-th cohomology group.
411
+
412
+ EXAMPLES::
413
+
414
+ sage: E.<x,y> = ExteriorAlgebra(QQ)
415
+ sage: H = E.hochschild_complex(E)
416
+ sage: H.cohomology(0)
417
+ Vector space of dimension 3 over Rational Field
418
+ sage: H.cohomology(1)
419
+ Vector space of dimension 4 over Rational Field
420
+ sage: H.cohomology(2)
421
+ Vector space of dimension 6 over Rational Field
422
+
423
+ sage: SGA = SymmetricGroupAlgebra(QQ, 3)
424
+ sage: T = SGA.trivial_representation()
425
+ sage: H = SGA.hochschild_complex(T)
426
+ sage: H.cohomology(0)
427
+ Vector space of dimension 1 over Rational Field
428
+ sage: H.cohomology(1)
429
+ Vector space of dimension 0 over Rational Field
430
+ sage: H.cohomology(2)
431
+ Vector space of dimension 0 over Rational Field
432
+
433
+ When working over general rings (except `\ZZ`) and we can
434
+ construct a unitriangular basis for the image quotient,
435
+ we fallback to a slower implementation using (combinatorial)
436
+ free modules::
437
+
438
+ sage: R.<x,y> = QQ[]
439
+ sage: SGA = SymmetricGroupAlgebra(R, 2)
440
+ sage: T = SGA.trivial_representation()
441
+ sage: H = SGA.hochschild_complex(T)
442
+ sage: H.cohomology(1) # needs sage.libs.singular
443
+ Free module generated by {}
444
+ over Multivariate Polynomial Ring in x, y over Rational Field
445
+ """
446
+ if self._A.category() is not self._A.category().FiniteDimensional():
447
+ raise NotImplementedError("the algebra must be finite dimensional")
448
+
449
+ maps = {d+1: self.coboundary(d+1).matrix(), d: self.coboundary(d).matrix()}
450
+ C = ChainComplex(maps, degree_of_differential=1)
451
+ try:
452
+ return C.homology(d+1)
453
+ except NotImplementedError:
454
+ pass
455
+ # Fallback if we are not working over a field or \ZZ
456
+ cb = self.coboundary(d)
457
+ cb1 = self.coboundary(d+1)
458
+ ker = cb1.kernel()
459
+ im_retract = ker.submodule([ker.retract(b) for b in cb.image_basis()],
460
+ unitriangular=True)
461
+ return ker.quotient_module(im_retract)
462
+
463
+ def _element_constructor_(self, vectors):
464
+ """
465
+ Construct an element of ``self`` from ``vectors``.
466
+
467
+ TESTS::
468
+
469
+ sage: E.<x,y> = ExteriorAlgebra(QQ)
470
+ sage: H = E.hochschild_complex(E)
471
+ sage: H(0)
472
+ Trivial chain
473
+ sage: H(2)
474
+ Chain(0: 2)
475
+ sage: H(x+2*y)
476
+ Chain(0: x + 2*y)
477
+ sage: H({0: H.module(0).an_element()})
478
+ Chain(0: 2 + 2*x + 3*y)
479
+ sage: H({2: H.module(2).an_element()})
480
+ Chain(2: 2*1 # 1 # 1 + 2*1 # 1 # x + 3*1 # 1 # y)
481
+ sage: H({0:x-y, 2: H.module(2).an_element()})
482
+ Chain with 2 nonzero terms over Rational Field
483
+ sage: H([2])
484
+ Traceback (most recent call last):
485
+ ...
486
+ ValueError: cannot construct an element from [2]
487
+ """
488
+ if not vectors: # special case: the zero chain
489
+ return self.element_class(self, {})
490
+ # special case: an element of the defining module
491
+ if self._M.has_coerce_map_from(parent(vectors)):
492
+ vectors = self._M(vectors)
493
+ if parent(vectors) is self._M:
494
+ mc = vectors.monomial_coefficients(copy=False)
495
+ vec = self.module(0)._from_dict({(k,): mc[k] for k in mc})
496
+ return self.element_class(self, {0: vec})
497
+ if isinstance(vectors, (Chain_class, self.element_class)):
498
+ vectors = vectors._vec
499
+ data = {}
500
+ if not isinstance(vectors, dict):
501
+ raise ValueError("cannot construct an element from {}".format(vectors))
502
+ # Special handling for the 0 free module
503
+ # FIXME: Allow coercions between the 0 free module and the defining module
504
+ if 0 in vectors:
505
+ vec = vectors.pop(0)
506
+ if parent(vec) is self._M:
507
+ mc = vec.monomial_coefficients(copy=False)
508
+ data[0] = self.module(0)._from_dict({(k,): mc[k] for k in mc})
509
+ else:
510
+ data[0] = self.module(0)(vec)
511
+ for degree in vectors:
512
+ vec = self.module(degree)(vectors[degree])
513
+ if not vec:
514
+ continue
515
+ data[degree] = vec
516
+ return self.element_class(self, data)
517
+
518
+ def _an_element_(self):
519
+ """
520
+ Return an element of ``self``.
521
+
522
+ EXAMPLES::
523
+
524
+ sage: F.<x,y> = FreeAlgebra(ZZ)
525
+ sage: H = F.hochschild_complex(F)
526
+ sage: v = H.an_element()
527
+ sage: [v.vector(i) for i in range(6)]
528
+ [2*F[1] + 2*F[x] + 3*F[y],
529
+ 2*F[1] # F[1] + 2*F[1] # F[x] + 3*F[1] # F[y],
530
+ 2*F[1] # F[1] # F[1] + 2*F[1] # F[1] # F[x] + 3*F[1] # F[1] # F[y],
531
+ 2*F[1] # F[1] # F[1] # F[1] + 2*F[1] # F[1] # F[1] # F[x]
532
+ + 3*F[1] # F[1] # F[1] # F[y],
533
+ 0,
534
+ 0]
535
+ """
536
+ return self.element_class(self, {d: self.module(d).an_element()
537
+ for d in range(4)})
538
+
539
+ class Element(ModuleElement):
540
+ """
541
+ A chain of the Hochschild complex.
542
+
543
+ INPUT:
544
+
545
+ Can be one of the following:
546
+
547
+ - A dictionary whose keys are the degree and whose `d`-th
548
+ value is an element in the degree `d` module.
549
+ - An element in the coefficient module `M`.
550
+
551
+ EXAMPLES::
552
+
553
+ sage: SGA = SymmetricGroupAlgebra(QQ, 3)
554
+ sage: T = SGA.trivial_representation()
555
+ sage: H = SGA.hochschild_complex(T)
556
+ sage: H(T.an_element())
557
+ Chain(0: 2*B['v'])
558
+ sage: H({0: T.an_element()})
559
+ Chain(0: 2*B['v'])
560
+ sage: H({1: H.module(1).an_element()})
561
+ Chain(1: 2*B['v'] # [1, 2, 3] + 2*B['v'] # [1, 3, 2] + 3*B['v'] # [2, 1, 3])
562
+ sage: H({0: H.module(0).an_element(), 3: H.module(3).an_element()})
563
+ Chain with 2 nonzero terms over Rational Field
564
+
565
+ sage: F.<x,y> = FreeAlgebra(ZZ)
566
+ sage: H = F.hochschild_complex(F)
567
+ sage: H(x + 2*y^2)
568
+ Chain(0: F[x] + 2*F[y^2])
569
+ sage: H({0: x*y - x})
570
+ Chain(0: -F[x] + F[x*y])
571
+ sage: H(2)
572
+ Chain(0: 2*F[1])
573
+ sage: H({0: x-y, 2: H.module(2).basis().an_element()})
574
+ Chain with 2 nonzero terms over Integer Ring
575
+ """
576
+ def __init__(self, parent, vectors):
577
+ """
578
+ Initialize ``self``.
579
+
580
+ EXAMPLES::
581
+
582
+ sage: F.<x,y> = FreeAlgebra(ZZ)
583
+ sage: H = F.hochschild_complex(F)
584
+ sage: a = H({0: x-y, 2: H.module(2).basis().an_element()})
585
+ sage: TestSuite(a).run()
586
+ """
587
+ self._vec = vectors
588
+ ModuleElement.__init__(self, parent)
589
+
590
+ def vector(self, degree):
591
+ """
592
+ Return the free module element in ``degree``.
593
+
594
+ EXAMPLES::
595
+
596
+ sage: F.<x,y> = FreeAlgebra(ZZ)
597
+ sage: H = F.hochschild_complex(F)
598
+ sage: a = H({0: x-y, 2: H.module(2).basis().an_element()})
599
+ sage: [a.vector(i) for i in range(3)]
600
+ [F[x] - F[y], 0, F[1] # F[1] # F[1]]
601
+ """
602
+ try:
603
+ return self._vec[degree]
604
+ except KeyError:
605
+ return self.parent().module(degree).zero()
606
+
607
+ def _repr_(self):
608
+ """
609
+ Print representation.
610
+
611
+ EXAMPLES::
612
+
613
+ sage: E.<x,y> = ExteriorAlgebra(QQ)
614
+ sage: H = E.hochschild_complex(E)
615
+ sage: H(0)
616
+ Trivial chain
617
+ sage: H(x+2*y)
618
+ Chain(0: x + 2*y)
619
+ sage: H({2: H.module(2).an_element()})
620
+ Chain(2: 2*1 # 1 # 1 + 2*1 # 1 # x + 3*1 # 1 # y)
621
+ sage: H({0:x-y, 2: H.module(2).an_element()})
622
+ Chain with 2 nonzero terms over Rational Field
623
+ """
624
+ n = len(self._vec)
625
+ if n == 0:
626
+ return 'Trivial chain'
627
+
628
+ if n == 1:
629
+ (deg, vec), = self._vec.items()
630
+ return f'Chain({deg}: {vec})'
631
+
632
+ return f'Chain with {n} nonzero terms over {self.parent().base_ring()}'
633
+
634
+ def _ascii_art_(self):
635
+ """
636
+ Return an ascii art representation.
637
+
638
+ Note that arrows go to the left so that composition of
639
+ differentials is the usual matrix multiplication.
640
+
641
+ EXAMPLES::
642
+
643
+ sage: F.<x,y> = FreeAlgebra(ZZ)
644
+ sage: H = F.hochschild_complex(F)
645
+ sage: a = H({0: x - y,
646
+ ....: 1: H.module(1).basis().an_element(),
647
+ ....: 2: H.module(2).basis().an_element()})
648
+ sage: ascii_art(a)
649
+ d_0 d_1 d_2 d_3
650
+ 0 <---- F - F <---- 1 # 1 <---- 1 # 1 # 1 <---- 0
651
+ x y
652
+ """
653
+ from sage.typeset.ascii_art import AsciiArt, ascii_art
654
+
655
+ if not self._vec: # 0 chain
656
+ return AsciiArt(['0'])
657
+
658
+ def arrow_art(d):
659
+ d_str = [' d_{0} '.format(d)]
660
+ arrow = ' <' + '-'*(len(d_str[0])-3) + ' '
661
+ d_str.append(arrow)
662
+ return AsciiArt(d_str, baseline=0)
663
+
664
+ result = AsciiArt(['0'])
665
+ max_deg = max(self._vec)
666
+ for deg in range(min(self._vec), max_deg+1):
667
+ A = ascii_art(self.vector(deg))
668
+ A._baseline = A.height() // 2
669
+ result += arrow_art(deg) + A
670
+ return result + arrow_art(max_deg+1) + AsciiArt(['0'])
671
+
672
+ def _add_(self, other):
673
+ """
674
+ Module addition.
675
+
676
+ EXAMPLES::
677
+
678
+ sage: F.<x,y> = FreeAlgebra(ZZ)
679
+ sage: H = F.hochschild_complex(F)
680
+ sage: a = H({0: x - y,
681
+ ....: 1: H.module(1).basis().an_element(),
682
+ ....: 2: H.module(2).basis().an_element()})
683
+ sage: [a.vector(i) for i in range(3)]
684
+ [F[x] - F[y], F[1] # F[1], F[1] # F[1] # F[1]]
685
+ sage: [H.an_element().vector(i) for i in range(3)]
686
+ [2*F[1] + 2*F[x] + 3*F[y],
687
+ 2*F[1] # F[1] + 2*F[1] # F[x] + 3*F[1] # F[y],
688
+ 2*F[1] # F[1] # F[1] + 2*F[1] # F[1] # F[x] + 3*F[1] # F[1] # F[y]]
689
+
690
+ sage: v = a + H.an_element()
691
+ sage: [v.vector(i) for i in range(3)]
692
+ [2*F[1] + 3*F[x] + 2*F[y],
693
+ 3*F[1] # F[1] + 2*F[1] # F[x] + 3*F[1] # F[y],
694
+ 3*F[1] # F[1] # F[1] + 2*F[1] # F[1] # F[x] + 3*F[1] # F[1] # F[y]]
695
+ """
696
+ vectors = dict(self._vec) # Make a (shallow) copy
697
+ for d in other._vec:
698
+ if d in vectors:
699
+ vectors[d] += other._vec[d]
700
+ if not vectors[d]:
701
+ del vectors[d]
702
+ else:
703
+ vectors[d] = other._vec
704
+ parent = self.parent()
705
+ return parent.element_class(parent, vectors)
706
+
707
+ def _lmul_(self, scalar):
708
+ """
709
+ Scalar multiplication.
710
+
711
+ EXAMPLES::
712
+
713
+ sage: F.<x,y> = FreeAlgebra(ZZ)
714
+ sage: H = F.hochschild_complex(F)
715
+ sage: a = H({0: x - y,
716
+ ....: 1: H.module(1).basis().an_element(),
717
+ ....: 2: H.module(2).basis().an_element()})
718
+ sage: v = 3*a
719
+ sage: [v.vector(i) for i in range(3)]
720
+ [3*F[x] - 3*F[y], 3*F[1] # F[1], 3*F[1] # F[1] # F[1]]
721
+ """
722
+ if scalar == 0:
723
+ return self.zero()
724
+ vectors = {}
725
+ for d in self._vec:
726
+ vec = scalar * self._vec[d]
727
+ if vec:
728
+ vectors[d] = vec
729
+ return self.__class__(self.parent(), vectors)
730
+
731
+ def _richcmp_(self, other, op):
732
+ """
733
+ Rich comparison of ``self`` to ``other``.
734
+
735
+ EXAMPLES::
736
+
737
+ sage: F.<x,y> = FreeAlgebra(ZZ)
738
+ sage: H = F.hochschild_complex(F)
739
+ sage: a = H({0: x - y,
740
+ ....: 1: H.module(1).basis().an_element(),
741
+ ....: 2: H.module(2).basis().an_element()})
742
+ sage: a == 3*a
743
+ False
744
+ sage: a + a == 2*a
745
+ True
746
+ sage: a == H.zero()
747
+ False
748
+
749
+ sage: a != 3*a
750
+ True
751
+ sage: a + a != 2*a
752
+ False
753
+ sage: a != H.zero()
754
+ True
755
+ """
756
+ return richcmp(self._vec, other._vec, op)