Sage: Ticket #19552: images and preimages for projective subscheme
https://trac.sagemath.org/ticket/19552
<p>
Compute the forward and inverse images for projective subschemes under projective morphisms.
</p>
<p>
The forward image can be computed with an elimination calculation and the preimage is simply composition with the map.
</p>
<p>
This includes orbit() and nth_iterate() functions for subschemes.
</p>
en-usSagehttps://trac.sagemath.org/chrome/site/logo_sagemath_trac.png
https://trac.sagemath.org/ticket/19552
Trac 1.1.6bhutzMon, 09 Nov 2015 22:12:20 GMTbranch set
https://trac.sagemath.org/ticket/19552#comment:1
https://trac.sagemath.org/ticket/19552#comment:1
<ul>
<li><strong>branch</strong>
set to <em>u/bhutz/ticket/19552</em>
</li>
</ul>
TicketgitTue, 10 Nov 2015 22:05:23 GMTcommit set
https://trac.sagemath.org/ticket/19552#comment:2
https://trac.sagemath.org/ticket/19552#comment:2
<ul>
<li><strong>commit</strong>
set to <em>8a0c020329824d932d1f3bb846455fad5547d1eb</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=8a0c020329824d932d1f3bb846455fad5547d1eb"><span class="icon"></span>8a0c020</a></td><td><code>19552: rearranged code placement, added checks</code>
</td></tr></table>
TicketgitTue, 10 Nov 2015 22:07:37 GMTcommit changed
https://trac.sagemath.org/ticket/19552#comment:3
https://trac.sagemath.org/ticket/19552#comment:3
<ul>
<li><strong>commit</strong>
changed from <em>8a0c020329824d932d1f3bb846455fad5547d1eb</em> to <em>0aac0fe06164bfb15e4bf792c3e90b219e1a119c</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=0aac0fe06164bfb15e4bf792c3e90b219e1a119c"><span class="icon"></span>0aac0fe</a></td><td><code>19552: removed leftover code</code>
</td></tr></table>
TicketbhutzTue, 10 Nov 2015 22:14:32 GMTstatus, description changed; author set
https://trac.sagemath.org/ticket/19552#comment:4
https://trac.sagemath.org/ticket/19552#comment:4
<ul>
<li><strong>status</strong>
changed from <em>new</em> to <em>needs_review</em>
</li>
<li><strong>description</strong>
modified (<a href="/ticket/19552?action=diff&version=4">diff</a>)
</li>
<li><strong>author</strong>
set to <em>Ben Hutz</em>
</li>
</ul>
<p>
This is ready for another set of eyes.
</p>
TicketgitThu, 19 Nov 2015 12:54:36 GMTcommit changed
https://trac.sagemath.org/ticket/19552#comment:5
https://trac.sagemath.org/ticket/19552#comment:5
<ul>
<li><strong>commit</strong>
changed from <em>0aac0fe06164bfb15e4bf792c3e90b219e1a119c</em> to <em>5635becc9dd31f1e81c10f5422b37607e3ecdaa3</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=5635becc9dd31f1e81c10f5422b37607e3ecdaa3"><span class="icon"></span>5635bec</a></td><td><code>19552: fix issue with symbolic base rings</code>
</td></tr></table>
TicketvdelecroixMon, 23 Nov 2015 15:05:01 GMTstatus changed; reviewer set
https://trac.sagemath.org/ticket/19552#comment:6
https://trac.sagemath.org/ticket/19552#comment:6
<ul>
<li><strong>status</strong>
changed from <em>needs_review</em> to <em>needs_info</em>
</li>
<li><strong>reviewer</strong>
set to <em>Vincent Delecroix</em>
</li>
</ul>
<p>
Hello,
</p>
<ol><li>Could you split the documentation strings into a <strong>one line</strong> description followed by a paragraph.
</li></ol><ol start="2"><li>For the input, I would prefer to follow the Python conventions
</li></ol><ul><li><code>x.orbit(f, 3)</code> -> <code>[x, f(x), f^2(x)]</code>
</li><li><code>x.orbit(f, 2, 5)</code> -> <code>[f^2(x), f^3(x), f^4(x)]</code>
</li></ul><blockquote>
<p>
In other words having a <code>def orbit(self, f, n, m=None)</code>.
</p>
</blockquote>
<ol start="3"><li>Is there really a need for that many functions:
</li></ol><ul><li><code>orbit</code> (this is achieved by a simple loop)
</li><li><code>nth_iterate</code> (this is more or less equivalent to <code>.orbit(f, (n,n+1))</code>).
</li><li><code>forward_image</code> (this is more or less equivalent to <code>.orbit(f, (0,1))</code>)... and why not using <code>f(self)</code> here? If this is needed by call, then it could be a private method <code>_forward_image</code>.
</li><li><code>preimage</code> (this should be equivalent to <code>.orbit(f, (-1,0))</code>)
</li><li><code>__call__</code>
</li></ul>
TicketbhutzMon, 23 Nov 2015 20:21:20 GMT
https://trac.sagemath.org/ticket/19552#comment:7
https://trac.sagemath.org/ticket/19552#comment:7
<p>
1) I will update the docs.
</p>
<p>
2) hmm..I was matching the inputs that are used for the orbit function for affine and projective points. I was not aware of the python conventions covering such a situation. If we follow them here, then the other functions should be changed to match. This is fine by me, but I'll make the other function changes in a separate ticket.
</p>
<p>
3) <code>orbit</code> returns a list of points and <code>nth_iterate</code> returns a single point. I use the functions separately as they exists for points, so I continued the separation here. Combining them would make finding an nth-iterate slightly more cumbersome: you would have to create the list <code>orbit(f,(n,n+1))</code> and then get the first element out of that list. As I didn't think there was a significant drawback with making them 2 separate functions and as a user, I'd rather have two functions.
</p>
<p>
<code>forward_image</code> is used by call and I debated making it private or not. I think with <code>nth_iterate</code> existing, I can make this private.
</p>
<p>
using <code>orbit</code> for preimages is a little shaky in my opinion. The forward images are single points(or varieties) but the preimages are collections of points (or varieties). Allowing something like <code>x.orbit(-2,2)</code> would return quite a strange object. So, I see this functionality as different. In the special case of automorphisms, using <code>orbit</code> for both would make sense, but I don't think it does in general.
</p>
TicketvdelecroixMon, 23 Nov 2015 21:49:52 GMT
https://trac.sagemath.org/ticket/19552#comment:8
https://trac.sagemath.org/ticket/19552#comment:8
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/19552#comment:7" title="Comment 7">bhutz</a>:
</p>
<blockquote class="citation">
<p>
2) hmm..I was matching the inputs that are used for the orbit function for affine and projective points. I was not aware of the python conventions covering such a situation. If we follow them here, then the other functions should be changed to match. This is fine by me, but I'll make the other function changes in a separate ticket.
</p>
</blockquote>
<p>
I see. Then for the sake of this ticket I guess it is better to follow the convention of the other dynamical functions. The advantage of the Python way is that it is faster to parse the argument (less type checking and avoid tuple constructions) and you have the property that
</p>
<pre class="wiki">orbit(n1,n2) + orbit(n2,n3) == orbit(n1,n3)
</pre><p>
Please let it for a later ticket (if you have time).
</p>
<blockquote class="citation">
<p>
3) <code>orbit</code> returns a list of points and ...
</p>
</blockquote>
<p>
The only draw back I see is the multiplication of methods! I do not claim that any of them is useless.
</p>
<blockquote class="citation">
<p>
<code>forward_image</code> is used by call and I debated making it private or not. I think with <code>nth_iterate</code> existing, I can make this private.
</p>
</blockquote>
<p>
On the other hand, <code>nth_iterate</code> is very hard to found with tab-completion. If I would choose one name, I would go for <code>forward_image</code> (with an optional argument <code>order</code>). For word morphism (maps of the free monoid) there is an optional argument in <code>__call__</code>
</p>
<pre class="wiki">sage: s = WordMorphism('a->ab,b->ba')
sage: s('a')
word: ab
sage: s('a', 5)
word: abbabaabbaababbabaababbaabbabaab
</pre><p>
But of course you can not found <code>__call__</code> with tab completion. But as it is a word morphism is a function it is natural to use the <code>my_map(x)</code> syntax instead of <code>x.forward_image(my_map)</code>. And actually, there is also
</p>
<pre class="wiki">sage: w = Word('ab')
sage: w.apply_morphism(s)
word: abba
</pre><p>
I guess it would be good to unify the terminology here...
</p>
<blockquote class="citation">
<p>
using <code>orbit</code> for preimages is a little shaky in my opinion. The forward images are single points(or varieties) but the preimages are collections of points (or varieties).
</p>
</blockquote>
<p>
You are right, I was thiking of bijective maps for which bi-sided orbits make sense.
</p>
<blockquote class="citation">
<p>
Allowing something like <code>x.orbit(-2,2)</code> would return quite a strange object. So, I see this functionality as different. In the special case of automorphisms, using <code>orbit</code> for both would make sense, but I don't think it does in general.
</p>
</blockquote>
<p>
This should be definitely disallowed in general!
</p>
TicketgitTue, 24 Nov 2015 02:14:31 GMTcommit changed
https://trac.sagemath.org/ticket/19552#comment:9
https://trac.sagemath.org/ticket/19552#comment:9
<ul>
<li><strong>commit</strong>
changed from <em>5635becc9dd31f1e81c10f5422b37607e3ecdaa3</em> to <em>45697b745f19b2387ed28afd7e787b84a4a238cb</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=45697b745f19b2387ed28afd7e787b84a4a238cb"><span class="icon"></span>45697b7</a></td><td><code>19552: adjust docstrings, rename function</code>
</td></tr></table>
TicketbhutzTue, 24 Nov 2015 02:20:19 GMTstatus changed
https://trac.sagemath.org/ticket/19552#comment:10
https://trac.sagemath.org/ticket/19552#comment:10
<ul>
<li><strong>status</strong>
changed from <em>needs_info</em> to <em>needs_review</em>
</li>
</ul>
<p>
Docs strings adjusted and <code>forward_image</code> now private. I've made a note to myself to adjust how all the <code>orbit</code> functions take the parameters and this will be done in different ticket. As for the naming of the functions. These match all the other dynamics functionality and for this ticket I think that is most important. If it's necessary to choose more findable names, then these should be changed for all the dynamics functionality at the same time.
</p>
TicketvdelecroixTue, 24 Nov 2015 12:42:37 GMTstatus changed
https://trac.sagemath.org/ticket/19552#comment:11
https://trac.sagemath.org/ticket/19552#comment:11
<ul>
<li><strong>status</strong>
changed from <em>needs_review</em> to <em>needs_work</em>
</li>
</ul>
<ul><li>In your first commit, you completely removed the file <code>schemes/generic/morphism.py</code>. Why is so?
</li></ul><ul><li>test the error that are raised. And to fit with Python standards that was discussed on sage-devel, the error message should be lower case with no ponctuation at the end like the following
<pre class="wiki">sage: [][1]
Traceback (most recent call last):
...
IndexError: list index out of range
</pre></li></ul><ul><li>change <code>if (isinstance(N,(list,tuple)) == False)</code> to <code>if not isinstance(N, (list,tuple))</code>. Similarly, change <code>if normalize == True</code> with <code>if normalize</code>.
</li></ul><ul><li>In
<pre class="wiki">+ except TypeError:
+ raise TypeError("Orbit bounds must be integers")
</pre></li></ul><blockquote>
<p>
or
</p>
<pre class="wiki">+ except TypeError:
+ raise TypeError("Iterate number must be an integer")
</pre><p>
there is no need to catch a <code>TypeError</code> to raise a <code>TypeError</code>.
</p>
</blockquote>
<ul><li>Why are you using a copy of <code>self</code> in <code>orbit</code>?
</li></ul><ul><li><code>a proejctive subscheme</code> -> <code>projective</code>. Moreover the output is <strong>not</strong> a projective subscheme but a list!
</li></ul><ul><li>What is this line in the documentation of <code>orbit</code>
<pre class="wiki">Perform the checks on subscheme initialization if ``check=True``
</pre></li></ul><ul><li>The mention to <code>self</code> in the documentation should be avoided as much as possible. You can replace by <code>this scheme</code>.
</li></ul><ul><li>You can simplify a bit the following in <code>nth_iterate</code>
<pre class="wiki">+ if n == 0:
+ return(self)
+ else:
+ Q = f(self)
+ for i in range(2,n+1):
+ Q = f(Q)
+ return(Q)
</pre>with
<pre class="wiki">Q = self
for i in range(n):
Q = f(Q)
return Q
</pre></li></ul><ul><li>to make a list of zeros use <code>[0] * n</code> instead of <code>[0 for _ in range(n)]</code>.
</li></ul><ul><li>In <code>preimage</code> you wrote <code>return the subscheme</code> why is this unique? why it does exist? The following looks fishy
<pre class="wiki">sage: PS.<x,y,z> = ProjectiveSpace(ZZ, 2)
sage: H = End(PS)
sage: f = H([x^2, x^2, x^2])
sage: X = PS.subscheme([x-y])
sage: X.preimage(f)
Closed subscheme of Projective Space of dimension 2 over Integer Ring defined by:
0
sage: f(X.preimage(f))
Closed subscheme of Projective Space of dimension 2 over Integer Ring defined by:
y - z,
x - z
</pre></li></ul>
TicketbhutzTue, 24 Nov 2015 14:05:26 GMT
https://trac.sagemath.org/ticket/19552#comment:12
https://trac.sagemath.org/ticket/19552#comment:12
<p>
I don't see how morphism.py got removed. It is still there locally for me and I gave no command to stop tracking it. I'll get that back in.
</p>
<p>
yes, your example is an issue. I'll need to add a check that the map is a morphism otherwise lots of strange things can happen.
</p>
TicketgitWed, 25 Nov 2015 18:22:43 GMTcommit changed
https://trac.sagemath.org/ticket/19552#comment:13
https://trac.sagemath.org/ticket/19552#comment:13
<ul>
<li><strong>commit</strong>
changed from <em>45697b745f19b2387ed28afd7e787b84a4a238cb</em> to <em>df4701bddec0408e5074078888f8a1f784745c6c</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=df4701bddec0408e5074078888f8a1f784745c6c"><span class="icon"></span>df4701b</a></td><td><code>19552: fix issues from review</code>
</td></tr></table>
TicketgitWed, 25 Nov 2015 18:45:26 GMTcommit changed
https://trac.sagemath.org/ticket/19552#comment:14
https://trac.sagemath.org/ticket/19552#comment:14
<ul>
<li><strong>commit</strong>
changed from <em>df4701bddec0408e5074078888f8a1f784745c6c</em> to <em>ab4c42daa999e63000fe824f173a0eaa90defef8</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=ab4c42daa999e63000fe824f173a0eaa90defef8"><span class="icon"></span>ab4c42d</a></td><td><code>19552: fixes for orbit and nth_iterate</code>
</td></tr></table>
TicketbhutzWed, 25 Nov 2015 18:52:57 GMTstatus changed
https://trac.sagemath.org/ticket/19552#comment:15
https://trac.sagemath.org/ticket/19552#comment:15
<ul>
<li><strong>status</strong>
changed from <em>needs_work</em> to <em>needs_review</em>
</li>
</ul>
<p>
Corrections made. I guess I was just being overly cautious with the copy. It seems to work fine without (i.e., self remains unchanged).
</p>
<p>
I greatly increased the spectrum of failure testing as well.
</p>
<p>
Also, I was overly ambitious in my coercing in <span class="underline">call</span> so I scaled that back slightly. I was able to produce a weird behavior with the example in algebraic_scheme.py line 2472. That example now raises an error.
</p>
<p>
As for generic/morphism.py. I couldn't find anything locally that was causing the deletion. Looking at each commit individually (locally and on trac), nowhere was it removed. Now that I've pushed these new commits up the issue seems to have gone away. I guess trac was just confused...
</p>
TicketvdelecroixTue, 01 Dec 2015 21:06:23 GMTstatus changed
https://trac.sagemath.org/ticket/19552#comment:16
https://trac.sagemath.org/ticket/19552#comment:16
<ul>
<li><strong>status</strong>
changed from <em>needs_review</em> to <em>needs_work</em>
</li>
</ul>
<p>
<code>from copy import copy</code> is not needed anymore in <code>algebraic_scheme.py</code>. There exists a very nice python tool for that
</p>
<pre class="wiki">$ pyflakes src/sage/schemes/generic/algebraic_scheme.py
src/sage/schemes/generic/algebraic_scheme.py:133: 'copy' imported but unused
src/sage/schemes/generic/algebraic_scheme.py:140: 'is_MPolynomialRing' imported but unused
src/sage/schemes/generic/algebraic_scheme.py:3238: local variable 'n' is assigned to but never used
</pre><p>
On the other hand there is still a <code>copy</code> in <code>projective_point.py</code>.
</p>
<p>
About my comment about multiplication of methods, the code in <code>nth_iteration</code> is an exact copy paste of a portion of <code>orbit</code>...
</p>
<p>
Another oneliner simplification
</p>
<pre class="wiki">dict = {}
for i in range(codom.dimension_relative()+1):
dict.update({R.gen(i): f[i]})
</pre><p>
can be written as
</p>
<pre class="wiki">dict = {R.gen(i): f[i] for i in range(codom.dimension_relative()+1)}
</pre><p>
I have no real competence to check the mathematical validity of the code. If you want somebody else to review that part you might ask on sage-devel.
</p>
TicketgitWed, 09 Dec 2015 16:10:56 GMTcommit changed
https://trac.sagemath.org/ticket/19552#comment:17
https://trac.sagemath.org/ticket/19552#comment:17
<ul>
<li><strong>commit</strong>
changed from <em>ab4c42daa999e63000fe824f173a0eaa90defef8</em> to <em>1ee5379e0ead79803de8100488d6c2549cea364a</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=1ee5379e0ead79803de8100488d6c2549cea364a"><span class="icon"></span>1ee5379</a></td><td><code>19552: remove duplicated code</code>
</td></tr></table>
TicketbhutzWed, 09 Dec 2015 16:15:56 GMTstatus changed
https://trac.sagemath.org/ticket/19552#comment:18
https://trac.sagemath.org/ticket/19552#comment:18
<ul>
<li><strong>status</strong>
changed from <em>needs_work</em> to <em>needs_review</em>
</li>
</ul>
<p>
ah yes, I see what you mean. I've removed the duplicated code and now call <code>orbit</code> from <code>nth_iterate</code>. I also noticed that <code>kwds</code> was not used in the algebraic scheme iterate, so I removed that as well.
</p>
TicketgitWed, 16 Dec 2015 19:38:16 GMTcommit changed
https://trac.sagemath.org/ticket/19552#comment:19
https://trac.sagemath.org/ticket/19552#comment:19
<ul>
<li><strong>commit</strong>
changed from <em>1ee5379e0ead79803de8100488d6c2549cea364a</em> to <em>1d65e7ae78c3c29b428c9155bd89130c53f5c313</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=1d65e7ae78c3c29b428c9155bd89130c53f5c313"><span class="icon"></span>1d65e7a</a></td><td><code>19552: add check parameter to forward and preimage</code>
</td></tr></table>
TicketbhutzWed, 16 Dec 2015 19:39:49 GMT
https://trac.sagemath.org/ticket/19552#comment:20
https://trac.sagemath.org/ticket/19552#comment:20
<p>
added a <code>check</code> parameter as the <code>is_morphism()</code> check can be very slow, especially for symbolic maps.
</p>
TicketvdelecroixThu, 24 Dec 2015 16:17:15 GMT
https://trac.sagemath.org/ticket/19552#comment:21
https://trac.sagemath.org/ticket/19552#comment:21
<p>
It is better to make the keyword apparent in the function as in
</p>
<pre class="wiki">def f(param1=True, param2=False):
....
</pre><p>
instead of
</p>
<pre class="wiki">def f(**kwds):
param1 = kwds.get('param1', True)
param2 = kwds.get('param2', False)
...
</pre><p>
The reason is that with the former the tab completion works and you can see the list of keywords from the function signature.
</p>
<p>
There is still a
</p>
<pre class="wiki">if (isinstance(N,(list,tuple))==False):
</pre><p>
that should be replaced with
</p>
<pre class="wiki">if not isinstance(N,(list,tuple)):
</pre>
TicketgitMon, 04 Jan 2016 15:15:33 GMTcommit changed
https://trac.sagemath.org/ticket/19552#comment:22
https://trac.sagemath.org/ticket/19552#comment:22
<ul>
<li><strong>commit</strong>
changed from <em>1d65e7ae78c3c29b428c9155bd89130c53f5c313</em> to <em>373ecb8a933903a2625a95f90fc1ea36253aac1e</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=373ecb8a933903a2625a95f90fc1ea36253aac1e"><span class="icon"></span>373ecb8</a></td><td><code>19552: minor correction</code>
</td></tr></table>
TicketwishcowMon, 04 Jan 2016 21:01:44 GMT
https://trac.sagemath.org/ticket/19552#comment:23
https://trac.sagemath.org/ticket/19552#comment:23
<p>
It seems that the code for <span class="underline">forward_image is implemented for any morphism P<sup>n</sup> -> P<sup>m </sup>(or n-1, m-1 to be precise with the code), yet the examples are all for endomorphisms of projective space. I think it would be better to either add examples with different domain and codomain, or add an assertion that checks n=m and states otherwise that only endomorphisms are currently implemented.</span>
</p>
TicketbhutzTue, 05 Jan 2016 14:12:17 GMT
https://trac.sagemath.org/ticket/19552#comment:24
https://trac.sagemath.org/ticket/19552#comment:24
<p>
Good point. I do think the mathematics is fine for n != m as long as the map is a morphism (which requires m >=n). Let me think some more about it and then I'll probably add some additional examples.
</p>
TicketwishcowTue, 05 Jan 2016 17:34:55 GMT
https://trac.sagemath.org/ticket/19552#comment:25
https://trac.sagemath.org/ticket/19552#comment:25
<p>
If I may suggest giving examples of the Veronese embedding. This is well known and people should know what their output should be. (Sorry, the Segre embedding is of cartesian product, I am guessing forward_image is not implemented for this?)
</p>
TicketgitTue, 05 Jan 2016 17:58:48 GMTcommit changed
https://trac.sagemath.org/ticket/19552#comment:26
https://trac.sagemath.org/ticket/19552#comment:26
<ul>
<li><strong>commit</strong>
changed from <em>373ecb8a933903a2625a95f90fc1ea36253aac1e</em> to <em>01073fd96ead38a53fe117da06578a97892a55fb</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=01073fd96ead38a53fe117da06578a97892a55fb"><span class="icon"></span>01073fd</a></td><td><code>19552: adding differing domain and codomain examples</code>
</td></tr></table>
TicketbhutzTue, 05 Jan 2016 18:00:59 GMT
https://trac.sagemath.org/ticket/19552#comment:27
https://trac.sagemath.org/ticket/19552#comment:27
<p>
Examples added. The veronese embedding is a good idea. I also did a couple dimension 0 examples for which the output is easily verified as well.
</p>
<p>
No, we can't do the segre embedding like this. However, Segre embedding is implemented for projective products.
</p>
TicketwishcowTue, 05 Jan 2016 18:01:57 GMTreviewer changed
https://trac.sagemath.org/ticket/19552#comment:28
https://trac.sagemath.org/ticket/19552#comment:28
<ul>
<li><strong>reviewer</strong>
changed from <em>Vincent Delecroix</em> to <em>Vincent Delecroix, Solomon Vishkautsan</em>
</li>
</ul>
TicketwishcowWed, 06 Jan 2016 18:37:09 GMTstatus changed
https://trac.sagemath.org/ticket/19552#comment:29
https://trac.sagemath.org/ticket/19552#comment:29
<ul>
<li><strong>status</strong>
changed from <em>needs_review</em> to <em>positive_review</em>
</li>
</ul>
TicketvbraunThu, 07 Jan 2016 22:40:56 GMTstatus, branch changed; resolution set
https://trac.sagemath.org/ticket/19552#comment:30
https://trac.sagemath.org/ticket/19552#comment:30
<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/bhutz/ticket/19552</em> to <em>01073fd96ead38a53fe117da06578a97892a55fb</em>
</li>
</ul>
Ticket