A Mechanically Checked Proof of a Multiprocessor Result via a Uniprocessor View

  • Authors:
  • J. Strother Moore

  • Affiliations:
  • Department of Computer Sciences, University of Texas, Austin, TX 78712, USA. moore@cs.utexas.edu

  • Venue:
  • Formal Methods in System Design
  • Year:
  • 1999

Quantified Score

Hi-index 0.01

Visualization

Abstract

We describe a mechanically checked correctness proof for a systemof n processes, each running a simple, non-blocking counter algorithm. Weprove that if the system runs longer than 5n steps, the counter isincreased. The theorem is formalized in applicative Common Lisp and provedwith the ACL2 theorem prover. The value of this paper lies not so much inthe trivial algorithm addressed as in the method used to prove it correct.The method allows one to reason accurately about the behavior of aconcurrent, multiprocess system by reasoning about the sequential computationcarried out by a selected process, against a memory that is changedexternally. Indeed, we prove general lemmas that allow shifting between themultiprocess and uniprocess views. We prove a safety property using amultiprocess view, project the property to a uniprocess view, and then provea global progress property via a local, sequential computation argument.Our uniprocessor view is a formal compositional semantics for a sharedmemory system.