The Wikipedia page on LOOP [1] contains an excellent overview of the very simple language that is the subject of Dennis' thesis, and that turns out to be equivalent in expressive power to primitive recursive functions.
Curiously, one of the instructions in Dennis' original formualtion, namely the assignment X = Y of the value in one register to another, turns out to be redundant, as it it also achieved by
X = 0
LOOP Y
X = X + 1
END
Btw, this example shows the entire repertoire of instructions available in LOOP, namely set to 0, increment, sequential composition, and looping. The method of obtaining a predecessor function
TMP = 0
LOOP X
Y = TMP
TMP = TMP + 1
END
reminds me of a similar solution for the Church numerals in lambda calculus [2].
Curiously, one of the instructions in Dennis' original formualtion, namely the assignment X = Y of the value in one register to another, turns out to be redundant, as it it also achieved by
Btw, this example shows the entire repertoire of instructions available in LOOP, namely set to 0, increment, sequential composition, and looping. The method of obtaining a predecessor function reminds me of a similar solution for the Church numerals in lambda calculus [2].[1] https://en.wikipedia.org/wiki/LOOP_(programming_language)
[2] https://en.wikipedia.org/wiki/Church_encoding#Derivation_of_...