The book Parallel Program Design: A Foundation by Chandy and Misra (Addison-Wesley, 1988) presents UNITY, which consists of an abstract programming language of guarded assignments and an associated calculus. Misra's 1994 paper "A Logic for Concurrent Programming" presents "New UNITY", giving more elegant foundations for a more general class of languages.
This directory is a preliminary formalization of New UNITY. The Isabelle examples may not represent the most natural treatment of UNITY style. Hand UNITY proofs tend to be written in the forwards direction, as in informal mathematics, while Isabelle works best in a backwards (goal-directed) style.
The syntax, also, is rather unnatural. Programs are expressed as sets of commands, where each command is a relation on states. Quantification over commands using [] is easily expressed. At present, there are no examples of quantification using ||.
The directory presents a few small examples, mostly taken from Misra's 1994 paper:
Safety proofs (invariants) are often proved automatically. Progress proofs involving ENSURES can sometimes be proved automatically. The level of automation appears to be about the same as in HOL-UNITY by Flemming Andersen et al.
Last modified on $Date$
lcp@cl.cam.ac.uk