A computational logic handbook
A computational logic handbook
Parallel program design: a foundation
Parallel program design: a foundation
Common LISP: the language (2nd ed.)
Common LISP: the language (2nd ed.)
ACM Transactions on Programming Languages and Systems (TOPLAS)
Functional instantiation in first-order logic
Artificial intelligence and mathematical theory of computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
An Industrial Strength Theorem Prover for a Logic Based on Common Lisp
IEEE Transactions on Software Engineering
Fast, long-lived renaming improved and simplified
Science of Computer Programming
A Mechanically Checked Proof of the AMD5K86TM Floating-Point Division Program
IEEE Transactions on Computers
Concurrent reading and writing
Communications of the ACM
A Mechanically Checked Proof of Correctness of the AMD K5 Floating Point Square Root Microcode
Formal Methods in System Design
ACL2 Theorems About Commercial Microprocessors
FMCAD '96 Proceedings of the First International Conference on Formal Methods in Computer-Aided Design
Transforming the Theorem Prover into a Digital Design Tool: From Concept Car to Off-Road Vehicle
CAV '98 Proceedings of the 10th International Conference on Computer Aided Verification
Processor Verification with Precise Exeptions and Speculative Execution
CAV '98 Proceedings of the 10th International Conference on Computer Aided Verification
ACM Transactions on Programming Languages and Systems (TOPLAS)
Towards a mechanically checked theory of computation: the ACL2 project
Logic-based artificial intelligence
Induction-Oriented Formal Verification in Symmetric Interconnection Networks
CHARME '01 Proceedings of the 11th IFIP WG 10.5 Advanced Research Working Conference on Correct Hardware Design and Verification Methods
Proving that non-blocking algorithms don't block
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proving stabilization of biological systems
VMCAI'11 Proceedings of the 12th international conference on Verification, model checking, and abstract interpretation
Hi-index | 0.01 |
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.