The first week of GSoC 2016 has just wrapped up. The main goal for this week was to get started with rearranging the class structure of generic algebraic curves in Sage. In particular, I worked with my project mentors to open tickets for changing the inheritance structure of the existing projective/affine curve classes in Sage and for changing how such curve objects were initialized in order to better keep track of the ambient spaces the curves are created in. The tickets for this are #20697 and #20698.
We also worked on implementing functionality for computing the projective closure and the affine patches of affine/projective curves. This was done in ticket #20676. In #20697, the curve classes were made to inherit from the respective projective/affine subscheme classes in Sage, and those classes already have functionality for projective closure and affine patch computation. However, the existing projective closure computation for affine subschemes worked by, given a set of generators for the defining ideal of the subscheme, homogenizing each generator, and then using the resulting set of homogeneous polynomials to generate the defining ideal of the projective closure. This method does not always work though; not all generating sets give a generating set for the defining ideal of the projective closure after homogenization. An example of where this fails is the twisted cubic curve in . Part of the work of #20676 is to fix this by instead homogenizing the elements of a Groebner basis (with respect to a graded monomial order) of the defining ideal of the affine subscheme, which does give a generating set for the defining ideal of its projective closure.
The task for this week (May 30-June 5) is to start working on implementing other basic functionality such as genus and degree computation, changes of coordinates, and singularity/intersection analysis.