#20790: Computing plane curve models for algebraic curves
-------------------------------------+-------------------------------------
       Reporter:  gjorgenson         |        Owner:
           Type:  enhancement        |       Status:  needs_review
       Priority:  minor              |    Milestone:  sage-7.3
      Component:  algebraic          |   Resolution:
  geometry                           |    Merged in:
       Keywords:  gsoc2016           |    Reviewers:
        Authors:  Grayson Jorgenson  |  Work issues:
Report Upstream:  N/A                |       Commit:
         Branch:                     |  0de1323a77147059de0f82c7a8642c44c31552ed
  u/gjorgenson/ticket/20790          |     Stopgaps:
   Dependencies:                     |
-------------------------------------+-------------------------------------

Comment (by mmarco):

 A few questions:

 - It could make sense in some cases to consider projections even if the
 image is not a curve (or if it is, but some components could be mapped to
 points). I think we should allow that, but maybe raising a warning about
 it.

 - In python (and sage), indices start in 0. Shouldn't we follow that
 approach when selecting the coordinates we project to? MAybe we could also
 allow a list (or tuple) of variables as input.

 - don't modify the input `indices` inside the function. That could have
 undesired side effects. Instead, create an internal copy.

 - I think you go into too much trouble to define the elimination ideal.
 Just calling `elimination_ideal`on it should give you the ideal defining
 the image. Something like this:

 {{{
 sage: A.<x,y,z> = AffineSpace(QQ,3)
 sage: C = Curve([y^7 - x^2 + x^3 - 2*z, z^2 - x^7 - y^2], A)
 sage: I = C.defining_ideal()
 sage: IE = I.elimination_ideal(z)
 sage: IE
 Ideal (y^14 + 2*x^3*y^7 - 2*x^2*y^7 - 4*x^7 + x^6 - 2*x^5 + x^4 - 4*y^2)
 of Multivariate Polynomial Ring in x, y, z over Rational Field
 sage: A2 = AffineSpace(QQ, 2, (x,y))
 sage: H = C.Hom(A2)
 sage: phi = H((x,y))
 sage: phi
 Scheme morphism:
   From: Affine Curve over Rational Field defined by y^7 + x^3 - x^2 - 2*z,
 -x^7 - y^2 + z^2
   To:   Affine Space of dimension 2 over Rational Field
   Defn: Defined on coordinates by sending (x, y, z) to
         (x, y)
 sage: C2 = Curve([A2.coordinate_ring()(i) for i in IE.gens()],A2)
 sage: C2
 Affine Plane Curve over Rational Field defined by y^14 + 2*x^3*y^7 -
 2*x^2*y^7 - 4*x^7 + x^6 - 2*x^5 + x^4 - 4*y^2
 }}}

 should be enough to construct both the morphism and the image curve.
 Something similar could be done for the projective case.

 - Do we want to create new coordinates in the case of affine projection?
 or would it be better to keep the original ones? Maybe have an option for
 this?

 - I think it would me slightly more pythonic to return a tuple instead of
 a list.

 - In the projective case, ¿would it make sense to have an option to
 project to smaller subspaces?

 - In the plane projection method, instead of breaking the loop, just
 return `L`. Also, you could avoid the double loop by just iterating over
 the Subsets of the coordinates (maybe this is slower, but I think it would
 make the code easyer to read).

 - I am confused by this part of the code in the projective projection:

 {{{
             l = list(PP.gens())
             for i in range(n+1):
                 l[i] = 1
                 while(F(l) == 0):
                     l[i] = l[i] + 1
 }}}
  I think that, in general, you could get simpler projections if you start
 with l[i] = 0 (for instance, most times you will get the projection from
 point [0:0:...: 0:1].

 - In this code, why do you create H in the first time? You redefine it
 just later without using it:

 {{{
         H = Hom(PP, PP)
         # only need the first n coordinates of the change of coordinates
 map
         coords = [PP.gens()[i] - Q[i]/Q[n]*PP.gens()[n] for i in range(n)]
         # create the projection map onto the first n coordinates
         PP2 = ProjectiveSpace(self.base_ring(), n - 1)
         H = Hom(self, PP2)
 }}}

--
Ticket URL: <http://trac.sagemath.org/ticket/20790#comment:5>
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 https://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to