On Tue, Sep 20, 2011 at 12:40:30PM +0200, Nicolas M. Thiery wrote: > Here is a suggestion of implementation plan: > > - Low level kernel: implement efficient "mutable" subspaces. That is > we want the usual subspaces: > [..] > - Implement generically (in ModulesWithBasis) a method: > [..] > - Use it to implement (in AlgebrasWithBasis) a method: > [..] > - Make sure that all sage vector spaces and algebras are in the > appropriate categories!
Hi there. this looks familiar (in a way). some time ago i've started implementing path (or 'quiver') algebras in a similar way. a path algebra is the algebra generated by the paths in a directed graph -- think of it as a generalization of a free algebra (where the graph has only one vertex). i haven't come beyond elements, multiplication and (graded) quotients, which are currently brute force and quite slow. nevertheless these basic things work: (from memory, see doctests for more examples/details): sage: G = DiGraph({'e':['s'], 's':['e']}, name="some graph"); sage: A = PathAlgebra(GF(3),G); sage: X=A.gens();X (e,s,es,se) sage: e,s,es,se=X sage: es*e 0 sage: es*s es sage: es*se es_se sage: A(1) e + s sage: I = A.ideal([es*se]) sage: Q = A.quotient(I) sage: Y=Q.gens();Y [[e], [s], [es], [se]] sage: e,s,es,se=Y sage: Q.gens(2) [[se_es]] sage: Q.graded_comp(2).dimension() 1 sage: es+se [es+se] sage: e*es [es] sage: a=es*se;a [es_se] sage: a==0 True sage: (es*se).simplify() 0 you can find the code here: http://tool.em.cs.uni-frankfurt.de/~felix/misc/path_algebra-0.0.0.tbz2 regards felix -- To post to this group, send an email to sage-devel@googlegroups.com To unsubscribe from this group, send an email to sage-devel+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URL: http://www.sagemath.org