mdp
const int delay;
const double fast;
const double slow=1-fast;
module process
x1 : [0..167];
x2 : [0..1];
s : [0..10];
[] s<=4 & (x1<delay) & (x2=0) -> (x2'=1);
[] s<=4 & (x1<delay) & (x2=1) -> (x1'=x1+1) & (x2'=0);
[] s=0 -> fast : (s'=1) + slow : (s'=4);
[] s=0 -> fast : (s'=2) + slow : (s'=3);
[] s=1 -> fast : (s'=5) & (x1'=0) & (x2'=0) + slow : (s'=6) & (x1'=0) & (x2'=0);
[] s=2 -> fast : (s'=5) & (x1'=0) & (x2'=0) + slow : (s'=7) & (x1'=0) & (x2'=0);
[] s=3 -> fast : (s'=6) & (x1'=0) & (x2'=0) + slow : (s'=8) & (x1'=0) & (x2'=0);
[] s=4 -> fast : (s'=7) & (x1'=0) & (x2'=0) + slow : (s'=8) & (x1'=0) & (x2'=0);
[] s=5 & x1<85 & x2=0 -> (x2'=1);
[] s=5 & x1<85 & x2=1 -> (x1'=x1+1) & (x2'=0);
[] s=5 & x1>=76 -> (s'=0) & (x1'=0) & (x2'=0);
[] (s=5) & (x1>=76-delay) -> (s'=9) & (x1'=0) & (x2'=0);
[] s=6 & x1<167 & x2=0 -> (x2'=1);
[] s=6 & x1<167 & x2=1 -> (x1'=x1+1) & (x2'=0);
[] (s=6) & (x1>=159-delay) -> (s'=9) & (x1'=0) & (x2'=0);
[] s=7 & x1<167 & x2=0 -> (x2'=1);
[] s=7 & x1<167 & x2=1 -> (x1'=x1+1) & (x2'=0);
[] (s=7) & (x1>=159-delay) -> (s'=9) & (x1'=0) & (x2'=0);
[] s=8 & x1<167 & x2=0 -> (x2'=1);
[] s=8 & x1<167 & x2=1 -> (x1'=x1+1) & (x2'=0);
[] s=8 & x1>=159 -> (s'=0) & (x1'=0) & (x2'=0);
[] (s=8) & (x1>=159-delay) -> (s'=9) & (x1'=0) & (x2'=0);
[] s=9 -> (s'=9);
endmodule