A Lambda-Calculus Model of Programming Languages - II. Jumps and Procedures

The correspondence between programming languages and the lambda-calculus presented in Part I of the paper is extended here to include iteration statements, jumps, and procedures. Programs containing loops are represented by lambda-expressionswhose components are specified recursively by means of systems of simultaneous conversion relations. The representation of call-by-name and side-effects in a program is accomplished without any resort to the concepts of memory and address by making use of a number of variables in addition to those declared by the programs; with the aid of these additional variables, the parameter linkage operations can be simulated by pure substitution. The applicability of the model to the problems of proving program correctness and equivalence is demonstrated by means of examples.