Pre-Computation of post in Predicate Abstraction
There is an alternative definition, which can be used to convert the above problem into a finite-state exploration problem. (It will be particularly useful if we consider an extension from conjunctions to disjunction of conjunctions.)
The condition
is equivalent to the validity of the formula
Fix a predicate . Consider all for which the above condition holds, define them as
Clearly, if and , then also . So, we can represent using its minimal elements . These are minimal sufficient sets of predicates that ensure that holds.
Then, we can define equivalently
The advantage of this definition is that we compute for a given predicate and command given by , and then we can efficiently compute for all abstract values by checking inclusion of finite sets.
Approximation: The set can have up to elements. To avoid this, we can restrict it to only those subsets that have at most e.g. 3 predicates.
Note that using smaller means that some will be missing, the condition will be false in some cases, and in those cases will not be included in the postcondition, so the resulting abstract element will be larger in the lattice. So the approach is still correct, just not as precise.