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

Reply via email to