1 research outputs found
Different Maps for Different Uses. A Program Transformation for Intermediate Verification Languages
In theorem prover or SMT solver based verification, the program to be
verified is often given in an intermediate verification language such as
Boogie, Why, or CHC. This setting raises new challenges. We investigate a
preprocessing step which takes the similar role that alias analysis plays in
verification, except that now, a (mathematical) map is used to model the memory
or a data object of type array. We present a program transformation that takes
a program P to an equivalent program P' such that, by verifying P' instead of
P, we can reduce the burden of the exponential explosion in the number of case
splits. Here, the case splits are according to whether two statements using the
same map variable are independent or not; if they are independent, we might as
well employ two different map variables and thus remove the need for a case
split (this is the idea behind the program transformation). We have implemented
the program transformation and show that, in an ideal case, we can avoid the
exponential explosion