On Sat, Jun 20, 2015 at 12:43:18PM +0000, Simon King wrote:
> In order to create a right module over a path algebra P, with a vector space
> basis given by the potentially infinite family of paths starting at some
> vertex, I thought I'd start with CombinatorialFreeModule.
> 
> My expectation was that it would work *easily* and out of the box, if
> - one provides a "family" B of basis vectors, where B is just an
>   iterable container (i.e. one can test if something is in B, and one
>   can list its elements)
> - the stuff that is in B can be multiplied from the right by monomials
>   of P (i.e., paths), such that either a new element of B or None results.
>   I.e., linearity is taken care of by generic code in
>   CombinatorialFreeModule.
> 
> However, it turns out that this is not enough: If "p in B", and M is
> CombinatorialFreeModule(QQ, B), then still M(p) fails, because at some
> point it is attempted to do B(p), after checking that indeed "p in B".
> But of course a container isn't necessarily callable.
> 
> On the one hand, I wonder why the conversion into an element of B is
> needed after testing p in B. On the other hand, I wonder what other hidden
> assumptions exist on B.
> 
> Apparently it needs a __call__ method. Or does B actually need to be a
> Parent (such as LazyFamily is a Parent)? Is it specified somewhere what
> assumptions are made?
> 
> And: Is my expectation correct that in order to get the right-P-module
> structure, all what we need is that the elements of P have a
> .monomial_coefficients() method returning a dict, so that the elements
> of B can be multiplied with the keys of the dict? If not, where is it
> specified what is needed?

I am confused. Probably because there is a misunderstanding about the
purpose of CFM.

(Combinatorial)FreeModule(K, I) is about constructing the free module
M over the base ring K, with a basis (b_i)_{i\in I} indexed by
I. Constructing the linear span of a bunch of vectors living in some
other space (and potentially using some of the additional structure of
this other space) is a different construction. For this you may want
to have a look at the "submodule" method. The documentation shows how
to use it to define a subalgebra. Note however that, at this point,
this is only implemented for finite dimensional submodules; also we
are missing categories for ideals / ...

On a side note: for (Combinatorial)FreeModule(K, I) we don't want an
automatic coercion from I, at least not by default, because there are
cases where this could be ambiguous (e.g. when there are elements in I
that are also in the base ring).

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 unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to