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