passagemath-modules 10.6.31rc3__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.31rc3.dist-info/METADATA +281 -0
  2. passagemath_modules-10.6.31rc3.dist-info/RECORD +807 -0
  3. passagemath_modules-10.6.31rc3.dist-info/WHEEL +6 -0
  4. passagemath_modules-10.6.31rc3.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-82690d50.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,471 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ # sage.doctest: needs sage.combinat sage.geometry.polyhedron
3
+ r"""
4
+ Associahedron
5
+
6
+ .. TODO::
7
+
8
+ - fix adjacency matrix
9
+ - edit graph method to get proper vertex labellings
10
+ - UniqueRepresentation?
11
+
12
+ AUTHORS:
13
+
14
+ - Christian Stump
15
+ """
16
+ # ***************************************************************************
17
+ # Copyright (C) 2011-2012 Christian Stump <christian.stump@gmail.com>
18
+ #
19
+ # Distributed under the terms of the GNU General Public License (GPL)
20
+ # The full text of the GPL is available at:
21
+ #
22
+ # https://www.gnu.org/licenses/
23
+ # ***************************************************************************
24
+ from sage.geometry.polyhedron.backend_ppl import Polyhedron_QQ_ppl
25
+ from sage.geometry.polyhedron.backend_normaliz import Polyhedron_QQ_normaliz
26
+ from sage.geometry.polyhedron.backend_cdd import Polyhedron_QQ_cdd
27
+ from sage.geometry.polyhedron.backend_field import Polyhedron_field
28
+ from sage.geometry.polyhedron.backend_polymake import Polyhedron_polymake
29
+ from sage.geometry.polyhedron.parent import Polyhedra, Polyhedra_base, Polyhedra_QQ_ppl, Polyhedra_QQ_normaliz, Polyhedra_QQ_cdd, Polyhedra_polymake, Polyhedra_field
30
+ from sage.combinat.root_system.cartan_type import CartanType
31
+ from sage.modules.free_module_element import vector
32
+ from sage.rings.integer_ring import ZZ
33
+ from sage.rings.rational_field import QQ
34
+
35
+ ancestors_of_associahedron = set([Polyhedron_QQ_ppl, Polyhedron_QQ_normaliz, Polyhedron_QQ_cdd, Polyhedron_field, Polyhedron_polymake])
36
+
37
+
38
+ def Associahedron(cartan_type, backend='ppl'):
39
+ r"""
40
+ Construct an associahedron.
41
+
42
+ The generalized associahedron is a polytopal complex with vertices in
43
+ one-to-one correspondence with clusters in the cluster complex, and with
44
+ edges between two vertices if and only if the associated two clusters
45
+ intersect in codimension 1.
46
+
47
+ The associahedron of type `A_n` is one way to realize the classical
48
+ associahedron as defined in the :wikipedia:`Associahedron`.
49
+
50
+ A polytopal realization of the associahedron can be found in [CFZ2002]_. The
51
+ implementation is based on [CFZ2002]_, Theorem 1.5, Remark 1.6, and Corollary
52
+ 1.9.
53
+
54
+ INPUT:
55
+
56
+ - ``cartan_type`` -- a cartan type according to
57
+ :class:`sage.combinat.root_system.cartan_type.CartanTypeFactory`
58
+
59
+ - ``backend`` -- string (``'ppl'``); the backend to use;
60
+ see :meth:`sage.geometry.polyhedron.constructor.Polyhedron`
61
+
62
+ EXAMPLES::
63
+
64
+ sage: Asso = polytopes.associahedron(['A',2]); Asso
65
+ Generalized associahedron of type ['A', 2] with 5 vertices
66
+
67
+ sage: sorted(Asso.Hrepresentation(), key=repr)
68
+ [An inequality (-1, 0) x + 1 >= 0,
69
+ An inequality (0, -1) x + 1 >= 0,
70
+ An inequality (0, 1) x + 1 >= 0,
71
+ An inequality (1, 0) x + 1 >= 0,
72
+ An inequality (1, 1) x + 1 >= 0]
73
+
74
+ sage: Asso.Vrepresentation()
75
+ (A vertex at (1, -1), A vertex at (1, 1), A vertex at (-1, 1),
76
+ A vertex at (-1, 0), A vertex at (0, -1))
77
+
78
+ sage: polytopes.associahedron(['B',2])
79
+ Generalized associahedron of type ['B', 2] with 6 vertices
80
+
81
+ The two pictures of [CFZ2002]_ can be recovered with::
82
+
83
+ sage: Asso = polytopes.associahedron(['A',3]); Asso
84
+ Generalized associahedron of type ['A', 3] with 14 vertices
85
+ sage: Asso.plot() # long time
86
+ Graphics3d Object
87
+
88
+ sage: Asso = polytopes.associahedron(['B',3]); Asso
89
+ Generalized associahedron of type ['B', 3] with 20 vertices
90
+ sage: Asso.plot() # long time
91
+ Graphics3d Object
92
+
93
+ TESTS::
94
+
95
+ sage: sorted(polytopes.associahedron(['A',3]).vertices())
96
+ [A vertex at (-3/2, 0, -1/2), A vertex at (-3/2, 0, 3/2),
97
+ A vertex at (-3/2, 1, -3/2), A vertex at (-3/2, 2, -3/2),
98
+ A vertex at (-3/2, 2, 3/2), A vertex at (-1/2, -1, -1/2),
99
+ A vertex at (-1/2, 0, -3/2), A vertex at (1/2, -2, 1/2),
100
+ A vertex at (1/2, -2, 3/2), A vertex at (3/2, -2, 1/2),
101
+ A vertex at (3/2, -2, 3/2), A vertex at (3/2, 0, -3/2),
102
+ A vertex at (3/2, 2, -3/2), A vertex at (3/2, 2, 3/2)]
103
+
104
+ sage: sorted(polytopes.associahedron(['B',3]).vertices())
105
+ [A vertex at (-3, 0, 0), A vertex at (-3, 0, 3),
106
+ A vertex at (-3, 2, -2), A vertex at (-3, 4, -3),
107
+ A vertex at (-3, 5, -3), A vertex at (-3, 5, 3),
108
+ A vertex at (-2, 1, -2), A vertex at (-2, 3, -3),
109
+ A vertex at (-1, -2, 0), A vertex at (-1, -1, -1),
110
+ A vertex at (1, -4, 1), A vertex at (1, -3, 0),
111
+ A vertex at (2, -5, 2), A vertex at (2, -5, 3),
112
+ A vertex at (3, -5, 2), A vertex at (3, -5, 3),
113
+ A vertex at (3, -3, 0), A vertex at (3, 3, -3),
114
+ A vertex at (3, 5, -3), A vertex at (3, 5, 3)]
115
+
116
+ sage: polytopes.associahedron(['A',4]).f_vector()
117
+ (1, 42, 84, 56, 14, 1)
118
+ sage: polytopes.associahedron(['B',4]).f_vector()
119
+ (1, 70, 140, 90, 20, 1)
120
+
121
+ sage: p1 = polytopes.associahedron(['A',4], backend='normaliz') # optional - pynormaliz
122
+ sage: TestSuite(p1).run(skip='_test_pickling') # optional - pynormaliz
123
+ sage: p2 = polytopes.associahedron(['A',4], backend='cdd') # needs cddexec_gmp
124
+ sage: TestSuite(p2).run() # needs cddexec_gmp
125
+ sage: p3 = polytopes.associahedron(['A',4], backend='field')
126
+ sage: TestSuite(p3).run()
127
+ """
128
+ cartan_type = CartanType(cartan_type)
129
+ parent = Associahedra(QQ, cartan_type.rank(), backend)
130
+ return parent(cartan_type)
131
+
132
+
133
+ class Associahedron_class_base:
134
+ r"""
135
+ The base class of the Python class of an associahedron
136
+
137
+ You should use the :func:`Associahedron` convenience function to
138
+ construct associahedra from the Cartan type.
139
+
140
+ TESTS::
141
+
142
+ sage: Asso = polytopes.associahedron(['A',2]); Asso
143
+ Generalized associahedron of type ['A', 2] with 5 vertices
144
+ sage: TestSuite(Asso).run() # needs cddexec
145
+ """
146
+ def __new__(typ, parent=None, Vrep=None, Hrep=None, cartan_type=None, **kwds):
147
+ r"""
148
+ Return instance of :class:`Assciahedron_class_base`, if ``cartan_type`` is provided
149
+ or object is being unpickled.
150
+
151
+ In other cases, this call is a result of a polyhedral construction with an associahedron.
152
+ Thus we return the corresponding instance of
153
+ :class:`sage.geometry.polyhedron.base.Polyhedron_base` (not an associahedron).
154
+
155
+ TESTS:
156
+
157
+ Check that faces of associahedra work::
158
+
159
+ sage: A = polytopes.associahedron(['A',3], backend='ppl'); A
160
+ Generalized associahedron of type ['A', 3] with 14 vertices
161
+ sage: face = A.faces(2)[3]
162
+ sage: P = face.as_polyhedron(); P
163
+ A 2-dimensional polyhedron in QQ^3 defined as the convex hull of 4 vertices
164
+ sage: P.backend()
165
+ 'ppl'
166
+ sage: A = polytopes.associahedron(['A',3], backend='field'); A
167
+ Generalized associahedron of type ['A', 3] with 14 vertices
168
+ sage: A.faces(2)[3].as_polyhedron().backend()
169
+ 'field'
170
+
171
+ Check other polytopal constructions::
172
+
173
+ sage: A = polytopes.associahedron(['A',4], backend='ppl')
174
+ sage: A + A
175
+ A 4-dimensional polyhedron in QQ^4 defined as the convex hull of 42 vertices
176
+ sage: A - A
177
+ A 0-dimensional polyhedron in QQ^4 defined as the convex hull of 1 vertex
178
+ sage: A.intersection(A)
179
+ A 4-dimensional polyhedron in QQ^4 defined as the convex hull of 42 vertices
180
+ sage: A.translation(A.center())
181
+ A 4-dimensional polyhedron in QQ^4 defined as the convex hull of 42 vertices
182
+ sage: A.dilation(2)
183
+ A 4-dimensional polyhedron in QQ^4 defined as the convex hull of 42 vertices
184
+ sage: A.dilation(2.0) # needs cddexec
185
+ A 4-dimensional polyhedron in RDF^4 defined as the convex hull of 42 vertices
186
+ sage: A.convex_hull(A)
187
+ A 4-dimensional polyhedron in QQ^4 defined as the convex hull of 42 vertices
188
+ sage: A.polar()
189
+ A 4-dimensional polyhedron in QQ^4 defined as the convex hull of 14 vertices
190
+ """
191
+ if cartan_type or (parent is None and Vrep is None and Hrep is None):
192
+ # Called from element constructor in ``Associahedron_base``.
193
+ # Alternatively called from ``loads`` in ``loads(dumps(...))``.
194
+ return super().__new__(typ, parent, Vrep, Hrep, **kwds)
195
+ else:
196
+ # Not called from element constructor in ``Associahedron_base``.
197
+ # Return a polyhedron with proper backend (not an associahedron).
198
+ # Thus e.g. a face of an Associahedron can be initialized as a polyhedron.
199
+ mro = typ.mro()
200
+ for typ1 in mro:
201
+ if typ1 in ancestors_of_associahedron:
202
+ return typ1(parent, Vrep, Hrep, **kwds)
203
+ raise ValueError("could not determine a parent class")
204
+
205
+ def __init__(self, parent, Vrep, Hrep, cartan_type=None, **kwds):
206
+ r"""
207
+ Initialize an associahedron.
208
+
209
+ If ``'cartan_type'`` is ``None``, :meth:`Associahedron_class_base.__new__`
210
+ returns a (general) polyhedron instead.
211
+
212
+ TESTS::
213
+
214
+ sage: A = polytopes.associahedron(['A',3], backend='ppl'); A
215
+ Generalized associahedron of type ['A', 3] with 14 vertices
216
+ """
217
+ if cartan_type:
218
+ self._cartan_type = cartan_type
219
+ super().__init__(parent, Vrep, Hrep, **kwds)
220
+ else:
221
+ raise ValueError("associahedron must be initialized with cartan type")
222
+
223
+ def _repr_(self):
224
+ r"""
225
+ Return a string representation of ``self``.
226
+
227
+ EXAMPLES::
228
+
229
+ sage: polytopes.associahedron(['A',3])._repr_()
230
+ "Generalized associahedron of type ['A', 3] with 14 vertices"
231
+ """
232
+ msg = 'Generalized associahedron of type {} with {} vertices'
233
+ return msg.format(self._cartan_type, self.n_vertices())
234
+
235
+ def cartan_type(self):
236
+ r"""
237
+ Return the Cartan type of ``self``.
238
+
239
+ EXAMPLES::
240
+
241
+ sage: polytopes.associahedron(['A',3]).cartan_type()
242
+ ['A', 3]
243
+ """
244
+ return self._cartan_type
245
+
246
+ def vertices_in_root_space(self):
247
+ r"""
248
+ Return the vertices of ``self`` as elements in the root space.
249
+
250
+ EXAMPLES::
251
+
252
+ sage: Asso = polytopes.associahedron(['A',2])
253
+ sage: Asso.vertices()
254
+ (A vertex at (1, -1), A vertex at (1, 1),
255
+ A vertex at (-1, 1), A vertex at (-1, 0),
256
+ A vertex at (0, -1))
257
+
258
+ sage: Asso.vertices_in_root_space()
259
+ (alpha[1] - alpha[2], alpha[1] + alpha[2], -alpha[1] + alpha[2],
260
+ -alpha[1], -alpha[2])
261
+ """
262
+ root_space = self._cartan_type.root_system().root_space()
263
+ return tuple(root_space.from_vector(vector(V))
264
+ for V in self.vertex_generator())
265
+
266
+
267
+ class Associahedron_class_ppl(Associahedron_class_base, Polyhedron_QQ_ppl):
268
+ pass
269
+
270
+
271
+ class Associahedron_class_normaliz(Associahedron_class_base, Polyhedron_QQ_normaliz):
272
+ pass
273
+
274
+
275
+ class Associahedron_class_cdd(Associahedron_class_base, Polyhedron_QQ_cdd):
276
+ pass
277
+
278
+
279
+ class Associahedron_class_polymake(Associahedron_class_base, Polyhedron_polymake):
280
+ pass
281
+
282
+
283
+ class Associahedron_class_field(Associahedron_class_base, Polyhedron_field):
284
+ pass
285
+
286
+
287
+ def Associahedra(base_ring, ambient_dim, backend='ppl'):
288
+ r"""
289
+ Construct a parent class of Associahedra according to ``backend``.
290
+
291
+ TESTS::
292
+
293
+ sage: from sage.combinat.root_system.associahedron import Associahedra
294
+ sage: Associahedra(QQ, 4, 'ppl').parent()
295
+ <class 'sage.combinat.root_system.associahedron.Associahedra_ppl_with_category'>
296
+ sage: Associahedra(QQ, 4, 'normaliz').parent() # optional - pynormaliz
297
+ <class 'sage.combinat.root_system.associahedron.Associahedra_normaliz_with_category'>
298
+ sage: Associahedra(QQ, 4, 'polymake').parent() # optional - jupymake
299
+ <class 'sage.combinat.root_system.associahedron.Associahedra_polymake_with_category'>
300
+ sage: Associahedra(QQ, 4, 'field').parent()
301
+ <class 'sage.combinat.root_system.associahedron.Associahedra_field_with_category'>
302
+ sage: Associahedra(QQ, 4, 'cdd').parent()
303
+ <class 'sage.combinat.root_system.associahedron.Associahedra_cdd_with_category'>
304
+
305
+ .. SEEALSO::
306
+
307
+ :class:`Associahedra_base`.
308
+ """
309
+ if base_ring is not QQ:
310
+ raise NotImplementedError("base ring must be QQ")
311
+ if backend == 'ppl':
312
+ return Associahedra_ppl(base_ring, ambient_dim, backend)
313
+ elif backend == 'normaliz':
314
+ return Associahedra_normaliz(base_ring, ambient_dim, backend)
315
+ elif backend == 'cdd':
316
+ return Associahedra_cdd(QQ, ambient_dim, backend)
317
+ elif backend == 'polymake':
318
+ return Associahedra_polymake(base_ring.fraction_field(), ambient_dim, backend)
319
+ elif backend == 'field':
320
+ return Associahedra_field(base_ring, ambient_dim, backend)
321
+ else:
322
+ raise ValueError("unknown backend")
323
+
324
+
325
+ class Associahedra_base:
326
+ """
327
+ Base class of parent of Associahedra of specified dimension
328
+
329
+ EXAMPLES::
330
+
331
+ sage: from sage.combinat.root_system.associahedron import Associahedra
332
+ sage: parent = Associahedra(QQ,2,'ppl'); parent
333
+ Polyhedra in QQ^2
334
+ sage: type(parent)
335
+ <class 'sage.combinat.root_system.associahedron.Associahedra_ppl_with_category'>
336
+ sage: parent(['A',2])
337
+ Generalized associahedron of type ['A', 2] with 5 vertices
338
+
339
+ Importantly, the parent knows the dimension of the ambient
340
+ space. If you try to construct an associahedron of a different
341
+ dimension, a :exc:`ValueError` is raised::
342
+
343
+ sage: parent(['A',3])
344
+ Traceback (most recent call last):
345
+ ...
346
+ ValueError: V-representation data requires a list of length ambient_dim
347
+ """
348
+
349
+ def _element_constructor_(self, cartan_type, **kwds):
350
+ """
351
+ The element constructor.
352
+
353
+ This method is called internally when we try to convert
354
+ something into an element. In this case, the only thing that
355
+ can be converted into an associahedron is the Cartan type.
356
+
357
+ EXAMPLES::
358
+
359
+ sage: from sage.combinat.root_system.associahedron import Associahedra
360
+ sage: parent = Associahedra(QQ,2,'ppl')
361
+ sage: parent(['A',2])
362
+ Generalized associahedron of type ['A', 2] with 5 vertices
363
+ sage: parent._element_constructor_(['A',2])
364
+ Generalized associahedron of type ['A', 2] with 5 vertices
365
+
366
+ TESTS::
367
+
368
+ sage: parent(['A', 2, 1])
369
+ Traceback (most recent call last):
370
+ ...
371
+ ValueError: the Cartan type must be finite
372
+ """
373
+ cartan_type = CartanType(cartan_type)
374
+ if not cartan_type.is_finite():
375
+ raise ValueError("the Cartan type must be finite")
376
+ root_space = cartan_type.root_system().root_space()
377
+ # TODO: generalize this as a method of root lattice realization
378
+ rhocheck = sum(beta.associated_coroot()
379
+ for beta in root_space.positive_roots()) / 2
380
+ I = root_space.index_set()
381
+ inequalities = []
382
+ for orbit in root_space.almost_positive_roots_decomposition():
383
+ c = rhocheck.coefficient(orbit[0].leading_support())
384
+ for beta in orbit:
385
+ inequalities.append([c] + [beta.coefficient(i) for i in I])
386
+ associahedron = super()._element_constructor_(None, [inequalities, []], cartan_type=cartan_type)
387
+ return associahedron
388
+
389
+ def _coerce_map_from_(self, X):
390
+ r"""
391
+ Return whether there is a coercion from ``X``.
392
+
393
+ INPUT:
394
+
395
+ - ``X`` -- anything
396
+
397
+ OUTPUT: boolean
398
+
399
+ EXAMPLES::
400
+
401
+ sage: from sage.geometry.polyhedron.parent import Polyhedra
402
+ sage: from sage.combinat.root_system.associahedron import Associahedra
403
+ sage: Associahedra(QQ,3).has_coerce_map_from( Polyhedra(QQ,3) ) # indirect doctest
404
+ False
405
+ sage: Polyhedra(QQ,3).has_coerce_map_from( Associahedra(QQ,3) )
406
+ True
407
+
408
+ TESTS::
409
+
410
+ sage: A = polytopes.associahedron(['A',4], backend='ppl'); type(A.parent())
411
+ <class 'sage.combinat.root_system.associahedron.Associahedra_ppl_with_category'>
412
+ sage: B = polytopes.simplex().change_ring(QQ); type(B.parent())
413
+ <class 'sage.geometry.polyhedron.parent.Polyhedra_QQ_ppl_with_category'>
414
+ sage: A + B
415
+ A 4-dimensional polyhedron in QQ^4 defined as the convex hull of 70 vertices
416
+ sage: A - B
417
+ A 4-dimensional polyhedron in QQ^4 defined as the convex hull of 24 vertices
418
+ sage: A.intersection(B)
419
+ A 3-dimensional polyhedron in QQ^4 defined as the convex hull of 4 vertices
420
+ sage: A.convex_hull(B)
421
+ A 4-dimensional polyhedron in QQ^4 defined as the convex hull of 42 vertices
422
+ """
423
+ if not isinstance(X, Associahedra_base):
424
+ return False
425
+ return super()._coerce_map_from_(X)
426
+
427
+ def _pushout_(self, other):
428
+ r"""
429
+ The pushout of Polyhedra over ZZ and Associahedra over QQ is Polyhedra over QQ.
430
+
431
+ TESTS::
432
+
433
+ sage: A = polytopes.associahedron(['A',4], backend='ppl'); type(A.parent())
434
+ <class 'sage.combinat.root_system.associahedron.Associahedra_ppl_with_category'>
435
+ sage: B = polytopes.simplex(); type(B.parent())
436
+ <class 'sage.geometry.polyhedron.parent.Polyhedra_ZZ_ppl_with_category'>
437
+ sage: A + B
438
+ A 4-dimensional polyhedron in QQ^4 defined as the convex hull of 70 vertices
439
+ sage: A - B
440
+ A 4-dimensional polyhedron in QQ^4 defined as the convex hull of 24 vertices
441
+ sage: A.intersection(B)
442
+ A 3-dimensional polyhedron in QQ^4 defined as the convex hull of 4 vertices
443
+ sage: A.convex_hull(B)
444
+ A 4-dimensional polyhedron in QQ^4 defined as the convex hull of 42 vertices
445
+ """
446
+ if isinstance(other, Polyhedra_base) and other.base_ring() == ZZ:
447
+ return Polyhedra(QQ, self.ambient_dim(), self.backend())
448
+
449
+ # Call the overwritten pushout in case it exists.
450
+ if hasattr(super(), '_pushout_'):
451
+ return super()._pushout_(other)
452
+
453
+
454
+ class Associahedra_ppl(Associahedra_base, Polyhedra_QQ_ppl):
455
+ Element = Associahedron_class_ppl
456
+
457
+
458
+ class Associahedra_normaliz(Associahedra_base, Polyhedra_QQ_normaliz):
459
+ Element = Associahedron_class_normaliz
460
+
461
+
462
+ class Associahedra_cdd(Associahedra_base, Polyhedra_QQ_cdd):
463
+ Element = Associahedron_class_cdd
464
+
465
+
466
+ class Associahedra_polymake(Associahedra_base, Polyhedra_polymake):
467
+ Element = Associahedron_class_polymake
468
+
469
+
470
+ class Associahedra_field(Associahedra_base, Polyhedra_field):
471
+ Element = Associahedron_class_field
@@ -0,0 +1,143 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ # sage.doctest: needs sage.graphs sage.libs.gap
3
+ """
4
+ Braid move calculator
5
+
6
+ AUTHORS:
7
+
8
+ - Dinakar Muthiah (2014-06-03): initial version
9
+ """
10
+ # ****************************************************************************
11
+ # Copyright (C) 2014 Dinakar Muthiah <muthiah at ualberta.ca>
12
+ #
13
+ # This program is free software: you can redistribute it and/or modify
14
+ # it under the terms of the GNU General Public License as published by
15
+ # the Free Software Foundation, either version 2 of the License, or
16
+ # (at your option) any later version.
17
+ # https://www.gnu.org/licenses/
18
+ # ****************************************************************************
19
+
20
+ from sage.misc.cachefunc import cached_method
21
+
22
+
23
+ class BraidMoveCalculator:
24
+ """
25
+ Helper class to compute braid moves.
26
+ """
27
+
28
+ def __init__(self, coxeter_group):
29
+ """
30
+ Initialize ``self``.
31
+
32
+ EXAMPLES::
33
+
34
+ sage: from sage.combinat.root_system.braid_move_calculator import BraidMoveCalculator
35
+ sage: W = CoxeterGroup(['C',3])
36
+ sage: B = BraidMoveCalculator(W)
37
+ sage: TestSuite(B).run(skip='_test_pickling')
38
+ """
39
+ self.coxeter_matrix = coxeter_group.coxeter_matrix()
40
+
41
+ def _apply_put_in_front_recur_step(self, k, input_word, coxeter_matrix_entry):
42
+ """
43
+ Recurrence step for :meth:`put_in_front`.
44
+
45
+ EXAMPLES::
46
+
47
+ sage: from sage.combinat.root_system.braid_move_calculator import BraidMoveCalculator
48
+ sage: W = CoxeterGroup(['C',3])
49
+ sage: B = BraidMoveCalculator(W)
50
+ sage: B.put_in_front(2, (3, 2, 3, 1, 2, 3, 1, 2, 1)) # indirect doctest
51
+ ((3, 2, 3, 1, 2, 3, 1, 2, 1),
52
+ (3, 2, 3, 1, 2, 1, 3, 2, 1),
53
+ (3, 2, 3, 2, 1, 2, 3, 2, 1),
54
+ (2, 3, 2, 3, 1, 2, 3, 2, 1))
55
+ """
56
+ i = input_word[0]
57
+
58
+ def partial_braid_word(length, swap=False, i=i, k=k):
59
+ if swap:
60
+ i, k = k, i
61
+ running_braid_word = [i, k] * (length // 2)
62
+ if length % 2:
63
+ running_braid_word.append(i)
64
+ return tuple(running_braid_word)
65
+
66
+ current_last_word = input_word
67
+ current_first_letter = k
68
+ output_word_list = [current_last_word]
69
+ for counter in range(1, coxeter_matrix_entry):
70
+ current_word_list = self.put_in_front(current_first_letter, current_last_word[1:])
71
+ output_word_list += [partial_braid_word(counter) + word
72
+ for word in current_word_list[1:]]
73
+ if current_first_letter == k:
74
+ current_first_letter = i
75
+ else:
76
+ current_first_letter = k
77
+ current_last_word = current_word_list[-1]
78
+ if i != k:
79
+ output_word_list += [partial_braid_word(coxeter_matrix_entry, swap=True) +
80
+ current_last_word[1:]]
81
+ return tuple(output_word_list)
82
+
83
+ def put_in_front(self, k, input_word):
84
+ """
85
+ Return a list of reduced words starting with ``input_word``
86
+ and ending with a reduced word whose first letter is ``k``.
87
+
88
+ There still remains an issue with 0 indices.
89
+
90
+ EXAMPLES::
91
+
92
+ sage: from sage.combinat.root_system.braid_move_calculator import BraidMoveCalculator
93
+ sage: W = CoxeterGroup(['C',3])
94
+ sage: B = BraidMoveCalculator(W)
95
+ sage: B.put_in_front(2, (3, 2, 3, 1, 2, 3, 1, 2, 1))
96
+ ((3, 2, 3, 1, 2, 3, 1, 2, 1),
97
+ (3, 2, 3, 1, 2, 1, 3, 2, 1),
98
+ (3, 2, 3, 2, 1, 2, 3, 2, 1),
99
+ (2, 3, 2, 3, 1, 2, 3, 2, 1))
100
+ sage: B.put_in_front(1, (3, 2, 3, 1, 2, 3, 1, 2, 1))
101
+ ((3, 2, 3, 1, 2, 3, 1, 2, 1),
102
+ (3, 2, 1, 3, 2, 3, 1, 2, 1),
103
+ (3, 2, 1, 3, 2, 3, 2, 1, 2),
104
+ (3, 2, 1, 2, 3, 2, 3, 1, 2),
105
+ (3, 1, 2, 1, 3, 2, 3, 1, 2),
106
+ (1, 3, 2, 1, 3, 2, 3, 1, 2))
107
+ sage: B.put_in_front(1, (1, 3, 2, 3, 2, 1, 2, 3, 2))
108
+ ((1, 3, 2, 3, 2, 1, 2, 3, 2),)
109
+ """
110
+ i = input_word[0]
111
+ if i == 0 or k == 0: # Is this for affine types? - Travis
112
+ raise NotImplementedError
113
+ entry = self.coxeter_matrix[i, k]
114
+ return self._apply_put_in_front_recur_step(k, input_word, entry)
115
+
116
+ @cached_method
117
+ def chain_of_reduced_words(self, start_word, end_word):
118
+ """
119
+ Compute the chain of reduced words from ``stard_word``
120
+ to ``end_word``.
121
+
122
+ INPUT:
123
+
124
+ - ``start_word``, ``end_word`` -- two reduced expressions
125
+ for the long word
126
+
127
+ EXAMPLES::
128
+
129
+ sage: from sage.combinat.root_system.braid_move_calculator import BraidMoveCalculator
130
+ sage: W = CoxeterGroup(['A',5])
131
+ sage: B = BraidMoveCalculator(W)
132
+ sage: B.chain_of_reduced_words((1,2,1,3,2,1,4,3,2,1,5,4,3,2,1), # not tested
133
+ ....: (5,4,5,3,4,5,2,3,4,5,1,2,3,4,5))
134
+ """
135
+ if start_word == end_word:
136
+ return (start_word,)
137
+ k = end_word[0]
138
+ first_word_list = self.put_in_front(k, start_word)
139
+ first_last_word = first_word_list[-1]
140
+ return (first_word_list[:-1] +
141
+ tuple([(k,) + word for word in
142
+ self.chain_of_reduced_words(first_last_word[1:],
143
+ end_word[1:])]))