* configure.ac, iface/Makefile.am: Adjust. * iface/dve2/finite.test, iface/dve2/.gitignore, iface/dve2/Makefile.am, iface/dve2/README, iface/dve2/beem-peterson.4.dve, iface/dve2/dve2check.test, iface/dve2/defs.in, iface/dve2/finite.dve, iface/ltsmin/finite.test, iface/dve2/kripke.test, iface/dve2/dve2.cc, iface/dve2/dve2.hh, iface/dve2/dve2check.cc: Move to iface/ltsmin. * iface/ltsmin/.gitignore, iface/ltsmin/Makefile.am, iface/ltsmin/README, iface/ltsmin/beem-peterson.4.dve, iface/ltsmin/check.test, iface/ltsmin/defs.in, iface/ltsmin/finite.dve, iface/ltsmin/finite.test, iface/ltsmin/kripke.test, iface/ltsmin/ltsmin.cc, iface/ltsmin/ltsmin.hh, iface/ltsmin/modelcheck.cc: Factorize dve2 and spins interface in iface/ltsmin/ * iface/ltsmin/elevator2.1.pm, iface/ltsmin/finite.pm: Test promela models. * README: Document iface/ltsmin/ directory.
61 lines
850 B
Perl
61 lines
850 B
Perl
byte req[4];
|
|
int t=0;
|
|
int p=0;
|
|
byte v=0;
|
|
|
|
|
|
active proctype cabin() {
|
|
|
|
idle: if
|
|
:: v>0; goto mov;
|
|
|
|
fi;
|
|
mov: if
|
|
:: t==p; goto open;
|
|
|
|
:: d_step {t<p;p = p-1;} goto mov;
|
|
|
|
:: d_step {t>p;p = p+1;} goto mov;
|
|
|
|
fi;
|
|
open: if
|
|
:: d_step {req[p] = 0;v = 0;} goto idle;
|
|
|
|
fi;
|
|
}
|
|
|
|
active proctype environment() {
|
|
|
|
read: if
|
|
:: d_step {req[0]==0;req[0] = 1;} goto read;
|
|
|
|
:: d_step {req[1]==0;req[1] = 1;} goto read;
|
|
|
|
:: d_step {req[2]==0;req[2] = 1;} goto read;
|
|
|
|
:: d_step {req[3]==0;req[3] = 1;} goto read;
|
|
|
|
fi;
|
|
}
|
|
|
|
active proctype controller() {
|
|
byte ldir=0;
|
|
|
|
wait: if
|
|
:: d_step {v==0;t = t+(2*ldir)-1;} goto work;
|
|
|
|
fi;
|
|
work: if
|
|
:: d_step {t<0 || t==4;ldir = 1-ldir;} goto wait;
|
|
|
|
:: t>=0 && t<4 && req[t]==1; goto done;
|
|
|
|
:: d_step {t>=0 && t<4 && req[t]==0;t = t+(2*ldir)-1;} goto work;
|
|
|
|
fi;
|
|
done: if
|
|
:: v = 1; goto wait;
|
|
|
|
fi;
|
|
}
|
|
|