Side effects and aliasing can have simple axiomatic descriptions
ACM Transactions on Programming Languages and Systems (TOPLAS)
Partial evaluation and &ohgr;-completeness of algebraic specifications
Theoretical Computer Science
The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Computational semantics of term rewriting systems
Algebraic methods in semantics
Initiality, induction, and computability
Algebraic methods in semantics
Volume II: Parallel Languages on PARLE: Parallel Architectures and Languages Europe
Communications of the ACM
The IFIP TC2/WG 2.1 Working Conference on Program specification and transformation
4th Annual Symposium on Theoretical Aspects of Computer Sciences on STACS 87
On the adequacy of program dependence graphs for representing programs
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The semantics of program dependence
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
A rewriting semantics for program dependence graphs
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A syntactic theory of sequential state
Theoretical Computer Science
A sound and complete axiomatization of operational equivalence of programs with memory
Proceedings of the Fourth Annual Symposium on Logic in computer science
Tools for proving inductive equalities, relative completeness, and &ohgr;-completeness
Information and Computation
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
A program integration algorithm that accommodates semantics-preserving transformations
SDE 4 Proceedings of the fourth ACM SIGSOFT symposium on Software development environments
Handbook of theoretical computer science (vol. B)
Handbook of theoretical computer science (vol. B)
Efficiently computing static single assignment form and the control dependence graph
ACM Transactions on Programming Languages and Systems (TOPLAS)
Assignments for applicative languages
Proceedings of the 5th ACM conference on Functional programming languages and computer architecture
A Control-Flow Normalization Algorithm and its Complexity
IEEE Transactions on Software Engineering
Confluence of the lambda calculus with left-linear algebraic rewriting
Information Processing Letters
The revised report on the syntactic theories of sequential control and state
Theoretical Computer Science
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
Call by name, assignment, and the lambda calculus
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Handbook of logic in computer science (vol. 1)
Handbook of logic in computer science (vol. 2)
Which data types have &ohgr;-complete initial algebra specifications?
Theoretical Computer Science
On the adequacy of graph rewriting for simulating term rewriting
ACM Transactions on Programming Languages and Systems (TOPLAS)
Value dependence graphs: representation without taxation
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Global code motion/global value numbering
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Language Prototyping: An Algebraic Specification Approach: Vol. V
Language Prototyping: An Algebraic Specification Approach: Vol. V
Rewrite Methods for Clausal and Non-Clausal Theorem Proving
Proceedings of the 10th Colloquium on Automata, Languages and Programming
Implicit induction techniques for the verification of{\'sc Pim} -- a transformational toolkit for compilers
The Implementation of Functional Programming Languages (Prentice-Hall International Series in Computer Science)
Equations as a uniform framework for partial evaluation and abstract interpretation
ACM Computing Surveys (CSUR) - Special issue: electronic supplement to the September 1998 issue
Semantics-preserving procedure extraction
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
On sparse evaluation representations
Theoretical Computer Science
Specifying and Automatically Generating a Specialization Tool for Fortran 90
Automated Software Engineering
Rewriting of imperative programs into logical equations
Science of Computer Programming
CEAL: a C-based language for self-adjusting computation
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Renovation of the Asf+Sdf meta-environment: current state of affairs
Algebraic'97 Proceedings of the 2nd international conference on Theory and Practice of Algebraic Specifications
Hi-index | 0.00 |
PIM is an equational logic designed to function as a “transformational toolkit” for compilers and other programming tools that analyze and manipulate imperative languages. It 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 data type that characterizes the behavior of lazy stores and generalized conditionals. A graph form of PIM terms is by design closely related to several intermediate representations commonly used in optimizing compilers. In this article, we show that PIM's core algebraic component, PIMt, possesses a complete equational axiomatization (under the assumption of certain reasonable restrictions on term formation). This has the practical consequence of guaranteeing that every semantics-preserving transformation on a program representable in PIMt can be derived by application of PIMt rules. We systematically derive the complete PIMt logic as the culmination of a sequence of increasingly powerful equational systems starting from a straightforward “interpreter” for closed PIMt terms. This work is an intermediate step in a larger program to develop a set of well-founded tools for manipulation of imperative programs by compilers and other systems that perform program analysis.