Pieri Factors¶
- class sage.combinat.root_system.pieri_factors.PieriFactors[source]¶
- Bases: - UniqueRepresentation,- Parent- An abstract class for sets of Pieri factors, used for constructing Stanley symmetric functions. The set of Pieri factors for a given type can be realized as an order ideal of the Bruhat order poset generated by a certain set of maximal elements. - See also - EXAMPLES: - sage: W = WeylGroup(['A',4]) sage: PF = W.pieri_factors() sage: PF.an_element().reduced_word() [4, 3, 2, 1] sage: Waff = WeylGroup(['A',4,1]) sage: PFaff = Waff.pieri_factors() sage: Waff.from_reduced_word(PF.an_element().reduced_word()) in PFaff True sage: W = WeylGroup(['B',3,1]) sage: PF = W.pieri_factors() sage: W.from_reduced_word([2,3,2]) in PF.elements() True sage: PF.cardinality() 47 sage: W = WeylGroup(['C',3,1]) sage: PF = W.pieri_factors() sage: PF.generating_series() 6*z^6 + 14*z^5 + 18*z^4 + 15*z^3 + 9*z^2 + 4*z + 1 sage: sorted(w.reduced_word() for w in PF if w.length() == 2) [[0, 1], [1, 0], [1, 2], [2, 0], [2, 1], [2, 3], [3, 0], [3, 1], [3, 2]] - >>> from sage.all import * >>> W = WeylGroup(['A',Integer(4)]) >>> PF = W.pieri_factors() >>> PF.an_element().reduced_word() [4, 3, 2, 1] >>> Waff = WeylGroup(['A',Integer(4),Integer(1)]) >>> PFaff = Waff.pieri_factors() >>> Waff.from_reduced_word(PF.an_element().reduced_word()) in PFaff True >>> W = WeylGroup(['B',Integer(3),Integer(1)]) >>> PF = W.pieri_factors() >>> W.from_reduced_word([Integer(2),Integer(3),Integer(2)]) in PF.elements() True >>> PF.cardinality() 47 >>> W = WeylGroup(['C',Integer(3),Integer(1)]) >>> PF = W.pieri_factors() >>> PF.generating_series() 6*z^6 + 14*z^5 + 18*z^4 + 15*z^3 + 9*z^2 + 4*z + 1 >>> sorted(w.reduced_word() for w in PF if w.length() == Integer(2)) [[0, 1], [1, 0], [1, 2], [2, 0], [2, 1], [2, 3], [3, 0], [3, 1], [3, 2]] - REFERENCES: - default_weight()[source]¶
- Return the function \(i\mapsto z^i\), where \(z\) is the generator of - QQ['z'].- EXAMPLES: - sage: W = WeylGroup(["A", 3, 1]) sage: weight = W.pieri_factors().default_weight() sage: weight(1) z sage: weight(5) z^5 - >>> from sage.all import * >>> W = WeylGroup(["A", Integer(3), Integer(1)]) >>> weight = W.pieri_factors().default_weight() >>> weight(Integer(1)) z >>> weight(Integer(5)) z^5 
 - elements()[source]¶
- Return the elements of - self.- Those are constructed as the elements below the maximal elements of - selfin Bruhat order.- OUTPUT: a - RecursivelyEnumeratedSet_genericobject- EXAMPLES: - sage: PF = WeylGroup(['A',3]).pieri_factors() sage: sorted(w.reduced_word() for w in PF.elements()) [[], [1], [2], [2, 1], [3], [3, 1], [3, 2], [3, 2, 1]] - >>> from sage.all import * >>> PF = WeylGroup(['A',Integer(3)]).pieri_factors() >>> sorted(w.reduced_word() for w in PF.elements()) [[], [1], [2], [2, 1], [3], [3, 1], [3, 2], [3, 2, 1]] - See also - maximal_elements()- Todo - Possibly remove this method and instead have this class inherit from - RecursivelyEnumeratedSet_generic.
 - generating_series(weight=None)[source]¶
- Return a length generating series for the elements of - self.- EXAMPLES: - sage: PF = WeylGroup(['C',3,1]).pieri_factors() sage: PF.generating_series() 6*z^6 + 14*z^5 + 18*z^4 + 15*z^3 + 9*z^2 + 4*z + 1 sage: PF = WeylGroup(['B',4]).pieri_factors() sage: PF.generating_series() z^7 + 6*z^6 + 14*z^5 + 18*z^4 + 15*z^3 + 9*z^2 + 4*z + 1 - >>> from sage.all import * >>> PF = WeylGroup(['C',Integer(3),Integer(1)]).pieri_factors() >>> PF.generating_series() 6*z^6 + 14*z^5 + 18*z^4 + 15*z^3 + 9*z^2 + 4*z + 1 >>> PF = WeylGroup(['B',Integer(4)]).pieri_factors() >>> PF.generating_series() z^7 + 6*z^6 + 14*z^5 + 18*z^4 + 15*z^3 + 9*z^2 + 4*z + 1 
 - max_length()[source]¶
- Return the maximal length of a Pieri factor. - EXAMPLES: - In type A and A affine, this is \(n\): - sage: WeylGroup(['A',5]).pieri_factors().max_length() 5 sage: WeylGroup(['A',5,1]).pieri_factors().max_length() 5 - >>> from sage.all import * >>> WeylGroup(['A',Integer(5)]).pieri_factors().max_length() 5 >>> WeylGroup(['A',Integer(5),Integer(1)]).pieri_factors().max_length() 5 - In type B and B affine, this is \(2n-1\): - sage: WeylGroup(['B',5,1]).pieri_factors().max_length() 9 sage: WeylGroup(['B',5]).pieri_factors().max_length() 9 - >>> from sage.all import * >>> WeylGroup(['B',Integer(5),Integer(1)]).pieri_factors().max_length() 9 >>> WeylGroup(['B',Integer(5)]).pieri_factors().max_length() 9 - In type C affine this is \(2n\): - sage: WeylGroup(['C',5,1]).pieri_factors().max_length() 10 - >>> from sage.all import * >>> WeylGroup(['C',Integer(5),Integer(1)]).pieri_factors().max_length() 10 - In type D affine this is \(2n-2\): - sage: WeylGroup(['D',5,1]).pieri_factors().max_length() 8 - >>> from sage.all import * >>> WeylGroup(['D',Integer(5),Integer(1)]).pieri_factors().max_length() 8 
 
- class sage.combinat.root_system.pieri_factors.PieriFactors_affine_type[source]¶
- Bases: - PieriFactors- maximal_elements()[source]¶
- Return the maximal elements of - selfwith respect to Bruhat order.- The current implementation is via a conjectural type-free formula. Use - maximal_elements_combinatorial()for proven type-specific implementations. To compare type-free and type-specific (combinatorial) implementations, use method- _test_maximal_elements().- EXAMPLES: - sage: W = WeylGroup(['A',4,1]) sage: PF = W.pieri_factors() sage: sorted([w.reduced_word() for w in PF.maximal_elements()], key=str) [[0, 4, 3, 2], [1, 0, 4, 3], [2, 1, 0, 4], [3, 2, 1, 0], [4, 3, 2, 1]] sage: W = WeylGroup(RootSystem(["C",3,1]).weight_space()) sage: PF = W.pieri_factors() sage: sorted([w.reduced_word() for w in PF.maximal_elements()], key=str) [[0, 1, 2, 3, 2, 1], [1, 0, 1, 2, 3, 2], [1, 2, 3, 2, 1, 0], [2, 1, 0, 1, 2, 3], [2, 3, 2, 1, 0, 1], [3, 2, 1, 0, 1, 2]] sage: W = WeylGroup(RootSystem(["B",3,1]).weight_space()) sage: PF = W.pieri_factors() sage: sorted([w.reduced_word() for w in PF.maximal_elements()], key=str) [[0, 2, 3, 2, 0], [1, 0, 2, 3, 2], [1, 2, 3, 2, 1], [2, 1, 0, 2, 3], [2, 3, 2, 1, 0], [3, 2, 1, 0, 2]] sage: W = WeylGroup(['D',4,1]) sage: PF = W.pieri_factors() sage: sorted([w.reduced_word() for w in PF.maximal_elements()], key=str) [[0, 2, 4, 3, 2, 0], [1, 0, 2, 4, 3, 2], [1, 2, 4, 3, 2, 1], [2, 1, 0, 2, 4, 3], [2, 4, 3, 2, 1, 0], [3, 2, 1, 0, 2, 3], [4, 2, 1, 0, 2, 4], [4, 3, 2, 1, 0, 2]] - >>> from sage.all import * >>> W = WeylGroup(['A',Integer(4),Integer(1)]) >>> PF = W.pieri_factors() >>> sorted([w.reduced_word() for w in PF.maximal_elements()], key=str) [[0, 4, 3, 2], [1, 0, 4, 3], [2, 1, 0, 4], [3, 2, 1, 0], [4, 3, 2, 1]] >>> W = WeylGroup(RootSystem(["C",Integer(3),Integer(1)]).weight_space()) >>> PF = W.pieri_factors() >>> sorted([w.reduced_word() for w in PF.maximal_elements()], key=str) [[0, 1, 2, 3, 2, 1], [1, 0, 1, 2, 3, 2], [1, 2, 3, 2, 1, 0], [2, 1, 0, 1, 2, 3], [2, 3, 2, 1, 0, 1], [3, 2, 1, 0, 1, 2]] >>> W = WeylGroup(RootSystem(["B",Integer(3),Integer(1)]).weight_space()) >>> PF = W.pieri_factors() >>> sorted([w.reduced_word() for w in PF.maximal_elements()], key=str) [[0, 2, 3, 2, 0], [1, 0, 2, 3, 2], [1, 2, 3, 2, 1], [2, 1, 0, 2, 3], [2, 3, 2, 1, 0], [3, 2, 1, 0, 2]] >>> W = WeylGroup(['D',Integer(4),Integer(1)]) >>> PF = W.pieri_factors() >>> sorted([w.reduced_word() for w in PF.maximal_elements()], key=str) [[0, 2, 4, 3, 2, 0], [1, 0, 2, 4, 3, 2], [1, 2, 4, 3, 2, 1], [2, 1, 0, 2, 4, 3], [2, 4, 3, 2, 1, 0], [3, 2, 1, 0, 2, 3], [4, 2, 1, 0, 2, 4], [4, 3, 2, 1, 0, 2]] 
 
- class sage.combinat.root_system.pieri_factors.PieriFactors_finite_type[source]¶
- Bases: - PieriFactors- The Pieri factors of finite type A are the restriction of the Pieri factors of affine type A to finite permutations (under the canonical embedding of finite type A into the affine Weyl group), and the Pieri factors of finite type B are the restriction of the Pieri factors of affine type C. The finite type D Pieri factors are (weakly) conjectured to be the restriction of the Pieri factors of affine type D. - maximal_elements()[source]¶
- The current algorithm uses the fact that the maximal Pieri factors of affine type A,B,C, or D either contain a finite Weyl group element, or contain an affine Weyl group element whose reflection by \(s_0\) gets a finite Weyl group element, and that either of these finite group elements will serve as a maximal element for finite Pieri factors. A better algorithm is desirable. - EXAMPLES: - sage: PF = WeylGroup(['A',5]).pieri_factors() sage: [v.reduced_word() for v in PF.maximal_elements()] [[5, 4, 3, 2, 1]] sage: WeylGroup(['B',4]).pieri_factors().maximal_elements() [ [-1 0 0 0] [ 0 1 0 0] [ 0 0 1 0] [ 0 0 0 1] ] - >>> from sage.all import * >>> PF = WeylGroup(['A',Integer(5)]).pieri_factors() >>> [v.reduced_word() for v in PF.maximal_elements()] [[5, 4, 3, 2, 1]] >>> WeylGroup(['B',Integer(4)]).pieri_factors().maximal_elements() [ [-1 0 0 0] [ 0 1 0 0] [ 0 0 1 0] [ 0 0 0 1] ] 
 
- class sage.combinat.root_system.pieri_factors.PieriFactors_type_A(W)[source]¶
- Bases: - PieriFactors_finite_type- The set of Pieri factors for finite type A. - This is the set of elements of the Weyl group that have a reduced word that is strictly decreasing. This may also be viewed as the restriction of affine type A Pieri factors to finite Weyl group elements. - maximal_elements_combinatorial()[source]¶
- Return the maximal Pieri factors, using the type A combinatorial description. - EXAMPLES: - sage: W = WeylGroup(['A',4]) sage: PF = W.pieri_factors() sage: PF.maximal_elements_combinatorial()[0].reduced_word() [4, 3, 2, 1] - >>> from sage.all import * >>> W = WeylGroup(['A',Integer(4)]) >>> PF = W.pieri_factors() >>> PF.maximal_elements_combinatorial()[Integer(0)].reduced_word() [4, 3, 2, 1] 
 - stanley_symm_poly_weight(w)[source]¶
- EXAMPLES: - sage: W = WeylGroup(['A',4]) sage: PF = W.pieri_factors() sage: PF.stanley_symm_poly_weight(W.from_reduced_word([3,1])) 0 - >>> from sage.all import * >>> W = WeylGroup(['A',Integer(4)]) >>> PF = W.pieri_factors() >>> PF.stanley_symm_poly_weight(W.from_reduced_word([Integer(3),Integer(1)])) 0 
 
- class sage.combinat.root_system.pieri_factors.PieriFactors_type_A_affine(W, min_length, max_length, min_support, max_support)[source]¶
- Bases: - PieriFactors_affine_type- The set of Pieri factors for type A affine, that is the set of elements of the Weyl Group which are cyclically decreasing. - Those are used for constructing (affine) Stanley symmetric functions. - The Pieri factors are in bijection with the proper subsets of the - index_set. The bijection is given by the support. Namely, let \(f\) be a Pieri factor, and \(red\) a reduced word for \(f\). No simple reflection appears twice in red, and the support \(S\) of \(red\) (that is the \(i\) such that \(s_i\) appears in \(red\)) does not depend on the reduced word).- cardinality()[source]¶
- Return the cardinality of - self.- EXAMPLES: - sage: WeylGroup(["A", 3, 1]).pieri_factors().cardinality() 15 - >>> from sage.all import * >>> WeylGroup(["A", Integer(3), Integer(1)]).pieri_factors().cardinality() 15 
 - generating_series(weight=None)[source]¶
- Return a length generating series for the elements of - self.- EXAMPLES: - sage: W = WeylGroup(["A", 3, 1]) sage: W.pieri_factors().cardinality() 15 sage: W.pieri_factors().generating_series() 4*z^3 + 6*z^2 + 4*z + 1 - >>> from sage.all import * >>> W = WeylGroup(["A", Integer(3), Integer(1)]) >>> W.pieri_factors().cardinality() 15 >>> W.pieri_factors().generating_series() 4*z^3 + 6*z^2 + 4*z + 1 
 - maximal_elements_combinatorial()[source]¶
- Return the maximal Pieri factors, using the affine type A combinatorial description. - EXAMPLES: - sage: W = WeylGroup(['A',4,1]) sage: PF = W.pieri_factors() sage: [w.reduced_word() for w in PF.maximal_elements_combinatorial()] [[3, 2, 1, 0], [2, 1, 0, 4], [1, 0, 4, 3], [0, 4, 3, 2], [4, 3, 2, 1]] - >>> from sage.all import * >>> W = WeylGroup(['A',Integer(4),Integer(1)]) >>> PF = W.pieri_factors() >>> [w.reduced_word() for w in PF.maximal_elements_combinatorial()] [[3, 2, 1, 0], [2, 1, 0, 4], [1, 0, 4, 3], [0, 4, 3, 2], [4, 3, 2, 1]] 
 - stanley_symm_poly_weight(w)[source]¶
- Weight used in computing (affine) Stanley symmetric polynomials for affine type A. - EXAMPLES: - sage: W = WeylGroup(['A',5,1]) sage: PF = W.pieri_factors() sage: PF.stanley_symm_poly_weight(W.one()) 0 sage: PF.stanley_symm_poly_weight(W.from_reduced_word([5,4,2,1,0])) 0 - >>> from sage.all import * >>> W = WeylGroup(['A',Integer(5),Integer(1)]) >>> PF = W.pieri_factors() >>> PF.stanley_symm_poly_weight(W.one()) 0 >>> PF.stanley_symm_poly_weight(W.from_reduced_word([Integer(5),Integer(4),Integer(2),Integer(1),Integer(0)])) 0 
 - subset(length)[source]¶
- Return the subset of the elements of - selfof length- length.- INPUT: - length– nonnegative integer
 - EXAMPLES: - sage: PF = WeylGroup(["A", 3, 1]).pieri_factors(); PF Pieri factors for Weyl Group of type ['A', 3, 1] (as a matrix group acting on the root space) sage: PF3 = PF.subset(length = 2) sage: PF3.cardinality() 6 - >>> from sage.all import * >>> PF = WeylGroup(["A", Integer(3), Integer(1)]).pieri_factors(); PF Pieri factors for Weyl Group of type ['A', 3, 1] (as a matrix group acting on the root space) >>> PF3 = PF.subset(length = Integer(2)) >>> PF3.cardinality() 6 
 
- class sage.combinat.root_system.pieri_factors.PieriFactors_type_B(W)[source]¶
- Bases: - PieriFactors_finite_type- The type B finite Pieri factors are realized as the set of elements that have a reduced word that is a subword of \(12...(n-1)n(n-1)...21\). They are the restriction of the type C affine Pieri factors to the set of finite Weyl group elements under the usual embedding. - maximal_elements_combinatorial()[source]¶
- Return the maximal Pieri factors, using the type B combinatorial description. - EXAMPLES: - sage: PF = WeylGroup(['B',4]).pieri_factors() sage: PF.maximal_elements_combinatorial()[0].reduced_word() [1, 2, 3, 4, 3, 2, 1] - >>> from sage.all import * >>> PF = WeylGroup(['B',Integer(4)]).pieri_factors() >>> PF.maximal_elements_combinatorial()[Integer(0)].reduced_word() [1, 2, 3, 4, 3, 2, 1] 
 - stanley_symm_poly_weight(w)[source]¶
- Weight used in computing Stanley symmetric polynomials of type \(B\). - The weight for finite type B is the number of components of the support of an element minus the number of occurrences of \(n\) in a reduced word. - EXAMPLES: - sage: W = WeylGroup(['B',5]) sage: PF = W.pieri_factors() sage: PF.stanley_symm_poly_weight(W.from_reduced_word([3,1,5])) 2 sage: PF.stanley_symm_poly_weight(W.from_reduced_word([3,4,5])) 0 sage: PF.stanley_symm_poly_weight(W.from_reduced_word([1,2,3,4,5,4])) 0 - >>> from sage.all import * >>> W = WeylGroup(['B',Integer(5)]) >>> PF = W.pieri_factors() >>> PF.stanley_symm_poly_weight(W.from_reduced_word([Integer(3),Integer(1),Integer(5)])) 2 >>> PF.stanley_symm_poly_weight(W.from_reduced_word([Integer(3),Integer(4),Integer(5)])) 0 >>> PF.stanley_symm_poly_weight(W.from_reduced_word([Integer(1),Integer(2),Integer(3),Integer(4),Integer(5),Integer(4)])) 0 
 
- class sage.combinat.root_system.pieri_factors.PieriFactors_type_B_affine(W)[source]¶
- Bases: - PieriFactors_affine_type- The type B affine Pieri factors are realized as the order ideal (in Bruhat order) generated by the following elements: - cyclic rotations of the element with reduced word \(234...(n-1)n(n-1)...3210\), except for \(123...n...320\) and \(023...n...321\). 
- \(123...(n-1)n(n-1)...321\) 
- \(023...(n-1)n(n-1)...320\) 
 - EXAMPLES: - sage: W = WeylGroup(['B',4,1]) sage: PF = W.pieri_factors() sage: W.from_reduced_word([2,3,4,3,2,1,0]) in PF.maximal_elements() True sage: W.from_reduced_word([0,2,3,4,3,2,1]) in PF.maximal_elements() False sage: W.from_reduced_word([1,0,2,3,4,3,2]) in PF.maximal_elements() True sage: W.from_reduced_word([0,2,3,4,3,2,0]) in PF.maximal_elements() True sage: W.from_reduced_word([0,2,0]) in PF True - >>> from sage.all import * >>> W = WeylGroup(['B',Integer(4),Integer(1)]) >>> PF = W.pieri_factors() >>> W.from_reduced_word([Integer(2),Integer(3),Integer(4),Integer(3),Integer(2),Integer(1),Integer(0)]) in PF.maximal_elements() True >>> W.from_reduced_word([Integer(0),Integer(2),Integer(3),Integer(4),Integer(3),Integer(2),Integer(1)]) in PF.maximal_elements() False >>> W.from_reduced_word([Integer(1),Integer(0),Integer(2),Integer(3),Integer(4),Integer(3),Integer(2)]) in PF.maximal_elements() True >>> W.from_reduced_word([Integer(0),Integer(2),Integer(3),Integer(4),Integer(3),Integer(2),Integer(0)]) in PF.maximal_elements() True >>> W.from_reduced_word([Integer(0),Integer(2),Integer(0)]) in PF True - maximal_elements_combinatorial()[source]¶
- Return the maximal Pieri factors, using the affine type B combinatorial description. - EXAMPLES: - sage: W = WeylGroup(['B',4,1]) sage: [u.reduced_word() for u in W.pieri_factors().maximal_elements_combinatorial()] [[1, 0, 2, 3, 4, 3, 2], [2, 1, 0, 2, 3, 4, 3], [3, 2, 1, 0, 2, 3, 4], [4, 3, 2, 1, 0, 2, 3], [3, 4, 3, 2, 1, 0, 2], [2, 3, 4, 3, 2, 1, 0], [1, 2, 3, 4, 3, 2, 1], [0, 2, 3, 4, 3, 2, 0]] - >>> from sage.all import * >>> W = WeylGroup(['B',Integer(4),Integer(1)]) >>> [u.reduced_word() for u in W.pieri_factors().maximal_elements_combinatorial()] [[1, 0, 2, 3, 4, 3, 2], [2, 1, 0, 2, 3, 4, 3], [3, 2, 1, 0, 2, 3, 4], [4, 3, 2, 1, 0, 2, 3], [3, 4, 3, 2, 1, 0, 2], [2, 3, 4, 3, 2, 1, 0], [1, 2, 3, 4, 3, 2, 1], [0, 2, 3, 4, 3, 2, 0]] 
 - stanley_symm_poly_weight(w)[source]¶
- Return the weight of a Pieri factor to be used in the definition of Stanley symmetric functions. - For type B, this weight involves the number of components of the complement of the support of an element, where we consider 0 and 1 to be one node – if 1 is in the support, then we pretend 0 in the support, and vice versa. We also consider 0 and 1 to be one node for the purpose of counting components of the complement (as if the Dynkin diagram were that of type C). Let n be the rank of the affine Weyl group in question (if type - ['B',k,1]then we have n = k+1). Let- chi(v.length() < n-1)be the indicator function that is 1 if the length of v is smaller than n-1, and 0 if the length of v is greater than or equal to n-1. If we call- c'(v)the number of components of the complement of the support of v, then the type B weight is given by- weight = c'(v) - chi(v.length() < n-1).- EXAMPLES: - sage: W = WeylGroup(['B',5,1]) sage: PF = W.pieri_factors() sage: PF.stanley_symm_poly_weight(W.from_reduced_word([0,3])) 1 sage: PF.stanley_symm_poly_weight(W.from_reduced_word([0,1,3])) 1 sage: PF.stanley_symm_poly_weight(W.from_reduced_word([2,3])) 1 sage: PF.stanley_symm_poly_weight(W.from_reduced_word([2,3,4,5])) 0 sage: PF.stanley_symm_poly_weight(W.from_reduced_word([0,5])) 0 sage: PF.stanley_symm_poly_weight(W.from_reduced_word([2,4,5,4,3,0])) -1 sage: PF.stanley_symm_poly_weight(W.from_reduced_word([4,5,4,3,0])) 0 - >>> from sage.all import * >>> W = WeylGroup(['B',Integer(5),Integer(1)]) >>> PF = W.pieri_factors() >>> PF.stanley_symm_poly_weight(W.from_reduced_word([Integer(0),Integer(3)])) 1 >>> PF.stanley_symm_poly_weight(W.from_reduced_word([Integer(0),Integer(1),Integer(3)])) 1 >>> PF.stanley_symm_poly_weight(W.from_reduced_word([Integer(2),Integer(3)])) 1 >>> PF.stanley_symm_poly_weight(W.from_reduced_word([Integer(2),Integer(3),Integer(4),Integer(5)])) 0 >>> PF.stanley_symm_poly_weight(W.from_reduced_word([Integer(0),Integer(5)])) 0 >>> PF.stanley_symm_poly_weight(W.from_reduced_word([Integer(2),Integer(4),Integer(5),Integer(4),Integer(3),Integer(0)])) -1 >>> PF.stanley_symm_poly_weight(W.from_reduced_word([Integer(4),Integer(5),Integer(4),Integer(3),Integer(0)])) 0 
 
- class sage.combinat.root_system.pieri_factors.PieriFactors_type_C_affine(W)[source]¶
- Bases: - PieriFactors_affine_type- The type C affine Pieri factors are realized as the order ideal (in Bruhat order) generated by cyclic rotations of the element with unique reduced word \(123...(n-1)n(n-1)...3210\). - EXAMPLES: - sage: W = WeylGroup(['C',3,1]) sage: PF = W.pieri_factors() sage: sorted([u.reduced_word() for u in PF.maximal_elements()], key=str) [[0, 1, 2, 3, 2, 1], [1, 0, 1, 2, 3, 2], [1, 2, 3, 2, 1, 0], [2, 1, 0, 1, 2, 3], [2, 3, 2, 1, 0, 1], [3, 2, 1, 0, 1, 2]] - >>> from sage.all import * >>> W = WeylGroup(['C',Integer(3),Integer(1)]) >>> PF = W.pieri_factors() >>> sorted([u.reduced_word() for u in PF.maximal_elements()], key=str) [[0, 1, 2, 3, 2, 1], [1, 0, 1, 2, 3, 2], [1, 2, 3, 2, 1, 0], [2, 1, 0, 1, 2, 3], [2, 3, 2, 1, 0, 1], [3, 2, 1, 0, 1, 2]] - maximal_elements_combinatorial()[source]¶
- Return the maximal Pieri factors, using the affine type C combinatorial description. - EXAMPLES: - sage: PF = WeylGroup(['C',3,1]).pieri_factors() sage: [w.reduced_word() for w in PF.maximal_elements_combinatorial()] [[0, 1, 2, 3, 2, 1], [1, 0, 1, 2, 3, 2], [2, 1, 0, 1, 2, 3], [3, 2, 1, 0, 1, 2], [2, 3, 2, 1, 0, 1], [1, 2, 3, 2, 1, 0]] - >>> from sage.all import * >>> PF = WeylGroup(['C',Integer(3),Integer(1)]).pieri_factors() >>> [w.reduced_word() for w in PF.maximal_elements_combinatorial()] [[0, 1, 2, 3, 2, 1], [1, 0, 1, 2, 3, 2], [2, 1, 0, 1, 2, 3], [3, 2, 1, 0, 1, 2], [2, 3, 2, 1, 0, 1], [1, 2, 3, 2, 1, 0]] 
 - stanley_symm_poly_weight(w)[source]¶
- Return the weight of a Pieri factor to be used in the definition of Stanley symmetric functions. - For type C, this weight is the number of connected components of the support (the indices appearing in a reduced word) of an element. - EXAMPLES: - sage: W = WeylGroup(['C',5,1]) sage: PF = W.pieri_factors() sage: PF.stanley_symm_poly_weight(W.from_reduced_word([1,3])) 2 sage: PF.stanley_symm_poly_weight(W.from_reduced_word([1,3,2,0])) 1 sage: PF.stanley_symm_poly_weight(W.from_reduced_word([5,3,0])) 3 sage: PF.stanley_symm_poly_weight(W.one()) 0 - >>> from sage.all import * >>> W = WeylGroup(['C',Integer(5),Integer(1)]) >>> PF = W.pieri_factors() >>> PF.stanley_symm_poly_weight(W.from_reduced_word([Integer(1),Integer(3)])) 2 >>> PF.stanley_symm_poly_weight(W.from_reduced_word([Integer(1),Integer(3),Integer(2),Integer(0)])) 1 >>> PF.stanley_symm_poly_weight(W.from_reduced_word([Integer(5),Integer(3),Integer(0)])) 3 >>> PF.stanley_symm_poly_weight(W.one()) 0 
 
- class sage.combinat.root_system.pieri_factors.PieriFactors_type_D_affine(W)[source]¶
- Bases: - PieriFactors_affine_type- The type D affine Pieri factors are realized as the order ideal (in Bruhat order) generated by the following elements: - cyclic rotations of the element with reduced word \(234...(n-2)n(n-1)(n-2)...3210\) such that 1 and 0 are always adjacent and (n-1) and n are always adjacent. 
- \(123...(n-2)n(n-1)(n-2)...321\) 
- \(023...(n-2)n(n-1)(n-2)...320\) 
- \(n(n-2)...2102...(n-2)n\) 
- \((n-1)(n-2)...2102...(n-2)(n-1)\) 
 - EXAMPLES: - sage: W = WeylGroup(['D',5,1]) sage: PF = W.pieri_factors() sage: W.from_reduced_word([3,2,1,0]) in PF True sage: W.from_reduced_word([0,3,2,1]) in PF False sage: W.from_reduced_word([0,1,3,2]) in PF True sage: W.from_reduced_word([2,0,1,3]) in PF True sage: sorted([u.reduced_word() for u in PF.maximal_elements()], key=str) [[0, 2, 3, 5, 4, 3, 2, 0], [1, 0, 2, 3, 5, 4, 3, 2], [1, 2, 3, 5, 4, 3, 2, 1], [2, 1, 0, 2, 3, 5, 4, 3], [2, 3, 5, 4, 3, 2, 1, 0], [3, 2, 1, 0, 2, 3, 5, 4], [3, 5, 4, 3, 2, 1, 0, 2], [4, 3, 2, 1, 0, 2, 3, 4], [5, 3, 2, 1, 0, 2, 3, 5], [5, 4, 3, 2, 1, 0, 2, 3]] - >>> from sage.all import * >>> W = WeylGroup(['D',Integer(5),Integer(1)]) >>> PF = W.pieri_factors() >>> W.from_reduced_word([Integer(3),Integer(2),Integer(1),Integer(0)]) in PF True >>> W.from_reduced_word([Integer(0),Integer(3),Integer(2),Integer(1)]) in PF False >>> W.from_reduced_word([Integer(0),Integer(1),Integer(3),Integer(2)]) in PF True >>> W.from_reduced_word([Integer(2),Integer(0),Integer(1),Integer(3)]) in PF True >>> sorted([u.reduced_word() for u in PF.maximal_elements()], key=str) [[0, 2, 3, 5, 4, 3, 2, 0], [1, 0, 2, 3, 5, 4, 3, 2], [1, 2, 3, 5, 4, 3, 2, 1], [2, 1, 0, 2, 3, 5, 4, 3], [2, 3, 5, 4, 3, 2, 1, 0], [3, 2, 1, 0, 2, 3, 5, 4], [3, 5, 4, 3, 2, 1, 0, 2], [4, 3, 2, 1, 0, 2, 3, 4], [5, 3, 2, 1, 0, 2, 3, 5], [5, 4, 3, 2, 1, 0, 2, 3]] - maximal_elements_combinatorial()[source]¶
- Return the maximal Pieri factors, using the affine type D combinatorial description. - EXAMPLES: - sage: W = WeylGroup(['D',5,1]) sage: PF = W.pieri_factors() sage: set(PF.maximal_elements_combinatorial()) == set(PF.maximal_elements()) True - >>> from sage.all import * >>> W = WeylGroup(['D',Integer(5),Integer(1)]) >>> PF = W.pieri_factors() >>> set(PF.maximal_elements_combinatorial()) == set(PF.maximal_elements()) True 
 - stanley_symm_poly_weight(w)[source]¶
- Return the weight of \(w\), to be used in the definition of Stanley symmetric functions. - INPUT: - w– a Pieri factor for this type
 - For type \(D\), this weight involves the number of components of the complement of the support of an element, where we consider \(0\) and \(1\) to be one node – if \(1\) is in the support, then we pretend \(0\) in the support, and vice versa. Similarly with \(n-1\) and \(n\). We also consider \(0\) and \(1\), \(n-1\) and \(n\) to be one node for the purpose of counting components of the complement (as if the Dynkin diagram were that of type \(C\)). - Type D Stanley symmetric polynomial weights are still conjectural. The given weight comes from conditions on elements of the affine Fomin-Stanley subalgebra, but work is needed to show this weight is correct for affine Stanley symmetric functions – see [LSS2009, Pon2010]_ for details. - EXAMPLES: - sage: W = WeylGroup(['D', 5, 1]) sage: PF = W.pieri_factors() sage: PF.stanley_symm_poly_weight(W.from_reduced_word([5,2,1])) 0 sage: PF.stanley_symm_poly_weight(W.from_reduced_word([5,2,1,0])) 0 sage: PF.stanley_symm_poly_weight(W.from_reduced_word([5,2])) 1 sage: PF.stanley_symm_poly_weight(W.from_reduced_word([])) 0 sage: W = WeylGroup(['D',7,1]) sage: PF = W.pieri_factors() sage: PF.stanley_symm_poly_weight(W.from_reduced_word([2,4,6])) 2 - >>> from sage.all import * >>> W = WeylGroup(['D', Integer(5), Integer(1)]) >>> PF = W.pieri_factors() >>> PF.stanley_symm_poly_weight(W.from_reduced_word([Integer(5),Integer(2),Integer(1)])) 0 >>> PF.stanley_symm_poly_weight(W.from_reduced_word([Integer(5),Integer(2),Integer(1),Integer(0)])) 0 >>> PF.stanley_symm_poly_weight(W.from_reduced_word([Integer(5),Integer(2)])) 1 >>> PF.stanley_symm_poly_weight(W.from_reduced_word([])) 0 >>> W = WeylGroup(['D',Integer(7),Integer(1)]) >>> PF = W.pieri_factors() >>> PF.stanley_symm_poly_weight(W.from_reduced_word([Integer(2),Integer(4),Integer(6)])) 2