archives

Linear types, anyone?

The following is from von Neumann's early account of self-reproducing automata ("Theory and Organization of Complicated Automata", 1949):

The general constructive automaton A produces only X when a complete description of X is furnished it, and on any reasonable view of what constitutes complexity, this description of X is as complex as X itself. The general copying automaton B produces two copies of \phi(X) [\phi(X) is the chain of “rigid elements” which represents X], but the juxtaposition of two copies of the same thing is in no sense of higher order than the thing itself… Now we can do the following thing. We can add a certain amount of control equipment C to the automaton A + B. The automaton C dominates both A and B, actuating them alternately according to the following pattern. The control C will first cause B to make two copies of \phi(X). The control C will next cause A to construct X at the price of destroying one copy of \phi(X). Finally, the control C will tie X and the remaining copy of \phi(X) together and cut them loose from the complex (A + B + C). At the end the entity X + \phi(X) has been produced. Now choose the aggregate (A + B + C) for X. The automaton (A + B + C) + \phi(A + B +C) will produce (A + B + C) + \phi(A + B +C). Hence auto-reproduction has taken place.

Arthur Burks who brought von Neumann's lectures to print goes on to explain that the final result is two automata (A + B + C) and (A + B + C) + \phi(A + B +C), and that if B were to copy the description thrice, the process would start with one copy of (A + B + C) + \phi(A + B + C) and terminate with two copies of this automaton.

von Neumann himself is quick to note that the procedure he outlines is not circular: "It is true that I argued with a variable X first, describing what C is supposed to do, and then put something which involved C for X. But I defined A and B exactly, before I even mentioned this particular X, and I defined C in terms which apply to any X."

Can you formalize von Neumann's construction so that the two arguments that follow will be derivable (provable) from the description of the construction?