Solution (source code)

= Solution
{c}

Assume (c), and take an <epimorphism> $p:M\twoheadrightarrow h_A$ with $M$ a <monofunctor>. Since $h_A$ is a <projective object in a category>, there is a <natural transformation> $s:h_A\to M$ with $ps=1_{h_A}$. A <retract in a category> of a <monofunctor> is a <monofunctor>: if $h_A(f)(u)=h_A(f)(v)$, then naturality of $s$ gives $M(f)s(u)=M(f)s(v)$, injectivity of $M(f)$ gives $s(u)=s(v)$, and applying $p$ gives $u=v$. Thus (c) implies (b), completing
$$
\boxed{\text{(a)}\Longleftrightarrow\text{(b)}\Longleftrightarrow\text{(c)}.}
$$

The stronger assertion that every set-valued <functor> is a <monofunctor> holds exactly when $\mathcal C$ is a <groupoid>. Sufficiency follows because a <functor> preserves inverses, so sends every arrow to a bijection.

For necessity, fix $f:A\to B$, and form the pointwise <pushout in a category>
$$
P=h_A\amalg_{h_B}h_A,
$$
using twice the <natural transformation> $h_B\to h_A$ given by precomposition with $f$. At an object $X$, $P(X)$ consists of two copies of $\mathcal C(A,X)$, with the two copies of $kf$ identified for every $k:B\to X$. No different underlying elements are identified: each generating relation simply joins the two copies of one element. In $P(B)$, the two copies of $f$ coincide, since $f=1_Bf$. Hence $P(f)$ sends the two copies of $1_A$ in $P(A)$ to the same element. If $P$ is a <monofunctor>, those copies of $1_A$ coincide. The description of the pushout implies $rf=1_A$ for some $r:B\to A$. Thus every morphism is a <split monomorphism>.

Apply the same conclusion to $r$: there is $t:A\to B$ with $tr=1_B$. Then $t=trf=f$, and so $fr=1_B$ as well. Every arrow is invertible, proving
$$
\boxed{\text{Every }F:\mathcal C\to\mathbf{Set}\text{ is a monofunctor}\ \Longleftrightarrow\ \mathcal C\text{ is a groupoid}.}
$$