Homological algebra

This chapter describes the homological algebra that is implemented in QPA.

The example used throughout this chapter is the following. gap> Q := Quiver(3,[[1,2,"a"],[1,2,"b"],[2,2,"c"],[2,3,"d"], > [3,1,"e"]]);; gap> KQ := PathAlgebra(Rationals, Q);; gap> AssignGeneratorVariables(KQ);; gap> rels := [d*e,c^2,a*c*d-b*d,e*a];; gap> A := KQ/rels;; gap> mat := [["a",[[1,2],[0,3],[1,5]]],["b",[[2,0],[3,0],[5,0]]], > ["c",[[0,0],[1,0]]],["d",[[1,2],[0,1]]],["e",[[0,0,0],[0,0,0]]]];; gap> N := RightModuleOverPathAlgebra(A,mat);;

Homological algebra
Arguments: M -- a path algebra module (PathAlgebraMatModule).
the first syzygy of the representation M as a representation.
Arguments: M, X - two PathAlgebraMatModule's.
all the complements of the almost complete (co-)tilting module M as two exact sequences, the first is all complements which are gotten as an add M-resolution of X and the second is all complements which are gotten as an add M-coresolution of X. If there are no complements to the left of X, then an empty list is returned. Similarly for to the right of X. In particular, if X has no other complements the list `[[],[]]` is returned.
Arguments: M, n - a PathAlgebraMatModule and a positive integer.
false if M is not a cotilting module of injective dimension at most a. Otherwise, it returns the injective dimension of M and the resolution of all indecomposable injective modules in add M.
Arguments: A, n - a quiver algebra, a positive integer.
the dominant dimension of the algebra A if the dominant dimension is less or equal to n. If the function can decide that the dominant dimension is infinite, it returns infinity. Otherwise, if the dominant dimension is larger than n, then it returns false.
Arguments: M, n - a PathAlgebraMatModule, a positive integer.
the dominant dimension of the module M if the dominant dimension is less or equal to n. If the function can decide that the dominant dimension is infinite, it returns infinity. Otherwise, if the dominant dimension is larger than n, then it returns false.
Arguments: M - a module, n - a positive integer.
a list of three elements, where the first element is the dimensions of Ext^[0..n](M,M), the second element is the number of minimal generators in the degrees [0..n], and the third element is the generators in these degrees.
This function computes the generators of the Ext-algebra Ext^*(M,M) up to degree n.
Arguments: M, N - two modules.
a list of three elements , where the first element is the map from the first syzygy, \Omega(M) to the projective cover, P(M) of the module M, the second element is a basis of \Ext^1(M,N) in terms of elements in \Hom(\Omega(M),N) and the third element is a function that takes as an argument a homomorphism in Hom(Omega(M),N) and returns the coefficients of this element when written in terms of the basis of \Ext^1(M,N).
The function checks if the arguments M and N are modules of the same algebra, and returns an error message otherwise. It \Ext^1(M,N) is zero, an empty list is returned.
Arguments: M - a PathAlgebraMatModule.
the faithful dimension of the module M.
Arguments: A, n - a quiver algebra, a positive integer.
the global dimension of A if the global dimension is less or equal to n. If the function can decide that the global dimension is infinite, it returns infinity. Otherwise, if the global dimension is larger than n, then it returns false.
Arguments: A - a quiver algebra.
the Gorenstein dimension of A, if the Gorenstein dimension has been computed. Otherwise it returns an error message.
Arguments: A, n - a quiver algebra, a positive integer.
the Gorenstein dimension of A if the Gorenstein dimension is less or equal to n. Otherwise, if the Gorenstein dimension is larger than n, then it returns false.
Arguments: N, M, n - two PathAlgebraMatModule's and an integer.
false if N does not have a coresolution of length at most n in add M, otherwise it returns the coresolution of N of length at most n.
Arguments: N, M, n - two PathAlgebraMatModule's and an integer.
false if N does not have a resolution of length at most n in add M, otherwise it returns the resolution of N of length at most n.
Arguments: M - a PathAlgebraMatModule.
If the injetive dimension of the module M has been computed, then the projective dimension is returned.
Arguments: M, n - a PathAlgebraMatModule, a positive integer.
Returns the injective dimension of the module M if it is less or equal to n. Otherwise it returns false.
Arguments: M - a module.
the injective envelope of M, that is, returns the map M\to I(M).
If the module M is zero, then the zero map from M is returned.
Arguments: M - a PathAlgebraMatModule.
true if the module M has been checked to be a cotilting mdoule, otherwise it returns an error message.
Arguments: M -- a path algebra module (PathAlgebraMatModule), n -- be a positive integer.
i
, where i is the smallest positive integer less or equal n such that the representation M is isomorphic to the i-th syzygy of M, and false otherwise.
Arguments: M - a PathAlgebraMatModule.
true if the module M has been checked to be a tilting mdoule, otherwise it returns an error message.
Arguments: M -- a path algebra module (PathAlgebraMatModule).
a module N such that M is a direct summand of N and such that the global dimension of the endomorphism ring of N is finite using the algorithm provided by Osamu Iyama (add reference here).
Arguments: T, M -- two path algebra modules (PathAlgebraMatModule).
the minimal left \widehat{\add T}-approximation of M.
The function checks if the first argument is a cotilting module, that is, checks if the attribute of IsCotiltingModule is set. This attribute can be set by giving the command CotiltingModule( T, n ) for some positive integer n which is at least the injective dimension of the module T.
Arguments: C, M -- two path algebra modules (PathAlgebraMatModule).
a left \operatorname{Fac} M-approximation of the module C, where the first version returns a not necessarily minimal left \operatorname{Fac} M-approximation and the second returns a minimal approximation.
Arguments: M, N -- two path algebra modules (PathAlgebraMatModule).
a left mutation of the complement N of the almost complete tilting/cotilting module M, if such a complement exists. Otherwise it returns false.
Arguments: C, M -- two path algebra modules (PathAlgebraMatModule).
a minimal left \operatorname{Sub} M-approximation of the module C.
Arguments: f, g - two homomorphisms with common range.
a factorization of g in terms of f, whenever possible and fail otherwise.
Given two inclusions f\colon B\to C and g\colon A\to C, this function constructs a morphism from A to B, whenever the image of g is contained in the image of f. Otherwise the function returns fail. The function checks if f and g are one-to-one, if they have the same range and if the image of g is contained in the image of f.
Arguments: f, g - two homomorphisms with common range.
a factorization of g in terms of f, whenever possible and fail otherwise.
Given two morphisms f\colon B\to C and g\colon P\to C, where P is a direct sum of indecomposable projective modules constructed via `DirectSumOfQPAModules` and f an epimorphism, this function finds a lifting of g to B. The function checks if P is a direct sum of indecomposable projective modules, if f is onto and if f and g have the same range.
gap> B := BasisVectors(Basis(N)); [ [ [ 1, 0, 0 ], [ 0, 0 ], [ 0, 0 ] ], [ [ 0, 1, 0 ], [ 0, 0 ], [ 0, 0 ] ], [ [ 0, 0, 1 ], [ 0, 0 ], [ 0, 0 ] ], [ [ 0, 0, 0 ], [ 1, 0 ], [ 0, 0 ] ], [ [ 0, 0, 0 ], [ 0, 1 ], [ 0, 0 ] ], [ [ 0, 0, 0 ], [ 0, 0 ], [ 1, 0 ] ], [ [ 0, 0, 0 ], [ 0, 0 ], [ 0, 1 ] ] ] gap> g := SubRepresentationInclusion(N,[B[1],B[4]]); <<[ 1, 2, 2 ]> ---> <[ 3, 2, 2 ]>>

gap> f := SubRepresentationInclusion(N,[B[1],B[2]]); <<[ 2, 2, 2 ]> ---> <[ 3, 2, 2 ]>>

gap> LiftingInclusionMorphisms(f,g); <<[ 1, 2, 2 ]> ---> <[ 2, 2, 2 ]>>

gap> S := SimpleModules(A); [ <[ 1, 0, 0 ]>, <[ 0, 1, 0 ]>, <[ 0, 0, 1 ]> ] gap> homNS := HomOverAlgebra(N,S[1]); [ <<[ 3, 2, 2 ]> ---> <[ 1, 0, 0 ]>> , <<[ 3, 2, 2 ]> ---> <[ 1, 0, 0 ]>> , <<[ 3, 2, 2 ]> ---> <[ 1, 0, 0 ]>> ] gap> f := homNS[1]; <<[ 3, 2, 2 ]> ---> <[ 1, 0, 0 ]>>

gap> p := ProjectiveCover(S[1]); <<[ 1, 4, 3 ]> ---> <[ 1, 0, 0 ]>>

gap> LiftingMorphismFromProjective(f,p); <<[ 1, 4, 3 ]> ---> <[ 3, 2, 2 ]>> [ [(1)*v1], [(1)*v2], [(1)*v3], [(1)*a], [(1)*b], [(1)*c], [(1)*d], [(1)*e] ] )> >
Arguments: C, M - two modules.
the minimal left \add M-approximation of the module C. Note: The order of the arguments is opposite of the order for minimal right approximations.
Arguments: M, C - two modules.
the minimal right \add M-approximation of the module C. Note: The order of the arguments is opposite of the order for minimal left approximations.
Arguments: f, g, alpha, beta - four homomorphisms of modules.
the morphism induced on the kernels, the images or the cokernels of the morphisms f and g, respectively, whenever f\colon A\to B, \beta\colon B\to B', \alpha\colon A\to A' and g\colon A'\to B' forms a commutative diagram.
It is checked if f, g, alpha, beta forms a commutative diagram, that is, if f \beta - \alpha g = 0.
gap> hom := HomOverAlgebra(N,N); [ <<[ 3, 2, 2 ]> ---> <[ 3, 2, 2 ]>> , <<[ 3, 2, 2 ]> ---> <[ 3, 2, 2 ]>> , <<[ 3, 2, 2 ]> ---> <[ 3, 2, 2 ]>> , <<[ 3, 2, 2 ]> ---> <[ 3, 2, 2 ]>> , <<[ 3, 2, 2 ]> ---> <[ 3, 2, 2 ]>> ] gap> g := MorphismOnKernel(hom[1],hom[2],hom[1],hom[2]); <<[ 2, 2, 2 ]> ---> <[ 2, 2, 2 ]>>

gap> IsomorphicModules(Source(g),Range(g)); true gap> p := ProjectiveCover(N); <<[ 3, 12, 9 ]> ---> <[ 3, 2, 2 ]>>

gap> N1 := Kernel(p); <[ 0, 10, 7 ]> gap> pullback := PullBack(p,hom[1]); [ <<[ 3, 12, 9 ]> ---> <[ 3, 2, 2 ]>> , <<[ 3, 12, 9 ]> ---> <[ 3, 12, 9 ]>> ] gap> Kernel(pullback[1]); <[ 0, 10, 7 ]> gap> IsomorphicModules(N1,Kernel(pullback[1])); true gap> t := LiftingMorphismFromProjective(p,p*hom[1]); <<[ 3, 12, 9 ]> ---> <[ 3, 12, 9 ]>>

gap> s := MorphismOnKernel(p,p,t,hom[1]); <<[ 0, 10, 7 ]> ---> <[ 0, 10, 7 ]>>

gap> Source(s) = N1; true gap> q := KernelInclusion(p); <<[ 0, 10, 7 ]> ---> <[ 3, 12, 9 ]>>

gap> pushout := PushOut(q,s); [ <<[ 0, 10, 7 ]> ---> <[ 3, 12, 9 ]>> , <<[ 3, 12, 9 ]> ---> <[ 3, 12, 9 ]>> ] gap> U := CoKernel(pushout[1]); <[ 3, 2, 2 ]> gap> IsomorphicModules(U,N); true
Arguments: M -- a path algebra module (PathAlgebraMatModule), n -- a positive integer.
the n-th syzygy of M if it has projective dimension at least n, and if the projective dimension is less than n, then it returns the last non-zero projective syzygy.
This functions computes the n-th syzygy of the module M by successively computing first, second, third, ... syzygy of M the operation and at each stage checking if the is a projective module.
Arguments: M -- a path algebra module (PathAlgebraMatModule), n -- a positive integer.
the n-th syzygy of the module M, unless the projective dimension of M is less or equal to n-1, in which case it returns the zero module. It does not check if the n-th syzygy is projective or not.
Arguments: M -- a PathAlgebraMatModule.
the number complements of an almost complete tilting/cotilting module M, assuming that M is an almost complete tilting module.
Arguments: M - a PathAlgebraMatModule.
the projective dimension of the module M, if it has been computed.
Arguments: M, n - a PathAlgebraMatModule, a positive integer.
Returns the projective dimension of the module M if it is less or equal to n. Otherwise it returns false.
Arguments: M - a module.
the projective cover of M, that is, returns the map P(M)\to M.
If the module M is zero, then the zero map to M is returned.
Arguments: M - a path algebra module (PathAlgebraMatModule), n - a positive integer.
in terms of attributes RProjectives, ProjectivesFList and Maps a projective resolution of M out to stage n, where RProjectives are the projectives in the resolution lifted up to projectives over the path algebra, ProjectivesFList are the generators of the projective modules given in RProjectives in terms of elements in the first projective in the resolution and Maps contains the information about the maps in the resolution.
The algorithm for computing this projective resolution is based on the paper . In addition, the algebra over which the modules are defined is available via the attribute ParentAlgebra.
Arguments: f, g - two homomorphisms with a common range.
the pullback of the maps f and g.
It is checked if f and g have the same range. Given the input f\colon A\to B (horizontal map) and g\colon C\to B (vertical map), the pullback E is returned as the two homomorphisms [f',g'], where f'\colon E\to C (horizontal map) and g'\colon E\to A (vertical map).
Arguments: f, g - two homomorphisms between modules with a common source.
the pushout of the maps f and g.
It is checked if f and g have the same source. Given the input f\colon A\to B (horizontal map) and g\colon A\to C (vertical map), the pushout E is returned as the two homomorphisms [f',g'], where f'\colon C\to E (horizontal map) and g'\colon B\to E (vertical map).
gap> S := SimpleModules(A); [ <[ 1, 0, 0 ]>, <[ 0, 1, 0 ]>, <[ 0, 0, 1 ]> ] gap> Ext := ExtOverAlgebra(S[2],S[2]); [ <<[ 0, 1, 2 ]> ---> <[ 0, 2, 2 ]>> , [ <<[ 0, 1, 2 ]> ---> <[ 0, 1, 0 ]>> ], function( map ) ... end ] gap> Length(Ext[2]); 1 gap> # i.e. Ext^1(S[2],S[2]) is 1-dimensional gap> pushout := PushOut(Ext[2][1],Ext[1]); [ <<[ 0, 2, 2 ]> ---> <[ 0, 2, 0 ]>> , <<[ 0, 1, 0 ]> ---> <[ 0, 2, 0 ]>> ] gap> f := CoKernelProjection(pushout[1]); <<[ 0, 2, 0 ]> ---> <[ 0, 0, 0 ]>>

gap> U := Range(pushout[1]); <[ 0, 2, 0 ]>
Arguments: T, M -- two path algebra modules (PathAlgebraMatModule).
the minimal right ^\perp T-approximation of M.
The function checks if the first argument is a cotilting module, that is, checks if the attribute of IsCotiltingModule is set. This attribute can be set by giving the command CotiltingModule( T, n ) for some positive integer n which is at least the injective dimension of the module T.
Arguments: M, C -- two path algebra modules (PathAlgebraMatModule).
a minimal right \operatorname{Fac} M-approximation of the module C.
Arguments: M, N -- two path algebra modules (PathAlgebraMatModule).
a right mutation of the complement N of the almost complete tilting/cotilting module M, if such a complement exists. Otherwise it returns false.
Arguments: M, C -- two path algebra modules (PathAlgebraMatModule).
a right \operatorname{Sub} M-approximation of the module C, where the first version returns a not necessarily minimal right \operatorname{Sub} M-approximation and the second returns a minimal approximation.
Arguments: M, n - a PathAlgebraMatModule, an integer.
true if M is a n-rigid module. Otherwise it returns false.
Arguments: M, n - a PathAlgebraMatModule and a positive integer.
false if M is not a tilting module of projective dimension at most n. Otherwise, it returns the projective dimension of M and the coresolution of all indecomposable projective modules in \add M.