# Are subfunctors of left exact functors also left exact?

Consider the direct image functor $f_*: Sh(X) \rightarrow Sh(Y)$, let $X$ and $Y$ be topological spaces, let $f: X \rightarrow Y$ be a continuous map, let $G \in Sh(X)$ be a sheaf. I was reading this course on sheaves:

On page 1 they define this subpresheaf $f_!G \subset f_*G$ then on page 2 in the first line they remark that:

"As $f_!$ is a subfunctor of $f_*$ it is left exact".

I wanted to ask, are subfunctors of left exact functors also left exact?

-
Yes, obviously. –  Steven Landsburg Apr 1 '13 at 16:26
It is obvious that a subfunctor of a left exact functor sends short exact sequences to sequences that are exact on the left (i.e., it sends injections to injections), but it is neither obvious nor true that it preserves exactness in the middle. –  Eric Wofsey Apr 1 '13 at 17:38
Eric: Aagh. You're right. –  Steven Landsburg Apr 1 '13 at 17:51
Thanks, does that mean that $f_!$ might not be left exact then? –  Louis A Apr 2 '13 at 5:20
It turns out that $f_!$ is still left exact. This follows from the fact that $f_*$ is left exact and for any subsheaf $\mathcal{F}\subset\mathcal{G}$, $f_!\mathcal{G}\cap f_*\mathcal{F}=f_!\mathcal{F}$ as subsheaves of $f_*\mathcal{G}$. –  Eric Wofsey Apr 2 '13 at 18:53

Here's a counterexample with additive functors on abelian categories. If $A$ is an abelian group, let $F(A)$ denote the subgroup of elements that are divisible by $2$. It is easy to see that $F:Ab\to Ab$ is an additive functor, and $F$ is a subfunctor of the identity. But $F$ is not left exact because it does not preserve kernels. For instance, $F$ sends the exact sequence $$0\to \mathbb{Z}\to\mathbb{Q}\to\mathbb{Q}/\mathbb{Z}$$ to $$0\to2\mathbb{Z}\to\mathbb{Q}\to\mathbb{Q}/\mathbb{Z},$$ which is not exact.
Not necessarily. Consider these two functors SetSet: F is the constant functor with value the empty set, and G is the identity functor. Then F is a subfunctor of G, G is obviously left exact, but F is not: it does not send the terminal object to the terminal object.