Data di Pubblicazione:
2015
Abstract:
We present a method for verifying the correctness of imperative programs which is based
on the automated transformation of their specifications. Given a program prog, we consider
a partial correctness specification of the form {phi} prog {psi}, where the assertions phi
and psi are predicates defined by a set Spec of possibly recursive Horn clauses with linear
arithmetic (LA) constraints in their premise (also called constrained Horn clauses). The
verification method consists in constructing a set PC of constrained Horn clauses whose
satisfiability implies that {phi} prog {psi} is valid. We highlight some limitations of state-of-the-art
constrained Horn clause solving methods, here called LA-solving methods, which
prove the satisfiability of the clauses by looking for linear arithmetic interpretations of
the predicates. In particular, we prove that there exist some specifications that cannot be
proved valid by any of those LA-solving methods. These specifications require the proof of
satisfiability of a set PC of constrained Horn clauses that contain nonlinear clauses (that
is, clauses with more than one atom in their premise). Then, we present a transformation,
called linearization, that converts PC into a set of linear clauses (that is, clauses with
at most one atom in their premise). We show that several specifications that could not
be proved valid by LA-solving methods, can be proved valid after linearization. We also
present a strategy for performing linearization in an automatic way and we report on some
experimental results obtained by using a preliminary implementation of our method.
Tipologia CRIS:
01.01 Articolo in rivista
Keywords:
Program verification; constrained Horn clauses; program transformation
Elenco autori:
Pettorossi, Alberto; Fioravanti, Fabio; DE ANGELIS, Emanuele; Proietti, Maurizio
Link alla scheda completa:
Pubblicato in: