diff --git a/examples/benchmarkRegions.sh b/examples/benchmarkRegions.sh deleted file mode 100755 index 6006f0bbe..000000000 --- a/examples/benchmarkRegions.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/bash - -if [ "$#" != 1 ]; -then - echo "Wrong number of arguments! Provide a filename for the results!" -elif [ -a $1 ]; then - echo "File for results already exists!" -else - - -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" - -executable=$DIR/../build/src/storm - -timeout="timeout 3600" - -declare -a modeltypes=("pdtmc" "pmdp") - -for modeltype in "${modeltypes[@]}" -do -if [ "$modeltype" == "pdtmc" ]; -then - declare -a models=("crowds" "nand" "brp_rewards2" "brp_rewards4" "brp") - dobisim="-bisim" -else - declare -a models=("brp" "coin2" "coin4" "zeroconf" "reporter2" "reporter4") - dobisim="" -fi - for model in "${models[@]}" - do - modelfolder="$DIR/$modeltype/$model" - suffix="-" - while read instance; - do - suffix="1$suffix" - echo "Working on $modelfolder/$instance" - echo "___WORKING ON $modeltype: $instance""____________" >>$1$suffix - echo "_________________________________________________________________________________" >> $1$suffix - $timeout "$executable" -s $modelfolder/$instance $dobisim --prop $modelfolder/$model.prctl --parametric --parametricRegion --region:regionfile $modelfolder/$model"_regions.txt" >> $1$suffix & - done < "$modelfolder/models" - wait - # write logs into result file - suffix="-" - while read instance; - do - suffix="1$suffix" - cat $1$suffix >> $1 - rm $1$suffix - done < "$modelfolder/models" - done -done -fi diff --git a/examples/benchmarkRegionsRefinement.sh b/examples/benchmarkRegionsRefinement.sh deleted file mode 100755 index b6861050c..000000000 --- a/examples/benchmarkRegionsRefinement.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/bash - -if [ "$#" != 1 ]; -then - echo "Wrong number of arguments! Provide a filename for the results!" -elif [ -a $1 ]; then - echo "File for results already exists!" -else - - -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" - -executable=$DIR/../build/src/storm - -timeout="timeout 3600" - -declare -a modeltypes=("pdtmc" "pmdp") - -for modeltype in "${modeltypes[@]}" -do -if [ "$modeltype" == "pdtmc" ]; -then - declare -a models=("crowds" "nand" "brp_rewards2" "brp_rewards4" "brp") - dobisim="-bisim" -else - declare -a models=("brp" "coin2" "coin4" "zeroconf" "reporter2" "reporter4") - dobisim="" -fi - for model in "${models[@]}" - do - modelfolder="$DIR/$modeltype/$model" - suffix="-" - while read instance; - do - suffix="1$suffix" - echo "Working on $modelfolder/$instance" - echo "___WORKING ON $modeltype: $instance""____________" >>$1$suffix - echo "_________________________________________________________________________________" >> $1$suffix - $timeout "$executable" -s $modelfolder/$instance $dobisim --prop $modelfolder/$model.prctl --parametric --parametricRegion --region:regionfile $modelfolder/$model"_space.txt" --region:refinement 0.05 --region:samplemode off >> "$1$suffix" & - done < "$modelfolder/models" - wait - # write logs into result file - suffix="-" - while read instance; - do - suffix="1$suffix" - cat $1$suffix >> $1 - rm $1$suffix - done < "$modelfolder/models" - done -done -fi diff --git a/examples/ctmc/cluster/cluster.sm b/examples/ctmc/cluster/cluster.sm deleted file mode 100644 index 2bad30ef1..000000000 --- a/examples/ctmc/cluster/cluster.sm +++ /dev/null @@ -1,116 +0,0 @@ -// Workstation cluster [HHK00] -// dxp/gxn 11/01/00 - -ctmc - -const int N; // Number of workstations in each cluster -const int left_mx = N; // Number of work stations in left cluster -const int right_mx = N; // Number of work stations in right cluster - -// Failure rates -const double ws_fail = 1/500; // Single workstation: average time to fail = 500 hrs -const double switch_fail = 1/4000; // Switch: average time to fail = 4000 hrs -const double line_fail = 1/5000; // Backbone: average time to fail = 5000 hrs - -// Left cluster -module Left - - left_n : [0..left_mx] init left_mx; // Number of workstations operational - left : bool; // Being repaired? - - [startLeft] !left & (left_n 1 : (left'=true); - [repairLeft] left & (left_n 1 : (left'=false) & (left_n'=left_n+1); - [] (left_n>0) -> ws_fail*left_n : (left_n'=left_n-1); - -endmodule - -// Right cluster -module Right = Left[left_n=right_n, - left=right, - left_mx=right_mx, - startLeft=startRight, - repairLeft=repairRight ] -endmodule - -// Repair unit -module Repairman - - r : bool; // Repairing? - - [startLeft] !r -> 10 : (r'=true); // Inspect Left - [startRight] !r -> 10 : (r'=true); // Inspect Right - [startToLeft] !r -> 10 : (r'=true); // Inspect ToLeft - [startToRight] !r -> 10 : (r'=true); // Inspect ToRight - [startLine] !r -> 10 : (r'=true); // Inspect Line - - [repairLeft] r -> 2 : (r'=false); // Repair Left - [repairRight] r -> 2 : (r'=false); // Repair Right - [repairToLeft] r -> 0.25 : (r'=false); // Repair ToLeft - [repairToRight] r -> 0.25 : (r'=false); // Repair ToRight - [repairLine] r -> 0.125 : (r'=false); // Repair Line - -endmodule - -// Line/backbone -module Line - - line : bool; // Being repaired? - line_n : bool init true; // Working? - - [startLine] !line & !line_n -> 1 : (line'=true); - [repairLine] line & !line_n -> 1 : (line'=false) & (line_n'=true); - [] line_n -> line_fail : (line_n'=false); - -endmodule - -// Left switch -module ToLeft = Line[line=toleft, - line_n=toleft_n, - line_fail=switch_fail, - startLine=startToLeft, - repairLine=repairToLeft ] -endmodule - -// Right switch -module ToRight = Line[line=toright, - line_n=toright_n, - line_fail=switch_fail, - startLine=startToRight, - repairLine=repairToRight ] -endmodule - -// Formulas + labels - -// Minimum QoS requires 3/4 connected workstations operational -const int k = floor(0.75*N); -// left_operational_i : left_n>=i & toleft_n -// right_operational_i : right_n>=i & toright_n -// operational_i : (left_n+right_n)>=i & toleft_n & line_n & toright_n -// minimum_k : left_operational_k | right_operational_k | operational_k -formula minimum = (left_n>=k & toleft_n) | - (right_n>=k & toright_n) | - ((left_n+right_n)>=k & toleft_n & line_n & toright_n); -label "minimum" = (left_n>=k & toleft_n) | (right_n>=k & toright_n) | ((left_n+right_n)>=k & toleft_n & line_n & toright_n); -// premium = minimum_N -label "premium" = (left_n>=left_mx & toleft_n) | (right_n>=right_mx & toright_n) | ((left_n+right_n)>=left_mx & toleft_n & line_n & toright_n); - -// Reward structures - -// Percentage of operational workstations stations -rewards "percent_op" - true : 100*(left_n+right_n)/(2*N); -endrewards - -// Time that the system is not delivering at least minimum QoS -rewards "time_not_min" - !minimum : 1; -endrewards - -// Number of repairs -rewards "num_repairs" - [repairLeft] true : 1; - [repairRight] true : 1; - [repairToLeft] true : 1; - [repairToRight] true : 1; - [repairLine] true : 1; -endrewards \ No newline at end of file diff --git a/examples/ctmc/embedded/embedded.sm b/examples/ctmc/embedded/embedded.sm deleted file mode 100644 index a10540597..000000000 --- a/examples/ctmc/embedded/embedded.sm +++ /dev/null @@ -1,151 +0,0 @@ -ctmc - -// constants -const int MAX_COUNT; -const int MIN_SENSORS = 2; -const int MIN_ACTUATORS = 1; - -// rates -const double lambda_p = 1/(365*24*60*60); // 1 year -const double lambda_s = 1/(30*24*60*60); // 1 month -const double lambda_a = 1/(2*30*24*60*60); // 2 months -const double tau = 1/60; // 1 min -const double delta_f = 1/(24*60*60); // 1 day -const double delta_r = 1/30; // 30 secs - -// sensors -module sensors - - s : [0..3] init 3; // number of sensors working - - [] s>1 -> s*lambda_s : (s'=s-1); // failure of a single sensor - -endmodule - -// input processor -// (takes data from sensors and passes onto main processor) -module proci - - i : [0..2] init 2; // 2=ok, 1=transient fault, 0=failed - - [] i>0 & s>=MIN_SENSORS -> lambda_p : (i'=0); // failure of processor - [] i=2 & s>=MIN_SENSORS -> delta_f : (i'=1); // transient fault - [input_reboot] i=1 & s>=MIN_SENSORS -> delta_r : (i'=2); // reboot after transient fault - -endmodule - -// actuators -module actuators - - a : [0..2] init 2; // number of actuators working - - [] a>0 -> a*lambda_a : (a'=a-1); // failure of a single actuator - -endmodule - -// output processor -// (receives instructions from main processor and passes onto actuators) -module proco = proci [ i=o, s=a, input_reboot=output_reboot, MIN_SENSORS=MIN_ACTUATORS ] endmodule - -// main processor -// (takes data from proci, processes it, and passes instructions to proco) -module procm - - m : [0..1] init 1; // 1=ok, 0=failed - count : [0..MAX_COUNT+1] init 0; // number of consecutive skipped cycles - - // failure of processor - [] m=1 -> lambda_p : (m'=0); - // processing completed before timer expires - reset skipped cycle counter - [timeout] comp -> tau : (count'=0); - // processing not completed before timer expires - increment skipped cycle counter - [timeout] !comp -> tau : (count'=min(count+1, MAX_COUNT+1)); - -endmodule - -// connecting bus -module bus - - // flags - // main processor has processed data from input processor - // and sent corresponding instructions to output processor (since last timeout) - comp : bool init true; - // input processor has data ready to send - reqi : bool init true; - // output processor has instructions ready to be processed - reqo : bool init false; - - // input processor reboots - [input_reboot] true -> 1 : - // performs a computation if has already done so or - // it is up and ouput clear (i.e. nothing waiting) - (comp'=(comp | (m=1 & !reqo))) - // up therefore something to process - & (reqi'=true) - // something to process if not functioning and either - // there is something already pending - // or the main processor sends a request - & (reqo'=!(o=2 & a>=1) & (reqo | m=1)); - - // output processor reboots - [output_reboot] true -> 1 : - // performs a computation if it has already or - // something waiting and is up - // (can be processes as the output has come up and cleared pending requests) - (comp'=(comp | (reqi & m=1))) - // something to process it they are up or - // there was already something and the main processor acts - // (output now up must be due to main processor being down) - & (reqi'=(i=2 & s>=2) | (reqi & m=0)) - // output and actuators up therefore nothing can be pending - & (reqo'=false); - - // main processor times out - [timeout] true -> 1 : - // performs a computation if it is up something was pending - // and nothing is waiting for the output - (comp'=(reqi & !reqo & m=1)) - // something to process if up or - // already something and main process cannot act - // (down or outputs pending) - & (reqi'=(i=2 & s>=2) | (reqi & (reqo | m=0))) - // something to process if they are not functioning and - // either something is already pending - // or the main processor acts - & (reqo'=!(o=2 & a>=1) & (reqo | (reqi & m=1))); - -endmodule - - -// the system is down -formula down = (i=2&s0) & (M1>0) & (P1M1<3) -> P1*min(1,np/r) : (P1'=P1-1) & (P1M1'=P1M1+1) & (M1'=M1-1); - [t1] (P1>0) & (M1=0) & (P1wM1 P1*min(1,np/r) : (P1'=P1-1) & (P1wM1'=P1wM1+1); - - [] (P1M1>0) & (P1wM1=0) & (M1<3) & (P1s 0.2*P1M1 : (P1M1'=P1M1-1) & (M1'=M1+1) & (P1s'=P1s+1); - [] (P1M1>0) & (P1wM1>0) & (P1s 0.2*P1M1 : (P1wM1'=P1wM1-1) & (P1s'=P1s+1); - - [] (P1M1>0) & (P2wP1=0) & (P1wM1=0) & (M1<3) & (P1wP2 0.05*P1M1 : (P1M1'=P1M1-1) & (M1'=M1+1) & (P1wP2'=P1wP2+1); - [] (P1M1>0) & (P2wP1=0) & (P1wM1>0) & (P1wP2 0.05*P1M1 : (P1wM1'=P1wM1-1) & (P1wP2'=P1wP2+1); - - [p1p2] (P1M1>0) & (P2wP1>0) & (P1wM1=0) & (M1<3) -> 0.05*P1M1 : (P1M1'=P1M1-1) & (M1'=M1+1); - [p1p2] (P1M1>0) & (P2wP1>0) & (P1wM1>0) -> 0.05*P1M1 : (P1wM1'=P1wM1-1); - - [p1p2] (P1wP2>0) -> 1: (P1wP2'=P1wP2-1); - [] (P1s>0) & (P1+P1s<=n) -> 1/60 : (P1s'=0) & (P1'=P1+P1s); - [fp12] (P1+P12s<=n) -> 1: (P1'=P1+P12s); - -endmodule - -module machine2 - - P2 : [0..n] init n; - P2wM2 : [0..n]; - P2M2 : [0..1]; - P2s : [0..n]; - P2wP1 : [0..n]; - M2 : [0..1] init 1; - - [t2] (P2>0) & (M2>0) & (P2M2<1) -> P2*min(1,np/r) : (P2'=P2-1) & (P2M2'=P2M2+1) & (M2'=M2-1); - [t2] (P2>0) & (M2=0) & (P2wM2 P2*min(1,np/r) : (P2'=P2-1) & (P2wM2'=P2wM2+1); - - [] (P2M2>0) & (P2wM2=0) & (M2<1) & (P2s 0.1 : (P2M2'=P2M2-1) & (M2'=M2+1) & (P2s'=P2s+1); - [] (P2M2>0) & (P2wM2>0) & (P2s 0.1 : (P2wM2'=P2wM2-1) & (P2s'=P2s+1); - - [] (P2M2>0) & (P1wP2=0) & (P2wM2=0) & (M2<1) & (P2wP1 1/15: (P2M2'=P2M2-1) & (M2'=M2+1) & (P2wP1'=P2wP1+1); - [] (P2M2>0) & (P1wP2=0) & (P2wM2>0) & (P2wP1 1/15: (P2wM2'=P2wM2-1) & (P2wP1'=P2wP1+1); - - [p1p2] (P2M2>0) & (P1wP2>0) & (P2wM2=0) & (M2<1) -> 1/15: (P2M2'=P2M2-1) & (M2'=M2+1); - [p1p2] (P2M2>0) & (P1wP2>0) & (P2wM2>0) -> 1/15: (P2wM2'=P2wM2-1); - - [p1p2] (P2wP1>0) -> 1 : (P2wP1'=P2wP1-1); - [] (P2s>0) & (P2+P2s<=n) -> 1/60 : (P2s'=0) & (P2'=P2+P2s); - [fp12] (P2+P12s<=n) -> 1 : (P2'=P2+P12s); - [p2p3] (M2>0) -> 1 : (M2'=M2); - -endmodule - -module machine3 - - P3 : [0..n] init n; - P3M2 : [0..n]; - P3s : [0..n]; - - [t3] (P3>0) & (P3M2 P3*min(1,np/r) : (P3'=P3-1) & (P3M2'=P3M2+1); - - [p2p3] (P3M2>0) & (P3s 1/2 : (P3M2'=P3M2-1) & (P3s'=P3s+1); - [] (P3s>0) & (P3+P3s<=n) -> 1/60 : (P3s'=0) & (P3'=P3+P3s); - -endmodule - -module machine12 - - P12 : [0..n]; - P12wM3 : [0..n]; - P12M3 : [0..2]; - P12s : [0..n]; - M3 : [0..2] init 2; - - [p1p2] (P12 1: (P12'=P12+1); - - [t12] (P12>0) & (M3>0) & (P12M3<2) -> P12*min(1,np/r) : (P12'=P12-1) & (P12M3'=P12M3+1) & (M3'=M3-1); - [t12] (P12>0) & (M3=0) & (P12wM3 P12*min(1,np/r) : (P12'=P12-1) & (P12wM3'=P12wM3+1); - - [] (P12M3>0) & (P12wM3=0) & (P12s P12M3 : (P12M3'=P12M3-1) & (P12s'=P12s+1) & (M3'=M3+1); - [] (P12M3>0) & (P12wM3>0) & (P12s P12M3 : (P12wM3'=P12wM3-1) & (P12s'=P12s+1); - - [fp12] (P12s>0) -> 1/60 : (P12s'=0); - -endmodule - -// reward structures - -// throughput of machine1 -rewards "throughput_m1" - [t1] true : 1; -endrewards -// throughput of machine2 -rewards "throughput_m2" - [t2] true : 1; -endrewards -// throughput of machine3 -rewards "throughput_m3" - [t3] true : 1; -endrewards -// throughput of machine12 -rewards "throughput_m12" - [t12] true : 1; -endrewards -// productivity of the system -rewards "productivity" - [t1] true : 400; - [t2] true : 600; - [t3] true : 100; - [t12] true : 1100; -endrewards diff --git a/examples/ctmc/polling/polling2.sm b/examples/ctmc/polling/polling2.sm deleted file mode 100644 index e36a8fee0..000000000 --- a/examples/ctmc/polling/polling2.sm +++ /dev/null @@ -1,51 +0,0 @@ -// polling example [IT90] -// gxn/dxp 26/01/00 - -ctmc - -const int N = 2; - -const double mu = 1; -const double gamma = 200; -const double lambda = mu/N; - -module server - - s : [1..2]; // station - a : [0..1]; // action: 0=polling, 1=serving - - [loop1a] (s=1)&(a=0) -> gamma : (s'=s+1); - [loop1b] (s=1)&(a=0) -> gamma : (a'=1); - [serve1] (s=1)&(a=1) -> mu : (s'=s+1)&(a'=0); - - [loop2a] (s=2)&(a=0) -> gamma : (s'=1); - [loop2b] (s=2)&(a=0) -> gamma : (a'=1); - [serve2] (s=2)&(a=1) -> mu : (s'=1)&(a'=0); - -endmodule - -module station1 - - s1 : [0..1]; // state of station: 0=empty, 1=full - - [loop1a] (s1=0) -> 1 : (s1'=0); - [] (s1=0) -> lambda : (s1'=1); - [loop1b] (s1=1) -> 1 : (s1'=1); - [serve1] (s1=1) -> 1 : (s1'=0); - -endmodule - -// construct further stations through renaming - -module station2 = station1 [ s1=s2, loop1a=loop2a, loop1b=loop2b, serve1=serve2 ] endmodule -// (cumulative) rewards - -// expected time station 1 is waiting to be served -rewards "waiting" - s1=1 & !(s=1 & a=1) : 1; -endrewards - -// expected number of times station 1 is served -rewards "served" - [serve1] true : 1; -endrewards \ No newline at end of file diff --git a/examples/ctmc/polling/polling5.sm b/examples/ctmc/polling/polling5.sm deleted file mode 100644 index 931569ad5..000000000 --- a/examples/ctmc/polling/polling5.sm +++ /dev/null @@ -1,66 +0,0 @@ -// polling example [IT90] -// gxn/dxp 26/01/00 - -ctmc - -const int N = 5; - -const double mu = 1; -const double gamma = 200; -const double lambda = mu/N; - -module server - - s : [1..5]; // station - a : [0..1]; // action: 0=polling, 1=serving - - [loop1a] (s=1)&(a=0) -> gamma : (s'=s+1); - [loop1b] (s=1)&(a=0) -> gamma : (a'=1); - [serve1] (s=1)&(a=1) -> mu : (s'=s+1)&(a'=0); - - [loop2a] (s=2)&(a=0) -> gamma : (s'=s+1); - [loop2b] (s=2)&(a=0) -> gamma : (a'=1); - [serve2] (s=2)&(a=1) -> mu : (s'=s+1)&(a'=0); - - [loop3a] (s=3)&(a=0) -> gamma : (s'=s+1); - [loop3b] (s=3)&(a=0) -> gamma : (a'=1); - [serve3] (s=3)&(a=1) -> mu : (s'=s+1)&(a'=0); - - [loop4a] (s=4)&(a=0) -> gamma : (s'=s+1); - [loop4b] (s=4)&(a=0) -> gamma : (a'=1); - [serve4] (s=4)&(a=1) -> mu : (s'=s+1)&(a'=0); - - [loop5a] (s=5)&(a=0) -> gamma : (s'=1); - [loop5b] (s=5)&(a=0) -> gamma : (a'=1); - [serve5] (s=5)&(a=1) -> mu : (s'=1)&(a'=0); - -endmodule - -module station1 - - s1 : [0..1]; // state of station: 0=empty, 1=full - - [loop1a] (s1=0) -> 1 : (s1'=0); - [] (s1=0) -> lambda : (s1'=1); - [loop1b] (s1=1) -> 1 : (s1'=1); - [serve1] (s1=1) -> 1 : (s1'=0); - -endmodule - -// construct further stations through renaming - -module station2 = station1 [ s1=s2, loop1a=loop2a, loop1b=loop2b, serve1=serve2 ] endmodule -module station3 = station1 [ s1=s3, loop1a=loop3a, loop1b=loop3b, serve1=serve3 ] endmodule -module station4 = station1 [ s1=s4, loop1a=loop4a, loop1b=loop4b, serve1=serve4 ] endmodule -module station5 = station1 [ s1=s5, loop1a=loop5a, loop1b=loop5b, serve1=serve5 ] endmodule -// (cumulative) rewards - -// expected time station 1 is waiting to be served -rewards "waiting" - s1=1 & !(s=1 & a=1) : 1; -endrewards - -// expected number of times station 1 is served -rewards "served" - [serve1] true : 1; -endrewards \ No newline at end of file diff --git a/examples/ctmc/tandem/tandem.sm b/examples/ctmc/tandem/tandem.sm deleted file mode 100644 index c35246e1a..000000000 --- a/examples/ctmc/tandem/tandem.sm +++ /dev/null @@ -1,42 +0,0 @@ -// tandem queueing network [HKMKS99] -// gxn/dxp 25/01/00 - -ctmc - -const int c; // queue capacity - -const double lambda = 4*c; -const double mu1a = 0.1*2; -const double mu1b = 0.9*2; -const double mu2 = 2; -const double kappa = 4; - -module serverC - - sc : [0..c]; - ph : [1..2]; - - [] (sc lambda: (sc'=sc+1); - [route] (sc>0) & (ph=1) -> mu1b: (sc'=sc-1); - [] (sc>0) & (ph=1) -> mu1a: (ph'=2); - [route] (sc>0) & (ph=2) -> mu2: (ph'=1) & (sc'=sc-1); - -endmodule - -module serverM - - sm : [0..c]; - - [route] (sm 1: (sm'=sm+1); - [] (sm>0) -> kappa: (sm'=sm-1); - -endmodule - -// reward - number of customers in network -rewards "customers" - true : sc + sm; -endrewards - -label "network_full" = sc=c&sm=c&ph=2; -label "first_queue_full" = sc=c; -label "second_queue_full" = sm=c; diff --git a/examples/ctmc/tiny/tiny.sm b/examples/ctmc/tiny/tiny.sm deleted file mode 100644 index df193c827..000000000 --- a/examples/ctmc/tiny/tiny.sm +++ /dev/null @@ -1,11 +0,0 @@ -ctmc - -module one - s : [0 .. 3] init 0; - - [] s<3 -> 3/2 : (s'=s+1); - [] s>0 -> 3 : (s'=s-1); -endmodule - -label "empty" = s=0; -label "full" = s=3; diff --git a/examples/dtmc/brp/brp.pm b/examples/dtmc/brp/brp.pm deleted file mode 100644 index e09ed3e2c..000000000 --- a/examples/dtmc/brp/brp.pm +++ /dev/null @@ -1,136 +0,0 @@ -// bounded retransmission protocol [D'AJJL01] -// gxn/dxp 23/05/2001 - -dtmc - -// number of chunks -const int N; -// maximum number of retransmissions -const int MAX; - -module sender - - 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; - - // 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); - // wait_ack - [aB] (s=2) -> (s'=4) & (s_ab'=!s_ab); - [TO_Msg] (s=2) -> (s'=3); - [TO_Ack] (s=2) -> (s'=3); - // retransmit - [aF] (s=3) & (nrtr (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1); - [] (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 - - k : [0..2]; - - // idle - [aF] (k=0) -> 0.98 : (k'=1) + 0.02 : (k'=2); - // sending - [aG] (k=1) -> (k'=0); - // lost - [TO_Msg] (k=2) -> (k'=0); - -endmodule - -module channelL - - l : [0..2]; - - // idle - [aA] (l=0) -> 0.99 : (l'=1) + 0.01 : (l'=2); - // sending - [aB] (l=1) -> (l'=0); - // lost - [TO_Ack] (l=2) -> (l'=0); - -endmodule - -rewards - [aF] i=1 : 1; -endrewards - -label "target" = s=5; diff --git a/examples/dtmc/brp/brp_2_16.pm b/examples/dtmc/brp/brp_2_16.pm deleted file mode 100644 index 525b40deb..000000000 --- a/examples/dtmc/brp/brp_2_16.pm +++ /dev/null @@ -1,139 +0,0 @@ -// bounded retransmission protocol [D'AJJL01] -// gxn/dxp 23/05/2001 - -dtmc - - -// reliability of channels -const double pL; -const double pK; - - -// number of chunks -const int N = 16; -// maximum number of retransmissions -const int MAX = 2; - -module sender - - 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; - - // 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); - // wait_ack - [aB] (s=2) -> (s'=4) & (s_ab'=!s_ab); - [TO_Msg] (s=2) -> (s'=3); - [TO_Ack] (s=2) -> (s'=3); - // retransmit - [aF] (s=3) & (nrtr (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1); - [] (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 - -// prevents more than one file being sent -module tester - - T : bool; - - [NewFile] (T=false) -> (T'=true); - -endmodule - -module channelK - - k : [0..2]; - - // idle - [aF] (k=0) -> pK : (k'=1) + 1-pK : (k'=2); - // sending - [aG] (k=1) -> (k'=0); - // lost - [TO_Msg] (k=2) -> (k'=0); - -endmodule - -module channelL - - l : [0..2]; - - // idle - [aA] (l=0) -> pL : (l'=1) + 1-pL : (l'=2); - // sending - [aB] (l=1) -> (l'=0); - // lost - [TO_Ack] (l=2) -> (l'=0); - -endmodule - -label "error" = s=5; diff --git a/examples/dtmc/crowds/crowds.pctl b/examples/dtmc/crowds/crowds.pctl deleted file mode 100644 index 653da5713..000000000 --- a/examples/dtmc/crowds/crowds.pctl +++ /dev/null @@ -1,3 +0,0 @@ -P=? [ F observe0Greater1 ] -P=? [ F observeIGreater1 ] -P=? [ F observeOnlyTrueSender ] diff --git a/examples/dtmc/crowds/crowds.pm b/examples/dtmc/crowds/crowds.pm deleted file mode 100644 index 53eb7b75e..000000000 --- a/examples/dtmc/crowds/crowds.pm +++ /dev/null @@ -1,177 +0,0 @@ -// CROWDS [Reiter,Rubin] -// Vitaly Shmatikov, 2002 - -// Note: -// Change everything marked CWDSIZ when changing the size of the crowd -// Change everything marked CWDMAX when increasing max size of the crowd - -dtmc - -// Probability of forwarding -const double PF = 0.8; - -// Probability that a crowd member is bad -const double badC = 0.091; -// const double badC = 0.167; - -const int TotalRuns; // Total number of protocol runs to analyze -const int CrowdSize; // CWDSIZ: actual number of good crowd members -const int MaxGood=20; // CWDMAX: maximum number of good crowd members - -// Process definitions -module crowds - - // Auxiliary variables - launch: bool init true; // Start modeling? - new: bool init false; // Initialize a new protocol instance? - runCount: [0..TotalRuns] init TotalRuns; // Counts protocol instances - start: bool init false; // Start the protocol? - run: bool init false; // Run the protocol? - lastSeen: [0..MaxGood] init MaxGood; // Last crowd member to touch msg - good: bool init false; // Crowd member is good? - bad: bool init false; // ... bad? - recordLast: bool init false; // Record last seen crowd member? - badObserve: bool init false; // Bad members observes who sent msg? - deliver: bool init false; // Deliver message to destination? - done: bool init false; // Protocol instance finished? - - // Counters for attackers' observations - // CWDMAX: 1 counter per each good crowd member - observe0: [0..TotalRuns] init 0; - observe1: [0..TotalRuns] init 0; - observe2: [0..TotalRuns] init 0; - observe3: [0..TotalRuns] init 0; - observe4: [0..TotalRuns] init 0; - observe5: [0..TotalRuns] init 0; - observe6: [0..TotalRuns] init 0; - observe7: [0..TotalRuns] init 0; - observe8: [0..TotalRuns] init 0; - observe9: [0..TotalRuns] init 0; - observe10: [0..TotalRuns] init 0; - observe11: [0..TotalRuns] init 0; - observe12: [0..TotalRuns] init 0; - observe13: [0..TotalRuns] init 0; - observe14: [0..TotalRuns] init 0; - observe15: [0..TotalRuns] init 0; - observe16: [0..TotalRuns] init 0; - observe17: [0..TotalRuns] init 0; - observe18: [0..TotalRuns] init 0; - observe19: [0..TotalRuns] init 0; - - [] launch -> (new'=true) & (runCount'=TotalRuns) & (launch'=false); - // Set up a new protocol instance - [] new & runCount>0 -> (runCount'=runCount-1) & (new'=false) & (start'=true); - - // SENDER - // Start the protocol - [] start -> (lastSeen'=0) & (run'=true) & (deliver'=false) & (start'=false); - - // CROWD MEMBERS - // Good or bad crowd member? - [] !good & !bad & !deliver & run -> - 1-badC : (good'=true) & (recordLast'=true) & (run'=false) + - badC : (bad'=true) & (badObserve'=true) & (run'=false); - - // GOOD MEMBERS - // Forward with probability PF, else deliver - [] good & !deliver & run -> PF : (good'=false) + 1-PF : (deliver'=true); - // Record the last crowd member who touched the msg; - // all good members may appear with equal probability - // Note: This is backward. In the real protocol, each honest - // forwarder randomly chooses the next forwarder. - // Here, the identity of an honest forwarder is randomly - // chosen *after* it has forwarded the message. - [] recordLast & CrowdSize=2 -> - 1/2 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/2 : (lastSeen'=1) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=4 -> - 1/4 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/4 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/4 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/4 : (lastSeen'=3) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=5 -> - 1/5 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=4) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=10 -> - 1/10 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=4) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=5) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=6) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=7) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=8) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=9) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=15 -> - 1/15 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=4) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=5) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=6) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=7) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=8) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=9) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=10) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=11) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=12) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=13) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=14) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=20 -> - 1/20 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=4) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=5) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=6) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=7) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=8) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=9) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=10) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=11) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=12) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=13) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=14) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=15) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=16) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=17) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=18) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=19) & (recordLast'=false) & (run'=true); - - // BAD MEMBERS - // Remember from whom the message was received and deliver - // CWDMAX: 1 rule per each good crowd member - [] lastSeen=0 & badObserve & observe0 (observe0' =observe0 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=1 & badObserve & observe1 (observe1' =observe1 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=2 & badObserve & observe2 (observe2' =observe2 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=3 & badObserve & observe3 (observe3' =observe3 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=4 & badObserve & observe4 (observe4' =observe4 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=5 & badObserve & observe5 (observe5' =observe5 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=6 & badObserve & observe6 (observe6' =observe6 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=7 & badObserve & observe7 (observe7' =observe7 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=8 & badObserve & observe8 (observe8' =observe8 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=9 & badObserve & observe9 (observe9' =observe9 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=10 & badObserve & observe10 (observe10'=observe10+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=11 & badObserve & observe11 (observe11'=observe11+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=12 & badObserve & observe12 (observe12'=observe12+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=13 & badObserve & observe13 (observe13'=observe13+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=14 & badObserve & observe14 (observe14'=observe14+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=15 & badObserve & observe15 (observe15'=observe15+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=16 & badObserve & observe16 (observe16'=observe16+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=17 & badObserve & observe17 (observe17'=observe17+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=18 & badObserve & observe18 (observe18'=observe18+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=19 & badObserve & observe19 (observe19'=observe19+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - - // RECIPIENT - // Delivery to destination - [] deliver & run -> (done'=true) & (deliver'=false) & (run'=false) & (good'=false) & (bad'=false); - // Start a new instance - [] done -> (new'=true) & (done'=false) & (run'=false) & (lastSeen'=MaxGood); - -endmodule diff --git a/examples/dtmc/crowds/crowds.res b/examples/dtmc/crowds/crowds.res deleted file mode 100644 index 8e41056f7..000000000 --- a/examples/dtmc/crowds/crowds.res +++ /dev/null @@ -1,19 +0,0 @@ -// 5/5 -P=? [ F "observe0Greater1" ] // 0.3328777473921436 -P=? [ F "observeIGreater1" ] // 0.15221847380560186 -P=? [ F "observeOnlyTrueSender" ] // 0.3215351607995943 - -// 10/5 -P=? [ F "observe0Greater1" ] // 0.26345583706046355 -P=? [ F "observeIGreater1" ] // 0.09236405558901994 -P=? [ F "observeOnlyTrueSender" ] // 0.25849872034453947 - -// 15/5 -P=? [ F "observe0Greater1" ] // 0.2408422942249347 -P=? [ F "observeIGreater1" ] // 0.0655686905854717 -P=? [ F "observeOnlyTrueSender" ] // 0.2377298605519743 - -// 20/5 -P=? [ F "observe0Greater1" ] // 0.22967858575985317 -P=? [ F "observeIGreater1" ] // 0.05073192927314383 -P=? [ F "observeOnlyTrueSender" ] // 0.22742031678667812 diff --git a/examples/dtmc/crowds/crowds10_5.pm b/examples/dtmc/crowds/crowds10_5.pm deleted file mode 100644 index 2dfdfdc3a..000000000 --- a/examples/dtmc/crowds/crowds10_5.pm +++ /dev/null @@ -1,80 +0,0 @@ -dtmc - -// probability of forwarding -const double PF = 4/5; -const double notPF = 1/5; // must be 1-PF -// probability that a crowd member is bad -const double badC = 167/1000; - // probability that a crowd member is good -const double goodC = 833/1000; -// Total number of protocol runs to analyze -const int TotalRuns = 5; -// size of the crowd -const int CrowdSize = 10; - -module crowds - // protocol phase - phase: [0..4] init 0; - - // crowd member good (or bad) - good: bool init false; - - // number of protocol runs - runCount: [0..TotalRuns] init 0; - - // observe_i is the number of times the attacker observed crowd member i - observe0: [0..TotalRuns] init 0; - - observe1: [0..TotalRuns] init 0; - - observe2: [0..TotalRuns] init 0; - - observe3: [0..TotalRuns] init 0; - - observe4: [0..TotalRuns] init 0; - - observe5: [0..TotalRuns] init 0; - - observe6: [0..TotalRuns] init 0; - - observe7: [0..TotalRuns] init 0; - - observe8: [0..TotalRuns] init 0; - - observe9: [0..TotalRuns] init 0; - - // the last seen crowd member - lastSeen: [0..CrowdSize - 1] init 0; - - // get the protocol started - [] phase=0 & runCount (phase'=1) & (runCount'=runCount+1) & (lastSeen'=0); - - // decide whether crowd member is good or bad according to given probabilities - [] phase=1 -> goodC : (phase'=2) & (good'=true) + badC : (phase'=2) & (good'=false); - - // if the current member is a good member, update the last seen index (chosen uniformly) - [] phase=2 & good -> 1/10 : (lastSeen'=0) & (phase'=3) + 1/10 : (lastSeen'=1) & (phase'=3) + 1/10 : (lastSeen'=2) & (phase'=3) + 1/10 : (lastSeen'=3) & (phase'=3) + 1/10 : (lastSeen'=4) & (phase'=3) + 1/10 : (lastSeen'=5) & (phase'=3) + 1/10 : (lastSeen'=6) & (phase'=3) + 1/10 : (lastSeen'=7) & (phase'=3) + 1/10 : (lastSeen'=8) & (phase'=3) + 1/10 : (lastSeen'=9) & (phase'=3); - - // if the current member is a bad member, record the most recently seen index - [] phase=2 & !good & lastSeen=0 & observe0 < TotalRuns -> (observe0'=observe0+1) & (phase'=4); - [] phase=2 & !good & lastSeen=1 & observe1 < TotalRuns -> (observe1'=observe1+1) & (phase'=4); - [] phase=2 & !good & lastSeen=2 & observe2 < TotalRuns -> (observe2'=observe2+1) & (phase'=4); - [] phase=2 & !good & lastSeen=3 & observe3 < TotalRuns -> (observe3'=observe3+1) & (phase'=4); - [] phase=2 & !good & lastSeen=4 & observe4 < TotalRuns -> (observe4'=observe4+1) & (phase'=4); - [] phase=2 & !good & lastSeen=5 & observe5 < TotalRuns -> (observe5'=observe5+1) & (phase'=4); - [] phase=2 & !good & lastSeen=6 & observe6 < TotalRuns -> (observe6'=observe6+1) & (phase'=4); - [] phase=2 & !good & lastSeen=7 & observe7 < TotalRuns -> (observe7'=observe7+1) & (phase'=4); - [] phase=2 & !good & lastSeen=8 & observe8 < TotalRuns -> (observe8'=observe8+1) & (phase'=4); - [] phase=2 & !good & lastSeen=9 & observe9 < TotalRuns -> (observe9'=observe9+1) & (phase'=4); - - // good crowd members forward with probability PF and deliver otherwise - [] phase=3 -> PF : (phase'=1) + notPF : (phase'=4); - - // deliver the message and start over - [] phase=4 -> (phase'=0); - -endmodule - -label "observe0Greater1" = observe0 > 1; -label "observeIGreater1" = observe1 > 1 | observe2 > 1 | observe3 > 1 | observe4 > 1 | observe5 > 1 | observe6 > 1 | observe7 > 1 | observe8 > 1 | observe9 > 1; -label "observeOnlyTrueSender" = observe0 > 1 & observe1 <= 1 & observe2 <= 1 & observe3 <= 1 & observe4 <= 1 & observe5 <= 1 & observe6 <= 1 & observe7 <= 1 & observe8 <= 1 & observe9 <= 1; diff --git a/examples/dtmc/crowds/crowds15_5.pm b/examples/dtmc/crowds/crowds15_5.pm deleted file mode 100644 index 31ffefc0f..000000000 --- a/examples/dtmc/crowds/crowds15_5.pm +++ /dev/null @@ -1,95 +0,0 @@ -dtmc - -// probability of forwarding -const double PF = 4/5; -const double notPF = 1/5; // must be 1-PF -// probability that a crowd member is bad -const double badC = 167/1000; - // probability that a crowd member is good -const double goodC = 833/1000; -// Total number of protocol runs to analyze -const int TotalRuns = 5; -// size of the crowd -const int CrowdSize = 15; - -module crowds - // protocol phase - phase: [0..4] init 0; - - // crowd member good (or bad) - good: bool init false; - - // number of protocol runs - runCount: [0..TotalRuns] init 0; - - // observe_i is the number of times the attacker observed crowd member i - observe0: [0..TotalRuns] init 0; - - observe1: [0..TotalRuns] init 0; - - observe2: [0..TotalRuns] init 0; - - observe3: [0..TotalRuns] init 0; - - observe4: [0..TotalRuns] init 0; - - observe5: [0..TotalRuns] init 0; - - observe6: [0..TotalRuns] init 0; - - observe7: [0..TotalRuns] init 0; - - observe8: [0..TotalRuns] init 0; - - observe9: [0..TotalRuns] init 0; - - observe10: [0..TotalRuns] init 0; - - observe11: [0..TotalRuns] init 0; - - observe12: [0..TotalRuns] init 0; - - observe13: [0..TotalRuns] init 0; - - observe14: [0..TotalRuns] init 0; - - // the last seen crowd member - lastSeen: [0..CrowdSize - 1] init 0; - - // get the protocol started - [] phase=0 & runCount 1: (phase'=1) & (runCount'=runCount+1) & (lastSeen'=0); - - // decide whether crowd member is good or bad according to given probabilities - [] phase=1 -> goodC : (phase'=2) & (good'=true) + badC : (phase'=2) & (good'=false); - - // if the current member is a good member, update the last seen index (chosen uniformly) - [] phase=2 & good -> 1/15 : (lastSeen'=0) & (phase'=3) + 1/15 : (lastSeen'=1) & (phase'=3) + 1/15 : (lastSeen'=2) & (phase'=3) + 1/15 : (lastSeen'=3) & (phase'=3) + 1/15 : (lastSeen'=4) & (phase'=3) + 1/15 : (lastSeen'=5) & (phase'=3) + 1/15 : (lastSeen'=6) & (phase'=3) + 1/15 : (lastSeen'=7) & (phase'=3) + 1/15 : (lastSeen'=8) & (phase'=3) + 1/15 : (lastSeen'=9) & (phase'=3) + 1/15 : (lastSeen'=10) & (phase'=3) + 1/15 : (lastSeen'=11) & (phase'=3) + 1/15 : (lastSeen'=12) & (phase'=3) + 1/15 : (lastSeen'=13) & (phase'=3) + 1/15 : (lastSeen'=14) & (phase'=3); - - // if the current member is a bad member, record the most recently seen index - [] phase=2 & !good & lastSeen=0 & observe0 < TotalRuns -> 1: (observe0'=observe0+1) & (phase'=4); - [] phase=2 & !good & lastSeen=1 & observe1 < TotalRuns -> 1: (observe1'=observe1+1) & (phase'=4); - [] phase=2 & !good & lastSeen=2 & observe2 < TotalRuns -> 1: (observe2'=observe2+1) & (phase'=4); - [] phase=2 & !good & lastSeen=3 & observe3 < TotalRuns -> 1: (observe3'=observe3+1) & (phase'=4); - [] phase=2 & !good & lastSeen=4 & observe4 < TotalRuns -> 1: (observe4'=observe4+1) & (phase'=4); - [] phase=2 & !good & lastSeen=5 & observe5 < TotalRuns -> 1: (observe5'=observe5+1) & (phase'=4); - [] phase=2 & !good & lastSeen=6 & observe6 < TotalRuns -> 1: (observe6'=observe6+1) & (phase'=4); - [] phase=2 & !good & lastSeen=7 & observe7 < TotalRuns -> 1: (observe7'=observe7+1) & (phase'=4); - [] phase=2 & !good & lastSeen=8 & observe8 < TotalRuns -> 1: (observe8'=observe8+1) & (phase'=4); - [] phase=2 & !good & lastSeen=9 & observe9 < TotalRuns -> 1: (observe9'=observe9+1) & (phase'=4); - [] phase=2 & !good & lastSeen=10 & observe10 < TotalRuns -> 1: (observe10'=observe10+1) & (phase'=4); - [] phase=2 & !good & lastSeen=11 & observe11 < TotalRuns -> 1: (observe11'=observe11+1) & (phase'=4); - [] phase=2 & !good & lastSeen=12 & observe12 < TotalRuns -> 1: (observe12'=observe12+1) & (phase'=4); - [] phase=2 & !good & lastSeen=13 & observe13 < TotalRuns -> 1: (observe13'=observe13+1) & (phase'=4); - [] phase=2 & !good & lastSeen=14 & observe14 < TotalRuns -> 1: (observe14'=observe14+1) & (phase'=4); - - // good crowd members forward with probability PF and deliver otherwise - [] phase=3 -> PF : (phase'=1) + notPF : (phase'=4); - - // deliver the message and start over - [] phase=4 -> 1: (phase'=0); - -endmodule - -label "observe0Greater1" = observe0 > 1; -label "observeIGreater1" = observe1 > 1 | observe2 > 1 | observe3 > 1 | observe4 > 1 | observe5 > 1 | observe6 > 1 | observe7 > 1 | observe8 > 1 | observe9 > 1 | observe10 > 1 | observe11 > 1 | observe12 > 1 | observe13 > 1 | observe14 > 1; -label "observeOnlyTrueSender" = observe0 > 1 & observe1 <= 1 & observe2 <= 1 & observe3 <= 1 & observe4 <= 1 & observe5 <= 1 & observe6 <= 1 & observe7 <= 1 & observe8 <= 1 & observe9 <= 1 & observe10 <= 1 & observe11 <= 1 & observe12 <= 1 & observe13 <= 1 & observe14 <= 1; diff --git a/examples/dtmc/crowds/crowds20_5.pm b/examples/dtmc/crowds/crowds20_5.pm deleted file mode 100644 index ffe4c9a4f..000000000 --- a/examples/dtmc/crowds/crowds20_5.pm +++ /dev/null @@ -1,111 +0,0 @@ -dtmc - -// probability of forwarding -const double PF = 4/5; -const double notPF = 1/5; // must be 1-PF -// probability that a crowd member is bad -const double badC = 167/1000; - // probability that a crowd member is good -const double goodC = 833/1000; -// Total number of protocol runs to analyze -const int TotalRuns = 5; -// size of the crowd -const int CrowdSize = 20; - -module crowds - // protocol phase - phase: [0..4] init 0; - - // crowd member good (or bad) - good: bool init false; - - // number of protocol runs - runCount: [0..TotalRuns] init 0; - - // observe_i is the number of times the attacker observed crowd member i - observe0: [0..TotalRuns] init 0; - - observe1: [0..TotalRuns] init 0; - - observe2: [0..TotalRuns] init 0; - - observe3: [0..TotalRuns] init 0; - - observe4: [0..TotalRuns] init 0; - - observe5: [0..TotalRuns] init 0; - - observe6: [0..TotalRuns] init 0; - - observe7: [0..TotalRuns] init 0; - - observe8: [0..TotalRuns] init 0; - - observe9: [0..TotalRuns] init 0; - - observe10: [0..TotalRuns] init 0; - - observe11: [0..TotalRuns] init 0; - - observe12: [0..TotalRuns] init 0; - - observe13: [0..TotalRuns] init 0; - - observe14: [0..TotalRuns] init 0; - - observe15: [0..TotalRuns] init 0; - - observe16: [0..TotalRuns] init 0; - - observe17: [0..TotalRuns] init 0; - - observe18: [0..TotalRuns] init 0; - - observe19: [0..TotalRuns] init 0; - - // the last seen crowd member - lastSeen: [0..CrowdSize - 1] init 0; - - // get the protocol started - [] phase=0 & runCount 1:(phase'=1) & (runCount'=runCount+1) & (lastSeen'=0); - - // decide whether crowd member is good or bad according to given probabilities - [] phase=1 -> goodC : (phase'=2) & (good'=true) + badC : (phase'=2) & (good'=false); - - // if the current member is a good member, update the last seen index (chosen uniformly) - [] phase=2 & good -> 1/20 : (lastSeen'=0) & (phase'=3) + 1/20 : (lastSeen'=1) & (phase'=3) + 1/20 : (lastSeen'=2) & (phase'=3) + 1/20 : (lastSeen'=3) & (phase'=3) + 1/20 : (lastSeen'=4) & (phase'=3) + 1/20 : (lastSeen'=5) & (phase'=3) + 1/20 : (lastSeen'=6) & (phase'=3) + 1/20 : (lastSeen'=7) & (phase'=3) + 1/20 : (lastSeen'=8) & (phase'=3) + 1/20 : (lastSeen'=9) & (phase'=3) + 1/20 : (lastSeen'=10) & (phase'=3) + 1/20 : (lastSeen'=11) & (phase'=3) + 1/20 : (lastSeen'=12) & (phase'=3) + 1/20 : (lastSeen'=13) & (phase'=3) + 1/20 : (lastSeen'=14) & (phase'=3) + 1/20 : (lastSeen'=15) & (phase'=3) + 1/20 : (lastSeen'=16) & (phase'=3) + 1/20 : (lastSeen'=17) & (phase'=3) + 1/20 : (lastSeen'=18) & (phase'=3) + 1/20 : (lastSeen'=19) & (phase'=3); - - // if the current member is a bad member, record the most recently seen index - [] phase=2 & !good & lastSeen=0 & observe0 < TotalRuns -> 1:(observe0'=observe0+1) & (phase'=4); - [] phase=2 & !good & lastSeen=1 & observe1 < TotalRuns -> 1:(observe1'=observe1+1) & (phase'=4); - [] phase=2 & !good & lastSeen=2 & observe2 < TotalRuns -> 1:(observe2'=observe2+1) & (phase'=4); - [] phase=2 & !good & lastSeen=3 & observe3 < TotalRuns -> 1:(observe3'=observe3+1) & (phase'=4); - [] phase=2 & !good & lastSeen=4 & observe4 < TotalRuns -> 1:(observe4'=observe4+1) & (phase'=4); - [] phase=2 & !good & lastSeen=5 & observe5 < TotalRuns -> 1:(observe5'=observe5+1) & (phase'=4); - [] phase=2 & !good & lastSeen=6 & observe6 < TotalRuns -> 1:(observe6'=observe6+1) & (phase'=4); - [] phase=2 & !good & lastSeen=7 & observe7 < TotalRuns -> 1:(observe7'=observe7+1) & (phase'=4); - [] phase=2 & !good & lastSeen=8 & observe8 < TotalRuns -> 1:(observe8'=observe8+1) & (phase'=4); - [] phase=2 & !good & lastSeen=9 & observe9 < TotalRuns -> 1:(observe9'=observe9+1) & (phase'=4); - [] phase=2 & !good & lastSeen=10 & observe10 < TotalRuns -> 1:(observe10'=observe10+1) & (phase'=4); - [] phase=2 & !good & lastSeen=11 & observe11 < TotalRuns -> 1:(observe11'=observe11+1) & (phase'=4); - [] phase=2 & !good & lastSeen=12 & observe12 < TotalRuns -> 1:(observe12'=observe12+1) & (phase'=4); - [] phase=2 & !good & lastSeen=13 & observe13 < TotalRuns -> 1:(observe13'=observe13+1) & (phase'=4); - [] phase=2 & !good & lastSeen=14 & observe14 < TotalRuns -> 1:(observe14'=observe14+1) & (phase'=4); - [] phase=2 & !good & lastSeen=15 & observe15 < TotalRuns -> 1:(observe15'=observe15+1) & (phase'=4); - [] phase=2 & !good & lastSeen=16 & observe16 < TotalRuns -> 1:(observe16'=observe16+1) & (phase'=4); - [] phase=2 & !good & lastSeen=17 & observe17 < TotalRuns -> 1:(observe17'=observe17+1) & (phase'=4); - [] phase=2 & !good & lastSeen=18 & observe18 < TotalRuns -> 1:(observe18'=observe18+1) & (phase'=4); - [] phase=2 & !good & lastSeen=19 & observe19 < TotalRuns -> 1:(observe19'=observe19+1) & (phase'=4); - - // good crowd members forward with probability PF and deliver otherwise - [] phase=3 -> PF : (phase'=1) + notPF : (phase'=4); - - // deliver the message and start over - [] phase=4 -> 1:(phase'=0); - -endmodule - -label "observe0Greater1" = observe0 > 1; -label "observeIGreater1" = observe1 > 1 | observe2 > 1 | observe3 > 1 | observe4 > 1 | observe5 > 1 | observe6 > 1 | observe7 > 1 | observe8 > 1 | observe9 > 1 | observe10 > 1 | observe11 > 1 | observe12 > 1 | observe13 > 1 | observe14 > 1 | observe15 > 1 | observe16 > 1 | observe17 > 1 | observe18 > 1 | observe19 > 1; -label "observeOnlyTrueSender" = observe0 > 1 & observe1 <= 1 & observe2 <= 1 & observe3 <= 1 & observe4 <= 1 & observe5 <= 1 & observe6 <= 1 & observe7 <= 1 & observe8 <= 1 & observe9 <= 1 & observe10 <= 1 & observe11 <= 1 & observe12 <= 1 & observe13 <= 1 & observe14 <= 1 & observe15 <= 1 & observe16 <= 1 & observe17 <= 1 & observe18 <= 1 & observe19 <= 1; - diff --git a/examples/dtmc/crowds/crowds5_5.pm b/examples/dtmc/crowds/crowds5_5.pm deleted file mode 100644 index be995c528..000000000 --- a/examples/dtmc/crowds/crowds5_5.pm +++ /dev/null @@ -1,69 +0,0 @@ -dtmc - -// probability of forwarding -const double PF = 4/5; -const double notPF = 1/5; // must be 1-PF -// probability that a crowd member is bad -const double badC = 167/1000; - // probability that a crowd member is good -const double goodC = 833/1000; -// Total number of protocol runs to analyze -const int TotalRuns = 5; -// size of the crowd -const int CrowdSize = 5; - -module crowds - // protocol phase - phase: [0..4] init 0; - - // crowd member good (or bad) - good: bool init false; - - // number of protocol runs - runCount: [0..TotalRuns] init 0; - - // observe_i is the number of times the attacker observed crowd member i - observe0: [0..TotalRuns] init 0; - - observe1: [0..TotalRuns] init 0; - - observe2: [0..TotalRuns] init 0; - - observe3: [0..TotalRuns] init 0; - - observe4: [0..TotalRuns] init 0; - - // the last seen crowd member - lastSeen: [0..CrowdSize - 1] init 0; - - // get the protocol started - [] phase=0 & runCount 1: (phase'=1) & (runCount'=runCount+1) & (lastSeen'=0); - - // decide whether crowd member is good or bad according to given probabilities - [] phase=1 -> goodC : (phase'=2) & (good'=true) + badC : (phase'=2) & (good'=false); - - // if the current member is a good member, update the last seen index (chosen uniformly) - [] phase=2 & good -> 1/5 : (lastSeen'=0) & (phase'=3) + 1/5 : (lastSeen'=1) & (phase'=3) + 1/5 : (lastSeen'=2) & (phase'=3) + 1/5 : (lastSeen'=3) & (phase'=3) + 1/5 : (lastSeen'=4) & (phase'=3); - - // if the current member is a bad member, record the most recently seen index - [] phase=2 & !good & lastSeen=0 & observe0 < TotalRuns -> 1: (observe0'=observe0+1) & (phase'=4); - [] phase=2 & !good & lastSeen=1 & observe1 < TotalRuns -> 1: (observe1'=observe1+1) & (phase'=4); - [] phase=2 & !good & lastSeen=2 & observe2 < TotalRuns -> 1: (observe2'=observe2+1) & (phase'=4); - [] phase=2 & !good & lastSeen=3 & observe3 < TotalRuns -> 1: (observe3'=observe3+1) & (phase'=4); - [] phase=2 & !good & lastSeen=4 & observe4 < TotalRuns -> 1: (observe4'=observe4+1) & (phase'=4); - - // good crowd members forward with probability PF and deliver otherwise - [] phase=3 -> PF : (phase'=1) + notPF : (phase'=4); - - // deliver the message and start over - [] phase=4 -> 1: (phase'=0); - -endmodule - -label "observe0Greater1" = observe0>1; -label "observe1Greater1" = observe1>1; -label "observe2Greater1" = observe2>1; -label "observe3Greater1" = observe3>1; -label "observe4Greater1" = observe4>1; -label "observeIGreater1" = observe1>1|observe2>1|observe3>1|observe4>1; -label "observeOnlyTrueSender" = observe0>1&observe1<=1 & observe2<=1 & observe3<=1 & observe4<=1; diff --git a/examples/dtmc/die/die.pctl b/examples/dtmc/die/die.pctl deleted file mode 100644 index 8deea6c43..000000000 --- a/examples/dtmc/die/die.pctl +++ /dev/null @@ -1,4 +0,0 @@ -P=? [ F one ] -P=? [ F two ] -P=? [ F three ] -R=? [ F done ] diff --git a/examples/dtmc/die/die.pm b/examples/dtmc/die/die.pm deleted file mode 100644 index c5634bf4f..000000000 --- a/examples/dtmc/die/die.pm +++ /dev/null @@ -1,32 +0,0 @@ -// Knuth's model of a fair die using only fair coins -dtmc - -module die - - // local state - s : [0..7] init 0; - // value of the dice - d : [0..6] init 0; - - [] s=0 -> 0.5 : (s'=1) + 0.5 : (s'=2); - [] s=1 -> 0.5 : (s'=3) + 0.5 : (s'=4); - [] s=2 -> 0.5 : (s'=5) + 0.5 : (s'=6); - [] s=3 -> 0.5 : (s'=1) + 0.5 : (s'=7) & (d'=1); - [] s=4 -> 0.5 : (s'=7) & (d'=2) + 0.5 : (s'=7) & (d'=3); - [] s=5 -> 0.5 : (s'=7) & (d'=4) + 0.5 : (s'=7) & (d'=5); - [] s=6 -> 0.5 : (s'=2) + 0.5 : (s'=7) & (d'=6); - [] s=7 -> 1: (s'=7); - -endmodule - -rewards "coin_flips" - [] s<7 : 1; -endrewards - -label "one" = s=7&d=1; -label "two" = s=7&d=2; -label "three" = s=7&d=3; -label "four" = s=7&d=4; -label "five" = s=7&d=5; -label "six" = s=7&d=6; -label "end" = s=7; diff --git a/examples/dtmc/die/die.res b/examples/dtmc/die/die.res deleted file mode 100644 index 003af5dbd..000000000 --- a/examples/dtmc/die/die.res +++ /dev/null @@ -1,4 +0,0 @@ -P=? [ F "one" ] // 0.16666650772094727 -P=? [ F "two" ] // 0.16666650772094727 -P=? [ F "three" ] // 0.16666650772094727 -R=? [ F "done" ] // 3.6666650772094727 diff --git a/examples/dtmc/nand/nand.pm b/examples/dtmc/nand/nand.pm deleted file mode 100644 index 9753f1552..000000000 --- a/examples/dtmc/nand/nand.pm +++ /dev/null @@ -1,76 +0,0 @@ -// nand multiplex system -// gxn/dxp 20/03/03 - -// U (correctly) performs a random permutation of the outputs of the previous stage - -dtmc - -const int N; // number of inputs in each bundle -const int K; // number of restorative stages - -const int M = 2*K+1; // total number of multiplexing units - -// parameters taken from the following paper -// A system architecture solution for unreliable nanoelectric devices -// J. Han & P. Jonker -// IEEEE trans. on nanotechnology vol 1(4) 2002 - -const double perr = 0.02; // probability nand works correctly -const double prob1 = 0.9; // probability initial inputs are stimulated - -// model whole system as a single module by resuing variables -// to decrease the state space -module multiplex - - u : [1..M]; // number of stages - c : [0..N]; // counter (number of copies of the nand done) - - s : [0..4]; // local state - // 0 - initial state - // 1 - set x inputs - // 2 - set y inputs - // 3 - set outputs - // 4 - done - - z : [0..N]; // number of new outputs equal to 1 - zx : [0..N]; // number of old outputs equal to 1 - zy : [0..N]; // need second copy for y - // initially 9 since initially probability of stimulated state is 0.9 - - x : [0..1]; // value of first input - y : [0..1]; // value of second input - - [] s=0 & (c (s'=1); // do next nand if have not done N yet - [] s=0 & (c=N) & (u (s'=1) & (zx'=z) & (zy'=z) & (z'=0) & (u'=u+1) & (c'=0); // move on to next u if not finished - [] s=0 & (c=N) & (u=M) -> (s'=4) & (zx'=0) & (zy'=0) & (x'=0) & (y'=0); // finished (so reset variables not needed to reduce state space) - - // choose x permute selection (have zx stimulated inputs) - // note only need y to be random - [] s=1 & u=1 -> prob1 : (x'=1) & (s'=2) + (1-prob1) : (x'=0) & (s'=2); // initially random - [] s=1 & u>1 & zx>0 -> (x'=1) & (s'=2) & (zx'=zx-1); - [] s=1 & u>1 & zx=0 -> (x'=0) & (s'=2); - - // choose x randomly from selection (have zy stimulated inputs) - [] s=2 & u=1 -> prob1 : (y'=1) & (s'=3) + (1-prob1) : (y'=0) & (s'=3); // initially random - [] s=2 & u>1 & zy<(N-c) & zy>0 -> zy/(N-c) : (y'=1) & (s'=3) & (zy'=zy-1) + 1-(zy/(N-c)) : (y'=0) & (s'=3); - [] s=2 & u>1 & zy=(N-c) & c 1 : (y'=1) & (s'=3) & (zy'=zy-1); - [] s=2 & u>1 & zy=0 -> 1 : (y'=0) & (s'=3); - - // use nand gate - [] s=3 & z (1-perr) : (z'=z+(1-x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0) // not faulty - + perr : (z'=z+(x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0); // von neumann fault - // [] s=3 & z (1-perr) : (z'=z+(1-x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0) // not faulty - // + perr : (z'=z+(x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0); // von neumann fault - - [] s=4 -> (s'=s); - -endmodule - -// rewards: final value of gate -rewards - // [] s=0 & (c=N) & (u=M) : z/N; - s=0 & (c=N) & (u=M) : z/N; -endrewards - -label "target" = s=4 & z/N<0.1; -label "end" = s=4; diff --git a/examples/dtmc/sync/sync.pm b/examples/dtmc/sync/sync.pm deleted file mode 100644 index 8bc7f94ce..000000000 --- a/examples/dtmc/sync/sync.pm +++ /dev/null @@ -1,22 +0,0 @@ -// A simple model using synchronization -dtmc - -module generator - - s : [0..2] init 0; - - [] s=0 -> 0.2 : (s'=1) + 0.8 : (s'=0); - [yield] s=1 -> 1 : (s'=2); - [] s=2 -> 0.5 : (s'=0) + 0.5 : (s'=2); - -endmodule - -module consumer - - t : [0..2] init 0; - - [] t=0 -> 0.8 : (t'=1) + 0.2 : (t'=0); - [yield] t=1 -> 1 : (t'=2); - [] t=2 -> 0.2 : (t'=0) + 0.8 : (t'=2); - -endmodule diff --git a/examples/dtmc/synchronous_leader/leader.pctl b/examples/dtmc/synchronous_leader/leader.pctl deleted file mode 100644 index c4eb53408..000000000 --- a/examples/dtmc/synchronous_leader/leader.pctl +++ /dev/null @@ -1,4 +0,0 @@ -P=? [ F elected ] -// P=? [ F<=(4*(N+1)) elected ] -P=? [ F<=28 elected ] -R=? [ F elected ] diff --git a/examples/dtmc/synchronous_leader/leader.res b/examples/dtmc/synchronous_leader/leader.res deleted file mode 100644 index 26451a894..000000000 --- a/examples/dtmc/synchronous_leader/leader.res +++ /dev/null @@ -1,14 +0,0 @@ -// 3/5 -P=? [ F "elected" ] // 1.0 -P=? [ F<=(4*(N+1)) "elected" ] // 0.999997440000001 -R=? [ F "elected" ] // 1.0416666623999995 - -// 4/8 -P=? [ F "elected" ] // 1.0 -P=? [ F<=(4*(N+1)) "elected" ] // 0.9999965911265463 -R=? [ F "elected" ] // 1.0448979526072435 - -// 5/8 -P=? [ F "elected" ] // 1.0 -P=? [ F<=(4*(N+1)) "elected" ] // 0.9999999097195733 -R=? [ F "elected" ] // 1.0176397499602707 \ No newline at end of file diff --git a/examples/dtmc/synchronous_leader/leader3_5.pm b/examples/dtmc/synchronous_leader/leader3_5.pm deleted file mode 100644 index 0703e733d..000000000 --- a/examples/dtmc/synchronous_leader/leader3_5.pm +++ /dev/null @@ -1,85 +0,0 @@ -// synchronous leader election protocol (itai & Rodeh) -// dxp/gxn 25/01/01 - -dtmc - -// CONSTANTS -const int N = 3; // number of processes -const int K = 5; // range of probabilistic choice - -// counter module used to count the number of processes that have been read -// and to know when a process has decided -module counter - - // counter (c=i means process j reading process (i-1)+j next) - c : [1..N-1]; - - // reading - [read] c 1:(c'=c+1); - // finished reading - [read] c=N-1 -> 1:(c'=c); - //decide - [done] u1|u2|u3 -> 1:(c'=c); - // pick again reset counter - [retry] !(u1|u2|u3) -> 1:(c'=1); - // loop (when finished to avoid deadlocks) - [loop] s1=3 -> 1:(c'=c); - -endmodule - -// processes form a ring and suppose: -// process 1 reads process 2 -// process 2 reads process 3 -// process 3 reads process 1 -module process1 - - // local state - s1 : [0..3]; - // s1=0 make random choice - // s1=1 reading - // s1=2 deciding - // s1=3 finished - - // has a unique id so far (initially true) - u1 : bool; - - // value to be sent to next process in the ring (initially sets this to its own value) - v1 : [0..K-1]; - - // random choice - p1 : [0..K-1]; - - // pick value - [pick] s1=0 -> 1/K : (s1'=1) & (p1'=0) & (v1'=0) & (u1'=true) - + 1/K : (s1'=1) & (p1'=1) & (v1'=1) & (u1'=true) - + 1/K : (s1'=1) & (p1'=2) & (v1'=2) & (u1'=true) - + 1/K : (s1'=1) & (p1'=3) & (v1'=3) & (u1'=true) - + 1/K : (s1'=1) & (p1'=4) & (v1'=4) & (u1'=true); - // read - [read] s1=1 & u1 & c 1:(u1'=(p1!=v2)) & (v1'=v2); - [read] s1=1 & !u1 & c 1:(u1'=false) & (v1'=v2) & (p1'=0); - // read and move to decide - [read] s1=1 & u1 & c=N-1 -> 1:(s1'=2) & (u1'=(p1!=v2)) & (v1'=0) & (p1'=0); - [read] s1=1 & !u1 & c=N-1 -> 1:(s1'=2) & (u1'=false) & (v1'=0); - // deciding - // done - [done] s1=2 -> 1:(s1'=3) & (u1'=false) & (v1'=0) & (p1'=0); - //retry - [retry] s1=2 -> 1:(s1'=0) & (u1'=false) & (v1'=0) & (p1'=0); - // loop (when finished to avoid deadlocks) - [loop] s1=3 -> 1:(s1'=3); - -endmodule - -// construct remaining processes through renaming -module process2 = process1 [ s1=s2,p1=p2,v1=v2,u1=u2,v2=v3 ] endmodule -module process3 = process1 [ s1=s3,p1=p3,v1=v3,u1=u3,v2=v1 ] endmodule - -// expected number of rounds -rewards "num_rounds" - [pick] true : 1; -endrewards - -// labels -label "elected" = s1=3&s2=3&s3=3; - diff --git a/examples/dtmc/synchronous_leader/leader4_8.pm b/examples/dtmc/synchronous_leader/leader4_8.pm deleted file mode 100644 index 188039cf3..000000000 --- a/examples/dtmc/synchronous_leader/leader4_8.pm +++ /dev/null @@ -1,89 +0,0 @@ -// synchronous leader election protocol (itai & Rodeh) -// dxp/gxn 25/01/01 - -dtmc - -// CONSTANTS -const int N = 4; // number of processes -const int K = 8; // range of probabilistic choice - -// counter module used to count the number of processes that have been read -// and to know when a process has decided -module counter - - // counter (c=i means process j reading process (i-1)+j next) - c : [1..N-1]; - - // reading - [read] c (c'=c+1); - // finished reading - [read] c=N-1 -> (c'=c); - //decide - [done] u1|u2|u3|u4 -> (c'=c); - // pick again reset counter - [retry] !(u1|u2|u3|u4) -> (c'=1); - // loop (when finished to avoid deadlocks) - [loop] s1=3 -> (c'=c); - -endmodule - -// processes form a ring and suppose: -// process 1 reads process 2 -// process 2 reads process 3 -// process 3 reads process 1 -module process1 - - // local state - s1 : [0..3]; - // s1=0 make random choice - // s1=1 reading - // s1=2 deciding - // s1=3 finished - - // has a unique id so far (initially true) - u1 : bool; - - // value to be sent to next process in the ring (initially sets this to its own value) - v1 : [0..K-1]; - - // random choice - p1 : [0..K-1]; - - // pick value - [pick] s1=0 -> 1/K : (s1'=1) & (p1'=0) & (v1'=0) & (u1'=true) - + 1/K : (s1'=1) & (p1'=1) & (v1'=1) & (u1'=true) - + 1/K : (s1'=1) & (p1'=2) & (v1'=2) & (u1'=true) - + 1/K : (s1'=1) & (p1'=3) & (v1'=3) & (u1'=true) - + 1/K : (s1'=1) & (p1'=4) & (v1'=4) & (u1'=true) - + 1/K : (s1'=1) & (p1'=5) & (v1'=5) & (u1'=true) - + 1/K : (s1'=1) & (p1'=6) & (v1'=6) & (u1'=true) - + 1/K : (s1'=1) & (p1'=7) & (v1'=7) & (u1'=true); - // read - [read] s1=1 & u1 & c (u1'=(p1!=v2)) & (v1'=v2); - [read] s1=1 & !u1 & c (u1'=false) & (v1'=v2) & (p1'=0); - // read and move to decide - [read] s1=1 & u1 & c=N-1 -> (s1'=2) & (u1'=(p1!=v2)) & (v1'=0) & (p1'=0); - [read] s1=1 & !u1 & c=N-1 -> (s1'=2) & (u1'=false) & (v1'=0); - // deciding - // done - [done] s1=2 -> (s1'=3) & (u1'=false) & (v1'=0) & (p1'=0); - //retry - [retry] s1=2 -> (s1'=0) & (u1'=false) & (v1'=0) & (p1'=0); - // loop (when finished to avoid deadlocks) - [loop] s1=3 -> (s1'=3); - -endmodule - -// construct remaining processes through renaming -module process2 = process1 [ s1=s2,p1=p2,v1=v2,u1=u2,v2=v3 ] endmodule -module process3 = process1 [ s1=s3,p1=p3,v1=v3,u1=u3,v2=v4 ] endmodule -module process4 = process1 [ s1=s4,p1=p4,v1=v4,u1=u4,v2=v1 ] endmodule - -// expected number of rounds -rewards "num_rounds" - [pick] true : 1; -endrewards - -// labels -label "elected" = s1=3&s2=3&s3=3&s4=3; - diff --git a/examples/dtmc/synchronous_leader/leader5_8.pm b/examples/dtmc/synchronous_leader/leader5_8.pm deleted file mode 100644 index 4723ed5b0..000000000 --- a/examples/dtmc/synchronous_leader/leader5_8.pm +++ /dev/null @@ -1,90 +0,0 @@ -// synchronous leader election protocol (itai & Rodeh) -// dxp/gxn 25/01/01 - -dtmc - -// CONSTANTS -const int N = 5; // number of processes -const int K = 8; // range of probabilistic choice - -// counter module used to count the number of processes that have been read -// and to know when a process has decided -module counter - - // counter (c=i means process j reading process (i-1)+j next) - c : [1..N-1]; - - // reading - [read] c (c'=c+1); - // finished reading - [read] c=N-1 -> (c'=c); - //decide - [done] u1|u2|u3|u4|u5 -> (c'=c); - // pick again reset counter - [retry] !(u1|u2|u3|u4|u5) -> (c'=1); - // loop (when finished to avoid deadlocks) - [loop] s1=3 -> (c'=c); - -endmodule - -// processes form a ring and suppose: -// process 1 reads process 2 -// process 2 reads process 3 -// process 3 reads process 1 -module process1 - - // local state - s1 : [0..3]; - // s1=0 make random choice - // s1=1 reading - // s1=2 deciding - // s1=3 finished - - // has a unique id so far (initially true) - u1 : bool; - - // value to be sent to next process in the ring (initially sets this to its own value) - v1 : [0..K-1]; - - // random choice - p1 : [0..K-1]; - - // pick value - [pick] s1=0 -> 1/K : (s1'=1) & (p1'=0) & (v1'=0) & (u1'=true) - + 1/K : (s1'=1) & (p1'=1) & (v1'=1) & (u1'=true) - + 1/K : (s1'=1) & (p1'=2) & (v1'=2) & (u1'=true) - + 1/K : (s1'=1) & (p1'=3) & (v1'=3) & (u1'=true) - + 1/K : (s1'=1) & (p1'=4) & (v1'=4) & (u1'=true) - + 1/K : (s1'=1) & (p1'=5) & (v1'=5) & (u1'=true) - + 1/K : (s1'=1) & (p1'=6) & (v1'=6) & (u1'=true) - + 1/K : (s1'=1) & (p1'=7) & (v1'=7) & (u1'=true); - // read - [read] s1=1 & u1 & c (u1'=(p1!=v2)) & (v1'=v2); - [read] s1=1 & !u1 & c (u1'=false) & (v1'=v2) & (p1'=0); - // read and move to decide - [read] s1=1 & u1 & c=N-1 -> (s1'=2) & (u1'=(p1!=v2)) & (v1'=0) & (p1'=0); - [read] s1=1 & !u1 & c=N-1 -> (s1'=2) & (u1'=false) & (v1'=0); - // deciding - // done - [done] s1=2 -> (s1'=3) & (u1'=false) & (v1'=0) & (p1'=0); - //retry - [retry] s1=2 -> (s1'=0) & (u1'=false) & (v1'=0) & (p1'=0); - // loop (when finished to avoid deadlocks) - [loop] s1=3 -> (s1'=3); - -endmodule - -// construct remaining processes through renaming -module process2 = process1 [ s1=s2,p1=p2,v1=v2,u1=u2,v2=v3 ] endmodule -module process3 = process1 [ s1=s3,p1=p3,v1=v3,u1=u3,v2=v4 ] endmodule -module process4 = process1 [ s1=s4,p1=p4,v1=v4,u1=u4,v2=v5 ] endmodule -module process5 = process1 [ s1=s5,p1=p5,v1=v5,u1=u5,v2=v1 ] endmodule - -// expected number of rounds -rewards "num_rounds" - [pick] true : 1; -endrewards - -// labels -label "elected" = s1=3&s2=3&s3=3&s4=3&s5=3; - diff --git a/examples/dtmc/synchronous_leader/leader6_8.pm b/examples/dtmc/synchronous_leader/leader6_8.pm deleted file mode 100644 index a31773b1d..000000000 --- a/examples/dtmc/synchronous_leader/leader6_8.pm +++ /dev/null @@ -1,91 +0,0 @@ -// synchronous leader election protocol (itai & Rodeh) -// dxp/gxn 25/01/01 - -dtmc - -// CONSTANTS -const int N = 6; // number of processes -const int K = 8; // range of probabilistic choice - -// counter module used to count the number of processes that have been read -// and to know when a process has decided -module counter - - // counter (c=i means process j reading process (i-1)+j next) - c : [1..N-1]; - - // reading - [read] c (c'=c+1); - // finished reading - [read] c=N-1 -> (c'=c); - //decide - [done] u1|u2|u3|u4|u5|u6 -> (c'=c); - // pick again reset counter - [retry] !(u1|u2|u3|u4|u5|u6) -> (c'=1); - // loop (when finished to avoid deadlocks) - [loop] s1=3 -> (c'=c); - -endmodule - -// processes form a ring and suppose: -// process 1 reads process 2 -// process 2 reads process 3 -// process 3 reads process 1 -module process1 - - // local state - s1 : [0..3]; - // s1=0 make random choice - // s1=1 reading - // s1=2 deciding - // s1=3 finished - - // has a unique id so far (initially true) - u1 : bool; - - // value to be sent to next process in the ring (initially sets this to its own value) - v1 : [0..K-1]; - - // random choice - p1 : [0..K-1]; - - // pick value - [pick] s1=0 -> 1/K : (s1'=1) & (p1'=0) & (v1'=0) & (u1'=true) - + 1/K : (s1'=1) & (p1'=1) & (v1'=1) & (u1'=true) - + 1/K : (s1'=1) & (p1'=2) & (v1'=2) & (u1'=true) - + 1/K : (s1'=1) & (p1'=3) & (v1'=3) & (u1'=true) - + 1/K : (s1'=1) & (p1'=4) & (v1'=4) & (u1'=true) - + 1/K : (s1'=1) & (p1'=5) & (v1'=5) & (u1'=true) - + 1/K : (s1'=1) & (p1'=6) & (v1'=6) & (u1'=true) - + 1/K : (s1'=1) & (p1'=7) & (v1'=7) & (u1'=true); - // read - [read] s1=1 & u1 & c (u1'=(p1!=v2)) & (v1'=v2); - [read] s1=1 & !u1 & c (u1'=false) & (v1'=v2) & (p1'=0); - // read and move to decide - [read] s1=1 & u1 & c=N-1 -> (s1'=2) & (u1'=(p1!=v2)) & (v1'=0) & (p1'=0); - [read] s1=1 & !u1 & c=N-1 -> (s1'=2) & (u1'=false) & (v1'=0); - // deciding - // done - [done] s1=2 -> (s1'=3) & (u1'=false) & (v1'=0) & (p1'=0); - //retry - [retry] s1=2 -> (s1'=0) & (u1'=false) & (v1'=0) & (p1'=0); - // loop (when finished to avoid deadlocks) - [loop] s1=3 -> (s1'=3); - -endmodule - -// construct remaining processes through renaming -module process2 = process1 [ s1=s2,p1=p2,v1=v2,u1=u2,v2=v3 ] endmodule -module process3 = process1 [ s1=s3,p1=p3,v1=v3,u1=u3,v2=v4 ] endmodule -module process4 = process1 [ s1=s4,p1=p4,v1=v4,u1=u4,v2=v5 ] endmodule -module process5 = process1 [ s1=s5,p1=p5,v1=v5,u1=u5,v2=v6 ] endmodule -module process6 = process1 [ s1=s6,p1=p6,v1=v6,u1=u6,v2=v1 ] endmodule - -// expected number of rounds -rewards "num_rounds" - [pick] true : 1; -endrewards - -// labels -label "elected" = s1=3&s2=3&s3=3&s4=3&s5=3&s6=3; - diff --git a/examples/dtmc/tiny_lra/tiny_lra.pctl b/examples/dtmc/tiny_lra/tiny_lra.pctl deleted file mode 100644 index 27700ade2..000000000 --- a/examples/dtmc/tiny_lra/tiny_lra.pctl +++ /dev/null @@ -1 +0,0 @@ -LRA=? [ "a" ] \ No newline at end of file diff --git a/examples/dtmc/tiny_lra/tiny_lra.pm b/examples/dtmc/tiny_lra/tiny_lra.pm deleted file mode 100644 index 0d49f8d3c..000000000 --- a/examples/dtmc/tiny_lra/tiny_lra.pm +++ /dev/null @@ -1,16 +0,0 @@ -// tiny LRA example - -dtmc - -module main - - s : [0..2] init 0; - - [] s=0 -> 1:(s'=1); - [] s=1 -> 0.5:(s'=1) + 0.5:(s'=2); - [] s=2 -> 0.5:(s'=1) + 0.5:(s'=2); - -endmodule - -label "a" = s=1; - diff --git a/examples/mdp/asynchronous_leader/leader.pctl b/examples/mdp/asynchronous_leader/leader.pctl deleted file mode 100644 index 2c87c7f27..000000000 --- a/examples/mdp/asynchronous_leader/leader.pctl +++ /dev/null @@ -1,8 +0,0 @@ -Pmin=? [ F elected ] - -// const int K = 25; -Pmin=? [ F<=25 elected ] -Pmax=? [ F<=25 elected ] - -Rmin=? [ F elected ] -Rmax=? [ F elected ] diff --git a/examples/mdp/asynchronous_leader/leader.res b/examples/mdp/asynchronous_leader/leader.res deleted file mode 100644 index 447403e11..000000000 --- a/examples/mdp/asynchronous_leader/leader.res +++ /dev/null @@ -1,49 +0,0 @@ -// 3 -Pmin=? [ F "elected" ] // 1.0 - -const int K = 25; -Pmin=? [ F<=K "elected" ] // 0.5625 -Pmax=? [ F<=K "elected" ] // 0.5625 - -Rmin=? [ F "elected" ] // 3.3333212586585432 -Rmax=? [ F "elected" ] // 3.3333206579554826 - -// 4 -Pmin=? [ F "elected" ] // 1.0 - -const int K = 25; -Pmin=? [ F<=K "elected" ] // 0.0625 -Pmax=? [ F<=K "elected" ] // 0.0625 - -Rmin=? [ F "elected" ] // 4.2856896106114934 -Rmax=? [ F "elected" ] // 4.28569043544414 - -// 5 -Pmin=? [ F "elected" ] // 1.0 - -const int K = 25; -Pmin=? [ F<=K "elected" ] // 0.0 -Pmax=? [ F<=K "elected" ] // 0.0 - -Rmin=? [ F "elected" ] // 5.034886386278894 -Rmax=? [ F "elected" ] // 5.034881859133309 - -// 6 -Pmin=? [ F "elected" ] // 1.0 - -const int K = 25; -Pmin=? [ F<=K "elected" ] // 0.0 -Pmax=? [ F<=K "elected" ] // 0.0 - -Rmin=? [ F "elected" ] // 5.649720120334257 -Rmax=? [ F "elected" ] // 5.649719114527437 - -// 7 -Pmin=? [ F "elected" ] // 1.0 - -const int K = 25; -Pmin=? [ F<=K "elected" ] // 0.0 -Pmax=? [ F<=K "elected" ] // 0.0 - -Rmin=? [ F "elected" ] // 6.172433512043686 -Rmax=? [ F "elected" ] // 6.172434400085756 \ No newline at end of file diff --git a/examples/mdp/asynchronous_leader/leader3.nm b/examples/mdp/asynchronous_leader/leader3.nm deleted file mode 100644 index 9f093cc13..000000000 --- a/examples/mdp/asynchronous_leader/leader3.nm +++ /dev/null @@ -1,96 +0,0 @@ -// asynchronous leader election -// 4 processes -// gxn/dxp 29/01/01 - -mdp - -const int N = 3; // number of processes - -//---------------------------------------------------------------------------------------------------------------------------- -module process1 - - // COUNTER - c1 : [0..3-1]; - - // STATES - s1 : [0..4]; - // 0 make choice - // 1 have not received neighbours choice - // 2 active - // 3 inactive - // 4 leader - - // PREFERENCE - p1 : [0..1]; - - // VARIABLES FOR SENDING AND RECEIVING - receive1 : [0..2]; - // not received anything - // received choice - // received counter - sent1 : [0..2]; - // not send anything - // sent choice - // sent counter - - // pick value - [] (s1=0) -> 0.5 : (s1'=1) & (p1'=0) + 0.5 : (s1'=1) & (p1'=1); - - // send preference - [p12] (s1=1) & (sent1=0) -> (sent1'=1); - // receive preference - // stay active - [p31] (s1=1) & (receive1=0) & !( (p1=0) & (p3=1) ) -> (s1'=2) & (receive1'=1); - // become inactive - [p31] (s1=1) & (receive1=0) & (p1=0) & (p3=1) -> (s1'=3) & (receive1'=1); - - // send preference (can now reset preference) - [p12] (s1=2) & (sent1=0) -> (sent1'=1) & (p1'=0); - // send counter (already sent preference) - // not received counter yet - [c12] (s1=2) & (sent1=1) & (receive1=1) -> (sent1'=2); - // received counter (pick again) - [c12] (s1=2) & (sent1=1) & (receive1=2) -> (s1'=0) & (p1'=0) & (c1'=0) & (sent1'=0) & (receive1'=0); - - // receive counter and not sent yet (note in this case do not pass it on as will send own counter) - [c31] (s1=2) & (receive1=1) & (sent1<2) -> (receive1'=2); - // receive counter and sent counter - // only active process (decide) - [c31] (s1=2) & (receive1=1) & (sent1=2) & (c3=N-1) -> (s1'=4) & (p1'=0) & (c1'=0) & (sent1'=0) & (receive1'=0); - // other active process (pick again) - [c31] (s1=2) & (receive1=1) & (sent1=2) & (c3 (s1'=0) & (p1'=0) & (c1'=0) & (sent1'=0) & (receive1'=0); - - // send preference (must have received preference) and can now reset - [p12] (s1=3) & (receive1>0) & (sent1=0) -> (sent1'=1) & (p1'=0); - // send counter (must have received counter first) and can now reset - [c12] (s1=3) & (receive1=2) & (sent1=1) -> (s1'=3) & (p1'=0) & (c1'=0) & (sent1'=0) & (receive1'=0); - - // receive preference - [p31] (s1=3) & (receive1=0) -> (p1'=p3) & (receive1'=1); - // receive counter - [c31] (s1=3) & (receive1=1) & (c3 (c1'=c3+1) & (receive1'=2); - - // done - [done] (s1=4) -> (s1'=s1); - // add loop for processes who are inactive - [done] (s1=3) -> (s1'=s1); - -endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// construct further stations through renaming -module process2=process1[s1=s2,p1=p2,c1=c2,sent1=sent2,receive1=receive2,p12=p23,p31=p12,c12=c23,c31=c12,p3=p1,c3=c1] endmodule -module process3=process1[s1=s3,p1=p3,c1=c3,sent1=sent3,receive1=receive3,p12=p31,p31=p23,c12=c31,c31=c23,p3=p2,c3=c2] endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// reward - expected number of rounds (equals the number of times a process receives a counter) -rewards - [c12] true : 1; -endrewards - -//---------------------------------------------------------------------------------------------------------------------------- -formula leaders = (s1=4?1:0)+(s2=4?1:0)+(s3=4?1:0); -label "elected" = s1=4|s2=4|s3=4; - diff --git a/examples/mdp/asynchronous_leader/leader4.nm b/examples/mdp/asynchronous_leader/leader4.nm deleted file mode 100644 index ce7ef878c..000000000 --- a/examples/mdp/asynchronous_leader/leader4.nm +++ /dev/null @@ -1,97 +0,0 @@ -// asynchronous leader election -// 4 processes -// gxn/dxp 29/01/01 - -mdp - -const int N= 4; // number of processes - -//---------------------------------------------------------------------------------------------------------------------------- -module process1 - - // COUNTER - c1 : [0..4-1]; - - // STATES - s1 : [0..4]; - // 0 make choice - // 1 have not received neighbours choice - // 2 active - // 3 inactive - // 4 leader - - // PREFERENCE - p1 : [0..1]; - - // VARIABLES FOR SENDING AND RECEIVING - receive1 : [0..2]; - // not received anything - // received choice - // received counter - sent1 : [0..2]; - // not send anything - // sent choice - // sent counter - - // pick value - [] (s1=0) -> 0.5 : (s1'=1) & (p1'=0) + 0.5 : (s1'=1) & (p1'=1); - - // send preference - [p12] (s1=1) & (sent1=0) -> (sent1'=1); - // receive preference - // stay active - [p41] (s1=1) & (receive1=0) & !( (p1=0) & (p4=1) ) -> (s1'=2) & (receive1'=1); - // become inactive - [p41] (s1=1) & (receive1=0) & (p1=0) & (p4=1) -> (s1'=3) & (receive1'=1); - - // send preference (can now reset preference) - [p12] (s1=2) & (sent1=0) -> (sent1'=1) & (p1'=0); - // send counter (already sent preference) - // not received counter yet - [c12] (s1=2) & (sent1=1) & (receive1=1) -> (sent1'=2); - // received counter (pick again) - [c12] (s1=2) & (sent1=1) & (receive1=2) -> (s1'=0) & (p1'=0) & (c1'=0) & (sent1'=0) & (receive1'=0); - - // receive counter and not sent yet (note in this case do not pass it on as will send own counter) - [c41] (s1=2) & (receive1=1) & (sent1<2) -> (receive1'=2); - // receive counter and sent counter - // only active process (decide) - [c41] (s1=2) & (receive1=1) & (sent1=2) & (c4=N-1) -> (s1'=4) & (p1'=0) & (c1'=0) & (sent1'=0) & (receive1'=0); - // other active process (pick again) - [c41] (s1=2) & (receive1=1) & (sent1=2) & (c4 (s1'=0) & (p1'=0) & (c1'=0) & (sent1'=0) & (receive1'=0); - - // send preference (must have received preference) and can now reset - [p12] (s1=3) & (receive1>0) & (sent1=0) -> (sent1'=1) & (p1'=0); - // send counter (must have received counter first) and can now reset - [c12] (s1=3) & (receive1=2) & (sent1=1) -> (s1'=3) & (p1'=0) & (c1'=0) & (sent1'=0) & (receive1'=0); - - // receive preference - [p41] (s1=3) & (receive1=0) -> (p1'=p4) & (receive1'=1); - // receive counter - [c41] (s1=3) & (receive1=1) & (c4 (c1'=c4+1) & (receive1'=2); - - // done - [done] (s1=4) -> (s1'=s1); - // add loop for processes who are inactive - [done] (s1=3) -> (s1'=s1); - -endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// construct further stations through renaming -module process2=process1[s1=s2,p1=p2,c1=c2,sent1=sent2,receive1=receive2,p12=p23,p41=p12,c12=c23,c41=c12,p4=p1,c4=c1] endmodule -module process3=process1[s1=s3,p1=p3,c1=c3,sent1=sent3,receive1=receive3,p12=p34,p41=p23,c12=c34,c41=c23,p4=p2,c4=c2] endmodule -module process4=process1[s1=s4,p1=p4,c1=c4,sent1=sent4,receive1=receive4,p12=p41,p41=p34,c12=c41,c41=c34,p4=p3,c4=c3] endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// reward - expected number of rounds (equals the number of times a process receives a counter) -rewards - [c12] true : 1; -endrewards - -//---------------------------------------------------------------------------------------------------------------------------- -formula leaders = (s1=4?1:0)+(s2=4?1:0)+(s3=4?1:0)+(s4=4?1:0); -label "elected" = s1=4|s2=4|s3=4|s4=4; - diff --git a/examples/mdp/asynchronous_leader/leader5.nm b/examples/mdp/asynchronous_leader/leader5.nm deleted file mode 100644 index 8b5c477b8..000000000 --- a/examples/mdp/asynchronous_leader/leader5.nm +++ /dev/null @@ -1,98 +0,0 @@ -// asynchronous leader election -// 4 processes -// gxn/dxp 29/01/01 - -mdp - -const int N= 5; // number of processes - -//---------------------------------------------------------------------------------------------------------------------------- -module process1 - - // COUNTER - c1 : [0..5-1]; - - // STATES - s1 : [0..4]; - // 0 make choice - // 1 have not received neighbours choice - // 2 active - // 3 inactive - // 4 leader - - // PREFERENCE - p1 : [0..1]; - - // VARIABLES FOR SENDING AND RECEIVING - receive1 : [0..2]; - // not received anything - // received choice - // received counter - sent1 : [0..2]; - // not send anything - // sent choice - // sent counter - - // pick value - [] (s1=0) -> 0.5 : (s1'=1) & (p1'=0) + 0.5 : (s1'=1) & (p1'=1); - - // send preference - [p12] (s1=1) & (sent1=0) -> (sent1'=1); - // receive preference - // stay active - [p51] (s1=1) & (receive1=0) & !( (p1=0) & (p5=1) ) -> (s1'=2) & (receive1'=1); - // become inactive - [p51] (s1=1) & (receive1=0) & (p1=0) & (p5=1) -> (s1'=3) & (receive1'=1); - - // send preference (can now reset preference) - [p12] (s1=2) & (sent1=0) -> (sent1'=1) & (p1'=0); - // send counter (already sent preference) - // not received counter yet - [c12] (s1=2) & (sent1=1) & (receive1=1) -> (sent1'=2); - // received counter (pick again) - [c12] (s1=2) & (sent1=1) & (receive1=2) -> (s1'=0) & (p1'=0) & (c1'=0) & (sent1'=0) & (receive1'=0); - - // receive counter and not sent yet (note in this case do not pass it on as will send own counter) - [c51] (s1=2) & (receive1=1) & (sent1<2) -> (receive1'=2); - // receive counter and sent counter - // only active process (decide) - [c51] (s1=2) & (receive1=1) & (sent1=2) & (c5=N-1) -> (s1'=4) & (p1'=0) & (c1'=0) & (sent1'=0) & (receive1'=0); - // other active process (pick again) - [c51] (s1=2) & (receive1=1) & (sent1=2) & (c5 (s1'=0) & (p1'=0) & (c1'=0) & (sent1'=0) & (receive1'=0); - - // send preference (must have received preference) and can now reset - [p12] (s1=3) & (receive1>0) & (sent1=0) -> (sent1'=1) & (p1'=0); - // send counter (must have received counter first) and can now reset - [c12] (s1=3) & (receive1=2) & (sent1=1) -> (s1'=3) & (p1'=0) & (c1'=0) & (sent1'=0) & (receive1'=0); - - // receive preference - [p51] (s1=3) & (receive1=0) -> (p1'=p5) & (receive1'=1); - // receive counter - [c51] (s1=3) & (receive1=1) & (c5 (c1'=c5+1) & (receive1'=2); - - // done - [done] (s1=4) -> (s1'=s1); - // add loop for processes who are inactive - [done] (s1=3) -> (s1'=s1); - -endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// construct further stations through renaming -module process2=process1[s1=s2,p1=p2,c1=c2,sent1=sent2,receive1=receive2,p12=p23,p51=p12,c12=c23,c51=c12,p5=p1,c5=c1] endmodule -module process3=process1[s1=s3,p1=p3,c1=c3,sent1=sent3,receive1=receive3,p12=p34,p51=p23,c12=c34,c51=c23,p5=p2,c5=c2] endmodule -module process4=process1[s1=s4,p1=p4,c1=c4,sent1=sent4,receive1=receive4,p12=p45,p51=p34,c12=c45,c51=c34,p5=p3,c5=c3] endmodule -module process5=process1[s1=s5,p1=p5,c1=c5,sent1=sent5,receive1=receive5,p12=p51,p51=p45,c12=c51,c51=c45,p5=p4,c5=c4] endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// reward - expected number of rounds (equals the number of times a process receives a counter) -rewards - [c12] true : 1; -endrewards - -//---------------------------------------------------------------------------------------------------------------------------- -formula leaders = (s1=4?1:0)+(s2=4?1:0)+(s3=4?1:0)+(s4=4?1:0)+(s5=4?1:0); -label "elected" = s1=4|s2=4|s3=4|s4=4|s5=4; - diff --git a/examples/mdp/asynchronous_leader/leader6.nm b/examples/mdp/asynchronous_leader/leader6.nm deleted file mode 100644 index c1c909baf..000000000 --- a/examples/mdp/asynchronous_leader/leader6.nm +++ /dev/null @@ -1,99 +0,0 @@ -// asynchronous leader election -// 4 processes -// gxn/dxp 29/01/01 - -mdp - -const int N= 6; // number of processes - -//---------------------------------------------------------------------------------------------------------------------------- -module process1 - - // COUNTER - c1 : [0..6-1]; - - // STATES - s1 : [0..4]; - // 0 make choice - // 1 have not received neighbours choice - // 2 active - // 3 inactive - // 4 leader - - // PREFERENCE - p1 : [0..1]; - - // VARIABLES FOR SENDING AND RECEIVING - receive1 : [0..2]; - // not received anything - // received choice - // received counter - sent1 : [0..2]; - // not send anything - // sent choice - // sent counter - - // pick value - [] (s1=0) -> 0.5 : (s1'=1) & (p1'=0) + 0.5 : (s1'=1) & (p1'=1); - - // send preference - [p12] (s1=1) & (sent1=0) -> (sent1'=1); - // receive preference - // stay active - [p61] (s1=1) & (receive1=0) & !( (p1=0) & (p6=1) ) -> (s1'=2) & (receive1'=1); - // become inactive - [p61] (s1=1) & (receive1=0) & (p1=0) & (p6=1) -> (s1'=3) & (receive1'=1); - - // send preference (can now reset preference) - [p12] (s1=2) & (sent1=0) -> (sent1'=1) & (p1'=0); - // send counter (already sent preference) - // not received counter yet - [c12] (s1=2) & (sent1=1) & (receive1=1) -> (sent1'=2); - // received counter (pick again) - [c12] (s1=2) & (sent1=1) & (receive1=2) -> (s1'=0) & (p1'=0) & (c1'=0) & (sent1'=0) & (receive1'=0); - - // receive counter and not sent yet (note in this case do not pass it on as will send own counter) - [c61] (s1=2) & (receive1=1) & (sent1<2) -> (receive1'=2); - // receive counter and sent counter - // only active process (decide) - [c61] (s1=2) & (receive1=1) & (sent1=2) & (c6=N-1) -> (s1'=4) & (p1'=0) & (c1'=0) & (sent1'=0) & (receive1'=0); - // other active process (pick again) - [c61] (s1=2) & (receive1=1) & (sent1=2) & (c6 (s1'=0) & (p1'=0) & (c1'=0) & (sent1'=0) & (receive1'=0); - - // send preference (must have received preference) and can now reset - [p12] (s1=3) & (receive1>0) & (sent1=0) -> (sent1'=1) & (p1'=0); - // send counter (must have received counter first) and can now reset - [c12] (s1=3) & (receive1=2) & (sent1=1) -> (s1'=3) & (p1'=0) & (c1'=0) & (sent1'=0) & (receive1'=0); - - // receive preference - [p61] (s1=3) & (receive1=0) -> (p1'=p6) & (receive1'=1); - // receive counter - [c61] (s1=3) & (receive1=1) & (c6 (c1'=c6+1) & (receive1'=2); - - // done - [done] (s1=4) -> (s1'=s1); - // add loop for processes who are inactive - [done] (s1=3) -> (s1'=s1); - -endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// construct further stations through renaming -module process2=process1[s1=s2,p1=p2,c1=c2,sent1=sent2,receive1=receive2,p12=p23,p61=p12,c12=c23,c61=c12,p6=p1,c6=c1] endmodule -module process3=process1[s1=s3,p1=p3,c1=c3,sent1=sent3,receive1=receive3,p12=p34,p61=p23,c12=c34,c61=c23,p6=p2,c6=c2] endmodule -module process4=process1[s1=s4,p1=p4,c1=c4,sent1=sent4,receive1=receive4,p12=p45,p61=p34,c12=c45,c61=c34,p6=p3,c6=c3] endmodule -module process5=process1[s1=s5,p1=p5,c1=c5,sent1=sent5,receive1=receive5,p12=p56,p61=p45,c12=c56,c61=c45,p6=p4,c6=c4] endmodule -module process6=process1[s1=s6,p1=p6,c1=c6,sent1=sent6,receive1=receive6,p12=p61,p61=p56,c12=c61,c61=c56,p6=p5,c6=c5] endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// reward - expected number of rounds (equals the number of times a process receives a counter) -rewards - [c12] true : 1; -endrewards - -//---------------------------------------------------------------------------------------------------------------------------- -formula leaders = (s1=4?1:0)+(s2=4?1:0)+(s3=4?1:0)+(s4=4?1:0)+(s5=4?1:0)+(s6=4?1:0); -label "elected" = s1=4|s2=4|s3=4|s4=4|s5=4|s6=4; - diff --git a/examples/mdp/asynchronous_leader/leader7.nm b/examples/mdp/asynchronous_leader/leader7.nm deleted file mode 100644 index 11eaba4a7..000000000 --- a/examples/mdp/asynchronous_leader/leader7.nm +++ /dev/null @@ -1,100 +0,0 @@ -// asynchronous leader election -// 4 processes -// gxn/dxp 29/01/01 - -mdp - -const int N= 7; // number of processes - -//---------------------------------------------------------------------------------------------------------------------------- -module process1 - - // COUNTER - c1 : [0..7-1]; - - // STATES - s1 : [0..4]; - // 0 make choice - // 1 have not received neighbours choice - // 2 active - // 3 inactive - // 4 leader - - // PREFERENCE - p1 : [0..1]; - - // VARIABLES FOR SENDING AND RECEIVING - receive1 : [0..2]; - // not received anything - // received choice - // received counter - sent1 : [0..2]; - // not send anything - // sent choice - // sent counter - - // pick value - [] (s1=0) -> 0.5 : (s1'=1) & (p1'=0) + 0.5 : (s1'=1) & (p1'=1); - - // send preference - [p12] (s1=1) & (sent1=0) -> (sent1'=1); - // receive preference - // stay active - [p71] (s1=1) & (receive1=0) & !( (p1=0) & (p7=1) ) -> (s1'=2) & (receive1'=1); - // become inactive - [p71] (s1=1) & (receive1=0) & (p1=0) & (p7=1) -> (s1'=3) & (receive1'=1); - - // send preference (can now reset preference) - [p12] (s1=2) & (sent1=0) -> (sent1'=1) & (p1'=0); - // send counter (already sent preference) - // not received counter yet - [c12] (s1=2) & (sent1=1) & (receive1=1) -> (sent1'=2); - // received counter (pick again) - [c12] (s1=2) & (sent1=1) & (receive1=2) -> (s1'=0) & (p1'=0) & (c1'=0) & (sent1'=0) & (receive1'=0); - - // receive counter and not sent yet (note in this case do not pass it on as will send own counter) - [c71] (s1=2) & (receive1=1) & (sent1<2) -> (receive1'=2); - // receive counter and sent counter - // only active process (decide) - [c71] (s1=2) & (receive1=1) & (sent1=2) & (c7=N-1) -> (s1'=4) & (p1'=0) & (c1'=0) & (sent1'=0) & (receive1'=0); - // other active process (pick again) - [c71] (s1=2) & (receive1=1) & (sent1=2) & (c7 (s1'=0) & (p1'=0) & (c1'=0) & (sent1'=0) & (receive1'=0); - - // send preference (must have received preference) and can now reset - [p12] (s1=3) & (receive1>0) & (sent1=0) -> (sent1'=1) & (p1'=0); - // send counter (must have received counter first) and can now reset - [c12] (s1=3) & (receive1=2) & (sent1=1) -> (s1'=3) & (p1'=0) & (c1'=0) & (sent1'=0) & (receive1'=0); - - // receive preference - [p71] (s1=3) & (receive1=0) -> (p1'=p7) & (receive1'=1); - // receive counter - [c71] (s1=3) & (receive1=1) & (c7 (c1'=c7+1) & (receive1'=2); - - // done - [done] (s1=4) -> (s1'=s1); - // add loop for processes who are inactive - [done] (s1=3) -> (s1'=s1); - -endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// construct further stations through renaming -module process2=process1[s1=s2,p1=p2,c1=c2,sent1=sent2,receive1=receive2,p12=p23,p71=p12,c12=c23,c71=c12,p7=p1,c7=c1] endmodule -module process3=process1[s1=s3,p1=p3,c1=c3,sent1=sent3,receive1=receive3,p12=p34,p71=p23,c12=c34,c71=c23,p7=p2,c7=c2] endmodule -module process4=process1[s1=s4,p1=p4,c1=c4,sent1=sent4,receive1=receive4,p12=p45,p71=p34,c12=c45,c71=c34,p7=p3,c7=c3] endmodule -module process5=process1[s1=s5,p1=p5,c1=c5,sent1=sent5,receive1=receive5,p12=p56,p71=p45,c12=c56,c71=c45,p7=p4,c7=c4] endmodule -module process6=process1[s1=s6,p1=p6,c1=c6,sent1=sent6,receive1=receive6,p12=p67,p71=p56,c12=c67,c71=c56,p7=p5,c7=c5] endmodule -module process7=process1[s1=s7,p1=p7,c1=c7,sent1=sent7,receive1=receive7,p12=p71,p71=p67,c12=c71,c71=c67,p7=p6,c7=c6] endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// reward - expected number of rounds (equals the number of times a process receives a counter) -rewards - [c12] true : 1; -endrewards - -//---------------------------------------------------------------------------------------------------------------------------- -formula leaders = (s1=4?1:0)+(s2=4?1:0)+(s3=4?1:0)+(s4=4?1:0)+(s5=4?1:0)+(s6=4?1:0)+(s7=4?1:0); -label "elected" = s1=4|s2=4|s3=4|s4=4|s5=4|s6=4|s7=4; - diff --git a/examples/mdp/consensus/coin.cexprop b/examples/mdp/consensus/coin.cexprop deleted file mode 100644 index bb60f986d..000000000 --- a/examples/mdp/consensus/coin.cexprop +++ /dev/null @@ -1 +0,0 @@ -P<0.4 [ F finished & all_coins_equal_1 ] diff --git a/examples/mdp/consensus/coin.pctl b/examples/mdp/consensus/coin.pctl deleted file mode 100644 index 224ffc495..000000000 --- a/examples/mdp/consensus/coin.pctl +++ /dev/null @@ -1,20 +0,0 @@ -// C1 (with probability 1, all N processes finish the protocol) -// Pmin=? [ F finished ] - -// C2 (minimum probability that the protocol finishes with all coins equal to v) (v=1,2) -// Results are same for v=1 and v=2 by symmetry -// Analytic bound is (K-1)/(2*K) -//Pmin=? [ F finished & all_coins_equal_0 ] -//Pmin=? [ F finished & all_coins_equal_1 ] - -// Max probability of finishing protocol with coins not all equal -Pmax=? [ F finished & !agree ] - -// Min/max probability of finishing within k steps -// Pmin=? [ F<=50 finished ] -// Pmax=? [ F<=50 finished ] - -// Min/max expected steps to finish -// Rmin=? [ F finished ] -// Rmax=? [ F finished ] - diff --git a/examples/mdp/consensus/coin2.nm b/examples/mdp/consensus/coin2.nm deleted file mode 100644 index a08bb8741..000000000 --- a/examples/mdp/consensus/coin2.nm +++ /dev/null @@ -1,60 +0,0 @@ -// COIN FLIPPING PROTOCOL FOR POLYNOMIAL RANDOMIZED CONSENSUS [AH90] -// gxn/dxp 20/11/00 - -mdp - -// constants -const int N=2; -const int K; -const int range = 2*(K+1)*N; -const int counter_init = (K+1)*N; -const int left = N; -const int right = 2*(K+1)*N - N; - -// shared coin -global counter : [0..range] init counter_init; - -module process1 - - // program counter - pc1 : [0..3]; - // 0 - flip - // 1 - write - // 2 - check - // 3 - finished - - // local coin - coin1 : [0..1]; - - // flip coin - [] (pc1=0) -> 0.5 : (coin1'=0) & (pc1'=1) + 0.5 : (coin1'=1) & (pc1'=1); - // write tails -1 (reset coin to add regularity) - [] (pc1=1) & (coin1=0) & (counter>0) -> 1 : (counter'=counter-1) & (pc1'=2) & (coin1'=0); - // write heads +1 (reset coin to add regularity) - [] (pc1=1) & (coin1=1) & (counter 1 : (counter'=counter+1) & (pc1'=2) & (coin1'=0); - // check - // decide tails - [] (pc1=2) & (counter<=left) -> 1 : (pc1'=3) & (coin1'=0); - // decide heads - [] (pc1=2) & (counter>=right) -> 1 : (pc1'=3) & (coin1'=1); - // flip again - [] (pc1=2) & (counter>left) & (counter 1 : (pc1'=0); - // loop (all loop together when done) - [done] (pc1=3) -> 1 : (pc1'=3); - -endmodule - -// construct remaining processes through renaming -module process2 = process1[pc1=pc2,coin1=coin2] endmodule - -// labels -label "finished" = pc1=3 & pc2=3 ; -label "all_coins_equal_0" = coin1=0 & coin2=0 ; -label "all_coins_equal_1" = coin1=1 & coin2=1 ; -label "agree" = coin1=coin2 ; - -// rewards -rewards "steps" - true : 1; -endrewards - diff --git a/examples/mdp/consensus/coin4.nm b/examples/mdp/consensus/coin4.nm deleted file mode 100644 index fa1c5ba00..000000000 --- a/examples/mdp/consensus/coin4.nm +++ /dev/null @@ -1,62 +0,0 @@ -// COIN FLIPPING PROTOCOL FOR POLYNOMIAL RANDOMIZED CONSENSUS [AH90] -// gxn/dxp 20/11/00 - -mdp - -// constants -const int N=4; -const int K; -const int range = 2*(K+1)*N; -const int counter_init = (K+1)*N; -const int left = N; -const int right = 2*(K+1)*N - N; - -// shared coin -global counter : [0..range] init counter_init; - -module process1 - - // program counter - pc1 : [0..3]; - // 0 - flip - // 1 - write - // 2 - check - // 3 - finished - - // local coin - coin1 : [0..1]; - - // flip coin - [] (pc1=0) -> 0.5 : (coin1'=0) & (pc1'=1) + 0.5 : (coin1'=1) & (pc1'=1); - // write tails -1 (reset coin to add regularity) - [] (pc1=1) & (coin1=0) & (counter>0) -> 1 : (counter'=counter-1) & (pc1'=2) & (coin1'=0); - // write heads +1 (reset coin to add regularity) - [] (pc1=1) & (coin1=1) & (counter 1 : (counter'=counter+1) & (pc1'=2) & (coin1'=0); - // check - // decide tails - [] (pc1=2) & (counter<=left) -> 1 : (pc1'=3) & (coin1'=0); - // decide heads - [] (pc1=2) & (counter>=right) -> 1 : (pc1'=3) & (coin1'=1); - // flip again - [] (pc1=2) & (counter>left) & (counter 1 : (pc1'=0); - // loop (all loop together when done) - [done] (pc1=3) -> 1 : (pc1'=3); - -endmodule - -// construct remaining processes through renaming -module process2 = process1[pc1=pc2,coin1=coin2] endmodule -module process3 = process1[pc1=pc3,coin1=coin3] endmodule -module process4 = process1[pc1=pc4,coin1=coin4] endmodule - -// labels -label "finished" = pc1=3 & pc2=3 & pc3=3 & pc4=3 ; -label "all_coins_equal_0" = coin1=0 & coin2=0 & coin3=0 & coin4=0 ; -label "all_coins_equal_1" = coin1=1 & coin2=1 & coin3=1 & coin4=1 ; -label "agree" = coin1=coin2 & coin2=coin3 & coin3=coin4 ; - -// rewards -rewards "steps" - true : 1; -endrewards - diff --git a/examples/mdp/consensus/coin6.nm b/examples/mdp/consensus/coin6.nm deleted file mode 100644 index b373c40d5..000000000 --- a/examples/mdp/consensus/coin6.nm +++ /dev/null @@ -1,64 +0,0 @@ -// COIN FLIPPING PROTOCOL FOR POLYNOMIAL RANDOMIZED CONSENSUS [AH90] -// gxn/dxp 20/11/00 - -mdp - -// constants -const int N=6; -const int K; -const int range = 2*(K+1)*N; -const int counter_init = (K+1)*N; -const int left = N; -const int right = 2*(K+1)*N - N; - -// shared coin -global counter : [0..range] init counter_init; - -module process1 - - // program counter - pc1 : [0..3]; - // 0 - flip - // 1 - write - // 2 - check - // 3 - finished - - // local coin - coin1 : [0..1]; - - // flip coin - [] (pc1=0) -> 0.5 : (coin1'=0) & (pc1'=1) + 0.5 : (coin1'=1) & (pc1'=1); - // write tails -1 (reset coin to add regularity) - [] (pc1=1) & (coin1=0) & (counter>0) -> (counter'=counter-1) & (pc1'=2) & (coin1'=0); - // write heads +1 (reset coin to add regularity) - [] (pc1=1) & (coin1=1) & (counter (counter'=counter+1) & (pc1'=2) & (coin1'=0); - // check - // decide tails - [] (pc1=2) & (counter<=left) -> (pc1'=3) & (coin1'=0); - // decide heads - [] (pc1=2) & (counter>=right) -> (pc1'=3) & (coin1'=1); - // flip again - [] (pc1=2) & (counter>left) & (counter (pc1'=0); - // loop (all loop together when done) - [done] (pc1=3) -> (pc1'=3); - -endmodule - -// construct remaining processes through renaming -module process2 = process1[pc1=pc2,coin1=coin2] endmodule -module process3 = process1[pc1=pc3,coin1=coin3] endmodule -module process4 = process1[pc1=pc4,coin1=coin4] endmodule -module process5 = process1[pc1=pc5,coin1=coin5] endmodule -module process6 = process1[pc1=pc6,coin1=coin6] endmodule - -// labels -label "finished" = pc1=3 & pc2=3 & pc3=3 & pc4=3 & pc5=3 & pc6=3 ; -label "all_coins_equal_0" = coin1=0 & coin2=0 & coin3=0 & coin4=0 & coin5=0 & coin6=0 ; -label "all_coins_equal_1" = coin1=1 & coin2=1 & coin3=1 & coin4=1 & coin5=1 & coin6=1 ; -label "agree" = coin1=coin2 & coin2=coin3 & coin3=coin4 & coin4=coin5 & coin5=coin6 ; - -// rewards -rewards "steps" - true : 1; -endrewards - diff --git a/examples/mdp/csma/csma.cexprop b/examples/mdp/csma/csma.cexprop deleted file mode 100644 index fd4346176..000000000 --- a/examples/mdp/csma/csma.cexprop +++ /dev/null @@ -1 +0,0 @@ -P<0.5 [ !collision_max_backoff U all_delivered ] diff --git a/examples/mdp/csma/csma2_2.nm b/examples/mdp/csma/csma2_2.nm deleted file mode 100644 index 18ec5c897..000000000 --- a/examples/mdp/csma/csma2_2.nm +++ /dev/null @@ -1,130 +0,0 @@ -// CSMA/CD protocol - probabilistic version of kronos model (3 stations) -// gxn/dxp 04/12/01 - -mdp - -// note made changes since cannot have strict inequalities -// in digital clocks approach and suppose a station only sends one message - -// simplified parameters scaled -const int sigma=1; // time for messages to propagate along the bus -const int lambda=30; // time to send a message - -// actual parameters -const int N = 2; // number of processes -const int K = 2; // exponential backoff limit -const int slot = 2*sigma; // length of slot -// const int M = floor(pow(2, K))-1 ; // max number of slots to wait -const int M = 3 ; // max number of slots to wait -//const int lambda=782; -//const int sigma=26; - -// formula min_backoff_after_success = min(s1=4?cd1:K+1,s2=4?cd2:K+1); -// formula min_collisions = min(cd1,cd2); -// formula max_collisions = max(cd1,cd2); - -//---------------------------------------------------------------------------------------------------------------------------- -// the bus -module bus - - b : [0..2]; - // b=0 - idle - // b=1 - active - // b=2 - collision - - // clocks of bus - y1 : [0..sigma+1]; // time since first send (used find time until channel sensed busy) - y2 : [0..sigma+1]; // time since second send (used to find time until collision detected) - - // a sender sends (ok - no other message being sent) - [send1] (b=0) -> (b'=1); - [send2] (b=0) -> (b'=1); - - // a sender sends (bus busy - collision) - [send1] (b=1|b=2) & (y1 (b'=2); - [send2] (b=1|b=2) & (y1 (b'=2); - - // finish sending - [end1] (b=1) -> (b'=0) & (y1'=0); - [end2] (b=1) -> (b'=0) & (y1'=0); - - // bus busy - [busy1] (b=1|b=2) & (y1>=sigma) -> (b'=b); - [busy2] (b=1|b=2) & (y1>=sigma) -> (b'=b); - - // collision detected - [cd] (b=2) & (y2<=sigma) -> (b'=0) & (y1'=0) & (y2'=0); - - // time passage - [time] (b=0) -> (y1'=0); // value of y1/y2 does not matter in state 0 - [time] (b=1) -> (y1'=min(y1+1,sigma+1)); // no invariant in state 1 - [time] (b=2) & (y2 (y1'=min(y1+1,sigma+1)) & (y2'=min(y2+1,sigma+1)); // invariant in state 2 (time until collision detected) - -endmodule - -//---------------------------------------------------------------------------------------------------------------------------- -// model of first sender -module station1 - - // LOCAL STATE - s1 : [0..5]; - // s1=0 - initial state - // s1=1 - transmit - // s1=2 - collision (set backoff) - // s1=3 - wait (bus busy) - // s1=4 - successfully sent - - // LOCAL CLOCK - x1 : [0..max(lambda,slot)]; - - // BACKOFF COUNTER (number of slots to wait) - bc1 : [0..M]; - - // 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 (increment backoff counter) - [cd] !(s1=1) -> (s1'=s1); // add loop for collision detection when not important - - // set backoff (no time can pass in this state) - // probability depends on which transmission this is (cd1) - [] s1=2 & cd1=1 -> 1/2 : (s1'=3) & (bc1'=0) + 1/2 : (s1'=3) & (bc1'=1) ; - [] 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) ; - - // 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) - [busy1] (s1=3) & (x1=slot) & (bc1=0) -> (s1'=2) & (x1'=0) & (cd1'=min(K,cd1+1)); // finished backoff (bus busy) - - // once finished nothing matters - [time] (s1>=4) -> (x1'=0); - -endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// construct further stations through renaming -module station2=station1[s1=s2,x1=x2,cd1=cd2,bc1=bc2,send1=send2,busy1=busy2,end1=end2] endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// reward structure for expected time -rewards "time" - [time] true : 1; -endrewards - -//---------------------------------------------------------------------------------------------------------------------------- - -// labels/formulae -label "all_delivered" = s1=4&s2=4; -label "one_delivered" = s1=4|s2=4; -label "collision_max_backoff" = (cd1=K & s1=1 & b=2)|(cd2=K & s2=1 & b=2); - diff --git a/examples/mdp/csma/csma2_4.nm b/examples/mdp/csma/csma2_4.nm deleted file mode 100644 index ddc1f3281..000000000 --- a/examples/mdp/csma/csma2_4.nm +++ /dev/null @@ -1,128 +0,0 @@ -// CSMA/CD protocol - probabilistic version of kronos model (3 stations) -// gxn/dxp 04/12/01 - -mdp - -// note made changes since cannot have strict inequalities -// in digital clocks approach and suppose a station only sends one message - -// simplified parameters scaled -const int sigma=1; // time for messages to propagate along the bus -const int lambda=30; // time to send a message - -// actual parameters -const int N = 2; // number of processes -const int K = 4; // exponential backoff limit -const int slot = 2*sigma; // length of slot -const int M = 15 ; // max number of slots to wait -//const int lambda=782; -//const int sigma=26; - - -//---------------------------------------------------------------------------------------------------------------------------- -// the bus -module bus - - b : [0..2]; - // b=0 - idle - // b=1 - active - // b=2 - collision - - // clocks of bus - y1 : [0..sigma+1]; // time since first send (used find time until channel sensed busy) - y2 : [0..sigma+1]; // time since second send (used to find time until collision detected) - - // a sender sends (ok - no other message being sent) - [send1] (b=0) -> (b'=1); - [send2] (b=0) -> (b'=1); - - // a sender sends (bus busy - collision) - [send1] (b=1|b=2) & (y1 (b'=2); - [send2] (b=1|b=2) & (y1 (b'=2); - - // finish sending - [end1] (b=1) -> (b'=0) & (y1'=0); - [end2] (b=1) -> (b'=0) & (y1'=0); - - // bus busy - [busy1] (b=1|b=2) & (y1>=sigma) -> (b'=b); - [busy2] (b=1|b=2) & (y1>=sigma) -> (b'=b); - - // collision detected - [cd] (b=2) & (y2<=sigma) -> (b'=0) & (y1'=0) & (y2'=0); - - // time passage - [time] (b=0) -> (y1'=0); // value of y1/y2 does not matter in state 0 - [time] (b=1) -> (y1'=min(y1+1,sigma+1)); // no invariant in state 1 - [time] (b=2) & (y2 (y1'=min(y1+1,sigma+1)) & (y2'=min(y2+1,sigma+1)); // invariant in state 2 (time until collision detected) - -endmodule - -//---------------------------------------------------------------------------------------------------------------------------- -// model of first sender -module station1 - - // LOCAL STATE - s1 : [0..5]; - // s1=0 - initial state - // s1=1 - transmit - // s1=2 - collision (set backoff) - // s1=3 - wait (bus busy) - // s1=4 - successfully sent - - // LOCAL CLOCK - x1 : [0..max(lambda,slot)]; - - // BACKOFF COUNTER (number of slots to wait) - bc1 : [0..M]; - - // 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 (increment backoff counter) - [cd] !(s1=1) -> (s1'=s1); // add loop for collision detection when not important - - // set backoff (no time can pass in this state) - // probability depends on which transmission this is (cd1) - [] s1=2 & cd1=1 -> 1/2 : (s1'=3) & (bc1'=0) + 1/2 : (s1'=3) & (bc1'=1) ; - [] 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) ; - [] 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) ; - [] 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) ; - - // 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) - [busy1] (s1=3) & (x1=slot) & (bc1=0) -> (s1'=2) & (x1'=0) & (cd1'=min(K,cd1+1)); // finished backoff (bus busy) - - // once finished nothing matters - [time] (s1>=4) -> (x1'=0); - -endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// construct further stations through renaming -module station2=station1[s1=s2,x1=x2,cd1=cd2,bc1=bc2,send1=send2,busy1=busy2,end1=end2] endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// reward structure for expected time -rewards "time" - [time] true : 1; -endrewards - -//---------------------------------------------------------------------------------------------------------------------------- - -// labels/formulae -label "all_delivered" = s1=4&s2=4; -label "one_delivered" = s1=4|s2=4; -label "collision_max_backoff" = (cd1=K & s1=1 & b=2)|(cd2=K & s2=1 & b=2); - diff --git a/examples/mdp/csma/csma2_6.nm b/examples/mdp/csma/csma2_6.nm deleted file mode 100644 index d48bf5509..000000000 --- a/examples/mdp/csma/csma2_6.nm +++ /dev/null @@ -1,129 +0,0 @@ -// CSMA/CD protocol - probabilistic version of kronos model (3 stations) -// gxn/dxp 04/12/01 - -mdp - -// note made changes since cannot have strict inequalities -// in digital clocks approach and suppose a station only sends one message - -// simplified parameters scaled -const int sigma=1; // time for messages to propagate along the bus -const int lambda=30; // time to send a message - -// actual parameters -const int N = 2; // number of processes -const int K = 6; // exponential backoff limit -const int slot = 2*sigma; // length of slot -const int M = 63; // max number of slots to wait -//const int lambda=782; -//const int sigma=26; - -//---------------------------------------------------------------------------------------------------------------------------- -// the bus -module bus - - b : [0..2]; - // b=0 - idle - // b=1 - active - // b=2 - collision - - // clocks of bus - y1 : [0..sigma+1]; // time since first send (used find time until channel sensed busy) - y2 : [0..sigma+1]; // time since second send (used to find time until collision detected) - - // a sender sends (ok - no other message being sent) - [send1] (b=0) -> (b'=1); - [send2] (b=0) -> (b'=1); - - // a sender sends (bus busy - collision) - [send1] (b=1|b=2) & (y1 (b'=2); - [send2] (b=1|b=2) & (y1 (b'=2); - - // finish sending - [end1] (b=1) -> (b'=0) & (y1'=0); - [end2] (b=1) -> (b'=0) & (y1'=0); - - // bus busy - [busy1] (b=1|b=2) & (y1>=sigma) -> (b'=b); - [busy2] (b=1|b=2) & (y1>=sigma) -> (b'=b); - - // collision detected - [cd] (b=2) & (y2<=sigma) -> (b'=0) & (y1'=0) & (y2'=0); - - // time passage - [time] (b=0) -> (y1'=0); // value of y1/y2 does not matter in state 0 - [time] (b=1) -> (y1'=min(y1+1,sigma+1)); // no invariant in state 1 - [time] (b=2) & (y2 (y1'=min(y1+1,sigma+1)) & (y2'=min(y2+1,sigma+1)); // invariant in state 2 (time until collision detected) - -endmodule - -//---------------------------------------------------------------------------------------------------------------------------- -// model of first sender -module station1 - - // LOCAL STATE - s1 : [0..5]; - // s1=0 - initial state - // s1=1 - transmit - // s1=2 - collision (set backoff) - // s1=3 - wait (bus busy) - // s1=4 - successfully sent - - // LOCAL CLOCK - x1 : [0..max(lambda,slot)]; - - // BACKOFF COUNTER (number of slots to wait) - bc1 : [0..M]; - - // 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 (increment backoff counter) - [cd] !(s1=1) -> (s1'=s1); // add loop for collision detection when not important - - // set backoff (no time can pass in this state) - // probability depends on which transmission this is (cd1) - [] s1=2 & cd1=1 -> 1/2 : (s1'=3) & (bc1'=0) + 1/2 : (s1'=3) & (bc1'=1) ; - [] 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) ; - [] 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) ; - [] 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) ; - [] 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) ; - [] 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) ; - - // 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) - [busy1] (s1=3) & (x1=slot) & (bc1=0) -> (s1'=2) & (x1'=0) & (cd1'=min(K,cd1+1)); // finished backoff (bus busy) - - // once finished nothing matters - [time] (s1>=4) -> (x1'=0); - -endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// construct further stations through renaming -module station2=station1[s1=s2,x1=x2,cd1=cd2,bc1=bc2,send1=send2,busy1=busy2,end1=end2] endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// reward structure for expected time -rewards "time" - [time] true : 1; -endrewards - -//---------------------------------------------------------------------------------------------------------------------------- - -// labels/formulae -label "all_delivered" = s1=4&s2=4; -label "one_delivered" = s1=4|s2=4; -label "collision_max_backoff" = (cd1=K & s1=1 & b=2)|(cd2=K & s2=1 & b=2); - diff --git a/examples/mdp/csma/csma3_2.nm b/examples/mdp/csma/csma3_2.nm deleted file mode 100644 index 347dee08f..000000000 --- a/examples/mdp/csma/csma3_2.nm +++ /dev/null @@ -1,130 +0,0 @@ -// CSMA/CD protocol - probabilistic version of kronos model (3 stations) -// gxn/dxp 04/12/01 - -mdp - -// note made changes since cannot have strict inequalities -// in digital clocks approach and suppose a station only sends one message - -// simplified parameters scaled -const int sigma=1; // time for messages to propagate along the bus -const int lambda=30; // time to send a message - -// actual parameters -const int N = 3; // number of processes -const int K = 2; // exponential backoff limit -const int slot = 2*sigma; // length of slot -const int M = 3; // max number of slots to wait -//const int lambda=782; -//const int sigma=26; - -//---------------------------------------------------------------------------------------------------------------------------- -// the bus -module bus - - b : [0..2]; - // b=0 - idle - // b=1 - active - // b=2 - collision - - // clocks of bus - y1 : [0..sigma+1]; // time since first send (used find time until channel sensed busy) - y2 : [0..sigma+1]; // time since second send (used to find time until collision detected) - - // a sender sends (ok - no other message being sent) - [send1] (b=0) -> (b'=1); - [send2] (b=0) -> (b'=1); - [send3] (b=0) -> (b'=1); - - // a sender sends (bus busy - collision) - [send1] (b=1|b=2) & (y1 (b'=2); - [send2] (b=1|b=2) & (y1 (b'=2); - [send3] (b=1|b=2) & (y1 (b'=2); - - // finish sending - [end1] (b=1) -> (b'=0) & (y1'=0); - [end2] (b=1) -> (b'=0) & (y1'=0); - [end3] (b=1) -> (b'=0) & (y1'=0); - - // bus busy - [busy1] (b=1|b=2) & (y1>=sigma) -> (b'=b); - [busy2] (b=1|b=2) & (y1>=sigma) -> (b'=b); - [busy3] (b=1|b=2) & (y1>=sigma) -> (b'=b); - - // collision detected - [cd] (b=2) & (y2<=sigma) -> (b'=0) & (y1'=0) & (y2'=0); - - // time passage - [time] (b=0) -> (y1'=0); // value of y1/y2 does not matter in state 0 - [time] (b=1) -> (y1'=min(y1+1,sigma+1)); // no invariant in state 1 - [time] (b=2) & (y2 (y1'=min(y1+1,sigma+1)) & (y2'=min(y2+1,sigma+1)); // invariant in state 2 (time until collision detected) - -endmodule - -//---------------------------------------------------------------------------------------------------------------------------- -// model of first sender -module station1 - - // LOCAL STATE - s1 : [0..5]; - // s1=0 - initial state - // s1=1 - transmit - // s1=2 - collision (set backoff) - // s1=3 - wait (bus busy) - // s1=4 - successfully sent - - // LOCAL CLOCK - x1 : [0..max(lambda,slot)]; - - // BACKOFF COUNTER (number of slots to wait) - bc1 : [0..M]; - - // 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 (increment backoff counter) - [cd] !(s1=1) -> (s1'=s1); // add loop for collision detection when not important - - // set backoff (no time can pass in this state) - // probability depends on which transmission this is (cd1) - [] s1=2 & cd1=1 -> 1/2 : (s1'=3) & (bc1'=0) + 1/2 : (s1'=3) & (bc1'=1) ; - [] 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) ; - - // 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) - [busy1] (s1=3) & (x1=slot) & (bc1=0) -> (s1'=2) & (x1'=0) & (cd1'=min(K,cd1+1)); // finished backoff (bus busy) - - // once finished nothing matters - [time] (s1>=4) -> (x1'=0); - -endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// construct further stations through renaming -module station2=station1[s1=s2,x1=x2,cd1=cd2,bc1=bc2,send1=send2,busy1=busy2,end1=end2] endmodule -module station3=station1[s1=s3,x1=x3,cd1=cd3,bc1=bc3,send1=send3,busy1=busy3,end1=end3] endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// reward structure for expected time -rewards "time" - [time] true : 1; -endrewards - -//---------------------------------------------------------------------------------------------------------------------------- - -// labels/formulae -label "all_delivered" = s1=4&s2=4&s3=4; -label "one_delivered" = s1=4|s2=4|s3=4; -label "collision_max_backoff" = (cd1=K & s1=1 & b=2)|(cd2=K & s2=1 & b=2)|(cd3=K & s3=1 & b=2); - diff --git a/examples/mdp/csma/csma3_4.nm b/examples/mdp/csma/csma3_4.nm deleted file mode 100644 index 8739053e5..000000000 --- a/examples/mdp/csma/csma3_4.nm +++ /dev/null @@ -1,134 +0,0 @@ -// CSMA/CD protocol - probabilistic version of kronos model (3 stations) -// gxn/dxp 04/12/01 - -mdp - -// note made changes since cannot have strict inequalities -// in digital clocks approach and suppose a station only sends one message - -// simplified parameters scaled -const int sigma=1; // time for messages to propagate along the bus -const int lambda=30; // time to send a message - -// actual parameters -const int N = 3; // number of processes -const int K = 4; // exponential backoff limit -const int slot = 2*sigma; // length of slot -const int M = 15; // max number of slots to wait -//const int lambda=782; -//const int sigma=26; - -//---------------------------------------------------------------------------------------------------------------------------- -// the bus -module bus - - b : [0..2]; - // b=0 - idle - // b=1 - active - // b=2 - collision - - // clocks of bus - y1 : [0..sigma+1]; // time since first send (used find time until channel sensed busy) - y2 : [0..sigma+1]; // time since second send (used to find time until collision detected) - - // a sender sends (ok - no other message being sent) - [send1] (b=0) -> (b'=1); - [send2] (b=0) -> (b'=1); - [send3] (b=0) -> (b'=1); - - // a sender sends (bus busy - collision) - [send1] (b=1|b=2) & (y1 (b'=2); - [send2] (b=1|b=2) & (y1 (b'=2); - [send3] (b=1|b=2) & (y1 (b'=2); - - // finish sending - [end1] (b=1) -> (b'=0) & (y1'=0); - [end2] (b=1) -> (b'=0) & (y1'=0); - [end3] (b=1) -> (b'=0) & (y1'=0); - - // bus busy - [busy1] (b=1|b=2) & (y1>=sigma) -> (b'=b); - [busy2] (b=1|b=2) & (y1>=sigma) -> (b'=b); - [busy3] (b=1|b=2) & (y1>=sigma) -> (b'=b); - - // collision detected - [cd] (b=2) & (y2<=sigma) -> (b'=0) & (y1'=0) & (y2'=0); - - // time passage - [time] (b=0) -> (y1'=0); // value of y1/y2 does not matter in state 0 - [time] (b=1) -> (y1'=min(y1+1,sigma+1)); // no invariant in state 1 - [time] (b=2) & (y2 (y1'=min(y1+1,sigma+1)) & (y2'=min(y2+1,sigma+1)); // invariant in state 2 (time until collision detected) - -endmodule - -//---------------------------------------------------------------------------------------------------------------------------- -// model of first sender -module station1 - - // LOCAL STATE - s1 : [0..5]; - // s1=0 - initial state - // s1=1 - transmit - // s1=2 - collision (set backoff) - // s1=3 - wait (bus busy) - // s1=4 - successfully sent - - // LOCAL CLOCK - x1 : [0..max(lambda,slot)]; - - // BACKOFF COUNTER (number of slots to wait) - bc1 : [0..M]; - - // 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 (increment backoff counter) - [cd] !(s1=1) -> (s1'=s1); // add loop for collision detection when not important - - // set backoff (no time can pass in this state) - // probability depends on which transmission this is (cd1) - [] s1=2 & cd1=1 -> 1/2 : (s1'=3) & (bc1'=0) + 1/2 : (s1'=3) & (bc1'=1) ; - [] 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) ; - [] 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) ; - [] 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) ; - - // 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) - [busy1] (s1=3) & (x1=slot) & (bc1=0) -> (s1'=2) & (x1'=0) & (cd1'=min(K,cd1+1)); // finished backoff (bus busy) - - // once finished nothing matters - [time] (s1>=4) -> (x1'=0); - -endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// construct further stations through renaming -module station2=station1[s1=s2,x1=x2,cd1=cd2,bc1=bc2,send1=send2,busy1=busy2,end1=end2] endmodule -module station3=station1[s1=s3,x1=x3,cd1=cd3,bc1=bc3,send1=send3,busy1=busy3,end1=end3] endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// reward structure for expected time -rewards "time" - [time] true : 1; -endrewards - -//---------------------------------------------------------------------------------------------------------------------------- - -// labels/formulae -label "all_delivered" = s1=4&s2=4&s3=4; -label "one_delivered" = s1=4|s2=4|s3=4; -label "collision_max_backoff" = (cd1=K & s1=1 & b=2)|(cd2=K & s2=1 & b=2)|(cd3=K & s3=1 & b=2); -formula min_backoff_after_success = min(s1=4?cd1:K+1,s2=4?cd2:K+1,s3=4?cd3:K+1); -formula min_collisions = min(cd1,cd2,cd3); -formula max_collisions = max(cd1,cd2,cd3); diff --git a/examples/mdp/csma/csma3_6.nm b/examples/mdp/csma/csma3_6.nm deleted file mode 100644 index 19ae5c4e0..000000000 --- a/examples/mdp/csma/csma3_6.nm +++ /dev/null @@ -1,134 +0,0 @@ -// CSMA/CD protocol - probabilistic version of kronos model (3 stations) -// gxn/dxp 04/12/01 - -mdp - -// note made changes since cannot have strict inequalities -// in digital clocks approach and suppose a station only sends one message - -// simplified parameters scaled -const int sigma=1; // time for messages to propagate along the bus -const int lambda=30; // time to send a message - -// actual parameters -const int N = 3; // number of processes -const int K = 6; // exponential backoff limit -const int slot = 2*sigma; // length of slot -const int M = 63; // max number of slots to wait -//const int lambda=782; -//const int sigma=26; - -//---------------------------------------------------------------------------------------------------------------------------- -// the bus -module bus - - b : [0..2]; - // b=0 - idle - // b=1 - active - // b=2 - collision - - // clocks of bus - y1 : [0..sigma+1]; // time since first send (used find time until channel sensed busy) - y2 : [0..sigma+1]; // time since second send (used to find time until collision detected) - - // a sender sends (ok - no other message being sent) - [send1] (b=0) -> (b'=1); - [send2] (b=0) -> (b'=1); - [send3] (b=0) -> (b'=1); - - // a sender sends (bus busy - collision) - [send1] (b=1|b=2) & (y1 (b'=2); - [send2] (b=1|b=2) & (y1 (b'=2); - [send3] (b=1|b=2) & (y1 (b'=2); - - // finish sending - [end1] (b=1) -> (b'=0) & (y1'=0); - [end2] (b=1) -> (b'=0) & (y1'=0); - [end3] (b=1) -> (b'=0) & (y1'=0); - - // bus busy - [busy1] (b=1|b=2) & (y1>=sigma) -> (b'=b); - [busy2] (b=1|b=2) & (y1>=sigma) -> (b'=b); - [busy3] (b=1|b=2) & (y1>=sigma) -> (b'=b); - - // collision detected - [cd] (b=2) & (y2<=sigma) -> (b'=0) & (y1'=0) & (y2'=0); - - // time passage - [time] (b=0) -> (y1'=0); // value of y1/y2 does not matter in state 0 - [time] (b=1) -> (y1'=min(y1+1,sigma+1)); // no invariant in state 1 - [time] (b=2) & (y2 (y1'=min(y1+1,sigma+1)) & (y2'=min(y2+1,sigma+1)); // invariant in state 2 (time until collision detected) - -endmodule - -//---------------------------------------------------------------------------------------------------------------------------- -// model of first sender -module station1 - - // LOCAL STATE - s1 : [0..5]; - // s1=0 - initial state - // s1=1 - transmit - // s1=2 - collision (set backoff) - // s1=3 - wait (bus busy) - // s1=4 - successfully sent - - // LOCAL CLOCK - x1 : [0..max(lambda,slot)]; - - // BACKOFF COUNTER (number of slots to wait) - bc1 : [0..M]; - - // 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 (increment backoff counter) - [cd] !(s1=1) -> (s1'=s1); // add loop for collision detection when not important - - // set backoff (no time can pass in this state) - // probability depends on which transmission this is (cd1) - [] s1=2 & cd1=1 -> 1/2 : (s1'=3) & (bc1'=0) + 1/2 : (s1'=3) & (bc1'=1) ; - [] 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) ; - [] 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) ; - [] 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) ; - [] 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) ; - [] 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) ; - - // 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) - [busy1] (s1=3) & (x1=slot) & (bc1=0) -> (s1'=2) & (x1'=0) & (cd1'=min(K,cd1+1)); // finished backoff (bus busy) - - // once finished nothing matters - [time] (s1>=4) -> (x1'=0); - -endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// construct further stations through renaming -module station2=station1[s1=s2,x1=x2,cd1=cd2,bc1=bc2,send1=send2,busy1=busy2,end1=end2] endmodule -module station3=station1[s1=s3,x1=x3,cd1=cd3,bc1=bc3,send1=send3,busy1=busy3,end1=end3] endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// reward structure for expected time -rewards "time" - [time] true : 1; -endrewards - -//---------------------------------------------------------------------------------------------------------------------------- - -// labels/formulae -label "all_delivered" = s1=4&s2=4&s3=4; -label "one_delivered" = s1=4|s2=4|s3=4; -label "collision_max_backoff" = (cd1=K & s1=1 & b=2)|(cd2=K & s2=1 & b=2)|(cd3=K & s3=1 & b=2); - diff --git a/examples/mdp/csma/csma4_2.nm b/examples/mdp/csma/csma4_2.nm deleted file mode 100644 index d23df94ca..000000000 --- a/examples/mdp/csma/csma4_2.nm +++ /dev/null @@ -1,135 +0,0 @@ -// CSMA/CD protocol - probabilistic version of kronos model (3 stations) -// gxn/dxp 04/12/01 - -mdp - -// note made changes since cannot have strict inequalities -// in digital clocks approach and suppose a station only sends one message - -// simplified parameters scaled -const int sigma=1; // time for messages to propagate along the bus -const int lambda=30; // time to send a message - -// actual parameters -const int N = 4; // number of processes -const int K = 2; // exponential backoff limit -const int slot = 2*sigma; // length of slot -const int M = 3; // max number of slots to wait -//const int lambda=782; -//const int sigma=26; - -//---------------------------------------------------------------------------------------------------------------------------- -// the bus -module bus - - b : [0..2]; - // b=0 - idle - // b=1 - active - // b=2 - collision - - // clocks of bus - y1 : [0..sigma+1]; // time since first send (used find time until channel sensed busy) - y2 : [0..sigma+1]; // time since second send (used to find time until collision detected) - - // a sender sends (ok - no other message being sent) - [send1] (b=0) -> (b'=1); - [send2] (b=0) -> (b'=1); - [send3] (b=0) -> (b'=1); - [send4] (b=0) -> (b'=1); - - // a sender sends (bus busy - collision) - [send1] (b=1|b=2) & (y1 (b'=2); - [send2] (b=1|b=2) & (y1 (b'=2); - [send3] (b=1|b=2) & (y1 (b'=2); - [send4] (b=1|b=2) & (y1 (b'=2); - - // finish sending - [end1] (b=1) -> (b'=0) & (y1'=0); - [end2] (b=1) -> (b'=0) & (y1'=0); - [end3] (b=1) -> (b'=0) & (y1'=0); - [end4] (b=1) -> (b'=0) & (y1'=0); - - // bus busy - [busy1] (b=1|b=2) & (y1>=sigma) -> (b'=b); - [busy2] (b=1|b=2) & (y1>=sigma) -> (b'=b); - [busy3] (b=1|b=2) & (y1>=sigma) -> (b'=b); - [busy4] (b=1|b=2) & (y1>=sigma) -> (b'=b); - - // collision detected - [cd] (b=2) & (y2<=sigma) -> (b'=0) & (y1'=0) & (y2'=0); - - // time passage - [time] (b=0) -> (y1'=0); // value of y1/y2 does not matter in state 0 - [time] (b=1) -> (y1'=min(y1+1,sigma+1)); // no invariant in state 1 - [time] (b=2) & (y2 (y1'=min(y1+1,sigma+1)) & (y2'=min(y2+1,sigma+1)); // invariant in state 2 (time until collision detected) - -endmodule - -//---------------------------------------------------------------------------------------------------------------------------- -// model of first sender -module station1 - - // LOCAL STATE - s1 : [0..5]; - // s1=0 - initial state - // s1=1 - transmit - // s1=2 - collision (set backoff) - // s1=3 - wait (bus busy) - // s1=4 - successfully sent - - // LOCAL CLOCK - x1 : [0..max(lambda,slot)]; - - // BACKOFF COUNTER (number of slots to wait) - bc1 : [0..M]; - - // 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 (increment backoff counter) - [cd] !(s1=1) -> (s1'=s1); // add loop for collision detection when not important - - // set backoff (no time can pass in this state) - // probability depends on which transmission this is (cd1) - [] s1=2 & cd1=1 -> 1/2 : (s1'=3) & (bc1'=0) + 1/2 : (s1'=3) & (bc1'=1) ; - [] 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) ; - - // 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) - [busy1] (s1=3) & (x1=slot) & (bc1=0) -> (s1'=2) & (x1'=0) & (cd1'=min(K,cd1+1)); // finished backoff (bus busy) - - // once finished nothing matters - [time] (s1>=4) -> (x1'=0); - -endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// construct further stations through renaming -module station2=station1[s1=s2,x1=x2,cd1=cd2,bc1=bc2,send1=send2,busy1=busy2,end1=end2] endmodule -module station3=station1[s1=s3,x1=x3,cd1=cd3,bc1=bc3,send1=send3,busy1=busy3,end1=end3] endmodule -module station4=station1[s1=s4,x1=x4,cd1=cd4,bc1=bc4,send1=send4,busy1=busy4,end1=end4] endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// reward structure for expected time -rewards "time" - [time] true : 1; -endrewards - -//---------------------------------------------------------------------------------------------------------------------------- - -// labels/formulae -label "all_delivered" = s1=4&s2=4&s3=4&s4=4; -label "one_delivered" = s1=4|s2=4|s3=4|s4=4; -label "collision_max_backoff" = (cd1=K & s1=1 & b=2)|(cd2=K & s2=1 & b=2)|(cd3=K & s3=1 & b=2)|(cd4=K & s4=1 & b=2); - diff --git a/examples/mdp/csma/csma4_4.nm b/examples/mdp/csma/csma4_4.nm deleted file mode 100644 index e1ba511f4..000000000 --- a/examples/mdp/csma/csma4_4.nm +++ /dev/null @@ -1,139 +0,0 @@ -// CSMA/CD protocol - probabilistic version of kronos model (3 stations) -// gxn/dxp 04/12/01 - -mdp - -// note made changes since cannot have strict inequalities -// in digital clocks approach and suppose a station only sends one message - -// simplified parameters scaled -const int sigma=1; // time for messages to propagate along the bus -const int lambda=30; // time to send a message - -// actual parameters -const int N = 4; // number of processes -const int K = 4; // exponential backoff limit -const int slot = 2*sigma; // length of slot -const int M = 15; // max number of slots to wait -//const int lambda=782; -//const int sigma=26; - -//---------------------------------------------------------------------------------------------------------------------------- -// the bus -module bus - - b : [0..2]; - // b=0 - idle - // b=1 - active - // b=2 - collision - - // clocks of bus - y1 : [0..sigma+1]; // time since first send (used find time until channel sensed busy) - y2 : [0..sigma+1]; // time since second send (used to find time until collision detected) - - // a sender sends (ok - no other message being sent) - [send1] (b=0) -> (b'=1); - [send2] (b=0) -> (b'=1); - [send3] (b=0) -> (b'=1); - [send4] (b=0) -> (b'=1); - - // a sender sends (bus busy - collision) - [send1] (b=1|b=2) & (y1 (b'=2); - [send2] (b=1|b=2) & (y1 (b'=2); - [send3] (b=1|b=2) & (y1 (b'=2); - [send4] (b=1|b=2) & (y1 (b'=2); - - // finish sending - [end1] (b=1) -> (b'=0) & (y1'=0); - [end2] (b=1) -> (b'=0) & (y1'=0); - [end3] (b=1) -> (b'=0) & (y1'=0); - [end4] (b=1) -> (b'=0) & (y1'=0); - - // bus busy - [busy1] (b=1|b=2) & (y1>=sigma) -> (b'=b); - [busy2] (b=1|b=2) & (y1>=sigma) -> (b'=b); - [busy3] (b=1|b=2) & (y1>=sigma) -> (b'=b); - [busy4] (b=1|b=2) & (y1>=sigma) -> (b'=b); - - // collision detected - [cd] (b=2) & (y2<=sigma) -> (b'=0) & (y1'=0) & (y2'=0); - - // time passage - [time] (b=0) -> (y1'=0); // value of y1/y2 does not matter in state 0 - [time] (b=1) -> (y1'=min(y1+1,sigma+1)); // no invariant in state 1 - [time] (b=2) & (y2 (y1'=min(y1+1,sigma+1)) & (y2'=min(y2+1,sigma+1)); // invariant in state 2 (time until collision detected) - -endmodule - -//---------------------------------------------------------------------------------------------------------------------------- -// model of first sender -module station1 - - // LOCAL STATE - s1 : [0..5]; - // s1=0 - initial state - // s1=1 - transmit - // s1=2 - collision (set backoff) - // s1=3 - wait (bus busy) - // s1=4 - successfully sent - - // LOCAL CLOCK - x1 : [0..max(lambda,slot)]; - - // BACKOFF COUNTER (number of slots to wait) - bc1 : [0..M]; - - // 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 (increment backoff counter) - [cd] !(s1=1) -> (s1'=s1); // add loop for collision detection when not important - - // set backoff (no time can pass in this state) - // probability depends on which transmission this is (cd1) - [] s1=2 & cd1=1 -> 1/2 : (s1'=3) & (bc1'=0) + 1/2 : (s1'=3) & (bc1'=1) ; - [] 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) ; - [] 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) ; - [] 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) ; - - // 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) - [busy1] (s1=3) & (x1=slot) & (bc1=0) -> (s1'=2) & (x1'=0) & (cd1'=min(K,cd1+1)); // finished backoff (bus busy) - - // once finished nothing matters - [time] (s1>=4) -> (x1'=0); - -endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// construct further stations through renaming -module station2=station1[s1=s2,x1=x2,cd1=cd2,bc1=bc2,send1=send2,busy1=busy2,end1=end2] endmodule -module station3=station1[s1=s3,x1=x3,cd1=cd3,bc1=bc3,send1=send3,busy1=busy3,end1=end3] endmodule -module station4=station1[s1=s4,x1=x4,cd1=cd4,bc1=bc4,send1=send4,busy1=busy4,end1=end4] endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// reward structure for expected time -rewards "time" - [time] true : 1; -endrewards - -//---------------------------------------------------------------------------------------------------------------------------- - -// labels/formulae -label "all_delivered" = s1=4&s2=4&s3=4&s4=4; -label "one_delivered" = s1=4|s2=4|s3=4|s4=4; -label "collision_max_backoff" = (cd1=K & s1=1 & b=2)|(cd2=K & s2=1 & b=2)|(cd3=K & s3=1 & b=2)|(cd4=K & s4=1 & b=2); -formula min_backoff_after_success = min(s1=4?cd1:K+1,s2=4?cd2:K+1,s3=4?cd3:K+1,s4=4?cd4:K+1); -formula min_collisions = min(cd1,cd2,cd3,cd4); -formula max_collisions = max(cd1,cd2,cd3,cd4); diff --git a/examples/mdp/csma/csma4_6.nm b/examples/mdp/csma/csma4_6.nm deleted file mode 100644 index 12e5f0152..000000000 --- a/examples/mdp/csma/csma4_6.nm +++ /dev/null @@ -1,141 +0,0 @@ -// CSMA/CD protocol - probabilistic version of kronos model (3 stations) -// gxn/dxp 04/12/01 - -mdp - -// note made changes since cannot have strict inequalities -// in digital clocks approach and suppose a station only sends one message - -// simplified parameters scaled -const int sigma=1; // time for messages to propagate along the bus -const int lambda=30; // time to send a message - -// actual parameters -const int N = 4; // number of processes -const int K = 6; // exponential backoff limit -const int slot = 2*sigma; // length of slot -const int M = 63; // max number of slots to wait -//const int lambda=782; -//const int sigma=26; - -//---------------------------------------------------------------------------------------------------------------------------- -// the bus -module bus - - b : [0..2]; - // b=0 - idle - // b=1 - active - // b=2 - collision - - // clocks of bus - y1 : [0..sigma+1]; // time since first send (used find time until channel sensed busy) - y2 : [0..sigma+1]; // time since second send (used to find time until collision detected) - - // a sender sends (ok - no other message being sent) - [send1] (b=0) -> (b'=1); - [send2] (b=0) -> (b'=1); - [send3] (b=0) -> (b'=1); - [send4] (b=0) -> (b'=1); - - // a sender sends (bus busy - collision) - [send1] (b=1|b=2) & (y1 (b'=2); - [send2] (b=1|b=2) & (y1 (b'=2); - [send3] (b=1|b=2) & (y1 (b'=2); - [send4] (b=1|b=2) & (y1 (b'=2); - - // finish sending - [end1] (b=1) -> (b'=0) & (y1'=0); - [end2] (b=1) -> (b'=0) & (y1'=0); - [end3] (b=1) -> (b'=0) & (y1'=0); - [end4] (b=1) -> (b'=0) & (y1'=0); - - // bus busy - [busy1] (b=1|b=2) & (y1>=sigma) -> (b'=b); - [busy2] (b=1|b=2) & (y1>=sigma) -> (b'=b); - [busy3] (b=1|b=2) & (y1>=sigma) -> (b'=b); - [busy4] (b=1|b=2) & (y1>=sigma) -> (b'=b); - - // collision detected - [cd] (b=2) & (y2<=sigma) -> (b'=0) & (y1'=0) & (y2'=0); - - // time passage - [time] (b=0) -> (y1'=0); // value of y1/y2 does not matter in state 0 - [time] (b=1) -> (y1'=min(y1+1,sigma+1)); // no invariant in state 1 - [time] (b=2) & (y2 (y1'=min(y1+1,sigma+1)) & (y2'=min(y2+1,sigma+1)); // invariant in state 2 (time until collision detected) - -endmodule - -//---------------------------------------------------------------------------------------------------------------------------- -// model of first sender -module station1 - - // LOCAL STATE - s1 : [0..5]; - // s1=0 - initial state - // s1=1 - transmit - // s1=2 - collision (set backoff) - // s1=3 - wait (bus busy) - // s1=4 - successfully sent - - // LOCAL CLOCK - x1 : [0..max(lambda,slot)]; - - // BACKOFF COUNTER (number of slots to wait) - bc1 : [0..M]; - - // 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 (increment backoff counter) - [cd] !(s1=1) -> (s1'=s1); // add loop for collision detection when not important - - // set backoff (no time can pass in this state) - // probability depends on which transmission this is (cd1) - [] s1=2 & cd1=1 -> 1/2 : (s1'=3) & (bc1'=0) + 1/2 : (s1'=3) & (bc1'=1) ; - [] 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) ; - [] 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) ; - [] 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) ; - [] 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) ; - [] 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) ; - - // 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) - [busy1] (s1=3) & (x1=slot) & (bc1=0) -> (s1'=2) & (x1'=0) & (cd1'=min(K,cd1+1)); // finished backoff (bus busy) - - // once finished nothing matters - [time] (s1>=4) -> (x1'=0); - -endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// construct further stations through renaming -module station2=station1[s1=s2,x1=x2,cd1=cd2,bc1=bc2,send1=send2,busy1=busy2,end1=end2] endmodule -module station3=station1[s1=s3,x1=x3,cd1=cd3,bc1=bc3,send1=send3,busy1=busy3,end1=end3] endmodule -module station4=station1[s1=s4,x1=x4,cd1=cd4,bc1=bc4,send1=send4,busy1=busy4,end1=end4] endmodule - -//---------------------------------------------------------------------------------------------------------------------------- - -// reward structure for expected time -rewards "time" - [time] true : 1; -endrewards - -//---------------------------------------------------------------------------------------------------------------------------- - -// labels/formulae -label "all_delivered" = s1=4&s2=4&s3=4&s4=4; -label "one_delivered" = s1=4|s2=4|s3=4|s4=4; -label "collision_max_backoff" = (cd1=K & s1=1 & b=2)|(cd2=K & s2=1 & b=2)|(cd3=K & s3=1 & b=2)|(cd4=K & s4=1 & b=2); -formula min_backoff_after_success = min(s1=4?cd1:K+1,s2=4?cd2:K+1,s3=4?cd3:K+1,s4=4?cd4:K+1); -formula min_collisions = min(cd1,cd2,cd3,cd4); -formula max_collisions = max(cd1,cd2,cd3,cd4); diff --git a/examples/mdp/firewire/impl/firewire.cexprop b/examples/mdp/firewire/impl/firewire.cexprop deleted file mode 100644 index 02d43560f..000000000 --- a/examples/mdp/firewire/impl/firewire.cexprop +++ /dev/null @@ -1 +0,0 @@ -P<0.5 [F elected] diff --git a/examples/mdp/firewire/impl/firewire.nm b/examples/mdp/firewire/impl/firewire.nm deleted file mode 100644 index 26fa210b4..000000000 --- a/examples/mdp/firewire/impl/firewire.nm +++ /dev/null @@ -1,170 +0,0 @@ -// 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) -mdp - -// 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; -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 -> (w12'=w12); - // 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 -> fast : (s1'=2) & (x1'=0) + slow : (s1'=3) & (x1'=0); - [rec_idle21] s1=0 -> (s1'=1); - // rec_idle immediate state) - [snd_idle12] s1=1 -> fast : (s1'=4) & (x1'=0) + slow : (s1'=5) & (x1'=0); - [rec_req21] s1=1 -> (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); - [rec_ack21] s1=6 -> (s1'=8); - [time] s1=6 -> (s1'=s1); - // almost root (immediate) - // loop in final states to remove deadlock - [] s1=7 & s2=8 -> (s1'=s1); - [] s1=8 & s2=7 -> (s1'=s1); - [time] s1=7 -> (s1'=s1); - [time] s1=8 -> (s1'=s1); - -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 - -// reward structures -// time -rewards "time" - [time] true : 1; -endrewards -// time nodes sending -rewards "time_sending" - [time] (w12>0 | w21>0) : 1; -endrewards - -label "elected" = ((s1=8) & (s2=7)) | ((s1=7) & (s2=8)); \ No newline at end of file diff --git a/examples/mdp/scc/scc.pctl b/examples/mdp/scc/scc.pctl deleted file mode 100644 index 501655389..000000000 --- a/examples/mdp/scc/scc.pctl +++ /dev/null @@ -1,2 +0,0 @@ -Pmin=? [ (!statetwo) U end ] -Pmax=? [ (!statetwo) U end ] \ No newline at end of file diff --git a/examples/mdp/tiny/tiny.clab b/examples/mdp/tiny/tiny.clab deleted file mode 100644 index c23988f1a..000000000 --- a/examples/mdp/tiny/tiny.clab +++ /dev/null @@ -1,4 +0,0 @@ -0 0 3 -0 1 1 -1 0 2 -2 0 0 diff --git a/examples/mdp/tiny/tiny.pctl b/examples/mdp/tiny/tiny.pctl deleted file mode 100644 index 393670a26..000000000 --- a/examples/mdp/tiny/tiny.pctl +++ /dev/null @@ -1,2 +0,0 @@ -Pmin=? [ F a ] -Pmax=? [ F a ] \ No newline at end of file diff --git a/examples/mdp/two_dice/two_dice.nm b/examples/mdp/two_dice/two_dice.nm deleted file mode 100644 index 778153138..000000000 --- a/examples/mdp/two_dice/two_dice.nm +++ /dev/null @@ -1,40 +0,0 @@ -// sum of two dice as the asynchronous parallel composition of -// two copies of Knuth's model of a fair die using only fair coins - -mdp - -module die1 - - // local state - s1 : [0..7] init 0; - // value of the dice - d1 : [0..6] init 0; - - [] s1=0 -> 0.5 : (s1'=1) + 0.5 : (s1'=2); - [] s1=1 -> 0.5 : (s1'=3) + 0.5 : (s1'=4); - [] s1=2 -> 0.5 : (s1'=5) + 0.5 : (s1'=6); - [] s1=3 -> 0.5 : (s1'=1) + 0.5 : (s1'=7) & (d1'=1); - [] s1=4 -> 0.5 : (s1'=7) & (d1'=2) + 0.5 : (s1'=7) & (d1'=3); - [] s1=5 -> 0.5 : (s1'=7) & (d1'=4) + 0.5 : (s1'=7) & (d1'=5); - [] s1=6 -> 0.5 : (s1'=2) + 0.5 : (s1'=7) & (d1'=6); - [] s1=7 & s2=7 -> 1: (s1'=7); -endmodule - -module die2 = die1 [ s1=s2, s2=s1, d1=d2 ] endmodule - -rewards "coinflips" - [] s1<7 | s2<7 : 1; -endrewards - -label "done" = s1=7 & s2=7; -label "two" = s1=7 & s2=7 & d1+d2=2; -label "three" = s1=7 & s2=7 & d1+d2=3; -label "four" = s1=7 & s2=7 & d1+d2=4; -label "five" = s1=7 & s2=7 & d1+d2=5; -label "six" = s1=7 & s2=7 & d1+d2=6; -label "seven" = s1=7 & s2=7 & d1+d2=7; -label "eight" = s1=7 & s2=7 & d1+d2=8; -label "nine" = s1=7 & s2=7 & d1+d2=9; -label "ten" = s1=7 & s2=7 & d1+d2=10; -label "eleven" = s1=7 & s2=7 & d1+d2=11; -label "twelve" = s1=7 & s2=7 & d1+d2=12; diff --git a/examples/mdp/two_dice/two_dice.pctl b/examples/mdp/two_dice/two_dice.pctl deleted file mode 100644 index 4ad376feb..000000000 --- a/examples/mdp/two_dice/two_dice.pctl +++ /dev/null @@ -1,13 +0,0 @@ -Pmin=? [ F two ] -Pmax=? [ F two ] -Pmin=? [ F three ] -Pmax=? [ F three ] -Pmin=? [ F four ] -Pmax=? [ F four ] -Pmin=? [ F five ] -Pmax=? [ F five ] -Pmin=? [ F six ] -Pmax=? [ F six ] - -Rmin=? [ F done ] -Rmax=? [ F done ] diff --git a/examples/mdp/two_dice/two_dice.res b/examples/mdp/two_dice/two_dice.res deleted file mode 100644 index 9f38b8153..000000000 --- a/examples/mdp/two_dice/two_dice.res +++ /dev/null @@ -1,13 +0,0 @@ -Pmin=? [ F "two" ] // 0.027777761220932007 -Pmax=? [ F "two" ] // 0.027777761220932007 -Pmin=? [ F "three" ] // 0.055555522441864014 -Pmax=? [ F "three" ] // 0.055555522441864014 -Pmin=? [ F "four" ] // 0.08333328366279602 -Pmax=? [ F "four" ] // 0.08333328366279602 -Pmin=? [ F "five" ] // 0.11111104488372803 -Pmax=? [ F "five" ] // 0.11111104488372803 -Pmin=? [ F "six" ] // 0.13888880610466003 -Pmax=? [ F "six" ] // 0.13888880610466003 - -Rmin=? [ F "done" ] // 7.333329498767853 -Rmax=? [ F "done" ] // 7.333329498767853 diff --git a/examples/mdp/wlan/wlan0_4.cexprop b/examples/mdp/wlan/wlan0_4.cexprop deleted file mode 100644 index 8af300d54..000000000 --- a/examples/mdp/wlan/wlan0_4.cexprop +++ /dev/null @@ -1 +0,0 @@ -P<0.003 [ F fourCollisions ] diff --git a/examples/mdp/wlan/wlan0_6.cexprop b/examples/mdp/wlan/wlan0_6.cexprop deleted file mode 100644 index d7bf09293..000000000 --- a/examples/mdp/wlan/wlan0_6.cexprop +++ /dev/null @@ -1 +0,0 @@ -P<0.0001 [ F sixCollisions ] diff --git a/examples/mdp/wlan/wlan0_collide.nm b/examples/mdp/wlan/wlan0_collide.nm deleted file mode 100644 index 1c14704e5..000000000 --- a/examples/mdp/wlan/wlan0_collide.nm +++ /dev/null @@ -1,219 +0,0 @@ -// WLAN PROTOCOL (two stations) -// discrete time model -// gxn/jzs 20/02/02 - -mdp - -// COLLISIONS -const int COL; // maximum number of collisions - -// TIMING CONSTRAINTS -// we have used the FHSS parameters -// then scaled by the value of ASLOTTIME -const int ASLOTTIME = 1; -const int DIFS = 3; // due to scaling can be either 2 or 3 which is modelled by a non-deterministic choice -const int VULN = 1; // due to scaling can be either 0 or 1 which is modelled by a non-deterministic choice -const int TRANS_TIME_MAX; // scaling up -const int TRANS_TIME_MIN = 4; // scaling down -const int ACK_TO = 6; -const int ACK = 4; // due to scaling can be either 3 or 4 which is modelled by a non-deterministic choice -const int SIFS = 1; // due to scaling can be either 0 or 1 which is modelled by a non-deterministic choice -// maximum constant used in timing constraints + 1 -const int TIME_MAX = max(ACK_TO,TRANS_TIME_MAX)+1; - -// CONTENTION WINDOW -// CWMIN =15 & CWMAX =16 -// this means that MAX_BACKOFF IS 2 -const int MAX_BACKOFF = 0; - -//-----------------------------------------------------------------// -// THE MEDIUM/CHANNEL - -// FORMULAE FOR THE CHANNEL -// channel is busy -formula busy = c1>0 | c2>0; -// channel is free -formula free = c1=0 & c2=0; - -module medium - - // number of collisions - col : [0..COL]; - - // medium status - c1 : [0..2]; - c2 : [0..2]; - // ci corresponds to messages associated with station i - // 0 nothing being sent - // 1 being sent correctly - // 2 being sent garbled - - // begin sending message and nothing else currently being sent - [send1] c1=0 & c2=0 -> (c1'=1); - [send2] c2=0 & c1=0 -> (c2'=1); - - // begin sending message and something is already being sent - // in this case both messages become garbled - [send1] c1=0 & c2>0 -> (c1'=2) & (c2'=2) & (col'=min(col+1,COL)); - [send2] c2=0 & c1>0 -> (c1'=2) & (c2'=2) & (col'=min(col+1,COL)); - - // finish sending message - [finish1] c1>0 -> (c1'=0); - [finish2] c2>0 -> (c2'=0); - -endmodule - -//-----------------------------------------------------------------// -// STATION 1 -module station1 - // clock for station 1 - x1 : [0..TIME_MAX]; - - // local state - s1 : [1..12]; - // 1 sense - // 2 wait until free before setting backoff - // 3 wait for DIFS then set slot - // 4 set backoff - // 5 backoff - // 6 wait until free in backoff - // 7 wait for DIFS then resume backoff - // 8 vulnerable - // 9 transmit - // 11 wait for SIFS and then ACK - // 10 wait for ACT_TO - // 12 done - // BACKOFF - // separate into slots - slot1 : [0..1]; - backoff1 : [0..15]; - - // BACKOFF COUNTER - bc1 : [0..1]; - // SENSE - // let time pass - [time] s1=1 & x1 (x1'=min(x1+1,TIME_MAX)); - // ready to transmit - [] s1=1 & (x1=DIFS | x1=DIFS-1) -> (s1'=8) & (x1'=0); - // found channel busy so wait until free - [] s1=1 & busy -> (s1'=2) & (x1'=0); - // WAIT UNTIL FREE BEFORE SETTING BACKOFF - // let time pass (no need for the clock x1 to change) - [time] s1=2 & busy -> (s1'=2); - // find that channel is free so check its free for DIFS before setting backoff - [] s1=2 & free -> (s1'=3); - // WAIT FOR DIFS THEN SET BACKOFF - // let time pass - [time] s1=3 & x1 (x1'=min(x1+1,TIME_MAX)); - // found channel busy so wait until free - [] s1=3 & busy -> (s1'=2) & (x1'=0); - // start backoff first uniformly choose slot - // backoff counter 0 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=0 -> (s1'=4) & (x1'=0) & (slot1'=0) & (bc1'=min(bc1+1,MAX_BACKOFF)); - // SET BACKOFF (no time can pass) - // chosen slot now set backoff - [] s1=4 -> 1/16 : (s1'=5) & (backoff1'=0 ) - + 1/16 : (s1'=5) & (backoff1'=1 ) - + 1/16 : (s1'=5) & (backoff1'=2 ) - + 1/16 : (s1'=5) & (backoff1'=3 ) - + 1/16 : (s1'=5) & (backoff1'=4 ) - + 1/16 : (s1'=5) & (backoff1'=5 ) - + 1/16 : (s1'=5) & (backoff1'=6 ) - + 1/16 : (s1'=5) & (backoff1'=7 ) - + 1/16 : (s1'=5) & (backoff1'=8 ) - + 1/16 : (s1'=5) & (backoff1'=9 ) - + 1/16 : (s1'=5) & (backoff1'=10) - + 1/16 : (s1'=5) & (backoff1'=11) - + 1/16 : (s1'=5) & (backoff1'=12) - + 1/16 : (s1'=5) & (backoff1'=13) - + 1/16 : (s1'=5) & (backoff1'=14) - + 1/16 : (s1'=5) & (backoff1'=15); - // BACKOFF - // let time pass - [time] s1=5 & x1 (x1'=min(x1+1,TIME_MAX)); - // decrement backoff - [] s1=5 & x1=ASLOTTIME & backoff1>0 -> (s1'=5) & (x1'=0) & (backoff1'=backoff1-1); - [] s1=5 & x1=ASLOTTIME & backoff1=0 & slot1>0 -> (s1'=5) & (x1'=0) & (backoff1'=15) & (slot1'=slot1-1); - // finish backoff - [] s1=5 & x1=ASLOTTIME & backoff1=0 & slot1=0 -> (s1'=8) & (x1'=0); - // found channel busy - [] s1=5 & busy -> (s1'=6) & (x1'=0); - // WAIT UNTIL FREE IN BACKOFF - // let time pass (no need for the clock x1 to change) - [time] s1=6 & busy -> (s1'=6); - // find that channel is free - [] s1=6 & free -> (s1'=7); - - // WAIT FOR DIFS THEN RESUME BACKOFF - // let time pass - [time] s1=7 & x1 (x1'=min(x1+1,TIME_MAX)); - // resume backoff (start again from previous backoff) - [] s1=7 & (x1=DIFS | x1=DIFS-1) -> (s1'=5) & (x1'=0); - // found channel busy - [] s1=7 & busy -> (s1'=6) & (x1'=0); - - // VULNERABLE - // let time pass - [time] s1=8 & x1 (x1'=min(x1+1,TIME_MAX)); - // move to transmit - [send1] s1=8 & (x1=VULN | x1=VULN-1) -> (s1'=9) & (x1'=0); - // TRANSMIT - // let time pass - [time] s1=9 & x1 (x1'=min(x1+1,TIME_MAX)); - // finish transmission successful - [finish1] s1=9 & x1>=TRANS_TIME_MIN & c1=1 -> (s1'=10) & (x1'=0); - // finish transmission garbled - [finish1] s1=9 & x1>=TRANS_TIME_MIN & c1=2 -> (s1'=11) & (x1'=0); - // WAIT FOR SIFS THEN WAIT FOR ACK - - // WAIT FOR SIFS i.e. c1=0 - // check channel and busy: go into backoff - [] s1=10 & c1=0 & x1=0 & busy -> (s1'=2); - // check channel and free: let time pass - [time] s1=10 & c1=0 & x1=0 & free -> (x1'=min(x1+1,TIME_MAX)); - // let time pass - // following guard is always false as SIFS=1 - // [time] s1=10 & c1=0 & x1>0 & x1 (x1'=min(x1+1,TIME_MAX)); - // ack is sent after SIFS (since SIFS-1=0 add condition that channel is free) - [send1] s1=10 & c1=0 & (x1=SIFS | (x1=SIFS-1 & free)) -> (s1'=10) & (x1'=0); - - // WAIT FOR ACK i.e. c1=1 - // let time pass - [time] s1=10 & c1=1 & x1 (x1'=min(x1+1,TIME_MAX)); - // get acknowledgement so packet sent correctly and move to done - [finish1] s1=10 & c1=1 & (x1=ACK | x1=ACK-1) -> (s1'=12) & (x1'=0) & (bc1'=0); - - // WAIT FOR ACK_TO - // check channel and busy: go into backoff - [] s1=11 & x1=0 & busy -> (s1'=2); - // check channel and free: let time pass - [time] s1=11 & x1=0 & free -> (x1'=min(x1+1,TIME_MAX)); - // let time pass - [time] s1=11 & x1>0 & x1 (x1'=min(x1+1,TIME_MAX)); - // no acknowledgement (go to backoff waiting DIFS first) - [] s1=11 & x1=ACK_TO -> (s1'=3) & (x1'=0); - - // DONE - [time] s1=12 -> (s1'=12); - -endmodule - -// ---------------------------------------------------------------------------- // -// STATION 2 (rename STATION 1) -module -station2=station1[x1=x2, - s1=s2, - s2=s1, - c1=c2, - c2=c1, - slot1=slot2, - backoff1=backoff2, - bc1=bc2, - send1=send2, - finish1=finish2] -endmodule -// ---------------------------------------------------------------------------- // - -label "twoCollisions" = col=2; -label "fourCollisions" = col=4; -label "sixCollisions" = col=6; \ No newline at end of file diff --git a/examples/mdp/wlan/wlan1_collide.nm b/examples/mdp/wlan/wlan1_collide.nm deleted file mode 100644 index 7c4904cd9..000000000 --- a/examples/mdp/wlan/wlan1_collide.nm +++ /dev/null @@ -1,221 +0,0 @@ -// WLAN PROTOCOL (two stations) -// discrete time model -// gxn/jzs 20/02/02 - -mdp - -// COLLISIONS -const int COL; // maximum number of collisions - -// TIMING CONSTRAINTS -// we have used the FHSS parameters -// then scaled by the value of ASLOTTIME -const int ASLOTTIME = 1; -const int DIFS = 3; // due to scaling can be either 2 or 3 which is modelled by a non-deterministic choice -const int VULN = 1; // due to scaling can be either 0 or 1 which is modelled by a non-deterministic choice -const int TRANS_TIME_MAX; // scaling up -const int TRANS_TIME_MIN = 4; // scaling down -const int ACK_TO = 6; -const int ACK = 4; // due to scaling can be either 3 or 4 which is modelled by a non-deterministic choice -const int SIFS = 1; // due to scaling can be either 0 or 1 which is modelled by a non-deterministic choice -// maximum constant used in timing constraints + 1 -const int TIME_MAX = max(ACK_TO,TRANS_TIME_MAX)+1; - -// CONTENTION WINDOW -// CWMIN =15 & CWMAX =31 -// this means that MAX_BACKOFF IS 2 -const int MAX_BACKOFF = 1; - -//-----------------------------------------------------------------// -// THE MEDIUM/CHANNEL - -// FORMULAE FOR THE CHANNEL -// channel is busy -formula busy = c1>0 | c2>0; -// channel is free -formula free = c1=0 & c2=0; - -module medium - - // number of collisions - col : [0..COL]; - - // medium status - c1 : [0..2]; - c2 : [0..2]; - // ci corresponds to messages associated with station i - // 0 nothing being sent - // 1 being sent correctly - // 2 being sent garbled - - // begin sending message and nothing else currently being sent - [send1] c1=0 & c2=0 -> (c1'=1); - [send2] c2=0 & c1=0 -> (c2'=1); - - // begin sending message and something is already being sent - // in this case both messages become garbled - [send1] c1=0 & c2>0 -> (c1'=2) & (c2'=2) & (col'=min(col+1,COL)); - [send2] c2=0 & c1>0 -> (c1'=2) & (c2'=2) & (col'=min(col+1,COL)); - - // finish sending message - [finish1] c1>0 -> (c1'=0); - [finish2] c2>0 -> (c2'=0); - -endmodule - -//-----------------------------------------------------------------// -// STATION 1 -module station1 - // clock for station 1 - x1 : [0..TIME_MAX]; - - // local state - s1 : [1..12]; - // 1 sense - // 2 wait until free before setting backoff - // 3 wait for DIFS then set slot - // 4 set backoff - // 5 backoff - // 6 wait until free in backoff - // 7 wait for DIFS then resume backoff - // 8 vulnerable - // 9 transmit - // 11 wait for SIFS and then ACK - // 10 wait for ACT_TO - // 12 done - // BACKOFF - // separate into slots - slot1 : [0..1]; - backoff1 : [0..15]; - - // BACKOFF COUNTER - bc1 : [0..MAX_BACKOFF]; - // SENSE - // let time pass - [time] s1=1 & x1 (x1'=min(x1+1,TIME_MAX)); - // ready to transmit - [] s1=1 & (x1=DIFS | x1=DIFS-1) -> (s1'=8) & (x1'=0); - // found channel busy so wait until free - [] s1=1 & busy -> (s1'=2) & (x1'=0); - // WAIT UNTIL FREE BEFORE SETTING BACKOFF - // let time pass (no need for the clock x1 to change) - [time] s1=2 & busy -> (s1'=2); - // find that channel is free so check its free for DIFS before setting backoff - [] s1=2 & free -> (s1'=3); - // WAIT FOR DIFS THEN SET BACKOFF - // let time pass - [time] s1=3 & x1 (x1'=min(x1+1,TIME_MAX)); - // found channel busy so wait until free - [] s1=3 & busy -> (s1'=2) & (x1'=0); - // start backoff first uniformly choose slot - // backoff counter 0 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=0 -> (s1'=4) & (x1'=0) & (slot1'=0) & (bc1'=min(bc1+1,MAX_BACKOFF)); - // backoff counter 1 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=1 -> 1/2 : (s1'=4) & (x1'=0) & (slot1'=0) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/2 : (s1'=4) & (x1'=0) & (slot1'=1) & (bc1'=min(bc1+1,MAX_BACKOFF)); - // SET BACKOFF (no time can pass) - // chosen slot now set backoff - [] s1=4 -> 1/16 : (s1'=5) & (backoff1'=0 ) - + 1/16 : (s1'=5) & (backoff1'=1 ) - + 1/16 : (s1'=5) & (backoff1'=2 ) - + 1/16 : (s1'=5) & (backoff1'=3 ) - + 1/16 : (s1'=5) & (backoff1'=4 ) - + 1/16 : (s1'=5) & (backoff1'=5 ) - + 1/16 : (s1'=5) & (backoff1'=6 ) - + 1/16 : (s1'=5) & (backoff1'=7 ) - + 1/16 : (s1'=5) & (backoff1'=8 ) - + 1/16 : (s1'=5) & (backoff1'=9 ) - + 1/16 : (s1'=5) & (backoff1'=10) - + 1/16 : (s1'=5) & (backoff1'=11) - + 1/16 : (s1'=5) & (backoff1'=12) - + 1/16 : (s1'=5) & (backoff1'=13) - + 1/16 : (s1'=5) & (backoff1'=14) - + 1/16 : (s1'=5) & (backoff1'=15); - // BACKOFF - // let time pass - [time] s1=5 & x1 (x1'=min(x1+1,TIME_MAX)); - // decrement backoff - [] s1=5 & x1=ASLOTTIME & backoff1>0 -> (s1'=5) & (x1'=0) & (backoff1'=backoff1-1); - [] s1=5 & x1=ASLOTTIME & backoff1=0 & slot1>0 -> (s1'=5) & (x1'=0) & (backoff1'=15) & (slot1'=slot1-1); - // finish backoff - [] s1=5 & x1=ASLOTTIME & backoff1=0 & slot1=0 -> (s1'=8) & (x1'=0); - // found channel busy - [] s1=5 & busy -> (s1'=6) & (x1'=0); - // WAIT UNTIL FREE IN BACKOFF - // let time pass (no need for the clock x1 to change) - [time] s1=6 & busy -> (s1'=6); - // find that channel is free - [] s1=6 & free -> (s1'=7); - - // WAIT FOR DIFS THEN RESUME BACKOFF - // let time pass - [time] s1=7 & x1 (x1'=min(x1+1,TIME_MAX)); - // resume backoff (start again from previous backoff) - [] s1=7 & (x1=DIFS | x1=DIFS-1) -> (s1'=5) & (x1'=0); - // found channel busy - [] s1=7 & busy -> (s1'=6) & (x1'=0); - - // VULNERABLE - // let time pass - [time] s1=8 & x1 (x1'=min(x1+1,TIME_MAX)); - // move to transmit - [send1] s1=8 & (x1=VULN | x1=VULN-1) -> (s1'=9) & (x1'=0); - // TRANSMIT - // let time pass - [time] s1=9 & x1 (x1'=min(x1+1,TIME_MAX)); - // finish transmission successful - [finish1] s1=9 & x1>=TRANS_TIME_MIN & c1=1 -> (s1'=10) & (x1'=0); - // finish transmission garbled - [finish1] s1=9 & x1>=TRANS_TIME_MIN & c1=2 -> (s1'=11) & (x1'=0); - // WAIT FOR SIFS THEN WAIT FOR ACK - - // WAIT FOR SIFS i.e. c1=0 - // check channel and busy: go into backoff - [] s1=10 & c1=0 & x1=0 & busy -> (s1'=2); - // chEck channel and free: let time pass - [time] s1=10 & c1=0 & x1=0 & free -> (x1'=min(x1+1,TIME_MAX)); - // let time pass - // following guard is always false as SIFS=1 - // [time] s1=10 & c1=0 & x1>0 & x1 (x1'=min(x1+1,TIME_MAX)); - // ack is sent after SIFS (since SIFS-1=0 add condition that channel is free) - [send1] s1=10 & c1=0 & (x1=SIFS | (x1=SIFS-1 & free)) -> (s1'=10) & (x1'=0); - - // WAIT FOR ACK i.e. c1=1 - // let time pass - [time] s1=10 & c1=1 & x1 (x1'=min(x1+1,TIME_MAX)); - // get acknowledgement so packet sent correctly and move to done - [finish1] s1=10 & c1=1 & (x1=ACK | x1=ACK-1) -> (s1'=12) & (x1'=0) & (bc1'=0); - - // WAIT FOR ACK_TO - // check channel and busy: go into backoff - [] s1=11 & x1=0 & busy -> (s1'=2); - // check channel and free: let time pass - [time] s1=11 & x1=0 & free -> (x1'=min(x1+1,TIME_MAX)); - // let time pass - [time] s1=11 & x1>0 & x1 (x1'=min(x1+1,TIME_MAX)); - // no acknowledgement (go to backoff waiting DIFS first) - [] s1=11 & x1=ACK_TO -> (s1'=3) & (x1'=0); - - // DONE - [time] s1=12 -> (s1'=12); -endmodule - -// ---------------------------------------------------------------------------- // -// STATION 2 (rename STATION 1) -module -station2=station1[x1=x2, - s1=s2, - s2=s1, - c1=c2, - c2=c1, - slot1=slot2, - backoff1=backoff2, - bc1=bc2, - send1=send2, - finish1=finish2] -endmodule -// ---------------------------------------------------------------------------- // - -label "twoCollisions" = col=2; -label "fourCollisions" = col=4; -label "sixCollisions" = col=6; \ No newline at end of file diff --git a/examples/mdp/wlan/wlan2_4.cexprop b/examples/mdp/wlan/wlan2_4.cexprop deleted file mode 100644 index aee1d6de8..000000000 --- a/examples/mdp/wlan/wlan2_4.cexprop +++ /dev/null @@ -1 +0,0 @@ -P<0.0004 [ F fourCollisions ] diff --git a/examples/mdp/wlan/wlan2_6.cexprop b/examples/mdp/wlan/wlan2_6.cexprop deleted file mode 100644 index d45360df7..000000000 --- a/examples/mdp/wlan/wlan2_6.cexprop +++ /dev/null @@ -1 +0,0 @@ -P<0.000001 [ F sixCollisions ] diff --git a/examples/mdp/wlan/wlan2_collide.nm b/examples/mdp/wlan/wlan2_collide.nm deleted file mode 100644 index a3fcccafa..000000000 --- a/examples/mdp/wlan/wlan2_collide.nm +++ /dev/null @@ -1,226 +0,0 @@ -// WLAN PROTOCOL (two stations) -// discrete time model -// gxn/jzs 20/02/02 - -mdp - -// COLLISIONS -const int COL; // maximum number of collisions - -// TIMING CONSTRAINTS -// we have used the FHSS parameters -// then scaled by the value of ASLOTTIME -const int ASLOTTIME = 1; -const int DIFS = 3; // due to scaling can be either 2 or 3 which is modelled by a non-deterministic choice -const int VULN = 1; // due to scaling can be either 0 or 1 which is modelled by a non-deterministic choice -const int TRANS_TIME_MAX; // scaling up -const int TRANS_TIME_MIN = 4; // scaling down -const int ACK_TO = 6; -const int ACK = 4; // due to scaling can be either 3 or 4 which is modelled by a non-deterministic choice -const int SIFS = 1; // due to scaling can be either 0 or 1 which is modelled by a non-deterministic choice -// maximum constant used in timing constraints + 1 -const int TIME_MAX = max(ACK_TO,TRANS_TIME_MAX)+1; - -// CONTENTION WINDOW -// CWMIN =15 & CWMAX =63 -// this means that MAX_BACKOFF IS 2 -const int MAX_BACKOFF = 2; - -//-----------------------------------------------------------------// -// THE MEDIUM/CHANNEL - -// FORMULAE FOR THE CHANNEL -// channel is busy -formula busy = c1>0 | c2>0; -// channel is free -formula free = c1=0 & c2=0; - -module medium - - // number of collisions - col : [0..COL]; - - // medium status - c1 : [0..2]; - c2 : [0..2]; - // ci corresponds to messages associated with station i - // 0 nothing being sent - // 1 being sent correctly - // 2 being sent garbled - - // begin sending message and nothing else currently being sent - [send1] c1=0 & c2=0 -> (c1'=1); - [send2] c2=0 & c1=0 -> (c2'=1); - - // begin sending message and something is already being sent - // in this case both messages become garbled - [send1] c1=0 & c2>0 -> (c1'=2) & (c2'=2) & (col'=min(col+1,COL)); - [send2] c2=0 & c1>0 -> (c1'=2) & (c2'=2) & (col'=min(col+1,COL)); - - // finish sending message - [finish1] c1>0 -> (c1'=0); - [finish2] c2>0 -> (c2'=0); - -endmodule - -//-----------------------------------------------------------------// -// STATION 1 -module station1 - // clock for station 1 - x1 : [0..TIME_MAX]; - - // local state - s1 : [1..12]; - // 1 sense - // 2 wait until free before setting backoff - // 3 wait for DIFS then set slot - // 4 set backoff - // 5 backoff - // 6 wait until free in backoff - // 7 wait for DIFS then resume backoff - // 8 vulnerable - // 9 transmit - // 11 wait for SIFS and then ACK - // 10 wait for ACT_TO - // 12 done - // BACKOFF - // separate into slots - slot1 : [0..3]; - backoff1 : [0..15]; - - // BACKOFF COUNTER - bc1 : [0..MAX_BACKOFF]; - // SENSE - // let time pass - [time] s1=1 & x1 (x1'=min(x1+1,TIME_MAX)); - // ready to transmit - [] s1=1 & (x1=DIFS | x1=DIFS-1) -> (s1'=8) & (x1'=0); - // found channel busy so wait until free - [] s1=1 & busy -> (s1'=2) & (x1'=0); - // WAIT UNTIL FREE BEFORE SETTING BACKOFF - // let time pass (no need for the clock x1 to change) - [time] s1=2 & busy -> (s1'=2); - // find that channel is free so check its free for DIFS before setting backoff - [] s1=2 & free -> (s1'=3); - // WAIT FOR DIFS THEN SET BACKOFF - // let time pass - [time] s1=3 & x1 (x1'=min(x1+1,TIME_MAX)); - // found channel busy so wait until free - [] s1=3 & busy -> (s1'=2) & (x1'=0); - // start backoff first uniformly choose slot - // backoff counter 0 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=0 -> (s1'=4) & (x1'=0) & (slot1'=0) & (bc1'=min(bc1+1,MAX_BACKOFF)); - // backoff counter 1 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=1 -> 1/2 : (s1'=4) & (x1'=0) & (slot1'=0) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/2 : (s1'=4) & (x1'=0) & (slot1'=1) & (bc1'=min(bc1+1,MAX_BACKOFF)); - // backoff counter 2 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=2 -> 1/4 : (s1'=4) & (x1'=0) & (slot1'=0) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/4 : (s1'=4) & (x1'=0) & (slot1'=1) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/4 : (s1'=4) & (x1'=0) & (slot1'=2) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/4 : (s1'=4) & (x1'=0) & (slot1'=3) & (bc1'=min(bc1+1,MAX_BACKOFF)); - // SET BACKOFF (no time can pass) - // chosen slot now set backoff - [] s1=4 -> 1/16 : (s1'=5) & (backoff1'=0 ) - + 1/16 : (s1'=5) & (backoff1'=1 ) - + 1/16 : (s1'=5) & (backoff1'=2 ) - + 1/16 : (s1'=5) & (backoff1'=3 ) - + 1/16 : (s1'=5) & (backoff1'=4 ) - + 1/16 : (s1'=5) & (backoff1'=5 ) - + 1/16 : (s1'=5) & (backoff1'=6 ) - + 1/16 : (s1'=5) & (backoff1'=7 ) - + 1/16 : (s1'=5) & (backoff1'=8 ) - + 1/16 : (s1'=5) & (backoff1'=9 ) - + 1/16 : (s1'=5) & (backoff1'=10) - + 1/16 : (s1'=5) & (backoff1'=11) - + 1/16 : (s1'=5) & (backoff1'=12) - + 1/16 : (s1'=5) & (backoff1'=13) - + 1/16 : (s1'=5) & (backoff1'=14) - + 1/16 : (s1'=5) & (backoff1'=15); - // BACKOFF - // let time pass - [time] s1=5 & x1 (x1'=min(x1+1,TIME_MAX)); - // decrement backoff - [] s1=5 & x1=ASLOTTIME & backoff1>0 -> (s1'=5) & (x1'=0) & (backoff1'=backoff1-1); - [] s1=5 & x1=ASLOTTIME & backoff1=0 & slot1>0 -> (s1'=5) & (x1'=0) & (backoff1'=15) & (slot1'=slot1-1); - // finish backoff - [] s1=5 & x1=ASLOTTIME & backoff1=0 & slot1=0 -> (s1'=8) & (x1'=0); - // found channel busy - [] s1=5 & busy -> (s1'=6) & (x1'=0); - // WAIT UNTIL FREE IN BACKOFF - // let time pass (no need for the clock x1 to change) - [time] s1=6 & busy -> (s1'=6); - // find that channel is free - [] s1=6 & free -> (s1'=7); - - // WAIT FOR DIFS THEN RESUME BACKOFF - // let time pass - [time] s1=7 & x1 (x1'=min(x1+1,TIME_MAX)); - // resume backoff (start again from previous backoff) - [] s1=7 & (x1=DIFS | x1=DIFS-1) -> (s1'=5) & (x1'=0); - // found channel busy - [] s1=7 & busy -> (s1'=6) & (x1'=0); - - // VULNERABLE - // let time pass - [time] s1=8 & x1 (x1'=min(x1+1,TIME_MAX)); - // move to transmit - [send1] s1=8 & (x1=VULN | x1=VULN-1) -> (s1'=9) & (x1'=0); - // TRANSMIT - // let time pass - [time] s1=9 & x1 (x1'=min(x1+1,TIME_MAX)); - // finish transmission successful - [finish1] s1=9 & x1>=TRANS_TIME_MIN & c1=1 -> (s1'=10) & (x1'=0); - // finish transmission garbled - [finish1] s1=9 & x1>=TRANS_TIME_MIN & c1=2 -> (s1'=11) & (x1'=0); - // WAIT FOR SIFS THEN WAIT FOR ACK - - // WAIT FOR SIFS i.e. c1=0 - // check channel and busy: go into backoff - [] s1=10 & c1=0 & x1=0 & busy -> (s1'=2); - // check channel and free: let time pass - [time] s1=10 & c1=0 & x1=0 & free -> (x1'=min(x1+1,TIME_MAX)); - // let time pass - // following guard is always false as SIFS=1 - // [time] s1=10 & c1=0 & x1>0 & x1 (x1'=min(x1+1,TIME_MAX)); - // ack is sent after SIFS (since SIFS-1=0 add condition that channel is free) - [send1] s1=10 & c1=0 & (x1=SIFS | (x1=SIFS-1 & free)) -> (s1'=10) & (x1'=0); - - // WAIT FOR ACK i.e. c1=1 - // let time pass - [time] s1=10 & c1=1 & x1 (x1'=min(x1+1,TIME_MAX)); - // get acknowledgement so packet sent correctly and move to done - [finish1] s1=10 & c1=1 & (x1=ACK | x1=ACK-1) -> (s1'=12) & (x1'=0) & (bc1'=0); - - // WAIT FOR ACK_TO - // check channel and busy: go into backoff - [] s1=11 & x1=0 & busy -> (s1'=2); - // check channel and free: let time pass - [time] s1=11 & x1=0 & free -> (x1'=min(x1+1,TIME_MAX)); - // let time pass - [time] s1=11 & x1>0 & x1 (x1'=min(x1+1,TIME_MAX)); - // no acknowledgement (go to backoff waiting DIFS first) - [] s1=11 & x1=ACK_TO -> (s1'=3) & (x1'=0); - - // DONE - [time] s1=12 -> (s1'=12); -endmodule - -// ---------------------------------------------------------------------------- // -// STATION 2 (rename STATION 1) -module -station2=station1[x1=x2, - s1=s2, - s2=s1, - c1=c2, - c2=c1, - slot1=slot2, - backoff1=backoff2, - bc1=bc2, - send1=send2, - finish1=finish2] -endmodule -// ---------------------------------------------------------------------------- // - -label "twoCollisions" = col=2; -label "fourCollisions" = col=4; -label "sixCollisions" = col=6; \ No newline at end of file diff --git a/examples/mdp/wlan/wlan3_collide.nm b/examples/mdp/wlan/wlan3_collide.nm deleted file mode 100644 index 1d093e6d7..000000000 --- a/examples/mdp/wlan/wlan3_collide.nm +++ /dev/null @@ -1,235 +0,0 @@ -// WLAN PROTOCOL (two stations) -// discrete time model -// gxn/jzs 20/02/02 - -mdp - -// COLLISIONS -const int COL; // maximum number of collisions - -// TIMING CONSTRAINTS -// we have used the FHSS parameters -// then scaled by the value of ASLOTTIME -const int ASLOTTIME = 1; -const int DIFS = 3; // due to scaling can be either 2 or 3 which is modelled by a non-deterministic choice -const int VULN = 1; // due to scaling can be either 0 or 1 which is modelled by a non-deterministic choice -const int TRANS_TIME_MAX; // scaling up -const int TRANS_TIME_MIN = 4; // scaling down -const int ACK_TO = 6; -const int ACK = 4; // due to scaling can be either 3 or 4 which is modelled by a non-deterministic choice -const int SIFS = 1; // due to scaling can be either 0 or 1 which is modelled by a non-deterministic choice -// maximum constant used in timing constraints + 1 -const int TIME_MAX = max(ACK_TO,TRANS_TIME_MAX)+1; - -// CONTENTION WINDOW -// CWMIN =15 & CWMAX =127 -// this means that MAX_BACKOFF IS 3 -const int MAX_BACKOFF = 3; - -//-----------------------------------------------------------------// -// THE MEDIUM/CHANNEL - -// FORMULAE FOR THE CHANNEL -// channel is busy -formula busy = c1>0 | c2>0; -// channel is free -formula free = c1=0 & c2=0; - -module medium - - // number of collisions - col : [0..COL]; - - // medium status - c1 : [0..2]; - c2 : [0..2]; - // ci corresponds to messages associated with station i - // 0 nothing being sent - // 1 being sent correctly - // 2 being sent garbled - - // begin sending message and nothing else currently being sent - [send1] c1=0 & c2=0 -> (c1'=1); - [send2] c2=0 & c1=0 -> (c2'=1); - - // begin sending message and something is already being sent - // in this case both messages become garbled - [send1] c1=0 & c2>0 -> (c1'=2) & (c2'=2) & (col'=min(col+1,COL)); - [send2] c2=0 & c1>0 -> (c1'=2) & (c2'=2) & (col'=min(col+1,COL)); - - // finish sending message - [finish1] c1>0 -> (c1'=0); - [finish2] c2>0 -> (c2'=0); - -endmodule - -//-----------------------------------------------------------------// -// STATION 1 -module station1 - // clock for station 1 - x1 : [0..TIME_MAX]; - - // local state - s1 : [1..12]; - // 1 sense - // 2 wait until free before setting backoff - // 3 wait for DIFS then set slot - // 4 set backoff - // 5 backoff - // 6 wait until free in backoff - // 7 wait for DIFS then resume backoff - // 8 vulnerable - // 9 transmit - // 11 wait for SIFS and then ACK - // 10 wait for ACT_TO - // 12 done - // BACKOFF - // separate into slots - slot1 : [0..7]; - backoff1 : [0..15]; - - // BACKOFF COUNTER - bc1 : [0..MAX_BACKOFF]; - // SENSE - // let time pass - [time] s1=1 & x1 (x1'=min(x1+1,TIME_MAX)); - // ready to transmit - [] s1=1 & (x1=DIFS | x1=DIFS-1) -> (s1'=8) & (x1'=0); - // found channel busy so wait until free - [] s1=1 & busy -> (s1'=2) & (x1'=0); - // WAIT UNTIL FREE BEFORE SETTING BACKOFF - // let time pass (no need for the clock x1 to change) - [time] s1=2 & busy -> (s1'=2); - // find that channel is free so check its free for DIFS before setting backoff - [] s1=2 & free -> (s1'=3); - // WAIT FOR DIFS THEN SET BACKOFF - // let time pass - [time] s1=3 & x1 (x1'=min(x1+1,TIME_MAX)); - // found channel busy so wait until free - [] s1=3 & busy -> (s1'=2) & (x1'=0); - // start backoff first uniformly choose slot - // backoff counter 0 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=0 -> (s1'=4) & (x1'=0) & (slot1'=0) & (bc1'=min(bc1+1,MAX_BACKOFF)); - // backoff counter 1 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=1 -> 1/2 : (s1'=4) & (x1'=0) & (slot1'=0) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/2 : (s1'=4) & (x1'=0) & (slot1'=1) & (bc1'=min(bc1+1,MAX_BACKOFF)); - // backoff counter 2 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=2 -> 1/4 : (s1'=4) & (x1'=0) & (slot1'=0) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/4 : (s1'=4) & (x1'=0) & (slot1'=1) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/4 : (s1'=4) & (x1'=0) & (slot1'=2) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/4 : (s1'=4) & (x1'=0) & (slot1'=3) & (bc1'=min(bc1+1,MAX_BACKOFF)); - // backoff counter 3 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=3 -> 1/8 : (s1'=4) & (x1'=0) & (slot1'=0) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=1) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=2) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=3) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=4) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=5) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=6) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=7) & (bc1'=min(bc1+1,MAX_BACKOFF)); - // SET BACKOFF (no time can pass) - // chosen slot now set backoff - [] s1=4 -> 1/16 : (s1'=5) & (backoff1'=0 ) - + 1/16 : (s1'=5) & (backoff1'=1 ) - + 1/16 : (s1'=5) & (backoff1'=2 ) - + 1/16 : (s1'=5) & (backoff1'=3 ) - + 1/16 : (s1'=5) & (backoff1'=4 ) - + 1/16 : (s1'=5) & (backoff1'=5 ) - + 1/16 : (s1'=5) & (backoff1'=6 ) - + 1/16 : (s1'=5) & (backoff1'=7 ) - + 1/16 : (s1'=5) & (backoff1'=8 ) - + 1/16 : (s1'=5) & (backoff1'=9 ) - + 1/16 : (s1'=5) & (backoff1'=10) - + 1/16 : (s1'=5) & (backoff1'=11) - + 1/16 : (s1'=5) & (backoff1'=12) - + 1/16 : (s1'=5) & (backoff1'=13) - + 1/16 : (s1'=5) & (backoff1'=14) - + 1/16 : (s1'=5) & (backoff1'=15); - // BACKOFF - // let time pass - [time] s1=5 & x1 (x1'=min(x1+1,TIME_MAX)); - // decrement backoff - [] s1=5 & x1=ASLOTTIME & backoff1>0 -> (s1'=5) & (x1'=0) & (backoff1'=backoff1-1); - [] s1=5 & x1=ASLOTTIME & backoff1=0 & slot1>0 -> (s1'=5) & (x1'=0) & (backoff1'=15) & (slot1'=slot1-1); - // finish backoff - [] s1=5 & x1=ASLOTTIME & backoff1=0 & slot1=0 -> (s1'=8) & (x1'=0); - // found channel busy - [] s1=5 & busy -> (s1'=6) & (x1'=0); - // WAIT UNTIL FREE IN BACKOFF - // let time pass (no need for the clock x1 to change) - [time] s1=6 & busy -> (s1'=6); - // find that channel is free - [] s1=6 & free -> (s1'=7); - - // WAIT FOR DIFS THEN RESUME BACKOFF - // let time pass - [time] s1=7 & x1 (x1'=min(x1+1,TIME_MAX)); - // resume backoff (start again from previous backoff) - [] s1=7 & (x1=DIFS | x1=DIFS-1) -> (s1'=5) & (x1'=0); - // found channel busy - [] s1=7 & busy -> (s1'=6) & (x1'=0); - - // VULNERABLE - // let time pass - [time] s1=8 & x1 (x1'=min(x1+1,TIME_MAX)); - // move to transmit - [send1] s1=8 & (x1=VULN | x1=VULN-1) -> (s1'=9) & (x1'=0); - // TRANSMIT - // let time pass - [time] s1=9 & x1 (x1'=min(x1+1,TIME_MAX)); - // finish transmission successful - [finish1] s1=9 & x1>=TRANS_TIME_MIN & c1=1 -> (s1'=10) & (x1'=0); - // finish transmission garbled - [finish1] s1=9 & x1>=TRANS_TIME_MIN & c1=2 -> (s1'=11) & (x1'=0); - // WAIT FOR SIFS THEN WAIT FOR ACK - - // WAIT FOR SIFS i.e. c1=0 - // check channel and busy: go into backoff - [] s1=10 & c1=0 & x1=0 & busy -> (s1'=2); - // check channel and free: let time pass - [time] s1=10 & c1=0 & x1=0 & free -> (x1'=min(x1+1,TIME_MAX)); - // let time pass - // following guard is always false as SIFS=1 - // [time] s1=10 & c1=0 & x1>0 & x1 (x1'=min(x1+1,TIME_MAX)); - // ack is sent after SIFS (since SIFS-1=0 add condition that channel is free) - [send1] s1=10 & c1=0 & (x1=SIFS | (x1=SIFS-1 & free)) -> (s1'=10) & (x1'=0); - - // WAIT FOR ACK i.e. c1=1 - // let time pass - [time] s1=10 & c1=1 & x1 (x1'=min(x1+1,TIME_MAX)); - // get acknowledgement so packet sent correctly and move to done - [finish1] s1=10 & c1=1 & (x1=ACK | x1=ACK-1) -> (s1'=12) & (x1'=0) & (bc1'=0); - - // WAIT FOR ACK_TO - // check channel and busy: go into backoff - [] s1=11 & x1=0 & busy -> (s1'=2); - // check channel and free: let time pass - [time] s1=11 & x1=0 & free -> (x1'=min(x1+1,TIME_MAX)); - // let time pass - [time] s1=11 & x1>0 & x1 (x1'=min(x1+1,TIME_MAX)); - // no acknowledgement (go to backoff waiting DIFS first) - [] s1=11 & x1=ACK_TO -> (s1'=3) & (x1'=0); - - // DONE - [time] s1=12 -> (s1'=12); -endmodule - -// ---------------------------------------------------------------------------- // -// STATION 2 (rename STATION 1) -module -station2=station1[x1=x2, - s1=s2, - s2=s1, - c1=c2, - c2=c1, - slot1=slot2, - backoff1=backoff2, - bc1=bc2, - send1=send2, - finish1=finish2] -endmodule -// ---------------------------------------------------------------------------- // - -label "twoCollisions" = col=2; -label "fourCollisions" = col=4; -label "sixCollisions" = col=6; \ No newline at end of file diff --git a/examples/mdp/wlan/wlan4_6.cexprop b/examples/mdp/wlan/wlan4_6.cexprop deleted file mode 100644 index ea38115ab..000000000 --- a/examples/mdp/wlan/wlan4_6.cexprop +++ /dev/null @@ -1 +0,0 @@ -P<0.0000001 [ F sixCollisions ] diff --git a/examples/mdp/wlan/wlan4_collide.nm b/examples/mdp/wlan/wlan4_collide.nm deleted file mode 100644 index 1287de1f3..000000000 --- a/examples/mdp/wlan/wlan4_collide.nm +++ /dev/null @@ -1,252 +0,0 @@ -// WLAN PROTOCOL (two stations) -// discrete time model -// gxn/jzs 20/02/02 - -mdp - -// COLLISIONS -const int COL; // maximum number of collisions - -// TIMING CONSTRAINTS -// we have used the FHSS parameters -// then scaled by the value of ASLOTTIME -const int ASLOTTIME = 1; -const int DIFS = 3; // due to scaling can be either 2 or 3 which is modelled by a non-deterministic choice -const int VULN = 1; // due to scaling can be either 0 or 1 which is modelled by a non-deterministic choice -const int TRANS_TIME_MAX; // scaling up -const int TRANS_TIME_MIN = 4; // scaling down -const int ACK_TO = 6; -const int ACK = 4; // due to scaling can be either 3 or 4 which is modelled by a non-deterministic choice -const int SIFS = 1; // due to scaling can be either 0 or 1 which is modelled by a non-deterministic choice -// maximum constant used in timing constraints + 1 -const int TIME_MAX = max(ACK_TO,TRANS_TIME_MAX)+1; - -// CONTENTION WINDOW -// CWMIN =15 & CWMAX =255 -// this means that MAX_BACKOFF IS 4 -const int MAX_BACKOFF = 4; - -//-----------------------------------------------------------------// -// THE MEDIUM/CHANNEL - -// FORMULAE FOR THE CHANNEL -// channel is busy -formula busy = c1>0 | c2>0; -// channel is free -formula free = c1=0 & c2=0; - -module medium - - // number of collisions - col : [0..COL]; - - // medium status - c1 : [0..2]; - c2 : [0..2]; - // ci corresponds to messages associated with station i - // 0 nothing being sent - // 1 being sent correctly - // 2 being sent garbled - - // begin sending message and nothing else currently being sent - [send1] c1=0 & c2=0 -> (c1'=1); - [send2] c2=0 & c1=0 -> (c2'=1); - - // begin sending message and something is already being sent - // in this case both messages become garbled - [send1] c1=0 & c2>0 -> (c1'=2) & (c2'=2) & (col'=min(col+1,COL)); - [send2] c2=0 & c1>0 -> (c1'=2) & (c2'=2) & (col'=min(col+1,COL)); - - // finish sending message - [finish1] c1>0 -> (c1'=0); - [finish2] c2>0 -> (c2'=0); - -endmodule - -//-----------------------------------------------------------------// -// STATION 1 -module station1 - // clock for station 1 - x1 : [0..TIME_MAX]; - - // local state - s1 : [1..12]; - // 1 sense - // 2 wait until free before setting backoff - // 3 wait for DIFS then set slot - // 4 set backoff - // 5 backoff - // 6 wait until free in backoff - // 7 wait for DIFS then resume backoff - // 8 vulnerable - // 9 transmit - // 11 wait for SIFS and then ACK - // 10 wait for ACT_TO - // 12 done - // BACKOFF - // separate into slots - slot1 : [0..15]; - backoff1 : [0..15]; - - // BACKOFF COUNTER - bc1 : [0..MAX_BACKOFF]; - // SENSE - // let time pass - [time] s1=1 & x1 (x1'=min(x1+1,TIME_MAX)); - // ready to transmit - [] s1=1 & (x1=DIFS | x1=DIFS-1) -> (s1'=8) & (x1'=0); - // found channel busy so wait until free - [] s1=1 & busy -> (s1'=2) & (x1'=0); - // WAIT UNTIL FREE BEFORE SETTING BACKOFF - // let time pass (no need for the clock x1 to change) - [time] s1=2 & busy -> (s1'=2); - // find that channel is free so check its free for DIFS before setting backoff - [] s1=2 & free -> (s1'=3); - // WAIT FOR DIFS THEN SET BACKOFF - // let time pass - [time] s1=3 & x1 (x1'=min(x1+1,TIME_MAX)); - // found channel busy so wait until free - [] s1=3 & busy -> (s1'=2) & (x1'=0); - // start backoff first uniformly choose slot - // backoff counter 0 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=0 -> (s1'=4) & (x1'=0) & (slot1'=0) & (bc1'=min(bc1+1,MAX_BACKOFF)); - // backoff counter 1 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=1 -> 1/2 : (s1'=4) & (x1'=0) & (slot1'=0) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/2 : (s1'=4) & (x1'=0) & (slot1'=1) & (bc1'=min(bc1+1,MAX_BACKOFF)); - // backoff counter 2 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=2 -> 1/4 : (s1'=4) & (x1'=0) & (slot1'=0) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/4 : (s1'=4) & (x1'=0) & (slot1'=1) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/4 : (s1'=4) & (x1'=0) & (slot1'=2) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/4 : (s1'=4) & (x1'=0) & (slot1'=3) & (bc1'=min(bc1+1,MAX_BACKOFF)); - // backoff counter 3 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=3 -> 1/8 : (s1'=4) & (x1'=0) & (slot1'=0) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=1) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=2) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=3) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=4) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=5) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=6) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=7) & (bc1'=min(bc1+1,MAX_BACKOFF)); - // backoff counter 4 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=4 -> 1/16 : (s1'=4) & (x1'=0) & (slot1'=0 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=1 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=2 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=3 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=4 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=5 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=6 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=7 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=8 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=9 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=10) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=11) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=12) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=13) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=14) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=15) & (bc1'=min(bc1+1,MAX_BACKOFF)); - // SET BACKOFF (no time can pass) - // chosen slot now set backoff - [] s1=4 -> 1/16 : (s1'=5) & (backoff1'=0 ) - + 1/16 : (s1'=5) & (backoff1'=1 ) - + 1/16 : (s1'=5) & (backoff1'=2 ) - + 1/16 : (s1'=5) & (backoff1'=3 ) - + 1/16 : (s1'=5) & (backoff1'=4 ) - + 1/16 : (s1'=5) & (backoff1'=5 ) - + 1/16 : (s1'=5) & (backoff1'=6 ) - + 1/16 : (s1'=5) & (backoff1'=7 ) - + 1/16 : (s1'=5) & (backoff1'=8 ) - + 1/16 : (s1'=5) & (backoff1'=9 ) - + 1/16 : (s1'=5) & (backoff1'=10) - + 1/16 : (s1'=5) & (backoff1'=11) - + 1/16 : (s1'=5) & (backoff1'=12) - + 1/16 : (s1'=5) & (backoff1'=13) - + 1/16 : (s1'=5) & (backoff1'=14) - + 1/16 : (s1'=5) & (backoff1'=15); - // BACKOFF - // let time pass - [time] s1=5 & x1 (x1'=min(x1+1,TIME_MAX)); - // decrement backoff - [] s1=5 & x1=ASLOTTIME & backoff1>0 -> (s1'=5) & (x1'=0) & (backoff1'=backoff1-1); - [] s1=5 & x1=ASLOTTIME & backoff1=0 & slot1>0 -> (s1'=5) & (x1'=0) & (backoff1'=15) & (slot1'=slot1-1); - // finish backoff - [] s1=5 & x1=ASLOTTIME & backoff1=0 & slot1=0 -> (s1'=8) & (x1'=0); - // found channel busy - [] s1=5 & busy -> (s1'=6) & (x1'=0); - // WAIT UNTIL FREE IN BACKOFF - // let time pass (no need for the clock x1 to change) - [time] s1=6 & busy -> (s1'=6); - // find that channel is free - [] s1=6 & free -> (s1'=7); - - // WAIT FOR DIFS THEN RESUME BACKOFF - // let time pass - [time] s1=7 & x1 (x1'=min(x1+1,TIME_MAX)); - // resume backoff (start again from previous backoff) - [] s1=7 & (x1=DIFS | x1=DIFS-1) -> (s1'=5) & (x1'=0); - // found channel busy - [] s1=7 & busy -> (s1'=6) & (x1'=0); - - // VULNERABLE - // let time pass - [time] s1=8 & x1 (x1'=min(x1+1,TIME_MAX)); - // move to transmit - [send1] s1=8 & (x1=VULN | x1=VULN-1) -> (s1'=9) & (x1'=0); - // TRANSMIT - // let time pass - [time] s1=9 & x1 (x1'=min(x1+1,TIME_MAX)); - // finish transmission successful - [finish1] s1=9 & x1>=TRANS_TIME_MIN & c1=1 -> (s1'=10) & (x1'=0); - // finish transmission garbled - [finish1] s1=9 & x1>=TRANS_TIME_MIN & c1=2 -> (s1'=11) & (x1'=0); - // WAIT FOR SIFS THEN WAIT FOR ACK - - // WAIT FOR SIFS i.e. c1=0 - // check channel and busy: go into backoff - [] s1=10 & c1=0 & x1=0 & busy -> (s1'=2); - // check channel and free: let time pass - [time] s1=10 & c1=0 & x1=0 & free -> (x1'=min(x1+1,TIME_MAX)); - // let time pass - // following guard is always false as SIFS=1 - // [time] s1=10 & c1=0 & x1>0 & x1 (x1'=min(x1+1,TIME_MAX)); - // ack is sent after SIFS (since SIFS-1=0 add condition that channel is free) - [send1] s1=10 & c1=0 & (x1=SIFS | (x1=SIFS-1 & free)) -> (s1'=10) & (x1'=0); - - // WAIT FOR ACK i.e. c1=1 - // let time pass - [time] s1=10 & c1=1 & x1 (x1'=min(x1+1,TIME_MAX)); - // get acknowledgement so packet sent correctly and move to done - [finish1] s1=10 & c1=1 & (x1=ACK | x1=ACK-1) -> (s1'=12) & (x1'=0) & (bc1'=0); - - // WAIT FOR ACK_TO - // check channel and busy: go into backoff - [] s1=11 & x1=0 & busy -> (s1'=2); - // check channel and free: let time pass - [time] s1=11 & x1=0 & free -> (x1'=min(x1+1,TIME_MAX)); - // let time pass - [time] s1=11 & x1>0 & x1 (x1'=min(x1+1,TIME_MAX)); - // no acknowledgement (go to backoff waiting DIFS first) - [] s1=11 & x1=ACK_TO -> (s1'=3) & (x1'=0); - - // DONE - [time] s1=12 -> (s1'=12); -endmodule - -// ---------------------------------------------------------------------------- // -// STATION 2 (rename STATION 1) -module -station2=station1[x1=x2, - s1=s2, - s2=s1, - c1=c2, - c2=c1, - slot1=slot2, - backoff1=backoff2, - bc1=bc2, - send1=send2, - finish1=finish2] -endmodule -// ---------------------------------------------------------------------------- // - -label "twoCollisions" = col=2; -label "fourCollisions" = col=4; -label "sixCollisions" = col=6; \ No newline at end of file diff --git a/examples/mdp/wlan/wlan5_collide.nm b/examples/mdp/wlan/wlan5_collide.nm deleted file mode 100644 index e01b7cfcd..000000000 --- a/examples/mdp/wlan/wlan5_collide.nm +++ /dev/null @@ -1,286 +0,0 @@ -// WLAN PROTOCOL (two stations) -// discrete time model -// gxn/jzs 20/02/02 - -mdp - -// COLLISIONS -const int COL; // maximum number of collisions - -// TIMING CONSTRAINTS -// we have used the FHSS parameters -// then scaled by the value of ASLOTTIME -const int ASLOTTIME = 1; -const int DIFS = 3; // due to scaling can be either 2 or 3 which is modelled by a non-deterministic choice -const int VULN = 1; // due to scaling can be either 0 or 1 which is modelled by a non-deterministic choice -const int TRANS_TIME_MAX; // scaling up -const int TRANS_TIME_MIN = 4; // scaling down -const int ACK_TO = 6; -const int ACK = 4; // due to scaling can be either 3 or 4 which is modelled by a non-deterministic choice -const int SIFS = 1; // due to scaling can be either 0 or 1 which is modelled by a non-deterministic choice -// maximum constant used in timing constraints + 1 -const int TIME_MAX = max(ACK_TO,TRANS_TIME_MAX)+1; - -// CONTENTION WINDOW -// CWMIN =15 & CWMAX =511 -// this means that MAX_BACKOFF IS 5 -const int MAX_BACKOFF = 5; - -//-----------------------------------------------------------------// -// THE MEDIUM/CHANNEL - -// FORMULAE FOR THE CHANNEL -// channel is busy -formula busy = c1>0 | c2>0; -// channel is free -formula free = c1=0 & c2=0; - -module medium - - // number of collisions - col : [0..COL]; - - // medium status - c1 : [0..2]; - c2 : [0..2]; - // ci corresponds to messages associated with station i - // 0 nothing being sent - // 1 being sent correctly - // 2 being sent garbled - - // begin sending message and nothing else currently being sent - [send1] c1=0 & c2=0 -> (c1'=1); - [send2] c2=0 & c1=0 -> (c2'=1); - - // begin sending message and something is already being sent - // in this case both messages become garbled - [send1] c1=0 & c2>0 -> (c1'=2) & (c2'=2) & (col'=min(col+1,COL)); - [send2] c2=0 & c1>0 -> (c1'=2) & (c2'=2) & (col'=min(col+1,COL)); - - // finish sending message - [finish1] c1>0 -> (c1'=0); - [finish2] c2>0 -> (c2'=0); - -endmodule - -//-----------------------------------------------------------------// -// STATION 1 -module station1 - // clock for station 1 - x1 : [0..TIME_MAX]; - - // local state - s1 : [1..12]; - // 1 sense - // 2 wait until free before setting backoff - // 3 wait for DIFS then set slot - // 4 set backoff - // 5 backoff - // 6 wait until free in backoff - // 7 wait for DIFS then resume backoff - // 8 vulnerable - // 9 transmit - // 11 wait for SIFS and then ACK - // 10 wait for ACT_TO - // 12 done - // BACKOFF - // separate into slots - slot1 : [0..31]; - backoff1 : [0..15]; - - // BACKOFF COUNTER - bc1 : [0..MAX_BACKOFF]; - // SENSE - // let time pass - [time] s1=1 & x1 (x1'=min(x1+1,TIME_MAX)); - // ready to transmit - [] s1=1 & (x1=DIFS | x1=DIFS-1) -> (s1'=8) & (x1'=0); - // found channel busy so wait until free - [] s1=1 & busy -> (s1'=2) & (x1'=0); - // WAIT UNTIL FREE BEFORE SETTING BACKOFF - // let time pass (no need for the clock x1 to change) - [time] s1=2 & busy -> (s1'=2); - // find that channel is free so check its free for DIFS before setting backoff - [] s1=2 & free -> (s1'=3); - // WAIT FOR DIFS THEN SET BACKOFF - // let time pass - [time] s1=3 & x1 (x1'=min(x1+1,TIME_MAX)); - // found channel busy so wait until free - [] s1=3 & busy -> (s1'=2) & (x1'=0); - // start backoff first uniformly choose slot - // backoff counter 0 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=0 -> (s1'=4) & (x1'=0) & (slot1'=0) & (bc1'=min(bc1+1,MAX_BACKOFF)); - // backoff counter 1 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=1 -> 1/2 : (s1'=4) & (x1'=0) & (slot1'=0) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/2 : (s1'=4) & (x1'=0) & (slot1'=1) & (bc1'=min(bc1+1,MAX_BACKOFF)); - // backoff counter 2 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=2 -> 1/4 : (s1'=4) & (x1'=0) & (slot1'=0) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/4 : (s1'=4) & (x1'=0) & (slot1'=1) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/4 : (s1'=4) & (x1'=0) & (slot1'=2) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/4 : (s1'=4) & (x1'=0) & (slot1'=3) & (bc1'=min(bc1+1,MAX_BACKOFF)); - // backoff counter 3 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=3 -> 1/8 : (s1'=4) & (x1'=0) & (slot1'=0) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=1) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=2) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=3) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=4) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=5) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=6) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=7) & (bc1'=min(bc1+1,MAX_BACKOFF)); - // backoff counter 4 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=4 -> 1/16 : (s1'=4) & (x1'=0) & (slot1'=0 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=1 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=2 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=3 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=4 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=5 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=6 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=7 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=8 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=9 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=10) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=11) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=12) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=13) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=14) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=15) & (bc1'=min(bc1+1,MAX_BACKOFF)); - // backoff counter 5 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=5 -> 1/32 : (s1'=4) & (x1'=0) & (slot1'=0 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=1 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=2 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=3 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=4 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=5 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=6 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=7 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=8 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=9 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=10) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=11) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=12) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=13) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=14) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=15) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=16) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=17) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=18) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=19) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=20) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=21) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=22) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=23) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=24) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=25) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=26) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=27) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=28) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=29) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=30) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=31) & (bc1'=min(bc1+1,MAX_BACKOFF)); - - // SET BACKOFF (no time can pass) - // chosen slot now set backoff - [] s1=4 -> 1/16 : (s1'=5) & (backoff1'=0 ) - + 1/16 : (s1'=5) & (backoff1'=1 ) - + 1/16 : (s1'=5) & (backoff1'=2 ) - + 1/16 : (s1'=5) & (backoff1'=3 ) - + 1/16 : (s1'=5) & (backoff1'=4 ) - + 1/16 : (s1'=5) & (backoff1'=5 ) - + 1/16 : (s1'=5) & (backoff1'=6 ) - + 1/16 : (s1'=5) & (backoff1'=7 ) - + 1/16 : (s1'=5) & (backoff1'=8 ) - + 1/16 : (s1'=5) & (backoff1'=9 ) - + 1/16 : (s1'=5) & (backoff1'=10) - + 1/16 : (s1'=5) & (backoff1'=11) - + 1/16 : (s1'=5) & (backoff1'=12) - + 1/16 : (s1'=5) & (backoff1'=13) - + 1/16 : (s1'=5) & (backoff1'=14) - + 1/16 : (s1'=5) & (backoff1'=15); - // BACKOFF - // let time pass - [time] s1=5 & x1 (x1'=min(x1+1,TIME_MAX)); - // decrement backoff - [] s1=5 & x1=ASLOTTIME & backoff1>0 -> (s1'=5) & (x1'=0) & (backoff1'=backoff1-1); - [] s1=5 & x1=ASLOTTIME & backoff1=0 & slot1>0 -> (s1'=5) & (x1'=0) & (backoff1'=15) & (slot1'=slot1-1); - // finish backoff - [] s1=5 & x1=ASLOTTIME & backoff1=0 & slot1=0 -> (s1'=8) & (x1'=0); - // found channel busy - [] s1=5 & busy -> (s1'=6) & (x1'=0); - // WAIT UNTIL FREE IN BACKOFF - // let time pass (no need for the clock x1 to change) - [time] s1=6 & busy -> (s1'=6); - // find that channel is free - [] s1=6 & free -> (s1'=7); - - // WAIT FOR DIFS THEN RESUME BACKOFF - // let time pass - [time] s1=7 & x1 (x1'=min(x1+1,TIME_MAX)); - // resume backoff (start again from previous backoff) - [] s1=7 & (x1=DIFS | x1=DIFS-1) -> (s1'=5) & (x1'=0); - // found channel busy - [] s1=7 & busy -> (s1'=6) & (x1'=0); - - // VULNERABLE - // let time pass - [time] s1=8 & x1 (x1'=min(x1+1,TIME_MAX)); - // move to transmit - [send1] s1=8 & (x1=VULN | x1=VULN-1) -> (s1'=9) & (x1'=0); - // TRANSMIT - // let time pass - [time] s1=9 & x1 (x1'=min(x1+1,TIME_MAX)); - // finish transmission successful - [finish1] s1=9 & x1>=TRANS_TIME_MIN & c1=1 -> (s1'=10) & (x1'=0); - // finish transmission garbled - [finish1] s1=9 & x1>=TRANS_TIME_MIN & c1=2 -> (s1'=11) & (x1'=0); - // WAIT FOR SIFS THEN WAIT FOR ACK - - // WAIT FOR SIFS i.e. c1=0 - // check channel and busy: go into backoff - [] s1=10 & c1=0 & x1=0 & busy -> (s1'=2); - // check channel and free: let time pass - [time] s1=10 & c1=0 & x1=0 & free -> (x1'=min(x1+1,TIME_MAX)); - // let time pass - // following guard is always false as SIFS=1 - // [time] s1=10 & c1=0 & x1>0 & x1 (x1'=min(x1+1,TIME_MAX)); - // ack is sent after SIFS (since SIFS-1=0 add condition that channel is free) - [send1] s1=10 & c1=0 & (x1=SIFS | (x1=SIFS-1 & free)) -> (s1'=10) & (x1'=0); - - // WAIT FOR ACK i.e. c1=1 - // let time pass - [time] s1=10 & c1=1 & x1 (x1'=min(x1+1,TIME_MAX)); - // get acknowledgement so packet sent correctly and move to done - [finish1] s1=10 & c1=1 & (x1=ACK | x1=ACK-1) -> (s1'=12) & (x1'=0) & (bc1'=0); - - // WAIT FOR ACK_TO - // check channel and busy: go into backoff - [] s1=11 & x1=0 & busy -> (s1'=2); - // check channel and free: let time pass - [time] s1=11 & x1=0 & free -> (x1'=min(x1+1,TIME_MAX)); - // let time pass - [time] s1=11 & x1>0 & x1 (x1'=min(x1+1,TIME_MAX)); - // no acknowledgement (go to backoff waiting DIFS first) - [] s1=11 & x1=ACK_TO -> (s1'=3) & (x1'=0); - - // DONE - [time] s1=12 -> (s1'=12); -endmodule - -// ---------------------------------------------------------------------------- // -// STATION 2 (rename STATION 1) -module -station2=station1[x1=x2, - s1=s2, - s2=s1, - c1=c2, - c2=c1, - slot1=slot2, - backoff1=backoff2, - bc1=bc2, - send1=send2, - finish1=finish2] -endmodule -// ---------------------------------------------------------------------------- // - -label "twoCollisions" = col=2; -label "fourCollisions" = col=4; -label "sixCollisions" = col=6; \ No newline at end of file diff --git a/examples/mdp/wlan/wlan6_collide.nm b/examples/mdp/wlan/wlan6_collide.nm deleted file mode 100644 index e0a098f71..000000000 --- a/examples/mdp/wlan/wlan6_collide.nm +++ /dev/null @@ -1,351 +0,0 @@ -// WLAN PROTOCOL (two stations) -// discrete time model -// gxn/jzs 20/02/02 - -mdp - -// COLLISIONS -const int COL; // maximum number of collisions - -// TIMING CONSTRAINTS -// we have used the FHSS parameters -// then scaled by the value of ASLOTTIME -const int ASLOTTIME = 1; -const int DIFS = 3; // due to scaling can be either 2 or 3 which is modelled by a non-deterministic choice -const int VULN = 1; // due to scaling can be either 0 or 1 which is modelled by a non-deterministic choice -const int TRANS_TIME_MAX; // scaling up -const int TRANS_TIME_MIN = 4; // scaling down -const int ACK_TO = 6; -const int ACK = 4; // due to scaling can be either 3 or 4 which is modelled by a non-deterministic choice -const int SIFS = 1; // due to scaling can be either 0 or 1 which is modelled by a non-deterministic choice -// maximum constant used in timing constraints + 1 -const int TIME_MAX = max(ACK_TO,TRANS_TIME_MAX)+1; - -// CONTENTION WINDOW -// CWMIN =15 & CWMAX =1023 -// this means that MAX_BACKOFF IS 6 -const int MAX_BACKOFF = 6; - -//-----------------------------------------------------------------// -// THE MEDIUM/CHANNEL - -// FORMULAE FOR THE CHANNEL -// channel is busy -formula busy = c1>0 | c2>0; -// channel is free -formula free = c1=0 & c2=0; - -module medium - - // number of collisions - col : [0..COL]; - - // medium status - c1 : [0..2]; - c2 : [0..2]; - // ci corresponds to messages associated with station i - // 0 nothing being sent - // 1 being sent correctly - // 2 being sent garbled - - // begin sending message and nothing else currently being sent - [send1] c1=0 & c2=0 -> (c1'=1); - [send2] c2=0 & c1=0 -> (c2'=1); - - // begin sending message and something is already being sent - // in this case both messages become garbled - [send1] c1=0 & c2>0 -> (c1'=2) & (c2'=2) & (col'=min(col+1,COL)); - [send2] c2=0 & c1>0 -> (c1'=2) & (c2'=2) & (col'=min(col+1,COL)); - - // finish sending message - [finish1] c1>0 -> (c1'=0); - [finish2] c2>0 -> (c2'=0); - -endmodule - -//-----------------------------------------------------------------// -// STATION 1 -module station1 - // clock for station 1 - x1 : [0..TIME_MAX]; - - // local state - s1 : [1..12]; - // 1 sense - // 2 wait until free before setting backoff - // 3 wait for DIFS then set slot - // 4 set backoff - // 5 backoff - // 6 wait until free in backoff - // 7 wait for DIFS then resume backoff - // 8 vulnerable - // 9 transmit - // 11 wait for SIFS and then ACK - // 10 wait for ACT_TO - // 12 done - // BACKOFF - // separate into slots - slot1 : [0..63]; - backoff1 : [0..15]; - - // BACKOFF COUNTER - bc1 : [0..MAX_BACKOFF]; - // SENSE - // let time pass - [time] s1=1 & x1 (x1'=min(x1+1,TIME_MAX)); - // ready to transmit - [] s1=1 & (x1=DIFS | x1=DIFS-1) -> (s1'=8) & (x1'=0); - // found channel busy so wait until free - [] s1=1 & busy -> (s1'=2) & (x1'=0); - // WAIT UNTIL FREE BEFORE SETTING BACKOFF - // let time pass (no need for the clock x1 to change) - [time] s1=2 & busy -> (s1'=2); - // find that channel is free so check its free for DIFS before setting backoff - [] s1=2 & free -> (s1'=3); - // WAIT FOR DIFS THEN SET BACKOFF - // let time pass - [time] s1=3 & x1 (x1'=min(x1+1,TIME_MAX)); - // found channel busy so wait until free - [] s1=3 & busy -> (s1'=2) & (x1'=0); - // start backoff first uniformly choose slot - // backoff counter 0 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=0 -> (s1'=4) & (x1'=0) & (slot1'=0) & (bc1'=min(bc1+1,MAX_BACKOFF)); - // backoff counter 1 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=1 -> 1/2 : (s1'=4) & (x1'=0) & (slot1'=0) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/2 : (s1'=4) & (x1'=0) & (slot1'=1) & (bc1'=min(bc1+1,MAX_BACKOFF)); - // backoff counter 2 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=2 -> 1/4 : (s1'=4) & (x1'=0) & (slot1'=0) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/4 : (s1'=4) & (x1'=0) & (slot1'=1) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/4 : (s1'=4) & (x1'=0) & (slot1'=2) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/4 : (s1'=4) & (x1'=0) & (slot1'=3) & (bc1'=min(bc1+1,MAX_BACKOFF)); - // backoff counter 3 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=3 -> 1/8 : (s1'=4) & (x1'=0) & (slot1'=0) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=1) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=2) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=3) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=4) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=5) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=6) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/8 : (s1'=4) & (x1'=0) & (slot1'=7) & (bc1'=min(bc1+1,MAX_BACKOFF)); - // backoff counter 4 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=4 -> 1/16 : (s1'=4) & (x1'=0) & (slot1'=0 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=1 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=2 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=3 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=4 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=5 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=6 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=7 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=8 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=9 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=10) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=11) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=12) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=13) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=14) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/16 : (s1'=4) & (x1'=0) & (slot1'=15) & (bc1'=min(bc1+1,MAX_BACKOFF)); - // backoff counter 5 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=5 -> 1/32 : (s1'=4) & (x1'=0) & (slot1'=0 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=1 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=2 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=3 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=4 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=5 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=6 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=7 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=8 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=9 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=10) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=11) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=12) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=13) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=14) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=15) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=16) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=17) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=18) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=19) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=20) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=21) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=22) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=23) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=24) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=25) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=26) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=27) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=28) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=29) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=30) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/32 : (s1'=4) & (x1'=0) & (slot1'=31) & (bc1'=min(bc1+1,MAX_BACKOFF)); - - // backoff counter 6 - [] s1=3 & (x1=DIFS | x1=DIFS-1) & bc1=6 -> 1/64 : (s1'=4) & (x1'=0) & (slot1'=0 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=1 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=2 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=3 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=4 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=5 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=6 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=7 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=8 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=9 ) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=10) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=11) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=12) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=13) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=14) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=15) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=16) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=17) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=18) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=19) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=20) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=21) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=22) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=23) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=24) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=25) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=26) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=27) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=28) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=29) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=30) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=31) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=32) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=33) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=34) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=35) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=36) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=37) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=38) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=39) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=40) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=41) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=42) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=43) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=44) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=45) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=46) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=47) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=48) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=49) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=50) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=51) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=52) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=53) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=54) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=55) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=56) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=57) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=58) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=59) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=60) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=61) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=62) & (bc1'=min(bc1+1,MAX_BACKOFF)) - + 1/64 : (s1'=4) & (x1'=0) & (slot1'=63) & (bc1'=min(bc1+1,MAX_BACKOFF)); - // SET BACKOFF (no time can pass) - // chosen slot now set backoff - [] s1=4 -> 1/16 : (s1'=5) & (backoff1'=0 ) - + 1/16 : (s1'=5) & (backoff1'=1 ) - + 1/16 : (s1'=5) & (backoff1'=2 ) - + 1/16 : (s1'=5) & (backoff1'=3 ) - + 1/16 : (s1'=5) & (backoff1'=4 ) - + 1/16 : (s1'=5) & (backoff1'=5 ) - + 1/16 : (s1'=5) & (backoff1'=6 ) - + 1/16 : (s1'=5) & (backoff1'=7 ) - + 1/16 : (s1'=5) & (backoff1'=8 ) - + 1/16 : (s1'=5) & (backoff1'=9 ) - + 1/16 : (s1'=5) & (backoff1'=10) - + 1/16 : (s1'=5) & (backoff1'=11) - + 1/16 : (s1'=5) & (backoff1'=12) - + 1/16 : (s1'=5) & (backoff1'=13) - + 1/16 : (s1'=5) & (backoff1'=14) - + 1/16 : (s1'=5) & (backoff1'=15); - // BACKOFF - // let time pass - [time] s1=5 & x1 (x1'=min(x1+1,TIME_MAX)); - // decrement backoff - [] s1=5 & x1=ASLOTTIME & backoff1>0 -> (s1'=5) & (x1'=0) & (backoff1'=backoff1-1); - [] s1=5 & x1=ASLOTTIME & backoff1=0 & slot1>0 -> (s1'=5) & (x1'=0) & (backoff1'=15) & (slot1'=slot1-1); - // finish backoff - [] s1=5 & x1=ASLOTTIME & backoff1=0 & slot1=0 -> (s1'=8) & (x1'=0); - // found channel busy - [] s1=5 & busy -> (s1'=6) & (x1'=0); - // WAIT UNTIL FREE IN BACKOFF - // let time pass (no need for the clock x1 to change) - [time] s1=6 & busy -> (s1'=6); - // find that channel is free - [] s1=6 & free -> (s1'=7); - - // WAIT FOR DIFS THEN RESUME BACKOFF - // let time pass - [time] s1=7 & x1 (x1'=min(x1+1,TIME_MAX)); - // resume backoff (start again from previous backoff) - [] s1=7 & (x1=DIFS | x1=DIFS-1) -> (s1'=5) & (x1'=0); - // found channel busy - [] s1=7 & busy -> (s1'=6) & (x1'=0); - - // VULNERABLE - // let time pass - [time] s1=8 & x1 (x1'=min(x1+1,TIME_MAX)); - // move to transmit - [send1] s1=8 & (x1=VULN | x1=VULN-1) -> (s1'=9) & (x1'=0); - // TRANSMIT - // let time pass - [time] s1=9 & x1 (x1'=min(x1+1,TIME_MAX)); - // finish transmission successful - [finish1] s1=9 & x1>=TRANS_TIME_MIN & c1=1 -> (s1'=10) & (x1'=0); - // finish transmission garbled - [finish1] s1=9 & x1>=TRANS_TIME_MIN & c1=2 -> (s1'=11) & (x1'=0); - // WAIT FOR SIFS THEN WAIT FOR ACK - - // WAIT FOR SIFS i.e. c1=0 - // check channel and busy: go into backoff - [] s1=10 & c1=0 & x1=0 & busy -> (s1'=2); - // check channel and free: let time pass - [time] s1=10 & c1=0 & x1=0 & free -> (x1'=min(x1+1,TIME_MAX)); - // let time pass - // following guard is always false as SIFS=1 - // [time] s1=10 & c1=0 & x1>0 & x1 (x1'=min(x1+1,TIME_MAX)); - // ack is sent after SIFS (since SIFS-1=0 add condition that channel is free) - [send1] s1=10 & c1=0 & (x1=SIFS | (x1=SIFS-1 & free)) -> (s1'=10) & (x1'=0); - - // WAIT FOR ACK i.e. c1=1 - // let time pass - [time] s1=10 & c1=1 & x1 (x1'=min(x1+1,TIME_MAX)); - // get acknowledgement so packet sent correctly and move to done - [finish1] s1=10 & c1=1 & (x1=ACK | x1=ACK-1) -> (s1'=12) & (x1'=0) & (bc1'=0); - - // WAIT FOR ACK_TO - // check channel and busy: go into backoff - [] s1=11 & x1=0 & busy -> (s1'=2); - // check channel and free: let time pass - [time] s1=11 & x1=0 & free -> (x1'=min(x1+1,TIME_MAX)); - // let time pass - [time] s1=11 & x1>0 & x1 (x1'=min(x1+1,TIME_MAX)); - // no acknowledgement (go to backoff waiting DIFS first) - [] s1=11 & x1=ACK_TO -> (s1'=3) & (x1'=0); - - // DONE - [time] s1=12 -> (s1'=12); -endmodule - -// ---------------------------------------------------------------------------- // -// STATION 2 (rename STATION 1) -module -station2=station1[x1=x2, - s1=s2, - s2=s1, - c1=c2, - c2=c1, - slot1=slot2, - backoff1=backoff2, - bc1=bc2, - send1=send2, - finish1=finish2] -endmodule -// ---------------------------------------------------------------------------- // - -label "twoCollisions" = col=2; -label "fourCollisions" = col=4; -label "sixCollisions" = col=6; \ No newline at end of file diff --git a/examples/mdp/wlan/wlanX_2.cexprop b/examples/mdp/wlan/wlanX_2.cexprop deleted file mode 100644 index 1dad8767d..000000000 --- a/examples/mdp/wlan/wlanX_2.cexprop +++ /dev/null @@ -1 +0,0 @@ -P<0.1 [ F twoCollisions ] diff --git a/examples/mdp/wlan/wlanX_4.cexprop b/examples/mdp/wlan/wlanX_4.cexprop deleted file mode 100644 index 8af300d54..000000000 --- a/examples/mdp/wlan/wlanX_4.cexprop +++ /dev/null @@ -1 +0,0 @@ -P<0.003 [ F fourCollisions ] diff --git a/examples/mdp/wlan/wlanX_6.cexprop b/examples/mdp/wlan/wlanX_6.cexprop deleted file mode 100644 index b02357fa7..000000000 --- a/examples/mdp/wlan/wlanX_6.cexprop +++ /dev/null @@ -1 +0,0 @@ -P<0.1 [ F sixCollisions ] diff --git a/examples/multiobjective/display_exported_plot.tex b/examples/multiobjective/display_exported_plot.tex deleted file mode 100644 index bc6f76c4a..000000000 --- a/examples/multiobjective/display_exported_plot.tex +++ /dev/null @@ -1,23 +0,0 @@ -% This file can be used to display the exported plots from multi-objective model checking - -\documentclass{article} -\usepackage{pgfplots} -\usepackage{filecontents} - -\newcommand{\resultPath}{../ma/stream/results/} - -\begin{document} - \centering -\begin{tikzpicture}[scale=1.75] -\begin{axis}[ - enlargelimits=false, - axis background/.style={fill=red!50} - ] -\addplot[fill=white, very thin] table [col sep=comma] {\resultPath overapproximation.csv} -- cycle; -\addplot[fill=green, very thin] table [col sep=comma] {\resultPath underapproximation.csv} -- cycle; -\addplot[mark=o, mark options={blue, scale=1.3, thick}, only marks] table [col sep=comma] {\resultPath paretopoints.csv}; -\addplot[mark=false] table [col sep=comma] {\resultPath boundaries.csv}; -\end{axis} -\end{tikzpicture} - -\end{document} \ No newline at end of file diff --git a/examples/multiobjective/ma/mutex/mutex2.ma b/examples/multiobjective/ma/mutex/mutex2.ma deleted file mode 100644 index 296afa8ec..000000000 --- a/examples/multiobjective/ma/mutex/mutex2.ma +++ /dev/null @@ -1,93 +0,0 @@ -// Translation of the MAPA Specification of a mutex system into PRISM code -// http://wwwhome.cs.utwente.nl/~timmer/scoop/papers/qest13/index.html - -ma - -const int N; // The size of the data (should be at most 6) - -formula someEnter = s1=1 | s2=1; -formula someWait = s1=2 | s2=2; -formula someLow = s1=3 | s2=3; -formula someHigh = s1=4 | s2=4; -formula someTie = s1=5 | s2=5; -formula someAdmit = s1=6 | s2=6; -formula otherHigh = s2=4; - -formula someLowTie = someLow | someTie; -formula someLowHighTie = someLow | someHigh | someTie; -formula someAdmitHighTie = someAdmit | someHigh | someTie; -formula someEnterWait = someEnter | someWait; - - -module process1 - - // The internal state of the process - // 0: uninterested - // 1: enter - // 2: wait - // 3: low - // 4: high - // 5: tie - // 6: admit - s1 : [0..6]; - - // the phase of the protocol - phase1 : [1..12]; - - // The considered data - data1 : [1..N]; - - // The result of a coin flip - h1 : bool; - - //[] phase1=1 -> 1 : true; - [] phase1=1 -> 1 : (phase1'=2); - - [] phase1=2 & N>=1 -> 1 : (data1'=1) & (phase1'=3); - [] phase1=2 & N>=2 -> 1 : (data1'=2) & (phase1'=3); - [] phase1=2 & N>=3 -> 1 : (data1'=3) & (phase1'=3); - [] phase1=2 & N>=4 -> 1 : (data1'=4) & (phase1'=3); - [] phase1=2 & N>=5 -> 1 : (data1'=5) & (phase1'=3); - [] phase1=2 & N>=6 -> 1 : (data1'=6) & (phase1'=3); - - [] phase1=3 & (someLowHighTie & !someAdmit) -> 1 : (s1'=2) & (phase1'=4); - [] phase1=3 & (!someLowHighTie | someAdmit) -> 0.5 : (phase1'=5) & (h1'=false) + 0.5 : (phase1'=5) & (h1'=true); - - [] phase1=4 & (!someLowHighTie | someAdmit) -> 1 : (s1'=1) & (phase1'=3); - - [] phase1=5 & h1=false -> 1 : (s1'=3) & (phase1'=6); - [] phase1=5 & h1=true -> 1 : (s1'=4) & (phase1'=7) & (h1'=false); - - [] phase1=6 & !someAdmitHighTie -> 1 : (s1'=5) & (phase1'=8); - - [] phase1=7 & (someAdmit | otherHigh) -> 1 : (s1'=5) & (phase1'=9); - [] phase1=7 & (!someAdmit & !otherHigh) -> 1 : (phase1'=10); - - [] phase1=8 -> 0.5 : (phase1'=5) & (h1'=false) + 0.5 : (phase1'=5) & (h1'=true); - - [] phase1=9 & !someAdmit & !otherHigh -> 0.5 : (phase1'=5) & (h1'=false) + 0.5 : (phase1'=5) & (h1'=true); - - <> phase1=10 -> data1 : (phase1'=11) & (data1'=1); - - [] phase1=11 & (someLowTie | otherHigh) & !someEnter -> 1 : (s1'=0) & (phase1'=1); - [] phase1=11 & !someLowTie & !otherHigh -> 1 : (s1'=6) & (phase1'=12); - - [] phase1=12 & !someEnterWait -> 1 : (s1'=0) & (phase1'=1); - -endmodule - -module process2 = process1 [ s1=s2, phase1=phase2, data1=data2, h1=h2, s2=s1] endmodule - -label "crit1" = phase1=10; -label "crit2" = phase2=10; - - -rewards "timeInCrit1" - phase1=10 : 1; -endrewards - - -rewards "timeInCrit2" - phase2=10 : 1; -endrewards - diff --git a/examples/multiobjective/ma/mutex/mutex3.ma b/examples/multiobjective/ma/mutex/mutex3.ma deleted file mode 100644 index f47ef31f5..000000000 --- a/examples/multiobjective/ma/mutex/mutex3.ma +++ /dev/null @@ -1,98 +0,0 @@ -// Translation of the MAPA Specification of a mutex system into PRISM code -// http://wwwhome.cs.utwente.nl/~timmer/scoop/papers/qest13/index.html - -ma - -const int N; // The size of the data (should be at most 6) - -formula someEnter = s1=1 | s2=1 | s3=1; -formula someWait = s1=2 | s2=2 | s3=2; -formula someLow = s1=3 | s2=3 | s3=3; -formula someHigh = s1=4 | s2=4 | s3=4; -formula someTie = s1=5 | s2=5 | s3=5; -formula someAdmit = s1=6 | s2=6 | s3=6; -formula otherHigh = s2=4 | s3=4; - -formula someLowTie = someLow | someTie; -formula someLowHighTie = someLow | someHigh | someTie; -formula someAdmitHighTie = someAdmit | someHigh | someTie; -formula someEnterWait = someEnter | someWait; - - -module process1 - - // The internal state of the process - // 0: uninterested - // 1: enter - // 2: wait - // 3: low - // 4: high - // 5: tie - // 6: admit - s1 : [0..6]; - - // the phase of the protocol - phase1 : [1..12]; - - // The considered data - data1 : [1..N]; - - // The result of a coin flip - h1 : bool; - - //[] phase1=1 -> 1 : true; - [] phase1=1 -> 1 : (phase1'=2); - - [] phase1=2 & N>=1 -> 1 : (data1'=1) & (phase1'=3); - [] phase1=2 & N>=2 -> 1 : (data1'=2) & (phase1'=3); - [] phase1=2 & N>=3 -> 1 : (data1'=3) & (phase1'=3); - [] phase1=2 & N>=4 -> 1 : (data1'=4) & (phase1'=3); - [] phase1=2 & N>=5 -> 1 : (data1'=5) & (phase1'=3); - [] phase1=2 & N>=6 -> 1 : (data1'=6) & (phase1'=3); - - [] phase1=3 & (someLowHighTie & !someAdmit) -> 1 : (s1'=2) & (phase1'=4); - [] phase1=3 & (!someLowHighTie | someAdmit) -> 0.5 : (phase1'=5) & (h1'=false) + 0.5 : (phase1'=5) & (h1'=true); - - [] phase1=4 & (!someLowHighTie | someAdmit) -> 1 : (s1'=1) & (phase1'=3); - - [] phase1=5 & h1=false -> 1 : (s1'=3) & (phase1'=6); - [] phase1=5 & h1=true -> 1 : (s1'=4) & (phase1'=7) & (h1'=false); - - [] phase1=6 & !someAdmitHighTie -> 1 : (s1'=5) & (phase1'=8); - - [] phase1=7 & (someAdmit | otherHigh) -> 1 : (s1'=5) & (phase1'=9); - [] phase1=7 & (!someAdmit & !otherHigh) -> 1 : (phase1'=10); - - [] phase1=8 -> 0.5 : (phase1'=5) & (h1'=false) + 0.5 : (phase1'=5) & (h1'=true); - - [] phase1=9 & !someAdmit & !otherHigh -> 0.5 : (phase1'=5) & (h1'=false) + 0.5 : (phase1'=5) & (h1'=true); - - <> phase1=10 -> data1 : (phase1'=11) & (data1'=1); - - [] phase1=11 & (someLowTie | otherHigh) & !someEnter -> 1 : (s1'=0) & (phase1'=1); - [] phase1=11 & !someLowTie & !otherHigh -> 1 : (s1'=6) & (phase1'=12); - - [] phase1=12 & !someEnterWait -> 1 : (s1'=0) & (phase1'=1); - -endmodule - -module process2 = process1 [ s1=s2, phase1=phase2, data1=data2, h1=h2, s2=s1] endmodule -module process3 = process1 [ s1=s3, phase1=phase3, data1=data3, h1=h3, s3=s1] endmodule - -label "crit1" = phase1=10; -label "crit2" = phase2=10; -label "crit3" = phase3=10; - - -rewards "timeInCrit1" - phase1=10 : 1; -endrewards - -rewards "timeInCrit2" - phase2=10 : 1; -endrewards - -rewards "timeInCrit3" - phase3=10 : 1; -endrewards - diff --git a/examples/multiobjective/ma/mutex/mutex4.ma b/examples/multiobjective/ma/mutex/mutex4.ma deleted file mode 100644 index 8068933ef..000000000 --- a/examples/multiobjective/ma/mutex/mutex4.ma +++ /dev/null @@ -1,103 +0,0 @@ -// Translation of the MAPA Specification of a mutex system into PRISM code -// http://wwwhome.cs.utwente.nl/~timmer/scoop/papers/qest13/index.html - -ma - -const int N; // The size of the data (should be at most 6) - -formula someEnter = s1=1 | s2=1 | s3=1 | s4=1; -formula someWait = s1=2 | s2=2 | s3=2 | s4=2; -formula someLow = s1=3 | s2=3 | s3=3 | s4=3; -formula someHigh = s1=4 | s2=4 | s3=4 | s4=4; -formula someTie = s1=5 | s2=5 | s3=5 | s4=5; -formula someAdmit = s1=6 | s2=6 | s3=6 | s4=6; -formula otherHigh = s2=4 | s3=4 | s4=4; - -formula someLowTie = someLow | someTie; -formula someLowHighTie = someLow | someHigh | someTie; -formula someAdmitHighTie = someAdmit | someHigh | someTie; -formula someEnterWait = someEnter | someWait; - - -module process1 - - // The internal state of the process - // 0: uninterested - // 1: enter - // 2: wait - // 3: low - // 4: high - // 5: tie - // 6: admit - s1 : [0..6]; - - // the phase of the protocol - phase1 : [1..12]; - - // The considered data - data1 : [1..N]; - - // The result of a coin flip - h1 : bool; - - //[] phase1=1 -> 1 : true; - [] phase1=1 -> 1 : (phase1'=2); - - [] phase1=2 & N>=1 -> 1 : (data1'=1) & (phase1'=3); - [] phase1=2 & N>=2 -> 1 : (data1'=2) & (phase1'=3); - [] phase1=2 & N>=3 -> 1 : (data1'=3) & (phase1'=3); - [] phase1=2 & N>=4 -> 1 : (data1'=4) & (phase1'=3); - [] phase1=2 & N>=5 -> 1 : (data1'=5) & (phase1'=3); - [] phase1=2 & N>=6 -> 1 : (data1'=6) & (phase1'=3); - - [] phase1=3 & (someLowHighTie & !someAdmit) -> 1 : (s1'=2) & (phase1'=4); - [] phase1=3 & (!someLowHighTie | someAdmit) -> 0.5 : (phase1'=5) & (h1'=false) + 0.5 : (phase1'=5) & (h1'=true); - - [] phase1=4 & (!someLowHighTie | someAdmit) -> 1 : (s1'=1) & (phase1'=3); - - [] phase1=5 & h1=false -> 1 : (s1'=3) & (phase1'=6); - [] phase1=5 & h1=true -> 1 : (s1'=4) & (phase1'=7) & (h1'=false); - - [] phase1=6 & !someAdmitHighTie -> 1 : (s1'=5) & (phase1'=8); - - [] phase1=7 & (someAdmit | otherHigh) -> 1 : (s1'=5) & (phase1'=9); - [] phase1=7 & (!someAdmit & !otherHigh) -> 1 : (phase1'=10); - - [] phase1=8 -> 0.5 : (phase1'=5) & (h1'=false) + 0.5 : (phase1'=5) & (h1'=true); - - [] phase1=9 & !someAdmit & !otherHigh -> 0.5 : (phase1'=5) & (h1'=false) + 0.5 : (phase1'=5) & (h1'=true); - - <> phase1=10 -> data1 : (phase1'=11) & (data1'=1); - - [] phase1=11 & (someLowTie | otherHigh) & !someEnter -> 1 : (s1'=0) & (phase1'=1); - [] phase1=11 & !someLowTie & !otherHigh -> 1 : (s1'=6) & (phase1'=12); - - [] phase1=12 & !someEnterWait -> 1 : (s1'=0) & (phase1'=1); - -endmodule - -module process2 = process1 [ s1=s2, phase1=phase2, data1=data2, h1=h2, s2=s1] endmodule -module process3 = process1 [ s1=s3, phase1=phase3, data1=data3, h1=h3, s3=s1] endmodule -module process4 = process1 [ s1=s4, phase1=phase4, data1=data4, h1=h4, s4=s1] endmodule - -label "crit1" = phase1=10; -label "crit2" = phase2=10; -label "crit3" = phase3=10; -label "crit4" = phase4=10; - - -rewards "timeInCrit1" - phase1=10 : 1; -endrewards - -rewards "timeInCrit2" - phase2=10 : 1; -endrewards - -rewards "timeInCrit3" - phase3=10 : 1; -endrewards - -rewards "timeInCrit4" - phase4=10 : 1; -endrewards diff --git a/examples/multiobjective/ma/mutex/mutex5.ma b/examples/multiobjective/ma/mutex/mutex5.ma deleted file mode 100644 index 2755d829c..000000000 --- a/examples/multiobjective/ma/mutex/mutex5.ma +++ /dev/null @@ -1,110 +0,0 @@ -// Translation of the MAPA Specification of a mutex system into PRISM code -// http://wwwhome.cs.utwente.nl/~timmer/scoop/papers/qest13/index.html - -ma - -const int N; // The size of the data (should be at most 6) - -formula someEnter = s1=1 | s2=1 | s3=1 | s4=1 | s5=1; -formula someWait = s1=2 | s2=2 | s3=2 | s4=2 | s5=2; -formula someLow = s1=3 | s2=3 | s3=3 | s4=3 | s5=3; -formula someHigh = s1=4 | s2=4 | s3=4 | s4=4 | s5=4; -formula someTie = s1=5 | s2=5 | s3=5 | s4=5 | s5=5; -formula someAdmit = s1=6 | s2=6 | s3=6 | s4=6 | s5=6; -formula otherHigh = s2=4 | s3=4 | s4=4 | s5=4; - -formula someLowTie = someLow | someTie; -formula someLowHighTie = someLow | someHigh | someTie; -formula someAdmitHighTie = someAdmit | someHigh | someTie; -formula someEnterWait = someEnter | someWait; - -module process1 - - // The internal state of the process - // 0: uninterested - // 1: enter - // 2: wait - // 3: low - // 4: high - // 5: tie - // 6: admit - s1 : [0..6]; - - // the phase of the protocol - phase1 : [1..12]; - - // The considered data - data1 : [1..N]; - - // The result of a coin flip - h1 : bool; - - //[] phase1=1 -> 1 : true; - [] phase1=1 -> 1 : (phase1'=2); - - [] phase1=2 & N>=1 -> 1 : (data1'=1) & (phase1'=3); - [] phase1=2 & N>=2 -> 1 : (data1'=2) & (phase1'=3); - [] phase1=2 & N>=3 -> 1 : (data1'=3) & (phase1'=3); - [] phase1=2 & N>=4 -> 1 : (data1'=4) & (phase1'=3); - [] phase1=2 & N>=5 -> 1 : (data1'=5) & (phase1'=3); - [] phase1=2 & N>=6 -> 1 : (data1'=6) & (phase1'=3); - - [] phase1=3 & (someLowHighTie & !someAdmit) -> 1 : (s1'=2) & (phase1'=4); - [] phase1=3 & (!someLowHighTie | someAdmit) -> 0.5 : (phase1'=5) & (h1'=false) + 0.5 : (phase1'=5) & (h1'=true); - - [] phase1=4 & (!someLowHighTie | someAdmit) -> 1 : (s1'=1) & (phase1'=3); - - [] phase1=5 & h1=false -> 1 : (s1'=3) & (phase1'=6); - [] phase1=5 & h1=true -> 1 : (s1'=4) & (phase1'=7) & (h1'=false); - - [] phase1=6 & !someAdmitHighTie -> 1 : (s1'=5) & (phase1'=8); - - [] phase1=7 & (someAdmit | otherHigh) -> 1 : (s1'=5) & (phase1'=9); - [] phase1=7 & (!someAdmit & !otherHigh) -> 1 : (phase1'=10); - - [] phase1=8 -> 0.5 : (phase1'=5) & (h1'=false) + 0.5 : (phase1'=5) & (h1'=true); - - [] phase1=9 & !someAdmit & !otherHigh -> 0.5 : (phase1'=5) & (h1'=false) + 0.5 : (phase1'=5) & (h1'=true); - - <> phase1=10 -> data1 : (phase1'=11) & (data1'=1); - - [] phase1=11 & (someLowTie | otherHigh) & !someEnter -> 1 : (s1'=0) & (phase1'=1); - [] phase1=11 & !someLowTie & !otherHigh -> 1 : (s1'=6) & (phase1'=12); - - [] phase1=12 & !someEnterWait -> 1 : (s1'=0) & (phase1'=1); - -endmodule - -module process2 = process1 [ s1=s2, phase1=phase2, data1=data2, h1=h2, s2=s1] endmodule -module process3 = process1 [ s1=s3, phase1=phase3, data1=data3, h1=h3, s3=s1] endmodule -module process4 = process1 [ s1=s4, phase1=phase4, data1=data4, h1=h4, s4=s1] endmodule -module process5 = process1 [ s1=s5, phase1=phase5, data1=data5, h1=h5, s5=s1] endmodule - - -label "crit1" = phase1=10; -label "crit2" = phase2=10; -label "crit3" = phase3=10; -label "crit4" = phase4=10; -label "crit5" = phase5=10; - - -rewards "timeInCrit1" - phase1=10 : 1; -endrewards - -rewards "timeInCrit2" - phase2=10 : 1; -endrewards - -rewards "timeInCrit3" - phase3=10 : 1; -endrewards - -rewards "timeInCrit4" - phase4=10 : 1; -endrewards - -rewards "timeInCrit5" - phase5=10 : 1; -endrewards - diff --git a/examples/multiobjective/ma/polling/polling.ma b/examples/multiobjective/ma/polling/polling.ma deleted file mode 100644 index 5c8a45ad8..000000000 --- a/examples/multiobjective/ma/polling/polling.ma +++ /dev/null @@ -1,101 +0,0 @@ -// Translation of the MAPA Specification of a polling system into PRISM code -// http://wwwhome.cs.utwente.nl/~timmer/scoop/papers/qest13/index.html - -ma - -const int N; // number of job types (should be at most 6) -const int Q; // Maximum queue size in each station - -// Formulae to control the LIFO queue of the stations. -// The queue is represented by some integer whose base N representation has at most Q digits, each representing one of the job types 0, 1, ..., N-1. -// In addition, we store the current size of the queue which is needed to distinguish an empty queue from a queue holding job of type 0 -formula queue1_empty = q1Size=0; -formula queue1_full = q1Size=Q; -formula queue1_pop = floor(q1/N); -formula queue1_head = q1 - (queue1_pop * N); // i.e. q1 modulo N -formula queue1_push = q1*N; -formula queue2_empty = q2Size=0; -formula queue2_full = q2Size=Q; -formula queue2_pop = floor(q2/N); -formula queue2_head = q2 - (queue2_pop * N); // i.e. q2 modulo N -formula queue2_push = q2*N; - -const int queue_maxValue = (N^Q)-1; - -const double inRate1 = 3; // = (2 * #station) + 1; -const double inRate2 = 5; // = (2 * #station) + 1; - -module pollingsys - // The queues for the stations - q1 : [0..queue_maxValue]; - q1Size : [0..Q]; - q2 : [0..queue_maxValue]; - q2Size : [0..Q]; - - // Store the job that is currently processed by the server. j=N means that no job is processed. - j : [0..N] init N; - - // Flag indicating whether a new job arrived - newJob1 : bool init false; - newJob2 : bool init false; - - //<> !newJob1 & !newJob2 & !queue1_full & queue2_full & j=N -> inRate1 : (newJob1'=true); - //<> !newJob1 & !newJob2 & queue1_full & !queue2_full & j=N -> inRate2 : (newJob2'=true); - <> !newJob1 & !newJob2 & !queue1_full & !queue2_full & j=N -> inRate1 : (newJob1'=true) + inRate2 : (newJob2'=true); - <> !newJob1 & !newJob2 & queue1_full & queue2_full & j 2*(j+1) : (j'=N); - <> !newJob1 & !newJob2 & !queue1_full & queue2_full & j inRate1 : (newJob1'=true) + 2*(j+1) : (j'=N); - <> !newJob1 & !newJob2 & queue1_full & !queue2_full & j inRate2 : (newJob2'=true) + 2*(j+1) : (j'=N); - <> !newJob1 & !newJob2 & !queue1_full & !queue2_full & j inRate1 : (newJob1'=true) + inRate2 : (newJob2'=true) + 2*(j+1) : (j'=N); - - [] newJob1 & N>=1 -> 1 : (q1Size'=q1Size+1) & (q1'=queue1_push+0) & (newJob1'=false); - [] newJob1 & N>=2 -> 1 : (q1Size'=q1Size+1) & (q1'=queue1_push+1) & (newJob1'=false); - [] newJob1 & N>=3 -> 1 : (q1Size'=q1Size+1) & (q1'=queue1_push+2) & (newJob1'=false); - [] newJob1 & N>=4 -> 1 : (q1Size'=q1Size+1) & (q1'=queue1_push+3) & (newJob1'=false); - [] newJob1 & N>=5 -> 1 : (q1Size'=q1Size+1) & (q1'=queue1_push+4) & (newJob1'=false); - [] newJob1 & N>=6 -> 1 : (q1Size'=q1Size+1) & (q1'=queue1_push+5) & (newJob1'=false); - - [] newJob2 & N>=1 -> 1 : (q2Size'=q2Size+1) & (q2'=queue2_push+0) & (newJob2'=false); - [] newJob2 & N>=2 -> 1 : (q2Size'=q2Size+1) & (q2'=queue2_push+1) & (newJob2'=false); - [] newJob2 & N>=3 -> 1 : (q2Size'=q2Size+1) & (q2'=queue2_push+2) & (newJob2'=false); - [] newJob2 & N>=4 -> 1 : (q2Size'=q2Size+1) & (q2'=queue2_push+3) & (newJob2'=false); - [] newJob2 & N>=5 -> 1 : (q2Size'=q2Size+1) & (q2'=queue2_push+4) & (newJob2'=false); - [] newJob2 & N>=6 -> 1 : (q2Size'=q2Size+1) & (q2'=queue2_push+5) & (newJob2'=false); - - [copy1] !newJob1 & !newJob2 & !queue1_empty & j=N -> 0.9 : (j'=queue1_head) & (q1Size'=q1Size-1) & (q1'=queue1_pop) + 0.1 : (j'=queue1_head); - [copy2] !newJob1 & !newJob2 & !queue2_empty & j=N -> 0.9 : (j'=queue2_head) & (q2Size'=q2Size-1) & (q2'=queue2_pop) + 0.1 : (j'=queue2_head); - -endmodule - - - -label "q1full" = q1Size=Q; -label "q2full" = q2Size=Q; -label "allqueuesfull" = q1Size=Q & q2Size=Q; - - -// Rewards adapted from Guck et al.: Modelling and Analysis of Markov Reward Automata - -rewards "processedjobs1" - [copy1] true : 0.1; -endrewards - -rewards "processedjobs2" - [copy1] true : 0.1; -endrewards - -rewards "processedjobs" - [copy1] true : 1; - [copy2] true : 1; -endrewards - -rewards "waiting1" - true : (q1Size); -endrewards - -rewards "waiting2" - true : (q2Size); -endrewards - -rewards "waiting" - true : (q1Size + q2Size); -endrewards \ No newline at end of file diff --git a/examples/multiobjective/ma/server/server.csl b/examples/multiobjective/ma/server/server.csl deleted file mode 100644 index 41a74ec79..000000000 --- a/examples/multiobjective/ma/server/server.csl +++ /dev/null @@ -1 +0,0 @@ -multi(Tmax=? [ F "error" ], Pmax=? [ F "processB" ]) diff --git a/examples/multiobjective/ma/server/server.ma b/examples/multiobjective/ma/server/server.ma deleted file mode 100644 index d82c32474..000000000 --- a/examples/multiobjective/ma/server/server.ma +++ /dev/null @@ -1,34 +0,0 @@ - -ma - -const double rateProcessing = 2; -const double rateA = 1; -const double rateB = 1; - -module server - - s : [0..5]; // current state: - // 0: wait for request - // 1: received request from A - // 2: received request from B - // 3: starting to process request of B - // 4: processing request - // 5: error - - - - <> s=0 -> rateA : (s'=1) + rateB : (s'=2); - [alpha] s=1 -> 1 : (s'=4); - [alpha] s=2 -> 1 : (s'=3); - [beta] s=2 -> 0.5 : (s'=0) + 0.5 : (s'=3); - [] s=3 -> 1 : (s'=4); - <> s=4 -> rateProcessing : (s'=0) + (rateA+rateB) : (s'=5); - <> s=5 -> 1 : true; - -endmodule - - -label "error" = (s=5); -label "processB" = (s=3); - - diff --git a/examples/multiobjective/ma/simple/simple.csl b/examples/multiobjective/ma/simple/simple.csl deleted file mode 100644 index 75452f1a2..000000000 --- a/examples/multiobjective/ma/simple/simple.csl +++ /dev/null @@ -1 +0,0 @@ -multi(Pmax=? [ F s=3 ], Pmax=? [ F s=4 ]) diff --git a/examples/multiobjective/ma/simple/simple.ma b/examples/multiobjective/ma/simple/simple.ma deleted file mode 100644 index 92a003555..000000000 --- a/examples/multiobjective/ma/simple/simple.ma +++ /dev/null @@ -1,15 +0,0 @@ - -ma - -module simple - - s : [0..4]; - - - [alpha] (s=0) -> 1 : (s' = 1); - [beta] (s=0) -> 0.8 : (s'=0) + 0.2 : (s'=2); - <> (s=1) -> 9 : (s'=0) + 1 : (s'=3); - <> (s=2) -> 12 : (s'=4); - <> (s>2) -> 1 : true; - -endmodule \ No newline at end of file diff --git a/examples/multiobjective/ma/stream/stream.ma b/examples/multiobjective/ma/stream/stream.ma deleted file mode 100644 index 9a657dd04..000000000 --- a/examples/multiobjective/ma/stream/stream.ma +++ /dev/null @@ -1,45 +0,0 @@ - -ma - -const int N; // num packages - -const double inRate = 4; -const double processingRate = 4; - -module streamingclient - - s : [0..3]; // current state: - // 0: decide whether to start - // 1: buffering - // 2: running - // 3: success - - n : [0..N]; // number of received packages - k : [0..N]; // number of processed packages - - [buffer] s=0 & n 1 : (s'=1); - [buffer] s=0 & n 0.99: (s'=1) + 0.01 : (s'=2) & (k'=k+1); - [start] s=0 & k 1 : (s'=2) & (k'=k+1); - - <> s=1 -> inRate : (n'=n+1) & (s'=0); - - <> s=2 & n inRate : (n'=n+1) + processingRate : (k'=k+1); - <> s=2 & n inRate : (n'=n+1) + processingRate : (s'=0); - <> s=2 & n=N & k processingRate : (k'=k+1); - <> s=2 & n=N & k=N -> processingRate : (s'=3); - - <> s=3 -> 1 : true; -endmodule - - -label "underrun" = (s=0 & k>0); -label "running" = (s=2); -label "done" = (s=3); - -rewards "buffering" - s=1 : 1; -endrewards - -rewards "numrestarts" - [start] k > 0 : 1; -endrewards diff --git a/examples/multiobjective/ma/stream/stream_bounded_pareto.csl b/examples/multiobjective/ma/stream/stream_bounded_pareto.csl deleted file mode 100644 index cdb98287f..000000000 --- a/examples/multiobjective/ma/stream/stream_bounded_pareto.csl +++ /dev/null @@ -1 +0,0 @@ -multi(Pmax=? [ F<=3.5 "done" ], Pmax=? [ F<=1 s=2 ]) diff --git a/examples/multiobjective/ma/stream/stream_mixed_pareto.csl b/examples/multiobjective/ma/stream/stream_mixed_pareto.csl deleted file mode 100644 index 8b4085015..000000000 --- a/examples/multiobjective/ma/stream/stream_mixed_pareto.csl +++ /dev/null @@ -1,2 +0,0 @@ -multi(Pmax=? [ F<=2.5 s=2], R{"numrestarts"}min=? [ F "done"]) -// best looking on stream50 diff --git a/examples/multiobjective/ma/stream/stream_unbounded_pareto.csl b/examples/multiobjective/ma/stream/stream_unbounded_pareto.csl deleted file mode 100644 index 12e469030..000000000 --- a/examples/multiobjective/ma/stream/stream_unbounded_pareto.csl +++ /dev/null @@ -1 +0,0 @@ -multi(R{"initialbuffering"}min=? [ F "done" ], R{"numRestarts"}min=? [ F "done" ]) diff --git a/examples/multiobjective/mdp/consensus/consensus2_3_2.nm b/examples/multiobjective/mdp/consensus/consensus2_3_2.nm deleted file mode 100644 index 8b602a4d7..000000000 --- a/examples/multiobjective/mdp/consensus/consensus2_3_2.nm +++ /dev/null @@ -1,88 +0,0 @@ -// model of randomised consensus - -mdp - -const int N = 2; // num processes -const int MAX = 3; // num rounds (R) -const int K = 2; // Parameter for coins - -// need to turn these into local copies later so the reading phase is complete? -formula leaders_agree1 = (p1=1 | r1 (p1'=1) & (r1'=1); - [] s1=0 & r1=0 -> (p1'=2) & (r1'=1); - - // read registers (currently does nothing because read vs from other processes - [] s1=0 & r1>0 & r1<=MAX -> (s1'=1); - // maxke a decision - [] s1=1 & decide1 -> (s1'=4) & (p1'=1); - [] s1=1 & decide2 -> (s1'=4) & (p1'=2); - [] s1=1 & r1 (s1'=0) & (p1'=1) & (r1'=r1+1); - [] s1=1 & r1 (s1'=0) & (p1'=2) & (r1'=r1+1); - [] s1=1 & r1 (s1'=2) & (p1'=0); - [] s1=1 & r1=MAX & !(decide1 | decide2) -> (s1'=5); // run out of rounds so error - // enter the coin procotol for the current round - [coin1_s1_start] s1=2 & r1=1 -> (s1'=3); - [coin2_s1_start] s1=2 & r1=2 -> (s1'=3); - // get response from the coin protocol - [coin1_s1_p1] s1=3 & r1=1 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin1_s1_p2] s1=3 & r1=1 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - [coin2_s1_p1] s1=3 & r1=2 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin2_s1_p2] s1=3 & r1=2 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - // done so loop - [done] s1>=4 -> true; - -endmodule - -module process2 = process1[ s1=s2, - p1=p2,p2=p1, - r1=r2,r2=r1, - coin1_s1_start=coin1_s2_start,coin2_s1_start=coin2_s2_start, - coin1_s1_p1=coin1_s2_p1,coin2_s1_p1=coin2_s2_p1, - coin1_s1_p2=coin1_s2_p2,coin2_s1_p2=coin2_s2_p2 ] -endmodule - -module coin1_error - - c1 : [0..1]; // 1 is the error state - v1 : [0..2]; // value of the coin returned the first time - - // first returned value (any processes) - [coin1_s1_p1] v1=0 -> (v1'=1); - [coin1_s2_p1] v1=0 -> (v1'=1); - [coin1_s1_p2] v1=0 -> (v1'=2); - [coin1_s2_p2] v1=0 -> (v1'=2); - // later values returned - [coin1_s1_p1] v1=1 -> true; // good behaviour - [coin1_s2_p1] v1=1 -> true; // good behaviour - [coin1_s1_p2] v1=2 -> true; // good behaviour - [coin1_s2_p2] v1=2 -> true; // good behaviour - [coin1_s1_p1] v1=2 -> (c1'=1); // error - [coin1_s2_p1] v1=2 -> (c1'=1); // error - [coin1_s1_p2] v1=1 -> (c1'=1); // error - [coin1_s2_p2] v1=1 -> (c1'=1); // error - -endmodule - -// coins 2 and 3 are of no use as there are not enough rounds afterwards to decide - -// Labels -label "one_proc_err" = (s1=5 | s2=5); -label "one_coin_ok" = (c1=0); diff --git a/examples/multiobjective/mdp/consensus/consensus2_3_2_numerical.pctl b/examples/multiobjective/mdp/consensus/consensus2_3_2_numerical.pctl deleted file mode 100644 index f7bb97443..000000000 --- a/examples/multiobjective/mdp/consensus/consensus2_3_2_numerical.pctl +++ /dev/null @@ -1 +0,0 @@ -multi(Pmax=? [ F "one_proc_err" ], P>=0.8916673903 [ G "one_coin_ok" ]) diff --git a/examples/multiobjective/mdp/consensus/consensus2_3_2_pareto.pctl b/examples/multiobjective/mdp/consensus/consensus2_3_2_pareto.pctl deleted file mode 100644 index 7cd298d8e..000000000 --- a/examples/multiobjective/mdp/consensus/consensus2_3_2_pareto.pctl +++ /dev/null @@ -1 +0,0 @@ -multi(Pmax=? [ F "one_proc_err" ], Pmax=? [ G "one_coin_ok" ]) diff --git a/examples/multiobjective/mdp/consensus/consensus2_4_2.nm b/examples/multiobjective/mdp/consensus/consensus2_4_2.nm deleted file mode 100644 index 02724ba6e..000000000 --- a/examples/multiobjective/mdp/consensus/consensus2_4_2.nm +++ /dev/null @@ -1,114 +0,0 @@ -// model of randomised consensus - -mdp - -const int N = 2; // num processes -const int MAX = 4; // num rounds (R) -const int K = 2; // Parameter for coins - -// need to turn these into local copies later so the reading phase is complete? -formula leaders_agree1 = (p1=1 | r1 (p1'=1) & (r1'=1); - [] s1=0 & r1=0 -> (p1'=2) & (r1'=1); - - // read registers (currently does nothing because read vs from other processes - [] s1=0 & r1>0 & r1<=MAX -> (s1'=1); - // maxke a decision - [] s1=1 & decide1 -> (s1'=4) & (p1'=1); - [] s1=1 & decide2 -> (s1'=4) & (p1'=2); - [] s1=1 & r1 (s1'=0) & (p1'=1) & (r1'=r1+1); - [] s1=1 & r1 (s1'=0) & (p1'=2) & (r1'=r1+1); - [] s1=1 & r1 (s1'=2) & (p1'=0); - [] s1=1 & r1=MAX & !(decide1 | decide2) -> (s1'=5); // run out of rounds so error - // enter the coin procotol for the current round - [coin1_s1_start] s1=2 & r1=1 -> (s1'=3); - [coin2_s1_start] s1=2 & r1=2 -> (s1'=3); - [coin3_s1_start] s1=2 & r1=3 -> (s1'=3); - // get response from the coin protocol - [coin1_s1_p1] s1=3 & r1=1 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin1_s1_p2] s1=3 & r1=1 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - [coin2_s1_p1] s1=3 & r1=2 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin2_s1_p2] s1=3 & r1=2 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - [coin3_s1_p1] s1=3 & r1=3 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin3_s1_p2] s1=3 & r1=3 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - // done so loop - [done] s1>=4 -> true; - -endmodule - -module process2 = process1[ s1=s2, - p1=p2,p2=p1, - r1=r2,r2=r1, - coin1_s1_start=coin1_s2_start,coin2_s1_start=coin2_s2_start,coin3_s1_start=coin3_s2_start, - coin1_s1_p1=coin1_s2_p1,coin2_s1_p1=coin2_s2_p1,coin3_s1_p1=coin3_s2_p1, - coin1_s1_p2=coin1_s2_p2,coin2_s1_p2=coin2_s2_p2,coin3_s1_p2=coin3_s2_p2 ] -endmodule - -module coin1_error - - c1 : [0..1]; // 1 is the error state - v1 : [0..2]; // value of the coin returned the first time - - // first returned value (any processes) - [coin1_s1_p1] v1=0 -> (v1'=1); - [coin1_s2_p1] v1=0 -> (v1'=1); - [coin1_s1_p2] v1=0 -> (v1'=2); - [coin1_s2_p2] v1=0 -> (v1'=2); - // later values returned - [coin1_s1_p1] v1=1 -> true; // good behaviour - [coin1_s2_p1] v1=1 -> true; // good behaviour - [coin1_s1_p2] v1=2 -> true; // good behaviour - [coin1_s2_p2] v1=2 -> true; // good behaviour - [coin1_s1_p1] v1=2 -> (c1'=1); // error - [coin1_s2_p1] v1=2 -> (c1'=1); // error - [coin1_s1_p2] v1=1 -> (c1'=1); // error - [coin1_s2_p2] v1=1 -> (c1'=1); // error - -endmodule - -// could do with renaming -module coin2_error - - c2 : [0..1]; // 1 is the error state - v2 : [0..2]; // value of the coin returned the first time - - // first returned value (any processes) - [coin2_s1_p1] v2=0 -> (v2'=1); - [coin2_s2_p1] v2=0 -> (v2'=1); - [coin2_s1_p2] v2=0 -> (v2'=2); - [coin2_s2_p2] v2=0 -> (v2'=2); - // later values returned - [coin2_s1_p1] v2=1 -> true; // good behaviour - [coin2_s2_p1] v2=1 -> true; // good behaviour - [coin2_s1_p2] v2=2 -> true; // good behaviour - [coin2_s2_p2] v2=2 -> true; // good behaviour - [coin2_s1_p1] v2=2 -> (c2'=1); // error - [coin2_s2_p1] v2=2 -> (c2'=1); // error - [coin2_s1_p2] v2=1 -> (c2'=1); // error - [coin2_s2_p2] v2=1 -> (c2'=1); // error - -endmodule - -// coin 3 is of no use because of number of rounds - -// Labels -label "one_proc_err" = (s1=5 | s2=5); -label "one_coin_ok" = (c1=0 | c2=0); diff --git a/examples/multiobjective/mdp/consensus/consensus2_4_2_numerical.pctl b/examples/multiobjective/mdp/consensus/consensus2_4_2_numerical.pctl deleted file mode 100644 index 62c7737ac..000000000 --- a/examples/multiobjective/mdp/consensus/consensus2_4_2_numerical.pctl +++ /dev/null @@ -1 +0,0 @@ -multi(Pmax=? [ F "one_proc_err" ], P>=0.9882640457 [ G "one_coin_ok" ]) diff --git a/examples/multiobjective/mdp/consensus/consensus2_4_2_pareto.pctl b/examples/multiobjective/mdp/consensus/consensus2_4_2_pareto.pctl deleted file mode 100644 index 7cd298d8e..000000000 --- a/examples/multiobjective/mdp/consensus/consensus2_4_2_pareto.pctl +++ /dev/null @@ -1 +0,0 @@ -multi(Pmax=? [ F "one_proc_err" ], Pmax=? [ G "one_coin_ok" ]) diff --git a/examples/multiobjective/mdp/consensus/consensus2_5_2.nm b/examples/multiobjective/mdp/consensus/consensus2_5_2.nm deleted file mode 100644 index 288579d38..000000000 --- a/examples/multiobjective/mdp/consensus/consensus2_5_2.nm +++ /dev/null @@ -1,140 +0,0 @@ -// model of randomised consensus - -mdp - -const int N = 2; // num processes -const int MAX = 5; // num rounds (R) -const int K = 2; // Parameter for coins - -// need to turn these into local copies later so the reading phase is complete? -formula leaders_agree1 = (p1=1 | r1 (p1'=1) & (r1'=1); - [] s1=0 & r1=0 -> (p1'=2) & (r1'=1); - - // read registers (currently does nothing because read vs from other processes - [] s1=0 & r1>0 & r1<=MAX -> (s1'=1); - // maxke a decision - [] s1=1 & decide1 -> (s1'=4) & (p1'=1); - [] s1=1 & decide2 -> (s1'=4) & (p1'=2); - [] s1=1 & r1 (s1'=0) & (p1'=1) & (r1'=r1+1); - [] s1=1 & r1 (s1'=0) & (p1'=2) & (r1'=r1+1); - [] s1=1 & r1 (s1'=2) & (p1'=0); - [] s1=1 & r1=MAX & !(decide1 | decide2) -> (s1'=5); // run out of rounds so error - // enter the coin procotol for the current round - [coin1_s1_start] s1=2 & r1=1 -> (s1'=3); - [coin2_s1_start] s1=2 & r1=2 -> (s1'=3); - [coin3_s1_start] s1=2 & r1=3 -> (s1'=3); - [coin4_s1_start] s1=2 & r1=4 -> (s1'=3); - // get response from the coin protocol - [coin1_s1_p1] s1=3 & r1=1 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin1_s1_p2] s1=3 & r1=1 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - [coin2_s1_p1] s1=3 & r1=2 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin2_s1_p2] s1=3 & r1=2 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - [coin3_s1_p1] s1=3 & r1=3 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin3_s1_p2] s1=3 & r1=3 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - [coin4_s1_p1] s1=3 & r1=4 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin4_s1_p2] s1=3 & r1=4 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - // done so loop - [done] s1>=4 -> true; - -endmodule - -module process2 = process1[ s1=s2, - p1=p2,p2=p1, - r1=r2,r2=r1, - coin1_s1_start=coin1_s2_start,coin2_s1_start=coin2_s2_start,coin3_s1_start=coin3_s2_start,coin4_s1_start=coin4_s2_start, - coin1_s1_p1=coin1_s2_p1,coin2_s1_p1=coin2_s2_p1,coin3_s1_p1=coin3_s2_p1,coin4_s1_p1=coin4_s2_p1, - coin1_s1_p2=coin1_s2_p2,coin2_s1_p2=coin2_s2_p2,coin3_s1_p2=coin3_s2_p2,coin4_s1_p2=coin4_s2_p2 ] -endmodule - -module coin1_error - - c1 : [0..1]; // 1 is the error state - v1 : [0..2]; // value of the coin returned the first time - - // first returned value (any processes) - [coin1_s1_p1] v1=0 -> (v1'=1); - [coin1_s2_p1] v1=0 -> (v1'=1); - [coin1_s1_p2] v1=0 -> (v1'=2); - [coin1_s2_p2] v1=0 -> (v1'=2); - // later values returned - [coin1_s1_p1] v1=1 -> true; // good behaviour - [coin1_s2_p1] v1=1 -> true; // good behaviour - [coin1_s1_p2] v1=2 -> true; // good behaviour - [coin1_s2_p2] v1=2 -> true; // good behaviour - [coin1_s1_p1] v1=2 -> (c1'=1); // error - [coin1_s2_p1] v1=2 -> (c1'=1); // error - [coin1_s1_p2] v1=1 -> (c1'=1); // error - [coin1_s2_p2] v1=1 -> (c1'=1); // error - -endmodule - -// could do with renaming -module coin2_error - - c2 : [0..1]; // 1 is the error state - v2 : [0..2]; // value of the coin returned the first time - - // first returned value (any processes) - [coin2_s1_p1] v2=0 -> (v2'=1); - [coin2_s2_p1] v2=0 -> (v2'=1); - [coin2_s1_p2] v2=0 -> (v2'=2); - [coin2_s2_p2] v2=0 -> (v2'=2); - // later values returned - [coin2_s1_p1] v2=1 -> true; // good behaviour - [coin2_s2_p1] v2=1 -> true; // good behaviour - [coin2_s1_p2] v2=2 -> true; // good behaviour - [coin2_s2_p2] v2=2 -> true; // good behaviour - [coin2_s1_p1] v2=2 -> (c2'=1); // error - [coin2_s2_p1] v2=2 -> (c2'=1); // error - [coin2_s1_p2] v2=1 -> (c2'=1); // error - [coin2_s2_p2] v2=1 -> (c2'=1); // error - -endmodule - -// could do with renaming -module coin3_error - - c3 : [0..1]; // 1 is the error state - v3 : [0..2]; // value of the coin returned the first time - - // first returned value (any processes) - [coin3_s1_p1] v3=0 -> (v3'=1); - [coin3_s2_p1] v3=0 -> (v3'=1); - [coin3_s1_p2] v3=0 -> (v3'=2); - [coin3_s2_p2] v3=0 -> (v3'=2); - // later values returned - [coin3_s1_p1] v3=1 -> true; // good behaviour - [coin3_s2_p1] v3=1 -> true; // good behaviour - [coin3_s1_p2] v3=2 -> true; // good behaviour - [coin3_s2_p2] v3=2 -> true; // good behaviour - [coin3_s1_p1] v3=2 -> (c3'=1); // error - [coin3_s2_p1] v3=2 -> (c3'=1); // error - [coin3_s1_p2] v3=1 -> (c3'=1); // error - [coin3_s2_p2] v3=1 -> (c3'=1); // error - -endmodule - -// coin 4 is of no use because of number of rounds - -// Labels -label "one_proc_err" = (s1=5 | s2=5); -label "one_coin_ok" = (c1=0 | c2=0 | c3=0); diff --git a/examples/multiobjective/mdp/consensus/consensus2_5_2_numerical.pctl b/examples/multiobjective/mdp/consensus/consensus2_5_2_numerical.pctl deleted file mode 100644 index 3b52e011e..000000000 --- a/examples/multiobjective/mdp/consensus/consensus2_5_2_numerical.pctl +++ /dev/null @@ -1 +0,0 @@ -multi(Pmax=? [ F "one_proc_err" ], P>=0.9987286134 [ G "one_coin_ok" ]) diff --git a/examples/multiobjective/mdp/consensus/consensus2_5_2_pareto.pctl b/examples/multiobjective/mdp/consensus/consensus2_5_2_pareto.pctl deleted file mode 100644 index 7cd298d8e..000000000 --- a/examples/multiobjective/mdp/consensus/consensus2_5_2_pareto.pctl +++ /dev/null @@ -1 +0,0 @@ -multi(Pmax=? [ F "one_proc_err" ], Pmax=? [ G "one_coin_ok" ]) diff --git a/examples/multiobjective/mdp/consensus/consensus3_3_2.nm b/examples/multiobjective/mdp/consensus/consensus3_3_2.nm deleted file mode 100644 index a7f06fbdf..000000000 --- a/examples/multiobjective/mdp/consensus/consensus3_3_2.nm +++ /dev/null @@ -1,100 +0,0 @@ -// model of randomised consensus - -mdp - -const int N = 3; // num processes -const int MAX = 3; // num rounds (R) -const int K = 2; // Parameter for coins - -// need to turn these into local copies later so the reading phase is complete? -formula leaders_agree1 = (p1=1 | r1 (p1'=1) & (r1'=1); - [] s1=0 & r1=0 -> (p1'=2) & (r1'=1); - - // read registers (currently does nothing because read vs from other processes - [] s1=0 & r1>0 & r1<=MAX -> (s1'=1); - // maxke a decision - [] s1=1 & decide1 -> (s1'=4) & (p1'=1); - [] s1=1 & decide2 -> (s1'=4) & (p1'=2); - [] s1=1 & r1 (s1'=0) & (p1'=1) & (r1'=r1+1); - [] s1=1 & r1 (s1'=0) & (p1'=2) & (r1'=r1+1); - [] s1=1 & r1 (s1'=2) & (p1'=0); - [] s1=1 & r1=MAX & !(decide1 | decide2) -> (s1'=5); // run out of rounds so error - // enter the coin procotol for the current round - [coin1_s1_start] s1=2 & r1=1 -> (s1'=3); - [coin2_s1_start] s1=2 & r1=2 -> (s1'=3); - // get response from the coin protocol - [coin1_s1_p1] s1=3 & r1=1 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin1_s1_p2] s1=3 & r1=1 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - [coin2_s1_p1] s1=3 & r1=2 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin2_s1_p2] s1=3 & r1=2 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - // done so loop - [done] s1>=4 -> true; - -endmodule - -module process2 = process1[ s1=s2, - p1=p2,p2=p3,p3=p1, - r1=r2,r2=r3,r3=r1, - coin1_s1_start=coin1_s2_start,coin2_s1_start=coin2_s2_start, - coin1_s1_p1=coin1_s2_p1,coin2_s1_p1=coin2_s2_p1, - coin1_s1_p2=coin1_s2_p2,coin2_s1_p2=coin2_s2_p2 ] -endmodule - -module process3 = process1[ s1=s3, - p1=p3,p2=p1,p3=p2, - r1=r3,r2=r1,r3=r2, - coin1_s1_start=coin1_s3_start,coin2_s1_start=coin2_s3_start, - coin1_s1_p1=coin1_s3_p1,coin2_s1_p1=coin2_s3_p1, - coin1_s1_p2=coin1_s3_p2,coin2_s1_p2=coin2_s3_p2 ] -endmodule - -module coin1_error - - c1 : [0..1]; // 1 is the error state - v1 : [0..2]; // value of the coin returned the first time - - // first returned value (any processes) - [coin1_s1_p1] v1=0 -> (v1'=1); - [coin1_s2_p1] v1=0 -> (v1'=1); - [coin1_s3_p1] v1=0 -> (v1'=1); - [coin1_s1_p2] v1=0 -> (v1'=2); - [coin1_s2_p2] v1=0 -> (v1'=2); - [coin1_s3_p2] v1=0 -> (v1'=2); - // later values returned - [coin1_s1_p1] v1=1 -> true; // good behaviour - [coin1_s2_p1] v1=1 -> true; // good behaviour - [coin1_s3_p1] v1=1 -> true; // good behaviour - [coin1_s1_p2] v1=2 -> true; // good behaviour - [coin1_s2_p2] v1=2 -> true; // good behaviour - [coin1_s3_p2] v1=2 -> true; // good behaviour - [coin1_s1_p1] v1=2 -> (c1'=1); // error - [coin1_s2_p1] v1=2 -> (c1'=1); // error - [coin1_s3_p1] v1=2 -> (c1'=1); // error - [coin1_s1_p2] v1=1 -> (c1'=1); // error - [coin1_s2_p2] v1=1 -> (c1'=1); // error - [coin1_s3_p2] v1=1 -> (c1'=1); // error - -endmodule - -// Labels -label "one_proc_err" = (s1=5 | s2=5 | s3=5); -label "one_coin_ok" = (c1=0); diff --git a/examples/multiobjective/mdp/consensus/consensus3_3_2_numerical.pctl b/examples/multiobjective/mdp/consensus/consensus3_3_2_numerical.pctl deleted file mode 100644 index 4e4f8e3f7..000000000 --- a/examples/multiobjective/mdp/consensus/consensus3_3_2_numerical.pctl +++ /dev/null @@ -1 +0,0 @@ -multi(Pmax=? [ F "one_proc_err" ], P>=0.7709112445 [ G "one_coin_ok" ]) diff --git a/examples/multiobjective/mdp/consensus/consensus3_3_2_pareto.pctl b/examples/multiobjective/mdp/consensus/consensus3_3_2_pareto.pctl deleted file mode 100644 index 7cd298d8e..000000000 --- a/examples/multiobjective/mdp/consensus/consensus3_3_2_pareto.pctl +++ /dev/null @@ -1 +0,0 @@ -multi(Pmax=? [ F "one_proc_err" ], Pmax=? [ G "one_coin_ok" ]) diff --git a/examples/multiobjective/mdp/consensus/consensus3_4_2.nm b/examples/multiobjective/mdp/consensus/consensus3_4_2.nm deleted file mode 100644 index abfc0ed1e..000000000 --- a/examples/multiobjective/mdp/consensus/consensus3_4_2.nm +++ /dev/null @@ -1,131 +0,0 @@ -// model of randomised consensus - -mdp - -const int N = 3; // num processes -const int MAX = 4; // num rounds (R) -const int K = 2; // Parameter for coins - -// need to turn these into local copies later so the reading phase is complete? -formula leaders_agree1 = (p1=1 | r1 (p1'=1) & (r1'=1); - [] s1=0 & r1=0 -> (p1'=2) & (r1'=1); - - // read registers (currently does nothing because read vs from other processes - [] s1=0 & r1>0 & r1<=MAX -> (s1'=1); - // maxke a decision - [] s1=1 & decide1 -> (s1'=4) & (p1'=1); - [] s1=1 & decide2 -> (s1'=4) & (p1'=2); - [] s1=1 & r1 (s1'=0) & (p1'=1) & (r1'=r1+1); - [] s1=1 & r1 (s1'=0) & (p1'=2) & (r1'=r1+1); - [] s1=1 & r1 (s1'=2) & (p1'=0); - [] s1=1 & r1=MAX & !(decide1 | decide2) -> (s1'=5); // run out of rounds so error - // enter the coin procotol for the current round - [coin1_s1_start] s1=2 & r1=1 -> (s1'=3); - [coin2_s1_start] s1=2 & r1=2 -> (s1'=3); - [coin3_s1_start] s1=2 & r1=3 -> (s1'=3); - // get response from the coin protocol - [coin1_s1_p1] s1=3 & r1=1 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin1_s1_p2] s1=3 & r1=1 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - [coin2_s1_p1] s1=3 & r1=2 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin2_s1_p2] s1=3 & r1=2 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - [coin3_s1_p1] s1=3 & r1=3 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin3_s1_p2] s1=3 & r1=3 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - // done so loop - [done] s1>=4 -> true; - -endmodule - -module process2 = process1[ s1=s2, - p1=p2,p2=p3,p3=p1, - r1=r2,r2=r3,r3=r1, - coin1_s1_start=coin1_s2_start,coin2_s1_start=coin2_s2_start,coin3_s1_start=coin3_s2_start, - coin1_s1_p1=coin1_s2_p1,coin2_s1_p1=coin2_s2_p1,coin3_s1_p1=coin3_s2_p1, - coin1_s1_p2=coin1_s2_p2,coin2_s1_p2=coin2_s2_p2,coin3_s1_p2=coin3_s2_p2 ] -endmodule - -module process3 = process1[ s1=s3, - p1=p3,p2=p1,p3=p2, - r1=r3,r2=r1,r3=r2, - coin1_s1_start=coin1_s3_start,coin2_s1_start=coin2_s3_start,coin3_s1_start=coin3_s3_start, - coin1_s1_p1=coin1_s3_p1,coin2_s1_p1=coin2_s3_p1,coin3_s1_p1=coin3_s3_p1, - coin1_s1_p2=coin1_s3_p2,coin2_s1_p2=coin2_s3_p2,coin3_s1_p2=coin3_s3_p2 ] -endmodule - -module coin1_error - - c1 : [0..1]; // 1 is the error state - v1 : [0..2]; // value of the coin returned the first time - - // first returned value (any processes) - [coin1_s1_p1] v1=0 -> (v1'=1); - [coin1_s2_p1] v1=0 -> (v1'=1); - [coin1_s3_p1] v1=0 -> (v1'=1); - [coin1_s1_p2] v1=0 -> (v1'=2); - [coin1_s2_p2] v1=0 -> (v1'=2); - [coin1_s3_p2] v1=0 -> (v1'=2); - // later values returned - [coin1_s1_p1] v1=1 -> true; // good behaviour - [coin1_s2_p1] v1=1 -> true; // good behaviour - [coin1_s3_p1] v1=1 -> true; // good behaviour - [coin1_s1_p2] v1=2 -> true; // good behaviour - [coin1_s2_p2] v1=2 -> true; // good behaviour - [coin1_s3_p2] v1=2 -> true; // good behaviour - [coin1_s1_p1] v1=2 -> (c1'=1); // error - [coin1_s2_p1] v1=2 -> (c1'=1); // error - [coin1_s3_p1] v1=2 -> (c1'=1); // error - [coin1_s1_p2] v1=1 -> (c1'=1); // error - [coin1_s2_p2] v1=1 -> (c1'=1); // error - [coin1_s3_p2] v1=1 -> (c1'=1); // error - -endmodule - -module coin2_error - - c2 : [0..1]; // 1 is the error state - v2 : [0..2]; // value of the coin returned the first time - - // first returned value (any processes) - [coin2_s1_p1] v2=0 -> (v2'=1); - [coin2_s2_p1] v2=0 -> (v2'=1); - [coin2_s3_p1] v2=0 -> (v2'=1); - [coin2_s1_p2] v2=0 -> (v2'=2); - [coin2_s2_p2] v2=0 -> (v2'=2); - [coin2_s3_p2] v2=0 -> (v2'=2); - // later values returned - [coin2_s1_p1] v2=1 -> true; // good behaviour - [coin2_s2_p1] v2=1 -> true; // good behaviour - [coin2_s3_p1] v2=1 -> true; // good behaviour - [coin2_s1_p2] v2=2 -> true; // good behaviour - [coin2_s2_p2] v2=2 -> true; // good behaviour - [coin2_s3_p2] v2=2 -> true; // good behaviour - [coin2_s1_p1] v2=2 -> (c2'=1); // error - [coin2_s2_p1] v2=2 -> (c2'=1); // error - [coin2_s3_p1] v2=2 -> (c2'=1); // error - [coin2_s1_p2] v2=1 -> (c2'=1); // error - [coin2_s2_p2] v2=1 -> (c2'=1); // error - [coin2_s3_p2] v2=1 -> (c2'=1); // error - -endmodule - -// Labels -label "one_proc_err" = (s1=5 | s2=5 | s3=5); -label "one_coin_ok" = (c1=0 | c2=0); diff --git a/examples/multiobjective/mdp/consensus/consensus3_4_2_numerical.pctl b/examples/multiobjective/mdp/consensus/consensus3_4_2_numerical.pctl deleted file mode 100644 index 31768966d..000000000 --- a/examples/multiobjective/mdp/consensus/consensus3_4_2_numerical.pctl +++ /dev/null @@ -1 +0,0 @@ -multi(Pmax=? [ F "one_proc_err" ], P>=0.9475183421 [ G "one_coin_ok" ]) diff --git a/examples/multiobjective/mdp/consensus/consensus3_4_2_pareto.pctl b/examples/multiobjective/mdp/consensus/consensus3_4_2_pareto.pctl deleted file mode 100644 index 7cd298d8e..000000000 --- a/examples/multiobjective/mdp/consensus/consensus3_4_2_pareto.pctl +++ /dev/null @@ -1 +0,0 @@ -multi(Pmax=? [ F "one_proc_err" ], Pmax=? [ G "one_coin_ok" ]) diff --git a/examples/multiobjective/mdp/consensus/consensus3_5_2.nm b/examples/multiobjective/mdp/consensus/consensus3_5_2.nm deleted file mode 100644 index cc9a7ebbf..000000000 --- a/examples/multiobjective/mdp/consensus/consensus3_5_2.nm +++ /dev/null @@ -1,162 +0,0 @@ -// model of randomised consensus - -mdp - -const int N = 3; // num processes -const int MAX = 5; // num rounds (R) -const int K = 2; // Parameter for coins - -// need to turn these into local copies later so the reading phase is complete? -formula leaders_agree1 = (p1=1 | r1 (p1'=1) & (r1'=1); - [] s1=0 & r1=0 -> (p1'=2) & (r1'=1); - - // read registers (currently does nothing because read vs from other processes - [] s1=0 & r1>0 & r1<=MAX -> (s1'=1); - // maxke a decision - [] s1=1 & decide1 -> (s1'=4) & (p1'=1); - [] s1=1 & decide2 -> (s1'=4) & (p1'=2); - [] s1=1 & r1 (s1'=0) & (p1'=1) & (r1'=r1+1); - [] s1=1 & r1 (s1'=0) & (p1'=2) & (r1'=r1+1); - [] s1=1 & r1 (s1'=2) & (p1'=0); - [] s1=1 & r1=MAX & !(decide1 | decide2) -> (s1'=5); // run out of rounds so error - // enter the coin procotol for the current round - [coin1_s1_start] s1=2 & r1=1 -> (s1'=3); - [coin2_s1_start] s1=2 & r1=2 -> (s1'=3); - [coin3_s1_start] s1=2 & r1=3 -> (s1'=3); - [coin4_s1_start] s1=2 & r1=4 -> (s1'=3); - // get response from the coin protocol - [coin1_s1_p1] s1=3 & r1=1 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin1_s1_p2] s1=3 & r1=1 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - [coin2_s1_p1] s1=3 & r1=2 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin2_s1_p2] s1=3 & r1=2 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - [coin3_s1_p1] s1=3 & r1=3 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin3_s1_p2] s1=3 & r1=3 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - [coin4_s1_p1] s1=3 & r1=4 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin4_s1_p2] s1=3 & r1=4 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - // done so loop - [done] s1>=4 -> true; - -endmodule - -module process2 = process1[ s1=s2, - p1=p2,p2=p3,p3=p1, - r1=r2,r2=r3,r3=r1, - coin1_s1_start=coin1_s2_start,coin2_s1_start=coin2_s2_start,coin3_s1_start=coin3_s2_start,coin4_s1_start=coin4_s2_start, - coin1_s1_p1=coin1_s2_p1,coin2_s1_p1=coin2_s2_p1,coin3_s1_p1=coin3_s2_p1,coin4_s1_p1=coin4_s2_p1, - coin1_s1_p2=coin1_s2_p2,coin2_s1_p2=coin2_s2_p2,coin3_s1_p2=coin3_s2_p2,coin4_s1_p2=coin4_s2_p2 ] -endmodule - -module process3 = process1[ s1=s3, - p1=p3,p2=p1,p3=p2, - r1=r3,r2=r1,r3=r2, - coin1_s1_start=coin1_s3_start,coin2_s1_start=coin2_s3_start,coin3_s1_start=coin3_s3_start,coin4_s1_start=coin4_s3_start, - coin1_s1_p1=coin1_s3_p1,coin2_s1_p1=coin2_s3_p1,coin3_s1_p1=coin3_s3_p1,coin4_s1_p1=coin4_s3_p1, - coin1_s1_p2=coin1_s3_p2,coin2_s1_p2=coin2_s3_p2,coin3_s1_p2=coin3_s3_p2,coin4_s1_p2=coin4_s3_p2 ] -endmodule - -module coin1_error - - c1 : [0..1]; // 1 is the error state - v1 : [0..2]; // value of the coin returned the first time - - // first returned value (any processes) - [coin1_s1_p1] v1=0 -> (v1'=1); - [coin1_s2_p1] v1=0 -> (v1'=1); - [coin1_s3_p1] v1=0 -> (v1'=1); - [coin1_s1_p2] v1=0 -> (v1'=2); - [coin1_s2_p2] v1=0 -> (v1'=2); - [coin1_s3_p2] v1=0 -> (v1'=2); - // later values returned - [coin1_s1_p1] v1=1 -> true; // good behaviour - [coin1_s2_p1] v1=1 -> true; // good behaviour - [coin1_s3_p1] v1=1 -> true; // good behaviour - [coin1_s1_p2] v1=2 -> true; // good behaviour - [coin1_s2_p2] v1=2 -> true; // good behaviour - [coin1_s3_p2] v1=2 -> true; // good behaviour - [coin1_s1_p1] v1=2 -> (c1'=1); // error - [coin1_s2_p1] v1=2 -> (c1'=1); // error - [coin1_s3_p1] v1=2 -> (c1'=1); // error - [coin1_s1_p2] v1=1 -> (c1'=1); // error - [coin1_s2_p2] v1=1 -> (c1'=1); // error - [coin1_s3_p2] v1=1 -> (c1'=1); // error - -endmodule - -module coin2_error - - c2 : [0..1]; // 1 is the error state - v2 : [0..2]; // value of the coin returned the first time - - // first returned value (any processes) - [coin2_s1_p1] v2=0 -> (v2'=1); - [coin2_s2_p1] v2=0 -> (v2'=1); - [coin2_s3_p1] v2=0 -> (v2'=1); - [coin2_s1_p2] v2=0 -> (v2'=2); - [coin2_s2_p2] v2=0 -> (v2'=2); - [coin2_s3_p2] v2=0 -> (v2'=2); - // later values returned - [coin2_s1_p1] v2=1 -> true; // good behaviour - [coin2_s2_p1] v2=1 -> true; // good behaviour - [coin2_s3_p1] v2=1 -> true; // good behaviour - [coin2_s1_p2] v2=2 -> true; // good behaviour - [coin2_s2_p2] v2=2 -> true; // good behaviour - [coin2_s3_p2] v2=2 -> true; // good behaviour - [coin2_s1_p1] v2=2 -> (c2'=1); // error - [coin2_s2_p1] v2=2 -> (c2'=1); // error - [coin2_s3_p1] v2=2 -> (c2'=1); // error - [coin2_s1_p2] v2=1 -> (c2'=1); // error - [coin2_s2_p2] v2=1 -> (c2'=1); // error - [coin2_s3_p2] v2=1 -> (c2'=1); // error - -endmodule - -module coin3_error - - c3 : [0..1]; // 1 is the error state - v3 : [0..2]; // value of the coin returned the first time - - // first returned value (any processes) - [coin3_s1_p1] v3=0 -> (v3'=1); - [coin3_s2_p1] v3=0 -> (v3'=1); - [coin3_s3_p1] v3=0 -> (v3'=1); - [coin3_s1_p2] v3=0 -> (v3'=2); - [coin3_s2_p2] v3=0 -> (v3'=2); - [coin3_s3_p2] v3=0 -> (v3'=2); - // later values returned - [coin3_s1_p1] v3=1 -> true; // good behaviour - [coin3_s2_p1] v3=1 -> true; // good behaviour - [coin3_s3_p1] v3=1 -> true; // good behaviour - [coin3_s1_p2] v3=2 -> true; // good behaviour - [coin3_s2_p2] v3=2 -> true; // good behaviour - [coin3_s3_p2] v3=2 -> true; // good behaviour - [coin3_s1_p1] v3=2 -> (c3'=1); // error - [coin3_s2_p1] v3=2 -> (c3'=1); // error - [coin3_s3_p1] v3=2 -> (c3'=1); // error - [coin3_s1_p2] v3=1 -> (c3'=1); // error - [coin3_s2_p2] v3=1 -> (c3'=1); // error - [coin3_s3_p2] v3=1 -> (c3'=1); // error - -endmodule - -// Labels -label "one_proc_err" = (s1=5 | s2=5 | s3=5); -label "one_coin_ok" = (c1=0 | c2=0 | c3=0); diff --git a/examples/multiobjective/mdp/consensus/consensus3_5_2_numerical.pctl b/examples/multiobjective/mdp/consensus/consensus3_5_2_numerical.pctl deleted file mode 100644 index 6a3113398..000000000 --- a/examples/multiobjective/mdp/consensus/consensus3_5_2_numerical.pctl +++ /dev/null @@ -1 +0,0 @@ -multi(Pmax=? [ F "one_proc_err" ], P>=0.9879770423 [ G "one_coin_ok" ]) diff --git a/examples/multiobjective/mdp/consensus/consensus3_5_2_pareto.pctl b/examples/multiobjective/mdp/consensus/consensus3_5_2_pareto.pctl deleted file mode 100644 index 7cd298d8e..000000000 --- a/examples/multiobjective/mdp/consensus/consensus3_5_2_pareto.pctl +++ /dev/null @@ -1 +0,0 @@ -multi(Pmax=? [ F "one_proc_err" ], Pmax=? [ G "one_coin_ok" ]) diff --git a/examples/multiobjective/mdp/consensus/origFiles/consensus2_multi3.nm b/examples/multiobjective/mdp/consensus/origFiles/consensus2_multi3.nm deleted file mode 100644 index dbf9dec0f..000000000 --- a/examples/multiobjective/mdp/consensus/origFiles/consensus2_multi3.nm +++ /dev/null @@ -1,87 +0,0 @@ -// model of randomised consensus - -mdp - -const int N = 2; // num processes -const int MAX = 3; // num rounds (R) - -// need to turn these into local copies later so the reading phase is complete? -formula leaders_agree1 = (p1=1 | r1 (p1'=1) & (r1'=1); - [] s1=0 & r1=0 -> (p1'=2) & (r1'=1); - - // read registers (currently does nothing because read vs from other processes - [] s1=0 & r1>0 & r1<=MAX -> (s1'=1); - // maxke a decision - [] s1=1 & decide1 -> (s1'=4) & (p1'=1); - [] s1=1 & decide2 -> (s1'=4) & (p1'=2); - [] s1=1 & r1 (s1'=0) & (p1'=1) & (r1'=r1+1); - [] s1=1 & r1 (s1'=0) & (p1'=2) & (r1'=r1+1); - [] s1=1 & r1 (s1'=2) & (p1'=0); - [] s1=1 & r1=MAX & !(decide1 | decide2) -> (s1'=5); // run out of rounds so error - // enter the coin procotol for the current round - [coin1_s1_start] s1=2 & r1=1 -> (s1'=3); - [coin2_s1_start] s1=2 & r1=2 -> (s1'=3); - // get response from the coin protocol - [coin1_s1_p1] s1=3 & r1=1 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin1_s1_p2] s1=3 & r1=1 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - [coin2_s1_p1] s1=3 & r1=2 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin2_s1_p2] s1=3 & r1=2 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - // done so loop - [done] s1>=4 -> true; - -endmodule - -module process2 = process1[ s1=s2, - p1=p2,p2=p1, - r1=r2,r2=r1, - coin1_s1_start=coin1_s2_start,coin2_s1_start=coin2_s2_start, - coin1_s1_p1=coin1_s2_p1,coin2_s1_p1=coin2_s2_p1, - coin1_s1_p2=coin1_s2_p2,coin2_s1_p2=coin2_s2_p2 ] -endmodule - -module coin1_error - - c1 : [0..1]; // 1 is the error state - v1 : [0..2]; // value of the coin returned the first time - - // first returned value (any processes) - [coin1_s1_p1] v1=0 -> (v1'=1); - [coin1_s2_p1] v1=0 -> (v1'=1); - [coin1_s1_p2] v1=0 -> (v1'=2); - [coin1_s2_p2] v1=0 -> (v1'=2); - // later values returned - [coin1_s1_p1] v1=1 -> true; // good behaviour - [coin1_s2_p1] v1=1 -> true; // good behaviour - [coin1_s1_p2] v1=2 -> true; // good behaviour - [coin1_s2_p2] v1=2 -> true; // good behaviour - [coin1_s1_p1] v1=2 -> (c1'=1); // error - [coin1_s2_p1] v1=2 -> (c1'=1); // error - [coin1_s1_p2] v1=1 -> (c1'=1); // error - [coin1_s2_p2] v1=1 -> (c1'=1); // error - -endmodule - -// coins 2 and 3 are of no use as there are not enough rounds afterwards to decide - -// Labels -label "one_proc_err" = (s1=5 | s2=5); -label "one_coin_ok" = (c1=0); diff --git a/examples/multiobjective/mdp/consensus/origFiles/consensus2_multi4.nm b/examples/multiobjective/mdp/consensus/origFiles/consensus2_multi4.nm deleted file mode 100644 index 75f6e8a4d..000000000 --- a/examples/multiobjective/mdp/consensus/origFiles/consensus2_multi4.nm +++ /dev/null @@ -1,113 +0,0 @@ -// model of randomised consensus - -mdp - -const int N = 2; // num processes -const int MAX = 4; // num rounds (R) - -// need to turn these into local copies later so the reading phase is complete? -formula leaders_agree1 = (p1=1 | r1 (p1'=1) & (r1'=1); - [] s1=0 & r1=0 -> (p1'=2) & (r1'=1); - - // read registers (currently does nothing because read vs from other processes - [] s1=0 & r1>0 & r1<=MAX -> (s1'=1); - // maxke a decision - [] s1=1 & decide1 -> (s1'=4) & (p1'=1); - [] s1=1 & decide2 -> (s1'=4) & (p1'=2); - [] s1=1 & r1 (s1'=0) & (p1'=1) & (r1'=r1+1); - [] s1=1 & r1 (s1'=0) & (p1'=2) & (r1'=r1+1); - [] s1=1 & r1 (s1'=2) & (p1'=0); - [] s1=1 & r1=MAX & !(decide1 | decide2) -> (s1'=5); // run out of rounds so error - // enter the coin procotol for the current round - [coin1_s1_start] s1=2 & r1=1 -> (s1'=3); - [coin2_s1_start] s1=2 & r1=2 -> (s1'=3); - [coin3_s1_start] s1=2 & r1=3 -> (s1'=3); - // get response from the coin protocol - [coin1_s1_p1] s1=3 & r1=1 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin1_s1_p2] s1=3 & r1=1 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - [coin2_s1_p1] s1=3 & r1=2 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin2_s1_p2] s1=3 & r1=2 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - [coin3_s1_p1] s1=3 & r1=3 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin3_s1_p2] s1=3 & r1=3 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - // done so loop - [done] s1>=4 -> true; - -endmodule - -module process2 = process1[ s1=s2, - p1=p2,p2=p1, - r1=r2,r2=r1, - coin1_s1_start=coin1_s2_start,coin2_s1_start=coin2_s2_start,coin3_s1_start=coin3_s2_start, - coin1_s1_p1=coin1_s2_p1,coin2_s1_p1=coin2_s2_p1,coin3_s1_p1=coin3_s2_p1, - coin1_s1_p2=coin1_s2_p2,coin2_s1_p2=coin2_s2_p2,coin3_s1_p2=coin3_s2_p2 ] -endmodule - -module coin1_error - - c1 : [0..1]; // 1 is the error state - v1 : [0..2]; // value of the coin returned the first time - - // first returned value (any processes) - [coin1_s1_p1] v1=0 -> (v1'=1); - [coin1_s2_p1] v1=0 -> (v1'=1); - [coin1_s1_p2] v1=0 -> (v1'=2); - [coin1_s2_p2] v1=0 -> (v1'=2); - // later values returned - [coin1_s1_p1] v1=1 -> true; // good behaviour - [coin1_s2_p1] v1=1 -> true; // good behaviour - [coin1_s1_p2] v1=2 -> true; // good behaviour - [coin1_s2_p2] v1=2 -> true; // good behaviour - [coin1_s1_p1] v1=2 -> (c1'=1); // error - [coin1_s2_p1] v1=2 -> (c1'=1); // error - [coin1_s1_p2] v1=1 -> (c1'=1); // error - [coin1_s2_p2] v1=1 -> (c1'=1); // error - -endmodule - -// could do with renaming -module coin2_error - - c2 : [0..1]; // 1 is the error state - v2 : [0..2]; // value of the coin returned the first time - - // first returned value (any processes) - [coin2_s1_p1] v2=0 -> (v2'=1); - [coin2_s2_p1] v2=0 -> (v2'=1); - [coin2_s1_p2] v2=0 -> (v2'=2); - [coin2_s2_p2] v2=0 -> (v2'=2); - // later values returned - [coin2_s1_p1] v2=1 -> true; // good behaviour - [coin2_s2_p1] v2=1 -> true; // good behaviour - [coin2_s1_p2] v2=2 -> true; // good behaviour - [coin2_s2_p2] v2=2 -> true; // good behaviour - [coin2_s1_p1] v2=2 -> (c2'=1); // error - [coin2_s2_p1] v2=2 -> (c2'=1); // error - [coin2_s1_p2] v2=1 -> (c2'=1); // error - [coin2_s2_p2] v2=1 -> (c2'=1); // error - -endmodule - -// coin 3 is of no use because of number of rounds - -// Labels -label "one_proc_err" = (s1=5 | s2=5); -label "one_coin_ok" = (c1=0 | c2=0); diff --git a/examples/multiobjective/mdp/consensus/origFiles/consensus2_multi5.nm b/examples/multiobjective/mdp/consensus/origFiles/consensus2_multi5.nm deleted file mode 100644 index a8a7aff6e..000000000 --- a/examples/multiobjective/mdp/consensus/origFiles/consensus2_multi5.nm +++ /dev/null @@ -1,139 +0,0 @@ -// model of randomised consensus - -mdp - -const int N = 2; // num processes -const int MAX = 5; // num rounds (R) - -// need to turn these into local copies later so the reading phase is complete? -formula leaders_agree1 = (p1=1 | r1 (p1'=1) & (r1'=1); - [] s1=0 & r1=0 -> (p1'=2) & (r1'=1); - - // read registers (currently does nothing because read vs from other processes - [] s1=0 & r1>0 & r1<=MAX -> (s1'=1); - // maxke a decision - [] s1=1 & decide1 -> (s1'=4) & (p1'=1); - [] s1=1 & decide2 -> (s1'=4) & (p1'=2); - [] s1=1 & r1 (s1'=0) & (p1'=1) & (r1'=r1+1); - [] s1=1 & r1 (s1'=0) & (p1'=2) & (r1'=r1+1); - [] s1=1 & r1 (s1'=2) & (p1'=0); - [] s1=1 & r1=MAX & !(decide1 | decide2) -> (s1'=5); // run out of rounds so error - // enter the coin procotol for the current round - [coin1_s1_start] s1=2 & r1=1 -> (s1'=3); - [coin2_s1_start] s1=2 & r1=2 -> (s1'=3); - [coin3_s1_start] s1=2 & r1=3 -> (s1'=3); - [coin4_s1_start] s1=2 & r1=4 -> (s1'=3); - // get response from the coin protocol - [coin1_s1_p1] s1=3 & r1=1 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin1_s1_p2] s1=3 & r1=1 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - [coin2_s1_p1] s1=3 & r1=2 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin2_s1_p2] s1=3 & r1=2 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - [coin3_s1_p1] s1=3 & r1=3 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin3_s1_p2] s1=3 & r1=3 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - [coin4_s1_p1] s1=3 & r1=4 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin4_s1_p2] s1=3 & r1=4 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - // done so loop - [done] s1>=4 -> true; - -endmodule - -module process2 = process1[ s1=s2, - p1=p2,p2=p1, - r1=r2,r2=r1, - coin1_s1_start=coin1_s2_start,coin2_s1_start=coin2_s2_start,coin3_s1_start=coin3_s2_start,coin4_s1_start=coin4_s2_start, - coin1_s1_p1=coin1_s2_p1,coin2_s1_p1=coin2_s2_p1,coin3_s1_p1=coin3_s2_p1,coin4_s1_p1=coin4_s2_p1, - coin1_s1_p2=coin1_s2_p2,coin2_s1_p2=coin2_s2_p2,coin3_s1_p2=coin3_s2_p2,coin4_s1_p2=coin4_s2_p2 ] -endmodule - -module coin1_error - - c1 : [0..1]; // 1 is the error state - v1 : [0..2]; // value of the coin returned the first time - - // first returned value (any processes) - [coin1_s1_p1] v1=0 -> (v1'=1); - [coin1_s2_p1] v1=0 -> (v1'=1); - [coin1_s1_p2] v1=0 -> (v1'=2); - [coin1_s2_p2] v1=0 -> (v1'=2); - // later values returned - [coin1_s1_p1] v1=1 -> true; // good behaviour - [coin1_s2_p1] v1=1 -> true; // good behaviour - [coin1_s1_p2] v1=2 -> true; // good behaviour - [coin1_s2_p2] v1=2 -> true; // good behaviour - [coin1_s1_p1] v1=2 -> (c1'=1); // error - [coin1_s2_p1] v1=2 -> (c1'=1); // error - [coin1_s1_p2] v1=1 -> (c1'=1); // error - [coin1_s2_p2] v1=1 -> (c1'=1); // error - -endmodule - -// could do with renaming -module coin2_error - - c2 : [0..1]; // 1 is the error state - v2 : [0..2]; // value of the coin returned the first time - - // first returned value (any processes) - [coin2_s1_p1] v2=0 -> (v2'=1); - [coin2_s2_p1] v2=0 -> (v2'=1); - [coin2_s1_p2] v2=0 -> (v2'=2); - [coin2_s2_p2] v2=0 -> (v2'=2); - // later values returned - [coin2_s1_p1] v2=1 -> true; // good behaviour - [coin2_s2_p1] v2=1 -> true; // good behaviour - [coin2_s1_p2] v2=2 -> true; // good behaviour - [coin2_s2_p2] v2=2 -> true; // good behaviour - [coin2_s1_p1] v2=2 -> (c2'=1); // error - [coin2_s2_p1] v2=2 -> (c2'=1); // error - [coin2_s1_p2] v2=1 -> (c2'=1); // error - [coin2_s2_p2] v2=1 -> (c2'=1); // error - -endmodule - -// could do with renaming -module coin3_error - - c3 : [0..1]; // 1 is the error state - v3 : [0..2]; // value of the coin returned the first time - - // first returned value (any processes) - [coin3_s1_p1] v3=0 -> (v3'=1); - [coin3_s2_p1] v3=0 -> (v3'=1); - [coin3_s1_p2] v3=0 -> (v3'=2); - [coin3_s2_p2] v3=0 -> (v3'=2); - // later values returned - [coin3_s1_p1] v3=1 -> true; // good behaviour - [coin3_s2_p1] v3=1 -> true; // good behaviour - [coin3_s1_p2] v3=2 -> true; // good behaviour - [coin3_s2_p2] v3=2 -> true; // good behaviour - [coin3_s1_p1] v3=2 -> (c3'=1); // error - [coin3_s2_p1] v3=2 -> (c3'=1); // error - [coin3_s1_p2] v3=1 -> (c3'=1); // error - [coin3_s2_p2] v3=1 -> (c3'=1); // error - -endmodule - -// coin 4 is of no use because of number of rounds - -// Labels -label "one_proc_err" = (s1=5 | s2=5); -label "one_coin_ok" = (c1=0 | c2=0 | c3=0); diff --git a/examples/multiobjective/mdp/consensus/origFiles/consensus3_multi3.nm b/examples/multiobjective/mdp/consensus/origFiles/consensus3_multi3.nm deleted file mode 100644 index 4b1e95373..000000000 --- a/examples/multiobjective/mdp/consensus/origFiles/consensus3_multi3.nm +++ /dev/null @@ -1,99 +0,0 @@ -// model of randomised consensus - -mdp - -const int N = 3; // num processes -const int MAX = 3; // num rounds (R) - -// need to turn these into local copies later so the reading phase is complete? -formula leaders_agree1 = (p1=1 | r1 (p1'=1) & (r1'=1); - [] s1=0 & r1=0 -> (p1'=2) & (r1'=1); - - // read registers (currently does nothing because read vs from other processes - [] s1=0 & r1>0 & r1<=MAX -> (s1'=1); - // maxke a decision - [] s1=1 & decide1 -> (s1'=4) & (p1'=1); - [] s1=1 & decide2 -> (s1'=4) & (p1'=2); - [] s1=1 & r1 (s1'=0) & (p1'=1) & (r1'=r1+1); - [] s1=1 & r1 (s1'=0) & (p1'=2) & (r1'=r1+1); - [] s1=1 & r1 (s1'=2) & (p1'=0); - [] s1=1 & r1=MAX & !(decide1 | decide2) -> (s1'=5); // run out of rounds so error - // enter the coin procotol for the current round - [coin1_s1_start] s1=2 & r1=1 -> (s1'=3); - [coin2_s1_start] s1=2 & r1=2 -> (s1'=3); - // get response from the coin protocol - [coin1_s1_p1] s1=3 & r1=1 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin1_s1_p2] s1=3 & r1=1 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - [coin2_s1_p1] s1=3 & r1=2 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin2_s1_p2] s1=3 & r1=2 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - // done so loop - [done] s1>=4 -> true; - -endmodule - -module process2 = process1[ s1=s2, - p1=p2,p2=p3,p3=p1, - r1=r2,r2=r3,r3=r1, - coin1_s1_start=coin1_s2_start,coin2_s1_start=coin2_s2_start, - coin1_s1_p1=coin1_s2_p1,coin2_s1_p1=coin2_s2_p1, - coin1_s1_p2=coin1_s2_p2,coin2_s1_p2=coin2_s2_p2 ] -endmodule - -module process3 = process1[ s1=s3, - p1=p3,p2=p1,p3=p2, - r1=r3,r2=r1,r3=r2, - coin1_s1_start=coin1_s3_start,coin2_s1_start=coin2_s3_start, - coin1_s1_p1=coin1_s3_p1,coin2_s1_p1=coin2_s3_p1, - coin1_s1_p2=coin1_s3_p2,coin2_s1_p2=coin2_s3_p2 ] -endmodule - -module coin1_error - - c1 : [0..1]; // 1 is the error state - v1 : [0..2]; // value of the coin returned the first time - - // first returned value (any processes) - [coin1_s1_p1] v1=0 -> (v1'=1); - [coin1_s2_p1] v1=0 -> (v1'=1); - [coin1_s3_p1] v1=0 -> (v1'=1); - [coin1_s1_p2] v1=0 -> (v1'=2); - [coin1_s2_p2] v1=0 -> (v1'=2); - [coin1_s3_p2] v1=0 -> (v1'=2); - // later values returned - [coin1_s1_p1] v1=1 -> true; // good behaviour - [coin1_s2_p1] v1=1 -> true; // good behaviour - [coin1_s3_p1] v1=1 -> true; // good behaviour - [coin1_s1_p2] v1=2 -> true; // good behaviour - [coin1_s2_p2] v1=2 -> true; // good behaviour - [coin1_s3_p2] v1=2 -> true; // good behaviour - [coin1_s1_p1] v1=2 -> (c1'=1); // error - [coin1_s2_p1] v1=2 -> (c1'=1); // error - [coin1_s3_p1] v1=2 -> (c1'=1); // error - [coin1_s1_p2] v1=1 -> (c1'=1); // error - [coin1_s2_p2] v1=1 -> (c1'=1); // error - [coin1_s3_p2] v1=1 -> (c1'=1); // error - -endmodule - -// Labels -label "one_proc_err" = (s1=5 | s2=5 | s3=5); -label "one_coin_ok" = (c1=0); diff --git a/examples/multiobjective/mdp/consensus/origFiles/consensus3_multi4.nm b/examples/multiobjective/mdp/consensus/origFiles/consensus3_multi4.nm deleted file mode 100644 index 052114d1d..000000000 --- a/examples/multiobjective/mdp/consensus/origFiles/consensus3_multi4.nm +++ /dev/null @@ -1,130 +0,0 @@ -// model of randomised consensus - -mdp - -const int N = 3; // num processes -const int MAX = 4; // num rounds (R) - -// need to turn these into local copies later so the reading phase is complete? -formula leaders_agree1 = (p1=1 | r1 (p1'=1) & (r1'=1); - [] s1=0 & r1=0 -> (p1'=2) & (r1'=1); - - // read registers (currently does nothing because read vs from other processes - [] s1=0 & r1>0 & r1<=MAX -> (s1'=1); - // maxke a decision - [] s1=1 & decide1 -> (s1'=4) & (p1'=1); - [] s1=1 & decide2 -> (s1'=4) & (p1'=2); - [] s1=1 & r1 (s1'=0) & (p1'=1) & (r1'=r1+1); - [] s1=1 & r1 (s1'=0) & (p1'=2) & (r1'=r1+1); - [] s1=1 & r1 (s1'=2) & (p1'=0); - [] s1=1 & r1=MAX & !(decide1 | decide2) -> (s1'=5); // run out of rounds so error - // enter the coin procotol for the current round - [coin1_s1_start] s1=2 & r1=1 -> (s1'=3); - [coin2_s1_start] s1=2 & r1=2 -> (s1'=3); - [coin3_s1_start] s1=2 & r1=3 -> (s1'=3); - // get response from the coin protocol - [coin1_s1_p1] s1=3 & r1=1 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin1_s1_p2] s1=3 & r1=1 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - [coin2_s1_p1] s1=3 & r1=2 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin2_s1_p2] s1=3 & r1=2 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - [coin3_s1_p1] s1=3 & r1=3 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin3_s1_p2] s1=3 & r1=3 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - // done so loop - [done] s1>=4 -> true; - -endmodule - -module process2 = process1[ s1=s2, - p1=p2,p2=p3,p3=p1, - r1=r2,r2=r3,r3=r1, - coin1_s1_start=coin1_s2_start,coin2_s1_start=coin2_s2_start,coin3_s1_start=coin3_s2_start, - coin1_s1_p1=coin1_s2_p1,coin2_s1_p1=coin2_s2_p1,coin3_s1_p1=coin3_s2_p1, - coin1_s1_p2=coin1_s2_p2,coin2_s1_p2=coin2_s2_p2,coin3_s1_p2=coin3_s2_p2 ] -endmodule - -module process3 = process1[ s1=s3, - p1=p3,p2=p1,p3=p2, - r1=r3,r2=r1,r3=r2, - coin1_s1_start=coin1_s3_start,coin2_s1_start=coin2_s3_start,coin3_s1_start=coin3_s3_start, - coin1_s1_p1=coin1_s3_p1,coin2_s1_p1=coin2_s3_p1,coin3_s1_p1=coin3_s3_p1, - coin1_s1_p2=coin1_s3_p2,coin2_s1_p2=coin2_s3_p2,coin3_s1_p2=coin3_s3_p2 ] -endmodule - -module coin1_error - - c1 : [0..1]; // 1 is the error state - v1 : [0..2]; // value of the coin returned the first time - - // first returned value (any processes) - [coin1_s1_p1] v1=0 -> (v1'=1); - [coin1_s2_p1] v1=0 -> (v1'=1); - [coin1_s3_p1] v1=0 -> (v1'=1); - [coin1_s1_p2] v1=0 -> (v1'=2); - [coin1_s2_p2] v1=0 -> (v1'=2); - [coin1_s3_p2] v1=0 -> (v1'=2); - // later values returned - [coin1_s1_p1] v1=1 -> true; // good behaviour - [coin1_s2_p1] v1=1 -> true; // good behaviour - [coin1_s3_p1] v1=1 -> true; // good behaviour - [coin1_s1_p2] v1=2 -> true; // good behaviour - [coin1_s2_p2] v1=2 -> true; // good behaviour - [coin1_s3_p2] v1=2 -> true; // good behaviour - [coin1_s1_p1] v1=2 -> (c1'=1); // error - [coin1_s2_p1] v1=2 -> (c1'=1); // error - [coin1_s3_p1] v1=2 -> (c1'=1); // error - [coin1_s1_p2] v1=1 -> (c1'=1); // error - [coin1_s2_p2] v1=1 -> (c1'=1); // error - [coin1_s3_p2] v1=1 -> (c1'=1); // error - -endmodule - -module coin2_error - - c2 : [0..1]; // 1 is the error state - v2 : [0..2]; // value of the coin returned the first time - - // first returned value (any processes) - [coin2_s1_p1] v2=0 -> (v2'=1); - [coin2_s2_p1] v2=0 -> (v2'=1); - [coin2_s3_p1] v2=0 -> (v2'=1); - [coin2_s1_p2] v2=0 -> (v2'=2); - [coin2_s2_p2] v2=0 -> (v2'=2); - [coin2_s3_p2] v2=0 -> (v2'=2); - // later values returned - [coin2_s1_p1] v2=1 -> true; // good behaviour - [coin2_s2_p1] v2=1 -> true; // good behaviour - [coin2_s3_p1] v2=1 -> true; // good behaviour - [coin2_s1_p2] v2=2 -> true; // good behaviour - [coin2_s2_p2] v2=2 -> true; // good behaviour - [coin2_s3_p2] v2=2 -> true; // good behaviour - [coin2_s1_p1] v2=2 -> (c2'=1); // error - [coin2_s2_p1] v2=2 -> (c2'=1); // error - [coin2_s3_p1] v2=2 -> (c2'=1); // error - [coin2_s1_p2] v2=1 -> (c2'=1); // error - [coin2_s2_p2] v2=1 -> (c2'=1); // error - [coin2_s3_p2] v2=1 -> (c2'=1); // error - -endmodule - -// Labels -label "one_proc_err" = (s1=5 | s2=5 | s3=5); -label "one_coin_ok" = (c1=0 | c2=0); diff --git a/examples/multiobjective/mdp/consensus/origFiles/consensus3_multi5.nm b/examples/multiobjective/mdp/consensus/origFiles/consensus3_multi5.nm deleted file mode 100644 index 8097dc437..000000000 --- a/examples/multiobjective/mdp/consensus/origFiles/consensus3_multi5.nm +++ /dev/null @@ -1,161 +0,0 @@ -// model of randomised consensus - -mdp - -const int N = 3; // num processes -const int MAX = 5; // num rounds (R) - -// need to turn these into local copies later so the reading phase is complete? -formula leaders_agree1 = (p1=1 | r1 (p1'=1) & (r1'=1); - [] s1=0 & r1=0 -> (p1'=2) & (r1'=1); - - // read registers (currently does nothing because read vs from other processes - [] s1=0 & r1>0 & r1<=MAX -> (s1'=1); - // maxke a decision - [] s1=1 & decide1 -> (s1'=4) & (p1'=1); - [] s1=1 & decide2 -> (s1'=4) & (p1'=2); - [] s1=1 & r1 (s1'=0) & (p1'=1) & (r1'=r1+1); - [] s1=1 & r1 (s1'=0) & (p1'=2) & (r1'=r1+1); - [] s1=1 & r1 (s1'=2) & (p1'=0); - [] s1=1 & r1=MAX & !(decide1 | decide2) -> (s1'=5); // run out of rounds so error - // enter the coin procotol for the current round - [coin1_s1_start] s1=2 & r1=1 -> (s1'=3); - [coin2_s1_start] s1=2 & r1=2 -> (s1'=3); - [coin3_s1_start] s1=2 & r1=3 -> (s1'=3); - [coin4_s1_start] s1=2 & r1=4 -> (s1'=3); - // get response from the coin protocol - [coin1_s1_p1] s1=3 & r1=1 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin1_s1_p2] s1=3 & r1=1 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - [coin2_s1_p1] s1=3 & r1=2 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin2_s1_p2] s1=3 & r1=2 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - [coin3_s1_p1] s1=3 & r1=3 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin3_s1_p2] s1=3 & r1=3 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - [coin4_s1_p1] s1=3 & r1=4 -> (s1'=0) & (p1'=1) & (r1'=r1+1); - [coin4_s1_p2] s1=3 & r1=4 -> (s1'=0) & (p1'=2) & (r1'=r1+1); - // done so loop - [done] s1>=4 -> true; - -endmodule - -module process2 = process1[ s1=s2, - p1=p2,p2=p3,p3=p1, - r1=r2,r2=r3,r3=r1, - coin1_s1_start=coin1_s2_start,coin2_s1_start=coin2_s2_start,coin3_s1_start=coin3_s2_start,coin4_s1_start=coin4_s2_start, - coin1_s1_p1=coin1_s2_p1,coin2_s1_p1=coin2_s2_p1,coin3_s1_p1=coin3_s2_p1,coin4_s1_p1=coin4_s2_p1, - coin1_s1_p2=coin1_s2_p2,coin2_s1_p2=coin2_s2_p2,coin3_s1_p2=coin3_s2_p2,coin4_s1_p2=coin4_s2_p2 ] -endmodule - -module process3 = process1[ s1=s3, - p1=p3,p2=p1,p3=p2, - r1=r3,r2=r1,r3=r2, - coin1_s1_start=coin1_s3_start,coin2_s1_start=coin2_s3_start,coin3_s1_start=coin3_s3_start,coin4_s1_start=coin4_s3_start, - coin1_s1_p1=coin1_s3_p1,coin2_s1_p1=coin2_s3_p1,coin3_s1_p1=coin3_s3_p1,coin4_s1_p1=coin4_s3_p1, - coin1_s1_p2=coin1_s3_p2,coin2_s1_p2=coin2_s3_p2,coin3_s1_p2=coin3_s3_p2,coin4_s1_p2=coin4_s3_p2 ] -endmodule - -module coin1_error - - c1 : [0..1]; // 1 is the error state - v1 : [0..2]; // value of the coin returned the first time - - // first returned value (any processes) - [coin1_s1_p1] v1=0 -> (v1'=1); - [coin1_s2_p1] v1=0 -> (v1'=1); - [coin1_s3_p1] v1=0 -> (v1'=1); - [coin1_s1_p2] v1=0 -> (v1'=2); - [coin1_s2_p2] v1=0 -> (v1'=2); - [coin1_s3_p2] v1=0 -> (v1'=2); - // later values returned - [coin1_s1_p1] v1=1 -> true; // good behaviour - [coin1_s2_p1] v1=1 -> true; // good behaviour - [coin1_s3_p1] v1=1 -> true; // good behaviour - [coin1_s1_p2] v1=2 -> true; // good behaviour - [coin1_s2_p2] v1=2 -> true; // good behaviour - [coin1_s3_p2] v1=2 -> true; // good behaviour - [coin1_s1_p1] v1=2 -> (c1'=1); // error - [coin1_s2_p1] v1=2 -> (c1'=1); // error - [coin1_s3_p1] v1=2 -> (c1'=1); // error - [coin1_s1_p2] v1=1 -> (c1'=1); // error - [coin1_s2_p2] v1=1 -> (c1'=1); // error - [coin1_s3_p2] v1=1 -> (c1'=1); // error - -endmodule - -module coin2_error - - c2 : [0..1]; // 1 is the error state - v2 : [0..2]; // value of the coin returned the first time - - // first returned value (any processes) - [coin2_s1_p1] v2=0 -> (v2'=1); - [coin2_s2_p1] v2=0 -> (v2'=1); - [coin2_s3_p1] v2=0 -> (v2'=1); - [coin2_s1_p2] v2=0 -> (v2'=2); - [coin2_s2_p2] v2=0 -> (v2'=2); - [coin2_s3_p2] v2=0 -> (v2'=2); - // later values returned - [coin2_s1_p1] v2=1 -> true; // good behaviour - [coin2_s2_p1] v2=1 -> true; // good behaviour - [coin2_s3_p1] v2=1 -> true; // good behaviour - [coin2_s1_p2] v2=2 -> true; // good behaviour - [coin2_s2_p2] v2=2 -> true; // good behaviour - [coin2_s3_p2] v2=2 -> true; // good behaviour - [coin2_s1_p1] v2=2 -> (c2'=1); // error - [coin2_s2_p1] v2=2 -> (c2'=1); // error - [coin2_s3_p1] v2=2 -> (c2'=1); // error - [coin2_s1_p2] v2=1 -> (c2'=1); // error - [coin2_s2_p2] v2=1 -> (c2'=1); // error - [coin2_s3_p2] v2=1 -> (c2'=1); // error - -endmodule - -module coin3_error - - c3 : [0..1]; // 1 is the error state - v3 : [0..2]; // value of the coin returned the first time - - // first returned value (any processes) - [coin3_s1_p1] v3=0 -> (v3'=1); - [coin3_s2_p1] v3=0 -> (v3'=1); - [coin3_s3_p1] v3=0 -> (v3'=1); - [coin3_s1_p2] v3=0 -> (v3'=2); - [coin3_s2_p2] v3=0 -> (v3'=2); - [coin3_s3_p2] v3=0 -> (v3'=2); - // later values returned - [coin3_s1_p1] v3=1 -> true; // good behaviour - [coin3_s2_p1] v3=1 -> true; // good behaviour - [coin3_s3_p1] v3=1 -> true; // good behaviour - [coin3_s1_p2] v3=2 -> true; // good behaviour - [coin3_s2_p2] v3=2 -> true; // good behaviour - [coin3_s3_p2] v3=2 -> true; // good behaviour - [coin3_s1_p1] v3=2 -> (c3'=1); // error - [coin3_s2_p1] v3=2 -> (c3'=1); // error - [coin3_s3_p1] v3=2 -> (c3'=1); // error - [coin3_s1_p2] v3=1 -> (c3'=1); // error - [coin3_s2_p2] v3=1 -> (c3'=1); // error - [coin3_s3_p2] v3=1 -> (c3'=1); // error - -endmodule - -// Labels -label "one_proc_err" = (s1=5 | s2=5 | s3=5); -label "one_coin_ok" = (c1=0 | c2=0 | c3=0); diff --git a/examples/multiobjective/mdp/consensus/origFiles/consensus_multi.pctl b/examples/multiobjective/mdp/consensus/origFiles/consensus_multi.pctl deleted file mode 100644 index 7a5f12b31..000000000 --- a/examples/multiobjective/mdp/consensus/origFiles/consensus_multi.pctl +++ /dev/null @@ -1,27 +0,0 @@ -// Parameter K for coins -const int K; - -// Max probability of component (coins) violating assumption property (checked separately) -const double p_coin_fail = -N=2 ? ( - K=2 ? 0.10833260973166493 : - K=12 ? 0.04164301267240658 : - K=20 ? 0.01249126244810821 : -0 ) : -N=3 ? ( - K=2 ? 0.22908875545788154 : - K=4 ? 0.12450138796380239 : - K=8 ? 0.06248479880890645 : - K=12 ? 0.04164365757451993 : - K=16 ? 0.031218839562495382 : - K=20 ? 0.024960596483605935 : -0 ) : 0; - -// Probability bound for assumption, derived from above -const double p_one_coin_ok = 1 - pow(p_coin_fail, MAX-2); - -// Assume-guarantee check via multi-objective (using ASYM rule) -"num_ag": multi(Pmax=? [ F "one_proc_err" ], P>=p_one_coin_ok [ G "one_coin_ok" ]) - -// Pareto query for assume-guarantee check -"pareto": multi(Pmax=? [ F "one_proc_err" ], Pmax=? [ G "one_coin_ok" ]) diff --git a/examples/multiobjective/mdp/dpm/dpm100.nm b/examples/multiobjective/mdp/dpm/dpm100.nm deleted file mode 100644 index 0862cfb73..000000000 --- a/examples/multiobjective/mdp/dpm/dpm100.nm +++ /dev/null @@ -1,160 +0,0 @@ -// power manager example -mdp - -const int QMAX =2; // max queue size - -// to model the pm making a choice and then a move being made we need -// two clock ticks for each transition -// first the pm decides tick1 and then the system moves tick2 - -module timer - - c : [0..1]; - - [tick1] c=0 -> (c'=1); - [tick2] c=1 -> (c'=0); - -endmodule - -//------------------------------------------------------------------------- - -// POWER MANAGER -module PM - - pm : [0..4] init 4; - // 0 - go to active - // 1 - go to idle - // 2 - go to idlelp - // 3 - go to stby - // 4 - go to sleep - - [tick1] true -> (pm'=0); - [tick1] true -> (pm'=1); - [tick1] true -> (pm'=2); - [tick1] true -> (pm'=3); - [tick1] true -> (pm'=4); - -endmodule - - -//------------------------------------------------------------------------- - -// SERVICE REQUESTER -module SR - - sr : [0..1] init 0; - // 0 idle - // 1 1req - - [tick2] sr=0 -> 0.898: (sr'=0) + 0.102: (sr'=1); - [tick2] sr=1 -> 0.454: (sr'=0) + 0.546: (sr'=1); - -endmodule - -//------------------------------------------------------------------------- - -// SERVICE PROVIDER - -module SP - - sp : [0..10] init 9; - // 0 active - // 1 idle - // 2 active_idlelp - // 3 idlelp - // 4 idlelp_active - // 5 active_stby - // 6 stby - // 7 stby_active - // 8 active_sleep - // 9 sleep - // 10 sleep_active - - // states where PM has no control (transient states) - [tick2] sp=2 -> 0.75 : (sp'=2) + 0.25 : (sp'=3); // active_idlelp - [tick2] sp=4 -> 0.25 : (sp'=0) + 0.75 : (sp'=4); // idlelp_active - [tick2] sp=5 -> 0.995 : (sp'=5) + 0.005 : (sp'=6); // active_stby - [tick2] sp=7 -> 0.005 : (sp'=0) + 0.995 : (sp'=7); // stby_active - [tick2] sp=8 -> 0.9983 : (sp'=8) + 0.0017 : (sp'=9); // active_sleep - [tick2] sp=10 -> 0.0017 : (sp'=0) + 0.9983 : (sp'=10); // sleep_active - - // states where PM has control - // goto_active - [tick2] sp=0 & pm=0 -> (sp'=0); // active - [tick2] sp=1 & pm=0 -> (sp'=0); // idle - [tick2] sp=3 & pm=0 -> (sp'=4); // idlelp - [tick2] sp=6 & pm=0 -> (sp'=7); // stby - [tick2] sp=9 & pm=0 -> (sp'=10); // sleep - // goto_idle - [tick2] sp=0 & pm=1 -> (sp'=1); // active - [tick2] sp=1 & pm=1 -> (sp'=1); // idle - [tick2] sp=3 & pm=1 -> (sp'=3); // idlelp - [tick2] sp=6 & pm=1 -> (sp'=6); // stby - [tick2] sp=9 & pm=1 -> (sp'=9); // sleep - // goto_idlelp - [tick2] sp=0 & pm=2 -> (sp'=2); // active - [tick2] sp=1 & pm=2 -> (sp'=2); // idle - [tick2] sp=3 & pm=2 -> (sp'=3); // idlelp - [tick2] sp=6 & pm=2 -> (sp'=6); // stby - [tick2] sp=9 & pm=2 -> (sp'=9); // sleep - // goto_stby - [tick2] sp=0 & pm=3 -> (sp'=5); // active - [tick2] sp=1 & pm=3 -> (sp'=5); // idle - [tick2] sp=3 & pm=3 -> (sp'=5); // idlelp - [tick2] sp=6 & pm=3 -> (sp'=6); // stby - [tick2] sp=9 & pm=3 -> (sp'=9); // sleep - // goto_sleep - [tick2] sp=0 & pm=4 -> (sp'=8); // active - [tick2] sp=1 & pm=4 -> (sp'=8); // idle - [tick2] sp=3 & pm=4 -> (sp'=8); // idlelp - [tick2] sp=6 & pm=4 -> (sp'=8); // stby - [tick2] sp=9 & pm=4 -> (sp'=9); // sleep - -endmodule - - -//------------------------------------------------------------------------- - -// SQ -module SQ - - q : [0..QMAX] init 0; - - // serve if busy - [tick2] sr=0 & sp=0 -> (q'=max(q-1,0)); - [tick2] sr=1 & sp=0 -> (q'=q); - - // otherwise do nothing - [tick2] sr=0 & sp>0 -> (q'=q); - [tick2] sr=1 & sp>0 -> (q'=min(q+1,QMAX)); - -endmodule - -//------------------------------------------------------------------------- -//rewards "time" -// [tick2] bat=1 : 1; -//endrewards - -rewards "power" - [tick2] sp=0 & c=1 : 2.5; - [tick2] sp=1 & c=1 : 1.5; - [tick2] sp=2 & c=1 : 2.5; - [tick2] sp=3 & c=1 : 0.8; - [tick2] sp=4 & c=1 : 2.5; - [tick2] sp=5 & c=1 : 2.5; - [tick2] sp=6 & c=1 : 0.3; - [tick2] sp=7 & c=1 : 2.5; - [tick2] sp=8 & c=1 : 2.5; - [tick2] sp=9 & c=1 : 0.1; - [tick2] sp=10 & c=1 : 2.5; -endrewards - -// is an instantaneous property but I suppose we can look at average size -// i.e. divide by the expected number of time steps -rewards "queue" - [tick2] c=1 : q; -endrewards - -rewards "lost" - [tick2] sr=1 & sp>0 & q=2 : 1; -endrewards diff --git a/examples/multiobjective/mdp/dpm/dpm100_numerical.pctl b/examples/multiobjective/mdp/dpm/dpm100_numerical.pctl deleted file mode 100644 index 97de9f0e1..000000000 --- a/examples/multiobjective/mdp/dpm/dpm100_numerical.pctl +++ /dev/null @@ -1,3 +0,0 @@ - multi(R{"power"}min=? [ C<=100 ], R{"queue"}<=70 [ C<=100 ]) -// Note: The property file from http://www.prismmodelchecker.org/files/atva12mo/ does not provide a threshold for the second objective. -// We pick a threshold that intersects the pareto curve. \ No newline at end of file diff --git a/examples/multiobjective/mdp/dpm/dpm100_pareto.pctl b/examples/multiobjective/mdp/dpm/dpm100_pareto.pctl deleted file mode 100644 index 19e3cd685..000000000 --- a/examples/multiobjective/mdp/dpm/dpm100_pareto.pctl +++ /dev/null @@ -1 +0,0 @@ - multi(R{"power"}min=? [ C<=100 ], R{"queue"}min=? [ C<=100 ]) diff --git a/examples/multiobjective/mdp/dpm/dpm200.nm b/examples/multiobjective/mdp/dpm/dpm200.nm deleted file mode 100644 index 0862cfb73..000000000 --- a/examples/multiobjective/mdp/dpm/dpm200.nm +++ /dev/null @@ -1,160 +0,0 @@ -// power manager example -mdp - -const int QMAX =2; // max queue size - -// to model the pm making a choice and then a move being made we need -// two clock ticks for each transition -// first the pm decides tick1 and then the system moves tick2 - -module timer - - c : [0..1]; - - [tick1] c=0 -> (c'=1); - [tick2] c=1 -> (c'=0); - -endmodule - -//------------------------------------------------------------------------- - -// POWER MANAGER -module PM - - pm : [0..4] init 4; - // 0 - go to active - // 1 - go to idle - // 2 - go to idlelp - // 3 - go to stby - // 4 - go to sleep - - [tick1] true -> (pm'=0); - [tick1] true -> (pm'=1); - [tick1] true -> (pm'=2); - [tick1] true -> (pm'=3); - [tick1] true -> (pm'=4); - -endmodule - - -//------------------------------------------------------------------------- - -// SERVICE REQUESTER -module SR - - sr : [0..1] init 0; - // 0 idle - // 1 1req - - [tick2] sr=0 -> 0.898: (sr'=0) + 0.102: (sr'=1); - [tick2] sr=1 -> 0.454: (sr'=0) + 0.546: (sr'=1); - -endmodule - -//------------------------------------------------------------------------- - -// SERVICE PROVIDER - -module SP - - sp : [0..10] init 9; - // 0 active - // 1 idle - // 2 active_idlelp - // 3 idlelp - // 4 idlelp_active - // 5 active_stby - // 6 stby - // 7 stby_active - // 8 active_sleep - // 9 sleep - // 10 sleep_active - - // states where PM has no control (transient states) - [tick2] sp=2 -> 0.75 : (sp'=2) + 0.25 : (sp'=3); // active_idlelp - [tick2] sp=4 -> 0.25 : (sp'=0) + 0.75 : (sp'=4); // idlelp_active - [tick2] sp=5 -> 0.995 : (sp'=5) + 0.005 : (sp'=6); // active_stby - [tick2] sp=7 -> 0.005 : (sp'=0) + 0.995 : (sp'=7); // stby_active - [tick2] sp=8 -> 0.9983 : (sp'=8) + 0.0017 : (sp'=9); // active_sleep - [tick2] sp=10 -> 0.0017 : (sp'=0) + 0.9983 : (sp'=10); // sleep_active - - // states where PM has control - // goto_active - [tick2] sp=0 & pm=0 -> (sp'=0); // active - [tick2] sp=1 & pm=0 -> (sp'=0); // idle - [tick2] sp=3 & pm=0 -> (sp'=4); // idlelp - [tick2] sp=6 & pm=0 -> (sp'=7); // stby - [tick2] sp=9 & pm=0 -> (sp'=10); // sleep - // goto_idle - [tick2] sp=0 & pm=1 -> (sp'=1); // active - [tick2] sp=1 & pm=1 -> (sp'=1); // idle - [tick2] sp=3 & pm=1 -> (sp'=3); // idlelp - [tick2] sp=6 & pm=1 -> (sp'=6); // stby - [tick2] sp=9 & pm=1 -> (sp'=9); // sleep - // goto_idlelp - [tick2] sp=0 & pm=2 -> (sp'=2); // active - [tick2] sp=1 & pm=2 -> (sp'=2); // idle - [tick2] sp=3 & pm=2 -> (sp'=3); // idlelp - [tick2] sp=6 & pm=2 -> (sp'=6); // stby - [tick2] sp=9 & pm=2 -> (sp'=9); // sleep - // goto_stby - [tick2] sp=0 & pm=3 -> (sp'=5); // active - [tick2] sp=1 & pm=3 -> (sp'=5); // idle - [tick2] sp=3 & pm=3 -> (sp'=5); // idlelp - [tick2] sp=6 & pm=3 -> (sp'=6); // stby - [tick2] sp=9 & pm=3 -> (sp'=9); // sleep - // goto_sleep - [tick2] sp=0 & pm=4 -> (sp'=8); // active - [tick2] sp=1 & pm=4 -> (sp'=8); // idle - [tick2] sp=3 & pm=4 -> (sp'=8); // idlelp - [tick2] sp=6 & pm=4 -> (sp'=8); // stby - [tick2] sp=9 & pm=4 -> (sp'=9); // sleep - -endmodule - - -//------------------------------------------------------------------------- - -// SQ -module SQ - - q : [0..QMAX] init 0; - - // serve if busy - [tick2] sr=0 & sp=0 -> (q'=max(q-1,0)); - [tick2] sr=1 & sp=0 -> (q'=q); - - // otherwise do nothing - [tick2] sr=0 & sp>0 -> (q'=q); - [tick2] sr=1 & sp>0 -> (q'=min(q+1,QMAX)); - -endmodule - -//------------------------------------------------------------------------- -//rewards "time" -// [tick2] bat=1 : 1; -//endrewards - -rewards "power" - [tick2] sp=0 & c=1 : 2.5; - [tick2] sp=1 & c=1 : 1.5; - [tick2] sp=2 & c=1 : 2.5; - [tick2] sp=3 & c=1 : 0.8; - [tick2] sp=4 & c=1 : 2.5; - [tick2] sp=5 & c=1 : 2.5; - [tick2] sp=6 & c=1 : 0.3; - [tick2] sp=7 & c=1 : 2.5; - [tick2] sp=8 & c=1 : 2.5; - [tick2] sp=9 & c=1 : 0.1; - [tick2] sp=10 & c=1 : 2.5; -endrewards - -// is an instantaneous property but I suppose we can look at average size -// i.e. divide by the expected number of time steps -rewards "queue" - [tick2] c=1 : q; -endrewards - -rewards "lost" - [tick2] sr=1 & sp>0 & q=2 : 1; -endrewards diff --git a/examples/multiobjective/mdp/dpm/dpm200_numerical.pctl b/examples/multiobjective/mdp/dpm/dpm200_numerical.pctl deleted file mode 100644 index 916821715..000000000 --- a/examples/multiobjective/mdp/dpm/dpm200_numerical.pctl +++ /dev/null @@ -1,3 +0,0 @@ - multi(R{"power"}min=? [ C<=200 ], R{"queue"}<=170 [ C<=200 ]) -// Note: The property file from http://www.prismmodelchecker.org/files/atva12mo/ does not provide a threshold for the second objective. -// We pick a threshold that intersects the pareto curve. \ No newline at end of file diff --git a/examples/multiobjective/mdp/dpm/dpm200_pareto.pctl b/examples/multiobjective/mdp/dpm/dpm200_pareto.pctl deleted file mode 100644 index f03284f83..000000000 --- a/examples/multiobjective/mdp/dpm/dpm200_pareto.pctl +++ /dev/null @@ -1 +0,0 @@ - multi(R{"power"}min=? [ C<=200 ], R{"queue"}min=? [ C<=200 ]) diff --git a/examples/multiobjective/mdp/dpm/dpm300.nm b/examples/multiobjective/mdp/dpm/dpm300.nm deleted file mode 100644 index 3ac45e621..000000000 --- a/examples/multiobjective/mdp/dpm/dpm300.nm +++ /dev/null @@ -1,160 +0,0 @@ -// power manager example -mdp - -const int QMAX=2; // max queue size - -// to model the pm making a choice and then a move being made we need -// two clock ticks for each transition -// first the pm decides tick1 and then the system moves tick2 - -module timer - - c : [0..1]; - - [tick1] c=0 -> (c'=1); - [tick2] c=1 -> (c'=0); - -endmodule - -//------------------------------------------------------------------------- - -// POWER MANAGER -module PM - - pm : [0..4] init 4; - // 0 - go to active - // 1 - go to idle - // 2 - go to idlelp - // 3 - go to stby - // 4 - go to sleep - - [tick1] true -> (pm'=0); - [tick1] true -> (pm'=1); - [tick1] true -> (pm'=2); - [tick1] true -> (pm'=3); - [tick1] true -> (pm'=4); - -endmodule - - -//------------------------------------------------------------------------- - -// SERVICE REQUESTER -module SR - - sr : [0..1] init 0; - // 0 idle - // 1 1req - - [tick2] sr=0 -> 0.898: (sr'=0) + 0.102: (sr'=1); - [tick2] sr=1 -> 0.454: (sr'=0) + 0.546: (sr'=1); - -endmodule - -//------------------------------------------------------------------------- - -// SERVICE PROVIDER - -module SP - - sp : [0..10] init 9; - // 0 active - // 1 idle - // 2 active_idlelp - // 3 idlelp - // 4 idlelp_active - // 5 active_stby - // 6 stby - // 7 stby_active - // 8 active_sleep - // 9 sleep - // 10 sleep_active - - // states where PM has no control (transient states) - [tick2] sp=2 -> 0.75 : (sp'=2) + 0.25 : (sp'=3); // active_idlelp - [tick2] sp=4 -> 0.25 : (sp'=0) + 0.75 : (sp'=4); // idlelp_active - [tick2] sp=5 -> 0.995 : (sp'=5) + 0.005 : (sp'=6); // active_stby - [tick2] sp=7 -> 0.005 : (sp'=0) + 0.995 : (sp'=7); // stby_active - [tick2] sp=8 -> 0.9983 : (sp'=8) + 0.0017 : (sp'=9); // active_sleep - [tick2] sp=10 -> 0.0017 : (sp'=0) + 0.9983 : (sp'=10); // sleep_active - - // states where PM has control - // goto_active - [tick2] sp=0 & pm=0 -> (sp'=0); // active - [tick2] sp=1 & pm=0 -> (sp'=0); // idle - [tick2] sp=3 & pm=0 -> (sp'=4); // idlelp - [tick2] sp=6 & pm=0 -> (sp'=7); // stby - [tick2] sp=9 & pm=0 -> (sp'=10); // sleep - // goto_idle - [tick2] sp=0 & pm=1 -> (sp'=1); // active - [tick2] sp=1 & pm=1 -> (sp'=1); // idle - [tick2] sp=3 & pm=1 -> (sp'=3); // idlelp - [tick2] sp=6 & pm=1 -> (sp'=6); // stby - [tick2] sp=9 & pm=1 -> (sp'=9); // sleep - // goto_idlelp - [tick2] sp=0 & pm=2 -> (sp'=2); // active - [tick2] sp=1 & pm=2 -> (sp'=2); // idle - [tick2] sp=3 & pm=2 -> (sp'=3); // idlelp - [tick2] sp=6 & pm=2 -> (sp'=6); // stby - [tick2] sp=9 & pm=2 -> (sp'=9); // sleep - // goto_stby - [tick2] sp=0 & pm=3 -> (sp'=5); // active - [tick2] sp=1 & pm=3 -> (sp'=5); // idle - [tick2] sp=3 & pm=3 -> (sp'=5); // idlelp - [tick2] sp=6 & pm=3 -> (sp'=6); // stby - [tick2] sp=9 & pm=3 -> (sp'=9); // sleep - // goto_sleep - [tick2] sp=0 & pm=4 -> (sp'=8); // active - [tick2] sp=1 & pm=4 -> (sp'=8); // idle - [tick2] sp=3 & pm=4 -> (sp'=8); // idlelp - [tick2] sp=6 & pm=4 -> (sp'=8); // stby - [tick2] sp=9 & pm=4 -> (sp'=9); // sleep - -endmodule - - -//------------------------------------------------------------------------- - -// SQ -module SQ - - q : [0..QMAX] init 0; - - // serve if busy - [tick2] sr=0 & sp=0 -> (q'=max(q-1,0)); - [tick2] sr=1 & sp=0 -> (q'=q); - - // otherwise do nothing - [tick2] sr=0 & sp>0 -> (q'=q); - [tick2] sr=1 & sp>0 -> (q'=min(q+1,QMAX)); - -endmodule - -//------------------------------------------------------------------------- -//rewards "time" -// [tick2] bat=1 : 1; -//endrewards - -rewards "power" - [tick2] sp=0 & c=1 : 2.5; - [tick2] sp=1 & c=1 : 1.5; - [tick2] sp=2 & c=1 : 2.5; - [tick2] sp=3 & c=1 : 0.8; - [tick2] sp=4 & c=1 : 2.5; - [tick2] sp=5 & c=1 : 2.5; - [tick2] sp=6 & c=1 : 0.3; - [tick2] sp=7 & c=1 : 2.5; - [tick2] sp=8 & c=1 : 2.5; - [tick2] sp=9 & c=1 : 0.1; - [tick2] sp=10 & c=1 : 2.5; -endrewards - -// is an instantaneous property but I suppose we can look at average size -// i.e. divide by the expected number of time steps -rewards "queue" - [tick2] c=1 : q; -endrewards - -rewards "lost" - [tick2] sr=1 & sp>0 & q=2 : 1; -endrewards diff --git a/examples/multiobjective/mdp/dpm/dpm300_numerical.pctl b/examples/multiobjective/mdp/dpm/dpm300_numerical.pctl deleted file mode 100644 index a75851347..000000000 --- a/examples/multiobjective/mdp/dpm/dpm300_numerical.pctl +++ /dev/null @@ -1,3 +0,0 @@ - multi(R{"power"}min=? [ C<=300 ], R{"queue"}<=270 [ C<=300 ]) -// Note: The property file from http://www.prismmodelchecker.org/files/atva12mo/ does not provide a threshold for the second objective. -// We pick a threshold that intersects the pareto curve. \ No newline at end of file diff --git a/examples/multiobjective/mdp/dpm/dpm300_pareto.pctl b/examples/multiobjective/mdp/dpm/dpm300_pareto.pctl deleted file mode 100644 index bde0f5eb0..000000000 --- a/examples/multiobjective/mdp/dpm/dpm300_pareto.pctl +++ /dev/null @@ -1 +0,0 @@ - multi(R{"power"}min=? [ C<=300 ], R{"queue"}min=? [ C<=300 ]) diff --git a/examples/multiobjective/mdp/dpm/origFiles/power-timed.nm b/examples/multiobjective/mdp/dpm/origFiles/power-timed.nm deleted file mode 100644 index 561742815..000000000 --- a/examples/multiobjective/mdp/dpm/origFiles/power-timed.nm +++ /dev/null @@ -1,160 +0,0 @@ -// power manager example -mdp - -const int QMAX; // max queue size - -// to model the pm making a choice and then a move being made we need -// two clock ticks for each transition -// first the pm decides tick1 and then the system moves tick2 - -module timer - - c : [0..1]; - - [tick1] c=0 -> (c'=1); - [tick2] c=1 -> (c'=0); - -endmodule - -//------------------------------------------------------------------------- - -// POWER MANAGER -module PM - - pm : [0..4] init 4; - // 0 - go to active - // 1 - go to idle - // 2 - go to idlelp - // 3 - go to stby - // 4 - go to sleep - - [tick1] true -> (pm'=0); - [tick1] true -> (pm'=1); - [tick1] true -> (pm'=2); - [tick1] true -> (pm'=3); - [tick1] true -> (pm'=4); - -endmodule - - -//------------------------------------------------------------------------- - -// SERVICE REQUESTER -module SR - - sr : [0..1] init 0; - // 0 idle - // 1 1req - - [tick2] sr=0 -> 0.898: (sr'=0) + 0.102: (sr'=1); - [tick2] sr=1 -> 0.454: (sr'=0) + 0.546: (sr'=1); - -endmodule - -//------------------------------------------------------------------------- - -// SERVICE PROVIDER - -module SP - - sp : [0..10] init 9; - // 0 active - // 1 idle - // 2 active_idlelp - // 3 idlelp - // 4 idlelp_active - // 5 active_stby - // 6 stby - // 7 stby_active - // 8 active_sleep - // 9 sleep - // 10 sleep_active - - // states where PM has no control (transient states) - [tick2] sp=2 -> 0.75 : (sp'=2) + 0.25 : (sp'=3); // active_idlelp - [tick2] sp=4 -> 0.25 : (sp'=0) + 0.75 : (sp'=4); // idlelp_active - [tick2] sp=5 -> 0.995 : (sp'=5) + 0.005 : (sp'=6); // active_stby - [tick2] sp=7 -> 0.005 : (sp'=0) + 0.995 : (sp'=7); // stby_active - [tick2] sp=8 -> 0.9983 : (sp'=8) + 0.0017 : (sp'=9); // active_sleep - [tick2] sp=10 -> 0.0017 : (sp'=0) + 0.9983 : (sp'=10); // sleep_active - - // states where PM has control - // goto_active - [tick2] sp=0 & pm=0 -> (sp'=0); // active - [tick2] sp=1 & pm=0 -> (sp'=0); // idle - [tick2] sp=3 & pm=0 -> (sp'=4); // idlelp - [tick2] sp=6 & pm=0 -> (sp'=7); // stby - [tick2] sp=9 & pm=0 -> (sp'=10); // sleep - // goto_idle - [tick2] sp=0 & pm=1 -> (sp'=1); // active - [tick2] sp=1 & pm=1 -> (sp'=1); // idle - [tick2] sp=3 & pm=1 -> (sp'=3); // idlelp - [tick2] sp=6 & pm=1 -> (sp'=6); // stby - [tick2] sp=9 & pm=1 -> (sp'=9); // sleep - // goto_idlelp - [tick2] sp=0 & pm=2 -> (sp'=2); // active - [tick2] sp=1 & pm=2 -> (sp'=2); // idle - [tick2] sp=3 & pm=2 -> (sp'=3); // idlelp - [tick2] sp=6 & pm=2 -> (sp'=6); // stby - [tick2] sp=9 & pm=2 -> (sp'=9); // sleep - // goto_stby - [tick2] sp=0 & pm=3 -> (sp'=5); // active - [tick2] sp=1 & pm=3 -> (sp'=5); // idle - [tick2] sp=3 & pm=3 -> (sp'=5); // idlelp - [tick2] sp=6 & pm=3 -> (sp'=6); // stby - [tick2] sp=9 & pm=3 -> (sp'=9); // sleep - // goto_sleep - [tick2] sp=0 & pm=4 -> (sp'=8); // active - [tick2] sp=1 & pm=4 -> (sp'=8); // idle - [tick2] sp=3 & pm=4 -> (sp'=8); // idlelp - [tick2] sp=6 & pm=4 -> (sp'=8); // stby - [tick2] sp=9 & pm=4 -> (sp'=9); // sleep - -endmodule - - -//------------------------------------------------------------------------- - -// SQ -module SQ - - q : [0..QMAX] init 0; - - // serve if busy - [tick2] sr=0 & sp=0 -> (q'=max(q-1,0)); - [tick2] sr=1 & sp=0 -> (q'=q); - - // otherwise do nothing - [tick2] sr=0 & sp>0 -> (q'=q); - [tick2] sr=1 & sp>0 -> (q'=min(q+1,QMAX)); - -endmodule - -//------------------------------------------------------------------------- -//rewards "time" -// [tick2] bat=1 : 1; -//endrewards - -rewards "power" - [tick2] sp=0 & c=1 : 2.5; - [tick2] sp=1 & c=1 : 1.5; - [tick2] sp=2 & c=1 : 2.5; - [tick2] sp=3 & c=1 : 0.8; - [tick2] sp=4 & c=1 : 2.5; - [tick2] sp=5 & c=1 : 2.5; - [tick2] sp=6 & c=1 : 0.3; - [tick2] sp=7 & c=1 : 2.5; - [tick2] sp=8 & c=1 : 2.5; - [tick2] sp=9 & c=1 : 0.1; - [tick2] sp=10 & c=1 : 2.5; -endrewards - -// is an instantaneous property but I suppose we can look at average size -// i.e. divide by the expected number of time steps -rewards "queue" - [tick2] c=1 : q; -endrewards - -rewards "lost" - [tick2] sr=1 & sp>0 & q=2 : 1; -endrewards diff --git a/examples/multiobjective/mdp/dpm/origFiles/power-timed.pctl b/examples/multiobjective/mdp/dpm/origFiles/power-timed.pctl deleted file mode 100644 index 153141e7c..000000000 --- a/examples/multiobjective/mdp/dpm/origFiles/power-timed.pctl +++ /dev/null @@ -1,11 +0,0 @@ -// Average queue size -const double Q; - -// Time bound -const int k; - -// Minimum energy usage over k time-steps, such that average queue size remains below Q -"num_energy": multi(R{"power"}min=? [ C<=k ], R{"queue"}<=Q*k [ C<=k ]) - -// Pareto query: minimum energy usage vs minimum average queue size -"pareto": multi(R{"power"}min=? [ C<=k ], R{"queue"}min=? [ C<=k ]) diff --git a/examples/multiobjective/mdp/scheduler/origFiles/scheduler.pctl b/examples/multiobjective/mdp/scheduler/origFiles/scheduler.pctl deleted file mode 100644 index 24a09241b..000000000 --- a/examples/multiobjective/mdp/scheduler/origFiles/scheduler.pctl +++ /dev/null @@ -1,8 +0,0 @@ -// Minimise expected completion time given a bound on expected energy usage -"num_time": multi(R{"time"}min=?[ C ], R{"energy"}<=1.45 [ C ]) - -// Minimise expected energy usage given a bound on expected completion time -"num_energy": multi( R{"energy"}min=?[ C ], R{"time"}<=1000[ C ]) - -// Pareto query for assume-guarantee check -"pareto": multi(R{"energy"}min=?[ C ], R{"time"}min=? [ C ]) diff --git a/examples/multiobjective/mdp/scheduler/origFiles/scheduler_prob2_K.nm b/examples/multiobjective/mdp/scheduler/origFiles/scheduler_prob2_K.nm deleted file mode 100644 index 22064b3cb..000000000 --- a/examples/multiobjective/mdp/scheduler/origFiles/scheduler_prob2_K.nm +++ /dev/null @@ -1,95 +0,0 @@ -mdp - -label "tasks_complete" = (task6=3); - -const int K; - -module scheduler - - task1 : [0..3]; - task2 : [0..3]; - task3 : [0..3]; - task4 : [0..3]; - task5 : [0..3]; - task6 : [0..3]; - - [p1_add] task1=0 -> (task1'=1); - [p2_add] task1=0 -> (task1'=2); - [p1_mult] task2=0 -> (task2'=1); - [p2_mult] task2=0 -> (task2'=2); - [p1_mult] task3=0&task1=3 -> (task3'=1); - [p2_mult] task3=0&task1=3 -> (task3'=2); - [p1_add] task4=0&task1=3&task2=3 -> (task4'=1); - [p2_add] task4=0&task1=3&task2=3 -> (task4'=2); - [p1_mult] task5=0&task3=3 -> (task5'=1); - [p2_mult] task5=0&task3=3 -> (task5'=2); - [p1_add] task6=0&task4=3&task5=3 -> (task6'=1); - [p2_add] task6=0&task4=3&task5=3 -> (task6'=2); - [p1_done] task1=1 -> (task1'=3); - [p1_done] task2=1 -> (task2'=3); - [p1_done] task3=1 -> (task3'=3); - [p1_done] task4=1 -> (task4'=3); - [p1_done] task5=1 -> (task5'=3); - [p1_done] task6=1 -> (task6'=3); - [p2_done] task1=2 -> (task1'=3); - [p2_done] task2=2 -> (task2'=3); - [p2_done] task3=2 -> (task3'=3); - [p2_done] task4=2 -> (task4'=3); - [p2_done] task5=2 -> (task5'=3); - [p2_done] task6=2 -> (task6'=3); - [time] true -> 1.0 : true; - -endmodule - -module P1 - - p1 : [0..3]; - c1 : [0..2]; - x1 : [0..4*K+1]; - - [p1_add] (p1=0) -> (p1'=1) & (x1'=0); - [] (p1=1)&(x1=1*K)&(c1=0) -> 1/3 : (p1'=3) & (x1'=0) & (c1'=0) + 2/3 : (c1'=1) & (x1'=0); - [] (p1=1)&(x1=1*K)&(c1=1) -> 1/2 : (p1'=3) & (x1'=0) & (c1'=0) + 1/2 : (c1'=2) & (x1'=0); - [p1_done] (p1=1)&(x1=1*K)&(c1=2) -> (p1'=0) & (x1'=0) & (c1'=0); - [p1_mult] (p1=0) -> (p1'=2) & (x1'=0); - [] (p1=2)&(x1=2*K)&(c1=0) -> 1/3 : (p1'=3) & (x1'=0) & (c1'=0) + 2/3 : (c1'=1) & (x1'=0); - [] (p1=2)&(x1=1*K)&(c1=1) -> 1/2 : (p1'=3) & (x1'=0) & (c1'=0) + 1/2 : (c1'=2) & (x1'=0); - [p1_done] (p1=2)&(x1=1*K)&(c1=2) -> (p1'=0) & (x1'=0) & (c1'=0); - [p1_done] (p1=3) -> (p1'=0); - [time] (p1=1=>x1+1<=1*K)&((p1=2&c1=0)=>x1+1<=2*K)&((p1=2&c1>0)=>x1+1<=1*K)&(p1=3=>x1+1<=0) -> 1.0 : (x1'=min(x1+1,4*K+1)); - -endmodule - -module P2 - - p2 : [0..3]; - c2 : [0..2]; - x2 : [0..6*K+1]; - - [p2_add] (p2=0) -> (p2'=1) & (x2'=0); - [] (p2=1)&(x2=4*K)&(c2=0) -> 1/3 : (p2'=3) & (x2'=0) & (c2'=0) + 2/3 : (c2'=1) & (x2'=0); - [] (p2=1)&(x2=1)&(c2=1) -> 1/2 : (p2'=3) & (x2'=0) & (c2'=0) + 1/2 : (c2'=2) & (x2'=0); - [p2_done] (p2=1)&(x2=1)&(c2=2) -> (p2'=0) & (x2'=0) & (c2'=0); - [p2_mult] (p2=0) -> (p2'=2) & (x2'=0); - [] (p2=2)&(x2=6*K)&(c2=0) -> 1/3 : (p2'=3) & (x2'=0) & (c2'=0) + 2/3 : (c2'=1) & (x2'=0); - [] (p2=2)&(x2=1)&(c2=1) -> 1/2 : (p2'=3) & (x2'=0) & (c2'=0) + 1/2 : (c2'=2) & (x2'=0); - [p2_done] (p2=2)&(x2=1)&(c2=2) -> (p2'=0) & (x2'=0) & (c2'=0); - [p2_done] (p2=3) -> (p2'=0); - [time] ((p2=1&c2=0)=>x2+1<=4*K)&((p2=1&c2>0)=>x2+1<=1)&((p2=2&c2=0)=>x2+1<=6*K)&((p2=2&c2>0)=>x2+1<=1)&(p2=3=>x2+1<=0) -> 1.0 : (x2'=min(x2+1,6*K+1)); - -endmodule - -rewards "time" - - [time] true : 1/K; - -endrewards - -rewards "energy" - - [time] p1=0 : 10/(1000*K); - [time] p1>0 : 90/(1000*K); - [time] p2=0 : 20/(1000*K); - [time] p2>0 : 30/(1000*K); - -endrewards diff --git a/examples/multiobjective/mdp/scheduler/scheduler05.nm b/examples/multiobjective/mdp/scheduler/scheduler05.nm deleted file mode 100644 index 00f4e9539..000000000 --- a/examples/multiobjective/mdp/scheduler/scheduler05.nm +++ /dev/null @@ -1,95 +0,0 @@ -mdp - -label "tasks_complete" = (task6=3); - -const int K=5; - -module scheduler - - task1 : [0..3]; - task2 : [0..3]; - task3 : [0..3]; - task4 : [0..3]; - task5 : [0..3]; - task6 : [0..3]; - - [p1_add] task1=0 -> (task1'=1); - [p2_add] task1=0 -> (task1'=2); - [p1_mult] task2=0 -> (task2'=1); - [p2_mult] task2=0 -> (task2'=2); - [p1_mult] task3=0&task1=3 -> (task3'=1); - [p2_mult] task3=0&task1=3 -> (task3'=2); - [p1_add] task4=0&task1=3&task2=3 -> (task4'=1); - [p2_add] task4=0&task1=3&task2=3 -> (task4'=2); - [p1_mult] task5=0&task3=3 -> (task5'=1); - [p2_mult] task5=0&task3=3 -> (task5'=2); - [p1_add] task6=0&task4=3&task5=3 -> (task6'=1); - [p2_add] task6=0&task4=3&task5=3 -> (task6'=2); - [p1_done] task1=1 -> (task1'=3); - [p1_done] task2=1 -> (task2'=3); - [p1_done] task3=1 -> (task3'=3); - [p1_done] task4=1 -> (task4'=3); - [p1_done] task5=1 -> (task5'=3); - [p1_done] task6=1 -> (task6'=3); - [p2_done] task1=2 -> (task1'=3); - [p2_done] task2=2 -> (task2'=3); - [p2_done] task3=2 -> (task3'=3); - [p2_done] task4=2 -> (task4'=3); - [p2_done] task5=2 -> (task5'=3); - [p2_done] task6=2 -> (task6'=3); - [time] true -> 1.0 : true; - -endmodule - -module P1 - - p1 : [0..3]; - c1 : [0..2]; - x1 : [0..4*K+1]; - - [p1_add] (p1=0) -> (p1'=1) & (x1'=0); - [] (p1=1)&(x1=1*K)&(c1=0) -> 1/3 : (p1'=3) & (x1'=0) & (c1'=0) + 2/3 : (c1'=1) & (x1'=0); - [] (p1=1)&(x1=1*K)&(c1=1) -> 1/2 : (p1'=3) & (x1'=0) & (c1'=0) + 1/2 : (c1'=2) & (x1'=0); - [p1_done] (p1=1)&(x1=1*K)&(c1=2) -> (p1'=0) & (x1'=0) & (c1'=0); - [p1_mult] (p1=0) -> (p1'=2) & (x1'=0); - [] (p1=2)&(x1=2*K)&(c1=0) -> 1/3 : (p1'=3) & (x1'=0) & (c1'=0) + 2/3 : (c1'=1) & (x1'=0); - [] (p1=2)&(x1=1*K)&(c1=1) -> 1/2 : (p1'=3) & (x1'=0) & (c1'=0) + 1/2 : (c1'=2) & (x1'=0); - [p1_done] (p1=2)&(x1=1*K)&(c1=2) -> (p1'=0) & (x1'=0) & (c1'=0); - [p1_done] (p1=3) -> (p1'=0); - [time] (p1=1=>x1+1<=1*K)&((p1=2&c1=0)=>x1+1<=2*K)&((p1=2&c1>0)=>x1+1<=1*K)&(p1=3=>x1+1<=0) -> 1.0 : (x1'=min(x1+1,4*K+1)); - -endmodule - -module P2 - - p2 : [0..3]; - c2 : [0..2]; - x2 : [0..6*K+1]; - - [p2_add] (p2=0) -> (p2'=1) & (x2'=0); - [] (p2=1)&(x2=4*K)&(c2=0) -> 1/3 : (p2'=3) & (x2'=0) & (c2'=0) + 2/3 : (c2'=1) & (x2'=0); - [] (p2=1)&(x2=1)&(c2=1) -> 1/2 : (p2'=3) & (x2'=0) & (c2'=0) + 1/2 : (c2'=2) & (x2'=0); - [p2_done] (p2=1)&(x2=1)&(c2=2) -> (p2'=0) & (x2'=0) & (c2'=0); - [p2_mult] (p2=0) -> (p2'=2) & (x2'=0); - [] (p2=2)&(x2=6*K)&(c2=0) -> 1/3 : (p2'=3) & (x2'=0) & (c2'=0) + 2/3 : (c2'=1) & (x2'=0); - [] (p2=2)&(x2=1)&(c2=1) -> 1/2 : (p2'=3) & (x2'=0) & (c2'=0) + 1/2 : (c2'=2) & (x2'=0); - [p2_done] (p2=2)&(x2=1)&(c2=2) -> (p2'=0) & (x2'=0) & (c2'=0); - [p2_done] (p2=3) -> (p2'=0); - [time] ((p2=1&c2=0)=>x2+1<=4*K)&((p2=1&c2>0)=>x2+1<=1)&((p2=2&c2=0)=>x2+1<=6*K)&((p2=2&c2>0)=>x2+1<=1)&(p2=3=>x2+1<=0) -> 1.0 : (x2'=min(x2+1,6*K+1)); - -endmodule - -rewards "time" - - [time] true : 1/K; - -endrewards - -rewards "energy" - - [time] p1=0 : 10/(1000*K); - [time] p1>0 : 90/(1000*K); - [time] p2=0 : 20/(1000*K); - [time] p2>0 : 30/(1000*K); - -endrewards diff --git a/examples/multiobjective/mdp/scheduler/scheduler05_numerical.pctl b/examples/multiobjective/mdp/scheduler/scheduler05_numerical.pctl deleted file mode 100644 index 47ab6d61e..000000000 --- a/examples/multiobjective/mdp/scheduler/scheduler05_numerical.pctl +++ /dev/null @@ -1,4 +0,0 @@ -multi(R{"time"}min=?[ F "tasks_complete" ], R{"energy"}<=1.45 [ F "tasks_complete" ]) -// Original query: -//multi(R{"time"}min=?[ C ], R{"energy"}<=1.45 [ C ]) -// Note that the min values are actually infinity and prism (currently) gives wrong results for this, e.g., R{"time"}min=?[ C<=2000 ] gives a larger value than multi(R{"time"}min=?[ C ], R{"energy"}<=1.45 [ C ]) . \ No newline at end of file diff --git a/examples/multiobjective/mdp/scheduler/scheduler05_pareto.pctl b/examples/multiobjective/mdp/scheduler/scheduler05_pareto.pctl deleted file mode 100644 index b95651662..000000000 --- a/examples/multiobjective/mdp/scheduler/scheduler05_pareto.pctl +++ /dev/null @@ -1,4 +0,0 @@ - multi(R{"time"}min=?[ F "tasks_complete" ], R{"energy"}min=? [ F "tasks_complete" ]) - // Original query: - //multi(R{"energy"}min=?[ C ], R{"time"}min=? [ C ]) -// Note that the min values are actually infinity and prism (currently) gives wrong results for this, e.g., R{"time"}min=?[ C<=2000 ] gives a larger value than multi(R{"time"}min=?[ C ], R{"energy"}<=1.45 [ C ]) . \ No newline at end of file diff --git a/examples/multiobjective/mdp/scheduler/scheduler25.nm b/examples/multiobjective/mdp/scheduler/scheduler25.nm deleted file mode 100644 index 2e75dfbdd..000000000 --- a/examples/multiobjective/mdp/scheduler/scheduler25.nm +++ /dev/null @@ -1,95 +0,0 @@ -mdp - -label "tasks_complete" = (task6=3); - -const int K=25; - -module scheduler - - task1 : [0..3]; - task2 : [0..3]; - task3 : [0..3]; - task4 : [0..3]; - task5 : [0..3]; - task6 : [0..3]; - - [p1_add] task1=0 -> (task1'=1); - [p2_add] task1=0 -> (task1'=2); - [p1_mult] task2=0 -> (task2'=1); - [p2_mult] task2=0 -> (task2'=2); - [p1_mult] task3=0&task1=3 -> (task3'=1); - [p2_mult] task3=0&task1=3 -> (task3'=2); - [p1_add] task4=0&task1=3&task2=3 -> (task4'=1); - [p2_add] task4=0&task1=3&task2=3 -> (task4'=2); - [p1_mult] task5=0&task3=3 -> (task5'=1); - [p2_mult] task5=0&task3=3 -> (task5'=2); - [p1_add] task6=0&task4=3&task5=3 -> (task6'=1); - [p2_add] task6=0&task4=3&task5=3 -> (task6'=2); - [p1_done] task1=1 -> (task1'=3); - [p1_done] task2=1 -> (task2'=3); - [p1_done] task3=1 -> (task3'=3); - [p1_done] task4=1 -> (task4'=3); - [p1_done] task5=1 -> (task5'=3); - [p1_done] task6=1 -> (task6'=3); - [p2_done] task1=2 -> (task1'=3); - [p2_done] task2=2 -> (task2'=3); - [p2_done] task3=2 -> (task3'=3); - [p2_done] task4=2 -> (task4'=3); - [p2_done] task5=2 -> (task5'=3); - [p2_done] task6=2 -> (task6'=3); - [time] true -> 1.0 : true; - -endmodule - -module P1 - - p1 : [0..3]; - c1 : [0..2]; - x1 : [0..4*K+1]; - - [p1_add] (p1=0) -> (p1'=1) & (x1'=0); - [] (p1=1)&(x1=1*K)&(c1=0) -> 1/3 : (p1'=3) & (x1'=0) & (c1'=0) + 2/3 : (c1'=1) & (x1'=0); - [] (p1=1)&(x1=1*K)&(c1=1) -> 1/2 : (p1'=3) & (x1'=0) & (c1'=0) + 1/2 : (c1'=2) & (x1'=0); - [p1_done] (p1=1)&(x1=1*K)&(c1=2) -> (p1'=0) & (x1'=0) & (c1'=0); - [p1_mult] (p1=0) -> (p1'=2) & (x1'=0); - [] (p1=2)&(x1=2*K)&(c1=0) -> 1/3 : (p1'=3) & (x1'=0) & (c1'=0) + 2/3 : (c1'=1) & (x1'=0); - [] (p1=2)&(x1=1*K)&(c1=1) -> 1/2 : (p1'=3) & (x1'=0) & (c1'=0) + 1/2 : (c1'=2) & (x1'=0); - [p1_done] (p1=2)&(x1=1*K)&(c1=2) -> (p1'=0) & (x1'=0) & (c1'=0); - [p1_done] (p1=3) -> (p1'=0); - [time] (p1=1=>x1+1<=1*K)&((p1=2&c1=0)=>x1+1<=2*K)&((p1=2&c1>0)=>x1+1<=1*K)&(p1=3=>x1+1<=0) -> 1.0 : (x1'=min(x1+1,4*K+1)); - -endmodule - -module P2 - - p2 : [0..3]; - c2 : [0..2]; - x2 : [0..6*K+1]; - - [p2_add] (p2=0) -> (p2'=1) & (x2'=0); - [] (p2=1)&(x2=4*K)&(c2=0) -> 1/3 : (p2'=3) & (x2'=0) & (c2'=0) + 2/3 : (c2'=1) & (x2'=0); - [] (p2=1)&(x2=1)&(c2=1) -> 1/2 : (p2'=3) & (x2'=0) & (c2'=0) + 1/2 : (c2'=2) & (x2'=0); - [p2_done] (p2=1)&(x2=1)&(c2=2) -> (p2'=0) & (x2'=0) & (c2'=0); - [p2_mult] (p2=0) -> (p2'=2) & (x2'=0); - [] (p2=2)&(x2=6*K)&(c2=0) -> 1/3 : (p2'=3) & (x2'=0) & (c2'=0) + 2/3 : (c2'=1) & (x2'=0); - [] (p2=2)&(x2=1)&(c2=1) -> 1/2 : (p2'=3) & (x2'=0) & (c2'=0) + 1/2 : (c2'=2) & (x2'=0); - [p2_done] (p2=2)&(x2=1)&(c2=2) -> (p2'=0) & (x2'=0) & (c2'=0); - [p2_done] (p2=3) -> (p2'=0); - [time] ((p2=1&c2=0)=>x2+1<=4*K)&((p2=1&c2>0)=>x2+1<=1)&((p2=2&c2=0)=>x2+1<=6*K)&((p2=2&c2>0)=>x2+1<=1)&(p2=3=>x2+1<=0) -> 1.0 : (x2'=min(x2+1,6*K+1)); - -endmodule - -rewards "time" - - [time] true : 1/K; - -endrewards - -rewards "energy" - - [time] p1=0 : 10/(1000*K); - [time] p1>0 : 90/(1000*K); - [time] p2=0 : 20/(1000*K); - [time] p2>0 : 30/(1000*K); - -endrewards diff --git a/examples/multiobjective/mdp/scheduler/scheduler25_numerical.pctl b/examples/multiobjective/mdp/scheduler/scheduler25_numerical.pctl deleted file mode 100644 index 6d91107a4..000000000 --- a/examples/multiobjective/mdp/scheduler/scheduler25_numerical.pctl +++ /dev/null @@ -1,4 +0,0 @@ - multi(R{"time"}min=?[ F "tasks_complete" ], R{"energy"}<=1.45 [ F "tasks_complete" ]) -// Original query: -// multi(R{"time"}min=?[ C ], R{"energy"}<=1.45 [ C ]) -// Note that the min values are actually infinity and prism (currently) gives wrong results for this, e.g., R{"time"}min=?[ C<=2000 ] gives a larger value than multi(R{"time"}min=?[ C ], R{"energy"}<=1.45 [ C ]) . \ No newline at end of file diff --git a/examples/multiobjective/mdp/scheduler/scheduler25_pareto.pctl b/examples/multiobjective/mdp/scheduler/scheduler25_pareto.pctl deleted file mode 100644 index d818ef6d2..000000000 --- a/examples/multiobjective/mdp/scheduler/scheduler25_pareto.pctl +++ /dev/null @@ -1,4 +0,0 @@ - multi(R{"time"}min=?[ F "tasks_complete" ], R{"energy"}min=? [ F "tasks_complete" ]) -// Original query: -// multi(R{"energy"}min=?[ C ], R{"time"}min=? [ C ]) -// Note that the min values are actually infinity and prism (currently) gives wrong results for this, e.g., R{"time"}min=?[ C<=2000 ] gives a larger value than multi(R{"time"}min=?[ C ], R{"energy"}<=1.45 [ C ]) . \ No newline at end of file diff --git a/examples/multiobjective/mdp/scheduler/scheduler50.nm b/examples/multiobjective/mdp/scheduler/scheduler50.nm deleted file mode 100644 index 5e44a94fc..000000000 --- a/examples/multiobjective/mdp/scheduler/scheduler50.nm +++ /dev/null @@ -1,95 +0,0 @@ -mdp - -label "tasks_complete" = (task6=3); - -const int K=50; - -module scheduler - - task1 : [0..3]; - task2 : [0..3]; - task3 : [0..3]; - task4 : [0..3]; - task5 : [0..3]; - task6 : [0..3]; - - [p1_add] task1=0 -> (task1'=1); - [p2_add] task1=0 -> (task1'=2); - [p1_mult] task2=0 -> (task2'=1); - [p2_mult] task2=0 -> (task2'=2); - [p1_mult] task3=0&task1=3 -> (task3'=1); - [p2_mult] task3=0&task1=3 -> (task3'=2); - [p1_add] task4=0&task1=3&task2=3 -> (task4'=1); - [p2_add] task4=0&task1=3&task2=3 -> (task4'=2); - [p1_mult] task5=0&task3=3 -> (task5'=1); - [p2_mult] task5=0&task3=3 -> (task5'=2); - [p1_add] task6=0&task4=3&task5=3 -> (task6'=1); - [p2_add] task6=0&task4=3&task5=3 -> (task6'=2); - [p1_done] task1=1 -> (task1'=3); - [p1_done] task2=1 -> (task2'=3); - [p1_done] task3=1 -> (task3'=3); - [p1_done] task4=1 -> (task4'=3); - [p1_done] task5=1 -> (task5'=3); - [p1_done] task6=1 -> (task6'=3); - [p2_done] task1=2 -> (task1'=3); - [p2_done] task2=2 -> (task2'=3); - [p2_done] task3=2 -> (task3'=3); - [p2_done] task4=2 -> (task4'=3); - [p2_done] task5=2 -> (task5'=3); - [p2_done] task6=2 -> (task6'=3); - [time] true -> 1.0 : true; - -endmodule - -module P1 - - p1 : [0..3]; - c1 : [0..2]; - x1 : [0..4*K+1]; - - [p1_add] (p1=0) -> (p1'=1) & (x1'=0); - [] (p1=1)&(x1=1*K)&(c1=0) -> 1/3 : (p1'=3) & (x1'=0) & (c1'=0) + 2/3 : (c1'=1) & (x1'=0); - [] (p1=1)&(x1=1*K)&(c1=1) -> 1/2 : (p1'=3) & (x1'=0) & (c1'=0) + 1/2 : (c1'=2) & (x1'=0); - [p1_done] (p1=1)&(x1=1*K)&(c1=2) -> (p1'=0) & (x1'=0) & (c1'=0); - [p1_mult] (p1=0) -> (p1'=2) & (x1'=0); - [] (p1=2)&(x1=2*K)&(c1=0) -> 1/3 : (p1'=3) & (x1'=0) & (c1'=0) + 2/3 : (c1'=1) & (x1'=0); - [] (p1=2)&(x1=1*K)&(c1=1) -> 1/2 : (p1'=3) & (x1'=0) & (c1'=0) + 1/2 : (c1'=2) & (x1'=0); - [p1_done] (p1=2)&(x1=1*K)&(c1=2) -> (p1'=0) & (x1'=0) & (c1'=0); - [p1_done] (p1=3) -> (p1'=0); - [time] (p1=1=>x1+1<=1*K)&((p1=2&c1=0)=>x1+1<=2*K)&((p1=2&c1>0)=>x1+1<=1*K)&(p1=3=>x1+1<=0) -> 1.0 : (x1'=min(x1+1,4*K+1)); - -endmodule - -module P2 - - p2 : [0..3]; - c2 : [0..2]; - x2 : [0..6*K+1]; - - [p2_add] (p2=0) -> (p2'=1) & (x2'=0); - [] (p2=1)&(x2=4*K)&(c2=0) -> 1/3 : (p2'=3) & (x2'=0) & (c2'=0) + 2/3 : (c2'=1) & (x2'=0); - [] (p2=1)&(x2=1)&(c2=1) -> 1/2 : (p2'=3) & (x2'=0) & (c2'=0) + 1/2 : (c2'=2) & (x2'=0); - [p2_done] (p2=1)&(x2=1)&(c2=2) -> (p2'=0) & (x2'=0) & (c2'=0); - [p2_mult] (p2=0) -> (p2'=2) & (x2'=0); - [] (p2=2)&(x2=6*K)&(c2=0) -> 1/3 : (p2'=3) & (x2'=0) & (c2'=0) + 2/3 : (c2'=1) & (x2'=0); - [] (p2=2)&(x2=1)&(c2=1) -> 1/2 : (p2'=3) & (x2'=0) & (c2'=0) + 1/2 : (c2'=2) & (x2'=0); - [p2_done] (p2=2)&(x2=1)&(c2=2) -> (p2'=0) & (x2'=0) & (c2'=0); - [p2_done] (p2=3) -> (p2'=0); - [time] ((p2=1&c2=0)=>x2+1<=4*K)&((p2=1&c2>0)=>x2+1<=1)&((p2=2&c2=0)=>x2+1<=6*K)&((p2=2&c2>0)=>x2+1<=1)&(p2=3=>x2+1<=0) -> 1.0 : (x2'=min(x2+1,6*K+1)); - -endmodule - -rewards "time" - - [time] true : 1/K; - -endrewards - -rewards "energy" - - [time] p1=0 : 10/(1000*K); - [time] p1>0 : 90/(1000*K); - [time] p2=0 : 20/(1000*K); - [time] p2>0 : 30/(1000*K); - -endrewards diff --git a/examples/multiobjective/mdp/scheduler/scheduler50_numerical.pctl b/examples/multiobjective/mdp/scheduler/scheduler50_numerical.pctl deleted file mode 100644 index 6d91107a4..000000000 --- a/examples/multiobjective/mdp/scheduler/scheduler50_numerical.pctl +++ /dev/null @@ -1,4 +0,0 @@ - multi(R{"time"}min=?[ F "tasks_complete" ], R{"energy"}<=1.45 [ F "tasks_complete" ]) -// Original query: -// multi(R{"time"}min=?[ C ], R{"energy"}<=1.45 [ C ]) -// Note that the min values are actually infinity and prism (currently) gives wrong results for this, e.g., R{"time"}min=?[ C<=2000 ] gives a larger value than multi(R{"time"}min=?[ C ], R{"energy"}<=1.45 [ C ]) . \ No newline at end of file diff --git a/examples/multiobjective/mdp/scheduler/scheduler50_pareto.pctl b/examples/multiobjective/mdp/scheduler/scheduler50_pareto.pctl deleted file mode 100644 index 9cb7bf3d0..000000000 --- a/examples/multiobjective/mdp/scheduler/scheduler50_pareto.pctl +++ /dev/null @@ -1,4 +0,0 @@ - multi(R{"time"}min=?[ F "tasks_complete" ], R{"energy"}min=? [ F "tasks_complete" ]) -// Original query: -// multi(R{"energy"}min=?[ C ], R{"time"}min=? [ C ]) -// Note that the min values are actually infinity and prism (currently) gives wrong results for this, e.g., R{"time"}min=?[ C<=2000 ] gives a larger value than multi(R{"time"}min=?[ C ], R{"energy"}<=1.45 [ C ]) . \ No newline at end of file diff --git a/examples/multiobjective/mdp/simple/simple.nm b/examples/multiobjective/mdp/simple/simple.nm deleted file mode 100644 index 04c1a0ea0..000000000 --- a/examples/multiobjective/mdp/simple/simple.nm +++ /dev/null @@ -1,25 +0,0 @@ - -mdp - -module simple - - // local state - s : [0..2] init 0; - - [A] s=0 -> 0.2 : (s'=1) + 0.8 : (s'=0); - [B] s=0 -> 1 : (s'=2); - [C] s=0 -> 1 : (s'=0); - [] s>0 -> 1 : (s'=s); -endmodule - -rewards "actA" - [A] true : 1; -endrewards - -rewards "actB" - [B] true : 2; -endrewards - - -label "a" = s=1; -label "b" = s=2; \ No newline at end of file diff --git a/examples/multiobjective/mdp/simple/simple.pctl b/examples/multiobjective/mdp/simple/simple.pctl deleted file mode 100644 index 91d5becac..000000000 --- a/examples/multiobjective/mdp/simple/simple.pctl +++ /dev/null @@ -1,2 +0,0 @@ -multi(P<0.4 [ F "a"], P<0.3 [ F "b"] ) -//multi(Pmin=? [ F<=10 "a"], R<0.3 [ F "b" | "a"] ) \ No newline at end of file diff --git a/examples/multiobjective/mdp/team/origFiles/MDP_a2_r3_t2_full_exp.nm b/examples/multiobjective/mdp/team/origFiles/MDP_a2_r3_t2_full_exp.nm deleted file mode 100644 index 4c183b9cf..000000000 --- a/examples/multiobjective/mdp/team/origFiles/MDP_a2_r3_t2_full_exp.nm +++ /dev/null @@ -1,231 +0,0 @@ -mdp - -// parameters -const int n_resources = 3; -const int n_tasks = 2; -const int n_sensors = 2; - - -// sensor resources -const int resource1=1; -const int resource2=2; - -// network configuration -const int e12=1; -const int e21=e12; - -module controller // schedules the algorithm - - // algorithm status - status : [0..5]; - - // task resource indicator variables - t1_r1 : [0..1]; - t1_r2 : [0..1]; - t1_r3 : [0..1]; - - t2_r1 : [0..1]; - t2_r2 : [0..1]; - t2_r3 : [0..1]; - - // schedule placeholders - turn1 : [0..n_sensors]; - turn2 : [0..n_sensors]; - - // selecting schedule uniformly at random - [] status=0 -> 1/2 : (turn1'=1) & (turn2'=2) & (status'=1) - + 1/2 : (turn1'=2) & (turn2'=1) & (status'=1); - - - // initialising non-empty tasks uniformly at random - [] status=1 -> 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2); - - // executing the schedule - - // 1st round - [str1] status=2 & turn1=1 -> (status'=2); - [fin1] status=2 & turn1=1 -> (status'=3); - [str2] status=2 & turn1=2 -> (status'=2); - [fin2] status=2 & turn1=2 -> (status'=3); - - // 2nd round - [str1] status=3 & turn2=1 -> (status'=3); - [fin1] status=3 & turn2=1 -> (status'=4); - [str2] status=3 & turn2=2 -> (status'=3); - [fin2] status=3 & turn2=2 -> (status'=4); - - - [] status=4 -> (status'=5); - - [] status=5 -> true; - -endmodule - -module sensor1 - - state1 : [0..1]; - - // team membership indicators - m1_t1 : [0..1]; - m1_t2 : [0..1]; - - // starting turn, selecting order of tasks - [str1] state1=0 -> (state1'=1); - - // if there is no team and has required skill - initiating the team - [] state1=1 & !committed & team_size_t1=0 & has_resource_t1 -> (m1_t1'=1); - [] state1=1 & !committed & team_size_t2=0 & has_resource_t2 -> (m1_t2'=1); - - // if team already exists and one of the neighbours is in it - joining the team - [] state1=1 & !committed & team_size_t1>0 & can_join_t1 & has_resource_t1 & !resource_filled_t1 -> (m1_t1'=1); - [] state1=1 & !committed & team_size_t2>0 & can_join_t2 & has_resource_t2 & !resource_filled_t2 -> (m1_t2'=1); - - [fin1] state1>0 -> (state1'=0); - -endmodule - -module sensor2 = sensor1 -[ - state1=state2, - - str1=str2, - fin1=fin2, - - m1_t1=m2_t1, - m1_t2=m2_t2, - - m2_t1=m1_t1, - m2_t2=m1_t2, - - resource1=resource2, - resource2=resource1, - - e12=e21, - e13=e23, - e14=e24, - e15=e25, - - e21=e12, - e23=e13, - e24=e14, - e25=e15 -] -endmodule - - - - -// agent is committed to some team -formula committed = (m1_t1+m1_t2) > 0; - -// formulae to compute team sizes -formula team_size_t1 = m1_t1+m2_t1; -formula team_size_t2 = m1_t2+m2_t2; - -// formulae to check whether the agent can join the team -formula can_join_t1 = e12*m2_t1 > 0; -formula can_join_t2 = e12*m2_t2 > 0; - -// formulae to check whether agent has the resource required by the task -formula has_resource_t1 = ( (t1_r1=1&resource1=1) | (t1_r2=1&resource1=2) | (t1_r3=1&resource1=3) ); -formula has_resource_t2 = ( (t2_r1=1&resource1=1) | (t2_r2=1&resource1=2) | (t2_r3=1&resource1=3) ); - -// formulae to check whether the resource of an agent has been already filled in the team -formula resource_filled_t1 = (m2_t1=1 & resource1=resource2); -formula resource_filled_t2 = (m2_t2=1 & resource1=resource2); - -// formula to compute team initiation probability (assuming each agent has at least one connection) -formula IP = (e12*(1-((m2_t1+m2_t2)=0?0:1))) / (e12); - - - - -// labels and formulae for property specification -formula finished = (status=4); -label "end" = (status=5); - - -formula task1_completed = finished - & ((t1_r1=1)=>((m1_t1=1&resource1=1)|(m2_t1=1&resource2=1))) - & ((t1_r2=1)=>((m1_t1=1&resource1=2)|(m2_t1=1&resource2=2))) - & ((t1_r3=1)=>((m1_t1=1&resource1=3)|(m2_t1=1&resource2=3))); - -formula task2_completed = finished - & ((t2_r1=1)=>((m1_t2=1&resource1=1)|(m2_t2=1&resource2=1))) - & ((t2_r2=1)=>((m1_t2=1&resource1=2)|(m2_t2=1&resource2=2))) - & ((t2_r3=1)=>((m1_t2=1&resource1=3)|(m2_t2=1&resource2=3))); - - - -formula agent1_joins_successful_team = (task1_completed & m1_t1=1) | (task2_completed & m1_t2=1); -formula agent1_joins_successful_team_of_1 = (task1_completed & m1_t1=1 & team_size_t1=1) | (task2_completed & m1_t2=1 & team_size_t2=1); -formula agent1_joins_successful_team_of_2 = (task1_completed & m1_t1=1 & team_size_t1=2) | (task2_completed & m1_t2=1 & team_size_t2=2); -formula agent1_joins_successful_team_of_3 = (task1_completed & m1_t1=1 & team_size_t1=3) | (task2_completed & m1_t2=1 & team_size_t2=3); - -formula agent2_joins_successful_team = (task1_completed & m2_t1=1) | (task2_completed & m2_t2=1); -formula agent2_joins_successful_team_of_1 = (task1_completed & m2_t1=1 & team_size_t1=1) | (task2_completed & m2_t2=1 & team_size_t2=1); -formula agent2_joins_successful_team_of_2 = (task1_completed & m2_t1=1 & team_size_t1=2) | (task2_completed & m2_t2=1 & team_size_t2=2); -formula agent2_joins_successful_team_of_3 = (task1_completed & m2_t1=1 & team_size_t1=3) | (task2_completed & m2_t2=1 & team_size_t2=3); - -// rewards -rewards "w_1_total" - [] agent1_joins_successful_team : 1; - [] agent2_joins_successful_team : 1; -endrewards - -rewards "w_2_total" - [] task1_completed : 1; - [] task2_completed : 1; -endrewards - - - - diff --git a/examples/multiobjective/mdp/team/origFiles/MDP_a3_r3_t2_full_exp.nm b/examples/multiobjective/mdp/team/origFiles/MDP_a3_r3_t2_full_exp.nm deleted file mode 100644 index 8a754d922..000000000 --- a/examples/multiobjective/mdp/team/origFiles/MDP_a3_r3_t2_full_exp.nm +++ /dev/null @@ -1,287 +0,0 @@ -mdp - -// parameters -const int n_resources = 3; -const int n_tasks = 2; -const int n_sensors = 3; - - -// sensor resources -const int resource1=1; -const int resource2=2; -const int resource3=3; - -// network configuration -const int e12=1; -const int e13=1; - -const int e21=e12; -const int e23=1; - -const int e31=e13; -const int e32=e23; - - -module controller // schedules the algorithm - - // algorithm status - status : [0..6]; - - // task resource indicator variables - t1_r1 : [0..1]; - t1_r2 : [0..1]; - t1_r3 : [0..1]; - - t2_r1 : [0..1]; - t2_r2 : [0..1]; - t2_r3 : [0..1]; - - // schedule placeholders - turn1 : [0..n_sensors]; - turn2 : [0..n_sensors]; - turn3 : [0..n_sensors]; - - // selecting schedule uniformly at random - [] status=0 -> 1/6 : (turn1'=1) & (turn2'=2) & (turn3'=3) & (status'=1) - + 1/6 : (turn1'=1) & (turn2'=3) & (turn3'=2) & (status'=1) - + 1/6 : (turn1'=2) & (turn2'=1) & (turn3'=3) & (status'=1) - + 1/6 : (turn1'=2) & (turn2'=3) & (turn3'=1) & (status'=1) - + 1/6 : (turn1'=3) & (turn2'=1) & (turn3'=2) & (status'=1) - + 1/6 : (turn1'=3) & (turn2'=2) & (turn3'=1) & (status'=1); - - - // initialising non-empty tasks uniformly at random - [] status=1 -> 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2); - - // executing the schedule - - // 1st round - [str1] status=2 & turn1=1 -> (status'=2); - [fin1] status=2 & turn1=1 -> (status'=3); - [str2] status=2 & turn1=2 -> (status'=2); - [fin2] status=2 & turn1=2 -> (status'=3); - [str3] status=2 & turn1=3 -> (status'=2); - [fin3] status=2 & turn1=3 -> (status'=3); - - // 2nd round - [str1] status=3 & turn2=1 -> (status'=3); - [fin1] status=3 & turn2=1 -> (status'=4); - [str2] status=3 & turn2=2 -> (status'=3); - [fin2] status=3 & turn2=2 -> (status'=4); - [str3] status=3 & turn2=3 -> (status'=3); - [fin3] status=3 & turn2=3 -> (status'=4); - - // 3rd round - [str1] status=4 & turn3=1 -> (status'=4); - [fin1] status=4 & turn3=1 -> (status'=5); - [str2] status=4 & turn3=2 -> (status'=4); - [fin2] status=4 & turn3=2 -> (status'=5); - [str3] status=4 & turn3=3 -> (status'=4); - [fin3] status=4 & turn3=3 -> (status'=5); - - [] status=5 -> (status'=6); - - [] status=6 -> true; - -endmodule - -module sensor1 - - state1 : [0..1]; - - // team membership indicators - m1_t1 : [0..1]; - m1_t2 : [0..1]; - - // starting turn, selecting order of tasks - [str1] state1=0 -> (state1'=1); - - // if there is no team and has required skill - initiating the team - [] state1=1 & !committed & team_size_t1=0 & has_resource_t1 -> (m1_t1'=1); - [] state1=1 & !committed & team_size_t2=0 & has_resource_t2 -> (m1_t2'=1); - - // if team already exists and one of the neighbours is in it - joining the team - [] state1=1 & !committed & team_size_t1>0 & can_join_t1 & has_resource_t1 & !resource_filled_t1 -> (m1_t1'=1); - [] state1=1 & !committed & team_size_t2>0 & can_join_t2 & has_resource_t2 & !resource_filled_t2 -> (m1_t2'=1); - - [fin1] state1>0 -> (state1'=0); - -endmodule - -module sensor2 = sensor1 -[ - state1=state2, - - str1=str2, - fin1=fin2, - - m1_t1=m2_t1, - m1_t2=m2_t2, - - m2_t1=m1_t1, - m2_t2=m1_t2, - - resource1=resource2, - resource2=resource1, - - e12=e21, - e13=e23, - e14=e24, - e15=e25, - - e21=e12, - e23=e13, - e24=e14, - e25=e15 -] -endmodule - -module sensor3 = sensor1 -[ - state1=state3, - - str1=str3, - fin1=fin3, - - m1_t1=m3_t1, - m1_t2=m3_t2, - m3_t1=m1_t1, - m3_t2=m1_t2, - - resource1=resource3, - resource3=resource1, - - e12=e32, - e13=e31, - e14=e34, - e15=e35, - - e31=e13, - e32=e12, - e34=e14, - e35=e15 -] -endmodule - - - -// agent is committed to some team -formula committed = (m1_t1+m1_t2) > 0; - -// formulae to compute team sizes -formula team_size_t1 = m1_t1+m2_t1+m3_t1; -formula team_size_t2 = m1_t2+m2_t2+m3_t2; - -// formulae to check whether the agent can join the team -formula can_join_t1 = e12*m2_t1 + e13*m3_t1 > 0; -formula can_join_t2 = e12*m2_t2 + e13*m3_t2 > 0; - -// formulae to check whether agent has the resource required by the task -formula has_resource_t1 = ( (t1_r1=1&resource1=1) | (t1_r2=1&resource1=2) | (t1_r3=1&resource1=3) ); -formula has_resource_t2 = ( (t2_r1=1&resource1=1) | (t2_r2=1&resource1=2) | (t2_r3=1&resource1=3) ); - -// formulae to check whether the resource of an agent has been already filled in the team -formula resource_filled_t1 = (m2_t1=1 & resource1=resource2) | (m3_t1=1 & resource1=resource3); -formula resource_filled_t2 = (m2_t2=1 & resource1=resource2) | (m3_t2=1 & resource1=resource3); - -// formula to compute team initiation probability (assuming each agent has at least one connection) -formula IP = (e12*(1-((m2_t1+m2_t2)=0?0:1))+e13*(1-((m3_t1+m3_t2)=0?0:1))) / (e12+e13); - - - - -// labels and formulae for property specification -formula finished = (status=5); -label "end" = (status=6); - - -formula task1_completed = finished - & ((t1_r1=1)=>((m1_t1=1&resource1=1)|(m2_t1=1&resource2=1)|(m3_t1=1&resource3=1))) - & ((t1_r2=1)=>((m1_t1=1&resource1=2)|(m2_t1=1&resource2=2)|(m3_t1=1&resource3=2))) - & ((t1_r3=1)=>((m1_t1=1&resource1=3)|(m2_t1=1&resource2=3)|(m3_t1=1&resource3=3))); - -formula task2_completed = finished - & ((t2_r1=1)=>((m1_t2=1&resource1=1)|(m2_t2=1&resource2=1)|(m3_t2=1&resource3=1))) - & ((t2_r2=1)=>((m1_t2=1&resource1=2)|(m2_t2=1&resource2=2)|(m3_t2=1&resource3=2))) - & ((t2_r3=1)=>((m1_t2=1&resource1=3)|(m2_t2=1&resource2=3)|(m3_t2=1&resource3=3))); - - - -formula agent1_joins_successful_team = (task1_completed & m1_t1=1) | (task2_completed & m1_t2=1); -formula agent1_joins_successful_team_of_1 = (task1_completed & m1_t1=1 & team_size_t1=1) | (task2_completed & m1_t2=1 & team_size_t2=1); -formula agent1_joins_successful_team_of_2 = (task1_completed & m1_t1=1 & team_size_t1=2) | (task2_completed & m1_t2=1 & team_size_t2=2); -formula agent1_joins_successful_team_of_3 = (task1_completed & m1_t1=1 & team_size_t1=3) | (task2_completed & m1_t2=1 & team_size_t2=3); - -formula agent2_joins_successful_team = (task1_completed & m2_t1=1) | (task2_completed & m2_t2=1); -formula agent2_joins_successful_team_of_1 = (task1_completed & m2_t1=1 & team_size_t1=1) | (task2_completed & m2_t2=1 & team_size_t2=1); -formula agent2_joins_successful_team_of_2 = (task1_completed & m2_t1=1 & team_size_t1=2) | (task2_completed & m2_t2=1 & team_size_t2=2); -formula agent2_joins_successful_team_of_3 = (task1_completed & m2_t1=1 & team_size_t1=3) | (task2_completed & m2_t2=1 & team_size_t2=3); - -formula agent3_joins_successful_team = (task1_completed & m3_t1=1) | (task2_completed & m3_t2=1); -formula agent3_joins_successful_team_of_1 = (task1_completed & m3_t1=1 & team_size_t1=1) | (task2_completed & m3_t2=1 & team_size_t2=1); -formula agent3_joins_successful_team_of_2 = (task1_completed & m3_t1=1 & team_size_t1=2) | (task2_completed & m3_t2=1 & team_size_t2=2); -formula agent3_joins_successful_team_of_3 = (task1_completed & m3_t1=1 & team_size_t1=3) | (task2_completed & m3_t2=1 & team_size_t2=3); - -// rewards -rewards "w_1_total" - [] agent1_joins_successful_team : 1; - [] agent2_joins_successful_team : 1; - [] agent3_joins_successful_team : 1; -endrewards - -rewards "w_2_total" - [] task1_completed : 1; - [] task2_completed : 1; -endrewards - - - - diff --git a/examples/multiobjective/mdp/team/origFiles/MDP_a4_r3_t2_full_exp.nm b/examples/multiobjective/mdp/team/origFiles/MDP_a4_r3_t2_full_exp.nm deleted file mode 100644 index bc9e536c2..000000000 --- a/examples/multiobjective/mdp/team/origFiles/MDP_a4_r3_t2_full_exp.nm +++ /dev/null @@ -1,364 +0,0 @@ -mdp - -// parameters -const int n_resources = 3; -const int n_tasks = 2; -const int n_sensors = 4; - - -// sensor resources -const int resource1=1; -const int resource2=2; -const int resource3=3; -const int resource4=1; - -// network configuration -const int e12=1; -const int e13=1; -const int e14=1; - -const int e21=e12; -const int e23=1; -const int e24=1; - -const int e31=e13; -const int e32=e23; -const int e34=1; - -const int e41=e14; -const int e42=e24; -const int e43=e34; - - -module controller // schedules the algorithm - - // algorithm status - status : [0..7]; - - // task resource indicator variables - t1_r1 : [0..1]; - t1_r2 : [0..1]; - t1_r3 : [0..1]; - - t2_r1 : [0..1]; - t2_r2 : [0..1]; - t2_r3 : [0..1]; - - // schedule placeholders - turn1 : [0..n_sensors]; - turn2 : [0..n_sensors]; - turn3 : [0..n_sensors]; - turn4 : [0..n_sensors]; - turn5 : [0..n_sensors]; - - // selecting schedule uniformly at random - [] status=0 -> 1/24 : (turn1'=1) & (turn2'=2) & (turn3'=3) & (turn4'=4) & (status'=1) - + 1/24 : (turn1'=1) & (turn2'=2) & (turn3'=4) & (turn4'=3) & (status'=1) - + 1/24 : (turn1'=1) & (turn2'=3) & (turn3'=2) & (turn4'=4) & (status'=1) - + 1/24 : (turn1'=1) & (turn2'=3) & (turn3'=4) & (turn4'=2) & (status'=1) - + 1/24 : (turn1'=1) & (turn2'=4) & (turn3'=2) & (turn4'=3) & (status'=1) - + 1/24 : (turn1'=1) & (turn2'=4) & (turn3'=3) & (turn4'=2) & (status'=1) - + 1/24 : (turn1'=2) & (turn2'=1) & (turn3'=3) & (turn4'=4) & (status'=1) - + 1/24 : (turn1'=2) & (turn2'=1) & (turn3'=4) & (turn4'=3) & (status'=1) - + 1/24 : (turn1'=2) & (turn2'=3) & (turn3'=1) & (turn4'=4) & (status'=1) - + 1/24 : (turn1'=2) & (turn2'=3) & (turn3'=4) & (turn4'=1) & (status'=1) - + 1/24 : (turn1'=2) & (turn2'=4) & (turn3'=1) & (turn4'=3) & (status'=1) - + 1/24 : (turn1'=2) & (turn2'=4) & (turn3'=3) & (turn4'=1) & (status'=1) - + 1/24 : (turn1'=3) & (turn2'=1) & (turn3'=2) & (turn4'=4) & (status'=1) - + 1/24 : (turn1'=3) & (turn2'=1) & (turn3'=4) & (turn4'=2) & (status'=1) - + 1/24 : (turn1'=3) & (turn2'=2) & (turn3'=1) & (turn4'=4) & (status'=1) - + 1/24 : (turn1'=3) & (turn2'=2) & (turn3'=4) & (turn4'=1) & (status'=1) - + 1/24 : (turn1'=3) & (turn2'=4) & (turn3'=1) & (turn4'=2) & (status'=1) - + 1/24 : (turn1'=3) & (turn2'=4) & (turn3'=2) & (turn4'=1) & (status'=1) - + 1/24 : (turn1'=4) & (turn2'=1) & (turn3'=2) & (turn4'=3) & (status'=1) - + 1/24 : (turn1'=4) & (turn2'=1) & (turn3'=3) & (turn4'=2) & (status'=1) - + 1/24 : (turn1'=4) & (turn2'=2) & (turn3'=1) & (turn4'=3) & (status'=1) - + 1/24 : (turn1'=4) & (turn2'=2) & (turn3'=3) & (turn4'=1) & (status'=1) - + 1/24 : (turn1'=4) & (turn2'=3) & (turn3'=1) & (turn4'=2) & (status'=1) - + 1/24 : (turn1'=4) & (turn2'=3) & (turn3'=2) & (turn4'=1) & (status'=1); - - - // initialising non-empty tasks uniformly at random - [] status=1 -> 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2); - - // executing the schedule - - // 1st round - [str1] status=2 & turn1=1 -> (status'=2); - [fin1] status=2 & turn1=1 -> (status'=3); - [str2] status=2 & turn1=2 -> (status'=2); - [fin2] status=2 & turn1=2 -> (status'=3); - [str3] status=2 & turn1=3 -> (status'=2); - [fin3] status=2 & turn1=3 -> (status'=3); - [str4] status=2 & turn1=4 -> (status'=2); - [fin4] status=2 & turn1=4 -> (status'=3); - - // 2nd round - [str1] status=3 & turn2=1 -> (status'=3); - [fin1] status=3 & turn2=1 -> (status'=4); - [str2] status=3 & turn2=2 -> (status'=3); - [fin2] status=3 & turn2=2 -> (status'=4); - [str3] status=3 & turn2=3 -> (status'=3); - [fin3] status=3 & turn2=3 -> (status'=4); - [str4] status=3 & turn2=4 -> (status'=3); - [fin4] status=3 & turn2=4 -> (status'=4); - - // 3rd round - [str1] status=4 & turn3=1 -> (status'=4); - [fin1] status=4 & turn3=1 -> (status'=5); - [str2] status=4 & turn3=2 -> (status'=4); - [fin2] status=4 & turn3=2 -> (status'=5); - [str3] status=4 & turn3=3 -> (status'=4); - [fin3] status=4 & turn3=3 -> (status'=5); - [str4] status=4 & turn3=4 -> (status'=4); - [fin4] status=4 & turn3=4 -> (status'=5); - - // 4th round - [str1] status=5 & turn4=1 -> (status'=5); - [fin1] status=5 & turn4=1 -> (status'=6); - [str2] status=5 & turn4=2 -> (status'=5); - [fin2] status=5 & turn4=2 -> (status'=6); - [str3] status=5 & turn4=3 -> (status'=5); - [fin3] status=5 & turn4=3 -> (status'=6); - [str4] status=5 & turn4=4 -> (status'=5); - [fin4] status=5 & turn4=4 -> (status'=6); - - [] status=6 -> (status'=7); - - [] status=7 -> (status'=7); - -endmodule - -module sensor1 - - state1 : [0..1]; - - // team membership indicators - m1_t1 : [0..1]; - m1_t2 : [0..1]; - - // starting turn, selecting order of tasks - [str1] state1=0 -> (state1'=1); - - // if there is no team and has required skill - initiating the team - [] state1=1 & !committed & team_size_t1=0 & has_resource_t1 -> (m1_t1'=1); - [] state1=1 & !committed & team_size_t2=0 & has_resource_t2 -> (m1_t2'=1); - - // if team already exists and one of the neighbours is in it - joining the team - [] state1=1 & !committed & team_size_t1>0 & can_join_t1 & has_resource_t1 & !resource_filled_t1 -> (m1_t1'=1); - [] state1=1 & !committed & team_size_t2>0 & can_join_t2 & has_resource_t2 & !resource_filled_t2 -> (m1_t2'=1); - - [fin1] state1>0 -> (state1'=0); - -endmodule - -module sensor2 = sensor1 -[ - state1=state2, - - str1=str2, - fin1=fin2, - - m1_t1=m2_t1, - m1_t2=m2_t2, - - m2_t1=m1_t1, - m2_t2=m1_t2, - - resource1=resource2, - resource2=resource1, - - e12=e21, - e13=e23, - e14=e24, - e15=e25, - - e21=e12, - e23=e13, - e24=e14, - e25=e15 -] -endmodule - -module sensor3 = sensor1 -[ - state1=state3, - - str1=str3, - fin1=fin3, - - m1_t1=m3_t1, - m1_t2=m3_t2, - m3_t1=m1_t1, - m3_t2=m1_t2, - - resource1=resource3, - resource3=resource1, - - e12=e32, - e13=e31, - e14=e34, - e15=e35, - - e31=e13, - e32=e12, - e34=e14, - e35=e15 -] -endmodule - -module sensor4 = sensor1 -[ - state1=state4, - - str1=str4, - fin1=fin4, - - m1_t1=m4_t1, - m1_t2=m4_t2, - - m4_t1=m1_t1, - m4_t2=m1_t2, - - resource1=resource4, - resource4=resource1, - - e12=e42, - e13=e43, - e14=e41, - e15=e45, - - e41=e14, - e42=e12, - e43=e13, - e45=e15 -] -endmodule - - - -// agent is committed to some team -formula committed = (m1_t1+m1_t2) > 0; - -// formulae to compute team sizes -formula team_size_t1 = m1_t1+m2_t1+m3_t1+m4_t1; -formula team_size_t2 = m1_t2+m2_t2+m3_t2+m4_t2; - -// formulae to check whether the agent can join the team -formula can_join_t1 = e12*m2_t1 + e13*m3_t1 + e14*m4_t1 > 0; -formula can_join_t2 = e12*m2_t2 + e13*m3_t2 + e14*m4_t2 > 0; - -// formulae to check whether agent has the resource required by the task -formula has_resource_t1 = ( (t1_r1=1&resource1=1) | (t1_r2=1&resource1=2) | (t1_r3=1&resource1=3) ); -formula has_resource_t2 = ( (t2_r1=1&resource1=1) | (t2_r2=1&resource1=2) | (t2_r3=1&resource1=3) ); - -// formulae to check whether the resource of an agent has been already filled in the team -formula resource_filled_t1 = (m2_t1=1 & resource1=resource2) | (m3_t1=1 & resource1=resource3) | (m4_t1=1 & resource1=resource4); -formula resource_filled_t2 = (m2_t2=1 & resource1=resource2) | (m3_t2=1 & resource1=resource3) | (m4_t2=1 & resource1=resource4); - -// formula to compute team initiation probability (assuming each agent has at least one connection) -formula IP = (e12*(1-((m2_t1+m2_t2)=0?0:1))+e13*(1-((m3_t1+m3_t2)=0?0:1))+e14*(1-((m4_t1+m4_t2)=0?0:1))) / (e12+e13+e14); - - - - -// labels and formulae for property specification -formula finished = (status=6); -label "end" = (status=7); - - -formula agent1_joins_successful_team = (task1_completed & m1_t1=1) | (task2_completed & m1_t2=1); -formula agent1_joins_successful_team_of_1 = (task1_completed & m1_t1=1 & team_size_t1=1) | (task2_completed & m1_t2=1 & team_size_t2=1); -formula agent1_joins_successful_team_of_2 = (task1_completed & m1_t1=1 & team_size_t1=2) | (task2_completed & m1_t2=1 & team_size_t2=2); -formula agent1_joins_successful_team_of_3 = (task1_completed & m1_t1=1 & team_size_t1=3) | (task2_completed & m1_t2=1 & team_size_t2=3); - -formula agent2_joins_successful_team = (task1_completed & m2_t1=1) | (task2_completed & m2_t2=1); -formula agent2_joins_successful_team_of_1 = (task1_completed & m2_t1=1 & team_size_t1=1) | (task2_completed & m2_t2=1 & team_size_t2=1); -formula agent2_joins_successful_team_of_2 = (task1_completed & m2_t1=1 & team_size_t1=2) | (task2_completed & m2_t2=1 & team_size_t2=2); -formula agent2_joins_successful_team_of_3 = (task1_completed & m2_t1=1 & team_size_t1=3) | (task2_completed & m2_t2=1 & team_size_t2=3); - -formula agent3_joins_successful_team = (task1_completed & m3_t1=1) | (task2_completed & m3_t2=1); -formula agent3_joins_successful_team_of_1 = (task1_completed & m3_t1=1 & team_size_t1=1) | (task2_completed & m3_t2=1 & team_size_t2=1); -formula agent3_joins_successful_team_of_2 = (task1_completed & m3_t1=1 & team_size_t1=2) | (task2_completed & m3_t2=1 & team_size_t2=2); -formula agent3_joins_successful_team_of_3 = (task1_completed & m3_t1=1 & team_size_t1=3) | (task2_completed & m3_t2=1 & team_size_t2=3); - -formula agent4_joins_successful_team = (task1_completed & m4_t1=1) | (task2_completed & m4_t2=1); -formula agent4_joins_successful_team_of_1 = (task1_completed & m4_t1=1 & team_size_t1=1) | (task2_completed & m4_t2=1 & team_size_t2=1); -formula agent4_joins_successful_team_of_2 = (task1_completed & m4_t1=1 & team_size_t1=2) | (task2_completed & m4_t2=1 & team_size_t2=2); -formula agent4_joins_successful_team_of_3 = (task1_completed & m4_t1=1 & team_size_t1=3) | (task2_completed & m4_t2=1 & team_size_t2=3); - -formula task1_completed = finished - & ((t1_r1=1)=>((m1_t1=1&resource1=1)|(m2_t1=1&resource2=1)|(m3_t1=1&resource3=1)|(m4_t1=1&resource4=1))) - & ((t1_r2=1)=>((m1_t1=1&resource1=2)|(m2_t1=1&resource2=2)|(m3_t1=1&resource3=2)|(m4_t1=1&resource4=2))) - & ((t1_r3=1)=>((m1_t1=1&resource1=3)|(m2_t1=1&resource2=3)|(m3_t1=1&resource3=3)|(m4_t1=1&resource4=3))); - -formula task2_completed = finished - & ((t2_r1=1)=>((m1_t2=1&resource1=1)|(m2_t2=1&resource2=1)|(m3_t2=1&resource3=1)|(m4_t2=1&resource4=1))) - & ((t2_r2=1)=>((m1_t2=1&resource1=2)|(m2_t2=1&resource2=2)|(m3_t2=1&resource3=2)|(m4_t2=1&resource4=2))) - & ((t2_r3=1)=>((m1_t2=1&resource1=3)|(m2_t2=1&resource2=3)|(m3_t2=1&resource3=3)|(m4_t2=1&resource4=3))); - -// rewards -rewards "w_1_total" - [] agent1_joins_successful_team : 1; - [] agent2_joins_successful_team : 1; - [] agent3_joins_successful_team : 1; - [] agent4_joins_successful_team : 1; -endrewards - -rewards "w_2_total" - [] task1_completed : 1; - [] task2_completed : 1; -endrewards - - - - - diff --git a/examples/multiobjective/mdp/team/origFiles/MDP_a5_r3_t2_full_exp.nm b/examples/multiobjective/mdp/team/origFiles/MDP_a5_r3_t2_full_exp.nm deleted file mode 100644 index 4a02b8746..000000000 --- a/examples/multiobjective/mdp/team/origFiles/MDP_a5_r3_t2_full_exp.nm +++ /dev/null @@ -1,531 +0,0 @@ -mdp - -// parameters -const int n_resources = 3; -const int n_tasks = 2; -const int n_sensors = 5; - - -// sensor resources -const int resource1=1; -const int resource2=2; -const int resource3=3; -const int resource4=1; -const int resource5=2; - -// network configuration -const int e12=1; -const int e13=1; -const int e14=1; -const int e15=1; - -const int e21=e12; -const int e23=1; -const int e24=1; -const int e25=1; - -const int e31=e13; -const int e32=e23; -const int e34=1; -const int e35=1; - -const int e41=e14; -const int e42=e24; -const int e43=e34; -const int e45=1; - -const int e51=e15; -const int e52=e25; -const int e53=e35; -const int e54=e45; - -module controller // schedules the algorithm - - // algorithm status - status : [0..8]; - - // task resource indicator variables - t1_r1 : [0..1]; - t1_r2 : [0..1]; - t1_r3 : [0..1]; - - t2_r1 : [0..1]; - t2_r2 : [0..1]; - t2_r3 : [0..1]; - - // schedule placeholders - turn1 : [0..n_sensors]; - turn2 : [0..n_sensors]; - turn3 : [0..n_sensors]; - turn4 : [0..n_sensors]; - turn5 : [0..n_sensors]; - - // selecting schedule uniformly at random - [] status=0 -> 1/120 : (turn1'=1) & (turn2'=2) & (turn3'=3) & (turn4'=4) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=2) & (turn3'=3) & (turn4'=5) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=2) & (turn3'=4) & (turn4'=3) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=2) & (turn3'=4) & (turn4'=5) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=2) & (turn3'=5) & (turn4'=3) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=2) & (turn3'=5) & (turn4'=4) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=3) & (turn3'=2) & (turn4'=4) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=3) & (turn3'=2) & (turn4'=5) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=3) & (turn3'=4) & (turn4'=2) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=3) & (turn3'=4) & (turn4'=5) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=3) & (turn3'=5) & (turn4'=2) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=3) & (turn3'=5) & (turn4'=4) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=4) & (turn3'=2) & (turn4'=3) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=4) & (turn3'=2) & (turn4'=5) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=4) & (turn3'=3) & (turn4'=2) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=4) & (turn3'=3) & (turn4'=5) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=4) & (turn3'=5) & (turn4'=2) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=4) & (turn3'=5) & (turn4'=3) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=5) & (turn3'=2) & (turn4'=3) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=5) & (turn3'=2) & (turn4'=4) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=5) & (turn3'=3) & (turn4'=2) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=5) & (turn3'=3) & (turn4'=4) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=5) & (turn3'=4) & (turn4'=2) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=5) & (turn3'=4) & (turn4'=3) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=1) & (turn3'=3) & (turn4'=4) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=1) & (turn3'=3) & (turn4'=5) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=1) & (turn3'=4) & (turn4'=3) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=1) & (turn3'=4) & (turn4'=5) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=1) & (turn3'=5) & (turn4'=3) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=1) & (turn3'=5) & (turn4'=4) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=3) & (turn3'=1) & (turn4'=4) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=3) & (turn3'=1) & (turn4'=5) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=3) & (turn3'=4) & (turn4'=1) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=3) & (turn3'=4) & (turn4'=5) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=3) & (turn3'=5) & (turn4'=1) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=3) & (turn3'=5) & (turn4'=4) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=4) & (turn3'=1) & (turn4'=3) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=4) & (turn3'=1) & (turn4'=5) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=4) & (turn3'=3) & (turn4'=1) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=4) & (turn3'=3) & (turn4'=5) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=4) & (turn3'=5) & (turn4'=1) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=4) & (turn3'=5) & (turn4'=3) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=5) & (turn3'=1) & (turn4'=3) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=5) & (turn3'=1) & (turn4'=4) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=5) & (turn3'=3) & (turn4'=1) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=5) & (turn3'=3) & (turn4'=4) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=5) & (turn3'=4) & (turn4'=1) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=5) & (turn3'=4) & (turn4'=3) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=1) & (turn3'=2) & (turn4'=4) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=1) & (turn3'=2) & (turn4'=5) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=1) & (turn3'=4) & (turn4'=2) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=1) & (turn3'=4) & (turn4'=5) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=1) & (turn3'=5) & (turn4'=2) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=1) & (turn3'=5) & (turn4'=4) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=2) & (turn3'=1) & (turn4'=4) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=2) & (turn3'=1) & (turn4'=5) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=2) & (turn3'=4) & (turn4'=1) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=2) & (turn3'=4) & (turn4'=5) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=2) & (turn3'=5) & (turn4'=1) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=2) & (turn3'=5) & (turn4'=4) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=4) & (turn3'=1) & (turn4'=2) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=4) & (turn3'=1) & (turn4'=5) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=4) & (turn3'=2) & (turn4'=1) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=4) & (turn3'=2) & (turn4'=5) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=4) & (turn3'=5) & (turn4'=1) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=4) & (turn3'=5) & (turn4'=2) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=5) & (turn3'=1) & (turn4'=2) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=5) & (turn3'=1) & (turn4'=4) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=5) & (turn3'=2) & (turn4'=1) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=5) & (turn3'=2) & (turn4'=4) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=5) & (turn3'=4) & (turn4'=1) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=5) & (turn3'=4) & (turn4'=2) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=1) & (turn3'=2) & (turn4'=3) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=1) & (turn3'=2) & (turn4'=5) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=1) & (turn3'=3) & (turn4'=2) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=1) & (turn3'=3) & (turn4'=5) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=1) & (turn3'=5) & (turn4'=2) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=1) & (turn3'=5) & (turn4'=3) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=2) & (turn3'=1) & (turn4'=3) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=2) & (turn3'=1) & (turn4'=5) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=2) & (turn3'=3) & (turn4'=1) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=2) & (turn3'=3) & (turn4'=5) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=2) & (turn3'=5) & (turn4'=1) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=2) & (turn3'=5) & (turn4'=3) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=3) & (turn3'=1) & (turn4'=2) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=3) & (turn3'=1) & (turn4'=5) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=3) & (turn3'=2) & (turn4'=1) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=3) & (turn3'=2) & (turn4'=5) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=3) & (turn3'=5) & (turn4'=1) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=3) & (turn3'=5) & (turn4'=2) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=5) & (turn3'=1) & (turn4'=2) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=5) & (turn3'=1) & (turn4'=3) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=5) & (turn3'=2) & (turn4'=1) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=5) & (turn3'=2) & (turn4'=3) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=5) & (turn3'=3) & (turn4'=1) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=5) & (turn3'=3) & (turn4'=2) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=1) & (turn3'=2) & (turn4'=3) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=1) & (turn3'=2) & (turn4'=4) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=1) & (turn3'=3) & (turn4'=2) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=1) & (turn3'=3) & (turn4'=4) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=1) & (turn3'=4) & (turn4'=2) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=1) & (turn3'=4) & (turn4'=3) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=2) & (turn3'=1) & (turn4'=3) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=2) & (turn3'=1) & (turn4'=4) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=2) & (turn3'=3) & (turn4'=1) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=2) & (turn3'=3) & (turn4'=4) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=2) & (turn3'=4) & (turn4'=1) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=2) & (turn3'=4) & (turn4'=3) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=3) & (turn3'=1) & (turn4'=2) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=3) & (turn3'=1) & (turn4'=4) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=3) & (turn3'=2) & (turn4'=1) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=3) & (turn3'=2) & (turn4'=4) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=3) & (turn3'=4) & (turn4'=1) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=3) & (turn3'=4) & (turn4'=2) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=4) & (turn3'=1) & (turn4'=2) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=4) & (turn3'=1) & (turn4'=3) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=4) & (turn3'=2) & (turn4'=1) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=4) & (turn3'=2) & (turn4'=3) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=4) & (turn3'=3) & (turn4'=1) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=4) & (turn3'=3) & (turn4'=2) & (turn5'=1) & (status'=1); - - - // initialising non-empty tasks uniformly at random - [] status=1 -> 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2); - - // executing the schedule - - // 1st round - [str1] status=2 & turn1=1 -> (status'=2); - [fin1] status=2 & turn1=1 -> (status'=3); - [str2] status=2 & turn1=2 -> (status'=2); - [fin2] status=2 & turn1=2 -> (status'=3); - [str3] status=2 & turn1=3 -> (status'=2); - [fin3] status=2 & turn1=3 -> (status'=3); - [str4] status=2 & turn1=4 -> (status'=2); - [fin4] status=2 & turn1=4 -> (status'=3); - [str5] status=2 & turn1=5 -> (status'=2); - [fin5] status=2 & turn1=5 -> (status'=3); - - // 2nd round - [str1] status=3 & turn2=1 -> (status'=3); - [fin1] status=3 & turn2=1 -> (status'=4); - [str2] status=3 & turn2=2 -> (status'=3); - [fin2] status=3 & turn2=2 -> (status'=4); - [str3] status=3 & turn2=3 -> (status'=3); - [fin3] status=3 & turn2=3 -> (status'=4); - [str4] status=3 & turn2=4 -> (status'=3); - [fin4] status=3 & turn2=4 -> (status'=4); - [str5] status=3 & turn2=5 -> (status'=3); - [fin5] status=3 & turn2=5 -> (status'=4); - - // 3rd round - [str1] status=4 & turn3=1 -> (status'=4); - [fin1] status=4 & turn3=1 -> (status'=5); - [str2] status=4 & turn3=2 -> (status'=4); - [fin2] status=4 & turn3=2 -> (status'=5); - [str3] status=4 & turn3=3 -> (status'=4); - [fin3] status=4 & turn3=3 -> (status'=5); - [str4] status=4 & turn3=4 -> (status'=4); - [fin4] status=4 & turn3=4 -> (status'=5); - [str5] status=4 & turn3=5 -> (status'=4); - [fin5] status=4 & turn3=5 -> (status'=5); - - // 4th round - [str1] status=5 & turn4=1 -> (status'=5); - [fin1] status=5 & turn4=1 -> (status'=6); - [str2] status=5 & turn4=2 -> (status'=5); - [fin2] status=5 & turn4=2 -> (status'=6); - [str3] status=5 & turn4=3 -> (status'=5); - [fin3] status=5 & turn4=3 -> (status'=6); - [str4] status=5 & turn4=4 -> (status'=5); - [fin4] status=5 & turn4=4 -> (status'=6); - [str5] status=5 & turn4=5 -> (status'=5); - [fin5] status=5 & turn4=5 -> (status'=6); - - // 5th round - [str1] status=6 & turn5=1 -> (status'=6); - [fin1] status=6 & turn5=1 -> (status'=7); - [str2] status=6 & turn5=2 -> (status'=6); - [fin2] status=6 & turn5=2 -> (status'=7); - [str3] status=6 & turn5=3 -> (status'=6); - [fin3] status=6 & turn5=3 -> (status'=7); - [str4] status=6 & turn5=4 -> (status'=6); - [fin4] status=6 & turn5=4 -> (status'=7); - [str5] status=6 & turn5=5 -> (status'=6); - [fin5] status=6 & turn5=5 -> (status'=7); - - [] status=7 -> (status'=8); - - [] status=8 -> (status'=8); - -endmodule - -module sensor1 - - state1 : [0..1]; - - // team membership indicators - m1_t1 : [0..1]; - m1_t2 : [0..1]; - - // starting turn, selecting order of tasks - [str1] state1=0 -> (state1'=1); - - // if there is no team and has required skill - initiating the team - [] state1=1 & !committed & team_size_t1=0 & has_resource_t1 -> (m1_t1'=1); - [] state1=1 & !committed & team_size_t2=0 & has_resource_t2 -> (m1_t2'=1); - - // if team already exists and one of the neighbours is in it - joining the team - [] state1=1 & !committed & team_size_t1>0 & can_join_t1 & has_resource_t1 & !resource_filled_t1 -> (m1_t1'=1); - [] state1=1 & !committed & team_size_t2>0 & can_join_t2 & has_resource_t2 & !resource_filled_t2 -> (m1_t2'=1); - - [fin1] state1>0 -> (state1'=0); - -endmodule - -module sensor2 = sensor1 -[ - state1=state2, - - str1=str2, - fin1=fin2, - - m1_t1=m2_t1, - m1_t2=m2_t2, - - m2_t1=m1_t1, - m2_t2=m1_t2, - - resource1=resource2, - resource2=resource1, - - e12=e21, - e13=e23, - e14=e24, - e15=e25, - - e21=e12, - e23=e13, - e24=e14, - e25=e15 -] -endmodule - -module sensor3 = sensor1 -[ - state1=state3, - - str1=str3, - fin1=fin3, - - m1_t1=m3_t1, - m1_t2=m3_t2, - m3_t1=m1_t1, - m3_t2=m1_t2, - - resource1=resource3, - resource3=resource1, - - e12=e32, - e13=e31, - e14=e34, - e15=e35, - - e31=e13, - e32=e12, - e34=e14, - e35=e15 -] -endmodule - -module sensor4 = sensor1 -[ - state1=state4, - - str1=str4, - fin1=fin4, - - m1_t1=m4_t1, - m1_t2=m4_t2, - - m4_t1=m1_t1, - m4_t2=m1_t2, - - resource1=resource4, - resource4=resource1, - - e12=e42, - e13=e43, - e14=e41, - e15=e45, - - e41=e14, - e42=e12, - e43=e13, - e45=e15 -] -endmodule - -module sensor5 = sensor1 -[ - state1=state5, - - str1=str5, - fin1=fin5, - - m1_t1=m5_t1, - m1_t2=m5_t2, - - m5_t1=m1_t1, - m5_t2=m1_t2, - - resource1=resource5, - resource5=resource1, - - e12=e52, - e13=e53, - e14=e54, - e15=e51, - - e51=e15, - e52=e12, - e53=e13, - e54=e14 -] -endmodule - -// formulae for scheduling -formula s1_sched = (turn1=1 | turn2=1 | turn3=1 | turn4=1 | turn5=1); -formula s2_sched = (turn1=2 | turn2=2 | turn3=2 | turn4=2 | turn5=2); -formula s3_sched = (turn1=3 | turn2=3 | turn3=3 | turn4=3 | turn5=3); -formula s4_sched = (turn1=4 | turn2=4 | turn3=4 | turn4=4 | turn5=4); -formula s5_sched = (turn1=5 | turn2=5 | turn3=5 | turn4=5 | turn5=5); -formula all_not_sched = !(s1_sched | s2_sched | s3_sched | s4_sched | s5_sched); -formula all_sched = (s1_sched & s2_sched & s3_sched & s4_sched & s5_sched); - - -// agent is committed to some team -formula committed = (m1_t1+m1_t2) > 0; - -// formulae to compute team sizes -formula team_size_t1 = m1_t1+m2_t1+m3_t1+m4_t1+m5_t1; -formula team_size_t2 = m1_t2+m2_t2+m3_t2+m4_t2+m5_t2; - -// formulae to check whether the agent can join the team -formula can_join_t1 = e12*m2_t1 + e13*m3_t1 + e14*m4_t1 + e15*m5_t1 > 0; -formula can_join_t2 = e12*m2_t2 + e13*m3_t2 + e14*m4_t2 + e15*m5_t2 > 0; - -// formulae to check whether agent has the resource required by the task -formula has_resource_t1 = ( (t1_r1=1&resource1=1) | (t1_r2=1&resource1=2) | (t1_r3=1&resource1=3) ); -formula has_resource_t2 = ( (t2_r1=1&resource1=1) | (t2_r2=1&resource1=2) | (t2_r3=1&resource1=3) ); - -// formulae to check whether the resource of an agent has been already filled in the team -formula resource_filled_t1 = (m2_t1=1 & resource1=resource2) | (m3_t1=1 & resource1=resource3) | (m4_t1=1 & resource1=resource4) | (m5_t1=1 & resource1=resource5); -formula resource_filled_t2 = (m2_t2=1 & resource1=resource2) | (m3_t2=1 & resource1=resource3) | (m4_t2=1 & resource1=resource4) | (m5_t2=1 & resource1=resource5); - -// formula to compute team initiation probability (assuming each agent has at least one connection) -formula IP = (e12*(1-((m2_t1+m2_t2)=0?0:1))+e13*(1-((m3_t1+m3_t2)=0?0:1))+e14*(1-((m4_t1+m4_t2)=0?0:1))+e15*(1-((m5_t1+m5_t2)=0?0:1))) / (e12+e13+e14+e15); - - - - -// labels and formulae for property specification -formula finished = (status=7); -label "end" = (status=8); - - -formula agent1_joins_successful_team = (task1_completed & m1_t1=1) | (task2_completed & m1_t2=1); -formula agent1_joins_successful_team_of_1 = (task1_completed & m1_t1=1 & team_size_t1=1) | (task2_completed & m1_t2=1 & team_size_t2=1); -formula agent1_joins_successful_team_of_2 = (task1_completed & m1_t1=1 & team_size_t1=2) | (task2_completed & m1_t2=1 & team_size_t2=2); -formula agent1_joins_successful_team_of_3 = (task1_completed & m1_t1=1 & team_size_t1=3) | (task2_completed & m1_t2=1 & team_size_t2=3); - -formula agent2_joins_successful_team = (task1_completed & m2_t1=1) | (task2_completed & m2_t2=1); -formula agent2_joins_successful_team_of_1 = (task1_completed & m2_t1=1 & team_size_t1=1) | (task2_completed & m2_t2=1 & team_size_t2=1); -formula agent2_joins_successful_team_of_2 = (task1_completed & m2_t1=1 & team_size_t1=2) | (task2_completed & m2_t2=1 & team_size_t2=2); -formula agent2_joins_successful_team_of_3 = (task1_completed & m2_t1=1 & team_size_t1=3) | (task2_completed & m2_t2=1 & team_size_t2=3); - -formula agent3_joins_successful_team = (task1_completed & m3_t1=1) | (task2_completed & m3_t2=1); -formula agent3_joins_successful_team_of_1 = (task1_completed & m3_t1=1 & team_size_t1=1) | (task2_completed & m3_t2=1 & team_size_t2=1); -formula agent3_joins_successful_team_of_2 = (task1_completed & m3_t1=1 & team_size_t1=2) | (task2_completed & m3_t2=1 & team_size_t2=2); -formula agent3_joins_successful_team_of_3 = (task1_completed & m3_t1=1 & team_size_t1=3) | (task2_completed & m3_t2=1 & team_size_t2=3); - -formula agent4_joins_successful_team = (task1_completed & m4_t1=1) | (task2_completed & m4_t2=1); -formula agent4_joins_successful_team_of_1 = (task1_completed & m4_t1=1 & team_size_t1=1) | (task2_completed & m4_t2=1 & team_size_t2=1); -formula agent4_joins_successful_team_of_2 = (task1_completed & m4_t1=1 & team_size_t1=2) | (task2_completed & m4_t2=1 & team_size_t2=2); -formula agent4_joins_successful_team_of_3 = (task1_completed & m4_t1=1 & team_size_t1=3) | (task2_completed & m4_t2=1 & team_size_t2=3); - -formula agent5_joins_successful_team = (task1_completed & m5_t1=1) | (task2_completed & m5_t2=1); -formula agent5_joins_successful_team_of_1 = (task1_completed & m5_t1=1 & team_size_t1=1) | (task2_completed & m5_t2=1 & team_size_t2=1); -formula agent5_joins_successful_team_of_2 = (task1_completed & m5_t1=1 & team_size_t1=2) | (task2_completed & m5_t2=1 & team_size_t2=2); -formula agent5_joins_successful_team_of_3 = (task1_completed & m5_t1=1 & team_size_t1=3) | (task2_completed & m5_t2=1 & team_size_t2=3); - -formula task1_completed = finished - & ((t1_r1=1)=>((m1_t1=1&resource1=1)|(m2_t1=1&resource2=1)|(m3_t1=1&resource3=1)|(m4_t1=1&resource4=1)|(m5_t1=1&resource5=1))) - & ((t1_r2=1)=>((m1_t1=1&resource1=2)|(m2_t1=1&resource2=2)|(m3_t1=1&resource3=2)|(m4_t1=1&resource4=2)|(m5_t1=1&resource5=2))) - & ((t1_r3=1)=>((m1_t1=1&resource1=3)|(m2_t1=1&resource2=3)|(m3_t1=1&resource3=3)|(m4_t1=1&resource4=3)|(m5_t1=1&resource5=3))); - -formula task2_completed = finished - & ((t2_r1=1)=>((m1_t2=1&resource1=1)|(m2_t2=1&resource2=1)|(m3_t2=1&resource3=1)|(m4_t2=1&resource4=1)|(m5_t2=1&resource5=1))) - & ((t2_r2=1)=>((m1_t2=1&resource1=2)|(m2_t2=1&resource2=2)|(m3_t2=1&resource3=2)|(m4_t2=1&resource4=2)|(m5_t2=1&resource5=2))) - & ((t2_r3=1)=>((m1_t2=1&resource1=3)|(m2_t2=1&resource2=3)|(m3_t2=1&resource3=3)|(m4_t2=1&resource4=3)|(m5_t2=1&resource5=3))); - -// rewards -rewards "w_1_total" - [] agent1_joins_successful_team : 1; - [] agent2_joins_successful_team : 1; - [] agent3_joins_successful_team : 1; - [] agent4_joins_successful_team : 1; - [] agent5_joins_successful_team : 1; -endrewards - -rewards "w_2_total" - [] task1_completed : 1; - [] task2_completed : 1; -endrewards - - - - - diff --git a/examples/multiobjective/mdp/team/origFiles/team.pctl b/examples/multiobjective/mdp/team/origFiles/team.pctl deleted file mode 100644 index 6d262eceb..000000000 --- a/examples/multiobjective/mdp/team/origFiles/team.pctl +++ /dev/null @@ -1,45 +0,0 @@ - -// Max probability of completing task 1 -"single_task1": Pmax=? [ F task1_completed ] - -// Max possible expected W1 (size of successful team) -"single_w1": R{"w_1_total"}max=? [ F "end" ] - -// Max possible expected W2 (num tasks completed) -"single_w2": R{"w_2_total"}max=? [ F "end" ] - -// Values computed using above queries: -const double q1 = -n_sensors=2 ? 0.9795918367346945 : -n_sensors=3 ? 2.3265306122448983 : -n_sensors=4 ? 2.551020408163265 : -n_sensors=5 ? 2.8979591836734775 : -0.0; - -const double q2 = -n_sensors=2 ? 0.7142857142857146 : -n_sensors=3 ? 1.2448979591836744 : -n_sensors=4 ? 1.4285714285714293 : -n_sensors=5 ? 1.6734693877551006 : -0.0; - -// Numerical: maximise probability of completing task 1 -// with 95% of possible value for expected W1 (size of successful team) -"num_task1": multi(Pmax=? [ F task1_completed ], R{"w_1_total"}>=(0.95*q1) [ F true ]) - -// Numerical (3-objective): maximise probability of completing task 1 -// with 95% of possible value for expected W1 (size of successful team) -// and also at least 0.5 probability of completing task 2 -"num_task1_3": multi(Pmax=? [ F task1_completed ], R{"w_1_total"}>=(0.95*q1) [ F true ], P>=0.5 [ F task2_completed ]) - -// Other numerical queries: - -multi(R{"w_1_total"}max=? [ F true ], R{"w_2_total"}>=(0.95*q2) [ F true ]) - -multi(R{"w_2_total"}max=? [ F true ], R{"w_1_total"}>=(0.95*q1) [ F true ]) - -// Pareto: maximise probability of completing task 1 and expected W1 (size of successful team) -"pareto": multi(Pmax=? [ F task1_completed ], R{"w_1_total"}max=? [ F true ]) - -// Pareto (3-objective): maximise probability of completing tasks 1/2 and expected W1 (size of successful team) -"pareto3": multi(Pmax=? [ F task1_completed ], R{"w_1_total"}max=? [ F true ], Pmax=? [ F task2_completed ]) diff --git a/examples/multiobjective/mdp/team/team2obj_3.nm b/examples/multiobjective/mdp/team/team2obj_3.nm deleted file mode 100644 index cd17863ca..000000000 --- a/examples/multiobjective/mdp/team/team2obj_3.nm +++ /dev/null @@ -1,286 +0,0 @@ -mdp - -// parameters -const int n_resources = 3; -const int n_tasks = 2; -const int n_sensors = 3; - - -// sensor resources -const int resource1=1; -const int resource2=2; -const int resource3=3; - -// network configuration -const int e12=1; -const int e13=1; - -const int e21=e12; -const int e23=1; - -const int e31=e13; -const int e32=e23; - - -// agent is committed to some team -formula committed = (m1_t1+m1_t2) > 0; - -// formulae to compute team sizes -formula team_size_t1 = m1_t1+m2_t1+m3_t1; -formula team_size_t2 = m1_t2+m2_t2+m3_t2; - -// formulae to check whether the agent can join the team -formula can_join_t1 = e12*m2_t1 + e13*m3_t1 > 0; -formula can_join_t2 = e12*m2_t2 + e13*m3_t2 > 0; - -// formulae to check whether agent has the resource required by the task -formula has_resource_t1 = ( (t1_r1=1&resource1=1) | (t1_r2=1&resource1=2) | (t1_r3=1&resource1=3) ); -formula has_resource_t2 = ( (t2_r1=1&resource1=1) | (t2_r2=1&resource1=2) | (t2_r3=1&resource1=3) ); - -// formulae to check whether the resource of an agent has been already filled in the team -formula resource_filled_t1 = (m2_t1=1 & resource1=resource2) | (m3_t1=1 & resource1=resource3); -formula resource_filled_t2 = (m2_t2=1 & resource1=resource2) | (m3_t2=1 & resource1=resource3); - -// formula to compute team initiation probability (assuming each agent has at least one connection) -formula IP = (e12*(1-((m2_t1+m2_t2)=0?0:1))+e13*(1-((m3_t1+m3_t2)=0?0:1))) / (e12+e13); - -module controller // schedules the algorithm - - // algorithm status - status : [0..6]; - - // task resource indicator variables - t1_r1 : [0..1]; - t1_r2 : [0..1]; - t1_r3 : [0..1]; - - t2_r1 : [0..1]; - t2_r2 : [0..1]; - t2_r3 : [0..1]; - - // schedule placeholders - turn1 : [0..n_sensors]; - turn2 : [0..n_sensors]; - turn3 : [0..n_sensors]; - - // selecting schedule uniformly at random - [] status=0 -> 1/6 : (turn1'=1) & (turn2'=2) & (turn3'=3) & (status'=1) - + 1/6 : (turn1'=1) & (turn2'=3) & (turn3'=2) & (status'=1) - + 1/6 : (turn1'=2) & (turn2'=1) & (turn3'=3) & (status'=1) - + 1/6 : (turn1'=2) & (turn2'=3) & (turn3'=1) & (status'=1) - + 1/6 : (turn1'=3) & (turn2'=1) & (turn3'=2) & (status'=1) - + 1/6 : (turn1'=3) & (turn2'=2) & (turn3'=1) & (status'=1); - - - // initialising non-empty tasks uniformly at random - [] status=1 -> 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2); - - // executing the schedule - - // 1st round - [str1] status=2 & turn1=1 -> (status'=2); - [fin1] status=2 & turn1=1 -> (status'=3); - [str2] status=2 & turn1=2 -> (status'=2); - [fin2] status=2 & turn1=2 -> (status'=3); - [str3] status=2 & turn1=3 -> (status'=2); - [fin3] status=2 & turn1=3 -> (status'=3); - - // 2nd round - [str1] status=3 & turn2=1 -> (status'=3); - [fin1] status=3 & turn2=1 -> (status'=4); - [str2] status=3 & turn2=2 -> (status'=3); - [fin2] status=3 & turn2=2 -> (status'=4); - [str3] status=3 & turn2=3 -> (status'=3); - [fin3] status=3 & turn2=3 -> (status'=4); - - // 3rd round - [str1] status=4 & turn3=1 -> (status'=4); - [fin1] status=4 & turn3=1 -> (status'=5); - [str2] status=4 & turn3=2 -> (status'=4); - [fin2] status=4 & turn3=2 -> (status'=5); - [str3] status=4 & turn3=3 -> (status'=4); - [fin3] status=4 & turn3=3 -> (status'=5); - - [] status=5 -> (status'=6); - - [] status=6 -> true; - -endmodule - -module sensor1 - - state1 : [0..1]; - - // team membership indicators - m1_t1 : [0..1]; - m1_t2 : [0..1]; - - // starting turn, selecting order of tasks - [str1] state1=0 -> (state1'=1); - - // if there is no team and has required skill - initiating the team - [] state1=1 & !committed & team_size_t1=0 & has_resource_t1 -> (m1_t1'=1); - [] state1=1 & !committed & team_size_t2=0 & has_resource_t2 -> (m1_t2'=1); - - // if team already exists and one of the neighbours is in it - joining the team - [] state1=1 & !committed & team_size_t1>0 & can_join_t1 & has_resource_t1 & !resource_filled_t1 -> (m1_t1'=1); - [] state1=1 & !committed & team_size_t2>0 & can_join_t2 & has_resource_t2 & !resource_filled_t2 -> (m1_t2'=1); - - [fin1] state1>0 -> (state1'=0); - -endmodule - -module sensor2 = sensor1 -[ - state1=state2, - - str1=str2, - fin1=fin2, - - m1_t1=m2_t1, - m1_t2=m2_t2, - - m2_t1=m1_t1, - m2_t2=m1_t2, - - resource1=resource2, - resource2=resource1, - - e12=e21, - e13=e23, - e14=e24, - e15=e25, - - e21=e12, - e23=e13, - e24=e14, - e25=e15 -] -endmodule - -module sensor3 = sensor1 -[ - state1=state3, - - str1=str3, - fin1=fin3, - - m1_t1=m3_t1, - m1_t2=m3_t2, - m3_t1=m1_t1, - m3_t2=m1_t2, - - resource1=resource3, - resource3=resource1, - - e12=e32, - e13=e31, - e14=e34, - e15=e35, - - e31=e13, - e32=e12, - e34=e14, - e35=e15 -] -endmodule - - - - - -// labels and formulae for property specification -formula finished = (status=5); -label "end" = (status=6); - - -formula task1_completed = finished - & ((t1_r1=1)=>((m1_t1=1&resource1=1)|(m2_t1=1&resource2=1)|(m3_t1=1&resource3=1))) - & ((t1_r2=1)=>((m1_t1=1&resource1=2)|(m2_t1=1&resource2=2)|(m3_t1=1&resource3=2))) - & ((t1_r3=1)=>((m1_t1=1&resource1=3)|(m2_t1=1&resource2=3)|(m3_t1=1&resource3=3))); - -formula task2_completed = finished - & ((t2_r1=1)=>((m1_t2=1&resource1=1)|(m2_t2=1&resource2=1)|(m3_t2=1&resource3=1))) - & ((t2_r2=1)=>((m1_t2=1&resource1=2)|(m2_t2=1&resource2=2)|(m3_t2=1&resource3=2))) - & ((t2_r3=1)=>((m1_t2=1&resource1=3)|(m2_t2=1&resource2=3)|(m3_t2=1&resource3=3))); - - - -formula agent1_joins_successful_team = (task1_completed & m1_t1=1) | (task2_completed & m1_t2=1); -formula agent1_joins_successful_team_of_1 = (task1_completed & m1_t1=1 & team_size_t1=1) | (task2_completed & m1_t2=1 & team_size_t2=1); -formula agent1_joins_successful_team_of_2 = (task1_completed & m1_t1=1 & team_size_t1=2) | (task2_completed & m1_t2=1 & team_size_t2=2); -formula agent1_joins_successful_team_of_3 = (task1_completed & m1_t1=1 & team_size_t1=3) | (task2_completed & m1_t2=1 & team_size_t2=3); - -formula agent2_joins_successful_team = (task1_completed & m2_t1=1) | (task2_completed & m2_t2=1); -formula agent2_joins_successful_team_of_1 = (task1_completed & m2_t1=1 & team_size_t1=1) | (task2_completed & m2_t2=1 & team_size_t2=1); -formula agent2_joins_successful_team_of_2 = (task1_completed & m2_t1=1 & team_size_t1=2) | (task2_completed & m2_t2=1 & team_size_t2=2); -formula agent2_joins_successful_team_of_3 = (task1_completed & m2_t1=1 & team_size_t1=3) | (task2_completed & m2_t2=1 & team_size_t2=3); - -formula agent3_joins_successful_team = (task1_completed & m3_t1=1) | (task2_completed & m3_t2=1); -formula agent3_joins_successful_team_of_1 = (task1_completed & m3_t1=1 & team_size_t1=1) | (task2_completed & m3_t2=1 & team_size_t2=1); -formula agent3_joins_successful_team_of_2 = (task1_completed & m3_t1=1 & team_size_t1=2) | (task2_completed & m3_t2=1 & team_size_t2=2); -formula agent3_joins_successful_team_of_3 = (task1_completed & m3_t1=1 & team_size_t1=3) | (task2_completed & m3_t2=1 & team_size_t2=3); - -// rewards -rewards "w_1_total" - [] agent1_joins_successful_team : 1; - [] agent2_joins_successful_team : 1; - [] agent3_joins_successful_team : 1; -endrewards - -rewards "w_2_total" - [] task1_completed : 1; - [] task2_completed : 1; -endrewards - - - - diff --git a/examples/multiobjective/mdp/team/team2obj_3_numerical.pctl b/examples/multiobjective/mdp/team/team2obj_3_numerical.pctl deleted file mode 100644 index f6a4553cb..000000000 --- a/examples/multiobjective/mdp/team/team2obj_3_numerical.pctl +++ /dev/null @@ -1 +0,0 @@ - multi(Pmax=? [ F task1_completed ], R{"w_1_total"}>=2.210204082 [ C ]) diff --git a/examples/multiobjective/mdp/team/team2obj_3_pareto.pctl b/examples/multiobjective/mdp/team/team2obj_3_pareto.pctl deleted file mode 100644 index 636cd1772..000000000 --- a/examples/multiobjective/mdp/team/team2obj_3_pareto.pctl +++ /dev/null @@ -1 +0,0 @@ - multi(Pmax=? [ F task1_completed ], R{"w_1_total"}max=? [ C ]) diff --git a/examples/multiobjective/mdp/team/team2obj_4.nm b/examples/multiobjective/mdp/team/team2obj_4.nm deleted file mode 100644 index 2ad4536e3..000000000 --- a/examples/multiobjective/mdp/team/team2obj_4.nm +++ /dev/null @@ -1,368 +0,0 @@ -mdp - -// parameters -const int n_resources = 3; -const int n_tasks = 2; -const int n_sensors = 4; - - -// sensor resources -const int resource1=1; -const int resource2=2; -const int resource3=3; -const int resource4=1; - -// network configuration -const int e12=1; -const int e13=1; -const int e14=1; - -const int e21=e12; -const int e23=1; -const int e24=1; - -const int e31=e13; -const int e32=e23; -const int e34=1; - -const int e41=e14; -const int e42=e24; -const int e43=e34; - - - - -// agent is committed to some team -formula committed = (m1_t1+m1_t2) > 0; - -// formulae to compute team sizes -formula team_size_t1 = m1_t1+m2_t1+m3_t1+m4_t1; -formula team_size_t2 = m1_t2+m2_t2+m3_t2+m4_t2; - -// formulae to check whether the agent can join the team -formula can_join_t1 = e12*m2_t1 + e13*m3_t1 + e14*m4_t1 > 0; -formula can_join_t2 = e12*m2_t2 + e13*m3_t2 + e14*m4_t2 > 0; - -// formulae to check whether agent has the resource required by the task -formula has_resource_t1 = ( (t1_r1=1&resource1=1) | (t1_r2=1&resource1=2) | (t1_r3=1&resource1=3) ); -formula has_resource_t2 = ( (t2_r1=1&resource1=1) | (t2_r2=1&resource1=2) | (t2_r3=1&resource1=3) ); - -// formulae to check whether the resource of an agent has been already filled in the team -formula resource_filled_t1 = (m2_t1=1 & resource1=resource2) | (m3_t1=1 & resource1=resource3) | (m4_t1=1 & resource1=resource4); -formula resource_filled_t2 = (m2_t2=1 & resource1=resource2) | (m3_t2=1 & resource1=resource3) | (m4_t2=1 & resource1=resource4); - -// formula to compute team initiation probability (assuming each agent has at least one connection) -formula IP = (e12*(1-((m2_t1+m2_t2)=0?0:1))+e13*(1-((m3_t1+m3_t2)=0?0:1))+e14*(1-((m4_t1+m4_t2)=0?0:1))) / (e12+e13+e14); - - - -module controller // schedules the algorithm - - // algorithm status - status : [0..7]; - - // task resource indicator variables - t1_r1 : [0..1]; - t1_r2 : [0..1]; - t1_r3 : [0..1]; - - t2_r1 : [0..1]; - t2_r2 : [0..1]; - t2_r3 : [0..1]; - - // schedule placeholders - turn1 : [0..n_sensors]; - turn2 : [0..n_sensors]; - turn3 : [0..n_sensors]; - turn4 : [0..n_sensors]; - turn5 : [0..n_sensors]; - - // selecting schedule uniformly at random - [] status=0 -> 1/24 : (turn1'=1) & (turn2'=2) & (turn3'=3) & (turn4'=4) & (status'=1) - + 1/24 : (turn1'=1) & (turn2'=2) & (turn3'=4) & (turn4'=3) & (status'=1) - + 1/24 : (turn1'=1) & (turn2'=3) & (turn3'=2) & (turn4'=4) & (status'=1) - + 1/24 : (turn1'=1) & (turn2'=3) & (turn3'=4) & (turn4'=2) & (status'=1) - + 1/24 : (turn1'=1) & (turn2'=4) & (turn3'=2) & (turn4'=3) & (status'=1) - + 1/24 : (turn1'=1) & (turn2'=4) & (turn3'=3) & (turn4'=2) & (status'=1) - + 1/24 : (turn1'=2) & (turn2'=1) & (turn3'=3) & (turn4'=4) & (status'=1) - + 1/24 : (turn1'=2) & (turn2'=1) & (turn3'=4) & (turn4'=3) & (status'=1) - + 1/24 : (turn1'=2) & (turn2'=3) & (turn3'=1) & (turn4'=4) & (status'=1) - + 1/24 : (turn1'=2) & (turn2'=3) & (turn3'=4) & (turn4'=1) & (status'=1) - + 1/24 : (turn1'=2) & (turn2'=4) & (turn3'=1) & (turn4'=3) & (status'=1) - + 1/24 : (turn1'=2) & (turn2'=4) & (turn3'=3) & (turn4'=1) & (status'=1) - + 1/24 : (turn1'=3) & (turn2'=1) & (turn3'=2) & (turn4'=4) & (status'=1) - + 1/24 : (turn1'=3) & (turn2'=1) & (turn3'=4) & (turn4'=2) & (status'=1) - + 1/24 : (turn1'=3) & (turn2'=2) & (turn3'=1) & (turn4'=4) & (status'=1) - + 1/24 : (turn1'=3) & (turn2'=2) & (turn3'=4) & (turn4'=1) & (status'=1) - + 1/24 : (turn1'=3) & (turn2'=4) & (turn3'=1) & (turn4'=2) & (status'=1) - + 1/24 : (turn1'=3) & (turn2'=4) & (turn3'=2) & (turn4'=1) & (status'=1) - + 1/24 : (turn1'=4) & (turn2'=1) & (turn3'=2) & (turn4'=3) & (status'=1) - + 1/24 : (turn1'=4) & (turn2'=1) & (turn3'=3) & (turn4'=2) & (status'=1) - + 1/24 : (turn1'=4) & (turn2'=2) & (turn3'=1) & (turn4'=3) & (status'=1) - + 1/24 : (turn1'=4) & (turn2'=2) & (turn3'=3) & (turn4'=1) & (status'=1) - + 1/24 : (turn1'=4) & (turn2'=3) & (turn3'=1) & (turn4'=2) & (status'=1) - + 1/24 : (turn1'=4) & (turn2'=3) & (turn3'=2) & (turn4'=1) & (status'=1); - - - // initialising non-empty tasks uniformly at random - [] status=1 -> 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2); - - // executing the schedule - - // 1st round - [str1] status=2 & turn1=1 -> (status'=2); - [fin1] status=2 & turn1=1 -> (status'=3); - [str2] status=2 & turn1=2 -> (status'=2); - [fin2] status=2 & turn1=2 -> (status'=3); - [str3] status=2 & turn1=3 -> (status'=2); - [fin3] status=2 & turn1=3 -> (status'=3); - [str4] status=2 & turn1=4 -> (status'=2); - [fin4] status=2 & turn1=4 -> (status'=3); - - // 2nd round - [str1] status=3 & turn2=1 -> (status'=3); - [fin1] status=3 & turn2=1 -> (status'=4); - [str2] status=3 & turn2=2 -> (status'=3); - [fin2] status=3 & turn2=2 -> (status'=4); - [str3] status=3 & turn2=3 -> (status'=3); - [fin3] status=3 & turn2=3 -> (status'=4); - [str4] status=3 & turn2=4 -> (status'=3); - [fin4] status=3 & turn2=4 -> (status'=4); - - // 3rd round - [str1] status=4 & turn3=1 -> (status'=4); - [fin1] status=4 & turn3=1 -> (status'=5); - [str2] status=4 & turn3=2 -> (status'=4); - [fin2] status=4 & turn3=2 -> (status'=5); - [str3] status=4 & turn3=3 -> (status'=4); - [fin3] status=4 & turn3=3 -> (status'=5); - [str4] status=4 & turn3=4 -> (status'=4); - [fin4] status=4 & turn3=4 -> (status'=5); - - // 4th round - [str1] status=5 & turn4=1 -> (status'=5); - [fin1] status=5 & turn4=1 -> (status'=6); - [str2] status=5 & turn4=2 -> (status'=5); - [fin2] status=5 & turn4=2 -> (status'=6); - [str3] status=5 & turn4=3 -> (status'=5); - [fin3] status=5 & turn4=3 -> (status'=6); - [str4] status=5 & turn4=4 -> (status'=5); - [fin4] status=5 & turn4=4 -> (status'=6); - - [] status=6 -> (status'=7); - - [] status=7 -> (status'=7); - -endmodule - -module sensor1 - - state1 : [0..1]; - - // team membership indicators - m1_t1 : [0..1]; - m1_t2 : [0..1]; - - // starting turn, selecting order of tasks - [str1] state1=0 -> (state1'=1); - - // if there is no team and has required skill - initiating the team - [] state1=1 & !committed & team_size_t1=0 & has_resource_t1 -> (m1_t1'=1); - [] state1=1 & !committed & team_size_t2=0 & has_resource_t2 -> (m1_t2'=1); - - // if team already exists and one of the neighbours is in it - joining the team - [] state1=1 & !committed & team_size_t1>0 & can_join_t1 & has_resource_t1 & !resource_filled_t1 -> (m1_t1'=1); - [] state1=1 & !committed & team_size_t2>0 & can_join_t2 & has_resource_t2 & !resource_filled_t2 -> (m1_t2'=1); - - [fin1] state1>0 -> (state1'=0); - -endmodule - -module sensor2 = sensor1 -[ - state1=state2, - - str1=str2, - fin1=fin2, - - m1_t1=m2_t1, - m1_t2=m2_t2, - - m2_t1=m1_t1, - m2_t2=m1_t2, - - resource1=resource2, - resource2=resource1, - - e12=e21, - e13=e23, - e14=e24, - e15=e25, - - e21=e12, - e23=e13, - e24=e14, - e25=e15 -] -endmodule - -module sensor3 = sensor1 -[ - state1=state3, - - str1=str3, - fin1=fin3, - - m1_t1=m3_t1, - m1_t2=m3_t2, - m3_t1=m1_t1, - m3_t2=m1_t2, - - resource1=resource3, - resource3=resource1, - - e12=e32, - e13=e31, - e14=e34, - e15=e35, - - e31=e13, - e32=e12, - e34=e14, - e35=e15 -] -endmodule - -module sensor4 = sensor1 -[ - state1=state4, - - str1=str4, - fin1=fin4, - - m1_t1=m4_t1, - m1_t2=m4_t2, - - m4_t1=m1_t1, - m4_t2=m1_t2, - - resource1=resource4, - resource4=resource1, - - e12=e42, - e13=e43, - e14=e41, - e15=e45, - - e41=e14, - e42=e12, - e43=e13, - e45=e15 -] -endmodule - - - - - -// labels and formulae for property specification -formula finished = (status=6); -label "end" = (status=7); - - -formula task1_completed = finished - & ((t1_r1=1)=>((m1_t1=1&resource1=1)|(m2_t1=1&resource2=1)|(m3_t1=1&resource3=1)|(m4_t1=1&resource4=1))) - & ((t1_r2=1)=>((m1_t1=1&resource1=2)|(m2_t1=1&resource2=2)|(m3_t1=1&resource3=2)|(m4_t1=1&resource4=2))) - & ((t1_r3=1)=>((m1_t1=1&resource1=3)|(m2_t1=1&resource2=3)|(m3_t1=1&resource3=3)|(m4_t1=1&resource4=3))); - -formula task2_completed = finished - & ((t2_r1=1)=>((m1_t2=1&resource1=1)|(m2_t2=1&resource2=1)|(m3_t2=1&resource3=1)|(m4_t2=1&resource4=1))) - & ((t2_r2=1)=>((m1_t2=1&resource1=2)|(m2_t2=1&resource2=2)|(m3_t2=1&resource3=2)|(m4_t2=1&resource4=2))) - & ((t2_r3=1)=>((m1_t2=1&resource1=3)|(m2_t2=1&resource2=3)|(m3_t2=1&resource3=3)|(m4_t2=1&resource4=3))); - - -formula agent1_joins_successful_team = (task1_completed & m1_t1=1) | (task2_completed & m1_t2=1); -formula agent1_joins_successful_team_of_1 = (task1_completed & m1_t1=1 & team_size_t1=1) | (task2_completed & m1_t2=1 & team_size_t2=1); -formula agent1_joins_successful_team_of_2 = (task1_completed & m1_t1=1 & team_size_t1=2) | (task2_completed & m1_t2=1 & team_size_t2=2); -formula agent1_joins_successful_team_of_3 = (task1_completed & m1_t1=1 & team_size_t1=3) | (task2_completed & m1_t2=1 & team_size_t2=3); - -formula agent2_joins_successful_team = (task1_completed & m2_t1=1) | (task2_completed & m2_t2=1); -formula agent2_joins_successful_team_of_1 = (task1_completed & m2_t1=1 & team_size_t1=1) | (task2_completed & m2_t2=1 & team_size_t2=1); -formula agent2_joins_successful_team_of_2 = (task1_completed & m2_t1=1 & team_size_t1=2) | (task2_completed & m2_t2=1 & team_size_t2=2); -formula agent2_joins_successful_team_of_3 = (task1_completed & m2_t1=1 & team_size_t1=3) | (task2_completed & m2_t2=1 & team_size_t2=3); - -formula agent3_joins_successful_team = (task1_completed & m3_t1=1) | (task2_completed & m3_t2=1); -formula agent3_joins_successful_team_of_1 = (task1_completed & m3_t1=1 & team_size_t1=1) | (task2_completed & m3_t2=1 & team_size_t2=1); -formula agent3_joins_successful_team_of_2 = (task1_completed & m3_t1=1 & team_size_t1=2) | (task2_completed & m3_t2=1 & team_size_t2=2); -formula agent3_joins_successful_team_of_3 = (task1_completed & m3_t1=1 & team_size_t1=3) | (task2_completed & m3_t2=1 & team_size_t2=3); - -formula agent4_joins_successful_team = (task1_completed & m4_t1=1) | (task2_completed & m4_t2=1); -formula agent4_joins_successful_team_of_1 = (task1_completed & m4_t1=1 & team_size_t1=1) | (task2_completed & m4_t2=1 & team_size_t2=1); -formula agent4_joins_successful_team_of_2 = (task1_completed & m4_t1=1 & team_size_t1=2) | (task2_completed & m4_t2=1 & team_size_t2=2); -formula agent4_joins_successful_team_of_3 = (task1_completed & m4_t1=1 & team_size_t1=3) | (task2_completed & m4_t2=1 & team_size_t2=3); - -// rewards -rewards "w_1_total" - [] agent1_joins_successful_team : 1; - [] agent2_joins_successful_team : 1; - [] agent3_joins_successful_team : 1; - [] agent4_joins_successful_team : 1; -endrewards - -rewards "w_2_total" - [] task1_completed : 1; - [] task2_completed : 1; -endrewards - - - - - diff --git a/examples/multiobjective/mdp/team/team2obj_4_numerical.pctl b/examples/multiobjective/mdp/team/team2obj_4_numerical.pctl deleted file mode 100644 index 9cb290800..000000000 --- a/examples/multiobjective/mdp/team/team2obj_4_numerical.pctl +++ /dev/null @@ -1 +0,0 @@ - multi(Pmax=? [ F task1_completed ], R{"w_1_total"}>=2.423469388 [ C ]) diff --git a/examples/multiobjective/mdp/team/team2obj_4_pareto.pctl b/examples/multiobjective/mdp/team/team2obj_4_pareto.pctl deleted file mode 100644 index 636cd1772..000000000 --- a/examples/multiobjective/mdp/team/team2obj_4_pareto.pctl +++ /dev/null @@ -1 +0,0 @@ - multi(Pmax=? [ F task1_completed ], R{"w_1_total"}max=? [ C ]) diff --git a/examples/multiobjective/mdp/team/team2obj_5.nm b/examples/multiobjective/mdp/team/team2obj_5.nm deleted file mode 100644 index 2bab4d7f4..000000000 --- a/examples/multiobjective/mdp/team/team2obj_5.nm +++ /dev/null @@ -1,532 +0,0 @@ -mdp - -// parameters -const int n_resources = 3; -const int n_tasks = 2; -const int n_sensors = 5; - - -// sensor resources -const int resource1=1; -const int resource2=2; -const int resource3=3; -const int resource4=1; -const int resource5=2; - -// network configuration -const int e12=1; -const int e13=1; -const int e14=1; -const int e15=1; - -const int e21=e12; -const int e23=1; -const int e24=1; -const int e25=1; - -const int e31=e13; -const int e32=e23; -const int e34=1; -const int e35=1; - -const int e41=e14; -const int e42=e24; -const int e43=e34; -const int e45=1; - -const int e51=e15; -const int e52=e25; -const int e53=e35; -const int e54=e45; - - -// agent is committed to some team -formula committed = (m1_t1+m1_t2) > 0; - -// formulae to compute team sizes -formula team_size_t1 = m1_t1+m2_t1+m3_t1+m4_t1+m5_t1; -formula team_size_t2 = m1_t2+m2_t2+m3_t2+m4_t2+m5_t2; - -// formulae to check whether the agent can join the team -formula can_join_t1 = e12*m2_t1 + e13*m3_t1 + e14*m4_t1 + e15*m5_t1 > 0; -formula can_join_t2 = e12*m2_t2 + e13*m3_t2 + e14*m4_t2 + e15*m5_t2 > 0; - -// formulae to check whether agent has the resource required by the task -formula has_resource_t1 = ( (t1_r1=1&resource1=1) | (t1_r2=1&resource1=2) | (t1_r3=1&resource1=3) ); -formula has_resource_t2 = ( (t2_r1=1&resource1=1) | (t2_r2=1&resource1=2) | (t2_r3=1&resource1=3) ); - -// formulae to check whether the resource of an agent has been already filled in the team -formula resource_filled_t1 = (m2_t1=1 & resource1=resource2) | (m3_t1=1 & resource1=resource3) | (m4_t1=1 & resource1=resource4) | (m5_t1=1 & resource1=resource5); -formula resource_filled_t2 = (m2_t2=1 & resource1=resource2) | (m3_t2=1 & resource1=resource3) | (m4_t2=1 & resource1=resource4) | (m5_t2=1 & resource1=resource5); - -// formula to compute team initiation probability (assuming each agent has at least one connection) -formula IP = (e12*(1-((m2_t1+m2_t2)=0?0:1))+e13*(1-((m3_t1+m3_t2)=0?0:1))+e14*(1-((m4_t1+m4_t2)=0?0:1))+e15*(1-((m5_t1+m5_t2)=0?0:1))) / (e12+e13+e14+e15); - - - -module controller // schedules the algorithm - - // algorithm status - status : [0..8]; - - // task resource indicator variables - t1_r1 : [0..1]; - t1_r2 : [0..1]; - t1_r3 : [0..1]; - - t2_r1 : [0..1]; - t2_r2 : [0..1]; - t2_r3 : [0..1]; - - // schedule placeholders - turn1 : [0..n_sensors]; - turn2 : [0..n_sensors]; - turn3 : [0..n_sensors]; - turn4 : [0..n_sensors]; - turn5 : [0..n_sensors]; - - // selecting schedule uniformly at random - [] status=0 -> 1/120 : (turn1'=1) & (turn2'=2) & (turn3'=3) & (turn4'=4) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=2) & (turn3'=3) & (turn4'=5) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=2) & (turn3'=4) & (turn4'=3) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=2) & (turn3'=4) & (turn4'=5) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=2) & (turn3'=5) & (turn4'=3) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=2) & (turn3'=5) & (turn4'=4) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=3) & (turn3'=2) & (turn4'=4) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=3) & (turn3'=2) & (turn4'=5) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=3) & (turn3'=4) & (turn4'=2) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=3) & (turn3'=4) & (turn4'=5) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=3) & (turn3'=5) & (turn4'=2) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=3) & (turn3'=5) & (turn4'=4) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=4) & (turn3'=2) & (turn4'=3) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=4) & (turn3'=2) & (turn4'=5) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=4) & (turn3'=3) & (turn4'=2) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=4) & (turn3'=3) & (turn4'=5) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=4) & (turn3'=5) & (turn4'=2) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=4) & (turn3'=5) & (turn4'=3) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=5) & (turn3'=2) & (turn4'=3) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=5) & (turn3'=2) & (turn4'=4) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=5) & (turn3'=3) & (turn4'=2) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=5) & (turn3'=3) & (turn4'=4) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=5) & (turn3'=4) & (turn4'=2) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=5) & (turn3'=4) & (turn4'=3) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=1) & (turn3'=3) & (turn4'=4) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=1) & (turn3'=3) & (turn4'=5) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=1) & (turn3'=4) & (turn4'=3) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=1) & (turn3'=4) & (turn4'=5) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=1) & (turn3'=5) & (turn4'=3) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=1) & (turn3'=5) & (turn4'=4) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=3) & (turn3'=1) & (turn4'=4) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=3) & (turn3'=1) & (turn4'=5) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=3) & (turn3'=4) & (turn4'=1) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=3) & (turn3'=4) & (turn4'=5) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=3) & (turn3'=5) & (turn4'=1) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=3) & (turn3'=5) & (turn4'=4) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=4) & (turn3'=1) & (turn4'=3) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=4) & (turn3'=1) & (turn4'=5) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=4) & (turn3'=3) & (turn4'=1) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=4) & (turn3'=3) & (turn4'=5) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=4) & (turn3'=5) & (turn4'=1) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=4) & (turn3'=5) & (turn4'=3) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=5) & (turn3'=1) & (turn4'=3) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=5) & (turn3'=1) & (turn4'=4) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=5) & (turn3'=3) & (turn4'=1) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=5) & (turn3'=3) & (turn4'=4) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=5) & (turn3'=4) & (turn4'=1) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=5) & (turn3'=4) & (turn4'=3) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=1) & (turn3'=2) & (turn4'=4) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=1) & (turn3'=2) & (turn4'=5) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=1) & (turn3'=4) & (turn4'=2) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=1) & (turn3'=4) & (turn4'=5) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=1) & (turn3'=5) & (turn4'=2) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=1) & (turn3'=5) & (turn4'=4) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=2) & (turn3'=1) & (turn4'=4) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=2) & (turn3'=1) & (turn4'=5) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=2) & (turn3'=4) & (turn4'=1) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=2) & (turn3'=4) & (turn4'=5) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=2) & (turn3'=5) & (turn4'=1) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=2) & (turn3'=5) & (turn4'=4) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=4) & (turn3'=1) & (turn4'=2) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=4) & (turn3'=1) & (turn4'=5) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=4) & (turn3'=2) & (turn4'=1) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=4) & (turn3'=2) & (turn4'=5) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=4) & (turn3'=5) & (turn4'=1) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=4) & (turn3'=5) & (turn4'=2) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=5) & (turn3'=1) & (turn4'=2) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=5) & (turn3'=1) & (turn4'=4) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=5) & (turn3'=2) & (turn4'=1) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=5) & (turn3'=2) & (turn4'=4) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=5) & (turn3'=4) & (turn4'=1) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=5) & (turn3'=4) & (turn4'=2) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=1) & (turn3'=2) & (turn4'=3) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=1) & (turn3'=2) & (turn4'=5) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=1) & (turn3'=3) & (turn4'=2) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=1) & (turn3'=3) & (turn4'=5) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=1) & (turn3'=5) & (turn4'=2) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=1) & (turn3'=5) & (turn4'=3) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=2) & (turn3'=1) & (turn4'=3) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=2) & (turn3'=1) & (turn4'=5) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=2) & (turn3'=3) & (turn4'=1) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=2) & (turn3'=3) & (turn4'=5) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=2) & (turn3'=5) & (turn4'=1) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=2) & (turn3'=5) & (turn4'=3) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=3) & (turn3'=1) & (turn4'=2) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=3) & (turn3'=1) & (turn4'=5) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=3) & (turn3'=2) & (turn4'=1) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=3) & (turn3'=2) & (turn4'=5) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=3) & (turn3'=5) & (turn4'=1) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=3) & (turn3'=5) & (turn4'=2) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=5) & (turn3'=1) & (turn4'=2) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=5) & (turn3'=1) & (turn4'=3) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=5) & (turn3'=2) & (turn4'=1) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=5) & (turn3'=2) & (turn4'=3) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=5) & (turn3'=3) & (turn4'=1) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=5) & (turn3'=3) & (turn4'=2) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=1) & (turn3'=2) & (turn4'=3) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=1) & (turn3'=2) & (turn4'=4) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=1) & (turn3'=3) & (turn4'=2) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=1) & (turn3'=3) & (turn4'=4) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=1) & (turn3'=4) & (turn4'=2) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=1) & (turn3'=4) & (turn4'=3) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=2) & (turn3'=1) & (turn4'=3) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=2) & (turn3'=1) & (turn4'=4) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=2) & (turn3'=3) & (turn4'=1) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=2) & (turn3'=3) & (turn4'=4) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=2) & (turn3'=4) & (turn4'=1) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=2) & (turn3'=4) & (turn4'=3) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=3) & (turn3'=1) & (turn4'=2) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=3) & (turn3'=1) & (turn4'=4) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=3) & (turn3'=2) & (turn4'=1) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=3) & (turn3'=2) & (turn4'=4) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=3) & (turn3'=4) & (turn4'=1) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=3) & (turn3'=4) & (turn4'=2) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=4) & (turn3'=1) & (turn4'=2) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=4) & (turn3'=1) & (turn4'=3) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=4) & (turn3'=2) & (turn4'=1) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=4) & (turn3'=2) & (turn4'=3) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=4) & (turn3'=3) & (turn4'=1) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=4) & (turn3'=3) & (turn4'=2) & (turn5'=1) & (status'=1); - - - // initialising non-empty tasks uniformly at random - [] status=1 -> 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2); - - // executing the schedule - - // 1st round - [str1] status=2 & turn1=1 -> (status'=2); - [fin1] status=2 & turn1=1 -> (status'=3); - [str2] status=2 & turn1=2 -> (status'=2); - [fin2] status=2 & turn1=2 -> (status'=3); - [str3] status=2 & turn1=3 -> (status'=2); - [fin3] status=2 & turn1=3 -> (status'=3); - [str4] status=2 & turn1=4 -> (status'=2); - [fin4] status=2 & turn1=4 -> (status'=3); - [str5] status=2 & turn1=5 -> (status'=2); - [fin5] status=2 & turn1=5 -> (status'=3); - - // 2nd round - [str1] status=3 & turn2=1 -> (status'=3); - [fin1] status=3 & turn2=1 -> (status'=4); - [str2] status=3 & turn2=2 -> (status'=3); - [fin2] status=3 & turn2=2 -> (status'=4); - [str3] status=3 & turn2=3 -> (status'=3); - [fin3] status=3 & turn2=3 -> (status'=4); - [str4] status=3 & turn2=4 -> (status'=3); - [fin4] status=3 & turn2=4 -> (status'=4); - [str5] status=3 & turn2=5 -> (status'=3); - [fin5] status=3 & turn2=5 -> (status'=4); - - // 3rd round - [str1] status=4 & turn3=1 -> (status'=4); - [fin1] status=4 & turn3=1 -> (status'=5); - [str2] status=4 & turn3=2 -> (status'=4); - [fin2] status=4 & turn3=2 -> (status'=5); - [str3] status=4 & turn3=3 -> (status'=4); - [fin3] status=4 & turn3=3 -> (status'=5); - [str4] status=4 & turn3=4 -> (status'=4); - [fin4] status=4 & turn3=4 -> (status'=5); - [str5] status=4 & turn3=5 -> (status'=4); - [fin5] status=4 & turn3=5 -> (status'=5); - - // 4th round - [str1] status=5 & turn4=1 -> (status'=5); - [fin1] status=5 & turn4=1 -> (status'=6); - [str2] status=5 & turn4=2 -> (status'=5); - [fin2] status=5 & turn4=2 -> (status'=6); - [str3] status=5 & turn4=3 -> (status'=5); - [fin3] status=5 & turn4=3 -> (status'=6); - [str4] status=5 & turn4=4 -> (status'=5); - [fin4] status=5 & turn4=4 -> (status'=6); - [str5] status=5 & turn4=5 -> (status'=5); - [fin5] status=5 & turn4=5 -> (status'=6); - - // 5th round - [str1] status=6 & turn5=1 -> (status'=6); - [fin1] status=6 & turn5=1 -> (status'=7); - [str2] status=6 & turn5=2 -> (status'=6); - [fin2] status=6 & turn5=2 -> (status'=7); - [str3] status=6 & turn5=3 -> (status'=6); - [fin3] status=6 & turn5=3 -> (status'=7); - [str4] status=6 & turn5=4 -> (status'=6); - [fin4] status=6 & turn5=4 -> (status'=7); - [str5] status=6 & turn5=5 -> (status'=6); - [fin5] status=6 & turn5=5 -> (status'=7); - - [] status=7 -> (status'=8); - - [] status=8 -> (status'=8); - -endmodule - -module sensor1 - - state1 : [0..1]; - - // team membership indicators - m1_t1 : [0..1]; - m1_t2 : [0..1]; - - // starting turn, selecting order of tasks - [str1] state1=0 -> (state1'=1); - - // if there is no team and has required skill - initiating the team - [] state1=1 & !committed & team_size_t1=0 & has_resource_t1 -> (m1_t1'=1); - [] state1=1 & !committed & team_size_t2=0 & has_resource_t2 -> (m1_t2'=1); - - // if team already exists and one of the neighbours is in it - joining the team - [] state1=1 & !committed & team_size_t1>0 & can_join_t1 & has_resource_t1 & !resource_filled_t1 -> (m1_t1'=1); - [] state1=1 & !committed & team_size_t2>0 & can_join_t2 & has_resource_t2 & !resource_filled_t2 -> (m1_t2'=1); - - [fin1] state1>0 -> (state1'=0); - -endmodule - -module sensor2 = sensor1 -[ - state1=state2, - - str1=str2, - fin1=fin2, - - m1_t1=m2_t1, - m1_t2=m2_t2, - - m2_t1=m1_t1, - m2_t2=m1_t2, - - resource1=resource2, - resource2=resource1, - - e12=e21, - e13=e23, - e14=e24, - e15=e25, - - e21=e12, - e23=e13, - e24=e14, - e25=e15 -] -endmodule - -module sensor3 = sensor1 -[ - state1=state3, - - str1=str3, - fin1=fin3, - - m1_t1=m3_t1, - m1_t2=m3_t2, - m3_t1=m1_t1, - m3_t2=m1_t2, - - resource1=resource3, - resource3=resource1, - - e12=e32, - e13=e31, - e14=e34, - e15=e35, - - e31=e13, - e32=e12, - e34=e14, - e35=e15 -] -endmodule - -module sensor4 = sensor1 -[ - state1=state4, - - str1=str4, - fin1=fin4, - - m1_t1=m4_t1, - m1_t2=m4_t2, - - m4_t1=m1_t1, - m4_t2=m1_t2, - - resource1=resource4, - resource4=resource1, - - e12=e42, - e13=e43, - e14=e41, - e15=e45, - - e41=e14, - e42=e12, - e43=e13, - e45=e15 -] -endmodule - -module sensor5 = sensor1 -[ - state1=state5, - - str1=str5, - fin1=fin5, - - m1_t1=m5_t1, - m1_t2=m5_t2, - - m5_t1=m1_t1, - m5_t2=m1_t2, - - resource1=resource5, - resource5=resource1, - - e12=e52, - e13=e53, - e14=e54, - e15=e51, - - e51=e15, - e52=e12, - e53=e13, - e54=e14 -] -endmodule - -// formulae for scheduling -formula s1_sched = (turn1=1 | turn2=1 | turn3=1 | turn4=1 | turn5=1); -formula s2_sched = (turn1=2 | turn2=2 | turn3=2 | turn4=2 | turn5=2); -formula s3_sched = (turn1=3 | turn2=3 | turn3=3 | turn4=3 | turn5=3); -formula s4_sched = (turn1=4 | turn2=4 | turn3=4 | turn4=4 | turn5=4); -formula s5_sched = (turn1=5 | turn2=5 | turn3=5 | turn4=5 | turn5=5); -formula all_not_sched = !(s1_sched | s2_sched | s3_sched | s4_sched | s5_sched); -formula all_sched = (s1_sched & s2_sched & s3_sched & s4_sched & s5_sched); - - -// labels and formulae for property specification -formula finished = (status=7); -label "end" = (status=8); - - -formula task1_completed = finished - & ((t1_r1=1)=>((m1_t1=1&resource1=1)|(m2_t1=1&resource2=1)|(m3_t1=1&resource3=1)|(m4_t1=1&resource4=1)|(m5_t1=1&resource5=1))) - & ((t1_r2=1)=>((m1_t1=1&resource1=2)|(m2_t1=1&resource2=2)|(m3_t1=1&resource3=2)|(m4_t1=1&resource4=2)|(m5_t1=1&resource5=2))) - & ((t1_r3=1)=>((m1_t1=1&resource1=3)|(m2_t1=1&resource2=3)|(m3_t1=1&resource3=3)|(m4_t1=1&resource4=3)|(m5_t1=1&resource5=3))); - -formula task2_completed = finished - & ((t2_r1=1)=>((m1_t2=1&resource1=1)|(m2_t2=1&resource2=1)|(m3_t2=1&resource3=1)|(m4_t2=1&resource4=1)|(m5_t2=1&resource5=1))) - & ((t2_r2=1)=>((m1_t2=1&resource1=2)|(m2_t2=1&resource2=2)|(m3_t2=1&resource3=2)|(m4_t2=1&resource4=2)|(m5_t2=1&resource5=2))) - & ((t2_r3=1)=>((m1_t2=1&resource1=3)|(m2_t2=1&resource2=3)|(m3_t2=1&resource3=3)|(m4_t2=1&resource4=3)|(m5_t2=1&resource5=3))); - - -formula agent1_joins_successful_team = (task1_completed & m1_t1=1) | (task2_completed & m1_t2=1); -formula agent1_joins_successful_team_of_1 = (task1_completed & m1_t1=1 & team_size_t1=1) | (task2_completed & m1_t2=1 & team_size_t2=1); -formula agent1_joins_successful_team_of_2 = (task1_completed & m1_t1=1 & team_size_t1=2) | (task2_completed & m1_t2=1 & team_size_t2=2); -formula agent1_joins_successful_team_of_3 = (task1_completed & m1_t1=1 & team_size_t1=3) | (task2_completed & m1_t2=1 & team_size_t2=3); - -formula agent2_joins_successful_team = (task1_completed & m2_t1=1) | (task2_completed & m2_t2=1); -formula agent2_joins_successful_team_of_1 = (task1_completed & m2_t1=1 & team_size_t1=1) | (task2_completed & m2_t2=1 & team_size_t2=1); -formula agent2_joins_successful_team_of_2 = (task1_completed & m2_t1=1 & team_size_t1=2) | (task2_completed & m2_t2=1 & team_size_t2=2); -formula agent2_joins_successful_team_of_3 = (task1_completed & m2_t1=1 & team_size_t1=3) | (task2_completed & m2_t2=1 & team_size_t2=3); - -formula agent3_joins_successful_team = (task1_completed & m3_t1=1) | (task2_completed & m3_t2=1); -formula agent3_joins_successful_team_of_1 = (task1_completed & m3_t1=1 & team_size_t1=1) | (task2_completed & m3_t2=1 & team_size_t2=1); -formula agent3_joins_successful_team_of_2 = (task1_completed & m3_t1=1 & team_size_t1=2) | (task2_completed & m3_t2=1 & team_size_t2=2); -formula agent3_joins_successful_team_of_3 = (task1_completed & m3_t1=1 & team_size_t1=3) | (task2_completed & m3_t2=1 & team_size_t2=3); - -formula agent4_joins_successful_team = (task1_completed & m4_t1=1) | (task2_completed & m4_t2=1); -formula agent4_joins_successful_team_of_1 = (task1_completed & m4_t1=1 & team_size_t1=1) | (task2_completed & m4_t2=1 & team_size_t2=1); -formula agent4_joins_successful_team_of_2 = (task1_completed & m4_t1=1 & team_size_t1=2) | (task2_completed & m4_t2=1 & team_size_t2=2); -formula agent4_joins_successful_team_of_3 = (task1_completed & m4_t1=1 & team_size_t1=3) | (task2_completed & m4_t2=1 & team_size_t2=3); - -formula agent5_joins_successful_team = (task1_completed & m5_t1=1) | (task2_completed & m5_t2=1); -formula agent5_joins_successful_team_of_1 = (task1_completed & m5_t1=1 & team_size_t1=1) | (task2_completed & m5_t2=1 & team_size_t2=1); -formula agent5_joins_successful_team_of_2 = (task1_completed & m5_t1=1 & team_size_t1=2) | (task2_completed & m5_t2=1 & team_size_t2=2); -formula agent5_joins_successful_team_of_3 = (task1_completed & m5_t1=1 & team_size_t1=3) | (task2_completed & m5_t2=1 & team_size_t2=3); - -// rewards -rewards "w_1_total" - [] agent1_joins_successful_team : 1; - [] agent2_joins_successful_team : 1; - [] agent3_joins_successful_team : 1; - [] agent4_joins_successful_team : 1; - [] agent5_joins_successful_team : 1; -endrewards - -rewards "w_2_total" - [] task1_completed : 1; - [] task2_completed : 1; -endrewards - - - - - diff --git a/examples/multiobjective/mdp/team/team2obj_5_numerical.pctl b/examples/multiobjective/mdp/team/team2obj_5_numerical.pctl deleted file mode 100644 index 027c6ef09..000000000 --- a/examples/multiobjective/mdp/team/team2obj_5_numerical.pctl +++ /dev/null @@ -1 +0,0 @@ - multi(Pmax=? [ F task1_completed ], R{"w_1_total"}>=2.753061224 [ C ]) diff --git a/examples/multiobjective/mdp/team/team2obj_5_pareto.pctl b/examples/multiobjective/mdp/team/team2obj_5_pareto.pctl deleted file mode 100644 index 636cd1772..000000000 --- a/examples/multiobjective/mdp/team/team2obj_5_pareto.pctl +++ /dev/null @@ -1 +0,0 @@ - multi(Pmax=? [ F task1_completed ], R{"w_1_total"}max=? [ C ]) diff --git a/examples/multiobjective/mdp/team/team3obj_3.nm b/examples/multiobjective/mdp/team/team3obj_3.nm deleted file mode 100644 index 9e677312d..000000000 --- a/examples/multiobjective/mdp/team/team3obj_3.nm +++ /dev/null @@ -1,288 +0,0 @@ -mdp - -// parameters -const int n_resources = 3; -const int n_tasks = 2; -const int n_sensors = 3; - - -// sensor resources -const int resource1=1; -const int resource2=2; -const int resource3=3; - -// network configuration -const int e12=1; -const int e13=1; - -const int e21=e12; -const int e23=1; - -const int e31=e13; -const int e32=e23; - - - - -// agent is committed to some team -formula committed = (m1_t1+m1_t2) > 0; - -// formulae to compute team sizes -formula team_size_t1 = m1_t1+m2_t1+m3_t1; -formula team_size_t2 = m1_t2+m2_t2+m3_t2; - -// formulae to check whether the agent can join the team -formula can_join_t1 = e12*m2_t1 + e13*m3_t1 > 0; -formula can_join_t2 = e12*m2_t2 + e13*m3_t2 > 0; - -// formulae to check whether agent has the resource required by the task -formula has_resource_t1 = ( (t1_r1=1&resource1=1) | (t1_r2=1&resource1=2) | (t1_r3=1&resource1=3) ); -formula has_resource_t2 = ( (t2_r1=1&resource1=1) | (t2_r2=1&resource1=2) | (t2_r3=1&resource1=3) ); - -// formulae to check whether the resource of an agent has been already filled in the team -formula resource_filled_t1 = (m2_t1=1 & resource1=resource2) | (m3_t1=1 & resource1=resource3); -formula resource_filled_t2 = (m2_t2=1 & resource1=resource2) | (m3_t2=1 & resource1=resource3); - -// formula to compute team initiation probability (assuming each agent has at least one connection) -formula IP = (e12*(1-((m2_t1+m2_t2)=0?0:1))+e13*(1-((m3_t1+m3_t2)=0?0:1))) / (e12+e13); - - -module controller // schedules the algorithm - - // algorithm status - status : [0..6]; - - // task resource indicator variables - t1_r1 : [0..1]; - t1_r2 : [0..1]; - t1_r3 : [0..1]; - - t2_r1 : [0..1]; - t2_r2 : [0..1]; - t2_r3 : [0..1]; - - // schedule placeholders - turn1 : [0..n_sensors]; - turn2 : [0..n_sensors]; - turn3 : [0..n_sensors]; - - // selecting schedule uniformly at random - [] status=0 -> 1/6 : (turn1'=1) & (turn2'=2) & (turn3'=3) & (status'=1) - + 1/6 : (turn1'=1) & (turn2'=3) & (turn3'=2) & (status'=1) - + 1/6 : (turn1'=2) & (turn2'=1) & (turn3'=3) & (status'=1) - + 1/6 : (turn1'=2) & (turn2'=3) & (turn3'=1) & (status'=1) - + 1/6 : (turn1'=3) & (turn2'=1) & (turn3'=2) & (status'=1) - + 1/6 : (turn1'=3) & (turn2'=2) & (turn3'=1) & (status'=1); - - - // initialising non-empty tasks uniformly at random - [] status=1 -> 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2); - - // executing the schedule - - // 1st round - [str1] status=2 & turn1=1 -> (status'=2); - [fin1] status=2 & turn1=1 -> (status'=3); - [str2] status=2 & turn1=2 -> (status'=2); - [fin2] status=2 & turn1=2 -> (status'=3); - [str3] status=2 & turn1=3 -> (status'=2); - [fin3] status=2 & turn1=3 -> (status'=3); - - // 2nd round - [str1] status=3 & turn2=1 -> (status'=3); - [fin1] status=3 & turn2=1 -> (status'=4); - [str2] status=3 & turn2=2 -> (status'=3); - [fin2] status=3 & turn2=2 -> (status'=4); - [str3] status=3 & turn2=3 -> (status'=3); - [fin3] status=3 & turn2=3 -> (status'=4); - - // 3rd round - [str1] status=4 & turn3=1 -> (status'=4); - [fin1] status=4 & turn3=1 -> (status'=5); - [str2] status=4 & turn3=2 -> (status'=4); - [fin2] status=4 & turn3=2 -> (status'=5); - [str3] status=4 & turn3=3 -> (status'=4); - [fin3] status=4 & turn3=3 -> (status'=5); - - [] status=5 -> (status'=6); - - [] status=6 -> true; - -endmodule - -module sensor1 - - state1 : [0..1]; - - // team membership indicators - m1_t1 : [0..1]; - m1_t2 : [0..1]; - - // starting turn, selecting order of tasks - [str1] state1=0 -> (state1'=1); - - // if there is no team and has required skill - initiating the team - [] state1=1 & !committed & team_size_t1=0 & has_resource_t1 -> (m1_t1'=1); - [] state1=1 & !committed & team_size_t2=0 & has_resource_t2 -> (m1_t2'=1); - - // if team already exists and one of the neighbours is in it - joining the team - [] state1=1 & !committed & team_size_t1>0 & can_join_t1 & has_resource_t1 & !resource_filled_t1 -> (m1_t1'=1); - [] state1=1 & !committed & team_size_t2>0 & can_join_t2 & has_resource_t2 & !resource_filled_t2 -> (m1_t2'=1); - - [fin1] state1>0 -> (state1'=0); - -endmodule - -module sensor2 = sensor1 -[ - state1=state2, - - str1=str2, - fin1=fin2, - - m1_t1=m2_t1, - m1_t2=m2_t2, - - m2_t1=m1_t1, - m2_t2=m1_t2, - - resource1=resource2, - resource2=resource1, - - e12=e21, - e13=e23, - e14=e24, - e15=e25, - - e21=e12, - e23=e13, - e24=e14, - e25=e15 -] -endmodule - -module sensor3 = sensor1 -[ - state1=state3, - - str1=str3, - fin1=fin3, - - m1_t1=m3_t1, - m1_t2=m3_t2, - m3_t1=m1_t1, - m3_t2=m1_t2, - - resource1=resource3, - resource3=resource1, - - e12=e32, - e13=e31, - e14=e34, - e15=e35, - - e31=e13, - e32=e12, - e34=e14, - e35=e15 -] -endmodule - - - - -// labels and formulae for property specification -formula finished = (status=5); -label "end" = (status=6); - - -formula task1_completed = finished - & ((t1_r1=1)=>((m1_t1=1&resource1=1)|(m2_t1=1&resource2=1)|(m3_t1=1&resource3=1))) - & ((t1_r2=1)=>((m1_t1=1&resource1=2)|(m2_t1=1&resource2=2)|(m3_t1=1&resource3=2))) - & ((t1_r3=1)=>((m1_t1=1&resource1=3)|(m2_t1=1&resource2=3)|(m3_t1=1&resource3=3))); - -formula task2_completed = finished - & ((t2_r1=1)=>((m1_t2=1&resource1=1)|(m2_t2=1&resource2=1)|(m3_t2=1&resource3=1))) - & ((t2_r2=1)=>((m1_t2=1&resource1=2)|(m2_t2=1&resource2=2)|(m3_t2=1&resource3=2))) - & ((t2_r3=1)=>((m1_t2=1&resource1=3)|(m2_t2=1&resource2=3)|(m3_t2=1&resource3=3))); - - - -formula agent1_joins_successful_team = (task1_completed & m1_t1=1) | (task2_completed & m1_t2=1); -formula agent1_joins_successful_team_of_1 = (task1_completed & m1_t1=1 & team_size_t1=1) | (task2_completed & m1_t2=1 & team_size_t2=1); -formula agent1_joins_successful_team_of_2 = (task1_completed & m1_t1=1 & team_size_t1=2) | (task2_completed & m1_t2=1 & team_size_t2=2); -formula agent1_joins_successful_team_of_3 = (task1_completed & m1_t1=1 & team_size_t1=3) | (task2_completed & m1_t2=1 & team_size_t2=3); - -formula agent2_joins_successful_team = (task1_completed & m2_t1=1) | (task2_completed & m2_t2=1); -formula agent2_joins_successful_team_of_1 = (task1_completed & m2_t1=1 & team_size_t1=1) | (task2_completed & m2_t2=1 & team_size_t2=1); -formula agent2_joins_successful_team_of_2 = (task1_completed & m2_t1=1 & team_size_t1=2) | (task2_completed & m2_t2=1 & team_size_t2=2); -formula agent2_joins_successful_team_of_3 = (task1_completed & m2_t1=1 & team_size_t1=3) | (task2_completed & m2_t2=1 & team_size_t2=3); - -formula agent3_joins_successful_team = (task1_completed & m3_t1=1) | (task2_completed & m3_t2=1); -formula agent3_joins_successful_team_of_1 = (task1_completed & m3_t1=1 & team_size_t1=1) | (task2_completed & m3_t2=1 & team_size_t2=1); -formula agent3_joins_successful_team_of_2 = (task1_completed & m3_t1=1 & team_size_t1=2) | (task2_completed & m3_t2=1 & team_size_t2=2); -formula agent3_joins_successful_team_of_3 = (task1_completed & m3_t1=1 & team_size_t1=3) | (task2_completed & m3_t2=1 & team_size_t2=3); - -// rewards -rewards "w_1_total" - [] agent1_joins_successful_team : 1; - [] agent2_joins_successful_team : 1; - [] agent3_joins_successful_team : 1; -endrewards - -rewards "w_2_total" - [] task1_completed : 1; - [] task2_completed : 1; -endrewards - - - - diff --git a/examples/multiobjective/mdp/team/team3obj_3_numerical.pctl b/examples/multiobjective/mdp/team/team3obj_3_numerical.pctl deleted file mode 100644 index 4a02276ce..000000000 --- a/examples/multiobjective/mdp/team/team3obj_3_numerical.pctl +++ /dev/null @@ -1 +0,0 @@ - multi(Pmax=? [ F task1_completed ], R{"w_1_total"}>=2.210204082 [ C ], P>=0.5 [ F task2_completed ]) diff --git a/examples/multiobjective/mdp/team/team3obj_3_pareto.pctl b/examples/multiobjective/mdp/team/team3obj_3_pareto.pctl deleted file mode 100644 index 8343ec77e..000000000 --- a/examples/multiobjective/mdp/team/team3obj_3_pareto.pctl +++ /dev/null @@ -1 +0,0 @@ - multi(Pmax=? [ F task1_completed ], R{"w_1_total"}max=? [ C ], Pmax=? [ F task2_completed ]) diff --git a/examples/multiobjective/mdp/team/team3obj_4.nm b/examples/multiobjective/mdp/team/team3obj_4.nm deleted file mode 100644 index 77a74d3f1..000000000 --- a/examples/multiobjective/mdp/team/team3obj_4.nm +++ /dev/null @@ -1,366 +0,0 @@ -mdp - -// parameters -const int n_resources = 3; -const int n_tasks = 2; -const int n_sensors = 4; - - -// sensor resources -const int resource1=1; -const int resource2=2; -const int resource3=3; -const int resource4=1; - -// network configuration -const int e12=1; -const int e13=1; -const int e14=1; - -const int e21=e12; -const int e23=1; -const int e24=1; - -const int e31=e13; -const int e32=e23; -const int e34=1; - -const int e41=e14; -const int e42=e24; -const int e43=e34; - - - -// agent is committed to some team -formula committed = (m1_t1+m1_t2) > 0; - -// formulae to compute team sizes -formula team_size_t1 = m1_t1+m2_t1+m3_t1+m4_t1; -formula team_size_t2 = m1_t2+m2_t2+m3_t2+m4_t2; - -// formulae to check whether the agent can join the team -formula can_join_t1 = e12*m2_t1 + e13*m3_t1 + e14*m4_t1 > 0; -formula can_join_t2 = e12*m2_t2 + e13*m3_t2 + e14*m4_t2 > 0; - -// formulae to check whether agent has the resource required by the task -formula has_resource_t1 = ( (t1_r1=1&resource1=1) | (t1_r2=1&resource1=2) | (t1_r3=1&resource1=3) ); -formula has_resource_t2 = ( (t2_r1=1&resource1=1) | (t2_r2=1&resource1=2) | (t2_r3=1&resource1=3) ); - -// formulae to check whether the resource of an agent has been already filled in the team -formula resource_filled_t1 = (m2_t1=1 & resource1=resource2) | (m3_t1=1 & resource1=resource3) | (m4_t1=1 & resource1=resource4); -formula resource_filled_t2 = (m2_t2=1 & resource1=resource2) | (m3_t2=1 & resource1=resource3) | (m4_t2=1 & resource1=resource4); - -// formula to compute team initiation probability (assuming each agent has at least one connection) -formula IP = (e12*(1-((m2_t1+m2_t2)=0?0:1))+e13*(1-((m3_t1+m3_t2)=0?0:1))+e14*(1-((m4_t1+m4_t2)=0?0:1))) / (e12+e13+e14); - - -module controller // schedules the algorithm - - // algorithm status - status : [0..7]; - - // task resource indicator variables - t1_r1 : [0..1]; - t1_r2 : [0..1]; - t1_r3 : [0..1]; - - t2_r1 : [0..1]; - t2_r2 : [0..1]; - t2_r3 : [0..1]; - - // schedule placeholders - turn1 : [0..n_sensors]; - turn2 : [0..n_sensors]; - turn3 : [0..n_sensors]; - turn4 : [0..n_sensors]; - turn5 : [0..n_sensors]; - - // selecting schedule uniformly at random - [] status=0 -> 1/24 : (turn1'=1) & (turn2'=2) & (turn3'=3) & (turn4'=4) & (status'=1) - + 1/24 : (turn1'=1) & (turn2'=2) & (turn3'=4) & (turn4'=3) & (status'=1) - + 1/24 : (turn1'=1) & (turn2'=3) & (turn3'=2) & (turn4'=4) & (status'=1) - + 1/24 : (turn1'=1) & (turn2'=3) & (turn3'=4) & (turn4'=2) & (status'=1) - + 1/24 : (turn1'=1) & (turn2'=4) & (turn3'=2) & (turn4'=3) & (status'=1) - + 1/24 : (turn1'=1) & (turn2'=4) & (turn3'=3) & (turn4'=2) & (status'=1) - + 1/24 : (turn1'=2) & (turn2'=1) & (turn3'=3) & (turn4'=4) & (status'=1) - + 1/24 : (turn1'=2) & (turn2'=1) & (turn3'=4) & (turn4'=3) & (status'=1) - + 1/24 : (turn1'=2) & (turn2'=3) & (turn3'=1) & (turn4'=4) & (status'=1) - + 1/24 : (turn1'=2) & (turn2'=3) & (turn3'=4) & (turn4'=1) & (status'=1) - + 1/24 : (turn1'=2) & (turn2'=4) & (turn3'=1) & (turn4'=3) & (status'=1) - + 1/24 : (turn1'=2) & (turn2'=4) & (turn3'=3) & (turn4'=1) & (status'=1) - + 1/24 : (turn1'=3) & (turn2'=1) & (turn3'=2) & (turn4'=4) & (status'=1) - + 1/24 : (turn1'=3) & (turn2'=1) & (turn3'=4) & (turn4'=2) & (status'=1) - + 1/24 : (turn1'=3) & (turn2'=2) & (turn3'=1) & (turn4'=4) & (status'=1) - + 1/24 : (turn1'=3) & (turn2'=2) & (turn3'=4) & (turn4'=1) & (status'=1) - + 1/24 : (turn1'=3) & (turn2'=4) & (turn3'=1) & (turn4'=2) & (status'=1) - + 1/24 : (turn1'=3) & (turn2'=4) & (turn3'=2) & (turn4'=1) & (status'=1) - + 1/24 : (turn1'=4) & (turn2'=1) & (turn3'=2) & (turn4'=3) & (status'=1) - + 1/24 : (turn1'=4) & (turn2'=1) & (turn3'=3) & (turn4'=2) & (status'=1) - + 1/24 : (turn1'=4) & (turn2'=2) & (turn3'=1) & (turn4'=3) & (status'=1) - + 1/24 : (turn1'=4) & (turn2'=2) & (turn3'=3) & (turn4'=1) & (status'=1) - + 1/24 : (turn1'=4) & (turn2'=3) & (turn3'=1) & (turn4'=2) & (status'=1) - + 1/24 : (turn1'=4) & (turn2'=3) & (turn3'=2) & (turn4'=1) & (status'=1); - - - // initialising non-empty tasks uniformly at random - [] status=1 -> 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2); - - // executing the schedule - - // 1st round - [str1] status=2 & turn1=1 -> (status'=2); - [fin1] status=2 & turn1=1 -> (status'=3); - [str2] status=2 & turn1=2 -> (status'=2); - [fin2] status=2 & turn1=2 -> (status'=3); - [str3] status=2 & turn1=3 -> (status'=2); - [fin3] status=2 & turn1=3 -> (status'=3); - [str4] status=2 & turn1=4 -> (status'=2); - [fin4] status=2 & turn1=4 -> (status'=3); - - // 2nd round - [str1] status=3 & turn2=1 -> (status'=3); - [fin1] status=3 & turn2=1 -> (status'=4); - [str2] status=3 & turn2=2 -> (status'=3); - [fin2] status=3 & turn2=2 -> (status'=4); - [str3] status=3 & turn2=3 -> (status'=3); - [fin3] status=3 & turn2=3 -> (status'=4); - [str4] status=3 & turn2=4 -> (status'=3); - [fin4] status=3 & turn2=4 -> (status'=4); - - // 3rd round - [str1] status=4 & turn3=1 -> (status'=4); - [fin1] status=4 & turn3=1 -> (status'=5); - [str2] status=4 & turn3=2 -> (status'=4); - [fin2] status=4 & turn3=2 -> (status'=5); - [str3] status=4 & turn3=3 -> (status'=4); - [fin3] status=4 & turn3=3 -> (status'=5); - [str4] status=4 & turn3=4 -> (status'=4); - [fin4] status=4 & turn3=4 -> (status'=5); - - // 4th round - [str1] status=5 & turn4=1 -> (status'=5); - [fin1] status=5 & turn4=1 -> (status'=6); - [str2] status=5 & turn4=2 -> (status'=5); - [fin2] status=5 & turn4=2 -> (status'=6); - [str3] status=5 & turn4=3 -> (status'=5); - [fin3] status=5 & turn4=3 -> (status'=6); - [str4] status=5 & turn4=4 -> (status'=5); - [fin4] status=5 & turn4=4 -> (status'=6); - - [] status=6 -> (status'=7); - - [] status=7 -> (status'=7); - -endmodule - -module sensor1 - - state1 : [0..1]; - - // team membership indicators - m1_t1 : [0..1]; - m1_t2 : [0..1]; - - // starting turn, selecting order of tasks - [str1] state1=0 -> (state1'=1); - - // if there is no team and has required skill - initiating the team - [] state1=1 & !committed & team_size_t1=0 & has_resource_t1 -> (m1_t1'=1); - [] state1=1 & !committed & team_size_t2=0 & has_resource_t2 -> (m1_t2'=1); - - // if team already exists and one of the neighbours is in it - joining the team - [] state1=1 & !committed & team_size_t1>0 & can_join_t1 & has_resource_t1 & !resource_filled_t1 -> (m1_t1'=1); - [] state1=1 & !committed & team_size_t2>0 & can_join_t2 & has_resource_t2 & !resource_filled_t2 -> (m1_t2'=1); - - [fin1] state1>0 -> (state1'=0); - -endmodule - -module sensor2 = sensor1 -[ - state1=state2, - - str1=str2, - fin1=fin2, - - m1_t1=m2_t1, - m1_t2=m2_t2, - - m2_t1=m1_t1, - m2_t2=m1_t2, - - resource1=resource2, - resource2=resource1, - - e12=e21, - e13=e23, - e14=e24, - e15=e25, - - e21=e12, - e23=e13, - e24=e14, - e25=e15 -] -endmodule - -module sensor3 = sensor1 -[ - state1=state3, - - str1=str3, - fin1=fin3, - - m1_t1=m3_t1, - m1_t2=m3_t2, - m3_t1=m1_t1, - m3_t2=m1_t2, - - resource1=resource3, - resource3=resource1, - - e12=e32, - e13=e31, - e14=e34, - e15=e35, - - e31=e13, - e32=e12, - e34=e14, - e35=e15 -] -endmodule - -module sensor4 = sensor1 -[ - state1=state4, - - str1=str4, - fin1=fin4, - - m1_t1=m4_t1, - m1_t2=m4_t2, - - m4_t1=m1_t1, - m4_t2=m1_t2, - - resource1=resource4, - resource4=resource1, - - e12=e42, - e13=e43, - e14=e41, - e15=e45, - - e41=e14, - e42=e12, - e43=e13, - e45=e15 -] -endmodule - - - - - - -// labels and formulae for property specification -formula finished = (status=6); -label "end" = (status=7); - -formula task1_completed = finished - & ((t1_r1=1)=>((m1_t1=1&resource1=1)|(m2_t1=1&resource2=1)|(m3_t1=1&resource3=1)|(m4_t1=1&resource4=1))) - & ((t1_r2=1)=>((m1_t1=1&resource1=2)|(m2_t1=1&resource2=2)|(m3_t1=1&resource3=2)|(m4_t1=1&resource4=2))) - & ((t1_r3=1)=>((m1_t1=1&resource1=3)|(m2_t1=1&resource2=3)|(m3_t1=1&resource3=3)|(m4_t1=1&resource4=3))); - -formula task2_completed = finished - & ((t2_r1=1)=>((m1_t2=1&resource1=1)|(m2_t2=1&resource2=1)|(m3_t2=1&resource3=1)|(m4_t2=1&resource4=1))) - & ((t2_r2=1)=>((m1_t2=1&resource1=2)|(m2_t2=1&resource2=2)|(m3_t2=1&resource3=2)|(m4_t2=1&resource4=2))) - & ((t2_r3=1)=>((m1_t2=1&resource1=3)|(m2_t2=1&resource2=3)|(m3_t2=1&resource3=3)|(m4_t2=1&resource4=3))); - -formula agent1_joins_successful_team = (task1_completed & m1_t1=1) | (task2_completed & m1_t2=1); -formula agent1_joins_successful_team_of_1 = (task1_completed & m1_t1=1 & team_size_t1=1) | (task2_completed & m1_t2=1 & team_size_t2=1); -formula agent1_joins_successful_team_of_2 = (task1_completed & m1_t1=1 & team_size_t1=2) | (task2_completed & m1_t2=1 & team_size_t2=2); -formula agent1_joins_successful_team_of_3 = (task1_completed & m1_t1=1 & team_size_t1=3) | (task2_completed & m1_t2=1 & team_size_t2=3); - -formula agent2_joins_successful_team = (task1_completed & m2_t1=1) | (task2_completed & m2_t2=1); -formula agent2_joins_successful_team_of_1 = (task1_completed & m2_t1=1 & team_size_t1=1) | (task2_completed & m2_t2=1 & team_size_t2=1); -formula agent2_joins_successful_team_of_2 = (task1_completed & m2_t1=1 & team_size_t1=2) | (task2_completed & m2_t2=1 & team_size_t2=2); -formula agent2_joins_successful_team_of_3 = (task1_completed & m2_t1=1 & team_size_t1=3) | (task2_completed & m2_t2=1 & team_size_t2=3); - -formula agent3_joins_successful_team = (task1_completed & m3_t1=1) | (task2_completed & m3_t2=1); -formula agent3_joins_successful_team_of_1 = (task1_completed & m3_t1=1 & team_size_t1=1) | (task2_completed & m3_t2=1 & team_size_t2=1); -formula agent3_joins_successful_team_of_2 = (task1_completed & m3_t1=1 & team_size_t1=2) | (task2_completed & m3_t2=1 & team_size_t2=2); -formula agent3_joins_successful_team_of_3 = (task1_completed & m3_t1=1 & team_size_t1=3) | (task2_completed & m3_t2=1 & team_size_t2=3); - -formula agent4_joins_successful_team = (task1_completed & m4_t1=1) | (task2_completed & m4_t2=1); -formula agent4_joins_successful_team_of_1 = (task1_completed & m4_t1=1 & team_size_t1=1) | (task2_completed & m4_t2=1 & team_size_t2=1); -formula agent4_joins_successful_team_of_2 = (task1_completed & m4_t1=1 & team_size_t1=2) | (task2_completed & m4_t2=1 & team_size_t2=2); -formula agent4_joins_successful_team_of_3 = (task1_completed & m4_t1=1 & team_size_t1=3) | (task2_completed & m4_t2=1 & team_size_t2=3); - - -// rewards -rewards "w_1_total" - [] agent1_joins_successful_team : 1; - [] agent2_joins_successful_team : 1; - [] agent3_joins_successful_team : 1; - [] agent4_joins_successful_team : 1; -endrewards - -rewards "w_2_total" - [] task1_completed : 1; - [] task2_completed : 1; -endrewards - - - - - diff --git a/examples/multiobjective/mdp/team/team3obj_4_numerical.pctl b/examples/multiobjective/mdp/team/team3obj_4_numerical.pctl deleted file mode 100644 index 3712e6d0d..000000000 --- a/examples/multiobjective/mdp/team/team3obj_4_numerical.pctl +++ /dev/null @@ -1 +0,0 @@ - multi(Pmax=? [ F task1_completed ], R{"w_1_total"}>=2.423469388 [ C ], P>=0.5 [ F task2_completed ]) diff --git a/examples/multiobjective/mdp/team/team3obj_4_pareto.pctl b/examples/multiobjective/mdp/team/team3obj_4_pareto.pctl deleted file mode 100644 index 8343ec77e..000000000 --- a/examples/multiobjective/mdp/team/team3obj_4_pareto.pctl +++ /dev/null @@ -1 +0,0 @@ - multi(Pmax=? [ F task1_completed ], R{"w_1_total"}max=? [ C ], Pmax=? [ F task2_completed ]) diff --git a/examples/multiobjective/mdp/team/team3obj_5.nm b/examples/multiobjective/mdp/team/team3obj_5.nm deleted file mode 100644 index 85214bc8c..000000000 --- a/examples/multiobjective/mdp/team/team3obj_5.nm +++ /dev/null @@ -1,532 +0,0 @@ -mdp - -// parameters -const int n_resources = 3; -const int n_tasks = 2; -const int n_sensors = 5; - - -// sensor resources -const int resource1=1; -const int resource2=2; -const int resource3=3; -const int resource4=1; -const int resource5=2; - -// network configuration -const int e12=1; -const int e13=1; -const int e14=1; -const int e15=1; - -const int e21=e12; -const int e23=1; -const int e24=1; -const int e25=1; - -const int e31=e13; -const int e32=e23; -const int e34=1; -const int e35=1; - -const int e41=e14; -const int e42=e24; -const int e43=e34; -const int e45=1; - -const int e51=e15; -const int e52=e25; -const int e53=e35; -const int e54=e45; - - -// agent is committed to some team -formula committed = (m1_t1+m1_t2) > 0; - -// formulae to compute team sizes -formula team_size_t1 = m1_t1+m2_t1+m3_t1+m4_t1+m5_t1; -formula team_size_t2 = m1_t2+m2_t2+m3_t2+m4_t2+m5_t2; - -// formulae to check whether the agent can join the team -formula can_join_t1 = e12*m2_t1 + e13*m3_t1 + e14*m4_t1 + e15*m5_t1 > 0; -formula can_join_t2 = e12*m2_t2 + e13*m3_t2 + e14*m4_t2 + e15*m5_t2 > 0; - -// formulae to check whether agent has the resource required by the task -formula has_resource_t1 = ( (t1_r1=1&resource1=1) | (t1_r2=1&resource1=2) | (t1_r3=1&resource1=3) ); -formula has_resource_t2 = ( (t2_r1=1&resource1=1) | (t2_r2=1&resource1=2) | (t2_r3=1&resource1=3) ); - -// formulae to check whether the resource of an agent has been already filled in the team -formula resource_filled_t1 = (m2_t1=1 & resource1=resource2) | (m3_t1=1 & resource1=resource3) | (m4_t1=1 & resource1=resource4) | (m5_t1=1 & resource1=resource5); -formula resource_filled_t2 = (m2_t2=1 & resource1=resource2) | (m3_t2=1 & resource1=resource3) | (m4_t2=1 & resource1=resource4) | (m5_t2=1 & resource1=resource5); - -// formula to compute team initiation probability (assuming each agent has at least one connection) -formula IP = (e12*(1-((m2_t1+m2_t2)=0?0:1))+e13*(1-((m3_t1+m3_t2)=0?0:1))+e14*(1-((m4_t1+m4_t2)=0?0:1))+e15*(1-((m5_t1+m5_t2)=0?0:1))) / (e12+e13+e14+e15); - - -module controller // schedules the algorithm - - // algorithm status - status : [0..8]; - - // task resource indicator variables - t1_r1 : [0..1]; - t1_r2 : [0..1]; - t1_r3 : [0..1]; - - t2_r1 : [0..1]; - t2_r2 : [0..1]; - t2_r3 : [0..1]; - - // schedule placeholders - turn1 : [0..n_sensors]; - turn2 : [0..n_sensors]; - turn3 : [0..n_sensors]; - turn4 : [0..n_sensors]; - turn5 : [0..n_sensors]; - - // selecting schedule uniformly at random - [] status=0 -> 1/120 : (turn1'=1) & (turn2'=2) & (turn3'=3) & (turn4'=4) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=2) & (turn3'=3) & (turn4'=5) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=2) & (turn3'=4) & (turn4'=3) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=2) & (turn3'=4) & (turn4'=5) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=2) & (turn3'=5) & (turn4'=3) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=2) & (turn3'=5) & (turn4'=4) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=3) & (turn3'=2) & (turn4'=4) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=3) & (turn3'=2) & (turn4'=5) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=3) & (turn3'=4) & (turn4'=2) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=3) & (turn3'=4) & (turn4'=5) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=3) & (turn3'=5) & (turn4'=2) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=3) & (turn3'=5) & (turn4'=4) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=4) & (turn3'=2) & (turn4'=3) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=4) & (turn3'=2) & (turn4'=5) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=4) & (turn3'=3) & (turn4'=2) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=4) & (turn3'=3) & (turn4'=5) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=4) & (turn3'=5) & (turn4'=2) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=4) & (turn3'=5) & (turn4'=3) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=5) & (turn3'=2) & (turn4'=3) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=5) & (turn3'=2) & (turn4'=4) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=5) & (turn3'=3) & (turn4'=2) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=5) & (turn3'=3) & (turn4'=4) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=5) & (turn3'=4) & (turn4'=2) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=1) & (turn2'=5) & (turn3'=4) & (turn4'=3) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=1) & (turn3'=3) & (turn4'=4) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=1) & (turn3'=3) & (turn4'=5) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=1) & (turn3'=4) & (turn4'=3) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=1) & (turn3'=4) & (turn4'=5) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=1) & (turn3'=5) & (turn4'=3) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=1) & (turn3'=5) & (turn4'=4) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=3) & (turn3'=1) & (turn4'=4) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=3) & (turn3'=1) & (turn4'=5) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=3) & (turn3'=4) & (turn4'=1) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=3) & (turn3'=4) & (turn4'=5) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=3) & (turn3'=5) & (turn4'=1) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=3) & (turn3'=5) & (turn4'=4) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=4) & (turn3'=1) & (turn4'=3) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=4) & (turn3'=1) & (turn4'=5) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=4) & (turn3'=3) & (turn4'=1) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=4) & (turn3'=3) & (turn4'=5) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=4) & (turn3'=5) & (turn4'=1) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=4) & (turn3'=5) & (turn4'=3) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=5) & (turn3'=1) & (turn4'=3) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=5) & (turn3'=1) & (turn4'=4) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=5) & (turn3'=3) & (turn4'=1) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=5) & (turn3'=3) & (turn4'=4) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=5) & (turn3'=4) & (turn4'=1) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=2) & (turn2'=5) & (turn3'=4) & (turn4'=3) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=1) & (turn3'=2) & (turn4'=4) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=1) & (turn3'=2) & (turn4'=5) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=1) & (turn3'=4) & (turn4'=2) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=1) & (turn3'=4) & (turn4'=5) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=1) & (turn3'=5) & (turn4'=2) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=1) & (turn3'=5) & (turn4'=4) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=2) & (turn3'=1) & (turn4'=4) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=2) & (turn3'=1) & (turn4'=5) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=2) & (turn3'=4) & (turn4'=1) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=2) & (turn3'=4) & (turn4'=5) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=2) & (turn3'=5) & (turn4'=1) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=2) & (turn3'=5) & (turn4'=4) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=4) & (turn3'=1) & (turn4'=2) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=4) & (turn3'=1) & (turn4'=5) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=4) & (turn3'=2) & (turn4'=1) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=4) & (turn3'=2) & (turn4'=5) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=4) & (turn3'=5) & (turn4'=1) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=4) & (turn3'=5) & (turn4'=2) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=5) & (turn3'=1) & (turn4'=2) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=5) & (turn3'=1) & (turn4'=4) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=5) & (turn3'=2) & (turn4'=1) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=5) & (turn3'=2) & (turn4'=4) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=5) & (turn3'=4) & (turn4'=1) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=3) & (turn2'=5) & (turn3'=4) & (turn4'=2) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=1) & (turn3'=2) & (turn4'=3) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=1) & (turn3'=2) & (turn4'=5) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=1) & (turn3'=3) & (turn4'=2) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=1) & (turn3'=3) & (turn4'=5) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=1) & (turn3'=5) & (turn4'=2) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=1) & (turn3'=5) & (turn4'=3) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=2) & (turn3'=1) & (turn4'=3) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=2) & (turn3'=1) & (turn4'=5) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=2) & (turn3'=3) & (turn4'=1) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=2) & (turn3'=3) & (turn4'=5) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=2) & (turn3'=5) & (turn4'=1) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=2) & (turn3'=5) & (turn4'=3) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=3) & (turn3'=1) & (turn4'=2) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=3) & (turn3'=1) & (turn4'=5) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=3) & (turn3'=2) & (turn4'=1) & (turn5'=5) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=3) & (turn3'=2) & (turn4'=5) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=3) & (turn3'=5) & (turn4'=1) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=3) & (turn3'=5) & (turn4'=2) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=5) & (turn3'=1) & (turn4'=2) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=5) & (turn3'=1) & (turn4'=3) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=5) & (turn3'=2) & (turn4'=1) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=5) & (turn3'=2) & (turn4'=3) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=5) & (turn3'=3) & (turn4'=1) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=4) & (turn2'=5) & (turn3'=3) & (turn4'=2) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=1) & (turn3'=2) & (turn4'=3) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=1) & (turn3'=2) & (turn4'=4) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=1) & (turn3'=3) & (turn4'=2) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=1) & (turn3'=3) & (turn4'=4) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=1) & (turn3'=4) & (turn4'=2) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=1) & (turn3'=4) & (turn4'=3) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=2) & (turn3'=1) & (turn4'=3) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=2) & (turn3'=1) & (turn4'=4) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=2) & (turn3'=3) & (turn4'=1) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=2) & (turn3'=3) & (turn4'=4) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=2) & (turn3'=4) & (turn4'=1) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=2) & (turn3'=4) & (turn4'=3) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=3) & (turn3'=1) & (turn4'=2) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=3) & (turn3'=1) & (turn4'=4) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=3) & (turn3'=2) & (turn4'=1) & (turn5'=4) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=3) & (turn3'=2) & (turn4'=4) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=3) & (turn3'=4) & (turn4'=1) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=3) & (turn3'=4) & (turn4'=2) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=4) & (turn3'=1) & (turn4'=2) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=4) & (turn3'=1) & (turn4'=3) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=4) & (turn3'=2) & (turn4'=1) & (turn5'=3) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=4) & (turn3'=2) & (turn4'=3) & (turn5'=1) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=4) & (turn3'=3) & (turn4'=1) & (turn5'=2) & (status'=1) - + 1/120 : (turn1'=5) & (turn2'=4) & (turn3'=3) & (turn4'=2) & (turn5'=1) & (status'=1); - - - // initialising non-empty tasks uniformly at random - [] status=1 -> 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=0) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=0) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=0) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=0) & (t2_r2'=1) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=0) & (t2_r3'=1) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=0) & (status'=2) - + 1/49 : (t1_r1'=1) & (t1_r2'=1) & (t1_r3'=1) & (t2_r1'=1) & (t2_r2'=1) & (t2_r3'=1) & (status'=2); - - // executing the schedule - - // 1st round - [str1] status=2 & turn1=1 -> (status'=2); - [fin1] status=2 & turn1=1 -> (status'=3); - [str2] status=2 & turn1=2 -> (status'=2); - [fin2] status=2 & turn1=2 -> (status'=3); - [str3] status=2 & turn1=3 -> (status'=2); - [fin3] status=2 & turn1=3 -> (status'=3); - [str4] status=2 & turn1=4 -> (status'=2); - [fin4] status=2 & turn1=4 -> (status'=3); - [str5] status=2 & turn1=5 -> (status'=2); - [fin5] status=2 & turn1=5 -> (status'=3); - - // 2nd round - [str1] status=3 & turn2=1 -> (status'=3); - [fin1] status=3 & turn2=1 -> (status'=4); - [str2] status=3 & turn2=2 -> (status'=3); - [fin2] status=3 & turn2=2 -> (status'=4); - [str3] status=3 & turn2=3 -> (status'=3); - [fin3] status=3 & turn2=3 -> (status'=4); - [str4] status=3 & turn2=4 -> (status'=3); - [fin4] status=3 & turn2=4 -> (status'=4); - [str5] status=3 & turn2=5 -> (status'=3); - [fin5] status=3 & turn2=5 -> (status'=4); - - // 3rd round - [str1] status=4 & turn3=1 -> (status'=4); - [fin1] status=4 & turn3=1 -> (status'=5); - [str2] status=4 & turn3=2 -> (status'=4); - [fin2] status=4 & turn3=2 -> (status'=5); - [str3] status=4 & turn3=3 -> (status'=4); - [fin3] status=4 & turn3=3 -> (status'=5); - [str4] status=4 & turn3=4 -> (status'=4); - [fin4] status=4 & turn3=4 -> (status'=5); - [str5] status=4 & turn3=5 -> (status'=4); - [fin5] status=4 & turn3=5 -> (status'=5); - - // 4th round - [str1] status=5 & turn4=1 -> (status'=5); - [fin1] status=5 & turn4=1 -> (status'=6); - [str2] status=5 & turn4=2 -> (status'=5); - [fin2] status=5 & turn4=2 -> (status'=6); - [str3] status=5 & turn4=3 -> (status'=5); - [fin3] status=5 & turn4=3 -> (status'=6); - [str4] status=5 & turn4=4 -> (status'=5); - [fin4] status=5 & turn4=4 -> (status'=6); - [str5] status=5 & turn4=5 -> (status'=5); - [fin5] status=5 & turn4=5 -> (status'=6); - - // 5th round - [str1] status=6 & turn5=1 -> (status'=6); - [fin1] status=6 & turn5=1 -> (status'=7); - [str2] status=6 & turn5=2 -> (status'=6); - [fin2] status=6 & turn5=2 -> (status'=7); - [str3] status=6 & turn5=3 -> (status'=6); - [fin3] status=6 & turn5=3 -> (status'=7); - [str4] status=6 & turn5=4 -> (status'=6); - [fin4] status=6 & turn5=4 -> (status'=7); - [str5] status=6 & turn5=5 -> (status'=6); - [fin5] status=6 & turn5=5 -> (status'=7); - - [] status=7 -> (status'=8); - - [] status=8 -> (status'=8); - -endmodule - -module sensor1 - - state1 : [0..1]; - - // team membership indicators - m1_t1 : [0..1]; - m1_t2 : [0..1]; - - // starting turn, selecting order of tasks - [str1] state1=0 -> (state1'=1); - - // if there is no team and has required skill - initiating the team - [] state1=1 & !committed & team_size_t1=0 & has_resource_t1 -> (m1_t1'=1); - [] state1=1 & !committed & team_size_t2=0 & has_resource_t2 -> (m1_t2'=1); - - // if team already exists and one of the neighbours is in it - joining the team - [] state1=1 & !committed & team_size_t1>0 & can_join_t1 & has_resource_t1 & !resource_filled_t1 -> (m1_t1'=1); - [] state1=1 & !committed & team_size_t2>0 & can_join_t2 & has_resource_t2 & !resource_filled_t2 -> (m1_t2'=1); - - [fin1] state1>0 -> (state1'=0); - -endmodule - -module sensor2 = sensor1 -[ - state1=state2, - - str1=str2, - fin1=fin2, - - m1_t1=m2_t1, - m1_t2=m2_t2, - - m2_t1=m1_t1, - m2_t2=m1_t2, - - resource1=resource2, - resource2=resource1, - - e12=e21, - e13=e23, - e14=e24, - e15=e25, - - e21=e12, - e23=e13, - e24=e14, - e25=e15 -] -endmodule - -module sensor3 = sensor1 -[ - state1=state3, - - str1=str3, - fin1=fin3, - - m1_t1=m3_t1, - m1_t2=m3_t2, - m3_t1=m1_t1, - m3_t2=m1_t2, - - resource1=resource3, - resource3=resource1, - - e12=e32, - e13=e31, - e14=e34, - e15=e35, - - e31=e13, - e32=e12, - e34=e14, - e35=e15 -] -endmodule - -module sensor4 = sensor1 -[ - state1=state4, - - str1=str4, - fin1=fin4, - - m1_t1=m4_t1, - m1_t2=m4_t2, - - m4_t1=m1_t1, - m4_t2=m1_t2, - - resource1=resource4, - resource4=resource1, - - e12=e42, - e13=e43, - e14=e41, - e15=e45, - - e41=e14, - e42=e12, - e43=e13, - e45=e15 -] -endmodule - -module sensor5 = sensor1 -[ - state1=state5, - - str1=str5, - fin1=fin5, - - m1_t1=m5_t1, - m1_t2=m5_t2, - - m5_t1=m1_t1, - m5_t2=m1_t2, - - resource1=resource5, - resource5=resource1, - - e12=e52, - e13=e53, - e14=e54, - e15=e51, - - e51=e15, - e52=e12, - e53=e13, - e54=e14 -] -endmodule - -// formulae for scheduling -formula s1_sched = (turn1=1 | turn2=1 | turn3=1 | turn4=1 | turn5=1); -formula s2_sched = (turn1=2 | turn2=2 | turn3=2 | turn4=2 | turn5=2); -formula s3_sched = (turn1=3 | turn2=3 | turn3=3 | turn4=3 | turn5=3); -formula s4_sched = (turn1=4 | turn2=4 | turn3=4 | turn4=4 | turn5=4); -formula s5_sched = (turn1=5 | turn2=5 | turn3=5 | turn4=5 | turn5=5); -formula all_not_sched = !(s1_sched | s2_sched | s3_sched | s4_sched | s5_sched); -formula all_sched = (s1_sched & s2_sched & s3_sched & s4_sched & s5_sched); - - - - -// labels and formulae for property specification -formula finished = (status=7); -label "end" = (status=8); - - -formula task1_completed = finished - & ((t1_r1=1)=>((m1_t1=1&resource1=1)|(m2_t1=1&resource2=1)|(m3_t1=1&resource3=1)|(m4_t1=1&resource4=1)|(m5_t1=1&resource5=1))) - & ((t1_r2=1)=>((m1_t1=1&resource1=2)|(m2_t1=1&resource2=2)|(m3_t1=1&resource3=2)|(m4_t1=1&resource4=2)|(m5_t1=1&resource5=2))) - & ((t1_r3=1)=>((m1_t1=1&resource1=3)|(m2_t1=1&resource2=3)|(m3_t1=1&resource3=3)|(m4_t1=1&resource4=3)|(m5_t1=1&resource5=3))); - -formula task2_completed = finished - & ((t2_r1=1)=>((m1_t2=1&resource1=1)|(m2_t2=1&resource2=1)|(m3_t2=1&resource3=1)|(m4_t2=1&resource4=1)|(m5_t2=1&resource5=1))) - & ((t2_r2=1)=>((m1_t2=1&resource1=2)|(m2_t2=1&resource2=2)|(m3_t2=1&resource3=2)|(m4_t2=1&resource4=2)|(m5_t2=1&resource5=2))) - & ((t2_r3=1)=>((m1_t2=1&resource1=3)|(m2_t2=1&resource2=3)|(m3_t2=1&resource3=3)|(m4_t2=1&resource4=3)|(m5_t2=1&resource5=3))); - -formula agent1_joins_successful_team = (task1_completed & m1_t1=1) | (task2_completed & m1_t2=1); -formula agent1_joins_successful_team_of_1 = (task1_completed & m1_t1=1 & team_size_t1=1) | (task2_completed & m1_t2=1 & team_size_t2=1); -formula agent1_joins_successful_team_of_2 = (task1_completed & m1_t1=1 & team_size_t1=2) | (task2_completed & m1_t2=1 & team_size_t2=2); -formula agent1_joins_successful_team_of_3 = (task1_completed & m1_t1=1 & team_size_t1=3) | (task2_completed & m1_t2=1 & team_size_t2=3); - -formula agent2_joins_successful_team = (task1_completed & m2_t1=1) | (task2_completed & m2_t2=1); -formula agent2_joins_successful_team_of_1 = (task1_completed & m2_t1=1 & team_size_t1=1) | (task2_completed & m2_t2=1 & team_size_t2=1); -formula agent2_joins_successful_team_of_2 = (task1_completed & m2_t1=1 & team_size_t1=2) | (task2_completed & m2_t2=1 & team_size_t2=2); -formula agent2_joins_successful_team_of_3 = (task1_completed & m2_t1=1 & team_size_t1=3) | (task2_completed & m2_t2=1 & team_size_t2=3); - -formula agent3_joins_successful_team = (task1_completed & m3_t1=1) | (task2_completed & m3_t2=1); -formula agent3_joins_successful_team_of_1 = (task1_completed & m3_t1=1 & team_size_t1=1) | (task2_completed & m3_t2=1 & team_size_t2=1); -formula agent3_joins_successful_team_of_2 = (task1_completed & m3_t1=1 & team_size_t1=2) | (task2_completed & m3_t2=1 & team_size_t2=2); -formula agent3_joins_successful_team_of_3 = (task1_completed & m3_t1=1 & team_size_t1=3) | (task2_completed & m3_t2=1 & team_size_t2=3); - -formula agent4_joins_successful_team = (task1_completed & m4_t1=1) | (task2_completed & m4_t2=1); -formula agent4_joins_successful_team_of_1 = (task1_completed & m4_t1=1 & team_size_t1=1) | (task2_completed & m4_t2=1 & team_size_t2=1); -formula agent4_joins_successful_team_of_2 = (task1_completed & m4_t1=1 & team_size_t1=2) | (task2_completed & m4_t2=1 & team_size_t2=2); -formula agent4_joins_successful_team_of_3 = (task1_completed & m4_t1=1 & team_size_t1=3) | (task2_completed & m4_t2=1 & team_size_t2=3); - -formula agent5_joins_successful_team = (task1_completed & m5_t1=1) | (task2_completed & m5_t2=1); -formula agent5_joins_successful_team_of_1 = (task1_completed & m5_t1=1 & team_size_t1=1) | (task2_completed & m5_t2=1 & team_size_t2=1); -formula agent5_joins_successful_team_of_2 = (task1_completed & m5_t1=1 & team_size_t1=2) | (task2_completed & m5_t2=1 & team_size_t2=2); -formula agent5_joins_successful_team_of_3 = (task1_completed & m5_t1=1 & team_size_t1=3) | (task2_completed & m5_t2=1 & team_size_t2=3); - -// rewards -rewards "w_1_total" - [] agent1_joins_successful_team : 1; - [] agent2_joins_successful_team : 1; - [] agent3_joins_successful_team : 1; - [] agent4_joins_successful_team : 1; - [] agent5_joins_successful_team : 1; -endrewards - -rewards "w_2_total" - [] task1_completed : 1; - [] task2_completed : 1; -endrewards - - - - - diff --git a/examples/multiobjective/mdp/team/team3obj_5_numerical.pctl b/examples/multiobjective/mdp/team/team3obj_5_numerical.pctl deleted file mode 100644 index 541c02e9c..000000000 --- a/examples/multiobjective/mdp/team/team3obj_5_numerical.pctl +++ /dev/null @@ -1 +0,0 @@ - multi(Pmax=? [ F task1_completed ], R{"w_1_total"}>=2.753061224 [ C ], P>=0.5 [ F task2_completed ]) diff --git a/examples/multiobjective/mdp/team/team3obj_5_pareto.pctl b/examples/multiobjective/mdp/team/team3obj_5_pareto.pctl deleted file mode 100644 index 8343ec77e..000000000 --- a/examples/multiobjective/mdp/team/team3obj_5_pareto.pctl +++ /dev/null @@ -1 +0,0 @@ - multi(Pmax=? [ F task1_completed ], R{"w_1_total"}max=? [ C ], Pmax=? [ F task2_completed ]) diff --git a/examples/multiobjective/mdp/zeroconf-tb/origFiles/zeroconf_host_multi2_time.nm b/examples/multiobjective/mdp/zeroconf-tb/origFiles/zeroconf_host_multi2_time.nm deleted file mode 100644 index ad0f4a3b7..000000000 --- a/examples/multiobjective/mdp/zeroconf-tb/origFiles/zeroconf_host_multi2_time.nm +++ /dev/null @@ -1,169 +0,0 @@ -// IPv4: PTA model with digitial clocks -// multi-objective model of the host -// gxn/dxp 28/09/09 - -mdp - -//------------------------------------------------------------- -// VARIABLES -const int N=20; // number of abstract hosts -const int K=2; // number of probes to send - -// PROBABILITIES -const double old = N/65024; // probability pick an ip address being used -//const double old = 1/2; // 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 - - -//------------------------------------------------------------- -// CONCRETE HOST -module host0 - - x : [0..TIME_MAX_X]; // first clock of the host - y : [0..TIME_MAX_Y]; // 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 - - // 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) - // 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) - [time] l=1 & coll=MAXCOLL & x (x'=min(x+1,TIME_MAX_X)); - [] 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 - // let time pass - [time] l=2 & x<2 -> (x'=min(x+1,2)); - // send probe - [send1] l=2 & ip=1 & x=2 & probes (x'=0) & (probes'=probes+1); - [send2] l=2 & ip=2 & x=2 & probes (x'=0) & (probes'=probes+1); - // sent K probes and waited 2 seconds - [configured] l=2 & x=2 & probes=K -> (l'=3) & (probes'=0) & (coll'=0) & (x'=0); - // get message and ip does not match: ignore - [rec0] l=2 & ip!=0 -> (l'=l); - [rec1] l=2 & ip!=1 -> (l'=l); - // get a message with matching ip: reconfigure - [rec1] l=2 & ip=1 -> (l'=0) & (coll'=min(coll+1,MAXCOLL)) & (x'=0) & (probes'=0); - - // WAITSG (sends two gratuitious arp probes) - // time passage - [time] l=3 & mess=0 & defend=0 & x (x'=min(x+1,TIME_MAX_X)); - [time] l=3 & mess=0 & defend=1 & x (x'=min(x+1,TIME_MAX_X)) & (y'=min(y+1,DEFEND)); - - // receive message and same ip: defend - [rec1] l=3 & mess=0 & ip=1 & (defend=0 | y>=DEFEND) -> (defend'=1) & (mess'=1) & (y'=0); - // receive message and same ip: defer - [rec1] l=3 & mess=0 & ip=1 & (defend=0 | y (l'=0) & (probes'=0) & (defend'=0) & (x'=0) & (y'=0); - // receive message and different ip - [rec0] l=3 & mess=0 & ip!=0 -> (l'=l); - [rec1] l=3 & mess=0 & ip!=1 -> (l'=l); - - - // send probe reply or message for defence - [send1] l=3 & ip=1 & mess=1 -> (mess'=0); - [send2] l=3 & ip=2 & mess=1 -> (mess'=0); - // send first gratuitous arp message - [send1] l=3 & ip=1 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - [send2] l=3 & ip=2 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - // send second gratuitous arp message (move to use) - [send1] l=3 & ip=1 & mess=0 & x=CONSEC & probes=1 -> (l'=4) & (x'=0) & (y'=0) & (probes'=0); - [send2] l=3 & ip=2 & mess=0 & x=CONSEC & probes=1 -> (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 - -//------------------------------------------------------------- -// error automaton for the environment assumption -// do not get a reply when K probes are sent -const int M; // time between sending and receiving a message - -module env_error2 - - env : [0..1]; // 0 active and 1 done - k : [0..2]; // counts the number of messages sent - c1 : [0..M+1]; // time since first message - c2 : [0..M+1]; // time since second message - error : [0..1]; - - // message with new ip address arrives so done - [send2] error=0 & env=0 -> (env'=1); - // message with old ip address arrives so count - [send1] error=0 & env=0 -> (k'=min(k+1,K)); - // time passgae so update relevant clocks - [time] error=0 & env=0 & k=0 -> true; - [time] error=0 & env=0 & k=1 & min(c1,c2) (c1'=min(c1+1,M+1)); - [time] error=0 & env=0 & k=2 & min(c1,c2) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)); - // all clocks reached their bound so an error - [time] error=0 & env=0 & min(c1,c2)=M -> (error'=1); - // send a reply (then done) - [rec1] error=0 & env=0 & k>0 & min(c1,c2)<=M -> (env'=1); - // finished so any action can be performed - [time] error=1 | env=1 -> true; - [send1] error=1 | env=1 -> true; - [send2] error=1 | env=1 -> true; - [rec1] error=1 | env=1 -> true; - -endmodule - -//------------------------------------------------------------- -// error automaton for the time bounded assumption -// host does not send configured signal within T seconds -const int T; - -module time_error - - time_error : [0..1]; - done : [0..1]; - t : [0..T]; - - [time] t (t'=t+1); // time passes and bound not reached - [time] t=T-1 & done=0 & time_error=0 -> (time_error'=1); // bound reached so error - [configured] time_error=0 -> (done'=1); // configured within the time bound - - // when in error or done state can loop with either action - [configured] time_error=1 | done=1 -> true; - [time] time_error=1 | done=1 -> true; - -endmodule diff --git a/examples/multiobjective/mdp/zeroconf-tb/origFiles/zeroconf_host_multi4_time.nm b/examples/multiobjective/mdp/zeroconf-tb/origFiles/zeroconf_host_multi4_time.nm deleted file mode 100644 index 71984c286..000000000 --- a/examples/multiobjective/mdp/zeroconf-tb/origFiles/zeroconf_host_multi4_time.nm +++ /dev/null @@ -1,174 +0,0 @@ -// IPv4: PTA model with digitial clocks -// multi-objective model of the host -// gxn/dxp 28/09/09 - -mdp - -//------------------------------------------------------------- -// VARIABLES -const int N=20; // number of abstract hosts -const int K=4; // number of probes to send - -// PROBABILITIES -const double old = N/65024; // probability pick an ip address being used -//const double old = 0.5; // 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 - - -//------------------------------------------------------------- -// CONCRETE HOST -module host0 - - x : [0..TIME_MAX_X]; // first clock of the host - y : [0..TIME_MAX_Y]; // 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 - - // 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) - // 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) - [time] l=1 & coll=MAXCOLL & x (x'=min(x+1,TIME_MAX_X)); - [] 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 - // let time pass - [time] l=2 & x<2 -> (x'=min(x+1,2)); - // send probe - [send1] l=2 & ip=1 & x=2 & probes (x'=0) & (probes'=probes+1); - [send2] l=2 & ip=2 & x=2 & probes (x'=0) & (probes'=probes+1); - // sent K probes and waited 2 seconds - [configured] l=2 & x=2 & probes=K -> (l'=3) & (probes'=0) & (coll'=0) & (x'=0); - // get message and ip does not match: ignore - [rec0] l=2 & ip!=0 -> (l'=l); - [rec1] l=2 & ip!=1 -> (l'=l); - // get a message with matching ip: reconfigure - [rec1] l=2 & ip=1 -> (l'=0) & (coll'=min(coll+1,MAXCOLL)) & (x'=0) & (probes'=0); - - // WAITSG (sends two gratuitious arp probes) - // time passage - [time] l=3 & mess=0 & defend=0 & x (x'=min(x+1,TIME_MAX_X)); - [time] l=3 & mess=0 & defend=1 & x (x'=min(x+1,TIME_MAX_X)) & (y'=min(y+1,DEFEND)); - - // receive message and same ip: defend - [rec1] l=3 & mess=0 & ip=1 & (defend=0 | y>=DEFEND) -> (defend'=1) & (mess'=1) & (y'=0); - // receive message and same ip: defer - [rec1] l=3 & mess=0 & ip=1 & (defend=0 | y (l'=0) & (probes'=0) & (defend'=0) & (x'=0) & (y'=0); - // receive message and different ip - [rec0] l=3 & mess=0 & ip!=0 -> (l'=l); - [rec1] l=3 & mess=0 & ip!=1 -> (l'=l); - - - // send probe reply or message for defence - [send1] l=3 & ip=1 & mess=1 -> (mess'=0); - [send2] l=3 & ip=2 & mess=1 -> (mess'=0); - // send first gratuitous arp message - [send1] l=3 & ip=1 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - [send2] l=3 & ip=2 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - // send second gratuitous arp message (move to use) - [send1] l=3 & ip=1 & mess=0 & x=CONSEC & probes=1 -> (l'=4) & (x'=0) & (y'=0) & (probes'=0); - [send2] l=3 & ip=2 & mess=0 & x=CONSEC & probes=1 -> (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 - -//------------------------------------------------------------- -// error automaton for the environment assumption -// do not get a reply when K probes are sent -const int M; // time between sending and receiving a message - -module env_error4 - - env : [0..1]; // 0 active and 1 done - k : [0..4]; // counts the number of messages sent - c1 : [0..M+1]; // time since first message - c2 : [0..M+1]; // time since second message - c3 : [0..M+1]; // time since third message - c4 : [0..M+1]; // time since fourth message - error : [0..1]; - - // message with new ip address arrives so done - [send2] error=0 & env=0 -> (env'=1); - // message with old ip address arrives so count - [send1] error=0 & env=0 -> (k'=min(k+1,K)); - // time passgae so update relevant clocks - [time] error=0 & env=0 & k=0 -> true; - [time] error=0 & env=0 & k=1 & min(c1,c2,c3,c4) (c1'=min(c1+1,M+1)); - [time] error=0 & env=0 & k=2 & min(c1,c2,c3,c4) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)); - [time] error=0 & env=0 & k=3 & min(c1,c2,c3,c4) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)); - [time] error=0 & env=0 & k=4 & min(c1,c2,c3,c4) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)) & (c4'=min(c4+1,M+1)); - // all clocks reached their bound so an error - [time] error=0 & env=0 & min(c1,c2,c3,c4)=M -> (error'=1); - // send a reply (then done) - [rec1] error=0 & env=0 & k>0 & min(c1,c2,c3,c4)<=M -> (env'=1); - // finished so any action can be performed - [time] error=1 | env=1 -> true; - [send1] error=1 | env=1 -> true; - [send2] error=1 | env=1 -> true; - [send2] error=1 | env=1 -> true; - [rec1] error=1 | env=1 -> true; - -endmodule - -//------------------------------------------------------------- -// error automaton for the time bounded assumption -// host does not send configured signal within T seconds -const int T; - -module time_error - - time_error : [0..1]; - done : [0..1]; - t : [0..T]; - - [time] t (t'=t+1); // time passes and bound not reached - [time] t=T-1 & done=0 & time_error=0 -> (time_error'=1); // bound reached so error - [configured] time_error=0 -> (done'=1); // configured within the time bound - - // when in error or done state can loop with either action - [configured] time_error=1 | done=1 -> true; - [time] time_error=1 | done=1 -> true; - -endmodule diff --git a/examples/multiobjective/mdp/zeroconf-tb/origFiles/zeroconf_host_multi_time.pctl b/examples/multiobjective/mdp/zeroconf-tb/origFiles/zeroconf_host_multi_time.pctl deleted file mode 100644 index 078b34c65..000000000 --- a/examples/multiobjective/mdp/zeroconf-tb/origFiles/zeroconf_host_multi_time.pctl +++ /dev/null @@ -1,13 +0,0 @@ -// Max probability of component violating assumption property (checked separately) -const double p_fail = -K=2 ? 0.19 : -K=4 ? 0.006859000000000001 : -K=6 ? 2.476099000000001E-4 : -K=8 ? 8.938717390000006E-6 : -0; - -// Assume-guarantee check via multi-objective -"num_ag": multi(Pmax=? [ F time_error=1 ] , P>=1-p_fail [ G (error=0) ]) - -// Pareto query for assume-guarantee check -"pareto": multi(Pmax=? [ F time_error=1 ] , Pmax=? [ G (error=0) ]) diff --git a/examples/multiobjective/mdp/zeroconf-tb/zeroconf-tb2_14.nm b/examples/multiobjective/mdp/zeroconf-tb/zeroconf-tb2_14.nm deleted file mode 100644 index bc433a7f1..000000000 --- a/examples/multiobjective/mdp/zeroconf-tb/zeroconf-tb2_14.nm +++ /dev/null @@ -1,169 +0,0 @@ -// IPv4: PTA model with digitial clocks -// multi-objective model of the host -// gxn/dxp 28/09/09 - -mdp - -//------------------------------------------------------------- -// VARIABLES -const int N=20; // number of abstract hosts -const int K=2; // number of probes to send - -// PROBABILITIES -const double old = N/65024; // probability pick an ip address being used -//const double old = 1/2; // 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 -const int M=1; // time between sending and receiving a message -const int T=14; - - -//------------------------------------------------------------- -// CONCRETE HOST -module host0 - - x : [0..TIME_MAX_X]; // first clock of the host - y : [0..TIME_MAX_Y]; // 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 - - // 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) - // 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) - [time] l=1 & coll=MAXCOLL & x (x'=min(x+1,TIME_MAX_X)); - [] 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 - // let time pass - [time] l=2 & x<2 -> (x'=min(x+1,2)); - // send probe - [send1] l=2 & ip=1 & x=2 & probes (x'=0) & (probes'=probes+1); - [send2] l=2 & ip=2 & x=2 & probes (x'=0) & (probes'=probes+1); - // sent K probes and waited 2 seconds - [configured] l=2 & x=2 & probes=K -> (l'=3) & (probes'=0) & (coll'=0) & (x'=0); - // get message and ip does not match: ignore - [rec0] l=2 & ip!=0 -> (l'=l); - [rec1] l=2 & ip!=1 -> (l'=l); - // get a message with matching ip: reconfigure - [rec1] l=2 & ip=1 -> (l'=0) & (coll'=min(coll+1,MAXCOLL)) & (x'=0) & (probes'=0); - - // WAITSG (sends two gratuitious arp probes) - // time passage - [time] l=3 & mess=0 & defend=0 & x (x'=min(x+1,TIME_MAX_X)); - [time] l=3 & mess=0 & defend=1 & x (x'=min(x+1,TIME_MAX_X)) & (y'=min(y+1,DEFEND)); - - // receive message and same ip: defend - [rec1] l=3 & mess=0 & ip=1 & (defend=0 | y>=DEFEND) -> (defend'=1) & (mess'=1) & (y'=0); - // receive message and same ip: defer - [rec1] l=3 & mess=0 & ip=1 & (defend=0 | y (l'=0) & (probes'=0) & (defend'=0) & (x'=0) & (y'=0); - // receive message and different ip - [rec0] l=3 & mess=0 & ip!=0 -> (l'=l); - [rec1] l=3 & mess=0 & ip!=1 -> (l'=l); - - - // send probe reply or message for defence - [send1] l=3 & ip=1 & mess=1 -> (mess'=0); - [send2] l=3 & ip=2 & mess=1 -> (mess'=0); - // send first gratuitous arp message - [send1] l=3 & ip=1 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - [send2] l=3 & ip=2 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - // send second gratuitous arp message (move to use) - [send1] l=3 & ip=1 & mess=0 & x=CONSEC & probes=1 -> (l'=4) & (x'=0) & (y'=0) & (probes'=0); - [send2] l=3 & ip=2 & mess=0 & x=CONSEC & probes=1 -> (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 - -//------------------------------------------------------------- -// error automaton for the environment assumption -// do not get a reply when K probes are sent - -module env_error2 - - env : [0..1]; // 0 active and 1 done - k : [0..2]; // counts the number of messages sent - c1 : [0..M+1]; // time since first message - c2 : [0..M+1]; // time since second message - error : [0..1]; - - // message with new ip address arrives so done - [send2] error=0 & env=0 -> (env'=1); - // message with old ip address arrives so count - [send1] error=0 & env=0 -> (k'=min(k+1,K)); - // time passgae so update relevant clocks - [time] error=0 & env=0 & k=0 -> true; - [time] error=0 & env=0 & k=1 & min(c1,c2) (c1'=min(c1+1,M+1)); - [time] error=0 & env=0 & k=2 & min(c1,c2) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)); - // all clocks reached their bound so an error - [time] error=0 & env=0 & min(c1,c2)=M -> (error'=1); - // send a reply (then done) - [rec1] error=0 & env=0 & k>0 & min(c1,c2)<=M -> (env'=1); - // finished so any action can be performed - [time] error=1 | env=1 -> true; - [send1] error=1 | env=1 -> true; - [send2] error=1 | env=1 -> true; - [rec1] error=1 | env=1 -> true; - -endmodule - -//------------------------------------------------------------- -// error automaton for the time bounded assumption -// host does not send configured signal within T seconds - -module time_error - - time_error : [0..1]; - done : [0..1]; - t : [0..T]; - - [time] t (t'=t+1); // time passes and bound not reached - [time] t=T-1 & done=0 & time_error=0 -> (time_error'=1); // bound reached so error - [configured] time_error=0 -> (done'=1); // configured within the time bound - - // when in error or done state can loop with either action - [configured] time_error=1 | done=1 -> true; - [time] time_error=1 | done=1 -> true; - -endmodule diff --git a/examples/multiobjective/mdp/zeroconf-tb/zeroconf-tb2_14_numerical.pctl b/examples/multiobjective/mdp/zeroconf-tb/zeroconf-tb2_14_numerical.pctl deleted file mode 100644 index e8119cae5..000000000 --- a/examples/multiobjective/mdp/zeroconf-tb/zeroconf-tb2_14_numerical.pctl +++ /dev/null @@ -1 +0,0 @@ - multi(Pmax=? [ F time_error=1 ] , P>=0.81[ G (error=0) ]) diff --git a/examples/multiobjective/mdp/zeroconf-tb/zeroconf-tb2_14_pareto.pctl b/examples/multiobjective/mdp/zeroconf-tb/zeroconf-tb2_14_pareto.pctl deleted file mode 100644 index db9996245..000000000 --- a/examples/multiobjective/mdp/zeroconf-tb/zeroconf-tb2_14_pareto.pctl +++ /dev/null @@ -1 +0,0 @@ - multi(Pmax=? [ F time_error=1 ] , Pmax=? [ G (error=0) ]) diff --git a/examples/multiobjective/mdp/zeroconf-tb/zeroconf-tb4_10.nm b/examples/multiobjective/mdp/zeroconf-tb/zeroconf-tb4_10.nm deleted file mode 100644 index a8485f2c9..000000000 --- a/examples/multiobjective/mdp/zeroconf-tb/zeroconf-tb4_10.nm +++ /dev/null @@ -1,174 +0,0 @@ -// IPv4: PTA model with digitial clocks -// multi-objective model of the host -// gxn/dxp 28/09/09 - -mdp - -//------------------------------------------------------------- -// VARIABLES -const int N=20; // number of abstract hosts -const int K=4; // number of probes to send - -// PROBABILITIES -const double old = N/65024; // probability pick an ip address being used -//const double old = 0.5; // 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 -const int M=1; // time between sending and receiving a message -const int T=10; - -//------------------------------------------------------------- -// CONCRETE HOST -module host0 - - x : [0..TIME_MAX_X]; // first clock of the host - y : [0..TIME_MAX_Y]; // 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 - - // 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) - // 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) - [time] l=1 & coll=MAXCOLL & x (x'=min(x+1,TIME_MAX_X)); - [] 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 - // let time pass - [time] l=2 & x<2 -> (x'=min(x+1,2)); - // send probe - [send1] l=2 & ip=1 & x=2 & probes (x'=0) & (probes'=probes+1); - [send2] l=2 & ip=2 & x=2 & probes (x'=0) & (probes'=probes+1); - // sent K probes and waited 2 seconds - [configured] l=2 & x=2 & probes=K -> (l'=3) & (probes'=0) & (coll'=0) & (x'=0); - // get message and ip does not match: ignore - [rec0] l=2 & ip!=0 -> (l'=l); - [rec1] l=2 & ip!=1 -> (l'=l); - // get a message with matching ip: reconfigure - [rec1] l=2 & ip=1 -> (l'=0) & (coll'=min(coll+1,MAXCOLL)) & (x'=0) & (probes'=0); - - // WAITSG (sends two gratuitious arp probes) - // time passage - [time] l=3 & mess=0 & defend=0 & x (x'=min(x+1,TIME_MAX_X)); - [time] l=3 & mess=0 & defend=1 & x (x'=min(x+1,TIME_MAX_X)) & (y'=min(y+1,DEFEND)); - - // receive message and same ip: defend - [rec1] l=3 & mess=0 & ip=1 & (defend=0 | y>=DEFEND) -> (defend'=1) & (mess'=1) & (y'=0); - // receive message and same ip: defer - [rec1] l=3 & mess=0 & ip=1 & (defend=0 | y (l'=0) & (probes'=0) & (defend'=0) & (x'=0) & (y'=0); - // receive message and different ip - [rec0] l=3 & mess=0 & ip!=0 -> (l'=l); - [rec1] l=3 & mess=0 & ip!=1 -> (l'=l); - - - // send probe reply or message for defence - [send1] l=3 & ip=1 & mess=1 -> (mess'=0); - [send2] l=3 & ip=2 & mess=1 -> (mess'=0); - // send first gratuitous arp message - [send1] l=3 & ip=1 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - [send2] l=3 & ip=2 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - // send second gratuitous arp message (move to use) - [send1] l=3 & ip=1 & mess=0 & x=CONSEC & probes=1 -> (l'=4) & (x'=0) & (y'=0) & (probes'=0); - [send2] l=3 & ip=2 & mess=0 & x=CONSEC & probes=1 -> (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 - -//------------------------------------------------------------- -// error automaton for the environment assumption -// do not get a reply when K probes are sent - - -module env_error4 - - env : [0..1]; // 0 active and 1 done - k : [0..4]; // counts the number of messages sent - c1 : [0..M+1]; // time since first message - c2 : [0..M+1]; // time since second message - c3 : [0..M+1]; // time since third message - c4 : [0..M+1]; // time since fourth message - error : [0..1]; - - // message with new ip address arrives so done - [send2] error=0 & env=0 -> (env'=1); - // message with old ip address arrives so count - [send1] error=0 & env=0 -> (k'=min(k+1,K)); - // time passgae so update relevant clocks - [time] error=0 & env=0 & k=0 -> true; - [time] error=0 & env=0 & k=1 & min(c1,c2,c3,c4) (c1'=min(c1+1,M+1)); - [time] error=0 & env=0 & k=2 & min(c1,c2,c3,c4) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)); - [time] error=0 & env=0 & k=3 & min(c1,c2,c3,c4) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)); - [time] error=0 & env=0 & k=4 & min(c1,c2,c3,c4) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)) & (c4'=min(c4+1,M+1)); - // all clocks reached their bound so an error - [time] error=0 & env=0 & min(c1,c2,c3,c4)=M -> (error'=1); - // send a reply (then done) - [rec1] error=0 & env=0 & k>0 & min(c1,c2,c3,c4)<=M -> (env'=1); - // finished so any action can be performed - [time] error=1 | env=1 -> true; - [send1] error=1 | env=1 -> true; - [send2] error=1 | env=1 -> true; - [send2] error=1 | env=1 -> true; - [rec1] error=1 | env=1 -> true; - -endmodule - -//------------------------------------------------------------- -// error automaton for the time bounded assumption -// host does not send configured signal within T seconds - -module time_error - - time_error : [0..1]; - done : [0..1]; - t : [0..T]; - - [time] t (t'=t+1); // time passes and bound not reached - [time] t=T-1 & done=0 & time_error=0 -> (time_error'=1); // bound reached so error - [configured] time_error=0 -> (done'=1); // configured within the time bound - - // when in error or done state can loop with either action - [configured] time_error=1 | done=1 -> true; - [time] time_error=1 | done=1 -> true; - -endmodule diff --git a/examples/multiobjective/mdp/zeroconf-tb/zeroconf-tb4_10_numerical.pctl b/examples/multiobjective/mdp/zeroconf-tb/zeroconf-tb4_10_numerical.pctl deleted file mode 100644 index 84762f3cc..000000000 --- a/examples/multiobjective/mdp/zeroconf-tb/zeroconf-tb4_10_numerical.pctl +++ /dev/null @@ -1 +0,0 @@ - multi(Pmax=? [ F time_error=1 ] , P>=0.993141[ G (error=0) ]) diff --git a/examples/multiobjective/mdp/zeroconf-tb/zeroconf-tb4_10_pareto.pctl b/examples/multiobjective/mdp/zeroconf-tb/zeroconf-tb4_10_pareto.pctl deleted file mode 100644 index db9996245..000000000 --- a/examples/multiobjective/mdp/zeroconf-tb/zeroconf-tb4_10_pareto.pctl +++ /dev/null @@ -1 +0,0 @@ - multi(Pmax=? [ F time_error=1 ] , Pmax=? [ G (error=0) ]) diff --git a/examples/multiobjective/mdp/zeroconf-tb/zeroconf-tb4_14.nm b/examples/multiobjective/mdp/zeroconf-tb/zeroconf-tb4_14.nm deleted file mode 100644 index 4e56d344f..000000000 --- a/examples/multiobjective/mdp/zeroconf-tb/zeroconf-tb4_14.nm +++ /dev/null @@ -1,173 +0,0 @@ -// IPv4: PTA model with digitial clocks -// multi-objective model of the host -// gxn/dxp 28/09/09 - -mdp - -//------------------------------------------------------------- -// VARIABLES -const int N=20; // number of abstract hosts -const int K=4; // number of probes to send - -// PROBABILITIES -const double old = N/65024; // probability pick an ip address being used -//const double old = 0.5; // 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 -const int M=1; // time between sending and receiving a message -const int T=14; - -//------------------------------------------------------------- -// CONCRETE HOST -module host0 - - x : [0..TIME_MAX_X]; // first clock of the host - y : [0..TIME_MAX_Y]; // 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 - - // 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) - // 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) - [time] l=1 & coll=MAXCOLL & x (x'=min(x+1,TIME_MAX_X)); - [] 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 - // let time pass - [time] l=2 & x<2 -> (x'=min(x+1,2)); - // send probe - [send1] l=2 & ip=1 & x=2 & probes (x'=0) & (probes'=probes+1); - [send2] l=2 & ip=2 & x=2 & probes (x'=0) & (probes'=probes+1); - // sent K probes and waited 2 seconds - [configured] l=2 & x=2 & probes=K -> (l'=3) & (probes'=0) & (coll'=0) & (x'=0); - // get message and ip does not match: ignore - [rec0] l=2 & ip!=0 -> (l'=l); - [rec1] l=2 & ip!=1 -> (l'=l); - // get a message with matching ip: reconfigure - [rec1] l=2 & ip=1 -> (l'=0) & (coll'=min(coll+1,MAXCOLL)) & (x'=0) & (probes'=0); - - // WAITSG (sends two gratuitious arp probes) - // time passage - [time] l=3 & mess=0 & defend=0 & x (x'=min(x+1,TIME_MAX_X)); - [time] l=3 & mess=0 & defend=1 & x (x'=min(x+1,TIME_MAX_X)) & (y'=min(y+1,DEFEND)); - - // receive message and same ip: defend - [rec1] l=3 & mess=0 & ip=1 & (defend=0 | y>=DEFEND) -> (defend'=1) & (mess'=1) & (y'=0); - // receive message and same ip: defer - [rec1] l=3 & mess=0 & ip=1 & (defend=0 | y (l'=0) & (probes'=0) & (defend'=0) & (x'=0) & (y'=0); - // receive message and different ip - [rec0] l=3 & mess=0 & ip!=0 -> (l'=l); - [rec1] l=3 & mess=0 & ip!=1 -> (l'=l); - - - // send probe reply or message for defence - [send1] l=3 & ip=1 & mess=1 -> (mess'=0); - [send2] l=3 & ip=2 & mess=1 -> (mess'=0); - // send first gratuitous arp message - [send1] l=3 & ip=1 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - [send2] l=3 & ip=2 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - // send second gratuitous arp message (move to use) - [send1] l=3 & ip=1 & mess=0 & x=CONSEC & probes=1 -> (l'=4) & (x'=0) & (y'=0) & (probes'=0); - [send2] l=3 & ip=2 & mess=0 & x=CONSEC & probes=1 -> (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 - -//------------------------------------------------------------- -// error automaton for the environment assumption -// do not get a reply when K probes are sent - -module env_error4 - - env : [0..1]; // 0 active and 1 done - k : [0..4]; // counts the number of messages sent - c1 : [0..M+1]; // time since first message - c2 : [0..M+1]; // time since second message - c3 : [0..M+1]; // time since third message - c4 : [0..M+1]; // time since fourth message - error : [0..1]; - - // message with new ip address arrives so done - [send2] error=0 & env=0 -> (env'=1); - // message with old ip address arrives so count - [send1] error=0 & env=0 -> (k'=min(k+1,K)); - // time passgae so update relevant clocks - [time] error=0 & env=0 & k=0 -> true; - [time] error=0 & env=0 & k=1 & min(c1,c2,c3,c4) (c1'=min(c1+1,M+1)); - [time] error=0 & env=0 & k=2 & min(c1,c2,c3,c4) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)); - [time] error=0 & env=0 & k=3 & min(c1,c2,c3,c4) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)); - [time] error=0 & env=0 & k=4 & min(c1,c2,c3,c4) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)) & (c4'=min(c4+1,M+1)); - // all clocks reached their bound so an error - [time] error=0 & env=0 & min(c1,c2,c3,c4)=M -> (error'=1); - // send a reply (then done) - [rec1] error=0 & env=0 & k>0 & min(c1,c2,c3,c4)<=M -> (env'=1); - // finished so any action can be performed - [time] error=1 | env=1 -> true; - [send1] error=1 | env=1 -> true; - [send2] error=1 | env=1 -> true; - [send2] error=1 | env=1 -> true; - [rec1] error=1 | env=1 -> true; - -endmodule - -//------------------------------------------------------------- -// error automaton for the time bounded assumption -// host does not send configured signal within T seconds - -module time_error - - time_error : [0..1]; - done : [0..1]; - t : [0..T]; - - [time] t (t'=t+1); // time passes and bound not reached - [time] t=T-1 & done=0 & time_error=0 -> (time_error'=1); // bound reached so error - [configured] time_error=0 -> (done'=1); // configured within the time bound - - // when in error or done state can loop with either action - [configured] time_error=1 | done=1 -> true; - [time] time_error=1 | done=1 -> true; - -endmodule diff --git a/examples/multiobjective/mdp/zeroconf-tb/zeroconf-tb4_14_numerical.pctl b/examples/multiobjective/mdp/zeroconf-tb/zeroconf-tb4_14_numerical.pctl deleted file mode 100644 index 84762f3cc..000000000 --- a/examples/multiobjective/mdp/zeroconf-tb/zeroconf-tb4_14_numerical.pctl +++ /dev/null @@ -1 +0,0 @@ - multi(Pmax=? [ F time_error=1 ] , P>=0.993141[ G (error=0) ]) diff --git a/examples/multiobjective/mdp/zeroconf-tb/zeroconf-tb4_14_pareto.pctl b/examples/multiobjective/mdp/zeroconf-tb/zeroconf-tb4_14_pareto.pctl deleted file mode 100644 index db9996245..000000000 --- a/examples/multiobjective/mdp/zeroconf-tb/zeroconf-tb4_14_pareto.pctl +++ /dev/null @@ -1 +0,0 @@ - multi(Pmax=? [ F time_error=1 ] , Pmax=? [ G (error=0) ]) diff --git a/examples/multiobjective/mdp/zeroconf/origFiles/zeroconf_host_multi.pctl b/examples/multiobjective/mdp/zeroconf/origFiles/zeroconf_host_multi.pctl deleted file mode 100644 index b047c3818..000000000 --- a/examples/multiobjective/mdp/zeroconf/origFiles/zeroconf_host_multi.pctl +++ /dev/null @@ -1,13 +0,0 @@ -// Max probability of component violating assumption property (checked separately) -const double p_fail = -K=2 ? 0.19 : -K=4 ? 0.006859000000000001 : -K=6 ? 2.476099000000001E-4 : -K=8 ? 8.938717390000006E-6 : -0; - -// Assume-guarantee check via multi-objective -"num_ag": multi(Pmax=? [ F l=4 & ip=1 ] , P>=1-p_fail [ G (error=0) ]) - -// Pareto query for assume-guarantee check -"pareto": multi(Pmax=? [ F l=4 & ip=1 ] , Pmax=? [ G (error=0) ]) diff --git a/examples/multiobjective/mdp/zeroconf/origFiles/zeroconf_host_multi2.nm b/examples/multiobjective/mdp/zeroconf/origFiles/zeroconf_host_multi2.nm deleted file mode 100644 index 82ade9881..000000000 --- a/examples/multiobjective/mdp/zeroconf/origFiles/zeroconf_host_multi2.nm +++ /dev/null @@ -1,149 +0,0 @@ -// IPv4: PTA model with digitial clocks -// multi-objective model of the host -// gxn/dxp 28/09/09 - -mdp - -//------------------------------------------------------------- -// VARIABLES -const int N=20; // number of abstract hosts -const int K=2; // number of probes to send - -// PROBABILITIES -const double old = N/65024; // probability pick an ip address being used -//const double old = 1/2; // 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 - - -//------------------------------------------------------------- -// CONCRETE HOST -module host0 - - x : [0..TIME_MAX_X]; // first clock of the host - y : [0..TIME_MAX_Y]; // 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 - - // 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) - // 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) - [time] l=1 & coll=MAXCOLL & x (x'=min(x+1,TIME_MAX_X)); - [] 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 - // let time pass - [time] l=2 & x<2 -> (x'=min(x+1,2)); - // send probe - [send1] l=2 & ip=1 & x=2 & probes (x'=0) & (probes'=probes+1); - [send2] l=2 & ip=2 & x=2 & probes (x'=0) & (probes'=probes+1); - // sent K probes and waited 2 seconds - [] l=2 & x=2 & probes=K -> (l'=3) & (probes'=0) & (coll'=0) & (x'=0); - // get message and ip does not match: ignore - [rec0] l=2 & ip!=0 -> (l'=l); - [rec1] l=2 & ip!=1 -> (l'=l); - // get a message with matching ip: reconfigure - [rec1] l=2 & ip=1 -> (l'=0) & (coll'=min(coll+1,MAXCOLL)) & (x'=0) & (probes'=0); - - // WAITSG (sends two gratuitious arp probes) - // time passage - [time] l=3 & mess=0 & defend=0 & x (x'=min(x+1,TIME_MAX_X)); - [time] l=3 & mess=0 & defend=1 & x (x'=min(x+1,TIME_MAX_X)) & (y'=min(y+1,DEFEND)); - - // receive message and same ip: defend - [rec1] l=3 & mess=0 & ip=1 & (defend=0 | y>=DEFEND) -> (defend'=1) & (mess'=1) & (y'=0); - // receive message and same ip: defer - [rec1] l=3 & mess=0 & ip=1 & (defend=0 | y (l'=0) & (probes'=0) & (defend'=0) & (x'=0) & (y'=0); - // receive message and different ip - [rec0] l=3 & mess=0 & ip!=0 -> (l'=l); - [rec1] l=3 & mess=0 & ip!=1 -> (l'=l); - - - // send probe reply or message for defence - [send1] l=3 & ip=1 & mess=1 -> (mess'=0); - [send2] l=3 & ip=2 & mess=1 -> (mess'=0); - // send first gratuitous arp message - [send1] l=3 & ip=1 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - [send2] l=3 & ip=2 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - // send second gratuitous arp message (move to use) - [send1] l=3 & ip=1 & mess=0 & x=CONSEC & probes=1 -> (l'=4) & (x'=0) & (y'=0) & (probes'=0); - [send2] l=3 & ip=2 & mess=0 & x=CONSEC & probes=1 -> (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 - -//------------------------------------------------------------- -// error automaton for the environment assumption -// do not get a reply when K probes are sent -const int M; // time between sending and receiving a message - -module env_error2 - - env : [0..1]; // 0 active and 1 done - k : [0..2]; // counts the number of messages sent - c1 : [0..M+1]; // time since first message - c2 : [0..M+1]; // time since second message - error : [0..1]; - - // message with new ip address arrives so done - [send2] error=0 & env=0 -> (env'=1); - // message with old ip address arrives so count - [send1] error=0 & env=0 -> (k'=min(k+1,K)); - // time passgae so update relevant clocks - [time] error=0 & env=0 & k=0 -> true; - [time] error=0 & env=0 & k=1 & min(c1,c2) (c1'=min(c1+1,M+1)); - [time] error=0 & env=0 & k=2 & min(c1,c2) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)); - // all clocks reached their bound so an error - [time] error=0 & env=0 & min(c1,c2)=M -> (error'=1); - // send a reply (then done) - [rec1] error=0 & env=0 & k>0 & min(c1,c2)<=M -> (env'=1); - // finished so any action can be performed - [time] error=1 | env=1 -> true; - [send1] error=1 | env=1 -> true; - [send2] error=1 | env=1 -> true; - [rec1] error=1 | env=1 -> true; - -endmodule - diff --git a/examples/multiobjective/mdp/zeroconf/origFiles/zeroconf_host_multi4.nm b/examples/multiobjective/mdp/zeroconf/origFiles/zeroconf_host_multi4.nm deleted file mode 100644 index 1c3bafd53..000000000 --- a/examples/multiobjective/mdp/zeroconf/origFiles/zeroconf_host_multi4.nm +++ /dev/null @@ -1,153 +0,0 @@ -// IPv4: PTA model with digitial clocks -// multi-objective model of the host -// gxn/dxp 28/09/09 - -mdp - -//------------------------------------------------------------- -// VARIABLES -const int N=20; // number of abstract hosts -const int K=4; // number of probes to send - -// PROBABILITIES -const double old = N/65024; // probability pick an ip address being used -//const double old = 0.5; // 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 - - -//------------------------------------------------------------- -// CONCRETE HOST -module host0 - - x : [0..TIME_MAX_X]; // first clock of the host - y : [0..TIME_MAX_Y]; // 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 - - // 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) - // 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) - [time] l=1 & coll=MAXCOLL & x (x'=min(x+1,TIME_MAX_X)); - [] 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 - // let time pass - [time] l=2 & x<2 -> (x'=min(x+1,2)); - // send probe - [send1] l=2 & ip=1 & x=2 & probes (x'=0) & (probes'=probes+1); - [send2] l=2 & ip=2 & x=2 & probes (x'=0) & (probes'=probes+1); - // sent K probes and waited 2 seconds - [] l=2 & x=2 & probes=K -> (l'=3) & (probes'=0) & (coll'=0) & (x'=0); - // get message and ip does not match: ignore - [rec0] l=2 & ip!=0 -> (l'=l); - [rec1] l=2 & ip!=1 -> (l'=l); - // get a message with matching ip: reconfigure - [rec1] l=2 & ip=1 -> (l'=0) & (coll'=min(coll+1,MAXCOLL)) & (x'=0) & (probes'=0); - - // WAITSG (sends two gratuitious arp probes) - // time passage - [time] l=3 & mess=0 & defend=0 & x (x'=min(x+1,TIME_MAX_X)); - [time] l=3 & mess=0 & defend=1 & x (x'=min(x+1,TIME_MAX_X)) & (y'=min(y+1,DEFEND)); - - // receive message and same ip: defend - [rec1] l=3 & mess=0 & ip=1 & (defend=0 | y>=DEFEND) -> (defend'=1) & (mess'=1) & (y'=0); - // receive message and same ip: defer - [rec1] l=3 & mess=0 & ip=1 & (defend=0 | y (l'=0) & (probes'=0) & (defend'=0) & (x'=0) & (y'=0); - // receive message and different ip - [rec0] l=3 & mess=0 & ip!=0 -> (l'=l); - [rec1] l=3 & mess=0 & ip!=1 -> (l'=l); - - - // send probe reply or message for defence - [send1] l=3 & ip=1 & mess=1 -> (mess'=0); - [send2] l=3 & ip=2 & mess=1 -> (mess'=0); - // send first gratuitous arp message - [send1] l=3 & ip=1 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - [send2] l=3 & ip=2 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - // send second gratuitous arp message (move to use) - [send1] l=3 & ip=1 & mess=0 & x=CONSEC & probes=1 -> (l'=4) & (x'=0) & (y'=0) & (probes'=0); - [send2] l=3 & ip=2 & mess=0 & x=CONSEC & probes=1 -> (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 - -//------------------------------------------------------------- -// error automaton for the environment assumption -// do not get a reply when K probes are sent -const int M; // time between sending and receiving a message - -module env_error4 - - env : [0..1]; // 0 active and 1 done - k : [0..4]; // counts the number of messages sent - c1 : [0..M+1]; // time since first message - c2 : [0..M+1]; // time since second message - c3 : [0..M+1]; // time since third message - c4 : [0..M+1]; // time since fourth message - error : [0..1]; - - // message with new ip address arrives so done - [send2] error=0 & env=0 -> (env'=1); - // message with old ip address arrives so count - [send1] error=0 & env=0 -> (k'=min(k+1,K)); - // time passgae so update relevant clocks - [time] error=0 & env=0 & k=0 -> true; - [time] error=0 & env=0 & k=1 & min(c1,c2,c3,c4) (c1'=min(c1+1,M+1)); - [time] error=0 & env=0 & k=2 & min(c1,c2,c3,c4) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)); - [time] error=0 & env=0 & k=3 & min(c1,c2,c3,c4) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)); - [time] error=0 & env=0 & k=4 & min(c1,c2,c3,c4) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)) & (c4'=min(c4+1,M+1)); - // all clocks reached their bound so an error - [time] error=0 & env=0 & min(c1,c2,c3,c4)=M -> (error'=1); - // send a reply (then done) - [rec1] error=0 & env=0 & k>0 & min(c1,c2,c3,c4)<=M -> (env'=1); - // finished so any action can be performed - [time] error=1 | env=1 -> true; - [send1] error=1 | env=1 -> true; - [send2] error=1 | env=1 -> true; - [send2] error=1 | env=1 -> true; - [rec1] error=1 | env=1 -> true; - -endmodule diff --git a/examples/multiobjective/mdp/zeroconf/origFiles/zeroconf_host_multi6.nm b/examples/multiobjective/mdp/zeroconf/origFiles/zeroconf_host_multi6.nm deleted file mode 100644 index cde22a032..000000000 --- a/examples/multiobjective/mdp/zeroconf/origFiles/zeroconf_host_multi6.nm +++ /dev/null @@ -1,157 +0,0 @@ -// IPv4: PTA model with digitial clocks -// multi-objective model of the host -// gxn/dxp 28/09/09 - -mdp - -//------------------------------------------------------------- -// VARIABLES -const int N=20; // number of abstract hosts -const int K=6; // number of probes to send - -// PROBABILITIES -const double old = N/65024; // probability pick an ip address being used -//const double old = 0.5; // 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 - - -//------------------------------------------------------------- -// CONCRETE HOST -module host0 - - x : [0..TIME_MAX_X]; // first clock of the host - y : [0..TIME_MAX_Y]; // 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 - - // 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) - // 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) - [time] l=1 & coll=MAXCOLL & x (x'=min(x+1,TIME_MAX_X)); - [] 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 - // let time pass - [time] l=2 & x<2 -> (x'=min(x+1,2)); - // send probe - [send1] l=2 & ip=1 & x=2 & probes (x'=0) & (probes'=probes+1); - [send2] l=2 & ip=2 & x=2 & probes (x'=0) & (probes'=probes+1); - // sent K probes and waited 2 seconds - [] l=2 & x=2 & probes=K -> (l'=3) & (probes'=0) & (coll'=0) & (x'=0); - // get message and ip does not match: ignore - [rec0] l=2 & ip!=0 -> (l'=l); - [rec1] l=2 & ip!=1 -> (l'=l); - // get a message with matching ip: reconfigure - [rec1] l=2 & ip=1 -> (l'=0) & (coll'=min(coll+1,MAXCOLL)) & (x'=0) & (probes'=0); - - // WAITSG (sends two gratuitious arp probes) - // time passage - [time] l=3 & mess=0 & defend=0 & x (x'=min(x+1,TIME_MAX_X)); - [time] l=3 & mess=0 & defend=1 & x (x'=min(x+1,TIME_MAX_X)) & (y'=min(y+1,DEFEND)); - - // receive message and same ip: defend - [rec1] l=3 & mess=0 & ip=1 & (defend=0 | y>=DEFEND) -> (defend'=1) & (mess'=1) & (y'=0); - // receive message and same ip: defer - [rec1] l=3 & mess=0 & ip=1 & (defend=0 | y (l'=0) & (probes'=0) & (defend'=0) & (x'=0) & (y'=0); - // receive message and different ip - [rec0] l=3 & mess=0 & ip!=0 -> (l'=l); - [rec1] l=3 & mess=0 & ip!=1 -> (l'=l); - - - // send probe reply or message for defence - [send1] l=3 & ip=1 & mess=1 -> (mess'=0); - [send2] l=3 & ip=2 & mess=1 -> (mess'=0); - // send first gratuitous arp message - [send1] l=3 & ip=1 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - [send2] l=3 & ip=2 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - // send second gratuitous arp message (move to use) - [send1] l=3 & ip=1 & mess=0 & x=CONSEC & probes=1 -> (l'=4) & (x'=0) & (y'=0) & (probes'=0); - [send2] l=3 & ip=2 & mess=0 & x=CONSEC & probes=1 -> (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 - -//------------------------------------------------------------- -// error automaton for the environment assumption -// do not get a reply when K probes are sent -const int M; // time between sending and receiving a message - -module env_error6 - - env : [0..1]; // 0 active and 1 done - k : [0..6]; // counts the number of messages sent - c1 : [0..M+1]; // time since first message - c2 : [0..M+1]; // time since second message - c3 : [0..M+1]; // time since third message - c4 : [0..M+1]; // time since fourth message - c5 : [0..M+1]; // time since fifth message - c6 : [0..M+1]; // time since sixth message - error : [0..1]; - - // message with new ip address arrives so done - [send2] error=0 & env=0 -> (env'=1); - // message with old ip address arrives so count - [send1] error=0 & env=0 -> (k'=min(k+1,K)); - // time passgae so update relevant clocks - [time] error=0 & env=0 & k=0 -> true; - [time] error=0 & env=0 & k=1 & min(c1,c2,c3,c4,c5,c6) (c1'=min(c1+1,M+1)); - [time] error=0 & env=0 & k=2 & min(c1,c2,c3,c4,c5,c6) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)); - [time] error=0 & env=0 & k=3 & min(c1,c2,c3,c4,c5,c6) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)); - [time] error=0 & env=0 & k=4 & min(c1,c2,c3,c4,c5,c6) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)) & (c4'=min(c4+1,M+1)); - [time] error=0 & env=0 & k=5 & min(c1,c2,c3,c4,c5,c6) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)) & (c4'=min(c4+1,M+1)) & (c5'=min(c5+1,M+1)); - [time] error=0 & env=0 & k=6 & min(c1,c2,c3,c4,c5,c6) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)) & (c4'=min(c4+1,M+1)) & (c5'=min(c5+1,M+1)) & (c6'=min(c6+1,M+1)); - // all clocks reached their bound so an error - [time] error=0 & env=0 & min(c1,c2,c3,c4,c5,c6)=M -> (error'=1); - // send a reply (then done) - [rec1] error=0 & env=0 & k>0 & min(c1,c2,c3,c4,c5,c6)<=M -> (env'=1); - // finished so any action can be performed - [time] error=1 | env=1 -> true; - [send1] error=1 | env=1 -> true; - [send2] error=1 | env=1 -> true; - [rec1] error=1 | env=1 -> true; - -endmodule - diff --git a/examples/multiobjective/mdp/zeroconf/origFiles/zeroconf_host_multi8.nm b/examples/multiobjective/mdp/zeroconf/origFiles/zeroconf_host_multi8.nm deleted file mode 100644 index e843a8c12..000000000 --- a/examples/multiobjective/mdp/zeroconf/origFiles/zeroconf_host_multi8.nm +++ /dev/null @@ -1,161 +0,0 @@ -// IPv4: PTA model with digitial clocks -// multi-objective model of the host -// gxn/dxp 28/09/09 - -mdp - -//------------------------------------------------------------- -// VARIABLES -const int N=20; // number of abstract hosts -const int K=8; // number of probes to send - -// PROBABILITIES -const double old = N/65024; // probability pick an ip address being used -//const double old = 0.5; // 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 - - -//------------------------------------------------------------- -// CONCRETE HOST -module host0 - - x : [0..TIME_MAX_X]; // first clock of the host - y : [0..TIME_MAX_Y]; // 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 - - // 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) - // 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) - [time] l=1 & coll=MAXCOLL & x (x'=min(x+1,TIME_MAX_X)); - [] 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 - // let time pass - [time] l=2 & x<2 -> (x'=min(x+1,2)); - // send probe - [send1] l=2 & ip=1 & x=2 & probes (x'=0) & (probes'=probes+1); - [send2] l=2 & ip=2 & x=2 & probes (x'=0) & (probes'=probes+1); - // sent K probes and waited 2 seconds - [] l=2 & x=2 & probes=K -> (l'=3) & (probes'=0) & (coll'=0) & (x'=0); - // get message and ip does not match: ignore - [rec0] l=2 & ip!=0 -> (l'=l); - [rec1] l=2 & ip!=1 -> (l'=l); - // get a message with matching ip: reconfigure - [rec1] l=2 & ip=1 -> (l'=0) & (coll'=min(coll+1,MAXCOLL)) & (x'=0) & (probes'=0); - - // WAITSG (sends two gratuitious arp probes) - // time passage - [time] l=3 & mess=0 & defend=0 & x (x'=min(x+1,TIME_MAX_X)); - [time] l=3 & mess=0 & defend=1 & x (x'=min(x+1,TIME_MAX_X)) & (y'=min(y+1,DEFEND)); - - // receive message and same ip: defend - [rec1] l=3 & mess=0 & ip=1 & (defend=0 | y>=DEFEND) -> (defend'=1) & (mess'=1) & (y'=0); - // receive message and same ip: defer - [rec1] l=3 & mess=0 & ip=1 & (defend=0 | y (l'=0) & (probes'=0) & (defend'=0) & (x'=0) & (y'=0); - // receive message and different ip - [rec0] l=3 & mess=0 & ip!=0 -> (l'=l); - [rec1] l=3 & mess=0 & ip!=1 -> (l'=l); - - - // send probe reply or message for defence - [send1] l=3 & ip=1 & mess=1 -> (mess'=0); - [send2] l=3 & ip=2 & mess=1 -> (mess'=0); - // send first gratuitous arp message - [send1] l=3 & ip=1 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - [send2] l=3 & ip=2 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - // send second gratuitous arp message (move to use) - [send1] l=3 & ip=1 & mess=0 & x=CONSEC & probes=1 -> (l'=4) & (x'=0) & (y'=0) & (probes'=0); - [send2] l=3 & ip=2 & mess=0 & x=CONSEC & probes=1 -> (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 - -//------------------------------------------------------------- -// error automaton for the environment assumption -// do not get a reply when K probes are sent -const int M; // time between sending and receiving a message - -module env_error8 - - env : [0..1]; // 0 active and 1 done - k : [0..8]; // counts the number of messages sent - c1 : [0..M+1]; // time since first message - c2 : [0..M+1]; // time since second message - c3 : [0..M+1]; // time since third message - c4 : [0..M+1]; // time since fourth message - c5 : [0..M+1]; // time since fifth message - c6 : [0..M+1]; // time since sixth message - c7 : [0..M+1]; // time since seventh message - c8 : [0..M+1]; // time since eighth message - error : [0..1]; - - // message with new ip address arrives so done - [send2] error=0 & env=0 -> (env'=1); - // message with old ip address arrives so count - [send1] error=0 & env=0 -> (k'=min(k+1,K)); - // time passgae so update relevant clocks - [time] error=0 & env=0 & k=0 -> true; - [time] error=0 & env=0 & k=1 & min(c1,c2,c3,c4,c5,c6,c7,c8) (c1'=min(c1+1,M+1)); - [time] error=0 & env=0 & k=2 & min(c1,c2,c3,c4,c5,c6,c7,c8) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)); - [time] error=0 & env=0 & k=3 & min(c1,c2,c3,c4,c5,c6,c7,c8) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)); - [time] error=0 & env=0 & k=4 & min(c1,c2,c3,c4,c5,c6,c7,c8) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)) & (c4'=min(c4+1,M+1)); - [time] error=0 & env=0 & k=5 & min(c1,c2,c3,c4,c5,c6,c7,c8) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)) & (c4'=min(c4+1,M+1)) & (c5'=min(c5+1,M+1)); - [time] error=0 & env=0 & k=6 & min(c1,c2,c3,c4,c5,c6,c7,c8) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)) & (c4'=min(c4+1,M+1)) & (c5'=min(c5+1,M+1)) & (c6'=min(c6+1,M+1)); - [time] error=0 & env=0 & k=7 & min(c1,c2,c3,c4,c5,c6,c7,c8) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)) & (c4'=min(c4+1,M+1)) & (c5'=min(c5+1,M+1)) & (c6'=min(c6+1,M+1)) & (c7'=min(c7+1,M+1)); - [time] error=0 & env=0 & k=8 & min(c1,c2,c3,c4,c5,c6,c7,c8) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)) & (c4'=min(c4+1,M+1)) & (c5'=min(c5+1,M+1)) & (c6'=min(c6+1,M+1)) & (c7'=min(c7+1,M+1)) & (c8'=min(c8+1,M+1)); - // all clocks reached their bound so an error - [time] error=0 & env=0 & min(c1,c2,c3,c4,c5,c6,c7,c8)=M -> (error'=1); - // send a reply (then done) - [rec1] error=0 & env=0 & k>0 & min(c1,c2,c3,c4,c5,c6,c7,c8)<=M -> (env'=1); - // finished so any action can be performed - [time] error=1 | env=1 -> true; - [send1] error=1 | env=1 -> true; - [send2] error=1 | env=1 -> true; - [rec1] error=1 | env=1 -> true; - -endmodule - diff --git a/examples/multiobjective/mdp/zeroconf/zeroconf4.nm b/examples/multiobjective/mdp/zeroconf/zeroconf4.nm deleted file mode 100644 index 3d5988df2..000000000 --- a/examples/multiobjective/mdp/zeroconf/zeroconf4.nm +++ /dev/null @@ -1,153 +0,0 @@ -// IPv4: PTA model with digitial clocks -// multi-objective model of the host -// gxn/dxp 28/09/09 - -mdp - -//------------------------------------------------------------- -// VARIABLES -const int N=20; // number of abstract hosts -const int K=4; // number of probes to send - -// PROBABILITIES -const double old = N/65024; // probability pick an ip address being used -//const double old = 0.5; // 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 -const int M=1; // time between sending and receiving a message - - -//------------------------------------------------------------- -// CONCRETE HOST -module host0 - - x : [0..TIME_MAX_X]; // first clock of the host - y : [0..TIME_MAX_Y]; // 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 - - // 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) - // 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) - [time] l=1 & coll=MAXCOLL & x (x'=min(x+1,TIME_MAX_X)); - [] 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 - // let time pass - [time] l=2 & x<2 -> (x'=min(x+1,2)); - // send probe - [send1] l=2 & ip=1 & x=2 & probes (x'=0) & (probes'=probes+1); - [send2] l=2 & ip=2 & x=2 & probes (x'=0) & (probes'=probes+1); - // sent K probes and waited 2 seconds - [] l=2 & x=2 & probes=K -> (l'=3) & (probes'=0) & (coll'=0) & (x'=0); - // get message and ip does not match: ignore - [rec0] l=2 & ip!=0 -> (l'=l); - [rec1] l=2 & ip!=1 -> (l'=l); - // get a message with matching ip: reconfigure - [rec1] l=2 & ip=1 -> (l'=0) & (coll'=min(coll+1,MAXCOLL)) & (x'=0) & (probes'=0); - - // WAITSG (sends two gratuitious arp probes) - // time passage - [time] l=3 & mess=0 & defend=0 & x (x'=min(x+1,TIME_MAX_X)); - [time] l=3 & mess=0 & defend=1 & x (x'=min(x+1,TIME_MAX_X)) & (y'=min(y+1,DEFEND)); - - // receive message and same ip: defend - [rec1] l=3 & mess=0 & ip=1 & (defend=0 | y>=DEFEND) -> (defend'=1) & (mess'=1) & (y'=0); - // receive message and same ip: defer - [rec1] l=3 & mess=0 & ip=1 & (defend=0 | y (l'=0) & (probes'=0) & (defend'=0) & (x'=0) & (y'=0); - // receive message and different ip - [rec0] l=3 & mess=0 & ip!=0 -> (l'=l); - [rec1] l=3 & mess=0 & ip!=1 -> (l'=l); - - - // send probe reply or message for defence - [send1] l=3 & ip=1 & mess=1 -> (mess'=0); - [send2] l=3 & ip=2 & mess=1 -> (mess'=0); - // send first gratuitous arp message - [send1] l=3 & ip=1 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - [send2] l=3 & ip=2 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - // send second gratuitous arp message (move to use) - [send1] l=3 & ip=1 & mess=0 & x=CONSEC & probes=1 -> (l'=4) & (x'=0) & (y'=0) & (probes'=0); - [send2] l=3 & ip=2 & mess=0 & x=CONSEC & probes=1 -> (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 - -//------------------------------------------------------------- -// error automaton for the environment assumption -// do not get a reply when K probes are sent - -module env_error4 - - env : [0..1]; // 0 active and 1 done - k : [0..4]; // counts the number of messages sent - c1 : [0..M+1]; // time since first message - c2 : [0..M+1]; // time since second message - c3 : [0..M+1]; // time since third message - c4 : [0..M+1]; // time since fourth message - error : [0..1]; - - // message with new ip address arrives so done - [send2] error=0 & env=0 -> (env'=1); - // message with old ip address arrives so count - [send1] error=0 & env=0 -> (k'=min(k+1,K)); - // time passgae so update relevant clocks - [time] error=0 & env=0 & k=0 -> true; - [time] error=0 & env=0 & k=1 & min(c1,c2,c3,c4) (c1'=min(c1+1,M+1)); - [time] error=0 & env=0 & k=2 & min(c1,c2,c3,c4) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)); - [time] error=0 & env=0 & k=3 & min(c1,c2,c3,c4) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)); - [time] error=0 & env=0 & k=4 & min(c1,c2,c3,c4) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)) & (c4'=min(c4+1,M+1)); - // all clocks reached their bound so an error - [time] error=0 & env=0 & min(c1,c2,c3,c4)=M -> (error'=1); - // send a reply (then done) - [rec1] error=0 & env=0 & k>0 & min(c1,c2,c3,c4)<=M -> (env'=1); - // finished so any action can be performed - [time] error=1 | env=1 -> true; - [send1] error=1 | env=1 -> true; - [send2] error=1 | env=1 -> true; - [send2] error=1 | env=1 -> true; - [rec1] error=1 | env=1 -> true; - -endmodule diff --git a/examples/multiobjective/mdp/zeroconf/zeroconf4_numerical.pctl b/examples/multiobjective/mdp/zeroconf/zeroconf4_numerical.pctl deleted file mode 100644 index 646a77159..000000000 --- a/examples/multiobjective/mdp/zeroconf/zeroconf4_numerical.pctl +++ /dev/null @@ -1 +0,0 @@ - multi(Pmax=? [ F l=4 & ip=1 ] , P>=0.993141[ G (error=0) ]) diff --git a/examples/multiobjective/mdp/zeroconf/zeroconf4_pareto.pctl b/examples/multiobjective/mdp/zeroconf/zeroconf4_pareto.pctl deleted file mode 100644 index 694c19e14..000000000 --- a/examples/multiobjective/mdp/zeroconf/zeroconf4_pareto.pctl +++ /dev/null @@ -1 +0,0 @@ - multi(Pmax=? [ F l=4 & ip=1 ] , Pmax=? [ G (error=0) ]) diff --git a/examples/multiobjective/mdp/zeroconf/zeroconf6.nm b/examples/multiobjective/mdp/zeroconf/zeroconf6.nm deleted file mode 100644 index 99ce361a5..000000000 --- a/examples/multiobjective/mdp/zeroconf/zeroconf6.nm +++ /dev/null @@ -1,157 +0,0 @@ -// IPv4: PTA model with digitial clocks -// multi-objective model of the host -// gxn/dxp 28/09/09 - -mdp - -//------------------------------------------------------------- -// VARIABLES -const int N=20; // number of abstract hosts -const int K=6; // number of probes to send - -// PROBABILITIES -const double old = N/65024; // probability pick an ip address being used -//const double old = 0.5; // 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 -const int M=1; // time between sending and receiving a message - - -//------------------------------------------------------------- -// CONCRETE HOST -module host0 - - x : [0..TIME_MAX_X]; // first clock of the host - y : [0..TIME_MAX_Y]; // 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 - - // 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) - // 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) - [time] l=1 & coll=MAXCOLL & x (x'=min(x+1,TIME_MAX_X)); - [] 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 - // let time pass - [time] l=2 & x<2 -> (x'=min(x+1,2)); - // send probe - [send1] l=2 & ip=1 & x=2 & probes (x'=0) & (probes'=probes+1); - [send2] l=2 & ip=2 & x=2 & probes (x'=0) & (probes'=probes+1); - // sent K probes and waited 2 seconds - [] l=2 & x=2 & probes=K -> (l'=3) & (probes'=0) & (coll'=0) & (x'=0); - // get message and ip does not match: ignore - [rec0] l=2 & ip!=0 -> (l'=l); - [rec1] l=2 & ip!=1 -> (l'=l); - // get a message with matching ip: reconfigure - [rec1] l=2 & ip=1 -> (l'=0) & (coll'=min(coll+1,MAXCOLL)) & (x'=0) & (probes'=0); - - // WAITSG (sends two gratuitious arp probes) - // time passage - [time] l=3 & mess=0 & defend=0 & x (x'=min(x+1,TIME_MAX_X)); - [time] l=3 & mess=0 & defend=1 & x (x'=min(x+1,TIME_MAX_X)) & (y'=min(y+1,DEFEND)); - - // receive message and same ip: defend - [rec1] l=3 & mess=0 & ip=1 & (defend=0 | y>=DEFEND) -> (defend'=1) & (mess'=1) & (y'=0); - // receive message and same ip: defer - [rec1] l=3 & mess=0 & ip=1 & (defend=0 | y (l'=0) & (probes'=0) & (defend'=0) & (x'=0) & (y'=0); - // receive message and different ip - [rec0] l=3 & mess=0 & ip!=0 -> (l'=l); - [rec1] l=3 & mess=0 & ip!=1 -> (l'=l); - - - // send probe reply or message for defence - [send1] l=3 & ip=1 & mess=1 -> (mess'=0); - [send2] l=3 & ip=2 & mess=1 -> (mess'=0); - // send first gratuitous arp message - [send1] l=3 & ip=1 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - [send2] l=3 & ip=2 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - // send second gratuitous arp message (move to use) - [send1] l=3 & ip=1 & mess=0 & x=CONSEC & probes=1 -> (l'=4) & (x'=0) & (y'=0) & (probes'=0); - [send2] l=3 & ip=2 & mess=0 & x=CONSEC & probes=1 -> (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 - -//------------------------------------------------------------- -// error automaton for the environment assumption -// do not get a reply when K probes are sent - -module env_error6 - - env : [0..1]; // 0 active and 1 done - k : [0..6]; // counts the number of messages sent - c1 : [0..M+1]; // time since first message - c2 : [0..M+1]; // time since second message - c3 : [0..M+1]; // time since third message - c4 : [0..M+1]; // time since fourth message - c5 : [0..M+1]; // time since fifth message - c6 : [0..M+1]; // time since sixth message - error : [0..1]; - - // message with new ip address arrives so done - [send2] error=0 & env=0 -> (env'=1); - // message with old ip address arrives so count - [send1] error=0 & env=0 -> (k'=min(k+1,K)); - // time passgae so update relevant clocks - [time] error=0 & env=0 & k=0 -> true; - [time] error=0 & env=0 & k=1 & min(c1,c2,c3,c4,c5,c6) (c1'=min(c1+1,M+1)); - [time] error=0 & env=0 & k=2 & min(c1,c2,c3,c4,c5,c6) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)); - [time] error=0 & env=0 & k=3 & min(c1,c2,c3,c4,c5,c6) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)); - [time] error=0 & env=0 & k=4 & min(c1,c2,c3,c4,c5,c6) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)) & (c4'=min(c4+1,M+1)); - [time] error=0 & env=0 & k=5 & min(c1,c2,c3,c4,c5,c6) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)) & (c4'=min(c4+1,M+1)) & (c5'=min(c5+1,M+1)); - [time] error=0 & env=0 & k=6 & min(c1,c2,c3,c4,c5,c6) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)) & (c4'=min(c4+1,M+1)) & (c5'=min(c5+1,M+1)) & (c6'=min(c6+1,M+1)); - // all clocks reached their bound so an error - [time] error=0 & env=0 & min(c1,c2,c3,c4,c5,c6)=M -> (error'=1); - // send a reply (then done) - [rec1] error=0 & env=0 & k>0 & min(c1,c2,c3,c4,c5,c6)<=M -> (env'=1); - // finished so any action can be performed - [time] error=1 | env=1 -> true; - [send1] error=1 | env=1 -> true; - [send2] error=1 | env=1 -> true; - [rec1] error=1 | env=1 -> true; - -endmodule - diff --git a/examples/multiobjective/mdp/zeroconf/zeroconf6_numerical.pctl b/examples/multiobjective/mdp/zeroconf/zeroconf6_numerical.pctl deleted file mode 100644 index 016da75a6..000000000 --- a/examples/multiobjective/mdp/zeroconf/zeroconf6_numerical.pctl +++ /dev/null @@ -1 +0,0 @@ - multi(Pmax=? [ F l=4 & ip=1 ] , P>=0.9997523901[ G (error=0) ]) diff --git a/examples/multiobjective/mdp/zeroconf/zeroconf6_pareto.pctl b/examples/multiobjective/mdp/zeroconf/zeroconf6_pareto.pctl deleted file mode 100644 index 694c19e14..000000000 --- a/examples/multiobjective/mdp/zeroconf/zeroconf6_pareto.pctl +++ /dev/null @@ -1 +0,0 @@ - multi(Pmax=? [ F l=4 & ip=1 ] , Pmax=? [ G (error=0) ]) diff --git a/examples/multiobjective/mdp/zeroconf/zeroconf8.nm b/examples/multiobjective/mdp/zeroconf/zeroconf8.nm deleted file mode 100644 index 871e06e2b..000000000 --- a/examples/multiobjective/mdp/zeroconf/zeroconf8.nm +++ /dev/null @@ -1,161 +0,0 @@ -// IPv4: PTA model with digitial clocks -// multi-objective model of the host -// gxn/dxp 28/09/09 - -mdp - -//------------------------------------------------------------- -// VARIABLES -const int N=20; // number of abstract hosts -const int K=8; // number of probes to send - -// PROBABILITIES -const double old = N/65024; // probability pick an ip address being used -//const double old = 0.5; // 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 -const int M=1; // time between sending and receiving a message - - -//------------------------------------------------------------- -// CONCRETE HOST -module host0 - - x : [0..TIME_MAX_X]; // first clock of the host - y : [0..TIME_MAX_Y]; // 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 - - // 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) - // 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) - [time] l=1 & coll=MAXCOLL & x (x'=min(x+1,TIME_MAX_X)); - [] 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 - // let time pass - [time] l=2 & x<2 -> (x'=min(x+1,2)); - // send probe - [send1] l=2 & ip=1 & x=2 & probes (x'=0) & (probes'=probes+1); - [send2] l=2 & ip=2 & x=2 & probes (x'=0) & (probes'=probes+1); - // sent K probes and waited 2 seconds - [] l=2 & x=2 & probes=K -> (l'=3) & (probes'=0) & (coll'=0) & (x'=0); - // get message and ip does not match: ignore - [rec0] l=2 & ip!=0 -> (l'=l); - [rec1] l=2 & ip!=1 -> (l'=l); - // get a message with matching ip: reconfigure - [rec1] l=2 & ip=1 -> (l'=0) & (coll'=min(coll+1,MAXCOLL)) & (x'=0) & (probes'=0); - - // WAITSG (sends two gratuitious arp probes) - // time passage - [time] l=3 & mess=0 & defend=0 & x (x'=min(x+1,TIME_MAX_X)); - [time] l=3 & mess=0 & defend=1 & x (x'=min(x+1,TIME_MAX_X)) & (y'=min(y+1,DEFEND)); - - // receive message and same ip: defend - [rec1] l=3 & mess=0 & ip=1 & (defend=0 | y>=DEFEND) -> (defend'=1) & (mess'=1) & (y'=0); - // receive message and same ip: defer - [rec1] l=3 & mess=0 & ip=1 & (defend=0 | y (l'=0) & (probes'=0) & (defend'=0) & (x'=0) & (y'=0); - // receive message and different ip - [rec0] l=3 & mess=0 & ip!=0 -> (l'=l); - [rec1] l=3 & mess=0 & ip!=1 -> (l'=l); - - - // send probe reply or message for defence - [send1] l=3 & ip=1 & mess=1 -> (mess'=0); - [send2] l=3 & ip=2 & mess=1 -> (mess'=0); - // send first gratuitous arp message - [send1] l=3 & ip=1 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - [send2] l=3 & ip=2 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - // send second gratuitous arp message (move to use) - [send1] l=3 & ip=1 & mess=0 & x=CONSEC & probes=1 -> (l'=4) & (x'=0) & (y'=0) & (probes'=0); - [send2] l=3 & ip=2 & mess=0 & x=CONSEC & probes=1 -> (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 - -//------------------------------------------------------------- -// error automaton for the environment assumption -// do not get a reply when K probes are sent - -module env_error8 - - env : [0..1]; // 0 active and 1 done - k : [0..8]; // counts the number of messages sent - c1 : [0..M+1]; // time since first message - c2 : [0..M+1]; // time since second message - c3 : [0..M+1]; // time since third message - c4 : [0..M+1]; // time since fourth message - c5 : [0..M+1]; // time since fifth message - c6 : [0..M+1]; // time since sixth message - c7 : [0..M+1]; // time since seventh message - c8 : [0..M+1]; // time since eighth message - error : [0..1]; - - // message with new ip address arrives so done - [send2] error=0 & env=0 -> (env'=1); - // message with old ip address arrives so count - [send1] error=0 & env=0 -> (k'=min(k+1,K)); - // time passgae so update relevant clocks - [time] error=0 & env=0 & k=0 -> true; - [time] error=0 & env=0 & k=1 & min(c1,c2,c3,c4,c5,c6,c7,c8) (c1'=min(c1+1,M+1)); - [time] error=0 & env=0 & k=2 & min(c1,c2,c3,c4,c5,c6,c7,c8) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)); - [time] error=0 & env=0 & k=3 & min(c1,c2,c3,c4,c5,c6,c7,c8) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)); - [time] error=0 & env=0 & k=4 & min(c1,c2,c3,c4,c5,c6,c7,c8) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)) & (c4'=min(c4+1,M+1)); - [time] error=0 & env=0 & k=5 & min(c1,c2,c3,c4,c5,c6,c7,c8) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)) & (c4'=min(c4+1,M+1)) & (c5'=min(c5+1,M+1)); - [time] error=0 & env=0 & k=6 & min(c1,c2,c3,c4,c5,c6,c7,c8) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)) & (c4'=min(c4+1,M+1)) & (c5'=min(c5+1,M+1)) & (c6'=min(c6+1,M+1)); - [time] error=0 & env=0 & k=7 & min(c1,c2,c3,c4,c5,c6,c7,c8) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)) & (c4'=min(c4+1,M+1)) & (c5'=min(c5+1,M+1)) & (c6'=min(c6+1,M+1)) & (c7'=min(c7+1,M+1)); - [time] error=0 & env=0 & k=8 & min(c1,c2,c3,c4,c5,c6,c7,c8) (c1'=min(c1+1,M+1)) & (c2'=min(c2+1,M+1)) & (c3'=min(c3+1,M+1)) & (c4'=min(c4+1,M+1)) & (c5'=min(c5+1,M+1)) & (c6'=min(c6+1,M+1)) & (c7'=min(c7+1,M+1)) & (c8'=min(c8+1,M+1)); - // all clocks reached their bound so an error - [time] error=0 & env=0 & min(c1,c2,c3,c4,c5,c6,c7,c8)=M -> (error'=1); - // send a reply (then done) - [rec1] error=0 & env=0 & k>0 & min(c1,c2,c3,c4,c5,c6,c7,c8)<=M -> (env'=1); - // finished so any action can be performed - [time] error=1 | env=1 -> true; - [send1] error=1 | env=1 -> true; - [send2] error=1 | env=1 -> true; - [rec1] error=1 | env=1 -> true; - -endmodule - diff --git a/examples/multiobjective/mdp/zeroconf/zeroconf8_numerical.pctl b/examples/multiobjective/mdp/zeroconf/zeroconf8_numerical.pctl deleted file mode 100644 index 61b79cd13..000000000 --- a/examples/multiobjective/mdp/zeroconf/zeroconf8_numerical.pctl +++ /dev/null @@ -1 +0,0 @@ - multi(Pmax=? [ F l=4 & ip=1 ] , P>=0.9999910613[ G (error=0) ]) diff --git a/examples/multiobjective/mdp/zeroconf/zeroconf8_pareto.pctl b/examples/multiobjective/mdp/zeroconf/zeroconf8_pareto.pctl deleted file mode 100644 index 694c19e14..000000000 --- a/examples/multiobjective/mdp/zeroconf/zeroconf8_pareto.pctl +++ /dev/null @@ -1 +0,0 @@ - multi(Pmax=? [ F l=4 & ip=1 ] , Pmax=? [ G (error=0) ]) diff --git a/examples/pctmc/polling6.sm b/examples/pctmc/polling6.sm deleted file mode 100644 index 686907565..000000000 --- a/examples/pctmc/polling6.sm +++ /dev/null @@ -1,87 +0,0 @@ -// polling example [IT90] -// gxn/dxp 26/01/00 - -ctmc - -const int N=6; - -const double mu; -const double gamma; - -//const double mu= 1; -//const double gamma= 200; -//const double lambda= mu/N; - -module server - - s : [1..6]; // station - a : [0..1]; // action: 0=polling, 1=serving - - [loop1a] (s=1)&(a=0) -> gamma : (s'=s+1); - [loop1b] (s=1)&(a=0) -> gamma : (a'=1); - [serve1] (s=1)&(a=1) -> mu : (s'=s+1)&(a'=0); - - [loop2a] (s=2)&(a=0) -> gamma : (s'=s+1); - [loop2b] (s=2)&(a=0) -> gamma : (a'=1); - [serve2] (s=2)&(a=1) -> mu : (s'=s+1)&(a'=0); - - [loop3a] (s=3)&(a=0) -> gamma : (s'=s+1); - [loop3b] (s=3)&(a=0) -> gamma : (a'=1); - [serve3] (s=3)&(a=1) -> mu : (s'=s+1)&(a'=0); - - [loop4a] (s=4)&(a=0) -> gamma : (s'=s+1); - [loop4b] (s=4)&(a=0) -> gamma : (a'=1); - [serve4] (s=4)&(a=1) -> mu : (s'=s+1)&(a'=0); - - [loop5a] (s=5)&(a=0) -> gamma : (s'=s+1); - [loop5b] (s=5)&(a=0) -> gamma : (a'=1); - [serve5] (s=5)&(a=1) -> mu : (s'=s+1)&(a'=0); - - [loop6a] (s=6)&(a=0) -> gamma : (s'=1); - [loop6b] (s=6)&(a=0) -> gamma : (a'=1); - [serve6] (s=6)&(a=1) -> mu : (s'=1)&(a'=0); - -endmodule - -module station1 - - s1 : [0..1]; - - [loop1a] (s1=0) -> 1 : (s1'=0); - [] (s1=0) -> mu/N : (s1'=1); - [loop1b] (s1=1) -> 1 : (s1'=1); - [serve1] (s1=1) -> 1 : (s1'=0); - -endmodule - -// construct further stations through renaming -module station2 = station1 [s1=s2, loop1a=loop2a, loop1b=loop2b, serve1=serve2] endmodule -module station3 = station1 [s1=s3, loop1a=loop3a, loop1b=loop3b, serve1=serve3] endmodule -module station4 = station1 [s1=s4, loop1a=loop4a, loop1b=loop4b, serve1=serve4] endmodule -module station5 = station1 [s1=s5, loop1a=loop5a, loop1b=loop5b, serve1=serve5] endmodule -module station6 = station1 [s1=s6, loop1a=loop6a, loop1b=loop6b, serve1=serve6] endmodule - -// cumulative rewards - -rewards "waiting" // expected time the station 1 is waiting to be served - s1=1 & !(s=1 & a=1) : 1; -endrewards - -rewards "served" // expected number of times station1 is served - [serve1] true : 1; -endrewards - -label "server1serving" = s=1 & a=1; -label "server5polling" = s=5 & a=0; -label "server5serving" = s=5 & a=1; - -init -s = 1 & -a = 0 & -s1 = 0 & -s2 = 0 & -s3 = 0 & -s4 = 0 & -s5 = 0 & -s6 = 0 -endinit diff --git a/examples/pdtmc/brp/brp.pm b/examples/pdtmc/brp/brp.pm deleted file mode 100644 index 031bfe978..000000000 --- a/examples/pdtmc/brp/brp.pm +++ /dev/null @@ -1,138 +0,0 @@ -// bounded retransmission protocol [D'AJJL01] -// gxn/dxp 23/05/2001 - -dtmc - -// number of chunks -const int N; -// maximum number of retransmissions -const int MAX; - -// reliability of channels -const double pL; -const double pK; - -module sender - - 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; - - // 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); - // wait_ack - [aB] (s=2) -> (s'=4) & (s_ab'=!s_ab); - [TO_Msg] (s=2) -> (s'=3); - [TO_Ack] (s=2) -> (s'=3); - // retransmit - [aF] (s=3) & (nrtr (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1); - [] (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 - -// prevents more than one file being sent -module tester - - T : bool; - - [NewFile] (T=false) -> (T'=true); - -endmodule - -module channelK - - k : [0..2]; - - // idle - [aF] (k=0) -> pK : (k'=1) + 1-pK : (k'=2); - // sending - [aG] (k=1) -> (k'=0); - // lost - [TO_Msg] (k=2) -> (k'=0); - -endmodule - -module channelL - - l : [0..2]; - - // idle - [aA] (l=0) -> pL : (l'=1) + 1-pL : (l'=2); - // sending - [aB] (l=1) -> (l'=0); - // lost - [TO_Ack] (l=2) -> (l'=0); - -endmodule - -label "fatal" = s=5 & T; -label "false_neg" = srep=1 & rrep=3 & recv; diff --git a/examples/pdtmc/brp/brp.prctl b/examples/pdtmc/brp/brp.prctl deleted file mode 100644 index 01e593fb3..000000000 --- a/examples/pdtmc/brp/brp.prctl +++ /dev/null @@ -1,2 +0,0 @@ -P<0.5 [ F s=5 ] - diff --git a/examples/pdtmc/brp/brp16_2.pm b/examples/pdtmc/brp/brp16_2.pm deleted file mode 100644 index 0fc99d05e..000000000 --- a/examples/pdtmc/brp/brp16_2.pm +++ /dev/null @@ -1,137 +0,0 @@ -// bounded retransmission protocol [D'AJJL01] -// gxn/dxp 23/05/2001 - -dtmc - -// number of chunks -const int N = 16; -// maximum number of retransmissions -const int MAX = 2; - -// reliability of channels -const double pL; -const double pK; - -module sender - - 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; - - // 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); - // wait_ack - [aB] (s=2) -> (s'=4) & (s_ab'=!s_ab); - [TO_Msg] (s=2) -> (s'=3); - [TO_Ack] (s=2) -> (s'=3); - // retransmit - [aF] (s=3) & (nrtr (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1); - [] (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 - -// prevents more than one file being sent -module tester - - T : bool; - - [NewFile] (T=false) -> (T'=true); - -endmodule - -module channelK - - k : [0..2]; - - // idle - [aF] (k=0) -> pK : (k'=1) + 1-pK : (k'=2); - // sending - [aG] (k=1) -> (k'=0); - // lost - [TO_Msg] (k=2) -> (k'=0); - -endmodule - -module channelL - - l : [0..2]; - - // idle - [aA] (l=0) -> pL : (l'=1) + 1-pL : (l'=2); - // sending - [aB] (l=1) -> (l'=0); - // lost - [TO_Ack] (l=2) -> (l'=0); - -endmodule - -label "error" = s=5; diff --git a/examples/pdtmc/brp/brp256_5.pm b/examples/pdtmc/brp/brp256_5.pm deleted file mode 100644 index d0c03e52c..000000000 --- a/examples/pdtmc/brp/brp256_5.pm +++ /dev/null @@ -1,135 +0,0 @@ -// bounded retransmission protocol [D'AJJL01] -// gxn/dxp 23/05/2001 - -dtmc - -// number of chunks -const int N = 256; -// maximum number of retransmissions -const int MAX = 5; - -// reliability of channels -const double pL; -const double pK; - -module sender - - 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; - - // 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); - // wait_ack - [aB] (s=2) -> (s'=4) & (s_ab'=!s_ab); - [TO_Msg] (s=2) -> (s'=3); - [TO_Ack] (s=2) -> (s'=3); - // retransmit - [aF] (s=3) & (nrtr (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1); - [] (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 - -// prevents more than one file being sent -module tester - - T : bool; - - [NewFile] (T=false) -> (T'=true); - -endmodule - -module channelK - - k : [0..2]; - - // idle - [aF] (k=0) -> pK : (k'=1) + 1-pK : (k'=2); - // sending - [aG] (k=1) -> (k'=0); - // lost - [TO_Msg] (k=2) -> (k'=0); - -endmodule - -module channelL - - l : [0..2]; - - // idle - [aA] (l=0) -> pL : (l'=1) + 1-pL : (l'=2); - // sending - [aB] (l=1) -> (l'=0); - // lost - [TO_Ack] (l=2) -> (l'=0); - -endmodule diff --git a/examples/pdtmc/brp/brp512_5.pm b/examples/pdtmc/brp/brp512_5.pm deleted file mode 100644 index e70b2a0d4..000000000 --- a/examples/pdtmc/brp/brp512_5.pm +++ /dev/null @@ -1,135 +0,0 @@ -// bounded retransmission protocol [D'AJJL01] -// gxn/dxp 23/05/2001 - -dtmc - -// number of chunks -const int N = 512; -// maximum number of retransmissions -const int MAX = 5; - -// reliability of channels -const double pL; -const double pK; - -module sender - - 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; - - // 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); - // wait_ack - [aB] (s=2) -> (s'=4) & (s_ab'=!s_ab); - [TO_Msg] (s=2) -> (s'=3); - [TO_Ack] (s=2) -> (s'=3); - // retransmit - [aF] (s=3) & (nrtr (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1); - [] (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 - -// prevents more than one file being sent -module tester - - T : bool; - - [NewFile] (T=false) -> (T'=true); - -endmodule - -module channelK - - k : [0..2]; - - // idle - [aF] (k=0) -> pK : (k'=1) + 1-pK : (k'=2); - // sending - [aG] (k=1) -> (k'=0); - // lost - [TO_Msg] (k=2) -> (k'=0); - -endmodule - -module channelL - - l : [0..2]; - - // idle - [aA] (l=0) -> pL : (l'=1) + 1-pL : (l'=2); - // sending - [aB] (l=1) -> (l'=0); - // lost - [TO_Ack] (l=2) -> (l'=0); - -endmodule diff --git a/examples/pdtmc/brp/brp64_4.pm b/examples/pdtmc/brp/brp64_4.pm deleted file mode 100644 index 6b3819cb2..000000000 --- a/examples/pdtmc/brp/brp64_4.pm +++ /dev/null @@ -1,135 +0,0 @@ -// bounded retransmission protocol [D'AJJL01] -// gxn/dxp 23/05/2001 - -dtmc - -// number of chunks -const int N = 64; -// maximum number of retransmissions -const int MAX = 4; - -// reliability of channels -const double pL; -const double pK; - -module sender - - 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; - - // 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); - // wait_ack - [aB] (s=2) -> (s'=4) & (s_ab'=!s_ab); - [TO_Msg] (s=2) -> (s'=3); - [TO_Ack] (s=2) -> (s'=3); - // retransmit - [aF] (s=3) & (nrtr (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1); - [] (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 - -// prevents more than one file being sent -module tester - - T : bool; - - [NewFile] (T=false) -> (T'=true); - -endmodule - -module channelK - - k : [0..2]; - - // idle - [aF] (k=0) -> pK : (k'=1) + 1-pK : (k'=2); - // sending - [aG] (k=1) -> (k'=0); - // lost - [TO_Msg] (k=2) -> (k'=0); - -endmodule - -module channelL - - l : [0..2]; - - // idle - [aA] (l=0) -> pL : (l'=1) + 1-pL : (l'=2); - // sending - [aB] (l=1) -> (l'=0); - // lost - [TO_Ack] (l=2) -> (l'=0); - -endmodule diff --git a/examples/pdtmc/brp/brp_regions.txt b/examples/pdtmc/brp/brp_regions.txt deleted file mode 100644 index c1c19ee3b..000000000 --- a/examples/pdtmc/brp/brp_regions.txt +++ /dev/null @@ -1,625 +0,0 @@ -0.000010<=pL<=0.040000, 0.000010<=pK<=0.040000; -0.000010<=pL<=0.040000, 0.040000<=pK<=0.080000; -0.000010<=pL<=0.040000, 0.080000<=pK<=0.120000; -0.000010<=pL<=0.040000, 0.120000<=pK<=0.160000; -0.000010<=pL<=0.040000, 0.160000<=pK<=0.200000; -0.000010<=pL<=0.040000, 0.200000<=pK<=0.240000; -0.000010<=pL<=0.040000, 0.240000<=pK<=0.280000; -0.000010<=pL<=0.040000, 0.280000<=pK<=0.320000; -0.000010<=pL<=0.040000, 0.320000<=pK<=0.360000; -0.000010<=pL<=0.040000, 0.360000<=pK<=0.400000; -0.000010<=pL<=0.040000, 0.400000<=pK<=0.440000; -0.000010<=pL<=0.040000, 0.440000<=pK<=0.480000; -0.000010<=pL<=0.040000, 0.480000<=pK<=0.520000; -0.000010<=pL<=0.040000, 0.520000<=pK<=0.560000; -0.000010<=pL<=0.040000, 0.560000<=pK<=0.600000; -0.000010<=pL<=0.040000, 0.600000<=pK<=0.640000; -0.000010<=pL<=0.040000, 0.640000<=pK<=0.680000; -0.000010<=pL<=0.040000, 0.680000<=pK<=0.720000; -0.000010<=pL<=0.040000, 0.720000<=pK<=0.760000; -0.000010<=pL<=0.040000, 0.760000<=pK<=0.800000; -0.000010<=pL<=0.040000, 0.800000<=pK<=0.840000; -0.000010<=pL<=0.040000, 0.840000<=pK<=0.880000; -0.000010<=pL<=0.040000, 0.880000<=pK<=0.920000; -0.000010<=pL<=0.040000, 0.920000<=pK<=0.960000; -0.000010<=pL<=0.040000, 0.960000<=pK<=0.999990; -0.040000<=pL<=0.080000, 0.000010<=pK<=0.040000; -0.040000<=pL<=0.080000, 0.040000<=pK<=0.080000; -0.040000<=pL<=0.080000, 0.080000<=pK<=0.120000; -0.040000<=pL<=0.080000, 0.120000<=pK<=0.160000; -0.040000<=pL<=0.080000, 0.160000<=pK<=0.200000; -0.040000<=pL<=0.080000, 0.200000<=pK<=0.240000; -0.040000<=pL<=0.080000, 0.240000<=pK<=0.280000; -0.040000<=pL<=0.080000, 0.280000<=pK<=0.320000; -0.040000<=pL<=0.080000, 0.320000<=pK<=0.360000; -0.040000<=pL<=0.080000, 0.360000<=pK<=0.400000; -0.040000<=pL<=0.080000, 0.400000<=pK<=0.440000; -0.040000<=pL<=0.080000, 0.440000<=pK<=0.480000; -0.040000<=pL<=0.080000, 0.480000<=pK<=0.520000; -0.040000<=pL<=0.080000, 0.520000<=pK<=0.560000; -0.040000<=pL<=0.080000, 0.560000<=pK<=0.600000; -0.040000<=pL<=0.080000, 0.600000<=pK<=0.640000; -0.040000<=pL<=0.080000, 0.640000<=pK<=0.680000; -0.040000<=pL<=0.080000, 0.680000<=pK<=0.720000; -0.040000<=pL<=0.080000, 0.720000<=pK<=0.760000; -0.040000<=pL<=0.080000, 0.760000<=pK<=0.800000; -0.040000<=pL<=0.080000, 0.800000<=pK<=0.840000; -0.040000<=pL<=0.080000, 0.840000<=pK<=0.880000; -0.040000<=pL<=0.080000, 0.880000<=pK<=0.920000; -0.040000<=pL<=0.080000, 0.920000<=pK<=0.960000; -0.040000<=pL<=0.080000, 0.960000<=pK<=0.999990; -0.080000<=pL<=0.120000, 0.000010<=pK<=0.040000; -0.080000<=pL<=0.120000, 0.040000<=pK<=0.080000; -0.080000<=pL<=0.120000, 0.080000<=pK<=0.120000; -0.080000<=pL<=0.120000, 0.120000<=pK<=0.160000; -0.080000<=pL<=0.120000, 0.160000<=pK<=0.200000; -0.080000<=pL<=0.120000, 0.200000<=pK<=0.240000; -0.080000<=pL<=0.120000, 0.240000<=pK<=0.280000; -0.080000<=pL<=0.120000, 0.280000<=pK<=0.320000; -0.080000<=pL<=0.120000, 0.320000<=pK<=0.360000; -0.080000<=pL<=0.120000, 0.360000<=pK<=0.400000; -0.080000<=pL<=0.120000, 0.400000<=pK<=0.440000; -0.080000<=pL<=0.120000, 0.440000<=pK<=0.480000; -0.080000<=pL<=0.120000, 0.480000<=pK<=0.520000; -0.080000<=pL<=0.120000, 0.520000<=pK<=0.560000; -0.080000<=pL<=0.120000, 0.560000<=pK<=0.600000; -0.080000<=pL<=0.120000, 0.600000<=pK<=0.640000; -0.080000<=pL<=0.120000, 0.640000<=pK<=0.680000; -0.080000<=pL<=0.120000, 0.680000<=pK<=0.720000; -0.080000<=pL<=0.120000, 0.720000<=pK<=0.760000; -0.080000<=pL<=0.120000, 0.760000<=pK<=0.800000; -0.080000<=pL<=0.120000, 0.800000<=pK<=0.840000; -0.080000<=pL<=0.120000, 0.840000<=pK<=0.880000; -0.080000<=pL<=0.120000, 0.880000<=pK<=0.920000; -0.080000<=pL<=0.120000, 0.920000<=pK<=0.960000; -0.080000<=pL<=0.120000, 0.960000<=pK<=0.999990; -0.120000<=pL<=0.160000, 0.000010<=pK<=0.040000; -0.120000<=pL<=0.160000, 0.040000<=pK<=0.080000; -0.120000<=pL<=0.160000, 0.080000<=pK<=0.120000; -0.120000<=pL<=0.160000, 0.120000<=pK<=0.160000; -0.120000<=pL<=0.160000, 0.160000<=pK<=0.200000; -0.120000<=pL<=0.160000, 0.200000<=pK<=0.240000; -0.120000<=pL<=0.160000, 0.240000<=pK<=0.280000; -0.120000<=pL<=0.160000, 0.280000<=pK<=0.320000; -0.120000<=pL<=0.160000, 0.320000<=pK<=0.360000; -0.120000<=pL<=0.160000, 0.360000<=pK<=0.400000; -0.120000<=pL<=0.160000, 0.400000<=pK<=0.440000; -0.120000<=pL<=0.160000, 0.440000<=pK<=0.480000; -0.120000<=pL<=0.160000, 0.480000<=pK<=0.520000; -0.120000<=pL<=0.160000, 0.520000<=pK<=0.560000; -0.120000<=pL<=0.160000, 0.560000<=pK<=0.600000; -0.120000<=pL<=0.160000, 0.600000<=pK<=0.640000; -0.120000<=pL<=0.160000, 0.640000<=pK<=0.680000; -0.120000<=pL<=0.160000, 0.680000<=pK<=0.720000; -0.120000<=pL<=0.160000, 0.720000<=pK<=0.760000; -0.120000<=pL<=0.160000, 0.760000<=pK<=0.800000; -0.120000<=pL<=0.160000, 0.800000<=pK<=0.840000; -0.120000<=pL<=0.160000, 0.840000<=pK<=0.880000; -0.120000<=pL<=0.160000, 0.880000<=pK<=0.920000; -0.120000<=pL<=0.160000, 0.920000<=pK<=0.960000; -0.120000<=pL<=0.160000, 0.960000<=pK<=0.999990; -0.160000<=pL<=0.200000, 0.000010<=pK<=0.040000; -0.160000<=pL<=0.200000, 0.040000<=pK<=0.080000; -0.160000<=pL<=0.200000, 0.080000<=pK<=0.120000; -0.160000<=pL<=0.200000, 0.120000<=pK<=0.160000; -0.160000<=pL<=0.200000, 0.160000<=pK<=0.200000; -0.160000<=pL<=0.200000, 0.200000<=pK<=0.240000; -0.160000<=pL<=0.200000, 0.240000<=pK<=0.280000; -0.160000<=pL<=0.200000, 0.280000<=pK<=0.320000; -0.160000<=pL<=0.200000, 0.320000<=pK<=0.360000; -0.160000<=pL<=0.200000, 0.360000<=pK<=0.400000; -0.160000<=pL<=0.200000, 0.400000<=pK<=0.440000; -0.160000<=pL<=0.200000, 0.440000<=pK<=0.480000; -0.160000<=pL<=0.200000, 0.480000<=pK<=0.520000; -0.160000<=pL<=0.200000, 0.520000<=pK<=0.560000; -0.160000<=pL<=0.200000, 0.560000<=pK<=0.600000; -0.160000<=pL<=0.200000, 0.600000<=pK<=0.640000; -0.160000<=pL<=0.200000, 0.640000<=pK<=0.680000; -0.160000<=pL<=0.200000, 0.680000<=pK<=0.720000; -0.160000<=pL<=0.200000, 0.720000<=pK<=0.760000; -0.160000<=pL<=0.200000, 0.760000<=pK<=0.800000; -0.160000<=pL<=0.200000, 0.800000<=pK<=0.840000; -0.160000<=pL<=0.200000, 0.840000<=pK<=0.880000; -0.160000<=pL<=0.200000, 0.880000<=pK<=0.920000; -0.160000<=pL<=0.200000, 0.920000<=pK<=0.960000; -0.160000<=pL<=0.200000, 0.960000<=pK<=0.999990; -0.200000<=pL<=0.240000, 0.000010<=pK<=0.040000; -0.200000<=pL<=0.240000, 0.040000<=pK<=0.080000; -0.200000<=pL<=0.240000, 0.080000<=pK<=0.120000; -0.200000<=pL<=0.240000, 0.120000<=pK<=0.160000; -0.200000<=pL<=0.240000, 0.160000<=pK<=0.200000; -0.200000<=pL<=0.240000, 0.200000<=pK<=0.240000; -0.200000<=pL<=0.240000, 0.240000<=pK<=0.280000; -0.200000<=pL<=0.240000, 0.280000<=pK<=0.320000; -0.200000<=pL<=0.240000, 0.320000<=pK<=0.360000; -0.200000<=pL<=0.240000, 0.360000<=pK<=0.400000; -0.200000<=pL<=0.240000, 0.400000<=pK<=0.440000; -0.200000<=pL<=0.240000, 0.440000<=pK<=0.480000; -0.200000<=pL<=0.240000, 0.480000<=pK<=0.520000; -0.200000<=pL<=0.240000, 0.520000<=pK<=0.560000; -0.200000<=pL<=0.240000, 0.560000<=pK<=0.600000; -0.200000<=pL<=0.240000, 0.600000<=pK<=0.640000; -0.200000<=pL<=0.240000, 0.640000<=pK<=0.680000; -0.200000<=pL<=0.240000, 0.680000<=pK<=0.720000; -0.200000<=pL<=0.240000, 0.720000<=pK<=0.760000; -0.200000<=pL<=0.240000, 0.760000<=pK<=0.800000; -0.200000<=pL<=0.240000, 0.800000<=pK<=0.840000; -0.200000<=pL<=0.240000, 0.840000<=pK<=0.880000; -0.200000<=pL<=0.240000, 0.880000<=pK<=0.920000; -0.200000<=pL<=0.240000, 0.920000<=pK<=0.960000; -0.200000<=pL<=0.240000, 0.960000<=pK<=0.999990; -0.240000<=pL<=0.280000, 0.000010<=pK<=0.040000; -0.240000<=pL<=0.280000, 0.040000<=pK<=0.080000; -0.240000<=pL<=0.280000, 0.080000<=pK<=0.120000; -0.240000<=pL<=0.280000, 0.120000<=pK<=0.160000; -0.240000<=pL<=0.280000, 0.160000<=pK<=0.200000; -0.240000<=pL<=0.280000, 0.200000<=pK<=0.240000; -0.240000<=pL<=0.280000, 0.240000<=pK<=0.280000; -0.240000<=pL<=0.280000, 0.280000<=pK<=0.320000; -0.240000<=pL<=0.280000, 0.320000<=pK<=0.360000; -0.240000<=pL<=0.280000, 0.360000<=pK<=0.400000; -0.240000<=pL<=0.280000, 0.400000<=pK<=0.440000; -0.240000<=pL<=0.280000, 0.440000<=pK<=0.480000; -0.240000<=pL<=0.280000, 0.480000<=pK<=0.520000; -0.240000<=pL<=0.280000, 0.520000<=pK<=0.560000; -0.240000<=pL<=0.280000, 0.560000<=pK<=0.600000; -0.240000<=pL<=0.280000, 0.600000<=pK<=0.640000; -0.240000<=pL<=0.280000, 0.640000<=pK<=0.680000; -0.240000<=pL<=0.280000, 0.680000<=pK<=0.720000; -0.240000<=pL<=0.280000, 0.720000<=pK<=0.760000; -0.240000<=pL<=0.280000, 0.760000<=pK<=0.800000; -0.240000<=pL<=0.280000, 0.800000<=pK<=0.840000; -0.240000<=pL<=0.280000, 0.840000<=pK<=0.880000; -0.240000<=pL<=0.280000, 0.880000<=pK<=0.920000; -0.240000<=pL<=0.280000, 0.920000<=pK<=0.960000; -0.240000<=pL<=0.280000, 0.960000<=pK<=0.999990; -0.280000<=pL<=0.320000, 0.000010<=pK<=0.040000; -0.280000<=pL<=0.320000, 0.040000<=pK<=0.080000; -0.280000<=pL<=0.320000, 0.080000<=pK<=0.120000; -0.280000<=pL<=0.320000, 0.120000<=pK<=0.160000; -0.280000<=pL<=0.320000, 0.160000<=pK<=0.200000; -0.280000<=pL<=0.320000, 0.200000<=pK<=0.240000; -0.280000<=pL<=0.320000, 0.240000<=pK<=0.280000; -0.280000<=pL<=0.320000, 0.280000<=pK<=0.320000; -0.280000<=pL<=0.320000, 0.320000<=pK<=0.360000; -0.280000<=pL<=0.320000, 0.360000<=pK<=0.400000; -0.280000<=pL<=0.320000, 0.400000<=pK<=0.440000; -0.280000<=pL<=0.320000, 0.440000<=pK<=0.480000; -0.280000<=pL<=0.320000, 0.480000<=pK<=0.520000; -0.280000<=pL<=0.320000, 0.520000<=pK<=0.560000; -0.280000<=pL<=0.320000, 0.560000<=pK<=0.600000; -0.280000<=pL<=0.320000, 0.600000<=pK<=0.640000; -0.280000<=pL<=0.320000, 0.640000<=pK<=0.680000; -0.280000<=pL<=0.320000, 0.680000<=pK<=0.720000; -0.280000<=pL<=0.320000, 0.720000<=pK<=0.760000; -0.280000<=pL<=0.320000, 0.760000<=pK<=0.800000; -0.280000<=pL<=0.320000, 0.800000<=pK<=0.840000; -0.280000<=pL<=0.320000, 0.840000<=pK<=0.880000; -0.280000<=pL<=0.320000, 0.880000<=pK<=0.920000; -0.280000<=pL<=0.320000, 0.920000<=pK<=0.960000; -0.280000<=pL<=0.320000, 0.960000<=pK<=0.999990; -0.320000<=pL<=0.360000, 0.000010<=pK<=0.040000; -0.320000<=pL<=0.360000, 0.040000<=pK<=0.080000; -0.320000<=pL<=0.360000, 0.080000<=pK<=0.120000; -0.320000<=pL<=0.360000, 0.120000<=pK<=0.160000; -0.320000<=pL<=0.360000, 0.160000<=pK<=0.200000; -0.320000<=pL<=0.360000, 0.200000<=pK<=0.240000; -0.320000<=pL<=0.360000, 0.240000<=pK<=0.280000; -0.320000<=pL<=0.360000, 0.280000<=pK<=0.320000; -0.320000<=pL<=0.360000, 0.320000<=pK<=0.360000; -0.320000<=pL<=0.360000, 0.360000<=pK<=0.400000; -0.320000<=pL<=0.360000, 0.400000<=pK<=0.440000; -0.320000<=pL<=0.360000, 0.440000<=pK<=0.480000; -0.320000<=pL<=0.360000, 0.480000<=pK<=0.520000; -0.320000<=pL<=0.360000, 0.520000<=pK<=0.560000; -0.320000<=pL<=0.360000, 0.560000<=pK<=0.600000; -0.320000<=pL<=0.360000, 0.600000<=pK<=0.640000; -0.320000<=pL<=0.360000, 0.640000<=pK<=0.680000; -0.320000<=pL<=0.360000, 0.680000<=pK<=0.720000; -0.320000<=pL<=0.360000, 0.720000<=pK<=0.760000; -0.320000<=pL<=0.360000, 0.760000<=pK<=0.800000; -0.320000<=pL<=0.360000, 0.800000<=pK<=0.840000; -0.320000<=pL<=0.360000, 0.840000<=pK<=0.880000; -0.320000<=pL<=0.360000, 0.880000<=pK<=0.920000; -0.320000<=pL<=0.360000, 0.920000<=pK<=0.960000; -0.320000<=pL<=0.360000, 0.960000<=pK<=0.999990; -0.360000<=pL<=0.400000, 0.000010<=pK<=0.040000; -0.360000<=pL<=0.400000, 0.040000<=pK<=0.080000; -0.360000<=pL<=0.400000, 0.080000<=pK<=0.120000; -0.360000<=pL<=0.400000, 0.120000<=pK<=0.160000; -0.360000<=pL<=0.400000, 0.160000<=pK<=0.200000; -0.360000<=pL<=0.400000, 0.200000<=pK<=0.240000; -0.360000<=pL<=0.400000, 0.240000<=pK<=0.280000; -0.360000<=pL<=0.400000, 0.280000<=pK<=0.320000; -0.360000<=pL<=0.400000, 0.320000<=pK<=0.360000; -0.360000<=pL<=0.400000, 0.360000<=pK<=0.400000; -0.360000<=pL<=0.400000, 0.400000<=pK<=0.440000; -0.360000<=pL<=0.400000, 0.440000<=pK<=0.480000; -0.360000<=pL<=0.400000, 0.480000<=pK<=0.520000; -0.360000<=pL<=0.400000, 0.520000<=pK<=0.560000; -0.360000<=pL<=0.400000, 0.560000<=pK<=0.600000; -0.360000<=pL<=0.400000, 0.600000<=pK<=0.640000; -0.360000<=pL<=0.400000, 0.640000<=pK<=0.680000; -0.360000<=pL<=0.400000, 0.680000<=pK<=0.720000; -0.360000<=pL<=0.400000, 0.720000<=pK<=0.760000; -0.360000<=pL<=0.400000, 0.760000<=pK<=0.800000; -0.360000<=pL<=0.400000, 0.800000<=pK<=0.840000; -0.360000<=pL<=0.400000, 0.840000<=pK<=0.880000; -0.360000<=pL<=0.400000, 0.880000<=pK<=0.920000; -0.360000<=pL<=0.400000, 0.920000<=pK<=0.960000; -0.360000<=pL<=0.400000, 0.960000<=pK<=0.999990; -0.400000<=pL<=0.440000, 0.000010<=pK<=0.040000; -0.400000<=pL<=0.440000, 0.040000<=pK<=0.080000; -0.400000<=pL<=0.440000, 0.080000<=pK<=0.120000; -0.400000<=pL<=0.440000, 0.120000<=pK<=0.160000; -0.400000<=pL<=0.440000, 0.160000<=pK<=0.200000; -0.400000<=pL<=0.440000, 0.200000<=pK<=0.240000; -0.400000<=pL<=0.440000, 0.240000<=pK<=0.280000; -0.400000<=pL<=0.440000, 0.280000<=pK<=0.320000; -0.400000<=pL<=0.440000, 0.320000<=pK<=0.360000; -0.400000<=pL<=0.440000, 0.360000<=pK<=0.400000; -0.400000<=pL<=0.440000, 0.400000<=pK<=0.440000; -0.400000<=pL<=0.440000, 0.440000<=pK<=0.480000; -0.400000<=pL<=0.440000, 0.480000<=pK<=0.520000; -0.400000<=pL<=0.440000, 0.520000<=pK<=0.560000; -0.400000<=pL<=0.440000, 0.560000<=pK<=0.600000; -0.400000<=pL<=0.440000, 0.600000<=pK<=0.640000; -0.400000<=pL<=0.440000, 0.640000<=pK<=0.680000; -0.400000<=pL<=0.440000, 0.680000<=pK<=0.720000; -0.400000<=pL<=0.440000, 0.720000<=pK<=0.760000; -0.400000<=pL<=0.440000, 0.760000<=pK<=0.800000; -0.400000<=pL<=0.440000, 0.800000<=pK<=0.840000; -0.400000<=pL<=0.440000, 0.840000<=pK<=0.880000; -0.400000<=pL<=0.440000, 0.880000<=pK<=0.920000; -0.400000<=pL<=0.440000, 0.920000<=pK<=0.960000; -0.400000<=pL<=0.440000, 0.960000<=pK<=0.999990; -0.440000<=pL<=0.480000, 0.000010<=pK<=0.040000; -0.440000<=pL<=0.480000, 0.040000<=pK<=0.080000; -0.440000<=pL<=0.480000, 0.080000<=pK<=0.120000; -0.440000<=pL<=0.480000, 0.120000<=pK<=0.160000; -0.440000<=pL<=0.480000, 0.160000<=pK<=0.200000; -0.440000<=pL<=0.480000, 0.200000<=pK<=0.240000; -0.440000<=pL<=0.480000, 0.240000<=pK<=0.280000; -0.440000<=pL<=0.480000, 0.280000<=pK<=0.320000; -0.440000<=pL<=0.480000, 0.320000<=pK<=0.360000; -0.440000<=pL<=0.480000, 0.360000<=pK<=0.400000; -0.440000<=pL<=0.480000, 0.400000<=pK<=0.440000; -0.440000<=pL<=0.480000, 0.440000<=pK<=0.480000; -0.440000<=pL<=0.480000, 0.480000<=pK<=0.520000; -0.440000<=pL<=0.480000, 0.520000<=pK<=0.560000; -0.440000<=pL<=0.480000, 0.560000<=pK<=0.600000; -0.440000<=pL<=0.480000, 0.600000<=pK<=0.640000; -0.440000<=pL<=0.480000, 0.640000<=pK<=0.680000; -0.440000<=pL<=0.480000, 0.680000<=pK<=0.720000; -0.440000<=pL<=0.480000, 0.720000<=pK<=0.760000; -0.440000<=pL<=0.480000, 0.760000<=pK<=0.800000; -0.440000<=pL<=0.480000, 0.800000<=pK<=0.840000; -0.440000<=pL<=0.480000, 0.840000<=pK<=0.880000; -0.440000<=pL<=0.480000, 0.880000<=pK<=0.920000; -0.440000<=pL<=0.480000, 0.920000<=pK<=0.960000; -0.440000<=pL<=0.480000, 0.960000<=pK<=0.999990; -0.480000<=pL<=0.520000, 0.000010<=pK<=0.040000; -0.480000<=pL<=0.520000, 0.040000<=pK<=0.080000; -0.480000<=pL<=0.520000, 0.080000<=pK<=0.120000; -0.480000<=pL<=0.520000, 0.120000<=pK<=0.160000; -0.480000<=pL<=0.520000, 0.160000<=pK<=0.200000; -0.480000<=pL<=0.520000, 0.200000<=pK<=0.240000; -0.480000<=pL<=0.520000, 0.240000<=pK<=0.280000; -0.480000<=pL<=0.520000, 0.280000<=pK<=0.320000; -0.480000<=pL<=0.520000, 0.320000<=pK<=0.360000; -0.480000<=pL<=0.520000, 0.360000<=pK<=0.400000; -0.480000<=pL<=0.520000, 0.400000<=pK<=0.440000; -0.480000<=pL<=0.520000, 0.440000<=pK<=0.480000; -0.480000<=pL<=0.520000, 0.480000<=pK<=0.520000; -0.480000<=pL<=0.520000, 0.520000<=pK<=0.560000; -0.480000<=pL<=0.520000, 0.560000<=pK<=0.600000; -0.480000<=pL<=0.520000, 0.600000<=pK<=0.640000; -0.480000<=pL<=0.520000, 0.640000<=pK<=0.680000; -0.480000<=pL<=0.520000, 0.680000<=pK<=0.720000; -0.480000<=pL<=0.520000, 0.720000<=pK<=0.760000; -0.480000<=pL<=0.520000, 0.760000<=pK<=0.800000; -0.480000<=pL<=0.520000, 0.800000<=pK<=0.840000; -0.480000<=pL<=0.520000, 0.840000<=pK<=0.880000; -0.480000<=pL<=0.520000, 0.880000<=pK<=0.920000; -0.480000<=pL<=0.520000, 0.920000<=pK<=0.960000; -0.480000<=pL<=0.520000, 0.960000<=pK<=0.999990; -0.520000<=pL<=0.560000, 0.000010<=pK<=0.040000; -0.520000<=pL<=0.560000, 0.040000<=pK<=0.080000; -0.520000<=pL<=0.560000, 0.080000<=pK<=0.120000; -0.520000<=pL<=0.560000, 0.120000<=pK<=0.160000; -0.520000<=pL<=0.560000, 0.160000<=pK<=0.200000; -0.520000<=pL<=0.560000, 0.200000<=pK<=0.240000; -0.520000<=pL<=0.560000, 0.240000<=pK<=0.280000; -0.520000<=pL<=0.560000, 0.280000<=pK<=0.320000; -0.520000<=pL<=0.560000, 0.320000<=pK<=0.360000; -0.520000<=pL<=0.560000, 0.360000<=pK<=0.400000; -0.520000<=pL<=0.560000, 0.400000<=pK<=0.440000; -0.520000<=pL<=0.560000, 0.440000<=pK<=0.480000; -0.520000<=pL<=0.560000, 0.480000<=pK<=0.520000; -0.520000<=pL<=0.560000, 0.520000<=pK<=0.560000; -0.520000<=pL<=0.560000, 0.560000<=pK<=0.600000; -0.520000<=pL<=0.560000, 0.600000<=pK<=0.640000; -0.520000<=pL<=0.560000, 0.640000<=pK<=0.680000; -0.520000<=pL<=0.560000, 0.680000<=pK<=0.720000; -0.520000<=pL<=0.560000, 0.720000<=pK<=0.760000; -0.520000<=pL<=0.560000, 0.760000<=pK<=0.800000; -0.520000<=pL<=0.560000, 0.800000<=pK<=0.840000; -0.520000<=pL<=0.560000, 0.840000<=pK<=0.880000; -0.520000<=pL<=0.560000, 0.880000<=pK<=0.920000; -0.520000<=pL<=0.560000, 0.920000<=pK<=0.960000; -0.520000<=pL<=0.560000, 0.960000<=pK<=0.999990; -0.560000<=pL<=0.600000, 0.000010<=pK<=0.040000; -0.560000<=pL<=0.600000, 0.040000<=pK<=0.080000; -0.560000<=pL<=0.600000, 0.080000<=pK<=0.120000; -0.560000<=pL<=0.600000, 0.120000<=pK<=0.160000; -0.560000<=pL<=0.600000, 0.160000<=pK<=0.200000; -0.560000<=pL<=0.600000, 0.200000<=pK<=0.240000; -0.560000<=pL<=0.600000, 0.240000<=pK<=0.280000; -0.560000<=pL<=0.600000, 0.280000<=pK<=0.320000; -0.560000<=pL<=0.600000, 0.320000<=pK<=0.360000; -0.560000<=pL<=0.600000, 0.360000<=pK<=0.400000; -0.560000<=pL<=0.600000, 0.400000<=pK<=0.440000; -0.560000<=pL<=0.600000, 0.440000<=pK<=0.480000; -0.560000<=pL<=0.600000, 0.480000<=pK<=0.520000; -0.560000<=pL<=0.600000, 0.520000<=pK<=0.560000; -0.560000<=pL<=0.600000, 0.560000<=pK<=0.600000; -0.560000<=pL<=0.600000, 0.600000<=pK<=0.640000; -0.560000<=pL<=0.600000, 0.640000<=pK<=0.680000; -0.560000<=pL<=0.600000, 0.680000<=pK<=0.720000; -0.560000<=pL<=0.600000, 0.720000<=pK<=0.760000; -0.560000<=pL<=0.600000, 0.760000<=pK<=0.800000; -0.560000<=pL<=0.600000, 0.800000<=pK<=0.840000; -0.560000<=pL<=0.600000, 0.840000<=pK<=0.880000; -0.560000<=pL<=0.600000, 0.880000<=pK<=0.920000; -0.560000<=pL<=0.600000, 0.920000<=pK<=0.960000; -0.560000<=pL<=0.600000, 0.960000<=pK<=0.999990; -0.600000<=pL<=0.640000, 0.000010<=pK<=0.040000; -0.600000<=pL<=0.640000, 0.040000<=pK<=0.080000; -0.600000<=pL<=0.640000, 0.080000<=pK<=0.120000; -0.600000<=pL<=0.640000, 0.120000<=pK<=0.160000; -0.600000<=pL<=0.640000, 0.160000<=pK<=0.200000; -0.600000<=pL<=0.640000, 0.200000<=pK<=0.240000; -0.600000<=pL<=0.640000, 0.240000<=pK<=0.280000; -0.600000<=pL<=0.640000, 0.280000<=pK<=0.320000; -0.600000<=pL<=0.640000, 0.320000<=pK<=0.360000; -0.600000<=pL<=0.640000, 0.360000<=pK<=0.400000; -0.600000<=pL<=0.640000, 0.400000<=pK<=0.440000; -0.600000<=pL<=0.640000, 0.440000<=pK<=0.480000; -0.600000<=pL<=0.640000, 0.480000<=pK<=0.520000; -0.600000<=pL<=0.640000, 0.520000<=pK<=0.560000; -0.600000<=pL<=0.640000, 0.560000<=pK<=0.600000; -0.600000<=pL<=0.640000, 0.600000<=pK<=0.640000; -0.600000<=pL<=0.640000, 0.640000<=pK<=0.680000; -0.600000<=pL<=0.640000, 0.680000<=pK<=0.720000; -0.600000<=pL<=0.640000, 0.720000<=pK<=0.760000; -0.600000<=pL<=0.640000, 0.760000<=pK<=0.800000; -0.600000<=pL<=0.640000, 0.800000<=pK<=0.840000; -0.600000<=pL<=0.640000, 0.840000<=pK<=0.880000; -0.600000<=pL<=0.640000, 0.880000<=pK<=0.920000; -0.600000<=pL<=0.640000, 0.920000<=pK<=0.960000; -0.600000<=pL<=0.640000, 0.960000<=pK<=0.999990; -0.640000<=pL<=0.680000, 0.000010<=pK<=0.040000; -0.640000<=pL<=0.680000, 0.040000<=pK<=0.080000; -0.640000<=pL<=0.680000, 0.080000<=pK<=0.120000; -0.640000<=pL<=0.680000, 0.120000<=pK<=0.160000; -0.640000<=pL<=0.680000, 0.160000<=pK<=0.200000; -0.640000<=pL<=0.680000, 0.200000<=pK<=0.240000; -0.640000<=pL<=0.680000, 0.240000<=pK<=0.280000; -0.640000<=pL<=0.680000, 0.280000<=pK<=0.320000; -0.640000<=pL<=0.680000, 0.320000<=pK<=0.360000; -0.640000<=pL<=0.680000, 0.360000<=pK<=0.400000; -0.640000<=pL<=0.680000, 0.400000<=pK<=0.440000; -0.640000<=pL<=0.680000, 0.440000<=pK<=0.480000; -0.640000<=pL<=0.680000, 0.480000<=pK<=0.520000; -0.640000<=pL<=0.680000, 0.520000<=pK<=0.560000; -0.640000<=pL<=0.680000, 0.560000<=pK<=0.600000; -0.640000<=pL<=0.680000, 0.600000<=pK<=0.640000; -0.640000<=pL<=0.680000, 0.640000<=pK<=0.680000; -0.640000<=pL<=0.680000, 0.680000<=pK<=0.720000; -0.640000<=pL<=0.680000, 0.720000<=pK<=0.760000; -0.640000<=pL<=0.680000, 0.760000<=pK<=0.800000; -0.640000<=pL<=0.680000, 0.800000<=pK<=0.840000; -0.640000<=pL<=0.680000, 0.840000<=pK<=0.880000; -0.640000<=pL<=0.680000, 0.880000<=pK<=0.920000; -0.640000<=pL<=0.680000, 0.920000<=pK<=0.960000; -0.640000<=pL<=0.680000, 0.960000<=pK<=0.999990; -0.680000<=pL<=0.720000, 0.000010<=pK<=0.040000; -0.680000<=pL<=0.720000, 0.040000<=pK<=0.080000; -0.680000<=pL<=0.720000, 0.080000<=pK<=0.120000; -0.680000<=pL<=0.720000, 0.120000<=pK<=0.160000; -0.680000<=pL<=0.720000, 0.160000<=pK<=0.200000; -0.680000<=pL<=0.720000, 0.200000<=pK<=0.240000; -0.680000<=pL<=0.720000, 0.240000<=pK<=0.280000; -0.680000<=pL<=0.720000, 0.280000<=pK<=0.320000; -0.680000<=pL<=0.720000, 0.320000<=pK<=0.360000; -0.680000<=pL<=0.720000, 0.360000<=pK<=0.400000; -0.680000<=pL<=0.720000, 0.400000<=pK<=0.440000; -0.680000<=pL<=0.720000, 0.440000<=pK<=0.480000; -0.680000<=pL<=0.720000, 0.480000<=pK<=0.520000; -0.680000<=pL<=0.720000, 0.520000<=pK<=0.560000; -0.680000<=pL<=0.720000, 0.560000<=pK<=0.600000; -0.680000<=pL<=0.720000, 0.600000<=pK<=0.640000; -0.680000<=pL<=0.720000, 0.640000<=pK<=0.680000; -0.680000<=pL<=0.720000, 0.680000<=pK<=0.720000; -0.680000<=pL<=0.720000, 0.720000<=pK<=0.760000; -0.680000<=pL<=0.720000, 0.760000<=pK<=0.800000; -0.680000<=pL<=0.720000, 0.800000<=pK<=0.840000; -0.680000<=pL<=0.720000, 0.840000<=pK<=0.880000; -0.680000<=pL<=0.720000, 0.880000<=pK<=0.920000; -0.680000<=pL<=0.720000, 0.920000<=pK<=0.960000; -0.680000<=pL<=0.720000, 0.960000<=pK<=0.999990; -0.720000<=pL<=0.760000, 0.000010<=pK<=0.040000; -0.720000<=pL<=0.760000, 0.040000<=pK<=0.080000; -0.720000<=pL<=0.760000, 0.080000<=pK<=0.120000; -0.720000<=pL<=0.760000, 0.120000<=pK<=0.160000; -0.720000<=pL<=0.760000, 0.160000<=pK<=0.200000; -0.720000<=pL<=0.760000, 0.200000<=pK<=0.240000; -0.720000<=pL<=0.760000, 0.240000<=pK<=0.280000; -0.720000<=pL<=0.760000, 0.280000<=pK<=0.320000; -0.720000<=pL<=0.760000, 0.320000<=pK<=0.360000; -0.720000<=pL<=0.760000, 0.360000<=pK<=0.400000; -0.720000<=pL<=0.760000, 0.400000<=pK<=0.440000; -0.720000<=pL<=0.760000, 0.440000<=pK<=0.480000; -0.720000<=pL<=0.760000, 0.480000<=pK<=0.520000; -0.720000<=pL<=0.760000, 0.520000<=pK<=0.560000; -0.720000<=pL<=0.760000, 0.560000<=pK<=0.600000; -0.720000<=pL<=0.760000, 0.600000<=pK<=0.640000; -0.720000<=pL<=0.760000, 0.640000<=pK<=0.680000; -0.720000<=pL<=0.760000, 0.680000<=pK<=0.720000; -0.720000<=pL<=0.760000, 0.720000<=pK<=0.760000; -0.720000<=pL<=0.760000, 0.760000<=pK<=0.800000; -0.720000<=pL<=0.760000, 0.800000<=pK<=0.840000; -0.720000<=pL<=0.760000, 0.840000<=pK<=0.880000; -0.720000<=pL<=0.760000, 0.880000<=pK<=0.920000; -0.720000<=pL<=0.760000, 0.920000<=pK<=0.960000; -0.720000<=pL<=0.760000, 0.960000<=pK<=0.999990; -0.760000<=pL<=0.800000, 0.000010<=pK<=0.040000; -0.760000<=pL<=0.800000, 0.040000<=pK<=0.080000; -0.760000<=pL<=0.800000, 0.080000<=pK<=0.120000; -0.760000<=pL<=0.800000, 0.120000<=pK<=0.160000; -0.760000<=pL<=0.800000, 0.160000<=pK<=0.200000; -0.760000<=pL<=0.800000, 0.200000<=pK<=0.240000; -0.760000<=pL<=0.800000, 0.240000<=pK<=0.280000; -0.760000<=pL<=0.800000, 0.280000<=pK<=0.320000; -0.760000<=pL<=0.800000, 0.320000<=pK<=0.360000; -0.760000<=pL<=0.800000, 0.360000<=pK<=0.400000; -0.760000<=pL<=0.800000, 0.400000<=pK<=0.440000; -0.760000<=pL<=0.800000, 0.440000<=pK<=0.480000; -0.760000<=pL<=0.800000, 0.480000<=pK<=0.520000; -0.760000<=pL<=0.800000, 0.520000<=pK<=0.560000; -0.760000<=pL<=0.800000, 0.560000<=pK<=0.600000; -0.760000<=pL<=0.800000, 0.600000<=pK<=0.640000; -0.760000<=pL<=0.800000, 0.640000<=pK<=0.680000; -0.760000<=pL<=0.800000, 0.680000<=pK<=0.720000; -0.760000<=pL<=0.800000, 0.720000<=pK<=0.760000; -0.760000<=pL<=0.800000, 0.760000<=pK<=0.800000; -0.760000<=pL<=0.800000, 0.800000<=pK<=0.840000; -0.760000<=pL<=0.800000, 0.840000<=pK<=0.880000; -0.760000<=pL<=0.800000, 0.880000<=pK<=0.920000; -0.760000<=pL<=0.800000, 0.920000<=pK<=0.960000; -0.760000<=pL<=0.800000, 0.960000<=pK<=0.999990; -0.800000<=pL<=0.840000, 0.000010<=pK<=0.040000; -0.800000<=pL<=0.840000, 0.040000<=pK<=0.080000; -0.800000<=pL<=0.840000, 0.080000<=pK<=0.120000; -0.800000<=pL<=0.840000, 0.120000<=pK<=0.160000; -0.800000<=pL<=0.840000, 0.160000<=pK<=0.200000; -0.800000<=pL<=0.840000, 0.200000<=pK<=0.240000; -0.800000<=pL<=0.840000, 0.240000<=pK<=0.280000; -0.800000<=pL<=0.840000, 0.280000<=pK<=0.320000; -0.800000<=pL<=0.840000, 0.320000<=pK<=0.360000; -0.800000<=pL<=0.840000, 0.360000<=pK<=0.400000; -0.800000<=pL<=0.840000, 0.400000<=pK<=0.440000; -0.800000<=pL<=0.840000, 0.440000<=pK<=0.480000; -0.800000<=pL<=0.840000, 0.480000<=pK<=0.520000; -0.800000<=pL<=0.840000, 0.520000<=pK<=0.560000; -0.800000<=pL<=0.840000, 0.560000<=pK<=0.600000; -0.800000<=pL<=0.840000, 0.600000<=pK<=0.640000; -0.800000<=pL<=0.840000, 0.640000<=pK<=0.680000; -0.800000<=pL<=0.840000, 0.680000<=pK<=0.720000; -0.800000<=pL<=0.840000, 0.720000<=pK<=0.760000; -0.800000<=pL<=0.840000, 0.760000<=pK<=0.800000; -0.800000<=pL<=0.840000, 0.800000<=pK<=0.840000; -0.800000<=pL<=0.840000, 0.840000<=pK<=0.880000; -0.800000<=pL<=0.840000, 0.880000<=pK<=0.920000; -0.800000<=pL<=0.840000, 0.920000<=pK<=0.960000; -0.800000<=pL<=0.840000, 0.960000<=pK<=0.999990; -0.840000<=pL<=0.880000, 0.000010<=pK<=0.040000; -0.840000<=pL<=0.880000, 0.040000<=pK<=0.080000; -0.840000<=pL<=0.880000, 0.080000<=pK<=0.120000; -0.840000<=pL<=0.880000, 0.120000<=pK<=0.160000; -0.840000<=pL<=0.880000, 0.160000<=pK<=0.200000; -0.840000<=pL<=0.880000, 0.200000<=pK<=0.240000; -0.840000<=pL<=0.880000, 0.240000<=pK<=0.280000; -0.840000<=pL<=0.880000, 0.280000<=pK<=0.320000; -0.840000<=pL<=0.880000, 0.320000<=pK<=0.360000; -0.840000<=pL<=0.880000, 0.360000<=pK<=0.400000; -0.840000<=pL<=0.880000, 0.400000<=pK<=0.440000; -0.840000<=pL<=0.880000, 0.440000<=pK<=0.480000; -0.840000<=pL<=0.880000, 0.480000<=pK<=0.520000; -0.840000<=pL<=0.880000, 0.520000<=pK<=0.560000; -0.840000<=pL<=0.880000, 0.560000<=pK<=0.600000; -0.840000<=pL<=0.880000, 0.600000<=pK<=0.640000; -0.840000<=pL<=0.880000, 0.640000<=pK<=0.680000; -0.840000<=pL<=0.880000, 0.680000<=pK<=0.720000; -0.840000<=pL<=0.880000, 0.720000<=pK<=0.760000; -0.840000<=pL<=0.880000, 0.760000<=pK<=0.800000; -0.840000<=pL<=0.880000, 0.800000<=pK<=0.840000; -0.840000<=pL<=0.880000, 0.840000<=pK<=0.880000; -0.840000<=pL<=0.880000, 0.880000<=pK<=0.920000; -0.840000<=pL<=0.880000, 0.920000<=pK<=0.960000; -0.840000<=pL<=0.880000, 0.960000<=pK<=0.999990; -0.880000<=pL<=0.920000, 0.000010<=pK<=0.040000; -0.880000<=pL<=0.920000, 0.040000<=pK<=0.080000; -0.880000<=pL<=0.920000, 0.080000<=pK<=0.120000; -0.880000<=pL<=0.920000, 0.120000<=pK<=0.160000; -0.880000<=pL<=0.920000, 0.160000<=pK<=0.200000; -0.880000<=pL<=0.920000, 0.200000<=pK<=0.240000; -0.880000<=pL<=0.920000, 0.240000<=pK<=0.280000; -0.880000<=pL<=0.920000, 0.280000<=pK<=0.320000; -0.880000<=pL<=0.920000, 0.320000<=pK<=0.360000; -0.880000<=pL<=0.920000, 0.360000<=pK<=0.400000; -0.880000<=pL<=0.920000, 0.400000<=pK<=0.440000; -0.880000<=pL<=0.920000, 0.440000<=pK<=0.480000; -0.880000<=pL<=0.920000, 0.480000<=pK<=0.520000; -0.880000<=pL<=0.920000, 0.520000<=pK<=0.560000; -0.880000<=pL<=0.920000, 0.560000<=pK<=0.600000; -0.880000<=pL<=0.920000, 0.600000<=pK<=0.640000; -0.880000<=pL<=0.920000, 0.640000<=pK<=0.680000; -0.880000<=pL<=0.920000, 0.680000<=pK<=0.720000; -0.880000<=pL<=0.920000, 0.720000<=pK<=0.760000; -0.880000<=pL<=0.920000, 0.760000<=pK<=0.800000; -0.880000<=pL<=0.920000, 0.800000<=pK<=0.840000; -0.880000<=pL<=0.920000, 0.840000<=pK<=0.880000; -0.880000<=pL<=0.920000, 0.880000<=pK<=0.920000; -0.880000<=pL<=0.920000, 0.920000<=pK<=0.960000; -0.880000<=pL<=0.920000, 0.960000<=pK<=0.999990; -0.920000<=pL<=0.960000, 0.000010<=pK<=0.040000; -0.920000<=pL<=0.960000, 0.040000<=pK<=0.080000; -0.920000<=pL<=0.960000, 0.080000<=pK<=0.120000; -0.920000<=pL<=0.960000, 0.120000<=pK<=0.160000; -0.920000<=pL<=0.960000, 0.160000<=pK<=0.200000; -0.920000<=pL<=0.960000, 0.200000<=pK<=0.240000; -0.920000<=pL<=0.960000, 0.240000<=pK<=0.280000; -0.920000<=pL<=0.960000, 0.280000<=pK<=0.320000; -0.920000<=pL<=0.960000, 0.320000<=pK<=0.360000; -0.920000<=pL<=0.960000, 0.360000<=pK<=0.400000; -0.920000<=pL<=0.960000, 0.400000<=pK<=0.440000; -0.920000<=pL<=0.960000, 0.440000<=pK<=0.480000; -0.920000<=pL<=0.960000, 0.480000<=pK<=0.520000; -0.920000<=pL<=0.960000, 0.520000<=pK<=0.560000; -0.920000<=pL<=0.960000, 0.560000<=pK<=0.600000; -0.920000<=pL<=0.960000, 0.600000<=pK<=0.640000; -0.920000<=pL<=0.960000, 0.640000<=pK<=0.680000; -0.920000<=pL<=0.960000, 0.680000<=pK<=0.720000; -0.920000<=pL<=0.960000, 0.720000<=pK<=0.760000; -0.920000<=pL<=0.960000, 0.760000<=pK<=0.800000; -0.920000<=pL<=0.960000, 0.800000<=pK<=0.840000; -0.920000<=pL<=0.960000, 0.840000<=pK<=0.880000; -0.920000<=pL<=0.960000, 0.880000<=pK<=0.920000; -0.920000<=pL<=0.960000, 0.920000<=pK<=0.960000; -0.920000<=pL<=0.960000, 0.960000<=pK<=0.999990; -0.960000<=pL<=0.999990, 0.000010<=pK<=0.040000; -0.960000<=pL<=0.999990, 0.040000<=pK<=0.080000; -0.960000<=pL<=0.999990, 0.080000<=pK<=0.120000; -0.960000<=pL<=0.999990, 0.120000<=pK<=0.160000; -0.960000<=pL<=0.999990, 0.160000<=pK<=0.200000; -0.960000<=pL<=0.999990, 0.200000<=pK<=0.240000; -0.960000<=pL<=0.999990, 0.240000<=pK<=0.280000; -0.960000<=pL<=0.999990, 0.280000<=pK<=0.320000; -0.960000<=pL<=0.999990, 0.320000<=pK<=0.360000; -0.960000<=pL<=0.999990, 0.360000<=pK<=0.400000; -0.960000<=pL<=0.999990, 0.400000<=pK<=0.440000; -0.960000<=pL<=0.999990, 0.440000<=pK<=0.480000; -0.960000<=pL<=0.999990, 0.480000<=pK<=0.520000; -0.960000<=pL<=0.999990, 0.520000<=pK<=0.560000; -0.960000<=pL<=0.999990, 0.560000<=pK<=0.600000; -0.960000<=pL<=0.999990, 0.600000<=pK<=0.640000; -0.960000<=pL<=0.999990, 0.640000<=pK<=0.680000; -0.960000<=pL<=0.999990, 0.680000<=pK<=0.720000; -0.960000<=pL<=0.999990, 0.720000<=pK<=0.760000; -0.960000<=pL<=0.999990, 0.760000<=pK<=0.800000; -0.960000<=pL<=0.999990, 0.800000<=pK<=0.840000; -0.960000<=pL<=0.999990, 0.840000<=pK<=0.880000; -0.960000<=pL<=0.999990, 0.880000<=pK<=0.920000; -0.960000<=pL<=0.999990, 0.920000<=pK<=0.960000; -0.960000<=pL<=0.999990, 0.960000<=pK<=0.999990; diff --git a/examples/pdtmc/brp/brp_space.txt b/examples/pdtmc/brp/brp_space.txt deleted file mode 100644 index 444b98e90..000000000 --- a/examples/pdtmc/brp/brp_space.txt +++ /dev/null @@ -1,2 +0,0 @@ -0.000010<=pL<=0.999990, 0.000010<=pK<=0.999990; - diff --git a/examples/pdtmc/brp/models b/examples/pdtmc/brp/models deleted file mode 100644 index b692fffb6..000000000 --- a/examples/pdtmc/brp/models +++ /dev/null @@ -1,2 +0,0 @@ -brp.pm -const N=256,MAX=5 -brp.pm -const N=4096,MAX=5 diff --git a/examples/pdtmc/brp_rewards2/brp_rewards16_2.pm b/examples/pdtmc/brp_rewards2/brp_rewards16_2.pm deleted file mode 100644 index 7145a77ae..000000000 --- a/examples/pdtmc/brp_rewards2/brp_rewards16_2.pm +++ /dev/null @@ -1,148 +0,0 @@ -// bounded retransmission protocol [D'AJJL01] -// gxn/dxp 23/05/2001 - -dtmc - -// number of chunks -const int N = 16; -// maximum number of retransmissions -const int MAX = 2; - -// reliability of channels -const double pL; -const double pK; - -// timeouts -const double TOMsg=0.4; -const double TOAck=0.6; - -module sender - - 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; - - // 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); - // wait_ack - [aB] (s=2) -> (s'=4) & (s_ab'=!s_ab); - [TO_Msg] (s=2) -> (s'=3); - [TO_Ack] (s=2) -> (s'=3); - // retransmit - [aF] (s=3) & (nrtr (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1); - [] (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 - -// prevents more than one file being sent -module tester - - T : bool; - - [NewFile] (T=false) -> (T'=true); - -endmodule - -module channelK - - k : [0..2]; - - // idle - [aF] (k=0) -> pK : (k'=1) + 1-pK : (k'=2); - // sending - [aG] (k=1) -> (k'=0); - // lost - [TO_Msg] (k=2) -> (k'=0); - -endmodule - -module channelL - - l : [0..2]; - - // idle - [aA] (l=0) -> pL : (l'=1) + 1-pL : (l'=2); - // sending - [aB] (l=1) -> (l'=0); - // lost - [TO_Ack] (l=2) -> (l'=0); - -endmodule - -rewards - [TO_Msg] true : TOMsg; - [TO_Ack] true : TOAck; -endrewards - - -label "target" = s=5; - diff --git a/examples/pdtmc/brp_rewards2/brp_rewards2.pm b/examples/pdtmc/brp_rewards2/brp_rewards2.pm deleted file mode 100644 index a8e5eced1..000000000 --- a/examples/pdtmc/brp_rewards2/brp_rewards2.pm +++ /dev/null @@ -1,147 +0,0 @@ -// bounded retransmission protocol [D'AJJL01] -// gxn/dxp 23/05/2001 - -dtmc - -// number of chunks -const int N; -// maximum number of retransmissions -const int MAX; - -// reliability of channels -const double pL; -const double pK; - -// timeouts -const double TOMsg=0.4; -const double TOAck=0.6; - -module sender - - 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; - - // 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); - // wait_ack - [aB] (s=2) -> (s'=4) & (s_ab'=!s_ab); - [TO_Msg] (s=2) -> (s'=3); - [TO_Ack] (s=2) -> (s'=3); - // retransmit - [aF] (s=3) & (nrtr (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1); - [] (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 - -// prevents more than one file being sent -module tester - - T : bool; - - [NewFile] (T=false) -> (T'=true); - -endmodule - -module channelK - - k : [0..2]; - - // idle - [aF] (k=0) -> pK : (k'=1) + 1-pK : (k'=2); - // sending - [aG] (k=1) -> (k'=0); - // lost - [TO_Msg] (k=2) -> (k'=0); - -endmodule - -module channelL - - l : [0..2]; - - // idle - [aA] (l=0) -> pL : (l'=1) + 1-pL : (l'=2); - // sending - [aB] (l=1) -> (l'=0); - // lost - [TO_Ack] (l=2) -> (l'=0); - -endmodule - -rewards - [TO_Msg] true : TOMsg; - [TO_Ack] true : TOAck; -endrewards - -label "fatal" = s=5 & T; -label "false_neg" = srep=1 & rrep=3 & recv; diff --git a/examples/pdtmc/brp_rewards2/brp_rewards2.prctl b/examples/pdtmc/brp_rewards2/brp_rewards2.prctl deleted file mode 100644 index 3a194c0be..000000000 --- a/examples/pdtmc/brp_rewards2/brp_rewards2.prctl +++ /dev/null @@ -1,2 +0,0 @@ -R<3 [ F ((s=5) | (s=0&srep=3)) ] - diff --git a/examples/pdtmc/brp_rewards2/brp_rewards256_5.pm b/examples/pdtmc/brp_rewards2/brp_rewards256_5.pm deleted file mode 100644 index 6d274991a..000000000 --- a/examples/pdtmc/brp_rewards2/brp_rewards256_5.pm +++ /dev/null @@ -1,147 +0,0 @@ -// bounded retransmission protocol [D'AJJL01] -// gxn/dxp 23/05/2001 - -dtmc - -// number of chunks -const int N = 256; -// maximum number of retransmissions -const int MAX = 5; - -// reliability of channels -const double pL; -const double pK; - -// timeouts -const double TOMsg=0.4; -const double TOAck=0.6; - - -module sender - - 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; - - // 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); - // wait_ack - [aB] (s=2) -> (s'=4) & (s_ab'=!s_ab); - [TO_Msg] (s=2) -> (s'=3); - [TO_Ack] (s=2) -> (s'=3); - // retransmit - [aF] (s=3) & (nrtr (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1); - [] (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 - -// prevents more than one file being sent -module tester - - T : bool; - - [NewFile] (T=false) -> (T'=true); - -endmodule - -module channelK - - k : [0..2]; - - // idle - [aF] (k=0) -> pK : (k'=1) + 1-pK : (k'=2); - // sending - [aG] (k=1) -> (k'=0); - // lost - [TO_Msg] (k=2) -> (k'=0); - -endmodule - -module channelL - - l : [0..2]; - - // idle - [aA] (l=0) -> pL : (l'=1) + 1-pL : (l'=2); - // sending - [aB] (l=1) -> (l'=0); - // lost - [TO_Ack] (l=2) -> (l'=0); - -endmodule - -rewards - [TO_Msg] true : TOMsg; - [TO_Ack] true : TOAck; -endrewards - - diff --git a/examples/pdtmc/brp_rewards2/brp_rewards2_regions.txt b/examples/pdtmc/brp_rewards2/brp_rewards2_regions.txt deleted file mode 100644 index c1c19ee3b..000000000 --- a/examples/pdtmc/brp_rewards2/brp_rewards2_regions.txt +++ /dev/null @@ -1,625 +0,0 @@ -0.000010<=pL<=0.040000, 0.000010<=pK<=0.040000; -0.000010<=pL<=0.040000, 0.040000<=pK<=0.080000; -0.000010<=pL<=0.040000, 0.080000<=pK<=0.120000; -0.000010<=pL<=0.040000, 0.120000<=pK<=0.160000; -0.000010<=pL<=0.040000, 0.160000<=pK<=0.200000; -0.000010<=pL<=0.040000, 0.200000<=pK<=0.240000; -0.000010<=pL<=0.040000, 0.240000<=pK<=0.280000; -0.000010<=pL<=0.040000, 0.280000<=pK<=0.320000; -0.000010<=pL<=0.040000, 0.320000<=pK<=0.360000; -0.000010<=pL<=0.040000, 0.360000<=pK<=0.400000; -0.000010<=pL<=0.040000, 0.400000<=pK<=0.440000; -0.000010<=pL<=0.040000, 0.440000<=pK<=0.480000; -0.000010<=pL<=0.040000, 0.480000<=pK<=0.520000; -0.000010<=pL<=0.040000, 0.520000<=pK<=0.560000; -0.000010<=pL<=0.040000, 0.560000<=pK<=0.600000; -0.000010<=pL<=0.040000, 0.600000<=pK<=0.640000; -0.000010<=pL<=0.040000, 0.640000<=pK<=0.680000; -0.000010<=pL<=0.040000, 0.680000<=pK<=0.720000; -0.000010<=pL<=0.040000, 0.720000<=pK<=0.760000; -0.000010<=pL<=0.040000, 0.760000<=pK<=0.800000; -0.000010<=pL<=0.040000, 0.800000<=pK<=0.840000; -0.000010<=pL<=0.040000, 0.840000<=pK<=0.880000; -0.000010<=pL<=0.040000, 0.880000<=pK<=0.920000; -0.000010<=pL<=0.040000, 0.920000<=pK<=0.960000; -0.000010<=pL<=0.040000, 0.960000<=pK<=0.999990; -0.040000<=pL<=0.080000, 0.000010<=pK<=0.040000; -0.040000<=pL<=0.080000, 0.040000<=pK<=0.080000; -0.040000<=pL<=0.080000, 0.080000<=pK<=0.120000; -0.040000<=pL<=0.080000, 0.120000<=pK<=0.160000; -0.040000<=pL<=0.080000, 0.160000<=pK<=0.200000; -0.040000<=pL<=0.080000, 0.200000<=pK<=0.240000; -0.040000<=pL<=0.080000, 0.240000<=pK<=0.280000; -0.040000<=pL<=0.080000, 0.280000<=pK<=0.320000; -0.040000<=pL<=0.080000, 0.320000<=pK<=0.360000; -0.040000<=pL<=0.080000, 0.360000<=pK<=0.400000; -0.040000<=pL<=0.080000, 0.400000<=pK<=0.440000; -0.040000<=pL<=0.080000, 0.440000<=pK<=0.480000; -0.040000<=pL<=0.080000, 0.480000<=pK<=0.520000; -0.040000<=pL<=0.080000, 0.520000<=pK<=0.560000; -0.040000<=pL<=0.080000, 0.560000<=pK<=0.600000; -0.040000<=pL<=0.080000, 0.600000<=pK<=0.640000; -0.040000<=pL<=0.080000, 0.640000<=pK<=0.680000; -0.040000<=pL<=0.080000, 0.680000<=pK<=0.720000; -0.040000<=pL<=0.080000, 0.720000<=pK<=0.760000; -0.040000<=pL<=0.080000, 0.760000<=pK<=0.800000; -0.040000<=pL<=0.080000, 0.800000<=pK<=0.840000; -0.040000<=pL<=0.080000, 0.840000<=pK<=0.880000; -0.040000<=pL<=0.080000, 0.880000<=pK<=0.920000; -0.040000<=pL<=0.080000, 0.920000<=pK<=0.960000; -0.040000<=pL<=0.080000, 0.960000<=pK<=0.999990; -0.080000<=pL<=0.120000, 0.000010<=pK<=0.040000; -0.080000<=pL<=0.120000, 0.040000<=pK<=0.080000; -0.080000<=pL<=0.120000, 0.080000<=pK<=0.120000; -0.080000<=pL<=0.120000, 0.120000<=pK<=0.160000; -0.080000<=pL<=0.120000, 0.160000<=pK<=0.200000; -0.080000<=pL<=0.120000, 0.200000<=pK<=0.240000; -0.080000<=pL<=0.120000, 0.240000<=pK<=0.280000; -0.080000<=pL<=0.120000, 0.280000<=pK<=0.320000; -0.080000<=pL<=0.120000, 0.320000<=pK<=0.360000; -0.080000<=pL<=0.120000, 0.360000<=pK<=0.400000; -0.080000<=pL<=0.120000, 0.400000<=pK<=0.440000; -0.080000<=pL<=0.120000, 0.440000<=pK<=0.480000; -0.080000<=pL<=0.120000, 0.480000<=pK<=0.520000; -0.080000<=pL<=0.120000, 0.520000<=pK<=0.560000; -0.080000<=pL<=0.120000, 0.560000<=pK<=0.600000; -0.080000<=pL<=0.120000, 0.600000<=pK<=0.640000; -0.080000<=pL<=0.120000, 0.640000<=pK<=0.680000; -0.080000<=pL<=0.120000, 0.680000<=pK<=0.720000; -0.080000<=pL<=0.120000, 0.720000<=pK<=0.760000; -0.080000<=pL<=0.120000, 0.760000<=pK<=0.800000; -0.080000<=pL<=0.120000, 0.800000<=pK<=0.840000; -0.080000<=pL<=0.120000, 0.840000<=pK<=0.880000; -0.080000<=pL<=0.120000, 0.880000<=pK<=0.920000; -0.080000<=pL<=0.120000, 0.920000<=pK<=0.960000; -0.080000<=pL<=0.120000, 0.960000<=pK<=0.999990; -0.120000<=pL<=0.160000, 0.000010<=pK<=0.040000; -0.120000<=pL<=0.160000, 0.040000<=pK<=0.080000; -0.120000<=pL<=0.160000, 0.080000<=pK<=0.120000; -0.120000<=pL<=0.160000, 0.120000<=pK<=0.160000; -0.120000<=pL<=0.160000, 0.160000<=pK<=0.200000; -0.120000<=pL<=0.160000, 0.200000<=pK<=0.240000; -0.120000<=pL<=0.160000, 0.240000<=pK<=0.280000; -0.120000<=pL<=0.160000, 0.280000<=pK<=0.320000; -0.120000<=pL<=0.160000, 0.320000<=pK<=0.360000; -0.120000<=pL<=0.160000, 0.360000<=pK<=0.400000; -0.120000<=pL<=0.160000, 0.400000<=pK<=0.440000; -0.120000<=pL<=0.160000, 0.440000<=pK<=0.480000; -0.120000<=pL<=0.160000, 0.480000<=pK<=0.520000; -0.120000<=pL<=0.160000, 0.520000<=pK<=0.560000; -0.120000<=pL<=0.160000, 0.560000<=pK<=0.600000; -0.120000<=pL<=0.160000, 0.600000<=pK<=0.640000; -0.120000<=pL<=0.160000, 0.640000<=pK<=0.680000; -0.120000<=pL<=0.160000, 0.680000<=pK<=0.720000; -0.120000<=pL<=0.160000, 0.720000<=pK<=0.760000; -0.120000<=pL<=0.160000, 0.760000<=pK<=0.800000; -0.120000<=pL<=0.160000, 0.800000<=pK<=0.840000; -0.120000<=pL<=0.160000, 0.840000<=pK<=0.880000; -0.120000<=pL<=0.160000, 0.880000<=pK<=0.920000; -0.120000<=pL<=0.160000, 0.920000<=pK<=0.960000; -0.120000<=pL<=0.160000, 0.960000<=pK<=0.999990; -0.160000<=pL<=0.200000, 0.000010<=pK<=0.040000; -0.160000<=pL<=0.200000, 0.040000<=pK<=0.080000; -0.160000<=pL<=0.200000, 0.080000<=pK<=0.120000; -0.160000<=pL<=0.200000, 0.120000<=pK<=0.160000; -0.160000<=pL<=0.200000, 0.160000<=pK<=0.200000; -0.160000<=pL<=0.200000, 0.200000<=pK<=0.240000; -0.160000<=pL<=0.200000, 0.240000<=pK<=0.280000; -0.160000<=pL<=0.200000, 0.280000<=pK<=0.320000; -0.160000<=pL<=0.200000, 0.320000<=pK<=0.360000; -0.160000<=pL<=0.200000, 0.360000<=pK<=0.400000; -0.160000<=pL<=0.200000, 0.400000<=pK<=0.440000; -0.160000<=pL<=0.200000, 0.440000<=pK<=0.480000; -0.160000<=pL<=0.200000, 0.480000<=pK<=0.520000; -0.160000<=pL<=0.200000, 0.520000<=pK<=0.560000; -0.160000<=pL<=0.200000, 0.560000<=pK<=0.600000; -0.160000<=pL<=0.200000, 0.600000<=pK<=0.640000; -0.160000<=pL<=0.200000, 0.640000<=pK<=0.680000; -0.160000<=pL<=0.200000, 0.680000<=pK<=0.720000; -0.160000<=pL<=0.200000, 0.720000<=pK<=0.760000; -0.160000<=pL<=0.200000, 0.760000<=pK<=0.800000; -0.160000<=pL<=0.200000, 0.800000<=pK<=0.840000; -0.160000<=pL<=0.200000, 0.840000<=pK<=0.880000; -0.160000<=pL<=0.200000, 0.880000<=pK<=0.920000; -0.160000<=pL<=0.200000, 0.920000<=pK<=0.960000; -0.160000<=pL<=0.200000, 0.960000<=pK<=0.999990; -0.200000<=pL<=0.240000, 0.000010<=pK<=0.040000; -0.200000<=pL<=0.240000, 0.040000<=pK<=0.080000; -0.200000<=pL<=0.240000, 0.080000<=pK<=0.120000; -0.200000<=pL<=0.240000, 0.120000<=pK<=0.160000; -0.200000<=pL<=0.240000, 0.160000<=pK<=0.200000; -0.200000<=pL<=0.240000, 0.200000<=pK<=0.240000; -0.200000<=pL<=0.240000, 0.240000<=pK<=0.280000; -0.200000<=pL<=0.240000, 0.280000<=pK<=0.320000; -0.200000<=pL<=0.240000, 0.320000<=pK<=0.360000; -0.200000<=pL<=0.240000, 0.360000<=pK<=0.400000; -0.200000<=pL<=0.240000, 0.400000<=pK<=0.440000; -0.200000<=pL<=0.240000, 0.440000<=pK<=0.480000; -0.200000<=pL<=0.240000, 0.480000<=pK<=0.520000; -0.200000<=pL<=0.240000, 0.520000<=pK<=0.560000; -0.200000<=pL<=0.240000, 0.560000<=pK<=0.600000; -0.200000<=pL<=0.240000, 0.600000<=pK<=0.640000; -0.200000<=pL<=0.240000, 0.640000<=pK<=0.680000; -0.200000<=pL<=0.240000, 0.680000<=pK<=0.720000; -0.200000<=pL<=0.240000, 0.720000<=pK<=0.760000; -0.200000<=pL<=0.240000, 0.760000<=pK<=0.800000; -0.200000<=pL<=0.240000, 0.800000<=pK<=0.840000; -0.200000<=pL<=0.240000, 0.840000<=pK<=0.880000; -0.200000<=pL<=0.240000, 0.880000<=pK<=0.920000; -0.200000<=pL<=0.240000, 0.920000<=pK<=0.960000; -0.200000<=pL<=0.240000, 0.960000<=pK<=0.999990; -0.240000<=pL<=0.280000, 0.000010<=pK<=0.040000; -0.240000<=pL<=0.280000, 0.040000<=pK<=0.080000; -0.240000<=pL<=0.280000, 0.080000<=pK<=0.120000; -0.240000<=pL<=0.280000, 0.120000<=pK<=0.160000; -0.240000<=pL<=0.280000, 0.160000<=pK<=0.200000; -0.240000<=pL<=0.280000, 0.200000<=pK<=0.240000; -0.240000<=pL<=0.280000, 0.240000<=pK<=0.280000; -0.240000<=pL<=0.280000, 0.280000<=pK<=0.320000; -0.240000<=pL<=0.280000, 0.320000<=pK<=0.360000; -0.240000<=pL<=0.280000, 0.360000<=pK<=0.400000; -0.240000<=pL<=0.280000, 0.400000<=pK<=0.440000; -0.240000<=pL<=0.280000, 0.440000<=pK<=0.480000; -0.240000<=pL<=0.280000, 0.480000<=pK<=0.520000; -0.240000<=pL<=0.280000, 0.520000<=pK<=0.560000; -0.240000<=pL<=0.280000, 0.560000<=pK<=0.600000; -0.240000<=pL<=0.280000, 0.600000<=pK<=0.640000; -0.240000<=pL<=0.280000, 0.640000<=pK<=0.680000; -0.240000<=pL<=0.280000, 0.680000<=pK<=0.720000; -0.240000<=pL<=0.280000, 0.720000<=pK<=0.760000; -0.240000<=pL<=0.280000, 0.760000<=pK<=0.800000; -0.240000<=pL<=0.280000, 0.800000<=pK<=0.840000; -0.240000<=pL<=0.280000, 0.840000<=pK<=0.880000; -0.240000<=pL<=0.280000, 0.880000<=pK<=0.920000; -0.240000<=pL<=0.280000, 0.920000<=pK<=0.960000; -0.240000<=pL<=0.280000, 0.960000<=pK<=0.999990; -0.280000<=pL<=0.320000, 0.000010<=pK<=0.040000; -0.280000<=pL<=0.320000, 0.040000<=pK<=0.080000; -0.280000<=pL<=0.320000, 0.080000<=pK<=0.120000; -0.280000<=pL<=0.320000, 0.120000<=pK<=0.160000; -0.280000<=pL<=0.320000, 0.160000<=pK<=0.200000; -0.280000<=pL<=0.320000, 0.200000<=pK<=0.240000; -0.280000<=pL<=0.320000, 0.240000<=pK<=0.280000; -0.280000<=pL<=0.320000, 0.280000<=pK<=0.320000; -0.280000<=pL<=0.320000, 0.320000<=pK<=0.360000; -0.280000<=pL<=0.320000, 0.360000<=pK<=0.400000; -0.280000<=pL<=0.320000, 0.400000<=pK<=0.440000; -0.280000<=pL<=0.320000, 0.440000<=pK<=0.480000; -0.280000<=pL<=0.320000, 0.480000<=pK<=0.520000; -0.280000<=pL<=0.320000, 0.520000<=pK<=0.560000; -0.280000<=pL<=0.320000, 0.560000<=pK<=0.600000; -0.280000<=pL<=0.320000, 0.600000<=pK<=0.640000; -0.280000<=pL<=0.320000, 0.640000<=pK<=0.680000; -0.280000<=pL<=0.320000, 0.680000<=pK<=0.720000; -0.280000<=pL<=0.320000, 0.720000<=pK<=0.760000; -0.280000<=pL<=0.320000, 0.760000<=pK<=0.800000; -0.280000<=pL<=0.320000, 0.800000<=pK<=0.840000; -0.280000<=pL<=0.320000, 0.840000<=pK<=0.880000; -0.280000<=pL<=0.320000, 0.880000<=pK<=0.920000; -0.280000<=pL<=0.320000, 0.920000<=pK<=0.960000; -0.280000<=pL<=0.320000, 0.960000<=pK<=0.999990; -0.320000<=pL<=0.360000, 0.000010<=pK<=0.040000; -0.320000<=pL<=0.360000, 0.040000<=pK<=0.080000; -0.320000<=pL<=0.360000, 0.080000<=pK<=0.120000; -0.320000<=pL<=0.360000, 0.120000<=pK<=0.160000; -0.320000<=pL<=0.360000, 0.160000<=pK<=0.200000; -0.320000<=pL<=0.360000, 0.200000<=pK<=0.240000; -0.320000<=pL<=0.360000, 0.240000<=pK<=0.280000; -0.320000<=pL<=0.360000, 0.280000<=pK<=0.320000; -0.320000<=pL<=0.360000, 0.320000<=pK<=0.360000; -0.320000<=pL<=0.360000, 0.360000<=pK<=0.400000; -0.320000<=pL<=0.360000, 0.400000<=pK<=0.440000; -0.320000<=pL<=0.360000, 0.440000<=pK<=0.480000; -0.320000<=pL<=0.360000, 0.480000<=pK<=0.520000; -0.320000<=pL<=0.360000, 0.520000<=pK<=0.560000; -0.320000<=pL<=0.360000, 0.560000<=pK<=0.600000; -0.320000<=pL<=0.360000, 0.600000<=pK<=0.640000; -0.320000<=pL<=0.360000, 0.640000<=pK<=0.680000; -0.320000<=pL<=0.360000, 0.680000<=pK<=0.720000; -0.320000<=pL<=0.360000, 0.720000<=pK<=0.760000; -0.320000<=pL<=0.360000, 0.760000<=pK<=0.800000; -0.320000<=pL<=0.360000, 0.800000<=pK<=0.840000; -0.320000<=pL<=0.360000, 0.840000<=pK<=0.880000; -0.320000<=pL<=0.360000, 0.880000<=pK<=0.920000; -0.320000<=pL<=0.360000, 0.920000<=pK<=0.960000; -0.320000<=pL<=0.360000, 0.960000<=pK<=0.999990; -0.360000<=pL<=0.400000, 0.000010<=pK<=0.040000; -0.360000<=pL<=0.400000, 0.040000<=pK<=0.080000; -0.360000<=pL<=0.400000, 0.080000<=pK<=0.120000; -0.360000<=pL<=0.400000, 0.120000<=pK<=0.160000; -0.360000<=pL<=0.400000, 0.160000<=pK<=0.200000; -0.360000<=pL<=0.400000, 0.200000<=pK<=0.240000; -0.360000<=pL<=0.400000, 0.240000<=pK<=0.280000; -0.360000<=pL<=0.400000, 0.280000<=pK<=0.320000; -0.360000<=pL<=0.400000, 0.320000<=pK<=0.360000; -0.360000<=pL<=0.400000, 0.360000<=pK<=0.400000; -0.360000<=pL<=0.400000, 0.400000<=pK<=0.440000; -0.360000<=pL<=0.400000, 0.440000<=pK<=0.480000; -0.360000<=pL<=0.400000, 0.480000<=pK<=0.520000; -0.360000<=pL<=0.400000, 0.520000<=pK<=0.560000; -0.360000<=pL<=0.400000, 0.560000<=pK<=0.600000; -0.360000<=pL<=0.400000, 0.600000<=pK<=0.640000; -0.360000<=pL<=0.400000, 0.640000<=pK<=0.680000; -0.360000<=pL<=0.400000, 0.680000<=pK<=0.720000; -0.360000<=pL<=0.400000, 0.720000<=pK<=0.760000; -0.360000<=pL<=0.400000, 0.760000<=pK<=0.800000; -0.360000<=pL<=0.400000, 0.800000<=pK<=0.840000; -0.360000<=pL<=0.400000, 0.840000<=pK<=0.880000; -0.360000<=pL<=0.400000, 0.880000<=pK<=0.920000; -0.360000<=pL<=0.400000, 0.920000<=pK<=0.960000; -0.360000<=pL<=0.400000, 0.960000<=pK<=0.999990; -0.400000<=pL<=0.440000, 0.000010<=pK<=0.040000; -0.400000<=pL<=0.440000, 0.040000<=pK<=0.080000; -0.400000<=pL<=0.440000, 0.080000<=pK<=0.120000; -0.400000<=pL<=0.440000, 0.120000<=pK<=0.160000; -0.400000<=pL<=0.440000, 0.160000<=pK<=0.200000; -0.400000<=pL<=0.440000, 0.200000<=pK<=0.240000; -0.400000<=pL<=0.440000, 0.240000<=pK<=0.280000; -0.400000<=pL<=0.440000, 0.280000<=pK<=0.320000; -0.400000<=pL<=0.440000, 0.320000<=pK<=0.360000; -0.400000<=pL<=0.440000, 0.360000<=pK<=0.400000; -0.400000<=pL<=0.440000, 0.400000<=pK<=0.440000; -0.400000<=pL<=0.440000, 0.440000<=pK<=0.480000; -0.400000<=pL<=0.440000, 0.480000<=pK<=0.520000; -0.400000<=pL<=0.440000, 0.520000<=pK<=0.560000; -0.400000<=pL<=0.440000, 0.560000<=pK<=0.600000; -0.400000<=pL<=0.440000, 0.600000<=pK<=0.640000; -0.400000<=pL<=0.440000, 0.640000<=pK<=0.680000; -0.400000<=pL<=0.440000, 0.680000<=pK<=0.720000; -0.400000<=pL<=0.440000, 0.720000<=pK<=0.760000; -0.400000<=pL<=0.440000, 0.760000<=pK<=0.800000; -0.400000<=pL<=0.440000, 0.800000<=pK<=0.840000; -0.400000<=pL<=0.440000, 0.840000<=pK<=0.880000; -0.400000<=pL<=0.440000, 0.880000<=pK<=0.920000; -0.400000<=pL<=0.440000, 0.920000<=pK<=0.960000; -0.400000<=pL<=0.440000, 0.960000<=pK<=0.999990; -0.440000<=pL<=0.480000, 0.000010<=pK<=0.040000; -0.440000<=pL<=0.480000, 0.040000<=pK<=0.080000; -0.440000<=pL<=0.480000, 0.080000<=pK<=0.120000; -0.440000<=pL<=0.480000, 0.120000<=pK<=0.160000; -0.440000<=pL<=0.480000, 0.160000<=pK<=0.200000; -0.440000<=pL<=0.480000, 0.200000<=pK<=0.240000; -0.440000<=pL<=0.480000, 0.240000<=pK<=0.280000; -0.440000<=pL<=0.480000, 0.280000<=pK<=0.320000; -0.440000<=pL<=0.480000, 0.320000<=pK<=0.360000; -0.440000<=pL<=0.480000, 0.360000<=pK<=0.400000; -0.440000<=pL<=0.480000, 0.400000<=pK<=0.440000; -0.440000<=pL<=0.480000, 0.440000<=pK<=0.480000; -0.440000<=pL<=0.480000, 0.480000<=pK<=0.520000; -0.440000<=pL<=0.480000, 0.520000<=pK<=0.560000; -0.440000<=pL<=0.480000, 0.560000<=pK<=0.600000; -0.440000<=pL<=0.480000, 0.600000<=pK<=0.640000; -0.440000<=pL<=0.480000, 0.640000<=pK<=0.680000; -0.440000<=pL<=0.480000, 0.680000<=pK<=0.720000; -0.440000<=pL<=0.480000, 0.720000<=pK<=0.760000; -0.440000<=pL<=0.480000, 0.760000<=pK<=0.800000; -0.440000<=pL<=0.480000, 0.800000<=pK<=0.840000; -0.440000<=pL<=0.480000, 0.840000<=pK<=0.880000; -0.440000<=pL<=0.480000, 0.880000<=pK<=0.920000; -0.440000<=pL<=0.480000, 0.920000<=pK<=0.960000; -0.440000<=pL<=0.480000, 0.960000<=pK<=0.999990; -0.480000<=pL<=0.520000, 0.000010<=pK<=0.040000; -0.480000<=pL<=0.520000, 0.040000<=pK<=0.080000; -0.480000<=pL<=0.520000, 0.080000<=pK<=0.120000; -0.480000<=pL<=0.520000, 0.120000<=pK<=0.160000; -0.480000<=pL<=0.520000, 0.160000<=pK<=0.200000; -0.480000<=pL<=0.520000, 0.200000<=pK<=0.240000; -0.480000<=pL<=0.520000, 0.240000<=pK<=0.280000; -0.480000<=pL<=0.520000, 0.280000<=pK<=0.320000; -0.480000<=pL<=0.520000, 0.320000<=pK<=0.360000; -0.480000<=pL<=0.520000, 0.360000<=pK<=0.400000; -0.480000<=pL<=0.520000, 0.400000<=pK<=0.440000; -0.480000<=pL<=0.520000, 0.440000<=pK<=0.480000; -0.480000<=pL<=0.520000, 0.480000<=pK<=0.520000; -0.480000<=pL<=0.520000, 0.520000<=pK<=0.560000; -0.480000<=pL<=0.520000, 0.560000<=pK<=0.600000; -0.480000<=pL<=0.520000, 0.600000<=pK<=0.640000; -0.480000<=pL<=0.520000, 0.640000<=pK<=0.680000; -0.480000<=pL<=0.520000, 0.680000<=pK<=0.720000; -0.480000<=pL<=0.520000, 0.720000<=pK<=0.760000; -0.480000<=pL<=0.520000, 0.760000<=pK<=0.800000; -0.480000<=pL<=0.520000, 0.800000<=pK<=0.840000; -0.480000<=pL<=0.520000, 0.840000<=pK<=0.880000; -0.480000<=pL<=0.520000, 0.880000<=pK<=0.920000; -0.480000<=pL<=0.520000, 0.920000<=pK<=0.960000; -0.480000<=pL<=0.520000, 0.960000<=pK<=0.999990; -0.520000<=pL<=0.560000, 0.000010<=pK<=0.040000; -0.520000<=pL<=0.560000, 0.040000<=pK<=0.080000; -0.520000<=pL<=0.560000, 0.080000<=pK<=0.120000; -0.520000<=pL<=0.560000, 0.120000<=pK<=0.160000; -0.520000<=pL<=0.560000, 0.160000<=pK<=0.200000; -0.520000<=pL<=0.560000, 0.200000<=pK<=0.240000; -0.520000<=pL<=0.560000, 0.240000<=pK<=0.280000; -0.520000<=pL<=0.560000, 0.280000<=pK<=0.320000; -0.520000<=pL<=0.560000, 0.320000<=pK<=0.360000; -0.520000<=pL<=0.560000, 0.360000<=pK<=0.400000; -0.520000<=pL<=0.560000, 0.400000<=pK<=0.440000; -0.520000<=pL<=0.560000, 0.440000<=pK<=0.480000; -0.520000<=pL<=0.560000, 0.480000<=pK<=0.520000; -0.520000<=pL<=0.560000, 0.520000<=pK<=0.560000; -0.520000<=pL<=0.560000, 0.560000<=pK<=0.600000; -0.520000<=pL<=0.560000, 0.600000<=pK<=0.640000; -0.520000<=pL<=0.560000, 0.640000<=pK<=0.680000; -0.520000<=pL<=0.560000, 0.680000<=pK<=0.720000; -0.520000<=pL<=0.560000, 0.720000<=pK<=0.760000; -0.520000<=pL<=0.560000, 0.760000<=pK<=0.800000; -0.520000<=pL<=0.560000, 0.800000<=pK<=0.840000; -0.520000<=pL<=0.560000, 0.840000<=pK<=0.880000; -0.520000<=pL<=0.560000, 0.880000<=pK<=0.920000; -0.520000<=pL<=0.560000, 0.920000<=pK<=0.960000; -0.520000<=pL<=0.560000, 0.960000<=pK<=0.999990; -0.560000<=pL<=0.600000, 0.000010<=pK<=0.040000; -0.560000<=pL<=0.600000, 0.040000<=pK<=0.080000; -0.560000<=pL<=0.600000, 0.080000<=pK<=0.120000; -0.560000<=pL<=0.600000, 0.120000<=pK<=0.160000; -0.560000<=pL<=0.600000, 0.160000<=pK<=0.200000; -0.560000<=pL<=0.600000, 0.200000<=pK<=0.240000; -0.560000<=pL<=0.600000, 0.240000<=pK<=0.280000; -0.560000<=pL<=0.600000, 0.280000<=pK<=0.320000; -0.560000<=pL<=0.600000, 0.320000<=pK<=0.360000; -0.560000<=pL<=0.600000, 0.360000<=pK<=0.400000; -0.560000<=pL<=0.600000, 0.400000<=pK<=0.440000; -0.560000<=pL<=0.600000, 0.440000<=pK<=0.480000; -0.560000<=pL<=0.600000, 0.480000<=pK<=0.520000; -0.560000<=pL<=0.600000, 0.520000<=pK<=0.560000; -0.560000<=pL<=0.600000, 0.560000<=pK<=0.600000; -0.560000<=pL<=0.600000, 0.600000<=pK<=0.640000; -0.560000<=pL<=0.600000, 0.640000<=pK<=0.680000; -0.560000<=pL<=0.600000, 0.680000<=pK<=0.720000; -0.560000<=pL<=0.600000, 0.720000<=pK<=0.760000; -0.560000<=pL<=0.600000, 0.760000<=pK<=0.800000; -0.560000<=pL<=0.600000, 0.800000<=pK<=0.840000; -0.560000<=pL<=0.600000, 0.840000<=pK<=0.880000; -0.560000<=pL<=0.600000, 0.880000<=pK<=0.920000; -0.560000<=pL<=0.600000, 0.920000<=pK<=0.960000; -0.560000<=pL<=0.600000, 0.960000<=pK<=0.999990; -0.600000<=pL<=0.640000, 0.000010<=pK<=0.040000; -0.600000<=pL<=0.640000, 0.040000<=pK<=0.080000; -0.600000<=pL<=0.640000, 0.080000<=pK<=0.120000; -0.600000<=pL<=0.640000, 0.120000<=pK<=0.160000; -0.600000<=pL<=0.640000, 0.160000<=pK<=0.200000; -0.600000<=pL<=0.640000, 0.200000<=pK<=0.240000; -0.600000<=pL<=0.640000, 0.240000<=pK<=0.280000; -0.600000<=pL<=0.640000, 0.280000<=pK<=0.320000; -0.600000<=pL<=0.640000, 0.320000<=pK<=0.360000; -0.600000<=pL<=0.640000, 0.360000<=pK<=0.400000; -0.600000<=pL<=0.640000, 0.400000<=pK<=0.440000; -0.600000<=pL<=0.640000, 0.440000<=pK<=0.480000; -0.600000<=pL<=0.640000, 0.480000<=pK<=0.520000; -0.600000<=pL<=0.640000, 0.520000<=pK<=0.560000; -0.600000<=pL<=0.640000, 0.560000<=pK<=0.600000; -0.600000<=pL<=0.640000, 0.600000<=pK<=0.640000; -0.600000<=pL<=0.640000, 0.640000<=pK<=0.680000; -0.600000<=pL<=0.640000, 0.680000<=pK<=0.720000; -0.600000<=pL<=0.640000, 0.720000<=pK<=0.760000; -0.600000<=pL<=0.640000, 0.760000<=pK<=0.800000; -0.600000<=pL<=0.640000, 0.800000<=pK<=0.840000; -0.600000<=pL<=0.640000, 0.840000<=pK<=0.880000; -0.600000<=pL<=0.640000, 0.880000<=pK<=0.920000; -0.600000<=pL<=0.640000, 0.920000<=pK<=0.960000; -0.600000<=pL<=0.640000, 0.960000<=pK<=0.999990; -0.640000<=pL<=0.680000, 0.000010<=pK<=0.040000; -0.640000<=pL<=0.680000, 0.040000<=pK<=0.080000; -0.640000<=pL<=0.680000, 0.080000<=pK<=0.120000; -0.640000<=pL<=0.680000, 0.120000<=pK<=0.160000; -0.640000<=pL<=0.680000, 0.160000<=pK<=0.200000; -0.640000<=pL<=0.680000, 0.200000<=pK<=0.240000; -0.640000<=pL<=0.680000, 0.240000<=pK<=0.280000; -0.640000<=pL<=0.680000, 0.280000<=pK<=0.320000; -0.640000<=pL<=0.680000, 0.320000<=pK<=0.360000; -0.640000<=pL<=0.680000, 0.360000<=pK<=0.400000; -0.640000<=pL<=0.680000, 0.400000<=pK<=0.440000; -0.640000<=pL<=0.680000, 0.440000<=pK<=0.480000; -0.640000<=pL<=0.680000, 0.480000<=pK<=0.520000; -0.640000<=pL<=0.680000, 0.520000<=pK<=0.560000; -0.640000<=pL<=0.680000, 0.560000<=pK<=0.600000; -0.640000<=pL<=0.680000, 0.600000<=pK<=0.640000; -0.640000<=pL<=0.680000, 0.640000<=pK<=0.680000; -0.640000<=pL<=0.680000, 0.680000<=pK<=0.720000; -0.640000<=pL<=0.680000, 0.720000<=pK<=0.760000; -0.640000<=pL<=0.680000, 0.760000<=pK<=0.800000; -0.640000<=pL<=0.680000, 0.800000<=pK<=0.840000; -0.640000<=pL<=0.680000, 0.840000<=pK<=0.880000; -0.640000<=pL<=0.680000, 0.880000<=pK<=0.920000; -0.640000<=pL<=0.680000, 0.920000<=pK<=0.960000; -0.640000<=pL<=0.680000, 0.960000<=pK<=0.999990; -0.680000<=pL<=0.720000, 0.000010<=pK<=0.040000; -0.680000<=pL<=0.720000, 0.040000<=pK<=0.080000; -0.680000<=pL<=0.720000, 0.080000<=pK<=0.120000; -0.680000<=pL<=0.720000, 0.120000<=pK<=0.160000; -0.680000<=pL<=0.720000, 0.160000<=pK<=0.200000; -0.680000<=pL<=0.720000, 0.200000<=pK<=0.240000; -0.680000<=pL<=0.720000, 0.240000<=pK<=0.280000; -0.680000<=pL<=0.720000, 0.280000<=pK<=0.320000; -0.680000<=pL<=0.720000, 0.320000<=pK<=0.360000; -0.680000<=pL<=0.720000, 0.360000<=pK<=0.400000; -0.680000<=pL<=0.720000, 0.400000<=pK<=0.440000; -0.680000<=pL<=0.720000, 0.440000<=pK<=0.480000; -0.680000<=pL<=0.720000, 0.480000<=pK<=0.520000; -0.680000<=pL<=0.720000, 0.520000<=pK<=0.560000; -0.680000<=pL<=0.720000, 0.560000<=pK<=0.600000; -0.680000<=pL<=0.720000, 0.600000<=pK<=0.640000; -0.680000<=pL<=0.720000, 0.640000<=pK<=0.680000; -0.680000<=pL<=0.720000, 0.680000<=pK<=0.720000; -0.680000<=pL<=0.720000, 0.720000<=pK<=0.760000; -0.680000<=pL<=0.720000, 0.760000<=pK<=0.800000; -0.680000<=pL<=0.720000, 0.800000<=pK<=0.840000; -0.680000<=pL<=0.720000, 0.840000<=pK<=0.880000; -0.680000<=pL<=0.720000, 0.880000<=pK<=0.920000; -0.680000<=pL<=0.720000, 0.920000<=pK<=0.960000; -0.680000<=pL<=0.720000, 0.960000<=pK<=0.999990; -0.720000<=pL<=0.760000, 0.000010<=pK<=0.040000; -0.720000<=pL<=0.760000, 0.040000<=pK<=0.080000; -0.720000<=pL<=0.760000, 0.080000<=pK<=0.120000; -0.720000<=pL<=0.760000, 0.120000<=pK<=0.160000; -0.720000<=pL<=0.760000, 0.160000<=pK<=0.200000; -0.720000<=pL<=0.760000, 0.200000<=pK<=0.240000; -0.720000<=pL<=0.760000, 0.240000<=pK<=0.280000; -0.720000<=pL<=0.760000, 0.280000<=pK<=0.320000; -0.720000<=pL<=0.760000, 0.320000<=pK<=0.360000; -0.720000<=pL<=0.760000, 0.360000<=pK<=0.400000; -0.720000<=pL<=0.760000, 0.400000<=pK<=0.440000; -0.720000<=pL<=0.760000, 0.440000<=pK<=0.480000; -0.720000<=pL<=0.760000, 0.480000<=pK<=0.520000; -0.720000<=pL<=0.760000, 0.520000<=pK<=0.560000; -0.720000<=pL<=0.760000, 0.560000<=pK<=0.600000; -0.720000<=pL<=0.760000, 0.600000<=pK<=0.640000; -0.720000<=pL<=0.760000, 0.640000<=pK<=0.680000; -0.720000<=pL<=0.760000, 0.680000<=pK<=0.720000; -0.720000<=pL<=0.760000, 0.720000<=pK<=0.760000; -0.720000<=pL<=0.760000, 0.760000<=pK<=0.800000; -0.720000<=pL<=0.760000, 0.800000<=pK<=0.840000; -0.720000<=pL<=0.760000, 0.840000<=pK<=0.880000; -0.720000<=pL<=0.760000, 0.880000<=pK<=0.920000; -0.720000<=pL<=0.760000, 0.920000<=pK<=0.960000; -0.720000<=pL<=0.760000, 0.960000<=pK<=0.999990; -0.760000<=pL<=0.800000, 0.000010<=pK<=0.040000; -0.760000<=pL<=0.800000, 0.040000<=pK<=0.080000; -0.760000<=pL<=0.800000, 0.080000<=pK<=0.120000; -0.760000<=pL<=0.800000, 0.120000<=pK<=0.160000; -0.760000<=pL<=0.800000, 0.160000<=pK<=0.200000; -0.760000<=pL<=0.800000, 0.200000<=pK<=0.240000; -0.760000<=pL<=0.800000, 0.240000<=pK<=0.280000; -0.760000<=pL<=0.800000, 0.280000<=pK<=0.320000; -0.760000<=pL<=0.800000, 0.320000<=pK<=0.360000; -0.760000<=pL<=0.800000, 0.360000<=pK<=0.400000; -0.760000<=pL<=0.800000, 0.400000<=pK<=0.440000; -0.760000<=pL<=0.800000, 0.440000<=pK<=0.480000; -0.760000<=pL<=0.800000, 0.480000<=pK<=0.520000; -0.760000<=pL<=0.800000, 0.520000<=pK<=0.560000; -0.760000<=pL<=0.800000, 0.560000<=pK<=0.600000; -0.760000<=pL<=0.800000, 0.600000<=pK<=0.640000; -0.760000<=pL<=0.800000, 0.640000<=pK<=0.680000; -0.760000<=pL<=0.800000, 0.680000<=pK<=0.720000; -0.760000<=pL<=0.800000, 0.720000<=pK<=0.760000; -0.760000<=pL<=0.800000, 0.760000<=pK<=0.800000; -0.760000<=pL<=0.800000, 0.800000<=pK<=0.840000; -0.760000<=pL<=0.800000, 0.840000<=pK<=0.880000; -0.760000<=pL<=0.800000, 0.880000<=pK<=0.920000; -0.760000<=pL<=0.800000, 0.920000<=pK<=0.960000; -0.760000<=pL<=0.800000, 0.960000<=pK<=0.999990; -0.800000<=pL<=0.840000, 0.000010<=pK<=0.040000; -0.800000<=pL<=0.840000, 0.040000<=pK<=0.080000; -0.800000<=pL<=0.840000, 0.080000<=pK<=0.120000; -0.800000<=pL<=0.840000, 0.120000<=pK<=0.160000; -0.800000<=pL<=0.840000, 0.160000<=pK<=0.200000; -0.800000<=pL<=0.840000, 0.200000<=pK<=0.240000; -0.800000<=pL<=0.840000, 0.240000<=pK<=0.280000; -0.800000<=pL<=0.840000, 0.280000<=pK<=0.320000; -0.800000<=pL<=0.840000, 0.320000<=pK<=0.360000; -0.800000<=pL<=0.840000, 0.360000<=pK<=0.400000; -0.800000<=pL<=0.840000, 0.400000<=pK<=0.440000; -0.800000<=pL<=0.840000, 0.440000<=pK<=0.480000; -0.800000<=pL<=0.840000, 0.480000<=pK<=0.520000; -0.800000<=pL<=0.840000, 0.520000<=pK<=0.560000; -0.800000<=pL<=0.840000, 0.560000<=pK<=0.600000; -0.800000<=pL<=0.840000, 0.600000<=pK<=0.640000; -0.800000<=pL<=0.840000, 0.640000<=pK<=0.680000; -0.800000<=pL<=0.840000, 0.680000<=pK<=0.720000; -0.800000<=pL<=0.840000, 0.720000<=pK<=0.760000; -0.800000<=pL<=0.840000, 0.760000<=pK<=0.800000; -0.800000<=pL<=0.840000, 0.800000<=pK<=0.840000; -0.800000<=pL<=0.840000, 0.840000<=pK<=0.880000; -0.800000<=pL<=0.840000, 0.880000<=pK<=0.920000; -0.800000<=pL<=0.840000, 0.920000<=pK<=0.960000; -0.800000<=pL<=0.840000, 0.960000<=pK<=0.999990; -0.840000<=pL<=0.880000, 0.000010<=pK<=0.040000; -0.840000<=pL<=0.880000, 0.040000<=pK<=0.080000; -0.840000<=pL<=0.880000, 0.080000<=pK<=0.120000; -0.840000<=pL<=0.880000, 0.120000<=pK<=0.160000; -0.840000<=pL<=0.880000, 0.160000<=pK<=0.200000; -0.840000<=pL<=0.880000, 0.200000<=pK<=0.240000; -0.840000<=pL<=0.880000, 0.240000<=pK<=0.280000; -0.840000<=pL<=0.880000, 0.280000<=pK<=0.320000; -0.840000<=pL<=0.880000, 0.320000<=pK<=0.360000; -0.840000<=pL<=0.880000, 0.360000<=pK<=0.400000; -0.840000<=pL<=0.880000, 0.400000<=pK<=0.440000; -0.840000<=pL<=0.880000, 0.440000<=pK<=0.480000; -0.840000<=pL<=0.880000, 0.480000<=pK<=0.520000; -0.840000<=pL<=0.880000, 0.520000<=pK<=0.560000; -0.840000<=pL<=0.880000, 0.560000<=pK<=0.600000; -0.840000<=pL<=0.880000, 0.600000<=pK<=0.640000; -0.840000<=pL<=0.880000, 0.640000<=pK<=0.680000; -0.840000<=pL<=0.880000, 0.680000<=pK<=0.720000; -0.840000<=pL<=0.880000, 0.720000<=pK<=0.760000; -0.840000<=pL<=0.880000, 0.760000<=pK<=0.800000; -0.840000<=pL<=0.880000, 0.800000<=pK<=0.840000; -0.840000<=pL<=0.880000, 0.840000<=pK<=0.880000; -0.840000<=pL<=0.880000, 0.880000<=pK<=0.920000; -0.840000<=pL<=0.880000, 0.920000<=pK<=0.960000; -0.840000<=pL<=0.880000, 0.960000<=pK<=0.999990; -0.880000<=pL<=0.920000, 0.000010<=pK<=0.040000; -0.880000<=pL<=0.920000, 0.040000<=pK<=0.080000; -0.880000<=pL<=0.920000, 0.080000<=pK<=0.120000; -0.880000<=pL<=0.920000, 0.120000<=pK<=0.160000; -0.880000<=pL<=0.920000, 0.160000<=pK<=0.200000; -0.880000<=pL<=0.920000, 0.200000<=pK<=0.240000; -0.880000<=pL<=0.920000, 0.240000<=pK<=0.280000; -0.880000<=pL<=0.920000, 0.280000<=pK<=0.320000; -0.880000<=pL<=0.920000, 0.320000<=pK<=0.360000; -0.880000<=pL<=0.920000, 0.360000<=pK<=0.400000; -0.880000<=pL<=0.920000, 0.400000<=pK<=0.440000; -0.880000<=pL<=0.920000, 0.440000<=pK<=0.480000; -0.880000<=pL<=0.920000, 0.480000<=pK<=0.520000; -0.880000<=pL<=0.920000, 0.520000<=pK<=0.560000; -0.880000<=pL<=0.920000, 0.560000<=pK<=0.600000; -0.880000<=pL<=0.920000, 0.600000<=pK<=0.640000; -0.880000<=pL<=0.920000, 0.640000<=pK<=0.680000; -0.880000<=pL<=0.920000, 0.680000<=pK<=0.720000; -0.880000<=pL<=0.920000, 0.720000<=pK<=0.760000; -0.880000<=pL<=0.920000, 0.760000<=pK<=0.800000; -0.880000<=pL<=0.920000, 0.800000<=pK<=0.840000; -0.880000<=pL<=0.920000, 0.840000<=pK<=0.880000; -0.880000<=pL<=0.920000, 0.880000<=pK<=0.920000; -0.880000<=pL<=0.920000, 0.920000<=pK<=0.960000; -0.880000<=pL<=0.920000, 0.960000<=pK<=0.999990; -0.920000<=pL<=0.960000, 0.000010<=pK<=0.040000; -0.920000<=pL<=0.960000, 0.040000<=pK<=0.080000; -0.920000<=pL<=0.960000, 0.080000<=pK<=0.120000; -0.920000<=pL<=0.960000, 0.120000<=pK<=0.160000; -0.920000<=pL<=0.960000, 0.160000<=pK<=0.200000; -0.920000<=pL<=0.960000, 0.200000<=pK<=0.240000; -0.920000<=pL<=0.960000, 0.240000<=pK<=0.280000; -0.920000<=pL<=0.960000, 0.280000<=pK<=0.320000; -0.920000<=pL<=0.960000, 0.320000<=pK<=0.360000; -0.920000<=pL<=0.960000, 0.360000<=pK<=0.400000; -0.920000<=pL<=0.960000, 0.400000<=pK<=0.440000; -0.920000<=pL<=0.960000, 0.440000<=pK<=0.480000; -0.920000<=pL<=0.960000, 0.480000<=pK<=0.520000; -0.920000<=pL<=0.960000, 0.520000<=pK<=0.560000; -0.920000<=pL<=0.960000, 0.560000<=pK<=0.600000; -0.920000<=pL<=0.960000, 0.600000<=pK<=0.640000; -0.920000<=pL<=0.960000, 0.640000<=pK<=0.680000; -0.920000<=pL<=0.960000, 0.680000<=pK<=0.720000; -0.920000<=pL<=0.960000, 0.720000<=pK<=0.760000; -0.920000<=pL<=0.960000, 0.760000<=pK<=0.800000; -0.920000<=pL<=0.960000, 0.800000<=pK<=0.840000; -0.920000<=pL<=0.960000, 0.840000<=pK<=0.880000; -0.920000<=pL<=0.960000, 0.880000<=pK<=0.920000; -0.920000<=pL<=0.960000, 0.920000<=pK<=0.960000; -0.920000<=pL<=0.960000, 0.960000<=pK<=0.999990; -0.960000<=pL<=0.999990, 0.000010<=pK<=0.040000; -0.960000<=pL<=0.999990, 0.040000<=pK<=0.080000; -0.960000<=pL<=0.999990, 0.080000<=pK<=0.120000; -0.960000<=pL<=0.999990, 0.120000<=pK<=0.160000; -0.960000<=pL<=0.999990, 0.160000<=pK<=0.200000; -0.960000<=pL<=0.999990, 0.200000<=pK<=0.240000; -0.960000<=pL<=0.999990, 0.240000<=pK<=0.280000; -0.960000<=pL<=0.999990, 0.280000<=pK<=0.320000; -0.960000<=pL<=0.999990, 0.320000<=pK<=0.360000; -0.960000<=pL<=0.999990, 0.360000<=pK<=0.400000; -0.960000<=pL<=0.999990, 0.400000<=pK<=0.440000; -0.960000<=pL<=0.999990, 0.440000<=pK<=0.480000; -0.960000<=pL<=0.999990, 0.480000<=pK<=0.520000; -0.960000<=pL<=0.999990, 0.520000<=pK<=0.560000; -0.960000<=pL<=0.999990, 0.560000<=pK<=0.600000; -0.960000<=pL<=0.999990, 0.600000<=pK<=0.640000; -0.960000<=pL<=0.999990, 0.640000<=pK<=0.680000; -0.960000<=pL<=0.999990, 0.680000<=pK<=0.720000; -0.960000<=pL<=0.999990, 0.720000<=pK<=0.760000; -0.960000<=pL<=0.999990, 0.760000<=pK<=0.800000; -0.960000<=pL<=0.999990, 0.800000<=pK<=0.840000; -0.960000<=pL<=0.999990, 0.840000<=pK<=0.880000; -0.960000<=pL<=0.999990, 0.880000<=pK<=0.920000; -0.960000<=pL<=0.999990, 0.920000<=pK<=0.960000; -0.960000<=pL<=0.999990, 0.960000<=pK<=0.999990; diff --git a/examples/pdtmc/brp_rewards2/brp_rewards2_space.txt b/examples/pdtmc/brp_rewards2/brp_rewards2_space.txt deleted file mode 100644 index 444b98e90..000000000 --- a/examples/pdtmc/brp_rewards2/brp_rewards2_space.txt +++ /dev/null @@ -1,2 +0,0 @@ -0.000010<=pL<=0.999990, 0.000010<=pK<=0.999990; - diff --git a/examples/pdtmc/brp_rewards2/brp_rewards512_5.pm b/examples/pdtmc/brp_rewards2/brp_rewards512_5.pm deleted file mode 100644 index 344c545da..000000000 --- a/examples/pdtmc/brp_rewards2/brp_rewards512_5.pm +++ /dev/null @@ -1,147 +0,0 @@ -// bounded retransmission protocol [D'AJJL01] -// gxn/dxp 23/05/2001 - -dtmc - -// number of chunks -const int N = 512; -// maximum number of retransmissions -const int MAX = 5; - -// reliability of channels -const double pL; -const double pK; - -// timeouts -const double TOMsg=0.4; -const double TOAck=0.6; - - -module sender - - 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; - - // 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); - // wait_ack - [aB] (s=2) -> (s'=4) & (s_ab'=!s_ab); - [TO_Msg] (s=2) -> (s'=3); - [TO_Ack] (s=2) -> (s'=3); - // retransmit - [aF] (s=3) & (nrtr (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1); - [] (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 - -// prevents more than one file being sent -module tester - - T : bool; - - [NewFile] (T=false) -> (T'=true); - -endmodule - -module channelK - - k : [0..2]; - - // idle - [aF] (k=0) -> pK : (k'=1) + 1-pK : (k'=2); - // sending - [aG] (k=1) -> (k'=0); - // lost - [TO_Msg] (k=2) -> (k'=0); - -endmodule - -module channelL - - l : [0..2]; - - // idle - [aA] (l=0) -> pL : (l'=1) + 1-pL : (l'=2); - // sending - [aB] (l=1) -> (l'=0); - // lost - [TO_Ack] (l=2) -> (l'=0); - -endmodule - -rewards - [TO_Msg] true : TOMsg; - [TO_Ack] true : TOAck; -endrewards - - diff --git a/examples/pdtmc/brp_rewards2/brp_rewards64_4.pm b/examples/pdtmc/brp_rewards2/brp_rewards64_4.pm deleted file mode 100644 index 0fdcf94a1..000000000 --- a/examples/pdtmc/brp_rewards2/brp_rewards64_4.pm +++ /dev/null @@ -1,147 +0,0 @@ -// bounded retransmission protocol [D'AJJL01] -// gxn/dxp 23/05/2001 - -dtmc - -// number of chunks -const int N = 64; -// maximum number of retransmissions -const int MAX = 4; - -// reliability of channels -const double pL; -const double pK; - -// timeouts -const double TOMsg=0.4; -const double TOAck=0.6; - - -module sender - - 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; - - // 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); - // wait_ack - [aB] (s=2) -> (s'=4) & (s_ab'=!s_ab); - [TO_Msg] (s=2) -> (s'=3); - [TO_Ack] (s=2) -> (s'=3); - // retransmit - [aF] (s=3) & (nrtr (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1); - [] (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 - -// prevents more than one file being sent -module tester - - T : bool; - - [NewFile] (T=false) -> (T'=true); - -endmodule - -module channelK - - k : [0..2]; - - // idle - [aF] (k=0) -> pK : (k'=1) + 1-pK : (k'=2); - // sending - [aG] (k=1) -> (k'=0); - // lost - [TO_Msg] (k=2) -> (k'=0); - -endmodule - -module channelL - - l : [0..2]; - - // idle - [aA] (l=0) -> pL : (l'=1) + 1-pL : (l'=2); - // sending - [aB] (l=1) -> (l'=0); - // lost - [TO_Ack] (l=2) -> (l'=0); - -endmodule - -rewards - [TO_Msg] true : TOMsg; - [TO_Ack] true : TOAck; -endrewards - - diff --git a/examples/pdtmc/brp_rewards2/models b/examples/pdtmc/brp_rewards2/models deleted file mode 100644 index c4ac2bb5e..000000000 --- a/examples/pdtmc/brp_rewards2/models +++ /dev/null @@ -1,2 +0,0 @@ -brp_rewards2.pm -const N=512,MAX=5 -brp_rewards2.pm -const N=4096,MAX=5 diff --git a/examples/pdtmc/brp_rewards4/brp_rewards16_2.pm b/examples/pdtmc/brp_rewards4/brp_rewards16_2.pm deleted file mode 100644 index ff62fea14..000000000 --- a/examples/pdtmc/brp_rewards4/brp_rewards16_2.pm +++ /dev/null @@ -1,148 +0,0 @@ -// bounded retransmission protocol [D'AJJL01] -// gxn/dxp 23/05/2001 - -dtmc - -// number of chunks -const int N = 16; -// maximum number of retransmissions -const int MAX = 2; - -// reliability of channels -const double pL; -const double pK; - -// timeouts -const double TOMsg; -const double TOAck; - -module sender - - 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; - - // 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); - // wait_ack - [aB] (s=2) -> (s'=4) & (s_ab'=!s_ab); - [TO_Msg] (s=2) -> (s'=3); - [TO_Ack] (s=2) -> (s'=3); - // retransmit - [aF] (s=3) & (nrtr (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1); - [] (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 - -// prevents more than one file being sent -module tester - - T : bool; - - [NewFile] (T=false) -> (T'=true); - -endmodule - -module channelK - - k : [0..2]; - - // idle - [aF] (k=0) -> pK : (k'=1) + 1-pK : (k'=2); - // sending - [aG] (k=1) -> (k'=0); - // lost - [TO_Msg] (k=2) -> (k'=0); - -endmodule - -module channelL - - l : [0..2]; - - // idle - [aA] (l=0) -> pL : (l'=1) + 1-pL : (l'=2); - // sending - [aB] (l=1) -> (l'=0); - // lost - [TO_Ack] (l=2) -> (l'=0); - -endmodule - -rewards - [TO_Msg] true : TOMsg; - [TO_Ack] true : TOAck; -endrewards - - - -label "target" = s=5; \ No newline at end of file diff --git a/examples/pdtmc/brp_rewards4/brp_rewards256_5.pm b/examples/pdtmc/brp_rewards4/brp_rewards256_5.pm deleted file mode 100644 index 13937379a..000000000 --- a/examples/pdtmc/brp_rewards4/brp_rewards256_5.pm +++ /dev/null @@ -1,146 +0,0 @@ -// bounded retransmission protocol [D'AJJL01] -// gxn/dxp 23/05/2001 - -dtmc - -// number of chunks -const int N = 256; -// maximum number of retransmissions -const int MAX = 5; - -// reliability of channels -const double pL; -const double pK; - -// timeouts -const double TOMsg; -const double TOAck; - -module sender - - 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; - - // 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); - // wait_ack - [aB] (s=2) -> (s'=4) & (s_ab'=!s_ab); - [TO_Msg] (s=2) -> (s'=3); - [TO_Ack] (s=2) -> (s'=3); - // retransmit - [aF] (s=3) & (nrtr (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1); - [] (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 - -// prevents more than one file being sent -module tester - - T : bool; - - [NewFile] (T=false) -> (T'=true); - -endmodule - -module channelK - - k : [0..2]; - - // idle - [aF] (k=0) -> pK : (k'=1) + 1-pK : (k'=2); - // sending - [aG] (k=1) -> (k'=0); - // lost - [TO_Msg] (k=2) -> (k'=0); - -endmodule - -module channelL - - l : [0..2]; - - // idle - [aA] (l=0) -> pL : (l'=1) + 1-pL : (l'=2); - // sending - [aB] (l=1) -> (l'=0); - // lost - [TO_Ack] (l=2) -> (l'=0); - -endmodule - -rewards - [TO_Msg] true : TOMsg; - [TO_Ack] true : TOAck; -endrewards - - diff --git a/examples/pdtmc/brp_rewards4/brp_rewards4.pm b/examples/pdtmc/brp_rewards4/brp_rewards4.pm deleted file mode 100644 index 223993bc4..000000000 --- a/examples/pdtmc/brp_rewards4/brp_rewards4.pm +++ /dev/null @@ -1,149 +0,0 @@ -// bounded retransmission protocol [D'AJJL01] -// gxn/dxp 23/05/2001 - -dtmc - -// number of chunks -const int N; -// maximum number of retransmissions -const int MAX; - -// reliability of channels -const double pL; -const double pK; - -// timeouts -const double TOMsg; -const double TOAck; - -module sender - - 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; - - // 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); - // wait_ack - [aB] (s=2) -> (s'=4) & (s_ab'=!s_ab); - [TO_Msg] (s=2) -> (s'=3); - [TO_Ack] (s=2) -> (s'=3); - // retransmit - [aF] (s=3) & (nrtr (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1); - [] (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 - -// prevents more than one file being sent -module tester - - T : bool; - - [NewFile] (T=false) -> (T'=true); - -endmodule - -module channelK - - k : [0..2]; - - // idle - [aF] (k=0) -> pK : (k'=1) + 1-pK : (k'=2); - // sending - [aG] (k=1) -> (k'=0); - // lost - [TO_Msg] (k=2) -> (k'=0); - -endmodule - -module channelL - - l : [0..2]; - - // idle - [aA] (l=0) -> pL : (l'=1) + 1-pL : (l'=2); - // sending - [aB] (l=1) -> (l'=0); - // lost - [TO_Ack] (l=2) -> (l'=0); - -endmodule - -rewards - [TO_Msg] true : TOMsg; - [TO_Ack] true : TOAck; -endrewards - - - -label "fatal" = s=5 & T; -label "false_neg" = srep=1 & rrep=3 & recv; diff --git a/examples/pdtmc/brp_rewards4/brp_rewards4.prctl b/examples/pdtmc/brp_rewards4/brp_rewards4.prctl deleted file mode 100644 index 3a194c0be..000000000 --- a/examples/pdtmc/brp_rewards4/brp_rewards4.prctl +++ /dev/null @@ -1,2 +0,0 @@ -R<3 [ F ((s=5) | (s=0&srep=3)) ] - diff --git a/examples/pdtmc/brp_rewards4/brp_rewards4_regions.txt b/examples/pdtmc/brp_rewards4/brp_rewards4_regions.txt deleted file mode 100644 index 0548f99da..000000000 --- a/examples/pdtmc/brp_rewards4/brp_rewards4_regions.txt +++ /dev/null @@ -1,625 +0,0 @@ -0.000010<=pL<=0.200000, 0.000010<=pK<=0.200000, 0.000010<=TOMsg<=0.200000, 0.000010<=TOAck<=0.200000; -0.000010<=pL<=0.200000, 0.000010<=pK<=0.200000, 0.000010<=TOMsg<=0.200000, 0.200000<=TOAck<=0.400000; -0.000010<=pL<=0.200000, 0.000010<=pK<=0.200000, 0.000010<=TOMsg<=0.200000, 0.400000<=TOAck<=0.600000; -0.000010<=pL<=0.200000, 0.000010<=pK<=0.200000, 0.000010<=TOMsg<=0.200000, 0.600000<=TOAck<=0.800000; -0.000010<=pL<=0.200000, 0.000010<=pK<=0.200000, 0.000010<=TOMsg<=0.200000, 0.800000<=TOAck<=0.999990; -0.000010<=pL<=0.200000, 0.000010<=pK<=0.200000, 0.200000<=TOMsg<=0.400000, 0.000010<=TOAck<=0.200000; -0.000010<=pL<=0.200000, 0.000010<=pK<=0.200000, 0.200000<=TOMsg<=0.400000, 0.200000<=TOAck<=0.400000; -0.000010<=pL<=0.200000, 0.000010<=pK<=0.200000, 0.200000<=TOMsg<=0.400000, 0.400000<=TOAck<=0.600000; -0.000010<=pL<=0.200000, 0.000010<=pK<=0.200000, 0.200000<=TOMsg<=0.400000, 0.600000<=TOAck<=0.800000; -0.000010<=pL<=0.200000, 0.000010<=pK<=0.200000, 0.200000<=TOMsg<=0.400000, 0.800000<=TOAck<=0.999990; -0.000010<=pL<=0.200000, 0.000010<=pK<=0.200000, 0.400000<=TOMsg<=0.600000, 0.000010<=TOAck<=0.200000; -0.000010<=pL<=0.200000, 0.000010<=pK<=0.200000, 0.400000<=TOMsg<=0.600000, 0.200000<=TOAck<=0.400000; -0.000010<=pL<=0.200000, 0.000010<=pK<=0.200000, 0.400000<=TOMsg<=0.600000, 0.400000<=TOAck<=0.600000; -0.000010<=pL<=0.200000, 0.000010<=pK<=0.200000, 0.400000<=TOMsg<=0.600000, 0.600000<=TOAck<=0.800000; -0.000010<=pL<=0.200000, 0.000010<=pK<=0.200000, 0.400000<=TOMsg<=0.600000, 0.800000<=TOAck<=0.999990; -0.000010<=pL<=0.200000, 0.000010<=pK<=0.200000, 0.600000<=TOMsg<=0.800000, 0.000010<=TOAck<=0.200000; -0.000010<=pL<=0.200000, 0.000010<=pK<=0.200000, 0.600000<=TOMsg<=0.800000, 0.200000<=TOAck<=0.400000; -0.000010<=pL<=0.200000, 0.000010<=pK<=0.200000, 0.600000<=TOMsg<=0.800000, 0.400000<=TOAck<=0.600000; -0.000010<=pL<=0.200000, 0.000010<=pK<=0.200000, 0.600000<=TOMsg<=0.800000, 0.600000<=TOAck<=0.800000; -0.000010<=pL<=0.200000, 0.000010<=pK<=0.200000, 0.600000<=TOMsg<=0.800000, 0.800000<=TOAck<=0.999990; -0.000010<=pL<=0.200000, 0.000010<=pK<=0.200000, 0.800000<=TOMsg<=0.999990, 0.000010<=TOAck<=0.200000; -0.000010<=pL<=0.200000, 0.000010<=pK<=0.200000, 0.800000<=TOMsg<=0.999990, 0.200000<=TOAck<=0.400000; -0.000010<=pL<=0.200000, 0.000010<=pK<=0.200000, 0.800000<=TOMsg<=0.999990, 0.400000<=TOAck<=0.600000; -0.000010<=pL<=0.200000, 0.000010<=pK<=0.200000, 0.800000<=TOMsg<=0.999990, 0.600000<=TOAck<=0.800000; -0.000010<=pL<=0.200000, 0.000010<=pK<=0.200000, 0.800000<=TOMsg<=0.999990, 0.800000<=TOAck<=0.999990; -0.000010<=pL<=0.200000, 0.200000<=pK<=0.400000, 0.000010<=TOMsg<=0.200000, 0.000010<=TOAck<=0.200000; -0.000010<=pL<=0.200000, 0.200000<=pK<=0.400000, 0.000010<=TOMsg<=0.200000, 0.200000<=TOAck<=0.400000; -0.000010<=pL<=0.200000, 0.200000<=pK<=0.400000, 0.000010<=TOMsg<=0.200000, 0.400000<=TOAck<=0.600000; -0.000010<=pL<=0.200000, 0.200000<=pK<=0.400000, 0.000010<=TOMsg<=0.200000, 0.600000<=TOAck<=0.800000; -0.000010<=pL<=0.200000, 0.200000<=pK<=0.400000, 0.000010<=TOMsg<=0.200000, 0.800000<=TOAck<=0.999990; -0.000010<=pL<=0.200000, 0.200000<=pK<=0.400000, 0.200000<=TOMsg<=0.400000, 0.000010<=TOAck<=0.200000; -0.000010<=pL<=0.200000, 0.200000<=pK<=0.400000, 0.200000<=TOMsg<=0.400000, 0.200000<=TOAck<=0.400000; -0.000010<=pL<=0.200000, 0.200000<=pK<=0.400000, 0.200000<=TOMsg<=0.400000, 0.400000<=TOAck<=0.600000; -0.000010<=pL<=0.200000, 0.200000<=pK<=0.400000, 0.200000<=TOMsg<=0.400000, 0.600000<=TOAck<=0.800000; -0.000010<=pL<=0.200000, 0.200000<=pK<=0.400000, 0.200000<=TOMsg<=0.400000, 0.800000<=TOAck<=0.999990; -0.000010<=pL<=0.200000, 0.200000<=pK<=0.400000, 0.400000<=TOMsg<=0.600000, 0.000010<=TOAck<=0.200000; -0.000010<=pL<=0.200000, 0.200000<=pK<=0.400000, 0.400000<=TOMsg<=0.600000, 0.200000<=TOAck<=0.400000; -0.000010<=pL<=0.200000, 0.200000<=pK<=0.400000, 0.400000<=TOMsg<=0.600000, 0.400000<=TOAck<=0.600000; -0.000010<=pL<=0.200000, 0.200000<=pK<=0.400000, 0.400000<=TOMsg<=0.600000, 0.600000<=TOAck<=0.800000; -0.000010<=pL<=0.200000, 0.200000<=pK<=0.400000, 0.400000<=TOMsg<=0.600000, 0.800000<=TOAck<=0.999990; -0.000010<=pL<=0.200000, 0.200000<=pK<=0.400000, 0.600000<=TOMsg<=0.800000, 0.000010<=TOAck<=0.200000; -0.000010<=pL<=0.200000, 0.200000<=pK<=0.400000, 0.600000<=TOMsg<=0.800000, 0.200000<=TOAck<=0.400000; -0.000010<=pL<=0.200000, 0.200000<=pK<=0.400000, 0.600000<=TOMsg<=0.800000, 0.400000<=TOAck<=0.600000; -0.000010<=pL<=0.200000, 0.200000<=pK<=0.400000, 0.600000<=TOMsg<=0.800000, 0.600000<=TOAck<=0.800000; -0.000010<=pL<=0.200000, 0.200000<=pK<=0.400000, 0.600000<=TOMsg<=0.800000, 0.800000<=TOAck<=0.999990; -0.000010<=pL<=0.200000, 0.200000<=pK<=0.400000, 0.800000<=TOMsg<=0.999990, 0.000010<=TOAck<=0.200000; -0.000010<=pL<=0.200000, 0.200000<=pK<=0.400000, 0.800000<=TOMsg<=0.999990, 0.200000<=TOAck<=0.400000; -0.000010<=pL<=0.200000, 0.200000<=pK<=0.400000, 0.800000<=TOMsg<=0.999990, 0.400000<=TOAck<=0.600000; -0.000010<=pL<=0.200000, 0.200000<=pK<=0.400000, 0.800000<=TOMsg<=0.999990, 0.600000<=TOAck<=0.800000; -0.000010<=pL<=0.200000, 0.200000<=pK<=0.400000, 0.800000<=TOMsg<=0.999990, 0.800000<=TOAck<=0.999990; -0.000010<=pL<=0.200000, 0.400000<=pK<=0.600000, 0.000010<=TOMsg<=0.200000, 0.000010<=TOAck<=0.200000; -0.000010<=pL<=0.200000, 0.400000<=pK<=0.600000, 0.000010<=TOMsg<=0.200000, 0.200000<=TOAck<=0.400000; -0.000010<=pL<=0.200000, 0.400000<=pK<=0.600000, 0.000010<=TOMsg<=0.200000, 0.400000<=TOAck<=0.600000; -0.000010<=pL<=0.200000, 0.400000<=pK<=0.600000, 0.000010<=TOMsg<=0.200000, 0.600000<=TOAck<=0.800000; -0.000010<=pL<=0.200000, 0.400000<=pK<=0.600000, 0.000010<=TOMsg<=0.200000, 0.800000<=TOAck<=0.999990; -0.000010<=pL<=0.200000, 0.400000<=pK<=0.600000, 0.200000<=TOMsg<=0.400000, 0.000010<=TOAck<=0.200000; -0.000010<=pL<=0.200000, 0.400000<=pK<=0.600000, 0.200000<=TOMsg<=0.400000, 0.200000<=TOAck<=0.400000; -0.000010<=pL<=0.200000, 0.400000<=pK<=0.600000, 0.200000<=TOMsg<=0.400000, 0.400000<=TOAck<=0.600000; -0.000010<=pL<=0.200000, 0.400000<=pK<=0.600000, 0.200000<=TOMsg<=0.400000, 0.600000<=TOAck<=0.800000; -0.000010<=pL<=0.200000, 0.400000<=pK<=0.600000, 0.200000<=TOMsg<=0.400000, 0.800000<=TOAck<=0.999990; -0.000010<=pL<=0.200000, 0.400000<=pK<=0.600000, 0.400000<=TOMsg<=0.600000, 0.000010<=TOAck<=0.200000; -0.000010<=pL<=0.200000, 0.400000<=pK<=0.600000, 0.400000<=TOMsg<=0.600000, 0.200000<=TOAck<=0.400000; -0.000010<=pL<=0.200000, 0.400000<=pK<=0.600000, 0.400000<=TOMsg<=0.600000, 0.400000<=TOAck<=0.600000; -0.000010<=pL<=0.200000, 0.400000<=pK<=0.600000, 0.400000<=TOMsg<=0.600000, 0.600000<=TOAck<=0.800000; -0.000010<=pL<=0.200000, 0.400000<=pK<=0.600000, 0.400000<=TOMsg<=0.600000, 0.800000<=TOAck<=0.999990; -0.000010<=pL<=0.200000, 0.400000<=pK<=0.600000, 0.600000<=TOMsg<=0.800000, 0.000010<=TOAck<=0.200000; -0.000010<=pL<=0.200000, 0.400000<=pK<=0.600000, 0.600000<=TOMsg<=0.800000, 0.200000<=TOAck<=0.400000; -0.000010<=pL<=0.200000, 0.400000<=pK<=0.600000, 0.600000<=TOMsg<=0.800000, 0.400000<=TOAck<=0.600000; -0.000010<=pL<=0.200000, 0.400000<=pK<=0.600000, 0.600000<=TOMsg<=0.800000, 0.600000<=TOAck<=0.800000; -0.000010<=pL<=0.200000, 0.400000<=pK<=0.600000, 0.600000<=TOMsg<=0.800000, 0.800000<=TOAck<=0.999990; -0.000010<=pL<=0.200000, 0.400000<=pK<=0.600000, 0.800000<=TOMsg<=0.999990, 0.000010<=TOAck<=0.200000; -0.000010<=pL<=0.200000, 0.400000<=pK<=0.600000, 0.800000<=TOMsg<=0.999990, 0.200000<=TOAck<=0.400000; -0.000010<=pL<=0.200000, 0.400000<=pK<=0.600000, 0.800000<=TOMsg<=0.999990, 0.400000<=TOAck<=0.600000; -0.000010<=pL<=0.200000, 0.400000<=pK<=0.600000, 0.800000<=TOMsg<=0.999990, 0.600000<=TOAck<=0.800000; -0.000010<=pL<=0.200000, 0.400000<=pK<=0.600000, 0.800000<=TOMsg<=0.999990, 0.800000<=TOAck<=0.999990; -0.000010<=pL<=0.200000, 0.600000<=pK<=0.800000, 0.000010<=TOMsg<=0.200000, 0.000010<=TOAck<=0.200000; -0.000010<=pL<=0.200000, 0.600000<=pK<=0.800000, 0.000010<=TOMsg<=0.200000, 0.200000<=TOAck<=0.400000; -0.000010<=pL<=0.200000, 0.600000<=pK<=0.800000, 0.000010<=TOMsg<=0.200000, 0.400000<=TOAck<=0.600000; -0.000010<=pL<=0.200000, 0.600000<=pK<=0.800000, 0.000010<=TOMsg<=0.200000, 0.600000<=TOAck<=0.800000; -0.000010<=pL<=0.200000, 0.600000<=pK<=0.800000, 0.000010<=TOMsg<=0.200000, 0.800000<=TOAck<=0.999990; -0.000010<=pL<=0.200000, 0.600000<=pK<=0.800000, 0.200000<=TOMsg<=0.400000, 0.000010<=TOAck<=0.200000; -0.000010<=pL<=0.200000, 0.600000<=pK<=0.800000, 0.200000<=TOMsg<=0.400000, 0.200000<=TOAck<=0.400000; -0.000010<=pL<=0.200000, 0.600000<=pK<=0.800000, 0.200000<=TOMsg<=0.400000, 0.400000<=TOAck<=0.600000; -0.000010<=pL<=0.200000, 0.600000<=pK<=0.800000, 0.200000<=TOMsg<=0.400000, 0.600000<=TOAck<=0.800000; -0.000010<=pL<=0.200000, 0.600000<=pK<=0.800000, 0.200000<=TOMsg<=0.400000, 0.800000<=TOAck<=0.999990; -0.000010<=pL<=0.200000, 0.600000<=pK<=0.800000, 0.400000<=TOMsg<=0.600000, 0.000010<=TOAck<=0.200000; -0.000010<=pL<=0.200000, 0.600000<=pK<=0.800000, 0.400000<=TOMsg<=0.600000, 0.200000<=TOAck<=0.400000; -0.000010<=pL<=0.200000, 0.600000<=pK<=0.800000, 0.400000<=TOMsg<=0.600000, 0.400000<=TOAck<=0.600000; -0.000010<=pL<=0.200000, 0.600000<=pK<=0.800000, 0.400000<=TOMsg<=0.600000, 0.600000<=TOAck<=0.800000; -0.000010<=pL<=0.200000, 0.600000<=pK<=0.800000, 0.400000<=TOMsg<=0.600000, 0.800000<=TOAck<=0.999990; -0.000010<=pL<=0.200000, 0.600000<=pK<=0.800000, 0.600000<=TOMsg<=0.800000, 0.000010<=TOAck<=0.200000; -0.000010<=pL<=0.200000, 0.600000<=pK<=0.800000, 0.600000<=TOMsg<=0.800000, 0.200000<=TOAck<=0.400000; -0.000010<=pL<=0.200000, 0.600000<=pK<=0.800000, 0.600000<=TOMsg<=0.800000, 0.400000<=TOAck<=0.600000; -0.000010<=pL<=0.200000, 0.600000<=pK<=0.800000, 0.600000<=TOMsg<=0.800000, 0.600000<=TOAck<=0.800000; -0.000010<=pL<=0.200000, 0.600000<=pK<=0.800000, 0.600000<=TOMsg<=0.800000, 0.800000<=TOAck<=0.999990; -0.000010<=pL<=0.200000, 0.600000<=pK<=0.800000, 0.800000<=TOMsg<=0.999990, 0.000010<=TOAck<=0.200000; -0.000010<=pL<=0.200000, 0.600000<=pK<=0.800000, 0.800000<=TOMsg<=0.999990, 0.200000<=TOAck<=0.400000; -0.000010<=pL<=0.200000, 0.600000<=pK<=0.800000, 0.800000<=TOMsg<=0.999990, 0.400000<=TOAck<=0.600000; -0.000010<=pL<=0.200000, 0.600000<=pK<=0.800000, 0.800000<=TOMsg<=0.999990, 0.600000<=TOAck<=0.800000; -0.000010<=pL<=0.200000, 0.600000<=pK<=0.800000, 0.800000<=TOMsg<=0.999990, 0.800000<=TOAck<=0.999990; -0.000010<=pL<=0.200000, 0.800000<=pK<=0.999990, 0.000010<=TOMsg<=0.200000, 0.000010<=TOAck<=0.200000; -0.000010<=pL<=0.200000, 0.800000<=pK<=0.999990, 0.000010<=TOMsg<=0.200000, 0.200000<=TOAck<=0.400000; -0.000010<=pL<=0.200000, 0.800000<=pK<=0.999990, 0.000010<=TOMsg<=0.200000, 0.400000<=TOAck<=0.600000; -0.000010<=pL<=0.200000, 0.800000<=pK<=0.999990, 0.000010<=TOMsg<=0.200000, 0.600000<=TOAck<=0.800000; -0.000010<=pL<=0.200000, 0.800000<=pK<=0.999990, 0.000010<=TOMsg<=0.200000, 0.800000<=TOAck<=0.999990; -0.000010<=pL<=0.200000, 0.800000<=pK<=0.999990, 0.200000<=TOMsg<=0.400000, 0.000010<=TOAck<=0.200000; -0.000010<=pL<=0.200000, 0.800000<=pK<=0.999990, 0.200000<=TOMsg<=0.400000, 0.200000<=TOAck<=0.400000; -0.000010<=pL<=0.200000, 0.800000<=pK<=0.999990, 0.200000<=TOMsg<=0.400000, 0.400000<=TOAck<=0.600000; -0.000010<=pL<=0.200000, 0.800000<=pK<=0.999990, 0.200000<=TOMsg<=0.400000, 0.600000<=TOAck<=0.800000; -0.000010<=pL<=0.200000, 0.800000<=pK<=0.999990, 0.200000<=TOMsg<=0.400000, 0.800000<=TOAck<=0.999990; -0.000010<=pL<=0.200000, 0.800000<=pK<=0.999990, 0.400000<=TOMsg<=0.600000, 0.000010<=TOAck<=0.200000; -0.000010<=pL<=0.200000, 0.800000<=pK<=0.999990, 0.400000<=TOMsg<=0.600000, 0.200000<=TOAck<=0.400000; -0.000010<=pL<=0.200000, 0.800000<=pK<=0.999990, 0.400000<=TOMsg<=0.600000, 0.400000<=TOAck<=0.600000; -0.000010<=pL<=0.200000, 0.800000<=pK<=0.999990, 0.400000<=TOMsg<=0.600000, 0.600000<=TOAck<=0.800000; -0.000010<=pL<=0.200000, 0.800000<=pK<=0.999990, 0.400000<=TOMsg<=0.600000, 0.800000<=TOAck<=0.999990; -0.000010<=pL<=0.200000, 0.800000<=pK<=0.999990, 0.600000<=TOMsg<=0.800000, 0.000010<=TOAck<=0.200000; -0.000010<=pL<=0.200000, 0.800000<=pK<=0.999990, 0.600000<=TOMsg<=0.800000, 0.200000<=TOAck<=0.400000; -0.000010<=pL<=0.200000, 0.800000<=pK<=0.999990, 0.600000<=TOMsg<=0.800000, 0.400000<=TOAck<=0.600000; -0.000010<=pL<=0.200000, 0.800000<=pK<=0.999990, 0.600000<=TOMsg<=0.800000, 0.600000<=TOAck<=0.800000; -0.000010<=pL<=0.200000, 0.800000<=pK<=0.999990, 0.600000<=TOMsg<=0.800000, 0.800000<=TOAck<=0.999990; -0.000010<=pL<=0.200000, 0.800000<=pK<=0.999990, 0.800000<=TOMsg<=0.999990, 0.000010<=TOAck<=0.200000; -0.000010<=pL<=0.200000, 0.800000<=pK<=0.999990, 0.800000<=TOMsg<=0.999990, 0.200000<=TOAck<=0.400000; -0.000010<=pL<=0.200000, 0.800000<=pK<=0.999990, 0.800000<=TOMsg<=0.999990, 0.400000<=TOAck<=0.600000; -0.000010<=pL<=0.200000, 0.800000<=pK<=0.999990, 0.800000<=TOMsg<=0.999990, 0.600000<=TOAck<=0.800000; -0.000010<=pL<=0.200000, 0.800000<=pK<=0.999990, 0.800000<=TOMsg<=0.999990, 0.800000<=TOAck<=0.999990; -0.200000<=pL<=0.400000, 0.000010<=pK<=0.200000, 0.000010<=TOMsg<=0.200000, 0.000010<=TOAck<=0.200000; -0.200000<=pL<=0.400000, 0.000010<=pK<=0.200000, 0.000010<=TOMsg<=0.200000, 0.200000<=TOAck<=0.400000; -0.200000<=pL<=0.400000, 0.000010<=pK<=0.200000, 0.000010<=TOMsg<=0.200000, 0.400000<=TOAck<=0.600000; -0.200000<=pL<=0.400000, 0.000010<=pK<=0.200000, 0.000010<=TOMsg<=0.200000, 0.600000<=TOAck<=0.800000; -0.200000<=pL<=0.400000, 0.000010<=pK<=0.200000, 0.000010<=TOMsg<=0.200000, 0.800000<=TOAck<=0.999990; -0.200000<=pL<=0.400000, 0.000010<=pK<=0.200000, 0.200000<=TOMsg<=0.400000, 0.000010<=TOAck<=0.200000; -0.200000<=pL<=0.400000, 0.000010<=pK<=0.200000, 0.200000<=TOMsg<=0.400000, 0.200000<=TOAck<=0.400000; -0.200000<=pL<=0.400000, 0.000010<=pK<=0.200000, 0.200000<=TOMsg<=0.400000, 0.400000<=TOAck<=0.600000; -0.200000<=pL<=0.400000, 0.000010<=pK<=0.200000, 0.200000<=TOMsg<=0.400000, 0.600000<=TOAck<=0.800000; -0.200000<=pL<=0.400000, 0.000010<=pK<=0.200000, 0.200000<=TOMsg<=0.400000, 0.800000<=TOAck<=0.999990; -0.200000<=pL<=0.400000, 0.000010<=pK<=0.200000, 0.400000<=TOMsg<=0.600000, 0.000010<=TOAck<=0.200000; -0.200000<=pL<=0.400000, 0.000010<=pK<=0.200000, 0.400000<=TOMsg<=0.600000, 0.200000<=TOAck<=0.400000; -0.200000<=pL<=0.400000, 0.000010<=pK<=0.200000, 0.400000<=TOMsg<=0.600000, 0.400000<=TOAck<=0.600000; -0.200000<=pL<=0.400000, 0.000010<=pK<=0.200000, 0.400000<=TOMsg<=0.600000, 0.600000<=TOAck<=0.800000; -0.200000<=pL<=0.400000, 0.000010<=pK<=0.200000, 0.400000<=TOMsg<=0.600000, 0.800000<=TOAck<=0.999990; -0.200000<=pL<=0.400000, 0.000010<=pK<=0.200000, 0.600000<=TOMsg<=0.800000, 0.000010<=TOAck<=0.200000; -0.200000<=pL<=0.400000, 0.000010<=pK<=0.200000, 0.600000<=TOMsg<=0.800000, 0.200000<=TOAck<=0.400000; -0.200000<=pL<=0.400000, 0.000010<=pK<=0.200000, 0.600000<=TOMsg<=0.800000, 0.400000<=TOAck<=0.600000; -0.200000<=pL<=0.400000, 0.000010<=pK<=0.200000, 0.600000<=TOMsg<=0.800000, 0.600000<=TOAck<=0.800000; -0.200000<=pL<=0.400000, 0.000010<=pK<=0.200000, 0.600000<=TOMsg<=0.800000, 0.800000<=TOAck<=0.999990; -0.200000<=pL<=0.400000, 0.000010<=pK<=0.200000, 0.800000<=TOMsg<=0.999990, 0.000010<=TOAck<=0.200000; -0.200000<=pL<=0.400000, 0.000010<=pK<=0.200000, 0.800000<=TOMsg<=0.999990, 0.200000<=TOAck<=0.400000; -0.200000<=pL<=0.400000, 0.000010<=pK<=0.200000, 0.800000<=TOMsg<=0.999990, 0.400000<=TOAck<=0.600000; -0.200000<=pL<=0.400000, 0.000010<=pK<=0.200000, 0.800000<=TOMsg<=0.999990, 0.600000<=TOAck<=0.800000; -0.200000<=pL<=0.400000, 0.000010<=pK<=0.200000, 0.800000<=TOMsg<=0.999990, 0.800000<=TOAck<=0.999990; -0.200000<=pL<=0.400000, 0.200000<=pK<=0.400000, 0.000010<=TOMsg<=0.200000, 0.000010<=TOAck<=0.200000; -0.200000<=pL<=0.400000, 0.200000<=pK<=0.400000, 0.000010<=TOMsg<=0.200000, 0.200000<=TOAck<=0.400000; -0.200000<=pL<=0.400000, 0.200000<=pK<=0.400000, 0.000010<=TOMsg<=0.200000, 0.400000<=TOAck<=0.600000; -0.200000<=pL<=0.400000, 0.200000<=pK<=0.400000, 0.000010<=TOMsg<=0.200000, 0.600000<=TOAck<=0.800000; -0.200000<=pL<=0.400000, 0.200000<=pK<=0.400000, 0.000010<=TOMsg<=0.200000, 0.800000<=TOAck<=0.999990; -0.200000<=pL<=0.400000, 0.200000<=pK<=0.400000, 0.200000<=TOMsg<=0.400000, 0.000010<=TOAck<=0.200000; -0.200000<=pL<=0.400000, 0.200000<=pK<=0.400000, 0.200000<=TOMsg<=0.400000, 0.200000<=TOAck<=0.400000; -0.200000<=pL<=0.400000, 0.200000<=pK<=0.400000, 0.200000<=TOMsg<=0.400000, 0.400000<=TOAck<=0.600000; -0.200000<=pL<=0.400000, 0.200000<=pK<=0.400000, 0.200000<=TOMsg<=0.400000, 0.600000<=TOAck<=0.800000; -0.200000<=pL<=0.400000, 0.200000<=pK<=0.400000, 0.200000<=TOMsg<=0.400000, 0.800000<=TOAck<=0.999990; -0.200000<=pL<=0.400000, 0.200000<=pK<=0.400000, 0.400000<=TOMsg<=0.600000, 0.000010<=TOAck<=0.200000; -0.200000<=pL<=0.400000, 0.200000<=pK<=0.400000, 0.400000<=TOMsg<=0.600000, 0.200000<=TOAck<=0.400000; -0.200000<=pL<=0.400000, 0.200000<=pK<=0.400000, 0.400000<=TOMsg<=0.600000, 0.400000<=TOAck<=0.600000; -0.200000<=pL<=0.400000, 0.200000<=pK<=0.400000, 0.400000<=TOMsg<=0.600000, 0.600000<=TOAck<=0.800000; -0.200000<=pL<=0.400000, 0.200000<=pK<=0.400000, 0.400000<=TOMsg<=0.600000, 0.800000<=TOAck<=0.999990; -0.200000<=pL<=0.400000, 0.200000<=pK<=0.400000, 0.600000<=TOMsg<=0.800000, 0.000010<=TOAck<=0.200000; -0.200000<=pL<=0.400000, 0.200000<=pK<=0.400000, 0.600000<=TOMsg<=0.800000, 0.200000<=TOAck<=0.400000; -0.200000<=pL<=0.400000, 0.200000<=pK<=0.400000, 0.600000<=TOMsg<=0.800000, 0.400000<=TOAck<=0.600000; -0.200000<=pL<=0.400000, 0.200000<=pK<=0.400000, 0.600000<=TOMsg<=0.800000, 0.600000<=TOAck<=0.800000; -0.200000<=pL<=0.400000, 0.200000<=pK<=0.400000, 0.600000<=TOMsg<=0.800000, 0.800000<=TOAck<=0.999990; -0.200000<=pL<=0.400000, 0.200000<=pK<=0.400000, 0.800000<=TOMsg<=0.999990, 0.000010<=TOAck<=0.200000; -0.200000<=pL<=0.400000, 0.200000<=pK<=0.400000, 0.800000<=TOMsg<=0.999990, 0.200000<=TOAck<=0.400000; -0.200000<=pL<=0.400000, 0.200000<=pK<=0.400000, 0.800000<=TOMsg<=0.999990, 0.400000<=TOAck<=0.600000; -0.200000<=pL<=0.400000, 0.200000<=pK<=0.400000, 0.800000<=TOMsg<=0.999990, 0.600000<=TOAck<=0.800000; -0.200000<=pL<=0.400000, 0.200000<=pK<=0.400000, 0.800000<=TOMsg<=0.999990, 0.800000<=TOAck<=0.999990; -0.200000<=pL<=0.400000, 0.400000<=pK<=0.600000, 0.000010<=TOMsg<=0.200000, 0.000010<=TOAck<=0.200000; -0.200000<=pL<=0.400000, 0.400000<=pK<=0.600000, 0.000010<=TOMsg<=0.200000, 0.200000<=TOAck<=0.400000; -0.200000<=pL<=0.400000, 0.400000<=pK<=0.600000, 0.000010<=TOMsg<=0.200000, 0.400000<=TOAck<=0.600000; -0.200000<=pL<=0.400000, 0.400000<=pK<=0.600000, 0.000010<=TOMsg<=0.200000, 0.600000<=TOAck<=0.800000; -0.200000<=pL<=0.400000, 0.400000<=pK<=0.600000, 0.000010<=TOMsg<=0.200000, 0.800000<=TOAck<=0.999990; -0.200000<=pL<=0.400000, 0.400000<=pK<=0.600000, 0.200000<=TOMsg<=0.400000, 0.000010<=TOAck<=0.200000; -0.200000<=pL<=0.400000, 0.400000<=pK<=0.600000, 0.200000<=TOMsg<=0.400000, 0.200000<=TOAck<=0.400000; -0.200000<=pL<=0.400000, 0.400000<=pK<=0.600000, 0.200000<=TOMsg<=0.400000, 0.400000<=TOAck<=0.600000; -0.200000<=pL<=0.400000, 0.400000<=pK<=0.600000, 0.200000<=TOMsg<=0.400000, 0.600000<=TOAck<=0.800000; -0.200000<=pL<=0.400000, 0.400000<=pK<=0.600000, 0.200000<=TOMsg<=0.400000, 0.800000<=TOAck<=0.999990; -0.200000<=pL<=0.400000, 0.400000<=pK<=0.600000, 0.400000<=TOMsg<=0.600000, 0.000010<=TOAck<=0.200000; -0.200000<=pL<=0.400000, 0.400000<=pK<=0.600000, 0.400000<=TOMsg<=0.600000, 0.200000<=TOAck<=0.400000; -0.200000<=pL<=0.400000, 0.400000<=pK<=0.600000, 0.400000<=TOMsg<=0.600000, 0.400000<=TOAck<=0.600000; -0.200000<=pL<=0.400000, 0.400000<=pK<=0.600000, 0.400000<=TOMsg<=0.600000, 0.600000<=TOAck<=0.800000; -0.200000<=pL<=0.400000, 0.400000<=pK<=0.600000, 0.400000<=TOMsg<=0.600000, 0.800000<=TOAck<=0.999990; -0.200000<=pL<=0.400000, 0.400000<=pK<=0.600000, 0.600000<=TOMsg<=0.800000, 0.000010<=TOAck<=0.200000; -0.200000<=pL<=0.400000, 0.400000<=pK<=0.600000, 0.600000<=TOMsg<=0.800000, 0.200000<=TOAck<=0.400000; -0.200000<=pL<=0.400000, 0.400000<=pK<=0.600000, 0.600000<=TOMsg<=0.800000, 0.400000<=TOAck<=0.600000; -0.200000<=pL<=0.400000, 0.400000<=pK<=0.600000, 0.600000<=TOMsg<=0.800000, 0.600000<=TOAck<=0.800000; -0.200000<=pL<=0.400000, 0.400000<=pK<=0.600000, 0.600000<=TOMsg<=0.800000, 0.800000<=TOAck<=0.999990; -0.200000<=pL<=0.400000, 0.400000<=pK<=0.600000, 0.800000<=TOMsg<=0.999990, 0.000010<=TOAck<=0.200000; -0.200000<=pL<=0.400000, 0.400000<=pK<=0.600000, 0.800000<=TOMsg<=0.999990, 0.200000<=TOAck<=0.400000; -0.200000<=pL<=0.400000, 0.400000<=pK<=0.600000, 0.800000<=TOMsg<=0.999990, 0.400000<=TOAck<=0.600000; -0.200000<=pL<=0.400000, 0.400000<=pK<=0.600000, 0.800000<=TOMsg<=0.999990, 0.600000<=TOAck<=0.800000; -0.200000<=pL<=0.400000, 0.400000<=pK<=0.600000, 0.800000<=TOMsg<=0.999990, 0.800000<=TOAck<=0.999990; -0.200000<=pL<=0.400000, 0.600000<=pK<=0.800000, 0.000010<=TOMsg<=0.200000, 0.000010<=TOAck<=0.200000; -0.200000<=pL<=0.400000, 0.600000<=pK<=0.800000, 0.000010<=TOMsg<=0.200000, 0.200000<=TOAck<=0.400000; -0.200000<=pL<=0.400000, 0.600000<=pK<=0.800000, 0.000010<=TOMsg<=0.200000, 0.400000<=TOAck<=0.600000; -0.200000<=pL<=0.400000, 0.600000<=pK<=0.800000, 0.000010<=TOMsg<=0.200000, 0.600000<=TOAck<=0.800000; -0.200000<=pL<=0.400000, 0.600000<=pK<=0.800000, 0.000010<=TOMsg<=0.200000, 0.800000<=TOAck<=0.999990; -0.200000<=pL<=0.400000, 0.600000<=pK<=0.800000, 0.200000<=TOMsg<=0.400000, 0.000010<=TOAck<=0.200000; -0.200000<=pL<=0.400000, 0.600000<=pK<=0.800000, 0.200000<=TOMsg<=0.400000, 0.200000<=TOAck<=0.400000; -0.200000<=pL<=0.400000, 0.600000<=pK<=0.800000, 0.200000<=TOMsg<=0.400000, 0.400000<=TOAck<=0.600000; -0.200000<=pL<=0.400000, 0.600000<=pK<=0.800000, 0.200000<=TOMsg<=0.400000, 0.600000<=TOAck<=0.800000; -0.200000<=pL<=0.400000, 0.600000<=pK<=0.800000, 0.200000<=TOMsg<=0.400000, 0.800000<=TOAck<=0.999990; -0.200000<=pL<=0.400000, 0.600000<=pK<=0.800000, 0.400000<=TOMsg<=0.600000, 0.000010<=TOAck<=0.200000; -0.200000<=pL<=0.400000, 0.600000<=pK<=0.800000, 0.400000<=TOMsg<=0.600000, 0.200000<=TOAck<=0.400000; -0.200000<=pL<=0.400000, 0.600000<=pK<=0.800000, 0.400000<=TOMsg<=0.600000, 0.400000<=TOAck<=0.600000; -0.200000<=pL<=0.400000, 0.600000<=pK<=0.800000, 0.400000<=TOMsg<=0.600000, 0.600000<=TOAck<=0.800000; -0.200000<=pL<=0.400000, 0.600000<=pK<=0.800000, 0.400000<=TOMsg<=0.600000, 0.800000<=TOAck<=0.999990; -0.200000<=pL<=0.400000, 0.600000<=pK<=0.800000, 0.600000<=TOMsg<=0.800000, 0.000010<=TOAck<=0.200000; -0.200000<=pL<=0.400000, 0.600000<=pK<=0.800000, 0.600000<=TOMsg<=0.800000, 0.200000<=TOAck<=0.400000; -0.200000<=pL<=0.400000, 0.600000<=pK<=0.800000, 0.600000<=TOMsg<=0.800000, 0.400000<=TOAck<=0.600000; -0.200000<=pL<=0.400000, 0.600000<=pK<=0.800000, 0.600000<=TOMsg<=0.800000, 0.600000<=TOAck<=0.800000; -0.200000<=pL<=0.400000, 0.600000<=pK<=0.800000, 0.600000<=TOMsg<=0.800000, 0.800000<=TOAck<=0.999990; -0.200000<=pL<=0.400000, 0.600000<=pK<=0.800000, 0.800000<=TOMsg<=0.999990, 0.000010<=TOAck<=0.200000; -0.200000<=pL<=0.400000, 0.600000<=pK<=0.800000, 0.800000<=TOMsg<=0.999990, 0.200000<=TOAck<=0.400000; -0.200000<=pL<=0.400000, 0.600000<=pK<=0.800000, 0.800000<=TOMsg<=0.999990, 0.400000<=TOAck<=0.600000; -0.200000<=pL<=0.400000, 0.600000<=pK<=0.800000, 0.800000<=TOMsg<=0.999990, 0.600000<=TOAck<=0.800000; -0.200000<=pL<=0.400000, 0.600000<=pK<=0.800000, 0.800000<=TOMsg<=0.999990, 0.800000<=TOAck<=0.999990; -0.200000<=pL<=0.400000, 0.800000<=pK<=0.999990, 0.000010<=TOMsg<=0.200000, 0.000010<=TOAck<=0.200000; -0.200000<=pL<=0.400000, 0.800000<=pK<=0.999990, 0.000010<=TOMsg<=0.200000, 0.200000<=TOAck<=0.400000; -0.200000<=pL<=0.400000, 0.800000<=pK<=0.999990, 0.000010<=TOMsg<=0.200000, 0.400000<=TOAck<=0.600000; -0.200000<=pL<=0.400000, 0.800000<=pK<=0.999990, 0.000010<=TOMsg<=0.200000, 0.600000<=TOAck<=0.800000; -0.200000<=pL<=0.400000, 0.800000<=pK<=0.999990, 0.000010<=TOMsg<=0.200000, 0.800000<=TOAck<=0.999990; -0.200000<=pL<=0.400000, 0.800000<=pK<=0.999990, 0.200000<=TOMsg<=0.400000, 0.000010<=TOAck<=0.200000; -0.200000<=pL<=0.400000, 0.800000<=pK<=0.999990, 0.200000<=TOMsg<=0.400000, 0.200000<=TOAck<=0.400000; -0.200000<=pL<=0.400000, 0.800000<=pK<=0.999990, 0.200000<=TOMsg<=0.400000, 0.400000<=TOAck<=0.600000; -0.200000<=pL<=0.400000, 0.800000<=pK<=0.999990, 0.200000<=TOMsg<=0.400000, 0.600000<=TOAck<=0.800000; -0.200000<=pL<=0.400000, 0.800000<=pK<=0.999990, 0.200000<=TOMsg<=0.400000, 0.800000<=TOAck<=0.999990; -0.200000<=pL<=0.400000, 0.800000<=pK<=0.999990, 0.400000<=TOMsg<=0.600000, 0.000010<=TOAck<=0.200000; -0.200000<=pL<=0.400000, 0.800000<=pK<=0.999990, 0.400000<=TOMsg<=0.600000, 0.200000<=TOAck<=0.400000; -0.200000<=pL<=0.400000, 0.800000<=pK<=0.999990, 0.400000<=TOMsg<=0.600000, 0.400000<=TOAck<=0.600000; -0.200000<=pL<=0.400000, 0.800000<=pK<=0.999990, 0.400000<=TOMsg<=0.600000, 0.600000<=TOAck<=0.800000; -0.200000<=pL<=0.400000, 0.800000<=pK<=0.999990, 0.400000<=TOMsg<=0.600000, 0.800000<=TOAck<=0.999990; -0.200000<=pL<=0.400000, 0.800000<=pK<=0.999990, 0.600000<=TOMsg<=0.800000, 0.000010<=TOAck<=0.200000; -0.200000<=pL<=0.400000, 0.800000<=pK<=0.999990, 0.600000<=TOMsg<=0.800000, 0.200000<=TOAck<=0.400000; -0.200000<=pL<=0.400000, 0.800000<=pK<=0.999990, 0.600000<=TOMsg<=0.800000, 0.400000<=TOAck<=0.600000; -0.200000<=pL<=0.400000, 0.800000<=pK<=0.999990, 0.600000<=TOMsg<=0.800000, 0.600000<=TOAck<=0.800000; -0.200000<=pL<=0.400000, 0.800000<=pK<=0.999990, 0.600000<=TOMsg<=0.800000, 0.800000<=TOAck<=0.999990; -0.200000<=pL<=0.400000, 0.800000<=pK<=0.999990, 0.800000<=TOMsg<=0.999990, 0.000010<=TOAck<=0.200000; -0.200000<=pL<=0.400000, 0.800000<=pK<=0.999990, 0.800000<=TOMsg<=0.999990, 0.200000<=TOAck<=0.400000; -0.200000<=pL<=0.400000, 0.800000<=pK<=0.999990, 0.800000<=TOMsg<=0.999990, 0.400000<=TOAck<=0.600000; -0.200000<=pL<=0.400000, 0.800000<=pK<=0.999990, 0.800000<=TOMsg<=0.999990, 0.600000<=TOAck<=0.800000; -0.200000<=pL<=0.400000, 0.800000<=pK<=0.999990, 0.800000<=TOMsg<=0.999990, 0.800000<=TOAck<=0.999990; -0.400000<=pL<=0.600000, 0.000010<=pK<=0.200000, 0.000010<=TOMsg<=0.200000, 0.000010<=TOAck<=0.200000; -0.400000<=pL<=0.600000, 0.000010<=pK<=0.200000, 0.000010<=TOMsg<=0.200000, 0.200000<=TOAck<=0.400000; -0.400000<=pL<=0.600000, 0.000010<=pK<=0.200000, 0.000010<=TOMsg<=0.200000, 0.400000<=TOAck<=0.600000; -0.400000<=pL<=0.600000, 0.000010<=pK<=0.200000, 0.000010<=TOMsg<=0.200000, 0.600000<=TOAck<=0.800000; -0.400000<=pL<=0.600000, 0.000010<=pK<=0.200000, 0.000010<=TOMsg<=0.200000, 0.800000<=TOAck<=0.999990; -0.400000<=pL<=0.600000, 0.000010<=pK<=0.200000, 0.200000<=TOMsg<=0.400000, 0.000010<=TOAck<=0.200000; -0.400000<=pL<=0.600000, 0.000010<=pK<=0.200000, 0.200000<=TOMsg<=0.400000, 0.200000<=TOAck<=0.400000; -0.400000<=pL<=0.600000, 0.000010<=pK<=0.200000, 0.200000<=TOMsg<=0.400000, 0.400000<=TOAck<=0.600000; -0.400000<=pL<=0.600000, 0.000010<=pK<=0.200000, 0.200000<=TOMsg<=0.400000, 0.600000<=TOAck<=0.800000; -0.400000<=pL<=0.600000, 0.000010<=pK<=0.200000, 0.200000<=TOMsg<=0.400000, 0.800000<=TOAck<=0.999990; -0.400000<=pL<=0.600000, 0.000010<=pK<=0.200000, 0.400000<=TOMsg<=0.600000, 0.000010<=TOAck<=0.200000; -0.400000<=pL<=0.600000, 0.000010<=pK<=0.200000, 0.400000<=TOMsg<=0.600000, 0.200000<=TOAck<=0.400000; -0.400000<=pL<=0.600000, 0.000010<=pK<=0.200000, 0.400000<=TOMsg<=0.600000, 0.400000<=TOAck<=0.600000; -0.400000<=pL<=0.600000, 0.000010<=pK<=0.200000, 0.400000<=TOMsg<=0.600000, 0.600000<=TOAck<=0.800000; -0.400000<=pL<=0.600000, 0.000010<=pK<=0.200000, 0.400000<=TOMsg<=0.600000, 0.800000<=TOAck<=0.999990; -0.400000<=pL<=0.600000, 0.000010<=pK<=0.200000, 0.600000<=TOMsg<=0.800000, 0.000010<=TOAck<=0.200000; -0.400000<=pL<=0.600000, 0.000010<=pK<=0.200000, 0.600000<=TOMsg<=0.800000, 0.200000<=TOAck<=0.400000; -0.400000<=pL<=0.600000, 0.000010<=pK<=0.200000, 0.600000<=TOMsg<=0.800000, 0.400000<=TOAck<=0.600000; -0.400000<=pL<=0.600000, 0.000010<=pK<=0.200000, 0.600000<=TOMsg<=0.800000, 0.600000<=TOAck<=0.800000; -0.400000<=pL<=0.600000, 0.000010<=pK<=0.200000, 0.600000<=TOMsg<=0.800000, 0.800000<=TOAck<=0.999990; -0.400000<=pL<=0.600000, 0.000010<=pK<=0.200000, 0.800000<=TOMsg<=0.999990, 0.000010<=TOAck<=0.200000; -0.400000<=pL<=0.600000, 0.000010<=pK<=0.200000, 0.800000<=TOMsg<=0.999990, 0.200000<=TOAck<=0.400000; -0.400000<=pL<=0.600000, 0.000010<=pK<=0.200000, 0.800000<=TOMsg<=0.999990, 0.400000<=TOAck<=0.600000; -0.400000<=pL<=0.600000, 0.000010<=pK<=0.200000, 0.800000<=TOMsg<=0.999990, 0.600000<=TOAck<=0.800000; -0.400000<=pL<=0.600000, 0.000010<=pK<=0.200000, 0.800000<=TOMsg<=0.999990, 0.800000<=TOAck<=0.999990; -0.400000<=pL<=0.600000, 0.200000<=pK<=0.400000, 0.000010<=TOMsg<=0.200000, 0.000010<=TOAck<=0.200000; -0.400000<=pL<=0.600000, 0.200000<=pK<=0.400000, 0.000010<=TOMsg<=0.200000, 0.200000<=TOAck<=0.400000; -0.400000<=pL<=0.600000, 0.200000<=pK<=0.400000, 0.000010<=TOMsg<=0.200000, 0.400000<=TOAck<=0.600000; -0.400000<=pL<=0.600000, 0.200000<=pK<=0.400000, 0.000010<=TOMsg<=0.200000, 0.600000<=TOAck<=0.800000; -0.400000<=pL<=0.600000, 0.200000<=pK<=0.400000, 0.000010<=TOMsg<=0.200000, 0.800000<=TOAck<=0.999990; -0.400000<=pL<=0.600000, 0.200000<=pK<=0.400000, 0.200000<=TOMsg<=0.400000, 0.000010<=TOAck<=0.200000; -0.400000<=pL<=0.600000, 0.200000<=pK<=0.400000, 0.200000<=TOMsg<=0.400000, 0.200000<=TOAck<=0.400000; -0.400000<=pL<=0.600000, 0.200000<=pK<=0.400000, 0.200000<=TOMsg<=0.400000, 0.400000<=TOAck<=0.600000; -0.400000<=pL<=0.600000, 0.200000<=pK<=0.400000, 0.200000<=TOMsg<=0.400000, 0.600000<=TOAck<=0.800000; -0.400000<=pL<=0.600000, 0.200000<=pK<=0.400000, 0.200000<=TOMsg<=0.400000, 0.800000<=TOAck<=0.999990; -0.400000<=pL<=0.600000, 0.200000<=pK<=0.400000, 0.400000<=TOMsg<=0.600000, 0.000010<=TOAck<=0.200000; -0.400000<=pL<=0.600000, 0.200000<=pK<=0.400000, 0.400000<=TOMsg<=0.600000, 0.200000<=TOAck<=0.400000; -0.400000<=pL<=0.600000, 0.200000<=pK<=0.400000, 0.400000<=TOMsg<=0.600000, 0.400000<=TOAck<=0.600000; -0.400000<=pL<=0.600000, 0.200000<=pK<=0.400000, 0.400000<=TOMsg<=0.600000, 0.600000<=TOAck<=0.800000; -0.400000<=pL<=0.600000, 0.200000<=pK<=0.400000, 0.400000<=TOMsg<=0.600000, 0.800000<=TOAck<=0.999990; -0.400000<=pL<=0.600000, 0.200000<=pK<=0.400000, 0.600000<=TOMsg<=0.800000, 0.000010<=TOAck<=0.200000; -0.400000<=pL<=0.600000, 0.200000<=pK<=0.400000, 0.600000<=TOMsg<=0.800000, 0.200000<=TOAck<=0.400000; -0.400000<=pL<=0.600000, 0.200000<=pK<=0.400000, 0.600000<=TOMsg<=0.800000, 0.400000<=TOAck<=0.600000; -0.400000<=pL<=0.600000, 0.200000<=pK<=0.400000, 0.600000<=TOMsg<=0.800000, 0.600000<=TOAck<=0.800000; -0.400000<=pL<=0.600000, 0.200000<=pK<=0.400000, 0.600000<=TOMsg<=0.800000, 0.800000<=TOAck<=0.999990; -0.400000<=pL<=0.600000, 0.200000<=pK<=0.400000, 0.800000<=TOMsg<=0.999990, 0.000010<=TOAck<=0.200000; -0.400000<=pL<=0.600000, 0.200000<=pK<=0.400000, 0.800000<=TOMsg<=0.999990, 0.200000<=TOAck<=0.400000; -0.400000<=pL<=0.600000, 0.200000<=pK<=0.400000, 0.800000<=TOMsg<=0.999990, 0.400000<=TOAck<=0.600000; -0.400000<=pL<=0.600000, 0.200000<=pK<=0.400000, 0.800000<=TOMsg<=0.999990, 0.600000<=TOAck<=0.800000; -0.400000<=pL<=0.600000, 0.200000<=pK<=0.400000, 0.800000<=TOMsg<=0.999990, 0.800000<=TOAck<=0.999990; -0.400000<=pL<=0.600000, 0.400000<=pK<=0.600000, 0.000010<=TOMsg<=0.200000, 0.000010<=TOAck<=0.200000; -0.400000<=pL<=0.600000, 0.400000<=pK<=0.600000, 0.000010<=TOMsg<=0.200000, 0.200000<=TOAck<=0.400000; -0.400000<=pL<=0.600000, 0.400000<=pK<=0.600000, 0.000010<=TOMsg<=0.200000, 0.400000<=TOAck<=0.600000; -0.400000<=pL<=0.600000, 0.400000<=pK<=0.600000, 0.000010<=TOMsg<=0.200000, 0.600000<=TOAck<=0.800000; -0.400000<=pL<=0.600000, 0.400000<=pK<=0.600000, 0.000010<=TOMsg<=0.200000, 0.800000<=TOAck<=0.999990; -0.400000<=pL<=0.600000, 0.400000<=pK<=0.600000, 0.200000<=TOMsg<=0.400000, 0.000010<=TOAck<=0.200000; -0.400000<=pL<=0.600000, 0.400000<=pK<=0.600000, 0.200000<=TOMsg<=0.400000, 0.200000<=TOAck<=0.400000; -0.400000<=pL<=0.600000, 0.400000<=pK<=0.600000, 0.200000<=TOMsg<=0.400000, 0.400000<=TOAck<=0.600000; -0.400000<=pL<=0.600000, 0.400000<=pK<=0.600000, 0.200000<=TOMsg<=0.400000, 0.600000<=TOAck<=0.800000; -0.400000<=pL<=0.600000, 0.400000<=pK<=0.600000, 0.200000<=TOMsg<=0.400000, 0.800000<=TOAck<=0.999990; -0.400000<=pL<=0.600000, 0.400000<=pK<=0.600000, 0.400000<=TOMsg<=0.600000, 0.000010<=TOAck<=0.200000; -0.400000<=pL<=0.600000, 0.400000<=pK<=0.600000, 0.400000<=TOMsg<=0.600000, 0.200000<=TOAck<=0.400000; -0.400000<=pL<=0.600000, 0.400000<=pK<=0.600000, 0.400000<=TOMsg<=0.600000, 0.400000<=TOAck<=0.600000; -0.400000<=pL<=0.600000, 0.400000<=pK<=0.600000, 0.400000<=TOMsg<=0.600000, 0.600000<=TOAck<=0.800000; -0.400000<=pL<=0.600000, 0.400000<=pK<=0.600000, 0.400000<=TOMsg<=0.600000, 0.800000<=TOAck<=0.999990; -0.400000<=pL<=0.600000, 0.400000<=pK<=0.600000, 0.600000<=TOMsg<=0.800000, 0.000010<=TOAck<=0.200000; -0.400000<=pL<=0.600000, 0.400000<=pK<=0.600000, 0.600000<=TOMsg<=0.800000, 0.200000<=TOAck<=0.400000; -0.400000<=pL<=0.600000, 0.400000<=pK<=0.600000, 0.600000<=TOMsg<=0.800000, 0.400000<=TOAck<=0.600000; -0.400000<=pL<=0.600000, 0.400000<=pK<=0.600000, 0.600000<=TOMsg<=0.800000, 0.600000<=TOAck<=0.800000; -0.400000<=pL<=0.600000, 0.400000<=pK<=0.600000, 0.600000<=TOMsg<=0.800000, 0.800000<=TOAck<=0.999990; -0.400000<=pL<=0.600000, 0.400000<=pK<=0.600000, 0.800000<=TOMsg<=0.999990, 0.000010<=TOAck<=0.200000; -0.400000<=pL<=0.600000, 0.400000<=pK<=0.600000, 0.800000<=TOMsg<=0.999990, 0.200000<=TOAck<=0.400000; -0.400000<=pL<=0.600000, 0.400000<=pK<=0.600000, 0.800000<=TOMsg<=0.999990, 0.400000<=TOAck<=0.600000; -0.400000<=pL<=0.600000, 0.400000<=pK<=0.600000, 0.800000<=TOMsg<=0.999990, 0.600000<=TOAck<=0.800000; -0.400000<=pL<=0.600000, 0.400000<=pK<=0.600000, 0.800000<=TOMsg<=0.999990, 0.800000<=TOAck<=0.999990; -0.400000<=pL<=0.600000, 0.600000<=pK<=0.800000, 0.000010<=TOMsg<=0.200000, 0.000010<=TOAck<=0.200000; -0.400000<=pL<=0.600000, 0.600000<=pK<=0.800000, 0.000010<=TOMsg<=0.200000, 0.200000<=TOAck<=0.400000; -0.400000<=pL<=0.600000, 0.600000<=pK<=0.800000, 0.000010<=TOMsg<=0.200000, 0.400000<=TOAck<=0.600000; -0.400000<=pL<=0.600000, 0.600000<=pK<=0.800000, 0.000010<=TOMsg<=0.200000, 0.600000<=TOAck<=0.800000; -0.400000<=pL<=0.600000, 0.600000<=pK<=0.800000, 0.000010<=TOMsg<=0.200000, 0.800000<=TOAck<=0.999990; -0.400000<=pL<=0.600000, 0.600000<=pK<=0.800000, 0.200000<=TOMsg<=0.400000, 0.000010<=TOAck<=0.200000; -0.400000<=pL<=0.600000, 0.600000<=pK<=0.800000, 0.200000<=TOMsg<=0.400000, 0.200000<=TOAck<=0.400000; -0.400000<=pL<=0.600000, 0.600000<=pK<=0.800000, 0.200000<=TOMsg<=0.400000, 0.400000<=TOAck<=0.600000; -0.400000<=pL<=0.600000, 0.600000<=pK<=0.800000, 0.200000<=TOMsg<=0.400000, 0.600000<=TOAck<=0.800000; -0.400000<=pL<=0.600000, 0.600000<=pK<=0.800000, 0.200000<=TOMsg<=0.400000, 0.800000<=TOAck<=0.999990; -0.400000<=pL<=0.600000, 0.600000<=pK<=0.800000, 0.400000<=TOMsg<=0.600000, 0.000010<=TOAck<=0.200000; -0.400000<=pL<=0.600000, 0.600000<=pK<=0.800000, 0.400000<=TOMsg<=0.600000, 0.200000<=TOAck<=0.400000; -0.400000<=pL<=0.600000, 0.600000<=pK<=0.800000, 0.400000<=TOMsg<=0.600000, 0.400000<=TOAck<=0.600000; -0.400000<=pL<=0.600000, 0.600000<=pK<=0.800000, 0.400000<=TOMsg<=0.600000, 0.600000<=TOAck<=0.800000; -0.400000<=pL<=0.600000, 0.600000<=pK<=0.800000, 0.400000<=TOMsg<=0.600000, 0.800000<=TOAck<=0.999990; -0.400000<=pL<=0.600000, 0.600000<=pK<=0.800000, 0.600000<=TOMsg<=0.800000, 0.000010<=TOAck<=0.200000; -0.400000<=pL<=0.600000, 0.600000<=pK<=0.800000, 0.600000<=TOMsg<=0.800000, 0.200000<=TOAck<=0.400000; -0.400000<=pL<=0.600000, 0.600000<=pK<=0.800000, 0.600000<=TOMsg<=0.800000, 0.400000<=TOAck<=0.600000; -0.400000<=pL<=0.600000, 0.600000<=pK<=0.800000, 0.600000<=TOMsg<=0.800000, 0.600000<=TOAck<=0.800000; -0.400000<=pL<=0.600000, 0.600000<=pK<=0.800000, 0.600000<=TOMsg<=0.800000, 0.800000<=TOAck<=0.999990; -0.400000<=pL<=0.600000, 0.600000<=pK<=0.800000, 0.800000<=TOMsg<=0.999990, 0.000010<=TOAck<=0.200000; -0.400000<=pL<=0.600000, 0.600000<=pK<=0.800000, 0.800000<=TOMsg<=0.999990, 0.200000<=TOAck<=0.400000; -0.400000<=pL<=0.600000, 0.600000<=pK<=0.800000, 0.800000<=TOMsg<=0.999990, 0.400000<=TOAck<=0.600000; -0.400000<=pL<=0.600000, 0.600000<=pK<=0.800000, 0.800000<=TOMsg<=0.999990, 0.600000<=TOAck<=0.800000; -0.400000<=pL<=0.600000, 0.600000<=pK<=0.800000, 0.800000<=TOMsg<=0.999990, 0.800000<=TOAck<=0.999990; -0.400000<=pL<=0.600000, 0.800000<=pK<=0.999990, 0.000010<=TOMsg<=0.200000, 0.000010<=TOAck<=0.200000; -0.400000<=pL<=0.600000, 0.800000<=pK<=0.999990, 0.000010<=TOMsg<=0.200000, 0.200000<=TOAck<=0.400000; -0.400000<=pL<=0.600000, 0.800000<=pK<=0.999990, 0.000010<=TOMsg<=0.200000, 0.400000<=TOAck<=0.600000; -0.400000<=pL<=0.600000, 0.800000<=pK<=0.999990, 0.000010<=TOMsg<=0.200000, 0.600000<=TOAck<=0.800000; -0.400000<=pL<=0.600000, 0.800000<=pK<=0.999990, 0.000010<=TOMsg<=0.200000, 0.800000<=TOAck<=0.999990; -0.400000<=pL<=0.600000, 0.800000<=pK<=0.999990, 0.200000<=TOMsg<=0.400000, 0.000010<=TOAck<=0.200000; -0.400000<=pL<=0.600000, 0.800000<=pK<=0.999990, 0.200000<=TOMsg<=0.400000, 0.200000<=TOAck<=0.400000; -0.400000<=pL<=0.600000, 0.800000<=pK<=0.999990, 0.200000<=TOMsg<=0.400000, 0.400000<=TOAck<=0.600000; -0.400000<=pL<=0.600000, 0.800000<=pK<=0.999990, 0.200000<=TOMsg<=0.400000, 0.600000<=TOAck<=0.800000; -0.400000<=pL<=0.600000, 0.800000<=pK<=0.999990, 0.200000<=TOMsg<=0.400000, 0.800000<=TOAck<=0.999990; -0.400000<=pL<=0.600000, 0.800000<=pK<=0.999990, 0.400000<=TOMsg<=0.600000, 0.000010<=TOAck<=0.200000; -0.400000<=pL<=0.600000, 0.800000<=pK<=0.999990, 0.400000<=TOMsg<=0.600000, 0.200000<=TOAck<=0.400000; -0.400000<=pL<=0.600000, 0.800000<=pK<=0.999990, 0.400000<=TOMsg<=0.600000, 0.400000<=TOAck<=0.600000; -0.400000<=pL<=0.600000, 0.800000<=pK<=0.999990, 0.400000<=TOMsg<=0.600000, 0.600000<=TOAck<=0.800000; -0.400000<=pL<=0.600000, 0.800000<=pK<=0.999990, 0.400000<=TOMsg<=0.600000, 0.800000<=TOAck<=0.999990; -0.400000<=pL<=0.600000, 0.800000<=pK<=0.999990, 0.600000<=TOMsg<=0.800000, 0.000010<=TOAck<=0.200000; -0.400000<=pL<=0.600000, 0.800000<=pK<=0.999990, 0.600000<=TOMsg<=0.800000, 0.200000<=TOAck<=0.400000; -0.400000<=pL<=0.600000, 0.800000<=pK<=0.999990, 0.600000<=TOMsg<=0.800000, 0.400000<=TOAck<=0.600000; -0.400000<=pL<=0.600000, 0.800000<=pK<=0.999990, 0.600000<=TOMsg<=0.800000, 0.600000<=TOAck<=0.800000; -0.400000<=pL<=0.600000, 0.800000<=pK<=0.999990, 0.600000<=TOMsg<=0.800000, 0.800000<=TOAck<=0.999990; -0.400000<=pL<=0.600000, 0.800000<=pK<=0.999990, 0.800000<=TOMsg<=0.999990, 0.000010<=TOAck<=0.200000; -0.400000<=pL<=0.600000, 0.800000<=pK<=0.999990, 0.800000<=TOMsg<=0.999990, 0.200000<=TOAck<=0.400000; -0.400000<=pL<=0.600000, 0.800000<=pK<=0.999990, 0.800000<=TOMsg<=0.999990, 0.400000<=TOAck<=0.600000; -0.400000<=pL<=0.600000, 0.800000<=pK<=0.999990, 0.800000<=TOMsg<=0.999990, 0.600000<=TOAck<=0.800000; -0.400000<=pL<=0.600000, 0.800000<=pK<=0.999990, 0.800000<=TOMsg<=0.999990, 0.800000<=TOAck<=0.999990; -0.600000<=pL<=0.800000, 0.000010<=pK<=0.200000, 0.000010<=TOMsg<=0.200000, 0.000010<=TOAck<=0.200000; -0.600000<=pL<=0.800000, 0.000010<=pK<=0.200000, 0.000010<=TOMsg<=0.200000, 0.200000<=TOAck<=0.400000; -0.600000<=pL<=0.800000, 0.000010<=pK<=0.200000, 0.000010<=TOMsg<=0.200000, 0.400000<=TOAck<=0.600000; -0.600000<=pL<=0.800000, 0.000010<=pK<=0.200000, 0.000010<=TOMsg<=0.200000, 0.600000<=TOAck<=0.800000; -0.600000<=pL<=0.800000, 0.000010<=pK<=0.200000, 0.000010<=TOMsg<=0.200000, 0.800000<=TOAck<=0.999990; -0.600000<=pL<=0.800000, 0.000010<=pK<=0.200000, 0.200000<=TOMsg<=0.400000, 0.000010<=TOAck<=0.200000; -0.600000<=pL<=0.800000, 0.000010<=pK<=0.200000, 0.200000<=TOMsg<=0.400000, 0.200000<=TOAck<=0.400000; -0.600000<=pL<=0.800000, 0.000010<=pK<=0.200000, 0.200000<=TOMsg<=0.400000, 0.400000<=TOAck<=0.600000; -0.600000<=pL<=0.800000, 0.000010<=pK<=0.200000, 0.200000<=TOMsg<=0.400000, 0.600000<=TOAck<=0.800000; -0.600000<=pL<=0.800000, 0.000010<=pK<=0.200000, 0.200000<=TOMsg<=0.400000, 0.800000<=TOAck<=0.999990; -0.600000<=pL<=0.800000, 0.000010<=pK<=0.200000, 0.400000<=TOMsg<=0.600000, 0.000010<=TOAck<=0.200000; -0.600000<=pL<=0.800000, 0.000010<=pK<=0.200000, 0.400000<=TOMsg<=0.600000, 0.200000<=TOAck<=0.400000; -0.600000<=pL<=0.800000, 0.000010<=pK<=0.200000, 0.400000<=TOMsg<=0.600000, 0.400000<=TOAck<=0.600000; -0.600000<=pL<=0.800000, 0.000010<=pK<=0.200000, 0.400000<=TOMsg<=0.600000, 0.600000<=TOAck<=0.800000; -0.600000<=pL<=0.800000, 0.000010<=pK<=0.200000, 0.400000<=TOMsg<=0.600000, 0.800000<=TOAck<=0.999990; -0.600000<=pL<=0.800000, 0.000010<=pK<=0.200000, 0.600000<=TOMsg<=0.800000, 0.000010<=TOAck<=0.200000; -0.600000<=pL<=0.800000, 0.000010<=pK<=0.200000, 0.600000<=TOMsg<=0.800000, 0.200000<=TOAck<=0.400000; -0.600000<=pL<=0.800000, 0.000010<=pK<=0.200000, 0.600000<=TOMsg<=0.800000, 0.400000<=TOAck<=0.600000; -0.600000<=pL<=0.800000, 0.000010<=pK<=0.200000, 0.600000<=TOMsg<=0.800000, 0.600000<=TOAck<=0.800000; -0.600000<=pL<=0.800000, 0.000010<=pK<=0.200000, 0.600000<=TOMsg<=0.800000, 0.800000<=TOAck<=0.999990; -0.600000<=pL<=0.800000, 0.000010<=pK<=0.200000, 0.800000<=TOMsg<=0.999990, 0.000010<=TOAck<=0.200000; -0.600000<=pL<=0.800000, 0.000010<=pK<=0.200000, 0.800000<=TOMsg<=0.999990, 0.200000<=TOAck<=0.400000; -0.600000<=pL<=0.800000, 0.000010<=pK<=0.200000, 0.800000<=TOMsg<=0.999990, 0.400000<=TOAck<=0.600000; -0.600000<=pL<=0.800000, 0.000010<=pK<=0.200000, 0.800000<=TOMsg<=0.999990, 0.600000<=TOAck<=0.800000; -0.600000<=pL<=0.800000, 0.000010<=pK<=0.200000, 0.800000<=TOMsg<=0.999990, 0.800000<=TOAck<=0.999990; -0.600000<=pL<=0.800000, 0.200000<=pK<=0.400000, 0.000010<=TOMsg<=0.200000, 0.000010<=TOAck<=0.200000; -0.600000<=pL<=0.800000, 0.200000<=pK<=0.400000, 0.000010<=TOMsg<=0.200000, 0.200000<=TOAck<=0.400000; -0.600000<=pL<=0.800000, 0.200000<=pK<=0.400000, 0.000010<=TOMsg<=0.200000, 0.400000<=TOAck<=0.600000; -0.600000<=pL<=0.800000, 0.200000<=pK<=0.400000, 0.000010<=TOMsg<=0.200000, 0.600000<=TOAck<=0.800000; -0.600000<=pL<=0.800000, 0.200000<=pK<=0.400000, 0.000010<=TOMsg<=0.200000, 0.800000<=TOAck<=0.999990; -0.600000<=pL<=0.800000, 0.200000<=pK<=0.400000, 0.200000<=TOMsg<=0.400000, 0.000010<=TOAck<=0.200000; -0.600000<=pL<=0.800000, 0.200000<=pK<=0.400000, 0.200000<=TOMsg<=0.400000, 0.200000<=TOAck<=0.400000; -0.600000<=pL<=0.800000, 0.200000<=pK<=0.400000, 0.200000<=TOMsg<=0.400000, 0.400000<=TOAck<=0.600000; -0.600000<=pL<=0.800000, 0.200000<=pK<=0.400000, 0.200000<=TOMsg<=0.400000, 0.600000<=TOAck<=0.800000; -0.600000<=pL<=0.800000, 0.200000<=pK<=0.400000, 0.200000<=TOMsg<=0.400000, 0.800000<=TOAck<=0.999990; -0.600000<=pL<=0.800000, 0.200000<=pK<=0.400000, 0.400000<=TOMsg<=0.600000, 0.000010<=TOAck<=0.200000; -0.600000<=pL<=0.800000, 0.200000<=pK<=0.400000, 0.400000<=TOMsg<=0.600000, 0.200000<=TOAck<=0.400000; -0.600000<=pL<=0.800000, 0.200000<=pK<=0.400000, 0.400000<=TOMsg<=0.600000, 0.400000<=TOAck<=0.600000; -0.600000<=pL<=0.800000, 0.200000<=pK<=0.400000, 0.400000<=TOMsg<=0.600000, 0.600000<=TOAck<=0.800000; -0.600000<=pL<=0.800000, 0.200000<=pK<=0.400000, 0.400000<=TOMsg<=0.600000, 0.800000<=TOAck<=0.999990; -0.600000<=pL<=0.800000, 0.200000<=pK<=0.400000, 0.600000<=TOMsg<=0.800000, 0.000010<=TOAck<=0.200000; -0.600000<=pL<=0.800000, 0.200000<=pK<=0.400000, 0.600000<=TOMsg<=0.800000, 0.200000<=TOAck<=0.400000; -0.600000<=pL<=0.800000, 0.200000<=pK<=0.400000, 0.600000<=TOMsg<=0.800000, 0.400000<=TOAck<=0.600000; -0.600000<=pL<=0.800000, 0.200000<=pK<=0.400000, 0.600000<=TOMsg<=0.800000, 0.600000<=TOAck<=0.800000; -0.600000<=pL<=0.800000, 0.200000<=pK<=0.400000, 0.600000<=TOMsg<=0.800000, 0.800000<=TOAck<=0.999990; -0.600000<=pL<=0.800000, 0.200000<=pK<=0.400000, 0.800000<=TOMsg<=0.999990, 0.000010<=TOAck<=0.200000; -0.600000<=pL<=0.800000, 0.200000<=pK<=0.400000, 0.800000<=TOMsg<=0.999990, 0.200000<=TOAck<=0.400000; -0.600000<=pL<=0.800000, 0.200000<=pK<=0.400000, 0.800000<=TOMsg<=0.999990, 0.400000<=TOAck<=0.600000; -0.600000<=pL<=0.800000, 0.200000<=pK<=0.400000, 0.800000<=TOMsg<=0.999990, 0.600000<=TOAck<=0.800000; -0.600000<=pL<=0.800000, 0.200000<=pK<=0.400000, 0.800000<=TOMsg<=0.999990, 0.800000<=TOAck<=0.999990; -0.600000<=pL<=0.800000, 0.400000<=pK<=0.600000, 0.000010<=TOMsg<=0.200000, 0.000010<=TOAck<=0.200000; -0.600000<=pL<=0.800000, 0.400000<=pK<=0.600000, 0.000010<=TOMsg<=0.200000, 0.200000<=TOAck<=0.400000; -0.600000<=pL<=0.800000, 0.400000<=pK<=0.600000, 0.000010<=TOMsg<=0.200000, 0.400000<=TOAck<=0.600000; -0.600000<=pL<=0.800000, 0.400000<=pK<=0.600000, 0.000010<=TOMsg<=0.200000, 0.600000<=TOAck<=0.800000; -0.600000<=pL<=0.800000, 0.400000<=pK<=0.600000, 0.000010<=TOMsg<=0.200000, 0.800000<=TOAck<=0.999990; -0.600000<=pL<=0.800000, 0.400000<=pK<=0.600000, 0.200000<=TOMsg<=0.400000, 0.000010<=TOAck<=0.200000; -0.600000<=pL<=0.800000, 0.400000<=pK<=0.600000, 0.200000<=TOMsg<=0.400000, 0.200000<=TOAck<=0.400000; -0.600000<=pL<=0.800000, 0.400000<=pK<=0.600000, 0.200000<=TOMsg<=0.400000, 0.400000<=TOAck<=0.600000; -0.600000<=pL<=0.800000, 0.400000<=pK<=0.600000, 0.200000<=TOMsg<=0.400000, 0.600000<=TOAck<=0.800000; -0.600000<=pL<=0.800000, 0.400000<=pK<=0.600000, 0.200000<=TOMsg<=0.400000, 0.800000<=TOAck<=0.999990; -0.600000<=pL<=0.800000, 0.400000<=pK<=0.600000, 0.400000<=TOMsg<=0.600000, 0.000010<=TOAck<=0.200000; -0.600000<=pL<=0.800000, 0.400000<=pK<=0.600000, 0.400000<=TOMsg<=0.600000, 0.200000<=TOAck<=0.400000; -0.600000<=pL<=0.800000, 0.400000<=pK<=0.600000, 0.400000<=TOMsg<=0.600000, 0.400000<=TOAck<=0.600000; -0.600000<=pL<=0.800000, 0.400000<=pK<=0.600000, 0.400000<=TOMsg<=0.600000, 0.600000<=TOAck<=0.800000; -0.600000<=pL<=0.800000, 0.400000<=pK<=0.600000, 0.400000<=TOMsg<=0.600000, 0.800000<=TOAck<=0.999990; -0.600000<=pL<=0.800000, 0.400000<=pK<=0.600000, 0.600000<=TOMsg<=0.800000, 0.000010<=TOAck<=0.200000; -0.600000<=pL<=0.800000, 0.400000<=pK<=0.600000, 0.600000<=TOMsg<=0.800000, 0.200000<=TOAck<=0.400000; -0.600000<=pL<=0.800000, 0.400000<=pK<=0.600000, 0.600000<=TOMsg<=0.800000, 0.400000<=TOAck<=0.600000; -0.600000<=pL<=0.800000, 0.400000<=pK<=0.600000, 0.600000<=TOMsg<=0.800000, 0.600000<=TOAck<=0.800000; -0.600000<=pL<=0.800000, 0.400000<=pK<=0.600000, 0.600000<=TOMsg<=0.800000, 0.800000<=TOAck<=0.999990; -0.600000<=pL<=0.800000, 0.400000<=pK<=0.600000, 0.800000<=TOMsg<=0.999990, 0.000010<=TOAck<=0.200000; -0.600000<=pL<=0.800000, 0.400000<=pK<=0.600000, 0.800000<=TOMsg<=0.999990, 0.200000<=TOAck<=0.400000; -0.600000<=pL<=0.800000, 0.400000<=pK<=0.600000, 0.800000<=TOMsg<=0.999990, 0.400000<=TOAck<=0.600000; -0.600000<=pL<=0.800000, 0.400000<=pK<=0.600000, 0.800000<=TOMsg<=0.999990, 0.600000<=TOAck<=0.800000; -0.600000<=pL<=0.800000, 0.400000<=pK<=0.600000, 0.800000<=TOMsg<=0.999990, 0.800000<=TOAck<=0.999990; -0.600000<=pL<=0.800000, 0.600000<=pK<=0.800000, 0.000010<=TOMsg<=0.200000, 0.000010<=TOAck<=0.200000; -0.600000<=pL<=0.800000, 0.600000<=pK<=0.800000, 0.000010<=TOMsg<=0.200000, 0.200000<=TOAck<=0.400000; -0.600000<=pL<=0.800000, 0.600000<=pK<=0.800000, 0.000010<=TOMsg<=0.200000, 0.400000<=TOAck<=0.600000; -0.600000<=pL<=0.800000, 0.600000<=pK<=0.800000, 0.000010<=TOMsg<=0.200000, 0.600000<=TOAck<=0.800000; -0.600000<=pL<=0.800000, 0.600000<=pK<=0.800000, 0.000010<=TOMsg<=0.200000, 0.800000<=TOAck<=0.999990; -0.600000<=pL<=0.800000, 0.600000<=pK<=0.800000, 0.200000<=TOMsg<=0.400000, 0.000010<=TOAck<=0.200000; -0.600000<=pL<=0.800000, 0.600000<=pK<=0.800000, 0.200000<=TOMsg<=0.400000, 0.200000<=TOAck<=0.400000; -0.600000<=pL<=0.800000, 0.600000<=pK<=0.800000, 0.200000<=TOMsg<=0.400000, 0.400000<=TOAck<=0.600000; -0.600000<=pL<=0.800000, 0.600000<=pK<=0.800000, 0.200000<=TOMsg<=0.400000, 0.600000<=TOAck<=0.800000; -0.600000<=pL<=0.800000, 0.600000<=pK<=0.800000, 0.200000<=TOMsg<=0.400000, 0.800000<=TOAck<=0.999990; -0.600000<=pL<=0.800000, 0.600000<=pK<=0.800000, 0.400000<=TOMsg<=0.600000, 0.000010<=TOAck<=0.200000; -0.600000<=pL<=0.800000, 0.600000<=pK<=0.800000, 0.400000<=TOMsg<=0.600000, 0.200000<=TOAck<=0.400000; -0.600000<=pL<=0.800000, 0.600000<=pK<=0.800000, 0.400000<=TOMsg<=0.600000, 0.400000<=TOAck<=0.600000; -0.600000<=pL<=0.800000, 0.600000<=pK<=0.800000, 0.400000<=TOMsg<=0.600000, 0.600000<=TOAck<=0.800000; -0.600000<=pL<=0.800000, 0.600000<=pK<=0.800000, 0.400000<=TOMsg<=0.600000, 0.800000<=TOAck<=0.999990; -0.600000<=pL<=0.800000, 0.600000<=pK<=0.800000, 0.600000<=TOMsg<=0.800000, 0.000010<=TOAck<=0.200000; -0.600000<=pL<=0.800000, 0.600000<=pK<=0.800000, 0.600000<=TOMsg<=0.800000, 0.200000<=TOAck<=0.400000; -0.600000<=pL<=0.800000, 0.600000<=pK<=0.800000, 0.600000<=TOMsg<=0.800000, 0.400000<=TOAck<=0.600000; -0.600000<=pL<=0.800000, 0.600000<=pK<=0.800000, 0.600000<=TOMsg<=0.800000, 0.600000<=TOAck<=0.800000; -0.600000<=pL<=0.800000, 0.600000<=pK<=0.800000, 0.600000<=TOMsg<=0.800000, 0.800000<=TOAck<=0.999990; -0.600000<=pL<=0.800000, 0.600000<=pK<=0.800000, 0.800000<=TOMsg<=0.999990, 0.000010<=TOAck<=0.200000; -0.600000<=pL<=0.800000, 0.600000<=pK<=0.800000, 0.800000<=TOMsg<=0.999990, 0.200000<=TOAck<=0.400000; -0.600000<=pL<=0.800000, 0.600000<=pK<=0.800000, 0.800000<=TOMsg<=0.999990, 0.400000<=TOAck<=0.600000; -0.600000<=pL<=0.800000, 0.600000<=pK<=0.800000, 0.800000<=TOMsg<=0.999990, 0.600000<=TOAck<=0.800000; -0.600000<=pL<=0.800000, 0.600000<=pK<=0.800000, 0.800000<=TOMsg<=0.999990, 0.800000<=TOAck<=0.999990; -0.600000<=pL<=0.800000, 0.800000<=pK<=0.999990, 0.000010<=TOMsg<=0.200000, 0.000010<=TOAck<=0.200000; -0.600000<=pL<=0.800000, 0.800000<=pK<=0.999990, 0.000010<=TOMsg<=0.200000, 0.200000<=TOAck<=0.400000; -0.600000<=pL<=0.800000, 0.800000<=pK<=0.999990, 0.000010<=TOMsg<=0.200000, 0.400000<=TOAck<=0.600000; -0.600000<=pL<=0.800000, 0.800000<=pK<=0.999990, 0.000010<=TOMsg<=0.200000, 0.600000<=TOAck<=0.800000; -0.600000<=pL<=0.800000, 0.800000<=pK<=0.999990, 0.000010<=TOMsg<=0.200000, 0.800000<=TOAck<=0.999990; -0.600000<=pL<=0.800000, 0.800000<=pK<=0.999990, 0.200000<=TOMsg<=0.400000, 0.000010<=TOAck<=0.200000; -0.600000<=pL<=0.800000, 0.800000<=pK<=0.999990, 0.200000<=TOMsg<=0.400000, 0.200000<=TOAck<=0.400000; -0.600000<=pL<=0.800000, 0.800000<=pK<=0.999990, 0.200000<=TOMsg<=0.400000, 0.400000<=TOAck<=0.600000; -0.600000<=pL<=0.800000, 0.800000<=pK<=0.999990, 0.200000<=TOMsg<=0.400000, 0.600000<=TOAck<=0.800000; -0.600000<=pL<=0.800000, 0.800000<=pK<=0.999990, 0.200000<=TOMsg<=0.400000, 0.800000<=TOAck<=0.999990; -0.600000<=pL<=0.800000, 0.800000<=pK<=0.999990, 0.400000<=TOMsg<=0.600000, 0.000010<=TOAck<=0.200000; -0.600000<=pL<=0.800000, 0.800000<=pK<=0.999990, 0.400000<=TOMsg<=0.600000, 0.200000<=TOAck<=0.400000; -0.600000<=pL<=0.800000, 0.800000<=pK<=0.999990, 0.400000<=TOMsg<=0.600000, 0.400000<=TOAck<=0.600000; -0.600000<=pL<=0.800000, 0.800000<=pK<=0.999990, 0.400000<=TOMsg<=0.600000, 0.600000<=TOAck<=0.800000; -0.600000<=pL<=0.800000, 0.800000<=pK<=0.999990, 0.400000<=TOMsg<=0.600000, 0.800000<=TOAck<=0.999990; -0.600000<=pL<=0.800000, 0.800000<=pK<=0.999990, 0.600000<=TOMsg<=0.800000, 0.000010<=TOAck<=0.200000; -0.600000<=pL<=0.800000, 0.800000<=pK<=0.999990, 0.600000<=TOMsg<=0.800000, 0.200000<=TOAck<=0.400000; -0.600000<=pL<=0.800000, 0.800000<=pK<=0.999990, 0.600000<=TOMsg<=0.800000, 0.400000<=TOAck<=0.600000; -0.600000<=pL<=0.800000, 0.800000<=pK<=0.999990, 0.600000<=TOMsg<=0.800000, 0.600000<=TOAck<=0.800000; -0.600000<=pL<=0.800000, 0.800000<=pK<=0.999990, 0.600000<=TOMsg<=0.800000, 0.800000<=TOAck<=0.999990; -0.600000<=pL<=0.800000, 0.800000<=pK<=0.999990, 0.800000<=TOMsg<=0.999990, 0.000010<=TOAck<=0.200000; -0.600000<=pL<=0.800000, 0.800000<=pK<=0.999990, 0.800000<=TOMsg<=0.999990, 0.200000<=TOAck<=0.400000; -0.600000<=pL<=0.800000, 0.800000<=pK<=0.999990, 0.800000<=TOMsg<=0.999990, 0.400000<=TOAck<=0.600000; -0.600000<=pL<=0.800000, 0.800000<=pK<=0.999990, 0.800000<=TOMsg<=0.999990, 0.600000<=TOAck<=0.800000; -0.600000<=pL<=0.800000, 0.800000<=pK<=0.999990, 0.800000<=TOMsg<=0.999990, 0.800000<=TOAck<=0.999990; -0.800000<=pL<=0.999990, 0.000010<=pK<=0.200000, 0.000010<=TOMsg<=0.200000, 0.000010<=TOAck<=0.200000; -0.800000<=pL<=0.999990, 0.000010<=pK<=0.200000, 0.000010<=TOMsg<=0.200000, 0.200000<=TOAck<=0.400000; -0.800000<=pL<=0.999990, 0.000010<=pK<=0.200000, 0.000010<=TOMsg<=0.200000, 0.400000<=TOAck<=0.600000; -0.800000<=pL<=0.999990, 0.000010<=pK<=0.200000, 0.000010<=TOMsg<=0.200000, 0.600000<=TOAck<=0.800000; -0.800000<=pL<=0.999990, 0.000010<=pK<=0.200000, 0.000010<=TOMsg<=0.200000, 0.800000<=TOAck<=0.999990; -0.800000<=pL<=0.999990, 0.000010<=pK<=0.200000, 0.200000<=TOMsg<=0.400000, 0.000010<=TOAck<=0.200000; -0.800000<=pL<=0.999990, 0.000010<=pK<=0.200000, 0.200000<=TOMsg<=0.400000, 0.200000<=TOAck<=0.400000; -0.800000<=pL<=0.999990, 0.000010<=pK<=0.200000, 0.200000<=TOMsg<=0.400000, 0.400000<=TOAck<=0.600000; -0.800000<=pL<=0.999990, 0.000010<=pK<=0.200000, 0.200000<=TOMsg<=0.400000, 0.600000<=TOAck<=0.800000; -0.800000<=pL<=0.999990, 0.000010<=pK<=0.200000, 0.200000<=TOMsg<=0.400000, 0.800000<=TOAck<=0.999990; -0.800000<=pL<=0.999990, 0.000010<=pK<=0.200000, 0.400000<=TOMsg<=0.600000, 0.000010<=TOAck<=0.200000; -0.800000<=pL<=0.999990, 0.000010<=pK<=0.200000, 0.400000<=TOMsg<=0.600000, 0.200000<=TOAck<=0.400000; -0.800000<=pL<=0.999990, 0.000010<=pK<=0.200000, 0.400000<=TOMsg<=0.600000, 0.400000<=TOAck<=0.600000; -0.800000<=pL<=0.999990, 0.000010<=pK<=0.200000, 0.400000<=TOMsg<=0.600000, 0.600000<=TOAck<=0.800000; -0.800000<=pL<=0.999990, 0.000010<=pK<=0.200000, 0.400000<=TOMsg<=0.600000, 0.800000<=TOAck<=0.999990; -0.800000<=pL<=0.999990, 0.000010<=pK<=0.200000, 0.600000<=TOMsg<=0.800000, 0.000010<=TOAck<=0.200000; -0.800000<=pL<=0.999990, 0.000010<=pK<=0.200000, 0.600000<=TOMsg<=0.800000, 0.200000<=TOAck<=0.400000; -0.800000<=pL<=0.999990, 0.000010<=pK<=0.200000, 0.600000<=TOMsg<=0.800000, 0.400000<=TOAck<=0.600000; -0.800000<=pL<=0.999990, 0.000010<=pK<=0.200000, 0.600000<=TOMsg<=0.800000, 0.600000<=TOAck<=0.800000; -0.800000<=pL<=0.999990, 0.000010<=pK<=0.200000, 0.600000<=TOMsg<=0.800000, 0.800000<=TOAck<=0.999990; -0.800000<=pL<=0.999990, 0.000010<=pK<=0.200000, 0.800000<=TOMsg<=0.999990, 0.000010<=TOAck<=0.200000; -0.800000<=pL<=0.999990, 0.000010<=pK<=0.200000, 0.800000<=TOMsg<=0.999990, 0.200000<=TOAck<=0.400000; -0.800000<=pL<=0.999990, 0.000010<=pK<=0.200000, 0.800000<=TOMsg<=0.999990, 0.400000<=TOAck<=0.600000; -0.800000<=pL<=0.999990, 0.000010<=pK<=0.200000, 0.800000<=TOMsg<=0.999990, 0.600000<=TOAck<=0.800000; -0.800000<=pL<=0.999990, 0.000010<=pK<=0.200000, 0.800000<=TOMsg<=0.999990, 0.800000<=TOAck<=0.999990; -0.800000<=pL<=0.999990, 0.200000<=pK<=0.400000, 0.000010<=TOMsg<=0.200000, 0.000010<=TOAck<=0.200000; -0.800000<=pL<=0.999990, 0.200000<=pK<=0.400000, 0.000010<=TOMsg<=0.200000, 0.200000<=TOAck<=0.400000; -0.800000<=pL<=0.999990, 0.200000<=pK<=0.400000, 0.000010<=TOMsg<=0.200000, 0.400000<=TOAck<=0.600000; -0.800000<=pL<=0.999990, 0.200000<=pK<=0.400000, 0.000010<=TOMsg<=0.200000, 0.600000<=TOAck<=0.800000; -0.800000<=pL<=0.999990, 0.200000<=pK<=0.400000, 0.000010<=TOMsg<=0.200000, 0.800000<=TOAck<=0.999990; -0.800000<=pL<=0.999990, 0.200000<=pK<=0.400000, 0.200000<=TOMsg<=0.400000, 0.000010<=TOAck<=0.200000; -0.800000<=pL<=0.999990, 0.200000<=pK<=0.400000, 0.200000<=TOMsg<=0.400000, 0.200000<=TOAck<=0.400000; -0.800000<=pL<=0.999990, 0.200000<=pK<=0.400000, 0.200000<=TOMsg<=0.400000, 0.400000<=TOAck<=0.600000; -0.800000<=pL<=0.999990, 0.200000<=pK<=0.400000, 0.200000<=TOMsg<=0.400000, 0.600000<=TOAck<=0.800000; -0.800000<=pL<=0.999990, 0.200000<=pK<=0.400000, 0.200000<=TOMsg<=0.400000, 0.800000<=TOAck<=0.999990; -0.800000<=pL<=0.999990, 0.200000<=pK<=0.400000, 0.400000<=TOMsg<=0.600000, 0.000010<=TOAck<=0.200000; -0.800000<=pL<=0.999990, 0.200000<=pK<=0.400000, 0.400000<=TOMsg<=0.600000, 0.200000<=TOAck<=0.400000; -0.800000<=pL<=0.999990, 0.200000<=pK<=0.400000, 0.400000<=TOMsg<=0.600000, 0.400000<=TOAck<=0.600000; -0.800000<=pL<=0.999990, 0.200000<=pK<=0.400000, 0.400000<=TOMsg<=0.600000, 0.600000<=TOAck<=0.800000; -0.800000<=pL<=0.999990, 0.200000<=pK<=0.400000, 0.400000<=TOMsg<=0.600000, 0.800000<=TOAck<=0.999990; -0.800000<=pL<=0.999990, 0.200000<=pK<=0.400000, 0.600000<=TOMsg<=0.800000, 0.000010<=TOAck<=0.200000; -0.800000<=pL<=0.999990, 0.200000<=pK<=0.400000, 0.600000<=TOMsg<=0.800000, 0.200000<=TOAck<=0.400000; -0.800000<=pL<=0.999990, 0.200000<=pK<=0.400000, 0.600000<=TOMsg<=0.800000, 0.400000<=TOAck<=0.600000; -0.800000<=pL<=0.999990, 0.200000<=pK<=0.400000, 0.600000<=TOMsg<=0.800000, 0.600000<=TOAck<=0.800000; -0.800000<=pL<=0.999990, 0.200000<=pK<=0.400000, 0.600000<=TOMsg<=0.800000, 0.800000<=TOAck<=0.999990; -0.800000<=pL<=0.999990, 0.200000<=pK<=0.400000, 0.800000<=TOMsg<=0.999990, 0.000010<=TOAck<=0.200000; -0.800000<=pL<=0.999990, 0.200000<=pK<=0.400000, 0.800000<=TOMsg<=0.999990, 0.200000<=TOAck<=0.400000; -0.800000<=pL<=0.999990, 0.200000<=pK<=0.400000, 0.800000<=TOMsg<=0.999990, 0.400000<=TOAck<=0.600000; -0.800000<=pL<=0.999990, 0.200000<=pK<=0.400000, 0.800000<=TOMsg<=0.999990, 0.600000<=TOAck<=0.800000; -0.800000<=pL<=0.999990, 0.200000<=pK<=0.400000, 0.800000<=TOMsg<=0.999990, 0.800000<=TOAck<=0.999990; -0.800000<=pL<=0.999990, 0.400000<=pK<=0.600000, 0.000010<=TOMsg<=0.200000, 0.000010<=TOAck<=0.200000; -0.800000<=pL<=0.999990, 0.400000<=pK<=0.600000, 0.000010<=TOMsg<=0.200000, 0.200000<=TOAck<=0.400000; -0.800000<=pL<=0.999990, 0.400000<=pK<=0.600000, 0.000010<=TOMsg<=0.200000, 0.400000<=TOAck<=0.600000; -0.800000<=pL<=0.999990, 0.400000<=pK<=0.600000, 0.000010<=TOMsg<=0.200000, 0.600000<=TOAck<=0.800000; -0.800000<=pL<=0.999990, 0.400000<=pK<=0.600000, 0.000010<=TOMsg<=0.200000, 0.800000<=TOAck<=0.999990; -0.800000<=pL<=0.999990, 0.400000<=pK<=0.600000, 0.200000<=TOMsg<=0.400000, 0.000010<=TOAck<=0.200000; -0.800000<=pL<=0.999990, 0.400000<=pK<=0.600000, 0.200000<=TOMsg<=0.400000, 0.200000<=TOAck<=0.400000; -0.800000<=pL<=0.999990, 0.400000<=pK<=0.600000, 0.200000<=TOMsg<=0.400000, 0.400000<=TOAck<=0.600000; -0.800000<=pL<=0.999990, 0.400000<=pK<=0.600000, 0.200000<=TOMsg<=0.400000, 0.600000<=TOAck<=0.800000; -0.800000<=pL<=0.999990, 0.400000<=pK<=0.600000, 0.200000<=TOMsg<=0.400000, 0.800000<=TOAck<=0.999990; -0.800000<=pL<=0.999990, 0.400000<=pK<=0.600000, 0.400000<=TOMsg<=0.600000, 0.000010<=TOAck<=0.200000; -0.800000<=pL<=0.999990, 0.400000<=pK<=0.600000, 0.400000<=TOMsg<=0.600000, 0.200000<=TOAck<=0.400000; -0.800000<=pL<=0.999990, 0.400000<=pK<=0.600000, 0.400000<=TOMsg<=0.600000, 0.400000<=TOAck<=0.600000; -0.800000<=pL<=0.999990, 0.400000<=pK<=0.600000, 0.400000<=TOMsg<=0.600000, 0.600000<=TOAck<=0.800000; -0.800000<=pL<=0.999990, 0.400000<=pK<=0.600000, 0.400000<=TOMsg<=0.600000, 0.800000<=TOAck<=0.999990; -0.800000<=pL<=0.999990, 0.400000<=pK<=0.600000, 0.600000<=TOMsg<=0.800000, 0.000010<=TOAck<=0.200000; -0.800000<=pL<=0.999990, 0.400000<=pK<=0.600000, 0.600000<=TOMsg<=0.800000, 0.200000<=TOAck<=0.400000; -0.800000<=pL<=0.999990, 0.400000<=pK<=0.600000, 0.600000<=TOMsg<=0.800000, 0.400000<=TOAck<=0.600000; -0.800000<=pL<=0.999990, 0.400000<=pK<=0.600000, 0.600000<=TOMsg<=0.800000, 0.600000<=TOAck<=0.800000; -0.800000<=pL<=0.999990, 0.400000<=pK<=0.600000, 0.600000<=TOMsg<=0.800000, 0.800000<=TOAck<=0.999990; -0.800000<=pL<=0.999990, 0.400000<=pK<=0.600000, 0.800000<=TOMsg<=0.999990, 0.000010<=TOAck<=0.200000; -0.800000<=pL<=0.999990, 0.400000<=pK<=0.600000, 0.800000<=TOMsg<=0.999990, 0.200000<=TOAck<=0.400000; -0.800000<=pL<=0.999990, 0.400000<=pK<=0.600000, 0.800000<=TOMsg<=0.999990, 0.400000<=TOAck<=0.600000; -0.800000<=pL<=0.999990, 0.400000<=pK<=0.600000, 0.800000<=TOMsg<=0.999990, 0.600000<=TOAck<=0.800000; -0.800000<=pL<=0.999990, 0.400000<=pK<=0.600000, 0.800000<=TOMsg<=0.999990, 0.800000<=TOAck<=0.999990; -0.800000<=pL<=0.999990, 0.600000<=pK<=0.800000, 0.000010<=TOMsg<=0.200000, 0.000010<=TOAck<=0.200000; -0.800000<=pL<=0.999990, 0.600000<=pK<=0.800000, 0.000010<=TOMsg<=0.200000, 0.200000<=TOAck<=0.400000; -0.800000<=pL<=0.999990, 0.600000<=pK<=0.800000, 0.000010<=TOMsg<=0.200000, 0.400000<=TOAck<=0.600000; -0.800000<=pL<=0.999990, 0.600000<=pK<=0.800000, 0.000010<=TOMsg<=0.200000, 0.600000<=TOAck<=0.800000; -0.800000<=pL<=0.999990, 0.600000<=pK<=0.800000, 0.000010<=TOMsg<=0.200000, 0.800000<=TOAck<=0.999990; -0.800000<=pL<=0.999990, 0.600000<=pK<=0.800000, 0.200000<=TOMsg<=0.400000, 0.000010<=TOAck<=0.200000; -0.800000<=pL<=0.999990, 0.600000<=pK<=0.800000, 0.200000<=TOMsg<=0.400000, 0.200000<=TOAck<=0.400000; -0.800000<=pL<=0.999990, 0.600000<=pK<=0.800000, 0.200000<=TOMsg<=0.400000, 0.400000<=TOAck<=0.600000; -0.800000<=pL<=0.999990, 0.600000<=pK<=0.800000, 0.200000<=TOMsg<=0.400000, 0.600000<=TOAck<=0.800000; -0.800000<=pL<=0.999990, 0.600000<=pK<=0.800000, 0.200000<=TOMsg<=0.400000, 0.800000<=TOAck<=0.999990; -0.800000<=pL<=0.999990, 0.600000<=pK<=0.800000, 0.400000<=TOMsg<=0.600000, 0.000010<=TOAck<=0.200000; -0.800000<=pL<=0.999990, 0.600000<=pK<=0.800000, 0.400000<=TOMsg<=0.600000, 0.200000<=TOAck<=0.400000; -0.800000<=pL<=0.999990, 0.600000<=pK<=0.800000, 0.400000<=TOMsg<=0.600000, 0.400000<=TOAck<=0.600000; -0.800000<=pL<=0.999990, 0.600000<=pK<=0.800000, 0.400000<=TOMsg<=0.600000, 0.600000<=TOAck<=0.800000; -0.800000<=pL<=0.999990, 0.600000<=pK<=0.800000, 0.400000<=TOMsg<=0.600000, 0.800000<=TOAck<=0.999990; -0.800000<=pL<=0.999990, 0.600000<=pK<=0.800000, 0.600000<=TOMsg<=0.800000, 0.000010<=TOAck<=0.200000; -0.800000<=pL<=0.999990, 0.600000<=pK<=0.800000, 0.600000<=TOMsg<=0.800000, 0.200000<=TOAck<=0.400000; -0.800000<=pL<=0.999990, 0.600000<=pK<=0.800000, 0.600000<=TOMsg<=0.800000, 0.400000<=TOAck<=0.600000; -0.800000<=pL<=0.999990, 0.600000<=pK<=0.800000, 0.600000<=TOMsg<=0.800000, 0.600000<=TOAck<=0.800000; -0.800000<=pL<=0.999990, 0.600000<=pK<=0.800000, 0.600000<=TOMsg<=0.800000, 0.800000<=TOAck<=0.999990; -0.800000<=pL<=0.999990, 0.600000<=pK<=0.800000, 0.800000<=TOMsg<=0.999990, 0.000010<=TOAck<=0.200000; -0.800000<=pL<=0.999990, 0.600000<=pK<=0.800000, 0.800000<=TOMsg<=0.999990, 0.200000<=TOAck<=0.400000; -0.800000<=pL<=0.999990, 0.600000<=pK<=0.800000, 0.800000<=TOMsg<=0.999990, 0.400000<=TOAck<=0.600000; -0.800000<=pL<=0.999990, 0.600000<=pK<=0.800000, 0.800000<=TOMsg<=0.999990, 0.600000<=TOAck<=0.800000; -0.800000<=pL<=0.999990, 0.600000<=pK<=0.800000, 0.800000<=TOMsg<=0.999990, 0.800000<=TOAck<=0.999990; -0.800000<=pL<=0.999990, 0.800000<=pK<=0.999990, 0.000010<=TOMsg<=0.200000, 0.000010<=TOAck<=0.200000; -0.800000<=pL<=0.999990, 0.800000<=pK<=0.999990, 0.000010<=TOMsg<=0.200000, 0.200000<=TOAck<=0.400000; -0.800000<=pL<=0.999990, 0.800000<=pK<=0.999990, 0.000010<=TOMsg<=0.200000, 0.400000<=TOAck<=0.600000; -0.800000<=pL<=0.999990, 0.800000<=pK<=0.999990, 0.000010<=TOMsg<=0.200000, 0.600000<=TOAck<=0.800000; -0.800000<=pL<=0.999990, 0.800000<=pK<=0.999990, 0.000010<=TOMsg<=0.200000, 0.800000<=TOAck<=0.999990; -0.800000<=pL<=0.999990, 0.800000<=pK<=0.999990, 0.200000<=TOMsg<=0.400000, 0.000010<=TOAck<=0.200000; -0.800000<=pL<=0.999990, 0.800000<=pK<=0.999990, 0.200000<=TOMsg<=0.400000, 0.200000<=TOAck<=0.400000; -0.800000<=pL<=0.999990, 0.800000<=pK<=0.999990, 0.200000<=TOMsg<=0.400000, 0.400000<=TOAck<=0.600000; -0.800000<=pL<=0.999990, 0.800000<=pK<=0.999990, 0.200000<=TOMsg<=0.400000, 0.600000<=TOAck<=0.800000; -0.800000<=pL<=0.999990, 0.800000<=pK<=0.999990, 0.200000<=TOMsg<=0.400000, 0.800000<=TOAck<=0.999990; -0.800000<=pL<=0.999990, 0.800000<=pK<=0.999990, 0.400000<=TOMsg<=0.600000, 0.000010<=TOAck<=0.200000; -0.800000<=pL<=0.999990, 0.800000<=pK<=0.999990, 0.400000<=TOMsg<=0.600000, 0.200000<=TOAck<=0.400000; -0.800000<=pL<=0.999990, 0.800000<=pK<=0.999990, 0.400000<=TOMsg<=0.600000, 0.400000<=TOAck<=0.600000; -0.800000<=pL<=0.999990, 0.800000<=pK<=0.999990, 0.400000<=TOMsg<=0.600000, 0.600000<=TOAck<=0.800000; -0.800000<=pL<=0.999990, 0.800000<=pK<=0.999990, 0.400000<=TOMsg<=0.600000, 0.800000<=TOAck<=0.999990; -0.800000<=pL<=0.999990, 0.800000<=pK<=0.999990, 0.600000<=TOMsg<=0.800000, 0.000010<=TOAck<=0.200000; -0.800000<=pL<=0.999990, 0.800000<=pK<=0.999990, 0.600000<=TOMsg<=0.800000, 0.200000<=TOAck<=0.400000; -0.800000<=pL<=0.999990, 0.800000<=pK<=0.999990, 0.600000<=TOMsg<=0.800000, 0.400000<=TOAck<=0.600000; -0.800000<=pL<=0.999990, 0.800000<=pK<=0.999990, 0.600000<=TOMsg<=0.800000, 0.600000<=TOAck<=0.800000; -0.800000<=pL<=0.999990, 0.800000<=pK<=0.999990, 0.600000<=TOMsg<=0.800000, 0.800000<=TOAck<=0.999990; -0.800000<=pL<=0.999990, 0.800000<=pK<=0.999990, 0.800000<=TOMsg<=0.999990, 0.000010<=TOAck<=0.200000; -0.800000<=pL<=0.999990, 0.800000<=pK<=0.999990, 0.800000<=TOMsg<=0.999990, 0.200000<=TOAck<=0.400000; -0.800000<=pL<=0.999990, 0.800000<=pK<=0.999990, 0.800000<=TOMsg<=0.999990, 0.400000<=TOAck<=0.600000; -0.800000<=pL<=0.999990, 0.800000<=pK<=0.999990, 0.800000<=TOMsg<=0.999990, 0.600000<=TOAck<=0.800000; -0.800000<=pL<=0.999990, 0.800000<=pK<=0.999990, 0.800000<=TOMsg<=0.999990, 0.800000<=TOAck<=0.999990; diff --git a/examples/pdtmc/brp_rewards4/brp_rewards4_regions2.txt b/examples/pdtmc/brp_rewards4/brp_rewards4_regions2.txt deleted file mode 100644 index 93769008f..000000000 --- a/examples/pdtmc/brp_rewards4/brp_rewards4_regions2.txt +++ /dev/null @@ -1,625 +0,0 @@ -0.000010<=pL<=0.040000, 0.000010<=pK<=0.040000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.000010<=pL<=0.040000, 0.040000<=pK<=0.080000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.000010<=pL<=0.040000, 0.080000<=pK<=0.120000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.000010<=pL<=0.040000, 0.120000<=pK<=0.160000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.000010<=pL<=0.040000, 0.160000<=pK<=0.200000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.000010<=pL<=0.040000, 0.200000<=pK<=0.240000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.000010<=pL<=0.040000, 0.240000<=pK<=0.280000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.000010<=pL<=0.040000, 0.280000<=pK<=0.320000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.000010<=pL<=0.040000, 0.320000<=pK<=0.360000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.000010<=pL<=0.040000, 0.360000<=pK<=0.400000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.000010<=pL<=0.040000, 0.400000<=pK<=0.440000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.000010<=pL<=0.040000, 0.440000<=pK<=0.480000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.000010<=pL<=0.040000, 0.480000<=pK<=0.520000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.000010<=pL<=0.040000, 0.520000<=pK<=0.560000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.000010<=pL<=0.040000, 0.560000<=pK<=0.600000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.000010<=pL<=0.040000, 0.600000<=pK<=0.640000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.000010<=pL<=0.040000, 0.640000<=pK<=0.680000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.000010<=pL<=0.040000, 0.680000<=pK<=0.720000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.000010<=pL<=0.040000, 0.720000<=pK<=0.760000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.000010<=pL<=0.040000, 0.760000<=pK<=0.800000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.000010<=pL<=0.040000, 0.800000<=pK<=0.840000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.000010<=pL<=0.040000, 0.840000<=pK<=0.880000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.000010<=pL<=0.040000, 0.880000<=pK<=0.920000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.000010<=pL<=0.040000, 0.920000<=pK<=0.960000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.000010<=pL<=0.040000, 0.960000<=pK<=0.999990, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.040000<=pL<=0.080000, 0.000010<=pK<=0.040000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.040000<=pL<=0.080000, 0.040000<=pK<=0.080000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.040000<=pL<=0.080000, 0.080000<=pK<=0.120000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.040000<=pL<=0.080000, 0.120000<=pK<=0.160000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.040000<=pL<=0.080000, 0.160000<=pK<=0.200000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.040000<=pL<=0.080000, 0.200000<=pK<=0.240000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.040000<=pL<=0.080000, 0.240000<=pK<=0.280000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.040000<=pL<=0.080000, 0.280000<=pK<=0.320000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.040000<=pL<=0.080000, 0.320000<=pK<=0.360000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.040000<=pL<=0.080000, 0.360000<=pK<=0.400000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.040000<=pL<=0.080000, 0.400000<=pK<=0.440000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.040000<=pL<=0.080000, 0.440000<=pK<=0.480000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.040000<=pL<=0.080000, 0.480000<=pK<=0.520000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.040000<=pL<=0.080000, 0.520000<=pK<=0.560000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.040000<=pL<=0.080000, 0.560000<=pK<=0.600000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.040000<=pL<=0.080000, 0.600000<=pK<=0.640000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.040000<=pL<=0.080000, 0.640000<=pK<=0.680000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.040000<=pL<=0.080000, 0.680000<=pK<=0.720000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.040000<=pL<=0.080000, 0.720000<=pK<=0.760000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.040000<=pL<=0.080000, 0.760000<=pK<=0.800000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.040000<=pL<=0.080000, 0.800000<=pK<=0.840000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.040000<=pL<=0.080000, 0.840000<=pK<=0.880000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.040000<=pL<=0.080000, 0.880000<=pK<=0.920000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.040000<=pL<=0.080000, 0.920000<=pK<=0.960000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.040000<=pL<=0.080000, 0.960000<=pK<=0.999990, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.080000<=pL<=0.120000, 0.000010<=pK<=0.040000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.080000<=pL<=0.120000, 0.040000<=pK<=0.080000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.080000<=pL<=0.120000, 0.080000<=pK<=0.120000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.080000<=pL<=0.120000, 0.120000<=pK<=0.160000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.080000<=pL<=0.120000, 0.160000<=pK<=0.200000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.080000<=pL<=0.120000, 0.200000<=pK<=0.240000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.080000<=pL<=0.120000, 0.240000<=pK<=0.280000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.080000<=pL<=0.120000, 0.280000<=pK<=0.320000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.080000<=pL<=0.120000, 0.320000<=pK<=0.360000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.080000<=pL<=0.120000, 0.360000<=pK<=0.400000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.080000<=pL<=0.120000, 0.400000<=pK<=0.440000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.080000<=pL<=0.120000, 0.440000<=pK<=0.480000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.080000<=pL<=0.120000, 0.480000<=pK<=0.520000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.080000<=pL<=0.120000, 0.520000<=pK<=0.560000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.080000<=pL<=0.120000, 0.560000<=pK<=0.600000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.080000<=pL<=0.120000, 0.600000<=pK<=0.640000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.080000<=pL<=0.120000, 0.640000<=pK<=0.680000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.080000<=pL<=0.120000, 0.680000<=pK<=0.720000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.080000<=pL<=0.120000, 0.720000<=pK<=0.760000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.080000<=pL<=0.120000, 0.760000<=pK<=0.800000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.080000<=pL<=0.120000, 0.800000<=pK<=0.840000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.080000<=pL<=0.120000, 0.840000<=pK<=0.880000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.080000<=pL<=0.120000, 0.880000<=pK<=0.920000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.080000<=pL<=0.120000, 0.920000<=pK<=0.960000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.080000<=pL<=0.120000, 0.960000<=pK<=0.999990, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.120000<=pL<=0.160000, 0.000010<=pK<=0.040000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.120000<=pL<=0.160000, 0.040000<=pK<=0.080000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.120000<=pL<=0.160000, 0.080000<=pK<=0.120000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.120000<=pL<=0.160000, 0.120000<=pK<=0.160000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.120000<=pL<=0.160000, 0.160000<=pK<=0.200000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.120000<=pL<=0.160000, 0.200000<=pK<=0.240000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.120000<=pL<=0.160000, 0.240000<=pK<=0.280000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.120000<=pL<=0.160000, 0.280000<=pK<=0.320000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.120000<=pL<=0.160000, 0.320000<=pK<=0.360000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.120000<=pL<=0.160000, 0.360000<=pK<=0.400000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.120000<=pL<=0.160000, 0.400000<=pK<=0.440000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.120000<=pL<=0.160000, 0.440000<=pK<=0.480000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.120000<=pL<=0.160000, 0.480000<=pK<=0.520000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.120000<=pL<=0.160000, 0.520000<=pK<=0.560000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.120000<=pL<=0.160000, 0.560000<=pK<=0.600000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.120000<=pL<=0.160000, 0.600000<=pK<=0.640000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.120000<=pL<=0.160000, 0.640000<=pK<=0.680000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.120000<=pL<=0.160000, 0.680000<=pK<=0.720000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.120000<=pL<=0.160000, 0.720000<=pK<=0.760000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.120000<=pL<=0.160000, 0.760000<=pK<=0.800000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.120000<=pL<=0.160000, 0.800000<=pK<=0.840000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.120000<=pL<=0.160000, 0.840000<=pK<=0.880000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.120000<=pL<=0.160000, 0.880000<=pK<=0.920000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.120000<=pL<=0.160000, 0.920000<=pK<=0.960000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.120000<=pL<=0.160000, 0.960000<=pK<=0.999990, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.160000<=pL<=0.200000, 0.000010<=pK<=0.040000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.160000<=pL<=0.200000, 0.040000<=pK<=0.080000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.160000<=pL<=0.200000, 0.080000<=pK<=0.120000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.160000<=pL<=0.200000, 0.120000<=pK<=0.160000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.160000<=pL<=0.200000, 0.160000<=pK<=0.200000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.160000<=pL<=0.200000, 0.200000<=pK<=0.240000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.160000<=pL<=0.200000, 0.240000<=pK<=0.280000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.160000<=pL<=0.200000, 0.280000<=pK<=0.320000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.160000<=pL<=0.200000, 0.320000<=pK<=0.360000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.160000<=pL<=0.200000, 0.360000<=pK<=0.400000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.160000<=pL<=0.200000, 0.400000<=pK<=0.440000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.160000<=pL<=0.200000, 0.440000<=pK<=0.480000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.160000<=pL<=0.200000, 0.480000<=pK<=0.520000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.160000<=pL<=0.200000, 0.520000<=pK<=0.560000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.160000<=pL<=0.200000, 0.560000<=pK<=0.600000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.160000<=pL<=0.200000, 0.600000<=pK<=0.640000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.160000<=pL<=0.200000, 0.640000<=pK<=0.680000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.160000<=pL<=0.200000, 0.680000<=pK<=0.720000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.160000<=pL<=0.200000, 0.720000<=pK<=0.760000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.160000<=pL<=0.200000, 0.760000<=pK<=0.800000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.160000<=pL<=0.200000, 0.800000<=pK<=0.840000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.160000<=pL<=0.200000, 0.840000<=pK<=0.880000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.160000<=pL<=0.200000, 0.880000<=pK<=0.920000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.160000<=pL<=0.200000, 0.920000<=pK<=0.960000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.160000<=pL<=0.200000, 0.960000<=pK<=0.999990, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.200000<=pL<=0.240000, 0.000010<=pK<=0.040000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.200000<=pL<=0.240000, 0.040000<=pK<=0.080000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.200000<=pL<=0.240000, 0.080000<=pK<=0.120000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.200000<=pL<=0.240000, 0.120000<=pK<=0.160000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.200000<=pL<=0.240000, 0.160000<=pK<=0.200000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.200000<=pL<=0.240000, 0.200000<=pK<=0.240000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.200000<=pL<=0.240000, 0.240000<=pK<=0.280000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.200000<=pL<=0.240000, 0.280000<=pK<=0.320000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.200000<=pL<=0.240000, 0.320000<=pK<=0.360000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.200000<=pL<=0.240000, 0.360000<=pK<=0.400000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.200000<=pL<=0.240000, 0.400000<=pK<=0.440000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.200000<=pL<=0.240000, 0.440000<=pK<=0.480000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.200000<=pL<=0.240000, 0.480000<=pK<=0.520000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.200000<=pL<=0.240000, 0.520000<=pK<=0.560000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.200000<=pL<=0.240000, 0.560000<=pK<=0.600000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.200000<=pL<=0.240000, 0.600000<=pK<=0.640000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.200000<=pL<=0.240000, 0.640000<=pK<=0.680000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.200000<=pL<=0.240000, 0.680000<=pK<=0.720000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.200000<=pL<=0.240000, 0.720000<=pK<=0.760000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.200000<=pL<=0.240000, 0.760000<=pK<=0.800000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.200000<=pL<=0.240000, 0.800000<=pK<=0.840000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.200000<=pL<=0.240000, 0.840000<=pK<=0.880000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.200000<=pL<=0.240000, 0.880000<=pK<=0.920000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.200000<=pL<=0.240000, 0.920000<=pK<=0.960000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.200000<=pL<=0.240000, 0.960000<=pK<=0.999990, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.240000<=pL<=0.280000, 0.000010<=pK<=0.040000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.240000<=pL<=0.280000, 0.040000<=pK<=0.080000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.240000<=pL<=0.280000, 0.080000<=pK<=0.120000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.240000<=pL<=0.280000, 0.120000<=pK<=0.160000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.240000<=pL<=0.280000, 0.160000<=pK<=0.200000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.240000<=pL<=0.280000, 0.200000<=pK<=0.240000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.240000<=pL<=0.280000, 0.240000<=pK<=0.280000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.240000<=pL<=0.280000, 0.280000<=pK<=0.320000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.240000<=pL<=0.280000, 0.320000<=pK<=0.360000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.240000<=pL<=0.280000, 0.360000<=pK<=0.400000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.240000<=pL<=0.280000, 0.400000<=pK<=0.440000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.240000<=pL<=0.280000, 0.440000<=pK<=0.480000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.240000<=pL<=0.280000, 0.480000<=pK<=0.520000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.240000<=pL<=0.280000, 0.520000<=pK<=0.560000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.240000<=pL<=0.280000, 0.560000<=pK<=0.600000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.240000<=pL<=0.280000, 0.600000<=pK<=0.640000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.240000<=pL<=0.280000, 0.640000<=pK<=0.680000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.240000<=pL<=0.280000, 0.680000<=pK<=0.720000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.240000<=pL<=0.280000, 0.720000<=pK<=0.760000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.240000<=pL<=0.280000, 0.760000<=pK<=0.800000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.240000<=pL<=0.280000, 0.800000<=pK<=0.840000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.240000<=pL<=0.280000, 0.840000<=pK<=0.880000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.240000<=pL<=0.280000, 0.880000<=pK<=0.920000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.240000<=pL<=0.280000, 0.920000<=pK<=0.960000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.240000<=pL<=0.280000, 0.960000<=pK<=0.999990, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.280000<=pL<=0.320000, 0.000010<=pK<=0.040000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.280000<=pL<=0.320000, 0.040000<=pK<=0.080000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.280000<=pL<=0.320000, 0.080000<=pK<=0.120000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.280000<=pL<=0.320000, 0.120000<=pK<=0.160000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.280000<=pL<=0.320000, 0.160000<=pK<=0.200000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.280000<=pL<=0.320000, 0.200000<=pK<=0.240000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.280000<=pL<=0.320000, 0.240000<=pK<=0.280000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.280000<=pL<=0.320000, 0.280000<=pK<=0.320000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.280000<=pL<=0.320000, 0.320000<=pK<=0.360000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.280000<=pL<=0.320000, 0.360000<=pK<=0.400000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.280000<=pL<=0.320000, 0.400000<=pK<=0.440000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.280000<=pL<=0.320000, 0.440000<=pK<=0.480000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.280000<=pL<=0.320000, 0.480000<=pK<=0.520000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.280000<=pL<=0.320000, 0.520000<=pK<=0.560000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.280000<=pL<=0.320000, 0.560000<=pK<=0.600000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.280000<=pL<=0.320000, 0.600000<=pK<=0.640000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.280000<=pL<=0.320000, 0.640000<=pK<=0.680000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.280000<=pL<=0.320000, 0.680000<=pK<=0.720000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.280000<=pL<=0.320000, 0.720000<=pK<=0.760000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.280000<=pL<=0.320000, 0.760000<=pK<=0.800000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.280000<=pL<=0.320000, 0.800000<=pK<=0.840000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.280000<=pL<=0.320000, 0.840000<=pK<=0.880000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.280000<=pL<=0.320000, 0.880000<=pK<=0.920000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.280000<=pL<=0.320000, 0.920000<=pK<=0.960000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.280000<=pL<=0.320000, 0.960000<=pK<=0.999990, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.320000<=pL<=0.360000, 0.000010<=pK<=0.040000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.320000<=pL<=0.360000, 0.040000<=pK<=0.080000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.320000<=pL<=0.360000, 0.080000<=pK<=0.120000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.320000<=pL<=0.360000, 0.120000<=pK<=0.160000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.320000<=pL<=0.360000, 0.160000<=pK<=0.200000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.320000<=pL<=0.360000, 0.200000<=pK<=0.240000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.320000<=pL<=0.360000, 0.240000<=pK<=0.280000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.320000<=pL<=0.360000, 0.280000<=pK<=0.320000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.320000<=pL<=0.360000, 0.320000<=pK<=0.360000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.320000<=pL<=0.360000, 0.360000<=pK<=0.400000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.320000<=pL<=0.360000, 0.400000<=pK<=0.440000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.320000<=pL<=0.360000, 0.440000<=pK<=0.480000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.320000<=pL<=0.360000, 0.480000<=pK<=0.520000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.320000<=pL<=0.360000, 0.520000<=pK<=0.560000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.320000<=pL<=0.360000, 0.560000<=pK<=0.600000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.320000<=pL<=0.360000, 0.600000<=pK<=0.640000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.320000<=pL<=0.360000, 0.640000<=pK<=0.680000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.320000<=pL<=0.360000, 0.680000<=pK<=0.720000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.320000<=pL<=0.360000, 0.720000<=pK<=0.760000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.320000<=pL<=0.360000, 0.760000<=pK<=0.800000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.320000<=pL<=0.360000, 0.800000<=pK<=0.840000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.320000<=pL<=0.360000, 0.840000<=pK<=0.880000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.320000<=pL<=0.360000, 0.880000<=pK<=0.920000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.320000<=pL<=0.360000, 0.920000<=pK<=0.960000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.320000<=pL<=0.360000, 0.960000<=pK<=0.999990, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.360000<=pL<=0.400000, 0.000010<=pK<=0.040000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.360000<=pL<=0.400000, 0.040000<=pK<=0.080000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.360000<=pL<=0.400000, 0.080000<=pK<=0.120000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.360000<=pL<=0.400000, 0.120000<=pK<=0.160000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.360000<=pL<=0.400000, 0.160000<=pK<=0.200000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.360000<=pL<=0.400000, 0.200000<=pK<=0.240000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.360000<=pL<=0.400000, 0.240000<=pK<=0.280000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.360000<=pL<=0.400000, 0.280000<=pK<=0.320000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.360000<=pL<=0.400000, 0.320000<=pK<=0.360000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.360000<=pL<=0.400000, 0.360000<=pK<=0.400000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.360000<=pL<=0.400000, 0.400000<=pK<=0.440000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.360000<=pL<=0.400000, 0.440000<=pK<=0.480000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.360000<=pL<=0.400000, 0.480000<=pK<=0.520000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.360000<=pL<=0.400000, 0.520000<=pK<=0.560000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.360000<=pL<=0.400000, 0.560000<=pK<=0.600000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.360000<=pL<=0.400000, 0.600000<=pK<=0.640000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.360000<=pL<=0.400000, 0.640000<=pK<=0.680000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.360000<=pL<=0.400000, 0.680000<=pK<=0.720000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.360000<=pL<=0.400000, 0.720000<=pK<=0.760000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.360000<=pL<=0.400000, 0.760000<=pK<=0.800000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.360000<=pL<=0.400000, 0.800000<=pK<=0.840000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.360000<=pL<=0.400000, 0.840000<=pK<=0.880000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.360000<=pL<=0.400000, 0.880000<=pK<=0.920000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.360000<=pL<=0.400000, 0.920000<=pK<=0.960000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.360000<=pL<=0.400000, 0.960000<=pK<=0.999990, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.400000<=pL<=0.440000, 0.000010<=pK<=0.040000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.400000<=pL<=0.440000, 0.040000<=pK<=0.080000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.400000<=pL<=0.440000, 0.080000<=pK<=0.120000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.400000<=pL<=0.440000, 0.120000<=pK<=0.160000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.400000<=pL<=0.440000, 0.160000<=pK<=0.200000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.400000<=pL<=0.440000, 0.200000<=pK<=0.240000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.400000<=pL<=0.440000, 0.240000<=pK<=0.280000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.400000<=pL<=0.440000, 0.280000<=pK<=0.320000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.400000<=pL<=0.440000, 0.320000<=pK<=0.360000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.400000<=pL<=0.440000, 0.360000<=pK<=0.400000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.400000<=pL<=0.440000, 0.400000<=pK<=0.440000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.400000<=pL<=0.440000, 0.440000<=pK<=0.480000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.400000<=pL<=0.440000, 0.480000<=pK<=0.520000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.400000<=pL<=0.440000, 0.520000<=pK<=0.560000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.400000<=pL<=0.440000, 0.560000<=pK<=0.600000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.400000<=pL<=0.440000, 0.600000<=pK<=0.640000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.400000<=pL<=0.440000, 0.640000<=pK<=0.680000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.400000<=pL<=0.440000, 0.680000<=pK<=0.720000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.400000<=pL<=0.440000, 0.720000<=pK<=0.760000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.400000<=pL<=0.440000, 0.760000<=pK<=0.800000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.400000<=pL<=0.440000, 0.800000<=pK<=0.840000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.400000<=pL<=0.440000, 0.840000<=pK<=0.880000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.400000<=pL<=0.440000, 0.880000<=pK<=0.920000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.400000<=pL<=0.440000, 0.920000<=pK<=0.960000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.400000<=pL<=0.440000, 0.960000<=pK<=0.999990, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.440000<=pL<=0.480000, 0.000010<=pK<=0.040000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.440000<=pL<=0.480000, 0.040000<=pK<=0.080000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.440000<=pL<=0.480000, 0.080000<=pK<=0.120000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.440000<=pL<=0.480000, 0.120000<=pK<=0.160000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.440000<=pL<=0.480000, 0.160000<=pK<=0.200000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.440000<=pL<=0.480000, 0.200000<=pK<=0.240000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.440000<=pL<=0.480000, 0.240000<=pK<=0.280000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.440000<=pL<=0.480000, 0.280000<=pK<=0.320000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.440000<=pL<=0.480000, 0.320000<=pK<=0.360000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.440000<=pL<=0.480000, 0.360000<=pK<=0.400000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.440000<=pL<=0.480000, 0.400000<=pK<=0.440000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.440000<=pL<=0.480000, 0.440000<=pK<=0.480000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.440000<=pL<=0.480000, 0.480000<=pK<=0.520000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.440000<=pL<=0.480000, 0.520000<=pK<=0.560000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.440000<=pL<=0.480000, 0.560000<=pK<=0.600000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.440000<=pL<=0.480000, 0.600000<=pK<=0.640000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.440000<=pL<=0.480000, 0.640000<=pK<=0.680000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.440000<=pL<=0.480000, 0.680000<=pK<=0.720000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.440000<=pL<=0.480000, 0.720000<=pK<=0.760000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.440000<=pL<=0.480000, 0.760000<=pK<=0.800000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.440000<=pL<=0.480000, 0.800000<=pK<=0.840000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.440000<=pL<=0.480000, 0.840000<=pK<=0.880000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.440000<=pL<=0.480000, 0.880000<=pK<=0.920000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.440000<=pL<=0.480000, 0.920000<=pK<=0.960000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.440000<=pL<=0.480000, 0.960000<=pK<=0.999990, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.480000<=pL<=0.520000, 0.000010<=pK<=0.040000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.480000<=pL<=0.520000, 0.040000<=pK<=0.080000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.480000<=pL<=0.520000, 0.080000<=pK<=0.120000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.480000<=pL<=0.520000, 0.120000<=pK<=0.160000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.480000<=pL<=0.520000, 0.160000<=pK<=0.200000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.480000<=pL<=0.520000, 0.200000<=pK<=0.240000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.480000<=pL<=0.520000, 0.240000<=pK<=0.280000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.480000<=pL<=0.520000, 0.280000<=pK<=0.320000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.480000<=pL<=0.520000, 0.320000<=pK<=0.360000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.480000<=pL<=0.520000, 0.360000<=pK<=0.400000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.480000<=pL<=0.520000, 0.400000<=pK<=0.440000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.480000<=pL<=0.520000, 0.440000<=pK<=0.480000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.480000<=pL<=0.520000, 0.480000<=pK<=0.520000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.480000<=pL<=0.520000, 0.520000<=pK<=0.560000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.480000<=pL<=0.520000, 0.560000<=pK<=0.600000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.480000<=pL<=0.520000, 0.600000<=pK<=0.640000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.480000<=pL<=0.520000, 0.640000<=pK<=0.680000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.480000<=pL<=0.520000, 0.680000<=pK<=0.720000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.480000<=pL<=0.520000, 0.720000<=pK<=0.760000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.480000<=pL<=0.520000, 0.760000<=pK<=0.800000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.480000<=pL<=0.520000, 0.800000<=pK<=0.840000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.480000<=pL<=0.520000, 0.840000<=pK<=0.880000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.480000<=pL<=0.520000, 0.880000<=pK<=0.920000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.480000<=pL<=0.520000, 0.920000<=pK<=0.960000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.480000<=pL<=0.520000, 0.960000<=pK<=0.999990, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.520000<=pL<=0.560000, 0.000010<=pK<=0.040000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.520000<=pL<=0.560000, 0.040000<=pK<=0.080000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.520000<=pL<=0.560000, 0.080000<=pK<=0.120000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.520000<=pL<=0.560000, 0.120000<=pK<=0.160000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.520000<=pL<=0.560000, 0.160000<=pK<=0.200000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.520000<=pL<=0.560000, 0.200000<=pK<=0.240000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.520000<=pL<=0.560000, 0.240000<=pK<=0.280000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.520000<=pL<=0.560000, 0.280000<=pK<=0.320000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.520000<=pL<=0.560000, 0.320000<=pK<=0.360000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.520000<=pL<=0.560000, 0.360000<=pK<=0.400000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.520000<=pL<=0.560000, 0.400000<=pK<=0.440000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.520000<=pL<=0.560000, 0.440000<=pK<=0.480000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.520000<=pL<=0.560000, 0.480000<=pK<=0.520000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.520000<=pL<=0.560000, 0.520000<=pK<=0.560000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.520000<=pL<=0.560000, 0.560000<=pK<=0.600000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.520000<=pL<=0.560000, 0.600000<=pK<=0.640000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.520000<=pL<=0.560000, 0.640000<=pK<=0.680000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.520000<=pL<=0.560000, 0.680000<=pK<=0.720000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.520000<=pL<=0.560000, 0.720000<=pK<=0.760000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.520000<=pL<=0.560000, 0.760000<=pK<=0.800000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.520000<=pL<=0.560000, 0.800000<=pK<=0.840000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.520000<=pL<=0.560000, 0.840000<=pK<=0.880000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.520000<=pL<=0.560000, 0.880000<=pK<=0.920000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.520000<=pL<=0.560000, 0.920000<=pK<=0.960000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.520000<=pL<=0.560000, 0.960000<=pK<=0.999990, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.560000<=pL<=0.600000, 0.000010<=pK<=0.040000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.560000<=pL<=0.600000, 0.040000<=pK<=0.080000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.560000<=pL<=0.600000, 0.080000<=pK<=0.120000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.560000<=pL<=0.600000, 0.120000<=pK<=0.160000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.560000<=pL<=0.600000, 0.160000<=pK<=0.200000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.560000<=pL<=0.600000, 0.200000<=pK<=0.240000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.560000<=pL<=0.600000, 0.240000<=pK<=0.280000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.560000<=pL<=0.600000, 0.280000<=pK<=0.320000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.560000<=pL<=0.600000, 0.320000<=pK<=0.360000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.560000<=pL<=0.600000, 0.360000<=pK<=0.400000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.560000<=pL<=0.600000, 0.400000<=pK<=0.440000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.560000<=pL<=0.600000, 0.440000<=pK<=0.480000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.560000<=pL<=0.600000, 0.480000<=pK<=0.520000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.560000<=pL<=0.600000, 0.520000<=pK<=0.560000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.560000<=pL<=0.600000, 0.560000<=pK<=0.600000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.560000<=pL<=0.600000, 0.600000<=pK<=0.640000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.560000<=pL<=0.600000, 0.640000<=pK<=0.680000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.560000<=pL<=0.600000, 0.680000<=pK<=0.720000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.560000<=pL<=0.600000, 0.720000<=pK<=0.760000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.560000<=pL<=0.600000, 0.760000<=pK<=0.800000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.560000<=pL<=0.600000, 0.800000<=pK<=0.840000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.560000<=pL<=0.600000, 0.840000<=pK<=0.880000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.560000<=pL<=0.600000, 0.880000<=pK<=0.920000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.560000<=pL<=0.600000, 0.920000<=pK<=0.960000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.560000<=pL<=0.600000, 0.960000<=pK<=0.999990, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.600000<=pL<=0.640000, 0.000010<=pK<=0.040000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.600000<=pL<=0.640000, 0.040000<=pK<=0.080000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.600000<=pL<=0.640000, 0.080000<=pK<=0.120000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.600000<=pL<=0.640000, 0.120000<=pK<=0.160000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.600000<=pL<=0.640000, 0.160000<=pK<=0.200000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.600000<=pL<=0.640000, 0.200000<=pK<=0.240000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.600000<=pL<=0.640000, 0.240000<=pK<=0.280000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.600000<=pL<=0.640000, 0.280000<=pK<=0.320000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.600000<=pL<=0.640000, 0.320000<=pK<=0.360000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.600000<=pL<=0.640000, 0.360000<=pK<=0.400000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.600000<=pL<=0.640000, 0.400000<=pK<=0.440000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.600000<=pL<=0.640000, 0.440000<=pK<=0.480000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.600000<=pL<=0.640000, 0.480000<=pK<=0.520000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.600000<=pL<=0.640000, 0.520000<=pK<=0.560000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.600000<=pL<=0.640000, 0.560000<=pK<=0.600000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.600000<=pL<=0.640000, 0.600000<=pK<=0.640000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.600000<=pL<=0.640000, 0.640000<=pK<=0.680000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.600000<=pL<=0.640000, 0.680000<=pK<=0.720000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.600000<=pL<=0.640000, 0.720000<=pK<=0.760000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.600000<=pL<=0.640000, 0.760000<=pK<=0.800000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.600000<=pL<=0.640000, 0.800000<=pK<=0.840000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.600000<=pL<=0.640000, 0.840000<=pK<=0.880000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.600000<=pL<=0.640000, 0.880000<=pK<=0.920000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.600000<=pL<=0.640000, 0.920000<=pK<=0.960000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.600000<=pL<=0.640000, 0.960000<=pK<=0.999990, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.640000<=pL<=0.680000, 0.000010<=pK<=0.040000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.640000<=pL<=0.680000, 0.040000<=pK<=0.080000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.640000<=pL<=0.680000, 0.080000<=pK<=0.120000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.640000<=pL<=0.680000, 0.120000<=pK<=0.160000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.640000<=pL<=0.680000, 0.160000<=pK<=0.200000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.640000<=pL<=0.680000, 0.200000<=pK<=0.240000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.640000<=pL<=0.680000, 0.240000<=pK<=0.280000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.640000<=pL<=0.680000, 0.280000<=pK<=0.320000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.640000<=pL<=0.680000, 0.320000<=pK<=0.360000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.640000<=pL<=0.680000, 0.360000<=pK<=0.400000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.640000<=pL<=0.680000, 0.400000<=pK<=0.440000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.640000<=pL<=0.680000, 0.440000<=pK<=0.480000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.640000<=pL<=0.680000, 0.480000<=pK<=0.520000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.640000<=pL<=0.680000, 0.520000<=pK<=0.560000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.640000<=pL<=0.680000, 0.560000<=pK<=0.600000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.640000<=pL<=0.680000, 0.600000<=pK<=0.640000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.640000<=pL<=0.680000, 0.640000<=pK<=0.680000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.640000<=pL<=0.680000, 0.680000<=pK<=0.720000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.640000<=pL<=0.680000, 0.720000<=pK<=0.760000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.640000<=pL<=0.680000, 0.760000<=pK<=0.800000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.640000<=pL<=0.680000, 0.800000<=pK<=0.840000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.640000<=pL<=0.680000, 0.840000<=pK<=0.880000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.640000<=pL<=0.680000, 0.880000<=pK<=0.920000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.640000<=pL<=0.680000, 0.920000<=pK<=0.960000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.640000<=pL<=0.680000, 0.960000<=pK<=0.999990, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.680000<=pL<=0.720000, 0.000010<=pK<=0.040000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.680000<=pL<=0.720000, 0.040000<=pK<=0.080000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.680000<=pL<=0.720000, 0.080000<=pK<=0.120000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.680000<=pL<=0.720000, 0.120000<=pK<=0.160000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.680000<=pL<=0.720000, 0.160000<=pK<=0.200000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.680000<=pL<=0.720000, 0.200000<=pK<=0.240000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.680000<=pL<=0.720000, 0.240000<=pK<=0.280000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.680000<=pL<=0.720000, 0.280000<=pK<=0.320000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.680000<=pL<=0.720000, 0.320000<=pK<=0.360000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.680000<=pL<=0.720000, 0.360000<=pK<=0.400000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.680000<=pL<=0.720000, 0.400000<=pK<=0.440000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.680000<=pL<=0.720000, 0.440000<=pK<=0.480000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.680000<=pL<=0.720000, 0.480000<=pK<=0.520000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.680000<=pL<=0.720000, 0.520000<=pK<=0.560000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.680000<=pL<=0.720000, 0.560000<=pK<=0.600000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.680000<=pL<=0.720000, 0.600000<=pK<=0.640000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.680000<=pL<=0.720000, 0.640000<=pK<=0.680000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.680000<=pL<=0.720000, 0.680000<=pK<=0.720000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.680000<=pL<=0.720000, 0.720000<=pK<=0.760000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.680000<=pL<=0.720000, 0.760000<=pK<=0.800000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.680000<=pL<=0.720000, 0.800000<=pK<=0.840000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.680000<=pL<=0.720000, 0.840000<=pK<=0.880000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.680000<=pL<=0.720000, 0.880000<=pK<=0.920000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.680000<=pL<=0.720000, 0.920000<=pK<=0.960000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.680000<=pL<=0.720000, 0.960000<=pK<=0.999990, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.720000<=pL<=0.760000, 0.000010<=pK<=0.040000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.720000<=pL<=0.760000, 0.040000<=pK<=0.080000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.720000<=pL<=0.760000, 0.080000<=pK<=0.120000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.720000<=pL<=0.760000, 0.120000<=pK<=0.160000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.720000<=pL<=0.760000, 0.160000<=pK<=0.200000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.720000<=pL<=0.760000, 0.200000<=pK<=0.240000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.720000<=pL<=0.760000, 0.240000<=pK<=0.280000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.720000<=pL<=0.760000, 0.280000<=pK<=0.320000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.720000<=pL<=0.760000, 0.320000<=pK<=0.360000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.720000<=pL<=0.760000, 0.360000<=pK<=0.400000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.720000<=pL<=0.760000, 0.400000<=pK<=0.440000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.720000<=pL<=0.760000, 0.440000<=pK<=0.480000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.720000<=pL<=0.760000, 0.480000<=pK<=0.520000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.720000<=pL<=0.760000, 0.520000<=pK<=0.560000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.720000<=pL<=0.760000, 0.560000<=pK<=0.600000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.720000<=pL<=0.760000, 0.600000<=pK<=0.640000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.720000<=pL<=0.760000, 0.640000<=pK<=0.680000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.720000<=pL<=0.760000, 0.680000<=pK<=0.720000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.720000<=pL<=0.760000, 0.720000<=pK<=0.760000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.720000<=pL<=0.760000, 0.760000<=pK<=0.800000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.720000<=pL<=0.760000, 0.800000<=pK<=0.840000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.720000<=pL<=0.760000, 0.840000<=pK<=0.880000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.720000<=pL<=0.760000, 0.880000<=pK<=0.920000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.720000<=pL<=0.760000, 0.920000<=pK<=0.960000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.720000<=pL<=0.760000, 0.960000<=pK<=0.999990, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.760000<=pL<=0.800000, 0.000010<=pK<=0.040000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.760000<=pL<=0.800000, 0.040000<=pK<=0.080000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.760000<=pL<=0.800000, 0.080000<=pK<=0.120000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.760000<=pL<=0.800000, 0.120000<=pK<=0.160000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.760000<=pL<=0.800000, 0.160000<=pK<=0.200000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.760000<=pL<=0.800000, 0.200000<=pK<=0.240000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.760000<=pL<=0.800000, 0.240000<=pK<=0.280000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.760000<=pL<=0.800000, 0.280000<=pK<=0.320000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.760000<=pL<=0.800000, 0.320000<=pK<=0.360000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.760000<=pL<=0.800000, 0.360000<=pK<=0.400000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.760000<=pL<=0.800000, 0.400000<=pK<=0.440000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.760000<=pL<=0.800000, 0.440000<=pK<=0.480000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.760000<=pL<=0.800000, 0.480000<=pK<=0.520000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.760000<=pL<=0.800000, 0.520000<=pK<=0.560000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.760000<=pL<=0.800000, 0.560000<=pK<=0.600000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.760000<=pL<=0.800000, 0.600000<=pK<=0.640000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.760000<=pL<=0.800000, 0.640000<=pK<=0.680000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.760000<=pL<=0.800000, 0.680000<=pK<=0.720000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.760000<=pL<=0.800000, 0.720000<=pK<=0.760000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.760000<=pL<=0.800000, 0.760000<=pK<=0.800000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.760000<=pL<=0.800000, 0.800000<=pK<=0.840000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.760000<=pL<=0.800000, 0.840000<=pK<=0.880000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.760000<=pL<=0.800000, 0.880000<=pK<=0.920000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.760000<=pL<=0.800000, 0.920000<=pK<=0.960000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.760000<=pL<=0.800000, 0.960000<=pK<=0.999990, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.800000<=pL<=0.840000, 0.000010<=pK<=0.040000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.800000<=pL<=0.840000, 0.040000<=pK<=0.080000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.800000<=pL<=0.840000, 0.080000<=pK<=0.120000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.800000<=pL<=0.840000, 0.120000<=pK<=0.160000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.800000<=pL<=0.840000, 0.160000<=pK<=0.200000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.800000<=pL<=0.840000, 0.200000<=pK<=0.240000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.800000<=pL<=0.840000, 0.240000<=pK<=0.280000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.800000<=pL<=0.840000, 0.280000<=pK<=0.320000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.800000<=pL<=0.840000, 0.320000<=pK<=0.360000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.800000<=pL<=0.840000, 0.360000<=pK<=0.400000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.800000<=pL<=0.840000, 0.400000<=pK<=0.440000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.800000<=pL<=0.840000, 0.440000<=pK<=0.480000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.800000<=pL<=0.840000, 0.480000<=pK<=0.520000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.800000<=pL<=0.840000, 0.520000<=pK<=0.560000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.800000<=pL<=0.840000, 0.560000<=pK<=0.600000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.800000<=pL<=0.840000, 0.600000<=pK<=0.640000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.800000<=pL<=0.840000, 0.640000<=pK<=0.680000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.800000<=pL<=0.840000, 0.680000<=pK<=0.720000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.800000<=pL<=0.840000, 0.720000<=pK<=0.760000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.800000<=pL<=0.840000, 0.760000<=pK<=0.800000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.800000<=pL<=0.840000, 0.800000<=pK<=0.840000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.800000<=pL<=0.840000, 0.840000<=pK<=0.880000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.800000<=pL<=0.840000, 0.880000<=pK<=0.920000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.800000<=pL<=0.840000, 0.920000<=pK<=0.960000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.800000<=pL<=0.840000, 0.960000<=pK<=0.999990, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.840000<=pL<=0.880000, 0.000010<=pK<=0.040000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.840000<=pL<=0.880000, 0.040000<=pK<=0.080000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.840000<=pL<=0.880000, 0.080000<=pK<=0.120000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.840000<=pL<=0.880000, 0.120000<=pK<=0.160000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.840000<=pL<=0.880000, 0.160000<=pK<=0.200000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.840000<=pL<=0.880000, 0.200000<=pK<=0.240000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.840000<=pL<=0.880000, 0.240000<=pK<=0.280000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.840000<=pL<=0.880000, 0.280000<=pK<=0.320000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.840000<=pL<=0.880000, 0.320000<=pK<=0.360000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.840000<=pL<=0.880000, 0.360000<=pK<=0.400000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.840000<=pL<=0.880000, 0.400000<=pK<=0.440000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.840000<=pL<=0.880000, 0.440000<=pK<=0.480000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.840000<=pL<=0.880000, 0.480000<=pK<=0.520000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.840000<=pL<=0.880000, 0.520000<=pK<=0.560000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.840000<=pL<=0.880000, 0.560000<=pK<=0.600000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.840000<=pL<=0.880000, 0.600000<=pK<=0.640000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.840000<=pL<=0.880000, 0.640000<=pK<=0.680000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.840000<=pL<=0.880000, 0.680000<=pK<=0.720000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.840000<=pL<=0.880000, 0.720000<=pK<=0.760000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.840000<=pL<=0.880000, 0.760000<=pK<=0.800000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.840000<=pL<=0.880000, 0.800000<=pK<=0.840000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.840000<=pL<=0.880000, 0.840000<=pK<=0.880000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.840000<=pL<=0.880000, 0.880000<=pK<=0.920000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.840000<=pL<=0.880000, 0.920000<=pK<=0.960000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.840000<=pL<=0.880000, 0.960000<=pK<=0.999990, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.880000<=pL<=0.920000, 0.000010<=pK<=0.040000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.880000<=pL<=0.920000, 0.040000<=pK<=0.080000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.880000<=pL<=0.920000, 0.080000<=pK<=0.120000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.880000<=pL<=0.920000, 0.120000<=pK<=0.160000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.880000<=pL<=0.920000, 0.160000<=pK<=0.200000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.880000<=pL<=0.920000, 0.200000<=pK<=0.240000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.880000<=pL<=0.920000, 0.240000<=pK<=0.280000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.880000<=pL<=0.920000, 0.280000<=pK<=0.320000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.880000<=pL<=0.920000, 0.320000<=pK<=0.360000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.880000<=pL<=0.920000, 0.360000<=pK<=0.400000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.880000<=pL<=0.920000, 0.400000<=pK<=0.440000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.880000<=pL<=0.920000, 0.440000<=pK<=0.480000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.880000<=pL<=0.920000, 0.480000<=pK<=0.520000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.880000<=pL<=0.920000, 0.520000<=pK<=0.560000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.880000<=pL<=0.920000, 0.560000<=pK<=0.600000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.880000<=pL<=0.920000, 0.600000<=pK<=0.640000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.880000<=pL<=0.920000, 0.640000<=pK<=0.680000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.880000<=pL<=0.920000, 0.680000<=pK<=0.720000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.880000<=pL<=0.920000, 0.720000<=pK<=0.760000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.880000<=pL<=0.920000, 0.760000<=pK<=0.800000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.880000<=pL<=0.920000, 0.800000<=pK<=0.840000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.880000<=pL<=0.920000, 0.840000<=pK<=0.880000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.880000<=pL<=0.920000, 0.880000<=pK<=0.920000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.880000<=pL<=0.920000, 0.920000<=pK<=0.960000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.880000<=pL<=0.920000, 0.960000<=pK<=0.999990, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.920000<=pL<=0.960000, 0.000010<=pK<=0.040000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.920000<=pL<=0.960000, 0.040000<=pK<=0.080000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.920000<=pL<=0.960000, 0.080000<=pK<=0.120000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.920000<=pL<=0.960000, 0.120000<=pK<=0.160000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.920000<=pL<=0.960000, 0.160000<=pK<=0.200000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.920000<=pL<=0.960000, 0.200000<=pK<=0.240000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.920000<=pL<=0.960000, 0.240000<=pK<=0.280000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.920000<=pL<=0.960000, 0.280000<=pK<=0.320000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.920000<=pL<=0.960000, 0.320000<=pK<=0.360000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.920000<=pL<=0.960000, 0.360000<=pK<=0.400000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.920000<=pL<=0.960000, 0.400000<=pK<=0.440000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.920000<=pL<=0.960000, 0.440000<=pK<=0.480000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.920000<=pL<=0.960000, 0.480000<=pK<=0.520000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.920000<=pL<=0.960000, 0.520000<=pK<=0.560000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.920000<=pL<=0.960000, 0.560000<=pK<=0.600000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.920000<=pL<=0.960000, 0.600000<=pK<=0.640000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.920000<=pL<=0.960000, 0.640000<=pK<=0.680000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.920000<=pL<=0.960000, 0.680000<=pK<=0.720000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.920000<=pL<=0.960000, 0.720000<=pK<=0.760000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.920000<=pL<=0.960000, 0.760000<=pK<=0.800000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.920000<=pL<=0.960000, 0.800000<=pK<=0.840000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.920000<=pL<=0.960000, 0.840000<=pK<=0.880000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.920000<=pL<=0.960000, 0.880000<=pK<=0.920000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.920000<=pL<=0.960000, 0.920000<=pK<=0.960000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.920000<=pL<=0.960000, 0.960000<=pK<=0.999990, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.960000<=pL<=0.999990, 0.000010<=pK<=0.040000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.960000<=pL<=0.999990, 0.040000<=pK<=0.080000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.960000<=pL<=0.999990, 0.080000<=pK<=0.120000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.960000<=pL<=0.999990, 0.120000<=pK<=0.160000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.960000<=pL<=0.999990, 0.160000<=pK<=0.200000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.960000<=pL<=0.999990, 0.200000<=pK<=0.240000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.960000<=pL<=0.999990, 0.240000<=pK<=0.280000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.960000<=pL<=0.999990, 0.280000<=pK<=0.320000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.960000<=pL<=0.999990, 0.320000<=pK<=0.360000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.960000<=pL<=0.999990, 0.360000<=pK<=0.400000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.960000<=pL<=0.999990, 0.400000<=pK<=0.440000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.960000<=pL<=0.999990, 0.440000<=pK<=0.480000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.960000<=pL<=0.999990, 0.480000<=pK<=0.520000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.960000<=pL<=0.999990, 0.520000<=pK<=0.560000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.960000<=pL<=0.999990, 0.560000<=pK<=0.600000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.960000<=pL<=0.999990, 0.600000<=pK<=0.640000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.960000<=pL<=0.999990, 0.640000<=pK<=0.680000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.960000<=pL<=0.999990, 0.680000<=pK<=0.720000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.960000<=pL<=0.999990, 0.720000<=pK<=0.760000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.960000<=pL<=0.999990, 0.760000<=pK<=0.800000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.960000<=pL<=0.999990, 0.800000<=pK<=0.840000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.960000<=pL<=0.999990, 0.840000<=pK<=0.880000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.960000<=pL<=0.999990, 0.880000<=pK<=0.920000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.960000<=pL<=0.999990, 0.920000<=pK<=0.960000, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; -0.960000<=pL<=0.999990, 0.960000<=pK<=0.999990, 0.35<=TOMsg<=0.45, 0.55<=TOAck<=0.65; diff --git a/examples/pdtmc/brp_rewards4/brp_rewards4_space.txt b/examples/pdtmc/brp_rewards4/brp_rewards4_space.txt deleted file mode 100644 index 71a8cd59a..000000000 --- a/examples/pdtmc/brp_rewards4/brp_rewards4_space.txt +++ /dev/null @@ -1,2 +0,0 @@ -0.000010<=pL<=0.999990, 0.000010<=pK<=0.999990, 0.000010<=TOMsg<=0.999990, 0.000010<=TOAck<=0.999990; - diff --git a/examples/pdtmc/brp_rewards4/brp_rewards512_5.pm b/examples/pdtmc/brp_rewards4/brp_rewards512_5.pm deleted file mode 100644 index dba2395b1..000000000 --- a/examples/pdtmc/brp_rewards4/brp_rewards512_5.pm +++ /dev/null @@ -1,146 +0,0 @@ -// bounded retransmission protocol [D'AJJL01] -// gxn/dxp 23/05/2001 - -dtmc - -// number of chunks -const int N = 512; -// maximum number of retransmissions -const int MAX = 5; - -// reliability of channels -const double pL; -const double pK; - -// timeouts -const double TOMsg; -const double TOAck; - -module sender - - 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; - - // 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); - // wait_ack - [aB] (s=2) -> (s'=4) & (s_ab'=!s_ab); - [TO_Msg] (s=2) -> (s'=3); - [TO_Ack] (s=2) -> (s'=3); - // retransmit - [aF] (s=3) & (nrtr (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1); - [] (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 - -// prevents more than one file being sent -module tester - - T : bool; - - [NewFile] (T=false) -> (T'=true); - -endmodule - -module channelK - - k : [0..2]; - - // idle - [aF] (k=0) -> pK : (k'=1) + 1-pK : (k'=2); - // sending - [aG] (k=1) -> (k'=0); - // lost - [TO_Msg] (k=2) -> (k'=0); - -endmodule - -module channelL - - l : [0..2]; - - // idle - [aA] (l=0) -> pL : (l'=1) + 1-pL : (l'=2); - // sending - [aB] (l=1) -> (l'=0); - // lost - [TO_Ack] (l=2) -> (l'=0); - -endmodule - -rewards - [TO_Msg] true : TOMsg; - [TO_Ack] true : TOAck; -endrewards - - diff --git a/examples/pdtmc/brp_rewards4/brp_rewards64_4.pm b/examples/pdtmc/brp_rewards4/brp_rewards64_4.pm deleted file mode 100644 index 5a0f82b7f..000000000 --- a/examples/pdtmc/brp_rewards4/brp_rewards64_4.pm +++ /dev/null @@ -1,146 +0,0 @@ -// bounded retransmission protocol [D'AJJL01] -// gxn/dxp 23/05/2001 - -dtmc - -// number of chunks -const int N = 64; -// maximum number of retransmissions -const int MAX = 4; - -// reliability of channels -const double pL; -const double pK; - -// timeouts -const double TOMsg; -const double TOAck; - -module sender - - 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; - - // 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); - // wait_ack - [aB] (s=2) -> (s'=4) & (s_ab'=!s_ab); - [TO_Msg] (s=2) -> (s'=3); - [TO_Ack] (s=2) -> (s'=3); - // retransmit - [aF] (s=3) & (nrtr (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1); - [] (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 - -// prevents more than one file being sent -module tester - - T : bool; - - [NewFile] (T=false) -> (T'=true); - -endmodule - -module channelK - - k : [0..2]; - - // idle - [aF] (k=0) -> pK : (k'=1) + 1-pK : (k'=2); - // sending - [aG] (k=1) -> (k'=0); - // lost - [TO_Msg] (k=2) -> (k'=0); - -endmodule - -module channelL - - l : [0..2]; - - // idle - [aA] (l=0) -> pL : (l'=1) + 1-pL : (l'=2); - // sending - [aB] (l=1) -> (l'=0); - // lost - [TO_Ack] (l=2) -> (l'=0); - -endmodule - -rewards - [TO_Msg] true : TOMsg; - [TO_Ack] true : TOAck; -endrewards - - diff --git a/examples/pdtmc/brp_rewards4/models b/examples/pdtmc/brp_rewards4/models deleted file mode 100644 index e3656e3a8..000000000 --- a/examples/pdtmc/brp_rewards4/models +++ /dev/null @@ -1,2 +0,0 @@ -brp_rewards4.pm -const N=256,MAX=5 -brp_rewards4.pm -const N=5012,MAX=5 diff --git a/examples/pdtmc/crowds/crowds.pm b/examples/pdtmc/crowds/crowds.pm deleted file mode 100644 index 1da952d06..000000000 --- a/examples/pdtmc/crowds/crowds.pm +++ /dev/null @@ -1,194 +0,0 @@ -// CROWDS [Reiter,Rubin] -// Vitaly Shmatikov, 2002 -// Modified by Ernst Moritz Hahn (emh@cs.uni-sb.de) - -// note: -// Change everything marked CWDSIZ when changing the size of the crowd -// Change everything marked CWDMAX when increasing max size of the crowd - -dtmc - -// Model parameters -const double PF; // forwarding probability -const double badC; // probability that member is untrustworthy - -// Probability of forwarding -// const double PF = 0.8; -// const double notPF = 0.2; // must be 1-PF - -// Probability that a crowd member is bad -// const double badC = 0.1; -// const double badC = 0.091; -// const double badC = 0.167; -// const double goodC = 0.909; // must be 1-badC -// const double goodC = 0.833; // must be 1-badC - -const int CrowdSize; // CWDSIZ: actual number of good crowd members -const int TotalRuns; // Total number of protocol runs to analyze -const int MaxGood=20; // CWDMAX: maximum number of good crowd members - -// Process definitions -module crowds - - // Auxiliary variables - launch: bool init true; // Start modeling? - newInstance: bool init false; // Initialize a new protocol instance? - runCount: [0..TotalRuns] init TotalRuns; // Counts protocol instances - start: bool init false; // Start the protocol? - run: bool init false; // Run the protocol? - lastSeen: [0..MaxGood] init 0; // Last crowd member to touch msg - good: bool init false; // Crowd member is good? - bad: bool init false; // ... bad? - recordLast: bool init false; // Record last seen crowd member? - badObserve: bool init false; // Bad members observes who sent msg? - deliver: bool init false; // Deliver message to destination? - done: bool init false; // Protocol instance finished? - - // Counters for attackers' observations - // CWDMAX: 1 counter per each good crowd member - observe0: [0..TotalRuns]; - observe1: [0..TotalRuns]; - observe2: [0..TotalRuns]; - observe3: [0..TotalRuns]; - observe4: [0..TotalRuns]; - observe5: [0..TotalRuns]; - observe6: [0..TotalRuns]; - observe7: [0..TotalRuns]; - observe8: [0..TotalRuns]; - observe9: [0..TotalRuns]; - observe10: [0..TotalRuns]; - observe11: [0..TotalRuns]; - observe12: [0..TotalRuns]; - observe13: [0..TotalRuns]; - observe14: [0..TotalRuns]; - observe15: [0..TotalRuns]; - observe16: [0..TotalRuns]; - observe17: [0..TotalRuns]; - observe18: [0..TotalRuns]; - observe19: [0..TotalRuns]; - - [] launch -> (newInstance'=true) & (runCount'=TotalRuns) & (launch'=false); - // Set up a newInstance protocol instance - [] newInstance & runCount>0 -> (runCount'=runCount-1) & (newInstance'=false) & (start'=true); - - // SENDER - // Start the protocol - [] start -> (lastSeen'=0) & (run'=true) & (deliver'=false) & (start'=false); - - // CROWD MEMBERS - // Good or bad crowd member? - [] !good & !bad & !deliver & run -> - 1-badC : (good'=true) & (recordLast'=true) & (run'=false) + - badC : (bad'=true) & (badObserve'=true) & (run'=false); - - // GOOD MEMBERS - // Forward with probability PF, else deliver - [] good & !deliver & run -> PF : (good'=false) + 1-PF : (deliver'=true); - // Record the last crowd member who touched the msg; - // all good members may appear with equal probability - // Note: This is backward. In the real protocol, each honest - // forwarder randomly chooses the next forwarder. - // Here, the identity of an honest forwarder is randomly - // chosen *after* it has forwarded the message. - [] recordLast & CrowdSize=2 -> - 1/2 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/2 : (lastSeen'=1) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=3 -> - 1/3 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/3 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/3 : (lastSeen'=2) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=4 -> - 1/4 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/4 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/4 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/4 : (lastSeen'=3) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=5 -> - 1/5 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=4) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=10 -> - 1/10 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=4) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=5) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=6) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=7) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=8) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=9) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=15 -> - 1/15 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=4) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=5) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=6) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=7) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=8) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=9) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=10) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=11) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=12) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=13) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=14) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=20 -> - 1/20 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=4) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=5) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=6) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=7) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=8) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=9) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=10) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=11) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=12) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=13) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=14) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=15) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=16) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=17) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=18) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=19) & (recordLast'=false) & (run'=true); - - // BAD MEMBERS - // Remember from whom the message was received and deliver - // CWDMAX: 1 rule per each good crowd member - [] lastSeen=0 & badObserve & observe0 (observe0' =observe0 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=1 & badObserve & observe1 (observe1' =observe1 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=2 & badObserve & observe2 (observe2' =observe2 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=3 & badObserve & observe3 (observe3' =observe3 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=4 & badObserve & observe4 (observe4' =observe4 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=5 & badObserve & observe5 (observe5' =observe5 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=6 & badObserve & observe6 (observe6' =observe6 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=7 & badObserve & observe7 (observe7' =observe7 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=8 & badObserve & observe8 (observe8' =observe8 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=9 & badObserve & observe9 (observe9' =observe9 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=10 & badObserve & observe10 (observe10'=observe10+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=11 & badObserve & observe11 (observe11'=observe11+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=12 & badObserve & observe12 (observe12'=observe12+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=13 & badObserve & observe13 (observe13'=observe13+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=14 & badObserve & observe14 (observe14'=observe14+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=15 & badObserve & observe15 (observe15'=observe15+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=16 & badObserve & observe16 (observe16'=observe16+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=17 & badObserve & observe17 (observe17'=observe17+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=18 & badObserve & observe18 (observe18'=observe18+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=19 & badObserve & observe19 (observe19'=observe19+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - - // RECIPIENT - // Delivery to destination - [] deliver & run -> (done'=true) & (deliver'=false) & (run'=false) & (good'=false) & (bad'=false); - // Start a newInstance instance - [] done -> (newInstance'=true) & (done'=false) & (run'=false) & (lastSeen'=MaxGood); - -endmodule - -label "observe0Greater1" = observe0 > 1; -label "observeIGreater1" = observe1>1|observe2>1; -label "observeOnlyTrueSender" = observe0>1&observe1<=1 & observe2<=1; diff --git a/examples/pdtmc/crowds/crowds.prctl b/examples/pdtmc/crowds/crowds.prctl deleted file mode 100644 index e2c788377..000000000 --- a/examples/pdtmc/crowds/crowds.prctl +++ /dev/null @@ -1 +0,0 @@ -P<=0.9 [F "observe0Greater1" ] diff --git a/examples/pdtmc/crowds/crowds10_5.pm b/examples/pdtmc/crowds/crowds10_5.pm deleted file mode 100644 index 022e93948..000000000 --- a/examples/pdtmc/crowds/crowds10_5.pm +++ /dev/null @@ -1,195 +0,0 @@ -// CROWDS [Reiter,Rubin] -// Vitaly Shmatikov, 2002 -// Modified by Ernst Moritz Hahn (emh@cs.uni-sb.de) - -// note: -// Change everything marked CWDSIZ when changing the size of the crowd -// Change everything marked CWDMAX when increasing max size of the crowd - -dtmc - -// Model parameters -const double PF; // forwarding probability -const double badC; // probability that member is untrustworthy - -// Probability of forwarding -// const double PF = 0.8; -// const double notPF = 0.2; // must be 1-PF - -// Probability that a crowd member is bad -// const double badC = 0.1; -// const double badC = 0.091; -// const double badC = 0.167; -// const double goodC = 0.909; // must be 1-badC -// const double goodC = 0.833; // must be 1-badC - -const int CrowdSize = 10; // CWDSIZ: actual number of good crowd members -const int TotalRuns = 5; // Total number of protocol runs to analyze -const int MaxGood=20; // CWDMAX: maximum number of good crowd members - -// Process definitions -module crowds - - // Auxiliary variables - launch: bool init true; // Start modeling? - newInstance: bool init false; // Initialize a new protocol instance? - runCount: [0..TotalRuns] init TotalRuns; // Counts protocol instances - start: bool init false; // Start the protocol? - run: bool init false; // Run the protocol? - lastSeen: [0..MaxGood] init 0; // Last crowd member to touch msg - good: bool init false; // Crowd member is good? - bad: bool init false; // ... bad? - recordLast: bool init false; // Record last seen crowd member? - badObserve: bool init false; // Bad members observes who sent msg? - deliver: bool init false; // Deliver message to destination? - done: bool init false; // Protocol instance finished? - - // Counters for attackers' observations - // CWDMAX: 1 counter per each good crowd member - observe0: [0..TotalRuns]; - observe1: [0..TotalRuns]; - observe2: [0..TotalRuns]; - observe3: [0..TotalRuns]; - observe4: [0..TotalRuns]; - observe5: [0..TotalRuns]; - observe6: [0..TotalRuns]; - observe7: [0..TotalRuns]; - observe8: [0..TotalRuns]; - observe9: [0..TotalRuns]; - observe10: [0..TotalRuns]; - observe11: [0..TotalRuns]; - observe12: [0..TotalRuns]; - observe13: [0..TotalRuns]; - observe14: [0..TotalRuns]; - observe15: [0..TotalRuns]; - observe16: [0..TotalRuns]; - observe17: [0..TotalRuns]; - observe18: [0..TotalRuns]; - observe19: [0..TotalRuns]; - - [] launch -> (newInstance'=true) & (runCount'=TotalRuns) & (launch'=false); - // Set up a newInstance protocol instance - [] newInstance & runCount>0 -> (runCount'=runCount-1) & (newInstance'=false) & (start'=true); - - // SENDER - // Start the protocol - [] start -> (lastSeen'=0) & (run'=true) & (deliver'=false) & (start'=false); - - // CROWD MEMBERS - // Good or bad crowd member? - [] !good & !bad & !deliver & run -> - 1-badC : (good'=true) & (recordLast'=true) & (run'=false) + - badC : (bad'=true) & (badObserve'=true) & (run'=false); - - // GOOD MEMBERS - // Forward with probability PF, else deliver - [] good & !deliver & run -> PF : (good'=false) + 1-PF : (deliver'=true); - // Record the last crowd member who touched the msg; - // all good members may appear with equal probability - // Note: This is backward. In the real protocol, each honest - // forwarder randomly chooses the next forwarder. - // Here, the identity of an honest forwarder is randomly - // chosen *after* it has forwarded the message. - [] recordLast & CrowdSize=2 -> - 1/2 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/2 : (lastSeen'=1) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=3 -> - 1/3 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/3 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/3 : (lastSeen'=2) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=4 -> - 1/4 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/4 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/4 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/4 : (lastSeen'=3) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=5 -> - 1/5 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=4) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=10 -> - 1/10 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=4) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=5) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=6) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=7) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=8) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=9) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=15 -> - 1/15 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=4) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=5) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=6) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=7) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=8) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=9) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=10) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=11) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=12) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=13) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=14) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=20 -> - 1/20 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=4) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=5) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=6) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=7) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=8) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=9) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=10) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=11) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=12) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=13) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=14) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=15) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=16) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=17) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=18) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=19) & (recordLast'=false) & (run'=true); - - // BAD MEMBERS - // Remember from whom the message was received and deliver - // CWDMAX: 1 rule per each good crowd member - [] lastSeen=0 & badObserve & observe0 (observe0' =observe0 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=1 & badObserve & observe1 (observe1' =observe1 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=2 & badObserve & observe2 (observe2' =observe2 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=3 & badObserve & observe3 (observe3' =observe3 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=4 & badObserve & observe4 (observe4' =observe4 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=5 & badObserve & observe5 (observe5' =observe5 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=6 & badObserve & observe6 (observe6' =observe6 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=7 & badObserve & observe7 (observe7' =observe7 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=8 & badObserve & observe8 (observe8' =observe8 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=9 & badObserve & observe9 (observe9' =observe9 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=10 & badObserve & observe10 (observe10'=observe10+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=11 & badObserve & observe11 (observe11'=observe11+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=12 & badObserve & observe12 (observe12'=observe12+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=13 & badObserve & observe13 (observe13'=observe13+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=14 & badObserve & observe14 (observe14'=observe14+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=15 & badObserve & observe15 (observe15'=observe15+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=16 & badObserve & observe16 (observe16'=observe16+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=17 & badObserve & observe17 (observe17'=observe17+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=18 & badObserve & observe18 (observe18'=observe18+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=19 & badObserve & observe19 (observe19'=observe19+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - - // RECIPIENT - // Delivery to destination - [] deliver & run -> (done'=true) & (deliver'=false) & (run'=false) & (good'=false) & (bad'=false); - // Start a newInstance instance - [] done -> (newInstance'=true) & (done'=false) & (run'=false) & (lastSeen'=MaxGood); - -endmodule - -label "observe0Greater1" = observe0 > 1; -label "observeIGreater1" = observe1 > 1 | observe2 > 1 | observe3 > 1 | observe4 > 1 | observe5 > 1 | observe6 > 1 | observe7 > 1 | observe8 > 1 | observe9 > 1; -label "observeOnlyTrueSender" = observe0 > 1 & observe1 <= 1 & observe2 <= 1 & observe3 <= 1 & observe4 <= 1 & observe5 <= 1 & observe6 <= 1 & observe7 <= 1 & observe8 <= 1 & observe9 <= 1; - diff --git a/examples/pdtmc/crowds/crowds15_5.pm b/examples/pdtmc/crowds/crowds15_5.pm deleted file mode 100644 index 994c2e2dd..000000000 --- a/examples/pdtmc/crowds/crowds15_5.pm +++ /dev/null @@ -1,195 +0,0 @@ -// CROWDS [Reiter,Rubin] -// Vitaly Shmatikov, 2002 -// Modified by Ernst Moritz Hahn (emh@cs.uni-sb.de) - -// note: -// Change everything marked CWDSIZ when changing the size of the crowd -// Change everything marked CWDMAX when increasing max size of the crowd - -dtmc - -// Model parameters -const double PF; // forwarding probability -const double badC; // probability that member is untrustworthy - -// Probability of forwarding -// const double PF = 0.8; -// const double notPF = 0.2; // must be 1-PF - -// Probability that a crowd member is bad -// const double badC = 0.1; -// const double badC = 0.091; -// const double badC = 0.167; -// const double goodC = 0.909; // must be 1-badC -// const double goodC = 0.833; // must be 1-badC - -const int CrowdSize = 15; // CWDSIZ: actual number of good crowd members -const int TotalRuns = 5; // Total number of protocol runs to analyze -const int MaxGood=20; // CWDMAX: maximum number of good crowd members - -// Process definitions -module crowds - - // Auxiliary variables - launch: bool init true; // Start modeling? - newInstance: bool init false; // Initialize a new protocol instance? - runCount: [0..TotalRuns] init TotalRuns; // Counts protocol instances - start: bool init false; // Start the protocol? - run: bool init false; // Run the protocol? - lastSeen: [0..MaxGood] init 0; // Last crowd member to touch msg - good: bool init false; // Crowd member is good? - bad: bool init false; // ... bad? - recordLast: bool init false; // Record last seen crowd member? - badObserve: bool init false; // Bad members observes who sent msg? - deliver: bool init false; // Deliver message to destination? - done: bool init false; // Protocol instance finished? - - // Counters for attackers' observations - // CWDMAX: 1 counter per each good crowd member - observe0: [0..TotalRuns]; - observe1: [0..TotalRuns]; - observe2: [0..TotalRuns]; - observe3: [0..TotalRuns]; - observe4: [0..TotalRuns]; - observe5: [0..TotalRuns]; - observe6: [0..TotalRuns]; - observe7: [0..TotalRuns]; - observe8: [0..TotalRuns]; - observe9: [0..TotalRuns]; - observe10: [0..TotalRuns]; - observe11: [0..TotalRuns]; - observe12: [0..TotalRuns]; - observe13: [0..TotalRuns]; - observe14: [0..TotalRuns]; - observe15: [0..TotalRuns]; - observe16: [0..TotalRuns]; - observe17: [0..TotalRuns]; - observe18: [0..TotalRuns]; - observe19: [0..TotalRuns]; - - [] launch -> (newInstance'=true) & (runCount'=TotalRuns) & (launch'=false); - // Set up a newInstance protocol instance - [] newInstance & runCount>0 -> (runCount'=runCount-1) & (newInstance'=false) & (start'=true); - - // SENDER - // Start the protocol - [] start -> (lastSeen'=0) & (run'=true) & (deliver'=false) & (start'=false); - - // CROWD MEMBERS - // Good or bad crowd member? - [] !good & !bad & !deliver & run -> - 1-badC : (good'=true) & (recordLast'=true) & (run'=false) + - badC : (bad'=true) & (badObserve'=true) & (run'=false); - - // GOOD MEMBERS - // Forward with probability PF, else deliver - [] good & !deliver & run -> PF : (good'=false) + 1-PF : (deliver'=true); - // Record the last crowd member who touched the msg; - // all good members may appear with equal probability - // Note: This is backward. In the real protocol, each honest - // forwarder randomly chooses the next forwarder. - // Here, the identity of an honest forwarder is randomly - // chosen *after* it has forwarded the message. - [] recordLast & CrowdSize=2 -> - 1/2 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/2 : (lastSeen'=1) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=3 -> - 1/3 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/3 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/3 : (lastSeen'=2) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=4 -> - 1/4 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/4 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/4 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/4 : (lastSeen'=3) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=5 -> - 1/5 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=4) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=10 -> - 1/10 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=4) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=5) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=6) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=7) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=8) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=9) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=15 -> - 1/15 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=4) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=5) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=6) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=7) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=8) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=9) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=10) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=11) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=12) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=13) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=14) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=20 -> - 1/20 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=4) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=5) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=6) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=7) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=8) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=9) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=10) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=11) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=12) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=13) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=14) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=15) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=16) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=17) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=18) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=19) & (recordLast'=false) & (run'=true); - - // BAD MEMBERS - // Remember from whom the message was received and deliver - // CWDMAX: 1 rule per each good crowd member - [] lastSeen=0 & badObserve & observe0 (observe0' =observe0 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=1 & badObserve & observe1 (observe1' =observe1 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=2 & badObserve & observe2 (observe2' =observe2 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=3 & badObserve & observe3 (observe3' =observe3 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=4 & badObserve & observe4 (observe4' =observe4 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=5 & badObserve & observe5 (observe5' =observe5 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=6 & badObserve & observe6 (observe6' =observe6 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=7 & badObserve & observe7 (observe7' =observe7 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=8 & badObserve & observe8 (observe8' =observe8 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=9 & badObserve & observe9 (observe9' =observe9 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=10 & badObserve & observe10 (observe10'=observe10+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=11 & badObserve & observe11 (observe11'=observe11+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=12 & badObserve & observe12 (observe12'=observe12+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=13 & badObserve & observe13 (observe13'=observe13+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=14 & badObserve & observe14 (observe14'=observe14+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=15 & badObserve & observe15 (observe15'=observe15+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=16 & badObserve & observe16 (observe16'=observe16+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=17 & badObserve & observe17 (observe17'=observe17+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=18 & badObserve & observe18 (observe18'=observe18+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=19 & badObserve & observe19 (observe19'=observe19+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - - // RECIPIENT - // Delivery to destination - [] deliver & run -> (done'=true) & (deliver'=false) & (run'=false) & (good'=false) & (bad'=false); - // Start a newInstance instance - [] done -> (newInstance'=true) & (done'=false) & (run'=false) & (lastSeen'=MaxGood); - -endmodule - -label "observe0Greater1" = observe0 > 1; -label "observeIGreater1" = observe1 > 1 | observe2 > 1 | observe3 > 1 | observe4 > 1 | observe5 > 1 | observe6 > 1 | observe7 > 1 | observe8 > 1 | observe9 > 1 | observe10 > 1 | observe11 > 1 | observe12 > 1 | observe13 > 1 | observe14 > 1; -label "observeOnlyTrueSender" = observe0 > 1 & observe1 <= 1 & observe2 <= 1 & observe3 <= 1 & observe4 <= 1 & observe5 <= 1 & observe6 <= 1 & observe7 <= 1 & observe8 <= 1 & observe9 <= 1 & observe10 <= 1 & observe11 <= 1 & observe12 <= 1 & observe13 <= 1 & observe14 <= 1; - diff --git a/examples/pdtmc/crowds/crowds20_5.pm b/examples/pdtmc/crowds/crowds20_5.pm deleted file mode 100644 index d235ff110..000000000 --- a/examples/pdtmc/crowds/crowds20_5.pm +++ /dev/null @@ -1,194 +0,0 @@ -// CROWDS [Reiter,Rubin] -// Vitaly Shmatikov, 2002 -// Modified by Ernst Moritz Hahn (emh@cs.uni-sb.de) - -// note: -// Change everything marked CWDSIZ when changing the size of the crowd -// Change everything marked CWDMAX when increasing max size of the crowd - -dtmc - -// Model parameters -const double PF; // forwarding probability -const double badC; // probability that member is untrustworthy - -// Probability of forwarding -// const double PF = 0.8; -// const double notPF = 0.2; // must be 1-PF - -// Probability that a crowd member is bad -// const double badC = 0.1; -// const double badC = 0.091; -// const double badC = 0.167; -// const double goodC = 0.909; // must be 1-badC -// const double goodC = 0.833; // must be 1-badC - -const int CrowdSize = 20; // CWDSIZ: actual number of good crowd members -const int TotalRuns = 5; // Total number of protocol runs to analyze -const int MaxGood=20; // CWDMAX: maximum number of good crowd members - -// Process definitions -module crowds - - // Auxiliary variables - launch: bool init true; // Start modeling? - newInstance: bool init false; // Initialize a new protocol instance? - runCount: [0..TotalRuns] init TotalRuns; // Counts protocol instances - start: bool init false; // Start the protocol? - run: bool init false; // Run the protocol? - lastSeen: [0..MaxGood] init MaxGood; // Last crowd member to touch msg - good: bool init false; // Crowd member is good? - bad: bool init false; // ... bad? - recordLast: bool init false; // Record last seen crowd member? - badObserve: bool init false; // Bad members observes who sent msg? - deliver: bool init false; // Deliver message to destination? - done: bool init false; // Protocol instance finished? - - // Counters for attackers' observations - // CWDMAX: 1 counter per each good crowd member - observe0: [0..TotalRuns]; - observe1: [0..TotalRuns]; - observe2: [0..TotalRuns]; - observe3: [0..TotalRuns]; - observe4: [0..TotalRuns]; - observe5: [0..TotalRuns]; - observe6: [0..TotalRuns]; - observe7: [0..TotalRuns]; - observe8: [0..TotalRuns]; - observe9: [0..TotalRuns]; - observe10: [0..TotalRuns]; - observe11: [0..TotalRuns]; - observe12: [0..TotalRuns]; - observe13: [0..TotalRuns]; - observe14: [0..TotalRuns]; - observe15: [0..TotalRuns]; - observe16: [0..TotalRuns]; - observe17: [0..TotalRuns]; - observe18: [0..TotalRuns]; - observe19: [0..TotalRuns]; - - [] launch -> (newInstance'=true) & (runCount'=TotalRuns) & (launch'=false); - // Set up a newInstance protocol instance - [] newInstance & runCount>0 -> (runCount'=runCount-1) & (newInstance'=false) & (start'=true); - - // SENDER - // Start the protocol - [] start -> (lastSeen'=0) & (run'=true) & (deliver'=false) & (start'=false); - - // CROWD MEMBERS - // Good or bad crowd member? - [] !good & !bad & !deliver & run -> - 1-badC : (good'=true) & (recordLast'=true) & (run'=false) + - badC : (bad'=true) & (badObserve'=true) & (run'=false); - - // GOOD MEMBERS - // Forward with probability PF, else deliver - [] good & !deliver & run -> PF : (good'=false) + 1-PF : (deliver'=true); - // Record the last crowd member who touched the msg; - // all good members may appear with equal probability - // Note: This is backward. In the real protocol, each honest - // forwarder randomly chooses the next forwarder. - // Here, the identity of an honest forwarder is randomly - // chosen *after* it has forwarded the message. - [] recordLast & CrowdSize=2 -> - 1/2 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/2 : (lastSeen'=1) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=3 -> - 1/3 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/3 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/3 : (lastSeen'=2) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=4 -> - 1/4 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/4 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/4 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/4 : (lastSeen'=3) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=5 -> - 1/5 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=4) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=10 -> - 1/10 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=4) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=5) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=6) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=7) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=8) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=9) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=15 -> - 1/15 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=4) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=5) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=6) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=7) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=8) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=9) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=10) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=11) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=12) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=13) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=14) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=20 -> - 1/20 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=4) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=5) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=6) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=7) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=8) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=9) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=10) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=11) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=12) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=13) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=14) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=15) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=16) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=17) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=18) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=19) & (recordLast'=false) & (run'=true); - - // BAD MEMBERS - // Remember from whom the message was received and deliver - // CWDMAX: 1 rule per each good crowd member - [] lastSeen=0 & badObserve & observe0 (observe0' =observe0 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=1 & badObserve & observe1 (observe1' =observe1 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=2 & badObserve & observe2 (observe2' =observe2 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=3 & badObserve & observe3 (observe3' =observe3 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=4 & badObserve & observe4 (observe4' =observe4 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=5 & badObserve & observe5 (observe5' =observe5 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=6 & badObserve & observe6 (observe6' =observe6 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=7 & badObserve & observe7 (observe7' =observe7 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=8 & badObserve & observe8 (observe8' =observe8 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=9 & badObserve & observe9 (observe9' =observe9 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=10 & badObserve & observe10 (observe10'=observe10+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=11 & badObserve & observe11 (observe11'=observe11+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=12 & badObserve & observe12 (observe12'=observe12+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=13 & badObserve & observe13 (observe13'=observe13+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=14 & badObserve & observe14 (observe14'=observe14+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=15 & badObserve & observe15 (observe15'=observe15+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=16 & badObserve & observe16 (observe16'=observe16+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=17 & badObserve & observe17 (observe17'=observe17+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=18 & badObserve & observe18 (observe18'=observe18+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=19 & badObserve & observe19 (observe19'=observe19+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - - // RECIPIENT - // Delivery to destination - [] deliver & run -> (done'=true) & (deliver'=false) & (run'=false) & (good'=false) & (bad'=false); - // Start a newInstance instance - [] done -> (newInstance'=true) & (done'=false) & (run'=false) & (lastSeen'=MaxGood); - -endmodule - -label "observe0Greater1" = observe0 > 1; -label "observeIGreater1" = observe1 > 1 | observe2 > 1 | observe3 > 1 | observe4 > 1 | observe5 > 1 | observe6 > 1 | observe7 > 1 | observe8 > 1 | observe9 > 1 | observe10 > 1 | observe11 > 1 | observe12 > 1 | observe13 > 1 | observe14 > 1 | observe15 > 1 | observe16 > 1 | observe17 > 1 | observe18 > 1 | observe19 > 1; -label "observeOnlyTrueSender" = observe0 > 1 & observe1 <= 1 & observe2 <= 1 & observe3 <= 1 & observe4 <= 1 & observe5 <= 1 & observe6 <= 1 & observe7 <= 1 & observe8 <= 1 & observe9 <= 1 & observe10 <= 1 & observe11 <= 1 & observe12 <= 1 & observe13 <= 1 & observe14 <= 1 & observe15 <= 1 & observe16 <= 1 & observe17 <= 1 & observe18 <= 1 & observe19 <= 1; diff --git a/examples/pdtmc/crowds/crowds3_5.pm b/examples/pdtmc/crowds/crowds3_5.pm deleted file mode 100644 index f9eaf9f75..000000000 --- a/examples/pdtmc/crowds/crowds3_5.pm +++ /dev/null @@ -1,194 +0,0 @@ -// CROWDS [Reiter,Rubin] -// Vitaly Shmatikov, 2002 -// Modified by Ernst Moritz Hahn (emh@cs.uni-sb.de) - -// note: -// Change everything marked CWDSIZ when changing the size of the crowd -// Change everything marked CWDMAX when increasing max size of the crowd - -dtmc - -// Model parameters -const double PF; // forwarding probability -const double badC; // probability that member is untrustworthy - -// Probability of forwarding -// const double PF = 0.8; -// const double notPF = 0.2; // must be 1-PF - -// Probability that a crowd member is bad -// const double badC = 0.1; -// const double badC = 0.091; -// const double badC = 0.167; -// const double goodC = 0.909; // must be 1-badC -// const double goodC = 0.833; // must be 1-badC - -const int CrowdSize = 3; // CWDSIZ: actual number of good crowd members -const int TotalRuns = 5; // Total number of protocol runs to analyze -const int MaxGood=20; // CWDMAX: maximum number of good crowd members - -// Process definitions -module crowds - - // Auxiliary variables - launch: bool init true; // Start modeling? - newInstance: bool init false; // Initialize a new protocol instance? - runCount: [0..TotalRuns] init TotalRuns; // Counts protocol instances - start: bool init false; // Start the protocol? - run: bool init false; // Run the protocol? - lastSeen: [0..MaxGood] init 0; // Last crowd member to touch msg - good: bool init false; // Crowd member is good? - bad: bool init false; // ... bad? - recordLast: bool init false; // Record last seen crowd member? - badObserve: bool init false; // Bad members observes who sent msg? - deliver: bool init false; // Deliver message to destination? - done: bool init false; // Protocol instance finished? - - // Counters for attackers' observations - // CWDMAX: 1 counter per each good crowd member - observe0: [0..TotalRuns]; - observe1: [0..TotalRuns]; - observe2: [0..TotalRuns]; - observe3: [0..TotalRuns]; - observe4: [0..TotalRuns]; - observe5: [0..TotalRuns]; - observe6: [0..TotalRuns]; - observe7: [0..TotalRuns]; - observe8: [0..TotalRuns]; - observe9: [0..TotalRuns]; - observe10: [0..TotalRuns]; - observe11: [0..TotalRuns]; - observe12: [0..TotalRuns]; - observe13: [0..TotalRuns]; - observe14: [0..TotalRuns]; - observe15: [0..TotalRuns]; - observe16: [0..TotalRuns]; - observe17: [0..TotalRuns]; - observe18: [0..TotalRuns]; - observe19: [0..TotalRuns]; - - [] launch -> (newInstance'=true) & (runCount'=TotalRuns) & (launch'=false); - // Set up a newInstance protocol instance - [] newInstance & runCount>0 -> (runCount'=runCount-1) & (newInstance'=false) & (start'=true); - - // SENDER - // Start the protocol - [] start -> (lastSeen'=0) & (run'=true) & (deliver'=false) & (start'=false); - - // CROWD MEMBERS - // Good or bad crowd member? - [] !good & !bad & !deliver & run -> - 1-badC : (good'=true) & (recordLast'=true) & (run'=false) + - badC : (bad'=true) & (badObserve'=true) & (run'=false); - - // GOOD MEMBERS - // Forward with probability PF, else deliver - [] good & !deliver & run -> PF : (good'=false) + 1-PF : (deliver'=true); - // Record the last crowd member who touched the msg; - // all good members may appear with equal probability - // Note: This is backward. In the real protocol, each honest - // forwarder randomly chooses the next forwarder. - // Here, the identity of an honest forwarder is randomly - // chosen *after* it has forwarded the message. - [] recordLast & CrowdSize=2 -> - 1/2 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/2 : (lastSeen'=1) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=3 -> - 1/3 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/3 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/3 : (lastSeen'=2) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=4 -> - 1/4 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/4 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/4 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/4 : (lastSeen'=3) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=5 -> - 1/5 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=4) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=10 -> - 1/10 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=4) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=5) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=6) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=7) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=8) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=9) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=15 -> - 1/15 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=4) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=5) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=6) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=7) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=8) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=9) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=10) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=11) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=12) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=13) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=14) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=20 -> - 1/20 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=4) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=5) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=6) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=7) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=8) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=9) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=10) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=11) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=12) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=13) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=14) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=15) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=16) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=17) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=18) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=19) & (recordLast'=false) & (run'=true); - - // BAD MEMBERS - // Remember from whom the message was received and deliver - // CWDMAX: 1 rule per each good crowd member - [] lastSeen=0 & badObserve & observe0 (observe0' =observe0 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=1 & badObserve & observe1 (observe1' =observe1 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=2 & badObserve & observe2 (observe2' =observe2 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=3 & badObserve & observe3 (observe3' =observe3 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=4 & badObserve & observe4 (observe4' =observe4 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=5 & badObserve & observe5 (observe5' =observe5 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=6 & badObserve & observe6 (observe6' =observe6 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=7 & badObserve & observe7 (observe7' =observe7 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=8 & badObserve & observe8 (observe8' =observe8 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=9 & badObserve & observe9 (observe9' =observe9 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=10 & badObserve & observe10 (observe10'=observe10+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=11 & badObserve & observe11 (observe11'=observe11+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=12 & badObserve & observe12 (observe12'=observe12+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=13 & badObserve & observe13 (observe13'=observe13+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=14 & badObserve & observe14 (observe14'=observe14+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=15 & badObserve & observe15 (observe15'=observe15+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=16 & badObserve & observe16 (observe16'=observe16+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=17 & badObserve & observe17 (observe17'=observe17+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=18 & badObserve & observe18 (observe18'=observe18+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=19 & badObserve & observe19 (observe19'=observe19+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - - // RECIPIENT - // Delivery to destination - [] deliver & run -> (done'=true) & (deliver'=false) & (run'=false) & (good'=false) & (bad'=false); - // Start a newInstance instance - [] done -> (newInstance'=true) & (done'=false) & (run'=false) & (lastSeen'=MaxGood); - -endmodule - -label "observe0Greater1" = observe0 > 1; -label "observeIGreater1" = observe1>1|observe2>1; -label "observeOnlyTrueSender" = observe0>1&observe1<=1 & observe2<=1; diff --git a/examples/pdtmc/crowds/crowds5_5.pm b/examples/pdtmc/crowds/crowds5_5.pm deleted file mode 100644 index e936c45b7..000000000 --- a/examples/pdtmc/crowds/crowds5_5.pm +++ /dev/null @@ -1,194 +0,0 @@ -// CROWDS [Reiter,Rubin] -// Vitaly Shmatikov, 2002 -// Modified by Ernst Moritz Hahn (emh@cs.uni-sb.de) - -// note: -// Change everything marked CWDSIZ when changing the size of the crowd -// Change everything marked CWDMAX when increasing max size of the crowd - -dtmc - -// Model parameters -const double PF; // forwarding probability -const double badC; // probability that member is untrustworthy - -// Probability of forwarding -// const double PF = 0.8; -// const double notPF = 0.2; // must be 1-PF - -// Probability that a crowd member is bad -// const double badC = 0.1; -// const double badC = 0.091; -// const double badC = 0.167; -// const double goodC = 0.909; // must be 1-badC -// const double goodC = 0.833; // must be 1-badC - -const int CrowdSize = 5; // CWDSIZ: actual number of good crowd members -const int TotalRuns = 5; // Total number of protocol runs to analyze -const int MaxGood=20; // CWDMAX: maximum number of good crowd members - -// Process definitions -module crowds - - // Auxiliary variables - launch: bool init true; // Start modeling? - newInstance: bool init false; // Initialize a new protocol instance? - runCount: [0..TotalRuns] init TotalRuns; // Counts protocol instances - start: bool init false; // Start the protocol? - run: bool init false; // Run the protocol? - lastSeen: [0..MaxGood] init 0; // Last crowd member to touch msg - good: bool init false; // Crowd member is good? - bad: bool init false; // ... bad? - recordLast: bool init false; // Record last seen crowd member? - badObserve: bool init false; // Bad members observes who sent msg? - deliver: bool init false; // Deliver message to destination? - done: bool init false; // Protocol instance finished? - - // Counters for attackers' observations - // CWDMAX: 1 counter per each good crowd member - observe0: [0..TotalRuns]; - observe1: [0..TotalRuns]; - observe2: [0..TotalRuns]; - observe3: [0..TotalRuns]; - observe4: [0..TotalRuns]; - observe5: [0..TotalRuns]; - observe6: [0..TotalRuns]; - observe7: [0..TotalRuns]; - observe8: [0..TotalRuns]; - observe9: [0..TotalRuns]; - observe10: [0..TotalRuns]; - observe11: [0..TotalRuns]; - observe12: [0..TotalRuns]; - observe13: [0..TotalRuns]; - observe14: [0..TotalRuns]; - observe15: [0..TotalRuns]; - observe16: [0..TotalRuns]; - observe17: [0..TotalRuns]; - observe18: [0..TotalRuns]; - observe19: [0..TotalRuns]; - - [] launch -> (newInstance'=true) & (runCount'=TotalRuns) & (launch'=false); - // Set up a newInstance protocol instance - [] newInstance & runCount>0 -> (runCount'=runCount-1) & (newInstance'=false) & (start'=true); - - // SENDER - // Start the protocol - [] start -> (lastSeen'=0) & (run'=true) & (deliver'=false) & (start'=false); - - // CROWD MEMBERS - // Good or bad crowd member? - [] !good & !bad & !deliver & run -> - 1-badC : (good'=true) & (recordLast'=true) & (run'=false) + - badC : (bad'=true) & (badObserve'=true) & (run'=false); - - // GOOD MEMBERS - // Forward with probability PF, else deliver - [] good & !deliver & run -> PF : (good'=false) + 1-PF : (deliver'=true); - // Record the last crowd member who touched the msg; - // all good members may appear with equal probability - // Note: This is backward. In the real protocol, each honest - // forwarder randomly chooses the next forwarder. - // Here, the identity of an honest forwarder is randomly - // chosen *after* it has forwarded the message. - [] recordLast & CrowdSize=2 -> - 1/2 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/2 : (lastSeen'=1) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=3 -> - 1/3 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/3 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/3 : (lastSeen'=2) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=4 -> - 1/4 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/4 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/4 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/4 : (lastSeen'=3) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=5 -> - 1/5 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/5 : (lastSeen'=4) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=10 -> - 1/10 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=4) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=5) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=6) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=7) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=8) & (recordLast'=false) & (run'=true) + - 1/10 : (lastSeen'=9) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=15 -> - 1/15 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=4) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=5) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=6) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=7) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=8) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=9) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=10) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=11) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=12) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=13) & (recordLast'=false) & (run'=true) + - 1/15 : (lastSeen'=14) & (recordLast'=false) & (run'=true); - [] recordLast & CrowdSize=20 -> - 1/20 : (lastSeen'=0) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=1) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=2) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=3) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=4) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=5) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=6) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=7) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=8) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=9) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=10) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=11) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=12) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=13) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=14) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=15) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=16) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=17) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=18) & (recordLast'=false) & (run'=true) + - 1/20 : (lastSeen'=19) & (recordLast'=false) & (run'=true); - - // BAD MEMBERS - // Remember from whom the message was received and deliver - // CWDMAX: 1 rule per each good crowd member - [] lastSeen=0 & badObserve & observe0 (observe0' =observe0 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=1 & badObserve & observe1 (observe1' =observe1 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=2 & badObserve & observe2 (observe2' =observe2 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=3 & badObserve & observe3 (observe3' =observe3 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=4 & badObserve & observe4 (observe4' =observe4 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=5 & badObserve & observe5 (observe5' =observe5 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=6 & badObserve & observe6 (observe6' =observe6 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=7 & badObserve & observe7 (observe7' =observe7 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=8 & badObserve & observe8 (observe8' =observe8 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=9 & badObserve & observe9 (observe9' =observe9 +1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=10 & badObserve & observe10 (observe10'=observe10+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=11 & badObserve & observe11 (observe11'=observe11+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=12 & badObserve & observe12 (observe12'=observe12+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=13 & badObserve & observe13 (observe13'=observe13+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=14 & badObserve & observe14 (observe14'=observe14+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=15 & badObserve & observe15 (observe15'=observe15+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=16 & badObserve & observe16 (observe16'=observe16+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=17 & badObserve & observe17 (observe17'=observe17+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=18 & badObserve & observe18 (observe18'=observe18+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - [] lastSeen=19 & badObserve & observe19 (observe19'=observe19+1) & (deliver'=true) & (run'=true) & (badObserve'=false); - - // RECIPIENT - // Delivery to destination - [] deliver & run -> (done'=true) & (deliver'=false) & (run'=false) & (good'=false) & (bad'=false); - // Start a newInstance instance - [] done -> (newInstance'=true) & (done'=false) & (run'=false) & (lastSeen'=MaxGood); - -endmodule - -label "observe0Greater1" = observe0 > 1; -label "observeIGreater1" = observe1>1|observe2>1|observe3>1|observe4>1; -label "observeOnlyTrueSender" = observe0>1&observe1<=1 & observe2<=1 & observe3<=1 & observe4<=1; diff --git a/examples/pdtmc/crowds/crowds_regions.txt b/examples/pdtmc/crowds/crowds_regions.txt deleted file mode 100644 index 86496ade3..000000000 --- a/examples/pdtmc/crowds/crowds_regions.txt +++ /dev/null @@ -1,625 +0,0 @@ -0.000010<=PF<=0.040000, 0.000010<=badC<=0.040000; -0.000010<=PF<=0.040000, 0.040000<=badC<=0.080000; -0.000010<=PF<=0.040000, 0.080000<=badC<=0.120000; -0.000010<=PF<=0.040000, 0.120000<=badC<=0.160000; -0.000010<=PF<=0.040000, 0.160000<=badC<=0.200000; -0.000010<=PF<=0.040000, 0.200000<=badC<=0.240000; -0.000010<=PF<=0.040000, 0.240000<=badC<=0.280000; -0.000010<=PF<=0.040000, 0.280000<=badC<=0.320000; -0.000010<=PF<=0.040000, 0.320000<=badC<=0.360000; -0.000010<=PF<=0.040000, 0.360000<=badC<=0.400000; -0.000010<=PF<=0.040000, 0.400000<=badC<=0.440000; -0.000010<=PF<=0.040000, 0.440000<=badC<=0.480000; -0.000010<=PF<=0.040000, 0.480000<=badC<=0.520000; -0.000010<=PF<=0.040000, 0.520000<=badC<=0.560000; -0.000010<=PF<=0.040000, 0.560000<=badC<=0.600000; -0.000010<=PF<=0.040000, 0.600000<=badC<=0.640000; -0.000010<=PF<=0.040000, 0.640000<=badC<=0.680000; -0.000010<=PF<=0.040000, 0.680000<=badC<=0.720000; -0.000010<=PF<=0.040000, 0.720000<=badC<=0.760000; -0.000010<=PF<=0.040000, 0.760000<=badC<=0.800000; -0.000010<=PF<=0.040000, 0.800000<=badC<=0.840000; -0.000010<=PF<=0.040000, 0.840000<=badC<=0.880000; -0.000010<=PF<=0.040000, 0.880000<=badC<=0.920000; -0.000010<=PF<=0.040000, 0.920000<=badC<=0.960000; -0.000010<=PF<=0.040000, 0.960000<=badC<=0.999990; -0.040000<=PF<=0.080000, 0.000010<=badC<=0.040000; -0.040000<=PF<=0.080000, 0.040000<=badC<=0.080000; -0.040000<=PF<=0.080000, 0.080000<=badC<=0.120000; -0.040000<=PF<=0.080000, 0.120000<=badC<=0.160000; -0.040000<=PF<=0.080000, 0.160000<=badC<=0.200000; -0.040000<=PF<=0.080000, 0.200000<=badC<=0.240000; -0.040000<=PF<=0.080000, 0.240000<=badC<=0.280000; -0.040000<=PF<=0.080000, 0.280000<=badC<=0.320000; -0.040000<=PF<=0.080000, 0.320000<=badC<=0.360000; -0.040000<=PF<=0.080000, 0.360000<=badC<=0.400000; -0.040000<=PF<=0.080000, 0.400000<=badC<=0.440000; -0.040000<=PF<=0.080000, 0.440000<=badC<=0.480000; -0.040000<=PF<=0.080000, 0.480000<=badC<=0.520000; -0.040000<=PF<=0.080000, 0.520000<=badC<=0.560000; -0.040000<=PF<=0.080000, 0.560000<=badC<=0.600000; -0.040000<=PF<=0.080000, 0.600000<=badC<=0.640000; -0.040000<=PF<=0.080000, 0.640000<=badC<=0.680000; -0.040000<=PF<=0.080000, 0.680000<=badC<=0.720000; -0.040000<=PF<=0.080000, 0.720000<=badC<=0.760000; -0.040000<=PF<=0.080000, 0.760000<=badC<=0.800000; -0.040000<=PF<=0.080000, 0.800000<=badC<=0.840000; -0.040000<=PF<=0.080000, 0.840000<=badC<=0.880000; -0.040000<=PF<=0.080000, 0.880000<=badC<=0.920000; -0.040000<=PF<=0.080000, 0.920000<=badC<=0.960000; -0.040000<=PF<=0.080000, 0.960000<=badC<=0.999990; -0.080000<=PF<=0.120000, 0.000010<=badC<=0.040000; -0.080000<=PF<=0.120000, 0.040000<=badC<=0.080000; -0.080000<=PF<=0.120000, 0.080000<=badC<=0.120000; -0.080000<=PF<=0.120000, 0.120000<=badC<=0.160000; -0.080000<=PF<=0.120000, 0.160000<=badC<=0.200000; -0.080000<=PF<=0.120000, 0.200000<=badC<=0.240000; -0.080000<=PF<=0.120000, 0.240000<=badC<=0.280000; -0.080000<=PF<=0.120000, 0.280000<=badC<=0.320000; -0.080000<=PF<=0.120000, 0.320000<=badC<=0.360000; -0.080000<=PF<=0.120000, 0.360000<=badC<=0.400000; -0.080000<=PF<=0.120000, 0.400000<=badC<=0.440000; -0.080000<=PF<=0.120000, 0.440000<=badC<=0.480000; -0.080000<=PF<=0.120000, 0.480000<=badC<=0.520000; -0.080000<=PF<=0.120000, 0.520000<=badC<=0.560000; -0.080000<=PF<=0.120000, 0.560000<=badC<=0.600000; -0.080000<=PF<=0.120000, 0.600000<=badC<=0.640000; -0.080000<=PF<=0.120000, 0.640000<=badC<=0.680000; -0.080000<=PF<=0.120000, 0.680000<=badC<=0.720000; -0.080000<=PF<=0.120000, 0.720000<=badC<=0.760000; -0.080000<=PF<=0.120000, 0.760000<=badC<=0.800000; -0.080000<=PF<=0.120000, 0.800000<=badC<=0.840000; -0.080000<=PF<=0.120000, 0.840000<=badC<=0.880000; -0.080000<=PF<=0.120000, 0.880000<=badC<=0.920000; -0.080000<=PF<=0.120000, 0.920000<=badC<=0.960000; -0.080000<=PF<=0.120000, 0.960000<=badC<=0.999990; -0.120000<=PF<=0.160000, 0.000010<=badC<=0.040000; -0.120000<=PF<=0.160000, 0.040000<=badC<=0.080000; -0.120000<=PF<=0.160000, 0.080000<=badC<=0.120000; -0.120000<=PF<=0.160000, 0.120000<=badC<=0.160000; -0.120000<=PF<=0.160000, 0.160000<=badC<=0.200000; -0.120000<=PF<=0.160000, 0.200000<=badC<=0.240000; -0.120000<=PF<=0.160000, 0.240000<=badC<=0.280000; -0.120000<=PF<=0.160000, 0.280000<=badC<=0.320000; -0.120000<=PF<=0.160000, 0.320000<=badC<=0.360000; -0.120000<=PF<=0.160000, 0.360000<=badC<=0.400000; -0.120000<=PF<=0.160000, 0.400000<=badC<=0.440000; -0.120000<=PF<=0.160000, 0.440000<=badC<=0.480000; -0.120000<=PF<=0.160000, 0.480000<=badC<=0.520000; -0.120000<=PF<=0.160000, 0.520000<=badC<=0.560000; -0.120000<=PF<=0.160000, 0.560000<=badC<=0.600000; -0.120000<=PF<=0.160000, 0.600000<=badC<=0.640000; -0.120000<=PF<=0.160000, 0.640000<=badC<=0.680000; -0.120000<=PF<=0.160000, 0.680000<=badC<=0.720000; -0.120000<=PF<=0.160000, 0.720000<=badC<=0.760000; -0.120000<=PF<=0.160000, 0.760000<=badC<=0.800000; -0.120000<=PF<=0.160000, 0.800000<=badC<=0.840000; -0.120000<=PF<=0.160000, 0.840000<=badC<=0.880000; -0.120000<=PF<=0.160000, 0.880000<=badC<=0.920000; -0.120000<=PF<=0.160000, 0.920000<=badC<=0.960000; -0.120000<=PF<=0.160000, 0.960000<=badC<=0.999990; -0.160000<=PF<=0.200000, 0.000010<=badC<=0.040000; -0.160000<=PF<=0.200000, 0.040000<=badC<=0.080000; -0.160000<=PF<=0.200000, 0.080000<=badC<=0.120000; -0.160000<=PF<=0.200000, 0.120000<=badC<=0.160000; -0.160000<=PF<=0.200000, 0.160000<=badC<=0.200000; -0.160000<=PF<=0.200000, 0.200000<=badC<=0.240000; -0.160000<=PF<=0.200000, 0.240000<=badC<=0.280000; -0.160000<=PF<=0.200000, 0.280000<=badC<=0.320000; -0.160000<=PF<=0.200000, 0.320000<=badC<=0.360000; -0.160000<=PF<=0.200000, 0.360000<=badC<=0.400000; -0.160000<=PF<=0.200000, 0.400000<=badC<=0.440000; -0.160000<=PF<=0.200000, 0.440000<=badC<=0.480000; -0.160000<=PF<=0.200000, 0.480000<=badC<=0.520000; -0.160000<=PF<=0.200000, 0.520000<=badC<=0.560000; -0.160000<=PF<=0.200000, 0.560000<=badC<=0.600000; -0.160000<=PF<=0.200000, 0.600000<=badC<=0.640000; -0.160000<=PF<=0.200000, 0.640000<=badC<=0.680000; -0.160000<=PF<=0.200000, 0.680000<=badC<=0.720000; -0.160000<=PF<=0.200000, 0.720000<=badC<=0.760000; -0.160000<=PF<=0.200000, 0.760000<=badC<=0.800000; -0.160000<=PF<=0.200000, 0.800000<=badC<=0.840000; -0.160000<=PF<=0.200000, 0.840000<=badC<=0.880000; -0.160000<=PF<=0.200000, 0.880000<=badC<=0.920000; -0.160000<=PF<=0.200000, 0.920000<=badC<=0.960000; -0.160000<=PF<=0.200000, 0.960000<=badC<=0.999990; -0.200000<=PF<=0.240000, 0.000010<=badC<=0.040000; -0.200000<=PF<=0.240000, 0.040000<=badC<=0.080000; -0.200000<=PF<=0.240000, 0.080000<=badC<=0.120000; -0.200000<=PF<=0.240000, 0.120000<=badC<=0.160000; -0.200000<=PF<=0.240000, 0.160000<=badC<=0.200000; -0.200000<=PF<=0.240000, 0.200000<=badC<=0.240000; -0.200000<=PF<=0.240000, 0.240000<=badC<=0.280000; -0.200000<=PF<=0.240000, 0.280000<=badC<=0.320000; -0.200000<=PF<=0.240000, 0.320000<=badC<=0.360000; -0.200000<=PF<=0.240000, 0.360000<=badC<=0.400000; -0.200000<=PF<=0.240000, 0.400000<=badC<=0.440000; -0.200000<=PF<=0.240000, 0.440000<=badC<=0.480000; -0.200000<=PF<=0.240000, 0.480000<=badC<=0.520000; -0.200000<=PF<=0.240000, 0.520000<=badC<=0.560000; -0.200000<=PF<=0.240000, 0.560000<=badC<=0.600000; -0.200000<=PF<=0.240000, 0.600000<=badC<=0.640000; -0.200000<=PF<=0.240000, 0.640000<=badC<=0.680000; -0.200000<=PF<=0.240000, 0.680000<=badC<=0.720000; -0.200000<=PF<=0.240000, 0.720000<=badC<=0.760000; -0.200000<=PF<=0.240000, 0.760000<=badC<=0.800000; -0.200000<=PF<=0.240000, 0.800000<=badC<=0.840000; -0.200000<=PF<=0.240000, 0.840000<=badC<=0.880000; -0.200000<=PF<=0.240000, 0.880000<=badC<=0.920000; -0.200000<=PF<=0.240000, 0.920000<=badC<=0.960000; -0.200000<=PF<=0.240000, 0.960000<=badC<=0.999990; -0.240000<=PF<=0.280000, 0.000010<=badC<=0.040000; -0.240000<=PF<=0.280000, 0.040000<=badC<=0.080000; -0.240000<=PF<=0.280000, 0.080000<=badC<=0.120000; -0.240000<=PF<=0.280000, 0.120000<=badC<=0.160000; -0.240000<=PF<=0.280000, 0.160000<=badC<=0.200000; -0.240000<=PF<=0.280000, 0.200000<=badC<=0.240000; -0.240000<=PF<=0.280000, 0.240000<=badC<=0.280000; -0.240000<=PF<=0.280000, 0.280000<=badC<=0.320000; -0.240000<=PF<=0.280000, 0.320000<=badC<=0.360000; -0.240000<=PF<=0.280000, 0.360000<=badC<=0.400000; -0.240000<=PF<=0.280000, 0.400000<=badC<=0.440000; -0.240000<=PF<=0.280000, 0.440000<=badC<=0.480000; -0.240000<=PF<=0.280000, 0.480000<=badC<=0.520000; -0.240000<=PF<=0.280000, 0.520000<=badC<=0.560000; -0.240000<=PF<=0.280000, 0.560000<=badC<=0.600000; -0.240000<=PF<=0.280000, 0.600000<=badC<=0.640000; -0.240000<=PF<=0.280000, 0.640000<=badC<=0.680000; -0.240000<=PF<=0.280000, 0.680000<=badC<=0.720000; -0.240000<=PF<=0.280000, 0.720000<=badC<=0.760000; -0.240000<=PF<=0.280000, 0.760000<=badC<=0.800000; -0.240000<=PF<=0.280000, 0.800000<=badC<=0.840000; -0.240000<=PF<=0.280000, 0.840000<=badC<=0.880000; -0.240000<=PF<=0.280000, 0.880000<=badC<=0.920000; -0.240000<=PF<=0.280000, 0.920000<=badC<=0.960000; -0.240000<=PF<=0.280000, 0.960000<=badC<=0.999990; -0.280000<=PF<=0.320000, 0.000010<=badC<=0.040000; -0.280000<=PF<=0.320000, 0.040000<=badC<=0.080000; -0.280000<=PF<=0.320000, 0.080000<=badC<=0.120000; -0.280000<=PF<=0.320000, 0.120000<=badC<=0.160000; -0.280000<=PF<=0.320000, 0.160000<=badC<=0.200000; -0.280000<=PF<=0.320000, 0.200000<=badC<=0.240000; -0.280000<=PF<=0.320000, 0.240000<=badC<=0.280000; -0.280000<=PF<=0.320000, 0.280000<=badC<=0.320000; -0.280000<=PF<=0.320000, 0.320000<=badC<=0.360000; -0.280000<=PF<=0.320000, 0.360000<=badC<=0.400000; -0.280000<=PF<=0.320000, 0.400000<=badC<=0.440000; -0.280000<=PF<=0.320000, 0.440000<=badC<=0.480000; -0.280000<=PF<=0.320000, 0.480000<=badC<=0.520000; -0.280000<=PF<=0.320000, 0.520000<=badC<=0.560000; -0.280000<=PF<=0.320000, 0.560000<=badC<=0.600000; -0.280000<=PF<=0.320000, 0.600000<=badC<=0.640000; -0.280000<=PF<=0.320000, 0.640000<=badC<=0.680000; -0.280000<=PF<=0.320000, 0.680000<=badC<=0.720000; -0.280000<=PF<=0.320000, 0.720000<=badC<=0.760000; -0.280000<=PF<=0.320000, 0.760000<=badC<=0.800000; -0.280000<=PF<=0.320000, 0.800000<=badC<=0.840000; -0.280000<=PF<=0.320000, 0.840000<=badC<=0.880000; -0.280000<=PF<=0.320000, 0.880000<=badC<=0.920000; -0.280000<=PF<=0.320000, 0.920000<=badC<=0.960000; -0.280000<=PF<=0.320000, 0.960000<=badC<=0.999990; -0.320000<=PF<=0.360000, 0.000010<=badC<=0.040000; -0.320000<=PF<=0.360000, 0.040000<=badC<=0.080000; -0.320000<=PF<=0.360000, 0.080000<=badC<=0.120000; -0.320000<=PF<=0.360000, 0.120000<=badC<=0.160000; -0.320000<=PF<=0.360000, 0.160000<=badC<=0.200000; -0.320000<=PF<=0.360000, 0.200000<=badC<=0.240000; -0.320000<=PF<=0.360000, 0.240000<=badC<=0.280000; -0.320000<=PF<=0.360000, 0.280000<=badC<=0.320000; -0.320000<=PF<=0.360000, 0.320000<=badC<=0.360000; -0.320000<=PF<=0.360000, 0.360000<=badC<=0.400000; -0.320000<=PF<=0.360000, 0.400000<=badC<=0.440000; -0.320000<=PF<=0.360000, 0.440000<=badC<=0.480000; -0.320000<=PF<=0.360000, 0.480000<=badC<=0.520000; -0.320000<=PF<=0.360000, 0.520000<=badC<=0.560000; -0.320000<=PF<=0.360000, 0.560000<=badC<=0.600000; -0.320000<=PF<=0.360000, 0.600000<=badC<=0.640000; -0.320000<=PF<=0.360000, 0.640000<=badC<=0.680000; -0.320000<=PF<=0.360000, 0.680000<=badC<=0.720000; -0.320000<=PF<=0.360000, 0.720000<=badC<=0.760000; -0.320000<=PF<=0.360000, 0.760000<=badC<=0.800000; -0.320000<=PF<=0.360000, 0.800000<=badC<=0.840000; -0.320000<=PF<=0.360000, 0.840000<=badC<=0.880000; -0.320000<=PF<=0.360000, 0.880000<=badC<=0.920000; -0.320000<=PF<=0.360000, 0.920000<=badC<=0.960000; -0.320000<=PF<=0.360000, 0.960000<=badC<=0.999990; -0.360000<=PF<=0.400000, 0.000010<=badC<=0.040000; -0.360000<=PF<=0.400000, 0.040000<=badC<=0.080000; -0.360000<=PF<=0.400000, 0.080000<=badC<=0.120000; -0.360000<=PF<=0.400000, 0.120000<=badC<=0.160000; -0.360000<=PF<=0.400000, 0.160000<=badC<=0.200000; -0.360000<=PF<=0.400000, 0.200000<=badC<=0.240000; -0.360000<=PF<=0.400000, 0.240000<=badC<=0.280000; -0.360000<=PF<=0.400000, 0.280000<=badC<=0.320000; -0.360000<=PF<=0.400000, 0.320000<=badC<=0.360000; -0.360000<=PF<=0.400000, 0.360000<=badC<=0.400000; -0.360000<=PF<=0.400000, 0.400000<=badC<=0.440000; -0.360000<=PF<=0.400000, 0.440000<=badC<=0.480000; -0.360000<=PF<=0.400000, 0.480000<=badC<=0.520000; -0.360000<=PF<=0.400000, 0.520000<=badC<=0.560000; -0.360000<=PF<=0.400000, 0.560000<=badC<=0.600000; -0.360000<=PF<=0.400000, 0.600000<=badC<=0.640000; -0.360000<=PF<=0.400000, 0.640000<=badC<=0.680000; -0.360000<=PF<=0.400000, 0.680000<=badC<=0.720000; -0.360000<=PF<=0.400000, 0.720000<=badC<=0.760000; -0.360000<=PF<=0.400000, 0.760000<=badC<=0.800000; -0.360000<=PF<=0.400000, 0.800000<=badC<=0.840000; -0.360000<=PF<=0.400000, 0.840000<=badC<=0.880000; -0.360000<=PF<=0.400000, 0.880000<=badC<=0.920000; -0.360000<=PF<=0.400000, 0.920000<=badC<=0.960000; -0.360000<=PF<=0.400000, 0.960000<=badC<=0.999990; -0.400000<=PF<=0.440000, 0.000010<=badC<=0.040000; -0.400000<=PF<=0.440000, 0.040000<=badC<=0.080000; -0.400000<=PF<=0.440000, 0.080000<=badC<=0.120000; -0.400000<=PF<=0.440000, 0.120000<=badC<=0.160000; -0.400000<=PF<=0.440000, 0.160000<=badC<=0.200000; -0.400000<=PF<=0.440000, 0.200000<=badC<=0.240000; -0.400000<=PF<=0.440000, 0.240000<=badC<=0.280000; -0.400000<=PF<=0.440000, 0.280000<=badC<=0.320000; -0.400000<=PF<=0.440000, 0.320000<=badC<=0.360000; -0.400000<=PF<=0.440000, 0.360000<=badC<=0.400000; -0.400000<=PF<=0.440000, 0.400000<=badC<=0.440000; -0.400000<=PF<=0.440000, 0.440000<=badC<=0.480000; -0.400000<=PF<=0.440000, 0.480000<=badC<=0.520000; -0.400000<=PF<=0.440000, 0.520000<=badC<=0.560000; -0.400000<=PF<=0.440000, 0.560000<=badC<=0.600000; -0.400000<=PF<=0.440000, 0.600000<=badC<=0.640000; -0.400000<=PF<=0.440000, 0.640000<=badC<=0.680000; -0.400000<=PF<=0.440000, 0.680000<=badC<=0.720000; -0.400000<=PF<=0.440000, 0.720000<=badC<=0.760000; -0.400000<=PF<=0.440000, 0.760000<=badC<=0.800000; -0.400000<=PF<=0.440000, 0.800000<=badC<=0.840000; -0.400000<=PF<=0.440000, 0.840000<=badC<=0.880000; -0.400000<=PF<=0.440000, 0.880000<=badC<=0.920000; -0.400000<=PF<=0.440000, 0.920000<=badC<=0.960000; -0.400000<=PF<=0.440000, 0.960000<=badC<=0.999990; -0.440000<=PF<=0.480000, 0.000010<=badC<=0.040000; -0.440000<=PF<=0.480000, 0.040000<=badC<=0.080000; -0.440000<=PF<=0.480000, 0.080000<=badC<=0.120000; -0.440000<=PF<=0.480000, 0.120000<=badC<=0.160000; -0.440000<=PF<=0.480000, 0.160000<=badC<=0.200000; -0.440000<=PF<=0.480000, 0.200000<=badC<=0.240000; -0.440000<=PF<=0.480000, 0.240000<=badC<=0.280000; -0.440000<=PF<=0.480000, 0.280000<=badC<=0.320000; -0.440000<=PF<=0.480000, 0.320000<=badC<=0.360000; -0.440000<=PF<=0.480000, 0.360000<=badC<=0.400000; -0.440000<=PF<=0.480000, 0.400000<=badC<=0.440000; -0.440000<=PF<=0.480000, 0.440000<=badC<=0.480000; -0.440000<=PF<=0.480000, 0.480000<=badC<=0.520000; -0.440000<=PF<=0.480000, 0.520000<=badC<=0.560000; -0.440000<=PF<=0.480000, 0.560000<=badC<=0.600000; -0.440000<=PF<=0.480000, 0.600000<=badC<=0.640000; -0.440000<=PF<=0.480000, 0.640000<=badC<=0.680000; -0.440000<=PF<=0.480000, 0.680000<=badC<=0.720000; -0.440000<=PF<=0.480000, 0.720000<=badC<=0.760000; -0.440000<=PF<=0.480000, 0.760000<=badC<=0.800000; -0.440000<=PF<=0.480000, 0.800000<=badC<=0.840000; -0.440000<=PF<=0.480000, 0.840000<=badC<=0.880000; -0.440000<=PF<=0.480000, 0.880000<=badC<=0.920000; -0.440000<=PF<=0.480000, 0.920000<=badC<=0.960000; -0.440000<=PF<=0.480000, 0.960000<=badC<=0.999990; -0.480000<=PF<=0.520000, 0.000010<=badC<=0.040000; -0.480000<=PF<=0.520000, 0.040000<=badC<=0.080000; -0.480000<=PF<=0.520000, 0.080000<=badC<=0.120000; -0.480000<=PF<=0.520000, 0.120000<=badC<=0.160000; -0.480000<=PF<=0.520000, 0.160000<=badC<=0.200000; -0.480000<=PF<=0.520000, 0.200000<=badC<=0.240000; -0.480000<=PF<=0.520000, 0.240000<=badC<=0.280000; -0.480000<=PF<=0.520000, 0.280000<=badC<=0.320000; -0.480000<=PF<=0.520000, 0.320000<=badC<=0.360000; -0.480000<=PF<=0.520000, 0.360000<=badC<=0.400000; -0.480000<=PF<=0.520000, 0.400000<=badC<=0.440000; -0.480000<=PF<=0.520000, 0.440000<=badC<=0.480000; -0.480000<=PF<=0.520000, 0.480000<=badC<=0.520000; -0.480000<=PF<=0.520000, 0.520000<=badC<=0.560000; -0.480000<=PF<=0.520000, 0.560000<=badC<=0.600000; -0.480000<=PF<=0.520000, 0.600000<=badC<=0.640000; -0.480000<=PF<=0.520000, 0.640000<=badC<=0.680000; -0.480000<=PF<=0.520000, 0.680000<=badC<=0.720000; -0.480000<=PF<=0.520000, 0.720000<=badC<=0.760000; -0.480000<=PF<=0.520000, 0.760000<=badC<=0.800000; -0.480000<=PF<=0.520000, 0.800000<=badC<=0.840000; -0.480000<=PF<=0.520000, 0.840000<=badC<=0.880000; -0.480000<=PF<=0.520000, 0.880000<=badC<=0.920000; -0.480000<=PF<=0.520000, 0.920000<=badC<=0.960000; -0.480000<=PF<=0.520000, 0.960000<=badC<=0.999990; -0.520000<=PF<=0.560000, 0.000010<=badC<=0.040000; -0.520000<=PF<=0.560000, 0.040000<=badC<=0.080000; -0.520000<=PF<=0.560000, 0.080000<=badC<=0.120000; -0.520000<=PF<=0.560000, 0.120000<=badC<=0.160000; -0.520000<=PF<=0.560000, 0.160000<=badC<=0.200000; -0.520000<=PF<=0.560000, 0.200000<=badC<=0.240000; -0.520000<=PF<=0.560000, 0.240000<=badC<=0.280000; -0.520000<=PF<=0.560000, 0.280000<=badC<=0.320000; -0.520000<=PF<=0.560000, 0.320000<=badC<=0.360000; -0.520000<=PF<=0.560000, 0.360000<=badC<=0.400000; -0.520000<=PF<=0.560000, 0.400000<=badC<=0.440000; -0.520000<=PF<=0.560000, 0.440000<=badC<=0.480000; -0.520000<=PF<=0.560000, 0.480000<=badC<=0.520000; -0.520000<=PF<=0.560000, 0.520000<=badC<=0.560000; -0.520000<=PF<=0.560000, 0.560000<=badC<=0.600000; -0.520000<=PF<=0.560000, 0.600000<=badC<=0.640000; -0.520000<=PF<=0.560000, 0.640000<=badC<=0.680000; -0.520000<=PF<=0.560000, 0.680000<=badC<=0.720000; -0.520000<=PF<=0.560000, 0.720000<=badC<=0.760000; -0.520000<=PF<=0.560000, 0.760000<=badC<=0.800000; -0.520000<=PF<=0.560000, 0.800000<=badC<=0.840000; -0.520000<=PF<=0.560000, 0.840000<=badC<=0.880000; -0.520000<=PF<=0.560000, 0.880000<=badC<=0.920000; -0.520000<=PF<=0.560000, 0.920000<=badC<=0.960000; -0.520000<=PF<=0.560000, 0.960000<=badC<=0.999990; -0.560000<=PF<=0.600000, 0.000010<=badC<=0.040000; -0.560000<=PF<=0.600000, 0.040000<=badC<=0.080000; -0.560000<=PF<=0.600000, 0.080000<=badC<=0.120000; -0.560000<=PF<=0.600000, 0.120000<=badC<=0.160000; -0.560000<=PF<=0.600000, 0.160000<=badC<=0.200000; -0.560000<=PF<=0.600000, 0.200000<=badC<=0.240000; -0.560000<=PF<=0.600000, 0.240000<=badC<=0.280000; -0.560000<=PF<=0.600000, 0.280000<=badC<=0.320000; -0.560000<=PF<=0.600000, 0.320000<=badC<=0.360000; -0.560000<=PF<=0.600000, 0.360000<=badC<=0.400000; -0.560000<=PF<=0.600000, 0.400000<=badC<=0.440000; -0.560000<=PF<=0.600000, 0.440000<=badC<=0.480000; -0.560000<=PF<=0.600000, 0.480000<=badC<=0.520000; -0.560000<=PF<=0.600000, 0.520000<=badC<=0.560000; -0.560000<=PF<=0.600000, 0.560000<=badC<=0.600000; -0.560000<=PF<=0.600000, 0.600000<=badC<=0.640000; -0.560000<=PF<=0.600000, 0.640000<=badC<=0.680000; -0.560000<=PF<=0.600000, 0.680000<=badC<=0.720000; -0.560000<=PF<=0.600000, 0.720000<=badC<=0.760000; -0.560000<=PF<=0.600000, 0.760000<=badC<=0.800000; -0.560000<=PF<=0.600000, 0.800000<=badC<=0.840000; -0.560000<=PF<=0.600000, 0.840000<=badC<=0.880000; -0.560000<=PF<=0.600000, 0.880000<=badC<=0.920000; -0.560000<=PF<=0.600000, 0.920000<=badC<=0.960000; -0.560000<=PF<=0.600000, 0.960000<=badC<=0.999990; -0.600000<=PF<=0.640000, 0.000010<=badC<=0.040000; -0.600000<=PF<=0.640000, 0.040000<=badC<=0.080000; -0.600000<=PF<=0.640000, 0.080000<=badC<=0.120000; -0.600000<=PF<=0.640000, 0.120000<=badC<=0.160000; -0.600000<=PF<=0.640000, 0.160000<=badC<=0.200000; -0.600000<=PF<=0.640000, 0.200000<=badC<=0.240000; -0.600000<=PF<=0.640000, 0.240000<=badC<=0.280000; -0.600000<=PF<=0.640000, 0.280000<=badC<=0.320000; -0.600000<=PF<=0.640000, 0.320000<=badC<=0.360000; -0.600000<=PF<=0.640000, 0.360000<=badC<=0.400000; -0.600000<=PF<=0.640000, 0.400000<=badC<=0.440000; -0.600000<=PF<=0.640000, 0.440000<=badC<=0.480000; -0.600000<=PF<=0.640000, 0.480000<=badC<=0.520000; -0.600000<=PF<=0.640000, 0.520000<=badC<=0.560000; -0.600000<=PF<=0.640000, 0.560000<=badC<=0.600000; -0.600000<=PF<=0.640000, 0.600000<=badC<=0.640000; -0.600000<=PF<=0.640000, 0.640000<=badC<=0.680000; -0.600000<=PF<=0.640000, 0.680000<=badC<=0.720000; -0.600000<=PF<=0.640000, 0.720000<=badC<=0.760000; -0.600000<=PF<=0.640000, 0.760000<=badC<=0.800000; -0.600000<=PF<=0.640000, 0.800000<=badC<=0.840000; -0.600000<=PF<=0.640000, 0.840000<=badC<=0.880000; -0.600000<=PF<=0.640000, 0.880000<=badC<=0.920000; -0.600000<=PF<=0.640000, 0.920000<=badC<=0.960000; -0.600000<=PF<=0.640000, 0.960000<=badC<=0.999990; -0.640000<=PF<=0.680000, 0.000010<=badC<=0.040000; -0.640000<=PF<=0.680000, 0.040000<=badC<=0.080000; -0.640000<=PF<=0.680000, 0.080000<=badC<=0.120000; -0.640000<=PF<=0.680000, 0.120000<=badC<=0.160000; -0.640000<=PF<=0.680000, 0.160000<=badC<=0.200000; -0.640000<=PF<=0.680000, 0.200000<=badC<=0.240000; -0.640000<=PF<=0.680000, 0.240000<=badC<=0.280000; -0.640000<=PF<=0.680000, 0.280000<=badC<=0.320000; -0.640000<=PF<=0.680000, 0.320000<=badC<=0.360000; -0.640000<=PF<=0.680000, 0.360000<=badC<=0.400000; -0.640000<=PF<=0.680000, 0.400000<=badC<=0.440000; -0.640000<=PF<=0.680000, 0.440000<=badC<=0.480000; -0.640000<=PF<=0.680000, 0.480000<=badC<=0.520000; -0.640000<=PF<=0.680000, 0.520000<=badC<=0.560000; -0.640000<=PF<=0.680000, 0.560000<=badC<=0.600000; -0.640000<=PF<=0.680000, 0.600000<=badC<=0.640000; -0.640000<=PF<=0.680000, 0.640000<=badC<=0.680000; -0.640000<=PF<=0.680000, 0.680000<=badC<=0.720000; -0.640000<=PF<=0.680000, 0.720000<=badC<=0.760000; -0.640000<=PF<=0.680000, 0.760000<=badC<=0.800000; -0.640000<=PF<=0.680000, 0.800000<=badC<=0.840000; -0.640000<=PF<=0.680000, 0.840000<=badC<=0.880000; -0.640000<=PF<=0.680000, 0.880000<=badC<=0.920000; -0.640000<=PF<=0.680000, 0.920000<=badC<=0.960000; -0.640000<=PF<=0.680000, 0.960000<=badC<=0.999990; -0.680000<=PF<=0.720000, 0.000010<=badC<=0.040000; -0.680000<=PF<=0.720000, 0.040000<=badC<=0.080000; -0.680000<=PF<=0.720000, 0.080000<=badC<=0.120000; -0.680000<=PF<=0.720000, 0.120000<=badC<=0.160000; -0.680000<=PF<=0.720000, 0.160000<=badC<=0.200000; -0.680000<=PF<=0.720000, 0.200000<=badC<=0.240000; -0.680000<=PF<=0.720000, 0.240000<=badC<=0.280000; -0.680000<=PF<=0.720000, 0.280000<=badC<=0.320000; -0.680000<=PF<=0.720000, 0.320000<=badC<=0.360000; -0.680000<=PF<=0.720000, 0.360000<=badC<=0.400000; -0.680000<=PF<=0.720000, 0.400000<=badC<=0.440000; -0.680000<=PF<=0.720000, 0.440000<=badC<=0.480000; -0.680000<=PF<=0.720000, 0.480000<=badC<=0.520000; -0.680000<=PF<=0.720000, 0.520000<=badC<=0.560000; -0.680000<=PF<=0.720000, 0.560000<=badC<=0.600000; -0.680000<=PF<=0.720000, 0.600000<=badC<=0.640000; -0.680000<=PF<=0.720000, 0.640000<=badC<=0.680000; -0.680000<=PF<=0.720000, 0.680000<=badC<=0.720000; -0.680000<=PF<=0.720000, 0.720000<=badC<=0.760000; -0.680000<=PF<=0.720000, 0.760000<=badC<=0.800000; -0.680000<=PF<=0.720000, 0.800000<=badC<=0.840000; -0.680000<=PF<=0.720000, 0.840000<=badC<=0.880000; -0.680000<=PF<=0.720000, 0.880000<=badC<=0.920000; -0.680000<=PF<=0.720000, 0.920000<=badC<=0.960000; -0.680000<=PF<=0.720000, 0.960000<=badC<=0.999990; -0.720000<=PF<=0.760000, 0.000010<=badC<=0.040000; -0.720000<=PF<=0.760000, 0.040000<=badC<=0.080000; -0.720000<=PF<=0.760000, 0.080000<=badC<=0.120000; -0.720000<=PF<=0.760000, 0.120000<=badC<=0.160000; -0.720000<=PF<=0.760000, 0.160000<=badC<=0.200000; -0.720000<=PF<=0.760000, 0.200000<=badC<=0.240000; -0.720000<=PF<=0.760000, 0.240000<=badC<=0.280000; -0.720000<=PF<=0.760000, 0.280000<=badC<=0.320000; -0.720000<=PF<=0.760000, 0.320000<=badC<=0.360000; -0.720000<=PF<=0.760000, 0.360000<=badC<=0.400000; -0.720000<=PF<=0.760000, 0.400000<=badC<=0.440000; -0.720000<=PF<=0.760000, 0.440000<=badC<=0.480000; -0.720000<=PF<=0.760000, 0.480000<=badC<=0.520000; -0.720000<=PF<=0.760000, 0.520000<=badC<=0.560000; -0.720000<=PF<=0.760000, 0.560000<=badC<=0.600000; -0.720000<=PF<=0.760000, 0.600000<=badC<=0.640000; -0.720000<=PF<=0.760000, 0.640000<=badC<=0.680000; -0.720000<=PF<=0.760000, 0.680000<=badC<=0.720000; -0.720000<=PF<=0.760000, 0.720000<=badC<=0.760000; -0.720000<=PF<=0.760000, 0.760000<=badC<=0.800000; -0.720000<=PF<=0.760000, 0.800000<=badC<=0.840000; -0.720000<=PF<=0.760000, 0.840000<=badC<=0.880000; -0.720000<=PF<=0.760000, 0.880000<=badC<=0.920000; -0.720000<=PF<=0.760000, 0.920000<=badC<=0.960000; -0.720000<=PF<=0.760000, 0.960000<=badC<=0.999990; -0.760000<=PF<=0.800000, 0.000010<=badC<=0.040000; -0.760000<=PF<=0.800000, 0.040000<=badC<=0.080000; -0.760000<=PF<=0.800000, 0.080000<=badC<=0.120000; -0.760000<=PF<=0.800000, 0.120000<=badC<=0.160000; -0.760000<=PF<=0.800000, 0.160000<=badC<=0.200000; -0.760000<=PF<=0.800000, 0.200000<=badC<=0.240000; -0.760000<=PF<=0.800000, 0.240000<=badC<=0.280000; -0.760000<=PF<=0.800000, 0.280000<=badC<=0.320000; -0.760000<=PF<=0.800000, 0.320000<=badC<=0.360000; -0.760000<=PF<=0.800000, 0.360000<=badC<=0.400000; -0.760000<=PF<=0.800000, 0.400000<=badC<=0.440000; -0.760000<=PF<=0.800000, 0.440000<=badC<=0.480000; -0.760000<=PF<=0.800000, 0.480000<=badC<=0.520000; -0.760000<=PF<=0.800000, 0.520000<=badC<=0.560000; -0.760000<=PF<=0.800000, 0.560000<=badC<=0.600000; -0.760000<=PF<=0.800000, 0.600000<=badC<=0.640000; -0.760000<=PF<=0.800000, 0.640000<=badC<=0.680000; -0.760000<=PF<=0.800000, 0.680000<=badC<=0.720000; -0.760000<=PF<=0.800000, 0.720000<=badC<=0.760000; -0.760000<=PF<=0.800000, 0.760000<=badC<=0.800000; -0.760000<=PF<=0.800000, 0.800000<=badC<=0.840000; -0.760000<=PF<=0.800000, 0.840000<=badC<=0.880000; -0.760000<=PF<=0.800000, 0.880000<=badC<=0.920000; -0.760000<=PF<=0.800000, 0.920000<=badC<=0.960000; -0.760000<=PF<=0.800000, 0.960000<=badC<=0.999990; -0.800000<=PF<=0.840000, 0.000010<=badC<=0.040000; -0.800000<=PF<=0.840000, 0.040000<=badC<=0.080000; -0.800000<=PF<=0.840000, 0.080000<=badC<=0.120000; -0.800000<=PF<=0.840000, 0.120000<=badC<=0.160000; -0.800000<=PF<=0.840000, 0.160000<=badC<=0.200000; -0.800000<=PF<=0.840000, 0.200000<=badC<=0.240000; -0.800000<=PF<=0.840000, 0.240000<=badC<=0.280000; -0.800000<=PF<=0.840000, 0.280000<=badC<=0.320000; -0.800000<=PF<=0.840000, 0.320000<=badC<=0.360000; -0.800000<=PF<=0.840000, 0.360000<=badC<=0.400000; -0.800000<=PF<=0.840000, 0.400000<=badC<=0.440000; -0.800000<=PF<=0.840000, 0.440000<=badC<=0.480000; -0.800000<=PF<=0.840000, 0.480000<=badC<=0.520000; -0.800000<=PF<=0.840000, 0.520000<=badC<=0.560000; -0.800000<=PF<=0.840000, 0.560000<=badC<=0.600000; -0.800000<=PF<=0.840000, 0.600000<=badC<=0.640000; -0.800000<=PF<=0.840000, 0.640000<=badC<=0.680000; -0.800000<=PF<=0.840000, 0.680000<=badC<=0.720000; -0.800000<=PF<=0.840000, 0.720000<=badC<=0.760000; -0.800000<=PF<=0.840000, 0.760000<=badC<=0.800000; -0.800000<=PF<=0.840000, 0.800000<=badC<=0.840000; -0.800000<=PF<=0.840000, 0.840000<=badC<=0.880000; -0.800000<=PF<=0.840000, 0.880000<=badC<=0.920000; -0.800000<=PF<=0.840000, 0.920000<=badC<=0.960000; -0.800000<=PF<=0.840000, 0.960000<=badC<=0.999990; -0.840000<=PF<=0.880000, 0.000010<=badC<=0.040000; -0.840000<=PF<=0.880000, 0.040000<=badC<=0.080000; -0.840000<=PF<=0.880000, 0.080000<=badC<=0.120000; -0.840000<=PF<=0.880000, 0.120000<=badC<=0.160000; -0.840000<=PF<=0.880000, 0.160000<=badC<=0.200000; -0.840000<=PF<=0.880000, 0.200000<=badC<=0.240000; -0.840000<=PF<=0.880000, 0.240000<=badC<=0.280000; -0.840000<=PF<=0.880000, 0.280000<=badC<=0.320000; -0.840000<=PF<=0.880000, 0.320000<=badC<=0.360000; -0.840000<=PF<=0.880000, 0.360000<=badC<=0.400000; -0.840000<=PF<=0.880000, 0.400000<=badC<=0.440000; -0.840000<=PF<=0.880000, 0.440000<=badC<=0.480000; -0.840000<=PF<=0.880000, 0.480000<=badC<=0.520000; -0.840000<=PF<=0.880000, 0.520000<=badC<=0.560000; -0.840000<=PF<=0.880000, 0.560000<=badC<=0.600000; -0.840000<=PF<=0.880000, 0.600000<=badC<=0.640000; -0.840000<=PF<=0.880000, 0.640000<=badC<=0.680000; -0.840000<=PF<=0.880000, 0.680000<=badC<=0.720000; -0.840000<=PF<=0.880000, 0.720000<=badC<=0.760000; -0.840000<=PF<=0.880000, 0.760000<=badC<=0.800000; -0.840000<=PF<=0.880000, 0.800000<=badC<=0.840000; -0.840000<=PF<=0.880000, 0.840000<=badC<=0.880000; -0.840000<=PF<=0.880000, 0.880000<=badC<=0.920000; -0.840000<=PF<=0.880000, 0.920000<=badC<=0.960000; -0.840000<=PF<=0.880000, 0.960000<=badC<=0.999990; -0.880000<=PF<=0.920000, 0.000010<=badC<=0.040000; -0.880000<=PF<=0.920000, 0.040000<=badC<=0.080000; -0.880000<=PF<=0.920000, 0.080000<=badC<=0.120000; -0.880000<=PF<=0.920000, 0.120000<=badC<=0.160000; -0.880000<=PF<=0.920000, 0.160000<=badC<=0.200000; -0.880000<=PF<=0.920000, 0.200000<=badC<=0.240000; -0.880000<=PF<=0.920000, 0.240000<=badC<=0.280000; -0.880000<=PF<=0.920000, 0.280000<=badC<=0.320000; -0.880000<=PF<=0.920000, 0.320000<=badC<=0.360000; -0.880000<=PF<=0.920000, 0.360000<=badC<=0.400000; -0.880000<=PF<=0.920000, 0.400000<=badC<=0.440000; -0.880000<=PF<=0.920000, 0.440000<=badC<=0.480000; -0.880000<=PF<=0.920000, 0.480000<=badC<=0.520000; -0.880000<=PF<=0.920000, 0.520000<=badC<=0.560000; -0.880000<=PF<=0.920000, 0.560000<=badC<=0.600000; -0.880000<=PF<=0.920000, 0.600000<=badC<=0.640000; -0.880000<=PF<=0.920000, 0.640000<=badC<=0.680000; -0.880000<=PF<=0.920000, 0.680000<=badC<=0.720000; -0.880000<=PF<=0.920000, 0.720000<=badC<=0.760000; -0.880000<=PF<=0.920000, 0.760000<=badC<=0.800000; -0.880000<=PF<=0.920000, 0.800000<=badC<=0.840000; -0.880000<=PF<=0.920000, 0.840000<=badC<=0.880000; -0.880000<=PF<=0.920000, 0.880000<=badC<=0.920000; -0.880000<=PF<=0.920000, 0.920000<=badC<=0.960000; -0.880000<=PF<=0.920000, 0.960000<=badC<=0.999990; -0.920000<=PF<=0.960000, 0.000010<=badC<=0.040000; -0.920000<=PF<=0.960000, 0.040000<=badC<=0.080000; -0.920000<=PF<=0.960000, 0.080000<=badC<=0.120000; -0.920000<=PF<=0.960000, 0.120000<=badC<=0.160000; -0.920000<=PF<=0.960000, 0.160000<=badC<=0.200000; -0.920000<=PF<=0.960000, 0.200000<=badC<=0.240000; -0.920000<=PF<=0.960000, 0.240000<=badC<=0.280000; -0.920000<=PF<=0.960000, 0.280000<=badC<=0.320000; -0.920000<=PF<=0.960000, 0.320000<=badC<=0.360000; -0.920000<=PF<=0.960000, 0.360000<=badC<=0.400000; -0.920000<=PF<=0.960000, 0.400000<=badC<=0.440000; -0.920000<=PF<=0.960000, 0.440000<=badC<=0.480000; -0.920000<=PF<=0.960000, 0.480000<=badC<=0.520000; -0.920000<=PF<=0.960000, 0.520000<=badC<=0.560000; -0.920000<=PF<=0.960000, 0.560000<=badC<=0.600000; -0.920000<=PF<=0.960000, 0.600000<=badC<=0.640000; -0.920000<=PF<=0.960000, 0.640000<=badC<=0.680000; -0.920000<=PF<=0.960000, 0.680000<=badC<=0.720000; -0.920000<=PF<=0.960000, 0.720000<=badC<=0.760000; -0.920000<=PF<=0.960000, 0.760000<=badC<=0.800000; -0.920000<=PF<=0.960000, 0.800000<=badC<=0.840000; -0.920000<=PF<=0.960000, 0.840000<=badC<=0.880000; -0.920000<=PF<=0.960000, 0.880000<=badC<=0.920000; -0.920000<=PF<=0.960000, 0.920000<=badC<=0.960000; -0.920000<=PF<=0.960000, 0.960000<=badC<=0.999990; -0.960000<=PF<=0.999990, 0.000010<=badC<=0.040000; -0.960000<=PF<=0.999990, 0.040000<=badC<=0.080000; -0.960000<=PF<=0.999990, 0.080000<=badC<=0.120000; -0.960000<=PF<=0.999990, 0.120000<=badC<=0.160000; -0.960000<=PF<=0.999990, 0.160000<=badC<=0.200000; -0.960000<=PF<=0.999990, 0.200000<=badC<=0.240000; -0.960000<=PF<=0.999990, 0.240000<=badC<=0.280000; -0.960000<=PF<=0.999990, 0.280000<=badC<=0.320000; -0.960000<=PF<=0.999990, 0.320000<=badC<=0.360000; -0.960000<=PF<=0.999990, 0.360000<=badC<=0.400000; -0.960000<=PF<=0.999990, 0.400000<=badC<=0.440000; -0.960000<=PF<=0.999990, 0.440000<=badC<=0.480000; -0.960000<=PF<=0.999990, 0.480000<=badC<=0.520000; -0.960000<=PF<=0.999990, 0.520000<=badC<=0.560000; -0.960000<=PF<=0.999990, 0.560000<=badC<=0.600000; -0.960000<=PF<=0.999990, 0.600000<=badC<=0.640000; -0.960000<=PF<=0.999990, 0.640000<=badC<=0.680000; -0.960000<=PF<=0.999990, 0.680000<=badC<=0.720000; -0.960000<=PF<=0.999990, 0.720000<=badC<=0.760000; -0.960000<=PF<=0.999990, 0.760000<=badC<=0.800000; -0.960000<=PF<=0.999990, 0.800000<=badC<=0.840000; -0.960000<=PF<=0.999990, 0.840000<=badC<=0.880000; -0.960000<=PF<=0.999990, 0.880000<=badC<=0.920000; -0.960000<=PF<=0.999990, 0.920000<=badC<=0.960000; -0.960000<=PF<=0.999990, 0.960000<=badC<=0.999990; diff --git a/examples/pdtmc/crowds/crowds_space.txt b/examples/pdtmc/crowds/crowds_space.txt deleted file mode 100644 index f36cebf3e..000000000 --- a/examples/pdtmc/crowds/crowds_space.txt +++ /dev/null @@ -1,2 +0,0 @@ -0.000010<=PF<=0.999990, 0.000010<=badC<=0.999990; - diff --git a/examples/pdtmc/crowds/models b/examples/pdtmc/crowds/models deleted file mode 100644 index fdfc13cee..000000000 --- a/examples/pdtmc/crowds/models +++ /dev/null @@ -1,2 +0,0 @@ -crowds.pm -const CrowdSize=10,TotalRuns=5 -crowds.pm -const CrowdSize=20,TotalRuns=10 diff --git a/examples/pdtmc/die.pm b/examples/pdtmc/die.pm deleted file mode 100644 index a2a8f57b0..000000000 --- a/examples/pdtmc/die.pm +++ /dev/null @@ -1,35 +0,0 @@ -// Knuth's model of a fair die using only fair coins -dtmc - -const double p; -const double q; - -module die - - // local state - s : [0..7] init 0; - // value of the dice - d : [0..6] init 0; - - [] s=0 -> p : (s'=1) + 1-p : (s'=2); - [] s=1 -> q : (s'=3) + 1-q : (s'=4); - [] s=2 -> q : (s'=5) + 1-q : (s'=6); - [] s=3 -> p : (s'=1) + 1-p : (s'=7) & (d'=1); - [] s=4 -> p : (s'=7) & (d'=3) + 1-p : (s'=7) & (d'=2); - [] s=5 -> p : (s'=2) + 1-p : (s'=7) & (d'=4); - [] s=6 -> p : (s'=7) & (d'=6) + 1-p : (s'=7) & (d'=5); - [] s=7 -> 1: (s'=7); - -endmodule - -rewards "coin_flips" - [] s<7 : 1; -endrewards - -label "one" = s=7&d=1; -label "two" = s=7&d=2; -label "three" = s=7&d=3; -label "four" = s=7&d=4; -label "five" = s=7&d=5; -label "six" = s=7&d=6; -label "end" = s=7; diff --git a/examples/pdtmc/nand/models b/examples/pdtmc/nand/models deleted file mode 100644 index a41532a76..000000000 --- a/examples/pdtmc/nand/models +++ /dev/null @@ -1,2 +0,0 @@ -nand.pm -const N=10,K=5 -nand.pm -const N=25,K=5 diff --git a/examples/pdtmc/nand/nand.pm b/examples/pdtmc/nand/nand.pm deleted file mode 100644 index 10c867fca..000000000 --- a/examples/pdtmc/nand/nand.pm +++ /dev/null @@ -1,75 +0,0 @@ -// nand multiplex system -// gxn/dxp 20/03/03 - -// U (correctly) performs a random permutation of the outputs of the previous stage - -dtmc - -const int N; // number of inputs in each bundle -const int K; // number of restorative stages - -const int M = 2*K+1; // total number of multiplexing units - -// parameters taken from the following paper -// A system architecture solution for unreliable nanoelectric devices -// J. Han & P. Jonker -// IEEEE trans. on nanotechnology vol 1(4) 2002 - -const double perr; //(0.02) probability nand works correctly -const double prob1; //(0.9) probability initial inputs are stimulated - -// model whole system as a single module by resuing variables -// to decrease the state space -module multiplex - - u : [1..M]; // number of stages - c : [0..N]; // counter (number of copies of the nand done) - - s : [0..4]; // local state - // 0 - initial state - // 1 - set x inputs - // 2 - set y inputs - // 3 - set outputs - // 4 - done - - z : [0..N]; // number of new outputs equal to 1 - zx : [0..N]; // number of old outputs equal to 1 - zy : [0..N]; // need second copy for y - // initially 9 since initially probability of stimulated state is 0.9 - - x : [0..1]; // value of first input - y : [0..1]; // value of second input - - [] s=0 & (c (s'=1); // do next nand if have not done N yet - [] s=0 & (c=N) & (u (s'=1) & (zx'=z) & (zy'=z) & (z'=0) & (u'=u+1) & (c'=0); // move on to next u if not finished - [] s=0 & (c=N) & (u=M) -> (s'=4) & (zx'=0) & (zy'=0) & (x'=0) & (y'=0); // finished (so reset variables not needed to reduce state space) - - // choose x permute selection (have zx stimulated inputs) - // note only need y to be random - [] s=1 & u=1 -> prob1 : (x'=1) & (s'=2) + (1-prob1) : (x'=0) & (s'=2); // initially random - [] s=1 & u>1 & zx>0 -> (x'=1) & (s'=2) & (zx'=zx-1); - [] s=1 & u>1 & zx=0 -> (x'=0) & (s'=2); - - // choose x randomly from selection (have zy stimulated inputs) - [] s=2 & u=1 -> prob1 : (y'=1) & (s'=3) + (1-prob1) : (y'=0) & (s'=3); // initially random - [] s=2 & u>1 & zy<(N-c) & zy>0 -> zy/(N-c) : (y'=1) & (s'=3) & (zy'=zy-1) + 1-(zy/(N-c)) : (y'=0) & (s'=3); - [] s=2 & u>1 & zy=(N-c) & c 1 : (y'=1) & (s'=3) & (zy'=zy-1); - [] s=2 & u>1 & zy=0 -> 1 : (y'=0) & (s'=3); - - // use nand gate - [] s=3 & z (1-perr) : (z'=z+(1-x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0) // not faulty - + perr : (z'=z+(x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0); // von neumann fault - // [] s=3 & z (1-perr) : (z'=z+(1-x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0) // not faulty - // + perr : (z'=z+(x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0); // von neumann fault - - [] s=4 -> (s'=s); - -endmodule - -label "target" = s=4 & z/N<0.1; - -// rewards: final value of gate -rewards - [] s=0 & (c=N) & (u=M) : z/N; -endrewards - diff --git a/examples/pdtmc/nand/nand.prctl b/examples/pdtmc/nand/nand.prctl deleted file mode 100644 index effb39d9e..000000000 --- a/examples/pdtmc/nand/nand.prctl +++ /dev/null @@ -1 +0,0 @@ -P>0.05 [F "target" ] diff --git a/examples/pdtmc/nand/nand10_1.pm b/examples/pdtmc/nand/nand10_1.pm deleted file mode 100644 index f56664199..000000000 --- a/examples/pdtmc/nand/nand10_1.pm +++ /dev/null @@ -1,75 +0,0 @@ -// nand multiplex system -// gxn/dxp 20/03/03 - -// U (correctly) performs a random permutation of the outputs of the previous stage - -dtmc - -const int N = 10; // number of inputs in each bundle -const int K = 1; // number of restorative stages - -const int M = 2*K+1; // total number of multiplexing units - -// parameters taken from the following paper -// A system architecture solution for unreliable nanoelectric devices -// J. Han & P. Jonker -// IEEEE trans. on nanotechnology vol 1(4) 2002 - -const double perr; //(0.02) probability nand works correctly -const double prob1; //(0.9) probability initial inputs are stimulated - -// model whole system as a single module by resuing variables -// to decrease the state space -module multiplex - - u : [1..M]; // number of stages - c : [0..N]; // counter (number of copies of the nand done) - - s : [0..4]; // local state - // 0 - initial state - // 1 - set x inputs - // 2 - set y inputs - // 3 - set outputs - // 4 - done - - z : [0..N]; // number of new outputs equal to 1 - zx : [0..N]; // number of old outputs equal to 1 - zy : [0..N]; // need second copy for y - // initially 9 since initially probability of stimulated state is 0.9 - - x : [0..1]; // value of first input - y : [0..1]; // value of second input - - [] s=0 & (c (s'=1); // do next nand if have not done N yet - [] s=0 & (c=N) & (u (s'=1) & (zx'=z) & (zy'=z) & (z'=0) & (u'=u+1) & (c'=0); // move on to next u if not finished - [] s=0 & (c=N) & (u=M) -> (s'=4) & (zx'=0) & (zy'=0) & (x'=0) & (y'=0); // finished (so reset variables not needed to reduce state space) - - // choose x permute selection (have zx stimulated inputs) - // note only need y to be random - [] s=1 & u=1 -> prob1 : (x'=1) & (s'=2) + (1-prob1) : (x'=0) & (s'=2); // initially random - [] s=1 & u>1 & zx>0 -> (x'=1) & (s'=2) & (zx'=zx-1); - [] s=1 & u>1 & zx=0 -> (x'=0) & (s'=2); - - // choose x randomly from selection (have zy stimulated inputs) - [] s=2 & u=1 -> prob1 : (y'=1) & (s'=3) + (1-prob1) : (y'=0) & (s'=3); // initially random - [] s=2 & u>1 & zy<(N-c) & zy>0 -> zy/(N-c) : (y'=1) & (s'=3) & (zy'=zy-1) + 1-(zy/(N-c)) : (y'=0) & (s'=3); - [] s=2 & u>1 & zy=(N-c) & c 1 : (y'=1) & (s'=3) & (zy'=zy-1); - [] s=2 & u>1 & zy=0 -> 1 : (y'=0) & (s'=3); - - // use nand gate - [] s=3 & z (1-perr) : (z'=z+(1-x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0) // not faulty - + perr : (z'=z+(x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0); // von neumann fault - // [] s=3 & z (1-perr) : (z'=z+(1-x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0) // not faulty - // + perr : (z'=z+(x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0); // von neumann fault - - [] s=4 -> (s'=s); - -endmodule - -label "target" = s=4 & z/N<0.1; - -// rewards: final value of gate -rewards - [] s=0 & (c=N) & (u=M) : z/N; -endrewards - diff --git a/examples/pdtmc/nand/nand10_2.pm b/examples/pdtmc/nand/nand10_2.pm deleted file mode 100644 index 0708144e7..000000000 --- a/examples/pdtmc/nand/nand10_2.pm +++ /dev/null @@ -1,75 +0,0 @@ -// nand multiplex system -// gxn/dxp 20/03/03 - -// U (correctly) performs a random permutation of the outputs of the previous stage - -dtmc - -const int N = 10; // number of inputs in each bundle -const int K = 2; // number of restorative stages - -const int M = 2*K+1; // total number of multiplexing units - -// parameters taken from the following paper -// A system architecture solution for unreliable nanoelectric devices -// J. Han & P. Jonker -// IEEEE trans. on nanotechnology vol 1(4) 2002 - -const double perr; //(0.02) probability nand works correctly -const double prob1; //(0.9) probability initial inputs are stimulated - -// model whole system as a single module by resuing variables -// to decrease the state space -module multiplex - - u : [1..M]; // number of stages - c : [0..N]; // counter (number of copies of the nand done) - - s : [0..4]; // local state - // 0 - initial state - // 1 - set x inputs - // 2 - set y inputs - // 3 - set outputs - // 4 - done - - z : [0..N]; // number of new outputs equal to 1 - zx : [0..N]; // number of old outputs equal to 1 - zy : [0..N]; // need second copy for y - // initially 9 since initially probability of stimulated state is 0.9 - - x : [0..1]; // value of first input - y : [0..1]; // value of second input - - [] s=0 & (c (s'=1); // do next nand if have not done N yet - [] s=0 & (c=N) & (u (s'=1) & (zx'=z) & (zy'=z) & (z'=0) & (u'=u+1) & (c'=0); // move on to next u if not finished - [] s=0 & (c=N) & (u=M) -> (s'=4) & (zx'=0) & (zy'=0) & (x'=0) & (y'=0); // finished (so reset variables not needed to reduce state space) - - // choose x permute selection (have zx stimulated inputs) - // note only need y to be random - [] s=1 & u=1 -> prob1 : (x'=1) & (s'=2) + (1-prob1) : (x'=0) & (s'=2); // initially random - [] s=1 & u>1 & zx>0 -> (x'=1) & (s'=2) & (zx'=zx-1); - [] s=1 & u>1 & zx=0 -> (x'=0) & (s'=2); - - // choose x randomly from selection (have zy stimulated inputs) - [] s=2 & u=1 -> prob1 : (y'=1) & (s'=3) + (1-prob1) : (y'=0) & (s'=3); // initially random - [] s=2 & u>1 & zy<(N-c) & zy>0 -> zy/(N-c) : (y'=1) & (s'=3) & (zy'=zy-1) + 1-(zy/(N-c)) : (y'=0) & (s'=3); - [] s=2 & u>1 & zy=(N-c) & c 1 : (y'=1) & (s'=3) & (zy'=zy-1); - [] s=2 & u>1 & zy=0 -> 1 : (y'=0) & (s'=3); - - // use nand gate - [] s=3 & z (1-perr) : (z'=z+(1-x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0) // not faulty - + perr : (z'=z+(x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0); // von neumann fault - // [] s=3 & z (1-perr) : (z'=z+(1-x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0) // not faulty - // + perr : (z'=z+(x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0); // von neumann fault - - [] s=4 -> (s'=s); - -endmodule - -label "target" = s=4 & z/N<0.1; - -// rewards: final value of gate -rewards - [] s=0 & (c=N) & (u=M) : z/N; -endrewards - diff --git a/examples/pdtmc/nand/nand10_3.pm b/examples/pdtmc/nand/nand10_3.pm deleted file mode 100644 index 566251af3..000000000 --- a/examples/pdtmc/nand/nand10_3.pm +++ /dev/null @@ -1,75 +0,0 @@ -// nand multiplex system -// gxn/dxp 20/03/03 - -// U (correctly) performs a random permutation of the outputs of the previous stage - -dtmc - -const int N = 10; // number of inputs in each bundle -const int K = 3; // number of restorative stages - -const int M = 2*K+1; // total number of multiplexing units - -// parameters taken from the following paper -// A system architecture solution for unreliable nanoelectric devices -// J. Han & P. Jonker -// IEEEE trans. on nanotechnology vol 1(4) 2002 - -const double perr; //(0.02) probability nand works correctly -const double prob1; //(0.9) probability initial inputs are stimulated - -// model whole system as a single module by resuing variables -// to decrease the state space -module multiplex - - u : [1..M]; // number of stages - c : [0..N]; // counter (number of copies of the nand done) - - s : [0..4]; // local state - // 0 - initial state - // 1 - set x inputs - // 2 - set y inputs - // 3 - set outputs - // 4 - done - - z : [0..N]; // number of new outputs equal to 1 - zx : [0..N]; // number of old outputs equal to 1 - zy : [0..N]; // need second copy for y - // initially 9 since initially probability of stimulated state is 0.9 - - x : [0..1]; // value of first input - y : [0..1]; // value of second input - - [] s=0 & (c (s'=1); // do next nand if have not done N yet - [] s=0 & (c=N) & (u (s'=1) & (zx'=z) & (zy'=z) & (z'=0) & (u'=u+1) & (c'=0); // move on to next u if not finished - [] s=0 & (c=N) & (u=M) -> (s'=4) & (zx'=0) & (zy'=0) & (x'=0) & (y'=0); // finished (so reset variables not needed to reduce state space) - - // choose x permute selection (have zx stimulated inputs) - // note only need y to be random - [] s=1 & u=1 -> prob1 : (x'=1) & (s'=2) + (1-prob1) : (x'=0) & (s'=2); // initially random - [] s=1 & u>1 & zx>0 -> (x'=1) & (s'=2) & (zx'=zx-1); - [] s=1 & u>1 & zx=0 -> (x'=0) & (s'=2); - - // choose x randomly from selection (have zy stimulated inputs) - [] s=2 & u=1 -> prob1 : (y'=1) & (s'=3) + (1-prob1) : (y'=0) & (s'=3); // initially random - [] s=2 & u>1 & zy<(N-c) & zy>0 -> zy/(N-c) : (y'=1) & (s'=3) & (zy'=zy-1) + 1-(zy/(N-c)) : (y'=0) & (s'=3); - [] s=2 & u>1 & zy=(N-c) & c 1 : (y'=1) & (s'=3) & (zy'=zy-1); - [] s=2 & u>1 & zy=0 -> 1 : (y'=0) & (s'=3); - - // use nand gate - [] s=3 & z (1-perr) : (z'=z+(1-x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0) // not faulty - + perr : (z'=z+(x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0); // von neumann fault - // [] s=3 & z (1-perr) : (z'=z+(1-x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0) // not faulty - // + perr : (z'=z+(x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0); // von neumann fault - - [] s=4 -> (s'=s); - -endmodule - -label "target" = s=4 & z/N<0.1; - -// rewards: final value of gate -rewards - [] s=0 & (c=N) & (u=M) : z/N; -endrewards - diff --git a/examples/pdtmc/nand/nand10_4.pm b/examples/pdtmc/nand/nand10_4.pm deleted file mode 100644 index 7de796d1d..000000000 --- a/examples/pdtmc/nand/nand10_4.pm +++ /dev/null @@ -1,75 +0,0 @@ -// nand multiplex system -// gxn/dxp 20/03/03 - -// U (correctly) performs a random permutation of the outputs of the previous stage - -dtmc - -const int N = 10; // number of inputs in each bundle -const int K = 4; // number of restorative stages - -const int M = 2*K+1; // total number of multiplexing units - -// parameters taken from the following paper -// A system architecture solution for unreliable nanoelectric devices -// J. Han & P. Jonker -// IEEEE trans. on nanotechnology vol 1(4) 2002 - -const double perr; //(0.02) probability nand works correctly -const double prob1; //(0.9) probability initial inputs are stimulated - -// model whole system as a single module by resuing variables -// to decrease the state space -module multiplex - - u : [1..M]; // number of stages - c : [0..N]; // counter (number of copies of the nand done) - - s : [0..4]; // local state - // 0 - initial state - // 1 - set x inputs - // 2 - set y inputs - // 3 - set outputs - // 4 - done - - z : [0..N]; // number of new outputs equal to 1 - zx : [0..N]; // number of old outputs equal to 1 - zy : [0..N]; // need second copy for y - // initially 9 since initially probability of stimulated state is 0.9 - - x : [0..1]; // value of first input - y : [0..1]; // value of second input - - [] s=0 & (c (s'=1); // do next nand if have not done N yet - [] s=0 & (c=N) & (u (s'=1) & (zx'=z) & (zy'=z) & (z'=0) & (u'=u+1) & (c'=0); // move on to next u if not finished - [] s=0 & (c=N) & (u=M) -> (s'=4) & (zx'=0) & (zy'=0) & (x'=0) & (y'=0); // finished (so reset variables not needed to reduce state space) - - // choose x permute selection (have zx stimulated inputs) - // note only need y to be random - [] s=1 & u=1 -> prob1 : (x'=1) & (s'=2) + (1-prob1) : (x'=0) & (s'=2); // initially random - [] s=1 & u>1 & zx>0 -> (x'=1) & (s'=2) & (zx'=zx-1); - [] s=1 & u>1 & zx=0 -> (x'=0) & (s'=2); - - // choose x randomly from selection (have zy stimulated inputs) - [] s=2 & u=1 -> prob1 : (y'=1) & (s'=3) + (1-prob1) : (y'=0) & (s'=3); // initially random - [] s=2 & u>1 & zy<(N-c) & zy>0 -> zy/(N-c) : (y'=1) & (s'=3) & (zy'=zy-1) + 1-(zy/(N-c)) : (y'=0) & (s'=3); - [] s=2 & u>1 & zy=(N-c) & c 1 : (y'=1) & (s'=3) & (zy'=zy-1); - [] s=2 & u>1 & zy=0 -> 1 : (y'=0) & (s'=3); - - // use nand gate - [] s=3 & z (1-perr) : (z'=z+(1-x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0) // not faulty - + perr : (z'=z+(x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0); // von neumann fault - // [] s=3 & z (1-perr) : (z'=z+(1-x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0) // not faulty - // + perr : (z'=z+(x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0); // von neumann fault - - [] s=4 -> (s'=s); - -endmodule - -label "target" = s=4 & z/N<0.1; - -// rewards: final value of gate -rewards - [] s=0 & (c=N) & (u=M) : z/N; -endrewards - diff --git a/examples/pdtmc/nand/nand10_5.pm b/examples/pdtmc/nand/nand10_5.pm deleted file mode 100644 index 2b1405c2f..000000000 --- a/examples/pdtmc/nand/nand10_5.pm +++ /dev/null @@ -1,75 +0,0 @@ -// nand multiplex system -// gxn/dxp 20/03/03 - -// U (correctly) performs a random permutation of the outputs of the previous stage - -dtmc - -const int N = 10; // number of inputs in each bundle -const int K = 5; // number of restorative stages - -const int M = 2*K+1; // total number of multiplexing units - -// parameters taken from the following paper -// A system architecture solution for unreliable nanoelectric devices -// J. Han & P. Jonker -// IEEEE trans. on nanotechnology vol 1(4) 2002 - -const double perr; //(0.02) probability nand works correctly -const double prob1; //(0.9) probability initial inputs are stimulated - -// model whole system as a single module by resuing variables -// to decrease the state space -module multiplex - - u : [1..M]; // number of stages - c : [0..N]; // counter (number of copies of the nand done) - - s : [0..4]; // local state - // 0 - initial state - // 1 - set x inputs - // 2 - set y inputs - // 3 - set outputs - // 4 - done - - z : [0..N]; // number of new outputs equal to 1 - zx : [0..N]; // number of old outputs equal to 1 - zy : [0..N]; // need second copy for y - // initially 9 since initially probability of stimulated state is 0.9 - - x : [0..1]; // value of first input - y : [0..1]; // value of second input - - [] s=0 & (c (s'=1); // do next nand if have not done N yet - [] s=0 & (c=N) & (u (s'=1) & (zx'=z) & (zy'=z) & (z'=0) & (u'=u+1) & (c'=0); // move on to next u if not finished - [] s=0 & (c=N) & (u=M) -> (s'=4) & (zx'=0) & (zy'=0) & (x'=0) & (y'=0); // finished (so reset variables not needed to reduce state space) - - // choose x permute selection (have zx stimulated inputs) - // note only need y to be random - [] s=1 & u=1 -> prob1 : (x'=1) & (s'=2) + (1-prob1) : (x'=0) & (s'=2); // initially random - [] s=1 & u>1 & zx>0 -> (x'=1) & (s'=2) & (zx'=zx-1); - [] s=1 & u>1 & zx=0 -> (x'=0) & (s'=2); - - // choose x randomly from selection (have zy stimulated inputs) - [] s=2 & u=1 -> prob1 : (y'=1) & (s'=3) + (1-prob1) : (y'=0) & (s'=3); // initially random - [] s=2 & u>1 & zy<(N-c) & zy>0 -> zy/(N-c) : (y'=1) & (s'=3) & (zy'=zy-1) + 1-(zy/(N-c)) : (y'=0) & (s'=3); - [] s=2 & u>1 & zy=(N-c) & c 1 : (y'=1) & (s'=3) & (zy'=zy-1); - [] s=2 & u>1 & zy=0 -> 1 : (y'=0) & (s'=3); - - // use nand gate - [] s=3 & z (1-perr) : (z'=z+(1-x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0) // not faulty - + perr : (z'=z+(x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0); // von neumann fault - // [] s=3 & z (1-perr) : (z'=z+(1-x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0) // not faulty - // + perr : (z'=z+(x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0); // von neumann fault - - [] s=4 -> (s'=s); - -endmodule - -label "target" = s=4 & z/N<0.1; - -// rewards: final value of gate -rewards - [] s=0 & (c=N) & (u=M) : z/N; -endrewards - diff --git a/examples/pdtmc/nand/nand20_1.pm b/examples/pdtmc/nand/nand20_1.pm deleted file mode 100644 index babaecbe3..000000000 --- a/examples/pdtmc/nand/nand20_1.pm +++ /dev/null @@ -1,75 +0,0 @@ -// nand multiplex system -// gxn/dxp 20/03/03 - -// U (correctly) performs a random permutation of the outputs of the previous stage - -dtmc - -const int N = 20; // number of inputs in each bundle -const int K = 1; // number of restorative stages - -const int M = 2*K+1; // total number of multiplexing units - -// parameters taken from the following paper -// A system architecture solution for unreliable nanoelectric devices -// J. Han & P. Jonker -// IEEEE trans. on nanotechnology vol 1(4) 2002 - -const double perr; //(0.02) probability nand works correctly -const double prob1; //(0.9) probability initial inputs are stimulated - -// model whole system as a single module by resuing variables -// to decrease the state space -module multiplex - - u : [1..M]; // number of stages - c : [0..N]; // counter (number of copies of the nand done) - - s : [0..4]; // local state - // 0 - initial state - // 1 - set x inputs - // 2 - set y inputs - // 3 - set outputs - // 4 - done - - z : [0..N]; // number of new outputs equal to 1 - zx : [0..N]; // number of old outputs equal to 1 - zy : [0..N]; // need second copy for y - // initially 9 since initially probability of stimulated state is 0.9 - - x : [0..1]; // value of first input - y : [0..1]; // value of second input - - [] s=0 & (c (s'=1); // do next nand if have not done N yet - [] s=0 & (c=N) & (u (s'=1) & (zx'=z) & (zy'=z) & (z'=0) & (u'=u+1) & (c'=0); // move on to next u if not finished - [] s=0 & (c=N) & (u=M) -> (s'=4) & (zx'=0) & (zy'=0) & (x'=0) & (y'=0); // finished (so reset variables not needed to reduce state space) - - // choose x permute selection (have zx stimulated inputs) - // note only need y to be random - [] s=1 & u=1 -> prob1 : (x'=1) & (s'=2) + (1-prob1) : (x'=0) & (s'=2); // initially random - [] s=1 & u>1 & zx>0 -> (x'=1) & (s'=2) & (zx'=zx-1); - [] s=1 & u>1 & zx=0 -> (x'=0) & (s'=2); - - // choose x randomly from selection (have zy stimulated inputs) - [] s=2 & u=1 -> prob1 : (y'=1) & (s'=3) + (1-prob1) : (y'=0) & (s'=3); // initially random - [] s=2 & u>1 & zy<(N-c) & zy>0 -> zy/(N-c) : (y'=1) & (s'=3) & (zy'=zy-1) + 1-(zy/(N-c)) : (y'=0) & (s'=3); - [] s=2 & u>1 & zy=(N-c) & c 1 : (y'=1) & (s'=3) & (zy'=zy-1); - [] s=2 & u>1 & zy=0 -> 1 : (y'=0) & (s'=3); - - // use nand gate - [] s=3 & z (1-perr) : (z'=z+(1-x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0) // not faulty - + perr : (z'=z+(x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0); // von neumann fault - // [] s=3 & z (1-perr) : (z'=z+(1-x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0) // not faulty - // + perr : (z'=z+(x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0); // von neumann fault - - [] s=4 -> (s'=s); - -endmodule - -label "target" = s=4 & z/N<0.1; - -// rewards: final value of gate -rewards - [] s=0 & (c=N) & (u=M) : z/N; -endrewards - diff --git a/examples/pdtmc/nand/nand20_2.pm b/examples/pdtmc/nand/nand20_2.pm deleted file mode 100644 index 164a03e0f..000000000 --- a/examples/pdtmc/nand/nand20_2.pm +++ /dev/null @@ -1,75 +0,0 @@ -// nand multiplex system -// gxn/dxp 20/03/03 - -// U (correctly) performs a random permutation of the outputs of the previous stage - -dtmc - -const int N = 20; // number of inputs in each bundle -const int K = 2; // number of restorative stages - -const int M = 2*K+1; // total number of multiplexing units - -// parameters taken from the following paper -// A system architecture solution for unreliable nanoelectric devices -// J. Han & P. Jonker -// IEEEE trans. on nanotechnology vol 1(4) 2002 - -const double perr; //(0.02) probability nand works correctly -const double prob1; //(0.9) probability initial inputs are stimulated - -// model whole system as a single module by resuing variables -// to decrease the state space -module multiplex - - u : [1..M]; // number of stages - c : [0..N]; // counter (number of copies of the nand done) - - s : [0..4]; // local state - // 0 - initial state - // 1 - set x inputs - // 2 - set y inputs - // 3 - set outputs - // 4 - done - - z : [0..N]; // number of new outputs equal to 1 - zx : [0..N]; // number of old outputs equal to 1 - zy : [0..N]; // need second copy for y - // initially 9 since initially probability of stimulated state is 0.9 - - x : [0..1]; // value of first input - y : [0..1]; // value of second input - - [] s=0 & (c (s'=1); // do next nand if have not done N yet - [] s=0 & (c=N) & (u (s'=1) & (zx'=z) & (zy'=z) & (z'=0) & (u'=u+1) & (c'=0); // move on to next u if not finished - [] s=0 & (c=N) & (u=M) -> (s'=4) & (zx'=0) & (zy'=0) & (x'=0) & (y'=0); // finished (so reset variables not needed to reduce state space) - - // choose x permute selection (have zx stimulated inputs) - // note only need y to be random - [] s=1 & u=1 -> prob1 : (x'=1) & (s'=2) + (1-prob1) : (x'=0) & (s'=2); // initially random - [] s=1 & u>1 & zx>0 -> (x'=1) & (s'=2) & (zx'=zx-1); - [] s=1 & u>1 & zx=0 -> (x'=0) & (s'=2); - - // choose x randomly from selection (have zy stimulated inputs) - [] s=2 & u=1 -> prob1 : (y'=1) & (s'=3) + (1-prob1) : (y'=0) & (s'=3); // initially random - [] s=2 & u>1 & zy<(N-c) & zy>0 -> zy/(N-c) : (y'=1) & (s'=3) & (zy'=zy-1) + 1-(zy/(N-c)) : (y'=0) & (s'=3); - [] s=2 & u>1 & zy=(N-c) & c 1 : (y'=1) & (s'=3) & (zy'=zy-1); - [] s=2 & u>1 & zy=0 -> 1 : (y'=0) & (s'=3); - - // use nand gate - [] s=3 & z (1-perr) : (z'=z+(1-x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0) // not faulty - + perr : (z'=z+(x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0); // von neumann fault - // [] s=3 & z (1-perr) : (z'=z+(1-x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0) // not faulty - // + perr : (z'=z+(x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0); // von neumann fault - - [] s=4 -> (s'=s); - -endmodule - -label "target" = s=4 & z/N<0.1; - -// rewards: final value of gate -rewards - [] s=0 & (c=N) & (u=M) : z/N; -endrewards - diff --git a/examples/pdtmc/nand/nand20_3.pm b/examples/pdtmc/nand/nand20_3.pm deleted file mode 100644 index 5131d1290..000000000 --- a/examples/pdtmc/nand/nand20_3.pm +++ /dev/null @@ -1,75 +0,0 @@ -// nand multiplex system -// gxn/dxp 20/03/03 - -// U (correctly) performs a random permutation of the outputs of the previous stage - -dtmc - -const int N = 20; // number of inputs in each bundle -const int K = 3; // number of restorative stages - -const int M = 2*K+1; // total number of multiplexing units - -// parameters taken from the following paper -// A system architecture solution for unreliable nanoelectric devices -// J. Han & P. Jonker -// IEEEE trans. on nanotechnology vol 1(4) 2002 - -const double perr; //(0.02) probability nand works correctly -const double prob1; //(0.9) probability initial inputs are stimulated - -// model whole system as a single module by resuing variables -// to decrease the state space -module multiplex - - u : [1..M]; // number of stages - c : [0..N]; // counter (number of copies of the nand done) - - s : [0..4]; // local state - // 0 - initial state - // 1 - set x inputs - // 2 - set y inputs - // 3 - set outputs - // 4 - done - - z : [0..N]; // number of new outputs equal to 1 - zx : [0..N]; // number of old outputs equal to 1 - zy : [0..N]; // need second copy for y - // initially 9 since initially probability of stimulated state is 0.9 - - x : [0..1]; // value of first input - y : [0..1]; // value of second input - - [] s=0 & (c (s'=1); // do next nand if have not done N yet - [] s=0 & (c=N) & (u (s'=1) & (zx'=z) & (zy'=z) & (z'=0) & (u'=u+1) & (c'=0); // move on to next u if not finished - [] s=0 & (c=N) & (u=M) -> (s'=4) & (zx'=0) & (zy'=0) & (x'=0) & (y'=0); // finished (so reset variables not needed to reduce state space) - - // choose x permute selection (have zx stimulated inputs) - // note only need y to be random - [] s=1 & u=1 -> prob1 : (x'=1) & (s'=2) + (1-prob1) : (x'=0) & (s'=2); // initially random - [] s=1 & u>1 & zx>0 -> (x'=1) & (s'=2) & (zx'=zx-1); - [] s=1 & u>1 & zx=0 -> (x'=0) & (s'=2); - - // choose x randomly from selection (have zy stimulated inputs) - [] s=2 & u=1 -> prob1 : (y'=1) & (s'=3) + (1-prob1) : (y'=0) & (s'=3); // initially random - [] s=2 & u>1 & zy<(N-c) & zy>0 -> zy/(N-c) : (y'=1) & (s'=3) & (zy'=zy-1) + 1-(zy/(N-c)) : (y'=0) & (s'=3); - [] s=2 & u>1 & zy=(N-c) & c 1 : (y'=1) & (s'=3) & (zy'=zy-1); - [] s=2 & u>1 & zy=0 -> 1 : (y'=0) & (s'=3); - - // use nand gate - [] s=3 & z (1-perr) : (z'=z+(1-x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0) // not faulty - + perr : (z'=z+(x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0); // von neumann fault - // [] s=3 & z (1-perr) : (z'=z+(1-x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0) // not faulty - // + perr : (z'=z+(x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0); // von neumann fault - - [] s=4 -> (s'=s); - -endmodule - -label "target" = s=4 & z/N<0.1; - -// rewards: final value of gate -rewards - [] s=0 & (c=N) & (u=M) : z/N; -endrewards - diff --git a/examples/pdtmc/nand/nand20_4.pm b/examples/pdtmc/nand/nand20_4.pm deleted file mode 100644 index 047f8ac5e..000000000 --- a/examples/pdtmc/nand/nand20_4.pm +++ /dev/null @@ -1,75 +0,0 @@ -// nand multiplex system -// gxn/dxp 20/03/03 - -// U (correctly) performs a random permutation of the outputs of the previous stage - -dtmc - -const int N = 20; // number of inputs in each bundle -const int K = 4; // number of restorative stages - -const int M = 2*K+1; // total number of multiplexing units - -// parameters taken from the following paper -// A system architecture solution for unreliable nanoelectric devices -// J. Han & P. Jonker -// IEEEE trans. on nanotechnology vol 1(4) 2002 - -const double perr; //(0.02) probability nand works correctly -const double prob1; //(0.9) probability initial inputs are stimulated - -// model whole system as a single module by resuing variables -// to decrease the state space -module multiplex - - u : [1..M]; // number of stages - c : [0..N]; // counter (number of copies of the nand done) - - s : [0..4]; // local state - // 0 - initial state - // 1 - set x inputs - // 2 - set y inputs - // 3 - set outputs - // 4 - done - - z : [0..N]; // number of new outputs equal to 1 - zx : [0..N]; // number of old outputs equal to 1 - zy : [0..N]; // need second copy for y - // initially 9 since initially probability of stimulated state is 0.9 - - x : [0..1]; // value of first input - y : [0..1]; // value of second input - - [] s=0 & (c (s'=1); // do next nand if have not done N yet - [] s=0 & (c=N) & (u (s'=1) & (zx'=z) & (zy'=z) & (z'=0) & (u'=u+1) & (c'=0); // move on to next u if not finished - [] s=0 & (c=N) & (u=M) -> (s'=4) & (zx'=0) & (zy'=0) & (x'=0) & (y'=0); // finished (so reset variables not needed to reduce state space) - - // choose x permute selection (have zx stimulated inputs) - // note only need y to be random - [] s=1 & u=1 -> prob1 : (x'=1) & (s'=2) + (1-prob1) : (x'=0) & (s'=2); // initially random - [] s=1 & u>1 & zx>0 -> (x'=1) & (s'=2) & (zx'=zx-1); - [] s=1 & u>1 & zx=0 -> (x'=0) & (s'=2); - - // choose x randomly from selection (have zy stimulated inputs) - [] s=2 & u=1 -> prob1 : (y'=1) & (s'=3) + (1-prob1) : (y'=0) & (s'=3); // initially random - [] s=2 & u>1 & zy<(N-c) & zy>0 -> zy/(N-c) : (y'=1) & (s'=3) & (zy'=zy-1) + 1-(zy/(N-c)) : (y'=0) & (s'=3); - [] s=2 & u>1 & zy=(N-c) & c 1 : (y'=1) & (s'=3) & (zy'=zy-1); - [] s=2 & u>1 & zy=0 -> 1 : (y'=0) & (s'=3); - - // use nand gate - [] s=3 & z (1-perr) : (z'=z+(1-x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0) // not faulty - + perr : (z'=z+(x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0); // von neumann fault - // [] s=3 & z (1-perr) : (z'=z+(1-x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0) // not faulty - // + perr : (z'=z+(x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0); // von neumann fault - - [] s=4 -> (s'=s); - -endmodule - -label "target" = s=4 & z/N<0.1; - -// rewards: final value of gate -rewards - [] s=0 & (c=N) & (u=M) : z/N; -endrewards - diff --git a/examples/pdtmc/nand/nand20_5.pm b/examples/pdtmc/nand/nand20_5.pm deleted file mode 100644 index 2043bb018..000000000 --- a/examples/pdtmc/nand/nand20_5.pm +++ /dev/null @@ -1,75 +0,0 @@ -// nand multiplex system -// gxn/dxp 20/03/03 - -// U (correctly) performs a random permutation of the outputs of the previous stage - -dtmc - -const int N = 20; // number of inputs in each bundle -const int K = 5; // number of restorative stages - -const int M = 2*K+1; // total number of multiplexing units - -// parameters taken from the following paper -// A system architecture solution for unreliable nanoelectric devices -// J. Han & P. Jonker -// IEEEE trans. on nanotechnology vol 1(4) 2002 - -const double perr; //(0.02) probability nand works correctly -const double prob1; //(0.9) probability initial inputs are stimulated - -// model whole system as a single module by resuing variables -// to decrease the state space -module multiplex - - u : [1..M]; // number of stages - c : [0..N]; // counter (number of copies of the nand done) - - s : [0..4]; // local state - // 0 - initial state - // 1 - set x inputs - // 2 - set y inputs - // 3 - set outputs - // 4 - done - - z : [0..N]; // number of new outputs equal to 1 - zx : [0..N]; // number of old outputs equal to 1 - zy : [0..N]; // need second copy for y - // initially 9 since initially probability of stimulated state is 0.9 - - x : [0..1]; // value of first input - y : [0..1]; // value of second input - - [] s=0 & (c (s'=1); // do next nand if have not done N yet - [] s=0 & (c=N) & (u (s'=1) & (zx'=z) & (zy'=z) & (z'=0) & (u'=u+1) & (c'=0); // move on to next u if not finished - [] s=0 & (c=N) & (u=M) -> (s'=4) & (zx'=0) & (zy'=0) & (x'=0) & (y'=0); // finished (so reset variables not needed to reduce state space) - - // choose x permute selection (have zx stimulated inputs) - // note only need y to be random - [] s=1 & u=1 -> prob1 : (x'=1) & (s'=2) + (1-prob1) : (x'=0) & (s'=2); // initially random - [] s=1 & u>1 & zx>0 -> (x'=1) & (s'=2) & (zx'=zx-1); - [] s=1 & u>1 & zx=0 -> (x'=0) & (s'=2); - - // choose x randomly from selection (have zy stimulated inputs) - [] s=2 & u=1 -> prob1 : (y'=1) & (s'=3) + (1-prob1) : (y'=0) & (s'=3); // initially random - [] s=2 & u>1 & zy<(N-c) & zy>0 -> zy/(N-c) : (y'=1) & (s'=3) & (zy'=zy-1) + 1-(zy/(N-c)) : (y'=0) & (s'=3); - [] s=2 & u>1 & zy=(N-c) & c 1 : (y'=1) & (s'=3) & (zy'=zy-1); - [] s=2 & u>1 & zy=0 -> 1 : (y'=0) & (s'=3); - - // use nand gate - [] s=3 & z (1-perr) : (z'=z+(1-x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0) // not faulty - + perr : (z'=z+(x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0); // von neumann fault - // [] s=3 & z (1-perr) : (z'=z+(1-x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0) // not faulty - // + perr : (z'=z+(x*y)) & (s'=0) & (c'=c+1) & (x'=0) & (y'=0); // von neumann fault - - [] s=4 -> (s'=s); - -endmodule - -label "target" = s=4 & z/N<0.1; - -// rewards: final value of gate -rewards - [] s=0 & (c=N) & (u=M) : z/N; -endrewards - diff --git a/examples/pdtmc/nand/nand_regions.txt b/examples/pdtmc/nand/nand_regions.txt deleted file mode 100644 index 2a1194565..000000000 --- a/examples/pdtmc/nand/nand_regions.txt +++ /dev/null @@ -1,625 +0,0 @@ -0.000010<=perr<=0.040000, 0.000010<=prob1<=0.040000; -0.000010<=perr<=0.040000, 0.040000<=prob1<=0.080000; -0.000010<=perr<=0.040000, 0.080000<=prob1<=0.120000; -0.000010<=perr<=0.040000, 0.120000<=prob1<=0.160000; -0.000010<=perr<=0.040000, 0.160000<=prob1<=0.200000; -0.000010<=perr<=0.040000, 0.200000<=prob1<=0.240000; -0.000010<=perr<=0.040000, 0.240000<=prob1<=0.280000; -0.000010<=perr<=0.040000, 0.280000<=prob1<=0.320000; -0.000010<=perr<=0.040000, 0.320000<=prob1<=0.360000; -0.000010<=perr<=0.040000, 0.360000<=prob1<=0.400000; -0.000010<=perr<=0.040000, 0.400000<=prob1<=0.440000; -0.000010<=perr<=0.040000, 0.440000<=prob1<=0.480000; -0.000010<=perr<=0.040000, 0.480000<=prob1<=0.520000; -0.000010<=perr<=0.040000, 0.520000<=prob1<=0.560000; -0.000010<=perr<=0.040000, 0.560000<=prob1<=0.600000; -0.000010<=perr<=0.040000, 0.600000<=prob1<=0.640000; -0.000010<=perr<=0.040000, 0.640000<=prob1<=0.680000; -0.000010<=perr<=0.040000, 0.680000<=prob1<=0.720000; -0.000010<=perr<=0.040000, 0.720000<=prob1<=0.760000; -0.000010<=perr<=0.040000, 0.760000<=prob1<=0.800000; -0.000010<=perr<=0.040000, 0.800000<=prob1<=0.840000; -0.000010<=perr<=0.040000, 0.840000<=prob1<=0.880000; -0.000010<=perr<=0.040000, 0.880000<=prob1<=0.920000; -0.000010<=perr<=0.040000, 0.920000<=prob1<=0.960000; -0.000010<=perr<=0.040000, 0.960000<=prob1<=0.999990; -0.040000<=perr<=0.080000, 0.000010<=prob1<=0.040000; -0.040000<=perr<=0.080000, 0.040000<=prob1<=0.080000; -0.040000<=perr<=0.080000, 0.080000<=prob1<=0.120000; -0.040000<=perr<=0.080000, 0.120000<=prob1<=0.160000; -0.040000<=perr<=0.080000, 0.160000<=prob1<=0.200000; -0.040000<=perr<=0.080000, 0.200000<=prob1<=0.240000; -0.040000<=perr<=0.080000, 0.240000<=prob1<=0.280000; -0.040000<=perr<=0.080000, 0.280000<=prob1<=0.320000; -0.040000<=perr<=0.080000, 0.320000<=prob1<=0.360000; -0.040000<=perr<=0.080000, 0.360000<=prob1<=0.400000; -0.040000<=perr<=0.080000, 0.400000<=prob1<=0.440000; -0.040000<=perr<=0.080000, 0.440000<=prob1<=0.480000; -0.040000<=perr<=0.080000, 0.480000<=prob1<=0.520000; -0.040000<=perr<=0.080000, 0.520000<=prob1<=0.560000; -0.040000<=perr<=0.080000, 0.560000<=prob1<=0.600000; -0.040000<=perr<=0.080000, 0.600000<=prob1<=0.640000; -0.040000<=perr<=0.080000, 0.640000<=prob1<=0.680000; -0.040000<=perr<=0.080000, 0.680000<=prob1<=0.720000; -0.040000<=perr<=0.080000, 0.720000<=prob1<=0.760000; -0.040000<=perr<=0.080000, 0.760000<=prob1<=0.800000; -0.040000<=perr<=0.080000, 0.800000<=prob1<=0.840000; -0.040000<=perr<=0.080000, 0.840000<=prob1<=0.880000; -0.040000<=perr<=0.080000, 0.880000<=prob1<=0.920000; -0.040000<=perr<=0.080000, 0.920000<=prob1<=0.960000; -0.040000<=perr<=0.080000, 0.960000<=prob1<=0.999990; -0.080000<=perr<=0.120000, 0.000010<=prob1<=0.040000; -0.080000<=perr<=0.120000, 0.040000<=prob1<=0.080000; -0.080000<=perr<=0.120000, 0.080000<=prob1<=0.120000; -0.080000<=perr<=0.120000, 0.120000<=prob1<=0.160000; -0.080000<=perr<=0.120000, 0.160000<=prob1<=0.200000; -0.080000<=perr<=0.120000, 0.200000<=prob1<=0.240000; -0.080000<=perr<=0.120000, 0.240000<=prob1<=0.280000; -0.080000<=perr<=0.120000, 0.280000<=prob1<=0.320000; -0.080000<=perr<=0.120000, 0.320000<=prob1<=0.360000; -0.080000<=perr<=0.120000, 0.360000<=prob1<=0.400000; -0.080000<=perr<=0.120000, 0.400000<=prob1<=0.440000; -0.080000<=perr<=0.120000, 0.440000<=prob1<=0.480000; -0.080000<=perr<=0.120000, 0.480000<=prob1<=0.520000; -0.080000<=perr<=0.120000, 0.520000<=prob1<=0.560000; -0.080000<=perr<=0.120000, 0.560000<=prob1<=0.600000; -0.080000<=perr<=0.120000, 0.600000<=prob1<=0.640000; -0.080000<=perr<=0.120000, 0.640000<=prob1<=0.680000; -0.080000<=perr<=0.120000, 0.680000<=prob1<=0.720000; -0.080000<=perr<=0.120000, 0.720000<=prob1<=0.760000; -0.080000<=perr<=0.120000, 0.760000<=prob1<=0.800000; -0.080000<=perr<=0.120000, 0.800000<=prob1<=0.840000; -0.080000<=perr<=0.120000, 0.840000<=prob1<=0.880000; -0.080000<=perr<=0.120000, 0.880000<=prob1<=0.920000; -0.080000<=perr<=0.120000, 0.920000<=prob1<=0.960000; -0.080000<=perr<=0.120000, 0.960000<=prob1<=0.999990; -0.120000<=perr<=0.160000, 0.000010<=prob1<=0.040000; -0.120000<=perr<=0.160000, 0.040000<=prob1<=0.080000; -0.120000<=perr<=0.160000, 0.080000<=prob1<=0.120000; -0.120000<=perr<=0.160000, 0.120000<=prob1<=0.160000; -0.120000<=perr<=0.160000, 0.160000<=prob1<=0.200000; -0.120000<=perr<=0.160000, 0.200000<=prob1<=0.240000; -0.120000<=perr<=0.160000, 0.240000<=prob1<=0.280000; -0.120000<=perr<=0.160000, 0.280000<=prob1<=0.320000; -0.120000<=perr<=0.160000, 0.320000<=prob1<=0.360000; -0.120000<=perr<=0.160000, 0.360000<=prob1<=0.400000; -0.120000<=perr<=0.160000, 0.400000<=prob1<=0.440000; -0.120000<=perr<=0.160000, 0.440000<=prob1<=0.480000; -0.120000<=perr<=0.160000, 0.480000<=prob1<=0.520000; -0.120000<=perr<=0.160000, 0.520000<=prob1<=0.560000; -0.120000<=perr<=0.160000, 0.560000<=prob1<=0.600000; -0.120000<=perr<=0.160000, 0.600000<=prob1<=0.640000; -0.120000<=perr<=0.160000, 0.640000<=prob1<=0.680000; -0.120000<=perr<=0.160000, 0.680000<=prob1<=0.720000; -0.120000<=perr<=0.160000, 0.720000<=prob1<=0.760000; -0.120000<=perr<=0.160000, 0.760000<=prob1<=0.800000; -0.120000<=perr<=0.160000, 0.800000<=prob1<=0.840000; -0.120000<=perr<=0.160000, 0.840000<=prob1<=0.880000; -0.120000<=perr<=0.160000, 0.880000<=prob1<=0.920000; -0.120000<=perr<=0.160000, 0.920000<=prob1<=0.960000; -0.120000<=perr<=0.160000, 0.960000<=prob1<=0.999990; -0.160000<=perr<=0.200000, 0.000010<=prob1<=0.040000; -0.160000<=perr<=0.200000, 0.040000<=prob1<=0.080000; -0.160000<=perr<=0.200000, 0.080000<=prob1<=0.120000; -0.160000<=perr<=0.200000, 0.120000<=prob1<=0.160000; -0.160000<=perr<=0.200000, 0.160000<=prob1<=0.200000; -0.160000<=perr<=0.200000, 0.200000<=prob1<=0.240000; -0.160000<=perr<=0.200000, 0.240000<=prob1<=0.280000; -0.160000<=perr<=0.200000, 0.280000<=prob1<=0.320000; -0.160000<=perr<=0.200000, 0.320000<=prob1<=0.360000; -0.160000<=perr<=0.200000, 0.360000<=prob1<=0.400000; -0.160000<=perr<=0.200000, 0.400000<=prob1<=0.440000; -0.160000<=perr<=0.200000, 0.440000<=prob1<=0.480000; -0.160000<=perr<=0.200000, 0.480000<=prob1<=0.520000; -0.160000<=perr<=0.200000, 0.520000<=prob1<=0.560000; -0.160000<=perr<=0.200000, 0.560000<=prob1<=0.600000; -0.160000<=perr<=0.200000, 0.600000<=prob1<=0.640000; -0.160000<=perr<=0.200000, 0.640000<=prob1<=0.680000; -0.160000<=perr<=0.200000, 0.680000<=prob1<=0.720000; -0.160000<=perr<=0.200000, 0.720000<=prob1<=0.760000; -0.160000<=perr<=0.200000, 0.760000<=prob1<=0.800000; -0.160000<=perr<=0.200000, 0.800000<=prob1<=0.840000; -0.160000<=perr<=0.200000, 0.840000<=prob1<=0.880000; -0.160000<=perr<=0.200000, 0.880000<=prob1<=0.920000; -0.160000<=perr<=0.200000, 0.920000<=prob1<=0.960000; -0.160000<=perr<=0.200000, 0.960000<=prob1<=0.999990; -0.200000<=perr<=0.240000, 0.000010<=prob1<=0.040000; -0.200000<=perr<=0.240000, 0.040000<=prob1<=0.080000; -0.200000<=perr<=0.240000, 0.080000<=prob1<=0.120000; -0.200000<=perr<=0.240000, 0.120000<=prob1<=0.160000; -0.200000<=perr<=0.240000, 0.160000<=prob1<=0.200000; -0.200000<=perr<=0.240000, 0.200000<=prob1<=0.240000; -0.200000<=perr<=0.240000, 0.240000<=prob1<=0.280000; -0.200000<=perr<=0.240000, 0.280000<=prob1<=0.320000; -0.200000<=perr<=0.240000, 0.320000<=prob1<=0.360000; -0.200000<=perr<=0.240000, 0.360000<=prob1<=0.400000; -0.200000<=perr<=0.240000, 0.400000<=prob1<=0.440000; -0.200000<=perr<=0.240000, 0.440000<=prob1<=0.480000; -0.200000<=perr<=0.240000, 0.480000<=prob1<=0.520000; -0.200000<=perr<=0.240000, 0.520000<=prob1<=0.560000; -0.200000<=perr<=0.240000, 0.560000<=prob1<=0.600000; -0.200000<=perr<=0.240000, 0.600000<=prob1<=0.640000; -0.200000<=perr<=0.240000, 0.640000<=prob1<=0.680000; -0.200000<=perr<=0.240000, 0.680000<=prob1<=0.720000; -0.200000<=perr<=0.240000, 0.720000<=prob1<=0.760000; -0.200000<=perr<=0.240000, 0.760000<=prob1<=0.800000; -0.200000<=perr<=0.240000, 0.800000<=prob1<=0.840000; -0.200000<=perr<=0.240000, 0.840000<=prob1<=0.880000; -0.200000<=perr<=0.240000, 0.880000<=prob1<=0.920000; -0.200000<=perr<=0.240000, 0.920000<=prob1<=0.960000; -0.200000<=perr<=0.240000, 0.960000<=prob1<=0.999990; -0.240000<=perr<=0.280000, 0.000010<=prob1<=0.040000; -0.240000<=perr<=0.280000, 0.040000<=prob1<=0.080000; -0.240000<=perr<=0.280000, 0.080000<=prob1<=0.120000; -0.240000<=perr<=0.280000, 0.120000<=prob1<=0.160000; -0.240000<=perr<=0.280000, 0.160000<=prob1<=0.200000; -0.240000<=perr<=0.280000, 0.200000<=prob1<=0.240000; -0.240000<=perr<=0.280000, 0.240000<=prob1<=0.280000; -0.240000<=perr<=0.280000, 0.280000<=prob1<=0.320000; -0.240000<=perr<=0.280000, 0.320000<=prob1<=0.360000; -0.240000<=perr<=0.280000, 0.360000<=prob1<=0.400000; -0.240000<=perr<=0.280000, 0.400000<=prob1<=0.440000; -0.240000<=perr<=0.280000, 0.440000<=prob1<=0.480000; -0.240000<=perr<=0.280000, 0.480000<=prob1<=0.520000; -0.240000<=perr<=0.280000, 0.520000<=prob1<=0.560000; -0.240000<=perr<=0.280000, 0.560000<=prob1<=0.600000; -0.240000<=perr<=0.280000, 0.600000<=prob1<=0.640000; -0.240000<=perr<=0.280000, 0.640000<=prob1<=0.680000; -0.240000<=perr<=0.280000, 0.680000<=prob1<=0.720000; -0.240000<=perr<=0.280000, 0.720000<=prob1<=0.760000; -0.240000<=perr<=0.280000, 0.760000<=prob1<=0.800000; -0.240000<=perr<=0.280000, 0.800000<=prob1<=0.840000; -0.240000<=perr<=0.280000, 0.840000<=prob1<=0.880000; -0.240000<=perr<=0.280000, 0.880000<=prob1<=0.920000; -0.240000<=perr<=0.280000, 0.920000<=prob1<=0.960000; -0.240000<=perr<=0.280000, 0.960000<=prob1<=0.999990; -0.280000<=perr<=0.320000, 0.000010<=prob1<=0.040000; -0.280000<=perr<=0.320000, 0.040000<=prob1<=0.080000; -0.280000<=perr<=0.320000, 0.080000<=prob1<=0.120000; -0.280000<=perr<=0.320000, 0.120000<=prob1<=0.160000; -0.280000<=perr<=0.320000, 0.160000<=prob1<=0.200000; -0.280000<=perr<=0.320000, 0.200000<=prob1<=0.240000; -0.280000<=perr<=0.320000, 0.240000<=prob1<=0.280000; -0.280000<=perr<=0.320000, 0.280000<=prob1<=0.320000; -0.280000<=perr<=0.320000, 0.320000<=prob1<=0.360000; -0.280000<=perr<=0.320000, 0.360000<=prob1<=0.400000; -0.280000<=perr<=0.320000, 0.400000<=prob1<=0.440000; -0.280000<=perr<=0.320000, 0.440000<=prob1<=0.480000; -0.280000<=perr<=0.320000, 0.480000<=prob1<=0.520000; -0.280000<=perr<=0.320000, 0.520000<=prob1<=0.560000; -0.280000<=perr<=0.320000, 0.560000<=prob1<=0.600000; -0.280000<=perr<=0.320000, 0.600000<=prob1<=0.640000; -0.280000<=perr<=0.320000, 0.640000<=prob1<=0.680000; -0.280000<=perr<=0.320000, 0.680000<=prob1<=0.720000; -0.280000<=perr<=0.320000, 0.720000<=prob1<=0.760000; -0.280000<=perr<=0.320000, 0.760000<=prob1<=0.800000; -0.280000<=perr<=0.320000, 0.800000<=prob1<=0.840000; -0.280000<=perr<=0.320000, 0.840000<=prob1<=0.880000; -0.280000<=perr<=0.320000, 0.880000<=prob1<=0.920000; -0.280000<=perr<=0.320000, 0.920000<=prob1<=0.960000; -0.280000<=perr<=0.320000, 0.960000<=prob1<=0.999990; -0.320000<=perr<=0.360000, 0.000010<=prob1<=0.040000; -0.320000<=perr<=0.360000, 0.040000<=prob1<=0.080000; -0.320000<=perr<=0.360000, 0.080000<=prob1<=0.120000; -0.320000<=perr<=0.360000, 0.120000<=prob1<=0.160000; -0.320000<=perr<=0.360000, 0.160000<=prob1<=0.200000; -0.320000<=perr<=0.360000, 0.200000<=prob1<=0.240000; -0.320000<=perr<=0.360000, 0.240000<=prob1<=0.280000; -0.320000<=perr<=0.360000, 0.280000<=prob1<=0.320000; -0.320000<=perr<=0.360000, 0.320000<=prob1<=0.360000; -0.320000<=perr<=0.360000, 0.360000<=prob1<=0.400000; -0.320000<=perr<=0.360000, 0.400000<=prob1<=0.440000; -0.320000<=perr<=0.360000, 0.440000<=prob1<=0.480000; -0.320000<=perr<=0.360000, 0.480000<=prob1<=0.520000; -0.320000<=perr<=0.360000, 0.520000<=prob1<=0.560000; -0.320000<=perr<=0.360000, 0.560000<=prob1<=0.600000; -0.320000<=perr<=0.360000, 0.600000<=prob1<=0.640000; -0.320000<=perr<=0.360000, 0.640000<=prob1<=0.680000; -0.320000<=perr<=0.360000, 0.680000<=prob1<=0.720000; -0.320000<=perr<=0.360000, 0.720000<=prob1<=0.760000; -0.320000<=perr<=0.360000, 0.760000<=prob1<=0.800000; -0.320000<=perr<=0.360000, 0.800000<=prob1<=0.840000; -0.320000<=perr<=0.360000, 0.840000<=prob1<=0.880000; -0.320000<=perr<=0.360000, 0.880000<=prob1<=0.920000; -0.320000<=perr<=0.360000, 0.920000<=prob1<=0.960000; -0.320000<=perr<=0.360000, 0.960000<=prob1<=0.999990; -0.360000<=perr<=0.400000, 0.000010<=prob1<=0.040000; -0.360000<=perr<=0.400000, 0.040000<=prob1<=0.080000; -0.360000<=perr<=0.400000, 0.080000<=prob1<=0.120000; -0.360000<=perr<=0.400000, 0.120000<=prob1<=0.160000; -0.360000<=perr<=0.400000, 0.160000<=prob1<=0.200000; -0.360000<=perr<=0.400000, 0.200000<=prob1<=0.240000; -0.360000<=perr<=0.400000, 0.240000<=prob1<=0.280000; -0.360000<=perr<=0.400000, 0.280000<=prob1<=0.320000; -0.360000<=perr<=0.400000, 0.320000<=prob1<=0.360000; -0.360000<=perr<=0.400000, 0.360000<=prob1<=0.400000; -0.360000<=perr<=0.400000, 0.400000<=prob1<=0.440000; -0.360000<=perr<=0.400000, 0.440000<=prob1<=0.480000; -0.360000<=perr<=0.400000, 0.480000<=prob1<=0.520000; -0.360000<=perr<=0.400000, 0.520000<=prob1<=0.560000; -0.360000<=perr<=0.400000, 0.560000<=prob1<=0.600000; -0.360000<=perr<=0.400000, 0.600000<=prob1<=0.640000; -0.360000<=perr<=0.400000, 0.640000<=prob1<=0.680000; -0.360000<=perr<=0.400000, 0.680000<=prob1<=0.720000; -0.360000<=perr<=0.400000, 0.720000<=prob1<=0.760000; -0.360000<=perr<=0.400000, 0.760000<=prob1<=0.800000; -0.360000<=perr<=0.400000, 0.800000<=prob1<=0.840000; -0.360000<=perr<=0.400000, 0.840000<=prob1<=0.880000; -0.360000<=perr<=0.400000, 0.880000<=prob1<=0.920000; -0.360000<=perr<=0.400000, 0.920000<=prob1<=0.960000; -0.360000<=perr<=0.400000, 0.960000<=prob1<=0.999990; -0.400000<=perr<=0.440000, 0.000010<=prob1<=0.040000; -0.400000<=perr<=0.440000, 0.040000<=prob1<=0.080000; -0.400000<=perr<=0.440000, 0.080000<=prob1<=0.120000; -0.400000<=perr<=0.440000, 0.120000<=prob1<=0.160000; -0.400000<=perr<=0.440000, 0.160000<=prob1<=0.200000; -0.400000<=perr<=0.440000, 0.200000<=prob1<=0.240000; -0.400000<=perr<=0.440000, 0.240000<=prob1<=0.280000; -0.400000<=perr<=0.440000, 0.280000<=prob1<=0.320000; -0.400000<=perr<=0.440000, 0.320000<=prob1<=0.360000; -0.400000<=perr<=0.440000, 0.360000<=prob1<=0.400000; -0.400000<=perr<=0.440000, 0.400000<=prob1<=0.440000; -0.400000<=perr<=0.440000, 0.440000<=prob1<=0.480000; -0.400000<=perr<=0.440000, 0.480000<=prob1<=0.520000; -0.400000<=perr<=0.440000, 0.520000<=prob1<=0.560000; -0.400000<=perr<=0.440000, 0.560000<=prob1<=0.600000; -0.400000<=perr<=0.440000, 0.600000<=prob1<=0.640000; -0.400000<=perr<=0.440000, 0.640000<=prob1<=0.680000; -0.400000<=perr<=0.440000, 0.680000<=prob1<=0.720000; -0.400000<=perr<=0.440000, 0.720000<=prob1<=0.760000; -0.400000<=perr<=0.440000, 0.760000<=prob1<=0.800000; -0.400000<=perr<=0.440000, 0.800000<=prob1<=0.840000; -0.400000<=perr<=0.440000, 0.840000<=prob1<=0.880000; -0.400000<=perr<=0.440000, 0.880000<=prob1<=0.920000; -0.400000<=perr<=0.440000, 0.920000<=prob1<=0.960000; -0.400000<=perr<=0.440000, 0.960000<=prob1<=0.999990; -0.440000<=perr<=0.480000, 0.000010<=prob1<=0.040000; -0.440000<=perr<=0.480000, 0.040000<=prob1<=0.080000; -0.440000<=perr<=0.480000, 0.080000<=prob1<=0.120000; -0.440000<=perr<=0.480000, 0.120000<=prob1<=0.160000; -0.440000<=perr<=0.480000, 0.160000<=prob1<=0.200000; -0.440000<=perr<=0.480000, 0.200000<=prob1<=0.240000; -0.440000<=perr<=0.480000, 0.240000<=prob1<=0.280000; -0.440000<=perr<=0.480000, 0.280000<=prob1<=0.320000; -0.440000<=perr<=0.480000, 0.320000<=prob1<=0.360000; -0.440000<=perr<=0.480000, 0.360000<=prob1<=0.400000; -0.440000<=perr<=0.480000, 0.400000<=prob1<=0.440000; -0.440000<=perr<=0.480000, 0.440000<=prob1<=0.480000; -0.440000<=perr<=0.480000, 0.480000<=prob1<=0.520000; -0.440000<=perr<=0.480000, 0.520000<=prob1<=0.560000; -0.440000<=perr<=0.480000, 0.560000<=prob1<=0.600000; -0.440000<=perr<=0.480000, 0.600000<=prob1<=0.640000; -0.440000<=perr<=0.480000, 0.640000<=prob1<=0.680000; -0.440000<=perr<=0.480000, 0.680000<=prob1<=0.720000; -0.440000<=perr<=0.480000, 0.720000<=prob1<=0.760000; -0.440000<=perr<=0.480000, 0.760000<=prob1<=0.800000; -0.440000<=perr<=0.480000, 0.800000<=prob1<=0.840000; -0.440000<=perr<=0.480000, 0.840000<=prob1<=0.880000; -0.440000<=perr<=0.480000, 0.880000<=prob1<=0.920000; -0.440000<=perr<=0.480000, 0.920000<=prob1<=0.960000; -0.440000<=perr<=0.480000, 0.960000<=prob1<=0.999990; -0.480000<=perr<=0.520000, 0.000010<=prob1<=0.040000; -0.480000<=perr<=0.520000, 0.040000<=prob1<=0.080000; -0.480000<=perr<=0.520000, 0.080000<=prob1<=0.120000; -0.480000<=perr<=0.520000, 0.120000<=prob1<=0.160000; -0.480000<=perr<=0.520000, 0.160000<=prob1<=0.200000; -0.480000<=perr<=0.520000, 0.200000<=prob1<=0.240000; -0.480000<=perr<=0.520000, 0.240000<=prob1<=0.280000; -0.480000<=perr<=0.520000, 0.280000<=prob1<=0.320000; -0.480000<=perr<=0.520000, 0.320000<=prob1<=0.360000; -0.480000<=perr<=0.520000, 0.360000<=prob1<=0.400000; -0.480000<=perr<=0.520000, 0.400000<=prob1<=0.440000; -0.480000<=perr<=0.520000, 0.440000<=prob1<=0.480000; -0.480000<=perr<=0.520000, 0.480000<=prob1<=0.520000; -0.480000<=perr<=0.520000, 0.520000<=prob1<=0.560000; -0.480000<=perr<=0.520000, 0.560000<=prob1<=0.600000; -0.480000<=perr<=0.520000, 0.600000<=prob1<=0.640000; -0.480000<=perr<=0.520000, 0.640000<=prob1<=0.680000; -0.480000<=perr<=0.520000, 0.680000<=prob1<=0.720000; -0.480000<=perr<=0.520000, 0.720000<=prob1<=0.760000; -0.480000<=perr<=0.520000, 0.760000<=prob1<=0.800000; -0.480000<=perr<=0.520000, 0.800000<=prob1<=0.840000; -0.480000<=perr<=0.520000, 0.840000<=prob1<=0.880000; -0.480000<=perr<=0.520000, 0.880000<=prob1<=0.920000; -0.480000<=perr<=0.520000, 0.920000<=prob1<=0.960000; -0.480000<=perr<=0.520000, 0.960000<=prob1<=0.999990; -0.520000<=perr<=0.560000, 0.000010<=prob1<=0.040000; -0.520000<=perr<=0.560000, 0.040000<=prob1<=0.080000; -0.520000<=perr<=0.560000, 0.080000<=prob1<=0.120000; -0.520000<=perr<=0.560000, 0.120000<=prob1<=0.160000; -0.520000<=perr<=0.560000, 0.160000<=prob1<=0.200000; -0.520000<=perr<=0.560000, 0.200000<=prob1<=0.240000; -0.520000<=perr<=0.560000, 0.240000<=prob1<=0.280000; -0.520000<=perr<=0.560000, 0.280000<=prob1<=0.320000; -0.520000<=perr<=0.560000, 0.320000<=prob1<=0.360000; -0.520000<=perr<=0.560000, 0.360000<=prob1<=0.400000; -0.520000<=perr<=0.560000, 0.400000<=prob1<=0.440000; -0.520000<=perr<=0.560000, 0.440000<=prob1<=0.480000; -0.520000<=perr<=0.560000, 0.480000<=prob1<=0.520000; -0.520000<=perr<=0.560000, 0.520000<=prob1<=0.560000; -0.520000<=perr<=0.560000, 0.560000<=prob1<=0.600000; -0.520000<=perr<=0.560000, 0.600000<=prob1<=0.640000; -0.520000<=perr<=0.560000, 0.640000<=prob1<=0.680000; -0.520000<=perr<=0.560000, 0.680000<=prob1<=0.720000; -0.520000<=perr<=0.560000, 0.720000<=prob1<=0.760000; -0.520000<=perr<=0.560000, 0.760000<=prob1<=0.800000; -0.520000<=perr<=0.560000, 0.800000<=prob1<=0.840000; -0.520000<=perr<=0.560000, 0.840000<=prob1<=0.880000; -0.520000<=perr<=0.560000, 0.880000<=prob1<=0.920000; -0.520000<=perr<=0.560000, 0.920000<=prob1<=0.960000; -0.520000<=perr<=0.560000, 0.960000<=prob1<=0.999990; -0.560000<=perr<=0.600000, 0.000010<=prob1<=0.040000; -0.560000<=perr<=0.600000, 0.040000<=prob1<=0.080000; -0.560000<=perr<=0.600000, 0.080000<=prob1<=0.120000; -0.560000<=perr<=0.600000, 0.120000<=prob1<=0.160000; -0.560000<=perr<=0.600000, 0.160000<=prob1<=0.200000; -0.560000<=perr<=0.600000, 0.200000<=prob1<=0.240000; -0.560000<=perr<=0.600000, 0.240000<=prob1<=0.280000; -0.560000<=perr<=0.600000, 0.280000<=prob1<=0.320000; -0.560000<=perr<=0.600000, 0.320000<=prob1<=0.360000; -0.560000<=perr<=0.600000, 0.360000<=prob1<=0.400000; -0.560000<=perr<=0.600000, 0.400000<=prob1<=0.440000; -0.560000<=perr<=0.600000, 0.440000<=prob1<=0.480000; -0.560000<=perr<=0.600000, 0.480000<=prob1<=0.520000; -0.560000<=perr<=0.600000, 0.520000<=prob1<=0.560000; -0.560000<=perr<=0.600000, 0.560000<=prob1<=0.600000; -0.560000<=perr<=0.600000, 0.600000<=prob1<=0.640000; -0.560000<=perr<=0.600000, 0.640000<=prob1<=0.680000; -0.560000<=perr<=0.600000, 0.680000<=prob1<=0.720000; -0.560000<=perr<=0.600000, 0.720000<=prob1<=0.760000; -0.560000<=perr<=0.600000, 0.760000<=prob1<=0.800000; -0.560000<=perr<=0.600000, 0.800000<=prob1<=0.840000; -0.560000<=perr<=0.600000, 0.840000<=prob1<=0.880000; -0.560000<=perr<=0.600000, 0.880000<=prob1<=0.920000; -0.560000<=perr<=0.600000, 0.920000<=prob1<=0.960000; -0.560000<=perr<=0.600000, 0.960000<=prob1<=0.999990; -0.600000<=perr<=0.640000, 0.000010<=prob1<=0.040000; -0.600000<=perr<=0.640000, 0.040000<=prob1<=0.080000; -0.600000<=perr<=0.640000, 0.080000<=prob1<=0.120000; -0.600000<=perr<=0.640000, 0.120000<=prob1<=0.160000; -0.600000<=perr<=0.640000, 0.160000<=prob1<=0.200000; -0.600000<=perr<=0.640000, 0.200000<=prob1<=0.240000; -0.600000<=perr<=0.640000, 0.240000<=prob1<=0.280000; -0.600000<=perr<=0.640000, 0.280000<=prob1<=0.320000; -0.600000<=perr<=0.640000, 0.320000<=prob1<=0.360000; -0.600000<=perr<=0.640000, 0.360000<=prob1<=0.400000; -0.600000<=perr<=0.640000, 0.400000<=prob1<=0.440000; -0.600000<=perr<=0.640000, 0.440000<=prob1<=0.480000; -0.600000<=perr<=0.640000, 0.480000<=prob1<=0.520000; -0.600000<=perr<=0.640000, 0.520000<=prob1<=0.560000; -0.600000<=perr<=0.640000, 0.560000<=prob1<=0.600000; -0.600000<=perr<=0.640000, 0.600000<=prob1<=0.640000; -0.600000<=perr<=0.640000, 0.640000<=prob1<=0.680000; -0.600000<=perr<=0.640000, 0.680000<=prob1<=0.720000; -0.600000<=perr<=0.640000, 0.720000<=prob1<=0.760000; -0.600000<=perr<=0.640000, 0.760000<=prob1<=0.800000; -0.600000<=perr<=0.640000, 0.800000<=prob1<=0.840000; -0.600000<=perr<=0.640000, 0.840000<=prob1<=0.880000; -0.600000<=perr<=0.640000, 0.880000<=prob1<=0.920000; -0.600000<=perr<=0.640000, 0.920000<=prob1<=0.960000; -0.600000<=perr<=0.640000, 0.960000<=prob1<=0.999990; -0.640000<=perr<=0.680000, 0.000010<=prob1<=0.040000; -0.640000<=perr<=0.680000, 0.040000<=prob1<=0.080000; -0.640000<=perr<=0.680000, 0.080000<=prob1<=0.120000; -0.640000<=perr<=0.680000, 0.120000<=prob1<=0.160000; -0.640000<=perr<=0.680000, 0.160000<=prob1<=0.200000; -0.640000<=perr<=0.680000, 0.200000<=prob1<=0.240000; -0.640000<=perr<=0.680000, 0.240000<=prob1<=0.280000; -0.640000<=perr<=0.680000, 0.280000<=prob1<=0.320000; -0.640000<=perr<=0.680000, 0.320000<=prob1<=0.360000; -0.640000<=perr<=0.680000, 0.360000<=prob1<=0.400000; -0.640000<=perr<=0.680000, 0.400000<=prob1<=0.440000; -0.640000<=perr<=0.680000, 0.440000<=prob1<=0.480000; -0.640000<=perr<=0.680000, 0.480000<=prob1<=0.520000; -0.640000<=perr<=0.680000, 0.520000<=prob1<=0.560000; -0.640000<=perr<=0.680000, 0.560000<=prob1<=0.600000; -0.640000<=perr<=0.680000, 0.600000<=prob1<=0.640000; -0.640000<=perr<=0.680000, 0.640000<=prob1<=0.680000; -0.640000<=perr<=0.680000, 0.680000<=prob1<=0.720000; -0.640000<=perr<=0.680000, 0.720000<=prob1<=0.760000; -0.640000<=perr<=0.680000, 0.760000<=prob1<=0.800000; -0.640000<=perr<=0.680000, 0.800000<=prob1<=0.840000; -0.640000<=perr<=0.680000, 0.840000<=prob1<=0.880000; -0.640000<=perr<=0.680000, 0.880000<=prob1<=0.920000; -0.640000<=perr<=0.680000, 0.920000<=prob1<=0.960000; -0.640000<=perr<=0.680000, 0.960000<=prob1<=0.999990; -0.680000<=perr<=0.720000, 0.000010<=prob1<=0.040000; -0.680000<=perr<=0.720000, 0.040000<=prob1<=0.080000; -0.680000<=perr<=0.720000, 0.080000<=prob1<=0.120000; -0.680000<=perr<=0.720000, 0.120000<=prob1<=0.160000; -0.680000<=perr<=0.720000, 0.160000<=prob1<=0.200000; -0.680000<=perr<=0.720000, 0.200000<=prob1<=0.240000; -0.680000<=perr<=0.720000, 0.240000<=prob1<=0.280000; -0.680000<=perr<=0.720000, 0.280000<=prob1<=0.320000; -0.680000<=perr<=0.720000, 0.320000<=prob1<=0.360000; -0.680000<=perr<=0.720000, 0.360000<=prob1<=0.400000; -0.680000<=perr<=0.720000, 0.400000<=prob1<=0.440000; -0.680000<=perr<=0.720000, 0.440000<=prob1<=0.480000; -0.680000<=perr<=0.720000, 0.480000<=prob1<=0.520000; -0.680000<=perr<=0.720000, 0.520000<=prob1<=0.560000; -0.680000<=perr<=0.720000, 0.560000<=prob1<=0.600000; -0.680000<=perr<=0.720000, 0.600000<=prob1<=0.640000; -0.680000<=perr<=0.720000, 0.640000<=prob1<=0.680000; -0.680000<=perr<=0.720000, 0.680000<=prob1<=0.720000; -0.680000<=perr<=0.720000, 0.720000<=prob1<=0.760000; -0.680000<=perr<=0.720000, 0.760000<=prob1<=0.800000; -0.680000<=perr<=0.720000, 0.800000<=prob1<=0.840000; -0.680000<=perr<=0.720000, 0.840000<=prob1<=0.880000; -0.680000<=perr<=0.720000, 0.880000<=prob1<=0.920000; -0.680000<=perr<=0.720000, 0.920000<=prob1<=0.960000; -0.680000<=perr<=0.720000, 0.960000<=prob1<=0.999990; -0.720000<=perr<=0.760000, 0.000010<=prob1<=0.040000; -0.720000<=perr<=0.760000, 0.040000<=prob1<=0.080000; -0.720000<=perr<=0.760000, 0.080000<=prob1<=0.120000; -0.720000<=perr<=0.760000, 0.120000<=prob1<=0.160000; -0.720000<=perr<=0.760000, 0.160000<=prob1<=0.200000; -0.720000<=perr<=0.760000, 0.200000<=prob1<=0.240000; -0.720000<=perr<=0.760000, 0.240000<=prob1<=0.280000; -0.720000<=perr<=0.760000, 0.280000<=prob1<=0.320000; -0.720000<=perr<=0.760000, 0.320000<=prob1<=0.360000; -0.720000<=perr<=0.760000, 0.360000<=prob1<=0.400000; -0.720000<=perr<=0.760000, 0.400000<=prob1<=0.440000; -0.720000<=perr<=0.760000, 0.440000<=prob1<=0.480000; -0.720000<=perr<=0.760000, 0.480000<=prob1<=0.520000; -0.720000<=perr<=0.760000, 0.520000<=prob1<=0.560000; -0.720000<=perr<=0.760000, 0.560000<=prob1<=0.600000; -0.720000<=perr<=0.760000, 0.600000<=prob1<=0.640000; -0.720000<=perr<=0.760000, 0.640000<=prob1<=0.680000; -0.720000<=perr<=0.760000, 0.680000<=prob1<=0.720000; -0.720000<=perr<=0.760000, 0.720000<=prob1<=0.760000; -0.720000<=perr<=0.760000, 0.760000<=prob1<=0.800000; -0.720000<=perr<=0.760000, 0.800000<=prob1<=0.840000; -0.720000<=perr<=0.760000, 0.840000<=prob1<=0.880000; -0.720000<=perr<=0.760000, 0.880000<=prob1<=0.920000; -0.720000<=perr<=0.760000, 0.920000<=prob1<=0.960000; -0.720000<=perr<=0.760000, 0.960000<=prob1<=0.999990; -0.760000<=perr<=0.800000, 0.000010<=prob1<=0.040000; -0.760000<=perr<=0.800000, 0.040000<=prob1<=0.080000; -0.760000<=perr<=0.800000, 0.080000<=prob1<=0.120000; -0.760000<=perr<=0.800000, 0.120000<=prob1<=0.160000; -0.760000<=perr<=0.800000, 0.160000<=prob1<=0.200000; -0.760000<=perr<=0.800000, 0.200000<=prob1<=0.240000; -0.760000<=perr<=0.800000, 0.240000<=prob1<=0.280000; -0.760000<=perr<=0.800000, 0.280000<=prob1<=0.320000; -0.760000<=perr<=0.800000, 0.320000<=prob1<=0.360000; -0.760000<=perr<=0.800000, 0.360000<=prob1<=0.400000; -0.760000<=perr<=0.800000, 0.400000<=prob1<=0.440000; -0.760000<=perr<=0.800000, 0.440000<=prob1<=0.480000; -0.760000<=perr<=0.800000, 0.480000<=prob1<=0.520000; -0.760000<=perr<=0.800000, 0.520000<=prob1<=0.560000; -0.760000<=perr<=0.800000, 0.560000<=prob1<=0.600000; -0.760000<=perr<=0.800000, 0.600000<=prob1<=0.640000; -0.760000<=perr<=0.800000, 0.640000<=prob1<=0.680000; -0.760000<=perr<=0.800000, 0.680000<=prob1<=0.720000; -0.760000<=perr<=0.800000, 0.720000<=prob1<=0.760000; -0.760000<=perr<=0.800000, 0.760000<=prob1<=0.800000; -0.760000<=perr<=0.800000, 0.800000<=prob1<=0.840000; -0.760000<=perr<=0.800000, 0.840000<=prob1<=0.880000; -0.760000<=perr<=0.800000, 0.880000<=prob1<=0.920000; -0.760000<=perr<=0.800000, 0.920000<=prob1<=0.960000; -0.760000<=perr<=0.800000, 0.960000<=prob1<=0.999990; -0.800000<=perr<=0.840000, 0.000010<=prob1<=0.040000; -0.800000<=perr<=0.840000, 0.040000<=prob1<=0.080000; -0.800000<=perr<=0.840000, 0.080000<=prob1<=0.120000; -0.800000<=perr<=0.840000, 0.120000<=prob1<=0.160000; -0.800000<=perr<=0.840000, 0.160000<=prob1<=0.200000; -0.800000<=perr<=0.840000, 0.200000<=prob1<=0.240000; -0.800000<=perr<=0.840000, 0.240000<=prob1<=0.280000; -0.800000<=perr<=0.840000, 0.280000<=prob1<=0.320000; -0.800000<=perr<=0.840000, 0.320000<=prob1<=0.360000; -0.800000<=perr<=0.840000, 0.360000<=prob1<=0.400000; -0.800000<=perr<=0.840000, 0.400000<=prob1<=0.440000; -0.800000<=perr<=0.840000, 0.440000<=prob1<=0.480000; -0.800000<=perr<=0.840000, 0.480000<=prob1<=0.520000; -0.800000<=perr<=0.840000, 0.520000<=prob1<=0.560000; -0.800000<=perr<=0.840000, 0.560000<=prob1<=0.600000; -0.800000<=perr<=0.840000, 0.600000<=prob1<=0.640000; -0.800000<=perr<=0.840000, 0.640000<=prob1<=0.680000; -0.800000<=perr<=0.840000, 0.680000<=prob1<=0.720000; -0.800000<=perr<=0.840000, 0.720000<=prob1<=0.760000; -0.800000<=perr<=0.840000, 0.760000<=prob1<=0.800000; -0.800000<=perr<=0.840000, 0.800000<=prob1<=0.840000; -0.800000<=perr<=0.840000, 0.840000<=prob1<=0.880000; -0.800000<=perr<=0.840000, 0.880000<=prob1<=0.920000; -0.800000<=perr<=0.840000, 0.920000<=prob1<=0.960000; -0.800000<=perr<=0.840000, 0.960000<=prob1<=0.999990; -0.840000<=perr<=0.880000, 0.000010<=prob1<=0.040000; -0.840000<=perr<=0.880000, 0.040000<=prob1<=0.080000; -0.840000<=perr<=0.880000, 0.080000<=prob1<=0.120000; -0.840000<=perr<=0.880000, 0.120000<=prob1<=0.160000; -0.840000<=perr<=0.880000, 0.160000<=prob1<=0.200000; -0.840000<=perr<=0.880000, 0.200000<=prob1<=0.240000; -0.840000<=perr<=0.880000, 0.240000<=prob1<=0.280000; -0.840000<=perr<=0.880000, 0.280000<=prob1<=0.320000; -0.840000<=perr<=0.880000, 0.320000<=prob1<=0.360000; -0.840000<=perr<=0.880000, 0.360000<=prob1<=0.400000; -0.840000<=perr<=0.880000, 0.400000<=prob1<=0.440000; -0.840000<=perr<=0.880000, 0.440000<=prob1<=0.480000; -0.840000<=perr<=0.880000, 0.480000<=prob1<=0.520000; -0.840000<=perr<=0.880000, 0.520000<=prob1<=0.560000; -0.840000<=perr<=0.880000, 0.560000<=prob1<=0.600000; -0.840000<=perr<=0.880000, 0.600000<=prob1<=0.640000; -0.840000<=perr<=0.880000, 0.640000<=prob1<=0.680000; -0.840000<=perr<=0.880000, 0.680000<=prob1<=0.720000; -0.840000<=perr<=0.880000, 0.720000<=prob1<=0.760000; -0.840000<=perr<=0.880000, 0.760000<=prob1<=0.800000; -0.840000<=perr<=0.880000, 0.800000<=prob1<=0.840000; -0.840000<=perr<=0.880000, 0.840000<=prob1<=0.880000; -0.840000<=perr<=0.880000, 0.880000<=prob1<=0.920000; -0.840000<=perr<=0.880000, 0.920000<=prob1<=0.960000; -0.840000<=perr<=0.880000, 0.960000<=prob1<=0.999990; -0.880000<=perr<=0.920000, 0.000010<=prob1<=0.040000; -0.880000<=perr<=0.920000, 0.040000<=prob1<=0.080000; -0.880000<=perr<=0.920000, 0.080000<=prob1<=0.120000; -0.880000<=perr<=0.920000, 0.120000<=prob1<=0.160000; -0.880000<=perr<=0.920000, 0.160000<=prob1<=0.200000; -0.880000<=perr<=0.920000, 0.200000<=prob1<=0.240000; -0.880000<=perr<=0.920000, 0.240000<=prob1<=0.280000; -0.880000<=perr<=0.920000, 0.280000<=prob1<=0.320000; -0.880000<=perr<=0.920000, 0.320000<=prob1<=0.360000; -0.880000<=perr<=0.920000, 0.360000<=prob1<=0.400000; -0.880000<=perr<=0.920000, 0.400000<=prob1<=0.440000; -0.880000<=perr<=0.920000, 0.440000<=prob1<=0.480000; -0.880000<=perr<=0.920000, 0.480000<=prob1<=0.520000; -0.880000<=perr<=0.920000, 0.520000<=prob1<=0.560000; -0.880000<=perr<=0.920000, 0.560000<=prob1<=0.600000; -0.880000<=perr<=0.920000, 0.600000<=prob1<=0.640000; -0.880000<=perr<=0.920000, 0.640000<=prob1<=0.680000; -0.880000<=perr<=0.920000, 0.680000<=prob1<=0.720000; -0.880000<=perr<=0.920000, 0.720000<=prob1<=0.760000; -0.880000<=perr<=0.920000, 0.760000<=prob1<=0.800000; -0.880000<=perr<=0.920000, 0.800000<=prob1<=0.840000; -0.880000<=perr<=0.920000, 0.840000<=prob1<=0.880000; -0.880000<=perr<=0.920000, 0.880000<=prob1<=0.920000; -0.880000<=perr<=0.920000, 0.920000<=prob1<=0.960000; -0.880000<=perr<=0.920000, 0.960000<=prob1<=0.999990; -0.920000<=perr<=0.960000, 0.000010<=prob1<=0.040000; -0.920000<=perr<=0.960000, 0.040000<=prob1<=0.080000; -0.920000<=perr<=0.960000, 0.080000<=prob1<=0.120000; -0.920000<=perr<=0.960000, 0.120000<=prob1<=0.160000; -0.920000<=perr<=0.960000, 0.160000<=prob1<=0.200000; -0.920000<=perr<=0.960000, 0.200000<=prob1<=0.240000; -0.920000<=perr<=0.960000, 0.240000<=prob1<=0.280000; -0.920000<=perr<=0.960000, 0.280000<=prob1<=0.320000; -0.920000<=perr<=0.960000, 0.320000<=prob1<=0.360000; -0.920000<=perr<=0.960000, 0.360000<=prob1<=0.400000; -0.920000<=perr<=0.960000, 0.400000<=prob1<=0.440000; -0.920000<=perr<=0.960000, 0.440000<=prob1<=0.480000; -0.920000<=perr<=0.960000, 0.480000<=prob1<=0.520000; -0.920000<=perr<=0.960000, 0.520000<=prob1<=0.560000; -0.920000<=perr<=0.960000, 0.560000<=prob1<=0.600000; -0.920000<=perr<=0.960000, 0.600000<=prob1<=0.640000; -0.920000<=perr<=0.960000, 0.640000<=prob1<=0.680000; -0.920000<=perr<=0.960000, 0.680000<=prob1<=0.720000; -0.920000<=perr<=0.960000, 0.720000<=prob1<=0.760000; -0.920000<=perr<=0.960000, 0.760000<=prob1<=0.800000; -0.920000<=perr<=0.960000, 0.800000<=prob1<=0.840000; -0.920000<=perr<=0.960000, 0.840000<=prob1<=0.880000; -0.920000<=perr<=0.960000, 0.880000<=prob1<=0.920000; -0.920000<=perr<=0.960000, 0.920000<=prob1<=0.960000; -0.920000<=perr<=0.960000, 0.960000<=prob1<=0.999990; -0.960000<=perr<=0.999990, 0.000010<=prob1<=0.040000; -0.960000<=perr<=0.999990, 0.040000<=prob1<=0.080000; -0.960000<=perr<=0.999990, 0.080000<=prob1<=0.120000; -0.960000<=perr<=0.999990, 0.120000<=prob1<=0.160000; -0.960000<=perr<=0.999990, 0.160000<=prob1<=0.200000; -0.960000<=perr<=0.999990, 0.200000<=prob1<=0.240000; -0.960000<=perr<=0.999990, 0.240000<=prob1<=0.280000; -0.960000<=perr<=0.999990, 0.280000<=prob1<=0.320000; -0.960000<=perr<=0.999990, 0.320000<=prob1<=0.360000; -0.960000<=perr<=0.999990, 0.360000<=prob1<=0.400000; -0.960000<=perr<=0.999990, 0.400000<=prob1<=0.440000; -0.960000<=perr<=0.999990, 0.440000<=prob1<=0.480000; -0.960000<=perr<=0.999990, 0.480000<=prob1<=0.520000; -0.960000<=perr<=0.999990, 0.520000<=prob1<=0.560000; -0.960000<=perr<=0.999990, 0.560000<=prob1<=0.600000; -0.960000<=perr<=0.999990, 0.600000<=prob1<=0.640000; -0.960000<=perr<=0.999990, 0.640000<=prob1<=0.680000; -0.960000<=perr<=0.999990, 0.680000<=prob1<=0.720000; -0.960000<=perr<=0.999990, 0.720000<=prob1<=0.760000; -0.960000<=perr<=0.999990, 0.760000<=prob1<=0.800000; -0.960000<=perr<=0.999990, 0.800000<=prob1<=0.840000; -0.960000<=perr<=0.999990, 0.840000<=prob1<=0.880000; -0.960000<=perr<=0.999990, 0.880000<=prob1<=0.920000; -0.960000<=perr<=0.999990, 0.920000<=prob1<=0.960000; -0.960000<=perr<=0.999990, 0.960000<=prob1<=0.999990; diff --git a/examples/pdtmc/nand/nand_space.txt b/examples/pdtmc/nand/nand_space.txt deleted file mode 100644 index fcd54b798..000000000 --- a/examples/pdtmc/nand/nand_space.txt +++ /dev/null @@ -1,2 +0,0 @@ -0.000010<=perr<=0.999990, 0.000010<=prob1<=0.999990; - diff --git a/examples/pdtmc/twodie.pm b/examples/pdtmc/twodie.pm deleted file mode 100644 index d38f75496..000000000 --- a/examples/pdtmc/twodie.pm +++ /dev/null @@ -1,44 +0,0 @@ -// Knuth's model of a fair die using only fair coins -dtmc - -const double p; -const double q; - -module die1 - - // local state - s1 : [0..7] init 0; - // value of the dice - d1 : [0..6] init 0; - - [] s1=0 -> p : (s1'=1) + 1-p : (s1'=2); - [] s1=1 -> q : (s1'=3) + 1-q : (s1'=4); - [] s1=2 -> q : (s1'=5) + 1-q : (s1'=6); - [] s1=3 -> p : (s1'=1) + 1-p : (s1'=7) & (d1'=1); - [] s1=4 -> p : (s1'=7) & (d1'=3) + 1-p : (s1'=7) & (d1'=2); - [] s1=5 -> p : (s1'=2) + 1-p : (s1'=7) & (d1'=4); - [] s1=6 -> p : (s1'=7) & (d1'=6) + 1-p : (s1'=7) & (d1'=5); - [] s1=7 -> 1: (s1'=7); - -endmodule - -module die2 = die1 [ s1=s2, s2=s1, d1=d2 ] endmodule - -rewards "coin_flips" - [] s1<7 | s2<7 : 1; -endrewards - -label "two" = s1=7 & s2=7 & d1+d2=2; -label "three" = s1=7 & s2=7 & d1+d2=3; -label "four" = s1=7 & s2=7 & d1+d2=4; -label "five" = s1=7 & s2=7 & d1+d2=5; -label "six" = s1=7 & s2=7 & d1+d2=6; -label "seven" = s1=7 & s2=7 & d1+d2=7; -label "eight" = s1=7 & s2=7 & d1+d2=8; -label "nine" = s1=7 & s2=7 & d1+d2=9; -label "ten" = s1=7 & s2=7 & d1+d2=10; -label "eleven" = s1=7 & s2=7 & d1+d2=11; -label "twelve" = s1=7 & s2=7 & d1+d2=12; -label "same" = s1=7 & s2=7 & d1=d2; - -label "end" = s1=7 & s2=7; diff --git a/examples/pmdp/brp/brp.pm b/examples/pmdp/brp/brp.pm deleted file mode 100644 index 0d76e95aa..000000000 --- a/examples/pmdp/brp/brp.pm +++ /dev/null @@ -1,141 +0,0 @@ -// bounded retransmission protocol [D'AJJL01] -// gxn/dxp 23/05/2001 -// Modified by Ernst Moritz Hahn (emh@cs.uni-sb.de) - -mdp -//dtmc - -// number of chunks -const int N; -// maximum number of retransmissions -const int MAX; - -// reliability of channels -const double pL; -const double pK; - -module sender - - 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; - - // 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); - // wait_ack - [aB] (s=2) -> (s'=4) & (s_ab'=!s_ab); - [TO_Msg] (s=2) -> (s'=3); - [TO_Ack] (s=2) -> (s'=3); - // retransmit - [aF] (s=3) & (nrtr (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1); - [] (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 - - T : bool init false; - - [NewFile] (T=false) -> (T'=false); - [NewFile] (T=false) -> (T'=true); - -endmodule - -module channelK - - k : [0..2]; - - // idle - [aF] (k=0) -> pK : (k'=1) + 1-pK : (k'=2); - // sending - [aG] (k=1) -> (k'=0); - // lost - [TO_Msg] (k=2) -> (k'=0); - -endmodule - -module channelL - - l : [0..2]; - - // idle - [aA] (l=0) -> pL : (l'=1) + 1-pL : (l'=2); - // sending - [aB] (l=1) -> (l'=0); - // lost - [TO_Ack] (l=2) -> (l'=0); - -endmodule - -label "error" = s=5; -label "fatal" = s=5 & T; - diff --git a/examples/pmdp/brp/brp.prctl b/examples/pmdp/brp/brp.prctl deleted file mode 100644 index 7278b1e7f..000000000 --- a/examples/pmdp/brp/brp.prctl +++ /dev/null @@ -1,2 +0,0 @@ -P<0.5 [ F (s=5 & T) ] - diff --git a/examples/pmdp/brp/brp16_2.pm b/examples/pmdp/brp/brp16_2.pm deleted file mode 100644 index 2141803ae..000000000 --- a/examples/pmdp/brp/brp16_2.pm +++ /dev/null @@ -1,139 +0,0 @@ -// bounded retransmission protocol [D'AJJL01] -// gxn/dxp 23/05/2001 -// Modified by Ernst Moritz Hahn (emh@cs.uni-sb.de) - -mdp -//dtmc - -// number of chunks -const int N = 16; -// maximum number of retransmissions -const int MAX = 2; - -// reliability of channels -const double pL; -const double pK; - -global T : bool; - -module sender - - 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; - - // 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); - // wait_ack - [aB] (s=2) -> (s'=4) & (s_ab'=!s_ab); - [TO_Msg] (s=2) -> (s'=3); - [TO_Ack] (s=2) -> (s'=3); - // retransmit - [aF] (s=3) & (nrtr (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1); - [] (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 - - [NewFile] (T=false) -> (T'=false); - [NewFile] (T=false) -> (T'=true); - -endmodule - -module channelK - - k : [0..2]; - - // idle - [aF] (k=0) -> pK : (k'=1) + 1-pK : (k'=2); - // sending - [aG] (k=1) -> (k'=0); - // lost - [TO_Msg] (k=2) -> (k'=0); - -endmodule - -module channelL - - l : [0..2]; - - // idle - [aA] (l=0) -> pL : (l'=1) + 1-pL : (l'=2); - // sending - [aB] (l=1) -> (l'=0); - // lost - [TO_Ack] (l=2) -> (l'=0); - -endmodule - - diff --git a/examples/pmdp/brp/brp256_5.pm b/examples/pmdp/brp/brp256_5.pm deleted file mode 100644 index dd98aee83..000000000 --- a/examples/pmdp/brp/brp256_5.pm +++ /dev/null @@ -1,139 +0,0 @@ -// bounded retransmission protocol [D'AJJL01] -// gxn/dxp 23/05/2001 -// Modified by Ernst Moritz Hahn (emh@cs.uni-sb.de) - -mdp -//dtmc - -// number of chunks -const int N = 256; -// maximum number of retransmissions -const int MAX = 5; - -// reliability of channels -const double pL; -const double pK; - -global T : bool; - -module sender - - 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; - - // 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); - // wait_ack - [aB] (s=2) -> (s'=4) & (s_ab'=!s_ab); - [TO_Msg] (s=2) -> (s'=3); - [TO_Ack] (s=2) -> (s'=3); - // retransmit - [aF] (s=3) & (nrtr (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1); - [] (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 - - [NewFile] (T=false) -> (T'=false); - [NewFile] (T=false) -> (T'=true); - -endmodule - -module channelK - - k : [0..2]; - - // idle - [aF] (k=0) -> pK : (k'=1) + 1-pK : (k'=2); - // sending - [aG] (k=1) -> (k'=0); - // lost - [TO_Msg] (k=2) -> (k'=0); - -endmodule - -module channelL - - l : [0..2]; - - // idle - [aA] (l=0) -> pL : (l'=1) + 1-pL : (l'=2); - // sending - [aB] (l=1) -> (l'=0); - // lost - [TO_Ack] (l=2) -> (l'=0); - -endmodule - - diff --git a/examples/pmdp/brp/brp512_5.pm b/examples/pmdp/brp/brp512_5.pm deleted file mode 100644 index 63beec6d5..000000000 --- a/examples/pmdp/brp/brp512_5.pm +++ /dev/null @@ -1,139 +0,0 @@ -// bounded retransmission protocol [D'AJJL01] -// gxn/dxp 23/05/2001 -// Modified by Ernst Moritz Hahn (emh@cs.uni-sb.de) - -mdp -//dtmc - -// number of chunks -const int N = 512; -// maximum number of retransmissions -const int MAX = 5; - -// reliability of channels -const double pL; -const double pK; - -global T : bool; - -module sender - - 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; - - // 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); - // wait_ack - [aB] (s=2) -> (s'=4) & (s_ab'=!s_ab); - [TO_Msg] (s=2) -> (s'=3); - [TO_Ack] (s=2) -> (s'=3); - // retransmit - [aF] (s=3) & (nrtr (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1); - [] (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 - - [NewFile] (T=false) -> (T'=false); - [NewFile] (T=false) -> (T'=true); - -endmodule - -module channelK - - k : [0..2]; - - // idle - [aF] (k=0) -> pK : (k'=1) + 1-pK : (k'=2); - // sending - [aG] (k=1) -> (k'=0); - // lost - [TO_Msg] (k=2) -> (k'=0); - -endmodule - -module channelL - - l : [0..2]; - - // idle - [aA] (l=0) -> pL : (l'=1) + 1-pL : (l'=2); - // sending - [aB] (l=1) -> (l'=0); - // lost - [TO_Ack] (l=2) -> (l'=0); - -endmodule - - diff --git a/examples/pmdp/brp/brp64_4.pm b/examples/pmdp/brp/brp64_4.pm deleted file mode 100644 index e75829359..000000000 --- a/examples/pmdp/brp/brp64_4.pm +++ /dev/null @@ -1,139 +0,0 @@ -// bounded retransmission protocol [D'AJJL01] -// gxn/dxp 23/05/2001 -// Modified by Ernst Moritz Hahn (emh@cs.uni-sb.de) - -mdp -//dtmc - -// number of chunks -const int N = 64; -// maximum number of retransmissions -const int MAX = 4; - -// reliability of channels -const double pL; -const double pK; - -global T : bool; - -module sender - - 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; - - // 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); - // wait_ack - [aB] (s=2) -> (s'=4) & (s_ab'=!s_ab); - [TO_Msg] (s=2) -> (s'=3); - [TO_Ack] (s=2) -> (s'=3); - // retransmit - [aF] (s=3) & (nrtr (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1); - [] (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 - - [NewFile] (T=false) -> (T'=false); - [NewFile] (T=false) -> (T'=true); - -endmodule - -module channelK - - k : [0..2]; - - // idle - [aF] (k=0) -> pK : (k'=1) + 1-pK : (k'=2); - // sending - [aG] (k=1) -> (k'=0); - // lost - [TO_Msg] (k=2) -> (k'=0); - -endmodule - -module channelL - - l : [0..2]; - - // idle - [aA] (l=0) -> pL : (l'=1) + 1-pL : (l'=2); - // sending - [aB] (l=1) -> (l'=0); - // lost - [TO_Ack] (l=2) -> (l'=0); - -endmodule - - diff --git a/examples/pmdp/brp/brp_regions.txt b/examples/pmdp/brp/brp_regions.txt deleted file mode 100644 index c1c19ee3b..000000000 --- a/examples/pmdp/brp/brp_regions.txt +++ /dev/null @@ -1,625 +0,0 @@ -0.000010<=pL<=0.040000, 0.000010<=pK<=0.040000; -0.000010<=pL<=0.040000, 0.040000<=pK<=0.080000; -0.000010<=pL<=0.040000, 0.080000<=pK<=0.120000; -0.000010<=pL<=0.040000, 0.120000<=pK<=0.160000; -0.000010<=pL<=0.040000, 0.160000<=pK<=0.200000; -0.000010<=pL<=0.040000, 0.200000<=pK<=0.240000; -0.000010<=pL<=0.040000, 0.240000<=pK<=0.280000; -0.000010<=pL<=0.040000, 0.280000<=pK<=0.320000; -0.000010<=pL<=0.040000, 0.320000<=pK<=0.360000; -0.000010<=pL<=0.040000, 0.360000<=pK<=0.400000; -0.000010<=pL<=0.040000, 0.400000<=pK<=0.440000; -0.000010<=pL<=0.040000, 0.440000<=pK<=0.480000; -0.000010<=pL<=0.040000, 0.480000<=pK<=0.520000; -0.000010<=pL<=0.040000, 0.520000<=pK<=0.560000; -0.000010<=pL<=0.040000, 0.560000<=pK<=0.600000; -0.000010<=pL<=0.040000, 0.600000<=pK<=0.640000; -0.000010<=pL<=0.040000, 0.640000<=pK<=0.680000; -0.000010<=pL<=0.040000, 0.680000<=pK<=0.720000; -0.000010<=pL<=0.040000, 0.720000<=pK<=0.760000; -0.000010<=pL<=0.040000, 0.760000<=pK<=0.800000; -0.000010<=pL<=0.040000, 0.800000<=pK<=0.840000; -0.000010<=pL<=0.040000, 0.840000<=pK<=0.880000; -0.000010<=pL<=0.040000, 0.880000<=pK<=0.920000; -0.000010<=pL<=0.040000, 0.920000<=pK<=0.960000; -0.000010<=pL<=0.040000, 0.960000<=pK<=0.999990; -0.040000<=pL<=0.080000, 0.000010<=pK<=0.040000; -0.040000<=pL<=0.080000, 0.040000<=pK<=0.080000; -0.040000<=pL<=0.080000, 0.080000<=pK<=0.120000; -0.040000<=pL<=0.080000, 0.120000<=pK<=0.160000; -0.040000<=pL<=0.080000, 0.160000<=pK<=0.200000; -0.040000<=pL<=0.080000, 0.200000<=pK<=0.240000; -0.040000<=pL<=0.080000, 0.240000<=pK<=0.280000; -0.040000<=pL<=0.080000, 0.280000<=pK<=0.320000; -0.040000<=pL<=0.080000, 0.320000<=pK<=0.360000; -0.040000<=pL<=0.080000, 0.360000<=pK<=0.400000; -0.040000<=pL<=0.080000, 0.400000<=pK<=0.440000; -0.040000<=pL<=0.080000, 0.440000<=pK<=0.480000; -0.040000<=pL<=0.080000, 0.480000<=pK<=0.520000; -0.040000<=pL<=0.080000, 0.520000<=pK<=0.560000; -0.040000<=pL<=0.080000, 0.560000<=pK<=0.600000; -0.040000<=pL<=0.080000, 0.600000<=pK<=0.640000; -0.040000<=pL<=0.080000, 0.640000<=pK<=0.680000; -0.040000<=pL<=0.080000, 0.680000<=pK<=0.720000; -0.040000<=pL<=0.080000, 0.720000<=pK<=0.760000; -0.040000<=pL<=0.080000, 0.760000<=pK<=0.800000; -0.040000<=pL<=0.080000, 0.800000<=pK<=0.840000; -0.040000<=pL<=0.080000, 0.840000<=pK<=0.880000; -0.040000<=pL<=0.080000, 0.880000<=pK<=0.920000; -0.040000<=pL<=0.080000, 0.920000<=pK<=0.960000; -0.040000<=pL<=0.080000, 0.960000<=pK<=0.999990; -0.080000<=pL<=0.120000, 0.000010<=pK<=0.040000; -0.080000<=pL<=0.120000, 0.040000<=pK<=0.080000; -0.080000<=pL<=0.120000, 0.080000<=pK<=0.120000; -0.080000<=pL<=0.120000, 0.120000<=pK<=0.160000; -0.080000<=pL<=0.120000, 0.160000<=pK<=0.200000; -0.080000<=pL<=0.120000, 0.200000<=pK<=0.240000; -0.080000<=pL<=0.120000, 0.240000<=pK<=0.280000; -0.080000<=pL<=0.120000, 0.280000<=pK<=0.320000; -0.080000<=pL<=0.120000, 0.320000<=pK<=0.360000; -0.080000<=pL<=0.120000, 0.360000<=pK<=0.400000; -0.080000<=pL<=0.120000, 0.400000<=pK<=0.440000; -0.080000<=pL<=0.120000, 0.440000<=pK<=0.480000; -0.080000<=pL<=0.120000, 0.480000<=pK<=0.520000; -0.080000<=pL<=0.120000, 0.520000<=pK<=0.560000; -0.080000<=pL<=0.120000, 0.560000<=pK<=0.600000; -0.080000<=pL<=0.120000, 0.600000<=pK<=0.640000; -0.080000<=pL<=0.120000, 0.640000<=pK<=0.680000; -0.080000<=pL<=0.120000, 0.680000<=pK<=0.720000; -0.080000<=pL<=0.120000, 0.720000<=pK<=0.760000; -0.080000<=pL<=0.120000, 0.760000<=pK<=0.800000; -0.080000<=pL<=0.120000, 0.800000<=pK<=0.840000; -0.080000<=pL<=0.120000, 0.840000<=pK<=0.880000; -0.080000<=pL<=0.120000, 0.880000<=pK<=0.920000; -0.080000<=pL<=0.120000, 0.920000<=pK<=0.960000; -0.080000<=pL<=0.120000, 0.960000<=pK<=0.999990; -0.120000<=pL<=0.160000, 0.000010<=pK<=0.040000; -0.120000<=pL<=0.160000, 0.040000<=pK<=0.080000; -0.120000<=pL<=0.160000, 0.080000<=pK<=0.120000; -0.120000<=pL<=0.160000, 0.120000<=pK<=0.160000; -0.120000<=pL<=0.160000, 0.160000<=pK<=0.200000; -0.120000<=pL<=0.160000, 0.200000<=pK<=0.240000; -0.120000<=pL<=0.160000, 0.240000<=pK<=0.280000; -0.120000<=pL<=0.160000, 0.280000<=pK<=0.320000; -0.120000<=pL<=0.160000, 0.320000<=pK<=0.360000; -0.120000<=pL<=0.160000, 0.360000<=pK<=0.400000; -0.120000<=pL<=0.160000, 0.400000<=pK<=0.440000; -0.120000<=pL<=0.160000, 0.440000<=pK<=0.480000; -0.120000<=pL<=0.160000, 0.480000<=pK<=0.520000; -0.120000<=pL<=0.160000, 0.520000<=pK<=0.560000; -0.120000<=pL<=0.160000, 0.560000<=pK<=0.600000; -0.120000<=pL<=0.160000, 0.600000<=pK<=0.640000; -0.120000<=pL<=0.160000, 0.640000<=pK<=0.680000; -0.120000<=pL<=0.160000, 0.680000<=pK<=0.720000; -0.120000<=pL<=0.160000, 0.720000<=pK<=0.760000; -0.120000<=pL<=0.160000, 0.760000<=pK<=0.800000; -0.120000<=pL<=0.160000, 0.800000<=pK<=0.840000; -0.120000<=pL<=0.160000, 0.840000<=pK<=0.880000; -0.120000<=pL<=0.160000, 0.880000<=pK<=0.920000; -0.120000<=pL<=0.160000, 0.920000<=pK<=0.960000; -0.120000<=pL<=0.160000, 0.960000<=pK<=0.999990; -0.160000<=pL<=0.200000, 0.000010<=pK<=0.040000; -0.160000<=pL<=0.200000, 0.040000<=pK<=0.080000; -0.160000<=pL<=0.200000, 0.080000<=pK<=0.120000; -0.160000<=pL<=0.200000, 0.120000<=pK<=0.160000; -0.160000<=pL<=0.200000, 0.160000<=pK<=0.200000; -0.160000<=pL<=0.200000, 0.200000<=pK<=0.240000; -0.160000<=pL<=0.200000, 0.240000<=pK<=0.280000; -0.160000<=pL<=0.200000, 0.280000<=pK<=0.320000; -0.160000<=pL<=0.200000, 0.320000<=pK<=0.360000; -0.160000<=pL<=0.200000, 0.360000<=pK<=0.400000; -0.160000<=pL<=0.200000, 0.400000<=pK<=0.440000; -0.160000<=pL<=0.200000, 0.440000<=pK<=0.480000; -0.160000<=pL<=0.200000, 0.480000<=pK<=0.520000; -0.160000<=pL<=0.200000, 0.520000<=pK<=0.560000; -0.160000<=pL<=0.200000, 0.560000<=pK<=0.600000; -0.160000<=pL<=0.200000, 0.600000<=pK<=0.640000; -0.160000<=pL<=0.200000, 0.640000<=pK<=0.680000; -0.160000<=pL<=0.200000, 0.680000<=pK<=0.720000; -0.160000<=pL<=0.200000, 0.720000<=pK<=0.760000; -0.160000<=pL<=0.200000, 0.760000<=pK<=0.800000; -0.160000<=pL<=0.200000, 0.800000<=pK<=0.840000; -0.160000<=pL<=0.200000, 0.840000<=pK<=0.880000; -0.160000<=pL<=0.200000, 0.880000<=pK<=0.920000; -0.160000<=pL<=0.200000, 0.920000<=pK<=0.960000; -0.160000<=pL<=0.200000, 0.960000<=pK<=0.999990; -0.200000<=pL<=0.240000, 0.000010<=pK<=0.040000; -0.200000<=pL<=0.240000, 0.040000<=pK<=0.080000; -0.200000<=pL<=0.240000, 0.080000<=pK<=0.120000; -0.200000<=pL<=0.240000, 0.120000<=pK<=0.160000; -0.200000<=pL<=0.240000, 0.160000<=pK<=0.200000; -0.200000<=pL<=0.240000, 0.200000<=pK<=0.240000; -0.200000<=pL<=0.240000, 0.240000<=pK<=0.280000; -0.200000<=pL<=0.240000, 0.280000<=pK<=0.320000; -0.200000<=pL<=0.240000, 0.320000<=pK<=0.360000; -0.200000<=pL<=0.240000, 0.360000<=pK<=0.400000; -0.200000<=pL<=0.240000, 0.400000<=pK<=0.440000; -0.200000<=pL<=0.240000, 0.440000<=pK<=0.480000; -0.200000<=pL<=0.240000, 0.480000<=pK<=0.520000; -0.200000<=pL<=0.240000, 0.520000<=pK<=0.560000; -0.200000<=pL<=0.240000, 0.560000<=pK<=0.600000; -0.200000<=pL<=0.240000, 0.600000<=pK<=0.640000; -0.200000<=pL<=0.240000, 0.640000<=pK<=0.680000; -0.200000<=pL<=0.240000, 0.680000<=pK<=0.720000; -0.200000<=pL<=0.240000, 0.720000<=pK<=0.760000; -0.200000<=pL<=0.240000, 0.760000<=pK<=0.800000; -0.200000<=pL<=0.240000, 0.800000<=pK<=0.840000; -0.200000<=pL<=0.240000, 0.840000<=pK<=0.880000; -0.200000<=pL<=0.240000, 0.880000<=pK<=0.920000; -0.200000<=pL<=0.240000, 0.920000<=pK<=0.960000; -0.200000<=pL<=0.240000, 0.960000<=pK<=0.999990; -0.240000<=pL<=0.280000, 0.000010<=pK<=0.040000; -0.240000<=pL<=0.280000, 0.040000<=pK<=0.080000; -0.240000<=pL<=0.280000, 0.080000<=pK<=0.120000; -0.240000<=pL<=0.280000, 0.120000<=pK<=0.160000; -0.240000<=pL<=0.280000, 0.160000<=pK<=0.200000; -0.240000<=pL<=0.280000, 0.200000<=pK<=0.240000; -0.240000<=pL<=0.280000, 0.240000<=pK<=0.280000; -0.240000<=pL<=0.280000, 0.280000<=pK<=0.320000; -0.240000<=pL<=0.280000, 0.320000<=pK<=0.360000; -0.240000<=pL<=0.280000, 0.360000<=pK<=0.400000; -0.240000<=pL<=0.280000, 0.400000<=pK<=0.440000; -0.240000<=pL<=0.280000, 0.440000<=pK<=0.480000; -0.240000<=pL<=0.280000, 0.480000<=pK<=0.520000; -0.240000<=pL<=0.280000, 0.520000<=pK<=0.560000; -0.240000<=pL<=0.280000, 0.560000<=pK<=0.600000; -0.240000<=pL<=0.280000, 0.600000<=pK<=0.640000; -0.240000<=pL<=0.280000, 0.640000<=pK<=0.680000; -0.240000<=pL<=0.280000, 0.680000<=pK<=0.720000; -0.240000<=pL<=0.280000, 0.720000<=pK<=0.760000; -0.240000<=pL<=0.280000, 0.760000<=pK<=0.800000; -0.240000<=pL<=0.280000, 0.800000<=pK<=0.840000; -0.240000<=pL<=0.280000, 0.840000<=pK<=0.880000; -0.240000<=pL<=0.280000, 0.880000<=pK<=0.920000; -0.240000<=pL<=0.280000, 0.920000<=pK<=0.960000; -0.240000<=pL<=0.280000, 0.960000<=pK<=0.999990; -0.280000<=pL<=0.320000, 0.000010<=pK<=0.040000; -0.280000<=pL<=0.320000, 0.040000<=pK<=0.080000; -0.280000<=pL<=0.320000, 0.080000<=pK<=0.120000; -0.280000<=pL<=0.320000, 0.120000<=pK<=0.160000; -0.280000<=pL<=0.320000, 0.160000<=pK<=0.200000; -0.280000<=pL<=0.320000, 0.200000<=pK<=0.240000; -0.280000<=pL<=0.320000, 0.240000<=pK<=0.280000; -0.280000<=pL<=0.320000, 0.280000<=pK<=0.320000; -0.280000<=pL<=0.320000, 0.320000<=pK<=0.360000; -0.280000<=pL<=0.320000, 0.360000<=pK<=0.400000; -0.280000<=pL<=0.320000, 0.400000<=pK<=0.440000; -0.280000<=pL<=0.320000, 0.440000<=pK<=0.480000; -0.280000<=pL<=0.320000, 0.480000<=pK<=0.520000; -0.280000<=pL<=0.320000, 0.520000<=pK<=0.560000; -0.280000<=pL<=0.320000, 0.560000<=pK<=0.600000; -0.280000<=pL<=0.320000, 0.600000<=pK<=0.640000; -0.280000<=pL<=0.320000, 0.640000<=pK<=0.680000; -0.280000<=pL<=0.320000, 0.680000<=pK<=0.720000; -0.280000<=pL<=0.320000, 0.720000<=pK<=0.760000; -0.280000<=pL<=0.320000, 0.760000<=pK<=0.800000; -0.280000<=pL<=0.320000, 0.800000<=pK<=0.840000; -0.280000<=pL<=0.320000, 0.840000<=pK<=0.880000; -0.280000<=pL<=0.320000, 0.880000<=pK<=0.920000; -0.280000<=pL<=0.320000, 0.920000<=pK<=0.960000; -0.280000<=pL<=0.320000, 0.960000<=pK<=0.999990; -0.320000<=pL<=0.360000, 0.000010<=pK<=0.040000; -0.320000<=pL<=0.360000, 0.040000<=pK<=0.080000; -0.320000<=pL<=0.360000, 0.080000<=pK<=0.120000; -0.320000<=pL<=0.360000, 0.120000<=pK<=0.160000; -0.320000<=pL<=0.360000, 0.160000<=pK<=0.200000; -0.320000<=pL<=0.360000, 0.200000<=pK<=0.240000; -0.320000<=pL<=0.360000, 0.240000<=pK<=0.280000; -0.320000<=pL<=0.360000, 0.280000<=pK<=0.320000; -0.320000<=pL<=0.360000, 0.320000<=pK<=0.360000; -0.320000<=pL<=0.360000, 0.360000<=pK<=0.400000; -0.320000<=pL<=0.360000, 0.400000<=pK<=0.440000; -0.320000<=pL<=0.360000, 0.440000<=pK<=0.480000; -0.320000<=pL<=0.360000, 0.480000<=pK<=0.520000; -0.320000<=pL<=0.360000, 0.520000<=pK<=0.560000; -0.320000<=pL<=0.360000, 0.560000<=pK<=0.600000; -0.320000<=pL<=0.360000, 0.600000<=pK<=0.640000; -0.320000<=pL<=0.360000, 0.640000<=pK<=0.680000; -0.320000<=pL<=0.360000, 0.680000<=pK<=0.720000; -0.320000<=pL<=0.360000, 0.720000<=pK<=0.760000; -0.320000<=pL<=0.360000, 0.760000<=pK<=0.800000; -0.320000<=pL<=0.360000, 0.800000<=pK<=0.840000; -0.320000<=pL<=0.360000, 0.840000<=pK<=0.880000; -0.320000<=pL<=0.360000, 0.880000<=pK<=0.920000; -0.320000<=pL<=0.360000, 0.920000<=pK<=0.960000; -0.320000<=pL<=0.360000, 0.960000<=pK<=0.999990; -0.360000<=pL<=0.400000, 0.000010<=pK<=0.040000; -0.360000<=pL<=0.400000, 0.040000<=pK<=0.080000; -0.360000<=pL<=0.400000, 0.080000<=pK<=0.120000; -0.360000<=pL<=0.400000, 0.120000<=pK<=0.160000; -0.360000<=pL<=0.400000, 0.160000<=pK<=0.200000; -0.360000<=pL<=0.400000, 0.200000<=pK<=0.240000; -0.360000<=pL<=0.400000, 0.240000<=pK<=0.280000; -0.360000<=pL<=0.400000, 0.280000<=pK<=0.320000; -0.360000<=pL<=0.400000, 0.320000<=pK<=0.360000; -0.360000<=pL<=0.400000, 0.360000<=pK<=0.400000; -0.360000<=pL<=0.400000, 0.400000<=pK<=0.440000; -0.360000<=pL<=0.400000, 0.440000<=pK<=0.480000; -0.360000<=pL<=0.400000, 0.480000<=pK<=0.520000; -0.360000<=pL<=0.400000, 0.520000<=pK<=0.560000; -0.360000<=pL<=0.400000, 0.560000<=pK<=0.600000; -0.360000<=pL<=0.400000, 0.600000<=pK<=0.640000; -0.360000<=pL<=0.400000, 0.640000<=pK<=0.680000; -0.360000<=pL<=0.400000, 0.680000<=pK<=0.720000; -0.360000<=pL<=0.400000, 0.720000<=pK<=0.760000; -0.360000<=pL<=0.400000, 0.760000<=pK<=0.800000; -0.360000<=pL<=0.400000, 0.800000<=pK<=0.840000; -0.360000<=pL<=0.400000, 0.840000<=pK<=0.880000; -0.360000<=pL<=0.400000, 0.880000<=pK<=0.920000; -0.360000<=pL<=0.400000, 0.920000<=pK<=0.960000; -0.360000<=pL<=0.400000, 0.960000<=pK<=0.999990; -0.400000<=pL<=0.440000, 0.000010<=pK<=0.040000; -0.400000<=pL<=0.440000, 0.040000<=pK<=0.080000; -0.400000<=pL<=0.440000, 0.080000<=pK<=0.120000; -0.400000<=pL<=0.440000, 0.120000<=pK<=0.160000; -0.400000<=pL<=0.440000, 0.160000<=pK<=0.200000; -0.400000<=pL<=0.440000, 0.200000<=pK<=0.240000; -0.400000<=pL<=0.440000, 0.240000<=pK<=0.280000; -0.400000<=pL<=0.440000, 0.280000<=pK<=0.320000; -0.400000<=pL<=0.440000, 0.320000<=pK<=0.360000; -0.400000<=pL<=0.440000, 0.360000<=pK<=0.400000; -0.400000<=pL<=0.440000, 0.400000<=pK<=0.440000; -0.400000<=pL<=0.440000, 0.440000<=pK<=0.480000; -0.400000<=pL<=0.440000, 0.480000<=pK<=0.520000; -0.400000<=pL<=0.440000, 0.520000<=pK<=0.560000; -0.400000<=pL<=0.440000, 0.560000<=pK<=0.600000; -0.400000<=pL<=0.440000, 0.600000<=pK<=0.640000; -0.400000<=pL<=0.440000, 0.640000<=pK<=0.680000; -0.400000<=pL<=0.440000, 0.680000<=pK<=0.720000; -0.400000<=pL<=0.440000, 0.720000<=pK<=0.760000; -0.400000<=pL<=0.440000, 0.760000<=pK<=0.800000; -0.400000<=pL<=0.440000, 0.800000<=pK<=0.840000; -0.400000<=pL<=0.440000, 0.840000<=pK<=0.880000; -0.400000<=pL<=0.440000, 0.880000<=pK<=0.920000; -0.400000<=pL<=0.440000, 0.920000<=pK<=0.960000; -0.400000<=pL<=0.440000, 0.960000<=pK<=0.999990; -0.440000<=pL<=0.480000, 0.000010<=pK<=0.040000; -0.440000<=pL<=0.480000, 0.040000<=pK<=0.080000; -0.440000<=pL<=0.480000, 0.080000<=pK<=0.120000; -0.440000<=pL<=0.480000, 0.120000<=pK<=0.160000; -0.440000<=pL<=0.480000, 0.160000<=pK<=0.200000; -0.440000<=pL<=0.480000, 0.200000<=pK<=0.240000; -0.440000<=pL<=0.480000, 0.240000<=pK<=0.280000; -0.440000<=pL<=0.480000, 0.280000<=pK<=0.320000; -0.440000<=pL<=0.480000, 0.320000<=pK<=0.360000; -0.440000<=pL<=0.480000, 0.360000<=pK<=0.400000; -0.440000<=pL<=0.480000, 0.400000<=pK<=0.440000; -0.440000<=pL<=0.480000, 0.440000<=pK<=0.480000; -0.440000<=pL<=0.480000, 0.480000<=pK<=0.520000; -0.440000<=pL<=0.480000, 0.520000<=pK<=0.560000; -0.440000<=pL<=0.480000, 0.560000<=pK<=0.600000; -0.440000<=pL<=0.480000, 0.600000<=pK<=0.640000; -0.440000<=pL<=0.480000, 0.640000<=pK<=0.680000; -0.440000<=pL<=0.480000, 0.680000<=pK<=0.720000; -0.440000<=pL<=0.480000, 0.720000<=pK<=0.760000; -0.440000<=pL<=0.480000, 0.760000<=pK<=0.800000; -0.440000<=pL<=0.480000, 0.800000<=pK<=0.840000; -0.440000<=pL<=0.480000, 0.840000<=pK<=0.880000; -0.440000<=pL<=0.480000, 0.880000<=pK<=0.920000; -0.440000<=pL<=0.480000, 0.920000<=pK<=0.960000; -0.440000<=pL<=0.480000, 0.960000<=pK<=0.999990; -0.480000<=pL<=0.520000, 0.000010<=pK<=0.040000; -0.480000<=pL<=0.520000, 0.040000<=pK<=0.080000; -0.480000<=pL<=0.520000, 0.080000<=pK<=0.120000; -0.480000<=pL<=0.520000, 0.120000<=pK<=0.160000; -0.480000<=pL<=0.520000, 0.160000<=pK<=0.200000; -0.480000<=pL<=0.520000, 0.200000<=pK<=0.240000; -0.480000<=pL<=0.520000, 0.240000<=pK<=0.280000; -0.480000<=pL<=0.520000, 0.280000<=pK<=0.320000; -0.480000<=pL<=0.520000, 0.320000<=pK<=0.360000; -0.480000<=pL<=0.520000, 0.360000<=pK<=0.400000; -0.480000<=pL<=0.520000, 0.400000<=pK<=0.440000; -0.480000<=pL<=0.520000, 0.440000<=pK<=0.480000; -0.480000<=pL<=0.520000, 0.480000<=pK<=0.520000; -0.480000<=pL<=0.520000, 0.520000<=pK<=0.560000; -0.480000<=pL<=0.520000, 0.560000<=pK<=0.600000; -0.480000<=pL<=0.520000, 0.600000<=pK<=0.640000; -0.480000<=pL<=0.520000, 0.640000<=pK<=0.680000; -0.480000<=pL<=0.520000, 0.680000<=pK<=0.720000; -0.480000<=pL<=0.520000, 0.720000<=pK<=0.760000; -0.480000<=pL<=0.520000, 0.760000<=pK<=0.800000; -0.480000<=pL<=0.520000, 0.800000<=pK<=0.840000; -0.480000<=pL<=0.520000, 0.840000<=pK<=0.880000; -0.480000<=pL<=0.520000, 0.880000<=pK<=0.920000; -0.480000<=pL<=0.520000, 0.920000<=pK<=0.960000; -0.480000<=pL<=0.520000, 0.960000<=pK<=0.999990; -0.520000<=pL<=0.560000, 0.000010<=pK<=0.040000; -0.520000<=pL<=0.560000, 0.040000<=pK<=0.080000; -0.520000<=pL<=0.560000, 0.080000<=pK<=0.120000; -0.520000<=pL<=0.560000, 0.120000<=pK<=0.160000; -0.520000<=pL<=0.560000, 0.160000<=pK<=0.200000; -0.520000<=pL<=0.560000, 0.200000<=pK<=0.240000; -0.520000<=pL<=0.560000, 0.240000<=pK<=0.280000; -0.520000<=pL<=0.560000, 0.280000<=pK<=0.320000; -0.520000<=pL<=0.560000, 0.320000<=pK<=0.360000; -0.520000<=pL<=0.560000, 0.360000<=pK<=0.400000; -0.520000<=pL<=0.560000, 0.400000<=pK<=0.440000; -0.520000<=pL<=0.560000, 0.440000<=pK<=0.480000; -0.520000<=pL<=0.560000, 0.480000<=pK<=0.520000; -0.520000<=pL<=0.560000, 0.520000<=pK<=0.560000; -0.520000<=pL<=0.560000, 0.560000<=pK<=0.600000; -0.520000<=pL<=0.560000, 0.600000<=pK<=0.640000; -0.520000<=pL<=0.560000, 0.640000<=pK<=0.680000; -0.520000<=pL<=0.560000, 0.680000<=pK<=0.720000; -0.520000<=pL<=0.560000, 0.720000<=pK<=0.760000; -0.520000<=pL<=0.560000, 0.760000<=pK<=0.800000; -0.520000<=pL<=0.560000, 0.800000<=pK<=0.840000; -0.520000<=pL<=0.560000, 0.840000<=pK<=0.880000; -0.520000<=pL<=0.560000, 0.880000<=pK<=0.920000; -0.520000<=pL<=0.560000, 0.920000<=pK<=0.960000; -0.520000<=pL<=0.560000, 0.960000<=pK<=0.999990; -0.560000<=pL<=0.600000, 0.000010<=pK<=0.040000; -0.560000<=pL<=0.600000, 0.040000<=pK<=0.080000; -0.560000<=pL<=0.600000, 0.080000<=pK<=0.120000; -0.560000<=pL<=0.600000, 0.120000<=pK<=0.160000; -0.560000<=pL<=0.600000, 0.160000<=pK<=0.200000; -0.560000<=pL<=0.600000, 0.200000<=pK<=0.240000; -0.560000<=pL<=0.600000, 0.240000<=pK<=0.280000; -0.560000<=pL<=0.600000, 0.280000<=pK<=0.320000; -0.560000<=pL<=0.600000, 0.320000<=pK<=0.360000; -0.560000<=pL<=0.600000, 0.360000<=pK<=0.400000; -0.560000<=pL<=0.600000, 0.400000<=pK<=0.440000; -0.560000<=pL<=0.600000, 0.440000<=pK<=0.480000; -0.560000<=pL<=0.600000, 0.480000<=pK<=0.520000; -0.560000<=pL<=0.600000, 0.520000<=pK<=0.560000; -0.560000<=pL<=0.600000, 0.560000<=pK<=0.600000; -0.560000<=pL<=0.600000, 0.600000<=pK<=0.640000; -0.560000<=pL<=0.600000, 0.640000<=pK<=0.680000; -0.560000<=pL<=0.600000, 0.680000<=pK<=0.720000; -0.560000<=pL<=0.600000, 0.720000<=pK<=0.760000; -0.560000<=pL<=0.600000, 0.760000<=pK<=0.800000; -0.560000<=pL<=0.600000, 0.800000<=pK<=0.840000; -0.560000<=pL<=0.600000, 0.840000<=pK<=0.880000; -0.560000<=pL<=0.600000, 0.880000<=pK<=0.920000; -0.560000<=pL<=0.600000, 0.920000<=pK<=0.960000; -0.560000<=pL<=0.600000, 0.960000<=pK<=0.999990; -0.600000<=pL<=0.640000, 0.000010<=pK<=0.040000; -0.600000<=pL<=0.640000, 0.040000<=pK<=0.080000; -0.600000<=pL<=0.640000, 0.080000<=pK<=0.120000; -0.600000<=pL<=0.640000, 0.120000<=pK<=0.160000; -0.600000<=pL<=0.640000, 0.160000<=pK<=0.200000; -0.600000<=pL<=0.640000, 0.200000<=pK<=0.240000; -0.600000<=pL<=0.640000, 0.240000<=pK<=0.280000; -0.600000<=pL<=0.640000, 0.280000<=pK<=0.320000; -0.600000<=pL<=0.640000, 0.320000<=pK<=0.360000; -0.600000<=pL<=0.640000, 0.360000<=pK<=0.400000; -0.600000<=pL<=0.640000, 0.400000<=pK<=0.440000; -0.600000<=pL<=0.640000, 0.440000<=pK<=0.480000; -0.600000<=pL<=0.640000, 0.480000<=pK<=0.520000; -0.600000<=pL<=0.640000, 0.520000<=pK<=0.560000; -0.600000<=pL<=0.640000, 0.560000<=pK<=0.600000; -0.600000<=pL<=0.640000, 0.600000<=pK<=0.640000; -0.600000<=pL<=0.640000, 0.640000<=pK<=0.680000; -0.600000<=pL<=0.640000, 0.680000<=pK<=0.720000; -0.600000<=pL<=0.640000, 0.720000<=pK<=0.760000; -0.600000<=pL<=0.640000, 0.760000<=pK<=0.800000; -0.600000<=pL<=0.640000, 0.800000<=pK<=0.840000; -0.600000<=pL<=0.640000, 0.840000<=pK<=0.880000; -0.600000<=pL<=0.640000, 0.880000<=pK<=0.920000; -0.600000<=pL<=0.640000, 0.920000<=pK<=0.960000; -0.600000<=pL<=0.640000, 0.960000<=pK<=0.999990; -0.640000<=pL<=0.680000, 0.000010<=pK<=0.040000; -0.640000<=pL<=0.680000, 0.040000<=pK<=0.080000; -0.640000<=pL<=0.680000, 0.080000<=pK<=0.120000; -0.640000<=pL<=0.680000, 0.120000<=pK<=0.160000; -0.640000<=pL<=0.680000, 0.160000<=pK<=0.200000; -0.640000<=pL<=0.680000, 0.200000<=pK<=0.240000; -0.640000<=pL<=0.680000, 0.240000<=pK<=0.280000; -0.640000<=pL<=0.680000, 0.280000<=pK<=0.320000; -0.640000<=pL<=0.680000, 0.320000<=pK<=0.360000; -0.640000<=pL<=0.680000, 0.360000<=pK<=0.400000; -0.640000<=pL<=0.680000, 0.400000<=pK<=0.440000; -0.640000<=pL<=0.680000, 0.440000<=pK<=0.480000; -0.640000<=pL<=0.680000, 0.480000<=pK<=0.520000; -0.640000<=pL<=0.680000, 0.520000<=pK<=0.560000; -0.640000<=pL<=0.680000, 0.560000<=pK<=0.600000; -0.640000<=pL<=0.680000, 0.600000<=pK<=0.640000; -0.640000<=pL<=0.680000, 0.640000<=pK<=0.680000; -0.640000<=pL<=0.680000, 0.680000<=pK<=0.720000; -0.640000<=pL<=0.680000, 0.720000<=pK<=0.760000; -0.640000<=pL<=0.680000, 0.760000<=pK<=0.800000; -0.640000<=pL<=0.680000, 0.800000<=pK<=0.840000; -0.640000<=pL<=0.680000, 0.840000<=pK<=0.880000; -0.640000<=pL<=0.680000, 0.880000<=pK<=0.920000; -0.640000<=pL<=0.680000, 0.920000<=pK<=0.960000; -0.640000<=pL<=0.680000, 0.960000<=pK<=0.999990; -0.680000<=pL<=0.720000, 0.000010<=pK<=0.040000; -0.680000<=pL<=0.720000, 0.040000<=pK<=0.080000; -0.680000<=pL<=0.720000, 0.080000<=pK<=0.120000; -0.680000<=pL<=0.720000, 0.120000<=pK<=0.160000; -0.680000<=pL<=0.720000, 0.160000<=pK<=0.200000; -0.680000<=pL<=0.720000, 0.200000<=pK<=0.240000; -0.680000<=pL<=0.720000, 0.240000<=pK<=0.280000; -0.680000<=pL<=0.720000, 0.280000<=pK<=0.320000; -0.680000<=pL<=0.720000, 0.320000<=pK<=0.360000; -0.680000<=pL<=0.720000, 0.360000<=pK<=0.400000; -0.680000<=pL<=0.720000, 0.400000<=pK<=0.440000; -0.680000<=pL<=0.720000, 0.440000<=pK<=0.480000; -0.680000<=pL<=0.720000, 0.480000<=pK<=0.520000; -0.680000<=pL<=0.720000, 0.520000<=pK<=0.560000; -0.680000<=pL<=0.720000, 0.560000<=pK<=0.600000; -0.680000<=pL<=0.720000, 0.600000<=pK<=0.640000; -0.680000<=pL<=0.720000, 0.640000<=pK<=0.680000; -0.680000<=pL<=0.720000, 0.680000<=pK<=0.720000; -0.680000<=pL<=0.720000, 0.720000<=pK<=0.760000; -0.680000<=pL<=0.720000, 0.760000<=pK<=0.800000; -0.680000<=pL<=0.720000, 0.800000<=pK<=0.840000; -0.680000<=pL<=0.720000, 0.840000<=pK<=0.880000; -0.680000<=pL<=0.720000, 0.880000<=pK<=0.920000; -0.680000<=pL<=0.720000, 0.920000<=pK<=0.960000; -0.680000<=pL<=0.720000, 0.960000<=pK<=0.999990; -0.720000<=pL<=0.760000, 0.000010<=pK<=0.040000; -0.720000<=pL<=0.760000, 0.040000<=pK<=0.080000; -0.720000<=pL<=0.760000, 0.080000<=pK<=0.120000; -0.720000<=pL<=0.760000, 0.120000<=pK<=0.160000; -0.720000<=pL<=0.760000, 0.160000<=pK<=0.200000; -0.720000<=pL<=0.760000, 0.200000<=pK<=0.240000; -0.720000<=pL<=0.760000, 0.240000<=pK<=0.280000; -0.720000<=pL<=0.760000, 0.280000<=pK<=0.320000; -0.720000<=pL<=0.760000, 0.320000<=pK<=0.360000; -0.720000<=pL<=0.760000, 0.360000<=pK<=0.400000; -0.720000<=pL<=0.760000, 0.400000<=pK<=0.440000; -0.720000<=pL<=0.760000, 0.440000<=pK<=0.480000; -0.720000<=pL<=0.760000, 0.480000<=pK<=0.520000; -0.720000<=pL<=0.760000, 0.520000<=pK<=0.560000; -0.720000<=pL<=0.760000, 0.560000<=pK<=0.600000; -0.720000<=pL<=0.760000, 0.600000<=pK<=0.640000; -0.720000<=pL<=0.760000, 0.640000<=pK<=0.680000; -0.720000<=pL<=0.760000, 0.680000<=pK<=0.720000; -0.720000<=pL<=0.760000, 0.720000<=pK<=0.760000; -0.720000<=pL<=0.760000, 0.760000<=pK<=0.800000; -0.720000<=pL<=0.760000, 0.800000<=pK<=0.840000; -0.720000<=pL<=0.760000, 0.840000<=pK<=0.880000; -0.720000<=pL<=0.760000, 0.880000<=pK<=0.920000; -0.720000<=pL<=0.760000, 0.920000<=pK<=0.960000; -0.720000<=pL<=0.760000, 0.960000<=pK<=0.999990; -0.760000<=pL<=0.800000, 0.000010<=pK<=0.040000; -0.760000<=pL<=0.800000, 0.040000<=pK<=0.080000; -0.760000<=pL<=0.800000, 0.080000<=pK<=0.120000; -0.760000<=pL<=0.800000, 0.120000<=pK<=0.160000; -0.760000<=pL<=0.800000, 0.160000<=pK<=0.200000; -0.760000<=pL<=0.800000, 0.200000<=pK<=0.240000; -0.760000<=pL<=0.800000, 0.240000<=pK<=0.280000; -0.760000<=pL<=0.800000, 0.280000<=pK<=0.320000; -0.760000<=pL<=0.800000, 0.320000<=pK<=0.360000; -0.760000<=pL<=0.800000, 0.360000<=pK<=0.400000; -0.760000<=pL<=0.800000, 0.400000<=pK<=0.440000; -0.760000<=pL<=0.800000, 0.440000<=pK<=0.480000; -0.760000<=pL<=0.800000, 0.480000<=pK<=0.520000; -0.760000<=pL<=0.800000, 0.520000<=pK<=0.560000; -0.760000<=pL<=0.800000, 0.560000<=pK<=0.600000; -0.760000<=pL<=0.800000, 0.600000<=pK<=0.640000; -0.760000<=pL<=0.800000, 0.640000<=pK<=0.680000; -0.760000<=pL<=0.800000, 0.680000<=pK<=0.720000; -0.760000<=pL<=0.800000, 0.720000<=pK<=0.760000; -0.760000<=pL<=0.800000, 0.760000<=pK<=0.800000; -0.760000<=pL<=0.800000, 0.800000<=pK<=0.840000; -0.760000<=pL<=0.800000, 0.840000<=pK<=0.880000; -0.760000<=pL<=0.800000, 0.880000<=pK<=0.920000; -0.760000<=pL<=0.800000, 0.920000<=pK<=0.960000; -0.760000<=pL<=0.800000, 0.960000<=pK<=0.999990; -0.800000<=pL<=0.840000, 0.000010<=pK<=0.040000; -0.800000<=pL<=0.840000, 0.040000<=pK<=0.080000; -0.800000<=pL<=0.840000, 0.080000<=pK<=0.120000; -0.800000<=pL<=0.840000, 0.120000<=pK<=0.160000; -0.800000<=pL<=0.840000, 0.160000<=pK<=0.200000; -0.800000<=pL<=0.840000, 0.200000<=pK<=0.240000; -0.800000<=pL<=0.840000, 0.240000<=pK<=0.280000; -0.800000<=pL<=0.840000, 0.280000<=pK<=0.320000; -0.800000<=pL<=0.840000, 0.320000<=pK<=0.360000; -0.800000<=pL<=0.840000, 0.360000<=pK<=0.400000; -0.800000<=pL<=0.840000, 0.400000<=pK<=0.440000; -0.800000<=pL<=0.840000, 0.440000<=pK<=0.480000; -0.800000<=pL<=0.840000, 0.480000<=pK<=0.520000; -0.800000<=pL<=0.840000, 0.520000<=pK<=0.560000; -0.800000<=pL<=0.840000, 0.560000<=pK<=0.600000; -0.800000<=pL<=0.840000, 0.600000<=pK<=0.640000; -0.800000<=pL<=0.840000, 0.640000<=pK<=0.680000; -0.800000<=pL<=0.840000, 0.680000<=pK<=0.720000; -0.800000<=pL<=0.840000, 0.720000<=pK<=0.760000; -0.800000<=pL<=0.840000, 0.760000<=pK<=0.800000; -0.800000<=pL<=0.840000, 0.800000<=pK<=0.840000; -0.800000<=pL<=0.840000, 0.840000<=pK<=0.880000; -0.800000<=pL<=0.840000, 0.880000<=pK<=0.920000; -0.800000<=pL<=0.840000, 0.920000<=pK<=0.960000; -0.800000<=pL<=0.840000, 0.960000<=pK<=0.999990; -0.840000<=pL<=0.880000, 0.000010<=pK<=0.040000; -0.840000<=pL<=0.880000, 0.040000<=pK<=0.080000; -0.840000<=pL<=0.880000, 0.080000<=pK<=0.120000; -0.840000<=pL<=0.880000, 0.120000<=pK<=0.160000; -0.840000<=pL<=0.880000, 0.160000<=pK<=0.200000; -0.840000<=pL<=0.880000, 0.200000<=pK<=0.240000; -0.840000<=pL<=0.880000, 0.240000<=pK<=0.280000; -0.840000<=pL<=0.880000, 0.280000<=pK<=0.320000; -0.840000<=pL<=0.880000, 0.320000<=pK<=0.360000; -0.840000<=pL<=0.880000, 0.360000<=pK<=0.400000; -0.840000<=pL<=0.880000, 0.400000<=pK<=0.440000; -0.840000<=pL<=0.880000, 0.440000<=pK<=0.480000; -0.840000<=pL<=0.880000, 0.480000<=pK<=0.520000; -0.840000<=pL<=0.880000, 0.520000<=pK<=0.560000; -0.840000<=pL<=0.880000, 0.560000<=pK<=0.600000; -0.840000<=pL<=0.880000, 0.600000<=pK<=0.640000; -0.840000<=pL<=0.880000, 0.640000<=pK<=0.680000; -0.840000<=pL<=0.880000, 0.680000<=pK<=0.720000; -0.840000<=pL<=0.880000, 0.720000<=pK<=0.760000; -0.840000<=pL<=0.880000, 0.760000<=pK<=0.800000; -0.840000<=pL<=0.880000, 0.800000<=pK<=0.840000; -0.840000<=pL<=0.880000, 0.840000<=pK<=0.880000; -0.840000<=pL<=0.880000, 0.880000<=pK<=0.920000; -0.840000<=pL<=0.880000, 0.920000<=pK<=0.960000; -0.840000<=pL<=0.880000, 0.960000<=pK<=0.999990; -0.880000<=pL<=0.920000, 0.000010<=pK<=0.040000; -0.880000<=pL<=0.920000, 0.040000<=pK<=0.080000; -0.880000<=pL<=0.920000, 0.080000<=pK<=0.120000; -0.880000<=pL<=0.920000, 0.120000<=pK<=0.160000; -0.880000<=pL<=0.920000, 0.160000<=pK<=0.200000; -0.880000<=pL<=0.920000, 0.200000<=pK<=0.240000; -0.880000<=pL<=0.920000, 0.240000<=pK<=0.280000; -0.880000<=pL<=0.920000, 0.280000<=pK<=0.320000; -0.880000<=pL<=0.920000, 0.320000<=pK<=0.360000; -0.880000<=pL<=0.920000, 0.360000<=pK<=0.400000; -0.880000<=pL<=0.920000, 0.400000<=pK<=0.440000; -0.880000<=pL<=0.920000, 0.440000<=pK<=0.480000; -0.880000<=pL<=0.920000, 0.480000<=pK<=0.520000; -0.880000<=pL<=0.920000, 0.520000<=pK<=0.560000; -0.880000<=pL<=0.920000, 0.560000<=pK<=0.600000; -0.880000<=pL<=0.920000, 0.600000<=pK<=0.640000; -0.880000<=pL<=0.920000, 0.640000<=pK<=0.680000; -0.880000<=pL<=0.920000, 0.680000<=pK<=0.720000; -0.880000<=pL<=0.920000, 0.720000<=pK<=0.760000; -0.880000<=pL<=0.920000, 0.760000<=pK<=0.800000; -0.880000<=pL<=0.920000, 0.800000<=pK<=0.840000; -0.880000<=pL<=0.920000, 0.840000<=pK<=0.880000; -0.880000<=pL<=0.920000, 0.880000<=pK<=0.920000; -0.880000<=pL<=0.920000, 0.920000<=pK<=0.960000; -0.880000<=pL<=0.920000, 0.960000<=pK<=0.999990; -0.920000<=pL<=0.960000, 0.000010<=pK<=0.040000; -0.920000<=pL<=0.960000, 0.040000<=pK<=0.080000; -0.920000<=pL<=0.960000, 0.080000<=pK<=0.120000; -0.920000<=pL<=0.960000, 0.120000<=pK<=0.160000; -0.920000<=pL<=0.960000, 0.160000<=pK<=0.200000; -0.920000<=pL<=0.960000, 0.200000<=pK<=0.240000; -0.920000<=pL<=0.960000, 0.240000<=pK<=0.280000; -0.920000<=pL<=0.960000, 0.280000<=pK<=0.320000; -0.920000<=pL<=0.960000, 0.320000<=pK<=0.360000; -0.920000<=pL<=0.960000, 0.360000<=pK<=0.400000; -0.920000<=pL<=0.960000, 0.400000<=pK<=0.440000; -0.920000<=pL<=0.960000, 0.440000<=pK<=0.480000; -0.920000<=pL<=0.960000, 0.480000<=pK<=0.520000; -0.920000<=pL<=0.960000, 0.520000<=pK<=0.560000; -0.920000<=pL<=0.960000, 0.560000<=pK<=0.600000; -0.920000<=pL<=0.960000, 0.600000<=pK<=0.640000; -0.920000<=pL<=0.960000, 0.640000<=pK<=0.680000; -0.920000<=pL<=0.960000, 0.680000<=pK<=0.720000; -0.920000<=pL<=0.960000, 0.720000<=pK<=0.760000; -0.920000<=pL<=0.960000, 0.760000<=pK<=0.800000; -0.920000<=pL<=0.960000, 0.800000<=pK<=0.840000; -0.920000<=pL<=0.960000, 0.840000<=pK<=0.880000; -0.920000<=pL<=0.960000, 0.880000<=pK<=0.920000; -0.920000<=pL<=0.960000, 0.920000<=pK<=0.960000; -0.920000<=pL<=0.960000, 0.960000<=pK<=0.999990; -0.960000<=pL<=0.999990, 0.000010<=pK<=0.040000; -0.960000<=pL<=0.999990, 0.040000<=pK<=0.080000; -0.960000<=pL<=0.999990, 0.080000<=pK<=0.120000; -0.960000<=pL<=0.999990, 0.120000<=pK<=0.160000; -0.960000<=pL<=0.999990, 0.160000<=pK<=0.200000; -0.960000<=pL<=0.999990, 0.200000<=pK<=0.240000; -0.960000<=pL<=0.999990, 0.240000<=pK<=0.280000; -0.960000<=pL<=0.999990, 0.280000<=pK<=0.320000; -0.960000<=pL<=0.999990, 0.320000<=pK<=0.360000; -0.960000<=pL<=0.999990, 0.360000<=pK<=0.400000; -0.960000<=pL<=0.999990, 0.400000<=pK<=0.440000; -0.960000<=pL<=0.999990, 0.440000<=pK<=0.480000; -0.960000<=pL<=0.999990, 0.480000<=pK<=0.520000; -0.960000<=pL<=0.999990, 0.520000<=pK<=0.560000; -0.960000<=pL<=0.999990, 0.560000<=pK<=0.600000; -0.960000<=pL<=0.999990, 0.600000<=pK<=0.640000; -0.960000<=pL<=0.999990, 0.640000<=pK<=0.680000; -0.960000<=pL<=0.999990, 0.680000<=pK<=0.720000; -0.960000<=pL<=0.999990, 0.720000<=pK<=0.760000; -0.960000<=pL<=0.999990, 0.760000<=pK<=0.800000; -0.960000<=pL<=0.999990, 0.800000<=pK<=0.840000; -0.960000<=pL<=0.999990, 0.840000<=pK<=0.880000; -0.960000<=pL<=0.999990, 0.880000<=pK<=0.920000; -0.960000<=pL<=0.999990, 0.920000<=pK<=0.960000; -0.960000<=pL<=0.999990, 0.960000<=pK<=0.999990; diff --git a/examples/pmdp/brp/brp_space.txt b/examples/pmdp/brp/brp_space.txt deleted file mode 100644 index 444b98e90..000000000 --- a/examples/pmdp/brp/brp_space.txt +++ /dev/null @@ -1,2 +0,0 @@ -0.000010<=pL<=0.999990, 0.000010<=pK<=0.999990; - diff --git a/examples/pmdp/brp/models b/examples/pmdp/brp/models deleted file mode 100644 index b692fffb6..000000000 --- a/examples/pmdp/brp/models +++ /dev/null @@ -1,2 +0,0 @@ -brp.pm -const N=256,MAX=5 -brp.pm -const N=4096,MAX=5 diff --git a/examples/pmdp/coin2/coin2.pm b/examples/pmdp/coin2/coin2.pm deleted file mode 100644 index 79a25b870..000000000 --- a/examples/pmdp/coin2/coin2.pm +++ /dev/null @@ -1,59 +0,0 @@ -//Randomised Consensus Protocol - -mdp -const double p1; // in [0.2 , 0.8] -const double p2; // in [0.2 , 0.8] - - -const int N=2; -const int K; -const int range = 2*(K+1)*N; -const int counter_init = (K+1)*N; -const int left = N; -const int right = 2*(K+1)*N - N; - -// shared coin -global counter : [0..range] init counter_init; - -module process1 - - // program counter - pc1 : [0..3]; - // 0 - flip - // 1 - write - // 2 - check - // 3 - finished - - // local coin - coin1 : [0..1]; - - // flip coin - [] (pc1=0) -> p1 : (coin1'=0) & (pc1'=1) + 1 - p1 : (coin1'=1) & (pc1'=1); - // write tails -1 (reset coin to add regularity) - [] (pc1=1) & (coin1=0) & (counter>0) -> (counter'=counter-1) & (pc1'=2) & (coin1'=0); - // write heads +1 (reset coin to add regularity) - [] (pc1=1) & (coin1=1) & (counter (counter'=counter+1) & (pc1'=2) & (coin1'=0); - // check - // decide tails - [] (pc1=2) & (counter<=left) -> (pc1'=3) & (coin1'=0); - // decide heads - [] (pc1=2) & (counter>=right) -> (pc1'=3) & (coin1'=1); - // flip again - [] (pc1=2) & (counter>left) & (counter (pc1'=0); - // loop (all loop together when done) - [done] (pc1=3) -> (pc1'=3); - -endmodule - -module process2 = process1[pc1=pc2,coin1=coin2,p1=p2] endmodule -label "finished" = pc1=3 &pc2=3 ; -label "all_coins_equal_0" = coin1=0 & coin2=0; -label "all_coins_equal_1" = coin1=1 & coin2=1; -label "agree" = coin1 = coin2; - -rewards "steps" - true : 1; -endrewards - - - diff --git a/examples/pmdp/coin2/coin2.prctl b/examples/pmdp/coin2/coin2.prctl deleted file mode 100644 index 2fe017f65..000000000 --- a/examples/pmdp/coin2/coin2.prctl +++ /dev/null @@ -1,4 +0,0 @@ -P>=0.25 [ F "finished"&"all_coins_equal_1" ] - - - diff --git a/examples/pmdp/coin2/coin2_128.pm b/examples/pmdp/coin2/coin2_128.pm deleted file mode 100644 index 73944141b..000000000 --- a/examples/pmdp/coin2/coin2_128.pm +++ /dev/null @@ -1,56 +0,0 @@ -//Randomised Consensus Protocol - -mdp -const double p1; // in [0.2 , 0.8] -const double p2; // in [0.2 , 0.8] - - -const int N=2; -const int K=128; -const int range = 2*(K+1)*N; -const int counter_init = (K+1)*N; -const int left = N; -const int right = 2*(K+1)*N - N; - -// shared coin -global counter : [0..range] init counter_init; - -module process1 - - // program counter - pc1 : [0..3]; - // 0 - flip - // 1 - write - // 2 - check - // 3 - finished - - // local coin - coin1 : [0..1]; - - // flip coin - [] (pc1=0) -> p1 : (coin1'=0) & (pc1'=1) + 1 - p1 : (coin1'=1) & (pc1'=1); - // write tails -1 (reset coin to add regularity) - [] (pc1=1) & (coin1=0) & (counter>0) -> (counter'=counter-1) & (pc1'=2) & (coin1'=0); - // write heads +1 (reset coin to add regularity) - [] (pc1=1) & (coin1=1) & (counter (counter'=counter+1) & (pc1'=2) & (coin1'=0); - // check - // decide tails - [] (pc1=2) & (counter<=left) -> (pc1'=3) & (coin1'=0); - // decide heads - [] (pc1=2) & (counter>=right) -> (pc1'=3) & (coin1'=1); - // flip again - [] (pc1=2) & (counter>left) & (counter (pc1'=0); - // loop (all loop together when done) - [done] (pc1=3) -> (pc1'=3); - -endmodule - -module process2 = process1[pc1=pc2,coin1=coin2,p1=p2] endmodule -label "finished" = pc1=3 &pc2=3 ; -label "all_coins_equal_1" = coin1=1 &coin2=1 ; -rewards "steps" - true : 1; -endrewards - - - diff --git a/examples/pmdp/coin2/coin2_16.pm b/examples/pmdp/coin2/coin2_16.pm deleted file mode 100644 index 0918beafe..000000000 --- a/examples/pmdp/coin2/coin2_16.pm +++ /dev/null @@ -1,56 +0,0 @@ -//Randomised Consensus Protocol - -mdp -const double p1; // in [0.2 , 0.8] -const double p2; // in [0.2 , 0.8] - - -const int N=2; -const int K=16; -const int range = 2*(K+1)*N; -const int counter_init = (K+1)*N; -const int left = N; -const int right = 2*(K+1)*N - N; - -// shared coin -global counter : [0..range] init counter_init; - -module process1 - - // program counter - pc1 : [0..3]; - // 0 - flip - // 1 - write - // 2 - check - // 3 - finished - - // local coin - coin1 : [0..1]; - - // flip coin - [] (pc1=0) -> p1 : (coin1'=0) & (pc1'=1) + 1 - p1 : (coin1'=1) & (pc1'=1); - // write tails -1 (reset coin to add regularity) - [] (pc1=1) & (coin1=0) & (counter>0) -> (counter'=counter-1) & (pc1'=2) & (coin1'=0); - // write heads +1 (reset coin to add regularity) - [] (pc1=1) & (coin1=1) & (counter (counter'=counter+1) & (pc1'=2) & (coin1'=0); - // check - // decide tails - [] (pc1=2) & (counter<=left) -> (pc1'=3) & (coin1'=0); - // decide heads - [] (pc1=2) & (counter>=right) -> (pc1'=3) & (coin1'=1); - // flip again - [] (pc1=2) & (counter>left) & (counter (pc1'=0); - // loop (all loop together when done) - [done] (pc1=3) -> (pc1'=3); - -endmodule - -module process2 = process1[pc1=pc2,coin1=coin2,p1=p2] endmodule -label "finished" = pc1=3 &pc2=3 ; -label "all_coins_equal_1" = coin1=1 &coin2=1 ; -rewards "steps" - true : 1; -endrewards - - - diff --git a/examples/pmdp/coin2/coin2_2.pm b/examples/pmdp/coin2/coin2_2.pm deleted file mode 100644 index 3f5358cdd..000000000 --- a/examples/pmdp/coin2/coin2_2.pm +++ /dev/null @@ -1,56 +0,0 @@ -//Randomised Consensus Protocol - -mdp -const double p1; // in [0.2 , 0.8] -const double p2; // in [0.2 , 0.8] - - -const int N=2; -const int K=2; -const int range = 2*(K+1)*N; -const int counter_init = (K+1)*N; -const int left = N; -const int right = 2*(K+1)*N - N; - -// shared coin -global counter : [0..range] init counter_init; - -module process1 - - // program counter - pc1 : [0..3]; - // 0 - flip - // 1 - write - // 2 - check - // 3 - finished - - // local coin - coin1 : [0..1]; - - // flip coin - [] (pc1=0) -> p1 : (coin1'=0) & (pc1'=1) + 1 - p1 : (coin1'=1) & (pc1'=1); - // write tails -1 (reset coin to add regularity) - [] (pc1=1) & (coin1=0) & (counter>0) -> (counter'=counter-1) & (pc1'=2) & (coin1'=0); - // write heads +1 (reset coin to add regularity) - [] (pc1=1) & (coin1=1) & (counter (counter'=counter+1) & (pc1'=2) & (coin1'=0); - // check - // decide tails - [] (pc1=2) & (counter<=left) -> (pc1'=3) & (coin1'=0); - // decide heads - [] (pc1=2) & (counter>=right) -> (pc1'=3) & (coin1'=1); - // flip again - [] (pc1=2) & (counter>left) & (counter (pc1'=0); - // loop (all loop together when done) - [done] (pc1=3) -> (pc1'=3); - -endmodule - -module process2 = process1[pc1=pc2,coin1=coin2,p1=p2] endmodule -label "finished" = pc1=3 &pc2=3 ; -label "all_coins_equal_1" = coin1=1 &coin2=1 ; -rewards "steps" - true : 1; -endrewards - - - diff --git a/examples/pmdp/coin2/coin2_32.pm b/examples/pmdp/coin2/coin2_32.pm deleted file mode 100644 index eb49c17ad..000000000 --- a/examples/pmdp/coin2/coin2_32.pm +++ /dev/null @@ -1,56 +0,0 @@ -//Randomised Consensus Protocol - -mdp -const double p1; // in [0.2 , 0.8] -const double p2; // in [0.2 , 0.8] - - -const int N=2; -const int K=32; -const int range = 2*(K+1)*N; -const int counter_init = (K+1)*N; -const int left = N; -const int right = 2*(K+1)*N - N; - -// shared coin -global counter : [0..range] init counter_init; - -module process1 - - // program counter - pc1 : [0..3]; - // 0 - flip - // 1 - write - // 2 - check - // 3 - finished - - // local coin - coin1 : [0..1]; - - // flip coin - [] (pc1=0) -> p1 : (coin1'=0) & (pc1'=1) + 1 - p1 : (coin1'=1) & (pc1'=1); - // write tails -1 (reset coin to add regularity) - [] (pc1=1) & (coin1=0) & (counter>0) -> (counter'=counter-1) & (pc1'=2) & (coin1'=0); - // write heads +1 (reset coin to add regularity) - [] (pc1=1) & (coin1=1) & (counter (counter'=counter+1) & (pc1'=2) & (coin1'=0); - // check - // decide tails - [] (pc1=2) & (counter<=left) -> (pc1'=3) & (coin1'=0); - // decide heads - [] (pc1=2) & (counter>=right) -> (pc1'=3) & (coin1'=1); - // flip again - [] (pc1=2) & (counter>left) & (counter (pc1'=0); - // loop (all loop together when done) - [done] (pc1=3) -> (pc1'=3); - -endmodule - -module process2 = process1[pc1=pc2,coin1=coin2,p1=p2] endmodule -label "finished" = pc1=3 &pc2=3 ; -label "all_coins_equal_1" = coin1=1 &coin2=1 ; -rewards "steps" - true : 1; -endrewards - - - diff --git a/examples/pmdp/coin2/coin2_4.pm b/examples/pmdp/coin2/coin2_4.pm deleted file mode 100644 index ce7bd1e80..000000000 --- a/examples/pmdp/coin2/coin2_4.pm +++ /dev/null @@ -1,56 +0,0 @@ -//Randomised Consensus Protocol - -mdp -const double p1; // in [0.2 , 0.8] -const double p2; // in [0.2 , 0.8] - - -const int N=2; -const int K=4; -const int range = 2*(K+1)*N; -const int counter_init = (K+1)*N; -const int left = N; -const int right = 2*(K+1)*N - N; - -// shared coin -global counter : [0..range] init counter_init; - -module process1 - - // program counter - pc1 : [0..3]; - // 0 - flip - // 1 - write - // 2 - check - // 3 - finished - - // local coin - coin1 : [0..1]; - - // flip coin - [] (pc1=0) -> p1 : (coin1'=0) & (pc1'=1) + 1 - p1 : (coin1'=1) & (pc1'=1); - // write tails -1 (reset coin to add regularity) - [] (pc1=1) & (coin1=0) & (counter>0) -> (counter'=counter-1) & (pc1'=2) & (coin1'=0); - // write heads +1 (reset coin to add regularity) - [] (pc1=1) & (coin1=1) & (counter (counter'=counter+1) & (pc1'=2) & (coin1'=0); - // check - // decide tails - [] (pc1=2) & (counter<=left) -> (pc1'=3) & (coin1'=0); - // decide heads - [] (pc1=2) & (counter>=right) -> (pc1'=3) & (coin1'=1); - // flip again - [] (pc1=2) & (counter>left) & (counter (pc1'=0); - // loop (all loop together when done) - [done] (pc1=3) -> (pc1'=3); - -endmodule - -module process2 = process1[pc1=pc2,coin1=coin2,p1=p2] endmodule -label "finished" = pc1=3 &pc2=3 ; -label "all_coins_equal_1" = coin1=1 &coin2=1 ; -rewards "steps" - true : 1; -endrewards - - - diff --git a/examples/pmdp/coin2/coin2_64.pm b/examples/pmdp/coin2/coin2_64.pm deleted file mode 100644 index 7f516964c..000000000 --- a/examples/pmdp/coin2/coin2_64.pm +++ /dev/null @@ -1,56 +0,0 @@ -//Randomised Consensus Protocol - -mdp -const double p1; // in [0.2 , 0.8] -const double p2; // in [0.2 , 0.8] - - -const int N=2; -const int K=64; -const int range = 2*(K+1)*N; -const int counter_init = (K+1)*N; -const int left = N; -const int right = 2*(K+1)*N - N; - -// shared coin -global counter : [0..range] init counter_init; - -module process1 - - // program counter - pc1 : [0..3]; - // 0 - flip - // 1 - write - // 2 - check - // 3 - finished - - // local coin - coin1 : [0..1]; - - // flip coin - [] (pc1=0) -> p1 : (coin1'=0) & (pc1'=1) + 1 - p1 : (coin1'=1) & (pc1'=1); - // write tails -1 (reset coin to add regularity) - [] (pc1=1) & (coin1=0) & (counter>0) -> (counter'=counter-1) & (pc1'=2) & (coin1'=0); - // write heads +1 (reset coin to add regularity) - [] (pc1=1) & (coin1=1) & (counter (counter'=counter+1) & (pc1'=2) & (coin1'=0); - // check - // decide tails - [] (pc1=2) & (counter<=left) -> (pc1'=3) & (coin1'=0); - // decide heads - [] (pc1=2) & (counter>=right) -> (pc1'=3) & (coin1'=1); - // flip again - [] (pc1=2) & (counter>left) & (counter (pc1'=0); - // loop (all loop together when done) - [done] (pc1=3) -> (pc1'=3); - -endmodule - -module process2 = process1[pc1=pc2,coin1=coin2,p1=p2] endmodule -label "finished" = pc1=3 &pc2=3 ; -label "all_coins_equal_1" = coin1=1 &coin2=1 ; -rewards "steps" - true : 1; -endrewards - - - diff --git a/examples/pmdp/coin2/coin2_7.pm b/examples/pmdp/coin2/coin2_7.pm deleted file mode 100644 index 8b86e2c6a..000000000 --- a/examples/pmdp/coin2/coin2_7.pm +++ /dev/null @@ -1,56 +0,0 @@ -//Randomised Consensus Protocol - -mdp -const double p1; // in [0.2 , 0.8] -const double p2; // in [0.2 , 0.8] - - -const int N=2; -const int K=7; -const int range = 2*(K+1)*N; -const int counter_init = (K+1)*N; -const int left = N; -const int right = 2*(K+1)*N - N; - -// shared coin -global counter : [0..range] init counter_init; - -module process1 - - // program counter - pc1 : [0..3]; - // 0 - flip - // 1 - write - // 2 - check - // 3 - finished - - // local coin - coin1 : [0..1]; - - // flip coin - [] (pc1=0) -> p1 : (coin1'=0) & (pc1'=1) + 1 - p1 : (coin1'=1) & (pc1'=1); - // write tails -1 (reset coin to add regularity) - [] (pc1=1) & (coin1=0) & (counter>0) -> (counter'=counter-1) & (pc1'=2) & (coin1'=0); - // write heads +1 (reset coin to add regularity) - [] (pc1=1) & (coin1=1) & (counter (counter'=counter+1) & (pc1'=2) & (coin1'=0); - // check - // decide tails - [] (pc1=2) & (counter<=left) -> (pc1'=3) & (coin1'=0); - // decide heads - [] (pc1=2) & (counter>=right) -> (pc1'=3) & (coin1'=1); - // flip again - [] (pc1=2) & (counter>left) & (counter (pc1'=0); - // loop (all loop together when done) - [done] (pc1=3) -> (pc1'=3); - -endmodule - -module process2 = process1[pc1=pc2,coin1=coin2,p1=p2] endmodule -label "finished" = pc1=3 &pc2=3 ; -label "all_coins_equal_1" = coin1=1 &coin2=1 ; -rewards "steps" - true : 1; -endrewards - - - diff --git a/examples/pmdp/coin2/coin2_8.pm b/examples/pmdp/coin2/coin2_8.pm deleted file mode 100644 index 81d9bf13c..000000000 --- a/examples/pmdp/coin2/coin2_8.pm +++ /dev/null @@ -1,56 +0,0 @@ -//Randomised Consensus Protocol - -mdp -const double p1; // in [0.2 , 0.8] -const double p2; // in [0.2 , 0.8] - - -const int N=2; -const int K=8; -const int range = 2*(K+1)*N; -const int counter_init = (K+1)*N; -const int left = N; -const int right = 2*(K+1)*N - N; - -// shared coin -global counter : [0..range] init counter_init; - -module process1 - - // program counter - pc1 : [0..3]; - // 0 - flip - // 1 - write - // 2 - check - // 3 - finished - - // local coin - coin1 : [0..1]; - - // flip coin - [] (pc1=0) -> p1 : (coin1'=0) & (pc1'=1) + 1 - p1 : (coin1'=1) & (pc1'=1); - // write tails -1 (reset coin to add regularity) - [] (pc1=1) & (coin1=0) & (counter>0) -> (counter'=counter-1) & (pc1'=2) & (coin1'=0); - // write heads +1 (reset coin to add regularity) - [] (pc1=1) & (coin1=1) & (counter (counter'=counter+1) & (pc1'=2) & (coin1'=0); - // check - // decide tails - [] (pc1=2) & (counter<=left) -> (pc1'=3) & (coin1'=0); - // decide heads - [] (pc1=2) & (counter>=right) -> (pc1'=3) & (coin1'=1); - // flip again - [] (pc1=2) & (counter>left) & (counter (pc1'=0); - // loop (all loop together when done) - [done] (pc1=3) -> (pc1'=3); - -endmodule - -module process2 = process1[pc1=pc2,coin1=coin2,p1=p2] endmodule -label "finished" = pc1=3 &pc2=3 ; -label "all_coins_equal_1" = coin1=1 &coin2=1 ; -rewards "steps" - true : 1; -endrewards - - - diff --git a/examples/pmdp/coin2/coin2_regions.txt b/examples/pmdp/coin2/coin2_regions.txt deleted file mode 100644 index 028dc16ef..000000000 --- a/examples/pmdp/coin2/coin2_regions.txt +++ /dev/null @@ -1,625 +0,0 @@ -0.000010<=p1<=0.040000, 0.000010<=p2<=0.040000; -0.000010<=p1<=0.040000, 0.040000<=p2<=0.080000; -0.000010<=p1<=0.040000, 0.080000<=p2<=0.120000; -0.000010<=p1<=0.040000, 0.120000<=p2<=0.160000; -0.000010<=p1<=0.040000, 0.160000<=p2<=0.200000; -0.000010<=p1<=0.040000, 0.200000<=p2<=0.240000; -0.000010<=p1<=0.040000, 0.240000<=p2<=0.280000; -0.000010<=p1<=0.040000, 0.280000<=p2<=0.320000; -0.000010<=p1<=0.040000, 0.320000<=p2<=0.360000; -0.000010<=p1<=0.040000, 0.360000<=p2<=0.400000; -0.000010<=p1<=0.040000, 0.400000<=p2<=0.440000; -0.000010<=p1<=0.040000, 0.440000<=p2<=0.480000; -0.000010<=p1<=0.040000, 0.480000<=p2<=0.520000; -0.000010<=p1<=0.040000, 0.520000<=p2<=0.560000; -0.000010<=p1<=0.040000, 0.560000<=p2<=0.600000; -0.000010<=p1<=0.040000, 0.600000<=p2<=0.640000; -0.000010<=p1<=0.040000, 0.640000<=p2<=0.680000; -0.000010<=p1<=0.040000, 0.680000<=p2<=0.720000; -0.000010<=p1<=0.040000, 0.720000<=p2<=0.760000; -0.000010<=p1<=0.040000, 0.760000<=p2<=0.800000; -0.000010<=p1<=0.040000, 0.800000<=p2<=0.840000; -0.000010<=p1<=0.040000, 0.840000<=p2<=0.880000; -0.000010<=p1<=0.040000, 0.880000<=p2<=0.920000; -0.000010<=p1<=0.040000, 0.920000<=p2<=0.960000; -0.000010<=p1<=0.040000, 0.960000<=p2<=0.999990; -0.040000<=p1<=0.080000, 0.000010<=p2<=0.040000; -0.040000<=p1<=0.080000, 0.040000<=p2<=0.080000; -0.040000<=p1<=0.080000, 0.080000<=p2<=0.120000; -0.040000<=p1<=0.080000, 0.120000<=p2<=0.160000; -0.040000<=p1<=0.080000, 0.160000<=p2<=0.200000; -0.040000<=p1<=0.080000, 0.200000<=p2<=0.240000; -0.040000<=p1<=0.080000, 0.240000<=p2<=0.280000; -0.040000<=p1<=0.080000, 0.280000<=p2<=0.320000; -0.040000<=p1<=0.080000, 0.320000<=p2<=0.360000; -0.040000<=p1<=0.080000, 0.360000<=p2<=0.400000; -0.040000<=p1<=0.080000, 0.400000<=p2<=0.440000; -0.040000<=p1<=0.080000, 0.440000<=p2<=0.480000; -0.040000<=p1<=0.080000, 0.480000<=p2<=0.520000; -0.040000<=p1<=0.080000, 0.520000<=p2<=0.560000; -0.040000<=p1<=0.080000, 0.560000<=p2<=0.600000; -0.040000<=p1<=0.080000, 0.600000<=p2<=0.640000; -0.040000<=p1<=0.080000, 0.640000<=p2<=0.680000; -0.040000<=p1<=0.080000, 0.680000<=p2<=0.720000; -0.040000<=p1<=0.080000, 0.720000<=p2<=0.760000; -0.040000<=p1<=0.080000, 0.760000<=p2<=0.800000; -0.040000<=p1<=0.080000, 0.800000<=p2<=0.840000; -0.040000<=p1<=0.080000, 0.840000<=p2<=0.880000; -0.040000<=p1<=0.080000, 0.880000<=p2<=0.920000; -0.040000<=p1<=0.080000, 0.920000<=p2<=0.960000; -0.040000<=p1<=0.080000, 0.960000<=p2<=0.999990; -0.080000<=p1<=0.120000, 0.000010<=p2<=0.040000; -0.080000<=p1<=0.120000, 0.040000<=p2<=0.080000; -0.080000<=p1<=0.120000, 0.080000<=p2<=0.120000; -0.080000<=p1<=0.120000, 0.120000<=p2<=0.160000; -0.080000<=p1<=0.120000, 0.160000<=p2<=0.200000; -0.080000<=p1<=0.120000, 0.200000<=p2<=0.240000; -0.080000<=p1<=0.120000, 0.240000<=p2<=0.280000; -0.080000<=p1<=0.120000, 0.280000<=p2<=0.320000; -0.080000<=p1<=0.120000, 0.320000<=p2<=0.360000; -0.080000<=p1<=0.120000, 0.360000<=p2<=0.400000; -0.080000<=p1<=0.120000, 0.400000<=p2<=0.440000; -0.080000<=p1<=0.120000, 0.440000<=p2<=0.480000; -0.080000<=p1<=0.120000, 0.480000<=p2<=0.520000; -0.080000<=p1<=0.120000, 0.520000<=p2<=0.560000; -0.080000<=p1<=0.120000, 0.560000<=p2<=0.600000; -0.080000<=p1<=0.120000, 0.600000<=p2<=0.640000; -0.080000<=p1<=0.120000, 0.640000<=p2<=0.680000; -0.080000<=p1<=0.120000, 0.680000<=p2<=0.720000; -0.080000<=p1<=0.120000, 0.720000<=p2<=0.760000; -0.080000<=p1<=0.120000, 0.760000<=p2<=0.800000; -0.080000<=p1<=0.120000, 0.800000<=p2<=0.840000; -0.080000<=p1<=0.120000, 0.840000<=p2<=0.880000; -0.080000<=p1<=0.120000, 0.880000<=p2<=0.920000; -0.080000<=p1<=0.120000, 0.920000<=p2<=0.960000; -0.080000<=p1<=0.120000, 0.960000<=p2<=0.999990; -0.120000<=p1<=0.160000, 0.000010<=p2<=0.040000; -0.120000<=p1<=0.160000, 0.040000<=p2<=0.080000; -0.120000<=p1<=0.160000, 0.080000<=p2<=0.120000; -0.120000<=p1<=0.160000, 0.120000<=p2<=0.160000; -0.120000<=p1<=0.160000, 0.160000<=p2<=0.200000; -0.120000<=p1<=0.160000, 0.200000<=p2<=0.240000; -0.120000<=p1<=0.160000, 0.240000<=p2<=0.280000; -0.120000<=p1<=0.160000, 0.280000<=p2<=0.320000; -0.120000<=p1<=0.160000, 0.320000<=p2<=0.360000; -0.120000<=p1<=0.160000, 0.360000<=p2<=0.400000; -0.120000<=p1<=0.160000, 0.400000<=p2<=0.440000; -0.120000<=p1<=0.160000, 0.440000<=p2<=0.480000; -0.120000<=p1<=0.160000, 0.480000<=p2<=0.520000; -0.120000<=p1<=0.160000, 0.520000<=p2<=0.560000; -0.120000<=p1<=0.160000, 0.560000<=p2<=0.600000; -0.120000<=p1<=0.160000, 0.600000<=p2<=0.640000; -0.120000<=p1<=0.160000, 0.640000<=p2<=0.680000; -0.120000<=p1<=0.160000, 0.680000<=p2<=0.720000; -0.120000<=p1<=0.160000, 0.720000<=p2<=0.760000; -0.120000<=p1<=0.160000, 0.760000<=p2<=0.800000; -0.120000<=p1<=0.160000, 0.800000<=p2<=0.840000; -0.120000<=p1<=0.160000, 0.840000<=p2<=0.880000; -0.120000<=p1<=0.160000, 0.880000<=p2<=0.920000; -0.120000<=p1<=0.160000, 0.920000<=p2<=0.960000; -0.120000<=p1<=0.160000, 0.960000<=p2<=0.999990; -0.160000<=p1<=0.200000, 0.000010<=p2<=0.040000; -0.160000<=p1<=0.200000, 0.040000<=p2<=0.080000; -0.160000<=p1<=0.200000, 0.080000<=p2<=0.120000; -0.160000<=p1<=0.200000, 0.120000<=p2<=0.160000; -0.160000<=p1<=0.200000, 0.160000<=p2<=0.200000; -0.160000<=p1<=0.200000, 0.200000<=p2<=0.240000; -0.160000<=p1<=0.200000, 0.240000<=p2<=0.280000; -0.160000<=p1<=0.200000, 0.280000<=p2<=0.320000; -0.160000<=p1<=0.200000, 0.320000<=p2<=0.360000; -0.160000<=p1<=0.200000, 0.360000<=p2<=0.400000; -0.160000<=p1<=0.200000, 0.400000<=p2<=0.440000; -0.160000<=p1<=0.200000, 0.440000<=p2<=0.480000; -0.160000<=p1<=0.200000, 0.480000<=p2<=0.520000; -0.160000<=p1<=0.200000, 0.520000<=p2<=0.560000; -0.160000<=p1<=0.200000, 0.560000<=p2<=0.600000; -0.160000<=p1<=0.200000, 0.600000<=p2<=0.640000; -0.160000<=p1<=0.200000, 0.640000<=p2<=0.680000; -0.160000<=p1<=0.200000, 0.680000<=p2<=0.720000; -0.160000<=p1<=0.200000, 0.720000<=p2<=0.760000; -0.160000<=p1<=0.200000, 0.760000<=p2<=0.800000; -0.160000<=p1<=0.200000, 0.800000<=p2<=0.840000; -0.160000<=p1<=0.200000, 0.840000<=p2<=0.880000; -0.160000<=p1<=0.200000, 0.880000<=p2<=0.920000; -0.160000<=p1<=0.200000, 0.920000<=p2<=0.960000; -0.160000<=p1<=0.200000, 0.960000<=p2<=0.999990; -0.200000<=p1<=0.240000, 0.000010<=p2<=0.040000; -0.200000<=p1<=0.240000, 0.040000<=p2<=0.080000; -0.200000<=p1<=0.240000, 0.080000<=p2<=0.120000; -0.200000<=p1<=0.240000, 0.120000<=p2<=0.160000; -0.200000<=p1<=0.240000, 0.160000<=p2<=0.200000; -0.200000<=p1<=0.240000, 0.200000<=p2<=0.240000; -0.200000<=p1<=0.240000, 0.240000<=p2<=0.280000; -0.200000<=p1<=0.240000, 0.280000<=p2<=0.320000; -0.200000<=p1<=0.240000, 0.320000<=p2<=0.360000; -0.200000<=p1<=0.240000, 0.360000<=p2<=0.400000; -0.200000<=p1<=0.240000, 0.400000<=p2<=0.440000; -0.200000<=p1<=0.240000, 0.440000<=p2<=0.480000; -0.200000<=p1<=0.240000, 0.480000<=p2<=0.520000; -0.200000<=p1<=0.240000, 0.520000<=p2<=0.560000; -0.200000<=p1<=0.240000, 0.560000<=p2<=0.600000; -0.200000<=p1<=0.240000, 0.600000<=p2<=0.640000; -0.200000<=p1<=0.240000, 0.640000<=p2<=0.680000; -0.200000<=p1<=0.240000, 0.680000<=p2<=0.720000; -0.200000<=p1<=0.240000, 0.720000<=p2<=0.760000; -0.200000<=p1<=0.240000, 0.760000<=p2<=0.800000; -0.200000<=p1<=0.240000, 0.800000<=p2<=0.840000; -0.200000<=p1<=0.240000, 0.840000<=p2<=0.880000; -0.200000<=p1<=0.240000, 0.880000<=p2<=0.920000; -0.200000<=p1<=0.240000, 0.920000<=p2<=0.960000; -0.200000<=p1<=0.240000, 0.960000<=p2<=0.999990; -0.240000<=p1<=0.280000, 0.000010<=p2<=0.040000; -0.240000<=p1<=0.280000, 0.040000<=p2<=0.080000; -0.240000<=p1<=0.280000, 0.080000<=p2<=0.120000; -0.240000<=p1<=0.280000, 0.120000<=p2<=0.160000; -0.240000<=p1<=0.280000, 0.160000<=p2<=0.200000; -0.240000<=p1<=0.280000, 0.200000<=p2<=0.240000; -0.240000<=p1<=0.280000, 0.240000<=p2<=0.280000; -0.240000<=p1<=0.280000, 0.280000<=p2<=0.320000; -0.240000<=p1<=0.280000, 0.320000<=p2<=0.360000; -0.240000<=p1<=0.280000, 0.360000<=p2<=0.400000; -0.240000<=p1<=0.280000, 0.400000<=p2<=0.440000; -0.240000<=p1<=0.280000, 0.440000<=p2<=0.480000; -0.240000<=p1<=0.280000, 0.480000<=p2<=0.520000; -0.240000<=p1<=0.280000, 0.520000<=p2<=0.560000; -0.240000<=p1<=0.280000, 0.560000<=p2<=0.600000; -0.240000<=p1<=0.280000, 0.600000<=p2<=0.640000; -0.240000<=p1<=0.280000, 0.640000<=p2<=0.680000; -0.240000<=p1<=0.280000, 0.680000<=p2<=0.720000; -0.240000<=p1<=0.280000, 0.720000<=p2<=0.760000; -0.240000<=p1<=0.280000, 0.760000<=p2<=0.800000; -0.240000<=p1<=0.280000, 0.800000<=p2<=0.840000; -0.240000<=p1<=0.280000, 0.840000<=p2<=0.880000; -0.240000<=p1<=0.280000, 0.880000<=p2<=0.920000; -0.240000<=p1<=0.280000, 0.920000<=p2<=0.960000; -0.240000<=p1<=0.280000, 0.960000<=p2<=0.999990; -0.280000<=p1<=0.320000, 0.000010<=p2<=0.040000; -0.280000<=p1<=0.320000, 0.040000<=p2<=0.080000; -0.280000<=p1<=0.320000, 0.080000<=p2<=0.120000; -0.280000<=p1<=0.320000, 0.120000<=p2<=0.160000; -0.280000<=p1<=0.320000, 0.160000<=p2<=0.200000; -0.280000<=p1<=0.320000, 0.200000<=p2<=0.240000; -0.280000<=p1<=0.320000, 0.240000<=p2<=0.280000; -0.280000<=p1<=0.320000, 0.280000<=p2<=0.320000; -0.280000<=p1<=0.320000, 0.320000<=p2<=0.360000; -0.280000<=p1<=0.320000, 0.360000<=p2<=0.400000; -0.280000<=p1<=0.320000, 0.400000<=p2<=0.440000; -0.280000<=p1<=0.320000, 0.440000<=p2<=0.480000; -0.280000<=p1<=0.320000, 0.480000<=p2<=0.520000; -0.280000<=p1<=0.320000, 0.520000<=p2<=0.560000; -0.280000<=p1<=0.320000, 0.560000<=p2<=0.600000; -0.280000<=p1<=0.320000, 0.600000<=p2<=0.640000; -0.280000<=p1<=0.320000, 0.640000<=p2<=0.680000; -0.280000<=p1<=0.320000, 0.680000<=p2<=0.720000; -0.280000<=p1<=0.320000, 0.720000<=p2<=0.760000; -0.280000<=p1<=0.320000, 0.760000<=p2<=0.800000; -0.280000<=p1<=0.320000, 0.800000<=p2<=0.840000; -0.280000<=p1<=0.320000, 0.840000<=p2<=0.880000; -0.280000<=p1<=0.320000, 0.880000<=p2<=0.920000; -0.280000<=p1<=0.320000, 0.920000<=p2<=0.960000; -0.280000<=p1<=0.320000, 0.960000<=p2<=0.999990; -0.320000<=p1<=0.360000, 0.000010<=p2<=0.040000; -0.320000<=p1<=0.360000, 0.040000<=p2<=0.080000; -0.320000<=p1<=0.360000, 0.080000<=p2<=0.120000; -0.320000<=p1<=0.360000, 0.120000<=p2<=0.160000; -0.320000<=p1<=0.360000, 0.160000<=p2<=0.200000; -0.320000<=p1<=0.360000, 0.200000<=p2<=0.240000; -0.320000<=p1<=0.360000, 0.240000<=p2<=0.280000; -0.320000<=p1<=0.360000, 0.280000<=p2<=0.320000; -0.320000<=p1<=0.360000, 0.320000<=p2<=0.360000; -0.320000<=p1<=0.360000, 0.360000<=p2<=0.400000; -0.320000<=p1<=0.360000, 0.400000<=p2<=0.440000; -0.320000<=p1<=0.360000, 0.440000<=p2<=0.480000; -0.320000<=p1<=0.360000, 0.480000<=p2<=0.520000; -0.320000<=p1<=0.360000, 0.520000<=p2<=0.560000; -0.320000<=p1<=0.360000, 0.560000<=p2<=0.600000; -0.320000<=p1<=0.360000, 0.600000<=p2<=0.640000; -0.320000<=p1<=0.360000, 0.640000<=p2<=0.680000; -0.320000<=p1<=0.360000, 0.680000<=p2<=0.720000; -0.320000<=p1<=0.360000, 0.720000<=p2<=0.760000; -0.320000<=p1<=0.360000, 0.760000<=p2<=0.800000; -0.320000<=p1<=0.360000, 0.800000<=p2<=0.840000; -0.320000<=p1<=0.360000, 0.840000<=p2<=0.880000; -0.320000<=p1<=0.360000, 0.880000<=p2<=0.920000; -0.320000<=p1<=0.360000, 0.920000<=p2<=0.960000; -0.320000<=p1<=0.360000, 0.960000<=p2<=0.999990; -0.360000<=p1<=0.400000, 0.000010<=p2<=0.040000; -0.360000<=p1<=0.400000, 0.040000<=p2<=0.080000; -0.360000<=p1<=0.400000, 0.080000<=p2<=0.120000; -0.360000<=p1<=0.400000, 0.120000<=p2<=0.160000; -0.360000<=p1<=0.400000, 0.160000<=p2<=0.200000; -0.360000<=p1<=0.400000, 0.200000<=p2<=0.240000; -0.360000<=p1<=0.400000, 0.240000<=p2<=0.280000; -0.360000<=p1<=0.400000, 0.280000<=p2<=0.320000; -0.360000<=p1<=0.400000, 0.320000<=p2<=0.360000; -0.360000<=p1<=0.400000, 0.360000<=p2<=0.400000; -0.360000<=p1<=0.400000, 0.400000<=p2<=0.440000; -0.360000<=p1<=0.400000, 0.440000<=p2<=0.480000; -0.360000<=p1<=0.400000, 0.480000<=p2<=0.520000; -0.360000<=p1<=0.400000, 0.520000<=p2<=0.560000; -0.360000<=p1<=0.400000, 0.560000<=p2<=0.600000; -0.360000<=p1<=0.400000, 0.600000<=p2<=0.640000; -0.360000<=p1<=0.400000, 0.640000<=p2<=0.680000; -0.360000<=p1<=0.400000, 0.680000<=p2<=0.720000; -0.360000<=p1<=0.400000, 0.720000<=p2<=0.760000; -0.360000<=p1<=0.400000, 0.760000<=p2<=0.800000; -0.360000<=p1<=0.400000, 0.800000<=p2<=0.840000; -0.360000<=p1<=0.400000, 0.840000<=p2<=0.880000; -0.360000<=p1<=0.400000, 0.880000<=p2<=0.920000; -0.360000<=p1<=0.400000, 0.920000<=p2<=0.960000; -0.360000<=p1<=0.400000, 0.960000<=p2<=0.999990; -0.400000<=p1<=0.440000, 0.000010<=p2<=0.040000; -0.400000<=p1<=0.440000, 0.040000<=p2<=0.080000; -0.400000<=p1<=0.440000, 0.080000<=p2<=0.120000; -0.400000<=p1<=0.440000, 0.120000<=p2<=0.160000; -0.400000<=p1<=0.440000, 0.160000<=p2<=0.200000; -0.400000<=p1<=0.440000, 0.200000<=p2<=0.240000; -0.400000<=p1<=0.440000, 0.240000<=p2<=0.280000; -0.400000<=p1<=0.440000, 0.280000<=p2<=0.320000; -0.400000<=p1<=0.440000, 0.320000<=p2<=0.360000; -0.400000<=p1<=0.440000, 0.360000<=p2<=0.400000; -0.400000<=p1<=0.440000, 0.400000<=p2<=0.440000; -0.400000<=p1<=0.440000, 0.440000<=p2<=0.480000; -0.400000<=p1<=0.440000, 0.480000<=p2<=0.520000; -0.400000<=p1<=0.440000, 0.520000<=p2<=0.560000; -0.400000<=p1<=0.440000, 0.560000<=p2<=0.600000; -0.400000<=p1<=0.440000, 0.600000<=p2<=0.640000; -0.400000<=p1<=0.440000, 0.640000<=p2<=0.680000; -0.400000<=p1<=0.440000, 0.680000<=p2<=0.720000; -0.400000<=p1<=0.440000, 0.720000<=p2<=0.760000; -0.400000<=p1<=0.440000, 0.760000<=p2<=0.800000; -0.400000<=p1<=0.440000, 0.800000<=p2<=0.840000; -0.400000<=p1<=0.440000, 0.840000<=p2<=0.880000; -0.400000<=p1<=0.440000, 0.880000<=p2<=0.920000; -0.400000<=p1<=0.440000, 0.920000<=p2<=0.960000; -0.400000<=p1<=0.440000, 0.960000<=p2<=0.999990; -0.440000<=p1<=0.480000, 0.000010<=p2<=0.040000; -0.440000<=p1<=0.480000, 0.040000<=p2<=0.080000; -0.440000<=p1<=0.480000, 0.080000<=p2<=0.120000; -0.440000<=p1<=0.480000, 0.120000<=p2<=0.160000; -0.440000<=p1<=0.480000, 0.160000<=p2<=0.200000; -0.440000<=p1<=0.480000, 0.200000<=p2<=0.240000; -0.440000<=p1<=0.480000, 0.240000<=p2<=0.280000; -0.440000<=p1<=0.480000, 0.280000<=p2<=0.320000; -0.440000<=p1<=0.480000, 0.320000<=p2<=0.360000; -0.440000<=p1<=0.480000, 0.360000<=p2<=0.400000; -0.440000<=p1<=0.480000, 0.400000<=p2<=0.440000; -0.440000<=p1<=0.480000, 0.440000<=p2<=0.480000; -0.440000<=p1<=0.480000, 0.480000<=p2<=0.520000; -0.440000<=p1<=0.480000, 0.520000<=p2<=0.560000; -0.440000<=p1<=0.480000, 0.560000<=p2<=0.600000; -0.440000<=p1<=0.480000, 0.600000<=p2<=0.640000; -0.440000<=p1<=0.480000, 0.640000<=p2<=0.680000; -0.440000<=p1<=0.480000, 0.680000<=p2<=0.720000; -0.440000<=p1<=0.480000, 0.720000<=p2<=0.760000; -0.440000<=p1<=0.480000, 0.760000<=p2<=0.800000; -0.440000<=p1<=0.480000, 0.800000<=p2<=0.840000; -0.440000<=p1<=0.480000, 0.840000<=p2<=0.880000; -0.440000<=p1<=0.480000, 0.880000<=p2<=0.920000; -0.440000<=p1<=0.480000, 0.920000<=p2<=0.960000; -0.440000<=p1<=0.480000, 0.960000<=p2<=0.999990; -0.480000<=p1<=0.520000, 0.000010<=p2<=0.040000; -0.480000<=p1<=0.520000, 0.040000<=p2<=0.080000; -0.480000<=p1<=0.520000, 0.080000<=p2<=0.120000; -0.480000<=p1<=0.520000, 0.120000<=p2<=0.160000; -0.480000<=p1<=0.520000, 0.160000<=p2<=0.200000; -0.480000<=p1<=0.520000, 0.200000<=p2<=0.240000; -0.480000<=p1<=0.520000, 0.240000<=p2<=0.280000; -0.480000<=p1<=0.520000, 0.280000<=p2<=0.320000; -0.480000<=p1<=0.520000, 0.320000<=p2<=0.360000; -0.480000<=p1<=0.520000, 0.360000<=p2<=0.400000; -0.480000<=p1<=0.520000, 0.400000<=p2<=0.440000; -0.480000<=p1<=0.520000, 0.440000<=p2<=0.480000; -0.480000<=p1<=0.520000, 0.480000<=p2<=0.520000; -0.480000<=p1<=0.520000, 0.520000<=p2<=0.560000; -0.480000<=p1<=0.520000, 0.560000<=p2<=0.600000; -0.480000<=p1<=0.520000, 0.600000<=p2<=0.640000; -0.480000<=p1<=0.520000, 0.640000<=p2<=0.680000; -0.480000<=p1<=0.520000, 0.680000<=p2<=0.720000; -0.480000<=p1<=0.520000, 0.720000<=p2<=0.760000; -0.480000<=p1<=0.520000, 0.760000<=p2<=0.800000; -0.480000<=p1<=0.520000, 0.800000<=p2<=0.840000; -0.480000<=p1<=0.520000, 0.840000<=p2<=0.880000; -0.480000<=p1<=0.520000, 0.880000<=p2<=0.920000; -0.480000<=p1<=0.520000, 0.920000<=p2<=0.960000; -0.480000<=p1<=0.520000, 0.960000<=p2<=0.999990; -0.520000<=p1<=0.560000, 0.000010<=p2<=0.040000; -0.520000<=p1<=0.560000, 0.040000<=p2<=0.080000; -0.520000<=p1<=0.560000, 0.080000<=p2<=0.120000; -0.520000<=p1<=0.560000, 0.120000<=p2<=0.160000; -0.520000<=p1<=0.560000, 0.160000<=p2<=0.200000; -0.520000<=p1<=0.560000, 0.200000<=p2<=0.240000; -0.520000<=p1<=0.560000, 0.240000<=p2<=0.280000; -0.520000<=p1<=0.560000, 0.280000<=p2<=0.320000; -0.520000<=p1<=0.560000, 0.320000<=p2<=0.360000; -0.520000<=p1<=0.560000, 0.360000<=p2<=0.400000; -0.520000<=p1<=0.560000, 0.400000<=p2<=0.440000; -0.520000<=p1<=0.560000, 0.440000<=p2<=0.480000; -0.520000<=p1<=0.560000, 0.480000<=p2<=0.520000; -0.520000<=p1<=0.560000, 0.520000<=p2<=0.560000; -0.520000<=p1<=0.560000, 0.560000<=p2<=0.600000; -0.520000<=p1<=0.560000, 0.600000<=p2<=0.640000; -0.520000<=p1<=0.560000, 0.640000<=p2<=0.680000; -0.520000<=p1<=0.560000, 0.680000<=p2<=0.720000; -0.520000<=p1<=0.560000, 0.720000<=p2<=0.760000; -0.520000<=p1<=0.560000, 0.760000<=p2<=0.800000; -0.520000<=p1<=0.560000, 0.800000<=p2<=0.840000; -0.520000<=p1<=0.560000, 0.840000<=p2<=0.880000; -0.520000<=p1<=0.560000, 0.880000<=p2<=0.920000; -0.520000<=p1<=0.560000, 0.920000<=p2<=0.960000; -0.520000<=p1<=0.560000, 0.960000<=p2<=0.999990; -0.560000<=p1<=0.600000, 0.000010<=p2<=0.040000; -0.560000<=p1<=0.600000, 0.040000<=p2<=0.080000; -0.560000<=p1<=0.600000, 0.080000<=p2<=0.120000; -0.560000<=p1<=0.600000, 0.120000<=p2<=0.160000; -0.560000<=p1<=0.600000, 0.160000<=p2<=0.200000; -0.560000<=p1<=0.600000, 0.200000<=p2<=0.240000; -0.560000<=p1<=0.600000, 0.240000<=p2<=0.280000; -0.560000<=p1<=0.600000, 0.280000<=p2<=0.320000; -0.560000<=p1<=0.600000, 0.320000<=p2<=0.360000; -0.560000<=p1<=0.600000, 0.360000<=p2<=0.400000; -0.560000<=p1<=0.600000, 0.400000<=p2<=0.440000; -0.560000<=p1<=0.600000, 0.440000<=p2<=0.480000; -0.560000<=p1<=0.600000, 0.480000<=p2<=0.520000; -0.560000<=p1<=0.600000, 0.520000<=p2<=0.560000; -0.560000<=p1<=0.600000, 0.560000<=p2<=0.600000; -0.560000<=p1<=0.600000, 0.600000<=p2<=0.640000; -0.560000<=p1<=0.600000, 0.640000<=p2<=0.680000; -0.560000<=p1<=0.600000, 0.680000<=p2<=0.720000; -0.560000<=p1<=0.600000, 0.720000<=p2<=0.760000; -0.560000<=p1<=0.600000, 0.760000<=p2<=0.800000; -0.560000<=p1<=0.600000, 0.800000<=p2<=0.840000; -0.560000<=p1<=0.600000, 0.840000<=p2<=0.880000; -0.560000<=p1<=0.600000, 0.880000<=p2<=0.920000; -0.560000<=p1<=0.600000, 0.920000<=p2<=0.960000; -0.560000<=p1<=0.600000, 0.960000<=p2<=0.999990; -0.600000<=p1<=0.640000, 0.000010<=p2<=0.040000; -0.600000<=p1<=0.640000, 0.040000<=p2<=0.080000; -0.600000<=p1<=0.640000, 0.080000<=p2<=0.120000; -0.600000<=p1<=0.640000, 0.120000<=p2<=0.160000; -0.600000<=p1<=0.640000, 0.160000<=p2<=0.200000; -0.600000<=p1<=0.640000, 0.200000<=p2<=0.240000; -0.600000<=p1<=0.640000, 0.240000<=p2<=0.280000; -0.600000<=p1<=0.640000, 0.280000<=p2<=0.320000; -0.600000<=p1<=0.640000, 0.320000<=p2<=0.360000; -0.600000<=p1<=0.640000, 0.360000<=p2<=0.400000; -0.600000<=p1<=0.640000, 0.400000<=p2<=0.440000; -0.600000<=p1<=0.640000, 0.440000<=p2<=0.480000; -0.600000<=p1<=0.640000, 0.480000<=p2<=0.520000; -0.600000<=p1<=0.640000, 0.520000<=p2<=0.560000; -0.600000<=p1<=0.640000, 0.560000<=p2<=0.600000; -0.600000<=p1<=0.640000, 0.600000<=p2<=0.640000; -0.600000<=p1<=0.640000, 0.640000<=p2<=0.680000; -0.600000<=p1<=0.640000, 0.680000<=p2<=0.720000; -0.600000<=p1<=0.640000, 0.720000<=p2<=0.760000; -0.600000<=p1<=0.640000, 0.760000<=p2<=0.800000; -0.600000<=p1<=0.640000, 0.800000<=p2<=0.840000; -0.600000<=p1<=0.640000, 0.840000<=p2<=0.880000; -0.600000<=p1<=0.640000, 0.880000<=p2<=0.920000; -0.600000<=p1<=0.640000, 0.920000<=p2<=0.960000; -0.600000<=p1<=0.640000, 0.960000<=p2<=0.999990; -0.640000<=p1<=0.680000, 0.000010<=p2<=0.040000; -0.640000<=p1<=0.680000, 0.040000<=p2<=0.080000; -0.640000<=p1<=0.680000, 0.080000<=p2<=0.120000; -0.640000<=p1<=0.680000, 0.120000<=p2<=0.160000; -0.640000<=p1<=0.680000, 0.160000<=p2<=0.200000; -0.640000<=p1<=0.680000, 0.200000<=p2<=0.240000; -0.640000<=p1<=0.680000, 0.240000<=p2<=0.280000; -0.640000<=p1<=0.680000, 0.280000<=p2<=0.320000; -0.640000<=p1<=0.680000, 0.320000<=p2<=0.360000; -0.640000<=p1<=0.680000, 0.360000<=p2<=0.400000; -0.640000<=p1<=0.680000, 0.400000<=p2<=0.440000; -0.640000<=p1<=0.680000, 0.440000<=p2<=0.480000; -0.640000<=p1<=0.680000, 0.480000<=p2<=0.520000; -0.640000<=p1<=0.680000, 0.520000<=p2<=0.560000; -0.640000<=p1<=0.680000, 0.560000<=p2<=0.600000; -0.640000<=p1<=0.680000, 0.600000<=p2<=0.640000; -0.640000<=p1<=0.680000, 0.640000<=p2<=0.680000; -0.640000<=p1<=0.680000, 0.680000<=p2<=0.720000; -0.640000<=p1<=0.680000, 0.720000<=p2<=0.760000; -0.640000<=p1<=0.680000, 0.760000<=p2<=0.800000; -0.640000<=p1<=0.680000, 0.800000<=p2<=0.840000; -0.640000<=p1<=0.680000, 0.840000<=p2<=0.880000; -0.640000<=p1<=0.680000, 0.880000<=p2<=0.920000; -0.640000<=p1<=0.680000, 0.920000<=p2<=0.960000; -0.640000<=p1<=0.680000, 0.960000<=p2<=0.999990; -0.680000<=p1<=0.720000, 0.000010<=p2<=0.040000; -0.680000<=p1<=0.720000, 0.040000<=p2<=0.080000; -0.680000<=p1<=0.720000, 0.080000<=p2<=0.120000; -0.680000<=p1<=0.720000, 0.120000<=p2<=0.160000; -0.680000<=p1<=0.720000, 0.160000<=p2<=0.200000; -0.680000<=p1<=0.720000, 0.200000<=p2<=0.240000; -0.680000<=p1<=0.720000, 0.240000<=p2<=0.280000; -0.680000<=p1<=0.720000, 0.280000<=p2<=0.320000; -0.680000<=p1<=0.720000, 0.320000<=p2<=0.360000; -0.680000<=p1<=0.720000, 0.360000<=p2<=0.400000; -0.680000<=p1<=0.720000, 0.400000<=p2<=0.440000; -0.680000<=p1<=0.720000, 0.440000<=p2<=0.480000; -0.680000<=p1<=0.720000, 0.480000<=p2<=0.520000; -0.680000<=p1<=0.720000, 0.520000<=p2<=0.560000; -0.680000<=p1<=0.720000, 0.560000<=p2<=0.600000; -0.680000<=p1<=0.720000, 0.600000<=p2<=0.640000; -0.680000<=p1<=0.720000, 0.640000<=p2<=0.680000; -0.680000<=p1<=0.720000, 0.680000<=p2<=0.720000; -0.680000<=p1<=0.720000, 0.720000<=p2<=0.760000; -0.680000<=p1<=0.720000, 0.760000<=p2<=0.800000; -0.680000<=p1<=0.720000, 0.800000<=p2<=0.840000; -0.680000<=p1<=0.720000, 0.840000<=p2<=0.880000; -0.680000<=p1<=0.720000, 0.880000<=p2<=0.920000; -0.680000<=p1<=0.720000, 0.920000<=p2<=0.960000; -0.680000<=p1<=0.720000, 0.960000<=p2<=0.999990; -0.720000<=p1<=0.760000, 0.000010<=p2<=0.040000; -0.720000<=p1<=0.760000, 0.040000<=p2<=0.080000; -0.720000<=p1<=0.760000, 0.080000<=p2<=0.120000; -0.720000<=p1<=0.760000, 0.120000<=p2<=0.160000; -0.720000<=p1<=0.760000, 0.160000<=p2<=0.200000; -0.720000<=p1<=0.760000, 0.200000<=p2<=0.240000; -0.720000<=p1<=0.760000, 0.240000<=p2<=0.280000; -0.720000<=p1<=0.760000, 0.280000<=p2<=0.320000; -0.720000<=p1<=0.760000, 0.320000<=p2<=0.360000; -0.720000<=p1<=0.760000, 0.360000<=p2<=0.400000; -0.720000<=p1<=0.760000, 0.400000<=p2<=0.440000; -0.720000<=p1<=0.760000, 0.440000<=p2<=0.480000; -0.720000<=p1<=0.760000, 0.480000<=p2<=0.520000; -0.720000<=p1<=0.760000, 0.520000<=p2<=0.560000; -0.720000<=p1<=0.760000, 0.560000<=p2<=0.600000; -0.720000<=p1<=0.760000, 0.600000<=p2<=0.640000; -0.720000<=p1<=0.760000, 0.640000<=p2<=0.680000; -0.720000<=p1<=0.760000, 0.680000<=p2<=0.720000; -0.720000<=p1<=0.760000, 0.720000<=p2<=0.760000; -0.720000<=p1<=0.760000, 0.760000<=p2<=0.800000; -0.720000<=p1<=0.760000, 0.800000<=p2<=0.840000; -0.720000<=p1<=0.760000, 0.840000<=p2<=0.880000; -0.720000<=p1<=0.760000, 0.880000<=p2<=0.920000; -0.720000<=p1<=0.760000, 0.920000<=p2<=0.960000; -0.720000<=p1<=0.760000, 0.960000<=p2<=0.999990; -0.760000<=p1<=0.800000, 0.000010<=p2<=0.040000; -0.760000<=p1<=0.800000, 0.040000<=p2<=0.080000; -0.760000<=p1<=0.800000, 0.080000<=p2<=0.120000; -0.760000<=p1<=0.800000, 0.120000<=p2<=0.160000; -0.760000<=p1<=0.800000, 0.160000<=p2<=0.200000; -0.760000<=p1<=0.800000, 0.200000<=p2<=0.240000; -0.760000<=p1<=0.800000, 0.240000<=p2<=0.280000; -0.760000<=p1<=0.800000, 0.280000<=p2<=0.320000; -0.760000<=p1<=0.800000, 0.320000<=p2<=0.360000; -0.760000<=p1<=0.800000, 0.360000<=p2<=0.400000; -0.760000<=p1<=0.800000, 0.400000<=p2<=0.440000; -0.760000<=p1<=0.800000, 0.440000<=p2<=0.480000; -0.760000<=p1<=0.800000, 0.480000<=p2<=0.520000; -0.760000<=p1<=0.800000, 0.520000<=p2<=0.560000; -0.760000<=p1<=0.800000, 0.560000<=p2<=0.600000; -0.760000<=p1<=0.800000, 0.600000<=p2<=0.640000; -0.760000<=p1<=0.800000, 0.640000<=p2<=0.680000; -0.760000<=p1<=0.800000, 0.680000<=p2<=0.720000; -0.760000<=p1<=0.800000, 0.720000<=p2<=0.760000; -0.760000<=p1<=0.800000, 0.760000<=p2<=0.800000; -0.760000<=p1<=0.800000, 0.800000<=p2<=0.840000; -0.760000<=p1<=0.800000, 0.840000<=p2<=0.880000; -0.760000<=p1<=0.800000, 0.880000<=p2<=0.920000; -0.760000<=p1<=0.800000, 0.920000<=p2<=0.960000; -0.760000<=p1<=0.800000, 0.960000<=p2<=0.999990; -0.800000<=p1<=0.840000, 0.000010<=p2<=0.040000; -0.800000<=p1<=0.840000, 0.040000<=p2<=0.080000; -0.800000<=p1<=0.840000, 0.080000<=p2<=0.120000; -0.800000<=p1<=0.840000, 0.120000<=p2<=0.160000; -0.800000<=p1<=0.840000, 0.160000<=p2<=0.200000; -0.800000<=p1<=0.840000, 0.200000<=p2<=0.240000; -0.800000<=p1<=0.840000, 0.240000<=p2<=0.280000; -0.800000<=p1<=0.840000, 0.280000<=p2<=0.320000; -0.800000<=p1<=0.840000, 0.320000<=p2<=0.360000; -0.800000<=p1<=0.840000, 0.360000<=p2<=0.400000; -0.800000<=p1<=0.840000, 0.400000<=p2<=0.440000; -0.800000<=p1<=0.840000, 0.440000<=p2<=0.480000; -0.800000<=p1<=0.840000, 0.480000<=p2<=0.520000; -0.800000<=p1<=0.840000, 0.520000<=p2<=0.560000; -0.800000<=p1<=0.840000, 0.560000<=p2<=0.600000; -0.800000<=p1<=0.840000, 0.600000<=p2<=0.640000; -0.800000<=p1<=0.840000, 0.640000<=p2<=0.680000; -0.800000<=p1<=0.840000, 0.680000<=p2<=0.720000; -0.800000<=p1<=0.840000, 0.720000<=p2<=0.760000; -0.800000<=p1<=0.840000, 0.760000<=p2<=0.800000; -0.800000<=p1<=0.840000, 0.800000<=p2<=0.840000; -0.800000<=p1<=0.840000, 0.840000<=p2<=0.880000; -0.800000<=p1<=0.840000, 0.880000<=p2<=0.920000; -0.800000<=p1<=0.840000, 0.920000<=p2<=0.960000; -0.800000<=p1<=0.840000, 0.960000<=p2<=0.999990; -0.840000<=p1<=0.880000, 0.000010<=p2<=0.040000; -0.840000<=p1<=0.880000, 0.040000<=p2<=0.080000; -0.840000<=p1<=0.880000, 0.080000<=p2<=0.120000; -0.840000<=p1<=0.880000, 0.120000<=p2<=0.160000; -0.840000<=p1<=0.880000, 0.160000<=p2<=0.200000; -0.840000<=p1<=0.880000, 0.200000<=p2<=0.240000; -0.840000<=p1<=0.880000, 0.240000<=p2<=0.280000; -0.840000<=p1<=0.880000, 0.280000<=p2<=0.320000; -0.840000<=p1<=0.880000, 0.320000<=p2<=0.360000; -0.840000<=p1<=0.880000, 0.360000<=p2<=0.400000; -0.840000<=p1<=0.880000, 0.400000<=p2<=0.440000; -0.840000<=p1<=0.880000, 0.440000<=p2<=0.480000; -0.840000<=p1<=0.880000, 0.480000<=p2<=0.520000; -0.840000<=p1<=0.880000, 0.520000<=p2<=0.560000; -0.840000<=p1<=0.880000, 0.560000<=p2<=0.600000; -0.840000<=p1<=0.880000, 0.600000<=p2<=0.640000; -0.840000<=p1<=0.880000, 0.640000<=p2<=0.680000; -0.840000<=p1<=0.880000, 0.680000<=p2<=0.720000; -0.840000<=p1<=0.880000, 0.720000<=p2<=0.760000; -0.840000<=p1<=0.880000, 0.760000<=p2<=0.800000; -0.840000<=p1<=0.880000, 0.800000<=p2<=0.840000; -0.840000<=p1<=0.880000, 0.840000<=p2<=0.880000; -0.840000<=p1<=0.880000, 0.880000<=p2<=0.920000; -0.840000<=p1<=0.880000, 0.920000<=p2<=0.960000; -0.840000<=p1<=0.880000, 0.960000<=p2<=0.999990; -0.880000<=p1<=0.920000, 0.000010<=p2<=0.040000; -0.880000<=p1<=0.920000, 0.040000<=p2<=0.080000; -0.880000<=p1<=0.920000, 0.080000<=p2<=0.120000; -0.880000<=p1<=0.920000, 0.120000<=p2<=0.160000; -0.880000<=p1<=0.920000, 0.160000<=p2<=0.200000; -0.880000<=p1<=0.920000, 0.200000<=p2<=0.240000; -0.880000<=p1<=0.920000, 0.240000<=p2<=0.280000; -0.880000<=p1<=0.920000, 0.280000<=p2<=0.320000; -0.880000<=p1<=0.920000, 0.320000<=p2<=0.360000; -0.880000<=p1<=0.920000, 0.360000<=p2<=0.400000; -0.880000<=p1<=0.920000, 0.400000<=p2<=0.440000; -0.880000<=p1<=0.920000, 0.440000<=p2<=0.480000; -0.880000<=p1<=0.920000, 0.480000<=p2<=0.520000; -0.880000<=p1<=0.920000, 0.520000<=p2<=0.560000; -0.880000<=p1<=0.920000, 0.560000<=p2<=0.600000; -0.880000<=p1<=0.920000, 0.600000<=p2<=0.640000; -0.880000<=p1<=0.920000, 0.640000<=p2<=0.680000; -0.880000<=p1<=0.920000, 0.680000<=p2<=0.720000; -0.880000<=p1<=0.920000, 0.720000<=p2<=0.760000; -0.880000<=p1<=0.920000, 0.760000<=p2<=0.800000; -0.880000<=p1<=0.920000, 0.800000<=p2<=0.840000; -0.880000<=p1<=0.920000, 0.840000<=p2<=0.880000; -0.880000<=p1<=0.920000, 0.880000<=p2<=0.920000; -0.880000<=p1<=0.920000, 0.920000<=p2<=0.960000; -0.880000<=p1<=0.920000, 0.960000<=p2<=0.999990; -0.920000<=p1<=0.960000, 0.000010<=p2<=0.040000; -0.920000<=p1<=0.960000, 0.040000<=p2<=0.080000; -0.920000<=p1<=0.960000, 0.080000<=p2<=0.120000; -0.920000<=p1<=0.960000, 0.120000<=p2<=0.160000; -0.920000<=p1<=0.960000, 0.160000<=p2<=0.200000; -0.920000<=p1<=0.960000, 0.200000<=p2<=0.240000; -0.920000<=p1<=0.960000, 0.240000<=p2<=0.280000; -0.920000<=p1<=0.960000, 0.280000<=p2<=0.320000; -0.920000<=p1<=0.960000, 0.320000<=p2<=0.360000; -0.920000<=p1<=0.960000, 0.360000<=p2<=0.400000; -0.920000<=p1<=0.960000, 0.400000<=p2<=0.440000; -0.920000<=p1<=0.960000, 0.440000<=p2<=0.480000; -0.920000<=p1<=0.960000, 0.480000<=p2<=0.520000; -0.920000<=p1<=0.960000, 0.520000<=p2<=0.560000; -0.920000<=p1<=0.960000, 0.560000<=p2<=0.600000; -0.920000<=p1<=0.960000, 0.600000<=p2<=0.640000; -0.920000<=p1<=0.960000, 0.640000<=p2<=0.680000; -0.920000<=p1<=0.960000, 0.680000<=p2<=0.720000; -0.920000<=p1<=0.960000, 0.720000<=p2<=0.760000; -0.920000<=p1<=0.960000, 0.760000<=p2<=0.800000; -0.920000<=p1<=0.960000, 0.800000<=p2<=0.840000; -0.920000<=p1<=0.960000, 0.840000<=p2<=0.880000; -0.920000<=p1<=0.960000, 0.880000<=p2<=0.920000; -0.920000<=p1<=0.960000, 0.920000<=p2<=0.960000; -0.920000<=p1<=0.960000, 0.960000<=p2<=0.999990; -0.960000<=p1<=0.999990, 0.000010<=p2<=0.040000; -0.960000<=p1<=0.999990, 0.040000<=p2<=0.080000; -0.960000<=p1<=0.999990, 0.080000<=p2<=0.120000; -0.960000<=p1<=0.999990, 0.120000<=p2<=0.160000; -0.960000<=p1<=0.999990, 0.160000<=p2<=0.200000; -0.960000<=p1<=0.999990, 0.200000<=p2<=0.240000; -0.960000<=p1<=0.999990, 0.240000<=p2<=0.280000; -0.960000<=p1<=0.999990, 0.280000<=p2<=0.320000; -0.960000<=p1<=0.999990, 0.320000<=p2<=0.360000; -0.960000<=p1<=0.999990, 0.360000<=p2<=0.400000; -0.960000<=p1<=0.999990, 0.400000<=p2<=0.440000; -0.960000<=p1<=0.999990, 0.440000<=p2<=0.480000; -0.960000<=p1<=0.999990, 0.480000<=p2<=0.520000; -0.960000<=p1<=0.999990, 0.520000<=p2<=0.560000; -0.960000<=p1<=0.999990, 0.560000<=p2<=0.600000; -0.960000<=p1<=0.999990, 0.600000<=p2<=0.640000; -0.960000<=p1<=0.999990, 0.640000<=p2<=0.680000; -0.960000<=p1<=0.999990, 0.680000<=p2<=0.720000; -0.960000<=p1<=0.999990, 0.720000<=p2<=0.760000; -0.960000<=p1<=0.999990, 0.760000<=p2<=0.800000; -0.960000<=p1<=0.999990, 0.800000<=p2<=0.840000; -0.960000<=p1<=0.999990, 0.840000<=p2<=0.880000; -0.960000<=p1<=0.999990, 0.880000<=p2<=0.920000; -0.960000<=p1<=0.999990, 0.920000<=p2<=0.960000; -0.960000<=p1<=0.999990, 0.960000<=p2<=0.999990; diff --git a/examples/pmdp/coin2/coin2_space.txt b/examples/pmdp/coin2/coin2_space.txt deleted file mode 100644 index 618c29eee..000000000 --- a/examples/pmdp/coin2/coin2_space.txt +++ /dev/null @@ -1,2 +0,0 @@ -0.000010<=p1<=0.999990, 0.000010<=p2<=0.999990; - diff --git a/examples/pmdp/coin2/models b/examples/pmdp/coin2/models deleted file mode 100644 index 00f6f4cd9..000000000 --- a/examples/pmdp/coin2/models +++ /dev/null @@ -1,2 +0,0 @@ -coin2.pm -const K=2 -coin2.pm -const K=32 diff --git a/examples/pmdp/coin4/coin4.pm b/examples/pmdp/coin4/coin4.pm deleted file mode 100644 index d3648919f..000000000 --- a/examples/pmdp/coin4/coin4.pm +++ /dev/null @@ -1,64 +0,0 @@ -//Randomised Consensus Protocol - -mdp -const double p1; // in [0.2 , 0.8] -const double p2; // in [0.2 , 0.8] -const double p3; // in [0.2 , 0.8] -const double p4; // in [0.2 , 0.8] - - -const int N=4; -const int K; -const int range = 2*(K+1)*N; -const int counter_init = (K+1)*N; -const int left = N; -const int right = 2*(K+1)*N - N; - -// shared coin -global counter : [0..range] init counter_init; - -module process1 - - // program counter - pc1 : [0..3]; - // 0 - flip - // 1 - write - // 2 - check - // 3 - finished - - // local coin - coin1 : [0..1]; - - // flip coin - [] (pc1=0) -> p1 : (coin1'=0) & (pc1'=1) + 1 - p1 : (coin1'=1) & (pc1'=1); - // write tails -1 (reset coin to add regularity) - [] (pc1=1) & (coin1=0) & (counter>0) -> (counter'=counter-1) & (pc1'=2) & (coin1'=0); - // write heads +1 (reset coin to add regularity) - [] (pc1=1) & (coin1=1) & (counter (counter'=counter+1) & (pc1'=2) & (coin1'=0); - // check - // decide tails - [] (pc1=2) & (counter<=left) -> (pc1'=3) & (coin1'=0); - // decide heads - [] (pc1=2) & (counter>=right) -> (pc1'=3) & (coin1'=1); - // flip again - [] (pc1=2) & (counter>left) & (counter (pc1'=0); - // loop (all loop together when done) - [done] (pc1=3) -> (pc1'=3); - -endmodule - -module process2 = process1[pc1=pc2,coin1=coin2,p1=p2] endmodule -module process3 = process1[pc1=pc3,coin1=coin3,p1=p3] endmodule -module process4 = process1[pc1=pc4,coin1=coin4,p1=p4] endmodule - -label "finished" = pc1=3 &pc2=3 &pc3=3 &pc4=3; -label "all_coins_equal_1" = coin1=1 &coin2=1 &coin3=1 &coin4=1 ; -label "all_coins_equal_0" = coin1=0 & coin2=0 & coin3 = 0 & coin4 = 0; -label "agree" = coin1=coin2 & coin2=coin3 & coin3 = coin4; - -rewards "steps" - true : 1; -endrewards - - - diff --git a/examples/pmdp/coin4/coin4.prctl b/examples/pmdp/coin4/coin4.prctl deleted file mode 100644 index 2fe017f65..000000000 --- a/examples/pmdp/coin4/coin4.prctl +++ /dev/null @@ -1,4 +0,0 @@ -P>=0.25 [ F "finished"&"all_coins_equal_1" ] - - - diff --git a/examples/pmdp/coin4/coin4_16.pm b/examples/pmdp/coin4/coin4_16.pm deleted file mode 100644 index 9d4f8aca5..000000000 --- a/examples/pmdp/coin4/coin4_16.pm +++ /dev/null @@ -1,61 +0,0 @@ -//Randomised Consensus Protocol - -mdp -const double p1; // in [0.2 , 0.8] -const double p2; // in [0.2 , 0.8] -const double p3; // in [0.2 , 0.8] -const double p4; // in [0.2 , 0.8] - - -const int N=4; -const int K=16; -const int range = 2*(K+1)*N; -const int counter_init = (K+1)*N; -const int left = N; -const int right = 2*(K+1)*N - N; - -// shared coin -global counter : [0..range] init counter_init; - -module process1 - - // program counter - pc1 : [0..3]; - // 0 - flip - // 1 - write - // 2 - check - // 3 - finished - - // local coin - coin1 : [0..1]; - - // flip coin - [] (pc1=0) -> p1 : (coin1'=0) & (pc1'=1) + 1 - p1 : (coin1'=1) & (pc1'=1); - // write tails -1 (reset coin to add regularity) - [] (pc1=1) & (coin1=0) & (counter>0) -> (counter'=counter-1) & (pc1'=2) & (coin1'=0); - // write heads +1 (reset coin to add regularity) - [] (pc1=1) & (coin1=1) & (counter (counter'=counter+1) & (pc1'=2) & (coin1'=0); - // check - // decide tails - [] (pc1=2) & (counter<=left) -> (pc1'=3) & (coin1'=0); - // decide heads - [] (pc1=2) & (counter>=right) -> (pc1'=3) & (coin1'=1); - // flip again - [] (pc1=2) & (counter>left) & (counter (pc1'=0); - // loop (all loop together when done) - [done] (pc1=3) -> (pc1'=3); - -endmodule - -module process2 = process1[pc1=pc2,coin1=coin2,p1=p2] endmodule -module process3 = process1[pc1=pc3,coin1=coin3,p1=p3] endmodule -module process4 = process1[pc1=pc4,coin1=coin4,p1=p4] endmodule - -label "finished" = pc1=3 &pc2=3 &pc3=3 &pc4=3; -label "all_coins_equal_1" = coin1=1 &coin2=1 &coin3=1 &coin4=1 ; -rewards "steps" - true : 1; -endrewards - - - diff --git a/examples/pmdp/coin4/coin4_2.pm b/examples/pmdp/coin4/coin4_2.pm deleted file mode 100644 index bf328a4f0..000000000 --- a/examples/pmdp/coin4/coin4_2.pm +++ /dev/null @@ -1,61 +0,0 @@ -//Randomised Consensus Protocol - -mdp -const double p1; // in [0.2 , 0.8] -const double p2; // in [0.2 , 0.8] -const double p3; // in [0.2 , 0.8] -const double p4; // in [0.2 , 0.8] - - -const int N=4; -const int K=2; -const int range = 2*(K+1)*N; -const int counter_init = (K+1)*N; -const int left = N; -const int right = 2*(K+1)*N - N; - -// shared coin -global counter : [0..range] init counter_init; - -module process1 - - // program counter - pc1 : [0..3]; - // 0 - flip - // 1 - write - // 2 - check - // 3 - finished - - // local coin - coin1 : [0..1]; - - // flip coin - [] (pc1=0) -> p1 : (coin1'=0) & (pc1'=1) + 1 - p1 : (coin1'=1) & (pc1'=1); - // write tails -1 (reset coin to add regularity) - [] (pc1=1) & (coin1=0) & (counter>0) -> (counter'=counter-1) & (pc1'=2) & (coin1'=0); - // write heads +1 (reset coin to add regularity) - [] (pc1=1) & (coin1=1) & (counter (counter'=counter+1) & (pc1'=2) & (coin1'=0); - // check - // decide tails - [] (pc1=2) & (counter<=left) -> (pc1'=3) & (coin1'=0); - // decide heads - [] (pc1=2) & (counter>=right) -> (pc1'=3) & (coin1'=1); - // flip again - [] (pc1=2) & (counter>left) & (counter (pc1'=0); - // loop (all loop together when done) - [done] (pc1=3) -> (pc1'=3); - -endmodule - -module process2 = process1[pc1=pc2,coin1=coin2,p1=p2] endmodule -module process3 = process1[pc1=pc3,coin1=coin3,p1=p3] endmodule -module process4 = process1[pc1=pc4,coin1=coin4,p1=p4] endmodule - -label "finished" = pc1=3 &pc2=3 &pc3=3 &pc4=3; -label "all_coins_equal_1" = coin1=1 &coin2=1 &coin3=1 &coin4=1 ; -rewards "steps" - true : 1; -endrewards - - - diff --git a/examples/pmdp/coin4/coin4_32.pm b/examples/pmdp/coin4/coin4_32.pm deleted file mode 100644 index 9ff59b79e..000000000 --- a/examples/pmdp/coin4/coin4_32.pm +++ /dev/null @@ -1,61 +0,0 @@ -//Randomised Consensus Protocol - -mdp -const double p1; // in [0.2 , 0.8] -const double p2; // in [0.2 , 0.8] -const double p3; // in [0.2 , 0.8] -const double p4; // in [0.2 , 0.8] - - -const int N=4; -const int K=32; -const int range = 2*(K+1)*N; -const int counter_init = (K+1)*N; -const int left = N; -const int right = 2*(K+1)*N - N; - -// shared coin -global counter : [0..range] init counter_init; - -module process1 - - // program counter - pc1 : [0..3]; - // 0 - flip - // 1 - write - // 2 - check - // 3 - finished - - // local coin - coin1 : [0..1]; - - // flip coin - [] (pc1=0) -> p1 : (coin1'=0) & (pc1'=1) + 1 - p1 : (coin1'=1) & (pc1'=1); - // write tails -1 (reset coin to add regularity) - [] (pc1=1) & (coin1=0) & (counter>0) -> (counter'=counter-1) & (pc1'=2) & (coin1'=0); - // write heads +1 (reset coin to add regularity) - [] (pc1=1) & (coin1=1) & (counter (counter'=counter+1) & (pc1'=2) & (coin1'=0); - // check - // decide tails - [] (pc1=2) & (counter<=left) -> (pc1'=3) & (coin1'=0); - // decide heads - [] (pc1=2) & (counter>=right) -> (pc1'=3) & (coin1'=1); - // flip again - [] (pc1=2) & (counter>left) & (counter (pc1'=0); - // loop (all loop together when done) - [done] (pc1=3) -> (pc1'=3); - -endmodule - -module process2 = process1[pc1=pc2,coin1=coin2,p1=p2] endmodule -module process3 = process1[pc1=pc3,coin1=coin3,p1=p3] endmodule -module process4 = process1[pc1=pc4,coin1=coin4,p1=p4] endmodule - -label "finished" = pc1=3 &pc2=3 &pc3=3 &pc4=3; -label "all_coins_equal_1" = coin1=1 &coin2=1 &coin3=1 &coin4=1 ; -rewards "steps" - true : 1; -endrewards - - - diff --git a/examples/pmdp/coin4/coin4_4.pm b/examples/pmdp/coin4/coin4_4.pm deleted file mode 100644 index 71ff09c96..000000000 --- a/examples/pmdp/coin4/coin4_4.pm +++ /dev/null @@ -1,61 +0,0 @@ -//Randomised Consensus Protocol - -mdp -const double p1; // in [0.2 , 0.8] -const double p2; // in [0.2 , 0.8] -const double p3; // in [0.2 , 0.8] -const double p4; // in [0.2 , 0.8] - - -const int N=4; -const int K=4; -const int range = 2*(K+1)*N; -const int counter_init = (K+1)*N; -const int left = N; -const int right = 2*(K+1)*N - N; - -// shared coin -global counter : [0..range] init counter_init; - -module process1 - - // program counter - pc1 : [0..3]; - // 0 - flip - // 1 - write - // 2 - check - // 3 - finished - - // local coin - coin1 : [0..1]; - - // flip coin - [] (pc1=0) -> p1 : (coin1'=0) & (pc1'=1) + 1 - p1 : (coin1'=1) & (pc1'=1); - // write tails -1 (reset coin to add regularity) - [] (pc1=1) & (coin1=0) & (counter>0) -> (counter'=counter-1) & (pc1'=2) & (coin1'=0); - // write heads +1 (reset coin to add regularity) - [] (pc1=1) & (coin1=1) & (counter (counter'=counter+1) & (pc1'=2) & (coin1'=0); - // check - // decide tails - [] (pc1=2) & (counter<=left) -> (pc1'=3) & (coin1'=0); - // decide heads - [] (pc1=2) & (counter>=right) -> (pc1'=3) & (coin1'=1); - // flip again - [] (pc1=2) & (counter>left) & (counter (pc1'=0); - // loop (all loop together when done) - [done] (pc1=3) -> (pc1'=3); - -endmodule - -module process2 = process1[pc1=pc2,coin1=coin2,p1=p2] endmodule -module process3 = process1[pc1=pc3,coin1=coin3,p1=p3] endmodule -module process4 = process1[pc1=pc4,coin1=coin4,p1=p4] endmodule - -label "finished" = pc1=3 &pc2=3 &pc3=3 &pc4=3; -label "all_coins_equal_1" = coin1=1 &coin2=1 &coin3=1 &coin4=1 ; -rewards "steps" - true : 1; -endrewards - - - diff --git a/examples/pmdp/coin4/coin4_64.pm b/examples/pmdp/coin4/coin4_64.pm deleted file mode 100644 index 11f489bd8..000000000 --- a/examples/pmdp/coin4/coin4_64.pm +++ /dev/null @@ -1,61 +0,0 @@ -//Randomised Consensus Protocol - -mdp -const double p1; // in [0.2 , 0.8] -const double p2; // in [0.2 , 0.8] -const double p3; // in [0.2 , 0.8] -const double p4; // in [0.2 , 0.8] - - -const int N=4; -const int K=64; -const int range = 2*(K+1)*N; -const int counter_init = (K+1)*N; -const int left = N; -const int right = 2*(K+1)*N - N; - -// shared coin -global counter : [0..range] init counter_init; - -module process1 - - // program counter - pc1 : [0..3]; - // 0 - flip - // 1 - write - // 2 - check - // 3 - finished - - // local coin - coin1 : [0..1]; - - // flip coin - [] (pc1=0) -> p1 : (coin1'=0) & (pc1'=1) + 1 - p1 : (coin1'=1) & (pc1'=1); - // write tails -1 (reset coin to add regularity) - [] (pc1=1) & (coin1=0) & (counter>0) -> (counter'=counter-1) & (pc1'=2) & (coin1'=0); - // write heads +1 (reset coin to add regularity) - [] (pc1=1) & (coin1=1) & (counter (counter'=counter+1) & (pc1'=2) & (coin1'=0); - // check - // decide tails - [] (pc1=2) & (counter<=left) -> (pc1'=3) & (coin1'=0); - // decide heads - [] (pc1=2) & (counter>=right) -> (pc1'=3) & (coin1'=1); - // flip again - [] (pc1=2) & (counter>left) & (counter (pc1'=0); - // loop (all loop together when done) - [done] (pc1=3) -> (pc1'=3); - -endmodule - -module process2 = process1[pc1=pc2,coin1=coin2,p1=p2] endmodule -module process3 = process1[pc1=pc3,coin1=coin3,p1=p3] endmodule -module process4 = process1[pc1=pc4,coin1=coin4,p1=p4] endmodule - -label "finished" = pc1=3 &pc2=3 &pc3=3 &pc4=3; -label "all_coins_equal_1" = coin1=1 &coin2=1 &coin3=1 &coin4=1 ; -rewards "steps" - true : 1; -endrewards - - - diff --git a/examples/pmdp/coin4/coin4_8.pm b/examples/pmdp/coin4/coin4_8.pm deleted file mode 100644 index fa25965a1..000000000 --- a/examples/pmdp/coin4/coin4_8.pm +++ /dev/null @@ -1,61 +0,0 @@ -//Randomised Consensus Protocol - -mdp -const double p1; // in [0.2 , 0.8] -const double p2; // in [0.2 , 0.8] -const double p3; // in [0.2 , 0.8] -const double p4; // in [0.2 , 0.8] - - -const int N=4; -const int K=8; -const int range = 2*(K+1)*N; -const int counter_init = (K+1)*N; -const int left = N; -const int right = 2*(K+1)*N - N; - -// shared coin -global counter : [0..range] init counter_init; - -module process1 - - // program counter - pc1 : [0..3]; - // 0 - flip - // 1 - write - // 2 - check - // 3 - finished - - // local coin - coin1 : [0..1]; - - // flip coin - [] (pc1=0) -> p1 : (coin1'=0) & (pc1'=1) + 1 - p1 : (coin1'=1) & (pc1'=1); - // write tails -1 (reset coin to add regularity) - [] (pc1=1) & (coin1=0) & (counter>0) -> (counter'=counter-1) & (pc1'=2) & (coin1'=0); - // write heads +1 (reset coin to add regularity) - [] (pc1=1) & (coin1=1) & (counter (counter'=counter+1) & (pc1'=2) & (coin1'=0); - // check - // decide tails - [] (pc1=2) & (counter<=left) -> (pc1'=3) & (coin1'=0); - // decide heads - [] (pc1=2) & (counter>=right) -> (pc1'=3) & (coin1'=1); - // flip again - [] (pc1=2) & (counter>left) & (counter (pc1'=0); - // loop (all loop together when done) - [done] (pc1=3) -> (pc1'=3); - -endmodule - -module process2 = process1[pc1=pc2,coin1=coin2,p1=p2] endmodule -module process3 = process1[pc1=pc3,coin1=coin3,p1=p3] endmodule -module process4 = process1[pc1=pc4,coin1=coin4,p1=p4] endmodule - -label "finished" = pc1=3 &pc2=3 &pc3=3 &pc4=3; -label "all_coins_equal_1" = coin1=1 &coin2=1 &coin3=1 &coin4=1 ; -rewards "steps" - true : 1; -endrewards - - - diff --git a/examples/pmdp/coin4/coin4_regions.txt b/examples/pmdp/coin4/coin4_regions.txt deleted file mode 100644 index 38d868525..000000000 --- a/examples/pmdp/coin4/coin4_regions.txt +++ /dev/null @@ -1,625 +0,0 @@ -0.000010<=p1<=0.200000, 0.000010<=p2<=0.200000, 0.000010<=p3<=0.200000, 0.000010<=p4<=0.200000; -0.000010<=p1<=0.200000, 0.000010<=p2<=0.200000, 0.000010<=p3<=0.200000, 0.200000<=p4<=0.400000; -0.000010<=p1<=0.200000, 0.000010<=p2<=0.200000, 0.000010<=p3<=0.200000, 0.400000<=p4<=0.600000; -0.000010<=p1<=0.200000, 0.000010<=p2<=0.200000, 0.000010<=p3<=0.200000, 0.600000<=p4<=0.800000; -0.000010<=p1<=0.200000, 0.000010<=p2<=0.200000, 0.000010<=p3<=0.200000, 0.800000<=p4<=0.999990; -0.000010<=p1<=0.200000, 0.000010<=p2<=0.200000, 0.200000<=p3<=0.400000, 0.000010<=p4<=0.200000; -0.000010<=p1<=0.200000, 0.000010<=p2<=0.200000, 0.200000<=p3<=0.400000, 0.200000<=p4<=0.400000; -0.000010<=p1<=0.200000, 0.000010<=p2<=0.200000, 0.200000<=p3<=0.400000, 0.400000<=p4<=0.600000; -0.000010<=p1<=0.200000, 0.000010<=p2<=0.200000, 0.200000<=p3<=0.400000, 0.600000<=p4<=0.800000; -0.000010<=p1<=0.200000, 0.000010<=p2<=0.200000, 0.200000<=p3<=0.400000, 0.800000<=p4<=0.999990; -0.000010<=p1<=0.200000, 0.000010<=p2<=0.200000, 0.400000<=p3<=0.600000, 0.000010<=p4<=0.200000; -0.000010<=p1<=0.200000, 0.000010<=p2<=0.200000, 0.400000<=p3<=0.600000, 0.200000<=p4<=0.400000; -0.000010<=p1<=0.200000, 0.000010<=p2<=0.200000, 0.400000<=p3<=0.600000, 0.400000<=p4<=0.600000; -0.000010<=p1<=0.200000, 0.000010<=p2<=0.200000, 0.400000<=p3<=0.600000, 0.600000<=p4<=0.800000; -0.000010<=p1<=0.200000, 0.000010<=p2<=0.200000, 0.400000<=p3<=0.600000, 0.800000<=p4<=0.999990; -0.000010<=p1<=0.200000, 0.000010<=p2<=0.200000, 0.600000<=p3<=0.800000, 0.000010<=p4<=0.200000; -0.000010<=p1<=0.200000, 0.000010<=p2<=0.200000, 0.600000<=p3<=0.800000, 0.200000<=p4<=0.400000; -0.000010<=p1<=0.200000, 0.000010<=p2<=0.200000, 0.600000<=p3<=0.800000, 0.400000<=p4<=0.600000; -0.000010<=p1<=0.200000, 0.000010<=p2<=0.200000, 0.600000<=p3<=0.800000, 0.600000<=p4<=0.800000; -0.000010<=p1<=0.200000, 0.000010<=p2<=0.200000, 0.600000<=p3<=0.800000, 0.800000<=p4<=0.999990; -0.000010<=p1<=0.200000, 0.000010<=p2<=0.200000, 0.800000<=p3<=0.999990, 0.000010<=p4<=0.200000; -0.000010<=p1<=0.200000, 0.000010<=p2<=0.200000, 0.800000<=p3<=0.999990, 0.200000<=p4<=0.400000; -0.000010<=p1<=0.200000, 0.000010<=p2<=0.200000, 0.800000<=p3<=0.999990, 0.400000<=p4<=0.600000; -0.000010<=p1<=0.200000, 0.000010<=p2<=0.200000, 0.800000<=p3<=0.999990, 0.600000<=p4<=0.800000; -0.000010<=p1<=0.200000, 0.000010<=p2<=0.200000, 0.800000<=p3<=0.999990, 0.800000<=p4<=0.999990; -0.000010<=p1<=0.200000, 0.200000<=p2<=0.400000, 0.000010<=p3<=0.200000, 0.000010<=p4<=0.200000; -0.000010<=p1<=0.200000, 0.200000<=p2<=0.400000, 0.000010<=p3<=0.200000, 0.200000<=p4<=0.400000; -0.000010<=p1<=0.200000, 0.200000<=p2<=0.400000, 0.000010<=p3<=0.200000, 0.400000<=p4<=0.600000; -0.000010<=p1<=0.200000, 0.200000<=p2<=0.400000, 0.000010<=p3<=0.200000, 0.600000<=p4<=0.800000; -0.000010<=p1<=0.200000, 0.200000<=p2<=0.400000, 0.000010<=p3<=0.200000, 0.800000<=p4<=0.999990; -0.000010<=p1<=0.200000, 0.200000<=p2<=0.400000, 0.200000<=p3<=0.400000, 0.000010<=p4<=0.200000; -0.000010<=p1<=0.200000, 0.200000<=p2<=0.400000, 0.200000<=p3<=0.400000, 0.200000<=p4<=0.400000; -0.000010<=p1<=0.200000, 0.200000<=p2<=0.400000, 0.200000<=p3<=0.400000, 0.400000<=p4<=0.600000; -0.000010<=p1<=0.200000, 0.200000<=p2<=0.400000, 0.200000<=p3<=0.400000, 0.600000<=p4<=0.800000; -0.000010<=p1<=0.200000, 0.200000<=p2<=0.400000, 0.200000<=p3<=0.400000, 0.800000<=p4<=0.999990; -0.000010<=p1<=0.200000, 0.200000<=p2<=0.400000, 0.400000<=p3<=0.600000, 0.000010<=p4<=0.200000; -0.000010<=p1<=0.200000, 0.200000<=p2<=0.400000, 0.400000<=p3<=0.600000, 0.200000<=p4<=0.400000; -0.000010<=p1<=0.200000, 0.200000<=p2<=0.400000, 0.400000<=p3<=0.600000, 0.400000<=p4<=0.600000; -0.000010<=p1<=0.200000, 0.200000<=p2<=0.400000, 0.400000<=p3<=0.600000, 0.600000<=p4<=0.800000; -0.000010<=p1<=0.200000, 0.200000<=p2<=0.400000, 0.400000<=p3<=0.600000, 0.800000<=p4<=0.999990; -0.000010<=p1<=0.200000, 0.200000<=p2<=0.400000, 0.600000<=p3<=0.800000, 0.000010<=p4<=0.200000; -0.000010<=p1<=0.200000, 0.200000<=p2<=0.400000, 0.600000<=p3<=0.800000, 0.200000<=p4<=0.400000; -0.000010<=p1<=0.200000, 0.200000<=p2<=0.400000, 0.600000<=p3<=0.800000, 0.400000<=p4<=0.600000; -0.000010<=p1<=0.200000, 0.200000<=p2<=0.400000, 0.600000<=p3<=0.800000, 0.600000<=p4<=0.800000; -0.000010<=p1<=0.200000, 0.200000<=p2<=0.400000, 0.600000<=p3<=0.800000, 0.800000<=p4<=0.999990; -0.000010<=p1<=0.200000, 0.200000<=p2<=0.400000, 0.800000<=p3<=0.999990, 0.000010<=p4<=0.200000; -0.000010<=p1<=0.200000, 0.200000<=p2<=0.400000, 0.800000<=p3<=0.999990, 0.200000<=p4<=0.400000; -0.000010<=p1<=0.200000, 0.200000<=p2<=0.400000, 0.800000<=p3<=0.999990, 0.400000<=p4<=0.600000; -0.000010<=p1<=0.200000, 0.200000<=p2<=0.400000, 0.800000<=p3<=0.999990, 0.600000<=p4<=0.800000; -0.000010<=p1<=0.200000, 0.200000<=p2<=0.400000, 0.800000<=p3<=0.999990, 0.800000<=p4<=0.999990; -0.000010<=p1<=0.200000, 0.400000<=p2<=0.600000, 0.000010<=p3<=0.200000, 0.000010<=p4<=0.200000; -0.000010<=p1<=0.200000, 0.400000<=p2<=0.600000, 0.000010<=p3<=0.200000, 0.200000<=p4<=0.400000; -0.000010<=p1<=0.200000, 0.400000<=p2<=0.600000, 0.000010<=p3<=0.200000, 0.400000<=p4<=0.600000; -0.000010<=p1<=0.200000, 0.400000<=p2<=0.600000, 0.000010<=p3<=0.200000, 0.600000<=p4<=0.800000; -0.000010<=p1<=0.200000, 0.400000<=p2<=0.600000, 0.000010<=p3<=0.200000, 0.800000<=p4<=0.999990; -0.000010<=p1<=0.200000, 0.400000<=p2<=0.600000, 0.200000<=p3<=0.400000, 0.000010<=p4<=0.200000; -0.000010<=p1<=0.200000, 0.400000<=p2<=0.600000, 0.200000<=p3<=0.400000, 0.200000<=p4<=0.400000; -0.000010<=p1<=0.200000, 0.400000<=p2<=0.600000, 0.200000<=p3<=0.400000, 0.400000<=p4<=0.600000; -0.000010<=p1<=0.200000, 0.400000<=p2<=0.600000, 0.200000<=p3<=0.400000, 0.600000<=p4<=0.800000; -0.000010<=p1<=0.200000, 0.400000<=p2<=0.600000, 0.200000<=p3<=0.400000, 0.800000<=p4<=0.999990; -0.000010<=p1<=0.200000, 0.400000<=p2<=0.600000, 0.400000<=p3<=0.600000, 0.000010<=p4<=0.200000; -0.000010<=p1<=0.200000, 0.400000<=p2<=0.600000, 0.400000<=p3<=0.600000, 0.200000<=p4<=0.400000; -0.000010<=p1<=0.200000, 0.400000<=p2<=0.600000, 0.400000<=p3<=0.600000, 0.400000<=p4<=0.600000; -0.000010<=p1<=0.200000, 0.400000<=p2<=0.600000, 0.400000<=p3<=0.600000, 0.600000<=p4<=0.800000; -0.000010<=p1<=0.200000, 0.400000<=p2<=0.600000, 0.400000<=p3<=0.600000, 0.800000<=p4<=0.999990; -0.000010<=p1<=0.200000, 0.400000<=p2<=0.600000, 0.600000<=p3<=0.800000, 0.000010<=p4<=0.200000; -0.000010<=p1<=0.200000, 0.400000<=p2<=0.600000, 0.600000<=p3<=0.800000, 0.200000<=p4<=0.400000; -0.000010<=p1<=0.200000, 0.400000<=p2<=0.600000, 0.600000<=p3<=0.800000, 0.400000<=p4<=0.600000; -0.000010<=p1<=0.200000, 0.400000<=p2<=0.600000, 0.600000<=p3<=0.800000, 0.600000<=p4<=0.800000; -0.000010<=p1<=0.200000, 0.400000<=p2<=0.600000, 0.600000<=p3<=0.800000, 0.800000<=p4<=0.999990; -0.000010<=p1<=0.200000, 0.400000<=p2<=0.600000, 0.800000<=p3<=0.999990, 0.000010<=p4<=0.200000; -0.000010<=p1<=0.200000, 0.400000<=p2<=0.600000, 0.800000<=p3<=0.999990, 0.200000<=p4<=0.400000; -0.000010<=p1<=0.200000, 0.400000<=p2<=0.600000, 0.800000<=p3<=0.999990, 0.400000<=p4<=0.600000; -0.000010<=p1<=0.200000, 0.400000<=p2<=0.600000, 0.800000<=p3<=0.999990, 0.600000<=p4<=0.800000; -0.000010<=p1<=0.200000, 0.400000<=p2<=0.600000, 0.800000<=p3<=0.999990, 0.800000<=p4<=0.999990; -0.000010<=p1<=0.200000, 0.600000<=p2<=0.800000, 0.000010<=p3<=0.200000, 0.000010<=p4<=0.200000; -0.000010<=p1<=0.200000, 0.600000<=p2<=0.800000, 0.000010<=p3<=0.200000, 0.200000<=p4<=0.400000; -0.000010<=p1<=0.200000, 0.600000<=p2<=0.800000, 0.000010<=p3<=0.200000, 0.400000<=p4<=0.600000; -0.000010<=p1<=0.200000, 0.600000<=p2<=0.800000, 0.000010<=p3<=0.200000, 0.600000<=p4<=0.800000; -0.000010<=p1<=0.200000, 0.600000<=p2<=0.800000, 0.000010<=p3<=0.200000, 0.800000<=p4<=0.999990; -0.000010<=p1<=0.200000, 0.600000<=p2<=0.800000, 0.200000<=p3<=0.400000, 0.000010<=p4<=0.200000; -0.000010<=p1<=0.200000, 0.600000<=p2<=0.800000, 0.200000<=p3<=0.400000, 0.200000<=p4<=0.400000; -0.000010<=p1<=0.200000, 0.600000<=p2<=0.800000, 0.200000<=p3<=0.400000, 0.400000<=p4<=0.600000; -0.000010<=p1<=0.200000, 0.600000<=p2<=0.800000, 0.200000<=p3<=0.400000, 0.600000<=p4<=0.800000; -0.000010<=p1<=0.200000, 0.600000<=p2<=0.800000, 0.200000<=p3<=0.400000, 0.800000<=p4<=0.999990; -0.000010<=p1<=0.200000, 0.600000<=p2<=0.800000, 0.400000<=p3<=0.600000, 0.000010<=p4<=0.200000; -0.000010<=p1<=0.200000, 0.600000<=p2<=0.800000, 0.400000<=p3<=0.600000, 0.200000<=p4<=0.400000; -0.000010<=p1<=0.200000, 0.600000<=p2<=0.800000, 0.400000<=p3<=0.600000, 0.400000<=p4<=0.600000; -0.000010<=p1<=0.200000, 0.600000<=p2<=0.800000, 0.400000<=p3<=0.600000, 0.600000<=p4<=0.800000; -0.000010<=p1<=0.200000, 0.600000<=p2<=0.800000, 0.400000<=p3<=0.600000, 0.800000<=p4<=0.999990; -0.000010<=p1<=0.200000, 0.600000<=p2<=0.800000, 0.600000<=p3<=0.800000, 0.000010<=p4<=0.200000; -0.000010<=p1<=0.200000, 0.600000<=p2<=0.800000, 0.600000<=p3<=0.800000, 0.200000<=p4<=0.400000; -0.000010<=p1<=0.200000, 0.600000<=p2<=0.800000, 0.600000<=p3<=0.800000, 0.400000<=p4<=0.600000; -0.000010<=p1<=0.200000, 0.600000<=p2<=0.800000, 0.600000<=p3<=0.800000, 0.600000<=p4<=0.800000; -0.000010<=p1<=0.200000, 0.600000<=p2<=0.800000, 0.600000<=p3<=0.800000, 0.800000<=p4<=0.999990; -0.000010<=p1<=0.200000, 0.600000<=p2<=0.800000, 0.800000<=p3<=0.999990, 0.000010<=p4<=0.200000; -0.000010<=p1<=0.200000, 0.600000<=p2<=0.800000, 0.800000<=p3<=0.999990, 0.200000<=p4<=0.400000; -0.000010<=p1<=0.200000, 0.600000<=p2<=0.800000, 0.800000<=p3<=0.999990, 0.400000<=p4<=0.600000; -0.000010<=p1<=0.200000, 0.600000<=p2<=0.800000, 0.800000<=p3<=0.999990, 0.600000<=p4<=0.800000; -0.000010<=p1<=0.200000, 0.600000<=p2<=0.800000, 0.800000<=p3<=0.999990, 0.800000<=p4<=0.999990; -0.000010<=p1<=0.200000, 0.800000<=p2<=0.999990, 0.000010<=p3<=0.200000, 0.000010<=p4<=0.200000; -0.000010<=p1<=0.200000, 0.800000<=p2<=0.999990, 0.000010<=p3<=0.200000, 0.200000<=p4<=0.400000; -0.000010<=p1<=0.200000, 0.800000<=p2<=0.999990, 0.000010<=p3<=0.200000, 0.400000<=p4<=0.600000; -0.000010<=p1<=0.200000, 0.800000<=p2<=0.999990, 0.000010<=p3<=0.200000, 0.600000<=p4<=0.800000; -0.000010<=p1<=0.200000, 0.800000<=p2<=0.999990, 0.000010<=p3<=0.200000, 0.800000<=p4<=0.999990; -0.000010<=p1<=0.200000, 0.800000<=p2<=0.999990, 0.200000<=p3<=0.400000, 0.000010<=p4<=0.200000; -0.000010<=p1<=0.200000, 0.800000<=p2<=0.999990, 0.200000<=p3<=0.400000, 0.200000<=p4<=0.400000; -0.000010<=p1<=0.200000, 0.800000<=p2<=0.999990, 0.200000<=p3<=0.400000, 0.400000<=p4<=0.600000; -0.000010<=p1<=0.200000, 0.800000<=p2<=0.999990, 0.200000<=p3<=0.400000, 0.600000<=p4<=0.800000; -0.000010<=p1<=0.200000, 0.800000<=p2<=0.999990, 0.200000<=p3<=0.400000, 0.800000<=p4<=0.999990; -0.000010<=p1<=0.200000, 0.800000<=p2<=0.999990, 0.400000<=p3<=0.600000, 0.000010<=p4<=0.200000; -0.000010<=p1<=0.200000, 0.800000<=p2<=0.999990, 0.400000<=p3<=0.600000, 0.200000<=p4<=0.400000; -0.000010<=p1<=0.200000, 0.800000<=p2<=0.999990, 0.400000<=p3<=0.600000, 0.400000<=p4<=0.600000; -0.000010<=p1<=0.200000, 0.800000<=p2<=0.999990, 0.400000<=p3<=0.600000, 0.600000<=p4<=0.800000; -0.000010<=p1<=0.200000, 0.800000<=p2<=0.999990, 0.400000<=p3<=0.600000, 0.800000<=p4<=0.999990; -0.000010<=p1<=0.200000, 0.800000<=p2<=0.999990, 0.600000<=p3<=0.800000, 0.000010<=p4<=0.200000; -0.000010<=p1<=0.200000, 0.800000<=p2<=0.999990, 0.600000<=p3<=0.800000, 0.200000<=p4<=0.400000; -0.000010<=p1<=0.200000, 0.800000<=p2<=0.999990, 0.600000<=p3<=0.800000, 0.400000<=p4<=0.600000; -0.000010<=p1<=0.200000, 0.800000<=p2<=0.999990, 0.600000<=p3<=0.800000, 0.600000<=p4<=0.800000; -0.000010<=p1<=0.200000, 0.800000<=p2<=0.999990, 0.600000<=p3<=0.800000, 0.800000<=p4<=0.999990; -0.000010<=p1<=0.200000, 0.800000<=p2<=0.999990, 0.800000<=p3<=0.999990, 0.000010<=p4<=0.200000; -0.000010<=p1<=0.200000, 0.800000<=p2<=0.999990, 0.800000<=p3<=0.999990, 0.200000<=p4<=0.400000; -0.000010<=p1<=0.200000, 0.800000<=p2<=0.999990, 0.800000<=p3<=0.999990, 0.400000<=p4<=0.600000; -0.000010<=p1<=0.200000, 0.800000<=p2<=0.999990, 0.800000<=p3<=0.999990, 0.600000<=p4<=0.800000; -0.000010<=p1<=0.200000, 0.800000<=p2<=0.999990, 0.800000<=p3<=0.999990, 0.800000<=p4<=0.999990; -0.200000<=p1<=0.400000, 0.000010<=p2<=0.200000, 0.000010<=p3<=0.200000, 0.000010<=p4<=0.200000; -0.200000<=p1<=0.400000, 0.000010<=p2<=0.200000, 0.000010<=p3<=0.200000, 0.200000<=p4<=0.400000; -0.200000<=p1<=0.400000, 0.000010<=p2<=0.200000, 0.000010<=p3<=0.200000, 0.400000<=p4<=0.600000; -0.200000<=p1<=0.400000, 0.000010<=p2<=0.200000, 0.000010<=p3<=0.200000, 0.600000<=p4<=0.800000; -0.200000<=p1<=0.400000, 0.000010<=p2<=0.200000, 0.000010<=p3<=0.200000, 0.800000<=p4<=0.999990; -0.200000<=p1<=0.400000, 0.000010<=p2<=0.200000, 0.200000<=p3<=0.400000, 0.000010<=p4<=0.200000; -0.200000<=p1<=0.400000, 0.000010<=p2<=0.200000, 0.200000<=p3<=0.400000, 0.200000<=p4<=0.400000; -0.200000<=p1<=0.400000, 0.000010<=p2<=0.200000, 0.200000<=p3<=0.400000, 0.400000<=p4<=0.600000; -0.200000<=p1<=0.400000, 0.000010<=p2<=0.200000, 0.200000<=p3<=0.400000, 0.600000<=p4<=0.800000; -0.200000<=p1<=0.400000, 0.000010<=p2<=0.200000, 0.200000<=p3<=0.400000, 0.800000<=p4<=0.999990; -0.200000<=p1<=0.400000, 0.000010<=p2<=0.200000, 0.400000<=p3<=0.600000, 0.000010<=p4<=0.200000; -0.200000<=p1<=0.400000, 0.000010<=p2<=0.200000, 0.400000<=p3<=0.600000, 0.200000<=p4<=0.400000; -0.200000<=p1<=0.400000, 0.000010<=p2<=0.200000, 0.400000<=p3<=0.600000, 0.400000<=p4<=0.600000; -0.200000<=p1<=0.400000, 0.000010<=p2<=0.200000, 0.400000<=p3<=0.600000, 0.600000<=p4<=0.800000; -0.200000<=p1<=0.400000, 0.000010<=p2<=0.200000, 0.400000<=p3<=0.600000, 0.800000<=p4<=0.999990; -0.200000<=p1<=0.400000, 0.000010<=p2<=0.200000, 0.600000<=p3<=0.800000, 0.000010<=p4<=0.200000; -0.200000<=p1<=0.400000, 0.000010<=p2<=0.200000, 0.600000<=p3<=0.800000, 0.200000<=p4<=0.400000; -0.200000<=p1<=0.400000, 0.000010<=p2<=0.200000, 0.600000<=p3<=0.800000, 0.400000<=p4<=0.600000; -0.200000<=p1<=0.400000, 0.000010<=p2<=0.200000, 0.600000<=p3<=0.800000, 0.600000<=p4<=0.800000; -0.200000<=p1<=0.400000, 0.000010<=p2<=0.200000, 0.600000<=p3<=0.800000, 0.800000<=p4<=0.999990; -0.200000<=p1<=0.400000, 0.000010<=p2<=0.200000, 0.800000<=p3<=0.999990, 0.000010<=p4<=0.200000; -0.200000<=p1<=0.400000, 0.000010<=p2<=0.200000, 0.800000<=p3<=0.999990, 0.200000<=p4<=0.400000; -0.200000<=p1<=0.400000, 0.000010<=p2<=0.200000, 0.800000<=p3<=0.999990, 0.400000<=p4<=0.600000; -0.200000<=p1<=0.400000, 0.000010<=p2<=0.200000, 0.800000<=p3<=0.999990, 0.600000<=p4<=0.800000; -0.200000<=p1<=0.400000, 0.000010<=p2<=0.200000, 0.800000<=p3<=0.999990, 0.800000<=p4<=0.999990; -0.200000<=p1<=0.400000, 0.200000<=p2<=0.400000, 0.000010<=p3<=0.200000, 0.000010<=p4<=0.200000; -0.200000<=p1<=0.400000, 0.200000<=p2<=0.400000, 0.000010<=p3<=0.200000, 0.200000<=p4<=0.400000; -0.200000<=p1<=0.400000, 0.200000<=p2<=0.400000, 0.000010<=p3<=0.200000, 0.400000<=p4<=0.600000; -0.200000<=p1<=0.400000, 0.200000<=p2<=0.400000, 0.000010<=p3<=0.200000, 0.600000<=p4<=0.800000; -0.200000<=p1<=0.400000, 0.200000<=p2<=0.400000, 0.000010<=p3<=0.200000, 0.800000<=p4<=0.999990; -0.200000<=p1<=0.400000, 0.200000<=p2<=0.400000, 0.200000<=p3<=0.400000, 0.000010<=p4<=0.200000; -0.200000<=p1<=0.400000, 0.200000<=p2<=0.400000, 0.200000<=p3<=0.400000, 0.200000<=p4<=0.400000; -0.200000<=p1<=0.400000, 0.200000<=p2<=0.400000, 0.200000<=p3<=0.400000, 0.400000<=p4<=0.600000; -0.200000<=p1<=0.400000, 0.200000<=p2<=0.400000, 0.200000<=p3<=0.400000, 0.600000<=p4<=0.800000; -0.200000<=p1<=0.400000, 0.200000<=p2<=0.400000, 0.200000<=p3<=0.400000, 0.800000<=p4<=0.999990; -0.200000<=p1<=0.400000, 0.200000<=p2<=0.400000, 0.400000<=p3<=0.600000, 0.000010<=p4<=0.200000; -0.200000<=p1<=0.400000, 0.200000<=p2<=0.400000, 0.400000<=p3<=0.600000, 0.200000<=p4<=0.400000; -0.200000<=p1<=0.400000, 0.200000<=p2<=0.400000, 0.400000<=p3<=0.600000, 0.400000<=p4<=0.600000; -0.200000<=p1<=0.400000, 0.200000<=p2<=0.400000, 0.400000<=p3<=0.600000, 0.600000<=p4<=0.800000; -0.200000<=p1<=0.400000, 0.200000<=p2<=0.400000, 0.400000<=p3<=0.600000, 0.800000<=p4<=0.999990; -0.200000<=p1<=0.400000, 0.200000<=p2<=0.400000, 0.600000<=p3<=0.800000, 0.000010<=p4<=0.200000; -0.200000<=p1<=0.400000, 0.200000<=p2<=0.400000, 0.600000<=p3<=0.800000, 0.200000<=p4<=0.400000; -0.200000<=p1<=0.400000, 0.200000<=p2<=0.400000, 0.600000<=p3<=0.800000, 0.400000<=p4<=0.600000; -0.200000<=p1<=0.400000, 0.200000<=p2<=0.400000, 0.600000<=p3<=0.800000, 0.600000<=p4<=0.800000; -0.200000<=p1<=0.400000, 0.200000<=p2<=0.400000, 0.600000<=p3<=0.800000, 0.800000<=p4<=0.999990; -0.200000<=p1<=0.400000, 0.200000<=p2<=0.400000, 0.800000<=p3<=0.999990, 0.000010<=p4<=0.200000; -0.200000<=p1<=0.400000, 0.200000<=p2<=0.400000, 0.800000<=p3<=0.999990, 0.200000<=p4<=0.400000; -0.200000<=p1<=0.400000, 0.200000<=p2<=0.400000, 0.800000<=p3<=0.999990, 0.400000<=p4<=0.600000; -0.200000<=p1<=0.400000, 0.200000<=p2<=0.400000, 0.800000<=p3<=0.999990, 0.600000<=p4<=0.800000; -0.200000<=p1<=0.400000, 0.200000<=p2<=0.400000, 0.800000<=p3<=0.999990, 0.800000<=p4<=0.999990; -0.200000<=p1<=0.400000, 0.400000<=p2<=0.600000, 0.000010<=p3<=0.200000, 0.000010<=p4<=0.200000; -0.200000<=p1<=0.400000, 0.400000<=p2<=0.600000, 0.000010<=p3<=0.200000, 0.200000<=p4<=0.400000; -0.200000<=p1<=0.400000, 0.400000<=p2<=0.600000, 0.000010<=p3<=0.200000, 0.400000<=p4<=0.600000; -0.200000<=p1<=0.400000, 0.400000<=p2<=0.600000, 0.000010<=p3<=0.200000, 0.600000<=p4<=0.800000; -0.200000<=p1<=0.400000, 0.400000<=p2<=0.600000, 0.000010<=p3<=0.200000, 0.800000<=p4<=0.999990; -0.200000<=p1<=0.400000, 0.400000<=p2<=0.600000, 0.200000<=p3<=0.400000, 0.000010<=p4<=0.200000; -0.200000<=p1<=0.400000, 0.400000<=p2<=0.600000, 0.200000<=p3<=0.400000, 0.200000<=p4<=0.400000; -0.200000<=p1<=0.400000, 0.400000<=p2<=0.600000, 0.200000<=p3<=0.400000, 0.400000<=p4<=0.600000; -0.200000<=p1<=0.400000, 0.400000<=p2<=0.600000, 0.200000<=p3<=0.400000, 0.600000<=p4<=0.800000; -0.200000<=p1<=0.400000, 0.400000<=p2<=0.600000, 0.200000<=p3<=0.400000, 0.800000<=p4<=0.999990; -0.200000<=p1<=0.400000, 0.400000<=p2<=0.600000, 0.400000<=p3<=0.600000, 0.000010<=p4<=0.200000; -0.200000<=p1<=0.400000, 0.400000<=p2<=0.600000, 0.400000<=p3<=0.600000, 0.200000<=p4<=0.400000; -0.200000<=p1<=0.400000, 0.400000<=p2<=0.600000, 0.400000<=p3<=0.600000, 0.400000<=p4<=0.600000; -0.200000<=p1<=0.400000, 0.400000<=p2<=0.600000, 0.400000<=p3<=0.600000, 0.600000<=p4<=0.800000; -0.200000<=p1<=0.400000, 0.400000<=p2<=0.600000, 0.400000<=p3<=0.600000, 0.800000<=p4<=0.999990; -0.200000<=p1<=0.400000, 0.400000<=p2<=0.600000, 0.600000<=p3<=0.800000, 0.000010<=p4<=0.200000; -0.200000<=p1<=0.400000, 0.400000<=p2<=0.600000, 0.600000<=p3<=0.800000, 0.200000<=p4<=0.400000; -0.200000<=p1<=0.400000, 0.400000<=p2<=0.600000, 0.600000<=p3<=0.800000, 0.400000<=p4<=0.600000; -0.200000<=p1<=0.400000, 0.400000<=p2<=0.600000, 0.600000<=p3<=0.800000, 0.600000<=p4<=0.800000; -0.200000<=p1<=0.400000, 0.400000<=p2<=0.600000, 0.600000<=p3<=0.800000, 0.800000<=p4<=0.999990; -0.200000<=p1<=0.400000, 0.400000<=p2<=0.600000, 0.800000<=p3<=0.999990, 0.000010<=p4<=0.200000; -0.200000<=p1<=0.400000, 0.400000<=p2<=0.600000, 0.800000<=p3<=0.999990, 0.200000<=p4<=0.400000; -0.200000<=p1<=0.400000, 0.400000<=p2<=0.600000, 0.800000<=p3<=0.999990, 0.400000<=p4<=0.600000; -0.200000<=p1<=0.400000, 0.400000<=p2<=0.600000, 0.800000<=p3<=0.999990, 0.600000<=p4<=0.800000; -0.200000<=p1<=0.400000, 0.400000<=p2<=0.600000, 0.800000<=p3<=0.999990, 0.800000<=p4<=0.999990; -0.200000<=p1<=0.400000, 0.600000<=p2<=0.800000, 0.000010<=p3<=0.200000, 0.000010<=p4<=0.200000; -0.200000<=p1<=0.400000, 0.600000<=p2<=0.800000, 0.000010<=p3<=0.200000, 0.200000<=p4<=0.400000; -0.200000<=p1<=0.400000, 0.600000<=p2<=0.800000, 0.000010<=p3<=0.200000, 0.400000<=p4<=0.600000; -0.200000<=p1<=0.400000, 0.600000<=p2<=0.800000, 0.000010<=p3<=0.200000, 0.600000<=p4<=0.800000; -0.200000<=p1<=0.400000, 0.600000<=p2<=0.800000, 0.000010<=p3<=0.200000, 0.800000<=p4<=0.999990; -0.200000<=p1<=0.400000, 0.600000<=p2<=0.800000, 0.200000<=p3<=0.400000, 0.000010<=p4<=0.200000; -0.200000<=p1<=0.400000, 0.600000<=p2<=0.800000, 0.200000<=p3<=0.400000, 0.200000<=p4<=0.400000; -0.200000<=p1<=0.400000, 0.600000<=p2<=0.800000, 0.200000<=p3<=0.400000, 0.400000<=p4<=0.600000; -0.200000<=p1<=0.400000, 0.600000<=p2<=0.800000, 0.200000<=p3<=0.400000, 0.600000<=p4<=0.800000; -0.200000<=p1<=0.400000, 0.600000<=p2<=0.800000, 0.200000<=p3<=0.400000, 0.800000<=p4<=0.999990; -0.200000<=p1<=0.400000, 0.600000<=p2<=0.800000, 0.400000<=p3<=0.600000, 0.000010<=p4<=0.200000; -0.200000<=p1<=0.400000, 0.600000<=p2<=0.800000, 0.400000<=p3<=0.600000, 0.200000<=p4<=0.400000; -0.200000<=p1<=0.400000, 0.600000<=p2<=0.800000, 0.400000<=p3<=0.600000, 0.400000<=p4<=0.600000; -0.200000<=p1<=0.400000, 0.600000<=p2<=0.800000, 0.400000<=p3<=0.600000, 0.600000<=p4<=0.800000; -0.200000<=p1<=0.400000, 0.600000<=p2<=0.800000, 0.400000<=p3<=0.600000, 0.800000<=p4<=0.999990; -0.200000<=p1<=0.400000, 0.600000<=p2<=0.800000, 0.600000<=p3<=0.800000, 0.000010<=p4<=0.200000; -0.200000<=p1<=0.400000, 0.600000<=p2<=0.800000, 0.600000<=p3<=0.800000, 0.200000<=p4<=0.400000; -0.200000<=p1<=0.400000, 0.600000<=p2<=0.800000, 0.600000<=p3<=0.800000, 0.400000<=p4<=0.600000; -0.200000<=p1<=0.400000, 0.600000<=p2<=0.800000, 0.600000<=p3<=0.800000, 0.600000<=p4<=0.800000; -0.200000<=p1<=0.400000, 0.600000<=p2<=0.800000, 0.600000<=p3<=0.800000, 0.800000<=p4<=0.999990; -0.200000<=p1<=0.400000, 0.600000<=p2<=0.800000, 0.800000<=p3<=0.999990, 0.000010<=p4<=0.200000; -0.200000<=p1<=0.400000, 0.600000<=p2<=0.800000, 0.800000<=p3<=0.999990, 0.200000<=p4<=0.400000; -0.200000<=p1<=0.400000, 0.600000<=p2<=0.800000, 0.800000<=p3<=0.999990, 0.400000<=p4<=0.600000; -0.200000<=p1<=0.400000, 0.600000<=p2<=0.800000, 0.800000<=p3<=0.999990, 0.600000<=p4<=0.800000; -0.200000<=p1<=0.400000, 0.600000<=p2<=0.800000, 0.800000<=p3<=0.999990, 0.800000<=p4<=0.999990; -0.200000<=p1<=0.400000, 0.800000<=p2<=0.999990, 0.000010<=p3<=0.200000, 0.000010<=p4<=0.200000; -0.200000<=p1<=0.400000, 0.800000<=p2<=0.999990, 0.000010<=p3<=0.200000, 0.200000<=p4<=0.400000; -0.200000<=p1<=0.400000, 0.800000<=p2<=0.999990, 0.000010<=p3<=0.200000, 0.400000<=p4<=0.600000; -0.200000<=p1<=0.400000, 0.800000<=p2<=0.999990, 0.000010<=p3<=0.200000, 0.600000<=p4<=0.800000; -0.200000<=p1<=0.400000, 0.800000<=p2<=0.999990, 0.000010<=p3<=0.200000, 0.800000<=p4<=0.999990; -0.200000<=p1<=0.400000, 0.800000<=p2<=0.999990, 0.200000<=p3<=0.400000, 0.000010<=p4<=0.200000; -0.200000<=p1<=0.400000, 0.800000<=p2<=0.999990, 0.200000<=p3<=0.400000, 0.200000<=p4<=0.400000; -0.200000<=p1<=0.400000, 0.800000<=p2<=0.999990, 0.200000<=p3<=0.400000, 0.400000<=p4<=0.600000; -0.200000<=p1<=0.400000, 0.800000<=p2<=0.999990, 0.200000<=p3<=0.400000, 0.600000<=p4<=0.800000; -0.200000<=p1<=0.400000, 0.800000<=p2<=0.999990, 0.200000<=p3<=0.400000, 0.800000<=p4<=0.999990; -0.200000<=p1<=0.400000, 0.800000<=p2<=0.999990, 0.400000<=p3<=0.600000, 0.000010<=p4<=0.200000; -0.200000<=p1<=0.400000, 0.800000<=p2<=0.999990, 0.400000<=p3<=0.600000, 0.200000<=p4<=0.400000; -0.200000<=p1<=0.400000, 0.800000<=p2<=0.999990, 0.400000<=p3<=0.600000, 0.400000<=p4<=0.600000; -0.200000<=p1<=0.400000, 0.800000<=p2<=0.999990, 0.400000<=p3<=0.600000, 0.600000<=p4<=0.800000; -0.200000<=p1<=0.400000, 0.800000<=p2<=0.999990, 0.400000<=p3<=0.600000, 0.800000<=p4<=0.999990; -0.200000<=p1<=0.400000, 0.800000<=p2<=0.999990, 0.600000<=p3<=0.800000, 0.000010<=p4<=0.200000; -0.200000<=p1<=0.400000, 0.800000<=p2<=0.999990, 0.600000<=p3<=0.800000, 0.200000<=p4<=0.400000; -0.200000<=p1<=0.400000, 0.800000<=p2<=0.999990, 0.600000<=p3<=0.800000, 0.400000<=p4<=0.600000; -0.200000<=p1<=0.400000, 0.800000<=p2<=0.999990, 0.600000<=p3<=0.800000, 0.600000<=p4<=0.800000; -0.200000<=p1<=0.400000, 0.800000<=p2<=0.999990, 0.600000<=p3<=0.800000, 0.800000<=p4<=0.999990; -0.200000<=p1<=0.400000, 0.800000<=p2<=0.999990, 0.800000<=p3<=0.999990, 0.000010<=p4<=0.200000; -0.200000<=p1<=0.400000, 0.800000<=p2<=0.999990, 0.800000<=p3<=0.999990, 0.200000<=p4<=0.400000; -0.200000<=p1<=0.400000, 0.800000<=p2<=0.999990, 0.800000<=p3<=0.999990, 0.400000<=p4<=0.600000; -0.200000<=p1<=0.400000, 0.800000<=p2<=0.999990, 0.800000<=p3<=0.999990, 0.600000<=p4<=0.800000; -0.200000<=p1<=0.400000, 0.800000<=p2<=0.999990, 0.800000<=p3<=0.999990, 0.800000<=p4<=0.999990; -0.400000<=p1<=0.600000, 0.000010<=p2<=0.200000, 0.000010<=p3<=0.200000, 0.000010<=p4<=0.200000; -0.400000<=p1<=0.600000, 0.000010<=p2<=0.200000, 0.000010<=p3<=0.200000, 0.200000<=p4<=0.400000; -0.400000<=p1<=0.600000, 0.000010<=p2<=0.200000, 0.000010<=p3<=0.200000, 0.400000<=p4<=0.600000; -0.400000<=p1<=0.600000, 0.000010<=p2<=0.200000, 0.000010<=p3<=0.200000, 0.600000<=p4<=0.800000; -0.400000<=p1<=0.600000, 0.000010<=p2<=0.200000, 0.000010<=p3<=0.200000, 0.800000<=p4<=0.999990; -0.400000<=p1<=0.600000, 0.000010<=p2<=0.200000, 0.200000<=p3<=0.400000, 0.000010<=p4<=0.200000; -0.400000<=p1<=0.600000, 0.000010<=p2<=0.200000, 0.200000<=p3<=0.400000, 0.200000<=p4<=0.400000; -0.400000<=p1<=0.600000, 0.000010<=p2<=0.200000, 0.200000<=p3<=0.400000, 0.400000<=p4<=0.600000; -0.400000<=p1<=0.600000, 0.000010<=p2<=0.200000, 0.200000<=p3<=0.400000, 0.600000<=p4<=0.800000; -0.400000<=p1<=0.600000, 0.000010<=p2<=0.200000, 0.200000<=p3<=0.400000, 0.800000<=p4<=0.999990; -0.400000<=p1<=0.600000, 0.000010<=p2<=0.200000, 0.400000<=p3<=0.600000, 0.000010<=p4<=0.200000; -0.400000<=p1<=0.600000, 0.000010<=p2<=0.200000, 0.400000<=p3<=0.600000, 0.200000<=p4<=0.400000; -0.400000<=p1<=0.600000, 0.000010<=p2<=0.200000, 0.400000<=p3<=0.600000, 0.400000<=p4<=0.600000; -0.400000<=p1<=0.600000, 0.000010<=p2<=0.200000, 0.400000<=p3<=0.600000, 0.600000<=p4<=0.800000; -0.400000<=p1<=0.600000, 0.000010<=p2<=0.200000, 0.400000<=p3<=0.600000, 0.800000<=p4<=0.999990; -0.400000<=p1<=0.600000, 0.000010<=p2<=0.200000, 0.600000<=p3<=0.800000, 0.000010<=p4<=0.200000; -0.400000<=p1<=0.600000, 0.000010<=p2<=0.200000, 0.600000<=p3<=0.800000, 0.200000<=p4<=0.400000; -0.400000<=p1<=0.600000, 0.000010<=p2<=0.200000, 0.600000<=p3<=0.800000, 0.400000<=p4<=0.600000; -0.400000<=p1<=0.600000, 0.000010<=p2<=0.200000, 0.600000<=p3<=0.800000, 0.600000<=p4<=0.800000; -0.400000<=p1<=0.600000, 0.000010<=p2<=0.200000, 0.600000<=p3<=0.800000, 0.800000<=p4<=0.999990; -0.400000<=p1<=0.600000, 0.000010<=p2<=0.200000, 0.800000<=p3<=0.999990, 0.000010<=p4<=0.200000; -0.400000<=p1<=0.600000, 0.000010<=p2<=0.200000, 0.800000<=p3<=0.999990, 0.200000<=p4<=0.400000; -0.400000<=p1<=0.600000, 0.000010<=p2<=0.200000, 0.800000<=p3<=0.999990, 0.400000<=p4<=0.600000; -0.400000<=p1<=0.600000, 0.000010<=p2<=0.200000, 0.800000<=p3<=0.999990, 0.600000<=p4<=0.800000; -0.400000<=p1<=0.600000, 0.000010<=p2<=0.200000, 0.800000<=p3<=0.999990, 0.800000<=p4<=0.999990; -0.400000<=p1<=0.600000, 0.200000<=p2<=0.400000, 0.000010<=p3<=0.200000, 0.000010<=p4<=0.200000; -0.400000<=p1<=0.600000, 0.200000<=p2<=0.400000, 0.000010<=p3<=0.200000, 0.200000<=p4<=0.400000; -0.400000<=p1<=0.600000, 0.200000<=p2<=0.400000, 0.000010<=p3<=0.200000, 0.400000<=p4<=0.600000; -0.400000<=p1<=0.600000, 0.200000<=p2<=0.400000, 0.000010<=p3<=0.200000, 0.600000<=p4<=0.800000; -0.400000<=p1<=0.600000, 0.200000<=p2<=0.400000, 0.000010<=p3<=0.200000, 0.800000<=p4<=0.999990; -0.400000<=p1<=0.600000, 0.200000<=p2<=0.400000, 0.200000<=p3<=0.400000, 0.000010<=p4<=0.200000; -0.400000<=p1<=0.600000, 0.200000<=p2<=0.400000, 0.200000<=p3<=0.400000, 0.200000<=p4<=0.400000; -0.400000<=p1<=0.600000, 0.200000<=p2<=0.400000, 0.200000<=p3<=0.400000, 0.400000<=p4<=0.600000; -0.400000<=p1<=0.600000, 0.200000<=p2<=0.400000, 0.200000<=p3<=0.400000, 0.600000<=p4<=0.800000; -0.400000<=p1<=0.600000, 0.200000<=p2<=0.400000, 0.200000<=p3<=0.400000, 0.800000<=p4<=0.999990; -0.400000<=p1<=0.600000, 0.200000<=p2<=0.400000, 0.400000<=p3<=0.600000, 0.000010<=p4<=0.200000; -0.400000<=p1<=0.600000, 0.200000<=p2<=0.400000, 0.400000<=p3<=0.600000, 0.200000<=p4<=0.400000; -0.400000<=p1<=0.600000, 0.200000<=p2<=0.400000, 0.400000<=p3<=0.600000, 0.400000<=p4<=0.600000; -0.400000<=p1<=0.600000, 0.200000<=p2<=0.400000, 0.400000<=p3<=0.600000, 0.600000<=p4<=0.800000; -0.400000<=p1<=0.600000, 0.200000<=p2<=0.400000, 0.400000<=p3<=0.600000, 0.800000<=p4<=0.999990; -0.400000<=p1<=0.600000, 0.200000<=p2<=0.400000, 0.600000<=p3<=0.800000, 0.000010<=p4<=0.200000; -0.400000<=p1<=0.600000, 0.200000<=p2<=0.400000, 0.600000<=p3<=0.800000, 0.200000<=p4<=0.400000; -0.400000<=p1<=0.600000, 0.200000<=p2<=0.400000, 0.600000<=p3<=0.800000, 0.400000<=p4<=0.600000; -0.400000<=p1<=0.600000, 0.200000<=p2<=0.400000, 0.600000<=p3<=0.800000, 0.600000<=p4<=0.800000; -0.400000<=p1<=0.600000, 0.200000<=p2<=0.400000, 0.600000<=p3<=0.800000, 0.800000<=p4<=0.999990; -0.400000<=p1<=0.600000, 0.200000<=p2<=0.400000, 0.800000<=p3<=0.999990, 0.000010<=p4<=0.200000; -0.400000<=p1<=0.600000, 0.200000<=p2<=0.400000, 0.800000<=p3<=0.999990, 0.200000<=p4<=0.400000; -0.400000<=p1<=0.600000, 0.200000<=p2<=0.400000, 0.800000<=p3<=0.999990, 0.400000<=p4<=0.600000; -0.400000<=p1<=0.600000, 0.200000<=p2<=0.400000, 0.800000<=p3<=0.999990, 0.600000<=p4<=0.800000; -0.400000<=p1<=0.600000, 0.200000<=p2<=0.400000, 0.800000<=p3<=0.999990, 0.800000<=p4<=0.999990; -0.400000<=p1<=0.600000, 0.400000<=p2<=0.600000, 0.000010<=p3<=0.200000, 0.000010<=p4<=0.200000; -0.400000<=p1<=0.600000, 0.400000<=p2<=0.600000, 0.000010<=p3<=0.200000, 0.200000<=p4<=0.400000; -0.400000<=p1<=0.600000, 0.400000<=p2<=0.600000, 0.000010<=p3<=0.200000, 0.400000<=p4<=0.600000; -0.400000<=p1<=0.600000, 0.400000<=p2<=0.600000, 0.000010<=p3<=0.200000, 0.600000<=p4<=0.800000; -0.400000<=p1<=0.600000, 0.400000<=p2<=0.600000, 0.000010<=p3<=0.200000, 0.800000<=p4<=0.999990; -0.400000<=p1<=0.600000, 0.400000<=p2<=0.600000, 0.200000<=p3<=0.400000, 0.000010<=p4<=0.200000; -0.400000<=p1<=0.600000, 0.400000<=p2<=0.600000, 0.200000<=p3<=0.400000, 0.200000<=p4<=0.400000; -0.400000<=p1<=0.600000, 0.400000<=p2<=0.600000, 0.200000<=p3<=0.400000, 0.400000<=p4<=0.600000; -0.400000<=p1<=0.600000, 0.400000<=p2<=0.600000, 0.200000<=p3<=0.400000, 0.600000<=p4<=0.800000; -0.400000<=p1<=0.600000, 0.400000<=p2<=0.600000, 0.200000<=p3<=0.400000, 0.800000<=p4<=0.999990; -0.400000<=p1<=0.600000, 0.400000<=p2<=0.600000, 0.400000<=p3<=0.600000, 0.000010<=p4<=0.200000; -0.400000<=p1<=0.600000, 0.400000<=p2<=0.600000, 0.400000<=p3<=0.600000, 0.200000<=p4<=0.400000; -0.400000<=p1<=0.600000, 0.400000<=p2<=0.600000, 0.400000<=p3<=0.600000, 0.400000<=p4<=0.600000; -0.400000<=p1<=0.600000, 0.400000<=p2<=0.600000, 0.400000<=p3<=0.600000, 0.600000<=p4<=0.800000; -0.400000<=p1<=0.600000, 0.400000<=p2<=0.600000, 0.400000<=p3<=0.600000, 0.800000<=p4<=0.999990; -0.400000<=p1<=0.600000, 0.400000<=p2<=0.600000, 0.600000<=p3<=0.800000, 0.000010<=p4<=0.200000; -0.400000<=p1<=0.600000, 0.400000<=p2<=0.600000, 0.600000<=p3<=0.800000, 0.200000<=p4<=0.400000; -0.400000<=p1<=0.600000, 0.400000<=p2<=0.600000, 0.600000<=p3<=0.800000, 0.400000<=p4<=0.600000; -0.400000<=p1<=0.600000, 0.400000<=p2<=0.600000, 0.600000<=p3<=0.800000, 0.600000<=p4<=0.800000; -0.400000<=p1<=0.600000, 0.400000<=p2<=0.600000, 0.600000<=p3<=0.800000, 0.800000<=p4<=0.999990; -0.400000<=p1<=0.600000, 0.400000<=p2<=0.600000, 0.800000<=p3<=0.999990, 0.000010<=p4<=0.200000; -0.400000<=p1<=0.600000, 0.400000<=p2<=0.600000, 0.800000<=p3<=0.999990, 0.200000<=p4<=0.400000; -0.400000<=p1<=0.600000, 0.400000<=p2<=0.600000, 0.800000<=p3<=0.999990, 0.400000<=p4<=0.600000; -0.400000<=p1<=0.600000, 0.400000<=p2<=0.600000, 0.800000<=p3<=0.999990, 0.600000<=p4<=0.800000; -0.400000<=p1<=0.600000, 0.400000<=p2<=0.600000, 0.800000<=p3<=0.999990, 0.800000<=p4<=0.999990; -0.400000<=p1<=0.600000, 0.600000<=p2<=0.800000, 0.000010<=p3<=0.200000, 0.000010<=p4<=0.200000; -0.400000<=p1<=0.600000, 0.600000<=p2<=0.800000, 0.000010<=p3<=0.200000, 0.200000<=p4<=0.400000; -0.400000<=p1<=0.600000, 0.600000<=p2<=0.800000, 0.000010<=p3<=0.200000, 0.400000<=p4<=0.600000; -0.400000<=p1<=0.600000, 0.600000<=p2<=0.800000, 0.000010<=p3<=0.200000, 0.600000<=p4<=0.800000; -0.400000<=p1<=0.600000, 0.600000<=p2<=0.800000, 0.000010<=p3<=0.200000, 0.800000<=p4<=0.999990; -0.400000<=p1<=0.600000, 0.600000<=p2<=0.800000, 0.200000<=p3<=0.400000, 0.000010<=p4<=0.200000; -0.400000<=p1<=0.600000, 0.600000<=p2<=0.800000, 0.200000<=p3<=0.400000, 0.200000<=p4<=0.400000; -0.400000<=p1<=0.600000, 0.600000<=p2<=0.800000, 0.200000<=p3<=0.400000, 0.400000<=p4<=0.600000; -0.400000<=p1<=0.600000, 0.600000<=p2<=0.800000, 0.200000<=p3<=0.400000, 0.600000<=p4<=0.800000; -0.400000<=p1<=0.600000, 0.600000<=p2<=0.800000, 0.200000<=p3<=0.400000, 0.800000<=p4<=0.999990; -0.400000<=p1<=0.600000, 0.600000<=p2<=0.800000, 0.400000<=p3<=0.600000, 0.000010<=p4<=0.200000; -0.400000<=p1<=0.600000, 0.600000<=p2<=0.800000, 0.400000<=p3<=0.600000, 0.200000<=p4<=0.400000; -0.400000<=p1<=0.600000, 0.600000<=p2<=0.800000, 0.400000<=p3<=0.600000, 0.400000<=p4<=0.600000; -0.400000<=p1<=0.600000, 0.600000<=p2<=0.800000, 0.400000<=p3<=0.600000, 0.600000<=p4<=0.800000; -0.400000<=p1<=0.600000, 0.600000<=p2<=0.800000, 0.400000<=p3<=0.600000, 0.800000<=p4<=0.999990; -0.400000<=p1<=0.600000, 0.600000<=p2<=0.800000, 0.600000<=p3<=0.800000, 0.000010<=p4<=0.200000; -0.400000<=p1<=0.600000, 0.600000<=p2<=0.800000, 0.600000<=p3<=0.800000, 0.200000<=p4<=0.400000; -0.400000<=p1<=0.600000, 0.600000<=p2<=0.800000, 0.600000<=p3<=0.800000, 0.400000<=p4<=0.600000; -0.400000<=p1<=0.600000, 0.600000<=p2<=0.800000, 0.600000<=p3<=0.800000, 0.600000<=p4<=0.800000; -0.400000<=p1<=0.600000, 0.600000<=p2<=0.800000, 0.600000<=p3<=0.800000, 0.800000<=p4<=0.999990; -0.400000<=p1<=0.600000, 0.600000<=p2<=0.800000, 0.800000<=p3<=0.999990, 0.000010<=p4<=0.200000; -0.400000<=p1<=0.600000, 0.600000<=p2<=0.800000, 0.800000<=p3<=0.999990, 0.200000<=p4<=0.400000; -0.400000<=p1<=0.600000, 0.600000<=p2<=0.800000, 0.800000<=p3<=0.999990, 0.400000<=p4<=0.600000; -0.400000<=p1<=0.600000, 0.600000<=p2<=0.800000, 0.800000<=p3<=0.999990, 0.600000<=p4<=0.800000; -0.400000<=p1<=0.600000, 0.600000<=p2<=0.800000, 0.800000<=p3<=0.999990, 0.800000<=p4<=0.999990; -0.400000<=p1<=0.600000, 0.800000<=p2<=0.999990, 0.000010<=p3<=0.200000, 0.000010<=p4<=0.200000; -0.400000<=p1<=0.600000, 0.800000<=p2<=0.999990, 0.000010<=p3<=0.200000, 0.200000<=p4<=0.400000; -0.400000<=p1<=0.600000, 0.800000<=p2<=0.999990, 0.000010<=p3<=0.200000, 0.400000<=p4<=0.600000; -0.400000<=p1<=0.600000, 0.800000<=p2<=0.999990, 0.000010<=p3<=0.200000, 0.600000<=p4<=0.800000; -0.400000<=p1<=0.600000, 0.800000<=p2<=0.999990, 0.000010<=p3<=0.200000, 0.800000<=p4<=0.999990; -0.400000<=p1<=0.600000, 0.800000<=p2<=0.999990, 0.200000<=p3<=0.400000, 0.000010<=p4<=0.200000; -0.400000<=p1<=0.600000, 0.800000<=p2<=0.999990, 0.200000<=p3<=0.400000, 0.200000<=p4<=0.400000; -0.400000<=p1<=0.600000, 0.800000<=p2<=0.999990, 0.200000<=p3<=0.400000, 0.400000<=p4<=0.600000; -0.400000<=p1<=0.600000, 0.800000<=p2<=0.999990, 0.200000<=p3<=0.400000, 0.600000<=p4<=0.800000; -0.400000<=p1<=0.600000, 0.800000<=p2<=0.999990, 0.200000<=p3<=0.400000, 0.800000<=p4<=0.999990; -0.400000<=p1<=0.600000, 0.800000<=p2<=0.999990, 0.400000<=p3<=0.600000, 0.000010<=p4<=0.200000; -0.400000<=p1<=0.600000, 0.800000<=p2<=0.999990, 0.400000<=p3<=0.600000, 0.200000<=p4<=0.400000; -0.400000<=p1<=0.600000, 0.800000<=p2<=0.999990, 0.400000<=p3<=0.600000, 0.400000<=p4<=0.600000; -0.400000<=p1<=0.600000, 0.800000<=p2<=0.999990, 0.400000<=p3<=0.600000, 0.600000<=p4<=0.800000; -0.400000<=p1<=0.600000, 0.800000<=p2<=0.999990, 0.400000<=p3<=0.600000, 0.800000<=p4<=0.999990; -0.400000<=p1<=0.600000, 0.800000<=p2<=0.999990, 0.600000<=p3<=0.800000, 0.000010<=p4<=0.200000; -0.400000<=p1<=0.600000, 0.800000<=p2<=0.999990, 0.600000<=p3<=0.800000, 0.200000<=p4<=0.400000; -0.400000<=p1<=0.600000, 0.800000<=p2<=0.999990, 0.600000<=p3<=0.800000, 0.400000<=p4<=0.600000; -0.400000<=p1<=0.600000, 0.800000<=p2<=0.999990, 0.600000<=p3<=0.800000, 0.600000<=p4<=0.800000; -0.400000<=p1<=0.600000, 0.800000<=p2<=0.999990, 0.600000<=p3<=0.800000, 0.800000<=p4<=0.999990; -0.400000<=p1<=0.600000, 0.800000<=p2<=0.999990, 0.800000<=p3<=0.999990, 0.000010<=p4<=0.200000; -0.400000<=p1<=0.600000, 0.800000<=p2<=0.999990, 0.800000<=p3<=0.999990, 0.200000<=p4<=0.400000; -0.400000<=p1<=0.600000, 0.800000<=p2<=0.999990, 0.800000<=p3<=0.999990, 0.400000<=p4<=0.600000; -0.400000<=p1<=0.600000, 0.800000<=p2<=0.999990, 0.800000<=p3<=0.999990, 0.600000<=p4<=0.800000; -0.400000<=p1<=0.600000, 0.800000<=p2<=0.999990, 0.800000<=p3<=0.999990, 0.800000<=p4<=0.999990; -0.600000<=p1<=0.800000, 0.000010<=p2<=0.200000, 0.000010<=p3<=0.200000, 0.000010<=p4<=0.200000; -0.600000<=p1<=0.800000, 0.000010<=p2<=0.200000, 0.000010<=p3<=0.200000, 0.200000<=p4<=0.400000; -0.600000<=p1<=0.800000, 0.000010<=p2<=0.200000, 0.000010<=p3<=0.200000, 0.400000<=p4<=0.600000; -0.600000<=p1<=0.800000, 0.000010<=p2<=0.200000, 0.000010<=p3<=0.200000, 0.600000<=p4<=0.800000; -0.600000<=p1<=0.800000, 0.000010<=p2<=0.200000, 0.000010<=p3<=0.200000, 0.800000<=p4<=0.999990; -0.600000<=p1<=0.800000, 0.000010<=p2<=0.200000, 0.200000<=p3<=0.400000, 0.000010<=p4<=0.200000; -0.600000<=p1<=0.800000, 0.000010<=p2<=0.200000, 0.200000<=p3<=0.400000, 0.200000<=p4<=0.400000; -0.600000<=p1<=0.800000, 0.000010<=p2<=0.200000, 0.200000<=p3<=0.400000, 0.400000<=p4<=0.600000; -0.600000<=p1<=0.800000, 0.000010<=p2<=0.200000, 0.200000<=p3<=0.400000, 0.600000<=p4<=0.800000; -0.600000<=p1<=0.800000, 0.000010<=p2<=0.200000, 0.200000<=p3<=0.400000, 0.800000<=p4<=0.999990; -0.600000<=p1<=0.800000, 0.000010<=p2<=0.200000, 0.400000<=p3<=0.600000, 0.000010<=p4<=0.200000; -0.600000<=p1<=0.800000, 0.000010<=p2<=0.200000, 0.400000<=p3<=0.600000, 0.200000<=p4<=0.400000; -0.600000<=p1<=0.800000, 0.000010<=p2<=0.200000, 0.400000<=p3<=0.600000, 0.400000<=p4<=0.600000; -0.600000<=p1<=0.800000, 0.000010<=p2<=0.200000, 0.400000<=p3<=0.600000, 0.600000<=p4<=0.800000; -0.600000<=p1<=0.800000, 0.000010<=p2<=0.200000, 0.400000<=p3<=0.600000, 0.800000<=p4<=0.999990; -0.600000<=p1<=0.800000, 0.000010<=p2<=0.200000, 0.600000<=p3<=0.800000, 0.000010<=p4<=0.200000; -0.600000<=p1<=0.800000, 0.000010<=p2<=0.200000, 0.600000<=p3<=0.800000, 0.200000<=p4<=0.400000; -0.600000<=p1<=0.800000, 0.000010<=p2<=0.200000, 0.600000<=p3<=0.800000, 0.400000<=p4<=0.600000; -0.600000<=p1<=0.800000, 0.000010<=p2<=0.200000, 0.600000<=p3<=0.800000, 0.600000<=p4<=0.800000; -0.600000<=p1<=0.800000, 0.000010<=p2<=0.200000, 0.600000<=p3<=0.800000, 0.800000<=p4<=0.999990; -0.600000<=p1<=0.800000, 0.000010<=p2<=0.200000, 0.800000<=p3<=0.999990, 0.000010<=p4<=0.200000; -0.600000<=p1<=0.800000, 0.000010<=p2<=0.200000, 0.800000<=p3<=0.999990, 0.200000<=p4<=0.400000; -0.600000<=p1<=0.800000, 0.000010<=p2<=0.200000, 0.800000<=p3<=0.999990, 0.400000<=p4<=0.600000; -0.600000<=p1<=0.800000, 0.000010<=p2<=0.200000, 0.800000<=p3<=0.999990, 0.600000<=p4<=0.800000; -0.600000<=p1<=0.800000, 0.000010<=p2<=0.200000, 0.800000<=p3<=0.999990, 0.800000<=p4<=0.999990; -0.600000<=p1<=0.800000, 0.200000<=p2<=0.400000, 0.000010<=p3<=0.200000, 0.000010<=p4<=0.200000; -0.600000<=p1<=0.800000, 0.200000<=p2<=0.400000, 0.000010<=p3<=0.200000, 0.200000<=p4<=0.400000; -0.600000<=p1<=0.800000, 0.200000<=p2<=0.400000, 0.000010<=p3<=0.200000, 0.400000<=p4<=0.600000; -0.600000<=p1<=0.800000, 0.200000<=p2<=0.400000, 0.000010<=p3<=0.200000, 0.600000<=p4<=0.800000; -0.600000<=p1<=0.800000, 0.200000<=p2<=0.400000, 0.000010<=p3<=0.200000, 0.800000<=p4<=0.999990; -0.600000<=p1<=0.800000, 0.200000<=p2<=0.400000, 0.200000<=p3<=0.400000, 0.000010<=p4<=0.200000; -0.600000<=p1<=0.800000, 0.200000<=p2<=0.400000, 0.200000<=p3<=0.400000, 0.200000<=p4<=0.400000; -0.600000<=p1<=0.800000, 0.200000<=p2<=0.400000, 0.200000<=p3<=0.400000, 0.400000<=p4<=0.600000; -0.600000<=p1<=0.800000, 0.200000<=p2<=0.400000, 0.200000<=p3<=0.400000, 0.600000<=p4<=0.800000; -0.600000<=p1<=0.800000, 0.200000<=p2<=0.400000, 0.200000<=p3<=0.400000, 0.800000<=p4<=0.999990; -0.600000<=p1<=0.800000, 0.200000<=p2<=0.400000, 0.400000<=p3<=0.600000, 0.000010<=p4<=0.200000; -0.600000<=p1<=0.800000, 0.200000<=p2<=0.400000, 0.400000<=p3<=0.600000, 0.200000<=p4<=0.400000; -0.600000<=p1<=0.800000, 0.200000<=p2<=0.400000, 0.400000<=p3<=0.600000, 0.400000<=p4<=0.600000; -0.600000<=p1<=0.800000, 0.200000<=p2<=0.400000, 0.400000<=p3<=0.600000, 0.600000<=p4<=0.800000; -0.600000<=p1<=0.800000, 0.200000<=p2<=0.400000, 0.400000<=p3<=0.600000, 0.800000<=p4<=0.999990; -0.600000<=p1<=0.800000, 0.200000<=p2<=0.400000, 0.600000<=p3<=0.800000, 0.000010<=p4<=0.200000; -0.600000<=p1<=0.800000, 0.200000<=p2<=0.400000, 0.600000<=p3<=0.800000, 0.200000<=p4<=0.400000; -0.600000<=p1<=0.800000, 0.200000<=p2<=0.400000, 0.600000<=p3<=0.800000, 0.400000<=p4<=0.600000; -0.600000<=p1<=0.800000, 0.200000<=p2<=0.400000, 0.600000<=p3<=0.800000, 0.600000<=p4<=0.800000; -0.600000<=p1<=0.800000, 0.200000<=p2<=0.400000, 0.600000<=p3<=0.800000, 0.800000<=p4<=0.999990; -0.600000<=p1<=0.800000, 0.200000<=p2<=0.400000, 0.800000<=p3<=0.999990, 0.000010<=p4<=0.200000; -0.600000<=p1<=0.800000, 0.200000<=p2<=0.400000, 0.800000<=p3<=0.999990, 0.200000<=p4<=0.400000; -0.600000<=p1<=0.800000, 0.200000<=p2<=0.400000, 0.800000<=p3<=0.999990, 0.400000<=p4<=0.600000; -0.600000<=p1<=0.800000, 0.200000<=p2<=0.400000, 0.800000<=p3<=0.999990, 0.600000<=p4<=0.800000; -0.600000<=p1<=0.800000, 0.200000<=p2<=0.400000, 0.800000<=p3<=0.999990, 0.800000<=p4<=0.999990; -0.600000<=p1<=0.800000, 0.400000<=p2<=0.600000, 0.000010<=p3<=0.200000, 0.000010<=p4<=0.200000; -0.600000<=p1<=0.800000, 0.400000<=p2<=0.600000, 0.000010<=p3<=0.200000, 0.200000<=p4<=0.400000; -0.600000<=p1<=0.800000, 0.400000<=p2<=0.600000, 0.000010<=p3<=0.200000, 0.400000<=p4<=0.600000; -0.600000<=p1<=0.800000, 0.400000<=p2<=0.600000, 0.000010<=p3<=0.200000, 0.600000<=p4<=0.800000; -0.600000<=p1<=0.800000, 0.400000<=p2<=0.600000, 0.000010<=p3<=0.200000, 0.800000<=p4<=0.999990; -0.600000<=p1<=0.800000, 0.400000<=p2<=0.600000, 0.200000<=p3<=0.400000, 0.000010<=p4<=0.200000; -0.600000<=p1<=0.800000, 0.400000<=p2<=0.600000, 0.200000<=p3<=0.400000, 0.200000<=p4<=0.400000; -0.600000<=p1<=0.800000, 0.400000<=p2<=0.600000, 0.200000<=p3<=0.400000, 0.400000<=p4<=0.600000; -0.600000<=p1<=0.800000, 0.400000<=p2<=0.600000, 0.200000<=p3<=0.400000, 0.600000<=p4<=0.800000; -0.600000<=p1<=0.800000, 0.400000<=p2<=0.600000, 0.200000<=p3<=0.400000, 0.800000<=p4<=0.999990; -0.600000<=p1<=0.800000, 0.400000<=p2<=0.600000, 0.400000<=p3<=0.600000, 0.000010<=p4<=0.200000; -0.600000<=p1<=0.800000, 0.400000<=p2<=0.600000, 0.400000<=p3<=0.600000, 0.200000<=p4<=0.400000; -0.600000<=p1<=0.800000, 0.400000<=p2<=0.600000, 0.400000<=p3<=0.600000, 0.400000<=p4<=0.600000; -0.600000<=p1<=0.800000, 0.400000<=p2<=0.600000, 0.400000<=p3<=0.600000, 0.600000<=p4<=0.800000; -0.600000<=p1<=0.800000, 0.400000<=p2<=0.600000, 0.400000<=p3<=0.600000, 0.800000<=p4<=0.999990; -0.600000<=p1<=0.800000, 0.400000<=p2<=0.600000, 0.600000<=p3<=0.800000, 0.000010<=p4<=0.200000; -0.600000<=p1<=0.800000, 0.400000<=p2<=0.600000, 0.600000<=p3<=0.800000, 0.200000<=p4<=0.400000; -0.600000<=p1<=0.800000, 0.400000<=p2<=0.600000, 0.600000<=p3<=0.800000, 0.400000<=p4<=0.600000; -0.600000<=p1<=0.800000, 0.400000<=p2<=0.600000, 0.600000<=p3<=0.800000, 0.600000<=p4<=0.800000; -0.600000<=p1<=0.800000, 0.400000<=p2<=0.600000, 0.600000<=p3<=0.800000, 0.800000<=p4<=0.999990; -0.600000<=p1<=0.800000, 0.400000<=p2<=0.600000, 0.800000<=p3<=0.999990, 0.000010<=p4<=0.200000; -0.600000<=p1<=0.800000, 0.400000<=p2<=0.600000, 0.800000<=p3<=0.999990, 0.200000<=p4<=0.400000; -0.600000<=p1<=0.800000, 0.400000<=p2<=0.600000, 0.800000<=p3<=0.999990, 0.400000<=p4<=0.600000; -0.600000<=p1<=0.800000, 0.400000<=p2<=0.600000, 0.800000<=p3<=0.999990, 0.600000<=p4<=0.800000; -0.600000<=p1<=0.800000, 0.400000<=p2<=0.600000, 0.800000<=p3<=0.999990, 0.800000<=p4<=0.999990; -0.600000<=p1<=0.800000, 0.600000<=p2<=0.800000, 0.000010<=p3<=0.200000, 0.000010<=p4<=0.200000; -0.600000<=p1<=0.800000, 0.600000<=p2<=0.800000, 0.000010<=p3<=0.200000, 0.200000<=p4<=0.400000; -0.600000<=p1<=0.800000, 0.600000<=p2<=0.800000, 0.000010<=p3<=0.200000, 0.400000<=p4<=0.600000; -0.600000<=p1<=0.800000, 0.600000<=p2<=0.800000, 0.000010<=p3<=0.200000, 0.600000<=p4<=0.800000; -0.600000<=p1<=0.800000, 0.600000<=p2<=0.800000, 0.000010<=p3<=0.200000, 0.800000<=p4<=0.999990; -0.600000<=p1<=0.800000, 0.600000<=p2<=0.800000, 0.200000<=p3<=0.400000, 0.000010<=p4<=0.200000; -0.600000<=p1<=0.800000, 0.600000<=p2<=0.800000, 0.200000<=p3<=0.400000, 0.200000<=p4<=0.400000; -0.600000<=p1<=0.800000, 0.600000<=p2<=0.800000, 0.200000<=p3<=0.400000, 0.400000<=p4<=0.600000; -0.600000<=p1<=0.800000, 0.600000<=p2<=0.800000, 0.200000<=p3<=0.400000, 0.600000<=p4<=0.800000; -0.600000<=p1<=0.800000, 0.600000<=p2<=0.800000, 0.200000<=p3<=0.400000, 0.800000<=p4<=0.999990; -0.600000<=p1<=0.800000, 0.600000<=p2<=0.800000, 0.400000<=p3<=0.600000, 0.000010<=p4<=0.200000; -0.600000<=p1<=0.800000, 0.600000<=p2<=0.800000, 0.400000<=p3<=0.600000, 0.200000<=p4<=0.400000; -0.600000<=p1<=0.800000, 0.600000<=p2<=0.800000, 0.400000<=p3<=0.600000, 0.400000<=p4<=0.600000; -0.600000<=p1<=0.800000, 0.600000<=p2<=0.800000, 0.400000<=p3<=0.600000, 0.600000<=p4<=0.800000; -0.600000<=p1<=0.800000, 0.600000<=p2<=0.800000, 0.400000<=p3<=0.600000, 0.800000<=p4<=0.999990; -0.600000<=p1<=0.800000, 0.600000<=p2<=0.800000, 0.600000<=p3<=0.800000, 0.000010<=p4<=0.200000; -0.600000<=p1<=0.800000, 0.600000<=p2<=0.800000, 0.600000<=p3<=0.800000, 0.200000<=p4<=0.400000; -0.600000<=p1<=0.800000, 0.600000<=p2<=0.800000, 0.600000<=p3<=0.800000, 0.400000<=p4<=0.600000; -0.600000<=p1<=0.800000, 0.600000<=p2<=0.800000, 0.600000<=p3<=0.800000, 0.600000<=p4<=0.800000; -0.600000<=p1<=0.800000, 0.600000<=p2<=0.800000, 0.600000<=p3<=0.800000, 0.800000<=p4<=0.999990; -0.600000<=p1<=0.800000, 0.600000<=p2<=0.800000, 0.800000<=p3<=0.999990, 0.000010<=p4<=0.200000; -0.600000<=p1<=0.800000, 0.600000<=p2<=0.800000, 0.800000<=p3<=0.999990, 0.200000<=p4<=0.400000; -0.600000<=p1<=0.800000, 0.600000<=p2<=0.800000, 0.800000<=p3<=0.999990, 0.400000<=p4<=0.600000; -0.600000<=p1<=0.800000, 0.600000<=p2<=0.800000, 0.800000<=p3<=0.999990, 0.600000<=p4<=0.800000; -0.600000<=p1<=0.800000, 0.600000<=p2<=0.800000, 0.800000<=p3<=0.999990, 0.800000<=p4<=0.999990; -0.600000<=p1<=0.800000, 0.800000<=p2<=0.999990, 0.000010<=p3<=0.200000, 0.000010<=p4<=0.200000; -0.600000<=p1<=0.800000, 0.800000<=p2<=0.999990, 0.000010<=p3<=0.200000, 0.200000<=p4<=0.400000; -0.600000<=p1<=0.800000, 0.800000<=p2<=0.999990, 0.000010<=p3<=0.200000, 0.400000<=p4<=0.600000; -0.600000<=p1<=0.800000, 0.800000<=p2<=0.999990, 0.000010<=p3<=0.200000, 0.600000<=p4<=0.800000; -0.600000<=p1<=0.800000, 0.800000<=p2<=0.999990, 0.000010<=p3<=0.200000, 0.800000<=p4<=0.999990; -0.600000<=p1<=0.800000, 0.800000<=p2<=0.999990, 0.200000<=p3<=0.400000, 0.000010<=p4<=0.200000; -0.600000<=p1<=0.800000, 0.800000<=p2<=0.999990, 0.200000<=p3<=0.400000, 0.200000<=p4<=0.400000; -0.600000<=p1<=0.800000, 0.800000<=p2<=0.999990, 0.200000<=p3<=0.400000, 0.400000<=p4<=0.600000; -0.600000<=p1<=0.800000, 0.800000<=p2<=0.999990, 0.200000<=p3<=0.400000, 0.600000<=p4<=0.800000; -0.600000<=p1<=0.800000, 0.800000<=p2<=0.999990, 0.200000<=p3<=0.400000, 0.800000<=p4<=0.999990; -0.600000<=p1<=0.800000, 0.800000<=p2<=0.999990, 0.400000<=p3<=0.600000, 0.000010<=p4<=0.200000; -0.600000<=p1<=0.800000, 0.800000<=p2<=0.999990, 0.400000<=p3<=0.600000, 0.200000<=p4<=0.400000; -0.600000<=p1<=0.800000, 0.800000<=p2<=0.999990, 0.400000<=p3<=0.600000, 0.400000<=p4<=0.600000; -0.600000<=p1<=0.800000, 0.800000<=p2<=0.999990, 0.400000<=p3<=0.600000, 0.600000<=p4<=0.800000; -0.600000<=p1<=0.800000, 0.800000<=p2<=0.999990, 0.400000<=p3<=0.600000, 0.800000<=p4<=0.999990; -0.600000<=p1<=0.800000, 0.800000<=p2<=0.999990, 0.600000<=p3<=0.800000, 0.000010<=p4<=0.200000; -0.600000<=p1<=0.800000, 0.800000<=p2<=0.999990, 0.600000<=p3<=0.800000, 0.200000<=p4<=0.400000; -0.600000<=p1<=0.800000, 0.800000<=p2<=0.999990, 0.600000<=p3<=0.800000, 0.400000<=p4<=0.600000; -0.600000<=p1<=0.800000, 0.800000<=p2<=0.999990, 0.600000<=p3<=0.800000, 0.600000<=p4<=0.800000; -0.600000<=p1<=0.800000, 0.800000<=p2<=0.999990, 0.600000<=p3<=0.800000, 0.800000<=p4<=0.999990; -0.600000<=p1<=0.800000, 0.800000<=p2<=0.999990, 0.800000<=p3<=0.999990, 0.000010<=p4<=0.200000; -0.600000<=p1<=0.800000, 0.800000<=p2<=0.999990, 0.800000<=p3<=0.999990, 0.200000<=p4<=0.400000; -0.600000<=p1<=0.800000, 0.800000<=p2<=0.999990, 0.800000<=p3<=0.999990, 0.400000<=p4<=0.600000; -0.600000<=p1<=0.800000, 0.800000<=p2<=0.999990, 0.800000<=p3<=0.999990, 0.600000<=p4<=0.800000; -0.600000<=p1<=0.800000, 0.800000<=p2<=0.999990, 0.800000<=p3<=0.999990, 0.800000<=p4<=0.999990; -0.800000<=p1<=0.999990, 0.000010<=p2<=0.200000, 0.000010<=p3<=0.200000, 0.000010<=p4<=0.200000; -0.800000<=p1<=0.999990, 0.000010<=p2<=0.200000, 0.000010<=p3<=0.200000, 0.200000<=p4<=0.400000; -0.800000<=p1<=0.999990, 0.000010<=p2<=0.200000, 0.000010<=p3<=0.200000, 0.400000<=p4<=0.600000; -0.800000<=p1<=0.999990, 0.000010<=p2<=0.200000, 0.000010<=p3<=0.200000, 0.600000<=p4<=0.800000; -0.800000<=p1<=0.999990, 0.000010<=p2<=0.200000, 0.000010<=p3<=0.200000, 0.800000<=p4<=0.999990; -0.800000<=p1<=0.999990, 0.000010<=p2<=0.200000, 0.200000<=p3<=0.400000, 0.000010<=p4<=0.200000; -0.800000<=p1<=0.999990, 0.000010<=p2<=0.200000, 0.200000<=p3<=0.400000, 0.200000<=p4<=0.400000; -0.800000<=p1<=0.999990, 0.000010<=p2<=0.200000, 0.200000<=p3<=0.400000, 0.400000<=p4<=0.600000; -0.800000<=p1<=0.999990, 0.000010<=p2<=0.200000, 0.200000<=p3<=0.400000, 0.600000<=p4<=0.800000; -0.800000<=p1<=0.999990, 0.000010<=p2<=0.200000, 0.200000<=p3<=0.400000, 0.800000<=p4<=0.999990; -0.800000<=p1<=0.999990, 0.000010<=p2<=0.200000, 0.400000<=p3<=0.600000, 0.000010<=p4<=0.200000; -0.800000<=p1<=0.999990, 0.000010<=p2<=0.200000, 0.400000<=p3<=0.600000, 0.200000<=p4<=0.400000; -0.800000<=p1<=0.999990, 0.000010<=p2<=0.200000, 0.400000<=p3<=0.600000, 0.400000<=p4<=0.600000; -0.800000<=p1<=0.999990, 0.000010<=p2<=0.200000, 0.400000<=p3<=0.600000, 0.600000<=p4<=0.800000; -0.800000<=p1<=0.999990, 0.000010<=p2<=0.200000, 0.400000<=p3<=0.600000, 0.800000<=p4<=0.999990; -0.800000<=p1<=0.999990, 0.000010<=p2<=0.200000, 0.600000<=p3<=0.800000, 0.000010<=p4<=0.200000; -0.800000<=p1<=0.999990, 0.000010<=p2<=0.200000, 0.600000<=p3<=0.800000, 0.200000<=p4<=0.400000; -0.800000<=p1<=0.999990, 0.000010<=p2<=0.200000, 0.600000<=p3<=0.800000, 0.400000<=p4<=0.600000; -0.800000<=p1<=0.999990, 0.000010<=p2<=0.200000, 0.600000<=p3<=0.800000, 0.600000<=p4<=0.800000; -0.800000<=p1<=0.999990, 0.000010<=p2<=0.200000, 0.600000<=p3<=0.800000, 0.800000<=p4<=0.999990; -0.800000<=p1<=0.999990, 0.000010<=p2<=0.200000, 0.800000<=p3<=0.999990, 0.000010<=p4<=0.200000; -0.800000<=p1<=0.999990, 0.000010<=p2<=0.200000, 0.800000<=p3<=0.999990, 0.200000<=p4<=0.400000; -0.800000<=p1<=0.999990, 0.000010<=p2<=0.200000, 0.800000<=p3<=0.999990, 0.400000<=p4<=0.600000; -0.800000<=p1<=0.999990, 0.000010<=p2<=0.200000, 0.800000<=p3<=0.999990, 0.600000<=p4<=0.800000; -0.800000<=p1<=0.999990, 0.000010<=p2<=0.200000, 0.800000<=p3<=0.999990, 0.800000<=p4<=0.999990; -0.800000<=p1<=0.999990, 0.200000<=p2<=0.400000, 0.000010<=p3<=0.200000, 0.000010<=p4<=0.200000; -0.800000<=p1<=0.999990, 0.200000<=p2<=0.400000, 0.000010<=p3<=0.200000, 0.200000<=p4<=0.400000; -0.800000<=p1<=0.999990, 0.200000<=p2<=0.400000, 0.000010<=p3<=0.200000, 0.400000<=p4<=0.600000; -0.800000<=p1<=0.999990, 0.200000<=p2<=0.400000, 0.000010<=p3<=0.200000, 0.600000<=p4<=0.800000; -0.800000<=p1<=0.999990, 0.200000<=p2<=0.400000, 0.000010<=p3<=0.200000, 0.800000<=p4<=0.999990; -0.800000<=p1<=0.999990, 0.200000<=p2<=0.400000, 0.200000<=p3<=0.400000, 0.000010<=p4<=0.200000; -0.800000<=p1<=0.999990, 0.200000<=p2<=0.400000, 0.200000<=p3<=0.400000, 0.200000<=p4<=0.400000; -0.800000<=p1<=0.999990, 0.200000<=p2<=0.400000, 0.200000<=p3<=0.400000, 0.400000<=p4<=0.600000; -0.800000<=p1<=0.999990, 0.200000<=p2<=0.400000, 0.200000<=p3<=0.400000, 0.600000<=p4<=0.800000; -0.800000<=p1<=0.999990, 0.200000<=p2<=0.400000, 0.200000<=p3<=0.400000, 0.800000<=p4<=0.999990; -0.800000<=p1<=0.999990, 0.200000<=p2<=0.400000, 0.400000<=p3<=0.600000, 0.000010<=p4<=0.200000; -0.800000<=p1<=0.999990, 0.200000<=p2<=0.400000, 0.400000<=p3<=0.600000, 0.200000<=p4<=0.400000; -0.800000<=p1<=0.999990, 0.200000<=p2<=0.400000, 0.400000<=p3<=0.600000, 0.400000<=p4<=0.600000; -0.800000<=p1<=0.999990, 0.200000<=p2<=0.400000, 0.400000<=p3<=0.600000, 0.600000<=p4<=0.800000; -0.800000<=p1<=0.999990, 0.200000<=p2<=0.400000, 0.400000<=p3<=0.600000, 0.800000<=p4<=0.999990; -0.800000<=p1<=0.999990, 0.200000<=p2<=0.400000, 0.600000<=p3<=0.800000, 0.000010<=p4<=0.200000; -0.800000<=p1<=0.999990, 0.200000<=p2<=0.400000, 0.600000<=p3<=0.800000, 0.200000<=p4<=0.400000; -0.800000<=p1<=0.999990, 0.200000<=p2<=0.400000, 0.600000<=p3<=0.800000, 0.400000<=p4<=0.600000; -0.800000<=p1<=0.999990, 0.200000<=p2<=0.400000, 0.600000<=p3<=0.800000, 0.600000<=p4<=0.800000; -0.800000<=p1<=0.999990, 0.200000<=p2<=0.400000, 0.600000<=p3<=0.800000, 0.800000<=p4<=0.999990; -0.800000<=p1<=0.999990, 0.200000<=p2<=0.400000, 0.800000<=p3<=0.999990, 0.000010<=p4<=0.200000; -0.800000<=p1<=0.999990, 0.200000<=p2<=0.400000, 0.800000<=p3<=0.999990, 0.200000<=p4<=0.400000; -0.800000<=p1<=0.999990, 0.200000<=p2<=0.400000, 0.800000<=p3<=0.999990, 0.400000<=p4<=0.600000; -0.800000<=p1<=0.999990, 0.200000<=p2<=0.400000, 0.800000<=p3<=0.999990, 0.600000<=p4<=0.800000; -0.800000<=p1<=0.999990, 0.200000<=p2<=0.400000, 0.800000<=p3<=0.999990, 0.800000<=p4<=0.999990; -0.800000<=p1<=0.999990, 0.400000<=p2<=0.600000, 0.000010<=p3<=0.200000, 0.000010<=p4<=0.200000; -0.800000<=p1<=0.999990, 0.400000<=p2<=0.600000, 0.000010<=p3<=0.200000, 0.200000<=p4<=0.400000; -0.800000<=p1<=0.999990, 0.400000<=p2<=0.600000, 0.000010<=p3<=0.200000, 0.400000<=p4<=0.600000; -0.800000<=p1<=0.999990, 0.400000<=p2<=0.600000, 0.000010<=p3<=0.200000, 0.600000<=p4<=0.800000; -0.800000<=p1<=0.999990, 0.400000<=p2<=0.600000, 0.000010<=p3<=0.200000, 0.800000<=p4<=0.999990; -0.800000<=p1<=0.999990, 0.400000<=p2<=0.600000, 0.200000<=p3<=0.400000, 0.000010<=p4<=0.200000; -0.800000<=p1<=0.999990, 0.400000<=p2<=0.600000, 0.200000<=p3<=0.400000, 0.200000<=p4<=0.400000; -0.800000<=p1<=0.999990, 0.400000<=p2<=0.600000, 0.200000<=p3<=0.400000, 0.400000<=p4<=0.600000; -0.800000<=p1<=0.999990, 0.400000<=p2<=0.600000, 0.200000<=p3<=0.400000, 0.600000<=p4<=0.800000; -0.800000<=p1<=0.999990, 0.400000<=p2<=0.600000, 0.200000<=p3<=0.400000, 0.800000<=p4<=0.999990; -0.800000<=p1<=0.999990, 0.400000<=p2<=0.600000, 0.400000<=p3<=0.600000, 0.000010<=p4<=0.200000; -0.800000<=p1<=0.999990, 0.400000<=p2<=0.600000, 0.400000<=p3<=0.600000, 0.200000<=p4<=0.400000; -0.800000<=p1<=0.999990, 0.400000<=p2<=0.600000, 0.400000<=p3<=0.600000, 0.400000<=p4<=0.600000; -0.800000<=p1<=0.999990, 0.400000<=p2<=0.600000, 0.400000<=p3<=0.600000, 0.600000<=p4<=0.800000; -0.800000<=p1<=0.999990, 0.400000<=p2<=0.600000, 0.400000<=p3<=0.600000, 0.800000<=p4<=0.999990; -0.800000<=p1<=0.999990, 0.400000<=p2<=0.600000, 0.600000<=p3<=0.800000, 0.000010<=p4<=0.200000; -0.800000<=p1<=0.999990, 0.400000<=p2<=0.600000, 0.600000<=p3<=0.800000, 0.200000<=p4<=0.400000; -0.800000<=p1<=0.999990, 0.400000<=p2<=0.600000, 0.600000<=p3<=0.800000, 0.400000<=p4<=0.600000; -0.800000<=p1<=0.999990, 0.400000<=p2<=0.600000, 0.600000<=p3<=0.800000, 0.600000<=p4<=0.800000; -0.800000<=p1<=0.999990, 0.400000<=p2<=0.600000, 0.600000<=p3<=0.800000, 0.800000<=p4<=0.999990; -0.800000<=p1<=0.999990, 0.400000<=p2<=0.600000, 0.800000<=p3<=0.999990, 0.000010<=p4<=0.200000; -0.800000<=p1<=0.999990, 0.400000<=p2<=0.600000, 0.800000<=p3<=0.999990, 0.200000<=p4<=0.400000; -0.800000<=p1<=0.999990, 0.400000<=p2<=0.600000, 0.800000<=p3<=0.999990, 0.400000<=p4<=0.600000; -0.800000<=p1<=0.999990, 0.400000<=p2<=0.600000, 0.800000<=p3<=0.999990, 0.600000<=p4<=0.800000; -0.800000<=p1<=0.999990, 0.400000<=p2<=0.600000, 0.800000<=p3<=0.999990, 0.800000<=p4<=0.999990; -0.800000<=p1<=0.999990, 0.600000<=p2<=0.800000, 0.000010<=p3<=0.200000, 0.000010<=p4<=0.200000; -0.800000<=p1<=0.999990, 0.600000<=p2<=0.800000, 0.000010<=p3<=0.200000, 0.200000<=p4<=0.400000; -0.800000<=p1<=0.999990, 0.600000<=p2<=0.800000, 0.000010<=p3<=0.200000, 0.400000<=p4<=0.600000; -0.800000<=p1<=0.999990, 0.600000<=p2<=0.800000, 0.000010<=p3<=0.200000, 0.600000<=p4<=0.800000; -0.800000<=p1<=0.999990, 0.600000<=p2<=0.800000, 0.000010<=p3<=0.200000, 0.800000<=p4<=0.999990; -0.800000<=p1<=0.999990, 0.600000<=p2<=0.800000, 0.200000<=p3<=0.400000, 0.000010<=p4<=0.200000; -0.800000<=p1<=0.999990, 0.600000<=p2<=0.800000, 0.200000<=p3<=0.400000, 0.200000<=p4<=0.400000; -0.800000<=p1<=0.999990, 0.600000<=p2<=0.800000, 0.200000<=p3<=0.400000, 0.400000<=p4<=0.600000; -0.800000<=p1<=0.999990, 0.600000<=p2<=0.800000, 0.200000<=p3<=0.400000, 0.600000<=p4<=0.800000; -0.800000<=p1<=0.999990, 0.600000<=p2<=0.800000, 0.200000<=p3<=0.400000, 0.800000<=p4<=0.999990; -0.800000<=p1<=0.999990, 0.600000<=p2<=0.800000, 0.400000<=p3<=0.600000, 0.000010<=p4<=0.200000; -0.800000<=p1<=0.999990, 0.600000<=p2<=0.800000, 0.400000<=p3<=0.600000, 0.200000<=p4<=0.400000; -0.800000<=p1<=0.999990, 0.600000<=p2<=0.800000, 0.400000<=p3<=0.600000, 0.400000<=p4<=0.600000; -0.800000<=p1<=0.999990, 0.600000<=p2<=0.800000, 0.400000<=p3<=0.600000, 0.600000<=p4<=0.800000; -0.800000<=p1<=0.999990, 0.600000<=p2<=0.800000, 0.400000<=p3<=0.600000, 0.800000<=p4<=0.999990; -0.800000<=p1<=0.999990, 0.600000<=p2<=0.800000, 0.600000<=p3<=0.800000, 0.000010<=p4<=0.200000; -0.800000<=p1<=0.999990, 0.600000<=p2<=0.800000, 0.600000<=p3<=0.800000, 0.200000<=p4<=0.400000; -0.800000<=p1<=0.999990, 0.600000<=p2<=0.800000, 0.600000<=p3<=0.800000, 0.400000<=p4<=0.600000; -0.800000<=p1<=0.999990, 0.600000<=p2<=0.800000, 0.600000<=p3<=0.800000, 0.600000<=p4<=0.800000; -0.800000<=p1<=0.999990, 0.600000<=p2<=0.800000, 0.600000<=p3<=0.800000, 0.800000<=p4<=0.999990; -0.800000<=p1<=0.999990, 0.600000<=p2<=0.800000, 0.800000<=p3<=0.999990, 0.000010<=p4<=0.200000; -0.800000<=p1<=0.999990, 0.600000<=p2<=0.800000, 0.800000<=p3<=0.999990, 0.200000<=p4<=0.400000; -0.800000<=p1<=0.999990, 0.600000<=p2<=0.800000, 0.800000<=p3<=0.999990, 0.400000<=p4<=0.600000; -0.800000<=p1<=0.999990, 0.600000<=p2<=0.800000, 0.800000<=p3<=0.999990, 0.600000<=p4<=0.800000; -0.800000<=p1<=0.999990, 0.600000<=p2<=0.800000, 0.800000<=p3<=0.999990, 0.800000<=p4<=0.999990; -0.800000<=p1<=0.999990, 0.800000<=p2<=0.999990, 0.000010<=p3<=0.200000, 0.000010<=p4<=0.200000; -0.800000<=p1<=0.999990, 0.800000<=p2<=0.999990, 0.000010<=p3<=0.200000, 0.200000<=p4<=0.400000; -0.800000<=p1<=0.999990, 0.800000<=p2<=0.999990, 0.000010<=p3<=0.200000, 0.400000<=p4<=0.600000; -0.800000<=p1<=0.999990, 0.800000<=p2<=0.999990, 0.000010<=p3<=0.200000, 0.600000<=p4<=0.800000; -0.800000<=p1<=0.999990, 0.800000<=p2<=0.999990, 0.000010<=p3<=0.200000, 0.800000<=p4<=0.999990; -0.800000<=p1<=0.999990, 0.800000<=p2<=0.999990, 0.200000<=p3<=0.400000, 0.000010<=p4<=0.200000; -0.800000<=p1<=0.999990, 0.800000<=p2<=0.999990, 0.200000<=p3<=0.400000, 0.200000<=p4<=0.400000; -0.800000<=p1<=0.999990, 0.800000<=p2<=0.999990, 0.200000<=p3<=0.400000, 0.400000<=p4<=0.600000; -0.800000<=p1<=0.999990, 0.800000<=p2<=0.999990, 0.200000<=p3<=0.400000, 0.600000<=p4<=0.800000; -0.800000<=p1<=0.999990, 0.800000<=p2<=0.999990, 0.200000<=p3<=0.400000, 0.800000<=p4<=0.999990; -0.800000<=p1<=0.999990, 0.800000<=p2<=0.999990, 0.400000<=p3<=0.600000, 0.000010<=p4<=0.200000; -0.800000<=p1<=0.999990, 0.800000<=p2<=0.999990, 0.400000<=p3<=0.600000, 0.200000<=p4<=0.400000; -0.800000<=p1<=0.999990, 0.800000<=p2<=0.999990, 0.400000<=p3<=0.600000, 0.400000<=p4<=0.600000; -0.800000<=p1<=0.999990, 0.800000<=p2<=0.999990, 0.400000<=p3<=0.600000, 0.600000<=p4<=0.800000; -0.800000<=p1<=0.999990, 0.800000<=p2<=0.999990, 0.400000<=p3<=0.600000, 0.800000<=p4<=0.999990; -0.800000<=p1<=0.999990, 0.800000<=p2<=0.999990, 0.600000<=p3<=0.800000, 0.000010<=p4<=0.200000; -0.800000<=p1<=0.999990, 0.800000<=p2<=0.999990, 0.600000<=p3<=0.800000, 0.200000<=p4<=0.400000; -0.800000<=p1<=0.999990, 0.800000<=p2<=0.999990, 0.600000<=p3<=0.800000, 0.400000<=p4<=0.600000; -0.800000<=p1<=0.999990, 0.800000<=p2<=0.999990, 0.600000<=p3<=0.800000, 0.600000<=p4<=0.800000; -0.800000<=p1<=0.999990, 0.800000<=p2<=0.999990, 0.600000<=p3<=0.800000, 0.800000<=p4<=0.999990; -0.800000<=p1<=0.999990, 0.800000<=p2<=0.999990, 0.800000<=p3<=0.999990, 0.000010<=p4<=0.200000; -0.800000<=p1<=0.999990, 0.800000<=p2<=0.999990, 0.800000<=p3<=0.999990, 0.200000<=p4<=0.400000; -0.800000<=p1<=0.999990, 0.800000<=p2<=0.999990, 0.800000<=p3<=0.999990, 0.400000<=p4<=0.600000; -0.800000<=p1<=0.999990, 0.800000<=p2<=0.999990, 0.800000<=p3<=0.999990, 0.600000<=p4<=0.800000; -0.800000<=p1<=0.999990, 0.800000<=p2<=0.999990, 0.800000<=p3<=0.999990, 0.800000<=p4<=0.999990; diff --git a/examples/pmdp/coin4/coin4_regions2.txt b/examples/pmdp/coin4/coin4_regions2.txt deleted file mode 100644 index 2a838b2c3..000000000 --- a/examples/pmdp/coin4/coin4_regions2.txt +++ /dev/null @@ -1,625 +0,0 @@ -0.000010<=p1<=0.040000, 0.000010<=p2<=0.040000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.000010<=p1<=0.040000, 0.040000<=p2<=0.080000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.000010<=p1<=0.040000, 0.080000<=p2<=0.120000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.000010<=p1<=0.040000, 0.120000<=p2<=0.160000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.000010<=p1<=0.040000, 0.160000<=p2<=0.200000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.000010<=p1<=0.040000, 0.200000<=p2<=0.240000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.000010<=p1<=0.040000, 0.240000<=p2<=0.280000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.000010<=p1<=0.040000, 0.280000<=p2<=0.320000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.000010<=p1<=0.040000, 0.320000<=p2<=0.360000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.000010<=p1<=0.040000, 0.360000<=p2<=0.400000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.000010<=p1<=0.040000, 0.400000<=p2<=0.440000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.000010<=p1<=0.040000, 0.440000<=p2<=0.480000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.000010<=p1<=0.040000, 0.480000<=p2<=0.520000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.000010<=p1<=0.040000, 0.520000<=p2<=0.560000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.000010<=p1<=0.040000, 0.560000<=p2<=0.600000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.000010<=p1<=0.040000, 0.600000<=p2<=0.640000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.000010<=p1<=0.040000, 0.640000<=p2<=0.680000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.000010<=p1<=0.040000, 0.680000<=p2<=0.720000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.000010<=p1<=0.040000, 0.720000<=p2<=0.760000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.000010<=p1<=0.040000, 0.760000<=p2<=0.800000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.000010<=p1<=0.040000, 0.800000<=p2<=0.840000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.000010<=p1<=0.040000, 0.840000<=p2<=0.880000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.000010<=p1<=0.040000, 0.880000<=p2<=0.920000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.000010<=p1<=0.040000, 0.920000<=p2<=0.960000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.000010<=p1<=0.040000, 0.960000<=p2<=0.999990, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.040000<=p1<=0.080000, 0.000010<=p2<=0.040000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.040000<=p1<=0.080000, 0.040000<=p2<=0.080000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.040000<=p1<=0.080000, 0.080000<=p2<=0.120000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.040000<=p1<=0.080000, 0.120000<=p2<=0.160000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.040000<=p1<=0.080000, 0.160000<=p2<=0.200000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.040000<=p1<=0.080000, 0.200000<=p2<=0.240000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.040000<=p1<=0.080000, 0.240000<=p2<=0.280000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.040000<=p1<=0.080000, 0.280000<=p2<=0.320000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.040000<=p1<=0.080000, 0.320000<=p2<=0.360000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.040000<=p1<=0.080000, 0.360000<=p2<=0.400000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.040000<=p1<=0.080000, 0.400000<=p2<=0.440000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.040000<=p1<=0.080000, 0.440000<=p2<=0.480000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.040000<=p1<=0.080000, 0.480000<=p2<=0.520000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.040000<=p1<=0.080000, 0.520000<=p2<=0.560000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.040000<=p1<=0.080000, 0.560000<=p2<=0.600000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.040000<=p1<=0.080000, 0.600000<=p2<=0.640000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.040000<=p1<=0.080000, 0.640000<=p2<=0.680000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.040000<=p1<=0.080000, 0.680000<=p2<=0.720000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.040000<=p1<=0.080000, 0.720000<=p2<=0.760000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.040000<=p1<=0.080000, 0.760000<=p2<=0.800000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.040000<=p1<=0.080000, 0.800000<=p2<=0.840000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.040000<=p1<=0.080000, 0.840000<=p2<=0.880000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.040000<=p1<=0.080000, 0.880000<=p2<=0.920000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.040000<=p1<=0.080000, 0.920000<=p2<=0.960000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.040000<=p1<=0.080000, 0.960000<=p2<=0.999990, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.080000<=p1<=0.120000, 0.000010<=p2<=0.040000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.080000<=p1<=0.120000, 0.040000<=p2<=0.080000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.080000<=p1<=0.120000, 0.080000<=p2<=0.120000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.080000<=p1<=0.120000, 0.120000<=p2<=0.160000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.080000<=p1<=0.120000, 0.160000<=p2<=0.200000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.080000<=p1<=0.120000, 0.200000<=p2<=0.240000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.080000<=p1<=0.120000, 0.240000<=p2<=0.280000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.080000<=p1<=0.120000, 0.280000<=p2<=0.320000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.080000<=p1<=0.120000, 0.320000<=p2<=0.360000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.080000<=p1<=0.120000, 0.360000<=p2<=0.400000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.080000<=p1<=0.120000, 0.400000<=p2<=0.440000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.080000<=p1<=0.120000, 0.440000<=p2<=0.480000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.080000<=p1<=0.120000, 0.480000<=p2<=0.520000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.080000<=p1<=0.120000, 0.520000<=p2<=0.560000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.080000<=p1<=0.120000, 0.560000<=p2<=0.600000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.080000<=p1<=0.120000, 0.600000<=p2<=0.640000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.080000<=p1<=0.120000, 0.640000<=p2<=0.680000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.080000<=p1<=0.120000, 0.680000<=p2<=0.720000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.080000<=p1<=0.120000, 0.720000<=p2<=0.760000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.080000<=p1<=0.120000, 0.760000<=p2<=0.800000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.080000<=p1<=0.120000, 0.800000<=p2<=0.840000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.080000<=p1<=0.120000, 0.840000<=p2<=0.880000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.080000<=p1<=0.120000, 0.880000<=p2<=0.920000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.080000<=p1<=0.120000, 0.920000<=p2<=0.960000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.080000<=p1<=0.120000, 0.960000<=p2<=0.999990, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.120000<=p1<=0.160000, 0.000010<=p2<=0.040000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.120000<=p1<=0.160000, 0.040000<=p2<=0.080000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.120000<=p1<=0.160000, 0.080000<=p2<=0.120000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.120000<=p1<=0.160000, 0.120000<=p2<=0.160000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.120000<=p1<=0.160000, 0.160000<=p2<=0.200000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.120000<=p1<=0.160000, 0.200000<=p2<=0.240000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.120000<=p1<=0.160000, 0.240000<=p2<=0.280000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.120000<=p1<=0.160000, 0.280000<=p2<=0.320000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.120000<=p1<=0.160000, 0.320000<=p2<=0.360000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.120000<=p1<=0.160000, 0.360000<=p2<=0.400000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.120000<=p1<=0.160000, 0.400000<=p2<=0.440000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.120000<=p1<=0.160000, 0.440000<=p2<=0.480000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.120000<=p1<=0.160000, 0.480000<=p2<=0.520000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.120000<=p1<=0.160000, 0.520000<=p2<=0.560000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.120000<=p1<=0.160000, 0.560000<=p2<=0.600000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.120000<=p1<=0.160000, 0.600000<=p2<=0.640000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.120000<=p1<=0.160000, 0.640000<=p2<=0.680000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.120000<=p1<=0.160000, 0.680000<=p2<=0.720000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.120000<=p1<=0.160000, 0.720000<=p2<=0.760000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.120000<=p1<=0.160000, 0.760000<=p2<=0.800000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.120000<=p1<=0.160000, 0.800000<=p2<=0.840000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.120000<=p1<=0.160000, 0.840000<=p2<=0.880000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.120000<=p1<=0.160000, 0.880000<=p2<=0.920000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.120000<=p1<=0.160000, 0.920000<=p2<=0.960000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.120000<=p1<=0.160000, 0.960000<=p2<=0.999990, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.160000<=p1<=0.200000, 0.000010<=p2<=0.040000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.160000<=p1<=0.200000, 0.040000<=p2<=0.080000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.160000<=p1<=0.200000, 0.080000<=p2<=0.120000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.160000<=p1<=0.200000, 0.120000<=p2<=0.160000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.160000<=p1<=0.200000, 0.160000<=p2<=0.200000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.160000<=p1<=0.200000, 0.200000<=p2<=0.240000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.160000<=p1<=0.200000, 0.240000<=p2<=0.280000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.160000<=p1<=0.200000, 0.280000<=p2<=0.320000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.160000<=p1<=0.200000, 0.320000<=p2<=0.360000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.160000<=p1<=0.200000, 0.360000<=p2<=0.400000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.160000<=p1<=0.200000, 0.400000<=p2<=0.440000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.160000<=p1<=0.200000, 0.440000<=p2<=0.480000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.160000<=p1<=0.200000, 0.480000<=p2<=0.520000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.160000<=p1<=0.200000, 0.520000<=p2<=0.560000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.160000<=p1<=0.200000, 0.560000<=p2<=0.600000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.160000<=p1<=0.200000, 0.600000<=p2<=0.640000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.160000<=p1<=0.200000, 0.640000<=p2<=0.680000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.160000<=p1<=0.200000, 0.680000<=p2<=0.720000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.160000<=p1<=0.200000, 0.720000<=p2<=0.760000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.160000<=p1<=0.200000, 0.760000<=p2<=0.800000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.160000<=p1<=0.200000, 0.800000<=p2<=0.840000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.160000<=p1<=0.200000, 0.840000<=p2<=0.880000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.160000<=p1<=0.200000, 0.880000<=p2<=0.920000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.160000<=p1<=0.200000, 0.920000<=p2<=0.960000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.160000<=p1<=0.200000, 0.960000<=p2<=0.999990, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.200000<=p1<=0.240000, 0.000010<=p2<=0.040000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.200000<=p1<=0.240000, 0.040000<=p2<=0.080000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.200000<=p1<=0.240000, 0.080000<=p2<=0.120000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.200000<=p1<=0.240000, 0.120000<=p2<=0.160000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.200000<=p1<=0.240000, 0.160000<=p2<=0.200000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.200000<=p1<=0.240000, 0.200000<=p2<=0.240000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.200000<=p1<=0.240000, 0.240000<=p2<=0.280000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.200000<=p1<=0.240000, 0.280000<=p2<=0.320000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.200000<=p1<=0.240000, 0.320000<=p2<=0.360000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.200000<=p1<=0.240000, 0.360000<=p2<=0.400000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.200000<=p1<=0.240000, 0.400000<=p2<=0.440000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.200000<=p1<=0.240000, 0.440000<=p2<=0.480000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.200000<=p1<=0.240000, 0.480000<=p2<=0.520000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.200000<=p1<=0.240000, 0.520000<=p2<=0.560000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.200000<=p1<=0.240000, 0.560000<=p2<=0.600000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.200000<=p1<=0.240000, 0.600000<=p2<=0.640000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.200000<=p1<=0.240000, 0.640000<=p2<=0.680000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.200000<=p1<=0.240000, 0.680000<=p2<=0.720000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.200000<=p1<=0.240000, 0.720000<=p2<=0.760000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.200000<=p1<=0.240000, 0.760000<=p2<=0.800000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.200000<=p1<=0.240000, 0.800000<=p2<=0.840000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.200000<=p1<=0.240000, 0.840000<=p2<=0.880000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.200000<=p1<=0.240000, 0.880000<=p2<=0.920000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.200000<=p1<=0.240000, 0.920000<=p2<=0.960000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.200000<=p1<=0.240000, 0.960000<=p2<=0.999990, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.240000<=p1<=0.280000, 0.000010<=p2<=0.040000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.240000<=p1<=0.280000, 0.040000<=p2<=0.080000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.240000<=p1<=0.280000, 0.080000<=p2<=0.120000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.240000<=p1<=0.280000, 0.120000<=p2<=0.160000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.240000<=p1<=0.280000, 0.160000<=p2<=0.200000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.240000<=p1<=0.280000, 0.200000<=p2<=0.240000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.240000<=p1<=0.280000, 0.240000<=p2<=0.280000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.240000<=p1<=0.280000, 0.280000<=p2<=0.320000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.240000<=p1<=0.280000, 0.320000<=p2<=0.360000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.240000<=p1<=0.280000, 0.360000<=p2<=0.400000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.240000<=p1<=0.280000, 0.400000<=p2<=0.440000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.240000<=p1<=0.280000, 0.440000<=p2<=0.480000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.240000<=p1<=0.280000, 0.480000<=p2<=0.520000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.240000<=p1<=0.280000, 0.520000<=p2<=0.560000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.240000<=p1<=0.280000, 0.560000<=p2<=0.600000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.240000<=p1<=0.280000, 0.600000<=p2<=0.640000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.240000<=p1<=0.280000, 0.640000<=p2<=0.680000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.240000<=p1<=0.280000, 0.680000<=p2<=0.720000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.240000<=p1<=0.280000, 0.720000<=p2<=0.760000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.240000<=p1<=0.280000, 0.760000<=p2<=0.800000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.240000<=p1<=0.280000, 0.800000<=p2<=0.840000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.240000<=p1<=0.280000, 0.840000<=p2<=0.880000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.240000<=p1<=0.280000, 0.880000<=p2<=0.920000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.240000<=p1<=0.280000, 0.920000<=p2<=0.960000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.240000<=p1<=0.280000, 0.960000<=p2<=0.999990, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.280000<=p1<=0.320000, 0.000010<=p2<=0.040000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.280000<=p1<=0.320000, 0.040000<=p2<=0.080000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.280000<=p1<=0.320000, 0.080000<=p2<=0.120000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.280000<=p1<=0.320000, 0.120000<=p2<=0.160000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.280000<=p1<=0.320000, 0.160000<=p2<=0.200000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.280000<=p1<=0.320000, 0.200000<=p2<=0.240000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.280000<=p1<=0.320000, 0.240000<=p2<=0.280000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.280000<=p1<=0.320000, 0.280000<=p2<=0.320000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.280000<=p1<=0.320000, 0.320000<=p2<=0.360000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.280000<=p1<=0.320000, 0.360000<=p2<=0.400000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.280000<=p1<=0.320000, 0.400000<=p2<=0.440000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.280000<=p1<=0.320000, 0.440000<=p2<=0.480000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.280000<=p1<=0.320000, 0.480000<=p2<=0.520000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.280000<=p1<=0.320000, 0.520000<=p2<=0.560000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.280000<=p1<=0.320000, 0.560000<=p2<=0.600000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.280000<=p1<=0.320000, 0.600000<=p2<=0.640000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.280000<=p1<=0.320000, 0.640000<=p2<=0.680000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.280000<=p1<=0.320000, 0.680000<=p2<=0.720000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.280000<=p1<=0.320000, 0.720000<=p2<=0.760000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.280000<=p1<=0.320000, 0.760000<=p2<=0.800000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.280000<=p1<=0.320000, 0.800000<=p2<=0.840000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.280000<=p1<=0.320000, 0.840000<=p2<=0.880000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.280000<=p1<=0.320000, 0.880000<=p2<=0.920000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.280000<=p1<=0.320000, 0.920000<=p2<=0.960000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.280000<=p1<=0.320000, 0.960000<=p2<=0.999990, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.320000<=p1<=0.360000, 0.000010<=p2<=0.040000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.320000<=p1<=0.360000, 0.040000<=p2<=0.080000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.320000<=p1<=0.360000, 0.080000<=p2<=0.120000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.320000<=p1<=0.360000, 0.120000<=p2<=0.160000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.320000<=p1<=0.360000, 0.160000<=p2<=0.200000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.320000<=p1<=0.360000, 0.200000<=p2<=0.240000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.320000<=p1<=0.360000, 0.240000<=p2<=0.280000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.320000<=p1<=0.360000, 0.280000<=p2<=0.320000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.320000<=p1<=0.360000, 0.320000<=p2<=0.360000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.320000<=p1<=0.360000, 0.360000<=p2<=0.400000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.320000<=p1<=0.360000, 0.400000<=p2<=0.440000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.320000<=p1<=0.360000, 0.440000<=p2<=0.480000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.320000<=p1<=0.360000, 0.480000<=p2<=0.520000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.320000<=p1<=0.360000, 0.520000<=p2<=0.560000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.320000<=p1<=0.360000, 0.560000<=p2<=0.600000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.320000<=p1<=0.360000, 0.600000<=p2<=0.640000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.320000<=p1<=0.360000, 0.640000<=p2<=0.680000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.320000<=p1<=0.360000, 0.680000<=p2<=0.720000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.320000<=p1<=0.360000, 0.720000<=p2<=0.760000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.320000<=p1<=0.360000, 0.760000<=p2<=0.800000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.320000<=p1<=0.360000, 0.800000<=p2<=0.840000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.320000<=p1<=0.360000, 0.840000<=p2<=0.880000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.320000<=p1<=0.360000, 0.880000<=p2<=0.920000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.320000<=p1<=0.360000, 0.920000<=p2<=0.960000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.320000<=p1<=0.360000, 0.960000<=p2<=0.999990, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.360000<=p1<=0.400000, 0.000010<=p2<=0.040000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.360000<=p1<=0.400000, 0.040000<=p2<=0.080000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.360000<=p1<=0.400000, 0.080000<=p2<=0.120000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.360000<=p1<=0.400000, 0.120000<=p2<=0.160000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.360000<=p1<=0.400000, 0.160000<=p2<=0.200000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.360000<=p1<=0.400000, 0.200000<=p2<=0.240000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.360000<=p1<=0.400000, 0.240000<=p2<=0.280000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.360000<=p1<=0.400000, 0.280000<=p2<=0.320000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.360000<=p1<=0.400000, 0.320000<=p2<=0.360000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.360000<=p1<=0.400000, 0.360000<=p2<=0.400000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.360000<=p1<=0.400000, 0.400000<=p2<=0.440000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.360000<=p1<=0.400000, 0.440000<=p2<=0.480000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.360000<=p1<=0.400000, 0.480000<=p2<=0.520000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.360000<=p1<=0.400000, 0.520000<=p2<=0.560000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.360000<=p1<=0.400000, 0.560000<=p2<=0.600000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.360000<=p1<=0.400000, 0.600000<=p2<=0.640000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.360000<=p1<=0.400000, 0.640000<=p2<=0.680000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.360000<=p1<=0.400000, 0.680000<=p2<=0.720000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.360000<=p1<=0.400000, 0.720000<=p2<=0.760000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.360000<=p1<=0.400000, 0.760000<=p2<=0.800000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.360000<=p1<=0.400000, 0.800000<=p2<=0.840000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.360000<=p1<=0.400000, 0.840000<=p2<=0.880000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.360000<=p1<=0.400000, 0.880000<=p2<=0.920000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.360000<=p1<=0.400000, 0.920000<=p2<=0.960000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.360000<=p1<=0.400000, 0.960000<=p2<=0.999990, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.400000<=p1<=0.440000, 0.000010<=p2<=0.040000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.400000<=p1<=0.440000, 0.040000<=p2<=0.080000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.400000<=p1<=0.440000, 0.080000<=p2<=0.120000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.400000<=p1<=0.440000, 0.120000<=p2<=0.160000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.400000<=p1<=0.440000, 0.160000<=p2<=0.200000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.400000<=p1<=0.440000, 0.200000<=p2<=0.240000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.400000<=p1<=0.440000, 0.240000<=p2<=0.280000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.400000<=p1<=0.440000, 0.280000<=p2<=0.320000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.400000<=p1<=0.440000, 0.320000<=p2<=0.360000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.400000<=p1<=0.440000, 0.360000<=p2<=0.400000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.400000<=p1<=0.440000, 0.400000<=p2<=0.440000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.400000<=p1<=0.440000, 0.440000<=p2<=0.480000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.400000<=p1<=0.440000, 0.480000<=p2<=0.520000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.400000<=p1<=0.440000, 0.520000<=p2<=0.560000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.400000<=p1<=0.440000, 0.560000<=p2<=0.600000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.400000<=p1<=0.440000, 0.600000<=p2<=0.640000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.400000<=p1<=0.440000, 0.640000<=p2<=0.680000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.400000<=p1<=0.440000, 0.680000<=p2<=0.720000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.400000<=p1<=0.440000, 0.720000<=p2<=0.760000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.400000<=p1<=0.440000, 0.760000<=p2<=0.800000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.400000<=p1<=0.440000, 0.800000<=p2<=0.840000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.400000<=p1<=0.440000, 0.840000<=p2<=0.880000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.400000<=p1<=0.440000, 0.880000<=p2<=0.920000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.400000<=p1<=0.440000, 0.920000<=p2<=0.960000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.400000<=p1<=0.440000, 0.960000<=p2<=0.999990, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.440000<=p1<=0.480000, 0.000010<=p2<=0.040000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.440000<=p1<=0.480000, 0.040000<=p2<=0.080000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.440000<=p1<=0.480000, 0.080000<=p2<=0.120000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.440000<=p1<=0.480000, 0.120000<=p2<=0.160000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.440000<=p1<=0.480000, 0.160000<=p2<=0.200000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.440000<=p1<=0.480000, 0.200000<=p2<=0.240000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.440000<=p1<=0.480000, 0.240000<=p2<=0.280000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.440000<=p1<=0.480000, 0.280000<=p2<=0.320000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.440000<=p1<=0.480000, 0.320000<=p2<=0.360000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.440000<=p1<=0.480000, 0.360000<=p2<=0.400000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.440000<=p1<=0.480000, 0.400000<=p2<=0.440000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.440000<=p1<=0.480000, 0.440000<=p2<=0.480000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.440000<=p1<=0.480000, 0.480000<=p2<=0.520000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.440000<=p1<=0.480000, 0.520000<=p2<=0.560000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.440000<=p1<=0.480000, 0.560000<=p2<=0.600000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.440000<=p1<=0.480000, 0.600000<=p2<=0.640000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.440000<=p1<=0.480000, 0.640000<=p2<=0.680000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.440000<=p1<=0.480000, 0.680000<=p2<=0.720000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.440000<=p1<=0.480000, 0.720000<=p2<=0.760000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.440000<=p1<=0.480000, 0.760000<=p2<=0.800000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.440000<=p1<=0.480000, 0.800000<=p2<=0.840000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.440000<=p1<=0.480000, 0.840000<=p2<=0.880000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.440000<=p1<=0.480000, 0.880000<=p2<=0.920000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.440000<=p1<=0.480000, 0.920000<=p2<=0.960000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.440000<=p1<=0.480000, 0.960000<=p2<=0.999990, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.480000<=p1<=0.520000, 0.000010<=p2<=0.040000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.480000<=p1<=0.520000, 0.040000<=p2<=0.080000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.480000<=p1<=0.520000, 0.080000<=p2<=0.120000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.480000<=p1<=0.520000, 0.120000<=p2<=0.160000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.480000<=p1<=0.520000, 0.160000<=p2<=0.200000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.480000<=p1<=0.520000, 0.200000<=p2<=0.240000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.480000<=p1<=0.520000, 0.240000<=p2<=0.280000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.480000<=p1<=0.520000, 0.280000<=p2<=0.320000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.480000<=p1<=0.520000, 0.320000<=p2<=0.360000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.480000<=p1<=0.520000, 0.360000<=p2<=0.400000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.480000<=p1<=0.520000, 0.400000<=p2<=0.440000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.480000<=p1<=0.520000, 0.440000<=p2<=0.480000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.480000<=p1<=0.520000, 0.480000<=p2<=0.520000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.480000<=p1<=0.520000, 0.520000<=p2<=0.560000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.480000<=p1<=0.520000, 0.560000<=p2<=0.600000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.480000<=p1<=0.520000, 0.600000<=p2<=0.640000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.480000<=p1<=0.520000, 0.640000<=p2<=0.680000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.480000<=p1<=0.520000, 0.680000<=p2<=0.720000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.480000<=p1<=0.520000, 0.720000<=p2<=0.760000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.480000<=p1<=0.520000, 0.760000<=p2<=0.800000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.480000<=p1<=0.520000, 0.800000<=p2<=0.840000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.480000<=p1<=0.520000, 0.840000<=p2<=0.880000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.480000<=p1<=0.520000, 0.880000<=p2<=0.920000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.480000<=p1<=0.520000, 0.920000<=p2<=0.960000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.480000<=p1<=0.520000, 0.960000<=p2<=0.999990, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.520000<=p1<=0.560000, 0.000010<=p2<=0.040000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.520000<=p1<=0.560000, 0.040000<=p2<=0.080000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.520000<=p1<=0.560000, 0.080000<=p2<=0.120000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.520000<=p1<=0.560000, 0.120000<=p2<=0.160000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.520000<=p1<=0.560000, 0.160000<=p2<=0.200000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.520000<=p1<=0.560000, 0.200000<=p2<=0.240000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.520000<=p1<=0.560000, 0.240000<=p2<=0.280000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.520000<=p1<=0.560000, 0.280000<=p2<=0.320000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.520000<=p1<=0.560000, 0.320000<=p2<=0.360000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.520000<=p1<=0.560000, 0.360000<=p2<=0.400000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.520000<=p1<=0.560000, 0.400000<=p2<=0.440000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.520000<=p1<=0.560000, 0.440000<=p2<=0.480000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.520000<=p1<=0.560000, 0.480000<=p2<=0.520000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.520000<=p1<=0.560000, 0.520000<=p2<=0.560000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.520000<=p1<=0.560000, 0.560000<=p2<=0.600000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.520000<=p1<=0.560000, 0.600000<=p2<=0.640000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.520000<=p1<=0.560000, 0.640000<=p2<=0.680000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.520000<=p1<=0.560000, 0.680000<=p2<=0.720000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.520000<=p1<=0.560000, 0.720000<=p2<=0.760000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.520000<=p1<=0.560000, 0.760000<=p2<=0.800000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.520000<=p1<=0.560000, 0.800000<=p2<=0.840000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.520000<=p1<=0.560000, 0.840000<=p2<=0.880000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.520000<=p1<=0.560000, 0.880000<=p2<=0.920000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.520000<=p1<=0.560000, 0.920000<=p2<=0.960000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.520000<=p1<=0.560000, 0.960000<=p2<=0.999990, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.560000<=p1<=0.600000, 0.000010<=p2<=0.040000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.560000<=p1<=0.600000, 0.040000<=p2<=0.080000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.560000<=p1<=0.600000, 0.080000<=p2<=0.120000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.560000<=p1<=0.600000, 0.120000<=p2<=0.160000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.560000<=p1<=0.600000, 0.160000<=p2<=0.200000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.560000<=p1<=0.600000, 0.200000<=p2<=0.240000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.560000<=p1<=0.600000, 0.240000<=p2<=0.280000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.560000<=p1<=0.600000, 0.280000<=p2<=0.320000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.560000<=p1<=0.600000, 0.320000<=p2<=0.360000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.560000<=p1<=0.600000, 0.360000<=p2<=0.400000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.560000<=p1<=0.600000, 0.400000<=p2<=0.440000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.560000<=p1<=0.600000, 0.440000<=p2<=0.480000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.560000<=p1<=0.600000, 0.480000<=p2<=0.520000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.560000<=p1<=0.600000, 0.520000<=p2<=0.560000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.560000<=p1<=0.600000, 0.560000<=p2<=0.600000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.560000<=p1<=0.600000, 0.600000<=p2<=0.640000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.560000<=p1<=0.600000, 0.640000<=p2<=0.680000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.560000<=p1<=0.600000, 0.680000<=p2<=0.720000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.560000<=p1<=0.600000, 0.720000<=p2<=0.760000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.560000<=p1<=0.600000, 0.760000<=p2<=0.800000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.560000<=p1<=0.600000, 0.800000<=p2<=0.840000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.560000<=p1<=0.600000, 0.840000<=p2<=0.880000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.560000<=p1<=0.600000, 0.880000<=p2<=0.920000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.560000<=p1<=0.600000, 0.920000<=p2<=0.960000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.560000<=p1<=0.600000, 0.960000<=p2<=0.999990, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.600000<=p1<=0.640000, 0.000010<=p2<=0.040000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.600000<=p1<=0.640000, 0.040000<=p2<=0.080000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.600000<=p1<=0.640000, 0.080000<=p2<=0.120000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.600000<=p1<=0.640000, 0.120000<=p2<=0.160000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.600000<=p1<=0.640000, 0.160000<=p2<=0.200000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.600000<=p1<=0.640000, 0.200000<=p2<=0.240000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.600000<=p1<=0.640000, 0.240000<=p2<=0.280000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.600000<=p1<=0.640000, 0.280000<=p2<=0.320000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.600000<=p1<=0.640000, 0.320000<=p2<=0.360000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.600000<=p1<=0.640000, 0.360000<=p2<=0.400000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.600000<=p1<=0.640000, 0.400000<=p2<=0.440000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.600000<=p1<=0.640000, 0.440000<=p2<=0.480000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.600000<=p1<=0.640000, 0.480000<=p2<=0.520000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.600000<=p1<=0.640000, 0.520000<=p2<=0.560000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.600000<=p1<=0.640000, 0.560000<=p2<=0.600000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.600000<=p1<=0.640000, 0.600000<=p2<=0.640000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.600000<=p1<=0.640000, 0.640000<=p2<=0.680000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.600000<=p1<=0.640000, 0.680000<=p2<=0.720000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.600000<=p1<=0.640000, 0.720000<=p2<=0.760000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.600000<=p1<=0.640000, 0.760000<=p2<=0.800000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.600000<=p1<=0.640000, 0.800000<=p2<=0.840000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.600000<=p1<=0.640000, 0.840000<=p2<=0.880000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.600000<=p1<=0.640000, 0.880000<=p2<=0.920000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.600000<=p1<=0.640000, 0.920000<=p2<=0.960000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.600000<=p1<=0.640000, 0.960000<=p2<=0.999990, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.640000<=p1<=0.680000, 0.000010<=p2<=0.040000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.640000<=p1<=0.680000, 0.040000<=p2<=0.080000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.640000<=p1<=0.680000, 0.080000<=p2<=0.120000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.640000<=p1<=0.680000, 0.120000<=p2<=0.160000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.640000<=p1<=0.680000, 0.160000<=p2<=0.200000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.640000<=p1<=0.680000, 0.200000<=p2<=0.240000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.640000<=p1<=0.680000, 0.240000<=p2<=0.280000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.640000<=p1<=0.680000, 0.280000<=p2<=0.320000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.640000<=p1<=0.680000, 0.320000<=p2<=0.360000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.640000<=p1<=0.680000, 0.360000<=p2<=0.400000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.640000<=p1<=0.680000, 0.400000<=p2<=0.440000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.640000<=p1<=0.680000, 0.440000<=p2<=0.480000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.640000<=p1<=0.680000, 0.480000<=p2<=0.520000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.640000<=p1<=0.680000, 0.520000<=p2<=0.560000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.640000<=p1<=0.680000, 0.560000<=p2<=0.600000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.640000<=p1<=0.680000, 0.600000<=p2<=0.640000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.640000<=p1<=0.680000, 0.640000<=p2<=0.680000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.640000<=p1<=0.680000, 0.680000<=p2<=0.720000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.640000<=p1<=0.680000, 0.720000<=p2<=0.760000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.640000<=p1<=0.680000, 0.760000<=p2<=0.800000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.640000<=p1<=0.680000, 0.800000<=p2<=0.840000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.640000<=p1<=0.680000, 0.840000<=p2<=0.880000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.640000<=p1<=0.680000, 0.880000<=p2<=0.920000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.640000<=p1<=0.680000, 0.920000<=p2<=0.960000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.640000<=p1<=0.680000, 0.960000<=p2<=0.999990, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.680000<=p1<=0.720000, 0.000010<=p2<=0.040000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.680000<=p1<=0.720000, 0.040000<=p2<=0.080000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.680000<=p1<=0.720000, 0.080000<=p2<=0.120000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.680000<=p1<=0.720000, 0.120000<=p2<=0.160000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.680000<=p1<=0.720000, 0.160000<=p2<=0.200000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.680000<=p1<=0.720000, 0.200000<=p2<=0.240000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.680000<=p1<=0.720000, 0.240000<=p2<=0.280000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.680000<=p1<=0.720000, 0.280000<=p2<=0.320000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.680000<=p1<=0.720000, 0.320000<=p2<=0.360000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.680000<=p1<=0.720000, 0.360000<=p2<=0.400000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.680000<=p1<=0.720000, 0.400000<=p2<=0.440000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.680000<=p1<=0.720000, 0.440000<=p2<=0.480000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.680000<=p1<=0.720000, 0.480000<=p2<=0.520000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.680000<=p1<=0.720000, 0.520000<=p2<=0.560000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.680000<=p1<=0.720000, 0.560000<=p2<=0.600000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.680000<=p1<=0.720000, 0.600000<=p2<=0.640000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.680000<=p1<=0.720000, 0.640000<=p2<=0.680000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.680000<=p1<=0.720000, 0.680000<=p2<=0.720000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.680000<=p1<=0.720000, 0.720000<=p2<=0.760000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.680000<=p1<=0.720000, 0.760000<=p2<=0.800000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.680000<=p1<=0.720000, 0.800000<=p2<=0.840000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.680000<=p1<=0.720000, 0.840000<=p2<=0.880000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.680000<=p1<=0.720000, 0.880000<=p2<=0.920000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.680000<=p1<=0.720000, 0.920000<=p2<=0.960000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.680000<=p1<=0.720000, 0.960000<=p2<=0.999990, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.720000<=p1<=0.760000, 0.000010<=p2<=0.040000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.720000<=p1<=0.760000, 0.040000<=p2<=0.080000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.720000<=p1<=0.760000, 0.080000<=p2<=0.120000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.720000<=p1<=0.760000, 0.120000<=p2<=0.160000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.720000<=p1<=0.760000, 0.160000<=p2<=0.200000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.720000<=p1<=0.760000, 0.200000<=p2<=0.240000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.720000<=p1<=0.760000, 0.240000<=p2<=0.280000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.720000<=p1<=0.760000, 0.280000<=p2<=0.320000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.720000<=p1<=0.760000, 0.320000<=p2<=0.360000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.720000<=p1<=0.760000, 0.360000<=p2<=0.400000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.720000<=p1<=0.760000, 0.400000<=p2<=0.440000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.720000<=p1<=0.760000, 0.440000<=p2<=0.480000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.720000<=p1<=0.760000, 0.480000<=p2<=0.520000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.720000<=p1<=0.760000, 0.520000<=p2<=0.560000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.720000<=p1<=0.760000, 0.560000<=p2<=0.600000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.720000<=p1<=0.760000, 0.600000<=p2<=0.640000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.720000<=p1<=0.760000, 0.640000<=p2<=0.680000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.720000<=p1<=0.760000, 0.680000<=p2<=0.720000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.720000<=p1<=0.760000, 0.720000<=p2<=0.760000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.720000<=p1<=0.760000, 0.760000<=p2<=0.800000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.720000<=p1<=0.760000, 0.800000<=p2<=0.840000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.720000<=p1<=0.760000, 0.840000<=p2<=0.880000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.720000<=p1<=0.760000, 0.880000<=p2<=0.920000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.720000<=p1<=0.760000, 0.920000<=p2<=0.960000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.720000<=p1<=0.760000, 0.960000<=p2<=0.999990, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.760000<=p1<=0.800000, 0.000010<=p2<=0.040000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.760000<=p1<=0.800000, 0.040000<=p2<=0.080000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.760000<=p1<=0.800000, 0.080000<=p2<=0.120000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.760000<=p1<=0.800000, 0.120000<=p2<=0.160000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.760000<=p1<=0.800000, 0.160000<=p2<=0.200000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.760000<=p1<=0.800000, 0.200000<=p2<=0.240000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.760000<=p1<=0.800000, 0.240000<=p2<=0.280000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.760000<=p1<=0.800000, 0.280000<=p2<=0.320000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.760000<=p1<=0.800000, 0.320000<=p2<=0.360000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.760000<=p1<=0.800000, 0.360000<=p2<=0.400000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.760000<=p1<=0.800000, 0.400000<=p2<=0.440000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.760000<=p1<=0.800000, 0.440000<=p2<=0.480000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.760000<=p1<=0.800000, 0.480000<=p2<=0.520000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.760000<=p1<=0.800000, 0.520000<=p2<=0.560000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.760000<=p1<=0.800000, 0.560000<=p2<=0.600000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.760000<=p1<=0.800000, 0.600000<=p2<=0.640000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.760000<=p1<=0.800000, 0.640000<=p2<=0.680000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.760000<=p1<=0.800000, 0.680000<=p2<=0.720000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.760000<=p1<=0.800000, 0.720000<=p2<=0.760000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.760000<=p1<=0.800000, 0.760000<=p2<=0.800000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.760000<=p1<=0.800000, 0.800000<=p2<=0.840000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.760000<=p1<=0.800000, 0.840000<=p2<=0.880000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.760000<=p1<=0.800000, 0.880000<=p2<=0.920000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.760000<=p1<=0.800000, 0.920000<=p2<=0.960000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.760000<=p1<=0.800000, 0.960000<=p2<=0.999990, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.800000<=p1<=0.840000, 0.000010<=p2<=0.040000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.800000<=p1<=0.840000, 0.040000<=p2<=0.080000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.800000<=p1<=0.840000, 0.080000<=p2<=0.120000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.800000<=p1<=0.840000, 0.120000<=p2<=0.160000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.800000<=p1<=0.840000, 0.160000<=p2<=0.200000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.800000<=p1<=0.840000, 0.200000<=p2<=0.240000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.800000<=p1<=0.840000, 0.240000<=p2<=0.280000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.800000<=p1<=0.840000, 0.280000<=p2<=0.320000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.800000<=p1<=0.840000, 0.320000<=p2<=0.360000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.800000<=p1<=0.840000, 0.360000<=p2<=0.400000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.800000<=p1<=0.840000, 0.400000<=p2<=0.440000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.800000<=p1<=0.840000, 0.440000<=p2<=0.480000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.800000<=p1<=0.840000, 0.480000<=p2<=0.520000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.800000<=p1<=0.840000, 0.520000<=p2<=0.560000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.800000<=p1<=0.840000, 0.560000<=p2<=0.600000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.800000<=p1<=0.840000, 0.600000<=p2<=0.640000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.800000<=p1<=0.840000, 0.640000<=p2<=0.680000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.800000<=p1<=0.840000, 0.680000<=p2<=0.720000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.800000<=p1<=0.840000, 0.720000<=p2<=0.760000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.800000<=p1<=0.840000, 0.760000<=p2<=0.800000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.800000<=p1<=0.840000, 0.800000<=p2<=0.840000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.800000<=p1<=0.840000, 0.840000<=p2<=0.880000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.800000<=p1<=0.840000, 0.880000<=p2<=0.920000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.800000<=p1<=0.840000, 0.920000<=p2<=0.960000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.800000<=p1<=0.840000, 0.960000<=p2<=0.999990, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.840000<=p1<=0.880000, 0.000010<=p2<=0.040000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.840000<=p1<=0.880000, 0.040000<=p2<=0.080000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.840000<=p1<=0.880000, 0.080000<=p2<=0.120000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.840000<=p1<=0.880000, 0.120000<=p2<=0.160000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.840000<=p1<=0.880000, 0.160000<=p2<=0.200000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.840000<=p1<=0.880000, 0.200000<=p2<=0.240000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.840000<=p1<=0.880000, 0.240000<=p2<=0.280000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.840000<=p1<=0.880000, 0.280000<=p2<=0.320000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.840000<=p1<=0.880000, 0.320000<=p2<=0.360000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.840000<=p1<=0.880000, 0.360000<=p2<=0.400000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.840000<=p1<=0.880000, 0.400000<=p2<=0.440000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.840000<=p1<=0.880000, 0.440000<=p2<=0.480000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.840000<=p1<=0.880000, 0.480000<=p2<=0.520000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.840000<=p1<=0.880000, 0.520000<=p2<=0.560000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.840000<=p1<=0.880000, 0.560000<=p2<=0.600000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.840000<=p1<=0.880000, 0.600000<=p2<=0.640000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.840000<=p1<=0.880000, 0.640000<=p2<=0.680000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.840000<=p1<=0.880000, 0.680000<=p2<=0.720000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.840000<=p1<=0.880000, 0.720000<=p2<=0.760000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.840000<=p1<=0.880000, 0.760000<=p2<=0.800000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.840000<=p1<=0.880000, 0.800000<=p2<=0.840000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.840000<=p1<=0.880000, 0.840000<=p2<=0.880000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.840000<=p1<=0.880000, 0.880000<=p2<=0.920000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.840000<=p1<=0.880000, 0.920000<=p2<=0.960000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.840000<=p1<=0.880000, 0.960000<=p2<=0.999990, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.880000<=p1<=0.920000, 0.000010<=p2<=0.040000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.880000<=p1<=0.920000, 0.040000<=p2<=0.080000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.880000<=p1<=0.920000, 0.080000<=p2<=0.120000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.880000<=p1<=0.920000, 0.120000<=p2<=0.160000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.880000<=p1<=0.920000, 0.160000<=p2<=0.200000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.880000<=p1<=0.920000, 0.200000<=p2<=0.240000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.880000<=p1<=0.920000, 0.240000<=p2<=0.280000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.880000<=p1<=0.920000, 0.280000<=p2<=0.320000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.880000<=p1<=0.920000, 0.320000<=p2<=0.360000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.880000<=p1<=0.920000, 0.360000<=p2<=0.400000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.880000<=p1<=0.920000, 0.400000<=p2<=0.440000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.880000<=p1<=0.920000, 0.440000<=p2<=0.480000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.880000<=p1<=0.920000, 0.480000<=p2<=0.520000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.880000<=p1<=0.920000, 0.520000<=p2<=0.560000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.880000<=p1<=0.920000, 0.560000<=p2<=0.600000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.880000<=p1<=0.920000, 0.600000<=p2<=0.640000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.880000<=p1<=0.920000, 0.640000<=p2<=0.680000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.880000<=p1<=0.920000, 0.680000<=p2<=0.720000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.880000<=p1<=0.920000, 0.720000<=p2<=0.760000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.880000<=p1<=0.920000, 0.760000<=p2<=0.800000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.880000<=p1<=0.920000, 0.800000<=p2<=0.840000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.880000<=p1<=0.920000, 0.840000<=p2<=0.880000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.880000<=p1<=0.920000, 0.880000<=p2<=0.920000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.880000<=p1<=0.920000, 0.920000<=p2<=0.960000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.880000<=p1<=0.920000, 0.960000<=p2<=0.999990, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.920000<=p1<=0.960000, 0.000010<=p2<=0.040000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.920000<=p1<=0.960000, 0.040000<=p2<=0.080000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.920000<=p1<=0.960000, 0.080000<=p2<=0.120000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.920000<=p1<=0.960000, 0.120000<=p2<=0.160000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.920000<=p1<=0.960000, 0.160000<=p2<=0.200000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.920000<=p1<=0.960000, 0.200000<=p2<=0.240000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.920000<=p1<=0.960000, 0.240000<=p2<=0.280000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.920000<=p1<=0.960000, 0.280000<=p2<=0.320000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.920000<=p1<=0.960000, 0.320000<=p2<=0.360000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.920000<=p1<=0.960000, 0.360000<=p2<=0.400000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.920000<=p1<=0.960000, 0.400000<=p2<=0.440000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.920000<=p1<=0.960000, 0.440000<=p2<=0.480000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.920000<=p1<=0.960000, 0.480000<=p2<=0.520000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.920000<=p1<=0.960000, 0.520000<=p2<=0.560000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.920000<=p1<=0.960000, 0.560000<=p2<=0.600000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.920000<=p1<=0.960000, 0.600000<=p2<=0.640000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.920000<=p1<=0.960000, 0.640000<=p2<=0.680000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.920000<=p1<=0.960000, 0.680000<=p2<=0.720000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.920000<=p1<=0.960000, 0.720000<=p2<=0.760000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.920000<=p1<=0.960000, 0.760000<=p2<=0.800000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.920000<=p1<=0.960000, 0.800000<=p2<=0.840000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.920000<=p1<=0.960000, 0.840000<=p2<=0.880000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.920000<=p1<=0.960000, 0.880000<=p2<=0.920000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.920000<=p1<=0.960000, 0.920000<=p2<=0.960000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.920000<=p1<=0.960000, 0.960000<=p2<=0.999990, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.960000<=p1<=0.999990, 0.000010<=p2<=0.040000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.960000<=p1<=0.999990, 0.040000<=p2<=0.080000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.960000<=p1<=0.999990, 0.080000<=p2<=0.120000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.960000<=p1<=0.999990, 0.120000<=p2<=0.160000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.960000<=p1<=0.999990, 0.160000<=p2<=0.200000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.960000<=p1<=0.999990, 0.200000<=p2<=0.240000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.960000<=p1<=0.999990, 0.240000<=p2<=0.280000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.960000<=p1<=0.999990, 0.280000<=p2<=0.320000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.960000<=p1<=0.999990, 0.320000<=p2<=0.360000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.960000<=p1<=0.999990, 0.360000<=p2<=0.400000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.960000<=p1<=0.999990, 0.400000<=p2<=0.440000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.960000<=p1<=0.999990, 0.440000<=p2<=0.480000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.960000<=p1<=0.999990, 0.480000<=p2<=0.520000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.960000<=p1<=0.999990, 0.520000<=p2<=0.560000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.960000<=p1<=0.999990, 0.560000<=p2<=0.600000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.960000<=p1<=0.999990, 0.600000<=p2<=0.640000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.960000<=p1<=0.999990, 0.640000<=p2<=0.680000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.960000<=p1<=0.999990, 0.680000<=p2<=0.720000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.960000<=p1<=0.999990, 0.720000<=p2<=0.760000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.960000<=p1<=0.999990, 0.760000<=p2<=0.800000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.960000<=p1<=0.999990, 0.800000<=p2<=0.840000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.960000<=p1<=0.999990, 0.840000<=p2<=0.880000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.960000<=p1<=0.999990, 0.880000<=p2<=0.920000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.960000<=p1<=0.999990, 0.920000<=p2<=0.960000, 0.45<=p3<=0.55, 0.45<=p4<=0.55; -0.960000<=p1<=0.999990, 0.960000<=p2<=0.999990, 0.45<=p3<=0.55, 0.45<=p4<=0.55; diff --git a/examples/pmdp/coin4/coin4_space.txt b/examples/pmdp/coin4/coin4_space.txt deleted file mode 100644 index 4c0a341e1..000000000 --- a/examples/pmdp/coin4/coin4_space.txt +++ /dev/null @@ -1,2 +0,0 @@ -0.000010<=p1<=0.999990, 0.000010<=p2<=0.999990, 0.000010<=p3<=0.999990, 0.000010<=p4<=0.999990; - diff --git a/examples/pmdp/coin4/models b/examples/pmdp/coin4/models deleted file mode 100644 index 1544a9647..000000000 --- a/examples/pmdp/coin4/models +++ /dev/null @@ -1,2 +0,0 @@ -coin4.pm -const K=2 -coin4.pm -const K=4 diff --git a/examples/pmdp/coin8/coin8.pm b/examples/pmdp/coin8/coin8.pm deleted file mode 100644 index fa843d202..000000000 --- a/examples/pmdp/coin8/coin8.pm +++ /dev/null @@ -1,72 +0,0 @@ -//Randomised Consensus Protocol - -mdp -const double p1; // in [0.2 , 0.8] -const double p2; // in [0.2 , 0.8] -const double p3; // in [0.2 , 0.8] -const double p4; // in [0.2 , 0.8] -const double p5; -const double p6; -const double p7; -const double p8; - - -const int N=8; -const int K; -const int range = 2*(K+1)*N; -const int counter_init = (K+1)*N; -const int left = N; -const int right = 2*(K+1)*N - N; - -// shared coin -global counter : [0..range] init counter_init; - -module process1 - - // program counter - pc1 : [0..3]; - // 0 - flip - // 1 - write - // 2 - check - // 3 - finished - - // local coin - coin1 : [0..1]; - - // flip coin - [] (pc1=0) -> p1 : (coin1'=0) & (pc1'=1) + 1 - p1 : (coin1'=1) & (pc1'=1); - // write tails -1 (reset coin to add regularity) - [] (pc1=1) & (coin1=0) & (counter>0) -> (counter'=counter-1) & (pc1'=2) & (coin1'=0); - // write heads +1 (reset coin to add regularity) - [] (pc1=1) & (coin1=1) & (counter (counter'=counter+1) & (pc1'=2) & (coin1'=0); - // check - // decide tails - [] (pc1=2) & (counter<=left) -> (pc1'=3) & (coin1'=0); - // decide heads - [] (pc1=2) & (counter>=right) -> (pc1'=3) & (coin1'=1); - // flip again - [] (pc1=2) & (counter>left) & (counter (pc1'=0); - // loop (all loop together when done) - [done] (pc1=3) -> (pc1'=3); - -endmodule - -module process2 = process1[pc1=pc2,coin1=coin2,p1=p2] endmodule -module process3 = process1[pc1=pc3,coin1=coin3,p1=p3] endmodule -module process4 = process1[pc1=pc4,coin1=coin4,p1=p4] endmodule -module process5 = process1[pc1=pc5,coin1=coin5,p1=p5] endmodule -module process6 = process1[pc1=pc6,coin1=coin6,p1=p6] endmodule -module process7 = process1[pc1=pc7,coin1=coin7,p1=p7] endmodule -module process8 = process1[pc1=pc8,coin1=coin8,p1=p8] endmodule - -label "finished" = pc1=3 &pc2=3 &pc3=3 &pc4=3 & pc5=3 & pc6=3 & pc7=3 & pc8=3; -label "all_coins_equal_1" = coin1 = 1 & coin2 = 1 & coin3 = 1 & coin4 = 1 & coin5 = 1 & coin6 = 1 & coin7 = 1 & coin8 = 1; -label "all_coins_equal_0" = coin1 = 0 & coin2 = 0 & coin3 = 0 & coin4 = 0 & coin5 = 0 & coin6 = 0 & coin7 = 0 & coin8 = 0; -label "agree" = coin1=coin2 & coin2=coin3 & coin3 = coin4 & coin4 = coin5 & coin5 = coin6 & coin6 = coin7 & coin7 = coin8; - -rewards "steps" - true : 1; -endrewards - - - diff --git a/examples/pmdp/firewire/firewire.prctl b/examples/pmdp/firewire/firewire.prctl deleted file mode 100644 index badab488f..000000000 --- a/examples/pmdp/firewire/firewire.prctl +++ /dev/null @@ -1,2 +0,0 @@ -P>0.5[ F (s1=7 & s2=8) ] - diff --git a/examples/pmdp/firewire/firewire3.pm b/examples/pmdp/firewire/firewire3.pm deleted file mode 100644 index 32ba94a5e..000000000 --- a/examples/pmdp/firewire/firewire3.pm +++ /dev/null @@ -1,176 +0,0 @@ -// 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) - -mdp - -// 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=3; -// probability of choosing fast -const double fast1; // = 0.5; -const double slow1=1-fast1; -const double fast2; // = 0.5; -const double slow2=1-fast2; - -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 -> (w12'=w12); - // 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 -> fast1 : (s1'=2) & (x1'=0) + slow1 : (s1'=3) & (x1'=0); - [rec_idle21] s1=0 -> (s1'=1); - // rec_idle immediate state) - [snd_idle12] s1=1 -> fast1 : (s1'=4) & (x1'=0) + slow1 : (s1'=5) & (x1'=0); - [rec_req21] s1=1 -> (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); - [rec_ack21] s1=6 -> (s1'=8); - [time] s1=6 -> (s1'=s1); - // almost root (immediate) - // loop in final states to remove deadlock - [] s1=7 & s2=8 -> (s1'=s1); - [] s1=8 & s2=7 -> (s1'=s1); - [time] s1=7 -> (s1'=s1); - [time] s1=8 -> (s1'=s1); - -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, fast1=fast2, slow1=slow2, - 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" - [time] true : 1; -endrewards - -// time nodes sending -rewards "time_sending" - [time] (w12>0 | w21>0) : 1; -endrewards diff --git a/examples/pmdp/firewire/firewire36.pm b/examples/pmdp/firewire/firewire36.pm deleted file mode 100644 index e81dbfd8d..000000000 --- a/examples/pmdp/firewire/firewire36.pm +++ /dev/null @@ -1,176 +0,0 @@ -// 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) - -mdp - -// 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=36; -// probability of choosing fast -const double fast1; // = 0.5; -const double slow1=1-fast1; -const double fast2; // = 0.5; -const double slow2=1-fast2; - -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 -> (w12'=w12); - // 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 -> fast1 : (s1'=2) & (x1'=0) + slow1 : (s1'=3) & (x1'=0); - [rec_idle21] s1=0 -> (s1'=1); - // rec_idle immediate state) - [snd_idle12] s1=1 -> fast1 : (s1'=4) & (x1'=0) + slow1 : (s1'=5) & (x1'=0); - [rec_req21] s1=1 -> (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); - [rec_ack21] s1=6 -> (s1'=8); - [time] s1=6 -> (s1'=s1); - // almost root (immediate) - // loop in final states to remove deadlock - [] s1=7 & s2=8 -> (s1'=s1); - [] s1=8 & s2=7 -> (s1'=s1); - [time] s1=7 -> (s1'=s1); - [time] s1=8 -> (s1'=s1); - -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, fast1=fast2, slow1=slow2, - 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" - [time] true : 1; -endrewards - -// time nodes sending -rewards "time_sending" - [time] (w12>0 | w21>0) : 1; -endrewards diff --git a/examples/pmdp/firewire/firewire_regions.txt b/examples/pmdp/firewire/firewire_regions.txt deleted file mode 100644 index c7c9b5a9f..000000000 --- a/examples/pmdp/firewire/firewire_regions.txt +++ /dev/null @@ -1,625 +0,0 @@ -0.000010<=fast1<=0.040000, 0.000010<=fast2<=0.040000; -0.000010<=fast1<=0.040000, 0.040000<=fast2<=0.080000; -0.000010<=fast1<=0.040000, 0.080000<=fast2<=0.120000; -0.000010<=fast1<=0.040000, 0.120000<=fast2<=0.160000; -0.000010<=fast1<=0.040000, 0.160000<=fast2<=0.200000; -0.000010<=fast1<=0.040000, 0.200000<=fast2<=0.240000; -0.000010<=fast1<=0.040000, 0.240000<=fast2<=0.280000; -0.000010<=fast1<=0.040000, 0.280000<=fast2<=0.320000; -0.000010<=fast1<=0.040000, 0.320000<=fast2<=0.360000; -0.000010<=fast1<=0.040000, 0.360000<=fast2<=0.400000; -0.000010<=fast1<=0.040000, 0.400000<=fast2<=0.440000; -0.000010<=fast1<=0.040000, 0.440000<=fast2<=0.480000; -0.000010<=fast1<=0.040000, 0.480000<=fast2<=0.520000; -0.000010<=fast1<=0.040000, 0.520000<=fast2<=0.560000; -0.000010<=fast1<=0.040000, 0.560000<=fast2<=0.600000; -0.000010<=fast1<=0.040000, 0.600000<=fast2<=0.640000; -0.000010<=fast1<=0.040000, 0.640000<=fast2<=0.680000; -0.000010<=fast1<=0.040000, 0.680000<=fast2<=0.720000; -0.000010<=fast1<=0.040000, 0.720000<=fast2<=0.760000; -0.000010<=fast1<=0.040000, 0.760000<=fast2<=0.800000; -0.000010<=fast1<=0.040000, 0.800000<=fast2<=0.840000; -0.000010<=fast1<=0.040000, 0.840000<=fast2<=0.880000; -0.000010<=fast1<=0.040000, 0.880000<=fast2<=0.920000; -0.000010<=fast1<=0.040000, 0.920000<=fast2<=0.960000; -0.000010<=fast1<=0.040000, 0.960000<=fast2<=0.999990; -0.040000<=fast1<=0.080000, 0.000010<=fast2<=0.040000; -0.040000<=fast1<=0.080000, 0.040000<=fast2<=0.080000; -0.040000<=fast1<=0.080000, 0.080000<=fast2<=0.120000; -0.040000<=fast1<=0.080000, 0.120000<=fast2<=0.160000; -0.040000<=fast1<=0.080000, 0.160000<=fast2<=0.200000; -0.040000<=fast1<=0.080000, 0.200000<=fast2<=0.240000; -0.040000<=fast1<=0.080000, 0.240000<=fast2<=0.280000; -0.040000<=fast1<=0.080000, 0.280000<=fast2<=0.320000; -0.040000<=fast1<=0.080000, 0.320000<=fast2<=0.360000; -0.040000<=fast1<=0.080000, 0.360000<=fast2<=0.400000; -0.040000<=fast1<=0.080000, 0.400000<=fast2<=0.440000; -0.040000<=fast1<=0.080000, 0.440000<=fast2<=0.480000; -0.040000<=fast1<=0.080000, 0.480000<=fast2<=0.520000; -0.040000<=fast1<=0.080000, 0.520000<=fast2<=0.560000; -0.040000<=fast1<=0.080000, 0.560000<=fast2<=0.600000; -0.040000<=fast1<=0.080000, 0.600000<=fast2<=0.640000; -0.040000<=fast1<=0.080000, 0.640000<=fast2<=0.680000; -0.040000<=fast1<=0.080000, 0.680000<=fast2<=0.720000; -0.040000<=fast1<=0.080000, 0.720000<=fast2<=0.760000; -0.040000<=fast1<=0.080000, 0.760000<=fast2<=0.800000; -0.040000<=fast1<=0.080000, 0.800000<=fast2<=0.840000; -0.040000<=fast1<=0.080000, 0.840000<=fast2<=0.880000; -0.040000<=fast1<=0.080000, 0.880000<=fast2<=0.920000; -0.040000<=fast1<=0.080000, 0.920000<=fast2<=0.960000; -0.040000<=fast1<=0.080000, 0.960000<=fast2<=0.999990; -0.080000<=fast1<=0.120000, 0.000010<=fast2<=0.040000; -0.080000<=fast1<=0.120000, 0.040000<=fast2<=0.080000; -0.080000<=fast1<=0.120000, 0.080000<=fast2<=0.120000; -0.080000<=fast1<=0.120000, 0.120000<=fast2<=0.160000; -0.080000<=fast1<=0.120000, 0.160000<=fast2<=0.200000; -0.080000<=fast1<=0.120000, 0.200000<=fast2<=0.240000; -0.080000<=fast1<=0.120000, 0.240000<=fast2<=0.280000; -0.080000<=fast1<=0.120000, 0.280000<=fast2<=0.320000; -0.080000<=fast1<=0.120000, 0.320000<=fast2<=0.360000; -0.080000<=fast1<=0.120000, 0.360000<=fast2<=0.400000; -0.080000<=fast1<=0.120000, 0.400000<=fast2<=0.440000; -0.080000<=fast1<=0.120000, 0.440000<=fast2<=0.480000; -0.080000<=fast1<=0.120000, 0.480000<=fast2<=0.520000; -0.080000<=fast1<=0.120000, 0.520000<=fast2<=0.560000; -0.080000<=fast1<=0.120000, 0.560000<=fast2<=0.600000; -0.080000<=fast1<=0.120000, 0.600000<=fast2<=0.640000; -0.080000<=fast1<=0.120000, 0.640000<=fast2<=0.680000; -0.080000<=fast1<=0.120000, 0.680000<=fast2<=0.720000; -0.080000<=fast1<=0.120000, 0.720000<=fast2<=0.760000; -0.080000<=fast1<=0.120000, 0.760000<=fast2<=0.800000; -0.080000<=fast1<=0.120000, 0.800000<=fast2<=0.840000; -0.080000<=fast1<=0.120000, 0.840000<=fast2<=0.880000; -0.080000<=fast1<=0.120000, 0.880000<=fast2<=0.920000; -0.080000<=fast1<=0.120000, 0.920000<=fast2<=0.960000; -0.080000<=fast1<=0.120000, 0.960000<=fast2<=0.999990; -0.120000<=fast1<=0.160000, 0.000010<=fast2<=0.040000; -0.120000<=fast1<=0.160000, 0.040000<=fast2<=0.080000; -0.120000<=fast1<=0.160000, 0.080000<=fast2<=0.120000; -0.120000<=fast1<=0.160000, 0.120000<=fast2<=0.160000; -0.120000<=fast1<=0.160000, 0.160000<=fast2<=0.200000; -0.120000<=fast1<=0.160000, 0.200000<=fast2<=0.240000; -0.120000<=fast1<=0.160000, 0.240000<=fast2<=0.280000; -0.120000<=fast1<=0.160000, 0.280000<=fast2<=0.320000; -0.120000<=fast1<=0.160000, 0.320000<=fast2<=0.360000; -0.120000<=fast1<=0.160000, 0.360000<=fast2<=0.400000; -0.120000<=fast1<=0.160000, 0.400000<=fast2<=0.440000; -0.120000<=fast1<=0.160000, 0.440000<=fast2<=0.480000; -0.120000<=fast1<=0.160000, 0.480000<=fast2<=0.520000; -0.120000<=fast1<=0.160000, 0.520000<=fast2<=0.560000; -0.120000<=fast1<=0.160000, 0.560000<=fast2<=0.600000; -0.120000<=fast1<=0.160000, 0.600000<=fast2<=0.640000; -0.120000<=fast1<=0.160000, 0.640000<=fast2<=0.680000; -0.120000<=fast1<=0.160000, 0.680000<=fast2<=0.720000; -0.120000<=fast1<=0.160000, 0.720000<=fast2<=0.760000; -0.120000<=fast1<=0.160000, 0.760000<=fast2<=0.800000; -0.120000<=fast1<=0.160000, 0.800000<=fast2<=0.840000; -0.120000<=fast1<=0.160000, 0.840000<=fast2<=0.880000; -0.120000<=fast1<=0.160000, 0.880000<=fast2<=0.920000; -0.120000<=fast1<=0.160000, 0.920000<=fast2<=0.960000; -0.120000<=fast1<=0.160000, 0.960000<=fast2<=0.999990; -0.160000<=fast1<=0.200000, 0.000010<=fast2<=0.040000; -0.160000<=fast1<=0.200000, 0.040000<=fast2<=0.080000; -0.160000<=fast1<=0.200000, 0.080000<=fast2<=0.120000; -0.160000<=fast1<=0.200000, 0.120000<=fast2<=0.160000; -0.160000<=fast1<=0.200000, 0.160000<=fast2<=0.200000; -0.160000<=fast1<=0.200000, 0.200000<=fast2<=0.240000; -0.160000<=fast1<=0.200000, 0.240000<=fast2<=0.280000; -0.160000<=fast1<=0.200000, 0.280000<=fast2<=0.320000; -0.160000<=fast1<=0.200000, 0.320000<=fast2<=0.360000; -0.160000<=fast1<=0.200000, 0.360000<=fast2<=0.400000; -0.160000<=fast1<=0.200000, 0.400000<=fast2<=0.440000; -0.160000<=fast1<=0.200000, 0.440000<=fast2<=0.480000; -0.160000<=fast1<=0.200000, 0.480000<=fast2<=0.520000; -0.160000<=fast1<=0.200000, 0.520000<=fast2<=0.560000; -0.160000<=fast1<=0.200000, 0.560000<=fast2<=0.600000; -0.160000<=fast1<=0.200000, 0.600000<=fast2<=0.640000; -0.160000<=fast1<=0.200000, 0.640000<=fast2<=0.680000; -0.160000<=fast1<=0.200000, 0.680000<=fast2<=0.720000; -0.160000<=fast1<=0.200000, 0.720000<=fast2<=0.760000; -0.160000<=fast1<=0.200000, 0.760000<=fast2<=0.800000; -0.160000<=fast1<=0.200000, 0.800000<=fast2<=0.840000; -0.160000<=fast1<=0.200000, 0.840000<=fast2<=0.880000; -0.160000<=fast1<=0.200000, 0.880000<=fast2<=0.920000; -0.160000<=fast1<=0.200000, 0.920000<=fast2<=0.960000; -0.160000<=fast1<=0.200000, 0.960000<=fast2<=0.999990; -0.200000<=fast1<=0.240000, 0.000010<=fast2<=0.040000; -0.200000<=fast1<=0.240000, 0.040000<=fast2<=0.080000; -0.200000<=fast1<=0.240000, 0.080000<=fast2<=0.120000; -0.200000<=fast1<=0.240000, 0.120000<=fast2<=0.160000; -0.200000<=fast1<=0.240000, 0.160000<=fast2<=0.200000; -0.200000<=fast1<=0.240000, 0.200000<=fast2<=0.240000; -0.200000<=fast1<=0.240000, 0.240000<=fast2<=0.280000; -0.200000<=fast1<=0.240000, 0.280000<=fast2<=0.320000; -0.200000<=fast1<=0.240000, 0.320000<=fast2<=0.360000; -0.200000<=fast1<=0.240000, 0.360000<=fast2<=0.400000; -0.200000<=fast1<=0.240000, 0.400000<=fast2<=0.440000; -0.200000<=fast1<=0.240000, 0.440000<=fast2<=0.480000; -0.200000<=fast1<=0.240000, 0.480000<=fast2<=0.520000; -0.200000<=fast1<=0.240000, 0.520000<=fast2<=0.560000; -0.200000<=fast1<=0.240000, 0.560000<=fast2<=0.600000; -0.200000<=fast1<=0.240000, 0.600000<=fast2<=0.640000; -0.200000<=fast1<=0.240000, 0.640000<=fast2<=0.680000; -0.200000<=fast1<=0.240000, 0.680000<=fast2<=0.720000; -0.200000<=fast1<=0.240000, 0.720000<=fast2<=0.760000; -0.200000<=fast1<=0.240000, 0.760000<=fast2<=0.800000; -0.200000<=fast1<=0.240000, 0.800000<=fast2<=0.840000; -0.200000<=fast1<=0.240000, 0.840000<=fast2<=0.880000; -0.200000<=fast1<=0.240000, 0.880000<=fast2<=0.920000; -0.200000<=fast1<=0.240000, 0.920000<=fast2<=0.960000; -0.200000<=fast1<=0.240000, 0.960000<=fast2<=0.999990; -0.240000<=fast1<=0.280000, 0.000010<=fast2<=0.040000; -0.240000<=fast1<=0.280000, 0.040000<=fast2<=0.080000; -0.240000<=fast1<=0.280000, 0.080000<=fast2<=0.120000; -0.240000<=fast1<=0.280000, 0.120000<=fast2<=0.160000; -0.240000<=fast1<=0.280000, 0.160000<=fast2<=0.200000; -0.240000<=fast1<=0.280000, 0.200000<=fast2<=0.240000; -0.240000<=fast1<=0.280000, 0.240000<=fast2<=0.280000; -0.240000<=fast1<=0.280000, 0.280000<=fast2<=0.320000; -0.240000<=fast1<=0.280000, 0.320000<=fast2<=0.360000; -0.240000<=fast1<=0.280000, 0.360000<=fast2<=0.400000; -0.240000<=fast1<=0.280000, 0.400000<=fast2<=0.440000; -0.240000<=fast1<=0.280000, 0.440000<=fast2<=0.480000; -0.240000<=fast1<=0.280000, 0.480000<=fast2<=0.520000; -0.240000<=fast1<=0.280000, 0.520000<=fast2<=0.560000; -0.240000<=fast1<=0.280000, 0.560000<=fast2<=0.600000; -0.240000<=fast1<=0.280000, 0.600000<=fast2<=0.640000; -0.240000<=fast1<=0.280000, 0.640000<=fast2<=0.680000; -0.240000<=fast1<=0.280000, 0.680000<=fast2<=0.720000; -0.240000<=fast1<=0.280000, 0.720000<=fast2<=0.760000; -0.240000<=fast1<=0.280000, 0.760000<=fast2<=0.800000; -0.240000<=fast1<=0.280000, 0.800000<=fast2<=0.840000; -0.240000<=fast1<=0.280000, 0.840000<=fast2<=0.880000; -0.240000<=fast1<=0.280000, 0.880000<=fast2<=0.920000; -0.240000<=fast1<=0.280000, 0.920000<=fast2<=0.960000; -0.240000<=fast1<=0.280000, 0.960000<=fast2<=0.999990; -0.280000<=fast1<=0.320000, 0.000010<=fast2<=0.040000; -0.280000<=fast1<=0.320000, 0.040000<=fast2<=0.080000; -0.280000<=fast1<=0.320000, 0.080000<=fast2<=0.120000; -0.280000<=fast1<=0.320000, 0.120000<=fast2<=0.160000; -0.280000<=fast1<=0.320000, 0.160000<=fast2<=0.200000; -0.280000<=fast1<=0.320000, 0.200000<=fast2<=0.240000; -0.280000<=fast1<=0.320000, 0.240000<=fast2<=0.280000; -0.280000<=fast1<=0.320000, 0.280000<=fast2<=0.320000; -0.280000<=fast1<=0.320000, 0.320000<=fast2<=0.360000; -0.280000<=fast1<=0.320000, 0.360000<=fast2<=0.400000; -0.280000<=fast1<=0.320000, 0.400000<=fast2<=0.440000; -0.280000<=fast1<=0.320000, 0.440000<=fast2<=0.480000; -0.280000<=fast1<=0.320000, 0.480000<=fast2<=0.520000; -0.280000<=fast1<=0.320000, 0.520000<=fast2<=0.560000; -0.280000<=fast1<=0.320000, 0.560000<=fast2<=0.600000; -0.280000<=fast1<=0.320000, 0.600000<=fast2<=0.640000; -0.280000<=fast1<=0.320000, 0.640000<=fast2<=0.680000; -0.280000<=fast1<=0.320000, 0.680000<=fast2<=0.720000; -0.280000<=fast1<=0.320000, 0.720000<=fast2<=0.760000; -0.280000<=fast1<=0.320000, 0.760000<=fast2<=0.800000; -0.280000<=fast1<=0.320000, 0.800000<=fast2<=0.840000; -0.280000<=fast1<=0.320000, 0.840000<=fast2<=0.880000; -0.280000<=fast1<=0.320000, 0.880000<=fast2<=0.920000; -0.280000<=fast1<=0.320000, 0.920000<=fast2<=0.960000; -0.280000<=fast1<=0.320000, 0.960000<=fast2<=0.999990; -0.320000<=fast1<=0.360000, 0.000010<=fast2<=0.040000; -0.320000<=fast1<=0.360000, 0.040000<=fast2<=0.080000; -0.320000<=fast1<=0.360000, 0.080000<=fast2<=0.120000; -0.320000<=fast1<=0.360000, 0.120000<=fast2<=0.160000; -0.320000<=fast1<=0.360000, 0.160000<=fast2<=0.200000; -0.320000<=fast1<=0.360000, 0.200000<=fast2<=0.240000; -0.320000<=fast1<=0.360000, 0.240000<=fast2<=0.280000; -0.320000<=fast1<=0.360000, 0.280000<=fast2<=0.320000; -0.320000<=fast1<=0.360000, 0.320000<=fast2<=0.360000; -0.320000<=fast1<=0.360000, 0.360000<=fast2<=0.400000; -0.320000<=fast1<=0.360000, 0.400000<=fast2<=0.440000; -0.320000<=fast1<=0.360000, 0.440000<=fast2<=0.480000; -0.320000<=fast1<=0.360000, 0.480000<=fast2<=0.520000; -0.320000<=fast1<=0.360000, 0.520000<=fast2<=0.560000; -0.320000<=fast1<=0.360000, 0.560000<=fast2<=0.600000; -0.320000<=fast1<=0.360000, 0.600000<=fast2<=0.640000; -0.320000<=fast1<=0.360000, 0.640000<=fast2<=0.680000; -0.320000<=fast1<=0.360000, 0.680000<=fast2<=0.720000; -0.320000<=fast1<=0.360000, 0.720000<=fast2<=0.760000; -0.320000<=fast1<=0.360000, 0.760000<=fast2<=0.800000; -0.320000<=fast1<=0.360000, 0.800000<=fast2<=0.840000; -0.320000<=fast1<=0.360000, 0.840000<=fast2<=0.880000; -0.320000<=fast1<=0.360000, 0.880000<=fast2<=0.920000; -0.320000<=fast1<=0.360000, 0.920000<=fast2<=0.960000; -0.320000<=fast1<=0.360000, 0.960000<=fast2<=0.999990; -0.360000<=fast1<=0.400000, 0.000010<=fast2<=0.040000; -0.360000<=fast1<=0.400000, 0.040000<=fast2<=0.080000; -0.360000<=fast1<=0.400000, 0.080000<=fast2<=0.120000; -0.360000<=fast1<=0.400000, 0.120000<=fast2<=0.160000; -0.360000<=fast1<=0.400000, 0.160000<=fast2<=0.200000; -0.360000<=fast1<=0.400000, 0.200000<=fast2<=0.240000; -0.360000<=fast1<=0.400000, 0.240000<=fast2<=0.280000; -0.360000<=fast1<=0.400000, 0.280000<=fast2<=0.320000; -0.360000<=fast1<=0.400000, 0.320000<=fast2<=0.360000; -0.360000<=fast1<=0.400000, 0.360000<=fast2<=0.400000; -0.360000<=fast1<=0.400000, 0.400000<=fast2<=0.440000; -0.360000<=fast1<=0.400000, 0.440000<=fast2<=0.480000; -0.360000<=fast1<=0.400000, 0.480000<=fast2<=0.520000; -0.360000<=fast1<=0.400000, 0.520000<=fast2<=0.560000; -0.360000<=fast1<=0.400000, 0.560000<=fast2<=0.600000; -0.360000<=fast1<=0.400000, 0.600000<=fast2<=0.640000; -0.360000<=fast1<=0.400000, 0.640000<=fast2<=0.680000; -0.360000<=fast1<=0.400000, 0.680000<=fast2<=0.720000; -0.360000<=fast1<=0.400000, 0.720000<=fast2<=0.760000; -0.360000<=fast1<=0.400000, 0.760000<=fast2<=0.800000; -0.360000<=fast1<=0.400000, 0.800000<=fast2<=0.840000; -0.360000<=fast1<=0.400000, 0.840000<=fast2<=0.880000; -0.360000<=fast1<=0.400000, 0.880000<=fast2<=0.920000; -0.360000<=fast1<=0.400000, 0.920000<=fast2<=0.960000; -0.360000<=fast1<=0.400000, 0.960000<=fast2<=0.999990; -0.400000<=fast1<=0.440000, 0.000010<=fast2<=0.040000; -0.400000<=fast1<=0.440000, 0.040000<=fast2<=0.080000; -0.400000<=fast1<=0.440000, 0.080000<=fast2<=0.120000; -0.400000<=fast1<=0.440000, 0.120000<=fast2<=0.160000; -0.400000<=fast1<=0.440000, 0.160000<=fast2<=0.200000; -0.400000<=fast1<=0.440000, 0.200000<=fast2<=0.240000; -0.400000<=fast1<=0.440000, 0.240000<=fast2<=0.280000; -0.400000<=fast1<=0.440000, 0.280000<=fast2<=0.320000; -0.400000<=fast1<=0.440000, 0.320000<=fast2<=0.360000; -0.400000<=fast1<=0.440000, 0.360000<=fast2<=0.400000; -0.400000<=fast1<=0.440000, 0.400000<=fast2<=0.440000; -0.400000<=fast1<=0.440000, 0.440000<=fast2<=0.480000; -0.400000<=fast1<=0.440000, 0.480000<=fast2<=0.520000; -0.400000<=fast1<=0.440000, 0.520000<=fast2<=0.560000; -0.400000<=fast1<=0.440000, 0.560000<=fast2<=0.600000; -0.400000<=fast1<=0.440000, 0.600000<=fast2<=0.640000; -0.400000<=fast1<=0.440000, 0.640000<=fast2<=0.680000; -0.400000<=fast1<=0.440000, 0.680000<=fast2<=0.720000; -0.400000<=fast1<=0.440000, 0.720000<=fast2<=0.760000; -0.400000<=fast1<=0.440000, 0.760000<=fast2<=0.800000; -0.400000<=fast1<=0.440000, 0.800000<=fast2<=0.840000; -0.400000<=fast1<=0.440000, 0.840000<=fast2<=0.880000; -0.400000<=fast1<=0.440000, 0.880000<=fast2<=0.920000; -0.400000<=fast1<=0.440000, 0.920000<=fast2<=0.960000; -0.400000<=fast1<=0.440000, 0.960000<=fast2<=0.999990; -0.440000<=fast1<=0.480000, 0.000010<=fast2<=0.040000; -0.440000<=fast1<=0.480000, 0.040000<=fast2<=0.080000; -0.440000<=fast1<=0.480000, 0.080000<=fast2<=0.120000; -0.440000<=fast1<=0.480000, 0.120000<=fast2<=0.160000; -0.440000<=fast1<=0.480000, 0.160000<=fast2<=0.200000; -0.440000<=fast1<=0.480000, 0.200000<=fast2<=0.240000; -0.440000<=fast1<=0.480000, 0.240000<=fast2<=0.280000; -0.440000<=fast1<=0.480000, 0.280000<=fast2<=0.320000; -0.440000<=fast1<=0.480000, 0.320000<=fast2<=0.360000; -0.440000<=fast1<=0.480000, 0.360000<=fast2<=0.400000; -0.440000<=fast1<=0.480000, 0.400000<=fast2<=0.440000; -0.440000<=fast1<=0.480000, 0.440000<=fast2<=0.480000; -0.440000<=fast1<=0.480000, 0.480000<=fast2<=0.520000; -0.440000<=fast1<=0.480000, 0.520000<=fast2<=0.560000; -0.440000<=fast1<=0.480000, 0.560000<=fast2<=0.600000; -0.440000<=fast1<=0.480000, 0.600000<=fast2<=0.640000; -0.440000<=fast1<=0.480000, 0.640000<=fast2<=0.680000; -0.440000<=fast1<=0.480000, 0.680000<=fast2<=0.720000; -0.440000<=fast1<=0.480000, 0.720000<=fast2<=0.760000; -0.440000<=fast1<=0.480000, 0.760000<=fast2<=0.800000; -0.440000<=fast1<=0.480000, 0.800000<=fast2<=0.840000; -0.440000<=fast1<=0.480000, 0.840000<=fast2<=0.880000; -0.440000<=fast1<=0.480000, 0.880000<=fast2<=0.920000; -0.440000<=fast1<=0.480000, 0.920000<=fast2<=0.960000; -0.440000<=fast1<=0.480000, 0.960000<=fast2<=0.999990; -0.480000<=fast1<=0.520000, 0.000010<=fast2<=0.040000; -0.480000<=fast1<=0.520000, 0.040000<=fast2<=0.080000; -0.480000<=fast1<=0.520000, 0.080000<=fast2<=0.120000; -0.480000<=fast1<=0.520000, 0.120000<=fast2<=0.160000; -0.480000<=fast1<=0.520000, 0.160000<=fast2<=0.200000; -0.480000<=fast1<=0.520000, 0.200000<=fast2<=0.240000; -0.480000<=fast1<=0.520000, 0.240000<=fast2<=0.280000; -0.480000<=fast1<=0.520000, 0.280000<=fast2<=0.320000; -0.480000<=fast1<=0.520000, 0.320000<=fast2<=0.360000; -0.480000<=fast1<=0.520000, 0.360000<=fast2<=0.400000; -0.480000<=fast1<=0.520000, 0.400000<=fast2<=0.440000; -0.480000<=fast1<=0.520000, 0.440000<=fast2<=0.480000; -0.480000<=fast1<=0.520000, 0.480000<=fast2<=0.520000; -0.480000<=fast1<=0.520000, 0.520000<=fast2<=0.560000; -0.480000<=fast1<=0.520000, 0.560000<=fast2<=0.600000; -0.480000<=fast1<=0.520000, 0.600000<=fast2<=0.640000; -0.480000<=fast1<=0.520000, 0.640000<=fast2<=0.680000; -0.480000<=fast1<=0.520000, 0.680000<=fast2<=0.720000; -0.480000<=fast1<=0.520000, 0.720000<=fast2<=0.760000; -0.480000<=fast1<=0.520000, 0.760000<=fast2<=0.800000; -0.480000<=fast1<=0.520000, 0.800000<=fast2<=0.840000; -0.480000<=fast1<=0.520000, 0.840000<=fast2<=0.880000; -0.480000<=fast1<=0.520000, 0.880000<=fast2<=0.920000; -0.480000<=fast1<=0.520000, 0.920000<=fast2<=0.960000; -0.480000<=fast1<=0.520000, 0.960000<=fast2<=0.999990; -0.520000<=fast1<=0.560000, 0.000010<=fast2<=0.040000; -0.520000<=fast1<=0.560000, 0.040000<=fast2<=0.080000; -0.520000<=fast1<=0.560000, 0.080000<=fast2<=0.120000; -0.520000<=fast1<=0.560000, 0.120000<=fast2<=0.160000; -0.520000<=fast1<=0.560000, 0.160000<=fast2<=0.200000; -0.520000<=fast1<=0.560000, 0.200000<=fast2<=0.240000; -0.520000<=fast1<=0.560000, 0.240000<=fast2<=0.280000; -0.520000<=fast1<=0.560000, 0.280000<=fast2<=0.320000; -0.520000<=fast1<=0.560000, 0.320000<=fast2<=0.360000; -0.520000<=fast1<=0.560000, 0.360000<=fast2<=0.400000; -0.520000<=fast1<=0.560000, 0.400000<=fast2<=0.440000; -0.520000<=fast1<=0.560000, 0.440000<=fast2<=0.480000; -0.520000<=fast1<=0.560000, 0.480000<=fast2<=0.520000; -0.520000<=fast1<=0.560000, 0.520000<=fast2<=0.560000; -0.520000<=fast1<=0.560000, 0.560000<=fast2<=0.600000; -0.520000<=fast1<=0.560000, 0.600000<=fast2<=0.640000; -0.520000<=fast1<=0.560000, 0.640000<=fast2<=0.680000; -0.520000<=fast1<=0.560000, 0.680000<=fast2<=0.720000; -0.520000<=fast1<=0.560000, 0.720000<=fast2<=0.760000; -0.520000<=fast1<=0.560000, 0.760000<=fast2<=0.800000; -0.520000<=fast1<=0.560000, 0.800000<=fast2<=0.840000; -0.520000<=fast1<=0.560000, 0.840000<=fast2<=0.880000; -0.520000<=fast1<=0.560000, 0.880000<=fast2<=0.920000; -0.520000<=fast1<=0.560000, 0.920000<=fast2<=0.960000; -0.520000<=fast1<=0.560000, 0.960000<=fast2<=0.999990; -0.560000<=fast1<=0.600000, 0.000010<=fast2<=0.040000; -0.560000<=fast1<=0.600000, 0.040000<=fast2<=0.080000; -0.560000<=fast1<=0.600000, 0.080000<=fast2<=0.120000; -0.560000<=fast1<=0.600000, 0.120000<=fast2<=0.160000; -0.560000<=fast1<=0.600000, 0.160000<=fast2<=0.200000; -0.560000<=fast1<=0.600000, 0.200000<=fast2<=0.240000; -0.560000<=fast1<=0.600000, 0.240000<=fast2<=0.280000; -0.560000<=fast1<=0.600000, 0.280000<=fast2<=0.320000; -0.560000<=fast1<=0.600000, 0.320000<=fast2<=0.360000; -0.560000<=fast1<=0.600000, 0.360000<=fast2<=0.400000; -0.560000<=fast1<=0.600000, 0.400000<=fast2<=0.440000; -0.560000<=fast1<=0.600000, 0.440000<=fast2<=0.480000; -0.560000<=fast1<=0.600000, 0.480000<=fast2<=0.520000; -0.560000<=fast1<=0.600000, 0.520000<=fast2<=0.560000; -0.560000<=fast1<=0.600000, 0.560000<=fast2<=0.600000; -0.560000<=fast1<=0.600000, 0.600000<=fast2<=0.640000; -0.560000<=fast1<=0.600000, 0.640000<=fast2<=0.680000; -0.560000<=fast1<=0.600000, 0.680000<=fast2<=0.720000; -0.560000<=fast1<=0.600000, 0.720000<=fast2<=0.760000; -0.560000<=fast1<=0.600000, 0.760000<=fast2<=0.800000; -0.560000<=fast1<=0.600000, 0.800000<=fast2<=0.840000; -0.560000<=fast1<=0.600000, 0.840000<=fast2<=0.880000; -0.560000<=fast1<=0.600000, 0.880000<=fast2<=0.920000; -0.560000<=fast1<=0.600000, 0.920000<=fast2<=0.960000; -0.560000<=fast1<=0.600000, 0.960000<=fast2<=0.999990; -0.600000<=fast1<=0.640000, 0.000010<=fast2<=0.040000; -0.600000<=fast1<=0.640000, 0.040000<=fast2<=0.080000; -0.600000<=fast1<=0.640000, 0.080000<=fast2<=0.120000; -0.600000<=fast1<=0.640000, 0.120000<=fast2<=0.160000; -0.600000<=fast1<=0.640000, 0.160000<=fast2<=0.200000; -0.600000<=fast1<=0.640000, 0.200000<=fast2<=0.240000; -0.600000<=fast1<=0.640000, 0.240000<=fast2<=0.280000; -0.600000<=fast1<=0.640000, 0.280000<=fast2<=0.320000; -0.600000<=fast1<=0.640000, 0.320000<=fast2<=0.360000; -0.600000<=fast1<=0.640000, 0.360000<=fast2<=0.400000; -0.600000<=fast1<=0.640000, 0.400000<=fast2<=0.440000; -0.600000<=fast1<=0.640000, 0.440000<=fast2<=0.480000; -0.600000<=fast1<=0.640000, 0.480000<=fast2<=0.520000; -0.600000<=fast1<=0.640000, 0.520000<=fast2<=0.560000; -0.600000<=fast1<=0.640000, 0.560000<=fast2<=0.600000; -0.600000<=fast1<=0.640000, 0.600000<=fast2<=0.640000; -0.600000<=fast1<=0.640000, 0.640000<=fast2<=0.680000; -0.600000<=fast1<=0.640000, 0.680000<=fast2<=0.720000; -0.600000<=fast1<=0.640000, 0.720000<=fast2<=0.760000; -0.600000<=fast1<=0.640000, 0.760000<=fast2<=0.800000; -0.600000<=fast1<=0.640000, 0.800000<=fast2<=0.840000; -0.600000<=fast1<=0.640000, 0.840000<=fast2<=0.880000; -0.600000<=fast1<=0.640000, 0.880000<=fast2<=0.920000; -0.600000<=fast1<=0.640000, 0.920000<=fast2<=0.960000; -0.600000<=fast1<=0.640000, 0.960000<=fast2<=0.999990; -0.640000<=fast1<=0.680000, 0.000010<=fast2<=0.040000; -0.640000<=fast1<=0.680000, 0.040000<=fast2<=0.080000; -0.640000<=fast1<=0.680000, 0.080000<=fast2<=0.120000; -0.640000<=fast1<=0.680000, 0.120000<=fast2<=0.160000; -0.640000<=fast1<=0.680000, 0.160000<=fast2<=0.200000; -0.640000<=fast1<=0.680000, 0.200000<=fast2<=0.240000; -0.640000<=fast1<=0.680000, 0.240000<=fast2<=0.280000; -0.640000<=fast1<=0.680000, 0.280000<=fast2<=0.320000; -0.640000<=fast1<=0.680000, 0.320000<=fast2<=0.360000; -0.640000<=fast1<=0.680000, 0.360000<=fast2<=0.400000; -0.640000<=fast1<=0.680000, 0.400000<=fast2<=0.440000; -0.640000<=fast1<=0.680000, 0.440000<=fast2<=0.480000; -0.640000<=fast1<=0.680000, 0.480000<=fast2<=0.520000; -0.640000<=fast1<=0.680000, 0.520000<=fast2<=0.560000; -0.640000<=fast1<=0.680000, 0.560000<=fast2<=0.600000; -0.640000<=fast1<=0.680000, 0.600000<=fast2<=0.640000; -0.640000<=fast1<=0.680000, 0.640000<=fast2<=0.680000; -0.640000<=fast1<=0.680000, 0.680000<=fast2<=0.720000; -0.640000<=fast1<=0.680000, 0.720000<=fast2<=0.760000; -0.640000<=fast1<=0.680000, 0.760000<=fast2<=0.800000; -0.640000<=fast1<=0.680000, 0.800000<=fast2<=0.840000; -0.640000<=fast1<=0.680000, 0.840000<=fast2<=0.880000; -0.640000<=fast1<=0.680000, 0.880000<=fast2<=0.920000; -0.640000<=fast1<=0.680000, 0.920000<=fast2<=0.960000; -0.640000<=fast1<=0.680000, 0.960000<=fast2<=0.999990; -0.680000<=fast1<=0.720000, 0.000010<=fast2<=0.040000; -0.680000<=fast1<=0.720000, 0.040000<=fast2<=0.080000; -0.680000<=fast1<=0.720000, 0.080000<=fast2<=0.120000; -0.680000<=fast1<=0.720000, 0.120000<=fast2<=0.160000; -0.680000<=fast1<=0.720000, 0.160000<=fast2<=0.200000; -0.680000<=fast1<=0.720000, 0.200000<=fast2<=0.240000; -0.680000<=fast1<=0.720000, 0.240000<=fast2<=0.280000; -0.680000<=fast1<=0.720000, 0.280000<=fast2<=0.320000; -0.680000<=fast1<=0.720000, 0.320000<=fast2<=0.360000; -0.680000<=fast1<=0.720000, 0.360000<=fast2<=0.400000; -0.680000<=fast1<=0.720000, 0.400000<=fast2<=0.440000; -0.680000<=fast1<=0.720000, 0.440000<=fast2<=0.480000; -0.680000<=fast1<=0.720000, 0.480000<=fast2<=0.520000; -0.680000<=fast1<=0.720000, 0.520000<=fast2<=0.560000; -0.680000<=fast1<=0.720000, 0.560000<=fast2<=0.600000; -0.680000<=fast1<=0.720000, 0.600000<=fast2<=0.640000; -0.680000<=fast1<=0.720000, 0.640000<=fast2<=0.680000; -0.680000<=fast1<=0.720000, 0.680000<=fast2<=0.720000; -0.680000<=fast1<=0.720000, 0.720000<=fast2<=0.760000; -0.680000<=fast1<=0.720000, 0.760000<=fast2<=0.800000; -0.680000<=fast1<=0.720000, 0.800000<=fast2<=0.840000; -0.680000<=fast1<=0.720000, 0.840000<=fast2<=0.880000; -0.680000<=fast1<=0.720000, 0.880000<=fast2<=0.920000; -0.680000<=fast1<=0.720000, 0.920000<=fast2<=0.960000; -0.680000<=fast1<=0.720000, 0.960000<=fast2<=0.999990; -0.720000<=fast1<=0.760000, 0.000010<=fast2<=0.040000; -0.720000<=fast1<=0.760000, 0.040000<=fast2<=0.080000; -0.720000<=fast1<=0.760000, 0.080000<=fast2<=0.120000; -0.720000<=fast1<=0.760000, 0.120000<=fast2<=0.160000; -0.720000<=fast1<=0.760000, 0.160000<=fast2<=0.200000; -0.720000<=fast1<=0.760000, 0.200000<=fast2<=0.240000; -0.720000<=fast1<=0.760000, 0.240000<=fast2<=0.280000; -0.720000<=fast1<=0.760000, 0.280000<=fast2<=0.320000; -0.720000<=fast1<=0.760000, 0.320000<=fast2<=0.360000; -0.720000<=fast1<=0.760000, 0.360000<=fast2<=0.400000; -0.720000<=fast1<=0.760000, 0.400000<=fast2<=0.440000; -0.720000<=fast1<=0.760000, 0.440000<=fast2<=0.480000; -0.720000<=fast1<=0.760000, 0.480000<=fast2<=0.520000; -0.720000<=fast1<=0.760000, 0.520000<=fast2<=0.560000; -0.720000<=fast1<=0.760000, 0.560000<=fast2<=0.600000; -0.720000<=fast1<=0.760000, 0.600000<=fast2<=0.640000; -0.720000<=fast1<=0.760000, 0.640000<=fast2<=0.680000; -0.720000<=fast1<=0.760000, 0.680000<=fast2<=0.720000; -0.720000<=fast1<=0.760000, 0.720000<=fast2<=0.760000; -0.720000<=fast1<=0.760000, 0.760000<=fast2<=0.800000; -0.720000<=fast1<=0.760000, 0.800000<=fast2<=0.840000; -0.720000<=fast1<=0.760000, 0.840000<=fast2<=0.880000; -0.720000<=fast1<=0.760000, 0.880000<=fast2<=0.920000; -0.720000<=fast1<=0.760000, 0.920000<=fast2<=0.960000; -0.720000<=fast1<=0.760000, 0.960000<=fast2<=0.999990; -0.760000<=fast1<=0.800000, 0.000010<=fast2<=0.040000; -0.760000<=fast1<=0.800000, 0.040000<=fast2<=0.080000; -0.760000<=fast1<=0.800000, 0.080000<=fast2<=0.120000; -0.760000<=fast1<=0.800000, 0.120000<=fast2<=0.160000; -0.760000<=fast1<=0.800000, 0.160000<=fast2<=0.200000; -0.760000<=fast1<=0.800000, 0.200000<=fast2<=0.240000; -0.760000<=fast1<=0.800000, 0.240000<=fast2<=0.280000; -0.760000<=fast1<=0.800000, 0.280000<=fast2<=0.320000; -0.760000<=fast1<=0.800000, 0.320000<=fast2<=0.360000; -0.760000<=fast1<=0.800000, 0.360000<=fast2<=0.400000; -0.760000<=fast1<=0.800000, 0.400000<=fast2<=0.440000; -0.760000<=fast1<=0.800000, 0.440000<=fast2<=0.480000; -0.760000<=fast1<=0.800000, 0.480000<=fast2<=0.520000; -0.760000<=fast1<=0.800000, 0.520000<=fast2<=0.560000; -0.760000<=fast1<=0.800000, 0.560000<=fast2<=0.600000; -0.760000<=fast1<=0.800000, 0.600000<=fast2<=0.640000; -0.760000<=fast1<=0.800000, 0.640000<=fast2<=0.680000; -0.760000<=fast1<=0.800000, 0.680000<=fast2<=0.720000; -0.760000<=fast1<=0.800000, 0.720000<=fast2<=0.760000; -0.760000<=fast1<=0.800000, 0.760000<=fast2<=0.800000; -0.760000<=fast1<=0.800000, 0.800000<=fast2<=0.840000; -0.760000<=fast1<=0.800000, 0.840000<=fast2<=0.880000; -0.760000<=fast1<=0.800000, 0.880000<=fast2<=0.920000; -0.760000<=fast1<=0.800000, 0.920000<=fast2<=0.960000; -0.760000<=fast1<=0.800000, 0.960000<=fast2<=0.999990; -0.800000<=fast1<=0.840000, 0.000010<=fast2<=0.040000; -0.800000<=fast1<=0.840000, 0.040000<=fast2<=0.080000; -0.800000<=fast1<=0.840000, 0.080000<=fast2<=0.120000; -0.800000<=fast1<=0.840000, 0.120000<=fast2<=0.160000; -0.800000<=fast1<=0.840000, 0.160000<=fast2<=0.200000; -0.800000<=fast1<=0.840000, 0.200000<=fast2<=0.240000; -0.800000<=fast1<=0.840000, 0.240000<=fast2<=0.280000; -0.800000<=fast1<=0.840000, 0.280000<=fast2<=0.320000; -0.800000<=fast1<=0.840000, 0.320000<=fast2<=0.360000; -0.800000<=fast1<=0.840000, 0.360000<=fast2<=0.400000; -0.800000<=fast1<=0.840000, 0.400000<=fast2<=0.440000; -0.800000<=fast1<=0.840000, 0.440000<=fast2<=0.480000; -0.800000<=fast1<=0.840000, 0.480000<=fast2<=0.520000; -0.800000<=fast1<=0.840000, 0.520000<=fast2<=0.560000; -0.800000<=fast1<=0.840000, 0.560000<=fast2<=0.600000; -0.800000<=fast1<=0.840000, 0.600000<=fast2<=0.640000; -0.800000<=fast1<=0.840000, 0.640000<=fast2<=0.680000; -0.800000<=fast1<=0.840000, 0.680000<=fast2<=0.720000; -0.800000<=fast1<=0.840000, 0.720000<=fast2<=0.760000; -0.800000<=fast1<=0.840000, 0.760000<=fast2<=0.800000; -0.800000<=fast1<=0.840000, 0.800000<=fast2<=0.840000; -0.800000<=fast1<=0.840000, 0.840000<=fast2<=0.880000; -0.800000<=fast1<=0.840000, 0.880000<=fast2<=0.920000; -0.800000<=fast1<=0.840000, 0.920000<=fast2<=0.960000; -0.800000<=fast1<=0.840000, 0.960000<=fast2<=0.999990; -0.840000<=fast1<=0.880000, 0.000010<=fast2<=0.040000; -0.840000<=fast1<=0.880000, 0.040000<=fast2<=0.080000; -0.840000<=fast1<=0.880000, 0.080000<=fast2<=0.120000; -0.840000<=fast1<=0.880000, 0.120000<=fast2<=0.160000; -0.840000<=fast1<=0.880000, 0.160000<=fast2<=0.200000; -0.840000<=fast1<=0.880000, 0.200000<=fast2<=0.240000; -0.840000<=fast1<=0.880000, 0.240000<=fast2<=0.280000; -0.840000<=fast1<=0.880000, 0.280000<=fast2<=0.320000; -0.840000<=fast1<=0.880000, 0.320000<=fast2<=0.360000; -0.840000<=fast1<=0.880000, 0.360000<=fast2<=0.400000; -0.840000<=fast1<=0.880000, 0.400000<=fast2<=0.440000; -0.840000<=fast1<=0.880000, 0.440000<=fast2<=0.480000; -0.840000<=fast1<=0.880000, 0.480000<=fast2<=0.520000; -0.840000<=fast1<=0.880000, 0.520000<=fast2<=0.560000; -0.840000<=fast1<=0.880000, 0.560000<=fast2<=0.600000; -0.840000<=fast1<=0.880000, 0.600000<=fast2<=0.640000; -0.840000<=fast1<=0.880000, 0.640000<=fast2<=0.680000; -0.840000<=fast1<=0.880000, 0.680000<=fast2<=0.720000; -0.840000<=fast1<=0.880000, 0.720000<=fast2<=0.760000; -0.840000<=fast1<=0.880000, 0.760000<=fast2<=0.800000; -0.840000<=fast1<=0.880000, 0.800000<=fast2<=0.840000; -0.840000<=fast1<=0.880000, 0.840000<=fast2<=0.880000; -0.840000<=fast1<=0.880000, 0.880000<=fast2<=0.920000; -0.840000<=fast1<=0.880000, 0.920000<=fast2<=0.960000; -0.840000<=fast1<=0.880000, 0.960000<=fast2<=0.999990; -0.880000<=fast1<=0.920000, 0.000010<=fast2<=0.040000; -0.880000<=fast1<=0.920000, 0.040000<=fast2<=0.080000; -0.880000<=fast1<=0.920000, 0.080000<=fast2<=0.120000; -0.880000<=fast1<=0.920000, 0.120000<=fast2<=0.160000; -0.880000<=fast1<=0.920000, 0.160000<=fast2<=0.200000; -0.880000<=fast1<=0.920000, 0.200000<=fast2<=0.240000; -0.880000<=fast1<=0.920000, 0.240000<=fast2<=0.280000; -0.880000<=fast1<=0.920000, 0.280000<=fast2<=0.320000; -0.880000<=fast1<=0.920000, 0.320000<=fast2<=0.360000; -0.880000<=fast1<=0.920000, 0.360000<=fast2<=0.400000; -0.880000<=fast1<=0.920000, 0.400000<=fast2<=0.440000; -0.880000<=fast1<=0.920000, 0.440000<=fast2<=0.480000; -0.880000<=fast1<=0.920000, 0.480000<=fast2<=0.520000; -0.880000<=fast1<=0.920000, 0.520000<=fast2<=0.560000; -0.880000<=fast1<=0.920000, 0.560000<=fast2<=0.600000; -0.880000<=fast1<=0.920000, 0.600000<=fast2<=0.640000; -0.880000<=fast1<=0.920000, 0.640000<=fast2<=0.680000; -0.880000<=fast1<=0.920000, 0.680000<=fast2<=0.720000; -0.880000<=fast1<=0.920000, 0.720000<=fast2<=0.760000; -0.880000<=fast1<=0.920000, 0.760000<=fast2<=0.800000; -0.880000<=fast1<=0.920000, 0.800000<=fast2<=0.840000; -0.880000<=fast1<=0.920000, 0.840000<=fast2<=0.880000; -0.880000<=fast1<=0.920000, 0.880000<=fast2<=0.920000; -0.880000<=fast1<=0.920000, 0.920000<=fast2<=0.960000; -0.880000<=fast1<=0.920000, 0.960000<=fast2<=0.999990; -0.920000<=fast1<=0.960000, 0.000010<=fast2<=0.040000; -0.920000<=fast1<=0.960000, 0.040000<=fast2<=0.080000; -0.920000<=fast1<=0.960000, 0.080000<=fast2<=0.120000; -0.920000<=fast1<=0.960000, 0.120000<=fast2<=0.160000; -0.920000<=fast1<=0.960000, 0.160000<=fast2<=0.200000; -0.920000<=fast1<=0.960000, 0.200000<=fast2<=0.240000; -0.920000<=fast1<=0.960000, 0.240000<=fast2<=0.280000; -0.920000<=fast1<=0.960000, 0.280000<=fast2<=0.320000; -0.920000<=fast1<=0.960000, 0.320000<=fast2<=0.360000; -0.920000<=fast1<=0.960000, 0.360000<=fast2<=0.400000; -0.920000<=fast1<=0.960000, 0.400000<=fast2<=0.440000; -0.920000<=fast1<=0.960000, 0.440000<=fast2<=0.480000; -0.920000<=fast1<=0.960000, 0.480000<=fast2<=0.520000; -0.920000<=fast1<=0.960000, 0.520000<=fast2<=0.560000; -0.920000<=fast1<=0.960000, 0.560000<=fast2<=0.600000; -0.920000<=fast1<=0.960000, 0.600000<=fast2<=0.640000; -0.920000<=fast1<=0.960000, 0.640000<=fast2<=0.680000; -0.920000<=fast1<=0.960000, 0.680000<=fast2<=0.720000; -0.920000<=fast1<=0.960000, 0.720000<=fast2<=0.760000; -0.920000<=fast1<=0.960000, 0.760000<=fast2<=0.800000; -0.920000<=fast1<=0.960000, 0.800000<=fast2<=0.840000; -0.920000<=fast1<=0.960000, 0.840000<=fast2<=0.880000; -0.920000<=fast1<=0.960000, 0.880000<=fast2<=0.920000; -0.920000<=fast1<=0.960000, 0.920000<=fast2<=0.960000; -0.920000<=fast1<=0.960000, 0.960000<=fast2<=0.999990; -0.960000<=fast1<=0.999990, 0.000010<=fast2<=0.040000; -0.960000<=fast1<=0.999990, 0.040000<=fast2<=0.080000; -0.960000<=fast1<=0.999990, 0.080000<=fast2<=0.120000; -0.960000<=fast1<=0.999990, 0.120000<=fast2<=0.160000; -0.960000<=fast1<=0.999990, 0.160000<=fast2<=0.200000; -0.960000<=fast1<=0.999990, 0.200000<=fast2<=0.240000; -0.960000<=fast1<=0.999990, 0.240000<=fast2<=0.280000; -0.960000<=fast1<=0.999990, 0.280000<=fast2<=0.320000; -0.960000<=fast1<=0.999990, 0.320000<=fast2<=0.360000; -0.960000<=fast1<=0.999990, 0.360000<=fast2<=0.400000; -0.960000<=fast1<=0.999990, 0.400000<=fast2<=0.440000; -0.960000<=fast1<=0.999990, 0.440000<=fast2<=0.480000; -0.960000<=fast1<=0.999990, 0.480000<=fast2<=0.520000; -0.960000<=fast1<=0.999990, 0.520000<=fast2<=0.560000; -0.960000<=fast1<=0.999990, 0.560000<=fast2<=0.600000; -0.960000<=fast1<=0.999990, 0.600000<=fast2<=0.640000; -0.960000<=fast1<=0.999990, 0.640000<=fast2<=0.680000; -0.960000<=fast1<=0.999990, 0.680000<=fast2<=0.720000; -0.960000<=fast1<=0.999990, 0.720000<=fast2<=0.760000; -0.960000<=fast1<=0.999990, 0.760000<=fast2<=0.800000; -0.960000<=fast1<=0.999990, 0.800000<=fast2<=0.840000; -0.960000<=fast1<=0.999990, 0.840000<=fast2<=0.880000; -0.960000<=fast1<=0.999990, 0.880000<=fast2<=0.920000; -0.960000<=fast1<=0.999990, 0.920000<=fast2<=0.960000; -0.960000<=fast1<=0.999990, 0.960000<=fast2<=0.999990; diff --git a/examples/pmdp/firewire/firewire_space.txt b/examples/pmdp/firewire/firewire_space.txt deleted file mode 100644 index 189ca282f..000000000 --- a/examples/pmdp/firewire/firewire_space.txt +++ /dev/null @@ -1,2 +0,0 @@ -0.000010<=fast1<=0.999990, 0.000010<=fast2<=0.999990; - diff --git a/examples/pmdp/janitor/janitor.pm b/examples/pmdp/janitor/janitor.pm deleted file mode 100644 index 1005d3e32..000000000 --- a/examples/pmdp/janitor/janitor.pm +++ /dev/null @@ -1,124 +0,0 @@ -// GRID WORLD MODEL OF ROBOT AND JANITOR -// Hakan Younes/gxn/dxp 04/05/04 -// Variant by Sebastian Junges, RWTH Aachen University -// As described in -// Junges, Jansen, Dehnert, Topcu, Katoen: -// Safety Constrained Reinforcement Learning -// Proc. of TACAS’16 - -mdp - -// PARAMETERS: Probability that the janitor moves North, South, East or West -const double jProbN; -const double jProbE; -const double jProbS = 1 - jProbN; -const double jProbW = 1 - jProbE; - -// CONSTANTS -const int xSize = 6; // size of the grid -const int ySize = 6; -const int jXmin = 1; // janitor area -const int jXmax = 6; -const int jYmin = 1; -const int jYmax = 6; -const int maxSteps = 15; - -formula T = (xR = xSize & yR = ySize); -formula C = (xR = xJ & yR = yJ); - -module counter - count : [0..maxSteps] init 0; - [forward] (count 1:(count'=count+1); - [turnLeft] (count 1:(count'=count+1); - [turnRight] (count 1:(count'=count+1); - [forward] (count 1:(count'=maxSteps); - [turnLeft] (count 1:(count'=maxSteps); - [turnRight] (count 1:(count'=maxSteps); - [forward] (count=maxSteps) -> 1:true; - [turnLeft] (count=maxSteps) -> 1:true; - [turnRight] (count=maxSteps) -> 1:true; -endmodule - -module robot - xR : [1..xSize] init 1; - yR : [1..ySize] init 1; - d: [0..3] init 0; - - [forward] (d=0 & yR < ySize & !T) -> 1:(yR'=yR+1); - [forward] (d=2 & yR > 1 & !T) -> 1:(yR'=yR-1); - [forward] (d=1 & xR < xSize & !T) -> 1:(xR'=xR+1); - [forward] (d=3 & xR > 1 & !T) -> 1:(xR'=xR-1); - //[backward] (d=0 & yR > 1 & !T) -> 1:(yR'=yR-1); - //[backward] (d=2 & yR < ySize & !T) -> 1:(yR'=yR+1); - //[backward] (d=1 & xR > 1 & !T) -> 1:(xR'=xR-1); - //[backward] (d=3 & xR < xSize & !T) -> 1:(xR'=xR+1); - [turnLeft] (d>0 & !T) -> 1:(d'=d-1); - [turnLeft] (d=0 & !T) -> 1:(d'=3); - [turnRight] (d=3 & !T) -> 1:(d'=0); - [turnRight] (d<3 & !T) -> 1:(d'=d+1); - // [turnLeft] (d=1) -> 1:(d’=0); - // [turnRight] (d=0) -> 1:(d’=1); - [done] T -> 1:true; -endmodule - -// The Janitor moves probabilistically within the grid. -module janitor - xJ : [jXmin..jXmax] init jXmax; // x position of janitor - yJ : [jYmin..jYmax] init jYmin; // y position of janitor - - [forward] (yJ=jYmax & xJ=jXmax) -> 0.5:(yJ'=yJ-1) + 0.5:(xJ'=xJ-1); - [forward] (yJ=jYmax & xJ=jXmin) -> 0.5:(yJ'=yJ-1) + 0.5:(xJ'=xJ+1); - [forward] (yJ=jYmax & xJ jXmin) -> 0.3333:(yJ'=yJ-1) + 0.6667*jProbW:(xJ'=xJ-1) + 0.6667*jProbE:(xJ'=xJ+1); - [forward] (yJ=jYmin & xJ=jXmax) -> 0.5:(yJ'=yJ+1) + 0.5:(xJ'=xJ-1); - [forward] (yJ=jYmin & xJ=jXmin) -> 0.5:(yJ'=yJ+1) + 0.5:(xJ'=xJ+1); - [forward] (yJ=jYmin & xJjXmin) -> 0.3333:(yJ'=yJ+1) + 0.6667*jProbW:(xJ'=xJ-1) + 0.6667*jProbE:(xJ'=xJ+1); - [forward] (yJjYmin & xJ=jXmax) -> 0.6667*jProbN:(yJ'=yJ+1) + 0.6667*jProbS:(yJ'=yJ-1) + 0.3333:(xJ'=xJ-1); - [forward] (yJjYmin & xJ=jXmin) -> 0.6667*jProbN:(yJ'=yJ+1) + 0.6667*jProbS:(yJ'=yJ-1) + 0.3333:(xJ'=xJ+1); - [forward] (yJjYmin & xJjXmin) -> 0.5*jProbS:(yJ'=yJ-1) + 0.5*jProbN:(yJ'=yJ+1) + 0.5*jProbW:(xJ'=xJ-1) + 0.5*jProbE:(xJ'=xJ+1); - - - [turnLeft] (yJ=jYmax & xJ=jXmax) -> 0.5:(yJ'=yJ-1) + 0.5:(xJ'=xJ-1); - [turnLeft] (yJ=jYmax & xJ=jXmin) -> 0.5:(yJ'=yJ-1) + 0.5:(xJ'=xJ+1); - [turnLeft] (yJ=jYmax & xJ jXmin) -> 0.3333:(yJ'=yJ-1) + 0.6667*jProbW:(xJ'=xJ-1) + 0.6667*jProbE:(xJ'=xJ+1); - [turnLeft] (yJ=jYmin & xJ=jXmax) -> 0.5:(yJ'=yJ+1) + 0.5:(xJ'=xJ-1); - [turnLeft] (yJ=jYmin & xJ=jXmin) -> 0.5:(yJ'=yJ+1) + 0.5:(xJ'=xJ+1); - [turnLeft] (yJ=jYmin & xJjXmin) -> 0.3333:(yJ'=yJ+1) + 0.6667*jProbW:(xJ'=xJ-1) + 0.6667*jProbE:(xJ'=xJ+1); - [turnLeft] (yJjYmin & xJ=jXmax) -> 0.6667*jProbN:(yJ'=yJ+1) + 0.6667*jProbS:(yJ'=yJ-1) + 0.3333:(xJ'=xJ-1); - [turnLeft] (yJjYmin & xJ=jXmin) -> 0.6667*jProbN:(yJ'=yJ+1) + 0.6667*jProbS:(yJ'=yJ-1) + 0.3333:(xJ'=xJ+1); - [turnLeft] (yJjYmin & xJjXmin) -> 0.5*jProbS:(yJ'=yJ-1) + 0.5*jProbN:(yJ'=yJ+1) + 0.5*jProbW:(xJ'=xJ-1) + 0.5*jProbE:(xJ'=xJ+1); - - [turnRight] (yJ=jYmax & xJ=jXmax) -> 0.5:(yJ'=yJ-1) + 0.5:(xJ'=xJ-1); - [turnRight] (yJ=jYmax & xJ=jXmin) -> 0.5:(yJ'=yJ-1) + 0.5:(xJ'=xJ+1); - [turnRight] (yJ=jYmax & xJ jXmin) -> 0.3333:(yJ'=yJ-1) + 0.6667*jProbW:(xJ'=xJ-1) + 0.6667*jProbE:(xJ'=xJ+1); - [turnRight] (yJ=jYmin & xJ=jXmax) -> 0.5:(yJ'=yJ+1) + 0.5:(xJ'=xJ-1); - [turnRight] (yJ=jYmin & xJ=jXmin) -> 0.5:(yJ'=yJ+1) + 0.5:(xJ'=xJ+1); - [turnRight] (yJ=jYmin & xJjXmin) -> 0.3333:(yJ'=yJ+1) + 0.6667*jProbW:(xJ'=xJ-1) + 0.6667*jProbE:(xJ'=xJ+1); - [turnRight] (yJjYmin & xJ=jXmax) -> 0.6667*jProbN:(yJ'=yJ+1) + 0.6667*jProbS:(yJ'=yJ-1) + 0.3333:(xJ'=xJ-1); - [turnRight] (yJjYmin & xJ=jXmin) -> 0.6667*jProbN:(yJ'=yJ+1) + 0.6667*jProbS:(yJ'=yJ-1) + 0.3333:(xJ'=xJ+1); - [turnRight] (yJjYmin & xJjXmin) -> 0.5*jProbS:(yJ'=yJ-1) + 0.5*jProbN:(yJ'=yJ+1) + 0.5*jProbW:(xJ'=xJ-1) + 0.5*jProbE:(xJ'=xJ+1); - -endmodule - -rewards "mvbased" - [forward] true: 5; - //[backward] true: 10; - [turnLeft] true: 25; - [turnRight] true: 28; -endrewards - -rewards "mvbased_upper" - [forward] true: 30; - //[backward] true: 35; - [turnLeft] true: 40; - [turnRight] true: 40; -endrewards - -rewards "mvbased_lower" - [forward] true: 4; - //[backward] true: 4; - [turnLeft] true: 8; - [turnRight] true: 8; -endrewards - -label "Target" = T & (count 1:(xLoc'=xLoc+1) & (unreported' = 0) & (hasSendNow'=false); - [up] xLoc < Xsize & !T & !hasSendNow -> 1:(xLoc'=xLoc+1) & (unreported'=min(unreported+1, B)); - [right] yLoc < Ysize & !T & hasSendNow -> 1:(yLoc'=yLoc+1) & (unreported' = 0)& (hasSendNow'=false); - [right] yLoc < Ysize & !T & !hasSendNow -> 1:(yLoc'=yLoc+1) & (unreported'=min(unreported+1,B)); - [sendL] !hasSendNow & !T & tries < MAXTRIES -> (pLMin + pLDiff * xLoc/Xsize):(hasSendNow'=true) & (tries'=0) + (1 - pLMin - pLDiff * xLoc/Xsize): (tries'=tries+1); - [sendH] !hasSendNow & !T & tries < MAXTRIES -> (pHMin + pHDiff * yLoc/Ysize):(hasSendNow'=true) & (tries'=0) + (1 - pHMin - pHDiff * yLoc/Ysize): (tries'=tries+1); - [done] T -> 1:true; -endmodule - -rewards "sendbased" - [up] true: 0.03; - [right] true: 0.03; - [sendL] true: max(10, min(11 + xLoc - yLoc, 20)); - [sendH] true: min(13 + xLoc + yLoc, 24); -endrewards - -rewards "sendbased_lower" - [up] true: 0.03; - [right] true: 0.03; - [sendL] true: 10; - [sendH] true: 12; -endrewards - -rewards "sendbased_upper" - [up] true: 0.03; - [right] true: 0.03; - [sendL] true: 20; - [sendH] true: 24; -endrewards - -label "Target" = T; -label "Crash" = unreported=B; diff --git a/examples/pmdp/reporter2/reporter2.prctl b/examples/pmdp/reporter2/reporter2.prctl deleted file mode 100644 index 959df1e88..000000000 --- a/examples/pmdp/reporter2/reporter2.prctl +++ /dev/null @@ -1 +0,0 @@ -P>0.3[F "Crash" ] diff --git a/examples/pmdp/reporter2/reporter2_25_25_5_5.pm b/examples/pmdp/reporter2/reporter2_25_25_5_5.pm deleted file mode 100644 index e8ec99525..000000000 --- a/examples/pmdp/reporter2/reporter2_25_25_5_5.pm +++ /dev/null @@ -1,73 +0,0 @@ -// GRID WORLD MODEL OF A SEMIAUTONOMOUS EXPLORING ROBOT -// Sebastian Junges, RWTH Aachen University -// As described in -// Junges, Jansen, Dehnert, Topcu, Katoen: -// Safety Constrained Reinforcement Learning -// Proc. of TACAS’16 - -mdp - -//PARAMETERS -//The difference of the reliability of the channels between the worst and at the best position -const double pLDiff=0.1; -const double pHDiff=0.1; -//Scaling factor for the minimum reliability of the channels -const double pL;//=8/9; -const double pH;//=1; - -//CONSTANTS -//The minimum reliablities -const double pLMin=pL*(1-pLDiff); -const double pHMin=pH*(1-pHDiff); - -// Grid size -const int Xsize = 25; -const int Ysize = 25; -// Number of tries before an error -const int MAXTRIES = 5; -// Ball within the robot has to move. -const int B=5; - - -formula T = (xLoc = Xsize & yLoc = Ysize); - - -module robot - xLoc : [1..Ysize] init 1; - yLoc : [1..Xsize] init 1; - unreported : [0..B] init 0; - hasSendNow : bool init false; - tries : [0..MAXTRIES] init 0; - - [up] xLoc < Xsize & !T & hasSendNow -> 1:(xLoc'=xLoc+1) & (unreported' = 0) & (hasSendNow'=false); - [up] xLoc < Xsize & !T & !hasSendNow -> 1:(xLoc'=xLoc+1) & (unreported'=min(unreported+1, B)); - [right] yLoc < Ysize & !T & hasSendNow -> 1:(yLoc'=yLoc+1) & (unreported' = 0)& (hasSendNow'=false); - [right] yLoc < Ysize & !T & !hasSendNow -> 1:(yLoc'=yLoc+1) & (unreported'=min(unreported+1,B)); - [sendL] !hasSendNow & !T & tries < MAXTRIES -> (pLMin + pLDiff * xLoc/Xsize):(hasSendNow'=true) & (tries'=0) + (1 - pLMin - pLDiff * xLoc/Xsize): (tries'=tries+1); - [sendH] !hasSendNow & !T & tries < MAXTRIES -> (pHMin + pHDiff * yLoc/Ysize):(hasSendNow'=true) & (tries'=0) + (1 - pHMin - pHDiff * yLoc/Ysize): (tries'=tries+1); - [done] T -> 1:true; -endmodule - -rewards "sendbased" - [up] true: 0.03; - [right] true: 0.03; - [sendL] true: max(10, min(11 + xLoc - yLoc, 20)); - [sendH] true: min(13 + xLoc + yLoc, 24); -endrewards - -rewards "sendbased_lower" - [up] true: 0.03; - [right] true: 0.03; - [sendL] true: 10; - [sendH] true: 12; -endrewards - -rewards "sendbased_upper" - [up] true: 0.03; - [right] true: 0.03; - [sendL] true: 20; - [sendH] true: 24; -endrewards - -label "Target" = T; -label "Crash" = unreported=B; diff --git a/examples/pmdp/reporter2/reporter2_6_6_2_2.pm b/examples/pmdp/reporter2/reporter2_6_6_2_2.pm deleted file mode 100644 index 68269cfbb..000000000 --- a/examples/pmdp/reporter2/reporter2_6_6_2_2.pm +++ /dev/null @@ -1,73 +0,0 @@ -// GRID WORLD MODEL OF A SEMIAUTONOMOUS EXPLORING ROBOT -// Sebastian Junges, RWTH Aachen University -// As described in -// Junges, Jansen, Dehnert, Topcu, Katoen: -// Safety Constrained Reinforcement Learning -// Proc. of TACAS’16 - -mdp - -//PARAMETERS -//The difference of the reliability of the channels between the worst and at the best position -const double pLDiff=0.1; -const double pHDiff=0.1; -//Scaling factor for the minimum reliability of the channels -const double pL;//=8/9; -const double pH;//=1; - -//CONSTANTS -//The minimum reliablities -const double pLMin=pL*(1-pLDiff); -const double pHMin=pH*(1-pHDiff); - -// Grid size -const int Xsize = 6; -const int Ysize = 6; -// Number of tries before an error -const int MAXTRIES = 2; -// Ball within the robot has to move. -const int B=2; - - -formula T = (xLoc = Xsize & yLoc = Ysize); - - -module robot - xLoc : [1..Ysize] init 1; - yLoc : [1..Xsize] init 1; - unreported : [0..B] init 0; - hasSendNow : bool init false; - tries : [0..MAXTRIES] init 0; - - [up] xLoc < Xsize & !T & hasSendNow -> 1:(xLoc'=xLoc+1) & (unreported' = 0) & (hasSendNow'=false); - [up] xLoc < Xsize & !T & !hasSendNow -> 1:(xLoc'=xLoc+1) & (unreported'=min(unreported+1, B)); - [right] yLoc < Ysize & !T & hasSendNow -> 1:(yLoc'=yLoc+1) & (unreported' = 0)& (hasSendNow'=false); - [right] yLoc < Ysize & !T & !hasSendNow -> 1:(yLoc'=yLoc+1) & (unreported'=min(unreported+1,B)); - [sendL] !hasSendNow & !T & tries < MAXTRIES -> (pLMin + pLDiff * xLoc/Xsize):(hasSendNow'=true) & (tries'=0) + (1 - pLMin - pLDiff * xLoc/Xsize): (tries'=tries+1); - [sendH] !hasSendNow & !T & tries < MAXTRIES -> (pHMin + pHDiff * yLoc/Ysize):(hasSendNow'=true) & (tries'=0) + (1 - pHMin - pHDiff * yLoc/Ysize): (tries'=tries+1); - [done] T -> 1:true; -endmodule - -rewards "sendbased" - [up] true: 0.03; - [right] true: 0.03; - [sendL] true: max(10, min(11 + xLoc - yLoc, 20)); - [sendH] true: min(13 + xLoc + yLoc, 24); -endrewards - -rewards "sendbased_lower" - [up] true: 0.03; - [right] true: 0.03; - [sendL] true: 10; - [sendH] true: 12; -endrewards - -rewards "sendbased_upper" - [up] true: 0.03; - [right] true: 0.03; - [sendL] true: 20; - [sendH] true: 24; -endrewards - -label "Target" = T; -label "Crash" = unreported=B; diff --git a/examples/pmdp/reporter2/reporter2_regions.txt b/examples/pmdp/reporter2/reporter2_regions.txt deleted file mode 100644 index 8e3b7580c..000000000 --- a/examples/pmdp/reporter2/reporter2_regions.txt +++ /dev/null @@ -1,625 +0,0 @@ -0.000010<=pL<=0.040000, 0.000010<=pH<=0.040000; -0.000010<=pL<=0.040000, 0.040000<=pH<=0.080000; -0.000010<=pL<=0.040000, 0.080000<=pH<=0.120000; -0.000010<=pL<=0.040000, 0.120000<=pH<=0.160000; -0.000010<=pL<=0.040000, 0.160000<=pH<=0.200000; -0.000010<=pL<=0.040000, 0.200000<=pH<=0.240000; -0.000010<=pL<=0.040000, 0.240000<=pH<=0.280000; -0.000010<=pL<=0.040000, 0.280000<=pH<=0.320000; -0.000010<=pL<=0.040000, 0.320000<=pH<=0.360000; -0.000010<=pL<=0.040000, 0.360000<=pH<=0.400000; -0.000010<=pL<=0.040000, 0.400000<=pH<=0.440000; -0.000010<=pL<=0.040000, 0.440000<=pH<=0.480000; -0.000010<=pL<=0.040000, 0.480000<=pH<=0.520000; -0.000010<=pL<=0.040000, 0.520000<=pH<=0.560000; -0.000010<=pL<=0.040000, 0.560000<=pH<=0.600000; -0.000010<=pL<=0.040000, 0.600000<=pH<=0.640000; -0.000010<=pL<=0.040000, 0.640000<=pH<=0.680000; -0.000010<=pL<=0.040000, 0.680000<=pH<=0.720000; -0.000010<=pL<=0.040000, 0.720000<=pH<=0.760000; -0.000010<=pL<=0.040000, 0.760000<=pH<=0.800000; -0.000010<=pL<=0.040000, 0.800000<=pH<=0.840000; -0.000010<=pL<=0.040000, 0.840000<=pH<=0.880000; -0.000010<=pL<=0.040000, 0.880000<=pH<=0.920000; -0.000010<=pL<=0.040000, 0.920000<=pH<=0.960000; -0.000010<=pL<=0.040000, 0.960000<=pH<=0.999990; -0.040000<=pL<=0.080000, 0.000010<=pH<=0.040000; -0.040000<=pL<=0.080000, 0.040000<=pH<=0.080000; -0.040000<=pL<=0.080000, 0.080000<=pH<=0.120000; -0.040000<=pL<=0.080000, 0.120000<=pH<=0.160000; -0.040000<=pL<=0.080000, 0.160000<=pH<=0.200000; -0.040000<=pL<=0.080000, 0.200000<=pH<=0.240000; -0.040000<=pL<=0.080000, 0.240000<=pH<=0.280000; -0.040000<=pL<=0.080000, 0.280000<=pH<=0.320000; -0.040000<=pL<=0.080000, 0.320000<=pH<=0.360000; -0.040000<=pL<=0.080000, 0.360000<=pH<=0.400000; -0.040000<=pL<=0.080000, 0.400000<=pH<=0.440000; -0.040000<=pL<=0.080000, 0.440000<=pH<=0.480000; -0.040000<=pL<=0.080000, 0.480000<=pH<=0.520000; -0.040000<=pL<=0.080000, 0.520000<=pH<=0.560000; -0.040000<=pL<=0.080000, 0.560000<=pH<=0.600000; -0.040000<=pL<=0.080000, 0.600000<=pH<=0.640000; -0.040000<=pL<=0.080000, 0.640000<=pH<=0.680000; -0.040000<=pL<=0.080000, 0.680000<=pH<=0.720000; -0.040000<=pL<=0.080000, 0.720000<=pH<=0.760000; -0.040000<=pL<=0.080000, 0.760000<=pH<=0.800000; -0.040000<=pL<=0.080000, 0.800000<=pH<=0.840000; -0.040000<=pL<=0.080000, 0.840000<=pH<=0.880000; -0.040000<=pL<=0.080000, 0.880000<=pH<=0.920000; -0.040000<=pL<=0.080000, 0.920000<=pH<=0.960000; -0.040000<=pL<=0.080000, 0.960000<=pH<=0.999990; -0.080000<=pL<=0.120000, 0.000010<=pH<=0.040000; -0.080000<=pL<=0.120000, 0.040000<=pH<=0.080000; -0.080000<=pL<=0.120000, 0.080000<=pH<=0.120000; -0.080000<=pL<=0.120000, 0.120000<=pH<=0.160000; -0.080000<=pL<=0.120000, 0.160000<=pH<=0.200000; -0.080000<=pL<=0.120000, 0.200000<=pH<=0.240000; -0.080000<=pL<=0.120000, 0.240000<=pH<=0.280000; -0.080000<=pL<=0.120000, 0.280000<=pH<=0.320000; -0.080000<=pL<=0.120000, 0.320000<=pH<=0.360000; -0.080000<=pL<=0.120000, 0.360000<=pH<=0.400000; -0.080000<=pL<=0.120000, 0.400000<=pH<=0.440000; -0.080000<=pL<=0.120000, 0.440000<=pH<=0.480000; -0.080000<=pL<=0.120000, 0.480000<=pH<=0.520000; -0.080000<=pL<=0.120000, 0.520000<=pH<=0.560000; -0.080000<=pL<=0.120000, 0.560000<=pH<=0.600000; -0.080000<=pL<=0.120000, 0.600000<=pH<=0.640000; -0.080000<=pL<=0.120000, 0.640000<=pH<=0.680000; -0.080000<=pL<=0.120000, 0.680000<=pH<=0.720000; -0.080000<=pL<=0.120000, 0.720000<=pH<=0.760000; -0.080000<=pL<=0.120000, 0.760000<=pH<=0.800000; -0.080000<=pL<=0.120000, 0.800000<=pH<=0.840000; -0.080000<=pL<=0.120000, 0.840000<=pH<=0.880000; -0.080000<=pL<=0.120000, 0.880000<=pH<=0.920000; -0.080000<=pL<=0.120000, 0.920000<=pH<=0.960000; -0.080000<=pL<=0.120000, 0.960000<=pH<=0.999990; -0.120000<=pL<=0.160000, 0.000010<=pH<=0.040000; -0.120000<=pL<=0.160000, 0.040000<=pH<=0.080000; -0.120000<=pL<=0.160000, 0.080000<=pH<=0.120000; -0.120000<=pL<=0.160000, 0.120000<=pH<=0.160000; -0.120000<=pL<=0.160000, 0.160000<=pH<=0.200000; -0.120000<=pL<=0.160000, 0.200000<=pH<=0.240000; -0.120000<=pL<=0.160000, 0.240000<=pH<=0.280000; -0.120000<=pL<=0.160000, 0.280000<=pH<=0.320000; -0.120000<=pL<=0.160000, 0.320000<=pH<=0.360000; -0.120000<=pL<=0.160000, 0.360000<=pH<=0.400000; -0.120000<=pL<=0.160000, 0.400000<=pH<=0.440000; -0.120000<=pL<=0.160000, 0.440000<=pH<=0.480000; -0.120000<=pL<=0.160000, 0.480000<=pH<=0.520000; -0.120000<=pL<=0.160000, 0.520000<=pH<=0.560000; -0.120000<=pL<=0.160000, 0.560000<=pH<=0.600000; -0.120000<=pL<=0.160000, 0.600000<=pH<=0.640000; -0.120000<=pL<=0.160000, 0.640000<=pH<=0.680000; -0.120000<=pL<=0.160000, 0.680000<=pH<=0.720000; -0.120000<=pL<=0.160000, 0.720000<=pH<=0.760000; -0.120000<=pL<=0.160000, 0.760000<=pH<=0.800000; -0.120000<=pL<=0.160000, 0.800000<=pH<=0.840000; -0.120000<=pL<=0.160000, 0.840000<=pH<=0.880000; -0.120000<=pL<=0.160000, 0.880000<=pH<=0.920000; -0.120000<=pL<=0.160000, 0.920000<=pH<=0.960000; -0.120000<=pL<=0.160000, 0.960000<=pH<=0.999990; -0.160000<=pL<=0.200000, 0.000010<=pH<=0.040000; -0.160000<=pL<=0.200000, 0.040000<=pH<=0.080000; -0.160000<=pL<=0.200000, 0.080000<=pH<=0.120000; -0.160000<=pL<=0.200000, 0.120000<=pH<=0.160000; -0.160000<=pL<=0.200000, 0.160000<=pH<=0.200000; -0.160000<=pL<=0.200000, 0.200000<=pH<=0.240000; -0.160000<=pL<=0.200000, 0.240000<=pH<=0.280000; -0.160000<=pL<=0.200000, 0.280000<=pH<=0.320000; -0.160000<=pL<=0.200000, 0.320000<=pH<=0.360000; -0.160000<=pL<=0.200000, 0.360000<=pH<=0.400000; -0.160000<=pL<=0.200000, 0.400000<=pH<=0.440000; -0.160000<=pL<=0.200000, 0.440000<=pH<=0.480000; -0.160000<=pL<=0.200000, 0.480000<=pH<=0.520000; -0.160000<=pL<=0.200000, 0.520000<=pH<=0.560000; -0.160000<=pL<=0.200000, 0.560000<=pH<=0.600000; -0.160000<=pL<=0.200000, 0.600000<=pH<=0.640000; -0.160000<=pL<=0.200000, 0.640000<=pH<=0.680000; -0.160000<=pL<=0.200000, 0.680000<=pH<=0.720000; -0.160000<=pL<=0.200000, 0.720000<=pH<=0.760000; -0.160000<=pL<=0.200000, 0.760000<=pH<=0.800000; -0.160000<=pL<=0.200000, 0.800000<=pH<=0.840000; -0.160000<=pL<=0.200000, 0.840000<=pH<=0.880000; -0.160000<=pL<=0.200000, 0.880000<=pH<=0.920000; -0.160000<=pL<=0.200000, 0.920000<=pH<=0.960000; -0.160000<=pL<=0.200000, 0.960000<=pH<=0.999990; -0.200000<=pL<=0.240000, 0.000010<=pH<=0.040000; -0.200000<=pL<=0.240000, 0.040000<=pH<=0.080000; -0.200000<=pL<=0.240000, 0.080000<=pH<=0.120000; -0.200000<=pL<=0.240000, 0.120000<=pH<=0.160000; -0.200000<=pL<=0.240000, 0.160000<=pH<=0.200000; -0.200000<=pL<=0.240000, 0.200000<=pH<=0.240000; -0.200000<=pL<=0.240000, 0.240000<=pH<=0.280000; -0.200000<=pL<=0.240000, 0.280000<=pH<=0.320000; -0.200000<=pL<=0.240000, 0.320000<=pH<=0.360000; -0.200000<=pL<=0.240000, 0.360000<=pH<=0.400000; -0.200000<=pL<=0.240000, 0.400000<=pH<=0.440000; -0.200000<=pL<=0.240000, 0.440000<=pH<=0.480000; -0.200000<=pL<=0.240000, 0.480000<=pH<=0.520000; -0.200000<=pL<=0.240000, 0.520000<=pH<=0.560000; -0.200000<=pL<=0.240000, 0.560000<=pH<=0.600000; -0.200000<=pL<=0.240000, 0.600000<=pH<=0.640000; -0.200000<=pL<=0.240000, 0.640000<=pH<=0.680000; -0.200000<=pL<=0.240000, 0.680000<=pH<=0.720000; -0.200000<=pL<=0.240000, 0.720000<=pH<=0.760000; -0.200000<=pL<=0.240000, 0.760000<=pH<=0.800000; -0.200000<=pL<=0.240000, 0.800000<=pH<=0.840000; -0.200000<=pL<=0.240000, 0.840000<=pH<=0.880000; -0.200000<=pL<=0.240000, 0.880000<=pH<=0.920000; -0.200000<=pL<=0.240000, 0.920000<=pH<=0.960000; -0.200000<=pL<=0.240000, 0.960000<=pH<=0.999990; -0.240000<=pL<=0.280000, 0.000010<=pH<=0.040000; -0.240000<=pL<=0.280000, 0.040000<=pH<=0.080000; -0.240000<=pL<=0.280000, 0.080000<=pH<=0.120000; -0.240000<=pL<=0.280000, 0.120000<=pH<=0.160000; -0.240000<=pL<=0.280000, 0.160000<=pH<=0.200000; -0.240000<=pL<=0.280000, 0.200000<=pH<=0.240000; -0.240000<=pL<=0.280000, 0.240000<=pH<=0.280000; -0.240000<=pL<=0.280000, 0.280000<=pH<=0.320000; -0.240000<=pL<=0.280000, 0.320000<=pH<=0.360000; -0.240000<=pL<=0.280000, 0.360000<=pH<=0.400000; -0.240000<=pL<=0.280000, 0.400000<=pH<=0.440000; -0.240000<=pL<=0.280000, 0.440000<=pH<=0.480000; -0.240000<=pL<=0.280000, 0.480000<=pH<=0.520000; -0.240000<=pL<=0.280000, 0.520000<=pH<=0.560000; -0.240000<=pL<=0.280000, 0.560000<=pH<=0.600000; -0.240000<=pL<=0.280000, 0.600000<=pH<=0.640000; -0.240000<=pL<=0.280000, 0.640000<=pH<=0.680000; -0.240000<=pL<=0.280000, 0.680000<=pH<=0.720000; -0.240000<=pL<=0.280000, 0.720000<=pH<=0.760000; -0.240000<=pL<=0.280000, 0.760000<=pH<=0.800000; -0.240000<=pL<=0.280000, 0.800000<=pH<=0.840000; -0.240000<=pL<=0.280000, 0.840000<=pH<=0.880000; -0.240000<=pL<=0.280000, 0.880000<=pH<=0.920000; -0.240000<=pL<=0.280000, 0.920000<=pH<=0.960000; -0.240000<=pL<=0.280000, 0.960000<=pH<=0.999990; -0.280000<=pL<=0.320000, 0.000010<=pH<=0.040000; -0.280000<=pL<=0.320000, 0.040000<=pH<=0.080000; -0.280000<=pL<=0.320000, 0.080000<=pH<=0.120000; -0.280000<=pL<=0.320000, 0.120000<=pH<=0.160000; -0.280000<=pL<=0.320000, 0.160000<=pH<=0.200000; -0.280000<=pL<=0.320000, 0.200000<=pH<=0.240000; -0.280000<=pL<=0.320000, 0.240000<=pH<=0.280000; -0.280000<=pL<=0.320000, 0.280000<=pH<=0.320000; -0.280000<=pL<=0.320000, 0.320000<=pH<=0.360000; -0.280000<=pL<=0.320000, 0.360000<=pH<=0.400000; -0.280000<=pL<=0.320000, 0.400000<=pH<=0.440000; -0.280000<=pL<=0.320000, 0.440000<=pH<=0.480000; -0.280000<=pL<=0.320000, 0.480000<=pH<=0.520000; -0.280000<=pL<=0.320000, 0.520000<=pH<=0.560000; -0.280000<=pL<=0.320000, 0.560000<=pH<=0.600000; -0.280000<=pL<=0.320000, 0.600000<=pH<=0.640000; -0.280000<=pL<=0.320000, 0.640000<=pH<=0.680000; -0.280000<=pL<=0.320000, 0.680000<=pH<=0.720000; -0.280000<=pL<=0.320000, 0.720000<=pH<=0.760000; -0.280000<=pL<=0.320000, 0.760000<=pH<=0.800000; -0.280000<=pL<=0.320000, 0.800000<=pH<=0.840000; -0.280000<=pL<=0.320000, 0.840000<=pH<=0.880000; -0.280000<=pL<=0.320000, 0.880000<=pH<=0.920000; -0.280000<=pL<=0.320000, 0.920000<=pH<=0.960000; -0.280000<=pL<=0.320000, 0.960000<=pH<=0.999990; -0.320000<=pL<=0.360000, 0.000010<=pH<=0.040000; -0.320000<=pL<=0.360000, 0.040000<=pH<=0.080000; -0.320000<=pL<=0.360000, 0.080000<=pH<=0.120000; -0.320000<=pL<=0.360000, 0.120000<=pH<=0.160000; -0.320000<=pL<=0.360000, 0.160000<=pH<=0.200000; -0.320000<=pL<=0.360000, 0.200000<=pH<=0.240000; -0.320000<=pL<=0.360000, 0.240000<=pH<=0.280000; -0.320000<=pL<=0.360000, 0.280000<=pH<=0.320000; -0.320000<=pL<=0.360000, 0.320000<=pH<=0.360000; -0.320000<=pL<=0.360000, 0.360000<=pH<=0.400000; -0.320000<=pL<=0.360000, 0.400000<=pH<=0.440000; -0.320000<=pL<=0.360000, 0.440000<=pH<=0.480000; -0.320000<=pL<=0.360000, 0.480000<=pH<=0.520000; -0.320000<=pL<=0.360000, 0.520000<=pH<=0.560000; -0.320000<=pL<=0.360000, 0.560000<=pH<=0.600000; -0.320000<=pL<=0.360000, 0.600000<=pH<=0.640000; -0.320000<=pL<=0.360000, 0.640000<=pH<=0.680000; -0.320000<=pL<=0.360000, 0.680000<=pH<=0.720000; -0.320000<=pL<=0.360000, 0.720000<=pH<=0.760000; -0.320000<=pL<=0.360000, 0.760000<=pH<=0.800000; -0.320000<=pL<=0.360000, 0.800000<=pH<=0.840000; -0.320000<=pL<=0.360000, 0.840000<=pH<=0.880000; -0.320000<=pL<=0.360000, 0.880000<=pH<=0.920000; -0.320000<=pL<=0.360000, 0.920000<=pH<=0.960000; -0.320000<=pL<=0.360000, 0.960000<=pH<=0.999990; -0.360000<=pL<=0.400000, 0.000010<=pH<=0.040000; -0.360000<=pL<=0.400000, 0.040000<=pH<=0.080000; -0.360000<=pL<=0.400000, 0.080000<=pH<=0.120000; -0.360000<=pL<=0.400000, 0.120000<=pH<=0.160000; -0.360000<=pL<=0.400000, 0.160000<=pH<=0.200000; -0.360000<=pL<=0.400000, 0.200000<=pH<=0.240000; -0.360000<=pL<=0.400000, 0.240000<=pH<=0.280000; -0.360000<=pL<=0.400000, 0.280000<=pH<=0.320000; -0.360000<=pL<=0.400000, 0.320000<=pH<=0.360000; -0.360000<=pL<=0.400000, 0.360000<=pH<=0.400000; -0.360000<=pL<=0.400000, 0.400000<=pH<=0.440000; -0.360000<=pL<=0.400000, 0.440000<=pH<=0.480000; -0.360000<=pL<=0.400000, 0.480000<=pH<=0.520000; -0.360000<=pL<=0.400000, 0.520000<=pH<=0.560000; -0.360000<=pL<=0.400000, 0.560000<=pH<=0.600000; -0.360000<=pL<=0.400000, 0.600000<=pH<=0.640000; -0.360000<=pL<=0.400000, 0.640000<=pH<=0.680000; -0.360000<=pL<=0.400000, 0.680000<=pH<=0.720000; -0.360000<=pL<=0.400000, 0.720000<=pH<=0.760000; -0.360000<=pL<=0.400000, 0.760000<=pH<=0.800000; -0.360000<=pL<=0.400000, 0.800000<=pH<=0.840000; -0.360000<=pL<=0.400000, 0.840000<=pH<=0.880000; -0.360000<=pL<=0.400000, 0.880000<=pH<=0.920000; -0.360000<=pL<=0.400000, 0.920000<=pH<=0.960000; -0.360000<=pL<=0.400000, 0.960000<=pH<=0.999990; -0.400000<=pL<=0.440000, 0.000010<=pH<=0.040000; -0.400000<=pL<=0.440000, 0.040000<=pH<=0.080000; -0.400000<=pL<=0.440000, 0.080000<=pH<=0.120000; -0.400000<=pL<=0.440000, 0.120000<=pH<=0.160000; -0.400000<=pL<=0.440000, 0.160000<=pH<=0.200000; -0.400000<=pL<=0.440000, 0.200000<=pH<=0.240000; -0.400000<=pL<=0.440000, 0.240000<=pH<=0.280000; -0.400000<=pL<=0.440000, 0.280000<=pH<=0.320000; -0.400000<=pL<=0.440000, 0.320000<=pH<=0.360000; -0.400000<=pL<=0.440000, 0.360000<=pH<=0.400000; -0.400000<=pL<=0.440000, 0.400000<=pH<=0.440000; -0.400000<=pL<=0.440000, 0.440000<=pH<=0.480000; -0.400000<=pL<=0.440000, 0.480000<=pH<=0.520000; -0.400000<=pL<=0.440000, 0.520000<=pH<=0.560000; -0.400000<=pL<=0.440000, 0.560000<=pH<=0.600000; -0.400000<=pL<=0.440000, 0.600000<=pH<=0.640000; -0.400000<=pL<=0.440000, 0.640000<=pH<=0.680000; -0.400000<=pL<=0.440000, 0.680000<=pH<=0.720000; -0.400000<=pL<=0.440000, 0.720000<=pH<=0.760000; -0.400000<=pL<=0.440000, 0.760000<=pH<=0.800000; -0.400000<=pL<=0.440000, 0.800000<=pH<=0.840000; -0.400000<=pL<=0.440000, 0.840000<=pH<=0.880000; -0.400000<=pL<=0.440000, 0.880000<=pH<=0.920000; -0.400000<=pL<=0.440000, 0.920000<=pH<=0.960000; -0.400000<=pL<=0.440000, 0.960000<=pH<=0.999990; -0.440000<=pL<=0.480000, 0.000010<=pH<=0.040000; -0.440000<=pL<=0.480000, 0.040000<=pH<=0.080000; -0.440000<=pL<=0.480000, 0.080000<=pH<=0.120000; -0.440000<=pL<=0.480000, 0.120000<=pH<=0.160000; -0.440000<=pL<=0.480000, 0.160000<=pH<=0.200000; -0.440000<=pL<=0.480000, 0.200000<=pH<=0.240000; -0.440000<=pL<=0.480000, 0.240000<=pH<=0.280000; -0.440000<=pL<=0.480000, 0.280000<=pH<=0.320000; -0.440000<=pL<=0.480000, 0.320000<=pH<=0.360000; -0.440000<=pL<=0.480000, 0.360000<=pH<=0.400000; -0.440000<=pL<=0.480000, 0.400000<=pH<=0.440000; -0.440000<=pL<=0.480000, 0.440000<=pH<=0.480000; -0.440000<=pL<=0.480000, 0.480000<=pH<=0.520000; -0.440000<=pL<=0.480000, 0.520000<=pH<=0.560000; -0.440000<=pL<=0.480000, 0.560000<=pH<=0.600000; -0.440000<=pL<=0.480000, 0.600000<=pH<=0.640000; -0.440000<=pL<=0.480000, 0.640000<=pH<=0.680000; -0.440000<=pL<=0.480000, 0.680000<=pH<=0.720000; -0.440000<=pL<=0.480000, 0.720000<=pH<=0.760000; -0.440000<=pL<=0.480000, 0.760000<=pH<=0.800000; -0.440000<=pL<=0.480000, 0.800000<=pH<=0.840000; -0.440000<=pL<=0.480000, 0.840000<=pH<=0.880000; -0.440000<=pL<=0.480000, 0.880000<=pH<=0.920000; -0.440000<=pL<=0.480000, 0.920000<=pH<=0.960000; -0.440000<=pL<=0.480000, 0.960000<=pH<=0.999990; -0.480000<=pL<=0.520000, 0.000010<=pH<=0.040000; -0.480000<=pL<=0.520000, 0.040000<=pH<=0.080000; -0.480000<=pL<=0.520000, 0.080000<=pH<=0.120000; -0.480000<=pL<=0.520000, 0.120000<=pH<=0.160000; -0.480000<=pL<=0.520000, 0.160000<=pH<=0.200000; -0.480000<=pL<=0.520000, 0.200000<=pH<=0.240000; -0.480000<=pL<=0.520000, 0.240000<=pH<=0.280000; -0.480000<=pL<=0.520000, 0.280000<=pH<=0.320000; -0.480000<=pL<=0.520000, 0.320000<=pH<=0.360000; -0.480000<=pL<=0.520000, 0.360000<=pH<=0.400000; -0.480000<=pL<=0.520000, 0.400000<=pH<=0.440000; -0.480000<=pL<=0.520000, 0.440000<=pH<=0.480000; -0.480000<=pL<=0.520000, 0.480000<=pH<=0.520000; -0.480000<=pL<=0.520000, 0.520000<=pH<=0.560000; -0.480000<=pL<=0.520000, 0.560000<=pH<=0.600000; -0.480000<=pL<=0.520000, 0.600000<=pH<=0.640000; -0.480000<=pL<=0.520000, 0.640000<=pH<=0.680000; -0.480000<=pL<=0.520000, 0.680000<=pH<=0.720000; -0.480000<=pL<=0.520000, 0.720000<=pH<=0.760000; -0.480000<=pL<=0.520000, 0.760000<=pH<=0.800000; -0.480000<=pL<=0.520000, 0.800000<=pH<=0.840000; -0.480000<=pL<=0.520000, 0.840000<=pH<=0.880000; -0.480000<=pL<=0.520000, 0.880000<=pH<=0.920000; -0.480000<=pL<=0.520000, 0.920000<=pH<=0.960000; -0.480000<=pL<=0.520000, 0.960000<=pH<=0.999990; -0.520000<=pL<=0.560000, 0.000010<=pH<=0.040000; -0.520000<=pL<=0.560000, 0.040000<=pH<=0.080000; -0.520000<=pL<=0.560000, 0.080000<=pH<=0.120000; -0.520000<=pL<=0.560000, 0.120000<=pH<=0.160000; -0.520000<=pL<=0.560000, 0.160000<=pH<=0.200000; -0.520000<=pL<=0.560000, 0.200000<=pH<=0.240000; -0.520000<=pL<=0.560000, 0.240000<=pH<=0.280000; -0.520000<=pL<=0.560000, 0.280000<=pH<=0.320000; -0.520000<=pL<=0.560000, 0.320000<=pH<=0.360000; -0.520000<=pL<=0.560000, 0.360000<=pH<=0.400000; -0.520000<=pL<=0.560000, 0.400000<=pH<=0.440000; -0.520000<=pL<=0.560000, 0.440000<=pH<=0.480000; -0.520000<=pL<=0.560000, 0.480000<=pH<=0.520000; -0.520000<=pL<=0.560000, 0.520000<=pH<=0.560000; -0.520000<=pL<=0.560000, 0.560000<=pH<=0.600000; -0.520000<=pL<=0.560000, 0.600000<=pH<=0.640000; -0.520000<=pL<=0.560000, 0.640000<=pH<=0.680000; -0.520000<=pL<=0.560000, 0.680000<=pH<=0.720000; -0.520000<=pL<=0.560000, 0.720000<=pH<=0.760000; -0.520000<=pL<=0.560000, 0.760000<=pH<=0.800000; -0.520000<=pL<=0.560000, 0.800000<=pH<=0.840000; -0.520000<=pL<=0.560000, 0.840000<=pH<=0.880000; -0.520000<=pL<=0.560000, 0.880000<=pH<=0.920000; -0.520000<=pL<=0.560000, 0.920000<=pH<=0.960000; -0.520000<=pL<=0.560000, 0.960000<=pH<=0.999990; -0.560000<=pL<=0.600000, 0.000010<=pH<=0.040000; -0.560000<=pL<=0.600000, 0.040000<=pH<=0.080000; -0.560000<=pL<=0.600000, 0.080000<=pH<=0.120000; -0.560000<=pL<=0.600000, 0.120000<=pH<=0.160000; -0.560000<=pL<=0.600000, 0.160000<=pH<=0.200000; -0.560000<=pL<=0.600000, 0.200000<=pH<=0.240000; -0.560000<=pL<=0.600000, 0.240000<=pH<=0.280000; -0.560000<=pL<=0.600000, 0.280000<=pH<=0.320000; -0.560000<=pL<=0.600000, 0.320000<=pH<=0.360000; -0.560000<=pL<=0.600000, 0.360000<=pH<=0.400000; -0.560000<=pL<=0.600000, 0.400000<=pH<=0.440000; -0.560000<=pL<=0.600000, 0.440000<=pH<=0.480000; -0.560000<=pL<=0.600000, 0.480000<=pH<=0.520000; -0.560000<=pL<=0.600000, 0.520000<=pH<=0.560000; -0.560000<=pL<=0.600000, 0.560000<=pH<=0.600000; -0.560000<=pL<=0.600000, 0.600000<=pH<=0.640000; -0.560000<=pL<=0.600000, 0.640000<=pH<=0.680000; -0.560000<=pL<=0.600000, 0.680000<=pH<=0.720000; -0.560000<=pL<=0.600000, 0.720000<=pH<=0.760000; -0.560000<=pL<=0.600000, 0.760000<=pH<=0.800000; -0.560000<=pL<=0.600000, 0.800000<=pH<=0.840000; -0.560000<=pL<=0.600000, 0.840000<=pH<=0.880000; -0.560000<=pL<=0.600000, 0.880000<=pH<=0.920000; -0.560000<=pL<=0.600000, 0.920000<=pH<=0.960000; -0.560000<=pL<=0.600000, 0.960000<=pH<=0.999990; -0.600000<=pL<=0.640000, 0.000010<=pH<=0.040000; -0.600000<=pL<=0.640000, 0.040000<=pH<=0.080000; -0.600000<=pL<=0.640000, 0.080000<=pH<=0.120000; -0.600000<=pL<=0.640000, 0.120000<=pH<=0.160000; -0.600000<=pL<=0.640000, 0.160000<=pH<=0.200000; -0.600000<=pL<=0.640000, 0.200000<=pH<=0.240000; -0.600000<=pL<=0.640000, 0.240000<=pH<=0.280000; -0.600000<=pL<=0.640000, 0.280000<=pH<=0.320000; -0.600000<=pL<=0.640000, 0.320000<=pH<=0.360000; -0.600000<=pL<=0.640000, 0.360000<=pH<=0.400000; -0.600000<=pL<=0.640000, 0.400000<=pH<=0.440000; -0.600000<=pL<=0.640000, 0.440000<=pH<=0.480000; -0.600000<=pL<=0.640000, 0.480000<=pH<=0.520000; -0.600000<=pL<=0.640000, 0.520000<=pH<=0.560000; -0.600000<=pL<=0.640000, 0.560000<=pH<=0.600000; -0.600000<=pL<=0.640000, 0.600000<=pH<=0.640000; -0.600000<=pL<=0.640000, 0.640000<=pH<=0.680000; -0.600000<=pL<=0.640000, 0.680000<=pH<=0.720000; -0.600000<=pL<=0.640000, 0.720000<=pH<=0.760000; -0.600000<=pL<=0.640000, 0.760000<=pH<=0.800000; -0.600000<=pL<=0.640000, 0.800000<=pH<=0.840000; -0.600000<=pL<=0.640000, 0.840000<=pH<=0.880000; -0.600000<=pL<=0.640000, 0.880000<=pH<=0.920000; -0.600000<=pL<=0.640000, 0.920000<=pH<=0.960000; -0.600000<=pL<=0.640000, 0.960000<=pH<=0.999990; -0.640000<=pL<=0.680000, 0.000010<=pH<=0.040000; -0.640000<=pL<=0.680000, 0.040000<=pH<=0.080000; -0.640000<=pL<=0.680000, 0.080000<=pH<=0.120000; -0.640000<=pL<=0.680000, 0.120000<=pH<=0.160000; -0.640000<=pL<=0.680000, 0.160000<=pH<=0.200000; -0.640000<=pL<=0.680000, 0.200000<=pH<=0.240000; -0.640000<=pL<=0.680000, 0.240000<=pH<=0.280000; -0.640000<=pL<=0.680000, 0.280000<=pH<=0.320000; -0.640000<=pL<=0.680000, 0.320000<=pH<=0.360000; -0.640000<=pL<=0.680000, 0.360000<=pH<=0.400000; -0.640000<=pL<=0.680000, 0.400000<=pH<=0.440000; -0.640000<=pL<=0.680000, 0.440000<=pH<=0.480000; -0.640000<=pL<=0.680000, 0.480000<=pH<=0.520000; -0.640000<=pL<=0.680000, 0.520000<=pH<=0.560000; -0.640000<=pL<=0.680000, 0.560000<=pH<=0.600000; -0.640000<=pL<=0.680000, 0.600000<=pH<=0.640000; -0.640000<=pL<=0.680000, 0.640000<=pH<=0.680000; -0.640000<=pL<=0.680000, 0.680000<=pH<=0.720000; -0.640000<=pL<=0.680000, 0.720000<=pH<=0.760000; -0.640000<=pL<=0.680000, 0.760000<=pH<=0.800000; -0.640000<=pL<=0.680000, 0.800000<=pH<=0.840000; -0.640000<=pL<=0.680000, 0.840000<=pH<=0.880000; -0.640000<=pL<=0.680000, 0.880000<=pH<=0.920000; -0.640000<=pL<=0.680000, 0.920000<=pH<=0.960000; -0.640000<=pL<=0.680000, 0.960000<=pH<=0.999990; -0.680000<=pL<=0.720000, 0.000010<=pH<=0.040000; -0.680000<=pL<=0.720000, 0.040000<=pH<=0.080000; -0.680000<=pL<=0.720000, 0.080000<=pH<=0.120000; -0.680000<=pL<=0.720000, 0.120000<=pH<=0.160000; -0.680000<=pL<=0.720000, 0.160000<=pH<=0.200000; -0.680000<=pL<=0.720000, 0.200000<=pH<=0.240000; -0.680000<=pL<=0.720000, 0.240000<=pH<=0.280000; -0.680000<=pL<=0.720000, 0.280000<=pH<=0.320000; -0.680000<=pL<=0.720000, 0.320000<=pH<=0.360000; -0.680000<=pL<=0.720000, 0.360000<=pH<=0.400000; -0.680000<=pL<=0.720000, 0.400000<=pH<=0.440000; -0.680000<=pL<=0.720000, 0.440000<=pH<=0.480000; -0.680000<=pL<=0.720000, 0.480000<=pH<=0.520000; -0.680000<=pL<=0.720000, 0.520000<=pH<=0.560000; -0.680000<=pL<=0.720000, 0.560000<=pH<=0.600000; -0.680000<=pL<=0.720000, 0.600000<=pH<=0.640000; -0.680000<=pL<=0.720000, 0.640000<=pH<=0.680000; -0.680000<=pL<=0.720000, 0.680000<=pH<=0.720000; -0.680000<=pL<=0.720000, 0.720000<=pH<=0.760000; -0.680000<=pL<=0.720000, 0.760000<=pH<=0.800000; -0.680000<=pL<=0.720000, 0.800000<=pH<=0.840000; -0.680000<=pL<=0.720000, 0.840000<=pH<=0.880000; -0.680000<=pL<=0.720000, 0.880000<=pH<=0.920000; -0.680000<=pL<=0.720000, 0.920000<=pH<=0.960000; -0.680000<=pL<=0.720000, 0.960000<=pH<=0.999990; -0.720000<=pL<=0.760000, 0.000010<=pH<=0.040000; -0.720000<=pL<=0.760000, 0.040000<=pH<=0.080000; -0.720000<=pL<=0.760000, 0.080000<=pH<=0.120000; -0.720000<=pL<=0.760000, 0.120000<=pH<=0.160000; -0.720000<=pL<=0.760000, 0.160000<=pH<=0.200000; -0.720000<=pL<=0.760000, 0.200000<=pH<=0.240000; -0.720000<=pL<=0.760000, 0.240000<=pH<=0.280000; -0.720000<=pL<=0.760000, 0.280000<=pH<=0.320000; -0.720000<=pL<=0.760000, 0.320000<=pH<=0.360000; -0.720000<=pL<=0.760000, 0.360000<=pH<=0.400000; -0.720000<=pL<=0.760000, 0.400000<=pH<=0.440000; -0.720000<=pL<=0.760000, 0.440000<=pH<=0.480000; -0.720000<=pL<=0.760000, 0.480000<=pH<=0.520000; -0.720000<=pL<=0.760000, 0.520000<=pH<=0.560000; -0.720000<=pL<=0.760000, 0.560000<=pH<=0.600000; -0.720000<=pL<=0.760000, 0.600000<=pH<=0.640000; -0.720000<=pL<=0.760000, 0.640000<=pH<=0.680000; -0.720000<=pL<=0.760000, 0.680000<=pH<=0.720000; -0.720000<=pL<=0.760000, 0.720000<=pH<=0.760000; -0.720000<=pL<=0.760000, 0.760000<=pH<=0.800000; -0.720000<=pL<=0.760000, 0.800000<=pH<=0.840000; -0.720000<=pL<=0.760000, 0.840000<=pH<=0.880000; -0.720000<=pL<=0.760000, 0.880000<=pH<=0.920000; -0.720000<=pL<=0.760000, 0.920000<=pH<=0.960000; -0.720000<=pL<=0.760000, 0.960000<=pH<=0.999990; -0.760000<=pL<=0.800000, 0.000010<=pH<=0.040000; -0.760000<=pL<=0.800000, 0.040000<=pH<=0.080000; -0.760000<=pL<=0.800000, 0.080000<=pH<=0.120000; -0.760000<=pL<=0.800000, 0.120000<=pH<=0.160000; -0.760000<=pL<=0.800000, 0.160000<=pH<=0.200000; -0.760000<=pL<=0.800000, 0.200000<=pH<=0.240000; -0.760000<=pL<=0.800000, 0.240000<=pH<=0.280000; -0.760000<=pL<=0.800000, 0.280000<=pH<=0.320000; -0.760000<=pL<=0.800000, 0.320000<=pH<=0.360000; -0.760000<=pL<=0.800000, 0.360000<=pH<=0.400000; -0.760000<=pL<=0.800000, 0.400000<=pH<=0.440000; -0.760000<=pL<=0.800000, 0.440000<=pH<=0.480000; -0.760000<=pL<=0.800000, 0.480000<=pH<=0.520000; -0.760000<=pL<=0.800000, 0.520000<=pH<=0.560000; -0.760000<=pL<=0.800000, 0.560000<=pH<=0.600000; -0.760000<=pL<=0.800000, 0.600000<=pH<=0.640000; -0.760000<=pL<=0.800000, 0.640000<=pH<=0.680000; -0.760000<=pL<=0.800000, 0.680000<=pH<=0.720000; -0.760000<=pL<=0.800000, 0.720000<=pH<=0.760000; -0.760000<=pL<=0.800000, 0.760000<=pH<=0.800000; -0.760000<=pL<=0.800000, 0.800000<=pH<=0.840000; -0.760000<=pL<=0.800000, 0.840000<=pH<=0.880000; -0.760000<=pL<=0.800000, 0.880000<=pH<=0.920000; -0.760000<=pL<=0.800000, 0.920000<=pH<=0.960000; -0.760000<=pL<=0.800000, 0.960000<=pH<=0.999990; -0.800000<=pL<=0.840000, 0.000010<=pH<=0.040000; -0.800000<=pL<=0.840000, 0.040000<=pH<=0.080000; -0.800000<=pL<=0.840000, 0.080000<=pH<=0.120000; -0.800000<=pL<=0.840000, 0.120000<=pH<=0.160000; -0.800000<=pL<=0.840000, 0.160000<=pH<=0.200000; -0.800000<=pL<=0.840000, 0.200000<=pH<=0.240000; -0.800000<=pL<=0.840000, 0.240000<=pH<=0.280000; -0.800000<=pL<=0.840000, 0.280000<=pH<=0.320000; -0.800000<=pL<=0.840000, 0.320000<=pH<=0.360000; -0.800000<=pL<=0.840000, 0.360000<=pH<=0.400000; -0.800000<=pL<=0.840000, 0.400000<=pH<=0.440000; -0.800000<=pL<=0.840000, 0.440000<=pH<=0.480000; -0.800000<=pL<=0.840000, 0.480000<=pH<=0.520000; -0.800000<=pL<=0.840000, 0.520000<=pH<=0.560000; -0.800000<=pL<=0.840000, 0.560000<=pH<=0.600000; -0.800000<=pL<=0.840000, 0.600000<=pH<=0.640000; -0.800000<=pL<=0.840000, 0.640000<=pH<=0.680000; -0.800000<=pL<=0.840000, 0.680000<=pH<=0.720000; -0.800000<=pL<=0.840000, 0.720000<=pH<=0.760000; -0.800000<=pL<=0.840000, 0.760000<=pH<=0.800000; -0.800000<=pL<=0.840000, 0.800000<=pH<=0.840000; -0.800000<=pL<=0.840000, 0.840000<=pH<=0.880000; -0.800000<=pL<=0.840000, 0.880000<=pH<=0.920000; -0.800000<=pL<=0.840000, 0.920000<=pH<=0.960000; -0.800000<=pL<=0.840000, 0.960000<=pH<=0.999990; -0.840000<=pL<=0.880000, 0.000010<=pH<=0.040000; -0.840000<=pL<=0.880000, 0.040000<=pH<=0.080000; -0.840000<=pL<=0.880000, 0.080000<=pH<=0.120000; -0.840000<=pL<=0.880000, 0.120000<=pH<=0.160000; -0.840000<=pL<=0.880000, 0.160000<=pH<=0.200000; -0.840000<=pL<=0.880000, 0.200000<=pH<=0.240000; -0.840000<=pL<=0.880000, 0.240000<=pH<=0.280000; -0.840000<=pL<=0.880000, 0.280000<=pH<=0.320000; -0.840000<=pL<=0.880000, 0.320000<=pH<=0.360000; -0.840000<=pL<=0.880000, 0.360000<=pH<=0.400000; -0.840000<=pL<=0.880000, 0.400000<=pH<=0.440000; -0.840000<=pL<=0.880000, 0.440000<=pH<=0.480000; -0.840000<=pL<=0.880000, 0.480000<=pH<=0.520000; -0.840000<=pL<=0.880000, 0.520000<=pH<=0.560000; -0.840000<=pL<=0.880000, 0.560000<=pH<=0.600000; -0.840000<=pL<=0.880000, 0.600000<=pH<=0.640000; -0.840000<=pL<=0.880000, 0.640000<=pH<=0.680000; -0.840000<=pL<=0.880000, 0.680000<=pH<=0.720000; -0.840000<=pL<=0.880000, 0.720000<=pH<=0.760000; -0.840000<=pL<=0.880000, 0.760000<=pH<=0.800000; -0.840000<=pL<=0.880000, 0.800000<=pH<=0.840000; -0.840000<=pL<=0.880000, 0.840000<=pH<=0.880000; -0.840000<=pL<=0.880000, 0.880000<=pH<=0.920000; -0.840000<=pL<=0.880000, 0.920000<=pH<=0.960000; -0.840000<=pL<=0.880000, 0.960000<=pH<=0.999990; -0.880000<=pL<=0.920000, 0.000010<=pH<=0.040000; -0.880000<=pL<=0.920000, 0.040000<=pH<=0.080000; -0.880000<=pL<=0.920000, 0.080000<=pH<=0.120000; -0.880000<=pL<=0.920000, 0.120000<=pH<=0.160000; -0.880000<=pL<=0.920000, 0.160000<=pH<=0.200000; -0.880000<=pL<=0.920000, 0.200000<=pH<=0.240000; -0.880000<=pL<=0.920000, 0.240000<=pH<=0.280000; -0.880000<=pL<=0.920000, 0.280000<=pH<=0.320000; -0.880000<=pL<=0.920000, 0.320000<=pH<=0.360000; -0.880000<=pL<=0.920000, 0.360000<=pH<=0.400000; -0.880000<=pL<=0.920000, 0.400000<=pH<=0.440000; -0.880000<=pL<=0.920000, 0.440000<=pH<=0.480000; -0.880000<=pL<=0.920000, 0.480000<=pH<=0.520000; -0.880000<=pL<=0.920000, 0.520000<=pH<=0.560000; -0.880000<=pL<=0.920000, 0.560000<=pH<=0.600000; -0.880000<=pL<=0.920000, 0.600000<=pH<=0.640000; -0.880000<=pL<=0.920000, 0.640000<=pH<=0.680000; -0.880000<=pL<=0.920000, 0.680000<=pH<=0.720000; -0.880000<=pL<=0.920000, 0.720000<=pH<=0.760000; -0.880000<=pL<=0.920000, 0.760000<=pH<=0.800000; -0.880000<=pL<=0.920000, 0.800000<=pH<=0.840000; -0.880000<=pL<=0.920000, 0.840000<=pH<=0.880000; -0.880000<=pL<=0.920000, 0.880000<=pH<=0.920000; -0.880000<=pL<=0.920000, 0.920000<=pH<=0.960000; -0.880000<=pL<=0.920000, 0.960000<=pH<=0.999990; -0.920000<=pL<=0.960000, 0.000010<=pH<=0.040000; -0.920000<=pL<=0.960000, 0.040000<=pH<=0.080000; -0.920000<=pL<=0.960000, 0.080000<=pH<=0.120000; -0.920000<=pL<=0.960000, 0.120000<=pH<=0.160000; -0.920000<=pL<=0.960000, 0.160000<=pH<=0.200000; -0.920000<=pL<=0.960000, 0.200000<=pH<=0.240000; -0.920000<=pL<=0.960000, 0.240000<=pH<=0.280000; -0.920000<=pL<=0.960000, 0.280000<=pH<=0.320000; -0.920000<=pL<=0.960000, 0.320000<=pH<=0.360000; -0.920000<=pL<=0.960000, 0.360000<=pH<=0.400000; -0.920000<=pL<=0.960000, 0.400000<=pH<=0.440000; -0.920000<=pL<=0.960000, 0.440000<=pH<=0.480000; -0.920000<=pL<=0.960000, 0.480000<=pH<=0.520000; -0.920000<=pL<=0.960000, 0.520000<=pH<=0.560000; -0.920000<=pL<=0.960000, 0.560000<=pH<=0.600000; -0.920000<=pL<=0.960000, 0.600000<=pH<=0.640000; -0.920000<=pL<=0.960000, 0.640000<=pH<=0.680000; -0.920000<=pL<=0.960000, 0.680000<=pH<=0.720000; -0.920000<=pL<=0.960000, 0.720000<=pH<=0.760000; -0.920000<=pL<=0.960000, 0.760000<=pH<=0.800000; -0.920000<=pL<=0.960000, 0.800000<=pH<=0.840000; -0.920000<=pL<=0.960000, 0.840000<=pH<=0.880000; -0.920000<=pL<=0.960000, 0.880000<=pH<=0.920000; -0.920000<=pL<=0.960000, 0.920000<=pH<=0.960000; -0.920000<=pL<=0.960000, 0.960000<=pH<=0.999990; -0.960000<=pL<=0.999990, 0.000010<=pH<=0.040000; -0.960000<=pL<=0.999990, 0.040000<=pH<=0.080000; -0.960000<=pL<=0.999990, 0.080000<=pH<=0.120000; -0.960000<=pL<=0.999990, 0.120000<=pH<=0.160000; -0.960000<=pL<=0.999990, 0.160000<=pH<=0.200000; -0.960000<=pL<=0.999990, 0.200000<=pH<=0.240000; -0.960000<=pL<=0.999990, 0.240000<=pH<=0.280000; -0.960000<=pL<=0.999990, 0.280000<=pH<=0.320000; -0.960000<=pL<=0.999990, 0.320000<=pH<=0.360000; -0.960000<=pL<=0.999990, 0.360000<=pH<=0.400000; -0.960000<=pL<=0.999990, 0.400000<=pH<=0.440000; -0.960000<=pL<=0.999990, 0.440000<=pH<=0.480000; -0.960000<=pL<=0.999990, 0.480000<=pH<=0.520000; -0.960000<=pL<=0.999990, 0.520000<=pH<=0.560000; -0.960000<=pL<=0.999990, 0.560000<=pH<=0.600000; -0.960000<=pL<=0.999990, 0.600000<=pH<=0.640000; -0.960000<=pL<=0.999990, 0.640000<=pH<=0.680000; -0.960000<=pL<=0.999990, 0.680000<=pH<=0.720000; -0.960000<=pL<=0.999990, 0.720000<=pH<=0.760000; -0.960000<=pL<=0.999990, 0.760000<=pH<=0.800000; -0.960000<=pL<=0.999990, 0.800000<=pH<=0.840000; -0.960000<=pL<=0.999990, 0.840000<=pH<=0.880000; -0.960000<=pL<=0.999990, 0.880000<=pH<=0.920000; -0.960000<=pL<=0.999990, 0.920000<=pH<=0.960000; -0.960000<=pL<=0.999990, 0.960000<=pH<=0.999990; diff --git a/examples/pmdp/reporter2/reporter2_space.txt b/examples/pmdp/reporter2/reporter2_space.txt deleted file mode 100644 index ef1f8db6c..000000000 --- a/examples/pmdp/reporter2/reporter2_space.txt +++ /dev/null @@ -1,2 +0,0 @@ -0.000010<=pL<=0.999990, 0.000010<=pH<=0.999990; - diff --git a/examples/pmdp/reporter4/models b/examples/pmdp/reporter4/models deleted file mode 100644 index f9a0e194c..000000000 --- a/examples/pmdp/reporter4/models +++ /dev/null @@ -1,2 +0,0 @@ -reporter4.pm -const Xsize=6,Ysize=6,MAXTRIES=2,B=2 -reporter4.pm -const Xsize=10,Ysize=10,MAXTRIES=3,B=3 diff --git a/examples/pmdp/reporter4/reporter25_25_5_5.pm b/examples/pmdp/reporter4/reporter25_25_5_5.pm deleted file mode 100644 index ef8ac7bdf..000000000 --- a/examples/pmdp/reporter4/reporter25_25_5_5.pm +++ /dev/null @@ -1,73 +0,0 @@ -// GRID WORLD MODEL OF A SEMIAUTONOMOUS EXPLORING ROBOT -// Sebastian Junges, RWTH Aachen University -// As described in -// Junges, Jansen, Dehnert, Topcu, Katoen: -// Safety Constrained Reinforcement Learning -// Proc. of TACAS’16 - -mdp - -//PARAMETERS -//The difference of the reliability of the channels between the worst and at the best position -const double pLDiff;//=0.1; -const double pHDiff;//=0.1; -//Scaling factor for the minimum reliability of the channels -const double pL;//=8/9; -const double pH;//=1; - -//CONSTANTS -//The minimum reliablities -const double pLMin=pL*(1-pLDiff); -const double pHMin=pH*(1-pHDiff); - -// Grid size -const int Xsize = 25; -const int Ysize = 25; -// Number of tries before an error -const int MAXTRIES = 5; -// Ball within the robot has to move. -const int B=5; - - -formula T = (xLoc = Xsize & yLoc = Ysize); - - -module robot - xLoc : [1..Ysize] init 1; - yLoc : [1..Xsize] init 1; - unreported : [0..B] init 0; - hasSendNow : bool init false; - tries : [0..MAXTRIES] init 0; - - [up] xLoc < Xsize & !T & hasSendNow -> 1:(xLoc'=xLoc+1) & (unreported' = 0) & (hasSendNow'=false); - [up] xLoc < Xsize & !T & !hasSendNow -> 1:(xLoc'=xLoc+1) & (unreported'=min(unreported+1, B)); - [right] yLoc < Ysize & !T & hasSendNow -> 1:(yLoc'=yLoc+1) & (unreported' = 0)& (hasSendNow'=false); - [right] yLoc < Ysize & !T & !hasSendNow -> 1:(yLoc'=yLoc+1) & (unreported'=min(unreported+1,B)); - [sendL] !hasSendNow & !T & tries < MAXTRIES -> (pLMin + pLDiff * xLoc/Xsize):(hasSendNow'=true) & (tries'=0) + (1 - pLMin - pLDiff * xLoc/Xsize): (tries'=tries+1); - [sendH] !hasSendNow & !T & tries < MAXTRIES -> (pHMin + pHDiff * yLoc/Ysize):(hasSendNow'=true) & (tries'=0) + (1 - pHMin - pHDiff * yLoc/Ysize): (tries'=tries+1); - [done] T -> 1:true; -endmodule - -rewards "sendbased" - [up] true: 0.03; - [right] true: 0.03; - [sendL] true: max(10, min(11 + xLoc - yLoc, 20)); - [sendH] true: min(13 + xLoc + yLoc, 24); -endrewards - -rewards "sendbased_lower" - [up] true: 0.03; - [right] true: 0.03; - [sendL] true: 10; - [sendH] true: 12; -endrewards - -rewards "sendbased_upper" - [up] true: 0.03; - [right] true: 0.03; - [sendL] true: 20; - [sendH] true: 24; -endrewards - -label "Target" = T; -label "Crash" = unreported=B; diff --git a/examples/pmdp/reporter4/reporter4.pm b/examples/pmdp/reporter4/reporter4.pm deleted file mode 100644 index 1b4227741..000000000 --- a/examples/pmdp/reporter4/reporter4.pm +++ /dev/null @@ -1,73 +0,0 @@ -// GRID WORLD MODEL OF A SEMIAUTONOMOUS EXPLORING ROBOT -// Sebastian Junges, RWTH Aachen University -// As described in -// Junges, Jansen, Dehnert, Topcu, Katoen: -// Safety Constrained Reinforcement Learning -// Proc. of TACAS’16 - -mdp - -//PARAMETERS -//The difference of the reliability of the channels between the worst and at the best position -const double pLDiff;//=0.1; -const double pHDiff;//=0.1; -//Scaling factor for the minimum reliability of the channels -const double pL;//=8/9; -const double pH;//=1; - -//CONSTANTS -//The minimum reliablities -const double pLMin=pL*(1-pLDiff); -const double pHMin=pH*(1-pHDiff); - -// Grid size -const int Xsize; -const int Ysize; -// Number of tries before an error -const int MAXTRIES; -// Ball within the robot has to move. -const int B; - - -formula T = (xLoc = Xsize & yLoc = Ysize); - - -module robot - xLoc : [1..Ysize] init 1; - yLoc : [1..Xsize] init 1; - unreported : [0..B] init 0; - hasSendNow : bool init false; - tries : [0..MAXTRIES] init 0; - - [up] xLoc < Xsize & !T & hasSendNow -> 1:(xLoc'=xLoc+1) & (unreported' = 0) & (hasSendNow'=false); - [up] xLoc < Xsize & !T & !hasSendNow -> 1:(xLoc'=xLoc+1) & (unreported'=min(unreported+1, B)); - [right] yLoc < Ysize & !T & hasSendNow -> 1:(yLoc'=yLoc+1) & (unreported' = 0)& (hasSendNow'=false); - [right] yLoc < Ysize & !T & !hasSendNow -> 1:(yLoc'=yLoc+1) & (unreported'=min(unreported+1,B)); - [sendL] !hasSendNow & !T & tries < MAXTRIES -> (pLMin + pLDiff * xLoc/Xsize):(hasSendNow'=true) & (tries'=0) + (1 - pLMin - pLDiff * xLoc/Xsize): (tries'=tries+1); - [sendH] !hasSendNow & !T & tries < MAXTRIES -> (pHMin + pHDiff * yLoc/Ysize):(hasSendNow'=true) & (tries'=0) + (1 - pHMin - pHDiff * yLoc/Ysize): (tries'=tries+1); - [done] T -> 1:true; -endmodule - -rewards "sendbased" - [up] true: 0.03; - [right] true: 0.03; - [sendL] true: max(10, min(11 + xLoc - yLoc, 20)); - [sendH] true: min(13 + xLoc + yLoc, 24); -endrewards - -rewards "sendbased_lower" - [up] true: 0.03; - [right] true: 0.03; - [sendL] true: 10; - [sendH] true: 12; -endrewards - -rewards "sendbased_upper" - [up] true: 0.03; - [right] true: 0.03; - [sendL] true: 20; - [sendH] true: 24; -endrewards - -label "Target" = T; -label "Crash" = unreported=B; diff --git a/examples/pmdp/reporter4/reporter4.prctl b/examples/pmdp/reporter4/reporter4.prctl deleted file mode 100644 index 959df1e88..000000000 --- a/examples/pmdp/reporter4/reporter4.prctl +++ /dev/null @@ -1 +0,0 @@ -P>0.3[F "Crash" ] diff --git a/examples/pmdp/reporter4/reporter4_regions.txt b/examples/pmdp/reporter4/reporter4_regions.txt deleted file mode 100644 index 9b1faa972..000000000 --- a/examples/pmdp/reporter4/reporter4_regions.txt +++ /dev/null @@ -1,625 +0,0 @@ -0.000010<=pL<=0.200000, 0.000010<=pH<=0.200000, 0.000010<=pLDiff<=0.200000, 0.000010<=pHDiff<=0.200000; -0.000010<=pL<=0.200000, 0.000010<=pH<=0.200000, 0.000010<=pLDiff<=0.200000, 0.200000<=pHDiff<=0.400000; -0.000010<=pL<=0.200000, 0.000010<=pH<=0.200000, 0.000010<=pLDiff<=0.200000, 0.400000<=pHDiff<=0.600000; -0.000010<=pL<=0.200000, 0.000010<=pH<=0.200000, 0.000010<=pLDiff<=0.200000, 0.600000<=pHDiff<=0.800000; -0.000010<=pL<=0.200000, 0.000010<=pH<=0.200000, 0.000010<=pLDiff<=0.200000, 0.800000<=pHDiff<=0.999990; -0.000010<=pL<=0.200000, 0.000010<=pH<=0.200000, 0.200000<=pLDiff<=0.400000, 0.000010<=pHDiff<=0.200000; -0.000010<=pL<=0.200000, 0.000010<=pH<=0.200000, 0.200000<=pLDiff<=0.400000, 0.200000<=pHDiff<=0.400000; -0.000010<=pL<=0.200000, 0.000010<=pH<=0.200000, 0.200000<=pLDiff<=0.400000, 0.400000<=pHDiff<=0.600000; -0.000010<=pL<=0.200000, 0.000010<=pH<=0.200000, 0.200000<=pLDiff<=0.400000, 0.600000<=pHDiff<=0.800000; -0.000010<=pL<=0.200000, 0.000010<=pH<=0.200000, 0.200000<=pLDiff<=0.400000, 0.800000<=pHDiff<=0.999990; -0.000010<=pL<=0.200000, 0.000010<=pH<=0.200000, 0.400000<=pLDiff<=0.600000, 0.000010<=pHDiff<=0.200000; -0.000010<=pL<=0.200000, 0.000010<=pH<=0.200000, 0.400000<=pLDiff<=0.600000, 0.200000<=pHDiff<=0.400000; -0.000010<=pL<=0.200000, 0.000010<=pH<=0.200000, 0.400000<=pLDiff<=0.600000, 0.400000<=pHDiff<=0.600000; -0.000010<=pL<=0.200000, 0.000010<=pH<=0.200000, 0.400000<=pLDiff<=0.600000, 0.600000<=pHDiff<=0.800000; -0.000010<=pL<=0.200000, 0.000010<=pH<=0.200000, 0.400000<=pLDiff<=0.600000, 0.800000<=pHDiff<=0.999990; -0.000010<=pL<=0.200000, 0.000010<=pH<=0.200000, 0.600000<=pLDiff<=0.800000, 0.000010<=pHDiff<=0.200000; -0.000010<=pL<=0.200000, 0.000010<=pH<=0.200000, 0.600000<=pLDiff<=0.800000, 0.200000<=pHDiff<=0.400000; -0.000010<=pL<=0.200000, 0.000010<=pH<=0.200000, 0.600000<=pLDiff<=0.800000, 0.400000<=pHDiff<=0.600000; -0.000010<=pL<=0.200000, 0.000010<=pH<=0.200000, 0.600000<=pLDiff<=0.800000, 0.600000<=pHDiff<=0.800000; -0.000010<=pL<=0.200000, 0.000010<=pH<=0.200000, 0.600000<=pLDiff<=0.800000, 0.800000<=pHDiff<=0.999990; -0.000010<=pL<=0.200000, 0.000010<=pH<=0.200000, 0.800000<=pLDiff<=0.999990, 0.000010<=pHDiff<=0.200000; -0.000010<=pL<=0.200000, 0.000010<=pH<=0.200000, 0.800000<=pLDiff<=0.999990, 0.200000<=pHDiff<=0.400000; -0.000010<=pL<=0.200000, 0.000010<=pH<=0.200000, 0.800000<=pLDiff<=0.999990, 0.400000<=pHDiff<=0.600000; -0.000010<=pL<=0.200000, 0.000010<=pH<=0.200000, 0.800000<=pLDiff<=0.999990, 0.600000<=pHDiff<=0.800000; -0.000010<=pL<=0.200000, 0.000010<=pH<=0.200000, 0.800000<=pLDiff<=0.999990, 0.800000<=pHDiff<=0.999990; -0.000010<=pL<=0.200000, 0.200000<=pH<=0.400000, 0.000010<=pLDiff<=0.200000, 0.000010<=pHDiff<=0.200000; -0.000010<=pL<=0.200000, 0.200000<=pH<=0.400000, 0.000010<=pLDiff<=0.200000, 0.200000<=pHDiff<=0.400000; -0.000010<=pL<=0.200000, 0.200000<=pH<=0.400000, 0.000010<=pLDiff<=0.200000, 0.400000<=pHDiff<=0.600000; -0.000010<=pL<=0.200000, 0.200000<=pH<=0.400000, 0.000010<=pLDiff<=0.200000, 0.600000<=pHDiff<=0.800000; -0.000010<=pL<=0.200000, 0.200000<=pH<=0.400000, 0.000010<=pLDiff<=0.200000, 0.800000<=pHDiff<=0.999990; -0.000010<=pL<=0.200000, 0.200000<=pH<=0.400000, 0.200000<=pLDiff<=0.400000, 0.000010<=pHDiff<=0.200000; -0.000010<=pL<=0.200000, 0.200000<=pH<=0.400000, 0.200000<=pLDiff<=0.400000, 0.200000<=pHDiff<=0.400000; -0.000010<=pL<=0.200000, 0.200000<=pH<=0.400000, 0.200000<=pLDiff<=0.400000, 0.400000<=pHDiff<=0.600000; -0.000010<=pL<=0.200000, 0.200000<=pH<=0.400000, 0.200000<=pLDiff<=0.400000, 0.600000<=pHDiff<=0.800000; -0.000010<=pL<=0.200000, 0.200000<=pH<=0.400000, 0.200000<=pLDiff<=0.400000, 0.800000<=pHDiff<=0.999990; -0.000010<=pL<=0.200000, 0.200000<=pH<=0.400000, 0.400000<=pLDiff<=0.600000, 0.000010<=pHDiff<=0.200000; -0.000010<=pL<=0.200000, 0.200000<=pH<=0.400000, 0.400000<=pLDiff<=0.600000, 0.200000<=pHDiff<=0.400000; -0.000010<=pL<=0.200000, 0.200000<=pH<=0.400000, 0.400000<=pLDiff<=0.600000, 0.400000<=pHDiff<=0.600000; -0.000010<=pL<=0.200000, 0.200000<=pH<=0.400000, 0.400000<=pLDiff<=0.600000, 0.600000<=pHDiff<=0.800000; -0.000010<=pL<=0.200000, 0.200000<=pH<=0.400000, 0.400000<=pLDiff<=0.600000, 0.800000<=pHDiff<=0.999990; -0.000010<=pL<=0.200000, 0.200000<=pH<=0.400000, 0.600000<=pLDiff<=0.800000, 0.000010<=pHDiff<=0.200000; -0.000010<=pL<=0.200000, 0.200000<=pH<=0.400000, 0.600000<=pLDiff<=0.800000, 0.200000<=pHDiff<=0.400000; -0.000010<=pL<=0.200000, 0.200000<=pH<=0.400000, 0.600000<=pLDiff<=0.800000, 0.400000<=pHDiff<=0.600000; -0.000010<=pL<=0.200000, 0.200000<=pH<=0.400000, 0.600000<=pLDiff<=0.800000, 0.600000<=pHDiff<=0.800000; -0.000010<=pL<=0.200000, 0.200000<=pH<=0.400000, 0.600000<=pLDiff<=0.800000, 0.800000<=pHDiff<=0.999990; -0.000010<=pL<=0.200000, 0.200000<=pH<=0.400000, 0.800000<=pLDiff<=0.999990, 0.000010<=pHDiff<=0.200000; -0.000010<=pL<=0.200000, 0.200000<=pH<=0.400000, 0.800000<=pLDiff<=0.999990, 0.200000<=pHDiff<=0.400000; -0.000010<=pL<=0.200000, 0.200000<=pH<=0.400000, 0.800000<=pLDiff<=0.999990, 0.400000<=pHDiff<=0.600000; -0.000010<=pL<=0.200000, 0.200000<=pH<=0.400000, 0.800000<=pLDiff<=0.999990, 0.600000<=pHDiff<=0.800000; -0.000010<=pL<=0.200000, 0.200000<=pH<=0.400000, 0.800000<=pLDiff<=0.999990, 0.800000<=pHDiff<=0.999990; -0.000010<=pL<=0.200000, 0.400000<=pH<=0.600000, 0.000010<=pLDiff<=0.200000, 0.000010<=pHDiff<=0.200000; -0.000010<=pL<=0.200000, 0.400000<=pH<=0.600000, 0.000010<=pLDiff<=0.200000, 0.200000<=pHDiff<=0.400000; -0.000010<=pL<=0.200000, 0.400000<=pH<=0.600000, 0.000010<=pLDiff<=0.200000, 0.400000<=pHDiff<=0.600000; -0.000010<=pL<=0.200000, 0.400000<=pH<=0.600000, 0.000010<=pLDiff<=0.200000, 0.600000<=pHDiff<=0.800000; -0.000010<=pL<=0.200000, 0.400000<=pH<=0.600000, 0.000010<=pLDiff<=0.200000, 0.800000<=pHDiff<=0.999990; -0.000010<=pL<=0.200000, 0.400000<=pH<=0.600000, 0.200000<=pLDiff<=0.400000, 0.000010<=pHDiff<=0.200000; -0.000010<=pL<=0.200000, 0.400000<=pH<=0.600000, 0.200000<=pLDiff<=0.400000, 0.200000<=pHDiff<=0.400000; -0.000010<=pL<=0.200000, 0.400000<=pH<=0.600000, 0.200000<=pLDiff<=0.400000, 0.400000<=pHDiff<=0.600000; -0.000010<=pL<=0.200000, 0.400000<=pH<=0.600000, 0.200000<=pLDiff<=0.400000, 0.600000<=pHDiff<=0.800000; -0.000010<=pL<=0.200000, 0.400000<=pH<=0.600000, 0.200000<=pLDiff<=0.400000, 0.800000<=pHDiff<=0.999990; -0.000010<=pL<=0.200000, 0.400000<=pH<=0.600000, 0.400000<=pLDiff<=0.600000, 0.000010<=pHDiff<=0.200000; -0.000010<=pL<=0.200000, 0.400000<=pH<=0.600000, 0.400000<=pLDiff<=0.600000, 0.200000<=pHDiff<=0.400000; -0.000010<=pL<=0.200000, 0.400000<=pH<=0.600000, 0.400000<=pLDiff<=0.600000, 0.400000<=pHDiff<=0.600000; -0.000010<=pL<=0.200000, 0.400000<=pH<=0.600000, 0.400000<=pLDiff<=0.600000, 0.600000<=pHDiff<=0.800000; -0.000010<=pL<=0.200000, 0.400000<=pH<=0.600000, 0.400000<=pLDiff<=0.600000, 0.800000<=pHDiff<=0.999990; -0.000010<=pL<=0.200000, 0.400000<=pH<=0.600000, 0.600000<=pLDiff<=0.800000, 0.000010<=pHDiff<=0.200000; -0.000010<=pL<=0.200000, 0.400000<=pH<=0.600000, 0.600000<=pLDiff<=0.800000, 0.200000<=pHDiff<=0.400000; -0.000010<=pL<=0.200000, 0.400000<=pH<=0.600000, 0.600000<=pLDiff<=0.800000, 0.400000<=pHDiff<=0.600000; -0.000010<=pL<=0.200000, 0.400000<=pH<=0.600000, 0.600000<=pLDiff<=0.800000, 0.600000<=pHDiff<=0.800000; -0.000010<=pL<=0.200000, 0.400000<=pH<=0.600000, 0.600000<=pLDiff<=0.800000, 0.800000<=pHDiff<=0.999990; -0.000010<=pL<=0.200000, 0.400000<=pH<=0.600000, 0.800000<=pLDiff<=0.999990, 0.000010<=pHDiff<=0.200000; -0.000010<=pL<=0.200000, 0.400000<=pH<=0.600000, 0.800000<=pLDiff<=0.999990, 0.200000<=pHDiff<=0.400000; -0.000010<=pL<=0.200000, 0.400000<=pH<=0.600000, 0.800000<=pLDiff<=0.999990, 0.400000<=pHDiff<=0.600000; -0.000010<=pL<=0.200000, 0.400000<=pH<=0.600000, 0.800000<=pLDiff<=0.999990, 0.600000<=pHDiff<=0.800000; -0.000010<=pL<=0.200000, 0.400000<=pH<=0.600000, 0.800000<=pLDiff<=0.999990, 0.800000<=pHDiff<=0.999990; -0.000010<=pL<=0.200000, 0.600000<=pH<=0.800000, 0.000010<=pLDiff<=0.200000, 0.000010<=pHDiff<=0.200000; -0.000010<=pL<=0.200000, 0.600000<=pH<=0.800000, 0.000010<=pLDiff<=0.200000, 0.200000<=pHDiff<=0.400000; -0.000010<=pL<=0.200000, 0.600000<=pH<=0.800000, 0.000010<=pLDiff<=0.200000, 0.400000<=pHDiff<=0.600000; -0.000010<=pL<=0.200000, 0.600000<=pH<=0.800000, 0.000010<=pLDiff<=0.200000, 0.600000<=pHDiff<=0.800000; -0.000010<=pL<=0.200000, 0.600000<=pH<=0.800000, 0.000010<=pLDiff<=0.200000, 0.800000<=pHDiff<=0.999990; -0.000010<=pL<=0.200000, 0.600000<=pH<=0.800000, 0.200000<=pLDiff<=0.400000, 0.000010<=pHDiff<=0.200000; -0.000010<=pL<=0.200000, 0.600000<=pH<=0.800000, 0.200000<=pLDiff<=0.400000, 0.200000<=pHDiff<=0.400000; -0.000010<=pL<=0.200000, 0.600000<=pH<=0.800000, 0.200000<=pLDiff<=0.400000, 0.400000<=pHDiff<=0.600000; -0.000010<=pL<=0.200000, 0.600000<=pH<=0.800000, 0.200000<=pLDiff<=0.400000, 0.600000<=pHDiff<=0.800000; -0.000010<=pL<=0.200000, 0.600000<=pH<=0.800000, 0.200000<=pLDiff<=0.400000, 0.800000<=pHDiff<=0.999990; -0.000010<=pL<=0.200000, 0.600000<=pH<=0.800000, 0.400000<=pLDiff<=0.600000, 0.000010<=pHDiff<=0.200000; -0.000010<=pL<=0.200000, 0.600000<=pH<=0.800000, 0.400000<=pLDiff<=0.600000, 0.200000<=pHDiff<=0.400000; -0.000010<=pL<=0.200000, 0.600000<=pH<=0.800000, 0.400000<=pLDiff<=0.600000, 0.400000<=pHDiff<=0.600000; -0.000010<=pL<=0.200000, 0.600000<=pH<=0.800000, 0.400000<=pLDiff<=0.600000, 0.600000<=pHDiff<=0.800000; -0.000010<=pL<=0.200000, 0.600000<=pH<=0.800000, 0.400000<=pLDiff<=0.600000, 0.800000<=pHDiff<=0.999990; -0.000010<=pL<=0.200000, 0.600000<=pH<=0.800000, 0.600000<=pLDiff<=0.800000, 0.000010<=pHDiff<=0.200000; -0.000010<=pL<=0.200000, 0.600000<=pH<=0.800000, 0.600000<=pLDiff<=0.800000, 0.200000<=pHDiff<=0.400000; -0.000010<=pL<=0.200000, 0.600000<=pH<=0.800000, 0.600000<=pLDiff<=0.800000, 0.400000<=pHDiff<=0.600000; -0.000010<=pL<=0.200000, 0.600000<=pH<=0.800000, 0.600000<=pLDiff<=0.800000, 0.600000<=pHDiff<=0.800000; -0.000010<=pL<=0.200000, 0.600000<=pH<=0.800000, 0.600000<=pLDiff<=0.800000, 0.800000<=pHDiff<=0.999990; -0.000010<=pL<=0.200000, 0.600000<=pH<=0.800000, 0.800000<=pLDiff<=0.999990, 0.000010<=pHDiff<=0.200000; -0.000010<=pL<=0.200000, 0.600000<=pH<=0.800000, 0.800000<=pLDiff<=0.999990, 0.200000<=pHDiff<=0.400000; -0.000010<=pL<=0.200000, 0.600000<=pH<=0.800000, 0.800000<=pLDiff<=0.999990, 0.400000<=pHDiff<=0.600000; -0.000010<=pL<=0.200000, 0.600000<=pH<=0.800000, 0.800000<=pLDiff<=0.999990, 0.600000<=pHDiff<=0.800000; -0.000010<=pL<=0.200000, 0.600000<=pH<=0.800000, 0.800000<=pLDiff<=0.999990, 0.800000<=pHDiff<=0.999990; -0.000010<=pL<=0.200000, 0.800000<=pH<=0.999990, 0.000010<=pLDiff<=0.200000, 0.000010<=pHDiff<=0.200000; -0.000010<=pL<=0.200000, 0.800000<=pH<=0.999990, 0.000010<=pLDiff<=0.200000, 0.200000<=pHDiff<=0.400000; -0.000010<=pL<=0.200000, 0.800000<=pH<=0.999990, 0.000010<=pLDiff<=0.200000, 0.400000<=pHDiff<=0.600000; -0.000010<=pL<=0.200000, 0.800000<=pH<=0.999990, 0.000010<=pLDiff<=0.200000, 0.600000<=pHDiff<=0.800000; -0.000010<=pL<=0.200000, 0.800000<=pH<=0.999990, 0.000010<=pLDiff<=0.200000, 0.800000<=pHDiff<=0.999990; -0.000010<=pL<=0.200000, 0.800000<=pH<=0.999990, 0.200000<=pLDiff<=0.400000, 0.000010<=pHDiff<=0.200000; -0.000010<=pL<=0.200000, 0.800000<=pH<=0.999990, 0.200000<=pLDiff<=0.400000, 0.200000<=pHDiff<=0.400000; -0.000010<=pL<=0.200000, 0.800000<=pH<=0.999990, 0.200000<=pLDiff<=0.400000, 0.400000<=pHDiff<=0.600000; -0.000010<=pL<=0.200000, 0.800000<=pH<=0.999990, 0.200000<=pLDiff<=0.400000, 0.600000<=pHDiff<=0.800000; -0.000010<=pL<=0.200000, 0.800000<=pH<=0.999990, 0.200000<=pLDiff<=0.400000, 0.800000<=pHDiff<=0.999990; -0.000010<=pL<=0.200000, 0.800000<=pH<=0.999990, 0.400000<=pLDiff<=0.600000, 0.000010<=pHDiff<=0.200000; -0.000010<=pL<=0.200000, 0.800000<=pH<=0.999990, 0.400000<=pLDiff<=0.600000, 0.200000<=pHDiff<=0.400000; -0.000010<=pL<=0.200000, 0.800000<=pH<=0.999990, 0.400000<=pLDiff<=0.600000, 0.400000<=pHDiff<=0.600000; -0.000010<=pL<=0.200000, 0.800000<=pH<=0.999990, 0.400000<=pLDiff<=0.600000, 0.600000<=pHDiff<=0.800000; -0.000010<=pL<=0.200000, 0.800000<=pH<=0.999990, 0.400000<=pLDiff<=0.600000, 0.800000<=pHDiff<=0.999990; -0.000010<=pL<=0.200000, 0.800000<=pH<=0.999990, 0.600000<=pLDiff<=0.800000, 0.000010<=pHDiff<=0.200000; -0.000010<=pL<=0.200000, 0.800000<=pH<=0.999990, 0.600000<=pLDiff<=0.800000, 0.200000<=pHDiff<=0.400000; -0.000010<=pL<=0.200000, 0.800000<=pH<=0.999990, 0.600000<=pLDiff<=0.800000, 0.400000<=pHDiff<=0.600000; -0.000010<=pL<=0.200000, 0.800000<=pH<=0.999990, 0.600000<=pLDiff<=0.800000, 0.600000<=pHDiff<=0.800000; -0.000010<=pL<=0.200000, 0.800000<=pH<=0.999990, 0.600000<=pLDiff<=0.800000, 0.800000<=pHDiff<=0.999990; -0.000010<=pL<=0.200000, 0.800000<=pH<=0.999990, 0.800000<=pLDiff<=0.999990, 0.000010<=pHDiff<=0.200000; -0.000010<=pL<=0.200000, 0.800000<=pH<=0.999990, 0.800000<=pLDiff<=0.999990, 0.200000<=pHDiff<=0.400000; -0.000010<=pL<=0.200000, 0.800000<=pH<=0.999990, 0.800000<=pLDiff<=0.999990, 0.400000<=pHDiff<=0.600000; -0.000010<=pL<=0.200000, 0.800000<=pH<=0.999990, 0.800000<=pLDiff<=0.999990, 0.600000<=pHDiff<=0.800000; -0.000010<=pL<=0.200000, 0.800000<=pH<=0.999990, 0.800000<=pLDiff<=0.999990, 0.800000<=pHDiff<=0.999990; -0.200000<=pL<=0.400000, 0.000010<=pH<=0.200000, 0.000010<=pLDiff<=0.200000, 0.000010<=pHDiff<=0.200000; -0.200000<=pL<=0.400000, 0.000010<=pH<=0.200000, 0.000010<=pLDiff<=0.200000, 0.200000<=pHDiff<=0.400000; -0.200000<=pL<=0.400000, 0.000010<=pH<=0.200000, 0.000010<=pLDiff<=0.200000, 0.400000<=pHDiff<=0.600000; -0.200000<=pL<=0.400000, 0.000010<=pH<=0.200000, 0.000010<=pLDiff<=0.200000, 0.600000<=pHDiff<=0.800000; -0.200000<=pL<=0.400000, 0.000010<=pH<=0.200000, 0.000010<=pLDiff<=0.200000, 0.800000<=pHDiff<=0.999990; -0.200000<=pL<=0.400000, 0.000010<=pH<=0.200000, 0.200000<=pLDiff<=0.400000, 0.000010<=pHDiff<=0.200000; -0.200000<=pL<=0.400000, 0.000010<=pH<=0.200000, 0.200000<=pLDiff<=0.400000, 0.200000<=pHDiff<=0.400000; -0.200000<=pL<=0.400000, 0.000010<=pH<=0.200000, 0.200000<=pLDiff<=0.400000, 0.400000<=pHDiff<=0.600000; -0.200000<=pL<=0.400000, 0.000010<=pH<=0.200000, 0.200000<=pLDiff<=0.400000, 0.600000<=pHDiff<=0.800000; -0.200000<=pL<=0.400000, 0.000010<=pH<=0.200000, 0.200000<=pLDiff<=0.400000, 0.800000<=pHDiff<=0.999990; -0.200000<=pL<=0.400000, 0.000010<=pH<=0.200000, 0.400000<=pLDiff<=0.600000, 0.000010<=pHDiff<=0.200000; -0.200000<=pL<=0.400000, 0.000010<=pH<=0.200000, 0.400000<=pLDiff<=0.600000, 0.200000<=pHDiff<=0.400000; -0.200000<=pL<=0.400000, 0.000010<=pH<=0.200000, 0.400000<=pLDiff<=0.600000, 0.400000<=pHDiff<=0.600000; -0.200000<=pL<=0.400000, 0.000010<=pH<=0.200000, 0.400000<=pLDiff<=0.600000, 0.600000<=pHDiff<=0.800000; -0.200000<=pL<=0.400000, 0.000010<=pH<=0.200000, 0.400000<=pLDiff<=0.600000, 0.800000<=pHDiff<=0.999990; -0.200000<=pL<=0.400000, 0.000010<=pH<=0.200000, 0.600000<=pLDiff<=0.800000, 0.000010<=pHDiff<=0.200000; -0.200000<=pL<=0.400000, 0.000010<=pH<=0.200000, 0.600000<=pLDiff<=0.800000, 0.200000<=pHDiff<=0.400000; -0.200000<=pL<=0.400000, 0.000010<=pH<=0.200000, 0.600000<=pLDiff<=0.800000, 0.400000<=pHDiff<=0.600000; -0.200000<=pL<=0.400000, 0.000010<=pH<=0.200000, 0.600000<=pLDiff<=0.800000, 0.600000<=pHDiff<=0.800000; -0.200000<=pL<=0.400000, 0.000010<=pH<=0.200000, 0.600000<=pLDiff<=0.800000, 0.800000<=pHDiff<=0.999990; -0.200000<=pL<=0.400000, 0.000010<=pH<=0.200000, 0.800000<=pLDiff<=0.999990, 0.000010<=pHDiff<=0.200000; -0.200000<=pL<=0.400000, 0.000010<=pH<=0.200000, 0.800000<=pLDiff<=0.999990, 0.200000<=pHDiff<=0.400000; -0.200000<=pL<=0.400000, 0.000010<=pH<=0.200000, 0.800000<=pLDiff<=0.999990, 0.400000<=pHDiff<=0.600000; -0.200000<=pL<=0.400000, 0.000010<=pH<=0.200000, 0.800000<=pLDiff<=0.999990, 0.600000<=pHDiff<=0.800000; -0.200000<=pL<=0.400000, 0.000010<=pH<=0.200000, 0.800000<=pLDiff<=0.999990, 0.800000<=pHDiff<=0.999990; -0.200000<=pL<=0.400000, 0.200000<=pH<=0.400000, 0.000010<=pLDiff<=0.200000, 0.000010<=pHDiff<=0.200000; -0.200000<=pL<=0.400000, 0.200000<=pH<=0.400000, 0.000010<=pLDiff<=0.200000, 0.200000<=pHDiff<=0.400000; -0.200000<=pL<=0.400000, 0.200000<=pH<=0.400000, 0.000010<=pLDiff<=0.200000, 0.400000<=pHDiff<=0.600000; -0.200000<=pL<=0.400000, 0.200000<=pH<=0.400000, 0.000010<=pLDiff<=0.200000, 0.600000<=pHDiff<=0.800000; -0.200000<=pL<=0.400000, 0.200000<=pH<=0.400000, 0.000010<=pLDiff<=0.200000, 0.800000<=pHDiff<=0.999990; -0.200000<=pL<=0.400000, 0.200000<=pH<=0.400000, 0.200000<=pLDiff<=0.400000, 0.000010<=pHDiff<=0.200000; -0.200000<=pL<=0.400000, 0.200000<=pH<=0.400000, 0.200000<=pLDiff<=0.400000, 0.200000<=pHDiff<=0.400000; -0.200000<=pL<=0.400000, 0.200000<=pH<=0.400000, 0.200000<=pLDiff<=0.400000, 0.400000<=pHDiff<=0.600000; -0.200000<=pL<=0.400000, 0.200000<=pH<=0.400000, 0.200000<=pLDiff<=0.400000, 0.600000<=pHDiff<=0.800000; -0.200000<=pL<=0.400000, 0.200000<=pH<=0.400000, 0.200000<=pLDiff<=0.400000, 0.800000<=pHDiff<=0.999990; -0.200000<=pL<=0.400000, 0.200000<=pH<=0.400000, 0.400000<=pLDiff<=0.600000, 0.000010<=pHDiff<=0.200000; -0.200000<=pL<=0.400000, 0.200000<=pH<=0.400000, 0.400000<=pLDiff<=0.600000, 0.200000<=pHDiff<=0.400000; -0.200000<=pL<=0.400000, 0.200000<=pH<=0.400000, 0.400000<=pLDiff<=0.600000, 0.400000<=pHDiff<=0.600000; -0.200000<=pL<=0.400000, 0.200000<=pH<=0.400000, 0.400000<=pLDiff<=0.600000, 0.600000<=pHDiff<=0.800000; -0.200000<=pL<=0.400000, 0.200000<=pH<=0.400000, 0.400000<=pLDiff<=0.600000, 0.800000<=pHDiff<=0.999990; -0.200000<=pL<=0.400000, 0.200000<=pH<=0.400000, 0.600000<=pLDiff<=0.800000, 0.000010<=pHDiff<=0.200000; -0.200000<=pL<=0.400000, 0.200000<=pH<=0.400000, 0.600000<=pLDiff<=0.800000, 0.200000<=pHDiff<=0.400000; -0.200000<=pL<=0.400000, 0.200000<=pH<=0.400000, 0.600000<=pLDiff<=0.800000, 0.400000<=pHDiff<=0.600000; -0.200000<=pL<=0.400000, 0.200000<=pH<=0.400000, 0.600000<=pLDiff<=0.800000, 0.600000<=pHDiff<=0.800000; -0.200000<=pL<=0.400000, 0.200000<=pH<=0.400000, 0.600000<=pLDiff<=0.800000, 0.800000<=pHDiff<=0.999990; -0.200000<=pL<=0.400000, 0.200000<=pH<=0.400000, 0.800000<=pLDiff<=0.999990, 0.000010<=pHDiff<=0.200000; -0.200000<=pL<=0.400000, 0.200000<=pH<=0.400000, 0.800000<=pLDiff<=0.999990, 0.200000<=pHDiff<=0.400000; -0.200000<=pL<=0.400000, 0.200000<=pH<=0.400000, 0.800000<=pLDiff<=0.999990, 0.400000<=pHDiff<=0.600000; -0.200000<=pL<=0.400000, 0.200000<=pH<=0.400000, 0.800000<=pLDiff<=0.999990, 0.600000<=pHDiff<=0.800000; -0.200000<=pL<=0.400000, 0.200000<=pH<=0.400000, 0.800000<=pLDiff<=0.999990, 0.800000<=pHDiff<=0.999990; -0.200000<=pL<=0.400000, 0.400000<=pH<=0.600000, 0.000010<=pLDiff<=0.200000, 0.000010<=pHDiff<=0.200000; -0.200000<=pL<=0.400000, 0.400000<=pH<=0.600000, 0.000010<=pLDiff<=0.200000, 0.200000<=pHDiff<=0.400000; -0.200000<=pL<=0.400000, 0.400000<=pH<=0.600000, 0.000010<=pLDiff<=0.200000, 0.400000<=pHDiff<=0.600000; -0.200000<=pL<=0.400000, 0.400000<=pH<=0.600000, 0.000010<=pLDiff<=0.200000, 0.600000<=pHDiff<=0.800000; -0.200000<=pL<=0.400000, 0.400000<=pH<=0.600000, 0.000010<=pLDiff<=0.200000, 0.800000<=pHDiff<=0.999990; -0.200000<=pL<=0.400000, 0.400000<=pH<=0.600000, 0.200000<=pLDiff<=0.400000, 0.000010<=pHDiff<=0.200000; -0.200000<=pL<=0.400000, 0.400000<=pH<=0.600000, 0.200000<=pLDiff<=0.400000, 0.200000<=pHDiff<=0.400000; -0.200000<=pL<=0.400000, 0.400000<=pH<=0.600000, 0.200000<=pLDiff<=0.400000, 0.400000<=pHDiff<=0.600000; -0.200000<=pL<=0.400000, 0.400000<=pH<=0.600000, 0.200000<=pLDiff<=0.400000, 0.600000<=pHDiff<=0.800000; -0.200000<=pL<=0.400000, 0.400000<=pH<=0.600000, 0.200000<=pLDiff<=0.400000, 0.800000<=pHDiff<=0.999990; -0.200000<=pL<=0.400000, 0.400000<=pH<=0.600000, 0.400000<=pLDiff<=0.600000, 0.000010<=pHDiff<=0.200000; -0.200000<=pL<=0.400000, 0.400000<=pH<=0.600000, 0.400000<=pLDiff<=0.600000, 0.200000<=pHDiff<=0.400000; -0.200000<=pL<=0.400000, 0.400000<=pH<=0.600000, 0.400000<=pLDiff<=0.600000, 0.400000<=pHDiff<=0.600000; -0.200000<=pL<=0.400000, 0.400000<=pH<=0.600000, 0.400000<=pLDiff<=0.600000, 0.600000<=pHDiff<=0.800000; -0.200000<=pL<=0.400000, 0.400000<=pH<=0.600000, 0.400000<=pLDiff<=0.600000, 0.800000<=pHDiff<=0.999990; -0.200000<=pL<=0.400000, 0.400000<=pH<=0.600000, 0.600000<=pLDiff<=0.800000, 0.000010<=pHDiff<=0.200000; -0.200000<=pL<=0.400000, 0.400000<=pH<=0.600000, 0.600000<=pLDiff<=0.800000, 0.200000<=pHDiff<=0.400000; -0.200000<=pL<=0.400000, 0.400000<=pH<=0.600000, 0.600000<=pLDiff<=0.800000, 0.400000<=pHDiff<=0.600000; -0.200000<=pL<=0.400000, 0.400000<=pH<=0.600000, 0.600000<=pLDiff<=0.800000, 0.600000<=pHDiff<=0.800000; -0.200000<=pL<=0.400000, 0.400000<=pH<=0.600000, 0.600000<=pLDiff<=0.800000, 0.800000<=pHDiff<=0.999990; -0.200000<=pL<=0.400000, 0.400000<=pH<=0.600000, 0.800000<=pLDiff<=0.999990, 0.000010<=pHDiff<=0.200000; -0.200000<=pL<=0.400000, 0.400000<=pH<=0.600000, 0.800000<=pLDiff<=0.999990, 0.200000<=pHDiff<=0.400000; -0.200000<=pL<=0.400000, 0.400000<=pH<=0.600000, 0.800000<=pLDiff<=0.999990, 0.400000<=pHDiff<=0.600000; -0.200000<=pL<=0.400000, 0.400000<=pH<=0.600000, 0.800000<=pLDiff<=0.999990, 0.600000<=pHDiff<=0.800000; -0.200000<=pL<=0.400000, 0.400000<=pH<=0.600000, 0.800000<=pLDiff<=0.999990, 0.800000<=pHDiff<=0.999990; -0.200000<=pL<=0.400000, 0.600000<=pH<=0.800000, 0.000010<=pLDiff<=0.200000, 0.000010<=pHDiff<=0.200000; -0.200000<=pL<=0.400000, 0.600000<=pH<=0.800000, 0.000010<=pLDiff<=0.200000, 0.200000<=pHDiff<=0.400000; -0.200000<=pL<=0.400000, 0.600000<=pH<=0.800000, 0.000010<=pLDiff<=0.200000, 0.400000<=pHDiff<=0.600000; -0.200000<=pL<=0.400000, 0.600000<=pH<=0.800000, 0.000010<=pLDiff<=0.200000, 0.600000<=pHDiff<=0.800000; -0.200000<=pL<=0.400000, 0.600000<=pH<=0.800000, 0.000010<=pLDiff<=0.200000, 0.800000<=pHDiff<=0.999990; -0.200000<=pL<=0.400000, 0.600000<=pH<=0.800000, 0.200000<=pLDiff<=0.400000, 0.000010<=pHDiff<=0.200000; -0.200000<=pL<=0.400000, 0.600000<=pH<=0.800000, 0.200000<=pLDiff<=0.400000, 0.200000<=pHDiff<=0.400000; -0.200000<=pL<=0.400000, 0.600000<=pH<=0.800000, 0.200000<=pLDiff<=0.400000, 0.400000<=pHDiff<=0.600000; -0.200000<=pL<=0.400000, 0.600000<=pH<=0.800000, 0.200000<=pLDiff<=0.400000, 0.600000<=pHDiff<=0.800000; -0.200000<=pL<=0.400000, 0.600000<=pH<=0.800000, 0.200000<=pLDiff<=0.400000, 0.800000<=pHDiff<=0.999990; -0.200000<=pL<=0.400000, 0.600000<=pH<=0.800000, 0.400000<=pLDiff<=0.600000, 0.000010<=pHDiff<=0.200000; -0.200000<=pL<=0.400000, 0.600000<=pH<=0.800000, 0.400000<=pLDiff<=0.600000, 0.200000<=pHDiff<=0.400000; -0.200000<=pL<=0.400000, 0.600000<=pH<=0.800000, 0.400000<=pLDiff<=0.600000, 0.400000<=pHDiff<=0.600000; -0.200000<=pL<=0.400000, 0.600000<=pH<=0.800000, 0.400000<=pLDiff<=0.600000, 0.600000<=pHDiff<=0.800000; -0.200000<=pL<=0.400000, 0.600000<=pH<=0.800000, 0.400000<=pLDiff<=0.600000, 0.800000<=pHDiff<=0.999990; -0.200000<=pL<=0.400000, 0.600000<=pH<=0.800000, 0.600000<=pLDiff<=0.800000, 0.000010<=pHDiff<=0.200000; -0.200000<=pL<=0.400000, 0.600000<=pH<=0.800000, 0.600000<=pLDiff<=0.800000, 0.200000<=pHDiff<=0.400000; -0.200000<=pL<=0.400000, 0.600000<=pH<=0.800000, 0.600000<=pLDiff<=0.800000, 0.400000<=pHDiff<=0.600000; -0.200000<=pL<=0.400000, 0.600000<=pH<=0.800000, 0.600000<=pLDiff<=0.800000, 0.600000<=pHDiff<=0.800000; -0.200000<=pL<=0.400000, 0.600000<=pH<=0.800000, 0.600000<=pLDiff<=0.800000, 0.800000<=pHDiff<=0.999990; -0.200000<=pL<=0.400000, 0.600000<=pH<=0.800000, 0.800000<=pLDiff<=0.999990, 0.000010<=pHDiff<=0.200000; -0.200000<=pL<=0.400000, 0.600000<=pH<=0.800000, 0.800000<=pLDiff<=0.999990, 0.200000<=pHDiff<=0.400000; -0.200000<=pL<=0.400000, 0.600000<=pH<=0.800000, 0.800000<=pLDiff<=0.999990, 0.400000<=pHDiff<=0.600000; -0.200000<=pL<=0.400000, 0.600000<=pH<=0.800000, 0.800000<=pLDiff<=0.999990, 0.600000<=pHDiff<=0.800000; -0.200000<=pL<=0.400000, 0.600000<=pH<=0.800000, 0.800000<=pLDiff<=0.999990, 0.800000<=pHDiff<=0.999990; -0.200000<=pL<=0.400000, 0.800000<=pH<=0.999990, 0.000010<=pLDiff<=0.200000, 0.000010<=pHDiff<=0.200000; -0.200000<=pL<=0.400000, 0.800000<=pH<=0.999990, 0.000010<=pLDiff<=0.200000, 0.200000<=pHDiff<=0.400000; -0.200000<=pL<=0.400000, 0.800000<=pH<=0.999990, 0.000010<=pLDiff<=0.200000, 0.400000<=pHDiff<=0.600000; -0.200000<=pL<=0.400000, 0.800000<=pH<=0.999990, 0.000010<=pLDiff<=0.200000, 0.600000<=pHDiff<=0.800000; -0.200000<=pL<=0.400000, 0.800000<=pH<=0.999990, 0.000010<=pLDiff<=0.200000, 0.800000<=pHDiff<=0.999990; -0.200000<=pL<=0.400000, 0.800000<=pH<=0.999990, 0.200000<=pLDiff<=0.400000, 0.000010<=pHDiff<=0.200000; -0.200000<=pL<=0.400000, 0.800000<=pH<=0.999990, 0.200000<=pLDiff<=0.400000, 0.200000<=pHDiff<=0.400000; -0.200000<=pL<=0.400000, 0.800000<=pH<=0.999990, 0.200000<=pLDiff<=0.400000, 0.400000<=pHDiff<=0.600000; -0.200000<=pL<=0.400000, 0.800000<=pH<=0.999990, 0.200000<=pLDiff<=0.400000, 0.600000<=pHDiff<=0.800000; -0.200000<=pL<=0.400000, 0.800000<=pH<=0.999990, 0.200000<=pLDiff<=0.400000, 0.800000<=pHDiff<=0.999990; -0.200000<=pL<=0.400000, 0.800000<=pH<=0.999990, 0.400000<=pLDiff<=0.600000, 0.000010<=pHDiff<=0.200000; -0.200000<=pL<=0.400000, 0.800000<=pH<=0.999990, 0.400000<=pLDiff<=0.600000, 0.200000<=pHDiff<=0.400000; -0.200000<=pL<=0.400000, 0.800000<=pH<=0.999990, 0.400000<=pLDiff<=0.600000, 0.400000<=pHDiff<=0.600000; -0.200000<=pL<=0.400000, 0.800000<=pH<=0.999990, 0.400000<=pLDiff<=0.600000, 0.600000<=pHDiff<=0.800000; -0.200000<=pL<=0.400000, 0.800000<=pH<=0.999990, 0.400000<=pLDiff<=0.600000, 0.800000<=pHDiff<=0.999990; -0.200000<=pL<=0.400000, 0.800000<=pH<=0.999990, 0.600000<=pLDiff<=0.800000, 0.000010<=pHDiff<=0.200000; -0.200000<=pL<=0.400000, 0.800000<=pH<=0.999990, 0.600000<=pLDiff<=0.800000, 0.200000<=pHDiff<=0.400000; -0.200000<=pL<=0.400000, 0.800000<=pH<=0.999990, 0.600000<=pLDiff<=0.800000, 0.400000<=pHDiff<=0.600000; -0.200000<=pL<=0.400000, 0.800000<=pH<=0.999990, 0.600000<=pLDiff<=0.800000, 0.600000<=pHDiff<=0.800000; -0.200000<=pL<=0.400000, 0.800000<=pH<=0.999990, 0.600000<=pLDiff<=0.800000, 0.800000<=pHDiff<=0.999990; -0.200000<=pL<=0.400000, 0.800000<=pH<=0.999990, 0.800000<=pLDiff<=0.999990, 0.000010<=pHDiff<=0.200000; -0.200000<=pL<=0.400000, 0.800000<=pH<=0.999990, 0.800000<=pLDiff<=0.999990, 0.200000<=pHDiff<=0.400000; -0.200000<=pL<=0.400000, 0.800000<=pH<=0.999990, 0.800000<=pLDiff<=0.999990, 0.400000<=pHDiff<=0.600000; -0.200000<=pL<=0.400000, 0.800000<=pH<=0.999990, 0.800000<=pLDiff<=0.999990, 0.600000<=pHDiff<=0.800000; -0.200000<=pL<=0.400000, 0.800000<=pH<=0.999990, 0.800000<=pLDiff<=0.999990, 0.800000<=pHDiff<=0.999990; -0.400000<=pL<=0.600000, 0.000010<=pH<=0.200000, 0.000010<=pLDiff<=0.200000, 0.000010<=pHDiff<=0.200000; -0.400000<=pL<=0.600000, 0.000010<=pH<=0.200000, 0.000010<=pLDiff<=0.200000, 0.200000<=pHDiff<=0.400000; -0.400000<=pL<=0.600000, 0.000010<=pH<=0.200000, 0.000010<=pLDiff<=0.200000, 0.400000<=pHDiff<=0.600000; -0.400000<=pL<=0.600000, 0.000010<=pH<=0.200000, 0.000010<=pLDiff<=0.200000, 0.600000<=pHDiff<=0.800000; -0.400000<=pL<=0.600000, 0.000010<=pH<=0.200000, 0.000010<=pLDiff<=0.200000, 0.800000<=pHDiff<=0.999990; -0.400000<=pL<=0.600000, 0.000010<=pH<=0.200000, 0.200000<=pLDiff<=0.400000, 0.000010<=pHDiff<=0.200000; -0.400000<=pL<=0.600000, 0.000010<=pH<=0.200000, 0.200000<=pLDiff<=0.400000, 0.200000<=pHDiff<=0.400000; -0.400000<=pL<=0.600000, 0.000010<=pH<=0.200000, 0.200000<=pLDiff<=0.400000, 0.400000<=pHDiff<=0.600000; -0.400000<=pL<=0.600000, 0.000010<=pH<=0.200000, 0.200000<=pLDiff<=0.400000, 0.600000<=pHDiff<=0.800000; -0.400000<=pL<=0.600000, 0.000010<=pH<=0.200000, 0.200000<=pLDiff<=0.400000, 0.800000<=pHDiff<=0.999990; -0.400000<=pL<=0.600000, 0.000010<=pH<=0.200000, 0.400000<=pLDiff<=0.600000, 0.000010<=pHDiff<=0.200000; -0.400000<=pL<=0.600000, 0.000010<=pH<=0.200000, 0.400000<=pLDiff<=0.600000, 0.200000<=pHDiff<=0.400000; -0.400000<=pL<=0.600000, 0.000010<=pH<=0.200000, 0.400000<=pLDiff<=0.600000, 0.400000<=pHDiff<=0.600000; -0.400000<=pL<=0.600000, 0.000010<=pH<=0.200000, 0.400000<=pLDiff<=0.600000, 0.600000<=pHDiff<=0.800000; -0.400000<=pL<=0.600000, 0.000010<=pH<=0.200000, 0.400000<=pLDiff<=0.600000, 0.800000<=pHDiff<=0.999990; -0.400000<=pL<=0.600000, 0.000010<=pH<=0.200000, 0.600000<=pLDiff<=0.800000, 0.000010<=pHDiff<=0.200000; -0.400000<=pL<=0.600000, 0.000010<=pH<=0.200000, 0.600000<=pLDiff<=0.800000, 0.200000<=pHDiff<=0.400000; -0.400000<=pL<=0.600000, 0.000010<=pH<=0.200000, 0.600000<=pLDiff<=0.800000, 0.400000<=pHDiff<=0.600000; -0.400000<=pL<=0.600000, 0.000010<=pH<=0.200000, 0.600000<=pLDiff<=0.800000, 0.600000<=pHDiff<=0.800000; -0.400000<=pL<=0.600000, 0.000010<=pH<=0.200000, 0.600000<=pLDiff<=0.800000, 0.800000<=pHDiff<=0.999990; -0.400000<=pL<=0.600000, 0.000010<=pH<=0.200000, 0.800000<=pLDiff<=0.999990, 0.000010<=pHDiff<=0.200000; -0.400000<=pL<=0.600000, 0.000010<=pH<=0.200000, 0.800000<=pLDiff<=0.999990, 0.200000<=pHDiff<=0.400000; -0.400000<=pL<=0.600000, 0.000010<=pH<=0.200000, 0.800000<=pLDiff<=0.999990, 0.400000<=pHDiff<=0.600000; -0.400000<=pL<=0.600000, 0.000010<=pH<=0.200000, 0.800000<=pLDiff<=0.999990, 0.600000<=pHDiff<=0.800000; -0.400000<=pL<=0.600000, 0.000010<=pH<=0.200000, 0.800000<=pLDiff<=0.999990, 0.800000<=pHDiff<=0.999990; -0.400000<=pL<=0.600000, 0.200000<=pH<=0.400000, 0.000010<=pLDiff<=0.200000, 0.000010<=pHDiff<=0.200000; -0.400000<=pL<=0.600000, 0.200000<=pH<=0.400000, 0.000010<=pLDiff<=0.200000, 0.200000<=pHDiff<=0.400000; -0.400000<=pL<=0.600000, 0.200000<=pH<=0.400000, 0.000010<=pLDiff<=0.200000, 0.400000<=pHDiff<=0.600000; -0.400000<=pL<=0.600000, 0.200000<=pH<=0.400000, 0.000010<=pLDiff<=0.200000, 0.600000<=pHDiff<=0.800000; -0.400000<=pL<=0.600000, 0.200000<=pH<=0.400000, 0.000010<=pLDiff<=0.200000, 0.800000<=pHDiff<=0.999990; -0.400000<=pL<=0.600000, 0.200000<=pH<=0.400000, 0.200000<=pLDiff<=0.400000, 0.000010<=pHDiff<=0.200000; -0.400000<=pL<=0.600000, 0.200000<=pH<=0.400000, 0.200000<=pLDiff<=0.400000, 0.200000<=pHDiff<=0.400000; -0.400000<=pL<=0.600000, 0.200000<=pH<=0.400000, 0.200000<=pLDiff<=0.400000, 0.400000<=pHDiff<=0.600000; -0.400000<=pL<=0.600000, 0.200000<=pH<=0.400000, 0.200000<=pLDiff<=0.400000, 0.600000<=pHDiff<=0.800000; -0.400000<=pL<=0.600000, 0.200000<=pH<=0.400000, 0.200000<=pLDiff<=0.400000, 0.800000<=pHDiff<=0.999990; -0.400000<=pL<=0.600000, 0.200000<=pH<=0.400000, 0.400000<=pLDiff<=0.600000, 0.000010<=pHDiff<=0.200000; -0.400000<=pL<=0.600000, 0.200000<=pH<=0.400000, 0.400000<=pLDiff<=0.600000, 0.200000<=pHDiff<=0.400000; -0.400000<=pL<=0.600000, 0.200000<=pH<=0.400000, 0.400000<=pLDiff<=0.600000, 0.400000<=pHDiff<=0.600000; -0.400000<=pL<=0.600000, 0.200000<=pH<=0.400000, 0.400000<=pLDiff<=0.600000, 0.600000<=pHDiff<=0.800000; -0.400000<=pL<=0.600000, 0.200000<=pH<=0.400000, 0.400000<=pLDiff<=0.600000, 0.800000<=pHDiff<=0.999990; -0.400000<=pL<=0.600000, 0.200000<=pH<=0.400000, 0.600000<=pLDiff<=0.800000, 0.000010<=pHDiff<=0.200000; -0.400000<=pL<=0.600000, 0.200000<=pH<=0.400000, 0.600000<=pLDiff<=0.800000, 0.200000<=pHDiff<=0.400000; -0.400000<=pL<=0.600000, 0.200000<=pH<=0.400000, 0.600000<=pLDiff<=0.800000, 0.400000<=pHDiff<=0.600000; -0.400000<=pL<=0.600000, 0.200000<=pH<=0.400000, 0.600000<=pLDiff<=0.800000, 0.600000<=pHDiff<=0.800000; -0.400000<=pL<=0.600000, 0.200000<=pH<=0.400000, 0.600000<=pLDiff<=0.800000, 0.800000<=pHDiff<=0.999990; -0.400000<=pL<=0.600000, 0.200000<=pH<=0.400000, 0.800000<=pLDiff<=0.999990, 0.000010<=pHDiff<=0.200000; -0.400000<=pL<=0.600000, 0.200000<=pH<=0.400000, 0.800000<=pLDiff<=0.999990, 0.200000<=pHDiff<=0.400000; -0.400000<=pL<=0.600000, 0.200000<=pH<=0.400000, 0.800000<=pLDiff<=0.999990, 0.400000<=pHDiff<=0.600000; -0.400000<=pL<=0.600000, 0.200000<=pH<=0.400000, 0.800000<=pLDiff<=0.999990, 0.600000<=pHDiff<=0.800000; -0.400000<=pL<=0.600000, 0.200000<=pH<=0.400000, 0.800000<=pLDiff<=0.999990, 0.800000<=pHDiff<=0.999990; -0.400000<=pL<=0.600000, 0.400000<=pH<=0.600000, 0.000010<=pLDiff<=0.200000, 0.000010<=pHDiff<=0.200000; -0.400000<=pL<=0.600000, 0.400000<=pH<=0.600000, 0.000010<=pLDiff<=0.200000, 0.200000<=pHDiff<=0.400000; -0.400000<=pL<=0.600000, 0.400000<=pH<=0.600000, 0.000010<=pLDiff<=0.200000, 0.400000<=pHDiff<=0.600000; -0.400000<=pL<=0.600000, 0.400000<=pH<=0.600000, 0.000010<=pLDiff<=0.200000, 0.600000<=pHDiff<=0.800000; -0.400000<=pL<=0.600000, 0.400000<=pH<=0.600000, 0.000010<=pLDiff<=0.200000, 0.800000<=pHDiff<=0.999990; -0.400000<=pL<=0.600000, 0.400000<=pH<=0.600000, 0.200000<=pLDiff<=0.400000, 0.000010<=pHDiff<=0.200000; -0.400000<=pL<=0.600000, 0.400000<=pH<=0.600000, 0.200000<=pLDiff<=0.400000, 0.200000<=pHDiff<=0.400000; -0.400000<=pL<=0.600000, 0.400000<=pH<=0.600000, 0.200000<=pLDiff<=0.400000, 0.400000<=pHDiff<=0.600000; -0.400000<=pL<=0.600000, 0.400000<=pH<=0.600000, 0.200000<=pLDiff<=0.400000, 0.600000<=pHDiff<=0.800000; -0.400000<=pL<=0.600000, 0.400000<=pH<=0.600000, 0.200000<=pLDiff<=0.400000, 0.800000<=pHDiff<=0.999990; -0.400000<=pL<=0.600000, 0.400000<=pH<=0.600000, 0.400000<=pLDiff<=0.600000, 0.000010<=pHDiff<=0.200000; -0.400000<=pL<=0.600000, 0.400000<=pH<=0.600000, 0.400000<=pLDiff<=0.600000, 0.200000<=pHDiff<=0.400000; -0.400000<=pL<=0.600000, 0.400000<=pH<=0.600000, 0.400000<=pLDiff<=0.600000, 0.400000<=pHDiff<=0.600000; -0.400000<=pL<=0.600000, 0.400000<=pH<=0.600000, 0.400000<=pLDiff<=0.600000, 0.600000<=pHDiff<=0.800000; -0.400000<=pL<=0.600000, 0.400000<=pH<=0.600000, 0.400000<=pLDiff<=0.600000, 0.800000<=pHDiff<=0.999990; -0.400000<=pL<=0.600000, 0.400000<=pH<=0.600000, 0.600000<=pLDiff<=0.800000, 0.000010<=pHDiff<=0.200000; -0.400000<=pL<=0.600000, 0.400000<=pH<=0.600000, 0.600000<=pLDiff<=0.800000, 0.200000<=pHDiff<=0.400000; -0.400000<=pL<=0.600000, 0.400000<=pH<=0.600000, 0.600000<=pLDiff<=0.800000, 0.400000<=pHDiff<=0.600000; -0.400000<=pL<=0.600000, 0.400000<=pH<=0.600000, 0.600000<=pLDiff<=0.800000, 0.600000<=pHDiff<=0.800000; -0.400000<=pL<=0.600000, 0.400000<=pH<=0.600000, 0.600000<=pLDiff<=0.800000, 0.800000<=pHDiff<=0.999990; -0.400000<=pL<=0.600000, 0.400000<=pH<=0.600000, 0.800000<=pLDiff<=0.999990, 0.000010<=pHDiff<=0.200000; -0.400000<=pL<=0.600000, 0.400000<=pH<=0.600000, 0.800000<=pLDiff<=0.999990, 0.200000<=pHDiff<=0.400000; -0.400000<=pL<=0.600000, 0.400000<=pH<=0.600000, 0.800000<=pLDiff<=0.999990, 0.400000<=pHDiff<=0.600000; -0.400000<=pL<=0.600000, 0.400000<=pH<=0.600000, 0.800000<=pLDiff<=0.999990, 0.600000<=pHDiff<=0.800000; -0.400000<=pL<=0.600000, 0.400000<=pH<=0.600000, 0.800000<=pLDiff<=0.999990, 0.800000<=pHDiff<=0.999990; -0.400000<=pL<=0.600000, 0.600000<=pH<=0.800000, 0.000010<=pLDiff<=0.200000, 0.000010<=pHDiff<=0.200000; -0.400000<=pL<=0.600000, 0.600000<=pH<=0.800000, 0.000010<=pLDiff<=0.200000, 0.200000<=pHDiff<=0.400000; -0.400000<=pL<=0.600000, 0.600000<=pH<=0.800000, 0.000010<=pLDiff<=0.200000, 0.400000<=pHDiff<=0.600000; -0.400000<=pL<=0.600000, 0.600000<=pH<=0.800000, 0.000010<=pLDiff<=0.200000, 0.600000<=pHDiff<=0.800000; -0.400000<=pL<=0.600000, 0.600000<=pH<=0.800000, 0.000010<=pLDiff<=0.200000, 0.800000<=pHDiff<=0.999990; -0.400000<=pL<=0.600000, 0.600000<=pH<=0.800000, 0.200000<=pLDiff<=0.400000, 0.000010<=pHDiff<=0.200000; -0.400000<=pL<=0.600000, 0.600000<=pH<=0.800000, 0.200000<=pLDiff<=0.400000, 0.200000<=pHDiff<=0.400000; -0.400000<=pL<=0.600000, 0.600000<=pH<=0.800000, 0.200000<=pLDiff<=0.400000, 0.400000<=pHDiff<=0.600000; -0.400000<=pL<=0.600000, 0.600000<=pH<=0.800000, 0.200000<=pLDiff<=0.400000, 0.600000<=pHDiff<=0.800000; -0.400000<=pL<=0.600000, 0.600000<=pH<=0.800000, 0.200000<=pLDiff<=0.400000, 0.800000<=pHDiff<=0.999990; -0.400000<=pL<=0.600000, 0.600000<=pH<=0.800000, 0.400000<=pLDiff<=0.600000, 0.000010<=pHDiff<=0.200000; -0.400000<=pL<=0.600000, 0.600000<=pH<=0.800000, 0.400000<=pLDiff<=0.600000, 0.200000<=pHDiff<=0.400000; -0.400000<=pL<=0.600000, 0.600000<=pH<=0.800000, 0.400000<=pLDiff<=0.600000, 0.400000<=pHDiff<=0.600000; -0.400000<=pL<=0.600000, 0.600000<=pH<=0.800000, 0.400000<=pLDiff<=0.600000, 0.600000<=pHDiff<=0.800000; -0.400000<=pL<=0.600000, 0.600000<=pH<=0.800000, 0.400000<=pLDiff<=0.600000, 0.800000<=pHDiff<=0.999990; -0.400000<=pL<=0.600000, 0.600000<=pH<=0.800000, 0.600000<=pLDiff<=0.800000, 0.000010<=pHDiff<=0.200000; -0.400000<=pL<=0.600000, 0.600000<=pH<=0.800000, 0.600000<=pLDiff<=0.800000, 0.200000<=pHDiff<=0.400000; -0.400000<=pL<=0.600000, 0.600000<=pH<=0.800000, 0.600000<=pLDiff<=0.800000, 0.400000<=pHDiff<=0.600000; -0.400000<=pL<=0.600000, 0.600000<=pH<=0.800000, 0.600000<=pLDiff<=0.800000, 0.600000<=pHDiff<=0.800000; -0.400000<=pL<=0.600000, 0.600000<=pH<=0.800000, 0.600000<=pLDiff<=0.800000, 0.800000<=pHDiff<=0.999990; -0.400000<=pL<=0.600000, 0.600000<=pH<=0.800000, 0.800000<=pLDiff<=0.999990, 0.000010<=pHDiff<=0.200000; -0.400000<=pL<=0.600000, 0.600000<=pH<=0.800000, 0.800000<=pLDiff<=0.999990, 0.200000<=pHDiff<=0.400000; -0.400000<=pL<=0.600000, 0.600000<=pH<=0.800000, 0.800000<=pLDiff<=0.999990, 0.400000<=pHDiff<=0.600000; -0.400000<=pL<=0.600000, 0.600000<=pH<=0.800000, 0.800000<=pLDiff<=0.999990, 0.600000<=pHDiff<=0.800000; -0.400000<=pL<=0.600000, 0.600000<=pH<=0.800000, 0.800000<=pLDiff<=0.999990, 0.800000<=pHDiff<=0.999990; -0.400000<=pL<=0.600000, 0.800000<=pH<=0.999990, 0.000010<=pLDiff<=0.200000, 0.000010<=pHDiff<=0.200000; -0.400000<=pL<=0.600000, 0.800000<=pH<=0.999990, 0.000010<=pLDiff<=0.200000, 0.200000<=pHDiff<=0.400000; -0.400000<=pL<=0.600000, 0.800000<=pH<=0.999990, 0.000010<=pLDiff<=0.200000, 0.400000<=pHDiff<=0.600000; -0.400000<=pL<=0.600000, 0.800000<=pH<=0.999990, 0.000010<=pLDiff<=0.200000, 0.600000<=pHDiff<=0.800000; -0.400000<=pL<=0.600000, 0.800000<=pH<=0.999990, 0.000010<=pLDiff<=0.200000, 0.800000<=pHDiff<=0.999990; -0.400000<=pL<=0.600000, 0.800000<=pH<=0.999990, 0.200000<=pLDiff<=0.400000, 0.000010<=pHDiff<=0.200000; -0.400000<=pL<=0.600000, 0.800000<=pH<=0.999990, 0.200000<=pLDiff<=0.400000, 0.200000<=pHDiff<=0.400000; -0.400000<=pL<=0.600000, 0.800000<=pH<=0.999990, 0.200000<=pLDiff<=0.400000, 0.400000<=pHDiff<=0.600000; -0.400000<=pL<=0.600000, 0.800000<=pH<=0.999990, 0.200000<=pLDiff<=0.400000, 0.600000<=pHDiff<=0.800000; -0.400000<=pL<=0.600000, 0.800000<=pH<=0.999990, 0.200000<=pLDiff<=0.400000, 0.800000<=pHDiff<=0.999990; -0.400000<=pL<=0.600000, 0.800000<=pH<=0.999990, 0.400000<=pLDiff<=0.600000, 0.000010<=pHDiff<=0.200000; -0.400000<=pL<=0.600000, 0.800000<=pH<=0.999990, 0.400000<=pLDiff<=0.600000, 0.200000<=pHDiff<=0.400000; -0.400000<=pL<=0.600000, 0.800000<=pH<=0.999990, 0.400000<=pLDiff<=0.600000, 0.400000<=pHDiff<=0.600000; -0.400000<=pL<=0.600000, 0.800000<=pH<=0.999990, 0.400000<=pLDiff<=0.600000, 0.600000<=pHDiff<=0.800000; -0.400000<=pL<=0.600000, 0.800000<=pH<=0.999990, 0.400000<=pLDiff<=0.600000, 0.800000<=pHDiff<=0.999990; -0.400000<=pL<=0.600000, 0.800000<=pH<=0.999990, 0.600000<=pLDiff<=0.800000, 0.000010<=pHDiff<=0.200000; -0.400000<=pL<=0.600000, 0.800000<=pH<=0.999990, 0.600000<=pLDiff<=0.800000, 0.200000<=pHDiff<=0.400000; -0.400000<=pL<=0.600000, 0.800000<=pH<=0.999990, 0.600000<=pLDiff<=0.800000, 0.400000<=pHDiff<=0.600000; -0.400000<=pL<=0.600000, 0.800000<=pH<=0.999990, 0.600000<=pLDiff<=0.800000, 0.600000<=pHDiff<=0.800000; -0.400000<=pL<=0.600000, 0.800000<=pH<=0.999990, 0.600000<=pLDiff<=0.800000, 0.800000<=pHDiff<=0.999990; -0.400000<=pL<=0.600000, 0.800000<=pH<=0.999990, 0.800000<=pLDiff<=0.999990, 0.000010<=pHDiff<=0.200000; -0.400000<=pL<=0.600000, 0.800000<=pH<=0.999990, 0.800000<=pLDiff<=0.999990, 0.200000<=pHDiff<=0.400000; -0.400000<=pL<=0.600000, 0.800000<=pH<=0.999990, 0.800000<=pLDiff<=0.999990, 0.400000<=pHDiff<=0.600000; -0.400000<=pL<=0.600000, 0.800000<=pH<=0.999990, 0.800000<=pLDiff<=0.999990, 0.600000<=pHDiff<=0.800000; -0.400000<=pL<=0.600000, 0.800000<=pH<=0.999990, 0.800000<=pLDiff<=0.999990, 0.800000<=pHDiff<=0.999990; -0.600000<=pL<=0.800000, 0.000010<=pH<=0.200000, 0.000010<=pLDiff<=0.200000, 0.000010<=pHDiff<=0.200000; -0.600000<=pL<=0.800000, 0.000010<=pH<=0.200000, 0.000010<=pLDiff<=0.200000, 0.200000<=pHDiff<=0.400000; -0.600000<=pL<=0.800000, 0.000010<=pH<=0.200000, 0.000010<=pLDiff<=0.200000, 0.400000<=pHDiff<=0.600000; -0.600000<=pL<=0.800000, 0.000010<=pH<=0.200000, 0.000010<=pLDiff<=0.200000, 0.600000<=pHDiff<=0.800000; -0.600000<=pL<=0.800000, 0.000010<=pH<=0.200000, 0.000010<=pLDiff<=0.200000, 0.800000<=pHDiff<=0.999990; -0.600000<=pL<=0.800000, 0.000010<=pH<=0.200000, 0.200000<=pLDiff<=0.400000, 0.000010<=pHDiff<=0.200000; -0.600000<=pL<=0.800000, 0.000010<=pH<=0.200000, 0.200000<=pLDiff<=0.400000, 0.200000<=pHDiff<=0.400000; -0.600000<=pL<=0.800000, 0.000010<=pH<=0.200000, 0.200000<=pLDiff<=0.400000, 0.400000<=pHDiff<=0.600000; -0.600000<=pL<=0.800000, 0.000010<=pH<=0.200000, 0.200000<=pLDiff<=0.400000, 0.600000<=pHDiff<=0.800000; -0.600000<=pL<=0.800000, 0.000010<=pH<=0.200000, 0.200000<=pLDiff<=0.400000, 0.800000<=pHDiff<=0.999990; -0.600000<=pL<=0.800000, 0.000010<=pH<=0.200000, 0.400000<=pLDiff<=0.600000, 0.000010<=pHDiff<=0.200000; -0.600000<=pL<=0.800000, 0.000010<=pH<=0.200000, 0.400000<=pLDiff<=0.600000, 0.200000<=pHDiff<=0.400000; -0.600000<=pL<=0.800000, 0.000010<=pH<=0.200000, 0.400000<=pLDiff<=0.600000, 0.400000<=pHDiff<=0.600000; -0.600000<=pL<=0.800000, 0.000010<=pH<=0.200000, 0.400000<=pLDiff<=0.600000, 0.600000<=pHDiff<=0.800000; -0.600000<=pL<=0.800000, 0.000010<=pH<=0.200000, 0.400000<=pLDiff<=0.600000, 0.800000<=pHDiff<=0.999990; -0.600000<=pL<=0.800000, 0.000010<=pH<=0.200000, 0.600000<=pLDiff<=0.800000, 0.000010<=pHDiff<=0.200000; -0.600000<=pL<=0.800000, 0.000010<=pH<=0.200000, 0.600000<=pLDiff<=0.800000, 0.200000<=pHDiff<=0.400000; -0.600000<=pL<=0.800000, 0.000010<=pH<=0.200000, 0.600000<=pLDiff<=0.800000, 0.400000<=pHDiff<=0.600000; -0.600000<=pL<=0.800000, 0.000010<=pH<=0.200000, 0.600000<=pLDiff<=0.800000, 0.600000<=pHDiff<=0.800000; -0.600000<=pL<=0.800000, 0.000010<=pH<=0.200000, 0.600000<=pLDiff<=0.800000, 0.800000<=pHDiff<=0.999990; -0.600000<=pL<=0.800000, 0.000010<=pH<=0.200000, 0.800000<=pLDiff<=0.999990, 0.000010<=pHDiff<=0.200000; -0.600000<=pL<=0.800000, 0.000010<=pH<=0.200000, 0.800000<=pLDiff<=0.999990, 0.200000<=pHDiff<=0.400000; -0.600000<=pL<=0.800000, 0.000010<=pH<=0.200000, 0.800000<=pLDiff<=0.999990, 0.400000<=pHDiff<=0.600000; -0.600000<=pL<=0.800000, 0.000010<=pH<=0.200000, 0.800000<=pLDiff<=0.999990, 0.600000<=pHDiff<=0.800000; -0.600000<=pL<=0.800000, 0.000010<=pH<=0.200000, 0.800000<=pLDiff<=0.999990, 0.800000<=pHDiff<=0.999990; -0.600000<=pL<=0.800000, 0.200000<=pH<=0.400000, 0.000010<=pLDiff<=0.200000, 0.000010<=pHDiff<=0.200000; -0.600000<=pL<=0.800000, 0.200000<=pH<=0.400000, 0.000010<=pLDiff<=0.200000, 0.200000<=pHDiff<=0.400000; -0.600000<=pL<=0.800000, 0.200000<=pH<=0.400000, 0.000010<=pLDiff<=0.200000, 0.400000<=pHDiff<=0.600000; -0.600000<=pL<=0.800000, 0.200000<=pH<=0.400000, 0.000010<=pLDiff<=0.200000, 0.600000<=pHDiff<=0.800000; -0.600000<=pL<=0.800000, 0.200000<=pH<=0.400000, 0.000010<=pLDiff<=0.200000, 0.800000<=pHDiff<=0.999990; -0.600000<=pL<=0.800000, 0.200000<=pH<=0.400000, 0.200000<=pLDiff<=0.400000, 0.000010<=pHDiff<=0.200000; -0.600000<=pL<=0.800000, 0.200000<=pH<=0.400000, 0.200000<=pLDiff<=0.400000, 0.200000<=pHDiff<=0.400000; -0.600000<=pL<=0.800000, 0.200000<=pH<=0.400000, 0.200000<=pLDiff<=0.400000, 0.400000<=pHDiff<=0.600000; -0.600000<=pL<=0.800000, 0.200000<=pH<=0.400000, 0.200000<=pLDiff<=0.400000, 0.600000<=pHDiff<=0.800000; -0.600000<=pL<=0.800000, 0.200000<=pH<=0.400000, 0.200000<=pLDiff<=0.400000, 0.800000<=pHDiff<=0.999990; -0.600000<=pL<=0.800000, 0.200000<=pH<=0.400000, 0.400000<=pLDiff<=0.600000, 0.000010<=pHDiff<=0.200000; -0.600000<=pL<=0.800000, 0.200000<=pH<=0.400000, 0.400000<=pLDiff<=0.600000, 0.200000<=pHDiff<=0.400000; -0.600000<=pL<=0.800000, 0.200000<=pH<=0.400000, 0.400000<=pLDiff<=0.600000, 0.400000<=pHDiff<=0.600000; -0.600000<=pL<=0.800000, 0.200000<=pH<=0.400000, 0.400000<=pLDiff<=0.600000, 0.600000<=pHDiff<=0.800000; -0.600000<=pL<=0.800000, 0.200000<=pH<=0.400000, 0.400000<=pLDiff<=0.600000, 0.800000<=pHDiff<=0.999990; -0.600000<=pL<=0.800000, 0.200000<=pH<=0.400000, 0.600000<=pLDiff<=0.800000, 0.000010<=pHDiff<=0.200000; -0.600000<=pL<=0.800000, 0.200000<=pH<=0.400000, 0.600000<=pLDiff<=0.800000, 0.200000<=pHDiff<=0.400000; -0.600000<=pL<=0.800000, 0.200000<=pH<=0.400000, 0.600000<=pLDiff<=0.800000, 0.400000<=pHDiff<=0.600000; -0.600000<=pL<=0.800000, 0.200000<=pH<=0.400000, 0.600000<=pLDiff<=0.800000, 0.600000<=pHDiff<=0.800000; -0.600000<=pL<=0.800000, 0.200000<=pH<=0.400000, 0.600000<=pLDiff<=0.800000, 0.800000<=pHDiff<=0.999990; -0.600000<=pL<=0.800000, 0.200000<=pH<=0.400000, 0.800000<=pLDiff<=0.999990, 0.000010<=pHDiff<=0.200000; -0.600000<=pL<=0.800000, 0.200000<=pH<=0.400000, 0.800000<=pLDiff<=0.999990, 0.200000<=pHDiff<=0.400000; -0.600000<=pL<=0.800000, 0.200000<=pH<=0.400000, 0.800000<=pLDiff<=0.999990, 0.400000<=pHDiff<=0.600000; -0.600000<=pL<=0.800000, 0.200000<=pH<=0.400000, 0.800000<=pLDiff<=0.999990, 0.600000<=pHDiff<=0.800000; -0.600000<=pL<=0.800000, 0.200000<=pH<=0.400000, 0.800000<=pLDiff<=0.999990, 0.800000<=pHDiff<=0.999990; -0.600000<=pL<=0.800000, 0.400000<=pH<=0.600000, 0.000010<=pLDiff<=0.200000, 0.000010<=pHDiff<=0.200000; -0.600000<=pL<=0.800000, 0.400000<=pH<=0.600000, 0.000010<=pLDiff<=0.200000, 0.200000<=pHDiff<=0.400000; -0.600000<=pL<=0.800000, 0.400000<=pH<=0.600000, 0.000010<=pLDiff<=0.200000, 0.400000<=pHDiff<=0.600000; -0.600000<=pL<=0.800000, 0.400000<=pH<=0.600000, 0.000010<=pLDiff<=0.200000, 0.600000<=pHDiff<=0.800000; -0.600000<=pL<=0.800000, 0.400000<=pH<=0.600000, 0.000010<=pLDiff<=0.200000, 0.800000<=pHDiff<=0.999990; -0.600000<=pL<=0.800000, 0.400000<=pH<=0.600000, 0.200000<=pLDiff<=0.400000, 0.000010<=pHDiff<=0.200000; -0.600000<=pL<=0.800000, 0.400000<=pH<=0.600000, 0.200000<=pLDiff<=0.400000, 0.200000<=pHDiff<=0.400000; -0.600000<=pL<=0.800000, 0.400000<=pH<=0.600000, 0.200000<=pLDiff<=0.400000, 0.400000<=pHDiff<=0.600000; -0.600000<=pL<=0.800000, 0.400000<=pH<=0.600000, 0.200000<=pLDiff<=0.400000, 0.600000<=pHDiff<=0.800000; -0.600000<=pL<=0.800000, 0.400000<=pH<=0.600000, 0.200000<=pLDiff<=0.400000, 0.800000<=pHDiff<=0.999990; -0.600000<=pL<=0.800000, 0.400000<=pH<=0.600000, 0.400000<=pLDiff<=0.600000, 0.000010<=pHDiff<=0.200000; -0.600000<=pL<=0.800000, 0.400000<=pH<=0.600000, 0.400000<=pLDiff<=0.600000, 0.200000<=pHDiff<=0.400000; -0.600000<=pL<=0.800000, 0.400000<=pH<=0.600000, 0.400000<=pLDiff<=0.600000, 0.400000<=pHDiff<=0.600000; -0.600000<=pL<=0.800000, 0.400000<=pH<=0.600000, 0.400000<=pLDiff<=0.600000, 0.600000<=pHDiff<=0.800000; -0.600000<=pL<=0.800000, 0.400000<=pH<=0.600000, 0.400000<=pLDiff<=0.600000, 0.800000<=pHDiff<=0.999990; -0.600000<=pL<=0.800000, 0.400000<=pH<=0.600000, 0.600000<=pLDiff<=0.800000, 0.000010<=pHDiff<=0.200000; -0.600000<=pL<=0.800000, 0.400000<=pH<=0.600000, 0.600000<=pLDiff<=0.800000, 0.200000<=pHDiff<=0.400000; -0.600000<=pL<=0.800000, 0.400000<=pH<=0.600000, 0.600000<=pLDiff<=0.800000, 0.400000<=pHDiff<=0.600000; -0.600000<=pL<=0.800000, 0.400000<=pH<=0.600000, 0.600000<=pLDiff<=0.800000, 0.600000<=pHDiff<=0.800000; -0.600000<=pL<=0.800000, 0.400000<=pH<=0.600000, 0.600000<=pLDiff<=0.800000, 0.800000<=pHDiff<=0.999990; -0.600000<=pL<=0.800000, 0.400000<=pH<=0.600000, 0.800000<=pLDiff<=0.999990, 0.000010<=pHDiff<=0.200000; -0.600000<=pL<=0.800000, 0.400000<=pH<=0.600000, 0.800000<=pLDiff<=0.999990, 0.200000<=pHDiff<=0.400000; -0.600000<=pL<=0.800000, 0.400000<=pH<=0.600000, 0.800000<=pLDiff<=0.999990, 0.400000<=pHDiff<=0.600000; -0.600000<=pL<=0.800000, 0.400000<=pH<=0.600000, 0.800000<=pLDiff<=0.999990, 0.600000<=pHDiff<=0.800000; -0.600000<=pL<=0.800000, 0.400000<=pH<=0.600000, 0.800000<=pLDiff<=0.999990, 0.800000<=pHDiff<=0.999990; -0.600000<=pL<=0.800000, 0.600000<=pH<=0.800000, 0.000010<=pLDiff<=0.200000, 0.000010<=pHDiff<=0.200000; -0.600000<=pL<=0.800000, 0.600000<=pH<=0.800000, 0.000010<=pLDiff<=0.200000, 0.200000<=pHDiff<=0.400000; -0.600000<=pL<=0.800000, 0.600000<=pH<=0.800000, 0.000010<=pLDiff<=0.200000, 0.400000<=pHDiff<=0.600000; -0.600000<=pL<=0.800000, 0.600000<=pH<=0.800000, 0.000010<=pLDiff<=0.200000, 0.600000<=pHDiff<=0.800000; -0.600000<=pL<=0.800000, 0.600000<=pH<=0.800000, 0.000010<=pLDiff<=0.200000, 0.800000<=pHDiff<=0.999990; -0.600000<=pL<=0.800000, 0.600000<=pH<=0.800000, 0.200000<=pLDiff<=0.400000, 0.000010<=pHDiff<=0.200000; -0.600000<=pL<=0.800000, 0.600000<=pH<=0.800000, 0.200000<=pLDiff<=0.400000, 0.200000<=pHDiff<=0.400000; -0.600000<=pL<=0.800000, 0.600000<=pH<=0.800000, 0.200000<=pLDiff<=0.400000, 0.400000<=pHDiff<=0.600000; -0.600000<=pL<=0.800000, 0.600000<=pH<=0.800000, 0.200000<=pLDiff<=0.400000, 0.600000<=pHDiff<=0.800000; -0.600000<=pL<=0.800000, 0.600000<=pH<=0.800000, 0.200000<=pLDiff<=0.400000, 0.800000<=pHDiff<=0.999990; -0.600000<=pL<=0.800000, 0.600000<=pH<=0.800000, 0.400000<=pLDiff<=0.600000, 0.000010<=pHDiff<=0.200000; -0.600000<=pL<=0.800000, 0.600000<=pH<=0.800000, 0.400000<=pLDiff<=0.600000, 0.200000<=pHDiff<=0.400000; -0.600000<=pL<=0.800000, 0.600000<=pH<=0.800000, 0.400000<=pLDiff<=0.600000, 0.400000<=pHDiff<=0.600000; -0.600000<=pL<=0.800000, 0.600000<=pH<=0.800000, 0.400000<=pLDiff<=0.600000, 0.600000<=pHDiff<=0.800000; -0.600000<=pL<=0.800000, 0.600000<=pH<=0.800000, 0.400000<=pLDiff<=0.600000, 0.800000<=pHDiff<=0.999990; -0.600000<=pL<=0.800000, 0.600000<=pH<=0.800000, 0.600000<=pLDiff<=0.800000, 0.000010<=pHDiff<=0.200000; -0.600000<=pL<=0.800000, 0.600000<=pH<=0.800000, 0.600000<=pLDiff<=0.800000, 0.200000<=pHDiff<=0.400000; -0.600000<=pL<=0.800000, 0.600000<=pH<=0.800000, 0.600000<=pLDiff<=0.800000, 0.400000<=pHDiff<=0.600000; -0.600000<=pL<=0.800000, 0.600000<=pH<=0.800000, 0.600000<=pLDiff<=0.800000, 0.600000<=pHDiff<=0.800000; -0.600000<=pL<=0.800000, 0.600000<=pH<=0.800000, 0.600000<=pLDiff<=0.800000, 0.800000<=pHDiff<=0.999990; -0.600000<=pL<=0.800000, 0.600000<=pH<=0.800000, 0.800000<=pLDiff<=0.999990, 0.000010<=pHDiff<=0.200000; -0.600000<=pL<=0.800000, 0.600000<=pH<=0.800000, 0.800000<=pLDiff<=0.999990, 0.200000<=pHDiff<=0.400000; -0.600000<=pL<=0.800000, 0.600000<=pH<=0.800000, 0.800000<=pLDiff<=0.999990, 0.400000<=pHDiff<=0.600000; -0.600000<=pL<=0.800000, 0.600000<=pH<=0.800000, 0.800000<=pLDiff<=0.999990, 0.600000<=pHDiff<=0.800000; -0.600000<=pL<=0.800000, 0.600000<=pH<=0.800000, 0.800000<=pLDiff<=0.999990, 0.800000<=pHDiff<=0.999990; -0.600000<=pL<=0.800000, 0.800000<=pH<=0.999990, 0.000010<=pLDiff<=0.200000, 0.000010<=pHDiff<=0.200000; -0.600000<=pL<=0.800000, 0.800000<=pH<=0.999990, 0.000010<=pLDiff<=0.200000, 0.200000<=pHDiff<=0.400000; -0.600000<=pL<=0.800000, 0.800000<=pH<=0.999990, 0.000010<=pLDiff<=0.200000, 0.400000<=pHDiff<=0.600000; -0.600000<=pL<=0.800000, 0.800000<=pH<=0.999990, 0.000010<=pLDiff<=0.200000, 0.600000<=pHDiff<=0.800000; -0.600000<=pL<=0.800000, 0.800000<=pH<=0.999990, 0.000010<=pLDiff<=0.200000, 0.800000<=pHDiff<=0.999990; -0.600000<=pL<=0.800000, 0.800000<=pH<=0.999990, 0.200000<=pLDiff<=0.400000, 0.000010<=pHDiff<=0.200000; -0.600000<=pL<=0.800000, 0.800000<=pH<=0.999990, 0.200000<=pLDiff<=0.400000, 0.200000<=pHDiff<=0.400000; -0.600000<=pL<=0.800000, 0.800000<=pH<=0.999990, 0.200000<=pLDiff<=0.400000, 0.400000<=pHDiff<=0.600000; -0.600000<=pL<=0.800000, 0.800000<=pH<=0.999990, 0.200000<=pLDiff<=0.400000, 0.600000<=pHDiff<=0.800000; -0.600000<=pL<=0.800000, 0.800000<=pH<=0.999990, 0.200000<=pLDiff<=0.400000, 0.800000<=pHDiff<=0.999990; -0.600000<=pL<=0.800000, 0.800000<=pH<=0.999990, 0.400000<=pLDiff<=0.600000, 0.000010<=pHDiff<=0.200000; -0.600000<=pL<=0.800000, 0.800000<=pH<=0.999990, 0.400000<=pLDiff<=0.600000, 0.200000<=pHDiff<=0.400000; -0.600000<=pL<=0.800000, 0.800000<=pH<=0.999990, 0.400000<=pLDiff<=0.600000, 0.400000<=pHDiff<=0.600000; -0.600000<=pL<=0.800000, 0.800000<=pH<=0.999990, 0.400000<=pLDiff<=0.600000, 0.600000<=pHDiff<=0.800000; -0.600000<=pL<=0.800000, 0.800000<=pH<=0.999990, 0.400000<=pLDiff<=0.600000, 0.800000<=pHDiff<=0.999990; -0.600000<=pL<=0.800000, 0.800000<=pH<=0.999990, 0.600000<=pLDiff<=0.800000, 0.000010<=pHDiff<=0.200000; -0.600000<=pL<=0.800000, 0.800000<=pH<=0.999990, 0.600000<=pLDiff<=0.800000, 0.200000<=pHDiff<=0.400000; -0.600000<=pL<=0.800000, 0.800000<=pH<=0.999990, 0.600000<=pLDiff<=0.800000, 0.400000<=pHDiff<=0.600000; -0.600000<=pL<=0.800000, 0.800000<=pH<=0.999990, 0.600000<=pLDiff<=0.800000, 0.600000<=pHDiff<=0.800000; -0.600000<=pL<=0.800000, 0.800000<=pH<=0.999990, 0.600000<=pLDiff<=0.800000, 0.800000<=pHDiff<=0.999990; -0.600000<=pL<=0.800000, 0.800000<=pH<=0.999990, 0.800000<=pLDiff<=0.999990, 0.000010<=pHDiff<=0.200000; -0.600000<=pL<=0.800000, 0.800000<=pH<=0.999990, 0.800000<=pLDiff<=0.999990, 0.200000<=pHDiff<=0.400000; -0.600000<=pL<=0.800000, 0.800000<=pH<=0.999990, 0.800000<=pLDiff<=0.999990, 0.400000<=pHDiff<=0.600000; -0.600000<=pL<=0.800000, 0.800000<=pH<=0.999990, 0.800000<=pLDiff<=0.999990, 0.600000<=pHDiff<=0.800000; -0.600000<=pL<=0.800000, 0.800000<=pH<=0.999990, 0.800000<=pLDiff<=0.999990, 0.800000<=pHDiff<=0.999990; -0.800000<=pL<=0.999990, 0.000010<=pH<=0.200000, 0.000010<=pLDiff<=0.200000, 0.000010<=pHDiff<=0.200000; -0.800000<=pL<=0.999990, 0.000010<=pH<=0.200000, 0.000010<=pLDiff<=0.200000, 0.200000<=pHDiff<=0.400000; -0.800000<=pL<=0.999990, 0.000010<=pH<=0.200000, 0.000010<=pLDiff<=0.200000, 0.400000<=pHDiff<=0.600000; -0.800000<=pL<=0.999990, 0.000010<=pH<=0.200000, 0.000010<=pLDiff<=0.200000, 0.600000<=pHDiff<=0.800000; -0.800000<=pL<=0.999990, 0.000010<=pH<=0.200000, 0.000010<=pLDiff<=0.200000, 0.800000<=pHDiff<=0.999990; -0.800000<=pL<=0.999990, 0.000010<=pH<=0.200000, 0.200000<=pLDiff<=0.400000, 0.000010<=pHDiff<=0.200000; -0.800000<=pL<=0.999990, 0.000010<=pH<=0.200000, 0.200000<=pLDiff<=0.400000, 0.200000<=pHDiff<=0.400000; -0.800000<=pL<=0.999990, 0.000010<=pH<=0.200000, 0.200000<=pLDiff<=0.400000, 0.400000<=pHDiff<=0.600000; -0.800000<=pL<=0.999990, 0.000010<=pH<=0.200000, 0.200000<=pLDiff<=0.400000, 0.600000<=pHDiff<=0.800000; -0.800000<=pL<=0.999990, 0.000010<=pH<=0.200000, 0.200000<=pLDiff<=0.400000, 0.800000<=pHDiff<=0.999990; -0.800000<=pL<=0.999990, 0.000010<=pH<=0.200000, 0.400000<=pLDiff<=0.600000, 0.000010<=pHDiff<=0.200000; -0.800000<=pL<=0.999990, 0.000010<=pH<=0.200000, 0.400000<=pLDiff<=0.600000, 0.200000<=pHDiff<=0.400000; -0.800000<=pL<=0.999990, 0.000010<=pH<=0.200000, 0.400000<=pLDiff<=0.600000, 0.400000<=pHDiff<=0.600000; -0.800000<=pL<=0.999990, 0.000010<=pH<=0.200000, 0.400000<=pLDiff<=0.600000, 0.600000<=pHDiff<=0.800000; -0.800000<=pL<=0.999990, 0.000010<=pH<=0.200000, 0.400000<=pLDiff<=0.600000, 0.800000<=pHDiff<=0.999990; -0.800000<=pL<=0.999990, 0.000010<=pH<=0.200000, 0.600000<=pLDiff<=0.800000, 0.000010<=pHDiff<=0.200000; -0.800000<=pL<=0.999990, 0.000010<=pH<=0.200000, 0.600000<=pLDiff<=0.800000, 0.200000<=pHDiff<=0.400000; -0.800000<=pL<=0.999990, 0.000010<=pH<=0.200000, 0.600000<=pLDiff<=0.800000, 0.400000<=pHDiff<=0.600000; -0.800000<=pL<=0.999990, 0.000010<=pH<=0.200000, 0.600000<=pLDiff<=0.800000, 0.600000<=pHDiff<=0.800000; -0.800000<=pL<=0.999990, 0.000010<=pH<=0.200000, 0.600000<=pLDiff<=0.800000, 0.800000<=pHDiff<=0.999990; -0.800000<=pL<=0.999990, 0.000010<=pH<=0.200000, 0.800000<=pLDiff<=0.999990, 0.000010<=pHDiff<=0.200000; -0.800000<=pL<=0.999990, 0.000010<=pH<=0.200000, 0.800000<=pLDiff<=0.999990, 0.200000<=pHDiff<=0.400000; -0.800000<=pL<=0.999990, 0.000010<=pH<=0.200000, 0.800000<=pLDiff<=0.999990, 0.400000<=pHDiff<=0.600000; -0.800000<=pL<=0.999990, 0.000010<=pH<=0.200000, 0.800000<=pLDiff<=0.999990, 0.600000<=pHDiff<=0.800000; -0.800000<=pL<=0.999990, 0.000010<=pH<=0.200000, 0.800000<=pLDiff<=0.999990, 0.800000<=pHDiff<=0.999990; -0.800000<=pL<=0.999990, 0.200000<=pH<=0.400000, 0.000010<=pLDiff<=0.200000, 0.000010<=pHDiff<=0.200000; -0.800000<=pL<=0.999990, 0.200000<=pH<=0.400000, 0.000010<=pLDiff<=0.200000, 0.200000<=pHDiff<=0.400000; -0.800000<=pL<=0.999990, 0.200000<=pH<=0.400000, 0.000010<=pLDiff<=0.200000, 0.400000<=pHDiff<=0.600000; -0.800000<=pL<=0.999990, 0.200000<=pH<=0.400000, 0.000010<=pLDiff<=0.200000, 0.600000<=pHDiff<=0.800000; -0.800000<=pL<=0.999990, 0.200000<=pH<=0.400000, 0.000010<=pLDiff<=0.200000, 0.800000<=pHDiff<=0.999990; -0.800000<=pL<=0.999990, 0.200000<=pH<=0.400000, 0.200000<=pLDiff<=0.400000, 0.000010<=pHDiff<=0.200000; -0.800000<=pL<=0.999990, 0.200000<=pH<=0.400000, 0.200000<=pLDiff<=0.400000, 0.200000<=pHDiff<=0.400000; -0.800000<=pL<=0.999990, 0.200000<=pH<=0.400000, 0.200000<=pLDiff<=0.400000, 0.400000<=pHDiff<=0.600000; -0.800000<=pL<=0.999990, 0.200000<=pH<=0.400000, 0.200000<=pLDiff<=0.400000, 0.600000<=pHDiff<=0.800000; -0.800000<=pL<=0.999990, 0.200000<=pH<=0.400000, 0.200000<=pLDiff<=0.400000, 0.800000<=pHDiff<=0.999990; -0.800000<=pL<=0.999990, 0.200000<=pH<=0.400000, 0.400000<=pLDiff<=0.600000, 0.000010<=pHDiff<=0.200000; -0.800000<=pL<=0.999990, 0.200000<=pH<=0.400000, 0.400000<=pLDiff<=0.600000, 0.200000<=pHDiff<=0.400000; -0.800000<=pL<=0.999990, 0.200000<=pH<=0.400000, 0.400000<=pLDiff<=0.600000, 0.400000<=pHDiff<=0.600000; -0.800000<=pL<=0.999990, 0.200000<=pH<=0.400000, 0.400000<=pLDiff<=0.600000, 0.600000<=pHDiff<=0.800000; -0.800000<=pL<=0.999990, 0.200000<=pH<=0.400000, 0.400000<=pLDiff<=0.600000, 0.800000<=pHDiff<=0.999990; -0.800000<=pL<=0.999990, 0.200000<=pH<=0.400000, 0.600000<=pLDiff<=0.800000, 0.000010<=pHDiff<=0.200000; -0.800000<=pL<=0.999990, 0.200000<=pH<=0.400000, 0.600000<=pLDiff<=0.800000, 0.200000<=pHDiff<=0.400000; -0.800000<=pL<=0.999990, 0.200000<=pH<=0.400000, 0.600000<=pLDiff<=0.800000, 0.400000<=pHDiff<=0.600000; -0.800000<=pL<=0.999990, 0.200000<=pH<=0.400000, 0.600000<=pLDiff<=0.800000, 0.600000<=pHDiff<=0.800000; -0.800000<=pL<=0.999990, 0.200000<=pH<=0.400000, 0.600000<=pLDiff<=0.800000, 0.800000<=pHDiff<=0.999990; -0.800000<=pL<=0.999990, 0.200000<=pH<=0.400000, 0.800000<=pLDiff<=0.999990, 0.000010<=pHDiff<=0.200000; -0.800000<=pL<=0.999990, 0.200000<=pH<=0.400000, 0.800000<=pLDiff<=0.999990, 0.200000<=pHDiff<=0.400000; -0.800000<=pL<=0.999990, 0.200000<=pH<=0.400000, 0.800000<=pLDiff<=0.999990, 0.400000<=pHDiff<=0.600000; -0.800000<=pL<=0.999990, 0.200000<=pH<=0.400000, 0.800000<=pLDiff<=0.999990, 0.600000<=pHDiff<=0.800000; -0.800000<=pL<=0.999990, 0.200000<=pH<=0.400000, 0.800000<=pLDiff<=0.999990, 0.800000<=pHDiff<=0.999990; -0.800000<=pL<=0.999990, 0.400000<=pH<=0.600000, 0.000010<=pLDiff<=0.200000, 0.000010<=pHDiff<=0.200000; -0.800000<=pL<=0.999990, 0.400000<=pH<=0.600000, 0.000010<=pLDiff<=0.200000, 0.200000<=pHDiff<=0.400000; -0.800000<=pL<=0.999990, 0.400000<=pH<=0.600000, 0.000010<=pLDiff<=0.200000, 0.400000<=pHDiff<=0.600000; -0.800000<=pL<=0.999990, 0.400000<=pH<=0.600000, 0.000010<=pLDiff<=0.200000, 0.600000<=pHDiff<=0.800000; -0.800000<=pL<=0.999990, 0.400000<=pH<=0.600000, 0.000010<=pLDiff<=0.200000, 0.800000<=pHDiff<=0.999990; -0.800000<=pL<=0.999990, 0.400000<=pH<=0.600000, 0.200000<=pLDiff<=0.400000, 0.000010<=pHDiff<=0.200000; -0.800000<=pL<=0.999990, 0.400000<=pH<=0.600000, 0.200000<=pLDiff<=0.400000, 0.200000<=pHDiff<=0.400000; -0.800000<=pL<=0.999990, 0.400000<=pH<=0.600000, 0.200000<=pLDiff<=0.400000, 0.400000<=pHDiff<=0.600000; -0.800000<=pL<=0.999990, 0.400000<=pH<=0.600000, 0.200000<=pLDiff<=0.400000, 0.600000<=pHDiff<=0.800000; -0.800000<=pL<=0.999990, 0.400000<=pH<=0.600000, 0.200000<=pLDiff<=0.400000, 0.800000<=pHDiff<=0.999990; -0.800000<=pL<=0.999990, 0.400000<=pH<=0.600000, 0.400000<=pLDiff<=0.600000, 0.000010<=pHDiff<=0.200000; -0.800000<=pL<=0.999990, 0.400000<=pH<=0.600000, 0.400000<=pLDiff<=0.600000, 0.200000<=pHDiff<=0.400000; -0.800000<=pL<=0.999990, 0.400000<=pH<=0.600000, 0.400000<=pLDiff<=0.600000, 0.400000<=pHDiff<=0.600000; -0.800000<=pL<=0.999990, 0.400000<=pH<=0.600000, 0.400000<=pLDiff<=0.600000, 0.600000<=pHDiff<=0.800000; -0.800000<=pL<=0.999990, 0.400000<=pH<=0.600000, 0.400000<=pLDiff<=0.600000, 0.800000<=pHDiff<=0.999990; -0.800000<=pL<=0.999990, 0.400000<=pH<=0.600000, 0.600000<=pLDiff<=0.800000, 0.000010<=pHDiff<=0.200000; -0.800000<=pL<=0.999990, 0.400000<=pH<=0.600000, 0.600000<=pLDiff<=0.800000, 0.200000<=pHDiff<=0.400000; -0.800000<=pL<=0.999990, 0.400000<=pH<=0.600000, 0.600000<=pLDiff<=0.800000, 0.400000<=pHDiff<=0.600000; -0.800000<=pL<=0.999990, 0.400000<=pH<=0.600000, 0.600000<=pLDiff<=0.800000, 0.600000<=pHDiff<=0.800000; -0.800000<=pL<=0.999990, 0.400000<=pH<=0.600000, 0.600000<=pLDiff<=0.800000, 0.800000<=pHDiff<=0.999990; -0.800000<=pL<=0.999990, 0.400000<=pH<=0.600000, 0.800000<=pLDiff<=0.999990, 0.000010<=pHDiff<=0.200000; -0.800000<=pL<=0.999990, 0.400000<=pH<=0.600000, 0.800000<=pLDiff<=0.999990, 0.200000<=pHDiff<=0.400000; -0.800000<=pL<=0.999990, 0.400000<=pH<=0.600000, 0.800000<=pLDiff<=0.999990, 0.400000<=pHDiff<=0.600000; -0.800000<=pL<=0.999990, 0.400000<=pH<=0.600000, 0.800000<=pLDiff<=0.999990, 0.600000<=pHDiff<=0.800000; -0.800000<=pL<=0.999990, 0.400000<=pH<=0.600000, 0.800000<=pLDiff<=0.999990, 0.800000<=pHDiff<=0.999990; -0.800000<=pL<=0.999990, 0.600000<=pH<=0.800000, 0.000010<=pLDiff<=0.200000, 0.000010<=pHDiff<=0.200000; -0.800000<=pL<=0.999990, 0.600000<=pH<=0.800000, 0.000010<=pLDiff<=0.200000, 0.200000<=pHDiff<=0.400000; -0.800000<=pL<=0.999990, 0.600000<=pH<=0.800000, 0.000010<=pLDiff<=0.200000, 0.400000<=pHDiff<=0.600000; -0.800000<=pL<=0.999990, 0.600000<=pH<=0.800000, 0.000010<=pLDiff<=0.200000, 0.600000<=pHDiff<=0.800000; -0.800000<=pL<=0.999990, 0.600000<=pH<=0.800000, 0.000010<=pLDiff<=0.200000, 0.800000<=pHDiff<=0.999990; -0.800000<=pL<=0.999990, 0.600000<=pH<=0.800000, 0.200000<=pLDiff<=0.400000, 0.000010<=pHDiff<=0.200000; -0.800000<=pL<=0.999990, 0.600000<=pH<=0.800000, 0.200000<=pLDiff<=0.400000, 0.200000<=pHDiff<=0.400000; -0.800000<=pL<=0.999990, 0.600000<=pH<=0.800000, 0.200000<=pLDiff<=0.400000, 0.400000<=pHDiff<=0.600000; -0.800000<=pL<=0.999990, 0.600000<=pH<=0.800000, 0.200000<=pLDiff<=0.400000, 0.600000<=pHDiff<=0.800000; -0.800000<=pL<=0.999990, 0.600000<=pH<=0.800000, 0.200000<=pLDiff<=0.400000, 0.800000<=pHDiff<=0.999990; -0.800000<=pL<=0.999990, 0.600000<=pH<=0.800000, 0.400000<=pLDiff<=0.600000, 0.000010<=pHDiff<=0.200000; -0.800000<=pL<=0.999990, 0.600000<=pH<=0.800000, 0.400000<=pLDiff<=0.600000, 0.200000<=pHDiff<=0.400000; -0.800000<=pL<=0.999990, 0.600000<=pH<=0.800000, 0.400000<=pLDiff<=0.600000, 0.400000<=pHDiff<=0.600000; -0.800000<=pL<=0.999990, 0.600000<=pH<=0.800000, 0.400000<=pLDiff<=0.600000, 0.600000<=pHDiff<=0.800000; -0.800000<=pL<=0.999990, 0.600000<=pH<=0.800000, 0.400000<=pLDiff<=0.600000, 0.800000<=pHDiff<=0.999990; -0.800000<=pL<=0.999990, 0.600000<=pH<=0.800000, 0.600000<=pLDiff<=0.800000, 0.000010<=pHDiff<=0.200000; -0.800000<=pL<=0.999990, 0.600000<=pH<=0.800000, 0.600000<=pLDiff<=0.800000, 0.200000<=pHDiff<=0.400000; -0.800000<=pL<=0.999990, 0.600000<=pH<=0.800000, 0.600000<=pLDiff<=0.800000, 0.400000<=pHDiff<=0.600000; -0.800000<=pL<=0.999990, 0.600000<=pH<=0.800000, 0.600000<=pLDiff<=0.800000, 0.600000<=pHDiff<=0.800000; -0.800000<=pL<=0.999990, 0.600000<=pH<=0.800000, 0.600000<=pLDiff<=0.800000, 0.800000<=pHDiff<=0.999990; -0.800000<=pL<=0.999990, 0.600000<=pH<=0.800000, 0.800000<=pLDiff<=0.999990, 0.000010<=pHDiff<=0.200000; -0.800000<=pL<=0.999990, 0.600000<=pH<=0.800000, 0.800000<=pLDiff<=0.999990, 0.200000<=pHDiff<=0.400000; -0.800000<=pL<=0.999990, 0.600000<=pH<=0.800000, 0.800000<=pLDiff<=0.999990, 0.400000<=pHDiff<=0.600000; -0.800000<=pL<=0.999990, 0.600000<=pH<=0.800000, 0.800000<=pLDiff<=0.999990, 0.600000<=pHDiff<=0.800000; -0.800000<=pL<=0.999990, 0.600000<=pH<=0.800000, 0.800000<=pLDiff<=0.999990, 0.800000<=pHDiff<=0.999990; -0.800000<=pL<=0.999990, 0.800000<=pH<=0.999990, 0.000010<=pLDiff<=0.200000, 0.000010<=pHDiff<=0.200000; -0.800000<=pL<=0.999990, 0.800000<=pH<=0.999990, 0.000010<=pLDiff<=0.200000, 0.200000<=pHDiff<=0.400000; -0.800000<=pL<=0.999990, 0.800000<=pH<=0.999990, 0.000010<=pLDiff<=0.200000, 0.400000<=pHDiff<=0.600000; -0.800000<=pL<=0.999990, 0.800000<=pH<=0.999990, 0.000010<=pLDiff<=0.200000, 0.600000<=pHDiff<=0.800000; -0.800000<=pL<=0.999990, 0.800000<=pH<=0.999990, 0.000010<=pLDiff<=0.200000, 0.800000<=pHDiff<=0.999990; -0.800000<=pL<=0.999990, 0.800000<=pH<=0.999990, 0.200000<=pLDiff<=0.400000, 0.000010<=pHDiff<=0.200000; -0.800000<=pL<=0.999990, 0.800000<=pH<=0.999990, 0.200000<=pLDiff<=0.400000, 0.200000<=pHDiff<=0.400000; -0.800000<=pL<=0.999990, 0.800000<=pH<=0.999990, 0.200000<=pLDiff<=0.400000, 0.400000<=pHDiff<=0.600000; -0.800000<=pL<=0.999990, 0.800000<=pH<=0.999990, 0.200000<=pLDiff<=0.400000, 0.600000<=pHDiff<=0.800000; -0.800000<=pL<=0.999990, 0.800000<=pH<=0.999990, 0.200000<=pLDiff<=0.400000, 0.800000<=pHDiff<=0.999990; -0.800000<=pL<=0.999990, 0.800000<=pH<=0.999990, 0.400000<=pLDiff<=0.600000, 0.000010<=pHDiff<=0.200000; -0.800000<=pL<=0.999990, 0.800000<=pH<=0.999990, 0.400000<=pLDiff<=0.600000, 0.200000<=pHDiff<=0.400000; -0.800000<=pL<=0.999990, 0.800000<=pH<=0.999990, 0.400000<=pLDiff<=0.600000, 0.400000<=pHDiff<=0.600000; -0.800000<=pL<=0.999990, 0.800000<=pH<=0.999990, 0.400000<=pLDiff<=0.600000, 0.600000<=pHDiff<=0.800000; -0.800000<=pL<=0.999990, 0.800000<=pH<=0.999990, 0.400000<=pLDiff<=0.600000, 0.800000<=pHDiff<=0.999990; -0.800000<=pL<=0.999990, 0.800000<=pH<=0.999990, 0.600000<=pLDiff<=0.800000, 0.000010<=pHDiff<=0.200000; -0.800000<=pL<=0.999990, 0.800000<=pH<=0.999990, 0.600000<=pLDiff<=0.800000, 0.200000<=pHDiff<=0.400000; -0.800000<=pL<=0.999990, 0.800000<=pH<=0.999990, 0.600000<=pLDiff<=0.800000, 0.400000<=pHDiff<=0.600000; -0.800000<=pL<=0.999990, 0.800000<=pH<=0.999990, 0.600000<=pLDiff<=0.800000, 0.600000<=pHDiff<=0.800000; -0.800000<=pL<=0.999990, 0.800000<=pH<=0.999990, 0.600000<=pLDiff<=0.800000, 0.800000<=pHDiff<=0.999990; -0.800000<=pL<=0.999990, 0.800000<=pH<=0.999990, 0.800000<=pLDiff<=0.999990, 0.000010<=pHDiff<=0.200000; -0.800000<=pL<=0.999990, 0.800000<=pH<=0.999990, 0.800000<=pLDiff<=0.999990, 0.200000<=pHDiff<=0.400000; -0.800000<=pL<=0.999990, 0.800000<=pH<=0.999990, 0.800000<=pLDiff<=0.999990, 0.400000<=pHDiff<=0.600000; -0.800000<=pL<=0.999990, 0.800000<=pH<=0.999990, 0.800000<=pLDiff<=0.999990, 0.600000<=pHDiff<=0.800000; -0.800000<=pL<=0.999990, 0.800000<=pH<=0.999990, 0.800000<=pLDiff<=0.999990, 0.800000<=pHDiff<=0.999990; diff --git a/examples/pmdp/reporter4/reporter4_regions2.txt b/examples/pmdp/reporter4/reporter4_regions2.txt deleted file mode 100644 index 539b3bd60..000000000 --- a/examples/pmdp/reporter4/reporter4_regions2.txt +++ /dev/null @@ -1,625 +0,0 @@ -0.000010<=pL<=0.040000, 0.000010<=pH<=0.040000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.000010<=pL<=0.040000, 0.040000<=pH<=0.080000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.000010<=pL<=0.040000, 0.080000<=pH<=0.120000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.000010<=pL<=0.040000, 0.120000<=pH<=0.160000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.000010<=pL<=0.040000, 0.160000<=pH<=0.200000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.000010<=pL<=0.040000, 0.200000<=pH<=0.240000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.000010<=pL<=0.040000, 0.240000<=pH<=0.280000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.000010<=pL<=0.040000, 0.280000<=pH<=0.320000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.000010<=pL<=0.040000, 0.320000<=pH<=0.360000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.000010<=pL<=0.040000, 0.360000<=pH<=0.400000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.000010<=pL<=0.040000, 0.400000<=pH<=0.440000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.000010<=pL<=0.040000, 0.440000<=pH<=0.480000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.000010<=pL<=0.040000, 0.480000<=pH<=0.520000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.000010<=pL<=0.040000, 0.520000<=pH<=0.560000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.000010<=pL<=0.040000, 0.560000<=pH<=0.600000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.000010<=pL<=0.040000, 0.600000<=pH<=0.640000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.000010<=pL<=0.040000, 0.640000<=pH<=0.680000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.000010<=pL<=0.040000, 0.680000<=pH<=0.720000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.000010<=pL<=0.040000, 0.720000<=pH<=0.760000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.000010<=pL<=0.040000, 0.760000<=pH<=0.800000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.000010<=pL<=0.040000, 0.800000<=pH<=0.840000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.000010<=pL<=0.040000, 0.840000<=pH<=0.880000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.000010<=pL<=0.040000, 0.880000<=pH<=0.920000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.000010<=pL<=0.040000, 0.920000<=pH<=0.960000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.000010<=pL<=0.040000, 0.960000<=pH<=0.999990, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.040000<=pL<=0.080000, 0.000010<=pH<=0.040000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.040000<=pL<=0.080000, 0.040000<=pH<=0.080000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.040000<=pL<=0.080000, 0.080000<=pH<=0.120000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.040000<=pL<=0.080000, 0.120000<=pH<=0.160000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.040000<=pL<=0.080000, 0.160000<=pH<=0.200000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.040000<=pL<=0.080000, 0.200000<=pH<=0.240000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.040000<=pL<=0.080000, 0.240000<=pH<=0.280000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.040000<=pL<=0.080000, 0.280000<=pH<=0.320000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.040000<=pL<=0.080000, 0.320000<=pH<=0.360000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.040000<=pL<=0.080000, 0.360000<=pH<=0.400000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.040000<=pL<=0.080000, 0.400000<=pH<=0.440000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.040000<=pL<=0.080000, 0.440000<=pH<=0.480000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.040000<=pL<=0.080000, 0.480000<=pH<=0.520000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.040000<=pL<=0.080000, 0.520000<=pH<=0.560000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.040000<=pL<=0.080000, 0.560000<=pH<=0.600000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.040000<=pL<=0.080000, 0.600000<=pH<=0.640000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.040000<=pL<=0.080000, 0.640000<=pH<=0.680000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.040000<=pL<=0.080000, 0.680000<=pH<=0.720000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.040000<=pL<=0.080000, 0.720000<=pH<=0.760000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.040000<=pL<=0.080000, 0.760000<=pH<=0.800000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.040000<=pL<=0.080000, 0.800000<=pH<=0.840000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.040000<=pL<=0.080000, 0.840000<=pH<=0.880000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.040000<=pL<=0.080000, 0.880000<=pH<=0.920000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.040000<=pL<=0.080000, 0.920000<=pH<=0.960000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.040000<=pL<=0.080000, 0.960000<=pH<=0.999990, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.080000<=pL<=0.120000, 0.000010<=pH<=0.040000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.080000<=pL<=0.120000, 0.040000<=pH<=0.080000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.080000<=pL<=0.120000, 0.080000<=pH<=0.120000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.080000<=pL<=0.120000, 0.120000<=pH<=0.160000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.080000<=pL<=0.120000, 0.160000<=pH<=0.200000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.080000<=pL<=0.120000, 0.200000<=pH<=0.240000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.080000<=pL<=0.120000, 0.240000<=pH<=0.280000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.080000<=pL<=0.120000, 0.280000<=pH<=0.320000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.080000<=pL<=0.120000, 0.320000<=pH<=0.360000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.080000<=pL<=0.120000, 0.360000<=pH<=0.400000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.080000<=pL<=0.120000, 0.400000<=pH<=0.440000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.080000<=pL<=0.120000, 0.440000<=pH<=0.480000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.080000<=pL<=0.120000, 0.480000<=pH<=0.520000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.080000<=pL<=0.120000, 0.520000<=pH<=0.560000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.080000<=pL<=0.120000, 0.560000<=pH<=0.600000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.080000<=pL<=0.120000, 0.600000<=pH<=0.640000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.080000<=pL<=0.120000, 0.640000<=pH<=0.680000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.080000<=pL<=0.120000, 0.680000<=pH<=0.720000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.080000<=pL<=0.120000, 0.720000<=pH<=0.760000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.080000<=pL<=0.120000, 0.760000<=pH<=0.800000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.080000<=pL<=0.120000, 0.800000<=pH<=0.840000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.080000<=pL<=0.120000, 0.840000<=pH<=0.880000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.080000<=pL<=0.120000, 0.880000<=pH<=0.920000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.080000<=pL<=0.120000, 0.920000<=pH<=0.960000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.080000<=pL<=0.120000, 0.960000<=pH<=0.999990, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.120000<=pL<=0.160000, 0.000010<=pH<=0.040000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.120000<=pL<=0.160000, 0.040000<=pH<=0.080000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.120000<=pL<=0.160000, 0.080000<=pH<=0.120000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.120000<=pL<=0.160000, 0.120000<=pH<=0.160000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.120000<=pL<=0.160000, 0.160000<=pH<=0.200000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.120000<=pL<=0.160000, 0.200000<=pH<=0.240000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.120000<=pL<=0.160000, 0.240000<=pH<=0.280000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.120000<=pL<=0.160000, 0.280000<=pH<=0.320000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.120000<=pL<=0.160000, 0.320000<=pH<=0.360000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.120000<=pL<=0.160000, 0.360000<=pH<=0.400000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.120000<=pL<=0.160000, 0.400000<=pH<=0.440000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.120000<=pL<=0.160000, 0.440000<=pH<=0.480000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.120000<=pL<=0.160000, 0.480000<=pH<=0.520000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.120000<=pL<=0.160000, 0.520000<=pH<=0.560000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.120000<=pL<=0.160000, 0.560000<=pH<=0.600000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.120000<=pL<=0.160000, 0.600000<=pH<=0.640000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.120000<=pL<=0.160000, 0.640000<=pH<=0.680000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.120000<=pL<=0.160000, 0.680000<=pH<=0.720000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.120000<=pL<=0.160000, 0.720000<=pH<=0.760000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.120000<=pL<=0.160000, 0.760000<=pH<=0.800000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.120000<=pL<=0.160000, 0.800000<=pH<=0.840000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.120000<=pL<=0.160000, 0.840000<=pH<=0.880000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.120000<=pL<=0.160000, 0.880000<=pH<=0.920000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.120000<=pL<=0.160000, 0.920000<=pH<=0.960000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.120000<=pL<=0.160000, 0.960000<=pH<=0.999990, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.160000<=pL<=0.200000, 0.000010<=pH<=0.040000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.160000<=pL<=0.200000, 0.040000<=pH<=0.080000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.160000<=pL<=0.200000, 0.080000<=pH<=0.120000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.160000<=pL<=0.200000, 0.120000<=pH<=0.160000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.160000<=pL<=0.200000, 0.160000<=pH<=0.200000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.160000<=pL<=0.200000, 0.200000<=pH<=0.240000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.160000<=pL<=0.200000, 0.240000<=pH<=0.280000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.160000<=pL<=0.200000, 0.280000<=pH<=0.320000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.160000<=pL<=0.200000, 0.320000<=pH<=0.360000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.160000<=pL<=0.200000, 0.360000<=pH<=0.400000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.160000<=pL<=0.200000, 0.400000<=pH<=0.440000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.160000<=pL<=0.200000, 0.440000<=pH<=0.480000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.160000<=pL<=0.200000, 0.480000<=pH<=0.520000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.160000<=pL<=0.200000, 0.520000<=pH<=0.560000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.160000<=pL<=0.200000, 0.560000<=pH<=0.600000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.160000<=pL<=0.200000, 0.600000<=pH<=0.640000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.160000<=pL<=0.200000, 0.640000<=pH<=0.680000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.160000<=pL<=0.200000, 0.680000<=pH<=0.720000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.160000<=pL<=0.200000, 0.720000<=pH<=0.760000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.160000<=pL<=0.200000, 0.760000<=pH<=0.800000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.160000<=pL<=0.200000, 0.800000<=pH<=0.840000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.160000<=pL<=0.200000, 0.840000<=pH<=0.880000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.160000<=pL<=0.200000, 0.880000<=pH<=0.920000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.160000<=pL<=0.200000, 0.920000<=pH<=0.960000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.160000<=pL<=0.200000, 0.960000<=pH<=0.999990, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.200000<=pL<=0.240000, 0.000010<=pH<=0.040000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.200000<=pL<=0.240000, 0.040000<=pH<=0.080000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.200000<=pL<=0.240000, 0.080000<=pH<=0.120000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.200000<=pL<=0.240000, 0.120000<=pH<=0.160000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.200000<=pL<=0.240000, 0.160000<=pH<=0.200000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.200000<=pL<=0.240000, 0.200000<=pH<=0.240000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.200000<=pL<=0.240000, 0.240000<=pH<=0.280000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.200000<=pL<=0.240000, 0.280000<=pH<=0.320000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.200000<=pL<=0.240000, 0.320000<=pH<=0.360000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.200000<=pL<=0.240000, 0.360000<=pH<=0.400000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.200000<=pL<=0.240000, 0.400000<=pH<=0.440000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.200000<=pL<=0.240000, 0.440000<=pH<=0.480000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.200000<=pL<=0.240000, 0.480000<=pH<=0.520000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.200000<=pL<=0.240000, 0.520000<=pH<=0.560000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.200000<=pL<=0.240000, 0.560000<=pH<=0.600000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.200000<=pL<=0.240000, 0.600000<=pH<=0.640000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.200000<=pL<=0.240000, 0.640000<=pH<=0.680000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.200000<=pL<=0.240000, 0.680000<=pH<=0.720000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.200000<=pL<=0.240000, 0.720000<=pH<=0.760000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.200000<=pL<=0.240000, 0.760000<=pH<=0.800000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.200000<=pL<=0.240000, 0.800000<=pH<=0.840000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.200000<=pL<=0.240000, 0.840000<=pH<=0.880000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.200000<=pL<=0.240000, 0.880000<=pH<=0.920000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.200000<=pL<=0.240000, 0.920000<=pH<=0.960000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.200000<=pL<=0.240000, 0.960000<=pH<=0.999990, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.240000<=pL<=0.280000, 0.000010<=pH<=0.040000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.240000<=pL<=0.280000, 0.040000<=pH<=0.080000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.240000<=pL<=0.280000, 0.080000<=pH<=0.120000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.240000<=pL<=0.280000, 0.120000<=pH<=0.160000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.240000<=pL<=0.280000, 0.160000<=pH<=0.200000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.240000<=pL<=0.280000, 0.200000<=pH<=0.240000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.240000<=pL<=0.280000, 0.240000<=pH<=0.280000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.240000<=pL<=0.280000, 0.280000<=pH<=0.320000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.240000<=pL<=0.280000, 0.320000<=pH<=0.360000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.240000<=pL<=0.280000, 0.360000<=pH<=0.400000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.240000<=pL<=0.280000, 0.400000<=pH<=0.440000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.240000<=pL<=0.280000, 0.440000<=pH<=0.480000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.240000<=pL<=0.280000, 0.480000<=pH<=0.520000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.240000<=pL<=0.280000, 0.520000<=pH<=0.560000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.240000<=pL<=0.280000, 0.560000<=pH<=0.600000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.240000<=pL<=0.280000, 0.600000<=pH<=0.640000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.240000<=pL<=0.280000, 0.640000<=pH<=0.680000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.240000<=pL<=0.280000, 0.680000<=pH<=0.720000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.240000<=pL<=0.280000, 0.720000<=pH<=0.760000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.240000<=pL<=0.280000, 0.760000<=pH<=0.800000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.240000<=pL<=0.280000, 0.800000<=pH<=0.840000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.240000<=pL<=0.280000, 0.840000<=pH<=0.880000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.240000<=pL<=0.280000, 0.880000<=pH<=0.920000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.240000<=pL<=0.280000, 0.920000<=pH<=0.960000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.240000<=pL<=0.280000, 0.960000<=pH<=0.999990, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.280000<=pL<=0.320000, 0.000010<=pH<=0.040000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.280000<=pL<=0.320000, 0.040000<=pH<=0.080000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.280000<=pL<=0.320000, 0.080000<=pH<=0.120000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.280000<=pL<=0.320000, 0.120000<=pH<=0.160000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.280000<=pL<=0.320000, 0.160000<=pH<=0.200000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.280000<=pL<=0.320000, 0.200000<=pH<=0.240000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.280000<=pL<=0.320000, 0.240000<=pH<=0.280000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.280000<=pL<=0.320000, 0.280000<=pH<=0.320000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.280000<=pL<=0.320000, 0.320000<=pH<=0.360000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.280000<=pL<=0.320000, 0.360000<=pH<=0.400000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.280000<=pL<=0.320000, 0.400000<=pH<=0.440000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.280000<=pL<=0.320000, 0.440000<=pH<=0.480000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.280000<=pL<=0.320000, 0.480000<=pH<=0.520000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.280000<=pL<=0.320000, 0.520000<=pH<=0.560000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.280000<=pL<=0.320000, 0.560000<=pH<=0.600000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.280000<=pL<=0.320000, 0.600000<=pH<=0.640000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.280000<=pL<=0.320000, 0.640000<=pH<=0.680000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.280000<=pL<=0.320000, 0.680000<=pH<=0.720000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.280000<=pL<=0.320000, 0.720000<=pH<=0.760000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.280000<=pL<=0.320000, 0.760000<=pH<=0.800000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.280000<=pL<=0.320000, 0.800000<=pH<=0.840000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.280000<=pL<=0.320000, 0.840000<=pH<=0.880000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.280000<=pL<=0.320000, 0.880000<=pH<=0.920000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.280000<=pL<=0.320000, 0.920000<=pH<=0.960000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.280000<=pL<=0.320000, 0.960000<=pH<=0.999990, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.320000<=pL<=0.360000, 0.000010<=pH<=0.040000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.320000<=pL<=0.360000, 0.040000<=pH<=0.080000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.320000<=pL<=0.360000, 0.080000<=pH<=0.120000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.320000<=pL<=0.360000, 0.120000<=pH<=0.160000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.320000<=pL<=0.360000, 0.160000<=pH<=0.200000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.320000<=pL<=0.360000, 0.200000<=pH<=0.240000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.320000<=pL<=0.360000, 0.240000<=pH<=0.280000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.320000<=pL<=0.360000, 0.280000<=pH<=0.320000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.320000<=pL<=0.360000, 0.320000<=pH<=0.360000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.320000<=pL<=0.360000, 0.360000<=pH<=0.400000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.320000<=pL<=0.360000, 0.400000<=pH<=0.440000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.320000<=pL<=0.360000, 0.440000<=pH<=0.480000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.320000<=pL<=0.360000, 0.480000<=pH<=0.520000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.320000<=pL<=0.360000, 0.520000<=pH<=0.560000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.320000<=pL<=0.360000, 0.560000<=pH<=0.600000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.320000<=pL<=0.360000, 0.600000<=pH<=0.640000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.320000<=pL<=0.360000, 0.640000<=pH<=0.680000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.320000<=pL<=0.360000, 0.680000<=pH<=0.720000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.320000<=pL<=0.360000, 0.720000<=pH<=0.760000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.320000<=pL<=0.360000, 0.760000<=pH<=0.800000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.320000<=pL<=0.360000, 0.800000<=pH<=0.840000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.320000<=pL<=0.360000, 0.840000<=pH<=0.880000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.320000<=pL<=0.360000, 0.880000<=pH<=0.920000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.320000<=pL<=0.360000, 0.920000<=pH<=0.960000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.320000<=pL<=0.360000, 0.960000<=pH<=0.999990, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.360000<=pL<=0.400000, 0.000010<=pH<=0.040000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.360000<=pL<=0.400000, 0.040000<=pH<=0.080000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.360000<=pL<=0.400000, 0.080000<=pH<=0.120000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.360000<=pL<=0.400000, 0.120000<=pH<=0.160000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.360000<=pL<=0.400000, 0.160000<=pH<=0.200000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.360000<=pL<=0.400000, 0.200000<=pH<=0.240000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.360000<=pL<=0.400000, 0.240000<=pH<=0.280000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.360000<=pL<=0.400000, 0.280000<=pH<=0.320000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.360000<=pL<=0.400000, 0.320000<=pH<=0.360000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.360000<=pL<=0.400000, 0.360000<=pH<=0.400000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.360000<=pL<=0.400000, 0.400000<=pH<=0.440000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.360000<=pL<=0.400000, 0.440000<=pH<=0.480000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.360000<=pL<=0.400000, 0.480000<=pH<=0.520000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.360000<=pL<=0.400000, 0.520000<=pH<=0.560000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.360000<=pL<=0.400000, 0.560000<=pH<=0.600000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.360000<=pL<=0.400000, 0.600000<=pH<=0.640000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.360000<=pL<=0.400000, 0.640000<=pH<=0.680000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.360000<=pL<=0.400000, 0.680000<=pH<=0.720000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.360000<=pL<=0.400000, 0.720000<=pH<=0.760000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.360000<=pL<=0.400000, 0.760000<=pH<=0.800000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.360000<=pL<=0.400000, 0.800000<=pH<=0.840000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.360000<=pL<=0.400000, 0.840000<=pH<=0.880000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.360000<=pL<=0.400000, 0.880000<=pH<=0.920000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.360000<=pL<=0.400000, 0.920000<=pH<=0.960000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.360000<=pL<=0.400000, 0.960000<=pH<=0.999990, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.400000<=pL<=0.440000, 0.000010<=pH<=0.040000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.400000<=pL<=0.440000, 0.040000<=pH<=0.080000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.400000<=pL<=0.440000, 0.080000<=pH<=0.120000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.400000<=pL<=0.440000, 0.120000<=pH<=0.160000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.400000<=pL<=0.440000, 0.160000<=pH<=0.200000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.400000<=pL<=0.440000, 0.200000<=pH<=0.240000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.400000<=pL<=0.440000, 0.240000<=pH<=0.280000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.400000<=pL<=0.440000, 0.280000<=pH<=0.320000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.400000<=pL<=0.440000, 0.320000<=pH<=0.360000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.400000<=pL<=0.440000, 0.360000<=pH<=0.400000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.400000<=pL<=0.440000, 0.400000<=pH<=0.440000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.400000<=pL<=0.440000, 0.440000<=pH<=0.480000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.400000<=pL<=0.440000, 0.480000<=pH<=0.520000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.400000<=pL<=0.440000, 0.520000<=pH<=0.560000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.400000<=pL<=0.440000, 0.560000<=pH<=0.600000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.400000<=pL<=0.440000, 0.600000<=pH<=0.640000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.400000<=pL<=0.440000, 0.640000<=pH<=0.680000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.400000<=pL<=0.440000, 0.680000<=pH<=0.720000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.400000<=pL<=0.440000, 0.720000<=pH<=0.760000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.400000<=pL<=0.440000, 0.760000<=pH<=0.800000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.400000<=pL<=0.440000, 0.800000<=pH<=0.840000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.400000<=pL<=0.440000, 0.840000<=pH<=0.880000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.400000<=pL<=0.440000, 0.880000<=pH<=0.920000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.400000<=pL<=0.440000, 0.920000<=pH<=0.960000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.400000<=pL<=0.440000, 0.960000<=pH<=0.999990, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.440000<=pL<=0.480000, 0.000010<=pH<=0.040000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.440000<=pL<=0.480000, 0.040000<=pH<=0.080000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.440000<=pL<=0.480000, 0.080000<=pH<=0.120000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.440000<=pL<=0.480000, 0.120000<=pH<=0.160000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.440000<=pL<=0.480000, 0.160000<=pH<=0.200000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.440000<=pL<=0.480000, 0.200000<=pH<=0.240000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.440000<=pL<=0.480000, 0.240000<=pH<=0.280000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.440000<=pL<=0.480000, 0.280000<=pH<=0.320000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.440000<=pL<=0.480000, 0.320000<=pH<=0.360000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.440000<=pL<=0.480000, 0.360000<=pH<=0.400000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.440000<=pL<=0.480000, 0.400000<=pH<=0.440000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.440000<=pL<=0.480000, 0.440000<=pH<=0.480000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.440000<=pL<=0.480000, 0.480000<=pH<=0.520000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.440000<=pL<=0.480000, 0.520000<=pH<=0.560000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.440000<=pL<=0.480000, 0.560000<=pH<=0.600000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.440000<=pL<=0.480000, 0.600000<=pH<=0.640000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.440000<=pL<=0.480000, 0.640000<=pH<=0.680000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.440000<=pL<=0.480000, 0.680000<=pH<=0.720000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.440000<=pL<=0.480000, 0.720000<=pH<=0.760000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.440000<=pL<=0.480000, 0.760000<=pH<=0.800000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.440000<=pL<=0.480000, 0.800000<=pH<=0.840000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.440000<=pL<=0.480000, 0.840000<=pH<=0.880000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.440000<=pL<=0.480000, 0.880000<=pH<=0.920000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.440000<=pL<=0.480000, 0.920000<=pH<=0.960000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.440000<=pL<=0.480000, 0.960000<=pH<=0.999990, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.480000<=pL<=0.520000, 0.000010<=pH<=0.040000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.480000<=pL<=0.520000, 0.040000<=pH<=0.080000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.480000<=pL<=0.520000, 0.080000<=pH<=0.120000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.480000<=pL<=0.520000, 0.120000<=pH<=0.160000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.480000<=pL<=0.520000, 0.160000<=pH<=0.200000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.480000<=pL<=0.520000, 0.200000<=pH<=0.240000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.480000<=pL<=0.520000, 0.240000<=pH<=0.280000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.480000<=pL<=0.520000, 0.280000<=pH<=0.320000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.480000<=pL<=0.520000, 0.320000<=pH<=0.360000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.480000<=pL<=0.520000, 0.360000<=pH<=0.400000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.480000<=pL<=0.520000, 0.400000<=pH<=0.440000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.480000<=pL<=0.520000, 0.440000<=pH<=0.480000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.480000<=pL<=0.520000, 0.480000<=pH<=0.520000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.480000<=pL<=0.520000, 0.520000<=pH<=0.560000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.480000<=pL<=0.520000, 0.560000<=pH<=0.600000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.480000<=pL<=0.520000, 0.600000<=pH<=0.640000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.480000<=pL<=0.520000, 0.640000<=pH<=0.680000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.480000<=pL<=0.520000, 0.680000<=pH<=0.720000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.480000<=pL<=0.520000, 0.720000<=pH<=0.760000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.480000<=pL<=0.520000, 0.760000<=pH<=0.800000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.480000<=pL<=0.520000, 0.800000<=pH<=0.840000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.480000<=pL<=0.520000, 0.840000<=pH<=0.880000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.480000<=pL<=0.520000, 0.880000<=pH<=0.920000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.480000<=pL<=0.520000, 0.920000<=pH<=0.960000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.480000<=pL<=0.520000, 0.960000<=pH<=0.999990, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.520000<=pL<=0.560000, 0.000010<=pH<=0.040000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.520000<=pL<=0.560000, 0.040000<=pH<=0.080000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.520000<=pL<=0.560000, 0.080000<=pH<=0.120000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.520000<=pL<=0.560000, 0.120000<=pH<=0.160000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.520000<=pL<=0.560000, 0.160000<=pH<=0.200000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.520000<=pL<=0.560000, 0.200000<=pH<=0.240000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.520000<=pL<=0.560000, 0.240000<=pH<=0.280000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.520000<=pL<=0.560000, 0.280000<=pH<=0.320000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.520000<=pL<=0.560000, 0.320000<=pH<=0.360000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.520000<=pL<=0.560000, 0.360000<=pH<=0.400000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.520000<=pL<=0.560000, 0.400000<=pH<=0.440000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.520000<=pL<=0.560000, 0.440000<=pH<=0.480000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.520000<=pL<=0.560000, 0.480000<=pH<=0.520000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.520000<=pL<=0.560000, 0.520000<=pH<=0.560000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.520000<=pL<=0.560000, 0.560000<=pH<=0.600000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.520000<=pL<=0.560000, 0.600000<=pH<=0.640000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.520000<=pL<=0.560000, 0.640000<=pH<=0.680000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.520000<=pL<=0.560000, 0.680000<=pH<=0.720000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.520000<=pL<=0.560000, 0.720000<=pH<=0.760000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.520000<=pL<=0.560000, 0.760000<=pH<=0.800000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.520000<=pL<=0.560000, 0.800000<=pH<=0.840000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.520000<=pL<=0.560000, 0.840000<=pH<=0.880000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.520000<=pL<=0.560000, 0.880000<=pH<=0.920000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.520000<=pL<=0.560000, 0.920000<=pH<=0.960000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.520000<=pL<=0.560000, 0.960000<=pH<=0.999990, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.560000<=pL<=0.600000, 0.000010<=pH<=0.040000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.560000<=pL<=0.600000, 0.040000<=pH<=0.080000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.560000<=pL<=0.600000, 0.080000<=pH<=0.120000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.560000<=pL<=0.600000, 0.120000<=pH<=0.160000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.560000<=pL<=0.600000, 0.160000<=pH<=0.200000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.560000<=pL<=0.600000, 0.200000<=pH<=0.240000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.560000<=pL<=0.600000, 0.240000<=pH<=0.280000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.560000<=pL<=0.600000, 0.280000<=pH<=0.320000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.560000<=pL<=0.600000, 0.320000<=pH<=0.360000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.560000<=pL<=0.600000, 0.360000<=pH<=0.400000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.560000<=pL<=0.600000, 0.400000<=pH<=0.440000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.560000<=pL<=0.600000, 0.440000<=pH<=0.480000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.560000<=pL<=0.600000, 0.480000<=pH<=0.520000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.560000<=pL<=0.600000, 0.520000<=pH<=0.560000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.560000<=pL<=0.600000, 0.560000<=pH<=0.600000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.560000<=pL<=0.600000, 0.600000<=pH<=0.640000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.560000<=pL<=0.600000, 0.640000<=pH<=0.680000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.560000<=pL<=0.600000, 0.680000<=pH<=0.720000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.560000<=pL<=0.600000, 0.720000<=pH<=0.760000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.560000<=pL<=0.600000, 0.760000<=pH<=0.800000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.560000<=pL<=0.600000, 0.800000<=pH<=0.840000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.560000<=pL<=0.600000, 0.840000<=pH<=0.880000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.560000<=pL<=0.600000, 0.880000<=pH<=0.920000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.560000<=pL<=0.600000, 0.920000<=pH<=0.960000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.560000<=pL<=0.600000, 0.960000<=pH<=0.999990, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.600000<=pL<=0.640000, 0.000010<=pH<=0.040000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.600000<=pL<=0.640000, 0.040000<=pH<=0.080000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.600000<=pL<=0.640000, 0.080000<=pH<=0.120000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.600000<=pL<=0.640000, 0.120000<=pH<=0.160000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.600000<=pL<=0.640000, 0.160000<=pH<=0.200000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.600000<=pL<=0.640000, 0.200000<=pH<=0.240000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.600000<=pL<=0.640000, 0.240000<=pH<=0.280000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.600000<=pL<=0.640000, 0.280000<=pH<=0.320000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.600000<=pL<=0.640000, 0.320000<=pH<=0.360000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.600000<=pL<=0.640000, 0.360000<=pH<=0.400000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.600000<=pL<=0.640000, 0.400000<=pH<=0.440000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.600000<=pL<=0.640000, 0.440000<=pH<=0.480000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.600000<=pL<=0.640000, 0.480000<=pH<=0.520000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.600000<=pL<=0.640000, 0.520000<=pH<=0.560000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.600000<=pL<=0.640000, 0.560000<=pH<=0.600000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.600000<=pL<=0.640000, 0.600000<=pH<=0.640000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.600000<=pL<=0.640000, 0.640000<=pH<=0.680000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.600000<=pL<=0.640000, 0.680000<=pH<=0.720000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.600000<=pL<=0.640000, 0.720000<=pH<=0.760000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.600000<=pL<=0.640000, 0.760000<=pH<=0.800000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.600000<=pL<=0.640000, 0.800000<=pH<=0.840000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.600000<=pL<=0.640000, 0.840000<=pH<=0.880000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.600000<=pL<=0.640000, 0.880000<=pH<=0.920000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.600000<=pL<=0.640000, 0.920000<=pH<=0.960000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.600000<=pL<=0.640000, 0.960000<=pH<=0.999990, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.640000<=pL<=0.680000, 0.000010<=pH<=0.040000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.640000<=pL<=0.680000, 0.040000<=pH<=0.080000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.640000<=pL<=0.680000, 0.080000<=pH<=0.120000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.640000<=pL<=0.680000, 0.120000<=pH<=0.160000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.640000<=pL<=0.680000, 0.160000<=pH<=0.200000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.640000<=pL<=0.680000, 0.200000<=pH<=0.240000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.640000<=pL<=0.680000, 0.240000<=pH<=0.280000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.640000<=pL<=0.680000, 0.280000<=pH<=0.320000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.640000<=pL<=0.680000, 0.320000<=pH<=0.360000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.640000<=pL<=0.680000, 0.360000<=pH<=0.400000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.640000<=pL<=0.680000, 0.400000<=pH<=0.440000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.640000<=pL<=0.680000, 0.440000<=pH<=0.480000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.640000<=pL<=0.680000, 0.480000<=pH<=0.520000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.640000<=pL<=0.680000, 0.520000<=pH<=0.560000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.640000<=pL<=0.680000, 0.560000<=pH<=0.600000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.640000<=pL<=0.680000, 0.600000<=pH<=0.640000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.640000<=pL<=0.680000, 0.640000<=pH<=0.680000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.640000<=pL<=0.680000, 0.680000<=pH<=0.720000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.640000<=pL<=0.680000, 0.720000<=pH<=0.760000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.640000<=pL<=0.680000, 0.760000<=pH<=0.800000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.640000<=pL<=0.680000, 0.800000<=pH<=0.840000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.640000<=pL<=0.680000, 0.840000<=pH<=0.880000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.640000<=pL<=0.680000, 0.880000<=pH<=0.920000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.640000<=pL<=0.680000, 0.920000<=pH<=0.960000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.640000<=pL<=0.680000, 0.960000<=pH<=0.999990, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.680000<=pL<=0.720000, 0.000010<=pH<=0.040000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.680000<=pL<=0.720000, 0.040000<=pH<=0.080000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.680000<=pL<=0.720000, 0.080000<=pH<=0.120000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.680000<=pL<=0.720000, 0.120000<=pH<=0.160000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.680000<=pL<=0.720000, 0.160000<=pH<=0.200000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.680000<=pL<=0.720000, 0.200000<=pH<=0.240000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.680000<=pL<=0.720000, 0.240000<=pH<=0.280000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.680000<=pL<=0.720000, 0.280000<=pH<=0.320000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.680000<=pL<=0.720000, 0.320000<=pH<=0.360000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.680000<=pL<=0.720000, 0.360000<=pH<=0.400000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.680000<=pL<=0.720000, 0.400000<=pH<=0.440000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.680000<=pL<=0.720000, 0.440000<=pH<=0.480000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.680000<=pL<=0.720000, 0.480000<=pH<=0.520000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.680000<=pL<=0.720000, 0.520000<=pH<=0.560000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.680000<=pL<=0.720000, 0.560000<=pH<=0.600000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.680000<=pL<=0.720000, 0.600000<=pH<=0.640000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.680000<=pL<=0.720000, 0.640000<=pH<=0.680000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.680000<=pL<=0.720000, 0.680000<=pH<=0.720000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.680000<=pL<=0.720000, 0.720000<=pH<=0.760000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.680000<=pL<=0.720000, 0.760000<=pH<=0.800000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.680000<=pL<=0.720000, 0.800000<=pH<=0.840000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.680000<=pL<=0.720000, 0.840000<=pH<=0.880000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.680000<=pL<=0.720000, 0.880000<=pH<=0.920000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.680000<=pL<=0.720000, 0.920000<=pH<=0.960000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.680000<=pL<=0.720000, 0.960000<=pH<=0.999990, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.720000<=pL<=0.760000, 0.000010<=pH<=0.040000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.720000<=pL<=0.760000, 0.040000<=pH<=0.080000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.720000<=pL<=0.760000, 0.080000<=pH<=0.120000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.720000<=pL<=0.760000, 0.120000<=pH<=0.160000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.720000<=pL<=0.760000, 0.160000<=pH<=0.200000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.720000<=pL<=0.760000, 0.200000<=pH<=0.240000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.720000<=pL<=0.760000, 0.240000<=pH<=0.280000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.720000<=pL<=0.760000, 0.280000<=pH<=0.320000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.720000<=pL<=0.760000, 0.320000<=pH<=0.360000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.720000<=pL<=0.760000, 0.360000<=pH<=0.400000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.720000<=pL<=0.760000, 0.400000<=pH<=0.440000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.720000<=pL<=0.760000, 0.440000<=pH<=0.480000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.720000<=pL<=0.760000, 0.480000<=pH<=0.520000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.720000<=pL<=0.760000, 0.520000<=pH<=0.560000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.720000<=pL<=0.760000, 0.560000<=pH<=0.600000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.720000<=pL<=0.760000, 0.600000<=pH<=0.640000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.720000<=pL<=0.760000, 0.640000<=pH<=0.680000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.720000<=pL<=0.760000, 0.680000<=pH<=0.720000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.720000<=pL<=0.760000, 0.720000<=pH<=0.760000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.720000<=pL<=0.760000, 0.760000<=pH<=0.800000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.720000<=pL<=0.760000, 0.800000<=pH<=0.840000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.720000<=pL<=0.760000, 0.840000<=pH<=0.880000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.720000<=pL<=0.760000, 0.880000<=pH<=0.920000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.720000<=pL<=0.760000, 0.920000<=pH<=0.960000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.720000<=pL<=0.760000, 0.960000<=pH<=0.999990, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.760000<=pL<=0.800000, 0.000010<=pH<=0.040000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.760000<=pL<=0.800000, 0.040000<=pH<=0.080000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.760000<=pL<=0.800000, 0.080000<=pH<=0.120000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.760000<=pL<=0.800000, 0.120000<=pH<=0.160000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.760000<=pL<=0.800000, 0.160000<=pH<=0.200000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.760000<=pL<=0.800000, 0.200000<=pH<=0.240000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.760000<=pL<=0.800000, 0.240000<=pH<=0.280000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.760000<=pL<=0.800000, 0.280000<=pH<=0.320000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.760000<=pL<=0.800000, 0.320000<=pH<=0.360000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.760000<=pL<=0.800000, 0.360000<=pH<=0.400000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.760000<=pL<=0.800000, 0.400000<=pH<=0.440000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.760000<=pL<=0.800000, 0.440000<=pH<=0.480000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.760000<=pL<=0.800000, 0.480000<=pH<=0.520000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.760000<=pL<=0.800000, 0.520000<=pH<=0.560000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.760000<=pL<=0.800000, 0.560000<=pH<=0.600000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.760000<=pL<=0.800000, 0.600000<=pH<=0.640000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.760000<=pL<=0.800000, 0.640000<=pH<=0.680000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.760000<=pL<=0.800000, 0.680000<=pH<=0.720000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.760000<=pL<=0.800000, 0.720000<=pH<=0.760000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.760000<=pL<=0.800000, 0.760000<=pH<=0.800000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.760000<=pL<=0.800000, 0.800000<=pH<=0.840000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.760000<=pL<=0.800000, 0.840000<=pH<=0.880000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.760000<=pL<=0.800000, 0.880000<=pH<=0.920000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.760000<=pL<=0.800000, 0.920000<=pH<=0.960000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.760000<=pL<=0.800000, 0.960000<=pH<=0.999990, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.800000<=pL<=0.840000, 0.000010<=pH<=0.040000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.800000<=pL<=0.840000, 0.040000<=pH<=0.080000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.800000<=pL<=0.840000, 0.080000<=pH<=0.120000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.800000<=pL<=0.840000, 0.120000<=pH<=0.160000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.800000<=pL<=0.840000, 0.160000<=pH<=0.200000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.800000<=pL<=0.840000, 0.200000<=pH<=0.240000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.800000<=pL<=0.840000, 0.240000<=pH<=0.280000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.800000<=pL<=0.840000, 0.280000<=pH<=0.320000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.800000<=pL<=0.840000, 0.320000<=pH<=0.360000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.800000<=pL<=0.840000, 0.360000<=pH<=0.400000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.800000<=pL<=0.840000, 0.400000<=pH<=0.440000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.800000<=pL<=0.840000, 0.440000<=pH<=0.480000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.800000<=pL<=0.840000, 0.480000<=pH<=0.520000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.800000<=pL<=0.840000, 0.520000<=pH<=0.560000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.800000<=pL<=0.840000, 0.560000<=pH<=0.600000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.800000<=pL<=0.840000, 0.600000<=pH<=0.640000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.800000<=pL<=0.840000, 0.640000<=pH<=0.680000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.800000<=pL<=0.840000, 0.680000<=pH<=0.720000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.800000<=pL<=0.840000, 0.720000<=pH<=0.760000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.800000<=pL<=0.840000, 0.760000<=pH<=0.800000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.800000<=pL<=0.840000, 0.800000<=pH<=0.840000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.800000<=pL<=0.840000, 0.840000<=pH<=0.880000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.800000<=pL<=0.840000, 0.880000<=pH<=0.920000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.800000<=pL<=0.840000, 0.920000<=pH<=0.960000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.800000<=pL<=0.840000, 0.960000<=pH<=0.999990, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.840000<=pL<=0.880000, 0.000010<=pH<=0.040000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.840000<=pL<=0.880000, 0.040000<=pH<=0.080000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.840000<=pL<=0.880000, 0.080000<=pH<=0.120000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.840000<=pL<=0.880000, 0.120000<=pH<=0.160000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.840000<=pL<=0.880000, 0.160000<=pH<=0.200000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.840000<=pL<=0.880000, 0.200000<=pH<=0.240000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.840000<=pL<=0.880000, 0.240000<=pH<=0.280000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.840000<=pL<=0.880000, 0.280000<=pH<=0.320000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.840000<=pL<=0.880000, 0.320000<=pH<=0.360000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.840000<=pL<=0.880000, 0.360000<=pH<=0.400000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.840000<=pL<=0.880000, 0.400000<=pH<=0.440000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.840000<=pL<=0.880000, 0.440000<=pH<=0.480000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.840000<=pL<=0.880000, 0.480000<=pH<=0.520000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.840000<=pL<=0.880000, 0.520000<=pH<=0.560000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.840000<=pL<=0.880000, 0.560000<=pH<=0.600000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.840000<=pL<=0.880000, 0.600000<=pH<=0.640000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.840000<=pL<=0.880000, 0.640000<=pH<=0.680000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.840000<=pL<=0.880000, 0.680000<=pH<=0.720000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.840000<=pL<=0.880000, 0.720000<=pH<=0.760000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.840000<=pL<=0.880000, 0.760000<=pH<=0.800000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.840000<=pL<=0.880000, 0.800000<=pH<=0.840000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.840000<=pL<=0.880000, 0.840000<=pH<=0.880000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.840000<=pL<=0.880000, 0.880000<=pH<=0.920000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.840000<=pL<=0.880000, 0.920000<=pH<=0.960000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.840000<=pL<=0.880000, 0.960000<=pH<=0.999990, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.880000<=pL<=0.920000, 0.000010<=pH<=0.040000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.880000<=pL<=0.920000, 0.040000<=pH<=0.080000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.880000<=pL<=0.920000, 0.080000<=pH<=0.120000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.880000<=pL<=0.920000, 0.120000<=pH<=0.160000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.880000<=pL<=0.920000, 0.160000<=pH<=0.200000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.880000<=pL<=0.920000, 0.200000<=pH<=0.240000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.880000<=pL<=0.920000, 0.240000<=pH<=0.280000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.880000<=pL<=0.920000, 0.280000<=pH<=0.320000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.880000<=pL<=0.920000, 0.320000<=pH<=0.360000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.880000<=pL<=0.920000, 0.360000<=pH<=0.400000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.880000<=pL<=0.920000, 0.400000<=pH<=0.440000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.880000<=pL<=0.920000, 0.440000<=pH<=0.480000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.880000<=pL<=0.920000, 0.480000<=pH<=0.520000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.880000<=pL<=0.920000, 0.520000<=pH<=0.560000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.880000<=pL<=0.920000, 0.560000<=pH<=0.600000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.880000<=pL<=0.920000, 0.600000<=pH<=0.640000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.880000<=pL<=0.920000, 0.640000<=pH<=0.680000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.880000<=pL<=0.920000, 0.680000<=pH<=0.720000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.880000<=pL<=0.920000, 0.720000<=pH<=0.760000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.880000<=pL<=0.920000, 0.760000<=pH<=0.800000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.880000<=pL<=0.920000, 0.800000<=pH<=0.840000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.880000<=pL<=0.920000, 0.840000<=pH<=0.880000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.880000<=pL<=0.920000, 0.880000<=pH<=0.920000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.880000<=pL<=0.920000, 0.920000<=pH<=0.960000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.880000<=pL<=0.920000, 0.960000<=pH<=0.999990, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.920000<=pL<=0.960000, 0.000010<=pH<=0.040000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.920000<=pL<=0.960000, 0.040000<=pH<=0.080000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.920000<=pL<=0.960000, 0.080000<=pH<=0.120000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.920000<=pL<=0.960000, 0.120000<=pH<=0.160000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.920000<=pL<=0.960000, 0.160000<=pH<=0.200000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.920000<=pL<=0.960000, 0.200000<=pH<=0.240000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.920000<=pL<=0.960000, 0.240000<=pH<=0.280000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.920000<=pL<=0.960000, 0.280000<=pH<=0.320000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.920000<=pL<=0.960000, 0.320000<=pH<=0.360000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.920000<=pL<=0.960000, 0.360000<=pH<=0.400000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.920000<=pL<=0.960000, 0.400000<=pH<=0.440000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.920000<=pL<=0.960000, 0.440000<=pH<=0.480000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.920000<=pL<=0.960000, 0.480000<=pH<=0.520000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.920000<=pL<=0.960000, 0.520000<=pH<=0.560000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.920000<=pL<=0.960000, 0.560000<=pH<=0.600000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.920000<=pL<=0.960000, 0.600000<=pH<=0.640000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.920000<=pL<=0.960000, 0.640000<=pH<=0.680000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.920000<=pL<=0.960000, 0.680000<=pH<=0.720000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.920000<=pL<=0.960000, 0.720000<=pH<=0.760000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.920000<=pL<=0.960000, 0.760000<=pH<=0.800000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.920000<=pL<=0.960000, 0.800000<=pH<=0.840000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.920000<=pL<=0.960000, 0.840000<=pH<=0.880000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.920000<=pL<=0.960000, 0.880000<=pH<=0.920000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.920000<=pL<=0.960000, 0.920000<=pH<=0.960000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.920000<=pL<=0.960000, 0.960000<=pH<=0.999990, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.960000<=pL<=0.999990, 0.000010<=pH<=0.040000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.960000<=pL<=0.999990, 0.040000<=pH<=0.080000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.960000<=pL<=0.999990, 0.080000<=pH<=0.120000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.960000<=pL<=0.999990, 0.120000<=pH<=0.160000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.960000<=pL<=0.999990, 0.160000<=pH<=0.200000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.960000<=pL<=0.999990, 0.200000<=pH<=0.240000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.960000<=pL<=0.999990, 0.240000<=pH<=0.280000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.960000<=pL<=0.999990, 0.280000<=pH<=0.320000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.960000<=pL<=0.999990, 0.320000<=pH<=0.360000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.960000<=pL<=0.999990, 0.360000<=pH<=0.400000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.960000<=pL<=0.999990, 0.400000<=pH<=0.440000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.960000<=pL<=0.999990, 0.440000<=pH<=0.480000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.960000<=pL<=0.999990, 0.480000<=pH<=0.520000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.960000<=pL<=0.999990, 0.520000<=pH<=0.560000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.960000<=pL<=0.999990, 0.560000<=pH<=0.600000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.960000<=pL<=0.999990, 0.600000<=pH<=0.640000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.960000<=pL<=0.999990, 0.640000<=pH<=0.680000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.960000<=pL<=0.999990, 0.680000<=pH<=0.720000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.960000<=pL<=0.999990, 0.720000<=pH<=0.760000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.960000<=pL<=0.999990, 0.760000<=pH<=0.800000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.960000<=pL<=0.999990, 0.800000<=pH<=0.840000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.960000<=pL<=0.999990, 0.840000<=pH<=0.880000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.960000<=pL<=0.999990, 0.880000<=pH<=0.920000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.960000<=pL<=0.999990, 0.920000<=pH<=0.960000, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; -0.960000<=pL<=0.999990, 0.960000<=pH<=0.999990, 0.05<=pLDiff<=0.15, 0.05<=pHDiff<=0.15; diff --git a/examples/pmdp/reporter4/reporter4_space.txt b/examples/pmdp/reporter4/reporter4_space.txt deleted file mode 100644 index d0f12ccfc..000000000 --- a/examples/pmdp/reporter4/reporter4_space.txt +++ /dev/null @@ -1,2 +0,0 @@ -0.000010<=pL<=0.999990, 0.000010<=pH<=0.999990, 0.000010<=pLDiff<=0.999990, 0.000010<=pHDiff<=0.999990; - diff --git a/examples/pmdp/reporter4/reporter6_6_2_2.pm b/examples/pmdp/reporter4/reporter6_6_2_2.pm deleted file mode 100644 index 1ce47c201..000000000 --- a/examples/pmdp/reporter4/reporter6_6_2_2.pm +++ /dev/null @@ -1,73 +0,0 @@ -// GRID WORLD MODEL OF A SEMIAUTONOMOUS EXPLORING ROBOT -// Sebastian Junges, RWTH Aachen University -// As described in -// Junges, Jansen, Dehnert, Topcu, Katoen: -// Safety Constrained Reinforcement Learning -// Proc. of TACAS’16 - -mdp - -//PARAMETERS -//The difference of the reliability of the channels between the worst and at the best position -const double pLDiff;//=0.1; -const double pHDiff;//=0.1; -//Scaling factor for the minimum reliability of the channels -const double pL;//=8/9; -const double pH;//=1; - -//CONSTANTS -//The minimum reliablities -const double pLMin=pL*(1-pLDiff); -const double pHMin=pH*(1-pHDiff); - -// Grid size -const int Xsize = 6; -const int Ysize = 6; -// Number of tries before an error -const int MAXTRIES = 2; -// Ball within the robot has to move. -const int B=2; - - -formula T = (xLoc = Xsize & yLoc = Ysize); - - -module robot - xLoc : [1..Ysize] init 1; - yLoc : [1..Xsize] init 1; - unreported : [0..B] init 0; - hasSendNow : bool init false; - tries : [0..MAXTRIES] init 0; - - [up] xLoc < Xsize & !T & hasSendNow -> 1:(xLoc'=xLoc+1) & (unreported' = 0) & (hasSendNow'=false); - [up] xLoc < Xsize & !T & !hasSendNow -> 1:(xLoc'=xLoc+1) & (unreported'=min(unreported+1, B)); - [right] yLoc < Ysize & !T & hasSendNow -> 1:(yLoc'=yLoc+1) & (unreported' = 0)& (hasSendNow'=false); - [right] yLoc < Ysize & !T & !hasSendNow -> 1:(yLoc'=yLoc+1) & (unreported'=min(unreported+1,B)); - [sendL] !hasSendNow & !T & tries < MAXTRIES -> (pLMin + pLDiff * xLoc/Xsize):(hasSendNow'=true) & (tries'=0) + (1 - pLMin - pLDiff * xLoc/Xsize): (tries'=tries+1); - [sendH] !hasSendNow & !T & tries < MAXTRIES -> (pHMin + pHDiff * yLoc/Ysize):(hasSendNow'=true) & (tries'=0) + (1 - pHMin - pHDiff * yLoc/Ysize): (tries'=tries+1); - [done] T -> 1:true; -endmodule - -rewards "sendbased" - [up] true: 0.03; - [right] true: 0.03; - [sendL] true: max(10, min(11 + xLoc - yLoc, 20)); - [sendH] true: min(13 + xLoc + yLoc, 24); -endrewards - -rewards "sendbased_lower" - [up] true: 0.03; - [right] true: 0.03; - [sendL] true: 10; - [sendH] true: 12; -endrewards - -rewards "sendbased_upper" - [up] true: 0.03; - [right] true: 0.03; - [sendL] true: 20; - [sendH] true: 24; -endrewards - -label "Target" = T; -label "Crash" = unreported=B; diff --git a/examples/pmdp/two_dice/two_dice.nm b/examples/pmdp/two_dice/two_dice.nm deleted file mode 100644 index 1ba0d1078..000000000 --- a/examples/pmdp/two_dice/two_dice.nm +++ /dev/null @@ -1,45 +0,0 @@ -// sum of two dice as the asynchronous parallel composition of -// two copies of Knuth's model of a fair die using only fair coins - -mdp - -//Coin Probabilities -const double p1; -const double p2; - -module die1 - - // local state - s1 : [0..7] init 0; - // value of the dice - d1 : [0..6] init 0; - - [] s1=0 -> p1 : (s1'=1) + 1-p1 : (s1'=2); - [] s1=1 -> p1 : (s1'=3) + 1-p1 : (s1'=4); - [] s1=2 -> p1 : (s1'=5) + 1-p1 : (s1'=6); - [] s1=3 -> p1 : (s1'=1) + 1-p1 : (s1'=7) & (d1'=1); - [] s1=4 -> p1 : (s1'=7) & (d1'=2) + 1-p1 : (s1'=7) & (d1'=3); - [] s1=5 -> p1 : (s1'=7) & (d1'=4) + 1-p1 : (s1'=7) & (d1'=5); - [] s1=6 -> p1 : (s1'=2) + 1-p1 : (s1'=7) & (d1'=6); - [] s1=7 & s2=7 -> 1: (s1'=7); -endmodule - -module die2 = die1 [ s1=s2, s2=s1, d1=d2, p1=p2 ] endmodule - -rewards "coinflips" - [] s1<7 | s2<7 : 1; -endrewards - -label "done" = s1=7 & s2=7; -label "two" = s1=7 & s2=7 & d1+d2=2; -label "three" = s1=7 & s2=7 & d1+d2=3; -label "four" = s1=7 & s2=7 & d1+d2=4; -label "five" = s1=7 & s2=7 & d1+d2=5; -label "six" = s1=7 & s2=7 & d1+d2=6; -label "seven" = s1=7 & s2=7 & d1+d2=7; -label "eight" = s1=7 & s2=7 & d1+d2=8; -label "nine" = s1=7 & s2=7 & d1+d2=9; -label "ten" = s1=7 & s2=7 & d1+d2=10; -label "eleven" = s1=7 & s2=7 & d1+d2=11; -label "twelve" = s1=7 & s2=7 & d1+d2=12; -label "doubles" = s1=7 & s2=7 & d1=d2; diff --git a/examples/pmdp/two_dice/two_dice.prctl b/examples/pmdp/two_dice/two_dice.prctl deleted file mode 100644 index 3368d9651..000000000 --- a/examples/pmdp/two_dice/two_dice.prctl +++ /dev/null @@ -1,4 +0,0 @@ -P<=0.17 [ F "doubles" ] - - - diff --git a/examples/pmdp/zeroconf/models b/examples/pmdp/zeroconf/models deleted file mode 100644 index 07d1fa6b7..000000000 --- a/examples/pmdp/zeroconf/models +++ /dev/null @@ -1,2 +0,0 @@ -zeroconf.pm -const K=2 -zeroconf.pm -const K=5 diff --git a/examples/pmdp/zeroconf/zeroconf.pm b/examples/pmdp/zeroconf/zeroconf.pm deleted file mode 100644 index 682db33d4..000000000 --- a/examples/pmdp/zeroconf/zeroconf.pm +++ /dev/null @@ -1,269 +0,0 @@ -// 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 - -// model is an mdp -mdp - -// reset or noreset model -const bool reset=false; - -//------------------------------------------------------------- - -// 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 - -//------------------------------------------------------------- - - -//------------------------------------------------------------- -// VARIABLES -//const int N; // number of abstract hosts -const int K; // number of probes to send -const double loss; // 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 : [0..1]; // 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 - - // 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 - - // time passage (only if no messages to send or sending a message) - [time] l>0 & b=0 & n=0 & n0=0 & n1=0 -> (b'=b); // cannot send a message - [time] l>0 & b>0 & z<1 -> (z'=min(z+1,TIME_MAX_Z)); // sending a message - - // get messages to be sent (so message has same ip address as host) - [send] l>0 & n=0 -> (b_ip0'=ip) & (n'=n+1); - [send] l>0 & n=1 -> (b_ip1'=ip) & (n'=n+1); - [send] l>0 & n=2 -> (b_ip2'=ip) & (n'=n+1); - [send] l>0 & n=3 -> (b_ip3'=ip) & (n'=n+1); - [send] l>0 & n=4 -> (b_ip4'=ip) & (n'=n+1); - [send] l>0 & n=5 -> (b_ip5'=ip) & (n'=n+1); - [send] l>0 & n=6 -> (b_ip6'=ip) & (n'=n+1); - [send] l>0 & n=7 -> (b_ip7'=ip) & (n'=n+1); - [send] l>0 & n=8 -> (n'=n); // buffer full so lose message - - // start sending message from host - [] l>0 & 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 - [] l>0 & b=0 & n0>0 -> (1-loss) : (b'=2) & (ip_mess'=0) & (n0'=n0-1) + loss : (n0'=n0-1); // different ip - [] l>0 & 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 - [] l>0 & b=1 & ip_mess=0 -> (b'=0) & (z'=0) & (n0'=min(n0+1,B0)) & (ip_mess'=0); - [] l>0 & b=1 & ip_mess=1 -> (b'=0) & (z'=0) & (n1'=min(n1+1,B1)) & (ip_mess'=0); - [] l>0 & b=1 & ip_mess=2 -> (b'=0) & (z'=0) & (ip_mess'=0); - - // finish sending message to host - [rec] l>0 & b=2 -> (b'=0) & (z'=0) & (ip_mess'=0); - -endmodule - -//------------------------------------------------------------- -// CONCRETE HOST -module host0 - - x : [0..TIME_MAX_X]; // first clock of the host - y : [0..TIME_MAX_Y]; // 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 - - // RECONFIGURE - [reset] l=0 -> (l'=1); - - // RANDOM (choose IP address) - [rec] (l=1) -> 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) - [time] l=1 & coll=MAXCOLL & x (x'=min(x+1,TIME_MAX_X)); - [] 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 - // let time pass - [time] l=2 & x<2 -> (x'=min(x+1,2)); - // send probe - [send] l=2 & x=2 & probes (x'=0) & (probes'=probes+1); - // sent K probes and waited 2 seconds - [] l=2 & x=2 & probes=K -> (l'=3) & (probes'=0) & (coll'=0) & (x'=0); - // get message and ip does not match: ignore - [rec] l=2 & ip_mess!=ip -> (l'=l); - // get a message with matching ip: reconfigure - [rec] l=2 & ip_mess=ip -> (l'=0) & (coll'=min(coll+1,MAXCOLL)) & (x'=0) & (probes'=0); - - // WAITSG (sends two gratuitious arp probes) - // time passage - [time] l=3 & mess=0 & defend=0 & x (x'=min(x+1,TIME_MAX_X)); - [time] l=3 & mess=0 & defend=1 & x (x'=min(x+1,TIME_MAX_X)) & (y'=min(y+1,DEFEND)); - - // receive message and same ip: defend - [rec] l=3 & mess=0 & ip_mess=ip & (defend=0 | y>=DEFEND) -> (defend'=1) & (mess'=1) & (y'=0); - // receive message and same ip: defer - [rec] l=3 & mess=0 & ip_mess=ip & (defend=0 | y (l'=0) & (probes'=0) & (defend'=0) & (x'=0) & (y'=0); - // receive message and different ip - [rec] l=3 & mess=0 & ip_mess!=ip -> (l'=l); - - - // send probe reply or message for defence - [send] l=3 & mess=1 -> (mess'=0); - // send first gratuitous arp message - [send] l=3 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - // send second gratuitous arp message (move to use) - [send] l=3 & mess=0 & x=CONSEC & probes=1 -> (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 -> 1 : true; - -endmodule - -// reward structure -const double err; // cost associated with using a IP address already in use - -rewards - [time] true : 1; - [send] l=3 & mess=0 & y=CONSEC & probes=1 & ip=1 : err; -endrewards - -label "selected_ip" = l = 4; -label "selected_ip_in_use" = l = 4 & ip = 1; diff --git a/examples/pmdp/zeroconf/zeroconf.prctl b/examples/pmdp/zeroconf/zeroconf.prctl deleted file mode 100644 index bc250be36..000000000 --- a/examples/pmdp/zeroconf/zeroconf.prctl +++ /dev/null @@ -1 +0,0 @@ -P<=0.1 [ F (l=4 & ip=1) ] diff --git a/examples/pmdp/zeroconf/zeroconf2.pm b/examples/pmdp/zeroconf/zeroconf2.pm deleted file mode 100644 index 2354cd9cb..000000000 --- a/examples/pmdp/zeroconf/zeroconf2.pm +++ /dev/null @@ -1,258 +0,0 @@ -// 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 - -// model is an mdp -mdp - -// reset or noreset model -const bool reset=false; - -//------------------------------------------------------------- - -// 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 - -//------------------------------------------------------------- - - -//------------------------------------------------------------- -// VARIABLES -//const int N; // number of abstract hosts -const int K=2; // number of probes to send -const double loss; // 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 : [0..1]; // 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 - - // 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 - - // time passage (only if no messages to send or sending a message) - [time] l>0 & b=0 & n=0 & n0=0 & n1=0 -> (b'=b); // cannot send a message - [time] l>0 & b>0 & z<1 -> (z'=min(z+1,TIME_MAX_Z)); // sending a message - - // get messages to be sent (so message has same ip address as host) - [send] l>0 & n=0 -> (b_ip0'=ip) & (n'=n+1); - [send] l>0 & n=1 -> (b_ip1'=ip) & (n'=n+1); - [send] l>0 & n=2 -> (b_ip2'=ip) & (n'=n+1); - [send] l>0 & n=3 -> (b_ip3'=ip) & (n'=n+1); - [send] l>0 & n=4 -> (b_ip4'=ip) & (n'=n+1); - [send] l>0 & n=5 -> (b_ip5'=ip) & (n'=n+1); - [send] l>0 & n=6 -> (b_ip6'=ip) & (n'=n+1); - [send] l>0 & n=7 -> (b_ip7'=ip) & (n'=n+1); - [send] l>0 & n=8 -> (n'=n); // buffer full so lose message - - // start sending message from host - [] l>0 & 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 - [] l>0 & b=0 & n0>0 -> (1-loss) : (b'=2) & (ip_mess'=0) & (n0'=n0-1) + loss : (n0'=n0-1); // different ip - [] l>0 & 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 - [] l>0 & b=1 & ip_mess=0 -> (b'=0) & (z'=0) & (n0'=min(n0+1,B0)) & (ip_mess'=0); - [] l>0 & b=1 & ip_mess=1 -> (b'=0) & (z'=0) & (n1'=min(n1+1,B1)) & (ip_mess'=0); - [] l>0 & b=1 & ip_mess=2 -> (b'=0) & (z'=0) & (ip_mess'=0); - - // finish sending message to host - [rec] l>0 & b=2 -> (b'=0) & (z'=0) & (ip_mess'=0); - -endmodule - -//------------------------------------------------------------- -// CONCRETE HOST -module host0 - - x : [0..TIME_MAX_X]; // first clock of the host - y : [0..TIME_MAX_Y]; // 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 - - // RECONFIGURE - [reset] l=0 -> (l'=1); - - // RANDOM (choose IP address) - [rec] (l=1) -> 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) - [time] l=1 & coll=MAXCOLL & x (x'=min(x+1,TIME_MAX_X)); - [] 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 - // let time pass - [time] l=2 & x<2 -> (x'=min(x+1,2)); - // send probe - [send] l=2 & x=2 & probes (x'=0) & (probes'=probes+1); - // sent K probes and waited 2 seconds - [] l=2 & x=2 & probes=K -> (l'=3) & (probes'=0) & (coll'=0) & (x'=0); - // get message and ip does not match: ignore - [rec] l=2 & ip_mess!=ip -> (l'=l); - // get a message with matching ip: reconfigure - [rec] l=2 & ip_mess=ip -> (l'=0) & (coll'=min(coll+1,MAXCOLL)) & (x'=0) & (probes'=0); - - // WAITSG (sends two gratuitious arp probes) - // time passage - [time] l=3 & mess=0 & defend=0 & x (x'=min(x+1,TIME_MAX_X)); - [time] l=3 & mess=0 & defend=1 & x (x'=min(x+1,TIME_MAX_X)) & (y'=min(y+1,DEFEND)); - - // receive message and same ip: defend - [rec] l=3 & mess=0 & ip_mess=ip & (defend=0 | y>=DEFEND) -> (defend'=1) & (mess'=1) & (y'=0); - // receive message and same ip: defer - [rec] l=3 & mess=0 & ip_mess=ip & (defend=0 | y (l'=0) & (probes'=0) & (defend'=0) & (x'=0) & (y'=0); - // receive message and different ip - [rec] l=3 & mess=0 & ip_mess!=ip -> (l'=l); - - - // send probe reply or message for defence - [send] l=3 & mess=1 -> (mess'=0); - // send first gratuitous arp message - [send] l=3 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - // send second gratuitous arp message (move to use) - [send] l=3 & mess=0 & x=CONSEC & probes=1 -> (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 -> 1 : true; - -endmodule diff --git a/examples/pmdp/zeroconf/zeroconf3.pm b/examples/pmdp/zeroconf/zeroconf3.pm deleted file mode 100644 index 9cd95ac4b..000000000 --- a/examples/pmdp/zeroconf/zeroconf3.pm +++ /dev/null @@ -1,258 +0,0 @@ -// 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 - -// model is an mdp -mdp - -// reset or noreset model -const bool reset=false; - -//------------------------------------------------------------- - -// 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 - -//------------------------------------------------------------- - - -//------------------------------------------------------------- -// VARIABLES -//const int N; // number of abstract hosts -const int K=3; // number of probes to send -const double loss; // 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 : [0..1]; // 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 - - // 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 - - // time passage (only if no messages to send or sending a message) - [time] l>0 & b=0 & n=0 & n0=0 & n1=0 -> (b'=b); // cannot send a message - [time] l>0 & b>0 & z<1 -> (z'=min(z+1,TIME_MAX_Z)); // sending a message - - // get messages to be sent (so message has same ip address as host) - [send] l>0 & n=0 -> (b_ip0'=ip) & (n'=n+1); - [send] l>0 & n=1 -> (b_ip1'=ip) & (n'=n+1); - [send] l>0 & n=2 -> (b_ip2'=ip) & (n'=n+1); - [send] l>0 & n=3 -> (b_ip3'=ip) & (n'=n+1); - [send] l>0 & n=4 -> (b_ip4'=ip) & (n'=n+1); - [send] l>0 & n=5 -> (b_ip5'=ip) & (n'=n+1); - [send] l>0 & n=6 -> (b_ip6'=ip) & (n'=n+1); - [send] l>0 & n=7 -> (b_ip7'=ip) & (n'=n+1); - [send] l>0 & n=8 -> (n'=n); // buffer full so lose message - - // start sending message from host - [] l>0 & 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 - [] l>0 & b=0 & n0>0 -> (1-loss) : (b'=2) & (ip_mess'=0) & (n0'=n0-1) + loss : (n0'=n0-1); // different ip - [] l>0 & 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 - [] l>0 & b=1 & ip_mess=0 -> (b'=0) & (z'=0) & (n0'=min(n0+1,B0)) & (ip_mess'=0); - [] l>0 & b=1 & ip_mess=1 -> (b'=0) & (z'=0) & (n1'=min(n1+1,B1)) & (ip_mess'=0); - [] l>0 & b=1 & ip_mess=2 -> (b'=0) & (z'=0) & (ip_mess'=0); - - // finish sending message to host - [rec] l>0 & b=2 -> (b'=0) & (z'=0) & (ip_mess'=0); - -endmodule - -//------------------------------------------------------------- -// CONCRETE HOST -module host0 - - x : [0..TIME_MAX_X]; // first clock of the host - y : [0..TIME_MAX_Y]; // 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 - - // RECONFIGURE - [reset] l=0 -> (l'=1); - - // RANDOM (choose IP address) - [rec] (l=1) -> 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) - [time] l=1 & coll=MAXCOLL & x (x'=min(x+1,TIME_MAX_X)); - [] 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 - // let time pass - [time] l=2 & x<2 -> (x'=min(x+1,2)); - // send probe - [send] l=2 & x=2 & probes (x'=0) & (probes'=probes+1); - // sent K probes and waited 2 seconds - [] l=2 & x=2 & probes=K -> (l'=3) & (probes'=0) & (coll'=0) & (x'=0); - // get message and ip does not match: ignore - [rec] l=2 & ip_mess!=ip -> (l'=l); - // get a message with matching ip: reconfigure - [rec] l=2 & ip_mess=ip -> (l'=0) & (coll'=min(coll+1,MAXCOLL)) & (x'=0) & (probes'=0); - - // WAITSG (sends two gratuitious arp probes) - // time passage - [time] l=3 & mess=0 & defend=0 & x (x'=min(x+1,TIME_MAX_X)); - [time] l=3 & mess=0 & defend=1 & x (x'=min(x+1,TIME_MAX_X)) & (y'=min(y+1,DEFEND)); - - // receive message and same ip: defend - [rec] l=3 & mess=0 & ip_mess=ip & (defend=0 | y>=DEFEND) -> (defend'=1) & (mess'=1) & (y'=0); - // receive message and same ip: defer - [rec] l=3 & mess=0 & ip_mess=ip & (defend=0 | y (l'=0) & (probes'=0) & (defend'=0) & (x'=0) & (y'=0); - // receive message and different ip - [rec] l=3 & mess=0 & ip_mess!=ip -> (l'=l); - - - // send probe reply or message for defence - [send] l=3 & mess=1 -> (mess'=0); - // send first gratuitous arp message - [send] l=3 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - // send second gratuitous arp message (move to use) - [send] l=3 & mess=0 & x=CONSEC & probes=1 -> (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 -> 1 : true; - -endmodule diff --git a/examples/pmdp/zeroconf/zeroconf4.pm b/examples/pmdp/zeroconf/zeroconf4.pm deleted file mode 100644 index ec52b31a2..000000000 --- a/examples/pmdp/zeroconf/zeroconf4.pm +++ /dev/null @@ -1,258 +0,0 @@ -// 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 - -// model is an mdp -mdp - -// reset or noreset model -const bool reset=false; - -//------------------------------------------------------------- - -// 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 - -//------------------------------------------------------------- - - -//------------------------------------------------------------- -// VARIABLES -//const int N; // number of abstract hosts -const int K=4; // number of probes to send -const double loss; // 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 : [0..1]; // 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 - - // 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 - - // time passage (only if no messages to send or sending a message) - [time] l>0 & b=0 & n=0 & n0=0 & n1=0 -> (b'=b); // cannot send a message - [time] l>0 & b>0 & z<1 -> (z'=min(z+1,TIME_MAX_Z)); // sending a message - - // get messages to be sent (so message has same ip address as host) - [send] l>0 & n=0 -> (b_ip0'=ip) & (n'=n+1); - [send] l>0 & n=1 -> (b_ip1'=ip) & (n'=n+1); - [send] l>0 & n=2 -> (b_ip2'=ip) & (n'=n+1); - [send] l>0 & n=3 -> (b_ip3'=ip) & (n'=n+1); - [send] l>0 & n=4 -> (b_ip4'=ip) & (n'=n+1); - [send] l>0 & n=5 -> (b_ip5'=ip) & (n'=n+1); - [send] l>0 & n=6 -> (b_ip6'=ip) & (n'=n+1); - [send] l>0 & n=7 -> (b_ip7'=ip) & (n'=n+1); - [send] l>0 & n=8 -> (n'=n); // buffer full so lose message - - // start sending message from host - [] l>0 & 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 - [] l>0 & b=0 & n0>0 -> (1-loss) : (b'=2) & (ip_mess'=0) & (n0'=n0-1) + loss : (n0'=n0-1); // different ip - [] l>0 & 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 - [] l>0 & b=1 & ip_mess=0 -> (b'=0) & (z'=0) & (n0'=min(n0+1,B0)) & (ip_mess'=0); - [] l>0 & b=1 & ip_mess=1 -> (b'=0) & (z'=0) & (n1'=min(n1+1,B1)) & (ip_mess'=0); - [] l>0 & b=1 & ip_mess=2 -> (b'=0) & (z'=0) & (ip_mess'=0); - - // finish sending message to host - [rec] l>0 & b=2 -> (b'=0) & (z'=0) & (ip_mess'=0); - -endmodule - -//------------------------------------------------------------- -// CONCRETE HOST -module host0 - - x : [0..TIME_MAX_X]; // first clock of the host - y : [0..TIME_MAX_Y]; // 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 - - // RECONFIGURE - [reset] l=0 -> (l'=1); - - // RANDOM (choose IP address) - [rec] (l=1) -> 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) - [time] l=1 & coll=MAXCOLL & x (x'=min(x+1,TIME_MAX_X)); - [] 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 - // let time pass - [time] l=2 & x<2 -> (x'=min(x+1,2)); - // send probe - [send] l=2 & x=2 & probes (x'=0) & (probes'=probes+1); - // sent K probes and waited 2 seconds - [] l=2 & x=2 & probes=K -> (l'=3) & (probes'=0) & (coll'=0) & (x'=0); - // get message and ip does not match: ignore - [rec] l=2 & ip_mess!=ip -> (l'=l); - // get a message with matching ip: reconfigure - [rec] l=2 & ip_mess=ip -> (l'=0) & (coll'=min(coll+1,MAXCOLL)) & (x'=0) & (probes'=0); - - // WAITSG (sends two gratuitious arp probes) - // time passage - [time] l=3 & mess=0 & defend=0 & x (x'=min(x+1,TIME_MAX_X)); - [time] l=3 & mess=0 & defend=1 & x (x'=min(x+1,TIME_MAX_X)) & (y'=min(y+1,DEFEND)); - - // receive message and same ip: defend - [rec] l=3 & mess=0 & ip_mess=ip & (defend=0 | y>=DEFEND) -> (defend'=1) & (mess'=1) & (y'=0); - // receive message and same ip: defer - [rec] l=3 & mess=0 & ip_mess=ip & (defend=0 | y (l'=0) & (probes'=0) & (defend'=0) & (x'=0) & (y'=0); - // receive message and different ip - [rec] l=3 & mess=0 & ip_mess!=ip -> (l'=l); - - - // send probe reply or message for defence - [send] l=3 & mess=1 -> (mess'=0); - // send first gratuitous arp message - [send] l=3 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - // send second gratuitous arp message (move to use) - [send] l=3 & mess=0 & x=CONSEC & probes=1 -> (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 -> 1 : true; - -endmodule diff --git a/examples/pmdp/zeroconf/zeroconf5.pm b/examples/pmdp/zeroconf/zeroconf5.pm deleted file mode 100644 index e13a42d9f..000000000 --- a/examples/pmdp/zeroconf/zeroconf5.pm +++ /dev/null @@ -1,258 +0,0 @@ -// 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 - -// model is an mdp -mdp - -// reset or noreset model -const bool reset=false; - -//------------------------------------------------------------- - -// 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 - -//------------------------------------------------------------- - - -//------------------------------------------------------------- -// VARIABLES -//const int N; // number of abstract hosts -const int K=5; // number of probes to send -const double loss; // 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 : [0..1]; // 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 - - // 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 - - // time passage (only if no messages to send or sending a message) - [time] l>0 & b=0 & n=0 & n0=0 & n1=0 -> (b'=b); // cannot send a message - [time] l>0 & b>0 & z<1 -> (z'=min(z+1,TIME_MAX_Z)); // sending a message - - // get messages to be sent (so message has same ip address as host) - [send] l>0 & n=0 -> (b_ip0'=ip) & (n'=n+1); - [send] l>0 & n=1 -> (b_ip1'=ip) & (n'=n+1); - [send] l>0 & n=2 -> (b_ip2'=ip) & (n'=n+1); - [send] l>0 & n=3 -> (b_ip3'=ip) & (n'=n+1); - [send] l>0 & n=4 -> (b_ip4'=ip) & (n'=n+1); - [send] l>0 & n=5 -> (b_ip5'=ip) & (n'=n+1); - [send] l>0 & n=6 -> (b_ip6'=ip) & (n'=n+1); - [send] l>0 & n=7 -> (b_ip7'=ip) & (n'=n+1); - [send] l>0 & n=8 -> (n'=n); // buffer full so lose message - - // start sending message from host - [] l>0 & 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 - [] l>0 & b=0 & n0>0 -> (1-loss) : (b'=2) & (ip_mess'=0) & (n0'=n0-1) + loss : (n0'=n0-1); // different ip - [] l>0 & 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 - [] l>0 & b=1 & ip_mess=0 -> (b'=0) & (z'=0) & (n0'=min(n0+1,B0)) & (ip_mess'=0); - [] l>0 & b=1 & ip_mess=1 -> (b'=0) & (z'=0) & (n1'=min(n1+1,B1)) & (ip_mess'=0); - [] l>0 & b=1 & ip_mess=2 -> (b'=0) & (z'=0) & (ip_mess'=0); - - // finish sending message to host - [rec] l>0 & b=2 -> (b'=0) & (z'=0) & (ip_mess'=0); - -endmodule - -//------------------------------------------------------------- -// CONCRETE HOST -module host0 - - x : [0..TIME_MAX_X]; // first clock of the host - y : [0..TIME_MAX_Y]; // 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 - - // RECONFIGURE - [reset] l=0 -> (l'=1); - - // RANDOM (choose IP address) - [rec] (l=1) -> 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) - [time] l=1 & coll=MAXCOLL & x (x'=min(x+1,TIME_MAX_X)); - [] 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 - // let time pass - [time] l=2 & x<2 -> (x'=min(x+1,2)); - // send probe - [send] l=2 & x=2 & probes (x'=0) & (probes'=probes+1); - // sent K probes and waited 2 seconds - [] l=2 & x=2 & probes=K -> (l'=3) & (probes'=0) & (coll'=0) & (x'=0); - // get message and ip does not match: ignore - [rec] l=2 & ip_mess!=ip -> (l'=l); - // get a message with matching ip: reconfigure - [rec] l=2 & ip_mess=ip -> (l'=0) & (coll'=min(coll+1,MAXCOLL)) & (x'=0) & (probes'=0); - - // WAITSG (sends two gratuitious arp probes) - // time passage - [time] l=3 & mess=0 & defend=0 & x (x'=min(x+1,TIME_MAX_X)); - [time] l=3 & mess=0 & defend=1 & x (x'=min(x+1,TIME_MAX_X)) & (y'=min(y+1,DEFEND)); - - // receive message and same ip: defend - [rec] l=3 & mess=0 & ip_mess=ip & (defend=0 | y>=DEFEND) -> (defend'=1) & (mess'=1) & (y'=0); - // receive message and same ip: defer - [rec] l=3 & mess=0 & ip_mess=ip & (defend=0 | y (l'=0) & (probes'=0) & (defend'=0) & (x'=0) & (y'=0); - // receive message and different ip - [rec] l=3 & mess=0 & ip_mess!=ip -> (l'=l); - - - // send probe reply or message for defence - [send] l=3 & mess=1 -> (mess'=0); - // send first gratuitous arp message - [send] l=3 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - // send second gratuitous arp message (move to use) - [send] l=3 & mess=0 & x=CONSEC & probes=1 -> (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 -> 1 : true; - -endmodule diff --git a/examples/pmdp/zeroconf/zeroconf6.pm b/examples/pmdp/zeroconf/zeroconf6.pm deleted file mode 100644 index cee65ee94..000000000 --- a/examples/pmdp/zeroconf/zeroconf6.pm +++ /dev/null @@ -1,258 +0,0 @@ -// 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 - -// model is an mdp -mdp - -// reset or noreset model -const bool reset=false; - -//------------------------------------------------------------- - -// 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 - -//------------------------------------------------------------- - - -//------------------------------------------------------------- -// VARIABLES -//const int N; // number of abstract hosts -const int K=6; // number of probes to send -const double loss; // 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 : [0..1]; // 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 - - // 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 - - // time passage (only if no messages to send or sending a message) - [time] l>0 & b=0 & n=0 & n0=0 & n1=0 -> (b'=b); // cannot send a message - [time] l>0 & b>0 & z<1 -> (z'=min(z+1,TIME_MAX_Z)); // sending a message - - // get messages to be sent (so message has same ip address as host) - [send] l>0 & n=0 -> (b_ip0'=ip) & (n'=n+1); - [send] l>0 & n=1 -> (b_ip1'=ip) & (n'=n+1); - [send] l>0 & n=2 -> (b_ip2'=ip) & (n'=n+1); - [send] l>0 & n=3 -> (b_ip3'=ip) & (n'=n+1); - [send] l>0 & n=4 -> (b_ip4'=ip) & (n'=n+1); - [send] l>0 & n=5 -> (b_ip5'=ip) & (n'=n+1); - [send] l>0 & n=6 -> (b_ip6'=ip) & (n'=n+1); - [send] l>0 & n=7 -> (b_ip7'=ip) & (n'=n+1); - [send] l>0 & n=8 -> (n'=n); // buffer full so lose message - - // start sending message from host - [] l>0 & 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 - [] l>0 & b=0 & n0>0 -> (1-loss) : (b'=2) & (ip_mess'=0) & (n0'=n0-1) + loss : (n0'=n0-1); // different ip - [] l>0 & 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 - [] l>0 & b=1 & ip_mess=0 -> (b'=0) & (z'=0) & (n0'=min(n0+1,B0)) & (ip_mess'=0); - [] l>0 & b=1 & ip_mess=1 -> (b'=0) & (z'=0) & (n1'=min(n1+1,B1)) & (ip_mess'=0); - [] l>0 & b=1 & ip_mess=2 -> (b'=0) & (z'=0) & (ip_mess'=0); - - // finish sending message to host - [rec] l>0 & b=2 -> (b'=0) & (z'=0) & (ip_mess'=0); - -endmodule - -//------------------------------------------------------------- -// CONCRETE HOST -module host0 - - x : [0..TIME_MAX_X]; // first clock of the host - y : [0..TIME_MAX_Y]; // 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 - - // RECONFIGURE - [reset] l=0 -> (l'=1); - - // RANDOM (choose IP address) - [rec] (l=1) -> 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) - [time] l=1 & coll=MAXCOLL & x (x'=min(x+1,TIME_MAX_X)); - [] 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 - // let time pass - [time] l=2 & x<2 -> (x'=min(x+1,2)); - // send probe - [send] l=2 & x=2 & probes (x'=0) & (probes'=probes+1); - // sent K probes and waited 2 seconds - [] l=2 & x=2 & probes=K -> (l'=3) & (probes'=0) & (coll'=0) & (x'=0); - // get message and ip does not match: ignore - [rec] l=2 & ip_mess!=ip -> (l'=l); - // get a message with matching ip: reconfigure - [rec] l=2 & ip_mess=ip -> (l'=0) & (coll'=min(coll+1,MAXCOLL)) & (x'=0) & (probes'=0); - - // WAITSG (sends two gratuitious arp probes) - // time passage - [time] l=3 & mess=0 & defend=0 & x (x'=min(x+1,TIME_MAX_X)); - [time] l=3 & mess=0 & defend=1 & x (x'=min(x+1,TIME_MAX_X)) & (y'=min(y+1,DEFEND)); - - // receive message and same ip: defend - [rec] l=3 & mess=0 & ip_mess=ip & (defend=0 | y>=DEFEND) -> (defend'=1) & (mess'=1) & (y'=0); - // receive message and same ip: defer - [rec] l=3 & mess=0 & ip_mess=ip & (defend=0 | y (l'=0) & (probes'=0) & (defend'=0) & (x'=0) & (y'=0); - // receive message and different ip - [rec] l=3 & mess=0 & ip_mess!=ip -> (l'=l); - - - // send probe reply or message for defence - [send] l=3 & mess=1 -> (mess'=0); - // send first gratuitous arp message - [send] l=3 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - // send second gratuitous arp message (move to use) - [send] l=3 & mess=0 & x=CONSEC & probes=1 -> (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 -> 1 : true; - -endmodule diff --git a/examples/pmdp/zeroconf/zeroconf7.pm b/examples/pmdp/zeroconf/zeroconf7.pm deleted file mode 100644 index 445882db8..000000000 --- a/examples/pmdp/zeroconf/zeroconf7.pm +++ /dev/null @@ -1,258 +0,0 @@ -// 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 - -// model is an mdp -mdp - -// reset or noreset model -const bool reset=false; - -//------------------------------------------------------------- - -// 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 - -//------------------------------------------------------------- - - -//------------------------------------------------------------- -// VARIABLES -//const int N; // number of abstract hosts -const int K=7; // number of probes to send -const double loss; // 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 : [0..1]; // 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 - - // 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 - - // time passage (only if no messages to send or sending a message) - [time] l>0 & b=0 & n=0 & n0=0 & n1=0 -> (b'=b); // cannot send a message - [time] l>0 & b>0 & z<1 -> (z'=min(z+1,TIME_MAX_Z)); // sending a message - - // get messages to be sent (so message has same ip address as host) - [send] l>0 & n=0 -> (b_ip0'=ip) & (n'=n+1); - [send] l>0 & n=1 -> (b_ip1'=ip) & (n'=n+1); - [send] l>0 & n=2 -> (b_ip2'=ip) & (n'=n+1); - [send] l>0 & n=3 -> (b_ip3'=ip) & (n'=n+1); - [send] l>0 & n=4 -> (b_ip4'=ip) & (n'=n+1); - [send] l>0 & n=5 -> (b_ip5'=ip) & (n'=n+1); - [send] l>0 & n=6 -> (b_ip6'=ip) & (n'=n+1); - [send] l>0 & n=7 -> (b_ip7'=ip) & (n'=n+1); - [send] l>0 & n=8 -> (n'=n); // buffer full so lose message - - // start sending message from host - [] l>0 & 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 - [] l>0 & b=0 & n0>0 -> (1-loss) : (b'=2) & (ip_mess'=0) & (n0'=n0-1) + loss : (n0'=n0-1); // different ip - [] l>0 & 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 - [] l>0 & b=1 & ip_mess=0 -> (b'=0) & (z'=0) & (n0'=min(n0+1,B0)) & (ip_mess'=0); - [] l>0 & b=1 & ip_mess=1 -> (b'=0) & (z'=0) & (n1'=min(n1+1,B1)) & (ip_mess'=0); - [] l>0 & b=1 & ip_mess=2 -> (b'=0) & (z'=0) & (ip_mess'=0); - - // finish sending message to host - [rec] l>0 & b=2 -> (b'=0) & (z'=0) & (ip_mess'=0); - -endmodule - -//------------------------------------------------------------- -// CONCRETE HOST -module host0 - - x : [0..TIME_MAX_X]; // first clock of the host - y : [0..TIME_MAX_Y]; // 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 - - // RECONFIGURE - [reset] l=0 -> (l'=1); - - // RANDOM (choose IP address) - [rec] (l=1) -> 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) - [time] l=1 & coll=MAXCOLL & x (x'=min(x+1,TIME_MAX_X)); - [] 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 - // let time pass - [time] l=2 & x<2 -> (x'=min(x+1,2)); - // send probe - [send] l=2 & x=2 & probes (x'=0) & (probes'=probes+1); - // sent K probes and waited 2 seconds - [] l=2 & x=2 & probes=K -> (l'=3) & (probes'=0) & (coll'=0) & (x'=0); - // get message and ip does not match: ignore - [rec] l=2 & ip_mess!=ip -> (l'=l); - // get a message with matching ip: reconfigure - [rec] l=2 & ip_mess=ip -> (l'=0) & (coll'=min(coll+1,MAXCOLL)) & (x'=0) & (probes'=0); - - // WAITSG (sends two gratuitious arp probes) - // time passage - [time] l=3 & mess=0 & defend=0 & x (x'=min(x+1,TIME_MAX_X)); - [time] l=3 & mess=0 & defend=1 & x (x'=min(x+1,TIME_MAX_X)) & (y'=min(y+1,DEFEND)); - - // receive message and same ip: defend - [rec] l=3 & mess=0 & ip_mess=ip & (defend=0 | y>=DEFEND) -> (defend'=1) & (mess'=1) & (y'=0); - // receive message and same ip: defer - [rec] l=3 & mess=0 & ip_mess=ip & (defend=0 | y (l'=0) & (probes'=0) & (defend'=0) & (x'=0) & (y'=0); - // receive message and different ip - [rec] l=3 & mess=0 & ip_mess!=ip -> (l'=l); - - - // send probe reply or message for defence - [send] l=3 & mess=1 -> (mess'=0); - // send first gratuitous arp message - [send] l=3 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - // send second gratuitous arp message (move to use) - [send] l=3 & mess=0 & x=CONSEC & probes=1 -> (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 -> 1 : true; - -endmodule diff --git a/examples/pmdp/zeroconf/zeroconf8.pm b/examples/pmdp/zeroconf/zeroconf8.pm deleted file mode 100644 index f79b991cf..000000000 --- a/examples/pmdp/zeroconf/zeroconf8.pm +++ /dev/null @@ -1,258 +0,0 @@ -// 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 - -// model is an mdp -mdp - -// reset or noreset model -const bool reset=false; - -//------------------------------------------------------------- - -// 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 - -//------------------------------------------------------------- - - -//------------------------------------------------------------- -// VARIABLES -//const int N; // number of abstract hosts -const int K=8; // number of probes to send -const double loss; // 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 : [0..1]; // 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 - - // 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 - - // time passage (only if no messages to send or sending a message) - [time] l>0 & b=0 & n=0 & n0=0 & n1=0 -> (b'=b); // cannot send a message - [time] l>0 & b>0 & z<1 -> (z'=min(z+1,TIME_MAX_Z)); // sending a message - - // get messages to be sent (so message has same ip address as host) - [send] l>0 & n=0 -> (b_ip0'=ip) & (n'=n+1); - [send] l>0 & n=1 -> (b_ip1'=ip) & (n'=n+1); - [send] l>0 & n=2 -> (b_ip2'=ip) & (n'=n+1); - [send] l>0 & n=3 -> (b_ip3'=ip) & (n'=n+1); - [send] l>0 & n=4 -> (b_ip4'=ip) & (n'=n+1); - [send] l>0 & n=5 -> (b_ip5'=ip) & (n'=n+1); - [send] l>0 & n=6 -> (b_ip6'=ip) & (n'=n+1); - [send] l>0 & n=7 -> (b_ip7'=ip) & (n'=n+1); - [send] l>0 & n=8 -> (n'=n); // buffer full so lose message - - // start sending message from host - [] l>0 & 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 - [] l>0 & b=0 & n0>0 -> (1-loss) : (b'=2) & (ip_mess'=0) & (n0'=n0-1) + loss : (n0'=n0-1); // different ip - [] l>0 & 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 - [] l>0 & b=1 & ip_mess=0 -> (b'=0) & (z'=0) & (n0'=min(n0+1,B0)) & (ip_mess'=0); - [] l>0 & b=1 & ip_mess=1 -> (b'=0) & (z'=0) & (n1'=min(n1+1,B1)) & (ip_mess'=0); - [] l>0 & b=1 & ip_mess=2 -> (b'=0) & (z'=0) & (ip_mess'=0); - - // finish sending message to host - [rec] l>0 & b=2 -> (b'=0) & (z'=0) & (ip_mess'=0); - -endmodule - -//------------------------------------------------------------- -// CONCRETE HOST -module host0 - - x : [0..TIME_MAX_X]; // first clock of the host - y : [0..TIME_MAX_Y]; // 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 - - // RECONFIGURE - [reset] l=0 -> (l'=1); - - // RANDOM (choose IP address) - [rec] (l=1) -> 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) - [time] l=1 & coll=MAXCOLL & x (x'=min(x+1,TIME_MAX_X)); - [] 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 - // let time pass - [time] l=2 & x<2 -> (x'=min(x+1,2)); - // send probe - [send] l=2 & x=2 & probes (x'=0) & (probes'=probes+1); - // sent K probes and waited 2 seconds - [] l=2 & x=2 & probes=K -> (l'=3) & (probes'=0) & (coll'=0) & (x'=0); - // get message and ip does not match: ignore - [rec] l=2 & ip_mess!=ip -> (l'=l); - // get a message with matching ip: reconfigure - [rec] l=2 & ip_mess=ip -> (l'=0) & (coll'=min(coll+1,MAXCOLL)) & (x'=0) & (probes'=0); - - // WAITSG (sends two gratuitious arp probes) - // time passage - [time] l=3 & mess=0 & defend=0 & x (x'=min(x+1,TIME_MAX_X)); - [time] l=3 & mess=0 & defend=1 & x (x'=min(x+1,TIME_MAX_X)) & (y'=min(y+1,DEFEND)); - - // receive message and same ip: defend - [rec] l=3 & mess=0 & ip_mess=ip & (defend=0 | y>=DEFEND) -> (defend'=1) & (mess'=1) & (y'=0); - // receive message and same ip: defer - [rec] l=3 & mess=0 & ip_mess=ip & (defend=0 | y (l'=0) & (probes'=0) & (defend'=0) & (x'=0) & (y'=0); - // receive message and different ip - [rec] l=3 & mess=0 & ip_mess!=ip -> (l'=l); - - - // send probe reply or message for defence - [send] l=3 & mess=1 -> (mess'=0); - // send first gratuitous arp message - [send] l=3 & mess=0 & x=CONSEC & probes<1 -> (x'=0) & (probes'=probes+1); - // send second gratuitous arp message (move to use) - [send] l=3 & mess=0 & x=CONSEC & probes=1 -> (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 -> 1 : true; - -endmodule diff --git a/examples/pmdp/zeroconf/zeroconf_regions.txt b/examples/pmdp/zeroconf/zeroconf_regions.txt deleted file mode 100644 index 1cdf24689..000000000 --- a/examples/pmdp/zeroconf/zeroconf_regions.txt +++ /dev/null @@ -1,625 +0,0 @@ -0.000010<=loss<=0.040000, 0.000010<=old<=0.040000; -0.000010<=loss<=0.040000, 0.040000<=old<=0.080000; -0.000010<=loss<=0.040000, 0.080000<=old<=0.120000; -0.000010<=loss<=0.040000, 0.120000<=old<=0.160000; -0.000010<=loss<=0.040000, 0.160000<=old<=0.200000; -0.000010<=loss<=0.040000, 0.200000<=old<=0.240000; -0.000010<=loss<=0.040000, 0.240000<=old<=0.280000; -0.000010<=loss<=0.040000, 0.280000<=old<=0.320000; -0.000010<=loss<=0.040000, 0.320000<=old<=0.360000; -0.000010<=loss<=0.040000, 0.360000<=old<=0.400000; -0.000010<=loss<=0.040000, 0.400000<=old<=0.440000; -0.000010<=loss<=0.040000, 0.440000<=old<=0.480000; -0.000010<=loss<=0.040000, 0.480000<=old<=0.520000; -0.000010<=loss<=0.040000, 0.520000<=old<=0.560000; -0.000010<=loss<=0.040000, 0.560000<=old<=0.600000; -0.000010<=loss<=0.040000, 0.600000<=old<=0.640000; -0.000010<=loss<=0.040000, 0.640000<=old<=0.680000; -0.000010<=loss<=0.040000, 0.680000<=old<=0.720000; -0.000010<=loss<=0.040000, 0.720000<=old<=0.760000; -0.000010<=loss<=0.040000, 0.760000<=old<=0.800000; -0.000010<=loss<=0.040000, 0.800000<=old<=0.840000; -0.000010<=loss<=0.040000, 0.840000<=old<=0.880000; -0.000010<=loss<=0.040000, 0.880000<=old<=0.920000; -0.000010<=loss<=0.040000, 0.920000<=old<=0.960000; -0.000010<=loss<=0.040000, 0.960000<=old<=0.999990; -0.040000<=loss<=0.080000, 0.000010<=old<=0.040000; -0.040000<=loss<=0.080000, 0.040000<=old<=0.080000; -0.040000<=loss<=0.080000, 0.080000<=old<=0.120000; -0.040000<=loss<=0.080000, 0.120000<=old<=0.160000; -0.040000<=loss<=0.080000, 0.160000<=old<=0.200000; -0.040000<=loss<=0.080000, 0.200000<=old<=0.240000; -0.040000<=loss<=0.080000, 0.240000<=old<=0.280000; -0.040000<=loss<=0.080000, 0.280000<=old<=0.320000; -0.040000<=loss<=0.080000, 0.320000<=old<=0.360000; -0.040000<=loss<=0.080000, 0.360000<=old<=0.400000; -0.040000<=loss<=0.080000, 0.400000<=old<=0.440000; -0.040000<=loss<=0.080000, 0.440000<=old<=0.480000; -0.040000<=loss<=0.080000, 0.480000<=old<=0.520000; -0.040000<=loss<=0.080000, 0.520000<=old<=0.560000; -0.040000<=loss<=0.080000, 0.560000<=old<=0.600000; -0.040000<=loss<=0.080000, 0.600000<=old<=0.640000; -0.040000<=loss<=0.080000, 0.640000<=old<=0.680000; -0.040000<=loss<=0.080000, 0.680000<=old<=0.720000; -0.040000<=loss<=0.080000, 0.720000<=old<=0.760000; -0.040000<=loss<=0.080000, 0.760000<=old<=0.800000; -0.040000<=loss<=0.080000, 0.800000<=old<=0.840000; -0.040000<=loss<=0.080000, 0.840000<=old<=0.880000; -0.040000<=loss<=0.080000, 0.880000<=old<=0.920000; -0.040000<=loss<=0.080000, 0.920000<=old<=0.960000; -0.040000<=loss<=0.080000, 0.960000<=old<=0.999990; -0.080000<=loss<=0.120000, 0.000010<=old<=0.040000; -0.080000<=loss<=0.120000, 0.040000<=old<=0.080000; -0.080000<=loss<=0.120000, 0.080000<=old<=0.120000; -0.080000<=loss<=0.120000, 0.120000<=old<=0.160000; -0.080000<=loss<=0.120000, 0.160000<=old<=0.200000; -0.080000<=loss<=0.120000, 0.200000<=old<=0.240000; -0.080000<=loss<=0.120000, 0.240000<=old<=0.280000; -0.080000<=loss<=0.120000, 0.280000<=old<=0.320000; -0.080000<=loss<=0.120000, 0.320000<=old<=0.360000; -0.080000<=loss<=0.120000, 0.360000<=old<=0.400000; -0.080000<=loss<=0.120000, 0.400000<=old<=0.440000; -0.080000<=loss<=0.120000, 0.440000<=old<=0.480000; -0.080000<=loss<=0.120000, 0.480000<=old<=0.520000; -0.080000<=loss<=0.120000, 0.520000<=old<=0.560000; -0.080000<=loss<=0.120000, 0.560000<=old<=0.600000; -0.080000<=loss<=0.120000, 0.600000<=old<=0.640000; -0.080000<=loss<=0.120000, 0.640000<=old<=0.680000; -0.080000<=loss<=0.120000, 0.680000<=old<=0.720000; -0.080000<=loss<=0.120000, 0.720000<=old<=0.760000; -0.080000<=loss<=0.120000, 0.760000<=old<=0.800000; -0.080000<=loss<=0.120000, 0.800000<=old<=0.840000; -0.080000<=loss<=0.120000, 0.840000<=old<=0.880000; -0.080000<=loss<=0.120000, 0.880000<=old<=0.920000; -0.080000<=loss<=0.120000, 0.920000<=old<=0.960000; -0.080000<=loss<=0.120000, 0.960000<=old<=0.999990; -0.120000<=loss<=0.160000, 0.000010<=old<=0.040000; -0.120000<=loss<=0.160000, 0.040000<=old<=0.080000; -0.120000<=loss<=0.160000, 0.080000<=old<=0.120000; -0.120000<=loss<=0.160000, 0.120000<=old<=0.160000; -0.120000<=loss<=0.160000, 0.160000<=old<=0.200000; -0.120000<=loss<=0.160000, 0.200000<=old<=0.240000; -0.120000<=loss<=0.160000, 0.240000<=old<=0.280000; -0.120000<=loss<=0.160000, 0.280000<=old<=0.320000; -0.120000<=loss<=0.160000, 0.320000<=old<=0.360000; -0.120000<=loss<=0.160000, 0.360000<=old<=0.400000; -0.120000<=loss<=0.160000, 0.400000<=old<=0.440000; -0.120000<=loss<=0.160000, 0.440000<=old<=0.480000; -0.120000<=loss<=0.160000, 0.480000<=old<=0.520000; -0.120000<=loss<=0.160000, 0.520000<=old<=0.560000; -0.120000<=loss<=0.160000, 0.560000<=old<=0.600000; -0.120000<=loss<=0.160000, 0.600000<=old<=0.640000; -0.120000<=loss<=0.160000, 0.640000<=old<=0.680000; -0.120000<=loss<=0.160000, 0.680000<=old<=0.720000; -0.120000<=loss<=0.160000, 0.720000<=old<=0.760000; -0.120000<=loss<=0.160000, 0.760000<=old<=0.800000; -0.120000<=loss<=0.160000, 0.800000<=old<=0.840000; -0.120000<=loss<=0.160000, 0.840000<=old<=0.880000; -0.120000<=loss<=0.160000, 0.880000<=old<=0.920000; -0.120000<=loss<=0.160000, 0.920000<=old<=0.960000; -0.120000<=loss<=0.160000, 0.960000<=old<=0.999990; -0.160000<=loss<=0.200000, 0.000010<=old<=0.040000; -0.160000<=loss<=0.200000, 0.040000<=old<=0.080000; -0.160000<=loss<=0.200000, 0.080000<=old<=0.120000; -0.160000<=loss<=0.200000, 0.120000<=old<=0.160000; -0.160000<=loss<=0.200000, 0.160000<=old<=0.200000; -0.160000<=loss<=0.200000, 0.200000<=old<=0.240000; -0.160000<=loss<=0.200000, 0.240000<=old<=0.280000; -0.160000<=loss<=0.200000, 0.280000<=old<=0.320000; -0.160000<=loss<=0.200000, 0.320000<=old<=0.360000; -0.160000<=loss<=0.200000, 0.360000<=old<=0.400000; -0.160000<=loss<=0.200000, 0.400000<=old<=0.440000; -0.160000<=loss<=0.200000, 0.440000<=old<=0.480000; -0.160000<=loss<=0.200000, 0.480000<=old<=0.520000; -0.160000<=loss<=0.200000, 0.520000<=old<=0.560000; -0.160000<=loss<=0.200000, 0.560000<=old<=0.600000; -0.160000<=loss<=0.200000, 0.600000<=old<=0.640000; -0.160000<=loss<=0.200000, 0.640000<=old<=0.680000; -0.160000<=loss<=0.200000, 0.680000<=old<=0.720000; -0.160000<=loss<=0.200000, 0.720000<=old<=0.760000; -0.160000<=loss<=0.200000, 0.760000<=old<=0.800000; -0.160000<=loss<=0.200000, 0.800000<=old<=0.840000; -0.160000<=loss<=0.200000, 0.840000<=old<=0.880000; -0.160000<=loss<=0.200000, 0.880000<=old<=0.920000; -0.160000<=loss<=0.200000, 0.920000<=old<=0.960000; -0.160000<=loss<=0.200000, 0.960000<=old<=0.999990; -0.200000<=loss<=0.240000, 0.000010<=old<=0.040000; -0.200000<=loss<=0.240000, 0.040000<=old<=0.080000; -0.200000<=loss<=0.240000, 0.080000<=old<=0.120000; -0.200000<=loss<=0.240000, 0.120000<=old<=0.160000; -0.200000<=loss<=0.240000, 0.160000<=old<=0.200000; -0.200000<=loss<=0.240000, 0.200000<=old<=0.240000; -0.200000<=loss<=0.240000, 0.240000<=old<=0.280000; -0.200000<=loss<=0.240000, 0.280000<=old<=0.320000; -0.200000<=loss<=0.240000, 0.320000<=old<=0.360000; -0.200000<=loss<=0.240000, 0.360000<=old<=0.400000; -0.200000<=loss<=0.240000, 0.400000<=old<=0.440000; -0.200000<=loss<=0.240000, 0.440000<=old<=0.480000; -0.200000<=loss<=0.240000, 0.480000<=old<=0.520000; -0.200000<=loss<=0.240000, 0.520000<=old<=0.560000; -0.200000<=loss<=0.240000, 0.560000<=old<=0.600000; -0.200000<=loss<=0.240000, 0.600000<=old<=0.640000; -0.200000<=loss<=0.240000, 0.640000<=old<=0.680000; -0.200000<=loss<=0.240000, 0.680000<=old<=0.720000; -0.200000<=loss<=0.240000, 0.720000<=old<=0.760000; -0.200000<=loss<=0.240000, 0.760000<=old<=0.800000; -0.200000<=loss<=0.240000, 0.800000<=old<=0.840000; -0.200000<=loss<=0.240000, 0.840000<=old<=0.880000; -0.200000<=loss<=0.240000, 0.880000<=old<=0.920000; -0.200000<=loss<=0.240000, 0.920000<=old<=0.960000; -0.200000<=loss<=0.240000, 0.960000<=old<=0.999990; -0.240000<=loss<=0.280000, 0.000010<=old<=0.040000; -0.240000<=loss<=0.280000, 0.040000<=old<=0.080000; -0.240000<=loss<=0.280000, 0.080000<=old<=0.120000; -0.240000<=loss<=0.280000, 0.120000<=old<=0.160000; -0.240000<=loss<=0.280000, 0.160000<=old<=0.200000; -0.240000<=loss<=0.280000, 0.200000<=old<=0.240000; -0.240000<=loss<=0.280000, 0.240000<=old<=0.280000; -0.240000<=loss<=0.280000, 0.280000<=old<=0.320000; -0.240000<=loss<=0.280000, 0.320000<=old<=0.360000; -0.240000<=loss<=0.280000, 0.360000<=old<=0.400000; -0.240000<=loss<=0.280000, 0.400000<=old<=0.440000; -0.240000<=loss<=0.280000, 0.440000<=old<=0.480000; -0.240000<=loss<=0.280000, 0.480000<=old<=0.520000; -0.240000<=loss<=0.280000, 0.520000<=old<=0.560000; -0.240000<=loss<=0.280000, 0.560000<=old<=0.600000; -0.240000<=loss<=0.280000, 0.600000<=old<=0.640000; -0.240000<=loss<=0.280000, 0.640000<=old<=0.680000; -0.240000<=loss<=0.280000, 0.680000<=old<=0.720000; -0.240000<=loss<=0.280000, 0.720000<=old<=0.760000; -0.240000<=loss<=0.280000, 0.760000<=old<=0.800000; -0.240000<=loss<=0.280000, 0.800000<=old<=0.840000; -0.240000<=loss<=0.280000, 0.840000<=old<=0.880000; -0.240000<=loss<=0.280000, 0.880000<=old<=0.920000; -0.240000<=loss<=0.280000, 0.920000<=old<=0.960000; -0.240000<=loss<=0.280000, 0.960000<=old<=0.999990; -0.280000<=loss<=0.320000, 0.000010<=old<=0.040000; -0.280000<=loss<=0.320000, 0.040000<=old<=0.080000; -0.280000<=loss<=0.320000, 0.080000<=old<=0.120000; -0.280000<=loss<=0.320000, 0.120000<=old<=0.160000; -0.280000<=loss<=0.320000, 0.160000<=old<=0.200000; -0.280000<=loss<=0.320000, 0.200000<=old<=0.240000; -0.280000<=loss<=0.320000, 0.240000<=old<=0.280000; -0.280000<=loss<=0.320000, 0.280000<=old<=0.320000; -0.280000<=loss<=0.320000, 0.320000<=old<=0.360000; -0.280000<=loss<=0.320000, 0.360000<=old<=0.400000; -0.280000<=loss<=0.320000, 0.400000<=old<=0.440000; -0.280000<=loss<=0.320000, 0.440000<=old<=0.480000; -0.280000<=loss<=0.320000, 0.480000<=old<=0.520000; -0.280000<=loss<=0.320000, 0.520000<=old<=0.560000; -0.280000<=loss<=0.320000, 0.560000<=old<=0.600000; -0.280000<=loss<=0.320000, 0.600000<=old<=0.640000; -0.280000<=loss<=0.320000, 0.640000<=old<=0.680000; -0.280000<=loss<=0.320000, 0.680000<=old<=0.720000; -0.280000<=loss<=0.320000, 0.720000<=old<=0.760000; -0.280000<=loss<=0.320000, 0.760000<=old<=0.800000; -0.280000<=loss<=0.320000, 0.800000<=old<=0.840000; -0.280000<=loss<=0.320000, 0.840000<=old<=0.880000; -0.280000<=loss<=0.320000, 0.880000<=old<=0.920000; -0.280000<=loss<=0.320000, 0.920000<=old<=0.960000; -0.280000<=loss<=0.320000, 0.960000<=old<=0.999990; -0.320000<=loss<=0.360000, 0.000010<=old<=0.040000; -0.320000<=loss<=0.360000, 0.040000<=old<=0.080000; -0.320000<=loss<=0.360000, 0.080000<=old<=0.120000; -0.320000<=loss<=0.360000, 0.120000<=old<=0.160000; -0.320000<=loss<=0.360000, 0.160000<=old<=0.200000; -0.320000<=loss<=0.360000, 0.200000<=old<=0.240000; -0.320000<=loss<=0.360000, 0.240000<=old<=0.280000; -0.320000<=loss<=0.360000, 0.280000<=old<=0.320000; -0.320000<=loss<=0.360000, 0.320000<=old<=0.360000; -0.320000<=loss<=0.360000, 0.360000<=old<=0.400000; -0.320000<=loss<=0.360000, 0.400000<=old<=0.440000; -0.320000<=loss<=0.360000, 0.440000<=old<=0.480000; -0.320000<=loss<=0.360000, 0.480000<=old<=0.520000; -0.320000<=loss<=0.360000, 0.520000<=old<=0.560000; -0.320000<=loss<=0.360000, 0.560000<=old<=0.600000; -0.320000<=loss<=0.360000, 0.600000<=old<=0.640000; -0.320000<=loss<=0.360000, 0.640000<=old<=0.680000; -0.320000<=loss<=0.360000, 0.680000<=old<=0.720000; -0.320000<=loss<=0.360000, 0.720000<=old<=0.760000; -0.320000<=loss<=0.360000, 0.760000<=old<=0.800000; -0.320000<=loss<=0.360000, 0.800000<=old<=0.840000; -0.320000<=loss<=0.360000, 0.840000<=old<=0.880000; -0.320000<=loss<=0.360000, 0.880000<=old<=0.920000; -0.320000<=loss<=0.360000, 0.920000<=old<=0.960000; -0.320000<=loss<=0.360000, 0.960000<=old<=0.999990; -0.360000<=loss<=0.400000, 0.000010<=old<=0.040000; -0.360000<=loss<=0.400000, 0.040000<=old<=0.080000; -0.360000<=loss<=0.400000, 0.080000<=old<=0.120000; -0.360000<=loss<=0.400000, 0.120000<=old<=0.160000; -0.360000<=loss<=0.400000, 0.160000<=old<=0.200000; -0.360000<=loss<=0.400000, 0.200000<=old<=0.240000; -0.360000<=loss<=0.400000, 0.240000<=old<=0.280000; -0.360000<=loss<=0.400000, 0.280000<=old<=0.320000; -0.360000<=loss<=0.400000, 0.320000<=old<=0.360000; -0.360000<=loss<=0.400000, 0.360000<=old<=0.400000; -0.360000<=loss<=0.400000, 0.400000<=old<=0.440000; -0.360000<=loss<=0.400000, 0.440000<=old<=0.480000; -0.360000<=loss<=0.400000, 0.480000<=old<=0.520000; -0.360000<=loss<=0.400000, 0.520000<=old<=0.560000; -0.360000<=loss<=0.400000, 0.560000<=old<=0.600000; -0.360000<=loss<=0.400000, 0.600000<=old<=0.640000; -0.360000<=loss<=0.400000, 0.640000<=old<=0.680000; -0.360000<=loss<=0.400000, 0.680000<=old<=0.720000; -0.360000<=loss<=0.400000, 0.720000<=old<=0.760000; -0.360000<=loss<=0.400000, 0.760000<=old<=0.800000; -0.360000<=loss<=0.400000, 0.800000<=old<=0.840000; -0.360000<=loss<=0.400000, 0.840000<=old<=0.880000; -0.360000<=loss<=0.400000, 0.880000<=old<=0.920000; -0.360000<=loss<=0.400000, 0.920000<=old<=0.960000; -0.360000<=loss<=0.400000, 0.960000<=old<=0.999990; -0.400000<=loss<=0.440000, 0.000010<=old<=0.040000; -0.400000<=loss<=0.440000, 0.040000<=old<=0.080000; -0.400000<=loss<=0.440000, 0.080000<=old<=0.120000; -0.400000<=loss<=0.440000, 0.120000<=old<=0.160000; -0.400000<=loss<=0.440000, 0.160000<=old<=0.200000; -0.400000<=loss<=0.440000, 0.200000<=old<=0.240000; -0.400000<=loss<=0.440000, 0.240000<=old<=0.280000; -0.400000<=loss<=0.440000, 0.280000<=old<=0.320000; -0.400000<=loss<=0.440000, 0.320000<=old<=0.360000; -0.400000<=loss<=0.440000, 0.360000<=old<=0.400000; -0.400000<=loss<=0.440000, 0.400000<=old<=0.440000; -0.400000<=loss<=0.440000, 0.440000<=old<=0.480000; -0.400000<=loss<=0.440000, 0.480000<=old<=0.520000; -0.400000<=loss<=0.440000, 0.520000<=old<=0.560000; -0.400000<=loss<=0.440000, 0.560000<=old<=0.600000; -0.400000<=loss<=0.440000, 0.600000<=old<=0.640000; -0.400000<=loss<=0.440000, 0.640000<=old<=0.680000; -0.400000<=loss<=0.440000, 0.680000<=old<=0.720000; -0.400000<=loss<=0.440000, 0.720000<=old<=0.760000; -0.400000<=loss<=0.440000, 0.760000<=old<=0.800000; -0.400000<=loss<=0.440000, 0.800000<=old<=0.840000; -0.400000<=loss<=0.440000, 0.840000<=old<=0.880000; -0.400000<=loss<=0.440000, 0.880000<=old<=0.920000; -0.400000<=loss<=0.440000, 0.920000<=old<=0.960000; -0.400000<=loss<=0.440000, 0.960000<=old<=0.999990; -0.440000<=loss<=0.480000, 0.000010<=old<=0.040000; -0.440000<=loss<=0.480000, 0.040000<=old<=0.080000; -0.440000<=loss<=0.480000, 0.080000<=old<=0.120000; -0.440000<=loss<=0.480000, 0.120000<=old<=0.160000; -0.440000<=loss<=0.480000, 0.160000<=old<=0.200000; -0.440000<=loss<=0.480000, 0.200000<=old<=0.240000; -0.440000<=loss<=0.480000, 0.240000<=old<=0.280000; -0.440000<=loss<=0.480000, 0.280000<=old<=0.320000; -0.440000<=loss<=0.480000, 0.320000<=old<=0.360000; -0.440000<=loss<=0.480000, 0.360000<=old<=0.400000; -0.440000<=loss<=0.480000, 0.400000<=old<=0.440000; -0.440000<=loss<=0.480000, 0.440000<=old<=0.480000; -0.440000<=loss<=0.480000, 0.480000<=old<=0.520000; -0.440000<=loss<=0.480000, 0.520000<=old<=0.560000; -0.440000<=loss<=0.480000, 0.560000<=old<=0.600000; -0.440000<=loss<=0.480000, 0.600000<=old<=0.640000; -0.440000<=loss<=0.480000, 0.640000<=old<=0.680000; -0.440000<=loss<=0.480000, 0.680000<=old<=0.720000; -0.440000<=loss<=0.480000, 0.720000<=old<=0.760000; -0.440000<=loss<=0.480000, 0.760000<=old<=0.800000; -0.440000<=loss<=0.480000, 0.800000<=old<=0.840000; -0.440000<=loss<=0.480000, 0.840000<=old<=0.880000; -0.440000<=loss<=0.480000, 0.880000<=old<=0.920000; -0.440000<=loss<=0.480000, 0.920000<=old<=0.960000; -0.440000<=loss<=0.480000, 0.960000<=old<=0.999990; -0.480000<=loss<=0.520000, 0.000010<=old<=0.040000; -0.480000<=loss<=0.520000, 0.040000<=old<=0.080000; -0.480000<=loss<=0.520000, 0.080000<=old<=0.120000; -0.480000<=loss<=0.520000, 0.120000<=old<=0.160000; -0.480000<=loss<=0.520000, 0.160000<=old<=0.200000; -0.480000<=loss<=0.520000, 0.200000<=old<=0.240000; -0.480000<=loss<=0.520000, 0.240000<=old<=0.280000; -0.480000<=loss<=0.520000, 0.280000<=old<=0.320000; -0.480000<=loss<=0.520000, 0.320000<=old<=0.360000; -0.480000<=loss<=0.520000, 0.360000<=old<=0.400000; -0.480000<=loss<=0.520000, 0.400000<=old<=0.440000; -0.480000<=loss<=0.520000, 0.440000<=old<=0.480000; -0.480000<=loss<=0.520000, 0.480000<=old<=0.520000; -0.480000<=loss<=0.520000, 0.520000<=old<=0.560000; -0.480000<=loss<=0.520000, 0.560000<=old<=0.600000; -0.480000<=loss<=0.520000, 0.600000<=old<=0.640000; -0.480000<=loss<=0.520000, 0.640000<=old<=0.680000; -0.480000<=loss<=0.520000, 0.680000<=old<=0.720000; -0.480000<=loss<=0.520000, 0.720000<=old<=0.760000; -0.480000<=loss<=0.520000, 0.760000<=old<=0.800000; -0.480000<=loss<=0.520000, 0.800000<=old<=0.840000; -0.480000<=loss<=0.520000, 0.840000<=old<=0.880000; -0.480000<=loss<=0.520000, 0.880000<=old<=0.920000; -0.480000<=loss<=0.520000, 0.920000<=old<=0.960000; -0.480000<=loss<=0.520000, 0.960000<=old<=0.999990; -0.520000<=loss<=0.560000, 0.000010<=old<=0.040000; -0.520000<=loss<=0.560000, 0.040000<=old<=0.080000; -0.520000<=loss<=0.560000, 0.080000<=old<=0.120000; -0.520000<=loss<=0.560000, 0.120000<=old<=0.160000; -0.520000<=loss<=0.560000, 0.160000<=old<=0.200000; -0.520000<=loss<=0.560000, 0.200000<=old<=0.240000; -0.520000<=loss<=0.560000, 0.240000<=old<=0.280000; -0.520000<=loss<=0.560000, 0.280000<=old<=0.320000; -0.520000<=loss<=0.560000, 0.320000<=old<=0.360000; -0.520000<=loss<=0.560000, 0.360000<=old<=0.400000; -0.520000<=loss<=0.560000, 0.400000<=old<=0.440000; -0.520000<=loss<=0.560000, 0.440000<=old<=0.480000; -0.520000<=loss<=0.560000, 0.480000<=old<=0.520000; -0.520000<=loss<=0.560000, 0.520000<=old<=0.560000; -0.520000<=loss<=0.560000, 0.560000<=old<=0.600000; -0.520000<=loss<=0.560000, 0.600000<=old<=0.640000; -0.520000<=loss<=0.560000, 0.640000<=old<=0.680000; -0.520000<=loss<=0.560000, 0.680000<=old<=0.720000; -0.520000<=loss<=0.560000, 0.720000<=old<=0.760000; -0.520000<=loss<=0.560000, 0.760000<=old<=0.800000; -0.520000<=loss<=0.560000, 0.800000<=old<=0.840000; -0.520000<=loss<=0.560000, 0.840000<=old<=0.880000; -0.520000<=loss<=0.560000, 0.880000<=old<=0.920000; -0.520000<=loss<=0.560000, 0.920000<=old<=0.960000; -0.520000<=loss<=0.560000, 0.960000<=old<=0.999990; -0.560000<=loss<=0.600000, 0.000010<=old<=0.040000; -0.560000<=loss<=0.600000, 0.040000<=old<=0.080000; -0.560000<=loss<=0.600000, 0.080000<=old<=0.120000; -0.560000<=loss<=0.600000, 0.120000<=old<=0.160000; -0.560000<=loss<=0.600000, 0.160000<=old<=0.200000; -0.560000<=loss<=0.600000, 0.200000<=old<=0.240000; -0.560000<=loss<=0.600000, 0.240000<=old<=0.280000; -0.560000<=loss<=0.600000, 0.280000<=old<=0.320000; -0.560000<=loss<=0.600000, 0.320000<=old<=0.360000; -0.560000<=loss<=0.600000, 0.360000<=old<=0.400000; -0.560000<=loss<=0.600000, 0.400000<=old<=0.440000; -0.560000<=loss<=0.600000, 0.440000<=old<=0.480000; -0.560000<=loss<=0.600000, 0.480000<=old<=0.520000; -0.560000<=loss<=0.600000, 0.520000<=old<=0.560000; -0.560000<=loss<=0.600000, 0.560000<=old<=0.600000; -0.560000<=loss<=0.600000, 0.600000<=old<=0.640000; -0.560000<=loss<=0.600000, 0.640000<=old<=0.680000; -0.560000<=loss<=0.600000, 0.680000<=old<=0.720000; -0.560000<=loss<=0.600000, 0.720000<=old<=0.760000; -0.560000<=loss<=0.600000, 0.760000<=old<=0.800000; -0.560000<=loss<=0.600000, 0.800000<=old<=0.840000; -0.560000<=loss<=0.600000, 0.840000<=old<=0.880000; -0.560000<=loss<=0.600000, 0.880000<=old<=0.920000; -0.560000<=loss<=0.600000, 0.920000<=old<=0.960000; -0.560000<=loss<=0.600000, 0.960000<=old<=0.999990; -0.600000<=loss<=0.640000, 0.000010<=old<=0.040000; -0.600000<=loss<=0.640000, 0.040000<=old<=0.080000; -0.600000<=loss<=0.640000, 0.080000<=old<=0.120000; -0.600000<=loss<=0.640000, 0.120000<=old<=0.160000; -0.600000<=loss<=0.640000, 0.160000<=old<=0.200000; -0.600000<=loss<=0.640000, 0.200000<=old<=0.240000; -0.600000<=loss<=0.640000, 0.240000<=old<=0.280000; -0.600000<=loss<=0.640000, 0.280000<=old<=0.320000; -0.600000<=loss<=0.640000, 0.320000<=old<=0.360000; -0.600000<=loss<=0.640000, 0.360000<=old<=0.400000; -0.600000<=loss<=0.640000, 0.400000<=old<=0.440000; -0.600000<=loss<=0.640000, 0.440000<=old<=0.480000; -0.600000<=loss<=0.640000, 0.480000<=old<=0.520000; -0.600000<=loss<=0.640000, 0.520000<=old<=0.560000; -0.600000<=loss<=0.640000, 0.560000<=old<=0.600000; -0.600000<=loss<=0.640000, 0.600000<=old<=0.640000; -0.600000<=loss<=0.640000, 0.640000<=old<=0.680000; -0.600000<=loss<=0.640000, 0.680000<=old<=0.720000; -0.600000<=loss<=0.640000, 0.720000<=old<=0.760000; -0.600000<=loss<=0.640000, 0.760000<=old<=0.800000; -0.600000<=loss<=0.640000, 0.800000<=old<=0.840000; -0.600000<=loss<=0.640000, 0.840000<=old<=0.880000; -0.600000<=loss<=0.640000, 0.880000<=old<=0.920000; -0.600000<=loss<=0.640000, 0.920000<=old<=0.960000; -0.600000<=loss<=0.640000, 0.960000<=old<=0.999990; -0.640000<=loss<=0.680000, 0.000010<=old<=0.040000; -0.640000<=loss<=0.680000, 0.040000<=old<=0.080000; -0.640000<=loss<=0.680000, 0.080000<=old<=0.120000; -0.640000<=loss<=0.680000, 0.120000<=old<=0.160000; -0.640000<=loss<=0.680000, 0.160000<=old<=0.200000; -0.640000<=loss<=0.680000, 0.200000<=old<=0.240000; -0.640000<=loss<=0.680000, 0.240000<=old<=0.280000; -0.640000<=loss<=0.680000, 0.280000<=old<=0.320000; -0.640000<=loss<=0.680000, 0.320000<=old<=0.360000; -0.640000<=loss<=0.680000, 0.360000<=old<=0.400000; -0.640000<=loss<=0.680000, 0.400000<=old<=0.440000; -0.640000<=loss<=0.680000, 0.440000<=old<=0.480000; -0.640000<=loss<=0.680000, 0.480000<=old<=0.520000; -0.640000<=loss<=0.680000, 0.520000<=old<=0.560000; -0.640000<=loss<=0.680000, 0.560000<=old<=0.600000; -0.640000<=loss<=0.680000, 0.600000<=old<=0.640000; -0.640000<=loss<=0.680000, 0.640000<=old<=0.680000; -0.640000<=loss<=0.680000, 0.680000<=old<=0.720000; -0.640000<=loss<=0.680000, 0.720000<=old<=0.760000; -0.640000<=loss<=0.680000, 0.760000<=old<=0.800000; -0.640000<=loss<=0.680000, 0.800000<=old<=0.840000; -0.640000<=loss<=0.680000, 0.840000<=old<=0.880000; -0.640000<=loss<=0.680000, 0.880000<=old<=0.920000; -0.640000<=loss<=0.680000, 0.920000<=old<=0.960000; -0.640000<=loss<=0.680000, 0.960000<=old<=0.999990; -0.680000<=loss<=0.720000, 0.000010<=old<=0.040000; -0.680000<=loss<=0.720000, 0.040000<=old<=0.080000; -0.680000<=loss<=0.720000, 0.080000<=old<=0.120000; -0.680000<=loss<=0.720000, 0.120000<=old<=0.160000; -0.680000<=loss<=0.720000, 0.160000<=old<=0.200000; -0.680000<=loss<=0.720000, 0.200000<=old<=0.240000; -0.680000<=loss<=0.720000, 0.240000<=old<=0.280000; -0.680000<=loss<=0.720000, 0.280000<=old<=0.320000; -0.680000<=loss<=0.720000, 0.320000<=old<=0.360000; -0.680000<=loss<=0.720000, 0.360000<=old<=0.400000; -0.680000<=loss<=0.720000, 0.400000<=old<=0.440000; -0.680000<=loss<=0.720000, 0.440000<=old<=0.480000; -0.680000<=loss<=0.720000, 0.480000<=old<=0.520000; -0.680000<=loss<=0.720000, 0.520000<=old<=0.560000; -0.680000<=loss<=0.720000, 0.560000<=old<=0.600000; -0.680000<=loss<=0.720000, 0.600000<=old<=0.640000; -0.680000<=loss<=0.720000, 0.640000<=old<=0.680000; -0.680000<=loss<=0.720000, 0.680000<=old<=0.720000; -0.680000<=loss<=0.720000, 0.720000<=old<=0.760000; -0.680000<=loss<=0.720000, 0.760000<=old<=0.800000; -0.680000<=loss<=0.720000, 0.800000<=old<=0.840000; -0.680000<=loss<=0.720000, 0.840000<=old<=0.880000; -0.680000<=loss<=0.720000, 0.880000<=old<=0.920000; -0.680000<=loss<=0.720000, 0.920000<=old<=0.960000; -0.680000<=loss<=0.720000, 0.960000<=old<=0.999990; -0.720000<=loss<=0.760000, 0.000010<=old<=0.040000; -0.720000<=loss<=0.760000, 0.040000<=old<=0.080000; -0.720000<=loss<=0.760000, 0.080000<=old<=0.120000; -0.720000<=loss<=0.760000, 0.120000<=old<=0.160000; -0.720000<=loss<=0.760000, 0.160000<=old<=0.200000; -0.720000<=loss<=0.760000, 0.200000<=old<=0.240000; -0.720000<=loss<=0.760000, 0.240000<=old<=0.280000; -0.720000<=loss<=0.760000, 0.280000<=old<=0.320000; -0.720000<=loss<=0.760000, 0.320000<=old<=0.360000; -0.720000<=loss<=0.760000, 0.360000<=old<=0.400000; -0.720000<=loss<=0.760000, 0.400000<=old<=0.440000; -0.720000<=loss<=0.760000, 0.440000<=old<=0.480000; -0.720000<=loss<=0.760000, 0.480000<=old<=0.520000; -0.720000<=loss<=0.760000, 0.520000<=old<=0.560000; -0.720000<=loss<=0.760000, 0.560000<=old<=0.600000; -0.720000<=loss<=0.760000, 0.600000<=old<=0.640000; -0.720000<=loss<=0.760000, 0.640000<=old<=0.680000; -0.720000<=loss<=0.760000, 0.680000<=old<=0.720000; -0.720000<=loss<=0.760000, 0.720000<=old<=0.760000; -0.720000<=loss<=0.760000, 0.760000<=old<=0.800000; -0.720000<=loss<=0.760000, 0.800000<=old<=0.840000; -0.720000<=loss<=0.760000, 0.840000<=old<=0.880000; -0.720000<=loss<=0.760000, 0.880000<=old<=0.920000; -0.720000<=loss<=0.760000, 0.920000<=old<=0.960000; -0.720000<=loss<=0.760000, 0.960000<=old<=0.999990; -0.760000<=loss<=0.800000, 0.000010<=old<=0.040000; -0.760000<=loss<=0.800000, 0.040000<=old<=0.080000; -0.760000<=loss<=0.800000, 0.080000<=old<=0.120000; -0.760000<=loss<=0.800000, 0.120000<=old<=0.160000; -0.760000<=loss<=0.800000, 0.160000<=old<=0.200000; -0.760000<=loss<=0.800000, 0.200000<=old<=0.240000; -0.760000<=loss<=0.800000, 0.240000<=old<=0.280000; -0.760000<=loss<=0.800000, 0.280000<=old<=0.320000; -0.760000<=loss<=0.800000, 0.320000<=old<=0.360000; -0.760000<=loss<=0.800000, 0.360000<=old<=0.400000; -0.760000<=loss<=0.800000, 0.400000<=old<=0.440000; -0.760000<=loss<=0.800000, 0.440000<=old<=0.480000; -0.760000<=loss<=0.800000, 0.480000<=old<=0.520000; -0.760000<=loss<=0.800000, 0.520000<=old<=0.560000; -0.760000<=loss<=0.800000, 0.560000<=old<=0.600000; -0.760000<=loss<=0.800000, 0.600000<=old<=0.640000; -0.760000<=loss<=0.800000, 0.640000<=old<=0.680000; -0.760000<=loss<=0.800000, 0.680000<=old<=0.720000; -0.760000<=loss<=0.800000, 0.720000<=old<=0.760000; -0.760000<=loss<=0.800000, 0.760000<=old<=0.800000; -0.760000<=loss<=0.800000, 0.800000<=old<=0.840000; -0.760000<=loss<=0.800000, 0.840000<=old<=0.880000; -0.760000<=loss<=0.800000, 0.880000<=old<=0.920000; -0.760000<=loss<=0.800000, 0.920000<=old<=0.960000; -0.760000<=loss<=0.800000, 0.960000<=old<=0.999990; -0.800000<=loss<=0.840000, 0.000010<=old<=0.040000; -0.800000<=loss<=0.840000, 0.040000<=old<=0.080000; -0.800000<=loss<=0.840000, 0.080000<=old<=0.120000; -0.800000<=loss<=0.840000, 0.120000<=old<=0.160000; -0.800000<=loss<=0.840000, 0.160000<=old<=0.200000; -0.800000<=loss<=0.840000, 0.200000<=old<=0.240000; -0.800000<=loss<=0.840000, 0.240000<=old<=0.280000; -0.800000<=loss<=0.840000, 0.280000<=old<=0.320000; -0.800000<=loss<=0.840000, 0.320000<=old<=0.360000; -0.800000<=loss<=0.840000, 0.360000<=old<=0.400000; -0.800000<=loss<=0.840000, 0.400000<=old<=0.440000; -0.800000<=loss<=0.840000, 0.440000<=old<=0.480000; -0.800000<=loss<=0.840000, 0.480000<=old<=0.520000; -0.800000<=loss<=0.840000, 0.520000<=old<=0.560000; -0.800000<=loss<=0.840000, 0.560000<=old<=0.600000; -0.800000<=loss<=0.840000, 0.600000<=old<=0.640000; -0.800000<=loss<=0.840000, 0.640000<=old<=0.680000; -0.800000<=loss<=0.840000, 0.680000<=old<=0.720000; -0.800000<=loss<=0.840000, 0.720000<=old<=0.760000; -0.800000<=loss<=0.840000, 0.760000<=old<=0.800000; -0.800000<=loss<=0.840000, 0.800000<=old<=0.840000; -0.800000<=loss<=0.840000, 0.840000<=old<=0.880000; -0.800000<=loss<=0.840000, 0.880000<=old<=0.920000; -0.800000<=loss<=0.840000, 0.920000<=old<=0.960000; -0.800000<=loss<=0.840000, 0.960000<=old<=0.999990; -0.840000<=loss<=0.880000, 0.000010<=old<=0.040000; -0.840000<=loss<=0.880000, 0.040000<=old<=0.080000; -0.840000<=loss<=0.880000, 0.080000<=old<=0.120000; -0.840000<=loss<=0.880000, 0.120000<=old<=0.160000; -0.840000<=loss<=0.880000, 0.160000<=old<=0.200000; -0.840000<=loss<=0.880000, 0.200000<=old<=0.240000; -0.840000<=loss<=0.880000, 0.240000<=old<=0.280000; -0.840000<=loss<=0.880000, 0.280000<=old<=0.320000; -0.840000<=loss<=0.880000, 0.320000<=old<=0.360000; -0.840000<=loss<=0.880000, 0.360000<=old<=0.400000; -0.840000<=loss<=0.880000, 0.400000<=old<=0.440000; -0.840000<=loss<=0.880000, 0.440000<=old<=0.480000; -0.840000<=loss<=0.880000, 0.480000<=old<=0.520000; -0.840000<=loss<=0.880000, 0.520000<=old<=0.560000; -0.840000<=loss<=0.880000, 0.560000<=old<=0.600000; -0.840000<=loss<=0.880000, 0.600000<=old<=0.640000; -0.840000<=loss<=0.880000, 0.640000<=old<=0.680000; -0.840000<=loss<=0.880000, 0.680000<=old<=0.720000; -0.840000<=loss<=0.880000, 0.720000<=old<=0.760000; -0.840000<=loss<=0.880000, 0.760000<=old<=0.800000; -0.840000<=loss<=0.880000, 0.800000<=old<=0.840000; -0.840000<=loss<=0.880000, 0.840000<=old<=0.880000; -0.840000<=loss<=0.880000, 0.880000<=old<=0.920000; -0.840000<=loss<=0.880000, 0.920000<=old<=0.960000; -0.840000<=loss<=0.880000, 0.960000<=old<=0.999990; -0.880000<=loss<=0.920000, 0.000010<=old<=0.040000; -0.880000<=loss<=0.920000, 0.040000<=old<=0.080000; -0.880000<=loss<=0.920000, 0.080000<=old<=0.120000; -0.880000<=loss<=0.920000, 0.120000<=old<=0.160000; -0.880000<=loss<=0.920000, 0.160000<=old<=0.200000; -0.880000<=loss<=0.920000, 0.200000<=old<=0.240000; -0.880000<=loss<=0.920000, 0.240000<=old<=0.280000; -0.880000<=loss<=0.920000, 0.280000<=old<=0.320000; -0.880000<=loss<=0.920000, 0.320000<=old<=0.360000; -0.880000<=loss<=0.920000, 0.360000<=old<=0.400000; -0.880000<=loss<=0.920000, 0.400000<=old<=0.440000; -0.880000<=loss<=0.920000, 0.440000<=old<=0.480000; -0.880000<=loss<=0.920000, 0.480000<=old<=0.520000; -0.880000<=loss<=0.920000, 0.520000<=old<=0.560000; -0.880000<=loss<=0.920000, 0.560000<=old<=0.600000; -0.880000<=loss<=0.920000, 0.600000<=old<=0.640000; -0.880000<=loss<=0.920000, 0.640000<=old<=0.680000; -0.880000<=loss<=0.920000, 0.680000<=old<=0.720000; -0.880000<=loss<=0.920000, 0.720000<=old<=0.760000; -0.880000<=loss<=0.920000, 0.760000<=old<=0.800000; -0.880000<=loss<=0.920000, 0.800000<=old<=0.840000; -0.880000<=loss<=0.920000, 0.840000<=old<=0.880000; -0.880000<=loss<=0.920000, 0.880000<=old<=0.920000; -0.880000<=loss<=0.920000, 0.920000<=old<=0.960000; -0.880000<=loss<=0.920000, 0.960000<=old<=0.999990; -0.920000<=loss<=0.960000, 0.000010<=old<=0.040000; -0.920000<=loss<=0.960000, 0.040000<=old<=0.080000; -0.920000<=loss<=0.960000, 0.080000<=old<=0.120000; -0.920000<=loss<=0.960000, 0.120000<=old<=0.160000; -0.920000<=loss<=0.960000, 0.160000<=old<=0.200000; -0.920000<=loss<=0.960000, 0.200000<=old<=0.240000; -0.920000<=loss<=0.960000, 0.240000<=old<=0.280000; -0.920000<=loss<=0.960000, 0.280000<=old<=0.320000; -0.920000<=loss<=0.960000, 0.320000<=old<=0.360000; -0.920000<=loss<=0.960000, 0.360000<=old<=0.400000; -0.920000<=loss<=0.960000, 0.400000<=old<=0.440000; -0.920000<=loss<=0.960000, 0.440000<=old<=0.480000; -0.920000<=loss<=0.960000, 0.480000<=old<=0.520000; -0.920000<=loss<=0.960000, 0.520000<=old<=0.560000; -0.920000<=loss<=0.960000, 0.560000<=old<=0.600000; -0.920000<=loss<=0.960000, 0.600000<=old<=0.640000; -0.920000<=loss<=0.960000, 0.640000<=old<=0.680000; -0.920000<=loss<=0.960000, 0.680000<=old<=0.720000; -0.920000<=loss<=0.960000, 0.720000<=old<=0.760000; -0.920000<=loss<=0.960000, 0.760000<=old<=0.800000; -0.920000<=loss<=0.960000, 0.800000<=old<=0.840000; -0.920000<=loss<=0.960000, 0.840000<=old<=0.880000; -0.920000<=loss<=0.960000, 0.880000<=old<=0.920000; -0.920000<=loss<=0.960000, 0.920000<=old<=0.960000; -0.920000<=loss<=0.960000, 0.960000<=old<=0.999990; -0.960000<=loss<=0.999990, 0.000010<=old<=0.040000; -0.960000<=loss<=0.999990, 0.040000<=old<=0.080000; -0.960000<=loss<=0.999990, 0.080000<=old<=0.120000; -0.960000<=loss<=0.999990, 0.120000<=old<=0.160000; -0.960000<=loss<=0.999990, 0.160000<=old<=0.200000; -0.960000<=loss<=0.999990, 0.200000<=old<=0.240000; -0.960000<=loss<=0.999990, 0.240000<=old<=0.280000; -0.960000<=loss<=0.999990, 0.280000<=old<=0.320000; -0.960000<=loss<=0.999990, 0.320000<=old<=0.360000; -0.960000<=loss<=0.999990, 0.360000<=old<=0.400000; -0.960000<=loss<=0.999990, 0.400000<=old<=0.440000; -0.960000<=loss<=0.999990, 0.440000<=old<=0.480000; -0.960000<=loss<=0.999990, 0.480000<=old<=0.520000; -0.960000<=loss<=0.999990, 0.520000<=old<=0.560000; -0.960000<=loss<=0.999990, 0.560000<=old<=0.600000; -0.960000<=loss<=0.999990, 0.600000<=old<=0.640000; -0.960000<=loss<=0.999990, 0.640000<=old<=0.680000; -0.960000<=loss<=0.999990, 0.680000<=old<=0.720000; -0.960000<=loss<=0.999990, 0.720000<=old<=0.760000; -0.960000<=loss<=0.999990, 0.760000<=old<=0.800000; -0.960000<=loss<=0.999990, 0.800000<=old<=0.840000; -0.960000<=loss<=0.999990, 0.840000<=old<=0.880000; -0.960000<=loss<=0.999990, 0.880000<=old<=0.920000; -0.960000<=loss<=0.999990, 0.920000<=old<=0.960000; -0.960000<=loss<=0.999990, 0.960000<=old<=0.999990; diff --git a/examples/pmdp/zeroconf/zeroconf_space.txt b/examples/pmdp/zeroconf/zeroconf_space.txt deleted file mode 100644 index 54ffa3425..000000000 --- a/examples/pmdp/zeroconf/zeroconf_space.txt +++ /dev/null @@ -1,2 +0,0 @@ -0.000010<=loss<=0.999990, 0.000010<=old<=0.999990; - diff --git a/test/functional/parser/lab_files/autoParser.lab b/test/functional/parser/lab_files/autoParser.lab new file mode 100644 index 000000000..347eca969 --- /dev/null +++ b/test/functional/parser/lab_files/autoParser.lab @@ -0,0 +1,15 @@ +#DECLARATION +init one two three four +#END +0 init one two three four +1 one +2 two +3 three +4 four +5 one +6 one +7 two +8 two +9 three four +10 three +11 four diff --git a/test/functional/parser/lab_files/dtmc_actionTest.lab b/test/functional/parser/lab_files/dtmc_actionTest.lab new file mode 100644 index 000000000..fc28d355c --- /dev/null +++ b/test/functional/parser/lab_files/dtmc_actionTest.lab @@ -0,0 +1,11 @@ +#DECLARATION +init a b c d +#END +0 init c +1 c +2 c d +3 c +4 c +5 a +6 b +7 b diff --git a/test/functional/parser/lab_files/dtmc_general.lab b/test/functional/parser/lab_files/dtmc_general.lab new file mode 100644 index 000000000..7c1d33761 --- /dev/null +++ b/test/functional/parser/lab_files/dtmc_general.lab @@ -0,0 +1,11 @@ +#DECLARATION +init one two three four +#END +0 init one two three four +1 one +2 two +3 three +4 four +5 one +6 one two +7 init one four diff --git a/test/functional/parser/lab_files/dtmc_mismatched.lab b/test/functional/parser/lab_files/dtmc_mismatched.lab new file mode 100644 index 000000000..7c1d33761 --- /dev/null +++ b/test/functional/parser/lab_files/dtmc_mismatched.lab @@ -0,0 +1,11 @@ +#DECLARATION +init one two three four +#END +0 init one two three four +1 one +2 two +3 three +4 four +5 one +6 one two +7 init one four diff --git a/test/functional/parser/lab_files/labParser/declarationMisspell.lab b/test/functional/parser/lab_files/labParser/declarationMisspell.lab new file mode 100644 index 000000000..8469b5a95 --- /dev/null +++ b/test/functional/parser/lab_files/labParser/declarationMisspell.lab @@ -0,0 +1,7 @@ +#DECLAATION +phi +#END +1 phi +2 phi +3 phi + diff --git a/test/functional/parser/lab_files/labParser/doubledLines.lab b/test/functional/parser/lab_files/labParser/doubledLines.lab new file mode 100644 index 000000000..504a5ecef --- /dev/null +++ b/test/functional/parser/lab_files/labParser/doubledLines.lab @@ -0,0 +1,14 @@ +#DECLARATION +one two three +#END +1 one +1 two +2 two +3 one +4 three +2 two +5 two three +2 three +5 two +4 one +1 three diff --git a/test/functional/parser/lab_files/labParser/doubledLinesSkipped.lab b/test/functional/parser/lab_files/labParser/doubledLinesSkipped.lab new file mode 100644 index 000000000..a52e0c85a --- /dev/null +++ b/test/functional/parser/lab_files/labParser/doubledLinesSkipped.lab @@ -0,0 +1,9 @@ +#DECLARATION +one two three +#END +1 one +0 two +2 two +3 one +4 three +5 two three diff --git a/test/functional/parser/lab_files/labParser/endMisspell.lab b/test/functional/parser/lab_files/labParser/endMisspell.lab new file mode 100644 index 000000000..4a3d20786 --- /dev/null +++ b/test/functional/parser/lab_files/labParser/endMisspell.lab @@ -0,0 +1,6 @@ +#DECLARATION +phi +#EDN +1 phi +2 phi +3 phi diff --git a/test/functional/parser/lab_files/labParser/labelForNonexistentState.lab b/test/functional/parser/lab_files/labParser/labelForNonexistentState.lab new file mode 100644 index 000000000..19479e3b9 --- /dev/null +++ b/test/functional/parser/lab_files/labParser/labelForNonexistentState.lab @@ -0,0 +1,6 @@ +#DECLARATION +one two +#END +1 one +2 two +354 one diff --git a/test/functional/parser/lab_files/labParser/noDeclarationTag.lab b/test/functional/parser/lab_files/labParser/noDeclarationTag.lab new file mode 100644 index 000000000..6ebe7520a --- /dev/null +++ b/test/functional/parser/lab_files/labParser/noDeclarationTag.lab @@ -0,0 +1,6 @@ +phi +#END +1 phi +2 phi +3 phi + diff --git a/test/functional/parser/lab_files/labParser/noEndTag.lab b/test/functional/parser/lab_files/labParser/noEndTag.lab new file mode 100644 index 000000000..f5c27718b --- /dev/null +++ b/test/functional/parser/lab_files/labParser/noEndTag.lab @@ -0,0 +1,5 @@ +#DECLARATION +phi +1 phi +2 phi +3 phi diff --git a/test/functional/parser/lab_files/labParser/noLabelsDecNoneGiven.lab b/test/functional/parser/lab_files/labParser/noLabelsDecNoneGiven.lab new file mode 100644 index 000000000..3f2c8a9d8 --- /dev/null +++ b/test/functional/parser/lab_files/labParser/noLabelsDecNoneGiven.lab @@ -0,0 +1,2 @@ +#DECLARATION +#END diff --git a/test/functional/parser/lab_files/labParser/swappedStateAndProposition.lab b/test/functional/parser/lab_files/labParser/swappedStateAndProposition.lab new file mode 100644 index 000000000..e0a9dee26 --- /dev/null +++ b/test/functional/parser/lab_files/labParser/swappedStateAndProposition.lab @@ -0,0 +1,6 @@ +#DECLARATION +phi +#END +1 phi +phi 2 +3 phi diff --git a/test/functional/parser/lab_files/labParser/undeclaredLabelsGiven.lab b/test/functional/parser/lab_files/labParser/undeclaredLabelsGiven.lab new file mode 100644 index 000000000..61be3b1ae --- /dev/null +++ b/test/functional/parser/lab_files/labParser/undeclaredLabelsGiven.lab @@ -0,0 +1,6 @@ +#DECLARATION +psi +#END +1 phi +2 phi +3 phi diff --git a/test/functional/parser/lab_files/labParser/withWhitespaces.lab b/test/functional/parser/lab_files/labParser/withWhitespaces.lab new file mode 100644 index 000000000..456eafe15 --- /dev/null +++ b/test/functional/parser/lab_files/labParser/withWhitespaces.lab @@ -0,0 +1,11 @@ +#DECLARATION +one 9 & two " three +#END +1 one three +2 two " +3 three two +4 one one +5 two three one two three three two one +7 one 9 two +11 two & +12 one diff --git a/test/functional/parser/lab_files/labParser/withoutWhitespaces.lab b/test/functional/parser/lab_files/labParser/withoutWhitespaces.lab new file mode 100644 index 000000000..d6ee85177 --- /dev/null +++ b/test/functional/parser/lab_files/labParser/withoutWhitespaces.lab @@ -0,0 +1,11 @@ +#DECLARATION +one 9 & two " three +#END +1 one three +2 two " +3 three two +4 one +5 two three one +7 one 9 two +11 two & +12 one diff --git a/test/functional/parser/lab_files/ma_cslFilterTest.lab b/test/functional/parser/lab_files/ma_cslFilterTest.lab new file mode 100644 index 000000000..94ad289c8 --- /dev/null +++ b/test/functional/parser/lab_files/ma_cslFilterTest.lab @@ -0,0 +1,7 @@ +#DECLARATION +init r1 r2 err +#END +0 init +2 err +6 r1 +7 r2 diff --git a/test/functional/parser/lab_files/ma_general.lab b/test/functional/parser/lab_files/ma_general.lab new file mode 100644 index 000000000..9033e9f3a --- /dev/null +++ b/test/functional/parser/lab_files/ma_general.lab @@ -0,0 +1,6 @@ +#DECLARATION +init goal err +#END +0 init +3 err +5 goal diff --git a/test/functional/parser/lab_files/ma_mismatched.lab b/test/functional/parser/lab_files/ma_mismatched.lab new file mode 100644 index 000000000..0c89ed57f --- /dev/null +++ b/test/functional/parser/lab_files/ma_mismatched.lab @@ -0,0 +1,7 @@ +#DECLARATION +init goal err +#END +0 init +3 err +5 goal +9 err diff --git a/test/functional/parser/lab_files/mdp_general.lab b/test/functional/parser/lab_files/mdp_general.lab new file mode 100644 index 000000000..744073e6a --- /dev/null +++ b/test/functional/parser/lab_files/mdp_general.lab @@ -0,0 +1,8 @@ +#DECLARATION +init one two three +#END +0 init one three +2 two three +3 one +4 init +5 two diff --git a/test/functional/parser/lab_files/mdp_mismatched.lab b/test/functional/parser/lab_files/mdp_mismatched.lab new file mode 100644 index 000000000..a43a9d75c --- /dev/null +++ b/test/functional/parser/lab_files/mdp_mismatched.lab @@ -0,0 +1,7 @@ +#DECLARATION +init one two three +#END +0 init one three +2 two three +3 one +4 init diff --git a/test/functional/parser/lab_files/pctl_general.lab b/test/functional/parser/lab_files/pctl_general.lab new file mode 100644 index 000000000..f88082c0f --- /dev/null +++ b/test/functional/parser/lab_files/pctl_general.lab @@ -0,0 +1,6 @@ +#DECLARATION +phi psi smth +#END +0 phi +1 phi +2 smth phi \ No newline at end of file diff --git a/test/functional/parser/rew_files/autoParser.state.rew b/test/functional/parser/rew_files/autoParser.state.rew new file mode 100644 index 000000000..0a1239e7a --- /dev/null +++ b/test/functional/parser/rew_files/autoParser.state.rew @@ -0,0 +1,12 @@ +0 0 +1 1 +2 2 +3 3 +4 4 +5 10 +6 10 +7 5 +8 20 +9 0 +10 0 +11 1000 diff --git a/test/functional/parser/rew_files/dtmc_general.state.rew b/test/functional/parser/rew_files/dtmc_general.state.rew new file mode 100644 index 000000000..7e080a84b --- /dev/null +++ b/test/functional/parser/rew_files/dtmc_general.state.rew @@ -0,0 +1,8 @@ +0 0 +1 1 +2 2 +3 3.32 +4 4 +5 110 +6 101 +7 42 diff --git a/test/functional/parser/rew_files/dtmc_general.trans.rew b/test/functional/parser/rew_files/dtmc_general.trans.rew new file mode 100644 index 000000000..f1bd1970b --- /dev/null +++ b/test/functional/parser/rew_files/dtmc_general.trans.rew @@ -0,0 +1,17 @@ +0 1 10 +1 2 5 +1 3 5.5 +2 3 21.4 +2 4 4 +2 5 2 +3 3 1 +4 3 1 +5 3 0.1 +5 4 1.1 +5 5 9.5 +5 6 6.7 +6 0 1 +6 5 0 +6 6 12 +7 6 35.224653 +7 7 9.875347 diff --git a/test/functional/parser/rew_files/dtmc_mismatched.trans.rew b/test/functional/parser/rew_files/dtmc_mismatched.trans.rew new file mode 100644 index 000000000..0120fbccf --- /dev/null +++ b/test/functional/parser/rew_files/dtmc_mismatched.trans.rew @@ -0,0 +1,16 @@ +0 1 10 +0 5 13 +1 2 5 +1 3 5.5 +2 3 21.4 +2 4 4 +2 5 2 +3 3 1 +4 3 1 +5 3 0.1 +5 4 1.1 +5 5 9.5 +5 6 6.7 +6 0 1 +6 5 0 +6 6 12 diff --git a/test/functional/parser/rew_files/dtmc_mixedStateOrder.trans.rew b/test/functional/parser/rew_files/dtmc_mixedStateOrder.trans.rew new file mode 100644 index 000000000..8da3272bd --- /dev/null +++ b/test/functional/parser/rew_files/dtmc_mixedStateOrder.trans.rew @@ -0,0 +1,17 @@ +0 1 10 +1 2 5 +1 3 5.5 +2 3 21.4 +2 4 4 +2 5 2 +3 3 1 +5 3 0.1 +5 4 1.1 +5 5 9.5 +5 6 6.7 +4 3 1 +6 0 1 +6 5 0 +6 6 12 +7 6 35.224653 +7 7 9.875347 diff --git a/test/functional/parser/rew_files/dtmc_mixedTransitionOrder.trans.rew b/test/functional/parser/rew_files/dtmc_mixedTransitionOrder.trans.rew new file mode 100644 index 000000000..70fc01d80 --- /dev/null +++ b/test/functional/parser/rew_files/dtmc_mixedTransitionOrder.trans.rew @@ -0,0 +1,17 @@ +0 1 10 +1 3 5.5 +1 2 5 +2 5 2 +2 3 21.4 +2 4 4 +3 3 1 +4 3 1 +5 3 0.1 +5 5 9.5 +5 6 6.7 +5 4 1.1 +6 0 1 +6 5 0 +6 6 12 +7 7 9.875347 +7 6 35.224653 diff --git a/test/functional/parser/rew_files/dtmc_rewardForNonExTrans.trans.rew b/test/functional/parser/rew_files/dtmc_rewardForNonExTrans.trans.rew new file mode 100644 index 000000000..e579de7de --- /dev/null +++ b/test/functional/parser/rew_files/dtmc_rewardForNonExTrans.trans.rew @@ -0,0 +1,18 @@ +0 1 10 +1 2 5 +1 3 5.5 +2 3 21.4 +2 4 4 +2 5 2 +3 3 1 +4 3 1 +5 3 0.1 +5 4 1.1 +5 5 9.5 +5 6 6.7 +6 0 1 +6 4 42 +6 5 0 +6 6 12 +7 6 35.224653 +7 7 9.875347 diff --git a/test/functional/parser/rew_files/dtmc_whitespaces.trans.rew b/test/functional/parser/rew_files/dtmc_whitespaces.trans.rew new file mode 100644 index 000000000..a88bb643a --- /dev/null +++ b/test/functional/parser/rew_files/dtmc_whitespaces.trans.rew @@ -0,0 +1,23 @@ + + +0 1 10 +1 2 5 +1 3 5.5 +2 3 21.4 +2 4 4 + 2 5 2 +3 3 1 +4 3 1 +5 3 0.1 + + + 5 4 1.1 +5 5 9.5 +5 6 6.7 +6 0 1 +6 5 0 +6 6 12 +7 6 35.224653 + 7 7 9.875347 + + diff --git a/test/functional/parser/rew_files/ma_general.state.rew b/test/functional/parser/rew_files/ma_general.state.rew new file mode 100644 index 000000000..5797ac56a --- /dev/null +++ b/test/functional/parser/rew_files/ma_general.state.rew @@ -0,0 +1,6 @@ +0 0 +1 1.75774 +2 5.436563657 +3 1.570796327 +4 1000 +5 7 diff --git a/test/functional/parser/rew_files/ma_mismatched.state.rew b/test/functional/parser/rew_files/ma_mismatched.state.rew new file mode 100644 index 000000000..823994026 --- /dev/null +++ b/test/functional/parser/rew_files/ma_mismatched.state.rew @@ -0,0 +1,7 @@ +0 0 +1 1.75774 +2 5.436563657 +3 1.570796327 +4 1000 +5 7 +9 42 diff --git a/test/functional/parser/rew_files/mdp_general.state.rew b/test/functional/parser/rew_files/mdp_general.state.rew new file mode 100644 index 000000000..c1c6a20e5 --- /dev/null +++ b/test/functional/parser/rew_files/mdp_general.state.rew @@ -0,0 +1,6 @@ +0 0 +1 1 +2 2 +3 3.32 +4 42 +5 110 diff --git a/test/functional/parser/rew_files/mdp_general.trans.rew b/test/functional/parser/rew_files/mdp_general.trans.rew new file mode 100644 index 000000000..b7fe4554f --- /dev/null +++ b/test/functional/parser/rew_files/mdp_general.trans.rew @@ -0,0 +1,17 @@ +0 0 0 1 +0 0 1 30 +0 1 1 15.2 +0 1 2 75 +0 1 5 2.45 +0 2 5 1 +0 3 0 0.114 +0 3 4 90 +1 0 2 1 +2 0 2 55 +2 0 3 87 +3 0 2 13 +3 0 3 999 +4 0 1 0.7 +4 0 4 0.3 +5 0 1 0.1 +5 0 5 6 diff --git a/test/functional/parser/rew_files/mdp_mismatched.trans.rew b/test/functional/parser/rew_files/mdp_mismatched.trans.rew new file mode 100644 index 000000000..62b325b69 --- /dev/null +++ b/test/functional/parser/rew_files/mdp_mismatched.trans.rew @@ -0,0 +1,18 @@ +0 0 0 0.9 +0 0 1 0.1 +0 1 1 0.2 +0 1 2 0.2 +0 1 3 0.2 +0 1 4 22 +0 2 4 1 +0 3 0 0.1 +0 3 4 0.9 +1 0 2 1 +2 0 2 55 +2 0 3 0.5 +2 1 2 10 +3 0 2 0.001 +3 0 3 0.999 +4 0 1 0.7 +4 0 3 42 +4 0 4 0.3 diff --git a/test/functional/parser/rew_files/mdp_mixedStateOrder.trans.rew b/test/functional/parser/rew_files/mdp_mixedStateOrder.trans.rew new file mode 100644 index 000000000..ec8b97d1d --- /dev/null +++ b/test/functional/parser/rew_files/mdp_mixedStateOrder.trans.rew @@ -0,0 +1,17 @@ +0 0 0 1 +0 0 1 30 +0 1 1 15.2 +0 1 2 75 +0 1 5 2.45 +0 2 5 1 +0 3 0 0.114 +0 3 4 90 +2 0 2 55 +2 0 3 87 +1 0 2 1 +3 0 2 13 +3 0 3 999 +4 0 1 0.7 +4 0 4 0.3 +5 0 1 0.1 +5 0 5 6 diff --git a/test/functional/parser/rew_files/mdp_mixedTransitionOrder.trans.rew b/test/functional/parser/rew_files/mdp_mixedTransitionOrder.trans.rew new file mode 100644 index 000000000..3b6b5f9ba --- /dev/null +++ b/test/functional/parser/rew_files/mdp_mixedTransitionOrder.trans.rew @@ -0,0 +1,17 @@ +0 0 0 1 +0 0 1 30 +0 1 1 15.2 +0 1 5 2.45 +0 1 2 75 +0 2 5 1 +0 3 0 0.114 +0 3 4 90 +1 0 2 1 +2 0 2 55 +2 0 3 87 +3 0 2 13 +3 0 3 999 +4 0 1 0.7 +4 0 4 0.3 +5 0 1 0.1 +5 0 5 6 diff --git a/test/functional/parser/rew_files/mdp_rewardForNonExTrans.trans.rew b/test/functional/parser/rew_files/mdp_rewardForNonExTrans.trans.rew new file mode 100644 index 000000000..6e11d7e08 --- /dev/null +++ b/test/functional/parser/rew_files/mdp_rewardForNonExTrans.trans.rew @@ -0,0 +1,18 @@ +0 0 0 1 +0 0 1 30 +0 1 1 15.2 +0 1 2 75 +0 1 5 2.45 +0 2 5 1 +0 3 0 0.114 +0 3 4 90 +1 0 2 1 +2 0 2 55 +2 0 3 87 +3 0 2 13 +3 0 3 999 +4 0 1 0.7 +4 0 3 42 +4 0 4 0.3 +5 0 1 0.1 +5 0 5 6 diff --git a/test/functional/parser/rew_files/mdp_whitespaces.trans.rew b/test/functional/parser/rew_files/mdp_whitespaces.trans.rew new file mode 100644 index 000000000..aab316fe0 --- /dev/null +++ b/test/functional/parser/rew_files/mdp_whitespaces.trans.rew @@ -0,0 +1,23 @@ + + + +0 0 0 1 + 0 0 1 30 +0 1 1 15.2 + 0 1 2 75 +0 1 5 2.45 +0 2 5 1 +0 3 0 0.114 +0 3 4 90 + + + +1 0 2 1 +2 0 2 55 +2 0 3 87 + 3 0 2 13 + 3 0 3 999 +4 0 1 0.7 +4 0 4 0.3 +5 0 1 0.1 +5 0 5 6 diff --git a/test/functional/parser/rew_files/state_reward_parser_basic.state.rew b/test/functional/parser/rew_files/state_reward_parser_basic.state.rew new file mode 100644 index 000000000..b04dc9f1e --- /dev/null +++ b/test/functional/parser/rew_files/state_reward_parser_basic.state.rew @@ -0,0 +1,100 @@ +0 0.7 +1 17.3364 +2 22.9857 +3 30.2161 +4 39.3341 +5 50.4059 +6 63.4541 +7 78.4887 +8 95.5148 +9 114.535 +10 135.551 +11 158.565 +12 183.576 +13 210.585 +14 239.594 +15 270.601 +16 303.607 +17 338.612 +18 375.617 +19 414.621 +20 455.625 +21 498.629 +22 543.632 +23 590.635 +24 639.638 +25 690.64 +26 743.643 +27 798.645 +28 855.647 +29 914.648 +30 975.65 +31 1038.65 +32 1103.65 +33 1170.65 +34 1239.66 +35 1310.66 +36 1383.66 +37 1458.66 +38 1535.66 +39 1614.66 +40 1695.66 +41 1778.66 +42 1863.66 +43 1950.67 +44 2039.67 +45 2130.67 +46 2223.67 +47 2318.67 +48 2415.67 +49 2514.67 +50 2615.67 +51 2718.67 +52 2823.67 +53 2930.67 +54 3039.67 +55 3150.67 +56 3263.67 +57 3378.67 +58 3495.67 +59 3614.67 +60 3735.68 +61 3858.68 +62 3983.68 +63 4110.68 +64 4239.68 +65 4370.68 +66 4503.68 +67 4638.68 +68 4775.68 +69 4914.68 +70 5055.68 +71 5198.68 +72 5343.68 +73 5490.68 +74 5639.68 +75 5790.68 +76 5943.68 +77 6098.68 +78 6255.68 +79 6414.68 +80 6575.68 +81 6738.68 +82 6903.68 +83 7070.68 +84 7239.68 +85 7410.68 +86 7583.68 +87 7758.68 +88 7935.68 +89 8114.68 +90 8295.68 +91 8478.68 +92 8663.68 +93 8850.68 +94 9039.68 +95 9230.68 +96 9423.68 +97 9618.68 +98 9815.68 +99 10014.7 diff --git a/test/functional/parser/rew_files/state_reward_parser_doubledLines.state.rew b/test/functional/parser/rew_files/state_reward_parser_doubledLines.state.rew new file mode 100644 index 000000000..3c8bc5015 --- /dev/null +++ b/test/functional/parser/rew_files/state_reward_parser_doubledLines.state.rew @@ -0,0 +1,12 @@ +0 0.7 +1 17.3364 +2 22.9857 +2 587.998 +3 30.2161 +4 39.3341 +5 50.4059 +6 63.4541 +7 78.4887 +8 95.5148 +9 114.535 +10 135.551 diff --git a/test/functional/parser/rew_files/state_reward_parser_doubledLinesSkipped.state.rew b/test/functional/parser/rew_files/state_reward_parser_doubledLinesSkipped.state.rew new file mode 100644 index 000000000..b013fded1 --- /dev/null +++ b/test/functional/parser/rew_files/state_reward_parser_doubledLinesSkipped.state.rew @@ -0,0 +1,11 @@ +0 0.7 +1 17.3364 +2 22.9857 +4 39.3341 +3 30.2161 +5 50.4059 +6 63.4541 +7 78.4887 +8 95.5148 +9 114.535 +10 135.551 diff --git a/test/functional/parser/rew_files/state_reward_parser_whitespaces.state.rew b/test/functional/parser/rew_files/state_reward_parser_whitespaces.state.rew new file mode 100644 index 000000000..9d8cfb6be --- /dev/null +++ b/test/functional/parser/rew_files/state_reward_parser_whitespaces.state.rew @@ -0,0 +1,108 @@ + + +0 0.7 +1 17.3364 +2 22.9857 +3 30.2161 + 4 39.3341 +5 50.4059 + + +6 63.4541 +7 78.4887 +8 95.5148 +9 114.535 +10 135.551 + 11 158.565 +12 183.576 +13 210.585 + 14 239.594 +15 270.601 +16 303.607 +17 338.612 +18 375.617 +19 414.621 +20 455.625 +21 498.629 +22 543.632 +23 590.635 +24 639.638 +25 690.64 +26 743.643 +27 798.645 + 28 855.647 +29 914.648 +30 975.65 +31 1038.65 +32 1103.65 +33 1170.65 +34 1239.66 +35 1310.66 +36 1383.66 + 37 1458.66 +38 1535.66 +39 1614.66 +40 1695.66 +41 1778.66 +42 1863.66 +43 1950.67 +44 2039.67 +45 2130.67 +46 2223.67 +47 2318.67 +48 2415.67 +49 2514.67 +50 2615.67 +51 2718.67 +52 2823.67 +53 2930.67 +54 3039.67 +55 3150.67 +56 3263.67 +57 3378.67 +58 3495.67 +59 3614.67 +60 3735.68 +61 3858.68 +62 3983.68 +63 4110.68 +64 4239.68 +65 4370.68 +66 4503.68 +67 4638.68 +68 4775.68 +69 4914.68 +70 5055.68 +71 5198.68 +72 5343.68 +73 5490.68 +74 5639.68 +75 5790.68 +76 5943.68 +77 6098.68 +78 6255.68 +79 6414.68 +80 6575.68 +81 6738.68 +82 6903.68 +83 7070.68 +84 7239.68 +85 7410.68 + 86 7583.68 +87 7758.68 +88 7935.68 +89 8114.68 + 90 8295.68 +91 8478.68 + +92 8663.68 +93 8850.68 +94 9039.68 +95 9230.68 +96 9423.68 + +97 9618.68 +98 9815.68 +99 10014.7 + + diff --git a/test/functional/parser/tra_files/autoParser/ctmc.tra b/test/functional/parser/tra_files/autoParser/ctmc.tra new file mode 100644 index 000000000..c6a63d753 --- /dev/null +++ b/test/functional/parser/tra_files/autoParser/ctmc.tra @@ -0,0 +1,32 @@ +cTmC +0 0 10 +0 1 13 +0 2 42 +0 3 11 +0 4 19.6 +1 1 32.8 +1 2 0.5 +1 5 0.5 +2 1 0.5 +2 2 0.0 +2 7 0.5 +3 3 0.2 +3 4 0.4 +3 9 0.4 +4 3 0.4 +4 4 0.2 +4 9 0.4 +5 5 0.0 +5 6 1.0 +6 6 0.0 +6 9 1.0 +7 7 0.0 +7 8 1000.0 +8 8 0.0 +9 9 0.8 +9 10 0.1 +9 11 0.1 +10 10 0.9 +10 11 0.1 +11 10 0.1 +11 11 0.9 diff --git a/test/functional/parser/tra_files/autoParser/ctmdp.tra b/test/functional/parser/tra_files/autoParser/ctmdp.tra new file mode 100644 index 000000000..3cc37f398 --- /dev/null +++ b/test/functional/parser/tra_files/autoParser/ctmdp.tra @@ -0,0 +1,37 @@ +cTMdP +0 0 0 0.6 +0 0 1 0.1 +0 0 2 0.1 +0 0 3 0.1 +0 0 4 0.1 +0 1 0 0.0 +0 1 6 1.0 +1 0 1 0.0 +1 0 2 0.5 +1 0 5 0.5 +1 1 1 0.0 +1 1 8 1.0 +2 0 1 0.5 +2 0 2 0.0 +2 0 7 0.5 +3 0 3 0.2 +3 0 4 0.4 +3 0 9 0.4 +4 0 3 0.4 +4 0 4 0.2 +4 0 9 0.4 +5 0 5 0.0 +5 0 6 1.0 +6 0 6 0.0 +6 0 9 1.0 +7 0 7 0.0 +7 0 8 1.0 +8 0 8 0.0 +8 0 9 1.0 +9 0 9 1.0 +9 1 10 1.0 +9 2 11 1.0 +10 0 10 0.9 +10 0 11 0.1 +11 0 10 0.1 +11 0 11 0.9 diff --git a/test/functional/parser/tra_files/autoParser/dtmc.tra b/test/functional/parser/tra_files/autoParser/dtmc.tra new file mode 100644 index 000000000..e21723f5f --- /dev/null +++ b/test/functional/parser/tra_files/autoParser/dtmc.tra @@ -0,0 +1,33 @@ +dTmC +0 0 0.6 +0 1 0.1 +0 2 0.1 +0 3 0.1 +0 4 0.1 +1 1 0.0 +1 2 0.5 +1 5 0.5 +2 1 0.5 +2 2 0.0 +2 7 0.5 +3 3 0.2 +3 4 0.4 +3 9 0.4 +4 3 0.4 +4 4 0.2 +4 9 0.4 +5 5 0.0 +5 6 1.0 +6 6 0.0 +6 9 1.0 +7 7 0.0 +7 8 1.0 +8 8 0.0 +8 9 1.0 +9 9 0.8 +9 10 0.1 +9 11 0.1 +10 10 0.9 +10 11 0.1 +11 10 0.1 +11 11 0.9 diff --git a/test/functional/parser/tra_files/autoParser/dtmcWhitespaces1.tra b/test/functional/parser/tra_files/autoParser/dtmcWhitespaces1.tra new file mode 100644 index 000000000..b273d685f --- /dev/null +++ b/test/functional/parser/tra_files/autoParser/dtmcWhitespaces1.tra @@ -0,0 +1,33 @@ +dtmc +0 0 0.6 +0 1 0.1 +0 2 0.1 +0 3 0.1 +0 4 0.1 +1 1 0.0 +1 2 0.5 +1 5 0.5 +2 1 0.5 +2 2 0.0 +2 7 0.5 +3 3 0.2 +3 4 0.4 +3 9 0.4 +4 3 0.4 +4 4 0.2 +4 9 0.4 +5 5 0.0 +5 6 1.0 +6 6 0.0 +6 9 1.0 +7 7 0.0 +7 8 1.0 +8 8 0.0 +8 9 1.0 +9 9 0.8 +9 10 0.1 +9 11 0.1 +10 10 0.9 +10 11 0.1 +11 10 0.1 +11 11 0.9 diff --git a/test/functional/parser/tra_files/autoParser/dtmcWhitespaces2.tra b/test/functional/parser/tra_files/autoParser/dtmcWhitespaces2.tra new file mode 100644 index 000000000..20f9e332c --- /dev/null +++ b/test/functional/parser/tra_files/autoParser/dtmcWhitespaces2.tra @@ -0,0 +1,36 @@ +dtmc + + + +0 0 0.6 +0 1 0.1 +0 2 0.1 +0 3 0.1 +0 4 0.1 +1 1 0.0 +1 2 0.5 +1 5 0.5 +2 1 0.5 +2 2 0.0 +2 7 0.5 +3 3 0.2 +3 4 0.4 +3 9 0.4 +4 3 0.4 +4 4 0.2 +4 9 0.4 +5 5 0.0 +5 6 1.0 +6 6 0.0 +6 9 1.0 +7 7 0.0 +7 8 1.0 +8 8 0.0 +8 9 1.0 +9 9 0.8 +9 10 0.1 +9 11 0.1 +10 10 0.9 +10 11 0.1 +11 10 0.1 +11 11 0.9 diff --git a/test/functional/parser/tra_files/autoParser/ma.tra b/test/functional/parser/tra_files/autoParser/ma.tra new file mode 100644 index 000000000..5bfb60167 --- /dev/null +++ b/test/functional/parser/tra_files/autoParser/ma.tra @@ -0,0 +1,49 @@ +mA +0 ! +* 0 0 +* 1 12 +* 2 12 +* 3 10 +* 4 10 +1 d1 +* 1 0.0 +* 2 0.5 +* 5 0.5 +2 d2 +* 1 0.5 +* 2 0.0 +* 7 0.5 +2 !! +* 0 0.1 +* 1 0.9 +* 2 0.0 +3 ! +* 3 2 +* 4 4 +* 9 4 +4 ! +* 3 4 +* 4 2 +* 9 4 +5 d3 +* 5 0.0 +* 6 1.0 +6 d4 +* 6 0.0 +* 9 1.0 +7 d5 +* 7 0.0 +* 8 1.0 +8 d6 +* 8 0.0 +* 9 1.0 +9 ! +* 9 8 +* 10 1 +* 11 1 +10 ! +* 10 9 +* 11 1 +11 ! +* 10 1 +* 11 9 diff --git a/test/functional/parser/tra_files/autoParser/mdp.tra b/test/functional/parser/tra_files/autoParser/mdp.tra new file mode 100644 index 000000000..949fc4d3a --- /dev/null +++ b/test/functional/parser/tra_files/autoParser/mdp.tra @@ -0,0 +1,37 @@ +MdP +0 0 0 0.6 +0 0 1 0.1 +0 0 2 0.1 +0 0 3 0.1 +0 0 4 0.1 +0 1 0 0.0 +0 1 6 1.0 +1 0 1 0.0 +1 0 2 0.5 +1 0 5 0.5 +1 1 1 0.0 +1 1 8 1.0 +2 0 1 0.5 +2 0 2 0.0 +2 0 7 0.5 +3 0 3 0.2 +3 0 4 0.4 +3 0 9 0.4 +4 0 3 0.4 +4 0 4 0.2 +4 0 9 0.4 +5 0 5 0.0 +5 0 6 1.0 +6 0 6 0.0 +6 0 9 1.0 +7 0 7 0.0 +7 0 8 1.0 +8 0 8 0.0 +8 0 9 1.0 +9 0 9 1.0 +9 1 10 1.0 +9 2 11 1.0 +10 0 10 0.9 +10 0 11 0.1 +11 0 10 0.1 +11 0 11 0.9 diff --git a/test/functional/parser/tra_files/autoParser/noHint.tra b/test/functional/parser/tra_files/autoParser/noHint.tra new file mode 100644 index 000000000..bf89a47f3 --- /dev/null +++ b/test/functional/parser/tra_files/autoParser/noHint.tra @@ -0,0 +1,32 @@ +0 0 0.6 +0 1 0.1 +0 2 0.1 +0 3 0.1 +0 4 0.1 +1 1 0.0 +1 2 0.5 +1 5 0.5 +2 1 0.5 +2 2 0.0 +2 7 0.5 +3 3 0.2 +3 4 0.4 +3 9 0.4 +4 3 0.4 +4 4 0.2 +4 9 0.4 +5 5 0.0 +5 6 1.0 +6 6 0.0 +6 9 1.0 +7 7 0.0 +7 8 1.0 +8 8 0.0 +8 9 1.0 +9 9 0.8 +9 10 0.1 +9 11 0.1 +10 10 0.9 +10 11 0.1 +11 10 0.1 +11 11 0.9 diff --git a/test/functional/parser/tra_files/autoParser/wrongHint.tra b/test/functional/parser/tra_files/autoParser/wrongHint.tra new file mode 100644 index 000000000..b97d124b1 --- /dev/null +++ b/test/functional/parser/tra_files/autoParser/wrongHint.tra @@ -0,0 +1,33 @@ +DiscreteTimeMarkovChain +0 0 0.6 +0 1 0.1 +0 2 0.1 +0 3 0.1 +0 4 0.1 +1 1 0.0 +1 2 0.5 +1 5 0.5 +2 1 0.5 +2 2 0.0 +2 7 0.5 +3 3 0.2 +3 4 0.4 +3 9 0.4 +4 3 0.4 +4 4 0.2 +4 9 0.4 +5 5 0.0 +5 6 1.0 +6 6 0.0 +6 9 1.0 +7 7 0.0 +7 8 1.0 +8 8 0.0 +8 9 1.0 +9 9 0.8 +9 10 0.1 +9 11 0.1 +10 10 0.9 +10 11 0.1 +11 10 0.1 +11 11 0.9 diff --git a/test/functional/parser/tra_files/csl_general.tra b/test/functional/parser/tra_files/csl_general.tra new file mode 100644 index 000000000..f469385ea --- /dev/null +++ b/test/functional/parser/tra_files/csl_general.tra @@ -0,0 +1,11 @@ +dtmc +0 1 1.0 +1 1 0.080645161290322580645161290322581 +1 2 0.080645161290322580645161290322581 +2 1 0.04032258064516129032258064516129 +2 2 0.04032258064516129032258064516129 +2 3 0.04032258064516129032258064516129 +2 4 0.04032258064516129032258064516129 +3 2 0.080645161290322580645161290322581 +3 4 0.080645161290322580645161290322581 +4 0 1.0 \ No newline at end of file diff --git a/test/functional/parser/tra_files/dtmc_actionTest.tra b/test/functional/parser/tra_files/dtmc_actionTest.tra new file mode 100644 index 000000000..8a228e95a --- /dev/null +++ b/test/functional/parser/tra_files/dtmc_actionTest.tra @@ -0,0 +1,22 @@ +dtmc +0 0 0 +0 1 0.5 +0 2 0.5 +1 1 0 +1 2 0.5 +1 3 0.5 +2 2 0 +2 3 0.4 +2 5 0.6 +3 3 0.7 +3 4 0.2 +3 6 0.1 +4 2 0.4 +4 3 0.5 +4 4 0 +4 7 0.1 +5 5 1 +6 6 0.8 +6 7 0.2 +7 6 0.1 +7 7 0.9 diff --git a/test/functional/parser/tra_files/dtmc_deadlock.tra b/test/functional/parser/tra_files/dtmc_deadlock.tra new file mode 100644 index 000000000..1eb5878ba --- /dev/null +++ b/test/functional/parser/tra_files/dtmc_deadlock.tra @@ -0,0 +1,17 @@ +0 1 1 +1 2 0.5 +1 3 0.5 +2 3 0.4 +2 4 0.4 +2 5 0.2 +3 3 1 +4 3 1 +5 3 0.1 +5 4 0.1 +5 5 0.1 +5 6 0.7 +6 0 0.9 +6 5 0 +6 6 0.1 +8 6 0.224653 +8 7 0.775347 diff --git a/test/functional/parser/tra_files/dtmc_doubledLines.tra b/test/functional/parser/tra_files/dtmc_doubledLines.tra new file mode 100644 index 000000000..9d1dd7fa5 --- /dev/null +++ b/test/functional/parser/tra_files/dtmc_doubledLines.tra @@ -0,0 +1,20 @@ +dTmC +0 1 1 +1 2 0.5 +1 3 0.5 +2 3 0.4 +2 4 0.4 +2 5 0.2 +3 3 1 +4 3 1 +4 3 1 +5 3 0.1 +5 4 0.1 +5 5 0.1 +5 6 0.7 +5 3 0.1 +6 0 0.9 +6 5 0 +6 6 0.1 +7 6 0.224653 +7 7 0.775347 diff --git a/test/functional/parser/tra_files/dtmc_general.tra b/test/functional/parser/tra_files/dtmc_general.tra new file mode 100644 index 000000000..dd5765d14 --- /dev/null +++ b/test/functional/parser/tra_files/dtmc_general.tra @@ -0,0 +1,18 @@ +dTmC +0 1 1 +1 2 0.5 +1 3 0.5 +2 3 0.4 +2 4 0.4 +2 5 0.2 +3 3 1 +4 3 1 +5 3 0.1 +5 4 0.1 +5 5 0.1 +5 6 0.7 +6 0 0.9 +6 5 0 +6 6 0.1 +7 6 0.224653 +7 7 0.775347 diff --git a/test/functional/parser/tra_files/dtmc_mismatched.tra b/test/functional/parser/tra_files/dtmc_mismatched.tra new file mode 100644 index 000000000..481b03dbc --- /dev/null +++ b/test/functional/parser/tra_files/dtmc_mismatched.tra @@ -0,0 +1,16 @@ +dTmC +0 1 1 +1 2 0.5 +1 3 0.5 +2 3 0.4 +2 4 0.4 +2 5 0.2 +3 3 1 +4 3 1 +5 3 0.1 +5 4 0.1 +5 5 0.1 +5 6 0.7 +6 0 0.9 +6 5 0 +6 6 0.1 diff --git a/test/functional/parser/tra_files/dtmc_mixedStateOrder.tra b/test/functional/parser/tra_files/dtmc_mixedStateOrder.tra new file mode 100644 index 000000000..b64bd5157 --- /dev/null +++ b/test/functional/parser/tra_files/dtmc_mixedStateOrder.tra @@ -0,0 +1,18 @@ +dTmC +0 1 1 +1 2 0.5 +1 3 0.5 +2 3 0.4 +2 4 0.4 +2 5 0.2 +3 3 1 +5 3 0.1 +5 4 0.1 +5 5 0.1 +5 6 0.7 +4 3 1 +6 0 0.9 +6 5 0 +6 6 0.1 +7 6 0.224653 +7 7 0.775347 diff --git a/test/functional/parser/tra_files/dtmc_mixedTransitionOrder.tra b/test/functional/parser/tra_files/dtmc_mixedTransitionOrder.tra new file mode 100644 index 000000000..c8b28d7d1 --- /dev/null +++ b/test/functional/parser/tra_files/dtmc_mixedTransitionOrder.tra @@ -0,0 +1,18 @@ +dTmC +0 1 1 +1 3 0.5 +1 2 0.5 +2 5 0.2 +2 3 0.4 +2 4 0.4 +3 3 1 +4 3 1 +5 6 0.7 +5 3 0.1 +5 5 0.1 +5 4 0.1 +6 0 0.9 +6 5 0 +6 6 0.1 +7 7 0.775347 +7 6 0.224653 diff --git a/test/functional/parser/tra_files/dtmc_whitespaces.tra b/test/functional/parser/tra_files/dtmc_whitespaces.tra new file mode 100644 index 000000000..96614a678 --- /dev/null +++ b/test/functional/parser/tra_files/dtmc_whitespaces.tra @@ -0,0 +1,27 @@ +dTmC + + + + +0 1 1 + 1 2 0.5 + 1 3 0.5 + 2 3 0.4 +2 4 0.4 +2 5 0.2 + 3 3 1 + 4 3 1 +5 3 0.1 +5 4 0.1 +5 5 0.1 + 5 6 0.7 + + +6 0 0.9 +6 5 0 +6 6 0.1 + 7 6 0.224653 +7 7 0.775347 + + + diff --git a/test/functional/parser/tra_files/ma_cslFilterTest.tra b/test/functional/parser/tra_files/ma_cslFilterTest.tra new file mode 100644 index 000000000..4e13e3a46 --- /dev/null +++ b/test/functional/parser/tra_files/ma_cslFilterTest.tra @@ -0,0 +1,30 @@ +ma +0 a +* 1 0.5 +* 2 0.5 +0 b +* 0 0.5 +* 3 0.5 +1 ! +* 2 1 +* 4 5 +* 7 2 +2 a +* 2 1 +2 b +* 5 1 +3 a +* 2 0.1 +* 3 0.9 +4 ! +* 2 1 +* 3 0.1 +* 6 5 +* 7 10 +5 ! +* 4 1 +* 6 5 +6 tau +* 6 1 +7 ! +* 7 10 diff --git a/test/functional/parser/tra_files/ma_deadlock.tra b/test/functional/parser/tra_files/ma_deadlock.tra new file mode 100644 index 000000000..7677e72f8 --- /dev/null +++ b/test/functional/parser/tra_files/ma_deadlock.tra @@ -0,0 +1,20 @@ +ma +0 ! +* 1 2 +1 aBBa +* 2 1 +2 ! +* 0 1 +* 1 2 +* 3 4 +* 4 8 +3 2a +* 2 0.5 +* 3 0.5 +4 2 +* 3 1 +4 !3 +* 5 0.5 +* 6 0.5 +6 &a3_ +* 5 1 diff --git a/test/functional/parser/tra_files/ma_general.tra b/test/functional/parser/tra_files/ma_general.tra new file mode 100644 index 000000000..4bbeae906 --- /dev/null +++ b/test/functional/parser/tra_files/ma_general.tra @@ -0,0 +1,20 @@ +ma +0 ! +* 1 2 +1 aBBa +* 2 1 +2 ! +* 0 1 +* 1 2 +* 3 4 +* 4 8 +3 2a +* 2 0.5 +* 3 0.5 +4 2 +* 3 1 +4 !3 +* 1 0.5 +* 5 0.5 +5 &a3_ +* 5 1 diff --git a/test/functional/parser/tra_files/ma_whitespaces.tra b/test/functional/parser/tra_files/ma_whitespaces.tra new file mode 100644 index 000000000..0465b4521 --- /dev/null +++ b/test/functional/parser/tra_files/ma_whitespaces.tra @@ -0,0 +1,23 @@ +ma + 0 ! + * 1 2 +1 a +* 2 1 +2 ! +* 0 1 + * 1 2 +* 3 4 +* 4 8 + +3 a +* 2 0.5 +* 3 0.5 +4 a +* 3 1 +4 b + +* 1 0.5 +* 5 0.5 +5 a +* 5 1 + diff --git a/test/functional/parser/tra_files/mdp_deadlock.tra b/test/functional/parser/tra_files/mdp_deadlock.tra new file mode 100644 index 000000000..4fdab8f90 --- /dev/null +++ b/test/functional/parser/tra_files/mdp_deadlock.tra @@ -0,0 +1,23 @@ +mdp +0 0 0 0.9 +0 0 1 0.1 +0 1 1 0.2 +0 1 2 0.2 +0 1 3 0.2 +0 1 4 0.2 +0 1 5 0.2 +0 2 5 1 +0 3 0 0.1 +0 3 4 0.9 +1 0 2 1 +2 0 2 0.5 +2 0 3 0.5 +2 1 2 1 +3 0 2 0.001 +3 0 3 0.999 +4 0 1 0.7 +4 0 4 0.3 +6 0 1 0.2 +6 0 4 0.2 +6 0 5 0.6 +6 1 5 1 diff --git a/test/functional/parser/tra_files/mdp_doubledLines.tra b/test/functional/parser/tra_files/mdp_doubledLines.tra new file mode 100644 index 000000000..ed4578705 --- /dev/null +++ b/test/functional/parser/tra_files/mdp_doubledLines.tra @@ -0,0 +1,25 @@ +mdp +0 0 0 0.9 +0 0 1 0.1 +0 1 1 0.2 +0 1 2 0.2 +0 1 3 0.2 +0 1 4 0.2 +0 1 4 0.2 +0 1 5 0.2 +0 2 5 1 +0 3 0 0.1 +0 3 4 0.9 +1 0 2 1 +0 1 4 0.2 +2 0 2 0.5 +2 0 3 0.5 +2 1 2 1 +3 0 2 0.001 +3 0 3 0.999 +4 0 1 0.7 +4 0 4 0.3 +5 0 1 0.2 +5 0 4 0.2 +5 0 5 0.6 +5 1 5 1 diff --git a/test/functional/parser/tra_files/mdp_general.tra b/test/functional/parser/tra_files/mdp_general.tra new file mode 100644 index 000000000..c8dedf19f --- /dev/null +++ b/test/functional/parser/tra_files/mdp_general.tra @@ -0,0 +1,23 @@ +mdp +0 0 0 0.9 +0 0 1 0.1 +0 1 1 0.2 +0 1 2 0.2 +0 1 3 0.2 +0 1 4 0.2 +0 1 5 0.2 +0 2 5 1 +0 3 0 0.1 +0 3 4 0.9 +1 0 2 1 +2 0 2 0.5 +2 0 3 0.5 +2 1 2 1 +3 0 2 0.001 +3 0 3 0.999 +4 0 1 0.7 +4 0 4 0.3 +5 0 1 0.2 +5 0 4 0.2 +5 0 5 0.6 +5 1 5 1 diff --git a/test/functional/parser/tra_files/mdp_mismatched.tra b/test/functional/parser/tra_files/mdp_mismatched.tra new file mode 100644 index 000000000..51c759d06 --- /dev/null +++ b/test/functional/parser/tra_files/mdp_mismatched.tra @@ -0,0 +1,18 @@ +mdp +0 0 0 0.9 +0 0 1 0.1 +0 1 1 0.2 +0 1 2 0.2 +0 1 3 0.2 +0 1 4 0.2 +0 2 4 1 +0 3 0 0.1 +0 3 4 0.9 +1 0 2 1 +2 0 2 0.5 +2 0 3 0.5 +2 1 2 1 +3 0 2 0.001 +3 0 3 0.999 +4 0 1 0.7 +4 0 4 0.3 diff --git a/test/functional/parser/tra_files/mdp_mixedStateOrder.tra b/test/functional/parser/tra_files/mdp_mixedStateOrder.tra new file mode 100644 index 000000000..ac08c7f05 --- /dev/null +++ b/test/functional/parser/tra_files/mdp_mixedStateOrder.tra @@ -0,0 +1,23 @@ +mdp +0 0 0 0.9 +0 0 1 0.1 +0 1 1 0.2 +0 1 2 0.2 +0 1 3 0.2 +0 1 4 0.2 +0 1 5 0.2 +0 2 5 1 +0 3 0 0.1 +0 3 4 0.9 +2 0 2 0.5 +2 0 3 0.5 +2 1 2 1 +1 0 2 1 +3 0 2 0.001 +3 0 3 0.999 +4 0 1 0.7 +4 0 4 0.3 +5 0 1 0.2 +5 0 4 0.2 +5 0 5 0.6 +5 1 5 1 diff --git a/test/functional/parser/tra_files/mdp_mixedTransitionOrder.tra b/test/functional/parser/tra_files/mdp_mixedTransitionOrder.tra new file mode 100644 index 000000000..533a90839 --- /dev/null +++ b/test/functional/parser/tra_files/mdp_mixedTransitionOrder.tra @@ -0,0 +1,23 @@ +mdp +0 0 0 0.9 +0 0 1 0.1 +0 1 1 0.2 +0 1 3 0.2 +0 1 2 0.2 +0 1 4 0.2 +0 1 5 0.2 +0 2 5 1 +0 3 0 0.1 +0 3 4 0.9 +1 0 2 1 +2 0 2 0.5 +2 0 3 0.5 +2 1 2 1 +3 0 2 0.001 +3 0 3 0.999 +4 0 1 0.7 +4 0 4 0.3 +5 0 1 0.2 +5 0 4 0.2 +5 0 5 0.6 +5 1 5 1 diff --git a/test/functional/parser/tra_files/mdp_whitespaces.tra b/test/functional/parser/tra_files/mdp_whitespaces.tra new file mode 100644 index 000000000..82eeab8e3 --- /dev/null +++ b/test/functional/parser/tra_files/mdp_whitespaces.tra @@ -0,0 +1,28 @@ +mdp + + +0 0 0 0.9 + + + 0 0 1 0.1 + 0 1 1 0.2 + 0 1 2 0.2 + 0 1 3 0.2 + 0 1 4 0.2 + 0 1 5 0.2 + 0 2 5 1 + 0 3 0 0.1 + 0 3 4 0.9 + 1 0 2 1 +2 0 2 0.5 +2 0 3 0.5 +2 1 2 1 + + 3 0 2 0.001 +3 0 3 0.999 +4 0 1 0.7 + 4 0 4 0.3 +5 0 1 0.2 +5 0 4 0.2 +5 0 5 0.6 +5 1 5 1 diff --git a/test/functional/parser/tra_files/pctl_general.tra b/test/functional/parser/tra_files/pctl_general.tra new file mode 100644 index 000000000..d2b79596d --- /dev/null +++ b/test/functional/parser/tra_files/pctl_general.tra @@ -0,0 +1,28 @@ +dtmc +0 1 1.0 +1 1 0.0 +1 3 0.5 +1 4 0.5 +2 1 0.3 +2 2 0.0 +2 7 0.7 +3 2 0.05 +3 3 0.7 +3 6 0.05 +3 8 0.2 +4 1 0.3 +4 4 0.0 +4 5 0.3 +4 6 0.4 +5 4 1.0 +5 5 0.0 +6 6 0.0 +6 7 1.0 +7 2 0.2 +7 6 0.8 +8 9 1 +9 8 0.3 +9 9 0.7 +10 4 1.0 +11 5 0.7 +11 9 0.3 \ No newline at end of file diff --git a/test/functional/parser/tra_files/wrong_format_header1.tra b/test/functional/parser/tra_files/wrong_format_header1.tra new file mode 100644 index 000000000..896ac2d04 --- /dev/null +++ b/test/functional/parser/tra_files/wrong_format_header1.tra @@ -0,0 +1,4 @@ +dtmc +STATSE 2 +TRANSITOINS 1 +1 2 0.5 diff --git a/test/functional/parser/tra_files/wrong_format_header2.tra b/test/functional/parser/tra_files/wrong_format_header2.tra new file mode 100644 index 000000000..5611fbb4e --- /dev/null +++ b/test/functional/parser/tra_files/wrong_format_header2.tra @@ -0,0 +1,4 @@ +dtmc +STATES 0.2 +TRANSITOINS 1 +1 2 0.5 diff --git a/test/functional/parser/tra_files/wrong_format_transition.tra b/test/functional/parser/tra_files/wrong_format_transition.tra new file mode 100644 index 000000000..496b5bfe5 --- /dev/null +++ b/test/functional/parser/tra_files/wrong_format_transition.tra @@ -0,0 +1,8 @@ +dtmc +STATES 5 +TRANSITIONS 5 +0.5 1 2 +2 1 0.9 +2 3 0.2 +3 4 0.5 +4 3 0.1 \ No newline at end of file