formal language for predicate transformer semantics introduced by by Edsger Dijkstra
problem used to illustrate synchronization issues and techniques for resolving them