Programs are Predicates
Abstract
A computer program is identified with the strongest predicate describing every relevant observation that can be made of the behaviour of a computer executing that program. A programming language is a subset of logical and mathematical notations, which is so restricted that products described in the language can be automatically implemented on a computer. The notations enjoy a number of elegant algebraic properties, which can be used for optimizing program efficiency. A specification is a predicate describing all permitted observations of a program, and it may be expressed with greatest clarity by taking advantage of the whole language of logic and mathematics. A program P meets its specification S iff [Note: Equation omitted. See the image of page 475 for this equation.]. The proof of this implication may use all the classical methods of mathematics and logic. These points are illustrated by design of a small language that includes assignments, conditionals, nondeterminism, recursion, input, output, and concurrency.
 Publication:

Philosophical Transactions of the Royal Society of London Series A
 Pub Date:
 October 1984
 DOI:
 10.1098/rsta.1984.0071
 Bibcode:
 1984RSPTA.312..475H