Craig's theorem

In mathematical logic, Craig's theorem (also known as Craig's trick ) states that any recursively enumerable set of well-formed formulas of a first-order language is (primitively) recursively axiomatizable. This result is not related to the well-known Craig interpolation theorem, although both results are named after the same logician, William Craig.

Recursive axiomatization
Let $$A_1,A_2,\dots$$ be an enumeration of the axioms of a recursively enumerable set $$T$$ of first-order formulas. Construct another set $$T^*$$ consisting of


 * $$\underbrace{A_i\land\dots\land A_i}_i$$

for each positive integer $$i$$. The deductive closures of $$T^*$$ and $$T$$ are thus equivalent; the proof will show that $$T^*$$ is a recursive set. A decision procedure for $$T^*$$ lends itself according to the following informal reasoning. Each member of $$T^*$$ is of the form


 * $$\underbrace{B_j\land\dots\land B_j}_j.$$

Since each formula has finite length, it is checkable whether or not it is of the said form. If it is of the said form and consists of $$j$$ conjuncts, it is in $$T^*$$ if the (reoccurring) conjunct is $$A_j$$; otherwise it is not in $$T^*$$. Again, it is checkable whether the conjunct is in fact $$A_n$$ by going through the enumeration of the axioms of $$T$$ and then checking symbol-for-symbol whether the expressions are identical.

Primitive recursive axiomatizations
The proof above shows that for each recursively enumerable set of axioms there is a recursive set of axioms with the same deductive closure. A set of axioms is primitive recursive if there is a primitive recursive function that decides membership in the set. To obtain a primitive recursive axiomatization, instead of replacing a formula $$A_i$$ with


 * $$\underbrace{A_i\land\dots\land A_i}_i$$

one instead replaces it with


 * $$\underbrace{A_i\land\dots\land A_i}_{f(i)}$$ (*)

where $$f$$ is a function that, given $$i$$, returns a computation history showing that $$A_i$$ is in the original recursively enumerable set of axioms. It is possible for a primitive recursive function to parse an expression of form (*) to obtain $$A_i$$ and $$j$$. Then, because Kleene's T predicate is primitive recursive, it is possible for a primitive recursive function to verify that $$j$$ is indeed a computation history as required.

Philosophical implications
If $$T$$ is a recursively axiomatizable theory and we divide its predicates into two disjoint sets $$V_A$$ and $$V_B$$, then those theorems of $$T$$ that are in the vocabulary $$V_A$$ are recursively enumerable, and hence, based on Craig's theorem, axiomatizable. Carl G. Hempel argued based on this that since all science's predictions are in the vocabulary of observation terms, the theoretical vocabulary of science is in principle eliminable. He himself raised two objections to this argument: 1) the new axioms of science are practically unmanageable, and 2) science uses inductive reasoning and eliminating theoretical terms may alter the inductive relations between observational sentences. Hilary Putnam argues that this argument is based on a misconception that the sole aim of science is successful prediction. He proposes that the main reason we need theoretical terms is that we wish to talk about theoretical entities (such as viruses, radio stars, and elementary particles).