§ Functors to motivate adjuntions
- Consider the category Set∂ of sets with partial functions as morphisms, and the category Set∗, the category of pointed sets and and basepoint-preserving functions as morphisms.
- The functor F:Set∂→Set∗sends sets to set-with-basepoint. To be very precise about basepoint considerations, since this is where the non-inversion will lie, let us say that for a set X, we add a basepoint {X}. So, the functor F sends a set X to the set
a = {X} in (X U {a}, a)
, which expanded out is (X∪{{X}},{X}). The functor F sends a partial function f:A⇀B to based function by defining F(f):F(A)→F(B)which sends undefined values a to {B}∈F(B), and is forced by definition sends the basepoint {A}∈F(A) to {B}∈F(B). - The "inverse" functor G:Set∗→Set∂ forgets the basepoints, and sends a function h:(A,a)→(B,b)to the partial function G(h):A→B by not mapping those elements in the domain which were mapped to b by h.
- Going from a partial function f to a bottomed function F(f) and then back again to partial function G(F(f)) forgets no information.
- On the other hand, going from a basepointed set (A,⊥) for some arbitrary basepoint ⊥will return a set with a different basepoint, (A/⊥∪{{A/⊥}},{A/⊥}). Note that the sets (A,⊥) and A/⊥∪{{A/⊥}} are isomorphic, but not equal!
G(F((A, a)))
= let x = remove A a in G(x)
= let x = remove A a;
botnew = set([x]) in insert x botnew
-- | adds the set (A - a) as an element of (A - a)
= insert (remove A a) (remove A a)
Thus, we should come up with a weaker notion of equality : Adjoints!