#12630: Add representations of quivers and quiver algebras to sage
-------------------------------------------------+-------------------------
       Reporter:  JStarx                         |        Owner:
           Type:  enhancement                    |  AlexGhitza
       Priority:  major                          |       Status:
      Component:  algebra                        |  needs_work
       Keywords:  algebra, quiver, module,       |    Milestone:  sage-5.12
  days49                                         |   Resolution:
        Authors:  Jim Stark, Simon King,         |    Merged in:
  Mathieu Guay-Paquet, Aladin Virmaux            |    Reviewers:  Simon
Report Upstream:  N/A                            |  King
         Branch:                                 |  Work issues:
   Dependencies:  #12412, #12413, #14806         |       Commit:
                                                 |     Stopgaps:
-------------------------------------------------+-------------------------

Comment (by ncohen):

 Hellooooooooo !!

 > I recall a worksheet in which William demonstrated mutating an Integer.

 That's forbidden magic.

 > OK, but they naturally occur in algebra. Algebra causes headaches, too
 ;-)

 I admit that.

 > For example, if you have a finite group whose order is a power of a
 prime p, then the group algebra over GF(p) can be described as a quotient
 of a quiver algebra ''with a single vertex''. So, all edges are loops.

 Multiple labelled loops on a vertices. Ahahah. I owe other headaches to
 that while coding #14953 `:-P`

 > Good news for me:
 > {{{
 > sage: g = graphs.PetersenGraph(); g == Graph(g.edges())
 > True
 > }}}

 Wuuuhuuu !!

 > > Though it would make sense to prevent anybody from changing the
 > > embedding/layout in an immutable graph anyway. Let's pretend, at the
 very
 > > least `:-P`
 >
 > That's other people's problem for me ...

 HMmmmmm.. Well, if you want some Graph objects to be officially immutable,
 it has to make sense with what the objects already store...

 > That's what I want. Namely, the generator names of the quiver algebra
 are
 > obtained from the edge and vertex labels. And if they change, then the
 algebra
 > should change as well. Hence, the labels ''should'' be checked in "==".

 This equality test can also be implemented at backend-level. Which would
 be MUCH faster `:-P`

 > Hmmmm. I'd think one shouldn't say that an immutable graph "allows"
 > loops/multiple edges. Either it ''has'' loops or it has not---if it has
 not,
 > it will certainly not allow to create a loop, since it is immutable.

 I agree with you. However, the current implementation checks that these
 flags are equal in `__eq__`. So you will probably have to modify it a bit
 in case the graphs are static.

 Dans it would produce weird things like :

 sage: g == h
 False
 sage: Graph(g,immutable=True) == Graph(g,immutable=True)
 True

 Or perhaps we should just give up saying that two graphs are different
 just because of these flags... Would probably make more sense, actually.

 > Then why would you call them digraphs? `:-P`

 http://en.wikipedia.org/wiki/Quiver_(mathematics)
 http://en.wikipedia.org/wiki/Directed_graph

 HMmmm... Looks like they insist on having multiple edges and loops, which
 is not forbidden by digraphs. Well `:-P`

 > Seriously, I guess there are just two mathematical communities. Graph
 > theorists would call them digraph, I guess, but algebraist would call
 them quivers.

 I'll go talk to them one by one and convince them that what they do is
 wrong `O_O`

 > I'd need to look at the code. At least there would be
 >
 > - `.free_small_category()`: This is the set of directed paths with
 >   multiplication by concatenation. I was told on sage-combinat-devel
 that I
 >   shouldn't call it "path magma" but "free small category".

 `O_o`

 Well. As a DiGraph user I would personally prefer "path magma", because
 even if I have no idea what a path magma is there is "path" in there at
 least. "free small category" really rings no bell at all.
 But well.. It's not mine to decide `^^;`

 What about `path_monoid` (if it is a monoid) ? `:-P`

 > - `.quiver_algebra(R)` (or just `.algebra(R)`?): Return the monomial
 algebra
 >   over R whose monomials are given by the free small category

 What about `path_alebra` ?
 http://en.wikipedia.org/wiki/Quiver_(mathematics)#Path_algebra

 > - `.quiver_representation(...)`: Create a module over the quiver
 algebra.

 To me this should be `.quiver_algebra().representation()`.

 > - Currently there are some short-cuts for creating a quiver
 >   representation. For example, the vertices of the quiver/digraph are in
 >   one-to-one correspondence to the simple modules of the quiver algebra.
 And
 >   the projective covers of the simple modules are important as well.
 >
 > If I recall correctly, we have 3 shortcuts, so, this would result in 6
 > additional methods.

 HMmmmmm `O_O;;;`

 > Right, you could always say that you have a class `FreeSmallCategory`
 > inheriting from `UniqueRepresentation`, and then
 `G.free_small_category()`
 > should return `FreeSmallCategory(G)` if G is immutable,
 > but `FreeSmallCategory(immutable_copy(G))` otherwise.

 Yep ! And I swear, it's cheap. And much more efficient than current
 graphs.

 See youuuuuuuuuuu !

 Nathann

--
Ticket URL: <http://trac.sagemath.org/ticket/12630#comment:131>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to