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,699 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ r"""
3
+ Quotients of free modules
4
+
5
+ AUTHORS:
6
+
7
+ - William Stein (2009): initial version
8
+
9
+ - Kwankyu Lee (2022-05): added quotient module over domain
10
+ """
11
+
12
+ # ****************************************************************************
13
+ # Copyright (C) 2009 William Stein <wstein@gmail.com>
14
+ #
15
+ # This program is free software: you can redistribute it and/or modify
16
+ # it under the terms of the GNU General Public License as published by
17
+ # the Free Software Foundation, either version 2 of the License, or
18
+ # (at your option) any later version.
19
+ # https://www.gnu.org/licenses/
20
+ # ****************************************************************************
21
+
22
+ from sage.modules.free_module import (
23
+ FreeModule_ambient,
24
+ FreeModule_ambient_field,
25
+ Module_free_ambient,
26
+ )
27
+
28
+ ###############################################################################
29
+ #
30
+ # Quotients of ambient free modules over a domain
31
+ #
32
+ ###############################################################################
33
+
34
+
35
+ class QuotientModule_free_ambient(Module_free_ambient):
36
+ """
37
+ Quotients of ambient free modules by a submodule.
38
+
39
+ INPUT:
40
+
41
+ - ``module`` -- an ambient free module
42
+
43
+ - ``sub`` -- a submodule of ``module``
44
+
45
+ EXAMPLES::
46
+
47
+ sage: S.<x,y,z> = PolynomialRing(QQ)
48
+ sage: M = S**2
49
+ sage: N = M.submodule([vector([x - y, z]), vector([y*z, x*z])])
50
+ sage: M.quotient_module(N)
51
+ Quotient module by Submodule of Ambient free module of rank 2 over
52
+ the integral domain Multivariate Polynomial Ring in x, y, z over Rational Field
53
+ Generated by the rows of the matrix:
54
+ [x - y z]
55
+ [ y*z x*z]
56
+ """
57
+ def __init__(self, module, sub):
58
+ """
59
+ Create this quotient module of ``module`` by a submodule ``sub``.
60
+
61
+ TESTS::
62
+
63
+ sage: S.<x,y,z> = PolynomialRing(QQ)
64
+ sage: M = S**2
65
+ sage: N = M.submodule([vector([x - y, z]), vector([y*z, x*z])])
66
+ sage: Q = M.quotient_module(N)
67
+ sage: TestSuite(Q).run(skip=['_test_elements', '_test_pickling', '_test_zero'])
68
+ """
69
+ base_ring = module.base_ring()
70
+ degree = module.degree()
71
+ sparse = module.is_sparse()
72
+ # We store these in order to retain the information of how this was constructed
73
+ self._module = module
74
+ self._sub = sub
75
+ self.__hash = hash((self._module, self._sub))
76
+
77
+ # We then convert the data into maps from free modules
78
+ if isinstance(module, QuotientModule_free_ambient):
79
+ self._free_cover = module.cover()
80
+ C = self._free_cover.element_class
81
+ v = [C(self._free_cover, x.list(), coerce=False, copy=False) for x in sub.gens()]
82
+ w = [C(self._free_cover, x.list(), coerce=False, copy=False) for x in module.free_relations().gens()]
83
+ self._relations = self._free_cover.submodule(v + w, check=False)
84
+ else: # Otherwise module should be a free module
85
+ self._free_cover = module
86
+ self._relations = sub
87
+
88
+ Module_free_ambient.__init__(self, base_ring, degree=degree, sparse=sparse)
89
+
90
+ def _repr_(self):
91
+ r"""
92
+ Return the string representation of this quotient module.
93
+
94
+ EXAMPLES::
95
+
96
+ sage: S.<x,y,z> = PolynomialRing(QQ)
97
+ sage: M = S**2
98
+ sage: N = M.submodule([vector([x - y, z]), vector([y*z , x*z])])
99
+ sage: M.quotient_module(N)
100
+ Quotient module by Submodule of Ambient free module of rank 2 over
101
+ the integral domain Multivariate Polynomial Ring in x, y, z over Rational Field
102
+ Generated by the rows of the matrix:
103
+ [x - y z]
104
+ [ y*z x*z]
105
+ """
106
+ return "Quotient module by %s" % self._sub
107
+
108
+ def __hash__(self):
109
+ r"""
110
+ Return the hash of this quotient module.
111
+
112
+ TESTS::
113
+
114
+ sage: S.<x,y,z> = PolynomialRing(QQ)
115
+ sage: M = S**2
116
+ sage: N = M.submodule([vector([x - y, z]), vector([y*z, x*z])])
117
+ sage: Q = M.quotient_module(N)
118
+ sage: hash(Q) == hash((M,N))
119
+ True
120
+ """
121
+ return self.__hash
122
+
123
+ def gens(self) -> tuple:
124
+ """
125
+ Return the generators of this module.
126
+
127
+ EXAMPLES::
128
+
129
+ sage: S.<x,y,z> = PolynomialRing(QQ)
130
+ sage: M = S**2
131
+ sage: N = M.submodule([vector([x - y, z]), vector([y*z, x*z])])
132
+ sage: Q = M.quotient_module(N)
133
+ sage: Q.gens()
134
+ ((1, 0), (0, 1))
135
+ """
136
+ return tuple(self(list(g)) for g in self._module.gens())
137
+
138
+ def gen(self, i=0):
139
+ """
140
+ Return the `i`-th generator of this module.
141
+
142
+ EXAMPLES::
143
+
144
+ sage: S.<x,y,z> = PolynomialRing(QQ)
145
+ sage: M = S**2
146
+ sage: N = M.submodule([vector([x - y, z]), vector([y*z, x*z])])
147
+ sage: Q = M.quotient_module(N)
148
+ sage: Q.gen(0)
149
+ (1, 0)
150
+ """
151
+ if i < 0 or i >= self._module.degree():
152
+ raise ValueError('generator %s not defined' % i)
153
+ return self.gens()[i]
154
+
155
+ def _coerce_map_from_(self, M):
156
+ """
157
+ Return a coercion map from `M` to ``self``, or ``None``.
158
+
159
+ TESTS::
160
+
161
+ sage: S.<x,y,z> = PolynomialRing(QQ)
162
+ sage: M = S**2
163
+ sage: N = M.submodule([vector([x - y, z]), vector([y*z, x*z])])
164
+ sage: Q = M.quotient_module(N)
165
+ sage: Q.coerce_map_from(M)
166
+ Coercion map:
167
+ From: Ambient free module of rank 2 over the integral domain
168
+ Multivariate Polynomial Ring in x, y, z over Rational Field
169
+ To: Quotient module by Submodule of
170
+ Ambient free module of rank 2 over the integral domain
171
+ Multivariate Polynomial Ring in x, y, z over Rational Field
172
+ Generated by the rows of the matrix:
173
+ [x - y z]
174
+ [ y*z x*z]
175
+ """
176
+ if isinstance(M, FreeModule_ambient):
177
+ return (self.base_ring().has_coerce_map_from(M.base_ring()) and
178
+ self.degree() == M.degree())
179
+ from sage.modules.submodule import Submodule_free_ambient
180
+ if isinstance(M, Submodule_free_ambient):
181
+ return self._module.has_coerce_map_from(self.ambient_module())
182
+ if (isinstance(M, QuotientModule_free_ambient)
183
+ and M.free_cover() == self.free_cover()):
184
+ try:
185
+ return M.free_relations().is_submodule(self.free_relations())
186
+ except NotImplementedError:
187
+ pass
188
+
189
+ def ambient_module(self):
190
+ """
191
+ Return ``self``, since ``self`` is ambient.
192
+
193
+ EXAMPLES::
194
+
195
+ sage: S.<x,y,z> = PolynomialRing(QQ)
196
+ sage: M = S**2
197
+ sage: N = M.submodule([vector([x - y, z]), vector([y*z, x*z])])
198
+ sage: Q = M.quotient_module(N)
199
+ sage: Q.ambient_module() is Q
200
+ True
201
+ """
202
+ return self
203
+
204
+ def cover(self):
205
+ r"""
206
+ Given this quotient space `Q = V/W`, return `V`.
207
+
208
+ EXAMPLES::
209
+
210
+ sage: S.<x,y,z> = PolynomialRing(QQ)
211
+ sage: M = S**2
212
+ sage: N = M.submodule([vector([x - y, z]), vector([y*z, x*z])])
213
+ sage: Q = M.quotient_module(N)
214
+ sage: Q.cover() is M
215
+ True
216
+ """
217
+ return self._module
218
+
219
+ V = cover
220
+
221
+ def relations(self):
222
+ r"""
223
+ Given this quotient space `Q = V/W`, return `W`.
224
+
225
+ EXAMPLES::
226
+
227
+ sage: S.<x,y,z> = PolynomialRing(QQ)
228
+ sage: M = S**2
229
+ sage: N = M.submodule([vector([x - y, z]), vector([y*z, x*z])])
230
+ sage: Q = M.quotient_module(N)
231
+ sage: Q.relations() is N
232
+ True
233
+ """
234
+ return self._sub
235
+
236
+ W = relations
237
+
238
+ def free_cover(self):
239
+ r"""
240
+ Given this quotient space `Q = V/W`, return the free module
241
+ that covers `V`.
242
+
243
+ EXAMPLES::
244
+
245
+ sage: S.<x,y,z> = PolynomialRing(QQ)
246
+ sage: M = S**2
247
+ sage: N = M.submodule([vector([x - y, z]), vector([y*z, x*z])])
248
+ sage: Q = M / N
249
+ sage: NQ = Q.submodule([Q([1,x])])
250
+ sage: QNQ = Q / NQ
251
+ sage: QNQ.free_cover() is Q.free_cover() is M
252
+ True
253
+
254
+ Note that this is different than the immediate cover::
255
+
256
+ sage: QNQ.cover() is Q
257
+ True
258
+ sage: QNQ.cover() is QNQ.free_cover()
259
+ False
260
+ """
261
+ return self._free_cover
262
+
263
+ V = cover
264
+
265
+ def free_relations(self):
266
+ r"""
267
+ Given this quotient space `Q = V/W`, return the submodule that
268
+ generates all relations of `Q`.
269
+
270
+ When `V` is a free module, then this returns `W`. Otherwise this
271
+ returns the union of `W` lifted to the cover of `V` and the relations
272
+ of `V` (repeated until `W` is a submodule of a free module).
273
+
274
+ EXAMPLES::
275
+
276
+ sage: S.<x,y,z> = PolynomialRing(QQ)
277
+ sage: M = S**2
278
+ sage: N = M.submodule([vector([x - y, z]), vector([y*z, x*z])])
279
+ sage: Q = M / N
280
+ sage: NQ = Q.submodule([Q([1, x])])
281
+ sage: QNQ = Q / NQ
282
+ sage: QNQ.free_relations()
283
+ Submodule of Ambient free module of rank 2 over the integral domain
284
+ Multivariate Polynomial Ring in x, y, z over Rational Field
285
+ Generated by the rows of the matrix:
286
+ [ 1 x]
287
+ [x - y z]
288
+ [ y*z x*z]
289
+
290
+ Note that this is different than the defining relations::
291
+
292
+ sage: QNQ.relations() is NQ
293
+ True
294
+ sage: QNQ.relations() == QNQ.free_relations()
295
+ False
296
+ """
297
+ return self._relations
298
+
299
+
300
+ ###############################################################################
301
+ #
302
+ # Quotients of ambient free modules over a field
303
+ #
304
+ ###############################################################################
305
+
306
+ class FreeModule_ambient_field_quotient(FreeModule_ambient_field):
307
+ """
308
+ A quotient `V/W` of two vector spaces as a vector space.
309
+
310
+ To obtain `V` or `W` use ``self.V()`` and ``self.W()``.
311
+
312
+ EXAMPLES::
313
+
314
+ sage: # needs sage.rings.number_field
315
+ sage: k.<i> = QuadraticField(-1)
316
+ sage: A = k^3; V = A.span([[1,0,i], [2,i,0]])
317
+ sage: W = A.span([[3,i,i]])
318
+ sage: U = V/W; U
319
+ Vector space quotient V/W of dimension 1 over Number Field in i
320
+ with defining polynomial x^2 + 1 with i = 1*I where
321
+ V: Vector space of degree 3 and dimension 2 over Number Field in i
322
+ with defining polynomial x^2 + 1 with i = 1*I
323
+ Basis matrix:
324
+ [ 1 0 i]
325
+ [ 0 1 -2]
326
+ W: Vector space of degree 3 and dimension 1 over Number Field in i
327
+ with defining polynomial x^2 + 1 with i = 1*I
328
+ Basis matrix:
329
+ [ 1 1/3*i 1/3*i]
330
+ sage: U.V()
331
+ Vector space of degree 3 and dimension 2 over Number Field in i
332
+ with defining polynomial x^2 + 1 with i = 1*I
333
+ Basis matrix:
334
+ [ 1 0 i]
335
+ [ 0 1 -2]
336
+ sage: U.W()
337
+ Vector space of degree 3 and dimension 1 over Number Field in i
338
+ with defining polynomial x^2 + 1 with i = 1*I
339
+ Basis matrix:
340
+ [ 1 1/3*i 1/3*i]
341
+ sage: U.quotient_map()
342
+ Vector space morphism represented by the matrix:
343
+ [ 1]
344
+ [3*i]
345
+ Domain: Vector space of degree 3 and dimension 2 over Number Field in i
346
+ with defining polynomial x^2 + 1 with i = 1*I
347
+ Basis matrix:
348
+ [ 1 0 i]
349
+ [ 0 1 -2]
350
+ Codomain: Vector space quotient V/W of dimension 1 over Number Field in i
351
+ with defining polynomial x^2 + 1 with i = 1*I where
352
+ V: Vector space of degree 3 and dimension 2 over Number Field in i
353
+ with defining polynomial x^2 + 1 with i = 1*I
354
+ Basis matrix:
355
+ [ 1 0 i]
356
+ [ 0 1 -2]
357
+ W: Vector space of degree 3 and dimension 1 over Number Field in i
358
+ with defining polynomial x^2 + 1 with i = 1*I
359
+ Basis matrix:
360
+ [ 1 1/3*i 1/3*i]
361
+ sage: Z = V.quotient(W)
362
+ sage: Z == U
363
+ True
364
+
365
+ We create three quotient spaces and compare them::
366
+
367
+ sage: A = QQ^2
368
+ sage: V = A.span_of_basis([[1,0], [1,1]])
369
+ sage: W0 = V.span([V.1, V.0])
370
+ sage: W1 = V.span([V.1])
371
+ sage: W2 = V.span([V.1])
372
+ sage: Q0 = V/W0
373
+ sage: Q1 = V/W1
374
+ sage: Q2 = V/W2
375
+
376
+ sage: Q0 == Q1
377
+ False
378
+ sage: Q1 == Q2
379
+ True
380
+
381
+ TESTS::
382
+
383
+ sage: A = QQ^0; V = A.span([]) # corner case
384
+ sage: W = A.span([])
385
+ sage: U = V/W
386
+
387
+ sage: loads(dumps(U)) == U
388
+ True
389
+ sage: type(loads(dumps(U)) )
390
+ <class 'sage.modules.quotient_module.FreeModule_ambient_field_quotient_with_category'>
391
+ """
392
+ def __init__(self, domain, sub, quotient_matrix, lift_matrix, inner_product_matrix=None):
393
+ """
394
+ Create this quotient space, from the given domain, submodule,
395
+ and quotient_matrix.
396
+
397
+ EXAMPLES::
398
+
399
+ sage: A = QQ^5; V = A.span_of_basis([[1,0,-1,1,1], [1,-1,0,2/3,3/4]]); V
400
+ Vector space of degree 5 and dimension 2 over Rational Field
401
+ User basis matrix:
402
+ [ 1 0 -1 1 1]
403
+ [ 1 -1 0 2/3 3/4]
404
+ sage: W = V.span_of_basis([V.0 - 2/3*V.1]); W
405
+ Vector space of degree 5 and dimension 1 over Rational Field
406
+ User basis matrix:
407
+ [1/3 2/3 -1 5/9 1/2]
408
+
409
+ This creates a quotient vector space::
410
+
411
+ sage: Q = V / W
412
+
413
+ Behold the type of Q::
414
+
415
+ sage: type(Q)
416
+ <class 'sage.modules.quotient_module.FreeModule_ambient_field_quotient_with_category'>
417
+
418
+ We do some consistency checks on the extra quotient and
419
+ lifting structure of Q::
420
+
421
+ sage: Q(V.0)
422
+ (1)
423
+ sage: Q(V.0 - 2/3*V.1)
424
+ (0)
425
+ sage: v = Q.lift(Q.0); v
426
+ (1, 0, -1, 1, 1)
427
+ sage: Q( v )
428
+ (1)
429
+ """
430
+ base_field = domain.base_field()
431
+ dimension = quotient_matrix.ncols()
432
+ sparse = domain.is_sparse()
433
+ self._sub = sub
434
+ self._domain = domain
435
+ self.__hash = hash((domain, sub))
436
+ FreeModule_ambient_field.__init__(self, base_field, dimension, sparse)
437
+ self.__quo_map = domain.Hom(self)(quotient_matrix)
438
+ self.__quo_map.register_as_coercion()
439
+ self.__lift_map = self.Hom(domain)(lift_matrix)
440
+
441
+ def _repr_(self):
442
+ r"""
443
+ Return the rather verbose string representation of this quotient space V/W.
444
+
445
+ EXAMPLES:
446
+
447
+ We create a quotient vector space over a finite field::
448
+
449
+ sage: # needs sage.rings.finite_rings
450
+ sage: k.<a> = GF(9); A = k^3; V = A.span_of_basis([[1,0,a], [a,a,1]]); W = V.span([V.1])
451
+ sage: Q = V/W
452
+
453
+ Note the type::
454
+
455
+ sage: type(Q) # needs sage.rings.finite_rings
456
+ <class 'sage.modules.quotient_module.FreeModule_ambient_field_quotient_with_category'>
457
+
458
+ The string representation mentions that this is a quotient
459
+ `V/W`, that the quotient has dimension 1 and is over a finite
460
+ field, and also describes `V` and `W`::
461
+
462
+ sage: Q._repr_() # needs sage.rings.finite_rings
463
+ 'Vector space quotient V/W of dimension 1 over Finite Field in a of size 3^2 where\nV: Vector space of degree 3 and dimension 2 over Finite Field in a of size 3^2\nUser basis matrix:\n[1 0 a]\n[a a 1]\nW: Vector space of degree 3 and dimension 1 over Finite Field in a of size 3^2\nBasis matrix:\n[ 1 1 a + 2]'
464
+ """
465
+ return "%s space quotient V/W of dimension %s over %s where\nV: %s\nW: %s" % (
466
+ "Sparse vector" if self.is_sparse() else "Vector",
467
+ self.dimension(), self.base_ring(),
468
+ self.V(), self.W())
469
+
470
+ def __hash__(self):
471
+ """
472
+ Return hash of this quotient space `V/W`, which is, by definition,
473
+ the hash of the tuple `(V, W)`.
474
+
475
+ EXAMPLES:
476
+
477
+ We compute the hash of a certain 0-dimension quotient vector
478
+ space::
479
+
480
+ sage: A = QQ^2; V = A.span_of_basis([[1,0], [1,1]]); W = V.span([V.1, V.0])
481
+ sage: Q = V/W; Q.dimension()
482
+ 0
483
+ sage: hash(Q) == hash((V,W))
484
+ True
485
+ """
486
+ return self.__hash
487
+
488
+ def _element_constructor_(self, x):
489
+ """
490
+ Convert an element into this quotient space `V/W` if there is
491
+ a way to make sense of it.
492
+
493
+ An element converts into ``self`` if it can be converted into `V`,
494
+ or if not at least if it can be made sense of as a list of
495
+ length the dimension of ``self``.
496
+
497
+ EXAMPLES:
498
+
499
+ We create a 2-dimensional quotient of a 3-dimension ambient
500
+ vector space::
501
+
502
+ sage: M = QQ^3 / [[1,2,3]]
503
+
504
+ A list of length 3 converts into ``QQ^3``, so it converts into
505
+ `M`::
506
+
507
+ sage: M([1,2,4]) #indirect doctest
508
+ (-1/3, -2/3)
509
+ sage: M([1,2,3])
510
+ (0, 0)
511
+
512
+ A list of length 2 converts into M, where here it just gives
513
+ the corresponding linear combination of the basis for `M`::
514
+
515
+ sage: M([1,2])
516
+ (1, 2)
517
+ sage: M.0 + 2*M.1
518
+ (1, 2)
519
+
520
+ Of course, elements of ``QQ^3`` convert into the quotient
521
+ module as well. Here is a different example::
522
+
523
+ sage: V = QQ^3; W = V.span([[1,0,0]]); Q = V/W
524
+ sage: Q(V.0)
525
+ (0, 0)
526
+ sage: Q(V.1)
527
+ (1, 0)
528
+ sage: Q.0
529
+ (1, 0)
530
+ sage: Q.0 + V.1
531
+ (2, 0)
532
+
533
+ Here we start with something that is over ZZ, so it
534
+ canonically coerces into ``QQ^3``, hence into ``self``::
535
+
536
+ sage: Q((ZZ^3)([1,2,3]))
537
+ (2, 3)
538
+
539
+ TESTS:
540
+
541
+ Ensure that :issue:`39507` is fixed::
542
+
543
+ sage: V = VectorSpace(GF(2),3)
544
+ sage: A = V.subspace([(0,1,0), (1,1,1)])
545
+ sage: B = A.subspace([])
546
+ sage: list(A/B)
547
+ [(0, 0), (1, 0), (0, 1), (1, 1)]
548
+ """
549
+ if isinstance(x, self.element_class) and x.parent() is self:
550
+ return x
551
+ if isinstance(x, (list, tuple)) and len(x) == self._domain.rank():
552
+ return self.__quo_map(self._domain.linear_combination_of_basis(x))
553
+ return FreeModule_ambient_field._element_constructor_(self, x)
554
+
555
+ def _coerce_map_from_(self, M):
556
+ """
557
+ Return a coercion map from `M` to ``self``, or None.
558
+
559
+ EXAMPLES::
560
+
561
+ sage: V = QQ^2 / [[1, 2]]
562
+ sage: V.coerce_map_from(ZZ^2)
563
+ Composite map:
564
+ From: Ambient free module of rank 2 over the principal ideal domain Integer Ring
565
+ To: Vector space quotient V/W of dimension 1 over Rational Field where
566
+ V: Vector space of dimension 2 over Rational Field
567
+ W: Vector space of degree 2 and dimension 1 over Rational Field
568
+ Basis matrix:
569
+ [1 2]
570
+ Defn: Coercion map:
571
+ From: Ambient free module of rank 2 over the principal ideal domain Integer Ring
572
+ To: Vector space of dimension 2 over Rational Field
573
+ then
574
+ Vector space morphism represented by the matrix:
575
+ [ 1]
576
+ [-1/2]
577
+ Domain: Vector space of dimension 2 over Rational Field
578
+ Codomain: Vector space quotient V/W of dimension 1 over Rational Field where
579
+ V: Vector space of dimension 2 over Rational Field
580
+ W: Vector space of degree 2 and dimension 1 over Rational Field
581
+ Basis matrix:
582
+ [1 2]
583
+
584
+ Make sure :issue:`10513` is fixed (no coercion from an abstract
585
+ vector space to an isomorphic quotient vector space)::
586
+
587
+ sage: V = QQ^3 / [[1,2,3]]
588
+ sage: V.coerce_map_from(QQ^2)
589
+ """
590
+ from sage.modules.free_module import FreeModule_ambient
591
+ if (isinstance(M, FreeModule_ambient)
592
+ and not (isinstance(M, FreeModule_ambient_field_quotient)
593
+ and self._sub == M._sub)):
594
+ # No map between different quotients.
595
+ # No map from quotient to abstract module.
596
+ return None
597
+ f = super(FreeModule_ambient_field, self)._coerce_map_from_(M)
598
+ if f is not None:
599
+ return f
600
+ f = self._domain.coerce_map_from(M)
601
+ if f is not None:
602
+ return self.__quo_map * f
603
+ return None
604
+
605
+ def quotient_map(self):
606
+ """
607
+ Given this quotient space `Q = V / W`, return the natural quotient
608
+ map from `V` to `Q`.
609
+
610
+ EXAMPLES::
611
+
612
+ sage: M = QQ^3 / [[1,2,3]]
613
+ sage: M.quotient_map()
614
+ Vector space morphism represented by the matrix:
615
+ [ 1 0]
616
+ [ 0 1]
617
+ [-1/3 -2/3]
618
+ Domain: Vector space of dimension 3 over Rational Field
619
+ Codomain: Vector space quotient V/W of dimension 2 over Rational Field where
620
+ V: Vector space of dimension 3 over Rational Field
621
+ W: Vector space of degree 3 and dimension 1 over Rational Field
622
+ Basis matrix:
623
+ [1 2 3]
624
+
625
+ sage: M.quotient_map()( (QQ^3)([1,2,3]) )
626
+ (0, 0)
627
+ """
628
+ return self.__quo_map
629
+
630
+ def lift_map(self):
631
+ r"""
632
+ Given this quotient space `Q = V / W`, return a fixed choice of
633
+ linear homomorphism (a section) from `Q` to `V`.
634
+
635
+ EXAMPLES::
636
+
637
+ sage: M = QQ^3 / [[1,2,3]]
638
+ sage: M.lift_map()
639
+ Vector space morphism represented by the matrix:
640
+ [1 0 0]
641
+ [0 1 0]
642
+ Domain: Vector space quotient V/W of dimension 2 over Rational Field where
643
+ V: Vector space of dimension 3 over Rational Field
644
+ W: Vector space of degree 3 and dimension 1 over Rational Field
645
+ Basis matrix:
646
+ [1 2 3]
647
+ Codomain: Vector space of dimension 3 over Rational Field
648
+ """
649
+ return self.__lift_map
650
+
651
+ def lift(self, x):
652
+ r"""
653
+ Lift element of this quotient `V / W` to `V` by applying
654
+ the fixed lift homomorphism.
655
+
656
+ The lift is a fixed homomorphism.
657
+
658
+ EXAMPLES::
659
+
660
+ sage: M = QQ^3 / [[1,2,3]]
661
+ sage: M.lift(M.0)
662
+ (1, 0, 0)
663
+ sage: M.lift(M.1)
664
+ (0, 1, 0)
665
+ sage: M.lift(M.0 - 2*M.1)
666
+ (1, -2, 0)
667
+ """
668
+ return self.__lift_map(x)
669
+
670
+ def cover(self):
671
+ r"""
672
+ Given this quotient space `Q = V/W`, return `V`.
673
+
674
+ EXAMPLES::
675
+
676
+ sage: M = QQ^10 / [list(range(10)), list(range(2,12))]
677
+ sage: M.cover()
678
+ Vector space of dimension 10 over Rational Field
679
+ """
680
+ return self._domain
681
+
682
+ V = cover
683
+
684
+ def relations(self):
685
+ r"""
686
+ Given this quotient space `Q = V/W`, return `W`.
687
+
688
+ EXAMPLES::
689
+
690
+ sage: M = QQ^10 / [list(range(10)), list(range(2,12))]
691
+ sage: M.relations()
692
+ Vector space of degree 10 and dimension 2 over Rational Field
693
+ Basis matrix:
694
+ [ 1 0 -1 -2 -3 -4 -5 -6 -7 -8]
695
+ [ 0 1 2 3 4 5 6 7 8 9]
696
+ """
697
+ return self._sub
698
+
699
+ W = relations