Resolve whichever variable is easier
Extn(C, A) can be computed as the n-th right derived functor of Hom(−, A) applied to C, or of Hom(C, −) applied to A. These are different computations with different inputs, and they agree. The proof compares both against a double complex built from a projective resolution of C and an injective resolution of A, and the practical consequence is complete freedom in choosing which side to resolve.
Learning objectives
- State the balance theorem.
- Outline the double complex proof.
- Choose the cheaper resolution in a given computation.
- Explain why Tor is symmetric while Ext is only balanced.
Section 01The statement
The isomorphisms are natural in both variables. So Ext is well defined without specifying which side is resolved, and the two long exact sequences — one for each variable — belong to the same bifunctor.
Tor is symmetric: Tor(M, N) ≅ Tor(N, M), because both variables are covariant and both resolved projectively. Ext is only balanced: the two variables have different variance and are resolved by different kinds of object, so no exchange isomorphism exists.
Section 02The double complex argument
- Take a projective resolution P• of C and an injective resolution I• of A.
- Form the double complex Hom(Pp, Iq).
- Filter by rows: since each Iq is injective, Hom(−, Iq) is exact, so taking homology in the p direction leaves only the column Hom(C, I•). This computes Ext by resolving A.
- Filter by columns: since each Pp is projective, Hom(Pp, −) is exact, so only the row Hom(P•, A) survives. This computes Ext by resolving C.
- Both filtrations compute the cohomology of the total complex, so the two answers agree.
Each filtration gives a spectral sequence that degenerates at the first page, because the exactness kills all but one row or column. The comparison is therefore a direct isomorphism rather than a filtration argument — which is why balance can be proved before spectral sequences are introduced.
Section 03Choosing a side
- Which variable has the better resolution?
- C is cyclic or f.g. over a PID Resolve C — the projective resolution has length 1.
- A is already injective or divisible Resolve A — the resolution is trivial and Ext vanishes above degree 0.
- C is a trivial module over a group ring Resolve C — the bar resolution is standard and explicit.
- Working with sheaves Resolve the second variable — sheaf categories have enough injectives but generally no projectives.
In a category without enough projectives, the projective computation simply does not exist. Balance then says nothing — it is an agreement between two computations, and with only one available the choice is made for you. This is the everyday situation in sheaf theory.
ReferenceFrequently asked questions
Does balance hold in every abelian category?
It holds whenever both kinds of resolution exist. With only one kind, Ext is defined by that one and balance is vacuous. The Yoneda definition by extensions agrees with either whenever they exist, which makes it the most robust definition.
Is there a balance theorem for Tor?
Yes, and it is stronger: resolving either variable projectively gives the same answer, and additionally Tor is symmetric under exchanging the variables. The double complex used is symmetric, which is what yields the extra conclusion.
What is a Cartan-Eilenberg resolution?
A resolution of an entire complex, rather than a module, by a double complex whose rows resolve the terms and whose associated cycle and homology complexes are also resolved. It is the tool for defining hyperhomology and for deriving functors on complexes.
NavigateContinue in this stream
Curated next steps from this page. The site also surfaces algorithmically related reading below.
ProvenanceSources and further reading
This page is an original KEVOS explanatory article. It presents the underlying mathematics — definitions, algorithms, complexity results and selection criteria — in KEVOS editorial voice. No text is reproduced from any copyrighted source. Where numerical tables are relevant, KEVOS links to live authoritative databases rather than republishing static values.
