I'm working through Bird and DeMoor's Algebra of Programming and I have some basic gaps in my understanding. Problem 2.28 asks if projection outl is epic in Set, if inl is monic, and why the differing answers is not a violation of duality. The answer key says "Projections need not be epic: consider for instance $outl: 1 \leftarrow 0$ (note: they write morphisms in reverse order of most). Injections are monic. This does not contradict duality as it is about one particular category."
My first question is, is the answer right? How can $outl: 1 \leftarrow 0$ be a valid projection since the empty function does not seem to satisfy the definition of product using the universal condition: $h=< k, l > \iff outl \cdot h = k$ ?
Secondly, I've seen many explanations of what I think is the same issue here and elsewhere online -- the notion that a morphism is epic iff it is surjective. Most explanations offer as a unsatisfactory epimorphism $f: X \times \emptyset \to X$. I don't know if this is the empty function or if this is describing something that is satisfied by no function (looks to be the later) but either way I don't see how it could be a projection (for the same reason as the last paragraph). I did understand this answer, but I'd like to understand its the relation to the others.
Finally, I'm looking for a proof that inl is monic. I thought I had come up with one but its pretty basic and the same argument also proves outl is epic, so it must be wrong. I'd really like to know both what I've got wrong and how to make it right. My incorrect proof is:
To prove inl monic, prove $inl \cdot f = inl \cdot g \iff f = g$.
The right-to-left case is trivial -- $f=g \to inl \cdot f = inl \cdot g$
For the left-to-right case, recall the universal property of inl: $h=[k,l] \iff h \cdot inl = k$
Take $h=[id,l]$. Then $h \cdot inl = id$.
So: $$inl \cdot f = inl \cdot g$$ $$\to h \cdot inl \cdot f = h \cdot inl \cdot g$$ $$\to id \cdot f = id \cdot g$$ $$\to f = g$$