SEJan 7, 2019

Different Maps for Different Uses. A Program Transformation for Intermediate Verification Languages

arXiv:1901.01915v1
Originality Incremental advance
AI Analysis

This work addresses a specific bottleneck in theorem prover or SMT solver-based verification for developers using intermediate verification languages, offering an incremental improvement.

The paper tackles the challenge of exponential case splits in verification of programs using intermediate verification languages by introducing a program transformation that replaces shared map variables with separate ones when statements are independent, and demonstrates that this can avoid exponential explosion in an ideal case.

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.

Foundations

The foundational work for this paper's niche, ranked by how specifically the neighbourhood builds on it — not by global fame.

Your Notes