In article <31BD21E3.5C6@rcp.co.uk> Michael Abbott <firstname.lastname@example.org> writes:
>The notation C^op denotes the category "dual" to C, with >C^op(X,Y)=C(Y,X), etc.
>The category [C^op,Set] (let's call it <C> for convenience - NOT standard >notation!) is a rather interesting construction - in some sense (which >I'm busy trying to understand myself) this category <C> "is" C embedded >in the category of sets; we can think of the language of sets being >extended by the internal language of C - that is, each of the objects >of C is a new constant in an extended language of Sets, and each of its >morphism is a function.
That's one way to think of it. Being a geometrical sort of person, I found it easier to start understanding <C> with a metaphor from geometry. The following may help people who are comfortable with fiber bundles and connections.
Any category has an underlying graph whose vertices are the objects and whose (oriented) edges are the morphisms. An object F of <C>, that is, a functor from C^op to Set, can be thought of as some sort of "set bundle with connection" over this graph. In other words, to each vertex v of the graph it assigns a set F(v), which we can call the "fiber over v". Also, to each edge f: v -> w it assigns a function F(f): F(w) -> F(v), which we can think of as the operation of "parallel transport along the edge f". (The fact that it goes backwards from F(w) to F(v) is because we are using the opposite category C^op. If we worked with functors from C to Set this annoyance would go away... and probably show up somewhere else.) It satisfies the rule F(fg) = F(g)F(f), and F(1) = 1, familiar from the theory of parallel transport.
These "set bundles with with connection" form a category <C> in a pretty obvious way. The Yoneda embedding expresses the fact that there is a nice embedding of C into <C>. First of all, this means that for any object x of C there is a corresponding "set bundle with connection" F_x over C. The fiber over any vertex v of this bundle is just the set of morphisms from v to x: F_x(v) = hom(v,x). Parallel transport is defined in the obvious way, by composition. I.e., given an edge f: v -> w, we parallel transport an element g of the fiber over w to obtain the element gf of the fiber over v.
Similarly, for any morphism from x to y in C we get a morphism from F_x to F_y.
Visually minded readers might profit by drawing a little graph representing a little category C, and drawing the "set bundle with connection" corresponding to some object of C, by drawing a little set sitting above each object of C, and a little parallel transport function sitting over each morphism of C. Personally I didn't actually draw this, but imagining it made me feel much happier about the Yoneda embedding. In general I find that drawing pictures of little categories helps me understand concepts of category theory --- one should not get into the habit of thinking of categories as scary enormous shadowy entities.