#12630: Add representations of quivers and quiver algebras to sage
-------------------------------------+-------------------------------------
       Reporter:  JStarx             |        Owner:  AlexGhitza
           Type:  enhancement        |       Status:  needs_work
       Priority:  major              |    Milestone:  sage-6.2
      Component:  algebra            |   Resolution:
       Keywords:  algebra, quiver,   |    Merged in:
  module, days49                     |    Reviewers:  Simon King
        Authors:  Jim Stark, Simon   |  Work issues:  fix or delete
  King, Mathieu Guay-Paquet, Aladin  |  "all_paths()"
  Virmaux                            |       Commit:
Report Upstream:  N/A                |  a6b04c6c57b2362cbfa2e300a5d592ef79757fc8
         Branch:                     |     Stopgaps:
  public/combinat/quivers            |
   Dependencies:  #12412, #12413,    |
  #14806, #15491, #15623, #15810     |
-------------------------------------+-------------------------------------
Changes (by SimonKing):

 * status:  needs_review => needs_work
 * work_issues:   => fix or delete "all_paths()"


Comment:

 Replying to [comment:206 darij]:
 > I changed the doc again. Simon, can you keep working on the
 public/combinat/quivers branch?

 As I have stated above: I keep forgetting how to teach git to push to the
 right location, and the dev scripts will not push to a public place.

 So, please tell me how I can push to a public branch.

 > I don't understand why we have two ways to compute paths in a path
 semigroup:
 > {{{
 >     def all_paths(self, start=None, end=None):
 > }}}
 > on the one hand, and
 > {{{
 >     def iter_paths_by_length_and_startpoint(self, d, v):
 >     def iter_paths_by_length_and_endpoint(self, d, v):
 > }}}

 I don't recall exactly, but if I recall correctly I added the iteration
 methods in order to have something that works in the acyclic case. I have
 just looked at the code: all_paths does not use the iterative methods.
 Perhaps it should!

 > All I can say is that it is broken even in the acyclic case:
 > {{{
 > sage: Q = DiGraph({i: {i+1: "a"+str(i)} for i in range(2)})
 > sage: Q.edges()
 > [(0, 1, 'a0'), (1, 2, 'a1')]
 > sage: Q.path_semigroup().all_paths()
 > [e_0, a, 0, a*a, a*1, 0*a, 0*1, e_1, a, 1, e_2]
 > }}}

 Wow, that's very bad and needs to be fixed. Note that
 `list(Q.path_semigroup())` gives the correct result.

 > Apparently somewhere deep in the code it believes that every edge label
 is one character long.

 It shouldn't.

 > And it seems to check for acyclicity twice

 ??

 In `all_paths`, I only see one location where it is tested (however, it is
 tested in each round of the recursion, which is bad).

 > (and, for some reason, also checks for absence of loops?).

 If I recall correctly, when the code was written, the graph code did say
 that a loop does not count as a cycle. But apparently this has changed.
 So, perhaps we can remove the `has_loops()` test.

 > Either way, is there a reason for this method to exist?

 For `all_paths`? Hm. When I think about it, I guess the iterator of the
 path semigroup is all what we need.

--
Ticket URL: <http://trac.sagemath.org/ticket/12630#comment:207>
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