Let M represent a coherent sheaf F on a product P=P^{n_0}x..xP^{n_{t-1}} of t projective space.
Let $pi: P -> P^I= X_{i \in I} P^{n_i}$ denote the projection onto some factors. We compute a chain complex of S_I modules whose sheafication is $Rpi_* F$.
The algorithm is based on the properties of strands, and the beilinson functor on $P^I$, see Tate Resolutions on Products of Projective Spaces. Note that the resulting complex is a chain complex instead of a cochain complex, so that for example HH^1 RpiM is the module representing $R^1 pi_* F$
In the second version we start with a projective scheme X =Proj(R/J) defined by J in some P^n= Proj R with R \cong K[x_0..x_n] a polynomial ring, an R-module N of representing a sheaf on X, and a matrix phi of homogeneous forms who's rows define a morphism phi: X -> P^m. In particular the 2x2 minors of phi vanish on X, and phi defines a morphism if and only if the entries of phi have no common zero in X. The algorithm passes to the graph of phi in P^n x P^m, and calls the first version of this function.
Here is an example of the first kind.
i1 : t=2 o1 = 2 |
i2 : n={1,2}
o2 = {1, 2}
o2 : List
|
i3 : (S,E)=productOfProjectiveSpaces{1,2}
o3 = (S, E)
o3 : Sequence
|
i4 : M=(beilinson E^{{-1,-1}})**S^{{-2,-1}}
o4 = cokernel {3, 2} | x_(1,2) |
{3, 2} | -x_(1,1) |
{3, 2} | x_(1,0) |
3
o4 : S-module, quotient of S
|
We compute the direct image complex of M by projecting to the second factor P^2.
i5 : I={1}
o5 = {1}
o5 : List
|
i6 : J=select({0,t-1},i-> not member(i,I))
o6 = {0}
o6 : List
|
i7 : RpiM=directImageComplex(M,I)
ZZ 2 ZZ 6
o7 = (-----[x ..x ]) <-- (-----[x ..x ])
32003 0,0 0,2 32003 0,0 0,2
-2 -1
o7 : ChainComplex
|
i8 : betti RpiM
-2 -1
o8 = total: 2 6
2: 2 6
o8 : BettiTally
|
i9 : prune HH_0 RpiM
o9 = 0
ZZ
o9 : -----[x ..x ]-module
32003 0,0 0,2
|
i10 : prune HH^1 RpiM
o10 = cokernel {2} | -x_(0,2) 0 |
{2} | 0 -x_(0,2) |
{2} | x_(0,0) 0 |
{2} | -x_(0,1) 0 |
{2} | 0 x_(0,0) |
{2} | 0 -x_(0,1) |
ZZ ZZ 6
o10 : -----[x ..x ]-module, quotient of (-----[x ..x ])
32003 0,0 0,2 32003 0,0 0,2
|
i11 : prune HH^2 RpiM
o11 = cokernel | x_(0,2) x_(0,1) x_(0,0) 0 0 0 |
| 0 0 0 x_(0,2) x_(0,1) x_(0,0) |
ZZ ZZ 2
o11 : -----[x ..x ]-module, quotient of (-----[x ..x ])
32003 0,0 0,2 32003 0,0 0,2
|
i12 : dim HH^2 RpiM o12 = 0 |
HH_{-2} RpiM is artinian, hence its sheafication is zero. Thus the direct image complex in this case is concentrated in the single sheaf $Rpi_* F = R^1pi_* F$
i13 : cohomologyMatrix(M,-3*n,3*n)
o13 = | 175h 140h 105h 70h 35h 0 35 |
| 120h 96h 72h 48h 24h 0 24 |
| 75h 60h 45h 30h 15h 0 15 |
| 40h 32h 24h 16h 8h 0 8 |
| 15h 12h 9h 6h 3h 0 3 |
| 0 0 0 0 0 0 0 |
| 5h2 4h2 3h2 2h2 h2 0 h |
| 0 0 0 0 0 0 0 |
| 15h3 12h3 9h3 6h3 3h3 0 3h2 |
| 40h3 32h3 24h3 16h3 8h3 0 8h2 |
| 75h3 60h3 45h3 30h3 15h3 0 15h2 |
| 120h3 96h3 72h3 48h3 24h3 0 24h2 |
| 175h3 140h3 105h3 70h3 35h3 0 35h2 |
13 7
o13 : Matrix (ZZ[h, k]) <--- (ZZ[h, k])
|
i14 : T=tateResolution(M,-2*n,2*n); |
i15 : cohomologyMatrix(strand(T,{0,0},J),-2*n,2*n)
o15 = | 0 0 30h 0 0 |
| 0 0 16h 0 0 |
| 0 0 6h 0 0 |
| 0 0 0 0 0 |
| 0 0 2h2 0 0 |
| 0 0 0 0 0 |
| 0 0 6h3 0 0 |
| 0 0 16h3 0 0 |
| 0 0 30h3 0 0 |
9 5
o15 : Matrix (ZZ[h, k]) <--- (ZZ[h, k])
|
As an example of the second version, we consider the ruled cubic surface scroll X subset P^4 defined by the 2x2 minors of the matrix $$ m= matrix \{ \{x_0,x_1,x_3\},\{x_1,x_2,x_4\} \},$$ and the morphism f: X -> P^1 onto the base. f is defined by ratio of the two rows of m, hence by the 3x2 matrix phi=m^t.
As a module N we take a symmetric power of the cokernel m, twisted by R^{\{d\}}.
i16 : kk=ZZ/101 o16 = kk o16 : QuotientRing |
i17 : R=kk[x_0..x_4] o17 = R o17 : PolynomialRing |
i18 : m=matrix {{ x_0,x_1,x_3},{x_1,x_2,x_4}}
o18 = | x_0 x_1 x_3 |
| x_1 x_2 x_4 |
2 3
o18 : Matrix R <--- R
|
i19 : J=minors(2,m)
2
o19 = ideal (- x + x x , - x x + x x , - x x + x x )
1 0 2 1 3 0 4 2 3 1 4
o19 : Ideal of R
|
i20 : dim J, degree J o20 = (3, 3) o20 : Sequence |
i21 : s=2,d=-2 o21 = (2, -2) o21 : Sequence |
i22 : N=symmetricPower(s,coker m)**R^{d};
|
i23 : betti res N
0 1 2
o23 = total: 3 6 3
2: 3 6 3
o23 : BettiTally
|
i24 : annihilator N == J o24 = true |
i25 : phi= transpose m
o25 = {-1} | x_0 x_1 |
{-1} | x_1 x_2 |
{-1} | x_3 x_4 |
3 2
o25 : Matrix R <--- R
|
i26 : RphiN = directImageComplex(J,N,phi)
1
o26 = 0 <-- (kk[x ..x ]) <-- 0
0,0 0,1
-2 0
-1
o26 : ChainComplex
|
i27 : T= ring RphiN o27 = T o27 : PolynomialRing |
i28 : HH^1 RphiN
1
o28 = T
o28 : T-module, free, degrees {1}
|
Now a different symmetric power and a different twist.
i29 : s=3,d=1 o29 = (3, 1) o29 : Sequence |
i30 : N=symmetricPower(s,coker m)**R^{d};
|
i31 : RphiN = directImageComplex(J,N,phi)
11 9
o31 = (kk[x ..x ]) <-- (kk[x ..x ])
0,0 0,1 0,0 0,1
0 1
o31 : ChainComplex
|
i32 : T=ring RphiN o32 = T o32 : PolynomialRing |
i33 : netList apply(toList(min RphiN.. max RphiN),i->
{-i, saturate annihilator HH^(-i) RphiN,betti res HH^(-i) RphiN})
+--+--------+-----------+
| | | 0 1|
o33 = |0 |ideal ()|total: 11 9|
| | | 0: 11 9|
+--+--------+-----------+
| | | |
|-1|ideal 1 |total: |
+--+--------+-----------+
|
i34 : R0=prune HH^0 RphiN
o34 = cokernel | 0 0 0 0 0 0 -x_(0,1) 0 0 |
| 0 0 0 0 0 0 0 0 -x_(0,1) |
| x_(0,0) 0 0 0 0 0 0 0 0 |
| -x_(0,1) 0 0 x_(0,0) 0 0 0 0 0 |
| 0 x_(0,0) 0 0 0 0 0 0 0 |
| 0 -x_(0,1) x_(0,0) 0 0 0 0 0 0 |
| 0 0 -x_(0,1) 0 x_(0,0) 0 0 0 0 |
| 0 0 0 -x_(0,1) 0 x_(0,0) 0 0 0 |
| 0 0 0 0 -x_(0,1) 0 0 x_(0,0) 0 |
| 0 0 0 0 0 -x_(0,1) x_(0,0) 0 0 |
| 0 0 0 0 0 0 0 -x_(0,1) x_(0,0) |
11
o34 : T-module, quotient of T
|
i35 : dim R0, degree R0 o35 = (2, 2) o35 : Sequence |
i36 : betti (sR0Dual = syz transpose presentation R0)
0 1
o36 = total: 11 2
0: 11 .
1: . .
2: . .
3: . 1
4: . 1
o36 : BettiTally
|
i37 : saturate annihilator coker transpose sR0Dual o37 = ideal 1 o37 : Ideal of T |
i38 : dual source sR0Dual
2
o38 = T
o38 : T-module, free, degrees {-4, -5}
|
We conclude that the sheaf represented by R0 is O(5)+O(4) on P^1, which is correct because N represents phi^*O(1) and phi_* O_X(H) = O(2)+O(1).
Note that the resulting complex is a chain complex instead of a cochain complex, so that for example HH^i RpiM = HH_{-i} RpiM.
The object directImageComplex is a method function with options.