scholarly journals Program verification using templates over predicate abstraction

2009 ◽  
Vol 44 (6) ◽  
pp. 223-234 ◽  
Author(s):  
Saurabh Srivastava ◽  
Sumit Gulwani
2017 ◽  
Vol 18 (2) ◽  
pp. 126-166 ◽  
Author(s):  
EMANUELE DE ANGELIS ◽  
FABIO FIORAVANTI ◽  
ALBERTO PETTOROSSI ◽  
MAURIZIO PROIETTI

AbstractIt is well-known that the verification of partial correctness properties of imperative programs can be reduced to the satisfiability problem for constrained Horn clauses (CHCs). However, state-of-the-art solvers for constrained Horn clauses (or CHC solvers) based onpredicate abstractionare sometimes unable to verify satisfiability because they look for models that are definable in a given class 𝓐 of constraints, called 𝓐-definable models. We introduce a transformation technique, calledPredicate Pairing, which is able, in many interesting cases, to transform a set of clauses into an equisatisfiable set whose satisfiability can be proved by finding an 𝓐-definable model, and hence can be effectively verified by a state-of-the-art CHC solver. In particular, we prove that, under very general conditions on 𝓐, the unfold/fold transformation rules preserve the existence of an 𝓐-definable model, that is, if the original clauses have an 𝓐-definable model, then the transformed clauses have an 𝓐-definable model. The converse does not hold in general, and we provide suitable conditions under which the transformed clauses have an 𝓐-definable modelif and only ifthe original ones have an 𝓐-definable model. Then, we present a strategy, called Predicate Pairing, which guides the application of the transformation rules with the objective of deriving a set of clauses whose satisfiability problem can be solved by looking for 𝓐-definable models. The Predicate Pairing (PP) strategy introduces a new predicate defined by the conjunction of two predicates occurring in the original set of clauses, together with a conjunction of constraints. We will show through some examples that an 𝓐-definable model may exist for the new predicate even if it does not exist for its defining atomic conjuncts. We will also present some case studies showing that Predicate Pairing plays a crucial role in the verification ofrelational properties of programs, that is, properties relating two programs (such as program equivalence) or two executions of the same program (such as non-interference). Finally, we perform an experimental evaluation of the proposed techniques to assess the effectiveness of Predicate Pairing in increasing the power of CHC solving.


2018 ◽  
pp. 447-491 ◽  
Author(s):  
Ranjit Jhala ◽  
Andreas Podelski ◽  
Andrey Rybalchenko

2008 ◽  
Vol 19 (1) ◽  
pp. 27-38 ◽  
Author(s):  
Wan-Xia QU

Sign in / Sign up

Export Citation Format

Share Document