Projective resolutions and the bounded derived category

What is implemented so far for working with the bounded derived category \mathcal{D}^{b}( \modc A ). We use the isomorphism \mathcal{D}^{b}( \modc A ) \cong \mathcal{K}^{-,b}(\proj A), and will hence need a way to describe complexes where all objectives are projective (or, dually, injective).

Projective and injective complexes
Arguments: M -- a module.
The injective resolution of M with M in degree -1.
Arguments: C -- a complex.
true if C is either a finite complex of projectives or an infinite complex of projectives constructed as a projective resolution (), false otherwise.
A complex for which this property is true, will be printed in a different manner than ordinary complexes. Instead of writing the dimension vector of the objects in each degree, the indecomposable direct summands are listed (for instance P1, P2 … , where P_i is the indecomposable projective module corresponding to vertex i of the quiver). Note that if a complex is both projective and injective, it is printed as a projective complex.
Arguments: C -- a complex.
true if C is either a finite complex of injectives or an infinite complex of injectives constructed as D\mathrm{Hom}_{A}(-,A) of a projective complex (), false otherwise.
A complex for which this property is true, will be printed in a different manner than ordinary complexes. Instead of writing the dimension vector of the objects in each degree, the indecomposable direct summands are listed (for instance I1, I2 … , where I_i is the indecomposable injective module corresponding to vertex i of the quiver). Note that if a complex is both projective and injective, it is printed as a projective complex.
Arguments: M -- a module.
The projective resolution of M with M in degree -1.
The bounded derived category
Let \mathcal{D}^{b}( \modc A ) denote the bounded derived category. If C is an element of \mathcal{D}^{b}( \modc A ), that is, a bounded complex of A-modules, there exists a projective resolution P of C which is a complex of projective A-modules quasi-isomorphic to C. Moreover, there exists such a P with the following properties: P is minimal (in the homotopy category). C is bounded, so C_i = 0 for i < k for a lower bound k and C_i = 0 for i > j for an upper bound j. Then P_i = 0 for i < k, and P is exact in degree i for i > j. The function ProjectiveResolutionOfComplex computes such a projective resolution of any bounded complex. If A has finite global dimension, then \mathcal{D}^{b}( \modc A ) has AR-triangles, and there exists an algorithm for computing the AR-translation of a complex C \in \mathcal{D}^{b}( \modc A ): Compute a projective resolution P' of C. Shift P' one degree to the right. Compute I = D\mathrm{Hom}_{A}(P',A) to get a complex of injectives. Compute a projective resolution P of I. Then P is the AR-translation of C, sometimes written \tau(C).

The following documents the `QPA` functions for working with complexes in the derived category.

Arguments: C -- a finite complex.
A projective complex P which is the projective resolution of C, as described in the introduction to this section.
If the algebra has infinite global dimension, the projective resolution of C could possibly be infinite.
Arguments: P -- a bounded below projective complex.
An injective complex I = D\mathrm{Hom}_{A}(P,A).
P
and I will always have the same length. Especially, if P is unbounded above, then so is I. If P is a finite complex (that is; LengthOfComplex(P) is an integer) then the simpler method ProjectiveToInjectiveFiniteComplex is used.
Arguments: C -- a finite complex over an algebra of finite global dimension.
A projective complex P which is the AR-translation of C.
This function only works when the algebra has finite global dimension. It will always assume that both the projective resolutions computed are finite.
Example
The following example illustrates the above mentioned functions and properties. Note that both ProjectiveResolutionOfComplex and ProjectiveToInjectiveComplex return complexes with a nonzero positive part, whereas TauOfComplex always returns a complex for which IsFiniteComplex returns true. Also note that after the complex C in the example is found to have the IsInjectiveComplex property, the printing of the complex changes.

The algebra in the example is kQ/I, where Q is the quiver 1 \longrightarrow 2 \longrightarrow 3 and I is generated by the composition of the arrows. We construct C as the stalk complex with the injective I_1 in degree 0.

gap> alg; <Rationals[<quiver with 3 vertices and 2 arrows>]/ <two-sided ideal in <Rationals[<quiver with 3 vertices and 2 arrows>]>, (1 generators)>> gap> cat := CatOfRightAlgebraModules(alg); <cat: right modules over algebra> gap> C := StalkComplex(cat, IndecInjectiveModules(alg)[1], 0); 0 -> 0:(1,0,0) -> 0 gap> ProjC := ProjectiveResolutionOfComplex(C); --- -> 0: P1 -> 0 gap> InjC := ProjectiveToInjectiveComplex(ProjC); --- -> 1: I2 -> 0: I1 -> 0 gap> TauC := TauOfComplex(C); 0 -> 1: P3 -> 0 gap> IsProjectiveComplex(C); false gap> IsInjectiveComplex(C); true gap> C; 0 -> 0: I1 -> 0
Arguments: f -- a map between to projective modules P = \bigoplus P_i and Q = \bigoplus Q_j, each of which were constructed as direct sums of indecomposable projective modules; list_i -- describes the summands of P; list_j -- describes the summands of Q. If P = P_1 \oplus P_3 \oplus P_3 (where P_i is the indecomposable projective representation in vertex i), then list_i is [1,3,3].
The map f^* = \Hom_A(f,A): \Hom_A(Q,A) \rightarrow \Hom_A(P,A) in A^{\mathrm{op}} (where A is the original algebra).
The function StarOfMapBetweenProjectives is supposed to be called from within the ProjectiveToInjectiveComplex method, and might not do as expected when called from somewhere else.

The other similarly named functions are called from within the first.