Introduction to HOL: a theorem proving environment for higher order logic
Introduction to HOL: a theorem proving environment for higher order logic
Communicating and mobile systems: the &pgr;-calculus
Communicating and mobile systems: the &pgr;-calculus
Concurrency verification: introduction to compositional and noncompositional methods
Concurrency verification: introduction to compositional and noncompositional methods
UNIX Network Programming: Networking APIs: Sockets and XTI
UNIX Network Programming: Networking APIs: Sockets and XTI
Distributed Algorithms
Formal verification of standards for distance vector routing protocols
Journal of the ACM (JACM)
Timing UDP: Mechanized Semantics for Sockets, Threads, and Failures
ESOP '02 Proceedings of the 11th European Symposium on Programming Languages and Systems
The UDP Calculus: Rigorous Semantics for Real Networking
TACS '01 Proceedings of the 4th International Symposium on Theoretical Aspects of Computer Software
TABLEAUX '95 Proceedings of the 4th International Workshop on Theorem Proving with Analytic Tableaux and Related Methods
Proving safety and liveness of communicating processes with examples
PODC '82 Proceedings of the first ACM SIGACT-SIGOPS symposium on Principles of distributed computing
Verification and improvement of the sliding window protocol
TACAS'03 Proceedings of the 9th international conference on Tools and algorithms for the construction and analysis of systems
Isabelle/HOL: a proof assistant for higher-order logic
Isabelle/HOL: a proof assistant for higher-order logic
Proceedings of the 2005 conference on Applications, technologies, architectures, and protocols for computer communications
Engineering with logic: HOL specification and symbolic-evaluation testing for TCP implementations
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Verifying distributed systems: the operational approach
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
Operational reasoning for concurrent caml programs and weak memory models
TPHOLs'07 Proceedings of the 20th international conference on Theorem proving in higher order logics
A sound semantics for OCamllight
ESOP'08/ETAPS'08 Proceedings of the Theory and practice of software, 17th European conference on Programming languages and systems
Hi-index | 0.00 |
This paper is about the mechanical verification of UDP based network programs. It uses the UDP portion of a formal model of the Internet protocols TCP (Transmission Control Protocol) and UDP (User Datagram Protocol). The model includes asynchronous message passing, message loss and host failure. The model is based around the sockets library, the primary API used for writing UDP and TCP based applications. This paper demonstrates that formal, machine-checked, proof is possible in the UDP model by presenting the proof of a safety property for an implementation of Stenning's Protocol. The protocol is implemented in a fragment of the OCaml language, using the sockets library for UDP network communication. The entire development including the safety proof is carried out in the proof assistant Isabelle; this assures soundness. Thus this paper demonstrates that it is possible to machine verify very concrete representations of distributed programs in a detailed semantics that accurately reflects the programs execution environment. Previously only abstract representations of this protocol have been machine verified. The proof, based on an implementation, provides a contrast to other verifications.