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.
Files changed (221) hide show
  1. passagemath_combinat/__init__.py +3 -0
  2. {passagemath_combinat-10.6.1.dist-info → passagemath_combinat-10.8.1a1.dist-info}/METADATA +17 -20
  3. {passagemath_combinat-10.6.1.dist-info → passagemath_combinat-10.8.1a1.dist-info}/RECORD +220 -218
  4. {passagemath_combinat-10.6.1.dist-info → passagemath_combinat-10.8.1a1.dist-info}/WHEEL +1 -1
  5. passagemath_combinat-10.8.1a1.dist-info/top_level.txt +3 -0
  6. sage/algebras/affine_nil_temperley_lieb.py +3 -3
  7. sage/algebras/all.py +0 -1
  8. sage/algebras/askey_wilson.py +1 -1
  9. sage/algebras/associated_graded.py +2 -2
  10. sage/algebras/cellular_basis.py +3 -6
  11. sage/algebras/cluster_algebra.py +2 -3
  12. sage/algebras/down_up_algebra.py +6 -6
  13. sage/algebras/free_algebra.py +3 -32
  14. sage/algebras/free_algebra_element.py +21 -25
  15. sage/algebras/free_algebra_quotient_element.py +9 -38
  16. sage/algebras/free_zinbiel_algebra.py +4 -3
  17. sage/algebras/hall_algebra.py +2 -2
  18. sage/algebras/hecke_algebras/ariki_koike_algebra.py +8 -8
  19. sage/algebras/hecke_algebras/ariki_koike_specht_modules.py +2 -2
  20. sage/algebras/hecke_algebras/cubic_hecke_algebra.py +11 -14
  21. sage/algebras/hecke_algebras/cubic_hecke_base_ring.py +1 -1
  22. sage/algebras/hecke_algebras/cubic_hecke_matrix_rep.py +5 -5
  23. sage/algebras/iwahori_hecke_algebra.py +59 -57
  24. sage/algebras/jordan_algebra.py +97 -89
  25. sage/algebras/lie_conformal_algebras/abelian_lie_conformal_algebra.py +6 -6
  26. sage/algebras/lie_conformal_algebras/affine_lie_conformal_algebra.py +14 -12
  27. sage/algebras/lie_conformal_algebras/bosonic_ghosts_lie_conformal_algebra.py +6 -6
  28. sage/algebras/lie_conformal_algebras/fermionic_ghosts_lie_conformal_algebra.py +4 -4
  29. sage/algebras/lie_conformal_algebras/finitely_freely_generated_lca.py +13 -13
  30. sage/algebras/lie_conformal_algebras/free_bosons_lie_conformal_algebra.py +8 -6
  31. sage/algebras/lie_conformal_algebras/free_fermions_lie_conformal_algebra.py +7 -5
  32. sage/algebras/lie_conformal_algebras/freely_generated_lie_conformal_algebra.py +7 -7
  33. sage/algebras/lie_conformal_algebras/graded_lie_conformal_algebra.py +6 -5
  34. sage/algebras/lie_conformal_algebras/lie_conformal_algebra.py +12 -11
  35. sage/algebras/lie_conformal_algebras/lie_conformal_algebra_element.py +3 -3
  36. sage/algebras/lie_conformal_algebras/lie_conformal_algebra_with_basis.py +3 -3
  37. sage/algebras/lie_conformal_algebras/lie_conformal_algebra_with_structure_coefs.py +11 -11
  38. sage/algebras/lie_conformal_algebras/n2_lie_conformal_algebra.py +3 -3
  39. sage/algebras/lie_conformal_algebras/neveu_schwarz_lie_conformal_algebra.py +8 -7
  40. sage/algebras/lie_conformal_algebras/virasoro_lie_conformal_algebra.py +9 -8
  41. sage/algebras/lie_conformal_algebras/weyl_lie_conformal_algebra.py +6 -5
  42. sage/algebras/nil_coxeter_algebra.py +4 -4
  43. sage/algebras/q_commuting_polynomials.py +6 -6
  44. sage/algebras/q_system.py +3 -3
  45. sage/algebras/quantum_clifford.py +8 -8
  46. sage/algebras/quantum_groups/fock_space.py +48 -8
  47. sage/algebras/quantum_groups/quantum_group_gap.py +5 -7
  48. sage/algebras/quantum_matrix_coordinate_algebra.py +7 -7
  49. sage/algebras/quantum_oscillator.py +3 -3
  50. sage/algebras/quaternion_algebra_element.py +5 -3
  51. sage/algebras/schur_algebra.py +3 -3
  52. sage/algebras/shuffle_algebra.py +5 -8
  53. sage/algebras/splitting_algebra.py +129 -85
  54. sage/algebras/tensor_algebra.py +7 -7
  55. sage/algebras/yangian.py +16 -15
  56. sage/algebras/yokonuma_hecke_algebra.py +13 -11
  57. sage/combinat/all.py +9 -0
  58. sage/combinat/all__sagemath_combinat.py +1 -0
  59. sage/combinat/alternating_sign_matrix.py +36 -29
  60. sage/combinat/baxter_permutations.py +32 -12
  61. sage/combinat/bijectionist.py +13 -17
  62. sage/combinat/chas/fsym.py +6 -6
  63. sage/combinat/chas/wqsym.py +23 -29
  64. sage/combinat/colored_permutations.py +9 -11
  65. sage/combinat/colored_permutations_representations.py +13 -12
  66. sage/combinat/composition_tableau.py +2 -2
  67. sage/combinat/constellation.py +57 -30
  68. sage/combinat/crystals/affine_factorization.py +5 -4
  69. sage/combinat/crystals/alcove_path.py +2 -2
  70. sage/combinat/crystals/fully_commutative_stable_grothendieck.py +3 -2
  71. sage/combinat/crystals/infinity_crystals.py +18 -18
  72. sage/combinat/crystals/kac_modules.py +1 -1
  73. sage/combinat/crystals/kirillov_reshetikhin.py +2 -2
  74. sage/combinat/crystals/letters.cpython-312-aarch64-linux-musl.so +0 -0
  75. sage/combinat/crystals/littelmann_path.py +1 -1
  76. sage/combinat/crystals/pbw_datum.cpython-312-aarch64-linux-musl.so +0 -0
  77. sage/combinat/crystals/pbw_datum.pyx +3 -2
  78. sage/combinat/crystals/spins.cpython-312-aarch64-linux-musl.so +0 -0
  79. sage/combinat/crystals/tensor_product.py +7 -5
  80. sage/combinat/crystals/tensor_product_element.cpython-312-aarch64-linux-musl.so +0 -0
  81. sage/combinat/debruijn_sequence.cpython-312-aarch64-linux-musl.so +0 -0
  82. sage/combinat/debruijn_sequence.pyx +1 -2
  83. sage/combinat/degree_sequences.cpython-312-aarch64-linux-musl.so +0 -0
  84. sage/combinat/degree_sequences.pyx +241 -188
  85. sage/combinat/derangements.py +28 -22
  86. sage/combinat/diagram_algebras.py +12 -14
  87. sage/combinat/dyck_word.py +15 -14
  88. sage/combinat/e_one_star.py +1 -1
  89. sage/combinat/expnums.cpython-312-aarch64-linux-musl.so +0 -0
  90. sage/combinat/fast_vector_partitions.cpython-312-aarch64-linux-musl.so +0 -0
  91. sage/combinat/fqsym.py +13 -19
  92. sage/combinat/free_dendriform_algebra.py +2 -2
  93. sage/combinat/free_prelie_algebra.py +2 -2
  94. sage/combinat/fully_commutative_elements.py +8 -8
  95. sage/combinat/fully_packed_loop.py +9 -9
  96. sage/combinat/gelfand_tsetlin_patterns.py +4 -5
  97. sage/combinat/gray_codes.py +3 -4
  98. sage/combinat/grossman_larson_algebras.py +2 -2
  99. sage/combinat/growth.py +13 -13
  100. sage/combinat/hall_polynomial.py +1 -1
  101. sage/combinat/hillman_grassl.py +1 -1
  102. sage/combinat/integer_matrices.py +5 -7
  103. sage/combinat/k_tableau.py +8 -7
  104. sage/combinat/kazhdan_lusztig.py +3 -3
  105. sage/combinat/key_polynomial.py +845 -298
  106. sage/combinat/knutson_tao_puzzles.py +11 -13
  107. sage/combinat/matrices/hadamard_matrix.py +1 -1
  108. sage/combinat/matrices/latin.py +75 -92
  109. sage/combinat/misc.py +3 -3
  110. sage/combinat/multiset_partition_into_sets_ordered.py +27 -10
  111. sage/combinat/ncsf_qsym/generic_basis_code.py +5 -5
  112. sage/combinat/ncsf_qsym/ncsf.py +6 -5
  113. sage/combinat/ncsf_qsym/qsym.py +9 -17
  114. sage/combinat/ncsym/ncsym.py +8 -12
  115. sage/combinat/nu_dyck_word.py +1 -1
  116. sage/combinat/parallelogram_polyomino.py +3 -5
  117. sage/combinat/parking_functions.py +6 -5
  118. sage/combinat/partition_algebra.py +22 -57
  119. sage/combinat/partition_kleshchev.py +4 -4
  120. sage/combinat/partition_tuple.py +12 -10
  121. sage/combinat/plane_partition.py +10 -13
  122. sage/combinat/positive_integer_semigroup_test.py +17 -0
  123. sage/combinat/q_bernoulli.cpython-312-aarch64-linux-musl.so +0 -0
  124. sage/combinat/quickref.py +2 -2
  125. sage/combinat/recognizable_series.py +2 -2
  126. sage/combinat/regular_sequence.py +7 -7
  127. sage/combinat/regular_sequence_bounded.py +15 -21
  128. sage/combinat/restricted_growth.py +3 -3
  129. sage/combinat/ribbon.py +3 -3
  130. sage/combinat/rigged_configurations/bijection.py +3 -3
  131. sage/combinat/rigged_configurations/rigged_partition.cpython-312-aarch64-linux-musl.so +0 -0
  132. sage/combinat/rsk.py +2 -0
  133. sage/combinat/schubert_polynomial.py +11 -2
  134. sage/combinat/set_partition.py +3 -7
  135. sage/combinat/set_partition_iterator.cpython-312-aarch64-linux-musl.so +0 -0
  136. sage/combinat/set_partition_iterator.pyx +0 -1
  137. sage/combinat/set_partition_ordered.py +2 -2
  138. sage/combinat/sf/classical.py +1 -1
  139. sage/combinat/sf/dual.py +4 -8
  140. sage/combinat/sf/elementary.py +13 -7
  141. sage/combinat/sf/hall_littlewood.py +10 -8
  142. sage/combinat/sf/homogeneous.py +6 -3
  143. sage/combinat/sf/jack.py +11 -9
  144. sage/combinat/sf/llt.py +4 -5
  145. sage/combinat/sf/macdonald.py +10 -11
  146. sage/combinat/sf/monomial.py +6 -0
  147. sage/combinat/sf/ns_macdonald.py +92 -51
  148. sage/combinat/sf/powersum.py +9 -14
  149. sage/combinat/sf/schur.py +6 -0
  150. sage/combinat/sf/sf.py +21 -19
  151. sage/combinat/sf/sfa.py +13 -64
  152. sage/combinat/shifted_primed_tableau.py +5 -7
  153. sage/combinat/shuffle.py +1 -1
  154. sage/combinat/sine_gordon.py +18 -38
  155. sage/combinat/skew_partition.py +9 -12
  156. sage/combinat/skew_tableau.py +2 -7
  157. sage/combinat/sloane_functions.py +1 -1
  158. sage/combinat/species/all.py +67 -2
  159. sage/combinat/species/characteristic_species.py +3 -0
  160. sage/combinat/species/composition_species.py +3 -0
  161. sage/combinat/species/cycle_species.py +4 -0
  162. sage/combinat/species/empty_species.py +3 -0
  163. sage/combinat/species/functorial_composition_species.py +3 -0
  164. sage/combinat/species/generating_series.py +3 -0
  165. sage/combinat/species/library.py +3 -0
  166. sage/combinat/species/linear_order_species.py +3 -0
  167. sage/combinat/species/partition_species.py +3 -0
  168. sage/combinat/species/permutation_species.py +4 -0
  169. sage/combinat/species/product_species.py +3 -0
  170. sage/combinat/species/recursive_species.py +3 -0
  171. sage/combinat/species/set_species.py +3 -0
  172. sage/combinat/species/species.py +13 -7
  173. sage/combinat/species/structure.py +8 -9
  174. sage/combinat/species/subset_species.py +3 -0
  175. sage/combinat/species/sum_species.py +3 -0
  176. sage/combinat/subword.py +4 -1
  177. sage/combinat/subword_complex.py +7 -7
  178. sage/combinat/subword_complex_c.cpython-312-aarch64-linux-musl.so +0 -0
  179. sage/combinat/superpartition.py +1 -1
  180. sage/combinat/symmetric_group_algebra.py +9 -9
  181. sage/combinat/symmetric_group_representations.py +5 -5
  182. sage/combinat/t_sequences.py +4 -4
  183. sage/combinat/tableau.py +3 -4
  184. sage/combinat/tableau_tuple.py +2 -2
  185. sage/combinat/tiling.py +39 -42
  186. sage/combinat/triangles_FHM.py +38 -15
  187. sage/combinat/tutorial.py +2 -2
  188. sage/combinat/vector_partition.py +43 -31
  189. sage/combinat/words/abstract_word.py +4 -4
  190. sage/combinat/words/alphabet.py +12 -12
  191. sage/combinat/words/finite_word.py +25 -229
  192. sage/combinat/words/infinite_word.py +1 -1
  193. sage/combinat/words/morphic.py +13 -13
  194. sage/combinat/words/morphism.py +3 -12
  195. sage/combinat/words/paths.py +16 -17
  196. sage/combinat/words/word.py +60 -35
  197. sage/combinat/words/word_char.cpython-312-aarch64-linux-musl.so +0 -0
  198. sage/combinat/words/word_char.pyx +46 -7
  199. sage/combinat/words/word_datatypes.cpython-312-aarch64-linux-musl.so +0 -0
  200. sage/combinat/words/word_generators.py +39 -38
  201. sage/databases/findstat.py +72 -31
  202. sage/databases/oeis.py +125 -25
  203. sage/databases/sloane.py +14 -8
  204. sage/games/sudoku_backtrack.cpython-312-aarch64-linux-musl.so +0 -0
  205. sage/groups/indexed_free_group.py +3 -4
  206. sage/libs/symmetrica/symmetrica.cpython-312-aarch64-linux-musl.so +0 -0
  207. sage/libs/symmetrica/symmetrica.pxi +1 -0
  208. sage/monoids/automatic_semigroup.py +1 -3
  209. sage/monoids/free_abelian_monoid.py +7 -33
  210. sage/monoids/free_abelian_monoid_element.cpython-312-aarch64-linux-musl.so +0 -0
  211. sage/monoids/free_monoid.py +8 -40
  212. sage/monoids/free_monoid_element.py +1 -9
  213. sage/monoids/string_monoid.py +5 -2
  214. sage/monoids/string_monoid_element.py +12 -66
  215. sage/rings/all__sagemath_combinat.py +7 -0
  216. sage/sat/solvers/__init__.py +3 -4
  217. sage/sat/solvers/cryptominisat.py +2 -3
  218. sage/sat/solvers/picosat.py +2 -3
  219. sage/sat/solvers/sat_lp.py +2 -2
  220. sage/sat/solvers/satsolver.cpython-312-aarch64-linux-musl.so +0 -0
  221. 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
- # http://www.gnu.org/licenses/
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: (y,z) = Sym.base_ring().gens()
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 = sage.categories.all.ModulesWithBasis(self._sym.base_ring())
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 = sage.categories.all.ModulesWithBasis(self.base_ring())
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)
@@ -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
- # http://www.gnu.org/licenses/
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: (a,b) = Sym.base_ring().gens()
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 = sage.categories.all.ModulesWithBasis(self._sym.base_ring())
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 = sage.categories.all.ModulesWithBasis(self._sym.base_ring())
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 = sage.combinat.sf.sf.SymmetricFunctions(QQt).monomial()
918
- JP = sage.combinat.sf.sf.SymmetricFunctions(QQt).jack().P()
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 = sage.categories.all.ModulesWithBasis(self.base_ring())
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 = sage.categories.all.ModulesWithBasis(self.base_ring())
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 = sage.categories.all.ModulesWithBasis(self._sym.base_ring())
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: (x,t) = Symxt.base_ring().gens()
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 = sage.categories.all.ModulesWithBasis(self._sym.base_ring())
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))
@@ -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
- # http://www.gnu.org/licenses/
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: (x,y,z) = Sym.base_ring().gens()
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: (q,t) = Sym.base_ring().gens()
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: (q,t) = Sym.base_ring().gens()
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: (q,t) = Sym.base_ring().gens()
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
- (q, t) = QQqt.gens()
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
- f = res.coefficient
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
- (q,t) = QQqt.gens()
1837
+ q, t = QQqt.gens()
1839
1838
  from sage.combinat.sf.sf import SymmetricFunctions
1840
1839
  S = SymmetricFunctions(QQqt).macdonald().S()
1841
1840
 
@@ -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")
@@ -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``, where flip is defined as follows. Let
150
- ``r = max(self)``. Then ``self.flip()[i] = r - self[i]``.
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``. Note that this
249
- does not include the basement row.
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`` are attacking.
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
- for j in range(i + 1, len(self) + 1):
494
- if shape[i] <= shape[j]:
495
- res += 1
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 ``self``'s inversion statistic.
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 ``self``'s co-inversion statistic.
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
- for i, j in shape.boxes():
542
- if self[i, j] != self[i, j - 1]:
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
- Returning the finite set of nonattacking fillings of a
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 __repr__(self):
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._name
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 = 0
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 = 0
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 = 0
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)))