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:
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.
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.
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.
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.
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.
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.
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.
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.
Returns the first and last degrees of the defined terms of the complex C.
Given a complex C over a basic algebra A, this function returns the algebra A.
Returns the boundary map of the complex C from the term of degree n to the term of degree n - 1.
The list of boundary maps of the complex C.
Returns the list of the dimensions of the homology groups of the complex C.
Returns the dimension of the homology group of the complex C in degree n.
Returns the list of the dimensions of the terms of the complex C.
The module in the complex C in degree n.
The sequence of terms of the complex C.
Returns the direct sum of the complex C and the complex D.
The sequence of homology groups of the complex C as a sequence of modules.
Returns the homology group in degree n of the complex C, as an A-module.
Returns the complex that consists of the terms of C with the right end term (term of lowest degree) removed.
Returns the complex that consists of the terms of C with n terms removed from the right end.
Returns the complex that consists of the terms of C with the left end term (term of highest degree) removed.
Returns the complex that consists of the terms of C with n terms removed from the left end.
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.
Given the complex C, returns the shift of C so that the last term, the term of lowest degree, is in degree 0.
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.
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.
The following are elementary operations related to extending complexes
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.
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.
Returns the left and right exact extensions of the complex C.
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.
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.
Returns the left and right zero extensions of the complex C.
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.
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.
The following functions return a Boolean value.
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.
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.
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.
Returns true if and only if the complex C is composed entirely of zero modules and maps.
Returns true if and only if the boundary map in degree n of the complex C is the zero map.
Returns true if and only if the term in degree n of the complex C is the zero object.
> 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 0Note 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