A complete transformational toolkit for compilers
In an earlier paper, one of the present authors presented a preliminary account of an equational logic called PIM. PIM is intended to function as a 'transformational toolkit' to be used by compilers and analysis tools for imperative languages, and has been applied to such problems as program slicing, symbolic evaluation, conditional constant propagation, and dependence analysis. PIM consists of the untyped lambda calculus extended with an algebraic rewriting system that characterizes the behavior of lazy stores and generalized conditionals. A major question left open in the earlier paper was whether there existed a complete equational axiomatization of PIM's semantics. In this paper, we answer this question in the affirmative for PIM's core algebraic component, PIMt, under the assumption of certain reasonable restrictions on term formation. We systematically derive the complete PIM logic as the culmination of a sequence of increasingly powerful equational systems starting from a straightforward 'interpreter' for closed PIM terms.
|Processors (acm D.3.4), Automatic Programming (acm I.2.2), Semantics of Programming Languages (acm F.3.2)|
|Department of Computer Science [CS]|
Bergstra, J.A, Dinesh, T.B, Field, J, & Heering, J. (1996). A complete transformational toolkit for compilers. Department of Computer Science [CS]. CWI.