Proceedings of the 29th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages 2002
DOI: 10.1145/503272.503299
|View full text |Cite
|
Sign up to set email alerts
|

Proving correctness of compiler optimizations by temporal logic

Abstract: Many classical compiler optimizations can be elegantly expressed using rewrite rules of form: I =⇒ I if φ, where I, I are intermediate language instructions and φ is a property expressed in a temporal logic suitable for describing program data flow. Its reading: If the current program π contains an instruction of form I at some control point p, and if flow condition φ is satisfied at p, then replace I by I .The purpose of this paper is to show how such transformations may be proven correct. Our methodology is … Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
4
1

Citation Types

0
13
0

Year Published

2003
2003
2013
2013

Publication Types

Select...
4
2
2

Relationship

0
8

Authors

Journals

citations
Cited by 63 publications
(13 citation statements)
references
References 20 publications
0
13
0
Order By: Relevance
“…Human-assisted correctness checking of optimizations. A significant amount of work has been done on manually proving optimizations correct, including abstract interpretation [3,4], the work on the VLISP compiler [7], Kleene algebra with tests [10], manual proofs of correctness for optimizations expressed in temporal logic [25,13], and manual proofs of correctness based on partial equivalence relations [1]. Analyses and transformations have also been proven correct mechanically, but not automatically: the soundness proof is performed with an interactive theorem prover that requires guidance from the user.…”
Section: Related Workmentioning
confidence: 99%
See 1 more Smart Citation
“…Human-assisted correctness checking of optimizations. A significant amount of work has been done on manually proving optimizations correct, including abstract interpretation [3,4], the work on the VLISP compiler [7], Kleene algebra with tests [10], manual proofs of correctness for optimizations expressed in temporal logic [25,13], and manual proofs of correctness based on partial equivalence relations [1]. Analyses and transformations have also been proven correct mechanically, but not automatically: the soundness proof is performed with an interactive theorem prover that requires guidance from the user.…”
Section: Related Workmentioning
confidence: 99%
“…The idea of analyzing optimizations written in a specialized language was introduced by Whitfield and Soffa with the Gospel language [29]. Many other frameworks and languages have been proposed for specifying dataflow analyses and transformations, including Sharlit [26], System-Z [30], languages based on regular path queries [24], and temporal logic [25,13]. None of these approaches addresses automated correctness checking of the specified optimizations.…”
Section: Related Workmentioning
confidence: 99%
“…The idea to achieve that flexibility via a form of logic programming augmented with path expressions originated in our own work [6,20]. A separate branch of research, instigated by Lacey, is the formal verification of compiler optimisations that are specified in this style [19]. Indeed, Lerner et al have demonstrated how to automate such proofs [21,22].…”
Section: Related Workmentioning
confidence: 99%
“…Lacey, et.al. [21] formalized program optimization as rewriting systems with temporal logic side conditions (described in CTL-FV) and shows that CTL-FV plays a crucial role in the proofs of correctness of classical optimizations. Instead of temporal logic, de Moor, et.al.…”
Section: Related Workmentioning
confidence: 99%
“…The definition, given in Figure 12, is similar to that in [21], except for the additional "while" construct. For simplicity, this language has no exceptions or procedures.…”
Section: Live Variables Detection For Spmentioning
confidence: 99%