PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
A variation of Knoop, Rüthing, and Steffen's Lazy Code Motion
ACM SIGPLAN Notices
Optimal code motion: theory and practice
ACM Transactions on Programming Languages and Systems (TOPLAS)
ACM Transactions on Programming Languages and Systems (TOPLAS)
Practical adaption of the global optimization algorithm of Morel and Renvoise
ACM Transactions on Programming Languages and Systems (TOPLAS)
Global optimization by suppression of partial redundancies
Communications of the ACM
E-path_PRE: partial redundancy elimination made easy
ACM SIGPLAN Notices
Automatically proving the correctness of compiler optimizations
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Flow logic: a multi-paradigmatic approach to static analysis
The essence of computation
Partial redundancy elimination: a simple, pragmatic, and provably correct algorithm
Science of Computer Programming
Simple relational correctness proofs for static analyses and program transformations
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A practical adoption of partial redundancy elimination
ACM SIGPLAN Notices
Automated soundness proofs for dataflow analyses and transformations via local rules
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Foundational certification of data-flow analyses
TASE '07 Proceedings of the First Joint IEEE/IFIP Symposium on Theoretical Aspects of Software Engineering
Electronic Notes in Theoretical Computer Science (ENTCS)
Type Systems for Optimizing Stack-based Code
Electronic Notes in Theoretical Computer Science (ENTCS)
Certificate translation for optimizing compilers
SAS'06 Proceedings of the 13th international conference on Static Analysis
Proof-producing program analysis
ICTAC'06 Proceedings of the Third international conference on Theoretical Aspects of Computing
Proof obligations preserving compilation
FAST'05 Proceedings of the Third international conference on Formal Aspects in Security and Trust
A fresh look at PRE as a maximum flow problem
CC'06 Proceedings of the 15th international conference on Compiler Construction
Preservation of Proof Obligations from Java to the Java Virtual Machine
IJCAR '08 Proceedings of the 4th international joint conference on Automated Reasoning
Bidirectional data-flow analyses, type-systematically
Proceedings of the 2009 ACM SIGPLAN workshop on Partial evaluation and program manipulation
An Abstract Model of Certificate Translation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
Partial redundancy elimination is a subtle optimization which performs common subexpression elimination and expression motion at the same time. In this paper, we use it as an example to promote and demonstrate the scalability of the technology of proof optimization. By this we mean automatic transformation of a given program's Hoare logic proof of functional correctness or resource usage into one of the optimized program, guided by a type-derivation representation of the result of the underlying dataflow analyses. A proof optimizer is a useful tool for the producer's side in a natural proof-carrying code scenario where programs are proved correct prior to optimizing compilation before transmission to the consumer. We present a type-systematic description of the underlying analyses and of the optimization for the While language, demonstrate that the optimization is semantically sound and improving in a formulation using type-indexed relations, and then show that these arguments can be transferred to mechanical transformations of functional correctness/resource usage proofs in Hoare logics. For the improvement part, we instrument the standard semantics and Hoare logic so that evaluations of expressions become a resource.