There is a well-established theory and practice for creating correct-by-construction functional programs by extracting them from constructive proofs of assertions of the form "For all x:A there exists y:B.R(x,y))." There have been several efforts to extend this methodology to concurrent programs, say by using linear logic, but there is no practice and the results are limited.
In this paper we define a logic of events that justifies the extraction of correct distributed processes from constructive proofs that system specifications are achievable, and we describe an implementation of an extraction process in the context of constructive type theory. We show that a class of message automata, similar to IO automata and to active objects, are realizers for this logic. We provide a relative consistency result for the logic. We show an example of protocol derivation in this logic, and show how to embed temporal logics such as TLA+ in the event logic.
The formal material underlying this report is developed and maintained at Event Systems. http://www.cs.cornell.edu/Info/People/sfa/Nuprl/EventSystems/