# Singular

##### 7.5.17.0. allDoubleExt
Procedure from library `purityfiltration.lib` (see purityfiltration_lib).

Usage:
allDoubleExt(R), R matrix representing the left Module M=D^p/D^q(R^t) over a ring D

Return:
list T, double indexed, which include all double-ext modules

Purpose:
computes all double ext-modules
T[i][j] gives a representation matrix of ext^(j-1)(ext(i-1)(M,D))

Example:
 ```LIB "purityfiltration.lib"; ring D = 0,(x1,x2,x3,d1,d2,d3),dp; def S=Weyl(); setring S; matrix R[6][4]= 0,-2*d1,d3-2*d2-d1,-1, 0,d3-2*d1,2*d2-3*d1,1, d3,-6*d1,-2*d2-5*d1,-1, 0,d2-d1,d2-d1,0, d2,-d1,-d2-d1,0, d1,-d1,-2*d1,0; list T=allDoubleExt(transpose(R)); // left projective dimension of M=coker(R) is 3 // ext^i(ext^0(M,D)), i=0,1,2,3 print(T[1][1]); ==> 0, ==> d1, ==> d3, ==> -d2 print(T[1][2]); ==> d3,d3,d2,d1 print(T[1][3]); ==> 1 print(T[1][4]); ==> 1 // ext^i(ext^1(M,D)), i=0,1,2,3 print(T[2][1]); ==> 1 print(T[2][2]); ==> 1,0,0, ==> 0,1,0, ==> 0,0,1 print(T[2][3]); ==> 0,0,0,4*d2-d3,4*d1-d3, ==> 1,0,0,0, 0, ==> 0,1,0,0, 0, ==> 0,0,1,0, 0 print(T[2][4]); ==> d3,d2,d1 // ext^i(ext^2(M,D)), i=0,1,2,3 (all zero) print(T[3][1]); ==> 1 print(T[3][2]); ==> 1 print(T[3][3]); ==> 1 print(T[3][4]); ==> 1 // ext^i(ext^3(M,D)), i=0,1,2,3 (all zero) print(T[4][1]); ==> 1 print(T[4][2]); ==> 1 print(T[4][3]); ==> 1 print(T[4][4]); ==> 1 ```