Macaulay2 » Documentation
Packages » TensorComplexes :: tensorComplex1
next | previous | forward | backward | up | index | toc

tensorComplex1 -- computes the first map of the tensor complex

Synopsis

Description

Let $X := Proj(Spec S \times \mathbb P^{b_1-1}\times \cdots \times \mathbb P^{b_n-1})$, and let $$ \mathbf K := \cdots \wedge^2 \oplus_1^a O_X(-1,\dots, -1) \to O_X \to 0 $$ be the Koszul complex of the multilinear forms corresponding to f, on $X$. The output of tensorComplex1(f,w) is the first map of the complex obtained by pushing $\mathbf K \otimes {\mathcal O}_X(w_1,\dots,w_n)$ down to $Spec S$.

This script implements the construction of tensor complexes from the paper ``Tensor Complexes: Multilinear free resolutions constructed from higher tensors'' of Berkesch, Erman, Kummini and Sam (BEKS).

The program requires that $f$ is a flattened tensor, that is, a map $A \to B_1\otimes\cdots\otimes B_n$. Returns the first map in the tensor complex $F(f,w)$ of BEKS, requiring that $w$ satisfies: $$ w_0 = 0, w_1 \geq 0, w_2 \geq w_1+b_1, \ {\rm and }\ w_i>w_{i-1} \ {\rm for }\ i\geq 2. $$

When $rank A=\sum rank B_i$, that is, $L_0 = \sum_{i=1}^n L_i$ then we are in the ``balanced case'' discussed in Section 3 of BEKS. In this case giving a weight vector is unnecessary, and one can use the format tensorComplex1 f.

The example from section 12 of BEKS appears below.

i1 : f = flattenedGenericTensor({4,2,2},ZZ/32003)

o1 = | x_(0,0,0) x_(1,0,0) x_(2,0,0) x_(3,0,0) |
     | x_(0,0,1) x_(1,0,1) x_(2,0,1) x_(3,0,1) |
     | x_(0,1,0) x_(1,1,0) x_(2,1,0) x_(3,1,0) |
     | x_(0,1,1) x_(1,1,1) x_(2,1,1) x_(3,1,1) |

               ZZ                  4         ZZ                  4
o1 : Matrix (-----[x     ..x     ])  <--- (-----[x     ..x     ])
             32003  0,0,0   3,1,1          32003  0,0,0   3,1,1
i2 : S = ring f;
i3 : g = tensorComplex1(f,{0,0,2})

o3 = | -x_(0,1,0)x_(1,0,0)+x_(0,0,0)x_(1,1,0)                                       -x_(0,1,0)x_(2,0,0)+x_(0,0,0)x_(2,1,0)                                       -x_(1,1,0)x_(2,0,0)+x_(1,0,0)x_(2,1,0)                                       -x_(0,1,0)x_(3,0,0)+x_(0,0,0)x_(3,1,0)                                       -x_(1,1,0)x_(3,0,0)+x_(1,0,0)x_(3,1,0)                                       -x_(2,1,0)x_(3,0,0)+x_(2,0,0)x_(3,1,0)                                       |
     | -x_(0,1,1)x_(1,0,0)-x_(0,1,0)x_(1,0,1)+x_(0,0,1)x_(1,1,0)+x_(0,0,0)x_(1,1,1) -x_(0,1,1)x_(2,0,0)-x_(0,1,0)x_(2,0,1)+x_(0,0,1)x_(2,1,0)+x_(0,0,0)x_(2,1,1) -x_(1,1,1)x_(2,0,0)-x_(1,1,0)x_(2,0,1)+x_(1,0,1)x_(2,1,0)+x_(1,0,0)x_(2,1,1) -x_(0,1,1)x_(3,0,0)-x_(0,1,0)x_(3,0,1)+x_(0,0,1)x_(3,1,0)+x_(0,0,0)x_(3,1,1) -x_(1,1,1)x_(3,0,0)-x_(1,1,0)x_(3,0,1)+x_(1,0,1)x_(3,1,0)+x_(1,0,0)x_(3,1,1) -x_(2,1,1)x_(3,0,0)-x_(2,1,0)x_(3,0,1)+x_(2,0,1)x_(3,1,0)+x_(2,0,0)x_(3,1,1) |
     | -x_(0,1,1)x_(1,0,1)+x_(0,0,1)x_(1,1,1)                                       -x_(0,1,1)x_(2,0,1)+x_(0,0,1)x_(2,1,1)                                       -x_(1,1,1)x_(2,0,1)+x_(1,0,1)x_(2,1,1)                                       -x_(0,1,1)x_(3,0,1)+x_(0,0,1)x_(3,1,1)                                       -x_(1,1,1)x_(3,0,1)+x_(1,0,1)x_(3,1,1)                                       -x_(2,1,1)x_(3,0,1)+x_(2,0,1)x_(3,1,1)                                       |

             3       6
o3 : Matrix S  <--- S
i4 : g1 = tensorComplex1 f

o4 = | -x_(0,1,0)x_(1,0,0)+x_(0,0,0)x_(1,1,0)                                       -x_(0,1,0)x_(2,0,0)+x_(0,0,0)x_(2,1,0)                                       -x_(1,1,0)x_(2,0,0)+x_(1,0,0)x_(2,1,0)                                       -x_(0,1,0)x_(3,0,0)+x_(0,0,0)x_(3,1,0)                                       -x_(1,1,0)x_(3,0,0)+x_(1,0,0)x_(3,1,0)                                       -x_(2,1,0)x_(3,0,0)+x_(2,0,0)x_(3,1,0)                                       |
     | -x_(0,1,1)x_(1,0,0)-x_(0,1,0)x_(1,0,1)+x_(0,0,1)x_(1,1,0)+x_(0,0,0)x_(1,1,1) -x_(0,1,1)x_(2,0,0)-x_(0,1,0)x_(2,0,1)+x_(0,0,1)x_(2,1,0)+x_(0,0,0)x_(2,1,1) -x_(1,1,1)x_(2,0,0)-x_(1,1,0)x_(2,0,1)+x_(1,0,1)x_(2,1,0)+x_(1,0,0)x_(2,1,1) -x_(0,1,1)x_(3,0,0)-x_(0,1,0)x_(3,0,1)+x_(0,0,1)x_(3,1,0)+x_(0,0,0)x_(3,1,1) -x_(1,1,1)x_(3,0,0)-x_(1,1,0)x_(3,0,1)+x_(1,0,1)x_(3,1,0)+x_(1,0,0)x_(3,1,1) -x_(2,1,1)x_(3,0,0)-x_(2,1,0)x_(3,0,1)+x_(2,0,1)x_(3,1,0)+x_(2,0,0)x_(3,1,1) |
     | -x_(0,1,1)x_(1,0,1)+x_(0,0,1)x_(1,1,1)                                       -x_(0,1,1)x_(2,0,1)+x_(0,0,1)x_(2,1,1)                                       -x_(1,1,1)x_(2,0,1)+x_(1,0,1)x_(2,1,1)                                       -x_(0,1,1)x_(3,0,1)+x_(0,0,1)x_(3,1,1)                                       -x_(1,1,1)x_(3,0,1)+x_(1,0,1)x_(3,1,1)                                       -x_(2,1,1)x_(3,0,1)+x_(2,0,1)x_(3,1,1)                                       |

             3       6
o4 : Matrix S  <--- S
i5 : betti matrix g

            0 1
o5 = total: 3 6
        -1: . 6
         0: 3 .

o5 : BettiTally
i6 : betti matrix g1

            0 1
o6 = total: 3 6
        -1: . 6
         0: 3 .

o6 : BettiTally
i7 : betti res coker g

            0 1 2
o7 = total: 3 6 3
         0: 3 . .
         1: . 6 .
         2: . . 3

o7 : BettiTally

We can recover the Eagon-Northcott complex as follows.

i8 : f = flattenedGenericTensor({6,2}, ZZ/32003)

o8 = | x_(0,0) x_(1,0) x_(2,0) x_(3,0) x_(4,0) x_(5,0) |
     | x_(0,1) x_(1,1) x_(2,1) x_(3,1) x_(4,1) x_(5,1) |

               ZZ              2         ZZ              6
o8 : Matrix (-----[x   ..x   ])  <--- (-----[x   ..x   ])
             32003  0,0   5,1          32003  0,0   5,1
i9 : S = ring f;
i10 : g = tensorComplex1(f,{0,0});

              1       15
o10 : Matrix S  <--- S
i11 : transpose g

o11 = | -x_(0,1)x_(1,0)+x_(0,0)x_(1,1) |
      | -x_(0,1)x_(2,0)+x_(0,0)x_(2,1) |
      | -x_(1,1)x_(2,0)+x_(1,0)x_(2,1) |
      | -x_(0,1)x_(3,0)+x_(0,0)x_(3,1) |
      | -x_(1,1)x_(3,0)+x_(1,0)x_(3,1) |
      | -x_(2,1)x_(3,0)+x_(2,0)x_(3,1) |
      | -x_(0,1)x_(4,0)+x_(0,0)x_(4,1) |
      | -x_(1,1)x_(4,0)+x_(1,0)x_(4,1) |
      | -x_(2,1)x_(4,0)+x_(2,0)x_(4,1) |
      | -x_(3,1)x_(4,0)+x_(3,0)x_(4,1) |
      | -x_(0,1)x_(5,0)+x_(0,0)x_(5,1) |
      | -x_(1,1)x_(5,0)+x_(1,0)x_(5,1) |
      | -x_(2,1)x_(5,0)+x_(2,0)x_(5,1) |
      | -x_(3,1)x_(5,0)+x_(3,0)x_(5,1) |
      | -x_(4,1)x_(5,0)+x_(4,0)x_(5,1) |

              15       1
o11 : Matrix S   <--- S
i12 : betti res coker g

             0  1  2  3  4 5
o12 = total: 1 15 40 45 24 5
          0: 1  .  .  .  . .
          1: . 15 40 45 24 5

o12 : BettiTally
i13 : betti eagonNorthcott matrix entries matrix f

             0  1  2  3  4 5
o13 = total: 1 15 40 45 24 5
          0: 1  .  .  .  . .
          1: . 15 40 45 24 5

o13 : BettiTally

The following example is taken from the introduction to BEKS.

i14 : f = flattenedGenericTensor({7,1,2,1,2,1},ZZ/32003);

                ZZ                                                                                                                                                                                                                                                                                                                                                                                                          4         ZZ                                                                                                                                                                                                                                                                                                                                                                                                          7
o14 : Matrix (-----[x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           ])  <--- (-----[x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           , x           ])
              32003  0,0,0,0,0,0   0,0,0,0,1,0   0,0,1,0,0,0   0,0,1,0,1,0   1,0,0,0,0,0   1,0,0,0,1,0   1,0,1,0,0,0   1,0,1,0,1,0   2,0,0,0,0,0   2,0,0,0,1,0   2,0,1,0,0,0   2,0,1,0,1,0   3,0,0,0,0,0   3,0,0,0,1,0   3,0,1,0,0,0   3,0,1,0,1,0   4,0,0,0,0,0   4,0,0,0,1,0   4,0,1,0,0,0   4,0,1,0,1,0   5,0,0,0,0,0   5,0,0,0,1,0   5,0,1,0,0,0   5,0,1,0,1,0   6,0,0,0,0,0   6,0,0,0,1,0   6,0,1,0,0,0   6,0,1,0,1,0          32003  0,0,0,0,0,0   0,0,0,0,1,0   0,0,1,0,0,0   0,0,1,0,1,0   1,0,0,0,0,0   1,0,0,0,1,0   1,0,1,0,0,0   1,0,1,0,1,0   2,0,0,0,0,0   2,0,0,0,1,0   2,0,1,0,0,0   2,0,1,0,1,0   3,0,0,0,0,0   3,0,0,0,1,0   3,0,1,0,0,0   3,0,1,0,1,0   4,0,0,0,0,0   4,0,0,0,1,0   4,0,1,0,0,0   4,0,1,0,1,0   5,0,0,0,0,0   5,0,0,0,1,0   5,0,1,0,0,0   5,0,1,0,1,0   6,0,0,0,0,0   6,0,0,0,1,0   6,0,1,0,0,0   6,0,1,0,1,0
i15 : S = ring f;
i16 : g = tensorComplex1 f;

              10       28
o16 : Matrix S   <--- S
i17 : betti res coker g

              0  1  2  3  4  5
o17 = total: 10 28 70 70 28 10
          0: 10 28  .  .  .  .
          1:  .  . 70 70  .  .
          2:  .  .  .  . 28 10

o17 : BettiTally

The input map need not be generic.

i18 : S = QQ[x,y,z];
i19 : F = labeledModule S^5

       5
o19 = S

o19 : free S-module with labeled basis
i20 : G = tensorProduct(labeledModule S^2, labeledModule S^2)

       4
o20 = S

o20 : free S-module with labeled basis
i21 : f = map(G,F, (i,j) -> random(1,S))

o21 = | 9/2x+1/2y+9/4z 1/2x+y+3/4z     3/2x+3/4y+7/4z  7/9x+7/10y+1/2z 7/10x+7/3y+7z  |
      | 3/7x+5/2y+6/7z 2/3x+y+2z       6x+5/4y+2/9z    5x+3/10y+z      3/7x+5y+10/9z  |
      | 1/2x+10y+3z    3x+3/2y+4/3z    7/8x+5/6y+5z    2/5x+5/3y+7/2z  2/5x+6/5y+5/4z |
      | 5/7x+5/9y+5/3z 4/5x+1/10y+4/3z 3/7x+9/10y+4/7z 5/2x+5/9y+5/9z  6/7x+2y+z      |

              4       5
o21 : Matrix S  <--- S
i22 : g = tensorComplex1(f, {0,0,2});

              3       10
o22 : Matrix S  <--- S
i23 : betti res coker g

             0  1  2 3
o23 = total: 3 10 15 8
          0: 3  .  . .
          1: . 10  . .
          2: .  . 15 8

o23 : BettiTally

Caveat

Unlike BEKS, this method does not work with arbitrary weight vectors w.

See also

Ways to use tensorComplex1 :

For the programmer

The object tensorComplex1 is a method function.