Complexes of Modules

Complexes of modules are a fundamental object in homological algebra. Magma supports the type ModCpx representing a complex of modules. Conceptually, a complex is an infinite sequence of modules, indexed by integers, with maps between successive modules such that the composition of any two maps is zero. Complexes are often written ... mapright(fn + 1) Mn mapright(fn) Mn - 1 mapright(fn - 1) Mn - 2 mapright(fn - 2) ... where the map fn has domain Mn and codomain Mn - 1. The indices on the modules and maps decrease to the right. In practice, Magma requires all but a finite number of the modules and maps to be zero.

The homomorphism from Mn to Mn - 1 in the complex is the nth boundary map of the complex. The homology of the complex in degree n is the quotient of the kernel of the nth boundary map by the cokernel of the boundary map of degree n - 1. Magma computes the homology only if both boundary maps are defined. A complex is said to be exact if the image of each map is equal to the kernel of the next.

Currently, there are two types of modules over which complexes are supported:

(a)
Modules over a basic algebra A (see Chapter BASIC ALGEBRAS);
(b)
Modules over a multivariate polynomial ring over a field (see Chapter MODULES OVER MULTIVARIATE RINGS and in particular the function FreeResolution).

Most of the functions in this chapter work for either type of module but exceptions are noted.

Contents

Creation

Complex(L, d) : List, RngIntElt -> ModCpx
Given a list L of maps between successive A-modules create the corresponding complex. The last term of the complex has degree d. This function returns an error if the maps don't actually form a complex.
Complex(f, d) : Map, RngIntElt -> ModCpx
Given a map f between A-modules M and N, form the complex consisting of the two term complex whose only map is f. The term N is in degree d.
ZeroComplex(A, m, n) : AlgBas, RngIntElt, RngIntElt -> ModCpx
Given a basic algebra A and integers m and n such that m > n, create a complex of modules over the basic algebra A, starting with a term of degree m and ending with a term of degree n, where all the modules and maps are zero.
Dual(C) : ModCpx -> ModCpx
Dual(C, n) : ModCpx, RngIntElt -> ModCpx
The dual of the complex C over a basic algebra A as a complex over the opposite algebra of A. If an integer n is supplied then the last term of the dual complex is in degree n. Otherwise, the last term of the dual complex is in degree 0.

Subcomplexes and Quotient Complexes

Let C be a complex of A-modules, Mm, ..., Mn. A subcomplex S of C is a complex whose terms are submodules of the terms of C and whose maps are the restrictions of the maps of C to the terms of S.

sub< C | Q > : ModCpx, SeqEnum[ModAlg] -> ModCpx, MapChn
sub< C | L > : ModCpx, List -> ModCpx, MapChn
Given a complex C and a sequence Q of submodules of the terms of C, returns the smallest subcomplex whose terms contain the modules in Q. The input can also be a list L of sequences of elements of the successive terms of C. In this case the submodules generated by the elements is computed. The function also returns the chain map giving the inclusion of the subcomplex in C.

RandomSubcomplex(C, Q) : ModCpx, SeqEnum -> ModCpx, MapChn
Given a chain complex C over a basic algebra in degrees a to a - t + 1 and a sequence Q = [q1, ..., qt] of natural numbers, the function creates the minimal chain complex whose term in degree a - i + 1 is a submodule generated by qi random elements of the term in degree a - i + 1 of C. The function also returns the chain map that is the inclusion of the subcomplex into C.
quo< C | D > : ModCpx, ModCpx -> ModCpx
quo< C | S > : ModCpx, SeqEnum[ModAlg] -> ModCpx
quo< C | L > : ModCpx, List -> ModCpx
Given a complex C and a subcomplex D of C, returns the quotient complex C/D together with the natural quotient map. If given as a sequence S of submodules of the terms of C or a list L of sequences of elements of the terms of C, then the submodule generated by S or L is created and the quotient computed. The function also returns the chain map of C on the quotient.

Access Functions

Degrees(C) : ModCpx -> RngIntElt
Returns the first and last degrees of the defined terms of the complex C.
Algebra(C) : ModCpx -> AlgBas
Given a complex C over a basic algebra A, this function returns the algebra A.
BoundaryMap(C, n) : ModCpx, RngIntElt -> ModMatRngElt
Returns the boundary map of the complex C from the term of degree n to the term of degree n - 1.

BoundaryMaps(C) : ModCpx -> List
The list of boundary maps of the complex C.

DimensionsOfHomology(C) : ModCpx -> SeqEnum
Returns the list of the dimensions of the homology groups of the complex C.
DimensionOfHomology(C, n) : ModCpx, RngIntElt -> RngIntElt
Returns the dimension of the homology group of the complex C in degree n.
DimensionsOfTerms(C) : ModCpx -> SeqEnum
Returns the list of the dimensions of the terms of the complex C.
Term(C, n) : ModCpx, RngIntElt -> ModAlg
The module in the complex C in degree n.
Terms(C) : ModCpx -> SeqEnum
The sequence of terms of the complex C.

Elementary Operations

DirectSum(C, D) : ModCpx, ModCpx -> ModCpx
Returns the direct sum of the complex C and the complex D.
Homology(C) : ModCpx -> SeqEnum
HomologyOfChainComplex(C) : ModCpx -> SeqEnum
The sequence of homology groups of the complex C as a sequence of modules.
Homology(C, n) : ModCpx, RngIntElt -> SeqEnum
Returns the homology group in degree n of the complex C, as an A-module.
Prune(C) : ModCpx -> ModCpx
Returns the complex that consists of the terms of C with the right end term (term of lowest degree) removed.
Prune(C,n) : ModCpx, RngIntElt -> ModCpx
Returns the complex that consists of the terms of C with n terms removed from the right end.
Preprune(C) : ModCpx -> ModCpx
Returns the complex that consists of the terms of C with the left end term (term of highest degree) removed.
Preprune(C,n) : ModCpx, RngIntElt -> ModCpx
Returns the complex that consists of the terms of C with n terms removed from the left end.
Shift(C, n) : ModCpx, RngIntElt -> ModCpx
Given the complex C in degrees r to s, returns the complex in shifted degrees r + n to s + n. The integer n may be either positive or negative. The maps in the complex are all multiplied by the scalar ( - 1)n.
ShiftToDegreeZero(C) : ModCpx -> ModCpx
Given the complex C, returns the shift of C so that the last term, the term of lowest degree, is in degree 0.
Splice(C, D) : ModCpx, ModCpx -> ModCpx
Given two complexes C and D over the same basic algebra, such that the end term of C coincides with the initial term of D, form the complex that corresponds to the concatenation of C and D (as sequences of maps) This function checks that the resulting sequence of maps forms a complex. The degrees of complex D remain unchanged while the degrees of the terms in complex C are changed to fit.
Splice(C, D, f) : ModCpx, ModCpx, ModMatRngElt -> ModCpx
The splice of the complex C with the complex D along the map f from the last term of C to the first term of D. The degree of the last term of the splice is the same as the degree of the last term of the complex D.

Extensions

The following are elementary operations related to extending complexes

LeftExactExtension(C) : ModCpx -> ModCpx
Given a complex C of modules over a basic algebra, returns the complex of length one greater that is obtained by adjoining the inclusion map from the kernel of the boundary map in highest degree to the term of highest degree in C.
RightExactExtension(C) : ModCpx -> ModCpx
Given a complex C of modules over a basic algebra, returns the complex of length one greater that is obtained by adjoining the quotient map to the cokernel of the boundary map of lowest degree from the term of lowest degree in C.
ExactExtension(C) : ModCpx -> ModCpx
Returns the left and right exact extensions of the complex C.
LeftZeroExtension(C) : ModCpx -> ModCpx
LeftZeroExtension(C, n) : ModCpx, RngIntElt -> ModCpx
Given a complex C of modules over a basic algebra, returns the complex of length one greater that is obtained by adjoining the zero map from the zero module to the term of highest degree in the complex. If a natural number n is included in the input then the operation is performed n times.
RightZeroExtension(C) : ModCpx -> ModCpx
RightZeroExtension(C, n) : ModCpx, RngIntElt -> ModCpx
Given a complex C of modules over a basic algebra, returns the complex of length one greater that is obtained by adjoining the zero map to the zero module from the term of lowest degree in the complex. If a natural number n is included in the input then the operation is performed n times.
ZeroExtension(C) : ModCpx -> ModCpx
Returns the left and right zero extensions of the complex C.
EqualizeDegrees(C, D) : ModCpx, ModCpx -> ModCpx, ModCpx
EqualizeDegrees(Q) : SeqEnum -> SeqEnum
Given complexes C and D over the same algebra, the function returns the complexes obtained by taking zero extensions of C and D, if necessary, so that both complexes have the same degrees. The input can also be given as a sequence Q of complexes, in which case the function returns the sequence of complexes obtained by taking zero extensions of the elements of Q, if necessary, until all of the elements of the sequence have the same degrees.
EqualizeDegrees(C, D, n) : ModCpx, ModCpx, RngIntElt -> ModCpx, ModCpx
The two complexes, C and D, with zero extension sufficient that the first and the shift by degree n of the second have the same degrees.

Predicates

The following functions return a Boolean value.

IsExact(C) : ModComplex -> BoolElt
Returns true if and only if the complex C is an exact sequence, i.e. the image of each map in C is equal to the kernel of the succeeding map (with the obvious exceptions of the first and last maps of the complex). If the complex has only two terms then this is true trivially.
IsShortExactSequence(C) : ModCpx -> BoolElt, RngIntElt
Returns true if the complex C consists of a short exact sequence together with other terms that are zero. The function returns also the degrees of the complex of nonzero terms.
IsExact(C, n) : ModCpx, RngIntElt -> BoolElt
Returns true if and only if the complex C is an exact sequence in degree n, i.e. the image of the map in C into the term of degree n is equal to the kernel of the succeeding map.
IsZeroComplex(C) : ModCpx -> BoolElt
Returns true if and only if the complex C is composed entirely of zero modules and maps.
IsZeroMap(C, n) : ModCpx, RngIntElt -> BoolElt
Returns true if and only if the boundary map in degree n of the complex C is the zero map.
IsZeroTerm(C, n) : ModCpx, RngIntElt -> BoolElt
Returns true if and only if the term in degree n of the complex C is the zero object.

Example ModCpx_Complexes (H61E1)

We construct the quiver algebra of a quiver with three nodes and three arrows going from node 1 to node 2, from 2 to 1 and 2 to 3. The relation is that (ab)3a =0 where a is the first arrow and b is the second. Then we construct projective and injective resolutions of the first simple module.
> ff := GF(8);
> FA<e1,e2,e3,a,b,c> := FreeAlgebra(ff,6);
> rrr := [a*b*a*b*a*b*a];
> D := BasicAlgebra(FA,rrr,3,[<1,2>,<2,1>,<2,3>]);
> D;
Basic algebra of dimension 23 over GF(2^3)
Number of projective modules: 3
Number of generators: 6
> DimensionsOfProjectiveModules(D);
[ 10, 12, 1 ]
> DimensionsOfInjectiveModules(D);
[ 8, 7, 8 ]
Here is the opposite algebra:
> OD := OppositeAlgebra(D);
reverse trees
> OD;
Basic algebra of dimension 23 over GF(2^3)
Number of projective modules: 3
Number of generators: 6
> s1 := SimpleModule(D,1);
> P,mu := ProjectiveResolution(s1,7);
> P;
Basic algebra complex with terms of degree 7 down to 0
Dimensions of terms: 12 12 12 12 12 12 12 10
> Q,nu := InjectiveResolution(s1,7);
> Q;
Basic algebra complex with terms of degree 0 down to -7
Dimensions of terms: 8 7 0 0 0 0 0 0
Note that the projective and injective resolutions are complexes with the appropriate augmentation and coaugmentation maps. First we form the two term complex whose boundary map is the composition of the augmentation and coaugmentation maps.
> theta := MapToMatrix(hom<Term(P,0)-> Term(Q,0)|mu*nu>);
> E := Complex(theta,0);
Then we splice all of this together.
> R := Splice(P,E);
> S := Splice(R,Q);
> S;
Basic algebra complex with terms of degree 8 down to -7
Dimensions of terms: 12 12 12 12 12 12 12 10 8 7 0 0 0 0 0 0
V2.28, 13 July 2023