New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add fan morphisms #9972
Comments
comment:1
Attachment: trac_9972_add_toric_lattice_morphisms.patch.gz The patch is in principle ready, but while we are at it - do we want to make custom Also, the speed is far from spectacular, but it is not easy to make it better until simple polyhedra work faster - currently most time is spend on constructing them for intersection purposes and I tried hard not to intersect more cones than necessary. |
Reviewer: Volker Braun |
comment:2
I don't have any good suggestion for how to improve I'll rewrite the Polyhedron constructor in cython one of these days, that should fix the speed issues. Though its a good idea to minimize the number of intersections computed :) The current version looks good for an initial shot at toric morphisms. Are you still changing things around or should I officially review it? |
comment:3
I don't plan on changing these functions further, so this ticket is ready for review! |
comment:4
I like the functionality, but I'm confused about the name. Is this supposed to be a
Another functionality that I would like to have is to figure out the image fan from the lattice morphism and the domain. How about the following proposal:
Let me know what you think & I'd be happy to help, of course! |
comment:5
I am now putting finishing touches on plotting, but then return back to morphisms. After actually working on morphisms a bit, I had second thoughts about class organization. In particular, I didn't see how
Going further, I don't think anymore that we should derive special fans for domain/codomain of morphisms between toric varieties themselves, let's call this class
All four fans above are mathematically the same, the only difference is what kind of extra functionality do they get. But they will be different Python objects and associated toric varieties will be also different objects for no apparent reason, i.e. how these reasons can be explained to a user rather than a developer? So I think that either morphisms derive their own fans for domain/codomain and use them internally without actually changing the varieties they were created for (i.e. I recall that we already had a similar argument in the beginning, whether or not we need any kind of specialized cones, which provide clean access to new features. I just checked how many new features got added:
For this ticket I propose the following:
A follow-up ticket will add Let me know what you think! |
comment:6
Replying to @novoselt:
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
This pattern works already for the divisor group and Chow group:
If we can agree on a hierarchy And instead of an
Yes, sounds good!
I'd rather have only
I agree, but can we use, say, |
comment:7
OK, I wanted to avoid "compatibility check by exception" but I can live with it ;-) How about this:
I am also OK with |
Work Issues: switch to FanMorphism |
comment:8
|
comment:9
I'll also tighten |
comment:10
Sounds good! |
comment:11
Patch is attached. I removed 'cohomology_class' from I added an overriding method The |
comment:12
Regarding |
comment:13
My thought was that it can be expensive to ensure that two cones of a fan are not the same, and comparing ambient ray indices would be faster. And you always have to go through all cones of the fan to test membership, so it will be called often. I thought about whether that is a problem during the construction, but then I found it easiest to leave that question up to you ;-) How about constructing |
comment:14
What membership exactly do you want to test? The assumption is that there are no invalid cones of the fan, so if you want I don't mind adding uniqueness of cones of fan or even cones themselves for that matter (on a separate ticket, perhaps?), I just don't quite understand why do you want it. The advantages that I see are
|
comment:15
Some more thoughts:
For example, if you take a fan which is a subdivision of a cone, then this cone will trickle down to this block, but Otherwise looks great: the new approach allows users to create their own shortcuts and write I will base other patches of the ticket on top of this one. |
comment:16
A fan is a collection of cones. A point is never in a fan, as it is not a cone. I don't think we should make cones unique in general, only cones of a fan. You can have arbitrarily many cones (memory permitting), but the cones of a fan are a finite set; To me it then feels right to have the |
comment:52
Indeed, it does not work and moreover - the error was in I have updated the main patch by adding a special branch for the image of the trivial cone and inserted your example into |
comment:53
Why is
I understand that it is working as documented, but it seems like it would be more useful to actually return the preimage cones. In other words, take preimage cones in the sense of fan morphisms and not in the sense of convex sets. If one is interested in all cones mapping geometrically into a given cone one could always construct the |
comment:54
I am actually not quite sure I completely understand your comments, which makes me think that method names and definitions require some adjustments. How about the following:
As for Thoughts? |
comment:55
I think the geometric image/preimage of a cone is not particularly useful for toric morphisms. A fan morphism maps cones to cones, but does not define linear maps of the individual cones. One should think of it as a map from the poset of domain cones to the poset of codomain cones. Or, in geometric terms, maps of the poset of torus orbits to the poset of torus orbits. The usual blow-up example
means, geometrically, that the orbit closure |
comment:56
Why a fan morphism does not define linear maps on individual cones? A fan morphism is a linear map between lattices, so it can be restricted to any (compatible) pair of domain/codomain cones and still induce a morphism between corresponding affine varieties. Just specifying mapping of fans as finite sets of cones is not sufficient, e.g. identity morphism and multiplication by 2 are different but obviously would induce the same cone correspondence. So since the actual linear map does matter, it makes sense to use preimages under this linear map. I agree that full (potentially non-strictly convex) preimages are probably of little use, we need to restrict to the domain fan, but I don't see why something called "preimage" should ever exclude the origin. In the sense of orbit closures it does correspond to the whole variety, but in the sense of affine patches it corresponds to the torus itself which is a part of any toric variety of the given dimension and always gets mapped to itself. So I still propose the switch to |
comment:57
There is clearly important information in how the lattice spanned by a cone is mapped to a sublattice of the lattice spanned by the image cone. But that is just the restriction of the underlying lattice morphism, and not associated to just any cone of the domain. You never need the geometric image/preimage of a cone for toric geometry. I would find it confusing if the |
comment:58
I kind of complained before that I don't quite understand the term "fan morphism" ;-) From the beginning of the ticket: Replying to @vbraun:
So, as I understand we have a category with fans being objects. A fan is a collection of cones, each cone is a set of points. All cones of the fan sit in the same lattice, so there is also "the lattice of the fan." Morphisms in this category are morphisms between lattices associated to fans, which map cones into cones as sets of points. So in particular they do define linear maps between individual cones as well, and I got lost when you said that they don't. But I guess I agree that when we talk about images/preimages of cones, we should refer to the induced map between cones as a map between two finite sets, since we do not have a nice correspondence between cones as sets of points. Let me think a little more about it and post an updated patch. |
comment:59
I am convinced, the updated patch does what you have suggested and now |
comment:60
Of course, I meant that |
comment:61
In the aforementioned blow-up example, I get now
The |
preimage_cones implemented |
comment:62
Attachment: trac_9972_add_fan_morphisms.patch.gz Grrr... That was due to my optimization attempt without proper thinking. The new version uses the same cycle as the very first one (which was finding everything and even more), but requires equality of image cones. Should work now, the blow up example in the documentation is extended to include the preimage cones of the quadrant... |
comment:63
Works great now! |
comment:65
For the tracbot: Apply trac_9972_add_cone_embedding.patch, trac_9972_improve_element_constructors.patch, trac_9972_remove_enhanced_cones_and_fans.patch, trac_9972_add_fan_morphisms.patch, trac_9972_fix_fan_warning.patch |
Merged: sage-4.6.2.alpha0 |
This ticket adds a module for fan morphisms - morphisms between lattices with specified fans in the domain and codomain, which are compatible with this morphism. Compatibility check and automatic construction of the codomain fan or refinement of the domain fan are implemented.
Patch order (applies cleanly to sage-4.6.rc0):
See #9604 for dependencies.
CC: @vbraun
Component: geometry
Author: Andrey Novoseltsev, Volker Braun
Reviewer: Volker Braun, Andrey Novoseltsev
Merged: sage-4.6.2.alpha0
Issue created by migration from https://trac.sagemath.org/ticket/9972
The text was updated successfully, but these errors were encountered: