This paper describes a constraint-based invariant generation technique for proving the validity of safety assertions over the domain of predicate abstraction in an interprocedural setting. The key idea of the technique is to represent each invariant in bounded DNF form by means of boolean indicator variables, one for each predicate pred and each disjunct disj denoting whether pred is present in disj or not. The verification condition of the program is then encoded by means of a boolean formula over these boolean indicator variables such that any satisfying assignment to the formula yields the inductive invariants for proving the validity of given program assertions. This paper also describes how to use the constraint-based methodology for generating maximally-weak preconditions for safety assertions. An interesting application of maximally-weak precondition generation is to produce maximally-general counterexamples for safety assertions. We also present preliminary experimental evidence demonstrating the feasibility of this technique.

}, author = {Sumit Gulwani and Saurabh Srivastava and Ramarathnam Venkatesan}, institution = {Microsoft Research}, month = {October}, number = {MSR-TR-2008-163}, pages = {18}, publisher = {Springer-Verlag}, title = {Constraint-based Invariant Inference over Predicate Abstraction}, url = {http://research.microsoft.com/apps/pubs/default.aspx?id=70665}, year = {2008}, }