Prints the commands which illustrate / test various composition of functions.
i1 : n={1,1}, v=n+{1,1} o1 = ({1, 1}, {2, 2}) o1 : Sequence |
i2 : high=3*n, low=-high o2 = ({3, 3}, {-3, -3}) o2 : Sequence |
i3 : (S,E)=productOfProjectiveSpaces n o3 = (S, E) o3 : Sequence |
We build the example from Section 4 of the paper Tate Resolutions on Products of Projective Spaces which corresponds to a rank 3 vector bundle on P1xP1.
i4 : P=(image transpose gens trim (ideal vars E)^2)**E^{n} o4 = image {-1, -3} | -e_(1,0)e_(1,1) | {-2, -2} | -e_(0,1)e_(1,1) | {-2, -2} | -e_(0,0)e_(1,1) | {-2, -2} | -e_(0,1)e_(1,0) | {-2, -2} | -e_(0,0)e_(1,0) | {-3, -1} | -e_(0,0)e_(0,1) | 6 o4 : E-module, submodule of E |
i5 : betti P 0 1 o5 = total: 1 4 -2: 1 . -1: . . 0: . 4 o5 : BettiTally |
i6 : LP=bgg P 6 4 1 o6 = S <-- S <-- S 0 1 2 o6 : ChainComplex |
i7 : M = (HH^0 LP)**S^{-n} o7 = cokernel {2, 0} | x_(1,1) -x_(1,0) 0 0 | {1, 1} | -x_(0,0) 0 x_(1,0) 0 | {1, 1} | 0 -x_(0,0) x_(1,1) 0 | {1, 1} | -x_(0,1) 0 0 x_(1,0) | {1, 1} | 0 -x_(0,1) 0 x_(1,1) | {0, 2} | 0 0 x_(0,1) -x_(0,0) | 6 o7 : S-module, quotient of S |
i8 : betti res M 0 1 2 o8 = total: 6 4 1 2: 6 4 1 o8 : BettiTally |
i9 : T = tateResolution(M,low,high) 136 55 32 44 39 36 54 91 136 184 239 304 382 476 589 o9 = E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 o9 : ChainComplex |
i10 : cohomologyMatrix(T,low,high) o10 = | 28h 18h 8h 2 12 22 32 | | 20h 13h 6h 1 8 15 22 | | 12h 8h 4h 0 4 8 12 | | 4h 3h 2h h 0 1 2 | | 4h2 2h2 0 2h 4h 6h 8h | | 12h2 7h2 2h2 3h 8h 13h 18h | | 20h2 12h2 4h2 4h 12h 20h 28h | 7 7 o10 : Matrix (ZZ[h, k]) <--- (ZZ[h, k]) |
T is the part of the Tate resolution, which is complete in the range low to high. (In a wider range some terms are missing or are incorrect)
i11 : cohomologyMatrix(T,2*low,2*high) o11 = | 0 0 0 0 0 0 0 0 0 0 0 0 0 | | 0 0 0 0 0 0 0 0 0 0 68k 0 0 | | 0 0 0 0 0 0 0 0 0 0 55k 68k 0 | | 58h 48h 38h 28h 18h 8h 2 12 22 32 0 0 0 | | 41h 34h 27h 20h 13h 6h 1 8 15 22 0 0 0 | | 24h 20h 16h 12h 8h 4h 0 4 8 12 0 0 0 | | 7h 6h 5h 4h 3h 2h h 0 1 2 0 0 0 | | 10h2 8h2 6h2 4h2 2h2 0 2h 4h 6h 8h 0 0 0 | | 27h2 22h2 17h2 12h2 7h2 2h2 3h 8h 13h 18h 0 0 0 | | 0 36h2 28h2 20h2 12h2 4h2 4h 12h 20h 28h 0 0 0 | | 0 0 39h2 28h2 17h2 6h2 5h 16h 27h 38h 0 0 0 | | 0 0 0 36h2 22h2 8h2 6h 20h 34h 48h 0 0 0 | | 0 0 0 0 27h2 10h2 7h 24h 41h 58h 0 0 0 | 13 13 o11 : Matrix (ZZ[h, k]) <--- (ZZ[h, k]) |
Alternatively we can recover M from its Beilinson monad derived from T.
i12 : B=beilinson T 1 4 o12 = S <-- S -1 0 o12 : ChainComplex |
i13 : M'=prune HH^0 B o13 = cokernel {2, 0} | -x_(1,0) 0 0 x_(1,1) | {1, 1} | x_(0,0) -x_(1,1) 0 0 | {1, 1} | -x_(0,1) 0 -x_(1,1) 0 | {0, 2} | 0 x_(0,1) x_(0,0) 0 | {1, 1} | 0 -x_(1,0) 0 x_(0,0) | {1, 1} | 0 0 -x_(1,0) -x_(0,1) | 6 o13 : S-module, quotient of S |
i14 : prune HH^1 B o14 = cokernel | x_(1,1) x_(1,0) x_(0,1) x_(0,0) | 1 o14 : S-module, quotient of S |
i15 : isIsomorphic(M,M') o15 = true |
We study the corner complex of T at c={0,0}.
i16 : C=cornerComplex(T,{0,0}); |
i17 : betti C -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 o17 = total: 55 32 44 39 20 6 1 4 15 36 70 120 -1: 55 . . . . . . . . . . . 0: . 32 44 39 20 6 . . . . . . 1: . . . . . . 1 . . . . . 2: . . . . . . . . . . . . 3: . . . . . . . 4 15 36 70 120 o17 : BettiTally |
i18 : cohomologyMatrix(C,low,high) o18 = | 0 0 0 2 12 22 32 | | 0 0 0 1 8 15 22 | | 0 0 0 0 4 8 12 | | 0 0 0 h 0 1 2 | | 4h3 2h3 0 0 0 0 0 | | 12h3 7h3 2h3 0 0 0 0 | | 20h3 12h3 4h3 0 0 0 0 | 7 7 o18 : Matrix (ZZ[h, k]) <--- (ZZ[h, k]) |
i19 : betti C.dd_0 0 1 o19 = total: 1 4 0: 1 . 1: . . 2: . 4 o19 : BettiTally |
i20 : P=ker C.dd_0**E^{v} o20 = image {-1, 0} | e_(1,1) e_(1,0) e_(0,0) 0 0 0 e_(0,1) 0 0 0 0 0 0 0 0 | {-1, 0} | 0 0 0 e_(1,1) e_(1,0) e_(0,1) 0 e_(0,0) 0 0 0 0 0 0 0 | {0, -1} | 0 0 0 0 0 0 -e_(1,1) e_(1,1) e_(1,0) e_(0,1) e_(0,0) 0 e_(1,1) 0 0 | {0, -1} | 0 0 0 0 0 0 0 0 0 0 0 e_(1,1) e_(1,0) e_(0,1) e_(0,0) | 4 o20 : E-module, submodule of E |
The tensor product with E{v} is necessary because we work with E instead of ωE. M can be recovered by applying the bgg functor to P.
i21 : LP=bgg P; |
i22 : betti LP -3 -2 -1 0 o22 = total: 4 16 24 15 0: 4 16 24 15 o22 : BettiTally |
i23 : coLP=apply(toList(min LP..max LP),i->prune HH^(-i) LP); |
i24 : apply(coLP,h->dim h) o24 = {0, -1, 0, 4} o24 : List |
i25 : M1=HH^0 LP o25 = image {1, -1} | x_(0,0)x_(1,1) -x_(1,1)^2 0 0 x_(1,0)x_(1,1) 0 | {1, -1} | x_(0,0)x_(1,0) -x_(1,0)x_(1,1) 0 0 x_(1,0)^2 0 | {1, -1} | x_(0,1)x_(1,1) 0 x_(1,1)^2 0 0 -x_(1,0)x_(1,1) | {1, -1} | x_(0,1)x_(1,0) 0 x_(1,0)x_(1,1) 0 0 -x_(1,0)^2 | {0, 0} | x_(0,0)^2 -x_(0,0)x_(1,1) 0 0 x_(0,0)x_(1,0) 0 | {0, 0} | x_(0,1)^2 0 x_(0,1)x_(1,1) 0 0 -x_(0,1)x_(1,0) | {0, 0} | x_(0,0)x_(0,1) -x_(0,1)x_(1,1) 0 0 x_(0,1)x_(1,0) 0 | {0, 0} | x_(0,0)x_(0,1) 0 x_(0,0)x_(1,1) 0 0 -x_(0,0)x_(1,0) | {0, 0} | 0 x_(0,1)x_(1,0) x_(0,0)x_(1,0) x_(1,0)^2 0 0 | {0, 0} | 0 0 0 x_(1,1)^2 x_(0,1)x_(1,1) x_(0,0)x_(1,1) | {0, 0} | 0 0 0 x_(1,0)x_(1,1) x_(0,1)x_(1,0) x_(0,0)x_(1,0) | {-1, 1} | 0 x_(0,1)^2 x_(0,0)x_(0,1) x_(0,1)x_(1,0) 0 0 | {-1, 1} | 0 x_(0,0)x_(0,1) x_(0,0)^2 x_(0,0)x_(1,0) 0 0 | {-1, 1} | 0 0 0 x_(0,1)x_(1,1) x_(0,1)^2 x_(0,0)x_(0,1) | {-1, 1} | 0 0 0 x_(0,0)x_(1,1) x_(0,0)x_(0,1) x_(0,0)^2 | 15 o25 : S-module, submodule of S |
i26 : betti M1,betti M 0 1 0 1 o26 = (total: 6 4, total: 6 4) 2: 6 4 2: 6 4 o26 : Sequence |
i27 : isIsomorphic(M,M1) o27 = true |
It works also for different syzygy modules in the corner complex. It works for all P=ker C.ddk in the range where C.ddk is computed completely. We check the case k=1 and k=-2.
i28 : k=1 o28 = 1 |
i29 : P=ker C.dd_(-k)**E^{v}; betti P 0 1 o30 = total: 4 15 -1: 4 15 o30 : BettiTally |
i31 : LP=bgg P 1 4 o31 = S <-- S 0 1 o31 : ChainComplex |
i32 : betti LP 0 1 o32 = total: 1 4 0: 1 4 o32 : BettiTally |
i33 : coLP=apply(toList(min LP..max LP),i->prune HH^(-i) LP); |
i34 : apply(coLP,h->dim h) o34 = {0, 4} o34 : List |
i35 : M1=HH^(-k) LP o35 = image {1, 0} | x_(0,1) 0 -x_(1,0) 0 0 x_(1,1) | {1, 0} | x_(0,0) x_(1,0) 0 0 -x_(1,1) 0 | {0, 1} | 0 x_(0,1) x_(0,0) x_(1,1) 0 0 | {0, 1} | 0 0 0 x_(1,0) x_(0,1) x_(0,0) | 4 o35 : S-module, submodule of S |
i36 : betti M1, betti M 0 1 0 1 o36 = (total: 6 4, total: 6 4) 2: 6 4 2: 6 4 o36 : Sequence |
i37 : isIsomorphic(M,M1) o37 = true |
Note that we have to take HH(-k) == HHk because of the homological position in which P sits.
i38 : k=-2 o38 = -2 |
i39 : P=ker C.dd_(-k)**E^{v}; betti P 0 1 o40 = total: 70 120 2: 70 120 o40 : BettiTally |
i41 : LP=bgg P; |
i42 : betti LP -5 -4 -3 -2 o42 = total: 36 129 160 70 0: 36 129 160 70 o42 : BettiTally |
i43 : coLP=apply(toList(min LP..max LP),i->prune HH^(-i) LP); |
i44 : apply(coLP,h->dim h) o44 = {0, -1, 0, 4} o44 : List |
i45 : M1=HH^(-k) LP o45 = image {1, -3} | x_(0,1)x_(1,1)^3 0 -x_(1,0)x_(1,1)^3 0 0 x_(1,1)^4 | {1, -3} | x_(0,0)x_(1,1)^3 x_(1,0)x_(1,1)^3 0 0 -x_(1,1)^4 0 | {1, -3} | x_(0,1)x_(1,0)x_(1,1)^2 0 -x_(1,0)^2x_(1,1)^2 0 0 x_(1,0)x_(1,1)^3 | {1, -3} | x_(0,0)x_(1,0)x_(1,1)^2 x_(1,0)^2x_(1,1)^2 0 0 -x_(1,0)x_(1,1)^3 0 | {1, -3} | x_(0,1)x_(1,0)^2x_(1,1) 0 -x_(1,0)^3x_(1,1) 0 0 x_(1,0)^2x_(1,1)^2 | {1, -3} | x_(0,1)x_(1,0)^3 0 -x_(1,0)^4 0 0 x_(1,0)^3x_(1,1) | {1, -3} | x_(0,0)x_(1,0)^2x_(1,1) x_(1,0)^3x_(1,1) 0 0 -x_(1,0)^2x_(1,1)^2 0 | {1, -3} | x_(0,0)x_(1,0)^3 x_(1,0)^4 0 0 -x_(1,0)^3x_(1,1) 0 | {0, -2} | 0 x_(0,1)x_(1,1)^3 x_(0,0)x_(1,1)^3 x_(1,1)^4 0 0 | {0, -2} | x_(0,0)x_(0,1)x_(1,1)^2 x_(0,1)x_(1,0)x_(1,1)^2 0 0 -x_(0,1)x_(1,1)^3 0 | {0, -2} | 0 x_(0,1)x_(1,0)x_(1,1)^2 x_(0,0)x_(1,0)x_(1,1)^2 x_(1,0)x_(1,1)^3 0 0 | {0, -2} | x_(0,0)x_(0,1)x_(1,0)x_(1,1) x_(0,1)x_(1,0)^2x_(1,1) 0 0 -x_(0,1)x_(1,0)x_(1,1)^2 0 | {0, -2} | x_(0,1)^2x_(1,1)^2 0 -x_(0,1)x_(1,0)x_(1,1)^2 0 0 x_(0,1)x_(1,1)^3 | {0, -2} | x_(0,0)x_(0,1)x_(1,1)^2 0 -x_(0,0)x_(1,0)x_(1,1)^2 0 0 x_(0,0)x_(1,1)^3 | {0, -2} | x_(0,0)^2x_(1,1)^2 x_(0,0)x_(1,0)x_(1,1)^2 0 0 -x_(0,0)x_(1,1)^3 0 | {0, -2} | 0 x_(0,1)x_(1,0)^2x_(1,1) x_(0,0)x_(1,0)^2x_(1,1) x_(1,0)^2x_(1,1)^2 0 0 | {0, -2} | x_(0,0)x_(0,1)x_(1,0)^2 x_(0,1)x_(1,0)^3 0 0 -x_(0,1)x_(1,0)^2x_(1,1) 0 | {0, -2} | 0 x_(0,1)x_(1,0)^3 x_(0,0)x_(1,0)^3 x_(1,0)^3x_(1,1) 0 0 | {0, -2} | 0 0 0 x_(1,0)^4 x_(0,1)x_(1,0)^3 x_(0,0)x_(1,0)^3 | {0, -2} | x_(0,1)^2x_(1,0)x_(1,1) 0 -x_(0,1)x_(1,0)^2x_(1,1) 0 0 x_(0,1)x_(1,0)x_(1,1)^2 | {0, -2} | x_(0,1)^2x_(1,0)^2 0 -x_(0,1)x_(1,0)^3 0 0 x_(0,1)x_(1,0)^2x_(1,1) | {0, -2} | x_(0,0)x_(0,1)x_(1,0)x_(1,1) 0 -x_(0,0)x_(1,0)^2x_(1,1) 0 0 x_(0,0)x_(1,0)x_(1,1)^2 | {0, -2} | x_(0,0)x_(0,1)x_(1,0)^2 0 -x_(0,0)x_(1,0)^3 0 0 x_(0,0)x_(1,0)^2x_(1,1) | {0, -2} | x_(0,0)^2x_(1,0)x_(1,1) x_(0,0)x_(1,0)^2x_(1,1) 0 0 -x_(0,0)x_(1,0)x_(1,1)^2 0 | {0, -2} | x_(0,0)^2x_(1,0)^2 x_(0,0)x_(1,0)^3 0 0 -x_(0,0)x_(1,0)^2x_(1,1) 0 | {-1, -1} | 0 -x_(0,1)^2x_(1,0)x_(1,1) -x_(0,0)x_(0,1)x_(1,0)x_(1,1) 0 x_(0,1)^2x_(1,1)^2 x_(0,0)x_(0,1)x_(1,1)^2 | {-1, -1} | 0 x_(0,1)^2x_(1,1)^2 x_(0,0)x_(0,1)x_(1,1)^2 x_(0,1)x_(1,1)^3 0 0 | {-1, -1} | 0 -x_(0,0)x_(0,1)x_(1,0)x_(1,1) -x_(0,0)^2x_(1,0)x_(1,1) 0 x_(0,0)x_(0,1)x_(1,1)^2 x_(0,0)^2x_(1,1)^2 | {-1, -1} | 0 x_(0,0)x_(0,1)x_(1,1)^2 x_(0,0)^2x_(1,1)^2 x_(0,0)x_(1,1)^3 0 0 | {-1, -1} | 0 -x_(0,1)^2x_(1,0)^2 -x_(0,0)x_(0,1)x_(1,0)^2 0 x_(0,1)^2x_(1,0)x_(1,1) x_(0,0)x_(0,1)x_(1,0)x_(1,1) | {-1, -1} | 0 0 0 x_(0,1)x_(1,0)^3 x_(0,1)^2x_(1,0)^2 x_(0,0)x_(0,1)x_(1,0)^2 | {-1, -1} | 0 x_(0,1)^2x_(1,0)x_(1,1) x_(0,0)x_(0,1)x_(1,0)x_(1,1) x_(0,1)x_(1,0)x_(1,1)^2 0 0 | {-1, -1} | 0 x_(0,1)^2x_(1,0)^2 x_(0,0)x_(0,1)x_(1,0)^2 x_(0,1)x_(1,0)^2x_(1,1) 0 0 | {-1, -1} | 0 -x_(0,0)x_(0,1)x_(1,0)^2 -x_(0,0)^2x_(1,0)^2 0 x_(0,0)x_(0,1)x_(1,0)x_(1,1) x_(0,0)^2x_(1,0)x_(1,1) | {-1, -1} | 0 0 0 x_(0,0)x_(1,0)^3 x_(0,0)x_(0,1)x_(1,0)^2 x_(0,0)^2x_(1,0)^2 | {-1, -1} | 0 x_(0,0)x_(0,1)x_(1,0)x_(1,1) x_(0,0)^2x_(1,0)x_(1,1) x_(0,0)x_(1,0)x_(1,1)^2 0 0 | {-1, -1} | 0 x_(0,0)x_(0,1)x_(1,0)^2 x_(0,0)^2x_(1,0)^2 x_(0,0)x_(1,0)^2x_(1,1) 0 0 | {-1, -1} | x_(0,1)^3x_(1,1) 0 -x_(0,1)^2x_(1,0)x_(1,1) 0 0 x_(0,1)^2x_(1,1)^2 | {-1, -1} | x_(0,1)^3x_(1,0) 0 -x_(0,1)^2x_(1,0)^2 0 0 x_(0,1)^2x_(1,0)x_(1,1) | {-1, -1} | x_(0,0)x_(0,1)^2x_(1,1) 0 -x_(0,0)x_(0,1)x_(1,0)x_(1,1) 0 0 x_(0,0)x_(0,1)x_(1,1)^2 | {-1, -1} | x_(0,0)x_(0,1)^2x_(1,0) 0 -x_(0,0)x_(0,1)x_(1,0)^2 0 0 x_(0,0)x_(0,1)x_(1,0)x_(1,1) | {-1, -1} | x_(0,0)^2x_(0,1)x_(1,1) 0 -x_(0,0)^2x_(1,0)x_(1,1) 0 0 x_(0,0)^2x_(1,1)^2 | {-1, -1} | x_(0,0)^2x_(0,1)x_(1,0) 0 -x_(0,0)^2x_(1,0)^2 0 0 x_(0,0)^2x_(1,0)x_(1,1) | {-1, -1} | x_(0,0)^3x_(1,1) x_(0,0)^2x_(1,0)x_(1,1) 0 0 -x_(0,0)^2x_(1,1)^2 0 | {-1, -1} | x_(0,0)^3x_(1,0) x_(0,0)^2x_(1,0)^2 0 0 -x_(0,0)^2x_(1,0)x_(1,1) 0 | {-2, 0} | x_(0,1)^4 0 -x_(0,1)^3x_(1,0) 0 0 x_(0,1)^3x_(1,1) | {-2, 0} | 0 0 0 x_(0,1)^2x_(1,0)x_(1,1) x_(0,1)^3x_(1,1) x_(0,0)x_(0,1)^2x_(1,1) | {-2, 0} | 0 0 0 x_(0,1)^2x_(1,0)^2 x_(0,1)^3x_(1,0) x_(0,0)x_(0,1)^2x_(1,0) | {-2, 0} | x_(0,0)x_(0,1)^3 0 -x_(0,0)x_(0,1)^2x_(1,0) 0 0 x_(0,0)x_(0,1)^2x_(1,1) | {-2, 0} | x_(0,0)^2x_(0,1)^2 0 -x_(0,0)^2x_(0,1)x_(1,0) 0 0 x_(0,0)^2x_(0,1)x_(1,1) | {-2, 0} | x_(0,0)^3x_(0,1) 0 -x_(0,0)^3x_(1,0) 0 0 x_(0,0)^3x_(1,1) | {-2, 0} | x_(0,0)^4 x_(0,0)^3x_(1,0) 0 0 -x_(0,0)^3x_(1,1) 0 | {-2, 0} | 0 0 0 x_(0,0)^2x_(1,0)x_(1,1) x_(0,0)^2x_(0,1)x_(1,1) x_(0,0)^3x_(1,1) | {-2, 0} | 0 0 0 x_(0,0)^2x_(1,0)^2 x_(0,0)^2x_(0,1)x_(1,0) x_(0,0)^3x_(1,0) | {-2, 0} | 0 x_(0,1)^3x_(1,1) x_(0,0)x_(0,1)^2x_(1,1) x_(0,1)^2x_(1,1)^2 0 0 | {-2, 0} | 0 x_(0,1)^3x_(1,0) x_(0,0)x_(0,1)^2x_(1,0) x_(0,1)^2x_(1,0)x_(1,1) 0 0 | {-2, 0} | 0 x_(0,0)^2x_(0,1)x_(1,1) x_(0,0)^3x_(1,1) x_(0,0)^2x_(1,1)^2 0 0 | {-2, 0} | 0 x_(0,0)^2x_(0,1)x_(1,0) x_(0,0)^3x_(1,0) x_(0,0)^2x_(1,0)x_(1,1) 0 0 | {-2, 0} | 0 x_(0,0)x_(0,1)^2x_(1,1) x_(0,0)^2x_(0,1)x_(1,1) x_(0,0)x_(0,1)x_(1,1)^2 0 0 | {-2, 0} | 0 x_(0,0)x_(0,1)^2x_(1,0) x_(0,0)^2x_(0,1)x_(1,0) x_(0,0)x_(0,1)x_(1,0)x_(1,1) 0 0 | {-2, 0} | 0 0 0 x_(0,0)x_(0,1)x_(1,0)x_(1,1) x_(0,0)x_(0,1)^2x_(1,1) x_(0,0)^2x_(0,1)x_(1,1) | {-2, 0} | 0 0 0 x_(0,0)x_(0,1)x_(1,0)^2 x_(0,0)x_(0,1)^2x_(1,0) x_(0,0)^2x_(0,1)x_(1,0) | {-3, 1} | 0 0 0 x_(0,1)^3x_(1,0) x_(0,1)^4 x_(0,0)x_(0,1)^3 | {-3, 1} | 0 0 0 x_(0,0)^3x_(1,0) x_(0,0)^3x_(0,1) x_(0,0)^4 | {-3, 1} | 0 x_(0,1)^4 x_(0,0)x_(0,1)^3 x_(0,1)^3x_(1,1) 0 0 | {-3, 1} | 0 x_(0,0)^3x_(0,1) x_(0,0)^4 x_(0,0)^3x_(1,1) 0 0 | {-3, 1} | 0 x_(0,0)x_(0,1)^3 x_(0,0)^2x_(0,1)^2 x_(0,0)x_(0,1)^2x_(1,1) 0 0 | {-3, 1} | 0 x_(0,0)^2x_(0,1)^2 x_(0,0)^3x_(0,1) x_(0,0)^2x_(0,1)x_(1,1) 0 0 | {-3, 1} | 0 0 0 x_(0,0)x_(0,1)^2x_(1,0) x_(0,0)x_(0,1)^3 x_(0,0)^2x_(0,1)^2 | {-3, 1} | 0 0 0 x_(0,0)^2x_(0,1)x_(1,0) x_(0,0)^2x_(0,1)^2 x_(0,0)^3x_(0,1) | 70 o45 : S-module, submodule of S |
i46 : betti M1,betti M 0 1 0 1 o46 = (total: 6 4, total: 6 4) 2: 6 4 2: 6 4 o46 : Sequence |
i47 : isIsomorphic(M,M1) o47 = true |
Next we check the functor bgg on S-modules.
i48 : RM=bgg M 216 140 84 45 20 6 o48 = E <-- E <-- E <-- E <-- E <-- E -7 -6 -5 -4 -3 -2 o48 : ChainComplex |
i49 : cohomologyMatrix(RM,low,high) o49 = | 0 0 0 2 12 22 32 | | 0 0 0 1 8 15 22 | | 0 0 0 0 4 8 12 | | 0 0 0 0 0 1 2 | | 0 0 0 0 0 0 0 | | 0 0 0 0 0 0 0 | | 0 0 0 0 0 0 0 | 7 7 o49 : Matrix (ZZ[h, k]) <--- (ZZ[h, k]) |
i50 : betti RM -7 -6 -5 -4 -3 -2 o50 = total: 216 140 84 45 20 6 0: 216 140 84 45 20 6 o50 : BettiTally |
i51 : uQ=firstQuadrantComplex(T,{0,0}); |
i52 : cohomologyMatrix(uQ,low,high) o52 = | 0 0 0 2 12 22 32 | | 0 0 0 1 8 15 22 | | 0 0 0 0 4 8 12 | | 0 0 0 h 0 1 2 | | 0 0 0 0 0 0 0 | | 0 0 0 0 0 0 0 | | 0 0 0 0 0 0 0 | 7 7 o52 : Matrix (ZZ[h, k]) <--- (ZZ[h, k]) |
The additional entry h in the zero position of the cohomology matrix of uQ indicates that we can recover the original square of the maximal ideal of E from the differential of of the first quadrant complex uQ in this specific case.
i53 : uQ.dd_(-1) o53 = {-2, 0} | e_(0,0)e_(0,1) | {-1, -1} | -e_(0,1)e_(1,1) | {-1, -1} | e_(0,0)e_(1,1) | {-1, -1} | -e_(0,1)e_(1,0) | {-1, -1} | -e_(0,0)e_(1,0) | {0, -2} | e_(1,0)e_(1,1) | 6 1 o53 : Matrix E <--- E |
Next we test reciprocity.
i54 : T1=tateResolution(M,low,3*high); |
i55 : c={2,2} o55 = {2, 2} o55 : List |
i56 : CM=cornerComplex(T1,c); |
i57 : RMc=firstQuadrantComplex(T1,c); |
i58 : cohomologyMatrix(CM,low,3*high) o58 = | 0 0 0 0 0 64 92 120 148 176 204 232 260 | | 0 0 0 0 0 57 82 107 132 157 182 207 232 | | 0 0 0 0 0 50 72 94 116 138 160 182 204 | | 0 0 0 0 0 43 62 81 100 119 138 157 176 | | 0 0 0 0 0 36 52 68 84 100 116 132 148 | | 0 0 0 0 0 29 42 55 68 81 94 107 120 | | 0 0 0 0 0 22 32 42 52 62 72 82 92 | | 0 0 0 0 0 15 22 29 36 43 50 57 64 | | 12h2 8h2 4h2 0 4h 0 0 0 0 0 0 0 0 | | 4h2 3h2 2h2 h2 0 0 0 0 0 0 0 0 0 | | 4h3 2h3 0 2h2 4h2 0 0 0 0 0 0 0 0 | | 12h3 7h3 2h3 3h2 8h2 0 0 0 0 0 0 0 0 | | 20h3 12h3 4h3 4h2 12h2 0 0 0 0 0 0 0 0 | 13 13 o58 : Matrix (ZZ[h, k]) <--- (ZZ[h, k]) |
i59 : coRMc=apply(toList(-10..-4),i-> HH^(-i) RMc==0) o59 = {true, true, true, true, true, true, false} o59 : List |
i60 : P1=ker CM.dd_(-sum c) o60 = image {-2, -2} | -e_(0,0)e_(1,1) 0 0 0 | {-2, -2} | -e_(0,0)e_(1,0) 0 e_(0,0)e_(1,1) 0 | {-2, -2} | 0 0 e_(0,0)e_(1,0) 0 | {-2, -2} | e_(0,1)e_(1,1) 0 0 0 | {-2, -2} | e_(0,0)e_(1,1) e_(0,1)e_(1,1) 0 0 | {-2, -2} | 0 e_(0,0)e_(1,1) 0 0 | {-2, -2} | -e_(0,1)e_(1,0) 0 e_(0,1)e_(1,1) 0 | {-2, -2} | e_(0,0)e_(1,0) e_(0,1)e_(1,0) 0 0 | {-2, -2} | 0 e_(0,0)e_(1,0) 0 0 | {-2, -2} | 0 0 e_(0,1)e_(1,1) 0 | {-2, -2} | 0 0 e_(0,0)e_(1,1) e_(0,1)e_(1,1) | {-2, -2} | 0 0 0 e_(0,0)e_(1,1) | {-2, -2} | 0 0 e_(0,1)e_(1,0) 0 | {-2, -2} | 0 0 e_(0,0)e_(1,0) e_(0,1)e_(1,0) | {-2, -2} | 0 0 0 e_(0,0)e_(1,0) | 15 o60 : E-module, submodule of E |
i61 : LP=bgg (P1**E^{-c+v}) 15 16 4 o61 = S <-- S <-- S 0 1 2 o61 : ChainComplex |
i62 : betti LP 0 1 2 o62 = total: 15 16 4 0: 15 16 4 o62 : BettiTally |
i63 : coLP=apply(toList(min LP..max LP),i->dim HH^(-i) LP) o63 = {4, -1, -1} o63 : List |
Hence both Lp and RMc are azyclic.
i64 : Mc=prune truncate(c,M)**S^{c} o64 = cokernel | x_(1,0) 0 0 0 -x_(0,1) 0 0 0 0 0 0 0 0 0 0 0 | | -x_(1,1) x_(1,0) 0 0 0 0 0 -x_(0,1) 0 0 x_(0,1) 0 0 0 0 0 | | 0 -x_(1,1) 0 0 0 0 0 0 0 0 0 0 0 x_(0,1) 0 0 | | 0 0 x_(1,0) 0 x_(0,0) 0 0 0 0 0 0 0 0 0 0 0 | | 0 0 -x_(1,1) 0 0 0 0 x_(0,0) 0 0 0 0 0 0 0 0 | | 0 0 0 x_(1,0) 0 0 0 0 0 0 x_(0,0) 0 0 0 0 0 | | 0 0 0 -x_(1,1) 0 0 0 0 0 0 0 0 0 x_(0,0) 0 0 | | 0 0 0 0 x_(0,1) x_(0,0) x_(1,0) 0 0 0 0 0 0 0 0 0 | | 0 0 0 0 0 -x_(0,1) 0 0 x_(1,0) 0 0 0 0 0 0 0 | | 0 0 0 0 0 0 -x_(1,1) x_(0,1) 0 x_(0,0) 0 0 0 0 0 0 | | 0 0 0 0 0 0 0 0 -x_(1,1) -x_(0,1) 0 0 0 0 0 0 | | 0 0 0 0 0 0 0 0 0 0 x_(0,1) x_(0,0) x_(1,0) 0 0 0 | | 0 0 0 0 0 0 0 0 0 0 0 -x_(0,1) 0 0 x_(1,0) 0 | | 0 0 0 0 0 0 0 0 0 0 0 0 -x_(1,1) x_(0,1) 0 x_(0,0) | | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -x_(1,1) -x_(0,1) | 15 o64 : S-module, quotient of S |
i65 : betti (Mc'=HH^0 LP), betti Mc 0 1 0 1 o65 = (total: 15 16, total: 15 16) 0: 15 16 0: 15 16 o65 : Sequence |
i66 : isIsomorphic(Mc',Mc) o66 = true |
i67 : c={3,1} o67 = {3, 1} o67 : List |
i68 : cohomologyMatrix(T1,low,2*high) o68 = | 52h 33h 14h 5 24 43 62 81 100 119 | | 44h 28h 12h 4 20 36 52 68 84 100 | | 36h 23h 10h 3 16 29 42 55 68 81 | | 28h 18h 8h 2 12 22 32 42 52 62 | | 20h 13h 6h 1 8 15 22 29 36 43 | | 12h 8h 4h 0 4 8 12 16 20 24 | | 4h 3h 2h h 0 1 2 3 4 5 | | 4h2 2h2 0 2h 4h 6h 8h 10h 12h 14h | | 12h2 7h2 2h2 3h 8h 13h 18h 23h 28h 33h | | 20h2 12h2 4h2 4h 12h 20h 28h 36h 44h 52h | 10 10 o68 : Matrix (ZZ[h, k]) <--- (ZZ[h, k]) |
i69 : CM=cornerComplex(T1,c); |
i70 : cohomologyMatrix(CM,low,3*high) o70 = | 0 0 0 0 0 0 92 120 148 176 204 232 260 | | 0 0 0 0 0 0 82 107 132 157 182 207 232 | | 0 0 0 0 0 0 72 94 116 138 160 182 204 | | 0 0 0 0 0 0 62 81 100 119 138 157 176 | | 0 0 0 0 0 0 52 68 84 100 116 132 148 | | 0 0 0 0 0 0 42 55 68 81 94 107 120 | | 0 0 0 0 0 0 32 42 52 62 72 82 92 | | 0 0 0 0 0 0 22 29 36 43 50 57 64 | | 0 0 0 0 0 0 12 16 20 24 28 32 36 | | 4h2 3h2 2h2 h2 0 h 0 0 0 0 0 0 0 | | 4h3 2h3 0 2h2 4h2 6h2 0 0 0 0 0 0 0 | | 12h3 7h3 2h3 3h2 8h2 13h2 0 0 0 0 0 0 0 | | 20h3 12h3 4h3 4h2 12h2 20h2 0 0 0 0 0 0 0 | 13 13 o70 : Matrix (ZZ[h, k]) <--- (ZZ[h, k]) |
i71 : RMc=firstQuadrantComplex(T1,c); |
i72 : coRMc=apply(toList(-9..-4),i-> HH^(-i) RMc==0) o72 = {true, true, true, true, true, false} o72 : List |
i73 : P1=ker CM.dd_(-sum c) o73 = image {-3, -1} | e_(0,1)e_(1,1) -e_(0,0)e_(1,0)e_(1,1) 0 0 0 0 0 | {-3, -1} | e_(0,0)e_(1,1) 0 0 0 0 0 0 | {-3, -1} | e_(0,1)e_(1,0) 0 0 0 e_(0,0)e_(1,0)e_(1,1) 0 0 | {-3, -1} | e_(0,0)e_(1,0) 0 0 0 0 0 0 | {-3, -1} | 0 -e_(0,1)e_(1,0)e_(1,1) 0 0 0 0 0 | {-3, -1} | 0 e_(0,0)e_(1,0)e_(1,1) e_(0,1)e_(1,0)e_(1,1) 0 0 0 0 | {-3, -1} | 0 0 e_(0,0)e_(1,0)e_(1,1) e_(0,1)e_(1,0)e_(1,1) 0 0 0 | {-3, -1} | 0 0 0 e_(0,0)e_(1,0)e_(1,1) 0 0 0 | {-3, -1} | 0 0 0 0 e_(0,1)e_(1,0)e_(1,1) 0 0 | {-3, -1} | 0 0 0 0 e_(0,0)e_(1,0)e_(1,1) e_(0,1)e_(1,0)e_(1,1) 0 | {-3, -1} | 0 0 0 0 0 e_(0,0)e_(1,0)e_(1,1) e_(0,1)e_(1,0)e_(1,1) | {-3, -1} | 0 0 0 0 0 0 e_(0,0)e_(1,0)e_(1,1) | 12 o73 : E-module, submodule of E |
i74 : LP=bgg (P1**E^{-c+v}) 12 10 1 o74 = S <-- S <-- S 0 1 2 o74 : ChainComplex |
i75 : betti LP 0 1 2 o75 = total: 12 10 1 0: 12 10 1 o75 : BettiTally |
i76 : coLP=apply(toList(min LP..max LP),i->dim HH^(-i) LP) o76 = {4, -1, -1} o76 : List |
i77 : Mc=prune truncate(c,M)**S^{c} o77 = cokernel | x_(0,0) x_(1,0) 0 0 -x_(0,1) 0 0 0 0 0 | | -x_(0,1) 0 x_(1,0) 0 0 0 0 0 0 0 | | 0 -x_(1,1) 0 x_(0,0) 0 0 0 x_(0,1) 0 0 | | 0 0 -x_(1,1) -x_(0,1) 0 0 0 0 0 0 | | 0 0 0 0 x_(0,0) 0 0 0 0 0 | | 0 0 0 0 0 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) 0 0 0 | | 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 0 -x_(0,1) x_(0,0) | | 0 0 0 0 0 0 0 0 0 -x_(0,1) | 12 o77 : S-module, quotient of S |
i78 : betti (Mc'=HH^0 LP), betti Mc 0 1 0 1 o78 = (total: 12 10, total: 12 10) 0: 12 10 0: 12 10 o78 : Sequence |
i79 : isIsomorphic(Mc',Mc) o79 = true |
Now we test tateExtension.
i80 : W=beilinsonWindow T 1 4 o80 = E <-- E -1 0 o80 : ChainComplex |
i81 : T'=tateExtension W 1250 1044 867 716 588 480 389 312 246 189 136 88 55 46 54 o81 = E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 o81 : ChainComplex |
i82 : comT'=cohomologyMatrix(T',low,high) o82 = | 28h 18h 8h 2 12 22 32 | | 20h 13h 6h 1 8 15 22 | | 12h 8h 4h 0 4 8 12 | | 4h 3h 2h h 0 1 2 | | 4h2 2h2 0 2h 4h 6h 8h | | 12h2 7h2 2h2 3h 8h 13h 18h | | 20h2 12h2 4h2 4h 12h 20h 28h | 7 7 o82 : Matrix (ZZ[h, k]) <--- (ZZ[h, k]) |
i83 : comT=cohomologyMatrix(T,low,high) o83 = | 28h 18h 8h 2 12 22 32 | | 20h 13h 6h 1 8 15 22 | | 12h 8h 4h 0 4 8 12 | | 4h 3h 2h h 0 1 2 | | 4h2 2h2 0 2h 4h 6h 8h | | 12h2 7h2 2h2 3h 8h 13h 18h | | 20h2 12h2 4h2 4h 12h 20h 28h | 7 7 o83 : Matrix (ZZ[h, k]) <--- (ZZ[h, k]) |
i84 : assert(sub(comT',vars ring comT)==comT) |
Finally we illustrate how shifting the Beilinson window works.
i85 : cohomologyMatrix(T,low,high) o85 = | 28h 18h 8h 2 12 22 32 | | 20h 13h 6h 1 8 15 22 | | 12h 8h 4h 0 4 8 12 | | 4h 3h 2h h 0 1 2 | | 4h2 2h2 0 2h 4h 6h 8h | | 12h2 7h2 2h2 3h 8h 13h 18h | | 20h2 12h2 4h2 4h 12h 20h 28h | 7 7 o85 : Matrix (ZZ[h, k]) <--- (ZZ[h, k]) |
i86 : cohomologyMatrix(beilinsonWindow T,low, high) o86 = | 0 0 0 0 0 0 0 | | 0 0 0 0 0 0 0 | | 0 0 0 0 0 0 0 | | 0 0 2h h 0 0 0 | | 0 0 0 2h 0 0 0 | | 0 0 0 0 0 0 0 | | 0 0 0 0 0 0 0 | 7 7 o86 : Matrix (ZZ[h, k]) <--- (ZZ[h, k]) |
i87 : B = beilinson T 1 4 o87 = S <-- S -1 0 o87 : ChainComplex |
i88 : d={2,2} o88 = {2, 2} o88 : List |
i89 : T1=T**E^{d}[sum d] 136 55 32 44 39 36 54 91 136 184 239 304 382 476 589 o89 = E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 o89 : ChainComplex |
i90 : cohomologyMatrix(beilinsonWindow T1,low,high) o90 = | 0 0 0 0 0 0 0 | | 0 0 0 0 0 0 0 | | 0 0 0 0 0 0 0 | | 0 0 12h2 7h2 0 0 0 | | 0 0 20h2 12h2 0 0 0 | | 0 0 0 0 0 0 0 | | 0 0 0 0 0 0 0 | 7 7 o90 : Matrix (ZZ[h, k]) <--- (ZZ[h, k]) |
i91 : B1 =beilinson T1 7 24 20 o91 = S <-- S <-- S -2 -1 0 o91 : ChainComplex |
i92 : decompose annihilator HH^1 B1 o92 = {ideal (x , x ), ideal (x , x )} 0,1 0,0 1,1 1,0 o92 : List |
i93 : decompose annihilator HH^2 B1 o93 = {ideal (x , x , x , x )} 1,1 1,0 0,1 0,0 o93 : List |
i94 : M1=HH^0 B1 o94 = image {1, 1} | x_(0,1)x_(1,0)x_(1,1)^2 x_(0,0)x_(0,1)x_(1,1)^2 0 x_(0,1)^2x_(1,1)^2 0 0 | {1, 1} | x_(0,1)x_(1,1)^3 0 x_(0,0)x_(0,1)x_(1,1)^2 0 x_(0,1)^2x_(1,1)^2 0 | {1, 1} | 0 x_(0,0)^2x_(1,1)^2 -x_(0,0)^2x_(1,0)x_(1,1) 0 0 x_(0,0)^2x_(0,1)x_(1,1) | {1, 1} | x_(0,0)x_(1,1)^3 0 x_(0,0)^2x_(1,1)^2 0 x_(0,0)x_(0,1)x_(1,1)^2 0 | {1, 1} | x_(0,1)x_(1,0)^2x_(1,1) x_(0,0)x_(0,1)x_(1,0)x_(1,1) 0 x_(0,1)^2x_(1,0)x_(1,1) 0 0 | {1, 1} | x_(0,1)x_(1,0)x_(1,1)^2 0 x_(0,0)x_(0,1)x_(1,0)x_(1,1) 0 x_(0,1)^2x_(1,0)x_(1,1) 0 | {1, 1} | 0 x_(0,0)^2x_(1,0)x_(1,1) -x_(0,0)^2x_(1,0)^2 0 0 x_(0,0)^2x_(0,1)x_(1,0) | {1, 1} | x_(0,0)x_(1,0)x_(1,1)^2 0 x_(0,0)^2x_(1,0)x_(1,1) 0 x_(0,0)x_(0,1)x_(1,0)x_(1,1) 0 | {1, 1} | 0 x_(0,1)^2x_(1,1)^2 -x_(0,1)^2x_(1,0)x_(1,1) 0 0 x_(0,1)^3x_(1,1) | {1, 1} | 0 x_(0,0)x_(0,1)x_(1,1)^2 -x_(0,0)x_(0,1)x_(1,0)x_(1,1) 0 0 x_(0,0)x_(0,1)^2x_(1,1) | {1, 1} | 0 0 0 x_(0,0)x_(0,1)x_(1,1)^2 -x_(0,0)x_(0,1)x_(1,0)x_(1,1) -x_(0,0)^2x_(0,1)x_(1,1) | {1, 1} | 0 0 0 -x_(0,0)^2x_(1,1)^2 x_(0,0)^2x_(1,0)x_(1,1) x_(0,0)^3x_(1,1) | {1, 1} | x_(0,1)x_(1,0)^3 x_(0,0)x_(0,1)x_(1,0)^2 0 x_(0,1)^2x_(1,0)^2 0 0 | {1, 1} | x_(0,1)x_(1,0)^2x_(1,1) 0 x_(0,0)x_(0,1)x_(1,0)^2 0 x_(0,1)^2x_(1,0)^2 0 | {1, 1} | x_(0,0)x_(1,0)^3 x_(0,0)^2x_(1,0)^2 0 x_(0,0)x_(0,1)x_(1,0)^2 0 0 | {1, 1} | x_(0,0)x_(1,0)^2x_(1,1) 0 x_(0,0)^2x_(1,0)^2 0 x_(0,0)x_(0,1)x_(1,0)^2 0 | {1, 1} | 0 x_(0,1)^2x_(1,0)x_(1,1) -x_(0,1)^2x_(1,0)^2 0 0 x_(0,1)^3x_(1,0) | {1, 1} | 0 x_(0,0)x_(0,1)x_(1,0)x_(1,1) -x_(0,0)x_(0,1)x_(1,0)^2 0 0 x_(0,0)x_(0,1)^2x_(1,0) | {1, 1} | 0 0 0 x_(0,0)x_(0,1)x_(1,0)x_(1,1) -x_(0,0)x_(0,1)x_(1,0)^2 -x_(0,0)^2x_(0,1)x_(1,0) | {1, 1} | 0 0 0 -x_(0,0)^2x_(1,0)x_(1,1) x_(0,0)^2x_(1,0)^2 x_(0,0)^3x_(1,0) | 20 o94 : S-module, submodule of S |
i95 : dim M1 o95 = 4 |
i96 : betti M1, betti M 0 1 0 1 o96 = (total: 6 4, total: 6 4) 6: 6 4 2: 6 4 o96 : Sequence |
i97 : isIsomorphic(M1,M**S^{-d}) o97 = true |
Another shift:
i98 : d={-1,-2} o98 = {-1, -2} o98 : List |
i99 : T2=T**E^{d}[sum d] 136 55 32 44 39 36 54 91 136 184 239 304 382 476 589 o99 = E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E <-- E -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 o99 : ChainComplex |
i100 : cohomologyMatrix(beilinsonWindow T2,low,high) o100 = | 0 0 0 0 0 0 0 | | 0 0 0 0 0 0 0 | | 0 0 0 0 0 0 0 | | 0 0 1 8 0 0 0 | | 0 0 0 4 0 0 0 | | 0 0 0 0 0 0 0 | | 0 0 0 0 0 0 0 | 7 7 o100 : Matrix (ZZ[h, k]) <--- (ZZ[h, k]) |
i101 : cohomologyMatrix(T,low,high) o101 = | 28h 18h 8h 2 12 22 32 | | 20h 13h 6h 1 8 15 22 | | 12h 8h 4h 0 4 8 12 | | 4h 3h 2h h 0 1 2 | | 4h2 2h2 0 2h 4h 6h 8h | | 12h2 7h2 2h2 3h 8h 13h 18h | | 20h2 12h2 4h2 4h 12h 20h 28h | 7 7 o101 : Matrix (ZZ[h, k]) <--- (ZZ[h, k]) |
i102 : B2 =beilinson T2 8 5 o102 = S <-- S 0 1 o102 : ChainComplex |
i103 : HH^(-1) B2 == 0 o103 = true |
i104 : M2=HH^0 B2 o104 = cokernel | -x_(1,0) 0 0 0 0 | | 0 x_(1,0) 0 0 0 | | -x_(1,1) 0 x_(1,0) 0 0 | | 0 -x_(1,1) 0 0 x_(0,1) | | 0 0 x_(1,0) 0 -x_(0,0) | | 0 0 0 x_(1,0) x_(0,1) | | 0 0 -x_(1,1) 0 0 | | 0 0 0 -x_(1,1) 0 | 8 o104 : S-module, quotient of S |
i105 : dim M2 o105 = 4 |
i106 : betti M2, betti M, betti truncate(-d,M) 0 1 0 1 0 1 o106 = (total: 8 5, total: 6 4, total: 8 5) 0: 8 5 2: 6 4 3: 8 5 o106 : Sequence |
i107 : isIsomorphic(M2,truncate(-d,M)**S^{-d}) o107 = true |