Injective cogenerator

In category theory, a branch of mathematics, the concept of an injective cogenerator is drawn from examples such as Pontryagin duality. Generators are objects which cover other objects as an approximation, and (dually) cogenerators are objects which envelope other objects as an approximation.
More precisely:
The abelian group case.
Assuming one has a category like that of abelian groups, one can in fact form direct sums of copies of "G" until the morphism
is surjective; and one can form direct products of "C" until the morphism
is injective.
For example, the integers are a generator of the category of abelian groups (since every abelian group is a quotient of a free abelian group). This is the origin of the term "generator". The approximation here is normally described as "generators and relations."
As an example of a "cogenerator" in the same category, we have Q/Z, the rationals modulo the integers, which is a divisible abelian group. Given any abelian group "A", there is an isomorphic copy of "A" contained inside the product of |A| copies of Q/Z. This approximation is close to what is called the "divisible envelope" - the true envelope is subject to a minimality condition.
General theory.
Finding a generator of an abelian category allows one to express every object as a quotient of a direct sum of copies of the generator. Finding a cogenerator allows one to express every object as a subobject of a direct product of copies of the cogenerator. One is often interested in projective generators (even finitely generated projective generators, called progenerators) and minimal injective cogenerators. Both examples above have these extra properties.
The cogenerator Q/Z is useful in the study of modules over general rings. If "H" is a left module over the ring "R", one forms the (algebraic) character module "H"* consisting of all abelian group homomorphisms from "H" to Q/Z. "H"* is then a right R-module. Q/Z being a cogenerator says precisely that "H"* is 0 if and only if "H" is 0. Even more is true: the * operation takes a homomorphism
to a homomorphism
and "f"* is 0 if and only if "f" is 0. It is thus a faithful contravariant functor from left "R"-modules to right "R"-modules.
Every "H"* is pure-injective (also called algebraically compact). One can often consider a problem after applying the * to simplify matters.
All of this can also be done for continuous modules "H": one forms the topological character module of continuous group homomorphisms from "H" to the circle group R/Z.
In general topology.
The Tietze extension theorem can be used to show that an interval is an injective cogenerator in a category of topological spaces subject to separation axioms.