Core Concepts
This technical report proposes a formal system for the development of totally correct parallel programs with respect to an unfair shared-state parallel programming language. The system uses auxiliary variables as a specification tool and a verification tool, and is proven to be sound and relatively complete.
Abstract
The technical report starts by discussing the motivation behind the work, including the need for program development methods that can handle concurrency, compositionality, and the use of rely- and guarantee-conditions as well as temporal logic. The author then presents their approach, which involves defining properties, operational semantics, auxiliary variables, specified programs, and a logic of specified programs.
The report covers various aspects of the formal system, including syntax, semantics, satisfaction, syntactic operators, well-foundedness, and the logic of specified programs. Several nontrivial algorithms are then developed using the system, including the Dining-Philosophers, Bubble-Lattice-Sort, and Set-Partition algorithms.
Finally, the report discusses a related method for developing (possibly non-terminating) programs with respect to four properties, and uses this approach to develop Dekker's algorithm. The system is proven to be sound and relatively complete with respect to the operational semantics.