Publication Date:
2014
abstract:
We present a method for verifying properties of imperative programs by using techniques
based on the specialization of constraint logic programs (CLP). We consider a class of
imperative programs with integer variables and we focus our attention on safety properties,
stating that no error configuration can be reached from any initial configuration. We
introduce a CLP program I that encodes the interpreter of the language and defines
a predicate unsafe equivalent to the negation of the safety property to be verified.
Then, we specialize the CLP program I with respect to the given imperative program
and the given initial and error configurations, with the objective of deriving a new
CLP program I-sp that either contains the fact unsafe (and in this case the imperative
program is proved unsafe) or contains no clauses with head unsafe (and in this case the
imperative program is proved safe). If I-sp enjoys neither of these properties, we iterate the
specialization process with the objective of deriving a CLP program where we can prove
unsafety or safety. During the various specializations we may apply different strategies
for propagating information (either propagating forward from an initial configuration to
an error configuration, or propagating backward from an error configuration to an initial
configuration) and different operators (such as the widening and the convex hull operators)
for generalizing predicate definitions. Each specialization step is guaranteed to terminate,
but due to the undecidability of program safety, the iterated specialization process may
not terminate. By an experimental evaluation carried out on a significant set of examples
taken from the literature, we show that our method improves the precision of program
verification with respect to state-of-the-art software model checkers.
Iris type:
01.01 Articolo in rivista
Keywords:
Software Verification; Constraint Logic Programming; Program Specialization
List of contributors:
Fioravanti, Fabio; DE ANGELIS, Emanuele; Pettorossi, Alberto; Proietti, Maurizio
Published in: