outside} and in addition to the identities there are two morphisms that form a bijection:
The literature conventionally refers to these operations as "let the dog out" and "let the dog in", respectively.
A "puppy functor" P is defined as follows, and is applicable only to categories in which products exist:
P(S) = S x (
P( 1S : S->S ) = f x 1
P(f : S->T ) = f x ( door or door-1 ) for all other morphisms
In the resulting category, any action must be accompanied by letting the dog outside or letting the dog back inside, as no function maps to the inside or outside identity. Further, any bijective morphism involves letting the dog out and then back in again (or the reverse), because
P(1) = P( ff -1 ) = P( f )P( f -1 )
Categories with endomorphisms (other than the identity, of course) cannot have a puppy functor. In fact, the only categories which have a puppy functor are those whose graphs are bipartite. The practical aspect of this restriction implies that dog owners cannot expect to perform any third task between letting the dog out and letting the dog back in.