The drinking philosophers problem
ACM Transactions on Programming Languages and Systems (TOPLAS) - Lecture notes in computer science Vol. 174
PX: a computational logic
Programming in Martin-Lo¨f's type theory: an introduction
Programming in Martin-Lo¨f's type theory: an introduction
Cayenne—a language with dependent types
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
QuickCheck: a lightweight tool for random testing of Haskell programs
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Towards the animation of proofs---testing proofs by examples
Theoretical Computer Science - Special issue on theories of types and proofs
Mechanical Verification of Distributed Algorithms in Higher-Order Logic
Proceedings of the 7th International Workshop on Higher Order Logic Theorem Proving and Its Applications
Checking Verifications of Protocols and Distributed Systems by Computer
CONCUR '98 Proceedings of the 9th International Conference on Concurrency Theory
PTCS '01 Proceedings of the International Seminar on Proof Theory in Computer Science
Random Testing in Isabelle/HOL
SEFM '04 Proceedings of the Software Engineering and Formal Methods, Second International Conference
A logical framework with dependently typed records
TLCA'03 Proceedings of the 6th international conference on Typed lambda calculi and applications
Random generators for dependent types
ICTAC'04 Proceedings of the First international conference on Theoretical Aspects of Computing
A mechanized model for CAN protocols
FASE'13 Proceedings of the 16th international conference on Fundamental Approaches to Software Engineering
Hi-index | 0.00 |
We report our experiences to verify distributed algorithms in constructive type theory by testing and proving. Properties can be tested to eliminate bugs before proving, thus saving expensive proof effort. Both deadlock property and liveness property are proven after testing. The verified algorithm can be executed in Cayenne, a functional programming language with dependent types.