Synthesis of resource invariants for concurrent programs

Owicki and Gries have developed a proof system for conditional critical regions. In their system logically related variables accessed by more than one process are grouped together as resources, and processes are allowed access to a resource only in a critical region for that resource. Proofs of synchronization properties are constructed by devising predicates called resource invariants which describe relationships among the variables of a resource when no process is in a critical region for the resource. In constructing proofs using the system of Owicki and Gries, the programmer is required to supply the resource invariants.We show that convexity plays a key role in the derivation of strong resource invariants. We also develop methods for automatically synthesizing resource invariants. Specifically, we characterize the resource invariants of a concurrent program as least fixpoints of a functional which can be obtained from the text of the program. By using this fixpoint characterization and a widening operator which exploits our observation on the importance of convexity, good approximations may be obtained for the resource invariants of many concurrent programs.

[1]  Amir Pnueli,et al.  The temporal logic of programs , 1977, 18th Annual Symposium on Foundations of Computer Science (sfcs 1977).

[2]  Edmund M. Clarke Program invariants as fixed points , 1977, 18th Annual Symposium on Foundations of Computer Science (sfcs 1977).

[3]  Leslie Lamport,et al.  Proving the Correctness of Multiprocess Programs , 1977, IEEE Transactions on Software Engineering.

[4]  A. Nico Habermann Synchronization of communicating processes , 1971, SOSP '71.

[5]  Nicolas Halbwachs,et al.  Automatic discovery of linear restraints among variables of a program , 1978, POPL.

[6]  T. Agerwala,et al.  Complete model for representing the coordination of asynchronous processes , 1974 .

[7]  Barry K. Rosen,et al.  Correctness of Parallel Programs: The Church-Rosser Approach , 1976, Theor. Comput. Sci..

[8]  Patrick Cousot,et al.  Static determination of dynamic properties of programs , 1976 .

[9]  Lawrence Flon,et al.  Nondeterminism and the Correctness of Parallel Programs , 1977, Formal Description of Programming Concepts.

[10]  Richard J. Lipton Reduction: a new method of proving properties of systems of processes , 1975, POPL '75.