next | previous | forward | backward | up | top | index | toc | Macaulay2 web site
TateOnProducts :: actionOnDirectImage

actionOnDirectImage -- recover the module structure via a Noether normalization

Synopsis

Description

This method provides another representation of the direct image complex.

Let M represent a coherent sheaf G on Y, and let π:Y→Pr be a Noether normalization of Y. Note that πis chosen among finite linear projections Pm→Pr from certain coordinate planes. Each coordinate yi of Pm gives a multiplication map G→G(1), and its induced map π*G→(π*G)(1). Note that these induced maps provide an OY-module structure on π*G, in other words, we may recover the OY-module F from π*G and this action.

If no map is specified, it computes the complex C on Pr and a list of induced maps between chain complexes C→C(1) on Pr associated to the multiplication by y0,...,ym, where C represents the Beilinson monad of π*G (or Rπ*U(T)).

If a map is specified by a matrix phi, then it computes the complex C on Pr and a list of induced maps between chain complexes C→C(1) on Pr associated to the multiplication by y0,...,ym, where C represents the Beilinson monad of R(π⋅phi)*F.

When n is quite big compared to r, it is not very efficient to deal with Beilinson bundles on Pn since they have huge rank and presentation matrices. In particular, the method directImageComplex becomes slow down.

The following is an example of direct images of the structure sheaf on a twisted cubic.

i1 : kk=ZZ/101; d=6;
i3 : needsPackage "Resultants";
i4 : vd=veronese(1,d,kk);

o4 : RingMap kk[t , t ] <--- kk[x , x , x , x , x , x , x ]
                 0   1           0   1   2   3   4   5   6
i5 : R=target vd; S=source vd;
i7 : M=R^{1:-1}; I=ann M; J=ker vd;

o8 : Ideal of R

o9 : Ideal of S
i10 : RM=time directImageComplex(I,M,matrix vd);
     -- used 100.252 seconds
i11 : for i from min RM to max RM list (rank RM_i)

o11 = {36, 180, 360, 360, 180, 36}

o11 : List

RM looks complicated since it is consisted of universal bundles on P6, which are of high rank.

i12 : retTable=time actionOnDirectImage(I,M,matrix vd);
We take a finite projection from P^n to P^d as {x   , x   }     -- used 92.6127 seconds
                                                 0,0   0,6
i13 : keys retTable

o13 = {0}

o13 : List

We see that 0 is the only key, in other words, there is no other Ri vd* except i=0. To see whether it gives an action on S/J, we can use the test function isAction.

Note that list retTable#i is consisted of maps of chain complexes Ri(π⋅phi)*(yj) : C→C(1) where C represents the direct image Ri(π⋅phi)*F. In general, it does not give a right action on C itself. The induced maps on cohomology groups provide a right action.

i14 : isAction(J, apply(dim S, i->prune HH^0 retTable#0#i))

o14 = true

The following is a little more complicated example with nontrivial higher direct images. Let X be the product of two quartic curves C, and f : X →C be the second projection. Let P, Q be two distinct points of C, and let L = O(P×C + Q×C + D) be a line bundle on X where D is the diagonal. We want to compute the higher direct images Ri f*L. We choose C as the Fermat quartic, and choose P, Q as points on the intersection of C and the line V(x2).

i15 : kk=ZZ/1009;
i16 : (S,E)=productOfProjectiveSpaces({2,2},CoefficientField=>kk);
i17 : f1=S_0^4+S_1^4+S_2^4; f2=S_3^4+S_4^4+S_5^4;
i19 : IX=ideal (f1,f2);

o19 : Ideal of S
i20 : P=matrix{{1,192,0}}; Q=matrix{{192,1,0}};

               1        3
o20 : Matrix ZZ  <--- ZZ

               1        3
o21 : Matrix ZZ  <--- ZZ
i22 : varX=matrix{{S_0,S_1,S_2}}; varY=matrix{{S_3,S_4,S_5}};

              1       3
o22 : Matrix S  <--- S

              1       3
o23 : Matrix S  <--- S
i24 : PX=P||varX; QX=Q||varX;

              2       3
o24 : Matrix S  <--- S

              2       3
o25 : Matrix S  <--- S
i26 : I1=ideal(f2, minors(2,PX)); -- ideal for P*C

o26 : Ideal of S
i27 : I2=ideal(f2, minors(2,QX)); -- ideal for Q*C

o27 : Ideal of S
i28 : I3=ideal(f1,f2, minors(2, varX||varY)); -- ideal for the diagonal D

o28 : Ideal of S
i29 : I=intersect(I1,I2,I3); -- ideal for P*C+Q*C+D

o29 : Ideal of S
i30 : SX=S/IX; Ldual=I/IX;
i32 : betti (LX=Hom(Ldual, SX^1))

              0  1
o32 = total: 10 26
          0:  1  .
          1:  1  1
          2:  .  1
          3:  8 24

o32 : BettiTally

To compute its Tate resolution on the ambient space P2 ×P2, we first consider it as a sheaf on P2 ×P2, and then take a linear presentation matrix via a truncation.

i33 : phi = map(SX,S,vars SX);

o33 : RingMap SX <--- S
i34 : betti (L=prune pushForward(phi,LX))

              0  1
o34 = total: 10 27
          0:  1  .
          1:  1  1
          2:  .  1
          3:  8 25

o34 : BettiTally
i35 : Ltr = (truncate ({2,2},L))**S^{{2,2}};
i36 : betti res Ltr

              0   1   2  3  4
o36 = total: 60 176 184 80 12
          0: 60 176 184 80 12

o36 : BettiTally

We read off (a finite subquotient of) the Tate resolution of Rf*L as follows.

i37 : Q=symExt(presentation Ltr, E);

              184       60
o37 : Matrix E    <--- E
i38 : T=(res (coker Q,LengthLimit=>12))**E^{{2,2}}[4];
i39 : cohomologyMatrix (T, -{5,5},{3,3})

o39 = | 0        0        0        0       0      0    0     96k 0   |
      | 0        0        0        0       0      0    0     60k 88k |
      | 60h      48h      36h      24h     12h    3h+3 12    0   0   |
      | 36h2+20h 28h2+16h 20h2+12h 12h2+8h 4h2+4h 5h+1 12h+4 0   0   |
      | 92h2     72h2     52h2     32h2    12h2   8h   28h   0   0   |
      | 168h2    132h2    96h2     60h2    24h2   12h  48h   0   0   |
      | 244h2    192h2    140h2    88h2    36h2   16h  68h   0   0   |
      | 320h2    252h2    184h2    116h2   48h2   20h  88h   0   0   |
      | 396h2    312h2    228h2    144h2   60h2   24h  108h  0   0   |

                       9                9
o39 : Matrix (ZZ[h, k])  <--- (ZZ[h, k])
i40 : sT=strand(T,{0,0},{0});
i41 : sTFull=new ChainComplex;
i42 : sTFull.ring = ring sT;
i43 : ma=6;
i44 : sTFull=(dual res (coker transpose (sT[ma]).dd_0, LengthLimit=>2*ma))[-ma];
i45 : (S',E')=productOfProjectiveSpaces({2},CoefficientField=>kk);
i46 : projOnE=map(E', E, toList(3:0)|(gens E'));

o46 : RingMap E' <--- E
i47 : mi=min sTFull; ma=max sTFull;
i49 : W=new ChainComplex; W.ring = E';
i51 : apply(toList(mi..ma),i-> W_i = E'^(-apply(degrees sTFull_i,d->d_{1})));
i52 : apply(toList(mi+1..ma),i->W.dd_i = map(W_(i-1),W_i,projOnE sTFull.dd_i));
i53 : betti W

             -6 -5 -4 -3 -2 -1 0  1  2  3  4  5  6
o53 = total: 24 20 16 12  9  8 9 12 16 20 24 28 32
          0: 22 18 14 10  6  3 1  .  .  .  .  .  .
          1:  2  2  2  2  3  5 8 12 16 20 24 28 32

o53 : BettiTally

One can check that W has two strands (corresponding to R0f*L and R1f*L, respectively). By taking the Beilinson functor, one can check that R0f*L is the structure sheaf on C, and R1f*L is a torsion sheaf supported on two points lying on the intersection of C and the line V(x2) other than P, Q.

i54 : R0fL = prune HH^0 beilinson W

o54 = cokernel | x_(0,0)^4+x_(0,1)^4+x_(0,2)^4 |

                               1
o54 : S'-module, quotient of S'
i55 : R1fL = prune HH^1 beilinson W

o55 = cokernel | -131x_(0,2) 0       0       0       x_(0,0)  x_(0,1)            0       0       -131x_(0,2) 0       -131x_(0,2) 0       |
               | x_(0,2)     x_(0,1) x_(0,0) 0       0        0                  0       0       0           0       0           0       |
               | 0           0       0       x_(0,2) -x_(0,1) x_(0,0)+439x_(0,1) 0       0       0           0       0           0       |
               | 0           0       0       0       0        0                  x_(0,2) x_(0,1) x_(0,0)     0       0           0       |
               | 0           0       0       0       0        0                  0       0       0           x_(0,2) x_(0,1)     x_(0,0) |

                               5
o55 : S'-module, quotient of S'
i56 : degree R0fL

o56 = 4
i57 : primaryDecomposition ann R0fL

              4      4      4
o57 = {ideal(x    + x    + x   )}
              0,0    0,1    0,2

o57 : List
i58 : degree R1fL

o58 = 2
i59 : primaryDecomposition ann R1fL

                                                                        
o59 = {ideal (x   , x    + 247x   ), ideal (x   , x    + 192x   ), ideal
               0,2   0,0       0,1           0,2   0,0       0,1        
      -----------------------------------------------------------------------
                    2
      (x   , x   , x   )}
        0,1   0,0   0,2

o59 : List

These module also can be seen as in the following way via a finite linear projection. We take a further projection π:C→P1, and check whether these modules induce an action on the direct image under π, in other words, provide OC-module structures. As results, these actions make (the sheafification of) M0 and M1 into OC-modules which are identical to R0f*L and R1f*L.

i60 : J=ideal (S'_0^4+S'_1^4+S'_2^4);

o60 : Ideal of S'
i61 : retTable=actionOnDirectImage(J,W);
We take a finite projection from P^n to P^d as {x   , x   }
                                                 0,1   0,2
i62 : keys retTable

o62 = {0, 1}

o62 : List

We see that 0, 1 appear as keys, in other words, both R0f*L and R1f*L survives.

i63 : prunedActionList = i->apply(dim S',j->prune HH^i retTable#i#j);
i64 : apply(keys retTable, i->isAction(J,prunedActionList(i)))

o64 = {true, true}

o64 : List
i65 : M0=source (prunedActionList(0))_0

o65 = cokernel {2} | 0        -x_(0,1) 0        |
               {2} | x_(0,0)  0        0        |
               {2} | -x_(0,1) x_(0,0)  0        |
               {2} | 0        0        0        |
               {2} | 0        0        x_(0,0)  |
               {2} | 0        0        -x_(0,1) |
               {3} | 0        0        0        |

                                                         7
o65 : kk[x   , x   ]-module, quotient of (kk[x   , x   ])
          0,0   0,1                           0,0   0,1
i66 : (rank M0, degree M0, betti res M0)

                    0 1
o66 = (4, 4, total: 7 3)
                 2: 6 3
                 3: 1 .

o66 : Sequence
i67 : isIsomorphic(truncate(regularity M0, M0), truncate(regularity M0, dual dual M0))

o67 = true
i68 : dual dual M0

                      4
o68 = (kk[x   , x   ])
           0,0   0,1

o68 : kk[x   , x   ]-module, free, degrees {3, 2, 1, 0}
          0,0   0,1
i69 : M1=source (prunedActionList(1))_0

o69 = cokernel {2} | x_(0,1) 0       |
               {2} | 0       x_(0,1) |

                                                         2
o69 : kk[x   , x   ]-module, quotient of (kk[x   , x   ])
          0,0   0,1                           0,0   0,1
i70 : (rank M1, degree M1, betti res M1)

                    0 1
o70 = (0, 2, total: 2 2)
                 2: 2 2

o70 : Sequence

Note that the sheafification of M0 (=R0(π⋅f)*L) is a rank 4 vector bundle O ⊕O(-1) ⊕O(-2) ⊕O(-3) on P1, and the sheafification of M1 (= R1(π⋅f)* L) is a torsion sheaf on P1 supported on the double point at [1:0]. Together with the induced action on S’, they have an OC-module structure as desired.

Caveat

Note that the resulting complex is a chain complex instead of a cochain complex, so that for example HHi RpiM = HH-i RpiM. Also note that this requires a pseudo-inverse computation of a split exact sequence, which might fail over finite fields (see SVDComplexes.m2 and its documentations).

See also

Ways to use actionOnDirectImage :