Sage: Ticket #4513: Action of MatrixGroup on a MPolynomialRing
https://trac.sagemath.org/ticket/4513
<p>
A group of n by n matrices over a field K acts on a polynomial ring with n variables over K. However, this is not implemented yet.
</p>
<p>
The following should work:
</p>
<pre class="wiki">sage: M = Matrix(GF(3),[[1,2],[1,1]])
sage: N = Matrix(GF(3),[[2,2],[2,1]])
sage: G = MatrixGroup([M,N])
sage: m = G.0
sage: n = G.1
sage: R.<x,y> = GF(3)[]
sage: m*x
x + y
sage: x*m
x  y
sage: (n*m)*x == n*(m*x)
True
sage: x*(n*m) == (x*n)*m
True
</pre><p>
On the other hand, we still want to have the usual action on vectors or matrices:
</p>
<pre class="wiki">sage: x = vector([1,1])
sage: x*m
(2, 0)
sage: m*x
(0, 2)
sage: (n*m)*x == n*(m*x)
True
sage: x*(n*m) == (x*n)*m
True
</pre><pre class="wiki">sage: x = matrix([[1,2],[1,1]])
sage: x*m
[0 1]
[2 0]
sage: m*x
[0 1]
[2 0]
sage: (n*m)*x == n*(m*x)
True
sage: x*(n*m) == (x*n)*m
True
</pre>
enus
Sage
https://trac.sagemath.org/chrome/site/logo_sagemath_trac.png
https://trac.sagemath.org/ticket/4513
Trac 1.1.6

SimonKing
Thu, 13 Nov 2008 22:11:34 GMT
owner, component changed
https://trac.sagemath.org/ticket/4513#comment:1
https://trac.sagemath.org/ticket/4513#comment:1
<ul>
<li><strong>owner</strong>
changed from <em>tbd</em> to <em>malb</em>
</li>
<li><strong>component</strong>
changed from <em>algebra</em> to <em>commutative algebra</em>
</li>
</ul>
<p>
Sorry, in the above code I forgot to copy/paste the line
</p>
<pre class="wiki">sage: R.<x,y> = GF(3)[]
</pre><p>
Moreover, for the reasons above, the ticket should belong to *commutative* algebra, not just algebra (I was clicking on the wrong button).
</p>
Ticket

SimonKing
Thu, 13 Nov 2008 22:23:29 GMT
summary changed
https://trac.sagemath.org/ticket/4513#comment:2
https://trac.sagemath.org/ticket/4513#comment:2
<ul>
<li><strong>summary</strong>
changed from <em>Action of MatrixGroup on a MPolynomialRing</em> to <em>[with patch, needs work] Action of MatrixGroup on a MPolynomialRing</em>
</li>
</ul>
<p>
The patch <code>matrixgroupCall.patch</code> is without doctests, and I am not sure if it couldn't be done better. So, it needs more work.
</p>
<p>
For example, Martin mentioned the possibility (off list) to create a pyx file with a Cython function, and then the call method would use that function. It might pay off here, since there are tight loops and since the method has to deal with tuples or lists. So Cdefining might speed things up.
</p>
<p>
Opinions?
</p>
<p>
At least, the following now works:
</p>
<pre class="wiki">sage: R.<x,y>=GF(3)[]
sage: M=Matrix(GF(3),[[1,2],[1,1]])
sage: G=MatrixGroup([M])
sage: g=G.0
sage: p=x*y^2
sage: g(p)
x^3 + x^2*y  x*y^2  y^3
</pre>
Ticket

mabshoff
Fri, 14 Nov 2008 05:40:27 GMT
milestone set
https://trac.sagemath.org/ticket/4513#comment:3
https://trac.sagemath.org/ticket/4513#comment:3
<ul>
<li><strong>milestone</strong>
set to <em>sage3.2.1</em>
</li>
</ul>
Ticket

SimonKing
Fri, 14 Nov 2008 07:26:53 GMT
attachment set
https://trac.sagemath.org/ticket/4513
https://trac.sagemath.org/ticket/4513
<ul>
<li><strong>attachment</strong>
set to <em>matrixgroupCall.patch</em>
</li>
</ul>
<p>
call method for <a class="missing wiki">MatrixGroupelement?</a> (this time with doc test) and left_matrix_action for MPolynomial
</p>
Ticket

SimonKing
Fri, 14 Nov 2008 07:43:22 GMT
owner, summary changed
https://trac.sagemath.org/ticket/4513#comment:4
https://trac.sagemath.org/ticket/4513#comment:4
<ul>
<li><strong>owner</strong>
changed from <em>malb</em> to <em>SimonKing</em>
</li>
<li><strong>summary</strong>
changed from <em>[with patch, needs work] Action of MatrixGroup on a MPolynomialRing</em> to <em>[with patch, needs review] Action of MatrixGroup on a MPolynomialRing</em>
</li>
</ul>
<p>
Some changes:
</p>
<p>
Nicolas ThiĆ©ry suggested to implement the action of matrix groups by a method for polynomials (I call the method <code>left_matrix_action</code>), and, for convenience, also provide a <code>__call__</code> method for <a class="missing wiki">MatrixGroupElement?</a> that refers to <code>left_matrix_action</code>.
</p>
<p>
This has several advantages:
</p>
<ul><li>The <code>__call__</code> works for any class that has a <code>left_matrix_action</code> method, hence, it is not apriori restricted to polynomials.
</li><li>I've put <code>left_matrix_action</code> into <code>multi_polynomial.pyx</code>, hence, I can use Cython.
</li></ul><p>
I have two Cython concerns left:
</p>
<ol><li>The innerst loop is
<pre class="wiki">prod([Im[k]**X[k] for k in xrange(n)])
</pre>where <code>k</code> is c'defined as <code>int</code>. Should this better be done in a forloop, rather then creating a list and calling <code>prod</code>?
</li><li>The variable <code>X</code> is of type <code>polydict.ETuple</code>, so I can not directly c'define <code>X</code>. One could do
<pre class="wiki"> cdef tuple X
for i from 0<i<l:
X = tuple(Expo[i])
</pre>But would this be faster?
</li></ol><p>
</p>
Ticket

SimonKing
Fri, 14 Nov 2008 09:32:17 GMT
attachment set
https://trac.sagemath.org/ticket/4513
https://trac.sagemath.org/ticket/4513
<ul>
<li><strong>attachment</strong>
set to <em>matrixgroupCallNew.patch</em>
</li>
</ul>
<p>
Another version of left_matrix_action
</p>
Ticket

SimonKing
Fri, 14 Nov 2008 09:36:29 GMT
https://trac.sagemath.org/ticket/4513#comment:5
https://trac.sagemath.org/ticket/4513#comment:5
<p>
In <code>matrixgroupCallNew.patch</code> (to be applied after the first patch), I modified the method according to my above concerns. In the example from my original post, the average running time improves from ~240 microseconds to 164 microseconds, and in a larger example it improved from 6.5s to 5.4s
</p>
<p>
Nevertheless, I made two separate patches, so that the reviewer (if there is any...) can compare by him or herself.
</p>
<p>
Cheers
</p>
<blockquote>
<p>
Simon
</p>
</blockquote>
Ticket

SimonKing
Fri, 14 Nov 2008 10:06:58 GMT
https://trac.sagemath.org/ticket/4513#comment:6
https://trac.sagemath.org/ticket/4513#comment:6
<p>
One observation:
Reverse the outer loop
</p>
<pre class="wiki"> for i from l>i>=0:
X = tuple(Expo[i])
c = Coef[i]
for k from 0<=k<n:
if X[k]:
c *= Im[k]**X[k]
q += c
</pre><p>
It results in a further improvement of computation time. Is this coincidence? Or is it since summation of polynomials should better start with the smallest summands?
</p>
<p>
Anyway, I didn't change the patch yet.
</p>
Ticket

SimonKing
Fri, 14 Nov 2008 12:17:51 GMT
attachment set
https://trac.sagemath.org/ticket/4513
https://trac.sagemath.org/ticket/4513
<ul>
<li><strong>attachment</strong>
set to <em>matrixgroupCallNew2.patch</em>
</li>
</ul>
<p>
Slight improvement; extended functionality
</p>
Ticket

SimonKing
Fri, 14 Nov 2008 12:25:13 GMT
https://trac.sagemath.org/ticket/4513#comment:7
https://trac.sagemath.org/ticket/4513#comment:7
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/4513#comment:6" title="Comment 6">SimonKing</a>:
</p>
<blockquote class="citation">
<p>
One observation:
Reverse the outer loop
</p>
<pre class="wiki"> for i from l>i>=0:
X = tuple(Expo[i])
c = Coef[i]
for k from 0<=k<n:
if X[k]:
c *= Im[k]**X[k]
q += c
</pre><p>
It results in a further improvement of computation time. Is this coincidence? Or is it since summation of polynomials should better start with the smallest summands?
</p>
</blockquote>
<p>
I made a couple of tests, and there was a small but consistent improvement. So, in the third patch (to be applied after the other two) I did it in that way.
</p>
<p>
The <code>left_matrix_action</code> shall eventually be used for computing the Reynolds operator of a group action; moreover, the Reynolds operator should be applicable on a <em>list</em> of polynomials. Then, the function would repeatedly compute the image of the ring variables under the action of some group element. But then it would be better to compute that image only <em>once</em> and pass it to <code>left_matrix_action</code>. The new patch provides this functionality. Example (continuing the original example):
</p>
<pre class="wiki">sage: L=[X.left_matrix_action(g) for X in R.gens()]
sage: p.left_matrix_action(L)
x^3 + x^2*y  x*y^2  y^3
</pre>
Ticket

wdj
Sat, 15 Nov 2008 06:05:33 GMT
https://trac.sagemath.org/ticket/4513#comment:8
https://trac.sagemath.org/ticket/4513#comment:8
<p>
I did confirm that the patches apply cleanly,
that
</p>
<pre class="wiki">sage: M = Matrix(GF(3),[[1,2],[1,1]])
sage: G = MatrixGroup([M])
sage: g = G.0
sage: g
[1 2]
[1 1]
sage: P.<x,y> = PolynomialRing(GF(3),2)
sage: p = x*y^2
sage: g(p)
x^3 + x^2*y  x*y^2  y^3
sage: (x+2*y)*(x+y)^2
x^3 + x^2*y  x*y^2  y^3
</pre><p>
works, and that the code seems welldocumented.
</p>
<p>
However, I can't do testing on this machine
(intrepid ubuntu) and some of the code is written in
Cython, which I can't really 100% vouch for.
Seems okay though and simple enough. Since speed was a
topic of the comments above, my only question is that the
segment
</p>
<pre class="wiki"> 396 for i from 0<=i<l:
397 X = Expo[i]
398 c = Coef[i]
399 q += c*prod([Im[k]**X[k] for k in xrange(n)])
</pre><p>
could probably be rewritten as a oneline sum, which might
(or might not) be faster.
</p>
<p>
Maybe Martin Albrecht could comment on the Cython code?
</p>
<p>
If Martin (for example) passes the Cython code, and the
docstrings pass sage testall, I would give it a positive review.
</p>
Ticket

malb
Sun, 23 Nov 2008 11:59:24 GMT
https://trac.sagemath.org/ticket/4513#comment:9
https://trac.sagemath.org/ticket/4513#comment:9
<pre class="wiki">cdef list Im
if isinstance(M,list):
Im = M
</pre><p>
shouldn't Im = M take care of the type checking anyway, so that a tryexcept block is sufficient? Also, I think maybe the type of p should be checked in the <code>__call__</code> method and a friendly error message raised? Not sure though.
</p>
Ticket

malb
Sun, 23 Nov 2008 12:01:25 GMT
https://trac.sagemath.org/ticket/4513#comment:10
https://trac.sagemath.org/ticket/4513#comment:10
<p>
Cython code looks good (just read it).
</p>
Ticket

was
Fri, 28 Nov 2008 07:25:53 GMT
summary changed
https://trac.sagemath.org/ticket/4513#comment:11
https://trac.sagemath.org/ticket/4513#comment:11
<ul>
<li><strong>summary</strong>
changed from <em>[with patch, needs review] Action of MatrixGroup on a MPolynomialRing</em> to <em>[with patch, needs work] Action of MatrixGroup on a MPolynomialRing</em>
</li>
</ul>
<p>
REFEREE REPORT:
</p>
<p>
Check this out:
</p>
<pre class="wiki">sage: R.<x,y> = GF(3)[]
sage: M=Matrix(GF(3),[[1,2],[1,1]])
sage: M2=Matrix(GF(3),[[1,2],[1,0]])
sage: G=MatrixGroup([M, M2])
sage: (G.0*G.1)(p)
x^2*y + x*y^2  y^3
sage: G.0(G.1(p))
x^2*y + x*y^2 + y^3
</pre><p>
Oops, your *left action*  which it better be if you use that notation  ain't a left action! Oops
</p>
<blockquote>
<p>
 William
</p>
</blockquote>
Ticket

SimonKing
Sat, 29 Nov 2008 14:38:06 GMT
https://trac.sagemath.org/ticket/4513#comment:12
https://trac.sagemath.org/ticket/4513#comment:12
<p>
Really Oops. Sorry.
</p>
<p>
I implemented it analogous to what is done in Singular. Perhaps I am mistaken in the sense that it is supposed to be a right action (which then would deserve another notation).
</p>
<pre class="wiki">sage: (G.0(G.1((p))))
x^2*y + x*y^2  y^3
sage: (G.1*G.0)(p)
x^2*y + x*y^2  y^3
</pre><p>
However, I think it doesn't matter what Singular does. I will look up the literature whether one really wants a <em>right</em> or <em>left</em> action, and how the left action is supposed to be.
</p>
Ticket

SimonKing
Sat, 29 Nov 2008 14:46:36 GMT
https://trac.sagemath.org/ticket/4513#comment:13
https://trac.sagemath.org/ticket/4513#comment:13
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/4513#comment:12" title="Comment 12">SimonKing</a>:
</p>
<blockquote class="citation">
<p>
However, I think it doesn't matter what Singular does. I will look up the literature whether one really wants a <em>right</em> or <em>left</em> action...
</p>
</blockquote>
<p>
I mean, something like "one has a left action on a variety, which gives rise to a right action on the coordinate ring". I have to sort it out.
</p>
<p>
If this is the case, then it should be better implemented in the <code>__mul__</code> method of polynomials, isn't it? Such as
</p>
<pre class="wiki">sage: p*G.1*G.0==p*(G.1*G.0)
True
</pre>
Ticket

was
Sat, 29 Nov 2008 18:55:25 GMT
https://trac.sagemath.org/ticket/4513#comment:14
https://trac.sagemath.org/ticket/4513#comment:14
<p>
Left actions should use <span class="underline">call</span>, right actions should use *exponentiation*.
</p>
<p>
Substitution is a right action. Substitution of the *inverse* is a left action.
</p>
Ticket

SimonKing
Sat, 17 Jul 2010 13:43:34 GMT
description changed; upstream set
https://trac.sagemath.org/ticket/4513#comment:15
https://trac.sagemath.org/ticket/4513#comment:15
<ul>
<li><strong>description</strong>
modified (<a href="/ticket/4513?action=diff&version=15">diff</a>)
</li>
<li><strong>upstream</strong>
set to <em>N/A</em>
</li>
</ul>
Ticket

SimonKing
Sat, 17 Jul 2010 13:49:02 GMT
attachment set
https://trac.sagemath.org/ticket/4513
https://trac.sagemath.org/ticket/4513
<ul>
<li><strong>attachment</strong>
set to <em>trac4513_matrix_action_on_polynomials.patch</em>
</li>
</ul>
<p>
Replaces the other patches
</p>
Ticket

SimonKing
Sat, 17 Jul 2010 13:51:57 GMT
status changed; cc, author set
https://trac.sagemath.org/ticket/4513#comment:16
https://trac.sagemath.org/ticket/4513#comment:16
<ul>
<li><strong>status</strong>
changed from <em>needs_work</em> to <em>needs_review</em>
</li>
<li><strong>cc</strong>
<em>wdj</em> <em>malb</em> added
</li>
<li><strong>author</strong>
set to <em>Simon King</em>
</li>
</ul>
<p>
The new patch solves the problems addressed in the new ticket description.
</p>
<p>
I worked on top of several other tickets, since I somehow cared about number fields. To be precise, I did
</p>
<pre class="wiki">hg_sage.import_patch('http://trac.sagemath.org/sage_trac/rawattachment/ticket/9205/trac_9205discrete_log.patch')
hg_sage.import_patch('http://trac.sagemath.org/sage_trac/rawattachment/ticket/9205/trac_9205doctest.patch')
hg_sage.import_patch('http://trac.sagemath.org/sage_trac/rawattachment/ticket/9438/trac_9438_IntegerMod_log_vs_PARI.patch')
hg_sage.import_patch('http://trac.sagemath.org/sage_trac/rawattachment/ticket/9423/trac_9423_gap_for_numberfields.patch')
hg_sage.import_patch('http://trac.sagemath.org/sage_trac/rawattachment/ticket/8909/8909_gap2cyclotomic.patch')
hg_sage.import_patch('http://trac.sagemath.org/sage_trac/rawattachment/ticket/8909/trac_8909_catch_exception.patch')
hg_sage.import_patch('http://trac.sagemath.org/sage_trac/rawattachment/ticket/5618/trac_5618_gap_for_cyclotomic_fields.patch')
</pre><p>
before creating my pacth. But this shouldn't matter, I guess the patch applies cleanly to <code>sage4.4</code>.
</p>
Ticket

SimonKing
Sat, 17 Jul 2010 13:52:17 GMT
summary changed
https://trac.sagemath.org/ticket/4513#comment:17
https://trac.sagemath.org/ticket/4513#comment:17
<ul>
<li><strong>summary</strong>
changed from <em>[with patch, needs work] Action of MatrixGroup on a MPolynomialRing</em> to <em>Action of MatrixGroup on a MPolynomialRing</em>
</li>
</ul>
Ticket

SimonKing
Sat, 17 Jul 2010 13:53:27 GMT
https://trac.sagemath.org/ticket/4513#comment:18
https://trac.sagemath.org/ticket/4513#comment:18
<p>
I made Cc to malb and wdj, since it both concerns polynomials and groups.
</p>
Ticket

nharris
Fri, 05 Nov 2010 21:37:21 GMT
status changed
https://trac.sagemath.org/ticket/4513#comment:19
https://trac.sagemath.org/ticket/4513#comment:19
<ul>
<li><strong>status</strong>
changed from <em>needs_review</em> to <em>needs_work</em>
</li>
</ul>
<p>
Sorry to be a nag, but matrix_group_element.py doesn't pass the doctests:
</p>
<pre class="wiki">
matrix_group_element.py
SCORE matrix_group_element.py: 87% (14 of 16)
Missing documentation:
* is_MatrixGroupElement(x):
* __invert__(self):

</pre><p>
This is the same doctest score that the old unpatched file gets too.
</p>
Ticket

SimonKing
Sat, 06 Nov 2010 12:37:25 GMT
status changed
https://trac.sagemath.org/ticket/4513#comment:20
https://trac.sagemath.org/ticket/4513#comment:20
<ul>
<li><strong>status</strong>
changed from <em>needs_work</em> to <em>needs_review</em>
</li>
</ul>
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/4513#comment:19" title="Comment 19">nharris</a>:
</p>
<blockquote class="citation">
<p>
Sorry to be a nag, but matrix_group_element.py doesn't pass the doctests:
</p>
</blockquote>
<p>
Which one fails?
</p>
<blockquote class="citation">
<pre class="wiki">
matrix_group_element.py
SCORE matrix_group_element.py: 87% (14 of 16)
Missing documentation:
* is_MatrixGroupElement(x):
* __invert__(self):

</pre><p>
This is the same doctest score that the old unpatched file gets too.
</p>
</blockquote>
<p>
Of course there is no change. I added code to one already existing method, extending its functionality, and added tests for the new functionality. But this patch is not about inversion of matrix group elements, and I think the patch is not supposed to add documentation to methods that are not in its scope.
</p>
<p>
So, unless a doc test <em>fails</em> because of my patch, the criticism about not raising the doc test coverage is invalid.
</p>
Ticket

nharris
Sat, 06 Nov 2010 17:57:37 GMT
https://trac.sagemath.org/ticket/4513#comment:21
https://trac.sagemath.org/ticket/4513#comment:21
<p>
I'm sorry if I did something that I shouldn't have. I was just following this guideline for reviewing patches (found here <a href="http://www.sagemath.org/doc/developer/trac.html#sectionreviewpatches">http://www.sagemath.org/doc/developer/trac.html#sectionreviewpatches</a>):
</p>
<p>
Is it documented sufficiently, including both explanation and doctests? This is very important: all code in Sage must have doctests, <strong>so even if the patch is for code which did not have a doctest before, the new version must include one</strong>. In particular, all new code must be 100% doctested. Use the command sage coverage <files> to see the coverage percentage of <files>.
</p>
Ticket

SimonKing
Mon, 08 Nov 2010 13:35:44 GMT
https://trac.sagemath.org/ticket/4513#comment:22
https://trac.sagemath.org/ticket/4513#comment:22
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/4513#comment:21" title="Comment 21">nharris</a>:
</p>
<blockquote class="citation">
<p>
Is it documented sufficiently, including both explanation and doctests? This is very important: all code in Sage must have doctests, <strong>so even if the patch is for code which did not have a doctest before, the new version must include one</strong>. In particular, all new code must be 100% doctested. Use the command sage coverage <files> to see the coverage percentage of <files>.
</p>
</blockquote>
<p>
If you would read the patch, you would find:
</p>
<ol><li>The patch adds one case to an existing method, namely <code>_act_on_</code>.
</li></ol><ol start="2"><li>The patch adds several doc tests to <code>_act_on_</code>, covering the new functionality.
</li></ol><ol start="3"><li>The original version of <code>_act_on_</code> already had a doc test.
</li></ol><p>
In particular, it is <em>impossible</em> to detect the doc test change without reading the patch, by just using <code>sage coverage</code>: The coverage script detects whether <code>_act_on_</code> has any test (this is the case with or without my patch), but it does not detect whether the patch extends existing documentation to cover a new case.
</p>
Ticket

davidloeffler
Fri, 31 Dec 2010 17:16:42 GMT
https://trac.sagemath.org/ticket/4513#comment:23
https://trac.sagemath.org/ticket/4513#comment:23
<p>
Apply <code>trac4513_matrix_action_on_polynomials.patch</code>
</p>
<p>
(for patchbot  it's trying to apply all the patches at once)
</p>
Ticket

davidloeffler
Fri, 31 Dec 2010 17:17:36 GMT
https://trac.sagemath.org/ticket/4513#comment:24
https://trac.sagemath.org/ticket/4513#comment:24
<p>
<code>Apply trac4513_matrix_action_on_polynomials.patch</code>
</p>
<p>
(maybe it will work this time?)
</p>
Ticket

davidloeffler
Fri, 31 Dec 2010 17:22:00 GMT
https://trac.sagemath.org/ticket/4513#comment:25
https://trac.sagemath.org/ticket/4513#comment:25
<pre class="wiki">Apply trac4513_matrix_action_on_polynomials.patch
</pre><p>
(For some reason patchbot's not picking this up  I apologise to all human beings reading this for the spam!)
</p>
Ticket

davidloeffler
Thu, 20 Jan 2011 09:09:47 GMT
status changed; reviewer set
https://trac.sagemath.org/ticket/4513#comment:26
https://trac.sagemath.org/ticket/4513#comment:26
<ul>
<li><strong>status</strong>
changed from <em>needs_review</em> to <em>needs_work</em>
</li>
<li><strong>reviewer</strong>
set to <em>David Loeffler, William Stein</em>
</li>
</ul>
<p>
I've had a look at the patch, and I don't think you've addressed William's comment <a class="closed ticket" href="https://trac.sagemath.org/ticket/14" title="defect: SAGE notebook freeze's firefox windows client when jsmath enabled (closed: fixed)">#14</a> from two years back. The following makes me *extremely* uneasy:
</p>
<pre class="wiki">sage: G = GL(3, 7)
sage: R.<a, b> = GF(7)[]
sage: G.0 * a
[3*a 0 0]
[ 0 a 0]
[ 0 0 a]
sage: R.<a,b,c> = GF(7)[]
sage: G.0 * a
3*a
</pre><p>
It looks like there's some preexisting coercion mechanism which returns elements of the matrix space over R, and you're overriding it in one case with an alternative coercion that returns completely different answers; this violates a Sage coercion axiom (where there are multiple paths in the coercion diagram, all must give the same answer up to numerical precision issues). Moreover, if you look at the patchbot logs it seems to have found an example where the preexisting coercion gets picked up instead of the new one.
</p>
<p>
Sorry, that's a thumbs down from me.
</p>
<p>
David
</p>
Ticket

jdemeyer
Tue, 13 Aug 2013 15:35:53 GMT
milestone changed
https://trac.sagemath.org/ticket/4513#comment:27
https://trac.sagemath.org/ticket/4513#comment:27
<ul>
<li><strong>milestone</strong>
changed from <em>sage5.11</em> to <em>sage5.12</em>
</li>
</ul>
Ticket

vbraun_spam
Thu, 30 Jan 2014 21:20:52 GMT
milestone changed
https://trac.sagemath.org/ticket/4513#comment:28
https://trac.sagemath.org/ticket/4513#comment:28
<ul>
<li><strong>milestone</strong>
changed from <em>sage6.1</em> to <em>sage6.2</em>
</li>
</ul>
Ticket

vbraun_spam
Tue, 06 May 2014 15:20:58 GMT
milestone changed
https://trac.sagemath.org/ticket/4513#comment:29
https://trac.sagemath.org/ticket/4513#comment:29
<ul>
<li><strong>milestone</strong>
changed from <em>sage6.2</em> to <em>sage6.3</em>
</li>
</ul>
Ticket

vbraun_spam
Sun, 10 Aug 2014 16:51:03 GMT
milestone changed
https://trac.sagemath.org/ticket/4513#comment:30
https://trac.sagemath.org/ticket/4513#comment:30
<ul>
<li><strong>milestone</strong>
changed from <em>sage6.3</em> to <em>sage6.4</em>
</li>
</ul>
Ticket