- Consider the category of sets with partial functions as morphisms, and the category , the category of pointed sets and and basepoint-preserving functions as morphisms.
- The functor 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 , we add a basepoint . So, the functor sends a set to the set
a = {X} in (X U {a}, a), which expanded out is . The functor sends a partial function to based function by defining which sends undefined values to , and is forced by definition sends the basepoint to . - The "inverse" functor forgets the basepoints, and sends a function to the partial function by not mapping those elements in the domain which were mapped to by .
- Going from a partial function to a bottomed function and then back again to partial function forgets no information.
- On the other hand, going from a basepointed set for some arbitrary basepoint will return a set with a different basepoint, . Note that the sets and 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!