# What is the name of a tensor product?

I have a tensor like

tensor([a,b,c])


where a, b, c lie in some CombinatorialFreeModule. Where (in Sage syntax) does this tensor lie? (I need to know, because I am writing a function using module_morphism, and it requires me to explicitly specify its codomain.)

Writing

type(tensor([a,b,c]))


doesn't help (it just gives generic trash).

edit retag close merge delete

What does parent(tensor([a,b,c])) say?

( 2012-02-27 20:09:04 +0200 )edit

It says, in my case, "The Malvenuto-Reutenauer Hopf algebra over <class 'sage.interfaces.r.r'=""> # The Malvenuto-Reutenauer Hopf algebra over <class 'sage.interfaces.r.r'="">". I wish it would just give me the damned type name...

( 2012-02-27 20:15:34 +0200 )edit

?! Something's gone horribly wrong. That "R" isn't the R of the reals, it's the R of the statistical package.

( 2012-02-27 20:27:49 +0200 )edit

It's supposed to be QQ (the rationals)... and I have no idea how the R package could have entered the picture. Here is the part of the code necessary to reproduce the mess: http://mit.edu/~darij/www/wtf.htm / http://mit.edu/~darij/www/wtf.sws

( 2012-02-27 20:35:36 +0200 )edit

PS. I have taken the tensor of two rather than three elements to simplify the situation.

( 2012-02-27 20:36:27 +0200 )edit

Sort by » oldest newest most voted

The tensor should lie in tensor([a,b,c]).parent(), which should be the same as parent(tensor([a,b,c])).

sage: a = SteenrodAlgebra(2).an_element()
sage: M = CombinatorialFreeModule(GF(2), 's,t,u')
sage: s = M.basis()['s']
sage: T = tensor([a,s])
sage: parent(T)
mod 2 Steenrod algebra, milnor basis # Free module generated by s,t,u over Finite Field of size 2
sage: type(parent(T))
<class 'sage.combinat.free_module.CombinatorialFreeModule_Tensor_with_category'>

more

Well, I want something that I can use as a codomain for a map. I surely can't write "codomain=mod 2 Steenrod algebra, milnor basis" or "codomain=sage.combinat.free_module.CombinatorialFreeModule_Tensor_with_category".

( 2012-02-28 18:30:07 +0200 )edit
1

No, but you can write A = parent(...).

( 2012-02-28 19:45:35 +0200 )edit

It works. Thank you!

( 2012-02-28 21:56:46 +0200 )edit

Other than type, a good trick is to look at the top of the output from introspection:

sage: tensor?
Base Class:     <class 'sage.categories.tensor.TensorProductFunctor'>
String Form:    The tensor functorial construction
Namespace:      Interactive
File:           /Applications/sage/local/lib/python2.6/site-packages/sage/categories/tensor.py
Definition:     tensor(self, args)
Docstring:
...


Two questionmarks, as in

sage: tensor??


will get you the source code too, or you can browse an html version, which is sometimes more helpful.

more