A Note on Synthesis of Inductive Assertions

One of the principal impediments to widespread use of automated program verification methodology is due to the user burden of creating appropriate inductive assertions. In this paper, we investigate a class of programs for which such inductive assertions can be mechanically generated from Input-output specifications. This class of programs, called accumulating programs, are iterative realizations of problems in which the required output information is accumulated during successive passes over the input data structures. Obtaining invariant assertions for such programs is shown to be equivalent to the problem of generalizations of specifications to that over an extended closed data domain. For this purpose, a set of basis data elements are to be conceived of as generating the extended domain. An arbitary data element would thus be considered as uniquely decomposable into a sequence of basis elements. The structural relations between the components of a data element are used to extend program behavior and thus obtain the desired invariant.

[1]  Zohar Manna,et al.  The automatic synthesis of recursive programs , 1977, Artificial Intelligence and Programming Languages.

[2]  Phillip D. Summers,et al.  A Methodology for LISP Program Construction from Examples , 1977, J. ACM.

[3]  Jayadev Misra,et al.  Some classes of naturally provable programs , 1976, ICSE '76.

[4]  Raymond T. Yeh,et al.  Strong verification of programs , 1975, IEEE Transactions on Software Engineering.

[5]  James C. King,et al.  Symbolic execution and program testing , 1976, CACM.

[6]  James H. Morris,et al.  Subgoal induction , 1977, CACM.

[7]  Jayadev Misra,et al.  Proving loop programs , 1975, IEEE Transactions on Software Engineering.

[8]  Robert S. Boyer,et al.  Proving Theorems about LISP Functions , 1973, JACM.

[9]  Zohar Manna,et al.  Logical analysis of programs , 1976, CACM.

[10]  Ben Wegbreit Complexity of Synthesizing Inductive Assertions , 1977, JACM.

[11]  Steven M. German,et al.  A synthesizer of inductive assertions , 1975, IEEE Transactions on Software Engineering.

[12]  Zohar Manna,et al.  The automatic synthesis of recursive programs , 1977, SIGART Newsl..

[13]  Ben Wegbreit,et al.  The synthesis of loop predicates , 1974, CACM.

[14]  John Darlington,et al.  A Transformation System for Developing Recursive Programs , 1977, J. ACM.