passagemath-modules 10.6.31rc3__cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

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

Potentially problematic release.


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

Files changed (807) hide show
  1. passagemath_modules-10.6.31rc3.dist-info/METADATA +281 -0
  2. passagemath_modules-10.6.31rc3.dist-info/RECORD +807 -0
  3. passagemath_modules-10.6.31rc3.dist-info/WHEEL +6 -0
  4. passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
  5. passagemath_modules.libs/libgfortran-83c28eba.so.5.0.0 +0 -0
  6. passagemath_modules.libs/libgmp-6e109695.so.10.5.0 +0 -0
  7. passagemath_modules.libs/libgsl-cda90e79.so.28.0.0 +0 -0
  8. passagemath_modules.libs/libmpc-7f678fcf.so.3.3.1 +0 -0
  9. passagemath_modules.libs/libmpfr-82690d50.so.6.2.1 +0 -0
  10. passagemath_modules.libs/libopenblasp-r0-6dcb67f9.3.29.so +0 -0
  11. passagemath_modules.libs/libquadmath-2284e583.so.0.0.0 +0 -0
  12. sage/algebras/all__sagemath_modules.py +20 -0
  13. sage/algebras/catalog.py +148 -0
  14. sage/algebras/clifford_algebra.py +3107 -0
  15. sage/algebras/clifford_algebra_element.cpython-314-x86_64-linux-gnu.so +0 -0
  16. sage/algebras/clifford_algebra_element.pxd +16 -0
  17. sage/algebras/clifford_algebra_element.pyx +997 -0
  18. sage/algebras/commutative_dga.py +4252 -0
  19. sage/algebras/exterior_algebra_groebner.cpython-314-x86_64-linux-gnu.so +0 -0
  20. sage/algebras/exterior_algebra_groebner.pxd +55 -0
  21. sage/algebras/exterior_algebra_groebner.pyx +727 -0
  22. sage/algebras/finite_dimensional_algebras/all.py +2 -0
  23. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +1029 -0
  24. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-314-x86_64-linux-gnu.so +0 -0
  25. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +12 -0
  26. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +706 -0
  27. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_ideal.py +196 -0
  28. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_morphism.py +255 -0
  29. sage/algebras/finite_gca.py +528 -0
  30. sage/algebras/group_algebra.py +232 -0
  31. sage/algebras/lie_algebras/abelian.py +197 -0
  32. sage/algebras/lie_algebras/affine_lie_algebra.py +1213 -0
  33. sage/algebras/lie_algebras/all.py +25 -0
  34. sage/algebras/lie_algebras/all__sagemath_modules.py +1 -0
  35. sage/algebras/lie_algebras/bch.py +177 -0
  36. sage/algebras/lie_algebras/bgg_dual_module.py +1184 -0
  37. sage/algebras/lie_algebras/bgg_resolution.py +232 -0
  38. sage/algebras/lie_algebras/center_uea.py +767 -0
  39. sage/algebras/lie_algebras/classical_lie_algebra.py +2516 -0
  40. sage/algebras/lie_algebras/examples.py +683 -0
  41. sage/algebras/lie_algebras/free_lie_algebra.py +973 -0
  42. sage/algebras/lie_algebras/heisenberg.py +820 -0
  43. sage/algebras/lie_algebras/lie_algebra.py +1562 -0
  44. sage/algebras/lie_algebras/lie_algebra_element.cpython-314-x86_64-linux-gnu.so +0 -0
  45. sage/algebras/lie_algebras/lie_algebra_element.pxd +68 -0
  46. sage/algebras/lie_algebras/lie_algebra_element.pyx +2122 -0
  47. sage/algebras/lie_algebras/morphism.py +661 -0
  48. sage/algebras/lie_algebras/nilpotent_lie_algebra.py +457 -0
  49. sage/algebras/lie_algebras/onsager.py +1324 -0
  50. sage/algebras/lie_algebras/poincare_birkhoff_witt.py +816 -0
  51. sage/algebras/lie_algebras/quotient.py +462 -0
  52. sage/algebras/lie_algebras/rank_two_heisenberg_virasoro.py +355 -0
  53. sage/algebras/lie_algebras/representation.py +1040 -0
  54. sage/algebras/lie_algebras/structure_coefficients.py +459 -0
  55. sage/algebras/lie_algebras/subalgebra.py +967 -0
  56. sage/algebras/lie_algebras/symplectic_derivation.py +289 -0
  57. sage/algebras/lie_algebras/verma_module.py +1630 -0
  58. sage/algebras/lie_algebras/virasoro.py +1186 -0
  59. sage/algebras/octonion_algebra.cpython-314-x86_64-linux-gnu.so +0 -0
  60. sage/algebras/octonion_algebra.pxd +20 -0
  61. sage/algebras/octonion_algebra.pyx +987 -0
  62. sage/algebras/orlik_solomon.py +907 -0
  63. sage/algebras/orlik_terao.py +779 -0
  64. sage/algebras/steenrod/all.py +7 -0
  65. sage/algebras/steenrod/steenrod_algebra.py +4258 -0
  66. sage/algebras/steenrod/steenrod_algebra_bases.py +1179 -0
  67. sage/algebras/steenrod/steenrod_algebra_misc.py +1167 -0
  68. sage/algebras/steenrod/steenrod_algebra_mult.py +954 -0
  69. sage/algebras/weyl_algebra.py +1126 -0
  70. sage/all__sagemath_modules.py +62 -0
  71. sage/calculus/all__sagemath_modules.py +19 -0
  72. sage/calculus/expr.py +205 -0
  73. sage/calculus/integration.cpython-314-x86_64-linux-gnu.so +0 -0
  74. sage/calculus/integration.pyx +698 -0
  75. sage/calculus/interpolation.cpython-314-x86_64-linux-gnu.so +0 -0
  76. sage/calculus/interpolation.pxd +13 -0
  77. sage/calculus/interpolation.pyx +387 -0
  78. sage/calculus/interpolators.cpython-314-x86_64-linux-gnu.so +0 -0
  79. sage/calculus/interpolators.pyx +326 -0
  80. sage/calculus/ode.cpython-314-x86_64-linux-gnu.so +0 -0
  81. sage/calculus/ode.pxd +5 -0
  82. sage/calculus/ode.pyx +610 -0
  83. sage/calculus/riemann.cpython-314-x86_64-linux-gnu.so +0 -0
  84. sage/calculus/riemann.pyx +1521 -0
  85. sage/calculus/test_sympy.py +201 -0
  86. sage/calculus/transforms/all.py +7 -0
  87. sage/calculus/transforms/dft.py +844 -0
  88. sage/calculus/transforms/dwt.cpython-314-x86_64-linux-gnu.so +0 -0
  89. sage/calculus/transforms/dwt.pxd +7 -0
  90. sage/calculus/transforms/dwt.pyx +160 -0
  91. sage/calculus/transforms/fft.cpython-314-x86_64-linux-gnu.so +0 -0
  92. sage/calculus/transforms/fft.pxd +12 -0
  93. sage/calculus/transforms/fft.pyx +487 -0
  94. sage/calculus/wester.py +662 -0
  95. sage/coding/abstract_code.py +1108 -0
  96. sage/coding/ag_code.py +868 -0
  97. sage/coding/ag_code_decoders.cpython-314-x86_64-linux-gnu.so +0 -0
  98. sage/coding/ag_code_decoders.pyx +2639 -0
  99. sage/coding/all.py +15 -0
  100. sage/coding/bch_code.py +494 -0
  101. sage/coding/binary_code.cpython-314-x86_64-linux-gnu.so +0 -0
  102. sage/coding/binary_code.pxd +124 -0
  103. sage/coding/binary_code.pyx +4139 -0
  104. sage/coding/bounds_catalog.py +43 -0
  105. sage/coding/channel.py +819 -0
  106. sage/coding/channels_catalog.py +29 -0
  107. sage/coding/code_bounds.py +755 -0
  108. sage/coding/code_constructions.py +804 -0
  109. sage/coding/codes_catalog.py +111 -0
  110. sage/coding/cyclic_code.py +1329 -0
  111. sage/coding/databases.py +316 -0
  112. sage/coding/decoder.py +373 -0
  113. sage/coding/decoders_catalog.py +88 -0
  114. sage/coding/delsarte_bounds.py +709 -0
  115. sage/coding/encoder.py +390 -0
  116. sage/coding/encoders_catalog.py +64 -0
  117. sage/coding/extended_code.py +468 -0
  118. sage/coding/gabidulin_code.py +1058 -0
  119. sage/coding/golay_code.py +404 -0
  120. sage/coding/goppa_code.py +441 -0
  121. sage/coding/grs_code.py +2371 -0
  122. sage/coding/guava.py +107 -0
  123. sage/coding/guruswami_sudan/all.py +1 -0
  124. sage/coding/guruswami_sudan/gs_decoder.py +897 -0
  125. sage/coding/guruswami_sudan/interpolation.py +409 -0
  126. sage/coding/guruswami_sudan/utils.py +176 -0
  127. sage/coding/hamming_code.py +176 -0
  128. sage/coding/information_set_decoder.py +1032 -0
  129. sage/coding/kasami_codes.cpython-314-x86_64-linux-gnu.so +0 -0
  130. sage/coding/kasami_codes.pyx +351 -0
  131. sage/coding/linear_code.py +3067 -0
  132. sage/coding/linear_code_no_metric.py +1354 -0
  133. sage/coding/linear_rank_metric.py +961 -0
  134. sage/coding/parity_check_code.py +353 -0
  135. sage/coding/punctured_code.py +719 -0
  136. sage/coding/reed_muller_code.py +999 -0
  137. sage/coding/self_dual_codes.py +942 -0
  138. sage/coding/source_coding/all.py +2 -0
  139. sage/coding/source_coding/huffman.py +553 -0
  140. sage/coding/subfield_subcode.py +423 -0
  141. sage/coding/two_weight_db.py +399 -0
  142. sage/combinat/all__sagemath_modules.py +7 -0
  143. sage/combinat/cartesian_product.py +347 -0
  144. sage/combinat/family.py +11 -0
  145. sage/combinat/free_module.py +1977 -0
  146. sage/combinat/root_system/all.py +147 -0
  147. sage/combinat/root_system/ambient_space.py +527 -0
  148. sage/combinat/root_system/associahedron.py +471 -0
  149. sage/combinat/root_system/braid_move_calculator.py +143 -0
  150. sage/combinat/root_system/braid_orbit.cpython-314-x86_64-linux-gnu.so +0 -0
  151. sage/combinat/root_system/braid_orbit.pyx +144 -0
  152. sage/combinat/root_system/branching_rules.py +2301 -0
  153. sage/combinat/root_system/cartan_matrix.py +1245 -0
  154. sage/combinat/root_system/cartan_type.py +3069 -0
  155. sage/combinat/root_system/coxeter_group.py +162 -0
  156. sage/combinat/root_system/coxeter_matrix.py +1261 -0
  157. sage/combinat/root_system/coxeter_type.py +681 -0
  158. sage/combinat/root_system/dynkin_diagram.py +900 -0
  159. sage/combinat/root_system/extended_affine_weyl_group.py +2993 -0
  160. sage/combinat/root_system/fundamental_group.py +795 -0
  161. sage/combinat/root_system/hecke_algebra_representation.py +1203 -0
  162. sage/combinat/root_system/integrable_representations.py +1227 -0
  163. sage/combinat/root_system/non_symmetric_macdonald_polynomials.py +1965 -0
  164. sage/combinat/root_system/pieri_factors.py +1147 -0
  165. sage/combinat/root_system/plot.py +1615 -0
  166. sage/combinat/root_system/root_lattice_realization_algebras.py +1214 -0
  167. sage/combinat/root_system/root_lattice_realizations.py +4628 -0
  168. sage/combinat/root_system/root_space.py +487 -0
  169. sage/combinat/root_system/root_system.py +882 -0
  170. sage/combinat/root_system/type_A.py +348 -0
  171. sage/combinat/root_system/type_A_affine.py +227 -0
  172. sage/combinat/root_system/type_A_infinity.py +241 -0
  173. sage/combinat/root_system/type_B.py +347 -0
  174. sage/combinat/root_system/type_BC_affine.py +287 -0
  175. sage/combinat/root_system/type_B_affine.py +216 -0
  176. sage/combinat/root_system/type_C.py +317 -0
  177. sage/combinat/root_system/type_C_affine.py +188 -0
  178. sage/combinat/root_system/type_D.py +357 -0
  179. sage/combinat/root_system/type_D_affine.py +208 -0
  180. sage/combinat/root_system/type_E.py +641 -0
  181. sage/combinat/root_system/type_E_affine.py +231 -0
  182. sage/combinat/root_system/type_F.py +387 -0
  183. sage/combinat/root_system/type_F_affine.py +137 -0
  184. sage/combinat/root_system/type_G.py +293 -0
  185. sage/combinat/root_system/type_G_affine.py +132 -0
  186. sage/combinat/root_system/type_H.py +105 -0
  187. sage/combinat/root_system/type_I.py +110 -0
  188. sage/combinat/root_system/type_Q.py +150 -0
  189. sage/combinat/root_system/type_affine.py +509 -0
  190. sage/combinat/root_system/type_dual.py +704 -0
  191. sage/combinat/root_system/type_folded.py +301 -0
  192. sage/combinat/root_system/type_marked.py +748 -0
  193. sage/combinat/root_system/type_reducible.py +601 -0
  194. sage/combinat/root_system/type_relabel.py +730 -0
  195. sage/combinat/root_system/type_super_A.py +837 -0
  196. sage/combinat/root_system/weight_lattice_realizations.py +1188 -0
  197. sage/combinat/root_system/weight_space.py +639 -0
  198. sage/combinat/root_system/weyl_characters.py +2238 -0
  199. sage/crypto/__init__.py +4 -0
  200. sage/crypto/all.py +28 -0
  201. sage/crypto/block_cipher/all.py +7 -0
  202. sage/crypto/block_cipher/des.py +1065 -0
  203. sage/crypto/block_cipher/miniaes.py +2171 -0
  204. sage/crypto/block_cipher/present.py +909 -0
  205. sage/crypto/block_cipher/sdes.py +1527 -0
  206. sage/crypto/boolean_function.cpython-314-x86_64-linux-gnu.so +0 -0
  207. sage/crypto/boolean_function.pxd +10 -0
  208. sage/crypto/boolean_function.pyx +1487 -0
  209. sage/crypto/cipher.py +78 -0
  210. sage/crypto/classical.py +3668 -0
  211. sage/crypto/classical_cipher.py +569 -0
  212. sage/crypto/cryptosystem.py +387 -0
  213. sage/crypto/key_exchange/all.py +7 -0
  214. sage/crypto/key_exchange/catalog.py +24 -0
  215. sage/crypto/key_exchange/diffie_hellman.py +323 -0
  216. sage/crypto/key_exchange/key_exchange_scheme.py +107 -0
  217. sage/crypto/lattice.py +312 -0
  218. sage/crypto/lfsr.py +295 -0
  219. sage/crypto/lwe.py +840 -0
  220. sage/crypto/mq/__init__.py +4 -0
  221. sage/crypto/mq/mpolynomialsystemgenerator.py +204 -0
  222. sage/crypto/mq/rijndael_gf.py +2345 -0
  223. sage/crypto/mq/sbox.py +7 -0
  224. sage/crypto/mq/sr.py +3344 -0
  225. sage/crypto/public_key/all.py +5 -0
  226. sage/crypto/public_key/blum_goldwasser.py +776 -0
  227. sage/crypto/sbox.cpython-314-x86_64-linux-gnu.so +0 -0
  228. sage/crypto/sbox.pyx +2090 -0
  229. sage/crypto/sboxes.py +2090 -0
  230. sage/crypto/stream.py +390 -0
  231. sage/crypto/stream_cipher.py +297 -0
  232. sage/crypto/util.py +519 -0
  233. sage/ext/all__sagemath_modules.py +1 -0
  234. sage/ext/interpreters/__init__.py +1 -0
  235. sage/ext/interpreters/all__sagemath_modules.py +2 -0
  236. sage/ext/interpreters/wrapper_cc.cpython-314-x86_64-linux-gnu.so +0 -0
  237. sage/ext/interpreters/wrapper_cc.pxd +30 -0
  238. sage/ext/interpreters/wrapper_cc.pyx +252 -0
  239. sage/ext/interpreters/wrapper_cdf.cpython-314-x86_64-linux-gnu.so +0 -0
  240. sage/ext/interpreters/wrapper_cdf.pxd +26 -0
  241. sage/ext/interpreters/wrapper_cdf.pyx +245 -0
  242. sage/ext/interpreters/wrapper_rdf.cpython-314-x86_64-linux-gnu.so +0 -0
  243. sage/ext/interpreters/wrapper_rdf.pxd +23 -0
  244. sage/ext/interpreters/wrapper_rdf.pyx +221 -0
  245. sage/ext/interpreters/wrapper_rr.cpython-314-x86_64-linux-gnu.so +0 -0
  246. sage/ext/interpreters/wrapper_rr.pxd +28 -0
  247. sage/ext/interpreters/wrapper_rr.pyx +335 -0
  248. sage/geometry/all__sagemath_modules.py +5 -0
  249. sage/geometry/toric_lattice.py +1745 -0
  250. sage/geometry/toric_lattice_element.cpython-314-x86_64-linux-gnu.so +0 -0
  251. sage/geometry/toric_lattice_element.pyx +432 -0
  252. sage/groups/abelian_gps/abelian_group.py +1925 -0
  253. sage/groups/abelian_gps/abelian_group_element.py +164 -0
  254. sage/groups/abelian_gps/all__sagemath_modules.py +5 -0
  255. sage/groups/abelian_gps/dual_abelian_group.py +421 -0
  256. sage/groups/abelian_gps/dual_abelian_group_element.py +179 -0
  257. sage/groups/abelian_gps/element_base.py +341 -0
  258. sage/groups/abelian_gps/values.py +488 -0
  259. sage/groups/additive_abelian/additive_abelian_group.py +476 -0
  260. sage/groups/additive_abelian/additive_abelian_wrapper.py +857 -0
  261. sage/groups/additive_abelian/all.py +4 -0
  262. sage/groups/additive_abelian/qmodnz.py +231 -0
  263. sage/groups/additive_abelian/qmodnz_element.py +349 -0
  264. sage/groups/affine_gps/affine_group.py +535 -0
  265. sage/groups/affine_gps/all.py +1 -0
  266. sage/groups/affine_gps/catalog.py +17 -0
  267. sage/groups/affine_gps/euclidean_group.py +246 -0
  268. sage/groups/affine_gps/group_element.py +562 -0
  269. sage/groups/all__sagemath_modules.py +12 -0
  270. sage/groups/galois_group.py +479 -0
  271. sage/groups/matrix_gps/all.py +4 -0
  272. sage/groups/matrix_gps/all__sagemath_modules.py +13 -0
  273. sage/groups/matrix_gps/catalog.py +26 -0
  274. sage/groups/matrix_gps/coxeter_group.py +927 -0
  275. sage/groups/matrix_gps/finitely_generated.py +487 -0
  276. sage/groups/matrix_gps/group_element.cpython-314-x86_64-linux-gnu.so +0 -0
  277. sage/groups/matrix_gps/group_element.pxd +11 -0
  278. sage/groups/matrix_gps/group_element.pyx +431 -0
  279. sage/groups/matrix_gps/linear.py +440 -0
  280. sage/groups/matrix_gps/matrix_group.py +617 -0
  281. sage/groups/matrix_gps/named_group.py +296 -0
  282. sage/groups/matrix_gps/orthogonal.py +544 -0
  283. sage/groups/matrix_gps/symplectic.py +251 -0
  284. sage/groups/matrix_gps/unitary.py +436 -0
  285. sage/groups/misc_gps/all__sagemath_modules.py +1 -0
  286. sage/groups/misc_gps/argument_groups.py +1905 -0
  287. sage/groups/misc_gps/imaginary_groups.py +479 -0
  288. sage/groups/perm_gps/all__sagemath_modules.py +1 -0
  289. sage/groups/perm_gps/partn_ref/all__sagemath_modules.py +1 -0
  290. sage/groups/perm_gps/partn_ref/refinement_binary.cpython-314-x86_64-linux-gnu.so +0 -0
  291. sage/groups/perm_gps/partn_ref/refinement_binary.pxd +41 -0
  292. sage/groups/perm_gps/partn_ref/refinement_binary.pyx +1167 -0
  293. sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-314-x86_64-linux-gnu.so +0 -0
  294. sage/groups/perm_gps/partn_ref/refinement_matrices.pxd +31 -0
  295. sage/groups/perm_gps/partn_ref/refinement_matrices.pyx +385 -0
  296. sage/homology/algebraic_topological_model.py +595 -0
  297. sage/homology/all.py +2 -0
  298. sage/homology/all__sagemath_modules.py +8 -0
  299. sage/homology/chain_complex.py +2148 -0
  300. sage/homology/chain_complex_homspace.py +165 -0
  301. sage/homology/chain_complex_morphism.py +629 -0
  302. sage/homology/chain_homotopy.py +604 -0
  303. sage/homology/chains.py +653 -0
  304. sage/homology/free_resolution.py +923 -0
  305. sage/homology/graded_resolution.py +567 -0
  306. sage/homology/hochschild_complex.py +756 -0
  307. sage/homology/homology_group.py +188 -0
  308. sage/homology/homology_morphism.py +422 -0
  309. sage/homology/homology_vector_space_with_basis.py +1454 -0
  310. sage/homology/koszul_complex.py +169 -0
  311. sage/homology/matrix_utils.py +205 -0
  312. sage/libs/all__sagemath_modules.py +1 -0
  313. sage/libs/gsl/__init__.py +1 -0
  314. sage/libs/gsl/airy.pxd +56 -0
  315. sage/libs/gsl/all.pxd +66 -0
  316. sage/libs/gsl/array.cpython-314-x86_64-linux-gnu.so +0 -0
  317. sage/libs/gsl/array.pxd +5 -0
  318. sage/libs/gsl/array.pyx +102 -0
  319. sage/libs/gsl/bessel.pxd +208 -0
  320. sage/libs/gsl/blas.pxd +116 -0
  321. sage/libs/gsl/blas_types.pxd +34 -0
  322. sage/libs/gsl/block.pxd +52 -0
  323. sage/libs/gsl/chebyshev.pxd +37 -0
  324. sage/libs/gsl/clausen.pxd +12 -0
  325. sage/libs/gsl/combination.pxd +47 -0
  326. sage/libs/gsl/complex.pxd +151 -0
  327. sage/libs/gsl/coulomb.pxd +30 -0
  328. sage/libs/gsl/coupling.pxd +21 -0
  329. sage/libs/gsl/dawson.pxd +12 -0
  330. sage/libs/gsl/debye.pxd +24 -0
  331. sage/libs/gsl/dilog.pxd +14 -0
  332. sage/libs/gsl/eigen.pxd +46 -0
  333. sage/libs/gsl/elementary.pxd +12 -0
  334. sage/libs/gsl/ellint.pxd +48 -0
  335. sage/libs/gsl/elljac.pxd +8 -0
  336. sage/libs/gsl/erf.pxd +32 -0
  337. sage/libs/gsl/errno.pxd +26 -0
  338. sage/libs/gsl/exp.pxd +44 -0
  339. sage/libs/gsl/expint.pxd +44 -0
  340. sage/libs/gsl/fermi_dirac.pxd +44 -0
  341. sage/libs/gsl/fft.pxd +121 -0
  342. sage/libs/gsl/fit.pxd +50 -0
  343. sage/libs/gsl/gamma.pxd +94 -0
  344. sage/libs/gsl/gegenbauer.pxd +26 -0
  345. sage/libs/gsl/histogram.pxd +176 -0
  346. sage/libs/gsl/hyperg.pxd +52 -0
  347. sage/libs/gsl/integration.pxd +69 -0
  348. sage/libs/gsl/interp.pxd +109 -0
  349. sage/libs/gsl/laguerre.pxd +24 -0
  350. sage/libs/gsl/lambert.pxd +16 -0
  351. sage/libs/gsl/legendre.pxd +90 -0
  352. sage/libs/gsl/linalg.pxd +185 -0
  353. sage/libs/gsl/log.pxd +26 -0
  354. sage/libs/gsl/math.pxd +43 -0
  355. sage/libs/gsl/matrix.pxd +143 -0
  356. sage/libs/gsl/matrix_complex.pxd +130 -0
  357. sage/libs/gsl/min.pxd +67 -0
  358. sage/libs/gsl/monte.pxd +56 -0
  359. sage/libs/gsl/ntuple.pxd +32 -0
  360. sage/libs/gsl/odeiv.pxd +70 -0
  361. sage/libs/gsl/permutation.pxd +78 -0
  362. sage/libs/gsl/poly.pxd +40 -0
  363. sage/libs/gsl/pow_int.pxd +12 -0
  364. sage/libs/gsl/psi.pxd +28 -0
  365. sage/libs/gsl/qrng.pxd +29 -0
  366. sage/libs/gsl/random.pxd +257 -0
  367. sage/libs/gsl/rng.pxd +100 -0
  368. sage/libs/gsl/roots.pxd +72 -0
  369. sage/libs/gsl/sort.pxd +36 -0
  370. sage/libs/gsl/statistics.pxd +59 -0
  371. sage/libs/gsl/sum.pxd +55 -0
  372. sage/libs/gsl/synchrotron.pxd +16 -0
  373. sage/libs/gsl/transport.pxd +24 -0
  374. sage/libs/gsl/trig.pxd +58 -0
  375. sage/libs/gsl/types.pxd +137 -0
  376. sage/libs/gsl/vector.pxd +101 -0
  377. sage/libs/gsl/vector_complex.pxd +83 -0
  378. sage/libs/gsl/wavelet.pxd +49 -0
  379. sage/libs/gsl/zeta.pxd +28 -0
  380. sage/libs/mpc/__init__.pxd +114 -0
  381. sage/libs/mpc/types.pxd +28 -0
  382. sage/libs/mpfr/__init__.pxd +299 -0
  383. sage/libs/mpfr/types.pxd +26 -0
  384. sage/libs/mpmath/__init__.py +1 -0
  385. sage/libs/mpmath/all.py +27 -0
  386. sage/libs/mpmath/all__sagemath_modules.py +1 -0
  387. sage/libs/mpmath/utils.cpython-314-x86_64-linux-gnu.so +0 -0
  388. sage/libs/mpmath/utils.pxd +4 -0
  389. sage/libs/mpmath/utils.pyx +319 -0
  390. sage/matrix/action.cpython-314-x86_64-linux-gnu.so +0 -0
  391. sage/matrix/action.pxd +26 -0
  392. sage/matrix/action.pyx +596 -0
  393. sage/matrix/all.py +9 -0
  394. sage/matrix/args.cpython-314-x86_64-linux-gnu.so +0 -0
  395. sage/matrix/args.pxd +144 -0
  396. sage/matrix/args.pyx +1668 -0
  397. sage/matrix/benchmark.py +1258 -0
  398. sage/matrix/berlekamp_massey.py +95 -0
  399. sage/matrix/compute_J_ideal.py +926 -0
  400. sage/matrix/constructor.cpython-314-x86_64-linux-gnu.so +0 -0
  401. sage/matrix/constructor.pyx +750 -0
  402. sage/matrix/docs.py +430 -0
  403. sage/matrix/echelon_matrix.cpython-314-x86_64-linux-gnu.so +0 -0
  404. sage/matrix/echelon_matrix.pyx +155 -0
  405. sage/matrix/matrix.pxd +2 -0
  406. sage/matrix/matrix0.cpython-314-x86_64-linux-gnu.so +0 -0
  407. sage/matrix/matrix0.pxd +68 -0
  408. sage/matrix/matrix0.pyx +6324 -0
  409. sage/matrix/matrix1.cpython-314-x86_64-linux-gnu.so +0 -0
  410. sage/matrix/matrix1.pxd +8 -0
  411. sage/matrix/matrix1.pyx +2851 -0
  412. sage/matrix/matrix2.cpython-314-x86_64-linux-gnu.so +0 -0
  413. sage/matrix/matrix2.pxd +25 -0
  414. sage/matrix/matrix2.pyx +20181 -0
  415. sage/matrix/matrix_cdv.cpython-314-x86_64-linux-gnu.so +0 -0
  416. sage/matrix/matrix_cdv.pxd +4 -0
  417. sage/matrix/matrix_cdv.pyx +93 -0
  418. sage/matrix/matrix_complex_double_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  419. sage/matrix/matrix_complex_double_dense.pxd +5 -0
  420. sage/matrix/matrix_complex_double_dense.pyx +98 -0
  421. sage/matrix/matrix_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  422. sage/matrix/matrix_dense.pxd +5 -0
  423. sage/matrix/matrix_dense.pyx +343 -0
  424. sage/matrix/matrix_domain_dense.pxd +5 -0
  425. sage/matrix/matrix_domain_sparse.pxd +5 -0
  426. sage/matrix/matrix_double_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  427. sage/matrix/matrix_double_dense.pxd +7 -0
  428. sage/matrix/matrix_double_dense.pyx +3906 -0
  429. sage/matrix/matrix_double_sparse.cpython-314-x86_64-linux-gnu.so +0 -0
  430. sage/matrix/matrix_double_sparse.pxd +6 -0
  431. sage/matrix/matrix_double_sparse.pyx +248 -0
  432. sage/matrix/matrix_generic_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  433. sage/matrix/matrix_generic_dense.pxd +7 -0
  434. sage/matrix/matrix_generic_dense.pyx +354 -0
  435. sage/matrix/matrix_generic_sparse.cpython-314-x86_64-linux-gnu.so +0 -0
  436. sage/matrix/matrix_generic_sparse.pxd +7 -0
  437. sage/matrix/matrix_generic_sparse.pyx +461 -0
  438. sage/matrix/matrix_laurent_mpolynomial_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  439. sage/matrix/matrix_laurent_mpolynomial_dense.pxd +5 -0
  440. sage/matrix/matrix_laurent_mpolynomial_dense.pyx +115 -0
  441. sage/matrix/matrix_misc.py +313 -0
  442. sage/matrix/matrix_numpy_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  443. sage/matrix/matrix_numpy_dense.pxd +14 -0
  444. sage/matrix/matrix_numpy_dense.pyx +450 -0
  445. sage/matrix/matrix_numpy_integer_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  446. sage/matrix/matrix_numpy_integer_dense.pxd +7 -0
  447. sage/matrix/matrix_numpy_integer_dense.pyx +59 -0
  448. sage/matrix/matrix_polynomial_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  449. sage/matrix/matrix_polynomial_dense.pxd +5 -0
  450. sage/matrix/matrix_polynomial_dense.pyx +5341 -0
  451. sage/matrix/matrix_real_double_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  452. sage/matrix/matrix_real_double_dense.pxd +7 -0
  453. sage/matrix/matrix_real_double_dense.pyx +122 -0
  454. sage/matrix/matrix_space.py +2848 -0
  455. sage/matrix/matrix_sparse.cpython-314-x86_64-linux-gnu.so +0 -0
  456. sage/matrix/matrix_sparse.pxd +5 -0
  457. sage/matrix/matrix_sparse.pyx +1222 -0
  458. sage/matrix/matrix_window.cpython-314-x86_64-linux-gnu.so +0 -0
  459. sage/matrix/matrix_window.pxd +37 -0
  460. sage/matrix/matrix_window.pyx +242 -0
  461. sage/matrix/misc_mpfr.cpython-314-x86_64-linux-gnu.so +0 -0
  462. sage/matrix/misc_mpfr.pyx +80 -0
  463. sage/matrix/operation_table.py +1182 -0
  464. sage/matrix/special.py +3666 -0
  465. sage/matrix/strassen.cpython-314-x86_64-linux-gnu.so +0 -0
  466. sage/matrix/strassen.pyx +851 -0
  467. sage/matrix/symplectic_basis.py +541 -0
  468. sage/matrix/template.pxd +6 -0
  469. sage/matrix/tests.py +71 -0
  470. sage/matroids/advanced.py +77 -0
  471. sage/matroids/all.py +13 -0
  472. sage/matroids/basis_exchange_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  473. sage/matroids/basis_exchange_matroid.pxd +96 -0
  474. sage/matroids/basis_exchange_matroid.pyx +2344 -0
  475. sage/matroids/basis_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  476. sage/matroids/basis_matroid.pxd +45 -0
  477. sage/matroids/basis_matroid.pyx +1217 -0
  478. sage/matroids/catalog.py +44 -0
  479. sage/matroids/chow_ring.py +473 -0
  480. sage/matroids/chow_ring_ideal.py +849 -0
  481. sage/matroids/circuit_closures_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  482. sage/matroids/circuit_closures_matroid.pxd +16 -0
  483. sage/matroids/circuit_closures_matroid.pyx +559 -0
  484. sage/matroids/circuits_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  485. sage/matroids/circuits_matroid.pxd +38 -0
  486. sage/matroids/circuits_matroid.pyx +947 -0
  487. sage/matroids/constructor.py +1086 -0
  488. sage/matroids/database_collections.py +365 -0
  489. sage/matroids/database_matroids.py +5338 -0
  490. sage/matroids/dual_matroid.py +583 -0
  491. sage/matroids/extension.cpython-314-x86_64-linux-gnu.so +0 -0
  492. sage/matroids/extension.pxd +34 -0
  493. sage/matroids/extension.pyx +519 -0
  494. sage/matroids/flats_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  495. sage/matroids/flats_matroid.pxd +28 -0
  496. sage/matroids/flats_matroid.pyx +715 -0
  497. sage/matroids/gammoid.py +600 -0
  498. sage/matroids/graphic_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  499. sage/matroids/graphic_matroid.pxd +39 -0
  500. sage/matroids/graphic_matroid.pyx +2024 -0
  501. sage/matroids/lean_matrix.cpython-314-x86_64-linux-gnu.so +0 -0
  502. sage/matroids/lean_matrix.pxd +126 -0
  503. sage/matroids/lean_matrix.pyx +3667 -0
  504. sage/matroids/linear_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  505. sage/matroids/linear_matroid.pxd +180 -0
  506. sage/matroids/linear_matroid.pyx +6649 -0
  507. sage/matroids/matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  508. sage/matroids/matroid.pxd +243 -0
  509. sage/matroids/matroid.pyx +8759 -0
  510. sage/matroids/matroids_catalog.py +190 -0
  511. sage/matroids/matroids_plot_helpers.py +890 -0
  512. sage/matroids/minor_matroid.py +480 -0
  513. sage/matroids/minorfix.h +9 -0
  514. sage/matroids/named_matroids.py +5 -0
  515. sage/matroids/rank_matroid.py +268 -0
  516. sage/matroids/set_system.cpython-314-x86_64-linux-gnu.so +0 -0
  517. sage/matroids/set_system.pxd +38 -0
  518. sage/matroids/set_system.pyx +800 -0
  519. sage/matroids/transversal_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  520. sage/matroids/transversal_matroid.pxd +14 -0
  521. sage/matroids/transversal_matroid.pyx +893 -0
  522. sage/matroids/union_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
  523. sage/matroids/union_matroid.pxd +20 -0
  524. sage/matroids/union_matroid.pyx +331 -0
  525. sage/matroids/unpickling.cpython-314-x86_64-linux-gnu.so +0 -0
  526. sage/matroids/unpickling.pyx +843 -0
  527. sage/matroids/utilities.py +809 -0
  528. sage/misc/all__sagemath_modules.py +20 -0
  529. sage/misc/c3.cpython-314-x86_64-linux-gnu.so +0 -0
  530. sage/misc/c3.pyx +238 -0
  531. sage/misc/compat.py +87 -0
  532. sage/misc/element_with_label.py +173 -0
  533. sage/misc/func_persist.py +79 -0
  534. sage/misc/pickle_old.cpython-314-x86_64-linux-gnu.so +0 -0
  535. sage/misc/pickle_old.pyx +19 -0
  536. sage/misc/proof.py +7 -0
  537. sage/misc/replace_dot_all.py +472 -0
  538. sage/misc/sagedoc_conf.py +168 -0
  539. sage/misc/sphinxify.py +167 -0
  540. sage/misc/test_class_pickling.py +85 -0
  541. sage/modules/all.py +42 -0
  542. sage/modules/complex_double_vector.py +25 -0
  543. sage/modules/diamond_cutting.py +380 -0
  544. sage/modules/fg_pid/all.py +1 -0
  545. sage/modules/fg_pid/fgp_element.py +456 -0
  546. sage/modules/fg_pid/fgp_module.py +2091 -0
  547. sage/modules/fg_pid/fgp_morphism.py +550 -0
  548. sage/modules/filtered_vector_space.py +1271 -0
  549. sage/modules/finite_submodule_iter.cpython-314-x86_64-linux-gnu.so +0 -0
  550. sage/modules/finite_submodule_iter.pxd +27 -0
  551. sage/modules/finite_submodule_iter.pyx +452 -0
  552. sage/modules/fp_graded/all.py +1 -0
  553. sage/modules/fp_graded/element.py +346 -0
  554. sage/modules/fp_graded/free_element.py +298 -0
  555. sage/modules/fp_graded/free_homspace.py +53 -0
  556. sage/modules/fp_graded/free_module.py +1060 -0
  557. sage/modules/fp_graded/free_morphism.py +217 -0
  558. sage/modules/fp_graded/homspace.py +563 -0
  559. sage/modules/fp_graded/module.py +1340 -0
  560. sage/modules/fp_graded/morphism.py +1990 -0
  561. sage/modules/fp_graded/steenrod/all.py +1 -0
  562. sage/modules/fp_graded/steenrod/homspace.py +65 -0
  563. sage/modules/fp_graded/steenrod/module.py +477 -0
  564. sage/modules/fp_graded/steenrod/morphism.py +404 -0
  565. sage/modules/fp_graded/steenrod/profile.py +241 -0
  566. sage/modules/free_module.py +8447 -0
  567. sage/modules/free_module_element.cpython-314-x86_64-linux-gnu.so +0 -0
  568. sage/modules/free_module_element.pxd +22 -0
  569. sage/modules/free_module_element.pyx +5445 -0
  570. sage/modules/free_module_homspace.py +369 -0
  571. sage/modules/free_module_integer.py +896 -0
  572. sage/modules/free_module_morphism.py +823 -0
  573. sage/modules/free_module_pseudohomspace.py +352 -0
  574. sage/modules/free_module_pseudomorphism.py +578 -0
  575. sage/modules/free_quadratic_module.py +1706 -0
  576. sage/modules/free_quadratic_module_integer_symmetric.py +1790 -0
  577. sage/modules/matrix_morphism.py +1745 -0
  578. sage/modules/misc.py +103 -0
  579. sage/modules/module_functors.py +192 -0
  580. sage/modules/multi_filtered_vector_space.py +719 -0
  581. sage/modules/ore_module.py +2208 -0
  582. sage/modules/ore_module_element.py +178 -0
  583. sage/modules/ore_module_homspace.py +147 -0
  584. sage/modules/ore_module_morphism.py +968 -0
  585. sage/modules/quotient_module.py +699 -0
  586. sage/modules/real_double_vector.py +22 -0
  587. sage/modules/submodule.py +255 -0
  588. sage/modules/tensor_operations.py +567 -0
  589. sage/modules/torsion_quadratic_module.py +1352 -0
  590. sage/modules/tutorial_free_modules.py +248 -0
  591. sage/modules/vector_complex_double_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  592. sage/modules/vector_complex_double_dense.pxd +6 -0
  593. sage/modules/vector_complex_double_dense.pyx +117 -0
  594. sage/modules/vector_double_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  595. sage/modules/vector_double_dense.pxd +6 -0
  596. sage/modules/vector_double_dense.pyx +604 -0
  597. sage/modules/vector_integer_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  598. sage/modules/vector_integer_dense.pxd +15 -0
  599. sage/modules/vector_integer_dense.pyx +361 -0
  600. sage/modules/vector_integer_sparse.cpython-314-x86_64-linux-gnu.so +0 -0
  601. sage/modules/vector_integer_sparse.pxd +29 -0
  602. sage/modules/vector_integer_sparse.pyx +406 -0
  603. sage/modules/vector_modn_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  604. sage/modules/vector_modn_dense.pxd +12 -0
  605. sage/modules/vector_modn_dense.pyx +394 -0
  606. sage/modules/vector_modn_sparse.cpython-314-x86_64-linux-gnu.so +0 -0
  607. sage/modules/vector_modn_sparse.pxd +21 -0
  608. sage/modules/vector_modn_sparse.pyx +298 -0
  609. sage/modules/vector_numpy_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  610. sage/modules/vector_numpy_dense.pxd +15 -0
  611. sage/modules/vector_numpy_dense.pyx +304 -0
  612. sage/modules/vector_numpy_integer_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  613. sage/modules/vector_numpy_integer_dense.pxd +7 -0
  614. sage/modules/vector_numpy_integer_dense.pyx +54 -0
  615. sage/modules/vector_rational_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  616. sage/modules/vector_rational_dense.pxd +15 -0
  617. sage/modules/vector_rational_dense.pyx +387 -0
  618. sage/modules/vector_rational_sparse.cpython-314-x86_64-linux-gnu.so +0 -0
  619. sage/modules/vector_rational_sparse.pxd +30 -0
  620. sage/modules/vector_rational_sparse.pyx +413 -0
  621. sage/modules/vector_real_double_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  622. sage/modules/vector_real_double_dense.pxd +6 -0
  623. sage/modules/vector_real_double_dense.pyx +126 -0
  624. sage/modules/vector_space_homspace.py +430 -0
  625. sage/modules/vector_space_morphism.py +989 -0
  626. sage/modules/with_basis/all.py +15 -0
  627. sage/modules/with_basis/cell_module.py +494 -0
  628. sage/modules/with_basis/indexed_element.cpython-314-x86_64-linux-gnu.so +0 -0
  629. sage/modules/with_basis/indexed_element.pxd +13 -0
  630. sage/modules/with_basis/indexed_element.pyx +1058 -0
  631. sage/modules/with_basis/invariant.py +1075 -0
  632. sage/modules/with_basis/morphism.py +1636 -0
  633. sage/modules/with_basis/representation.py +2939 -0
  634. sage/modules/with_basis/subquotient.py +685 -0
  635. sage/numerical/all__sagemath_modules.py +6 -0
  636. sage/numerical/gauss_legendre.cpython-314-x86_64-linux-gnu.so +0 -0
  637. sage/numerical/gauss_legendre.pyx +381 -0
  638. sage/numerical/optimize.py +910 -0
  639. sage/probability/all.py +10 -0
  640. sage/probability/probability_distribution.cpython-314-x86_64-linux-gnu.so +0 -0
  641. sage/probability/probability_distribution.pyx +1242 -0
  642. sage/probability/random_variable.py +411 -0
  643. sage/quadratic_forms/all.py +4 -0
  644. sage/quadratic_forms/all__sagemath_modules.py +15 -0
  645. sage/quadratic_forms/binary_qf.py +2042 -0
  646. sage/quadratic_forms/bqf_class_group.py +748 -0
  647. sage/quadratic_forms/constructions.py +93 -0
  648. sage/quadratic_forms/count_local_2.cpython-314-x86_64-linux-gnu.so +0 -0
  649. sage/quadratic_forms/count_local_2.pyx +365 -0
  650. sage/quadratic_forms/extras.py +195 -0
  651. sage/quadratic_forms/quadratic_form.py +1753 -0
  652. sage/quadratic_forms/quadratic_form__count_local_2.py +221 -0
  653. sage/quadratic_forms/quadratic_form__equivalence_testing.py +708 -0
  654. sage/quadratic_forms/quadratic_form__evaluate.cpython-314-x86_64-linux-gnu.so +0 -0
  655. sage/quadratic_forms/quadratic_form__evaluate.pyx +139 -0
  656. sage/quadratic_forms/quadratic_form__local_density_congruence.py +977 -0
  657. sage/quadratic_forms/quadratic_form__local_field_invariants.py +1072 -0
  658. sage/quadratic_forms/quadratic_form__neighbors.py +424 -0
  659. sage/quadratic_forms/quadratic_form__reduction_theory.py +488 -0
  660. sage/quadratic_forms/quadratic_form__split_local_covering.py +416 -0
  661. sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +657 -0
  662. sage/quadratic_forms/quadratic_form__theta.py +352 -0
  663. sage/quadratic_forms/quadratic_form__variable_substitutions.py +370 -0
  664. sage/quadratic_forms/random_quadraticform.py +209 -0
  665. sage/quadratic_forms/ternary.cpython-314-x86_64-linux-gnu.so +0 -0
  666. sage/quadratic_forms/ternary.pyx +1154 -0
  667. sage/quadratic_forms/ternary_qf.py +2027 -0
  668. sage/rings/all__sagemath_modules.py +28 -0
  669. sage/rings/asymptotic/all__sagemath_modules.py +1 -0
  670. sage/rings/asymptotic/misc.py +1252 -0
  671. sage/rings/cc.py +4 -0
  672. sage/rings/cfinite_sequence.py +1306 -0
  673. sage/rings/complex_conversion.cpython-314-x86_64-linux-gnu.so +0 -0
  674. sage/rings/complex_conversion.pxd +8 -0
  675. sage/rings/complex_conversion.pyx +23 -0
  676. sage/rings/complex_double.cpython-314-x86_64-linux-gnu.so +0 -0
  677. sage/rings/complex_double.pxd +21 -0
  678. sage/rings/complex_double.pyx +2654 -0
  679. sage/rings/complex_mpc.cpython-314-x86_64-linux-gnu.so +0 -0
  680. sage/rings/complex_mpc.pxd +21 -0
  681. sage/rings/complex_mpc.pyx +2576 -0
  682. sage/rings/complex_mpfr.cpython-314-x86_64-linux-gnu.so +0 -0
  683. sage/rings/complex_mpfr.pxd +18 -0
  684. sage/rings/complex_mpfr.pyx +3602 -0
  685. sage/rings/derivation.py +2334 -0
  686. sage/rings/finite_rings/all__sagemath_modules.py +1 -0
  687. sage/rings/finite_rings/maps_finite_field.py +191 -0
  688. sage/rings/function_field/all__sagemath_modules.py +8 -0
  689. sage/rings/function_field/derivations.py +102 -0
  690. sage/rings/function_field/derivations_rational.py +132 -0
  691. sage/rings/function_field/differential.py +853 -0
  692. sage/rings/function_field/divisor.py +1107 -0
  693. sage/rings/function_field/drinfeld_modules/action.py +199 -0
  694. sage/rings/function_field/drinfeld_modules/all.py +1 -0
  695. sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +673 -0
  696. sage/rings/function_field/drinfeld_modules/drinfeld_module.py +2087 -0
  697. sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1131 -0
  698. sage/rings/function_field/drinfeld_modules/homset.py +420 -0
  699. sage/rings/function_field/drinfeld_modules/morphism.py +820 -0
  700. sage/rings/function_field/hermite_form_polynomial.cpython-314-x86_64-linux-gnu.so +0 -0
  701. sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
  702. sage/rings/function_field/khuri_makdisi.cpython-314-x86_64-linux-gnu.so +0 -0
  703. sage/rings/function_field/khuri_makdisi.pyx +935 -0
  704. sage/rings/invariants/all.py +4 -0
  705. sage/rings/invariants/invariant_theory.py +4597 -0
  706. sage/rings/invariants/reconstruction.py +395 -0
  707. sage/rings/polynomial/all__sagemath_modules.py +17 -0
  708. sage/rings/polynomial/integer_valued_polynomials.py +1230 -0
  709. sage/rings/polynomial/laurent_polynomial_mpair.cpython-314-x86_64-linux-gnu.so +0 -0
  710. sage/rings/polynomial/laurent_polynomial_mpair.pxd +15 -0
  711. sage/rings/polynomial/laurent_polynomial_mpair.pyx +2023 -0
  712. sage/rings/polynomial/ore_function_element.py +952 -0
  713. sage/rings/polynomial/ore_function_field.py +1028 -0
  714. sage/rings/polynomial/ore_polynomial_element.cpython-314-x86_64-linux-gnu.so +0 -0
  715. sage/rings/polynomial/ore_polynomial_element.pxd +48 -0
  716. sage/rings/polynomial/ore_polynomial_element.pyx +3145 -0
  717. sage/rings/polynomial/ore_polynomial_ring.py +1334 -0
  718. sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  719. sage/rings/polynomial/polynomial_real_mpfr_dense.pyx +788 -0
  720. sage/rings/polynomial/q_integer_valued_polynomials.py +1264 -0
  721. sage/rings/polynomial/skew_polynomial_element.cpython-314-x86_64-linux-gnu.so +0 -0
  722. sage/rings/polynomial/skew_polynomial_element.pxd +9 -0
  723. sage/rings/polynomial/skew_polynomial_element.pyx +684 -0
  724. sage/rings/polynomial/skew_polynomial_finite_field.cpython-314-x86_64-linux-gnu.so +0 -0
  725. sage/rings/polynomial/skew_polynomial_finite_field.pxd +19 -0
  726. sage/rings/polynomial/skew_polynomial_finite_field.pyx +1093 -0
  727. sage/rings/polynomial/skew_polynomial_finite_order.cpython-314-x86_64-linux-gnu.so +0 -0
  728. sage/rings/polynomial/skew_polynomial_finite_order.pxd +10 -0
  729. sage/rings/polynomial/skew_polynomial_finite_order.pyx +567 -0
  730. sage/rings/polynomial/skew_polynomial_ring.py +908 -0
  731. sage/rings/real_double_element_gsl.cpython-314-x86_64-linux-gnu.so +0 -0
  732. sage/rings/real_double_element_gsl.pxd +8 -0
  733. sage/rings/real_double_element_gsl.pyx +794 -0
  734. sage/rings/real_field.py +58 -0
  735. sage/rings/real_mpfr.cpython-314-x86_64-linux-gnu.so +0 -0
  736. sage/rings/real_mpfr.pxd +29 -0
  737. sage/rings/real_mpfr.pyx +6122 -0
  738. sage/rings/ring_extension.cpython-314-x86_64-linux-gnu.so +0 -0
  739. sage/rings/ring_extension.pxd +42 -0
  740. sage/rings/ring_extension.pyx +2779 -0
  741. sage/rings/ring_extension_conversion.cpython-314-x86_64-linux-gnu.so +0 -0
  742. sage/rings/ring_extension_conversion.pxd +16 -0
  743. sage/rings/ring_extension_conversion.pyx +462 -0
  744. sage/rings/ring_extension_element.cpython-314-x86_64-linux-gnu.so +0 -0
  745. sage/rings/ring_extension_element.pxd +21 -0
  746. sage/rings/ring_extension_element.pyx +1635 -0
  747. sage/rings/ring_extension_homset.py +64 -0
  748. sage/rings/ring_extension_morphism.cpython-314-x86_64-linux-gnu.so +0 -0
  749. sage/rings/ring_extension_morphism.pxd +35 -0
  750. sage/rings/ring_extension_morphism.pyx +920 -0
  751. sage/schemes/all__sagemath_modules.py +1 -0
  752. sage/schemes/projective/all__sagemath_modules.py +1 -0
  753. sage/schemes/projective/coherent_sheaf.py +300 -0
  754. sage/schemes/projective/cohomology.py +510 -0
  755. sage/stats/all.py +15 -0
  756. sage/stats/basic_stats.py +489 -0
  757. sage/stats/distributions/all.py +7 -0
  758. sage/stats/distributions/catalog.py +34 -0
  759. sage/stats/distributions/dgs.h +50 -0
  760. sage/stats/distributions/dgs.pxd +111 -0
  761. sage/stats/distributions/dgs_bern.h +400 -0
  762. sage/stats/distributions/dgs_gauss.h +614 -0
  763. sage/stats/distributions/dgs_misc.h +104 -0
  764. sage/stats/distributions/discrete_gaussian_integer.cpython-314-x86_64-linux-gnu.so +0 -0
  765. sage/stats/distributions/discrete_gaussian_integer.pxd +14 -0
  766. sage/stats/distributions/discrete_gaussian_integer.pyx +498 -0
  767. sage/stats/distributions/discrete_gaussian_lattice.py +908 -0
  768. sage/stats/distributions/discrete_gaussian_polynomial.py +141 -0
  769. sage/stats/hmm/all.py +15 -0
  770. sage/stats/hmm/chmm.cpython-314-x86_64-linux-gnu.so +0 -0
  771. sage/stats/hmm/chmm.pyx +1595 -0
  772. sage/stats/hmm/distributions.cpython-314-x86_64-linux-gnu.so +0 -0
  773. sage/stats/hmm/distributions.pxd +29 -0
  774. sage/stats/hmm/distributions.pyx +531 -0
  775. sage/stats/hmm/hmm.cpython-314-x86_64-linux-gnu.so +0 -0
  776. sage/stats/hmm/hmm.pxd +17 -0
  777. sage/stats/hmm/hmm.pyx +1388 -0
  778. sage/stats/hmm/util.cpython-314-x86_64-linux-gnu.so +0 -0
  779. sage/stats/hmm/util.pxd +7 -0
  780. sage/stats/hmm/util.pyx +165 -0
  781. sage/stats/intlist.cpython-314-x86_64-linux-gnu.so +0 -0
  782. sage/stats/intlist.pxd +14 -0
  783. sage/stats/intlist.pyx +588 -0
  784. sage/stats/r.py +49 -0
  785. sage/stats/time_series.cpython-314-x86_64-linux-gnu.so +0 -0
  786. sage/stats/time_series.pxd +6 -0
  787. sage/stats/time_series.pyx +2546 -0
  788. sage/tensor/all.py +2 -0
  789. sage/tensor/modules/all.py +8 -0
  790. sage/tensor/modules/alternating_contr_tensor.py +761 -0
  791. sage/tensor/modules/comp.py +5598 -0
  792. sage/tensor/modules/ext_pow_free_module.py +824 -0
  793. sage/tensor/modules/finite_rank_free_module.py +3589 -0
  794. sage/tensor/modules/format_utilities.py +333 -0
  795. sage/tensor/modules/free_module_alt_form.py +858 -0
  796. sage/tensor/modules/free_module_automorphism.py +1207 -0
  797. sage/tensor/modules/free_module_basis.py +1074 -0
  798. sage/tensor/modules/free_module_element.py +284 -0
  799. sage/tensor/modules/free_module_homset.py +652 -0
  800. sage/tensor/modules/free_module_linear_group.py +564 -0
  801. sage/tensor/modules/free_module_morphism.py +1581 -0
  802. sage/tensor/modules/free_module_tensor.py +3289 -0
  803. sage/tensor/modules/reflexive_module.py +386 -0
  804. sage/tensor/modules/tensor_free_module.py +780 -0
  805. sage/tensor/modules/tensor_free_submodule.py +538 -0
  806. sage/tensor/modules/tensor_free_submodule_basis.py +140 -0
  807. sage/tensor/modules/tensor_with_indices.py +1043 -0
@@ -0,0 +1,748 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ """
3
+ Root system data for Cartan types with marked nodes
4
+ """
5
+ #*****************************************************************************
6
+ # Copyright (C) 2014 Travis Scrimshaw <tscrim at ucdavis.edu>
7
+ #
8
+ # Distributed under the terms of the GNU General Public License (GPL)
9
+ # http://www.gnu.org/licenses/
10
+ #*****************************************************************************
11
+
12
+ from sage.combinat.root_system import cartan_type
13
+ from sage.combinat.root_system import ambient_space
14
+ from sage.combinat.root_system.root_lattice_realizations import RootLatticeRealizations
15
+ from sage.misc.lazy_attribute import lazy_attribute
16
+ from sage.misc.cachefunc import cached_method
17
+
18
+
19
+ class CartanType(cartan_type.CartanType_decorator):
20
+ r"""
21
+ A class for Cartan types with marked nodes.
22
+
23
+ INPUT:
24
+
25
+ - ``ct`` -- a Cartan type
26
+
27
+ - ``marked_nodes`` -- list of marked nodes
28
+
29
+ EXAMPLES:
30
+
31
+ We take the Cartan type `B_4`::
32
+
33
+ sage: T = CartanType(['B',4])
34
+ sage: T.dynkin_diagram() # needs sage.graphs
35
+ O---O---O=>=O
36
+ 1 2 3 4
37
+ B4
38
+
39
+ And mark some of its nodes::
40
+
41
+ sage: T = T.marked_nodes([2,3])
42
+ sage: T.dynkin_diagram() # needs sage.graphs
43
+ O---X---X=>=O
44
+ 1 2 3 4
45
+ B4 with nodes (2, 3) marked
46
+
47
+ Markings are not additive::
48
+
49
+ sage: T.marked_nodes([1,4]).dynkin_diagram() # needs sage.graphs
50
+ X---O---O=>=X
51
+ 1 2 3 4
52
+ B4 with nodes (1, 4) marked
53
+
54
+ And trivial relabelling are honoured nicely::
55
+
56
+ sage: T = T.marked_nodes([])
57
+ sage: T.dynkin_diagram() # needs sage.graphs
58
+ O---O---O=>=O
59
+ 1 2 3 4
60
+ B4
61
+ """
62
+ @staticmethod
63
+ def __classcall__(cls, ct, marked_nodes):
64
+ """
65
+ This standardizes the input of the constructor to ensure
66
+ unique representation.
67
+
68
+ EXAMPLES::
69
+
70
+ sage: ct1 = CartanType(['B',2]).marked_nodes([1,2])
71
+ sage: ct2 = CartanType(['B',2]).marked_nodes([2,1])
72
+ sage: ct3 = CartanType(['B',2]).marked_nodes((1,2))
73
+ sage: ct4 = CartanType(['D',4]).marked_nodes([1,2])
74
+ sage: ct1 is ct2
75
+ True
76
+ sage: ct1 is ct3
77
+ True
78
+ sage: ct1 == ct4
79
+ False
80
+ """
81
+ ct = cartan_type.CartanType(ct)
82
+ if not marked_nodes:
83
+ return ct
84
+ if any(node not in ct.index_set() for node in marked_nodes):
85
+ raise ValueError("invalid marked node")
86
+ marked_nodes = tuple(sorted(marked_nodes))
87
+ return super().__classcall__(cls, ct, marked_nodes)
88
+
89
+ def __init__(self, ct, marked_nodes):
90
+ """
91
+ Return an isomorphic Cartan type obtained by marking the
92
+ nodes of the Dynkin diagram.
93
+
94
+ TESTS:
95
+
96
+ Test that the produced Cartan type is in the appropriate
97
+ abstract classes::
98
+
99
+ sage: ct = CartanType(['B',4]).marked_nodes([1,2])
100
+ sage: TestSuite(ct).run()
101
+ sage: from sage.combinat.root_system import cartan_type
102
+ sage: isinstance(ct, cartan_type.CartanType_finite)
103
+ True
104
+ sage: isinstance(ct, cartan_type.CartanType_simple)
105
+ True
106
+ sage: isinstance(ct, cartan_type.CartanType_affine)
107
+ False
108
+ sage: isinstance(ct, cartan_type.CartanType_crystallographic)
109
+ True
110
+ sage: isinstance(ct, cartan_type.CartanType_simply_laced)
111
+ False
112
+
113
+ sage: ct = CartanType(['A',3,1]).marked_nodes([1,2])
114
+ sage: TestSuite(ct).run()
115
+ sage: isinstance(ct, cartan_type.CartanType_simple)
116
+ True
117
+ sage: isinstance(ct, cartan_type.CartanType_finite)
118
+ False
119
+ sage: isinstance(ct, cartan_type.CartanType_affine)
120
+ True
121
+ sage: isinstance(ct, cartan_type.CartanType_crystallographic)
122
+ True
123
+ sage: isinstance(ct, cartan_type.CartanType_simply_laced)
124
+ True
125
+ """
126
+ cartan_type.CartanType_decorator.__init__(self, ct)
127
+ self._marked_nodes = marked_nodes
128
+ # TODO: design an appropriate infrastructure to handle this
129
+ # automatically? Maybe using categories and axioms?
130
+ # See also type_dual.CartanType.__init__
131
+ if ct.is_finite():
132
+ self.__class__ = CartanType_finite
133
+ elif ct.is_affine():
134
+ self.__class__ = CartanType_affine
135
+ abstract_classes = tuple(cls
136
+ for cls in self._stable_abstract_classes
137
+ if isinstance(ct, cls))
138
+ if abstract_classes:
139
+ self._add_abstract_superclass(abstract_classes)
140
+
141
+ # For each class cls in _stable_abstract_classes, if ct is an
142
+ # instance of A then ct.relabel(...) is put in this class as well.
143
+ # The order is relevant to avoid MRO issues!
144
+ _stable_abstract_classes = [
145
+ cartan_type.CartanType_finite,
146
+ cartan_type.CartanType_affine,
147
+ cartan_type.CartanType_simple,
148
+ cartan_type.CartanType_simply_laced,
149
+ cartan_type.CartanType_crystallographic]
150
+
151
+ def _repr_(self, compact=False):
152
+ """
153
+ EXAMPLES::
154
+
155
+ sage: CartanType(['F', 4]).marked_nodes([2])
156
+ ['F', 4] with node 2 marked
157
+
158
+ sage: CartanType(['F', 4, 1]).dual().marked_nodes([0, 2])
159
+ ['F', 4, 1]^* with nodes (0, 2) marked
160
+
161
+ sage: CartanType(['F', 4, 1]).marked_nodes([0, 2])._repr_(compact = True)
162
+ 'F4~ with nodes (0, 2) marked'
163
+
164
+ sage: D = DynkinDiagram("A2") # needs sage.graphs
165
+ sage: D.marked_nodes([1]) # needs sage.graphs
166
+ O---O
167
+ 1 2
168
+ A2 with node 1 marked
169
+
170
+ sage: CM = CartanMatrix([[2,-4],[-5,2]]) # needs sage.graphs
171
+ sage: CM.marked_nodes([1]) # needs sage.graphs
172
+ [ 2 -4]
173
+ [-5 2] with node 1 marked
174
+ """
175
+ if not compact:
176
+ base = repr(self._type)
177
+ else:
178
+ try:
179
+ base = self._type._repr_(compact=True)
180
+ except TypeError:
181
+ base = repr(self._type)
182
+ if len(self._marked_nodes) == 1:
183
+ return base + " with node {} marked".format(self._marked_nodes[0])
184
+ return base + " with nodes {} marked".format(self._marked_nodes)
185
+
186
+ def _latex_(self):
187
+ r"""
188
+ Return a latex representation of ``self``.
189
+
190
+ EXAMPLES::
191
+
192
+ sage: ct = CartanType(['A',4]).marked_nodes([1, 3])
193
+ sage: latex(ct)
194
+ A_{4} \text{ with nodes $\left(1, 3\right)$ marked}
195
+
196
+ A more compact, but potentially confusing, representation can
197
+ be obtained using the ``latex_marked`` global option::
198
+
199
+ sage: CartanType.options['latex_marked'] = False
200
+ sage: latex(ct)
201
+ A_{4}
202
+ sage: CartanType.options['latex_marked'] = True
203
+
204
+ Kac's notations are implemented::
205
+
206
+ sage: CartanType.options['notation'] = 'Kac'
207
+ sage: latex(CartanType(['D',4,3]).marked_nodes([0]))
208
+ D_4^{(3)} \text{ with node $0$ marked}
209
+ sage: CartanType.options._reset()
210
+ """
211
+ from sage.misc.latex import latex
212
+ ret = self._type._latex_()
213
+ if self.options('latex_marked'):
214
+ if len(self._marked_nodes) == 1:
215
+ ret += " \\text{{ with node ${}$ marked}} ".format(latex(self._marked_nodes[0]))
216
+ else:
217
+ ret += " \\text{{ with nodes ${}$ marked}} ".format(latex(self._marked_nodes))
218
+ return ret
219
+
220
+ def _ascii_art_node(self, label):
221
+ """
222
+ Return the ascii art for the node labeled by ``label``.
223
+
224
+ EXAMPLES::
225
+
226
+ sage: ct = CartanType(['A',4]).marked_nodes([1, 2])
227
+ sage: ct._ascii_art_node(1)
228
+ 'X'
229
+ sage: ct._ascii_art_node(3)
230
+ 'O'
231
+ sage: CartanType.options._reset()
232
+ """
233
+ if label in self._marked_nodes:
234
+ return self.options('marked_node_str')
235
+ return 'O'
236
+
237
+ def _latex_draw_node(self, x, y, label, position='below=4pt', fill='white'):
238
+ r"""
239
+ Draw (possibly marked [crossed out]) circular node ``i`` at the
240
+ position ``(x,y)`` with node label ``label`` .
241
+
242
+ - ``position`` -- position of the label relative to the node
243
+ - ``anchor`` -- (optional) the anchor point for the label
244
+
245
+ EXAMPLES::
246
+
247
+ sage: CartanType.options(mark_special_node='both')
248
+ sage: CartanType(['A',3,1]).marked_nodes([1,3])._latex_draw_node(0, 0, 0)
249
+ '\\draw[fill=black] (0 cm, 0 cm) circle (.25cm) node[below=4pt]{$0$};\n'
250
+ sage: CartanType.options._reset()
251
+ """
252
+ ret = cartan_type.CartanType_abstract._latex_draw_node(self, x, y, label, position, fill)
253
+ if label in self._marked_nodes:
254
+ ret += self._latex_draw_mark(x, y)
255
+ return ret
256
+
257
+ def _latex_draw_mark(self, x, y, color='black', thickness='thin'):
258
+ r"""
259
+ Draw a mark as a cross `\times` at the point ``(x, y)``.
260
+
261
+ INPUT:
262
+
263
+ - ``(x, y)`` -- the coordinates of a point, in cm
264
+
265
+ - ``color`` -- the color of the mark
266
+
267
+ This is an internal function used to assist drawing marked points of
268
+ the Dynkin diagrams. See e.g.
269
+ :meth:`~sage.combinat.root_system.type_marked.CartanType._latex_dynkin_diagram`.
270
+
271
+ EXAMPLES::
272
+
273
+ sage: print(CartanType(['B',2]).marked_nodes([1,2])._latex_draw_mark(1, 0))
274
+ \draw[shift={(1, 0)}, black, thin] (0.25cm, 0.25cm) -- (-0.25cm, -0.25cm);
275
+ \draw[shift={(1, 0)}, black, thin] (0.25cm, -0.25cm) -- (-0.25cm, 0.25cm);
276
+ <BLANKLINE>
277
+ """
278
+ ret = "\\draw[shift={{({}, {})}}, {}, {}] (0.25cm, 0.25cm) -- (-0.25cm, -0.25cm);\n".format(x, y, color, thickness)
279
+ ret += "\\draw[shift={{({}, {})}}, {}, {}] (0.25cm, -0.25cm) -- (-0.25cm, 0.25cm);\n".format(x, y, color, thickness)
280
+ return ret
281
+
282
+ def _latex_dynkin_diagram(self, label=None, node=None, node_dist=2):
283
+ r"""
284
+ Return a latex representation of the Dynkin diagram.
285
+
286
+ EXAMPLES::
287
+
288
+ sage: print(CartanType(['A',4]).marked_nodes([1,3])._latex_dynkin_diagram())
289
+ \draw (0 cm,0) -- (6 cm,0);
290
+ \draw[fill=white] (0 cm, 0 cm) circle (.25cm) node[below=4pt]{$1$};
291
+ \draw[shift={(0, 0)}, black, thin] (0.25cm, 0.25cm) -- (-0.25cm, -0.25cm);
292
+ \draw[shift={(0, 0)}, black, thin] (0.25cm, -0.25cm) -- (-0.25cm, 0.25cm);
293
+ \draw[fill=white] (2 cm, 0 cm) circle (.25cm) node[below=4pt]{$2$};
294
+ \draw[fill=white] (4 cm, 0 cm) circle (.25cm) node[below=4pt]{$3$};
295
+ \draw[shift={(4, 0)}, black, thin] (0.25cm, 0.25cm) -- (-0.25cm, -0.25cm);
296
+ \draw[shift={(4, 0)}, black, thin] (0.25cm, -0.25cm) -- (-0.25cm, 0.25cm);
297
+ \draw[fill=white] (6 cm, 0 cm) circle (.25cm) node[below=4pt]{$4$};
298
+ <BLANKLINE>
299
+ """
300
+ if label is None:
301
+ label = lambda i: i
302
+ if node is None:
303
+ node = self._latex_draw_node
304
+ return self._type._latex_dynkin_diagram(label, node, node_dist)
305
+
306
+ def ascii_art(self, label=None, node=None):
307
+ """
308
+ Return an ascii art representation of this Cartan type.
309
+
310
+ EXAMPLES::
311
+
312
+ sage: print(CartanType(["G", 2]).marked_nodes([2]).ascii_art())
313
+ 3
314
+ O=<=X
315
+ 1 2
316
+ sage: print(CartanType(["B", 3, 1]).marked_nodes([0, 3]).ascii_art())
317
+ X 0
318
+ |
319
+ |
320
+ O---O=>=X
321
+ 1 2 3
322
+ sage: print(CartanType(["F", 4, 1]).marked_nodes([0, 2]).ascii_art())
323
+ X---O---X=>=O---O
324
+ 0 1 2 3 4
325
+ """
326
+ if label is None:
327
+ label = lambda i: i
328
+ if node is None:
329
+ node = self._ascii_art_node
330
+ return self._type.ascii_art(label, node)
331
+
332
+ def dynkin_diagram(self):
333
+ """
334
+ Return the Dynkin diagram for this Cartan type.
335
+
336
+ EXAMPLES::
337
+
338
+ sage: CartanType(["G", 2]).marked_nodes([2]).dynkin_diagram() # needs sage.graphs
339
+ 3
340
+ O=<=X
341
+ 1 2
342
+ G2 with node 2 marked
343
+
344
+ TESTS:
345
+
346
+ To be compared with the examples in :meth:`ascii_art`::
347
+
348
+ sage: CartanType(["G", 2]).relabel({1:2,2:1}).dynkin_diagram().edges(sort=True) # needs sage.graphs
349
+ [(1, 2, 3), (2, 1, 1)]
350
+ sage: CartanType(["B", 3, 1]).relabel([1,3,2,0]).dynkin_diagram().edges(sort=True) # needs sage.graphs
351
+ [(0, 2, 1), (1, 2, 1), (2, 0, 2), (2, 1, 1), (2, 3, 1), (3, 2, 1)]
352
+ sage: CartanType(["F", 4, 1]).relabel(lambda n: 4-n).dynkin_diagram().edges(sort=True) # needs sage.graphs
353
+ [(0, 1, 1), (1, 0, 1), (1, 2, 1), (2, 1, 2), (2, 3, 1), (3, 2, 1), (3, 4, 1), (4, 3, 1)]
354
+ """
355
+ result = self._type.dynkin_diagram().copy()
356
+ result._cartan_type = self
357
+ return result
358
+
359
+ def dual(self):
360
+ """
361
+ Implement
362
+ :meth:`sage.combinat.root_system.cartan_type.CartanType_abstract.dual`,
363
+ using that taking the dual and marking nodes are commuting operations.
364
+
365
+ EXAMPLES::
366
+
367
+ sage: T = CartanType(["BC",3, 2])
368
+ sage: T.marked_nodes([1,3]).dual().dynkin_diagram() # needs sage.graphs
369
+ O=>=X---O=>=X
370
+ 0 1 2 3
371
+ BC3~* with nodes (1, 3) marked
372
+ sage: T.dual().marked_nodes([1,3]).dynkin_diagram() # needs sage.graphs
373
+ O=>=X---O=>=X
374
+ 0 1 2 3
375
+ BC3~* with nodes (1, 3) marked
376
+ """
377
+ return self._type.dual().marked_nodes(self._marked_nodes)
378
+
379
+ def relabel(self, relabelling):
380
+ """
381
+ Return the relabelling of ``self``.
382
+
383
+ EXAMPLES::
384
+
385
+ sage: T = CartanType(["BC",3, 2])
386
+ sage: T.marked_nodes([1,3]).relabel(lambda x: x+2).dynkin_diagram() # needs sage.graphs
387
+ O=<=X---O=<=X
388
+ 2 3 4 5
389
+ BC3~ relabelled by {0: 2, 1: 3, 2: 4, 3: 5} with nodes (3, 5) marked
390
+ sage: T.relabel(lambda x: x+2).marked_nodes([3,5]).dynkin_diagram() # needs sage.graphs
391
+ O=<=X---O=<=X
392
+ 2 3 4 5
393
+ BC3~ relabelled by {0: 2, 1: 3, 2: 4, 3: 5} with nodes (3, 5) marked
394
+ """
395
+ rct = self._type.relabel(relabelling)
396
+ rd = rct._relabelling
397
+ marked_nodes = [rd[node] for node in self._marked_nodes]
398
+ return rct.marked_nodes(marked_nodes)
399
+
400
+ def marked_nodes(self, marked_nodes):
401
+ """
402
+ Return ``self`` with nodes ``marked_nodes`` marked.
403
+
404
+ EXAMPLES::
405
+
406
+ sage: ct = CartanType(['A',12])
407
+ sage: m = ct.marked_nodes([1,4,6,7,8,12]); m
408
+ ['A', 12] with nodes (1, 4, 6, 7, 8, 12) marked
409
+ sage: m.marked_nodes([2])
410
+ ['A', 12] with node 2 marked
411
+ sage: m.marked_nodes([]) is ct
412
+ True
413
+ """
414
+ if not marked_nodes:
415
+ return self._type
416
+ return CartanType(self._type, marked_nodes)
417
+
418
+ def _default_folded_cartan_type(self):
419
+ """
420
+ Return the default folded Cartan type.
421
+
422
+ If a node `a` is marked, then all nodes in the orbit of `a` are marked
423
+ in the ambient type.
424
+
425
+ EXAMPLES::
426
+
427
+ sage: fct = CartanType(['D', 4, 3])._default_folded_cartan_type(); fct
428
+ ['G', 2, 1]^* relabelled by {0: 0, 1: 2, 2: 1} as a folding of ['D', 4, 1]
429
+ sage: fct.folding_orbit()
430
+ Finite family {0: (0,), 1: (2,), 2: (1, 3, 4)}
431
+ sage: CartanType(['G',2,1]).dual()._default_folded_cartan_type().folding_orbit()
432
+ Finite family {0: (0,), 1: (1, 3, 4), 2: (2,)}
433
+ sage: CartanType(['C',3,1]).relabel({0:1, 1:0, 2:3, 3:2}).as_folding().scaling_factors() # needs sage.graphs
434
+ Finite family {0: 1, 1: 2, 2: 2, 3: 1}
435
+ """
436
+ from sage.combinat.root_system.type_folded import CartanTypeFolded
437
+ vct = self._type._default_folded_cartan_type()
438
+ sigma = vct.folding_orbit()
439
+ marked_nodes = sum([sigma[i] for i in self._marked_nodes], ())
440
+ folding = vct._folding.marked_nodes(marked_nodes)
441
+ return CartanTypeFolded(self, folding, sigma)
442
+
443
+ def type(self):
444
+ """
445
+ Return the type of ``self`` or ``None`` if unknown.
446
+
447
+ EXAMPLES::
448
+
449
+ sage: ct = CartanType(['F', 4]).marked_nodes([1,3])
450
+ sage: ct.type()
451
+ 'F'
452
+ """
453
+ return self._type.type()
454
+
455
+ ###########################################################################
456
+
457
+
458
+ class AmbientSpace(ambient_space.AmbientSpace):
459
+ """
460
+ Ambient space for a marked finite Cartan type.
461
+
462
+ It is constructed in the canonical way from the ambient space of
463
+ the original Cartan type.
464
+
465
+ EXAMPLES::
466
+
467
+ sage: L = CartanType(["F",4]).marked_nodes([1,3]).root_system().ambient_space(); L
468
+ Ambient space of the Root system of type ['F', 4] with nodes (1, 3) marked
469
+ sage: TestSuite(L).run() # needs sage.graphs
470
+ """
471
+ @lazy_attribute
472
+ def _space(self):
473
+ """
474
+ The ambient space this is a marking of.
475
+
476
+ EXAMPLES::
477
+
478
+ sage: L = CartanType(["F",4]).marked_nodes([1,3]).root_system().ambient_space()
479
+ sage: L._space
480
+ Ambient space of the Root system of type ['F', 4]
481
+ """
482
+ K = self.base_ring()
483
+ return self.cartan_type()._type.root_system().ambient_space(K)
484
+
485
+ def dimension(self):
486
+ """
487
+ Return the dimension of this ambient space.
488
+
489
+ .. SEEALSO:: :meth:`sage.combinat.root_system.ambient_space.AmbientSpace.dimension`
490
+
491
+ EXAMPLES::
492
+
493
+ sage: L = CartanType(["F",4]).marked_nodes([1,3]).root_system().ambient_space()
494
+ sage: L.dimension()
495
+ 4
496
+ """
497
+ # Can't yet use _dual_space for the base ring (and cartan_type?) is not yet initialized
498
+ return self.root_system.cartan_type()._type.root_system().ambient_space().dimension()
499
+
500
+ @cached_method
501
+ def simple_root(self, i):
502
+ """
503
+ Return the ``i``-th simple root.
504
+
505
+ It is constructed by looking up the corresponding simple
506
+ coroot in the ambient space for the original Cartan type.
507
+
508
+ EXAMPLES::
509
+
510
+ sage: L = CartanType(["F",4]).marked_nodes([1,3]).root_system().ambient_space()
511
+ sage: L.simple_root(1)
512
+ (0, 1, -1, 0)
513
+ sage: L.simple_roots()
514
+ Finite family {1: (0, 1, -1, 0), 2: (0, 0, 1, -1),
515
+ 3: (0, 0, 0, 1), 4: (1/2, -1/2, -1/2, -1/2)}
516
+ sage: L.simple_coroots()
517
+ Finite family {1: (0, 1, -1, 0), 2: (0, 0, 1, -1),
518
+ 3: (0, 0, 0, 2), 4: (1, -1, -1, -1)}
519
+ """
520
+ return self.sum_of_terms(self._space.simple_root(i))
521
+
522
+ @cached_method
523
+ def fundamental_weight(self, i):
524
+ """
525
+ Return the ``i``-th fundamental weight.
526
+
527
+ It is constructed by looking up the corresponding simple
528
+ coroot in the ambient space for the original Cartan type.
529
+
530
+ EXAMPLES::
531
+
532
+ sage: L = CartanType(["F",4]).marked_nodes([1,3]).root_system().ambient_space()
533
+ sage: L.fundamental_weight(1)
534
+ (1, 1, 0, 0)
535
+ sage: L.fundamental_weights()
536
+ Finite family {1: (1, 1, 0, 0), 2: (2, 1, 1, 0),
537
+ 3: (3/2, 1/2, 1/2, 1/2), 4: (1, 0, 0, 0)}
538
+ """
539
+ return self.sum_of_terms(self._space.fundamental_weight(i))
540
+
541
+ @lazy_attribute
542
+ def _plot_projection(self):
543
+ """
544
+ A hack so that if an ambient space uses barycentric projection,
545
+ then so does its dual.
546
+
547
+ EXAMPLES::
548
+
549
+ sage: L = CartanType(["G",2]).marked_nodes([1]).root_system().ambient_space()
550
+ sage: L._plot_projection == L._plot_projection_barycentric
551
+ True
552
+
553
+ sage: L = CartanType(["F",4]).marked_nodes([1,3]).root_system().ambient_space()
554
+ sage: L._plot_projection == L._plot_projection_barycentric
555
+ False
556
+ """
557
+ if self._space._plot_projection == self._space._plot_projection_barycentric:
558
+ return self._plot_projection_barycentric
559
+ else:
560
+ RootLatticeRealizations.ParentMethods.__dict__["_plot_projection"]
561
+
562
+ ###########################################################################
563
+
564
+
565
+ class CartanType_finite(CartanType, cartan_type.CartanType_finite):
566
+ AmbientSpace = AmbientSpace
567
+
568
+ def affine(self):
569
+ """
570
+ Return the affine Cartan type associated with ``self``.
571
+
572
+ EXAMPLES::
573
+
574
+ sage: B4 = CartanType(['B',4]).marked_nodes([1,3])
575
+ sage: B4.dynkin_diagram() # needs sage.graphs
576
+ X---O---X=>=O
577
+ 1 2 3 4
578
+ B4 with nodes (1, 3) marked
579
+ sage: B4.affine().dynkin_diagram() # needs sage.graphs
580
+ O 0
581
+ |
582
+ |
583
+ X---O---X=>=O
584
+ 1 2 3 4
585
+ B4~ with nodes (1, 3) marked
586
+
587
+ TESTS:
588
+
589
+ Check that we don't inadvertently change the internal
590
+ marking of ``ct``::
591
+
592
+ sage: ct = CartanType(['F', 4]).marked_nodes([1,3])
593
+ sage: ct.affine()
594
+ ['F', 4, 1] with nodes (1, 3) marked
595
+ sage: ct
596
+ ['F', 4] with nodes (1, 3) marked
597
+ """
598
+ return self._type.affine().marked_nodes(self._marked_nodes)
599
+
600
+ ###########################################################################
601
+
602
+
603
+ class CartanType_affine(CartanType, cartan_type.CartanType_affine):
604
+ """
605
+ TESTS::
606
+
607
+ sage: ct = CartanType(['B',3,1]).marked_nodes([1,3])
608
+ sage: ct
609
+ ['B', 3, 1] with nodes (1, 3) marked
610
+
611
+ sage: L = ct.root_system().ambient_space(); L
612
+ Ambient space of the Root system of type ['B', 3, 1] with nodes (1, 3) marked
613
+ sage: L.classical()
614
+ Ambient space of the Root system of type ['B', 3] with nodes (1, 3) marked
615
+ sage: TestSuite(L).run()
616
+ """
617
+
618
+ def _latex_draw_node(self, x, y, label, position='below=4pt'):
619
+ r"""
620
+ Draw the possibly marked (crossed out) circular node ``i`` at the
621
+ position ``(x,y)`` with node label ``label`` .
622
+
623
+ - ``position`` -- position of the label relative to the node
624
+ - ``anchor`` -- (optional) the anchor point for the label
625
+
626
+ EXAMPLES::
627
+
628
+ sage: CartanType.options(mark_special_node='both')
629
+ sage: print(CartanType(['A',3,1]).marked_nodes([0,1,3])._latex_draw_node(0, 0, 0))
630
+ \draw[fill=black] (0 cm, 0 cm) circle (.25cm) node[below=4pt]{$0$};
631
+ \draw[shift={(0, 0)}, lightgray, very thick] (0.25cm, 0.25cm) -- (-0.25cm, -0.25cm);
632
+ \draw[shift={(0, 0)}, lightgray, very thick] (0.25cm, -0.25cm) -- (-0.25cm, 0.25cm);
633
+ <BLANKLINE>
634
+ sage: CartanType.options._reset()
635
+ """
636
+ mark_special = (label == self.special_node()
637
+ and self.options('mark_special_node') in ['latex', 'both'])
638
+ if mark_special:
639
+ fill = 'black'
640
+ else:
641
+ fill = 'white'
642
+
643
+ ret = cartan_type.CartanType_abstract._latex_draw_node(self, x, y, label, position, fill)
644
+
645
+ if label in self._marked_nodes:
646
+ if mark_special:
647
+ ret += self._latex_draw_mark(x, y, 'lightgray', 'very thick')
648
+ else:
649
+ ret += self._latex_draw_mark(x, y)
650
+ return ret
651
+
652
+ def _ascii_art_node(self, label):
653
+ """
654
+ Return the ascii art for the node labeled by ``label``.
655
+
656
+ EXAMPLES::
657
+
658
+ sage: ct = CartanType(['A',4, 1]).marked_nodes([0, 2])
659
+ sage: CartanType.options(mark_special_node='both')
660
+ sage: ct._ascii_art_node(0)
661
+ '#'
662
+ sage: CartanType.options._reset()
663
+ """
664
+ if label in self._marked_nodes:
665
+ if (label == self.special_node()
666
+ and self.options('mark_special_node') in ['printing', 'both']):
667
+ return '#'
668
+ return self.options('marked_node_str')
669
+ return 'O'
670
+
671
+ def classical(self):
672
+ """
673
+ Return the classical Cartan type associated with ``self``.
674
+
675
+ EXAMPLES::
676
+
677
+ sage: T = CartanType(['A',4,1]).marked_nodes([0,2,4])
678
+ sage: T.dynkin_diagram() # needs sage.graphs
679
+ 0
680
+ X-----------+
681
+ | |
682
+ | |
683
+ O---X---O---X
684
+ 1 2 3 4
685
+ A4~ with nodes (0, 2, 4) marked
686
+
687
+ sage: T0 = T.classical(); T0
688
+ ['A', 4] with nodes (2, 4) marked
689
+ sage: T0.dynkin_diagram() # needs sage.graphs
690
+ O---X---O---X
691
+ 1 2 3 4
692
+ A4 with nodes (2, 4) marked
693
+ """
694
+ if self._type.special_node() in self._marked_nodes:
695
+ marked_nodes = list(self._marked_nodes)
696
+ marked_nodes.remove(self._type.special_node())
697
+ return self._type.classical().marked_nodes(marked_nodes)
698
+ return self._type.classical().marked_nodes(self._marked_nodes)
699
+
700
+ def basic_untwisted(self):
701
+ r"""
702
+ Return the basic untwisted Cartan type associated with this affine
703
+ Cartan type.
704
+
705
+ Given an affine type `X_n^{(r)}`, the basic untwisted type is `X_n`.
706
+ In other words, it is the classical Cartan type that is twisted to
707
+ obtain ``self``.
708
+
709
+ EXAMPLES::
710
+
711
+ sage: CartanType(['A', 7, 2]).marked_nodes([1,3]).basic_untwisted()
712
+ ['A', 7] with nodes (1, 3) marked
713
+ sage: CartanType(['D', 4, 3]).marked_nodes([0,2]).basic_untwisted()
714
+ ['D', 4] with node 2 marked
715
+ """
716
+ if self._type.special_node() in self._marked_nodes:
717
+ marked_nodes = list(self._marked_nodes)
718
+ marked_nodes.remove(self._type.special_node())
719
+ return self._type.basic_untwisted().marked_nodes(marked_nodes)
720
+ return self._type.basic_untwisted().marked_nodes(self._marked_nodes)
721
+
722
+ def special_node(self):
723
+ r"""
724
+ Return the special node of the Cartan type.
725
+
726
+ .. SEEALSO:: :meth:`~sage.combinat.root_system.CartanType_affine.special_node`
727
+
728
+ It is the special node of the non-marked Cartan type..
729
+
730
+ EXAMPLES::
731
+
732
+ sage: CartanType(['B', 3, 1]).marked_nodes([1,3]).special_node()
733
+ 0
734
+ """
735
+ return self._type.special_node()
736
+
737
+ def is_untwisted_affine(self):
738
+ """
739
+ Implement :meth:`CartanType_affine.is_untwisted_affine`.
740
+
741
+ A marked Cartan type is untwisted affine if the original is.
742
+
743
+ EXAMPLES::
744
+
745
+ sage: CartanType(['B', 3, 1]).marked_nodes([1,3]).is_untwisted_affine()
746
+ True
747
+ """
748
+ return self._type.is_untwisted_affine()