Parallel programs: proofs, principles, and practice
Several principles are identified from work on the verification of parallel programs. Concrete examples of the ways these principles can be applied, even when formal verification is not the goal, are then described. The purpose of this paper is to demonstrate ways in which the concepts of program verification yield insight into the programming process, programming languages, and program properties.