We show how to attack the problem of model checking a C program with recursive procedures using an abstraction that we formally
define as the composition of the Boolean and the Cartesian abstractions. It is implemented through a source-to-source transformation
into a ‘Boolean’ C program; we give an algorithm to compute the transformation with a cost that is exponential in its theoretical
worst-case complexity but feasible in practice.
On leave from Max Planck Institute, Saarbrücken, Germany.