Publication Date:
2015
abstract:
We present a method for automatically generating verification conditions
for a class of imperative programs and safety properties. Our
method is parametric with respect to the semantics of the imperative
programming language, as it specializes, by using unfold/fold
transformation rules, a Horn clause interpreter that encodes that semantics.
We define a multi-step operational semantics for a fragment of
the C language and compare the verification conditions obtained
by using this semantics with those obtained by using a more traditional
small-step semantics. The flexibility of the approach is further
demonstrated by showing that it is possible to easily take into
account alternative operational semantics definitions for modeling
new language features. Finally, we provide an experimental evaluation
of the method by generating verification conditions using the
multi-step and the small-step semantics for a few hundreds of programs
taken from various publicly available benchmarks, and by
checking the satisfiability of these verification conditions by using
state-of-the-art Horn clause solvers. These experiments show that
automated verification of programs from a formal definition of the
operational semantics is indeed feasible in practice.
Iris type:
04.01 Contributo in Atti di convegno
Keywords:
Program verification; constraint logic programming; program tr
List of contributors:
Pettorossi, Alberto; Fioravanti, Fabio; DE ANGELIS, Emanuele; Proietti, Maurizio
Book title:
Proceedings of the 17th International Symposium on Principles and Practice of Declarative Programming