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,997 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ # sage.doctest: needs sage.modules
3
+ """
4
+ Clifford algebra elements
5
+
6
+ AUTHORS:
7
+
8
+ - Travis Scrimshaw (2013-09-06): Initial version
9
+ - Trevor Karn (2022-07-10): Rewrite multiplication using bitsets
10
+ """
11
+ # ****************************************************************************
12
+ # Copyright (C) 2022 Trevor K. Karn <karnx018 at umn.edu>
13
+ # (C) 2022 Travis Scrimshaw <tcscrims at gmail.com>
14
+ #
15
+ # This program is free software: you can redistribute it and/or modify
16
+ # it under the terms of the GNU General Public License as published by
17
+ # the Free Software Foundation, either version 2 of the License, or
18
+ # (at your option) any later version.
19
+ # https://www.gnu.org/licenses/
20
+ # ****************************************************************************
21
+ from copy import copy
22
+
23
+ from sage.structure.parent cimport Parent
24
+ from sage.data_structures.bitset cimport Bitset
25
+ from sage.algebras.weyl_algebra import repr_from_monomials
26
+ from sage.data_structures.blas_dict cimport scal
27
+
28
+
29
+ cdef class CliffordAlgebraElement(IndexedFreeModuleElement):
30
+ """
31
+ An element in a Clifford algebra.
32
+
33
+ TESTS::
34
+
35
+ sage: Q = QuadraticForm(ZZ, 3, [1, 2, 3, 4, 5, 6])
36
+ sage: Cl.<x,y,z> = CliffordAlgebra(Q)
37
+ sage: elt = ((x^3-z)*x + y)^2
38
+ sage: TestSuite(elt).run()
39
+ """
40
+ def _repr_(self):
41
+ """
42
+ Return a string representation of ``self``.
43
+
44
+ TESTS::
45
+
46
+ sage: Q = QuadraticForm(ZZ, 3, [1,2,3,4,5,6])
47
+ sage: Cl.<x,y,z> = CliffordAlgebra(Q)
48
+ sage: ((x^3-z)*x + y)^2
49
+ -2*x*y*z - x*z + 5*x - 4*y + 2*z + 2
50
+ sage: Cl.zero()
51
+ 0
52
+ """
53
+ return repr_from_monomials(self.list(), self._parent._repr_term)
54
+
55
+ def _latex_(self):
56
+ r"""
57
+ Return a `\LaTeX` representation of ``self``.
58
+
59
+ TESTS::
60
+
61
+ sage: Q = QuadraticForm(ZZ, 3, [1,2,3,4,5,6])
62
+ sage: Cl.<x,y,z> = CliffordAlgebra(Q)
63
+ sage: latex( ((x^3-z)*x + y)^2 )
64
+ -2 x y z - x z + 5 x - 4 y + 2 z + 2
65
+ sage: Cl.<x0,x1,x2> = CliffordAlgebra(Q)
66
+ sage: latex( (x1 - x2)*x0 + 5*x0*x1*x2 )
67
+ 5 x_{0} x_{1} x_{2} - x_{0} x_{1} + x_{0} x_{2} - 1
68
+ """
69
+ return repr_from_monomials(self.list(), self._parent._latex_term, True)
70
+
71
+ cdef _mul_(self, other):
72
+ """
73
+ Return ``self`` multiplied by ``other``.
74
+
75
+ INPUT:
76
+
77
+ - ``other`` -- element of the same Clifford algebra as ``self``
78
+
79
+ EXAMPLES::
80
+
81
+ sage: Q = QuadraticForm(ZZ, 3, [1,2,3,4,5,6])
82
+ sage: Cl.<x,y,z> = CliffordAlgebra(Q)
83
+ sage: (x^3 - z*y)*x*(y*z + x*y*z)
84
+ x*y*z + y*z - 24*x + 12*y + 2*z - 24
85
+ sage: y*x
86
+ -x*y + 2
87
+ sage: z*x
88
+ -x*z + 3
89
+ sage: z*z
90
+ 6
91
+ sage: x*0
92
+ 0
93
+ sage: 0*x
94
+ 0
95
+
96
+ :issue:`34707`::
97
+
98
+ sage: Q = QuadraticForm(QQ, 2, [0,5,0])
99
+ sage: C.<p,q> = CliffordAlgebra(Q)
100
+ sage: (q * p) * q
101
+ 5*q
102
+ sage: q * (p * q)
103
+ 5*q
104
+ """
105
+ Q = self._parent._quadratic_form
106
+ zero = self._parent._base.zero()
107
+ cdef dict next_level, cur, d = {}
108
+ cdef FrozenBitset ml, mr, t
109
+ cdef Py_ssize_t i, j
110
+ cdef CliffordAlgebraElement rhs = <CliffordAlgebraElement> other
111
+
112
+ # Special case when multiplying by 0
113
+ if not self._monomial_coefficients:
114
+ return self
115
+ if not rhs._monomial_coefficients:
116
+ return rhs
117
+
118
+ # Special case when multiplying by an element of the base ring
119
+ if len(self._monomial_coefficients) == 1:
120
+ ml, cl = next(iter(self._monomial_coefficients.items()))
121
+ if ml.isempty():
122
+ return rhs._mul_term_self(ml, cl)
123
+ if len(rhs._monomial_coefficients) == 1:
124
+ mr, cr = next(iter(rhs._monomial_coefficients.items()))
125
+ if mr.isempty():
126
+ return self._mul_self_term(mr, cr)
127
+
128
+ for ml, cl in self:
129
+ # Distribute the current term ``cl`` * ``ml`` over ``other``.
130
+ cur = copy(other._monomial_coefficients) # The current distribution of the term
131
+ for i in reversed(ml):
132
+ # Distribute the current factor ``e[i]`` (the ``i``-th
133
+ # element of the standard basis).
134
+ next_level = {}
135
+ # At the end of the following for-loop, ``next`` will be
136
+ # the dictionary describing the element
137
+ # ``e[i]`` * (the element described by the dictionary ``cur``)
138
+ # (where ``e[i]`` is the ``i``-th standard basis vector).
139
+ for mr, cr in cur.items():
140
+
141
+ # Commute the factor as necessary until we are in order
142
+ for j in mr:
143
+ if i <= j:
144
+ break
145
+ # Add the additional term from the commutation
146
+ # get a non-frozen bitset to manipulate
147
+ t = Bitset(mr) # a mutable copy
148
+ t.discard(j)
149
+ t = FrozenBitset(t)
150
+ next_level[t] = next_level.get(t, zero) + cr * Q[i, j]
151
+ # Note: ``Q[i,j] == Q(e[i]+e[j]) - Q(e[i]) - Q(e[j])`` for
152
+ # ``i != j``, where ``e[k]`` is the ``k``-th standard
153
+ # basis vector.
154
+ cr = -cr
155
+ if next_level[t] == zero:
156
+ del next_level[t]
157
+
158
+ # Check to see if we have a squared term or not
159
+ mr = Bitset(mr) # temporarily mutable
160
+ if i in mr:
161
+ mr.discard(i)
162
+ cr *= Q[i, i]
163
+ # Note: ``Q[i,i] == Q(e[i])`` where ``e[i]`` is the
164
+ # ``i``-th standard basis vector.
165
+ else:
166
+ # mr is implicitly sorted
167
+ mr.add(i)
168
+ mr = FrozenBitset(mr) # refreeze it
169
+ next_level[mr] = next_level.get(mr, zero) + cr
170
+ if next_level[mr] == zero:
171
+ del next_level[mr]
172
+ cur = next_level
173
+
174
+ # Add the distributed terms to the total
175
+ for index, coeff in cur.items():
176
+ d[index] = d.get(index, zero) + cl * coeff
177
+ if d[index] == zero:
178
+ del d[index]
179
+
180
+ return self.__class__(self.parent(), d)
181
+
182
+ cdef CliffordAlgebraElement _mul_self_term(self, FrozenBitset supp, coeff):
183
+ r"""
184
+ Multiply ``self * term`` with the ``term`` having support ``supp``
185
+ and coefficient ``coeff``.
186
+
187
+ EXAMPLES::
188
+
189
+ sage: E.<x,y,z> = ExteriorAlgebra(QQ)
190
+ sage: r = sum(E.basis())
191
+ sage: x * y # indirect doctest
192
+ x*y
193
+ sage: y * x # indirect doctest
194
+ -x*y
195
+ sage: r * x # indirect doctest
196
+ x*y*z - x*y - x*z + x
197
+ sage: r * -x # indirect doctest
198
+ -x*y*z + x*y + x*z - x
199
+ sage: r * (2*x) # indirect doctest
200
+ 2*x*y*z - 2*x*y - 2*x*z + 2*x
201
+ sage: r * y # indirect doctest
202
+ -x*y*z + x*y - y*z + y
203
+ sage: r * z # indirect doctest
204
+ x*y*z + x*z + y*z + z
205
+ sage: r * (x*y) # indirect doctest
206
+ x*y*z + x*y
207
+ sage: r * (-x*y) # indirect doctest
208
+ -x*y*z - x*y
209
+ sage: r * (x*y*z) # indirect doctest
210
+ x*y*z
211
+ sage: r * 1 == r # indirect doctest
212
+ True
213
+ sage: r * -1 == -r # indirect doctest
214
+ True
215
+ sage: r * 2 # indirect doctest
216
+ 2*x*y*z + 2*x*y + 2*x*z + 2*y*z + 2*x + 2*y + 2*z + 2
217
+ """
218
+ if supp.isempty(): # Multiplication by a base ring element
219
+ if coeff == self._parent._base.one():
220
+ return self
221
+ if coeff == -self._parent._base.one():
222
+ return self._neg_()
223
+
224
+ return type(self)(self._parent,
225
+ scal(coeff, self._monomial_coefficients,
226
+ factor_on_left=False))
227
+
228
+ return type(self)(self._parent, {supp: coeff}) * self
229
+
230
+ cdef CliffordAlgebraElement _mul_term_self(self, FrozenBitset supp, coeff):
231
+ r"""
232
+ Multiply ``term * self`` with the ``term`` having support ``supp``
233
+ and coefficient ``coeff``.
234
+ """
235
+ if supp.isempty(): # Multiplication by a base ring element
236
+ if coeff == self._parent._base.one():
237
+ return self
238
+ if coeff == -self._parent._base.one():
239
+ return self._neg_()
240
+
241
+ return type(self)(self._parent,
242
+ scal(coeff, self._monomial_coefficients,
243
+ factor_on_left=True))
244
+
245
+ return type(self)(self._parent, {supp: coeff}) * self
246
+
247
+ def list(self):
248
+ """
249
+ Return the list of monomials and their coefficients in ``self``
250
+ (as a list of `2`-tuples, each of which has the form
251
+ ``(monomial, coefficient)``).
252
+
253
+ EXAMPLES::
254
+
255
+ sage: Q = QuadraticForm(ZZ, 3, [1,2,3,4,5,6])
256
+ sage: Cl.<x,y,z> = CliffordAlgebra(Q)
257
+ sage: elt = 5*x + y
258
+ sage: elt.list()
259
+ [(1, 5), (01, 1)]
260
+ """
261
+ return sorted(self._monomial_coefficients.items(), key=lambda m: (-len(m[0]), list(m[0])))
262
+
263
+ def support(self):
264
+ """
265
+ Return the support of ``self``.
266
+
267
+ This is the list of all monomials which appear with nonzero
268
+ coefficient in ``self``.
269
+
270
+ EXAMPLES::
271
+
272
+ sage: Q = QuadraticForm(ZZ, 3, [1,2,3,4,5,6])
273
+ sage: Cl.<x,y,z> = CliffordAlgebra(Q)
274
+ sage: elt = 5*x + y
275
+ sage: elt.support()
276
+ [1, 01]
277
+ """
278
+ return sorted(self._monomial_coefficients, key=lambda x: (-len(x), list(x)))
279
+
280
+ def reflection(self):
281
+ r"""
282
+ Return the image of the reflection automorphism on ``self``.
283
+
284
+ The *reflection automorphism* of a Clifford algebra is defined
285
+ as the linear endomorphism of this algebra which maps
286
+
287
+ .. MATH::
288
+
289
+ x_1 \wedge x_2 \wedge \cdots \wedge x_m \mapsto
290
+ (-1)^m x_1 \wedge x_2 \wedge \cdots \wedge x_m.
291
+
292
+ It is an algebra automorphism of the Clifford algebra.
293
+
294
+ :meth:`degree_negation` is an alias for :meth:`reflection`.
295
+
296
+ EXAMPLES::
297
+
298
+ sage: Q = QuadraticForm(ZZ, 3, [1,2,3,4,5,6])
299
+ sage: Cl.<x,y,z> = CliffordAlgebra(Q)
300
+ sage: elt = 5*x + y + x*z
301
+ sage: r = elt.reflection(); r
302
+ x*z - 5*x - y
303
+ sage: r.reflection() == elt
304
+ True
305
+
306
+ TESTS:
307
+
308
+ We check that the reflection is an involution::
309
+
310
+ sage: Q = QuadraticForm(ZZ, 3, [1,2,3,4,5,6])
311
+ sage: Cl.<x,y,z> = CliffordAlgebra(Q)
312
+ sage: all(x.reflection().reflection() == x for x in Cl.basis())
313
+ True
314
+ """
315
+ return self.__class__(self._parent,
316
+ {m: (-1)**len(m) * c for m, c in self})
317
+
318
+ degree_negation = reflection
319
+
320
+ def transpose(self):
321
+ r"""
322
+ Return the transpose of ``self``.
323
+
324
+ The transpose is an anti-algebra involution of a Clifford algebra
325
+ and is defined (using linearity) by
326
+
327
+ .. MATH::
328
+
329
+ x_1 \wedge x_2 \wedge \cdots \wedge x_m \mapsto
330
+ x_m \wedge \cdots \wedge x_2 \wedge x_1.
331
+
332
+ EXAMPLES::
333
+
334
+ sage: Q = QuadraticForm(ZZ, 3, [1,2,3,4,5,6])
335
+ sage: Cl.<x,y,z> = CliffordAlgebra(Q)
336
+ sage: elt = 5*x + y + x*z
337
+ sage: t = elt.transpose(); t
338
+ -x*z + 5*x + y + 3
339
+ sage: t.transpose() == elt
340
+ True
341
+ sage: Cl.one().transpose()
342
+ 1
343
+
344
+ TESTS:
345
+
346
+ We check that the transpose is an involution::
347
+
348
+ sage: Q = QuadraticForm(ZZ, 3, [1,2,3,4,5,6])
349
+ sage: Cl.<x,y,z> = CliffordAlgebra(Q)
350
+ sage: all(x.transpose().transpose() == x for x in Cl.basis())
351
+ True
352
+
353
+ Zero is sent to zero::
354
+
355
+ sage: Cl.zero().transpose() == Cl.zero()
356
+ True
357
+ """
358
+ P = self._parent
359
+ if not self._monomial_coefficients:
360
+ return P.zero()
361
+ g = P.gens()
362
+ return P.sum(c * P.prod(g[i] for i in reversed(m)) for m, c in self)
363
+
364
+ def conjugate(self):
365
+ r"""
366
+ Return the Clifford conjugate of ``self``.
367
+
368
+ The Clifford conjugate of an element `x` of a Clifford algebra is
369
+ defined as
370
+
371
+ .. MATH::
372
+
373
+ \bar{x} := \alpha(x^t) = \alpha(x)^t
374
+
375
+ where `\alpha` denotes the :meth:`reflection <reflection>`
376
+ automorphism and `t` the :meth:`transposition <transpose>`.
377
+
378
+ EXAMPLES::
379
+
380
+ sage: Q = QuadraticForm(ZZ, 3, [1,2,3,4,5,6])
381
+ sage: Cl.<x,y,z> = CliffordAlgebra(Q)
382
+ sage: elt = 5*x + y + x*z
383
+ sage: c = elt.conjugate(); c
384
+ -x*z - 5*x - y + 3
385
+ sage: c.conjugate() == elt
386
+ True
387
+
388
+ TESTS:
389
+
390
+ We check that the conjugate is an involution::
391
+
392
+ sage: Q = QuadraticForm(ZZ, 3, [1,2,3,4,5,6])
393
+ sage: Cl.<x,y,z> = CliffordAlgebra(Q)
394
+ sage: all(x.conjugate().conjugate() == x for x in Cl.basis())
395
+ True
396
+ """
397
+ return self.reflection().transpose()
398
+
399
+ clifford_conjugate = conjugate
400
+
401
+
402
+ cdef class ExteriorAlgebraElement(CliffordAlgebraElement):
403
+ """
404
+ An element of an exterior algebra.
405
+ """
406
+ cdef _mul_(self, other):
407
+ """
408
+ Return ``self`` multiplied by ``other``.
409
+
410
+ INPUT:
411
+
412
+ - ``other`` -- element of the same exterior algebra as ``self``
413
+
414
+ EXAMPLES::
415
+
416
+ sage: E.<x,y,z> = ExteriorAlgebra(QQ)
417
+ sage: x*y
418
+ x*y
419
+ sage: y*x
420
+ -x*y
421
+ sage: z*y*x
422
+ -x*y*z
423
+ sage: (x*z)*y
424
+ -x*y*z
425
+ sage: (3*x + y)^2
426
+ 0
427
+ sage: (x - 3*y + z/3)^2
428
+ 0
429
+ sage: (x+y) * (y+z)
430
+ x*y + x*z + y*z
431
+
432
+ sage: E.<x,y,z,w> = ExteriorAlgebra(QQ)
433
+ sage: (x * y) * (w * z)
434
+ -x*y*z*w
435
+ sage: x * y * w * z
436
+ -x*y*z*w
437
+ sage: (z * w) * (x * y)
438
+ x*y*z*w
439
+
440
+ sage: E.<a,b,c,d> = ExteriorAlgebra(QQ)
441
+ sage: r = sum(E.basis())
442
+ sage: r*r
443
+ 4*a*b*c*d + 4*a*b*c + 4*a*b*d + 4*a*c*d + 4*b*c*d
444
+ + 2*a*b + 2*a*c + 2*a*d + 2*b*c + 2*b*d + 2*c*d
445
+ + 2*a + 2*b + 2*c + 2*d + 1
446
+ """
447
+ cdef Parent P = self._parent
448
+ zero = P._base.zero()
449
+ cdef dict d
450
+ cdef ExteriorAlgebraElement rhs = <ExteriorAlgebraElement> other
451
+ cdef list to_remove
452
+
453
+ cdef FrozenBitset ml, mr, t
454
+ cdef Py_ssize_t n, num_cross, tot_cross, i, j
455
+
456
+ # Special case: one of them is zero
457
+ if not self._monomial_coefficients:
458
+ return self
459
+ if not rhs._monomial_coefficients:
460
+ return rhs
461
+
462
+ # Special case: other is a single term
463
+ if len(rhs._monomial_coefficients) == 1:
464
+ mr, cr = next(iter(rhs._monomial_coefficients.items()))
465
+ return self._mul_self_term(mr, cr)
466
+
467
+ # Special case: self is a single term
468
+ if len(self._monomial_coefficients) == 1:
469
+ ml, cl = next(iter(self._monomial_coefficients.items()))
470
+ return rhs._mul_term_self(ml, cl)
471
+
472
+ # Do some special processing for the constant monomial in ml
473
+ ml = FrozenBitset()
474
+ if ml in self._monomial_coefficients:
475
+ const_coeff = self._monomial_coefficients[ml]
476
+ d = dict(rhs._monomial_coefficients) # Make a shallow copy
477
+ to_remove = []
478
+ if const_coeff != P._base.one():
479
+ for k in d:
480
+ d[k] *= const_coeff
481
+ if not d[k]: # there might be zero divisors
482
+ to_remove.append(k)
483
+ for k in to_remove:
484
+ del d[k]
485
+ else:
486
+ d = {}
487
+
488
+ n = P.ngens()
489
+ for ml, cl in self._monomial_coefficients.items():
490
+ # ml for "monomial on the left"
491
+ if ml.isempty(): # We already handled the trivial element
492
+ continue
493
+ for mr, cr in rhs._monomial_coefficients.items():
494
+ # mr for "monomial on the right"
495
+ if mr.isempty():
496
+ t = ml
497
+ else:
498
+ if not ml.isdisjoint(mr):
499
+ # if they intersect nontrivially, move along.
500
+ continue
501
+ t = <FrozenBitset> ml._union(mr)
502
+ it = iter(mr)
503
+ j = next(it)
504
+
505
+ num_cross = 0 # keep track of the number of signs
506
+ tot_cross = 0
507
+ for i in ml:
508
+ while i > j:
509
+ num_cross += 1
510
+ try:
511
+ j = next(it)
512
+ except StopIteration:
513
+ j = n + 1
514
+ tot_cross += num_cross
515
+ if tot_cross % 2:
516
+ cr = -cr
517
+
518
+ val = d.get(t, zero) + cl * cr
519
+ if not val:
520
+ del d[t]
521
+ else:
522
+ d[t] = val
523
+
524
+ return self.__class__(P, d)
525
+
526
+ cdef CliffordAlgebraElement _mul_self_term(self, FrozenBitset supp, coeff):
527
+ r"""
528
+ Multiply ``self * term`` with the ``term`` having support ``supp``
529
+ and coefficient ``coeff``.
530
+
531
+ EXAMPLES::
532
+
533
+ sage: E.<x,y,z> = ExteriorAlgebra(QQ)
534
+ sage: r = sum(E.basis())
535
+ sage: x * y # indirect doctest
536
+ x*y
537
+ sage: y * x # indirect doctest
538
+ -x*y
539
+ sage: r * x # indirect doctest
540
+ x*y*z - x*y - x*z + x
541
+ sage: r * -x # indirect doctest
542
+ -x*y*z + x*y + x*z - x
543
+ sage: r * (2*x) # indirect doctest
544
+ 2*x*y*z - 2*x*y - 2*x*z + 2*x
545
+ sage: r * y # indirect doctest
546
+ -x*y*z + x*y - y*z + y
547
+ sage: r * z # indirect doctest
548
+ x*y*z + x*z + y*z + z
549
+ sage: r * (x*y) # indirect doctest
550
+ x*y*z + x*y
551
+ sage: r * (-x*y) # indirect doctest
552
+ -x*y*z - x*y
553
+ sage: r * (x*y*z) # indirect doctest
554
+ x*y*z
555
+ sage: r * 1 == r # indirect doctest
556
+ True
557
+ sage: r * -1 == -r # indirect doctest
558
+ True
559
+ sage: r * 2 # indirect doctest
560
+ 2*x*y*z + 2*x*y + 2*x*z + 2*y*z + 2*x + 2*y + 2*z + 2
561
+ """
562
+ cdef dict d
563
+ cdef list to_remove
564
+ cdef Py_ssize_t num_cross, tot_cross, i, j
565
+ cdef FrozenBitset ml
566
+
567
+ if supp.isempty(): # Multiplication by a base ring element
568
+ if coeff == self._parent._base.one():
569
+ return self
570
+ if coeff == -self._parent._base.one():
571
+ return self._neg_()
572
+
573
+ return type(self)(self._parent,
574
+ scal(coeff, self._monomial_coefficients,
575
+ factor_on_left=False))
576
+
577
+ n = self._parent.ngens()
578
+ d = {}
579
+ for ml, cl in self._monomial_coefficients.items():
580
+ # ml for "monomial on the left"
581
+ if not ml.isdisjoint(supp):
582
+ # if they intersect nontrivially, move along.
583
+ continue
584
+ t = <FrozenBitset> ml._union(supp)
585
+ it = iter(supp)
586
+ j = next(it)
587
+
588
+ num_cross = 0 # keep track of the number of signs
589
+ tot_cross = 0
590
+ for i in ml:
591
+ while i > j:
592
+ num_cross += 1
593
+ try:
594
+ j = next(it)
595
+ except StopIteration:
596
+ j = n + 1
597
+ tot_cross += num_cross
598
+ if tot_cross % 2:
599
+ d[t] = -cl
600
+ else:
601
+ d[t] = cl
602
+
603
+ if coeff == -self._parent._base.one():
604
+ for k in d:
605
+ d[k] = -d[k]
606
+ elif coeff != self._parent._base.one():
607
+ to_remove = []
608
+ for k in d:
609
+ d[k] *= coeff
610
+ if not d[k]: # there might be zero divisors
611
+ to_remove.append(k)
612
+ for k in to_remove:
613
+ del d[k]
614
+ return type(self)(self._parent, d)
615
+
616
+ cdef CliffordAlgebraElement _mul_term_self(self, FrozenBitset supp, coeff):
617
+ r"""
618
+ Multiply ``term * self`` with the ``term`` having support ``supp``
619
+ and coefficient ``coeff``.
620
+
621
+ EXAMPLES::
622
+
623
+ sage: E.<x,y,z> = ExteriorAlgebra(QQ)
624
+ sage: r = sum(E.basis())
625
+ sage: x * r # indirect doctest
626
+ x*y*z + x*y + x*z + x
627
+ sage: (-x) * r # indirect doctest
628
+ -x*y*z - x*y - x*z - x
629
+ sage: (2*x) * r # indirect doctest
630
+ 2*x*y*z + 2*x*y + 2*x*z + 2*x
631
+ sage: y * r # indirect doctest
632
+ -x*y*z - x*y + y*z + y
633
+ sage: z * r # indirect doctest
634
+ x*y*z - x*z - y*z + z
635
+ sage: (x*y) * r # indirect doctest
636
+ x*y*z + x*y
637
+ sage: (-x*y) * r # indirect doctest
638
+ -x*y*z - x*y
639
+ sage: (x*y*z) * r # indirect doctest
640
+ x*y*z
641
+ sage: 1 * r == r # indirect doctest
642
+ True
643
+ sage: -1 * r == -r # indirect doctest
644
+ True
645
+ sage: 2 * r # indirect doctest
646
+ 2*x*y*z + 2*x*y + 2*x*z + 2*y*z + 2*x + 2*y + 2*z + 2
647
+ """
648
+ cdef dict d
649
+ cdef list to_remove
650
+ cdef Py_ssize_t n, num_cross, tot_cross, i, j
651
+ cdef FrozenBitset mr, t
652
+
653
+ if supp.isempty(): # Multiplication by a base ring element
654
+ if coeff == self._parent._base.one():
655
+ return self
656
+ if coeff == -self._parent._base.one():
657
+ return self._neg_()
658
+
659
+ return type(self)(self._parent,
660
+ scal(coeff, self._monomial_coefficients,
661
+ factor_on_left=True))
662
+
663
+ n = self._parent.ngens()
664
+ d = {}
665
+ mr = FrozenBitset()
666
+ # We need to special case the constant coefficient
667
+ const_coeff = None
668
+ if mr in self._monomial_coefficients:
669
+ const_coeff = self._monomial_coefficients.pop(mr)
670
+ d[supp] = const_coeff
671
+
672
+ for mr, cr in self._monomial_coefficients.items():
673
+ # mr for "monomial on the right"
674
+ if not supp.isdisjoint(mr):
675
+ # if they intersect nontrivially, move along.
676
+ continue
677
+ t = <FrozenBitset> supp._union(mr)
678
+ it = iter(mr)
679
+ j = next(it) # We assume mr is non-empty here
680
+
681
+ num_cross = 0 # keep track of the number of signs
682
+ tot_cross = 0
683
+ for i in supp:
684
+ while i > j:
685
+ num_cross += 1
686
+ try:
687
+ j = next(it)
688
+ except StopIteration:
689
+ j = n + 1
690
+ tot_cross += num_cross
691
+ if tot_cross % 2:
692
+ d[t] = -cr
693
+ else:
694
+ d[t] = cr
695
+
696
+ if coeff == -self._parent._base.one():
697
+ for k in d:
698
+ d[k] = -d[k]
699
+ elif coeff != self._parent._base.one():
700
+ to_remove = []
701
+ for k in d:
702
+ d[k] = coeff * d[k] # This will work for non-commutative base rings
703
+ if not d[k]: # there might be zero divisors
704
+ to_remove.append(k)
705
+ for k in to_remove:
706
+ del d[k]
707
+
708
+ # Add back the constant coefficient since we removed it for the special case
709
+ if const_coeff is not None:
710
+ self._monomial_coefficients[FrozenBitset()] = const_coeff
711
+ return type(self)(self._parent, d)
712
+
713
+ def reduce(self, I, left=True):
714
+ r"""
715
+ Reduce ``self`` with respect to the elements in ``I``.
716
+
717
+ INPUT:
718
+
719
+ - ``I`` -- list of exterior algebra elements or an ideal
720
+ - ``left`` -- boolean; if reduce as a left ideal (``True``)
721
+ or right ideal (``False``), ignored if ``I`` is an ideal
722
+
723
+ EXAMPLES::
724
+
725
+ sage: E.<a,b,c,d> = ExteriorAlgebra(QQ)
726
+ sage: f = (a + b*c) * d
727
+ sage: f.reduce([a + b*c], True)
728
+ 2*a*d
729
+ sage: f.reduce([a + b*c], False)
730
+ 0
731
+
732
+ sage: I = E.ideal([a + b*c])
733
+ sage: f.reduce(I)
734
+ 0
735
+ """
736
+ from sage.algebras.clifford_algebra import ExteriorAlgebraIdeal
737
+ if isinstance(I, ExteriorAlgebraIdeal):
738
+ return I.reduce(self)
739
+
740
+ f = self
741
+ E = self._parent
742
+
743
+ cdef FrozenBitset lm, s
744
+ for g in I:
745
+ lm = g.leading_support()
746
+ reduction = True
747
+ while reduction:
748
+ supp = f.support()
749
+ reduction = False
750
+ for s in supp:
751
+ if lm <= s:
752
+ reduction = True
753
+ mon = E.monomial(s - lm)
754
+ if left:
755
+ gp = mon * g
756
+ f = f - f[s] / gp[s] * gp
757
+ else:
758
+ gp = g * mon
759
+ f = f - f[s] / gp[s] * gp
760
+ break
761
+ return f
762
+
763
+ def interior_product(self, x):
764
+ r"""
765
+ Return the interior product (also known as antiderivation) of
766
+ ``self`` with respect to ``x`` (that is, the element
767
+ `\iota_{x}(\text{self})` of the exterior algebra).
768
+
769
+ If `V` is an `R`-module, and if `\alpha` is a fixed element of
770
+ `V^*`, then the *interior product* with respect to `\alpha` is
771
+ an `R`-linear map
772
+ `i_{\alpha} \colon \Lambda(V) \to \Lambda(V)`, determined by
773
+ the following requirements:
774
+
775
+ - `i_{\alpha}(v) = \alpha(v)` for all `v \in V = \Lambda^1(V)`,
776
+ - it is a graded derivation of degree `-1`: all `x` and `y`
777
+ in `\Lambda(V)` satisfy
778
+
779
+ .. MATH::
780
+
781
+ i_{\alpha}(x \wedge y) = (i_{\alpha} x) \wedge y
782
+ + (-1)^{\deg x} x \wedge (i_{\alpha} y).
783
+
784
+ It can be shown that this map `i_{\alpha}` is graded of
785
+ degree `-1` (that is, sends `\Lambda^k(V)` into
786
+ `\Lambda^{k-1}(V)` for every `k`).
787
+
788
+ When `V` is a finite free `R`-module, the interior product can
789
+ also be defined by
790
+
791
+ .. MATH::
792
+
793
+ (i_{\alpha} \omega)(u_1, \ldots, u_k)
794
+ = \omega(\alpha, u_1, \ldots, u_k),
795
+
796
+ where `\omega \in \Lambda^k(V)` is thought of as an
797
+ alternating multilinear mapping from
798
+ `V^* \times \cdots \times V^*` to `R`.
799
+
800
+ Since Sage is only dealing with exterior powers of modules
801
+ of the form `R^d` for some nonnegative integer `d`, the
802
+ element `\alpha \in V^*` can be thought of as an element of
803
+ `V` (by identifying the standard basis of `V = R^d` with its
804
+ dual basis). This is how `\alpha` should be passed to this
805
+ method.
806
+
807
+ We then extend the interior product to all
808
+ `\alpha \in \Lambda (V^*)` by
809
+
810
+ .. MATH::
811
+
812
+ i_{\beta \wedge \gamma} = i_{\gamma} \circ i_{\beta}.
813
+
814
+ INPUT:
815
+
816
+ - ``x`` -- element of (or coercing into) `\Lambda^1(V)`
817
+ (for example, an element of `V`); this plays the role of
818
+ `\alpha` in the above definition
819
+
820
+ EXAMPLES::
821
+
822
+ sage: E.<x,y,z> = ExteriorAlgebra(QQ)
823
+ sage: x.interior_product(x)
824
+ 1
825
+ sage: (x + x*y).interior_product(2*y)
826
+ -2*x
827
+ sage: (x*z + x*y*z).interior_product(2*y - x)
828
+ -2*x*z - y*z - z
829
+ sage: x.interior_product(E.one())
830
+ x
831
+ sage: E.one().interior_product(x)
832
+ 0
833
+ sage: x.interior_product(E.zero())
834
+ 0
835
+ sage: E.zero().interior_product(x)
836
+ 0
837
+
838
+ REFERENCES:
839
+
840
+ - :wikipedia:`Exterior_algebra#Interior_product`
841
+ """
842
+ P = self._parent
843
+ return P.sum([c * cx * P.interior_product_on_basis(m, mx)
844
+ for m, c in self for mx, cx in x])
845
+
846
+ antiderivation = interior_product
847
+
848
+ def hodge_dual(self):
849
+ r"""
850
+ Return the Hodge dual of ``self``.
851
+
852
+ The Hodge dual of an element `\alpha` of the exterior algebra is
853
+ defined as `i_{\alpha} \sigma`, where `\sigma` is the volume
854
+ form
855
+ (:meth:`~sage.algebras.clifford_algebra.ExteriorAlgebra.volume_form`)
856
+ and `i_{\alpha}` denotes the antiderivation function with
857
+ respect to `\alpha` (see :meth:`interior_product` for the
858
+ definition of this).
859
+
860
+ .. NOTE::
861
+
862
+ The Hodge dual of the Hodge dual of a homogeneous element
863
+ `p` of `\Lambda(V)` equals `(-1)^{k(n-k)} p`, where
864
+ `n = \dim V` and `k = \deg(p) = |p|`.
865
+
866
+ EXAMPLES::
867
+
868
+ sage: E.<x,y,z> = ExteriorAlgebra(QQ)
869
+ sage: x.hodge_dual()
870
+ y*z
871
+ sage: (x*z).hodge_dual()
872
+ -y
873
+ sage: (x*y*z).hodge_dual()
874
+ 1
875
+ sage: [a.hodge_dual().hodge_dual() for a in E.basis()]
876
+ [1, x, y, z, x*y, x*z, y*z, x*y*z]
877
+ sage: (x + x*y).hodge_dual()
878
+ y*z + z
879
+ sage: (x*z + x*y*z).hodge_dual()
880
+ -y + 1
881
+ sage: E = ExteriorAlgebra(QQ, 'wxyz')
882
+ sage: [a.hodge_dual().hodge_dual() for a in E.basis()]
883
+ [1, -w, -x, -y, -z, w*x, w*y, w*z, x*y, x*z, y*z,
884
+ -w*x*y, -w*x*z, -w*y*z, -x*y*z, w*x*y*z]
885
+ """
886
+ volume_form = self._parent.volume_form()
887
+ return volume_form.interior_product(self)
888
+
889
+ def constant_coefficient(self):
890
+ """
891
+ Return the constant coefficient of ``self``.
892
+
893
+ .. TODO::
894
+
895
+ Define a similar method for general Clifford algebras once
896
+ the morphism to exterior algebras is implemented.
897
+
898
+ EXAMPLES::
899
+
900
+ sage: E.<x,y,z> = ExteriorAlgebra(QQ)
901
+ sage: elt = 5*x + y + x*z + 10
902
+ sage: elt.constant_coefficient()
903
+ 10
904
+ sage: x.constant_coefficient()
905
+ 0
906
+ """
907
+ return self._monomial_coefficients.get(self._parent.one_basis(),
908
+ self._parent._base.zero())
909
+
910
+ def scalar(self, other):
911
+ r"""
912
+ Return the standard scalar product of ``self`` with ``other``.
913
+
914
+ The standard scalar product of `x, y \in \Lambda(V)` is
915
+ defined by `\langle x, y \rangle = \langle x^t y \rangle`, where
916
+ `\langle a \rangle` denotes the degree-0 term of `a`, and where
917
+ `x^t` denotes the transpose
918
+ (:meth:`~sage.algebras.clifford_algebra.CliffordAlgebraElement.transpose`)
919
+ of `x`.
920
+
921
+ .. TODO::
922
+
923
+ Define a similar method for general Clifford algebras once
924
+ the morphism to exterior algebras is implemented.
925
+
926
+ EXAMPLES::
927
+
928
+ sage: E.<x,y,z> = ExteriorAlgebra(QQ)
929
+ sage: elt = 5*x + y + x*z
930
+ sage: elt.scalar(z + 2*x)
931
+ 0
932
+ sage: elt.transpose() * (z + 2*x)
933
+ -2*x*y + 5*x*z + y*z
934
+ """
935
+ return (self.transpose() * other).constant_coefficient()
936
+
937
+ cdef class CohomologyRAAGElement(CliffordAlgebraElement):
938
+ """
939
+ An element in the cohomology of a right-angled Artin group.
940
+
941
+ .. SEEALSO::
942
+
943
+ :class:`~sage.groups.raag.CohomologyRAAG`
944
+ """
945
+ cdef _mul_(self, other):
946
+ """
947
+ Return ``self`` multiplied by ``other``.
948
+
949
+ EXAMPLES::
950
+
951
+ sage: # needs sage.graphs sage.groups
952
+ sage: C4 = graphs.CycleGraph(4)
953
+ sage: A = groups.misc.RightAngledArtin(C4)
954
+ sage: H = A.cohomology()
955
+ sage: b = sum(H.basis())
956
+ sage: b * b
957
+ 2*e0*e2 + 2*e1*e3 + 2*e0 + 2*e1 + 2*e2 + 2*e3 + 1
958
+ """
959
+ zero = self._parent._base.zero()
960
+ cdef frozenset I = frozenset(self._parent._indices)
961
+ cdef dict d = {}
962
+ cdef list t
963
+ cdef tuple tp
964
+ cdef tuple ml, mr
965
+ cdef Py_ssize_t pos, i, j
966
+ cdef bint negate
967
+
968
+ for ml, cl in self._monomial_coefficients.items():
969
+ for mr, cr in other._monomial_coefficients.items():
970
+ # Create the next term
971
+ tp = tuple(sorted(mr + ml))
972
+ if any(tp[i] == tp[i+1] for i in range(len(tp)-1)): # e_i ^ e_i = 0
973
+ continue
974
+ if tp not in I:
975
+ # not an independent set, so this term is also 0
976
+ continue
977
+
978
+ t = list(mr)
979
+ negate = False
980
+ for i in reversed(ml):
981
+ pos = 0
982
+ for j in t:
983
+ assert i != j
984
+ if i < j:
985
+ break
986
+ pos += 1
987
+ negate = not negate
988
+ t.insert(pos, i)
989
+
990
+ if negate:
991
+ cr = -cr
992
+
993
+ d[tp] = d.get(tp, zero) + cl * cr
994
+ if d[tp] == zero:
995
+ del d[tp]
996
+
997
+ return self.__class__(self._parent, d)