passagemath-modules 10.6.31rc3__cp314-cp314-musllinux_1_2_aarch64.whl

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

Potentially problematic release.


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

Files changed (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 +5 -0
  4. passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
  5. passagemath_modules.libs/libgcc_s-2d945d6c.so.1 +0 -0
  6. passagemath_modules.libs/libgfortran-67378ab2.so.5.0.0 +0 -0
  7. passagemath_modules.libs/libgmp-28992bcb.so.10.5.0 +0 -0
  8. passagemath_modules.libs/libgsl-23768756.so.28.0.0 +0 -0
  9. passagemath_modules.libs/libmpc-7897025b.so.3.3.1 +0 -0
  10. passagemath_modules.libs/libmpfr-e34bb864.so.6.2.1 +0 -0
  11. passagemath_modules.libs/libopenblasp-r0-503f0c35.3.29.so +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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.so +0 -0
  74. sage/calculus/integration.pyx +698 -0
  75. sage/calculus/interpolation.cpython-314-aarch64-linux-musl.so +0 -0
  76. sage/calculus/interpolation.pxd +13 -0
  77. sage/calculus/interpolation.pyx +387 -0
  78. sage/calculus/interpolators.cpython-314-aarch64-linux-musl.so +0 -0
  79. sage/calculus/interpolators.pyx +326 -0
  80. sage/calculus/ode.cpython-314-aarch64-linux-musl.so +0 -0
  81. sage/calculus/ode.pxd +5 -0
  82. sage/calculus/ode.pyx +610 -0
  83. sage/calculus/riemann.cpython-314-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.so +0 -0
  401. sage/matrix/constructor.pyx +750 -0
  402. sage/matrix/docs.py +430 -0
  403. sage/matrix/echelon_matrix.cpython-314-aarch64-linux-musl.so +0 -0
  404. sage/matrix/echelon_matrix.pyx +155 -0
  405. sage/matrix/matrix.pxd +2 -0
  406. sage/matrix/matrix0.cpython-314-aarch64-linux-musl.so +0 -0
  407. sage/matrix/matrix0.pxd +68 -0
  408. sage/matrix/matrix0.pyx +6324 -0
  409. sage/matrix/matrix1.cpython-314-aarch64-linux-musl.so +0 -0
  410. sage/matrix/matrix1.pxd +8 -0
  411. sage/matrix/matrix1.pyx +2851 -0
  412. sage/matrix/matrix2.cpython-314-aarch64-linux-musl.so +0 -0
  413. sage/matrix/matrix2.pxd +25 -0
  414. sage/matrix/matrix2.pyx +20181 -0
  415. sage/matrix/matrix_cdv.cpython-314-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.so +0 -0
  492. sage/matroids/extension.pxd +34 -0
  493. sage/matroids/extension.pyx +519 -0
  494. sage/matroids/flats_matroid.cpython-314-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.so +0 -0
  701. sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
  702. sage/rings/function_field/khuri_makdisi.cpython-314-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.so +0 -0
  771. sage/stats/hmm/chmm.pyx +1595 -0
  772. sage/stats/hmm/distributions.cpython-314-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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-aarch64-linux-musl.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,730 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ """
3
+ Root system data for relabelled Cartan types
4
+ """
5
+ #*****************************************************************************
6
+ # Copyright (C) 2008-2013 Nicolas M. Thiery <nthiery at users.sf.net>,
7
+ #
8
+ # Distributed under the terms of the GNU General Public License (GPL)
9
+ # http://www.gnu.org/licenses/
10
+ #*****************************************************************************
11
+
12
+ from sage.misc.cachefunc import cached_method
13
+ from sage.misc.lazy_attribute import lazy_attribute
14
+ from sage.sets.family import Family, FiniteFamily
15
+ from sage.combinat.root_system import cartan_type
16
+ from sage.combinat.root_system import ambient_space
17
+ from sage.combinat.root_system.root_lattice_realizations import RootLatticeRealizations
18
+
19
+
20
+ class CartanType(cartan_type.CartanType_decorator):
21
+ r"""
22
+ A class for relabelled Cartan types.
23
+ """
24
+ @staticmethod
25
+ def __classcall__(cls, type, relabelling):
26
+ """
27
+ This standardizes the input of the constructor to ensure
28
+ unique representation.
29
+
30
+ EXAMPLES::
31
+
32
+ sage: ct1 = CartanType(['B',2]).relabel({1:2, 2:1}) # indirect doctest
33
+ sage: ct2 = CartanType(['B',2]).relabel(lambda x: 3-x)
34
+ sage: ct3 = CartanType(['B',2]).relabel({1:3, 2: 4})
35
+ sage: ct4 = CartanType(['D',4]).relabel(lambda x: 3-x)
36
+ sage: ct1 == ct2
37
+ True
38
+ sage: ct1 == ct3
39
+ False
40
+ sage: ct1 == ct4
41
+ False
42
+ """
43
+ if isinstance(relabelling, (list, tuple, dict, FiniteFamily)):
44
+ # allows for using relabellings with more entries than in the index_set
45
+ # and by the way makes a copy of relabelling
46
+ relabelling = {i: relabelling[i] for i in type.index_set()}
47
+ else:
48
+ relabelling = {i: relabelling(i) for i in type.index_set()}
49
+
50
+ if isinstance(type, CartanType): # type is already a relabelled type
51
+ relabelling = {i: relabelling[type._relabelling[i]]
52
+ for i in type._type.index_set()}
53
+ type = type._type
54
+
55
+ if all( relabelling[i] == i for i in type.index_set() ):
56
+ return type
57
+
58
+ relabelling = FiniteFamily(relabelling) # Hack to emulate a frozendict which would be hashable!!!!
59
+ return super().__classcall__(cls, type, relabelling)
60
+
61
+ def __init__(self, type, relabelling):
62
+ """
63
+ INPUT:
64
+
65
+ - ``type`` -- a Cartan type
66
+
67
+ - ``relabelling`` -- a function (or a list, or a dictionary)
68
+
69
+ Returns an isomorphic Cartan type obtained by relabelling the
70
+ nodes of the Dynkin diagram. Namely the node with label ``i``
71
+ is relabelled ``f(i)`` (or, by ``f[i]`` if ``f`` is a list or
72
+ dictionary).
73
+
74
+ EXAMPLES:
75
+
76
+ We take the Cartan type `B_4`::
77
+
78
+ sage: T = CartanType(['B',4])
79
+ sage: T.dynkin_diagram() # needs sage.graphs
80
+ O---O---O=>=O
81
+ 1 2 3 4
82
+ B4
83
+
84
+ And relabel its nodes::
85
+
86
+ sage: cycle = {1:2, 2:3, 3:4, 4:1}
87
+
88
+ sage: T = T.relabel(cycle)
89
+ sage: T.dynkin_diagram() # needs sage.graphs
90
+ O---O---O=>=O
91
+ 2 3 4 1
92
+ B4 relabelled by {1: 2, 2: 3, 3: 4, 4: 1}
93
+ sage: T.dynkin_diagram().edges(sort=True) # needs sage.graphs
94
+ [(1, 4, 1), (2, 3, 1), (3, 2, 1), (3, 4, 1), (4, 1, 2), (4, 3, 1)]
95
+
96
+ Multiple relabelling are recomposed into a single one::
97
+
98
+ sage: T = T.relabel(cycle)
99
+ sage: T.dynkin_diagram() # needs sage.graphs
100
+ O---O---O=>=O
101
+ 3 4 1 2
102
+ B4 relabelled by {1: 3, 2: 4, 3: 1, 4: 2}
103
+
104
+ sage: T = T.relabel(cycle)
105
+ sage: T.dynkin_diagram() # needs sage.graphs
106
+ O---O---O=>=O
107
+ 4 1 2 3
108
+ B4 relabelled by {1: 4, 2: 1, 3: 2, 4: 3}
109
+
110
+ And trivial relabelling are honoured nicely::
111
+
112
+ sage: T = T.relabel(cycle)
113
+ sage: T.dynkin_diagram() # needs sage.graphs
114
+ O---O---O=>=O
115
+ 1 2 3 4
116
+ B4
117
+
118
+ TESTS:
119
+
120
+ Test that the produced Cartan type is in the appropriate
121
+ abstract classes (see :issue:`13724`)::
122
+
123
+ sage: ct = CartanType(['B',4]).relabel(cycle)
124
+ sage: TestSuite(ct).run()
125
+ sage: from sage.combinat.root_system import cartan_type
126
+ sage: isinstance(ct, cartan_type.CartanType_finite)
127
+ True
128
+ sage: isinstance(ct, cartan_type.CartanType_simple)
129
+ True
130
+ sage: isinstance(ct, cartan_type.CartanType_affine)
131
+ False
132
+ sage: isinstance(ct, cartan_type.CartanType_crystallographic)
133
+ True
134
+ sage: isinstance(ct, cartan_type.CartanType_simply_laced)
135
+ False
136
+
137
+ sage: ct = CartanType(['A',3,1]).relabel({0:3,1:2, 2:1,3:0})
138
+ sage: TestSuite(ct).run()
139
+ sage: isinstance(ct, cartan_type.CartanType_simple)
140
+ True
141
+ sage: isinstance(ct, cartan_type.CartanType_finite)
142
+ False
143
+ sage: isinstance(ct, cartan_type.CartanType_affine)
144
+ True
145
+ sage: isinstance(ct, cartan_type.CartanType_crystallographic)
146
+ True
147
+ sage: isinstance(ct, cartan_type.CartanType_simply_laced)
148
+ True
149
+
150
+ Check for the original issues of :issue:`13724`::
151
+
152
+ sage: A3 = CartanType("A3")
153
+ sage: A3.cartan_matrix() # needs sage.graphs
154
+ [ 2 -1 0]
155
+ [-1 2 -1]
156
+ [ 0 -1 2]
157
+ sage: A3r = A3.relabel({1:2,2:3,3:1})
158
+ sage: A3r.cartan_matrix() # needs sage.graphs
159
+ [ 2 0 -1]
160
+ [ 0 2 -1]
161
+ [-1 -1 2]
162
+
163
+ sage: ct = CartanType(["D",4,3]).classical(); ct
164
+ ['G', 2]
165
+ sage: ct.symmetrizer() # needs sage.graphs
166
+ Finite family {1: 1, 2: 3}
167
+
168
+ Check the underlying issue of :issue:`24892`, that the root system
169
+ of a relabelled non-crystallographic Cartan type has an
170
+ ``ambient_space()`` that does not result in an error (note that
171
+ this should actually return a valid ambient space, which requires
172
+ the non-crystallographic finite types to have them implemented)::
173
+
174
+ sage: rI5 = CartanType(['I',5]).relabel({1:0,2:1})
175
+ sage: rI5.root_system().ambient_space()
176
+ """
177
+ cartan_type.CartanType_decorator.__init__(self, type)
178
+ relabelling = Family(relabelling)
179
+ self._relabelling = dict(relabelling.items())
180
+ self._relabelling_inverse = dict(relabelling.inverse_family().items())
181
+ self._index_set = tuple(sorted(relabelling[i] for i in type.index_set()))
182
+ # TODO: design an appropriate infrastructure to handle this
183
+ # automatically? Maybe using categories and axioms?
184
+ # See also type_dual.CartanType.__init__
185
+ if type.is_finite() and (isinstance(type, cartan_type.SuperCartanType_standard)
186
+ or type.is_crystallographic()):
187
+ # FIXME: Remove the is_crystallographic (and the short-circuiting
188
+ # super) check once the non-crystallographic finite types
189
+ # (i.e., H_3, H_4, I_2(p)) have an implementation of an
190
+ # ambient space. See issue #24892.
191
+ self.__class__ = CartanType_finite
192
+ elif type.is_affine():
193
+ self.__class__ = CartanType_affine
194
+ abstract_classes = tuple(cls
195
+ for cls in self._stable_abstract_classes
196
+ if isinstance(type, cls))
197
+ if abstract_classes:
198
+ self._add_abstract_superclass(abstract_classes)
199
+
200
+ # For each class cls in _stable_abstract_classes, if ct is an
201
+ # instance of A then ct.relabel(...) is put in this class as well.
202
+ # The order is relevant to avoid MRO issues!
203
+ _stable_abstract_classes = [
204
+ cartan_type.CartanType_finite,
205
+ cartan_type.CartanType_affine,
206
+ cartan_type.CartanType_simple,
207
+ cartan_type.CartanType_simply_laced,
208
+ cartan_type.CartanType_crystallographic]
209
+
210
+ def _repr_(self, compact=False):
211
+ """
212
+ EXAMPLES::
213
+
214
+ sage: CartanType(['F', 4]).relabel(lambda x: 5-x)
215
+ ['F', 4] relabelled by {1: 4, 2: 3, 3: 2, 4: 1}
216
+
217
+ sage: CartanType(['F', 4]).relabel(lambda x: 5-x)._repr_(compact = True)
218
+ 'F4 relabelled by {1: 4, 2: 3, 3: 2, 4: 1}'
219
+
220
+ TESTS::
221
+
222
+ sage: CoxeterType(['I',5]).relabel({1:0,2:1})
223
+ Coxeter type of ['I', 5] relabelled by {1: 0, 2: 1}
224
+ """
225
+ from pprint import pformat
226
+ # Special case for type D_4^3
227
+ if (self._type.is_affine() and self._type.dual().type() == 'G'
228
+ and self.options("notation") == "Kac"):
229
+ if compact:
230
+ return 'D4^3'
231
+ return "['D', 4, 3]"
232
+ relab = pformat(self._relabelling)
233
+ return self._type._repr_(compact=compact) + " relabelled by {}".format(relab)
234
+
235
+ def _latex_(self):
236
+ r"""
237
+ Return a latex representation of ``self``.
238
+
239
+ EXAMPLES::
240
+
241
+ sage: ct = CartanType(['A',4]).relabel(lambda x: (x+1)%4+1)
242
+ sage: latex(ct)
243
+ A_{4} \text{ relabelled by } \left\{1 : 3, 2 : 4, 3 : 1, 4 : 2\right\}
244
+
245
+ A more compact, but potentially confusing, representation can
246
+ be obtained using the ``latex_relabel`` global option::
247
+
248
+ sage: CartanType.options['latex_relabel'] = False
249
+ sage: latex(ct)
250
+ A_{4}
251
+ sage: CartanType.options['latex_relabel'] = True
252
+
253
+ Kac's notations are implemented::
254
+
255
+ sage: CartanType.options['notation'] = 'Kac'
256
+ sage: latex(CartanType(['D',4,3]))
257
+ D_4^{(3)}
258
+ sage: CartanType.options._reset()
259
+
260
+ TESTS::
261
+
262
+ sage: latex(CoxeterType(['I',5]).relabel({1:0,2:1}))
263
+ I_2(5) \text{ relabelled by } \left\{1 : 0, 2 : 1\right\}
264
+ """
265
+ from sage.misc.latex import latex
266
+ # Special case for type D_4^{(3)}
267
+ if (self._type.is_affine() and self._type.dual().type() == 'G'
268
+ and self.options("notation") == "Kac"):
269
+ return 'D_4^{(3)}'
270
+ ret = self._type._latex_()
271
+ if self.options('latex_relabel'):
272
+ ret += " \\text{ relabelled by } " + latex(self._relabelling)
273
+ return ret
274
+
275
+ def _latex_dynkin_diagram(self, label=None, node=None, node_dist=2):
276
+ r"""
277
+ Return a latex representation of the Dynkin diagram.
278
+
279
+ EXAMPLES::
280
+
281
+ sage: print(CartanType(['A',4]).relabel(lambda x: (x+1)%4+1)._latex_dynkin_diagram())
282
+ \draw (0 cm,0) -- (6 cm,0);
283
+ \draw[fill=white] (0 cm, 0 cm) circle (.25cm) node[below=4pt]{$3$};
284
+ \draw[fill=white] (2 cm, 0 cm) circle (.25cm) node[below=4pt]{$4$};
285
+ \draw[fill=white] (4 cm, 0 cm) circle (.25cm) node[below=4pt]{$1$};
286
+ \draw[fill=white] (6 cm, 0 cm) circle (.25cm) node[below=4pt]{$2$};
287
+ <BLANKLINE>
288
+ """
289
+ if label is None:
290
+ label = lambda i: i
291
+ return self._type._latex_dynkin_diagram(lambda i: label(self._relabelling[i]), node, node_dist)
292
+
293
+ def ascii_art(self, label=None, node=None):
294
+ """
295
+ Return an ascii art representation of this Cartan type.
296
+
297
+ EXAMPLES::
298
+
299
+ sage: print(CartanType(["G", 2]).relabel({1:2,2:1}).ascii_art())
300
+ 3
301
+ O=<=O
302
+ 2 1
303
+ sage: print(CartanType(["B", 3, 1]).relabel([1,3,2,0]).ascii_art())
304
+ O 1
305
+ |
306
+ |
307
+ O---O=>=O
308
+ 3 2 0
309
+ sage: print(CartanType(["F", 4, 1]).relabel(lambda n: 4-n).ascii_art())
310
+ O---O---O=>=O---O
311
+ 4 3 2 1 0
312
+ """
313
+ if label is None:
314
+ label = lambda i: i
315
+ if node is None:
316
+ node = self._ascii_art_node
317
+ return self._type.ascii_art(lambda i: label(self._relabelling[i]), node)
318
+
319
+ def dynkin_diagram(self):
320
+ """
321
+ Return the Dynkin diagram for this Cartan type.
322
+
323
+ EXAMPLES::
324
+
325
+ sage: CartanType(["G", 2]).relabel({1:2,2:1}).dynkin_diagram() # needs sage.graphs
326
+ 3
327
+ O=<=O
328
+ 2 1
329
+ G2 relabelled by {1: 2, 2: 1}
330
+
331
+ TESTS:
332
+
333
+ To be compared with the examples in :meth:`ascii_art`::
334
+
335
+ sage: CartanType(["G", 2]).relabel({1:2,2:1}).dynkin_diagram().edges(sort=True) # needs sage.graphs
336
+ [(1, 2, 3), (2, 1, 1)]
337
+ sage: CartanType(["B", 3, 1]).relabel([1,3,2,0]).dynkin_diagram().edges(sort=True) # needs sage.graphs
338
+ [(0, 2, 1), (1, 2, 1), (2, 0, 2), (2, 1, 1), (2, 3, 1), (3, 2, 1)]
339
+ sage: CartanType(["F", 4, 1]).relabel(lambda n: 4-n).dynkin_diagram().edges(sort=True) # needs sage.graphs
340
+ [(0, 1, 1), (1, 0, 1), (1, 2, 1), (2, 1, 2), (2, 3, 1), (3, 2, 1), (3, 4, 1), (4, 3, 1)]
341
+ """
342
+ # Maybe we want to move this up as a relabel method for Dynkin diagram
343
+ # We will have to be careful setting the Cartan type of the result though
344
+ result = self._type.dynkin_diagram().copy()
345
+ # relabelling in place allows to keep the extra Dynkin diagram structure
346
+ super(result.__class__, result).relabel(self._relabelling, inplace=True)
347
+ result._cartan_type = self
348
+ return result
349
+
350
+ def index_set(self):
351
+ """
352
+ EXAMPLES::
353
+
354
+ sage: ct = CartanType(['G', 2]).relabel({1:2,2:1})
355
+ sage: ct.index_set()
356
+ (1, 2)
357
+ """
358
+ return self._index_set
359
+
360
+ def dual(self):
361
+ """
362
+ Implement :meth:`sage.combinat.root_system.cartan_type.CartanType_abstract.dual`,
363
+ using that taking the dual and relabelling are commuting operations.
364
+
365
+ EXAMPLES::
366
+
367
+ sage: T = CartanType(["BC",3, 2])
368
+ sage: cycle = {1:2, 2:3, 3:0, 0:1}
369
+ sage: T.relabel(cycle).dual().dynkin_diagram() # needs sage.graphs
370
+ O=>=O---O=>=O
371
+ 1 2 3 0
372
+ BC3~* relabelled by {0: 1, 1: 2, 2: 3, 3: 0}
373
+ sage: T.dual().relabel(cycle).dynkin_diagram() # needs sage.graphs
374
+ O=>=O---O=>=O
375
+ 1 2 3 0
376
+ BC3~* relabelled by {0: 1, 1: 2, 2: 3, 3: 0}
377
+ """
378
+ return self._type.dual().relabel(self._relabelling)
379
+
380
+ def _default_folded_cartan_type(self):
381
+ """
382
+ Return the default folded Cartan type.
383
+
384
+ EXAMPLES::
385
+
386
+ sage: fct = CartanType(['D', 4, 3])._default_folded_cartan_type(); fct
387
+ ['G', 2, 1]^* relabelled by {0: 0, 1: 2, 2: 1} as a folding of ['D', 4, 1]
388
+ sage: fct.folding_orbit()
389
+ Finite family {0: (0,), 1: (2,), 2: (1, 3, 4)}
390
+ sage: CartanType(['G',2,1]).dual()._default_folded_cartan_type().folding_orbit()
391
+ Finite family {0: (0,), 1: (1, 3, 4), 2: (2,)}
392
+ sage: CartanType(['C',3,1]).relabel({0:1, 1:0, 2:3, 3:2}).as_folding().scaling_factors() # needs sage.graphs
393
+ Finite family {0: 1, 1: 2, 2: 2, 3: 1}
394
+ """
395
+ from sage.combinat.root_system.type_folded import CartanTypeFolded
396
+ vct = self._type._default_folded_cartan_type()
397
+ sigma = vct.folding_orbit()
398
+ return CartanTypeFolded(self, vct._folding,
399
+ {self._relabelling[i]: sigma[i] for i in self._type.index_set()})
400
+
401
+ def type(self):
402
+ """
403
+ Return the type of ``self`` or ``None`` if unknown.
404
+
405
+ EXAMPLES::
406
+
407
+ sage: ct = CartanType(['G', 2]).relabel({1:2,2:1})
408
+ sage: ct.type()
409
+ 'G'
410
+ """
411
+ return self._type.type()
412
+
413
+ @cached_method
414
+ def coxeter_diagram(self):
415
+ """
416
+ Return the Coxeter diagram for ``self``.
417
+
418
+ EXAMPLES::
419
+
420
+ sage: ct = CartanType(['H', 3]).relabel({1:3,2:2,3:1})
421
+ sage: G = ct.coxeter_diagram(); G # needs sage.graphs
422
+ Graph on 3 vertices
423
+ sage: G.edges(sort=True) # needs sage.graphs
424
+ [(1, 2, 5), (2, 3, 3)]
425
+ """
426
+ return self._type.coxeter_diagram().relabel(self._relabelling, inplace=False, immutable=True)
427
+
428
+ ###########################################################################
429
+
430
+
431
+ class AmbientSpace(ambient_space.AmbientSpace):
432
+ """
433
+ Ambient space for a relabelled finite Cartan type.
434
+
435
+ It is constructed in the canonical way from the ambient space of
436
+ the original Cartan type, by relabelling the simple roots,
437
+ fundamental weights, etc.
438
+
439
+ EXAMPLES::
440
+
441
+ sage: cycle = {1:2, 2:3, 3:4, 4:1}
442
+ sage: L = CartanType(["F",4]).relabel(cycle).root_system().ambient_space(); L
443
+ Ambient space of the Root system of type ['F', 4] relabelled by {1: 2, 2: 3, 3: 4, 4: 1}
444
+ sage: TestSuite(L).run() # needs sage.graphs
445
+ """
446
+
447
+ @lazy_attribute
448
+ def _space(self):
449
+ """
450
+ The ambient space this is a relabelling of.
451
+
452
+ EXAMPLES::
453
+
454
+ sage: cycle = {1:2, 2:3, 3:4, 4:1}
455
+ sage: L = CartanType(["F",4]).relabel(cycle).root_system().ambient_space()
456
+ sage: L._space
457
+ Ambient space of the Root system of type ['F', 4]
458
+ """
459
+ K = self.base_ring()
460
+ return self.cartan_type()._type.root_system().ambient_space(K)
461
+
462
+ def dimension(self):
463
+ """
464
+ Return the dimension of this ambient space.
465
+
466
+ .. SEEALSO:: :meth:`sage.combinat.root_system.ambient_space.AmbientSpace.dimension`
467
+
468
+ EXAMPLES::
469
+
470
+ sage: cycle = {1:2, 2:3, 3:4, 4:1}
471
+ sage: L = CartanType(["F",4]).relabel(cycle).root_system().ambient_space()
472
+ sage: L.dimension()
473
+ 4
474
+ """
475
+ # Can't yet use _dual_space for the base ring (and cartan_type?) is not yet initialized
476
+ return self.root_system.cartan_type()._type.root_system().ambient_space().dimension()
477
+
478
+ @cached_method
479
+ def simple_root(self, i):
480
+ """
481
+ Return the ``i``-th simple root.
482
+
483
+ It is constructed by looking up the corresponding simple
484
+ coroot in the ambient space for the original Cartan type.
485
+
486
+ EXAMPLES::
487
+
488
+ sage: cycle = {1:2, 2:3, 3:4, 4:1}
489
+ sage: L = CartanType(["F",4]).relabel(cycle).root_system().ambient_space()
490
+ sage: K = CartanType(["F",4]).root_system().ambient_space()
491
+ sage: K.simple_roots()
492
+ Finite family {1: (0, 1, -1, 0), 2: (0, 0, 1, -1), 3: (0, 0, 0, 1), 4: (1/2, -1/2, -1/2, -1/2)}
493
+ sage: K.simple_coroots()
494
+ Finite family {1: (0, 1, -1, 0), 2: (0, 0, 1, -1), 3: (0, 0, 0, 2), 4: (1, -1, -1, -1)}
495
+ sage: L.simple_root(1)
496
+ (1/2, -1/2, -1/2, -1/2)
497
+
498
+ sage: L.simple_roots()
499
+ Finite family {1: (1/2, -1/2, -1/2, -1/2), 2: (0, 1, -1, 0), 3: (0, 0, 1, -1), 4: (0, 0, 0, 1)}
500
+
501
+ sage: L.simple_coroots()
502
+ Finite family {1: (1, -1, -1, -1), 2: (0, 1, -1, 0), 3: (0, 0, 1, -1), 4: (0, 0, 0, 2)}
503
+ """
504
+ i = self.cartan_type()._relabelling_inverse[i]
505
+ return self.sum_of_terms(self._space.simple_root(i))
506
+
507
+ @cached_method
508
+ def fundamental_weight(self, i):
509
+ """
510
+ Return the ``i``-th fundamental weight.
511
+
512
+ It is constructed by looking up the corresponding simple
513
+ coroot in the ambient space for the original Cartan type.
514
+
515
+ EXAMPLES::
516
+
517
+ sage: cycle = {1:2, 2:3, 3:4, 4:1}
518
+ sage: L = CartanType(["F",4]).relabel(cycle).root_system().ambient_space()
519
+ sage: K = CartanType(["F",4]).root_system().ambient_space()
520
+ sage: K.fundamental_weights()
521
+ Finite family {1: (1, 1, 0, 0), 2: (2, 1, 1, 0), 3: (3/2, 1/2, 1/2, 1/2), 4: (1, 0, 0, 0)}
522
+ sage: L.fundamental_weight(1)
523
+ (1, 0, 0, 0)
524
+ sage: L.fundamental_weights()
525
+ Finite family {1: (1, 0, 0, 0), 2: (1, 1, 0, 0), 3: (2, 1, 1, 0), 4: (3/2, 1/2, 1/2, 1/2)}
526
+ """
527
+ i = self.cartan_type()._relabelling_inverse[i]
528
+ return self.sum_of_terms(self._space.fundamental_weight(i))
529
+
530
+ @lazy_attribute
531
+ def _plot_projection(self):
532
+ """
533
+ A hack so that if an ambient space uses barycentric projection, then so does its dual.
534
+
535
+ EXAMPLES::
536
+
537
+ sage: cycle = {1:2, 2:1}
538
+ sage: L = CartanType(["G",2]).relabel(cycle).root_system().ambient_space()
539
+ sage: L._plot_projection == L._plot_projection_barycentric
540
+ True
541
+
542
+ sage: cycle = {1:2, 2:3, 3:4, 4:1}
543
+ sage: L = CartanType(["F",4]).relabel(cycle).root_system().ambient_space()
544
+ sage: L._plot_projection == L._plot_projection_barycentric
545
+ False
546
+ """
547
+ if self._space._plot_projection == self._space._plot_projection_barycentric:
548
+ return self._plot_projection_barycentric
549
+ else:
550
+ RootLatticeRealizations.ParentMethods.__dict__["_plot_projection"]
551
+
552
+
553
+ class CartanType_finite(CartanType, cartan_type.CartanType_finite):
554
+ AmbientSpace = AmbientSpace
555
+
556
+ def affine(self):
557
+ """
558
+ Return the affine Cartan type associated with ``self``.
559
+
560
+ EXAMPLES::
561
+
562
+ sage: B4 = CartanType(['B',4])
563
+ sage: B4.dynkin_diagram() # needs sage.graphs
564
+ O---O---O=>=O
565
+ 1 2 3 4
566
+ B4
567
+ sage: B4.affine().dynkin_diagram() # needs sage.graphs
568
+ O 0
569
+ |
570
+ |
571
+ O---O---O=>=O
572
+ 1 2 3 4
573
+ B4~
574
+
575
+ If possible, this reuses the original label for the special node::
576
+
577
+ sage: T = B4.relabel({1:2, 2:3, 3:4, 4:1}); T.dynkin_diagram() # needs sage.graphs
578
+ O---O---O=>=O
579
+ 2 3 4 1
580
+ B4 relabelled by {1: 2, 2: 3, 3: 4, 4: 1}
581
+ sage: T.affine().dynkin_diagram() # needs sage.graphs
582
+ O 0
583
+ |
584
+ |
585
+ O---O---O=>=O
586
+ 2 3 4 1
587
+ B4~ relabelled by {0: 0, 1: 2, 2: 3, 3: 4, 4: 1}
588
+
589
+ Otherwise, it chooses a label for the special_node in `0,1,...`::
590
+
591
+ sage: T = B4.relabel({1:0, 2:1, 3:2, 4:3}); T.dynkin_diagram() # needs sage.graphs
592
+ O---O---O=>=O
593
+ 0 1 2 3
594
+ B4 relabelled by {1: 0, 2: 1, 3: 2, 4: 3}
595
+ sage: T.affine().dynkin_diagram() # needs sage.graphs
596
+ O 4
597
+ |
598
+ |
599
+ O---O---O=>=O
600
+ 0 1 2 3
601
+ B4~ relabelled by {0: 4, 1: 0, 2: 1, 3: 2, 4: 3}
602
+
603
+ This failed before :issue:`13724`::
604
+
605
+ sage: ct = CartanType(["G",2]).dual(); ct
606
+ ['G', 2] relabelled by {1: 2, 2: 1}
607
+ sage: ct.affine()
608
+ ['G', 2, 1] relabelled by {0: 0, 1: 2, 2: 1}
609
+
610
+ sage: ct = CartanType(["F",4]).dual(); ct
611
+ ['F', 4] relabelled by {1: 4, 2: 3, 3: 2, 4: 1}
612
+ sage: ct.affine()
613
+ ['F', 4, 1] relabelled by {0: 0, 1: 4, 2: 3, 3: 2, 4: 1}
614
+
615
+ Check that we don't inadvertently change the internal
616
+ relabelling of ``ct``::
617
+
618
+ sage: ct
619
+ ['F', 4] relabelled by {1: 4, 2: 3, 3: 2, 4: 1}
620
+ """
621
+ affine = self._type.affine()
622
+ relabelling = self._relabelling.copy()
623
+ for special_node in [affine.special_node()] + list(range(affine.rank())):
624
+ if special_node not in self._relabelling_inverse:
625
+ relabelling[affine.special_node()] = special_node
626
+ break
627
+ return self._type.affine().relabel(relabelling)
628
+
629
+ ###########################################################################
630
+
631
+
632
+ class CartanType_affine(CartanType, cartan_type.CartanType_affine):
633
+ """
634
+ TESTS::
635
+
636
+ sage: ct = CartanType(['D',4,3]); ct
637
+ ['G', 2, 1]^* relabelled by {0: 0, 1: 2, 2: 1}
638
+
639
+ sage: L = ct.root_system().ambient_space(); L
640
+ Ambient space of the Root system of type ['G', 2, 1]^* relabelled by {0: 0, 1: 2, 2: 1}
641
+ sage: L.classical()
642
+ Ambient space of the Root system of type ['G', 2]
643
+ sage: TestSuite(L).run()
644
+ """
645
+
646
+ def classical(self):
647
+ """
648
+ Return the classical Cartan type associated with ``self``.
649
+
650
+ EXAMPLES::
651
+
652
+ sage: A41 = CartanType(['A',4,1])
653
+ sage: A41.dynkin_diagram() # needs sage.graphs
654
+ 0
655
+ O-----------+
656
+ | |
657
+ | |
658
+ O---O---O---O
659
+ 1 2 3 4
660
+ A4~
661
+
662
+ sage: T = A41.relabel({0:1, 1:2, 2:3, 3:4, 4:0})
663
+ sage: T
664
+ ['A', 4, 1] relabelled by {0: 1, 1: 2, 2: 3, 3: 4, 4: 0}
665
+ sage: T.dynkin_diagram() # needs sage.graphs
666
+ 1
667
+ O-----------+
668
+ | |
669
+ | |
670
+ O---O---O---O
671
+ 2 3 4 0
672
+ A4~ relabelled by {0: 1, 1: 2, 2: 3, 3: 4, 4: 0}
673
+
674
+ sage: T0 = T.classical()
675
+ sage: T0
676
+ ['A', 4] relabelled by {1: 2, 2: 3, 3: 4, 4: 0}
677
+ sage: T0.dynkin_diagram() # needs sage.graphs
678
+ O---O---O---O
679
+ 2 3 4 0
680
+ A4 relabelled by {1: 2, 2: 3, 3: 4, 4: 0}
681
+ """
682
+ return self._type.classical().relabel(self._relabelling)
683
+
684
+ def basic_untwisted(self):
685
+ r"""
686
+ Return the basic untwisted Cartan type associated with this affine
687
+ Cartan type.
688
+
689
+ Given an affine type `X_n^{(r)}`, the basic untwisted type is `X_n`.
690
+ In other words, it is the classical Cartan type that is twisted to
691
+ obtain ``self``.
692
+
693
+ EXAMPLES::
694
+
695
+ sage: ct = CartanType(['A', 5, 2]).relabel({0:1, 1:0, 2:2, 3:3})
696
+ sage: ct.basic_untwisted()
697
+ ['A', 5]
698
+ """
699
+ return self._type.basic_untwisted()
700
+
701
+ def special_node(self):
702
+ r"""
703
+ Return a special node of the Dynkin diagram.
704
+
705
+ .. SEEALSO:: :meth:`~sage.combinat.root_system.CartanType_affine.special_node`
706
+
707
+ It is obtained by relabelling of the special node of the non
708
+ relabelled Dynkin diagram.
709
+
710
+ EXAMPLES::
711
+
712
+ sage: CartanType(['B', 3, 1]).special_node()
713
+ 0
714
+ sage: CartanType(['B', 3, 1]).relabel({1:2, 2:3, 3:0, 0:1}).special_node()
715
+ 1
716
+ """
717
+ return self._relabelling[self._type.special_node()]
718
+
719
+ def is_untwisted_affine(self):
720
+ """
721
+ Implement :meth:`CartanType_affine.is_untwisted_affine`.
722
+
723
+ A relabelled Cartan type is untwisted affine if the original is.
724
+
725
+ EXAMPLES::
726
+
727
+ sage: CartanType(['B', 3, 1]).relabel({1:2, 2:3, 3:0, 0:1}).is_untwisted_affine()
728
+ True
729
+ """
730
+ return self._type.is_untwisted_affine()