Specifying Message Passing and Time-Critical Systems with Temporal Logic