The drinking philosophers problem
ACM Transactions on Programming Languages and Systems (TOPLAS) - Lecture notes in computer science Vol. 174
A computational logic handbook
A computational logic handbook
Parallel program design: a foundation
Parallel program design: a foundation
Mechanically Verifying Concurrent Programs with the Boyer-Moore Prove
IEEE Transactions on Software Engineering
The existence of refinement mappings
Theoretical Computer Science
Functional instantiation in first-order logic
Artificial intelligence and mathematical theory of computation
Portable, unobtrusive garbage collection for multiprocessor systems
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Formal hardware verification methods: a survey
Formal Methods in System Design - Special issue on computer-aided verification: general methods
ACM Transactions on Programming Languages and Systems (TOPLAS)
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Temporal verification of reactive systems: safety
Temporal verification of reactive systems: safety
Distributed snapshots: determining global states of distributed systems
ACM Transactions on Computer Systems (TOCS)
Liveness-preserving simulation relations
Proceedings of the eighteenth annual ACM symposium on Principles of distributed computing
Formal verification in hardware design: a survey
ACM Transactions on Design Automation of Electronic Systems (TODAES)
Scheduling multithreaded computations by work stealing
Journal of the ACM (JACM)
ACM Transactions on Computational Logic (TOCL)
A new solution of Dijkstra's concurrent programming problem
Communications of the ACM
Automatically validating temporal safety properties of interfaces
SPIN '01 Proceedings of the 8th international SPIN workshop on Model checking of software
A discipline of multiprogramming: programming theory for distributed applications
A discipline of multiprogramming: programming theory for distributed applications
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
Distributed Algorithms
Symbolic Model Checking
Communication and Concurrency
Computer-Aided Reasoning: An Approach
Computer-Aided Reasoning: An Approach
Automated Software Engineering
Timing UDP: Mechanized Semantics for Sockets, Threads, and Failures
ESOP '02 Proceedings of the 11th European Symposium on Programming Languages and Systems
Automatic Deductive Verification with Invisible Invariants
TACAS 2001 Proceedings of the 7th International Conference on Tools and Algorithms for the Construction and Analysis of Systems
Verifying a Garbage Collection Algorithm
Proceedings of the 11th International Conference on Theorem Proving in Higher Order Logics
Mechanical Verification of a Generalized Protocol for Byzantine Fault Tolerant Clock Synchronization
Proceedings of the Second International Symposium on Formal Techniques in Real-Time and Fault-Tolerant Systems
A Simple Characterization of Stuttering Bisimulation
Proceedings of the 17th Conference on Foundations of Software Technology and Theoretical Computer Science
Concurrency and Automata on Infinite Sequences
Proceedings of the 5th GI-Conference on Theoretical Computer Science
Generalizing Abadi & Lamport's Method to Solve a Problem Posed by A. Pnueli
FME '93 Proceedings of the First International Symposium of Formal Methods Europe on Industrial-Strength Formal Methods
Experiments in Theorem Proving and Model Checking for Protocol Verification
FME '96 Proceedings of the Third International Symposium of Formal Methods Europe on Industrial Benefit and Advances in Formal Methods
Trace Table Based Approach for Pipeline Microprocessor Verification
CAV '97 Proceedings of the 9th International Conference on Computer Aided Verification
Construction of Abstract State Graphs with PVS
CAV '97 Proceedings of the 9th International Conference on Computer Aided Verification
Linking Theorem Proving and Model-Checking with Well-Founded Bisimulation
CAV '99 Proceedings of the 11th International Conference on Computer Aided Verification
Syntactic Program Transformations for Automatic Abstraction
CAV '00 Proceedings of the 12th International Conference on Computer Aided Verification
VIS: A System for Verification and Synthesis
CAV '96 Proceedings of the 8th International Conference on Computer Aided Verification
Eternity Variables to Simulate Specifications
MPC '02 Proceedings of the 6th International Conference on Mathematics of Program Construction
ICCD '97 Proceedings of the 1997 International Conference on Computer Design (ICCD '97)
Verification of a Concurrent Deque Implementation
Verification of a Concurrent Deque Implementation
Application-level checkpointing for shared memory programs
ASPLOS XI Proceedings of the 11th international conference on Architectural support for programming languages and operating systems
Proving refinement using transduction
Distributed Computing - Special issue: Verification of lazy caching
Specifying and verifying systems with TLA+
EW 10 Proceedings of the 10th workshop on ACM SIGOPS European workshop
An Integration of HOL and ACL2
FMCAD '06 Proceedings of the Formal Methods in Computer Aided Design
A semantics of communicating reactive objects with timing
International Journal on Software Tools for Technology Transfer (STTT) - Special Section on Specification and Validation of Models of Real Time and Embedded Systems with UML
Combining Theorem Proving with Model Checking through Predicate Abstraction
IEEE Design & Test
Modeling in Event-B: System and Software Engineering
Modeling in Event-B: System and Software Engineering
Verifying safety properties with the TLA+ proof system
IJCAR'10 Proceedings of the 5th international conference on Automated Reasoning
Hi-index | 0.00 |
We present a framework for the specification and verification of reactive concurrent programs using general-purpose mechanical theorem proving. We define specifications for concurrent programs by formalizing a notion of refinements analogous to stuttering trace containment. The formalization supports the definition of intuitive specifications of the intended behavior of a program. We present a collection of proof rules that can be effectively orchestrated by a theorem prover to reason about complex programs using refinements. The proof rules systematically reduce the correctness proof for a concurrent program to the definition and proof of an invariant. We include automated support for discharging this invariant proof with a predicate abstraction tool that leverages the existing theorems proven about the components of the concurrent programs. The framework is integrated with the ACL2 theorem prover and we demonstrate its use in the verification of several concurrent programs in ACL2.