#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
  King, Mathieu Guay-Paquet, Aladin  |  QuiverRepElement.__init__
  Virmaux                            |       Commit:
Report Upstream:  N/A                |  50eb7bde26c2a0c688e0500918597591097aa0cb
         Branch:                     |     Stopgaps:
  public/combinat/quivers            |
   Dependencies:  #12412, #12413,    |
  #14806, #15491, #15623, #15810     |
-------------------------------------+-------------------------------------
Changes (by SimonKing):

 * status:  needs_review => needs_work
 * work_issues:   => Fix QuiverRepElement.__init__


Comment:

 Replying to [comment:216 darij]:
 > Also, please double-check my edits.

 The edits look fine to me. I don't know what to do here:
 {{{
 #!diff
 @@ -1822,6 +1835,8 @@ class QuiverRep_generic(Module):
              # TODO: This 'if' shouldn't need to be here, but sage crashes
 when
              # coercing elements into a quotient that is zero.  Once Trac
 ticket
              # 12413 gets fixed only the else should need to execute.
 +            # NOTE: This is no longer necessary. Keep around for speed or
 +            # remove? -- darij, 16 Feb 2014
              if spaces[e[1]].dimension() == 0:
                  maps[e] = spaces[e[0]].Hom(spaces[e[1]]).zero_element()
              else:
 }}}

 No idea if it improves speed when keeping it in.

 > EDIT: smaller counterexample:
 > {{{
 > sage: Q = DiGraph({1: {}}).path_semigroup()
 > sage: M = Q.I(GF(3), 1)
 > sage: m = M.an_element()
 > sage: R = M.quotient(M)
 > sage: R(M.zero())
 > }}}

 It seems that either we need an `_element_constructor_` method for
 `QuiverRep_generic`, or we need to do something with
 `QuiverRepElement.__init__`. Namely, the following works:
 {{{
 sage: z = R(M.zero()._elems)
 sage: z._elems
 {1: ()}
 sage: M.zero()._elems
 {1: (0)}
 }}}
 And similarly
 {{{
 sage: m = M.an_element()
 sage: R(m)
 <HANGS>
 sage: R(m._elems)
 Element of quiver representation
 sage: _._elems
 {1: ()}
 sage: m._elems
 {1: (1)}
 }}}
 I think according to the specification of a quotient Q of X, it should
 always be possible to convert any element of X into Q.

 I suggest to do a typetest for the input of `QuiverRepElement.__init__`.

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