I think that without some extra information this is bound to be difficult. For the modules that I am working with at the moment I can do this and I am in the process of making this more explicit.
The modules that I am working with have the following features which make this tractable: - they are cyclic: G = zA for some z (they are all A-modules) - (more importantly) I have a presentation for the modules - the presentation that I have is very "efficient" in the sense that if I am looking for maps f:G->H then the dimension of the vector subspace of H which can contain f(z) is quite small. This makes it tractable to look at the kernel of the modules relations on this subspace to find a basis for Hom_A(G,H). Currently, I have code which computes a basis for Hom_A(G,H) and returns sage morphisms f:G->H which you can apply to either arbitrary elements of G or to the indexing set of the basis for G. Next I plan to have the the code automatically write compositions f*g in terms of the distinguished bases that I have for these hom-spaces. As a special case, of course, I can compute End_A(G) an work with this. (Although for my examples this is only interesting in characteristic 2.) Andrew -- You received this message because you are subscribed to the Google Groups "sage-combinat-devel" group. To view this discussion on the web visit https://groups.google.com/d/msg/sage-combinat-devel/-/HeFrlWzYFXQJ. 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.