# How to make a vector space with basis a *graded* one, and how to do linear algebra on its homogeneous parts?

I was sent here from StackOverflow.

I have a vector space with given basis (it is also a Hopf algebra, but this is not part of the problem). How do I make it into a graded vector space? E. g., I know that in order to make it into an algebra, I have to define a function called `product_on_basis`

somewhere in its definition, and that in order to make it into a coalgebra, I have to define a function called `coproduct_on_basis`

; but what function do I have to define in order to make it into a graded vector space? How can I find out the name of this function? (It is not given in http://www.sagemath.org/doc/reference/sage/categories/graded_modules_with_basis.html . I know the names of the functions for the multiplication and the comultiplication from python2.6/site-packages/sage/categories/examples/hopf_algebras_with_basis.py , but I don't see such a .py file for graded vector spaces.)

Once this is done, I would like to do linear algebra on the graded components. They are each finite-dimensional, with basis a part of the combinatorial basis of the big space, so there shouldn't be any problem. I have defined two maps and want to know, e. g., whether the image of one lies inside the image of the other. Is there an abstract way to do this in Sage or do I have to translate these maps into matrices?

**Context (not important):** I have (successfully, albeit stupidly) implemented the Malvenuto-Reutenauer Hopf algebra of permutations:

html version resp. sws file

Now I want to check some of its properties. This checking cannot be automated on the *whole* space, but it is a finite problem on each of its graded components, so I would like to check it, say, on the fifth one.