Example (continued)
. Modeling code
1  #define MIN 9
2  #define MAX 12
3  #define FILL 99
4
5  mtype = { ack, nak, err }
6
14   chout!ack(o)
15   :: chin?ack(i) ->
16         if
17  :: (o < MAX) -> o = o+1
18  :: (o >= MAX) -> o = FILL
19     fi;
20          chout!ack(o)
21   :: chin?err(i) ->
22       chout!nak(o)
23  od
24 }
7  proctype transfer(chan chin, chout)
8  { byte o, i, last_i=MIN;
9
10  o = MIN+1;
11  do
12   :: chin?nak(i) ->
13           assert(i == last_i+1);
Promela Source Code part I