def stanley_symmetric_function_as_polynomial(self, max_length = infinity): r""" Returns a multivariate generating function for the number of factorizations of a Weyl group element into Pieri factors of decreasing length, weighted by a statistic on Pieri factors. See also: * :meth:stanley_symmetric_function` * :meth:`WeylGroups.ParentMethods.pieri_factors` * :mod:`sage.combinat.root_system.pieri_factors` INPUT: - ``self`` -- an element `w` of a Weyl group `W` - ``max_length`` -- a non negative integer or infinity (default: infinity) Returns the generating series for the Pieri factorizations `w = u_1 \cdots u_k`, where `u_i` is a Pieri factor for all `i`, `l(w) = \sum_{i=1}^k l(u_i)` and ``max_length```\geq l(u_1) \geq \dots \geq l(u_k)`. A factorization `u_1 \cdots u_k` contributes a monomial of the form `\prod_i x_{l(u_i)}`, with coefficient given by `\prod_i 2^{c(u_i)}`, where `c` is a type-dependent statistic on Pieri factors, as returned by the method ``u[i].stanley_symm_poly_weight()``. EXAMPLES:: sage: W = WeylGroup(['A', 3, 1]) sage: W.from_reduced_word([]).stanley_symmetric_function_as_polynomial() 1 sage: W.from_reduced_word([1]).stanley_symmetric_function_as_polynomial() x1 sage: W.from_reduced_word([1,2]).stanley_symmetric_function_as_polynomial() x1^2 sage: W.from_reduced_word([2,1]).stanley_symmetric_function_as_polynomial() x1^2 + x2 sage: W.from_reduced_word([1,2,1]).stanley_symmetric_function_as_polynomial() 2*x1^3 + x1*x2 sage: W.from_reduced_word([1,2,1,0]).stanley_symmetric_function_as_polynomial() 3*x1^4 + 2*x1^2*x2 + x2^2 + x1*x3 sage: W.from_reduced_word([1,2,3,1,2,1,0]).stanley_symmetric_function_as_polynomial() # long time 22*x1^7 + 11*x1^5*x2 + 5*x1^3*x2^2 + 3*x1^4*x3 + 2*x1*x2^3 + x1^2*x2*x3 sage: W.from_reduced_word([3,1,2,0,3,1,0]).stanley_symmetric_function_as_polynomial() # long time 8*x1^7 + 4*x1^5*x2 + 2*x1^3*x2^2 + x1*x2^3 sage: W = WeylGroup(['C',3,1]) sage: W.from_reduced_word([0,2,1,0]).stanley_symmetric_function_as_polynomial() 32*x1^4 + 16*x1^2*x2 + 8*x2^2 + 4*x1*x3 sage: W = WeylGroup(['B',3,1]) sage: W.from_reduced_word([3,2,1]).stanley_symmetric_function_as_polynomial() 2*x1^3 + x1*x2 + 1/2*x3 Algorithm: Induction on the left Pieri factors. Note that this induction preserves subsets of `W` which are stable by taking right factors, and in particular Grassmanian elements. """ W = self.parent() pieri_factors = W.pieri_factors() R = QQ[','.join('x%s'%l for l in range(1,pieri_factors.max_length()+1))] x = R.gens() if self.is_one(): return R(1) return R(sum(2**(pieri_factors.stanley_symm_poly_weight(u))*x[u.length()-1] * v.stanley_symmetric_function_as_polynomial(max_length = u.length()) for (u,v) in self.left_pieri_factorizations(max_length) if u != W.unit()))
def stanley_symmetric_function_as_polynomial(self, max_length = infinity): r""" Returns a multivariate generating function for the number of factorizations of a Weyl group element into Pieri factors of decreasing length, weighted by a statistic on Pieri factors. See also: * :meth:stanley_symmetric_function` * :meth:`WeylGroups.ParentMethods.pieri_factors` * :mod:`sage.combinat.root_system.pieri_factors` INPUT: - ``self`` -- an element `w` of a Weyl group `W` - ``max_length`` -- a non negative integer or infinity (default: infinity) Returns the generating series for the Pieri factorizations `w = u_1 \cdots u_k`, where `u_i` is a Pieri factor for all `i`, `l(w) = \sum_{i=1}^k l(u_i)` and ``max_length```\geq l(u_1) \geq \dots \geq l(u_k)`. A factorization `u_1 \cdots u_k` contributes a monomial of the form `\prod_i x_{l(u_i)}`, with coefficient given by `\prod_i 2^{c(u_i)}`, where `c` is a type-dependent statistic on Pieri factors, as returned by the method ``u[i].stanley_symm_poly_weight()``. EXAMPLES:: sage: W = WeylGroup(['A', 3, 1]) sage: W.from_reduced_word([]).stanley_symmetric_function_as_polynomial() 1 sage: W.from_reduced_word([1]).stanley_symmetric_function_as_polynomial() x1 sage: W.from_reduced_word([1,2]).stanley_symmetric_function_as_polynomial() x1^2 sage: W.from_reduced_word([2,1]).stanley_symmetric_function_as_polynomial() x1^2 + x2 sage: W.from_reduced_word([1,2,1]).stanley_symmetric_function_as_polynomial() 2*x1^3 + x1*x2 sage: W.from_reduced_word([1,2,1,0]).stanley_symmetric_function_as_polynomial() 3*x1^4 + 2*x1^2*x2 + x2^2 + x1*x3 sage: W.from_reduced_word([1,2,3,1,2,1,0]).stanley_symmetric_function_as_polynomial() # long time 22*x1^7 + 11*x1^5*x2 + 5*x1^3*x2^2 + 3*x1^4*x3 + 2*x1*x2^3 + x1^2*x2*x3 sage: W.from_reduced_word([3,1,2,0,3,1,0]).stanley_symmetric_function_as_polynomial() # long time 8*x1^7 + 4*x1^5*x2 + 2*x1^3*x2^2 + x1*x2^3 sage: W = WeylGroup(['C',3,1]) sage: W.from_reduced_word([0,2,1,0]).stanley_symmetric_function_as_polynomial() 32*x1^4 + 16*x1^2*x2 + 8*x2^2 + 4*x1*x3 sage: W = WeylGroup(['B',3,1]) sage: W.from_reduced_word([3,2,1]).stanley_symmetric_function_as_polynomial() 2*x1^3 + x1*x2 + 1/2*x3 Algorithm: Induction on the left Pieri factors. Note that this induction preserves subsets of `W` which are stable by taking right factors, and in particular Grassmanian elements. """ W = self.parent() pieri_factors = W.pieri_factors() R = QQ[','.join('x%s'%l for l in range(1,pieri_factors.max_length()+1))] x = R.gens() if self.is_one(): return R(1) return R(sum(2**(pieri_factors.stanley_symm_poly_weight(u))*x[u.length()-1] * v.stanley_symmetric_function_as_polynomial(max_length = u.length()) for (u,v) in self.left_pieri_factorizations(max_length) if u != W.unit()))