A program property is a predicate on programs. In this paper we explore program properties for safety, progress and parallel composition, of the form U ⇀ V where U and V are either predicates on states of a program or program properties, and ⇀ satisfies three rules that are also enjoyed by implication. We show how such properties can be used to reason about concurrent programs. Our motivation is to explore methods of reasoning based on a very small number of widely-known rules.
Concurrency Safety Progress Temporal logic Unity theory Fairness Hoare triples