Verifying Concurrent Processes Using Temporal Logic by B.T. Hailpern