Michael Hong wrote:
> what if we project Tyler onto Bob

It is an endomorphism, but not all squares over this endomorphism commute. Slipping into somewhat less formal language, we either go from Tyler to Bob to Bob, or Tyler to Bob to Alice, depending on whether we take the projection or \\(\textrm{FriendOf}\\) first.

Ryan Wisnesky wrote:
> it is not the case that the image of a functor F : C -> D is a subcategory of D.

Okay, I've reflected on this a bit, by which I mean I've [read](https://ncatlab.org/nlab/show/subcategory) a [few](https://ncatlab.org/nlab/show/full+image) nLab [pages](https://ncatlab.org/nlab/show/faithful+functor). I see why a functor must be injective on objects if its range is a subcategory, for reasons closely related to my "counter"example earlier in the context of natural transformations. I'm not sure yet if I understand why a functor must also be injective on hom-sets.

Given arrows \\(F(f) : F(X) \to F(Y)\\) and \\(F(g) : F(Y) \to F(Z)\\), we want to show that \\(F(g) \circ F(f)\\) is well-defined and is in the range of \\(F\\). Note that there might be multiple \\(f\\) and \\(g\\) giving the same arrows; for now, pick any representatives. If \\(F\\) is injective on objects, then we know that the codomain of \\(f\\) and the domain of \\(g\\) are the same; so the two are compatible. So \\(g \circ f\\) exists, and \\(F(g) \circ F(f) = F(g \circ f)\\) is in the range of \\(F\\).

Now consider \\(f', g'\\) distinct from \\(f, g\\) such that \\(F(f) = F(f')\\) and \\(F(g) = F(g')\\). Then \\(g \circ f\\) and \\(g' \circ f'\\) exist, but need not be the same. Nonetheless, \\(F(g' \circ f') = F(g') \circ F(f') = F(g) \circ F(f) = F(g \circ f)\\).

This would seem to imply that no matter which representatives \\(f, g\\) we pick, their composition gives the same image under \\(F\\). So the range of \\(F\\) is closed under a well-defined composition.

What am I missing?