passagemath-combinat 10.6.1__cp312-cp312-musllinux_1_2_aarch64.whl → 10.8.1a1__cp312-cp312-musllinux_1_2_aarch64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- passagemath_combinat/__init__.py +3 -0
- {passagemath_combinat-10.6.1.dist-info → passagemath_combinat-10.8.1a1.dist-info}/METADATA +17 -20
- {passagemath_combinat-10.6.1.dist-info → passagemath_combinat-10.8.1a1.dist-info}/RECORD +220 -218
- {passagemath_combinat-10.6.1.dist-info → passagemath_combinat-10.8.1a1.dist-info}/WHEEL +1 -1
- passagemath_combinat-10.8.1a1.dist-info/top_level.txt +3 -0
- sage/algebras/affine_nil_temperley_lieb.py +3 -3
- sage/algebras/all.py +0 -1
- sage/algebras/askey_wilson.py +1 -1
- sage/algebras/associated_graded.py +2 -2
- sage/algebras/cellular_basis.py +3 -6
- sage/algebras/cluster_algebra.py +2 -3
- sage/algebras/down_up_algebra.py +6 -6
- sage/algebras/free_algebra.py +3 -32
- sage/algebras/free_algebra_element.py +21 -25
- sage/algebras/free_algebra_quotient_element.py +9 -38
- sage/algebras/free_zinbiel_algebra.py +4 -3
- sage/algebras/hall_algebra.py +2 -2
- sage/algebras/hecke_algebras/ariki_koike_algebra.py +8 -8
- sage/algebras/hecke_algebras/ariki_koike_specht_modules.py +2 -2
- sage/algebras/hecke_algebras/cubic_hecke_algebra.py +11 -14
- sage/algebras/hecke_algebras/cubic_hecke_base_ring.py +1 -1
- sage/algebras/hecke_algebras/cubic_hecke_matrix_rep.py +5 -5
- sage/algebras/iwahori_hecke_algebra.py +59 -57
- sage/algebras/jordan_algebra.py +97 -89
- sage/algebras/lie_conformal_algebras/abelian_lie_conformal_algebra.py +6 -6
- sage/algebras/lie_conformal_algebras/affine_lie_conformal_algebra.py +14 -12
- sage/algebras/lie_conformal_algebras/bosonic_ghosts_lie_conformal_algebra.py +6 -6
- sage/algebras/lie_conformal_algebras/fermionic_ghosts_lie_conformal_algebra.py +4 -4
- sage/algebras/lie_conformal_algebras/finitely_freely_generated_lca.py +13 -13
- sage/algebras/lie_conformal_algebras/free_bosons_lie_conformal_algebra.py +8 -6
- sage/algebras/lie_conformal_algebras/free_fermions_lie_conformal_algebra.py +7 -5
- sage/algebras/lie_conformal_algebras/freely_generated_lie_conformal_algebra.py +7 -7
- sage/algebras/lie_conformal_algebras/graded_lie_conformal_algebra.py +6 -5
- sage/algebras/lie_conformal_algebras/lie_conformal_algebra.py +12 -11
- sage/algebras/lie_conformal_algebras/lie_conformal_algebra_element.py +3 -3
- sage/algebras/lie_conformal_algebras/lie_conformal_algebra_with_basis.py +3 -3
- sage/algebras/lie_conformal_algebras/lie_conformal_algebra_with_structure_coefs.py +11 -11
- sage/algebras/lie_conformal_algebras/n2_lie_conformal_algebra.py +3 -3
- sage/algebras/lie_conformal_algebras/neveu_schwarz_lie_conformal_algebra.py +8 -7
- sage/algebras/lie_conformal_algebras/virasoro_lie_conformal_algebra.py +9 -8
- sage/algebras/lie_conformal_algebras/weyl_lie_conformal_algebra.py +6 -5
- sage/algebras/nil_coxeter_algebra.py +4 -4
- sage/algebras/q_commuting_polynomials.py +6 -6
- sage/algebras/q_system.py +3 -3
- sage/algebras/quantum_clifford.py +8 -8
- sage/algebras/quantum_groups/fock_space.py +48 -8
- sage/algebras/quantum_groups/quantum_group_gap.py +5 -7
- sage/algebras/quantum_matrix_coordinate_algebra.py +7 -7
- sage/algebras/quantum_oscillator.py +3 -3
- sage/algebras/quaternion_algebra_element.py +5 -3
- sage/algebras/schur_algebra.py +3 -3
- sage/algebras/shuffle_algebra.py +5 -8
- sage/algebras/splitting_algebra.py +129 -85
- sage/algebras/tensor_algebra.py +7 -7
- sage/algebras/yangian.py +16 -15
- sage/algebras/yokonuma_hecke_algebra.py +13 -11
- sage/combinat/all.py +9 -0
- sage/combinat/all__sagemath_combinat.py +1 -0
- sage/combinat/alternating_sign_matrix.py +36 -29
- sage/combinat/baxter_permutations.py +32 -12
- sage/combinat/bijectionist.py +13 -17
- sage/combinat/chas/fsym.py +6 -6
- sage/combinat/chas/wqsym.py +23 -29
- sage/combinat/colored_permutations.py +9 -11
- sage/combinat/colored_permutations_representations.py +13 -12
- sage/combinat/composition_tableau.py +2 -2
- sage/combinat/constellation.py +57 -30
- sage/combinat/crystals/affine_factorization.py +5 -4
- sage/combinat/crystals/alcove_path.py +2 -2
- sage/combinat/crystals/fully_commutative_stable_grothendieck.py +3 -2
- sage/combinat/crystals/infinity_crystals.py +18 -18
- sage/combinat/crystals/kac_modules.py +1 -1
- sage/combinat/crystals/kirillov_reshetikhin.py +2 -2
- sage/combinat/crystals/letters.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/crystals/littelmann_path.py +1 -1
- sage/combinat/crystals/pbw_datum.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/crystals/pbw_datum.pyx +3 -2
- sage/combinat/crystals/spins.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/crystals/tensor_product.py +7 -5
- sage/combinat/crystals/tensor_product_element.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/debruijn_sequence.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/debruijn_sequence.pyx +1 -2
- sage/combinat/degree_sequences.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/degree_sequences.pyx +241 -188
- sage/combinat/derangements.py +28 -22
- sage/combinat/diagram_algebras.py +12 -14
- sage/combinat/dyck_word.py +15 -14
- sage/combinat/e_one_star.py +1 -1
- sage/combinat/expnums.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/fast_vector_partitions.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/fqsym.py +13 -19
- sage/combinat/free_dendriform_algebra.py +2 -2
- sage/combinat/free_prelie_algebra.py +2 -2
- sage/combinat/fully_commutative_elements.py +8 -8
- sage/combinat/fully_packed_loop.py +9 -9
- sage/combinat/gelfand_tsetlin_patterns.py +4 -5
- sage/combinat/gray_codes.py +3 -4
- sage/combinat/grossman_larson_algebras.py +2 -2
- sage/combinat/growth.py +13 -13
- sage/combinat/hall_polynomial.py +1 -1
- sage/combinat/hillman_grassl.py +1 -1
- sage/combinat/integer_matrices.py +5 -7
- sage/combinat/k_tableau.py +8 -7
- sage/combinat/kazhdan_lusztig.py +3 -3
- sage/combinat/key_polynomial.py +845 -298
- sage/combinat/knutson_tao_puzzles.py +11 -13
- sage/combinat/matrices/hadamard_matrix.py +1 -1
- sage/combinat/matrices/latin.py +75 -92
- sage/combinat/misc.py +3 -3
- sage/combinat/multiset_partition_into_sets_ordered.py +27 -10
- sage/combinat/ncsf_qsym/generic_basis_code.py +5 -5
- sage/combinat/ncsf_qsym/ncsf.py +6 -5
- sage/combinat/ncsf_qsym/qsym.py +9 -17
- sage/combinat/ncsym/ncsym.py +8 -12
- sage/combinat/nu_dyck_word.py +1 -1
- sage/combinat/parallelogram_polyomino.py +3 -5
- sage/combinat/parking_functions.py +6 -5
- sage/combinat/partition_algebra.py +22 -57
- sage/combinat/partition_kleshchev.py +4 -4
- sage/combinat/partition_tuple.py +12 -10
- sage/combinat/plane_partition.py +10 -13
- sage/combinat/positive_integer_semigroup_test.py +17 -0
- sage/combinat/q_bernoulli.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/quickref.py +2 -2
- sage/combinat/recognizable_series.py +2 -2
- sage/combinat/regular_sequence.py +7 -7
- sage/combinat/regular_sequence_bounded.py +15 -21
- sage/combinat/restricted_growth.py +3 -3
- sage/combinat/ribbon.py +3 -3
- sage/combinat/rigged_configurations/bijection.py +3 -3
- sage/combinat/rigged_configurations/rigged_partition.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/rsk.py +2 -0
- sage/combinat/schubert_polynomial.py +11 -2
- sage/combinat/set_partition.py +3 -7
- sage/combinat/set_partition_iterator.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/set_partition_iterator.pyx +0 -1
- sage/combinat/set_partition_ordered.py +2 -2
- sage/combinat/sf/classical.py +1 -1
- sage/combinat/sf/dual.py +4 -8
- sage/combinat/sf/elementary.py +13 -7
- sage/combinat/sf/hall_littlewood.py +10 -8
- sage/combinat/sf/homogeneous.py +6 -3
- sage/combinat/sf/jack.py +11 -9
- sage/combinat/sf/llt.py +4 -5
- sage/combinat/sf/macdonald.py +10 -11
- sage/combinat/sf/monomial.py +6 -0
- sage/combinat/sf/ns_macdonald.py +92 -51
- sage/combinat/sf/powersum.py +9 -14
- sage/combinat/sf/schur.py +6 -0
- sage/combinat/sf/sf.py +21 -19
- sage/combinat/sf/sfa.py +13 -64
- sage/combinat/shifted_primed_tableau.py +5 -7
- sage/combinat/shuffle.py +1 -1
- sage/combinat/sine_gordon.py +18 -38
- sage/combinat/skew_partition.py +9 -12
- sage/combinat/skew_tableau.py +2 -7
- sage/combinat/sloane_functions.py +1 -1
- sage/combinat/species/all.py +67 -2
- sage/combinat/species/characteristic_species.py +3 -0
- sage/combinat/species/composition_species.py +3 -0
- sage/combinat/species/cycle_species.py +4 -0
- sage/combinat/species/empty_species.py +3 -0
- sage/combinat/species/functorial_composition_species.py +3 -0
- sage/combinat/species/generating_series.py +3 -0
- sage/combinat/species/library.py +3 -0
- sage/combinat/species/linear_order_species.py +3 -0
- sage/combinat/species/partition_species.py +3 -0
- sage/combinat/species/permutation_species.py +4 -0
- sage/combinat/species/product_species.py +3 -0
- sage/combinat/species/recursive_species.py +3 -0
- sage/combinat/species/set_species.py +3 -0
- sage/combinat/species/species.py +13 -7
- sage/combinat/species/structure.py +8 -9
- sage/combinat/species/subset_species.py +3 -0
- sage/combinat/species/sum_species.py +3 -0
- sage/combinat/subword.py +4 -1
- sage/combinat/subword_complex.py +7 -7
- sage/combinat/subword_complex_c.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/superpartition.py +1 -1
- sage/combinat/symmetric_group_algebra.py +9 -9
- sage/combinat/symmetric_group_representations.py +5 -5
- sage/combinat/t_sequences.py +4 -4
- sage/combinat/tableau.py +3 -4
- sage/combinat/tableau_tuple.py +2 -2
- sage/combinat/tiling.py +39 -42
- sage/combinat/triangles_FHM.py +38 -15
- sage/combinat/tutorial.py +2 -2
- sage/combinat/vector_partition.py +43 -31
- sage/combinat/words/abstract_word.py +4 -4
- sage/combinat/words/alphabet.py +12 -12
- sage/combinat/words/finite_word.py +25 -229
- sage/combinat/words/infinite_word.py +1 -1
- sage/combinat/words/morphic.py +13 -13
- sage/combinat/words/morphism.py +3 -12
- sage/combinat/words/paths.py +16 -17
- sage/combinat/words/word.py +60 -35
- sage/combinat/words/word_char.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/words/word_char.pyx +46 -7
- sage/combinat/words/word_datatypes.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/words/word_generators.py +39 -38
- sage/databases/findstat.py +72 -31
- sage/databases/oeis.py +125 -25
- sage/databases/sloane.py +14 -8
- sage/games/sudoku_backtrack.cpython-312-aarch64-linux-musl.so +0 -0
- sage/groups/indexed_free_group.py +3 -4
- sage/libs/symmetrica/symmetrica.cpython-312-aarch64-linux-musl.so +0 -0
- sage/libs/symmetrica/symmetrica.pxi +1 -0
- sage/monoids/automatic_semigroup.py +1 -3
- sage/monoids/free_abelian_monoid.py +7 -33
- sage/monoids/free_abelian_monoid_element.cpython-312-aarch64-linux-musl.so +0 -0
- sage/monoids/free_monoid.py +8 -40
- sage/monoids/free_monoid_element.py +1 -9
- sage/monoids/string_monoid.py +5 -2
- sage/monoids/string_monoid_element.py +12 -66
- sage/rings/all__sagemath_combinat.py +7 -0
- sage/sat/solvers/__init__.py +3 -4
- sage/sat/solvers/cryptominisat.py +2 -3
- sage/sat/solvers/picosat.py +2 -3
- sage/sat/solvers/sat_lp.py +2 -2
- sage/sat/solvers/satsolver.cpython-312-aarch64-linux-musl.so +0 -0
- passagemath_combinat-10.6.1.dist-info/top_level.txt +0 -2
|
@@ -5,7 +5,7 @@ Hall-Littlewood polynomials
|
|
|
5
5
|
|
|
6
6
|
Notation used in the definitions follows mainly [Mac1995]_.
|
|
7
7
|
"""
|
|
8
|
-
|
|
8
|
+
# ***************************************************************************
|
|
9
9
|
# Copyright (C) 2007 Mike Hansen <mhansen@gmail.com>,
|
|
10
10
|
#
|
|
11
11
|
# Distributed under the terms of the GNU General Public License (GPL)
|
|
@@ -17,18 +17,20 @@ Notation used in the definitions follows mainly [Mac1995]_.
|
|
|
17
17
|
#
|
|
18
18
|
# The full text of the GPL is available at:
|
|
19
19
|
#
|
|
20
|
-
#
|
|
21
|
-
|
|
20
|
+
# https://www.gnu.org/licenses/
|
|
21
|
+
# ***************************************************************************
|
|
22
22
|
|
|
23
23
|
import sage.combinat.partition
|
|
24
|
+
import sage.misc.persist
|
|
25
|
+
|
|
24
26
|
from sage.categories.homset import Hom
|
|
27
|
+
from sage.categories.modules_with_basis import ModulesWithBasis
|
|
25
28
|
from sage.categories.morphism import SetMorphism
|
|
29
|
+
from sage.combinat.sf import sfa
|
|
26
30
|
from sage.misc.lazy_import import lazy_import
|
|
27
31
|
from sage.rings.rational_field import QQ
|
|
28
32
|
from sage.structure.unique_representation import UniqueRepresentation
|
|
29
33
|
|
|
30
|
-
from . import sfa
|
|
31
|
-
|
|
32
34
|
lazy_import('sage.libs.symmetrica.all', 'hall_littlewood')
|
|
33
35
|
lazy_import('sage.matrix.constructor', 'matrix')
|
|
34
36
|
|
|
@@ -234,7 +236,7 @@ class HallLittlewood(UniqueRepresentation):
|
|
|
234
236
|
Transitions between bases with the parameter `t` specialized::
|
|
235
237
|
|
|
236
238
|
sage: Sym = SymmetricFunctions(FractionField(QQ['y','z']))
|
|
237
|
-
sage:
|
|
239
|
+
sage: y, z = Sym.base_ring().gens()
|
|
238
240
|
sage: HLy = Sym.hall_littlewood(t=y)
|
|
239
241
|
sage: HLz = Sym.hall_littlewood(t=z)
|
|
240
242
|
sage: Qpy = HLy.Qp()
|
|
@@ -390,7 +392,7 @@ class HallLittlewood_generic(sfa.SymmetricFunctionAlgebra_generic):
|
|
|
390
392
|
# common category BasesByOrthotriangularity (shared with Jack, HL, orthotriang, Mcdo)
|
|
391
393
|
if hasattr(self, "_s_cache"):
|
|
392
394
|
# temporary until Hom(GradedHopfAlgebrasWithBasis work better)
|
|
393
|
-
category =
|
|
395
|
+
category = ModulesWithBasis(self._sym.base_ring())
|
|
394
396
|
self .register_coercion(SetMorphism(Hom(self._s, self, category), self._s_to_self))
|
|
395
397
|
self._s.register_coercion(SetMorphism(Hom(self, self._s, category), self._self_to_s))
|
|
396
398
|
|
|
@@ -862,7 +864,7 @@ class HallLittlewood_q(HallLittlewood_generic):
|
|
|
862
864
|
|
|
863
865
|
self._P = self._hall_littlewood.P()
|
|
864
866
|
# temporary until Hom(GradedHopfAlgebrasWithBasis work better)
|
|
865
|
-
category =
|
|
867
|
+
category = ModulesWithBasis(self.base_ring())
|
|
866
868
|
|
|
867
869
|
phi = self.module_morphism(diagonal=self._P._q_to_p_normalization,
|
|
868
870
|
codomain=self._P, category=category)
|
sage/combinat/sf/homogeneous.py
CHANGED
|
@@ -6,7 +6,7 @@ Homogeneous symmetric functions
|
|
|
6
6
|
By this we mean the basis formed of the complete homogeneous
|
|
7
7
|
symmetric functions `h_\lambda`, not an arbitrary graded basis.
|
|
8
8
|
"""
|
|
9
|
-
|
|
9
|
+
# ***************************************************************************
|
|
10
10
|
# Copyright (C) 2007 Mike Hansen <mhansen@gmail.com>
|
|
11
11
|
# 2012 Mike Zabrocki <mike.zabrocki@gmail.com>
|
|
12
12
|
#
|
|
@@ -19,8 +19,8 @@ symmetric functions `h_\lambda`, not an arbitrary graded basis.
|
|
|
19
19
|
#
|
|
20
20
|
# The full text of the GPL is available at:
|
|
21
21
|
#
|
|
22
|
-
#
|
|
23
|
-
|
|
22
|
+
# https://www.gnu.org/licenses/
|
|
23
|
+
# ***************************************************************************
|
|
24
24
|
|
|
25
25
|
####################################
|
|
26
26
|
# #
|
|
@@ -305,6 +305,9 @@ class SymmetricFunctionAlgebra_homogeneous(multiplicative.SymmetricFunctionAlgeb
|
|
|
305
305
|
sage: s = x.principal_specialization(3); s
|
|
306
306
|
0
|
|
307
307
|
"""
|
|
308
|
+
if n == 1:
|
|
309
|
+
return self.base_ring().sum(self.coefficients(sort=False))
|
|
310
|
+
|
|
308
311
|
from sage.combinat.q_analogues import q_binomial
|
|
309
312
|
|
|
310
313
|
def get_variable(ring, name):
|
sage/combinat/sf/jack.py
CHANGED
|
@@ -31,10 +31,10 @@ REFERENCES:
|
|
|
31
31
|
# https://www.gnu.org/licenses/
|
|
32
32
|
# ****************************************************************************
|
|
33
33
|
|
|
34
|
-
import sage.categories.all
|
|
35
34
|
from sage.arith.functions import lcm
|
|
36
35
|
from sage.arith.misc import gcd
|
|
37
36
|
from sage.categories.homset import End, Hom
|
|
37
|
+
from sage.categories.modules_with_basis import ModulesWithBasis
|
|
38
38
|
from sage.categories.morphism import SetMorphism
|
|
39
39
|
from sage.misc.misc_c import prod
|
|
40
40
|
from sage.rings.fraction_field import FractionField, FractionField_generic
|
|
@@ -202,7 +202,7 @@ class Jack(UniqueRepresentation):
|
|
|
202
202
|
::
|
|
203
203
|
|
|
204
204
|
sage: Sym = SymmetricFunctions(QQ['a','b'].fraction_field())
|
|
205
|
-
sage:
|
|
205
|
+
sage: a, b = Sym.base_ring().gens()
|
|
206
206
|
sage: Jacka = Sym.jack(t=a)
|
|
207
207
|
sage: Jackb = Sym.jack(t=b)
|
|
208
208
|
sage: m = Sym.monomial()
|
|
@@ -526,13 +526,13 @@ class JackPolynomials_generic(sfa.SymmetricFunctionAlgebra_generic):
|
|
|
526
526
|
# common category BasesByOrthotriangularity (shared with Jack, HL, orthotriang, Mcdo)
|
|
527
527
|
if hasattr(self, "_m_cache"):
|
|
528
528
|
# temporary until Hom(GradedHopfAlgebrasWithBasis work better)
|
|
529
|
-
category =
|
|
529
|
+
category = ModulesWithBasis(self._sym.base_ring())
|
|
530
530
|
self._m = self._sym.monomial()
|
|
531
531
|
self .register_coercion(SetMorphism(Hom(self._m, self, category), self._m_to_self))
|
|
532
532
|
self._m.register_coercion(SetMorphism(Hom(self, self._m, category), self._self_to_m))
|
|
533
533
|
if hasattr(self, "_h_cache"):
|
|
534
534
|
# temporary until Hom(GradedHopfAlgebrasWithBasis work better)
|
|
535
|
-
category =
|
|
535
|
+
category = ModulesWithBasis(self._sym.base_ring())
|
|
536
536
|
self._h = self._sym.homogeneous()
|
|
537
537
|
self .register_coercion(SetMorphism(Hom(self._h, self, category), self._h_to_self))
|
|
538
538
|
self._h.register_coercion(SetMorphism(Hom(self, self._h, category), self._self_to_h))
|
|
@@ -910,12 +910,14 @@ class JackPolynomials_p(JackPolynomials_generic):
|
|
|
910
910
|
([3],
|
|
911
911
|
[([1, 1, 1], 3/(t^2 + 3/2*t + 1/2)), ([2, 1], 3/2/(t + 1/2)), ([3], 1)])]
|
|
912
912
|
"""
|
|
913
|
+
from sage.combinat.sf.sf import SymmetricFunctions
|
|
914
|
+
|
|
913
915
|
if n in self._self_to_m_cache:
|
|
914
916
|
return
|
|
915
917
|
self._self_to_m_cache[n] = {}
|
|
916
918
|
t = QQt.gen()
|
|
917
|
-
monomial =
|
|
918
|
-
JP =
|
|
919
|
+
monomial = SymmetricFunctions(QQt).monomial()
|
|
920
|
+
JP = SymmetricFunctions(QQt).jack().P()
|
|
919
921
|
JP._gram_schmidt(n, monomial, lambda p: part_scalar_jack(p, p, t),
|
|
920
922
|
self._self_to_m_cache[n], upper_triangular=True)
|
|
921
923
|
JP._invert_morphism(n, QQt, self._self_to_m_cache,
|
|
@@ -1083,7 +1085,7 @@ class JackPolynomials_j(JackPolynomials_generic):
|
|
|
1083
1085
|
# Should be shared with _q (and possibly other bases in Macdo/HL) as BasesByRenormalization
|
|
1084
1086
|
self._P = self._jack.P()
|
|
1085
1087
|
# temporary until Hom(GradedHopfAlgebrasWithBasis) works better
|
|
1086
|
-
category =
|
|
1088
|
+
category = ModulesWithBasis(self.base_ring())
|
|
1087
1089
|
phi = self.module_morphism(diagonal=self.c1,
|
|
1088
1090
|
codomain=self._P, category=category)
|
|
1089
1091
|
# should use module_morphism(on_coeffs = ...) once it exists
|
|
@@ -1120,7 +1122,7 @@ class JackPolynomials_q(JackPolynomials_generic):
|
|
|
1120
1122
|
# Should be shared with _j (and possibly other bases in Macdo/HL) as BasesByRenormalization
|
|
1121
1123
|
self._P = self._jack.P()
|
|
1122
1124
|
# temporary until Hom(GradedHopfAlgebrasWithBasis) works better
|
|
1123
|
-
category =
|
|
1125
|
+
category = ModulesWithBasis(self.base_ring())
|
|
1124
1126
|
phi = self._P.module_morphism(diagonal=self._P.scalar_jack_basis,
|
|
1125
1127
|
codomain=self, category=category)
|
|
1126
1128
|
self.register_coercion(self._normalize_morphism(category) * phi)
|
|
@@ -1353,7 +1355,7 @@ class SymmetricFunctionAlgebra_zonal(sfa.SymmetricFunctionAlgebra_generic):
|
|
|
1353
1355
|
#self._self_to_m_cache = {} and we don't need to compute it separately for zonals
|
|
1354
1356
|
sfa.SymmetricFunctionAlgebra_generic.__init__(self, self._sym,
|
|
1355
1357
|
prefix='Z', basis_name='zonal')
|
|
1356
|
-
category =
|
|
1358
|
+
category = ModulesWithBasis(self._sym.base_ring())
|
|
1357
1359
|
self .register_coercion(SetMorphism(Hom(self._P, self, category), self.sum_of_terms))
|
|
1358
1360
|
self._P.register_coercion(SetMorphism(Hom(self, self._P, category), self._P.sum_of_terms))
|
|
1359
1361
|
|
sage/combinat/sf/llt.py
CHANGED
|
@@ -33,15 +33,15 @@ REFERENCES:
|
|
|
33
33
|
# ****************************************************************************
|
|
34
34
|
import sage.combinat.skew_partition
|
|
35
35
|
from sage.categories.homset import Hom
|
|
36
|
+
from sage.categories.modules_with_basis import ModulesWithBasis
|
|
36
37
|
from sage.categories.morphism import SetMorphism
|
|
37
38
|
from sage.combinat import ribbon_tableau
|
|
38
39
|
from sage.combinat.partition import Partition, Partitions, _Partitions
|
|
40
|
+
from sage.combinat.sf import sfa
|
|
39
41
|
from sage.rings.integer_ring import ZZ
|
|
40
42
|
from sage.rings.rational_field import QQ
|
|
41
43
|
from sage.structure.unique_representation import UniqueRepresentation
|
|
42
44
|
|
|
43
|
-
from . import sfa
|
|
44
|
-
|
|
45
45
|
# cache for H spin basis
|
|
46
46
|
hsp_to_m_cache = {}
|
|
47
47
|
m_to_hsp_cache = {}
|
|
@@ -75,7 +75,7 @@ class LLT_class(UniqueRepresentation):
|
|
|
75
75
|
|
|
76
76
|
sage: # needs sage.symbolic
|
|
77
77
|
sage: Symxt = SymmetricFunctions(QQ['x','t'].fraction_field())
|
|
78
|
-
sage:
|
|
78
|
+
sage: x, t = Symxt.base_ring().gens()
|
|
79
79
|
sage: LLT3x = Symxt.llt(3,t=x)
|
|
80
80
|
sage: LLT3 = Symxt.llt(3)
|
|
81
81
|
sage: HS3x = LLT3x.hspin()
|
|
@@ -411,7 +411,6 @@ class LLT_class(UniqueRepresentation):
|
|
|
411
411
|
in the level 3 LLT spin basis
|
|
412
412
|
sage: HSp3([1])^2
|
|
413
413
|
HSp3[1, 1] + (-t+1)*HSp3[2]
|
|
414
|
-
|
|
415
414
|
sage: s = Sym.schur()
|
|
416
415
|
sage: HSp3(s([2]))
|
|
417
416
|
HSp3[2]
|
|
@@ -463,7 +462,7 @@ class LLT_generic(sfa.SymmetricFunctionAlgebra_generic):
|
|
|
463
462
|
sfa.SymmetricFunctionAlgebra_generic.__init__(self, self._sym, self._basis_name)
|
|
464
463
|
|
|
465
464
|
# temporary until Hom(GradedHopfAlgebrasWithBasis work better)
|
|
466
|
-
category =
|
|
465
|
+
category = ModulesWithBasis(self._sym.base_ring())
|
|
467
466
|
self._m = llt._sym.m()
|
|
468
467
|
self .register_coercion(SetMorphism(Hom(self._m, self, category), self._m_to_self))
|
|
469
468
|
self._m.register_coercion(SetMorphism(Hom(self, self._m, category), self._self_to_m))
|
sage/combinat/sf/macdonald.py
CHANGED
|
@@ -34,7 +34,7 @@ REFERENCES:
|
|
|
34
34
|
Journal of Algebra and Computation, Volume 23, Issue 4, (2013), pp. 833-852.
|
|
35
35
|
"""
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
# ***************************************************************************
|
|
38
38
|
# Copyright (C) 2007 Mike Hansen <mhansen@gmail.com>,
|
|
39
39
|
#
|
|
40
40
|
# Distributed under the terms of the GNU General Public License (GPL)
|
|
@@ -46,8 +46,8 @@ REFERENCES:
|
|
|
46
46
|
#
|
|
47
47
|
# The full text of the GPL is available at:
|
|
48
48
|
#
|
|
49
|
-
#
|
|
50
|
-
|
|
49
|
+
# https://www.gnu.org/licenses/
|
|
50
|
+
# ***************************************************************************
|
|
51
51
|
|
|
52
52
|
import functools
|
|
53
53
|
|
|
@@ -273,7 +273,7 @@ class Macdonald(UniqueRepresentation):
|
|
|
273
273
|
::
|
|
274
274
|
|
|
275
275
|
sage: Sym = SymmetricFunctions(QQ['x','y','z'].fraction_field())
|
|
276
|
-
sage:
|
|
276
|
+
sage: x, y, z = Sym.base_ring().gens()
|
|
277
277
|
sage: Macxy = Sym.macdonald(q=x,t=y)
|
|
278
278
|
sage: Macyz = Sym.macdonald(q=y,t=z)
|
|
279
279
|
sage: Maczx = Sym.macdonald(q=z,t=x)
|
|
@@ -1292,7 +1292,7 @@ class MacdonaldPolynomials_h(MacdonaldPolynomials_generic):
|
|
|
1292
1292
|
sage: s = Sym.s()
|
|
1293
1293
|
sage: H(s[1,1])
|
|
1294
1294
|
-(1/(q*t-1))*McdH[1, 1] + (t/(q*t-1))*McdH[2]
|
|
1295
|
-
sage:
|
|
1295
|
+
sage: q, t = Sym.base_ring().gens()
|
|
1296
1296
|
sage: H(q*s[1, 1, 1] + (q*t+1)*s[2, 1] + t*s[3])
|
|
1297
1297
|
McdH[2, 1]
|
|
1298
1298
|
sage: H2 = Sym.macdonald(t=0).H()
|
|
@@ -1380,7 +1380,7 @@ class MacdonaldPolynomials_h(MacdonaldPolynomials_generic):
|
|
|
1380
1380
|
sage: m = Sym.m()
|
|
1381
1381
|
sage: H(m[1,1])
|
|
1382
1382
|
-(1/(q*t-1))*McdH[1, 1] + (t/(q*t-1))*McdH[2]
|
|
1383
|
-
sage:
|
|
1383
|
+
sage: q, t = Sym.base_ring().gens()
|
|
1384
1384
|
sage: H((2*q*t+q+t+2)*m[1, 1, 1] + (q*t+t+1)*m[2, 1] + t*m[3])
|
|
1385
1385
|
McdH[2, 1]
|
|
1386
1386
|
|
|
@@ -1602,7 +1602,7 @@ class MacdonaldPolynomials_ht(MacdonaldPolynomials_generic):
|
|
|
1602
1602
|
sage: m = Sym.m()
|
|
1603
1603
|
sage: Ht(m[1,1])
|
|
1604
1604
|
(1/(-q+t))*McdHt[1, 1] - (1/(-q+t))*McdHt[2]
|
|
1605
|
-
sage:
|
|
1605
|
+
sage: q, t = Sym.base_ring().gens()
|
|
1606
1606
|
sage: Ht((q*t+2*q+2*t+1)*m[1, 1, 1] + (q+t+1)*m[2, 1] + m[3])
|
|
1607
1607
|
McdHt[2, 1]
|
|
1608
1608
|
|
|
@@ -1770,14 +1770,13 @@ class MacdonaldPolynomials_s(MacdonaldPolynomials_generic):
|
|
|
1770
1770
|
(q*t - t^2 - q + t)/(-q^3 + q^2 + q - 1)
|
|
1771
1771
|
"""
|
|
1772
1772
|
# Convert to the power sum
|
|
1773
|
-
|
|
1773
|
+
q, t = QQqt.gens()
|
|
1774
1774
|
p = self._sym.p()
|
|
1775
1775
|
s = self._s
|
|
1776
1776
|
p_x = p(s(part))
|
|
1777
1777
|
f = lambda m, c: (m, c * prod([(1 - t**k) / (1 - q**k) for k in m]))
|
|
1778
1778
|
res = s(p_x.map_item(f))
|
|
1779
|
-
|
|
1780
|
-
return f
|
|
1779
|
+
return res.coefficient
|
|
1781
1780
|
|
|
1782
1781
|
def _s_cache(self, n):
|
|
1783
1782
|
r"""
|
|
@@ -1835,7 +1834,7 @@ class MacdonaldPolynomials_s(MacdonaldPolynomials_generic):
|
|
|
1835
1834
|
sage: a._creation_by_determinant_helper(2,[1])
|
|
1836
1835
|
(q^3*t-q^2*t-q+1)*McdS[2, 1] + (q^3-q^2*t-q+t)*McdS[3]
|
|
1837
1836
|
"""
|
|
1838
|
-
|
|
1837
|
+
q, t = QQqt.gens()
|
|
1839
1838
|
from sage.combinat.sf.sf import SymmetricFunctions
|
|
1840
1839
|
S = SymmetricFunctions(QQqt).macdonald().S()
|
|
1841
1840
|
|
sage/combinat/sf/monomial.py
CHANGED
|
@@ -403,6 +403,12 @@ class SymmetricFunctionAlgebra_monomial(classical.SymmetricFunctionAlgebra_class
|
|
|
403
403
|
sage: m.zero().principal_specialization(3)
|
|
404
404
|
0
|
|
405
405
|
"""
|
|
406
|
+
if n == 1:
|
|
407
|
+
R = self.base_ring()
|
|
408
|
+
mc = self.monomial_coefficients(copy=False).items()
|
|
409
|
+
return R.sum(c for partition, c in mc
|
|
410
|
+
if len(partition) <= 1)
|
|
411
|
+
|
|
406
412
|
if q == 1:
|
|
407
413
|
if n == infinity:
|
|
408
414
|
raise ValueError("the stable principal specialization at q=1 is not defined")
|
sage/combinat/sf/ns_macdonald.py
CHANGED
|
@@ -61,7 +61,7 @@ class LatticeDiagram(CombinatorialObject):
|
|
|
61
61
|
|
|
62
62
|
def leg(self, i, j):
|
|
63
63
|
"""
|
|
64
|
-
Return the leg of the box ``(i,j)`` in ``self``.
|
|
64
|
+
Return the leg of the box ``(i, j)`` in ``self``.
|
|
65
65
|
|
|
66
66
|
EXAMPLES::
|
|
67
67
|
|
|
@@ -73,7 +73,7 @@ class LatticeDiagram(CombinatorialObject):
|
|
|
73
73
|
|
|
74
74
|
def arm_left(self, i, j):
|
|
75
75
|
"""
|
|
76
|
-
Return the left arm of the box ``(i,j)`` in ``self``.
|
|
76
|
+
Return the left arm of the box ``(i, j)`` in ``self``.
|
|
77
77
|
|
|
78
78
|
EXAMPLES::
|
|
79
79
|
|
|
@@ -85,7 +85,7 @@ class LatticeDiagram(CombinatorialObject):
|
|
|
85
85
|
|
|
86
86
|
def arm_right(self, i, j):
|
|
87
87
|
"""
|
|
88
|
-
Return the right arm of the box ``(i,j)`` in ``self``.
|
|
88
|
+
Return the right arm of the box ``(i, j)`` in ``self``.
|
|
89
89
|
|
|
90
90
|
EXAMPLES::
|
|
91
91
|
|
|
@@ -98,7 +98,7 @@ class LatticeDiagram(CombinatorialObject):
|
|
|
98
98
|
|
|
99
99
|
def arm(self, i, j):
|
|
100
100
|
"""
|
|
101
|
-
Return the arm of the box ``(i,j)`` in ``self``.
|
|
101
|
+
Return the arm of the box ``(i, j)`` in ``self``.
|
|
102
102
|
|
|
103
103
|
EXAMPLES::
|
|
104
104
|
|
|
@@ -122,7 +122,7 @@ class LatticeDiagram(CombinatorialObject):
|
|
|
122
122
|
|
|
123
123
|
def a(self, i, j):
|
|
124
124
|
"""
|
|
125
|
-
Return the length of the arm of the box ``(i,j)`` in ``self``.
|
|
125
|
+
Return the length of the arm of the box ``(i, j)`` in ``self``.
|
|
126
126
|
|
|
127
127
|
EXAMPLES::
|
|
128
128
|
|
|
@@ -145,9 +145,11 @@ class LatticeDiagram(CombinatorialObject):
|
|
|
145
145
|
return sum(self._list)
|
|
146
146
|
|
|
147
147
|
def flip(self):
|
|
148
|
-
"""
|
|
149
|
-
Return the flip of ``self
|
|
150
|
-
|
|
148
|
+
r"""
|
|
149
|
+
Return the flip of ``self``.
|
|
150
|
+
|
|
151
|
+
The flip map is defined as follows. Let ``r = max(self)``.
|
|
152
|
+
Then ``self.flip()[i] = r - self[i]``.
|
|
151
153
|
|
|
152
154
|
EXAMPLES::
|
|
153
155
|
|
|
@@ -244,24 +246,26 @@ class AugmentedLatticeDiagramFilling(CombinatorialObject):
|
|
|
244
246
|
for i in range(1, len(self) + 1)])
|
|
245
247
|
|
|
246
248
|
def __contains__(self, ij):
|
|
247
|
-
"""
|
|
248
|
-
Return ``True`` if the box ``(i,j) (= ij)`` is in ``self``.
|
|
249
|
-
|
|
249
|
+
r"""
|
|
250
|
+
Return ``True`` if the box ``(i, j) (= ij)`` is in ``self``.
|
|
251
|
+
|
|
252
|
+
Note that this does not include the basement row.
|
|
250
253
|
|
|
251
254
|
EXAMPLES::
|
|
252
255
|
|
|
253
256
|
sage: a = AugmentedLatticeDiagramFilling([[1,6],[2],[3,4,2],[],[],[5,5]])
|
|
254
|
-
sage: (1,1) in a
|
|
257
|
+
sage: (1, 1) in a
|
|
255
258
|
True
|
|
256
|
-
sage: (1,0) in a
|
|
259
|
+
sage: (1, 0) in a
|
|
257
260
|
False
|
|
258
261
|
"""
|
|
259
262
|
i, j = ij
|
|
260
263
|
return 0 < i <= len(self) and 0 < j <= len(self[i])
|
|
261
264
|
|
|
262
265
|
def are_attacking(self, i, j, ii, jj):
|
|
263
|
-
"""
|
|
264
|
-
Return ``True`` if the boxes ``(i,j)`` and ``(ii,jj)`` in ``self``
|
|
266
|
+
r"""
|
|
267
|
+
Return ``True`` if the boxes ``(i, j)`` and ``(ii, jj)`` in ``self``
|
|
268
|
+
are attacking.
|
|
265
269
|
|
|
266
270
|
EXAMPLES::
|
|
267
271
|
|
|
@@ -353,10 +357,7 @@ class AugmentedLatticeDiagramFilling(CombinatorialObject):
|
|
|
353
357
|
sage: a.is_non_attacking()
|
|
354
358
|
True
|
|
355
359
|
"""
|
|
356
|
-
for a, b in self.attacking_boxes()
|
|
357
|
-
if self[a] == self[b]:
|
|
358
|
-
return False
|
|
359
|
-
return True
|
|
360
|
+
return all(self[a] != self[b] for a, b in self.attacking_boxes())
|
|
360
361
|
|
|
361
362
|
def weight(self):
|
|
362
363
|
"""
|
|
@@ -480,24 +481,30 @@ class AugmentedLatticeDiagramFilling(CombinatorialObject):
|
|
|
480
481
|
return res
|
|
481
482
|
|
|
482
483
|
def _inv_aux(self):
|
|
483
|
-
"""
|
|
484
|
+
r"""
|
|
484
485
|
EXAMPLES::
|
|
485
486
|
|
|
486
487
|
sage: a = AugmentedLatticeDiagramFilling([[1,6],[2],[3,4,2],[],[],[5,5]])
|
|
487
488
|
sage: a._inv_aux()
|
|
488
489
|
7
|
|
490
|
+
|
|
491
|
+
sage: data = [[1,6],[],[3,4,2],[5,5]]
|
|
492
|
+
sage: [AugmentedLatticeDiagramFilling(data, pi=pi)._inv_aux()
|
|
493
|
+
....: for pi in Permutations(4)]
|
|
494
|
+
[4, 4, 3, 3, 2, 2, 4, 4, 2, 2, 1, 1,
|
|
495
|
+
3, 3, 2, 2, 0, 0, 2, 2, 1, 1, 0, 0]
|
|
489
496
|
"""
|
|
490
497
|
res = 0
|
|
491
498
|
shape = self.shape()
|
|
492
499
|
for i in range(1, len(self) + 1):
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
500
|
+
a = self._list[i-1][0]
|
|
501
|
+
res += sum(1 for j in range(i + 1, len(self) + 1)
|
|
502
|
+
if shape[i] <= shape[j] and a < self._list[j-1][0])
|
|
496
503
|
return res
|
|
497
504
|
|
|
498
505
|
def inv(self):
|
|
499
|
-
"""
|
|
500
|
-
Return
|
|
506
|
+
r"""
|
|
507
|
+
Return the inversion statistic of ``self``.
|
|
501
508
|
|
|
502
509
|
EXAMPLES::
|
|
503
510
|
|
|
@@ -512,7 +519,7 @@ class AugmentedLatticeDiagramFilling(CombinatorialObject):
|
|
|
512
519
|
|
|
513
520
|
def coinv(self):
|
|
514
521
|
"""
|
|
515
|
-
Return
|
|
522
|
+
Return the co-inversion statistic of ``self``.
|
|
516
523
|
|
|
517
524
|
EXAMPLES::
|
|
518
525
|
|
|
@@ -524,10 +531,10 @@ class AugmentedLatticeDiagramFilling(CombinatorialObject):
|
|
|
524
531
|
return sum(shape.a(i, j) for i, j in shape.boxes()) - self.inv()
|
|
525
532
|
|
|
526
533
|
def coeff(self, q, t):
|
|
527
|
-
"""
|
|
534
|
+
r"""
|
|
528
535
|
Return the coefficient in front of ``self`` in the HHL formula for the
|
|
529
536
|
expansion of the non-symmetric Macdonald polynomial
|
|
530
|
-
E(self.shape())
|
|
537
|
+
``E(self.shape())``.
|
|
531
538
|
|
|
532
539
|
EXAMPLES::
|
|
533
540
|
|
|
@@ -536,19 +543,15 @@ class AugmentedLatticeDiagramFilling(CombinatorialObject):
|
|
|
536
543
|
sage: a.coeff(q,t) # needs sage.symbolic
|
|
537
544
|
(t - 1)^4/((q^2*t^3 - 1)^2*(q*t^2 - 1)^2)
|
|
538
545
|
"""
|
|
539
|
-
res = 1
|
|
540
546
|
shape = self.shape()
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
res *= (1 - t) / (1 - q**(shape.l(i, j) + 1)
|
|
544
|
-
* t**(shape.a(i, j) + 1))
|
|
545
|
-
return res
|
|
547
|
+
return prod((1 - t) / (1 - q**(shape.l(i, j) + 1) * t**(shape.a(i, j) + 1))
|
|
548
|
+
for i, j in shape.boxes() if self[i, j] != self[i, j - 1])
|
|
546
549
|
|
|
547
550
|
def coeff_integral(self, q, t):
|
|
548
|
-
"""
|
|
551
|
+
r"""
|
|
549
552
|
Return the coefficient in front of ``self`` in the HHL formula for the
|
|
550
553
|
expansion of the integral non-symmetric Macdonald polynomial
|
|
551
|
-
E(self.shape())
|
|
554
|
+
``E(self.shape())``.
|
|
552
555
|
|
|
553
556
|
EXAMPLES::
|
|
554
557
|
|
|
@@ -569,24 +572,26 @@ class AugmentedLatticeDiagramFilling(CombinatorialObject):
|
|
|
569
572
|
|
|
570
573
|
def permuted_filling(self, sigma):
|
|
571
574
|
"""
|
|
575
|
+
Return the filling given by permuting the entries of ``self``
|
|
576
|
+
by ``sigma``.
|
|
577
|
+
|
|
572
578
|
EXAMPLES::
|
|
573
579
|
|
|
574
|
-
sage: pi=Permutation([2,1,4,3]).to_permutation_group_element()
|
|
575
|
-
sage: fill=[[2],[1,2,3],[],[3,1]]
|
|
580
|
+
sage: pi = Permutation([2,1,4,3]).to_permutation_group_element()
|
|
581
|
+
sage: fill = [[2],[1,2,3],[],[3,1]]
|
|
576
582
|
sage: AugmentedLatticeDiagramFilling(fill).permuted_filling(pi)
|
|
577
583
|
[[2, 1], [1, 2, 1, 4], [4], [3, 4, 2]]
|
|
578
584
|
"""
|
|
579
585
|
new_filling = []
|
|
580
586
|
for col in self:
|
|
581
|
-
nc = [sigma(x) for x in col]
|
|
582
|
-
nc.pop(0)
|
|
587
|
+
nc = [sigma(x) for x in col[1:]]
|
|
583
588
|
new_filling.append(nc)
|
|
584
589
|
return AugmentedLatticeDiagramFilling(new_filling, sigma)
|
|
585
590
|
|
|
586
591
|
|
|
587
592
|
def NonattackingFillings(shape, pi=None):
|
|
588
593
|
"""
|
|
589
|
-
|
|
594
|
+
Return the finite set of nonattacking fillings of a
|
|
590
595
|
given shape.
|
|
591
596
|
|
|
592
597
|
EXAMPLES::
|
|
@@ -621,17 +626,16 @@ class NonattackingFillings_shape(Parent, UniqueRepresentation):
|
|
|
621
626
|
"""
|
|
622
627
|
self.pi = pi
|
|
623
628
|
self._shape = LatticeDiagram(shape)
|
|
624
|
-
self._name = "Nonattacking fillings of %s" % list(shape)
|
|
625
629
|
Parent.__init__(self, category=FiniteEnumeratedSets())
|
|
626
630
|
|
|
627
|
-
def
|
|
631
|
+
def _repr_(self):
|
|
628
632
|
"""
|
|
629
633
|
EXAMPLES::
|
|
630
634
|
|
|
631
635
|
sage: NonattackingFillings([0,1,2])
|
|
632
636
|
Nonattacking fillings of [0, 1, 2]
|
|
633
637
|
"""
|
|
634
|
-
return self.
|
|
638
|
+
return "Nonattacking fillings of %s" % list(self._shape)
|
|
635
639
|
|
|
636
640
|
def flip(self):
|
|
637
641
|
"""
|
|
@@ -834,7 +838,7 @@ def _check_muqt(mu, q, t, pi=None):
|
|
|
834
838
|
|
|
835
839
|
|
|
836
840
|
def E(mu, q=None, t=None, pi=None):
|
|
837
|
-
"""
|
|
841
|
+
r"""
|
|
838
842
|
Return the non-symmetric Macdonald polynomial in type A
|
|
839
843
|
corresponding to a shape ``mu``, with basement permuted according to
|
|
840
844
|
``pi``.
|
|
@@ -876,9 +880,24 @@ def E(mu, q=None, t=None, pi=None):
|
|
|
876
880
|
x0^2 + (q*t - q)/(q*t - 1)*x0*x1 + (q*t - q)/(q*t - 1)*x0*x2
|
|
877
881
|
sage: E([0,2,0])
|
|
878
882
|
(t - 1)/(q^2*t^2 - 1)*x0^2 + (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 + x1^2 + (q*t^2 - 2*q*t + q)/(q^3*t^3 - q^2*t^2 - q*t + 1)*x0*x2 + (q*t - q)/(q*t - 1)*x1*x2
|
|
883
|
+
|
|
884
|
+
sage: [E([1,0,1], pi=pi) for pi in Permutations(3)]
|
|
885
|
+
[(t - 1)/(q*t^2 - 1)*x0*x1 + x0*x2,
|
|
886
|
+
x0*x1 + (q*t^2 - q*t)/(q*t^2 - 1)*x0*x2,
|
|
887
|
+
(t^2 - t)/(q*t^2 - 1)*x0*x1 + x1*x2,
|
|
888
|
+
x0*x1 + (q*t - q)/(q*t^2 - 1)*x1*x2,
|
|
889
|
+
(t - 1)/(q*t^2 - 1)*x0*x2 + x1*x2,
|
|
890
|
+
x0*x2 + (q*t^2 - q*t)/(q*t^2 - 1)*x1*x2]
|
|
891
|
+
|
|
892
|
+
TESTS::
|
|
893
|
+
|
|
894
|
+
sage: from sage.combinat.sf.ns_macdonald import E
|
|
895
|
+
sage: E([]).parent()
|
|
896
|
+
Multivariate Polynomial Ring in no variables over Fraction Field
|
|
897
|
+
of Multivariate Polynomial Ring in q, t over Rational Field
|
|
879
898
|
"""
|
|
880
899
|
P, q, t, n, R, x = _check_muqt(mu, q, t, pi)
|
|
881
|
-
res =
|
|
900
|
+
res = R.zero()
|
|
882
901
|
for a in n:
|
|
883
902
|
weight = a.weight()
|
|
884
903
|
res += q**a.maj() * t**a.coinv() * a.coeff(q, t) * prod(x[i]**weight[i] for i in range(len(weight)))
|
|
@@ -886,11 +905,11 @@ def E(mu, q=None, t=None, pi=None):
|
|
|
886
905
|
|
|
887
906
|
|
|
888
907
|
def E_integral(mu, q=None, t=None, pi=None):
|
|
889
|
-
"""
|
|
908
|
+
r"""
|
|
890
909
|
Return the integral form for the non-symmetric Macdonald
|
|
891
910
|
polynomial in type A corresponding to a shape mu.
|
|
892
911
|
|
|
893
|
-
Note that if both q and t are specified, then they must have the
|
|
912
|
+
Note that if both `q` and `t` are specified, then they must have the
|
|
894
913
|
same parent.
|
|
895
914
|
|
|
896
915
|
REFERENCE:
|
|
@@ -920,9 +939,24 @@ def E_integral(mu, q=None, t=None, pi=None):
|
|
|
920
939
|
(t^2 - 2*t + 1)*x0^2 + (q^2*t^2 - q^2*t - q*t + q)*x0*x1 + (q^2*t^2 - q^2*t - q*t + q)*x0*x2
|
|
921
940
|
sage: E_integral([0,2,0])
|
|
922
941
|
(q^2*t^3 - q^2*t^2 - t + 1)*x0^2 + (q^4*t^3 - q^3*t^2 - q^2*t + q*t^2 - q*t + q - t + 1)*x0*x1 + (t^2 - 2*t + 1)*x1^2 + (q^4*t^3 - q^3*t^2 - q^2*t + q)*x0*x2 + (q^2*t^2 - q^2*t - q*t + q)*x1*x2
|
|
942
|
+
|
|
943
|
+
sage: [E_integral([1,0,1], pi=pi) for pi in Permutations(3)]
|
|
944
|
+
[(q*t^3 - q*t^2 - t + 1)*x0*x1 + (t^2 - 2*t + 1)*x0*x2,
|
|
945
|
+
(t^2 - 2*t + 1)*x0*x1 + (q^2*t^4 - q^2*t^3 - q*t^2 + q*t)*x0*x2,
|
|
946
|
+
(q*t^4 - q*t^3 - t^2 + t)*x0*x1 + (t^2 - 2*t + 1)*x1*x2,
|
|
947
|
+
(t^2 - 2*t + 1)*x0*x1 + (q^2*t^3 - q^2*t^2 - q*t + q)*x1*x2,
|
|
948
|
+
(q*t^3 - q*t^2 - t + 1)*x0*x2 + (t^2 - 2*t + 1)*x1*x2,
|
|
949
|
+
(t^2 - 2*t + 1)*x0*x2 + (q^2*t^4 - q^2*t^3 - q*t^2 + q*t)*x1*x2]
|
|
950
|
+
|
|
951
|
+
TESTS::
|
|
952
|
+
|
|
953
|
+
sage: from sage.combinat.sf.ns_macdonald import E_integral
|
|
954
|
+
sage: E_integral([]).parent()
|
|
955
|
+
Multivariate Polynomial Ring in no variables over Fraction Field
|
|
956
|
+
of Multivariate Polynomial Ring in q, t over Rational Field
|
|
923
957
|
"""
|
|
924
958
|
P, q, t, n, R, x = _check_muqt(mu, q, t, pi)
|
|
925
|
-
res =
|
|
959
|
+
res = R.zero()
|
|
926
960
|
for a in n:
|
|
927
961
|
weight = a.weight()
|
|
928
962
|
res += q**a.maj() * t**a.coinv() * a.coeff_integral(q, t) * prod(x[i]**weight[i] for i in range(len(weight)))
|
|
@@ -930,7 +964,7 @@ def E_integral(mu, q=None, t=None, pi=None):
|
|
|
930
964
|
|
|
931
965
|
|
|
932
966
|
def Ht(mu, q=None, t=None, pi=None):
|
|
933
|
-
"""
|
|
967
|
+
r"""
|
|
934
968
|
Return the symmetric Macdonald polynomial using the Haiman,
|
|
935
969
|
Haglund, and Loehr formula.
|
|
936
970
|
|
|
@@ -955,9 +989,16 @@ def Ht(mu, q=None, t=None, pi=None):
|
|
|
955
989
|
x0^2 + (q + 1)*x0*x1 + x1^2 + (q + 1)*x0*x2 + (q + 1)*x1*x2 + x2^2
|
|
956
990
|
sage: HHt([2]).expand(3)
|
|
957
991
|
x0^2 + (q + 1)*x0*x1 + x1^2 + (q + 1)*x0*x2 + (q + 1)*x1*x2 + x2^2
|
|
992
|
+
|
|
993
|
+
TESTS::
|
|
994
|
+
|
|
995
|
+
sage: from sage.combinat.sf.ns_macdonald import Ht
|
|
996
|
+
sage: Ht([]).parent()
|
|
997
|
+
Multivariate Polynomial Ring in no variables over Fraction Field
|
|
998
|
+
of Multivariate Polynomial Ring in q, t over Rational Field
|
|
958
999
|
"""
|
|
959
1000
|
P, q, t, n, R, x = _check_muqt(mu, q, t, pi)
|
|
960
|
-
res =
|
|
1001
|
+
res = R.zero()
|
|
961
1002
|
for a in n:
|
|
962
1003
|
weight = a.weight()
|
|
963
1004
|
res += q**a.maj() * t**a.inv() * prod(x[i]**weight[i] for i in range(len(weight)))
|