Predicate abstraction is a major 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.
C.B. Jones and J.C.P. Woodcock
Supported by Microsoft Research through its European PhD scholarship programme and by the EU FP7 STREP MOGENTES (project ID
ICT-216679). This paper is an extension of [KW06]. The work was mainly carried out at ETH Zurich.