#20774: Basic singularity analysis for algebraic curves
-------------------------------------+-------------------------------------
       Reporter:  gjorgenson         |        Owner:
           Type:  enhancement        |       Status:  needs_work
       Priority:  minor              |    Milestone:  sage-7.3
      Component:  algebraic          |   Resolution:
  geometry                           |    Merged in:
       Keywords:  gsoc2016           |    Reviewers:  Ben Hutz
        Authors:  Grayson Jorgenson  |  Work issues:
Report Upstream:  N/A                |       Commit:
         Branch:                     |  bfcd05e6885d0f66ee55556deaf2dacc792a8c96
  u/gjorgenson/ticket/20774          |     Stopgaps:
   Dependencies:                     |
-------------------------------------+-------------------------------------

Comment (by gjorgenson):

 Merging with beta4 broke the example in the singular_points function at
 line 260 of curve.py; too few points seem to be returned now.

 It looks like this is due to the point search changes for 0 dimensional
 subschemes from #20780. Replacing the new point search with the old one
 from before the merge resolves the problem. Here's the failed example
 modified a bit:

 {{{
 R.<a> = QQ[]
 K.<b> = NumberField(a^8 - a^4 + 1)
 P.<x,y,z> = ProjectiveSpace(K, 2)
 C = Curve([359/12*x*y^2*z^2 + 2*y*z^4 + 187/12*y^3*z^2 + x*z^4\
 + 67/3*x^2*y*z^2 + 117/4*y^5 + 9*x^5 + 6*x^3*z^2 + 393/4*x*y^4\
 + 145*x^2*y^3 + 115*x^3*y^2 + 49*x^4*y], P)
 X = C.singular_subscheme()
 Q = P([1/2*b^5 + 1/2*b^3 - 1/2*b - 1,1,0])
 X(Q)
 (1/2*b^5 + 1/2*b^3 - 1/2*b - 1 : 1 : 0)
 X.rational_points() # Q is on X, but not in set of rational points anymore
 [(2/3*b^4 - 1/3 : 0 : 1), (b^6 : -b^6 : 1), (-b^6 : b^6 : 1), (-2/3*b^4 +
 1/3 : 0 : 1)]
 }}}

 I thought the point search method in #20780 looked good when I reviewed
 it, and I think this issue might just be from a weird special case. For
 this example, during the part of the algorithm using the affine patch
 corresponding to y = 1, the Groebner basis used is `[x^2 + 2*x + 1/2*z^2 +
 3/2, x*z + z, z^3 + z]`. The rightmost polynomial has z = 0 among its
 roots, but substituting z = 0 and y = 1 into the next polynomial `x*z + z`
 yields 0, and I think this causes the algorithm to skip any points with z
 = 0, y = 1. But if those values had been kept for the last polynomial `x^2
 + 2*x + 1/2*z^2 + 3/2`, substituting them in would give `x^2 + 2*x + 3/2`
 which would give the x values of the missing points.

 I think a way to resolve this might be to just add something like
 {{{
 else:
     new_points.append(P)
     good = 1
 }}}
 after the if statement `if L != 0:` in line 159 of projective_homset.py.
 Doing this doesn't seem to break any examples, but does it mess up the
 algorithm at all?

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