Abstract: We introduce an abstraction-based model checking method which relies on refinement of an under-approximation of the feasible behaviors of the system under analysis. The method preserves errors to safety properties, since all analyzed behaviors are feasible by definition. The method does not require an abstract transition relation to be generated, but instead executes the concrete transitions while storing abstract versions of the concrete states, as specified by a set of abstraction predicates. Two forms of refinement will be presented: based on weakest preconditions and symbolic forward execution. We will show how the technique complements traditional counter-example driven abstraction refinement.
In the second part of the presentation we discuss a lightweight variant of the method that can be used to do efficient testing. In particular we show a number of novel abstraction mappings that uses symbolic execution (including subsumption checking between states represented as symbolic constraints) that can be used to efficiently do test input generation for manipulating red-black trees in Java. We also compare this approach with a number of other test input generation strategies (classic model checking, random test selection, etc.).
![]() |
Maintainer | [ Home > Seminar ] |
Last modified: Tue Mar 1 13:27:52 EST 2005 |