Proving the Correctness of the Static Link Technique Using Evolving Algebras
Abstract:
The static link technique is used for the stack-based implementation of imperative programming languages which admit nested recursive procedure declarations. It was suggested in 1960 by Dijkstra as an extension of the stack technique for the evaluation of expressions. Its basic idea is to access global variables by tracing a static link chain to lower stack elements. Evolving algebras are a new method for the definition of operational semantics of abstract machines. Based on an appropriate stack machine, defined as an evolving algebra, and a functional description of a compiler for a sample language, we will give a complete proof of this technique. Especially, we will transform the evolving algebra for the stack machine into a more abstract one, i.e., into a new machine which is closer to the denotational semantics of the sample language.
Citations
| 153 | Logic and the challenge of computer science – Gurevich - 1988 |
| 70 | Evolving algebras. A tutorial introduction – Gurevich - 1991 |
| 66 | The WAM -- Definition and Compiler Correctness – Borger, Rosenzweig - 1995 |
| 66 | A Theory of Programming Language Semantics – Milne, Strachey - 1976 |
| 28 | Universal Algebra for Computer Scientists, volume 25 – Wechler - 1992 |
| 25 | Compiler Specification and Verification – Polak - 1981 |
| 19 | Algebraic operational semantics and Modula-2 – Gurevich, Morris - 1988 |
| 6 | Proving correctness of implementation techniques – Jones, Lucas - 1971 |
| 5 | The Block Concept and Some Possible Implementations, with Proofs of Equivalence – Henhapl, Jones - 1970 |
| 3 | Functional compiler description – Indermark - 1988 |

