On May 18, 11:46 am, Volker Braun <vbraun.n...@gmail.com> wrote: > Hi Andrey, > > Why not allow arbitrary polytopal toric varieties instead of the > resolution of singular fano ones? The larger class still benefits from > the lattice polytope description and you can still talk about the > anticanonical divisor if you want.
Hi Volker, It seems to me that usually the interest in mirror symmetry is in varieties coming from refining reflexive polytopes. Batyrev-Borisov constructions work with such varieties, construction of the anticanonical hypersurface present in Fano module will not make sense for a larger class of varieties, and this construction is definitely not the culmination of this module - I hope to keep adding more stuff! Since I personally almost always work with such varieties, I am more likely to do correct things and less likely to create bugs if I write code specifically for them. So if you think that it is necessary to add a class to support arbitrary polytopal toric varieties, I still would like to derive another one from it to work with fans coming from reflexive polytopes. However, ToricVariety(FaceFan(Polytope)) already allows one to create an arbitrary polytopal toric variety and construct its partial subdivision, one just has to do a little more work for as nice variable names as in FanoToricVariety(Polytope) and has to give explicit rays rather then indices of points. > FanoToricVarietyCrepantResolution_field is too long :-) Also, you > usually don't want to resolve all singularities. > GorensteinFanoToricVariety_field would work in a pinch. If you looked over some modules in Sage guts, you could change your threshold of "too long" ;-) However, you comment already shows that my name suggestion was bad - I did NOT imply that it will be a complete/ maximal resolution! In fact, the purpose of the current FanoToricVariety constructor is to allow flexible *partial* subdivisions! So to clarify: are you OK to use "GorensteinFanoToricVariety" for the constructor of toric varieties coming from "partial crepant subdivisions of face fans of reflexive polytopes," which are not really Fano any more? Putting all the words into the name is definitely not a good idea, but we can add "PCR" in the beginning or the end (corresponding to PartialCrepantResolution). We can also put all the words explicitly into the _repr_ output or even construct it based on the variety in question, so that initial varieties don't mention resolutions and complete resolutions don't mention partial. > > The M/N lattices occur all the time and especially beginners tend to > confuse the two. This is why I find it very important to strictly > separate these two; In particular > > 1) All methods should raise errors whenever you pass a point from the > "wrong lattice". > Absolutely! a+b should work only if a and b are in the same lattice and a*b only if they are in dual ones. But two lattices are not enough for, say, Gross-Siebert constructions. I think they should be distinguished similar to polynomial rings in Sage - if the name and dimension are the same, there should be only one such a lattice globally. > 2) _repr_() should make it unambiguous as to which lattice the point > lies in; I chose to print "N(1,2)". > Here I mostly disagree, I don't want to see the prefix, partially because I want to allow arbitrary names for lattices like "N_sigma" or "N_sigma748" - I'd rather not see such a long thing printed in front of each point. However, this is very easy to control with some module variable that users can set to switch between "N(1,2)" and just "(1,2)". I am totally fine with having names "on" by default, as long as I have a way to turn them "off". In fact, now I think that it would be awesome to see these names as long as they are just M and N! How about also latexing them with subscripts? Like "(1,2)_{N}"? > I found it very useful to be able to construct them with N(1,2) etc, > this is implemented as a rather crude hack in my toric_lattices.py > file. Perfect construction, I think the end result should be something like sage: N = ToricLattice(2, "N") sage: N(1,2) N(1,2) sage: toric_lattices.print_prefix =False sage: N(1,2) (1,2) In addition, fans and cones can by default live in the lattice "N" of the appropriate dimension. That way beginners don't actually have to do that first step of creating a lattice, instead they can do sage: fan = FaceFan(polytope) sage: N = fan.lattice() sage: M = N.dual() One way or another they will have to define variables containing the lattices, but that's pretty much unavoidable, I don't think it is a good idea to put names like "N" and "M" into the global name space. Thank you! Andrey -- To post to this group, send an email to sage-devel@googlegroups.com To unsubscribe from this group, send an email to sage-devel+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URL: http://www.sagemath.org