indexing of rays in fan of toric variety

31 views
Skip to first unread message

Friedemann Groh

unread,
Jun 23, 2024, 1:55:01 PM (6 days ago) Jun 23
to Macaulay2
Hello

Could it be that the coefficients of toric divisors do not match the indexing of the rays of the fan which specify the variety?

needsPackage "Polyhedra"
needsPackage "NormalToricVarieties"

-- specify ring A of coefficients and ring R of sparse polynomials
A = QQ[c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14];
R = A[t1,t2,t3];

-- sparse system
f = {c1*t2*t3+c2*t1*t3+c3*t1*t2*t3+c4*t1^3, c5*t2^2*t3+c6*t1*t2*t3, c7*t3^2+c8*t2^2*t3+c9*t1*t2*t3+c10*t1^2, c11*t2*t3+c12*t2^2*t3+c13*t1*t3+c14*t1^2};

-- Minkowski sum of all Newton polytopes determine the system's toric variety
P = fold( minkowskiSum, f / newtonPolytope );

vertex = vertices P;

-- Toric variety of system determined by Minkowski sum of all Newton polytopes
X = normalToricVariety P;
D = toricDivisor P;

print entries D;
print apply( rays X, i-> -min (entries( (matrix {i}) * vertex ))#0 );

best regards
Friedemann

Greg

unread,
Jun 23, 2024, 4:58:43 PM (6 days ago) Jun 23
to Macaulay2
Dear Friedemann,

Running (essentially) your code on my machine didn't produce an error (see below).  What error message did you see?  If there was no error message, then what about the output surprised you?

Greg



Macaulay2, version 1.24.05
with packages: ConwayPolynomials, Elimination, IntegralClosure, InverseSystems, Isomorphism, LLLBases, MinimalPrimes,
               OnlineLookup, PrimaryDecomposition, ReesAlgebra, Saturation, TangentCone, Truncations, Varieties

i1 : needsPackage "NormalToricVarieties";

i2 : A = QQ[c_1..c_14];

i3 : R = A[t_1..t_3];

i4 : f = {c_1*t_2*t_3+c_2*t_1*t_3+c_3*t_1*t_2*t_3+c_4*t_1^3,
     c_5*t_2^2*t_3+c_6*t_1*t_2*t_3,
     c_7*t_3^2+c_8*t_2^2*t_3+c_9*t_1*t_2*t_3+c_10*t_1^2,
     c_11*t_2*t_3+c_12*t_2^2*t_3+c_13*t_1*t_3+c_14*t_1^2};
               
i5 : P = fold( minkowskiSum, f / newtonPolytope )

o5 = P

o5 : Polyhedron

i6 : vertex = vertices P

o6 = | 8 7 6 7 4 6 2 5 3 5 3 0 0 1 3 3 0 2 0 1 |
     | 1 2 1 2 3 2 4 4 6 1 5 6 7 7 1 2 4 4 5 5 |
     | 1 1 2 2 2 3 3 3 3 4 4 4 4 4 5 5 5 5 5 5 |

              3       20
o6 : Matrix QQ  <-- QQ

i7 : D = toricDivisor P

o7 = - D  + 9*D  - 9*D  - 8*D  - 14*D  - 11*D  - 9*D  + 3*D  + 5*D  + 9*D   + 12*D   + 13*D   + 15*D   + 16*D   + 20*D   + 23*D
        1      2      3      4       5       6      7      8      9      10       11       12       13       14       15       16

o7 : ToricDivisor on normalToricVariety ({{1, 0, 0}, {0, 1, 0}, {-1, -1, 0}, {1, -1, 4}, {1, 0, 2}, {2, 1, 2}, {1, 1, 2}, {1, 1, 1}, {0, -1, 1}, {0, 0, -1}, {-1, 0, -1}, {-1, -1, -1}, {-1, 0, -2}, {0, -1, -2}, {-1, -1, -2}, {-2, -1, -2}, {-2, -1, -3}}, {{0, 3, 4, 8, 13}, {0, 4, 5}, {0, 5, 7, 9}, {0, 9, 13}, {1, 2, 6, 10}, {1, 6, 7}, {1, 7, 9, 12}, {1, 10, 12, 16}, {2, 3, 6}, {2, 3, 8, 11}, {2, 10, 15}, {2, 11, 15, 16}, {3, 4, 6, 7}, {4, 5, 7}, {8, 11, 13, 14}, {9, 12, 16}, {9, 13, 14}, {9, 14, 16}, {10, 15, 16}, {11, 14, 16}})

i8 : X = variety D

o8 = X

o8 : NormalToricVariety

i9 : entries D

o9 = {0, -1, 9, -9, -8, -14, -11, -9, 3, 5, 9, 12, 13, 15, 16, 20, 23}

o9 : List

i10 : apply( rays X, i-> -min (entries( (matrix {i}) * vertex ))#0 )

o10 = {0, -1, 9, -9, -8, -14, -11, -9, 3, 5, 9, 12, 13, 15, 16, 20, 23}

o10 : List

Friedemann Groh

unread,
Jun 23, 2024, 6:05:20 PM (6 days ago) Jun 23
to Macaulay2
Dear Greg,

Thank you for your reply! In my case (Macaulay2, version 1.24.05 and the Web-Interface), the two lists are in a different order:

{0, -1, 9, -9, -8, -14, -11, -9, 3, 5, 9, 12, 13, 15, 16, 20, 23}
{0, 9, -1, 23, 13, 15, 20, 16, 5, 9, 12, 3, -9, -8, -11, -14, -9}

Actually, I am trying to get the divisor D of the Newton polytope Q of the second polynomial f#1 via pull back of an ample divisor on variety X_Q
D = pullback( F, toricDivisor Q ), as in Theorem 6.2.8 in "Toric Varieties" by Cox, Little, Schenck.

Here dim Q = 1 < dim P, and so far I have not been able to define the toric morphism F correctly. Is this possible in principle? 

best regards
Friedemann

Friedemann Groh

unread,
Jun 25, 2024, 3:36:39 PM (4 days ago) Jun 25
to Macaulay2
Dear Greg,

If I enter the commands one after the other in the console, I get exactly your result. However, when executed all at once as a script, the lists have different order: M2 "script.m2". What could I try?

best regards
Friedemann

d.markushevich

unread,
Jun 25, 2024, 4:04:56 PM (4 days ago) Jun 25
to Macaulay2
Hi,

I encountered similar problem several years ago and posted issue hon github. Recently I got a feedback from the author (Andreas Hochenegger): the internal order of rays may be different from the one that you introduced when creating the fan. One way to get the internal order of rays is to ask for it for the structure sheaf:

loadPackage Polyhedra;
loadPackage "ToricVectorBundles";
RayMatrix=transpose matrix{{1,0,0},{0,1,0},{1,2,4},{-1,-2,-2}};
FanFromRays=ccRefinement RayMatrix;
print rays FanFromRays;
rays toricVectorBundle(1, FanFromRays)

***
With the new version 1.24, the package ToricVectorBundles provides the method raySortOfFan which returns the precise order of the rays used for the bundles. So in the above example use

raySortOfFan FanFromRays

Best,

Dimitri

Friedemann Groh

unread,
Jun 25, 2024, 4:23:13 PM (4 days ago) Jun 25
to Macaulay2
Thanks Dimitri! I'll try it right away.

best
Friedemann

Friedemann Groh

unread,
Jun 25, 2024, 4:48:28 PM (4 days ago) Jun 25
to Macaulay2
Hello Dimitri,

It looks like the toric divisors are now sorted in reversed order as the list obtained from "raySortOfFan." I'll continue testing.

best regards
Friedemann
Reply all
Reply to author
Forward
0 new messages