# cycRes -- Compute the minimal cyclic polytope resolutions via unprojection

## Description

Compute the minimal resolution of the Stanley-Reisner ring of the boundary of a cyclic polytope of dimension d with vertices the variables of R.

This is obtained by calling the unprojection step

Δ(d,m) and Δ(d-2,m-1) →Δ(d,m+1)

recursively.

If the Boolean Option UseBuchsbaumEisenbud is false then the procedure is called recursively until it terminates with a complete intersection Δ(0,r) or Δ(r-1,r) (then using the Koszul complex).

If UseBuchsbaumEisenbud=>true (the standard option) then the recursion terminates when reaching codimension 3 instead of unprojecting further (then using the Buchsbaum-Eisenbud structure theorem).

The Option verbose can be used to display the combinatorial unprojection structure of the cyclic polytope generated by the recursive procedure cycRes.

Δ(4,8):

 `i1 : R=QQ[x_1..x_8];` ```i2 : cc=cycRes(4,R,verbose=>1); delta(2,{z, x_2, x_3, x_4, x_5}) + delta(0,{z, x_2, x_3, x_4}) -> delta(2,{z, x_2, x_3, x_4, x_5, x_6}) delta(4,{x_1, x_2, x_3, x_4, x_5, x_6, x_7}) + delta(2,{z, x_2, x_3, x_4, x_5, x_6}) -> delta(4,{x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8})``` ```i3 : isExact cc o3 = true``` ```i4 : betti cc 0 1 2 3 4 o4 = total: 1 16 30 16 1 0: 1 . . . . 1: . . . . . 2: . 16 30 16 . 3: . . . . . 4: . . . . 1 o4 : BettiTally```

Δ(4,8) differentials:

 `i5 : R=QQ[x_1..x_8];` `i6 : cc=cycRes(4,R);` ```i7 : isExact cc o7 = true``` ```i8 : S=ring cc o8 = R o8 : PolynomialRing``` ```i9 : betti cc 0 1 2 3 4 o9 = total: 1 16 30 16 1 0: 1 . . . . 1: . . . . . 2: . 16 30 16 . 3: . . . . . 4: . . . . 1 o9 : BettiTally``` ```i10 : print cc.dd_1 | x_2x_4x_6 x_3x_5x_7 x_1x_4x_6 x_2x_5x_7 x_1x_3x_6 x_2x_4x_7 x_1x_3x_5 x_2x_4x_8 x_3x_5x_8 -x_1x_4x_7 x_2x_5x_8 -x_1x_3x_7 x_1x_5x_7 x_3x_6x_8 x_4x_6x_8 x_2x_6x_8 |``` ```i11 : print cc.dd_2 {3} | 0 x_1 0 0 0 0 -x_7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 x_8 0 0 0 0 0 0 | {3} | -x_1 0 x_2 0 0 0 0 -x_1 0 0 0 0 -x_1 0 0 0 0 0 0 0 0 0 0 0 x_8 0 0 0 0 0 | {3} | 0 -x_2 0 x_3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -x_7 0 0 0 0 x_8 0 0 0 0 | {3} | 0 0 -x_3 0 x_4 0 0 0 0 0 0 0 0 0 -x_1 0 0 0 0 0 0 0 0 0 0 0 x_8 0 0 0 | {3} | 0 0 0 -x_4 0 x_5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -x_7 0 0 0 0 x_8 0 0 | {3} | 0 0 0 0 -x_5 0 x_6 0 x_1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 x_8 0 | {3} | x_7 0 0 0 0 -x_6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 x_8 | {3} | 0 0 0 0 0 0 0 0 0 0 0 x_5 0 0 0 0 0 0 -x_6 0 0 0 0 -x_6 0 0 0 0 -x_7 0 | {3} | 0 0 0 0 0 0 0 0 0 -x_2 0 0 0 0 0 0 0 0 0 -x_6 0 0 0 0 -x_7 0 0 0 0 -x_1 | {3} | 0 0 0 0 0 0 0 0 x_2 0 -x_3 0 0 x_5 0 0 0 0 0 0 -x_6 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 x_3 0 -x_4 0 0 0 0 0 0 0 0 0 -x_6 0 0 0 0 -x_7 0 0 0 | {3} | 0 0 0 0 0 0 0 -x_5 0 0 x_4 0 0 0 0 0 0 0 0 0 0 0 -x_6 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 x_3 x_4 x_2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 x_2 -x_4 0 x_5 0 0 0 0 0 0 0 -x_1 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -x_2 0 x_3 0 0 0 0 0 0 0 -x_1 0 0 0 0 | {3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 x_4 -x_3 0 x_4 0 0 x_5 0 0 0 0 0 0 0 0 |``` ```i12 : print cc.dd_3 {4} | 0 0 0 0 -x_6 0 0 0 0 -x_8 0 0 0 0 0 0 | {4} | 0 0 0 0 0 -x_7 0 0 0 0 -x_8 0 0 0 0 0 | {4} | 0 x_1 0 0 0 0 0 0 0 0 0 -x_8 0 0 0 0 | {4} | 0 0 0 0 0 0 0 -x_7 0 0 0 0 -x_8 0 0 0 | {4} | x_1 0 0 0 0 0 0 0 0 0 0 0 0 -x_8 0 0 | {4} | 0 0 0 0 -x_7 0 0 0 0 0 0 0 0 0 -x_8 0 | {4} | 0 0 0 0 0 -x_1 0 0 0 0 0 0 0 0 0 -x_8 | {4} | 0 0 x_4 0 x_6 0 0 0 0 0 0 0 0 0 0 0 | {4} | x_5 0 0 0 0 x_6 0 0 0 0 0 0 0 0 0 0 | {4} | 0 0 0 0 0 0 x_6 0 0 0 0 -x_7 0 0 0 0 | {4} | 0 0 x_5 0 0 0 0 x_6 0 0 0 0 0 0 0 0 | {4} | 0 0 0 0 0 0 0 0 x_6 0 0 0 0 -x_7 0 0 | {4} | 0 x_2 -x_4 0 0 0 0 0 0 0 0 0 0 0 0 0 | {4} | -x_2 0 x_3 0 0 0 0 0 0 0 0 0 0 0 0 0 | {4} | x_4 -x_3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {4} | 0 0 0 x_3 0 0 0 0 0 0 x_1 0 0 0 0 0 | {4} | 0 0 0 x_4 0 0 x_5 0 0 0 0 0 0 0 0 0 | {4} | 0 0 0 x_2 0 0 0 0 0 0 0 0 x_1 0 0 0 | {4} | 0 0 0 0 0 0 0 0 x_5 0 -x_1 0 0 0 0 0 | {4} | 0 0 0 0 0 0 -x_2 0 0 0 0 0 0 0 x_1 0 | {4} | 0 0 0 0 0 x_2 0 -x_3 0 0 0 0 0 0 0 0 | {4} | 0 0 0 0 0 0 x_3 0 -x_4 0 0 0 0 0 0 0 | {4} | 0 0 0 0 -x_5 0 0 x_4 0 0 0 0 0 0 0 0 | {4} | 0 0 0 0 0 0 0 0 0 0 x_1 0 0 0 0 -x_7 | {4} | 0 0 0 0 0 0 0 0 0 -x_1 0 x_2 0 0 0 0 | {4} | 0 0 0 0 0 0 0 0 0 0 -x_2 0 x_3 0 0 0 | {4} | 0 0 0 0 0 0 0 0 0 0 0 -x_3 0 x_4 0 0 | {4} | 0 0 0 0 0 0 0 0 0 0 0 0 -x_4 0 x_5 0 | {4} | 0 0 0 0 0 0 0 0 0 0 0 0 0 -x_5 0 x_6 | {4} | 0 0 0 0 0 0 0 0 0 x_7 0 0 0 0 -x_6 0 |``` ```i13 : print cc.dd_4 {5} | x_3x_6x_8 | {5} | x_4x_6x_8 | {5} | x_2x_6x_8 | {5} | -x_1x_5x_7 | {5} | -x_2x_4x_8 | {5} | -x_3x_5x_8 | {5} | x_1x_4x_7 | {5} | -x_2x_5x_8 | {5} | x_1x_3x_7 | {5} | x_2x_4x_6 | {5} | x_3x_5x_7 | {5} | x_1x_4x_6 | {5} | x_2x_5x_7 | {5} | x_1x_3x_6 | {5} | x_2x_4x_7 | {5} | x_1x_3x_5 |``` ```i14 : C=delta(4,R) o14 = {x x x x , x x x x , x x x x , x x x x , x x x x , 1 2 3 4 1 2 4 5 2 3 4 5 1 2 5 6 2 3 5 6 ----------------------------------------------------------------------- x x x x , x x x x , x x x x , x x x x , x x x x , 3 4 5 6 1 2 6 7 2 3 6 7 3 4 6 7 4 5 6 7 ----------------------------------------------------------------------- x x x x , x x x x , x x x x , x x x x , x x x x , 1 2 3 8 1 3 4 8 1 4 5 8 1 5 6 8 1 2 7 8 ----------------------------------------------------------------------- x x x x , x x x x , x x x x , x x x x , x x x x } 2 3 7 8 3 4 7 8 4 5 7 8 1 6 7 8 5 6 7 8 o14 : complex with 20 facets on the vertices x x x x x x x x 1 2 3 4 5 6 7 8``` ```i15 : I=complexToIdeal C o15 = ideal (x x x , x x x , x x x , x x x , x x x , x x x , x x x , x x x , 4 6 8 3 6 8 2 6 8 3 5 8 2 5 8 2 4 8 3 5 7 2 5 7 ----------------------------------------------------------------------- x x x , x x x , x x x , x x x , x x x , x x x , x x x , x x x ) 1 5 7 2 4 7 1 4 7 1 3 7 2 4 6 1 4 6 1 3 6 1 3 5 o15 : Ideal of R``` ```i16 : betti res I 0 1 2 3 4 o16 = total: 1 16 30 16 1 0: 1 . . . . 1: . . . . . 2: . 16 30 16 . 3: . . . . . 4: . . . . 1 o16 : BettiTally```

Δ(4,9):

 `i17 : R=QQ[x_1..x_9];` ```i18 : cc=cycRes(4,R,verbose=>1); delta(2,{z, x_2, x_3, x_4, x_5}) + delta(0,{z, x_2, x_3, x_4}) -> delta(2,{z, x_2, x_3, x_4, x_5, x_6}) delta(4,{x_1, x_2, x_3, x_4, x_5, x_6, x_7}) + delta(2,{z, x_2, x_3, x_4, x_5, x_6}) -> delta(4,{x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8}) delta(2,{z, x_2, x_3, x_4, x_5}) + delta(0,{z, x_2, x_3, x_4}) -> delta(2,{z, x_2, x_3, x_4, x_5, x_6}) delta(2,{z, x_2, x_3, x_4, x_5, x_6}) + delta(0,{z, x_2, x_3, x_4, x_5}) -> delta(2,{z, x_2, x_3, x_4, x_5, x_6, x_7}) delta(4,{x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8}) + delta(2,{z, x_2, x_3, x_4, x_5, x_6, x_7}) -> delta(4,{x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9})``` ```i19 : isExact cc o19 = true``` ```i20 : betti cc 0 1 2 3 4 5 o20 = total: 1 30 81 81 30 1 0: 1 . . . . . 1: . . . . . . 2: . 30 81 81 30 . 3: . . . . . . 4: . . . . . 1 o20 : BettiTally```

Δ(4,7) (unprojecting until termination with a hypersurface or linear complete intersection):

 `i21 : R=QQ[x_1..x_7];` ```i22 : cc=cycRes(4,R,verbose=>1,UseBuchsbaumEisenbud=>false); delta(2,{z, x_2, x_3}) + delta(0,{z, x_2}) -> delta(2,{z, x_2, x_3, x_4}) delta(4,{x_1, x_2, x_3, x_4, x_5}) + delta(2,{z, x_2, x_3, x_4}) -> delta(4,{x_1, x_2, x_3, x_4, x_5, x_6}) delta(2,{z, x_2, x_3}) + delta(0,{z, x_2}) -> delta(2,{z, x_2, x_3, x_4}) delta(2,{z, x_2, x_3, x_4}) + delta(0,{z, x_2, x_3}) -> delta(2,{z, x_2, x_3, x_4, x_5}) delta(4,{x_1, x_2, x_3, x_4, x_5, x_6}) + delta(2,{z, x_2, x_3, x_4, x_5}) -> delta(4,{x_1, x_2, x_3, x_4, x_5, x_6, x_7})``` ```i23 : betti cc 0 1 2 3 o23 = total: 1 7 7 1 0: 1 . . . 1: . . . . 2: . 7 7 . 3: . . . . 4: . . . 1 o23 : BettiTally```

Δ(4,8) (unprojecting until termination with a hypersurface or linear complete intersection):

 `i24 : R=QQ[x_1..x_8];` ```i25 : cc=cycRes(4,R,verbose=>1,UseBuchsbaumEisenbud=>false); delta(2,{z, x_2, x_3}) + delta(0,{z, x_2}) -> delta(2,{z, x_2, x_3, x_4}) delta(4,{x_1, x_2, x_3, x_4, x_5}) + delta(2,{z, x_2, x_3, x_4}) -> delta(4,{x_1, x_2, x_3, x_4, x_5, x_6}) delta(2,{z, x_2, x_3}) + delta(0,{z, x_2}) -> delta(2,{z, x_2, x_3, x_4}) delta(2,{z, x_2, x_3, x_4}) + delta(0,{z, x_2, x_3}) -> delta(2,{z, x_2, x_3, x_4, x_5}) delta(4,{x_1, x_2, x_3, x_4, x_5, x_6}) + delta(2,{z, x_2, x_3, x_4, x_5}) -> delta(4,{x_1, x_2, x_3, x_4, x_5, x_6, x_7}) delta(2,{z, x_2, x_3}) + delta(0,{z, x_2}) -> delta(2,{z, x_2, x_3, x_4}) delta(2,{z, x_2, x_3, x_4}) + delta(0,{z, x_2, x_3}) -> delta(2,{z, x_2, x_3, x_4, x_5}) delta(2,{z, x_2, x_3, x_4, x_5}) + delta(0,{z, x_2, x_3, x_4}) -> delta(2,{z, x_2, x_3, x_4, x_5, x_6}) delta(4,{x_1, x_2, x_3, x_4, x_5, x_6, x_7}) + delta(2,{z, x_2, x_3, x_4, x_5, x_6}) -> delta(4,{x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8})``` ```i26 : isExact cc o26 = true``` ```i27 : betti cc 0 1 2 3 4 o27 = total: 1 16 30 16 1 0: 1 . . . . 1: . . . . . 2: . 16 30 16 . 3: . . . . . 4: . . . . 1 o27 : BettiTally```

## Caveat

So far only works for d even.

At some point the efficiency will be increased by joining leaves of the unprojection tree.