Re: [sage-combinat-devel] Hopf algebra methods
Anne Schilling a...@math.ucdavis.edu writes: On 8/1/12 12:23 PM, Nicolas M. Thiery wrote: On Fri, Jul 27, 2012 at 09:01:46PM +0200, Martin Rubey wrote: Maybe f.parent()._sets is what you want? Speaking of which: we probably should expose that using some method foo, so that if F is the tensor/cartesian/... product of A, B, C we would get: sage: F.foo() (A, B, C) Any suggestion for a good name for this method? How about tensor_factors? How about factors (I wouldn't look for tensor_factors in a Cartesian product) _list_ Martin -- You received this message because you are subscribed to the Google Groups sage-combinat-devel group. To post to this group, send email to sage-combinat-devel@googlegroups.com. To unsubscribe from this group, send email to sage-combinat-devel+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.
Re: [sage-combinat-devel] Hopf algebra methods
On 8/2/12 9:41 AM, Nicolas M. Thiery wrote: On Thu, Aug 02, 2012 at 10:30:19AM +0200, Martin Rubey wrote: factors (I wouldn't look for tensor_factors in a Cartesian product) I like that. Other suggestions? Would it make sense to call it `operands`, by analogy with symbolic expressions? sage: f = x+1 sage: f.operands() [x, 1] sage: f = tensor_product([A,B]) sage: f.operands() [A, B] I prefer factors! Anne -- You received this message because you are subscribed to the Google Groups sage-combinat-devel group. To post to this group, send email to sage-combinat-devel@googlegroups.com. To unsubscribe from this group, send email to sage-combinat-devel+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.
Re: [sage-combinat-devel] Hopf algebra methods
On Wed, Jul 25, 2012 at 06:39:57PM -0400, Franco Saliola wrote: You can also define this using module_morphism on the basis elements, as follows. sage: Sym = SymmetricFunctions(QQ) sage: s = Sym.schur() sage: t = s.tensor_square() sage: mu = t.module_morphism(on_basis=lambda (a,b) : s[a]*s[b], codomain=s) I really would like to write as: sage: mu = t.module_morphism(on_basis = s.product.on_basis) This will eventually be possible when s.product will know that it is a bilinear morphism, and know its codomain. In any cases, this feature should be right away available as s.mu, implemented in HopfAlgebrasWithBasis.ParentMethods. Continuing from above, we construct the endomorphism of the identity tensor the antipode as a module morphism: sage: id_tensor_antipode = t.module_morphism(on_basis=lambda (a,b) : tensor([s[a], s[b].antipode()]), codomain=t) Then we can compose this with the multiplication map defined above: sage: mu_a = mu * id_tensor_antipode sage: mu_a(f) 0 Here is what we could do in MuPAD: idTensorAntipode := operators::tensorProductOfMaps( [id, s::antipode], s::tensorSquare, s::tensorSquare): es := NCSF::mu @ idTensorAntipode @ NCSF::coproduct es(s([2, 1])); 0 es(s([])); s([]) Is there a volunteer to implement tensor products of morphisms in Sage? The construction itself should be straightforward: to be put in ModulesWithBasis.TensorProducts.ParentMethods.tensor_product_of_morphisms in waiting for some better spot when morphisms will be better supported in Sage. Bonus: make ``tensor_product([phi,psi])`` call it appropriately. Cheers, Nicolas -- Nicolas M. Thiéry Isil nthi...@users.sf.net http://Nicolas.Thiery.name/ -- You received this message because you are subscribed to the Google Groups sage-combinat-devel group. To post to this group, send email to sage-combinat-devel@googlegroups.com. To unsubscribe from this group, send email to sage-combinat-devel+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.
Re: [sage-combinat-devel] Hopf algebra methods
On Fri, Jul 27, 2012 at 09:01:46PM +0200, Martin Rubey wrote: Maybe f.parent()._sets is what you want? Speaking of which: we probably should expose that using some method foo, so that if F is the tensor/cartesian/... product of A, B, C we would get: sage: F.foo() (A, B, C) Any suggestion for a good name for this method? Cheers, Nicolas -- Nicolas M. Thiéry Isil nthi...@users.sf.net http://Nicolas.Thiery.name/ -- You received this message because you are subscribed to the Google Groups sage-combinat-devel group. To post to this group, send email to sage-combinat-devel@googlegroups.com. To unsubscribe from this group, send email to sage-combinat-devel+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.
Re: [sage-combinat-devel] Hopf algebra methods
On 8/1/12 12:23 PM, Nicolas M. Thiery wrote: On Fri, Jul 27, 2012 at 09:01:46PM +0200, Martin Rubey wrote: Maybe f.parent()._sets is what you want? Speaking of which: we probably should expose that using some method foo, so that if F is the tensor/cartesian/... product of A, B, C we would get: sage: F.foo() (A, B, C) Any suggestion for a good name for this method? How about tensor_factors? Best, Anne -- You received this message because you are subscribed to the Google Groups sage-combinat-devel group. To post to this group, send email to sage-combinat-devel@googlegroups.com. To unsubscribe from this group, send email to sage-combinat-devel+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.
Re: [sage-combinat-devel] Hopf algebra methods
Hello, On Wed, Jul 25, 2012 at 12:24 AM, Anne Schilling a...@math.ucdavis.edu wrote: On 7/24/12 6:06 PM, Daniel Bump wrote: The symmetric function patch #5457 is a big step towards being able to work with the Hopf algebra of symmetric functions. I am glad you appreciate the new functionalities! Here's an interesting fact. Recall that the elements of the symmetric function Hopf algebra can be interpreted as representations of the symmetric group. For example, the Schur polynomials correspond to the irreducible representations. (See Zelevinsky, Representations of finite classical groups, A Hopf algebra approach. Lecture Notes in Mathematics, 869.) What about the Hopf square map, which is the composition of the comultiplication and the multiplication? It may be checked using Mackey theory that this, applied to an irreducible representation gives the same answer as inducing the representation from S_n to the hyperoctahedral group (Weyl group of type B_n), then restricting it back to the symmetric group. The Hopf n-th power map similarly implements induction to other wreath products of cyclic groups. So if I want to compute the Hopf square, I can try ... sage: Sym = SymmetricFunctions(QQ) sage: s = Sym.s() sage: s[3].coproduct() s[] # s[3] + s[1] # s[2] + s[2] # s[1] + s[3] # s[] sage: s[]*s[3] + s[1]*s[2] + s[2]*s[1] + s[3]*s[] Then what? The last line should really be sage: s[[]]*s[3] + s[1]*s[2] + s[2]*s[1] + s[3]*s[[]] due to limitations in python. What I want is sage: s([])*s([3]) + s([1])*s([2]) + s([2])*s([1]) + s([3])*s([]) 2*s[2, 1] + 4*s[3] but I'd rather not have to retype the output, which is what I did here. Is there an automatic way of getting this? You can try sage: def mu(f): : Sym = SymmetricFunctions(QQ) : s = Sym.schur() : coeffs = f.monomial_coefficients() : return sum( coeffs[a]*s(a[0])*s(a[1]) for a in coeffs) : sage: f = s[3].coproduct() sage: mu(f) 2*s[2, 1] + 4*s[3] You can also define this using module_morphism on the basis elements, as follows. sage: Sym = SymmetricFunctions(QQ) sage: s = Sym.schur() sage: t = s.tensor_square() sage: mu = t.module_morphism(on_basis=lambda (a,b) : s[a]*s[b], codomain=s) sage: f = s[3].coproduct(); f s[] # s[3] + s[1] # s[2] + s[2] # s[1] + s[3] # s[] sage: mu(f) 2*s[2, 1] + 4*s[3] Perhaps this multiplication map should be part of the patch? The only thing I could not yet figure out is how to access s from the tensor product. The naive try to obtain the left tensor factor does not work sage: f s[] # s[3] + s[1] # s[2] + s[2] # s[1] + s[3] # s[] sage: f.monomials() [s[] # s[3], s[1] # s[2], s[2] # s[1], s[3] # s[]] sage: f.monomials()[0] s[] # s[3] sage: f.monomials()[0][0] 0 Optionally I'd like to be able to do stuff like apply the antipode to the second component ... sage: s([])*s([3]).antipode() + s([1])*s([2]).antipode() + s([2])*s([1]).antipode() + s([3])*s([]).antipode() 0 How can I do these things without having to retype it all? def mu_a(f): Sym = SymmetricFunctions(QQ) s = Sym.schur() coeffs = f.monomial_coefficients() return sum( coeffs[a]*s(a[0])*s(a[1]).antipode() for a in coeffs) sage: mu_a(f) 0 Continuing from above, we construct the endomorphism of the identity tensor the antipode as a module morphism: sage: id_tensor_antipode = t.module_morphism(on_basis=lambda (a,b) : tensor([s[a], s[b].antipode()]), codomain=t) Then we can compose this with the multiplication map defined above: sage: mu_a = mu * id_tensor_antipode sage: mu_a(f) 0 Franco -- -- You received this message because you are subscribed to the Google Groups sage-combinat-devel group. To post to this group, send email to sage-combinat-devel@googlegroups.com. To unsubscribe from this group, send email to sage-combinat-devel+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.
Re: [sage-combinat-devel] Hopf algebra methods
On 7/24/12 6:06 PM, Daniel Bump wrote: The symmetric function patch #5457 is a big step towards being able to work with the Hopf algebra of symmetric functions. I am glad you appreciate the new functionalities! Here's an interesting fact. Recall that the elements of the symmetric function Hopf algebra can be interpreted as representations of the symmetric group. For example, the Schur polynomials correspond to the irreducible representations. (See Zelevinsky, Representations of finite classical groups, A Hopf algebra approach. Lecture Notes in Mathematics, 869.) What about the Hopf square map, which is the composition of the comultiplication and the multiplication? It may be checked using Mackey theory that this, applied to an irreducible representation gives the same answer as inducing the representation from S_n to the hyperoctahedral group (Weyl group of type B_n), then restricting it back to the symmetric group. The Hopf n-th power map similarly implements induction to other wreath products of cyclic groups. So if I want to compute the Hopf square, I can try ... sage: Sym = SymmetricFunctions(QQ) sage: s = Sym.s() sage: s[3].coproduct() s[] # s[3] + s[1] # s[2] + s[2] # s[1] + s[3] # s[] sage: s[]*s[3] + s[1]*s[2] + s[2]*s[1] + s[3]*s[] Then what? The last line should really be sage: s[[]]*s[3] + s[1]*s[2] + s[2]*s[1] + s[3]*s[[]] due to limitations in python. What I want is sage: s([])*s([3]) + s([1])*s([2]) + s([2])*s([1]) + s([3])*s([]) 2*s[2, 1] + 4*s[3] but I'd rather not have to retype the output, which is what I did here. Is there an automatic way of getting this? You can try sage: def mu(f): : Sym = SymmetricFunctions(QQ) : s = Sym.schur() : coeffs = f.monomial_coefficients() : return sum( coeffs[a]*s(a[0])*s(a[1]) for a in coeffs) : sage: f = s[3].coproduct() sage: mu(f) 2*s[2, 1] + 4*s[3] Perhaps this multiplication map should be part of the patch? The only thing I could not yet figure out is how to access s from the tensor product. The naive try to obtain the left tensor factor does not work sage: f s[] # s[3] + s[1] # s[2] + s[2] # s[1] + s[3] # s[] sage: f.monomials() [s[] # s[3], s[1] # s[2], s[2] # s[1], s[3] # s[]] sage: f.monomials()[0] s[] # s[3] sage: f.monomials()[0][0] 0 Optionally I'd like to be able to do stuff like apply the antipode to the second component ... sage: s([])*s([3]).antipode() + s([1])*s([2]).antipode() + s([2])*s([1]).antipode() + s([3])*s([]).antipode() 0 How can I do these things without having to retype it all? def mu_a(f): Sym = SymmetricFunctions(QQ) s = Sym.schur() coeffs = f.monomial_coefficients() return sum( coeffs[a]*s(a[0])*s(a[1]).antipode() for a in coeffs) sage: mu_a(f) 0 Best wishes, Anne -- You received this message because you are subscribed to the Google Groups sage-combinat-devel group. To post to this group, send email to sage-combinat-devel@googlegroups.com. To unsubscribe from this group, send email to sage-combinat-devel+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.