passagemath-modules 10.6.31rc3__cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_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 (806) hide show
  1. passagemath_modules-10.6.31rc3.dist-info/METADATA +281 -0
  2. passagemath_modules-10.6.31rc3.dist-info/RECORD +806 -0
  3. passagemath_modules-10.6.31rc3.dist-info/WHEEL +6 -0
  4. passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
  5. passagemath_modules.libs/libgfortran-e1b7dfc8.so.5.0.0 +0 -0
  6. passagemath_modules.libs/libgmp-93ebf16a.so.10.5.0 +0 -0
  7. passagemath_modules.libs/libgsl-e3525837.so.28.0.0 +0 -0
  8. passagemath_modules.libs/libmpc-c5c421e1.so.3.3.1 +0 -0
  9. passagemath_modules.libs/libmpfr-e0f11cf3.so.6.2.1 +0 -0
  10. passagemath_modules.libs/libopenblasp-r0-4c5b64b1.3.29.so +0 -0
  11. sage/algebras/all__sagemath_modules.py +20 -0
  12. sage/algebras/catalog.py +148 -0
  13. sage/algebras/clifford_algebra.py +3107 -0
  14. sage/algebras/clifford_algebra_element.cpython-314-aarch64-linux-gnu.so +0 -0
  15. sage/algebras/clifford_algebra_element.pxd +16 -0
  16. sage/algebras/clifford_algebra_element.pyx +997 -0
  17. sage/algebras/commutative_dga.py +4252 -0
  18. sage/algebras/exterior_algebra_groebner.cpython-314-aarch64-linux-gnu.so +0 -0
  19. sage/algebras/exterior_algebra_groebner.pxd +55 -0
  20. sage/algebras/exterior_algebra_groebner.pyx +727 -0
  21. sage/algebras/finite_dimensional_algebras/all.py +2 -0
  22. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +1029 -0
  23. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-314-aarch64-linux-gnu.so +0 -0
  24. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +12 -0
  25. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +706 -0
  26. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_ideal.py +196 -0
  27. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_morphism.py +255 -0
  28. sage/algebras/finite_gca.py +528 -0
  29. sage/algebras/group_algebra.py +232 -0
  30. sage/algebras/lie_algebras/abelian.py +197 -0
  31. sage/algebras/lie_algebras/affine_lie_algebra.py +1213 -0
  32. sage/algebras/lie_algebras/all.py +25 -0
  33. sage/algebras/lie_algebras/all__sagemath_modules.py +1 -0
  34. sage/algebras/lie_algebras/bch.py +177 -0
  35. sage/algebras/lie_algebras/bgg_dual_module.py +1184 -0
  36. sage/algebras/lie_algebras/bgg_resolution.py +232 -0
  37. sage/algebras/lie_algebras/center_uea.py +767 -0
  38. sage/algebras/lie_algebras/classical_lie_algebra.py +2516 -0
  39. sage/algebras/lie_algebras/examples.py +683 -0
  40. sage/algebras/lie_algebras/free_lie_algebra.py +973 -0
  41. sage/algebras/lie_algebras/heisenberg.py +820 -0
  42. sage/algebras/lie_algebras/lie_algebra.py +1562 -0
  43. sage/algebras/lie_algebras/lie_algebra_element.cpython-314-aarch64-linux-gnu.so +0 -0
  44. sage/algebras/lie_algebras/lie_algebra_element.pxd +68 -0
  45. sage/algebras/lie_algebras/lie_algebra_element.pyx +2122 -0
  46. sage/algebras/lie_algebras/morphism.py +661 -0
  47. sage/algebras/lie_algebras/nilpotent_lie_algebra.py +457 -0
  48. sage/algebras/lie_algebras/onsager.py +1324 -0
  49. sage/algebras/lie_algebras/poincare_birkhoff_witt.py +816 -0
  50. sage/algebras/lie_algebras/quotient.py +462 -0
  51. sage/algebras/lie_algebras/rank_two_heisenberg_virasoro.py +355 -0
  52. sage/algebras/lie_algebras/representation.py +1040 -0
  53. sage/algebras/lie_algebras/structure_coefficients.py +459 -0
  54. sage/algebras/lie_algebras/subalgebra.py +967 -0
  55. sage/algebras/lie_algebras/symplectic_derivation.py +289 -0
  56. sage/algebras/lie_algebras/verma_module.py +1630 -0
  57. sage/algebras/lie_algebras/virasoro.py +1186 -0
  58. sage/algebras/octonion_algebra.cpython-314-aarch64-linux-gnu.so +0 -0
  59. sage/algebras/octonion_algebra.pxd +20 -0
  60. sage/algebras/octonion_algebra.pyx +987 -0
  61. sage/algebras/orlik_solomon.py +907 -0
  62. sage/algebras/orlik_terao.py +779 -0
  63. sage/algebras/steenrod/all.py +7 -0
  64. sage/algebras/steenrod/steenrod_algebra.py +4258 -0
  65. sage/algebras/steenrod/steenrod_algebra_bases.py +1179 -0
  66. sage/algebras/steenrod/steenrod_algebra_misc.py +1167 -0
  67. sage/algebras/steenrod/steenrod_algebra_mult.py +954 -0
  68. sage/algebras/weyl_algebra.py +1126 -0
  69. sage/all__sagemath_modules.py +62 -0
  70. sage/calculus/all__sagemath_modules.py +19 -0
  71. sage/calculus/expr.py +205 -0
  72. sage/calculus/integration.cpython-314-aarch64-linux-gnu.so +0 -0
  73. sage/calculus/integration.pyx +698 -0
  74. sage/calculus/interpolation.cpython-314-aarch64-linux-gnu.so +0 -0
  75. sage/calculus/interpolation.pxd +13 -0
  76. sage/calculus/interpolation.pyx +387 -0
  77. sage/calculus/interpolators.cpython-314-aarch64-linux-gnu.so +0 -0
  78. sage/calculus/interpolators.pyx +326 -0
  79. sage/calculus/ode.cpython-314-aarch64-linux-gnu.so +0 -0
  80. sage/calculus/ode.pxd +5 -0
  81. sage/calculus/ode.pyx +610 -0
  82. sage/calculus/riemann.cpython-314-aarch64-linux-gnu.so +0 -0
  83. sage/calculus/riemann.pyx +1521 -0
  84. sage/calculus/test_sympy.py +201 -0
  85. sage/calculus/transforms/all.py +7 -0
  86. sage/calculus/transforms/dft.py +844 -0
  87. sage/calculus/transforms/dwt.cpython-314-aarch64-linux-gnu.so +0 -0
  88. sage/calculus/transforms/dwt.pxd +7 -0
  89. sage/calculus/transforms/dwt.pyx +160 -0
  90. sage/calculus/transforms/fft.cpython-314-aarch64-linux-gnu.so +0 -0
  91. sage/calculus/transforms/fft.pxd +12 -0
  92. sage/calculus/transforms/fft.pyx +487 -0
  93. sage/calculus/wester.py +662 -0
  94. sage/coding/abstract_code.py +1108 -0
  95. sage/coding/ag_code.py +868 -0
  96. sage/coding/ag_code_decoders.cpython-314-aarch64-linux-gnu.so +0 -0
  97. sage/coding/ag_code_decoders.pyx +2639 -0
  98. sage/coding/all.py +15 -0
  99. sage/coding/bch_code.py +494 -0
  100. sage/coding/binary_code.cpython-314-aarch64-linux-gnu.so +0 -0
  101. sage/coding/binary_code.pxd +124 -0
  102. sage/coding/binary_code.pyx +4139 -0
  103. sage/coding/bounds_catalog.py +43 -0
  104. sage/coding/channel.py +819 -0
  105. sage/coding/channels_catalog.py +29 -0
  106. sage/coding/code_bounds.py +755 -0
  107. sage/coding/code_constructions.py +804 -0
  108. sage/coding/codes_catalog.py +111 -0
  109. sage/coding/cyclic_code.py +1329 -0
  110. sage/coding/databases.py +316 -0
  111. sage/coding/decoder.py +373 -0
  112. sage/coding/decoders_catalog.py +88 -0
  113. sage/coding/delsarte_bounds.py +709 -0
  114. sage/coding/encoder.py +390 -0
  115. sage/coding/encoders_catalog.py +64 -0
  116. sage/coding/extended_code.py +468 -0
  117. sage/coding/gabidulin_code.py +1058 -0
  118. sage/coding/golay_code.py +404 -0
  119. sage/coding/goppa_code.py +441 -0
  120. sage/coding/grs_code.py +2371 -0
  121. sage/coding/guava.py +107 -0
  122. sage/coding/guruswami_sudan/all.py +1 -0
  123. sage/coding/guruswami_sudan/gs_decoder.py +897 -0
  124. sage/coding/guruswami_sudan/interpolation.py +409 -0
  125. sage/coding/guruswami_sudan/utils.py +176 -0
  126. sage/coding/hamming_code.py +176 -0
  127. sage/coding/information_set_decoder.py +1032 -0
  128. sage/coding/kasami_codes.cpython-314-aarch64-linux-gnu.so +0 -0
  129. sage/coding/kasami_codes.pyx +351 -0
  130. sage/coding/linear_code.py +3067 -0
  131. sage/coding/linear_code_no_metric.py +1354 -0
  132. sage/coding/linear_rank_metric.py +961 -0
  133. sage/coding/parity_check_code.py +353 -0
  134. sage/coding/punctured_code.py +719 -0
  135. sage/coding/reed_muller_code.py +999 -0
  136. sage/coding/self_dual_codes.py +942 -0
  137. sage/coding/source_coding/all.py +2 -0
  138. sage/coding/source_coding/huffman.py +553 -0
  139. sage/coding/subfield_subcode.py +423 -0
  140. sage/coding/two_weight_db.py +399 -0
  141. sage/combinat/all__sagemath_modules.py +7 -0
  142. sage/combinat/cartesian_product.py +347 -0
  143. sage/combinat/family.py +11 -0
  144. sage/combinat/free_module.py +1977 -0
  145. sage/combinat/root_system/all.py +147 -0
  146. sage/combinat/root_system/ambient_space.py +527 -0
  147. sage/combinat/root_system/associahedron.py +471 -0
  148. sage/combinat/root_system/braid_move_calculator.py +143 -0
  149. sage/combinat/root_system/braid_orbit.cpython-314-aarch64-linux-gnu.so +0 -0
  150. sage/combinat/root_system/braid_orbit.pyx +144 -0
  151. sage/combinat/root_system/branching_rules.py +2301 -0
  152. sage/combinat/root_system/cartan_matrix.py +1245 -0
  153. sage/combinat/root_system/cartan_type.py +3069 -0
  154. sage/combinat/root_system/coxeter_group.py +162 -0
  155. sage/combinat/root_system/coxeter_matrix.py +1261 -0
  156. sage/combinat/root_system/coxeter_type.py +681 -0
  157. sage/combinat/root_system/dynkin_diagram.py +900 -0
  158. sage/combinat/root_system/extended_affine_weyl_group.py +2993 -0
  159. sage/combinat/root_system/fundamental_group.py +795 -0
  160. sage/combinat/root_system/hecke_algebra_representation.py +1203 -0
  161. sage/combinat/root_system/integrable_representations.py +1227 -0
  162. sage/combinat/root_system/non_symmetric_macdonald_polynomials.py +1965 -0
  163. sage/combinat/root_system/pieri_factors.py +1147 -0
  164. sage/combinat/root_system/plot.py +1615 -0
  165. sage/combinat/root_system/root_lattice_realization_algebras.py +1214 -0
  166. sage/combinat/root_system/root_lattice_realizations.py +4628 -0
  167. sage/combinat/root_system/root_space.py +487 -0
  168. sage/combinat/root_system/root_system.py +882 -0
  169. sage/combinat/root_system/type_A.py +348 -0
  170. sage/combinat/root_system/type_A_affine.py +227 -0
  171. sage/combinat/root_system/type_A_infinity.py +241 -0
  172. sage/combinat/root_system/type_B.py +347 -0
  173. sage/combinat/root_system/type_BC_affine.py +287 -0
  174. sage/combinat/root_system/type_B_affine.py +216 -0
  175. sage/combinat/root_system/type_C.py +317 -0
  176. sage/combinat/root_system/type_C_affine.py +188 -0
  177. sage/combinat/root_system/type_D.py +357 -0
  178. sage/combinat/root_system/type_D_affine.py +208 -0
  179. sage/combinat/root_system/type_E.py +641 -0
  180. sage/combinat/root_system/type_E_affine.py +231 -0
  181. sage/combinat/root_system/type_F.py +387 -0
  182. sage/combinat/root_system/type_F_affine.py +137 -0
  183. sage/combinat/root_system/type_G.py +293 -0
  184. sage/combinat/root_system/type_G_affine.py +132 -0
  185. sage/combinat/root_system/type_H.py +105 -0
  186. sage/combinat/root_system/type_I.py +110 -0
  187. sage/combinat/root_system/type_Q.py +150 -0
  188. sage/combinat/root_system/type_affine.py +509 -0
  189. sage/combinat/root_system/type_dual.py +704 -0
  190. sage/combinat/root_system/type_folded.py +301 -0
  191. sage/combinat/root_system/type_marked.py +748 -0
  192. sage/combinat/root_system/type_reducible.py +601 -0
  193. sage/combinat/root_system/type_relabel.py +730 -0
  194. sage/combinat/root_system/type_super_A.py +837 -0
  195. sage/combinat/root_system/weight_lattice_realizations.py +1188 -0
  196. sage/combinat/root_system/weight_space.py +639 -0
  197. sage/combinat/root_system/weyl_characters.py +2238 -0
  198. sage/crypto/__init__.py +4 -0
  199. sage/crypto/all.py +28 -0
  200. sage/crypto/block_cipher/all.py +7 -0
  201. sage/crypto/block_cipher/des.py +1065 -0
  202. sage/crypto/block_cipher/miniaes.py +2171 -0
  203. sage/crypto/block_cipher/present.py +909 -0
  204. sage/crypto/block_cipher/sdes.py +1527 -0
  205. sage/crypto/boolean_function.cpython-314-aarch64-linux-gnu.so +0 -0
  206. sage/crypto/boolean_function.pxd +10 -0
  207. sage/crypto/boolean_function.pyx +1487 -0
  208. sage/crypto/cipher.py +78 -0
  209. sage/crypto/classical.py +3668 -0
  210. sage/crypto/classical_cipher.py +569 -0
  211. sage/crypto/cryptosystem.py +387 -0
  212. sage/crypto/key_exchange/all.py +7 -0
  213. sage/crypto/key_exchange/catalog.py +24 -0
  214. sage/crypto/key_exchange/diffie_hellman.py +323 -0
  215. sage/crypto/key_exchange/key_exchange_scheme.py +107 -0
  216. sage/crypto/lattice.py +312 -0
  217. sage/crypto/lfsr.py +295 -0
  218. sage/crypto/lwe.py +840 -0
  219. sage/crypto/mq/__init__.py +4 -0
  220. sage/crypto/mq/mpolynomialsystemgenerator.py +204 -0
  221. sage/crypto/mq/rijndael_gf.py +2345 -0
  222. sage/crypto/mq/sbox.py +7 -0
  223. sage/crypto/mq/sr.py +3344 -0
  224. sage/crypto/public_key/all.py +5 -0
  225. sage/crypto/public_key/blum_goldwasser.py +776 -0
  226. sage/crypto/sbox.cpython-314-aarch64-linux-gnu.so +0 -0
  227. sage/crypto/sbox.pyx +2090 -0
  228. sage/crypto/sboxes.py +2090 -0
  229. sage/crypto/stream.py +390 -0
  230. sage/crypto/stream_cipher.py +297 -0
  231. sage/crypto/util.py +519 -0
  232. sage/ext/all__sagemath_modules.py +1 -0
  233. sage/ext/interpreters/__init__.py +1 -0
  234. sage/ext/interpreters/all__sagemath_modules.py +2 -0
  235. sage/ext/interpreters/wrapper_cc.cpython-314-aarch64-linux-gnu.so +0 -0
  236. sage/ext/interpreters/wrapper_cc.pxd +30 -0
  237. sage/ext/interpreters/wrapper_cc.pyx +252 -0
  238. sage/ext/interpreters/wrapper_cdf.cpython-314-aarch64-linux-gnu.so +0 -0
  239. sage/ext/interpreters/wrapper_cdf.pxd +26 -0
  240. sage/ext/interpreters/wrapper_cdf.pyx +245 -0
  241. sage/ext/interpreters/wrapper_rdf.cpython-314-aarch64-linux-gnu.so +0 -0
  242. sage/ext/interpreters/wrapper_rdf.pxd +23 -0
  243. sage/ext/interpreters/wrapper_rdf.pyx +221 -0
  244. sage/ext/interpreters/wrapper_rr.cpython-314-aarch64-linux-gnu.so +0 -0
  245. sage/ext/interpreters/wrapper_rr.pxd +28 -0
  246. sage/ext/interpreters/wrapper_rr.pyx +335 -0
  247. sage/geometry/all__sagemath_modules.py +5 -0
  248. sage/geometry/toric_lattice.py +1745 -0
  249. sage/geometry/toric_lattice_element.cpython-314-aarch64-linux-gnu.so +0 -0
  250. sage/geometry/toric_lattice_element.pyx +432 -0
  251. sage/groups/abelian_gps/abelian_group.py +1925 -0
  252. sage/groups/abelian_gps/abelian_group_element.py +164 -0
  253. sage/groups/abelian_gps/all__sagemath_modules.py +5 -0
  254. sage/groups/abelian_gps/dual_abelian_group.py +421 -0
  255. sage/groups/abelian_gps/dual_abelian_group_element.py +179 -0
  256. sage/groups/abelian_gps/element_base.py +341 -0
  257. sage/groups/abelian_gps/values.py +488 -0
  258. sage/groups/additive_abelian/additive_abelian_group.py +476 -0
  259. sage/groups/additive_abelian/additive_abelian_wrapper.py +857 -0
  260. sage/groups/additive_abelian/all.py +4 -0
  261. sage/groups/additive_abelian/qmodnz.py +231 -0
  262. sage/groups/additive_abelian/qmodnz_element.py +349 -0
  263. sage/groups/affine_gps/affine_group.py +535 -0
  264. sage/groups/affine_gps/all.py +1 -0
  265. sage/groups/affine_gps/catalog.py +17 -0
  266. sage/groups/affine_gps/euclidean_group.py +246 -0
  267. sage/groups/affine_gps/group_element.py +562 -0
  268. sage/groups/all__sagemath_modules.py +12 -0
  269. sage/groups/galois_group.py +479 -0
  270. sage/groups/matrix_gps/all.py +4 -0
  271. sage/groups/matrix_gps/all__sagemath_modules.py +13 -0
  272. sage/groups/matrix_gps/catalog.py +26 -0
  273. sage/groups/matrix_gps/coxeter_group.py +927 -0
  274. sage/groups/matrix_gps/finitely_generated.py +487 -0
  275. sage/groups/matrix_gps/group_element.cpython-314-aarch64-linux-gnu.so +0 -0
  276. sage/groups/matrix_gps/group_element.pxd +11 -0
  277. sage/groups/matrix_gps/group_element.pyx +431 -0
  278. sage/groups/matrix_gps/linear.py +440 -0
  279. sage/groups/matrix_gps/matrix_group.py +617 -0
  280. sage/groups/matrix_gps/named_group.py +296 -0
  281. sage/groups/matrix_gps/orthogonal.py +544 -0
  282. sage/groups/matrix_gps/symplectic.py +251 -0
  283. sage/groups/matrix_gps/unitary.py +436 -0
  284. sage/groups/misc_gps/all__sagemath_modules.py +1 -0
  285. sage/groups/misc_gps/argument_groups.py +1905 -0
  286. sage/groups/misc_gps/imaginary_groups.py +479 -0
  287. sage/groups/perm_gps/all__sagemath_modules.py +1 -0
  288. sage/groups/perm_gps/partn_ref/all__sagemath_modules.py +1 -0
  289. sage/groups/perm_gps/partn_ref/refinement_binary.cpython-314-aarch64-linux-gnu.so +0 -0
  290. sage/groups/perm_gps/partn_ref/refinement_binary.pxd +41 -0
  291. sage/groups/perm_gps/partn_ref/refinement_binary.pyx +1167 -0
  292. sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-314-aarch64-linux-gnu.so +0 -0
  293. sage/groups/perm_gps/partn_ref/refinement_matrices.pxd +31 -0
  294. sage/groups/perm_gps/partn_ref/refinement_matrices.pyx +385 -0
  295. sage/homology/algebraic_topological_model.py +595 -0
  296. sage/homology/all.py +2 -0
  297. sage/homology/all__sagemath_modules.py +8 -0
  298. sage/homology/chain_complex.py +2148 -0
  299. sage/homology/chain_complex_homspace.py +165 -0
  300. sage/homology/chain_complex_morphism.py +629 -0
  301. sage/homology/chain_homotopy.py +604 -0
  302. sage/homology/chains.py +653 -0
  303. sage/homology/free_resolution.py +923 -0
  304. sage/homology/graded_resolution.py +567 -0
  305. sage/homology/hochschild_complex.py +756 -0
  306. sage/homology/homology_group.py +188 -0
  307. sage/homology/homology_morphism.py +422 -0
  308. sage/homology/homology_vector_space_with_basis.py +1454 -0
  309. sage/homology/koszul_complex.py +169 -0
  310. sage/homology/matrix_utils.py +205 -0
  311. sage/libs/all__sagemath_modules.py +1 -0
  312. sage/libs/gsl/__init__.py +1 -0
  313. sage/libs/gsl/airy.pxd +56 -0
  314. sage/libs/gsl/all.pxd +66 -0
  315. sage/libs/gsl/array.cpython-314-aarch64-linux-gnu.so +0 -0
  316. sage/libs/gsl/array.pxd +5 -0
  317. sage/libs/gsl/array.pyx +102 -0
  318. sage/libs/gsl/bessel.pxd +208 -0
  319. sage/libs/gsl/blas.pxd +116 -0
  320. sage/libs/gsl/blas_types.pxd +34 -0
  321. sage/libs/gsl/block.pxd +52 -0
  322. sage/libs/gsl/chebyshev.pxd +37 -0
  323. sage/libs/gsl/clausen.pxd +12 -0
  324. sage/libs/gsl/combination.pxd +47 -0
  325. sage/libs/gsl/complex.pxd +151 -0
  326. sage/libs/gsl/coulomb.pxd +30 -0
  327. sage/libs/gsl/coupling.pxd +21 -0
  328. sage/libs/gsl/dawson.pxd +12 -0
  329. sage/libs/gsl/debye.pxd +24 -0
  330. sage/libs/gsl/dilog.pxd +14 -0
  331. sage/libs/gsl/eigen.pxd +46 -0
  332. sage/libs/gsl/elementary.pxd +12 -0
  333. sage/libs/gsl/ellint.pxd +48 -0
  334. sage/libs/gsl/elljac.pxd +8 -0
  335. sage/libs/gsl/erf.pxd +32 -0
  336. sage/libs/gsl/errno.pxd +26 -0
  337. sage/libs/gsl/exp.pxd +44 -0
  338. sage/libs/gsl/expint.pxd +44 -0
  339. sage/libs/gsl/fermi_dirac.pxd +44 -0
  340. sage/libs/gsl/fft.pxd +121 -0
  341. sage/libs/gsl/fit.pxd +50 -0
  342. sage/libs/gsl/gamma.pxd +94 -0
  343. sage/libs/gsl/gegenbauer.pxd +26 -0
  344. sage/libs/gsl/histogram.pxd +176 -0
  345. sage/libs/gsl/hyperg.pxd +52 -0
  346. sage/libs/gsl/integration.pxd +69 -0
  347. sage/libs/gsl/interp.pxd +109 -0
  348. sage/libs/gsl/laguerre.pxd +24 -0
  349. sage/libs/gsl/lambert.pxd +16 -0
  350. sage/libs/gsl/legendre.pxd +90 -0
  351. sage/libs/gsl/linalg.pxd +185 -0
  352. sage/libs/gsl/log.pxd +26 -0
  353. sage/libs/gsl/math.pxd +43 -0
  354. sage/libs/gsl/matrix.pxd +143 -0
  355. sage/libs/gsl/matrix_complex.pxd +130 -0
  356. sage/libs/gsl/min.pxd +67 -0
  357. sage/libs/gsl/monte.pxd +56 -0
  358. sage/libs/gsl/ntuple.pxd +32 -0
  359. sage/libs/gsl/odeiv.pxd +70 -0
  360. sage/libs/gsl/permutation.pxd +78 -0
  361. sage/libs/gsl/poly.pxd +40 -0
  362. sage/libs/gsl/pow_int.pxd +12 -0
  363. sage/libs/gsl/psi.pxd +28 -0
  364. sage/libs/gsl/qrng.pxd +29 -0
  365. sage/libs/gsl/random.pxd +257 -0
  366. sage/libs/gsl/rng.pxd +100 -0
  367. sage/libs/gsl/roots.pxd +72 -0
  368. sage/libs/gsl/sort.pxd +36 -0
  369. sage/libs/gsl/statistics.pxd +59 -0
  370. sage/libs/gsl/sum.pxd +55 -0
  371. sage/libs/gsl/synchrotron.pxd +16 -0
  372. sage/libs/gsl/transport.pxd +24 -0
  373. sage/libs/gsl/trig.pxd +58 -0
  374. sage/libs/gsl/types.pxd +137 -0
  375. sage/libs/gsl/vector.pxd +101 -0
  376. sage/libs/gsl/vector_complex.pxd +83 -0
  377. sage/libs/gsl/wavelet.pxd +49 -0
  378. sage/libs/gsl/zeta.pxd +28 -0
  379. sage/libs/mpc/__init__.pxd +114 -0
  380. sage/libs/mpc/types.pxd +28 -0
  381. sage/libs/mpfr/__init__.pxd +299 -0
  382. sage/libs/mpfr/types.pxd +26 -0
  383. sage/libs/mpmath/__init__.py +1 -0
  384. sage/libs/mpmath/all.py +27 -0
  385. sage/libs/mpmath/all__sagemath_modules.py +1 -0
  386. sage/libs/mpmath/utils.cpython-314-aarch64-linux-gnu.so +0 -0
  387. sage/libs/mpmath/utils.pxd +4 -0
  388. sage/libs/mpmath/utils.pyx +319 -0
  389. sage/matrix/action.cpython-314-aarch64-linux-gnu.so +0 -0
  390. sage/matrix/action.pxd +26 -0
  391. sage/matrix/action.pyx +596 -0
  392. sage/matrix/all.py +9 -0
  393. sage/matrix/args.cpython-314-aarch64-linux-gnu.so +0 -0
  394. sage/matrix/args.pxd +144 -0
  395. sage/matrix/args.pyx +1668 -0
  396. sage/matrix/benchmark.py +1258 -0
  397. sage/matrix/berlekamp_massey.py +95 -0
  398. sage/matrix/compute_J_ideal.py +926 -0
  399. sage/matrix/constructor.cpython-314-aarch64-linux-gnu.so +0 -0
  400. sage/matrix/constructor.pyx +750 -0
  401. sage/matrix/docs.py +430 -0
  402. sage/matrix/echelon_matrix.cpython-314-aarch64-linux-gnu.so +0 -0
  403. sage/matrix/echelon_matrix.pyx +155 -0
  404. sage/matrix/matrix.pxd +2 -0
  405. sage/matrix/matrix0.cpython-314-aarch64-linux-gnu.so +0 -0
  406. sage/matrix/matrix0.pxd +68 -0
  407. sage/matrix/matrix0.pyx +6324 -0
  408. sage/matrix/matrix1.cpython-314-aarch64-linux-gnu.so +0 -0
  409. sage/matrix/matrix1.pxd +8 -0
  410. sage/matrix/matrix1.pyx +2851 -0
  411. sage/matrix/matrix2.cpython-314-aarch64-linux-gnu.so +0 -0
  412. sage/matrix/matrix2.pxd +25 -0
  413. sage/matrix/matrix2.pyx +20181 -0
  414. sage/matrix/matrix_cdv.cpython-314-aarch64-linux-gnu.so +0 -0
  415. sage/matrix/matrix_cdv.pxd +4 -0
  416. sage/matrix/matrix_cdv.pyx +93 -0
  417. sage/matrix/matrix_complex_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  418. sage/matrix/matrix_complex_double_dense.pxd +5 -0
  419. sage/matrix/matrix_complex_double_dense.pyx +98 -0
  420. sage/matrix/matrix_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  421. sage/matrix/matrix_dense.pxd +5 -0
  422. sage/matrix/matrix_dense.pyx +343 -0
  423. sage/matrix/matrix_domain_dense.pxd +5 -0
  424. sage/matrix/matrix_domain_sparse.pxd +5 -0
  425. sage/matrix/matrix_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  426. sage/matrix/matrix_double_dense.pxd +7 -0
  427. sage/matrix/matrix_double_dense.pyx +3906 -0
  428. sage/matrix/matrix_double_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  429. sage/matrix/matrix_double_sparse.pxd +6 -0
  430. sage/matrix/matrix_double_sparse.pyx +248 -0
  431. sage/matrix/matrix_generic_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  432. sage/matrix/matrix_generic_dense.pxd +7 -0
  433. sage/matrix/matrix_generic_dense.pyx +354 -0
  434. sage/matrix/matrix_generic_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  435. sage/matrix/matrix_generic_sparse.pxd +7 -0
  436. sage/matrix/matrix_generic_sparse.pyx +461 -0
  437. sage/matrix/matrix_laurent_mpolynomial_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  438. sage/matrix/matrix_laurent_mpolynomial_dense.pxd +5 -0
  439. sage/matrix/matrix_laurent_mpolynomial_dense.pyx +115 -0
  440. sage/matrix/matrix_misc.py +313 -0
  441. sage/matrix/matrix_numpy_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  442. sage/matrix/matrix_numpy_dense.pxd +14 -0
  443. sage/matrix/matrix_numpy_dense.pyx +450 -0
  444. sage/matrix/matrix_numpy_integer_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  445. sage/matrix/matrix_numpy_integer_dense.pxd +7 -0
  446. sage/matrix/matrix_numpy_integer_dense.pyx +59 -0
  447. sage/matrix/matrix_polynomial_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  448. sage/matrix/matrix_polynomial_dense.pxd +5 -0
  449. sage/matrix/matrix_polynomial_dense.pyx +5341 -0
  450. sage/matrix/matrix_real_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  451. sage/matrix/matrix_real_double_dense.pxd +7 -0
  452. sage/matrix/matrix_real_double_dense.pyx +122 -0
  453. sage/matrix/matrix_space.py +2848 -0
  454. sage/matrix/matrix_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  455. sage/matrix/matrix_sparse.pxd +5 -0
  456. sage/matrix/matrix_sparse.pyx +1222 -0
  457. sage/matrix/matrix_window.cpython-314-aarch64-linux-gnu.so +0 -0
  458. sage/matrix/matrix_window.pxd +37 -0
  459. sage/matrix/matrix_window.pyx +242 -0
  460. sage/matrix/misc_mpfr.cpython-314-aarch64-linux-gnu.so +0 -0
  461. sage/matrix/misc_mpfr.pyx +80 -0
  462. sage/matrix/operation_table.py +1182 -0
  463. sage/matrix/special.py +3666 -0
  464. sage/matrix/strassen.cpython-314-aarch64-linux-gnu.so +0 -0
  465. sage/matrix/strassen.pyx +851 -0
  466. sage/matrix/symplectic_basis.py +541 -0
  467. sage/matrix/template.pxd +6 -0
  468. sage/matrix/tests.py +71 -0
  469. sage/matroids/advanced.py +77 -0
  470. sage/matroids/all.py +13 -0
  471. sage/matroids/basis_exchange_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  472. sage/matroids/basis_exchange_matroid.pxd +96 -0
  473. sage/matroids/basis_exchange_matroid.pyx +2344 -0
  474. sage/matroids/basis_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  475. sage/matroids/basis_matroid.pxd +45 -0
  476. sage/matroids/basis_matroid.pyx +1217 -0
  477. sage/matroids/catalog.py +44 -0
  478. sage/matroids/chow_ring.py +473 -0
  479. sage/matroids/chow_ring_ideal.py +849 -0
  480. sage/matroids/circuit_closures_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  481. sage/matroids/circuit_closures_matroid.pxd +16 -0
  482. sage/matroids/circuit_closures_matroid.pyx +559 -0
  483. sage/matroids/circuits_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  484. sage/matroids/circuits_matroid.pxd +38 -0
  485. sage/matroids/circuits_matroid.pyx +947 -0
  486. sage/matroids/constructor.py +1086 -0
  487. sage/matroids/database_collections.py +365 -0
  488. sage/matroids/database_matroids.py +5338 -0
  489. sage/matroids/dual_matroid.py +583 -0
  490. sage/matroids/extension.cpython-314-aarch64-linux-gnu.so +0 -0
  491. sage/matroids/extension.pxd +34 -0
  492. sage/matroids/extension.pyx +519 -0
  493. sage/matroids/flats_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  494. sage/matroids/flats_matroid.pxd +28 -0
  495. sage/matroids/flats_matroid.pyx +715 -0
  496. sage/matroids/gammoid.py +600 -0
  497. sage/matroids/graphic_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  498. sage/matroids/graphic_matroid.pxd +39 -0
  499. sage/matroids/graphic_matroid.pyx +2024 -0
  500. sage/matroids/lean_matrix.cpython-314-aarch64-linux-gnu.so +0 -0
  501. sage/matroids/lean_matrix.pxd +126 -0
  502. sage/matroids/lean_matrix.pyx +3667 -0
  503. sage/matroids/linear_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  504. sage/matroids/linear_matroid.pxd +180 -0
  505. sage/matroids/linear_matroid.pyx +6649 -0
  506. sage/matroids/matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  507. sage/matroids/matroid.pxd +243 -0
  508. sage/matroids/matroid.pyx +8759 -0
  509. sage/matroids/matroids_catalog.py +190 -0
  510. sage/matroids/matroids_plot_helpers.py +890 -0
  511. sage/matroids/minor_matroid.py +480 -0
  512. sage/matroids/minorfix.h +9 -0
  513. sage/matroids/named_matroids.py +5 -0
  514. sage/matroids/rank_matroid.py +268 -0
  515. sage/matroids/set_system.cpython-314-aarch64-linux-gnu.so +0 -0
  516. sage/matroids/set_system.pxd +38 -0
  517. sage/matroids/set_system.pyx +800 -0
  518. sage/matroids/transversal_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  519. sage/matroids/transversal_matroid.pxd +14 -0
  520. sage/matroids/transversal_matroid.pyx +893 -0
  521. sage/matroids/union_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  522. sage/matroids/union_matroid.pxd +20 -0
  523. sage/matroids/union_matroid.pyx +331 -0
  524. sage/matroids/unpickling.cpython-314-aarch64-linux-gnu.so +0 -0
  525. sage/matroids/unpickling.pyx +843 -0
  526. sage/matroids/utilities.py +809 -0
  527. sage/misc/all__sagemath_modules.py +20 -0
  528. sage/misc/c3.cpython-314-aarch64-linux-gnu.so +0 -0
  529. sage/misc/c3.pyx +238 -0
  530. sage/misc/compat.py +87 -0
  531. sage/misc/element_with_label.py +173 -0
  532. sage/misc/func_persist.py +79 -0
  533. sage/misc/pickle_old.cpython-314-aarch64-linux-gnu.so +0 -0
  534. sage/misc/pickle_old.pyx +19 -0
  535. sage/misc/proof.py +7 -0
  536. sage/misc/replace_dot_all.py +472 -0
  537. sage/misc/sagedoc_conf.py +168 -0
  538. sage/misc/sphinxify.py +167 -0
  539. sage/misc/test_class_pickling.py +85 -0
  540. sage/modules/all.py +42 -0
  541. sage/modules/complex_double_vector.py +25 -0
  542. sage/modules/diamond_cutting.py +380 -0
  543. sage/modules/fg_pid/all.py +1 -0
  544. sage/modules/fg_pid/fgp_element.py +456 -0
  545. sage/modules/fg_pid/fgp_module.py +2091 -0
  546. sage/modules/fg_pid/fgp_morphism.py +550 -0
  547. sage/modules/filtered_vector_space.py +1271 -0
  548. sage/modules/finite_submodule_iter.cpython-314-aarch64-linux-gnu.so +0 -0
  549. sage/modules/finite_submodule_iter.pxd +27 -0
  550. sage/modules/finite_submodule_iter.pyx +452 -0
  551. sage/modules/fp_graded/all.py +1 -0
  552. sage/modules/fp_graded/element.py +346 -0
  553. sage/modules/fp_graded/free_element.py +298 -0
  554. sage/modules/fp_graded/free_homspace.py +53 -0
  555. sage/modules/fp_graded/free_module.py +1060 -0
  556. sage/modules/fp_graded/free_morphism.py +217 -0
  557. sage/modules/fp_graded/homspace.py +563 -0
  558. sage/modules/fp_graded/module.py +1340 -0
  559. sage/modules/fp_graded/morphism.py +1990 -0
  560. sage/modules/fp_graded/steenrod/all.py +1 -0
  561. sage/modules/fp_graded/steenrod/homspace.py +65 -0
  562. sage/modules/fp_graded/steenrod/module.py +477 -0
  563. sage/modules/fp_graded/steenrod/morphism.py +404 -0
  564. sage/modules/fp_graded/steenrod/profile.py +241 -0
  565. sage/modules/free_module.py +8447 -0
  566. sage/modules/free_module_element.cpython-314-aarch64-linux-gnu.so +0 -0
  567. sage/modules/free_module_element.pxd +22 -0
  568. sage/modules/free_module_element.pyx +5445 -0
  569. sage/modules/free_module_homspace.py +369 -0
  570. sage/modules/free_module_integer.py +896 -0
  571. sage/modules/free_module_morphism.py +823 -0
  572. sage/modules/free_module_pseudohomspace.py +352 -0
  573. sage/modules/free_module_pseudomorphism.py +578 -0
  574. sage/modules/free_quadratic_module.py +1706 -0
  575. sage/modules/free_quadratic_module_integer_symmetric.py +1790 -0
  576. sage/modules/matrix_morphism.py +1745 -0
  577. sage/modules/misc.py +103 -0
  578. sage/modules/module_functors.py +192 -0
  579. sage/modules/multi_filtered_vector_space.py +719 -0
  580. sage/modules/ore_module.py +2208 -0
  581. sage/modules/ore_module_element.py +178 -0
  582. sage/modules/ore_module_homspace.py +147 -0
  583. sage/modules/ore_module_morphism.py +968 -0
  584. sage/modules/quotient_module.py +699 -0
  585. sage/modules/real_double_vector.py +22 -0
  586. sage/modules/submodule.py +255 -0
  587. sage/modules/tensor_operations.py +567 -0
  588. sage/modules/torsion_quadratic_module.py +1352 -0
  589. sage/modules/tutorial_free_modules.py +248 -0
  590. sage/modules/vector_complex_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  591. sage/modules/vector_complex_double_dense.pxd +6 -0
  592. sage/modules/vector_complex_double_dense.pyx +117 -0
  593. sage/modules/vector_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  594. sage/modules/vector_double_dense.pxd +6 -0
  595. sage/modules/vector_double_dense.pyx +604 -0
  596. sage/modules/vector_integer_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  597. sage/modules/vector_integer_dense.pxd +15 -0
  598. sage/modules/vector_integer_dense.pyx +361 -0
  599. sage/modules/vector_integer_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  600. sage/modules/vector_integer_sparse.pxd +29 -0
  601. sage/modules/vector_integer_sparse.pyx +406 -0
  602. sage/modules/vector_modn_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  603. sage/modules/vector_modn_dense.pxd +12 -0
  604. sage/modules/vector_modn_dense.pyx +394 -0
  605. sage/modules/vector_modn_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  606. sage/modules/vector_modn_sparse.pxd +21 -0
  607. sage/modules/vector_modn_sparse.pyx +298 -0
  608. sage/modules/vector_numpy_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  609. sage/modules/vector_numpy_dense.pxd +15 -0
  610. sage/modules/vector_numpy_dense.pyx +304 -0
  611. sage/modules/vector_numpy_integer_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  612. sage/modules/vector_numpy_integer_dense.pxd +7 -0
  613. sage/modules/vector_numpy_integer_dense.pyx +54 -0
  614. sage/modules/vector_rational_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  615. sage/modules/vector_rational_dense.pxd +15 -0
  616. sage/modules/vector_rational_dense.pyx +387 -0
  617. sage/modules/vector_rational_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  618. sage/modules/vector_rational_sparse.pxd +30 -0
  619. sage/modules/vector_rational_sparse.pyx +413 -0
  620. sage/modules/vector_real_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  621. sage/modules/vector_real_double_dense.pxd +6 -0
  622. sage/modules/vector_real_double_dense.pyx +126 -0
  623. sage/modules/vector_space_homspace.py +430 -0
  624. sage/modules/vector_space_morphism.py +989 -0
  625. sage/modules/with_basis/all.py +15 -0
  626. sage/modules/with_basis/cell_module.py +494 -0
  627. sage/modules/with_basis/indexed_element.cpython-314-aarch64-linux-gnu.so +0 -0
  628. sage/modules/with_basis/indexed_element.pxd +13 -0
  629. sage/modules/with_basis/indexed_element.pyx +1058 -0
  630. sage/modules/with_basis/invariant.py +1075 -0
  631. sage/modules/with_basis/morphism.py +1636 -0
  632. sage/modules/with_basis/representation.py +2939 -0
  633. sage/modules/with_basis/subquotient.py +685 -0
  634. sage/numerical/all__sagemath_modules.py +6 -0
  635. sage/numerical/gauss_legendre.cpython-314-aarch64-linux-gnu.so +0 -0
  636. sage/numerical/gauss_legendre.pyx +381 -0
  637. sage/numerical/optimize.py +910 -0
  638. sage/probability/all.py +10 -0
  639. sage/probability/probability_distribution.cpython-314-aarch64-linux-gnu.so +0 -0
  640. sage/probability/probability_distribution.pyx +1242 -0
  641. sage/probability/random_variable.py +411 -0
  642. sage/quadratic_forms/all.py +4 -0
  643. sage/quadratic_forms/all__sagemath_modules.py +15 -0
  644. sage/quadratic_forms/binary_qf.py +2042 -0
  645. sage/quadratic_forms/bqf_class_group.py +748 -0
  646. sage/quadratic_forms/constructions.py +93 -0
  647. sage/quadratic_forms/count_local_2.cpython-314-aarch64-linux-gnu.so +0 -0
  648. sage/quadratic_forms/count_local_2.pyx +365 -0
  649. sage/quadratic_forms/extras.py +195 -0
  650. sage/quadratic_forms/quadratic_form.py +1753 -0
  651. sage/quadratic_forms/quadratic_form__count_local_2.py +221 -0
  652. sage/quadratic_forms/quadratic_form__equivalence_testing.py +708 -0
  653. sage/quadratic_forms/quadratic_form__evaluate.cpython-314-aarch64-linux-gnu.so +0 -0
  654. sage/quadratic_forms/quadratic_form__evaluate.pyx +139 -0
  655. sage/quadratic_forms/quadratic_form__local_density_congruence.py +977 -0
  656. sage/quadratic_forms/quadratic_form__local_field_invariants.py +1072 -0
  657. sage/quadratic_forms/quadratic_form__neighbors.py +424 -0
  658. sage/quadratic_forms/quadratic_form__reduction_theory.py +488 -0
  659. sage/quadratic_forms/quadratic_form__split_local_covering.py +416 -0
  660. sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +657 -0
  661. sage/quadratic_forms/quadratic_form__theta.py +352 -0
  662. sage/quadratic_forms/quadratic_form__variable_substitutions.py +370 -0
  663. sage/quadratic_forms/random_quadraticform.py +209 -0
  664. sage/quadratic_forms/ternary.cpython-314-aarch64-linux-gnu.so +0 -0
  665. sage/quadratic_forms/ternary.pyx +1154 -0
  666. sage/quadratic_forms/ternary_qf.py +2027 -0
  667. sage/rings/all__sagemath_modules.py +28 -0
  668. sage/rings/asymptotic/all__sagemath_modules.py +1 -0
  669. sage/rings/asymptotic/misc.py +1252 -0
  670. sage/rings/cc.py +4 -0
  671. sage/rings/cfinite_sequence.py +1306 -0
  672. sage/rings/complex_conversion.cpython-314-aarch64-linux-gnu.so +0 -0
  673. sage/rings/complex_conversion.pxd +8 -0
  674. sage/rings/complex_conversion.pyx +23 -0
  675. sage/rings/complex_double.cpython-314-aarch64-linux-gnu.so +0 -0
  676. sage/rings/complex_double.pxd +21 -0
  677. sage/rings/complex_double.pyx +2654 -0
  678. sage/rings/complex_mpc.cpython-314-aarch64-linux-gnu.so +0 -0
  679. sage/rings/complex_mpc.pxd +21 -0
  680. sage/rings/complex_mpc.pyx +2576 -0
  681. sage/rings/complex_mpfr.cpython-314-aarch64-linux-gnu.so +0 -0
  682. sage/rings/complex_mpfr.pxd +18 -0
  683. sage/rings/complex_mpfr.pyx +3602 -0
  684. sage/rings/derivation.py +2334 -0
  685. sage/rings/finite_rings/all__sagemath_modules.py +1 -0
  686. sage/rings/finite_rings/maps_finite_field.py +191 -0
  687. sage/rings/function_field/all__sagemath_modules.py +8 -0
  688. sage/rings/function_field/derivations.py +102 -0
  689. sage/rings/function_field/derivations_rational.py +132 -0
  690. sage/rings/function_field/differential.py +853 -0
  691. sage/rings/function_field/divisor.py +1107 -0
  692. sage/rings/function_field/drinfeld_modules/action.py +199 -0
  693. sage/rings/function_field/drinfeld_modules/all.py +1 -0
  694. sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +673 -0
  695. sage/rings/function_field/drinfeld_modules/drinfeld_module.py +2087 -0
  696. sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1131 -0
  697. sage/rings/function_field/drinfeld_modules/homset.py +420 -0
  698. sage/rings/function_field/drinfeld_modules/morphism.py +820 -0
  699. sage/rings/function_field/hermite_form_polynomial.cpython-314-aarch64-linux-gnu.so +0 -0
  700. sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
  701. sage/rings/function_field/khuri_makdisi.cpython-314-aarch64-linux-gnu.so +0 -0
  702. sage/rings/function_field/khuri_makdisi.pyx +935 -0
  703. sage/rings/invariants/all.py +4 -0
  704. sage/rings/invariants/invariant_theory.py +4597 -0
  705. sage/rings/invariants/reconstruction.py +395 -0
  706. sage/rings/polynomial/all__sagemath_modules.py +17 -0
  707. sage/rings/polynomial/integer_valued_polynomials.py +1230 -0
  708. sage/rings/polynomial/laurent_polynomial_mpair.cpython-314-aarch64-linux-gnu.so +0 -0
  709. sage/rings/polynomial/laurent_polynomial_mpair.pxd +15 -0
  710. sage/rings/polynomial/laurent_polynomial_mpair.pyx +2023 -0
  711. sage/rings/polynomial/ore_function_element.py +952 -0
  712. sage/rings/polynomial/ore_function_field.py +1028 -0
  713. sage/rings/polynomial/ore_polynomial_element.cpython-314-aarch64-linux-gnu.so +0 -0
  714. sage/rings/polynomial/ore_polynomial_element.pxd +48 -0
  715. sage/rings/polynomial/ore_polynomial_element.pyx +3145 -0
  716. sage/rings/polynomial/ore_polynomial_ring.py +1334 -0
  717. sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  718. sage/rings/polynomial/polynomial_real_mpfr_dense.pyx +788 -0
  719. sage/rings/polynomial/q_integer_valued_polynomials.py +1264 -0
  720. sage/rings/polynomial/skew_polynomial_element.cpython-314-aarch64-linux-gnu.so +0 -0
  721. sage/rings/polynomial/skew_polynomial_element.pxd +9 -0
  722. sage/rings/polynomial/skew_polynomial_element.pyx +684 -0
  723. sage/rings/polynomial/skew_polynomial_finite_field.cpython-314-aarch64-linux-gnu.so +0 -0
  724. sage/rings/polynomial/skew_polynomial_finite_field.pxd +19 -0
  725. sage/rings/polynomial/skew_polynomial_finite_field.pyx +1093 -0
  726. sage/rings/polynomial/skew_polynomial_finite_order.cpython-314-aarch64-linux-gnu.so +0 -0
  727. sage/rings/polynomial/skew_polynomial_finite_order.pxd +10 -0
  728. sage/rings/polynomial/skew_polynomial_finite_order.pyx +567 -0
  729. sage/rings/polynomial/skew_polynomial_ring.py +908 -0
  730. sage/rings/real_double_element_gsl.cpython-314-aarch64-linux-gnu.so +0 -0
  731. sage/rings/real_double_element_gsl.pxd +8 -0
  732. sage/rings/real_double_element_gsl.pyx +794 -0
  733. sage/rings/real_field.py +58 -0
  734. sage/rings/real_mpfr.cpython-314-aarch64-linux-gnu.so +0 -0
  735. sage/rings/real_mpfr.pxd +29 -0
  736. sage/rings/real_mpfr.pyx +6122 -0
  737. sage/rings/ring_extension.cpython-314-aarch64-linux-gnu.so +0 -0
  738. sage/rings/ring_extension.pxd +42 -0
  739. sage/rings/ring_extension.pyx +2779 -0
  740. sage/rings/ring_extension_conversion.cpython-314-aarch64-linux-gnu.so +0 -0
  741. sage/rings/ring_extension_conversion.pxd +16 -0
  742. sage/rings/ring_extension_conversion.pyx +462 -0
  743. sage/rings/ring_extension_element.cpython-314-aarch64-linux-gnu.so +0 -0
  744. sage/rings/ring_extension_element.pxd +21 -0
  745. sage/rings/ring_extension_element.pyx +1635 -0
  746. sage/rings/ring_extension_homset.py +64 -0
  747. sage/rings/ring_extension_morphism.cpython-314-aarch64-linux-gnu.so +0 -0
  748. sage/rings/ring_extension_morphism.pxd +35 -0
  749. sage/rings/ring_extension_morphism.pyx +920 -0
  750. sage/schemes/all__sagemath_modules.py +1 -0
  751. sage/schemes/projective/all__sagemath_modules.py +1 -0
  752. sage/schemes/projective/coherent_sheaf.py +300 -0
  753. sage/schemes/projective/cohomology.py +510 -0
  754. sage/stats/all.py +15 -0
  755. sage/stats/basic_stats.py +489 -0
  756. sage/stats/distributions/all.py +7 -0
  757. sage/stats/distributions/catalog.py +34 -0
  758. sage/stats/distributions/dgs.h +50 -0
  759. sage/stats/distributions/dgs.pxd +111 -0
  760. sage/stats/distributions/dgs_bern.h +400 -0
  761. sage/stats/distributions/dgs_gauss.h +614 -0
  762. sage/stats/distributions/dgs_misc.h +104 -0
  763. sage/stats/distributions/discrete_gaussian_integer.cpython-314-aarch64-linux-gnu.so +0 -0
  764. sage/stats/distributions/discrete_gaussian_integer.pxd +14 -0
  765. sage/stats/distributions/discrete_gaussian_integer.pyx +498 -0
  766. sage/stats/distributions/discrete_gaussian_lattice.py +908 -0
  767. sage/stats/distributions/discrete_gaussian_polynomial.py +141 -0
  768. sage/stats/hmm/all.py +15 -0
  769. sage/stats/hmm/chmm.cpython-314-aarch64-linux-gnu.so +0 -0
  770. sage/stats/hmm/chmm.pyx +1595 -0
  771. sage/stats/hmm/distributions.cpython-314-aarch64-linux-gnu.so +0 -0
  772. sage/stats/hmm/distributions.pxd +29 -0
  773. sage/stats/hmm/distributions.pyx +531 -0
  774. sage/stats/hmm/hmm.cpython-314-aarch64-linux-gnu.so +0 -0
  775. sage/stats/hmm/hmm.pxd +17 -0
  776. sage/stats/hmm/hmm.pyx +1388 -0
  777. sage/stats/hmm/util.cpython-314-aarch64-linux-gnu.so +0 -0
  778. sage/stats/hmm/util.pxd +7 -0
  779. sage/stats/hmm/util.pyx +165 -0
  780. sage/stats/intlist.cpython-314-aarch64-linux-gnu.so +0 -0
  781. sage/stats/intlist.pxd +14 -0
  782. sage/stats/intlist.pyx +588 -0
  783. sage/stats/r.py +49 -0
  784. sage/stats/time_series.cpython-314-aarch64-linux-gnu.so +0 -0
  785. sage/stats/time_series.pxd +6 -0
  786. sage/stats/time_series.pyx +2546 -0
  787. sage/tensor/all.py +2 -0
  788. sage/tensor/modules/all.py +8 -0
  789. sage/tensor/modules/alternating_contr_tensor.py +761 -0
  790. sage/tensor/modules/comp.py +5598 -0
  791. sage/tensor/modules/ext_pow_free_module.py +824 -0
  792. sage/tensor/modules/finite_rank_free_module.py +3589 -0
  793. sage/tensor/modules/format_utilities.py +333 -0
  794. sage/tensor/modules/free_module_alt_form.py +858 -0
  795. sage/tensor/modules/free_module_automorphism.py +1207 -0
  796. sage/tensor/modules/free_module_basis.py +1074 -0
  797. sage/tensor/modules/free_module_element.py +284 -0
  798. sage/tensor/modules/free_module_homset.py +652 -0
  799. sage/tensor/modules/free_module_linear_group.py +564 -0
  800. sage/tensor/modules/free_module_morphism.py +1581 -0
  801. sage/tensor/modules/free_module_tensor.py +3289 -0
  802. sage/tensor/modules/reflexive_module.py +386 -0
  803. sage/tensor/modules/tensor_free_module.py +780 -0
  804. sage/tensor/modules/tensor_free_submodule.py +538 -0
  805. sage/tensor/modules/tensor_free_submodule_basis.py +140 -0
  806. sage/tensor/modules/tensor_with_indices.py +1043 -0
@@ -0,0 +1,824 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ r"""
3
+ Exterior powers of free modules
4
+
5
+ Given a free module `M` of finite rank over a commutative ring `R`
6
+ and a positive integer `p`, the `p`-*th exterior power of* `M`
7
+ is the set `\Lambda^p(M)` of all alternating contravariant tensors of
8
+ degree `p` on `M`, i.e. of all multilinear maps
9
+
10
+ .. MATH::
11
+
12
+ \underbrace{M^*\times\cdots\times M^*}_{p\ \; \mbox{times}}
13
+ \longrightarrow R
14
+
15
+ that vanish whenever any of two of their arguments are equal
16
+ (`M^*` stands for the dual of `M`).
17
+ Note that `\Lambda^1(M) = M`. The exterior power
18
+ `\Lambda^p(M)` is a free module of rank `\binom{n}{p}` over `R`,
19
+ where `n` is the rank of `M`.
20
+
21
+ Similarly, the `p`-*th exterior power of the dual of* `M`
22
+ is the set `\Lambda^p(M^*)` of all alternating forms of degree `p` on
23
+ `M`, i.e. of all multilinear maps
24
+
25
+ .. MATH::
26
+
27
+ \underbrace{M\times\cdots\times M}_{p\ \; \mbox{times}}
28
+ \longrightarrow R
29
+
30
+ that vanish whenever any of two of their arguments are equal.
31
+ Note that `\Lambda^1(M^*) = M^*` (the dual of `M`). The exterior power
32
+ `\Lambda^p(M^*)` is a free module of rank `\binom{n}{p}` over `R`,
33
+ where `n` is the rank of `M`.
34
+
35
+ The class :class:`ExtPowerFreeModule` implements `\Lambda^p(M)`, while
36
+ the class :class:`ExtPowerDualFreeModule` implements `\Lambda^p(M^*)`.
37
+
38
+ AUTHORS:
39
+
40
+ - Eric Gourgoulhon: initial version, regarding `\Lambda^p(M^*)` only
41
+ (2015); add class for `\Lambda^p(M)` (2017)
42
+
43
+
44
+ REFERENCES:
45
+
46
+ - \K. Conrad: *Exterior powers* [Con2013]_
47
+ - Chap. 19 of S. Lang: *Algebra* [Lan2002]_
48
+ """
49
+ # ****************************************************************************
50
+ # Copyright (C) 2017 Eric Gourgoulhon <eric.gourgoulhon@obspm.fr>
51
+ #
52
+ # Distributed under the terms of the GNU General Public License (GPL)
53
+ # as published by the Free Software Foundation; either version 2 of
54
+ # the License, or (at your option) any later version.
55
+ # https://www.gnu.org/licenses/
56
+ # ****************************************************************************
57
+
58
+ from sage.misc.cachefunc import cached_method
59
+ from sage.rings.integer import Integer
60
+ from sage.rings.integer_ring import ZZ
61
+ from sage.tensor.modules.finite_rank_free_module import FiniteRankFreeModule_abstract
62
+ from sage.tensor.modules.free_module_tensor import FreeModuleTensor
63
+ from sage.tensor.modules.alternating_contr_tensor import AlternatingContrTensor
64
+ from sage.tensor.modules.free_module_alt_form import FreeModuleAltForm
65
+
66
+
67
+ class ExtPowerFreeModule(FiniteRankFreeModule_abstract):
68
+ r"""
69
+ Exterior power of a free module of finite rank over a commutative
70
+ ring.
71
+
72
+ Given a free module `M` of finite rank over a commutative ring `R`
73
+ and a positive integer `p`, the `p`-*th exterior power of* `M` is
74
+ the set `\Lambda^p(M)` of all alternating contravariant tensors of
75
+ degree `p` on `M`, i.e. of all multilinear maps
76
+
77
+ .. MATH::
78
+
79
+ \underbrace{M^*\times\cdots\times M^*}_{p\ \; \mbox{times}}
80
+ \longrightarrow R
81
+
82
+ that vanish whenever any of two of their arguments are equal.
83
+ Note that `\Lambda^1(M) = M`.
84
+
85
+ `\Lambda^p(M)` is a free module of rank `\binom{n}{p}` over
86
+ `R`, where `n` is the rank of `M`.
87
+ Accordingly, the class :class:`ExtPowerFreeModule` inherits from the
88
+ class
89
+ :class:`~sage.tensor.modules.finite_rank_free_module.FiniteRankFreeModule_abstract`.
90
+
91
+ This is a Sage *parent* class, whose *element* class is
92
+ :class:`~sage.tensor.modules.alternating_contr_tensor.AlternatingContrTensor`
93
+
94
+ INPUT:
95
+
96
+ - ``fmodule`` -- free module `M` of finite rank, as an instance of
97
+ :class:`~sage.tensor.modules.finite_rank_free_module.FiniteRankFreeModule`
98
+ - ``degree`` -- positive integer; the degree `p` of the alternating
99
+ elements
100
+ - ``name`` -- (default: ``None``) string; name given to `\Lambda^p(M)`
101
+ - ``latex_name`` -- (default: ``None``) string; LaTeX symbol to
102
+ denote `\Lambda^p(M)`
103
+
104
+ EXAMPLES:
105
+
106
+ 2nd exterior power of the dual of a free `\ZZ`-module of rank 3::
107
+
108
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
109
+ sage: e = M.basis('e')
110
+ sage: from sage.tensor.modules.ext_pow_free_module import ExtPowerFreeModule
111
+ sage: A = ExtPowerFreeModule(M, 2) ; A
112
+ 2nd exterior power of the Rank-3 free module M over the
113
+ Integer Ring
114
+
115
+ Instead of importing ExtPowerFreeModule in the global name space, it is
116
+ recommended to use the module's method
117
+ :meth:`~sage.tensor.modules.finite_rank_free_module.FiniteRankFreeModule.exterior_power`::
118
+
119
+ sage: A = M.exterior_power(2) ; A
120
+ 2nd exterior power of the Rank-3 free module M over the
121
+ Integer Ring
122
+ sage: latex(A)
123
+ \Lambda^{2}\left(M\right)
124
+
125
+ ``A`` is a module (actually a free module) over `\ZZ`::
126
+
127
+ sage: A.category()
128
+ Category of finite dimensional modules over Integer Ring
129
+ sage: A in Modules(ZZ)
130
+ True
131
+ sage: A.rank()
132
+ 3
133
+ sage: A.base_ring()
134
+ Integer Ring
135
+ sage: A.base_module()
136
+ Rank-3 free module M over the Integer Ring
137
+
138
+ ``A`` is a *parent* object, whose elements are alternating
139
+ contravariant tensors, represented by instances of the class
140
+ :class:`~sage.tensor.modules.alternating_contr_tensor.AlternatingContrTensor`::
141
+
142
+ sage: a = A.an_element() ; a
143
+ Alternating contravariant tensor of degree 2 on the Rank-3 free
144
+ module M over the Integer Ring
145
+ sage: a.display() # expansion with respect to M's default basis (e)
146
+ e_0∧e_1
147
+ sage: from sage.tensor.modules.alternating_contr_tensor import AlternatingContrTensor
148
+ sage: isinstance(a, AlternatingContrTensor)
149
+ True
150
+ sage: a in A
151
+ True
152
+ sage: A.is_parent_of(a)
153
+ True
154
+
155
+ Elements can be constructed from ``A``. In particular, 0 yields
156
+ the zero element of ``A``::
157
+
158
+ sage: A(0)
159
+ Alternating contravariant tensor zero of degree 2 on the Rank-3
160
+ free module M over the Integer Ring
161
+ sage: A(0) is A.zero()
162
+ True
163
+
164
+ while nonzero elements are constructed by providing their components in a
165
+ given basis::
166
+
167
+ sage: e
168
+ Basis (e_0,e_1,e_2) on the Rank-3 free module M over the Integer Ring
169
+ sage: comp = [[0,3,-1],[-3,0,4],[1,-4,0]]
170
+ sage: a = A(comp, basis=e, name='a') ; a
171
+ Alternating contravariant tensor a of degree 2 on the Rank-3
172
+ free module M over the Integer Ring
173
+ sage: a.display(e)
174
+ a = 3 e_0∧e_1 - e_0∧e_2 + 4 e_1∧e_2
175
+
176
+ An alternative is to construct the alternating contravariant tensor from an
177
+ empty list of components and to set the nonzero components afterwards::
178
+
179
+ sage: a = A([], name='a')
180
+ sage: a.set_comp(e)[0,1] = 3
181
+ sage: a.set_comp(e)[0,2] = -1
182
+ sage: a.set_comp(e)[1,2] = 4
183
+ sage: a.display(e)
184
+ a = 3 e_0∧e_1 - e_0∧e_2 + 4 e_1∧e_2
185
+
186
+ The exterior powers are unique::
187
+
188
+ sage: A is M.exterior_power(2)
189
+ True
190
+
191
+ The exterior power `\Lambda^1(M)` is nothing but `M`::
192
+
193
+ sage: M.exterior_power(1) is M
194
+ True
195
+
196
+ For a degree `p\geq 2`, there is a coercion
197
+ `\Lambda^p(M)\rightarrow T^{(p,0)}(M)`::
198
+
199
+ sage: T20 = M.tensor_module(2,0) ; T20
200
+ Free module of type-(2,0) tensors on the Rank-3 free module M
201
+ over the Integer Ring
202
+ sage: T20.has_coerce_map_from(A)
203
+ True
204
+
205
+ Of course, there is no coercion in the reverse direction::
206
+
207
+ sage: A.has_coerce_map_from(T20)
208
+ False
209
+
210
+ The coercion map `\Lambda^2(M)\rightarrow T^{(2,0)}(M)` in action::
211
+
212
+ sage: ta = T20(a) ; ta
213
+ Type-(2,0) tensor a on the Rank-3 free module M over the Integer Ring
214
+ sage: ta.display(e)
215
+ a = 3 e_0⊗e_1 - e_0⊗e_2 - 3 e_1⊗e_0 + 4 e_1⊗e_2 + e_2⊗e_0 - 4 e_2⊗e_1
216
+ sage: a.display(e)
217
+ a = 3 e_0∧e_1 - e_0∧e_2 + 4 e_1∧e_2
218
+ sage: ta.symmetries() # the antisymmetry is of course preserved
219
+ no symmetry; antisymmetry: (0, 1)
220
+ sage: ta == a # equality as type-(2,0) tensors
221
+ True
222
+ """
223
+
224
+ Element = AlternatingContrTensor
225
+
226
+ def __init__(self, fmodule, degree, name=None, latex_name=None):
227
+ r"""
228
+ TESTS::
229
+
230
+ sage: from sage.tensor.modules.ext_pow_free_module import ExtPowerFreeModule
231
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
232
+ sage: e = M.basis('e')
233
+ sage: A = ExtPowerFreeModule(M, 2) ; A
234
+ 2nd exterior power of the Rank-3 free module M over the
235
+ Integer Ring
236
+ sage: TestSuite(A).run()
237
+ """
238
+ from sage.arith.misc import binomial
239
+ from sage.typeset.unicode_characters import unicode_bigwedge
240
+ self._fmodule = fmodule
241
+ self._degree = ZZ(degree)
242
+ rank = binomial(fmodule._rank, degree)
243
+ if name is None and fmodule._name is not None:
244
+ name = unicode_bigwedge + r'^{}('.format(degree) \
245
+ + fmodule._name + ')'
246
+ if latex_name is None and fmodule._latex_name is not None:
247
+ latex_name = r'\Lambda^{' + str(degree) + r'}\left(' \
248
+ + fmodule._latex_name + r'\right)'
249
+ super().__init__(fmodule._ring, rank,
250
+ name=name, latex_name=latex_name)
251
+ fmodule._all_modules.add(self)
252
+
253
+ def construction(self):
254
+ r"""
255
+ Return the functorial construction of ``self``.
256
+
257
+ This implementation just returns ``None``, as no functorial construction is implemented.
258
+
259
+ TESTS::
260
+
261
+ sage: from sage.tensor.modules.ext_pow_free_module import ExtPowerFreeModule
262
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
263
+ sage: e = M.basis('e')
264
+ sage: A = ExtPowerFreeModule(M, 2)
265
+ sage: A.construction() is None
266
+ True
267
+ """
268
+ # No construction until https://github.com/sagemath/sage/issues/30242
269
+ # makes this a quotient of TensorFreeModule
270
+ return None
271
+
272
+ #### Parent methods
273
+
274
+ def _element_constructor_(self, comp=[], basis=None, name=None,
275
+ latex_name=None):
276
+ r"""
277
+ Construct an alternating contravariant tensor.
278
+
279
+ EXAMPLES::
280
+
281
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
282
+ sage: e = M.basis('e')
283
+ sage: A = M.exterior_power(2)
284
+ sage: a = A._element_constructor_(0) ; a
285
+ Alternating contravariant tensor zero of degree 2 on the
286
+ Rank-3 free module M over the Integer Ring
287
+ sage: a = A._element_constructor_([], name='a') ; a
288
+ Alternating contravariant tensor a of degree 2 on the Rank-3
289
+ free module M over the Integer Ring
290
+ sage: a[e,0,2], a[e,1,2] = 3, -1
291
+ sage: a.display()
292
+ a = 3 e_0∧e_2 - e_1∧e_2
293
+ """
294
+ if isinstance(comp, (int, Integer)) and comp == 0:
295
+ return self.zero()
296
+ resu = self.element_class(self._fmodule, self._degree, name=name,
297
+ latex_name=latex_name)
298
+ if comp:
299
+ resu.set_comp(basis)[:] = comp
300
+ return resu
301
+
302
+ def _an_element_(self):
303
+ r"""
304
+ Construct some (unnamed) alternating contravariant tensor.
305
+
306
+ EXAMPLES::
307
+
308
+ sage: M = FiniteRankFreeModule(QQ, 4, name='M')
309
+ sage: e = M.basis('e')
310
+ sage: a = M.exterior_power(2)._an_element_() ; a
311
+ Alternating contravariant tensor of degree 2 on the 4-dimensional vector space M
312
+ over the Rational Field
313
+ sage: a.display()
314
+ 1/2 e_0∧e_1
315
+ sage: a = M.exterior_power(3)._an_element_() ; a
316
+ Alternating contravariant tensor of degree 3 on the 4-dimensional vector space M
317
+ over the Rational Field
318
+ sage: a.display()
319
+ 1/2 e_0∧e_1∧e_2
320
+ sage: a = M.exterior_power(4)._an_element_() ; a
321
+ Alternating contravariant tensor of degree 4 on the 4-dimensional vector space M
322
+ over the Rational Field
323
+ sage: a.display()
324
+ 1/2 e_0∧e_1∧e_2∧e_3
325
+
326
+ TESTS:
327
+
328
+ When the base module has no default basis, a default
329
+ basis will be set for it::
330
+
331
+ sage: M2 = FiniteRankFreeModule(QQ, 4, name='M2')
332
+ sage: a = M2.exterior_power(2)._an_element_(); a
333
+ Alternating contravariant tensor of degree 2
334
+ on the 4-dimensional vector space M2 over the Rational Field
335
+ sage: a + a
336
+ Alternating contravariant tensor of degree 2
337
+ on the 4-dimensional vector space M2 over the Rational Field
338
+ sage: M2.default_basis()
339
+ Basis (e_0,e_1,e_2,e_3) on the 4-dimensional vector space M2 over the Rational Field
340
+ """
341
+ resu = self.element_class(self._fmodule, self._degree)
342
+ # Make sure that the base module has a default basis
343
+ self._fmodule.an_element()
344
+ sindex = self._fmodule._sindex
345
+ ind = [sindex + i for i in range(resu._tensor_rank)]
346
+ resu.set_comp()[ind] = self._fmodule._ring.an_element()
347
+ return resu
348
+
349
+ #### End of parent methods
350
+
351
+ @cached_method
352
+ def zero(self):
353
+ r"""
354
+ Return the zero of ``self``.
355
+
356
+ EXAMPLES::
357
+
358
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
359
+ sage: e = M.basis('e')
360
+ sage: A = M.exterior_power(2)
361
+ sage: A.zero()
362
+ Alternating contravariant tensor zero of degree 2 on the Rank-3 free
363
+ module M over the Integer Ring
364
+ sage: A(0) is A.zero()
365
+ True
366
+ """
367
+ resu = self._element_constructor_(name='zero', latex_name='0')
368
+ for basis in self._fmodule._known_bases:
369
+ resu._add_comp_unsafe(basis)
370
+ # (since new components are initialized to zero)
371
+ resu._is_zero = True # This element is certainly zero
372
+ resu.set_immutable()
373
+ return resu
374
+
375
+ def _repr_(self):
376
+ r"""
377
+ Return a string representation of ``self``.
378
+
379
+ EXAMPLES::
380
+
381
+ sage: M = FiniteRankFreeModule(ZZ, 5, name='M')
382
+ sage: M.exterior_power(2)._repr_()
383
+ '2nd exterior power of the Rank-5 free module M over the Integer Ring'
384
+ sage: M.exterior_power(3)._repr_()
385
+ '3rd exterior power of the Rank-5 free module M over the Integer Ring'
386
+ sage: M.exterior_power(4)._repr_()
387
+ '4th exterior power of the Rank-5 free module M over the Integer Ring'
388
+ sage: M.exterior_power(5)._repr_()
389
+ '5th exterior power of the Rank-5 free module M over the Integer Ring'
390
+ sage: M.exterior_power(21)._repr_()
391
+ '21st exterior power of the Rank-5 free module M over the Integer Ring'
392
+ """
393
+ description = "{}".format(self._degree.ordinal_str())
394
+ description += " exterior power of the {}".format(self._fmodule)
395
+ return description
396
+
397
+ def base_module(self):
398
+ r"""
399
+ Return the free module on which ``self`` is constructed.
400
+
401
+ OUTPUT:
402
+
403
+ - instance of :class:`FiniteRankFreeModule` representing the
404
+ free module on which the exterior power is defined.
405
+
406
+ EXAMPLES::
407
+
408
+ sage: M = FiniteRankFreeModule(ZZ, 5, name='M')
409
+ sage: A = M.exterior_power(2)
410
+ sage: A.base_module()
411
+ Rank-5 free module M over the Integer Ring
412
+ sage: A.base_module() is M
413
+ True
414
+ """
415
+ return self._fmodule
416
+
417
+ def degree(self):
418
+ r"""
419
+ Return the degree of ``self``.
420
+
421
+ OUTPUT:
422
+
423
+ - integer `p` such that ``self`` is the exterior power
424
+ `\Lambda^p(M)`
425
+
426
+ EXAMPLES::
427
+
428
+ sage: M = FiniteRankFreeModule(ZZ, 5, name='M')
429
+ sage: A = M.exterior_power(2)
430
+ sage: A.degree()
431
+ 2
432
+ sage: M.exterior_power(4).degree()
433
+ 4
434
+ """
435
+ return self._degree
436
+
437
+ #***********************************************************************
438
+
439
+
440
+ class ExtPowerDualFreeModule(FiniteRankFreeModule_abstract):
441
+ r"""
442
+ Exterior power of the dual of a free module of finite rank
443
+ over a commutative ring.
444
+
445
+ Given a free module `M` of finite rank over a commutative ring `R`
446
+ and a positive integer `p`, the `p`-*th exterior power of the dual of*
447
+ `M` is the set `\Lambda^p(M^*)` of all alternating forms of degree
448
+ `p` on `M`, i.e. of all multilinear maps
449
+
450
+ .. MATH::
451
+
452
+ \underbrace{M\times\cdots\times M}_{p\ \; \mbox{times}}
453
+ \longrightarrow R
454
+
455
+ that vanish whenever any of two of their arguments are equal.
456
+ Note that `\Lambda^1(M^*) = M^*` (the dual of `M`).
457
+
458
+ `\Lambda^p(M^*)` is a free module of rank `\binom{n}{p}` over
459
+ `R`, where `n` is the rank of `M`.
460
+ Accordingly, the class :class:`ExtPowerDualFreeModule` inherits from
461
+ the class
462
+ :class:`~sage.tensor.modules.finite_rank_free_module.FiniteRankFreeModule_abstract`.
463
+
464
+ This is a Sage *parent* class, whose *element* class is
465
+ :class:`~sage.tensor.modules.free_module_alt_form.FreeModuleAltForm`.
466
+
467
+ INPUT:
468
+
469
+ - ``fmodule`` -- free module `M` of finite rank, as an instance of
470
+ :class:`~sage.tensor.modules.finite_rank_free_module.FiniteRankFreeModule`
471
+ - ``degree`` -- positive integer; the degree `p` of the alternating
472
+ forms
473
+ - ``name`` -- (default: ``None``) string; name given to `\Lambda^p(M^*)`
474
+ - ``latex_name`` -- (default: ``None``) string; LaTeX symbol to
475
+ denote `\Lambda^p(M^*)`
476
+
477
+ EXAMPLES:
478
+
479
+ 2nd exterior power of the dual of a free `\ZZ`-module of rank 3::
480
+
481
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
482
+ sage: e = M.basis('e')
483
+ sage: from sage.tensor.modules.ext_pow_free_module import ExtPowerDualFreeModule
484
+ sage: A = ExtPowerDualFreeModule(M, 2) ; A
485
+ 2nd exterior power of the dual of the Rank-3 free module M over the
486
+ Integer Ring
487
+
488
+ Instead of importing ExtPowerDualFreeModule in the global name space,
489
+ it is recommended to use the module's method
490
+ :meth:`~sage.tensor.modules.finite_rank_free_module.FiniteRankFreeModule.dual_exterior_power`::
491
+
492
+ sage: A = M.dual_exterior_power(2) ; A
493
+ 2nd exterior power of the dual of the Rank-3 free module M over the
494
+ Integer Ring
495
+ sage: latex(A)
496
+ \Lambda^{2}\left(M^*\right)
497
+
498
+ ``A`` is a module (actually a free module) over `\ZZ`::
499
+
500
+ sage: A.category()
501
+ Category of finite dimensional modules over Integer Ring
502
+ sage: A in Modules(ZZ)
503
+ True
504
+ sage: A.rank()
505
+ 3
506
+ sage: A.base_ring()
507
+ Integer Ring
508
+ sage: A.base_module()
509
+ Rank-3 free module M over the Integer Ring
510
+
511
+ ``A`` is a *parent* object, whose elements are alternating forms,
512
+ represented by instances of the class
513
+ :class:`~sage.tensor.modules.free_module_alt_form.FreeModuleAltForm`::
514
+
515
+ sage: a = A.an_element() ; a
516
+ Alternating form of degree 2 on the Rank-3 free module M over the
517
+ Integer Ring
518
+ sage: a.display() # expansion with respect to M's default basis (e)
519
+ e^0∧e^1
520
+ sage: from sage.tensor.modules.free_module_alt_form import FreeModuleAltForm
521
+ sage: isinstance(a, FreeModuleAltForm)
522
+ True
523
+ sage: a in A
524
+ True
525
+ sage: A.is_parent_of(a)
526
+ True
527
+
528
+ Elements can be constructed from ``A``. In particular, 0 yields
529
+ the zero element of ``A``::
530
+
531
+ sage: A(0)
532
+ Alternating form zero of degree 2 on the Rank-3 free module M over the
533
+ Integer Ring
534
+ sage: A(0) is A.zero()
535
+ True
536
+
537
+ while nonzero elements are constructed by providing their components in a
538
+ given basis::
539
+
540
+ sage: e
541
+ Basis (e_0,e_1,e_2) on the Rank-3 free module M over the Integer Ring
542
+ sage: comp = [[0,3,-1],[-3,0,4],[1,-4,0]]
543
+ sage: a = A(comp, basis=e, name='a') ; a
544
+ Alternating form a of degree 2 on the Rank-3 free module M over the
545
+ Integer Ring
546
+ sage: a.display(e)
547
+ a = 3 e^0∧e^1 - e^0∧e^2 + 4 e^1∧e^2
548
+
549
+ An alternative is to construct the alternating form from an empty list of
550
+ components and to set the nonzero components afterwards::
551
+
552
+ sage: a = A([], name='a')
553
+ sage: a.set_comp(e)[0,1] = 3
554
+ sage: a.set_comp(e)[0,2] = -1
555
+ sage: a.set_comp(e)[1,2] = 4
556
+ sage: a.display(e)
557
+ a = 3 e^0∧e^1 - e^0∧e^2 + 4 e^1∧e^2
558
+
559
+ The exterior powers are unique::
560
+
561
+ sage: A is M.dual_exterior_power(2)
562
+ True
563
+
564
+ The exterior power `\Lambda^1(M^*)` is nothing but `M^*`::
565
+
566
+ sage: M.dual_exterior_power(1) is M.dual()
567
+ True
568
+ sage: M.dual()
569
+ Dual of the Rank-3 free module M over the Integer Ring
570
+ sage: latex(M.dual())
571
+ M^*
572
+
573
+ It also coincides with the module of type-`(0,1)` tensors::
574
+
575
+ sage: M.dual_exterior_power(1) is M.tensor_module(0,1)
576
+ True
577
+
578
+ For a degree `p\geq 2`, there is a coercion map
579
+ `\Lambda^p(M^*)\rightarrow T^{(0,p)}(M)`::
580
+
581
+ sage: T02 = M.tensor_module(0,2) ; T02
582
+ Free module of type-(0,2) tensors on the Rank-3 free module M over the
583
+ Integer Ring
584
+ sage: T02.has_coerce_map_from(A)
585
+ True
586
+ sage: A.has_coerce_map_from(T02)
587
+ False
588
+
589
+ The coercion map `\Lambda^2(M^*)\rightarrow T^{(0,2)}(M)` in action::
590
+
591
+ sage: ta = T02(a) ; ta
592
+ Type-(0,2) tensor a on the Rank-3 free module M over the Integer Ring
593
+ sage: ta.display(e)
594
+ a = 3 e^0⊗e^1 - e^0⊗e^2 - 3 e^1⊗e^0 + 4 e^1⊗e^2 + e^2⊗e^0 - 4 e^2⊗e^1
595
+ sage: a.display(e)
596
+ a = 3 e^0∧e^1 - e^0∧e^2 + 4 e^1∧e^2
597
+ sage: ta.symmetries() # the antisymmetry is of course preserved
598
+ no symmetry; antisymmetry: (0, 1)
599
+ """
600
+
601
+ Element = FreeModuleAltForm
602
+
603
+ def __init__(self, fmodule, degree, name=None, latex_name=None):
604
+ r"""
605
+ TESTS::
606
+
607
+ sage: from sage.tensor.modules.ext_pow_free_module import ExtPowerDualFreeModule
608
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
609
+ sage: e = M.basis('e')
610
+ sage: A = ExtPowerDualFreeModule(M, 2) ; A
611
+ 2nd exterior power of the dual of the Rank-3 free module M over
612
+ the Integer Ring
613
+ sage: TestSuite(A).run()
614
+ """
615
+ from sage.arith.misc import binomial
616
+ from sage.typeset.unicode_characters import unicode_bigwedge
617
+ self._fmodule = fmodule
618
+ self._degree = ZZ(degree)
619
+ rank = binomial(fmodule._rank, degree)
620
+ if name is None and fmodule._name is not None:
621
+ name = unicode_bigwedge + r'^{}('.format(degree) \
622
+ + fmodule._name + '*)'
623
+ if latex_name is None and fmodule._latex_name is not None:
624
+ latex_name = r'\Lambda^{' + str(degree) + r'}\left(' \
625
+ + fmodule._latex_name + r'^*\right)'
626
+ super().__init__(fmodule._ring, rank, name=name,
627
+ latex_name=latex_name)
628
+ fmodule._all_modules.add(self)
629
+
630
+ def construction(self):
631
+ r"""
632
+ Return the functorial construction of ``self``.
633
+
634
+ This implementation just returns ``None``, as no functorial construction is implemented.
635
+
636
+ TESTS::
637
+
638
+ sage: from sage.tensor.modules.ext_pow_free_module import ExtPowerDualFreeModule
639
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
640
+ sage: e = M.basis('e')
641
+ sage: A = ExtPowerDualFreeModule(M, 2)
642
+ sage: A.construction() is None
643
+ True
644
+ """
645
+ # No construction until https://github.com/sagemath/sage/issues/30242
646
+ # makes this a quotient of TensorFreeModule
647
+ return None
648
+
649
+ #### Parent methods
650
+
651
+ def _element_constructor_(self, comp=[], basis=None, name=None,
652
+ latex_name=None):
653
+ r"""
654
+ Construct an alternating form.
655
+
656
+ EXAMPLES::
657
+
658
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
659
+ sage: e = M.basis('e')
660
+ sage: A = M.dual_exterior_power(2)
661
+ sage: a = A._element_constructor_(0) ; a
662
+ Alternating form zero of degree 2 on the Rank-3 free module M over
663
+ the Integer Ring
664
+ sage: a = A._element_constructor_([], name='a') ; a
665
+ Alternating form a of degree 2 on the Rank-3 free module M over
666
+ the Integer Ring
667
+ sage: a[e,0,2], a[e,1,2] = 3, -1
668
+ sage: a.display()
669
+ a = 3 e^0∧e^2 - e^1∧e^2
670
+ """
671
+ if isinstance(comp, (int, Integer)) and comp == 0:
672
+ return self.zero()
673
+ if isinstance(comp, FreeModuleTensor):
674
+ # coercion of a tensor of type (0,1) to a linear form
675
+ tensor = comp # for readability
676
+ if tensor.tensor_type() == (0,1) and self._degree == 1 and \
677
+ tensor.base_module() is self._fmodule:
678
+ resu = self.element_class(self._fmodule, 1, name=tensor._name,
679
+ latex_name=tensor._latex_name)
680
+ for basis, comp in tensor._components.items():
681
+ resu._components[basis] = comp.copy()
682
+ return resu
683
+ else:
684
+ raise TypeError("cannot coerce the {} ".format(tensor) +
685
+ "to an element of {}".format(self))
686
+ # standard construction
687
+ resu = self.element_class(self._fmodule, self._degree, name=name,
688
+ latex_name=latex_name)
689
+ if comp:
690
+ resu.set_comp(basis)[:] = comp
691
+ return resu
692
+
693
+ def _an_element_(self):
694
+ r"""
695
+ Construct some (unnamed) alternating form.
696
+
697
+ EXAMPLES::
698
+
699
+ sage: M = FiniteRankFreeModule(QQ, 4, name='M')
700
+ sage: e = M.basis('e')
701
+ sage: a = M.dual_exterior_power(2)._an_element_() ; a
702
+ Alternating form of degree 2 on the 4-dimensional vector space M
703
+ over the Rational Field
704
+ sage: a.display()
705
+ 1/2 e^0∧e^1
706
+ sage: a = M.dual_exterior_power(3)._an_element_() ; a
707
+ Alternating form of degree 3 on the 4-dimensional vector space M
708
+ over the Rational Field
709
+ sage: a.display()
710
+ 1/2 e^0∧e^1∧e^2
711
+ sage: a = M.dual_exterior_power(4)._an_element_() ; a
712
+ Alternating form of degree 4 on the 4-dimensional vector space M
713
+ over the Rational Field
714
+ sage: a.display()
715
+ 1/2 e^0∧e^1∧e^2∧e^3
716
+
717
+ TESTS:
718
+
719
+ When the base module has no default basis, a default
720
+ basis will be set for it::
721
+
722
+ sage: M2 = FiniteRankFreeModule(QQ, 4, name='M2')
723
+ sage: a = M2.dual_exterior_power(2)._an_element_(); a
724
+ Alternating form of degree 2 on the 4-dimensional vector space M2 over the Rational Field
725
+ sage: a + a
726
+ Alternating form of degree 2 on the 4-dimensional vector space M2 over the Rational Field
727
+ sage: M2.default_basis()
728
+ Basis (e_0,e_1,e_2,e_3) on the 4-dimensional vector space M2 over the Rational Field
729
+ """
730
+ resu = self.element_class(self._fmodule, self._degree)
731
+ # Make sure that the base module has a default basis
732
+ self._fmodule.an_element()
733
+ sindex = self._fmodule._sindex
734
+ ind = [sindex + i for i in range(resu._tensor_rank)]
735
+ resu.set_comp()[ind] = self._fmodule._ring.an_element()
736
+ return resu
737
+
738
+ #### End of parent methods
739
+
740
+ @cached_method
741
+ def zero(self):
742
+ r"""
743
+ Return the zero of ``self``.
744
+
745
+ EXAMPLES::
746
+
747
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
748
+ sage: e = M.basis('e')
749
+ sage: A = M.dual_exterior_power(2)
750
+ sage: A.zero()
751
+ Alternating form zero of degree 2 on the Rank-3 free module M over
752
+ the Integer Ring
753
+ sage: A(0) is A.zero()
754
+ True
755
+ """
756
+ resu = self._element_constructor_(name='zero', latex_name='0')
757
+ for basis in self._fmodule._known_bases:
758
+ resu._components[basis] = resu._new_comp(basis)
759
+ # (since new components are initialized to zero)
760
+ resu._is_zero = True # This element is certainly zero
761
+ resu.set_immutable()
762
+ return resu
763
+
764
+ def _repr_(self):
765
+ r"""
766
+ Return a string representation of ``self``.
767
+
768
+ EXAMPLES::
769
+
770
+ sage: M = FiniteRankFreeModule(ZZ, 5, name='M')
771
+ sage: M.dual_exterior_power(2)._repr_()
772
+ '2nd exterior power of the dual of the Rank-5 free module M over the Integer Ring'
773
+ sage: M.dual_exterior_power(3)._repr_()
774
+ '3rd exterior power of the dual of the Rank-5 free module M over the Integer Ring'
775
+ sage: M.dual_exterior_power(4)._repr_()
776
+ '4th exterior power of the dual of the Rank-5 free module M over the Integer Ring'
777
+ sage: M.dual_exterior_power(5)._repr_()
778
+ '5th exterior power of the dual of the Rank-5 free module M over the Integer Ring'
779
+ sage: M.dual_exterior_power(21)._repr_()
780
+ '21st exterior power of the dual of the Rank-5 free module M over the Integer Ring'
781
+ """
782
+ description = "{}".format(self._degree.ordinal_str())
783
+ description += " exterior power of the dual of the {}".format(
784
+ self._fmodule)
785
+ return description
786
+
787
+ def base_module(self):
788
+ r"""
789
+ Return the free module on which ``self`` is constructed.
790
+
791
+ OUTPUT:
792
+
793
+ - instance of :class:`FiniteRankFreeModule` representing the free
794
+ module on which the exterior power is defined.
795
+
796
+ EXAMPLES::
797
+
798
+ sage: M = FiniteRankFreeModule(ZZ, 5, name='M')
799
+ sage: A = M.dual_exterior_power(2)
800
+ sage: A.base_module()
801
+ Rank-5 free module M over the Integer Ring
802
+ sage: A.base_module() is M
803
+ True
804
+ """
805
+ return self._fmodule
806
+
807
+ def degree(self):
808
+ r"""
809
+ Return the degree of ``self``.
810
+
811
+ OUTPUT:
812
+
813
+ - integer `p` such that ``self`` is the exterior power `\Lambda^p(M^*)`
814
+
815
+ EXAMPLES::
816
+
817
+ sage: M = FiniteRankFreeModule(ZZ, 5, name='M')
818
+ sage: A = M.dual_exterior_power(2)
819
+ sage: A.degree()
820
+ 2
821
+ sage: M.dual_exterior_power(4).degree()
822
+ 4
823
+ """
824
+ return self._degree