A relation is regular if it is either deterministic, symmetric and transitive, or rectangular. The authors study the benefits of using regular relations when constructing program specifications. The computation of the kernel of a relation is simplified when the relation is known to be regular. This leads to simplifying the specifications of both while loops and error recovery routines. A feasible solution to the generation of executable assertions exists when relations are restricted to be regular. The authors assert that most relations in specifications encountered in practice are regular. The preservation of regularity for both intersection and union (when the relation is also relatively uniform) supports the stepwise construction of specifications.
An example of a nonregular relation specification would have reinforced the advantages of using regular relations. The presentation is packed with detailed proofs of properties of regularity; it would have benefitted from examples of the use of those properties in deriving specifications. The authors believe the most intriguing property of regular relations is their relationship to rational numbers; this relationship will be a subject of future investigation.