Toward compiler implementation correctness proofs
ACM Transactions on Programming Languages and Systems (TOPLAS)
A mechanically verified language implementation
Journal of Automated Reasoning
Efficiently computing static single assignment form and the control dependence graph
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
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
Model checking
Principles of Program Analysis
Principles of Program Analysis
TACAS '98 Proceedings of the 4th International Conference on Tools and Algorithms for Construction and Analysis of Systems
Proceedings of the 11th International Conference on Theorem Proving in Higher Order Logics
Construction of Verified Compiler Front-Ends with Program-Checking
PSI '99 Proceedings of the Third International Andrei Ershov Memorial Conference on Perspectives of System Informatics
Formal Verification of a Java Compiler in Isabelle
CADE-18 Proceedings of the 18th International Conference on Automated Deduction
Theoretical Computer Science - Foundations of software science and computation structures
Isabelle/HOL: a proof assistant for higher-order logic
Isabelle/HOL: a proof assistant for higher-order logic
Electronic Notes in Theoretical Computer Science (ENTCS)
Coinductive Verification of Program Optimizations Using Similarity Relations
Electronic Notes in Theoretical Computer Science (ENTCS)
Reachability analysis for annotated code
Proceedings of the 2007 conference on Specification and verification of component-based systems: 6th Joint Meeting of the European Conference on Software Engineering and the ACM SIGSOFT Symposium on the Foundations of Software Engineering
A Certifying Code Generation Phase
Electronic Notes in Theoretical Computer Science (ENTCS)
Formalizing a Framework for Dynamic Slicing of Program Dependence Graphs in Isabelle/HOL
TPHOLs '08 Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics
Translation validation of system abstractions
RV'07 Proceedings of the 7th international conference on Runtime verification
On the correctness of transformations in compiler back-ends
ISoLA'04 Proceedings of the First international conference on Leveraging Applications of Formal Methods
Hi-index | 0.00 |
Correct compilers are a vital precondition to ensure software correctness. Optimizations are the most error-prone phases in compilers. In this paper, we formally verify dead code elimination (DCE) within the theorem prover Isabelle/ HOL. DCE is a popular optimization in compilers which is typically performed on the intermediate representation. In our work, we reformulate the algorithm for DCE so that it is applicable to static single assignment (SSA) form which is a state of the art intermediate representation in modern compilers, thereby showing that DCE is significantly simpler on SSA form than on classical intermediate representations. Moreover, we formally prove our algorithm correct within the theorem prover Isabelle/HOL. Our program equivalence criterion used in this proof is based on bisimulation and, hence, captures also the case of nontermination adequately. Finally we report on our implementation of this verified DCE algorithm in the industrialstrength Scale compiler system.