Verification and Falsification of Programs with Loops using Predicate Abstraction

Publication Type:

Journal Article


Formal Aspects of Computing, Springer, Volume 22, Issue 2, p.105-124 (2010)



 Predicate abstraction is amajor abstraction technique for the verification of software.Data is abstracted by means of Boolean variables, which keep track of predicates over the data. In many cases, predicate abstraction suffers from the need for at least one predicate for each iteration of a loop construct in the program.We propose to extract looping counterexamples from the abstract model, and to parametrise the simulation instance in the number of loop iterations.We present a novel technique that speeds up the detection of long counterexamples as well as the verification of programs with loops.