A fast mutual exclusion algorithm
ACM Transactions on Computer Systems (TOCS)
An introduction to Estelle: a specification language for distributed systems
Computer Networks and ISDN Systems - Special Issue: Protocol Specification and Testing
Introduction to the ISO specification language LOTOS
Computer Networks and ISDN Systems - Special Issue: Protocol Specification and Testing
A log (N) distributed mutual exclusion algorithm based on path reversal
Journal of Parallel and Distributed Computing
Time, clocks, and the ordering of events in a distributed system
Communications of the ACM
Guarded commands, nondeterminacy and formal derivation of programs
Communications of the ACM
Distributed Algorithms
Specifying Systems: The TLA+ Language and Tools for Hardware and Software Engineers
Specifying Systems: The TLA+ Language and Tools for Hardware and Software Engineers
Model Checking TLA+ Specifications
CHARME '99 Proceedings of the 10th IFIP WG 10.5 Advanced Research Working Conference on Correct Hardware Design and Verification Methods
Mace: language support for building distributed systems
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Spin model checker, the: primer and reference manual
Spin model checker, the: primer and reference manual
Checking a multithreaded algorithm with +CAL
DISC'06 Proceedings of the 20th international conference on Distributed Computing
Hi-index | 0.00 |
Designers of concurrent and distributed algorithms usually express them using pseudo-code. In contrast, most verification techniques are based on more mathematically-oriented formalisms such as state transition systems. This conceptual gap contributes to hinder the use of formal verification techniques. Leslie Lamport introduced PlusCal, a high-level algorithmic language that has the "look and feel" of pseudocode, but is equipped with a precise semantics and includes a high-level expression language based on set theory. PlusCal models can be compiled to TLA+ and verified using the model checker TLC. However, in practice, the use of PlusCal requires good knowledge of TLA+ and of the translation from PlusCal to TLA+. In particular, the user needs to annotate the generated TLA+ model in order to define the properties to be verified and to introduce fairness hypotheses. Moreover, the PlusCal language enforces certain restrictions that often make it difficult to express distributed algorithms in a natural way. We propose a new version of PlusCal with the aim of overcoming these limitations, and of providing a language in which algorithms and their properties can be expressed naturally. We have implemented a compiler of our language to TLA+, supporting the verification of algorithms by finite-state model checking.