`id_x`

as `""`

(the
empty string), and we "interpret" all other arrows `a`

as some unique string
associated to each arrow. Composition of arrows becomes concatenation of
strings. This obeys all the axioms of a category. We are basically of a
category as a free monoid.
Let's being our consideration of the covariant functor `Hom(O, -): C → Set`

.
Note that the objects of this category are `Hom(O, P)`

.
To every arrow `a: P → Q`

we associate the set function
`a': Hom(O, P) → Hom(O, Q)`

. `a'(op) = pq . op`

.
Now, to apply Yoneda, we need another covariant functor `G: S → Set`

. We now
need to show that the set of natural transformations `η: F → G`

are in bijection
with the set `G[O] ∈ Set`

.
We do this by the following consideration. Recall that for the natural transformation,
we have the commuting diagram:
```
x -p-> y
Hom(o, x) -p'-> Hom(o, y)
| |
ηx ηy
| |
v v
G[x] -G[p] --> G[y]
```

```
∀ x y ∈ C,
o2x ∈ Hom(o, x),
p ∈ Hom(x, y),
G[p](ηx(o2x)) = ηy(p'(o2x))
```

Which on using the definition of `p'`

becomes:
```
∀ x y ∈ C,
o2x ∈ Hom(o, x),
p ∈ Hom(x, y),
G[p](ηx(o2x)) = ηy(o2x . p')
```

Now pick the magic `x = o`

and `o2x = o2o = id_o`

. This gives:
```
x = o, y ∈ C
o2x = id_o
∀ y ∈ C,
p ∈ Hom(o, y),
G[p](ηo(id_o)) = ηy(id_o . p')
G[p](ηo(id_o)) = ηy(p') [By identity arrow]
[assume we fix ηo(id_o) ∈ G[o] ]
ηy(p') = G[p](ηo(id_o)) [ηy is now forced.
everything on the RHS is known]
```

Hence, we learn how to map every other arrow `ηy(p)`

. If we know how to map
the arrows, we can map the objects in the hom-sets as images of the arrows,
since we know what `ηo[id_o]`

maps to. Concretely:
`ηo(q)`

for `q ∈ Hom(o, o)`

after `ηo(id_o)`

is fixed: `id_o . q = q`

. So we get that the arrow `q': Hom(o, o) → Hom(o, o)`

takes `id_o`

to `q`

. By the structure of the natural transformation, we have that:
```
∀ x y ∈ C,
o2x ∈ Hom(o, x),
p ∈ Hom(x, y),
G[p](ηx(o2x)) = ηy(p'(o2x))
```

- Pick
`x = y = o`

,`o2x = id_o`

,`p = q`

. This gives:

```
G[q](ηo(id_o)) = ηo(q'(id_o))
G[q](ηo(id_o)) = ηo(q' . id_o)
G[q](ηo(id_o)) = ηo(q')
ηo(q') = G[q](ηo(id_o))
```

Hence, we've deduced `ηo(q')`

, so we know what element `q`

gets mapped to.
The same process works with - Every monoid can be embedded into its action space (Cayley's theorem).
- This mapping of yoneda from $Hom(o, -)$ to arbitrary sets is like a "forgetful" functor from a monoid into a semigroup.
- If our monoid is "well represented" by a semigroup, then once we know what the identity maps to, we can discover all of the other elements by using the relation $f(ex) = f(e) f(x)$. The only "arbitrariness" introduced by forgetting the monoid structure is the loss of the unique identity.
: This is handwavy, since the data given by a natural transformation is somehow "different", in a way that I'm not sure how to make precise.*NOTE*