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.