passagemath-modules 10.6.31rc3__cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl

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

Potentially problematic release.


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

Files changed (806) hide show
  1. passagemath_modules-10.6.31rc3.dist-info/METADATA +281 -0
  2. passagemath_modules-10.6.31rc3.dist-info/RECORD +806 -0
  3. passagemath_modules-10.6.31rc3.dist-info/WHEEL +6 -0
  4. passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
  5. passagemath_modules.libs/libgfortran-e1b7dfc8.so.5.0.0 +0 -0
  6. passagemath_modules.libs/libgmp-93ebf16a.so.10.5.0 +0 -0
  7. passagemath_modules.libs/libgsl-e3525837.so.28.0.0 +0 -0
  8. passagemath_modules.libs/libmpc-c5c421e1.so.3.3.1 +0 -0
  9. passagemath_modules.libs/libmpfr-e0f11cf3.so.6.2.1 +0 -0
  10. passagemath_modules.libs/libopenblasp-r0-4c5b64b1.3.29.so +0 -0
  11. sage/algebras/all__sagemath_modules.py +20 -0
  12. sage/algebras/catalog.py +148 -0
  13. sage/algebras/clifford_algebra.py +3107 -0
  14. sage/algebras/clifford_algebra_element.cpython-314-aarch64-linux-gnu.so +0 -0
  15. sage/algebras/clifford_algebra_element.pxd +16 -0
  16. sage/algebras/clifford_algebra_element.pyx +997 -0
  17. sage/algebras/commutative_dga.py +4252 -0
  18. sage/algebras/exterior_algebra_groebner.cpython-314-aarch64-linux-gnu.so +0 -0
  19. sage/algebras/exterior_algebra_groebner.pxd +55 -0
  20. sage/algebras/exterior_algebra_groebner.pyx +727 -0
  21. sage/algebras/finite_dimensional_algebras/all.py +2 -0
  22. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +1029 -0
  23. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-314-aarch64-linux-gnu.so +0 -0
  24. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +12 -0
  25. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +706 -0
  26. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_ideal.py +196 -0
  27. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_morphism.py +255 -0
  28. sage/algebras/finite_gca.py +528 -0
  29. sage/algebras/group_algebra.py +232 -0
  30. sage/algebras/lie_algebras/abelian.py +197 -0
  31. sage/algebras/lie_algebras/affine_lie_algebra.py +1213 -0
  32. sage/algebras/lie_algebras/all.py +25 -0
  33. sage/algebras/lie_algebras/all__sagemath_modules.py +1 -0
  34. sage/algebras/lie_algebras/bch.py +177 -0
  35. sage/algebras/lie_algebras/bgg_dual_module.py +1184 -0
  36. sage/algebras/lie_algebras/bgg_resolution.py +232 -0
  37. sage/algebras/lie_algebras/center_uea.py +767 -0
  38. sage/algebras/lie_algebras/classical_lie_algebra.py +2516 -0
  39. sage/algebras/lie_algebras/examples.py +683 -0
  40. sage/algebras/lie_algebras/free_lie_algebra.py +973 -0
  41. sage/algebras/lie_algebras/heisenberg.py +820 -0
  42. sage/algebras/lie_algebras/lie_algebra.py +1562 -0
  43. sage/algebras/lie_algebras/lie_algebra_element.cpython-314-aarch64-linux-gnu.so +0 -0
  44. sage/algebras/lie_algebras/lie_algebra_element.pxd +68 -0
  45. sage/algebras/lie_algebras/lie_algebra_element.pyx +2122 -0
  46. sage/algebras/lie_algebras/morphism.py +661 -0
  47. sage/algebras/lie_algebras/nilpotent_lie_algebra.py +457 -0
  48. sage/algebras/lie_algebras/onsager.py +1324 -0
  49. sage/algebras/lie_algebras/poincare_birkhoff_witt.py +816 -0
  50. sage/algebras/lie_algebras/quotient.py +462 -0
  51. sage/algebras/lie_algebras/rank_two_heisenberg_virasoro.py +355 -0
  52. sage/algebras/lie_algebras/representation.py +1040 -0
  53. sage/algebras/lie_algebras/structure_coefficients.py +459 -0
  54. sage/algebras/lie_algebras/subalgebra.py +967 -0
  55. sage/algebras/lie_algebras/symplectic_derivation.py +289 -0
  56. sage/algebras/lie_algebras/verma_module.py +1630 -0
  57. sage/algebras/lie_algebras/virasoro.py +1186 -0
  58. sage/algebras/octonion_algebra.cpython-314-aarch64-linux-gnu.so +0 -0
  59. sage/algebras/octonion_algebra.pxd +20 -0
  60. sage/algebras/octonion_algebra.pyx +987 -0
  61. sage/algebras/orlik_solomon.py +907 -0
  62. sage/algebras/orlik_terao.py +779 -0
  63. sage/algebras/steenrod/all.py +7 -0
  64. sage/algebras/steenrod/steenrod_algebra.py +4258 -0
  65. sage/algebras/steenrod/steenrod_algebra_bases.py +1179 -0
  66. sage/algebras/steenrod/steenrod_algebra_misc.py +1167 -0
  67. sage/algebras/steenrod/steenrod_algebra_mult.py +954 -0
  68. sage/algebras/weyl_algebra.py +1126 -0
  69. sage/all__sagemath_modules.py +62 -0
  70. sage/calculus/all__sagemath_modules.py +19 -0
  71. sage/calculus/expr.py +205 -0
  72. sage/calculus/integration.cpython-314-aarch64-linux-gnu.so +0 -0
  73. sage/calculus/integration.pyx +698 -0
  74. sage/calculus/interpolation.cpython-314-aarch64-linux-gnu.so +0 -0
  75. sage/calculus/interpolation.pxd +13 -0
  76. sage/calculus/interpolation.pyx +387 -0
  77. sage/calculus/interpolators.cpython-314-aarch64-linux-gnu.so +0 -0
  78. sage/calculus/interpolators.pyx +326 -0
  79. sage/calculus/ode.cpython-314-aarch64-linux-gnu.so +0 -0
  80. sage/calculus/ode.pxd +5 -0
  81. sage/calculus/ode.pyx +610 -0
  82. sage/calculus/riemann.cpython-314-aarch64-linux-gnu.so +0 -0
  83. sage/calculus/riemann.pyx +1521 -0
  84. sage/calculus/test_sympy.py +201 -0
  85. sage/calculus/transforms/all.py +7 -0
  86. sage/calculus/transforms/dft.py +844 -0
  87. sage/calculus/transforms/dwt.cpython-314-aarch64-linux-gnu.so +0 -0
  88. sage/calculus/transforms/dwt.pxd +7 -0
  89. sage/calculus/transforms/dwt.pyx +160 -0
  90. sage/calculus/transforms/fft.cpython-314-aarch64-linux-gnu.so +0 -0
  91. sage/calculus/transforms/fft.pxd +12 -0
  92. sage/calculus/transforms/fft.pyx +487 -0
  93. sage/calculus/wester.py +662 -0
  94. sage/coding/abstract_code.py +1108 -0
  95. sage/coding/ag_code.py +868 -0
  96. sage/coding/ag_code_decoders.cpython-314-aarch64-linux-gnu.so +0 -0
  97. sage/coding/ag_code_decoders.pyx +2639 -0
  98. sage/coding/all.py +15 -0
  99. sage/coding/bch_code.py +494 -0
  100. sage/coding/binary_code.cpython-314-aarch64-linux-gnu.so +0 -0
  101. sage/coding/binary_code.pxd +124 -0
  102. sage/coding/binary_code.pyx +4139 -0
  103. sage/coding/bounds_catalog.py +43 -0
  104. sage/coding/channel.py +819 -0
  105. sage/coding/channels_catalog.py +29 -0
  106. sage/coding/code_bounds.py +755 -0
  107. sage/coding/code_constructions.py +804 -0
  108. sage/coding/codes_catalog.py +111 -0
  109. sage/coding/cyclic_code.py +1329 -0
  110. sage/coding/databases.py +316 -0
  111. sage/coding/decoder.py +373 -0
  112. sage/coding/decoders_catalog.py +88 -0
  113. sage/coding/delsarte_bounds.py +709 -0
  114. sage/coding/encoder.py +390 -0
  115. sage/coding/encoders_catalog.py +64 -0
  116. sage/coding/extended_code.py +468 -0
  117. sage/coding/gabidulin_code.py +1058 -0
  118. sage/coding/golay_code.py +404 -0
  119. sage/coding/goppa_code.py +441 -0
  120. sage/coding/grs_code.py +2371 -0
  121. sage/coding/guava.py +107 -0
  122. sage/coding/guruswami_sudan/all.py +1 -0
  123. sage/coding/guruswami_sudan/gs_decoder.py +897 -0
  124. sage/coding/guruswami_sudan/interpolation.py +409 -0
  125. sage/coding/guruswami_sudan/utils.py +176 -0
  126. sage/coding/hamming_code.py +176 -0
  127. sage/coding/information_set_decoder.py +1032 -0
  128. sage/coding/kasami_codes.cpython-314-aarch64-linux-gnu.so +0 -0
  129. sage/coding/kasami_codes.pyx +351 -0
  130. sage/coding/linear_code.py +3067 -0
  131. sage/coding/linear_code_no_metric.py +1354 -0
  132. sage/coding/linear_rank_metric.py +961 -0
  133. sage/coding/parity_check_code.py +353 -0
  134. sage/coding/punctured_code.py +719 -0
  135. sage/coding/reed_muller_code.py +999 -0
  136. sage/coding/self_dual_codes.py +942 -0
  137. sage/coding/source_coding/all.py +2 -0
  138. sage/coding/source_coding/huffman.py +553 -0
  139. sage/coding/subfield_subcode.py +423 -0
  140. sage/coding/two_weight_db.py +399 -0
  141. sage/combinat/all__sagemath_modules.py +7 -0
  142. sage/combinat/cartesian_product.py +347 -0
  143. sage/combinat/family.py +11 -0
  144. sage/combinat/free_module.py +1977 -0
  145. sage/combinat/root_system/all.py +147 -0
  146. sage/combinat/root_system/ambient_space.py +527 -0
  147. sage/combinat/root_system/associahedron.py +471 -0
  148. sage/combinat/root_system/braid_move_calculator.py +143 -0
  149. sage/combinat/root_system/braid_orbit.cpython-314-aarch64-linux-gnu.so +0 -0
  150. sage/combinat/root_system/braid_orbit.pyx +144 -0
  151. sage/combinat/root_system/branching_rules.py +2301 -0
  152. sage/combinat/root_system/cartan_matrix.py +1245 -0
  153. sage/combinat/root_system/cartan_type.py +3069 -0
  154. sage/combinat/root_system/coxeter_group.py +162 -0
  155. sage/combinat/root_system/coxeter_matrix.py +1261 -0
  156. sage/combinat/root_system/coxeter_type.py +681 -0
  157. sage/combinat/root_system/dynkin_diagram.py +900 -0
  158. sage/combinat/root_system/extended_affine_weyl_group.py +2993 -0
  159. sage/combinat/root_system/fundamental_group.py +795 -0
  160. sage/combinat/root_system/hecke_algebra_representation.py +1203 -0
  161. sage/combinat/root_system/integrable_representations.py +1227 -0
  162. sage/combinat/root_system/non_symmetric_macdonald_polynomials.py +1965 -0
  163. sage/combinat/root_system/pieri_factors.py +1147 -0
  164. sage/combinat/root_system/plot.py +1615 -0
  165. sage/combinat/root_system/root_lattice_realization_algebras.py +1214 -0
  166. sage/combinat/root_system/root_lattice_realizations.py +4628 -0
  167. sage/combinat/root_system/root_space.py +487 -0
  168. sage/combinat/root_system/root_system.py +882 -0
  169. sage/combinat/root_system/type_A.py +348 -0
  170. sage/combinat/root_system/type_A_affine.py +227 -0
  171. sage/combinat/root_system/type_A_infinity.py +241 -0
  172. sage/combinat/root_system/type_B.py +347 -0
  173. sage/combinat/root_system/type_BC_affine.py +287 -0
  174. sage/combinat/root_system/type_B_affine.py +216 -0
  175. sage/combinat/root_system/type_C.py +317 -0
  176. sage/combinat/root_system/type_C_affine.py +188 -0
  177. sage/combinat/root_system/type_D.py +357 -0
  178. sage/combinat/root_system/type_D_affine.py +208 -0
  179. sage/combinat/root_system/type_E.py +641 -0
  180. sage/combinat/root_system/type_E_affine.py +231 -0
  181. sage/combinat/root_system/type_F.py +387 -0
  182. sage/combinat/root_system/type_F_affine.py +137 -0
  183. sage/combinat/root_system/type_G.py +293 -0
  184. sage/combinat/root_system/type_G_affine.py +132 -0
  185. sage/combinat/root_system/type_H.py +105 -0
  186. sage/combinat/root_system/type_I.py +110 -0
  187. sage/combinat/root_system/type_Q.py +150 -0
  188. sage/combinat/root_system/type_affine.py +509 -0
  189. sage/combinat/root_system/type_dual.py +704 -0
  190. sage/combinat/root_system/type_folded.py +301 -0
  191. sage/combinat/root_system/type_marked.py +748 -0
  192. sage/combinat/root_system/type_reducible.py +601 -0
  193. sage/combinat/root_system/type_relabel.py +730 -0
  194. sage/combinat/root_system/type_super_A.py +837 -0
  195. sage/combinat/root_system/weight_lattice_realizations.py +1188 -0
  196. sage/combinat/root_system/weight_space.py +639 -0
  197. sage/combinat/root_system/weyl_characters.py +2238 -0
  198. sage/crypto/__init__.py +4 -0
  199. sage/crypto/all.py +28 -0
  200. sage/crypto/block_cipher/all.py +7 -0
  201. sage/crypto/block_cipher/des.py +1065 -0
  202. sage/crypto/block_cipher/miniaes.py +2171 -0
  203. sage/crypto/block_cipher/present.py +909 -0
  204. sage/crypto/block_cipher/sdes.py +1527 -0
  205. sage/crypto/boolean_function.cpython-314-aarch64-linux-gnu.so +0 -0
  206. sage/crypto/boolean_function.pxd +10 -0
  207. sage/crypto/boolean_function.pyx +1487 -0
  208. sage/crypto/cipher.py +78 -0
  209. sage/crypto/classical.py +3668 -0
  210. sage/crypto/classical_cipher.py +569 -0
  211. sage/crypto/cryptosystem.py +387 -0
  212. sage/crypto/key_exchange/all.py +7 -0
  213. sage/crypto/key_exchange/catalog.py +24 -0
  214. sage/crypto/key_exchange/diffie_hellman.py +323 -0
  215. sage/crypto/key_exchange/key_exchange_scheme.py +107 -0
  216. sage/crypto/lattice.py +312 -0
  217. sage/crypto/lfsr.py +295 -0
  218. sage/crypto/lwe.py +840 -0
  219. sage/crypto/mq/__init__.py +4 -0
  220. sage/crypto/mq/mpolynomialsystemgenerator.py +204 -0
  221. sage/crypto/mq/rijndael_gf.py +2345 -0
  222. sage/crypto/mq/sbox.py +7 -0
  223. sage/crypto/mq/sr.py +3344 -0
  224. sage/crypto/public_key/all.py +5 -0
  225. sage/crypto/public_key/blum_goldwasser.py +776 -0
  226. sage/crypto/sbox.cpython-314-aarch64-linux-gnu.so +0 -0
  227. sage/crypto/sbox.pyx +2090 -0
  228. sage/crypto/sboxes.py +2090 -0
  229. sage/crypto/stream.py +390 -0
  230. sage/crypto/stream_cipher.py +297 -0
  231. sage/crypto/util.py +519 -0
  232. sage/ext/all__sagemath_modules.py +1 -0
  233. sage/ext/interpreters/__init__.py +1 -0
  234. sage/ext/interpreters/all__sagemath_modules.py +2 -0
  235. sage/ext/interpreters/wrapper_cc.cpython-314-aarch64-linux-gnu.so +0 -0
  236. sage/ext/interpreters/wrapper_cc.pxd +30 -0
  237. sage/ext/interpreters/wrapper_cc.pyx +252 -0
  238. sage/ext/interpreters/wrapper_cdf.cpython-314-aarch64-linux-gnu.so +0 -0
  239. sage/ext/interpreters/wrapper_cdf.pxd +26 -0
  240. sage/ext/interpreters/wrapper_cdf.pyx +245 -0
  241. sage/ext/interpreters/wrapper_rdf.cpython-314-aarch64-linux-gnu.so +0 -0
  242. sage/ext/interpreters/wrapper_rdf.pxd +23 -0
  243. sage/ext/interpreters/wrapper_rdf.pyx +221 -0
  244. sage/ext/interpreters/wrapper_rr.cpython-314-aarch64-linux-gnu.so +0 -0
  245. sage/ext/interpreters/wrapper_rr.pxd +28 -0
  246. sage/ext/interpreters/wrapper_rr.pyx +335 -0
  247. sage/geometry/all__sagemath_modules.py +5 -0
  248. sage/geometry/toric_lattice.py +1745 -0
  249. sage/geometry/toric_lattice_element.cpython-314-aarch64-linux-gnu.so +0 -0
  250. sage/geometry/toric_lattice_element.pyx +432 -0
  251. sage/groups/abelian_gps/abelian_group.py +1925 -0
  252. sage/groups/abelian_gps/abelian_group_element.py +164 -0
  253. sage/groups/abelian_gps/all__sagemath_modules.py +5 -0
  254. sage/groups/abelian_gps/dual_abelian_group.py +421 -0
  255. sage/groups/abelian_gps/dual_abelian_group_element.py +179 -0
  256. sage/groups/abelian_gps/element_base.py +341 -0
  257. sage/groups/abelian_gps/values.py +488 -0
  258. sage/groups/additive_abelian/additive_abelian_group.py +476 -0
  259. sage/groups/additive_abelian/additive_abelian_wrapper.py +857 -0
  260. sage/groups/additive_abelian/all.py +4 -0
  261. sage/groups/additive_abelian/qmodnz.py +231 -0
  262. sage/groups/additive_abelian/qmodnz_element.py +349 -0
  263. sage/groups/affine_gps/affine_group.py +535 -0
  264. sage/groups/affine_gps/all.py +1 -0
  265. sage/groups/affine_gps/catalog.py +17 -0
  266. sage/groups/affine_gps/euclidean_group.py +246 -0
  267. sage/groups/affine_gps/group_element.py +562 -0
  268. sage/groups/all__sagemath_modules.py +12 -0
  269. sage/groups/galois_group.py +479 -0
  270. sage/groups/matrix_gps/all.py +4 -0
  271. sage/groups/matrix_gps/all__sagemath_modules.py +13 -0
  272. sage/groups/matrix_gps/catalog.py +26 -0
  273. sage/groups/matrix_gps/coxeter_group.py +927 -0
  274. sage/groups/matrix_gps/finitely_generated.py +487 -0
  275. sage/groups/matrix_gps/group_element.cpython-314-aarch64-linux-gnu.so +0 -0
  276. sage/groups/matrix_gps/group_element.pxd +11 -0
  277. sage/groups/matrix_gps/group_element.pyx +431 -0
  278. sage/groups/matrix_gps/linear.py +440 -0
  279. sage/groups/matrix_gps/matrix_group.py +617 -0
  280. sage/groups/matrix_gps/named_group.py +296 -0
  281. sage/groups/matrix_gps/orthogonal.py +544 -0
  282. sage/groups/matrix_gps/symplectic.py +251 -0
  283. sage/groups/matrix_gps/unitary.py +436 -0
  284. sage/groups/misc_gps/all__sagemath_modules.py +1 -0
  285. sage/groups/misc_gps/argument_groups.py +1905 -0
  286. sage/groups/misc_gps/imaginary_groups.py +479 -0
  287. sage/groups/perm_gps/all__sagemath_modules.py +1 -0
  288. sage/groups/perm_gps/partn_ref/all__sagemath_modules.py +1 -0
  289. sage/groups/perm_gps/partn_ref/refinement_binary.cpython-314-aarch64-linux-gnu.so +0 -0
  290. sage/groups/perm_gps/partn_ref/refinement_binary.pxd +41 -0
  291. sage/groups/perm_gps/partn_ref/refinement_binary.pyx +1167 -0
  292. sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-314-aarch64-linux-gnu.so +0 -0
  293. sage/groups/perm_gps/partn_ref/refinement_matrices.pxd +31 -0
  294. sage/groups/perm_gps/partn_ref/refinement_matrices.pyx +385 -0
  295. sage/homology/algebraic_topological_model.py +595 -0
  296. sage/homology/all.py +2 -0
  297. sage/homology/all__sagemath_modules.py +8 -0
  298. sage/homology/chain_complex.py +2148 -0
  299. sage/homology/chain_complex_homspace.py +165 -0
  300. sage/homology/chain_complex_morphism.py +629 -0
  301. sage/homology/chain_homotopy.py +604 -0
  302. sage/homology/chains.py +653 -0
  303. sage/homology/free_resolution.py +923 -0
  304. sage/homology/graded_resolution.py +567 -0
  305. sage/homology/hochschild_complex.py +756 -0
  306. sage/homology/homology_group.py +188 -0
  307. sage/homology/homology_morphism.py +422 -0
  308. sage/homology/homology_vector_space_with_basis.py +1454 -0
  309. sage/homology/koszul_complex.py +169 -0
  310. sage/homology/matrix_utils.py +205 -0
  311. sage/libs/all__sagemath_modules.py +1 -0
  312. sage/libs/gsl/__init__.py +1 -0
  313. sage/libs/gsl/airy.pxd +56 -0
  314. sage/libs/gsl/all.pxd +66 -0
  315. sage/libs/gsl/array.cpython-314-aarch64-linux-gnu.so +0 -0
  316. sage/libs/gsl/array.pxd +5 -0
  317. sage/libs/gsl/array.pyx +102 -0
  318. sage/libs/gsl/bessel.pxd +208 -0
  319. sage/libs/gsl/blas.pxd +116 -0
  320. sage/libs/gsl/blas_types.pxd +34 -0
  321. sage/libs/gsl/block.pxd +52 -0
  322. sage/libs/gsl/chebyshev.pxd +37 -0
  323. sage/libs/gsl/clausen.pxd +12 -0
  324. sage/libs/gsl/combination.pxd +47 -0
  325. sage/libs/gsl/complex.pxd +151 -0
  326. sage/libs/gsl/coulomb.pxd +30 -0
  327. sage/libs/gsl/coupling.pxd +21 -0
  328. sage/libs/gsl/dawson.pxd +12 -0
  329. sage/libs/gsl/debye.pxd +24 -0
  330. sage/libs/gsl/dilog.pxd +14 -0
  331. sage/libs/gsl/eigen.pxd +46 -0
  332. sage/libs/gsl/elementary.pxd +12 -0
  333. sage/libs/gsl/ellint.pxd +48 -0
  334. sage/libs/gsl/elljac.pxd +8 -0
  335. sage/libs/gsl/erf.pxd +32 -0
  336. sage/libs/gsl/errno.pxd +26 -0
  337. sage/libs/gsl/exp.pxd +44 -0
  338. sage/libs/gsl/expint.pxd +44 -0
  339. sage/libs/gsl/fermi_dirac.pxd +44 -0
  340. sage/libs/gsl/fft.pxd +121 -0
  341. sage/libs/gsl/fit.pxd +50 -0
  342. sage/libs/gsl/gamma.pxd +94 -0
  343. sage/libs/gsl/gegenbauer.pxd +26 -0
  344. sage/libs/gsl/histogram.pxd +176 -0
  345. sage/libs/gsl/hyperg.pxd +52 -0
  346. sage/libs/gsl/integration.pxd +69 -0
  347. sage/libs/gsl/interp.pxd +109 -0
  348. sage/libs/gsl/laguerre.pxd +24 -0
  349. sage/libs/gsl/lambert.pxd +16 -0
  350. sage/libs/gsl/legendre.pxd +90 -0
  351. sage/libs/gsl/linalg.pxd +185 -0
  352. sage/libs/gsl/log.pxd +26 -0
  353. sage/libs/gsl/math.pxd +43 -0
  354. sage/libs/gsl/matrix.pxd +143 -0
  355. sage/libs/gsl/matrix_complex.pxd +130 -0
  356. sage/libs/gsl/min.pxd +67 -0
  357. sage/libs/gsl/monte.pxd +56 -0
  358. sage/libs/gsl/ntuple.pxd +32 -0
  359. sage/libs/gsl/odeiv.pxd +70 -0
  360. sage/libs/gsl/permutation.pxd +78 -0
  361. sage/libs/gsl/poly.pxd +40 -0
  362. sage/libs/gsl/pow_int.pxd +12 -0
  363. sage/libs/gsl/psi.pxd +28 -0
  364. sage/libs/gsl/qrng.pxd +29 -0
  365. sage/libs/gsl/random.pxd +257 -0
  366. sage/libs/gsl/rng.pxd +100 -0
  367. sage/libs/gsl/roots.pxd +72 -0
  368. sage/libs/gsl/sort.pxd +36 -0
  369. sage/libs/gsl/statistics.pxd +59 -0
  370. sage/libs/gsl/sum.pxd +55 -0
  371. sage/libs/gsl/synchrotron.pxd +16 -0
  372. sage/libs/gsl/transport.pxd +24 -0
  373. sage/libs/gsl/trig.pxd +58 -0
  374. sage/libs/gsl/types.pxd +137 -0
  375. sage/libs/gsl/vector.pxd +101 -0
  376. sage/libs/gsl/vector_complex.pxd +83 -0
  377. sage/libs/gsl/wavelet.pxd +49 -0
  378. sage/libs/gsl/zeta.pxd +28 -0
  379. sage/libs/mpc/__init__.pxd +114 -0
  380. sage/libs/mpc/types.pxd +28 -0
  381. sage/libs/mpfr/__init__.pxd +299 -0
  382. sage/libs/mpfr/types.pxd +26 -0
  383. sage/libs/mpmath/__init__.py +1 -0
  384. sage/libs/mpmath/all.py +27 -0
  385. sage/libs/mpmath/all__sagemath_modules.py +1 -0
  386. sage/libs/mpmath/utils.cpython-314-aarch64-linux-gnu.so +0 -0
  387. sage/libs/mpmath/utils.pxd +4 -0
  388. sage/libs/mpmath/utils.pyx +319 -0
  389. sage/matrix/action.cpython-314-aarch64-linux-gnu.so +0 -0
  390. sage/matrix/action.pxd +26 -0
  391. sage/matrix/action.pyx +596 -0
  392. sage/matrix/all.py +9 -0
  393. sage/matrix/args.cpython-314-aarch64-linux-gnu.so +0 -0
  394. sage/matrix/args.pxd +144 -0
  395. sage/matrix/args.pyx +1668 -0
  396. sage/matrix/benchmark.py +1258 -0
  397. sage/matrix/berlekamp_massey.py +95 -0
  398. sage/matrix/compute_J_ideal.py +926 -0
  399. sage/matrix/constructor.cpython-314-aarch64-linux-gnu.so +0 -0
  400. sage/matrix/constructor.pyx +750 -0
  401. sage/matrix/docs.py +430 -0
  402. sage/matrix/echelon_matrix.cpython-314-aarch64-linux-gnu.so +0 -0
  403. sage/matrix/echelon_matrix.pyx +155 -0
  404. sage/matrix/matrix.pxd +2 -0
  405. sage/matrix/matrix0.cpython-314-aarch64-linux-gnu.so +0 -0
  406. sage/matrix/matrix0.pxd +68 -0
  407. sage/matrix/matrix0.pyx +6324 -0
  408. sage/matrix/matrix1.cpython-314-aarch64-linux-gnu.so +0 -0
  409. sage/matrix/matrix1.pxd +8 -0
  410. sage/matrix/matrix1.pyx +2851 -0
  411. sage/matrix/matrix2.cpython-314-aarch64-linux-gnu.so +0 -0
  412. sage/matrix/matrix2.pxd +25 -0
  413. sage/matrix/matrix2.pyx +20181 -0
  414. sage/matrix/matrix_cdv.cpython-314-aarch64-linux-gnu.so +0 -0
  415. sage/matrix/matrix_cdv.pxd +4 -0
  416. sage/matrix/matrix_cdv.pyx +93 -0
  417. sage/matrix/matrix_complex_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  418. sage/matrix/matrix_complex_double_dense.pxd +5 -0
  419. sage/matrix/matrix_complex_double_dense.pyx +98 -0
  420. sage/matrix/matrix_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  421. sage/matrix/matrix_dense.pxd +5 -0
  422. sage/matrix/matrix_dense.pyx +343 -0
  423. sage/matrix/matrix_domain_dense.pxd +5 -0
  424. sage/matrix/matrix_domain_sparse.pxd +5 -0
  425. sage/matrix/matrix_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  426. sage/matrix/matrix_double_dense.pxd +7 -0
  427. sage/matrix/matrix_double_dense.pyx +3906 -0
  428. sage/matrix/matrix_double_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  429. sage/matrix/matrix_double_sparse.pxd +6 -0
  430. sage/matrix/matrix_double_sparse.pyx +248 -0
  431. sage/matrix/matrix_generic_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  432. sage/matrix/matrix_generic_dense.pxd +7 -0
  433. sage/matrix/matrix_generic_dense.pyx +354 -0
  434. sage/matrix/matrix_generic_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  435. sage/matrix/matrix_generic_sparse.pxd +7 -0
  436. sage/matrix/matrix_generic_sparse.pyx +461 -0
  437. sage/matrix/matrix_laurent_mpolynomial_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  438. sage/matrix/matrix_laurent_mpolynomial_dense.pxd +5 -0
  439. sage/matrix/matrix_laurent_mpolynomial_dense.pyx +115 -0
  440. sage/matrix/matrix_misc.py +313 -0
  441. sage/matrix/matrix_numpy_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  442. sage/matrix/matrix_numpy_dense.pxd +14 -0
  443. sage/matrix/matrix_numpy_dense.pyx +450 -0
  444. sage/matrix/matrix_numpy_integer_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  445. sage/matrix/matrix_numpy_integer_dense.pxd +7 -0
  446. sage/matrix/matrix_numpy_integer_dense.pyx +59 -0
  447. sage/matrix/matrix_polynomial_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  448. sage/matrix/matrix_polynomial_dense.pxd +5 -0
  449. sage/matrix/matrix_polynomial_dense.pyx +5341 -0
  450. sage/matrix/matrix_real_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  451. sage/matrix/matrix_real_double_dense.pxd +7 -0
  452. sage/matrix/matrix_real_double_dense.pyx +122 -0
  453. sage/matrix/matrix_space.py +2848 -0
  454. sage/matrix/matrix_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  455. sage/matrix/matrix_sparse.pxd +5 -0
  456. sage/matrix/matrix_sparse.pyx +1222 -0
  457. sage/matrix/matrix_window.cpython-314-aarch64-linux-gnu.so +0 -0
  458. sage/matrix/matrix_window.pxd +37 -0
  459. sage/matrix/matrix_window.pyx +242 -0
  460. sage/matrix/misc_mpfr.cpython-314-aarch64-linux-gnu.so +0 -0
  461. sage/matrix/misc_mpfr.pyx +80 -0
  462. sage/matrix/operation_table.py +1182 -0
  463. sage/matrix/special.py +3666 -0
  464. sage/matrix/strassen.cpython-314-aarch64-linux-gnu.so +0 -0
  465. sage/matrix/strassen.pyx +851 -0
  466. sage/matrix/symplectic_basis.py +541 -0
  467. sage/matrix/template.pxd +6 -0
  468. sage/matrix/tests.py +71 -0
  469. sage/matroids/advanced.py +77 -0
  470. sage/matroids/all.py +13 -0
  471. sage/matroids/basis_exchange_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  472. sage/matroids/basis_exchange_matroid.pxd +96 -0
  473. sage/matroids/basis_exchange_matroid.pyx +2344 -0
  474. sage/matroids/basis_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  475. sage/matroids/basis_matroid.pxd +45 -0
  476. sage/matroids/basis_matroid.pyx +1217 -0
  477. sage/matroids/catalog.py +44 -0
  478. sage/matroids/chow_ring.py +473 -0
  479. sage/matroids/chow_ring_ideal.py +849 -0
  480. sage/matroids/circuit_closures_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  481. sage/matroids/circuit_closures_matroid.pxd +16 -0
  482. sage/matroids/circuit_closures_matroid.pyx +559 -0
  483. sage/matroids/circuits_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  484. sage/matroids/circuits_matroid.pxd +38 -0
  485. sage/matroids/circuits_matroid.pyx +947 -0
  486. sage/matroids/constructor.py +1086 -0
  487. sage/matroids/database_collections.py +365 -0
  488. sage/matroids/database_matroids.py +5338 -0
  489. sage/matroids/dual_matroid.py +583 -0
  490. sage/matroids/extension.cpython-314-aarch64-linux-gnu.so +0 -0
  491. sage/matroids/extension.pxd +34 -0
  492. sage/matroids/extension.pyx +519 -0
  493. sage/matroids/flats_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  494. sage/matroids/flats_matroid.pxd +28 -0
  495. sage/matroids/flats_matroid.pyx +715 -0
  496. sage/matroids/gammoid.py +600 -0
  497. sage/matroids/graphic_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  498. sage/matroids/graphic_matroid.pxd +39 -0
  499. sage/matroids/graphic_matroid.pyx +2024 -0
  500. sage/matroids/lean_matrix.cpython-314-aarch64-linux-gnu.so +0 -0
  501. sage/matroids/lean_matrix.pxd +126 -0
  502. sage/matroids/lean_matrix.pyx +3667 -0
  503. sage/matroids/linear_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  504. sage/matroids/linear_matroid.pxd +180 -0
  505. sage/matroids/linear_matroid.pyx +6649 -0
  506. sage/matroids/matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  507. sage/matroids/matroid.pxd +243 -0
  508. sage/matroids/matroid.pyx +8759 -0
  509. sage/matroids/matroids_catalog.py +190 -0
  510. sage/matroids/matroids_plot_helpers.py +890 -0
  511. sage/matroids/minor_matroid.py +480 -0
  512. sage/matroids/minorfix.h +9 -0
  513. sage/matroids/named_matroids.py +5 -0
  514. sage/matroids/rank_matroid.py +268 -0
  515. sage/matroids/set_system.cpython-314-aarch64-linux-gnu.so +0 -0
  516. sage/matroids/set_system.pxd +38 -0
  517. sage/matroids/set_system.pyx +800 -0
  518. sage/matroids/transversal_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  519. sage/matroids/transversal_matroid.pxd +14 -0
  520. sage/matroids/transversal_matroid.pyx +893 -0
  521. sage/matroids/union_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  522. sage/matroids/union_matroid.pxd +20 -0
  523. sage/matroids/union_matroid.pyx +331 -0
  524. sage/matroids/unpickling.cpython-314-aarch64-linux-gnu.so +0 -0
  525. sage/matroids/unpickling.pyx +843 -0
  526. sage/matroids/utilities.py +809 -0
  527. sage/misc/all__sagemath_modules.py +20 -0
  528. sage/misc/c3.cpython-314-aarch64-linux-gnu.so +0 -0
  529. sage/misc/c3.pyx +238 -0
  530. sage/misc/compat.py +87 -0
  531. sage/misc/element_with_label.py +173 -0
  532. sage/misc/func_persist.py +79 -0
  533. sage/misc/pickle_old.cpython-314-aarch64-linux-gnu.so +0 -0
  534. sage/misc/pickle_old.pyx +19 -0
  535. sage/misc/proof.py +7 -0
  536. sage/misc/replace_dot_all.py +472 -0
  537. sage/misc/sagedoc_conf.py +168 -0
  538. sage/misc/sphinxify.py +167 -0
  539. sage/misc/test_class_pickling.py +85 -0
  540. sage/modules/all.py +42 -0
  541. sage/modules/complex_double_vector.py +25 -0
  542. sage/modules/diamond_cutting.py +380 -0
  543. sage/modules/fg_pid/all.py +1 -0
  544. sage/modules/fg_pid/fgp_element.py +456 -0
  545. sage/modules/fg_pid/fgp_module.py +2091 -0
  546. sage/modules/fg_pid/fgp_morphism.py +550 -0
  547. sage/modules/filtered_vector_space.py +1271 -0
  548. sage/modules/finite_submodule_iter.cpython-314-aarch64-linux-gnu.so +0 -0
  549. sage/modules/finite_submodule_iter.pxd +27 -0
  550. sage/modules/finite_submodule_iter.pyx +452 -0
  551. sage/modules/fp_graded/all.py +1 -0
  552. sage/modules/fp_graded/element.py +346 -0
  553. sage/modules/fp_graded/free_element.py +298 -0
  554. sage/modules/fp_graded/free_homspace.py +53 -0
  555. sage/modules/fp_graded/free_module.py +1060 -0
  556. sage/modules/fp_graded/free_morphism.py +217 -0
  557. sage/modules/fp_graded/homspace.py +563 -0
  558. sage/modules/fp_graded/module.py +1340 -0
  559. sage/modules/fp_graded/morphism.py +1990 -0
  560. sage/modules/fp_graded/steenrod/all.py +1 -0
  561. sage/modules/fp_graded/steenrod/homspace.py +65 -0
  562. sage/modules/fp_graded/steenrod/module.py +477 -0
  563. sage/modules/fp_graded/steenrod/morphism.py +404 -0
  564. sage/modules/fp_graded/steenrod/profile.py +241 -0
  565. sage/modules/free_module.py +8447 -0
  566. sage/modules/free_module_element.cpython-314-aarch64-linux-gnu.so +0 -0
  567. sage/modules/free_module_element.pxd +22 -0
  568. sage/modules/free_module_element.pyx +5445 -0
  569. sage/modules/free_module_homspace.py +369 -0
  570. sage/modules/free_module_integer.py +896 -0
  571. sage/modules/free_module_morphism.py +823 -0
  572. sage/modules/free_module_pseudohomspace.py +352 -0
  573. sage/modules/free_module_pseudomorphism.py +578 -0
  574. sage/modules/free_quadratic_module.py +1706 -0
  575. sage/modules/free_quadratic_module_integer_symmetric.py +1790 -0
  576. sage/modules/matrix_morphism.py +1745 -0
  577. sage/modules/misc.py +103 -0
  578. sage/modules/module_functors.py +192 -0
  579. sage/modules/multi_filtered_vector_space.py +719 -0
  580. sage/modules/ore_module.py +2208 -0
  581. sage/modules/ore_module_element.py +178 -0
  582. sage/modules/ore_module_homspace.py +147 -0
  583. sage/modules/ore_module_morphism.py +968 -0
  584. sage/modules/quotient_module.py +699 -0
  585. sage/modules/real_double_vector.py +22 -0
  586. sage/modules/submodule.py +255 -0
  587. sage/modules/tensor_operations.py +567 -0
  588. sage/modules/torsion_quadratic_module.py +1352 -0
  589. sage/modules/tutorial_free_modules.py +248 -0
  590. sage/modules/vector_complex_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  591. sage/modules/vector_complex_double_dense.pxd +6 -0
  592. sage/modules/vector_complex_double_dense.pyx +117 -0
  593. sage/modules/vector_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  594. sage/modules/vector_double_dense.pxd +6 -0
  595. sage/modules/vector_double_dense.pyx +604 -0
  596. sage/modules/vector_integer_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  597. sage/modules/vector_integer_dense.pxd +15 -0
  598. sage/modules/vector_integer_dense.pyx +361 -0
  599. sage/modules/vector_integer_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  600. sage/modules/vector_integer_sparse.pxd +29 -0
  601. sage/modules/vector_integer_sparse.pyx +406 -0
  602. sage/modules/vector_modn_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  603. sage/modules/vector_modn_dense.pxd +12 -0
  604. sage/modules/vector_modn_dense.pyx +394 -0
  605. sage/modules/vector_modn_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  606. sage/modules/vector_modn_sparse.pxd +21 -0
  607. sage/modules/vector_modn_sparse.pyx +298 -0
  608. sage/modules/vector_numpy_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  609. sage/modules/vector_numpy_dense.pxd +15 -0
  610. sage/modules/vector_numpy_dense.pyx +304 -0
  611. sage/modules/vector_numpy_integer_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  612. sage/modules/vector_numpy_integer_dense.pxd +7 -0
  613. sage/modules/vector_numpy_integer_dense.pyx +54 -0
  614. sage/modules/vector_rational_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  615. sage/modules/vector_rational_dense.pxd +15 -0
  616. sage/modules/vector_rational_dense.pyx +387 -0
  617. sage/modules/vector_rational_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  618. sage/modules/vector_rational_sparse.pxd +30 -0
  619. sage/modules/vector_rational_sparse.pyx +413 -0
  620. sage/modules/vector_real_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  621. sage/modules/vector_real_double_dense.pxd +6 -0
  622. sage/modules/vector_real_double_dense.pyx +126 -0
  623. sage/modules/vector_space_homspace.py +430 -0
  624. sage/modules/vector_space_morphism.py +989 -0
  625. sage/modules/with_basis/all.py +15 -0
  626. sage/modules/with_basis/cell_module.py +494 -0
  627. sage/modules/with_basis/indexed_element.cpython-314-aarch64-linux-gnu.so +0 -0
  628. sage/modules/with_basis/indexed_element.pxd +13 -0
  629. sage/modules/with_basis/indexed_element.pyx +1058 -0
  630. sage/modules/with_basis/invariant.py +1075 -0
  631. sage/modules/with_basis/morphism.py +1636 -0
  632. sage/modules/with_basis/representation.py +2939 -0
  633. sage/modules/with_basis/subquotient.py +685 -0
  634. sage/numerical/all__sagemath_modules.py +6 -0
  635. sage/numerical/gauss_legendre.cpython-314-aarch64-linux-gnu.so +0 -0
  636. sage/numerical/gauss_legendre.pyx +381 -0
  637. sage/numerical/optimize.py +910 -0
  638. sage/probability/all.py +10 -0
  639. sage/probability/probability_distribution.cpython-314-aarch64-linux-gnu.so +0 -0
  640. sage/probability/probability_distribution.pyx +1242 -0
  641. sage/probability/random_variable.py +411 -0
  642. sage/quadratic_forms/all.py +4 -0
  643. sage/quadratic_forms/all__sagemath_modules.py +15 -0
  644. sage/quadratic_forms/binary_qf.py +2042 -0
  645. sage/quadratic_forms/bqf_class_group.py +748 -0
  646. sage/quadratic_forms/constructions.py +93 -0
  647. sage/quadratic_forms/count_local_2.cpython-314-aarch64-linux-gnu.so +0 -0
  648. sage/quadratic_forms/count_local_2.pyx +365 -0
  649. sage/quadratic_forms/extras.py +195 -0
  650. sage/quadratic_forms/quadratic_form.py +1753 -0
  651. sage/quadratic_forms/quadratic_form__count_local_2.py +221 -0
  652. sage/quadratic_forms/quadratic_form__equivalence_testing.py +708 -0
  653. sage/quadratic_forms/quadratic_form__evaluate.cpython-314-aarch64-linux-gnu.so +0 -0
  654. sage/quadratic_forms/quadratic_form__evaluate.pyx +139 -0
  655. sage/quadratic_forms/quadratic_form__local_density_congruence.py +977 -0
  656. sage/quadratic_forms/quadratic_form__local_field_invariants.py +1072 -0
  657. sage/quadratic_forms/quadratic_form__neighbors.py +424 -0
  658. sage/quadratic_forms/quadratic_form__reduction_theory.py +488 -0
  659. sage/quadratic_forms/quadratic_form__split_local_covering.py +416 -0
  660. sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +657 -0
  661. sage/quadratic_forms/quadratic_form__theta.py +352 -0
  662. sage/quadratic_forms/quadratic_form__variable_substitutions.py +370 -0
  663. sage/quadratic_forms/random_quadraticform.py +209 -0
  664. sage/quadratic_forms/ternary.cpython-314-aarch64-linux-gnu.so +0 -0
  665. sage/quadratic_forms/ternary.pyx +1154 -0
  666. sage/quadratic_forms/ternary_qf.py +2027 -0
  667. sage/rings/all__sagemath_modules.py +28 -0
  668. sage/rings/asymptotic/all__sagemath_modules.py +1 -0
  669. sage/rings/asymptotic/misc.py +1252 -0
  670. sage/rings/cc.py +4 -0
  671. sage/rings/cfinite_sequence.py +1306 -0
  672. sage/rings/complex_conversion.cpython-314-aarch64-linux-gnu.so +0 -0
  673. sage/rings/complex_conversion.pxd +8 -0
  674. sage/rings/complex_conversion.pyx +23 -0
  675. sage/rings/complex_double.cpython-314-aarch64-linux-gnu.so +0 -0
  676. sage/rings/complex_double.pxd +21 -0
  677. sage/rings/complex_double.pyx +2654 -0
  678. sage/rings/complex_mpc.cpython-314-aarch64-linux-gnu.so +0 -0
  679. sage/rings/complex_mpc.pxd +21 -0
  680. sage/rings/complex_mpc.pyx +2576 -0
  681. sage/rings/complex_mpfr.cpython-314-aarch64-linux-gnu.so +0 -0
  682. sage/rings/complex_mpfr.pxd +18 -0
  683. sage/rings/complex_mpfr.pyx +3602 -0
  684. sage/rings/derivation.py +2334 -0
  685. sage/rings/finite_rings/all__sagemath_modules.py +1 -0
  686. sage/rings/finite_rings/maps_finite_field.py +191 -0
  687. sage/rings/function_field/all__sagemath_modules.py +8 -0
  688. sage/rings/function_field/derivations.py +102 -0
  689. sage/rings/function_field/derivations_rational.py +132 -0
  690. sage/rings/function_field/differential.py +853 -0
  691. sage/rings/function_field/divisor.py +1107 -0
  692. sage/rings/function_field/drinfeld_modules/action.py +199 -0
  693. sage/rings/function_field/drinfeld_modules/all.py +1 -0
  694. sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +673 -0
  695. sage/rings/function_field/drinfeld_modules/drinfeld_module.py +2087 -0
  696. sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1131 -0
  697. sage/rings/function_field/drinfeld_modules/homset.py +420 -0
  698. sage/rings/function_field/drinfeld_modules/morphism.py +820 -0
  699. sage/rings/function_field/hermite_form_polynomial.cpython-314-aarch64-linux-gnu.so +0 -0
  700. sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
  701. sage/rings/function_field/khuri_makdisi.cpython-314-aarch64-linux-gnu.so +0 -0
  702. sage/rings/function_field/khuri_makdisi.pyx +935 -0
  703. sage/rings/invariants/all.py +4 -0
  704. sage/rings/invariants/invariant_theory.py +4597 -0
  705. sage/rings/invariants/reconstruction.py +395 -0
  706. sage/rings/polynomial/all__sagemath_modules.py +17 -0
  707. sage/rings/polynomial/integer_valued_polynomials.py +1230 -0
  708. sage/rings/polynomial/laurent_polynomial_mpair.cpython-314-aarch64-linux-gnu.so +0 -0
  709. sage/rings/polynomial/laurent_polynomial_mpair.pxd +15 -0
  710. sage/rings/polynomial/laurent_polynomial_mpair.pyx +2023 -0
  711. sage/rings/polynomial/ore_function_element.py +952 -0
  712. sage/rings/polynomial/ore_function_field.py +1028 -0
  713. sage/rings/polynomial/ore_polynomial_element.cpython-314-aarch64-linux-gnu.so +0 -0
  714. sage/rings/polynomial/ore_polynomial_element.pxd +48 -0
  715. sage/rings/polynomial/ore_polynomial_element.pyx +3145 -0
  716. sage/rings/polynomial/ore_polynomial_ring.py +1334 -0
  717. sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  718. sage/rings/polynomial/polynomial_real_mpfr_dense.pyx +788 -0
  719. sage/rings/polynomial/q_integer_valued_polynomials.py +1264 -0
  720. sage/rings/polynomial/skew_polynomial_element.cpython-314-aarch64-linux-gnu.so +0 -0
  721. sage/rings/polynomial/skew_polynomial_element.pxd +9 -0
  722. sage/rings/polynomial/skew_polynomial_element.pyx +684 -0
  723. sage/rings/polynomial/skew_polynomial_finite_field.cpython-314-aarch64-linux-gnu.so +0 -0
  724. sage/rings/polynomial/skew_polynomial_finite_field.pxd +19 -0
  725. sage/rings/polynomial/skew_polynomial_finite_field.pyx +1093 -0
  726. sage/rings/polynomial/skew_polynomial_finite_order.cpython-314-aarch64-linux-gnu.so +0 -0
  727. sage/rings/polynomial/skew_polynomial_finite_order.pxd +10 -0
  728. sage/rings/polynomial/skew_polynomial_finite_order.pyx +567 -0
  729. sage/rings/polynomial/skew_polynomial_ring.py +908 -0
  730. sage/rings/real_double_element_gsl.cpython-314-aarch64-linux-gnu.so +0 -0
  731. sage/rings/real_double_element_gsl.pxd +8 -0
  732. sage/rings/real_double_element_gsl.pyx +794 -0
  733. sage/rings/real_field.py +58 -0
  734. sage/rings/real_mpfr.cpython-314-aarch64-linux-gnu.so +0 -0
  735. sage/rings/real_mpfr.pxd +29 -0
  736. sage/rings/real_mpfr.pyx +6122 -0
  737. sage/rings/ring_extension.cpython-314-aarch64-linux-gnu.so +0 -0
  738. sage/rings/ring_extension.pxd +42 -0
  739. sage/rings/ring_extension.pyx +2779 -0
  740. sage/rings/ring_extension_conversion.cpython-314-aarch64-linux-gnu.so +0 -0
  741. sage/rings/ring_extension_conversion.pxd +16 -0
  742. sage/rings/ring_extension_conversion.pyx +462 -0
  743. sage/rings/ring_extension_element.cpython-314-aarch64-linux-gnu.so +0 -0
  744. sage/rings/ring_extension_element.pxd +21 -0
  745. sage/rings/ring_extension_element.pyx +1635 -0
  746. sage/rings/ring_extension_homset.py +64 -0
  747. sage/rings/ring_extension_morphism.cpython-314-aarch64-linux-gnu.so +0 -0
  748. sage/rings/ring_extension_morphism.pxd +35 -0
  749. sage/rings/ring_extension_morphism.pyx +920 -0
  750. sage/schemes/all__sagemath_modules.py +1 -0
  751. sage/schemes/projective/all__sagemath_modules.py +1 -0
  752. sage/schemes/projective/coherent_sheaf.py +300 -0
  753. sage/schemes/projective/cohomology.py +510 -0
  754. sage/stats/all.py +15 -0
  755. sage/stats/basic_stats.py +489 -0
  756. sage/stats/distributions/all.py +7 -0
  757. sage/stats/distributions/catalog.py +34 -0
  758. sage/stats/distributions/dgs.h +50 -0
  759. sage/stats/distributions/dgs.pxd +111 -0
  760. sage/stats/distributions/dgs_bern.h +400 -0
  761. sage/stats/distributions/dgs_gauss.h +614 -0
  762. sage/stats/distributions/dgs_misc.h +104 -0
  763. sage/stats/distributions/discrete_gaussian_integer.cpython-314-aarch64-linux-gnu.so +0 -0
  764. sage/stats/distributions/discrete_gaussian_integer.pxd +14 -0
  765. sage/stats/distributions/discrete_gaussian_integer.pyx +498 -0
  766. sage/stats/distributions/discrete_gaussian_lattice.py +908 -0
  767. sage/stats/distributions/discrete_gaussian_polynomial.py +141 -0
  768. sage/stats/hmm/all.py +15 -0
  769. sage/stats/hmm/chmm.cpython-314-aarch64-linux-gnu.so +0 -0
  770. sage/stats/hmm/chmm.pyx +1595 -0
  771. sage/stats/hmm/distributions.cpython-314-aarch64-linux-gnu.so +0 -0
  772. sage/stats/hmm/distributions.pxd +29 -0
  773. sage/stats/hmm/distributions.pyx +531 -0
  774. sage/stats/hmm/hmm.cpython-314-aarch64-linux-gnu.so +0 -0
  775. sage/stats/hmm/hmm.pxd +17 -0
  776. sage/stats/hmm/hmm.pyx +1388 -0
  777. sage/stats/hmm/util.cpython-314-aarch64-linux-gnu.so +0 -0
  778. sage/stats/hmm/util.pxd +7 -0
  779. sage/stats/hmm/util.pyx +165 -0
  780. sage/stats/intlist.cpython-314-aarch64-linux-gnu.so +0 -0
  781. sage/stats/intlist.pxd +14 -0
  782. sage/stats/intlist.pyx +588 -0
  783. sage/stats/r.py +49 -0
  784. sage/stats/time_series.cpython-314-aarch64-linux-gnu.so +0 -0
  785. sage/stats/time_series.pxd +6 -0
  786. sage/stats/time_series.pyx +2546 -0
  787. sage/tensor/all.py +2 -0
  788. sage/tensor/modules/all.py +8 -0
  789. sage/tensor/modules/alternating_contr_tensor.py +761 -0
  790. sage/tensor/modules/comp.py +5598 -0
  791. sage/tensor/modules/ext_pow_free_module.py +824 -0
  792. sage/tensor/modules/finite_rank_free_module.py +3589 -0
  793. sage/tensor/modules/format_utilities.py +333 -0
  794. sage/tensor/modules/free_module_alt_form.py +858 -0
  795. sage/tensor/modules/free_module_automorphism.py +1207 -0
  796. sage/tensor/modules/free_module_basis.py +1074 -0
  797. sage/tensor/modules/free_module_element.py +284 -0
  798. sage/tensor/modules/free_module_homset.py +652 -0
  799. sage/tensor/modules/free_module_linear_group.py +564 -0
  800. sage/tensor/modules/free_module_morphism.py +1581 -0
  801. sage/tensor/modules/free_module_tensor.py +3289 -0
  802. sage/tensor/modules/reflexive_module.py +386 -0
  803. sage/tensor/modules/tensor_free_module.py +780 -0
  804. sage/tensor/modules/tensor_free_submodule.py +538 -0
  805. sage/tensor/modules/tensor_free_submodule_basis.py +140 -0
  806. sage/tensor/modules/tensor_with_indices.py +1043 -0
@@ -0,0 +1,795 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ # sage.doctest: needs sage.graphs sage.groups
3
+ r"""
4
+ Fundamental group of an extended affine Weyl group
5
+
6
+ AUTHORS:
7
+
8
+ - Mark Shimozono (2013) initial version
9
+ """
10
+ # ****************************************************************************
11
+ # Copyright (C) 2013 Mark Shimozono <mshimo at math.vt.edu>
12
+ #
13
+ # This program is free software: you can redistribute it and/or modify
14
+ # it under the terms of the GNU General Public License as published by
15
+ # the Free Software Foundation, either version 2 of the License, or
16
+ # (at your option) any later version.
17
+ # https://www.gnu.org/licenses/
18
+ # ****************************************************************************
19
+ from sage.combinat.root_system.cartan_type import CartanType
20
+ from sage.categories.groups import Groups
21
+ from sage.misc.cachefunc import cached_method
22
+ from sage.structure.element import MultiplicativeGroupElement
23
+ from sage.structure.parent import Parent
24
+ from sage.structure.richcmp import richcmp
25
+ from sage.structure.unique_representation import UniqueRepresentation
26
+ from sage.sets.family import Family
27
+ from sage.combinat.root_system.root_system import RootSystem
28
+ from sage.categories.category import Category
29
+ from sage.categories.enumerated_sets import EnumeratedSets
30
+ from sage.rings.integer_ring import ZZ
31
+ from sage.sets.family import LazyFamily
32
+
33
+
34
+ def FundamentalGroupOfExtendedAffineWeylGroup(cartan_type, prefix='pi',
35
+ general_linear=None):
36
+ r"""
37
+ Factory for the fundamental group of an extended affine Weyl group.
38
+
39
+ INPUT:
40
+
41
+ - ``cartan_type`` -- a Cartan type that is either affine or finite, with the latter being a
42
+ shorthand for the untwisted affinization
43
+ - ``prefix`` -- (default: ``'pi'``) string that labels the elements of the group
44
+ - ``general_linear`` -- (default: ``None``, meaning ``False``) In untwisted
45
+ type `A`, if ``True``, use the universal central extension
46
+
47
+ .. RUBRIC:: Fundamental group
48
+
49
+ Associated to each affine Cartan type `\tilde{X}` is an extended affine Weyl group `E`.
50
+ Its subgroup of length-zero elements is called the fundamental group `F`.
51
+ The group `F` can be identified with a subgroup of the group of automorphisms of the
52
+ affine Dynkin diagram. As such, every element of `F` can be viewed as a permutation of the
53
+ set `I` of affine Dynkin nodes.
54
+
55
+ Let `0 \in I` be the distinguished affine node; it is the one whose removal produces the
56
+ associated finite Cartan type (call it `X`). A node `i \in I` is called *special*
57
+ if some automorphism of the affine Dynkin diagram, sends `0` to `i`.
58
+ The node `0` is always special due to the identity automorphism.
59
+ There is a bijection of the set of special nodes with the fundamental group. We denote the
60
+ image of `i` by `\pi_i`. The structure of `F` is determined as follows.
61
+
62
+ - `\tilde{X}` is untwisted -- `F` is isomorphic to `P^\vee/Q^\vee` where `P^\vee` and `Q^\vee` are the
63
+ coweight and coroot lattices of type `X`. The group `P^\vee/Q^\vee` consists of the cosets `\omega_i^\vee + Q^\vee`
64
+ for special nodes `i`, where `\omega_0^\vee = 0` by convention. In this case the special nodes `i`
65
+ are the *cominuscule* nodes, the ones such that `\omega_i^\vee(\alpha_j)` is `0` or `1` for all `j\in I_0 = I \setminus \{0\}`.
66
+ For `i` special, addition by `\omega_i^\vee+Q^\vee` permutes `P^\vee/Q^\vee` and therefore permutes the set of special nodes.
67
+ This permutation extends uniquely to an automorphism of the affine Dynkin diagram.
68
+ - `\tilde{X}` is dual untwisted -- (that is, the dual of `\tilde{X}` is untwisted) `F` is isomorphic to `P/Q`
69
+ where `P` and `Q` are the weight and root lattices of type `X`. The group `P/Q` consists of the cosets
70
+ `\omega_i + Q` for special nodes `i`, where `\omega_0 = 0` by convention. In this case the special nodes `i`
71
+ are the *minuscule* nodes, the ones such that `\alpha_j^\vee(\omega_i)` is `0` or `1` for all `j \in I_0`.
72
+ For `i` special, addition by `\omega_i+Q` permutes `P/Q` and therefore permutes the set of special nodes.
73
+ This permutation extends uniquely to an automorphism of the affine Dynkin diagram.
74
+ - `\tilde{X}` is mixed -- (that is, not of the above two types) `F` is the trivial group.
75
+
76
+ EXAMPLES::
77
+
78
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
79
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1]); F
80
+ Fundamental group of type ['A', 3, 1]
81
+ sage: F.cartan_type().dynkin_diagram()
82
+ 0
83
+ O-------+
84
+ | |
85
+ | |
86
+ O---O---O
87
+ 1 2 3
88
+ A3~
89
+ sage: F.special_nodes()
90
+ (0, 1, 2, 3)
91
+ sage: F(1)^2
92
+ pi[2]
93
+ sage: F(1)*F(2)
94
+ pi[3]
95
+ sage: F(3)^(-1)
96
+ pi[1]
97
+
98
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup("B3"); F
99
+ Fundamental group of type ['B', 3, 1]
100
+ sage: F.cartan_type().dynkin_diagram()
101
+ O 0
102
+ |
103
+ |
104
+ O---O=>=O
105
+ 1 2 3
106
+ B3~
107
+ sage: F.special_nodes()
108
+ (0, 1)
109
+
110
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup("C2"); F
111
+ Fundamental group of type ['C', 2, 1]
112
+ sage: F.cartan_type().dynkin_diagram()
113
+ O=>=O=<=O
114
+ 0 1 2
115
+ C2~
116
+ sage: F.special_nodes()
117
+ (0, 2)
118
+
119
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup("D4"); F
120
+ Fundamental group of type ['D', 4, 1]
121
+ sage: F.cartan_type().dynkin_diagram()
122
+ O 4
123
+ |
124
+ |
125
+ O---O---O
126
+ 1 |2 3
127
+ |
128
+ O 0
129
+ D4~
130
+ sage: F.special_nodes()
131
+ (0, 1, 3, 4)
132
+ sage: (F(4), F(4)^2)
133
+ (pi[4], pi[0])
134
+
135
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup("D5"); F
136
+ Fundamental group of type ['D', 5, 1]
137
+ sage: F.cartan_type().dynkin_diagram()
138
+ 0 O O 5
139
+ | |
140
+ | |
141
+ O---O---O---O
142
+ 1 2 3 4
143
+ D5~
144
+ sage: F.special_nodes()
145
+ (0, 1, 4, 5)
146
+ sage: (F(5), F(5)^2, F(5)^3, F(5)^4)
147
+ (pi[5], pi[1], pi[4], pi[0])
148
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup("E6"); F
149
+ Fundamental group of type ['E', 6, 1]
150
+ sage: F.cartan_type().dynkin_diagram()
151
+ O 0
152
+ |
153
+ |
154
+ O 2
155
+ |
156
+ |
157
+ O---O---O---O---O
158
+ 1 3 4 5 6
159
+ E6~
160
+ sage: F.special_nodes()
161
+ (0, 1, 6)
162
+ sage: F(1)^2
163
+ pi[6]
164
+
165
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['D',4,2]); F
166
+ Fundamental group of type ['C', 3, 1]^*
167
+ sage: F.cartan_type().dynkin_diagram()
168
+ O=<=O---O=>=O
169
+ 0 1 2 3
170
+ C3~*
171
+ sage: F.special_nodes()
172
+ (0, 3)
173
+
174
+ We also implement a fundamental group for `GL_n`. It is defined to be the group of integers, which is the
175
+ covering group of the fundamental group Z/nZ for affine `SL_n`::
176
+
177
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True); F
178
+ Fundamental group of GL(3)
179
+ sage: x = F.an_element(); x
180
+ pi[5]
181
+ sage: x*x
182
+ pi[10]
183
+ sage: x.inverse()
184
+ pi[-5]
185
+ sage: wt = F.cartan_type().classical().root_system().ambient_space().an_element(); wt
186
+ (2, 2, 3)
187
+ sage: x.act_on_classical_ambient(wt)
188
+ (2, 3, 2)
189
+ sage: w = WeylGroup(F.cartan_type(),prefix='s').an_element(); w
190
+ s0*s1*s2
191
+ sage: x.act_on_affine_weyl(w)
192
+ s2*s0*s1
193
+ """
194
+ cartan_type = CartanType(cartan_type)
195
+ if cartan_type.is_finite():
196
+ cartan_type = cartan_type.affine()
197
+ if not cartan_type.is_affine():
198
+ raise NotImplementedError("Cartan type is not affine")
199
+ if general_linear is True:
200
+ if cartan_type.is_untwisted_affine() and cartan_type.type() == "A":
201
+ return FundamentalGroupGL(cartan_type, prefix)
202
+ else:
203
+ raise ValueError("General Linear Fundamental group is untwisted type A")
204
+ return FundamentalGroupOfExtendedAffineWeylGroup_Class(cartan_type, prefix,
205
+ finite=True)
206
+
207
+
208
+ class FundamentalGroupElement(MultiplicativeGroupElement):
209
+ def __init__(self, parent, x):
210
+ r"""
211
+ This should not be called directly.
212
+
213
+ EXAMPLES::
214
+
215
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
216
+ sage: x = FundamentalGroupOfExtendedAffineWeylGroup(['A',4,1], prefix='f').an_element()
217
+ sage: TestSuite(x).run()
218
+ """
219
+ if x not in parent.special_nodes():
220
+ raise ValueError("%s is not a special node" % x)
221
+ self._value = x
222
+ MultiplicativeGroupElement.__init__(self, parent)
223
+
224
+ def value(self):
225
+ r"""
226
+ Return the special node which indexes the special automorphism ``self``.
227
+
228
+ EXAMPLES::
229
+
230
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
231
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',4,1], prefix='f')
232
+ sage: F.special_nodes()
233
+ (0, 1, 2, 3, 4)
234
+ sage: x = F(4); x
235
+ f[4]
236
+ sage: x.value()
237
+ 4
238
+ """
239
+ return self._value
240
+
241
+ def _repr_(self):
242
+ r"""
243
+ Return a string representing ``self``.
244
+
245
+ EXAMPLES::
246
+
247
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
248
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',4,1], prefix='f')
249
+ sage: F(2)^3 # indirect doctest
250
+ f[1]
251
+ """
252
+ return self.parent()._prefix + "[" + repr(self.value()) + "]"
253
+
254
+ def __invert__(self):
255
+ r"""
256
+ Return the inverse element of ``self``.
257
+
258
+ EXAMPLES::
259
+
260
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
261
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1])
262
+ sage: F(1).inverse() # indirect doctest
263
+ pi[3]
264
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['E',6,1], prefix='f')
265
+ sage: F(1).inverse()
266
+ f[6]
267
+ """
268
+ par = self.parent()
269
+ return self.__class__(par, par.dual_node(self.value()))
270
+
271
+ def _richcmp_(self, x, op):
272
+ r"""
273
+ Compare ``self`` with `x`.
274
+
275
+ EXAMPLES::
276
+
277
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
278
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1])
279
+ sage: x = F(0); y = F(2)
280
+ sage: y > x
281
+ True
282
+ sage: y == y
283
+ True
284
+ sage: y != y
285
+ False
286
+ sage: x <= y
287
+ True
288
+ """
289
+ return richcmp(self.value(), x.value(), op)
290
+
291
+ def act_on_affine_weyl(self, w):
292
+ r"""
293
+ Act by ``self`` on the element `w` of the affine Weyl group.
294
+
295
+ EXAMPLES::
296
+
297
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
298
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1])
299
+ sage: W = WeylGroup(F.cartan_type(),prefix='s')
300
+ sage: w = W.from_reduced_word([2,3,0])
301
+ sage: F(1).act_on_affine_weyl(w).reduced_word()
302
+ [3, 0, 1]
303
+ """
304
+ par = self.parent()
305
+ if self == par.one():
306
+ return w
307
+ action = par.action(self.value())
308
+ return w.parent().from_reduced_word([action(j) for j in w.reduced_word()])
309
+
310
+ def act_on_affine_lattice(self, wt):
311
+ r"""
312
+ Act by ``self`` on the element ``wt`` of an affine root/weight lattice realization.
313
+
314
+ EXAMPLES::
315
+
316
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
317
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1])
318
+ sage: wt = RootSystem(F.cartan_type()).weight_lattice().an_element(); wt
319
+ 2*Lambda[0] + 2*Lambda[1] + 3*Lambda[2]
320
+ sage: F(3).act_on_affine_lattice(wt)
321
+ 2*Lambda[0] + 3*Lambda[1] + 2*Lambda[3]
322
+
323
+ .. WARNING::
324
+
325
+ Doesn't work on ambient spaces.
326
+ """
327
+ return wt.map_support(self.parent().action(self.value()))
328
+
329
+ def __hash__(self):
330
+ r"""
331
+ Return the hash of ``self``.
332
+
333
+ TESTS:
334
+
335
+ Check that :issue:`36121` is fixed::
336
+
337
+ sage: W = ExtendedAffineWeylGroup('A4')
338
+ sage: fun = W.fundamental_group().an_element()
339
+ sage: hash(fun) == hash(fun.value())
340
+ True
341
+ """
342
+ return hash(self.value())
343
+
344
+
345
+ class FundamentalGroupOfExtendedAffineWeylGroup_Class(UniqueRepresentation,
346
+ Parent):
347
+ r"""
348
+ The group of length zero elements in the extended affine Weyl group.
349
+ """
350
+ Element = FundamentalGroupElement
351
+
352
+ def __init__(self, cartan_type, prefix, finite=True):
353
+ r"""
354
+
355
+ EXAMPLES::
356
+
357
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
358
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1])
359
+ sage: F in Groups().Commutative().Finite()
360
+ True
361
+ sage: TestSuite(F).run()
362
+ """
363
+ def leading_support(beta):
364
+ r"""
365
+ Given a dictionary with one key, return this key
366
+ """
367
+ supp = beta.support()
368
+ assert len(supp) == 1
369
+ return supp[0]
370
+
371
+ self._cartan_type = cartan_type
372
+ self._prefix = prefix
373
+ special_node = cartan_type.special_node()
374
+ self._special_nodes = cartan_type.special_nodes()
375
+
376
+ # initialize dictionaries with the entries for the
377
+ # distinguished special node
378
+
379
+ # dictionary of inverse elements
380
+ inverse_dict = {}
381
+ inverse_dict[special_node] = special_node
382
+ # dictionary for the action of special automorphisms by
383
+ # permutations of the affine Dynkin nodes
384
+ auto_dict = {}
385
+ for i in cartan_type.index_set():
386
+ auto_dict[special_node,i] = i
387
+ # dictionary for the finite Weyl component of the special automorphisms
388
+ reduced_words_dict = {}
389
+ reduced_words_dict[0] = tuple()
390
+
391
+ if cartan_type.dual().is_untwisted_affine():
392
+ # this combines the computations for an untwisted affine
393
+ # type and its affine dual
394
+ cartan_type = cartan_type.dual()
395
+ if cartan_type.is_untwisted_affine():
396
+ cartan_type_classical = cartan_type.classical()
397
+ I = list(cartan_type_classical.index_set())
398
+ Q = RootSystem(cartan_type_classical).root_lattice()
399
+ alpha = Q.simple_roots()
400
+ omega = RootSystem(cartan_type_classical).weight_lattice().fundamental_weights()
401
+ W = Q.weyl_group(prefix='s')
402
+ for i in self._special_nodes:
403
+ if i == special_node:
404
+ continue
405
+ antidominant_weight, reduced_word = omega[i].to_dominant_chamber(reduced_word=True, positive=False)
406
+ reduced_words_dict[i] = tuple(reduced_word)
407
+ w0i = W.from_reduced_word(reduced_word)
408
+ idual = leading_support(-antidominant_weight)
409
+ inverse_dict[i] = idual
410
+ auto_dict[i,special_node] = i
411
+ for j in I:
412
+ if j == idual:
413
+ auto_dict[i, j] = special_node
414
+ else:
415
+ auto_dict[i, j] = leading_support(w0i.action(alpha[j]))
416
+
417
+ self._action = Family(self._special_nodes, lambda i: Family(cartan_type.index_set(), lambda j: auto_dict[i, j]))
418
+ self._dual_node = Family(self._special_nodes, inverse_dict.__getitem__)
419
+ self._reduced_words = Family(self._special_nodes, reduced_words_dict.__getitem__)
420
+
421
+ if finite:
422
+ cat = Category.join((Groups().Commutative().Finite(),
423
+ EnumeratedSets()))
424
+ else:
425
+ cat = Groups().Commutative().Infinite()
426
+ Parent.__init__(self, category=cat)
427
+
428
+ @cached_method
429
+ def one(self):
430
+ r"""
431
+ Return the identity element of the fundamental group.
432
+
433
+ EXAMPLES::
434
+
435
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
436
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1])
437
+ sage: F.one()
438
+ pi[0]
439
+ """
440
+ return self(self.cartan_type().special_node())
441
+
442
+ def product(self, x, y):
443
+ r"""
444
+ Return the product of `x` and `y`.
445
+
446
+ EXAMPLES::
447
+
448
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
449
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1])
450
+ sage: F.special_nodes()
451
+ (0, 1, 2, 3)
452
+ sage: F(2)*F(3)
453
+ pi[1]
454
+ sage: F(1)*F(3)^(-1)
455
+ pi[2]
456
+ """
457
+ return self(self.action(x.value())(y.value()))
458
+
459
+ def cartan_type(self):
460
+ r"""
461
+ The Cartan type of ``self``.
462
+
463
+ EXAMPLES::
464
+
465
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
466
+ sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1]).cartan_type()
467
+ ['A', 3, 1]
468
+ """
469
+ return self._cartan_type
470
+
471
+ def _repr_(self):
472
+ r"""
473
+ A string representing ``self``.
474
+
475
+ EXAMPLES::
476
+
477
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
478
+ sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1]) # indirect doctest
479
+ Fundamental group of type ['A', 3, 1]
480
+ """
481
+ return "Fundamental group of type %s" % self.cartan_type()
482
+
483
+ def special_nodes(self):
484
+ r"""
485
+ Return the special nodes of ``self``.
486
+
487
+ See :meth:`sage.combinat.root_system.cartan_type.special_nodes()`.
488
+
489
+ EXAMPLES::
490
+
491
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
492
+ sage: FundamentalGroupOfExtendedAffineWeylGroup(['D',4,1]).special_nodes()
493
+ (0, 1, 3, 4)
494
+ sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1]).special_nodes()
495
+ (0, 1, 2)
496
+ sage: FundamentalGroupOfExtendedAffineWeylGroup(['C',3,1]).special_nodes()
497
+ (0, 3)
498
+ sage: FundamentalGroupOfExtendedAffineWeylGroup(['D',4,2]).special_nodes()
499
+ (0, 3)
500
+ sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True).special_nodes()
501
+ Integer Ring
502
+ """
503
+ return self._special_nodes
504
+
505
+ def group_generators(self):
506
+ r"""
507
+ Return a tuple of generators of the fundamental group.
508
+
509
+ .. WARNING::
510
+
511
+ This returns the entire group, a necessary behavior because it
512
+ is used in :meth:`__iter__`.
513
+
514
+ EXAMPLES::
515
+
516
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
517
+ sage: FundamentalGroupOfExtendedAffineWeylGroup(['E',6,1],prefix='f').group_generators()
518
+ Finite family {0: f[0], 1: f[1], 6: f[6]}
519
+ """
520
+ return Family(self.special_nodes(), self)
521
+
522
+ def __iter__(self):
523
+ r"""
524
+ Return the iterator for ``self``.
525
+
526
+ EXAMPLES::
527
+
528
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
529
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['E',6,1],prefix='f')
530
+ sage: [x for x in F] # indirect doctest
531
+ [f[0], f[1], f[6]]
532
+ """
533
+ return iter(self.group_generators())
534
+
535
+ def _an_element_(self):
536
+ r"""
537
+ Return an element of ``self``.
538
+
539
+ EXAMPLES::
540
+
541
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
542
+ sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',4,1],prefix='f').an_element()
543
+ f[4]
544
+ """
545
+ return self.last()
546
+
547
+ @cached_method
548
+ def index_set(self):
549
+ r"""
550
+ The node set of the affine Cartan type of ``self``.
551
+
552
+ EXAMPLES::
553
+
554
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
555
+ sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1]).index_set()
556
+ (0, 1, 2)
557
+ """
558
+ return self.cartan_type().index_set()
559
+
560
+ def action(self, i):
561
+ r"""
562
+ Return a function which permutes the affine Dynkin node set by the `i`-th special automorphism.
563
+
564
+ EXAMPLES::
565
+
566
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
567
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1])
568
+ sage: [[(i, j, F.action(i)(j)) for j in F.index_set()] for i in F.special_nodes()]
569
+ [[(0, 0, 0), (0, 1, 1), (0, 2, 2)], [(1, 0, 1), (1, 1, 2), (1, 2, 0)], [(2, 0, 2), (2, 1, 0), (2, 2, 1)]]
570
+ sage: G = FundamentalGroupOfExtendedAffineWeylGroup(['D',4,1])
571
+ sage: [[(i, j, G.action(i)(j)) for j in G.index_set()] for i in G.special_nodes()]
572
+ [[(0, 0, 0), (0, 1, 1), (0, 2, 2), (0, 3, 3), (0, 4, 4)], [(1, 0, 1), (1, 1, 0), (1, 2, 2), (1, 3, 4), (1, 4, 3)], [(3, 0, 3), (3, 1, 4), (3, 2, 2), (3, 3, 0), (3, 4, 1)], [(4, 0, 4), (4, 1, 3), (4, 2, 2), (4, 3, 1), (4, 4, 0)]]
573
+ """
574
+ return lambda j: self._action[i][j]
575
+
576
+ def dual_node(self, i):
577
+ r"""
578
+ Return the node that indexes the inverse of the `i`-th element.
579
+
580
+ EXAMPLES::
581
+
582
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
583
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',4,1])
584
+ sage: [(i, F.dual_node(i)) for i in F.special_nodes()]
585
+ [(0, 0), (1, 4), (2, 3), (3, 2), (4, 1)]
586
+ sage: G = FundamentalGroupOfExtendedAffineWeylGroup(['E',6,1])
587
+ sage: [(i, G.dual_node(i)) for i in G.special_nodes()]
588
+ [(0, 0), (1, 6), (6, 1)]
589
+ sage: H = FundamentalGroupOfExtendedAffineWeylGroup(['D',5,1])
590
+ sage: [(i, H.dual_node(i)) for i in H.special_nodes()]
591
+ [(0, 0), (1, 1), (4, 5), (5, 4)]
592
+ """
593
+ return self._dual_node[i]
594
+
595
+ def reduced_word(self, i):
596
+ r"""
597
+ Return a reduced word for the finite Weyl group element associated with the `i`-th special automorphism.
598
+
599
+ More precisely, for each special node `i`, ``self.reduced_word(i)`` is a reduced word for
600
+ the element `v` in the finite Weyl group such that in the extended affine Weyl group,
601
+ the `i`-th special automorphism is equal to `t v` where `t` is a translation element.
602
+
603
+ EXAMPLES::
604
+
605
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
606
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1])
607
+ sage: [(i, F.reduced_word(i)) for i in F.special_nodes()]
608
+ [(0, ()), (1, (1, 2, 3)), (2, (2, 1, 3, 2)), (3, (3, 2, 1))]
609
+ """
610
+ return self._reduced_words[i]
611
+
612
+
613
+ class FundamentalGroupGLElement(FundamentalGroupElement):
614
+ def act_on_classical_ambient(self, wt):
615
+ r"""
616
+ Act by ``self`` on the classical ambient weight vector ``wt``.
617
+
618
+ EXAMPLES::
619
+
620
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
621
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True)
622
+ sage: f = F.an_element(); f
623
+ pi[5]
624
+ sage: la = F.cartan_type().classical().root_system().ambient_space().an_element(); la
625
+ (2, 2, 3)
626
+ sage: f.act_on_classical_ambient(la)
627
+ (2, 3, 2)
628
+ """
629
+ return wt.map_support(self.parent().action(self.value()))
630
+
631
+
632
+ class FundamentalGroupGL(FundamentalGroupOfExtendedAffineWeylGroup_Class):
633
+ r"""
634
+ Fundamental group of `GL_n`. It is just the integers with extra privileges.
635
+ """
636
+ Element = FundamentalGroupGLElement
637
+
638
+ def __init__(self, cartan_type, prefix='pi'):
639
+ r"""
640
+
641
+ EXAMPLES::
642
+
643
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
644
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True)
645
+ sage: F in Groups().Commutative().Infinite()
646
+ True
647
+ sage: TestSuite(F).run()
648
+ """
649
+ FundamentalGroupOfExtendedAffineWeylGroup_Class.__init__(self, cartan_type, prefix, finite=False)
650
+ self._special_nodes = ZZ
651
+ self._n = cartan_type.n + 1
652
+
653
+ @cached_method
654
+ def one(self):
655
+ r"""
656
+ Return the identity element of the fundamental group.
657
+
658
+ EXAMPLES::
659
+
660
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
661
+ sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True).one()
662
+ pi[0]
663
+ """
664
+ return self(ZZ.zero())
665
+
666
+ def product(self, x, y):
667
+ r"""
668
+ Return the product of `x` and `y`.
669
+
670
+ EXAMPLES::
671
+
672
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
673
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True)
674
+ sage: F.special_nodes()
675
+ Integer Ring
676
+ sage: F(2)*F(3)
677
+ pi[5]
678
+ sage: F(1)*F(3)^(-1)
679
+ pi[-2]
680
+ """
681
+ return self(x.value() + y.value())
682
+
683
+ def _repr_(self):
684
+ r"""
685
+ Return a string representing the fundamental group.
686
+
687
+ EXAMPLES::
688
+
689
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
690
+ sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True) # indirect doctest
691
+ Fundamental group of GL(3)
692
+ """
693
+ return "Fundamental group of GL(%s)" % self._n
694
+
695
+ def family(self):
696
+ r"""
697
+ The family associated with the set of special nodes.
698
+
699
+ EXAMPLES::
700
+
701
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
702
+ sage: fam = FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True).family() # indirect doctest
703
+ sage: fam
704
+ Lazy family (<lambda>(i))_{i in Integer Ring}
705
+ sage: fam[-3]
706
+ -3
707
+ """
708
+ return LazyFamily(ZZ, lambda i: i)
709
+
710
+ def _an_element_(self):
711
+ r"""
712
+ An element of ``self``.
713
+
714
+ EXAMPLES::
715
+
716
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
717
+ sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True).an_element()
718
+ pi[5]
719
+ """
720
+ return self(ZZ(5))
721
+
722
+ def some_elements(self):
723
+ r"""
724
+ Return some elements of ``self``.
725
+
726
+ EXAMPLES::
727
+
728
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
729
+ sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True).some_elements()
730
+ [pi[-2], pi[2], pi[5]]
731
+ """
732
+ return [self(ZZ(i)) for i in [-2, 2, 5]]
733
+
734
+ def group_generators(self):
735
+ r"""
736
+ Return group generators for ``self``.
737
+
738
+ EXAMPLES::
739
+
740
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
741
+ sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True).group_generators()
742
+ (pi[1],)
743
+ """
744
+ return (self(ZZ.one()),)
745
+
746
+ def action(self, i):
747
+ r"""
748
+ The action of the `i`-th automorphism on the affine Dynkin node set.
749
+
750
+ EXAMPLES::
751
+
752
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
753
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True)
754
+ sage: F.action(4)(2)
755
+ 0
756
+ sage: F.action(-4)(2)
757
+ 1
758
+ """
759
+ return lambda j: (i + j) % self._n
760
+
761
+ def dual_node(self, i):
762
+ r"""
763
+ The node whose special automorphism is inverse to that of `i`.
764
+
765
+ EXAMPLES::
766
+
767
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
768
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True)
769
+ sage: F.dual_node(2)
770
+ -2
771
+ """
772
+ return -i
773
+
774
+ @cached_method
775
+ def reduced_word(self, i):
776
+ r"""
777
+ A reduced word for the finite permutation part of the
778
+ special automorphism indexed by `i`.
779
+
780
+ More precisely, return a reduced word for the finite Weyl group element `u`
781
+ where `i`-th automorphism (expressed in the extended affine Weyl group)
782
+ has the form `t u` where `t` is a translation element.
783
+
784
+ EXAMPLES::
785
+
786
+ sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
787
+ sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True)
788
+ sage: F.reduced_word(10)
789
+ (1, 2)
790
+ """
791
+ i = i % self._n
792
+ if i == 0:
793
+ return tuple()
794
+ om = self.cartan_type().classical().root_system().weight_lattice().fundamental_weight(i)
795
+ return tuple((-om).reduced_word())