Automatic verification of finite-state concurrent systems using temporal logic specifications
ACM Transactions on Programming Languages and Systems (TOPLAS)
Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Automatic generation of global optimizers
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
The formal semantics of programming languages: an introduction
The formal semantics of programming languages: an introduction
Generating data flow analysis algorithms from modal specifications
TACS'91 Selected papers of the conference on Theoretical aspects of computer software
Optimal code motion: theory and practice
ACM Transactions on Programming Languages and Systems (TOPLAS)
Abstract interpretation: a semantics-based tool for program analysis
Handbook of logic in computer science (vol. 4)
Lightweight closure conversion
ACM Transactions on Programming Languages and Systems (TOPLAS)
An approach for exploring code improving transformations
ACM Transactions on Programming Languages and Systems (TOPLAS)
Data flow analysis is model checking of abstract interpretations
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Advanced compiler design and implementation
Advanced compiler design and implementation
Building program optimizers with rewriting strategies
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Systematic design of program transformation frameworks by abstract interpretation
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Composing dataflow analyses and transformations
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proving correctness of compiler optimizations by temporal logic
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Semantics-Directed Compiler Generation: Proceedings
Semantics-Directed Compiler Generation: Proceedings
Flow Analysis of Computer Programs
Flow Analysis of Computer Programs
Principles of Program Analysis
Principles of Program Analysis
Abstract Interpretation of Declarative Languages
Abstract Interpretation of Declarative Languages
Program Flow Analysis: Theory and Application
Program Flow Analysis: Theory and Application
A Theory of Programming Language Semantics
A Theory of Programming Language Semantics
Data Flow Analysis as Model Checking
TACS '91 Proceedings of the International Conference on Theoretical Aspects of Computer Software
Computation Tree Logic CTL* and Path Quantifiers in the Monadic Theory of the Binary Tree
ICALP '87 Proceedings of the 14th International Colloquium, on Automata, Languages and Programming
CONCUR '95 Proceedings of the 6th International Conference on Concurrency Theory
On the Relation of Programs and Computations to Models of Temporal Logic
Temporal Logic in Specification
How to Uniformly Specify Program Analysis and Transformation with Graph Rewrite Systems
CC '96 Proceedings of the 6th International Conference on Compiler Construction
LICS '95 Proceedings of the 10th Annual IEEE Symposium on Logic in Computer Science
A temporal logic for reasoning about partially ordered computations (Extended Abstract)
PODC '84 Proceedings of the third annual ACM symposium on Principles of distributed computing
A type system equivalent to static single assignment
Proceedings of the 8th ACM SIGPLAN international conference on Principles and practice of declarative programming
Extracting Program Logics From Abstract Interpretations Defined by Logical Relations
Electronic Notes in Theoretical Computer Science (ENTCS)
Using Verified Data-Flow Analysis-based Optimizations in Attribute Grammars
Electronic Notes in Theoretical Computer Science (ENTCS)
Generating Java Compiler Optimizers Using Bidirectional CTL
Electronic Notes in Theoretical Computer Science (ENTCS)
Program transformations using temporal logic side conditions
ACM Transactions on Programming Languages and Systems (TOPLAS)
A higher-order strategy for eliminating common subexpressions
Computer Languages, Systems and Structures
Towards preserving model coverage and structural code coverage
EURASIP Journal on Embedded Systems - Challenges on complexity and connectivity in embedded systems
A declarative framework for analysis and optimization
CC'07 Proceedings of the 16th international conference on Compiler construction
The semantics of "semantic patches" in Coccinelle: program transformation for the working programmer
APLAS'07 Proceedings of the 5th Asian conference on Programming languages and systems
CTL as an intermediate language
VMCAI'08 Proceedings of the 9th international conference on Verification, model checking, and abstract interpretation
On the correctness of transformations in compiler back-ends
ISoLA'04 Proceedings of the First international conference on Leveraging Applications of Formal Methods
Proving the correctness of unfold/fold program transformations using bisimulation
PSI'11 Proceedings of the 8th international conference on Perspectives of System Informatics
TSL: A System for Generating Abstract Interpreters and its Application to Machine-Code Analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
Rewrite rules with side conditions can elegantly express many classical compiler optimizations for imperative programming languages. In this paper, programs are written in an intermediate language and transformation-enabling side conditions are specified in a temporal logic suitable for describing program data flow.The purpose of this paper is to show how such transformations may be proven correct. Our methodology is illustrated by three familiar optimizations: dead code elimination, constant folding, and code motion. A transformation is correct if whenever it can be applied to a program, the original and transformed programs are semantically equivalent, i.e., they compute the same input-output function. The proofs of semantic equivalence inductively show that a transformation-specific bisimulation relation holds between the original and transformed program computations.