Categories as relations

I'll characterize a category by a mapping, C, for which:

and if we really want we can insist that, for each f in (|C:) there are an e and an i in (|C:) for which C([f,e]) = f = C([i,f]) = C([i,f,e]); i.e. that each morphism is composable between a pair of identities. Note that nothing is said about the empty list: it is not expected to be a member of (:C|), but a category with a global identity can use this as C([]).

Note that we can use the final characteristic to join lists and to split them (it's also our guarantee of associativity). Furthermore, it tells us that a list ((|C:):f|1+n) will be in (:C|) precisely if, for each i in n, [f(i),f(1+i)] is in (:C|) - i.e., all C's right values can be inferred from its right values of length two. This gives C an associated relation, composability for which: f is composable to the left of g iff [f,g] is in (:C|) iff g is composable to the right of f. Then C's right values are the lists for which adjacent entries are composable in the order in which they appear.

Define two useful tools, mappings from categories to (effectively) an encoding of composability:

and we can generally expect that if Right(C,f) and Right(C,g) have non-empty intersection one of them subsumes the other (they may well be equal); and likewise for Left.

Transformations and Functors

Now consider two categories, C and D, as above, in the light of some mapping ((|D:):t|C). For any h in (:C|), t&on;h is a list of D's morphisms: if it's in (:D|), we can compare D(t&on;h) with t(C(h)). Any t for which the two are equal for all h in (:C|) is described as a functor from C to D.

Somewhat more fiddly, now consider a mapping ((|D:): t |C) for which: Left(C, y) subsumes Left(C, x) implies Left(D, t(y)) subsumes Left(D, t(x)) and likewise for Right in place of Left; I'll call t a transformation in this case.

Describe two parallel transformations, ((|D:): s |C) and ((|D:): t |C), as conjoinable, in the given order, iff: [f,g] in (:C|) implies [s(f),t(g)] in (:D|) and; C([f,g]) = C([u,v]) implies D([s(f),t(g)]) = D([s(u),t(v)]). In such a case, the conjoint, ((|D:): s*t |C) is induced from D([s(f),t(g)]) ← C([f,g]). One may rephrase the definition as: [s,t] is conjoinable iff (: D([s(f),t(g)]) ← C([f,g]) :) is a mapping (: s*t |C).

I'll say that a functor, ((|D:): F |C), begins a transformation ((|D:): T |C) precisely if [T,F] is conjoinable, with T*F = T; or that F ends T iff [F,T] is conjoinable, with F*T = T. If functors F and G begin and end (respectively) a transform T, I'll say that T transforms F into G.

See also

I have older writings, differently expressed, but on a related topic.

Valid CSS ? Valid HTML ? Written by Eddy.