Abstract
We describe a mechanically checked correctness proof for a system of n processes, each running a simple, non-blocking counter algorithm. We prove that if the system runs longer than 5n steps, the counter is increased. The theorem is formalized in applicative Common Lisp and proved with the ACL2 theorem prover. The value of this paper lies not so much in the trivial algorithm addressed as in the method used to prove it correct. The method allows one to reason accurately about the behavior of a concurrent, multiprocess system by reasoning about the sequential computation carried out by a selected process, against a memory that is changed externally. Indeed, we prove general lemmas that allow shifting between the multiprocess and uniprocess views. We prove a safety property using a multiprocess view, project the property to a uniprocess view, and then prove a global progress property via a local, sequential computation argument. Our uniprocessor view is a formal compositional semantics for a shared memory system.
Similar content being viewed by others
References
R.S. Boyer, D. Goldschlag, M. Kaufmann, and J.S. Moore, “Functional instantiation in first order logic,” Artificial Intelligence and Mathematical Theory of Computation: Papers in Honor of John McCarthy, Academic Press, pp. 7–26, 1991.
R.S. Boyer and J.S. Moore, A Computational Logic, Academic Press, New York, 1979.
R.S. Boyer and J.S. Moore, A Computational Logic Handbook, 2nd edition, Academic Press, London, 1997.
B. Brock, M. Kaufmann, and J.S. Moore, “ACL2 theorems about commercial microprocessors,” in M. Srivas and A. Camilleri (Eds.), Proceedings of Formal Methods in Computer-Aided Design (FMCAD'96), Springer-Verlag, pp. 275–293, 1996.
K.M. Chandy and J. Misra, Parallel Program Design: A Foundation, Addison Wesley, MA, 1988.
D.M. Goldschlag, “Mechanizing unity,” in M. Broy and C.B. Jones (Eds.), Programming Concepts and Methods, North Holland, Amsterdam, 1990.
D. Hardin, M. Wilding, and D. Hardin, “Transforming the theorem prover into a digital design tool: From concept car to off-road vehicle,” in A.J. Hu and M.Y. Vardi (Eds.), Computer Aided Verification: 10th International Conference, CAV '98, LNCS 1427, Springer-Verlag, 1998.
M. Herlihy, “Wait-free synchronization,” ACM Trans. Prog. Lang. and Sys. Vol. II,No. 1, pp. 124–149, Jan. 1991.
M. Kaufmann and J.S. Moore, “An industrial strength theorem prover for a logic based on common lisp,” IEEE Transactions on Software Engineering, Vol. 23,No. 4, pp. 203–213, April 1997.
M. Kaufmann and J. Strother Moore, “Structured theory development for a mechanized logic,” URL: http://www.cs.utexas.edu/users/moore/acl2/reports/km98.ps.
L. Lamport, “Concurrent reading and writing,” Commun. ACM, Vol. 20,No. 11, pp. 806–811, Nov. 1977.
L. Lamport, “The temporal logic of actions,” TOPLAS, Vol. 16,No. 3, pp. 872–923, May 1994.
M. Moir, “Fast, long-lived renaming improved and simplified,” Science of Computer Programming. Vol. 30,No. 3, pp. 287–308, March 1998. URL: http://www.cs.pitt.edu/~moir/Papers/moir-scp97.ps.
J. S. Moore, T. Lynch, and M. Kaufmann, “A mechanically checked proof of the correctness of the kernel of the AMD5K 86 floating point division algorithm,” IEEE Trans. Comp., Vol. 47,No. 9, Sept. 1998.
D. Russinoff, “A mechanically checked proof of correctness of the AMD5K 86 floating-point square root microcode,” Formal Methods in System Design, Special Issue on Arithmetic Circuits, 1997.
D.M. Russinoff, “A mechanically checked proof of IEEE compliance of the floating point multiplication, division, and square root algorithms of the AMD-K7™ Processor,” URL http://www.onr.com/user/-russ/david/k7-div-sqrt.html.
J. Sawada and W. Hunt, Jr., “Processor verification with precise exceptions and speculative execution,” Computer Aided Verification 1998, Lecture Notes in Computer Science, Springer Verlag, 1998.
G.L. Steele, Jr., Common Lisp The Language, 2nd edition, Digital Press, 30 North Avenue, Burlington, MA 01803, 1990.
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Moore, J.S. A Mechanically Checked Proof of a Multiprocessor Result via a Uniprocessor View. Formal Methods in System Design 14, 213–228 (1999). https://doi.org/10.1023/A:1008624904634
Issue Date:
DOI: https://doi.org/10.1023/A:1008624904634