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

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

Potentially problematic release.


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

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