#10529: dimension() and is_smooth() for algebraic subschemes of toric varieties
----------------------------------+-----------------------------------------
   Reporter:  vbraun              |       Owner:  AlexGhitza
       Type:  enhancement         |      Status:  needs_work
   Priority:  major               |   Milestone:  sage-4.7  
  Component:  algebraic geometry  |    Keywords:            
     Author:  Volker Braun        |    Upstream:  N/A       
   Reviewer:  Andrey Novoseltsev  |      Merged:            
Work_issues:                      |  
----------------------------------+-----------------------------------------
Changes (by novoselt):

  * status:  needs_review => needs_work


Comment:

 Replying to [comment:20 vbraun]:
 > I think the calling quotient rings stuff is actually not used because I
 later switched the maps between affine algebraic schemes to be defined by
 actual polynomials instead of quotient rings.

 So you want to just drop this patch? I think that the functionality you
 have added is neat and useful even without relation to this ticket, just
 don't want it to be dangerous ;-)

 Comments on the last patch:

  1. How about renaming `Jacobian` to `Jacobian_ideal`? I associate
 `Jacobian` with a single determinant of a square matrix...
  1. It seems to me also that it should NOT include the original
 polynomials. I am having difficulties with finding a definition of the
 Jacobian ideal, but at least in the case of one polynomial Singular does
 not add it in this function http://www.singular.uni-
 kl.de/Manual/3-0-4/sing_986.htm and its Milnor number routine takes into
 account all critical points of a function and not just critical points in
 the zero set http://www.singular.uni-
 kl.de/Manual/latest/sing_718.htm#SEC770. Another argument against mixing
 in the defining ideal is that it is easier to combine ideals than to split
 one apart. So I propose to have `Jacobian_ideal` for the ideal generated
 by partial derivatives or their minors and some other function or an
 optional parameter for combining it with the defining ideal.
  1. Wouldn't it be faster to check the rank of the Jacobian matrix rather
 than to compute all maximal minors?
  1. If there are obstructions to it, probably the Jacobian ideal should be
 cached.
  1. Can the documentation of `_best_affine_patch` be extended a little
 with the explanation you gave earlier?
  1. I have a number of issues with `affine_neighbourhood`
   1. Its purpose is not quite clear from the name: since projective spaces
 and toric varieties have "natural" affine covers, I would expect to get
 one of the standard patches as an affine neighbourhood. How about changing
 it to `centered_neigbourhood`?
   1. I think it actually can be nice to get one of those standard ones as
 well. How about `affine_neigbourhood(point)` returning a patch which
 contains `point`?
   1. This is, of course, close to what `_best_affine_patch` does. I think
 it would be nice to expose its functionality to the user, but make it a
 bit more clear that it returns a number. So I guess I propose three
 functions:
    * `containing_patch_index(point)` - does what is now done by
 `_best_affine_patch(point)` (I think that access to the index can be
 convenient e.g. if a user wants to consider the same points on several
 subschemes.);
    * `affine_neighbourhood(point)` - a shortcut for
 `X.affine_patch(X.containing_patch_index(point))`;
    * `centered_neigbourhood(point)` - does what is now done by
 `affine_neigbourhood`.
   1. I think that returned neighbourhoods should be affine schemes with a
 determined embedding, not just the embedding morphism (I know that it is
 possible to get domain/codomain from a morphism, but I think that most
 people think of neighbourhoods as open subsets, plus it is more consistent
 with the current `affine_patch`.)
   1. I don't see any point storing `point_preimage` since it is the
 origin. Plus having plain public attributes is not in the style of Sage.
   1. Why do you say that it returns a local isomorphism? A neighbourhood
 should be isomorphic to its image under the inclusion morphism, and I
 don't think that it needs any clarification. A local isomorphism, on the
 other hand, means to me that every point in the domain has a neighbourhood
 which is isomorphic to its image. That is clearly a weaker statement in
 general, so it seems confusing to me here.
  1. For toric varieties `_best_affine_patch` can be written a bit more
 efficiently (for fans with many rays it may give a considerable speed-up):
  {{{
 point = list(point)
 zeros = set(i for i, coord in enumerate(point) if coord == 0)
 for cone_idx, cone in
 enumerate(self.ambient_space().fan().generating_cones()):
     if zeros.issubset(cone.ambient_ray_indices()):
         return cone_idx
 assert False, 'The point must not have been a point of the toric variety.'
 }}}
  Here we work sets of zeros in the point and indices of the cone rather
 than their completements, which can be much bigger. Also this isn't "the
 best" patch, it is "just a patch" so I think that `containing_patch_index`
 is a better name and when possible it can try to return the best option.
  1. Now I see that for toric varieties `affine_neighbourhood` is not
 centered. Then I think that for sure the method of projective varieties
 should be renamed to `centered_neighbourhood`. Other comments still apply.
 And I still don't like `point_preimage` even though now it is non-trivial.
 I think that if it is exposed to users it should be a function with
 documentation and have a bit more meaningful name. (`center_preimage`
 comes to mind, although I am not sure if that's clear/standard.) Or,
 perhaps, we still can return an honest centered neighbourhood realized as
 a plain affine scheme (with an appropriate embedding map)? That actually
 would be very handy, as so far I was doing such shifts manually whenever I
 had to put my special points to the origin.
  1. Would be nice to add a message to `NoteImplementedError` in
 `is_smooth` of affine toric subschemes.

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/10529#comment:21>
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 post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en.

Reply via email to