4 research outputs found
Verifying Programs via Intermediate Interpretation
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
Verification of Programs via Intermediate Interpretation
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 E. De Angelis et al. (2014-2015) where verification via program transformation and intermediate interpretation was studied in the context of specialization of constraint logic programs
Generating counterexamples for model checking by transformation
Counterexamples explain why a desired temporal logic property fails to hold. The generation of
counterexamples is considered to be one of the primary advantages of model checking as a verification
technique. Furthermore, when model checking does succeed in verifying a property, there is
typically no independently checkable witness that can be used as evidence for the verified property.
Previously, we have shown how program transformation techniques can be used for the verification
of both safety and liveness properties of reactive systems. However, no counterexamples or witnesses
were generated using the described techniques. In this paper, we address this issue. In particular, we
show how the program transformation technique distillation can be used to facilitate the construction
of counterexamples and witnesses for temporal properties of reactive systems. Example systems
which are intended to model mutual exclusion are analysed using these techniques with respect to
both safety (mutual exclusion) and liveness (non-starvation), with counterexamples being generated
for those properties which do not hold