Sage: Ticket #17540: Poset.dimension
https://trac.sagemath.org/ticket/17540
<p>
With this code, Sage at last can compute the dimension of a Poset.
</p>
<p>
<a class="ext-link" href="http://en.wikipedia.org/wiki/Order_dimension"><span class="icon"></span>http://en.wikipedia.org/wiki/Order_dimension</a>
</p>
<p>
Nathann
</p>
<p>
See <a class="ext-link" href="https://groups.google.com/d/topic/sage-devel/qEE9YUAPA4g/discussion"><span class="icon"></span>https://groups.google.com/d/topic/sage-devel/qEE9YUAPA4g/discussion</a>
</p>
en-usSagehttps://trac.sagemath.org/chrome/site/logo_sagemath_trac.png
https://trac.sagemath.org/ticket/17540
Trac 1.1.6ncohenTue, 23 Dec 2014 11:46:36 GMTstatus changed; branch set
https://trac.sagemath.org/ticket/17540#comment:1
https://trac.sagemath.org/ticket/17540#comment:1
<ul>
<li><strong>status</strong>
changed from <em>new</em> to <em>needs_review</em>
</li>
<li><strong>branch</strong>
set to <em>u/ncohen/17540</em>
</li>
</ul>
TicketgitTue, 23 Dec 2014 11:47:23 GMTcommit set
https://trac.sagemath.org/ticket/17540#comment:2
https://trac.sagemath.org/ticket/17540#comment:2
<ul>
<li><strong>commit</strong>
set to <em>216d59efca2e03ebce6e9fd76f150abb32e369d5</em>
</li>
</ul>
<p>
Branch pushed to git repo; I updated commit sha1. New commits:
</p>
<table class="wiki">
<tr><td><a class="ext-link" href="http://git.sagemath.org/sage.git/commit/?id=216d59efca2e03ebce6e9fd76f150abb32e369d5"><span class="icon"></span>216d59e</a></td><td><code>trac #17540: Poset.dimension()</code>
</td></tr></table>
TicketncohenTue, 23 Dec 2014 13:35:27 GMTdescription changed
https://trac.sagemath.org/ticket/17540#comment:3
https://trac.sagemath.org/ticket/17540#comment:3
<ul>
<li><strong>description</strong>
modified (<a href="/ticket/17540?action=diff&version=3">diff</a>)
</li>
</ul>
TicketdimpaseTue, 23 Dec 2014 13:53:29 GMT
https://trac.sagemath.org/ticket/17540#comment:4
https://trac.sagemath.org/ticket/17540#comment:4
<p>
Is the ticket description wrong? I can't review code that is not supposed to work :-)
</p>
TicketncohenTue, 23 Dec 2014 13:56:04 GMT
https://trac.sagemath.org/ticket/17540#comment:5
https://trac.sagemath.org/ticket/17540#comment:5
<blockquote class="citation">
<p>
Is the ticket description wrong? I can't review code that is not supposed to work :-)
</p>
</blockquote>
<p>
Don't get it. You talk about the missing () to dimension ?
</p>
TicketdimpaseTue, 23 Dec 2014 14:04:43 GMT
https://trac.sagemath.org/ticket/17540#comment:6
https://trac.sagemath.org/ticket/17540#comment:6
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/17540#comment:5" title="Comment 5">ncohen</a>:
</p>
<blockquote class="citation">
<blockquote class="citation">
<p>
Is the ticket description wrong? I can't review code that is not supposed to work :-)
</p>
</blockquote>
<p>
Don't get it. You talk about the missing () to dimension ?
</p>
</blockquote>
<pre class="wiki">With this code, Sage can compute the dimension of a Poset.
http://en.wikipedia.org/wiki/Order_dimension
Turns out that we were not able to.
</pre><p>
<strong>we are not able to</strong>
</p>
TicketncohenTue, 23 Dec 2014 14:08:41 GMTdescription changed
https://trac.sagemath.org/ticket/17540#comment:7
https://trac.sagemath.org/ticket/17540#comment:7
<ul>
<li><strong>description</strong>
modified (<a href="/ticket/17540?action=diff&version=7">diff</a>)
</li>
</ul>
<p>
I am glad to see this very confusing typo corrected. Thank you for bringing it to my attention.
</p>
TicketdimpaseTue, 23 Dec 2014 15:30:47 GMTdescription changed
https://trac.sagemath.org/ticket/17540#comment:8
https://trac.sagemath.org/ticket/17540#comment:8
<ul>
<li><strong>description</strong>
modified (<a href="/ticket/17540?action=diff&version=8">diff</a>)
</li>
</ul>
<p>
IMHO there should be a separate function to compute the chromatic number of a hypergraph.
</p>
TicketncohenTue, 23 Dec 2014 15:33:24 GMT
https://trac.sagemath.org/ticket/17540#comment:9
https://trac.sagemath.org/ticket/17540#comment:9
<blockquote class="citation">
<p>
IMHO there should be a separate function to compute the chromatic number of a hypergraph.
</p>
</blockquote>
<p>
It is true, but we could not call it from here. The reason why this code is so long is that we avoid building the LP from the start every time we need to add a constraint. It is only re-built when we notice that the new hypergraph is not k-colorable anymore.
</p>
<p>
Nathann
</p>
<p>
P.S. : Actually I will write a LP for that. I will surely need it some day.
</p>
TicketncohenTue, 23 Dec 2014 16:06:18 GMT
https://trac.sagemath.org/ticket/17540#comment:10
https://trac.sagemath.org/ticket/17540#comment:10
<blockquote class="citation">
<p>
P.S. : Actually I will write a LP for that. I will surely need it some day.
</p>
</blockquote>
<p>
Done at <a class="closed ticket" href="https://trac.sagemath.org/ticket/17542" title="enhancement: IncidenceStructure.coloring (closed: fixed)">#17542</a>.
</p>
<p>
Nathann
</p>
TicketdimpaseTue, 23 Dec 2014 16:12:49 GMT
https://trac.sagemath.org/ticket/17540#comment:11
https://trac.sagemath.org/ticket/17540#comment:11
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/17540#comment:9" title="Comment 9">ncohen</a>:
</p>
<blockquote class="citation">
<blockquote class="citation">
<p>
IMHO there should be a separate function to compute the chromatic number of a hypergraph.
</p>
</blockquote>
<p>
It is true, but we could not call it from here. The reason why this code is so long is that we avoid building the LP from the start every time we need to add a constraint. It is only re-built when we notice that the new hypergraph is not k-colorable anymore.
</p>
</blockquote>
<p>
Hmm, why do you need to rebuild the hypergraph? The latter is fixed. What is not fixed is the number of colours you need, and you don't want to rebuild the ILP from scratch for this. Why is this poset-specific?
</p>
TicketncohenTue, 23 Dec 2014 16:18:41 GMT
https://trac.sagemath.org/ticket/17540#comment:12
https://trac.sagemath.org/ticket/17540#comment:12
<blockquote class="citation">
<p>
Hmm, why do you need to rebuild the hypergraph? The latter is fixed. What is not fixed is the number of colours you need, and you don't want to rebuild the ILP from scratch for this. Why is this poset-specific?
</p>
</blockquote>
<p>
On the paper, the hypergraph is very well defined and you have to compute its chromatic number. In practice, you cannot build the hypergraph because the list of its edges is too huge (I would not know how to do that anyway). So what we do is start with *some* of the edges in the hypergraph, and find a coloring.
</p>
<p>
When we have a coloring, we can check that it is valid by building the corresponding graphs --> if all are acyclic that's fine and we are done.
</p>
<p>
If one is not acyclic, however, we have found a cycle --> a new set to add to our hypergraph. And so we re-color this thing again.
</p>
<p>
This being said, when you find a new set in your hypergraph, you only have to add one constraint and then you can call <code>.solve</code> again. If we called <code>.coloring()</code> each time, we would in fact be building a new LP and solve it from scratch every time we add a constraint, and that's a waste of computations that this branch avoids.
</p>
<p>
Nathann
</p>
TicketdimpaseTue, 23 Dec 2014 18:00:31 GMT
https://trac.sagemath.org/ticket/17540#comment:13
https://trac.sagemath.org/ticket/17540#comment:13
<p>
according to [FT00], instead of the hypergraph on <code>inc(P)</code>, it suffices to restrict to the induced subhypergraph of the critical incomparable pairs (see Lemma 3.3 in [loc.cit.]), and then do the same chromatic number computation.
</p>
TickettmonteilTue, 23 Dec 2014 18:05:14 GMT
https://trac.sagemath.org/ticket/17540#comment:14
https://trac.sagemath.org/ticket/17540#comment:14
<p>
Concerning the <code>certificate</code>, it looks like a half-certificate ; is the algorithm able to provide an evidence that no smaller set of linear ordering can generate the poset by intersection ?
</p>
<p>
Also, the "just to be sure" section at the end of the code should be run only if some <code>check</code> option is set to <code>True</code> since the algorithm is supposed to work without this ?
</p>
<p>
By the way, in the <code>INPUT</code> section, it seems more common to write <code>``certificate`` - boolean (default: ``False``)</code> than to write the default at the end of the description (i first thought the information was missing).
</p>
TicketncohenTue, 23 Dec 2014 18:08:29 GMT
https://trac.sagemath.org/ticket/17540#comment:15
https://trac.sagemath.org/ticket/17540#comment:15
<blockquote class="citation">
<p>
according to [FT00], instead of the hypergraph on <code>inc(P)</code>, it suffices to restrict to the induced subhypergraph of the critical incomparable pairs (see Lemma 3.3 in [loc.cit.]), and then do the same chromatic number computation.
</p>
</blockquote>
<p>
I do not see how that would change anything. You are just telling me that only a subset of points of the hypergraph matters, but that does not give me the set of edges that only involve critical pairs.
</p>
<p>
Nathann
</p>
TicketncohenTue, 23 Dec 2014 18:11:41 GMT
https://trac.sagemath.org/ticket/17540#comment:16
https://trac.sagemath.org/ticket/17540#comment:16
<blockquote class="citation">
<p>
Concerning the <code>certificate</code>, it looks like a half-certificate ; is the algorithm able to provide an evidence that no smaller set of linear ordering can generate the poset by intersection ?
</p>
</blockquote>
<p>
No it cannot. The problem is NP, so there is a certificate for a 'yes' answer, but it is not co-NP so there is no certificate for the other side. (Insert 'polynomial' wherever it fits in the sentence, and assume P!=NP)
</p>
<blockquote class="citation">
<p>
Also, the "just to be sure" section at the end of the code should be run only if some <code>check</code> option is set to <code>True</code> since the algorithm is supposed to work without this ?
</p>
</blockquote>
<p>
I do not think that it should, considering the running time of the algorithm. That's almost for free comparatively, so I don't see the need to make it optional.
</p>
<blockquote class="citation">
<p>
By the way, in the <code>INPUT</code> section, it seems more common to write <code>``certificate`` - boolean (default: ``False``)</code> than to write the default at the end of the description (i first thought the information was missing).
</p>
</blockquote>
<p>
Well I usually write it the way it is written. If you want to change it you are welcome to add a commit, but if it is just about enforcing the coding style you like I will not code it for you <code>:-P</code>
</p>
<p>
Nathann
</p>
TickettmonteilTue, 23 Dec 2014 18:18:15 GMT
https://trac.sagemath.org/ticket/17540#comment:17
https://trac.sagemath.org/ticket/17540#comment:17
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/17540#comment:16" title="Comment 16">ncohen</a>:
</p>
<blockquote class="citation">
<blockquote class="citation">
<p>
By the way, in the <code>INPUT</code> section, it seems more common to write <code>``certificate`` - boolean (default: ``False``)</code> than to write the default at the end of the description (i first thought the information was missing).
</p>
</blockquote>
<p>
Well I usually write it the way it is written. If you want to change it you are welcome to add a commit, but if it is just about enforcing the coding style you like I will not code it for you <code>:-P</code>
</p>
</blockquote>
<p>
This is not the coding style i like, it is about coding conventions, a feature that allow various people to collectively work on some source code, see <a class="ext-link" href="http://sagemath.org/doc/developer/coding_basics.html#documentation-strings"><span class="icon"></span>http://sagemath.org/doc/developer/coding_basics.html#documentation-strings</a>
</p>
TicketjmantysaloTue, 23 Dec 2014 22:00:58 GMT
https://trac.sagemath.org/ticket/17540#comment:18
https://trac.sagemath.org/ticket/17540#comment:18
<p>
There seems to be no check for argument, i.e. <code>certificate='cat-says-meow'</code> does not raise an error. Should it?
</p>
<p>
One-line explanation on TOC should end with dot.
</p>
<p>
Does this work with empty poset? Checking just now, but compiling is slooow with this machine.
</p>
TicketdimpaseTue, 23 Dec 2014 22:40:14 GMT
https://trac.sagemath.org/ticket/17540#comment:19
https://trac.sagemath.org/ticket/17540#comment:19
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/17540#comment:15" title="Comment 15">ncohen</a>:
</p>
<blockquote class="citation">
<blockquote class="citation">
<p>
according to [FT00], instead of the hypergraph on <code>inc(P)</code>, it suffices to restrict to the induced subhypergraph of the critical incomparable pairs (see Lemma 3.3 in [loc.cit.]), and then do the same chromatic number computation.
</p>
</blockquote>
<p>
I do not see how that would change anything. You are just telling me that only a subset of points of the hypergraph matters, but that does not give me the set of edges that only involve critical pairs.
</p>
</blockquote>
<p>
It seems that you get a smaller ILP; you run your acyclicity test and compute cycles just as you do, but only leave critical pairs there (i.e. you take the subhypergraph induced on the critical pairs --- the edges get intersected with the subset of critical pairs).
</p>
TicketncohenWed, 24 Dec 2014 02:44:44 GMT
https://trac.sagemath.org/ticket/17540#comment:20
https://trac.sagemath.org/ticket/17540#comment:20
<blockquote class="citation">
<p>
This is not the coding style i like, it is about coding conventions, a feature that allow various people to collectively work on some source code, see <a class="ext-link" href="http://sagemath.org/doc/developer/coding_basics.html#documentation-strings"><span class="icon"></span>http://sagemath.org/doc/developer/coding_basics.html#documentation-strings</a>
</p>
</blockquote>
<p>
If the fact that I wrote the defaut value at the end of the sentence instead of the beginning is a problem for you, add a commit. You will find many other such instances in the same document.
</p>
<p>
Nathann
</p>
TicketncohenWed, 24 Dec 2014 03:15:29 GMT
https://trac.sagemath.org/ticket/17540#comment:21
https://trac.sagemath.org/ticket/17540#comment:21
<blockquote class="citation">
<p>
There seems to be no check for argument, i.e. <code>certificate='cat-says-meow'</code> does not raise an error. Should it?
</p>
</blockquote>
<p>
I do not think that there should, especially when the argument is boolean (not even a string) and when it does not produce any bug whatever happens. Chekking this kind of stuff is useful when a string is expected, but really if we begin to check every single arguments of every function like that, then half of the python code we have in Sage will be checking the type of input because Python does not do it instead.
</p>
<blockquote class="citation">
<p>
One-line explanation on TOC should end with dot.
</p>
</blockquote>
<p>
Done
</p>
<blockquote class="citation">
<p>
Does this work with empty poset? Checking just now, but compiling is slooow with this machine.
</p>
</blockquote>
<p>
Done (Jori: we have a 4h30 difference in our timezones)
</p>
<p>
Nathann
</p>
TicketgitWed, 24 Dec 2014 03:16:28 GMTcommit changed
https://trac.sagemath.org/ticket/17540#comment:22
https://trac.sagemath.org/ticket/17540#comment:22
<ul>
<li><strong>commit</strong>
changed from <em>216d59efca2e03ebce6e9fd76f150abb32e369d5</em> to <em>59f0435008dccc2f06d46c2b1293258c694487fa</em>
</li>
</ul>
<p>
Branch pushed to git repo; I updated commit sha1. New commits:
</p>
<table class="wiki">
<tr><td><a class="ext-link" href="http://git.sagemath.org/sage.git/commit/?id=ced5affe3b9970532b365ebbd902061ca88905c0"><span class="icon"></span>ced5aff</a></td><td><code>trac #17540: Empty poset</code>
</td></tr><tr><td><a class="ext-link" href="http://git.sagemath.org/sage.git/commit/?id=d5dd205b613a3a38e20f0205e3b80cd8cd4ae53c"><span class="icon"></span>d5dd205</a></td><td><code>trac #17540: final dot</code>
</td></tr><tr><td><a class="ext-link" href="http://git.sagemath.org/sage.git/commit/?id=59f0435008dccc2f06d46c2b1293258c694487fa"><span class="icon"></span>59f0435</a></td><td><code>trac #17540: write the default value at the beginning</code>
</td></tr></table>
TicketncohenWed, 24 Dec 2014 03:23:44 GMT
https://trac.sagemath.org/ticket/17540#comment:23
https://trac.sagemath.org/ticket/17540#comment:23
<blockquote class="citation">
<p>
It seems that you get a smaller ILP; you run your acyclicity test and compute cycles just as you do, but only leave critical pairs there (i.e. you take the subhypergraph induced on the critical pairs --- the edges get intersected with the subset of critical pairs).
</p>
</blockquote>
<p>
I see. Well, I am not very eager to dig into that in order to see how I could list all those critical pairs, then add this to this already non-trivial code, given that I am not very convinced that it will make any difference in the runtimes <code>:-P</code>
</p>
<p>
Nathann
</p>
TicketncohenFri, 06 Feb 2015 09:29:52 GMT
https://trac.sagemath.org/ticket/17540#comment:24
https://trac.sagemath.org/ticket/17540#comment:24
<p>
Ping ?...
</p>
TicketncohenWed, 11 Mar 2015 12:40:20 GMT
https://trac.sagemath.org/ticket/17540#comment:25
https://trac.sagemath.org/ticket/17540#comment:25
<p>
Piiiiing ?...
</p>
TicketncohenTue, 14 Apr 2015 14:12:03 GMT
https://trac.sagemath.org/ticket/17540#comment:26
https://trac.sagemath.org/ticket/17540#comment:26
<p>
Piiiiiiiiiiiiiiiiiing ?...
</p>
TicketdimpaseTue, 14 Apr 2015 14:51:16 GMT
https://trac.sagemath.org/ticket/17540#comment:27
https://trac.sagemath.org/ticket/17540#comment:27
<p>
OK, OK, just a bit of patience...
</p>
TicketdimpaseTue, 14 Apr 2015 15:08:33 GMT
https://trac.sagemath.org/ticket/17540#comment:28
https://trac.sagemath.org/ticket/17540#comment:28
<p>
what is your default LP solver (on which that was tested)?
For me
</p>
<pre class="wiki">sage: G = graphs.CompleteBipartiteGraph(3,3)
sage: P = Poset(DiGraph({(u,v):[u,v] for u,v,_ in G.edges()}))
sage: P.dimension()
</pre><p>
runs, and runs, and runs (that's with GLPK).
</p>
TicketncohenTue, 14 Apr 2015 15:10:18 GMT
https://trac.sagemath.org/ticket/17540#comment:29
https://trac.sagemath.org/ticket/17540#comment:29
<p>
sigh... That's CPLEX <code>:-/</code>
</p>
TicketncohenTue, 14 Apr 2015 15:16:25 GMT
https://trac.sagemath.org/ticket/17540#comment:30
https://trac.sagemath.org/ticket/17540#comment:30
<p>
With GLPK for <code>G=K_{2,3}</code> it returns 3 in 2.5s
</p>
<pre class="wiki">sage: %time P.dimension()
CPU times: user 2.58 s, sys: 4 ms, total: 2.59 s
Wall time: 2.58 s
3
</pre><p>
With CPLEX it takes 252ms. And for <code>G=K_{3,3}</code> it returns 4 in 6s.
</p>
<p>
Nathann
</p>
TicketdimpaseTue, 14 Apr 2015 15:42:18 GMT
https://trac.sagemath.org/ticket/17540#comment:31
https://trac.sagemath.org/ticket/17540#comment:31
<p>
for G=K33 and with GLPK your code seems to be looping forever. In the code you call <code>init_LP</code> in the loop, rather than doing a warm restart. This seems to defeat the purpose of constraint generation.
</p>
<p>
PS. OK, I see, you increase k every time it goes up. Anyhow, one gets stuck on some LP at k=3 here...
</p>
TicketncohenTue, 14 Apr 2015 15:59:31 GMT
https://trac.sagemath.org/ticket/17540#comment:32
https://trac.sagemath.org/ticket/17540#comment:32
<blockquote class="citation">
<p>
PS. OK, I see, you increase k every time it goes up.
</p>
</blockquote>
<p>
Indeed.
</p>
<blockquote class="citation">
<p>
Anyhow, one gets stuck on some LP at k=3 here...
</p>
</blockquote>
<p>
Well, it depends on the graph. And of course it depends on the solver <code>:-P</code>
</p>
TicketdimpaseTue, 14 Apr 2015 16:15:32 GMT
https://trac.sagemath.org/ticket/17540#comment:33
https://trac.sagemath.org/ticket/17540#comment:33
<p>
OK, tried this with GUROBI, it did work for K33. Trying for Petersen graph now :-)
</p>
<p>
typo:
</p>
<pre class="wiki">+ # We check that all color class induce an acyclic graph, and add a
+ # constraint otherwise.
</pre><p>
do you mean <code>classes</code> ?
</p>
TicketncohenTue, 14 Apr 2015 16:24:41 GMT
https://trac.sagemath.org/ticket/17540#comment:34
https://trac.sagemath.org/ticket/17540#comment:34
<p>
Yes. Tell me when you are done with the review and I will fix everything at once.
</p>
TicketdimpaseTue, 14 Apr 2015 16:24:54 GMT
https://trac.sagemath.org/ticket/17540#comment:35
https://trac.sagemath.org/ticket/17540#comment:35
<p>
I also notice that there is no objective function in LP. Sometimes specifying some more or less random non-symmetric function helps to speed things up.
</p>
TicketdimpaseTue, 14 Apr 2015 19:12:29 GMT
https://trac.sagemath.org/ticket/17540#comment:36
https://trac.sagemath.org/ticket/17540#comment:36
<p>
OK, fix that typo, and I'll set it to positive review, even though the code is very slow...
</p>
TicketjmantysaloTue, 14 Apr 2015 19:24:08 GMT
https://trac.sagemath.org/ticket/17540#comment:37
https://trac.sagemath.org/ticket/17540#comment:37
<p>
The Wikipedia article you refer says that this is sometimes also called "Dushnik–Miller dimension". Is this common name for dimension? If so, it should be mentioned somewhere, so that user googling "Dushnik–Miller sagemath" will found this.
</p>
TicketgitWed, 15 Apr 2015 08:18:20 GMTcommit changed
https://trac.sagemath.org/ticket/17540#comment:38
https://trac.sagemath.org/ticket/17540#comment:38
<ul>
<li><strong>commit</strong>
changed from <em>59f0435008dccc2f06d46c2b1293258c694487fa</em> to <em>ffe181b536ce832a68620f1c7063807315d370a6</em>
</li>
</ul>
<p>
Branch pushed to git repo; I updated commit sha1. New commits:
</p>
<table class="wiki">
<tr><td><a class="ext-link" href="http://git.sagemath.org/sage.git/commit/?id=a6d229d5ec638845151ebae82ed0a7f3f01deae6"><span class="icon"></span>a6d229d</a></td><td><code>trac #17540: Merged with beta0</code>
</td></tr><tr><td><a class="ext-link" href="http://git.sagemath.org/sage.git/commit/?id=ffe181b536ce832a68620f1c7063807315d370a6"><span class="icon"></span>ffe181b</a></td><td><code>trac #17540: Reviewers' comments</code>
</td></tr></table>
TicketncohenWed, 15 Apr 2015 08:18:47 GMT
https://trac.sagemath.org/ticket/17540#comment:39
https://trac.sagemath.org/ticket/17540#comment:39
<p>
Here it is!
</p>
<p>
Nathann
</p>
TicketdimpaseWed, 15 Apr 2015 08:55:19 GMTstatus, milestone changed; reviewer set
https://trac.sagemath.org/ticket/17540#comment:40
https://trac.sagemath.org/ticket/17540#comment:40
<ul>
<li><strong>status</strong>
changed from <em>needs_review</em> to <em>positive_review</em>
</li>
<li><strong>reviewer</strong>
set to <em>Dima Pasechnik</em>
</li>
<li><strong>milestone</strong>
changed from <em>sage-6.5</em> to <em>sage-6.7</em>
</li>
</ul>
TicketncohenWed, 15 Apr 2015 09:46:53 GMT
https://trac.sagemath.org/ticket/17540#comment:41
https://trac.sagemath.org/ticket/17540#comment:41
<p>
Thaaaaaaaaaaaaaanks ! <code>;-)</code>
</p>
<p>
Nathann
</p>
TicketvbraunWed, 15 Apr 2015 13:58:22 GMTstatus, branch changed; resolution set
https://trac.sagemath.org/ticket/17540#comment:42
https://trac.sagemath.org/ticket/17540#comment:42
<ul>
<li><strong>status</strong>
changed from <em>positive_review</em> to <em>closed</em>
</li>
<li><strong>resolution</strong>
set to <em>fixed</em>
</li>
<li><strong>branch</strong>
changed from <em>u/ncohen/17540</em> to <em>ffe181b536ce832a68620f1c7063807315d370a6</em>
</li>
</ul>
Ticket