When a wait statement is reached, the program simply waits for a condition to become true before proceeding.
The expression must, of course, be boolean in value.
Execution: When arriving at a wait event, evaluate the guard expresions. If true, then proceed immediately to the event that follows. Otherwise, block this event pending any change on variables or channels that could possibly change the value of the expression. In implementation, the set may be precise or conservative, but the resulting evaluation must remain equivalent.