|
D.15.21.9 eulerPolynomialTable
Procedure from library tateProdCplxNegGrad.lib (see tateProdCplxNegGrad_lib).
- Usage:
- eulerPolynomialTable(M,low,high); M module, L list, low intvec, high intvec
- Purpose:
- computes hash table of euler polynomials of twists of coker(M) in the range between low and high
- Assume:
- M module, note that at the moment M is a module over S,
- Return:
- (Z,eulerpolynomialtable), where eulerpolynomialtable is a hash table with entries in the ring Z = ZZ[h]
- Note:
- this function works for arbitrary products P^{n_1} x \cdots x P^{n_t} and corresponding Z^t-gradings, entries can be accessed via
eulerpolynomialtable*(a_1,...,a_t) where a=(a_1,...,a_t) is a multidegree betweeen low and high
Example:
| LIB "tateProdCplxNegGrad.lib";
// example 1
intvec c1 = 1,1;
def (S1,E1) = productOfProjectiveSpaces(c1);
intvec low1 = -3,-3;
intvec high1 = 3,3;
setring(S1);
module M1 = 0;
intmat grading1[2][1] = -1,-1;
M1 = setModuleGrading(M1,grading1);
def (Z1,eulerTable1) = eulerPolynomialTable(M1,low1,high1);
setring(Z1);
print(eulerTable1);
==> -3,-3 => h2
==> -2,-3 => 0
==> -1,-3 => h
==> 0,-3 => 2h
==> 1,-3 => 3h
==> 2,-3 => 4h
==> 3,-3 => 5h
==> -3,-2 => 0
==> -3,-1 => h
==> -3,0 => 2h
==> -3,1 => 3h
==> -3,2 => 4h
==> -3,3 => 5h
==> -2,-2 => 0
==> -2,-1 => 0
==> -2,0 => 0
==> -2,1 => 0
==> -2,2 => 0
==> -2,3 => 0
==> -1,-2 => 0
==> -1,-1 => 1
==> -1,0 => 2
==> -1,1 => 3
==> -1,2 => 4
==> -1,3 => 5
==> 0,-2 => 0
==> 0,-1 => 2
==> 0,0 => 4
==> 0,1 => 6
==> 0,2 => 8
==> 0,3 => 10
==> 1,-2 => 0
==> 1,-1 => 3
==> 1,0 => 6
==> 1,1 => 9
==> 1,2 => 12
==> 1,3 => 15
==> 2,-2 => 0
==> 2,-1 => 4
==> 2,0 => 8
==> 2,1 => 12
==> 2,2 => 16
==> 2,3 => 20
==> 3,-2 => 0
==> 3,-1 => 5
==> 3,0 => 10
==> 3,1 => 15
==> 3,2 => 20
==> 3,3 => 25
eulerTable1*low1;
==> h2
setring(S1);
ring Z = cohomologyMatrix(M1,low1,high1);
setring(Z);
print(cohomologymat);
==> 5h,0,5,10,15,20,25,
==> 4h,0,4,8, 12,16,20,
==> 3h,0,3,6, 9, 12,15,
==> 2h,0,2,4, 6, 8, 10,
==> h, 0,1,2, 3, 4, 5,
==> 0, 0,0,0, 0, 0, 0,
==> h2,0,h,2h,3h,4h,5h
// example 2
intvec c2 = 1,1,1;
def (S2,E2) = productOfProjectiveSpaces(c2);
setring(S2);
intvec low2 = 0,0,0;
intvec high2 = 1,1,1;
module M2 = 0;
intmat grading2[3][1] = -1,-1,-1;
M2 = setModuleGrading(M2,grading2);
def (Z2,eulerTable2) = eulerPolynomialTable(M2,low2,high2);
setring(Z2);
print(eulerTable2);
==> 0,0,0 => 8
==> 1,0,0 => 12
==> 0,1,0 => 12
==> 1,1,0 => 18
==> 0,0,1 => 12
==> 1,0,1 => 18
==> 0,1,1 => 18
==> 1,1,1 => 27
|
|