On Thu, May 02, 2013 at 10:42:31AM +0000, Simon King wrote:
> - There is no mathematical difference between a quiver and a digraph.
>   Hence, there will be no separate sub-class "Quiver" of "DiGraph".

(but we could imagine in the long run having such a subclass, in case
we would want to enforce further properties, like having a distinct
name for each edge, ...)

> - How shall we call the algebraic structure formed by the paths in a
>   quiver? PathMonoid? PathMagma? QuiverMonoid? QuiverMagma?

I don't have a good suggestion, except for being consistent
PathAlgebra/PathMonoid or QuiverAlgebra/QuiverMonoid (where Monoid is
to be replaced by whatever is deemed appropriate).

>   All the algebraic stuff (representations, path algebra, and also
>   list of quiver paths in contrast to list of paths as a digraph)
>   should be accessible from there. Methods like "is_sink" should be
>   implemented on DiGraph.
> - In contrast to Jim's code, QuiverPath should be an element, namely an
>   element of the afore-mentioned algebraic structure.
> - We should allow directed cycles and loops where possible. We can
>   currently only have quiver representations for acyclic quivers. But
>   there is no reason to restrict QuiverMonoid and QuiverAlgebra to the
>   acyclic case.
> - "QuiverMonoid" should be a unique parent. I suggest using
>   UniqueRepresentation.
> - A QuiverMonoid M is *not* a DiGraph. Of course, it can return the
>   underlying quiver by M.quiver(), and M is uniquely determined by
>   M.quiver().

+1

> The last point gives rise to a question: Is there a way to make a
> DiGraph immutable, so that it can be used as a cache key, and so that we
> can store the quiver as an attribute of QuiverMonoid?
> Jim constructs a class Quiver as a sub-class of DiGraph and makes its
> instances immutable, by overriding all self-changing methods on the
> level of the instance (not on the level of the class, because these
> methods are needed during initialisation). I think it would be much
> better to use sage.structure.mutability.Mutability on the level of
> DiGraph.
> 
> Actually I'd be surprised if there'd be no patch for it yet.
> Nathann, what's the ticket number :) ?

We discussed this a couple times with Nathann indeed, and I guess
there is a ticket. For now, in similar situations, I have been using
the following hack:

    sage: G = DiGraph([[1,2]])
    sage: G = G.copy()
    sage: G._immutable = True
    sage: hash(G)
    -6891319547016415084

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?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to