A normal toric variety is a disjoint union of its orbits under the action of its algebraic torus. These orbits are in bijection with the cones in the associated fan. Each cone is determined by the rays it contains. In this package, the rays are ordered and indexed by nonnegative integers: $0, 1, \dots,n$. Using this indexing, an orbit or cone corresponds to a sublist of $\{0,\dots,n\}$; the entries index the rays that generate the cone.
The rojective plane has three fixed points and three fixed curves (under the action of its torus), and projective $3$-space has four fixed points, six fixed curves, and four divisors. More generally, the orbits of projective $(n-1)$-space are enumerated by the $n$-th row of Pascal's triangle.
i1 : O2 = orbits toricProjectiveSpace 2 o1 = HashTable{0 => {{0, 1}, {0, 2}, {1, 2}}} 1 => {{0}, {1}, {2}} 2 => {{}} o1 : HashTable |
i2 : (#O2#0, #O2#1, #O2#2) o2 = (3, 3, 1) o2 : Sequence |
i3 : O3 = orbits toricProjectiveSpace 3 o3 = HashTable{0 => {{0, 1, 2}, {0, 1, 3}, {0, 2, 3}, {1, 2, 3}} } 1 => {{0, 1}, {0, 2}, {0, 3}, {1, 2}, {1, 3}, {2, 3}} 2 => {{0}, {1}, {2}, {3}} 3 => {{}} o3 : HashTable |
i4 : apply (4, k -> #O3#k) o4 = {4, 6, 4, 1} o4 : List |
i5 : apply (5, k -> # (orbits toricProjectiveSpace 4)#k) o5 = {5, 10, 10, 5, 1} o5 : List |
i6 : apply (6, k -> # (orbits toricProjectiveSpace 5)#k) o6 = {6, 15, 20, 15, 6, 1} o6 : List |
Here is a non-simplicial example.
i7 : X = normalToricVariety (id_(ZZ^3) | -id_(ZZ^3)); |
i8 : assert not isSimplicial X |
i9 : OX = orbits X o9 = HashTable{0 => {{0, 1, 2, 3}, {0, 1, 4, 5}, {0, 2, 4, 6}, {1, 3, 5, 7}, {2, 3, 6, 7}, {4, 5, 6, 7}} } 1 => {{0, 1}, {0, 2}, {0, 4}, {1, 3}, {1, 5}, {2, 3}, {2, 6}, {3, 7}, {4, 5}, {4, 6}, {5, 7}, {6, 7}} 2 => {{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}} 3 => {{}} o9 : HashTable |
i10 : apply (1+dim X, k -> #OX#k) o10 = {6, 12, 8, 1} o10 : List |
The following degenerate example has no fixed points.
i11 : U = normalToricVariety ({{4,-1,0},{0,1,0}},{{0,1}}); |
i12 : assert isDegenerate U |
i13 : OU = orbits U o13 = HashTable{0 => {} } 1 => {{0, 1}} 2 => {{0}, {1}} 3 => {{}} o13 : HashTable |
i14 : apply (4, k -> #OU#k) o14 = {0, 1, 2, 1} o14 : List |
i15 : assert (#OU#0 == 0) |
To avoid repeating a computation, the package caches the result in the CacheTable of the normal toric variety.