diff --git a/prism-examples/pta/args-abovebelow b/prism-examples/pta/args-abovebelow new file mode 100644 index 00000000..8f2547ad --- /dev/null +++ b/prism-examples/pta/args-abovebelow @@ -0,0 +1,14 @@ +# no pre (or as little as poss) +-aroptions nopre,noopt +-aroptions nopre,opt +-aroptions nopre,opt,above + +-aroptions noprob1,noopt +-aroptions noprob1,opt +-aroptions noprob1,opt,above + +# pre +-aroptions pre,noopt +-aroptions pre,opt +-aroptions pre,opt,above + diff --git a/prism-examples/pta/brp/README b/prism-examples/pta/brp/README new file mode 100644 index 00000000..ef87bfc7 --- /dev/null +++ b/prism-examples/pta/brp/README @@ -0,0 +1,27 @@ +This case study is based on the bounded retransmission protocol (BRP) [HSV94], a variant of the alternating bit protocol. + +Its parameters are: + + N = number of chunks in a file + MAX = maximum number of retransmissions + TD = the transition delay + TIME_OUT = the time the sender waits before timing out + +TIME_OUT should be greater than the time to send and receive an ack (i.e. greater than 2*TD) + +For more information, see the untimed version: http://www.prismmodelchecker.org/casestudies/brp.php + +The PTA extension is based on that used in [HH09] + +===================================================================================== + +[HSV94] +L. Helmink, M. Sellink and F Vaandrager +Proof checking a data link protocol +In Proc. Types for Proofs and Programs (TYPES'93), LNCS 806, pp 127-165, Springer-Verlag, 1994 + +[HH09] +A. Hartmanns and H. Hermanns +A Modest Approach to Checking Probabilistic Timed Automata +Proc. 6th International Conference on Quantitative Evaluation of Systems (QEST'09), IEEE, 2009 + diff --git a/prism-examples/pta/brp/auto b/prism-examples/pta/brp/auto new file mode 100755 index 00000000..03503e01 --- /dev/null +++ b/prism-examples/pta/brp/auto @@ -0,0 +1,7 @@ +#!/bin/csh + +foreach N (16 32 64) + foreach MAX (2 3 4 5) + prism brp.pm brp.pctl -const N=$N,MAX=$MAX,TD=2,TIME_OUT=5 -fixdl + end +end diff --git a/prism-examples/pta/brp/brp.pctl b/prism-examples/pta/brp/brp.pctl new file mode 100644 index 00000000..44994b7e --- /dev/null +++ b/prism-examples/pta/brp/brp.pctl @@ -0,0 +1,22 @@ +// properties taken from [D'AJJL01] + +// property A +P=? [ true U srep=1 & rrep=3 & recv ]; + +// property B +P=? [ true U srep=3 & !(rrep=3) & recv ]; + +// property 1 +P=? [ true U s=5 ]; + +// property 2 +P=? [ true U s=5 & srep=2 ]; + +// property 3 +P=? [ true U s=5 & srep=1 & i>8 ]; + +// property 4 +P=? [ true U !(srep=0) & !recv ]; + +// rewards +R=? [ F "deadlock" ]; diff --git a/prism-examples/pta/brp/brp.pm b/prism-examples/pta/brp/brp.pm new file mode 100644 index 00000000..09945670 --- /dev/null +++ b/prism-examples/pta/brp/brp.pm @@ -0,0 +1,150 @@ +// bounded retransmission protocol [D'AJJL01] +// gxn/dxp 23/05/2001 + +pta + +// number of chunks +const int N; +// maximum number of retransmissions +const int MAX; +// max time to send a message (transition delay) +const int TD; +// time out limit (greater than TD+TD - the max time to send a message and receive an ack) +const int TIME_OUT = 2*TD + 1; + +module sender + + // clock of the sender + x : clock; + + s : [0..6]; + // 0 idle + // 1 next_frame + // 2 wait_ack + // 3 retransmit + // 4 success + // 5 error + // 6 wait sync + srep : [0..3]; + // 0 bottom + // 1 not ok (nok) + // 2 do not know (dk) + // 3 ok (ok) + nrtr : [0..MAX]; + i : [0..N]; + bs : bool; + s_ab : bool; + fs : bool; + ls : bool; + + invariant + (s=2 => x<=TIME_OUT) // only wait until timeout + endinvariant + + // idle + [NewFile] (s=0) -> (s'=1) & (i'=1) & (srep'=0); + // next_frame + [aF] (s=1) -> (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=0) & (x'=0); + // wait_ack + [aB] (s=2) -> (s'=4) & (s_ab'=!s_ab); + [] (s=2) & x=TIME_OUT -> (s'=3); // time out + // retransmit + [aF] (s=3) & (nrtr (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1) & (x'=0); + [] (s=3) & (nrtr=MAX) & (i (s'=5) & (srep'=1); + [] (s=3) & (nrtr=MAX) & (i=N) -> (s'=5) & (srep'=2); + // success + [] (s=4) & (i (s'=1) & (i'=i+1); + [] (s=4) & (i=N) -> (s'=0) & (srep'=3); + // error + [SyncWait] (s=5) -> (s'=6); + // wait sync + [SyncWait] (s=6) -> (s'=0) & (s_ab'=false); + +endmodule + +module receiver + + r : [0..5]; + // 0 new_file + // 1 fst_safe + // 2 frame_received + // 3 frame_reported + // 4 idle + // 5 resync + rrep : [0..4]; + // 0 bottom + // 1 fst + // 2 inc + // 3 ok + // 4 nok + fr : bool; + lr : bool; + br : bool; + r_ab : bool; + recv : bool; + + + // new_file + [SyncWait] (r=0) -> (r'=0); + [aG] (r=0) -> (r'=1) & (fr'=fs) & (lr'=ls) & (br'=bs) & (recv'=T); + // fst_safe_frame + [] (r=1) -> (r'=2) & (r_ab'=br); + // frame_received + [] (r=2) & (r_ab=br) & (fr=true) & (lr=false) -> (r'=3) & (rrep'=1); + [] (r=2) & (r_ab=br) & (fr=false) & (lr=false) -> (r'=3) & (rrep'=2); + [] (r=2) & (r_ab=br) & (fr=false) & (lr=true) -> (r'=3) & (rrep'=3); + [aA] (r=2) & !(r_ab=br) -> (r'=4); + // frame_reported + [aA] (r=3) -> (r'=4) & (r_ab'=!r_ab); + // idle + [aG] (r=4) -> (r'=2) & (fr'=fs) & (lr'=ls) & (br'=bs) & (recv'=T); + [SyncWait] (r=4) & (ls=true) -> (r'=5); + [SyncWait] (r=4) & (ls=false) -> (r'=5) & (rrep'=4); + // resync + [SyncWait] (r=5) -> (r'=0) & (rrep'=0); + +endmodule + +module checker // prevents more than one frame being set + + T : bool; + + [NewFile] (T=false) -> (T'=true); + +endmodule + +module channelK + + xK : clock; + k : [0..1]; + + invariant + (k=1 => xK<=TD) + endinvariant + + // idle + [aF] (k=0) -> 0.98 : (k'=1) & (xK'=0) + 0.02 : (k'=0) & (xK'=0); + // sending + [aG] (k=1) & xK<=TD -> (k'=0) & (xK'=0); + +endmodule + +module channelL + + xL : clock; + l : [0..1]; + + invariant + (l=1 => xL<=TD) + endinvariant + + // idle + [aA] (l=0) -> 0.99 : (l'=1) & (xL'=0) + 0.02 : (l'=0) & (xL'=0); + // sending + [aB] (l=1) & xL<=TD -> (l'=0) & (xL'=0); + +endmodule + +rewards + [aF] i=1 : 1; +endrewards diff --git a/prism-examples/pta/csma/abst/args b/prism-examples/pta/csma/abst/args new file mode 100644 index 00000000..9d79838f --- /dev/null +++ b/prism-examples/pta/csma/abst/args @@ -0,0 +1 @@ +-aroptions refine=all,nopre diff --git a/prism-examples/pta/csma/abst/auto b/prism-examples/pta/csma/abst/auto new file mode 100755 index 00000000..61df4d1e --- /dev/null +++ b/prism-examples/pta/csma/abst/auto @@ -0,0 +1,7 @@ +#!/bin/csh + +prism csma.nm -const bmax=1 eventually.pctl -aroptions refine=all,nopre,opt + +prism csma.nm -const bmax=1 deadline.pctl -const T=1000 -aroptions refine=all,nopre,opt +prism csma.nm -const bmax=1 deadline.pctl -const T=2000 -aroptions refine=all,nopre,opt +prism csma.nm -const bmax=1 deadline.pctl -const T=3000 -aroptions refine=all,nopre,opt diff --git a/prism-examples/pta/csma/abst/csma.nm b/prism-examples/pta/csma/abst/csma.nm new file mode 100644 index 00000000..9f41ce98 --- /dev/null +++ b/prism-examples/pta/csma/abst/csma.nm @@ -0,0 +1,139 @@ +// CSMA/CD protocol - probabilistic version of kronos model adapted to model a single station +// gxn/dxp 04/12/01 + +pta + +// note made changes since cannot have strict inequalities +// in digital clocks approach and suppose a station only sends one message + +//---------------------------------------------------------------------------------------------------------------------------- +// actual parameters +const int bmax; // exponential backoff limit +const int slot=2*sigma; // length of slot +const int sigma=26; +const int lambda=808; + +//---------------------------------------------------------------------------------------------------------------------------- +// the bus +module bus + + b : [0..2]; + // b=0 - idle + // b=1 - active + // b=2 - collision + + // clock of bus + y : clock; + + invariant + (b=0 => true) & + (b=1 => true) & + (b=2 => y<=sigma) + endinvariant + + // station starts sending + [send1] (b=0) -> (b'=1) & (y'=0); // no message being sent + [send2] (b=0) -> (b'=1) & (y'=0); // no message being sent + + [send1] (b=1) & (y (b'=2) & (y'=0); // message being sent (move to collision) + [send2] (b=1) & (y (b'=2) & (y'=0); // message being sent (move to collision) + + // message being sent + [busy1] (b=1) & (y>=sigma) -> (b'=1); + [busy2] (b=1) & (y>=sigma) -> (b'=1); + + // station finishes + [end1] (b=1) -> (b'=0) & (y'=0); + [end2] (b=1) -> (b'=0) & (y'=0); + + // collision detected + [cd] (b=2) & (y<=sigma) -> (b'=0) & (y'=0); + +endmodule + +//---------------------------------------------------------------------------------------------------------------------------- +// model of first sender +module station1 + + // LOCAL STATE + s1 : [0..4]; + // s1=0 - initial state + // s1=1 - transmit + // s1=2 - collision (set backoff) + // s1=3 - wait (bus busy) + // s1=4 -done (since sending only one message) + // LOCAL CLOCK + x1 : clock; + // COLLISION COUNTER + cd1 : [0..bmax]; + + invariant + (s1=0 => x1=0) & + (s1=1 => x1<=lambda) & + (s1=2 => x1=0) & + (s1=3 => x1<=pow(2, cd1)*slot) & + (s1=4 => true) + endinvariant + + // start sending + [send1] (s1=0) -> (s1'=1) & (x1'=0); // start sending + [busy1] (s1=0) -> (s1'=2) & (x1'=0) & (cd1'=min(bmax,cd1+1)); // detects channel is busy so go into backoff + + // transmitting + [end1] (s1=1) & (x1=lambda) -> (s1'=4) & (x1'=0); // finished + [cd] (s1=1) -> (s1'=2) & (x1'=0) & (cd1'=min(bmax,cd1+1)); // collision detected + + // set backoff (no time can pass in this state) + // first retransmission + [] s1=2 & cd1=1 -> 1/2 : (s1'=3) & (x1'=0*slot) + + 1/2 : (s1'=3) & (x1'=1*slot); + // second retransmission + [] s1=2 & cd1=2 -> 1/4 : (s1'=3) & (x1'=0*slot) + + 1/4 : (s1'=3) & (x1'=1*slot) + + 1/4 : (s1'=3) & (x1'=2*slot) + + 1/4 : (s1'=3) & (x1'=3*slot); + // thrid retransmission + [] s1=2 & cd1=3 -> 1/8 : (s1'=3) & (x1'=0*slot) + + 1/8 : (s1'=3) & (x1'=1*slot) + + 1/8 : (s1'=3) & (x1'=2*slot) + + 1/8 : (s1'=3) & (x1'=3*slot) + + 1/8 : (s1'=3) & (x1'=4*slot) + + 1/8 : (s1'=3) & (x1'=5*slot) + + 1/8 : (s1'=3) & (x1'=6*slot) + + 1/8 : (s1'=3) & (x1'=7*slot); + // fourth retransmission + [] s1=2 & cd1=4 -> 1/16 : (s1'=3) & (x1'=0*slot) + + 1/16 : (s1'=3) & (x1'=1*slot) + + 1/16 : (s1'=3) & (x1'=2*slot) + + 1/16 : (s1'=3) & (x1'=3*slot) + + 1/16 : (s1'=3) & (x1'=4*slot) + + 1/16 : (s1'=3) & (x1'=5*slot) + + 1/16 : (s1'=3) & (x1'=6*slot) + + 1/16 : (s1'=3) & (x1'=7*slot) + + 1/16 : (s1'=3) & (x1'=8*slot) + + 1/16 : (s1'=3) & (x1'=9*slot) + + 1/16 : (s1'=3) & (x1'=10*slot) + + 1/16 : (s1'=3) & (x1'=11*slot) + + 1/16 : (s1'=3) & (x1'=12*slot) + + 1/16 : (s1'=3) & (x1'=13*slot) + + 1/16 : (s1'=3) & (x1'=14*slot) + + 1/16 : (s1'=3) & (x1'=15*slot); + + // finished backoff + [send1] (s1=3) & (x1=pow(2, cd1)*slot) -> (s1'=1) & (x1'=0); // channel free + [busy1] (s1=3) & (x1=pow(2, cd1)*slot) -> (s1'=2) & (x1'=0) & (cd1'=min(bmax,cd1+1)); // channel busy + + // once finished nothing matters + [done] (s1=4) -> true; + +endmodule + +//---------------------------------------------------------------------------------------------------------------------------- + +// construct further stations through renaming +module station2=station1[s1=s2,x1=x2,cd1=cd2,bc1=bc2,send1=send2,busy1=busy2,end1=end2] endmodule + +//---------------------------------------------------------------------------------------------------------------------------- +// LABELS + +label "done" = s1=4 & s2=4; diff --git a/prism-examples/pta/csma/abst/csma1-digital.nm b/prism-examples/pta/csma/abst/csma1-digital.nm new file mode 100644 index 00000000..ae903b38 --- /dev/null +++ b/prism-examples/pta/csma/abst/csma1-digital.nm @@ -0,0 +1,100 @@ +// CSMA/CD protocol - probabilistic version of kronos model adapted to model a single station +// gxn/dxp 04/12/01 + +nondeterministic + +// note made changes since cannot have strict inequalities +// in digital clocks approach and suppose a station only sends one message + +//---------------------------------------------------------------------------------------------------------------------------- +// actual parameters +const int K=1; // exponential backoff limit +const int slot=2*sigma; // length of slot +const int M=floor(pow(2, K)); // max number of slots to wait +const int sigma=26; +const int lambda=808; + +//---------------------------------------------------------------------------------------------------------------------------- +// the bus +module bus + + b : [0..2]; + // b=0 - idle + // b=1 - active + // b=2 - collision + + // clock of bus + y : [0..sigma+1]; + + // station starts sending + [send1] (b=0) -> (b'=1) & (y'=0); // no message being sent + [send2] (b=0) -> (b'=1) & (y'=0); // no message being sent + [send1] (b=1) & (y<=sigma) -> (b'=2) & (y'=0); // message being sent (move to collision) + [send2] (b=1) & (y<=sigma) -> (b'=2) & (y'=0); // message being sent (move to collision) + + // message being sent + [busy1] (b=1) & (y>=sigma) -> (b'=1); + [busy2] (b=1) & (y>=sigma) -> (b'=1); + + // station finishes + [end1] (b=1) -> (b'=0) & (y'=0); + [end2] (b=1) -> (b'=0) & (y'=0); + + // collision detected + [cd] (b=2) & (y<=sigma) -> (b'=0) & (y'=0); + + // time transitions + [time] (b=0) -> (y'=min(y+1,sigma+1)); // value of y does not matter in state 0 + [time] (b=1) -> (y'=min(y+1,sigma+1)); // no invariant in state 1 + [time] (b=2) & (y (y'=min(y+1,sigma+1)); // invariant in state 2 + +endmodule + +//---------------------------------------------------------------------------------------------------------------------------- +// model of first sender +module station1 + + // LOCAL STATE + s1 : [0..4]; + // s1=0 - initial state + // s1=1 - transmit + // s1=2 - collision (set backoff) + // s1=3 - wait (bus busy) + // s1=4 -done (since sending only one message) + // LOCAL CLOCK + x1 : [0..max(lambda,M*slot)+1]; + // COLLISION COUNTER + cd1 : [0..K]; + + // start sending + [send1] (s1=0) -> (s1'=1) & (x1'=0); // start sending + [busy1] (s1=0) -> (s1'=2) & (x1'=0) & (cd1'=min(K,cd1+1)); // detects channel is busy so go into backoff + + // transmitting + [time] (s1=1) & (x1 (x1'=min(x1+1,lambda)); // let time pass + [end1] (s1=1) & (x1=lambda) -> (s1'=4) & (x1'=0); // finished + [cd] (s1=1) -> (s1'=2) & (x1'=0) & (cd1'=min(K,cd1+1)); // collision detected + + // set backoff (no time can pass in this state) + // first retransmission + [] s1=2 & cd1=1 -> 1/2 : (s1'=3) & (x1'=0*slot) + + 1/2 : (s1'=3) & (x1'=1*slot); + + // wait until backoff counter reaches 0 then send again + [time] (s1=3) & (cd1=1) & (x1<2*slot) -> (x1'=x1+1); // let time pass (in slot) + + // finished backoff + [send1] (s1=3) & cd1=1 & (x1=2*slot) -> (s1'=1) & (x1'=0); // channel free + [busy1] (s1=3) & cd1=1 & (x1=2*slot) -> (s1'=2) & (x1'=0) & (cd1'=min(K,cd1+1)); // channel busy + + // finished + [done] (s1=4) -> true; + [time] (s1=4) -> (x1'=min(x1+1,max(lambda,M*slot)+1)); + +endmodule + +//---------------------------------------------------------------------------------------------------------------------------- + +// construct further stations through renaming +module station2=station1[s1=s2,x1=x2,cd1=cd2,bc1=bc2,send1=send2,busy1=busy2,end1=end2] endmodule + diff --git a/prism-examples/pta/csma/abst/csma1-test.nm b/prism-examples/pta/csma/abst/csma1-test.nm new file mode 100644 index 00000000..daf6cc5d --- /dev/null +++ b/prism-examples/pta/csma/abst/csma1-test.nm @@ -0,0 +1,106 @@ +// CSMA/CD protocol - probabilistic version of kronos model adapted to model a single station +// gxn/dxp 04/12/01 + +pta + +// note made changes since cannot have strict inequalities +// in digital clocks approach and suppose a station only sends one message + +//---------------------------------------------------------------------------------------------------------------------------- +// actual parameters +const int K=1; // exponential backoff limit +const int slot=2*sigma; // length of slot +const int sigma=26; +const int lambda=808; + +//---------------------------------------------------------------------------------------------------------------------------- +// the bus +module bus + + b : [0..2]; + // b=0 - idle + // b=1 - active + // b=2 - collision + + // clock of bus + y : clock; + + invariant + (b=0 => true) & + (b=1 => true) & + (b=2 => y<=sigma) + endinvariant + + // station starts sending + [send1] (b=0) -> (b'=1) & (y'=0); // no message being sent + [send2] (b=0) -> (b'=1) & (y'=0); // no message being sent + [send1] (b=1) & (y<=sigma) -> (b'=2) & (y'=0); // message being sent (move to collision) + [send2] (b=1) & (y<=sigma) -> (b'=2) & (y'=0); // message being sent (move to collision) + + // message being sent + [busy1] (b=1) & (y>=sigma) -> (b'=1); + [busy2] (b=1) & (y>=sigma) -> (b'=1); + + // station finishes + [end1] (b=1) -> (b'=0) & (y'=0); + [end2] (b=1) -> (b'=0) & (y'=0); + + // collision detected + [cd] (b=2) & (y<=sigma) -> (b'=0) & (y'=0); + +endmodule + +//---------------------------------------------------------------------------------------------------------------------------- +// model of first sender +module station1 + + // LOCAL STATE + s1 : [0..4]; + // s1=0 - initial state + // s1=1 - transmit + // s1=2 - collision (set backoff) + // s1=3 - wait (bus busy) + // s1=4 -done (since sending only one message) + + // LOCAL CLOCK + x1 : clock; + + invariant + (s1=0 => x1=0) & + (s1=1 => x1<=lambda) & + (s1=2 => x1<=0) & + (s1=3 => x1<=104) & + (s1=4 => true) + endinvariant + + // start sending + [send1] (s1=0) -> (s1'=1) & (x1'=0); // start sending + [busy1] (s1=0) -> (s1'=2) & (x1'=0); // detects channel is busy so go into backoff + + // transmitting + [end1] (s1=1) & (x1=lambda) -> (s1'=4) & (x1'=0); // finished + [cd] (s1=1) -> (s1'=2) & (x1'=0); // collision detected + + // set backoff (no time can pass in this state) + // first retransmission + [] s1=2 -> 1/2 : (s1'=3) & (x1'=0) + + 1/2 : (s1'=3) & (x1'=52); + + // finished backoff + [send1] s1=3 & x1>=104 -> (s1'=1) & (x1'=0); // channel free + [busy1] s1=3 & x1>=104 -> (s1'=2) & (x1'=0); // channel busy + + // once finished nothing matters + [done] s1=4 -> true; + +endmodule + +//---------------------------------------------------------------------------------------------------------------------------- + +// construct further stations through renaming +module station2=station1[s1=s2,x1=x2,send1=send2,busy1=busy2,end1=end2] endmodule + +//---------------------------------------------------------------------------------------------------------------------------- +// LABELS + +label "done" = s1=4 & s2=4; diff --git a/prism-examples/pta/csma/abst/csma2-digital.nm b/prism-examples/pta/csma/abst/csma2-digital.nm new file mode 100644 index 00000000..b3ed53b9 --- /dev/null +++ b/prism-examples/pta/csma/abst/csma2-digital.nm @@ -0,0 +1,109 @@ +// CSMA/CD protocol - probabilistic version of kronos model adapted to model a single station +// gxn/dxp 04/12/01 + +nondeterministic + +// note made changes since cannot have strict inequalities +// in digital clocks approach and suppose a station only sends one message + +//---------------------------------------------------------------------------------------------------------------------------- +// actual parameters +const int K=2; // exponential backoff limit +const int slot=2*sigma; // length of slot +const int M=floor(pow(2, K)); // max number of slots to wait +const int sigma=26; +const int lambda=808; + +//---------------------------------------------------------------------------------------------------------------------------- +// the bus +module bus + + b : [0..2]; + // b=0 - idle + // b=1 - active + // b=2 - collision + + // clock of bus + y : [0..sigma+1]; + + // station starts sending + [send1] (b=0) -> (b'=1) & (y'=0); // no message being sent + [send2] (b=0) -> (b'=1) & (y'=0); // no message being sent + [send1] (b=1) & (y<=sigma) -> (b'=2) & (y'=0); // message being sent (move to collision) + [send2] (b=1) & (y<=sigma) -> (b'=2) & (y'=0); // message being sent (move to collision) + + // message being sent + [busy1] (b=1) & (y>=sigma) -> (b'=1); + [busy2] (b=1) & (y>=sigma) -> (b'=1); + + // station finishes + [end1] (b=1) -> (b'=0) & (y'=0); + [end2] (b=1) -> (b'=0) & (y'=0); + + // collision detected + [cd] (b=2) & (y<=sigma) -> (b'=0) & (y'=0); + + // time transitions + [time] (b=0) -> (y'=min(y+1,sigma+1)); // value of y does not matter in state 0 + [time] (b=1) -> (y'=min(y+1,sigma+1)); // no invariant in state 1 + [time] (b=2) & (y (y'=min(y+1,sigma+1)); // invariant in state 2 + +endmodule + +//---------------------------------------------------------------------------------------------------------------------------- +// model of first sender +module station1 + + // LOCAL STATE + s1 : [0..4]; + // s1=0 - initial state + // s1=1 - transmit + // s1=2 - collision (set backoff) + // s1=3 - wait (bus busy) + // s1=4 -done (since sending only one message) + // LOCAL CLOCK + x1 : [0..max(lambda,M*slot)+1]; + // COLLISION COUNTER + cd1 : [0..K]; + + // start sending + [send1] (s1=0) -> (s1'=1) & (x1'=0); // start sending + [busy1] (s1=0) -> (s1'=2) & (x1'=0) & (cd1'=min(K,cd1+1)); // detects channel is busy so go into backoff + + // transmitting + [time] (s1=1) & (x1 (x1'=min(x1+1,lambda)); // let time pass + [end1] (s1=1) & (x1=lambda) -> (s1'=4) & (x1'=0); // finished + [cd] (s1=1) -> (s1'=2) & (x1'=0) & (cd1'=min(K,cd1+1)); // collision detected + + // set backoff (no time can pass in this state) + // first retransmission + [] s1=2 & cd1=1 -> 1/2 : (s1'=3) & (x1'=0*slot) + + 1/2 : (s1'=3) & (x1'=1*slot); + // second retransmission + [] s1=2 & cd1=2 -> 1/4 : (s1'=3) & (x1'=0*slot) + + 1/4 : (s1'=3) & (x1'=1*slot) + + 1/4 : (s1'=3) & (x1'=2*slot) + + 1/4 : (s1'=3) & (x1'=3*slot); + + // wait until backoff counter reaches 0 then send again + [time] (s1=3) & (cd1=1) & (x1<2*slot) -> (x1'=x1+1); // let time pass (in slot) + [time] (s1=3) & (cd1=2) & (x1<4*slot) -> (x1'=x1+1); // let time pass (in slot) + + // finished backoff + [send1] (s1=3) & cd1=1 & (x1=2*slot) -> (s1'=1) & (x1'=0); // channel free + [busy1] (s1=3) & cd1=1 & (x1=2*slot) -> (s1'=2) & (x1'=0) & (cd1'=min(K,cd1+1)); // channel busy + + [send1] (s1=3) & cd1=2 & (x1=4*slot) -> (s1'=1) & (x1'=0); // channel free + [busy1] (s1=3) & cd1=2 & (x1=4*slot) -> (s1'=2) & (x1'=0) & (cd1'=min(K,cd1+1)); // channel busy + + // finished + [done] (s1=4) -> true; + [time] (s1=4) -> (x1'=min(x1+1,max(lambda,M*slot)+1)); + +endmodule + +//---------------------------------------------------------------------------------------------------------------------------- + +// construct further stations through renaming +module station2=station1[s1=s2,x1=x2,cd1=cd2,bc1=bc2,send1=send2,busy1=busy2,end1=end2] endmodule + diff --git a/prism-examples/pta/csma/abst/csma3-digital.nm b/prism-examples/pta/csma/abst/csma3-digital.nm new file mode 100644 index 00000000..239c9e42 --- /dev/null +++ b/prism-examples/pta/csma/abst/csma3-digital.nm @@ -0,0 +1,122 @@ +// CSMA/CD protocol - probabilistic version of kronos model adapted to model a single station +// gxn/dxp 04/12/01 + +nondeterministic + +// note made changes since cannot have strict inequalities +// in digital clocks approach and suppose a station only sends one message + +//---------------------------------------------------------------------------------------------------------------------------- +// actual parameters +const int K=3; // exponential backoff limit +const int slot=2*sigma; // length of slot +const int M=floor(pow(2, K)); // max number of slots to wait +const int sigma=26; +const int lambda=808; + +//---------------------------------------------------------------------------------------------------------------------------- +// the bus +module bus + + b : [0..2]; + // b=0 - idle + // b=1 - active + // b=2 - collision + + // clock of bus + y : [0..sigma+1]; + + // station starts sending + [send1] (b=0) -> (b'=1) & (y'=0); // no message being sent + [send2] (b=0) -> (b'=1) & (y'=0); // no message being sent + [send1] (b=1) & (y (b'=2) & (y'=0); // message being sent (move to collision) + [send2] (b=1) & (y (b'=2) & (y'=0); // message being sent (move to collision) + + // message being sent + [busy1] (b=1) & (y>=sigma) -> (b'=1); + [busy2] (b=1) & (y>=sigma) -> (b'=1); + + // station finishes + [end1] (b=1) -> (b'=0) & (y'=0); + [end2] (b=1) -> (b'=0) & (y'=0); + + // collision detected + [cd] (b=2) & (y<=sigma) -> (b'=0) & (y'=0); + + // time transitions + [time] (b=0) -> (y'=min(y+1,sigma+1)); // value of y does not matter in state 0 + [time] (b=1) -> (y'=min(y+1,sigma+1)); // no invariant in state 1 + [time] (b=2) & (y (y'=min(y+1,sigma+1)); // invariant in state 2 + +endmodule + +//---------------------------------------------------------------------------------------------------------------------------- +// model of first sender +module station1 + + // LOCAL STATE + s1 : [0..4]; + // s1=0 - initial state + // s1=1 - transmit + // s1=2 - collision (set backoff) + // s1=3 - wait (bus busy) + // s1=4 -done (since sending only one message) + // LOCAL CLOCK + x1 : [0..max(lambda,M*slot)+1]; + // COLLISION COUNTER + cd1 : [0..K]; + + // start sending + [send1] (s1=0) -> (s1'=1) & (x1'=0); // start sending + [busy1] (s1=0) -> (s1'=2) & (x1'=0) & (cd1'=min(K,cd1+1)); // detects channel is busy so go into backoff + + // transmitting + [time] (s1=1) & (x1 (x1'=min(x1+1,lambda)); // let time pass + [end1] (s1=1) & (x1=lambda) -> (s1'=4) & (x1'=0); // finished + [cd] (s1=1) -> (s1'=2) & (x1'=0) & (cd1'=min(K,cd1+1)); // collision detected + + // set backoff (no time can pass in this state) + // first retransmission + [] s1=2 & cd1=1 -> 1/2 : (s1'=3) & (x1'=0*slot) + + 1/2 : (s1'=3) & (x1'=1*slot); + // second retransmission + [] s1=2 & cd1=2 -> 1/4 : (s1'=3) & (x1'=0*slot) + + 1/4 : (s1'=3) & (x1'=1*slot) + + 1/4 : (s1'=3) & (x1'=2*slot) + + 1/4 : (s1'=3) & (x1'=3*slot); + // thrid retransmission + [] s1=2 & cd1=3 -> 1/8 : (s1'=3) & (x1'=0*slot) + + 1/8 : (s1'=3) & (x1'=1*slot) + + 1/8 : (s1'=3) & (x1'=2*slot) + + 1/8 : (s1'=3) & (x1'=3*slot) + + 1/8 : (s1'=3) & (x1'=4*slot) + + 1/8 : (s1'=3) & (x1'=5*slot) + + 1/8 : (s1'=3) & (x1'=6*slot) + + 1/8 : (s1'=3) & (x1'=7*slot); + + // wait until backoff counter reaches 0 then send again + [time] (s1=3) & (cd1=1) & (x1<2*slot) -> (x1'=x1+1); // let time pass (in slot) + [time] (s1=3) & (cd1=2) & (x1<4*slot) -> (x1'=x1+1); // let time pass (in slot) + [time] (s1=3) & (cd1=3) & (x1<8*slot) -> (x1'=x1+1); // let time pass (in slot) + + // finished backoff + [send1] (s1=3) & cd1=1 & (x1=2*slot) -> (s1'=1) & (x1'=0); // channel free + [busy1] (s1=3) & cd1=1 & (x1=2*slot) -> (s1'=2) & (x1'=0) & (cd1'=min(K,cd1+1)); // channel busy + + [send1] (s1=3) & cd1=2 & (x1=4*slot) -> (s1'=1) & (x1'=0); // channel free + [busy1] (s1=3) & cd1=2 & (x1=4*slot) -> (s1'=2) & (x1'=0) & (cd1'=min(K,cd1+1)); // channel busy + + [send1] (s1=3) & cd1=3 & (x1=8*slot) -> (s1'=1) & (x1'=0); // channel free + [busy1] (s1=3) & cd1=3 & (x1=8*slot) -> (s1'=2) & (x1'=0) & (cd1'=min(K,cd1+1)); // channel busy + + // finished + [done] (s1=4) -> true; + [time] (s1=4) -> (x1'=min(x1+1,max(lambda,M*slot)+1)); + +endmodule + +//---------------------------------------------------------------------------------------------------------------------------- + +// construct further stations through renaming +module station2=station1[s1=s2,x1=x2,cd1=cd2,bc1=bc2,send1=send2,busy1=busy2,end1=end2] endmodule + diff --git a/prism-examples/pta/csma/abst/csma4-digital.nm b/prism-examples/pta/csma/abst/csma4-digital.nm new file mode 100644 index 00000000..76d67489 --- /dev/null +++ b/prism-examples/pta/csma/abst/csma4-digital.nm @@ -0,0 +1,139 @@ +// CSMA/CD protocol - probabilistic version of kronos model adapted to model a single station +// gxn/dxp 04/12/01 + +nondeterministic + +// note made changes since cannot have strict inequalities +// in digital clocks approach and suppose a station only sends one message + +// actual parameters +const int K=4; // exponential backoff limit +const int slot=2*sigma; // length of slot +const int M=floor(pow(2, K)); // max number of slots to wait +const int sigma=26; +const int lambda=808; + +//---------------------------------------------------------------------------------------------------------------------------- +// the bus +module bus + + b : [0..2]; + // b=0 - idle + // b=1 - active + // b=2 - collision + + // clock of bus + y : [0..sigma+1]; + + // station starts sending + [send1] (b=0) -> (b'=1) & (y'=0); // no message being sent + [send2] (b=0) -> (b'=1) & (y'=0); // no message being sent + [send1] (b=1) & (y (b'=2) & (y'=0); // message being sent (move to collision) + [send2] (b=1) & (y (b'=2) & (y'=0); // message being sent (move to collision) + + // message being sent + [busy1] (b=1) & (y>=sigma) -> (b'=1); + [busy2] (b=1) & (y>=sigma) -> (b'=1); + + // station finishes + [end1] (b=1) -> (b'=0) & (y'=0); + [end2] (b=1) -> (b'=0) & (y'=0); + + // collision detected + [cd] (b=2) & (y<=sigma) -> (b'=0) & (y'=0); + + // time transitions + [time] (b=0) -> (y'=min(y+1,sigma+1)); // value of y does not matter in state 0 + [time] (b=1) -> (y'=min(y+1,sigma+1)); // no invariant in state 1 + [time] (b=2) & (y (y'=min(y+1,sigma+1)); // invariant in state 2 + +endmodule + +//---------------------------------------------------------------------------------------------------------------------------- +// model of first sender +module station1 + + // LOCAL STATE + s1 : [0..4]; + // s1=0 - initial state + // s1=1 - transmit + // s1=2 - collision (set backoff) + // s1=3 - wait (bus busy) + // s1=4 -done (since sending only one message) + // LOCAL CLOCK + x1 : [0..max(lambda,M*slot)+1]; + // COLLISION COUNTER + cd1 : [0..K]; + + // start sending + [send1] (s1=0) -> (s1'=1) & (x1'=0); // start sending + [busy1] (s1=0) -> (s1'=2) & (x1'=0) & (cd1'=min(K,cd1+1)); // detects channel is busy so go into backoff + + // transmitting + [time] (s1=1) & (x1 (x1'=min(x1+1,lambda)); // let time pass + [end1] (s1=1) & (x1=lambda) -> (s1'=4) & (x1'=0); // finished + [cd] (s1=1) -> (s1'=2) & (x1'=0) & (cd1'=min(K,cd1+1)); // collision detected + + // set backoff (no time can pass in this state) + // first retransmission + [] s1=2 & cd1=1 -> 1/2 : (s1'=3) & (x1'=0*slot) + + 1/2 : (s1'=3) & (x1'=1*slot); + // second retransmission + [] s1=2 & cd1=2 -> 1/4 : (s1'=3) & (x1'=0*slot) + + 1/4 : (s1'=3) & (x1'=1*slot) + + 1/4 : (s1'=3) & (x1'=2*slot) + + 1/4 : (s1'=3) & (x1'=3*slot); + // thrid retransmission + [] s1=2 & cd1=3 -> 1/8 : (s1'=3) & (x1'=0*slot) + + 1/8 : (s1'=3) & (x1'=1*slot) + + 1/8 : (s1'=3) & (x1'=2*slot) + + 1/8 : (s1'=3) & (x1'=3*slot) + + 1/8 : (s1'=3) & (x1'=4*slot) + + 1/8 : (s1'=3) & (x1'=5*slot) + + 1/8 : (s1'=3) & (x1'=6*slot) + + 1/8 : (s1'=3) & (x1'=7*slot); + // fourth retransmission + [] s1=2 & cd1=4 -> 1/16 : (s1'=3) & (x1'=0*slot) + + 1/16 : (s1'=3) & (x1'=1*slot) + + 1/16 : (s1'=3) & (x1'=2*slot) + + 1/16 : (s1'=3) & (x1'=3*slot) + + 1/16 : (s1'=3) & (x1'=4*slot) + + 1/16 : (s1'=3) & (x1'=5*slot) + + 1/16 : (s1'=3) & (x1'=6*slot) + + 1/16 : (s1'=3) & (x1'=7*slot) + + 1/16 : (s1'=3) & (x1'=8*slot) + + 1/16 : (s1'=3) & (x1'=9*slot) + + 1/16 : (s1'=3) & (x1'=10*slot) + + 1/16 : (s1'=3) & (x1'=11*slot) + + 1/16 : (s1'=3) & (x1'=12*slot) + + 1/16 : (s1'=3) & (x1'=13*slot) + + 1/16 : (s1'=3) & (x1'=14*slot) + + 1/16 : (s1'=3) & (x1'=15*slot); + + // wait until backoff counter reaches 0 then send again + [time] (s1=3) & (cd1=1) & (x1<2*slot) -> (x1'=x1+1); // let time pass (in slot) + [time] (s1=3) & (cd1=2) & (x1<4*slot) -> (x1'=x1+1); // let time pass (in slot) + [time] (s1=3) & (cd1=3) & (x1<8*slot) -> (x1'=x1+1); // let time pass (in slot) + [time] (s1=3) & (cd1=4) & (x1<16*slot) -> (x1'=x1+1); // let time pass (in slot) + + // finished backoff + [send1] (s1=3) & cd1=1 & (x1=2*slot) -> (s1'=1) & (x1'=0); // channel free + [busy1] (s1=3) & cd1=1 & (x1=2*slot) -> (s1'=2) & (x1'=0) & (cd1'=min(K,cd1+1)); // channel busy + [send1] (s1=3) & cd1=2 & (x1=4*slot) -> (s1'=1) & (x1'=0); // channel free + [busy1] (s1=3) & cd1=2 & (x1=4*slot) -> (s1'=2) & (x1'=0) & (cd1'=min(K,cd1+1)); // channel busy + [send1] (s1=3) & cd1=3 & (x1=8*slot) -> (s1'=1) & (x1'=0); // channel free + [busy1] (s1=3) & cd1=3 & (x1=8*slot) -> (s1'=2) & (x1'=0) & (cd1'=min(K,cd1+1)); // channel busy + [send1] (s1=3) & cd1=4 & (x1=16*slot) -> (s1'=1) & (x1'=0); // channel free + [busy1] (s1=3) & cd1=4 & (x1=16*slot) -> (s1'=2) & (x1'=0) & (cd1'=min(K,cd1+1)); // channel busy + + // finished + [done] (s1=4) -> true; + [time] (s1=4) -> (x1'=min(x1+1,max(lambda,M*slot)+1)); + +endmodule + +//---------------------------------------------------------------------------------------------------------------------------- + +// construct further stations through renaming +module station2=station1[s1=s2,x1=x2,cd1=cd2,bc1=bc2,send1=send2,busy1=busy2,end1=end2] endmodule + diff --git a/prism-examples/pta/csma/abst/deadline.pctl b/prism-examples/pta/csma/abst/deadline.pctl new file mode 100644 index 00000000..02149594 --- /dev/null +++ b/prism-examples/pta/csma/abst/deadline.pctl @@ -0,0 +1,3 @@ +const int T; + +Pmin=? [ F<=T "done" ] diff --git a/prism-examples/pta/csma/abst/eventually.pctl b/prism-examples/pta/csma/abst/eventually.pctl new file mode 100644 index 00000000..454ac18e --- /dev/null +++ b/prism-examples/pta/csma/abst/eventually.pctl @@ -0,0 +1,2 @@ +Pmin=? [ F "done" ] + diff --git a/prism-examples/pta/csma/abst/models b/prism-examples/pta/csma/abst/models new file mode 100644 index 00000000..05b04409 --- /dev/null +++ b/prism-examples/pta/csma/abst/models @@ -0,0 +1,2 @@ +csma.nm -const bmax=1 + diff --git a/prism-examples/pta/csma/abst/props b/prism-examples/pta/csma/abst/props new file mode 100644 index 00000000..c9b71ff9 --- /dev/null +++ b/prism-examples/pta/csma/abst/props @@ -0,0 +1,4 @@ +eventually.pctl +deadline.pctl -const T=1000 +deadline.pctl -const T=2000 +deadline.pctl -const T=3000 diff --git a/prism-examples/pta/csma/full/args b/prism-examples/pta/csma/full/args new file mode 100644 index 00000000..9d79838f --- /dev/null +++ b/prism-examples/pta/csma/full/args @@ -0,0 +1 @@ +-aroptions refine=all,nopre diff --git a/prism-examples/pta/csma/full/auto b/prism-examples/pta/csma/full/auto new file mode 100755 index 00000000..6940d1b2 --- /dev/null +++ b/prism-examples/pta/csma/full/auto @@ -0,0 +1,11 @@ +#!/bin/csh + +prism csma.nm collisions.pctl -const bmax=2,K=4 -aroptions refine=all,nopre,opt +prism csma.nm collisions.pctl -const bmax=2,K=8 -aroptions refine=all,nopre,opt +prism csma.nm collisions.pctl -const bmax=4,K=4 -aroptions refine=all,nopre,opt +prism csma.nm collisions.pctl -const bmax=4,K=8 -aroptions refine=all,nopre,opt + +prism csma.nm time.pctl -const bmax=1,K=0 -aroptions refine=all,nopre,opt +prism csma.nm time.pctl -const bmax=2,K=0 -aroptions refine=all,nopre,opt +prism csma.nm time.pctl -const bmax=3,K=0 -aroptions refine=all,nopre,opt +prism csma.nm time.pctl -const bmax=4,K=0 -aroptions refine=all,nopre,opt \ No newline at end of file diff --git a/prism-examples/pta/csma/full/collisions.pctl b/prism-examples/pta/csma/full/collisions.pctl new file mode 100644 index 00000000..9db83bc8 --- /dev/null +++ b/prism-examples/pta/csma/full/collisions.pctl @@ -0,0 +1 @@ +Pmax=?[F "cmax" ] diff --git a/prism-examples/pta/csma/full/csma-digital.nm b/prism-examples/pta/csma/full/csma-digital.nm new file mode 100644 index 00000000..ff5b7a7b --- /dev/null +++ b/prism-examples/pta/csma/full/csma-digital.nm @@ -0,0 +1,2203 @@ +// CSMA/CD protocol - two stations (PTA model using digital clocks) +// gxn/mxd 31/05/05 + +// based on kronos (non-probabilistic) TA model and that which appears in: +// M. Duflot, L. Fribourg, T. Hérault, R. Lassaigne, F. Magniette, S. Messika, S. Peyronnet and C. Picaronny +// Probabilistic model checking of the CSMA/CD protocol using PRISM and APMC +// In Proc. AVoCS'04, 2004 + +// uses explicit probabilistic choices for backoff 0..1023 + +nondeterministic + +// PARAMETERS + +const int K; // collision counter limit + +// actual parameters +const int bmax; // exponential backoff limit (vary to get graphs) +const int slot=2*sigma; // length of slot +const int M=pow(2,bmax)-1; // max number of slots to wait + +// simplified parameters scaled (by 12) +const int sigma=26; // time for messages to propagate along the bus +const int delay=sigma; +const int lambda=808; // time to send a message + +//---------------------------------------------------------------------------------------------------------------------------- +// collision counter +module collisions + + c : [0..K]; + + [csend1] c=0 -> c'=min(K,c+1)); + [csend2] c=0 -> c'=min(K,c+1)); + +endmodule + +//---------------------------------------------------------------------------------------------------------------------------- +// the bus +module bus + + b : [0..4]; + // b=0 - idle + // b=1 - active + // b=2 - collision + // b=3 - collision1 + // b=4 - collision2 + + y1 : [0..sigma+1]; // clock of bus + y2 : [0..sigma+1]; // clock of bus + + // stations starts sending + [send1] b=0 -> (b'=1) & (y1'=0); // no message being sent + [send2] b=0 -> (b'=1) & (y2'=0); // no message being sent + + // collision occurs + [send1] b=1 & y2<=delay -> (b'=2) & (y1'=y2) & (y2'=0); // message being sent (move to collision) + [send2] b=1 & y1<=delay -> (b'=2) & (y2'=y1) & (y1'=0); // message being sent (move to collision) + + // message being sent + [busy1] b=1 & y2>delay -> (b'=1); + [busy2] b=1 & y1>delay -> (b'=1); + + // station finishes + [end1] b=1 -> (b'=0) & (y1'=0); + [end2] b=1 -> (b'=0) & (y2'=0); + + // collision detected + [cd1] b=2 & y1=delay -> (b'=4); // station one detects collision before station two + [cd2] b=2 & y2=delay -> (b'=3); // station two detects collision before station one + + [cd1] b=3 & y1=delay -> (b'=0) & (y1'=0) & (y2'=0); // station one detects collision after station two + [cd2] b=4 & y2=delay -> (b'=0) & (y1'=0) & (y2'=0); // station two detects collision after station one + + // time transitions + [time] b=0 -> true; // value of clocks does not matter in state 0 + [time] b=1 & s1=1 -> (y1'=min(y1+1,sigma+1)); // station 1 sending + [time] b=1 & s2=1 -> (y2'=min(y2+1,sigma+1)); // station 2 sending + [time] b=2 & max(y1,y2) (y1'=min(y1+1,delay)) & (y2'=min(y2+1,delay)); // both sending + [time] b=3 & y1 (y1'=min(y1+1,delay)); // station 1 sending and station 2 stopped + [time] b=4 & y2 (y2'=min(y2+1,delay)); // station 2 sending and station 1 stopped + +endmodule + +//---------------------------------------------------------------------------------------------------------------------------- +// STATION 1 +module station1 + + // LOCAL STATE + s1 : [0..4]; + // s1=0 - initial state + // s1=1 - transmit + // s1=2 - collision (set backoff) + // s1=3 - wait (bus busy) + // s1=4 - done (since sending only one message) + + x1 : [0..lambda]; // local clock + bc1 : [0..M]; // backoff counter (number of slots to wait) + cd1 : [0..bmax]; // collision counter + + // start sending (make sure there is a collision, i.e. start before x1 equals delay) + [time] s1=0 & x1<=delay-1 -> (x1'=x1+1); + [send1] s1=0 -> (s1'=1) & (x1'=0); // start sending + [csend1] s1=0 -> (s1'=1) & (x1'=0); // start sending + [busy1] s1=0 -> (s1'=2) & (x1'=0) & (cd1'=min(bmax,cd1+1)); // detects channel is busy so go into backoff + + // transmitting + [time] s1=1 & x1 (x1'=min(x1+1,lambda)); // let time pass + [end1] s1=1 & x1=lambda -> (s1'=4) & (x1'=0); // finished + [cd1] s1=1 -> (s1'=2) & (x1'=0) & (cd1'=min(bmax,cd1+1)); // collision detected + + // set backoff (no time can pass in this state) + // first retransmission + [] s1=2 & cd1=1 -> 1/2 : (s1'=3) & (bc1'=0) + + 1/2 : (s1'=3) & (bc1'=1); + // second retransmission + [] s1=2 & cd1=2 -> 1/4 : (s1'=3) & (bc1'=0) + + 1/4 : (s1'=3) & (bc1'=1) + + 1/4 : (s1'=3) & (bc1'=2) + + 1/4 : (s1'=3) & (bc1'=3); + // third retransmission + [] s1=2 & cd1=3 -> 1/8 : (s1'=3) & (bc1'=0) + + 1/8 : (s1'=3) & (bc1'=1) + + 1/8 : (s1'=3) & (bc1'=2) + + 1/8 : (s1'=3) & (bc1'=3) + + 1/8 : (s1'=3) & (bc1'=4) + + 1/8 : (s1'=3) & (bc1'=5) + + 1/8 : (s1'=3) & (bc1'=6) + + 1/8 : (s1'=3) & (bc1'=7); + // fourth retransmission + [] s1=2 & cd1=4 -> 1/16 : (s1'=3) & (bc1'=0) + + 1/16 : (s1'=3) & (bc1'=1) + + 1/16 : (s1'=3) & (bc1'=2) + + 1/16 : (s1'=3) & (bc1'=3) + + 1/16 : (s1'=3) & (bc1'=4) + + 1/16 : (s1'=3) & (bc1'=5) + + 1/16 : (s1'=3) & (bc1'=6) + + 1/16 : (s1'=3) & (bc1'=7) + + 1/16 : (s1'=3) & (bc1'=8) + + 1/16 : (s1'=3) & (bc1'=9) + + 1/16 : (s1'=3) & (bc1'=10) + + 1/16 : (s1'=3) & (bc1'=11) + + 1/16 : (s1'=3) & (bc1'=12) + + 1/16 : (s1'=3) & (bc1'=13) + + 1/16 : (s1'=3) & (bc1'=14) + + 1/16 : (s1'=3) & (bc1'=15); + // fifth retransmission + [] s1=2 & cd1=5 -> 1/32 : (s1'=3) & (bc1'=0) + + 1/32 : (s1'=3) & (bc1'=1) + + 1/32 : (s1'=3) & (bc1'=2) + + 1/32 : (s1'=3) & (bc1'=3) + + 1/32 : (s1'=3) & (bc1'=4) + + 1/32 : (s1'=3) & (bc1'=5) + + 1/32 : (s1'=3) & (bc1'=6) + + 1/32 : (s1'=3) & (bc1'=7) + + 1/32 : (s1'=3) & (bc1'=8) + + 1/32 : (s1'=3) & (bc1'=9) + + 1/32 : (s1'=3) & (bc1'=10) + + 1/32 : (s1'=3) & (bc1'=11) + + 1/32 : (s1'=3) & (bc1'=12) + + 1/32 : (s1'=3) & (bc1'=13) + + 1/32 : (s1'=3) & (bc1'=14) + + 1/32 : (s1'=3) & (bc1'=15) + + 1/32 : (s1'=3) & (bc1'=16) + + 1/32 : (s1'=3) & (bc1'=17) + + 1/32 : (s1'=3) & (bc1'=18) + + 1/32 : (s1'=3) & (bc1'=19) + + 1/32 : (s1'=3) & (bc1'=20) + + 1/32 : (s1'=3) & (bc1'=21) + + 1/32 : (s1'=3) & (bc1'=22) + + 1/32 : (s1'=3) & (bc1'=23) + + 1/32 : (s1'=3) & (bc1'=24) + + 1/32 : (s1'=3) & (bc1'=25) + + 1/32 : (s1'=3) & (bc1'=26) + + 1/32 : (s1'=3) & (bc1'=27) + + 1/32 : (s1'=3) & (bc1'=28) + + 1/32 : (s1'=3) & (bc1'=29) + + 1/32 : (s1'=3) & (bc1'=30) + + 1/32 : (s1'=3) & (bc1'=31); + // sixth retransmission + [] s1=2 & cd1=6 -> 1/64 : (s1'=3) & (bc1'=0) + + 1/64 : (s1'=3) & (bc1'=1) + + 1/64 : (s1'=3) & (bc1'=2) + + 1/64 : (s1'=3) & (bc1'=3) + + 1/64 : (s1'=3) & (bc1'=4) + + 1/64 : (s1'=3) & (bc1'=5) + + 1/64 : (s1'=3) & (bc1'=6) + + 1/64 : (s1'=3) & (bc1'=7) + + 1/64 : (s1'=3) & (bc1'=8) + + 1/64 : (s1'=3) & (bc1'=9) + + 1/64 : (s1'=3) & (bc1'=10) + + 1/64 : (s1'=3) & (bc1'=11) + + 1/64 : (s1'=3) & (bc1'=12) + + 1/64 : (s1'=3) & (bc1'=13) + + 1/64 : (s1'=3) & (bc1'=14) + + 1/64 : (s1'=3) & (bc1'=15) + + 1/64 : (s1'=3) & (bc1'=16) + + 1/64 : (s1'=3) & (bc1'=17) + + 1/64 : (s1'=3) & (bc1'=18) + + 1/64 : (s1'=3) & (bc1'=19) + + 1/64 : (s1'=3) & (bc1'=20) + + 1/64 : (s1'=3) & (bc1'=21) + + 1/64 : (s1'=3) & (bc1'=22) + + 1/64 : (s1'=3) & (bc1'=23) + + 1/64 : (s1'=3) & (bc1'=24) + + 1/64 : (s1'=3) & (bc1'=25) + + 1/64 : (s1'=3) & (bc1'=26) + + 1/64 : (s1'=3) & (bc1'=27) + + 1/64 : (s1'=3) & (bc1'=28) + + 1/64 : (s1'=3) & (bc1'=29) + + 1/64 : (s1'=3) & (bc1'=30) + + 1/64 : (s1'=3) & (bc1'=31) + + 1/64 : (s1'=3) & (bc1'=32) + + 1/64 : (s1'=3) & (bc1'=33) + + 1/64 : (s1'=3) & (bc1'=34) + + 1/64 : (s1'=3) & (bc1'=35) + + 1/64 : (s1'=3) & (bc1'=36) + + 1/64 : (s1'=3) & (bc1'=37) + + 1/64 : (s1'=3) & (bc1'=38) + + 1/64 : (s1'=3) & (bc1'=39) + + 1/64 : (s1'=3) & (bc1'=40) + + 1/64 : (s1'=3) & (bc1'=41) + + 1/64 : (s1'=3) & (bc1'=42) + + 1/64 : (s1'=3) & (bc1'=43) + + 1/64 : (s1'=3) & (bc1'=44) + + 1/64 : (s1'=3) & (bc1'=45) + + 1/64 : (s1'=3) & (bc1'=46) + + 1/64 : (s1'=3) & (bc1'=47) + + 1/64 : (s1'=3) & (bc1'=48) + + 1/64 : (s1'=3) & (bc1'=49) + + 1/64 : (s1'=3) & (bc1'=50) + + 1/64 : (s1'=3) & (bc1'=51) + + 1/64 : (s1'=3) & (bc1'=52) + + 1/64 : (s1'=3) & (bc1'=53) + + 1/64 : (s1'=3) & (bc1'=54) + + 1/64 : (s1'=3) & (bc1'=55) + + 1/64 : (s1'=3) & (bc1'=56) + + 1/64 : (s1'=3) & (bc1'=57) + + 1/64 : (s1'=3) & (bc1'=58) + + 1/64 : (s1'=3) & (bc1'=59) + + 1/64 : (s1'=3) & (bc1'=60) + + 1/64 : (s1'=3) & (bc1'=61) + + 1/64 : (s1'=3) & (bc1'=62) + + 1/64 : (s1'=3) & (bc1'=63); + // seventh retransmission + [] s1=2 & cd1=7 -> 1/128 : (s1'=3) & (bc1'=0) + + 1/128 : (s1'=3) & (bc1'=1) + + 1/128 : (s1'=3) & (bc1'=2) + + 1/128 : (s1'=3) & (bc1'=3) + + 1/128 : (s1'=3) & (bc1'=4) + + 1/128 : (s1'=3) & (bc1'=5) + + 1/128 : (s1'=3) & (bc1'=6) + + 1/128 : (s1'=3) & (bc1'=7) + + 1/128 : (s1'=3) & (bc1'=8) + + 1/128 : (s1'=3) & (bc1'=9) + + 1/128 : (s1'=3) & (bc1'=10) + + 1/128 : (s1'=3) & (bc1'=11) + + 1/128 : (s1'=3) & (bc1'=12) + + 1/128 : (s1'=3) & (bc1'=13) + + 1/128 : (s1'=3) & (bc1'=14) + + 1/128 : (s1'=3) & (bc1'=15) + + 1/128 : (s1'=3) & (bc1'=16) + + 1/128 : (s1'=3) & (bc1'=17) + + 1/128 : (s1'=3) & (bc1'=18) + + 1/128 : (s1'=3) & (bc1'=19) + + 1/128 : (s1'=3) & (bc1'=20) + + 1/128 : (s1'=3) & (bc1'=21) + + 1/128 : (s1'=3) & (bc1'=22) + + 1/128 : (s1'=3) & (bc1'=23) + + 1/128 : (s1'=3) & (bc1'=24) + + 1/128 : (s1'=3) & (bc1'=25) + + 1/128 : (s1'=3) & (bc1'=26) + + 1/128 : (s1'=3) & (bc1'=27) + + 1/128 : (s1'=3) & (bc1'=28) + + 1/128 : (s1'=3) & (bc1'=29) + + 1/128 : (s1'=3) & (bc1'=30) + + 1/128 : (s1'=3) & (bc1'=31) + + 1/128 : (s1'=3) & (bc1'=32) + + 1/128 : (s1'=3) & (bc1'=33) + + 1/128 : (s1'=3) & (bc1'=34) + + 1/128 : (s1'=3) & (bc1'=35) + + 1/128 : (s1'=3) & (bc1'=36) + + 1/128 : (s1'=3) & (bc1'=37) + + 1/128 : (s1'=3) & (bc1'=38) + + 1/128 : (s1'=3) & (bc1'=39) + + 1/128 : (s1'=3) & (bc1'=40) + + 1/128 : (s1'=3) & (bc1'=41) + + 1/128 : (s1'=3) & (bc1'=42) + + 1/128 : (s1'=3) & (bc1'=43) + + 1/128 : (s1'=3) & (bc1'=44) + + 1/128 : (s1'=3) & (bc1'=45) + + 1/128 : (s1'=3) & (bc1'=46) + + 1/128 : (s1'=3) & (bc1'=47) + + 1/128 : (s1'=3) & (bc1'=48) + + 1/128 : (s1'=3) & (bc1'=49) + + 1/128 : (s1'=3) & (bc1'=50) + + 1/128 : (s1'=3) & (bc1'=51) + + 1/128 : (s1'=3) & (bc1'=52) + + 1/128 : (s1'=3) & (bc1'=53) + + 1/128 : (s1'=3) & (bc1'=54) + + 1/128 : (s1'=3) & (bc1'=55) + + 1/128 : (s1'=3) & (bc1'=56) + + 1/128 : (s1'=3) & (bc1'=57) + + 1/128 : (s1'=3) & (bc1'=58) + + 1/128 : (s1'=3) & (bc1'=59) + + 1/128 : (s1'=3) & (bc1'=60) + + 1/128 : (s1'=3) & (bc1'=61) + + 1/128 : (s1'=3) & (bc1'=62) + + 1/128 : (s1'=3) & (bc1'=63) + + 1/128 : (s1'=3) & (bc1'=64) + + 1/128 : (s1'=3) & (bc1'=65) + + 1/128 : (s1'=3) & (bc1'=66) + + 1/128 : (s1'=3) & (bc1'=67) + + 1/128 : (s1'=3) & (bc1'=68) + + 1/128 : (s1'=3) & (bc1'=69) + + 1/128 : (s1'=3) & (bc1'=70) + + 1/128 : (s1'=3) & (bc1'=71) + + 1/128 : (s1'=3) & (bc1'=72) + + 1/128 : (s1'=3) & (bc1'=73) + + 1/128 : (s1'=3) & (bc1'=74) + + 1/128 : (s1'=3) & (bc1'=75) + + 1/128 : (s1'=3) & (bc1'=76) + + 1/128 : (s1'=3) & (bc1'=77) + + 1/128 : (s1'=3) & (bc1'=78) + + 1/128 : (s1'=3) & (bc1'=79) + + 1/128 : (s1'=3) & (bc1'=80) + + 1/128 : (s1'=3) & (bc1'=81) + + 1/128 : (s1'=3) & (bc1'=82) + + 1/128 : (s1'=3) & (bc1'=83) + + 1/128 : (s1'=3) & (bc1'=84) + + 1/128 : (s1'=3) & (bc1'=85) + + 1/128 : (s1'=3) & (bc1'=86) + + 1/128 : (s1'=3) & (bc1'=87) + + 1/128 : (s1'=3) & (bc1'=88) + + 1/128 : (s1'=3) & (bc1'=89) + + 1/128 : (s1'=3) & (bc1'=90) + + 1/128 : (s1'=3) & (bc1'=91) + + 1/128 : (s1'=3) & (bc1'=92) + + 1/128 : (s1'=3) & (bc1'=93) + + 1/128 : (s1'=3) & (bc1'=94) + + 1/128 : (s1'=3) & (bc1'=95) + + 1/128 : (s1'=3) & (bc1'=96) + + 1/128 : (s1'=3) & (bc1'=97) + + 1/128 : (s1'=3) & (bc1'=98) + + 1/128 : (s1'=3) & (bc1'=99) + + 1/128 : (s1'=3) & (bc1'=100) + + 1/128 : (s1'=3) & (bc1'=101) + + 1/128 : (s1'=3) & (bc1'=102) + + 1/128 : (s1'=3) & (bc1'=103) + + 1/128 : (s1'=3) & (bc1'=104) + + 1/128 : (s1'=3) & (bc1'=105) + + 1/128 : (s1'=3) & (bc1'=106) + + 1/128 : (s1'=3) & (bc1'=107) + + 1/128 : (s1'=3) & (bc1'=108) + + 1/128 : (s1'=3) & (bc1'=109) + + 1/128 : (s1'=3) & (bc1'=110) + + 1/128 : (s1'=3) & (bc1'=111) + + 1/128 : (s1'=3) & (bc1'=112) + + 1/128 : (s1'=3) & (bc1'=113) + + 1/128 : (s1'=3) & (bc1'=114) + + 1/128 : (s1'=3) & (bc1'=115) + + 1/128 : (s1'=3) & (bc1'=116) + + 1/128 : (s1'=3) & (bc1'=117) + + 1/128 : (s1'=3) & (bc1'=118) + + 1/128 : (s1'=3) & (bc1'=119) + + 1/128 : (s1'=3) & (bc1'=120) + + 1/128 : (s1'=3) & (bc1'=121) + + 1/128 : (s1'=3) & (bc1'=122) + + 1/128 : (s1'=3) & (bc1'=123) + + 1/128 : (s1'=3) & (bc1'=124) + + 1/128 : (s1'=3) & (bc1'=125) + + 1/128 : (s1'=3) & (bc1'=126) + + 1/128 : (s1'=3) & (bc1'=127); + // eigth retransmission + [] s1=2 & cd1=8 -> 1/256 : (s1'=3) & (bc1'=0) + + 1/256 : (s1'=3) & (bc1'=1) + + 1/256 : (s1'=3) & (bc1'=2) + + 1/256 : (s1'=3) & (bc1'=3) + + 1/256 : (s1'=3) & (bc1'=4) + + 1/256 : (s1'=3) & (bc1'=5) + + 1/256 : (s1'=3) & (bc1'=6) + + 1/256 : (s1'=3) & (bc1'=7) + + 1/256 : (s1'=3) & (bc1'=8) + + 1/256 : (s1'=3) & (bc1'=9) + + 1/256 : (s1'=3) & (bc1'=10) + + 1/256 : (s1'=3) & (bc1'=11) + + 1/256 : (s1'=3) & (bc1'=12) + + 1/256 : (s1'=3) & (bc1'=13) + + 1/256 : (s1'=3) & (bc1'=14) + + 1/256 : (s1'=3) & (bc1'=15) + + 1/256 : (s1'=3) & (bc1'=16) + + 1/256 : (s1'=3) & (bc1'=17) + + 1/256 : (s1'=3) & (bc1'=18) + + 1/256 : (s1'=3) & (bc1'=19) + + 1/256 : (s1'=3) & (bc1'=20) + + 1/256 : (s1'=3) & (bc1'=21) + + 1/256 : (s1'=3) & (bc1'=22) + + 1/256 : (s1'=3) & (bc1'=23) + + 1/256 : (s1'=3) & (bc1'=24) + + 1/256 : (s1'=3) & (bc1'=25) + + 1/256 : (s1'=3) & (bc1'=26) + + 1/256 : (s1'=3) & (bc1'=27) + + 1/256 : (s1'=3) & (bc1'=28) + + 1/256 : (s1'=3) & (bc1'=29) + + 1/256 : (s1'=3) & (bc1'=30) + + 1/256 : (s1'=3) & (bc1'=31) + + 1/256 : (s1'=3) & (bc1'=32) + + 1/256 : (s1'=3) & (bc1'=33) + + 1/256 : (s1'=3) & (bc1'=34) + + 1/256 : (s1'=3) & (bc1'=35) + + 1/256 : (s1'=3) & (bc1'=36) + + 1/256 : (s1'=3) & (bc1'=37) + + 1/256 : (s1'=3) & (bc1'=38) + + 1/256 : (s1'=3) & (bc1'=39) + + 1/256 : (s1'=3) & (bc1'=40) + + 1/256 : (s1'=3) & (bc1'=41) + + 1/256 : (s1'=3) & (bc1'=42) + + 1/256 : (s1'=3) & (bc1'=43) + + 1/256 : (s1'=3) & (bc1'=44) + + 1/256 : (s1'=3) & (bc1'=45) + + 1/256 : (s1'=3) & (bc1'=46) + + 1/256 : (s1'=3) & (bc1'=47) + + 1/256 : (s1'=3) & (bc1'=48) + + 1/256 : (s1'=3) & (bc1'=49) + + 1/256 : (s1'=3) & (bc1'=50) + + 1/256 : (s1'=3) & (bc1'=51) + + 1/256 : (s1'=3) & (bc1'=52) + + 1/256 : (s1'=3) & (bc1'=53) + + 1/256 : (s1'=3) & (bc1'=54) + + 1/256 : (s1'=3) & (bc1'=55) + + 1/256 : (s1'=3) & (bc1'=56) + + 1/256 : (s1'=3) & (bc1'=57) + + 1/256 : (s1'=3) & (bc1'=58) + + 1/256 : (s1'=3) & (bc1'=59) + + 1/256 : (s1'=3) & (bc1'=60) + + 1/256 : (s1'=3) & (bc1'=61) + + 1/256 : (s1'=3) & (bc1'=62) + + 1/256 : (s1'=3) & (bc1'=63) + + 1/256 : (s1'=3) & (bc1'=64) + + 1/256 : (s1'=3) & (bc1'=65) + + 1/256 : (s1'=3) & (bc1'=66) + + 1/256 : (s1'=3) & (bc1'=67) + + 1/256 : (s1'=3) & (bc1'=68) + + 1/256 : (s1'=3) & (bc1'=69) + + 1/256 : (s1'=3) & (bc1'=70) + + 1/256 : (s1'=3) & (bc1'=71) + + 1/256 : (s1'=3) & (bc1'=72) + + 1/256 : (s1'=3) & (bc1'=73) + + 1/256 : (s1'=3) & (bc1'=74) + + 1/256 : (s1'=3) & (bc1'=75) + + 1/256 : (s1'=3) & (bc1'=76) + + 1/256 : (s1'=3) & (bc1'=77) + + 1/256 : (s1'=3) & (bc1'=78) + + 1/256 : (s1'=3) & (bc1'=79) + + 1/256 : (s1'=3) & (bc1'=80) + + 1/256 : (s1'=3) & (bc1'=81) + + 1/256 : (s1'=3) & (bc1'=82) + + 1/256 : (s1'=3) & (bc1'=83) + + 1/256 : (s1'=3) & (bc1'=84) + + 1/256 : (s1'=3) & (bc1'=85) + + 1/256 : (s1'=3) & (bc1'=86) + + 1/256 : (s1'=3) & (bc1'=87) + + 1/256 : (s1'=3) & (bc1'=88) + + 1/256 : (s1'=3) & (bc1'=89) + + 1/256 : (s1'=3) & (bc1'=90) + + 1/256 : (s1'=3) & (bc1'=91) + + 1/256 : (s1'=3) & (bc1'=92) + + 1/256 : (s1'=3) & (bc1'=93) + + 1/256 : (s1'=3) & (bc1'=94) + + 1/256 : (s1'=3) & (bc1'=95) + + 1/256 : (s1'=3) & (bc1'=96) + + 1/256 : (s1'=3) & (bc1'=97) + + 1/256 : (s1'=3) & (bc1'=98) + + 1/256 : (s1'=3) & (bc1'=99) + + 1/256 : (s1'=3) & (bc1'=100) + + 1/256 : (s1'=3) & (bc1'=101) + + 1/256 : (s1'=3) & (bc1'=102) + + 1/256 : (s1'=3) & (bc1'=103) + + 1/256 : (s1'=3) & (bc1'=104) + + 1/256 : (s1'=3) & (bc1'=105) + + 1/256 : (s1'=3) & (bc1'=106) + + 1/256 : (s1'=3) & (bc1'=107) + + 1/256 : (s1'=3) & (bc1'=108) + + 1/256 : (s1'=3) & (bc1'=109) + + 1/256 : (s1'=3) & (bc1'=110) + + 1/256 : (s1'=3) & (bc1'=111) + + 1/256 : (s1'=3) & (bc1'=112) + + 1/256 : (s1'=3) & (bc1'=113) + + 1/256 : (s1'=3) & (bc1'=114) + + 1/256 : (s1'=3) & (bc1'=115) + + 1/256 : (s1'=3) & (bc1'=116) + + 1/256 : (s1'=3) & (bc1'=117) + + 1/256 : (s1'=3) & (bc1'=118) + + 1/256 : (s1'=3) & (bc1'=119) + + 1/256 : (s1'=3) & (bc1'=120) + + 1/256 : (s1'=3) & (bc1'=121) + + 1/256 : (s1'=3) & (bc1'=122) + + 1/256 : (s1'=3) & (bc1'=123) + + 1/256 : (s1'=3) & (bc1'=124) + + 1/256 : (s1'=3) & (bc1'=125) + + 1/256 : (s1'=3) & (bc1'=126) + + 1/256 : (s1'=3) & (bc1'=127) + + 1/256 : (s1'=3) & (bc1'=128) + + 1/256 : (s1'=3) & (bc1'=129) + + 1/256 : (s1'=3) & (bc1'=130) + + 1/256 : (s1'=3) & (bc1'=131) + + 1/256 : (s1'=3) & (bc1'=132) + + 1/256 : (s1'=3) & (bc1'=133) + + 1/256 : (s1'=3) & (bc1'=134) + + 1/256 : (s1'=3) & (bc1'=135) + + 1/256 : (s1'=3) & (bc1'=136) + + 1/256 : (s1'=3) & (bc1'=137) + + 1/256 : (s1'=3) & (bc1'=138) + + 1/256 : (s1'=3) & (bc1'=139) + + 1/256 : (s1'=3) & (bc1'=140) + + 1/256 : (s1'=3) & (bc1'=141) + + 1/256 : (s1'=3) & (bc1'=142) + + 1/256 : (s1'=3) & (bc1'=143) + + 1/256 : (s1'=3) & (bc1'=144) + + 1/256 : (s1'=3) & (bc1'=145) + + 1/256 : (s1'=3) & (bc1'=146) + + 1/256 : (s1'=3) & (bc1'=147) + + 1/256 : (s1'=3) & (bc1'=148) + + 1/256 : (s1'=3) & (bc1'=149) + + 1/256 : (s1'=3) & (bc1'=150) + + 1/256 : (s1'=3) & (bc1'=151) + + 1/256 : (s1'=3) & (bc1'=152) + + 1/256 : (s1'=3) & (bc1'=153) + + 1/256 : (s1'=3) & (bc1'=154) + + 1/256 : (s1'=3) & (bc1'=155) + + 1/256 : (s1'=3) & (bc1'=156) + + 1/256 : (s1'=3) & (bc1'=157) + + 1/256 : (s1'=3) & (bc1'=158) + + 1/256 : (s1'=3) & (bc1'=159) + + 1/256 : (s1'=3) & (bc1'=160) + + 1/256 : (s1'=3) & (bc1'=161) + + 1/256 : (s1'=3) & (bc1'=162) + + 1/256 : (s1'=3) & (bc1'=163) + + 1/256 : (s1'=3) & (bc1'=164) + + 1/256 : (s1'=3) & (bc1'=165) + + 1/256 : (s1'=3) & (bc1'=166) + + 1/256 : (s1'=3) & (bc1'=167) + + 1/256 : (s1'=3) & (bc1'=168) + + 1/256 : (s1'=3) & (bc1'=169) + + 1/256 : (s1'=3) & (bc1'=170) + + 1/256 : (s1'=3) & (bc1'=171) + + 1/256 : (s1'=3) & (bc1'=172) + + 1/256 : (s1'=3) & (bc1'=173) + + 1/256 : (s1'=3) & (bc1'=174) + + 1/256 : (s1'=3) & (bc1'=175) + + 1/256 : (s1'=3) & (bc1'=176) + + 1/256 : (s1'=3) & (bc1'=177) + + 1/256 : (s1'=3) & (bc1'=178) + + 1/256 : (s1'=3) & (bc1'=179) + + 1/256 : (s1'=3) & (bc1'=180) + + 1/256 : (s1'=3) & (bc1'=181) + + 1/256 : (s1'=3) & (bc1'=182) + + 1/256 : (s1'=3) & (bc1'=183) + + 1/256 : (s1'=3) & (bc1'=184) + + 1/256 : (s1'=3) & (bc1'=185) + + 1/256 : (s1'=3) & (bc1'=186) + + 1/256 : (s1'=3) & (bc1'=187) + + 1/256 : (s1'=3) & (bc1'=188) + + 1/256 : (s1'=3) & (bc1'=189) + + 1/256 : (s1'=3) & (bc1'=190) + + 1/256 : (s1'=3) & (bc1'=191) + + 1/256 : (s1'=3) & (bc1'=192) + + 1/256 : (s1'=3) & (bc1'=193) + + 1/256 : (s1'=3) & (bc1'=194) + + 1/256 : (s1'=3) & (bc1'=195) + + 1/256 : (s1'=3) & (bc1'=196) + + 1/256 : (s1'=3) & (bc1'=197) + + 1/256 : (s1'=3) & (bc1'=198) + + 1/256 : (s1'=3) & (bc1'=199) + + 1/256 : (s1'=3) & (bc1'=200) + + 1/256 : (s1'=3) & (bc1'=201) + + 1/256 : (s1'=3) & (bc1'=202) + + 1/256 : (s1'=3) & (bc1'=203) + + 1/256 : (s1'=3) & (bc1'=204) + + 1/256 : (s1'=3) & (bc1'=205) + + 1/256 : (s1'=3) & (bc1'=206) + + 1/256 : (s1'=3) & (bc1'=207) + + 1/256 : (s1'=3) & (bc1'=208) + + 1/256 : (s1'=3) & (bc1'=209) + + 1/256 : (s1'=3) & (bc1'=210) + + 1/256 : (s1'=3) & (bc1'=211) + + 1/256 : (s1'=3) & (bc1'=212) + + 1/256 : (s1'=3) & (bc1'=213) + + 1/256 : (s1'=3) & (bc1'=214) + + 1/256 : (s1'=3) & (bc1'=215) + + 1/256 : (s1'=3) & (bc1'=216) + + 1/256 : (s1'=3) & (bc1'=217) + + 1/256 : (s1'=3) & (bc1'=218) + + 1/256 : (s1'=3) & (bc1'=219) + + 1/256 : (s1'=3) & (bc1'=220) + + 1/256 : (s1'=3) & (bc1'=221) + + 1/256 : (s1'=3) & (bc1'=222) + + 1/256 : (s1'=3) & (bc1'=223) + + 1/256 : (s1'=3) & (bc1'=224) + + 1/256 : (s1'=3) & (bc1'=225) + + 1/256 : (s1'=3) & (bc1'=226) + + 1/256 : (s1'=3) & (bc1'=227) + + 1/256 : (s1'=3) & (bc1'=228) + + 1/256 : (s1'=3) & (bc1'=229) + + 1/256 : (s1'=3) & (bc1'=230) + + 1/256 : (s1'=3) & (bc1'=231) + + 1/256 : (s1'=3) & (bc1'=232) + + 1/256 : (s1'=3) & (bc1'=233) + + 1/256 : (s1'=3) & (bc1'=234) + + 1/256 : (s1'=3) & (bc1'=235) + + 1/256 : (s1'=3) & (bc1'=236) + + 1/256 : (s1'=3) & (bc1'=237) + + 1/256 : (s1'=3) & (bc1'=238) + + 1/256 : (s1'=3) & (bc1'=239) + + 1/256 : (s1'=3) & (bc1'=240) + + 1/256 : (s1'=3) & (bc1'=241) + + 1/256 : (s1'=3) & (bc1'=242) + + 1/256 : (s1'=3) & (bc1'=243) + + 1/256 : (s1'=3) & (bc1'=244) + + 1/256 : (s1'=3) & (bc1'=245) + + 1/256 : (s1'=3) & (bc1'=246) + + 1/256 : (s1'=3) & (bc1'=247) + + 1/256 : (s1'=3) & (bc1'=248) + + 1/256 : (s1'=3) & (bc1'=249) + + 1/256 : (s1'=3) & (bc1'=250) + + 1/256 : (s1'=3) & (bc1'=251) + + 1/256 : (s1'=3) & (bc1'=252) + + 1/256 : (s1'=3) & (bc1'=253) + + 1/256 : (s1'=3) & (bc1'=254) + + 1/256 : (s1'=3) & (bc1'=255); + // ninth retransmission + [] s1=2 & cd1=9 -> 1/512 : (s1'=3) & (bc1'=0) + + 1/512 : (s1'=3) & (bc1'=1) + + 1/512 : (s1'=3) & (bc1'=2) + + 1/512 : (s1'=3) & (bc1'=3) + + 1/512 : (s1'=3) & (bc1'=4) + + 1/512 : (s1'=3) & (bc1'=5) + + 1/512 : (s1'=3) & (bc1'=6) + + 1/512 : (s1'=3) & (bc1'=7) + + 1/512 : (s1'=3) & (bc1'=8) + + 1/512 : (s1'=3) & (bc1'=9) + + 1/512 : (s1'=3) & (bc1'=10) + + 1/512 : (s1'=3) & (bc1'=11) + + 1/512 : (s1'=3) & (bc1'=12) + + 1/512 : (s1'=3) & (bc1'=13) + + 1/512 : (s1'=3) & (bc1'=14) + + 1/512 : (s1'=3) & (bc1'=15) + + 1/512 : (s1'=3) & (bc1'=16) + + 1/512 : (s1'=3) & (bc1'=17) + + 1/512 : (s1'=3) & (bc1'=18) + + 1/512 : (s1'=3) & (bc1'=19) + + 1/512 : (s1'=3) & (bc1'=20) + + 1/512 : (s1'=3) & (bc1'=21) + + 1/512 : (s1'=3) & (bc1'=22) + + 1/512 : (s1'=3) & (bc1'=23) + + 1/512 : (s1'=3) & (bc1'=24) + + 1/512 : (s1'=3) & (bc1'=25) + + 1/512 : (s1'=3) & (bc1'=26) + + 1/512 : (s1'=3) & (bc1'=27) + + 1/512 : (s1'=3) & (bc1'=28) + + 1/512 : (s1'=3) & (bc1'=29) + + 1/512 : (s1'=3) & (bc1'=30) + + 1/512 : (s1'=3) & (bc1'=31) + + 1/512 : (s1'=3) & (bc1'=32) + + 1/512 : (s1'=3) & (bc1'=33) + + 1/512 : (s1'=3) & (bc1'=34) + + 1/512 : (s1'=3) & (bc1'=35) + + 1/512 : (s1'=3) & (bc1'=36) + + 1/512 : (s1'=3) & (bc1'=37) + + 1/512 : (s1'=3) & (bc1'=38) + + 1/512 : (s1'=3) & (bc1'=39) + + 1/512 : (s1'=3) & (bc1'=40) + + 1/512 : (s1'=3) & (bc1'=41) + + 1/512 : (s1'=3) & (bc1'=42) + + 1/512 : (s1'=3) & (bc1'=43) + + 1/512 : (s1'=3) & (bc1'=44) + + 1/512 : (s1'=3) & (bc1'=45) + + 1/512 : (s1'=3) & (bc1'=46) + + 1/512 : (s1'=3) & (bc1'=47) + + 1/512 : (s1'=3) & (bc1'=48) + + 1/512 : (s1'=3) & (bc1'=49) + + 1/512 : (s1'=3) & (bc1'=50) + + 1/512 : (s1'=3) & (bc1'=51) + + 1/512 : (s1'=3) & (bc1'=52) + + 1/512 : (s1'=3) & (bc1'=53) + + 1/512 : (s1'=3) & (bc1'=54) + + 1/512 : (s1'=3) & (bc1'=55) + + 1/512 : (s1'=3) & (bc1'=56) + + 1/512 : (s1'=3) & (bc1'=57) + + 1/512 : (s1'=3) & (bc1'=58) + + 1/512 : (s1'=3) & (bc1'=59) + + 1/512 : (s1'=3) & (bc1'=60) + + 1/512 : (s1'=3) & (bc1'=61) + + 1/512 : (s1'=3) & (bc1'=62) + + 1/512 : (s1'=3) & (bc1'=63) + + 1/512 : (s1'=3) & (bc1'=64) + + 1/512 : (s1'=3) & (bc1'=65) + + 1/512 : (s1'=3) & (bc1'=66) + + 1/512 : (s1'=3) & (bc1'=67) + + 1/512 : (s1'=3) & (bc1'=68) + + 1/512 : (s1'=3) & (bc1'=69) + + 1/512 : (s1'=3) & (bc1'=70) + + 1/512 : (s1'=3) & (bc1'=71) + + 1/512 : (s1'=3) & (bc1'=72) + + 1/512 : (s1'=3) & (bc1'=73) + + 1/512 : (s1'=3) & (bc1'=74) + + 1/512 : (s1'=3) & (bc1'=75) + + 1/512 : (s1'=3) & (bc1'=76) + + 1/512 : (s1'=3) & (bc1'=77) + + 1/512 : (s1'=3) & (bc1'=78) + + 1/512 : (s1'=3) & (bc1'=79) + + 1/512 : (s1'=3) & (bc1'=80) + + 1/512 : (s1'=3) & (bc1'=81) + + 1/512 : (s1'=3) & (bc1'=82) + + 1/512 : (s1'=3) & (bc1'=83) + + 1/512 : (s1'=3) & (bc1'=84) + + 1/512 : (s1'=3) & (bc1'=85) + + 1/512 : (s1'=3) & (bc1'=86) + + 1/512 : (s1'=3) & (bc1'=87) + + 1/512 : (s1'=3) & (bc1'=88) + + 1/512 : (s1'=3) & (bc1'=89) + + 1/512 : (s1'=3) & (bc1'=90) + + 1/512 : (s1'=3) & (bc1'=91) + + 1/512 : (s1'=3) & (bc1'=92) + + 1/512 : (s1'=3) & (bc1'=93) + + 1/512 : (s1'=3) & (bc1'=94) + + 1/512 : (s1'=3) & (bc1'=95) + + 1/512 : (s1'=3) & (bc1'=96) + + 1/512 : (s1'=3) & (bc1'=97) + + 1/512 : (s1'=3) & (bc1'=98) + + 1/512 : (s1'=3) & (bc1'=99) + + 1/512 : (s1'=3) & (bc1'=100) + + 1/512 : (s1'=3) & (bc1'=101) + + 1/512 : (s1'=3) & (bc1'=102) + + 1/512 : (s1'=3) & (bc1'=103) + + 1/512 : (s1'=3) & (bc1'=104) + + 1/512 : (s1'=3) & (bc1'=105) + + 1/512 : (s1'=3) & (bc1'=106) + + 1/512 : (s1'=3) & (bc1'=107) + + 1/512 : (s1'=3) & (bc1'=108) + + 1/512 : (s1'=3) & (bc1'=109) + + 1/512 : (s1'=3) & (bc1'=110) + + 1/512 : (s1'=3) & (bc1'=111) + + 1/512 : (s1'=3) & (bc1'=112) + + 1/512 : (s1'=3) & (bc1'=113) + + 1/512 : (s1'=3) & (bc1'=114) + + 1/512 : (s1'=3) & (bc1'=115) + + 1/512 : (s1'=3) & (bc1'=116) + + 1/512 : (s1'=3) & (bc1'=117) + + 1/512 : (s1'=3) & (bc1'=118) + + 1/512 : (s1'=3) & (bc1'=119) + + 1/512 : (s1'=3) & (bc1'=120) + + 1/512 : (s1'=3) & (bc1'=121) + + 1/512 : (s1'=3) & (bc1'=122) + + 1/512 : (s1'=3) & (bc1'=123) + + 1/512 : (s1'=3) & (bc1'=124) + + 1/512 : (s1'=3) & (bc1'=125) + + 1/512 : (s1'=3) & (bc1'=126) + + 1/512 : (s1'=3) & (bc1'=127) + + 1/512 : (s1'=3) & (bc1'=128) + + 1/512 : (s1'=3) & (bc1'=129) + + 1/512 : (s1'=3) & (bc1'=130) + + 1/512 : (s1'=3) & (bc1'=131) + + 1/512 : (s1'=3) & (bc1'=132) + + 1/512 : (s1'=3) & (bc1'=133) + + 1/512 : (s1'=3) & (bc1'=134) + + 1/512 : (s1'=3) & (bc1'=135) + + 1/512 : (s1'=3) & (bc1'=136) + + 1/512 : (s1'=3) & (bc1'=137) + + 1/512 : (s1'=3) & (bc1'=138) + + 1/512 : (s1'=3) & (bc1'=139) + + 1/512 : (s1'=3) & (bc1'=140) + + 1/512 : (s1'=3) & (bc1'=141) + + 1/512 : (s1'=3) & (bc1'=142) + + 1/512 : (s1'=3) & (bc1'=143) + + 1/512 : (s1'=3) & (bc1'=144) + + 1/512 : (s1'=3) & (bc1'=145) + + 1/512 : (s1'=3) & (bc1'=146) + + 1/512 : (s1'=3) & (bc1'=147) + + 1/512 : (s1'=3) & (bc1'=148) + + 1/512 : (s1'=3) & (bc1'=149) + + 1/512 : (s1'=3) & (bc1'=150) + + 1/512 : (s1'=3) & (bc1'=151) + + 1/512 : (s1'=3) & (bc1'=152) + + 1/512 : (s1'=3) & (bc1'=153) + + 1/512 : (s1'=3) & (bc1'=154) + + 1/512 : (s1'=3) & (bc1'=155) + + 1/512 : (s1'=3) & (bc1'=156) + + 1/512 : (s1'=3) & (bc1'=157) + + 1/512 : (s1'=3) & (bc1'=158) + + 1/512 : (s1'=3) & (bc1'=159) + + 1/512 : (s1'=3) & (bc1'=160) + + 1/512 : (s1'=3) & (bc1'=161) + + 1/512 : (s1'=3) & (bc1'=162) + + 1/512 : (s1'=3) & (bc1'=163) + + 1/512 : (s1'=3) & (bc1'=164) + + 1/512 : (s1'=3) & (bc1'=165) + + 1/512 : (s1'=3) & (bc1'=166) + + 1/512 : (s1'=3) & (bc1'=167) + + 1/512 : (s1'=3) & (bc1'=168) + + 1/512 : (s1'=3) & (bc1'=169) + + 1/512 : (s1'=3) & (bc1'=170) + + 1/512 : (s1'=3) & (bc1'=171) + + 1/512 : (s1'=3) & (bc1'=172) + + 1/512 : (s1'=3) & (bc1'=173) + + 1/512 : (s1'=3) & (bc1'=174) + + 1/512 : (s1'=3) & (bc1'=175) + + 1/512 : (s1'=3) & (bc1'=176) + + 1/512 : (s1'=3) & (bc1'=177) + + 1/512 : (s1'=3) & (bc1'=178) + + 1/512 : (s1'=3) & (bc1'=179) + + 1/512 : (s1'=3) & (bc1'=180) + + 1/512 : (s1'=3) & (bc1'=181) + + 1/512 : (s1'=3) & (bc1'=182) + + 1/512 : (s1'=3) & (bc1'=183) + + 1/512 : (s1'=3) & (bc1'=184) + + 1/512 : (s1'=3) & (bc1'=185) + + 1/512 : (s1'=3) & (bc1'=186) + + 1/512 : (s1'=3) & (bc1'=187) + + 1/512 : (s1'=3) & (bc1'=188) + + 1/512 : (s1'=3) & (bc1'=189) + + 1/512 : (s1'=3) & (bc1'=190) + + 1/512 : (s1'=3) & (bc1'=191) + + 1/512 : (s1'=3) & (bc1'=192) + + 1/512 : (s1'=3) & (bc1'=193) + + 1/512 : (s1'=3) & (bc1'=194) + + 1/512 : (s1'=3) & (bc1'=195) + + 1/512 : (s1'=3) & (bc1'=196) + + 1/512 : (s1'=3) & (bc1'=197) + + 1/512 : (s1'=3) & (bc1'=198) + + 1/512 : (s1'=3) & (bc1'=199) + + 1/512 : (s1'=3) & (bc1'=200) + + 1/512 : (s1'=3) & (bc1'=201) + + 1/512 : (s1'=3) & (bc1'=202) + + 1/512 : (s1'=3) & (bc1'=203) + + 1/512 : (s1'=3) & (bc1'=204) + + 1/512 : (s1'=3) & (bc1'=205) + + 1/512 : (s1'=3) & (bc1'=206) + + 1/512 : (s1'=3) & (bc1'=207) + + 1/512 : (s1'=3) & (bc1'=208) + + 1/512 : (s1'=3) & (bc1'=209) + + 1/512 : (s1'=3) & (bc1'=210) + + 1/512 : (s1'=3) & (bc1'=211) + + 1/512 : (s1'=3) & (bc1'=212) + + 1/512 : (s1'=3) & (bc1'=213) + + 1/512 : (s1'=3) & (bc1'=214) + + 1/512 : (s1'=3) & (bc1'=215) + + 1/512 : (s1'=3) & (bc1'=216) + + 1/512 : (s1'=3) & (bc1'=217) + + 1/512 : (s1'=3) & (bc1'=218) + + 1/512 : (s1'=3) & (bc1'=219) + + 1/512 : (s1'=3) & (bc1'=220) + + 1/512 : (s1'=3) & (bc1'=221) + + 1/512 : (s1'=3) & (bc1'=222) + + 1/512 : (s1'=3) & (bc1'=223) + + 1/512 : (s1'=3) & (bc1'=224) + + 1/512 : (s1'=3) & (bc1'=225) + + 1/512 : (s1'=3) & (bc1'=226) + + 1/512 : (s1'=3) & (bc1'=227) + + 1/512 : (s1'=3) & (bc1'=228) + + 1/512 : (s1'=3) & (bc1'=229) + + 1/512 : (s1'=3) & (bc1'=230) + + 1/512 : (s1'=3) & (bc1'=231) + + 1/512 : (s1'=3) & (bc1'=232) + + 1/512 : (s1'=3) & (bc1'=233) + + 1/512 : (s1'=3) & (bc1'=234) + + 1/512 : (s1'=3) & (bc1'=235) + + 1/512 : (s1'=3) & (bc1'=236) + + 1/512 : (s1'=3) & (bc1'=237) + + 1/512 : (s1'=3) & (bc1'=238) + + 1/512 : (s1'=3) & (bc1'=239) + + 1/512 : (s1'=3) & (bc1'=240) + + 1/512 : (s1'=3) & (bc1'=241) + + 1/512 : (s1'=3) & (bc1'=242) + + 1/512 : (s1'=3) & (bc1'=243) + + 1/512 : (s1'=3) & (bc1'=244) + + 1/512 : (s1'=3) & (bc1'=245) + + 1/512 : (s1'=3) & (bc1'=246) + + 1/512 : (s1'=3) & (bc1'=247) + + 1/512 : (s1'=3) & (bc1'=248) + + 1/512 : (s1'=3) & (bc1'=249) + + 1/512 : (s1'=3) & (bc1'=250) + + 1/512 : (s1'=3) & (bc1'=251) + + 1/512 : (s1'=3) & (bc1'=252) + + 1/512 : (s1'=3) & (bc1'=253) + + 1/512 : (s1'=3) & (bc1'=254) + + 1/512 : (s1'=3) & (bc1'=255) + + 1/512 : (s1'=3) & (bc1'=256) + + 1/512 : (s1'=3) & (bc1'=257) + + 1/512 : (s1'=3) & (bc1'=258) + + 1/512 : (s1'=3) & (bc1'=259) + + 1/512 : (s1'=3) & (bc1'=260) + + 1/512 : (s1'=3) & (bc1'=261) + + 1/512 : (s1'=3) & (bc1'=262) + + 1/512 : (s1'=3) & (bc1'=263) + + 1/512 : (s1'=3) & (bc1'=264) + + 1/512 : (s1'=3) & (bc1'=265) + + 1/512 : (s1'=3) & (bc1'=266) + + 1/512 : (s1'=3) & (bc1'=267) + + 1/512 : (s1'=3) & (bc1'=268) + + 1/512 : (s1'=3) & (bc1'=269) + + 1/512 : (s1'=3) & (bc1'=270) + + 1/512 : (s1'=3) & (bc1'=271) + + 1/512 : (s1'=3) & (bc1'=272) + + 1/512 : (s1'=3) & (bc1'=273) + + 1/512 : (s1'=3) & (bc1'=274) + + 1/512 : (s1'=3) & (bc1'=275) + + 1/512 : (s1'=3) & (bc1'=276) + + 1/512 : (s1'=3) & (bc1'=277) + + 1/512 : (s1'=3) & (bc1'=278) + + 1/512 : (s1'=3) & (bc1'=279) + + 1/512 : (s1'=3) & (bc1'=280) + + 1/512 : (s1'=3) & (bc1'=281) + + 1/512 : (s1'=3) & (bc1'=282) + + 1/512 : (s1'=3) & (bc1'=283) + + 1/512 : (s1'=3) & (bc1'=284) + + 1/512 : (s1'=3) & (bc1'=285) + + 1/512 : (s1'=3) & (bc1'=286) + + 1/512 : (s1'=3) & (bc1'=287) + + 1/512 : (s1'=3) & (bc1'=288) + + 1/512 : (s1'=3) & (bc1'=289) + + 1/512 : (s1'=3) & (bc1'=290) + + 1/512 : (s1'=3) & (bc1'=291) + + 1/512 : (s1'=3) & (bc1'=292) + + 1/512 : (s1'=3) & (bc1'=293) + + 1/512 : (s1'=3) & (bc1'=294) + + 1/512 : (s1'=3) & (bc1'=295) + + 1/512 : (s1'=3) & (bc1'=296) + + 1/512 : (s1'=3) & (bc1'=297) + + 1/512 : (s1'=3) & (bc1'=298) + + 1/512 : (s1'=3) & (bc1'=299) + + 1/512 : (s1'=3) & (bc1'=300) + + 1/512 : (s1'=3) & (bc1'=301) + + 1/512 : (s1'=3) & (bc1'=302) + + 1/512 : (s1'=3) & (bc1'=303) + + 1/512 : (s1'=3) & (bc1'=304) + + 1/512 : (s1'=3) & (bc1'=305) + + 1/512 : (s1'=3) & (bc1'=306) + + 1/512 : (s1'=3) & (bc1'=307) + + 1/512 : (s1'=3) & (bc1'=308) + + 1/512 : (s1'=3) & (bc1'=309) + + 1/512 : (s1'=3) & (bc1'=310) + + 1/512 : (s1'=3) & (bc1'=311) + + 1/512 : (s1'=3) & (bc1'=312) + + 1/512 : (s1'=3) & (bc1'=313) + + 1/512 : (s1'=3) & (bc1'=314) + + 1/512 : (s1'=3) & (bc1'=315) + + 1/512 : (s1'=3) & (bc1'=316) + + 1/512 : (s1'=3) & (bc1'=317) + + 1/512 : (s1'=3) & (bc1'=318) + + 1/512 : (s1'=3) & (bc1'=319) + + 1/512 : (s1'=3) & (bc1'=320) + + 1/512 : (s1'=3) & (bc1'=321) + + 1/512 : (s1'=3) & (bc1'=322) + + 1/512 : (s1'=3) & (bc1'=323) + + 1/512 : (s1'=3) & (bc1'=324) + + 1/512 : (s1'=3) & (bc1'=325) + + 1/512 : (s1'=3) & (bc1'=326) + + 1/512 : (s1'=3) & (bc1'=327) + + 1/512 : (s1'=3) & (bc1'=328) + + 1/512 : (s1'=3) & (bc1'=329) + + 1/512 : (s1'=3) & (bc1'=330) + + 1/512 : (s1'=3) & (bc1'=331) + + 1/512 : (s1'=3) & (bc1'=332) + + 1/512 : (s1'=3) & (bc1'=333) + + 1/512 : (s1'=3) & (bc1'=334) + + 1/512 : (s1'=3) & (bc1'=335) + + 1/512 : (s1'=3) & (bc1'=336) + + 1/512 : (s1'=3) & (bc1'=337) + + 1/512 : (s1'=3) & (bc1'=338) + + 1/512 : (s1'=3) & (bc1'=339) + + 1/512 : (s1'=3) & (bc1'=340) + + 1/512 : (s1'=3) & (bc1'=341) + + 1/512 : (s1'=3) & (bc1'=342) + + 1/512 : (s1'=3) & (bc1'=343) + + 1/512 : (s1'=3) & (bc1'=344) + + 1/512 : (s1'=3) & (bc1'=345) + + 1/512 : (s1'=3) & (bc1'=346) + + 1/512 : (s1'=3) & (bc1'=347) + + 1/512 : (s1'=3) & (bc1'=348) + + 1/512 : (s1'=3) & (bc1'=349) + + 1/512 : (s1'=3) & (bc1'=350) + + 1/512 : (s1'=3) & (bc1'=351) + + 1/512 : (s1'=3) & (bc1'=352) + + 1/512 : (s1'=3) & (bc1'=353) + + 1/512 : (s1'=3) & (bc1'=354) + + 1/512 : (s1'=3) & (bc1'=355) + + 1/512 : (s1'=3) & (bc1'=356) + + 1/512 : (s1'=3) & (bc1'=357) + + 1/512 : (s1'=3) & (bc1'=358) + + 1/512 : (s1'=3) & (bc1'=359) + + 1/512 : (s1'=3) & (bc1'=360) + + 1/512 : (s1'=3) & (bc1'=361) + + 1/512 : (s1'=3) & (bc1'=362) + + 1/512 : (s1'=3) & (bc1'=363) + + 1/512 : (s1'=3) & (bc1'=364) + + 1/512 : (s1'=3) & (bc1'=365) + + 1/512 : (s1'=3) & (bc1'=366) + + 1/512 : (s1'=3) & (bc1'=367) + + 1/512 : (s1'=3) & (bc1'=368) + + 1/512 : (s1'=3) & (bc1'=369) + + 1/512 : (s1'=3) & (bc1'=370) + + 1/512 : (s1'=3) & (bc1'=371) + + 1/512 : (s1'=3) & (bc1'=372) + + 1/512 : (s1'=3) & (bc1'=373) + + 1/512 : (s1'=3) & (bc1'=374) + + 1/512 : (s1'=3) & (bc1'=375) + + 1/512 : (s1'=3) & (bc1'=376) + + 1/512 : (s1'=3) & (bc1'=377) + + 1/512 : (s1'=3) & (bc1'=378) + + 1/512 : (s1'=3) & (bc1'=379) + + 1/512 : (s1'=3) & (bc1'=380) + + 1/512 : (s1'=3) & (bc1'=381) + + 1/512 : (s1'=3) & (bc1'=382) + + 1/512 : (s1'=3) & (bc1'=383) + + 1/512 : (s1'=3) & (bc1'=384) + + 1/512 : (s1'=3) & (bc1'=385) + + 1/512 : (s1'=3) & (bc1'=386) + + 1/512 : (s1'=3) & (bc1'=387) + + 1/512 : (s1'=3) & (bc1'=388) + + 1/512 : (s1'=3) & (bc1'=389) + + 1/512 : (s1'=3) & (bc1'=390) + + 1/512 : (s1'=3) & (bc1'=391) + + 1/512 : (s1'=3) & (bc1'=392) + + 1/512 : (s1'=3) & (bc1'=393) + + 1/512 : (s1'=3) & (bc1'=394) + + 1/512 : (s1'=3) & (bc1'=395) + + 1/512 : (s1'=3) & (bc1'=396) + + 1/512 : (s1'=3) & (bc1'=397) + + 1/512 : (s1'=3) & (bc1'=398) + + 1/512 : (s1'=3) & (bc1'=399) + + 1/512 : (s1'=3) & (bc1'=400) + + 1/512 : (s1'=3) & (bc1'=401) + + 1/512 : (s1'=3) & (bc1'=402) + + 1/512 : (s1'=3) & (bc1'=403) + + 1/512 : (s1'=3) & (bc1'=404) + + 1/512 : (s1'=3) & (bc1'=405) + + 1/512 : (s1'=3) & (bc1'=406) + + 1/512 : (s1'=3) & (bc1'=407) + + 1/512 : (s1'=3) & (bc1'=408) + + 1/512 : (s1'=3) & (bc1'=409) + + 1/512 : (s1'=3) & (bc1'=410) + + 1/512 : (s1'=3) & (bc1'=411) + + 1/512 : (s1'=3) & (bc1'=412) + + 1/512 : (s1'=3) & (bc1'=413) + + 1/512 : (s1'=3) & (bc1'=414) + + 1/512 : (s1'=3) & (bc1'=415) + + 1/512 : (s1'=3) & (bc1'=416) + + 1/512 : (s1'=3) & (bc1'=417) + + 1/512 : (s1'=3) & (bc1'=418) + + 1/512 : (s1'=3) & (bc1'=419) + + 1/512 : (s1'=3) & (bc1'=420) + + 1/512 : (s1'=3) & (bc1'=421) + + 1/512 : (s1'=3) & (bc1'=422) + + 1/512 : (s1'=3) & (bc1'=423) + + 1/512 : (s1'=3) & (bc1'=424) + + 1/512 : (s1'=3) & (bc1'=425) + + 1/512 : (s1'=3) & (bc1'=426) + + 1/512 : (s1'=3) & (bc1'=427) + + 1/512 : (s1'=3) & (bc1'=428) + + 1/512 : (s1'=3) & (bc1'=429) + + 1/512 : (s1'=3) & (bc1'=430) + + 1/512 : (s1'=3) & (bc1'=431) + + 1/512 : (s1'=3) & (bc1'=432) + + 1/512 : (s1'=3) & (bc1'=433) + + 1/512 : (s1'=3) & (bc1'=434) + + 1/512 : (s1'=3) & (bc1'=435) + + 1/512 : (s1'=3) & (bc1'=436) + + 1/512 : (s1'=3) & (bc1'=437) + + 1/512 : (s1'=3) & (bc1'=438) + + 1/512 : (s1'=3) & (bc1'=439) + + 1/512 : (s1'=3) & (bc1'=440) + + 1/512 : (s1'=3) & (bc1'=441) + + 1/512 : (s1'=3) & (bc1'=442) + + 1/512 : (s1'=3) & (bc1'=443) + + 1/512 : (s1'=3) & (bc1'=444) + + 1/512 : (s1'=3) & (bc1'=445) + + 1/512 : (s1'=3) & (bc1'=446) + + 1/512 : (s1'=3) & (bc1'=447) + + 1/512 : (s1'=3) & (bc1'=448) + + 1/512 : (s1'=3) & (bc1'=449) + + 1/512 : (s1'=3) & (bc1'=450) + + 1/512 : (s1'=3) & (bc1'=451) + + 1/512 : (s1'=3) & (bc1'=452) + + 1/512 : (s1'=3) & (bc1'=453) + + 1/512 : (s1'=3) & (bc1'=454) + + 1/512 : (s1'=3) & (bc1'=455) + + 1/512 : (s1'=3) & (bc1'=456) + + 1/512 : (s1'=3) & (bc1'=457) + + 1/512 : (s1'=3) & (bc1'=458) + + 1/512 : (s1'=3) & (bc1'=459) + + 1/512 : (s1'=3) & (bc1'=460) + + 1/512 : (s1'=3) & (bc1'=461) + + 1/512 : (s1'=3) & (bc1'=462) + + 1/512 : (s1'=3) & (bc1'=463) + + 1/512 : (s1'=3) & (bc1'=464) + + 1/512 : (s1'=3) & (bc1'=465) + + 1/512 : (s1'=3) & (bc1'=466) + + 1/512 : (s1'=3) & (bc1'=467) + + 1/512 : (s1'=3) & (bc1'=468) + + 1/512 : (s1'=3) & (bc1'=469) + + 1/512 : (s1'=3) & (bc1'=470) + + 1/512 : (s1'=3) & (bc1'=471) + + 1/512 : (s1'=3) & (bc1'=472) + + 1/512 : (s1'=3) & (bc1'=473) + + 1/512 : (s1'=3) & (bc1'=474) + + 1/512 : (s1'=3) & (bc1'=475) + + 1/512 : (s1'=3) & (bc1'=476) + + 1/512 : (s1'=3) & (bc1'=477) + + 1/512 : (s1'=3) & (bc1'=478) + + 1/512 : (s1'=3) & (bc1'=479) + + 1/512 : (s1'=3) & (bc1'=480) + + 1/512 : (s1'=3) & (bc1'=481) + + 1/512 : (s1'=3) & (bc1'=482) + + 1/512 : (s1'=3) & (bc1'=483) + + 1/512 : (s1'=3) & (bc1'=484) + + 1/512 : (s1'=3) & (bc1'=485) + + 1/512 : (s1'=3) & (bc1'=486) + + 1/512 : (s1'=3) & (bc1'=487) + + 1/512 : (s1'=3) & (bc1'=488) + + 1/512 : (s1'=3) & (bc1'=489) + + 1/512 : (s1'=3) & (bc1'=490) + + 1/512 : (s1'=3) & (bc1'=491) + + 1/512 : (s1'=3) & (bc1'=492) + + 1/512 : (s1'=3) & (bc1'=493) + + 1/512 : (s1'=3) & (bc1'=494) + + 1/512 : (s1'=3) & (bc1'=495) + + 1/512 : (s1'=3) & (bc1'=496) + + 1/512 : (s1'=3) & (bc1'=497) + + 1/512 : (s1'=3) & (bc1'=498) + + 1/512 : (s1'=3) & (bc1'=499) + + 1/512 : (s1'=3) & (bc1'=500) + + 1/512 : (s1'=3) & (bc1'=501) + + 1/512 : (s1'=3) & (bc1'=502) + + 1/512 : (s1'=3) & (bc1'=503) + + 1/512 : (s1'=3) & (bc1'=504) + + 1/512 : (s1'=3) & (bc1'=505) + + 1/512 : (s1'=3) & (bc1'=506) + + 1/512 : (s1'=3) & (bc1'=507) + + 1/512 : (s1'=3) & (bc1'=508) + + 1/512 : (s1'=3) & (bc1'=509) + + 1/512 : (s1'=3) & (bc1'=510) + + 1/512 : (s1'=3) & (bc1'=511); + // tenth (or more) retransmission + [] s1=2 & cd1=10 -> 1/1024 : (s1'=3) & (bc1'=0) + + 1/1024 : (s1'=3) & (bc1'=1) + + 1/1024 : (s1'=3) & (bc1'=2) + + 1/1024 : (s1'=3) & (bc1'=3) + + 1/1024 : (s1'=3) & (bc1'=4) + + 1/1024 : (s1'=3) & (bc1'=5) + + 1/1024 : (s1'=3) & (bc1'=6) + + 1/1024 : (s1'=3) & (bc1'=7) + + 1/1024 : (s1'=3) & (bc1'=8) + + 1/1024 : (s1'=3) & (bc1'=9) + + 1/1024 : (s1'=3) & (bc1'=10) + + 1/1024 : (s1'=3) & (bc1'=11) + + 1/1024 : (s1'=3) & (bc1'=12) + + 1/1024 : (s1'=3) & (bc1'=13) + + 1/1024 : (s1'=3) & (bc1'=14) + + 1/1024 : (s1'=3) & (bc1'=15) + + 1/1024 : (s1'=3) & (bc1'=16) + + 1/1024 : (s1'=3) & (bc1'=17) + + 1/1024 : (s1'=3) & (bc1'=18) + + 1/1024 : (s1'=3) & (bc1'=19) + + 1/1024 : (s1'=3) & (bc1'=20) + + 1/1024 : (s1'=3) & (bc1'=21) + + 1/1024 : (s1'=3) & (bc1'=22) + + 1/1024 : (s1'=3) & (bc1'=23) + + 1/1024 : (s1'=3) & (bc1'=24) + + 1/1024 : (s1'=3) & (bc1'=25) + + 1/1024 : (s1'=3) & (bc1'=26) + + 1/1024 : (s1'=3) & (bc1'=27) + + 1/1024 : (s1'=3) & (bc1'=28) + + 1/1024 : (s1'=3) & (bc1'=29) + + 1/1024 : (s1'=3) & (bc1'=30) + + 1/1024 : (s1'=3) & (bc1'=31) + + 1/1024 : (s1'=3) & (bc1'=32) + + 1/1024 : (s1'=3) & (bc1'=33) + + 1/1024 : (s1'=3) & (bc1'=34) + + 1/1024 : (s1'=3) & (bc1'=35) + + 1/1024 : (s1'=3) & (bc1'=36) + + 1/1024 : (s1'=3) & (bc1'=37) + + 1/1024 : (s1'=3) & (bc1'=38) + + 1/1024 : (s1'=3) & (bc1'=39) + + 1/1024 : (s1'=3) & (bc1'=40) + + 1/1024 : (s1'=3) & (bc1'=41) + + 1/1024 : (s1'=3) & (bc1'=42) + + 1/1024 : (s1'=3) & (bc1'=43) + + 1/1024 : (s1'=3) & (bc1'=44) + + 1/1024 : (s1'=3) & (bc1'=45) + + 1/1024 : (s1'=3) & (bc1'=46) + + 1/1024 : (s1'=3) & (bc1'=47) + + 1/1024 : (s1'=3) & (bc1'=48) + + 1/1024 : (s1'=3) & (bc1'=49) + + 1/1024 : (s1'=3) & (bc1'=50) + + 1/1024 : (s1'=3) & (bc1'=51) + + 1/1024 : (s1'=3) & (bc1'=52) + + 1/1024 : (s1'=3) & (bc1'=53) + + 1/1024 : (s1'=3) & (bc1'=54) + + 1/1024 : (s1'=3) & (bc1'=55) + + 1/1024 : (s1'=3) & (bc1'=56) + + 1/1024 : (s1'=3) & (bc1'=57) + + 1/1024 : (s1'=3) & (bc1'=58) + + 1/1024 : (s1'=3) & (bc1'=59) + + 1/1024 : (s1'=3) & (bc1'=60) + + 1/1024 : (s1'=3) & (bc1'=61) + + 1/1024 : (s1'=3) & (bc1'=62) + + 1/1024 : (s1'=3) & (bc1'=63) + + 1/1024 : (s1'=3) & (bc1'=64) + + 1/1024 : (s1'=3) & (bc1'=65) + + 1/1024 : (s1'=3) & (bc1'=66) + + 1/1024 : (s1'=3) & (bc1'=67) + + 1/1024 : (s1'=3) & (bc1'=68) + + 1/1024 : (s1'=3) & (bc1'=69) + + 1/1024 : (s1'=3) & (bc1'=70) + + 1/1024 : (s1'=3) & (bc1'=71) + + 1/1024 : (s1'=3) & (bc1'=72) + + 1/1024 : (s1'=3) & (bc1'=73) + + 1/1024 : (s1'=3) & (bc1'=74) + + 1/1024 : (s1'=3) & (bc1'=75) + + 1/1024 : (s1'=3) & (bc1'=76) + + 1/1024 : (s1'=3) & (bc1'=77) + + 1/1024 : (s1'=3) & (bc1'=78) + + 1/1024 : (s1'=3) & (bc1'=79) + + 1/1024 : (s1'=3) & (bc1'=80) + + 1/1024 : (s1'=3) & (bc1'=81) + + 1/1024 : (s1'=3) & (bc1'=82) + + 1/1024 : (s1'=3) & (bc1'=83) + + 1/1024 : (s1'=3) & (bc1'=84) + + 1/1024 : (s1'=3) & (bc1'=85) + + 1/1024 : (s1'=3) & (bc1'=86) + + 1/1024 : (s1'=3) & (bc1'=87) + + 1/1024 : (s1'=3) & (bc1'=88) + + 1/1024 : (s1'=3) & (bc1'=89) + + 1/1024 : (s1'=3) & (bc1'=90) + + 1/1024 : (s1'=3) & (bc1'=91) + + 1/1024 : (s1'=3) & (bc1'=92) + + 1/1024 : (s1'=3) & (bc1'=93) + + 1/1024 : (s1'=3) & (bc1'=94) + + 1/1024 : (s1'=3) & (bc1'=95) + + 1/1024 : (s1'=3) & (bc1'=96) + + 1/1024 : (s1'=3) & (bc1'=97) + + 1/1024 : (s1'=3) & (bc1'=98) + + 1/1024 : (s1'=3) & (bc1'=99) + + 1/1024 : (s1'=3) & (bc1'=100) + + 1/1024 : (s1'=3) & (bc1'=101) + + 1/1024 : (s1'=3) & (bc1'=102) + + 1/1024 : (s1'=3) & (bc1'=103) + + 1/1024 : (s1'=3) & (bc1'=104) + + 1/1024 : (s1'=3) & (bc1'=105) + + 1/1024 : (s1'=3) & (bc1'=106) + + 1/1024 : (s1'=3) & (bc1'=107) + + 1/1024 : (s1'=3) & (bc1'=108) + + 1/1024 : (s1'=3) & (bc1'=109) + + 1/1024 : (s1'=3) & (bc1'=110) + + 1/1024 : (s1'=3) & (bc1'=111) + + 1/1024 : (s1'=3) & (bc1'=112) + + 1/1024 : (s1'=3) & (bc1'=113) + + 1/1024 : (s1'=3) & (bc1'=114) + + 1/1024 : (s1'=3) & (bc1'=115) + + 1/1024 : (s1'=3) & (bc1'=116) + + 1/1024 : (s1'=3) & (bc1'=117) + + 1/1024 : (s1'=3) & (bc1'=118) + + 1/1024 : (s1'=3) & (bc1'=119) + + 1/1024 : (s1'=3) & (bc1'=120) + + 1/1024 : (s1'=3) & (bc1'=121) + + 1/1024 : (s1'=3) & (bc1'=122) + + 1/1024 : (s1'=3) & (bc1'=123) + + 1/1024 : (s1'=3) & (bc1'=124) + + 1/1024 : (s1'=3) & (bc1'=125) + + 1/1024 : (s1'=3) & (bc1'=126) + + 1/1024 : (s1'=3) & (bc1'=127) + + 1/1024 : (s1'=3) & (bc1'=128) + + 1/1024 : (s1'=3) & (bc1'=129) + + 1/1024 : (s1'=3) & (bc1'=130) + + 1/1024 : (s1'=3) & (bc1'=131) + + 1/1024 : (s1'=3) & (bc1'=132) + + 1/1024 : (s1'=3) & (bc1'=133) + + 1/1024 : (s1'=3) & (bc1'=134) + + 1/1024 : (s1'=3) & (bc1'=135) + + 1/1024 : (s1'=3) & (bc1'=136) + + 1/1024 : (s1'=3) & (bc1'=137) + + 1/1024 : (s1'=3) & (bc1'=138) + + 1/1024 : (s1'=3) & (bc1'=139) + + 1/1024 : (s1'=3) & (bc1'=140) + + 1/1024 : (s1'=3) & (bc1'=141) + + 1/1024 : (s1'=3) & (bc1'=142) + + 1/1024 : (s1'=3) & (bc1'=143) + + 1/1024 : (s1'=3) & (bc1'=144) + + 1/1024 : (s1'=3) & (bc1'=145) + + 1/1024 : (s1'=3) & (bc1'=146) + + 1/1024 : (s1'=3) & (bc1'=147) + + 1/1024 : (s1'=3) & (bc1'=148) + + 1/1024 : (s1'=3) & (bc1'=149) + + 1/1024 : (s1'=3) & (bc1'=150) + + 1/1024 : (s1'=3) & (bc1'=151) + + 1/1024 : (s1'=3) & (bc1'=152) + + 1/1024 : (s1'=3) & (bc1'=153) + + 1/1024 : (s1'=3) & (bc1'=154) + + 1/1024 : (s1'=3) & (bc1'=155) + + 1/1024 : (s1'=3) & (bc1'=156) + + 1/1024 : (s1'=3) & (bc1'=157) + + 1/1024 : (s1'=3) & (bc1'=158) + + 1/1024 : (s1'=3) & (bc1'=159) + + 1/1024 : (s1'=3) & (bc1'=160) + + 1/1024 : (s1'=3) & (bc1'=161) + + 1/1024 : (s1'=3) & (bc1'=162) + + 1/1024 : (s1'=3) & (bc1'=163) + + 1/1024 : (s1'=3) & (bc1'=164) + + 1/1024 : (s1'=3) & (bc1'=165) + + 1/1024 : (s1'=3) & (bc1'=166) + + 1/1024 : (s1'=3) & (bc1'=167) + + 1/1024 : (s1'=3) & (bc1'=168) + + 1/1024 : (s1'=3) & (bc1'=169) + + 1/1024 : (s1'=3) & (bc1'=170) + + 1/1024 : (s1'=3) & (bc1'=171) + + 1/1024 : (s1'=3) & (bc1'=172) + + 1/1024 : (s1'=3) & (bc1'=173) + + 1/1024 : (s1'=3) & (bc1'=174) + + 1/1024 : (s1'=3) & (bc1'=175) + + 1/1024 : (s1'=3) & (bc1'=176) + + 1/1024 : (s1'=3) & (bc1'=177) + + 1/1024 : (s1'=3) & (bc1'=178) + + 1/1024 : (s1'=3) & (bc1'=179) + + 1/1024 : (s1'=3) & (bc1'=180) + + 1/1024 : (s1'=3) & (bc1'=181) + + 1/1024 : (s1'=3) & (bc1'=182) + + 1/1024 : (s1'=3) & (bc1'=183) + + 1/1024 : (s1'=3) & (bc1'=184) + + 1/1024 : (s1'=3) & (bc1'=185) + + 1/1024 : (s1'=3) & (bc1'=186) + + 1/1024 : (s1'=3) & (bc1'=187) + + 1/1024 : (s1'=3) & (bc1'=188) + + 1/1024 : (s1'=3) & (bc1'=189) + + 1/1024 : (s1'=3) & (bc1'=190) + + 1/1024 : (s1'=3) & (bc1'=191) + + 1/1024 : (s1'=3) & (bc1'=192) + + 1/1024 : (s1'=3) & (bc1'=193) + + 1/1024 : (s1'=3) & (bc1'=194) + + 1/1024 : (s1'=3) & (bc1'=195) + + 1/1024 : (s1'=3) & (bc1'=196) + + 1/1024 : (s1'=3) & (bc1'=197) + + 1/1024 : (s1'=3) & (bc1'=198) + + 1/1024 : (s1'=3) & (bc1'=199) + + 1/1024 : (s1'=3) & (bc1'=200) + + 1/1024 : (s1'=3) & (bc1'=201) + + 1/1024 : (s1'=3) & (bc1'=202) + + 1/1024 : (s1'=3) & (bc1'=203) + + 1/1024 : (s1'=3) & (bc1'=204) + + 1/1024 : (s1'=3) & (bc1'=205) + + 1/1024 : (s1'=3) & (bc1'=206) + + 1/1024 : (s1'=3) & (bc1'=207) + + 1/1024 : (s1'=3) & (bc1'=208) + + 1/1024 : (s1'=3) & (bc1'=209) + + 1/1024 : (s1'=3) & (bc1'=210) + + 1/1024 : (s1'=3) & (bc1'=211) + + 1/1024 : (s1'=3) & (bc1'=212) + + 1/1024 : (s1'=3) & (bc1'=213) + + 1/1024 : (s1'=3) & (bc1'=214) + + 1/1024 : (s1'=3) & (bc1'=215) + + 1/1024 : (s1'=3) & (bc1'=216) + + 1/1024 : (s1'=3) & (bc1'=217) + + 1/1024 : (s1'=3) & (bc1'=218) + + 1/1024 : (s1'=3) & (bc1'=219) + + 1/1024 : (s1'=3) & (bc1'=220) + + 1/1024 : (s1'=3) & (bc1'=221) + + 1/1024 : (s1'=3) & (bc1'=222) + + 1/1024 : (s1'=3) & (bc1'=223) + + 1/1024 : (s1'=3) & (bc1'=224) + + 1/1024 : (s1'=3) & (bc1'=225) + + 1/1024 : (s1'=3) & (bc1'=226) + + 1/1024 : (s1'=3) & (bc1'=227) + + 1/1024 : (s1'=3) & (bc1'=228) + + 1/1024 : (s1'=3) & (bc1'=229) + + 1/1024 : (s1'=3) & (bc1'=230) + + 1/1024 : (s1'=3) & (bc1'=231) + + 1/1024 : (s1'=3) & (bc1'=232) + + 1/1024 : (s1'=3) & (bc1'=233) + + 1/1024 : (s1'=3) & (bc1'=234) + + 1/1024 : (s1'=3) & (bc1'=235) + + 1/1024 : (s1'=3) & (bc1'=236) + + 1/1024 : (s1'=3) & (bc1'=237) + + 1/1024 : (s1'=3) & (bc1'=238) + + 1/1024 : (s1'=3) & (bc1'=239) + + 1/1024 : (s1'=3) & (bc1'=240) + + 1/1024 : (s1'=3) & (bc1'=241) + + 1/1024 : (s1'=3) & (bc1'=242) + + 1/1024 : (s1'=3) & (bc1'=243) + + 1/1024 : (s1'=3) & (bc1'=244) + + 1/1024 : (s1'=3) & (bc1'=245) + + 1/1024 : (s1'=3) & (bc1'=246) + + 1/1024 : (s1'=3) & (bc1'=247) + + 1/1024 : (s1'=3) & (bc1'=248) + + 1/1024 : (s1'=3) & (bc1'=249) + + 1/1024 : (s1'=3) & (bc1'=250) + + 1/1024 : (s1'=3) & (bc1'=251) + + 1/1024 : (s1'=3) & (bc1'=252) + + 1/1024 : (s1'=3) & (bc1'=253) + + 1/1024 : (s1'=3) & (bc1'=254) + + 1/1024 : (s1'=3) & (bc1'=255) + + 1/1024 : (s1'=3) & (bc1'=256) + + 1/1024 : (s1'=3) & (bc1'=257) + + 1/1024 : (s1'=3) & (bc1'=258) + + 1/1024 : (s1'=3) & (bc1'=259) + + 1/1024 : (s1'=3) & (bc1'=260) + + 1/1024 : (s1'=3) & (bc1'=261) + + 1/1024 : (s1'=3) & (bc1'=262) + + 1/1024 : (s1'=3) & (bc1'=263) + + 1/1024 : (s1'=3) & (bc1'=264) + + 1/1024 : (s1'=3) & (bc1'=265) + + 1/1024 : (s1'=3) & (bc1'=266) + + 1/1024 : (s1'=3) & (bc1'=267) + + 1/1024 : (s1'=3) & (bc1'=268) + + 1/1024 : (s1'=3) & (bc1'=269) + + 1/1024 : (s1'=3) & (bc1'=270) + + 1/1024 : (s1'=3) & (bc1'=271) + + 1/1024 : (s1'=3) & (bc1'=272) + + 1/1024 : (s1'=3) & (bc1'=273) + + 1/1024 : (s1'=3) & (bc1'=274) + + 1/1024 : (s1'=3) & (bc1'=275) + + 1/1024 : (s1'=3) & (bc1'=276) + + 1/1024 : (s1'=3) & (bc1'=277) + + 1/1024 : (s1'=3) & (bc1'=278) + + 1/1024 : (s1'=3) & (bc1'=279) + + 1/1024 : (s1'=3) & (bc1'=280) + + 1/1024 : (s1'=3) & (bc1'=281) + + 1/1024 : (s1'=3) & (bc1'=282) + + 1/1024 : (s1'=3) & (bc1'=283) + + 1/1024 : (s1'=3) & (bc1'=284) + + 1/1024 : (s1'=3) & (bc1'=285) + + 1/1024 : (s1'=3) & (bc1'=286) + + 1/1024 : (s1'=3) & (bc1'=287) + + 1/1024 : (s1'=3) & (bc1'=288) + + 1/1024 : (s1'=3) & (bc1'=289) + + 1/1024 : (s1'=3) & (bc1'=290) + + 1/1024 : (s1'=3) & (bc1'=291) + + 1/1024 : (s1'=3) & (bc1'=292) + + 1/1024 : (s1'=3) & (bc1'=293) + + 1/1024 : (s1'=3) & (bc1'=294) + + 1/1024 : (s1'=3) & (bc1'=295) + + 1/1024 : (s1'=3) & (bc1'=296) + + 1/1024 : (s1'=3) & (bc1'=297) + + 1/1024 : (s1'=3) & (bc1'=298) + + 1/1024 : (s1'=3) & (bc1'=299) + + 1/1024 : (s1'=3) & (bc1'=300) + + 1/1024 : (s1'=3) & (bc1'=301) + + 1/1024 : (s1'=3) & (bc1'=302) + + 1/1024 : (s1'=3) & (bc1'=303) + + 1/1024 : (s1'=3) & (bc1'=304) + + 1/1024 : (s1'=3) & (bc1'=305) + + 1/1024 : (s1'=3) & (bc1'=306) + + 1/1024 : (s1'=3) & (bc1'=307) + + 1/1024 : (s1'=3) & (bc1'=308) + + 1/1024 : (s1'=3) & (bc1'=309) + + 1/1024 : (s1'=3) & (bc1'=310) + + 1/1024 : (s1'=3) & (bc1'=311) + + 1/1024 : (s1'=3) & (bc1'=312) + + 1/1024 : (s1'=3) & (bc1'=313) + + 1/1024 : (s1'=3) & (bc1'=314) + + 1/1024 : (s1'=3) & (bc1'=315) + + 1/1024 : (s1'=3) & (bc1'=316) + + 1/1024 : (s1'=3) & (bc1'=317) + + 1/1024 : (s1'=3) & (bc1'=318) + + 1/1024 : (s1'=3) & (bc1'=319) + + 1/1024 : (s1'=3) & (bc1'=320) + + 1/1024 : (s1'=3) & (bc1'=321) + + 1/1024 : (s1'=3) & (bc1'=322) + + 1/1024 : (s1'=3) & (bc1'=323) + + 1/1024 : (s1'=3) & (bc1'=324) + + 1/1024 : (s1'=3) & (bc1'=325) + + 1/1024 : (s1'=3) & (bc1'=326) + + 1/1024 : (s1'=3) & (bc1'=327) + + 1/1024 : (s1'=3) & (bc1'=328) + + 1/1024 : (s1'=3) & (bc1'=329) + + 1/1024 : (s1'=3) & (bc1'=330) + + 1/1024 : (s1'=3) & (bc1'=331) + + 1/1024 : (s1'=3) & (bc1'=332) + + 1/1024 : (s1'=3) & (bc1'=333) + + 1/1024 : (s1'=3) & (bc1'=334) + + 1/1024 : (s1'=3) & (bc1'=335) + + 1/1024 : (s1'=3) & (bc1'=336) + + 1/1024 : (s1'=3) & (bc1'=337) + + 1/1024 : (s1'=3) & (bc1'=338) + + 1/1024 : (s1'=3) & (bc1'=339) + + 1/1024 : (s1'=3) & (bc1'=340) + + 1/1024 : (s1'=3) & (bc1'=341) + + 1/1024 : (s1'=3) & (bc1'=342) + + 1/1024 : (s1'=3) & (bc1'=343) + + 1/1024 : (s1'=3) & (bc1'=344) + + 1/1024 : (s1'=3) & (bc1'=345) + + 1/1024 : (s1'=3) & (bc1'=346) + + 1/1024 : (s1'=3) & (bc1'=347) + + 1/1024 : (s1'=3) & (bc1'=348) + + 1/1024 : (s1'=3) & (bc1'=349) + + 1/1024 : (s1'=3) & (bc1'=350) + + 1/1024 : (s1'=3) & (bc1'=351) + + 1/1024 : (s1'=3) & (bc1'=352) + + 1/1024 : (s1'=3) & (bc1'=353) + + 1/1024 : (s1'=3) & (bc1'=354) + + 1/1024 : (s1'=3) & (bc1'=355) + + 1/1024 : (s1'=3) & (bc1'=356) + + 1/1024 : (s1'=3) & (bc1'=357) + + 1/1024 : (s1'=3) & (bc1'=358) + + 1/1024 : (s1'=3) & (bc1'=359) + + 1/1024 : (s1'=3) & (bc1'=360) + + 1/1024 : (s1'=3) & (bc1'=361) + + 1/1024 : (s1'=3) & (bc1'=362) + + 1/1024 : (s1'=3) & (bc1'=363) + + 1/1024 : (s1'=3) & (bc1'=364) + + 1/1024 : (s1'=3) & (bc1'=365) + + 1/1024 : (s1'=3) & (bc1'=366) + + 1/1024 : (s1'=3) & (bc1'=367) + + 1/1024 : (s1'=3) & (bc1'=368) + + 1/1024 : (s1'=3) & (bc1'=369) + + 1/1024 : (s1'=3) & (bc1'=370) + + 1/1024 : (s1'=3) & (bc1'=371) + + 1/1024 : (s1'=3) & (bc1'=372) + + 1/1024 : (s1'=3) & (bc1'=373) + + 1/1024 : (s1'=3) & (bc1'=374) + + 1/1024 : (s1'=3) & (bc1'=375) + + 1/1024 : (s1'=3) & (bc1'=376) + + 1/1024 : (s1'=3) & (bc1'=377) + + 1/1024 : (s1'=3) & (bc1'=378) + + 1/1024 : (s1'=3) & (bc1'=379) + + 1/1024 : (s1'=3) & (bc1'=380) + + 1/1024 : (s1'=3) & (bc1'=381) + + 1/1024 : (s1'=3) & (bc1'=382) + + 1/1024 : (s1'=3) & (bc1'=383) + + 1/1024 : (s1'=3) & (bc1'=384) + + 1/1024 : (s1'=3) & (bc1'=385) + + 1/1024 : (s1'=3) & (bc1'=386) + + 1/1024 : (s1'=3) & (bc1'=387) + + 1/1024 : (s1'=3) & (bc1'=388) + + 1/1024 : (s1'=3) & (bc1'=389) + + 1/1024 : (s1'=3) & (bc1'=390) + + 1/1024 : (s1'=3) & (bc1'=391) + + 1/1024 : (s1'=3) & (bc1'=392) + + 1/1024 : (s1'=3) & (bc1'=393) + + 1/1024 : (s1'=3) & (bc1'=394) + + 1/1024 : (s1'=3) & (bc1'=395) + + 1/1024 : (s1'=3) & (bc1'=396) + + 1/1024 : (s1'=3) & (bc1'=397) + + 1/1024 : (s1'=3) & (bc1'=398) + + 1/1024 : (s1'=3) & (bc1'=399) + + 1/1024 : (s1'=3) & (bc1'=400) + + 1/1024 : (s1'=3) & (bc1'=401) + + 1/1024 : (s1'=3) & (bc1'=402) + + 1/1024 : (s1'=3) & (bc1'=403) + + 1/1024 : (s1'=3) & (bc1'=404) + + 1/1024 : (s1'=3) & (bc1'=405) + + 1/1024 : (s1'=3) & (bc1'=406) + + 1/1024 : (s1'=3) & (bc1'=407) + + 1/1024 : (s1'=3) & (bc1'=408) + + 1/1024 : (s1'=3) & (bc1'=409) + + 1/1024 : (s1'=3) & (bc1'=410) + + 1/1024 : (s1'=3) & (bc1'=411) + + 1/1024 : (s1'=3) & (bc1'=412) + + 1/1024 : (s1'=3) & (bc1'=413) + + 1/1024 : (s1'=3) & (bc1'=414) + + 1/1024 : (s1'=3) & (bc1'=415) + + 1/1024 : (s1'=3) & (bc1'=416) + + 1/1024 : (s1'=3) & (bc1'=417) + + 1/1024 : (s1'=3) & (bc1'=418) + + 1/1024 : (s1'=3) & (bc1'=419) + + 1/1024 : (s1'=3) & (bc1'=420) + + 1/1024 : (s1'=3) & (bc1'=421) + + 1/1024 : (s1'=3) & (bc1'=422) + + 1/1024 : (s1'=3) & (bc1'=423) + + 1/1024 : (s1'=3) & (bc1'=424) + + 1/1024 : (s1'=3) & (bc1'=425) + + 1/1024 : (s1'=3) & (bc1'=426) + + 1/1024 : (s1'=3) & (bc1'=427) + + 1/1024 : (s1'=3) & (bc1'=428) + + 1/1024 : (s1'=3) & (bc1'=429) + + 1/1024 : (s1'=3) & (bc1'=430) + + 1/1024 : (s1'=3) & (bc1'=431) + + 1/1024 : (s1'=3) & (bc1'=432) + + 1/1024 : (s1'=3) & (bc1'=433) + + 1/1024 : (s1'=3) & (bc1'=434) + + 1/1024 : (s1'=3) & (bc1'=435) + + 1/1024 : (s1'=3) & (bc1'=436) + + 1/1024 : (s1'=3) & (bc1'=437) + + 1/1024 : (s1'=3) & (bc1'=438) + + 1/1024 : (s1'=3) & (bc1'=439) + + 1/1024 : (s1'=3) & (bc1'=440) + + 1/1024 : (s1'=3) & (bc1'=441) + + 1/1024 : (s1'=3) & (bc1'=442) + + 1/1024 : (s1'=3) & (bc1'=443) + + 1/1024 : (s1'=3) & (bc1'=444) + + 1/1024 : (s1'=3) & (bc1'=445) + + 1/1024 : (s1'=3) & (bc1'=446) + + 1/1024 : (s1'=3) & (bc1'=447) + + 1/1024 : (s1'=3) & (bc1'=448) + + 1/1024 : (s1'=3) & (bc1'=449) + + 1/1024 : (s1'=3) & (bc1'=450) + + 1/1024 : (s1'=3) & (bc1'=451) + + 1/1024 : (s1'=3) & (bc1'=452) + + 1/1024 : (s1'=3) & (bc1'=453) + + 1/1024 : (s1'=3) & (bc1'=454) + + 1/1024 : (s1'=3) & (bc1'=455) + + 1/1024 : (s1'=3) & (bc1'=456) + + 1/1024 : (s1'=3) & (bc1'=457) + + 1/1024 : (s1'=3) & (bc1'=458) + + 1/1024 : (s1'=3) & (bc1'=459) + + 1/1024 : (s1'=3) & (bc1'=460) + + 1/1024 : (s1'=3) & (bc1'=461) + + 1/1024 : (s1'=3) & (bc1'=462) + + 1/1024 : (s1'=3) & (bc1'=463) + + 1/1024 : (s1'=3) & (bc1'=464) + + 1/1024 : (s1'=3) & (bc1'=465) + + 1/1024 : (s1'=3) & (bc1'=466) + + 1/1024 : (s1'=3) & (bc1'=467) + + 1/1024 : (s1'=3) & (bc1'=468) + + 1/1024 : (s1'=3) & (bc1'=469) + + 1/1024 : (s1'=3) & (bc1'=470) + + 1/1024 : (s1'=3) & (bc1'=471) + + 1/1024 : (s1'=3) & (bc1'=472) + + 1/1024 : (s1'=3) & (bc1'=473) + + 1/1024 : (s1'=3) & (bc1'=474) + + 1/1024 : (s1'=3) & (bc1'=475) + + 1/1024 : (s1'=3) & (bc1'=476) + + 1/1024 : (s1'=3) & (bc1'=477) + + 1/1024 : (s1'=3) & (bc1'=478) + + 1/1024 : (s1'=3) & (bc1'=479) + + 1/1024 : (s1'=3) & (bc1'=480) + + 1/1024 : (s1'=3) & (bc1'=481) + + 1/1024 : (s1'=3) & (bc1'=482) + + 1/1024 : (s1'=3) & (bc1'=483) + + 1/1024 : (s1'=3) & (bc1'=484) + + 1/1024 : (s1'=3) & (bc1'=485) + + 1/1024 : (s1'=3) & (bc1'=486) + + 1/1024 : (s1'=3) & (bc1'=487) + + 1/1024 : (s1'=3) & (bc1'=488) + + 1/1024 : (s1'=3) & (bc1'=489) + + 1/1024 : (s1'=3) & (bc1'=490) + + 1/1024 : (s1'=3) & (bc1'=491) + + 1/1024 : (s1'=3) & (bc1'=492) + + 1/1024 : (s1'=3) & (bc1'=493) + + 1/1024 : (s1'=3) & (bc1'=494) + + 1/1024 : (s1'=3) & (bc1'=495) + + 1/1024 : (s1'=3) & (bc1'=496) + + 1/1024 : (s1'=3) & (bc1'=497) + + 1/1024 : (s1'=3) & (bc1'=498) + + 1/1024 : (s1'=3) & (bc1'=499) + + 1/1024 : (s1'=3) & (bc1'=500) + + 1/1024 : (s1'=3) & (bc1'=501) + + 1/1024 : (s1'=3) & (bc1'=502) + + 1/1024 : (s1'=3) & (bc1'=503) + + 1/1024 : (s1'=3) & (bc1'=504) + + 1/1024 : (s1'=3) & (bc1'=505) + + 1/1024 : (s1'=3) & (bc1'=506) + + 1/1024 : (s1'=3) & (bc1'=507) + + 1/1024 : (s1'=3) & (bc1'=508) + + 1/1024 : (s1'=3) & (bc1'=509) + + 1/1024 : (s1'=3) & (bc1'=510) + + 1/1024 : (s1'=3) & (bc1'=511) + + 1/1024 : (s1'=3) & (bc1'=512) + + 1/1024 : (s1'=3) & (bc1'=513) + + 1/1024 : (s1'=3) & (bc1'=514) + + 1/1024 : (s1'=3) & (bc1'=515) + + 1/1024 : (s1'=3) & (bc1'=516) + + 1/1024 : (s1'=3) & (bc1'=517) + + 1/1024 : (s1'=3) & (bc1'=518) + + 1/1024 : (s1'=3) & (bc1'=519) + + 1/1024 : (s1'=3) & (bc1'=520) + + 1/1024 : (s1'=3) & (bc1'=521) + + 1/1024 : (s1'=3) & (bc1'=522) + + 1/1024 : (s1'=3) & (bc1'=523) + + 1/1024 : (s1'=3) & (bc1'=524) + + 1/1024 : (s1'=3) & (bc1'=525) + + 1/1024 : (s1'=3) & (bc1'=526) + + 1/1024 : (s1'=3) & (bc1'=527) + + 1/1024 : (s1'=3) & (bc1'=528) + + 1/1024 : (s1'=3) & (bc1'=529) + + 1/1024 : (s1'=3) & (bc1'=530) + + 1/1024 : (s1'=3) & (bc1'=531) + + 1/1024 : (s1'=3) & (bc1'=532) + + 1/1024 : (s1'=3) & (bc1'=533) + + 1/1024 : (s1'=3) & (bc1'=534) + + 1/1024 : (s1'=3) & (bc1'=535) + + 1/1024 : (s1'=3) & (bc1'=536) + + 1/1024 : (s1'=3) & (bc1'=537) + + 1/1024 : (s1'=3) & (bc1'=538) + + 1/1024 : (s1'=3) & (bc1'=539) + + 1/1024 : (s1'=3) & (bc1'=540) + + 1/1024 : (s1'=3) & (bc1'=541) + + 1/1024 : (s1'=3) & (bc1'=542) + + 1/1024 : (s1'=3) & (bc1'=543) + + 1/1024 : (s1'=3) & (bc1'=544) + + 1/1024 : (s1'=3) & (bc1'=545) + + 1/1024 : (s1'=3) & (bc1'=546) + + 1/1024 : (s1'=3) & (bc1'=547) + + 1/1024 : (s1'=3) & (bc1'=548) + + 1/1024 : (s1'=3) & (bc1'=549) + + 1/1024 : (s1'=3) & (bc1'=550) + + 1/1024 : (s1'=3) & (bc1'=551) + + 1/1024 : (s1'=3) & (bc1'=552) + + 1/1024 : (s1'=3) & (bc1'=553) + + 1/1024 : (s1'=3) & (bc1'=554) + + 1/1024 : (s1'=3) & (bc1'=555) + + 1/1024 : (s1'=3) & (bc1'=556) + + 1/1024 : (s1'=3) & (bc1'=557) + + 1/1024 : (s1'=3) & (bc1'=558) + + 1/1024 : (s1'=3) & (bc1'=559) + + 1/1024 : (s1'=3) & (bc1'=560) + + 1/1024 : (s1'=3) & (bc1'=561) + + 1/1024 : (s1'=3) & (bc1'=562) + + 1/1024 : (s1'=3) & (bc1'=563) + + 1/1024 : (s1'=3) & (bc1'=564) + + 1/1024 : (s1'=3) & (bc1'=565) + + 1/1024 : (s1'=3) & (bc1'=566) + + 1/1024 : (s1'=3) & (bc1'=567) + + 1/1024 : (s1'=3) & (bc1'=568) + + 1/1024 : (s1'=3) & (bc1'=569) + + 1/1024 : (s1'=3) & (bc1'=570) + + 1/1024 : (s1'=3) & (bc1'=571) + + 1/1024 : (s1'=3) & (bc1'=572) + + 1/1024 : (s1'=3) & (bc1'=573) + + 1/1024 : (s1'=3) & (bc1'=574) + + 1/1024 : (s1'=3) & (bc1'=575) + + 1/1024 : (s1'=3) & (bc1'=576) + + 1/1024 : (s1'=3) & (bc1'=577) + + 1/1024 : (s1'=3) & (bc1'=578) + + 1/1024 : (s1'=3) & (bc1'=579) + + 1/1024 : (s1'=3) & (bc1'=580) + + 1/1024 : (s1'=3) & (bc1'=581) + + 1/1024 : (s1'=3) & (bc1'=582) + + 1/1024 : (s1'=3) & (bc1'=583) + + 1/1024 : (s1'=3) & (bc1'=584) + + 1/1024 : (s1'=3) & (bc1'=585) + + 1/1024 : (s1'=3) & (bc1'=586) + + 1/1024 : (s1'=3) & (bc1'=587) + + 1/1024 : (s1'=3) & (bc1'=588) + + 1/1024 : (s1'=3) & (bc1'=589) + + 1/1024 : (s1'=3) & (bc1'=590) + + 1/1024 : (s1'=3) & (bc1'=591) + + 1/1024 : (s1'=3) & (bc1'=592) + + 1/1024 : (s1'=3) & (bc1'=593) + + 1/1024 : (s1'=3) & (bc1'=594) + + 1/1024 : (s1'=3) & (bc1'=595) + + 1/1024 : (s1'=3) & (bc1'=596) + + 1/1024 : (s1'=3) & (bc1'=597) + + 1/1024 : (s1'=3) & (bc1'=598) + + 1/1024 : (s1'=3) & (bc1'=599) + + 1/1024 : (s1'=3) & (bc1'=600) + + 1/1024 : (s1'=3) & (bc1'=601) + + 1/1024 : (s1'=3) & (bc1'=602) + + 1/1024 : (s1'=3) & (bc1'=603) + + 1/1024 : (s1'=3) & (bc1'=604) + + 1/1024 : (s1'=3) & (bc1'=605) + + 1/1024 : (s1'=3) & (bc1'=606) + + 1/1024 : (s1'=3) & (bc1'=607) + + 1/1024 : (s1'=3) & (bc1'=608) + + 1/1024 : (s1'=3) & (bc1'=609) + + 1/1024 : (s1'=3) & (bc1'=610) + + 1/1024 : (s1'=3) & (bc1'=611) + + 1/1024 : (s1'=3) & (bc1'=612) + + 1/1024 : (s1'=3) & (bc1'=613) + + 1/1024 : (s1'=3) & (bc1'=614) + + 1/1024 : (s1'=3) & (bc1'=615) + + 1/1024 : (s1'=3) & (bc1'=616) + + 1/1024 : (s1'=3) & (bc1'=617) + + 1/1024 : (s1'=3) & (bc1'=618) + + 1/1024 : (s1'=3) & (bc1'=619) + + 1/1024 : (s1'=3) & (bc1'=620) + + 1/1024 : (s1'=3) & (bc1'=621) + + 1/1024 : (s1'=3) & (bc1'=622) + + 1/1024 : (s1'=3) & (bc1'=623) + + 1/1024 : (s1'=3) & (bc1'=624) + + 1/1024 : (s1'=3) & (bc1'=625) + + 1/1024 : (s1'=3) & (bc1'=626) + + 1/1024 : (s1'=3) & (bc1'=627) + + 1/1024 : (s1'=3) & (bc1'=628) + + 1/1024 : (s1'=3) & (bc1'=629) + + 1/1024 : (s1'=3) & (bc1'=630) + + 1/1024 : (s1'=3) & (bc1'=631) + + 1/1024 : (s1'=3) & (bc1'=632) + + 1/1024 : (s1'=3) & (bc1'=633) + + 1/1024 : (s1'=3) & (bc1'=634) + + 1/1024 : (s1'=3) & (bc1'=635) + + 1/1024 : (s1'=3) & (bc1'=636) + + 1/1024 : (s1'=3) & (bc1'=637) + + 1/1024 : (s1'=3) & (bc1'=638) + + 1/1024 : (s1'=3) & (bc1'=639) + + 1/1024 : (s1'=3) & (bc1'=640) + + 1/1024 : (s1'=3) & (bc1'=641) + + 1/1024 : (s1'=3) & (bc1'=642) + + 1/1024 : (s1'=3) & (bc1'=643) + + 1/1024 : (s1'=3) & (bc1'=644) + + 1/1024 : (s1'=3) & (bc1'=645) + + 1/1024 : (s1'=3) & (bc1'=646) + + 1/1024 : (s1'=3) & (bc1'=647) + + 1/1024 : (s1'=3) & (bc1'=648) + + 1/1024 : (s1'=3) & (bc1'=649) + + 1/1024 : (s1'=3) & (bc1'=650) + + 1/1024 : (s1'=3) & (bc1'=651) + + 1/1024 : (s1'=3) & (bc1'=652) + + 1/1024 : (s1'=3) & (bc1'=653) + + 1/1024 : (s1'=3) & (bc1'=654) + + 1/1024 : (s1'=3) & (bc1'=655) + + 1/1024 : (s1'=3) & (bc1'=656) + + 1/1024 : (s1'=3) & (bc1'=657) + + 1/1024 : (s1'=3) & (bc1'=658) + + 1/1024 : (s1'=3) & (bc1'=659) + + 1/1024 : (s1'=3) & (bc1'=660) + + 1/1024 : (s1'=3) & (bc1'=661) + + 1/1024 : (s1'=3) & (bc1'=662) + + 1/1024 : (s1'=3) & (bc1'=663) + + 1/1024 : (s1'=3) & (bc1'=664) + + 1/1024 : (s1'=3) & (bc1'=665) + + 1/1024 : (s1'=3) & (bc1'=666) + + 1/1024 : (s1'=3) & (bc1'=667) + + 1/1024 : (s1'=3) & (bc1'=668) + + 1/1024 : (s1'=3) & (bc1'=669) + + 1/1024 : (s1'=3) & (bc1'=670) + + 1/1024 : (s1'=3) & (bc1'=671) + + 1/1024 : (s1'=3) & (bc1'=672) + + 1/1024 : (s1'=3) & (bc1'=673) + + 1/1024 : (s1'=3) & (bc1'=674) + + 1/1024 : (s1'=3) & (bc1'=675) + + 1/1024 : (s1'=3) & (bc1'=676) + + 1/1024 : (s1'=3) & (bc1'=677) + + 1/1024 : (s1'=3) & (bc1'=678) + + 1/1024 : (s1'=3) & (bc1'=679) + + 1/1024 : (s1'=3) & (bc1'=680) + + 1/1024 : (s1'=3) & (bc1'=681) + + 1/1024 : (s1'=3) & (bc1'=682) + + 1/1024 : (s1'=3) & (bc1'=683) + + 1/1024 : (s1'=3) & (bc1'=684) + + 1/1024 : (s1'=3) & (bc1'=685) + + 1/1024 : (s1'=3) & (bc1'=686) + + 1/1024 : (s1'=3) & (bc1'=687) + + 1/1024 : (s1'=3) & (bc1'=688) + + 1/1024 : (s1'=3) & (bc1'=689) + + 1/1024 : (s1'=3) & (bc1'=690) + + 1/1024 : (s1'=3) & (bc1'=691) + + 1/1024 : (s1'=3) & (bc1'=692) + + 1/1024 : (s1'=3) & (bc1'=693) + + 1/1024 : (s1'=3) & (bc1'=694) + + 1/1024 : (s1'=3) & (bc1'=695) + + 1/1024 : (s1'=3) & (bc1'=696) + + 1/1024 : (s1'=3) & (bc1'=697) + + 1/1024 : (s1'=3) & (bc1'=698) + + 1/1024 : (s1'=3) & (bc1'=699) + + 1/1024 : (s1'=3) & (bc1'=700) + + 1/1024 : (s1'=3) & (bc1'=701) + + 1/1024 : (s1'=3) & (bc1'=702) + + 1/1024 : (s1'=3) & (bc1'=703) + + 1/1024 : (s1'=3) & (bc1'=704) + + 1/1024 : (s1'=3) & (bc1'=705) + + 1/1024 : (s1'=3) & (bc1'=706) + + 1/1024 : (s1'=3) & (bc1'=707) + + 1/1024 : (s1'=3) & (bc1'=708) + + 1/1024 : (s1'=3) & (bc1'=709) + + 1/1024 : (s1'=3) & (bc1'=710) + + 1/1024 : (s1'=3) & (bc1'=711) + + 1/1024 : (s1'=3) & (bc1'=712) + + 1/1024 : (s1'=3) & (bc1'=713) + + 1/1024 : (s1'=3) & (bc1'=714) + + 1/1024 : (s1'=3) & (bc1'=715) + + 1/1024 : (s1'=3) & (bc1'=716) + + 1/1024 : (s1'=3) & (bc1'=717) + + 1/1024 : (s1'=3) & (bc1'=718) + + 1/1024 : (s1'=3) & (bc1'=719) + + 1/1024 : (s1'=3) & (bc1'=720) + + 1/1024 : (s1'=3) & (bc1'=721) + + 1/1024 : (s1'=3) & (bc1'=722) + + 1/1024 : (s1'=3) & (bc1'=723) + + 1/1024 : (s1'=3) & (bc1'=724) + + 1/1024 : (s1'=3) & (bc1'=725) + + 1/1024 : (s1'=3) & (bc1'=726) + + 1/1024 : (s1'=3) & (bc1'=727) + + 1/1024 : (s1'=3) & (bc1'=728) + + 1/1024 : (s1'=3) & (bc1'=729) + + 1/1024 : (s1'=3) & (bc1'=730) + + 1/1024 : (s1'=3) & (bc1'=731) + + 1/1024 : (s1'=3) & (bc1'=732) + + 1/1024 : (s1'=3) & (bc1'=733) + + 1/1024 : (s1'=3) & (bc1'=734) + + 1/1024 : (s1'=3) & (bc1'=735) + + 1/1024 : (s1'=3) & (bc1'=736) + + 1/1024 : (s1'=3) & (bc1'=737) + + 1/1024 : (s1'=3) & (bc1'=738) + + 1/1024 : (s1'=3) & (bc1'=739) + + 1/1024 : (s1'=3) & (bc1'=740) + + 1/1024 : (s1'=3) & (bc1'=741) + + 1/1024 : (s1'=3) & (bc1'=742) + + 1/1024 : (s1'=3) & (bc1'=743) + + 1/1024 : (s1'=3) & (bc1'=744) + + 1/1024 : (s1'=3) & (bc1'=745) + + 1/1024 : (s1'=3) & (bc1'=746) + + 1/1024 : (s1'=3) & (bc1'=747) + + 1/1024 : (s1'=3) & (bc1'=748) + + 1/1024 : (s1'=3) & (bc1'=749) + + 1/1024 : (s1'=3) & (bc1'=750) + + 1/1024 : (s1'=3) & (bc1'=751) + + 1/1024 : (s1'=3) & (bc1'=752) + + 1/1024 : (s1'=3) & (bc1'=753) + + 1/1024 : (s1'=3) & (bc1'=754) + + 1/1024 : (s1'=3) & (bc1'=755) + + 1/1024 : (s1'=3) & (bc1'=756) + + 1/1024 : (s1'=3) & (bc1'=757) + + 1/1024 : (s1'=3) & (bc1'=758) + + 1/1024 : (s1'=3) & (bc1'=759) + + 1/1024 : (s1'=3) & (bc1'=760) + + 1/1024 : (s1'=3) & (bc1'=761) + + 1/1024 : (s1'=3) & (bc1'=762) + + 1/1024 : (s1'=3) & (bc1'=763) + + 1/1024 : (s1'=3) & (bc1'=764) + + 1/1024 : (s1'=3) & (bc1'=765) + + 1/1024 : (s1'=3) & (bc1'=766) + + 1/1024 : (s1'=3) & (bc1'=767) + + 1/1024 : (s1'=3) & (bc1'=768) + + 1/1024 : (s1'=3) & (bc1'=769) + + 1/1024 : (s1'=3) & (bc1'=770) + + 1/1024 : (s1'=3) & (bc1'=771) + + 1/1024 : (s1'=3) & (bc1'=772) + + 1/1024 : (s1'=3) & (bc1'=773) + + 1/1024 : (s1'=3) & (bc1'=774) + + 1/1024 : (s1'=3) & (bc1'=775) + + 1/1024 : (s1'=3) & (bc1'=776) + + 1/1024 : (s1'=3) & (bc1'=777) + + 1/1024 : (s1'=3) & (bc1'=778) + + 1/1024 : (s1'=3) & (bc1'=779) + + 1/1024 : (s1'=3) & (bc1'=780) + + 1/1024 : (s1'=3) & (bc1'=781) + + 1/1024 : (s1'=3) & (bc1'=782) + + 1/1024 : (s1'=3) & (bc1'=783) + + 1/1024 : (s1'=3) & (bc1'=784) + + 1/1024 : (s1'=3) & (bc1'=785) + + 1/1024 : (s1'=3) & (bc1'=786) + + 1/1024 : (s1'=3) & (bc1'=787) + + 1/1024 : (s1'=3) & (bc1'=788) + + 1/1024 : (s1'=3) & (bc1'=789) + + 1/1024 : (s1'=3) & (bc1'=790) + + 1/1024 : (s1'=3) & (bc1'=791) + + 1/1024 : (s1'=3) & (bc1'=792) + + 1/1024 : (s1'=3) & (bc1'=793) + + 1/1024 : (s1'=3) & (bc1'=794) + + 1/1024 : (s1'=3) & (bc1'=795) + + 1/1024 : (s1'=3) & (bc1'=796) + + 1/1024 : (s1'=3) & (bc1'=797) + + 1/1024 : (s1'=3) & (bc1'=798) + + 1/1024 : (s1'=3) & (bc1'=799) + + 1/1024 : (s1'=3) & (bc1'=800) + + 1/1024 : (s1'=3) & (bc1'=801) + + 1/1024 : (s1'=3) & (bc1'=802) + + 1/1024 : (s1'=3) & (bc1'=803) + + 1/1024 : (s1'=3) & (bc1'=804) + + 1/1024 : (s1'=3) & (bc1'=805) + + 1/1024 : (s1'=3) & (bc1'=806) + + 1/1024 : (s1'=3) & (bc1'=807) + + 1/1024 : (s1'=3) & (bc1'=808) + + 1/1024 : (s1'=3) & (bc1'=809) + + 1/1024 : (s1'=3) & (bc1'=810) + + 1/1024 : (s1'=3) & (bc1'=811) + + 1/1024 : (s1'=3) & (bc1'=812) + + 1/1024 : (s1'=3) & (bc1'=813) + + 1/1024 : (s1'=3) & (bc1'=814) + + 1/1024 : (s1'=3) & (bc1'=815) + + 1/1024 : (s1'=3) & (bc1'=816) + + 1/1024 : (s1'=3) & (bc1'=817) + + 1/1024 : (s1'=3) & (bc1'=818) + + 1/1024 : (s1'=3) & (bc1'=819) + + 1/1024 : (s1'=3) & (bc1'=820) + + 1/1024 : (s1'=3) & (bc1'=821) + + 1/1024 : (s1'=3) & (bc1'=822) + + 1/1024 : (s1'=3) & (bc1'=823) + + 1/1024 : (s1'=3) & (bc1'=824) + + 1/1024 : (s1'=3) & (bc1'=825) + + 1/1024 : (s1'=3) & (bc1'=826) + + 1/1024 : (s1'=3) & (bc1'=827) + + 1/1024 : (s1'=3) & (bc1'=828) + + 1/1024 : (s1'=3) & (bc1'=829) + + 1/1024 : (s1'=3) & (bc1'=830) + + 1/1024 : (s1'=3) & (bc1'=831) + + 1/1024 : (s1'=3) & (bc1'=832) + + 1/1024 : (s1'=3) & (bc1'=833) + + 1/1024 : (s1'=3) & (bc1'=834) + + 1/1024 : (s1'=3) & (bc1'=835) + + 1/1024 : (s1'=3) & (bc1'=836) + + 1/1024 : (s1'=3) & (bc1'=837) + + 1/1024 : (s1'=3) & (bc1'=838) + + 1/1024 : (s1'=3) & (bc1'=839) + + 1/1024 : (s1'=3) & (bc1'=840) + + 1/1024 : (s1'=3) & (bc1'=841) + + 1/1024 : (s1'=3) & (bc1'=842) + + 1/1024 : (s1'=3) & (bc1'=843) + + 1/1024 : (s1'=3) & (bc1'=844) + + 1/1024 : (s1'=3) & (bc1'=845) + + 1/1024 : (s1'=3) & (bc1'=846) + + 1/1024 : (s1'=3) & (bc1'=847) + + 1/1024 : (s1'=3) & (bc1'=848) + + 1/1024 : (s1'=3) & (bc1'=849) + + 1/1024 : (s1'=3) & (bc1'=850) + + 1/1024 : (s1'=3) & (bc1'=851) + + 1/1024 : (s1'=3) & (bc1'=852) + + 1/1024 : (s1'=3) & (bc1'=853) + + 1/1024 : (s1'=3) & (bc1'=854) + + 1/1024 : (s1'=3) & (bc1'=855) + + 1/1024 : (s1'=3) & (bc1'=856) + + 1/1024 : (s1'=3) & (bc1'=857) + + 1/1024 : (s1'=3) & (bc1'=858) + + 1/1024 : (s1'=3) & (bc1'=859) + + 1/1024 : (s1'=3) & (bc1'=860) + + 1/1024 : (s1'=3) & (bc1'=861) + + 1/1024 : (s1'=3) & (bc1'=862) + + 1/1024 : (s1'=3) & (bc1'=863) + + 1/1024 : (s1'=3) & (bc1'=864) + + 1/1024 : (s1'=3) & (bc1'=865) + + 1/1024 : (s1'=3) & (bc1'=866) + + 1/1024 : (s1'=3) & (bc1'=867) + + 1/1024 : (s1'=3) & (bc1'=868) + + 1/1024 : (s1'=3) & (bc1'=869) + + 1/1024 : (s1'=3) & (bc1'=870) + + 1/1024 : (s1'=3) & (bc1'=871) + + 1/1024 : (s1'=3) & (bc1'=872) + + 1/1024 : (s1'=3) & (bc1'=873) + + 1/1024 : (s1'=3) & (bc1'=874) + + 1/1024 : (s1'=3) & (bc1'=875) + + 1/1024 : (s1'=3) & (bc1'=876) + + 1/1024 : (s1'=3) & (bc1'=877) + + 1/1024 : (s1'=3) & (bc1'=878) + + 1/1024 : (s1'=3) & (bc1'=879) + + 1/1024 : (s1'=3) & (bc1'=880) + + 1/1024 : (s1'=3) & (bc1'=881) + + 1/1024 : (s1'=3) & (bc1'=882) + + 1/1024 : (s1'=3) & (bc1'=883) + + 1/1024 : (s1'=3) & (bc1'=884) + + 1/1024 : (s1'=3) & (bc1'=885) + + 1/1024 : (s1'=3) & (bc1'=886) + + 1/1024 : (s1'=3) & (bc1'=887) + + 1/1024 : (s1'=3) & (bc1'=888) + + 1/1024 : (s1'=3) & (bc1'=889) + + 1/1024 : (s1'=3) & (bc1'=890) + + 1/1024 : (s1'=3) & (bc1'=891) + + 1/1024 : (s1'=3) & (bc1'=892) + + 1/1024 : (s1'=3) & (bc1'=893) + + 1/1024 : (s1'=3) & (bc1'=894) + + 1/1024 : (s1'=3) & (bc1'=895) + + 1/1024 : (s1'=3) & (bc1'=896) + + 1/1024 : (s1'=3) & (bc1'=897) + + 1/1024 : (s1'=3) & (bc1'=898) + + 1/1024 : (s1'=3) & (bc1'=899) + + 1/1024 : (s1'=3) & (bc1'=900) + + 1/1024 : (s1'=3) & (bc1'=901) + + 1/1024 : (s1'=3) & (bc1'=902) + + 1/1024 : (s1'=3) & (bc1'=903) + + 1/1024 : (s1'=3) & (bc1'=904) + + 1/1024 : (s1'=3) & (bc1'=905) + + 1/1024 : (s1'=3) & (bc1'=906) + + 1/1024 : (s1'=3) & (bc1'=907) + + 1/1024 : (s1'=3) & (bc1'=908) + + 1/1024 : (s1'=3) & (bc1'=909) + + 1/1024 : (s1'=3) & (bc1'=910) + + 1/1024 : (s1'=3) & (bc1'=911) + + 1/1024 : (s1'=3) & (bc1'=912) + + 1/1024 : (s1'=3) & (bc1'=913) + + 1/1024 : (s1'=3) & (bc1'=914) + + 1/1024 : (s1'=3) & (bc1'=915) + + 1/1024 : (s1'=3) & (bc1'=916) + + 1/1024 : (s1'=3) & (bc1'=917) + + 1/1024 : (s1'=3) & (bc1'=918) + + 1/1024 : (s1'=3) & (bc1'=919) + + 1/1024 : (s1'=3) & (bc1'=920) + + 1/1024 : (s1'=3) & (bc1'=921) + + 1/1024 : (s1'=3) & (bc1'=922) + + 1/1024 : (s1'=3) & (bc1'=923) + + 1/1024 : (s1'=3) & (bc1'=924) + + 1/1024 : (s1'=3) & (bc1'=925) + + 1/1024 : (s1'=3) & (bc1'=926) + + 1/1024 : (s1'=3) & (bc1'=927) + + 1/1024 : (s1'=3) & (bc1'=928) + + 1/1024 : (s1'=3) & (bc1'=929) + + 1/1024 : (s1'=3) & (bc1'=930) + + 1/1024 : (s1'=3) & (bc1'=931) + + 1/1024 : (s1'=3) & (bc1'=932) + + 1/1024 : (s1'=3) & (bc1'=933) + + 1/1024 : (s1'=3) & (bc1'=934) + + 1/1024 : (s1'=3) & (bc1'=935) + + 1/1024 : (s1'=3) & (bc1'=936) + + 1/1024 : (s1'=3) & (bc1'=937) + + 1/1024 : (s1'=3) & (bc1'=938) + + 1/1024 : (s1'=3) & (bc1'=939) + + 1/1024 : (s1'=3) & (bc1'=940) + + 1/1024 : (s1'=3) & (bc1'=941) + + 1/1024 : (s1'=3) & (bc1'=942) + + 1/1024 : (s1'=3) & (bc1'=943) + + 1/1024 : (s1'=3) & (bc1'=944) + + 1/1024 : (s1'=3) & (bc1'=945) + + 1/1024 : (s1'=3) & (bc1'=946) + + 1/1024 : (s1'=3) & (bc1'=947) + + 1/1024 : (s1'=3) & (bc1'=948) + + 1/1024 : (s1'=3) & (bc1'=949) + + 1/1024 : (s1'=3) & (bc1'=950) + + 1/1024 : (s1'=3) & (bc1'=951) + + 1/1024 : (s1'=3) & (bc1'=952) + + 1/1024 : (s1'=3) & (bc1'=953) + + 1/1024 : (s1'=3) & (bc1'=954) + + 1/1024 : (s1'=3) & (bc1'=955) + + 1/1024 : (s1'=3) & (bc1'=956) + + 1/1024 : (s1'=3) & (bc1'=957) + + 1/1024 : (s1'=3) & (bc1'=958) + + 1/1024 : (s1'=3) & (bc1'=959) + + 1/1024 : (s1'=3) & (bc1'=960) + + 1/1024 : (s1'=3) & (bc1'=961) + + 1/1024 : (s1'=3) & (bc1'=962) + + 1/1024 : (s1'=3) & (bc1'=963) + + 1/1024 : (s1'=3) & (bc1'=964) + + 1/1024 : (s1'=3) & (bc1'=965) + + 1/1024 : (s1'=3) & (bc1'=966) + + 1/1024 : (s1'=3) & (bc1'=967) + + 1/1024 : (s1'=3) & (bc1'=968) + + 1/1024 : (s1'=3) & (bc1'=969) + + 1/1024 : (s1'=3) & (bc1'=970) + + 1/1024 : (s1'=3) & (bc1'=971) + + 1/1024 : (s1'=3) & (bc1'=972) + + 1/1024 : (s1'=3) & (bc1'=973) + + 1/1024 : (s1'=3) & (bc1'=974) + + 1/1024 : (s1'=3) & (bc1'=975) + + 1/1024 : (s1'=3) & (bc1'=976) + + 1/1024 : (s1'=3) & (bc1'=977) + + 1/1024 : (s1'=3) & (bc1'=978) + + 1/1024 : (s1'=3) & (bc1'=979) + + 1/1024 : (s1'=3) & (bc1'=980) + + 1/1024 : (s1'=3) & (bc1'=981) + + 1/1024 : (s1'=3) & (bc1'=982) + + 1/1024 : (s1'=3) & (bc1'=983) + + 1/1024 : (s1'=3) & (bc1'=984) + + 1/1024 : (s1'=3) & (bc1'=985) + + 1/1024 : (s1'=3) & (bc1'=986) + + 1/1024 : (s1'=3) & (bc1'=987) + + 1/1024 : (s1'=3) & (bc1'=988) + + 1/1024 : (s1'=3) & (bc1'=989) + + 1/1024 : (s1'=3) & (bc1'=990) + + 1/1024 : (s1'=3) & (bc1'=991) + + 1/1024 : (s1'=3) & (bc1'=992) + + 1/1024 : (s1'=3) & (bc1'=993) + + 1/1024 : (s1'=3) & (bc1'=994) + + 1/1024 : (s1'=3) & (bc1'=995) + + 1/1024 : (s1'=3) & (bc1'=996) + + 1/1024 : (s1'=3) & (bc1'=997) + + 1/1024 : (s1'=3) & (bc1'=998) + + 1/1024 : (s1'=3) & (bc1'=999) + + 1/1024 : (s1'=3) & (bc1'=1000) + + 1/1024 : (s1'=3) & (bc1'=1001) + + 1/1024 : (s1'=3) & (bc1'=1002) + + 1/1024 : (s1'=3) & (bc1'=1003) + + 1/1024 : (s1'=3) & (bc1'=1004) + + 1/1024 : (s1'=3) & (bc1'=1005) + + 1/1024 : (s1'=3) & (bc1'=1006) + + 1/1024 : (s1'=3) & (bc1'=1007) + + 1/1024 : (s1'=3) & (bc1'=1008) + + 1/1024 : (s1'=3) & (bc1'=1009) + + 1/1024 : (s1'=3) & (bc1'=1010) + + 1/1024 : (s1'=3) & (bc1'=1011) + + 1/1024 : (s1'=3) & (bc1'=1012) + + 1/1024 : (s1'=3) & (bc1'=1013) + + 1/1024 : (s1'=3) & (bc1'=1014) + + 1/1024 : (s1'=3) & (bc1'=1015) + + 1/1024 : (s1'=3) & (bc1'=1016) + + 1/1024 : (s1'=3) & (bc1'=1017) + + 1/1024 : (s1'=3) & (bc1'=1018) + + 1/1024 : (s1'=3) & (bc1'=1019) + + 1/1024 : (s1'=3) & (bc1'=1020) + + 1/1024 : (s1'=3) & (bc1'=1021) + + 1/1024 : (s1'=3) & (bc1'=1022) + + 1/1024 : (s1'=3) & (bc1'=1023); + + // wait until backoff counter reaches 0 then send again + [time] s1=3 & x1 (x1'=x1+1); // let time pass (in slot) + [time] s1=3 & x1=slot & bc1>0 -> (x1'=1) & (bc1'=bc1-1); // let time pass (move slots) + [send1] s1=3 & x1=slot & bc1=0 -> (s1'=1) & (x1'=0); // finished backoff (bus appears free) + [csend1] s1=3 & x1=slot & bc1=0 -> (s1'=1) & (x1'=0); // finished backoff (bus appears free) + [busy1] s1=3 & x1=slot & bc1=0 -> (s1'=2) & (x1'=0) & (cd1'=min(bmax,cd1+1)); // finished backoff (bus busy) + + // once finished nothing matters + [time] s1=4 -> true; + +endmodule + +// construct station 2 through renaming +module station2=station1[s1=s2,x1=x2,cd1=cd2,bc1=bc2,send1=send2,csend1=csend2,busy1=busy2,end1=end2] endmodule + +//---------------------------------------------------------------------------------------------------------------------------- +// REWARD STRUCTURES +// time +rewards "time" + [time] true : 12; +endrewards +// number of collisions +rewards "collisions" + [send1] b=1 : 1; + [send2] b=1 : 1; +endrewards + +//---------------------------------------------------------------------------------------------------------------------------- +// LABELS + +label "s1_done" = s1=4; +label "s2_done" = s2=4; +label "done" = s1=4 & s2=4; +label "cmax" = c=4; diff --git a/prism-examples/pta/csma/full/csma-slots.nm b/prism-examples/pta/csma/full/csma-slots.nm new file mode 100644 index 00000000..4b617acb --- /dev/null +++ b/prism-examples/pta/csma/full/csma-slots.nm @@ -0,0 +1,2208 @@ +// CSMA/CD protocol - two stations (PTA model using digital clocks) +// gxn/mxd 31/05/05 + +// based on kronos (non-probabilistic) TA model and that which appears in: +// M. Duflot, L. Fribourg, T. Hérault, R. Lassaigne, F. Magniette, S. Messika, S. Peyronnet and C. Picaronny +// Probabilistic model checking of the CSMA/CD protocol using PRISM and APMC +// In Proc. AVoCS'04, 2004 + +pta + +const K; + +// PARAMETERS + +// parameters +const int sigma=26; // time for messages to propagate along the bus +const int lambda=808; // time to send a message +const int delay=26; // wire delay +const int slot=2*sigma; // size of back off slot + +const int bmax; // exponential backoff limit +const int M=pow(2,bmax)-1; // max number of slots to wait + +//---------------------------------------------------------------------------------------------------------------------------- +// collision counter +module collisions + + c : [0..K]; + + [csend1] true -> (c'=min(K,c+1)); + [csend2] true -> (c'=min(K,c+1)); + +endmodule + +//---------------------------------------------------------------------------------------------------------------------------- +// the bus +module bus + + b : [0..4]; + // b=0 - idle + // b=1 - active + // b=2 - collision + // b=3 - collision1 + // b=4 - collision2 + + y1 : clock; // clock of bus + y2 : clock; // clock of bus + + invariant + (b=0 => true) & + (b=1 => true) & + (b=2 => y1<=delay & y2<=delay) & + (b=3 => y1<=delay) & + (b=4 => y2<=delay) + endinvariant + + // stations starts sending + [send1] b=0 -> (b'=1) & (y1'=0); // no message being sent + [send2] b=0 -> (b'=1) & (y2'=0); // no message being sent + + // collision occurs + [csend1] b=1 & y2<=delay -> (b'=2) & (y1'=0); // message being sent (move to collision) + [csend2] b=1 & y1<=delay -> (b'=2) & (y2'=0); // message being sent (move to collision) + + // message being sent + [busy1] b=1 & y2>delay -> (b'=1); + [busy2] b=1 & y1>delay -> (b'=1); + + // station finishes + [end1] b=1 -> (b'=0) & (y1'=0); + [end2] b=1 -> (b'=0) & (y2'=0); + + // collision detected + [cd1] b=2 & y1>=delay -> (b'=4); // station one detects collision before station two + [cd2] b=2 & y2>=delay -> (b'=3); // station two detects collision before station one + + [cd1] b=3 & y1>=delay -> (b'=0) & (y1'=0) & (y2'=0); // station one detects collision after station two + [cd2] b=4 & y2>=delay -> (b'=0) & (y1'=0) & (y2'=0); // station two detects collision after station one + +endmodule + +//---------------------------------------------------------------------------------------------------------------------------- +// STATION 1 +module station1 + + // LOCAL STATE + s1 : [0..4]; + // s1=0 - initial state + // s1=1 - transmit + // s1=2 - collision (set backoff) + // s1=3 - wait (bus busy) + // s1=4 - done (since sending only one message) + + x1 : clock; // local clock + + bc1 : [0..pow(2,bmax)-1]; // backoff counter + cd1 : [0..bmax]; // collision counter + + invariant + (s1=0 => x1<=delay) & + (s1=1 => x1<=lambda) & + (s1=2 => x1<=0) & + (s1=3 => x1<=slot) & + (s1=4 => true) + endinvariant + + // start sending (make sure there is a collision, i.e. start before x1 equals delay) + [send1] s1=0 -> (s1'=1) & (x1'=0); // start sending + [csend1] s1=0 -> (s1'=1) & (x1'=0); // start sending + [busy1] s1=0 -> (s1'=2) & (x1'=0) & (cd1'=min(bmax,cd1+1)); // detects channel is busy so go into backoff + + // transmitting + [end1] s1=1 & x1=lambda -> (s1'=4) & (x1'=0); // finished + [cd1] s1=1 -> (s1'=2) & (x1'=0) & (cd1'=min(bmax,cd1+1)); // collision detected + + // set backoff (no time can pass in this state) + // first retransmission + [] s1=2 & cd1=1 -> 1/2 : (s1'=3) & (bc1'=0) + + 1/2 : (s1'=3) & (bc1'=1); + // second retransmission + [] s1=2 & cd1=2 -> 1/4 : (s1'=3) & (bc1'=0) + + 1/4 : (s1'=3) & (bc1'=1) + + 1/4 : (s1'=3) & (bc1'=2) + + 1/4 : (s1'=3) & (bc1'=3); + // third retransmission + [] s1=2 & cd1=3 -> 1/8 : (s1'=3) & (bc1'=0) + + 1/8 : (s1'=3) & (bc1'=1) + + 1/8 : (s1'=3) & (bc1'=2) + + 1/8 : (s1'=3) & (bc1'=3) + + 1/8 : (s1'=3) & (bc1'=4) + + 1/8 : (s1'=3) & (bc1'=5) + + 1/8 : (s1'=3) & (bc1'=6) + + 1/8 : (s1'=3) & (bc1'=7); + // fourth retransmission + [] s1=2 & cd1=4 -> 1/16 : (s1'=3) & (bc1'=0) + + 1/16 : (s1'=3) & (bc1'=1) + + 1/16 : (s1'=3) & (bc1'=2) + + 1/16 : (s1'=3) & (bc1'=3) + + 1/16 : (s1'=3) & (bc1'=4) + + 1/16 : (s1'=3) & (bc1'=5) + + 1/16 : (s1'=3) & (bc1'=6) + + 1/16 : (s1'=3) & (bc1'=7) + + 1/16 : (s1'=3) & (bc1'=8) + + 1/16 : (s1'=3) & (bc1'=9) + + 1/16 : (s1'=3) & (bc1'=10) + + 1/16 : (s1'=3) & (bc1'=11) + + 1/16 : (s1'=3) & (bc1'=12) + + 1/16 : (s1'=3) & (bc1'=13) + + 1/16 : (s1'=3) & (bc1'=14) + + 1/16 : (s1'=3) & (bc1'=15); + // fifth retransmission + [] s1=2 & cd1=5 -> 1/32 : (s1'=3) & (bc1'=0) + + 1/32 : (s1'=3) & (bc1'=1) + + 1/32 : (s1'=3) & (bc1'=2) + + 1/32 : (s1'=3) & (bc1'=3) + + 1/32 : (s1'=3) & (bc1'=4) + + 1/32 : (s1'=3) & (bc1'=5) + + 1/32 : (s1'=3) & (bc1'=6) + + 1/32 : (s1'=3) & (bc1'=7) + + 1/32 : (s1'=3) & (bc1'=8) + + 1/32 : (s1'=3) & (bc1'=9) + + 1/32 : (s1'=3) & (bc1'=10) + + 1/32 : (s1'=3) & (bc1'=11) + + 1/32 : (s1'=3) & (bc1'=12) + + 1/32 : (s1'=3) & (bc1'=13) + + 1/32 : (s1'=3) & (bc1'=14) + + 1/32 : (s1'=3) & (bc1'=15) + + 1/32 : (s1'=3) & (bc1'=16) + + 1/32 : (s1'=3) & (bc1'=17) + + 1/32 : (s1'=3) & (bc1'=18) + + 1/32 : (s1'=3) & (bc1'=19) + + 1/32 : (s1'=3) & (bc1'=20) + + 1/32 : (s1'=3) & (bc1'=21) + + 1/32 : (s1'=3) & (bc1'=22) + + 1/32 : (s1'=3) & (bc1'=23) + + 1/32 : (s1'=3) & (bc1'=24) + + 1/32 : (s1'=3) & (bc1'=25) + + 1/32 : (s1'=3) & (bc1'=26) + + 1/32 : (s1'=3) & (bc1'=27) + + 1/32 : (s1'=3) & (bc1'=28) + + 1/32 : (s1'=3) & (bc1'=29) + + 1/32 : (s1'=3) & (bc1'=30) + + 1/32 : (s1'=3) & (bc1'=31); + // sixth retransmission + [] s1=2 & cd1=6 -> 1/64 : (s1'=3) & (bc1'=0) + + 1/64 : (s1'=3) & (bc1'=1) + + 1/64 : (s1'=3) & (bc1'=2) + + 1/64 : (s1'=3) & (bc1'=3) + + 1/64 : (s1'=3) & (bc1'=4) + + 1/64 : (s1'=3) & (bc1'=5) + + 1/64 : (s1'=3) & (bc1'=6) + + 1/64 : (s1'=3) & (bc1'=7) + + 1/64 : (s1'=3) & (bc1'=8) + + 1/64 : (s1'=3) & (bc1'=9) + + 1/64 : (s1'=3) & (bc1'=10) + + 1/64 : (s1'=3) & (bc1'=11) + + 1/64 : (s1'=3) & (bc1'=12) + + 1/64 : (s1'=3) & (bc1'=13) + + 1/64 : (s1'=3) & (bc1'=14) + + 1/64 : (s1'=3) & (bc1'=15) + + 1/64 : (s1'=3) & (bc1'=16) + + 1/64 : (s1'=3) & (bc1'=17) + + 1/64 : (s1'=3) & (bc1'=18) + + 1/64 : (s1'=3) & (bc1'=19) + + 1/64 : (s1'=3) & (bc1'=20) + + 1/64 : (s1'=3) & (bc1'=21) + + 1/64 : (s1'=3) & (bc1'=22) + + 1/64 : (s1'=3) & (bc1'=23) + + 1/64 : (s1'=3) & (bc1'=24) + + 1/64 : (s1'=3) & (bc1'=25) + + 1/64 : (s1'=3) & (bc1'=26) + + 1/64 : (s1'=3) & (bc1'=27) + + 1/64 : (s1'=3) & (bc1'=28) + + 1/64 : (s1'=3) & (bc1'=29) + + 1/64 : (s1'=3) & (bc1'=30) + + 1/64 : (s1'=3) & (bc1'=31) + + 1/64 : (s1'=3) & (bc1'=32) + + 1/64 : (s1'=3) & (bc1'=33) + + 1/64 : (s1'=3) & (bc1'=34) + + 1/64 : (s1'=3) & (bc1'=35) + + 1/64 : (s1'=3) & (bc1'=36) + + 1/64 : (s1'=3) & (bc1'=37) + + 1/64 : (s1'=3) & (bc1'=38) + + 1/64 : (s1'=3) & (bc1'=39) + + 1/64 : (s1'=3) & (bc1'=40) + + 1/64 : (s1'=3) & (bc1'=41) + + 1/64 : (s1'=3) & (bc1'=42) + + 1/64 : (s1'=3) & (bc1'=43) + + 1/64 : (s1'=3) & (bc1'=44) + + 1/64 : (s1'=3) & (bc1'=45) + + 1/64 : (s1'=3) & (bc1'=46) + + 1/64 : (s1'=3) & (bc1'=47) + + 1/64 : (s1'=3) & (bc1'=48) + + 1/64 : (s1'=3) & (bc1'=49) + + 1/64 : (s1'=3) & (bc1'=50) + + 1/64 : (s1'=3) & (bc1'=51) + + 1/64 : (s1'=3) & (bc1'=52) + + 1/64 : (s1'=3) & (bc1'=53) + + 1/64 : (s1'=3) & (bc1'=54) + + 1/64 : (s1'=3) & (bc1'=55) + + 1/64 : (s1'=3) & (bc1'=56) + + 1/64 : (s1'=3) & (bc1'=57) + + 1/64 : (s1'=3) & (bc1'=58) + + 1/64 : (s1'=3) & (bc1'=59) + + 1/64 : (s1'=3) & (bc1'=60) + + 1/64 : (s1'=3) & (bc1'=61) + + 1/64 : (s1'=3) & (bc1'=62) + + 1/64 : (s1'=3) & (bc1'=63); + // seventh retransmission + [] s1=2 & cd1=7 -> 1/128 : (s1'=3) & (bc1'=0) + + 1/128 : (s1'=3) & (bc1'=1) + + 1/128 : (s1'=3) & (bc1'=2) + + 1/128 : (s1'=3) & (bc1'=3) + + 1/128 : (s1'=3) & (bc1'=4) + + 1/128 : (s1'=3) & (bc1'=5) + + 1/128 : (s1'=3) & (bc1'=6) + + 1/128 : (s1'=3) & (bc1'=7) + + 1/128 : (s1'=3) & (bc1'=8) + + 1/128 : (s1'=3) & (bc1'=9) + + 1/128 : (s1'=3) & (bc1'=10) + + 1/128 : (s1'=3) & (bc1'=11) + + 1/128 : (s1'=3) & (bc1'=12) + + 1/128 : (s1'=3) & (bc1'=13) + + 1/128 : (s1'=3) & (bc1'=14) + + 1/128 : (s1'=3) & (bc1'=15) + + 1/128 : (s1'=3) & (bc1'=16) + + 1/128 : (s1'=3) & (bc1'=17) + + 1/128 : (s1'=3) & (bc1'=18) + + 1/128 : (s1'=3) & (bc1'=19) + + 1/128 : (s1'=3) & (bc1'=20) + + 1/128 : (s1'=3) & (bc1'=21) + + 1/128 : (s1'=3) & (bc1'=22) + + 1/128 : (s1'=3) & (bc1'=23) + + 1/128 : (s1'=3) & (bc1'=24) + + 1/128 : (s1'=3) & (bc1'=25) + + 1/128 : (s1'=3) & (bc1'=26) + + 1/128 : (s1'=3) & (bc1'=27) + + 1/128 : (s1'=3) & (bc1'=28) + + 1/128 : (s1'=3) & (bc1'=29) + + 1/128 : (s1'=3) & (bc1'=30) + + 1/128 : (s1'=3) & (bc1'=31) + + 1/128 : (s1'=3) & (bc1'=32) + + 1/128 : (s1'=3) & (bc1'=33) + + 1/128 : (s1'=3) & (bc1'=34) + + 1/128 : (s1'=3) & (bc1'=35) + + 1/128 : (s1'=3) & (bc1'=36) + + 1/128 : (s1'=3) & (bc1'=37) + + 1/128 : (s1'=3) & (bc1'=38) + + 1/128 : (s1'=3) & (bc1'=39) + + 1/128 : (s1'=3) & (bc1'=40) + + 1/128 : (s1'=3) & (bc1'=41) + + 1/128 : (s1'=3) & (bc1'=42) + + 1/128 : (s1'=3) & (bc1'=43) + + 1/128 : (s1'=3) & (bc1'=44) + + 1/128 : (s1'=3) & (bc1'=45) + + 1/128 : (s1'=3) & (bc1'=46) + + 1/128 : (s1'=3) & (bc1'=47) + + 1/128 : (s1'=3) & (bc1'=48) + + 1/128 : (s1'=3) & (bc1'=49) + + 1/128 : (s1'=3) & (bc1'=50) + + 1/128 : (s1'=3) & (bc1'=51) + + 1/128 : (s1'=3) & (bc1'=52) + + 1/128 : (s1'=3) & (bc1'=53) + + 1/128 : (s1'=3) & (bc1'=54) + + 1/128 : (s1'=3) & (bc1'=55) + + 1/128 : (s1'=3) & (bc1'=56) + + 1/128 : (s1'=3) & (bc1'=57) + + 1/128 : (s1'=3) & (bc1'=58) + + 1/128 : (s1'=3) & (bc1'=59) + + 1/128 : (s1'=3) & (bc1'=60) + + 1/128 : (s1'=3) & (bc1'=61) + + 1/128 : (s1'=3) & (bc1'=62) + + 1/128 : (s1'=3) & (bc1'=63) + + 1/128 : (s1'=3) & (bc1'=64) + + 1/128 : (s1'=3) & (bc1'=65) + + 1/128 : (s1'=3) & (bc1'=66) + + 1/128 : (s1'=3) & (bc1'=67) + + 1/128 : (s1'=3) & (bc1'=68) + + 1/128 : (s1'=3) & (bc1'=69) + + 1/128 : (s1'=3) & (bc1'=70) + + 1/128 : (s1'=3) & (bc1'=71) + + 1/128 : (s1'=3) & (bc1'=72) + + 1/128 : (s1'=3) & (bc1'=73) + + 1/128 : (s1'=3) & (bc1'=74) + + 1/128 : (s1'=3) & (bc1'=75) + + 1/128 : (s1'=3) & (bc1'=76) + + 1/128 : (s1'=3) & (bc1'=77) + + 1/128 : (s1'=3) & (bc1'=78) + + 1/128 : (s1'=3) & (bc1'=79) + + 1/128 : (s1'=3) & (bc1'=80) + + 1/128 : (s1'=3) & (bc1'=81) + + 1/128 : (s1'=3) & (bc1'=82) + + 1/128 : (s1'=3) & (bc1'=83) + + 1/128 : (s1'=3) & (bc1'=84) + + 1/128 : (s1'=3) & (bc1'=85) + + 1/128 : (s1'=3) & (bc1'=86) + + 1/128 : (s1'=3) & (bc1'=87) + + 1/128 : (s1'=3) & (bc1'=88) + + 1/128 : (s1'=3) & (bc1'=89) + + 1/128 : (s1'=3) & (bc1'=90) + + 1/128 : (s1'=3) & (bc1'=91) + + 1/128 : (s1'=3) & (bc1'=92) + + 1/128 : (s1'=3) & (bc1'=93) + + 1/128 : (s1'=3) & (bc1'=94) + + 1/128 : (s1'=3) & (bc1'=95) + + 1/128 : (s1'=3) & (bc1'=96) + + 1/128 : (s1'=3) & (bc1'=97) + + 1/128 : (s1'=3) & (bc1'=98) + + 1/128 : (s1'=3) & (bc1'=99) + + 1/128 : (s1'=3) & (bc1'=100) + + 1/128 : (s1'=3) & (bc1'=101) + + 1/128 : (s1'=3) & (bc1'=102) + + 1/128 : (s1'=3) & (bc1'=103) + + 1/128 : (s1'=3) & (bc1'=104) + + 1/128 : (s1'=3) & (bc1'=105) + + 1/128 : (s1'=3) & (bc1'=106) + + 1/128 : (s1'=3) & (bc1'=107) + + 1/128 : (s1'=3) & (bc1'=108) + + 1/128 : (s1'=3) & (bc1'=109) + + 1/128 : (s1'=3) & (bc1'=110) + + 1/128 : (s1'=3) & (bc1'=111) + + 1/128 : (s1'=3) & (bc1'=112) + + 1/128 : (s1'=3) & (bc1'=113) + + 1/128 : (s1'=3) & (bc1'=114) + + 1/128 : (s1'=3) & (bc1'=115) + + 1/128 : (s1'=3) & (bc1'=116) + + 1/128 : (s1'=3) & (bc1'=117) + + 1/128 : (s1'=3) & (bc1'=118) + + 1/128 : (s1'=3) & (bc1'=119) + + 1/128 : (s1'=3) & (bc1'=120) + + 1/128 : (s1'=3) & (bc1'=121) + + 1/128 : (s1'=3) & (bc1'=122) + + 1/128 : (s1'=3) & (bc1'=123) + + 1/128 : (s1'=3) & (bc1'=124) + + 1/128 : (s1'=3) & (bc1'=125) + + 1/128 : (s1'=3) & (bc1'=126) + + 1/128 : (s1'=3) & (bc1'=127); + // eigth retransmission + [] s1=2 & cd1=8 -> 1/256 : (s1'=3) & (bc1'=0) + + 1/256 : (s1'=3) & (bc1'=1) + + 1/256 : (s1'=3) & (bc1'=2) + + 1/256 : (s1'=3) & (bc1'=3) + + 1/256 : (s1'=3) & (bc1'=4) + + 1/256 : (s1'=3) & (bc1'=5) + + 1/256 : (s1'=3) & (bc1'=6) + + 1/256 : (s1'=3) & (bc1'=7) + + 1/256 : (s1'=3) & (bc1'=8) + + 1/256 : (s1'=3) & (bc1'=9) + + 1/256 : (s1'=3) & (bc1'=10) + + 1/256 : (s1'=3) & (bc1'=11) + + 1/256 : (s1'=3) & (bc1'=12) + + 1/256 : (s1'=3) & (bc1'=13) + + 1/256 : (s1'=3) & (bc1'=14) + + 1/256 : (s1'=3) & (bc1'=15) + + 1/256 : (s1'=3) & (bc1'=16) + + 1/256 : (s1'=3) & (bc1'=17) + + 1/256 : (s1'=3) & (bc1'=18) + + 1/256 : (s1'=3) & (bc1'=19) + + 1/256 : (s1'=3) & (bc1'=20) + + 1/256 : (s1'=3) & (bc1'=21) + + 1/256 : (s1'=3) & (bc1'=22) + + 1/256 : (s1'=3) & (bc1'=23) + + 1/256 : (s1'=3) & (bc1'=24) + + 1/256 : (s1'=3) & (bc1'=25) + + 1/256 : (s1'=3) & (bc1'=26) + + 1/256 : (s1'=3) & (bc1'=27) + + 1/256 : (s1'=3) & (bc1'=28) + + 1/256 : (s1'=3) & (bc1'=29) + + 1/256 : (s1'=3) & (bc1'=30) + + 1/256 : (s1'=3) & (bc1'=31) + + 1/256 : (s1'=3) & (bc1'=32) + + 1/256 : (s1'=3) & (bc1'=33) + + 1/256 : (s1'=3) & (bc1'=34) + + 1/256 : (s1'=3) & (bc1'=35) + + 1/256 : (s1'=3) & (bc1'=36) + + 1/256 : (s1'=3) & (bc1'=37) + + 1/256 : (s1'=3) & (bc1'=38) + + 1/256 : (s1'=3) & (bc1'=39) + + 1/256 : (s1'=3) & (bc1'=40) + + 1/256 : (s1'=3) & (bc1'=41) + + 1/256 : (s1'=3) & (bc1'=42) + + 1/256 : (s1'=3) & (bc1'=43) + + 1/256 : (s1'=3) & (bc1'=44) + + 1/256 : (s1'=3) & (bc1'=45) + + 1/256 : (s1'=3) & (bc1'=46) + + 1/256 : (s1'=3) & (bc1'=47) + + 1/256 : (s1'=3) & (bc1'=48) + + 1/256 : (s1'=3) & (bc1'=49) + + 1/256 : (s1'=3) & (bc1'=50) + + 1/256 : (s1'=3) & (bc1'=51) + + 1/256 : (s1'=3) & (bc1'=52) + + 1/256 : (s1'=3) & (bc1'=53) + + 1/256 : (s1'=3) & (bc1'=54) + + 1/256 : (s1'=3) & (bc1'=55) + + 1/256 : (s1'=3) & (bc1'=56) + + 1/256 : (s1'=3) & (bc1'=57) + + 1/256 : (s1'=3) & (bc1'=58) + + 1/256 : (s1'=3) & (bc1'=59) + + 1/256 : (s1'=3) & (bc1'=60) + + 1/256 : (s1'=3) & (bc1'=61) + + 1/256 : (s1'=3) & (bc1'=62) + + 1/256 : (s1'=3) & (bc1'=63) + + 1/256 : (s1'=3) & (bc1'=64) + + 1/256 : (s1'=3) & (bc1'=65) + + 1/256 : (s1'=3) & (bc1'=66) + + 1/256 : (s1'=3) & (bc1'=67) + + 1/256 : (s1'=3) & (bc1'=68) + + 1/256 : (s1'=3) & (bc1'=69) + + 1/256 : (s1'=3) & (bc1'=70) + + 1/256 : (s1'=3) & (bc1'=71) + + 1/256 : (s1'=3) & (bc1'=72) + + 1/256 : (s1'=3) & (bc1'=73) + + 1/256 : (s1'=3) & (bc1'=74) + + 1/256 : (s1'=3) & (bc1'=75) + + 1/256 : (s1'=3) & (bc1'=76) + + 1/256 : (s1'=3) & (bc1'=77) + + 1/256 : (s1'=3) & (bc1'=78) + + 1/256 : (s1'=3) & (bc1'=79) + + 1/256 : (s1'=3) & (bc1'=80) + + 1/256 : (s1'=3) & (bc1'=81) + + 1/256 : (s1'=3) & (bc1'=82) + + 1/256 : (s1'=3) & (bc1'=83) + + 1/256 : (s1'=3) & (bc1'=84) + + 1/256 : (s1'=3) & (bc1'=85) + + 1/256 : (s1'=3) & (bc1'=86) + + 1/256 : (s1'=3) & (bc1'=87) + + 1/256 : (s1'=3) & (bc1'=88) + + 1/256 : (s1'=3) & (bc1'=89) + + 1/256 : (s1'=3) & (bc1'=90) + + 1/256 : (s1'=3) & (bc1'=91) + + 1/256 : (s1'=3) & (bc1'=92) + + 1/256 : (s1'=3) & (bc1'=93) + + 1/256 : (s1'=3) & (bc1'=94) + + 1/256 : (s1'=3) & (bc1'=95) + + 1/256 : (s1'=3) & (bc1'=96) + + 1/256 : (s1'=3) & (bc1'=97) + + 1/256 : (s1'=3) & (bc1'=98) + + 1/256 : (s1'=3) & (bc1'=99) + + 1/256 : (s1'=3) & (bc1'=100) + + 1/256 : (s1'=3) & (bc1'=101) + + 1/256 : (s1'=3) & (bc1'=102) + + 1/256 : (s1'=3) & (bc1'=103) + + 1/256 : (s1'=3) & (bc1'=104) + + 1/256 : (s1'=3) & (bc1'=105) + + 1/256 : (s1'=3) & (bc1'=106) + + 1/256 : (s1'=3) & (bc1'=107) + + 1/256 : (s1'=3) & (bc1'=108) + + 1/256 : (s1'=3) & (bc1'=109) + + 1/256 : (s1'=3) & (bc1'=110) + + 1/256 : (s1'=3) & (bc1'=111) + + 1/256 : (s1'=3) & (bc1'=112) + + 1/256 : (s1'=3) & (bc1'=113) + + 1/256 : (s1'=3) & (bc1'=114) + + 1/256 : (s1'=3) & (bc1'=115) + + 1/256 : (s1'=3) & (bc1'=116) + + 1/256 : (s1'=3) & (bc1'=117) + + 1/256 : (s1'=3) & (bc1'=118) + + 1/256 : (s1'=3) & (bc1'=119) + + 1/256 : (s1'=3) & (bc1'=120) + + 1/256 : (s1'=3) & (bc1'=121) + + 1/256 : (s1'=3) & (bc1'=122) + + 1/256 : (s1'=3) & (bc1'=123) + + 1/256 : (s1'=3) & (bc1'=124) + + 1/256 : (s1'=3) & (bc1'=125) + + 1/256 : (s1'=3) & (bc1'=126) + + 1/256 : (s1'=3) & (bc1'=127) + + 1/256 : (s1'=3) & (bc1'=128) + + 1/256 : (s1'=3) & (bc1'=129) + + 1/256 : (s1'=3) & (bc1'=130) + + 1/256 : (s1'=3) & (bc1'=131) + + 1/256 : (s1'=3) & (bc1'=132) + + 1/256 : (s1'=3) & (bc1'=133) + + 1/256 : (s1'=3) & (bc1'=134) + + 1/256 : (s1'=3) & (bc1'=135) + + 1/256 : (s1'=3) & (bc1'=136) + + 1/256 : (s1'=3) & (bc1'=137) + + 1/256 : (s1'=3) & (bc1'=138) + + 1/256 : (s1'=3) & (bc1'=139) + + 1/256 : (s1'=3) & (bc1'=140) + + 1/256 : (s1'=3) & (bc1'=141) + + 1/256 : (s1'=3) & (bc1'=142) + + 1/256 : (s1'=3) & (bc1'=143) + + 1/256 : (s1'=3) & (bc1'=144) + + 1/256 : (s1'=3) & (bc1'=145) + + 1/256 : (s1'=3) & (bc1'=146) + + 1/256 : (s1'=3) & (bc1'=147) + + 1/256 : (s1'=3) & (bc1'=148) + + 1/256 : (s1'=3) & (bc1'=149) + + 1/256 : (s1'=3) & (bc1'=150) + + 1/256 : (s1'=3) & (bc1'=151) + + 1/256 : (s1'=3) & (bc1'=152) + + 1/256 : (s1'=3) & (bc1'=153) + + 1/256 : (s1'=3) & (bc1'=154) + + 1/256 : (s1'=3) & (bc1'=155) + + 1/256 : (s1'=3) & (bc1'=156) + + 1/256 : (s1'=3) & (bc1'=157) + + 1/256 : (s1'=3) & (bc1'=158) + + 1/256 : (s1'=3) & (bc1'=159) + + 1/256 : (s1'=3) & (bc1'=160) + + 1/256 : (s1'=3) & (bc1'=161) + + 1/256 : (s1'=3) & (bc1'=162) + + 1/256 : (s1'=3) & (bc1'=163) + + 1/256 : (s1'=3) & (bc1'=164) + + 1/256 : (s1'=3) & (bc1'=165) + + 1/256 : (s1'=3) & (bc1'=166) + + 1/256 : (s1'=3) & (bc1'=167) + + 1/256 : (s1'=3) & (bc1'=168) + + 1/256 : (s1'=3) & (bc1'=169) + + 1/256 : (s1'=3) & (bc1'=170) + + 1/256 : (s1'=3) & (bc1'=171) + + 1/256 : (s1'=3) & (bc1'=172) + + 1/256 : (s1'=3) & (bc1'=173) + + 1/256 : (s1'=3) & (bc1'=174) + + 1/256 : (s1'=3) & (bc1'=175) + + 1/256 : (s1'=3) & (bc1'=176) + + 1/256 : (s1'=3) & (bc1'=177) + + 1/256 : (s1'=3) & (bc1'=178) + + 1/256 : (s1'=3) & (bc1'=179) + + 1/256 : (s1'=3) & (bc1'=180) + + 1/256 : (s1'=3) & (bc1'=181) + + 1/256 : (s1'=3) & (bc1'=182) + + 1/256 : (s1'=3) & (bc1'=183) + + 1/256 : (s1'=3) & (bc1'=184) + + 1/256 : (s1'=3) & (bc1'=185) + + 1/256 : (s1'=3) & (bc1'=186) + + 1/256 : (s1'=3) & (bc1'=187) + + 1/256 : (s1'=3) & (bc1'=188) + + 1/256 : (s1'=3) & (bc1'=189) + + 1/256 : (s1'=3) & (bc1'=190) + + 1/256 : (s1'=3) & (bc1'=191) + + 1/256 : (s1'=3) & (bc1'=192) + + 1/256 : (s1'=3) & (bc1'=193) + + 1/256 : (s1'=3) & (bc1'=194) + + 1/256 : (s1'=3) & (bc1'=195) + + 1/256 : (s1'=3) & (bc1'=196) + + 1/256 : (s1'=3) & (bc1'=197) + + 1/256 : (s1'=3) & (bc1'=198) + + 1/256 : (s1'=3) & (bc1'=199) + + 1/256 : (s1'=3) & (bc1'=200) + + 1/256 : (s1'=3) & (bc1'=201) + + 1/256 : (s1'=3) & (bc1'=202) + + 1/256 : (s1'=3) & (bc1'=203) + + 1/256 : (s1'=3) & (bc1'=204) + + 1/256 : (s1'=3) & (bc1'=205) + + 1/256 : (s1'=3) & (bc1'=206) + + 1/256 : (s1'=3) & (bc1'=207) + + 1/256 : (s1'=3) & (bc1'=208) + + 1/256 : (s1'=3) & (bc1'=209) + + 1/256 : (s1'=3) & (bc1'=210) + + 1/256 : (s1'=3) & (bc1'=211) + + 1/256 : (s1'=3) & (bc1'=212) + + 1/256 : (s1'=3) & (bc1'=213) + + 1/256 : (s1'=3) & (bc1'=214) + + 1/256 : (s1'=3) & (bc1'=215) + + 1/256 : (s1'=3) & (bc1'=216) + + 1/256 : (s1'=3) & (bc1'=217) + + 1/256 : (s1'=3) & (bc1'=218) + + 1/256 : (s1'=3) & (bc1'=219) + + 1/256 : (s1'=3) & (bc1'=220) + + 1/256 : (s1'=3) & (bc1'=221) + + 1/256 : (s1'=3) & (bc1'=222) + + 1/256 : (s1'=3) & (bc1'=223) + + 1/256 : (s1'=3) & (bc1'=224) + + 1/256 : (s1'=3) & (bc1'=225) + + 1/256 : (s1'=3) & (bc1'=226) + + 1/256 : (s1'=3) & (bc1'=227) + + 1/256 : (s1'=3) & (bc1'=228) + + 1/256 : (s1'=3) & (bc1'=229) + + 1/256 : (s1'=3) & (bc1'=230) + + 1/256 : (s1'=3) & (bc1'=231) + + 1/256 : (s1'=3) & (bc1'=232) + + 1/256 : (s1'=3) & (bc1'=233) + + 1/256 : (s1'=3) & (bc1'=234) + + 1/256 : (s1'=3) & (bc1'=235) + + 1/256 : (s1'=3) & (bc1'=236) + + 1/256 : (s1'=3) & (bc1'=237) + + 1/256 : (s1'=3) & (bc1'=238) + + 1/256 : (s1'=3) & (bc1'=239) + + 1/256 : (s1'=3) & (bc1'=240) + + 1/256 : (s1'=3) & (bc1'=241) + + 1/256 : (s1'=3) & (bc1'=242) + + 1/256 : (s1'=3) & (bc1'=243) + + 1/256 : (s1'=3) & (bc1'=244) + + 1/256 : (s1'=3) & (bc1'=245) + + 1/256 : (s1'=3) & (bc1'=246) + + 1/256 : (s1'=3) & (bc1'=247) + + 1/256 : (s1'=3) & (bc1'=248) + + 1/256 : (s1'=3) & (bc1'=249) + + 1/256 : (s1'=3) & (bc1'=250) + + 1/256 : (s1'=3) & (bc1'=251) + + 1/256 : (s1'=3) & (bc1'=252) + + 1/256 : (s1'=3) & (bc1'=253) + + 1/256 : (s1'=3) & (bc1'=254) + + 1/256 : (s1'=3) & (bc1'=255); + // ninth retransmission + [] s1=2 & cd1=9 -> 1/512 : (s1'=3) & (bc1'=0) + + 1/512 : (s1'=3) & (bc1'=1) + + 1/512 : (s1'=3) & (bc1'=2) + + 1/512 : (s1'=3) & (bc1'=3) + + 1/512 : (s1'=3) & (bc1'=4) + + 1/512 : (s1'=3) & (bc1'=5) + + 1/512 : (s1'=3) & (bc1'=6) + + 1/512 : (s1'=3) & (bc1'=7) + + 1/512 : (s1'=3) & (bc1'=8) + + 1/512 : (s1'=3) & (bc1'=9) + + 1/512 : (s1'=3) & (bc1'=10) + + 1/512 : (s1'=3) & (bc1'=11) + + 1/512 : (s1'=3) & (bc1'=12) + + 1/512 : (s1'=3) & (bc1'=13) + + 1/512 : (s1'=3) & (bc1'=14) + + 1/512 : (s1'=3) & (bc1'=15) + + 1/512 : (s1'=3) & (bc1'=16) + + 1/512 : (s1'=3) & (bc1'=17) + + 1/512 : (s1'=3) & (bc1'=18) + + 1/512 : (s1'=3) & (bc1'=19) + + 1/512 : (s1'=3) & (bc1'=20) + + 1/512 : (s1'=3) & (bc1'=21) + + 1/512 : (s1'=3) & (bc1'=22) + + 1/512 : (s1'=3) & (bc1'=23) + + 1/512 : (s1'=3) & (bc1'=24) + + 1/512 : (s1'=3) & (bc1'=25) + + 1/512 : (s1'=3) & (bc1'=26) + + 1/512 : (s1'=3) & (bc1'=27) + + 1/512 : (s1'=3) & (bc1'=28) + + 1/512 : (s1'=3) & (bc1'=29) + + 1/512 : (s1'=3) & (bc1'=30) + + 1/512 : (s1'=3) & (bc1'=31) + + 1/512 : (s1'=3) & (bc1'=32) + + 1/512 : (s1'=3) & (bc1'=33) + + 1/512 : (s1'=3) & (bc1'=34) + + 1/512 : (s1'=3) & (bc1'=35) + + 1/512 : (s1'=3) & (bc1'=36) + + 1/512 : (s1'=3) & (bc1'=37) + + 1/512 : (s1'=3) & (bc1'=38) + + 1/512 : (s1'=3) & (bc1'=39) + + 1/512 : (s1'=3) & (bc1'=40) + + 1/512 : (s1'=3) & (bc1'=41) + + 1/512 : (s1'=3) & (bc1'=42) + + 1/512 : (s1'=3) & (bc1'=43) + + 1/512 : (s1'=3) & (bc1'=44) + + 1/512 : (s1'=3) & (bc1'=45) + + 1/512 : (s1'=3) & (bc1'=46) + + 1/512 : (s1'=3) & (bc1'=47) + + 1/512 : (s1'=3) & (bc1'=48) + + 1/512 : (s1'=3) & (bc1'=49) + + 1/512 : (s1'=3) & (bc1'=50) + + 1/512 : (s1'=3) & (bc1'=51) + + 1/512 : (s1'=3) & (bc1'=52) + + 1/512 : (s1'=3) & (bc1'=53) + + 1/512 : (s1'=3) & (bc1'=54) + + 1/512 : (s1'=3) & (bc1'=55) + + 1/512 : (s1'=3) & (bc1'=56) + + 1/512 : (s1'=3) & (bc1'=57) + + 1/512 : (s1'=3) & (bc1'=58) + + 1/512 : (s1'=3) & (bc1'=59) + + 1/512 : (s1'=3) & (bc1'=60) + + 1/512 : (s1'=3) & (bc1'=61) + + 1/512 : (s1'=3) & (bc1'=62) + + 1/512 : (s1'=3) & (bc1'=63) + + 1/512 : (s1'=3) & (bc1'=64) + + 1/512 : (s1'=3) & (bc1'=65) + + 1/512 : (s1'=3) & (bc1'=66) + + 1/512 : (s1'=3) & (bc1'=67) + + 1/512 : (s1'=3) & (bc1'=68) + + 1/512 : (s1'=3) & (bc1'=69) + + 1/512 : (s1'=3) & (bc1'=70) + + 1/512 : (s1'=3) & (bc1'=71) + + 1/512 : (s1'=3) & (bc1'=72) + + 1/512 : (s1'=3) & (bc1'=73) + + 1/512 : (s1'=3) & (bc1'=74) + + 1/512 : (s1'=3) & (bc1'=75) + + 1/512 : (s1'=3) & (bc1'=76) + + 1/512 : (s1'=3) & (bc1'=77) + + 1/512 : (s1'=3) & (bc1'=78) + + 1/512 : (s1'=3) & (bc1'=79) + + 1/512 : (s1'=3) & (bc1'=80) + + 1/512 : (s1'=3) & (bc1'=81) + + 1/512 : (s1'=3) & (bc1'=82) + + 1/512 : (s1'=3) & (bc1'=83) + + 1/512 : (s1'=3) & (bc1'=84) + + 1/512 : (s1'=3) & (bc1'=85) + + 1/512 : (s1'=3) & (bc1'=86) + + 1/512 : (s1'=3) & (bc1'=87) + + 1/512 : (s1'=3) & (bc1'=88) + + 1/512 : (s1'=3) & (bc1'=89) + + 1/512 : (s1'=3) & (bc1'=90) + + 1/512 : (s1'=3) & (bc1'=91) + + 1/512 : (s1'=3) & (bc1'=92) + + 1/512 : (s1'=3) & (bc1'=93) + + 1/512 : (s1'=3) & (bc1'=94) + + 1/512 : (s1'=3) & (bc1'=95) + + 1/512 : (s1'=3) & (bc1'=96) + + 1/512 : (s1'=3) & (bc1'=97) + + 1/512 : (s1'=3) & (bc1'=98) + + 1/512 : (s1'=3) & (bc1'=99) + + 1/512 : (s1'=3) & (bc1'=100) + + 1/512 : (s1'=3) & (bc1'=101) + + 1/512 : (s1'=3) & (bc1'=102) + + 1/512 : (s1'=3) & (bc1'=103) + + 1/512 : (s1'=3) & (bc1'=104) + + 1/512 : (s1'=3) & (bc1'=105) + + 1/512 : (s1'=3) & (bc1'=106) + + 1/512 : (s1'=3) & (bc1'=107) + + 1/512 : (s1'=3) & (bc1'=108) + + 1/512 : (s1'=3) & (bc1'=109) + + 1/512 : (s1'=3) & (bc1'=110) + + 1/512 : (s1'=3) & (bc1'=111) + + 1/512 : (s1'=3) & (bc1'=112) + + 1/512 : (s1'=3) & (bc1'=113) + + 1/512 : (s1'=3) & (bc1'=114) + + 1/512 : (s1'=3) & (bc1'=115) + + 1/512 : (s1'=3) & (bc1'=116) + + 1/512 : (s1'=3) & (bc1'=117) + + 1/512 : (s1'=3) & (bc1'=118) + + 1/512 : (s1'=3) & (bc1'=119) + + 1/512 : (s1'=3) & (bc1'=120) + + 1/512 : (s1'=3) & (bc1'=121) + + 1/512 : (s1'=3) & (bc1'=122) + + 1/512 : (s1'=3) & (bc1'=123) + + 1/512 : (s1'=3) & (bc1'=124) + + 1/512 : (s1'=3) & (bc1'=125) + + 1/512 : (s1'=3) & (bc1'=126) + + 1/512 : (s1'=3) & (bc1'=127) + + 1/512 : (s1'=3) & (bc1'=128) + + 1/512 : (s1'=3) & (bc1'=129) + + 1/512 : (s1'=3) & (bc1'=130) + + 1/512 : (s1'=3) & (bc1'=131) + + 1/512 : (s1'=3) & (bc1'=132) + + 1/512 : (s1'=3) & (bc1'=133) + + 1/512 : (s1'=3) & (bc1'=134) + + 1/512 : (s1'=3) & (bc1'=135) + + 1/512 : (s1'=3) & (bc1'=136) + + 1/512 : (s1'=3) & (bc1'=137) + + 1/512 : (s1'=3) & (bc1'=138) + + 1/512 : (s1'=3) & (bc1'=139) + + 1/512 : (s1'=3) & (bc1'=140) + + 1/512 : (s1'=3) & (bc1'=141) + + 1/512 : (s1'=3) & (bc1'=142) + + 1/512 : (s1'=3) & (bc1'=143) + + 1/512 : (s1'=3) & (bc1'=144) + + 1/512 : (s1'=3) & (bc1'=145) + + 1/512 : (s1'=3) & (bc1'=146) + + 1/512 : (s1'=3) & (bc1'=147) + + 1/512 : (s1'=3) & (bc1'=148) + + 1/512 : (s1'=3) & (bc1'=149) + + 1/512 : (s1'=3) & (bc1'=150) + + 1/512 : (s1'=3) & (bc1'=151) + + 1/512 : (s1'=3) & (bc1'=152) + + 1/512 : (s1'=3) & (bc1'=153) + + 1/512 : (s1'=3) & (bc1'=154) + + 1/512 : (s1'=3) & (bc1'=155) + + 1/512 : (s1'=3) & (bc1'=156) + + 1/512 : (s1'=3) & (bc1'=157) + + 1/512 : (s1'=3) & (bc1'=158) + + 1/512 : (s1'=3) & (bc1'=159) + + 1/512 : (s1'=3) & (bc1'=160) + + 1/512 : (s1'=3) & (bc1'=161) + + 1/512 : (s1'=3) & (bc1'=162) + + 1/512 : (s1'=3) & (bc1'=163) + + 1/512 : (s1'=3) & (bc1'=164) + + 1/512 : (s1'=3) & (bc1'=165) + + 1/512 : (s1'=3) & (bc1'=166) + + 1/512 : (s1'=3) & (bc1'=167) + + 1/512 : (s1'=3) & (bc1'=168) + + 1/512 : (s1'=3) & (bc1'=169) + + 1/512 : (s1'=3) & (bc1'=170) + + 1/512 : (s1'=3) & (bc1'=171) + + 1/512 : (s1'=3) & (bc1'=172) + + 1/512 : (s1'=3) & (bc1'=173) + + 1/512 : (s1'=3) & (bc1'=174) + + 1/512 : (s1'=3) & (bc1'=175) + + 1/512 : (s1'=3) & (bc1'=176) + + 1/512 : (s1'=3) & (bc1'=177) + + 1/512 : (s1'=3) & (bc1'=178) + + 1/512 : (s1'=3) & (bc1'=179) + + 1/512 : (s1'=3) & (bc1'=180) + + 1/512 : (s1'=3) & (bc1'=181) + + 1/512 : (s1'=3) & (bc1'=182) + + 1/512 : (s1'=3) & (bc1'=183) + + 1/512 : (s1'=3) & (bc1'=184) + + 1/512 : (s1'=3) & (bc1'=185) + + 1/512 : (s1'=3) & (bc1'=186) + + 1/512 : (s1'=3) & (bc1'=187) + + 1/512 : (s1'=3) & (bc1'=188) + + 1/512 : (s1'=3) & (bc1'=189) + + 1/512 : (s1'=3) & (bc1'=190) + + 1/512 : (s1'=3) & (bc1'=191) + + 1/512 : (s1'=3) & (bc1'=192) + + 1/512 : (s1'=3) & (bc1'=193) + + 1/512 : (s1'=3) & (bc1'=194) + + 1/512 : (s1'=3) & (bc1'=195) + + 1/512 : (s1'=3) & (bc1'=196) + + 1/512 : (s1'=3) & (bc1'=197) + + 1/512 : (s1'=3) & (bc1'=198) + + 1/512 : (s1'=3) & (bc1'=199) + + 1/512 : (s1'=3) & (bc1'=200) + + 1/512 : (s1'=3) & (bc1'=201) + + 1/512 : (s1'=3) & (bc1'=202) + + 1/512 : (s1'=3) & (bc1'=203) + + 1/512 : (s1'=3) & (bc1'=204) + + 1/512 : (s1'=3) & (bc1'=205) + + 1/512 : (s1'=3) & (bc1'=206) + + 1/512 : (s1'=3) & (bc1'=207) + + 1/512 : (s1'=3) & (bc1'=208) + + 1/512 : (s1'=3) & (bc1'=209) + + 1/512 : (s1'=3) & (bc1'=210) + + 1/512 : (s1'=3) & (bc1'=211) + + 1/512 : (s1'=3) & (bc1'=212) + + 1/512 : (s1'=3) & (bc1'=213) + + 1/512 : (s1'=3) & (bc1'=214) + + 1/512 : (s1'=3) & (bc1'=215) + + 1/512 : (s1'=3) & (bc1'=216) + + 1/512 : (s1'=3) & (bc1'=217) + + 1/512 : (s1'=3) & (bc1'=218) + + 1/512 : (s1'=3) & (bc1'=219) + + 1/512 : (s1'=3) & (bc1'=220) + + 1/512 : (s1'=3) & (bc1'=221) + + 1/512 : (s1'=3) & (bc1'=222) + + 1/512 : (s1'=3) & (bc1'=223) + + 1/512 : (s1'=3) & (bc1'=224) + + 1/512 : (s1'=3) & (bc1'=225) + + 1/512 : (s1'=3) & (bc1'=226) + + 1/512 : (s1'=3) & (bc1'=227) + + 1/512 : (s1'=3) & (bc1'=228) + + 1/512 : (s1'=3) & (bc1'=229) + + 1/512 : (s1'=3) & (bc1'=230) + + 1/512 : (s1'=3) & (bc1'=231) + + 1/512 : (s1'=3) & (bc1'=232) + + 1/512 : (s1'=3) & (bc1'=233) + + 1/512 : (s1'=3) & (bc1'=234) + + 1/512 : (s1'=3) & (bc1'=235) + + 1/512 : (s1'=3) & (bc1'=236) + + 1/512 : (s1'=3) & (bc1'=237) + + 1/512 : (s1'=3) & (bc1'=238) + + 1/512 : (s1'=3) & (bc1'=239) + + 1/512 : (s1'=3) & (bc1'=240) + + 1/512 : (s1'=3) & (bc1'=241) + + 1/512 : (s1'=3) & (bc1'=242) + + 1/512 : (s1'=3) & (bc1'=243) + + 1/512 : (s1'=3) & (bc1'=244) + + 1/512 : (s1'=3) & (bc1'=245) + + 1/512 : (s1'=3) & (bc1'=246) + + 1/512 : (s1'=3) & (bc1'=247) + + 1/512 : (s1'=3) & (bc1'=248) + + 1/512 : (s1'=3) & (bc1'=249) + + 1/512 : (s1'=3) & (bc1'=250) + + 1/512 : (s1'=3) & (bc1'=251) + + 1/512 : (s1'=3) & (bc1'=252) + + 1/512 : (s1'=3) & (bc1'=253) + + 1/512 : (s1'=3) & (bc1'=254) + + 1/512 : (s1'=3) & (bc1'=255) + + 1/512 : (s1'=3) & (bc1'=256) + + 1/512 : (s1'=3) & (bc1'=257) + + 1/512 : (s1'=3) & (bc1'=258) + + 1/512 : (s1'=3) & (bc1'=259) + + 1/512 : (s1'=3) & (bc1'=260) + + 1/512 : (s1'=3) & (bc1'=261) + + 1/512 : (s1'=3) & (bc1'=262) + + 1/512 : (s1'=3) & (bc1'=263) + + 1/512 : (s1'=3) & (bc1'=264) + + 1/512 : (s1'=3) & (bc1'=265) + + 1/512 : (s1'=3) & (bc1'=266) + + 1/512 : (s1'=3) & (bc1'=267) + + 1/512 : (s1'=3) & (bc1'=268) + + 1/512 : (s1'=3) & (bc1'=269) + + 1/512 : (s1'=3) & (bc1'=270) + + 1/512 : (s1'=3) & (bc1'=271) + + 1/512 : (s1'=3) & (bc1'=272) + + 1/512 : (s1'=3) & (bc1'=273) + + 1/512 : (s1'=3) & (bc1'=274) + + 1/512 : (s1'=3) & (bc1'=275) + + 1/512 : (s1'=3) & (bc1'=276) + + 1/512 : (s1'=3) & (bc1'=277) + + 1/512 : (s1'=3) & (bc1'=278) + + 1/512 : (s1'=3) & (bc1'=279) + + 1/512 : (s1'=3) & (bc1'=280) + + 1/512 : (s1'=3) & (bc1'=281) + + 1/512 : (s1'=3) & (bc1'=282) + + 1/512 : (s1'=3) & (bc1'=283) + + 1/512 : (s1'=3) & (bc1'=284) + + 1/512 : (s1'=3) & (bc1'=285) + + 1/512 : (s1'=3) & (bc1'=286) + + 1/512 : (s1'=3) & (bc1'=287) + + 1/512 : (s1'=3) & (bc1'=288) + + 1/512 : (s1'=3) & (bc1'=289) + + 1/512 : (s1'=3) & (bc1'=290) + + 1/512 : (s1'=3) & (bc1'=291) + + 1/512 : (s1'=3) & (bc1'=292) + + 1/512 : (s1'=3) & (bc1'=293) + + 1/512 : (s1'=3) & (bc1'=294) + + 1/512 : (s1'=3) & (bc1'=295) + + 1/512 : (s1'=3) & (bc1'=296) + + 1/512 : (s1'=3) & (bc1'=297) + + 1/512 : (s1'=3) & (bc1'=298) + + 1/512 : (s1'=3) & (bc1'=299) + + 1/512 : (s1'=3) & (bc1'=300) + + 1/512 : (s1'=3) & (bc1'=301) + + 1/512 : (s1'=3) & (bc1'=302) + + 1/512 : (s1'=3) & (bc1'=303) + + 1/512 : (s1'=3) & (bc1'=304) + + 1/512 : (s1'=3) & (bc1'=305) + + 1/512 : (s1'=3) & (bc1'=306) + + 1/512 : (s1'=3) & (bc1'=307) + + 1/512 : (s1'=3) & (bc1'=308) + + 1/512 : (s1'=3) & (bc1'=309) + + 1/512 : (s1'=3) & (bc1'=310) + + 1/512 : (s1'=3) & (bc1'=311) + + 1/512 : (s1'=3) & (bc1'=312) + + 1/512 : (s1'=3) & (bc1'=313) + + 1/512 : (s1'=3) & (bc1'=314) + + 1/512 : (s1'=3) & (bc1'=315) + + 1/512 : (s1'=3) & (bc1'=316) + + 1/512 : (s1'=3) & (bc1'=317) + + 1/512 : (s1'=3) & (bc1'=318) + + 1/512 : (s1'=3) & (bc1'=319) + + 1/512 : (s1'=3) & (bc1'=320) + + 1/512 : (s1'=3) & (bc1'=321) + + 1/512 : (s1'=3) & (bc1'=322) + + 1/512 : (s1'=3) & (bc1'=323) + + 1/512 : (s1'=3) & (bc1'=324) + + 1/512 : (s1'=3) & (bc1'=325) + + 1/512 : (s1'=3) & (bc1'=326) + + 1/512 : (s1'=3) & (bc1'=327) + + 1/512 : (s1'=3) & (bc1'=328) + + 1/512 : (s1'=3) & (bc1'=329) + + 1/512 : (s1'=3) & (bc1'=330) + + 1/512 : (s1'=3) & (bc1'=331) + + 1/512 : (s1'=3) & (bc1'=332) + + 1/512 : (s1'=3) & (bc1'=333) + + 1/512 : (s1'=3) & (bc1'=334) + + 1/512 : (s1'=3) & (bc1'=335) + + 1/512 : (s1'=3) & (bc1'=336) + + 1/512 : (s1'=3) & (bc1'=337) + + 1/512 : (s1'=3) & (bc1'=338) + + 1/512 : (s1'=3) & (bc1'=339) + + 1/512 : (s1'=3) & (bc1'=340) + + 1/512 : (s1'=3) & (bc1'=341) + + 1/512 : (s1'=3) & (bc1'=342) + + 1/512 : (s1'=3) & (bc1'=343) + + 1/512 : (s1'=3) & (bc1'=344) + + 1/512 : (s1'=3) & (bc1'=345) + + 1/512 : (s1'=3) & (bc1'=346) + + 1/512 : (s1'=3) & (bc1'=347) + + 1/512 : (s1'=3) & (bc1'=348) + + 1/512 : (s1'=3) & (bc1'=349) + + 1/512 : (s1'=3) & (bc1'=350) + + 1/512 : (s1'=3) & (bc1'=351) + + 1/512 : (s1'=3) & (bc1'=352) + + 1/512 : (s1'=3) & (bc1'=353) + + 1/512 : (s1'=3) & (bc1'=354) + + 1/512 : (s1'=3) & (bc1'=355) + + 1/512 : (s1'=3) & (bc1'=356) + + 1/512 : (s1'=3) & (bc1'=357) + + 1/512 : (s1'=3) & (bc1'=358) + + 1/512 : (s1'=3) & (bc1'=359) + + 1/512 : (s1'=3) & (bc1'=360) + + 1/512 : (s1'=3) & (bc1'=361) + + 1/512 : (s1'=3) & (bc1'=362) + + 1/512 : (s1'=3) & (bc1'=363) + + 1/512 : (s1'=3) & (bc1'=364) + + 1/512 : (s1'=3) & (bc1'=365) + + 1/512 : (s1'=3) & (bc1'=366) + + 1/512 : (s1'=3) & (bc1'=367) + + 1/512 : (s1'=3) & (bc1'=368) + + 1/512 : (s1'=3) & (bc1'=369) + + 1/512 : (s1'=3) & (bc1'=370) + + 1/512 : (s1'=3) & (bc1'=371) + + 1/512 : (s1'=3) & (bc1'=372) + + 1/512 : (s1'=3) & (bc1'=373) + + 1/512 : (s1'=3) & (bc1'=374) + + 1/512 : (s1'=3) & (bc1'=375) + + 1/512 : (s1'=3) & (bc1'=376) + + 1/512 : (s1'=3) & (bc1'=377) + + 1/512 : (s1'=3) & (bc1'=378) + + 1/512 : (s1'=3) & (bc1'=379) + + 1/512 : (s1'=3) & (bc1'=380) + + 1/512 : (s1'=3) & (bc1'=381) + + 1/512 : (s1'=3) & (bc1'=382) + + 1/512 : (s1'=3) & (bc1'=383) + + 1/512 : (s1'=3) & (bc1'=384) + + 1/512 : (s1'=3) & (bc1'=385) + + 1/512 : (s1'=3) & (bc1'=386) + + 1/512 : (s1'=3) & (bc1'=387) + + 1/512 : (s1'=3) & (bc1'=388) + + 1/512 : (s1'=3) & (bc1'=389) + + 1/512 : (s1'=3) & (bc1'=390) + + 1/512 : (s1'=3) & (bc1'=391) + + 1/512 : (s1'=3) & (bc1'=392) + + 1/512 : (s1'=3) & (bc1'=393) + + 1/512 : (s1'=3) & (bc1'=394) + + 1/512 : (s1'=3) & (bc1'=395) + + 1/512 : (s1'=3) & (bc1'=396) + + 1/512 : (s1'=3) & (bc1'=397) + + 1/512 : (s1'=3) & (bc1'=398) + + 1/512 : (s1'=3) & (bc1'=399) + + 1/512 : (s1'=3) & (bc1'=400) + + 1/512 : (s1'=3) & (bc1'=401) + + 1/512 : (s1'=3) & (bc1'=402) + + 1/512 : (s1'=3) & (bc1'=403) + + 1/512 : (s1'=3) & (bc1'=404) + + 1/512 : (s1'=3) & (bc1'=405) + + 1/512 : (s1'=3) & (bc1'=406) + + 1/512 : (s1'=3) & (bc1'=407) + + 1/512 : (s1'=3) & (bc1'=408) + + 1/512 : (s1'=3) & (bc1'=409) + + 1/512 : (s1'=3) & (bc1'=410) + + 1/512 : (s1'=3) & (bc1'=411) + + 1/512 : (s1'=3) & (bc1'=412) + + 1/512 : (s1'=3) & (bc1'=413) + + 1/512 : (s1'=3) & (bc1'=414) + + 1/512 : (s1'=3) & (bc1'=415) + + 1/512 : (s1'=3) & (bc1'=416) + + 1/512 : (s1'=3) & (bc1'=417) + + 1/512 : (s1'=3) & (bc1'=418) + + 1/512 : (s1'=3) & (bc1'=419) + + 1/512 : (s1'=3) & (bc1'=420) + + 1/512 : (s1'=3) & (bc1'=421) + + 1/512 : (s1'=3) & (bc1'=422) + + 1/512 : (s1'=3) & (bc1'=423) + + 1/512 : (s1'=3) & (bc1'=424) + + 1/512 : (s1'=3) & (bc1'=425) + + 1/512 : (s1'=3) & (bc1'=426) + + 1/512 : (s1'=3) & (bc1'=427) + + 1/512 : (s1'=3) & (bc1'=428) + + 1/512 : (s1'=3) & (bc1'=429) + + 1/512 : (s1'=3) & (bc1'=430) + + 1/512 : (s1'=3) & (bc1'=431) + + 1/512 : (s1'=3) & (bc1'=432) + + 1/512 : (s1'=3) & (bc1'=433) + + 1/512 : (s1'=3) & (bc1'=434) + + 1/512 : (s1'=3) & (bc1'=435) + + 1/512 : (s1'=3) & (bc1'=436) + + 1/512 : (s1'=3) & (bc1'=437) + + 1/512 : (s1'=3) & (bc1'=438) + + 1/512 : (s1'=3) & (bc1'=439) + + 1/512 : (s1'=3) & (bc1'=440) + + 1/512 : (s1'=3) & (bc1'=441) + + 1/512 : (s1'=3) & (bc1'=442) + + 1/512 : (s1'=3) & (bc1'=443) + + 1/512 : (s1'=3) & (bc1'=444) + + 1/512 : (s1'=3) & (bc1'=445) + + 1/512 : (s1'=3) & (bc1'=446) + + 1/512 : (s1'=3) & (bc1'=447) + + 1/512 : (s1'=3) & (bc1'=448) + + 1/512 : (s1'=3) & (bc1'=449) + + 1/512 : (s1'=3) & (bc1'=450) + + 1/512 : (s1'=3) & (bc1'=451) + + 1/512 : (s1'=3) & (bc1'=452) + + 1/512 : (s1'=3) & (bc1'=453) + + 1/512 : (s1'=3) & (bc1'=454) + + 1/512 : (s1'=3) & (bc1'=455) + + 1/512 : (s1'=3) & (bc1'=456) + + 1/512 : (s1'=3) & (bc1'=457) + + 1/512 : (s1'=3) & (bc1'=458) + + 1/512 : (s1'=3) & (bc1'=459) + + 1/512 : (s1'=3) & (bc1'=460) + + 1/512 : (s1'=3) & (bc1'=461) + + 1/512 : (s1'=3) & (bc1'=462) + + 1/512 : (s1'=3) & (bc1'=463) + + 1/512 : (s1'=3) & (bc1'=464) + + 1/512 : (s1'=3) & (bc1'=465) + + 1/512 : (s1'=3) & (bc1'=466) + + 1/512 : (s1'=3) & (bc1'=467) + + 1/512 : (s1'=3) & (bc1'=468) + + 1/512 : (s1'=3) & (bc1'=469) + + 1/512 : (s1'=3) & (bc1'=470) + + 1/512 : (s1'=3) & (bc1'=471) + + 1/512 : (s1'=3) & (bc1'=472) + + 1/512 : (s1'=3) & (bc1'=473) + + 1/512 : (s1'=3) & (bc1'=474) + + 1/512 : (s1'=3) & (bc1'=475) + + 1/512 : (s1'=3) & (bc1'=476) + + 1/512 : (s1'=3) & (bc1'=477) + + 1/512 : (s1'=3) & (bc1'=478) + + 1/512 : (s1'=3) & (bc1'=479) + + 1/512 : (s1'=3) & (bc1'=480) + + 1/512 : (s1'=3) & (bc1'=481) + + 1/512 : (s1'=3) & (bc1'=482) + + 1/512 : (s1'=3) & (bc1'=483) + + 1/512 : (s1'=3) & (bc1'=484) + + 1/512 : (s1'=3) & (bc1'=485) + + 1/512 : (s1'=3) & (bc1'=486) + + 1/512 : (s1'=3) & (bc1'=487) + + 1/512 : (s1'=3) & (bc1'=488) + + 1/512 : (s1'=3) & (bc1'=489) + + 1/512 : (s1'=3) & (bc1'=490) + + 1/512 : (s1'=3) & (bc1'=491) + + 1/512 : (s1'=3) & (bc1'=492) + + 1/512 : (s1'=3) & (bc1'=493) + + 1/512 : (s1'=3) & (bc1'=494) + + 1/512 : (s1'=3) & (bc1'=495) + + 1/512 : (s1'=3) & (bc1'=496) + + 1/512 : (s1'=3) & (bc1'=497) + + 1/512 : (s1'=3) & (bc1'=498) + + 1/512 : (s1'=3) & (bc1'=499) + + 1/512 : (s1'=3) & (bc1'=500) + + 1/512 : (s1'=3) & (bc1'=501) + + 1/512 : (s1'=3) & (bc1'=502) + + 1/512 : (s1'=3) & (bc1'=503) + + 1/512 : (s1'=3) & (bc1'=504) + + 1/512 : (s1'=3) & (bc1'=505) + + 1/512 : (s1'=3) & (bc1'=506) + + 1/512 : (s1'=3) & (bc1'=507) + + 1/512 : (s1'=3) & (bc1'=508) + + 1/512 : (s1'=3) & (bc1'=509) + + 1/512 : (s1'=3) & (bc1'=510) + + 1/512 : (s1'=3) & (bc1'=511); + // tenth (or more) retransmission + [] s1=2 & cd1=10 -> 1/1024 : (s1'=3) & (bc1'=0) + + 1/1024 : (s1'=3) & (bc1'=1) + + 1/1024 : (s1'=3) & (bc1'=2) + + 1/1024 : (s1'=3) & (bc1'=3) + + 1/1024 : (s1'=3) & (bc1'=4) + + 1/1024 : (s1'=3) & (bc1'=5) + + 1/1024 : (s1'=3) & (bc1'=6) + + 1/1024 : (s1'=3) & (bc1'=7) + + 1/1024 : (s1'=3) & (bc1'=8) + + 1/1024 : (s1'=3) & (bc1'=9) + + 1/1024 : (s1'=3) & (bc1'=10) + + 1/1024 : (s1'=3) & (bc1'=11) + + 1/1024 : (s1'=3) & (bc1'=12) + + 1/1024 : (s1'=3) & (bc1'=13) + + 1/1024 : (s1'=3) & (bc1'=14) + + 1/1024 : (s1'=3) & (bc1'=15) + + 1/1024 : (s1'=3) & (bc1'=16) + + 1/1024 : (s1'=3) & (bc1'=17) + + 1/1024 : (s1'=3) & (bc1'=18) + + 1/1024 : (s1'=3) & (bc1'=19) + + 1/1024 : (s1'=3) & (bc1'=20) + + 1/1024 : (s1'=3) & (bc1'=21) + + 1/1024 : (s1'=3) & (bc1'=22) + + 1/1024 : (s1'=3) & (bc1'=23) + + 1/1024 : (s1'=3) & (bc1'=24) + + 1/1024 : (s1'=3) & (bc1'=25) + + 1/1024 : (s1'=3) & (bc1'=26) + + 1/1024 : (s1'=3) & (bc1'=27) + + 1/1024 : (s1'=3) & (bc1'=28) + + 1/1024 : (s1'=3) & (bc1'=29) + + 1/1024 : (s1'=3) & (bc1'=30) + + 1/1024 : (s1'=3) & (bc1'=31) + + 1/1024 : (s1'=3) & (bc1'=32) + + 1/1024 : (s1'=3) & (bc1'=33) + + 1/1024 : (s1'=3) & (bc1'=34) + + 1/1024 : (s1'=3) & (bc1'=35) + + 1/1024 : (s1'=3) & (bc1'=36) + + 1/1024 : (s1'=3) & (bc1'=37) + + 1/1024 : (s1'=3) & (bc1'=38) + + 1/1024 : (s1'=3) & (bc1'=39) + + 1/1024 : (s1'=3) & (bc1'=40) + + 1/1024 : (s1'=3) & (bc1'=41) + + 1/1024 : (s1'=3) & (bc1'=42) + + 1/1024 : (s1'=3) & (bc1'=43) + + 1/1024 : (s1'=3) & (bc1'=44) + + 1/1024 : (s1'=3) & (bc1'=45) + + 1/1024 : (s1'=3) & (bc1'=46) + + 1/1024 : (s1'=3) & (bc1'=47) + + 1/1024 : (s1'=3) & (bc1'=48) + + 1/1024 : (s1'=3) & (bc1'=49) + + 1/1024 : (s1'=3) & (bc1'=50) + + 1/1024 : (s1'=3) & (bc1'=51) + + 1/1024 : (s1'=3) & (bc1'=52) + + 1/1024 : (s1'=3) & (bc1'=53) + + 1/1024 : (s1'=3) & (bc1'=54) + + 1/1024 : (s1'=3) & (bc1'=55) + + 1/1024 : (s1'=3) & (bc1'=56) + + 1/1024 : (s1'=3) & (bc1'=57) + + 1/1024 : (s1'=3) & (bc1'=58) + + 1/1024 : (s1'=3) & (bc1'=59) + + 1/1024 : (s1'=3) & (bc1'=60) + + 1/1024 : (s1'=3) & (bc1'=61) + + 1/1024 : (s1'=3) & (bc1'=62) + + 1/1024 : (s1'=3) & (bc1'=63) + + 1/1024 : (s1'=3) & (bc1'=64) + + 1/1024 : (s1'=3) & (bc1'=65) + + 1/1024 : (s1'=3) & (bc1'=66) + + 1/1024 : (s1'=3) & (bc1'=67) + + 1/1024 : (s1'=3) & (bc1'=68) + + 1/1024 : (s1'=3) & (bc1'=69) + + 1/1024 : (s1'=3) & (bc1'=70) + + 1/1024 : (s1'=3) & (bc1'=71) + + 1/1024 : (s1'=3) & (bc1'=72) + + 1/1024 : (s1'=3) & (bc1'=73) + + 1/1024 : (s1'=3) & (bc1'=74) + + 1/1024 : (s1'=3) & (bc1'=75) + + 1/1024 : (s1'=3) & (bc1'=76) + + 1/1024 : (s1'=3) & (bc1'=77) + + 1/1024 : (s1'=3) & (bc1'=78) + + 1/1024 : (s1'=3) & (bc1'=79) + + 1/1024 : (s1'=3) & (bc1'=80) + + 1/1024 : (s1'=3) & (bc1'=81) + + 1/1024 : (s1'=3) & (bc1'=82) + + 1/1024 : (s1'=3) & (bc1'=83) + + 1/1024 : (s1'=3) & (bc1'=84) + + 1/1024 : (s1'=3) & (bc1'=85) + + 1/1024 : (s1'=3) & (bc1'=86) + + 1/1024 : (s1'=3) & (bc1'=87) + + 1/1024 : (s1'=3) & (bc1'=88) + + 1/1024 : (s1'=3) & (bc1'=89) + + 1/1024 : (s1'=3) & (bc1'=90) + + 1/1024 : (s1'=3) & (bc1'=91) + + 1/1024 : (s1'=3) & (bc1'=92) + + 1/1024 : (s1'=3) & (bc1'=93) + + 1/1024 : (s1'=3) & (bc1'=94) + + 1/1024 : (s1'=3) & (bc1'=95) + + 1/1024 : (s1'=3) & (bc1'=96) + + 1/1024 : (s1'=3) & (bc1'=97) + + 1/1024 : (s1'=3) & (bc1'=98) + + 1/1024 : (s1'=3) & (bc1'=99) + + 1/1024 : (s1'=3) & (bc1'=100) + + 1/1024 : (s1'=3) & (bc1'=101) + + 1/1024 : (s1'=3) & (bc1'=102) + + 1/1024 : (s1'=3) & (bc1'=103) + + 1/1024 : (s1'=3) & (bc1'=104) + + 1/1024 : (s1'=3) & (bc1'=105) + + 1/1024 : (s1'=3) & (bc1'=106) + + 1/1024 : (s1'=3) & (bc1'=107) + + 1/1024 : (s1'=3) & (bc1'=108) + + 1/1024 : (s1'=3) & (bc1'=109) + + 1/1024 : (s1'=3) & (bc1'=110) + + 1/1024 : (s1'=3) & (bc1'=111) + + 1/1024 : (s1'=3) & (bc1'=112) + + 1/1024 : (s1'=3) & (bc1'=113) + + 1/1024 : (s1'=3) & (bc1'=114) + + 1/1024 : (s1'=3) & (bc1'=115) + + 1/1024 : (s1'=3) & (bc1'=116) + + 1/1024 : (s1'=3) & (bc1'=117) + + 1/1024 : (s1'=3) & (bc1'=118) + + 1/1024 : (s1'=3) & (bc1'=119) + + 1/1024 : (s1'=3) & (bc1'=120) + + 1/1024 : (s1'=3) & (bc1'=121) + + 1/1024 : (s1'=3) & (bc1'=122) + + 1/1024 : (s1'=3) & (bc1'=123) + + 1/1024 : (s1'=3) & (bc1'=124) + + 1/1024 : (s1'=3) & (bc1'=125) + + 1/1024 : (s1'=3) & (bc1'=126) + + 1/1024 : (s1'=3) & (bc1'=127) + + 1/1024 : (s1'=3) & (bc1'=128) + + 1/1024 : (s1'=3) & (bc1'=129) + + 1/1024 : (s1'=3) & (bc1'=130) + + 1/1024 : (s1'=3) & (bc1'=131) + + 1/1024 : (s1'=3) & (bc1'=132) + + 1/1024 : (s1'=3) & (bc1'=133) + + 1/1024 : (s1'=3) & (bc1'=134) + + 1/1024 : (s1'=3) & (bc1'=135) + + 1/1024 : (s1'=3) & (bc1'=136) + + 1/1024 : (s1'=3) & (bc1'=137) + + 1/1024 : (s1'=3) & (bc1'=138) + + 1/1024 : (s1'=3) & (bc1'=139) + + 1/1024 : (s1'=3) & (bc1'=140) + + 1/1024 : (s1'=3) & (bc1'=141) + + 1/1024 : (s1'=3) & (bc1'=142) + + 1/1024 : (s1'=3) & (bc1'=143) + + 1/1024 : (s1'=3) & (bc1'=144) + + 1/1024 : (s1'=3) & (bc1'=145) + + 1/1024 : (s1'=3) & (bc1'=146) + + 1/1024 : (s1'=3) & (bc1'=147) + + 1/1024 : (s1'=3) & (bc1'=148) + + 1/1024 : (s1'=3) & (bc1'=149) + + 1/1024 : (s1'=3) & (bc1'=150) + + 1/1024 : (s1'=3) & (bc1'=151) + + 1/1024 : (s1'=3) & (bc1'=152) + + 1/1024 : (s1'=3) & (bc1'=153) + + 1/1024 : (s1'=3) & (bc1'=154) + + 1/1024 : (s1'=3) & (bc1'=155) + + 1/1024 : (s1'=3) & (bc1'=156) + + 1/1024 : (s1'=3) & (bc1'=157) + + 1/1024 : (s1'=3) & (bc1'=158) + + 1/1024 : (s1'=3) & (bc1'=159) + + 1/1024 : (s1'=3) & (bc1'=160) + + 1/1024 : (s1'=3) & (bc1'=161) + + 1/1024 : (s1'=3) & (bc1'=162) + + 1/1024 : (s1'=3) & (bc1'=163) + + 1/1024 : (s1'=3) & (bc1'=164) + + 1/1024 : (s1'=3) & (bc1'=165) + + 1/1024 : (s1'=3) & (bc1'=166) + + 1/1024 : (s1'=3) & (bc1'=167) + + 1/1024 : (s1'=3) & (bc1'=168) + + 1/1024 : (s1'=3) & (bc1'=169) + + 1/1024 : (s1'=3) & (bc1'=170) + + 1/1024 : (s1'=3) & (bc1'=171) + + 1/1024 : (s1'=3) & (bc1'=172) + + 1/1024 : (s1'=3) & (bc1'=173) + + 1/1024 : (s1'=3) & (bc1'=174) + + 1/1024 : (s1'=3) & (bc1'=175) + + 1/1024 : (s1'=3) & (bc1'=176) + + 1/1024 : (s1'=3) & (bc1'=177) + + 1/1024 : (s1'=3) & (bc1'=178) + + 1/1024 : (s1'=3) & (bc1'=179) + + 1/1024 : (s1'=3) & (bc1'=180) + + 1/1024 : (s1'=3) & (bc1'=181) + + 1/1024 : (s1'=3) & (bc1'=182) + + 1/1024 : (s1'=3) & (bc1'=183) + + 1/1024 : (s1'=3) & (bc1'=184) + + 1/1024 : (s1'=3) & (bc1'=185) + + 1/1024 : (s1'=3) & (bc1'=186) + + 1/1024 : (s1'=3) & (bc1'=187) + + 1/1024 : (s1'=3) & (bc1'=188) + + 1/1024 : (s1'=3) & (bc1'=189) + + 1/1024 : (s1'=3) & (bc1'=190) + + 1/1024 : (s1'=3) & (bc1'=191) + + 1/1024 : (s1'=3) & (bc1'=192) + + 1/1024 : (s1'=3) & (bc1'=193) + + 1/1024 : (s1'=3) & (bc1'=194) + + 1/1024 : (s1'=3) & (bc1'=195) + + 1/1024 : (s1'=3) & (bc1'=196) + + 1/1024 : (s1'=3) & (bc1'=197) + + 1/1024 : (s1'=3) & (bc1'=198) + + 1/1024 : (s1'=3) & (bc1'=199) + + 1/1024 : (s1'=3) & (bc1'=200) + + 1/1024 : (s1'=3) & (bc1'=201) + + 1/1024 : (s1'=3) & (bc1'=202) + + 1/1024 : (s1'=3) & (bc1'=203) + + 1/1024 : (s1'=3) & (bc1'=204) + + 1/1024 : (s1'=3) & (bc1'=205) + + 1/1024 : (s1'=3) & (bc1'=206) + + 1/1024 : (s1'=3) & (bc1'=207) + + 1/1024 : (s1'=3) & (bc1'=208) + + 1/1024 : (s1'=3) & (bc1'=209) + + 1/1024 : (s1'=3) & (bc1'=210) + + 1/1024 : (s1'=3) & (bc1'=211) + + 1/1024 : (s1'=3) & (bc1'=212) + + 1/1024 : (s1'=3) & (bc1'=213) + + 1/1024 : (s1'=3) & (bc1'=214) + + 1/1024 : (s1'=3) & (bc1'=215) + + 1/1024 : (s1'=3) & (bc1'=216) + + 1/1024 : (s1'=3) & (bc1'=217) + + 1/1024 : (s1'=3) & (bc1'=218) + + 1/1024 : (s1'=3) & (bc1'=219) + + 1/1024 : (s1'=3) & (bc1'=220) + + 1/1024 : (s1'=3) & (bc1'=221) + + 1/1024 : (s1'=3) & (bc1'=222) + + 1/1024 : (s1'=3) & (bc1'=223) + + 1/1024 : (s1'=3) & (bc1'=224) + + 1/1024 : (s1'=3) & (bc1'=225) + + 1/1024 : (s1'=3) & (bc1'=226) + + 1/1024 : (s1'=3) & (bc1'=227) + + 1/1024 : (s1'=3) & (bc1'=228) + + 1/1024 : (s1'=3) & (bc1'=229) + + 1/1024 : (s1'=3) & (bc1'=230) + + 1/1024 : (s1'=3) & (bc1'=231) + + 1/1024 : (s1'=3) & (bc1'=232) + + 1/1024 : (s1'=3) & (bc1'=233) + + 1/1024 : (s1'=3) & (bc1'=234) + + 1/1024 : (s1'=3) & (bc1'=235) + + 1/1024 : (s1'=3) & (bc1'=236) + + 1/1024 : (s1'=3) & (bc1'=237) + + 1/1024 : (s1'=3) & (bc1'=238) + + 1/1024 : (s1'=3) & (bc1'=239) + + 1/1024 : (s1'=3) & (bc1'=240) + + 1/1024 : (s1'=3) & (bc1'=241) + + 1/1024 : (s1'=3) & (bc1'=242) + + 1/1024 : (s1'=3) & (bc1'=243) + + 1/1024 : (s1'=3) & (bc1'=244) + + 1/1024 : (s1'=3) & (bc1'=245) + + 1/1024 : (s1'=3) & (bc1'=246) + + 1/1024 : (s1'=3) & (bc1'=247) + + 1/1024 : (s1'=3) & (bc1'=248) + + 1/1024 : (s1'=3) & (bc1'=249) + + 1/1024 : (s1'=3) & (bc1'=250) + + 1/1024 : (s1'=3) & (bc1'=251) + + 1/1024 : (s1'=3) & (bc1'=252) + + 1/1024 : (s1'=3) & (bc1'=253) + + 1/1024 : (s1'=3) & (bc1'=254) + + 1/1024 : (s1'=3) & (bc1'=255) + + 1/1024 : (s1'=3) & (bc1'=256) + + 1/1024 : (s1'=3) & (bc1'=257) + + 1/1024 : (s1'=3) & (bc1'=258) + + 1/1024 : (s1'=3) & (bc1'=259) + + 1/1024 : (s1'=3) & (bc1'=260) + + 1/1024 : (s1'=3) & (bc1'=261) + + 1/1024 : (s1'=3) & (bc1'=262) + + 1/1024 : (s1'=3) & (bc1'=263) + + 1/1024 : (s1'=3) & (bc1'=264) + + 1/1024 : (s1'=3) & (bc1'=265) + + 1/1024 : (s1'=3) & (bc1'=266) + + 1/1024 : (s1'=3) & (bc1'=267) + + 1/1024 : (s1'=3) & (bc1'=268) + + 1/1024 : (s1'=3) & (bc1'=269) + + 1/1024 : (s1'=3) & (bc1'=270) + + 1/1024 : (s1'=3) & (bc1'=271) + + 1/1024 : (s1'=3) & (bc1'=272) + + 1/1024 : (s1'=3) & (bc1'=273) + + 1/1024 : (s1'=3) & (bc1'=274) + + 1/1024 : (s1'=3) & (bc1'=275) + + 1/1024 : (s1'=3) & (bc1'=276) + + 1/1024 : (s1'=3) & (bc1'=277) + + 1/1024 : (s1'=3) & (bc1'=278) + + 1/1024 : (s1'=3) & (bc1'=279) + + 1/1024 : (s1'=3) & (bc1'=280) + + 1/1024 : (s1'=3) & (bc1'=281) + + 1/1024 : (s1'=3) & (bc1'=282) + + 1/1024 : (s1'=3) & (bc1'=283) + + 1/1024 : (s1'=3) & (bc1'=284) + + 1/1024 : (s1'=3) & (bc1'=285) + + 1/1024 : (s1'=3) & (bc1'=286) + + 1/1024 : (s1'=3) & (bc1'=287) + + 1/1024 : (s1'=3) & (bc1'=288) + + 1/1024 : (s1'=3) & (bc1'=289) + + 1/1024 : (s1'=3) & (bc1'=290) + + 1/1024 : (s1'=3) & (bc1'=291) + + 1/1024 : (s1'=3) & (bc1'=292) + + 1/1024 : (s1'=3) & (bc1'=293) + + 1/1024 : (s1'=3) & (bc1'=294) + + 1/1024 : (s1'=3) & (bc1'=295) + + 1/1024 : (s1'=3) & (bc1'=296) + + 1/1024 : (s1'=3) & (bc1'=297) + + 1/1024 : (s1'=3) & (bc1'=298) + + 1/1024 : (s1'=3) & (bc1'=299) + + 1/1024 : (s1'=3) & (bc1'=300) + + 1/1024 : (s1'=3) & (bc1'=301) + + 1/1024 : (s1'=3) & (bc1'=302) + + 1/1024 : (s1'=3) & (bc1'=303) + + 1/1024 : (s1'=3) & (bc1'=304) + + 1/1024 : (s1'=3) & (bc1'=305) + + 1/1024 : (s1'=3) & (bc1'=306) + + 1/1024 : (s1'=3) & (bc1'=307) + + 1/1024 : (s1'=3) & (bc1'=308) + + 1/1024 : (s1'=3) & (bc1'=309) + + 1/1024 : (s1'=3) & (bc1'=310) + + 1/1024 : (s1'=3) & (bc1'=311) + + 1/1024 : (s1'=3) & (bc1'=312) + + 1/1024 : (s1'=3) & (bc1'=313) + + 1/1024 : (s1'=3) & (bc1'=314) + + 1/1024 : (s1'=3) & (bc1'=315) + + 1/1024 : (s1'=3) & (bc1'=316) + + 1/1024 : (s1'=3) & (bc1'=317) + + 1/1024 : (s1'=3) & (bc1'=318) + + 1/1024 : (s1'=3) & (bc1'=319) + + 1/1024 : (s1'=3) & (bc1'=320) + + 1/1024 : (s1'=3) & (bc1'=321) + + 1/1024 : (s1'=3) & (bc1'=322) + + 1/1024 : (s1'=3) & (bc1'=323) + + 1/1024 : (s1'=3) & (bc1'=324) + + 1/1024 : (s1'=3) & (bc1'=325) + + 1/1024 : (s1'=3) & (bc1'=326) + + 1/1024 : (s1'=3) & (bc1'=327) + + 1/1024 : (s1'=3) & (bc1'=328) + + 1/1024 : (s1'=3) & (bc1'=329) + + 1/1024 : (s1'=3) & (bc1'=330) + + 1/1024 : (s1'=3) & (bc1'=331) + + 1/1024 : (s1'=3) & (bc1'=332) + + 1/1024 : (s1'=3) & (bc1'=333) + + 1/1024 : (s1'=3) & (bc1'=334) + + 1/1024 : (s1'=3) & (bc1'=335) + + 1/1024 : (s1'=3) & (bc1'=336) + + 1/1024 : (s1'=3) & (bc1'=337) + + 1/1024 : (s1'=3) & (bc1'=338) + + 1/1024 : (s1'=3) & (bc1'=339) + + 1/1024 : (s1'=3) & (bc1'=340) + + 1/1024 : (s1'=3) & (bc1'=341) + + 1/1024 : (s1'=3) & (bc1'=342) + + 1/1024 : (s1'=3) & (bc1'=343) + + 1/1024 : (s1'=3) & (bc1'=344) + + 1/1024 : (s1'=3) & (bc1'=345) + + 1/1024 : (s1'=3) & (bc1'=346) + + 1/1024 : (s1'=3) & (bc1'=347) + + 1/1024 : (s1'=3) & (bc1'=348) + + 1/1024 : (s1'=3) & (bc1'=349) + + 1/1024 : (s1'=3) & (bc1'=350) + + 1/1024 : (s1'=3) & (bc1'=351) + + 1/1024 : (s1'=3) & (bc1'=352) + + 1/1024 : (s1'=3) & (bc1'=353) + + 1/1024 : (s1'=3) & (bc1'=354) + + 1/1024 : (s1'=3) & (bc1'=355) + + 1/1024 : (s1'=3) & (bc1'=356) + + 1/1024 : (s1'=3) & (bc1'=357) + + 1/1024 : (s1'=3) & (bc1'=358) + + 1/1024 : (s1'=3) & (bc1'=359) + + 1/1024 : (s1'=3) & (bc1'=360) + + 1/1024 : (s1'=3) & (bc1'=361) + + 1/1024 : (s1'=3) & (bc1'=362) + + 1/1024 : (s1'=3) & (bc1'=363) + + 1/1024 : (s1'=3) & (bc1'=364) + + 1/1024 : (s1'=3) & (bc1'=365) + + 1/1024 : (s1'=3) & (bc1'=366) + + 1/1024 : (s1'=3) & (bc1'=367) + + 1/1024 : (s1'=3) & (bc1'=368) + + 1/1024 : (s1'=3) & (bc1'=369) + + 1/1024 : (s1'=3) & (bc1'=370) + + 1/1024 : (s1'=3) & (bc1'=371) + + 1/1024 : (s1'=3) & (bc1'=372) + + 1/1024 : (s1'=3) & (bc1'=373) + + 1/1024 : (s1'=3) & (bc1'=374) + + 1/1024 : (s1'=3) & (bc1'=375) + + 1/1024 : (s1'=3) & (bc1'=376) + + 1/1024 : (s1'=3) & (bc1'=377) + + 1/1024 : (s1'=3) & (bc1'=378) + + 1/1024 : (s1'=3) & (bc1'=379) + + 1/1024 : (s1'=3) & (bc1'=380) + + 1/1024 : (s1'=3) & (bc1'=381) + + 1/1024 : (s1'=3) & (bc1'=382) + + 1/1024 : (s1'=3) & (bc1'=383) + + 1/1024 : (s1'=3) & (bc1'=384) + + 1/1024 : (s1'=3) & (bc1'=385) + + 1/1024 : (s1'=3) & (bc1'=386) + + 1/1024 : (s1'=3) & (bc1'=387) + + 1/1024 : (s1'=3) & (bc1'=388) + + 1/1024 : (s1'=3) & (bc1'=389) + + 1/1024 : (s1'=3) & (bc1'=390) + + 1/1024 : (s1'=3) & (bc1'=391) + + 1/1024 : (s1'=3) & (bc1'=392) + + 1/1024 : (s1'=3) & (bc1'=393) + + 1/1024 : (s1'=3) & (bc1'=394) + + 1/1024 : (s1'=3) & (bc1'=395) + + 1/1024 : (s1'=3) & (bc1'=396) + + 1/1024 : (s1'=3) & (bc1'=397) + + 1/1024 : (s1'=3) & (bc1'=398) + + 1/1024 : (s1'=3) & (bc1'=399) + + 1/1024 : (s1'=3) & (bc1'=400) + + 1/1024 : (s1'=3) & (bc1'=401) + + 1/1024 : (s1'=3) & (bc1'=402) + + 1/1024 : (s1'=3) & (bc1'=403) + + 1/1024 : (s1'=3) & (bc1'=404) + + 1/1024 : (s1'=3) & (bc1'=405) + + 1/1024 : (s1'=3) & (bc1'=406) + + 1/1024 : (s1'=3) & (bc1'=407) + + 1/1024 : (s1'=3) & (bc1'=408) + + 1/1024 : (s1'=3) & (bc1'=409) + + 1/1024 : (s1'=3) & (bc1'=410) + + 1/1024 : (s1'=3) & (bc1'=411) + + 1/1024 : (s1'=3) & (bc1'=412) + + 1/1024 : (s1'=3) & (bc1'=413) + + 1/1024 : (s1'=3) & (bc1'=414) + + 1/1024 : (s1'=3) & (bc1'=415) + + 1/1024 : (s1'=3) & (bc1'=416) + + 1/1024 : (s1'=3) & (bc1'=417) + + 1/1024 : (s1'=3) & (bc1'=418) + + 1/1024 : (s1'=3) & (bc1'=419) + + 1/1024 : (s1'=3) & (bc1'=420) + + 1/1024 : (s1'=3) & (bc1'=421) + + 1/1024 : (s1'=3) & (bc1'=422) + + 1/1024 : (s1'=3) & (bc1'=423) + + 1/1024 : (s1'=3) & (bc1'=424) + + 1/1024 : (s1'=3) & (bc1'=425) + + 1/1024 : (s1'=3) & (bc1'=426) + + 1/1024 : (s1'=3) & (bc1'=427) + + 1/1024 : (s1'=3) & (bc1'=428) + + 1/1024 : (s1'=3) & (bc1'=429) + + 1/1024 : (s1'=3) & (bc1'=430) + + 1/1024 : (s1'=3) & (bc1'=431) + + 1/1024 : (s1'=3) & (bc1'=432) + + 1/1024 : (s1'=3) & (bc1'=433) + + 1/1024 : (s1'=3) & (bc1'=434) + + 1/1024 : (s1'=3) & (bc1'=435) + + 1/1024 : (s1'=3) & (bc1'=436) + + 1/1024 : (s1'=3) & (bc1'=437) + + 1/1024 : (s1'=3) & (bc1'=438) + + 1/1024 : (s1'=3) & (bc1'=439) + + 1/1024 : (s1'=3) & (bc1'=440) + + 1/1024 : (s1'=3) & (bc1'=441) + + 1/1024 : (s1'=3) & (bc1'=442) + + 1/1024 : (s1'=3) & (bc1'=443) + + 1/1024 : (s1'=3) & (bc1'=444) + + 1/1024 : (s1'=3) & (bc1'=445) + + 1/1024 : (s1'=3) & (bc1'=446) + + 1/1024 : (s1'=3) & (bc1'=447) + + 1/1024 : (s1'=3) & (bc1'=448) + + 1/1024 : (s1'=3) & (bc1'=449) + + 1/1024 : (s1'=3) & (bc1'=450) + + 1/1024 : (s1'=3) & (bc1'=451) + + 1/1024 : (s1'=3) & (bc1'=452) + + 1/1024 : (s1'=3) & (bc1'=453) + + 1/1024 : (s1'=3) & (bc1'=454) + + 1/1024 : (s1'=3) & (bc1'=455) + + 1/1024 : (s1'=3) & (bc1'=456) + + 1/1024 : (s1'=3) & (bc1'=457) + + 1/1024 : (s1'=3) & (bc1'=458) + + 1/1024 : (s1'=3) & (bc1'=459) + + 1/1024 : (s1'=3) & (bc1'=460) + + 1/1024 : (s1'=3) & (bc1'=461) + + 1/1024 : (s1'=3) & (bc1'=462) + + 1/1024 : (s1'=3) & (bc1'=463) + + 1/1024 : (s1'=3) & (bc1'=464) + + 1/1024 : (s1'=3) & (bc1'=465) + + 1/1024 : (s1'=3) & (bc1'=466) + + 1/1024 : (s1'=3) & (bc1'=467) + + 1/1024 : (s1'=3) & (bc1'=468) + + 1/1024 : (s1'=3) & (bc1'=469) + + 1/1024 : (s1'=3) & (bc1'=470) + + 1/1024 : (s1'=3) & (bc1'=471) + + 1/1024 : (s1'=3) & (bc1'=472) + + 1/1024 : (s1'=3) & (bc1'=473) + + 1/1024 : (s1'=3) & (bc1'=474) + + 1/1024 : (s1'=3) & (bc1'=475) + + 1/1024 : (s1'=3) & (bc1'=476) + + 1/1024 : (s1'=3) & (bc1'=477) + + 1/1024 : (s1'=3) & (bc1'=478) + + 1/1024 : (s1'=3) & (bc1'=479) + + 1/1024 : (s1'=3) & (bc1'=480) + + 1/1024 : (s1'=3) & (bc1'=481) + + 1/1024 : (s1'=3) & (bc1'=482) + + 1/1024 : (s1'=3) & (bc1'=483) + + 1/1024 : (s1'=3) & (bc1'=484) + + 1/1024 : (s1'=3) & (bc1'=485) + + 1/1024 : (s1'=3) & (bc1'=486) + + 1/1024 : (s1'=3) & (bc1'=487) + + 1/1024 : (s1'=3) & (bc1'=488) + + 1/1024 : (s1'=3) & (bc1'=489) + + 1/1024 : (s1'=3) & (bc1'=490) + + 1/1024 : (s1'=3) & (bc1'=491) + + 1/1024 : (s1'=3) & (bc1'=492) + + 1/1024 : (s1'=3) & (bc1'=493) + + 1/1024 : (s1'=3) & (bc1'=494) + + 1/1024 : (s1'=3) & (bc1'=495) + + 1/1024 : (s1'=3) & (bc1'=496) + + 1/1024 : (s1'=3) & (bc1'=497) + + 1/1024 : (s1'=3) & (bc1'=498) + + 1/1024 : (s1'=3) & (bc1'=499) + + 1/1024 : (s1'=3) & (bc1'=500) + + 1/1024 : (s1'=3) & (bc1'=501) + + 1/1024 : (s1'=3) & (bc1'=502) + + 1/1024 : (s1'=3) & (bc1'=503) + + 1/1024 : (s1'=3) & (bc1'=504) + + 1/1024 : (s1'=3) & (bc1'=505) + + 1/1024 : (s1'=3) & (bc1'=506) + + 1/1024 : (s1'=3) & (bc1'=507) + + 1/1024 : (s1'=3) & (bc1'=508) + + 1/1024 : (s1'=3) & (bc1'=509) + + 1/1024 : (s1'=3) & (bc1'=510) + + 1/1024 : (s1'=3) & (bc1'=511) + + 1/1024 : (s1'=3) & (bc1'=512) + + 1/1024 : (s1'=3) & (bc1'=513) + + 1/1024 : (s1'=3) & (bc1'=514) + + 1/1024 : (s1'=3) & (bc1'=515) + + 1/1024 : (s1'=3) & (bc1'=516) + + 1/1024 : (s1'=3) & (bc1'=517) + + 1/1024 : (s1'=3) & (bc1'=518) + + 1/1024 : (s1'=3) & (bc1'=519) + + 1/1024 : (s1'=3) & (bc1'=520) + + 1/1024 : (s1'=3) & (bc1'=521) + + 1/1024 : (s1'=3) & (bc1'=522) + + 1/1024 : (s1'=3) & (bc1'=523) + + 1/1024 : (s1'=3) & (bc1'=524) + + 1/1024 : (s1'=3) & (bc1'=525) + + 1/1024 : (s1'=3) & (bc1'=526) + + 1/1024 : (s1'=3) & (bc1'=527) + + 1/1024 : (s1'=3) & (bc1'=528) + + 1/1024 : (s1'=3) & (bc1'=529) + + 1/1024 : (s1'=3) & (bc1'=530) + + 1/1024 : (s1'=3) & (bc1'=531) + + 1/1024 : (s1'=3) & (bc1'=532) + + 1/1024 : (s1'=3) & (bc1'=533) + + 1/1024 : (s1'=3) & (bc1'=534) + + 1/1024 : (s1'=3) & (bc1'=535) + + 1/1024 : (s1'=3) & (bc1'=536) + + 1/1024 : (s1'=3) & (bc1'=537) + + 1/1024 : (s1'=3) & (bc1'=538) + + 1/1024 : (s1'=3) & (bc1'=539) + + 1/1024 : (s1'=3) & (bc1'=540) + + 1/1024 : (s1'=3) & (bc1'=541) + + 1/1024 : (s1'=3) & (bc1'=542) + + 1/1024 : (s1'=3) & (bc1'=543) + + 1/1024 : (s1'=3) & (bc1'=544) + + 1/1024 : (s1'=3) & (bc1'=545) + + 1/1024 : (s1'=3) & (bc1'=546) + + 1/1024 : (s1'=3) & (bc1'=547) + + 1/1024 : (s1'=3) & (bc1'=548) + + 1/1024 : (s1'=3) & (bc1'=549) + + 1/1024 : (s1'=3) & (bc1'=550) + + 1/1024 : (s1'=3) & (bc1'=551) + + 1/1024 : (s1'=3) & (bc1'=552) + + 1/1024 : (s1'=3) & (bc1'=553) + + 1/1024 : (s1'=3) & (bc1'=554) + + 1/1024 : (s1'=3) & (bc1'=555) + + 1/1024 : (s1'=3) & (bc1'=556) + + 1/1024 : (s1'=3) & (bc1'=557) + + 1/1024 : (s1'=3) & (bc1'=558) + + 1/1024 : (s1'=3) & (bc1'=559) + + 1/1024 : (s1'=3) & (bc1'=560) + + 1/1024 : (s1'=3) & (bc1'=561) + + 1/1024 : (s1'=3) & (bc1'=562) + + 1/1024 : (s1'=3) & (bc1'=563) + + 1/1024 : (s1'=3) & (bc1'=564) + + 1/1024 : (s1'=3) & (bc1'=565) + + 1/1024 : (s1'=3) & (bc1'=566) + + 1/1024 : (s1'=3) & (bc1'=567) + + 1/1024 : (s1'=3) & (bc1'=568) + + 1/1024 : (s1'=3) & (bc1'=569) + + 1/1024 : (s1'=3) & (bc1'=570) + + 1/1024 : (s1'=3) & (bc1'=571) + + 1/1024 : (s1'=3) & (bc1'=572) + + 1/1024 : (s1'=3) & (bc1'=573) + + 1/1024 : (s1'=3) & (bc1'=574) + + 1/1024 : (s1'=3) & (bc1'=575) + + 1/1024 : (s1'=3) & (bc1'=576) + + 1/1024 : (s1'=3) & (bc1'=577) + + 1/1024 : (s1'=3) & (bc1'=578) + + 1/1024 : (s1'=3) & (bc1'=579) + + 1/1024 : (s1'=3) & (bc1'=580) + + 1/1024 : (s1'=3) & (bc1'=581) + + 1/1024 : (s1'=3) & (bc1'=582) + + 1/1024 : (s1'=3) & (bc1'=583) + + 1/1024 : (s1'=3) & (bc1'=584) + + 1/1024 : (s1'=3) & (bc1'=585) + + 1/1024 : (s1'=3) & (bc1'=586) + + 1/1024 : (s1'=3) & (bc1'=587) + + 1/1024 : (s1'=3) & (bc1'=588) + + 1/1024 : (s1'=3) & (bc1'=589) + + 1/1024 : (s1'=3) & (bc1'=590) + + 1/1024 : (s1'=3) & (bc1'=591) + + 1/1024 : (s1'=3) & (bc1'=592) + + 1/1024 : (s1'=3) & (bc1'=593) + + 1/1024 : (s1'=3) & (bc1'=594) + + 1/1024 : (s1'=3) & (bc1'=595) + + 1/1024 : (s1'=3) & (bc1'=596) + + 1/1024 : (s1'=3) & (bc1'=597) + + 1/1024 : (s1'=3) & (bc1'=598) + + 1/1024 : (s1'=3) & (bc1'=599) + + 1/1024 : (s1'=3) & (bc1'=600) + + 1/1024 : (s1'=3) & (bc1'=601) + + 1/1024 : (s1'=3) & (bc1'=602) + + 1/1024 : (s1'=3) & (bc1'=603) + + 1/1024 : (s1'=3) & (bc1'=604) + + 1/1024 : (s1'=3) & (bc1'=605) + + 1/1024 : (s1'=3) & (bc1'=606) + + 1/1024 : (s1'=3) & (bc1'=607) + + 1/1024 : (s1'=3) & (bc1'=608) + + 1/1024 : (s1'=3) & (bc1'=609) + + 1/1024 : (s1'=3) & (bc1'=610) + + 1/1024 : (s1'=3) & (bc1'=611) + + 1/1024 : (s1'=3) & (bc1'=612) + + 1/1024 : (s1'=3) & (bc1'=613) + + 1/1024 : (s1'=3) & (bc1'=614) + + 1/1024 : (s1'=3) & (bc1'=615) + + 1/1024 : (s1'=3) & (bc1'=616) + + 1/1024 : (s1'=3) & (bc1'=617) + + 1/1024 : (s1'=3) & (bc1'=618) + + 1/1024 : (s1'=3) & (bc1'=619) + + 1/1024 : (s1'=3) & (bc1'=620) + + 1/1024 : (s1'=3) & (bc1'=621) + + 1/1024 : (s1'=3) & (bc1'=622) + + 1/1024 : (s1'=3) & (bc1'=623) + + 1/1024 : (s1'=3) & (bc1'=624) + + 1/1024 : (s1'=3) & (bc1'=625) + + 1/1024 : (s1'=3) & (bc1'=626) + + 1/1024 : (s1'=3) & (bc1'=627) + + 1/1024 : (s1'=3) & (bc1'=628) + + 1/1024 : (s1'=3) & (bc1'=629) + + 1/1024 : (s1'=3) & (bc1'=630) + + 1/1024 : (s1'=3) & (bc1'=631) + + 1/1024 : (s1'=3) & (bc1'=632) + + 1/1024 : (s1'=3) & (bc1'=633) + + 1/1024 : (s1'=3) & (bc1'=634) + + 1/1024 : (s1'=3) & (bc1'=635) + + 1/1024 : (s1'=3) & (bc1'=636) + + 1/1024 : (s1'=3) & (bc1'=637) + + 1/1024 : (s1'=3) & (bc1'=638) + + 1/1024 : (s1'=3) & (bc1'=639) + + 1/1024 : (s1'=3) & (bc1'=640) + + 1/1024 : (s1'=3) & (bc1'=641) + + 1/1024 : (s1'=3) & (bc1'=642) + + 1/1024 : (s1'=3) & (bc1'=643) + + 1/1024 : (s1'=3) & (bc1'=644) + + 1/1024 : (s1'=3) & (bc1'=645) + + 1/1024 : (s1'=3) & (bc1'=646) + + 1/1024 : (s1'=3) & (bc1'=647) + + 1/1024 : (s1'=3) & (bc1'=648) + + 1/1024 : (s1'=3) & (bc1'=649) + + 1/1024 : (s1'=3) & (bc1'=650) + + 1/1024 : (s1'=3) & (bc1'=651) + + 1/1024 : (s1'=3) & (bc1'=652) + + 1/1024 : (s1'=3) & (bc1'=653) + + 1/1024 : (s1'=3) & (bc1'=654) + + 1/1024 : (s1'=3) & (bc1'=655) + + 1/1024 : (s1'=3) & (bc1'=656) + + 1/1024 : (s1'=3) & (bc1'=657) + + 1/1024 : (s1'=3) & (bc1'=658) + + 1/1024 : (s1'=3) & (bc1'=659) + + 1/1024 : (s1'=3) & (bc1'=660) + + 1/1024 : (s1'=3) & (bc1'=661) + + 1/1024 : (s1'=3) & (bc1'=662) + + 1/1024 : (s1'=3) & (bc1'=663) + + 1/1024 : (s1'=3) & (bc1'=664) + + 1/1024 : (s1'=3) & (bc1'=665) + + 1/1024 : (s1'=3) & (bc1'=666) + + 1/1024 : (s1'=3) & (bc1'=667) + + 1/1024 : (s1'=3) & (bc1'=668) + + 1/1024 : (s1'=3) & (bc1'=669) + + 1/1024 : (s1'=3) & (bc1'=670) + + 1/1024 : (s1'=3) & (bc1'=671) + + 1/1024 : (s1'=3) & (bc1'=672) + + 1/1024 : (s1'=3) & (bc1'=673) + + 1/1024 : (s1'=3) & (bc1'=674) + + 1/1024 : (s1'=3) & (bc1'=675) + + 1/1024 : (s1'=3) & (bc1'=676) + + 1/1024 : (s1'=3) & (bc1'=677) + + 1/1024 : (s1'=3) & (bc1'=678) + + 1/1024 : (s1'=3) & (bc1'=679) + + 1/1024 : (s1'=3) & (bc1'=680) + + 1/1024 : (s1'=3) & (bc1'=681) + + 1/1024 : (s1'=3) & (bc1'=682) + + 1/1024 : (s1'=3) & (bc1'=683) + + 1/1024 : (s1'=3) & (bc1'=684) + + 1/1024 : (s1'=3) & (bc1'=685) + + 1/1024 : (s1'=3) & (bc1'=686) + + 1/1024 : (s1'=3) & (bc1'=687) + + 1/1024 : (s1'=3) & (bc1'=688) + + 1/1024 : (s1'=3) & (bc1'=689) + + 1/1024 : (s1'=3) & (bc1'=690) + + 1/1024 : (s1'=3) & (bc1'=691) + + 1/1024 : (s1'=3) & (bc1'=692) + + 1/1024 : (s1'=3) & (bc1'=693) + + 1/1024 : (s1'=3) & (bc1'=694) + + 1/1024 : (s1'=3) & (bc1'=695) + + 1/1024 : (s1'=3) & (bc1'=696) + + 1/1024 : (s1'=3) & (bc1'=697) + + 1/1024 : (s1'=3) & (bc1'=698) + + 1/1024 : (s1'=3) & (bc1'=699) + + 1/1024 : (s1'=3) & (bc1'=700) + + 1/1024 : (s1'=3) & (bc1'=701) + + 1/1024 : (s1'=3) & (bc1'=702) + + 1/1024 : (s1'=3) & (bc1'=703) + + 1/1024 : (s1'=3) & (bc1'=704) + + 1/1024 : (s1'=3) & (bc1'=705) + + 1/1024 : (s1'=3) & (bc1'=706) + + 1/1024 : (s1'=3) & (bc1'=707) + + 1/1024 : (s1'=3) & (bc1'=708) + + 1/1024 : (s1'=3) & (bc1'=709) + + 1/1024 : (s1'=3) & (bc1'=710) + + 1/1024 : (s1'=3) & (bc1'=711) + + 1/1024 : (s1'=3) & (bc1'=712) + + 1/1024 : (s1'=3) & (bc1'=713) + + 1/1024 : (s1'=3) & (bc1'=714) + + 1/1024 : (s1'=3) & (bc1'=715) + + 1/1024 : (s1'=3) & (bc1'=716) + + 1/1024 : (s1'=3) & (bc1'=717) + + 1/1024 : (s1'=3) & (bc1'=718) + + 1/1024 : (s1'=3) & (bc1'=719) + + 1/1024 : (s1'=3) & (bc1'=720) + + 1/1024 : (s1'=3) & (bc1'=721) + + 1/1024 : (s1'=3) & (bc1'=722) + + 1/1024 : (s1'=3) & (bc1'=723) + + 1/1024 : (s1'=3) & (bc1'=724) + + 1/1024 : (s1'=3) & (bc1'=725) + + 1/1024 : (s1'=3) & (bc1'=726) + + 1/1024 : (s1'=3) & (bc1'=727) + + 1/1024 : (s1'=3) & (bc1'=728) + + 1/1024 : (s1'=3) & (bc1'=729) + + 1/1024 : (s1'=3) & (bc1'=730) + + 1/1024 : (s1'=3) & (bc1'=731) + + 1/1024 : (s1'=3) & (bc1'=732) + + 1/1024 : (s1'=3) & (bc1'=733) + + 1/1024 : (s1'=3) & (bc1'=734) + + 1/1024 : (s1'=3) & (bc1'=735) + + 1/1024 : (s1'=3) & (bc1'=736) + + 1/1024 : (s1'=3) & (bc1'=737) + + 1/1024 : (s1'=3) & (bc1'=738) + + 1/1024 : (s1'=3) & (bc1'=739) + + 1/1024 : (s1'=3) & (bc1'=740) + + 1/1024 : (s1'=3) & (bc1'=741) + + 1/1024 : (s1'=3) & (bc1'=742) + + 1/1024 : (s1'=3) & (bc1'=743) + + 1/1024 : (s1'=3) & (bc1'=744) + + 1/1024 : (s1'=3) & (bc1'=745) + + 1/1024 : (s1'=3) & (bc1'=746) + + 1/1024 : (s1'=3) & (bc1'=747) + + 1/1024 : (s1'=3) & (bc1'=748) + + 1/1024 : (s1'=3) & (bc1'=749) + + 1/1024 : (s1'=3) & (bc1'=750) + + 1/1024 : (s1'=3) & (bc1'=751) + + 1/1024 : (s1'=3) & (bc1'=752) + + 1/1024 : (s1'=3) & (bc1'=753) + + 1/1024 : (s1'=3) & (bc1'=754) + + 1/1024 : (s1'=3) & (bc1'=755) + + 1/1024 : (s1'=3) & (bc1'=756) + + 1/1024 : (s1'=3) & (bc1'=757) + + 1/1024 : (s1'=3) & (bc1'=758) + + 1/1024 : (s1'=3) & (bc1'=759) + + 1/1024 : (s1'=3) & (bc1'=760) + + 1/1024 : (s1'=3) & (bc1'=761) + + 1/1024 : (s1'=3) & (bc1'=762) + + 1/1024 : (s1'=3) & (bc1'=763) + + 1/1024 : (s1'=3) & (bc1'=764) + + 1/1024 : (s1'=3) & (bc1'=765) + + 1/1024 : (s1'=3) & (bc1'=766) + + 1/1024 : (s1'=3) & (bc1'=767) + + 1/1024 : (s1'=3) & (bc1'=768) + + 1/1024 : (s1'=3) & (bc1'=769) + + 1/1024 : (s1'=3) & (bc1'=770) + + 1/1024 : (s1'=3) & (bc1'=771) + + 1/1024 : (s1'=3) & (bc1'=772) + + 1/1024 : (s1'=3) & (bc1'=773) + + 1/1024 : (s1'=3) & (bc1'=774) + + 1/1024 : (s1'=3) & (bc1'=775) + + 1/1024 : (s1'=3) & (bc1'=776) + + 1/1024 : (s1'=3) & (bc1'=777) + + 1/1024 : (s1'=3) & (bc1'=778) + + 1/1024 : (s1'=3) & (bc1'=779) + + 1/1024 : (s1'=3) & (bc1'=780) + + 1/1024 : (s1'=3) & (bc1'=781) + + 1/1024 : (s1'=3) & (bc1'=782) + + 1/1024 : (s1'=3) & (bc1'=783) + + 1/1024 : (s1'=3) & (bc1'=784) + + 1/1024 : (s1'=3) & (bc1'=785) + + 1/1024 : (s1'=3) & (bc1'=786) + + 1/1024 : (s1'=3) & (bc1'=787) + + 1/1024 : (s1'=3) & (bc1'=788) + + 1/1024 : (s1'=3) & (bc1'=789) + + 1/1024 : (s1'=3) & (bc1'=790) + + 1/1024 : (s1'=3) & (bc1'=791) + + 1/1024 : (s1'=3) & (bc1'=792) + + 1/1024 : (s1'=3) & (bc1'=793) + + 1/1024 : (s1'=3) & (bc1'=794) + + 1/1024 : (s1'=3) & (bc1'=795) + + 1/1024 : (s1'=3) & (bc1'=796) + + 1/1024 : (s1'=3) & (bc1'=797) + + 1/1024 : (s1'=3) & (bc1'=798) + + 1/1024 : (s1'=3) & (bc1'=799) + + 1/1024 : (s1'=3) & (bc1'=800) + + 1/1024 : (s1'=3) & (bc1'=801) + + 1/1024 : (s1'=3) & (bc1'=802) + + 1/1024 : (s1'=3) & (bc1'=803) + + 1/1024 : (s1'=3) & (bc1'=804) + + 1/1024 : (s1'=3) & (bc1'=805) + + 1/1024 : (s1'=3) & (bc1'=806) + + 1/1024 : (s1'=3) & (bc1'=807) + + 1/1024 : (s1'=3) & (bc1'=808) + + 1/1024 : (s1'=3) & (bc1'=809) + + 1/1024 : (s1'=3) & (bc1'=810) + + 1/1024 : (s1'=3) & (bc1'=811) + + 1/1024 : (s1'=3) & (bc1'=812) + + 1/1024 : (s1'=3) & (bc1'=813) + + 1/1024 : (s1'=3) & (bc1'=814) + + 1/1024 : (s1'=3) & (bc1'=815) + + 1/1024 : (s1'=3) & (bc1'=816) + + 1/1024 : (s1'=3) & (bc1'=817) + + 1/1024 : (s1'=3) & (bc1'=818) + + 1/1024 : (s1'=3) & (bc1'=819) + + 1/1024 : (s1'=3) & (bc1'=820) + + 1/1024 : (s1'=3) & (bc1'=821) + + 1/1024 : (s1'=3) & (bc1'=822) + + 1/1024 : (s1'=3) & (bc1'=823) + + 1/1024 : (s1'=3) & (bc1'=824) + + 1/1024 : (s1'=3) & (bc1'=825) + + 1/1024 : (s1'=3) & (bc1'=826) + + 1/1024 : (s1'=3) & (bc1'=827) + + 1/1024 : (s1'=3) & (bc1'=828) + + 1/1024 : (s1'=3) & (bc1'=829) + + 1/1024 : (s1'=3) & (bc1'=830) + + 1/1024 : (s1'=3) & (bc1'=831) + + 1/1024 : (s1'=3) & (bc1'=832) + + 1/1024 : (s1'=3) & (bc1'=833) + + 1/1024 : (s1'=3) & (bc1'=834) + + 1/1024 : (s1'=3) & (bc1'=835) + + 1/1024 : (s1'=3) & (bc1'=836) + + 1/1024 : (s1'=3) & (bc1'=837) + + 1/1024 : (s1'=3) & (bc1'=838) + + 1/1024 : (s1'=3) & (bc1'=839) + + 1/1024 : (s1'=3) & (bc1'=840) + + 1/1024 : (s1'=3) & (bc1'=841) + + 1/1024 : (s1'=3) & (bc1'=842) + + 1/1024 : (s1'=3) & (bc1'=843) + + 1/1024 : (s1'=3) & (bc1'=844) + + 1/1024 : (s1'=3) & (bc1'=845) + + 1/1024 : (s1'=3) & (bc1'=846) + + 1/1024 : (s1'=3) & (bc1'=847) + + 1/1024 : (s1'=3) & (bc1'=848) + + 1/1024 : (s1'=3) & (bc1'=849) + + 1/1024 : (s1'=3) & (bc1'=850) + + 1/1024 : (s1'=3) & (bc1'=851) + + 1/1024 : (s1'=3) & (bc1'=852) + + 1/1024 : (s1'=3) & (bc1'=853) + + 1/1024 : (s1'=3) & (bc1'=854) + + 1/1024 : (s1'=3) & (bc1'=855) + + 1/1024 : (s1'=3) & (bc1'=856) + + 1/1024 : (s1'=3) & (bc1'=857) + + 1/1024 : (s1'=3) & (bc1'=858) + + 1/1024 : (s1'=3) & (bc1'=859) + + 1/1024 : (s1'=3) & (bc1'=860) + + 1/1024 : (s1'=3) & (bc1'=861) + + 1/1024 : (s1'=3) & (bc1'=862) + + 1/1024 : (s1'=3) & (bc1'=863) + + 1/1024 : (s1'=3) & (bc1'=864) + + 1/1024 : (s1'=3) & (bc1'=865) + + 1/1024 : (s1'=3) & (bc1'=866) + + 1/1024 : (s1'=3) & (bc1'=867) + + 1/1024 : (s1'=3) & (bc1'=868) + + 1/1024 : (s1'=3) & (bc1'=869) + + 1/1024 : (s1'=3) & (bc1'=870) + + 1/1024 : (s1'=3) & (bc1'=871) + + 1/1024 : (s1'=3) & (bc1'=872) + + 1/1024 : (s1'=3) & (bc1'=873) + + 1/1024 : (s1'=3) & (bc1'=874) + + 1/1024 : (s1'=3) & (bc1'=875) + + 1/1024 : (s1'=3) & (bc1'=876) + + 1/1024 : (s1'=3) & (bc1'=877) + + 1/1024 : (s1'=3) & (bc1'=878) + + 1/1024 : (s1'=3) & (bc1'=879) + + 1/1024 : (s1'=3) & (bc1'=880) + + 1/1024 : (s1'=3) & (bc1'=881) + + 1/1024 : (s1'=3) & (bc1'=882) + + 1/1024 : (s1'=3) & (bc1'=883) + + 1/1024 : (s1'=3) & (bc1'=884) + + 1/1024 : (s1'=3) & (bc1'=885) + + 1/1024 : (s1'=3) & (bc1'=886) + + 1/1024 : (s1'=3) & (bc1'=887) + + 1/1024 : (s1'=3) & (bc1'=888) + + 1/1024 : (s1'=3) & (bc1'=889) + + 1/1024 : (s1'=3) & (bc1'=890) + + 1/1024 : (s1'=3) & (bc1'=891) + + 1/1024 : (s1'=3) & (bc1'=892) + + 1/1024 : (s1'=3) & (bc1'=893) + + 1/1024 : (s1'=3) & (bc1'=894) + + 1/1024 : (s1'=3) & (bc1'=895) + + 1/1024 : (s1'=3) & (bc1'=896) + + 1/1024 : (s1'=3) & (bc1'=897) + + 1/1024 : (s1'=3) & (bc1'=898) + + 1/1024 : (s1'=3) & (bc1'=899) + + 1/1024 : (s1'=3) & (bc1'=900) + + 1/1024 : (s1'=3) & (bc1'=901) + + 1/1024 : (s1'=3) & (bc1'=902) + + 1/1024 : (s1'=3) & (bc1'=903) + + 1/1024 : (s1'=3) & (bc1'=904) + + 1/1024 : (s1'=3) & (bc1'=905) + + 1/1024 : (s1'=3) & (bc1'=906) + + 1/1024 : (s1'=3) & (bc1'=907) + + 1/1024 : (s1'=3) & (bc1'=908) + + 1/1024 : (s1'=3) & (bc1'=909) + + 1/1024 : (s1'=3) & (bc1'=910) + + 1/1024 : (s1'=3) & (bc1'=911) + + 1/1024 : (s1'=3) & (bc1'=912) + + 1/1024 : (s1'=3) & (bc1'=913) + + 1/1024 : (s1'=3) & (bc1'=914) + + 1/1024 : (s1'=3) & (bc1'=915) + + 1/1024 : (s1'=3) & (bc1'=916) + + 1/1024 : (s1'=3) & (bc1'=917) + + 1/1024 : (s1'=3) & (bc1'=918) + + 1/1024 : (s1'=3) & (bc1'=919) + + 1/1024 : (s1'=3) & (bc1'=920) + + 1/1024 : (s1'=3) & (bc1'=921) + + 1/1024 : (s1'=3) & (bc1'=922) + + 1/1024 : (s1'=3) & (bc1'=923) + + 1/1024 : (s1'=3) & (bc1'=924) + + 1/1024 : (s1'=3) & (bc1'=925) + + 1/1024 : (s1'=3) & (bc1'=926) + + 1/1024 : (s1'=3) & (bc1'=927) + + 1/1024 : (s1'=3) & (bc1'=928) + + 1/1024 : (s1'=3) & (bc1'=929) + + 1/1024 : (s1'=3) & (bc1'=930) + + 1/1024 : (s1'=3) & (bc1'=931) + + 1/1024 : (s1'=3) & (bc1'=932) + + 1/1024 : (s1'=3) & (bc1'=933) + + 1/1024 : (s1'=3) & (bc1'=934) + + 1/1024 : (s1'=3) & (bc1'=935) + + 1/1024 : (s1'=3) & (bc1'=936) + + 1/1024 : (s1'=3) & (bc1'=937) + + 1/1024 : (s1'=3) & (bc1'=938) + + 1/1024 : (s1'=3) & (bc1'=939) + + 1/1024 : (s1'=3) & (bc1'=940) + + 1/1024 : (s1'=3) & (bc1'=941) + + 1/1024 : (s1'=3) & (bc1'=942) + + 1/1024 : (s1'=3) & (bc1'=943) + + 1/1024 : (s1'=3) & (bc1'=944) + + 1/1024 : (s1'=3) & (bc1'=945) + + 1/1024 : (s1'=3) & (bc1'=946) + + 1/1024 : (s1'=3) & (bc1'=947) + + 1/1024 : (s1'=3) & (bc1'=948) + + 1/1024 : (s1'=3) & (bc1'=949) + + 1/1024 : (s1'=3) & (bc1'=950) + + 1/1024 : (s1'=3) & (bc1'=951) + + 1/1024 : (s1'=3) & (bc1'=952) + + 1/1024 : (s1'=3) & (bc1'=953) + + 1/1024 : (s1'=3) & (bc1'=954) + + 1/1024 : (s1'=3) & (bc1'=955) + + 1/1024 : (s1'=3) & (bc1'=956) + + 1/1024 : (s1'=3) & (bc1'=957) + + 1/1024 : (s1'=3) & (bc1'=958) + + 1/1024 : (s1'=3) & (bc1'=959) + + 1/1024 : (s1'=3) & (bc1'=960) + + 1/1024 : (s1'=3) & (bc1'=961) + + 1/1024 : (s1'=3) & (bc1'=962) + + 1/1024 : (s1'=3) & (bc1'=963) + + 1/1024 : (s1'=3) & (bc1'=964) + + 1/1024 : (s1'=3) & (bc1'=965) + + 1/1024 : (s1'=3) & (bc1'=966) + + 1/1024 : (s1'=3) & (bc1'=967) + + 1/1024 : (s1'=3) & (bc1'=968) + + 1/1024 : (s1'=3) & (bc1'=969) + + 1/1024 : (s1'=3) & (bc1'=970) + + 1/1024 : (s1'=3) & (bc1'=971) + + 1/1024 : (s1'=3) & (bc1'=972) + + 1/1024 : (s1'=3) & (bc1'=973) + + 1/1024 : (s1'=3) & (bc1'=974) + + 1/1024 : (s1'=3) & (bc1'=975) + + 1/1024 : (s1'=3) & (bc1'=976) + + 1/1024 : (s1'=3) & (bc1'=977) + + 1/1024 : (s1'=3) & (bc1'=978) + + 1/1024 : (s1'=3) & (bc1'=979) + + 1/1024 : (s1'=3) & (bc1'=980) + + 1/1024 : (s1'=3) & (bc1'=981) + + 1/1024 : (s1'=3) & (bc1'=982) + + 1/1024 : (s1'=3) & (bc1'=983) + + 1/1024 : (s1'=3) & (bc1'=984) + + 1/1024 : (s1'=3) & (bc1'=985) + + 1/1024 : (s1'=3) & (bc1'=986) + + 1/1024 : (s1'=3) & (bc1'=987) + + 1/1024 : (s1'=3) & (bc1'=988) + + 1/1024 : (s1'=3) & (bc1'=989) + + 1/1024 : (s1'=3) & (bc1'=990) + + 1/1024 : (s1'=3) & (bc1'=991) + + 1/1024 : (s1'=3) & (bc1'=992) + + 1/1024 : (s1'=3) & (bc1'=993) + + 1/1024 : (s1'=3) & (bc1'=994) + + 1/1024 : (s1'=3) & (bc1'=995) + + 1/1024 : (s1'=3) & (bc1'=996) + + 1/1024 : (s1'=3) & (bc1'=997) + + 1/1024 : (s1'=3) & (bc1'=998) + + 1/1024 : (s1'=3) & (bc1'=999) + + 1/1024 : (s1'=3) & (bc1'=1000) + + 1/1024 : (s1'=3) & (bc1'=1001) + + 1/1024 : (s1'=3) & (bc1'=1002) + + 1/1024 : (s1'=3) & (bc1'=1003) + + 1/1024 : (s1'=3) & (bc1'=1004) + + 1/1024 : (s1'=3) & (bc1'=1005) + + 1/1024 : (s1'=3) & (bc1'=1006) + + 1/1024 : (s1'=3) & (bc1'=1007) + + 1/1024 : (s1'=3) & (bc1'=1008) + + 1/1024 : (s1'=3) & (bc1'=1009) + + 1/1024 : (s1'=3) & (bc1'=1010) + + 1/1024 : (s1'=3) & (bc1'=1011) + + 1/1024 : (s1'=3) & (bc1'=1012) + + 1/1024 : (s1'=3) & (bc1'=1013) + + 1/1024 : (s1'=3) & (bc1'=1014) + + 1/1024 : (s1'=3) & (bc1'=1015) + + 1/1024 : (s1'=3) & (bc1'=1016) + + 1/1024 : (s1'=3) & (bc1'=1017) + + 1/1024 : (s1'=3) & (bc1'=1018) + + 1/1024 : (s1'=3) & (bc1'=1019) + + 1/1024 : (s1'=3) & (bc1'=1020) + + 1/1024 : (s1'=3) & (bc1'=1021) + + 1/1024 : (s1'=3) & (bc1'=1022) + + 1/1024 : (s1'=3) & (bc1'=1023); + + // wait until backoff counter reaches 0 then send again + [] s1=3 & x1=slot & bc1>0 -> (x1'=0) & (bc1'=bc1-1); // move slots + [send1] s1=3 & x1=slot & bc1=0 -> (s1'=1) & (x1'=0); // finished backoff (bus appears free) + [csend1] s1=3 & x1=slot & bc1=0 -> (s1'=1) & (x1'=0); // finished backoff (bus appears free) + [busy1] s1=3 & x1=slot & bc1=0 -> (s1'=2) & (x1'=0) & (cd1'=min(bmax,cd1+1)); // finished backoff (bus busy) + + // once finished loop (wait for other station to finish) + [done] s1=4 -> (s1'=4); + +endmodule + +// construct station 2 through renaming +module station2=station1[s1=s2,x1=x2,cd1=cd2,bc1=bc2,send1=send2,csend1=csend2,busy1=busy2,end1=end2] endmodule + +//---------------------------------------------------------------------------------------------------------------------------- +// REWARD STRUCTURES + +// time +rewards "time" + [time] true : 1; +endrewards + +// number of collisions +rewards "collisions" + [csend1] true : 1; + [csend2] true : 1; +endrewards + +//---------------------------------------------------------------------------------------------------------------------------- +// LABELS + +label "s1_done" = s1=4; +label "s2_done" = s2=4; +label "done" = s1=4 & s2=4; +label "cmax" = c; diff --git a/prism-examples/pta/csma/full/csma.nm b/prism-examples/pta/csma/full/csma.nm new file mode 100644 index 00000000..87270383 --- /dev/null +++ b/prism-examples/pta/csma/full/csma.nm @@ -0,0 +1,2206 @@ +// CSMA/CD protocol - two stations (PTA model using digital clocks) +// gxn/mxd 31/05/05 + +// based on kronos (non-probabilistic) TA model and that which appears in: +// M. Duflot, L. Fribourg, T. Hérault, R. Lassaigne, F. Magniette, S. Messika, S. Peyronnet and C. Picaronny +// Probabilistic model checking of the CSMA/CD protocol using PRISM and APMC +// In Proc. AVoCS'04, 2004 + +pta + +const K; + +// PARAMETERS + +// parameters +const int sigma=26; // time for messages to propagate along the bus +const int lambda=808; // time to send a message +const int delay=26; // wire delay +const int slot=2*sigma; // size of back off slot + +const int bmax; // exponential backoff limit +const int M=pow(2,bmax)-1; // max number of slots to wait + +//---------------------------------------------------------------------------------------------------------------------------- +// collision counter +module collisions + + c : [0..max(1,K)]; + + [csend1] true -> (c'=min(K,c+1)); + [csend2] true -> (c'=min(K,c+1)); + +endmodule + +//---------------------------------------------------------------------------------------------------------------------------- +// the bus +module bus + + b : [0..4]; + // b=0 - idle + // b=1 - active + // b=2 - collision + // b=3 - collision1 + // b=4 - collision2 + + y1 : clock; // clock of bus + y2 : clock; // clock of bus + + invariant + (b=0 => true) & + (b=1 => true) & + (b=2 => y1<=delay & y2<=delay) & + (b=3 => y1<=delay) & + (b=4 => y2<=delay) + endinvariant + + // stations starts sending + [send1] b=0 -> (b'=1) & (y1'=0); // no message being sent + [send2] b=0 -> (b'=1) & (y2'=0); // no message being sent + + // collision occurs + [csend1] b=1 & y2<=delay -> (b'=2) & (y1'=0); // message being sent (move to collision) + [csend2] b=1 & y1<=delay -> (b'=2) & (y2'=0); // message being sent (move to collision) + + // message being sent + [busy1] b=1 & y2>delay -> (b'=1); + [busy2] b=1 & y1>delay -> (b'=1); + + // station finishes + [end1] b=1 -> (b'=0) & (y1'=0); + [end2] b=1 -> (b'=0) & (y2'=0); + + // collision detected + [cd1] b=2 & y1>=delay -> (b'=4); // station one detects collision before station two + [cd2] b=2 & y2>=delay -> (b'=3); // station two detects collision before station one + + [cd1] b=3 & y1>=delay -> (b'=0) & (y1'=0) & (y2'=0); // station one detects collision after station two + [cd2] b=4 & y2>=delay -> (b'=0) & (y1'=0) & (y2'=0); // station two detects collision after station one + +endmodule + +//---------------------------------------------------------------------------------------------------------------------------- +// STATION 1 +module station1 + + // LOCAL STATE + s1 : [0..4]; + // s1=0 - initial state + // s1=1 - transmit + // s1=2 - collision (set backoff) + // s1=3 - wait (bus busy) + // s1=4 - done (since sending only one message) + + x1 : clock; // local clock + + cd1 : [0..bmax]; // collision counter + + invariant + (s1=0 => x1<=delay) & + (s1=1 => x1<=lambda) & + (s1=2 => x1<=0) & + (s1=3 => x1<=pow(2,cd1)*slot) & + (s1=4 => true) + endinvariant + + // start sending (make sure there is a collision, i.e. start before x1 equals delay) + [send1] s1=0 -> (s1'=1) & (x1'=0); // start sending + [csend1] s1=0 -> (s1'=1) & (x1'=0); // start sending + [busy1] s1=0 -> (s1'=2) & (x1'=0) & (cd1'=min(bmax,cd1+1)); // detects channel is busy so go into backoff + + // transmitting + [end1] s1=1 & x1=lambda -> (s1'=4) & (x1'=0); // finished + [cd1] s1=1 -> (s1'=2) & (x1'=0) & (cd1'=min(bmax,cd1+1)); // collision detected + + // set backoff (no time can pass in this state) + // first retransmission + [] s1=2 & cd1=1 -> 1/2 : (s1'=3) & (x1'=0*slot) + + 1/2 : (s1'=3) & (x1'=1*slot); + // second retransmission + [] s1=2 & cd1=2 -> 1/4 : (s1'=3) & (x1'=0*slot) + + 1/4 : (s1'=3) & (x1'=1*slot) + + 1/4 : (s1'=3) & (x1'=2*slot) + + 1/4 : (s1'=3) & (x1'=3*slot); + // third retransmission + [] s1=2 & cd1=3 -> 1/8 : (s1'=3) & (x1'=0*slot) + + 1/8 : (s1'=3) & (x1'=1*slot) + + 1/8 : (s1'=3) & (x1'=2*slot) + + 1/8 : (s1'=3) & (x1'=3*slot) + + 1/8 : (s1'=3) & (x1'=4*slot) + + 1/8 : (s1'=3) & (x1'=5*slot) + + 1/8 : (s1'=3) & (x1'=6*slot) + + 1/8 : (s1'=3) & (x1'=7*slot); + // fourth retransmission + [] s1=2 & cd1=4 -> 1/16 : (s1'=3) & (x1'=0*slot) + + 1/16 : (s1'=3) & (x1'=1*slot) + + 1/16 : (s1'=3) & (x1'=2*slot) + + 1/16 : (s1'=3) & (x1'=3*slot) + + 1/16 : (s1'=3) & (x1'=4*slot) + + 1/16 : (s1'=3) & (x1'=5*slot) + + 1/16 : (s1'=3) & (x1'=6*slot) + + 1/16 : (s1'=3) & (x1'=7*slot) + + 1/16 : (s1'=3) & (x1'=8*slot) + + 1/16 : (s1'=3) & (x1'=9*slot) + + 1/16 : (s1'=3) & (x1'=10*slot) + + 1/16 : (s1'=3) & (x1'=11*slot) + + 1/16 : (s1'=3) & (x1'=12*slot) + + 1/16 : (s1'=3) & (x1'=13*slot) + + 1/16 : (s1'=3) & (x1'=14*slot) + + 1/16 : (s1'=3) & (x1'=15*slot); + // fifth retransmission + [] s1=2 & cd1=5 -> 1/32 : (s1'=3) & (x1'=0*slot) + + 1/32 : (s1'=3) & (x1'=1*slot) + + 1/32 : (s1'=3) & (x1'=2*slot) + + 1/32 : (s1'=3) & (x1'=3*slot) + + 1/32 : (s1'=3) & (x1'=4*slot) + + 1/32 : (s1'=3) & (x1'=5*slot) + + 1/32 : (s1'=3) & (x1'=6*slot) + + 1/32 : (s1'=3) & (x1'=7*slot) + + 1/32 : (s1'=3) & (x1'=8*slot) + + 1/32 : (s1'=3) & (x1'=9*slot) + + 1/32 : (s1'=3) & (x1'=10*slot) + + 1/32 : (s1'=3) & (x1'=11*slot) + + 1/32 : (s1'=3) & (x1'=12*slot) + + 1/32 : (s1'=3) & (x1'=13*slot) + + 1/32 : (s1'=3) & (x1'=14*slot) + + 1/32 : (s1'=3) & (x1'=15*slot) + + 1/32 : (s1'=3) & (x1'=16*slot) + + 1/32 : (s1'=3) & (x1'=17*slot) + + 1/32 : (s1'=3) & (x1'=18*slot) + + 1/32 : (s1'=3) & (x1'=19*slot) + + 1/32 : (s1'=3) & (x1'=20*slot) + + 1/32 : (s1'=3) & (x1'=21*slot) + + 1/32 : (s1'=3) & (x1'=22*slot) + + 1/32 : (s1'=3) & (x1'=23*slot) + + 1/32 : (s1'=3) & (x1'=24*slot) + + 1/32 : (s1'=3) & (x1'=25*slot) + + 1/32 : (s1'=3) & (x1'=26*slot) + + 1/32 : (s1'=3) & (x1'=27*slot) + + 1/32 : (s1'=3) & (x1'=28*slot) + + 1/32 : (s1'=3) & (x1'=29*slot) + + 1/32 : (s1'=3) & (x1'=30*slot) + + 1/32 : (s1'=3) & (x1'=31*slot); + // sixth retransmission + [] s1=2 & cd1=6 -> 1/64 : (s1'=3) & (x1'=0*slot) + + 1/64 : (s1'=3) & (x1'=1*slot) + + 1/64 : (s1'=3) & (x1'=2*slot) + + 1/64 : (s1'=3) & (x1'=3*slot) + + 1/64 : (s1'=3) & (x1'=4*slot) + + 1/64 : (s1'=3) & (x1'=5*slot) + + 1/64 : (s1'=3) & (x1'=6*slot) + + 1/64 : (s1'=3) & (x1'=7*slot) + + 1/64 : (s1'=3) & (x1'=8*slot) + + 1/64 : (s1'=3) & (x1'=9*slot) + + 1/64 : (s1'=3) & (x1'=10*slot) + + 1/64 : (s1'=3) & (x1'=11*slot) + + 1/64 : (s1'=3) & (x1'=12*slot) + + 1/64 : (s1'=3) & (x1'=13*slot) + + 1/64 : (s1'=3) & (x1'=14*slot) + + 1/64 : (s1'=3) & (x1'=15*slot) + + 1/64 : (s1'=3) & (x1'=16*slot) + + 1/64 : (s1'=3) & (x1'=17*slot) + + 1/64 : (s1'=3) & (x1'=18*slot) + + 1/64 : (s1'=3) & (x1'=19*slot) + + 1/64 : (s1'=3) & (x1'=20*slot) + + 1/64 : (s1'=3) & (x1'=21*slot) + + 1/64 : (s1'=3) & (x1'=22*slot) + + 1/64 : (s1'=3) & (x1'=23*slot) + + 1/64 : (s1'=3) & (x1'=24*slot) + + 1/64 : (s1'=3) & (x1'=25*slot) + + 1/64 : (s1'=3) & (x1'=26*slot) + + 1/64 : (s1'=3) & (x1'=27*slot) + + 1/64 : (s1'=3) & (x1'=28*slot) + + 1/64 : (s1'=3) & (x1'=29*slot) + + 1/64 : (s1'=3) & (x1'=30*slot) + + 1/64 : (s1'=3) & (x1'=31*slot) + + 1/64 : (s1'=3) & (x1'=32*slot) + + 1/64 : (s1'=3) & (x1'=33*slot) + + 1/64 : (s1'=3) & (x1'=34*slot) + + 1/64 : (s1'=3) & (x1'=35*slot) + + 1/64 : (s1'=3) & (x1'=36*slot) + + 1/64 : (s1'=3) & (x1'=37*slot) + + 1/64 : (s1'=3) & (x1'=38*slot) + + 1/64 : (s1'=3) & (x1'=39*slot) + + 1/64 : (s1'=3) & (x1'=40*slot) + + 1/64 : (s1'=3) & (x1'=41*slot) + + 1/64 : (s1'=3) & (x1'=42*slot) + + 1/64 : (s1'=3) & (x1'=43*slot) + + 1/64 : (s1'=3) & (x1'=44*slot) + + 1/64 : (s1'=3) & (x1'=45*slot) + + 1/64 : (s1'=3) & (x1'=46*slot) + + 1/64 : (s1'=3) & (x1'=47*slot) + + 1/64 : (s1'=3) & (x1'=48*slot) + + 1/64 : (s1'=3) & (x1'=49*slot) + + 1/64 : (s1'=3) & (x1'=50*slot) + + 1/64 : (s1'=3) & (x1'=51*slot) + + 1/64 : (s1'=3) & (x1'=52*slot) + + 1/64 : (s1'=3) & (x1'=53*slot) + + 1/64 : (s1'=3) & (x1'=54*slot) + + 1/64 : (s1'=3) & (x1'=55*slot) + + 1/64 : (s1'=3) & (x1'=56*slot) + + 1/64 : (s1'=3) & (x1'=57*slot) + + 1/64 : (s1'=3) & (x1'=58*slot) + + 1/64 : (s1'=3) & (x1'=59*slot) + + 1/64 : (s1'=3) & (x1'=60*slot) + + 1/64 : (s1'=3) & (x1'=61*slot) + + 1/64 : (s1'=3) & (x1'=62*slot) + + 1/64 : (s1'=3) & (x1'=63*slot); + // seventh retransmission + [] s1=2 & cd1=7 -> 1/128 : (s1'=3) & (x1'=0*slot) + + 1/128 : (s1'=3) & (x1'=1*slot) + + 1/128 : (s1'=3) & (x1'=2*slot) + + 1/128 : (s1'=3) & (x1'=3*slot) + + 1/128 : (s1'=3) & (x1'=4*slot) + + 1/128 : (s1'=3) & (x1'=5*slot) + + 1/128 : (s1'=3) & (x1'=6*slot) + + 1/128 : (s1'=3) & (x1'=7*slot) + + 1/128 : (s1'=3) & (x1'=8*slot) + + 1/128 : (s1'=3) & (x1'=9*slot) + + 1/128 : (s1'=3) & (x1'=10*slot) + + 1/128 : (s1'=3) & (x1'=11*slot) + + 1/128 : (s1'=3) & (x1'=12*slot) + + 1/128 : (s1'=3) & (x1'=13*slot) + + 1/128 : (s1'=3) & (x1'=14*slot) + + 1/128 : (s1'=3) & (x1'=15*slot) + + 1/128 : (s1'=3) & (x1'=16*slot) + + 1/128 : (s1'=3) & (x1'=17*slot) + + 1/128 : (s1'=3) & (x1'=18*slot) + + 1/128 : (s1'=3) & (x1'=19*slot) + + 1/128 : (s1'=3) & (x1'=20*slot) + + 1/128 : (s1'=3) & (x1'=21*slot) + + 1/128 : (s1'=3) & (x1'=22*slot) + + 1/128 : (s1'=3) & (x1'=23*slot) + + 1/128 : (s1'=3) & (x1'=24*slot) + + 1/128 : (s1'=3) & (x1'=25*slot) + + 1/128 : (s1'=3) & (x1'=26*slot) + + 1/128 : (s1'=3) & (x1'=27*slot) + + 1/128 : (s1'=3) & (x1'=28*slot) + + 1/128 : (s1'=3) & (x1'=29*slot) + + 1/128 : (s1'=3) & (x1'=30*slot) + + 1/128 : (s1'=3) & (x1'=31*slot) + + 1/128 : (s1'=3) & (x1'=32*slot) + + 1/128 : (s1'=3) & (x1'=33*slot) + + 1/128 : (s1'=3) & (x1'=34*slot) + + 1/128 : (s1'=3) & (x1'=35*slot) + + 1/128 : (s1'=3) & (x1'=36*slot) + + 1/128 : (s1'=3) & (x1'=37*slot) + + 1/128 : (s1'=3) & (x1'=38*slot) + + 1/128 : (s1'=3) & (x1'=39*slot) + + 1/128 : (s1'=3) & (x1'=40*slot) + + 1/128 : (s1'=3) & (x1'=41*slot) + + 1/128 : (s1'=3) & (x1'=42*slot) + + 1/128 : (s1'=3) & (x1'=43*slot) + + 1/128 : (s1'=3) & (x1'=44*slot) + + 1/128 : (s1'=3) & (x1'=45*slot) + + 1/128 : (s1'=3) & (x1'=46*slot) + + 1/128 : (s1'=3) & (x1'=47*slot) + + 1/128 : (s1'=3) & (x1'=48*slot) + + 1/128 : (s1'=3) & (x1'=49*slot) + + 1/128 : (s1'=3) & (x1'=50*slot) + + 1/128 : (s1'=3) & (x1'=51*slot) + + 1/128 : (s1'=3) & (x1'=52*slot) + + 1/128 : (s1'=3) & (x1'=53*slot) + + 1/128 : (s1'=3) & (x1'=54*slot) + + 1/128 : (s1'=3) & (x1'=55*slot) + + 1/128 : (s1'=3) & (x1'=56*slot) + + 1/128 : (s1'=3) & (x1'=57*slot) + + 1/128 : (s1'=3) & (x1'=58*slot) + + 1/128 : (s1'=3) & (x1'=59*slot) + + 1/128 : (s1'=3) & (x1'=60*slot) + + 1/128 : (s1'=3) & (x1'=61*slot) + + 1/128 : (s1'=3) & (x1'=62*slot) + + 1/128 : (s1'=3) & (x1'=63*slot) + + 1/128 : (s1'=3) & (x1'=64*slot) + + 1/128 : (s1'=3) & (x1'=65*slot) + + 1/128 : (s1'=3) & (x1'=66*slot) + + 1/128 : (s1'=3) & (x1'=67*slot) + + 1/128 : (s1'=3) & (x1'=68*slot) + + 1/128 : (s1'=3) & (x1'=69*slot) + + 1/128 : (s1'=3) & (x1'=70*slot) + + 1/128 : (s1'=3) & (x1'=71*slot) + + 1/128 : (s1'=3) & (x1'=72*slot) + + 1/128 : (s1'=3) & (x1'=73*slot) + + 1/128 : (s1'=3) & (x1'=74*slot) + + 1/128 : (s1'=3) & (x1'=75*slot) + + 1/128 : (s1'=3) & (x1'=76*slot) + + 1/128 : (s1'=3) & (x1'=77*slot) + + 1/128 : (s1'=3) & (x1'=78*slot) + + 1/128 : (s1'=3) & (x1'=79*slot) + + 1/128 : (s1'=3) & (x1'=80*slot) + + 1/128 : (s1'=3) & (x1'=81*slot) + + 1/128 : (s1'=3) & (x1'=82*slot) + + 1/128 : (s1'=3) & (x1'=83*slot) + + 1/128 : (s1'=3) & (x1'=84*slot) + + 1/128 : (s1'=3) & (x1'=85*slot) + + 1/128 : (s1'=3) & (x1'=86*slot) + + 1/128 : (s1'=3) & (x1'=87*slot) + + 1/128 : (s1'=3) & (x1'=88*slot) + + 1/128 : (s1'=3) & (x1'=89*slot) + + 1/128 : (s1'=3) & (x1'=90*slot) + + 1/128 : (s1'=3) & (x1'=91*slot) + + 1/128 : (s1'=3) & (x1'=92*slot) + + 1/128 : (s1'=3) & (x1'=93*slot) + + 1/128 : (s1'=3) & (x1'=94*slot) + + 1/128 : (s1'=3) & (x1'=95*slot) + + 1/128 : (s1'=3) & (x1'=96*slot) + + 1/128 : (s1'=3) & (x1'=97*slot) + + 1/128 : (s1'=3) & (x1'=98*slot) + + 1/128 : (s1'=3) & (x1'=99*slot) + + 1/128 : (s1'=3) & (x1'=100*slot) + + 1/128 : (s1'=3) & (x1'=101*slot) + + 1/128 : (s1'=3) & (x1'=102*slot) + + 1/128 : (s1'=3) & (x1'=103*slot) + + 1/128 : (s1'=3) & (x1'=104*slot) + + 1/128 : (s1'=3) & (x1'=105*slot) + + 1/128 : (s1'=3) & (x1'=106*slot) + + 1/128 : (s1'=3) & (x1'=107*slot) + + 1/128 : (s1'=3) & (x1'=108*slot) + + 1/128 : (s1'=3) & (x1'=109*slot) + + 1/128 : (s1'=3) & (x1'=110*slot) + + 1/128 : (s1'=3) & (x1'=111*slot) + + 1/128 : (s1'=3) & (x1'=112*slot) + + 1/128 : (s1'=3) & (x1'=113*slot) + + 1/128 : (s1'=3) & (x1'=114*slot) + + 1/128 : (s1'=3) & (x1'=115*slot) + + 1/128 : (s1'=3) & (x1'=116*slot) + + 1/128 : (s1'=3) & (x1'=117*slot) + + 1/128 : (s1'=3) & (x1'=118*slot) + + 1/128 : (s1'=3) & (x1'=119*slot) + + 1/128 : (s1'=3) & (x1'=120*slot) + + 1/128 : (s1'=3) & (x1'=121*slot) + + 1/128 : (s1'=3) & (x1'=122*slot) + + 1/128 : (s1'=3) & (x1'=123*slot) + + 1/128 : (s1'=3) & (x1'=124*slot) + + 1/128 : (s1'=3) & (x1'=125*slot) + + 1/128 : (s1'=3) & (x1'=126*slot) + + 1/128 : (s1'=3) & (x1'=127*slot); + // eigth retransmission + [] s1=2 & cd1=8 -> 1/256 : (s1'=3) & (x1'=0*slot) + + 1/256 : (s1'=3) & (x1'=1*slot) + + 1/256 : (s1'=3) & (x1'=2*slot) + + 1/256 : (s1'=3) & (x1'=3*slot) + + 1/256 : (s1'=3) & (x1'=4*slot) + + 1/256 : (s1'=3) & (x1'=5*slot) + + 1/256 : (s1'=3) & (x1'=6*slot) + + 1/256 : (s1'=3) & (x1'=7*slot) + + 1/256 : (s1'=3) & (x1'=8*slot) + + 1/256 : (s1'=3) & (x1'=9*slot) + + 1/256 : (s1'=3) & (x1'=10*slot) + + 1/256 : (s1'=3) & (x1'=11*slot) + + 1/256 : (s1'=3) & (x1'=12*slot) + + 1/256 : (s1'=3) & (x1'=13*slot) + + 1/256 : (s1'=3) & (x1'=14*slot) + + 1/256 : (s1'=3) & (x1'=15*slot) + + 1/256 : (s1'=3) & (x1'=16*slot) + + 1/256 : (s1'=3) & (x1'=17*slot) + + 1/256 : (s1'=3) & (x1'=18*slot) + + 1/256 : (s1'=3) & (x1'=19*slot) + + 1/256 : (s1'=3) & (x1'=20*slot) + + 1/256 : (s1'=3) & (x1'=21*slot) + + 1/256 : (s1'=3) & (x1'=22*slot) + + 1/256 : (s1'=3) & (x1'=23*slot) + + 1/256 : (s1'=3) & (x1'=24*slot) + + 1/256 : (s1'=3) & (x1'=25*slot) + + 1/256 : (s1'=3) & (x1'=26*slot) + + 1/256 : (s1'=3) & (x1'=27*slot) + + 1/256 : (s1'=3) & (x1'=28*slot) + + 1/256 : (s1'=3) & (x1'=29*slot) + + 1/256 : (s1'=3) & (x1'=30*slot) + + 1/256 : (s1'=3) & (x1'=31*slot) + + 1/256 : (s1'=3) & (x1'=32*slot) + + 1/256 : (s1'=3) & (x1'=33*slot) + + 1/256 : (s1'=3) & (x1'=34*slot) + + 1/256 : (s1'=3) & (x1'=35*slot) + + 1/256 : (s1'=3) & (x1'=36*slot) + + 1/256 : (s1'=3) & (x1'=37*slot) + + 1/256 : (s1'=3) & (x1'=38*slot) + + 1/256 : (s1'=3) & (x1'=39*slot) + + 1/256 : (s1'=3) & (x1'=40*slot) + + 1/256 : (s1'=3) & (x1'=41*slot) + + 1/256 : (s1'=3) & (x1'=42*slot) + + 1/256 : (s1'=3) & (x1'=43*slot) + + 1/256 : (s1'=3) & (x1'=44*slot) + + 1/256 : (s1'=3) & (x1'=45*slot) + + 1/256 : (s1'=3) & (x1'=46*slot) + + 1/256 : (s1'=3) & (x1'=47*slot) + + 1/256 : (s1'=3) & (x1'=48*slot) + + 1/256 : (s1'=3) & (x1'=49*slot) + + 1/256 : (s1'=3) & (x1'=50*slot) + + 1/256 : (s1'=3) & (x1'=51*slot) + + 1/256 : (s1'=3) & (x1'=52*slot) + + 1/256 : (s1'=3) & (x1'=53*slot) + + 1/256 : (s1'=3) & (x1'=54*slot) + + 1/256 : (s1'=3) & (x1'=55*slot) + + 1/256 : (s1'=3) & (x1'=56*slot) + + 1/256 : (s1'=3) & (x1'=57*slot) + + 1/256 : (s1'=3) & (x1'=58*slot) + + 1/256 : (s1'=3) & (x1'=59*slot) + + 1/256 : (s1'=3) & (x1'=60*slot) + + 1/256 : (s1'=3) & (x1'=61*slot) + + 1/256 : (s1'=3) & (x1'=62*slot) + + 1/256 : (s1'=3) & (x1'=63*slot) + + 1/256 : (s1'=3) & (x1'=64*slot) + + 1/256 : (s1'=3) & (x1'=65*slot) + + 1/256 : (s1'=3) & (x1'=66*slot) + + 1/256 : (s1'=3) & (x1'=67*slot) + + 1/256 : (s1'=3) & (x1'=68*slot) + + 1/256 : (s1'=3) & (x1'=69*slot) + + 1/256 : (s1'=3) & (x1'=70*slot) + + 1/256 : (s1'=3) & (x1'=71*slot) + + 1/256 : (s1'=3) & (x1'=72*slot) + + 1/256 : (s1'=3) & (x1'=73*slot) + + 1/256 : (s1'=3) & (x1'=74*slot) + + 1/256 : (s1'=3) & (x1'=75*slot) + + 1/256 : (s1'=3) & (x1'=76*slot) + + 1/256 : (s1'=3) & (x1'=77*slot) + + 1/256 : (s1'=3) & (x1'=78*slot) + + 1/256 : (s1'=3) & (x1'=79*slot) + + 1/256 : (s1'=3) & (x1'=80*slot) + + 1/256 : (s1'=3) & (x1'=81*slot) + + 1/256 : (s1'=3) & (x1'=82*slot) + + 1/256 : (s1'=3) & (x1'=83*slot) + + 1/256 : (s1'=3) & (x1'=84*slot) + + 1/256 : (s1'=3) & (x1'=85*slot) + + 1/256 : (s1'=3) & (x1'=86*slot) + + 1/256 : (s1'=3) & (x1'=87*slot) + + 1/256 : (s1'=3) & (x1'=88*slot) + + 1/256 : (s1'=3) & (x1'=89*slot) + + 1/256 : (s1'=3) & (x1'=90*slot) + + 1/256 : (s1'=3) & (x1'=91*slot) + + 1/256 : (s1'=3) & (x1'=92*slot) + + 1/256 : (s1'=3) & (x1'=93*slot) + + 1/256 : (s1'=3) & (x1'=94*slot) + + 1/256 : (s1'=3) & (x1'=95*slot) + + 1/256 : (s1'=3) & (x1'=96*slot) + + 1/256 : (s1'=3) & (x1'=97*slot) + + 1/256 : (s1'=3) & (x1'=98*slot) + + 1/256 : (s1'=3) & (x1'=99*slot) + + 1/256 : (s1'=3) & (x1'=100*slot) + + 1/256 : (s1'=3) & (x1'=101*slot) + + 1/256 : (s1'=3) & (x1'=102*slot) + + 1/256 : (s1'=3) & (x1'=103*slot) + + 1/256 : (s1'=3) & (x1'=104*slot) + + 1/256 : (s1'=3) & (x1'=105*slot) + + 1/256 : (s1'=3) & (x1'=106*slot) + + 1/256 : (s1'=3) & (x1'=107*slot) + + 1/256 : (s1'=3) & (x1'=108*slot) + + 1/256 : (s1'=3) & (x1'=109*slot) + + 1/256 : (s1'=3) & (x1'=110*slot) + + 1/256 : (s1'=3) & (x1'=111*slot) + + 1/256 : (s1'=3) & (x1'=112*slot) + + 1/256 : (s1'=3) & (x1'=113*slot) + + 1/256 : (s1'=3) & (x1'=114*slot) + + 1/256 : (s1'=3) & (x1'=115*slot) + + 1/256 : (s1'=3) & (x1'=116*slot) + + 1/256 : (s1'=3) & (x1'=117*slot) + + 1/256 : (s1'=3) & (x1'=118*slot) + + 1/256 : (s1'=3) & (x1'=119*slot) + + 1/256 : (s1'=3) & (x1'=120*slot) + + 1/256 : (s1'=3) & (x1'=121*slot) + + 1/256 : (s1'=3) & (x1'=122*slot) + + 1/256 : (s1'=3) & (x1'=123*slot) + + 1/256 : (s1'=3) & (x1'=124*slot) + + 1/256 : (s1'=3) & (x1'=125*slot) + + 1/256 : (s1'=3) & (x1'=126*slot) + + 1/256 : (s1'=3) & (x1'=127*slot) + + 1/256 : (s1'=3) & (x1'=128*slot) + + 1/256 : (s1'=3) & (x1'=129*slot) + + 1/256 : (s1'=3) & (x1'=130*slot) + + 1/256 : (s1'=3) & (x1'=131*slot) + + 1/256 : (s1'=3) & (x1'=132*slot) + + 1/256 : (s1'=3) & (x1'=133*slot) + + 1/256 : (s1'=3) & (x1'=134*slot) + + 1/256 : (s1'=3) & (x1'=135*slot) + + 1/256 : (s1'=3) & (x1'=136*slot) + + 1/256 : (s1'=3) & (x1'=137*slot) + + 1/256 : (s1'=3) & (x1'=138*slot) + + 1/256 : (s1'=3) & (x1'=139*slot) + + 1/256 : (s1'=3) & (x1'=140*slot) + + 1/256 : (s1'=3) & (x1'=141*slot) + + 1/256 : (s1'=3) & (x1'=142*slot) + + 1/256 : (s1'=3) & (x1'=143*slot) + + 1/256 : (s1'=3) & (x1'=144*slot) + + 1/256 : (s1'=3) & (x1'=145*slot) + + 1/256 : (s1'=3) & (x1'=146*slot) + + 1/256 : (s1'=3) & (x1'=147*slot) + + 1/256 : (s1'=3) & (x1'=148*slot) + + 1/256 : (s1'=3) & (x1'=149*slot) + + 1/256 : (s1'=3) & (x1'=150*slot) + + 1/256 : (s1'=3) & (x1'=151*slot) + + 1/256 : (s1'=3) & (x1'=152*slot) + + 1/256 : (s1'=3) & (x1'=153*slot) + + 1/256 : (s1'=3) & (x1'=154*slot) + + 1/256 : (s1'=3) & (x1'=155*slot) + + 1/256 : (s1'=3) & (x1'=156*slot) + + 1/256 : (s1'=3) & (x1'=157*slot) + + 1/256 : (s1'=3) & (x1'=158*slot) + + 1/256 : (s1'=3) & (x1'=159*slot) + + 1/256 : (s1'=3) & (x1'=160*slot) + + 1/256 : (s1'=3) & (x1'=161*slot) + + 1/256 : (s1'=3) & (x1'=162*slot) + + 1/256 : (s1'=3) & (x1'=163*slot) + + 1/256 : (s1'=3) & (x1'=164*slot) + + 1/256 : (s1'=3) & (x1'=165*slot) + + 1/256 : (s1'=3) & (x1'=166*slot) + + 1/256 : (s1'=3) & (x1'=167*slot) + + 1/256 : (s1'=3) & (x1'=168*slot) + + 1/256 : (s1'=3) & (x1'=169*slot) + + 1/256 : (s1'=3) & (x1'=170*slot) + + 1/256 : (s1'=3) & (x1'=171*slot) + + 1/256 : (s1'=3) & (x1'=172*slot) + + 1/256 : (s1'=3) & (x1'=173*slot) + + 1/256 : (s1'=3) & (x1'=174*slot) + + 1/256 : (s1'=3) & (x1'=175*slot) + + 1/256 : (s1'=3) & (x1'=176*slot) + + 1/256 : (s1'=3) & (x1'=177*slot) + + 1/256 : (s1'=3) & (x1'=178*slot) + + 1/256 : (s1'=3) & (x1'=179*slot) + + 1/256 : (s1'=3) & (x1'=180*slot) + + 1/256 : (s1'=3) & (x1'=181*slot) + + 1/256 : (s1'=3) & (x1'=182*slot) + + 1/256 : (s1'=3) & (x1'=183*slot) + + 1/256 : (s1'=3) & (x1'=184*slot) + + 1/256 : (s1'=3) & (x1'=185*slot) + + 1/256 : (s1'=3) & (x1'=186*slot) + + 1/256 : (s1'=3) & (x1'=187*slot) + + 1/256 : (s1'=3) & (x1'=188*slot) + + 1/256 : (s1'=3) & (x1'=189*slot) + + 1/256 : (s1'=3) & (x1'=190*slot) + + 1/256 : (s1'=3) & (x1'=191*slot) + + 1/256 : (s1'=3) & (x1'=192*slot) + + 1/256 : (s1'=3) & (x1'=193*slot) + + 1/256 : (s1'=3) & (x1'=194*slot) + + 1/256 : (s1'=3) & (x1'=195*slot) + + 1/256 : (s1'=3) & (x1'=196*slot) + + 1/256 : (s1'=3) & (x1'=197*slot) + + 1/256 : (s1'=3) & (x1'=198*slot) + + 1/256 : (s1'=3) & (x1'=199*slot) + + 1/256 : (s1'=3) & (x1'=200*slot) + + 1/256 : (s1'=3) & (x1'=201*slot) + + 1/256 : (s1'=3) & (x1'=202*slot) + + 1/256 : (s1'=3) & (x1'=203*slot) + + 1/256 : (s1'=3) & (x1'=204*slot) + + 1/256 : (s1'=3) & (x1'=205*slot) + + 1/256 : (s1'=3) & (x1'=206*slot) + + 1/256 : (s1'=3) & (x1'=207*slot) + + 1/256 : (s1'=3) & (x1'=208*slot) + + 1/256 : (s1'=3) & (x1'=209*slot) + + 1/256 : (s1'=3) & (x1'=210*slot) + + 1/256 : (s1'=3) & (x1'=211*slot) + + 1/256 : (s1'=3) & (x1'=212*slot) + + 1/256 : (s1'=3) & (x1'=213*slot) + + 1/256 : (s1'=3) & (x1'=214*slot) + + 1/256 : (s1'=3) & (x1'=215*slot) + + 1/256 : (s1'=3) & (x1'=216*slot) + + 1/256 : (s1'=3) & (x1'=217*slot) + + 1/256 : (s1'=3) & (x1'=218*slot) + + 1/256 : (s1'=3) & (x1'=219*slot) + + 1/256 : (s1'=3) & (x1'=220*slot) + + 1/256 : (s1'=3) & (x1'=221*slot) + + 1/256 : (s1'=3) & (x1'=222*slot) + + 1/256 : (s1'=3) & (x1'=223*slot) + + 1/256 : (s1'=3) & (x1'=224*slot) + + 1/256 : (s1'=3) & (x1'=225*slot) + + 1/256 : (s1'=3) & (x1'=226*slot) + + 1/256 : (s1'=3) & (x1'=227*slot) + + 1/256 : (s1'=3) & (x1'=228*slot) + + 1/256 : (s1'=3) & (x1'=229*slot) + + 1/256 : (s1'=3) & (x1'=230*slot) + + 1/256 : (s1'=3) & (x1'=231*slot) + + 1/256 : (s1'=3) & (x1'=232*slot) + + 1/256 : (s1'=3) & (x1'=233*slot) + + 1/256 : (s1'=3) & (x1'=234*slot) + + 1/256 : (s1'=3) & (x1'=235*slot) + + 1/256 : (s1'=3) & (x1'=236*slot) + + 1/256 : (s1'=3) & (x1'=237*slot) + + 1/256 : (s1'=3) & (x1'=238*slot) + + 1/256 : (s1'=3) & (x1'=239*slot) + + 1/256 : (s1'=3) & (x1'=240*slot) + + 1/256 : (s1'=3) & (x1'=241*slot) + + 1/256 : (s1'=3) & (x1'=242*slot) + + 1/256 : (s1'=3) & (x1'=243*slot) + + 1/256 : (s1'=3) & (x1'=244*slot) + + 1/256 : (s1'=3) & (x1'=245*slot) + + 1/256 : (s1'=3) & (x1'=246*slot) + + 1/256 : (s1'=3) & (x1'=247*slot) + + 1/256 : (s1'=3) & (x1'=248*slot) + + 1/256 : (s1'=3) & (x1'=249*slot) + + 1/256 : (s1'=3) & (x1'=250*slot) + + 1/256 : (s1'=3) & (x1'=251*slot) + + 1/256 : (s1'=3) & (x1'=252*slot) + + 1/256 : (s1'=3) & (x1'=253*slot) + + 1/256 : (s1'=3) & (x1'=254*slot) + + 1/256 : (s1'=3) & (x1'=255*slot); + // ninth retransmission + [] s1=2 & cd1=9 -> 1/512 : (s1'=3) & (x1'=0*slot) + + 1/512 : (s1'=3) & (x1'=1*slot) + + 1/512 : (s1'=3) & (x1'=2*slot) + + 1/512 : (s1'=3) & (x1'=3*slot) + + 1/512 : (s1'=3) & (x1'=4*slot) + + 1/512 : (s1'=3) & (x1'=5*slot) + + 1/512 : (s1'=3) & (x1'=6*slot) + + 1/512 : (s1'=3) & (x1'=7*slot) + + 1/512 : (s1'=3) & (x1'=8*slot) + + 1/512 : (s1'=3) & (x1'=9*slot) + + 1/512 : (s1'=3) & (x1'=10*slot) + + 1/512 : (s1'=3) & (x1'=11*slot) + + 1/512 : (s1'=3) & (x1'=12*slot) + + 1/512 : (s1'=3) & (x1'=13*slot) + + 1/512 : (s1'=3) & (x1'=14*slot) + + 1/512 : (s1'=3) & (x1'=15*slot) + + 1/512 : (s1'=3) & (x1'=16*slot) + + 1/512 : (s1'=3) & (x1'=17*slot) + + 1/512 : (s1'=3) & (x1'=18*slot) + + 1/512 : (s1'=3) & (x1'=19*slot) + + 1/512 : (s1'=3) & (x1'=20*slot) + + 1/512 : (s1'=3) & (x1'=21*slot) + + 1/512 : (s1'=3) & (x1'=22*slot) + + 1/512 : (s1'=3) & (x1'=23*slot) + + 1/512 : (s1'=3) & (x1'=24*slot) + + 1/512 : (s1'=3) & (x1'=25*slot) + + 1/512 : (s1'=3) & (x1'=26*slot) + + 1/512 : (s1'=3) & (x1'=27*slot) + + 1/512 : (s1'=3) & (x1'=28*slot) + + 1/512 : (s1'=3) & (x1'=29*slot) + + 1/512 : (s1'=3) & (x1'=30*slot) + + 1/512 : (s1'=3) & (x1'=31*slot) + + 1/512 : (s1'=3) & (x1'=32*slot) + + 1/512 : (s1'=3) & (x1'=33*slot) + + 1/512 : (s1'=3) & (x1'=34*slot) + + 1/512 : (s1'=3) & (x1'=35*slot) + + 1/512 : (s1'=3) & (x1'=36*slot) + + 1/512 : (s1'=3) & (x1'=37*slot) + + 1/512 : (s1'=3) & (x1'=38*slot) + + 1/512 : (s1'=3) & (x1'=39*slot) + + 1/512 : (s1'=3) & (x1'=40*slot) + + 1/512 : (s1'=3) & (x1'=41*slot) + + 1/512 : (s1'=3) & (x1'=42*slot) + + 1/512 : (s1'=3) & (x1'=43*slot) + + 1/512 : (s1'=3) & (x1'=44*slot) + + 1/512 : (s1'=3) & (x1'=45*slot) + + 1/512 : (s1'=3) & (x1'=46*slot) + + 1/512 : (s1'=3) & (x1'=47*slot) + + 1/512 : (s1'=3) & (x1'=48*slot) + + 1/512 : (s1'=3) & (x1'=49*slot) + + 1/512 : (s1'=3) & (x1'=50*slot) + + 1/512 : (s1'=3) & (x1'=51*slot) + + 1/512 : (s1'=3) & (x1'=52*slot) + + 1/512 : (s1'=3) & (x1'=53*slot) + + 1/512 : (s1'=3) & (x1'=54*slot) + + 1/512 : (s1'=3) & (x1'=55*slot) + + 1/512 : (s1'=3) & (x1'=56*slot) + + 1/512 : (s1'=3) & (x1'=57*slot) + + 1/512 : (s1'=3) & (x1'=58*slot) + + 1/512 : (s1'=3) & (x1'=59*slot) + + 1/512 : (s1'=3) & (x1'=60*slot) + + 1/512 : (s1'=3) & (x1'=61*slot) + + 1/512 : (s1'=3) & (x1'=62*slot) + + 1/512 : (s1'=3) & (x1'=63*slot) + + 1/512 : (s1'=3) & (x1'=64*slot) + + 1/512 : (s1'=3) & (x1'=65*slot) + + 1/512 : (s1'=3) & (x1'=66*slot) + + 1/512 : (s1'=3) & (x1'=67*slot) + + 1/512 : (s1'=3) & (x1'=68*slot) + + 1/512 : (s1'=3) & (x1'=69*slot) + + 1/512 : (s1'=3) & (x1'=70*slot) + + 1/512 : (s1'=3) & (x1'=71*slot) + + 1/512 : (s1'=3) & (x1'=72*slot) + + 1/512 : (s1'=3) & (x1'=73*slot) + + 1/512 : (s1'=3) & (x1'=74*slot) + + 1/512 : (s1'=3) & (x1'=75*slot) + + 1/512 : (s1'=3) & (x1'=76*slot) + + 1/512 : (s1'=3) & (x1'=77*slot) + + 1/512 : (s1'=3) & (x1'=78*slot) + + 1/512 : (s1'=3) & (x1'=79*slot) + + 1/512 : (s1'=3) & (x1'=80*slot) + + 1/512 : (s1'=3) & (x1'=81*slot) + + 1/512 : (s1'=3) & (x1'=82*slot) + + 1/512 : (s1'=3) & (x1'=83*slot) + + 1/512 : (s1'=3) & (x1'=84*slot) + + 1/512 : (s1'=3) & (x1'=85*slot) + + 1/512 : (s1'=3) & (x1'=86*slot) + + 1/512 : (s1'=3) & (x1'=87*slot) + + 1/512 : (s1'=3) & (x1'=88*slot) + + 1/512 : (s1'=3) & (x1'=89*slot) + + 1/512 : (s1'=3) & (x1'=90*slot) + + 1/512 : (s1'=3) & (x1'=91*slot) + + 1/512 : (s1'=3) & (x1'=92*slot) + + 1/512 : (s1'=3) & (x1'=93*slot) + + 1/512 : (s1'=3) & (x1'=94*slot) + + 1/512 : (s1'=3) & (x1'=95*slot) + + 1/512 : (s1'=3) & (x1'=96*slot) + + 1/512 : (s1'=3) & (x1'=97*slot) + + 1/512 : (s1'=3) & (x1'=98*slot) + + 1/512 : (s1'=3) & (x1'=99*slot) + + 1/512 : (s1'=3) & (x1'=100*slot) + + 1/512 : (s1'=3) & (x1'=101*slot) + + 1/512 : (s1'=3) & (x1'=102*slot) + + 1/512 : (s1'=3) & (x1'=103*slot) + + 1/512 : (s1'=3) & (x1'=104*slot) + + 1/512 : (s1'=3) & (x1'=105*slot) + + 1/512 : (s1'=3) & (x1'=106*slot) + + 1/512 : (s1'=3) & (x1'=107*slot) + + 1/512 : (s1'=3) & (x1'=108*slot) + + 1/512 : (s1'=3) & (x1'=109*slot) + + 1/512 : (s1'=3) & (x1'=110*slot) + + 1/512 : (s1'=3) & (x1'=111*slot) + + 1/512 : (s1'=3) & (x1'=112*slot) + + 1/512 : (s1'=3) & (x1'=113*slot) + + 1/512 : (s1'=3) & (x1'=114*slot) + + 1/512 : (s1'=3) & (x1'=115*slot) + + 1/512 : (s1'=3) & (x1'=116*slot) + + 1/512 : (s1'=3) & (x1'=117*slot) + + 1/512 : (s1'=3) & (x1'=118*slot) + + 1/512 : (s1'=3) & (x1'=119*slot) + + 1/512 : (s1'=3) & (x1'=120*slot) + + 1/512 : (s1'=3) & (x1'=121*slot) + + 1/512 : (s1'=3) & (x1'=122*slot) + + 1/512 : (s1'=3) & (x1'=123*slot) + + 1/512 : (s1'=3) & (x1'=124*slot) + + 1/512 : (s1'=3) & (x1'=125*slot) + + 1/512 : (s1'=3) & (x1'=126*slot) + + 1/512 : (s1'=3) & (x1'=127*slot) + + 1/512 : (s1'=3) & (x1'=128*slot) + + 1/512 : (s1'=3) & (x1'=129*slot) + + 1/512 : (s1'=3) & (x1'=130*slot) + + 1/512 : (s1'=3) & (x1'=131*slot) + + 1/512 : (s1'=3) & (x1'=132*slot) + + 1/512 : (s1'=3) & (x1'=133*slot) + + 1/512 : (s1'=3) & (x1'=134*slot) + + 1/512 : (s1'=3) & (x1'=135*slot) + + 1/512 : (s1'=3) & (x1'=136*slot) + + 1/512 : (s1'=3) & (x1'=137*slot) + + 1/512 : (s1'=3) & (x1'=138*slot) + + 1/512 : (s1'=3) & (x1'=139*slot) + + 1/512 : (s1'=3) & (x1'=140*slot) + + 1/512 : (s1'=3) & (x1'=141*slot) + + 1/512 : (s1'=3) & (x1'=142*slot) + + 1/512 : (s1'=3) & (x1'=143*slot) + + 1/512 : (s1'=3) & (x1'=144*slot) + + 1/512 : (s1'=3) & (x1'=145*slot) + + 1/512 : (s1'=3) & (x1'=146*slot) + + 1/512 : (s1'=3) & (x1'=147*slot) + + 1/512 : (s1'=3) & (x1'=148*slot) + + 1/512 : (s1'=3) & (x1'=149*slot) + + 1/512 : (s1'=3) & (x1'=150*slot) + + 1/512 : (s1'=3) & (x1'=151*slot) + + 1/512 : (s1'=3) & (x1'=152*slot) + + 1/512 : (s1'=3) & (x1'=153*slot) + + 1/512 : (s1'=3) & (x1'=154*slot) + + 1/512 : (s1'=3) & (x1'=155*slot) + + 1/512 : (s1'=3) & (x1'=156*slot) + + 1/512 : (s1'=3) & (x1'=157*slot) + + 1/512 : (s1'=3) & (x1'=158*slot) + + 1/512 : (s1'=3) & (x1'=159*slot) + + 1/512 : (s1'=3) & (x1'=160*slot) + + 1/512 : (s1'=3) & (x1'=161*slot) + + 1/512 : (s1'=3) & (x1'=162*slot) + + 1/512 : (s1'=3) & (x1'=163*slot) + + 1/512 : (s1'=3) & (x1'=164*slot) + + 1/512 : (s1'=3) & (x1'=165*slot) + + 1/512 : (s1'=3) & (x1'=166*slot) + + 1/512 : (s1'=3) & (x1'=167*slot) + + 1/512 : (s1'=3) & (x1'=168*slot) + + 1/512 : (s1'=3) & (x1'=169*slot) + + 1/512 : (s1'=3) & (x1'=170*slot) + + 1/512 : (s1'=3) & (x1'=171*slot) + + 1/512 : (s1'=3) & (x1'=172*slot) + + 1/512 : (s1'=3) & (x1'=173*slot) + + 1/512 : (s1'=3) & (x1'=174*slot) + + 1/512 : (s1'=3) & (x1'=175*slot) + + 1/512 : (s1'=3) & (x1'=176*slot) + + 1/512 : (s1'=3) & (x1'=177*slot) + + 1/512 : (s1'=3) & (x1'=178*slot) + + 1/512 : (s1'=3) & (x1'=179*slot) + + 1/512 : (s1'=3) & (x1'=180*slot) + + 1/512 : (s1'=3) & (x1'=181*slot) + + 1/512 : (s1'=3) & (x1'=182*slot) + + 1/512 : (s1'=3) & (x1'=183*slot) + + 1/512 : (s1'=3) & (x1'=184*slot) + + 1/512 : (s1'=3) & (x1'=185*slot) + + 1/512 : (s1'=3) & (x1'=186*slot) + + 1/512 : (s1'=3) & (x1'=187*slot) + + 1/512 : (s1'=3) & (x1'=188*slot) + + 1/512 : (s1'=3) & (x1'=189*slot) + + 1/512 : (s1'=3) & (x1'=190*slot) + + 1/512 : (s1'=3) & (x1'=191*slot) + + 1/512 : (s1'=3) & (x1'=192*slot) + + 1/512 : (s1'=3) & (x1'=193*slot) + + 1/512 : (s1'=3) & (x1'=194*slot) + + 1/512 : (s1'=3) & (x1'=195*slot) + + 1/512 : (s1'=3) & (x1'=196*slot) + + 1/512 : (s1'=3) & (x1'=197*slot) + + 1/512 : (s1'=3) & (x1'=198*slot) + + 1/512 : (s1'=3) & (x1'=199*slot) + + 1/512 : (s1'=3) & (x1'=200*slot) + + 1/512 : (s1'=3) & (x1'=201*slot) + + 1/512 : (s1'=3) & (x1'=202*slot) + + 1/512 : (s1'=3) & (x1'=203*slot) + + 1/512 : (s1'=3) & (x1'=204*slot) + + 1/512 : (s1'=3) & (x1'=205*slot) + + 1/512 : (s1'=3) & (x1'=206*slot) + + 1/512 : (s1'=3) & (x1'=207*slot) + + 1/512 : (s1'=3) & (x1'=208*slot) + + 1/512 : (s1'=3) & (x1'=209*slot) + + 1/512 : (s1'=3) & (x1'=210*slot) + + 1/512 : (s1'=3) & (x1'=211*slot) + + 1/512 : (s1'=3) & (x1'=212*slot) + + 1/512 : (s1'=3) & (x1'=213*slot) + + 1/512 : (s1'=3) & (x1'=214*slot) + + 1/512 : (s1'=3) & (x1'=215*slot) + + 1/512 : (s1'=3) & (x1'=216*slot) + + 1/512 : (s1'=3) & (x1'=217*slot) + + 1/512 : (s1'=3) & (x1'=218*slot) + + 1/512 : (s1'=3) & (x1'=219*slot) + + 1/512 : (s1'=3) & (x1'=220*slot) + + 1/512 : (s1'=3) & (x1'=221*slot) + + 1/512 : (s1'=3) & (x1'=222*slot) + + 1/512 : (s1'=3) & (x1'=223*slot) + + 1/512 : (s1'=3) & (x1'=224*slot) + + 1/512 : (s1'=3) & (x1'=225*slot) + + 1/512 : (s1'=3) & (x1'=226*slot) + + 1/512 : (s1'=3) & (x1'=227*slot) + + 1/512 : (s1'=3) & (x1'=228*slot) + + 1/512 : (s1'=3) & (x1'=229*slot) + + 1/512 : (s1'=3) & (x1'=230*slot) + + 1/512 : (s1'=3) & (x1'=231*slot) + + 1/512 : (s1'=3) & (x1'=232*slot) + + 1/512 : (s1'=3) & (x1'=233*slot) + + 1/512 : (s1'=3) & (x1'=234*slot) + + 1/512 : (s1'=3) & (x1'=235*slot) + + 1/512 : (s1'=3) & (x1'=236*slot) + + 1/512 : (s1'=3) & (x1'=237*slot) + + 1/512 : (s1'=3) & (x1'=238*slot) + + 1/512 : (s1'=3) & (x1'=239*slot) + + 1/512 : (s1'=3) & (x1'=240*slot) + + 1/512 : (s1'=3) & (x1'=241*slot) + + 1/512 : (s1'=3) & (x1'=242*slot) + + 1/512 : (s1'=3) & (x1'=243*slot) + + 1/512 : (s1'=3) & (x1'=244*slot) + + 1/512 : (s1'=3) & (x1'=245*slot) + + 1/512 : (s1'=3) & (x1'=246*slot) + + 1/512 : (s1'=3) & (x1'=247*slot) + + 1/512 : (s1'=3) & (x1'=248*slot) + + 1/512 : (s1'=3) & (x1'=249*slot) + + 1/512 : (s1'=3) & (x1'=250*slot) + + 1/512 : (s1'=3) & (x1'=251*slot) + + 1/512 : (s1'=3) & (x1'=252*slot) + + 1/512 : (s1'=3) & (x1'=253*slot) + + 1/512 : (s1'=3) & (x1'=254*slot) + + 1/512 : (s1'=3) & (x1'=255*slot) + + 1/512 : (s1'=3) & (x1'=256*slot) + + 1/512 : (s1'=3) & (x1'=257*slot) + + 1/512 : (s1'=3) & (x1'=258*slot) + + 1/512 : (s1'=3) & (x1'=259*slot) + + 1/512 : (s1'=3) & (x1'=260*slot) + + 1/512 : (s1'=3) & (x1'=261*slot) + + 1/512 : (s1'=3) & (x1'=262*slot) + + 1/512 : (s1'=3) & (x1'=263*slot) + + 1/512 : (s1'=3) & (x1'=264*slot) + + 1/512 : (s1'=3) & (x1'=265*slot) + + 1/512 : (s1'=3) & (x1'=266*slot) + + 1/512 : (s1'=3) & (x1'=267*slot) + + 1/512 : (s1'=3) & (x1'=268*slot) + + 1/512 : (s1'=3) & (x1'=269*slot) + + 1/512 : (s1'=3) & (x1'=270*slot) + + 1/512 : (s1'=3) & (x1'=271*slot) + + 1/512 : (s1'=3) & (x1'=272*slot) + + 1/512 : (s1'=3) & (x1'=273*slot) + + 1/512 : (s1'=3) & (x1'=274*slot) + + 1/512 : (s1'=3) & (x1'=275*slot) + + 1/512 : (s1'=3) & (x1'=276*slot) + + 1/512 : (s1'=3) & (x1'=277*slot) + + 1/512 : (s1'=3) & (x1'=278*slot) + + 1/512 : (s1'=3) & (x1'=279*slot) + + 1/512 : (s1'=3) & (x1'=280*slot) + + 1/512 : (s1'=3) & (x1'=281*slot) + + 1/512 : (s1'=3) & (x1'=282*slot) + + 1/512 : (s1'=3) & (x1'=283*slot) + + 1/512 : (s1'=3) & (x1'=284*slot) + + 1/512 : (s1'=3) & (x1'=285*slot) + + 1/512 : (s1'=3) & (x1'=286*slot) + + 1/512 : (s1'=3) & (x1'=287*slot) + + 1/512 : (s1'=3) & (x1'=288*slot) + + 1/512 : (s1'=3) & (x1'=289*slot) + + 1/512 : (s1'=3) & (x1'=290*slot) + + 1/512 : (s1'=3) & (x1'=291*slot) + + 1/512 : (s1'=3) & (x1'=292*slot) + + 1/512 : (s1'=3) & (x1'=293*slot) + + 1/512 : (s1'=3) & (x1'=294*slot) + + 1/512 : (s1'=3) & (x1'=295*slot) + + 1/512 : (s1'=3) & (x1'=296*slot) + + 1/512 : (s1'=3) & (x1'=297*slot) + + 1/512 : (s1'=3) & (x1'=298*slot) + + 1/512 : (s1'=3) & (x1'=299*slot) + + 1/512 : (s1'=3) & (x1'=300*slot) + + 1/512 : (s1'=3) & (x1'=301*slot) + + 1/512 : (s1'=3) & (x1'=302*slot) + + 1/512 : (s1'=3) & (x1'=303*slot) + + 1/512 : (s1'=3) & (x1'=304*slot) + + 1/512 : (s1'=3) & (x1'=305*slot) + + 1/512 : (s1'=3) & (x1'=306*slot) + + 1/512 : (s1'=3) & (x1'=307*slot) + + 1/512 : (s1'=3) & (x1'=308*slot) + + 1/512 : (s1'=3) & (x1'=309*slot) + + 1/512 : (s1'=3) & (x1'=310*slot) + + 1/512 : (s1'=3) & (x1'=311*slot) + + 1/512 : (s1'=3) & (x1'=312*slot) + + 1/512 : (s1'=3) & (x1'=313*slot) + + 1/512 : (s1'=3) & (x1'=314*slot) + + 1/512 : (s1'=3) & (x1'=315*slot) + + 1/512 : (s1'=3) & (x1'=316*slot) + + 1/512 : (s1'=3) & (x1'=317*slot) + + 1/512 : (s1'=3) & (x1'=318*slot) + + 1/512 : (s1'=3) & (x1'=319*slot) + + 1/512 : (s1'=3) & (x1'=320*slot) + + 1/512 : (s1'=3) & (x1'=321*slot) + + 1/512 : (s1'=3) & (x1'=322*slot) + + 1/512 : (s1'=3) & (x1'=323*slot) + + 1/512 : (s1'=3) & (x1'=324*slot) + + 1/512 : (s1'=3) & (x1'=325*slot) + + 1/512 : (s1'=3) & (x1'=326*slot) + + 1/512 : (s1'=3) & (x1'=327*slot) + + 1/512 : (s1'=3) & (x1'=328*slot) + + 1/512 : (s1'=3) & (x1'=329*slot) + + 1/512 : (s1'=3) & (x1'=330*slot) + + 1/512 : (s1'=3) & (x1'=331*slot) + + 1/512 : (s1'=3) & (x1'=332*slot) + + 1/512 : (s1'=3) & (x1'=333*slot) + + 1/512 : (s1'=3) & (x1'=334*slot) + + 1/512 : (s1'=3) & (x1'=335*slot) + + 1/512 : (s1'=3) & (x1'=336*slot) + + 1/512 : (s1'=3) & (x1'=337*slot) + + 1/512 : (s1'=3) & (x1'=338*slot) + + 1/512 : (s1'=3) & (x1'=339*slot) + + 1/512 : (s1'=3) & (x1'=340*slot) + + 1/512 : (s1'=3) & (x1'=341*slot) + + 1/512 : (s1'=3) & (x1'=342*slot) + + 1/512 : (s1'=3) & (x1'=343*slot) + + 1/512 : (s1'=3) & (x1'=344*slot) + + 1/512 : (s1'=3) & (x1'=345*slot) + + 1/512 : (s1'=3) & (x1'=346*slot) + + 1/512 : (s1'=3) & (x1'=347*slot) + + 1/512 : (s1'=3) & (x1'=348*slot) + + 1/512 : (s1'=3) & (x1'=349*slot) + + 1/512 : (s1'=3) & (x1'=350*slot) + + 1/512 : (s1'=3) & (x1'=351*slot) + + 1/512 : (s1'=3) & (x1'=352*slot) + + 1/512 : (s1'=3) & (x1'=353*slot) + + 1/512 : (s1'=3) & (x1'=354*slot) + + 1/512 : (s1'=3) & (x1'=355*slot) + + 1/512 : (s1'=3) & (x1'=356*slot) + + 1/512 : (s1'=3) & (x1'=357*slot) + + 1/512 : (s1'=3) & (x1'=358*slot) + + 1/512 : (s1'=3) & (x1'=359*slot) + + 1/512 : (s1'=3) & (x1'=360*slot) + + 1/512 : (s1'=3) & (x1'=361*slot) + + 1/512 : (s1'=3) & (x1'=362*slot) + + 1/512 : (s1'=3) & (x1'=363*slot) + + 1/512 : (s1'=3) & (x1'=364*slot) + + 1/512 : (s1'=3) & (x1'=365*slot) + + 1/512 : (s1'=3) & (x1'=366*slot) + + 1/512 : (s1'=3) & (x1'=367*slot) + + 1/512 : (s1'=3) & (x1'=368*slot) + + 1/512 : (s1'=3) & (x1'=369*slot) + + 1/512 : (s1'=3) & (x1'=370*slot) + + 1/512 : (s1'=3) & (x1'=371*slot) + + 1/512 : (s1'=3) & (x1'=372*slot) + + 1/512 : (s1'=3) & (x1'=373*slot) + + 1/512 : (s1'=3) & (x1'=374*slot) + + 1/512 : (s1'=3) & (x1'=375*slot) + + 1/512 : (s1'=3) & (x1'=376*slot) + + 1/512 : (s1'=3) & (x1'=377*slot) + + 1/512 : (s1'=3) & (x1'=378*slot) + + 1/512 : (s1'=3) & (x1'=379*slot) + + 1/512 : (s1'=3) & (x1'=380*slot) + + 1/512 : (s1'=3) & (x1'=381*slot) + + 1/512 : (s1'=3) & (x1'=382*slot) + + 1/512 : (s1'=3) & (x1'=383*slot) + + 1/512 : (s1'=3) & (x1'=384*slot) + + 1/512 : (s1'=3) & (x1'=385*slot) + + 1/512 : (s1'=3) & (x1'=386*slot) + + 1/512 : (s1'=3) & (x1'=387*slot) + + 1/512 : (s1'=3) & (x1'=388*slot) + + 1/512 : (s1'=3) & (x1'=389*slot) + + 1/512 : (s1'=3) & (x1'=390*slot) + + 1/512 : (s1'=3) & (x1'=391*slot) + + 1/512 : (s1'=3) & (x1'=392*slot) + + 1/512 : (s1'=3) & (x1'=393*slot) + + 1/512 : (s1'=3) & (x1'=394*slot) + + 1/512 : (s1'=3) & (x1'=395*slot) + + 1/512 : (s1'=3) & (x1'=396*slot) + + 1/512 : (s1'=3) & (x1'=397*slot) + + 1/512 : (s1'=3) & (x1'=398*slot) + + 1/512 : (s1'=3) & (x1'=399*slot) + + 1/512 : (s1'=3) & (x1'=400*slot) + + 1/512 : (s1'=3) & (x1'=401*slot) + + 1/512 : (s1'=3) & (x1'=402*slot) + + 1/512 : (s1'=3) & (x1'=403*slot) + + 1/512 : (s1'=3) & (x1'=404*slot) + + 1/512 : (s1'=3) & (x1'=405*slot) + + 1/512 : (s1'=3) & (x1'=406*slot) + + 1/512 : (s1'=3) & (x1'=407*slot) + + 1/512 : (s1'=3) & (x1'=408*slot) + + 1/512 : (s1'=3) & (x1'=409*slot) + + 1/512 : (s1'=3) & (x1'=410*slot) + + 1/512 : (s1'=3) & (x1'=411*slot) + + 1/512 : (s1'=3) & (x1'=412*slot) + + 1/512 : (s1'=3) & (x1'=413*slot) + + 1/512 : (s1'=3) & (x1'=414*slot) + + 1/512 : (s1'=3) & (x1'=415*slot) + + 1/512 : (s1'=3) & (x1'=416*slot) + + 1/512 : (s1'=3) & (x1'=417*slot) + + 1/512 : (s1'=3) & (x1'=418*slot) + + 1/512 : (s1'=3) & (x1'=419*slot) + + 1/512 : (s1'=3) & (x1'=420*slot) + + 1/512 : (s1'=3) & (x1'=421*slot) + + 1/512 : (s1'=3) & (x1'=422*slot) + + 1/512 : (s1'=3) & (x1'=423*slot) + + 1/512 : (s1'=3) & (x1'=424*slot) + + 1/512 : (s1'=3) & (x1'=425*slot) + + 1/512 : (s1'=3) & (x1'=426*slot) + + 1/512 : (s1'=3) & (x1'=427*slot) + + 1/512 : (s1'=3) & (x1'=428*slot) + + 1/512 : (s1'=3) & (x1'=429*slot) + + 1/512 : (s1'=3) & (x1'=430*slot) + + 1/512 : (s1'=3) & (x1'=431*slot) + + 1/512 : (s1'=3) & (x1'=432*slot) + + 1/512 : (s1'=3) & (x1'=433*slot) + + 1/512 : (s1'=3) & (x1'=434*slot) + + 1/512 : (s1'=3) & (x1'=435*slot) + + 1/512 : (s1'=3) & (x1'=436*slot) + + 1/512 : (s1'=3) & (x1'=437*slot) + + 1/512 : (s1'=3) & (x1'=438*slot) + + 1/512 : (s1'=3) & (x1'=439*slot) + + 1/512 : (s1'=3) & (x1'=440*slot) + + 1/512 : (s1'=3) & (x1'=441*slot) + + 1/512 : (s1'=3) & (x1'=442*slot) + + 1/512 : (s1'=3) & (x1'=443*slot) + + 1/512 : (s1'=3) & (x1'=444*slot) + + 1/512 : (s1'=3) & (x1'=445*slot) + + 1/512 : (s1'=3) & (x1'=446*slot) + + 1/512 : (s1'=3) & (x1'=447*slot) + + 1/512 : (s1'=3) & (x1'=448*slot) + + 1/512 : (s1'=3) & (x1'=449*slot) + + 1/512 : (s1'=3) & (x1'=450*slot) + + 1/512 : (s1'=3) & (x1'=451*slot) + + 1/512 : (s1'=3) & (x1'=452*slot) + + 1/512 : (s1'=3) & (x1'=453*slot) + + 1/512 : (s1'=3) & (x1'=454*slot) + + 1/512 : (s1'=3) & (x1'=455*slot) + + 1/512 : (s1'=3) & (x1'=456*slot) + + 1/512 : (s1'=3) & (x1'=457*slot) + + 1/512 : (s1'=3) & (x1'=458*slot) + + 1/512 : (s1'=3) & (x1'=459*slot) + + 1/512 : (s1'=3) & (x1'=460*slot) + + 1/512 : (s1'=3) & (x1'=461*slot) + + 1/512 : (s1'=3) & (x1'=462*slot) + + 1/512 : (s1'=3) & (x1'=463*slot) + + 1/512 : (s1'=3) & (x1'=464*slot) + + 1/512 : (s1'=3) & (x1'=465*slot) + + 1/512 : (s1'=3) & (x1'=466*slot) + + 1/512 : (s1'=3) & (x1'=467*slot) + + 1/512 : (s1'=3) & (x1'=468*slot) + + 1/512 : (s1'=3) & (x1'=469*slot) + + 1/512 : (s1'=3) & (x1'=470*slot) + + 1/512 : (s1'=3) & (x1'=471*slot) + + 1/512 : (s1'=3) & (x1'=472*slot) + + 1/512 : (s1'=3) & (x1'=473*slot) + + 1/512 : (s1'=3) & (x1'=474*slot) + + 1/512 : (s1'=3) & (x1'=475*slot) + + 1/512 : (s1'=3) & (x1'=476*slot) + + 1/512 : (s1'=3) & (x1'=477*slot) + + 1/512 : (s1'=3) & (x1'=478*slot) + + 1/512 : (s1'=3) & (x1'=479*slot) + + 1/512 : (s1'=3) & (x1'=480*slot) + + 1/512 : (s1'=3) & (x1'=481*slot) + + 1/512 : (s1'=3) & (x1'=482*slot) + + 1/512 : (s1'=3) & (x1'=483*slot) + + 1/512 : (s1'=3) & (x1'=484*slot) + + 1/512 : (s1'=3) & (x1'=485*slot) + + 1/512 : (s1'=3) & (x1'=486*slot) + + 1/512 : (s1'=3) & (x1'=487*slot) + + 1/512 : (s1'=3) & (x1'=488*slot) + + 1/512 : (s1'=3) & (x1'=489*slot) + + 1/512 : (s1'=3) & (x1'=490*slot) + + 1/512 : (s1'=3) & (x1'=491*slot) + + 1/512 : (s1'=3) & (x1'=492*slot) + + 1/512 : (s1'=3) & (x1'=493*slot) + + 1/512 : (s1'=3) & (x1'=494*slot) + + 1/512 : (s1'=3) & (x1'=495*slot) + + 1/512 : (s1'=3) & (x1'=496*slot) + + 1/512 : (s1'=3) & (x1'=497*slot) + + 1/512 : (s1'=3) & (x1'=498*slot) + + 1/512 : (s1'=3) & (x1'=499*slot) + + 1/512 : (s1'=3) & (x1'=500*slot) + + 1/512 : (s1'=3) & (x1'=501*slot) + + 1/512 : (s1'=3) & (x1'=502*slot) + + 1/512 : (s1'=3) & (x1'=503*slot) + + 1/512 : (s1'=3) & (x1'=504*slot) + + 1/512 : (s1'=3) & (x1'=505*slot) + + 1/512 : (s1'=3) & (x1'=506*slot) + + 1/512 : (s1'=3) & (x1'=507*slot) + + 1/512 : (s1'=3) & (x1'=508*slot) + + 1/512 : (s1'=3) & (x1'=509*slot) + + 1/512 : (s1'=3) & (x1'=510*slot) + + 1/512 : (s1'=3) & (x1'=511*slot); + // tenth (or more) retransmission + [] s1=2 & cd1=10 -> 1/1024 : (s1'=3) & (x1'=0*slot) + + 1/1024 : (s1'=3) & (x1'=1*slot) + + 1/1024 : (s1'=3) & (x1'=2*slot) + + 1/1024 : (s1'=3) & (x1'=3*slot) + + 1/1024 : (s1'=3) & (x1'=4*slot) + + 1/1024 : (s1'=3) & (x1'=5*slot) + + 1/1024 : (s1'=3) & (x1'=6*slot) + + 1/1024 : (s1'=3) & (x1'=7*slot) + + 1/1024 : (s1'=3) & (x1'=8*slot) + + 1/1024 : (s1'=3) & (x1'=9*slot) + + 1/1024 : (s1'=3) & (x1'=10*slot) + + 1/1024 : (s1'=3) & (x1'=11*slot) + + 1/1024 : (s1'=3) & (x1'=12*slot) + + 1/1024 : (s1'=3) & (x1'=13*slot) + + 1/1024 : (s1'=3) & (x1'=14*slot) + + 1/1024 : (s1'=3) & (x1'=15*slot) + + 1/1024 : (s1'=3) & (x1'=16*slot) + + 1/1024 : (s1'=3) & (x1'=17*slot) + + 1/1024 : (s1'=3) & (x1'=18*slot) + + 1/1024 : (s1'=3) & (x1'=19*slot) + + 1/1024 : (s1'=3) & (x1'=20*slot) + + 1/1024 : (s1'=3) & (x1'=21*slot) + + 1/1024 : (s1'=3) & (x1'=22*slot) + + 1/1024 : (s1'=3) & (x1'=23*slot) + + 1/1024 : (s1'=3) & (x1'=24*slot) + + 1/1024 : (s1'=3) & (x1'=25*slot) + + 1/1024 : (s1'=3) & (x1'=26*slot) + + 1/1024 : (s1'=3) & (x1'=27*slot) + + 1/1024 : (s1'=3) & (x1'=28*slot) + + 1/1024 : (s1'=3) & (x1'=29*slot) + + 1/1024 : (s1'=3) & (x1'=30*slot) + + 1/1024 : (s1'=3) & (x1'=31*slot) + + 1/1024 : (s1'=3) & (x1'=32*slot) + + 1/1024 : (s1'=3) & (x1'=33*slot) + + 1/1024 : (s1'=3) & (x1'=34*slot) + + 1/1024 : (s1'=3) & (x1'=35*slot) + + 1/1024 : (s1'=3) & (x1'=36*slot) + + 1/1024 : (s1'=3) & (x1'=37*slot) + + 1/1024 : (s1'=3) & (x1'=38*slot) + + 1/1024 : (s1'=3) & (x1'=39*slot) + + 1/1024 : (s1'=3) & (x1'=40*slot) + + 1/1024 : (s1'=3) & (x1'=41*slot) + + 1/1024 : (s1'=3) & (x1'=42*slot) + + 1/1024 : (s1'=3) & (x1'=43*slot) + + 1/1024 : (s1'=3) & (x1'=44*slot) + + 1/1024 : (s1'=3) & (x1'=45*slot) + + 1/1024 : (s1'=3) & (x1'=46*slot) + + 1/1024 : (s1'=3) & (x1'=47*slot) + + 1/1024 : (s1'=3) & (x1'=48*slot) + + 1/1024 : (s1'=3) & (x1'=49*slot) + + 1/1024 : (s1'=3) & (x1'=50*slot) + + 1/1024 : (s1'=3) & (x1'=51*slot) + + 1/1024 : (s1'=3) & (x1'=52*slot) + + 1/1024 : (s1'=3) & (x1'=53*slot) + + 1/1024 : (s1'=3) & (x1'=54*slot) + + 1/1024 : (s1'=3) & (x1'=55*slot) + + 1/1024 : (s1'=3) & (x1'=56*slot) + + 1/1024 : (s1'=3) & (x1'=57*slot) + + 1/1024 : (s1'=3) & (x1'=58*slot) + + 1/1024 : (s1'=3) & (x1'=59*slot) + + 1/1024 : (s1'=3) & (x1'=60*slot) + + 1/1024 : (s1'=3) & (x1'=61*slot) + + 1/1024 : (s1'=3) & (x1'=62*slot) + + 1/1024 : (s1'=3) & (x1'=63*slot) + + 1/1024 : (s1'=3) & (x1'=64*slot) + + 1/1024 : (s1'=3) & (x1'=65*slot) + + 1/1024 : (s1'=3) & (x1'=66*slot) + + 1/1024 : (s1'=3) & (x1'=67*slot) + + 1/1024 : (s1'=3) & (x1'=68*slot) + + 1/1024 : (s1'=3) & (x1'=69*slot) + + 1/1024 : (s1'=3) & (x1'=70*slot) + + 1/1024 : (s1'=3) & (x1'=71*slot) + + 1/1024 : (s1'=3) & (x1'=72*slot) + + 1/1024 : (s1'=3) & (x1'=73*slot) + + 1/1024 : (s1'=3) & (x1'=74*slot) + + 1/1024 : (s1'=3) & (x1'=75*slot) + + 1/1024 : (s1'=3) & (x1'=76*slot) + + 1/1024 : (s1'=3) & (x1'=77*slot) + + 1/1024 : (s1'=3) & (x1'=78*slot) + + 1/1024 : (s1'=3) & (x1'=79*slot) + + 1/1024 : (s1'=3) & (x1'=80*slot) + + 1/1024 : (s1'=3) & (x1'=81*slot) + + 1/1024 : (s1'=3) & (x1'=82*slot) + + 1/1024 : (s1'=3) & (x1'=83*slot) + + 1/1024 : (s1'=3) & (x1'=84*slot) + + 1/1024 : (s1'=3) & (x1'=85*slot) + + 1/1024 : (s1'=3) & (x1'=86*slot) + + 1/1024 : (s1'=3) & (x1'=87*slot) + + 1/1024 : (s1'=3) & (x1'=88*slot) + + 1/1024 : (s1'=3) & (x1'=89*slot) + + 1/1024 : (s1'=3) & (x1'=90*slot) + + 1/1024 : (s1'=3) & (x1'=91*slot) + + 1/1024 : (s1'=3) & (x1'=92*slot) + + 1/1024 : (s1'=3) & (x1'=93*slot) + + 1/1024 : (s1'=3) & (x1'=94*slot) + + 1/1024 : (s1'=3) & (x1'=95*slot) + + 1/1024 : (s1'=3) & (x1'=96*slot) + + 1/1024 : (s1'=3) & (x1'=97*slot) + + 1/1024 : (s1'=3) & (x1'=98*slot) + + 1/1024 : (s1'=3) & (x1'=99*slot) + + 1/1024 : (s1'=3) & (x1'=100*slot) + + 1/1024 : (s1'=3) & (x1'=101*slot) + + 1/1024 : (s1'=3) & (x1'=102*slot) + + 1/1024 : (s1'=3) & (x1'=103*slot) + + 1/1024 : (s1'=3) & (x1'=104*slot) + + 1/1024 : (s1'=3) & (x1'=105*slot) + + 1/1024 : (s1'=3) & (x1'=106*slot) + + 1/1024 : (s1'=3) & (x1'=107*slot) + + 1/1024 : (s1'=3) & (x1'=108*slot) + + 1/1024 : (s1'=3) & (x1'=109*slot) + + 1/1024 : (s1'=3) & (x1'=110*slot) + + 1/1024 : (s1'=3) & (x1'=111*slot) + + 1/1024 : (s1'=3) & (x1'=112*slot) + + 1/1024 : (s1'=3) & (x1'=113*slot) + + 1/1024 : (s1'=3) & (x1'=114*slot) + + 1/1024 : (s1'=3) & (x1'=115*slot) + + 1/1024 : (s1'=3) & (x1'=116*slot) + + 1/1024 : (s1'=3) & (x1'=117*slot) + + 1/1024 : (s1'=3) & (x1'=118*slot) + + 1/1024 : (s1'=3) & (x1'=119*slot) + + 1/1024 : (s1'=3) & (x1'=120*slot) + + 1/1024 : (s1'=3) & (x1'=121*slot) + + 1/1024 : (s1'=3) & (x1'=122*slot) + + 1/1024 : (s1'=3) & (x1'=123*slot) + + 1/1024 : (s1'=3) & (x1'=124*slot) + + 1/1024 : (s1'=3) & (x1'=125*slot) + + 1/1024 : (s1'=3) & (x1'=126*slot) + + 1/1024 : (s1'=3) & (x1'=127*slot) + + 1/1024 : (s1'=3) & (x1'=128*slot) + + 1/1024 : (s1'=3) & (x1'=129*slot) + + 1/1024 : (s1'=3) & (x1'=130*slot) + + 1/1024 : (s1'=3) & (x1'=131*slot) + + 1/1024 : (s1'=3) & (x1'=132*slot) + + 1/1024 : (s1'=3) & (x1'=133*slot) + + 1/1024 : (s1'=3) & (x1'=134*slot) + + 1/1024 : (s1'=3) & (x1'=135*slot) + + 1/1024 : (s1'=3) & (x1'=136*slot) + + 1/1024 : (s1'=3) & (x1'=137*slot) + + 1/1024 : (s1'=3) & (x1'=138*slot) + + 1/1024 : (s1'=3) & (x1'=139*slot) + + 1/1024 : (s1'=3) & (x1'=140*slot) + + 1/1024 : (s1'=3) & (x1'=141*slot) + + 1/1024 : (s1'=3) & (x1'=142*slot) + + 1/1024 : (s1'=3) & (x1'=143*slot) + + 1/1024 : (s1'=3) & (x1'=144*slot) + + 1/1024 : (s1'=3) & (x1'=145*slot) + + 1/1024 : (s1'=3) & (x1'=146*slot) + + 1/1024 : (s1'=3) & (x1'=147*slot) + + 1/1024 : (s1'=3) & (x1'=148*slot) + + 1/1024 : (s1'=3) & (x1'=149*slot) + + 1/1024 : (s1'=3) & (x1'=150*slot) + + 1/1024 : (s1'=3) & (x1'=151*slot) + + 1/1024 : (s1'=3) & (x1'=152*slot) + + 1/1024 : (s1'=3) & (x1'=153*slot) + + 1/1024 : (s1'=3) & (x1'=154*slot) + + 1/1024 : (s1'=3) & (x1'=155*slot) + + 1/1024 : (s1'=3) & (x1'=156*slot) + + 1/1024 : (s1'=3) & (x1'=157*slot) + + 1/1024 : (s1'=3) & (x1'=158*slot) + + 1/1024 : (s1'=3) & (x1'=159*slot) + + 1/1024 : (s1'=3) & (x1'=160*slot) + + 1/1024 : (s1'=3) & (x1'=161*slot) + + 1/1024 : (s1'=3) & (x1'=162*slot) + + 1/1024 : (s1'=3) & (x1'=163*slot) + + 1/1024 : (s1'=3) & (x1'=164*slot) + + 1/1024 : (s1'=3) & (x1'=165*slot) + + 1/1024 : (s1'=3) & (x1'=166*slot) + + 1/1024 : (s1'=3) & (x1'=167*slot) + + 1/1024 : (s1'=3) & (x1'=168*slot) + + 1/1024 : (s1'=3) & (x1'=169*slot) + + 1/1024 : (s1'=3) & (x1'=170*slot) + + 1/1024 : (s1'=3) & (x1'=171*slot) + + 1/1024 : (s1'=3) & (x1'=172*slot) + + 1/1024 : (s1'=3) & (x1'=173*slot) + + 1/1024 : (s1'=3) & (x1'=174*slot) + + 1/1024 : (s1'=3) & (x1'=175*slot) + + 1/1024 : (s1'=3) & (x1'=176*slot) + + 1/1024 : (s1'=3) & (x1'=177*slot) + + 1/1024 : (s1'=3) & (x1'=178*slot) + + 1/1024 : (s1'=3) & (x1'=179*slot) + + 1/1024 : (s1'=3) & (x1'=180*slot) + + 1/1024 : (s1'=3) & (x1'=181*slot) + + 1/1024 : (s1'=3) & (x1'=182*slot) + + 1/1024 : (s1'=3) & (x1'=183*slot) + + 1/1024 : (s1'=3) & (x1'=184*slot) + + 1/1024 : (s1'=3) & (x1'=185*slot) + + 1/1024 : (s1'=3) & (x1'=186*slot) + + 1/1024 : (s1'=3) & (x1'=187*slot) + + 1/1024 : (s1'=3) & (x1'=188*slot) + + 1/1024 : (s1'=3) & (x1'=189*slot) + + 1/1024 : (s1'=3) & (x1'=190*slot) + + 1/1024 : (s1'=3) & (x1'=191*slot) + + 1/1024 : (s1'=3) & (x1'=192*slot) + + 1/1024 : (s1'=3) & (x1'=193*slot) + + 1/1024 : (s1'=3) & (x1'=194*slot) + + 1/1024 : (s1'=3) & (x1'=195*slot) + + 1/1024 : (s1'=3) & (x1'=196*slot) + + 1/1024 : (s1'=3) & (x1'=197*slot) + + 1/1024 : (s1'=3) & (x1'=198*slot) + + 1/1024 : (s1'=3) & (x1'=199*slot) + + 1/1024 : (s1'=3) & (x1'=200*slot) + + 1/1024 : (s1'=3) & (x1'=201*slot) + + 1/1024 : (s1'=3) & (x1'=202*slot) + + 1/1024 : (s1'=3) & (x1'=203*slot) + + 1/1024 : (s1'=3) & (x1'=204*slot) + + 1/1024 : (s1'=3) & (x1'=205*slot) + + 1/1024 : (s1'=3) & (x1'=206*slot) + + 1/1024 : (s1'=3) & (x1'=207*slot) + + 1/1024 : (s1'=3) & (x1'=208*slot) + + 1/1024 : (s1'=3) & (x1'=209*slot) + + 1/1024 : (s1'=3) & (x1'=210*slot) + + 1/1024 : (s1'=3) & (x1'=211*slot) + + 1/1024 : (s1'=3) & (x1'=212*slot) + + 1/1024 : (s1'=3) & (x1'=213*slot) + + 1/1024 : (s1'=3) & (x1'=214*slot) + + 1/1024 : (s1'=3) & (x1'=215*slot) + + 1/1024 : (s1'=3) & (x1'=216*slot) + + 1/1024 : (s1'=3) & (x1'=217*slot) + + 1/1024 : (s1'=3) & (x1'=218*slot) + + 1/1024 : (s1'=3) & (x1'=219*slot) + + 1/1024 : (s1'=3) & (x1'=220*slot) + + 1/1024 : (s1'=3) & (x1'=221*slot) + + 1/1024 : (s1'=3) & (x1'=222*slot) + + 1/1024 : (s1'=3) & (x1'=223*slot) + + 1/1024 : (s1'=3) & (x1'=224*slot) + + 1/1024 : (s1'=3) & (x1'=225*slot) + + 1/1024 : (s1'=3) & (x1'=226*slot) + + 1/1024 : (s1'=3) & (x1'=227*slot) + + 1/1024 : (s1'=3) & (x1'=228*slot) + + 1/1024 : (s1'=3) & (x1'=229*slot) + + 1/1024 : (s1'=3) & (x1'=230*slot) + + 1/1024 : (s1'=3) & (x1'=231*slot) + + 1/1024 : (s1'=3) & (x1'=232*slot) + + 1/1024 : (s1'=3) & (x1'=233*slot) + + 1/1024 : (s1'=3) & (x1'=234*slot) + + 1/1024 : (s1'=3) & (x1'=235*slot) + + 1/1024 : (s1'=3) & (x1'=236*slot) + + 1/1024 : (s1'=3) & (x1'=237*slot) + + 1/1024 : (s1'=3) & (x1'=238*slot) + + 1/1024 : (s1'=3) & (x1'=239*slot) + + 1/1024 : (s1'=3) & (x1'=240*slot) + + 1/1024 : (s1'=3) & (x1'=241*slot) + + 1/1024 : (s1'=3) & (x1'=242*slot) + + 1/1024 : (s1'=3) & (x1'=243*slot) + + 1/1024 : (s1'=3) & (x1'=244*slot) + + 1/1024 : (s1'=3) & (x1'=245*slot) + + 1/1024 : (s1'=3) & (x1'=246*slot) + + 1/1024 : (s1'=3) & (x1'=247*slot) + + 1/1024 : (s1'=3) & (x1'=248*slot) + + 1/1024 : (s1'=3) & (x1'=249*slot) + + 1/1024 : (s1'=3) & (x1'=250*slot) + + 1/1024 : (s1'=3) & (x1'=251*slot) + + 1/1024 : (s1'=3) & (x1'=252*slot) + + 1/1024 : (s1'=3) & (x1'=253*slot) + + 1/1024 : (s1'=3) & (x1'=254*slot) + + 1/1024 : (s1'=3) & (x1'=255*slot) + + 1/1024 : (s1'=3) & (x1'=256*slot) + + 1/1024 : (s1'=3) & (x1'=257*slot) + + 1/1024 : (s1'=3) & (x1'=258*slot) + + 1/1024 : (s1'=3) & (x1'=259*slot) + + 1/1024 : (s1'=3) & (x1'=260*slot) + + 1/1024 : (s1'=3) & (x1'=261*slot) + + 1/1024 : (s1'=3) & (x1'=262*slot) + + 1/1024 : (s1'=3) & (x1'=263*slot) + + 1/1024 : (s1'=3) & (x1'=264*slot) + + 1/1024 : (s1'=3) & (x1'=265*slot) + + 1/1024 : (s1'=3) & (x1'=266*slot) + + 1/1024 : (s1'=3) & (x1'=267*slot) + + 1/1024 : (s1'=3) & (x1'=268*slot) + + 1/1024 : (s1'=3) & (x1'=269*slot) + + 1/1024 : (s1'=3) & (x1'=270*slot) + + 1/1024 : (s1'=3) & (x1'=271*slot) + + 1/1024 : (s1'=3) & (x1'=272*slot) + + 1/1024 : (s1'=3) & (x1'=273*slot) + + 1/1024 : (s1'=3) & (x1'=274*slot) + + 1/1024 : (s1'=3) & (x1'=275*slot) + + 1/1024 : (s1'=3) & (x1'=276*slot) + + 1/1024 : (s1'=3) & (x1'=277*slot) + + 1/1024 : (s1'=3) & (x1'=278*slot) + + 1/1024 : (s1'=3) & (x1'=279*slot) + + 1/1024 : (s1'=3) & (x1'=280*slot) + + 1/1024 : (s1'=3) & (x1'=281*slot) + + 1/1024 : (s1'=3) & (x1'=282*slot) + + 1/1024 : (s1'=3) & (x1'=283*slot) + + 1/1024 : (s1'=3) & (x1'=284*slot) + + 1/1024 : (s1'=3) & (x1'=285*slot) + + 1/1024 : (s1'=3) & (x1'=286*slot) + + 1/1024 : (s1'=3) & (x1'=287*slot) + + 1/1024 : (s1'=3) & (x1'=288*slot) + + 1/1024 : (s1'=3) & (x1'=289*slot) + + 1/1024 : (s1'=3) & (x1'=290*slot) + + 1/1024 : (s1'=3) & (x1'=291*slot) + + 1/1024 : (s1'=3) & (x1'=292*slot) + + 1/1024 : (s1'=3) & (x1'=293*slot) + + 1/1024 : (s1'=3) & (x1'=294*slot) + + 1/1024 : (s1'=3) & (x1'=295*slot) + + 1/1024 : (s1'=3) & (x1'=296*slot) + + 1/1024 : (s1'=3) & (x1'=297*slot) + + 1/1024 : (s1'=3) & (x1'=298*slot) + + 1/1024 : (s1'=3) & (x1'=299*slot) + + 1/1024 : (s1'=3) & (x1'=300*slot) + + 1/1024 : (s1'=3) & (x1'=301*slot) + + 1/1024 : (s1'=3) & (x1'=302*slot) + + 1/1024 : (s1'=3) & (x1'=303*slot) + + 1/1024 : (s1'=3) & (x1'=304*slot) + + 1/1024 : (s1'=3) & (x1'=305*slot) + + 1/1024 : (s1'=3) & (x1'=306*slot) + + 1/1024 : (s1'=3) & (x1'=307*slot) + + 1/1024 : (s1'=3) & (x1'=308*slot) + + 1/1024 : (s1'=3) & (x1'=309*slot) + + 1/1024 : (s1'=3) & (x1'=310*slot) + + 1/1024 : (s1'=3) & (x1'=311*slot) + + 1/1024 : (s1'=3) & (x1'=312*slot) + + 1/1024 : (s1'=3) & (x1'=313*slot) + + 1/1024 : (s1'=3) & (x1'=314*slot) + + 1/1024 : (s1'=3) & (x1'=315*slot) + + 1/1024 : (s1'=3) & (x1'=316*slot) + + 1/1024 : (s1'=3) & (x1'=317*slot) + + 1/1024 : (s1'=3) & (x1'=318*slot) + + 1/1024 : (s1'=3) & (x1'=319*slot) + + 1/1024 : (s1'=3) & (x1'=320*slot) + + 1/1024 : (s1'=3) & (x1'=321*slot) + + 1/1024 : (s1'=3) & (x1'=322*slot) + + 1/1024 : (s1'=3) & (x1'=323*slot) + + 1/1024 : (s1'=3) & (x1'=324*slot) + + 1/1024 : (s1'=3) & (x1'=325*slot) + + 1/1024 : (s1'=3) & (x1'=326*slot) + + 1/1024 : (s1'=3) & (x1'=327*slot) + + 1/1024 : (s1'=3) & (x1'=328*slot) + + 1/1024 : (s1'=3) & (x1'=329*slot) + + 1/1024 : (s1'=3) & (x1'=330*slot) + + 1/1024 : (s1'=3) & (x1'=331*slot) + + 1/1024 : (s1'=3) & (x1'=332*slot) + + 1/1024 : (s1'=3) & (x1'=333*slot) + + 1/1024 : (s1'=3) & (x1'=334*slot) + + 1/1024 : (s1'=3) & (x1'=335*slot) + + 1/1024 : (s1'=3) & (x1'=336*slot) + + 1/1024 : (s1'=3) & (x1'=337*slot) + + 1/1024 : (s1'=3) & (x1'=338*slot) + + 1/1024 : (s1'=3) & (x1'=339*slot) + + 1/1024 : (s1'=3) & (x1'=340*slot) + + 1/1024 : (s1'=3) & (x1'=341*slot) + + 1/1024 : (s1'=3) & (x1'=342*slot) + + 1/1024 : (s1'=3) & (x1'=343*slot) + + 1/1024 : (s1'=3) & (x1'=344*slot) + + 1/1024 : (s1'=3) & (x1'=345*slot) + + 1/1024 : (s1'=3) & (x1'=346*slot) + + 1/1024 : (s1'=3) & (x1'=347*slot) + + 1/1024 : (s1'=3) & (x1'=348*slot) + + 1/1024 : (s1'=3) & (x1'=349*slot) + + 1/1024 : (s1'=3) & (x1'=350*slot) + + 1/1024 : (s1'=3) & (x1'=351*slot) + + 1/1024 : (s1'=3) & (x1'=352*slot) + + 1/1024 : (s1'=3) & (x1'=353*slot) + + 1/1024 : (s1'=3) & (x1'=354*slot) + + 1/1024 : (s1'=3) & (x1'=355*slot) + + 1/1024 : (s1'=3) & (x1'=356*slot) + + 1/1024 : (s1'=3) & (x1'=357*slot) + + 1/1024 : (s1'=3) & (x1'=358*slot) + + 1/1024 : (s1'=3) & (x1'=359*slot) + + 1/1024 : (s1'=3) & (x1'=360*slot) + + 1/1024 : (s1'=3) & (x1'=361*slot) + + 1/1024 : (s1'=3) & (x1'=362*slot) + + 1/1024 : (s1'=3) & (x1'=363*slot) + + 1/1024 : (s1'=3) & (x1'=364*slot) + + 1/1024 : (s1'=3) & (x1'=365*slot) + + 1/1024 : (s1'=3) & (x1'=366*slot) + + 1/1024 : (s1'=3) & (x1'=367*slot) + + 1/1024 : (s1'=3) & (x1'=368*slot) + + 1/1024 : (s1'=3) & (x1'=369*slot) + + 1/1024 : (s1'=3) & (x1'=370*slot) + + 1/1024 : (s1'=3) & (x1'=371*slot) + + 1/1024 : (s1'=3) & (x1'=372*slot) + + 1/1024 : (s1'=3) & (x1'=373*slot) + + 1/1024 : (s1'=3) & (x1'=374*slot) + + 1/1024 : (s1'=3) & (x1'=375*slot) + + 1/1024 : (s1'=3) & (x1'=376*slot) + + 1/1024 : (s1'=3) & (x1'=377*slot) + + 1/1024 : (s1'=3) & (x1'=378*slot) + + 1/1024 : (s1'=3) & (x1'=379*slot) + + 1/1024 : (s1'=3) & (x1'=380*slot) + + 1/1024 : (s1'=3) & (x1'=381*slot) + + 1/1024 : (s1'=3) & (x1'=382*slot) + + 1/1024 : (s1'=3) & (x1'=383*slot) + + 1/1024 : (s1'=3) & (x1'=384*slot) + + 1/1024 : (s1'=3) & (x1'=385*slot) + + 1/1024 : (s1'=3) & (x1'=386*slot) + + 1/1024 : (s1'=3) & (x1'=387*slot) + + 1/1024 : (s1'=3) & (x1'=388*slot) + + 1/1024 : (s1'=3) & (x1'=389*slot) + + 1/1024 : (s1'=3) & (x1'=390*slot) + + 1/1024 : (s1'=3) & (x1'=391*slot) + + 1/1024 : (s1'=3) & (x1'=392*slot) + + 1/1024 : (s1'=3) & (x1'=393*slot) + + 1/1024 : (s1'=3) & (x1'=394*slot) + + 1/1024 : (s1'=3) & (x1'=395*slot) + + 1/1024 : (s1'=3) & (x1'=396*slot) + + 1/1024 : (s1'=3) & (x1'=397*slot) + + 1/1024 : (s1'=3) & (x1'=398*slot) + + 1/1024 : (s1'=3) & (x1'=399*slot) + + 1/1024 : (s1'=3) & (x1'=400*slot) + + 1/1024 : (s1'=3) & (x1'=401*slot) + + 1/1024 : (s1'=3) & (x1'=402*slot) + + 1/1024 : (s1'=3) & (x1'=403*slot) + + 1/1024 : (s1'=3) & (x1'=404*slot) + + 1/1024 : (s1'=3) & (x1'=405*slot) + + 1/1024 : (s1'=3) & (x1'=406*slot) + + 1/1024 : (s1'=3) & (x1'=407*slot) + + 1/1024 : (s1'=3) & (x1'=408*slot) + + 1/1024 : (s1'=3) & (x1'=409*slot) + + 1/1024 : (s1'=3) & (x1'=410*slot) + + 1/1024 : (s1'=3) & (x1'=411*slot) + + 1/1024 : (s1'=3) & (x1'=412*slot) + + 1/1024 : (s1'=3) & (x1'=413*slot) + + 1/1024 : (s1'=3) & (x1'=414*slot) + + 1/1024 : (s1'=3) & (x1'=415*slot) + + 1/1024 : (s1'=3) & (x1'=416*slot) + + 1/1024 : (s1'=3) & (x1'=417*slot) + + 1/1024 : (s1'=3) & (x1'=418*slot) + + 1/1024 : (s1'=3) & (x1'=419*slot) + + 1/1024 : (s1'=3) & (x1'=420*slot) + + 1/1024 : (s1'=3) & (x1'=421*slot) + + 1/1024 : (s1'=3) & (x1'=422*slot) + + 1/1024 : (s1'=3) & (x1'=423*slot) + + 1/1024 : (s1'=3) & (x1'=424*slot) + + 1/1024 : (s1'=3) & (x1'=425*slot) + + 1/1024 : (s1'=3) & (x1'=426*slot) + + 1/1024 : (s1'=3) & (x1'=427*slot) + + 1/1024 : (s1'=3) & (x1'=428*slot) + + 1/1024 : (s1'=3) & (x1'=429*slot) + + 1/1024 : (s1'=3) & (x1'=430*slot) + + 1/1024 : (s1'=3) & (x1'=431*slot) + + 1/1024 : (s1'=3) & (x1'=432*slot) + + 1/1024 : (s1'=3) & (x1'=433*slot) + + 1/1024 : (s1'=3) & (x1'=434*slot) + + 1/1024 : (s1'=3) & (x1'=435*slot) + + 1/1024 : (s1'=3) & (x1'=436*slot) + + 1/1024 : (s1'=3) & (x1'=437*slot) + + 1/1024 : (s1'=3) & (x1'=438*slot) + + 1/1024 : (s1'=3) & (x1'=439*slot) + + 1/1024 : (s1'=3) & (x1'=440*slot) + + 1/1024 : (s1'=3) & (x1'=441*slot) + + 1/1024 : (s1'=3) & (x1'=442*slot) + + 1/1024 : (s1'=3) & (x1'=443*slot) + + 1/1024 : (s1'=3) & (x1'=444*slot) + + 1/1024 : (s1'=3) & (x1'=445*slot) + + 1/1024 : (s1'=3) & (x1'=446*slot) + + 1/1024 : (s1'=3) & (x1'=447*slot) + + 1/1024 : (s1'=3) & (x1'=448*slot) + + 1/1024 : (s1'=3) & (x1'=449*slot) + + 1/1024 : (s1'=3) & (x1'=450*slot) + + 1/1024 : (s1'=3) & (x1'=451*slot) + + 1/1024 : (s1'=3) & (x1'=452*slot) + + 1/1024 : (s1'=3) & (x1'=453*slot) + + 1/1024 : (s1'=3) & (x1'=454*slot) + + 1/1024 : (s1'=3) & (x1'=455*slot) + + 1/1024 : (s1'=3) & (x1'=456*slot) + + 1/1024 : (s1'=3) & (x1'=457*slot) + + 1/1024 : (s1'=3) & (x1'=458*slot) + + 1/1024 : (s1'=3) & (x1'=459*slot) + + 1/1024 : (s1'=3) & (x1'=460*slot) + + 1/1024 : (s1'=3) & (x1'=461*slot) + + 1/1024 : (s1'=3) & (x1'=462*slot) + + 1/1024 : (s1'=3) & (x1'=463*slot) + + 1/1024 : (s1'=3) & (x1'=464*slot) + + 1/1024 : (s1'=3) & (x1'=465*slot) + + 1/1024 : (s1'=3) & (x1'=466*slot) + + 1/1024 : (s1'=3) & (x1'=467*slot) + + 1/1024 : (s1'=3) & (x1'=468*slot) + + 1/1024 : (s1'=3) & (x1'=469*slot) + + 1/1024 : (s1'=3) & (x1'=470*slot) + + 1/1024 : (s1'=3) & (x1'=471*slot) + + 1/1024 : (s1'=3) & (x1'=472*slot) + + 1/1024 : (s1'=3) & (x1'=473*slot) + + 1/1024 : (s1'=3) & (x1'=474*slot) + + 1/1024 : (s1'=3) & (x1'=475*slot) + + 1/1024 : (s1'=3) & (x1'=476*slot) + + 1/1024 : (s1'=3) & (x1'=477*slot) + + 1/1024 : (s1'=3) & (x1'=478*slot) + + 1/1024 : (s1'=3) & (x1'=479*slot) + + 1/1024 : (s1'=3) & (x1'=480*slot) + + 1/1024 : (s1'=3) & (x1'=481*slot) + + 1/1024 : (s1'=3) & (x1'=482*slot) + + 1/1024 : (s1'=3) & (x1'=483*slot) + + 1/1024 : (s1'=3) & (x1'=484*slot) + + 1/1024 : (s1'=3) & (x1'=485*slot) + + 1/1024 : (s1'=3) & (x1'=486*slot) + + 1/1024 : (s1'=3) & (x1'=487*slot) + + 1/1024 : (s1'=3) & (x1'=488*slot) + + 1/1024 : (s1'=3) & (x1'=489*slot) + + 1/1024 : (s1'=3) & (x1'=490*slot) + + 1/1024 : (s1'=3) & (x1'=491*slot) + + 1/1024 : (s1'=3) & (x1'=492*slot) + + 1/1024 : (s1'=3) & (x1'=493*slot) + + 1/1024 : (s1'=3) & (x1'=494*slot) + + 1/1024 : (s1'=3) & (x1'=495*slot) + + 1/1024 : (s1'=3) & (x1'=496*slot) + + 1/1024 : (s1'=3) & (x1'=497*slot) + + 1/1024 : (s1'=3) & (x1'=498*slot) + + 1/1024 : (s1'=3) & (x1'=499*slot) + + 1/1024 : (s1'=3) & (x1'=500*slot) + + 1/1024 : (s1'=3) & (x1'=501*slot) + + 1/1024 : (s1'=3) & (x1'=502*slot) + + 1/1024 : (s1'=3) & (x1'=503*slot) + + 1/1024 : (s1'=3) & (x1'=504*slot) + + 1/1024 : (s1'=3) & (x1'=505*slot) + + 1/1024 : (s1'=3) & (x1'=506*slot) + + 1/1024 : (s1'=3) & (x1'=507*slot) + + 1/1024 : (s1'=3) & (x1'=508*slot) + + 1/1024 : (s1'=3) & (x1'=509*slot) + + 1/1024 : (s1'=3) & (x1'=510*slot) + + 1/1024 : (s1'=3) & (x1'=511*slot) + + 1/1024 : (s1'=3) & (x1'=512*slot) + + 1/1024 : (s1'=3) & (x1'=513*slot) + + 1/1024 : (s1'=3) & (x1'=514*slot) + + 1/1024 : (s1'=3) & (x1'=515*slot) + + 1/1024 : (s1'=3) & (x1'=516*slot) + + 1/1024 : (s1'=3) & (x1'=517*slot) + + 1/1024 : (s1'=3) & (x1'=518*slot) + + 1/1024 : (s1'=3) & (x1'=519*slot) + + 1/1024 : (s1'=3) & (x1'=520*slot) + + 1/1024 : (s1'=3) & (x1'=521*slot) + + 1/1024 : (s1'=3) & (x1'=522*slot) + + 1/1024 : (s1'=3) & (x1'=523*slot) + + 1/1024 : (s1'=3) & (x1'=524*slot) + + 1/1024 : (s1'=3) & (x1'=525*slot) + + 1/1024 : (s1'=3) & (x1'=526*slot) + + 1/1024 : (s1'=3) & (x1'=527*slot) + + 1/1024 : (s1'=3) & (x1'=528*slot) + + 1/1024 : (s1'=3) & (x1'=529*slot) + + 1/1024 : (s1'=3) & (x1'=530*slot) + + 1/1024 : (s1'=3) & (x1'=531*slot) + + 1/1024 : (s1'=3) & (x1'=532*slot) + + 1/1024 : (s1'=3) & (x1'=533*slot) + + 1/1024 : (s1'=3) & (x1'=534*slot) + + 1/1024 : (s1'=3) & (x1'=535*slot) + + 1/1024 : (s1'=3) & (x1'=536*slot) + + 1/1024 : (s1'=3) & (x1'=537*slot) + + 1/1024 : (s1'=3) & (x1'=538*slot) + + 1/1024 : (s1'=3) & (x1'=539*slot) + + 1/1024 : (s1'=3) & (x1'=540*slot) + + 1/1024 : (s1'=3) & (x1'=541*slot) + + 1/1024 : (s1'=3) & (x1'=542*slot) + + 1/1024 : (s1'=3) & (x1'=543*slot) + + 1/1024 : (s1'=3) & (x1'=544*slot) + + 1/1024 : (s1'=3) & (x1'=545*slot) + + 1/1024 : (s1'=3) & (x1'=546*slot) + + 1/1024 : (s1'=3) & (x1'=547*slot) + + 1/1024 : (s1'=3) & (x1'=548*slot) + + 1/1024 : (s1'=3) & (x1'=549*slot) + + 1/1024 : (s1'=3) & (x1'=550*slot) + + 1/1024 : (s1'=3) & (x1'=551*slot) + + 1/1024 : (s1'=3) & (x1'=552*slot) + + 1/1024 : (s1'=3) & (x1'=553*slot) + + 1/1024 : (s1'=3) & (x1'=554*slot) + + 1/1024 : (s1'=3) & (x1'=555*slot) + + 1/1024 : (s1'=3) & (x1'=556*slot) + + 1/1024 : (s1'=3) & (x1'=557*slot) + + 1/1024 : (s1'=3) & (x1'=558*slot) + + 1/1024 : (s1'=3) & (x1'=559*slot) + + 1/1024 : (s1'=3) & (x1'=560*slot) + + 1/1024 : (s1'=3) & (x1'=561*slot) + + 1/1024 : (s1'=3) & (x1'=562*slot) + + 1/1024 : (s1'=3) & (x1'=563*slot) + + 1/1024 : (s1'=3) & (x1'=564*slot) + + 1/1024 : (s1'=3) & (x1'=565*slot) + + 1/1024 : (s1'=3) & (x1'=566*slot) + + 1/1024 : (s1'=3) & (x1'=567*slot) + + 1/1024 : (s1'=3) & (x1'=568*slot) + + 1/1024 : (s1'=3) & (x1'=569*slot) + + 1/1024 : (s1'=3) & (x1'=570*slot) + + 1/1024 : (s1'=3) & (x1'=571*slot) + + 1/1024 : (s1'=3) & (x1'=572*slot) + + 1/1024 : (s1'=3) & (x1'=573*slot) + + 1/1024 : (s1'=3) & (x1'=574*slot) + + 1/1024 : (s1'=3) & (x1'=575*slot) + + 1/1024 : (s1'=3) & (x1'=576*slot) + + 1/1024 : (s1'=3) & (x1'=577*slot) + + 1/1024 : (s1'=3) & (x1'=578*slot) + + 1/1024 : (s1'=3) & (x1'=579*slot) + + 1/1024 : (s1'=3) & (x1'=580*slot) + + 1/1024 : (s1'=3) & (x1'=581*slot) + + 1/1024 : (s1'=3) & (x1'=582*slot) + + 1/1024 : (s1'=3) & (x1'=583*slot) + + 1/1024 : (s1'=3) & (x1'=584*slot) + + 1/1024 : (s1'=3) & (x1'=585*slot) + + 1/1024 : (s1'=3) & (x1'=586*slot) + + 1/1024 : (s1'=3) & (x1'=587*slot) + + 1/1024 : (s1'=3) & (x1'=588*slot) + + 1/1024 : (s1'=3) & (x1'=589*slot) + + 1/1024 : (s1'=3) & (x1'=590*slot) + + 1/1024 : (s1'=3) & (x1'=591*slot) + + 1/1024 : (s1'=3) & (x1'=592*slot) + + 1/1024 : (s1'=3) & (x1'=593*slot) + + 1/1024 : (s1'=3) & (x1'=594*slot) + + 1/1024 : (s1'=3) & (x1'=595*slot) + + 1/1024 : (s1'=3) & (x1'=596*slot) + + 1/1024 : (s1'=3) & (x1'=597*slot) + + 1/1024 : (s1'=3) & (x1'=598*slot) + + 1/1024 : (s1'=3) & (x1'=599*slot) + + 1/1024 : (s1'=3) & (x1'=600*slot) + + 1/1024 : (s1'=3) & (x1'=601*slot) + + 1/1024 : (s1'=3) & (x1'=602*slot) + + 1/1024 : (s1'=3) & (x1'=603*slot) + + 1/1024 : (s1'=3) & (x1'=604*slot) + + 1/1024 : (s1'=3) & (x1'=605*slot) + + 1/1024 : (s1'=3) & (x1'=606*slot) + + 1/1024 : (s1'=3) & (x1'=607*slot) + + 1/1024 : (s1'=3) & (x1'=608*slot) + + 1/1024 : (s1'=3) & (x1'=609*slot) + + 1/1024 : (s1'=3) & (x1'=610*slot) + + 1/1024 : (s1'=3) & (x1'=611*slot) + + 1/1024 : (s1'=3) & (x1'=612*slot) + + 1/1024 : (s1'=3) & (x1'=613*slot) + + 1/1024 : (s1'=3) & (x1'=614*slot) + + 1/1024 : (s1'=3) & (x1'=615*slot) + + 1/1024 : (s1'=3) & (x1'=616*slot) + + 1/1024 : (s1'=3) & (x1'=617*slot) + + 1/1024 : (s1'=3) & (x1'=618*slot) + + 1/1024 : (s1'=3) & (x1'=619*slot) + + 1/1024 : (s1'=3) & (x1'=620*slot) + + 1/1024 : (s1'=3) & (x1'=621*slot) + + 1/1024 : (s1'=3) & (x1'=622*slot) + + 1/1024 : (s1'=3) & (x1'=623*slot) + + 1/1024 : (s1'=3) & (x1'=624*slot) + + 1/1024 : (s1'=3) & (x1'=625*slot) + + 1/1024 : (s1'=3) & (x1'=626*slot) + + 1/1024 : (s1'=3) & (x1'=627*slot) + + 1/1024 : (s1'=3) & (x1'=628*slot) + + 1/1024 : (s1'=3) & (x1'=629*slot) + + 1/1024 : (s1'=3) & (x1'=630*slot) + + 1/1024 : (s1'=3) & (x1'=631*slot) + + 1/1024 : (s1'=3) & (x1'=632*slot) + + 1/1024 : (s1'=3) & (x1'=633*slot) + + 1/1024 : (s1'=3) & (x1'=634*slot) + + 1/1024 : (s1'=3) & (x1'=635*slot) + + 1/1024 : (s1'=3) & (x1'=636*slot) + + 1/1024 : (s1'=3) & (x1'=637*slot) + + 1/1024 : (s1'=3) & (x1'=638*slot) + + 1/1024 : (s1'=3) & (x1'=639*slot) + + 1/1024 : (s1'=3) & (x1'=640*slot) + + 1/1024 : (s1'=3) & (x1'=641*slot) + + 1/1024 : (s1'=3) & (x1'=642*slot) + + 1/1024 : (s1'=3) & (x1'=643*slot) + + 1/1024 : (s1'=3) & (x1'=644*slot) + + 1/1024 : (s1'=3) & (x1'=645*slot) + + 1/1024 : (s1'=3) & (x1'=646*slot) + + 1/1024 : (s1'=3) & (x1'=647*slot) + + 1/1024 : (s1'=3) & (x1'=648*slot) + + 1/1024 : (s1'=3) & (x1'=649*slot) + + 1/1024 : (s1'=3) & (x1'=650*slot) + + 1/1024 : (s1'=3) & (x1'=651*slot) + + 1/1024 : (s1'=3) & (x1'=652*slot) + + 1/1024 : (s1'=3) & (x1'=653*slot) + + 1/1024 : (s1'=3) & (x1'=654*slot) + + 1/1024 : (s1'=3) & (x1'=655*slot) + + 1/1024 : (s1'=3) & (x1'=656*slot) + + 1/1024 : (s1'=3) & (x1'=657*slot) + + 1/1024 : (s1'=3) & (x1'=658*slot) + + 1/1024 : (s1'=3) & (x1'=659*slot) + + 1/1024 : (s1'=3) & (x1'=660*slot) + + 1/1024 : (s1'=3) & (x1'=661*slot) + + 1/1024 : (s1'=3) & (x1'=662*slot) + + 1/1024 : (s1'=3) & (x1'=663*slot) + + 1/1024 : (s1'=3) & (x1'=664*slot) + + 1/1024 : (s1'=3) & (x1'=665*slot) + + 1/1024 : (s1'=3) & (x1'=666*slot) + + 1/1024 : (s1'=3) & (x1'=667*slot) + + 1/1024 : (s1'=3) & (x1'=668*slot) + + 1/1024 : (s1'=3) & (x1'=669*slot) + + 1/1024 : (s1'=3) & (x1'=670*slot) + + 1/1024 : (s1'=3) & (x1'=671*slot) + + 1/1024 : (s1'=3) & (x1'=672*slot) + + 1/1024 : (s1'=3) & (x1'=673*slot) + + 1/1024 : (s1'=3) & (x1'=674*slot) + + 1/1024 : (s1'=3) & (x1'=675*slot) + + 1/1024 : (s1'=3) & (x1'=676*slot) + + 1/1024 : (s1'=3) & (x1'=677*slot) + + 1/1024 : (s1'=3) & (x1'=678*slot) + + 1/1024 : (s1'=3) & (x1'=679*slot) + + 1/1024 : (s1'=3) & (x1'=680*slot) + + 1/1024 : (s1'=3) & (x1'=681*slot) + + 1/1024 : (s1'=3) & (x1'=682*slot) + + 1/1024 : (s1'=3) & (x1'=683*slot) + + 1/1024 : (s1'=3) & (x1'=684*slot) + + 1/1024 : (s1'=3) & (x1'=685*slot) + + 1/1024 : (s1'=3) & (x1'=686*slot) + + 1/1024 : (s1'=3) & (x1'=687*slot) + + 1/1024 : (s1'=3) & (x1'=688*slot) + + 1/1024 : (s1'=3) & (x1'=689*slot) + + 1/1024 : (s1'=3) & (x1'=690*slot) + + 1/1024 : (s1'=3) & (x1'=691*slot) + + 1/1024 : (s1'=3) & (x1'=692*slot) + + 1/1024 : (s1'=3) & (x1'=693*slot) + + 1/1024 : (s1'=3) & (x1'=694*slot) + + 1/1024 : (s1'=3) & (x1'=695*slot) + + 1/1024 : (s1'=3) & (x1'=696*slot) + + 1/1024 : (s1'=3) & (x1'=697*slot) + + 1/1024 : (s1'=3) & (x1'=698*slot) + + 1/1024 : (s1'=3) & (x1'=699*slot) + + 1/1024 : (s1'=3) & (x1'=700*slot) + + 1/1024 : (s1'=3) & (x1'=701*slot) + + 1/1024 : (s1'=3) & (x1'=702*slot) + + 1/1024 : (s1'=3) & (x1'=703*slot) + + 1/1024 : (s1'=3) & (x1'=704*slot) + + 1/1024 : (s1'=3) & (x1'=705*slot) + + 1/1024 : (s1'=3) & (x1'=706*slot) + + 1/1024 : (s1'=3) & (x1'=707*slot) + + 1/1024 : (s1'=3) & (x1'=708*slot) + + 1/1024 : (s1'=3) & (x1'=709*slot) + + 1/1024 : (s1'=3) & (x1'=710*slot) + + 1/1024 : (s1'=3) & (x1'=711*slot) + + 1/1024 : (s1'=3) & (x1'=712*slot) + + 1/1024 : (s1'=3) & (x1'=713*slot) + + 1/1024 : (s1'=3) & (x1'=714*slot) + + 1/1024 : (s1'=3) & (x1'=715*slot) + + 1/1024 : (s1'=3) & (x1'=716*slot) + + 1/1024 : (s1'=3) & (x1'=717*slot) + + 1/1024 : (s1'=3) & (x1'=718*slot) + + 1/1024 : (s1'=3) & (x1'=719*slot) + + 1/1024 : (s1'=3) & (x1'=720*slot) + + 1/1024 : (s1'=3) & (x1'=721*slot) + + 1/1024 : (s1'=3) & (x1'=722*slot) + + 1/1024 : (s1'=3) & (x1'=723*slot) + + 1/1024 : (s1'=3) & (x1'=724*slot) + + 1/1024 : (s1'=3) & (x1'=725*slot) + + 1/1024 : (s1'=3) & (x1'=726*slot) + + 1/1024 : (s1'=3) & (x1'=727*slot) + + 1/1024 : (s1'=3) & (x1'=728*slot) + + 1/1024 : (s1'=3) & (x1'=729*slot) + + 1/1024 : (s1'=3) & (x1'=730*slot) + + 1/1024 : (s1'=3) & (x1'=731*slot) + + 1/1024 : (s1'=3) & (x1'=732*slot) + + 1/1024 : (s1'=3) & (x1'=733*slot) + + 1/1024 : (s1'=3) & (x1'=734*slot) + + 1/1024 : (s1'=3) & (x1'=735*slot) + + 1/1024 : (s1'=3) & (x1'=736*slot) + + 1/1024 : (s1'=3) & (x1'=737*slot) + + 1/1024 : (s1'=3) & (x1'=738*slot) + + 1/1024 : (s1'=3) & (x1'=739*slot) + + 1/1024 : (s1'=3) & (x1'=740*slot) + + 1/1024 : (s1'=3) & (x1'=741*slot) + + 1/1024 : (s1'=3) & (x1'=742*slot) + + 1/1024 : (s1'=3) & (x1'=743*slot) + + 1/1024 : (s1'=3) & (x1'=744*slot) + + 1/1024 : (s1'=3) & (x1'=745*slot) + + 1/1024 : (s1'=3) & (x1'=746*slot) + + 1/1024 : (s1'=3) & (x1'=747*slot) + + 1/1024 : (s1'=3) & (x1'=748*slot) + + 1/1024 : (s1'=3) & (x1'=749*slot) + + 1/1024 : (s1'=3) & (x1'=750*slot) + + 1/1024 : (s1'=3) & (x1'=751*slot) + + 1/1024 : (s1'=3) & (x1'=752*slot) + + 1/1024 : (s1'=3) & (x1'=753*slot) + + 1/1024 : (s1'=3) & (x1'=754*slot) + + 1/1024 : (s1'=3) & (x1'=755*slot) + + 1/1024 : (s1'=3) & (x1'=756*slot) + + 1/1024 : (s1'=3) & (x1'=757*slot) + + 1/1024 : (s1'=3) & (x1'=758*slot) + + 1/1024 : (s1'=3) & (x1'=759*slot) + + 1/1024 : (s1'=3) & (x1'=760*slot) + + 1/1024 : (s1'=3) & (x1'=761*slot) + + 1/1024 : (s1'=3) & (x1'=762*slot) + + 1/1024 : (s1'=3) & (x1'=763*slot) + + 1/1024 : (s1'=3) & (x1'=764*slot) + + 1/1024 : (s1'=3) & (x1'=765*slot) + + 1/1024 : (s1'=3) & (x1'=766*slot) + + 1/1024 : (s1'=3) & (x1'=767*slot) + + 1/1024 : (s1'=3) & (x1'=768*slot) + + 1/1024 : (s1'=3) & (x1'=769*slot) + + 1/1024 : (s1'=3) & (x1'=770*slot) + + 1/1024 : (s1'=3) & (x1'=771*slot) + + 1/1024 : (s1'=3) & (x1'=772*slot) + + 1/1024 : (s1'=3) & (x1'=773*slot) + + 1/1024 : (s1'=3) & (x1'=774*slot) + + 1/1024 : (s1'=3) & (x1'=775*slot) + + 1/1024 : (s1'=3) & (x1'=776*slot) + + 1/1024 : (s1'=3) & (x1'=777*slot) + + 1/1024 : (s1'=3) & (x1'=778*slot) + + 1/1024 : (s1'=3) & (x1'=779*slot) + + 1/1024 : (s1'=3) & (x1'=780*slot) + + 1/1024 : (s1'=3) & (x1'=781*slot) + + 1/1024 : (s1'=3) & (x1'=782*slot) + + 1/1024 : (s1'=3) & (x1'=783*slot) + + 1/1024 : (s1'=3) & (x1'=784*slot) + + 1/1024 : (s1'=3) & (x1'=785*slot) + + 1/1024 : (s1'=3) & (x1'=786*slot) + + 1/1024 : (s1'=3) & (x1'=787*slot) + + 1/1024 : (s1'=3) & (x1'=788*slot) + + 1/1024 : (s1'=3) & (x1'=789*slot) + + 1/1024 : (s1'=3) & (x1'=790*slot) + + 1/1024 : (s1'=3) & (x1'=791*slot) + + 1/1024 : (s1'=3) & (x1'=792*slot) + + 1/1024 : (s1'=3) & (x1'=793*slot) + + 1/1024 : (s1'=3) & (x1'=794*slot) + + 1/1024 : (s1'=3) & (x1'=795*slot) + + 1/1024 : (s1'=3) & (x1'=796*slot) + + 1/1024 : (s1'=3) & (x1'=797*slot) + + 1/1024 : (s1'=3) & (x1'=798*slot) + + 1/1024 : (s1'=3) & (x1'=799*slot) + + 1/1024 : (s1'=3) & (x1'=800*slot) + + 1/1024 : (s1'=3) & (x1'=801*slot) + + 1/1024 : (s1'=3) & (x1'=802*slot) + + 1/1024 : (s1'=3) & (x1'=803*slot) + + 1/1024 : (s1'=3) & (x1'=804*slot) + + 1/1024 : (s1'=3) & (x1'=805*slot) + + 1/1024 : (s1'=3) & (x1'=806*slot) + + 1/1024 : (s1'=3) & (x1'=807*slot) + + 1/1024 : (s1'=3) & (x1'=808*slot) + + 1/1024 : (s1'=3) & (x1'=809*slot) + + 1/1024 : (s1'=3) & (x1'=810*slot) + + 1/1024 : (s1'=3) & (x1'=811*slot) + + 1/1024 : (s1'=3) & (x1'=812*slot) + + 1/1024 : (s1'=3) & (x1'=813*slot) + + 1/1024 : (s1'=3) & (x1'=814*slot) + + 1/1024 : (s1'=3) & (x1'=815*slot) + + 1/1024 : (s1'=3) & (x1'=816*slot) + + 1/1024 : (s1'=3) & (x1'=817*slot) + + 1/1024 : (s1'=3) & (x1'=818*slot) + + 1/1024 : (s1'=3) & (x1'=819*slot) + + 1/1024 : (s1'=3) & (x1'=820*slot) + + 1/1024 : (s1'=3) & (x1'=821*slot) + + 1/1024 : (s1'=3) & (x1'=822*slot) + + 1/1024 : (s1'=3) & (x1'=823*slot) + + 1/1024 : (s1'=3) & (x1'=824*slot) + + 1/1024 : (s1'=3) & (x1'=825*slot) + + 1/1024 : (s1'=3) & (x1'=826*slot) + + 1/1024 : (s1'=3) & (x1'=827*slot) + + 1/1024 : (s1'=3) & (x1'=828*slot) + + 1/1024 : (s1'=3) & (x1'=829*slot) + + 1/1024 : (s1'=3) & (x1'=830*slot) + + 1/1024 : (s1'=3) & (x1'=831*slot) + + 1/1024 : (s1'=3) & (x1'=832*slot) + + 1/1024 : (s1'=3) & (x1'=833*slot) + + 1/1024 : (s1'=3) & (x1'=834*slot) + + 1/1024 : (s1'=3) & (x1'=835*slot) + + 1/1024 : (s1'=3) & (x1'=836*slot) + + 1/1024 : (s1'=3) & (x1'=837*slot) + + 1/1024 : (s1'=3) & (x1'=838*slot) + + 1/1024 : (s1'=3) & (x1'=839*slot) + + 1/1024 : (s1'=3) & (x1'=840*slot) + + 1/1024 : (s1'=3) & (x1'=841*slot) + + 1/1024 : (s1'=3) & (x1'=842*slot) + + 1/1024 : (s1'=3) & (x1'=843*slot) + + 1/1024 : (s1'=3) & (x1'=844*slot) + + 1/1024 : (s1'=3) & (x1'=845*slot) + + 1/1024 : (s1'=3) & (x1'=846*slot) + + 1/1024 : (s1'=3) & (x1'=847*slot) + + 1/1024 : (s1'=3) & (x1'=848*slot) + + 1/1024 : (s1'=3) & (x1'=849*slot) + + 1/1024 : (s1'=3) & (x1'=850*slot) + + 1/1024 : (s1'=3) & (x1'=851*slot) + + 1/1024 : (s1'=3) & (x1'=852*slot) + + 1/1024 : (s1'=3) & (x1'=853*slot) + + 1/1024 : (s1'=3) & (x1'=854*slot) + + 1/1024 : (s1'=3) & (x1'=855*slot) + + 1/1024 : (s1'=3) & (x1'=856*slot) + + 1/1024 : (s1'=3) & (x1'=857*slot) + + 1/1024 : (s1'=3) & (x1'=858*slot) + + 1/1024 : (s1'=3) & (x1'=859*slot) + + 1/1024 : (s1'=3) & (x1'=860*slot) + + 1/1024 : (s1'=3) & (x1'=861*slot) + + 1/1024 : (s1'=3) & (x1'=862*slot) + + 1/1024 : (s1'=3) & (x1'=863*slot) + + 1/1024 : (s1'=3) & (x1'=864*slot) + + 1/1024 : (s1'=3) & (x1'=865*slot) + + 1/1024 : (s1'=3) & (x1'=866*slot) + + 1/1024 : (s1'=3) & (x1'=867*slot) + + 1/1024 : (s1'=3) & (x1'=868*slot) + + 1/1024 : (s1'=3) & (x1'=869*slot) + + 1/1024 : (s1'=3) & (x1'=870*slot) + + 1/1024 : (s1'=3) & (x1'=871*slot) + + 1/1024 : (s1'=3) & (x1'=872*slot) + + 1/1024 : (s1'=3) & (x1'=873*slot) + + 1/1024 : (s1'=3) & (x1'=874*slot) + + 1/1024 : (s1'=3) & (x1'=875*slot) + + 1/1024 : (s1'=3) & (x1'=876*slot) + + 1/1024 : (s1'=3) & (x1'=877*slot) + + 1/1024 : (s1'=3) & (x1'=878*slot) + + 1/1024 : (s1'=3) & (x1'=879*slot) + + 1/1024 : (s1'=3) & (x1'=880*slot) + + 1/1024 : (s1'=3) & (x1'=881*slot) + + 1/1024 : (s1'=3) & (x1'=882*slot) + + 1/1024 : (s1'=3) & (x1'=883*slot) + + 1/1024 : (s1'=3) & (x1'=884*slot) + + 1/1024 : (s1'=3) & (x1'=885*slot) + + 1/1024 : (s1'=3) & (x1'=886*slot) + + 1/1024 : (s1'=3) & (x1'=887*slot) + + 1/1024 : (s1'=3) & (x1'=888*slot) + + 1/1024 : (s1'=3) & (x1'=889*slot) + + 1/1024 : (s1'=3) & (x1'=890*slot) + + 1/1024 : (s1'=3) & (x1'=891*slot) + + 1/1024 : (s1'=3) & (x1'=892*slot) + + 1/1024 : (s1'=3) & (x1'=893*slot) + + 1/1024 : (s1'=3) & (x1'=894*slot) + + 1/1024 : (s1'=3) & (x1'=895*slot) + + 1/1024 : (s1'=3) & (x1'=896*slot) + + 1/1024 : (s1'=3) & (x1'=897*slot) + + 1/1024 : (s1'=3) & (x1'=898*slot) + + 1/1024 : (s1'=3) & (x1'=899*slot) + + 1/1024 : (s1'=3) & (x1'=900*slot) + + 1/1024 : (s1'=3) & (x1'=901*slot) + + 1/1024 : (s1'=3) & (x1'=902*slot) + + 1/1024 : (s1'=3) & (x1'=903*slot) + + 1/1024 : (s1'=3) & (x1'=904*slot) + + 1/1024 : (s1'=3) & (x1'=905*slot) + + 1/1024 : (s1'=3) & (x1'=906*slot) + + 1/1024 : (s1'=3) & (x1'=907*slot) + + 1/1024 : (s1'=3) & (x1'=908*slot) + + 1/1024 : (s1'=3) & (x1'=909*slot) + + 1/1024 : (s1'=3) & (x1'=910*slot) + + 1/1024 : (s1'=3) & (x1'=911*slot) + + 1/1024 : (s1'=3) & (x1'=912*slot) + + 1/1024 : (s1'=3) & (x1'=913*slot) + + 1/1024 : (s1'=3) & (x1'=914*slot) + + 1/1024 : (s1'=3) & (x1'=915*slot) + + 1/1024 : (s1'=3) & (x1'=916*slot) + + 1/1024 : (s1'=3) & (x1'=917*slot) + + 1/1024 : (s1'=3) & (x1'=918*slot) + + 1/1024 : (s1'=3) & (x1'=919*slot) + + 1/1024 : (s1'=3) & (x1'=920*slot) + + 1/1024 : (s1'=3) & (x1'=921*slot) + + 1/1024 : (s1'=3) & (x1'=922*slot) + + 1/1024 : (s1'=3) & (x1'=923*slot) + + 1/1024 : (s1'=3) & (x1'=924*slot) + + 1/1024 : (s1'=3) & (x1'=925*slot) + + 1/1024 : (s1'=3) & (x1'=926*slot) + + 1/1024 : (s1'=3) & (x1'=927*slot) + + 1/1024 : (s1'=3) & (x1'=928*slot) + + 1/1024 : (s1'=3) & (x1'=929*slot) + + 1/1024 : (s1'=3) & (x1'=930*slot) + + 1/1024 : (s1'=3) & (x1'=931*slot) + + 1/1024 : (s1'=3) & (x1'=932*slot) + + 1/1024 : (s1'=3) & (x1'=933*slot) + + 1/1024 : (s1'=3) & (x1'=934*slot) + + 1/1024 : (s1'=3) & (x1'=935*slot) + + 1/1024 : (s1'=3) & (x1'=936*slot) + + 1/1024 : (s1'=3) & (x1'=937*slot) + + 1/1024 : (s1'=3) & (x1'=938*slot) + + 1/1024 : (s1'=3) & (x1'=939*slot) + + 1/1024 : (s1'=3) & (x1'=940*slot) + + 1/1024 : (s1'=3) & (x1'=941*slot) + + 1/1024 : (s1'=3) & (x1'=942*slot) + + 1/1024 : (s1'=3) & (x1'=943*slot) + + 1/1024 : (s1'=3) & (x1'=944*slot) + + 1/1024 : (s1'=3) & (x1'=945*slot) + + 1/1024 : (s1'=3) & (x1'=946*slot) + + 1/1024 : (s1'=3) & (x1'=947*slot) + + 1/1024 : (s1'=3) & (x1'=948*slot) + + 1/1024 : (s1'=3) & (x1'=949*slot) + + 1/1024 : (s1'=3) & (x1'=950*slot) + + 1/1024 : (s1'=3) & (x1'=951*slot) + + 1/1024 : (s1'=3) & (x1'=952*slot) + + 1/1024 : (s1'=3) & (x1'=953*slot) + + 1/1024 : (s1'=3) & (x1'=954*slot) + + 1/1024 : (s1'=3) & (x1'=955*slot) + + 1/1024 : (s1'=3) & (x1'=956*slot) + + 1/1024 : (s1'=3) & (x1'=957*slot) + + 1/1024 : (s1'=3) & (x1'=958*slot) + + 1/1024 : (s1'=3) & (x1'=959*slot) + + 1/1024 : (s1'=3) & (x1'=960*slot) + + 1/1024 : (s1'=3) & (x1'=961*slot) + + 1/1024 : (s1'=3) & (x1'=962*slot) + + 1/1024 : (s1'=3) & (x1'=963*slot) + + 1/1024 : (s1'=3) & (x1'=964*slot) + + 1/1024 : (s1'=3) & (x1'=965*slot) + + 1/1024 : (s1'=3) & (x1'=966*slot) + + 1/1024 : (s1'=3) & (x1'=967*slot) + + 1/1024 : (s1'=3) & (x1'=968*slot) + + 1/1024 : (s1'=3) & (x1'=969*slot) + + 1/1024 : (s1'=3) & (x1'=970*slot) + + 1/1024 : (s1'=3) & (x1'=971*slot) + + 1/1024 : (s1'=3) & (x1'=972*slot) + + 1/1024 : (s1'=3) & (x1'=973*slot) + + 1/1024 : (s1'=3) & (x1'=974*slot) + + 1/1024 : (s1'=3) & (x1'=975*slot) + + 1/1024 : (s1'=3) & (x1'=976*slot) + + 1/1024 : (s1'=3) & (x1'=977*slot) + + 1/1024 : (s1'=3) & (x1'=978*slot) + + 1/1024 : (s1'=3) & (x1'=979*slot) + + 1/1024 : (s1'=3) & (x1'=980*slot) + + 1/1024 : (s1'=3) & (x1'=981*slot) + + 1/1024 : (s1'=3) & (x1'=982*slot) + + 1/1024 : (s1'=3) & (x1'=983*slot) + + 1/1024 : (s1'=3) & (x1'=984*slot) + + 1/1024 : (s1'=3) & (x1'=985*slot) + + 1/1024 : (s1'=3) & (x1'=986*slot) + + 1/1024 : (s1'=3) & (x1'=987*slot) + + 1/1024 : (s1'=3) & (x1'=988*slot) + + 1/1024 : (s1'=3) & (x1'=989*slot) + + 1/1024 : (s1'=3) & (x1'=990*slot) + + 1/1024 : (s1'=3) & (x1'=991*slot) + + 1/1024 : (s1'=3) & (x1'=992*slot) + + 1/1024 : (s1'=3) & (x1'=993*slot) + + 1/1024 : (s1'=3) & (x1'=994*slot) + + 1/1024 : (s1'=3) & (x1'=995*slot) + + 1/1024 : (s1'=3) & (x1'=996*slot) + + 1/1024 : (s1'=3) & (x1'=997*slot) + + 1/1024 : (s1'=3) & (x1'=998*slot) + + 1/1024 : (s1'=3) & (x1'=999*slot) + + 1/1024 : (s1'=3) & (x1'=1000*slot) + + 1/1024 : (s1'=3) & (x1'=1001*slot) + + 1/1024 : (s1'=3) & (x1'=1002*slot) + + 1/1024 : (s1'=3) & (x1'=1003*slot) + + 1/1024 : (s1'=3) & (x1'=1004*slot) + + 1/1024 : (s1'=3) & (x1'=1005*slot) + + 1/1024 : (s1'=3) & (x1'=1006*slot) + + 1/1024 : (s1'=3) & (x1'=1007*slot) + + 1/1024 : (s1'=3) & (x1'=1008*slot) + + 1/1024 : (s1'=3) & (x1'=1009*slot) + + 1/1024 : (s1'=3) & (x1'=1010*slot) + + 1/1024 : (s1'=3) & (x1'=1011*slot) + + 1/1024 : (s1'=3) & (x1'=1012*slot) + + 1/1024 : (s1'=3) & (x1'=1013*slot) + + 1/1024 : (s1'=3) & (x1'=1014*slot) + + 1/1024 : (s1'=3) & (x1'=1015*slot) + + 1/1024 : (s1'=3) & (x1'=1016*slot) + + 1/1024 : (s1'=3) & (x1'=1017*slot) + + 1/1024 : (s1'=3) & (x1'=1018*slot) + + 1/1024 : (s1'=3) & (x1'=1019*slot) + + 1/1024 : (s1'=3) & (x1'=1020*slot) + + 1/1024 : (s1'=3) & (x1'=1021*slot) + + 1/1024 : (s1'=3) & (x1'=1022*slot) + + 1/1024 : (s1'=3) & (x1'=1023*slot); + + // wait until backoff counter reaches 0 then send again + [send1] s1=3 & x1=pow(2,cd1)*slot -> (s1'=1) & (x1'=0); // finished backoff (bus appears free) + [csend1] s1=3 & x1=pow(2,cd1)*slot -> (s1'=1) & (x1'=0); // finished backoff (bus appears free) + [busy1] s1=3 & x1=pow(2,cd1)*slot -> (s1'=2) & (x1'=0) & (cd1'=min(bmax,cd1+1)); // finished backoff (bus busy) + + // once finished loop (wait for other station to finish) + [done] s1=4 -> (s1'=4); + +endmodule + +// construct station 2 through renaming +module station2=station1[s1=s2,x1=x2,cd1=cd2,send1=send2,csend1=csend2,busy1=busy2,end1=end2] endmodule + +//---------------------------------------------------------------------------------------------------------------------------- +// REWARD STRUCTURES + +// time +rewards "time" + true : 1; +endrewards + +// number of collisions +rewards "collisions" + [csend1] true : 1; + [csend2] true : 1; +endrewards + +//---------------------------------------------------------------------------------------------------------------------------- +// LABELS + +label "s1_done" = s1=4; +label "s2_done" = s2=4; +label "done" = s1=4 & s2=4; +label "cmax" = c=K; diff --git a/prism-examples/pta/csma/full/eventually.pctl b/prism-examples/pta/csma/full/eventually.pctl new file mode 100644 index 00000000..3092cbc4 --- /dev/null +++ b/prism-examples/pta/csma/full/eventually.pctl @@ -0,0 +1,5 @@ +Pmin=?[ F "s1_done"] +Pmin=?[ F "s2_done"] +Pmin=?[ F "done" ] +Pmin=?[ F cd1=2 ] +Pmax=?[ F cd1=2 ] diff --git a/prism-examples/pta/csma/full/models b/prism-examples/pta/csma/full/models new file mode 100644 index 00000000..c194811e --- /dev/null +++ b/prism-examples/pta/csma/full/models @@ -0,0 +1,5 @@ +csma.nm -const bmax=2,K=4 +csma.nm -const bmax=2,K=8 +csma.nm -const bmax=4,K=4 +csma.nm -const bmax=4,K=8 + diff --git a/prism-examples/pta/csma/full/props b/prism-examples/pta/csma/full/props new file mode 100644 index 00000000..bdc89fa6 --- /dev/null +++ b/prism-examples/pta/csma/full/props @@ -0,0 +1 @@ +collisions.pctl diff --git a/prism-examples/pta/csma/full/time.pctl b/prism-examples/pta/csma/full/time.pctl new file mode 100644 index 00000000..38cfc452 --- /dev/null +++ b/prism-examples/pta/csma/full/time.pctl @@ -0,0 +1,2 @@ +R{"time"}min=? [ F "done" ] + diff --git a/prism-examples/pta/firewire/abst/args b/prism-examples/pta/firewire/abst/args new file mode 100644 index 00000000..9d79838f --- /dev/null +++ b/prism-examples/pta/firewire/abst/args @@ -0,0 +1 @@ +-aroptions refine=all,nopre diff --git a/prism-examples/pta/firewire/abst/auto b/prism-examples/pta/firewire/abst/auto new file mode 100755 index 00000000..486e3fb7 --- /dev/null +++ b/prism-examples/pta/firewire/abst/auto @@ -0,0 +1,9 @@ +#!/bin/csh + +prism firewire.nm eventually.pctl -const delay=360 -aroptions nopre,refine=all,opt + +prism firewire.nm deadline.pctl -const delay=360,T=5000 -aroptions nopre,refine=all,opt +prism firewire.nm deadline.pctl -const delay=360,T=10000 -aroptions nopre,refine=all,opt +prism firewire.nm deadline.pctl -const delay=360,T=20000 -aroptions nopre,refine=all,opt + +#prism firewire.nm time.pctl -const delay=360 -aroptions nopre,refine=all,opt diff --git a/prism-examples/pta/firewire/abst/deadline-max.pctl b/prism-examples/pta/firewire/abst/deadline-max.pctl new file mode 100644 index 00000000..115754ec --- /dev/null +++ b/prism-examples/pta/firewire/abst/deadline-max.pctl @@ -0,0 +1,3 @@ +// Minimum probability that a leader has been elected by deadline T +Pmax=? [ F "done_after" ] + diff --git a/prism-examples/pta/firewire/abst/deadline.pctl b/prism-examples/pta/firewire/abst/deadline.pctl new file mode 100644 index 00000000..70823f35 --- /dev/null +++ b/prism-examples/pta/firewire/abst/deadline.pctl @@ -0,0 +1,5 @@ +const int T; + +// Minimum probability that a leader has been elected by deadline T +Pmin=? [ F<=T "done" ] + diff --git a/prism-examples/pta/firewire/abst/eventually.pctl b/prism-examples/pta/firewire/abst/eventually.pctl new file mode 100644 index 00000000..e43a1887 --- /dev/null +++ b/prism-examples/pta/firewire/abst/eventually.pctl @@ -0,0 +1,3 @@ +// Minimum probability that a leader is eventually elected +Pmin=? [ F "done" ] + diff --git a/prism-examples/pta/firewire/abst/firewire-digital.nm b/prism-examples/pta/firewire/abst/firewire-digital.nm new file mode 100644 index 00000000..de55bbe9 --- /dev/null +++ b/prism-examples/pta/firewire/abst/firewire-digital.nm @@ -0,0 +1,74 @@ +// discrete version of abstract firewire protocol +// gxn 23/05/2001 + +nondeterministic + +// wire delay +const int delay; + +// probability of choosing fast and slow +const double fast; +const double slow = 1-fast; + +// maximal constant +const int kx = 167; + +module abstract_firewire + + // clock + x : [0..kx+1]; + + // local state + s : [0..9]; + // 0 -start_start + // 1 -fast_start + // 2 -start_fast + // 3 -start_slow + // 4 -slow_start + // 5 -fast_fast + // 6 -fast_slow + // 7 -slow_fast + // 8 -slow_slow + // 9 -done + + // initial state + [time] s=0 & x (x'=min(x+1,kx+1)); + [round] s=0 -> fast : (s'=1) + slow : (s'=4); + [round] s=0 -> fast : (s'=2) + slow : (s'=3); + // fast_start + [time] s=1 & x (x'=min(x+1,kx+1)); + [] s=1 -> fast : (s'=5) & (x'=0) + slow : (s'=6) & (x'=0); + // start_fast + [time] s=2 & x (x'=min(x+1,kx+1)); + [] s=2 -> fast : (s'=5) & (x'=0) + slow : (s'=7) & (x'=0); + // start_slow + [time] s=3 & x (x'=min(x+1,kx+1)); + [] s=3 -> fast : (s'=6) & (x'=0) + slow : (s'=8) & (x'=0); + // slow_start + [time] s=4 & x (x'=min(x+1,kx+1)); + [] s=4 -> fast : (s'=7) & (x'=0) + slow : (s'=8) & (x'=0); + // fast_fast + [time] s=5 & (x<85) -> (x'=min(x+1,kx+1)); + [] s=5 & (x>=76) -> (s'=0) & (x'=0); + [] s=5 & (x>=76-delay) -> (s'=9) & (x'=0); + // fast_slow + [time] s=6 & x<167 -> (x'=min(x+1,kx+1)); + [] s=6 & x>=159-delay -> (s'=9) & (x'=0); + // slow_fast + [time] s=7 & x<167 -> (x'=min(x+1,kx+1)); + [] s=7 & x>=159-delay -> (s'=9) & (x'=0); + // slow_slow + [time] s=8 & x<167 -> (x'=min(x+1,kx+1)); + [] s=8 & x>=159 -> (s'=0) & (x'=0); + [] s=8 & x>=159-delay -> (s'=9) & (x'=0); + // done + [] s=9 -> (s'=s); + +endmodule + +// labels +label "done" = (s=9); + +rewards + [time] true : 1; +endrewards diff --git a/prism-examples/pta/firewire/abst/firewire-max.nm b/prism-examples/pta/firewire/abst/firewire-max.nm new file mode 100644 index 00000000..70d8a1fc --- /dev/null +++ b/prism-examples/pta/firewire/abst/firewire-max.nm @@ -0,0 +1,82 @@ +// Abstract model of Firewire protocol (PTA model) +// dxp/gxn 08/07/09 + +pta + +// maximum and minimum delays +// fast +const int rc_fast_max = 850; +const int rc_fast_min = 760; +// slow +const int rc_slow_max = 1670; +const int rc_slow_min = 1590; +// delay caused by the wire length +const int delay; +// probability of choosing fast and slow +const double fast = 0.5; +const double slow = 1-fast; +const int T; + +module abstract_firewire + + // clock + x : clock; + z : clock; + // local state + s : [0..9]; + // 0 - start_start + // 1 - fast_start + // 2 - start_fast + // 3 - start_slow + // 4 - slow_start + // 5 - fast_fast + // 6 - fast_slow + // 7 - slow_fast + // 8 - slow_slow + // 9 - done + + // clock invariant + invariant + (s=0 => x<=delay) & + (s=1 => x<=delay) & + (s=2 => x<=delay) & + (s=3 => x<=delay) & + (s=4 => x<=delay) & + (s=5 => x<=rc_fast_max) & + (s=6 => x<=rc_slow_max) & + (s=7 => x<=rc_slow_max) & + (s=8 => x<=rc_slow_max) & + (s=9 => x<=0) + endinvariant + + // start_start (initial state) + [] s=0 -> fast : (s'=1) + slow : (s'=4); + [] s=0 -> fast : (s'=2) + slow : (s'=3); + // fast_start + [] s=1 -> fast : (s'=5) & (x'=0) + slow : (s'=6) & (x'=0); + // start_fast + [] s=2 -> fast : (s'=5) & (x'=0) + slow : (s'=7) & (x'=0); + // start_slow + [] s=3 -> fast : (s'=6) & (x'=0) + slow : (s'=8) & (x'=0); + // slow_start + [] s=4 -> fast : (s'=7) & (x'=0) + slow : (s'=8) & (x'=0); + // fast_fast + [] s=5 & (x>=rc_fast_min) -> (s'=0) & (x'=0); + [] s=5 & (x>=rc_fast_min-delay) -> (s'=9) & (x'=0); + // fast_slow + [] s=6 & x>=rc_slow_min-delay -> (s'=9) & (x'=0); + // slow_fast + [] s=7 & x>=rc_slow_min-delay -> (s'=9) & (x'=0); + // slow_slow + [] s=8 & x>=rc_slow_min -> (s'=0) & (x'=0); + [] s=8 & x>=rc_slow_min-delay -> (s'=9) & (x'=0); + // done + [] s=9 & z>=T -> (s'=10); + [] s=9 & z (s'=11); + [] s>9 -> true; + +endmodule + +// labels +label "done_after" = (s=10); + diff --git a/prism-examples/pta/firewire/abst/firewire.nm b/prism-examples/pta/firewire/abst/firewire.nm new file mode 100644 index 00000000..7da608a9 --- /dev/null +++ b/prism-examples/pta/firewire/abst/firewire.nm @@ -0,0 +1,84 @@ +// Abstract model of Firewire protocol (PTA model) +// dxp/gxn 08/07/09 + +pta + +// maximum and minimum delays +// fast +const int rc_fast_max = 850; +const int rc_fast_min = 760; +// slow +const int rc_slow_max = 1670; +const int rc_slow_min = 1590; +// delay caused by the wire length +const int delay; +// probability of choosing fast and slow +const double fast = 0.5; +const double slow = 1-fast; + +module abstract_firewire + + // clock + x : clock; + // local state + s : [0..9]; + // 0 - start_start + // 1 - fast_start + // 2 - start_fast + // 3 - start_slow + // 4 - slow_start + // 5 - fast_fast + // 6 - fast_slow + // 7 - slow_fast + // 8 - slow_slow + // 9 - done + + // clock invariant + invariant + (s=0 => x<=delay) & + (s=1 => x<=delay) & + (s=2 => x<=delay) & + (s=3 => x<=delay) & + (s=4 => x<=delay) & + (s=5 => x<=rc_fast_max) & + (s=6 => x<=rc_slow_max) & + (s=7 => x<=rc_slow_max) & + (s=8 => x<=rc_slow_max) & + (s=9 => x<=0) + endinvariant + + // start_start (initial state) + [] s=0 -> fast : (s'=1) + slow : (s'=4); + [] s=0 -> fast : (s'=2) + slow : (s'=3); + // fast_start + [] s=1 -> fast : (s'=5) & (x'=0) + slow : (s'=6) & (x'=0); + // start_fast + [] s=2 -> fast : (s'=5) & (x'=0) + slow : (s'=7) & (x'=0); + // start_slow + [] s=3 -> fast : (s'=6) & (x'=0) + slow : (s'=8) & (x'=0); + // slow_start + [] s=4 -> fast : (s'=7) & (x'=0) + slow : (s'=8) & (x'=0); + // fast_fast + [] s=5 & (x>=rc_fast_min) -> (s'=0) & (x'=0); + [] s=5 & (x>=rc_fast_min-delay) -> (s'=9) & (x'=0); + // fast_slow + [] s=6 & x>=rc_slow_min-delay -> (s'=9) & (x'=0); + // slow_fast + [] s=7 & x>=rc_slow_min-delay -> (s'=9) & (x'=0); + // slow_slow + [] s=8 & x>=rc_slow_min -> (s'=0) & (x'=0); + [] s=8 & x>=rc_slow_min-delay -> (s'=9) & (x'=0); + // done + [] s=9 -> true; + +endmodule + +// labels +label "done" = (s=9); + +// reward structures +// time +rewards "time" + true : 1; +endrewards + diff --git a/prism-examples/pta/firewire/abst/models b/prism-examples/pta/firewire/abst/models new file mode 100644 index 00000000..1307140a --- /dev/null +++ b/prism-examples/pta/firewire/abst/models @@ -0,0 +1,3 @@ +#firewire.nm -const delay=30 +firewire.nm -const delay=360 + diff --git a/prism-examples/pta/firewire/abst/props b/prism-examples/pta/firewire/abst/props new file mode 100644 index 00000000..6c1ae674 --- /dev/null +++ b/prism-examples/pta/firewire/abst/props @@ -0,0 +1,4 @@ +eventually.pctl +deadline.pctl -const T=5000 +deadline.pctl -const T=10000 +deadline.pctl -const T=20000 diff --git a/prism-examples/pta/firewire/abst/time.pctl b/prism-examples/pta/firewire/abst/time.pctl new file mode 100644 index 00000000..40759e49 --- /dev/null +++ b/prism-examples/pta/firewire/abst/time.pctl @@ -0,0 +1,3 @@ +// Maximum expected time to elect a leader +R{"time"}min=? [ F "done" ] + diff --git a/prism-examples/pta/firewire/impl/args b/prism-examples/pta/firewire/impl/args new file mode 100644 index 00000000..9d79838f --- /dev/null +++ b/prism-examples/pta/firewire/impl/args @@ -0,0 +1 @@ +-aroptions refine=all,nopre diff --git a/prism-examples/pta/firewire/impl/auto b/prism-examples/pta/firewire/impl/auto new file mode 100755 index 00000000..5cffdb63 --- /dev/null +++ b/prism-examples/pta/firewire/impl/auto @@ -0,0 +1,7 @@ +#!/bin/csh + +prism firewire.nm eventually.pctl -const delay=360 -aroptions nopre,refine=all,opt + +prism firewire.nm deadline.pctl -const delay=360,T=2500 -aroptions nopre,refine=all,opt +prism firewire.nm deadline.pctl -const delay=360,T=5000 -aroptions nopre,refine=all,opt +prism firewire.nm deadline.pctl -const delay=360,T=7500 -aroptions nopre,refine=all,opt diff --git a/prism-examples/pta/firewire/impl/deadline.pctl b/prism-examples/pta/firewire/impl/deadline.pctl new file mode 100644 index 00000000..70823f35 --- /dev/null +++ b/prism-examples/pta/firewire/impl/deadline.pctl @@ -0,0 +1,5 @@ +const int T; + +// Minimum probability that a leader has been elected by deadline T +Pmin=? [ F<=T "done" ] + diff --git a/prism-examples/pta/firewire/impl/eventually.pctl b/prism-examples/pta/firewire/impl/eventually.pctl new file mode 100644 index 00000000..e43a1887 --- /dev/null +++ b/prism-examples/pta/firewire/impl/eventually.pctl @@ -0,0 +1,3 @@ +// Minimum probability that a leader is eventually elected +Pmin=? [ F "done" ] + diff --git a/prism-examples/pta/firewire/impl/firewire-digital.nm b/prism-examples/pta/firewire/impl/firewire-digital.nm new file mode 100644 index 00000000..b50daf02 --- /dev/null +++ b/prism-examples/pta/firewire/impl/firewire-digital.nm @@ -0,0 +1,167 @@ +// firewire protocol with integer semantics +// dxp/gxn 14/06/01 + +// CLOCKS +// x1 (x2) clock for node1 (node2) +// y1 and y2 (z1 and z2) clocks for wire12 (wire21) + +// maximum and minimum delays +// fast +const int rc_fast_max = 85; +const int rc_fast_min = 76; +// slow +const int rc_slow_max = 167; +const int rc_slow_min = 159; +// delay caused by the wire length +const int delay; +// probability of choosing fast +const double fast = 0.5; +const double slow = 1-fast; + +module wire12 + + // local state + w12 : [0..9]; + // 0 - empty + // 1 - rec_req + // 2 - rec_req_ack + // 3 - rec_ack + // 4 - rec_ack_idle + // 5 - rec_idle + // 6 - rec_idle_req + // 7 - rec_ack_req + // 8 - rec_req_idle + // 9 - rec_idle_ack + + // clock for wire12 + y1 : [0..delay+1]; + y2 : [0..delay+1]; + + // empty + // do not need y1 and y2 to increase as always reset when this state is left + // similarly can reset y1 and y2 when we re-enter this state + [snd_req12] w12=0 -> (w12'=1) & (y1'=0) & (y2'=0); + [snd_ack12] w12=0 -> (w12'=3) & (y1'=0) & (y2'=0); + [snd_idle12] w12=0 -> (w12'=5) & (y1'=0) & (y2'=0); + [time] w12=0 -> (y1'=min(y1+1,delay+1)) & (y2'=min(y2+1,delay+1)); + // rec_req + [snd_req12] w12=1 -> (w12'=1); + [rec_req12] w12=1 -> (w12'=0) & (y1'=0) & (y2'=0); + [snd_ack12] w12=1 -> (w12'=2) & (y2'=0); + [snd_idle12] w12=1 -> (w12'=8) & (y2'=0); + [time] w12=1 & y2 (y1'=min(y1+1,delay+1)) & (y2'=min(y2+1,delay+1)); + // rec_req_ack + [snd_ack12] w12=2 -> (w12'=2); + [rec_req12] w12=2 -> (w12'=3); + [time] w12=2 & y1 (y1'=min(y1+1,delay+1)) & (y2'=min(y2+1,delay+1)); + // rec_ack + [snd_ack12] w12=3 -> (w12'=3); + [rec_ack12] w12=3 -> (w12'=0) & (y1'=0) & (y2'=0); + [snd_idle12] w12=3 -> (w12'=4) & (y2'=0); + [snd_req12] w12=3 -> (w12'=7) & (y2'=0); + [time] w12=3 & y2 (y1'=min(y1+1,delay+1)) & (y2'=min(y2+1,delay+1)); + // rec_ack_idle + [snd_idle12] w12=4 -> (w12'=4); + [rec_ack12] w12=4 -> (w12'=5); + [time] w12=4 & y1 (y1'=min(y1+1,delay+1)) & (y2'=min(y2+1,delay+1)); + // rec_idle + [snd_idle12] w12=5 -> (w12'=5); + [rec_idle12] w12=5 -> (w12'=0) & (y1'=0) & (y2'=0); + [snd_req12] w12=5 -> (w12'=6) & (y2'=0); + [snd_ack12] w12=5 -> (w12'=9) & (y2'=0); + [time] w12=5 & y2 (y1'=min(y1+1,delay+1)) & (y2'=min(y2+1,delay+1)); + // rec_idle_req + [snd_req12] w12=6 -> (w12'=6); + [rec_idle12] w12=6 -> (w12'=1); + [time] w12=6 & y1 (y1'=min(y1+1,delay+1)) & (y2'=min(y2+1,delay+1)); + // rec_ack_req + [snd_req12] w12=7 -> (w12'=7); + [rec_ack12] w12=7 -> (w12'=1); + [time] w12=7 & y1 (y1'=min(y1+1,delay+1)) & (y2'=min(y2+1,delay+1)); + // rec_req_idle + [snd_idle12] w12=8 -> (w12'=8); + [rec_req12] w12=8 -> (w12'=5); + [time] w12=8 & y1 (y1'=min(y1+1,delay+1)) & (y2'=min(y2+1,delay+1)); + // rec_idle_ack + [snd_ack12] w12=9 -> (w12'=9); + [rec_idle12] w12=9 -> (w12'=3); + [time] w12=9 & y1 (y1'=min(y1+1,delay+1)) & (y2'=min(y2+1,delay+1)); + +endmodule + +module node1 + + // clock for node1 + x1 : [0..168]; + + // local state + s1 : [0..8]; + // 0 - root contention + // 1 - rec_idle + // 2 - rec_req_fast + // 3 - rec_req_slow + // 4 - rec_idle_fast + // 5 - rec_idle_slow + // 6 - snd_req + // 7- almost_root + // 8 - almost_child + + // added resets to x1 when not considered again until after rest + // removed root and child (using almost root and almost child) + + // root contention immediate state) + [snd_idle12] s1=0 & x1=0 -> fast : (s1'=2) + slow : (s1'=3); + [rec_idle21] s1=0 & x1=0 -> (s1'=1); + // rec_idle immediate state) + [snd_idle12] s1=1 & x1=0 -> fast : (s1'=4) + slow : (s1'=5); + [rec_req21] s1=1 & x1=0 -> (s1'=0); + // rec_req_fast + [rec_idle21] s1=2 -> (s1'=4); + [snd_ack12] s1=2 & x1>=rc_fast_min -> (s1'=7) & (x1'=0); + [time] s1=2 & x1 (x1'=min(x1+1,168)); + // rec_req_slow + [rec_idle21] s1=3 -> (s1'=5); + [snd_ack12] s1=3 & x1>=rc_slow_min -> (s1'=7) & (x1'=0); + [time] s1=3 & x1 (x1'=min(x1+1,168)); + // rec_idle_fast + [rec_req21] s1=4 -> (s1'=2); + [snd_req12] s1=4 & x1>=rc_fast_min -> (s1'=6) & (x1'=0); + [time] s1=4 & x1 (x1'=min(x1+1,168)); + // rec_idle_slow + [rec_req21] s1=5 -> (s1'=3); + [snd_req12] s1=5 & x1>=rc_slow_min -> (s1'=6) & (x1'=0); + [time] s1=5 & x1 (x1'=min(x1+1,168)); + // snd_req + // do not use x1 until reset (in state 0 or in state 1) so do not need to increase x1 + // also can set x1 to 0 upon entering this state + [rec_req21] s1=6 -> (s1'=0) & (x1'=0); + [rec_ack21] s1=6 -> (s1'=8) & (x1'=0); + [time] s1=6 -> (x1'=min(x1+1,168)); + // almost root (immediate) + // loop in final states to remove deadlock + [loop] s1=7 & s2=8 -> (s1'=s1); + [loop] s1=8 & s2=7 -> (s1'=s1); + [time] s1=7 -> (x1'=min(x1+1,168)); + [time] s1=8 -> (x1'=min(x1+1,168)); + +endmodule + +// construct remaining automata through renaming +module wire21=wire12[w12=w21, y1=z1, y2=z2, + snd_req12=snd_req21, snd_idle12=snd_idle21, snd_ack12=snd_ack21, + rec_req12=rec_req21, rec_idle12=rec_idle21, rec_ack12=rec_ack21] +endmodule +module node2=node1[s1=s2, s2=s1, x1=x2, + rec_req21=rec_req12, rec_idle21=rec_idle12, rec_ack21=rec_ack12, + snd_req12=snd_req21, snd_idle12=snd_idle21, snd_ack12=snd_ack21,done1=done2,done2=done1] +endmodule + +// reward structures +// time +rewards "time" + [time] true : 1; +endrewards +// time nodes sending +rewards "time_sending" + [time] (w12>0 | w21>0) : 1; +endrewards diff --git a/prism-examples/pta/firewire/impl/firewire.nm b/prism-examples/pta/firewire/impl/firewire.nm new file mode 100644 index 00000000..9eea48ca --- /dev/null +++ b/prism-examples/pta/firewire/impl/firewire.nm @@ -0,0 +1,179 @@ +// Firewire protocol (PTA model) +// dxp/gxn 08/07/09 + +pta + +// CLOCKS +// x1 (x2) clock for node1 (node2) +// y1 and y2 (z1 and z2) clocks for wire12 (wire21) + +// maximum and minimum delays +// fast +const int rc_fast_max = 850; +const int rc_fast_min = 760; +// slow +const int rc_slow_max = 1670; +const int rc_slow_min = 1590; +// delay caused by the wire length +const int delay; +// probability of choosing fast and slow +const double fast = 0.5; +const double slow = 1-fast; + +module wire12 + + // local state + w12 : [0..9]; + // 0 - empty + // 1 - rec_req + // 2 - rec_req_ack + // 3 - rec_ack + // 4 - rec_ack_idle + // 5 - rec_idle + // 6 - rec_idle_req + // 7 - rec_ack_req + // 8 - rec_req_idle + // 9 - rec_idle_ack + + // clock for wire12 + y1 : clock; + y2 : clock; + + // clock invariant + invariant + (w12=1 => y2<=delay) + & (w12=2 => y1<=delay) + & (w12=3 => y2<=delay) + & (w12=4 => y1<=delay) + & (w12=5 => y2<=delay) + & (w12=6 => y1<=delay) + & (w12=7 => y1<=delay) + & (w12=8 => y1<=delay) + & (w12=9 => y1<=delay) + endinvariant + + // empty + // do not need y1 and y2 to increase as always reset when this state is left + // similarly can reset y1 and y2 when we re-enter this state + [snd_req12] w12=0 -> (w12'=1) & (y1'=0) & (y2'=0); + [snd_ack12] w12=0 -> (w12'=3) & (y1'=0) & (y2'=0); + [snd_idle12] w12=0 -> (w12'=5) & (y1'=0) & (y2'=0); + // rec_req + [snd_req12] w12=1 -> (w12'=1); + [rec_req12] w12=1 -> (w12'=0) & (y1'=0) & (y2'=0); + [snd_ack12] w12=1 -> (w12'=2) & (y2'=0); + [snd_idle12] w12=1 -> (w12'=8) & (y2'=0); + // rec_req_ack + [snd_ack12] w12=2 -> (w12'=2); + [rec_req12] w12=2 -> (w12'=3); + // rec_ack + [snd_ack12] w12=3 -> (w12'=3); + [rec_ack12] w12=3 -> (w12'=0) & (y1'=0) & (y2'=0); + [snd_idle12] w12=3 -> (w12'=4) & (y2'=0); + [snd_req12] w12=3 -> (w12'=7) & (y2'=0); + // rec_ack_idle + [snd_idle12] w12=4 -> (w12'=4); + [rec_ack12] w12=4 -> (w12'=5); + // rec_idle + [snd_idle12] w12=5 -> (w12'=5); + [rec_idle12] w12=5 -> (w12'=0) & (y1'=0) & (y2'=0); + [snd_req12] w12=5 -> (w12'=6) & (y2'=0); + [snd_ack12] w12=5 -> (w12'=9) & (y2'=0); + // rec_idle_req + [snd_req12] w12=6 -> (w12'=6); + [rec_idle12] w12=6 -> (w12'=1); + // rec_ack_req + [snd_req12] w12=7 -> (w12'=7); + [rec_ack12] w12=7 -> (w12'=1); + // rec_req_idle + [snd_idle12] w12=8 -> (w12'=8); + [rec_req12] w12=8 -> (w12'=5); + // rec_idle_ack + [snd_ack12] w12=9 -> (w12'=9); + [rec_idle12] w12=9 -> (w12'=3); + +endmodule + +module node1 + + // clock for node1 + x1 : clock; + + // local state + s1 : [0..8]; + // 0 - root contention + // 1 - rec_idle + // 2 - rec_req_fast + // 3 - rec_req_slow + // 4 - rec_idle_fast + // 5 - rec_idle_slow + // 6 - snd_req + // 7 - almost_root + // 8 - almost_child + + // clock invariant + invariant + (s1=2 => x1<=rc_fast_max) + & (s1=3 => x1<=rc_slow_max) + & (s1=4 => x1<=rc_fast_max) + & (s1=5 => x1<=rc_slow_max) + // urgency: + & (s1=0 => x1<=0) + & (s1=1 => x1<=0) + endinvariant + + // added resets to x1 when not considered again until after rest + // removed root and child (using almost root and almost child) + + // root contention immediate state) + [snd_idle12] s1=0 & x1=0 -> fast : (s1'=2) + slow : (s1'=3); + [rec_idle21] s1=0 & x1=0 -> (s1'=1); + // rec_idle immediate state) + [snd_idle12] s1=1 & x1=0 -> fast : (s1'=4) + slow : (s1'=5); + [rec_req21] s1=1 & x1=0 -> (s1'=0); + // rec_req_fast + [rec_idle21] s1=2 -> (s1'=4); + [snd_ack12] s1=2 & x1>=rc_fast_min -> (s1'=7) & (x1'=0); + // rec_req_slow + [rec_idle21] s1=3 -> (s1'=5); + [snd_ack12] s1=3 & x1>=rc_slow_min -> (s1'=7) & (x1'=0); + // rec_idle_fast + [rec_req21] s1=4 -> (s1'=2); + [snd_req12] s1=4 & x1>=rc_fast_min -> (s1'=6) & (x1'=0); + // rec_idle_slow + [rec_req21] s1=5 -> (s1'=3); + [snd_req12] s1=5 & x1>=rc_slow_min -> (s1'=6) & (x1'=0); + // snd_req + // do not use x1 until reset (in state 0 or in state 1) so do not need to increase x1 + // also can set x1 to 0 upon entering this state + [rec_req21] s1=6 -> (s1'=0) & (x1'=0); + [rec_ack21] s1=6 -> (s1'=8) & (x1'=0); + // almost root or almost child (immediate) + // loop in final states to remove deadlock + [loop] s1=7 -> true; + [loop] s1=8 -> true; + +endmodule + +// construct remaining automata through renaming +module wire21=wire12[w12=w21, y1=z1, y2=z2, + snd_req12=snd_req21, snd_idle12=snd_idle21, snd_ack12=snd_ack21, + rec_req12=rec_req21, rec_idle12=rec_idle21, rec_ack12=rec_ack21] +endmodule +module node2=node1[s1=s2, s2=s1, x1=x2, + rec_req21=rec_req12, rec_idle21=rec_idle12, rec_ack21=rec_ack12, + snd_req12=snd_req21, snd_idle12=snd_idle21, snd_ack12=snd_ack21] +endmodule + +// labels +label "done" = (s1=8 & s2=7) | (s1=7 & s2=8); + +// reward structures +// time +rewards "time" + true : 1; +endrewards +// time nodes sending +rewards "time_sending" + (w12>0 | w21>0) : 1; +endrewards diff --git a/prism-examples/pta/firewire/impl/models b/prism-examples/pta/firewire/impl/models new file mode 100644 index 00000000..1307140a --- /dev/null +++ b/prism-examples/pta/firewire/impl/models @@ -0,0 +1,3 @@ +#firewire.nm -const delay=30 +firewire.nm -const delay=360 + diff --git a/prism-examples/pta/firewire/impl/props b/prism-examples/pta/firewire/impl/props new file mode 100644 index 00000000..cf2b0e8f --- /dev/null +++ b/prism-examples/pta/firewire/impl/props @@ -0,0 +1,4 @@ +eventually.pctl +deadline.pctl -const T=2500 +deadline.pctl -const T=5000 +deadline.pctl -const T=7500 diff --git a/prism-examples/pta/firewire/impl/time.pctl b/prism-examples/pta/firewire/impl/time.pctl new file mode 100644 index 00000000..40759e49 --- /dev/null +++ b/prism-examples/pta/firewire/impl/time.pctl @@ -0,0 +1,3 @@ +// Maximum expected time to elect a leader +R{"time"}min=? [ F "done" ] + diff --git a/prism-examples/pta/formats09.sh b/prism-examples/pta/formats09.sh new file mode 100755 index 00000000..7283c98e --- /dev/null +++ b/prism-examples/pta/formats09.sh @@ -0,0 +1,36 @@ +# FORMATS'09 Case Studies + +prism csma/full/csma.nm csma/full/collisions.pctl -const bmax=2,K=4 -aroptions refine=all,nopre +prism csma/full/csma.nm csma/full/collisions.pctl -const bmax=2,K=8 -aroptions refine=all,nopre +prism csma/full/csma.nm csma/full/collisions.pctl -const bmax=4,K=4 -aroptions refine=all,nopre +#prism csma/full/csma.nm csma/full/collisions.pctl -const bmax=4,K=8 -aroptions refine=all,nopre + +prism csma/abst/csma.nm -const bmax=1 csma/abst/eventually.pctl -aroptions refine=all,nopre +prism csma/abst/csma.nm -const bmax=1 csma/abst/deadline.pctl -const T=1000 -aroptions refine=all,nopre +prism csma/abst/csma.nm -const bmax=1 csma/abst/deadline.pctl -const T=2000 -aroptions refine=all,nopre +#prism csma/abst/csma.nm -const bmax=1 csma/abst/deadline.pctl -const T=3000 -aroptions refine=all,nopre + +prism firewire/impl/firewire.nm firewire/impl/eventually.pctl -const delay=360 -aroptions refine=all,nopre +prism firewire/impl/firewire.nm firewire/impl/deadline.pctl -const delay=360,T=2500 -aroptions refine=all,nopre +prism firewire/impl/firewire.nm firewire/impl/deadline.pctl -const delay=360,T=5000 -aroptions refine=all,nopre +prism firewire/impl/firewire.nm firewire/impl/deadline.pctl -const delay=360,T=7500 -aroptions refine=all,nopre + +prism firewire/abst/firewire.nm firewire/abst/eventually.pctl -const delay=360 -aroptions refine=all,nopre +prism firewire/abst/firewire.nm firewire/abst/deadline.pctl -const delay=360,T=5000 -aroptions refine=all,nopre +prism firewire/abst/firewire.nm firewire/abst/deadline.pctl -const delay=360,T=10000 -aroptions refine=all,nopre +prism firewire/abst/firewire.nm firewire/abst/deadline.pctl -const delay=360,T=20000 -aroptions refine=all,nopre + +prism zeroconf/zeroconf.nm zeroconf/incorrect.pctl -aroptions refine=all,nopre +prism zeroconf/zeroconf.nm zeroconf/deadline.pctl -const T=100 -aroptions refine=all,nopre +prism zeroconf/zeroconf.nm zeroconf/deadline.pctl -const T=150 -aroptions refine=all,nopre +prism zeroconf/zeroconf.nm zeroconf/deadline.pctl -const T=200 -aroptions refine=all,nopre + +prism repudiation/honest/repudiation.nm repudiation/honest/eventually.pctl -aroptions refine=all,nopre +prism repudiation/honest/repudiation.nm repudiation/honest/deadline.pctl -const T=40 -aroptions refine=all,nopre +prism repudiation/honest/repudiation.nm repudiation/honest/deadline.pctl -const T=80 -aroptions refine=all,nopre +prism repudiation/honest/repudiation.nm repudiation/honest/deadline.pctl -const T=100 -aroptions refine=all,nopre + +prism repudiation/malicious/repudiation.nm repudiation/malicious/eventually.pctl -aroptions refine=all,nopre +prism repudiation/malicious/repudiation.nm repudiation/malicious/deadline.pctl -const T=5 -aroptions refine=all,nopre +prism repudiation/malicious/repudiation.nm repudiation/malicious/deadline.pctl -const T=10 -aroptions refine=all,nopre +#prism repudiation/malicious/repudiation.nm repudiation/malicious/deadline.pctl -const T=20 -aroptions refine=all,nopre,eref=1e-8 diff --git a/prism-examples/pta/repudiation/honest/args b/prism-examples/pta/repudiation/honest/args new file mode 100644 index 00000000..9d79838f --- /dev/null +++ b/prism-examples/pta/repudiation/honest/args @@ -0,0 +1 @@ +-aroptions refine=all,nopre diff --git a/prism-examples/pta/repudiation/honest/auto b/prism-examples/pta/repudiation/honest/auto new file mode 100755 index 00000000..5869f8d3 --- /dev/null +++ b/prism-examples/pta/repudiation/honest/auto @@ -0,0 +1,7 @@ +#!/bin/csh + +prism repudiation.nm eventually.pctl -aroptions refine=all,opt + +prism repudiation.nm deadline.pctl -aroptions refine=all,opt -const T=40 +prism repudiation.nm deadline.pctl -aroptions refine=all,opt -const T=80 +prism repudiation.nm deadline.pctl -aroptions refine=all,opt -const T=100 diff --git a/prism-examples/pta/repudiation/honest/deadline.pctl b/prism-examples/pta/repudiation/honest/deadline.pctl new file mode 100644 index 00000000..93c25829 --- /dev/null +++ b/prism-examples/pta/repudiation/honest/deadline.pctl @@ -0,0 +1,5 @@ +const int T; + +// Minimum probability that protocol terminates successfully by the deadline +Pmin=? [ F true) & + (o=1 => x<=0) & + (o=2 => x<=5) & // x<=AD+1 + (o=3 => x<=0) & + (o=4 => x<=0) & + (o=5 => x<=0) & + (o=6 => true) & + (o=7 => true) & + (o=8 => true) & + (o=9 => true) & + (o=10 => true) & + (o=11 => x<=5) & // x<=AD+1 + (o=12 => x<=5) // x<=AD+1 + endinvariant + + [req] o=0 -> (o'=1) & (x'=0); + [message] o=1 & x<=0 -> (o'=2); + [ack] o=2 & (x>=1 & x<=4) -> 0.9 : (o'=1) & (x'=0) + 0.1 : (o'=3) & (x'=0); // guard x>=ad,x<=AD + [] o=2 & x>4 -> 0.9 : (o'=1) & (x'=0) + 0.1 : (o'=3) & (x'=0); // guard x>AD + [decode] o=2 -> 0.9 : (o'=6) + 0.1 : (o'=7); + [finished] o=3 -> (o'=8) & (x'=0); + + [] o=8 -> (o'=8); + [] o=9 -> (o'=9); + [] o=10 -> (o'=10); + + [stop] o=4 -> (o'=9); + [error] o=5 -> (o'=10); + + [decoded_random] o=6 -> (o'=11); + [decoded_last] o=7 -> (o'=12); + + [ack] o=11 & (x>=1 & x<=4) -> (o'=1) & (x'=0); // guard x>=ad,x<=AD + [stop] o=11 & x>4 -> (o'=9) & (x'=0); + + [ack] o=12 & (x>=1 & x<=4) -> (o'=3) & (x'=0); // guard x>=ad,x<=AD + [stop] o=12 & x>4 -> (o'=10) & (x'=0); + +endmodule + +module recipient + + r : [0..3]; + // 0 - request + // 1 - wait + // 2 - ack + // 3 - done + + y : clock; + + invariant + (r=0 => y<=0) & + (r=1 => true) & + (r=2 => y<=4) & + (r=3 => true) + endinvariant + + [req] r=0 & y=0 -> (r'=1); + [message] r=1 -> (r'=2) & (y'=0); + [finished] r=1 -> (r'=3); + [ack] r=2 & (y>=1 & y<=4) -> (r'=1) & (y'=0); + + // honest recipient never tries decoding but added actions to final state + // so the same originator is used for honest and malicious recipient + [decode] r=3 -> (r'=3); + [decoded_random] r=3 -> (r'=3); + [decoded_last] r=3 -> (r'=3); + +endmodule + +label "terminated_successfully" = o=8; + diff --git a/prism-examples/pta/repudiation/malicious/args b/prism-examples/pta/repudiation/malicious/args new file mode 100644 index 00000000..9d79838f --- /dev/null +++ b/prism-examples/pta/repudiation/malicious/args @@ -0,0 +1 @@ +-aroptions refine=all,nopre diff --git a/prism-examples/pta/repudiation/malicious/auto b/prism-examples/pta/repudiation/malicious/auto new file mode 100755 index 00000000..27f3bcc4 --- /dev/null +++ b/prism-examples/pta/repudiation/malicious/auto @@ -0,0 +1,7 @@ +#!/bin/csh + +prism repudiation.nm eventually.pctl -aroptions refine=all,opt + +prism repudiation.nm deadline.pctl -aroptions refine=all,opt -const T=5 +prism repudiation.nm deadline.pctl -aroptions refine=all,opt -const T=10 +prism repudiation.nm deadline.pctl -aroptions refine=all,opt -const T=20 diff --git a/prism-examples/pta/repudiation/malicious/deadline.pctl b/prism-examples/pta/repudiation/malicious/deadline.pctl new file mode 100644 index 00000000..8633995d --- /dev/null +++ b/prism-examples/pta/repudiation/malicious/deadline.pctl @@ -0,0 +1,5 @@ +const int T; + +// Maximum probability that malicious recepient gains information by deadline T +Pmax=? [ F true) & + (o=1 => x<=0) & + (o=2 => x<=5) & // x<=AD+1 + (o=3 => x<=0) & + (o=4 => x<=0) & + (o=5 => x<=0) & + (o=6 => true) & + (o=7 => true) & + (o=8 => true) & + (o=9 => true) & + (o=10 => true) & + (o=11 => x<=5) & // x<=AD+1 + (o=12 => x<=5) // x<=AD+1 + endinvariant + + [req] o=0 -> (o'=1) & (x'=0); + [message] o=1 & x<=0 -> (o'=2); + [ack] o=2 & (x>=1 & x<=4) -> 0.9 : (o'=1) & (x'=0) + 0.1 : (o'=3) & (x'=0); // guard x>=ad,x<=AD + [] o=2 & x>4 -> 0.9 : (o'=4) & (x'=0) + 0.1 : (o'=5) & (x'=0); // guard x>AD + [decode] o=2 -> 0.9 : (o'=6) + 0.1 : (o'=7); + [finished] o=3 -> (o'=8) & (x'=0); + + [] o=8 -> (o'=8); + [] o=9 -> (o'=9); + [] o=10 -> (o'=10); + + [stop] o=4 -> (o'=9); + [error] o=5 -> (o'=10); + + [decoded_random] o=6 -> (o'=11); + [decoded_last] o=7 -> (o'=12); + + [ack] o=11 & (x>=1 & x<=4) -> (o'=1) & (x'=0); // guard x>=ad,x<=AD + [stop] o=11 & x>4 -> (o'=9) & (x'=0); + + [ack] o=12 & (x>=1 & x<=4) -> (o'=3) & (x'=0); // guard x>=ad,x<=AD + [stop] o=12 & x>4 -> (o'=10) & (x'=0); + +endmodule + +module recipient + + r : [0..9]; + // 0 - request + // 1 - wait + // 2 - ack + // 3 - done + // 4 - decode1 + // 5 - decode2 + // 6 - terminate + // 7 - decode + // 8 - decoded + // 9 - random + + y : clock; + + invariant + (r=0 => y<=0) & + (r=1 => true) & + (r=2 => true) & + (r=3 => true) & + (r=4 => y<=1) & + (r=5 => y<=3) & + (r=6 => true) & + (r=7 => y<=0) & + (r=8 => y<=0) & + (r=9 => y<=0) + endinvariant + + [req] r=0 & y=0 -> (r'=1); + [message] r=1 -> (r'=2) & (y'=0); + [finished] r=1 -> (r'=3); + + [ack] r=2 -> (r'=1); + [] r=2 -> (r'=4) & (y'=0); + [] r=2 -> (r'=5) & (y'=0); + [] r=2 -> (r'=6); + + [] r=3 -> (r'=3); + [] r=6 -> (r'=6); + + [] r=4 & y=1 -> 0.01 : (r'=7) & (y'=0) + 0.99 : (r'=2) & (y'=0); + [] r=5 & y=3 -> 0.05 : (r'=7) & (y'=0) + 0.95 : (r'=2) & (y'=0); + + [decode] r=7 & y=0 -> (r'=8); + [decoded_random] r=8 & y=0 -> (r'=9); + [decoded_last] r=8 & y=0 -> (r'=6); + [ack] r=9 -> (r'=1); + [] r=9 -> (r'=6); + +endmodule + +label "gains_information" = o=10; + + diff --git a/prism-examples/pta/simple/auto b/prism-examples/pta/simple/auto new file mode 100755 index 00000000..bad47d26 --- /dev/null +++ b/prism-examples/pta/simple/auto @@ -0,0 +1,3 @@ +#!/bin/csh + +prism formats09.nm formats09.pctl -prop 1 -aroptions refine=first diff --git a/prism-examples/pta/simple/formats09.nm b/prism-examples/pta/simple/formats09.nm new file mode 100644 index 00000000..527617b4 --- /dev/null +++ b/prism-examples/pta/simple/formats09.nm @@ -0,0 +1,26 @@ +// PTA used as running example in FORMATS'09 paper + +pta + +module M + + s : [0..3]; + x : clock; + y : clock; + + [] s=0 -> 0.6 : (s'=1) + 0.4 : (s'=2)&(x'=0); + [] s=1 & x=0 -> (s'=3); + [] s=1 & y>2 -> (s'=1)&(y'=0); + [] s=2 & x=0 & y=1 -> (s'=3)&(y'=0); + [] s=2 & x>2 -> (s'=1)&(y'=0); + [] s=3 -> (s'=3); + +endmodule + +label "target" = s=3; +label "end" = s=3 | s=1; + +rewards "time" + true : 1; +endrewards + diff --git a/prism-examples/pta/simple/formats09.pctl b/prism-examples/pta/simple/formats09.pctl new file mode 100644 index 00000000..4e9c4643 --- /dev/null +++ b/prism-examples/pta/simple/formats09.pctl @@ -0,0 +1,3 @@ +Pmax=? [ F "target" ] + +// Rmin=? [ F "end" ] diff --git a/prism-examples/pta/tests-prism.sh b/prism-examples/pta/tests-prism.sh new file mode 100755 index 00000000..bce849c9 --- /dev/null +++ b/prism-examples/pta/tests-prism.sh @@ -0,0 +1,9 @@ + +prism-benchmark -exec prism-explicit -logs logs csma +prism-benchmark -exec prism-explicit -logs logs csma/abst +prism-benchmark -exec prism-explicit -logs logs firewire/impl +prism-benchmark -exec prism-explicit -logs logs firewire/abst +prism-benchmark -exec prism-explicit -logs logs zeroconf +prism-benchmark -exec prism-explicit -logs logs repudiation/honest +prism-benchmark -exec prism-explicit -logs logs repudiation/malicious + diff --git a/prism-examples/pta/zeroconf/args b/prism-examples/pta/zeroconf/args new file mode 100644 index 00000000..9d79838f --- /dev/null +++ b/prism-examples/pta/zeroconf/args @@ -0,0 +1 @@ +-aroptions refine=all,nopre diff --git a/prism-examples/pta/zeroconf/auto b/prism-examples/pta/zeroconf/auto new file mode 100755 index 00000000..8aaefcbf --- /dev/null +++ b/prism-examples/pta/zeroconf/auto @@ -0,0 +1,20 @@ +#!/bin/csh + +# full (multi-variable) + +prism zeroconf.nm incorrect.pctl -aroptions refine=all,nopre,opt + +prism zeroconf.nm deadline.pctl -const T=100 -aroptions refine=all,nopre,opt +prism zeroconf.nm deadline.pctl -const T=150 -aroptions refine=all,nopre,opt +prism zeroconf.nm deadline.pctl -const T=200 -aroptions refine=all,nopre,opt + +prism zeroconf.nm time.pctl -aroptions refine=all,nopre,opt + +# simple (single variable) + +prism zeroconf-simple.nm incorrect.pctl -aroptions refine=all,nopre,opt + +prism zeroconf-simple.nm deadline.pctl -const T=100 -aroptions refine=all,nopre,opt +prism zeroconf-simple.nm deadline.pctl -const T=150 -aroptions refine=all,nopre,opt +prism zeroconf-simple.nm deadline.pctl -const T=200 -aroptions refine=all,nopre,opt + diff --git a/prism-examples/pta/zeroconf/deadline.pctl b/prism-examples/pta/zeroconf/deadline.pctl new file mode 100644 index 00000000..1ce8fbd9 --- /dev/null +++ b/prism-examples/pta/zeroconf/deadline.pctl @@ -0,0 +1,5 @@ +const int T; + +// Maximum probability of configuring incorrectly (using unfresh address) by time T +Pmax=? [ F<=T "incorrect" ] + diff --git a/prism-examples/pta/zeroconf/eventually.pctl b/prism-examples/pta/zeroconf/eventually.pctl new file mode 100644 index 00000000..6f4ff42f --- /dev/null +++ b/prism-examples/pta/zeroconf/eventually.pctl @@ -0,0 +1,3 @@ +// Maximum probably use unfresh address +Pmax=? [ F "done" ] + diff --git a/prism-examples/pta/zeroconf/incorrect.pctl b/prism-examples/pta/zeroconf/incorrect.pctl new file mode 100644 index 00000000..8d4affb7 --- /dev/null +++ b/prism-examples/pta/zeroconf/incorrect.pctl @@ -0,0 +1,3 @@ +// Maximum probability of configuring incorrectly (using unfresh address) +Pmax=? [ F "incorrect" ] + diff --git a/prism-examples/pta/zeroconf/models b/prism-examples/pta/zeroconf/models new file mode 100644 index 00000000..6c3aac3f --- /dev/null +++ b/prism-examples/pta/zeroconf/models @@ -0,0 +1 @@ +zeroconf.nm diff --git a/prism-examples/pta/zeroconf/props b/prism-examples/pta/zeroconf/props new file mode 100644 index 00000000..ed50194f --- /dev/null +++ b/prism-examples/pta/zeroconf/props @@ -0,0 +1,4 @@ +incorrect.pctl +deadline.pctl -const T=100 +deadline.pctl -const T=150 +deadline.pctl -const T=200 diff --git a/prism-examples/pta/zeroconf/time.pctl b/prism-examples/pta/zeroconf/time.pctl new file mode 100644 index 00000000..40759e49 --- /dev/null +++ b/prism-examples/pta/zeroconf/time.pctl @@ -0,0 +1,3 @@ +// Maximum expected time to elect a leader +R{"time"}min=? [ F "done" ] + diff --git a/prism-examples/pta/zeroconf/used.pctl b/prism-examples/pta/zeroconf/used.pctl new file mode 100644 index 00000000..a8f22c75 --- /dev/null +++ b/prism-examples/pta/zeroconf/used.pctl @@ -0,0 +1 @@ +P=?[ F s=2 & ip=2 ] diff --git a/prism-examples/pta/zeroconf/zeroconf-digital.nm b/prism-examples/pta/zeroconf/zeroconf-digital.nm new file mode 100644 index 00000000..7292c03d --- /dev/null +++ b/prism-examples/pta/zeroconf/zeroconf-digital.nm @@ -0,0 +1,42 @@ +// prism model of pta version of zeroconf +// using digitial clocks + +mdp + +module sender + + s : [0..2]; //local state + probes : [0..4]; // probes sent + ip : [0..2]; // ip address not chosen, fresh or in use + x : [0..21]; // local clock + + // selct probe + // [] s=0 -> 0.99969242125984251969 : (s'=1) & (ip'=0) + 0.00030757874015748031 : (s'=1) & (ip'=1); + + [] s=0 -> 0.5 : (s'=1) & (ip'=1) + 0.5 : (s'=1) & (ip'=2); + // send probes + [time] s=1 & x<20 -> (x'=x+1); + [send_used] s=1 & x=20 & ip=2 & probes<4 -> (probes'=probes+1) & (x'=0); + [send_fresh] s=1 & x=20 & ip=1 & probes<4 -> (probes'=probes+1) & (x'=0); + [] s=1 & x=20 & probes=4 -> (s'=2) & (x'=0); + [recv] s=1 -> (s'=0) & (x'=0) & (ip'=0) & (probes'=0); + + [time] s=2 -> (x'=min(21,x+1)); + +endmodule + +module environment + + e : [0..2]; // ready, send reply + y : [0..6]; + + [time] e=0 -> (y'=min(y+1,6)); + [send_fresh] e=0 -> true; + [send_used] e=0 -> 0.1 : (e'=0) + 0.9 : (e'=1); + + [time] e>0 & y<5 -> (y'=y+1); + [] e=1 & y>=1 -> 0.1 : (e'=0) & (y'=0) + 0.9 : (e'=2) & (y'=0); + [recv] e=2 & y>=1 -> (e'=0) & (y'=0); + +endmodule + diff --git a/prism-examples/pta/zeroconf/zeroconf-full.nm b/prism-examples/pta/zeroconf/zeroconf-full.nm new file mode 100644 index 00000000..003ce23d --- /dev/null +++ b/prism-examples/pta/zeroconf/zeroconf-full.nm @@ -0,0 +1,299 @@ +// IPv4: PTA model with digitial clocks +// one concrete host attempting to choose an ip address +// when a number of (abstract) hosts have already got ip addresses +// gxn/dxp/jzs 02/05/03 + +// reset or noreset model +const bool reset=true; + +//------------------------------------------------------------- + +// we suppose that +// - the abstract hosts have already picked their addresses +// and always defend their addresses +// - the concrete host never picks the same ip address twice +// (this can happen only with a verys small probability) + +// under these assumptions we do not need message types because: +// 1) since messages to the concrete host will never be a probe, +// this host will react to all messages in the same way +// 2) since the abstract hosts always defend their addresses, +// all messages from the host will get an arp reply if the ip matches + +// following from the above assumptions we require only three abstract IP addresses +// (0,1 and 2) which correspond to the following sets of IP addresses: + +// 0 - the IP addresses of the abstract hosts which the concrete host +// previously tried to configure +// 1 - an IP address of an abstract host which the concrete host is +// currently trying to configure +// 2 - a fresh IP address which the concrete host is currently trying to configure + +// if the host picks an address that is being used it may end up picking another ip address +// in which case there may still be messages corresponding to the old ip address +// to be sent both from and to the host which the host should now disregard +// (since it will never pick the same ip address) + +// to deal with this situation: when a host picks a new ip address we reconfigure the +// messages that are still be be sent or are being sent by changing the ip address to 0 +// (an old ip address of the host) + +// all the messages from the abstract hosts for the 'old' address (in fact the +// set of old addresses since it may have started again more than once) +// can arrive in any order since they are equivalent to the host - it ignores then all + +// also the messages for the old and new address will come from different hosts +// (the ones with that ip address) which we model by allowing them to arrive in any order +// i.e. not neccessarily in the order they where sent + +//------------------------------------------------------------- +// model is an pta +pta + +//------------------------------------------------------------- +// VARIABLES +const int N=1000; // number of abstract hosts +const int K=2; // number of probes to send +const double loss = 0.1; // probability of message loss + +// PROBABILITIES +const double old = N/65024; // probability pick an ip address being used +const double new = (1-old); // probability pick a new ip address + +// TIMING CONSTANTS +const int CONSEC = 2; // time interval between sending consecutive probles +const int TRANSTIME = 1; // upper bound on transmission time delay +const int LONGWAIT = 60; // minimum time delay after a high number of address collisions +const int DEFEND = 10; + +const int TIME_MAX_X = 60; // max value of clock x +const int TIME_MAX_Y = 10; // max value of clock y +const int TIME_MAX_Z = 1; // max value of clock z + +// OTHER CONSTANTS +const int MAXCOLL = 10; // maximum number of collisions before long wait +// size of buffers for other hosts +const int B0 = 20; // buffer size for one abstract host +const int B1 = 8; // buffer sizes for all abstract hosts + +//------------------------------------------------------------- +// ENVIRONMENT - models: medium, output buffer of concrete host and all other hosts +module environment + + // buffer of concrete host + b_ip7 : [0..2]; // ip address of message in buffer position 8 + b_ip6 : [0..2]; // ip address of message in buffer position 7 + b_ip5 : [0..2]; // ip address of message in buffer position 6 + b_ip4 : [0..2]; // ip address of message in buffer position 5 + b_ip3 : [0..2]; // ip address of message in buffer position 4 + b_ip2 : [0..2]; // ip address of message in buffer position 3 + b_ip1 : [0..2]; // ip address of message in buffer position 2 + b_ip0 : [0..2]; // ip address of message in buffer position 1 + n : [0..8]; // number of places in the buffer used (from host) + + // messages to be sent from abstract hosts to concrete host + n0 : [0..B0]; // number of messages which do not have the host's current ip address + n1 : [0..B1]; // number of messages which have the host's current ip address + + b : [0..2]; // local state + // 0 - idle + // 1 - sending message from concrete host + // 2 - sending message from abstract host + + z : clock; // clock of environment (needed for the time to send a message) + + ip_mess : [0..2]; // ip in the current message being sent + // 0 - different from concrete host + // 1 - same as the concrete host and in use + // 2 - same as the concrete host and not in use + + invariant + (b=0 & n=0 & n0=0 & n1=0 => true) & // nothing to send + (b=0 & !(n=0 & n0=0 & n1=0) => z<=0) & // something to send + (b>0 => z<=1) // sending + endinvariant + + // RESET/RECONFIG: when host is about to choose new ip address + // suppose that the host cannot choose the same ip address + // (since happens with very small probability). + // Therefore all messages will have a different ip address, + // i.e. all n1 messages become n0 ones. + // Note this include any message currently being sent (ip is set to zero 0) + [reset] true -> (n1'=0) & (n0'=min(B0,n0+n1)) // abstract buffers + & (ip_mess'=0) // message being set + & (n'=(reset)?0:n) // concrete buffer (remove this update to get NO_RESET model) + & (b_ip7'=0) + & (b_ip6'=0) + & (b_ip5'=0) + & (b_ip4'=0) + & (b_ip3'=0) + & (b_ip2'=0) + & (b_ip1'=0) + & (b_ip0'=0); + // note: prevent anything else from happening when reconfiguration needs to take place + + // get messages to be sent (so message has same ip address as host) + [send1] n=0 -> (b_ip0'=1) & (n'=n+1); + [send1] n=1 -> (b_ip1'=1) & (n'=n+1); + [send1] n=2 -> (b_ip2'=1) & (n'=n+1); + [send1] n=3 -> (b_ip3'=1) & (n'=n+1); + [send1] n=4 -> (b_ip4'=1) & (n'=n+1); + [send1] n=5 -> (b_ip5'=1) & (n'=n+1); + [send1] n=6 -> (b_ip6'=1) & (n'=n+1); + [send1] n=7 -> (b_ip7'=1) & (n'=n+1); + [send1] n=8 -> (n'=n); // buffer full so lose message + + [send2] n=0 -> (b_ip0'=2) & (n'=n+1); + [send2] n=1 -> (b_ip1'=2) & (n'=n+1); + [send2] n=2 -> (b_ip2'=2) & (n'=n+1); + [send2] n=3 -> (b_ip3'=2) & (n'=n+1); + [send2] n=4 -> (b_ip4'=2) & (n'=n+1); + [send2] n=5 -> (b_ip5'=2) & (n'=n+1); + [send2] n=6 -> (b_ip6'=2) & (n'=n+1); + [send2] n=7 -> (b_ip7'=2) & (n'=n+1); + [send2] n=8 -> (n'=n); // buffer full so lose message + + // start sending message from host + [a] b=0 & n>0 -> (1-loss) : (b'=1) & (ip_mess'=b_ip0) + & (n'=n-1) + & (b_ip7'=0) + & (b_ip6'=b_ip7) + & (b_ip5'=b_ip6) + & (b_ip4'=b_ip5) + & (b_ip3'=b_ip4) + & (b_ip2'=b_ip3) + & (b_ip1'=b_ip2) + & (b_ip0'=b_ip1) // send message + + loss : (n'=n-1) + & (b_ip7'=0) + & (b_ip6'=b_ip7) + & (b_ip5'=b_ip6) + & (b_ip4'=b_ip5) + & (b_ip3'=b_ip4) + & (b_ip2'=b_ip3) + & (b_ip1'=b_ip2) + & (b_ip0'=b_ip1); // lose message + + // start sending message to host + [a] b=0 & n0>0 -> (1-loss) : (b'=2) & (ip_mess'=0) & (n0'=n0-1) + loss : (n0'=n0-1); // different ip + [a] b=0 & n1>0 -> (1-loss) : (b'=2) & (ip_mess'=1) & (n1'=n1-1) + loss : (n1'=n1-1); // same ip + + // finish sending message from host + [a] b=1 & ip_mess=0 -> (b'=0) & (z'=0) & (n0'=min(n0+1,B0)) & (ip_mess'=0); + [a] b=1 & ip_mess=1 -> (b'=0) & (z'=0) & (n1'=min(n1+1,B1)) & (ip_mess'=0); + [a] b=1 & ip_mess=2 -> (b'=0) & (z'=0) & (ip_mess'=0); + + // finish sending message to host + [rec0] b=2 & ip_mess=0 -> (b'=0) & (z'=0) & (ip_mess'=0); + [rec1] b=2 & ip_mess=1 -> (b'=0) & (z'=0) & (ip_mess'=0); + [rec2] b=2 & ip_mess=2 -> (b'=0) & (z'=0) & (ip_mess'=0); + +endmodule + +//------------------------------------------------------------- +// CONCRETE HOST +module host0 + + x : clock; // first clock of the host + y : clock; // second clock of the host + + coll : [0..MAXCOLL]; // number of address collisions + probes : [0..K]; // counter (number of probes sent) + mess : [0..1]; // need to send a message or not + defend : [0..1]; // defend (if =1, try to defend IP address) + + ip : [1..2]; // ip address (1 - in use & 2 - fresh) + + l : [0..4] init 1; // location + // 0 : RECONFIGURE + // 1 : RANDOM + // 2 : WAITSP + // 3 : WAITSG + // 4 : USE + + invariant + (l=0 => x<=0) & + (l=1 & coll x<=0) & + (l=1 & coll=MAXCOLL => x<=LONGWAIT) & + (l=2 => x<=CONSEC) & + (l=3 => x<=CONSEC) & + (l=4 => true) + endinvariant + + // needed to prevent environment from moving before a reset + [a] l>0 -> true; + + // RECONFIGURE + [reset] l=0 -> (l'=1); + + // RANDOM (choose IP address) + [rec0] (l=1) -> true; // get message (ignore since have no ip address) + [rec1] (l=1) -> true; // get message (ignore since have no ip address) + [rec2] (l=1) -> true; // get message (ignore since have no ip address) + // small number of collisions (choose straight away) + [] l=1 & coll 1/3*old : (l'=2) & (ip'=1) & (x'=0) + + 1/3*old : (l'=2) & (ip'=1) & (x'=1) + + 1/3*old : (l'=2) & (ip'=1) & (x'=2) + + 1/3*new : (l'=2) & (ip'=2) & (x'=0) + + 1/3*new : (l'=2) & (ip'=2) & (x'=1) + + 1/3*new : (l'=2) & (ip'=2) & (x'=2); + // large number of collisions: (wait for LONGWAIT) + [] l=1 & coll=MAXCOLL & x=LONGWAIT -> 1/3*old : (l'=2) & (ip'=1) & (x'=0) + + 1/3*old : (l'=2) & (ip'=1) & (x'=1) + + 1/3*old : (l'=2) & (ip'=1) & (x'=2) + + 1/3*new : (l'=2) & (ip'=2) & (x'=0) + + 1/3*new : (l'=2) & (ip'=2) & (x'=1) + + 1/3*new : (l'=2) & (ip'=2) & (x'=2); + + // WAITSP + // send probe + [send1] l=2 & ip=1 & probes=2 -> (x'=0) & (probes'=probes+1); + [send2] l=2 & ip=2 & probes=2 -> (x'=0) & (probes'=probes+1); + // sent K probes and waited 2 seconds + [] l=2 & probes=K & x>=2 -> (l'=3) & (probes'=0) & (coll'=0) & (x'=0); + // get message and ip does not match: ignore + [rec0] l=2 & 0!=ip -> (l'=l); + [rec1] l=2 & 1!=ip -> (l'=l); + [rec2] l=2 & 2!=ip -> (l'=l); + // get a message with matching ip: reconfigure + [rec0] l=2 & 0=ip -> (l'=0) & (coll'=min(coll+1,MAXCOLL)) & (x'=0) & (probes'=0); + [rec1] l=2 & 1=ip -> (l'=0) & (coll'=min(coll+1,MAXCOLL)) & (x'=0) & (probes'=0); + [rec2] l=2 & 2=ip -> (l'=0) & (coll'=min(coll+1,MAXCOLL)) & (x'=0) & (probes'=0); + + // receive message and same ip: defend + [rec0] l=3 & mess=0 & 0=ip & (defend=0 | y>=DEFEND) -> (defend'=1) & (mess'=1) & (y'=0); + [rec1] l=3 & mess=0 & 1=ip & (defend=0 | y>=DEFEND) -> (defend'=1) & (mess'=1) & (y'=0); + [rec2] l=3 & mess=0 & 2=ip & (defend=0 | y>=DEFEND) -> (defend'=1) & (mess'=1) & (y'=0); + // receive message and same ip: defer + [rec0] l=3 & mess=0 & 0=ip & (defend=0 | y (l'=0) & (probes'=0) & (defend'=0) & (x'=0) & (y'=0); + [rec1] l=3 & mess=0 & 1=ip & (defend=0 | y (l'=0) & (probes'=0) & (defend'=0) & (x'=0) & (y'=0); + [rec2] l=3 & mess=0 & 2=ip & (defend=0 | y (l'=0) & (probes'=0) & (defend'=0) & (x'=0) & (y'=0); + // receive message and different ip + [rec0] l=3 & mess=0 & 0!=ip -> (l'=l); + [rec1] l=3 & mess=0 & 1!=ip -> (l'=l); + [rec2] l=3 & mess=0 & 2!=ip -> (l'=l); + + // send probe reply or message for defence + [send1] l=3 & mess=1 & ip=1 -> (mess'=0); + [send2] l=3 & mess=1 & ip=2 -> (mess'=0); + // send first gratuitous arp message + [send1] l=3 & mess=0 & probes<1 & ip=1 & x>=CONSEC -> (x'=0) & (probes'=probes+1); + [send2] l=3 & mess=0 & probes<1 & ip=2 & x>=CONSEC -> (x'=0) & (probes'=probes+1); + // send second gratuitous arp message (move to use) + [send1] l=3 & mess=0 & probes=1 & ip=1 & x>=CONSEC -> (l'=4) & (x'=0) & (y'=0) & (probes'=0); + [send2] l=3 & mess=0 & probes=1 & ip=2 & x>=CONSEC -> (l'=4) & (x'=0) & (y'=0) & (probes'=0); + + // USE (only interested in reaching this state so do not need to add anything here) + [] l=4 -> true; + +endmodule + +//------------------------------------------------------------- +rewards "time" + true : 1; +endrewards + +label "done" = l=4; +label "done_error" = l=4 & ip=0; +label "done_fresh" = l=4 & ip=1; + diff --git a/prism-examples/pta/zeroconf/zeroconf-full.pctl b/prism-examples/pta/zeroconf/zeroconf-full.pctl new file mode 100644 index 00000000..632d3c94 --- /dev/null +++ b/prism-examples/pta/zeroconf/zeroconf-full.pctl @@ -0,0 +1,3 @@ +Pmin=?[F "done"] +Pmin=?[F "done_fresh"] +Pmax=?[F "done_error"] diff --git a/prism-examples/pta/zeroconf/zeroconf-full4.nm b/prism-examples/pta/zeroconf/zeroconf-full4.nm new file mode 100644 index 00000000..d87e1ddc --- /dev/null +++ b/prism-examples/pta/zeroconf/zeroconf-full4.nm @@ -0,0 +1,277 @@ +// IPv4: PTA model with digitial clocks +// one concrete host attempting to choose an ip address +// when a number of (abstract) hosts have already got ip addresses +// gxn/dxp/jzs 02/05/03 + +// reset or noreset model +const bool reset=true; + +//------------------------------------------------------------- + +// we suppose that +// - the abstract hosts have already picked their addresses +// and always defend their addresses +// - the concrete host never picks the same ip address twice +// (this can happen only with a verys small probability) + +// under these assumptions we do not need message types because: +// 1) since messages to the concrete host will never be a probe, +// this host will react to all messages in the same way +// 2) since the abstract hosts always defend their addresses, +// all messages from the host will get an arp reply if the ip matches + +// following from the above assumptions we require only three abstract IP addresses +// (0,1 and 2) which correspond to the following sets of IP addresses: + +// 0 - the IP addresses of the abstract hosts which the concrete host +// previously tried to configure +// 1 - an IP address of an abstract host which the concrete host is +// currently trying to configure +// 2 - a fresh IP address which the concrete host is currently trying to configure + +// if the host picks an address that is being used it may end up picking another ip address +// in which case there may still be messages corresponding to the old ip address +// to be sent both from and to the host which the host should now disregard +// (since it will never pick the same ip address) + +// to deal with this situation: when a host picks a new ip address we reconfigure the +// messages that are still be be sent or are being sent by changing the ip address to 0 +// (an old ip address of the host) + +// all the messages from the abstract hosts for the 'old' address (in fact the +// set of old addresses since it may have started again more than once) +// can arrive in any order since they are equivalent to the host - it ignores then all + +// also the messages for the old and new address will come from different hosts +// (the ones with that ip address) which we model by allowing them to arrive in any order +// i.e. not neccessarily in the order they where sent + +//------------------------------------------------------------- +// model is an pta +pta + +//------------------------------------------------------------- +// VARIABLES +const int N=1000; // number of abstract hosts +const int K=2; // number of probes to send +const double loss = 0.1; // probability of message loss + +// PROBABILITIES +const double old = N/65024; // probability pick an ip address being used +const double new = (1-old); // probability pick a new ip address + +// TIMING CONSTANTS +const int CONSEC = 2; // time interval between sending consecutive probles +const int TRANSTIME = 1; // upper bound on transmission time delay +const int LONGWAIT = 60; // minimum time delay after a high number of address collisions +const int DEFEND = 10; + +const int TIME_MAX_X = 60; // max value of clock x +const int TIME_MAX_Y = 10; // max value of clock y +const int TIME_MAX_Z = 1; // max value of clock z + +// OTHER CONSTANTS +const int MAXCOLL = 10; // maximum number of collisions before long wait +// size of buffers for other hosts +//const int B0 = 20; // buffer size for one abstract host +//const int B1 = 8; // buffer sizes for all abstract hosts +const int B0 = 4; // buffer size for one abstract host +const int B1 = 4; // buffer sizes for all abstract hosts + +//------------------------------------------------------------- +// ENVIRONMENT - models: medium, output buffer of concrete host and all other hosts +module environment + + // buffer of concrete host + b_ip3 : [0..2]; // ip address of message in buffer position 4 + b_ip2 : [0..2]; // ip address of message in buffer position 3 + b_ip1 : [0..2]; // ip address of message in buffer position 2 + b_ip0 : [0..2]; // ip address of message in buffer position 1 + n : [0..4]; // number of places in the buffer used (from host) + + // messages to be sent from abstract hosts to concrete host + n0 : [0..B0]; // number of messages which do not have the host's current ip address + n1 : [0..B1]; // number of messages which have the host's current ip address + + b : [0..2]; // local state + // 0 - idle + // 1 - sending message from concrete host + // 2 - sending message from abstract host + + z : clock; // clock of environment (needed for the time to send a message) + + ip_mess : [0..2]; // ip in the current message being sent + // 0 - different from concrete host + // 1 - same as the concrete host and in use + // 2 - same as the concrete host and not in use + + invariant + (b=0 & n=0 & n0=0 & n1=0 => true) & // nothing to send + (b=0 & !(n=0 & n0=0 & n1=0) => z<=0) & // something to send + (b>0 => z<=1) // sending + endinvariant + + // RESET/RECONFIG: when host is about to choose new ip address + // suppose that the host cannot choose the same ip address + // (since happens with very small probability). + // Therefore all messages will have a different ip address, + // i.e. all n1 messages become n0 ones. + // Note this include any message currently being sent (ip is set to zero 0) + [reset] true -> (n1'=0) & (n0'=min(B0,n0+n1)) // abstract buffers + & (ip_mess'=0) // message being set + & (n'=(reset)?0:n) // concrete buffer (remove this update to get NO_RESET model) + & (b_ip3'=0) + & (b_ip2'=0) + & (b_ip1'=0) + & (b_ip0'=0); + // note: prevent anything else from happening when reconfiguration needs to take place + + // get messages to be sent (so message has same ip address as host) + [send1] n=0 -> (b_ip0'=1) & (n'=n+1); + [send1] n=1 -> (b_ip1'=1) & (n'=n+1); + [send1] n=2 -> (b_ip2'=1) & (n'=n+1); + [send1] n=3 -> (b_ip3'=1) & (n'=n+1); + [send1] n=4 -> (n'=n); // buffer full so lose message + + [send2] n=0 -> (b_ip0'=2) & (n'=n+1); + [send2] n=1 -> (b_ip1'=2) & (n'=n+1); + [send2] n=2 -> (b_ip2'=2) & (n'=n+1); + [send2] n=3 -> (b_ip3'=2) & (n'=n+1); + [send2] n=4 -> (n'=n); // buffer full so lose message + + // start sending message from host + [a] b=0 & n>0 -> (1-loss) : (b'=1) & (ip_mess'=b_ip0) + & (n'=n-1) + & (b_ip3'=0) + & (b_ip2'=b_ip3) + & (b_ip1'=b_ip2) + & (b_ip0'=b_ip1) // send message + + loss : (n'=n-1) + & (b_ip3'=0) + & (b_ip2'=b_ip3) + & (b_ip1'=b_ip2) + & (b_ip0'=b_ip1); // lose message + + // start sending message to host + [a] b=0 & n0>0 -> (1-loss) : (b'=2) & (ip_mess'=0) & (n0'=n0-1) + loss : (n0'=n0-1); // different ip + [a] b=0 & n1>0 -> (1-loss) : (b'=2) & (ip_mess'=1) & (n1'=n1-1) + loss : (n1'=n1-1); // same ip + + // finish sending message from host + [a] b=1 & ip_mess=0 -> (b'=0) & (z'=0) & (n0'=min(n0+1,B0)) & (ip_mess'=0); + [a] b=1 & ip_mess=1 -> (b'=0) & (z'=0) & (n1'=min(n1+1,B1)) & (ip_mess'=0); + [a] b=1 & ip_mess=2 -> (b'=0) & (z'=0) & (ip_mess'=0); + + // finish sending message to host + [rec0] b=2 & ip_mess=0 -> (b'=0) & (z'=0) & (ip_mess'=0); + [rec1] b=2 & ip_mess=1 -> (b'=0) & (z'=0) & (ip_mess'=0); + [rec2] b=2 & ip_mess=2 -> (b'=0) & (z'=0) & (ip_mess'=0); + +endmodule + +//------------------------------------------------------------- +// CONCRETE HOST +module host0 + + x : clock; // first clock of the host + y : clock; // second clock of the host + + coll : [0..MAXCOLL]; // number of address collisions + probes : [0..K]; // counter (number of probes sent) + mess : [0..1]; // need to send a message or not + defend : [0..1]; // defend (if =1, try to defend IP address) + + ip : [1..2]; // ip address (1 - in use & 2 - fresh) + + l : [0..4] init 1; // location + // 0 : RECONFIGURE + // 1 : RANDOM + // 2 : WAITSP + // 3 : WAITSG + // 4 : USE + + invariant + (l=0 => x<=0) & + (l=1 & coll x<=0) & + (l=1 & coll=MAXCOLL => x<=LONGWAIT) & + (l=2 => x<=CONSEC) & + (l=3 => x<=CONSEC) & + (l=4 => true) + endinvariant + + // needed to prevent environment from moving before a reset + [a] l>0 -> true; + + // RECONFIGURE + [reset] l=0 -> (l'=1); + + // RANDOM (choose IP address) + [rec0] (l=1) -> true; // get message (ignore since have no ip address) + [rec1] (l=1) -> true; // get message (ignore since have no ip address) + [rec2] (l=1) -> true; // get message (ignore since have no ip address) + // small number of collisions (choose straight away) + [] l=1 & coll 1/3*old : (l'=2) & (ip'=1) & (x'=0) + + 1/3*old : (l'=2) & (ip'=1) & (x'=1) + + 1/3*old : (l'=2) & (ip'=1) & (x'=2) + + 1/3*new : (l'=2) & (ip'=2) & (x'=0) + + 1/3*new : (l'=2) & (ip'=2) & (x'=1) + + 1/3*new : (l'=2) & (ip'=2) & (x'=2); + // large number of collisions: (wait for LONGWAIT) + [] l=1 & coll=MAXCOLL & x=LONGWAIT -> 1/3*old : (l'=2) & (ip'=1) & (x'=0) + + 1/3*old : (l'=2) & (ip'=1) & (x'=1) + + 1/3*old : (l'=2) & (ip'=1) & (x'=2) + + 1/3*new : (l'=2) & (ip'=2) & (x'=0) + + 1/3*new : (l'=2) & (ip'=2) & (x'=1) + + 1/3*new : (l'=2) & (ip'=2) & (x'=2); + + // WAITSP + // send probe + [send1] l=2 & ip=1 & probes=2 -> (x'=0) & (probes'=probes+1); + [send2] l=2 & ip=2 & probes=2 -> (x'=0) & (probes'=probes+1); + // sent K probes and waited 2 seconds + [] l=2 & probes=K & x>=2 -> (l'=3) & (probes'=0) & (coll'=0) & (x'=0); + // get message and ip does not match: ignore + [rec0] l=2 & 0!=ip -> (l'=l); + [rec1] l=2 & 1!=ip -> (l'=l); + [rec2] l=2 & 2!=ip -> (l'=l); + // get a message with matching ip: reconfigure + [rec0] l=2 & 0=ip -> (l'=0) & (coll'=min(coll+1,MAXCOLL)) & (x'=0) & (probes'=0); + [rec1] l=2 & 1=ip -> (l'=0) & (coll'=min(coll+1,MAXCOLL)) & (x'=0) & (probes'=0); + [rec2] l=2 & 2=ip -> (l'=0) & (coll'=min(coll+1,MAXCOLL)) & (x'=0) & (probes'=0); + + // receive message and same ip: defend + [rec0] l=3 & mess=0 & 0=ip & (defend=0 | y>=DEFEND) -> (defend'=1) & (mess'=1) & (y'=0); + [rec1] l=3 & mess=0 & 1=ip & (defend=0 | y>=DEFEND) -> (defend'=1) & (mess'=1) & (y'=0); + [rec2] l=3 & mess=0 & 2=ip & (defend=0 | y>=DEFEND) -> (defend'=1) & (mess'=1) & (y'=0); + // receive message and same ip: defer + [rec0] l=3 & mess=0 & 0=ip & (defend=0 | y (l'=0) & (probes'=0) & (defend'=0) & (x'=0) & (y'=0); + [rec1] l=3 & mess=0 & 1=ip & (defend=0 | y (l'=0) & (probes'=0) & (defend'=0) & (x'=0) & (y'=0); + [rec2] l=3 & mess=0 & 2=ip & (defend=0 | y (l'=0) & (probes'=0) & (defend'=0) & (x'=0) & (y'=0); + // receive message and different ip + [rec0] l=3 & mess=0 & 0!=ip -> (l'=l); + [rec1] l=3 & mess=0 & 1!=ip -> (l'=l); + [rec2] l=3 & mess=0 & 2!=ip -> (l'=l); + + // send probe reply or message for defence + [send1] l=3 & mess=1 & ip=1 -> (mess'=0); + [send2] l=3 & mess=1 & ip=2 -> (mess'=0); + // send first gratuitous arp message + [send1] l=3 & mess=0 & probes<1 & ip=1 & x>=CONSEC -> (x'=0) & (probes'=probes+1); + [send2] l=3 & mess=0 & probes<1 & ip=2 & x>=CONSEC -> (x'=0) & (probes'=probes+1); + // send second gratuitous arp message (move to use) + [send1] l=3 & mess=0 & probes=1 & ip=1 & x>=CONSEC -> (l'=4) & (x'=0) & (y'=0) & (probes'=0); + [send2] l=3 & mess=0 & probes=1 & ip=2 & x>=CONSEC -> (l'=4) & (x'=0) & (y'=0) & (probes'=0); + + // USE (only interested in reaching this state so do not need to add anything here) + [] l=4 -> true; + +endmodule + +//------------------------------------------------------------- +rewards "time" + true : 1; +endrewards + +label "done" = l=4; +label "done_error" = l=4 & ip=0; +label "done_fresh" = l=4 & ip=1; + diff --git a/prism-examples/pta/zeroconf/zeroconf-simple.nm b/prism-examples/pta/zeroconf/zeroconf-simple.nm new file mode 100644 index 00000000..6ebc30bd --- /dev/null +++ b/prism-examples/pta/zeroconf/zeroconf-simple.nm @@ -0,0 +1,79 @@ +pta + +module sender + sender : [0..12] init 0; + // 0 - reconf + // 1 used0 + // 2 used1 + // 3 used2 + // 4 used3 + // 5 used_wait + // 6 used_use + // 7 fresh0 + // 8 fresh1 + // 9 fresh2 + // 10 fresh3 + // 11 fresh_wait + // 12 fresh_use + + x : clock; + + invariant + (sender=0 => x<=0) & + (sender>=1 & sender<=10 => x<=20) & + (sender>10 => true) + endinvariant + + // reconfiguring + [] sender=0 ->0.5 : (sender'=1) + 0.5 : (sender'=7); + [recv] sender=1 -> (sender'=0) & (x'=0); + [recv] sender=2 -> (sender'=0) & (x'=0); + [recv] sender=3 -> (sender'=0) & (x'=0); + [recv] sender=4 -> (sender'=0) & (x'=0); + [recv] sender=5 -> (sender'=0) & (x'=0); + [recv] sender=7 -> (sender'=0) & (x'=0); + [recv] sender=8 -> (sender'=0) & (x'=0); + [recv] sender=9 -> (sender'=0) & (x'=0); + [recv] sender=10 -> (sender'=0) & (x'=0); + [recv] sender=11 -> (sender'=0) & (x'=0); + + // sending fresh + [send_used] sender=1 & x>=20 -> (sender'=2) & (x'=0); + [send_used] sender=2 & x>=20 -> (sender'=3) & (x'=0); + [send_used] sender=3 & x>=20 -> (sender'=4) & (x'=0); + [send_used] sender=4 & x>=20 -> (sender'=5) & (x'=0); + // sending used + [send_fresh] sender=7 & x>=20 -> (sender'=8) & (x'=0); + [send_fresh] sender=8 & x>=20 -> (sender'=9) & (x'=0); + [send_fresh] sender=9 & x>=20 -> (sender'=10) & (x'=0); + [send_fresh] sender=10 & x>=20 -> (sender'=11) & (x'=0); + + // finished + [] sender=5 & x>=20 -> (sender'=6) & (x'=0); + [] sender=11 & x>=20 -> (sender'=12) & (x'=0); + [] sender=6 -> (sender'=6); + [] sender=12 -> (sender'=12); + +endmodule + +module environment + + env : [0..2] init 0; + // 0,1,2 - ready,send,reply + + y : clock; + + invariant + (env=0 => true) & + (env>=1 => y<=5) + endinvariant + + [send_fresh] env=0 -> true; + [send_used] env=0 -> 0.1 : (env'=0) & (y'=0) + 0.9 : (env'=1) & (y'=0); + [] env=1 & y>=1 -> 0.1 : (env'=0) & (y'=0) + 0.9 : (env'=2) & (y'=0); + [recv] env=2 & y>=1 -> (env'=0) & (y'=0); + +endmodule + +label "incorrect" = sender=6; + diff --git a/prism-examples/pta/zeroconf/zeroconf.nm b/prism-examples/pta/zeroconf/zeroconf.nm new file mode 100644 index 00000000..1dbf8d08 --- /dev/null +++ b/prism-examples/pta/zeroconf/zeroconf.nm @@ -0,0 +1,56 @@ +// prism model of pta version of zeroconf +// using digitial clocks + +pta + +module sender + + s : [0..2]; //local state + probes : [0..4]; // probes sent + ip : [0..2]; // ip address not chosen, fresh or in use + x : clock; // local clock + + invariant + (s=0 => x<=0) & + (s=1 => x<=20) & + (s=2 => true) + endinvariant + + // selct probe + // [] s=0 -> 0.99969242125984251969 : (s'=1) & (ip'=0) + 0.00030757874015748031 : (s'=1) & (ip'=1); + [] s=0 -> 0.5 : (s'=1) & (ip'=1) + 0.5 : (s'=1) & (ip'=2); + // send probes + [send_used] s=1 & x=20 & ip=2 & probes<4 -> (probes'=probes+1) & (x'=0); + [send_fresh] s=1 & x=20 & ip=1 & probes<4 -> (probes'=probes+1) & (x'=0); + [] s=1 & x=20 & probes=4 -> (s'=2) & (x'=0); + [recv] s=1 -> (s'=0) & (x'=0) & (ip'=0) & (probes'=0); + [] s=2 -> true; + +endmodule + +module environment + + e : [0..2]; // ready, send reply + y : clock; + + invariant + (e=0 => true) & + (e>=1 => y<=5) + endinvariant + + [send_fresh] e=0 -> true; + [send_used] e=0 -> 0.1 : (e'=0) & (y'=0) + 0.9 : (e'=1) & (y'=0); + [] e=1 & y>=1 -> 0.1 : (e'=0) & (y'=0) + 0.9 : (e'=2) & (y'=0); + [recv] e=2 & y>=1 -> (e'=0) & (y'=0); + +endmodule + + +// time +rewards "time" + true : 1; +endrewards + +label "incorrect" = s=2 & ip=2; +label "done" = s=2; +