So far, has been a function, that is, for each state, s, and action, a, mapped us to at most one next state. Suppose I have a RandomCounter machine with an inc action that takes an integer argument:
Here is the specification of inc:
1
inc(i: int)pre i > 0post
As an observer, you don't know which state transition will occur when you feed inc the integer 4. You must be prepared to deal with either possibility. The choice of which post-state is taken is made by the machine itself. Notice that the nondeterminism shows up in the specification of inc in the use of logical disjunction in the post-condition.