reperiendi

Theories and models

Posted in Category theory, Math, Programming by Mike Stay on 2010 March 4

The simplest kind of theory is just a set $T,$ thought of as a set of concepts or Platonic ideals. We typically have some other set $S,$ thought of as the set of real things that are described by concepts. Then a model is a function $f:T \to S.$ For example, we could let $T$ = {0, 1}; this is the theory of the number “two”, since it has two elements. Whatever set we choose for $S$, the models of the theory are going to be pairs of elements of $S$. So if $S$ = the set of people, models of $T$ in $S$ are going to be pairs of people (where choosing the same person twice is allowed).

Concepts, however, are usually related to each other, whereas in a set, you can only ask if elements are the same or not. So the way a theory is usually presented is as a category $T.$ For example let $T$ be the category with two objects $E, V$ and two parallel nontrivial morphisms $\sigma, \tau:E\to V,$ and let $S$ be the category Set of sets and functions. A model is a structure-preserving map from the category $T$ to Set, i.e. a functor. Each object of $T$ gets mapped to a set; here we think of the image of $V$ as a set of vertices and the image of $E$ as a set of edges. Each morphism of $T$ gets mapped to a function; $\sigma$ and $\tau$ take an edge and produce the source vertex or target vertex, respectively. The category $T$ = Th(Graph) is the theory of a graph, and its models are all graphs.

Usually, our theories have extra structure. Consider the first example of a model, a function between sets. We can add structure to the theory; for example, we can take the set $T$ to be the ring of integers $\mathbb{Z}.$ Then a model is a structure-preserving function, a homomorphism between $T$ and $S.$ Of course, this means that $S$ has to have at least as much structure as $T.$ We could, for instance, take $S$ to be the real numbers under multiplication. Since this ring homomorphism is entirely determined by where we map 1, and we can choose any real number for its image, there would be one model for each real number; each integer $x$ would map to $a^x$ for some $a.$ Another option is to take $S = \mathbb{Z}_4,$ the integers modulo 4. There are three nonisomorphic models of $\mathbb{Z}$ in $\mathbb{Z}_4$. If we map 1 to 0, we get the trivial ring; if we map 1 to 1 or 3, we get integers modulo 4; and if we map 1 to 2, we get integers modulo 2.

Similarly, we can add structure to a category. If we take monoidal categories $T, S,$ then we can tensor objects together to get new ones. A model of such a theory is a tensor-product-preserving functor from $T$ to $S.$ See my paper “Physics, Topology, Computation, and Logic: a Rosetta Stone” with John Baez for a thorough exploration of theories that are braided monoidal closed categories and models of these.

An element of the set $\mathbb{Z}_4$ is a number, while an object of the category Th(Graph) is a set. A theory is a mathematical gadget in which we can talk about theories of one dimension lower. In Java, we say “interface” instead of “theory” and “class” instead of “model”. With Java interfaces we can describe sets of values and functions between them; it is a cartesian closed category whose objects are datatypes and whose morphisms are (roughly) programs. Models of an interface are different classes that implement that interface.

And there’s no reason to stop at categories; we can consider bicategories with structure and structure-preserving functors between these; these higher theories should let us talk about different models of computation. One model would be Turing machines, another lambda calculus, a third would be the Java Virtual Machine, a fourth Pi calculus.