#9972: Add toric lattice morphisms
----------------------------------+-----------------------------------------
   Reporter:  novoselt            |       Owner:  mhampton  
       Type:  enhancement         |      Status:  needs_info
   Priority:  major               |   Milestone:  sage-4.6  
  Component:  geometry            |    Keywords:            
     Author:  Andrey Novoseltsev  |    Upstream:  N/A       
   Reviewer:  Volker Braun        |      Merged:            
Work_issues:                      |  
----------------------------------+-----------------------------------------

Comment(by vbraun):

 Replying to [comment:5 novoselt]:
 > "it is a morphism between toric lattices with distinguished fans in the
 domain and codomain which are compatible with this morphism."

 Yes, that is the usual definition. No restriction on the support of the
 underlying lattice map.

 On an unrelated note, I would call "point" = "0-dimensional torus orbit" =
 full-dimensional cone. A toric morphism maps points to potentially higher-
 dimensional torus orbits. Though I do understand that you meant lattice
 points.

 I understand your issue about having multiple morphisms. But if the fans
 don't know about the toric morphism then they shouldn't know about the
 toric variety either, otherwise its confusing. So in principle I don't
 mind getting rid of the `Cone_of_toric_variety` class. At least this
 solves the dilemma `cone_of_variety.cohomology_class()` vs.
 `variety.cohomology_class(cone)`; since the cone doesn't know about the
 variety only the latter can work. But instead of adding a
 `cohomology_class` method, I'd rather have the `CohomologyRing` element
 constructor accept cones:
 {{{
   sage: HH = X.cohomology_ring()
   sage: HH( X.fan(2)[23] )
 }}}
 This pattern works already for the divisor group and Chow group:
 {{{
 sage: Div = X.divisor_group()
 sage: Div( X.fan(1)[0] )   #  output should have been V(z0)?!?
 V(1-d cone of Rational polyhedral fan in 2-d lattice N)
 sage: A = X.Chow_group()
 sage: A( X.fan(1)[0] )
 The Chow cycle (1, 0, 0)
 }}}

 > For this ticket I propose the following:
 >  1. Rename `make_compatible_with` to `subdivide_domain`.
 >  2. Add to `ToricLatticeMorphism` a method like `image_fan(domain_fan)`
 to construct the "natural" fan in the codomain, as you have suggested.

 If we can agree on a hierarchy `ToricLatticeMorphism` -> `FanMorphism` ->
 `ToricMorphism` then  `ToricLatticeMorphism` shouldn't know about fans at
 all, if only to avoid circular imports. Similar to how `ToricLattice`
 doesn't know about `Fan`. So `make_compatible_with` and `image_fan` become
 special cases of the `FanMorphism` constructor.

 And instead of an `is_compatible_with` method, why not have
 `FanMorphism(matrix,fan1,fan2)` raise `ValueError, "Cone <3,4,5> is not
 contained in any image cone"`.

 >  3. Add `FanMorphism(ToricLatticeMorphism)` which mathematically is what
 I have said above, will live in the same Hom-space as lattice morphisms,
 and will behave in the same way (including `domain` and `codomain`
 returning toric lattices), except that it also has `domain_fan` and
 `codomain_fan` methods returning fans which are guaranteed to be
 compatible with the morphism. It also has `image_cone` and
 `preimage_cones`, results are cached (perhaps it is more efficient to
 compute them at once for all cones or even do it during compatibility
 check).

 Yes, sounds good!

 >  4. Cones of fans also get `image_cone` and `preimage_cones` methods
 that take as an argument a `FanMorphism` with appropriate fans.

 I'd rather have only `morphism(cone)` (or `morphism.image(cone)`) and
 `morphism.preimages(cone)`.

 > A follow-up ticket will add `ToricMorphism` for arbitrary scheme
 morphisms between toric varieties and `ToricEquivariantMorphism` for those
 coming from `FanMorphisms`.

 I agree, but can we use, say, `AlgebraicMorphism` and `ToricMorphism`?
 Toric should really always be replaceable with "torus-equivariant".

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