Abstract
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 automatic 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.
Original language | English |
---|---|
Pages (from-to) | 619-642 |
Number of pages | 24 |
Journal | Journal of Logic and Algebraic Programming |
Volume | 78 |
Issue number | 7 |
DOIs | |
Publication status | Published - Aug 2009 |
Bibliographical note
Funding Information:This work was supported by the Estonian Science Foundation Grant No. 6940 and the EU FP6 IST integrated Project No. 15905 MOBIUS. The first author received further support from the Estonian Doctoral School in ICT, the EITSA Tiger University Plus programme and the Estonian Association of Information Technology and Telecommunications (ITL).
Other keywords
- Partial redundancy elimination
- Program proof transformation
- Proof-carrying code
- Soundness and improvement of dataflow analyses and optimizations
- Type systems