Verifying Programs via Intermediate Interpretation
Alexei P. Lisitsa, Andrei P. Nemytykh

TL;DR
This paper presents a novel method for program verification using supercompilation of interpreters, enabling the proof of safety properties in functional programs modeling cache coherence protocols.
Contribution
It introduces a verification approach via intermediate interpretation and supercompilation, extending previous methods to functional programs and comparing with direct supercompilation techniques.
Findings
Successfully proved safety properties of cache coherence protocols
Demonstrated advantages over direct supercompilation verification
Extended verification techniques to functional programming models
Abstract
We explore an approach to verification of programs via program transformation applied to an interpreter of a programming language. A specialization technique known as Turchin's supercompilation is used to specialize some interpreters with respect to the program models. We show that several safety properties of functional programs modeling a class of cache coherence protocols can be proved by a supercompiler and compare the results with our earlier work on direct verification via supercompilation not using intermediate interpretation. Our approach was in part inspired by an earlier work by De E. Angelis et al. (2014-2015) where verification via program transformation and intermediate interpretation was studied in the context of specialization of constraint logic programs.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Testing and Debugging Techniques · Formal Methods in Verification · Logic, programming, and type systems
