This paper proposes the use of constraint logic to perform model checking of imperative, infinite-state programs. We present a semantics-preserving translation from an imperative language with recursive procedures and heap-allocated mutable data structures into constraint logic. The constraint logic formulation provides a clean way to reason about the behavior and correctness of the original program. In addition, it enables the use of existing constraint logic implementations to perform bounded software model checking, using a combination of symbolic reasoning and explicit path exploration.
The verification method presented in REF is based on a semantics preserving translation from an imperative language with dynamic data structures and recursive functions into CLP.
Automatic software model checking via constraint logic
Sci. Comput. Program
Computer Science