Sharing Ghost Variables in a Collection of Abstract Domains


We propose a framework in which we share ghost variables across a collection of abstract domains allowing precise proofs of complex properties.In abstract interpretation, it is often necessary to be able to express complex properties while doing a precise analysis. A way to achieve that is to combine a collection of domains, each handling some kind of properties, using a reduced product. Separating domains allows an easier and more modular implementation, and eases soundness and termination proofs. This way, we can add a domain for any kind of property that is interesting. The reduced product, or an approximation of it, is in charge of refining abstract states, making the analysis precise.In program verification, ghost variables can be used to ease proofs of properties by storing intermediate values that do not appear directly in the execution.We propose a reduced product of abstract domains that allows domains to use ghost variables to ease the representation of their internal state. Domains must be totally agnostic with respect to other existing domains. In particular the handling of ghost variables must be entirely decentralized while still ensuring soundness and termination of the analysis.

Verification, Model Checking, and Abstract Interpretation