passagemath-modules 10.6.31rc3__cp314-cp314-musllinux_1_2_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 (808) hide show
  1. passagemath_modules-10.6.31rc3.dist-info/METADATA +281 -0
  2. passagemath_modules-10.6.31rc3.dist-info/RECORD +808 -0
  3. passagemath_modules-10.6.31rc3.dist-info/WHEEL +5 -0
  4. passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
  5. passagemath_modules.libs/libgcc_s-0cd532bd.so.1 +0 -0
  6. passagemath_modules.libs/libgfortran-2c33b284.so.5.0.0 +0 -0
  7. passagemath_modules.libs/libgmp-0e7fc84e.so.10.5.0 +0 -0
  8. passagemath_modules.libs/libgsl-42cda06f.so.28.0.0 +0 -0
  9. passagemath_modules.libs/libmpc-d8ebe4b5.so.3.3.1 +0 -0
  10. passagemath_modules.libs/libmpfr-aaecbfc0.so.6.2.1 +0 -0
  11. passagemath_modules.libs/libopenblasp-r0-905cb27d.3.29.so +0 -0
  12. passagemath_modules.libs/libquadmath-bb76a5fc.so.0.0.0 +0 -0
  13. sage/algebras/all__sagemath_modules.py +20 -0
  14. sage/algebras/catalog.py +148 -0
  15. sage/algebras/clifford_algebra.py +3107 -0
  16. sage/algebras/clifford_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  17. sage/algebras/clifford_algebra_element.pxd +16 -0
  18. sage/algebras/clifford_algebra_element.pyx +997 -0
  19. sage/algebras/commutative_dga.py +4252 -0
  20. sage/algebras/exterior_algebra_groebner.cpython-314-x86_64-linux-musl.so +0 -0
  21. sage/algebras/exterior_algebra_groebner.pxd +55 -0
  22. sage/algebras/exterior_algebra_groebner.pyx +727 -0
  23. sage/algebras/finite_dimensional_algebras/all.py +2 -0
  24. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +1029 -0
  25. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  26. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +12 -0
  27. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +706 -0
  28. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_ideal.py +196 -0
  29. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_morphism.py +255 -0
  30. sage/algebras/finite_gca.py +528 -0
  31. sage/algebras/group_algebra.py +232 -0
  32. sage/algebras/lie_algebras/abelian.py +197 -0
  33. sage/algebras/lie_algebras/affine_lie_algebra.py +1213 -0
  34. sage/algebras/lie_algebras/all.py +25 -0
  35. sage/algebras/lie_algebras/all__sagemath_modules.py +1 -0
  36. sage/algebras/lie_algebras/bch.py +177 -0
  37. sage/algebras/lie_algebras/bgg_dual_module.py +1184 -0
  38. sage/algebras/lie_algebras/bgg_resolution.py +232 -0
  39. sage/algebras/lie_algebras/center_uea.py +767 -0
  40. sage/algebras/lie_algebras/classical_lie_algebra.py +2516 -0
  41. sage/algebras/lie_algebras/examples.py +683 -0
  42. sage/algebras/lie_algebras/free_lie_algebra.py +973 -0
  43. sage/algebras/lie_algebras/heisenberg.py +820 -0
  44. sage/algebras/lie_algebras/lie_algebra.py +1562 -0
  45. sage/algebras/lie_algebras/lie_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  46. sage/algebras/lie_algebras/lie_algebra_element.pxd +68 -0
  47. sage/algebras/lie_algebras/lie_algebra_element.pyx +2122 -0
  48. sage/algebras/lie_algebras/morphism.py +661 -0
  49. sage/algebras/lie_algebras/nilpotent_lie_algebra.py +457 -0
  50. sage/algebras/lie_algebras/onsager.py +1324 -0
  51. sage/algebras/lie_algebras/poincare_birkhoff_witt.py +816 -0
  52. sage/algebras/lie_algebras/quotient.py +462 -0
  53. sage/algebras/lie_algebras/rank_two_heisenberg_virasoro.py +355 -0
  54. sage/algebras/lie_algebras/representation.py +1040 -0
  55. sage/algebras/lie_algebras/structure_coefficients.py +459 -0
  56. sage/algebras/lie_algebras/subalgebra.py +967 -0
  57. sage/algebras/lie_algebras/symplectic_derivation.py +289 -0
  58. sage/algebras/lie_algebras/verma_module.py +1630 -0
  59. sage/algebras/lie_algebras/virasoro.py +1186 -0
  60. sage/algebras/octonion_algebra.cpython-314-x86_64-linux-musl.so +0 -0
  61. sage/algebras/octonion_algebra.pxd +20 -0
  62. sage/algebras/octonion_algebra.pyx +987 -0
  63. sage/algebras/orlik_solomon.py +907 -0
  64. sage/algebras/orlik_terao.py +779 -0
  65. sage/algebras/steenrod/all.py +7 -0
  66. sage/algebras/steenrod/steenrod_algebra.py +4258 -0
  67. sage/algebras/steenrod/steenrod_algebra_bases.py +1179 -0
  68. sage/algebras/steenrod/steenrod_algebra_misc.py +1167 -0
  69. sage/algebras/steenrod/steenrod_algebra_mult.py +954 -0
  70. sage/algebras/weyl_algebra.py +1126 -0
  71. sage/all__sagemath_modules.py +62 -0
  72. sage/calculus/all__sagemath_modules.py +19 -0
  73. sage/calculus/expr.py +205 -0
  74. sage/calculus/integration.cpython-314-x86_64-linux-musl.so +0 -0
  75. sage/calculus/integration.pyx +698 -0
  76. sage/calculus/interpolation.cpython-314-x86_64-linux-musl.so +0 -0
  77. sage/calculus/interpolation.pxd +13 -0
  78. sage/calculus/interpolation.pyx +387 -0
  79. sage/calculus/interpolators.cpython-314-x86_64-linux-musl.so +0 -0
  80. sage/calculus/interpolators.pyx +326 -0
  81. sage/calculus/ode.cpython-314-x86_64-linux-musl.so +0 -0
  82. sage/calculus/ode.pxd +5 -0
  83. sage/calculus/ode.pyx +610 -0
  84. sage/calculus/riemann.cpython-314-x86_64-linux-musl.so +0 -0
  85. sage/calculus/riemann.pyx +1521 -0
  86. sage/calculus/test_sympy.py +201 -0
  87. sage/calculus/transforms/all.py +7 -0
  88. sage/calculus/transforms/dft.py +844 -0
  89. sage/calculus/transforms/dwt.cpython-314-x86_64-linux-musl.so +0 -0
  90. sage/calculus/transforms/dwt.pxd +7 -0
  91. sage/calculus/transforms/dwt.pyx +160 -0
  92. sage/calculus/transforms/fft.cpython-314-x86_64-linux-musl.so +0 -0
  93. sage/calculus/transforms/fft.pxd +12 -0
  94. sage/calculus/transforms/fft.pyx +487 -0
  95. sage/calculus/wester.py +662 -0
  96. sage/coding/abstract_code.py +1108 -0
  97. sage/coding/ag_code.py +868 -0
  98. sage/coding/ag_code_decoders.cpython-314-x86_64-linux-musl.so +0 -0
  99. sage/coding/ag_code_decoders.pyx +2639 -0
  100. sage/coding/all.py +15 -0
  101. sage/coding/bch_code.py +494 -0
  102. sage/coding/binary_code.cpython-314-x86_64-linux-musl.so +0 -0
  103. sage/coding/binary_code.pxd +124 -0
  104. sage/coding/binary_code.pyx +4139 -0
  105. sage/coding/bounds_catalog.py +43 -0
  106. sage/coding/channel.py +819 -0
  107. sage/coding/channels_catalog.py +29 -0
  108. sage/coding/code_bounds.py +755 -0
  109. sage/coding/code_constructions.py +804 -0
  110. sage/coding/codes_catalog.py +111 -0
  111. sage/coding/cyclic_code.py +1329 -0
  112. sage/coding/databases.py +316 -0
  113. sage/coding/decoder.py +373 -0
  114. sage/coding/decoders_catalog.py +88 -0
  115. sage/coding/delsarte_bounds.py +709 -0
  116. sage/coding/encoder.py +390 -0
  117. sage/coding/encoders_catalog.py +64 -0
  118. sage/coding/extended_code.py +468 -0
  119. sage/coding/gabidulin_code.py +1058 -0
  120. sage/coding/golay_code.py +404 -0
  121. sage/coding/goppa_code.py +441 -0
  122. sage/coding/grs_code.py +2371 -0
  123. sage/coding/guava.py +107 -0
  124. sage/coding/guruswami_sudan/all.py +1 -0
  125. sage/coding/guruswami_sudan/gs_decoder.py +897 -0
  126. sage/coding/guruswami_sudan/interpolation.py +409 -0
  127. sage/coding/guruswami_sudan/utils.py +176 -0
  128. sage/coding/hamming_code.py +176 -0
  129. sage/coding/information_set_decoder.py +1032 -0
  130. sage/coding/kasami_codes.cpython-314-x86_64-linux-musl.so +0 -0
  131. sage/coding/kasami_codes.pyx +351 -0
  132. sage/coding/linear_code.py +3067 -0
  133. sage/coding/linear_code_no_metric.py +1354 -0
  134. sage/coding/linear_rank_metric.py +961 -0
  135. sage/coding/parity_check_code.py +353 -0
  136. sage/coding/punctured_code.py +719 -0
  137. sage/coding/reed_muller_code.py +999 -0
  138. sage/coding/self_dual_codes.py +942 -0
  139. sage/coding/source_coding/all.py +2 -0
  140. sage/coding/source_coding/huffman.py +553 -0
  141. sage/coding/subfield_subcode.py +423 -0
  142. sage/coding/two_weight_db.py +399 -0
  143. sage/combinat/all__sagemath_modules.py +7 -0
  144. sage/combinat/cartesian_product.py +347 -0
  145. sage/combinat/family.py +11 -0
  146. sage/combinat/free_module.py +1977 -0
  147. sage/combinat/root_system/all.py +147 -0
  148. sage/combinat/root_system/ambient_space.py +527 -0
  149. sage/combinat/root_system/associahedron.py +471 -0
  150. sage/combinat/root_system/braid_move_calculator.py +143 -0
  151. sage/combinat/root_system/braid_orbit.cpython-314-x86_64-linux-musl.so +0 -0
  152. sage/combinat/root_system/braid_orbit.pyx +144 -0
  153. sage/combinat/root_system/branching_rules.py +2301 -0
  154. sage/combinat/root_system/cartan_matrix.py +1245 -0
  155. sage/combinat/root_system/cartan_type.py +3069 -0
  156. sage/combinat/root_system/coxeter_group.py +162 -0
  157. sage/combinat/root_system/coxeter_matrix.py +1261 -0
  158. sage/combinat/root_system/coxeter_type.py +681 -0
  159. sage/combinat/root_system/dynkin_diagram.py +900 -0
  160. sage/combinat/root_system/extended_affine_weyl_group.py +2993 -0
  161. sage/combinat/root_system/fundamental_group.py +795 -0
  162. sage/combinat/root_system/hecke_algebra_representation.py +1203 -0
  163. sage/combinat/root_system/integrable_representations.py +1227 -0
  164. sage/combinat/root_system/non_symmetric_macdonald_polynomials.py +1965 -0
  165. sage/combinat/root_system/pieri_factors.py +1147 -0
  166. sage/combinat/root_system/plot.py +1615 -0
  167. sage/combinat/root_system/root_lattice_realization_algebras.py +1214 -0
  168. sage/combinat/root_system/root_lattice_realizations.py +4628 -0
  169. sage/combinat/root_system/root_space.py +487 -0
  170. sage/combinat/root_system/root_system.py +882 -0
  171. sage/combinat/root_system/type_A.py +348 -0
  172. sage/combinat/root_system/type_A_affine.py +227 -0
  173. sage/combinat/root_system/type_A_infinity.py +241 -0
  174. sage/combinat/root_system/type_B.py +347 -0
  175. sage/combinat/root_system/type_BC_affine.py +287 -0
  176. sage/combinat/root_system/type_B_affine.py +216 -0
  177. sage/combinat/root_system/type_C.py +317 -0
  178. sage/combinat/root_system/type_C_affine.py +188 -0
  179. sage/combinat/root_system/type_D.py +357 -0
  180. sage/combinat/root_system/type_D_affine.py +208 -0
  181. sage/combinat/root_system/type_E.py +641 -0
  182. sage/combinat/root_system/type_E_affine.py +231 -0
  183. sage/combinat/root_system/type_F.py +387 -0
  184. sage/combinat/root_system/type_F_affine.py +137 -0
  185. sage/combinat/root_system/type_G.py +293 -0
  186. sage/combinat/root_system/type_G_affine.py +132 -0
  187. sage/combinat/root_system/type_H.py +105 -0
  188. sage/combinat/root_system/type_I.py +110 -0
  189. sage/combinat/root_system/type_Q.py +150 -0
  190. sage/combinat/root_system/type_affine.py +509 -0
  191. sage/combinat/root_system/type_dual.py +704 -0
  192. sage/combinat/root_system/type_folded.py +301 -0
  193. sage/combinat/root_system/type_marked.py +748 -0
  194. sage/combinat/root_system/type_reducible.py +601 -0
  195. sage/combinat/root_system/type_relabel.py +730 -0
  196. sage/combinat/root_system/type_super_A.py +837 -0
  197. sage/combinat/root_system/weight_lattice_realizations.py +1188 -0
  198. sage/combinat/root_system/weight_space.py +639 -0
  199. sage/combinat/root_system/weyl_characters.py +2238 -0
  200. sage/crypto/__init__.py +4 -0
  201. sage/crypto/all.py +28 -0
  202. sage/crypto/block_cipher/all.py +7 -0
  203. sage/crypto/block_cipher/des.py +1065 -0
  204. sage/crypto/block_cipher/miniaes.py +2171 -0
  205. sage/crypto/block_cipher/present.py +909 -0
  206. sage/crypto/block_cipher/sdes.py +1527 -0
  207. sage/crypto/boolean_function.cpython-314-x86_64-linux-musl.so +0 -0
  208. sage/crypto/boolean_function.pxd +10 -0
  209. sage/crypto/boolean_function.pyx +1487 -0
  210. sage/crypto/cipher.py +78 -0
  211. sage/crypto/classical.py +3668 -0
  212. sage/crypto/classical_cipher.py +569 -0
  213. sage/crypto/cryptosystem.py +387 -0
  214. sage/crypto/key_exchange/all.py +7 -0
  215. sage/crypto/key_exchange/catalog.py +24 -0
  216. sage/crypto/key_exchange/diffie_hellman.py +323 -0
  217. sage/crypto/key_exchange/key_exchange_scheme.py +107 -0
  218. sage/crypto/lattice.py +312 -0
  219. sage/crypto/lfsr.py +295 -0
  220. sage/crypto/lwe.py +840 -0
  221. sage/crypto/mq/__init__.py +4 -0
  222. sage/crypto/mq/mpolynomialsystemgenerator.py +204 -0
  223. sage/crypto/mq/rijndael_gf.py +2345 -0
  224. sage/crypto/mq/sbox.py +7 -0
  225. sage/crypto/mq/sr.py +3344 -0
  226. sage/crypto/public_key/all.py +5 -0
  227. sage/crypto/public_key/blum_goldwasser.py +776 -0
  228. sage/crypto/sbox.cpython-314-x86_64-linux-musl.so +0 -0
  229. sage/crypto/sbox.pyx +2090 -0
  230. sage/crypto/sboxes.py +2090 -0
  231. sage/crypto/stream.py +390 -0
  232. sage/crypto/stream_cipher.py +297 -0
  233. sage/crypto/util.py +519 -0
  234. sage/ext/all__sagemath_modules.py +1 -0
  235. sage/ext/interpreters/__init__.py +1 -0
  236. sage/ext/interpreters/all__sagemath_modules.py +2 -0
  237. sage/ext/interpreters/wrapper_cc.cpython-314-x86_64-linux-musl.so +0 -0
  238. sage/ext/interpreters/wrapper_cc.pxd +30 -0
  239. sage/ext/interpreters/wrapper_cc.pyx +252 -0
  240. sage/ext/interpreters/wrapper_cdf.cpython-314-x86_64-linux-musl.so +0 -0
  241. sage/ext/interpreters/wrapper_cdf.pxd +26 -0
  242. sage/ext/interpreters/wrapper_cdf.pyx +245 -0
  243. sage/ext/interpreters/wrapper_rdf.cpython-314-x86_64-linux-musl.so +0 -0
  244. sage/ext/interpreters/wrapper_rdf.pxd +23 -0
  245. sage/ext/interpreters/wrapper_rdf.pyx +221 -0
  246. sage/ext/interpreters/wrapper_rr.cpython-314-x86_64-linux-musl.so +0 -0
  247. sage/ext/interpreters/wrapper_rr.pxd +28 -0
  248. sage/ext/interpreters/wrapper_rr.pyx +335 -0
  249. sage/geometry/all__sagemath_modules.py +5 -0
  250. sage/geometry/toric_lattice.py +1745 -0
  251. sage/geometry/toric_lattice_element.cpython-314-x86_64-linux-musl.so +0 -0
  252. sage/geometry/toric_lattice_element.pyx +432 -0
  253. sage/groups/abelian_gps/abelian_group.py +1925 -0
  254. sage/groups/abelian_gps/abelian_group_element.py +164 -0
  255. sage/groups/abelian_gps/all__sagemath_modules.py +5 -0
  256. sage/groups/abelian_gps/dual_abelian_group.py +421 -0
  257. sage/groups/abelian_gps/dual_abelian_group_element.py +179 -0
  258. sage/groups/abelian_gps/element_base.py +341 -0
  259. sage/groups/abelian_gps/values.py +488 -0
  260. sage/groups/additive_abelian/additive_abelian_group.py +476 -0
  261. sage/groups/additive_abelian/additive_abelian_wrapper.py +857 -0
  262. sage/groups/additive_abelian/all.py +4 -0
  263. sage/groups/additive_abelian/qmodnz.py +231 -0
  264. sage/groups/additive_abelian/qmodnz_element.py +349 -0
  265. sage/groups/affine_gps/affine_group.py +535 -0
  266. sage/groups/affine_gps/all.py +1 -0
  267. sage/groups/affine_gps/catalog.py +17 -0
  268. sage/groups/affine_gps/euclidean_group.py +246 -0
  269. sage/groups/affine_gps/group_element.py +562 -0
  270. sage/groups/all__sagemath_modules.py +12 -0
  271. sage/groups/galois_group.py +479 -0
  272. sage/groups/matrix_gps/all.py +4 -0
  273. sage/groups/matrix_gps/all__sagemath_modules.py +13 -0
  274. sage/groups/matrix_gps/catalog.py +26 -0
  275. sage/groups/matrix_gps/coxeter_group.py +927 -0
  276. sage/groups/matrix_gps/finitely_generated.py +487 -0
  277. sage/groups/matrix_gps/group_element.cpython-314-x86_64-linux-musl.so +0 -0
  278. sage/groups/matrix_gps/group_element.pxd +11 -0
  279. sage/groups/matrix_gps/group_element.pyx +431 -0
  280. sage/groups/matrix_gps/linear.py +440 -0
  281. sage/groups/matrix_gps/matrix_group.py +617 -0
  282. sage/groups/matrix_gps/named_group.py +296 -0
  283. sage/groups/matrix_gps/orthogonal.py +544 -0
  284. sage/groups/matrix_gps/symplectic.py +251 -0
  285. sage/groups/matrix_gps/unitary.py +436 -0
  286. sage/groups/misc_gps/all__sagemath_modules.py +1 -0
  287. sage/groups/misc_gps/argument_groups.py +1905 -0
  288. sage/groups/misc_gps/imaginary_groups.py +479 -0
  289. sage/groups/perm_gps/all__sagemath_modules.py +1 -0
  290. sage/groups/perm_gps/partn_ref/all__sagemath_modules.py +1 -0
  291. sage/groups/perm_gps/partn_ref/refinement_binary.cpython-314-x86_64-linux-musl.so +0 -0
  292. sage/groups/perm_gps/partn_ref/refinement_binary.pxd +41 -0
  293. sage/groups/perm_gps/partn_ref/refinement_binary.pyx +1167 -0
  294. sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-314-x86_64-linux-musl.so +0 -0
  295. sage/groups/perm_gps/partn_ref/refinement_matrices.pxd +31 -0
  296. sage/groups/perm_gps/partn_ref/refinement_matrices.pyx +385 -0
  297. sage/homology/algebraic_topological_model.py +595 -0
  298. sage/homology/all.py +2 -0
  299. sage/homology/all__sagemath_modules.py +8 -0
  300. sage/homology/chain_complex.py +2148 -0
  301. sage/homology/chain_complex_homspace.py +165 -0
  302. sage/homology/chain_complex_morphism.py +629 -0
  303. sage/homology/chain_homotopy.py +604 -0
  304. sage/homology/chains.py +653 -0
  305. sage/homology/free_resolution.py +923 -0
  306. sage/homology/graded_resolution.py +567 -0
  307. sage/homology/hochschild_complex.py +756 -0
  308. sage/homology/homology_group.py +188 -0
  309. sage/homology/homology_morphism.py +422 -0
  310. sage/homology/homology_vector_space_with_basis.py +1454 -0
  311. sage/homology/koszul_complex.py +169 -0
  312. sage/homology/matrix_utils.py +205 -0
  313. sage/libs/all__sagemath_modules.py +1 -0
  314. sage/libs/gsl/__init__.py +1 -0
  315. sage/libs/gsl/airy.pxd +56 -0
  316. sage/libs/gsl/all.pxd +66 -0
  317. sage/libs/gsl/array.cpython-314-x86_64-linux-musl.so +0 -0
  318. sage/libs/gsl/array.pxd +5 -0
  319. sage/libs/gsl/array.pyx +102 -0
  320. sage/libs/gsl/bessel.pxd +208 -0
  321. sage/libs/gsl/blas.pxd +116 -0
  322. sage/libs/gsl/blas_types.pxd +34 -0
  323. sage/libs/gsl/block.pxd +52 -0
  324. sage/libs/gsl/chebyshev.pxd +37 -0
  325. sage/libs/gsl/clausen.pxd +12 -0
  326. sage/libs/gsl/combination.pxd +47 -0
  327. sage/libs/gsl/complex.pxd +151 -0
  328. sage/libs/gsl/coulomb.pxd +30 -0
  329. sage/libs/gsl/coupling.pxd +21 -0
  330. sage/libs/gsl/dawson.pxd +12 -0
  331. sage/libs/gsl/debye.pxd +24 -0
  332. sage/libs/gsl/dilog.pxd +14 -0
  333. sage/libs/gsl/eigen.pxd +46 -0
  334. sage/libs/gsl/elementary.pxd +12 -0
  335. sage/libs/gsl/ellint.pxd +48 -0
  336. sage/libs/gsl/elljac.pxd +8 -0
  337. sage/libs/gsl/erf.pxd +32 -0
  338. sage/libs/gsl/errno.pxd +26 -0
  339. sage/libs/gsl/exp.pxd +44 -0
  340. sage/libs/gsl/expint.pxd +44 -0
  341. sage/libs/gsl/fermi_dirac.pxd +44 -0
  342. sage/libs/gsl/fft.pxd +121 -0
  343. sage/libs/gsl/fit.pxd +50 -0
  344. sage/libs/gsl/gamma.pxd +94 -0
  345. sage/libs/gsl/gegenbauer.pxd +26 -0
  346. sage/libs/gsl/histogram.pxd +176 -0
  347. sage/libs/gsl/hyperg.pxd +52 -0
  348. sage/libs/gsl/integration.pxd +69 -0
  349. sage/libs/gsl/interp.pxd +109 -0
  350. sage/libs/gsl/laguerre.pxd +24 -0
  351. sage/libs/gsl/lambert.pxd +16 -0
  352. sage/libs/gsl/legendre.pxd +90 -0
  353. sage/libs/gsl/linalg.pxd +185 -0
  354. sage/libs/gsl/log.pxd +26 -0
  355. sage/libs/gsl/math.pxd +43 -0
  356. sage/libs/gsl/matrix.pxd +143 -0
  357. sage/libs/gsl/matrix_complex.pxd +130 -0
  358. sage/libs/gsl/min.pxd +67 -0
  359. sage/libs/gsl/monte.pxd +56 -0
  360. sage/libs/gsl/ntuple.pxd +32 -0
  361. sage/libs/gsl/odeiv.pxd +70 -0
  362. sage/libs/gsl/permutation.pxd +78 -0
  363. sage/libs/gsl/poly.pxd +40 -0
  364. sage/libs/gsl/pow_int.pxd +12 -0
  365. sage/libs/gsl/psi.pxd +28 -0
  366. sage/libs/gsl/qrng.pxd +29 -0
  367. sage/libs/gsl/random.pxd +257 -0
  368. sage/libs/gsl/rng.pxd +100 -0
  369. sage/libs/gsl/roots.pxd +72 -0
  370. sage/libs/gsl/sort.pxd +36 -0
  371. sage/libs/gsl/statistics.pxd +59 -0
  372. sage/libs/gsl/sum.pxd +55 -0
  373. sage/libs/gsl/synchrotron.pxd +16 -0
  374. sage/libs/gsl/transport.pxd +24 -0
  375. sage/libs/gsl/trig.pxd +58 -0
  376. sage/libs/gsl/types.pxd +137 -0
  377. sage/libs/gsl/vector.pxd +101 -0
  378. sage/libs/gsl/vector_complex.pxd +83 -0
  379. sage/libs/gsl/wavelet.pxd +49 -0
  380. sage/libs/gsl/zeta.pxd +28 -0
  381. sage/libs/mpc/__init__.pxd +114 -0
  382. sage/libs/mpc/types.pxd +28 -0
  383. sage/libs/mpfr/__init__.pxd +299 -0
  384. sage/libs/mpfr/types.pxd +26 -0
  385. sage/libs/mpmath/__init__.py +1 -0
  386. sage/libs/mpmath/all.py +27 -0
  387. sage/libs/mpmath/all__sagemath_modules.py +1 -0
  388. sage/libs/mpmath/utils.cpython-314-x86_64-linux-musl.so +0 -0
  389. sage/libs/mpmath/utils.pxd +4 -0
  390. sage/libs/mpmath/utils.pyx +319 -0
  391. sage/matrix/action.cpython-314-x86_64-linux-musl.so +0 -0
  392. sage/matrix/action.pxd +26 -0
  393. sage/matrix/action.pyx +596 -0
  394. sage/matrix/all.py +9 -0
  395. sage/matrix/args.cpython-314-x86_64-linux-musl.so +0 -0
  396. sage/matrix/args.pxd +144 -0
  397. sage/matrix/args.pyx +1668 -0
  398. sage/matrix/benchmark.py +1258 -0
  399. sage/matrix/berlekamp_massey.py +95 -0
  400. sage/matrix/compute_J_ideal.py +926 -0
  401. sage/matrix/constructor.cpython-314-x86_64-linux-musl.so +0 -0
  402. sage/matrix/constructor.pyx +750 -0
  403. sage/matrix/docs.py +430 -0
  404. sage/matrix/echelon_matrix.cpython-314-x86_64-linux-musl.so +0 -0
  405. sage/matrix/echelon_matrix.pyx +155 -0
  406. sage/matrix/matrix.pxd +2 -0
  407. sage/matrix/matrix0.cpython-314-x86_64-linux-musl.so +0 -0
  408. sage/matrix/matrix0.pxd +68 -0
  409. sage/matrix/matrix0.pyx +6324 -0
  410. sage/matrix/matrix1.cpython-314-x86_64-linux-musl.so +0 -0
  411. sage/matrix/matrix1.pxd +8 -0
  412. sage/matrix/matrix1.pyx +2851 -0
  413. sage/matrix/matrix2.cpython-314-x86_64-linux-musl.so +0 -0
  414. sage/matrix/matrix2.pxd +25 -0
  415. sage/matrix/matrix2.pyx +20181 -0
  416. sage/matrix/matrix_cdv.cpython-314-x86_64-linux-musl.so +0 -0
  417. sage/matrix/matrix_cdv.pxd +4 -0
  418. sage/matrix/matrix_cdv.pyx +93 -0
  419. sage/matrix/matrix_complex_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  420. sage/matrix/matrix_complex_double_dense.pxd +5 -0
  421. sage/matrix/matrix_complex_double_dense.pyx +98 -0
  422. sage/matrix/matrix_dense.cpython-314-x86_64-linux-musl.so +0 -0
  423. sage/matrix/matrix_dense.pxd +5 -0
  424. sage/matrix/matrix_dense.pyx +343 -0
  425. sage/matrix/matrix_domain_dense.pxd +5 -0
  426. sage/matrix/matrix_domain_sparse.pxd +5 -0
  427. sage/matrix/matrix_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  428. sage/matrix/matrix_double_dense.pxd +7 -0
  429. sage/matrix/matrix_double_dense.pyx +3906 -0
  430. sage/matrix/matrix_double_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  431. sage/matrix/matrix_double_sparse.pxd +6 -0
  432. sage/matrix/matrix_double_sparse.pyx +248 -0
  433. sage/matrix/matrix_generic_dense.cpython-314-x86_64-linux-musl.so +0 -0
  434. sage/matrix/matrix_generic_dense.pxd +7 -0
  435. sage/matrix/matrix_generic_dense.pyx +354 -0
  436. sage/matrix/matrix_generic_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  437. sage/matrix/matrix_generic_sparse.pxd +7 -0
  438. sage/matrix/matrix_generic_sparse.pyx +461 -0
  439. sage/matrix/matrix_laurent_mpolynomial_dense.cpython-314-x86_64-linux-musl.so +0 -0
  440. sage/matrix/matrix_laurent_mpolynomial_dense.pxd +5 -0
  441. sage/matrix/matrix_laurent_mpolynomial_dense.pyx +115 -0
  442. sage/matrix/matrix_misc.py +313 -0
  443. sage/matrix/matrix_numpy_dense.cpython-314-x86_64-linux-musl.so +0 -0
  444. sage/matrix/matrix_numpy_dense.pxd +14 -0
  445. sage/matrix/matrix_numpy_dense.pyx +450 -0
  446. sage/matrix/matrix_numpy_integer_dense.cpython-314-x86_64-linux-musl.so +0 -0
  447. sage/matrix/matrix_numpy_integer_dense.pxd +7 -0
  448. sage/matrix/matrix_numpy_integer_dense.pyx +59 -0
  449. sage/matrix/matrix_polynomial_dense.cpython-314-x86_64-linux-musl.so +0 -0
  450. sage/matrix/matrix_polynomial_dense.pxd +5 -0
  451. sage/matrix/matrix_polynomial_dense.pyx +5341 -0
  452. sage/matrix/matrix_real_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  453. sage/matrix/matrix_real_double_dense.pxd +7 -0
  454. sage/matrix/matrix_real_double_dense.pyx +122 -0
  455. sage/matrix/matrix_space.py +2848 -0
  456. sage/matrix/matrix_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  457. sage/matrix/matrix_sparse.pxd +5 -0
  458. sage/matrix/matrix_sparse.pyx +1222 -0
  459. sage/matrix/matrix_window.cpython-314-x86_64-linux-musl.so +0 -0
  460. sage/matrix/matrix_window.pxd +37 -0
  461. sage/matrix/matrix_window.pyx +242 -0
  462. sage/matrix/misc_mpfr.cpython-314-x86_64-linux-musl.so +0 -0
  463. sage/matrix/misc_mpfr.pyx +80 -0
  464. sage/matrix/operation_table.py +1182 -0
  465. sage/matrix/special.py +3666 -0
  466. sage/matrix/strassen.cpython-314-x86_64-linux-musl.so +0 -0
  467. sage/matrix/strassen.pyx +851 -0
  468. sage/matrix/symplectic_basis.py +541 -0
  469. sage/matrix/template.pxd +6 -0
  470. sage/matrix/tests.py +71 -0
  471. sage/matroids/advanced.py +77 -0
  472. sage/matroids/all.py +13 -0
  473. sage/matroids/basis_exchange_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  474. sage/matroids/basis_exchange_matroid.pxd +96 -0
  475. sage/matroids/basis_exchange_matroid.pyx +2344 -0
  476. sage/matroids/basis_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  477. sage/matroids/basis_matroid.pxd +45 -0
  478. sage/matroids/basis_matroid.pyx +1217 -0
  479. sage/matroids/catalog.py +44 -0
  480. sage/matroids/chow_ring.py +473 -0
  481. sage/matroids/chow_ring_ideal.py +849 -0
  482. sage/matroids/circuit_closures_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  483. sage/matroids/circuit_closures_matroid.pxd +16 -0
  484. sage/matroids/circuit_closures_matroid.pyx +559 -0
  485. sage/matroids/circuits_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  486. sage/matroids/circuits_matroid.pxd +38 -0
  487. sage/matroids/circuits_matroid.pyx +947 -0
  488. sage/matroids/constructor.py +1086 -0
  489. sage/matroids/database_collections.py +365 -0
  490. sage/matroids/database_matroids.py +5338 -0
  491. sage/matroids/dual_matroid.py +583 -0
  492. sage/matroids/extension.cpython-314-x86_64-linux-musl.so +0 -0
  493. sage/matroids/extension.pxd +34 -0
  494. sage/matroids/extension.pyx +519 -0
  495. sage/matroids/flats_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  496. sage/matroids/flats_matroid.pxd +28 -0
  497. sage/matroids/flats_matroid.pyx +715 -0
  498. sage/matroids/gammoid.py +600 -0
  499. sage/matroids/graphic_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  500. sage/matroids/graphic_matroid.pxd +39 -0
  501. sage/matroids/graphic_matroid.pyx +2024 -0
  502. sage/matroids/lean_matrix.cpython-314-x86_64-linux-musl.so +0 -0
  503. sage/matroids/lean_matrix.pxd +126 -0
  504. sage/matroids/lean_matrix.pyx +3667 -0
  505. sage/matroids/linear_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  506. sage/matroids/linear_matroid.pxd +180 -0
  507. sage/matroids/linear_matroid.pyx +6649 -0
  508. sage/matroids/matroid.cpython-314-x86_64-linux-musl.so +0 -0
  509. sage/matroids/matroid.pxd +243 -0
  510. sage/matroids/matroid.pyx +8759 -0
  511. sage/matroids/matroids_catalog.py +190 -0
  512. sage/matroids/matroids_plot_helpers.py +890 -0
  513. sage/matroids/minor_matroid.py +480 -0
  514. sage/matroids/minorfix.h +9 -0
  515. sage/matroids/named_matroids.py +5 -0
  516. sage/matroids/rank_matroid.py +268 -0
  517. sage/matroids/set_system.cpython-314-x86_64-linux-musl.so +0 -0
  518. sage/matroids/set_system.pxd +38 -0
  519. sage/matroids/set_system.pyx +800 -0
  520. sage/matroids/transversal_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  521. sage/matroids/transversal_matroid.pxd +14 -0
  522. sage/matroids/transversal_matroid.pyx +893 -0
  523. sage/matroids/union_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  524. sage/matroids/union_matroid.pxd +20 -0
  525. sage/matroids/union_matroid.pyx +331 -0
  526. sage/matroids/unpickling.cpython-314-x86_64-linux-musl.so +0 -0
  527. sage/matroids/unpickling.pyx +843 -0
  528. sage/matroids/utilities.py +809 -0
  529. sage/misc/all__sagemath_modules.py +20 -0
  530. sage/misc/c3.cpython-314-x86_64-linux-musl.so +0 -0
  531. sage/misc/c3.pyx +238 -0
  532. sage/misc/compat.py +87 -0
  533. sage/misc/element_with_label.py +173 -0
  534. sage/misc/func_persist.py +79 -0
  535. sage/misc/pickle_old.cpython-314-x86_64-linux-musl.so +0 -0
  536. sage/misc/pickle_old.pyx +19 -0
  537. sage/misc/proof.py +7 -0
  538. sage/misc/replace_dot_all.py +472 -0
  539. sage/misc/sagedoc_conf.py +168 -0
  540. sage/misc/sphinxify.py +167 -0
  541. sage/misc/test_class_pickling.py +85 -0
  542. sage/modules/all.py +42 -0
  543. sage/modules/complex_double_vector.py +25 -0
  544. sage/modules/diamond_cutting.py +380 -0
  545. sage/modules/fg_pid/all.py +1 -0
  546. sage/modules/fg_pid/fgp_element.py +456 -0
  547. sage/modules/fg_pid/fgp_module.py +2091 -0
  548. sage/modules/fg_pid/fgp_morphism.py +550 -0
  549. sage/modules/filtered_vector_space.py +1271 -0
  550. sage/modules/finite_submodule_iter.cpython-314-x86_64-linux-musl.so +0 -0
  551. sage/modules/finite_submodule_iter.pxd +27 -0
  552. sage/modules/finite_submodule_iter.pyx +452 -0
  553. sage/modules/fp_graded/all.py +1 -0
  554. sage/modules/fp_graded/element.py +346 -0
  555. sage/modules/fp_graded/free_element.py +298 -0
  556. sage/modules/fp_graded/free_homspace.py +53 -0
  557. sage/modules/fp_graded/free_module.py +1060 -0
  558. sage/modules/fp_graded/free_morphism.py +217 -0
  559. sage/modules/fp_graded/homspace.py +563 -0
  560. sage/modules/fp_graded/module.py +1340 -0
  561. sage/modules/fp_graded/morphism.py +1990 -0
  562. sage/modules/fp_graded/steenrod/all.py +1 -0
  563. sage/modules/fp_graded/steenrod/homspace.py +65 -0
  564. sage/modules/fp_graded/steenrod/module.py +477 -0
  565. sage/modules/fp_graded/steenrod/morphism.py +404 -0
  566. sage/modules/fp_graded/steenrod/profile.py +241 -0
  567. sage/modules/free_module.py +8447 -0
  568. sage/modules/free_module_element.cpython-314-x86_64-linux-musl.so +0 -0
  569. sage/modules/free_module_element.pxd +22 -0
  570. sage/modules/free_module_element.pyx +5445 -0
  571. sage/modules/free_module_homspace.py +369 -0
  572. sage/modules/free_module_integer.py +896 -0
  573. sage/modules/free_module_morphism.py +823 -0
  574. sage/modules/free_module_pseudohomspace.py +352 -0
  575. sage/modules/free_module_pseudomorphism.py +578 -0
  576. sage/modules/free_quadratic_module.py +1706 -0
  577. sage/modules/free_quadratic_module_integer_symmetric.py +1790 -0
  578. sage/modules/matrix_morphism.py +1745 -0
  579. sage/modules/misc.py +103 -0
  580. sage/modules/module_functors.py +192 -0
  581. sage/modules/multi_filtered_vector_space.py +719 -0
  582. sage/modules/ore_module.py +2208 -0
  583. sage/modules/ore_module_element.py +178 -0
  584. sage/modules/ore_module_homspace.py +147 -0
  585. sage/modules/ore_module_morphism.py +968 -0
  586. sage/modules/quotient_module.py +699 -0
  587. sage/modules/real_double_vector.py +22 -0
  588. sage/modules/submodule.py +255 -0
  589. sage/modules/tensor_operations.py +567 -0
  590. sage/modules/torsion_quadratic_module.py +1352 -0
  591. sage/modules/tutorial_free_modules.py +248 -0
  592. sage/modules/vector_complex_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  593. sage/modules/vector_complex_double_dense.pxd +6 -0
  594. sage/modules/vector_complex_double_dense.pyx +117 -0
  595. sage/modules/vector_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  596. sage/modules/vector_double_dense.pxd +6 -0
  597. sage/modules/vector_double_dense.pyx +604 -0
  598. sage/modules/vector_integer_dense.cpython-314-x86_64-linux-musl.so +0 -0
  599. sage/modules/vector_integer_dense.pxd +15 -0
  600. sage/modules/vector_integer_dense.pyx +361 -0
  601. sage/modules/vector_integer_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  602. sage/modules/vector_integer_sparse.pxd +29 -0
  603. sage/modules/vector_integer_sparse.pyx +406 -0
  604. sage/modules/vector_modn_dense.cpython-314-x86_64-linux-musl.so +0 -0
  605. sage/modules/vector_modn_dense.pxd +12 -0
  606. sage/modules/vector_modn_dense.pyx +394 -0
  607. sage/modules/vector_modn_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  608. sage/modules/vector_modn_sparse.pxd +21 -0
  609. sage/modules/vector_modn_sparse.pyx +298 -0
  610. sage/modules/vector_numpy_dense.cpython-314-x86_64-linux-musl.so +0 -0
  611. sage/modules/vector_numpy_dense.pxd +15 -0
  612. sage/modules/vector_numpy_dense.pyx +304 -0
  613. sage/modules/vector_numpy_integer_dense.cpython-314-x86_64-linux-musl.so +0 -0
  614. sage/modules/vector_numpy_integer_dense.pxd +7 -0
  615. sage/modules/vector_numpy_integer_dense.pyx +54 -0
  616. sage/modules/vector_rational_dense.cpython-314-x86_64-linux-musl.so +0 -0
  617. sage/modules/vector_rational_dense.pxd +15 -0
  618. sage/modules/vector_rational_dense.pyx +387 -0
  619. sage/modules/vector_rational_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  620. sage/modules/vector_rational_sparse.pxd +30 -0
  621. sage/modules/vector_rational_sparse.pyx +413 -0
  622. sage/modules/vector_real_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  623. sage/modules/vector_real_double_dense.pxd +6 -0
  624. sage/modules/vector_real_double_dense.pyx +126 -0
  625. sage/modules/vector_space_homspace.py +430 -0
  626. sage/modules/vector_space_morphism.py +989 -0
  627. sage/modules/with_basis/all.py +15 -0
  628. sage/modules/with_basis/cell_module.py +494 -0
  629. sage/modules/with_basis/indexed_element.cpython-314-x86_64-linux-musl.so +0 -0
  630. sage/modules/with_basis/indexed_element.pxd +13 -0
  631. sage/modules/with_basis/indexed_element.pyx +1058 -0
  632. sage/modules/with_basis/invariant.py +1075 -0
  633. sage/modules/with_basis/morphism.py +1636 -0
  634. sage/modules/with_basis/representation.py +2939 -0
  635. sage/modules/with_basis/subquotient.py +685 -0
  636. sage/numerical/all__sagemath_modules.py +6 -0
  637. sage/numerical/gauss_legendre.cpython-314-x86_64-linux-musl.so +0 -0
  638. sage/numerical/gauss_legendre.pyx +381 -0
  639. sage/numerical/optimize.py +910 -0
  640. sage/probability/all.py +10 -0
  641. sage/probability/probability_distribution.cpython-314-x86_64-linux-musl.so +0 -0
  642. sage/probability/probability_distribution.pyx +1242 -0
  643. sage/probability/random_variable.py +411 -0
  644. sage/quadratic_forms/all.py +4 -0
  645. sage/quadratic_forms/all__sagemath_modules.py +15 -0
  646. sage/quadratic_forms/binary_qf.py +2042 -0
  647. sage/quadratic_forms/bqf_class_group.py +748 -0
  648. sage/quadratic_forms/constructions.py +93 -0
  649. sage/quadratic_forms/count_local_2.cpython-314-x86_64-linux-musl.so +0 -0
  650. sage/quadratic_forms/count_local_2.pyx +365 -0
  651. sage/quadratic_forms/extras.py +195 -0
  652. sage/quadratic_forms/quadratic_form.py +1753 -0
  653. sage/quadratic_forms/quadratic_form__count_local_2.py +221 -0
  654. sage/quadratic_forms/quadratic_form__equivalence_testing.py +708 -0
  655. sage/quadratic_forms/quadratic_form__evaluate.cpython-314-x86_64-linux-musl.so +0 -0
  656. sage/quadratic_forms/quadratic_form__evaluate.pyx +139 -0
  657. sage/quadratic_forms/quadratic_form__local_density_congruence.py +977 -0
  658. sage/quadratic_forms/quadratic_form__local_field_invariants.py +1072 -0
  659. sage/quadratic_forms/quadratic_form__neighbors.py +424 -0
  660. sage/quadratic_forms/quadratic_form__reduction_theory.py +488 -0
  661. sage/quadratic_forms/quadratic_form__split_local_covering.py +416 -0
  662. sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +657 -0
  663. sage/quadratic_forms/quadratic_form__theta.py +352 -0
  664. sage/quadratic_forms/quadratic_form__variable_substitutions.py +370 -0
  665. sage/quadratic_forms/random_quadraticform.py +209 -0
  666. sage/quadratic_forms/ternary.cpython-314-x86_64-linux-musl.so +0 -0
  667. sage/quadratic_forms/ternary.pyx +1154 -0
  668. sage/quadratic_forms/ternary_qf.py +2027 -0
  669. sage/rings/all__sagemath_modules.py +28 -0
  670. sage/rings/asymptotic/all__sagemath_modules.py +1 -0
  671. sage/rings/asymptotic/misc.py +1252 -0
  672. sage/rings/cc.py +4 -0
  673. sage/rings/cfinite_sequence.py +1306 -0
  674. sage/rings/complex_conversion.cpython-314-x86_64-linux-musl.so +0 -0
  675. sage/rings/complex_conversion.pxd +8 -0
  676. sage/rings/complex_conversion.pyx +23 -0
  677. sage/rings/complex_double.cpython-314-x86_64-linux-musl.so +0 -0
  678. sage/rings/complex_double.pxd +21 -0
  679. sage/rings/complex_double.pyx +2654 -0
  680. sage/rings/complex_mpc.cpython-314-x86_64-linux-musl.so +0 -0
  681. sage/rings/complex_mpc.pxd +21 -0
  682. sage/rings/complex_mpc.pyx +2576 -0
  683. sage/rings/complex_mpfr.cpython-314-x86_64-linux-musl.so +0 -0
  684. sage/rings/complex_mpfr.pxd +18 -0
  685. sage/rings/complex_mpfr.pyx +3602 -0
  686. sage/rings/derivation.py +2334 -0
  687. sage/rings/finite_rings/all__sagemath_modules.py +1 -0
  688. sage/rings/finite_rings/maps_finite_field.py +191 -0
  689. sage/rings/function_field/all__sagemath_modules.py +8 -0
  690. sage/rings/function_field/derivations.py +102 -0
  691. sage/rings/function_field/derivations_rational.py +132 -0
  692. sage/rings/function_field/differential.py +853 -0
  693. sage/rings/function_field/divisor.py +1107 -0
  694. sage/rings/function_field/drinfeld_modules/action.py +199 -0
  695. sage/rings/function_field/drinfeld_modules/all.py +1 -0
  696. sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +673 -0
  697. sage/rings/function_field/drinfeld_modules/drinfeld_module.py +2087 -0
  698. sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1131 -0
  699. sage/rings/function_field/drinfeld_modules/homset.py +420 -0
  700. sage/rings/function_field/drinfeld_modules/morphism.py +820 -0
  701. sage/rings/function_field/hermite_form_polynomial.cpython-314-x86_64-linux-musl.so +0 -0
  702. sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
  703. sage/rings/function_field/khuri_makdisi.cpython-314-x86_64-linux-musl.so +0 -0
  704. sage/rings/function_field/khuri_makdisi.pyx +935 -0
  705. sage/rings/invariants/all.py +4 -0
  706. sage/rings/invariants/invariant_theory.py +4597 -0
  707. sage/rings/invariants/reconstruction.py +395 -0
  708. sage/rings/polynomial/all__sagemath_modules.py +17 -0
  709. sage/rings/polynomial/integer_valued_polynomials.py +1230 -0
  710. sage/rings/polynomial/laurent_polynomial_mpair.cpython-314-x86_64-linux-musl.so +0 -0
  711. sage/rings/polynomial/laurent_polynomial_mpair.pxd +15 -0
  712. sage/rings/polynomial/laurent_polynomial_mpair.pyx +2023 -0
  713. sage/rings/polynomial/ore_function_element.py +952 -0
  714. sage/rings/polynomial/ore_function_field.py +1028 -0
  715. sage/rings/polynomial/ore_polynomial_element.cpython-314-x86_64-linux-musl.so +0 -0
  716. sage/rings/polynomial/ore_polynomial_element.pxd +48 -0
  717. sage/rings/polynomial/ore_polynomial_element.pyx +3145 -0
  718. sage/rings/polynomial/ore_polynomial_ring.py +1334 -0
  719. sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-314-x86_64-linux-musl.so +0 -0
  720. sage/rings/polynomial/polynomial_real_mpfr_dense.pyx +788 -0
  721. sage/rings/polynomial/q_integer_valued_polynomials.py +1264 -0
  722. sage/rings/polynomial/skew_polynomial_element.cpython-314-x86_64-linux-musl.so +0 -0
  723. sage/rings/polynomial/skew_polynomial_element.pxd +9 -0
  724. sage/rings/polynomial/skew_polynomial_element.pyx +684 -0
  725. sage/rings/polynomial/skew_polynomial_finite_field.cpython-314-x86_64-linux-musl.so +0 -0
  726. sage/rings/polynomial/skew_polynomial_finite_field.pxd +19 -0
  727. sage/rings/polynomial/skew_polynomial_finite_field.pyx +1093 -0
  728. sage/rings/polynomial/skew_polynomial_finite_order.cpython-314-x86_64-linux-musl.so +0 -0
  729. sage/rings/polynomial/skew_polynomial_finite_order.pxd +10 -0
  730. sage/rings/polynomial/skew_polynomial_finite_order.pyx +567 -0
  731. sage/rings/polynomial/skew_polynomial_ring.py +908 -0
  732. sage/rings/real_double_element_gsl.cpython-314-x86_64-linux-musl.so +0 -0
  733. sage/rings/real_double_element_gsl.pxd +8 -0
  734. sage/rings/real_double_element_gsl.pyx +794 -0
  735. sage/rings/real_field.py +58 -0
  736. sage/rings/real_mpfr.cpython-314-x86_64-linux-musl.so +0 -0
  737. sage/rings/real_mpfr.pxd +29 -0
  738. sage/rings/real_mpfr.pyx +6122 -0
  739. sage/rings/ring_extension.cpython-314-x86_64-linux-musl.so +0 -0
  740. sage/rings/ring_extension.pxd +42 -0
  741. sage/rings/ring_extension.pyx +2779 -0
  742. sage/rings/ring_extension_conversion.cpython-314-x86_64-linux-musl.so +0 -0
  743. sage/rings/ring_extension_conversion.pxd +16 -0
  744. sage/rings/ring_extension_conversion.pyx +462 -0
  745. sage/rings/ring_extension_element.cpython-314-x86_64-linux-musl.so +0 -0
  746. sage/rings/ring_extension_element.pxd +21 -0
  747. sage/rings/ring_extension_element.pyx +1635 -0
  748. sage/rings/ring_extension_homset.py +64 -0
  749. sage/rings/ring_extension_morphism.cpython-314-x86_64-linux-musl.so +0 -0
  750. sage/rings/ring_extension_morphism.pxd +35 -0
  751. sage/rings/ring_extension_morphism.pyx +920 -0
  752. sage/schemes/all__sagemath_modules.py +1 -0
  753. sage/schemes/projective/all__sagemath_modules.py +1 -0
  754. sage/schemes/projective/coherent_sheaf.py +300 -0
  755. sage/schemes/projective/cohomology.py +510 -0
  756. sage/stats/all.py +15 -0
  757. sage/stats/basic_stats.py +489 -0
  758. sage/stats/distributions/all.py +7 -0
  759. sage/stats/distributions/catalog.py +34 -0
  760. sage/stats/distributions/dgs.h +50 -0
  761. sage/stats/distributions/dgs.pxd +111 -0
  762. sage/stats/distributions/dgs_bern.h +400 -0
  763. sage/stats/distributions/dgs_gauss.h +614 -0
  764. sage/stats/distributions/dgs_misc.h +104 -0
  765. sage/stats/distributions/discrete_gaussian_integer.cpython-314-x86_64-linux-musl.so +0 -0
  766. sage/stats/distributions/discrete_gaussian_integer.pxd +14 -0
  767. sage/stats/distributions/discrete_gaussian_integer.pyx +498 -0
  768. sage/stats/distributions/discrete_gaussian_lattice.py +908 -0
  769. sage/stats/distributions/discrete_gaussian_polynomial.py +141 -0
  770. sage/stats/hmm/all.py +15 -0
  771. sage/stats/hmm/chmm.cpython-314-x86_64-linux-musl.so +0 -0
  772. sage/stats/hmm/chmm.pyx +1595 -0
  773. sage/stats/hmm/distributions.cpython-314-x86_64-linux-musl.so +0 -0
  774. sage/stats/hmm/distributions.pxd +29 -0
  775. sage/stats/hmm/distributions.pyx +531 -0
  776. sage/stats/hmm/hmm.cpython-314-x86_64-linux-musl.so +0 -0
  777. sage/stats/hmm/hmm.pxd +17 -0
  778. sage/stats/hmm/hmm.pyx +1388 -0
  779. sage/stats/hmm/util.cpython-314-x86_64-linux-musl.so +0 -0
  780. sage/stats/hmm/util.pxd +7 -0
  781. sage/stats/hmm/util.pyx +165 -0
  782. sage/stats/intlist.cpython-314-x86_64-linux-musl.so +0 -0
  783. sage/stats/intlist.pxd +14 -0
  784. sage/stats/intlist.pyx +588 -0
  785. sage/stats/r.py +49 -0
  786. sage/stats/time_series.cpython-314-x86_64-linux-musl.so +0 -0
  787. sage/stats/time_series.pxd +6 -0
  788. sage/stats/time_series.pyx +2546 -0
  789. sage/tensor/all.py +2 -0
  790. sage/tensor/modules/all.py +8 -0
  791. sage/tensor/modules/alternating_contr_tensor.py +761 -0
  792. sage/tensor/modules/comp.py +5598 -0
  793. sage/tensor/modules/ext_pow_free_module.py +824 -0
  794. sage/tensor/modules/finite_rank_free_module.py +3589 -0
  795. sage/tensor/modules/format_utilities.py +333 -0
  796. sage/tensor/modules/free_module_alt_form.py +858 -0
  797. sage/tensor/modules/free_module_automorphism.py +1207 -0
  798. sage/tensor/modules/free_module_basis.py +1074 -0
  799. sage/tensor/modules/free_module_element.py +284 -0
  800. sage/tensor/modules/free_module_homset.py +652 -0
  801. sage/tensor/modules/free_module_linear_group.py +564 -0
  802. sage/tensor/modules/free_module_morphism.py +1581 -0
  803. sage/tensor/modules/free_module_tensor.py +3289 -0
  804. sage/tensor/modules/reflexive_module.py +386 -0
  805. sage/tensor/modules/tensor_free_module.py +780 -0
  806. sage/tensor/modules/tensor_free_submodule.py +538 -0
  807. sage/tensor/modules/tensor_free_submodule_basis.py +140 -0
  808. sage/tensor/modules/tensor_with_indices.py +1043 -0
@@ -0,0 +1,900 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ # sage.doctest: needs sage.combinat sage.graphs
3
+ """
4
+ Dynkin diagrams
5
+
6
+ AUTHORS:
7
+
8
+ - Travis Scrimshaw (2012-04-22): Nicolas M. Thiery moved Cartan matrix creation
9
+ to here and I cached results for speed.
10
+
11
+ - Travis Scrimshaw (2013-06-11): Changed inputs of Dynkin diagrams to handle
12
+ other Dynkin diagrams and graphs. Implemented remaining Cartan type methods.
13
+
14
+ - Christian Stump, Travis Scrimshaw (2013-04-11): Added Cartan matrix as
15
+ possible input for Dynkin diagrams.
16
+ """
17
+ # ****************************************************************************
18
+ # Copyright (C) 2007 Mike Hansen <mhansen@gmail.com>,
19
+ # Copyright (C) 2013 Travis Scrimshaw <tscrim@ucdavis.edu>
20
+ #
21
+ # Distributed under the terms of the GNU General Public License (GPL)
22
+ #
23
+ # This code is distributed in the hope that it will be useful,
24
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
25
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
26
+ # General Public License for more details.
27
+ #
28
+ # The full text of the GPL is available at:
29
+ #
30
+ # https://www.gnu.org/licenses/
31
+ # ****************************************************************************
32
+ from sage.misc.cachefunc import cached_method
33
+ from sage.misc.lazy_import import lazy_import
34
+ from sage.structure.element import Matrix
35
+ from sage.graphs.digraph import DiGraph
36
+ from sage.combinat.root_system.cartan_type import CartanType, CartanType_abstract
37
+
38
+ lazy_import('sage.combinat.root_system.cartan_matrix', 'CartanMatrix')
39
+
40
+
41
+ def DynkinDiagram(*args, **kwds):
42
+ r"""
43
+ Return the Dynkin diagram corresponding to the input.
44
+
45
+ INPUT:
46
+
47
+ The input can be one of the following:
48
+
49
+ - empty to obtain an empty Dynkin diagram
50
+ - a Cartan type
51
+ - a Cartan matrix
52
+ - a Cartan matrix and an indexing set
53
+
54
+ One can also input an indexing set by passing a tuple using the optional
55
+ argument ``index_set``.
56
+
57
+ The edge multiplicities are encoded as edge labels. For the corresponding
58
+ Cartan matrices, this uses the convention in Hong and Kang, Kac,
59
+ Fulton and Harris, and crystals. This is the **opposite** convention
60
+ in Bourbaki and Wikipedia's Dynkin diagram (:wikipedia:`Dynkin_diagram`).
61
+ That is for `i \neq j`::
62
+
63
+ i <--k-- j <==> a_ij = -k
64
+ <==> -scalar(coroot[i], root[j]) = k
65
+ <==> multiple arrows point from the longer root
66
+ to the shorter one
67
+
68
+ For example, in type `C_2`, we have::
69
+
70
+ sage: C2 = DynkinDiagram(['C',2]); C2
71
+ O=<=O
72
+ 1 2
73
+ C2
74
+ sage: C2.cartan_matrix()
75
+ [ 2 -2]
76
+ [-1 2]
77
+
78
+ However Bourbaki would have the Cartan matrix as:
79
+
80
+ .. MATH::
81
+
82
+ \begin{bmatrix}
83
+ 2 & -1 \\
84
+ -2 & 2
85
+ \end{bmatrix}.
86
+
87
+ EXAMPLES::
88
+
89
+ sage: DynkinDiagram(['A', 4])
90
+ O---O---O---O
91
+ 1 2 3 4
92
+ A4
93
+
94
+ sage: DynkinDiagram(['A',1],['A',1])
95
+ O
96
+ 1
97
+ O
98
+ 2
99
+ A1xA1
100
+
101
+ sage: R = RootSystem("A2xB2xF4")
102
+ sage: DynkinDiagram(R)
103
+ O---O
104
+ 1 2
105
+ O=>=O
106
+ 3 4
107
+ O---O=>=O---O
108
+ 5 6 7 8
109
+ A2xB2xF4
110
+
111
+ sage: R = RootSystem("A2xB2xF4")
112
+ sage: CM = R.cartan_matrix(); CM
113
+ [ 2 -1| 0 0| 0 0 0 0]
114
+ [-1 2| 0 0| 0 0 0 0]
115
+ [-----+-----+-----------]
116
+ [ 0 0| 2 -1| 0 0 0 0]
117
+ [ 0 0|-2 2| 0 0 0 0]
118
+ [-----+-----+-----------]
119
+ [ 0 0| 0 0| 2 -1 0 0]
120
+ [ 0 0| 0 0|-1 2 -1 0]
121
+ [ 0 0| 0 0| 0 -2 2 -1]
122
+ [ 0 0| 0 0| 0 0 -1 2]
123
+ sage: DD = DynkinDiagram(CM); DD
124
+ O---O
125
+ 1 2
126
+ O=>=O
127
+ 3 4
128
+ O---O=>=O---O
129
+ 5 6 7 8
130
+ A2xB2xF4
131
+ sage: DD.cartan_matrix()
132
+ [ 2 -1 0 0 0 0 0 0]
133
+ [-1 2 0 0 0 0 0 0]
134
+ [ 0 0 2 -1 0 0 0 0]
135
+ [ 0 0 -2 2 0 0 0 0]
136
+ [ 0 0 0 0 2 -1 0 0]
137
+ [ 0 0 0 0 -1 2 -1 0]
138
+ [ 0 0 0 0 0 -2 2 -1]
139
+ [ 0 0 0 0 0 0 -1 2]
140
+
141
+ We can also create Dynkin diagrams from arbitrary Cartan matrices::
142
+
143
+ sage: C = CartanMatrix([[2, -3], [-4, 2]])
144
+ sage: DynkinDiagram(C)
145
+ Dynkin diagram of rank 2
146
+ sage: C.index_set()
147
+ (0, 1)
148
+ sage: CI = CartanMatrix([[2, -3], [-4, 2]], [3, 5])
149
+ sage: DI = DynkinDiagram(CI)
150
+ sage: DI.index_set()
151
+ (3, 5)
152
+ sage: CII = CartanMatrix([[2, -3], [-4, 2]])
153
+ sage: DII = DynkinDiagram(CII, ('y', 'x'))
154
+ sage: DII.index_set()
155
+ ('x', 'y')
156
+
157
+ .. SEEALSO::
158
+
159
+ :func:`CartanType` for a general discussion on Cartan
160
+ types and in particular node labeling conventions.
161
+
162
+ TESTS:
163
+
164
+ Check that :issue:`15277` is fixed by not having edges from 0s::
165
+
166
+ sage: CM = CartanMatrix([[2,-1,0,0],[-3,2,-2,-2],[0,-1,2,-1],[0,-1,-1,2]])
167
+ sage: CM
168
+ [ 2 -1 0 0]
169
+ [-3 2 -2 -2]
170
+ [ 0 -1 2 -1]
171
+ [ 0 -1 -1 2]
172
+ sage: CM.dynkin_diagram().edges(sort=True)
173
+ [(0, 1, 3),
174
+ (1, 0, 1),
175
+ (1, 2, 1),
176
+ (1, 3, 1),
177
+ (2, 1, 2),
178
+ (2, 3, 1),
179
+ (3, 1, 2),
180
+ (3, 2, 1)]
181
+ """
182
+ if len(args) == 0:
183
+ return DynkinDiagram_class()
184
+ mat = args[0]
185
+ if isinstance(mat, Matrix):
186
+ mat = CartanMatrix(*args)
187
+ if isinstance(mat, CartanMatrix):
188
+ if mat.cartan_type() is not mat:
189
+ try:
190
+ return mat.cartan_type().dynkin_diagram()
191
+ except AttributeError:
192
+ ct = CartanType(*args)
193
+ raise ValueError("Dynkin diagram data not yet hardcoded for type %s" % ct)
194
+ if len(args) > 1:
195
+ index_set = tuple(args[1])
196
+ elif "index_set" in kwds:
197
+ index_set = tuple(kwds["index_set"])
198
+ else:
199
+ index_set = mat.index_set()
200
+ D = DynkinDiagram_class(index_set=index_set)
201
+ for (i, j) in mat.nonzero_positions():
202
+ if i != j:
203
+ D.add_edge(index_set[i], index_set[j], -mat[j, i])
204
+ return D
205
+ ct = CartanType(*args)
206
+ try:
207
+ return ct.dynkin_diagram()
208
+ except AttributeError:
209
+ raise ValueError("Dynkin diagram data not yet hardcoded for type %s" % ct)
210
+
211
+
212
+ class DynkinDiagram_class(DiGraph, CartanType_abstract):
213
+ """
214
+ A Dynkin diagram.
215
+
216
+ .. SEEALSO::
217
+
218
+ :func:`DynkinDiagram()`
219
+
220
+ INPUT:
221
+
222
+ - ``t`` -- a Cartan type, Cartan matrix, or ``None``
223
+
224
+ EXAMPLES::
225
+
226
+ sage: DynkinDiagram(['A', 3])
227
+ O---O---O
228
+ 1 2 3
229
+ A3
230
+ sage: C = CartanMatrix([[2, -3], [-4, 2]])
231
+ sage: DynkinDiagram(C)
232
+ Dynkin diagram of rank 2
233
+ sage: C.dynkin_diagram().cartan_matrix() == C
234
+ True
235
+
236
+ TESTS:
237
+
238
+ Check that the correct type is returned when copied::
239
+
240
+ sage: d = DynkinDiagram(['A', 3])
241
+ sage: type(copy(d))
242
+ <class 'sage.combinat.root_system.dynkin_diagram.DynkinDiagram_class'>
243
+
244
+ We check that :issue:`14655` is fixed::
245
+
246
+ sage: cd = copy(d)
247
+ sage: cd.add_vertex(4)
248
+ sage: d.vertices(sort=True) != cd.vertices(sort=True)
249
+ True
250
+
251
+ Implementation note: if a Cartan type is given, then the nodes
252
+ are initialized from the index set of this Cartan type.
253
+ """
254
+
255
+ def __init__(self, t=None, index_set=None, odd_isotropic_roots=[],
256
+ **options):
257
+ """
258
+ Initialize ``self``.
259
+
260
+ EXAMPLES::
261
+
262
+ sage: d = DynkinDiagram(["A", 3])
263
+ sage: TestSuite(d).run()
264
+ """
265
+ if isinstance(t, DiGraph):
266
+ if isinstance(t, DynkinDiagram_class):
267
+ self._cartan_type = t._cartan_type
268
+ self._odd_isotropic_roots = tuple(odd_isotropic_roots)
269
+ else:
270
+ self._cartan_type = None
271
+ self._odd_isotropic_roots = ()
272
+ DiGraph.__init__(self, data=t, **options)
273
+ return
274
+
275
+ DiGraph.__init__(self, **options)
276
+ self._cartan_type = t
277
+ self._odd_isotropic_roots = tuple(odd_isotropic_roots)
278
+ if index_set is not None:
279
+ self.add_vertices(index_set)
280
+ elif t is not None:
281
+ self.add_vertices(t.index_set())
282
+
283
+ def _repr_(self, compact=False):
284
+ """
285
+ EXAMPLES::
286
+
287
+ sage: DynkinDiagram(['G',2]) # indirect doctest
288
+ 3
289
+ O=<=O
290
+ 1 2
291
+ G2
292
+ """
293
+ ct = self.cartan_type()
294
+ result = ct.ascii_art() + "\n" if hasattr(ct, "ascii_art") else ""
295
+
296
+ if ct is None or isinstance(ct, CartanMatrix):
297
+ return result+"Dynkin diagram of rank %s" % self.rank()
298
+ else:
299
+ return result+"%s" % ct._repr_(compact=True)
300
+
301
+ def _rich_repr_(self, display_manager, **kwds):
302
+ """
303
+ Rich Output Magic Method.
304
+
305
+ Override rich output because :meth:`_repr_` outputs ascii
306
+ art. The proper fix will be in :issue:`18328`.
307
+
308
+ See :mod:`sage.repl.rich_output` for details.
309
+
310
+ EXAMPLES::
311
+
312
+ sage: from sage.repl.rich_output import get_display_manager
313
+ sage: dm = get_display_manager()
314
+ sage: E8 = WeylCharacterRing('E8')
315
+ sage: E8.dynkin_diagram()._rich_repr_(dm)
316
+ OutputAsciiArt container
317
+ """
318
+ OutputAsciiArt = display_manager.types.OutputAsciiArt
319
+ OutputPlainText = display_manager.types.OutputPlainText
320
+ if OutputAsciiArt in display_manager.supported_output():
321
+ return OutputAsciiArt(self._repr_())
322
+ else:
323
+ return OutputPlainText(self._repr_())
324
+
325
+ def _latex_(self, scale=0.5):
326
+ r"""
327
+ Return a latex representation of this Dynkin diagram.
328
+
329
+ EXAMPLES::
330
+
331
+ sage: latex(DynkinDiagram(['A',3,1]))
332
+ \begin{tikzpicture}[scale=0.5]
333
+ \draw (-1,0) node[anchor=east] {$A_{3}^{(1)}$};
334
+ \draw (0 cm,0) -- (4 cm,0);
335
+ \draw (0 cm,0) -- (2.0 cm, 1.2 cm);
336
+ \draw (2.0 cm, 1.2 cm) -- (4 cm, 0);
337
+ \draw[fill=white] (0 cm, 0 cm) circle (.25cm) node[below=4pt]{$1$};
338
+ \draw[fill=white] (2 cm, 0 cm) circle (.25cm) node[below=4pt]{$2$};
339
+ \draw[fill=white] (4 cm, 0 cm) circle (.25cm) node[below=4pt]{$3$};
340
+ \draw[fill=white] (2.0 cm, 1.2 cm) circle (.25cm) node[anchor=south east]{$0$};
341
+ \end{tikzpicture}
342
+ """
343
+ if self.cartan_type() is None:
344
+ return "Dynkin diagram of rank {}".format(self.rank())
345
+
346
+ from sage.graphs.graph_latex import setup_latex_preamble
347
+ setup_latex_preamble()
348
+
349
+ ret = "\\begin{{tikzpicture}}[scale={}]\n".format(scale)
350
+ ret += "\\draw (-1,0) node[anchor=east] {{${}$}};\n".format(self.cartan_type()._latex_())
351
+ ret += self.cartan_type()._latex_dynkin_diagram()
352
+ ret += "\\end{tikzpicture}"
353
+ return ret
354
+
355
+ def _matrix_(self):
356
+ """
357
+ Return a regular matrix from ``self``.
358
+
359
+ EXAMPLES::
360
+
361
+ sage: M = DynkinDiagram(['C',3])._matrix_(); M
362
+ [ 2 -1 0]
363
+ [-1 2 -2]
364
+ [ 0 -1 2]
365
+ sage: type(M)
366
+ <class 'sage.combinat.root_system.cartan_matrix.CartanMatrix'>
367
+ """
368
+ return self.cartan_matrix()._matrix_()
369
+
370
+ def add_edge(self, i, j, label=1):
371
+ """
372
+ EXAMPLES::
373
+
374
+ sage: from sage.combinat.root_system.dynkin_diagram import DynkinDiagram_class
375
+ sage: d = DynkinDiagram_class(CartanType(['A',3]))
376
+ sage: sorted(d.edges(sort=True))
377
+ []
378
+ sage: d.add_edge(2, 3)
379
+ sage: sorted(d.edges(sort=True))
380
+ [(2, 3, 1), (3, 2, 1)]
381
+ """
382
+ DiGraph.add_edge(self, i, j, label)
383
+ if not self.has_edge(j,i):
384
+ self.add_edge(j,i,1)
385
+
386
+ def __hash__(self):
387
+ """
388
+ EXAMPLES::
389
+
390
+ sage: d = CartanType(['A',3]).dynkin_diagram()
391
+ sage: dv = d.vertices(sort=True)
392
+ sage: hash(d) == hash((d.cartan_type(), tuple(dv), tuple(d.edge_iterator(dv))))
393
+ True
394
+ """
395
+ # Should assert for immutability!
396
+
397
+ #return hash(self.cartan_type(), self.vertices(sort=True), tuple(self.edges(sort=True)))
398
+ # FIXME: self.edges() currently tests at some point whether
399
+ # self is a vertex of itself which causes an infinite
400
+ # recursion loop. Current workaround: call self.edge_iterator directly
401
+ verts = self.vertices(sort=True)
402
+ return hash((self.cartan_type(), tuple(verts), tuple(self.edge_iterator(verts))))
403
+
404
+ @staticmethod
405
+ def an_instance():
406
+ """
407
+ Return an example of Dynkin diagram.
408
+
409
+ EXAMPLES::
410
+
411
+ sage: from sage.combinat.root_system.dynkin_diagram import DynkinDiagram_class
412
+ sage: g = DynkinDiagram_class.an_instance()
413
+ sage: g
414
+ Dynkin diagram of rank 3
415
+ sage: g.cartan_matrix()
416
+ [ 2 -1 -1]
417
+ [-2 2 -1]
418
+ [-1 -1 2]
419
+ """
420
+ # hyperbolic Dynkin diagram of Exercise 4.9 p. 57 of Kac Infinite Dimensional Lie Algebras.
421
+ g = DynkinDiagram()
422
+ g.add_vertices([1,2,3])
423
+ g.add_edge(1,2,2)
424
+ g.add_edge(1,3)
425
+ g.add_edge(2,3)
426
+ return g
427
+
428
+ ##########################################################################
429
+ # Cartan type methods
430
+
431
+ @cached_method
432
+ def index_set(self):
433
+ """
434
+ EXAMPLES::
435
+
436
+ sage: DynkinDiagram(['C',3]).index_set()
437
+ (1, 2, 3)
438
+ sage: DynkinDiagram("A2","B2","F4").index_set()
439
+ (1, 2, 3, 4, 5, 6, 7, 8)
440
+ """
441
+ return tuple(self.vertices(sort=True))
442
+
443
+ def cartan_type(self):
444
+ """
445
+ EXAMPLES::
446
+
447
+ sage: DynkinDiagram("A2","B2","F4").cartan_type()
448
+ A2xB2xF4
449
+ """
450
+ return self._cartan_type
451
+
452
+ def rank(self):
453
+ r"""
454
+ Return the index set for this Dynkin diagram.
455
+
456
+ EXAMPLES::
457
+
458
+ sage: DynkinDiagram(['C',3]).rank()
459
+ 3
460
+ sage: DynkinDiagram("A2","B2","F4").rank()
461
+ 8
462
+ """
463
+ return self.num_verts()
464
+
465
+ def dynkin_diagram(self):
466
+ """
467
+ EXAMPLES::
468
+
469
+ sage: DynkinDiagram(['C',3]).dynkin_diagram()
470
+ O---O=<=O
471
+ 1 2 3
472
+ C3
473
+ """
474
+ return self
475
+
476
+ @cached_method
477
+ def cartan_matrix(self):
478
+ r"""
479
+ Return the Cartan matrix for this Dynkin diagram.
480
+
481
+ EXAMPLES::
482
+
483
+ sage: DynkinDiagram(['C',3]).cartan_matrix()
484
+ [ 2 -1 0]
485
+ [-1 2 -2]
486
+ [ 0 -1 2]
487
+ """
488
+ return CartanMatrix(self)
489
+
490
+ def dual(self):
491
+ r"""
492
+ Return the dual Dynkin diagram, obtained by reversing all edges.
493
+
494
+ EXAMPLES::
495
+
496
+ sage: D = DynkinDiagram(['C',3])
497
+ sage: D.edges(sort=True)
498
+ [(1, 2, 1), (2, 1, 1), (2, 3, 1), (3, 2, 2)]
499
+ sage: D.dual()
500
+ O---O=>=O
501
+ 1 2 3
502
+ B3
503
+ sage: D.dual().edges(sort=True)
504
+ [(1, 2, 1), (2, 1, 1), (2, 3, 2), (3, 2, 1)]
505
+ sage: D.dual() == DynkinDiagram(['B',3])
506
+ True
507
+
508
+ TESTS::
509
+
510
+ sage: D = DynkinDiagram(['A',0]); D
511
+ A0
512
+ sage: D.edges(sort=True)
513
+ []
514
+ sage: D.dual()
515
+ A0
516
+ sage: D.dual().edges(sort=True)
517
+ []
518
+ sage: D = DynkinDiagram(['A',1])
519
+ sage: D.edges(sort=True)
520
+ []
521
+ sage: D.dual()
522
+ O
523
+ 1
524
+ A1
525
+ sage: D.dual().edges(sort=True)
526
+ []
527
+ """
528
+ result = DynkinDiagram_class(None, odd_isotropic_roots=self._odd_isotropic_roots)
529
+ result.add_vertices(self.vertices(sort=True))
530
+ for source, target, label in self.edges(sort=False):
531
+ result.add_edge(target, source, label)
532
+ result._cartan_type = self._cartan_type.dual() if self._cartan_type is not None else None
533
+ return result
534
+
535
+ def relabel(self, *args, **kwds):
536
+ """
537
+ Return the relabelled Dynkin diagram of ``self``.
538
+
539
+ INPUT: see :meth:`~sage.graphs.generic_graph.GenericGraph.relabel`
540
+
541
+ There is one difference: the default value for ``inplace`` is
542
+ ``False`` instead of ``True``.
543
+
544
+ EXAMPLES::
545
+
546
+ sage: D = DynkinDiagram(['C',3])
547
+ sage: D.relabel({1:0, 2:4, 3:1})
548
+ O---O=<=O
549
+ 0 4 1
550
+ C3 relabelled by {1: 0, 2: 4, 3: 1}
551
+ sage: D
552
+ O---O=<=O
553
+ 1 2 3
554
+ C3
555
+
556
+ sage: _ = D.relabel({1:0, 2:4, 3:1}, inplace=True)
557
+ sage: D
558
+ O---O=<=O
559
+ 0 4 1
560
+ C3 relabelled by {1: 0, 2: 4, 3: 1}
561
+
562
+ sage: D = DynkinDiagram(['A', [1,2]])
563
+ sage: Dp = D.relabel({-1:4, 0:-3, 1:3, 2:2})
564
+ sage: Dp
565
+ O---X---O---O
566
+ 4 -3 3 2
567
+ A1|2 relabelled by {-1: 4, 0: -3, 1: 3, 2: 2}
568
+ sage: Dp.odd_isotropic_roots()
569
+ (-3,)
570
+
571
+ sage: D = DynkinDiagram(['D', 5])
572
+ sage: G, perm = D.relabel(range(5), return_map=True)
573
+ sage: G
574
+ O 4
575
+ |
576
+ |
577
+ O---O---O---O
578
+ 0 1 2 3
579
+ D5 relabelled by {1: 0, 2: 1, 3: 2, 4: 3, 5: 4}
580
+ sage: perm
581
+ {1: 0, 2: 1, 3: 2, 4: 3, 5: 4}
582
+
583
+ sage: perm = D.relabel(range(5), return_map=True, inplace=True)
584
+ sage: D
585
+ O 4
586
+ |
587
+ |
588
+ O---O---O---O
589
+ 0 1 2 3
590
+ D5 relabelled by {1: 0, 2: 1, 3: 2, 4: 3, 5: 4}
591
+ sage: perm
592
+ {1: 0, 2: 1, 3: 2, 4: 3, 5: 4}
593
+ """
594
+ return_map = kwds.pop("return_map", False)
595
+ inplace = kwds.pop("inplace", False)
596
+ if inplace:
597
+ G = self
598
+ else:
599
+ # We need to copy self because we want to return the
600
+ # permutation and that works when relabelling in place.
601
+ G = self.copy()
602
+
603
+ perm = DiGraph.relabel(G, *args, inplace=True, return_map=True, **kwds)
604
+ new_odds = [perm[i] for i in self._odd_isotropic_roots]
605
+ G._odd_isotropic_roots = tuple(new_odds)
606
+ if self._cartan_type is not None:
607
+ G._cartan_type = self._cartan_type.relabel(perm.__getitem__)
608
+ if return_map:
609
+ if inplace:
610
+ return perm
611
+ else:
612
+ return G, perm
613
+ else:
614
+ return G
615
+
616
+ def subtype(self, index_set):
617
+ """
618
+ Return a subtype of ``self`` given by ``index_set``.
619
+
620
+ A subtype can be considered the Dynkin diagram induced from
621
+ the Dynkin diagram of ``self`` by ``index_set``.
622
+
623
+ EXAMPLES::
624
+
625
+ sage: D = DynkinDiagram(['A',6,2]); D
626
+ O=<=O---O=<=O
627
+ 0 1 2 3
628
+ BC3~
629
+ sage: D.subtype([1,2,3])
630
+ Dynkin diagram of rank 3
631
+ """
632
+ return self.cartan_matrix().subtype(index_set).dynkin_diagram()
633
+
634
+ def is_finite(self):
635
+ """
636
+ Check if ``self`` corresponds to a finite root system.
637
+
638
+ EXAMPLES::
639
+
640
+ sage: CartanType(['F',4]).dynkin_diagram().is_finite()
641
+ True
642
+ sage: D = DynkinDiagram(CartanMatrix([[2, -4], [-3, 2]]))
643
+ sage: D.is_finite()
644
+ False
645
+ """
646
+ if self._cartan_type is not None:
647
+ return self._cartan_type.is_finite()
648
+ return self.cartan_matrix().is_finite()
649
+
650
+ def is_affine(self):
651
+ """
652
+ Check if ``self`` corresponds to an affine root system.
653
+
654
+ EXAMPLES::
655
+
656
+ sage: CartanType(['F',4]).dynkin_diagram().is_affine()
657
+ False
658
+ sage: D = DynkinDiagram(CartanMatrix([[2, -4], [-3, 2]]))
659
+ sage: D.is_affine()
660
+ False
661
+ """
662
+ if self._cartan_type is not None:
663
+ return self._cartan_type.is_affine()
664
+ return self.cartan_matrix().is_affine()
665
+
666
+ def is_irreducible(self):
667
+ """
668
+ Check if ``self`` corresponds to an irreducible root system.
669
+
670
+ EXAMPLES::
671
+
672
+ sage: CartanType(['F',4]).dynkin_diagram().is_irreducible()
673
+ True
674
+ sage: CM = CartanMatrix([[2,-6],[-4,2]])
675
+ sage: CM.dynkin_diagram().is_irreducible()
676
+ True
677
+ sage: CartanType("A2xB3").dynkin_diagram().is_irreducible()
678
+ False
679
+ sage: CM = CartanMatrix([[2,-6,0],[-4,2,0],[0,0,2]])
680
+ sage: CM.dynkin_diagram().is_irreducible()
681
+ False
682
+ """
683
+ if self._cartan_type is not None:
684
+ return self._cartan_type.is_irreducible()
685
+ return self.connected_components_number() == 1
686
+
687
+ def is_crystallographic(self):
688
+ """
689
+ Implement :meth:`CartanType_abstract.is_crystallographic`.
690
+
691
+ A Dynkin diagram always corresponds to a crystallographic root system.
692
+
693
+ EXAMPLES::
694
+
695
+ sage: CartanType(['F',4]).dynkin_diagram().is_crystallographic()
696
+ True
697
+
698
+ TESTS::
699
+
700
+ sage: CartanType(['G',2]).dynkin_diagram().is_crystallographic()
701
+ True
702
+ """
703
+ return True
704
+
705
+ def symmetrizer(self):
706
+ """
707
+ Return the symmetrizer of the corresponding Cartan matrix.
708
+
709
+ EXAMPLES::
710
+
711
+ sage: d = DynkinDiagram()
712
+ sage: d.add_edge(1,2,3)
713
+ sage: d.add_edge(2,3)
714
+ sage: d.add_edge(3,4,3)
715
+ sage: d.symmetrizer()
716
+ Finite family {1: 9, 2: 3, 3: 3, 4: 1}
717
+
718
+ TESTS:
719
+
720
+ We check that :issue:`15740` is fixed::
721
+
722
+ sage: d = DynkinDiagram()
723
+ sage: d.add_edge(1,2,3)
724
+ sage: d.add_edge(2,3)
725
+ sage: d.add_edge(3,4,3)
726
+ sage: L = d.root_system().root_lattice()
727
+ sage: al = L.simple_roots()
728
+ sage: al[1].associated_coroot()
729
+ alphacheck[1]
730
+ sage: al[1].reflection(al[2])
731
+ alpha[1] + 3*alpha[2]
732
+ """
733
+ return self.cartan_matrix().symmetrizer()
734
+
735
+ def odd_isotropic_roots(self):
736
+ """
737
+ Return the odd isotropic roots of ``self``.
738
+
739
+ EXAMPLES::
740
+
741
+ sage: g = DynkinDiagram(['A',4])
742
+ sage: g.odd_isotropic_roots()
743
+ ()
744
+ sage: g = DynkinDiagram(['A',[4,3]])
745
+ sage: g.odd_isotropic_roots()
746
+ (0,)
747
+ """
748
+ return self._odd_isotropic_roots
749
+
750
+ def __getitem__(self, i):
751
+ r"""
752
+ With a tuple (i,j) as argument, returns the scalar product
753
+ `\langle \alpha^\vee_i, \alpha_j\rangle`.
754
+
755
+ Otherwise, behaves as the usual ``DiGraph.__getitem__``
756
+
757
+ EXAMPLES:
758
+
759
+ We use the `C_4` Dynkin diagram as a Cartan matrix::
760
+
761
+ sage: g = DynkinDiagram(['C',4])
762
+ sage: matrix([[g[i,j] for j in range(1,5)] for i in range(1,5)])
763
+ [ 2 -1 0 0]
764
+ [-1 2 -1 0]
765
+ [ 0 -1 2 -2]
766
+ [ 0 0 -1 2]
767
+
768
+ The neighbors of a node can still be obtained in the usual way::
769
+
770
+ sage: [g[i] for i in range(1,5)]
771
+ [[2], [1, 3], [2, 4], [3]]
772
+ """
773
+ if not isinstance(i, tuple):
774
+ return DiGraph.__getitem__(self,i)
775
+ [i,j] = i
776
+ if i == j:
777
+ if i in self._odd_isotropic_roots:
778
+ return 0
779
+ return 2
780
+ elif self.has_edge(j, i):
781
+ return -self.edge_label(j, i)
782
+ else:
783
+ return 0
784
+
785
+ def column(self, j):
786
+ """
787
+ Return the `j`-th column `(a_{i,j})_i` of the
788
+ Cartan matrix corresponding to this Dynkin diagram, as a container
789
+ (or iterator) of tuples `(i, a_{i,j})`.
790
+
791
+ EXAMPLES::
792
+
793
+ sage: g = DynkinDiagram(["B",4])
794
+ sage: [ (i,a) for (i,a) in g.column(3) ]
795
+ [(3, 2), (2, -1), (4, -2)]
796
+ """
797
+ val = 2 if j not in self._odd_isotropic_roots else 0
798
+ return [(j,val)] + [(i,-m) for (j1, i, m) in self.outgoing_edges(j)]
799
+
800
+ def row(self, i):
801
+ """
802
+ Return the `i`-th row `(a_{i,j})_j` of the
803
+ Cartan matrix corresponding to this Dynkin diagram, as a container
804
+ (or iterator) of tuples `(j, a_{i,j})`.
805
+
806
+ EXAMPLES::
807
+
808
+ sage: g = DynkinDiagram(["C",4])
809
+ sage: [ (i,a) for (i,a) in g.row(3) ]
810
+ [(3, 2), (2, -1), (4, -2)]
811
+ """
812
+ val = 2 if i not in self._odd_isotropic_roots else 0
813
+ return [(i,val)] + [(j,-m) for (j, i1, m) in self.incoming_edges(i)]
814
+
815
+ @cached_method
816
+ def coxeter_diagram(self):
817
+ r"""
818
+ Construct the Coxeter diagram of ``self``.
819
+
820
+ .. SEEALSO:: :meth:`CartanType_abstract.coxeter_diagram`
821
+
822
+ EXAMPLES::
823
+
824
+ sage: cm = CartanMatrix([[2,-5,0],[-2,2,-1],[0,-1,2]])
825
+ sage: D = cm.dynkin_diagram()
826
+ sage: G = D.coxeter_diagram(); G
827
+ Graph on 3 vertices
828
+ sage: G.edges(sort=True)
829
+ [(0, 1, +Infinity), (1, 2, 3)]
830
+
831
+ sage: ct = CartanType([['A',2,2], ['B',3]])
832
+ sage: ct.coxeter_diagram()
833
+ Graph on 5 vertices
834
+ sage: ct.dynkin_diagram().coxeter_diagram() == ct.coxeter_diagram()
835
+ True
836
+ """
837
+ from sage.rings.infinity import infinity
838
+ scalarproducts_to_order = {0: 2, 1: 3, 2: 4, 3: 6}
839
+ from sage.graphs.graph import Graph
840
+ coxeter_diagram = Graph(multiedges=False)
841
+ I = self.index_set()
842
+ coxeter_diagram.add_vertices(I)
843
+ for i in I:
844
+ for j in self.neighbors_out(i):
845
+ # avoid adding the edge twice
846
+ if not coxeter_diagram.has_edge(i,j):
847
+ val = scalarproducts_to_order.get(self[i,j]*self[j,i], infinity)
848
+ coxeter_diagram.add_edge(i,j, val)
849
+ return coxeter_diagram.copy(immutable=True)
850
+
851
+
852
+ def precheck(t, letter=None, length=None, affine=None, n_ge=None, n=None):
853
+ """
854
+ EXAMPLES::
855
+
856
+ sage: from sage.combinat.root_system.dynkin_diagram import precheck
857
+ sage: ct = CartanType(['A',4])
858
+ sage: precheck(ct, letter='C')
859
+ Traceback (most recent call last):
860
+ ...
861
+ ValueError: t[0] must be = 'C'
862
+ sage: precheck(ct, affine=1)
863
+ Traceback (most recent call last):
864
+ ...
865
+ ValueError: t[2] must be = 1
866
+ sage: precheck(ct, length=3)
867
+ Traceback (most recent call last):
868
+ ...
869
+ ValueError: len(t) must be = 3
870
+ sage: precheck(ct, n=3)
871
+ Traceback (most recent call last):
872
+ ...
873
+ ValueError: t[1] must be = 3
874
+ sage: precheck(ct, n_ge=5)
875
+ Traceback (most recent call last):
876
+ ...
877
+ ValueError: t[1] must be >= 5
878
+ """
879
+ if letter is not None:
880
+ if t[0] != letter:
881
+ raise ValueError("t[0] must be = '%s'" % letter)
882
+
883
+ if length is not None:
884
+ if len(t) != length:
885
+ raise ValueError("len(t) must be = %s" % length)
886
+
887
+ if affine is not None:
888
+ try:
889
+ if t[2] != affine:
890
+ raise ValueError("t[2] must be = %s" % affine)
891
+ except IndexError:
892
+ raise ValueError("t[2] must be = %s" % affine)
893
+
894
+ if n_ge is not None:
895
+ if t[1] < n_ge:
896
+ raise ValueError("t[1] must be >= %s" % n_ge)
897
+
898
+ if n is not None:
899
+ if t[1] != n:
900
+ raise ValueError("t[1] must be = %s" % n)