Verification and falsification of programs with loops using predicate abstraction

Daniel Kroening, Georg Weissenbacher
2009 Formal Aspects of Computing  
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
more » ... ue that speeds up the detection of long counterexamples as well as the verification of programs with loops.
doi:10.1007/s00165-009-0110-2 fatcat:wwd3wjrylbb6vceuyavmythcv4