Re: [sage-combinat-devel] Hopf algebra methods

2012-08-02 Thread Martin Rubey
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

2012-08-02 Thread Anne Schilling
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

2012-08-01 Thread Nicolas M. Thiery
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

2012-08-01 Thread Nicolas M. Thiery
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

2012-08-01 Thread Anne Schilling
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

2012-07-25 Thread Franco Saliola
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

2012-07-24 Thread Anne Schilling
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.