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,858 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ r"""
3
+ Alternating forms on free modules
4
+
5
+ Given a free module `M` of finite rank over a commutative ring `R`
6
+ and a positive integer `p`, an *alternating form of degree* `p` on `M` is
7
+ a map
8
+
9
+ .. MATH::
10
+
11
+ a:\ \underbrace{M\times\cdots\times M}_{p\ \; \mbox{times}}
12
+ \longrightarrow R
13
+
14
+ that (i) is multilinear and (ii) vanishes whenever any of two of its
15
+ arguments are equal.
16
+ An alternating form of degree `p` is a tensor on `M` of type `(0,p)`.
17
+
18
+ Alternating forms are implemented via the class :class:`FreeModuleAltForm`,
19
+ which is a subclass of the generic tensor class
20
+ :class:`~sage.tensor.modules.free_module_tensor.FreeModuleTensor`.
21
+
22
+ AUTHORS:
23
+
24
+ - Eric Gourgoulhon, Michal Bejger (2014-2015): initial version
25
+
26
+ REFERENCES:
27
+
28
+ - Chap. 23 of R. Godement : *Algebra* [God1968]_
29
+ - Chap. 15 of S. Lang : *Algebra* [Lan2002]_
30
+ """
31
+ #******************************************************************************
32
+ # Copyright (C) 2015 Eric Gourgoulhon <eric.gourgoulhon@obspm.fr>
33
+ # Copyright (C) 2015 Michal Bejger <bejger@camk.edu.pl>
34
+ #
35
+ # Distributed under the terms of the GNU General Public License (GPL)
36
+ # as published by the Free Software Foundation; either version 2 of
37
+ # the License, or (at your option) any later version.
38
+ # http://www.gnu.org/licenses/
39
+ #******************************************************************************
40
+
41
+ from sage.tensor.modules.free_module_tensor import FreeModuleTensor
42
+ from sage.tensor.modules.comp import Components, CompFullyAntiSym
43
+
44
+
45
+ class FreeModuleAltForm(FreeModuleTensor):
46
+ r"""
47
+ Alternating form on a free module of finite rank over a commutative ring.
48
+
49
+ This is a Sage *element* class, the corresponding *parent* class being
50
+ :class:`~sage.tensor.modules.ext_pow_free_module.ExtPowerDualFreeModule`.
51
+
52
+ INPUT:
53
+
54
+ - ``fmodule`` -- free module `M` of finite rank over a commutative ring
55
+ `R`, as an instance of
56
+ :class:`~sage.tensor.modules.finite_rank_free_module.FiniteRankFreeModule`
57
+ - ``degree`` -- positive integer; the degree `p` of the
58
+ alternating form (i.e. its tensor rank)
59
+ - ``name`` -- (default: ``None``) string; name given to the alternating
60
+ form
61
+ - ``latex_name`` -- (default: ``None``) string; LaTeX symbol to denote the
62
+ alternating form; if none is provided, ``name`` is used
63
+
64
+ EXAMPLES:
65
+
66
+ Alternating form of degree 2 on a rank-3 free module::
67
+
68
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M', start_index=1)
69
+ sage: e = M.basis('e')
70
+ sage: a = M.alternating_form(2, name='a') ; a
71
+ Alternating form a of degree 2 on the
72
+ Rank-3 free module M over the Integer Ring
73
+ sage: type(a)
74
+ <class 'sage.tensor.modules.ext_pow_free_module.ExtPowerDualFreeModule_with_category.element_class'>
75
+ sage: a.parent()
76
+ 2nd exterior power of the dual of the Rank-3 free module M over the Integer Ring
77
+ sage: a[1,2], a[2,3] = 4, -3
78
+ sage: a.display(e)
79
+ a = 4 e^1∧e^2 - 3 e^2∧e^3
80
+
81
+ The alternating form acting on the basis elements::
82
+
83
+ sage: a(e[1],e[2])
84
+ 4
85
+ sage: a(e[1],e[3])
86
+ 0
87
+ sage: a(e[2],e[3])
88
+ -3
89
+ sage: a(e[2],e[1])
90
+ -4
91
+
92
+ An alternating form of degree 1 is a linear form::
93
+
94
+ sage: b = M.linear_form('b') ; b
95
+ Linear form b on the Rank-3 free module M over the Integer Ring
96
+ sage: b[:] = [2,-1,3] # components w.r.t. the module's default basis (e)
97
+
98
+ A linear form is a tensor of type `(0,1)`::
99
+
100
+ sage: b.tensor_type()
101
+ (0, 1)
102
+
103
+ It is an element of the dual module::
104
+
105
+ sage: b.parent()
106
+ Dual of the Rank-3 free module M over the Integer Ring
107
+ sage: b.parent() is M.dual()
108
+ True
109
+
110
+ The members of a dual basis are linear forms::
111
+
112
+ sage: e.dual_basis()[1]
113
+ Linear form e^1 on the Rank-3 free module M over the Integer Ring
114
+ sage: e.dual_basis()[2]
115
+ Linear form e^2 on the Rank-3 free module M over the Integer Ring
116
+ sage: e.dual_basis()[3]
117
+ Linear form e^3 on the Rank-3 free module M over the Integer Ring
118
+
119
+ Any linear form is expanded onto them::
120
+
121
+ sage: b.display(e)
122
+ b = 2 e^1 - e^2 + 3 e^3
123
+
124
+ In the above example, an equivalent writing would have been
125
+ ``b.display()``, since the basis ``e`` is the module's default basis.
126
+ A linear form maps module elements to ring elements::
127
+
128
+ sage: v = M([1,1,1])
129
+ sage: b(v)
130
+ 4
131
+ sage: b(v) in M.base_ring()
132
+ True
133
+
134
+ Test of linearity::
135
+
136
+ sage: u = M([-5,-2,7])
137
+ sage: b(3*u - 4*v) == 3*b(u) - 4*b(v)
138
+ True
139
+
140
+ The standard tensor operations apply to alternating forms, like the
141
+ extraction of components with respect to a given basis::
142
+
143
+ sage: a[e,1,2]
144
+ 4
145
+ sage: a[1,2] # since e is the module's default basis
146
+ 4
147
+ sage: all( a[i,j] == - a[j,i] for i in {1,2,3} for j in {1,2,3} )
148
+ True
149
+
150
+ the tensor product::
151
+
152
+ sage: c = b*b ; c
153
+ Symmetric bilinear form b⊗b on the Rank-3 free module M over the
154
+ Integer Ring
155
+ sage: c.parent()
156
+ Free module of type-(0,2) tensors on the Rank-3 free module M over the
157
+ Integer Ring
158
+ sage: c.display(e)
159
+ b⊗b = 4 e^1⊗e^1 - 2 e^1⊗e^2 + 6 e^1⊗e^3 - 2 e^2⊗e^1 + e^2⊗e^2
160
+ - 3 e^2⊗e^3 + 6 e^3⊗e^1 - 3 e^3⊗e^2 + 9 e^3⊗e^3
161
+
162
+ the contractions::
163
+
164
+ sage: s = a.contract(v) ; s
165
+ Linear form on the Rank-3 free module M over the Integer Ring
166
+ sage: s.parent()
167
+ Dual of the Rank-3 free module M over the Integer Ring
168
+ sage: s.display(e)
169
+ 4 e^1 - 7 e^2 + 3 e^3
170
+
171
+ or tensor arithmetics::
172
+
173
+ sage: s = 3*a + c ; s
174
+ Type-(0,2) tensor on the Rank-3 free module M over the Integer Ring
175
+ sage: s.parent()
176
+ Free module of type-(0,2) tensors on the Rank-3 free module M over the
177
+ Integer Ring
178
+ sage: s.display(e)
179
+ 4 e^1⊗e^1 + 10 e^1⊗e^2 + 6 e^1⊗e^3 - 14 e^2⊗e^1 + e^2⊗e^2
180
+ - 12 e^2⊗e^3 + 6 e^3⊗e^1 + 6 e^3⊗e^2 + 9 e^3⊗e^3
181
+
182
+ Note that tensor arithmetics preserves the alternating character if both
183
+ operands are alternating::
184
+
185
+ sage: s = a - 2*a ; s
186
+ Alternating form of degree 2 on the Rank-3 free module M over the
187
+ Integer Ring
188
+ sage: s.parent() # note the difference with s = 3*a + c above
189
+ 2nd exterior power of the dual of the Rank-3 free module M over the
190
+ Integer Ring
191
+ sage: s == -a
192
+ True
193
+
194
+ An operation specific to alternating forms is of course the exterior
195
+ product::
196
+
197
+ sage: s = a.wedge(b) ; s
198
+ Alternating form a∧b of degree 3 on the Rank-3 free module M over the
199
+ Integer Ring
200
+ sage: s.parent()
201
+ 3rd exterior power of the dual of the Rank-3 free module M over the
202
+ Integer Ring
203
+ sage: s.display(e)
204
+ a∧b = 6 e^1∧e^2∧e^3
205
+ sage: s[1,2,3] == a[1,2]*b[3] + a[2,3]*b[1] + a[3,1]*b[2]
206
+ True
207
+
208
+ The exterior product is nilpotent on linear forms::
209
+
210
+ sage: s = b.wedge(b) ; s
211
+ Alternating form zero of degree 2 on the Rank-3 free module M over the
212
+ Integer Ring
213
+ sage: s.display(e)
214
+ zero = 0
215
+ """
216
+ def __init__(self, fmodule, degree, name=None, latex_name=None):
217
+ r"""
218
+ Initialize ``self``.
219
+
220
+ TESTS::
221
+
222
+ sage: from sage.tensor.modules.free_module_alt_form import FreeModuleAltForm
223
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
224
+ sage: e = M.basis('e')
225
+ sage: a = FreeModuleAltForm(M, 2, name='a')
226
+ sage: a[e,0,1] = 2
227
+ sage: TestSuite(a).run(skip='_test_category') # see below
228
+
229
+ In the above test suite, _test_category fails because a is not an
230
+ instance of a.parent().category().element_class. Actually alternating
231
+ forms must be constructed via ExtPowerDualFreeModule.element_class and
232
+ not by a direct call to FreeModuleAltForm::
233
+
234
+ sage: a1 = M.dual_exterior_power(2).element_class(M, 2, name='a')
235
+ sage: a1[e,0,1] = 2
236
+ sage: TestSuite(a1).run()
237
+ """
238
+ FreeModuleTensor.__init__(self, fmodule, (0,degree), name=name,
239
+ latex_name=latex_name,
240
+ antisym=range(degree),
241
+ parent=fmodule.dual_exterior_power(degree))
242
+
243
+ def _repr_(self):
244
+ r"""
245
+ Return a string representation of ``self``.
246
+
247
+ EXAMPLES::
248
+
249
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
250
+ sage: M.alternating_form(1)
251
+ Linear form on the Rank-3 free module M over the Integer Ring
252
+ sage: M.alternating_form(1, name='a')
253
+ Linear form a on the Rank-3 free module M over the Integer Ring
254
+ sage: M.alternating_form(2)
255
+ Alternating form of degree 2 on the
256
+ Rank-3 free module M over the Integer Ring
257
+ sage: M.alternating_form(2, name='a')
258
+ Alternating form a of degree 2 on the
259
+ Rank-3 free module M over the Integer Ring
260
+ """
261
+ if self._tensor_rank == 1:
262
+ description = "Linear form "
263
+ if self._name is not None:
264
+ description += self._name + " "
265
+ else:
266
+ description = "Alternating form "
267
+ if self._name is not None:
268
+ description += self._name + " "
269
+ description += "of degree {} ".format(self._tensor_rank)
270
+ description += "on the {}".format(self._fmodule)
271
+ return description
272
+
273
+ def _new_instance(self):
274
+ r"""
275
+ Create an instance of the same class as ``self``, on the same module
276
+ and of the same degree.
277
+
278
+ EXAMPLES::
279
+
280
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
281
+ sage: a = M.alternating_form(1)
282
+ sage: a._new_instance()
283
+ Linear form on the Rank-3 free module M over the Integer Ring
284
+ sage: a._new_instance().parent() is a.parent()
285
+ True
286
+ sage: b = M.alternating_form(2, name='b')
287
+ sage: b._new_instance()
288
+ Alternating form of degree 2 on the
289
+ Rank-3 free module M over the Integer Ring
290
+ sage: b._new_instance().parent() is b.parent()
291
+ True
292
+ """
293
+ return self.__class__(self._fmodule, self._tensor_rank)
294
+
295
+ def _new_comp(self, basis):
296
+ r"""
297
+ Create some (uninitialized) components of ``self`` in a given basis.
298
+
299
+ This method, which is already implemented in
300
+ :meth:`FreeModuleTensor._new_comp`, is redefined here for efficiency.
301
+
302
+ INPUT:
303
+
304
+ - ``basis`` -- basis of the free module on which ``self`` is defined
305
+
306
+ OUTPUT:
307
+
308
+ - an instance of :class:`~sage.tensor.modules.comp.CompFullyAntiSym`,
309
+ or of :class:`~sage.tensor.modules.comp.Components` if
310
+ the degree of ``self`` is 1.
311
+
312
+ EXAMPLES::
313
+
314
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
315
+ sage: e = M.basis('e')
316
+ sage: a = M.alternating_form(2, name='a')
317
+ sage: a._new_comp(e)
318
+ Fully antisymmetric 2-indices components w.r.t. Basis (e_0,e_1,e_2)
319
+ on the Rank-3 free module M over the Integer Ring
320
+ sage: a = M.alternating_form(1)
321
+ sage: a._new_comp(e)
322
+ 1-index components w.r.t. Basis (e_0,e_1,e_2) on the Rank-3 free
323
+ module M over the Integer Ring
324
+ """
325
+ fmodule = self._fmodule # the base free module
326
+ if self._tensor_rank == 1:
327
+ return Components(fmodule._ring, basis, 1,
328
+ start_index=fmodule._sindex,
329
+ output_formatter=fmodule._output_formatter)
330
+
331
+ return CompFullyAntiSym(fmodule._ring, basis, self._tensor_rank,
332
+ start_index=fmodule._sindex,
333
+ output_formatter=fmodule._output_formatter)
334
+
335
+ def degree(self):
336
+ r"""
337
+ Return the degree of ``self``.
338
+
339
+ EXAMPLES::
340
+
341
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
342
+ sage: a = M.alternating_form(2, name='a')
343
+ sage: a.degree()
344
+ 2
345
+ """
346
+ return self._tensor_rank
347
+
348
+ def _display_expansion(self, basis=None, format_spec=None):
349
+ r"""
350
+ Return the pure expansion of ``self`` w.r.t. a given module basis.
351
+
352
+ The expansion is actually performed onto exterior products of elements
353
+ of the cobasis (dual basis) associated with ``basis`` (see examples
354
+ below). The output is either text-formatted (console mode) or
355
+ LaTeX-formatted (notebook mode).
356
+
357
+ INPUT:
358
+
359
+ - ``basis`` -- (default: ``None``) basis of the free module with
360
+ respect to which the alternating form is expanded; if none is
361
+ provided, the module's default basis is assumed
362
+ - ``format_spec`` -- (default: ``None``) format specification passed
363
+ to ``self._fmodule._output_formatter`` to format the output
364
+
365
+ TESTS:
366
+
367
+ Expansion display of an alternating form of degree 1 (linear form) on a
368
+ rank-3 free module::
369
+
370
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
371
+ sage: e = M.basis('e')
372
+ sage: e.dual_basis()
373
+ Dual basis (e^0,e^1,e^2) on the Rank-3 free module M over the Integer Ring
374
+ sage: a = M.linear_form('a', latex_name=r'\alpha')
375
+ sage: a[:] = [1,-3,4]
376
+ sage: a._display_expansion(e)
377
+ e^0 - 3 e^1 + 4 e^2
378
+ sage: a._display_expansion() # a shortcut since e is M's default basis
379
+ e^0 - 3 e^1 + 4 e^2
380
+ sage: latex(a._display_expansion()) # display in the notebook
381
+ e^{0} -3 e^{1} + 4 e^{2}
382
+ """
383
+ from sage.misc.latex import latex
384
+ from sage.typeset.unicode_characters import unicode_wedge
385
+ from .format_utilities import is_atomic, FormattedExpansion
386
+ basis, format_spec = self._preparse_display(basis=basis,
387
+ format_spec=format_spec)
388
+ cobasis = basis.dual_basis()
389
+ comp = self.comp(basis)
390
+ terms_txt = []
391
+ terms_latex = []
392
+ for ind in comp.non_redundant_index_generator():
393
+ ind_arg = ind + (format_spec,)
394
+ coef = comp[ind_arg]
395
+ # Check whether the coefficient is zero, preferably via
396
+ # the fast method is_trivial_zero():
397
+ if hasattr(coef, 'is_trivial_zero'):
398
+ zero_coef = coef.is_trivial_zero()
399
+ else:
400
+ zero_coef = coef == 0
401
+ if not zero_coef:
402
+ bases_txt = []
403
+ bases_latex = []
404
+ for k in range(self._tensor_rank):
405
+ bases_txt.append(cobasis[ind[k]]._name)
406
+ bases_latex.append(latex(cobasis[ind[k]]))
407
+ basis_term_txt = unicode_wedge.join(bases_txt)
408
+ basis_term_latex = r'\wedge '.join(bases_latex)
409
+ coef_txt = repr(coef)
410
+ if coef_txt == '1':
411
+ terms_txt.append(basis_term_txt)
412
+ terms_latex.append(basis_term_latex)
413
+ elif coef_txt == '-1':
414
+ terms_txt.append('-' + basis_term_txt)
415
+ terms_latex.append('-' + basis_term_latex)
416
+ else:
417
+ coef_latex = latex(coef)
418
+ if is_atomic(coef_txt):
419
+ terms_txt.append(coef_txt + ' ' + basis_term_txt)
420
+ else:
421
+ terms_txt.append('(' + coef_txt + ') ' +
422
+ basis_term_txt)
423
+ if is_atomic(coef_latex):
424
+ terms_latex.append(coef_latex + basis_term_latex)
425
+ else:
426
+ terms_latex.append(r'\left(' + coef_latex +
427
+ r'\right)' + basis_term_latex)
428
+ if not terms_txt:
429
+ expansion_txt = '0'
430
+ else:
431
+ expansion_txt = terms_txt[0]
432
+ for term in terms_txt[1:]:
433
+ if term[0] == '-':
434
+ expansion_txt += ' - ' + term[1:]
435
+ else:
436
+ expansion_txt += ' + ' + term
437
+ if not terms_latex:
438
+ expansion_latex = '0'
439
+ else:
440
+ expansion_latex = terms_latex[0]
441
+ for term in terms_latex[1:]:
442
+ if term[0] == '-':
443
+ expansion_latex += term
444
+ else:
445
+ expansion_latex += '+' + term
446
+ return FormattedExpansion(expansion_txt, expansion_latex)
447
+
448
+ def display(self, basis=None, format_spec=None):
449
+ r"""
450
+ Display the alternating form ``self`` in terms of its expansion w.r.t.
451
+ a given module basis.
452
+
453
+ The expansion is actually performed onto exterior products of elements
454
+ of the cobasis (dual basis) associated with ``basis`` (see examples
455
+ below). The output is either text-formatted (console mode) or
456
+ LaTeX-formatted (notebook mode).
457
+
458
+ INPUT:
459
+
460
+ - ``basis`` -- (default: ``None``) basis of the free module with
461
+ respect to which the alternating form is expanded; if none is
462
+ provided, the module's default basis is assumed
463
+ - ``format_spec`` -- (default: ``None``) format specification passed
464
+ to ``self._fmodule._output_formatter`` to format the output
465
+
466
+ EXAMPLES:
467
+
468
+ Display of an alternating form of degree 1 (linear form) on a rank-3
469
+ free module::
470
+
471
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
472
+ sage: e = M.basis('e')
473
+ sage: e.dual_basis()
474
+ Dual basis (e^0,e^1,e^2) on the Rank-3 free module M over the Integer Ring
475
+ sage: a = M.linear_form('a', latex_name=r'\alpha')
476
+ sage: a[:] = [1,-3,4]
477
+ sage: a.display(e)
478
+ a = e^0 - 3 e^1 + 4 e^2
479
+ sage: a.display() # a shortcut since e is M's default basis
480
+ a = e^0 - 3 e^1 + 4 e^2
481
+ sage: latex(a.display()) # display in the notebook
482
+ \alpha = e^{0} -3 e^{1} + 4 e^{2}
483
+
484
+ A shortcut is ``disp()``::
485
+
486
+ sage: a.disp()
487
+ a = e^0 - 3 e^1 + 4 e^2
488
+
489
+ Display of an alternating form of degree 2 on a rank-3 free module::
490
+
491
+ sage: b = M.alternating_form(2, 'b', latex_name=r'\beta')
492
+ sage: b[0,1], b[0,2], b[1,2] = 3, 2, -1
493
+ sage: b.display()
494
+ b = 3 e^0∧e^1 + 2 e^0∧e^2 - e^1∧e^2
495
+ sage: latex(b.display()) # display in the notebook
496
+ \beta = 3 e^{0}\wedge e^{1} + 2 e^{0}\wedge e^{2} -e^{1}\wedge e^{2}
497
+
498
+ Display of an alternating form of degree 3 on a rank-3 free module::
499
+
500
+ sage: c = M.alternating_form(3, 'c')
501
+ sage: c[0,1,2] = 4
502
+ sage: c.display()
503
+ c = 4 e^0∧e^1∧e^2
504
+ sage: latex(c.display())
505
+ c = 4 e^{0}\wedge e^{1}\wedge e^{2}
506
+
507
+ Display of a vanishing alternating form::
508
+
509
+ sage: c[0,1,2] = 0 # the only independent component set to zero
510
+ sage: c.is_zero()
511
+ True
512
+ sage: c.display()
513
+ c = 0
514
+ sage: latex(c.display())
515
+ c = 0
516
+ sage: c[0,1,2] = 4 # value restored for what follows
517
+
518
+ Display in a basis which is not the default one::
519
+
520
+ sage: aut = M.automorphism(matrix=[[0,1,0], [0,0,-1], [1,0,0]],
521
+ ....: basis=e)
522
+ sage: f = e.new_basis(aut, 'f')
523
+ sage: a.display(f)
524
+ a = 4 f^0 + f^1 + 3 f^2
525
+ sage: a.disp(f) # shortcut notation
526
+ a = 4 f^0 + f^1 + 3 f^2
527
+ sage: b.display(f)
528
+ b = -2 f^0∧f^1 - f^0∧f^2 - 3 f^1∧f^2
529
+ sage: c.display(f)
530
+ c = -4 f^0∧f^1∧f^2
531
+
532
+ The output format can be set via the argument ``output_formatter``
533
+ passed at the module construction::
534
+
535
+ sage: N = FiniteRankFreeModule(QQ, 3, name='N', start_index=1,
536
+ ....: output_formatter=Rational.numerical_approx)
537
+ sage: e = N.basis('e')
538
+ sage: b = N.alternating_form(2, 'b')
539
+ sage: b[1,2], b[1,3], b[2,3] = 1/3, 5/2, 4
540
+ sage: b.display() # default format (53 bits of precision)
541
+ b = 0.333333333333333 e^1∧e^2 + 2.50000000000000 e^1∧e^3
542
+ + 4.00000000000000 e^2∧e^3
543
+
544
+ The output format is then controlled by the argument ``format_spec`` of
545
+ the method :meth:`display`::
546
+
547
+ sage: b.display(format_spec=10) # 10 bits of precision
548
+ b = 0.33 e^1∧e^2 + 2.5 e^1∧e^3 + 4.0 e^2∧e^3
549
+
550
+ Check that the bug reported in :issue:`22520` is fixed::
551
+
552
+ sage: # needs sage.symbolic
553
+ sage: M = FiniteRankFreeModule(SR, 2, name='M')
554
+ sage: e = M.basis('e')
555
+ sage: a = M.alternating_form(2)
556
+ sage: a[0,1] = SR.var('t', domain='real')
557
+ sage: a.display()
558
+ t e^0∧e^1
559
+ """
560
+ from sage.misc.latex import latex
561
+ from sage.tensor.modules.format_utilities import FormattedExpansion
562
+ exp = self._display_expansion(basis=basis, format_spec=format_spec)
563
+ if self._name is None:
564
+ resu_txt = repr(exp)
565
+ else:
566
+ resu_txt = self._name + " = " + repr(exp)
567
+ if self._latex_name is None:
568
+ resu_latex = latex(exp)
569
+ else:
570
+ resu_latex = latex(self) + " = " + latex(exp)
571
+ return FormattedExpansion(resu_txt, resu_latex)
572
+
573
+ disp = display
574
+
575
+ def wedge(self, other):
576
+ r"""
577
+ Exterior product of ``self`` with the alternating form ``other``.
578
+
579
+ INPUT:
580
+
581
+ - ``other`` -- an alternating form
582
+
583
+ OUTPUT:
584
+
585
+ - instance of :class:`FreeModuleAltForm` representing the exterior
586
+ product ``self ∧ other``
587
+
588
+ EXAMPLES:
589
+
590
+ Exterior product of two linear forms::
591
+
592
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
593
+ sage: e = M.basis('e')
594
+ sage: a = M.linear_form('A')
595
+ sage: a[:] = [1,-3,4]
596
+ sage: b = M.linear_form('B')
597
+ sage: b[:] = [2,-1,2]
598
+ sage: c = a.wedge(b) ; c
599
+ Alternating form A∧B of degree 2 on the Rank-3 free module M
600
+ over the Integer Ring
601
+ sage: c.display()
602
+ A∧B = 5 e^0∧e^1 - 6 e^0∧e^2 - 2 e^1∧e^2
603
+ sage: latex(c)
604
+ A\wedge B
605
+ sage: latex(c.display())
606
+ A\wedge B = 5 e^{0}\wedge e^{1} -6 e^{0}\wedge e^{2} -2 e^{1}\wedge e^{2}
607
+
608
+ Test of the computation::
609
+
610
+ sage: a.wedge(b) == a*b - b*a
611
+ True
612
+
613
+ Exterior product of a linear form and an alternating form of degree 2::
614
+
615
+ sage: d = M.linear_form('D')
616
+ sage: d[:] = [-1,2,4]
617
+ sage: s = d.wedge(c) ; s
618
+ Alternating form D∧A∧B of degree 3 on the Rank-3 free module M
619
+ over the Integer Ring
620
+ sage: s.display()
621
+ D∧A∧B = 34 e^0∧e^1∧e^2
622
+
623
+ Test of the computation::
624
+
625
+ sage: s[0,1,2] == d[0]*c[1,2] + d[1]*c[2,0] + d[2]*c[0,1]
626
+ True
627
+
628
+ Let us check that the exterior product is associative::
629
+
630
+ sage: d.wedge(a.wedge(b)) == (d.wedge(a)).wedge(b)
631
+ True
632
+
633
+ and that it is graded anticommutative::
634
+
635
+ sage: a.wedge(b) == - b.wedge(a)
636
+ True
637
+ sage: d.wedge(c) == c.wedge(d)
638
+ True
639
+ """
640
+ from sage.typeset.unicode_characters import unicode_wedge
641
+ from .format_utilities import is_atomic
642
+ if not isinstance(other, FreeModuleAltForm):
643
+ raise TypeError("the second argument for the exterior product " +
644
+ "must be an alternating form")
645
+ if other._tensor_rank == 0:
646
+ return other * self
647
+ if self._tensor_rank == 0:
648
+ return self * other
649
+ fmodule = self._fmodule
650
+ rank_r = self._tensor_rank + other._tensor_rank
651
+ # Facilitate computations involving zero:
652
+ if rank_r > fmodule._rank:
653
+ return fmodule.dual_exterior_power(rank_r).zero()
654
+ if self._is_zero or other._is_zero:
655
+ return fmodule.dual_exterior_power(rank_r).zero()
656
+ if self is other and (self._tensor_rank % 2) == 1:
657
+ return fmodule.dual_exterior_power(rank_r).zero()
658
+ # Generic case:
659
+ basis = self.common_basis(other)
660
+ if basis is None:
661
+ raise ValueError("no common basis for the exterior product")
662
+ cmp_s = self._components[basis]
663
+ cmp_o = other._components[basis]
664
+ cmp_r = CompFullyAntiSym(fmodule._ring, basis, rank_r,
665
+ start_index=fmodule._sindex,
666
+ output_formatter=fmodule._output_formatter)
667
+ for ind_s, val_s in cmp_s._comp.items():
668
+ for ind_o, val_o in cmp_o._comp.items():
669
+ ind_r = ind_s + ind_o
670
+ if len(ind_r) == len(set(ind_r)): # all indices are different
671
+ cmp_r[[ind_r]] += val_s * val_o
672
+ result = fmodule.alternating_form(rank_r)
673
+ result._components[basis] = cmp_r
674
+ if self._name is not None and other._name is not None:
675
+ sname = self._name
676
+ oname = other._name
677
+ if not is_atomic(sname):
678
+ sname = '(' + sname + ')'
679
+ if not is_atomic(oname):
680
+ oname = '(' + oname + ')'
681
+ result._name = sname + unicode_wedge + oname
682
+ if self._latex_name is not None and other._latex_name is not None:
683
+ slname = self._latex_name
684
+ olname = other._latex_name
685
+ if not is_atomic(slname):
686
+ slname = '(' + slname + ')'
687
+ if not is_atomic(olname):
688
+ olname = '(' + olname + ')'
689
+ result._latex_name = slname + r'\wedge ' + olname
690
+ return result
691
+
692
+ def interior_product(self, alt_tensor):
693
+ r"""
694
+ Interior product with an alternating contravariant tensor.
695
+
696
+ If ``self`` is an alternating form `A` of degree `p` and `B` is an
697
+ alternating contravariant tensor of degree `q\geq p` on the same free
698
+ module, the interior product of `A` by `B` is the alternating
699
+ contravariant tensor `\iota_A B` of degree `q-p` defined by
700
+
701
+ .. MATH::
702
+
703
+ (\iota_A B)^{i_1\ldots i_{q-p}} = A_{k_1\ldots k_p}
704
+ B^{k_1\ldots k_p i_1\ldots i_{q-p}}
705
+
706
+ .. NOTE::
707
+
708
+ ``A.interior_product(B)`` yields the same result as
709
+ ``A.contract(0,..., p-1, B, 0,..., p-1)`` (cf.
710
+ :meth:`~sage.tensor.modules.free_module_tensor.FreeModuleTensor.contract`),
711
+ but ``interior_product`` is more efficient, the alternating
712
+ character of `A` being not used to reduce the computation in
713
+ :meth:`~sage.tensor.modules.free_module_tensor.FreeModuleTensor.contract`
714
+
715
+ INPUT:
716
+
717
+ - ``alt_tensor`` -- alternating contravariant tensor `B` (instance of
718
+ :class:`~sage.tensor.modules.alternating_contr_tensor.AlternatingContrTensor`);
719
+ the degree of `B` must be at least equal to the degree of ``self``
720
+
721
+ OUTPUT:
722
+
723
+ - element of the base ring (case `p=q`) or
724
+ :class:`~sage.tensor.modules.alternating_contr_tensor.AlternatingContrTensor`
725
+ (case `p<q`) representing the interior product `\iota_A B`, where `A`
726
+ is ``self``
727
+
728
+ .. SEEALSO::
729
+
730
+ :meth:`~sage.tensor.modules.alternating_contr_tensor.AlternatingContrTensor.interior_product`
731
+ for the interior product of an alternating contravariant tensor by
732
+ an alternating form
733
+
734
+ EXAMPLES:
735
+
736
+ Let us consider a rank-3 free module::
737
+
738
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M', start_index=1)
739
+ sage: e = M.basis('e')
740
+
741
+ and various interior products on it, starting with a linear form
742
+ (``p=1``) and a module element (``q=1``)::
743
+
744
+ sage: a = M.linear_form(name='A')
745
+ sage: a[:] = [-2, 4, 3]
746
+ sage: b = M([3, 1, 5], basis=e, name='B')
747
+ sage: c = a.interior_product(b); c
748
+ 13
749
+ sage: c == a.contract(b)
750
+ True
751
+
752
+ Case ``p=1`` and ``q=2``::
753
+
754
+ sage: b = M.alternating_contravariant_tensor(2, name='B')
755
+ sage: b[1,2], b[1,3], b[2,3] = 5, 2, 3
756
+ sage: c = a.interior_product(b); c
757
+ Element i_A B of the Rank-3 free module M over the Integer Ring
758
+ sage: c.display()
759
+ i_A B = -26 e_1 - 19 e_2 + 8 e_3
760
+ sage: latex(c)
761
+ \iota_{A} B
762
+ sage: c == a.contract(b)
763
+ True
764
+
765
+ Case ``p=1`` and ``q=3``::
766
+
767
+ sage: b = M.alternating_contravariant_tensor(3, name='B')
768
+ sage: b[1,2,3] = 5
769
+ sage: c = a.interior_product(b); c
770
+ Alternating contravariant tensor i_A B of degree 2 on the Rank-3 free module M over the Integer Ring
771
+ sage: c.display()
772
+ i_A B = 15 e_1∧e_2 - 20 e_1∧e_3 - 10 e_2∧e_3
773
+ sage: c == a.contract(b)
774
+ True
775
+
776
+ Case ``p=2`` and ``q=2``::
777
+
778
+ sage: a = M.alternating_form(2, name='A')
779
+ sage: a[1,2], a[1,3], a[2,3] = 2, -3, 1
780
+ sage: b = M.alternating_contravariant_tensor(2, name='B')
781
+ sage: b[1,2], b[1,3], b[2,3] = 5, 2, 3
782
+ sage: c = a.interior_product(b); c
783
+ 14
784
+ sage: c == a.contract(0, 1, b, 0, 1) # contraction on all indices of a
785
+ True
786
+
787
+ Case ``p=2`` and ``q=3``::
788
+
789
+ sage: b = M.alternating_contravariant_tensor(3, name='B')
790
+ sage: b[1,2,3] = 5
791
+ sage: c = a.interior_product(b); c
792
+ Element i_A B of the Rank-3 free module M over the Integer Ring
793
+ sage: c.display()
794
+ i_A B = 10 e_1 + 30 e_2 + 20 e_3
795
+ sage: c == a.contract(0, 1, b, 0, 1)
796
+ True
797
+
798
+ Case ``p=3`` and ``q=3``::
799
+
800
+ sage: a = M.alternating_form(3, name='A')
801
+ sage: a[1,2,3] = -2
802
+ sage: c = a.interior_product(b); c
803
+ -60
804
+ sage: c == a.contract(0, 1, 2, b, 0, 1, 2)
805
+ True
806
+ """
807
+ from .format_utilities import is_atomic
808
+ from .alternating_contr_tensor import AlternatingContrTensor
809
+ if not isinstance(alt_tensor, AlternatingContrTensor):
810
+ raise TypeError("{} is not an alternating ".format(alt_tensor) +
811
+ "contravariant tensor")
812
+ p_res = alt_tensor._tensor_rank - self._tensor_rank # degree of result
813
+ if self._tensor_rank == 1:
814
+ # Case p = 1:
815
+ res = self.contract(alt_tensor) # contract() deals efficiently
816
+ # with antisymmetry for p = 1
817
+ else:
818
+ # Case p > 1:
819
+ if alt_tensor._fmodule != self._fmodule:
820
+ raise ValueError("{} is not defined on ".format(alt_tensor) +
821
+ "the same module as the {}".format(self))
822
+ if alt_tensor._tensor_rank < self._tensor_rank:
823
+ raise ValueError("the degree of the {} ".format(alt_tensor) +
824
+ "is lower than that of the {}".format(self))
825
+ # Interior product at the component level:
826
+ basis = self.common_basis(alt_tensor)
827
+ if basis is None:
828
+ raise ValueError("no common basis for the interior product")
829
+ comp = self._components[basis].interior_product(
830
+ alt_tensor._components[basis])
831
+ if p_res == 0:
832
+ res = comp # result is a scalar
833
+ else:
834
+ res = self._fmodule.tensor_from_comp((p_res, 0), comp)
835
+ # Name of the result
836
+ res_name = None
837
+ if self._name is not None and alt_tensor._name is not None:
838
+ sname = self._name
839
+ oname = alt_tensor._name
840
+ if not is_atomic(sname):
841
+ sname = '(' + sname + ')'
842
+ if not is_atomic(oname):
843
+ oname = '(' + oname + ')'
844
+ res_name = 'i_' + sname + ' ' + oname
845
+ res_latex_name = None
846
+ if self._latex_name is not None and alt_tensor._latex_name is not None:
847
+ slname = self._latex_name
848
+ olname = alt_tensor._latex_name
849
+ if not is_atomic(olname):
850
+ olname = r'\left(' + olname + r'\right)'
851
+ res_latex_name = r'\iota_{' + slname + '} ' + olname
852
+ if res_name:
853
+ try: # there is no guarantee that the result has set_name
854
+ # and is mutable
855
+ res.set_name(res_name, latex_name=res_latex_name)
856
+ except (AttributeError, TypeError, ValueError):
857
+ pass
858
+ return res