Category Theory

(This is not a category for pages about theory. Rather, the name of this page refers to the mathematical field of category theory.) Category theory is the field of mathematics formalizing algebraic properties of collections of transformations between mathematical objects. For example, groups and group homomorphisms, or topological spaces and continuous maps.

Formally, a category is a collection of objects, C, such that for each pair of objects (X, Y) in C, there is a collection of morphisms called M(X,Y).

Furthermore, these must satisfy the following axioms:

  1. For each f in M(X,Y) and each g in M(Y,Z), there is a composite, gf in M(X,Z).
  2. Composition is associative; if h is in M(Z,W), h(gf) = (hg)f.
  3. For each X, there is a special identity element id_X in M(X,X).
  4. f id_X = id_Y f = f.

Usually, morphisms respect the algebraic properties of the objects; they are group homomorphisms, or continuous maps, or linear transformations on vector spaces, or the like. However, they need not even be describable as functions on the category objects.

See CategoriesForTheWorkingMathematician, by SaundersMacLane?, for details. (MacLane invented category theory)

-- EricJablow

Or BasicCategoryTheoryForComputerScientists, by BenjaminPierce, short and sweet at 100 pages including index.

This stuff is much more approachable than it may sound. It's about stuff, and arrows between stuff. If that's sounds vague, it is, because category theory abstracts to the point where it doesn't matter very much what kind of stuff nor of arrows are under discussion.

As such it is potentially relevant to everything.

See also the prolific writer John Baez, who has lots of stuff (er, articles) online about applications to physics (he's a quantum gravity researcher)...although I suppose this is unhelpful to anyone not interested in physics. Still, considering the advanced topics he writes about, he's very clear and a good teacher.

-- DougMerritt

See also:
Here's a description that's almost comprehensible, it's from DickBotting's GraphTheory page -

A category models a collection of algebras of the same type and the structure preserving mappings that connect them. They allow the definition of free objects, products and co-products in a very general form. They are a natural model to use for a data base or set of interconnected types. They can be regarded as a special kind of LabelledDirectedGraph.

Consider the quote from above: They are a natural model to use for a data base or set of interconnected types. Let's have a concrete, practical, example of their use. How about describing ParallelClassHierarchies in terms of Categories, or anything else for that matter. Just a minute, I found this -

I am reminded of a friend's account of his category theory lecture which began with, "We will now consider the class of 'stuff'." -- BillTozier

The late Robin Gandy, Emeritus Reader in Mathematical Logic, University of Oxford described CategoryTheory as "A recent development in mathematics which concentrates attention not on particular mathematical structures but on the relations between them. It has had a unifying effect in algebra and topology. Those who like to work on particular, concrete problems refer to it as 'general abstract nonsense'". (Possibly the only joke in TheNewFontanaDictionaryOfModernThought

I studied category theory. CommutingDiagrams stuck as a very useful way of describing data structures. Kind of like UML, but with a formal foundation. You can use the same notation for class diagrams and instance diagrams.

Relational implementation ideas for categories: , including ranked links so as to have kind of "fuzzy sets".
A paper on CategoryTheory applied to TuringMachines:

One on CategoryTheory and LambdaCalculus:

Or see ElementsOfBasicCategoryTheory

There is a SymbolicProgramming language called Aldor which uses Categories as part of its core ObjectModel see

Is there anything a normal everyday programmer like me can read and understand? It all reads like gibberish.

It depends on why you want to know about it. Normal everyday programmers don't need to know about it at all (I claim) for doing their work. On the other hand, if you want to really expand your mind it's one of the options. It is RealMath?, though, and must be ReadLikeMath. I've just had a glance through the first 5 pages of the Turing Machine paper mentioned above and it seems like a pretty fair introduction to what Category Theory is about. Try that one and see how you get on.

[Probably good for him/her to download Aldor above, try the examples, and write his/her own test programs. Even if the MathIsHard seeing it run in a language is fun and enables LearningByTryingSolutions.]

CategoryMath CategoryBook CategoryTheory CategorizationModels

EditText of this page (last edited January 28, 2009) or FindPage with title or text search