Generation of verification conditions for Abadi and Leino’s Logic of Objects
Francis Tang, Martin R. Hofmann · 1910
We consider the problem of verification condition generation for Abadi and Leino’s program logic (AL) for objects. We provide an algorithm which to a given judgement J in AL computes a formula φ in first-order fixpoint logic such that φ is equivalent to the existence of a proof of J in AL. Moreover, we show that if J is sufficiently annotated, e.g., with loop invariants, then φ will be purely first-order. The verification condition φ summarises the mathematical content of a correctness proof in AL while hiding all syntactic detail. We hope that in the presence of appropriate lemmas it will in many cases be possible to delegate the task of proving φ to a semi-automatic theorem prover so that program verification in AL would essentially amount to formulating appropriate invariants and lemmas. An object-oriented version of Euclid’s algorithm looks promising in this direction. The steps of the algorithm are as follows: (1) infer a typing derivation D of J. (2) TurnD into a skeleton proof of J which contains predicate variables in place of actual assertions. (3) Conjoin all logical side-conditions appearing in this skeleton and existentially quantify all predicate variables. The resulting second-order formula is equivalent to the existence of a proof. (4) Apply simplification rules to obtain the desired formula in fixpoint logic or perhaps in pure first-order logic. 1.