Proof: For f ∈ Hom(X,A), i ◦ f = 0 implies (i ◦ f)(x) = 0 for all x ∈ X, and then f(x) = 0 for all x since i is injective. Thus, Hom(X,A)→ Hom(X,B) is injective, giving exactness at the left joint. Since q ◦ i = 0, any f ∈ Hom(X,A) is mapped to 0 ∈ Hom(X,C) by f → q ◦ i ◦ f . That is, the image of i ◦ − is contained in the kernel of q ◦ −. On the other hand, when g ∈ Hom(X,B) is mapped to q ◦ g...