Zulip Chat Archive
Stream: toric
Topic: Correct setting for convex geometry
Justus Springer (Apr 03 2025 at 08:50):
I'm currently looking at the convex geometry side of things, trying to prove that the dual of a polyhedral cone is again polyhedral. I have some code on my branch justus/dual_cone in case someone wants to take a look. Basically, the approach I'm choosing has three steps:
1) Show that is a polyhedral cone (indeed, it's generated as a cone by )
2) Show that if is polyhedral, then so is for one halfspace .
3) Conclude inductively that for , its dual is polyhedral.
So far, I've formalized steps 1) and 3). Step 2) will probably by a bit annoying, but I don't think there are any real hurdles, as it should be very explicit computations (the generators of can be explicitly written down, this is basically a version of Fourier-Motzkin elimination).
All of this made me wonder however, what truly is the "correct" setting for us to do convex geometry in for the purposes of toric geometry. So far, everything is stated for a NormedAddCommGroup E with an InnerProductSpace ℝ E instance. I want to raise two points:
- In my undestanding, there isn't really a good reason to work over the reals and I know lecture notes on toric geometry that never mention but do everything over . In a sense, I don't think one should ever use the euclidian topology of when doing convex geometry, but state everything in terms of the lattice that's embedded in your space (For example, one shouldn't speak about euclidian distances, as these aren't invariant under unimodular transformations. Instead, the correct distance measure is lattice distance, i.e. the number of lattice points on the line segment between your two points).
- In mathlib,
PointedCone.dualandSet.innerDualConegive back cones that live in the same spaceEthat one has started with. On the other hand, toric geometry textbooks like CLS place emphasis on working with two mutually dual lattices and , which give rise two mutually dual vector spaces and (where is either or ). Dual cones of cones in live in and vice versa. I have a feeling this is going to be important when building the bridge from toric varieties back to cones and fans, as then the two lattices will be the character lattice and the lattice of one-parameter subgroups, which are truly different (but dual) lattices. I don't know mathlib well enough, is there a way in which one could express this concept of two mutually dual lattices or vector spaces, linked by a scalar product?
(I just started looking into the Toric project seriously a few days ago and I don't know mathlib's library on convex stuff well, so these two points might not be well informed. Please correct me if you think I misunderstand something)
Kevin Buzzard (Apr 03 2025 at 09:06):
I agree with this. I remember Michal stressing that it was important to use in LLL in Feb and I was thinking "I don't think that's true at all". Is there a misunderstanding here?
Yaël Dillies (Apr 03 2025 at 09:15):
I have thought about this a bit myself (this is why the blueprint is stated with a pairing, rather than a module and its dual. I believe the correct thing to use here would be docs#PerfectPairing, except that I do not know how to make it practical:
- If it stays a non-class, then we need to carry it around always
- If it becomes a class, then we will need to make it explicit in a bunch of places, because Lean won't be able to guess
NfromMand[PerfectPairing M N]alone, and I do not know whether complications will arise from a potentialPerfectPairing M N → PerfectPairing N Minstance.
Yaël Dillies (Apr 03 2025 at 09:17):
I agree that it is very important to have things more generally than . Eg in the blueprint right now we have mentions of duals of rational convex cones, and I believe that the best way to formalise this would be to talk about cones in .
Justus Springer (Apr 03 2025 at 09:32):
I didn't know about docs#PerfectPairing, but yeah that looks correct.
Justus Springer (Apr 03 2025 at 09:40):
Right, it would be annoying to carry N and M around explicitly all the time. On the other hand, when I want to speak about the dual of a cone which lives in N, maybe I should explicitly say where I want that dual to live, otherwise it's not clear what I'm talking about.
Yaël Dillies (Apr 03 2025 at 09:47):
I believe it would be fine so long as N is a one-letter free variable :grinning: Maybe we could do some trickery where, if N isn't provided, then it is set to be dual M. Something similar happens in measure theory with measures and volume
Michał Mrugała (Apr 03 2025 at 13:07):
Kevin Buzzard said:
I agree with this. I remember Michal stressing that it was important to use in LLL in Feb and I was thinking "I don't think that's true at all". Is there a misunderstanding here?
This is most likely a misunderstanding on my part
Michał Mrugała (Apr 03 2025 at 13:18):
This project is in part an excuse to motivate myself to learn about toric varieties
Michał Mrugała (Apr 03 2025 at 14:16):
After talking to some people: I was dead wrong with the reals mattering. I’ll look for sources which develop the theory in a more general setting.
Justus Springer (May 02 2025 at 13:48):
I just PR'd my proposed refactor of our convex geometry in Toric#23 . Everything is now done over a pair of modules over an arbitrary linearly ordered field with a bilinear pairing (the modules should be finite-dimensional though). The main statement is that polyhedral cones (defined to be duals of finite sets) are precisely the finitely generated ones. In particular, this implies that the dual of a polyhedral cone is again polyhedral (which was formalized previously, but only over the reals).
Justus Springer (May 02 2025 at 13:51):
@Yaël Dillies @Andrew Yang I think this "algebraic" cone theory is mostly independent from your mathlib PR #24149, though to make things compatible (hopefully), I've copied some of the basic API for dual cones from your PR (In particular, the dual should be sending sets to cones, not cones to cones). That way, we can keep working on convex geometry in the toric project without having to wait for that PR to be merged.
Yaël Dillies (May 02 2025 at 14:18):
Okay great, that's roughly what I expected, except for the fact that #24149 does define the algebraic dual of a cone. Do you not need that?
Justus Springer (May 02 2025 at 14:21):
Yes I do, it's part of the stuff I copied from your PR. Except I had to name it PointedCone.dual' to avoid collision with the existing PointedCone.dual that is defined only for cones and not sets.
Justus Springer (May 02 2025 at 14:22):
Once your PR is merged we can rename it back to dual. Or is there another way to maybe redefine an existing definition with the same name?
Yaël Dillies (May 02 2025 at 15:33):
Ah right! No, you did everything correctly. You just had me confused
Yaël Dillies (Jun 10 2025 at 15:03):
Here's an existing formalisation of Gordan's lemma in Lean 3 by @Bhavik Mehta: https://github.com/leanprover-community/lean-liquid/blob/master/src/for_mathlib/Gordan.lean
Yaël Dillies (Jul 06 2025 at 12:50):
#24149 is finally being merged (thanks Bhavik) :tada:
Yaël Dillies (Jul 06 2025 at 13:26):
@Justus Springer, polyhedral cones are finally ready to be upstreamed, cf YaelDillies/Toric#42
Last updated: Dec 20 2025 at 21:32 UTC