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,704 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ """
3
+ Root system data for dual Cartan types
4
+ """
5
+ # ****************************************************************************
6
+ # Copyright (C) 2008-2009 Anne Schilling <anne at math.ucdavis.edu>
7
+ # Copyright (C) 2008-2013 Nicolas M. Thiery <nthiery at users.sf.net>
8
+ #
9
+ # Distributed under the terms of the GNU General Public License (GPL)
10
+ # https://www.gnu.org/licenses/
11
+ # ****************************************************************************
12
+
13
+ from sage.misc.call import attrcall
14
+ from sage.misc.cachefunc import cached_method
15
+ from sage.misc.lazy_attribute import lazy_attribute
16
+ from sage.combinat.root_system import cartan_type
17
+ from sage.combinat.root_system.root_lattice_realizations import RootLatticeRealizations
18
+ from sage.combinat.root_system import ambient_space
19
+
20
+
21
+ class CartanType(cartan_type.CartanType_decorator, cartan_type.CartanType_crystallographic):
22
+ r"""
23
+ A class for dual Cartan types.
24
+
25
+ The dual of a (crystallographic) Cartan type is a Cartan type with
26
+ the same index set, but all arrows reversed in the Dynkin diagram
27
+ (otherwise said, the Cartan matrix is transposed). It shares a lot
28
+ of properties in common with its dual. In particular, the Weyl
29
+ group is isomorphic to that of the dual as a Coxeter group.
30
+
31
+ EXAMPLES:
32
+
33
+ For all finite Cartan types, and in particular the simply laced
34
+ ones, the dual Cartan type is given by another preexisting Cartan
35
+ type::
36
+
37
+ sage: CartanType(['A',4]).dual()
38
+ ['A', 4]
39
+ sage: CartanType(['B',4]).dual()
40
+ ['C', 4]
41
+ sage: CartanType(['C',4]).dual()
42
+ ['B', 4]
43
+ sage: CartanType(['F',4]).dual()
44
+ ['F', 4] relabelled by {1: 4, 2: 3, 3: 2, 4: 1}
45
+
46
+ So to exercise this class we consider some non simply laced affine
47
+ Cartan types and also create explicitly `F_4^*` as a dual cartan
48
+ type::
49
+
50
+ sage: from sage.combinat.root_system.type_dual import CartanType as CartanTypeDual
51
+ sage: F4d = CartanTypeDual(CartanType(['F',4])); F4d
52
+ ['F', 4]^*
53
+ sage: G21d = CartanType(['G',2,1]).dual(); G21d
54
+ ['G', 2, 1]^*
55
+
56
+ They share many properties with their original Cartan types::
57
+
58
+ sage: F4d.is_irreducible()
59
+ True
60
+ sage: F4d.is_crystallographic()
61
+ True
62
+ sage: F4d.is_simply_laced()
63
+ False
64
+ sage: F4d.is_finite()
65
+ True
66
+ sage: G21d.is_finite()
67
+ False
68
+ sage: F4d.is_affine()
69
+ False
70
+ sage: G21d.is_affine()
71
+ True
72
+
73
+ TESTS::
74
+
75
+ sage: TestSuite(F4d).run(skip=["_test_pickling"])
76
+ sage: TestSuite(G21d).run()
77
+
78
+ .. NOTE:: F4d is pickled by construction as F4.dual() hence the above failure.
79
+ """
80
+
81
+ def __init__(self, type):
82
+ """
83
+ INPUT:
84
+
85
+ - ``type`` -- a Cartan type
86
+
87
+ EXAMPLES::
88
+
89
+ sage: ct = CartanType(['F',4,1]).dual()
90
+ sage: TestSuite(ct).run()
91
+
92
+ TESTS::
93
+
94
+ sage: ct1 = CartanType(['B',3,1]).dual()
95
+ sage: ct2 = CartanType(['B',3,1]).dual()
96
+ sage: ct3 = CartanType(['D',4,1]).dual()
97
+ sage: ct1 == ct2
98
+ True
99
+ sage: ct1 == ct3
100
+ False
101
+
102
+ Test that the produced Cartan type is in the appropriate
103
+ abstract classes (see :issue:`13724`)::
104
+
105
+ sage: from sage.combinat.root_system import cartan_type
106
+ sage: ct = CartanType(['B',3,1]).dual()
107
+ sage: TestSuite(ct).run()
108
+ sage: isinstance(ct, cartan_type.CartanType_simple)
109
+ True
110
+ sage: isinstance(ct, cartan_type.CartanType_finite)
111
+ False
112
+ sage: isinstance(ct, cartan_type.CartanType_affine)
113
+ True
114
+ sage: isinstance(ct, cartan_type.CartanType_crystallographic)
115
+ True
116
+ sage: isinstance(ct, cartan_type.CartanType_simply_laced)
117
+ False
118
+
119
+ By default, the dual of a reducible and finite type is not
120
+ constructed as such::
121
+
122
+ sage: ct = CartanType([['B',4],['A',2]]).dual(); ct
123
+ C4xA2
124
+
125
+ In order to exercise the dual infrastructure we force the
126
+ construction as a dual::
127
+
128
+ sage: from sage.combinat.root_system import type_dual
129
+ sage: ct = type_dual.CartanType(CartanType([['B',4],['A',2]])); ct
130
+ B4xA2^*
131
+ sage: isinstance(ct, type_dual.CartanType)
132
+ True
133
+ sage: TestSuite(ct).run(skip=["_test_pickling"])
134
+ sage: isinstance(ct, cartan_type.CartanType_finite)
135
+ True
136
+ sage: isinstance(ct, cartan_type.CartanType_simple)
137
+ False
138
+ sage: isinstance(ct, cartan_type.CartanType_affine)
139
+ False
140
+ sage: isinstance(ct, cartan_type.CartanType_crystallographic)
141
+ True
142
+ sage: isinstance(ct, cartan_type.CartanType_simply_laced)
143
+ False
144
+ """
145
+ if not type.is_crystallographic():
146
+ raise NotImplementedError("only implemented for crystallographic Cartan types")
147
+ cartan_type.CartanType_decorator.__init__(self, type)
148
+ # TODO: design an appropriate infrastructure to handle this
149
+ # automatically? Maybe using categories and axioms?
150
+ # See also type_relabel.CartanType.__init__
151
+ if type.is_finite():
152
+ self.__class__ = CartanType_finite
153
+ elif type.is_affine():
154
+ self.__class__ = CartanType_affine
155
+ abstract_classes = tuple(cls
156
+ for cls in self._stable_abstract_classes
157
+ if isinstance(type, cls))
158
+ if abstract_classes:
159
+ self._add_abstract_superclass(abstract_classes)
160
+
161
+ # For each class cls in _stable_abstract_classes, if ct is an
162
+ # instance of A then ct.relabel(...) is put in this class as well.
163
+ # The order is relevant to avoid MRO issues!
164
+ _stable_abstract_classes = [
165
+ cartan_type.CartanType_simple]
166
+
167
+ def _repr_(self, compact=False):
168
+ """
169
+ EXAMPLES::
170
+
171
+ sage: CartanType(['F', 4, 1]).dual()
172
+ ['F', 4, 1]^*
173
+
174
+ sage: CartanType(['F', 4, 1]).dual()._repr_(compact = True)
175
+ 'F4~*'
176
+ """
177
+ dual_str = self.options.dual_str
178
+ if self.is_affine() and self.options.notation == "Kac":
179
+ if self._type.type() == 'B':
180
+ if compact:
181
+ return 'A%s^2' % (self.classical().rank()*2-1)
182
+ return "['A', %s, 2]" % (self.classical().rank()*2-1)
183
+ elif self._type.type() == 'BC':
184
+ dual_str = '+'
185
+ elif self._type.type() == 'C':
186
+ if compact:
187
+ return 'D%s^2' % (self.rank())
188
+ return "['D', %s, 2]" % (self.rank())
189
+ elif self._type.type() == 'F':
190
+ if compact:
191
+ return 'E6^2'
192
+ return "['E', 6, 2]"
193
+ return self.dual()._repr_(compact)+(dual_str if compact else "^"+dual_str)
194
+
195
+ def _latex_(self):
196
+ r"""
197
+ EXAMPLES::
198
+
199
+ sage: latex(CartanType(['F', 4, 1]).dual())
200
+ F_4^{(1)\vee}
201
+ """
202
+ return self._type._latex_()+"^"+self.options.dual_latex
203
+
204
+ def __reduce__(self):
205
+ """
206
+ TESTS::
207
+
208
+ sage: CartanType(['F', 4, 1]).dual().__reduce__()
209
+ (*.dual(), (['F', 4, 1],))
210
+ """
211
+ return (attrcall("dual"), (self._type,))
212
+
213
+ def _latex_dynkin_diagram(self, label=None, node=None, node_dist=2):
214
+ r"""
215
+ EXAMPLES::
216
+
217
+ sage: print(CartanType(['F',4,1]).dual()._latex_dynkin_diagram())
218
+ \draw (0 cm,0) -- (2 cm,0);
219
+ {
220
+ \pgftransformxshift{2 cm}
221
+ \draw (0 cm,0) -- (2 cm,0);
222
+ \draw (2 cm, 0.1 cm) -- +(2 cm,0);
223
+ \draw (2 cm, -0.1 cm) -- +(2 cm,0);
224
+ \draw (4.0 cm,0) -- +(2 cm,0);
225
+ \draw[shift={(2.8, 0)}, rotate=180] (135 : 0.45cm) -- (0,0) -- (-135 : 0.45cm);
226
+ \draw[fill=white] (0 cm, 0 cm) circle (.25cm) node[below=4pt]{$1$};
227
+ \draw[fill=white] (2 cm, 0 cm) circle (.25cm) node[below=4pt]{$2$};
228
+ \draw[fill=white] (4 cm, 0 cm) circle (.25cm) node[below=4pt]{$3$};
229
+ \draw[fill=white] (6 cm, 0 cm) circle (.25cm) node[below=4pt]{$4$};
230
+ }
231
+ \draw[fill=white] (0 cm, 0 cm) circle (.25cm) node[below=4pt]{$0$};
232
+ """
233
+ if label is None:
234
+ label = lambda i: i
235
+ if node is None:
236
+ node = self._latex_draw_node
237
+ return self._type._latex_dynkin_diagram(label, node, node_dist, dual=True)
238
+
239
+ def ascii_art(self, label=None, node=None):
240
+ """
241
+ Return an ascii art representation of this Cartan type.
242
+
243
+ (by hacking the ascii art representation of the dual Cartan type)
244
+
245
+ EXAMPLES::
246
+
247
+ sage: print(CartanType(["B", 3, 1]).dual().ascii_art())
248
+ O 0
249
+ |
250
+ |
251
+ O---O=<=O
252
+ 1 2 3
253
+ sage: print(CartanType(["C", 4, 1]).dual().ascii_art())
254
+ O=<=O---O---O=>=O
255
+ 0 1 2 3 4
256
+ sage: print(CartanType(["G", 2, 1]).dual().ascii_art())
257
+ 3
258
+ O=>=O---O
259
+ 1 2 0
260
+ sage: print(CartanType(["F", 4, 1]).dual().ascii_art())
261
+ O---O---O=<=O---O
262
+ 0 1 2 3 4
263
+ sage: print(CartanType(["BC", 4, 2]).dual().ascii_art())
264
+ O=>=O---O---O=>=O
265
+ 0 1 2 3 4
266
+ """
267
+ if label is None:
268
+ label = lambda i: i
269
+ if node is None:
270
+ node = self._ascii_art_node
271
+ res = self._type.ascii_art(label, node)
272
+ # swap, like a computer science freshman!
273
+ # This assumes that the oriented multiple arrows are always ascii arted as =<= or =>=
274
+ res = res.replace("=<=", "=?=")
275
+ res = res.replace("=>=", "=<=")
276
+ res = res.replace("=?=", "=>=")
277
+ return res
278
+
279
+ def __eq__(self, other):
280
+ """
281
+ Return whether ``self`` is equal to ``other``.
282
+
283
+ EXAMPLES::
284
+
285
+ sage: B41 = CartanType(['B', 4, 1])
286
+ sage: B41dual = CartanType(['B', 4, 1]).dual()
287
+ sage: F41dual = CartanType(['F', 4, 1]).dual()
288
+
289
+ sage: F41dual == F41dual
290
+ True
291
+ sage: F41dual == B41dual
292
+ False
293
+ sage: B41dual == B41
294
+ False
295
+ """
296
+ if not isinstance(other, CartanType):
297
+ return False
298
+ return self._type == other._type
299
+
300
+ def __ne__(self, other):
301
+ """
302
+ Return whether ``self`` is equal to ``other``.
303
+
304
+ EXAMPLES::
305
+
306
+ sage: B41 = CartanType(['B', 4, 1])
307
+ sage: B41dual = CartanType(['B', 4, 1]).dual()
308
+ sage: F41dual = CartanType(['F', 4, 1]).dual()
309
+
310
+ sage: F41dual != F41dual
311
+ False
312
+ sage: F41dual != B41dual
313
+ True
314
+ sage: B41dual != B41
315
+ True
316
+ """
317
+ return not (self == other)
318
+
319
+ def __hash__(self):
320
+ """
321
+ Compute the hash of ``self``.
322
+
323
+ EXAMPLES::
324
+
325
+ sage: B41 = CartanType(['B', 4, 1])
326
+ sage: B41dual = CartanType(['B', 4, 1]).dual()
327
+ sage: h = hash(B41dual)
328
+ """
329
+ return hash(self._type)
330
+
331
+ def dual(self):
332
+ """
333
+ EXAMPLES::
334
+
335
+ sage: ct = CartanType(['F', 4, 1]).dual()
336
+ sage: ct.dual()
337
+ ['F', 4, 1]
338
+ """
339
+ return self._type
340
+
341
+ def dynkin_diagram(self):
342
+ """
343
+ EXAMPLES::
344
+
345
+ sage: ct = CartanType(['F', 4, 1]).dual()
346
+ sage: ct.dynkin_diagram() # needs sage.graphs
347
+ O---O---O=<=O---O
348
+ 0 1 2 3 4
349
+ F4~*
350
+ """
351
+ return self._type.dynkin_diagram().dual()
352
+
353
+ ###########################################################################
354
+
355
+
356
+ class AmbientSpace(ambient_space.AmbientSpace):
357
+ """
358
+ Ambient space for a dual finite Cartan type.
359
+
360
+ It is constructed in the canonical way from the ambient space of
361
+ the original Cartan type by switching the roles of simple roots,
362
+ fundamental weights, etc.
363
+
364
+ .. NOTE::
365
+
366
+ Recall that, for any finite Cartan type, and in particular the
367
+ a simply laced one, the dual Cartan type is constructed as
368
+ another preexisting Cartan type. Furthermore the ambient space
369
+ for an affine type is constructed from the ambient space for
370
+ its classical type. Thus this code is not actually currently
371
+ used.
372
+
373
+ It is kept for cross-checking and for reference in case it
374
+ could become useful, e.g., for dual of general Kac-Moody
375
+ types.
376
+
377
+ For the doctests, we need to explicitly create a dual type.
378
+ Subsequently, since reconstruction of the dual of type `F_4`
379
+ is the relabelled Cartan type, pickling fails on the
380
+ ``TestSuite`` run.
381
+
382
+ EXAMPLES::
383
+
384
+ sage: ct = sage.combinat.root_system.type_dual.CartanType(CartanType(['F',4]))
385
+ sage: L = ct.root_system().ambient_space(); L
386
+ Ambient space of the Root system of type ['F', 4]^*
387
+ sage: TestSuite(L).run(skip=["_test_elements","_test_pickling"]) # needs sage.graphs
388
+ """
389
+
390
+ @lazy_attribute
391
+ def _dual_space(self):
392
+ """
393
+ The dual of this ambient space.
394
+
395
+ EXAMPLES::
396
+
397
+ sage: ct = sage.combinat.root_system.type_dual.CartanType(CartanType(['F',4]))
398
+ sage: L = ct.root_system().ambient_space(); L
399
+ Ambient space of the Root system of type ['F', 4]^*
400
+ sage: L._dual_space
401
+ Ambient space of the Root system of type ['F', 4]
402
+
403
+ The basic data for this space is fetched from the dual space::
404
+
405
+ sage: L._dual_space.simple_root(1)
406
+ (0, 1, -1, 0)
407
+ sage: L.simple_root(1)
408
+ (0, 1, -1, 0)
409
+ """
410
+ K = self.base_ring()
411
+ return self.cartan_type().dual().root_system().ambient_space(K)
412
+ #return self.root_system.dual.ambient_space()
413
+
414
+ def dimension(self):
415
+ """
416
+ Return the dimension of this ambient space.
417
+
418
+ .. SEEALSO:: :meth:`sage.combinat.root_system.ambient_space.AmbientSpace.dimension`
419
+
420
+ EXAMPLES::
421
+
422
+ sage: ct = sage.combinat.root_system.type_dual.CartanType(CartanType(['F',4]))
423
+ sage: L = ct.root_system().ambient_space()
424
+ sage: L.dimension()
425
+ 4
426
+ """
427
+ # Can't yet use _dual_space for the base ring (and the Cartan type?) is not yet initialized
428
+ return self.root_system.dual.ambient_space().dimension()
429
+
430
+ @cached_method
431
+ def simple_root(self, i):
432
+ """
433
+ Return the ``i``-th simple root.
434
+
435
+ It is constructed by looking up the corresponding simple
436
+ coroot in the ambient space for the dual Cartan type.
437
+
438
+ EXAMPLES::
439
+
440
+ sage: ct = sage.combinat.root_system.type_dual.CartanType(CartanType(['F',4]))
441
+ sage: ct.root_system().ambient_space().simple_root(1)
442
+ (0, 1, -1, 0)
443
+
444
+ sage: ct.root_system().ambient_space().simple_roots()
445
+ Finite family {1: (0, 1, -1, 0), 2: (0, 0, 1, -1), 3: (0, 0, 0, 2), 4: (1, -1, -1, -1)}
446
+
447
+ sage: ct.dual().root_system().ambient_space().simple_coroots()
448
+ Finite family {1: (0, 1, -1, 0), 2: (0, 0, 1, -1), 3: (0, 0, 0, 2), 4: (1, -1, -1, -1)}
449
+
450
+ Note that this ambient space is isomorphic, but not equal, to
451
+ that obtained by constructing `F_4` dual by relabelling::
452
+
453
+ sage: ct = CartanType(['F',4]).dual(); ct
454
+ ['F', 4] relabelled by {1: 4, 2: 3, 3: 2, 4: 1}
455
+ sage: ct.root_system().ambient_space().simple_roots()
456
+ Finite family {1: (1/2, -1/2, -1/2, -1/2), 2: (0, 0, 0, 1), 3: (0, 0, 1, -1), 4: (0, 1, -1, 0)}
457
+ """
458
+ dual_coroot = self._dual_space.simple_coroot(i)
459
+ return self.sum_of_terms(dual_coroot)
460
+
461
+ @cached_method
462
+ def fundamental_weights(self):
463
+ """
464
+ Return the fundamental weights.
465
+
466
+ They are computed from the simple roots by inverting the
467
+ Cartan matrix. This is acceptable since this is only about
468
+ ambient spaces for finite Cartan types. Also, we do not have
469
+ to worry about the usual `GL_n` vs `SL_n` catch because type
470
+ `A` is self dual.
471
+
472
+ An alternative would have been to start from the fundamental
473
+ coweights in the dual ambient space, but those are not yet
474
+ implemented.
475
+
476
+ EXAMPLES::
477
+
478
+ sage: ct = sage.combinat.root_system.type_dual.CartanType(CartanType(['F',4]))
479
+ sage: L = ct.root_system().ambient_space()
480
+ sage: L.fundamental_weights() # needs sage.graphs
481
+ Finite family {1: (1, 1, 0, 0), 2: (2, 1, 1, 0), 3: (3, 1, 1, 1), 4: (2, 0, 0, 0)}
482
+
483
+ Note that this ambient space is isomorphic, but not equal, to
484
+ that obtained by constructing `F_4` dual by relabelling::
485
+
486
+ sage: ct = CartanType(['F',4]).dual(); ct
487
+ ['F', 4] relabelled by {1: 4, 2: 3, 3: 2, 4: 1}
488
+ sage: ct.root_system().ambient_space().fundamental_weights()
489
+ Finite family {1: (1, 0, 0, 0), 2: (3/2, 1/2, 1/2, 1/2), 3: (2, 1, 1, 0), 4: (1, 1, 0, 0)}
490
+ """
491
+ return self.fundamental_weights_from_simple_roots()
492
+
493
+ @lazy_attribute
494
+ def _plot_projection(self):
495
+ """
496
+ Return the default plot projection for ``self``.
497
+
498
+ If an ambient space uses barycentric projection, then so does
499
+ its dual.
500
+
501
+ .. SEEALSO::
502
+
503
+ - :meth:`sage.combinat.root_system.root_lattice_realizations.RootLatticeRealizations.ParentMethods._plot_projection`
504
+
505
+ EXAMPLES::
506
+
507
+ sage: ct = sage.combinat.root_system.type_dual.CartanType(CartanType(['G',2]))
508
+ sage: L = ct.root_system().ambient_space()
509
+ sage: L._plot_projection == L._plot_projection_barycentric
510
+ True
511
+
512
+ sage: L = RootSystem(['G',2]).coambient_space()
513
+ sage: L._plot_projection == L._plot_projection_barycentric
514
+ True
515
+ """
516
+ dual_space = self.cartan_type().dual().root_system().ambient_space(self.base_ring())
517
+ if dual_space._plot_projection == dual_space._plot_projection_barycentric:
518
+ return self._plot_projection_barycentric
519
+ else:
520
+ RootLatticeRealizations.ParentMethods.__dict__["_plot_projection"]
521
+
522
+
523
+ class CartanType_finite(CartanType, cartan_type.CartanType_finite):
524
+ AmbientSpace = AmbientSpace
525
+
526
+ ###########################################################################
527
+
528
+
529
+ class CartanType_affine(CartanType, cartan_type.CartanType_affine):
530
+ def classical(self):
531
+ """
532
+ Return the classical Cartan type associated with ``self`` (which should
533
+ be affine).
534
+
535
+ EXAMPLES::
536
+
537
+ sage: CartanType(['A',3,1]).dual().classical()
538
+ ['A', 3]
539
+ sage: CartanType(['B',3,1]).dual().classical()
540
+ ['C', 3]
541
+ sage: CartanType(['F',4,1]).dual().classical()
542
+ ['F', 4] relabelled by {1: 4, 2: 3, 3: 2, 4: 1}
543
+ sage: CartanType(['BC',4,2]).dual().classical()
544
+ ['B', 4]
545
+ """
546
+ return self.dual().classical().dual()
547
+
548
+ def basic_untwisted(self):
549
+ r"""
550
+ Return the basic untwisted Cartan type associated with this affine
551
+ Cartan type.
552
+
553
+ Given an affine type `X_n^{(r)}`, the basic untwisted type is `X_n`.
554
+ In other words, it is the classical Cartan type that is twisted to
555
+ obtain ``self``.
556
+
557
+ EXAMPLES::
558
+
559
+ sage: CartanType(['A', 7, 2]).basic_untwisted()
560
+ ['A', 7]
561
+ sage: CartanType(['E', 6, 2]).basic_untwisted()
562
+ ['E', 6]
563
+ sage: CartanType(['D', 4, 3]).basic_untwisted()
564
+ ['D', 4]
565
+ """
566
+ from . import cartan_type
567
+ if self.dual().type() == 'B':
568
+ return cartan_type.CartanType(['A', self.classical().rank()*2-1])
569
+ elif self.dual().type() == 'BC':
570
+ return cartan_type.CartanType(['A', self.classical().rank()*2])
571
+ elif self.dual().type() == 'C':
572
+ return cartan_type.CartanType(['D', self.classical().rank()+1])
573
+ elif self.dual().type() == 'F':
574
+ return cartan_type.CartanType(['E', 6])
575
+ elif self.dual().type() == 'G':
576
+ return cartan_type.CartanType(['D', 4])
577
+
578
+ def special_node(self):
579
+ """
580
+ Implement :meth:`CartanType_affine.special_node`.
581
+
582
+ The special node of the dual of an affine type `T` is the
583
+ special node of `T`.
584
+
585
+ EXAMPLES::
586
+
587
+ sage: CartanType(['A',3,1]).dual().special_node()
588
+ 0
589
+ sage: CartanType(['B',3,1]).dual().special_node()
590
+ 0
591
+ sage: CartanType(['F',4,1]).dual().special_node()
592
+ 0
593
+ sage: CartanType(['BC',4,2]).dual().special_node()
594
+ 0
595
+ """
596
+ return self.dual().special_node()
597
+
598
+ def _repr_(self, compact=False):
599
+ """
600
+ EXAMPLES::
601
+
602
+ sage: CartanType(['F', 4, 1]).dual()
603
+ ['F', 4, 1]^*
604
+
605
+ sage: CartanType(['F', 4, 1]).dual()._repr_(compact = True)
606
+ 'F4~*'
607
+ """
608
+ if self.options.notation == "Kac":
609
+ if self._type.type() == 'B':
610
+ if compact:
611
+ return 'A%s^2' % (self.classical().rank()*2-1)
612
+ return "['A', %s, 2]" % (self.classical().rank()*2-1)
613
+ elif self._type.type() == 'BC':
614
+ pass
615
+ elif self._type.type() == 'C':
616
+ if compact:
617
+ return 'D%s^2' % (self.rank())
618
+ return "['D', %s, 2]" % (self.rank())
619
+ elif self._type.type() == 'F':
620
+ if compact:
621
+ return 'E6^2'
622
+ return "['E', 6, 2]"
623
+ return CartanType._repr_(self, compact)
624
+
625
+ def _latex_(self):
626
+ r"""
627
+ Return a latex representation of ``self``.
628
+
629
+ EXAMPLES::
630
+
631
+ sage: latex(CartanType(['B',4,1]).dual())
632
+ B_{4}^{(1)\vee}
633
+ sage: latex(CartanType(['BC',4,2]).dual())
634
+ BC_{4}^{(2)\vee}
635
+ sage: latex(CartanType(['G',2,1]).dual())
636
+ G_2^{(1)\vee}
637
+
638
+ sage: CartanType.options['notation'] = 'Kac'
639
+ sage: latex(CartanType(['A',7,2]))
640
+ A_{7}^{(2)}
641
+ sage: latex(CartanType(['B',4,1]).dual())
642
+ A_{7}^{(2)}
643
+ sage: latex(CartanType(['A',8,2]))
644
+ A_{8}^{(2)}
645
+ sage: latex(CartanType(['A',8,2]).dual())
646
+ A_{8}^{(2)\dagger}
647
+ sage: latex(CartanType(['E',6,2]))
648
+ E_6^{(2)}
649
+ sage: latex(CartanType(['D',5,2]))
650
+ D_{5}^{(2)}
651
+ sage: CartanType.options._reset()
652
+ """
653
+ if self.options('notation') == "Kac":
654
+ if self._type.type() == 'B':
655
+ return "A_{%s}^{(2)}" % (self.classical().rank()*2-1)
656
+ elif self._type.type() == 'BC':
657
+ return "A_{%s}^{(2)\\dagger}" % (2*self.classical().rank())
658
+ elif self._type.type() == 'C':
659
+ return "D_{%s}^{(2)}" % (self.rank)()
660
+ elif self._type.type() == 'F':
661
+ return "E_6^{(2)}"
662
+ result = self._type._latex_()
663
+ import re
664
+ if re.match(r".*\^{\(\d\)}$", result):
665
+ return "%s%s}" % (result[:-1], self.options('dual_latex'))
666
+ else:
667
+ return "{%s}^%s" % (result, self.options('dual_latex'))
668
+
669
+ def _default_folded_cartan_type(self):
670
+ """
671
+ Return the default folded Cartan type.
672
+
673
+ EXAMPLES::
674
+
675
+ sage: CartanType(['A', 6, 2]).dual()._default_folded_cartan_type()
676
+ ['BC', 3, 2]^* as a folding of ['A', 5, 1]
677
+ sage: CartanType(['A', 5, 2])._default_folded_cartan_type()
678
+ ['B', 3, 1]^* as a folding of ['D', 4, 1]
679
+ sage: CartanType(['D', 4, 2])._default_folded_cartan_type()
680
+ ['C', 3, 1]^* as a folding of ['A', 5, 1]
681
+ sage: CartanType(['E', 6, 2])._default_folded_cartan_type()
682
+ ['F', 4, 1]^* as a folding of ['E', 6, 1]
683
+ sage: CartanType(['G', 2, 1]).dual()._default_folded_cartan_type()
684
+ ['G', 2, 1]^* as a folding of ['D', 4, 1]
685
+ """
686
+ from sage.combinat.root_system.type_folded import CartanTypeFolded
687
+ letter = self._type.type()
688
+ if letter == 'BC': # A_{2n}^{(2)\dagger}
689
+ n = self._type.classical().rank()
690
+ return CartanTypeFolded(self, ['A', 2*n - 1, 1],
691
+ [[0]] + [[i, 2*n-i] for i in range(1, n)] + [[n]])
692
+ if letter == 'B': # A_{2n-1}^{(2)}
693
+ n = self._type.classical().rank()
694
+ return CartanTypeFolded(self, ['D', n + 1, 1],
695
+ [[i] for i in range(n)] + [[n, n+1]])
696
+ if letter == 'C': # D_{n+1}^{(2)}
697
+ n = self._type.classical().rank()
698
+ return CartanTypeFolded(self, ['A', 2*n-1, 1],
699
+ [[0]] + [[i, 2*n-i] for i in range(1, n)] + [[n]])
700
+ if letter == 'F': # E_6^{(2)}
701
+ return CartanTypeFolded(self, ['E', 6, 1], [[0], [2], [4], [3, 5], [1, 6]])
702
+ if letter == 'G': # D_4^{(3)}
703
+ return CartanTypeFolded(self, ['D', 4, 1], [[0], [1, 3, 4], [2]])
704
+ return super()._default_folded_cartan_type()