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.