E = newExt(M,N)
Let Rbar = R/(f1..fc), a complete intersection of codimension c, and let M,N be Rbar-modules. We assume that the pushForward of M to R has finite free resolution. The script then computes the total Ext(M,N) as a module over S = kk(s_1..s_c,gens R), using EisenbudShamashTotal.
If Check => true, then the result is compared with the built-in global Ext written by Avramov and Grayson (but note the difference, explained below).
If Lift => false the result is returned over and extension of Rbar; if Lift => true the result is returned over and extension of R.
If Grading => 2, the default, then the result is bigraded (this is necessary when Check=>true
The default Variables => symbol "s" gives the new variables the name s_i, i=0..c-1. (note that the builtin Ext uses X_1..X_c.
On Some examples newExt is faster than Ext; on others it's slower.
A simple example: if R = k[x_1..x_n] and I is contained in the cube of the maximal ideal, then Ext(k,k) is a free S/(x_1..x_n) = k[s_0..s_(c-1)]- module with binomial(n,i) generators in degree i
|
|
|
|
|
|
|
An example where the built-in global Ext is hard to compare directly with our method of computation: I *guess* that the sign choices in the built-in amount essentially to a change of variable in the new variables, and spoil an easy comparison. But for example the bi-graded Betti numbers are equal. this seems to start with c=3.
|
|
|
|
|
|
|
|
|
|
|
|
|
compare with the built-in Ext
|
|
The two versions of Ext appear to be the same up to change of variables:
|
|
|
but they have apparently different annihilators
|
|
and in fact they are not isomorphic:
|
|
|
|
|
If EE and ES were isomorphic, we would expect coker f to be 0, and it's not. prune coker f
The object newExt is a method function with options.
The source of this document is in CompleteIntersectionResolutions.m2:2564:0.