#11200: Add fibration check to FanMorphism
----------------------------+-----------------------------------------------
   Reporter:  novoselt      |          Owner:  mhampton          
       Type:  enhancement   |         Status:  needs_info        
   Priority:  major         |      Milestone:  sage-4.7.1        
  Component:  geometry      |       Keywords:  toric             
Work_issues:                |       Upstream:  N/A               
   Reviewer:  Volker Braun  |         Author:  Andrey Novoseltsev
     Merged:                |   Dependencies:  #10140, #10882    
----------------------------+-----------------------------------------------

Comment(by novoselt):

 Yes, `phi.index(sigma)` is the way to go, I think, but having these
 indices equal to 1 is not enough (and they are all 1 if the linear map has
 index one in its image saturation). We also need "relative stars" to be
 trivial, so that in the notation of Proposition 2.1.4 in HLY
 `\tld{O}_\sigma` is a 1-to-1 cover and `F_\sigma^c` is a singleton.

 Going back to names, I will try to be more careful in the future with
 checking inherited methods, but it seems to me now that
  * `kernel_lattice` should be removed since `kernel` computes exactly the
 same thing using generic code.
  * `image_lattice` should not be implemented since
 `phi.image().saturation()` does what I want and plane `image()` is also of
 interest in the toric setting. (Currently, saturation will not return a
 toric sublattice, but it is easy to fix.)

 For the factoring of the fan morphism `phi: Sigma ---> Sigma'` we (always)
 have the following sequence of fan maps:
 {{{
 Sigma0 --0--> Sigma --1--> Sigma1 --2--> Sigma2 --3--> Sigma'
 }}}
 where `Sigma0` is the kernel fan, `Sigma1` is `phi(Sigma)` living in
 `phi(N_RR) \cap N'`, and `Sigma2` is `phi(N_RR) \cap Sigma'`. Map 1 is
 easy to construct as
 {{{
 FanMorphism(phi.matrix(), phi.domain_fan(), phi.image().saturation())
 }}}
 Maps 2 and 3 are basically given by identity matrix but there is currently
 no "one line way" to construct `Sigma2` which I want to add. Now what I
 was referring to, is that both `Sigma1` and `Sigma2` are natural
 candidates to be called `image_fan` since they are fans in the image of
 `phi` and perhaps `Sigma1` is more natural since it is literally the image
 fan of `Sigma` under `phi`.

 Since "general" restrictions of `phi` to other fans can be easily done
 using `FanMorphism` constructor directly, I am not sure there is any need
 in adding special methods to restrict (co)domain to a provided fan. So I
 think I am in favor of adding only, say, `restrict_to_image()` with no
 arguments which will be the composition of maps 1 and 2 in the diagram.
 The main job of this function will be, of course, efficient construction
 of `Sigma2` and once it is done all maps of the sequence can be easily
 constructed if needed.

 Summary of the proposal:
  1. remove `kernel_lattice` and use inherited `kernel` instead;
  1. tweak `saturation` to make `phi.image().saturation()` to return a
 toric sublattice;
  1. add `restrict_to_image` returning the map `Sigma ---> Sigma2`;
  1. let `phi.index(sigma)` take a cone as an argument and return its index
 in the sense of HLY.

 Sounds good?

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