passagemath-modules 10.6.31rc3__cp314-cp314-musllinux_1_2_x86_64.whl

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

Potentially problematic release.


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

Files changed (808) hide show
  1. passagemath_modules-10.6.31rc3.dist-info/METADATA +281 -0
  2. passagemath_modules-10.6.31rc3.dist-info/RECORD +808 -0
  3. passagemath_modules-10.6.31rc3.dist-info/WHEEL +5 -0
  4. passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
  5. passagemath_modules.libs/libgcc_s-0cd532bd.so.1 +0 -0
  6. passagemath_modules.libs/libgfortran-2c33b284.so.5.0.0 +0 -0
  7. passagemath_modules.libs/libgmp-0e7fc84e.so.10.5.0 +0 -0
  8. passagemath_modules.libs/libgsl-42cda06f.so.28.0.0 +0 -0
  9. passagemath_modules.libs/libmpc-d8ebe4b5.so.3.3.1 +0 -0
  10. passagemath_modules.libs/libmpfr-aaecbfc0.so.6.2.1 +0 -0
  11. passagemath_modules.libs/libopenblasp-r0-905cb27d.3.29.so +0 -0
  12. passagemath_modules.libs/libquadmath-bb76a5fc.so.0.0.0 +0 -0
  13. sage/algebras/all__sagemath_modules.py +20 -0
  14. sage/algebras/catalog.py +148 -0
  15. sage/algebras/clifford_algebra.py +3107 -0
  16. sage/algebras/clifford_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  17. sage/algebras/clifford_algebra_element.pxd +16 -0
  18. sage/algebras/clifford_algebra_element.pyx +997 -0
  19. sage/algebras/commutative_dga.py +4252 -0
  20. sage/algebras/exterior_algebra_groebner.cpython-314-x86_64-linux-musl.so +0 -0
  21. sage/algebras/exterior_algebra_groebner.pxd +55 -0
  22. sage/algebras/exterior_algebra_groebner.pyx +727 -0
  23. sage/algebras/finite_dimensional_algebras/all.py +2 -0
  24. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +1029 -0
  25. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  26. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +12 -0
  27. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +706 -0
  28. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_ideal.py +196 -0
  29. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_morphism.py +255 -0
  30. sage/algebras/finite_gca.py +528 -0
  31. sage/algebras/group_algebra.py +232 -0
  32. sage/algebras/lie_algebras/abelian.py +197 -0
  33. sage/algebras/lie_algebras/affine_lie_algebra.py +1213 -0
  34. sage/algebras/lie_algebras/all.py +25 -0
  35. sage/algebras/lie_algebras/all__sagemath_modules.py +1 -0
  36. sage/algebras/lie_algebras/bch.py +177 -0
  37. sage/algebras/lie_algebras/bgg_dual_module.py +1184 -0
  38. sage/algebras/lie_algebras/bgg_resolution.py +232 -0
  39. sage/algebras/lie_algebras/center_uea.py +767 -0
  40. sage/algebras/lie_algebras/classical_lie_algebra.py +2516 -0
  41. sage/algebras/lie_algebras/examples.py +683 -0
  42. sage/algebras/lie_algebras/free_lie_algebra.py +973 -0
  43. sage/algebras/lie_algebras/heisenberg.py +820 -0
  44. sage/algebras/lie_algebras/lie_algebra.py +1562 -0
  45. sage/algebras/lie_algebras/lie_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  46. sage/algebras/lie_algebras/lie_algebra_element.pxd +68 -0
  47. sage/algebras/lie_algebras/lie_algebra_element.pyx +2122 -0
  48. sage/algebras/lie_algebras/morphism.py +661 -0
  49. sage/algebras/lie_algebras/nilpotent_lie_algebra.py +457 -0
  50. sage/algebras/lie_algebras/onsager.py +1324 -0
  51. sage/algebras/lie_algebras/poincare_birkhoff_witt.py +816 -0
  52. sage/algebras/lie_algebras/quotient.py +462 -0
  53. sage/algebras/lie_algebras/rank_two_heisenberg_virasoro.py +355 -0
  54. sage/algebras/lie_algebras/representation.py +1040 -0
  55. sage/algebras/lie_algebras/structure_coefficients.py +459 -0
  56. sage/algebras/lie_algebras/subalgebra.py +967 -0
  57. sage/algebras/lie_algebras/symplectic_derivation.py +289 -0
  58. sage/algebras/lie_algebras/verma_module.py +1630 -0
  59. sage/algebras/lie_algebras/virasoro.py +1186 -0
  60. sage/algebras/octonion_algebra.cpython-314-x86_64-linux-musl.so +0 -0
  61. sage/algebras/octonion_algebra.pxd +20 -0
  62. sage/algebras/octonion_algebra.pyx +987 -0
  63. sage/algebras/orlik_solomon.py +907 -0
  64. sage/algebras/orlik_terao.py +779 -0
  65. sage/algebras/steenrod/all.py +7 -0
  66. sage/algebras/steenrod/steenrod_algebra.py +4258 -0
  67. sage/algebras/steenrod/steenrod_algebra_bases.py +1179 -0
  68. sage/algebras/steenrod/steenrod_algebra_misc.py +1167 -0
  69. sage/algebras/steenrod/steenrod_algebra_mult.py +954 -0
  70. sage/algebras/weyl_algebra.py +1126 -0
  71. sage/all__sagemath_modules.py +62 -0
  72. sage/calculus/all__sagemath_modules.py +19 -0
  73. sage/calculus/expr.py +205 -0
  74. sage/calculus/integration.cpython-314-x86_64-linux-musl.so +0 -0
  75. sage/calculus/integration.pyx +698 -0
  76. sage/calculus/interpolation.cpython-314-x86_64-linux-musl.so +0 -0
  77. sage/calculus/interpolation.pxd +13 -0
  78. sage/calculus/interpolation.pyx +387 -0
  79. sage/calculus/interpolators.cpython-314-x86_64-linux-musl.so +0 -0
  80. sage/calculus/interpolators.pyx +326 -0
  81. sage/calculus/ode.cpython-314-x86_64-linux-musl.so +0 -0
  82. sage/calculus/ode.pxd +5 -0
  83. sage/calculus/ode.pyx +610 -0
  84. sage/calculus/riemann.cpython-314-x86_64-linux-musl.so +0 -0
  85. sage/calculus/riemann.pyx +1521 -0
  86. sage/calculus/test_sympy.py +201 -0
  87. sage/calculus/transforms/all.py +7 -0
  88. sage/calculus/transforms/dft.py +844 -0
  89. sage/calculus/transforms/dwt.cpython-314-x86_64-linux-musl.so +0 -0
  90. sage/calculus/transforms/dwt.pxd +7 -0
  91. sage/calculus/transforms/dwt.pyx +160 -0
  92. sage/calculus/transforms/fft.cpython-314-x86_64-linux-musl.so +0 -0
  93. sage/calculus/transforms/fft.pxd +12 -0
  94. sage/calculus/transforms/fft.pyx +487 -0
  95. sage/calculus/wester.py +662 -0
  96. sage/coding/abstract_code.py +1108 -0
  97. sage/coding/ag_code.py +868 -0
  98. sage/coding/ag_code_decoders.cpython-314-x86_64-linux-musl.so +0 -0
  99. sage/coding/ag_code_decoders.pyx +2639 -0
  100. sage/coding/all.py +15 -0
  101. sage/coding/bch_code.py +494 -0
  102. sage/coding/binary_code.cpython-314-x86_64-linux-musl.so +0 -0
  103. sage/coding/binary_code.pxd +124 -0
  104. sage/coding/binary_code.pyx +4139 -0
  105. sage/coding/bounds_catalog.py +43 -0
  106. sage/coding/channel.py +819 -0
  107. sage/coding/channels_catalog.py +29 -0
  108. sage/coding/code_bounds.py +755 -0
  109. sage/coding/code_constructions.py +804 -0
  110. sage/coding/codes_catalog.py +111 -0
  111. sage/coding/cyclic_code.py +1329 -0
  112. sage/coding/databases.py +316 -0
  113. sage/coding/decoder.py +373 -0
  114. sage/coding/decoders_catalog.py +88 -0
  115. sage/coding/delsarte_bounds.py +709 -0
  116. sage/coding/encoder.py +390 -0
  117. sage/coding/encoders_catalog.py +64 -0
  118. sage/coding/extended_code.py +468 -0
  119. sage/coding/gabidulin_code.py +1058 -0
  120. sage/coding/golay_code.py +404 -0
  121. sage/coding/goppa_code.py +441 -0
  122. sage/coding/grs_code.py +2371 -0
  123. sage/coding/guava.py +107 -0
  124. sage/coding/guruswami_sudan/all.py +1 -0
  125. sage/coding/guruswami_sudan/gs_decoder.py +897 -0
  126. sage/coding/guruswami_sudan/interpolation.py +409 -0
  127. sage/coding/guruswami_sudan/utils.py +176 -0
  128. sage/coding/hamming_code.py +176 -0
  129. sage/coding/information_set_decoder.py +1032 -0
  130. sage/coding/kasami_codes.cpython-314-x86_64-linux-musl.so +0 -0
  131. sage/coding/kasami_codes.pyx +351 -0
  132. sage/coding/linear_code.py +3067 -0
  133. sage/coding/linear_code_no_metric.py +1354 -0
  134. sage/coding/linear_rank_metric.py +961 -0
  135. sage/coding/parity_check_code.py +353 -0
  136. sage/coding/punctured_code.py +719 -0
  137. sage/coding/reed_muller_code.py +999 -0
  138. sage/coding/self_dual_codes.py +942 -0
  139. sage/coding/source_coding/all.py +2 -0
  140. sage/coding/source_coding/huffman.py +553 -0
  141. sage/coding/subfield_subcode.py +423 -0
  142. sage/coding/two_weight_db.py +399 -0
  143. sage/combinat/all__sagemath_modules.py +7 -0
  144. sage/combinat/cartesian_product.py +347 -0
  145. sage/combinat/family.py +11 -0
  146. sage/combinat/free_module.py +1977 -0
  147. sage/combinat/root_system/all.py +147 -0
  148. sage/combinat/root_system/ambient_space.py +527 -0
  149. sage/combinat/root_system/associahedron.py +471 -0
  150. sage/combinat/root_system/braid_move_calculator.py +143 -0
  151. sage/combinat/root_system/braid_orbit.cpython-314-x86_64-linux-musl.so +0 -0
  152. sage/combinat/root_system/braid_orbit.pyx +144 -0
  153. sage/combinat/root_system/branching_rules.py +2301 -0
  154. sage/combinat/root_system/cartan_matrix.py +1245 -0
  155. sage/combinat/root_system/cartan_type.py +3069 -0
  156. sage/combinat/root_system/coxeter_group.py +162 -0
  157. sage/combinat/root_system/coxeter_matrix.py +1261 -0
  158. sage/combinat/root_system/coxeter_type.py +681 -0
  159. sage/combinat/root_system/dynkin_diagram.py +900 -0
  160. sage/combinat/root_system/extended_affine_weyl_group.py +2993 -0
  161. sage/combinat/root_system/fundamental_group.py +795 -0
  162. sage/combinat/root_system/hecke_algebra_representation.py +1203 -0
  163. sage/combinat/root_system/integrable_representations.py +1227 -0
  164. sage/combinat/root_system/non_symmetric_macdonald_polynomials.py +1965 -0
  165. sage/combinat/root_system/pieri_factors.py +1147 -0
  166. sage/combinat/root_system/plot.py +1615 -0
  167. sage/combinat/root_system/root_lattice_realization_algebras.py +1214 -0
  168. sage/combinat/root_system/root_lattice_realizations.py +4628 -0
  169. sage/combinat/root_system/root_space.py +487 -0
  170. sage/combinat/root_system/root_system.py +882 -0
  171. sage/combinat/root_system/type_A.py +348 -0
  172. sage/combinat/root_system/type_A_affine.py +227 -0
  173. sage/combinat/root_system/type_A_infinity.py +241 -0
  174. sage/combinat/root_system/type_B.py +347 -0
  175. sage/combinat/root_system/type_BC_affine.py +287 -0
  176. sage/combinat/root_system/type_B_affine.py +216 -0
  177. sage/combinat/root_system/type_C.py +317 -0
  178. sage/combinat/root_system/type_C_affine.py +188 -0
  179. sage/combinat/root_system/type_D.py +357 -0
  180. sage/combinat/root_system/type_D_affine.py +208 -0
  181. sage/combinat/root_system/type_E.py +641 -0
  182. sage/combinat/root_system/type_E_affine.py +231 -0
  183. sage/combinat/root_system/type_F.py +387 -0
  184. sage/combinat/root_system/type_F_affine.py +137 -0
  185. sage/combinat/root_system/type_G.py +293 -0
  186. sage/combinat/root_system/type_G_affine.py +132 -0
  187. sage/combinat/root_system/type_H.py +105 -0
  188. sage/combinat/root_system/type_I.py +110 -0
  189. sage/combinat/root_system/type_Q.py +150 -0
  190. sage/combinat/root_system/type_affine.py +509 -0
  191. sage/combinat/root_system/type_dual.py +704 -0
  192. sage/combinat/root_system/type_folded.py +301 -0
  193. sage/combinat/root_system/type_marked.py +748 -0
  194. sage/combinat/root_system/type_reducible.py +601 -0
  195. sage/combinat/root_system/type_relabel.py +730 -0
  196. sage/combinat/root_system/type_super_A.py +837 -0
  197. sage/combinat/root_system/weight_lattice_realizations.py +1188 -0
  198. sage/combinat/root_system/weight_space.py +639 -0
  199. sage/combinat/root_system/weyl_characters.py +2238 -0
  200. sage/crypto/__init__.py +4 -0
  201. sage/crypto/all.py +28 -0
  202. sage/crypto/block_cipher/all.py +7 -0
  203. sage/crypto/block_cipher/des.py +1065 -0
  204. sage/crypto/block_cipher/miniaes.py +2171 -0
  205. sage/crypto/block_cipher/present.py +909 -0
  206. sage/crypto/block_cipher/sdes.py +1527 -0
  207. sage/crypto/boolean_function.cpython-314-x86_64-linux-musl.so +0 -0
  208. sage/crypto/boolean_function.pxd +10 -0
  209. sage/crypto/boolean_function.pyx +1487 -0
  210. sage/crypto/cipher.py +78 -0
  211. sage/crypto/classical.py +3668 -0
  212. sage/crypto/classical_cipher.py +569 -0
  213. sage/crypto/cryptosystem.py +387 -0
  214. sage/crypto/key_exchange/all.py +7 -0
  215. sage/crypto/key_exchange/catalog.py +24 -0
  216. sage/crypto/key_exchange/diffie_hellman.py +323 -0
  217. sage/crypto/key_exchange/key_exchange_scheme.py +107 -0
  218. sage/crypto/lattice.py +312 -0
  219. sage/crypto/lfsr.py +295 -0
  220. sage/crypto/lwe.py +840 -0
  221. sage/crypto/mq/__init__.py +4 -0
  222. sage/crypto/mq/mpolynomialsystemgenerator.py +204 -0
  223. sage/crypto/mq/rijndael_gf.py +2345 -0
  224. sage/crypto/mq/sbox.py +7 -0
  225. sage/crypto/mq/sr.py +3344 -0
  226. sage/crypto/public_key/all.py +5 -0
  227. sage/crypto/public_key/blum_goldwasser.py +776 -0
  228. sage/crypto/sbox.cpython-314-x86_64-linux-musl.so +0 -0
  229. sage/crypto/sbox.pyx +2090 -0
  230. sage/crypto/sboxes.py +2090 -0
  231. sage/crypto/stream.py +390 -0
  232. sage/crypto/stream_cipher.py +297 -0
  233. sage/crypto/util.py +519 -0
  234. sage/ext/all__sagemath_modules.py +1 -0
  235. sage/ext/interpreters/__init__.py +1 -0
  236. sage/ext/interpreters/all__sagemath_modules.py +2 -0
  237. sage/ext/interpreters/wrapper_cc.cpython-314-x86_64-linux-musl.so +0 -0
  238. sage/ext/interpreters/wrapper_cc.pxd +30 -0
  239. sage/ext/interpreters/wrapper_cc.pyx +252 -0
  240. sage/ext/interpreters/wrapper_cdf.cpython-314-x86_64-linux-musl.so +0 -0
  241. sage/ext/interpreters/wrapper_cdf.pxd +26 -0
  242. sage/ext/interpreters/wrapper_cdf.pyx +245 -0
  243. sage/ext/interpreters/wrapper_rdf.cpython-314-x86_64-linux-musl.so +0 -0
  244. sage/ext/interpreters/wrapper_rdf.pxd +23 -0
  245. sage/ext/interpreters/wrapper_rdf.pyx +221 -0
  246. sage/ext/interpreters/wrapper_rr.cpython-314-x86_64-linux-musl.so +0 -0
  247. sage/ext/interpreters/wrapper_rr.pxd +28 -0
  248. sage/ext/interpreters/wrapper_rr.pyx +335 -0
  249. sage/geometry/all__sagemath_modules.py +5 -0
  250. sage/geometry/toric_lattice.py +1745 -0
  251. sage/geometry/toric_lattice_element.cpython-314-x86_64-linux-musl.so +0 -0
  252. sage/geometry/toric_lattice_element.pyx +432 -0
  253. sage/groups/abelian_gps/abelian_group.py +1925 -0
  254. sage/groups/abelian_gps/abelian_group_element.py +164 -0
  255. sage/groups/abelian_gps/all__sagemath_modules.py +5 -0
  256. sage/groups/abelian_gps/dual_abelian_group.py +421 -0
  257. sage/groups/abelian_gps/dual_abelian_group_element.py +179 -0
  258. sage/groups/abelian_gps/element_base.py +341 -0
  259. sage/groups/abelian_gps/values.py +488 -0
  260. sage/groups/additive_abelian/additive_abelian_group.py +476 -0
  261. sage/groups/additive_abelian/additive_abelian_wrapper.py +857 -0
  262. sage/groups/additive_abelian/all.py +4 -0
  263. sage/groups/additive_abelian/qmodnz.py +231 -0
  264. sage/groups/additive_abelian/qmodnz_element.py +349 -0
  265. sage/groups/affine_gps/affine_group.py +535 -0
  266. sage/groups/affine_gps/all.py +1 -0
  267. sage/groups/affine_gps/catalog.py +17 -0
  268. sage/groups/affine_gps/euclidean_group.py +246 -0
  269. sage/groups/affine_gps/group_element.py +562 -0
  270. sage/groups/all__sagemath_modules.py +12 -0
  271. sage/groups/galois_group.py +479 -0
  272. sage/groups/matrix_gps/all.py +4 -0
  273. sage/groups/matrix_gps/all__sagemath_modules.py +13 -0
  274. sage/groups/matrix_gps/catalog.py +26 -0
  275. sage/groups/matrix_gps/coxeter_group.py +927 -0
  276. sage/groups/matrix_gps/finitely_generated.py +487 -0
  277. sage/groups/matrix_gps/group_element.cpython-314-x86_64-linux-musl.so +0 -0
  278. sage/groups/matrix_gps/group_element.pxd +11 -0
  279. sage/groups/matrix_gps/group_element.pyx +431 -0
  280. sage/groups/matrix_gps/linear.py +440 -0
  281. sage/groups/matrix_gps/matrix_group.py +617 -0
  282. sage/groups/matrix_gps/named_group.py +296 -0
  283. sage/groups/matrix_gps/orthogonal.py +544 -0
  284. sage/groups/matrix_gps/symplectic.py +251 -0
  285. sage/groups/matrix_gps/unitary.py +436 -0
  286. sage/groups/misc_gps/all__sagemath_modules.py +1 -0
  287. sage/groups/misc_gps/argument_groups.py +1905 -0
  288. sage/groups/misc_gps/imaginary_groups.py +479 -0
  289. sage/groups/perm_gps/all__sagemath_modules.py +1 -0
  290. sage/groups/perm_gps/partn_ref/all__sagemath_modules.py +1 -0
  291. sage/groups/perm_gps/partn_ref/refinement_binary.cpython-314-x86_64-linux-musl.so +0 -0
  292. sage/groups/perm_gps/partn_ref/refinement_binary.pxd +41 -0
  293. sage/groups/perm_gps/partn_ref/refinement_binary.pyx +1167 -0
  294. sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-314-x86_64-linux-musl.so +0 -0
  295. sage/groups/perm_gps/partn_ref/refinement_matrices.pxd +31 -0
  296. sage/groups/perm_gps/partn_ref/refinement_matrices.pyx +385 -0
  297. sage/homology/algebraic_topological_model.py +595 -0
  298. sage/homology/all.py +2 -0
  299. sage/homology/all__sagemath_modules.py +8 -0
  300. sage/homology/chain_complex.py +2148 -0
  301. sage/homology/chain_complex_homspace.py +165 -0
  302. sage/homology/chain_complex_morphism.py +629 -0
  303. sage/homology/chain_homotopy.py +604 -0
  304. sage/homology/chains.py +653 -0
  305. sage/homology/free_resolution.py +923 -0
  306. sage/homology/graded_resolution.py +567 -0
  307. sage/homology/hochschild_complex.py +756 -0
  308. sage/homology/homology_group.py +188 -0
  309. sage/homology/homology_morphism.py +422 -0
  310. sage/homology/homology_vector_space_with_basis.py +1454 -0
  311. sage/homology/koszul_complex.py +169 -0
  312. sage/homology/matrix_utils.py +205 -0
  313. sage/libs/all__sagemath_modules.py +1 -0
  314. sage/libs/gsl/__init__.py +1 -0
  315. sage/libs/gsl/airy.pxd +56 -0
  316. sage/libs/gsl/all.pxd +66 -0
  317. sage/libs/gsl/array.cpython-314-x86_64-linux-musl.so +0 -0
  318. sage/libs/gsl/array.pxd +5 -0
  319. sage/libs/gsl/array.pyx +102 -0
  320. sage/libs/gsl/bessel.pxd +208 -0
  321. sage/libs/gsl/blas.pxd +116 -0
  322. sage/libs/gsl/blas_types.pxd +34 -0
  323. sage/libs/gsl/block.pxd +52 -0
  324. sage/libs/gsl/chebyshev.pxd +37 -0
  325. sage/libs/gsl/clausen.pxd +12 -0
  326. sage/libs/gsl/combination.pxd +47 -0
  327. sage/libs/gsl/complex.pxd +151 -0
  328. sage/libs/gsl/coulomb.pxd +30 -0
  329. sage/libs/gsl/coupling.pxd +21 -0
  330. sage/libs/gsl/dawson.pxd +12 -0
  331. sage/libs/gsl/debye.pxd +24 -0
  332. sage/libs/gsl/dilog.pxd +14 -0
  333. sage/libs/gsl/eigen.pxd +46 -0
  334. sage/libs/gsl/elementary.pxd +12 -0
  335. sage/libs/gsl/ellint.pxd +48 -0
  336. sage/libs/gsl/elljac.pxd +8 -0
  337. sage/libs/gsl/erf.pxd +32 -0
  338. sage/libs/gsl/errno.pxd +26 -0
  339. sage/libs/gsl/exp.pxd +44 -0
  340. sage/libs/gsl/expint.pxd +44 -0
  341. sage/libs/gsl/fermi_dirac.pxd +44 -0
  342. sage/libs/gsl/fft.pxd +121 -0
  343. sage/libs/gsl/fit.pxd +50 -0
  344. sage/libs/gsl/gamma.pxd +94 -0
  345. sage/libs/gsl/gegenbauer.pxd +26 -0
  346. sage/libs/gsl/histogram.pxd +176 -0
  347. sage/libs/gsl/hyperg.pxd +52 -0
  348. sage/libs/gsl/integration.pxd +69 -0
  349. sage/libs/gsl/interp.pxd +109 -0
  350. sage/libs/gsl/laguerre.pxd +24 -0
  351. sage/libs/gsl/lambert.pxd +16 -0
  352. sage/libs/gsl/legendre.pxd +90 -0
  353. sage/libs/gsl/linalg.pxd +185 -0
  354. sage/libs/gsl/log.pxd +26 -0
  355. sage/libs/gsl/math.pxd +43 -0
  356. sage/libs/gsl/matrix.pxd +143 -0
  357. sage/libs/gsl/matrix_complex.pxd +130 -0
  358. sage/libs/gsl/min.pxd +67 -0
  359. sage/libs/gsl/monte.pxd +56 -0
  360. sage/libs/gsl/ntuple.pxd +32 -0
  361. sage/libs/gsl/odeiv.pxd +70 -0
  362. sage/libs/gsl/permutation.pxd +78 -0
  363. sage/libs/gsl/poly.pxd +40 -0
  364. sage/libs/gsl/pow_int.pxd +12 -0
  365. sage/libs/gsl/psi.pxd +28 -0
  366. sage/libs/gsl/qrng.pxd +29 -0
  367. sage/libs/gsl/random.pxd +257 -0
  368. sage/libs/gsl/rng.pxd +100 -0
  369. sage/libs/gsl/roots.pxd +72 -0
  370. sage/libs/gsl/sort.pxd +36 -0
  371. sage/libs/gsl/statistics.pxd +59 -0
  372. sage/libs/gsl/sum.pxd +55 -0
  373. sage/libs/gsl/synchrotron.pxd +16 -0
  374. sage/libs/gsl/transport.pxd +24 -0
  375. sage/libs/gsl/trig.pxd +58 -0
  376. sage/libs/gsl/types.pxd +137 -0
  377. sage/libs/gsl/vector.pxd +101 -0
  378. sage/libs/gsl/vector_complex.pxd +83 -0
  379. sage/libs/gsl/wavelet.pxd +49 -0
  380. sage/libs/gsl/zeta.pxd +28 -0
  381. sage/libs/mpc/__init__.pxd +114 -0
  382. sage/libs/mpc/types.pxd +28 -0
  383. sage/libs/mpfr/__init__.pxd +299 -0
  384. sage/libs/mpfr/types.pxd +26 -0
  385. sage/libs/mpmath/__init__.py +1 -0
  386. sage/libs/mpmath/all.py +27 -0
  387. sage/libs/mpmath/all__sagemath_modules.py +1 -0
  388. sage/libs/mpmath/utils.cpython-314-x86_64-linux-musl.so +0 -0
  389. sage/libs/mpmath/utils.pxd +4 -0
  390. sage/libs/mpmath/utils.pyx +319 -0
  391. sage/matrix/action.cpython-314-x86_64-linux-musl.so +0 -0
  392. sage/matrix/action.pxd +26 -0
  393. sage/matrix/action.pyx +596 -0
  394. sage/matrix/all.py +9 -0
  395. sage/matrix/args.cpython-314-x86_64-linux-musl.so +0 -0
  396. sage/matrix/args.pxd +144 -0
  397. sage/matrix/args.pyx +1668 -0
  398. sage/matrix/benchmark.py +1258 -0
  399. sage/matrix/berlekamp_massey.py +95 -0
  400. sage/matrix/compute_J_ideal.py +926 -0
  401. sage/matrix/constructor.cpython-314-x86_64-linux-musl.so +0 -0
  402. sage/matrix/constructor.pyx +750 -0
  403. sage/matrix/docs.py +430 -0
  404. sage/matrix/echelon_matrix.cpython-314-x86_64-linux-musl.so +0 -0
  405. sage/matrix/echelon_matrix.pyx +155 -0
  406. sage/matrix/matrix.pxd +2 -0
  407. sage/matrix/matrix0.cpython-314-x86_64-linux-musl.so +0 -0
  408. sage/matrix/matrix0.pxd +68 -0
  409. sage/matrix/matrix0.pyx +6324 -0
  410. sage/matrix/matrix1.cpython-314-x86_64-linux-musl.so +0 -0
  411. sage/matrix/matrix1.pxd +8 -0
  412. sage/matrix/matrix1.pyx +2851 -0
  413. sage/matrix/matrix2.cpython-314-x86_64-linux-musl.so +0 -0
  414. sage/matrix/matrix2.pxd +25 -0
  415. sage/matrix/matrix2.pyx +20181 -0
  416. sage/matrix/matrix_cdv.cpython-314-x86_64-linux-musl.so +0 -0
  417. sage/matrix/matrix_cdv.pxd +4 -0
  418. sage/matrix/matrix_cdv.pyx +93 -0
  419. sage/matrix/matrix_complex_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  420. sage/matrix/matrix_complex_double_dense.pxd +5 -0
  421. sage/matrix/matrix_complex_double_dense.pyx +98 -0
  422. sage/matrix/matrix_dense.cpython-314-x86_64-linux-musl.so +0 -0
  423. sage/matrix/matrix_dense.pxd +5 -0
  424. sage/matrix/matrix_dense.pyx +343 -0
  425. sage/matrix/matrix_domain_dense.pxd +5 -0
  426. sage/matrix/matrix_domain_sparse.pxd +5 -0
  427. sage/matrix/matrix_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  428. sage/matrix/matrix_double_dense.pxd +7 -0
  429. sage/matrix/matrix_double_dense.pyx +3906 -0
  430. sage/matrix/matrix_double_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  431. sage/matrix/matrix_double_sparse.pxd +6 -0
  432. sage/matrix/matrix_double_sparse.pyx +248 -0
  433. sage/matrix/matrix_generic_dense.cpython-314-x86_64-linux-musl.so +0 -0
  434. sage/matrix/matrix_generic_dense.pxd +7 -0
  435. sage/matrix/matrix_generic_dense.pyx +354 -0
  436. sage/matrix/matrix_generic_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  437. sage/matrix/matrix_generic_sparse.pxd +7 -0
  438. sage/matrix/matrix_generic_sparse.pyx +461 -0
  439. sage/matrix/matrix_laurent_mpolynomial_dense.cpython-314-x86_64-linux-musl.so +0 -0
  440. sage/matrix/matrix_laurent_mpolynomial_dense.pxd +5 -0
  441. sage/matrix/matrix_laurent_mpolynomial_dense.pyx +115 -0
  442. sage/matrix/matrix_misc.py +313 -0
  443. sage/matrix/matrix_numpy_dense.cpython-314-x86_64-linux-musl.so +0 -0
  444. sage/matrix/matrix_numpy_dense.pxd +14 -0
  445. sage/matrix/matrix_numpy_dense.pyx +450 -0
  446. sage/matrix/matrix_numpy_integer_dense.cpython-314-x86_64-linux-musl.so +0 -0
  447. sage/matrix/matrix_numpy_integer_dense.pxd +7 -0
  448. sage/matrix/matrix_numpy_integer_dense.pyx +59 -0
  449. sage/matrix/matrix_polynomial_dense.cpython-314-x86_64-linux-musl.so +0 -0
  450. sage/matrix/matrix_polynomial_dense.pxd +5 -0
  451. sage/matrix/matrix_polynomial_dense.pyx +5341 -0
  452. sage/matrix/matrix_real_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  453. sage/matrix/matrix_real_double_dense.pxd +7 -0
  454. sage/matrix/matrix_real_double_dense.pyx +122 -0
  455. sage/matrix/matrix_space.py +2848 -0
  456. sage/matrix/matrix_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  457. sage/matrix/matrix_sparse.pxd +5 -0
  458. sage/matrix/matrix_sparse.pyx +1222 -0
  459. sage/matrix/matrix_window.cpython-314-x86_64-linux-musl.so +0 -0
  460. sage/matrix/matrix_window.pxd +37 -0
  461. sage/matrix/matrix_window.pyx +242 -0
  462. sage/matrix/misc_mpfr.cpython-314-x86_64-linux-musl.so +0 -0
  463. sage/matrix/misc_mpfr.pyx +80 -0
  464. sage/matrix/operation_table.py +1182 -0
  465. sage/matrix/special.py +3666 -0
  466. sage/matrix/strassen.cpython-314-x86_64-linux-musl.so +0 -0
  467. sage/matrix/strassen.pyx +851 -0
  468. sage/matrix/symplectic_basis.py +541 -0
  469. sage/matrix/template.pxd +6 -0
  470. sage/matrix/tests.py +71 -0
  471. sage/matroids/advanced.py +77 -0
  472. sage/matroids/all.py +13 -0
  473. sage/matroids/basis_exchange_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  474. sage/matroids/basis_exchange_matroid.pxd +96 -0
  475. sage/matroids/basis_exchange_matroid.pyx +2344 -0
  476. sage/matroids/basis_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  477. sage/matroids/basis_matroid.pxd +45 -0
  478. sage/matroids/basis_matroid.pyx +1217 -0
  479. sage/matroids/catalog.py +44 -0
  480. sage/matroids/chow_ring.py +473 -0
  481. sage/matroids/chow_ring_ideal.py +849 -0
  482. sage/matroids/circuit_closures_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  483. sage/matroids/circuit_closures_matroid.pxd +16 -0
  484. sage/matroids/circuit_closures_matroid.pyx +559 -0
  485. sage/matroids/circuits_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  486. sage/matroids/circuits_matroid.pxd +38 -0
  487. sage/matroids/circuits_matroid.pyx +947 -0
  488. sage/matroids/constructor.py +1086 -0
  489. sage/matroids/database_collections.py +365 -0
  490. sage/matroids/database_matroids.py +5338 -0
  491. sage/matroids/dual_matroid.py +583 -0
  492. sage/matroids/extension.cpython-314-x86_64-linux-musl.so +0 -0
  493. sage/matroids/extension.pxd +34 -0
  494. sage/matroids/extension.pyx +519 -0
  495. sage/matroids/flats_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  496. sage/matroids/flats_matroid.pxd +28 -0
  497. sage/matroids/flats_matroid.pyx +715 -0
  498. sage/matroids/gammoid.py +600 -0
  499. sage/matroids/graphic_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  500. sage/matroids/graphic_matroid.pxd +39 -0
  501. sage/matroids/graphic_matroid.pyx +2024 -0
  502. sage/matroids/lean_matrix.cpython-314-x86_64-linux-musl.so +0 -0
  503. sage/matroids/lean_matrix.pxd +126 -0
  504. sage/matroids/lean_matrix.pyx +3667 -0
  505. sage/matroids/linear_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  506. sage/matroids/linear_matroid.pxd +180 -0
  507. sage/matroids/linear_matroid.pyx +6649 -0
  508. sage/matroids/matroid.cpython-314-x86_64-linux-musl.so +0 -0
  509. sage/matroids/matroid.pxd +243 -0
  510. sage/matroids/matroid.pyx +8759 -0
  511. sage/matroids/matroids_catalog.py +190 -0
  512. sage/matroids/matroids_plot_helpers.py +890 -0
  513. sage/matroids/minor_matroid.py +480 -0
  514. sage/matroids/minorfix.h +9 -0
  515. sage/matroids/named_matroids.py +5 -0
  516. sage/matroids/rank_matroid.py +268 -0
  517. sage/matroids/set_system.cpython-314-x86_64-linux-musl.so +0 -0
  518. sage/matroids/set_system.pxd +38 -0
  519. sage/matroids/set_system.pyx +800 -0
  520. sage/matroids/transversal_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  521. sage/matroids/transversal_matroid.pxd +14 -0
  522. sage/matroids/transversal_matroid.pyx +893 -0
  523. sage/matroids/union_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  524. sage/matroids/union_matroid.pxd +20 -0
  525. sage/matroids/union_matroid.pyx +331 -0
  526. sage/matroids/unpickling.cpython-314-x86_64-linux-musl.so +0 -0
  527. sage/matroids/unpickling.pyx +843 -0
  528. sage/matroids/utilities.py +809 -0
  529. sage/misc/all__sagemath_modules.py +20 -0
  530. sage/misc/c3.cpython-314-x86_64-linux-musl.so +0 -0
  531. sage/misc/c3.pyx +238 -0
  532. sage/misc/compat.py +87 -0
  533. sage/misc/element_with_label.py +173 -0
  534. sage/misc/func_persist.py +79 -0
  535. sage/misc/pickle_old.cpython-314-x86_64-linux-musl.so +0 -0
  536. sage/misc/pickle_old.pyx +19 -0
  537. sage/misc/proof.py +7 -0
  538. sage/misc/replace_dot_all.py +472 -0
  539. sage/misc/sagedoc_conf.py +168 -0
  540. sage/misc/sphinxify.py +167 -0
  541. sage/misc/test_class_pickling.py +85 -0
  542. sage/modules/all.py +42 -0
  543. sage/modules/complex_double_vector.py +25 -0
  544. sage/modules/diamond_cutting.py +380 -0
  545. sage/modules/fg_pid/all.py +1 -0
  546. sage/modules/fg_pid/fgp_element.py +456 -0
  547. sage/modules/fg_pid/fgp_module.py +2091 -0
  548. sage/modules/fg_pid/fgp_morphism.py +550 -0
  549. sage/modules/filtered_vector_space.py +1271 -0
  550. sage/modules/finite_submodule_iter.cpython-314-x86_64-linux-musl.so +0 -0
  551. sage/modules/finite_submodule_iter.pxd +27 -0
  552. sage/modules/finite_submodule_iter.pyx +452 -0
  553. sage/modules/fp_graded/all.py +1 -0
  554. sage/modules/fp_graded/element.py +346 -0
  555. sage/modules/fp_graded/free_element.py +298 -0
  556. sage/modules/fp_graded/free_homspace.py +53 -0
  557. sage/modules/fp_graded/free_module.py +1060 -0
  558. sage/modules/fp_graded/free_morphism.py +217 -0
  559. sage/modules/fp_graded/homspace.py +563 -0
  560. sage/modules/fp_graded/module.py +1340 -0
  561. sage/modules/fp_graded/morphism.py +1990 -0
  562. sage/modules/fp_graded/steenrod/all.py +1 -0
  563. sage/modules/fp_graded/steenrod/homspace.py +65 -0
  564. sage/modules/fp_graded/steenrod/module.py +477 -0
  565. sage/modules/fp_graded/steenrod/morphism.py +404 -0
  566. sage/modules/fp_graded/steenrod/profile.py +241 -0
  567. sage/modules/free_module.py +8447 -0
  568. sage/modules/free_module_element.cpython-314-x86_64-linux-musl.so +0 -0
  569. sage/modules/free_module_element.pxd +22 -0
  570. sage/modules/free_module_element.pyx +5445 -0
  571. sage/modules/free_module_homspace.py +369 -0
  572. sage/modules/free_module_integer.py +896 -0
  573. sage/modules/free_module_morphism.py +823 -0
  574. sage/modules/free_module_pseudohomspace.py +352 -0
  575. sage/modules/free_module_pseudomorphism.py +578 -0
  576. sage/modules/free_quadratic_module.py +1706 -0
  577. sage/modules/free_quadratic_module_integer_symmetric.py +1790 -0
  578. sage/modules/matrix_morphism.py +1745 -0
  579. sage/modules/misc.py +103 -0
  580. sage/modules/module_functors.py +192 -0
  581. sage/modules/multi_filtered_vector_space.py +719 -0
  582. sage/modules/ore_module.py +2208 -0
  583. sage/modules/ore_module_element.py +178 -0
  584. sage/modules/ore_module_homspace.py +147 -0
  585. sage/modules/ore_module_morphism.py +968 -0
  586. sage/modules/quotient_module.py +699 -0
  587. sage/modules/real_double_vector.py +22 -0
  588. sage/modules/submodule.py +255 -0
  589. sage/modules/tensor_operations.py +567 -0
  590. sage/modules/torsion_quadratic_module.py +1352 -0
  591. sage/modules/tutorial_free_modules.py +248 -0
  592. sage/modules/vector_complex_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  593. sage/modules/vector_complex_double_dense.pxd +6 -0
  594. sage/modules/vector_complex_double_dense.pyx +117 -0
  595. sage/modules/vector_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  596. sage/modules/vector_double_dense.pxd +6 -0
  597. sage/modules/vector_double_dense.pyx +604 -0
  598. sage/modules/vector_integer_dense.cpython-314-x86_64-linux-musl.so +0 -0
  599. sage/modules/vector_integer_dense.pxd +15 -0
  600. sage/modules/vector_integer_dense.pyx +361 -0
  601. sage/modules/vector_integer_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  602. sage/modules/vector_integer_sparse.pxd +29 -0
  603. sage/modules/vector_integer_sparse.pyx +406 -0
  604. sage/modules/vector_modn_dense.cpython-314-x86_64-linux-musl.so +0 -0
  605. sage/modules/vector_modn_dense.pxd +12 -0
  606. sage/modules/vector_modn_dense.pyx +394 -0
  607. sage/modules/vector_modn_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  608. sage/modules/vector_modn_sparse.pxd +21 -0
  609. sage/modules/vector_modn_sparse.pyx +298 -0
  610. sage/modules/vector_numpy_dense.cpython-314-x86_64-linux-musl.so +0 -0
  611. sage/modules/vector_numpy_dense.pxd +15 -0
  612. sage/modules/vector_numpy_dense.pyx +304 -0
  613. sage/modules/vector_numpy_integer_dense.cpython-314-x86_64-linux-musl.so +0 -0
  614. sage/modules/vector_numpy_integer_dense.pxd +7 -0
  615. sage/modules/vector_numpy_integer_dense.pyx +54 -0
  616. sage/modules/vector_rational_dense.cpython-314-x86_64-linux-musl.so +0 -0
  617. sage/modules/vector_rational_dense.pxd +15 -0
  618. sage/modules/vector_rational_dense.pyx +387 -0
  619. sage/modules/vector_rational_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  620. sage/modules/vector_rational_sparse.pxd +30 -0
  621. sage/modules/vector_rational_sparse.pyx +413 -0
  622. sage/modules/vector_real_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  623. sage/modules/vector_real_double_dense.pxd +6 -0
  624. sage/modules/vector_real_double_dense.pyx +126 -0
  625. sage/modules/vector_space_homspace.py +430 -0
  626. sage/modules/vector_space_morphism.py +989 -0
  627. sage/modules/with_basis/all.py +15 -0
  628. sage/modules/with_basis/cell_module.py +494 -0
  629. sage/modules/with_basis/indexed_element.cpython-314-x86_64-linux-musl.so +0 -0
  630. sage/modules/with_basis/indexed_element.pxd +13 -0
  631. sage/modules/with_basis/indexed_element.pyx +1058 -0
  632. sage/modules/with_basis/invariant.py +1075 -0
  633. sage/modules/with_basis/morphism.py +1636 -0
  634. sage/modules/with_basis/representation.py +2939 -0
  635. sage/modules/with_basis/subquotient.py +685 -0
  636. sage/numerical/all__sagemath_modules.py +6 -0
  637. sage/numerical/gauss_legendre.cpython-314-x86_64-linux-musl.so +0 -0
  638. sage/numerical/gauss_legendre.pyx +381 -0
  639. sage/numerical/optimize.py +910 -0
  640. sage/probability/all.py +10 -0
  641. sage/probability/probability_distribution.cpython-314-x86_64-linux-musl.so +0 -0
  642. sage/probability/probability_distribution.pyx +1242 -0
  643. sage/probability/random_variable.py +411 -0
  644. sage/quadratic_forms/all.py +4 -0
  645. sage/quadratic_forms/all__sagemath_modules.py +15 -0
  646. sage/quadratic_forms/binary_qf.py +2042 -0
  647. sage/quadratic_forms/bqf_class_group.py +748 -0
  648. sage/quadratic_forms/constructions.py +93 -0
  649. sage/quadratic_forms/count_local_2.cpython-314-x86_64-linux-musl.so +0 -0
  650. sage/quadratic_forms/count_local_2.pyx +365 -0
  651. sage/quadratic_forms/extras.py +195 -0
  652. sage/quadratic_forms/quadratic_form.py +1753 -0
  653. sage/quadratic_forms/quadratic_form__count_local_2.py +221 -0
  654. sage/quadratic_forms/quadratic_form__equivalence_testing.py +708 -0
  655. sage/quadratic_forms/quadratic_form__evaluate.cpython-314-x86_64-linux-musl.so +0 -0
  656. sage/quadratic_forms/quadratic_form__evaluate.pyx +139 -0
  657. sage/quadratic_forms/quadratic_form__local_density_congruence.py +977 -0
  658. sage/quadratic_forms/quadratic_form__local_field_invariants.py +1072 -0
  659. sage/quadratic_forms/quadratic_form__neighbors.py +424 -0
  660. sage/quadratic_forms/quadratic_form__reduction_theory.py +488 -0
  661. sage/quadratic_forms/quadratic_form__split_local_covering.py +416 -0
  662. sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +657 -0
  663. sage/quadratic_forms/quadratic_form__theta.py +352 -0
  664. sage/quadratic_forms/quadratic_form__variable_substitutions.py +370 -0
  665. sage/quadratic_forms/random_quadraticform.py +209 -0
  666. sage/quadratic_forms/ternary.cpython-314-x86_64-linux-musl.so +0 -0
  667. sage/quadratic_forms/ternary.pyx +1154 -0
  668. sage/quadratic_forms/ternary_qf.py +2027 -0
  669. sage/rings/all__sagemath_modules.py +28 -0
  670. sage/rings/asymptotic/all__sagemath_modules.py +1 -0
  671. sage/rings/asymptotic/misc.py +1252 -0
  672. sage/rings/cc.py +4 -0
  673. sage/rings/cfinite_sequence.py +1306 -0
  674. sage/rings/complex_conversion.cpython-314-x86_64-linux-musl.so +0 -0
  675. sage/rings/complex_conversion.pxd +8 -0
  676. sage/rings/complex_conversion.pyx +23 -0
  677. sage/rings/complex_double.cpython-314-x86_64-linux-musl.so +0 -0
  678. sage/rings/complex_double.pxd +21 -0
  679. sage/rings/complex_double.pyx +2654 -0
  680. sage/rings/complex_mpc.cpython-314-x86_64-linux-musl.so +0 -0
  681. sage/rings/complex_mpc.pxd +21 -0
  682. sage/rings/complex_mpc.pyx +2576 -0
  683. sage/rings/complex_mpfr.cpython-314-x86_64-linux-musl.so +0 -0
  684. sage/rings/complex_mpfr.pxd +18 -0
  685. sage/rings/complex_mpfr.pyx +3602 -0
  686. sage/rings/derivation.py +2334 -0
  687. sage/rings/finite_rings/all__sagemath_modules.py +1 -0
  688. sage/rings/finite_rings/maps_finite_field.py +191 -0
  689. sage/rings/function_field/all__sagemath_modules.py +8 -0
  690. sage/rings/function_field/derivations.py +102 -0
  691. sage/rings/function_field/derivations_rational.py +132 -0
  692. sage/rings/function_field/differential.py +853 -0
  693. sage/rings/function_field/divisor.py +1107 -0
  694. sage/rings/function_field/drinfeld_modules/action.py +199 -0
  695. sage/rings/function_field/drinfeld_modules/all.py +1 -0
  696. sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +673 -0
  697. sage/rings/function_field/drinfeld_modules/drinfeld_module.py +2087 -0
  698. sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1131 -0
  699. sage/rings/function_field/drinfeld_modules/homset.py +420 -0
  700. sage/rings/function_field/drinfeld_modules/morphism.py +820 -0
  701. sage/rings/function_field/hermite_form_polynomial.cpython-314-x86_64-linux-musl.so +0 -0
  702. sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
  703. sage/rings/function_field/khuri_makdisi.cpython-314-x86_64-linux-musl.so +0 -0
  704. sage/rings/function_field/khuri_makdisi.pyx +935 -0
  705. sage/rings/invariants/all.py +4 -0
  706. sage/rings/invariants/invariant_theory.py +4597 -0
  707. sage/rings/invariants/reconstruction.py +395 -0
  708. sage/rings/polynomial/all__sagemath_modules.py +17 -0
  709. sage/rings/polynomial/integer_valued_polynomials.py +1230 -0
  710. sage/rings/polynomial/laurent_polynomial_mpair.cpython-314-x86_64-linux-musl.so +0 -0
  711. sage/rings/polynomial/laurent_polynomial_mpair.pxd +15 -0
  712. sage/rings/polynomial/laurent_polynomial_mpair.pyx +2023 -0
  713. sage/rings/polynomial/ore_function_element.py +952 -0
  714. sage/rings/polynomial/ore_function_field.py +1028 -0
  715. sage/rings/polynomial/ore_polynomial_element.cpython-314-x86_64-linux-musl.so +0 -0
  716. sage/rings/polynomial/ore_polynomial_element.pxd +48 -0
  717. sage/rings/polynomial/ore_polynomial_element.pyx +3145 -0
  718. sage/rings/polynomial/ore_polynomial_ring.py +1334 -0
  719. sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-314-x86_64-linux-musl.so +0 -0
  720. sage/rings/polynomial/polynomial_real_mpfr_dense.pyx +788 -0
  721. sage/rings/polynomial/q_integer_valued_polynomials.py +1264 -0
  722. sage/rings/polynomial/skew_polynomial_element.cpython-314-x86_64-linux-musl.so +0 -0
  723. sage/rings/polynomial/skew_polynomial_element.pxd +9 -0
  724. sage/rings/polynomial/skew_polynomial_element.pyx +684 -0
  725. sage/rings/polynomial/skew_polynomial_finite_field.cpython-314-x86_64-linux-musl.so +0 -0
  726. sage/rings/polynomial/skew_polynomial_finite_field.pxd +19 -0
  727. sage/rings/polynomial/skew_polynomial_finite_field.pyx +1093 -0
  728. sage/rings/polynomial/skew_polynomial_finite_order.cpython-314-x86_64-linux-musl.so +0 -0
  729. sage/rings/polynomial/skew_polynomial_finite_order.pxd +10 -0
  730. sage/rings/polynomial/skew_polynomial_finite_order.pyx +567 -0
  731. sage/rings/polynomial/skew_polynomial_ring.py +908 -0
  732. sage/rings/real_double_element_gsl.cpython-314-x86_64-linux-musl.so +0 -0
  733. sage/rings/real_double_element_gsl.pxd +8 -0
  734. sage/rings/real_double_element_gsl.pyx +794 -0
  735. sage/rings/real_field.py +58 -0
  736. sage/rings/real_mpfr.cpython-314-x86_64-linux-musl.so +0 -0
  737. sage/rings/real_mpfr.pxd +29 -0
  738. sage/rings/real_mpfr.pyx +6122 -0
  739. sage/rings/ring_extension.cpython-314-x86_64-linux-musl.so +0 -0
  740. sage/rings/ring_extension.pxd +42 -0
  741. sage/rings/ring_extension.pyx +2779 -0
  742. sage/rings/ring_extension_conversion.cpython-314-x86_64-linux-musl.so +0 -0
  743. sage/rings/ring_extension_conversion.pxd +16 -0
  744. sage/rings/ring_extension_conversion.pyx +462 -0
  745. sage/rings/ring_extension_element.cpython-314-x86_64-linux-musl.so +0 -0
  746. sage/rings/ring_extension_element.pxd +21 -0
  747. sage/rings/ring_extension_element.pyx +1635 -0
  748. sage/rings/ring_extension_homset.py +64 -0
  749. sage/rings/ring_extension_morphism.cpython-314-x86_64-linux-musl.so +0 -0
  750. sage/rings/ring_extension_morphism.pxd +35 -0
  751. sage/rings/ring_extension_morphism.pyx +920 -0
  752. sage/schemes/all__sagemath_modules.py +1 -0
  753. sage/schemes/projective/all__sagemath_modules.py +1 -0
  754. sage/schemes/projective/coherent_sheaf.py +300 -0
  755. sage/schemes/projective/cohomology.py +510 -0
  756. sage/stats/all.py +15 -0
  757. sage/stats/basic_stats.py +489 -0
  758. sage/stats/distributions/all.py +7 -0
  759. sage/stats/distributions/catalog.py +34 -0
  760. sage/stats/distributions/dgs.h +50 -0
  761. sage/stats/distributions/dgs.pxd +111 -0
  762. sage/stats/distributions/dgs_bern.h +400 -0
  763. sage/stats/distributions/dgs_gauss.h +614 -0
  764. sage/stats/distributions/dgs_misc.h +104 -0
  765. sage/stats/distributions/discrete_gaussian_integer.cpython-314-x86_64-linux-musl.so +0 -0
  766. sage/stats/distributions/discrete_gaussian_integer.pxd +14 -0
  767. sage/stats/distributions/discrete_gaussian_integer.pyx +498 -0
  768. sage/stats/distributions/discrete_gaussian_lattice.py +908 -0
  769. sage/stats/distributions/discrete_gaussian_polynomial.py +141 -0
  770. sage/stats/hmm/all.py +15 -0
  771. sage/stats/hmm/chmm.cpython-314-x86_64-linux-musl.so +0 -0
  772. sage/stats/hmm/chmm.pyx +1595 -0
  773. sage/stats/hmm/distributions.cpython-314-x86_64-linux-musl.so +0 -0
  774. sage/stats/hmm/distributions.pxd +29 -0
  775. sage/stats/hmm/distributions.pyx +531 -0
  776. sage/stats/hmm/hmm.cpython-314-x86_64-linux-musl.so +0 -0
  777. sage/stats/hmm/hmm.pxd +17 -0
  778. sage/stats/hmm/hmm.pyx +1388 -0
  779. sage/stats/hmm/util.cpython-314-x86_64-linux-musl.so +0 -0
  780. sage/stats/hmm/util.pxd +7 -0
  781. sage/stats/hmm/util.pyx +165 -0
  782. sage/stats/intlist.cpython-314-x86_64-linux-musl.so +0 -0
  783. sage/stats/intlist.pxd +14 -0
  784. sage/stats/intlist.pyx +588 -0
  785. sage/stats/r.py +49 -0
  786. sage/stats/time_series.cpython-314-x86_64-linux-musl.so +0 -0
  787. sage/stats/time_series.pxd +6 -0
  788. sage/stats/time_series.pyx +2546 -0
  789. sage/tensor/all.py +2 -0
  790. sage/tensor/modules/all.py +8 -0
  791. sage/tensor/modules/alternating_contr_tensor.py +761 -0
  792. sage/tensor/modules/comp.py +5598 -0
  793. sage/tensor/modules/ext_pow_free_module.py +824 -0
  794. sage/tensor/modules/finite_rank_free_module.py +3589 -0
  795. sage/tensor/modules/format_utilities.py +333 -0
  796. sage/tensor/modules/free_module_alt_form.py +858 -0
  797. sage/tensor/modules/free_module_automorphism.py +1207 -0
  798. sage/tensor/modules/free_module_basis.py +1074 -0
  799. sage/tensor/modules/free_module_element.py +284 -0
  800. sage/tensor/modules/free_module_homset.py +652 -0
  801. sage/tensor/modules/free_module_linear_group.py +564 -0
  802. sage/tensor/modules/free_module_morphism.py +1581 -0
  803. sage/tensor/modules/free_module_tensor.py +3289 -0
  804. sage/tensor/modules/reflexive_module.py +386 -0
  805. sage/tensor/modules/tensor_free_module.py +780 -0
  806. sage/tensor/modules/tensor_free_submodule.py +538 -0
  807. sage/tensor/modules/tensor_free_submodule_basis.py +140 -0
  808. sage/tensor/modules/tensor_with_indices.py +1043 -0
@@ -0,0 +1,1965 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ # sage.doctest: needs sage.graphs
3
+ r"""
4
+ Nonsymmetric Macdonald polynomials
5
+
6
+ AUTHORS:
7
+
8
+ - Anne Schilling and Nicolas M. Thiéry (2013): initial version
9
+
10
+ ACKNOWLEDGEMENTS:
11
+
12
+ The initial version of this code (together with :class:`.root_lattice_realization_algebras.Algebras`
13
+ and :class:`.hecke_algebra_representation.HeckeAlgebraRepresentation`) was written by
14
+ Anne Schilling and Nicolas M. Thiery during the ICERM Semester Program on "Automorphic Forms,
15
+ Combinatorial Representation Theory and Multiple Dirichlet Series" (January 28, 2013 - May 3, 2013)
16
+ with the help of Dan Bump, Ben Brubaker, Bogdan Ion, Dan Orr, Arun Ram, Siddhartha Sahi, and Mark Shimozono.
17
+ Special thanks go to Bogdan Ion and Mark Shimozono for their patient explanations and hand computations
18
+ to check the code.
19
+ """
20
+ # ****************************************************************************
21
+ # Copyright (C) 2013 Nicolas M. Thiery <nthiery at users.sf.net>
22
+ # Anne Schilling <anne at math.ucdavis.edu>
23
+ #
24
+ # Distributed under the terms of the GNU General Public License (GPL)
25
+ # https://www.gnu.org/licenses/
26
+ # ****************************************************************************
27
+ from sage.misc.cachefunc import cached_method
28
+ from sage.misc.lazy_attribute import lazy_attribute
29
+ from sage.rings.integer_ring import ZZ
30
+ from sage.combinat.free_module import CombinatorialFreeModule
31
+ from sage.combinat.root_system.hecke_algebra_representation import CherednikOperatorsEigenvectors
32
+
33
+
34
+ class NonSymmetricMacdonaldPolynomials(CherednikOperatorsEigenvectors):
35
+ r"""
36
+ Nonsymmetric Macdonald polynomials.
37
+
38
+ INPUT:
39
+
40
+ - ``KL`` -- an affine Cartan type or the group algebra of a
41
+ realization of the affine weight lattice
42
+ - ``q``, ``q1``, ``q2`` -- parameters in the base ring of the group algebra
43
+ (default: ``q``, ``q1``, ``q2``)
44
+ - ``normalized`` -- boolean (default: ``True``); whether to normalize the
45
+ result to have leading coefficient 1
46
+
47
+ This implementation covers all reduced affine root systems.
48
+ The polynomials are constructed recursively by the application
49
+ of intertwining operators.
50
+
51
+ .. TODO::
52
+
53
+ - Non-reduced case (Koornwinder polynomials).
54
+ - Non-equal parameters for the affine Hecke algebra.
55
+ - Choice of convention (dominant/anti-dominant, ...).
56
+ - More uniform implementation of the `T_0^\vee` operator.
57
+ - Optimizations, in particular in the calculation of the
58
+ eigenvalues for the recursion.
59
+
60
+ EXAMPLES:
61
+
62
+ We construct the family of nonsymmetric Macdonald polynomials in
63
+ three variables in type `A`::
64
+
65
+ sage: E = NonSymmetricMacdonaldPolynomials(["A",2,1])
66
+
67
+ They are constructed as elements of the group algebra of the
68
+ classical weight lattice `L_0` (or one of its realizations, such as
69
+ the ambient space, which is used here) and indexed by elements of `L_0`::
70
+
71
+ sage: L0 = E.keys(); L0
72
+ Ambient space of the Root system of type ['A', 2]
73
+
74
+ Here is the nonsymmetric Macdonald polynomial with leading term
75
+ `[2,0,1]`::
76
+
77
+ sage: E[L0([2,0,1])] # needs sage.libs.gap
78
+ -((q*q1+q*q2)/(-q*q1-q2))*B[(1, 1, 1)]
79
+ - ((q1+q2)/(-q*q1-q2))*B[(2, 1, 0)] + B[(2, 0, 1)]
80
+
81
+ It can be seen as a polynomial (or in general a Laurent
82
+ polynomial) by interpreting each term as an exponent vector. The
83
+ parameter `q` is the exponential of the null (co)root, whereas
84
+ `q_1` and `q_2` are the two eigenvalues of each generator
85
+ `T_i` of the affine Hecke algebra (see the background section for
86
+ details).
87
+
88
+ By setting `q_1=t`, `q_2=-1` and using the
89
+ :meth:`.root_lattice_realization_algebras.Algebras.ElementMethods.expand`
90
+ method, we recover the nonsymmetric Macdonald polynomial as
91
+ computed by [HHL06]_'s combinatorial formula::
92
+
93
+ sage: K = QQ['q,t'].fraction_field()
94
+ sage: q,t = K.gens()
95
+ sage: E = NonSymmetricMacdonaldPolynomials(["A",2,1], q=q, q1=t, q2=-1)
96
+ sage: vars = K['x0,x1,x2'].gens()
97
+ sage: E[L0([2,0,1])].expand(vars) # needs sage.libs.gap
98
+ (t - 1)/(q*t - 1)*x0^2*x1 + x0^2*x2 + (q*t - q)/(q*t - 1)*x0*x1*x2
99
+
100
+ sage: from sage.combinat.sf.ns_macdonald import E # needs sage.combinat
101
+ sage: E([2,0,1]) # needs sage.combinat sage.groups
102
+ (t - 1)/(q*t - 1)*x0^2*x1 + x0^2*x2 + (q*t - q)/(q*t - 1)*x0*x1*x2
103
+
104
+ Here is a type `G_2^{(1)}` nonsymmetric Macdonald polynomial::
105
+
106
+ sage: E = NonSymmetricMacdonaldPolynomials(["G",2,1])
107
+ sage: L0 = E.keys()
108
+ sage: omega = L0.fundamental_weights()
109
+ sage: E[omega[2] - omega[1]]
110
+ -((q*q1^3*q2+q*q1^2*q2^2)/(q*q1^4-q2^4))*B[(0, 0, 0)] + B[(1, -1, 0)]
111
+ - ((q1*q2^3+q2^4)/(q*q1^4-q2^4))*B[(1, 0, -1)]
112
+
113
+ Many more examples are given after the background section.
114
+
115
+ .. SEEALSO::
116
+
117
+ - :func:`sage.combinat.sf.ns_macdonald.E`
118
+ - :meth:`SymmetricFunctions.macdonald`
119
+
120
+ .. RUBRIC:: Background
121
+
122
+ .. RUBRIC:: The polynomial module
123
+
124
+ The nonsymmetric Macdonald polynomials are a distinguished basis of the "polynomial" module
125
+ of the affine Hecke algebra. Given::
126
+
127
+ - a ground ring `K`, which contains the input parameters `q, q_1, q_2`
128
+ - an affine root system, specified by a Cartan type `C`
129
+ - a realization `L` of the weight lattice of type `C`
130
+
131
+ the polynomial module is the group algebra `K[L_0]` of the classical
132
+ weight lattice `L_0` with coefficients in `K`. It is isomorphic to the
133
+ Laurent polynomial ring over `K` generated by the formal exponentials
134
+ of any basis of `L_0`.
135
+
136
+ In our running example `L` is the ambient space of type `C_2^{(1)}`::
137
+
138
+ sage: K = QQ['q,q1,q2'].fraction_field()
139
+ sage: q, q1, q2 = K.gens()
140
+ sage: C = CartanType(["C",2,1])
141
+ sage: L = RootSystem(C).ambient_space(); L
142
+ Ambient space of the Root system of type ['C', 2, 1]
143
+
144
+ sage: L.simple_roots()
145
+ Finite family {0: -2*e[0] + e['delta'], 1: e[0] - e[1], 2: 2*e[1]}
146
+ sage: omega = L.fundamental_weights(); omega
147
+ Finite family {0: e['deltacheck'],
148
+ 1: e[0] + e['deltacheck'],
149
+ 2: e[0] + e[1] + e['deltacheck']}
150
+
151
+ sage: L0 = L.classical(); L0
152
+ Ambient space of the Root system of type ['C', 2]
153
+ sage: KL0 = L0.algebra(K); KL0
154
+ Algebra of the Ambient space of the Root system of type ['C', 2]
155
+ over Fraction Field of Multivariate Polynomial Ring in q, q1, q2 over Rational Field
156
+
157
+ .. RUBRIC:: Affine Hecke algebra
158
+
159
+ The affine Hecke algebra is generated by elements `T_i` for ``i`` in the
160
+ set of affine Dynkin nodes. They satisfy the same braid relations
161
+ as the simple reflections `s_i` of the affine Weyl group.
162
+ The `T_i` satisfy the quadratic relation
163
+
164
+ .. MATH::
165
+
166
+ (T_i-q_1)\circ(T_i-q_2) = 0,
167
+
168
+ where `q_1` and `q_2` are the input parameters. Some of the
169
+ representation theory requires that `q_1` and `q_2` satisfy
170
+ additional relations; typically one uses the specializations
171
+ `q_1=u` and `q_2=-1/u` or `q_1=t` and `q_2=-1`). This can be
172
+ achieved by constructing an appropriate field and passing `q_1`
173
+ and `q_2` appropriately; see the examples. In principle, the
174
+ parameter(s) could further depend on ``i``; this is not yet
175
+ implemented but the code has been designed in such a way that this
176
+ feature is easy to add.
177
+
178
+ .. RUBRIC:: Demazure-Lusztig operators
179
+
180
+ The ``i``-th Demazure-Lusztig operator is an operator on `K[L]`
181
+ which interpolates between the reflection `s_i` and the Demazure operator `\pi_i`
182
+ (see :meth:`.root_lattice_realization.RootLatticeRealization.Algebras.ParentMethods.demazure_lusztig_operators`).::
183
+
184
+ sage: KL = L.algebra(K); KL
185
+ Algebra of the Ambient space of the Root system of type ['C', 2, 1]
186
+ over Fraction Field of Multivariate Polynomial Ring in q, q1, q2 over Rational Field
187
+ sage: T = KL.demazure_lusztig_operators(q1, q2)
188
+ sage: x = KL.monomial(omega[1]); x
189
+ B[e[0] + e['deltacheck']]
190
+ sage: T[2](x)
191
+ q1*B[e[0] + e['deltacheck']]
192
+ sage: T[1](x)
193
+ (q1+q2)*B[e[0] + e['deltacheck']] + q1*B[e[1] + e['deltacheck']]
194
+ sage: T[0](x)
195
+ q1*B[e[0] + e['deltacheck']]
196
+
197
+ The affine Hecke algebra acts on `K[L]` by letting the generators `T_i` act by
198
+ the Demazure-Lusztig operators. The class
199
+ :class:`sage.combinat.root_system.hecke_algebra_representation.HeckeAlgebraRepresentation`
200
+ implements some simple generic features for representations of affine Hecke algebras
201
+ defined by the action of their `T`-generators.::
202
+
203
+ sage: T
204
+ A representation of the (q1, q2)-Hecke algebra of type ['C', 2, 1] on
205
+ Algebra of the Ambient space of the Root system of type ['C', 2, 1] over
206
+ Fraction Field of Multivariate Polynomial Ring in q, q1, q2 over Rational Field
207
+ sage: type(T)
208
+ <class 'sage.combinat.root_system.hecke_algebra_representation.HeckeAlgebraRepresentation'>
209
+ sage: T._test_relations() # long time (1.3s)
210
+
211
+ Here we construct the operator `q_1 T_2^{-1}\circ T_1^{-1}T_0`
212
+ from a signed reduced word::
213
+
214
+ sage: T.Tw([0,1,2],[1,-1,-1], q1^2)
215
+ Generic endomorphism of Algebra of the Ambient space of the Root system of type ['C', 2, 1]
216
+ over Fraction Field of Multivariate Polynomial Ring in q, q1, q2 over Rational Field
217
+
218
+ (note the reversal of the word). Inverses are computed using the
219
+ quadratic relation.
220
+
221
+ .. RUBRIC:: Cherednik operators
222
+
223
+ The affine Hecke algebra contains elements `Y_\lambda` indexed by
224
+ the coroot lattice. Their action on `K[L]` is implemented in Sage::
225
+
226
+ sage: Y = T.Y(); Y
227
+ Lazy family (...)_{i in Coroot lattice of the Root system of type ['C', 2, 1]}
228
+ sage: alphacheck = Y.keys().simple_roots()
229
+ sage: Y1 = Y[alphacheck[1]]
230
+ sage: Y1(x)
231
+ ((q1^2+2*q1*q2+q2^2)/(-q1*q2))*B[e[0] + e['deltacheck']]
232
+ - ((q1^2+2*q1*q2+q2^2)/(-q2^2))*B[-e[1] + e['deltacheck']]
233
+ - ((q1^2+q1*q2)/(-q2^2))*B[2*e[0] - e[1] - e['delta'] + e['deltacheck']]
234
+ + ((q1^3+q1^2*q2)/(-q2^3))*B[e[0] - e['delta'] + e['deltacheck']]
235
+ + ((q1^3+q1^2*q2)/(-q2^3))*B[e[0] - 2*e[1] - e['delta'] + e['deltacheck']]
236
+ + ((q1+q2)/(-q2))*B[e[1] + e['deltacheck']]
237
+ + ((q1^3+2*q1^2*q2+q1*q2^2)/(-q2^3))*B[-e[1] - e['delta'] + e['deltacheck']]
238
+ + ((q1^3+q1^2*q2)/(-q2^3))*B[2*e[0] - e[1] - 2*e['delta'] + e['deltacheck']]
239
+ + ((q1^3+2*q1^2*q2+q1*q2^2)/(-q2^3))*B[-e[0] - e['delta'] + e['deltacheck']]
240
+ + ((q1^3+2*q1^2*q2+q1*q2^2)/(-q2^3))*B[e[0] - 2*e['delta'] + e['deltacheck']]
241
+ + ((q1^3+q1^2*q2)/(-q2^3))*B[3*e[0] - 3*e['delta'] + e['deltacheck']]
242
+ + ((q1^3+q1^2*q2)/(-q2^3))*B[-e[0] - 2*e[1] - e['delta'] + e['deltacheck']]
243
+ + ((q1^3+q1^2*q2)/(-q2^3))*B[e[0] - 2*e[1] - 2*e['delta'] + e['deltacheck']]
244
+ + (q1^3/(-q2^3))*B[3*e[0] - 2*e[1] - 3*e['delta'] + e['deltacheck']]
245
+
246
+ The Cherednik operators span a Laurent polynomial ring inside the
247
+ affine Hecke algebra; namely `\lambda\mapsto Y_\lambda` is a group
248
+ isomorphism from the classical root lattice (viewed additively) to
249
+ the affine Hecke algebra (viewed multiplicatively). In practice,
250
+ `Y_\lambda` is constructed by computing combinatorially its signed
251
+ reduced word (and an overall scalar factor) using the periodic
252
+ orientation of the alcove model in the coweight lattice (see
253
+ :meth:`.hecke_algebra_representation.HeckeAlgebraRepresentation.Y_lambdacheck`)::
254
+
255
+ sage: Lcheck = L.root_system.coweight_lattice()
256
+ sage: w = Lcheck.reduced_word_of_translation(Lcheck(alphacheck[1])); w
257
+ [0, 2, 1, 0, 2, 1]
258
+ sage: Lcheck.signs_of_alcovewalk(w)
259
+ [1, -1, 1, -1, 1, 1]
260
+
261
+ .. RUBRIC:: Level zero representation of the affine Hecke algebra
262
+
263
+ The action of the affine Hecke algebra on `K[L]` induces
264
+ an action on `K[L_0]`: the action of `T_i` on `X^\lambda` for `\lambda` a
265
+ classical weight in `L_0` is obtained by embedding the weight at
266
+ level zero in the affine weight lattice (see
267
+ :meth:`.weight_lattice_realizations.WeightLatticeRealizations.ParentMethods.embed_at_level`)
268
+ applying the Demazure-Lusztig operator there, and projecting from `K[L]\to K[L_0]`
269
+ mapping the exponential of `\delta` to `q` (see
270
+ :meth:`.root_lattice_realization_algebras.Algebras.ParentMethods.q_project`). This is implemented in
271
+ :meth:`.root_lattice_realization_algebras.Algebras.ParentMethods.demazure_lusztig_operators_on_classical`::
272
+
273
+ sage: T = KL.demazure_lusztig_operators_on_classical(q, q1,q2)
274
+ sage: omega = L0.fundamental_weights()
275
+ sage: x = KL0.monomial(omega[1])
276
+ sage: T[0](x)
277
+ -q*q2*B[(-1, 0)]
278
+
279
+ For classical nodes these are the usual Demazure-Lusztig operators::
280
+
281
+ sage: T[1](x)
282
+ (q1+q2)*B[(1, 0)] + q1*B[(0, 1)]
283
+
284
+ .. RUBRIC:: Nonsymmetric Macdonald polynomials
285
+
286
+ We can now finally define the nonsymmetric Macdonald polynomials.
287
+ Because the Cherednik operators commute (and there is no radical),
288
+ they can be simultaneously diagonalized; namely, `K[L_0]` admits a
289
+ `K`-basis of joint eigenvectors for the `Y_\lambda`. For `\mu \in
290
+ L_0`, the nonsymmetric Macdonald polynomial `E_\mu` is the unique
291
+ eigenvector of the family of Cherednik operators `Y_\lambda`
292
+ having `\mu` as leading term::
293
+
294
+ sage: E = NonSymmetricMacdonaldPolynomials(KL, q, q1, q2); E
295
+ The family of the Macdonald polynomials of type ['C', 2, 1]
296
+ with parameters q, q1, q2
297
+
298
+ Or for short::
299
+
300
+ sage: E = NonSymmetricMacdonaldPolynomials(C)
301
+
302
+ .. RUBRIC:: Recursive construction of the nonsymmetric Macdonald polynomials
303
+
304
+ The generators `T_i` of the affine Hecke algebra almost skew
305
+ commute with the Cherednik operators. More precisely, one
306
+ can deform them into the so-called intertwining operators:
307
+
308
+ .. MATH:: \tau_i = T_i - (q_1+q_2) \frac{Y_i^{a-1}}{1-Y_i^a}\,.
309
+
310
+ (where `a=1` except for `i=0` in type `BC` where `a=a_0=2`) which
311
+ satisfy the following skew commutation relations:
312
+
313
+ .. MATH:: \tau_i Y_\lambda = \tau_i Y_{s_i\lambda} \,.
314
+
315
+ If `s_i \mu \ne \mu`, applying `\tau_i` on an eigenvector `E_\mu`
316
+ produces a new eigenvector (essentially `E_{s_i\mu}`) with a
317
+ distinct eigenvalue. It follows that the eigenvectors indexed by
318
+ an affine Weyl orbit of weights, may be recursively computed from
319
+ a single weight in the orbit.
320
+
321
+ In the case at hand, there is a little complication: namely, the
322
+ simple reflections `s_i` acting at level 0 do not act transitively
323
+ on classical weights; in fact the orbits for the classical Weyl
324
+ group and for the affine Weyl group are the same. Thus, one can
325
+ construct the nonsymmetric Macdonald polynomials for all weights
326
+ from those for the classical dominant weights, but one is lacking
327
+ a creation operator to construct the nonsymmetric Macdonald
328
+ polynomials for dominant weights.
329
+
330
+ .. RUBRIC:: Twisted Demazure-Lusztig operators
331
+
332
+ To compensate for this, one needs to consider another affinization
333
+ of the action of the classical Demazure-Lusztig operators
334
+ `T_1,\dots,T_n`, which gives rise to the double affine Hecke algebra.
335
+ Following Cherednik, one adds another operator `T_0^\vee` implemented in:
336
+ :meth:`.root_lattice_realization_algebras.Algebras.ParentMethods.T0_check_on_basis`.
337
+ See also:
338
+ :meth:`.root_lattice_realization_algebras.Algebras.ParentMethods.twisted_demazure_lusztig_operators`.
339
+
340
+ Depending on the type (untwisted or not), this is a representation
341
+ of the affine Hecke algebra for another affinization of the
342
+ classical Cartan type. The corresponding action of the affine Weyl
343
+ group -- which is used to compute the recursion on `\mu` -- occurs
344
+ in the corresponding weight lattice realization::
345
+
346
+ sage: E.L()
347
+ Ambient space of the Root system of type ['C', 2, 1]
348
+ sage: E.L_prime()
349
+ Coambient space of the Root system of type ['B', 2, 1]
350
+ sage: E.L_prime().classical()
351
+ Ambient space of the Root system of type ['C', 2]
352
+
353
+ See :meth:`L_prime` and
354
+ :meth:`.cartan_type.CartanType_affine.other_affinization`.
355
+
356
+ REFERENCES:
357
+
358
+ .. [HaimanICM] \M. Haiman, Cherednik algebras, Macdonald polynomials and combinatorics,
359
+ Proceedings of the International Congress of Mathematicians,
360
+ Madrid 2006, Vol. III, 843-872.
361
+
362
+ .. [HHL06] \J. Haglund, M. Haiman and N. Loehr,
363
+ A combinatorial formula for nonsymmetric Macdonald polynomials,
364
+ Amer. J. Math. 130, No. 2 (2008), 359-383.
365
+
366
+ .. [LNSSS12] \C. Lenart, S. Naito, D. Sagaki, A. Schilling, M. Shimozono,
367
+ A uniform model for Kirillov-Reshetikhin crystals I: Lifting
368
+ the parabolic quantum Bruhat graph, preprint :arxiv:`1211.2042`
369
+ [math.QA]
370
+
371
+ .. RUBRIC:: More examples
372
+
373
+ We show how to create the nonsymmetric Macdonald polynomials in
374
+ two different ways and check that they are the same::
375
+
376
+ sage: K = QQ['q,u'].fraction_field()
377
+ sage: q, u = K.gens()
378
+ sage: E = NonSymmetricMacdonaldPolynomials(['D',3,1], q, u, -1/u)
379
+ sage: omega = E.keys().fundamental_weights()
380
+ sage: E[omega[1]+omega[3]]
381
+ -((q*u^2-q)/(-q*u^4+1))*B[(1/2, -1/2, 1/2)]
382
+ - ((q*u^2-q)/(-q*u^4+1))*B[(1/2, 1/2, -1/2)] + B[(3/2, 1/2, 1/2)]
383
+
384
+ sage: KL = RootSystem(["D",3,1]).ambient_space().algebra(K)
385
+ sage: P = NonSymmetricMacdonaldPolynomials(KL, q, u, -1/u)
386
+ sage: E[omega[1]+omega[3]] == P[omega[1]+omega[3]]
387
+ True
388
+ sage: E[E.keys()((0,1,-1))]
389
+ -((q*u^2-q)/(-q*u^2+1))*B[(0, 0, 0)] - ((u^2-1)/(-q*u^2+1))*B[(1, 1, 0)]
390
+ - ((u^2-1)/(-q*u^2+1))*B[(1, 0, -1)] + B[(0, 1, -1)]
391
+
392
+ In type `A`, there is also a combinatorial implementation of the
393
+ nonsymmetric Macdonald polynomials in terms of augmented diagram
394
+ fillings as in [HHL06]_. See
395
+ :func:`sage.combinat.sf.ns_macdonald.E`. First we check that
396
+ these polynomials are indeed eigenvectors of the Cherednik
397
+ operators::
398
+
399
+ sage: K = QQ['q,t'].fraction_field()
400
+ sage: q,t = K.gens()
401
+ sage: q1 = t; q2 = -1
402
+ sage: KL = RootSystem(["A",2,1]).ambient_space().algebra(K)
403
+ sage: KL0 = KL.classical()
404
+ sage: E = NonSymmetricMacdonaldPolynomials(KL,q, q1, q2)
405
+ sage: omega = E.keys().fundamental_weights()
406
+ sage: w = omega[1]
407
+
408
+ sage: # needs sage.combinat sage.groups
409
+ sage: import sage.combinat.sf.ns_macdonald as NS
410
+ sage: p = NS.E([1,0,0]); p
411
+ x0
412
+ sage: pp = KL0.from_polynomial(p)
413
+ sage: E.eigenvalues(KL0.from_polynomial(p))
414
+ [t, (-1)/(-q*t^2), t]
415
+
416
+ sage: def eig(l): return E.eigenvalues(KL0.from_polynomial(NS.E(l)))
417
+
418
+ sage: # needs sage.combinat sage.groups
419
+ sage: eig([1,0,0])
420
+ [t, (-1)/(-q*t^2), t]
421
+ sage: eig([2,0,0])
422
+ [q*t, (-1)/(-q^2*t^2), t]
423
+ sage: eig([3,0,0])
424
+ [q^2*t, (-1)/(-q^3*t^2), t]
425
+ sage: eig([2,0,4])
426
+ [(-1)/(-q^3*t), 1/(q^2*t), q^4*t^2]
427
+
428
+ Next we check explicitly that they agree with the current implementation::
429
+
430
+ sage: K = QQ['q','t'].fraction_field()
431
+ sage: q,t = K.gens()
432
+ sage: KL = RootSystem(["A",1,1]).ambient_lattice().algebra(K)
433
+ sage: E = NonSymmetricMacdonaldPolynomials(KL,q, t, -1)
434
+ sage: L0 = E.keys()
435
+ sage: KL0 = KL.classical()
436
+ sage: P = K['x0,x1']
437
+ sage: def EE(weight): return E[L0(weight)].expand(P.gens())
438
+
439
+ sage: # needs sage.combinat
440
+ sage: import sage.combinat.sf.ns_macdonald as NS
441
+ sage: EE([0,0])
442
+ 1
443
+ sage: NS.E([0,0]) # needs sage.groups
444
+ 1
445
+ sage: EE([1,0])
446
+ x0
447
+ sage: NS.E([1,0]) # needs sage.groups
448
+ x0
449
+ sage: EE([0,1])
450
+ (t - 1)/(q*t - 1)*x0 + x1
451
+ sage: NS.E([0,1]) # needs sage.groups
452
+ (t - 1)/(q*t - 1)*x0 + x1
453
+ sage: EE([2,0])
454
+ x0^2 + (q*t - q)/(q*t - 1)*x0*x1
455
+ sage: NS.E([2,0]) # needs sage.groups
456
+ x0^2 + (q*t - q)/(q*t - 1)*x0*x1
457
+
458
+ The same, directly in the ambient lattice with several shifts::
459
+
460
+ sage: E[L0([2,0])] # needs sage.combinat
461
+ -((q*t-q)/(-q*t+1))*B[(1, 1)] + B[(2, 0)]
462
+ sage: E[L0([1,-1])] # needs sage.combinat
463
+ -((q*t-q)/(-q*t+1))*B[(0, 0)] + B[(1, -1)]
464
+ sage: E[L0([0,-2])] # needs sage.combinat
465
+ -((q*t-q)/(-q*t+1))*B[(-1, -1)] + B[(0, -2)]
466
+
467
+ Systematic checks with Sage's implementation of [HHL06]_::
468
+
469
+ sage: assert all(EE([x,y]) == NS.E([x,y]) # needs sage.combinat
470
+ ....: for d in range(5) for x,y in IntegerVectors(d,2))
471
+
472
+ With the current implementation, we can compute nonsymmetric
473
+ Macdonald polynomials for any type, for example for type `E_6^{(1)}`::
474
+
475
+ sage: K = QQ['q,u'].fraction_field()
476
+ sage: q, u = K.gens()
477
+ sage: KL = RootSystem(["E",6,1]).weight_space(extended=True).algebra(K)
478
+ sage: E = NonSymmetricMacdonaldPolynomials(KL,q,u,-1/u)
479
+ sage: L0 = E.keys()
480
+
481
+ sage: E[L0.fundamental_weight(1).weyl_action([2,4,3,2,1])]
482
+ -((u^2-1)/(-q*u^16+1))*B[-Lambda[1] + Lambda[3]]
483
+ - ((u^2-1)/(-q*u^16+1))*B[Lambda[1]] + B[-Lambda[2] + Lambda[5]]
484
+ - ((u^2-1)/(-q*u^16+1))*B[Lambda[2]
485
+ - Lambda[4] + Lambda[5]] - ((u^2-1)/(-q*u^16+1))*B[-Lambda[3] + Lambda[4]]
486
+
487
+ sage: E[L0.fundamental_weight(2).weyl_action([2,5,3,4,2])] # long time (6s)
488
+ -((q^2*u^20-q^2*u^18-q*u^2+q)/(-q^2*u^32+2*q*u^16-1))*B[0]
489
+ + B[Lambda[1] - Lambda[3] + Lambda[4] - Lambda[5] + Lambda[6]]
490
+ - ((u^2-1)/(-q*u^16+1))*B[Lambda[1] - Lambda[3] + Lambda[5]]
491
+ - ((q*u^20-q*u^18-u^2+1)/(-q^2*u^32+2*q*u^16-1))*B[-Lambda[2] + Lambda[4]]
492
+ - ((q*u^20-q*u^18-u^2+1)/(-q^2*u^32+2*q*u^16-1))*B[Lambda[2]]
493
+ + ((u^4-2*u^2+1)/(q^2*u^32-2*q*u^16+1))*B[Lambda[3] - Lambda[4] + Lambda[5]]
494
+ - ((u^2-1)/(-q*u^16+1))*B[Lambda[3] - Lambda[5] + Lambda[6]]
495
+ sage: E[L0.fundamental_weight(1)+L0.fundamental_weight(6)] # long time (13s)
496
+ ((q^2*u^10-q^2*u^8-q^2*u^2+q^2)/(q^2*u^26-q*u^16-q*u^10+1))*B[0]
497
+ - ((q*u^2-q)/(-q*u^10+1))*B[Lambda[1] - Lambda[2] + Lambda[6]]
498
+ - ((q*u^2-q)/(-q*u^10+1))*B[Lambda[1] + Lambda[2] - Lambda[4] + Lambda[6]]
499
+ - ((q*u^2-q)/(-q*u^10+1))*B[Lambda[1] - Lambda[3] + Lambda[4] - Lambda[5] + Lambda[6]]
500
+ - ((q*u^2-q)/(-q*u^10+1))*B[Lambda[1] - Lambda[3] + Lambda[5]] + B[Lambda[1] + Lambda[6]]
501
+ - ((q*u^2-q)/(-q*u^10+1))*B[-Lambda[2] + Lambda[4]]
502
+ - ((q*u^2-q)/(-q*u^10+1))*B[Lambda[2]]
503
+ - ((q*u^2-q)/(-q*u^10+1))*B[Lambda[3] - Lambda[4] + Lambda[5]]
504
+ - ((q*u^2-q)/(-q*u^10+1))*B[Lambda[3] - Lambda[5] + Lambda[6]]
505
+
506
+ We test various other types::
507
+
508
+ sage: K = QQ['q,u'].fraction_field()
509
+ sage: q, u = K.gens()
510
+ sage: KL = RootSystem(["A",5,2]).ambient_space().algebra(K)
511
+ sage: E = NonSymmetricMacdonaldPolynomials(KL, q, u, -1/u)
512
+ sage: L0 = E.keys()
513
+ sage: E[L0.fundamental_weight(2)]
514
+ -((q*u^2-q)/(-q*u^8+1))*B[(0, 0, 0)] + B[(1, 1, 0)]
515
+ sage: E[L0((0,-1,1))] # long time (1.5s)
516
+ -((q^2*u^10-q^2*u^8+q*u^6-q*u^4-q*u^2-u^2+q+1)/(-q^3*u^12+q^2*u^8+q*u^4-1))*B[(0, 0, 0)]
517
+ - ((u^2-1)/(-q*u^4+1))*B[(1, -1, 0)]
518
+ + ((u^6-u^4-u^2+1)/(q^3*u^12-q^2*u^8-q*u^4+1))*B[(1, 1, 0)]
519
+ + ((u^4-2*u^2+1)/(q^3*u^12-q^2*u^8-q*u^4+1))*B[(1, 0, -1)]
520
+ + ((q^2*u^12-q^2*u^10-u^2+1)/(q^3*u^12-q^2*u^8-q*u^4+1))*B[(1, 0, 1)]
521
+ + B[(0, -1, 1)]
522
+ - ((u^2-1)/(-q^2*u^8+1))*B[(0, 1, -1)] - ((u^2-1)/(-q^2*u^8+1))*B[(0, 1, 1)]
523
+ sage: K = QQ['q,u'].fraction_field()
524
+ sage: q, u = K.gens()
525
+ sage: KL = RootSystem(["E",6,2]).ambient_space().algebra(K)
526
+ sage: E = NonSymmetricMacdonaldPolynomials(KL,q,u,-1/u)
527
+ sage: L0 = E.keys()
528
+ sage: E[L0.fundamental_weight(4)] # long time (5s)
529
+ -((q^3*u^20-q^3*u^18-q^2*u^2+q^2)/(-q^3*u^28+q^2*u^22+q*u^6-1))*B[(0, 0, 0, 0)]
530
+ - ((q*u^2-q)/(-q*u^6+1))*B[(1/2, 1/2, -1/2, -1/2)]
531
+ - ((q*u^2-q)/(-q*u^6+1))*B[(1/2, 1/2, -1/2, 1/2)]
532
+ - ((q*u^2-q)/(-q*u^6+1))*B[(1/2, 1/2, 1/2, -1/2)]
533
+ - ((q*u^2-q)/(-q*u^6+1))*B[(1/2, 1/2, 1/2, 1/2)]
534
+ + ((q*u^2-q)/(q*u^6-1))*B[(1, 0, 0, 0)] + B[(1, 1, 0, 0)]
535
+ - ((q*u^2-q)/(-q*u^6+1))*B[(0, 1, 0, 0)]
536
+ sage: E[L0((1,-1,0,0))] # long time (23s)
537
+ ((q^3*u^18-q^3*u^16+q*u^4-q^2*u^2-2*q*u^2+q^2+q)/(q^3*u^18-q^2*u^12-q*u^6+1))*B[(0, 0, 0, 0)]
538
+ - ((q^3*u^18-q^3*u^16-q*u^2+q)/(-q^3*u^18+q^2*u^12+q*u^6-1))*B[(1/2, -1/2, -1/2, -1/2)]
539
+ - ((q^3*u^18-q^3*u^16-q*u^2+q)/(-q^3*u^18+q^2*u^12+q*u^6-1))*B[(1/2, -1/2, -1/2, 1/2)]
540
+ + ((q^3*u^18-q^3*u^16-q*u^2+q)/(q^3*u^18-q^2*u^12-q*u^6+1))*B[(1/2, -1/2, 1/2, -1/2)]
541
+ + ((q^3*u^18-q^3*u^16-q*u^2+q)/(q^3*u^18-q^2*u^12-q*u^6+1))*B[(1/2, -1/2, 1/2, 1/2)]
542
+ + ((q*u^8-q*u^6-q*u^2+q)/(q^3*u^18-q^2*u^12-q*u^6+1))*B[(1/2, 1/2, -1/2, -1/2)]
543
+ + ((q*u^8-q*u^6-q*u^2+q)/(q^3*u^18-q^2*u^12-q*u^6+1))*B[(1/2, 1/2, -1/2, 1/2)]
544
+ - ((q*u^8-q*u^6-q*u^2+q)/(-q^3*u^18+q^2*u^12+q*u^6-1))*B[(1/2, 1/2, 1/2, -1/2)]
545
+ - ((q*u^8-q*u^6-q*u^2+q)/(-q^3*u^18+q^2*u^12+q*u^6-1))*B[(1/2, 1/2, 1/2, 1/2)]
546
+ - ((q^2*u^18-q^2*u^16+q*u^8-q*u^6-q*u^2-u^2+q+1)/(-q^3*u^18+q^2*u^12+q*u^6-1))*B[(1, 0, 0, 0)]
547
+ + B[(1, -1, 0, 0)] - ((u^2-1)/(-q^2*u^12+1))*B[(1, 1, 0, 0)]
548
+ - ((u^2-1)/(-q^2*u^12+1))*B[(1, 0, -1, 0)]
549
+ + ((u^2-1)/(q^2*u^12-1))*B[(1, 0, 1, 0)]
550
+ - ((u^2-1)/(-q^2*u^12+1))*B[(1, 0, 0, -1)]
551
+ - ((u^2-1)/(-q^2*u^12+1))*B[(1, 0, 0, 1)]
552
+ - ((q*u^2-q)/(-q*u^6+1))*B[(0, -1, 0, 0)]
553
+ - ((q*u^4-2*q*u^2+q)/(-q^3*u^18+q^2*u^12+q*u^6-1))*B[(0, 1, 0, 0)]
554
+ - ((q*u^4-2*q*u^2+q)/(-q^3*u^18+q^2*u^12+q*u^6-1))*B[(0, 0, -1, 0)]
555
+ - ((q*u^4-2*q*u^2+q)/(-q^3*u^18+q^2*u^12+q*u^6-1))*B[(0, 0, 1, 0)]
556
+ - ((q*u^4-2*q*u^2+q)/(-q^3*u^18+q^2*u^12+q*u^6-1))*B[(0, 0, 0, -1)]
557
+ - ((q*u^4-2*q*u^2+q)/(-q^3*u^18+q^2*u^12+q*u^6-1))*B[(0, 0, 0, 1)]
558
+
559
+ Next we test a twisted type (checked against Maple computation by
560
+ Bogdan Ion for `q_1=t^2` and `q_2=-1`)::
561
+
562
+ sage: E = NonSymmetricMacdonaldPolynomials(["A",5,2])
563
+ sage: omega = E.keys()
564
+
565
+ sage: E[omega[1]]
566
+ B[(1, 0, 0)]
567
+
568
+ sage: E[-omega[1]]
569
+ B[(-1, 0, 0)]
570
+ + ((q*q1^6+q*q1^5*q2+q1*q2^5+q2^6)/(q^3*q1^6+q^2*q1^5*q2+q*q1*q2^5+q2^6))*B[(1, 0, 0)]
571
+ + ((q1+q2)/(q*q1+q2))*B[(0, -1, 0)] + ((q1+q2)/(q*q1+q2))*B[(0, 1, 0)]
572
+ + ((q1+q2)/(q*q1+q2))*B[(0, 0, -1)] + ((q1+q2)/(q*q1+q2))*B[(0, 0, 1)]
573
+
574
+ sage: E[omega[2]]
575
+ -((q1*q2^3+q2^4)/(q*q1^4-q2^4))*B[(1, 0, 0)] + B[(0, 1, 0)]
576
+
577
+ sage: E[-omega[2]]
578
+ ((q^2*q1^7+q^2*q1^6*q2-q1*q2^6-q2^7)/(q^3*q1^7-q^2*q1^5*q2^2+q*q1^2*q2^5-q2^7))*B[(1, 0, 0)]
579
+ + B[(0, -1, 0)]
580
+ + ((q*q1^5*q2^2+q*q1^4*q2^3-q1*q2^6-q2^7)/(q^3*q1^7-q^2*q1^5*q2^2+q*q1^2*q2^5-q2^7))*B[(0, 1, 0)]
581
+ - ((q1*q2+q2^2)/(q*q1^2-q2^2))*B[(0, 0, -1)]
582
+ + ((q1*q2+q2^2)/(-q*q1^2+q2^2))*B[(0, 0, 1)]
583
+
584
+ sage: E[-omega[1]-omega[2]]
585
+ ((q^3*q1^6+q^3*q1^5*q2+2*q^2*q1^6+3*q^2*q1^5*q2-q^2*q1^4*q2^2-2*q^2*q1^3*q2^3-q*q1^5*q2-2*q*q1^4*q2^2+q*q1^3*q2^3+2*q*q1^2*q2^4-q*q1*q2^5-q*q2^6+q1^3*q2^3+q1^2*q2^4-2*q1*q2^5-2*q2^6)/(q^4*q1^6+q^3*q1^5*q2-q^3*q1^4*q2^2+q*q1^2*q2^4-q*q1*q2^5-q2^6))*B[(0, 0, 0)]
586
+ + B[(-1, -1, 0)]
587
+ + ((q*q1^4+q*q1^3*q2+q1*q2^3+q2^4)/(q^3*q1^4+q^2*q1^3*q2+q*q1*q2^3+q2^4))*B[(-1, 1, 0)]
588
+ + ((q1+q2)/(q*q1+q2))*B[(-1, 0, -1)]
589
+ - ((q1+q2)/(-q*q1-q2))*B[(-1, 0, 1)]
590
+ + ((q*q1^4+q*q1^3*q2+q1*q2^3+q2^4)/(q^3*q1^4+q^2*q1^3*q2+q*q1*q2^3+q2^4))*B[(1, -1, 0)]
591
+ + ((q^2*q1^6+q^2*q1^5*q2+q*q1^5*q2-q*q1^3*q2^3-q1^5*q2-q1^4*q2^2+q1^3*q2^3+q1^2*q2^4-q1*q2^5-q2^6)/(q^4*q1^6+q^3*q1^5*q2-q^3*q1^4*q2^2+q*q1^2*q2^4-q*q1*q2^5-q2^6))*B[(1, 1, 0)]
592
+ + ((q*q1^4+2*q*q1^3*q2+q*q1^2*q2^2-q1^3*q2-q1^2*q2^2+q1*q2^3+q2^4)/(q^3*q1^4+q^2*q1^3*q2+q*q1*q2^3+q2^4))*B[(1, 0, -1)]
593
+ + ((q*q1^4+2*q*q1^3*q2+q*q1^2*q2^2-q1^3*q2-q1^2*q2^2+q1*q2^3+q2^4)/(q^3*q1^4+q^2*q1^3*q2+q*q1*q2^3+q2^4))*B[(1, 0, 1)]
594
+ + ((q1+q2)/(q*q1+q2))*B[(0, -1, -1)]
595
+ + ((q1+q2)/(q*q1+q2))*B[(0, -1, 1)]
596
+ + ((q*q1^4+2*q*q1^3*q2+q*q1^2*q2^2-q1^3*q2-q1^2*q2^2+q1*q2^3+q2^4)/(q^3*q1^4+q^2*q1^3*q2+q*q1*q2^3+q2^4))*B[(0, 1, -1)]
597
+ + ((q*q1^4+2*q*q1^3*q2+q*q1^2*q2^2-q1^3*q2-q1^2*q2^2+q1*q2^3+q2^4)/(q^3*q1^4+q^2*q1^3*q2+q*q1*q2^3+q2^4))*B[(0, 1, 1)]
598
+
599
+ sage: E[omega[1]-omega[2]]
600
+ ((q^3*q1^7+q^3*q1^6*q2-q*q1*q2^6-q*q2^7)/(q^3*q1^7-q^2*q1^5*q2^2+q*q1^2*q2^5-q2^7))*B[(0, 0, 0)]
601
+ + B[(1, -1, 0)]
602
+ + ((q*q1^5*q2^2+q*q1^4*q2^3-q1*q2^6-q2^7)/(q^3*q1^7-q^2*q1^5*q2^2+q*q1^2*q2^5-q2^7))*B[(1, 1, 0)]
603
+ - ((q1*q2+q2^2)/(q*q1^2-q2^2))*B[(1, 0, -1)]
604
+ + ((q1*q2+q2^2)/(-q*q1^2+q2^2))*B[(1, 0, 1)]
605
+
606
+ sage: E[omega[3]]
607
+ -((q1*q2^2+q2^3)/(-q*q1^3-q2^3))*B[(1, 0, 0)]
608
+ - ((q1*q2^2+q2^3)/(-q*q1^3-q2^3))*B[(0, 1, 0)] + B[(0, 0, 1)]
609
+
610
+ sage: E[-omega[3]]
611
+ ((q*q1^4*q2+q*q1^3*q2^2-q1*q2^4-q2^5)/(-q^2*q1^5-q2^5))*B[(1, 0, 0)]
612
+ + ((q*q1^4*q2+q*q1^3*q2^2-q1*q2^4-q2^5)/(-q^2*q1^5-q2^5))*B[(0, 1, 0)]
613
+ + B[(0, 0, -1)] - ((q1*q2^4+q2^5)/(-q^2*q1^5-q2^5))*B[(0, 0, 1)]
614
+
615
+ .. RUBRIC:: Comparison with the energy function of crystals
616
+
617
+ Next we test that the nonsymmetric Macdonald polynomials at `t=0`
618
+ match with the one-dimensional configuration sums involving
619
+ Kirillov-Reshetikhin crystals for various types. See
620
+ [LNSSS12]_::
621
+
622
+ sage: K = QQ['q,t'].fraction_field()
623
+ sage: q,t = K.gens()
624
+ sage: KL = RootSystem(["A",5,2]).ambient_space().algebra(K)
625
+ sage: E = NonSymmetricMacdonaldPolynomials(KL, q, t, -1)
626
+ sage: omega = E.keys().fundamental_weights()
627
+ sage: E[-omega[1]].map_coefficients(lambda x: x.subs(t=0))
628
+ B[(-1, 0, 0)] + B[(1, 0, 0)] + B[(0, -1, 0)] + B[(0, 1, 0)]
629
+ + B[(0, 0, -1)] + B[(0, 0, 1)]
630
+ sage: E[-omega[2]].map_coefficients(lambda x: x.subs(t=0)) # long time (3s)
631
+ (q+2)*B[(0, 0, 0)] + B[(-1, -1, 0)] + B[(-1, 1, 0)] + B[(-1, 0, -1)]
632
+ + B[(-1, 0, 1)] + B[(1, -1, 0)] + B[(1, 1, 0)] + B[(1, 0, -1)] + B[(1, 0, 1)]
633
+ + B[(0, -1, -1)] + B[(0, -1, 1)] + B[(0, 1, -1)] + B[(0, 1, 1)]
634
+
635
+ ::
636
+
637
+ sage: KL = RootSystem(["C",3,1]).ambient_space().algebra(K)
638
+ sage: E = NonSymmetricMacdonaldPolynomials(KL, q, t, -1)
639
+ sage: omega = E.keys().fundamental_weights()
640
+ sage: E[-omega[2]].map_coefficients(lambda x: x.subs(t=0)) # long time (5s)
641
+ 2*B[(0, 0, 0)] + B[(-1, -1, 0)] + B[(-1, 1, 0)] + B[(-1, 0, -1)]
642
+ + B[(-1, 0, 1)] + B[(1, -1, 0)] + B[(1, 1, 0)] + B[(1, 0, -1)] + B[(1, 0, 1)]
643
+ + B[(0, -1, -1)] + B[(0, -1, 1)] + B[(0, 1, -1)] + B[(0, 1, 1)]
644
+
645
+ ::
646
+
647
+ sage: R = RootSystem(['C',3,1])
648
+ sage: KL = R.weight_lattice(extended=True).algebra(K)
649
+ sage: E = NonSymmetricMacdonaldPolynomials(KL, q, t, -1)
650
+ sage: omega = E.keys().fundamental_weights()
651
+ sage: La = R.weight_space().basis()
652
+ sage: LS = crystals.ProjectedLevelZeroLSPaths(2*La[1])
653
+ sage: (E[-2*omega[1]].map_coefficients(lambda x: x.subs(t=0)) # long time (15s)
654
+ ....: == LS.one_dimensional_configuration_sum(q))
655
+ True
656
+ sage: LS = crystals.ProjectedLevelZeroLSPaths(La[1] + La[2])
657
+ sage: (E[-omega[1] - omega[2]].map_coefficients(lambda x: x.subs(t=0)) # long time (45s)
658
+ ....: == LS.one_dimensional_configuration_sum(q))
659
+ True
660
+
661
+ ::
662
+
663
+ sage: R = RootSystem(['C',2,1])
664
+ sage: KL = R.weight_lattice(extended=True).algebra(K)
665
+ sage: E = NonSymmetricMacdonaldPolynomials(KL, q, t, -1)
666
+ sage: omega = E.keys().fundamental_weights()
667
+ sage: La = R.weight_space().basis()
668
+ sage: for d in range(1,3): # long time (45s)
669
+ ....: for x,y in IntegerVectors(d,2):
670
+ ....: weight = x*La[1]+y*La[2]
671
+ ....: weight0 = -x*omega[1]-y*omega[2]
672
+ ....: LS = crystals.ProjectedLevelZeroLSPaths(weight)
673
+ ....: assert (E[weight0].map_coefficients(lambda x:x.subs(t=0))
674
+ ....: == LS.one_dimensional_configuration_sum(q))
675
+
676
+ ::
677
+
678
+ sage: R = RootSystem(['B',3,1])
679
+ sage: KL = R.weight_lattice(extended=True).algebra(K)
680
+ sage: E = NonSymmetricMacdonaldPolynomials(KL, q, t, -1)
681
+ sage: omega = E.keys().fundamental_weights()
682
+ sage: La = R.weight_space().basis()
683
+
684
+ sage: # needs sage.combinat
685
+ sage: LS = crystals.ProjectedLevelZeroLSPaths(2*La[1])
686
+ sage: (E[-2*omega[1]].map_coefficients(lambda x: x.subs(t=0)) # long time (23s)
687
+ ....: == LS.one_dimensional_configuration_sum(q))
688
+ True
689
+ sage: B = crystals.KirillovReshetikhin(['B',3,1],1,1)
690
+ sage: T = crystals.TensorProduct(B,B)
691
+ sage: (T.one_dimensional_configuration_sum(q) # long time (2s)
692
+ ....: == LS.one_dimensional_configuration_sum(q))
693
+ True
694
+
695
+ ::
696
+
697
+ sage: R = RootSystem(['BC',3,2])
698
+ sage: KL = R.weight_lattice(extended=True).algebra(K)
699
+ sage: E = NonSymmetricMacdonaldPolynomials(KL, q, t, -1)
700
+ sage: omega = E.keys().fundamental_weights()
701
+ sage: La = R.weight_space().basis()
702
+ sage: LS = crystals.ProjectedLevelZeroLSPaths(2*La[1]) # needs sage.combinat
703
+ sage: (E[-2*omega[1]].map_coefficients(lambda x: x.subs(t=0)) # long time (21s), needs sage.combinat
704
+ ....: == LS.one_dimensional_configuration_sum(q))
705
+ True
706
+
707
+ ::
708
+
709
+ sage: R = RootSystem(CartanType(['BC',3,2]).dual())
710
+ sage: KL = R.weight_space(extended=True).algebra(K)
711
+ sage: E = NonSymmetricMacdonaldPolynomials(KL, q, t, -1)
712
+ sage: omega = E.keys().fundamental_weights()
713
+ sage: La = R.weight_space().basis()
714
+
715
+ sage: # long time, needs sage.combinat
716
+ sage: LS = crystals.ProjectedLevelZeroLSPaths(2*La[1])
717
+ sage: g = E[-2*omega[1]].map_coefficients(lambda x: x.subs(t=0)) # 30s
718
+ sage: f = LS.one_dimensional_configuration_sum(q) # 1.5s
719
+ sage: P = g.support()[0].parent()
720
+ sage: B = P.algebra(q.parent())
721
+ sage: sum(p[1]*B(P(p[0])) for p in f) == g
722
+ True
723
+
724
+ ::
725
+
726
+ sage: C = CartanType(['G',2,1])
727
+ sage: R = RootSystem(C.dual())
728
+ sage: K = QQ['q,t'].fraction_field()
729
+ sage: q,t = K.gens()
730
+ sage: KL = R.weight_lattice(extended=True).algebra(K)
731
+ sage: E = NonSymmetricMacdonaldPolynomials(KL, q, t, -1)
732
+ sage: omega = E.keys().fundamental_weights()
733
+ sage: La = R.weight_space().basis()
734
+
735
+ sage: # needs sage.combinat
736
+ sage: LS = crystals.ProjectedLevelZeroLSPaths(2*La[1])
737
+ sage: (E[-2*omega[1]].map_coefficients(lambda x: x.subs(t=0)) # long time (20s), not tested
738
+ ....: == LS.one_dimensional_configuration_sum(q)
739
+ True
740
+ sage: LS = crystals.ProjectedLevelZeroLSPaths(La[1] + La[2])
741
+ sage: (E[-omega[1]-omega[2]].map_coefficients(lambda x: x.subs(t=0)) # long time (23s), not tested
742
+ ....: == LS.one_dimensional_configuration_sum(q))
743
+ True
744
+
745
+ The next test breaks if the energy is not scaled by the
746
+ translation factor for dual type `G_2^{(1)}`::
747
+
748
+ sage: LS = crystals.ProjectedLevelZeroLSPaths(2*La[1]+La[2]) # needs sage.combinat
749
+ sage: (E[-2*omega[1]-omega[2]].map_coefficients(lambda x: x.subs(t=0)) # long time (100s), not tested, needs sage.combinat
750
+ ....: == LS.one_dimensional_configuration_sum(q)
751
+ True
752
+
753
+ sage: R = RootSystem(['D',4,1])
754
+ sage: KL = R.weight_lattice(extended=True).algebra(K)
755
+ sage: E = NonSymmetricMacdonaldPolynomials(KL, q, t, -1)
756
+ sage: omega = E.keys().fundamental_weights()
757
+ sage: La = R.weight_space().basis()
758
+ sage: for d in range(1,2): # long time (41s)
759
+ ....: for a,b,c,d in IntegerVectors(d,4):
760
+ ....: weight = a*La[1] + b*La[2] + c*La[3] + d*La[4]
761
+ ....: weight0 = -a*omega[1] - b*omega[2] - c*omega[3] - d*omega[4]
762
+ ....: LS = crystals.ProjectedLevelZeroLSPaths(weight)
763
+ ....: assert (E[weight0].map_coefficients(lambda x: x.subs(t=0))
764
+ ....: == LS.one_dimensional_configuration_sum(q))
765
+
766
+ TESTS:
767
+
768
+ Calculations checked with Bogdan Ion 2013/04/18::
769
+
770
+ sage: K = QQ['q,t'].fraction_field()
771
+ sage: q,t = K.gens()
772
+ sage: E = NonSymmetricMacdonaldPolynomials(["B",2,1], q=q,q1=t,q2=-1/t)
773
+ sage: L0 = E.keys()
774
+ sage: omega = L0.fundamental_weights()
775
+
776
+ sage: E[omega[1]]
777
+ -((q*t^4-q*t^2)/(-q*t^6+1))*B[(0, 0)] + B[(1, 0)]
778
+ sage: E[omega[2]]
779
+ B[(1/2, 1/2)]
780
+ sage: E[-omega[1]]
781
+ -((q^2*t^8-q^2*t^6+q*t^6-2*q*t^4+q*t^2-t^2+1)/(-q^3*t^8+q^2*t^6+q*t^2-1))*B[(0, 0)]
782
+ + B[(-1, 0)] - ((q*t^8-q*t^6-t^2+1)/(-q^3*t^8+q^2*t^6+q*t^2-1))*B[(1, 0)]
783
+ - ((t^2-1)/(-q*t^2+1))*B[(0, -1)] + ((t^2-1)/(q*t^2-1))*B[(0, 1)]
784
+ sage: E[L0([0,1])]
785
+ -((q*t^4-q*t^2)/(-q*t^4+1))*B[(0, 0)] - ((t^2-1)/(-q*t^4+1))*B[(1, 0)] + B[(0, 1)]
786
+ sage: E[L0([1,1])]
787
+ ((q*t^2-q)/(q*t^2-1))*B[(0, 0)] - ((q*t^2-q)/(-q*t^2+1))*B[(1, 0)]
788
+ + B[(1, 1)] - ((q*t^2-q)/(-q*t^2+1))*B[(0, 1)]
789
+
790
+ sage: E = NonSymmetricMacdonaldPolynomials(["A",2,1], q=q,q1=t,q2=-1/t)
791
+ sage: L0 = E.keys()
792
+ sage: factor(E[L0([-1,0,1])][L0.zero()])
793
+ (t - 1) * (t + 1) * (q*t^2 - 1)^-3 * (q*t^2 + 1)^-1
794
+ * (q^3*t^6 + 2*q^2*t^6 - 3*q^2*t^4 - 2*q*t^2 - t^2 + q + 2)
795
+
796
+ Checking step by step calculations in type `BC` with Bogdan Ion 2013/04/18::
797
+
798
+ sage: K = QQ['q,t'].fraction_field()
799
+ sage: q,t=K.gens()
800
+ sage: E = NonSymmetricMacdonaldPolynomials(["BC",1,2], q=q,q1=t,q2=-1/t)
801
+ sage: KL0 = E.domain()
802
+ sage: L0 = E.keys()
803
+ sage: omega = L0.fundamental_weights()
804
+ sage: e = L0.basis()
805
+ sage: E._T_Y[1] ( KL0.monomial(e[0]) )
806
+ 1/t*B[(-1)]
807
+ sage: E._T_Y[0] ( KL0.monomial(L0.zero()) )
808
+ t*B[(0)]
809
+ sage: E._T_Y[0] ( KL0.monomial(-e[0]))
810
+ -((t^2-1)/(q*t))*B[(0)] + 1/(q^2*t)*B[(1)]
811
+
812
+ sage: Y = E.Y()
813
+ sage: alphacheck = Y.keys().simple_roots()
814
+ sage: Y0 = Y[alphacheck[0]]
815
+ sage: Y1 = Y[alphacheck[1]]
816
+ sage: Y0
817
+ Generic endomorphism of Algebra of the Ambient space of the Root system of type ['C', 1]
818
+ over Fraction Field of Multivariate Polynomial Ring in q, t over Rational Field
819
+ sage: Y0.word, Y0.signs, Y0.scalar
820
+ ((0, 1), (-1, -1), 1/q)
821
+ sage: Y1.word, Y1.signs, Y1.scalar
822
+ ((1, 0), (1, 1), 1)
823
+
824
+ sage: T0_check = E._T[0]
825
+
826
+ Comparing with Bogdan Ion's hand calculations for type `BC`, 2013/05/13:
827
+
828
+ .. TODO:: add his notes in latex
829
+
830
+ ::
831
+
832
+ sage: K = QQ['q,q1,q2'].fraction_field()
833
+ sage: q,q1,q2=K.gens()
834
+ sage: L = RootSystem(["A",4,2]).ambient_space()
835
+ sage: L.cartan_type()
836
+ ['BC', 2, 2]
837
+ sage: L.null_root()
838
+ 2*e['delta']
839
+ sage: L.simple_roots()
840
+ Finite family {0: -e[0] + e['delta'], 1: e[0] - e[1], 2: 2*e[1]}
841
+ sage: KL = L.algebra(K)
842
+ sage: KL0 = KL.classical()
843
+ sage: L0 = L.classical()
844
+ sage: L0.cartan_type()
845
+ ['C', 2]
846
+
847
+ sage: E = NonSymmetricMacdonaldPolynomials(KL, q=q,q1=q1,q2=q2)
848
+ sage: E.keys()
849
+ Ambient space of the Root system of type ['C', 2]
850
+ sage: E.keys().simple_roots()
851
+ Finite family {1: (1, -1), 2: (0, 2)}
852
+ sage: omega = E.keys().fundamental_weights()
853
+
854
+ sage: E[0*omega[1]]
855
+ B[(0, 0)]
856
+ sage: E[omega[1]]
857
+ -((q*q1*q2^3+q*q2^4)/(q^2*q1^4-q2^4))*B[(0, 0)] + B[(1, 0)]
858
+
859
+ sage: E[2*omega[2]] # not checked against Bogdan's notes, but a good self-consistency test # long time
860
+ -((q^12*q1^6+q^12*q1^5*q2-2*q^10*q1^5*q2-5*q^10*q1^4*q2^2-3*q^10*q1^3*q2^3-2*q^8*q1^5*q2-4*q^8*q1^4*q2^2-q^8*q1^3*q2^3+q^8*q1^2*q2^4-q^8*q1*q2^5-q^8*q2^6+q^6*q1^3*q2^3-q^6*q1^2*q2^4-4*q^6*q1*q2^5-2*q^6*q2^6-q^4*q1^3*q2^3-3*q^4*q1^2*q2^4-4*q^4*q1*q2^5-2*q^4*q2^6)/(-q^12*q1^6-q^10*q1^5*q2-q^8*q1^3*q2^3+q^6*q1^4*q2^2-q^6*q1^2*q2^4+q^4*q1^3*q2^3+q^2*q1*q2^5+q2^6))*B[(0, 0)]
861
+ + ((q^7*q1^2*q2+2*q^7*q1*q2^2+q^7*q2^3+q^5*q1^2*q2+2*q^5*q1*q2^2+q^5*q2^3)/(-q^8*q1^3-q^6*q1^2*q2+q^2*q1*q2^2+q2^3))*B[(-1, 0)]
862
+ - ((q^6*q1*q2+q^6*q2^2)/(q^6*q1^2-q2^2))*B[(-1, -1)]
863
+ + ((q^6*q1^2*q2+2*q^6*q1*q2^2+q^6*q2^3+q^4*q1^2*q2+2*q^4*q1*q2^2+q^4*q2^3)/(-q^8*q1^3-q^6*q1^2*q2+q^2*q1*q2^2+q2^3))*B[(-1, 1)]
864
+ - ((q^3*q1*q2+q^3*q2^2)/(q^6*q1^2-q2^2))*B[(-1, 2)]
865
+ + ((q^7*q1^3+q^7*q1^2*q2-q^7*q1*q2^2-q^7*q2^3-2*q^5*q1^2*q2-4*q^5*q1*q2^2-2*q^5*q2^3-2*q^3*q1^2*q2-4*q^3*q1*q2^2-2*q^3*q2^3)/(q^8*q1^3+q^6*q1^2*q2-q^2*q1*q2^2-q2^3))*B[(1, 0)]
866
+ + ((q^6*q1^2*q2+2*q^6*q1*q2^2+q^6*q2^3+q^4*q1^2*q2+2*q^4*q1*q2^2+q^4*q2^3)/(-q^8*q1^3-q^6*q1^2*q2+q^2*q1*q2^2+q2^3))*B[(1, -1)]
867
+ + ((q^8*q1^3+q^8*q1^2*q2+q^6*q1^3+q^6*q1^2*q2-q^6*q1*q2^2-q^6*q2^3-2*q^4*q1^2*q2-4*q^4*q1*q2^2-2*q^4*q2^3-q^2*q1^2*q2-3*q^2*q1*q2^2-2*q^2*q2^3)/(q^8*q1^3+q^6*q1^2*q2-q^2*q1*q2^2-q2^3))*B[(1, 1)]
868
+ + ((q^5*q1^2+q^5*q1*q2-q^3*q1*q2-q^3*q2^2-q*q1*q2-q*q2^2)/(q^6*q1^2-q2^2))*B[(1, 2)]
869
+ - ((q^6*q1^2+q^6*q1*q2-q^4*q1*q2-q^4*q2^2-q^2*q1*q2-q^2*q2^2)/(-q^6*q1^2+q2^2))*B[(2, 0)]
870
+ - ((q^3*q1*q2+q^3*q2^2)/(q^6*q1^2-q2^2))*B[(2, -1)]
871
+ - ((q^5*q1^2+q^5*q1*q2-q^3*q1*q2-q^3*q2^2-q*q1*q2-q*q2^2)/(-q^6*q1^2+q2^2))*B[(2, 1)]
872
+ + B[(2, 2)]
873
+ + ((q^7*q1^2*q2+2*q^7*q1*q2^2+q^7*q2^3+q^5*q1^2*q2+2*q^5*q1*q2^2+q^5*q2^3)/(-q^8*q1^3-q^6*q1^2*q2+q^2*q1*q2^2+q2^3))*B[(0, -1)]
874
+ + ((q^7*q1^3+q^7*q1^2*q2-q^7*q1*q2^2-q^7*q2^3-2*q^5*q1^2*q2-4*q^5*q1*q2^2-2*q^5*q2^3-2*q^3*q1^2*q2-4*q^3*q1*q2^2-2*q^3*q2^3)/(q^8*q1^3+q^6*q1^2*q2-q^2*q1*q2^2-q2^3))*B[(0, 1)]
875
+ + ((q^6*q1^2+q^6*q1*q2-q^4*q1*q2-q^4*q2^2-q^2*q1*q2-q^2*q2^2)/(q^6*q1^2-q2^2))*B[(0, 2)]
876
+ sage: E.recursion(2*omega[2])
877
+ [0, 1, 0, 2, 1, 0, 2, 1, 0]
878
+
879
+ Some tests that the `T` s are implemented properly by hand
880
+ defining the `Y` s in terms of them::
881
+
882
+ sage: T = E._T_Y
883
+ sage: Ye1 = T.Tw((1,2,1,0), scalar=(-1/(q1*q2))^2)
884
+ sage: Ye2 = T.Tw((2,1,0,1), signs=(1,1,1,-1), scalar=(-1/(q1*q2)))
885
+ sage: Yalpha0 = T.Tw((0,1,2,1), signs=(-1,-1,-1,-1), scalar=q^-1*(-q1*q2)^2)
886
+ sage: Yalpha1 = T.Tw((1,2,0,1,2,0), signs=(1,1,-1,1,-1,1), scalar=-1/(q1*q2))
887
+ sage: Yalpha2 = T.Tw((2,1,0,1,2,1,0,1), signs=(1,1,1,-1,1,1,1,-1),
888
+ ....: scalar=(1/(q1*q2))^2)
889
+
890
+ sage: Ye1(KL0.one())
891
+ q1^2/q2^2*B[(0, 0)]
892
+ sage: Ye2(KL0.one())
893
+ -q1/q2*B[(0, 0)]
894
+ sage: Yalpha0(KL0.one())
895
+ q2^2/(q*q1^2)*B[(0, 0)]
896
+ sage: Yalpha1(KL0.one())
897
+ -q1/q2*B[(0, 0)]
898
+ sage: Yalpha2(KL0.one())
899
+ q1^2/q2^2*B[(0, 0)]
900
+
901
+ Testing the `Y` s directly::
902
+
903
+ sage: Y = E.Y()
904
+ sage: Y.keys()
905
+ Coroot lattice of the Root system of type ['BC', 2, 2]
906
+ sage: alpha = Y.keys().simple_roots()
907
+ sage: L(alpha[0])
908
+ -2*e[0] + e['deltacheck']
909
+ sage: L(alpha[1])
910
+ e[0] - e[1]
911
+ sage: L(alpha[2])
912
+ e[1]
913
+ sage: Y[alpha[0]].word
914
+ (0, 1, 2, 1)
915
+ sage: Y[alpha[0]].signs
916
+ (-1, -1, -1, -1)
917
+ sage: Y[alpha[0]].scalar # mind that Sage's q is the usual q^{1/2}
918
+ q1^2*q2^2/q
919
+ sage: Y[alpha[0]](KL0.one())
920
+ q2^2/(q*q1^2)*B[(0, 0)]
921
+
922
+ sage: Y[alpha[1]].word
923
+ (1, 2, 0, 1, 2, 0)
924
+ sage: Y[alpha[1]].signs
925
+ (1, 1, -1, 1, -1, 1)
926
+ sage: Y[alpha[1]].scalar
927
+ 1/(-q1*q2)
928
+
929
+ sage: Y[alpha[2]].word # Bogdan says it should be the square of that; do we need to take translation factors into account or not?
930
+ (2, 1, 0, 1)
931
+ sage: Y[alpha[2]].signs
932
+ (1, 1, 1, -1)
933
+ sage: Y[alpha[2]].scalar
934
+ 1/(-q1*q2)
935
+
936
+ Checking the provided nonsymmetric Macdonald polynomial::
937
+
938
+ sage: E10 = KL0.monomial(L0((1,0))) + KL0( q*(1-(-q1/q2)) / (1-q^2*(-q1/q2)^4) )
939
+ sage: E10 == E[omega[1]]
940
+ True
941
+ sage: E.eigenvalues(E10) # not checked
942
+ [q*q1^2/q2^2, q2^3/(-q^2*q1^3), q1/(-q2)]
943
+
944
+ Checking T0check::
945
+
946
+ sage: T0check_on_basis = KL.T0_check_on_basis(q1,q2, convention='dominant')
947
+ sage: T0check_on_basis.phi # note: this is in fact a0 phi
948
+ (2, 0)
949
+ sage: T0check_on_basis.v # what to match it with?
950
+ (1,)
951
+ sage: T0check_on_basis.j # what to match it with?
952
+ 2
953
+ sage: T0check_on_basis(KL0.basis().keys().zero())
954
+ -q1^2/q2*B[(1, 0)]
955
+
956
+ sage: T0check = E._T[0]
957
+ sage: T0check(KL0.one())
958
+ -q1^2/q2*B[(1, 0)]
959
+
960
+
961
+ Systematic tests of nonsymmetric Macdonald polynomials in type
962
+ `A_1^{(1)}`, in the weight lattice. Each time, we specify the
963
+ eigenvalues for the action of `Y_{\alpha_0}`, and `Y_{\alpha_1}`::
964
+
965
+ sage: K = QQ['q','t'].fraction_field()
966
+ sage: q,t = K.gens()
967
+ sage: KL = RootSystem(["A",1,1]).weight_lattice(extended=True).algebra(K)
968
+ sage: E = NonSymmetricMacdonaldPolynomials(KL,q, t, -1)
969
+ sage: omega = E.keys().fundamental_weights()
970
+
971
+ sage: x = E[0*omega[1]]; x
972
+ B[0]
973
+ sage: E.eigenvalues(x)
974
+ [1/(q*t), t]
975
+ sage: x.is_one()
976
+ True
977
+ sage: x.parent()
978
+ Algebra of the Weight lattice of the Root system of type ['A', 1]
979
+ over Fraction Field of Multivariate Polynomial Ring in q, t over Rational Field
980
+ sage: E[omega[1]]
981
+ B[Lambda[1]]
982
+ sage: E.eigenvalues(_)
983
+ [t, 1/(q*t)]
984
+ sage: E[2*omega[1]]
985
+ -((q*t-q)/(-q*t+1))*B[0] + B[2*Lambda[1]]
986
+ sage: E.eigenvalues(_)
987
+ [q*t, 1/(q^2*t)]
988
+ sage: E[3*omega[1]]
989
+ -((q^2*t-q^2)/(-q^2*t+1))*B[-Lambda[1]]
990
+ - ((q^2*t-q^2+q*t-q)/(-q^2*t+1))*B[Lambda[1]] + B[3*Lambda[1]]
991
+ sage: E.eigenvalues(_)
992
+ [q^2*t, 1/(q^3*t)]
993
+ sage: E[4*omega[1]]
994
+ ((q^5*t^2-q^5*t+q^4*t^2-2*q^4*t+q^3*t^2+q^4-2*q^3*t+q^3-q^2*t+q^2)/(q^5*t^2-q^3*t-q^2*t+1))*B[0]
995
+ - ((q^3*t-q^3)/(-q^3*t+1))*B[-2*Lambda[1]]
996
+ - ((q^3*t-q^3+q^2*t-q^2+q*t-q)/(-q^3*t+1))*B[2*Lambda[1]]
997
+ + B[4*Lambda[1]]
998
+ sage: E.eigenvalues(_)
999
+ [q^3*t, 1/(q^4*t)]
1000
+ sage: E[6*omega[1]]
1001
+ -((q^12*t^3-q^12*t^2+q^11*t^3-2*q^11*t^2+2*q^10*t^3+q^11*t-4*q^10*t^2+2*q^9*t^3+2*q^10*t-5*q^9*t^2+2*q^8*t^3+4*q^9*t-6*q^8*t^2+q^7*t^3-q^9+5*q^8*t-5*q^7*t^2+q^6*t^3-q^8+6*q^7*t-4*q^6*t^2-2*q^7+5*q^6*t-2*q^5*t^2-2*q^6+4*q^5*t-q^4*t^2-2*q^5+2*q^4*t-q^4+q^3*t-q^3)/(-q^12*t^3+q^9*t^2+q^8*t^2+q^7*t^2-q^5*t-q^4*t-q^3*t+1))*B[0]
1002
+ - ((q^5*t-q^5)/(-q^5*t+1))*B[-4*Lambda[1]]
1003
+ + ((q^9*t^2-q^9*t+q^8*t^2-2*q^8*t+q^7*t^2+q^8-2*q^7*t+q^6*t^2+q^7-2*q^6*t+q^5*t^2+q^6-2*q^5*t+q^5-q^4*t+q^4)/(q^9*t^2-q^5*t-q^4*t+1))*B[-2*Lambda[1]]
1004
+ + ((q^9*t^2-q^9*t+q^8*t^2-2*q^8*t+2*q^7*t^2+q^8-3*q^7*t+2*q^6*t^2+q^7-4*q^6*t+2*q^5*t^2+2*q^6-4*q^5*t+q^4*t^2+2*q^5-3*q^4*t+q^3*t^2+2*q^4-2*q^3*t+q^3-q^2*t+q^2)/(q^9*t^2-q^5*t-q^4*t+1))*B[2*Lambda[1]]
1005
+ + ((q^5*t-q^5+q^4*t-q^4+q^3*t-q^3+q^2*t-q^2+q*t-q)/(q^5*t-1))*B[4*Lambda[1]]
1006
+ + B[6*Lambda[1]]
1007
+ sage: E.eigenvalues(_)
1008
+ [q^5*t, 1/(q^6*t)]
1009
+ sage: E[-omega[1]]
1010
+ B[-Lambda[1]] - ((t-1)/(-q*t+1))*B[Lambda[1]]
1011
+ sage: E.eigenvalues(_)
1012
+ [(-1)/(-q^2*t), q*t]
1013
+
1014
+ As expected, `e^{-\omega}` is not an eigenvector::
1015
+
1016
+ sage: E.eigenvalues(KL.classical().monomial(-omega[1]))
1017
+ Traceback (most recent call last):
1018
+ ...
1019
+ AssertionError
1020
+
1021
+ We proceed by comparing against the examples from the appendix of
1022
+ [HHL06]_ in type `A_2^{(1)}`::
1023
+
1024
+ sage: K = QQ['q','t'].fraction_field()
1025
+ sage: q,t = K.gens()
1026
+ sage: KL = RootSystem(["A",2,1]).ambient_space().algebra(K)
1027
+ sage: E = NonSymmetricMacdonaldPolynomials(KL,q, t, -1)
1028
+ sage: L0 = E.keys()
1029
+ sage: omega = L0.fundamental_weights()
1030
+ sage: P = K['x0,x1,x2']
1031
+ sage: def EE(weight): return E[L0(weight)].expand(P.gens())
1032
+
1033
+ sage: EE([0,0,0])
1034
+ 1
1035
+ sage: EE([1,0,0])
1036
+ x0
1037
+ sage: EE([0,1,0])
1038
+ (t - 1)/(q*t^2 - 1)*x0 + x1
1039
+ sage: EE([0,0,1])
1040
+ (t - 1)/(q*t - 1)*x0 + (t - 1)/(q*t - 1)*x1 + x2
1041
+ sage: EE([1,1,0])
1042
+ x0*x1
1043
+ sage: EE([1,0,1])
1044
+ (t - 1)/(q*t^2 - 1)*x0*x1 + x0*x2
1045
+ sage: EE([0,1,1])
1046
+ (t - 1)/(q*t - 1)*x0*x1 + (t - 1)/(q*t - 1)*x0*x2 + x1*x2
1047
+ sage: EE([2,0,0])
1048
+ x0^2 + (q*t - q)/(q*t - 1)*x0*x1 + (q*t - q)/(q*t - 1)*x0*x2
1049
+
1050
+ sage: EE([0,2,0])
1051
+ (t - 1)/(q^2*t^2 - 1)*x0^2
1052
+ + (q^2*t^3 - q^2*t^2 + q*t^2 - 2*q*t + q - t + 1)/(q^3*t^3 - q^2*t^2 - q*t + 1)*x0*x1
1053
+ + x1^2
1054
+ + (q*t^2 - 2*q*t + q)/(q^3*t^3 - q^2*t^2 - q*t + 1)*x0*x2
1055
+ + (q*t - q)/(q*t - 1)*x1*x2
1056
+
1057
+ Systematic checks with Sage's implementation of [HHL06]_::
1058
+
1059
+ sage: import sage.combinat.sf.ns_macdonald as NS # needs sage.combinat
1060
+ sage: assert all(EE([x,y,z]) == NS.E([x,y,z]) for d in range(5) # long time (9s), needs sage.combinat
1061
+ ....: for x,y,z in IntegerVectors(d,3))
1062
+
1063
+ We check that we get eigenvectors for generic `q_1`, `q_2`::
1064
+
1065
+ sage: K = QQ['q,q1,q2'].fraction_field()
1066
+ sage: q,q1,q2 = K.gens()
1067
+ sage: KL = RootSystem(["A",2,1]).ambient_space().algebra(K)
1068
+ sage: E = NonSymmetricMacdonaldPolynomials(KL, q, q1, q2)
1069
+ sage: L0 = E.keys()
1070
+ sage: omega = L0.fundamental_weights()
1071
+ sage: E[2*omega[2]]
1072
+ -((q*q1+q*q2)/(-q*q1-q2))*B[(1, 2, 1)] - ((q*q1+q*q2)/(-q*q1-q2))*B[(2, 1, 1)] + B[(2, 2, 0)]
1073
+ sage: for d in range(4): # long time (9s)
1074
+ ....: for weight in IntegerVectors(d,3).map(list).map(L0):
1075
+ ....: eigenvalues = E.eigenvalues(E[L0(weight)])
1076
+
1077
+ Some type `C` calculations::
1078
+
1079
+ sage: K = QQ['q','t'].fraction_field()
1080
+ sage: q, t = K.gens()
1081
+ sage: KL = RootSystem(["C",2,1]).ambient_space().algebra(K)
1082
+ sage: E = NonSymmetricMacdonaldPolynomials(KL,q, t, -1)
1083
+ sage: L0 = E.keys()
1084
+ sage: omega = L0.fundamental_weights()
1085
+ sage: E[0*omega[1]]
1086
+ B[(0, 0)]
1087
+ sage: E.eigenvalues(_) # checked for i=0 with previous calculation
1088
+ [1/(q*t^3), t, t]
1089
+ sage: E[omega[1]]
1090
+ B[(1, 0)]
1091
+ sage: E.eigenvalues(_) # not checked
1092
+ [t, 1/(q*t^3), t]
1093
+
1094
+ sage: E[-omega[1]] # consistent with before refactoring
1095
+ B[(-1, 0)] - ((t-1)/(-q*t+1))*B[(1, 0)] - ((t-1)/(-q*t+1))*B[(0, -1)]
1096
+ + ((t-1)/(q*t-1))*B[(0, 1)]
1097
+ sage: E.eigenvalues(_) # not checked
1098
+ [(-1)/(-q^2*t^3), q*t, t]
1099
+ sage: E[-omega[1]+omega[2]] # consistent with before refactoring
1100
+ -((t-1)/(-q*t^3+1))*B[(1, 0)] + B[(0, 1)]
1101
+ sage: E.eigenvalues(_) # not checked
1102
+ [t, q*t^3, (-1)/(-q*t^2)]
1103
+ sage: E[omega[1]-omega[2]] # consistent with before refactoring
1104
+ -((t-1)/(-q*t^2+1))*B[(1, 0)] + B[(0, -1)] - ((t-1)/(-q*t^2+1))*B[(0, 1)]
1105
+ sage: E.eigenvalues(_) # not checked
1106
+ [1/(q^2*t^3), 1/(q*t), q*t^2]
1107
+
1108
+ sage: E[-omega[2]]
1109
+ -((q^2*t^4-q^2*t^3+q*t^3-2*q*t^2+q*t-t+1)/(-q^3*t^4+q^2*t^3+q*t-1))*B[(0, 0)]
1110
+ + B[(-1, -1)] - ((t-1)/(-q*t+1))*B[(-1, 1)] + ((t-1)/(q*t-1))*B[(1, -1)]
1111
+ - ((q*t^4-q*t^3-t+1)/(-q^3*t^4+q^2*t^3+q*t-1))*B[(1, 1)]
1112
+ sage: E.eigenvalues(_) # not checked # long time (1s)
1113
+ [1/(q^3*t^3), t, q*t]
1114
+ sage: E[-omega[2]].map_coefficients(lambda c: c.subs(t=0)) # checking against crystals
1115
+ B[(0, 0)] + B[(-1, -1)] + B[(-1, 1)] + B[(1, -1)] + B[(1, 1)]
1116
+
1117
+ sage: E[2*omega[2]]
1118
+ -((q^6*t^7-q^6*t^6+q^5*t^6-2*q^5*t^5+q^4*t^5+q^5*t^3-3*q^4*t^4+3*q^4*t^3-q^3*t^4-q^4*t^2+2*q^3*t^2-q^3*t+q^2*t-q^2)/(-q^6*t^7+q^5*t^6+q^4*t^4+q^3*t^4-q^3*t^3-q^2*t^3-q*t+1))*B[(0, 0)]
1119
+ - ((q^3*t^2-q^3*t)/(-q^3*t^3+1))*B[(-1, -1)]
1120
+ - ((q^3*t^3-2*q^3*t^2+q^3*t)/(-q^4*t^4+q^3*t^3+q*t-1))*B[(-1, 1)]
1121
+ - ((q^3*t^3-2*q^3*t^2+q^3*t)/(-q^4*t^4+q^3*t^3+q*t-1))*B[(1, -1)]
1122
+ - ((q^4*t^4-q^4*t^3+q^3*t^3-2*q^3*t^2+q^2*t^3+q^3*t-2*q^2*t^2+q^2*t-q*t+q)/(-q^4*t^4+q^3*t^3+q*t-1))*B[(1, 1)]
1123
+ + ((q*t-q)/(q*t-1))*B[(2, 0)] + B[(2, 2)] - ((q*t-q)/(-q*t+1))*B[(0, 2)]
1124
+ sage: E.eigenvalues(_) # not checked
1125
+ [q^3*t^3, t, (-1)/(-q^2*t^2)]
1126
+
1127
+ The following computations were calculated by hand::
1128
+
1129
+ sage: KL0 = KL.classical()
1130
+ sage: E11 = KL0.sum_of_terms([[L0([1,1]), 1], [L0([0,0]), (-q*t^2 + q*t)/(1-q*t^3)]])
1131
+ sage: E11 == E[omega[2]]
1132
+ True
1133
+ sage: E.eigenvalues(E11)
1134
+ [q*t^3, t, (-1)/(-q*t^2)]
1135
+
1136
+ sage: E1m1 = KL0.sum_of_terms([[L0([1,-1]), 1], [L0([1,1]), (1-t)/(1-q*t^2)],
1137
+ ....: [L0([0,0]), q*t*(1-t)/(1-q*t^2)]])
1138
+ sage: E1m1 == E[2*omega[1]-omega[2]]
1139
+ True
1140
+ sage: E.eigenvalues(E1m1)
1141
+ [1/(q*t), 1/(q^2*t^3), q*t^2]
1142
+
1143
+ Now we present an example for a twisted affine root system. The
1144
+ results are eigenvectors::
1145
+
1146
+ sage: K = QQ['q','t'].fraction_field()
1147
+ sage: q, t = K.gens()
1148
+ sage: KL = RootSystem("C2~*").ambient_space().algebra(K)
1149
+ sage: E = NonSymmetricMacdonaldPolynomials(KL,q, t, -1)
1150
+ sage: omega = E.keys().fundamental_weights()
1151
+ sage: E[0*omega[1]]
1152
+ B[(0, 0)]
1153
+ sage: E.eigenvalues(_)
1154
+ [1/(q*t^2), t, t]
1155
+ sage: E[omega[1]]
1156
+ -((q*t-q)/(-q*t^2+1))*B[(0, 0)] + B[(1, 0)]
1157
+ sage: E.eigenvalues(_)
1158
+ [q*t^2, 1/(q^2*t^3), t]
1159
+
1160
+ sage: E[-omega[1]]
1161
+ -((q*t-q+t-1)/(-q^2*t+1))*B[(0, 0)] + B[(-1, 0)] - ((t-1)/(-q^2*t+1))*B[(1, 0)]
1162
+ - ((t-1)/(-q^2*t+1))*B[(0, -1)] + ((t-1)/(q^2*t-1))*B[(0, 1)]
1163
+ sage: E.eigenvalues(_)
1164
+ [(-1)/(-q^3*t^2), q^2*t, t]
1165
+ sage: E[-omega[1]+omega[2]]
1166
+ B[(-1/2, 1/2)] - ((t-1)/(-q^2*t^3+1))*B[(1/2, -1/2)]
1167
+ - ((q*t^3-q*t^2+t-1)/(-q^2*t^3+1))*B[(1/2, 1/2)]
1168
+ sage: E.eigenvalues(_)
1169
+ [(-1)/(-q^2*t^2), q^2*t^3, (-1)/(-q*t)]
1170
+ sage: E[omega[1]-omega[2]]
1171
+ B[(1/2, -1/2)] - ((t-1)/(-q*t^2+1))*B[(1/2, 1/2)]
1172
+ sage: E.eigenvalues(_)
1173
+ [t, 1/(q^2*t^3), q*t^2]
1174
+
1175
+ Type BC, comparison with calculations with Maple by Bogdan Ion::
1176
+
1177
+ sage: K = QQ['q','t'].fraction_field()
1178
+ sage: q,t = K.gens()
1179
+ sage: def to_SR(x):
1180
+ ....: dim = x.parent().basis().keys().dimension()
1181
+ ....: x_expanded = x.expand([SR.var('x%s'%i) for i in range(1, dim + 1)])
1182
+ ....: return x_expanded.subs(q=SR.var('q'), t=SR.var('t'))
1183
+ sage: var('x1,x2,x3') # needs sage.symbolic
1184
+ (x1, x2, x3)
1185
+
1186
+ sage: E = NonSymmetricMacdonaldPolynomials(["BC",2,2], q=q, q1=t^2, q2=-1)
1187
+ sage: omega = E.keys().fundamental_weights()
1188
+ sage: expected = (t-1)*(t+1)*(2+q^4+2*q^2-2*t^2-2*q^2*t^2-t^4*q^2-q^4*t^4+t^4-3*q^6*t^6-2*q^4*t^6+2*q^6*t^8+2*q^4*t^8+t^10*q^8)*q^4/((q^2*t^3-1)*(q^2*t^3+1)*(t*q-1)*(t*q+1)*(t^2*q^3+1)*(t^2*q^3-1))+(t-1)^2*(t+1)^2*(2*q^2+q^4+2+q^4*t^2)*q^3*x1/((t^2*q^3+1)*(t^2*q^3-1)*(t*q-1)*(t*q+1))+(t-1)^2*(t+1)^2*(q^2+1)*q^5/((t^2*q^3+1)*(t^2*q^3-1)*(t*q-1)*(t*q+1)*x1)+(t-1)^2*(t+1)^2*(q^2+1)*q^4*x2/((t^2*q^3+1)*(t^2*q^3-1)*(t*q-1)*(t*q+1)*x1)+(t-1)^2*(t+1)^2*(2*q^2+q^4+2+q^4*t^2)*q^3*x2/((t^2*q^3+1)*(t^2*q^3-1)*(t*q-1)*(t*q+1))+(t-1)^2*(t+1)^2*(q^2+1)*q^5/((t^2*q^3+1)*(t^2*q^3-1)*(t*q-1)*(t*q+1)*x2)+x1^2*x2^2+(t-1)*(t+1)*(-2*q^2-q^4-2+2*q^2*t^2+t^2+q^6*t^4+q^4*t^4)*q^2*x2*x1/((t^2*q^3+1)*(t^2*q^3-1)*(t*q-1)*(t*q+1))+(t-1)*(t+1)*(q^2+1+q^4*t^2)*q*x2^2*x1/((t^2*q^3-1)*(t^2*q^3+1))+(t-1)*(t+1)*q^3*x1^2/((t^2*q^3-1)*(t^2*q^3+1)*x2)+(t-1)*(t+1)*(q^2+1+q^4*t^2)*q*x2*x1^2/((t^2*q^3-1)*(t^2*q^3+1))+(t-1)*(t+1)*q^6/((t^2*q^3+1)*(t^2*q^3-1)*x1*x2)+(t-1)*(t+1)*(q^2+1+q^4*t^2)*q^2*x1^2/((t^2*q^3-1)*(t^2*q^3+1))+(t-1)*(t+1)*(q^2+1+q^4*t^2)*q^2*x2^2/((t^2*q^3-1)*(t^2*q^3+1))+(t-1)*(t+1)*q^3*x2^2/((t^2*q^3-1)*(t^2*q^3+1)*x1)+(t-1)^2*(t+1)^2*(q^2+1)*q^4*x1/((t^2*q^3+1)*(t^2*q^3-1)*(t*q-1)*(t*q+1)*x2) # needs sage.symbolic
1189
+ sage: to_SR(E[2*omega[2]]) - expected # long time (3.5s) # needs sage.symbolic
1190
+ 0
1191
+
1192
+ sage: E = NonSymmetricMacdonaldPolynomials(["BC",3,2], q=q, q1=t^2, q2=-1)
1193
+ sage: omega=E.keys().fundamental_weights()
1194
+ sage: mu = -3*omega[1] + 3*omega[2] - omega[3]; mu
1195
+ (-1, 2, -1)
1196
+ sage: expected = (t-1)^2*(t+1)^2*(3*q^2+q^4+1+t^2*q^4+q^2*t^2-3*t^4*q^2-5*t^6*q^4+2*t^8*q^4-4*t^8*q^6-q^8*t^10+2*t^10*q^6-2*q^8*t^12+t^14*q^8-t^14*q^10+q^10*t^16+q^8*t^16+q^10*t^18+t^18*q^12)*x2*x1/((q^3*t^5+1)*(q^3*t^5-1)*(t*q-1)*(t*q+1)*(t^3*q^2+1)*(t^3*q^2-1)*(t^2*q-1)*(t^2*q+1))+(t-1)^2*(t+1)^2*(q^2*t^6+2*t^6*q^4-q^4*t^4+t^4*q^2-q^2*t^2+t^2-2-q^2)*q^2*x1/((t^3*q^2-1)*(t^3*q^2+1)*(t*q+1)*(t*q-1)*(q^3*t^5-1)*(q^3*t^5+1)*x2)+(t-1)^2*(t+1)^2*(-q^2-1+t^4*q^2-q^4*t^4+2*t^6*q^4)*x1^2/((t^3*q^2-1)*(t^3*q^2+1)*(t*q+1)*(t*q-1)*(q^3*t^5-1)*(q^3*t^5+1))+(t+1)*(t-1)*x2^2*x3/((t*q-1)*(t*q+1)*x1)+(t-1)^2*(t+1)^2*(3*q^2+q^4+2+t^2*q^4+2*q^2*t^2-4*t^4*q^2+q^4*t^4-6*t^6*q^4+t^8*q^4-4*t^8*q^6-q^8*t^10+t^10*q^6-3*q^8*t^12-2*t^14*q^10+2*t^14*q^8+2*q^10*t^16+q^8*t^16+t^18*q^12+2*q^10*t^18)*q*x2/((q^3*t^5+1)*(q^3*t^5-1)*(t*q-1)*(t*q+1)*(t^3*q^2+1)*(t^3*q^2-1)*(t^2*q-1)*(t^2*q+1))+(t-1)^2*(t+1)^2*(1+q^4+2*q^2+t^2*q^4-3*t^4*q^2+q^2*t^6-5*t^6*q^4+3*t^8*q^4-4*t^8*q^6+2*t^10*q^6-q^8*t^12-t^14*q^10+t^14*q^8+q^10*t^16+t^18*q^12)*x3*x1/((q^3*t^5+1)*(q^3*t^5-1)*(t*q-1)*(t*q+1)*(t^3*q^2+1)*(t^3*q^2-1)*(t^2*q-1)*(t^2*q+1))+(t-1)^2*(t+1)^2*(2*q^2+1+q^4+t^2*q^4-t^2+q^2*t^2-4*t^4*q^2+q^4*t^4+q^2*t^6-5*t^6*q^4+3*t^8*q^4-4*t^8*q^6+2*t^10*q^6+q^6*t^12-2*q^8*t^12-2*t^14*q^10+2*t^14*q^8+q^10*t^16+t^18*q^12)*q*x3/((q^3*t^5+1)*(q^3*t^5-1)*(t*q-1)*(t*q+1)*(t^3*q^2+1)*(t^3*q^2-1)*(t^2*q-1)*(t^2*q+1))+(t-1)^2*(t+1)^2*(1+t^2+t^4*q^2)*q*x3*x2^2/((t*q-1)*(t*q+1)*(t^3*q^2+1)*(t^3*q^2-1))+(t-1)^2*(t+1)^2*(-q^2-2-q^2*t^2+t^4-q^4*t^4-t^4*q^2+3*q^2*t^6-t^6*q^4-t^8*q^6+t^8*q^4+t^10*q^4+2*q^6*t^12-q^8*t^12+t^14*q^8)*q*x3*x2*x1/((t^3*q^2-1)*(t^3*q^2+1)*(t*q+1)*(t*q-1)*(q^3*t^5-1)*(q^3*t^5+1))+(t-1)*(t+1)*x1^2/((q^3*t^5-1)*(q^3*t^5+1)*x3*x2)+(t-1)*(t+1)*(-q^2-1+t^4*q^2-q^4*t^4+2*t^6*q^4)*x2^2/((t*q-1)*(t*q+1)*(t^3*q^2+1)*(t^3*q^2-1))+(t-1)*(t+1)*(t^3*q-1)*(t^3*q+1)*x3*x2^2*x1/((t*q-1)*(t*q+1)*(t^3*q^2+1)*(t^3*q^2-1))+(t-1)^2*(t+1)^2*(q^2+1)*q*x1/((t*q+1)*(t*q-1)*(q^3*t^5+1)*(q^3*t^5-1)*x3*x2)+(t-1)^2*(t+1)^2*(t^3*q-1)*(t^3*q+1)*x3*x2*x1^2/((t^3*q^2-1)*(t^3*q^2+1)*(t*q+1)*(t*q-1)*(q^3*t^5-1)*(q^3*t^5+1))+(t-1)^2*(t+1)^2*q^3*x3/((t*q+1)*(t*q-1)*(q^3*t^5-1)*(q^3*t^5+1)*x1*x2)+(t-1)*(t+1)*(-1-q^2+q^2*t^2+t^10*q^6)*q*x2/((t*q+1)*(t*q-1)*(q^3*t^5+1)*(q^3*t^5-1)*x3*x1)+x2^2/(x1*x3)+(t-1)*(t+1)*q*x2^2/((t*q-1)*(t*q+1)*x3)+(t-1)^3*(t+1)^3*(1+t^2+t^4*q^2)*q*x2*x1^2/((t^3*q^2-1)*(t^3*q^2+1)*(t*q+1)*(t*q-1)*(q^3*t^5-1)*(q^3*t^5+1))+(t-1)^2*(t+1)^2*q*x1^2/((t*q+1)*(t*q-1)*(q^3*t^5-1)*(q^3*t^5+1)*x3)+(t-1)^2*(t+1)^2*(q^2*t^6+2*t^6*q^4-q^4*t^4+t^4*q^2-q^2*t^2+t^2-2-q^2)*q^3/((t^3*q^2-1)*(t^3*q^2+1)*(t*q+1)*(t*q-1)*(q^3*t^5-1)*(q^3*t^5+1)*x2)+(t-1)*(t+1)*(q^2+2-t^2+q^4*t^4-t^4*q^2-3*t^6*q^4+t^8*q^4-2*t^10*q^6-q^8*t^12+q^6*t^12+q^8*t^16+q^10*t^16)*q^2*x2/((t^3*q^2-1)*(t^3*q^2+1)*(t*q+1)*(t*q-1)*(q^3*t^5-1)*(q^3*t^5+1)*x1)+(t-1)^2*(t+1)^2*(q^2+1)*q^2/((t*q+1)*(t*q-1)*(q^3*t^5-1)*(q^3*t^5+1)*x3*x2)+(t-1)*(t+1)*(1+q^4+2*q^2-2*q^2*t^2+t^4*q^6-q^4*t^4-3*q^6*t^6-t^6*q^4+2*t^8*q^6-t^10*q^6-q^8*t^10-t^14*q^10+t^14*q^8+2*q^10*t^16)*x2/((t^3*q^2-1)*(t^3*q^2+1)*(t*q+1)*(t*q-1)*(q^3*t^5-1)*(q^3*t^5+1)*x3)+(t-1)^2*(t+1)^2*(-q^2-2-q^2*t^2-q^4*t^4+2*t^6*q^4+t^10*q^6+q^8*t^12+t^14*q^8)*q^3/((t^3*q^2-1)*(t^3*q^2+1)*(t*q+1)*(t*q-1)*(q^3*t^5-1)*(q^3*t^5+1)*x1)+(t-1)^2*(t+1)^2*(-1-q^2-q^2*t^2+t^2+t^4*q^2-q^4*t^4+2*t^6*q^4)*q^2*x3/((t^3*q^2-1)*(t^3*q^2+1)*(t*q+1)*(t*q-1)*(q^3*t^5-1)*(q^3*t^5+1)*x2)+(t-1)*(t+1)*q*x2^2/((t*q-1)*(t*q+1)*x1)+(t-1)^2*(t+1)^2*(1+t^2+t^4*q^2)*q*x2^2*x1/((t*q-1)*(t*q+1)*(t^3*q^2+1)*(t^3*q^2-1))+(t-1)^2*(t+1)^2*q*x1^2/((t*q+1)*(t*q-1)*(q^3*t^5-1)*(q^3*t^5+1)*x2)+(t-1)^2*(t+1)^2*(-1-q^4-2*q^2-t^2*q^4-q^2*t^2+t^4*q^2-t^4*q^6-2*q^4*t^4+3*t^6*q^4-q^6*t^6-t^8*q^8+t^8*q^6+2*t^10*q^6-q^10*t^12+3*q^8*t^12+2*t^14*q^10)*x3*x2/((t^3*q^2-1)*(t^3*q^2+1)*(t*q+1)*(t*q-1)*(q^3*t^5-1)*(q^3*t^5+1))+(t-1)*(t+1)*(q^2+1-t^2+q^4*t^4-t^4*q^2+q^2*t^6-3*t^6*q^4+t^8*q^4-t^10*q^6+q^6*t^12-q^8*t^12+q^10*t^16)*q^2*x3/((t^3*q^2-1)*(t^3*q^2+1)*(t*q+1)*(t*q-1)*(q^3*t^5-1)*(q^3*t^5+1)*x1)+(t-1)*(t+1)*(-1-q^2+q^2*t^2+t^10*q^6)*q^2/((t*q-1)*(t*q+1)*(q^3*t^5+1)*(q^3*t^5-1)*x1*x3)+(t-1)*(t+1)*(1+q^4+2*q^2-3*q^2*t^2+t^4*q^6-q^4*t^4-3*q^6*t^6-t^6*q^4+t^8*q^4+2*t^8*q^6-t^10*q^6+t^14*q^8-t^14*q^10+q^10*t^16)*x1/((t^3*q^2-1)*(t^3*q^2+1)*(t*q+1)*(t*q-1)*(q^3*t^5-1)*(q^3*t^5+1)*x3)+(t-1)^2*(t+1)^2*(3*q^2+q^4+2+q^2*t^2-t^2+t^2*q^4-6*t^4*q^2+q^4*t^4-7*t^6*q^4+q^2*t^6+3*t^8*q^4-4*t^8*q^6+t^10*q^4+3*t^10*q^6-q^8*t^12-t^14*q^10+t^14*q^8+q^8*t^16+q^10*t^18)*q*x1/((q^3*t^5+1)*(q^3*t^5-1)*(t*q-1)*(t*q+1)*(t^3*q^2+1)*(t^3*q^2-1)*(t^2*q-1)*(t^2*q+1))+(t-1)^2*(t+1)^2*(-q^2-2-q^2*t^2-q^4*t^4+2*t^6*q^4+t^10*q^6+q^6*t^12+t^14*q^8)*q*x2*x1/((t^3*q^2-1)*(t^3*q^2+1)*(t*q+1)*(t*q-1)*(q^3*t^5-1)*(q^3*t^5+1)*x3)+(t+1)*(t-1)*x2^2*x1/((t*q-1)*(t*q+1)*x3)+(t-1)^3*(t+1)^3*(1+t^2+t^4*q^2)*q*x3*x1^2/((t^3*q^2-1)*(t^3*q^2+1)*(t*q+1)*(t*q-1)*(q^3*t^5-1)*(q^3*t^5+1))+(t-1)*(t+1)*q^3/((q^3*t^5+1)*(q^3*t^5-1)*x1*x2*x3)+(t-1)^2*(t+1)^2*(3+3*q^2+q^4+2*q^2*t^2-t^2+t^2*q^4-6*t^4*q^2+q^4*t^4-8*t^6*q^4+q^2*t^6+2*t^8*q^4-4*t^8*q^6+t^10*q^4+2*t^10*q^6-2*q^8*t^12-t^14*q^10+t^14*q^8+q^8*t^16+q^10*t^16+2*q^10*t^18)*q^2/((q^3*t^5+1)*(q^3*t^5-1)*(t*q-1)*(t*q+1)*(t^3*q^2+1)*(t^3*q^2-1)*(t^2*q-1)*(t^2*q+1))+(t-1)^2*(t+1)^2*(-q^4-2*q^2-1-t^2*q^4-t^4*q^6+2*q^6*t^6+t^6*q^4+t^10*q^6+q^8*t^12+t^14*q^10)*q/((t^3*q^2-1)*(t^3*q^2+1)*(t*q+1)*(t*q-1)*(q^3*t^5-1)*(q^3*t^5+1)*x3)+(t-1)^2*(t+1)^2*(-1-q^2-q^2*t^2+t^2+t^4*q^2-q^4*t^4+2*t^6*q^4)*q*x3*x1/((t^3*q^2-1)*(t^3*q^2+1)*(t*q+1)*(t*q-1)*(q^3*t^5-1)*(q^3*t^5+1)*x2)+(t-1)^2*(t+1)^2*x2*x1^2/((t*q+1)*(t*q-1)*(q^3*t^5-1)*(q^3*t^5+1)*x3)+(t-1)^2*(t+1)^2*x3*x1^2/((t*q+1)*(t*q-1)*(q^3*t^5-1)*(q^3*t^5+1)*x2)+(t-1)^2*(t+1)^2*q^4/((t*q+1)*(t*q-1)*(q^3*t^5+1)*(q^3*t^5-1)*x1*x2)+(t-1)^2*(t+1)^2*(-q^2-1-q^2*t^2-q^4*t^4+t^6*q^4+t^10*q^6+q^8*t^12+t^14*q^10)*q*x3*x2/((t^3*q^2-1)*(t^3*q^2+1)*(t*q+1)*(t*q-1)*(q^3*t^5-1)*(q^3*t^5+1)*x1) # needs sage.symbolic
1197
+ sage: to_SR(E[mu]) - expected # long time (20s) # needs sage.symbolic
1198
+ 0
1199
+
1200
+ sage: E = NonSymmetricMacdonaldPolynomials(["BC",1,2], q=q, q1=t^2, q2=-1)
1201
+ sage: omega = E.keys().fundamental_weights()
1202
+ sage: mu = -4*omega[1]; mu
1203
+ (-4)
1204
+ sage: expected = (t-1)*(t+1)*(-1+q^2*t^2-q^2-3*q^10-7*q^26*t^8+5*t^2*q^6-q^16-3*q^4+4*t^10*q^30-4*t^6*q^22-10*q^20*t^6+2*q^32*t^10-3*q^6-4*q^8+q^34*t^10-4*t^8*q^24-2*q^12-q^14+2*q^22*t^10+4*q^26*t^10+4*q^28*t^10+t^6*q^30-2*q^32*t^8-2*t^8*q^22+2*q^24*t^10-q^20*t^2-2*t^6*q^12+t^8*q^14+2*t^4*q^24-4*t^8*q^30+2*t^8*q^20-9*t^6*q^16+3*q^26*t^6+q^28*t^6+3*t^2*q^4+2*q^18*t^8-6*t^6*q^14+4*t^4*q^22-2*q^24*t^6+3*t^2*q^12+7*t^4*q^20-t^2*q^16+11*q^18*t^4-2*t^2*q^18+9*q^16*t^4-t^4*q^6+6*q^8*t^2+5*q^10*t^2-6*q^28*t^8+q^12*t^4+8*t^4*q^14-10*t^6*q^18-q^4*t^4+q^16*t^8-2*t^4*q^8)/((t*q^4-1)*(t*q^4+1)*(q^7*t^2-1)*(q^7*t^2+1)*(t*q^3-1)*(t*q^3+1)*(q^5*t^2+1)*(q^5*t^2-1))+(q^2+1)*(q^4+1)*(t-1)*(t+1)*(-1+q^2*t^2-q^2+t^2*q^6-q^4+t^6*q^22+3*q^10*t^4+t^2-q^8-2*t^8*q^24+q^22*t^10+q^26*t^10-2*t^8*q^22+q^24*t^10-4*t^6*q^12-2*t^8*q^20-3*t^6*q^16+2*t^2*q^4-t^6*q^10-2*t^6*q^14+t^8*q^12-t^2*q^12+2*q^16*t^4+q^8*t^2-q^10*t^2+3*q^12*t^4+2*t^4*q^14+t^6*q^18-2*q^4*t^4+q^16*t^8+q^20*t^10)*q*x1/((t*q^4-1)*(t*q^4+1)*(q^7*t^2-1)*(q^7*t^2+1)*(t*q^3-1)*(t*q^3+1)*(q^5*t^2+1)*(q^5*t^2-1))+(q^2+1)*(q^4+1)*(t-1)*(t+1)*(1+q^8+q^4+q^2-q^8*t^2-2*t^2*q^4-t^2*q^6+t^2*q^12-t^2+t^4*q^6-2*q^16*t^4-t^4*q^14-2*q^12*t^4+t^6*q^12+t^6*q^16+t^6*q^18+t^6*q^14)*q/((t*q^4-1)*(t*q^4+1)*(q^7*t^2-1)*(q^7*t^2+1)*(t*q^3-1)*(t*q^3+1)*x1)+(t-1)*(t+1)*(-1-q^2-q^6-q^4-q^8+t^2*q^4-t^2*q^14+t^2*q^6-q^10*t^2+q^8*t^2-t^2*q^12+q^12*t^4+q^10*t^4+q^16*t^4+2*t^4*q^14)*(q^4+1)/((q^7*t^2+1)*(q^7*t^2-1)*(t*q^4-1)*(t*q^4+1)*x1^2)+(t-1)*(t+1)*(q^4+1)*(q^2+1)*q/((t*q^4-1)*(t*q^4+1)*x1^3)+(q^4+1)*(t-1)*(t+1)*(1+q^6+q^8+q^2+q^4-q^2*t^2-3*t^2*q^4+q^10*t^2+t^2*q^12-2*t^2*q^6-q^8*t^2-2*q^16*t^4+q^4*t^4+t^4*q^6-q^10*t^4-2*q^12*t^4-2*t^4*q^14+t^6*q^12+t^6*q^18+2*t^6*q^16+t^6*q^14)*x1^2/((t*q^4-1)*(t*q^4+1)*(q^7*t^2-1)*(q^7*t^2+1)*(t*q^3-1)*(t*q^3+1))+(t-1)*(t+1)*(-1-t^2*q^6+t^2+t^4*q^8)*(q^4+1)*(q^2+1)*q*x1^3/((q^7*t^2+1)*(q^7*t^2-1)*(t*q^4-1)*(t*q^4+1))+1/x1^4+(t-1)*(t+1)*x1^4/((t*q^4-1)*(t*q^4+1)) # needs sage.symbolic
1205
+ sage: to_SR(E[mu]) - expected # needs sage.symbolic
1206
+ 0
1207
+
1208
+ Type `BC` dual, comparison with hand calculations by Bogdan Ion::
1209
+
1210
+ sage: K = QQ['q,q1,q2'].fraction_field()
1211
+ sage: q,q1,q2 = K.gens()
1212
+ sage: ct = CartanType(["BC",2,2]).dual()
1213
+ sage: E = NonSymmetricMacdonaldPolynomials(ct, q=q, q1=q1, q2=q2)
1214
+ sage: KL = E.domain(); KL
1215
+ Algebra of the Ambient space of the Root system of type ['B', 2]
1216
+ over Fraction Field of Multivariate Polynomial Ring in q, q1, q2 over Rational Field
1217
+ sage: alpha = E.keys().simple_roots(); alpha
1218
+ Finite family {1: (1, -1), 2: (0, 1)}
1219
+ sage: omega=E.keys().fundamental_weights(); omega
1220
+ Finite family {1: (1, 0), 2: (1/2, 1/2)}
1221
+ sage: epsilon = E.keys().basis(); epsilon
1222
+ Finite family {0: (1, 0), 1: (0, 1)}
1223
+
1224
+ Note: Sage's `q` is the usual `q^2`::
1225
+
1226
+ sage: E.L().null_root()
1227
+ e['delta']
1228
+ sage: E.L().null_coroot()
1229
+ 2*e['deltacheck']
1230
+
1231
+ Some eigenvectors::
1232
+
1233
+ sage: E[0*omega[1]]
1234
+ B[(0, 0)]
1235
+ sage: E[omega[1]]
1236
+ -((q^2*q1^3*q2+q^2*q1^2*q2^2)/(q^2*q1^4-q2^4))*B[(0, 0)] + B[(1, 0)]
1237
+ sage: Eomega1 = (KL.one() * (q^2*(-q1/q2)^2*(1-(-q1/q2))) / (1-q^2*(-q1/q2)^4)
1238
+ ....: + KL.monomial(omega[1]))
1239
+ sage: E[omega[1]] == Eomega1
1240
+ True
1241
+
1242
+ Checking the `Y` s::
1243
+
1244
+ sage: Y = E.Y()
1245
+ sage: alphacheck = Y.keys().simple_roots()
1246
+ sage: Y0 = Y[alphacheck[0]]
1247
+ sage: Y1 = Y[alphacheck[1]]
1248
+ sage: Y2 = Y[alphacheck[2]]
1249
+
1250
+ sage: Y0.word, Y0.signs, Y0.scalar
1251
+ ((0, 1, 2, 1, 0, 1, 2, 1), (-1, -1, -1, -1, -1, -1, -1, -1), q1^4*q2^4/q^2)
1252
+ sage: Y1.word, Y1.signs, Y1.scalar
1253
+ ((1, 2, 0, 1, 2, 0), (1, 1, -1, 1, -1, 1), 1/(-q1*q2))
1254
+ sage: Y2.word, Y2.signs, Y2.scalar
1255
+ ((2, 1, 0, 1), (1, 1, 1, -1), 1/(-q1*q2))
1256
+
1257
+ sage: E.eigenvalues(0*omega[1])
1258
+ [q2^4/(q^2*q1^4), q1/(-q2), q1/(-q2)]
1259
+
1260
+ Checking the `T` and `T^{-1}` s::
1261
+
1262
+ sage: T = E._T_Y
1263
+ sage: Tinv0 = T.Tw_inverse([0])
1264
+ sage: Tinv1 = T.Tw_inverse([1])
1265
+ sage: Tinv2 = T.Tw_inverse([2])
1266
+
1267
+ sage: for x in [0*epsilon[0], -epsilon[0], -epsilon[1], epsilon[0], epsilon[1]]:
1268
+ ....: x = KL.monomial(x)
1269
+ ....: assert Tinv0(T[0](x)) == x and T[0](Tinv0(x)) == x
1270
+ ....: assert Tinv1(T[1](x)) == x and T[1](Tinv1(x)) == x
1271
+ ....: assert Tinv2(T[2](x)) == x and T[2](Tinv2(x)) == x
1272
+
1273
+ sage: start = E[omega[1]]; start
1274
+ -((q^2*q1^3*q2+q^2*q1^2*q2^2)/(q^2*q1^4-q2^4))*B[(0, 0)] + B[(1, 0)]
1275
+ sage: Tinv1(Tinv2(Tinv1(Tinv0(Tinv1(Tinv2(Tinv1(Tinv0(start)))))))) * (q1*q2)^4/q^2 == Y0(start)
1276
+ True
1277
+ sage: Y0(start) == q^2*q1^4/q2^4 * start
1278
+ True
1279
+
1280
+ Checking the relation between the `Y` s::
1281
+
1282
+ sage: q^2 * Y0(Y1(Y1(Y2(Y2(start))))) == start
1283
+ True
1284
+ sage: for x in [0*epsilon[0], -epsilon[0], -epsilon[1], epsilon[0], epsilon[1]]:
1285
+ ....: x = KL.monomial(x)
1286
+ ....: assert q^2 * Y0(Y1(Y1(Y2(Y2(start))))) == start
1287
+ """
1288
+
1289
+ @staticmethod
1290
+ def __classcall__(cls, KL, q='q', q1='q1', q2='q2', normalized=True):
1291
+ r"""
1292
+ EXAMPLES::
1293
+
1294
+ sage: NonSymmetricMacdonaldPolynomials(["B", 2, 1])
1295
+ The family of the Macdonald polynomials of type ['B', 2, 1] with parameters q, q1, q2
1296
+ """
1297
+ from sage.combinat.root_system.cartan_type import CartanType
1298
+ K = None
1299
+ #if KL in Algebras:
1300
+ if isinstance(KL, CombinatorialFreeModule): # temporary work around C3 issue ...
1301
+ K = KL.base_ring()
1302
+ else:
1303
+ if q == 'q':
1304
+ from sage.rings.rational_field import QQ
1305
+ K = QQ['q','q1','q2'].fraction_field()
1306
+ else:
1307
+ K = q.parent()
1308
+ KL = CartanType(KL).root_system().ambient_space().algebra(K)
1309
+ q = K(q)
1310
+ q1 = K(q1)
1311
+ q2 = K(q2)
1312
+ return super().__classcall__(cls, KL, q, q1, q2, normalized)
1313
+
1314
+ def __init__(self, KL, q, q1, q2, normalized):
1315
+ r"""
1316
+ Initialize the nonsymmetric Macdonald polynomial class.
1317
+
1318
+ INPUT:
1319
+
1320
+ - ``KL`` -- algebra over weight space
1321
+ - ``q``, ``q1``, ``q2`` -- parameters
1322
+ - ``normalized`` -- boolean (default: ``True``); whether to normalize
1323
+ the result to have leading coefficient 1
1324
+
1325
+ EXAMPLES::
1326
+
1327
+ sage: K = QQ['q,q1,q2'].fraction_field()
1328
+ sage: q, q1, q2 = K.gens()
1329
+ sage: KL = RootSystem(["A",1,1]).weight_space(extended = True).algebra(K)
1330
+ sage: NonSymmetricMacdonaldPolynomials(KL,q, q1, q2)
1331
+ The family of the Macdonald polynomials of type ['A', 1, 1] with parameters q, q1, q2
1332
+
1333
+ sage: KL = RootSystem(["A",1,1]).ambient_space().algebra(K)
1334
+ sage: NonSymmetricMacdonaldPolynomials(KL,q, q1, q2)
1335
+ The family of the Macdonald polynomials of type ['A', 1, 1] with parameters q, q1, q2
1336
+
1337
+ sage: KL = RootSystem(["A",1,1]).weight_space().algebra(K)
1338
+ sage: NonSymmetricMacdonaldPolynomials(KL,q, q1, q2)
1339
+ Traceback (most recent call last):
1340
+ ...
1341
+ AssertionError: The weight lattice needs to be extended!
1342
+ """
1343
+ # TODO: check all the choices!
1344
+ self._KL = KL
1345
+ self._L = KL.basis().keys()
1346
+ assert self._L.is_extended(), "The weight lattice needs to be extended!"
1347
+ self._q = q
1348
+ self._q1 = q1
1349
+ self._q2 = q2
1350
+ assert self.L_prime().classical() is self.L().classical()
1351
+ T = KL.twisted_demazure_lusztig_operators(q1, q2, convention='dominant')
1352
+ T_Y = KL.demazure_lusztig_operators_on_classical(q, q1, q2, convention='dominant')
1353
+ CherednikOperatorsEigenvectors.__init__(self, T, T_Y, normalized=normalized)
1354
+
1355
+ def _repr_(self):
1356
+ r"""
1357
+ EXAMPLES::
1358
+
1359
+ sage: NonSymmetricMacdonaldPolynomials(["B", 2, 1])
1360
+ The family of the Macdonald polynomials of type ['B', 2, 1] with parameters q, q1, q2
1361
+ """
1362
+ return "The family of the Macdonald polynomials of type %s with parameters %s, %s, %s" % (self.cartan_type(),self._q, self._q1, self._q2)
1363
+
1364
+ # This is redundant with the cartan_type method of
1365
+ # CherednikOperatorsEigenvectors, but we need it very early in the
1366
+ # initialization, before self._T_Y is set ...
1367
+ @cached_method
1368
+ def cartan_type(self):
1369
+ r"""
1370
+ Return Cartan type of ``self``.
1371
+
1372
+ EXAMPLES::
1373
+
1374
+ sage: NonSymmetricMacdonaldPolynomials(["B", 2, 1]).cartan_type()
1375
+ ['B', 2, 1]
1376
+ """
1377
+ return self._L.cartan_type()
1378
+
1379
+ def L(self):
1380
+ r"""
1381
+ Return the affinization of the classical weight space.
1382
+
1383
+ EXAMPLES::
1384
+
1385
+ sage: NonSymmetricMacdonaldPolynomials(["B", 2, 1]).L()
1386
+ Ambient space of the Root system of type ['B', 2, 1]
1387
+ """
1388
+ return self._L
1389
+
1390
+ @cached_method
1391
+ def L_check(self):
1392
+ r"""
1393
+ Return the other affinization of the classical weight space.
1394
+
1395
+ .. TODO:: should this just return `L` in the simply laced case?
1396
+
1397
+ EXAMPLES::
1398
+
1399
+ sage: NonSymmetricMacdonaldPolynomials(["B", 2, 1]).L_check()
1400
+ Coambient space of the Root system of type ['C', 2, 1]
1401
+ sage: NonSymmetricMacdonaldPolynomials(["B", 2, 1]).L_check().classical()
1402
+ Ambient space of the Root system of type ['B', 2]
1403
+ """
1404
+ from sage.combinat.root_system.weight_space import WeightSpace
1405
+ from sage.combinat.root_system.type_affine import AmbientSpace
1406
+ L = self.L()
1407
+ other_affine_root_system = self.cartan_type().classical().dual().affine().root_system()
1408
+ if isinstance(L, WeightSpace): # TODO: make a nicer test
1409
+ return other_affine_root_system.coweight_space(L.base_ring(), extended=True)
1410
+ else:
1411
+ assert isinstance(L, AmbientSpace)
1412
+ return other_affine_root_system.coambient_space(L.base_ring())
1413
+
1414
+ @cached_method
1415
+ def L_prime(self):
1416
+ r"""
1417
+ The affine space where classical weights are lifted for the recursion.
1418
+
1419
+ Also the parent of `\rho'`.
1420
+
1421
+ EXAMPLES:
1422
+
1423
+ In the twisted case, this is the affinization of the classical
1424
+ ambient space::
1425
+
1426
+ sage: NonSymmetricMacdonaldPolynomials("B2~*").L()
1427
+ Ambient space of the Root system of type ['B', 2, 1]^*
1428
+ sage: NonSymmetricMacdonaldPolynomials("B2~*").L().classical()
1429
+ Ambient space of the Root system of type ['C', 2]
1430
+
1431
+ sage: NonSymmetricMacdonaldPolynomials("B2~*").L_prime()
1432
+ Ambient space of the Root system of type ['B', 2, 1]^*
1433
+ sage: NonSymmetricMacdonaldPolynomials("B2~*").L_prime().classical()
1434
+ Ambient space of the Root system of type ['C', 2]
1435
+
1436
+ In the untwisted case, this is the other affinization of the
1437
+ classical ambient space::
1438
+
1439
+ sage: NonSymmetricMacdonaldPolynomials("B2~").L()
1440
+ Ambient space of the Root system of type ['B', 2, 1]
1441
+ sage: NonSymmetricMacdonaldPolynomials("B2~").L().classical()
1442
+ Ambient space of the Root system of type ['B', 2]
1443
+
1444
+ sage: NonSymmetricMacdonaldPolynomials("B2~").L_prime()
1445
+ Coambient space of the Root system of type ['C', 2, 1]
1446
+ sage: NonSymmetricMacdonaldPolynomials("B2~").L_prime().classical()
1447
+ Ambient space of the Root system of type ['B', 2]
1448
+
1449
+ For simply laced, the two affinizations coincide::
1450
+
1451
+ sage: NonSymmetricMacdonaldPolynomials("A2~").L()
1452
+ Ambient space of the Root system of type ['A', 2, 1]
1453
+ sage: NonSymmetricMacdonaldPolynomials("A2~").L().classical()
1454
+ Ambient space of the Root system of type ['A', 2]
1455
+
1456
+ sage: NonSymmetricMacdonaldPolynomials("A2~").L_prime()
1457
+ Coambient space of the Root system of type ['A', 2, 1]
1458
+ sage: NonSymmetricMacdonaldPolynomials("A2~").L_prime().classical()
1459
+ Ambient space of the Root system of type ['A', 2]
1460
+
1461
+ .. NOTE:: do we want the coambient space of type `A_2^{(1)}` instead?
1462
+
1463
+ For type BC::
1464
+
1465
+ sage: NonSymmetricMacdonaldPolynomials(["BC",3,2]).L_prime()
1466
+ Ambient space of the Root system of type ['BC', 3, 2]
1467
+ """
1468
+ ct = self.cartan_type()
1469
+ if ct.is_untwisted_affine():
1470
+ return self.L_check()
1471
+ else:
1472
+ return self.L()
1473
+
1474
+ @cached_method
1475
+ def L0(self):
1476
+ r"""
1477
+ Return the space indexing the monomials of the nonsymmetric Macdonald polynomials.
1478
+
1479
+ EXAMPLES::
1480
+
1481
+ sage: NonSymmetricMacdonaldPolynomials("B2~").L0()
1482
+ Ambient space of the Root system of type ['B', 2]
1483
+ sage: NonSymmetricMacdonaldPolynomials("B2~*").L0()
1484
+ Ambient space of the Root system of type ['C', 2]
1485
+ """
1486
+ return self.L().classical()
1487
+
1488
+ @cached_method
1489
+ def KL0(self):
1490
+ r"""
1491
+ Return the group algebra where the nonsymmetric Macdonald polynomials live.
1492
+
1493
+ EXAMPLES::
1494
+
1495
+ sage: NonSymmetricMacdonaldPolynomials("B2~").KL0()
1496
+ Algebra of the Ambient space of the Root system of type ['B', 2]
1497
+ over Fraction Field of Multivariate Polynomial Ring in q, q1, q2 over Rational Field
1498
+ sage: NonSymmetricMacdonaldPolynomials("B2~*").KL0()
1499
+ Algebra of the Ambient space of the Root system of type ['C', 2]
1500
+ over Fraction Field of Multivariate Polynomial Ring in q, q1, q2 over Rational Field
1501
+ """
1502
+ return self._KL.classical()
1503
+
1504
+ @lazy_attribute
1505
+ def Q_to_Qcheck(self):
1506
+ r"""
1507
+ The reindexing of the index set of the Y's by the coroot lattice.
1508
+
1509
+ EXAMPLES::
1510
+
1511
+ sage: E = NonSymmetricMacdonaldPolynomials("C2~")
1512
+ sage: alphacheck = E.Y().keys().simple_roots()
1513
+ sage: E.Q_to_Qcheck(alphacheck[0])
1514
+ alphacheck[0] - alphacheck[2]
1515
+ sage: E.Q_to_Qcheck(alphacheck[1])
1516
+ alphacheck[1]
1517
+ sage: E.Q_to_Qcheck(alphacheck[2])
1518
+ alphacheck[2]
1519
+
1520
+ sage: x = alphacheck[1] + 2*alphacheck[2]
1521
+ sage: x.parent()
1522
+ Root lattice of the Root system of type ['B', 2, 1]
1523
+ sage: E.Q_to_Qcheck(x)
1524
+ alphacheck[1] + 2*alphacheck[2]
1525
+ sage: _.parent()
1526
+ Coroot lattice of the Root system of type ['C', 2, 1]
1527
+ """
1528
+ #assert self.cartan_type().is_untwisted_affine()
1529
+ Qcheck = self._T_Y.Y().keys()
1530
+ Q = Qcheck.cartan_type().other_affinization().root_system().root_lattice()
1531
+ assert Q.classical() is Qcheck.classical()
1532
+ return Q.module_morphism(Qcheck.simple_roots_tilde().__getitem__, codomain=Qcheck)
1533
+
1534
+ def Y(self):
1535
+ r"""
1536
+ Return the family of `Y` operators whose eigenvectors are the nonsymmetric Macdonald polynomials.
1537
+
1538
+ EXAMPLES::
1539
+
1540
+ sage: NonSymmetricMacdonaldPolynomials("C2~").Y()
1541
+ Lazy family (<lambda>(i))_{i in Root lattice of the Root system of type ['B', 2, 1]}
1542
+ sage: _.keys().classical()
1543
+ Root lattice of the Root system of type ['B', 2]
1544
+ sage: NonSymmetricMacdonaldPolynomials("C2~*").Y()
1545
+ Lazy family (<...Y_lambdacheck...>(i))_{i in Coroot lattice of the Root system of type ['C', 2, 1]^*}
1546
+ sage: _.keys().classical()
1547
+ Root lattice of the Root system of type ['C', 2]
1548
+ sage: NonSymmetricMacdonaldPolynomials(["BC", 3, 2]).Y()
1549
+ Lazy family (<...Y_lambdacheck...>(i))_{i in Coroot lattice of the Root system of type ['BC', 3, 2]}
1550
+ sage: _.keys().classical()
1551
+ Root lattice of the Root system of type ['B', 3]
1552
+ """
1553
+ from sage.sets.family import Family
1554
+ Y = self._T_Y.Y()
1555
+ ct = self.cartan_type()
1556
+ # TODO: improve test
1557
+ if ct.dual().is_untwisted_affine() or ct.type() == "BC":
1558
+ return Y
1559
+ Q = self.Q_to_Qcheck.domain()
1560
+ return Family(Q, lambda lambdacheck: Y[self.Q_to_Qcheck(lambdacheck)])
1561
+
1562
+ def affine_lift(self, mu):
1563
+ r"""
1564
+ Return the affinization of `\mu` in `L'`.
1565
+
1566
+ INPUT:
1567
+
1568
+ - ``mu`` -- a classical weight `\mu`
1569
+
1570
+ .. SEEALSO::
1571
+
1572
+ - :meth:`.hecke_algebra_representation.CherednikOperatorsEigenvectors.affine_lift`
1573
+ - :meth:`affine_retract`
1574
+ - :meth:`L_prime`
1575
+
1576
+ EXAMPLES:
1577
+
1578
+ In the untwisted case, this is the other affinization at level 1::
1579
+
1580
+ sage: E = NonSymmetricMacdonaldPolynomials("B2~")
1581
+ sage: L0 = E.keys(); L0
1582
+ Ambient space of the Root system of type ['B', 2]
1583
+ sage: omega = L0.fundamental_weights()
1584
+ sage: E.affine_lift(omega[1])
1585
+ e[0] + e['deltacheck']
1586
+ sage: E.affine_lift(omega[1]).parent()
1587
+ Coambient space of the Root system of type ['C', 2, 1]
1588
+
1589
+ In the twisted case, this is the usual affinization at level 1::
1590
+
1591
+ sage: E = NonSymmetricMacdonaldPolynomials("B2~*")
1592
+ sage: L0 = E.keys(); L0
1593
+ Ambient space of the Root system of type ['C', 2]
1594
+ sage: omega = L0.fundamental_weights()
1595
+ sage: E.affine_lift(omega[1])
1596
+ e[0] + e['deltacheck']
1597
+ sage: E.affine_lift(omega[1]).parent()
1598
+ Ambient space of the Root system of type ['B', 2, 1]^*
1599
+ """
1600
+ return self.L_prime().embed_at_level(mu, 1)
1601
+
1602
+ def twist(self, mu, i):
1603
+ r"""
1604
+ Act by `s_i` on the affine weight `\mu`.
1605
+
1606
+ This calls ``simple_reflection``; which is semantically the
1607
+ same as the default implementation.
1608
+
1609
+ EXAMPLES::
1610
+
1611
+ sage: # needs sage.libs.gap
1612
+ sage: W = WeylGroup(["B",3])
1613
+ sage: W.element_class._repr_ = lambda x: "".join(str(i)
1614
+ ....: for i in x.reduced_word())
1615
+ sage: K = QQ['q1,q2']
1616
+ sage: q1, q2 = K.gens()
1617
+ sage: KW = W.algebra(K)
1618
+ sage: T = KW.demazure_lusztig_operators(q1, q2, affine=True)
1619
+ sage: E = T.Y_eigenvectors()
1620
+ sage: w = W.an_element(); w
1621
+ 123
1622
+ sage: E.twist(w,1)
1623
+ 1231
1624
+ """
1625
+ return mu.simple_reflection(i)
1626
+
1627
+ def affine_retract(self, mu):
1628
+ r"""
1629
+ Retract the affine weight `\mu` into a classical weight.
1630
+
1631
+ INPUT:
1632
+
1633
+ - ``mu`` -- an affine weight `\mu` in `L'`
1634
+
1635
+ .. SEEALSO::
1636
+
1637
+ - :meth:`.hecke_algebra_representation.HeckeAlgebraRepresentation.affine_retract`
1638
+ - :meth:`affine_lift`
1639
+ - :meth:`L_prime`
1640
+
1641
+ EXAMPLES::
1642
+
1643
+ sage: E = NonSymmetricMacdonaldPolynomials("B2~")
1644
+ sage: L0 = E.keys(); L0
1645
+ Ambient space of the Root system of type ['B', 2]
1646
+ sage: omega = L0.fundamental_weights()
1647
+ sage: E.affine_lift(omega[1])
1648
+ e[0] + e['deltacheck']
1649
+ sage: E.affine_retract(E.affine_lift(omega[1]))
1650
+ (1, 0)
1651
+ """
1652
+ assert mu in self.L_prime()
1653
+ return self.L0()(mu)
1654
+
1655
+ def __getitem__(self, mu):
1656
+ r"""
1657
+ Return the nonsymmetric Macdonald polynomial `E_\mu`.
1658
+
1659
+ INPUT:
1660
+
1661
+ - ``mu`` -- a weight `\mu` that lifts to a level 0 element of the affine weight lattice
1662
+
1663
+ This methods simply checks the weight and calls
1664
+ :meth:`.hecke_algebra_representation.CherednikOperatorsEigenvectors.__getitem__`.
1665
+
1666
+ .. NOTE::
1667
+
1668
+ Any element of the finite weight lattice lifts to a level
1669
+ 0 element of the affine weight lattice.
1670
+ Exception: `\omega_n` in type `BC_n` dual.
1671
+
1672
+ EXAMPLES::
1673
+
1674
+ sage: ct = CartanType(["BC",2,2]).dual()
1675
+ sage: E = NonSymmetricMacdonaldPolynomials(ct)
1676
+ sage: omega = E.keys().fundamental_weights()
1677
+ sage: omega[2]
1678
+ (1/2, 1/2)
1679
+ sage: E[omega[2]]
1680
+ Traceback (most recent call last):
1681
+ ...
1682
+ ValueError: 1/2*e[0] + 1/2*e[1] does not lift to a level 0 element
1683
+ of the affine weight lattice
1684
+ sage: E[2*omega[2]] # needs sage.libs.gap
1685
+ ((q^2*q1^2+q^2*q1*q2)/(q^2*q1^2-q2^2))*B[(0, 0)]
1686
+ - ((q^2*q1^2+q^2*q1*q2)/(-q^2*q1^2+q2^2))*B[(1, 0)] + B[(1, 1)]
1687
+ - ((q^2*q1^2+q^2*q1*q2)/(-q^2*q1^2+q2^2))*B[(0, 1)]
1688
+ """
1689
+ muaff = self._L.embed_at_level(mu, 0)
1690
+ if not all(muaff.scalar(coroot) in ZZ for coroot in self._L.simple_coroots()):
1691
+ raise ValueError("%s does not lift to a level 0 element of the affine weight lattice" % muaff)
1692
+ return super().__getitem__(mu)
1693
+
1694
+ @cached_method
1695
+ def rho_prime(self): # Should be rho_prime_check
1696
+ r"""
1697
+ Return the level 0 sum of the classical fundamental weights in `L'`.
1698
+
1699
+ .. SEEALSO:: :meth:`L_prime`
1700
+
1701
+ EXAMPLES:
1702
+
1703
+ Untwisted case::
1704
+
1705
+ sage: NonSymmetricMacdonaldPolynomials("B2~").rho_prime() # CHECKME
1706
+ 3/2*e[0] + 1/2*e[1]
1707
+ sage: NonSymmetricMacdonaldPolynomials("B2~").rho_prime().parent()
1708
+ Coambient space of the Root system of type ['C', 2, 1]
1709
+
1710
+ Twisted case::
1711
+
1712
+ sage: NonSymmetricMacdonaldPolynomials("B2~*").rho_prime() # CHECKME
1713
+ 2*e[0] + e[1]
1714
+ sage: NonSymmetricMacdonaldPolynomials("B2~*").rho_prime().parent()
1715
+ Ambient space of the Root system of type ['B', 2, 1]^*
1716
+ """
1717
+ return self.L_prime().rho_classical()
1718
+
1719
+ def eigenvalue_experimental(self, mu, l):
1720
+ r"""
1721
+ Return the eigenvalue of `Y^{\lambda^\vee}` acting on the macdonald polynomial `E_\mu`.
1722
+
1723
+ INPUT:
1724
+
1725
+ - ``mu`` -- the index `\mu` of an eigenvector
1726
+ - ``l`` -- an index `\lambda^\vee` of some `Y`
1727
+
1728
+ .. NOTE::
1729
+
1730
+ - This method is currently not used; most tests below even
1731
+ test the naive method. They are left here as a basis for
1732
+ a future implementation.
1733
+
1734
+ - This is actually equivariant, as long as `s_i` does not
1735
+ fix `\lambda`.
1736
+
1737
+ - This method is only really needed for
1738
+ `\lambda^\vee=\alpha^\vee_i` with `i=0,...,n`.
1739
+
1740
+ See Corollary 6.11 of [Haiman06]_.
1741
+
1742
+ EXAMPLES::
1743
+
1744
+ sage: K = QQ['q,t'].fraction_field()
1745
+ sage: q,t = K.gens()
1746
+ sage: q1 = t
1747
+ sage: q2 = -1
1748
+ sage: KL = RootSystem(["A",1,1]).ambient_space().algebra(K)
1749
+ sage: E = NonSymmetricMacdonaldPolynomials(KL,q, q1, q2)
1750
+ sage: L0 = E.keys()
1751
+ sage: E.eigenvalues(L0([0,0])) # Checked by hand by Mark and Arun # needs sage.libs.gap
1752
+ [1/(q*t), t]
1753
+ sage: alpha = E.Y().keys().simple_roots()
1754
+ sage: E.eigenvalue_experimental(L0([0,0]), alpha[0]) # todo: not implemented
1755
+ 1/(q*t)
1756
+ sage: E.eigenvalue_experimental(L0([0,0]), alpha[1])
1757
+ t
1758
+
1759
+ Some examples of eigenvalues (not mathematically checked!!!)::
1760
+
1761
+ sage: # needs sage.libs.gap
1762
+ sage: E.eigenvalues(L0([1,0]))
1763
+ [t, 1/(q*t)]
1764
+ sage: E.eigenvalues(L0([0,1]))
1765
+ [1/(q^2*t), q*t]
1766
+ sage: E.eigenvalues(L0([1,1]))
1767
+ [1/(q*t), t]
1768
+ sage: E.eigenvalues(L0([2,1]))
1769
+ [t, 1/(q*t)]
1770
+ sage: E.eigenvalues(L0([-1,1]))
1771
+ [(-1)/(-q^3*t), q^2*t]
1772
+ sage: E.eigenvalues(L0([-2,1]))
1773
+ [(-1)/(-q^4*t), q^3*t]
1774
+ sage: E.eigenvalues(L0([-2,0]))
1775
+ [(-1)/(-q^3*t), q^2*t]
1776
+
1777
+ Some type `B` examples::
1778
+
1779
+ sage: K = QQ['q,t'].fraction_field()
1780
+ sage: q,t = K.gens()
1781
+ sage: q1 = t
1782
+ sage: q2 = -1
1783
+ sage: L = RootSystem(["B",2,1]).ambient_space()
1784
+ sage: KL = L.algebra(K)
1785
+ sage: E = NonSymmetricMacdonaldPolynomials(KL,q, q1, q2)
1786
+ sage: L0 = E.keys()
1787
+ sage: alpha = L.simple_coroots()
1788
+
1789
+ sage: # not tested
1790
+ sage: E.eigenvalue(L0((0,0)), alpha[0]) # not checked
1791
+ q/t
1792
+ sage: E.eigenvalue(L0((1,0)), alpha[1]) # What Mark got by hand
1793
+ q
1794
+ sage: E.eigenvalue(L0((1,0)), alpha[2]) # not checked
1795
+ t
1796
+ sage: E.eigenvalue(L0((1,0)), alpha[0]) # not checked
1797
+ 1
1798
+
1799
+ sage: L = RootSystem("B2~*").ambient_space()
1800
+ sage: KL = L.algebra(K)
1801
+ sage: E = NonSymmetricMacdonaldPolynomials(KL,q, q1, q2)
1802
+ sage: L0 = E.keys()
1803
+ sage: alpha = L.simple_coroots()
1804
+ sage: E.eigenvalue(L0((0,0)), alpha[0]) # assuming Mark's calculation is correct, one should get # not tested
1805
+ 1/(q*t^2)
1806
+
1807
+ The expected value can more or less be read off from equation
1808
+ (37), Corollary 6.15 of [Haiman06]_
1809
+
1810
+ .. TODO::
1811
+
1812
+ - Use proposition 6.9 of [Haiman06]_ to check the action
1813
+ of the `Y` s on monomials.
1814
+
1815
+ - Generalize to any `q_1`, `q_2`.
1816
+
1817
+ - Check claim by Mark: all scalar products should occur in
1818
+ the finite weight lattice, with alpha 0 being the
1819
+ appropriate projection of the affine alpha 0. Question:
1820
+ can this be emulated by being at level 0?
1821
+ """
1822
+ assert self.Y().keys().is_parent_of(l)
1823
+ L_prime = self.L_prime()
1824
+ L0 = L_prime.classical()
1825
+ I0 = L0.index_set()
1826
+ assert L0.is_parent_of(mu)
1827
+ # Should we view mu as a translation, and ask for its alcove walk?
1828
+ muaff = self.affine_lift(mu) # embeds mu at level 1 in L_prime
1829
+ w = reversed(mu.reduced_word(I0, positive=False)) # the reduced word for w_\mu, Prop. 6.9 of [Haiman06]_
1830
+ # mu should be scaled to make sure it implements a translation
1831
+ #w = reversed(L.reduced_word_of_translation(L(mu)))
1832
+ #x = L.embed_at_level(L0.rho(),1)
1833
+ #x = L.rho() / L.rho().level()
1834
+ x = self.rho_prime()
1835
+ l = self.L_prime().coroot_lattice()(l) # there might need to be a `nu` here
1836
+ for i in w:
1837
+ x = x.simple_reflection(i)
1838
+ q1,q2 = self.hecke_parameters(1) # TODO: clean up
1839
+ t = -q2/q1 # TODO: generalize for any eigenvalue
1840
+ # In type BC, maybe this should be q^...*a[0]
1841
+ return self._q**(-muaff.scalar(l)) * t**(-x.scalar(l))
1842
+
1843
+ def seed(self, mu):
1844
+ r"""
1845
+ Return `E_\mu` for `\mu` minuscule, i.e. in the fundamental alcove.
1846
+
1847
+ INPUT:
1848
+
1849
+ - ``mu`` -- the index `\mu` of an eigenvector
1850
+
1851
+ EXAMPLES::
1852
+
1853
+ sage: E = NonSymmetricMacdonaldPolynomials(["A",2,1])
1854
+ sage: omega = E.keys().fundamental_weights()
1855
+ sage: E.seed(omega[1])
1856
+ B[(1, 0, 0)]
1857
+ """
1858
+ return self.KL0().monomial(mu)
1859
+
1860
+ def symmetric_macdonald_polynomial(self, mu):
1861
+ r"""
1862
+ Return the symmetric Macdonald polynomial indexed by `\mu`.
1863
+
1864
+ INPUT:
1865
+
1866
+ - ``mu`` -- a dominant weight `\mu`
1867
+
1868
+ .. WARNING::
1869
+
1870
+ The result is Weyl-symmetric only for Hecke parameters of
1871
+ the form `q_1=v` and `q_2=-1/v`. In general the value of
1872
+ `v` below, should be the square root of `-q_1/q_2`, but the
1873
+ use of `q_1=t` and `q_2=-1` results in nonintegral powers of `t`.
1874
+
1875
+ EXAMPLES::
1876
+
1877
+ sage: K = QQ['q,v,t'].fraction_field()
1878
+ sage: q,v,t = K.gens()
1879
+ sage: E = NonSymmetricMacdonaldPolynomials(['A',2,1], q, v, -1/v)
1880
+ sage: om = E.L0().fundamental_weights()
1881
+ sage: E.symmetric_macdonald_polynomial(om[2]) # needs sage.libs.gap
1882
+ B[(1, 1, 0)] + B[(1, 0, 1)] + B[(0, 1, 1)]
1883
+ sage: E.symmetric_macdonald_polynomial(2*om[1]) # needs sage.libs.gap
1884
+ ((q*v^2+v^2-q-1)/(q*v^2-1))*B[(1, 1, 0)]
1885
+ + ((q*v^2+v^2-q-1)/(q*v^2-1))*B[(1, 0, 1)] + B[(2, 0, 0)]
1886
+ + ((q*v^2+v^2-q-1)/(q*v^2-1))*B[(0, 1, 1)] + B[(0, 2, 0)] + B[(0, 0, 2)]
1887
+ sage: f = E.symmetric_macdonald_polynomial(E.L0()((2,1,0))); f # needs sage.libs.gap
1888
+ ((2*q*v^4+v^4-q*v^2+v^2-q-2)/(q*v^4-1))*B[(1, 1, 1)] + B[(1, 2, 0)]
1889
+ + B[(1, 0, 2)] + B[(2, 1, 0)] + B[(2, 0, 1)] + B[(0, 1, 2)] + B[(0, 2, 1)]
1890
+
1891
+ We compare with the type `A` Macdonald polynomials
1892
+ coming from symmetric functions::
1893
+
1894
+ sage: # needs sage.combinat
1895
+ sage: P = SymmetricFunctions(K).macdonald().P()
1896
+ sage: g = P[2,1].expand(3); g
1897
+ x0^2*x1 + x0*x1^2 + x0^2*x2
1898
+ + (2*q*t^2 - q*t - q + t^2 + t - 2)/(q*t^2 - 1)*x0*x1*x2
1899
+ + x1^2*x2 + x0*x2^2 + x1*x2^2
1900
+ sage: fe = f.expand(g.parent().gens()); fe # needs sage.libs.gap
1901
+ x0^2*x1 + x0*x1^2 + x0^2*x2
1902
+ + (2*q*v^4 - q*v^2 - q + v^4 + v^2 - 2)/(q*v^4 - 1)*x0*x1*x2
1903
+ + x1^2*x2 + x0*x2^2 + x1*x2^2
1904
+ sage: g.map_coefficients(lambda x: x.subs(t=v*v)) == fe # needs sage.libs.gap
1905
+ True
1906
+
1907
+ sage: E = NonSymmetricMacdonaldPolynomials(['C',3,1], q, v, -1/v)
1908
+ sage: om = E.L0().fundamental_weights()
1909
+ sage: E.symmetric_macdonald_polynomial(om[1]+om[2])
1910
+ B[(-2, -1, 0)] + B[(-2, 1, 0)] + B[(-2, 0, -1)] + B[(-2, 0, 1)]
1911
+ + ((4*q^3*v^14+2*q^2*v^14-2*q^3*v^12+2*q^2*v^12-2*q^3*v^10+q*v^12-5*q^2*v^10-5*q*v^4+q^2*v^2-2*v^4+2*q*v^2-2*v^2+2*q+4)/(q^3*v^14-q^2*v^10-q*v^4+1))*B[(-1, 0, 0)]
1912
+ + B[(-1, -2, 0)] + ((2*q*v^4+v^4-q*v^2+v^2-q-2)/(q*v^4-1))*B[(-1, -1, -1)]
1913
+ + ((2*q*v^4+v^4-q*v^2+v^2-q-2)/(q*v^4-1))*B[(-1, -1, 1)] + ((2*q*v^4+v^4-q*v^2+v^2-q-2)/(q*v^4-1))*B[(-1, 1, -1)]
1914
+ + ((2*q*v^4+v^4-q*v^2+v^2-q-2)/(q*v^4-1))*B[(-1, 1, 1)] + B[(-1, 2, 0)] + B[(-1, 0, -2)] + B[(-1, 0, 2)]
1915
+ + ((4*q^3*v^14+2*q^2*v^14-2*q^3*v^12+2*q^2*v^12-2*q^3*v^10+q*v^12-5*q^2*v^10-5*q*v^4+q^2*v^2-2*v^4+2*q*v^2-2*v^2+2*q+4)/(q^3*v^14-q^2*v^10-q*v^4+1))*B[(1, 0, 0)] + B[(1, -2, 0)]
1916
+ + ((2*q*v^4+v^4-q*v^2+v^2-q-2)/(q*v^4-1))*B[(1, -1, -1)]
1917
+ + ((2*q*v^4+v^4-q*v^2+v^2-q-2)/(q*v^4-1))*B[(1, -1, 1)]
1918
+ + ((2*q*v^4+v^4-q*v^2+v^2-q-2)/(q*v^4-1))*B[(1, 1, -1)]
1919
+ + ((2*q*v^4+v^4-q*v^2+v^2-q-2)/(q*v^4-1))*B[(1, 1, 1)] + B[(1, 2, 0)] + B[(1, 0, -2)] + B[(1, 0, 2)]
1920
+ + B[(2, -1, 0)] + B[(2, 1, 0)] + B[(2, 0, -1)] + B[(2, 0, 1)] + B[(0, -2, -1)] + B[(0, -2, 1)]
1921
+ - ((4*q^3*v^14+2*q^2*v^14-2*q^3*v^12+2*q^2*v^12-2*q^3*v^10+q*v^12-5*q^2*v^10-5*q*v^4+q^2*v^2-2*v^4+2*q*v^2-2*v^2+2*q+4)/(-q^3*v^14+q^2*v^10+q*v^4-1))*B[(0, -1, 0)]
1922
+ + B[(0, -1, -2)]
1923
+ + B[(0, -1, 2)]
1924
+ - ((4*q^3*v^14+2*q^2*v^14-2*q^3*v^12+2*q^2*v^12-2*q^3*v^10+q*v^12-5*q^2*v^10-5*q*v^4+q^2*v^2-2*v^4+2*q*v^2-2*v^2+2*q+4)/(-q^3*v^14+q^2*v^10+q*v^4-1))*B[(0, 1, 0)]
1925
+ + B[(0, 1, -2)] + B[(0, 1, 2)] + B[(0, 2, -1)] + B[(0, 2, 1)]
1926
+ + ((4*q^3*v^14+2*q^2*v^14-2*q^3*v^12+2*q^2*v^12-2*q^3*v^10+q*v^12-5*q^2*v^10-5*q*v^4+q^2*v^2-2*v^4+2*q*v^2-2*v^2+2*q+4)/(q^3*v^14-q^2*v^10-q*v^4+1))*B[(0, 0, -1)]
1927
+ + ((4*q^3*v^14+2*q^2*v^14-2*q^3*v^12+2*q^2*v^12-2*q^3*v^10+q*v^12-5*q^2*v^10-5*q*v^4+q^2*v^2-2*v^4+2*q*v^2-2*v^2+2*q+4)/(q^3*v^14-q^2*v^10-q*v^4+1))*B[(0, 0, 1)]
1928
+
1929
+ An example for type `G`::
1930
+
1931
+ sage: E = NonSymmetricMacdonaldPolynomials(['G',2,1], q, v, -1/v)
1932
+ sage: om = E.L0().fundamental_weights()
1933
+ sage: E.symmetric_macdonald_polynomial(2*om[1])
1934
+ ((3*q^6*v^22+3*q^5*v^22-3*q^6*v^20+q^4*v^22-4*q^5*v^20+q^4*v^18-q^5*v^16+q^3*v^18-2*q^4*v^16+q^5*v^14-q^3*v^16+q^4*v^14-4*q^4*v^12+q^2*v^14+q^5*v^10-8*q^3*v^12+4*q^4*v^10-4*q^2*v^12+8*q^3*v^10-q*v^12-q^4*v^8+4*q^2*v^10-q^2*v^8+q^3*v^6-q*v^8+2*q^2*v^6-q^3*v^4+q*v^6-q^2*v^4+4*q*v^2-q^2+3*v^2-3*q-3)/(q^6*v^22-q^5*v^20-q^4*v^12-q^3*v^12+q^3*v^10+q^2*v^10+q*v^2-1))*B[(0, 0, 0)]
1935
+ + ((q*v^2+v^2-q-1)/(q*v^2-1))*B[(-2, 1, 1)] + B[(-2, 2, 0)] + B[(-2, 0, 2)]
1936
+ - ((q*v^2+v^2-q-1)/(-q*v^2+1))*B[(-1, -1, 2)]
1937
+ + ((2*q^4*v^12+2*q^3*v^12-2*q^4*v^10-2*q^3*v^10+q^2*v^8-q^3*v^6+q*v^8-2*q^2*v^6+q^3*v^4-q*v^6+q^2*v^4-2*q*v^2-2*v^2+2*q+2)/(q^4*v^12-q^3*v^10-q*v^2+1))*B[(-1, 1, 0)]
1938
+ - ((q*v^2+v^2-q-1)/(-q*v^2+1))*B[(-1, 2, -1)]
1939
+ + ((2*q^4*v^12+2*q^3*v^12-2*q^4*v^10-2*q^3*v^10+q^2*v^8-q^3*v^6+q*v^8-2*q^2*v^6+q^3*v^4-q*v^6+q^2*v^4-2*q*v^2-2*v^2+2*q+2)/(q^4*v^12-q^3*v^10-q*v^2+1))*B[(-1, 0, 1)]
1940
+ - ((q*v^2+v^2-q-1)/(-q*v^2+1))*B[(1, -2, 1)]
1941
+ - ((2*q^4*v^12+2*q^3*v^12-2*q^4*v^10-2*q^3*v^10+q^2*v^8-q^3*v^6+q*v^8-2*q^2*v^6+q^3*v^4-q*v^6+q^2*v^4-2*q*v^2-2*v^2+2*q+2)/(-q^4*v^12+q^3*v^10+q*v^2-1))*B[(1, -1, 0)]
1942
+ - ((q*v^2+v^2-q-1)/(-q*v^2+1))*B[(1, 1, -2)]
1943
+ - ((2*q^4*v^12+2*q^3*v^12-2*q^4*v^10-2*q^3*v^10+q^2*v^8-q^3*v^6+q*v^8-2*q^2*v^6+q^3*v^4-q*v^6+q^2*v^4-2*q*v^2-2*v^2+2*q+2)/(-q^4*v^12+q^3*v^10+q*v^2-1))*B[(1, 0, -1)]
1944
+ + B[(2, -2, 0)] + ((q*v^2+v^2-q-1)/(q*v^2-1))*B[(2, -1, -1)] + B[(2, 0, -2)] + B[(0, -2, 2)]
1945
+ - ((2*q^4*v^12+2*q^3*v^12-2*q^4*v^10-2*q^3*v^10+q^2*v^8-q^3*v^6+q*v^8-2*q^2*v^6+q^3*v^4-q*v^6+q^2*v^4-2*q*v^2-2*v^2+2*q+2)/(-q^4*v^12+q^3*v^10+q*v^2-1))*B[(0, -1, 1)]
1946
+ + ((2*q^4*v^12+2*q^3*v^12-2*q^4*v^10-2*q^3*v^10+q^2*v^8-q^3*v^6+q*v^8-2*q^2*v^6+q^3*v^4-q*v^6+q^2*v^4-2*q*v^2-2*v^2+2*q+2)/(q^4*v^12-q^3*v^10-q*v^2+1))*B[(0, 1, -1)]
1947
+ + B[(0, 2, -2)]
1948
+ """
1949
+ if self.cartan_type().classical() != mu.parent().cartan_type() or not mu.is_dominant():
1950
+ raise ValueError("%s must be a dominant weight for the classical subrootsystem of %s" % (mu, self.cartan_type()))
1951
+ v = self._q1
1952
+ KL0 = self.KL0()
1953
+ s = KL0.zero()
1954
+ # efficiently compute the finite Hecke symmetrization of the
1955
+ # nonsymmetric Macdonald polynomial of the dominant weight mu
1956
+ # by searching the Weyl orbit of mu and remembering
1957
+ Torbit = {}
1958
+ for c in mu._orbit_iter():
1959
+ i = c.first_descent()
1960
+ if i is None:
1961
+ Torbit[c] = self[mu] # the nonsymmetric Macdonald polynomial of mu
1962
+ else:
1963
+ Torbit[c] = v * self._T.Tw([i])(Torbit[c.simple_reflection(i)])
1964
+ s = s + Torbit[c]
1965
+ return s