From 3ce8643d96ce48404c324b698a971078123f5a50 Mon Sep 17 00:00:00 2001 From: TimQu Date: Sun, 17 Jan 2016 16:32:09 +0100 Subject: [PATCH] Added benchmarks Former-commit-id: 6979a9aecee98ac32f2be5a68cebc62f8ad574bd --- examples/benchmarkRegions.sh | 41 ++ examples/pdtmc/brp/brp.pm | 135 ++++ examples/pdtmc/brp/models | 5 + .../brp_rewards/brp_rewards_rew_regions.txt | 625 ------------------ .../pdtmc/brp_rewards2/brp_rewards16_2.pm | 146 ++++ examples/pdtmc/brp_rewards2/brp_rewards2.pm | 146 ++++ .../brp_rewards2.prctl} | 0 .../pdtmc/brp_rewards2/brp_rewards256_5.pm | 147 ++++ .../brp_rewards2_regions.txt} | 0 .../pdtmc/brp_rewards2/brp_rewards512_5.pm | 147 ++++ .../pdtmc/brp_rewards2/brp_rewards64_4.pm | 147 ++++ examples/pdtmc/brp_rewards2/models | 4 + .../brp_rewards16_2.pm | 0 .../brp_rewards256_5.pm | 0 examples/pdtmc/brp_rewards4/brp_rewards4.pm | 146 ++++ .../pdtmc/brp_rewards4/brp_rewards4.prctl | 2 + .../brp_rewards4_regions.txt} | 0 .../brp_rewards512_5.pm | 0 .../brp_rewards64_4.pm | 0 examples/pdtmc/brp_rewards4/models | 2 + examples/pdtmc/crowds/crowds.pm | 194 ++++++ examples/pdtmc/crowds/models | 2 + examples/pdtmc/nand/models | 3 + examples/pdtmc/nand/nand.pm | 75 +++ examples/pdtmc/tiny/tiny.pm | 16 - examples/pmdp/brp/brp.pm | 139 ++++ examples/pmdp/brp/models | 4 + examples/pmdp/coin2/coin2.pm | 56 ++ .../{coin/coin.prctl => coin2/coin2.prctl} | 0 examples/pmdp/{coin => coin2}/coin2_128.pm | 0 examples/pmdp/{coin => coin2}/coin2_16.pm | 0 examples/pmdp/{coin => coin2}/coin2_2.pm | 0 examples/pmdp/{coin => coin2}/coin2_32.pm | 0 examples/pmdp/{coin => coin2}/coin2_4.pm | 0 examples/pmdp/{coin => coin2}/coin2_64.pm | 0 examples/pmdp/{coin => coin2}/coin2_7.pm | 0 examples/pmdp/{coin => coin2}/coin2_8.pm | 0 .../pmdp/{coin => coin2}/coin2_regions.txt | 0 examples/pmdp/coin2/models | 5 + examples/pmdp/coin4/coin2.prctl | 4 + examples/pmdp/coin4/coin4.pm | 61 ++ examples/pmdp/{coin => coin4}/coin4_16.pm | 0 examples/pmdp/{coin => coin4}/coin4_2.pm | 0 examples/pmdp/{coin => coin4}/coin4_32.pm | 0 examples/pmdp/{coin => coin4}/coin4_4.pm | 0 examples/pmdp/{coin => coin4}/coin4_64.pm | 0 examples/pmdp/{coin => coin4}/coin4_8.pm | 0 .../pmdp/{coin => coin4}/coin4_regions.txt | 0 examples/pmdp/coin4/models | 3 + .../{firewire.prop => firewire.prctl} | 0 .../firewire/{firewire_3.pm => firewire3.pm} | 0 .../{firewire_36.pm => firewire36.pm} | 0 examples/pmdp/firewire/firewire_regions.txt | 625 ++++++++++++++++++ examples/pmdp/janitor/janitor.pm | 124 ++++ examples/pmdp/reporter2/models | 4 + examples/pmdp/reporter2/reporter2.pm | 73 ++ examples/pmdp/reporter2/reporter2.prctl | 1 + .../pmdp/reporter2/reporter2_25_25_5_5.pm | 73 ++ examples/pmdp/reporter2/reporter2_6_6_2_2.pm | 73 ++ examples/pmdp/reporter2/reporter2_regions.txt | 625 ++++++++++++++++++ examples/pmdp/reporter4/models | 3 + examples/pmdp/reporter4/reporter25_25_5_5.pm | 73 ++ examples/pmdp/reporter4/reporter4.pm | 73 ++ examples/pmdp/reporter4/reporter4.prctl | 1 + examples/pmdp/reporter4/reporter4_regions.txt | 625 ++++++++++++++++++ examples/pmdp/reporter4/reporter6_6_2_2.pm | 73 ++ examples/pmdp/zeroconf/models | 4 + examples/pmdp/zeroconf/zeroconf.pm | 258 ++++++++ .../{zeroconf.prop => zeroconf.prctl} | 0 .../zeroconf/{zeroconf_2.nm => zeroconf2.pm} | 0 examples/pmdp/zeroconf/zeroconf3.pm | 258 ++++++++ .../zeroconf/{zeroconf_4.nm => zeroconf4.pm} | 0 examples/pmdp/zeroconf/zeroconf5.pm | 258 ++++++++ .../zeroconf/{zeroconf_6.nm => zeroconf6.pm} | 0 examples/pmdp/zeroconf/zeroconf7.pm | 258 ++++++++ .../zeroconf/{zeroconf_8.nm => zeroconf8.pm} | 0 examples/pmdp/zeroconf/zeroconf_regions.txt | 625 ++++++++++++++++++ .../AbstractSparseRegionModelChecker.cpp | 1 + .../SparseDtmcRegionModelCheckerTest.cpp | 6 +- .../SparseMdpRegionModelCheckerTest.cpp | 2 +- 80 files changed, 5726 insertions(+), 645 deletions(-) create mode 100755 examples/benchmarkRegions.sh create mode 100644 examples/pdtmc/brp/brp.pm create mode 100644 examples/pdtmc/brp/models delete mode 100644 examples/pdtmc/brp_rewards/brp_rewards_rew_regions.txt create mode 100644 examples/pdtmc/brp_rewards2/brp_rewards16_2.pm create mode 100644 examples/pdtmc/brp_rewards2/brp_rewards2.pm rename examples/pdtmc/{brp_rewards/brp_rewards.prctl => brp_rewards2/brp_rewards2.prctl} (100%) create mode 100644 examples/pdtmc/brp_rewards2/brp_rewards256_5.pm rename examples/pdtmc/{brp_rewards/brp_rewards_prob_regions.txt => brp_rewards2/brp_rewards2_regions.txt} (100%) create mode 100644 examples/pdtmc/brp_rewards2/brp_rewards512_5.pm create mode 100644 examples/pdtmc/brp_rewards2/brp_rewards64_4.pm create mode 100644 examples/pdtmc/brp_rewards2/models rename examples/pdtmc/{brp_rewards => brp_rewards4}/brp_rewards16_2.pm (100%) rename examples/pdtmc/{brp_rewards => brp_rewards4}/brp_rewards256_5.pm (100%) create mode 100644 examples/pdtmc/brp_rewards4/brp_rewards4.pm create mode 100644 examples/pdtmc/brp_rewards4/brp_rewards4.prctl rename examples/pdtmc/{brp_rewards/brp_rewards_regions.txt => brp_rewards4/brp_rewards4_regions.txt} (100%) rename examples/pdtmc/{brp_rewards => brp_rewards4}/brp_rewards512_5.pm (100%) rename examples/pdtmc/{brp_rewards => brp_rewards4}/brp_rewards64_4.pm (100%) create mode 100644 examples/pdtmc/brp_rewards4/models create mode 100644 examples/pdtmc/crowds/crowds.pm create mode 100644 examples/pdtmc/crowds/models create mode 100644 examples/pdtmc/nand/models create mode 100644 examples/pdtmc/nand/nand.pm delete mode 100644 examples/pdtmc/tiny/tiny.pm create mode 100644 examples/pmdp/brp/brp.pm create mode 100644 examples/pmdp/brp/models create mode 100644 examples/pmdp/coin2/coin2.pm rename examples/pmdp/{coin/coin.prctl => coin2/coin2.prctl} (100%) rename examples/pmdp/{coin => coin2}/coin2_128.pm (100%) rename examples/pmdp/{coin => coin2}/coin2_16.pm (100%) rename examples/pmdp/{coin => coin2}/coin2_2.pm (100%) rename examples/pmdp/{coin => coin2}/coin2_32.pm (100%) rename examples/pmdp/{coin => coin2}/coin2_4.pm (100%) rename examples/pmdp/{coin => coin2}/coin2_64.pm (100%) rename examples/pmdp/{coin => coin2}/coin2_7.pm (100%) rename examples/pmdp/{coin => coin2}/coin2_8.pm (100%) rename examples/pmdp/{coin => coin2}/coin2_regions.txt (100%) create mode 100644 examples/pmdp/coin2/models create mode 100644 examples/pmdp/coin4/coin2.prctl create mode 100644 examples/pmdp/coin4/coin4.pm rename examples/pmdp/{coin => coin4}/coin4_16.pm (100%) rename examples/pmdp/{coin => coin4}/coin4_2.pm (100%) rename examples/pmdp/{coin => coin4}/coin4_32.pm (100%) rename examples/pmdp/{coin => coin4}/coin4_4.pm (100%) rename examples/pmdp/{coin => coin4}/coin4_64.pm (100%) rename examples/pmdp/{coin => coin4}/coin4_8.pm (100%) rename examples/pmdp/{coin => coin4}/coin4_regions.txt (100%) create mode 100644 examples/pmdp/coin4/models rename examples/pmdp/firewire/{firewire.prop => firewire.prctl} (100%) rename examples/pmdp/firewire/{firewire_3.pm => firewire3.pm} (100%) rename examples/pmdp/firewire/{firewire_36.pm => firewire36.pm} (100%) create mode 100644 examples/pmdp/firewire/firewire_regions.txt create mode 100644 examples/pmdp/janitor/janitor.pm create mode 100644 examples/pmdp/reporter2/models create mode 100644 examples/pmdp/reporter2/reporter2.pm create mode 100644 examples/pmdp/reporter2/reporter2.prctl create mode 100644 examples/pmdp/reporter2/reporter2_25_25_5_5.pm create mode 100644 examples/pmdp/reporter2/reporter2_6_6_2_2.pm create mode 100644 examples/pmdp/reporter2/reporter2_regions.txt create mode 100644 examples/pmdp/reporter4/models create mode 100644 examples/pmdp/reporter4/reporter25_25_5_5.pm create mode 100644 examples/pmdp/reporter4/reporter4.pm create mode 100644 examples/pmdp/reporter4/reporter4.prctl create mode 100644 examples/pmdp/reporter4/reporter4_regions.txt create mode 100644 examples/pmdp/reporter4/reporter6_6_2_2.pm create mode 100644 examples/pmdp/zeroconf/models create mode 100644 examples/pmdp/zeroconf/zeroconf.pm rename examples/pmdp/zeroconf/{zeroconf.prop => zeroconf.prctl} (100%) rename examples/pmdp/zeroconf/{zeroconf_2.nm => zeroconf2.pm} (100%) create mode 100644 examples/pmdp/zeroconf/zeroconf3.pm rename examples/pmdp/zeroconf/{zeroconf_4.nm => zeroconf4.pm} (100%) create mode 100644 examples/pmdp/zeroconf/zeroconf5.pm rename examples/pmdp/zeroconf/{zeroconf_6.nm => zeroconf6.pm} (100%) create mode 100644 examples/pmdp/zeroconf/zeroconf7.pm rename examples/pmdp/zeroconf/{zeroconf_8.nm => zeroconf8.pm} (100%) create mode 100644 examples/pmdp/zeroconf/zeroconf_regions.txt diff --git a/examples/benchmarkRegions.sh b/examples/benchmarkRegions.sh new file mode 100755 index 000000000..0cc0d7a62 --- /dev/null +++ b/examples/benchmarkRegions.sh @@ -0,0 +1,41 @@ +#!/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 + +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") + declare -a models=( "zeroconf" "reporter2" "reporter4") + dobisim="" +fi + for model in "${models[@]}" + do + modelfolder="$DIR/$modeltype/$model" + while read instance; + do + + echo "Working on $modelfolder/$instance" + echo >> $1 + echo "-------------------------------------------------------------" >> $1 + echo "---- WORKING ON: $modelfolder/$instance ----" >>$1 + echo "-------------------------------------------------------------" >> $1 + "$executable" -s $modelfolder/$instance $dobisim --prop $modelfolder/$model.prctl --parametric --parametricRegion --region:regionfile $modelfolder/$model"_regions.txt" >> $1 + done < "$modelfolder/models" + + done +done +fi diff --git a/examples/pdtmc/brp/brp.pm b/examples/pdtmc/brp/brp.pm new file mode 100644 index 000000000..897f9909e --- /dev/null +++ b/examples/pdtmc/brp/brp.pm @@ -0,0 +1,135 @@ +// 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 diff --git a/examples/pdtmc/brp/models b/examples/pdtmc/brp/models new file mode 100644 index 000000000..15dc2b545 --- /dev/null +++ b/examples/pdtmc/brp/models @@ -0,0 +1,5 @@ +brp.pm -const N=256,MAX=5 +brp.pm -const N=512,MAX=5 +brp.pm -const N=1024,MAX=5 + + diff --git a/examples/pdtmc/brp_rewards/brp_rewards_rew_regions.txt b/examples/pdtmc/brp_rewards/brp_rewards_rew_regions.txt deleted file mode 100644 index 0028fd844..000000000 --- a/examples/pdtmc/brp_rewards/brp_rewards_rew_regions.txt +++ /dev/null @@ -1,625 +0,0 @@ -0.000010<=TOMsg<=0.040000, 0.000010<=TOAck<=0.040000; -0.000010<=TOMsg<=0.040000, 0.040000<=TOAck<=0.080000; -0.000010<=TOMsg<=0.040000, 0.080000<=TOAck<=0.120000; -0.000010<=TOMsg<=0.040000, 0.120000<=TOAck<=0.160000; -0.000010<=TOMsg<=0.040000, 0.160000<=TOAck<=0.200000; -0.000010<=TOMsg<=0.040000, 0.200000<=TOAck<=0.240000; -0.000010<=TOMsg<=0.040000, 0.240000<=TOAck<=0.280000; -0.000010<=TOMsg<=0.040000, 0.280000<=TOAck<=0.320000; -0.000010<=TOMsg<=0.040000, 0.320000<=TOAck<=0.360000; -0.000010<=TOMsg<=0.040000, 0.360000<=TOAck<=0.400000; -0.000010<=TOMsg<=0.040000, 0.400000<=TOAck<=0.440000; -0.000010<=TOMsg<=0.040000, 0.440000<=TOAck<=0.480000; -0.000010<=TOMsg<=0.040000, 0.480000<=TOAck<=0.520000; -0.000010<=TOMsg<=0.040000, 0.520000<=TOAck<=0.560000; -0.000010<=TOMsg<=0.040000, 0.560000<=TOAck<=0.600000; -0.000010<=TOMsg<=0.040000, 0.600000<=TOAck<=0.640000; -0.000010<=TOMsg<=0.040000, 0.640000<=TOAck<=0.680000; -0.000010<=TOMsg<=0.040000, 0.680000<=TOAck<=0.720000; -0.000010<=TOMsg<=0.040000, 0.720000<=TOAck<=0.760000; -0.000010<=TOMsg<=0.040000, 0.760000<=TOAck<=0.800000; -0.000010<=TOMsg<=0.040000, 0.800000<=TOAck<=0.840000; -0.000010<=TOMsg<=0.040000, 0.840000<=TOAck<=0.880000; -0.000010<=TOMsg<=0.040000, 0.880000<=TOAck<=0.920000; -0.000010<=TOMsg<=0.040000, 0.920000<=TOAck<=0.960000; -0.000010<=TOMsg<=0.040000, 0.960000<=TOAck<=0.999990; -0.040000<=TOMsg<=0.080000, 0.000010<=TOAck<=0.040000; -0.040000<=TOMsg<=0.080000, 0.040000<=TOAck<=0.080000; -0.040000<=TOMsg<=0.080000, 0.080000<=TOAck<=0.120000; -0.040000<=TOMsg<=0.080000, 0.120000<=TOAck<=0.160000; -0.040000<=TOMsg<=0.080000, 0.160000<=TOAck<=0.200000; -0.040000<=TOMsg<=0.080000, 0.200000<=TOAck<=0.240000; -0.040000<=TOMsg<=0.080000, 0.240000<=TOAck<=0.280000; -0.040000<=TOMsg<=0.080000, 0.280000<=TOAck<=0.320000; -0.040000<=TOMsg<=0.080000, 0.320000<=TOAck<=0.360000; -0.040000<=TOMsg<=0.080000, 0.360000<=TOAck<=0.400000; -0.040000<=TOMsg<=0.080000, 0.400000<=TOAck<=0.440000; -0.040000<=TOMsg<=0.080000, 0.440000<=TOAck<=0.480000; -0.040000<=TOMsg<=0.080000, 0.480000<=TOAck<=0.520000; -0.040000<=TOMsg<=0.080000, 0.520000<=TOAck<=0.560000; -0.040000<=TOMsg<=0.080000, 0.560000<=TOAck<=0.600000; -0.040000<=TOMsg<=0.080000, 0.600000<=TOAck<=0.640000; -0.040000<=TOMsg<=0.080000, 0.640000<=TOAck<=0.680000; -0.040000<=TOMsg<=0.080000, 0.680000<=TOAck<=0.720000; -0.040000<=TOMsg<=0.080000, 0.720000<=TOAck<=0.760000; -0.040000<=TOMsg<=0.080000, 0.760000<=TOAck<=0.800000; -0.040000<=TOMsg<=0.080000, 0.800000<=TOAck<=0.840000; -0.040000<=TOMsg<=0.080000, 0.840000<=TOAck<=0.880000; -0.040000<=TOMsg<=0.080000, 0.880000<=TOAck<=0.920000; -0.040000<=TOMsg<=0.080000, 0.920000<=TOAck<=0.960000; -0.040000<=TOMsg<=0.080000, 0.960000<=TOAck<=0.999990; -0.080000<=TOMsg<=0.120000, 0.000010<=TOAck<=0.040000; -0.080000<=TOMsg<=0.120000, 0.040000<=TOAck<=0.080000; -0.080000<=TOMsg<=0.120000, 0.080000<=TOAck<=0.120000; -0.080000<=TOMsg<=0.120000, 0.120000<=TOAck<=0.160000; -0.080000<=TOMsg<=0.120000, 0.160000<=TOAck<=0.200000; -0.080000<=TOMsg<=0.120000, 0.200000<=TOAck<=0.240000; -0.080000<=TOMsg<=0.120000, 0.240000<=TOAck<=0.280000; -0.080000<=TOMsg<=0.120000, 0.280000<=TOAck<=0.320000; -0.080000<=TOMsg<=0.120000, 0.320000<=TOAck<=0.360000; -0.080000<=TOMsg<=0.120000, 0.360000<=TOAck<=0.400000; -0.080000<=TOMsg<=0.120000, 0.400000<=TOAck<=0.440000; -0.080000<=TOMsg<=0.120000, 0.440000<=TOAck<=0.480000; -0.080000<=TOMsg<=0.120000, 0.480000<=TOAck<=0.520000; -0.080000<=TOMsg<=0.120000, 0.520000<=TOAck<=0.560000; -0.080000<=TOMsg<=0.120000, 0.560000<=TOAck<=0.600000; -0.080000<=TOMsg<=0.120000, 0.600000<=TOAck<=0.640000; -0.080000<=TOMsg<=0.120000, 0.640000<=TOAck<=0.680000; -0.080000<=TOMsg<=0.120000, 0.680000<=TOAck<=0.720000; -0.080000<=TOMsg<=0.120000, 0.720000<=TOAck<=0.760000; -0.080000<=TOMsg<=0.120000, 0.760000<=TOAck<=0.800000; -0.080000<=TOMsg<=0.120000, 0.800000<=TOAck<=0.840000; -0.080000<=TOMsg<=0.120000, 0.840000<=TOAck<=0.880000; -0.080000<=TOMsg<=0.120000, 0.880000<=TOAck<=0.920000; -0.080000<=TOMsg<=0.120000, 0.920000<=TOAck<=0.960000; -0.080000<=TOMsg<=0.120000, 0.960000<=TOAck<=0.999990; -0.120000<=TOMsg<=0.160000, 0.000010<=TOAck<=0.040000; -0.120000<=TOMsg<=0.160000, 0.040000<=TOAck<=0.080000; -0.120000<=TOMsg<=0.160000, 0.080000<=TOAck<=0.120000; -0.120000<=TOMsg<=0.160000, 0.120000<=TOAck<=0.160000; -0.120000<=TOMsg<=0.160000, 0.160000<=TOAck<=0.200000; -0.120000<=TOMsg<=0.160000, 0.200000<=TOAck<=0.240000; -0.120000<=TOMsg<=0.160000, 0.240000<=TOAck<=0.280000; -0.120000<=TOMsg<=0.160000, 0.280000<=TOAck<=0.320000; -0.120000<=TOMsg<=0.160000, 0.320000<=TOAck<=0.360000; -0.120000<=TOMsg<=0.160000, 0.360000<=TOAck<=0.400000; -0.120000<=TOMsg<=0.160000, 0.400000<=TOAck<=0.440000; -0.120000<=TOMsg<=0.160000, 0.440000<=TOAck<=0.480000; -0.120000<=TOMsg<=0.160000, 0.480000<=TOAck<=0.520000; -0.120000<=TOMsg<=0.160000, 0.520000<=TOAck<=0.560000; -0.120000<=TOMsg<=0.160000, 0.560000<=TOAck<=0.600000; -0.120000<=TOMsg<=0.160000, 0.600000<=TOAck<=0.640000; -0.120000<=TOMsg<=0.160000, 0.640000<=TOAck<=0.680000; -0.120000<=TOMsg<=0.160000, 0.680000<=TOAck<=0.720000; -0.120000<=TOMsg<=0.160000, 0.720000<=TOAck<=0.760000; -0.120000<=TOMsg<=0.160000, 0.760000<=TOAck<=0.800000; -0.120000<=TOMsg<=0.160000, 0.800000<=TOAck<=0.840000; -0.120000<=TOMsg<=0.160000, 0.840000<=TOAck<=0.880000; -0.120000<=TOMsg<=0.160000, 0.880000<=TOAck<=0.920000; -0.120000<=TOMsg<=0.160000, 0.920000<=TOAck<=0.960000; -0.120000<=TOMsg<=0.160000, 0.960000<=TOAck<=0.999990; -0.160000<=TOMsg<=0.200000, 0.000010<=TOAck<=0.040000; -0.160000<=TOMsg<=0.200000, 0.040000<=TOAck<=0.080000; -0.160000<=TOMsg<=0.200000, 0.080000<=TOAck<=0.120000; -0.160000<=TOMsg<=0.200000, 0.120000<=TOAck<=0.160000; -0.160000<=TOMsg<=0.200000, 0.160000<=TOAck<=0.200000; -0.160000<=TOMsg<=0.200000, 0.200000<=TOAck<=0.240000; -0.160000<=TOMsg<=0.200000, 0.240000<=TOAck<=0.280000; -0.160000<=TOMsg<=0.200000, 0.280000<=TOAck<=0.320000; -0.160000<=TOMsg<=0.200000, 0.320000<=TOAck<=0.360000; -0.160000<=TOMsg<=0.200000, 0.360000<=TOAck<=0.400000; -0.160000<=TOMsg<=0.200000, 0.400000<=TOAck<=0.440000; -0.160000<=TOMsg<=0.200000, 0.440000<=TOAck<=0.480000; -0.160000<=TOMsg<=0.200000, 0.480000<=TOAck<=0.520000; -0.160000<=TOMsg<=0.200000, 0.520000<=TOAck<=0.560000; -0.160000<=TOMsg<=0.200000, 0.560000<=TOAck<=0.600000; -0.160000<=TOMsg<=0.200000, 0.600000<=TOAck<=0.640000; -0.160000<=TOMsg<=0.200000, 0.640000<=TOAck<=0.680000; -0.160000<=TOMsg<=0.200000, 0.680000<=TOAck<=0.720000; -0.160000<=TOMsg<=0.200000, 0.720000<=TOAck<=0.760000; -0.160000<=TOMsg<=0.200000, 0.760000<=TOAck<=0.800000; -0.160000<=TOMsg<=0.200000, 0.800000<=TOAck<=0.840000; -0.160000<=TOMsg<=0.200000, 0.840000<=TOAck<=0.880000; -0.160000<=TOMsg<=0.200000, 0.880000<=TOAck<=0.920000; -0.160000<=TOMsg<=0.200000, 0.920000<=TOAck<=0.960000; -0.160000<=TOMsg<=0.200000, 0.960000<=TOAck<=0.999990; -0.200000<=TOMsg<=0.240000, 0.000010<=TOAck<=0.040000; -0.200000<=TOMsg<=0.240000, 0.040000<=TOAck<=0.080000; -0.200000<=TOMsg<=0.240000, 0.080000<=TOAck<=0.120000; -0.200000<=TOMsg<=0.240000, 0.120000<=TOAck<=0.160000; -0.200000<=TOMsg<=0.240000, 0.160000<=TOAck<=0.200000; -0.200000<=TOMsg<=0.240000, 0.200000<=TOAck<=0.240000; -0.200000<=TOMsg<=0.240000, 0.240000<=TOAck<=0.280000; -0.200000<=TOMsg<=0.240000, 0.280000<=TOAck<=0.320000; -0.200000<=TOMsg<=0.240000, 0.320000<=TOAck<=0.360000; -0.200000<=TOMsg<=0.240000, 0.360000<=TOAck<=0.400000; -0.200000<=TOMsg<=0.240000, 0.400000<=TOAck<=0.440000; -0.200000<=TOMsg<=0.240000, 0.440000<=TOAck<=0.480000; -0.200000<=TOMsg<=0.240000, 0.480000<=TOAck<=0.520000; -0.200000<=TOMsg<=0.240000, 0.520000<=TOAck<=0.560000; -0.200000<=TOMsg<=0.240000, 0.560000<=TOAck<=0.600000; -0.200000<=TOMsg<=0.240000, 0.600000<=TOAck<=0.640000; -0.200000<=TOMsg<=0.240000, 0.640000<=TOAck<=0.680000; -0.200000<=TOMsg<=0.240000, 0.680000<=TOAck<=0.720000; -0.200000<=TOMsg<=0.240000, 0.720000<=TOAck<=0.760000; -0.200000<=TOMsg<=0.240000, 0.760000<=TOAck<=0.800000; -0.200000<=TOMsg<=0.240000, 0.800000<=TOAck<=0.840000; -0.200000<=TOMsg<=0.240000, 0.840000<=TOAck<=0.880000; -0.200000<=TOMsg<=0.240000, 0.880000<=TOAck<=0.920000; -0.200000<=TOMsg<=0.240000, 0.920000<=TOAck<=0.960000; -0.200000<=TOMsg<=0.240000, 0.960000<=TOAck<=0.999990; -0.240000<=TOMsg<=0.280000, 0.000010<=TOAck<=0.040000; -0.240000<=TOMsg<=0.280000, 0.040000<=TOAck<=0.080000; -0.240000<=TOMsg<=0.280000, 0.080000<=TOAck<=0.120000; -0.240000<=TOMsg<=0.280000, 0.120000<=TOAck<=0.160000; -0.240000<=TOMsg<=0.280000, 0.160000<=TOAck<=0.200000; -0.240000<=TOMsg<=0.280000, 0.200000<=TOAck<=0.240000; -0.240000<=TOMsg<=0.280000, 0.240000<=TOAck<=0.280000; -0.240000<=TOMsg<=0.280000, 0.280000<=TOAck<=0.320000; -0.240000<=TOMsg<=0.280000, 0.320000<=TOAck<=0.360000; -0.240000<=TOMsg<=0.280000, 0.360000<=TOAck<=0.400000; -0.240000<=TOMsg<=0.280000, 0.400000<=TOAck<=0.440000; -0.240000<=TOMsg<=0.280000, 0.440000<=TOAck<=0.480000; -0.240000<=TOMsg<=0.280000, 0.480000<=TOAck<=0.520000; -0.240000<=TOMsg<=0.280000, 0.520000<=TOAck<=0.560000; -0.240000<=TOMsg<=0.280000, 0.560000<=TOAck<=0.600000; -0.240000<=TOMsg<=0.280000, 0.600000<=TOAck<=0.640000; -0.240000<=TOMsg<=0.280000, 0.640000<=TOAck<=0.680000; -0.240000<=TOMsg<=0.280000, 0.680000<=TOAck<=0.720000; -0.240000<=TOMsg<=0.280000, 0.720000<=TOAck<=0.760000; -0.240000<=TOMsg<=0.280000, 0.760000<=TOAck<=0.800000; -0.240000<=TOMsg<=0.280000, 0.800000<=TOAck<=0.840000; -0.240000<=TOMsg<=0.280000, 0.840000<=TOAck<=0.880000; -0.240000<=TOMsg<=0.280000, 0.880000<=TOAck<=0.920000; -0.240000<=TOMsg<=0.280000, 0.920000<=TOAck<=0.960000; -0.240000<=TOMsg<=0.280000, 0.960000<=TOAck<=0.999990; -0.280000<=TOMsg<=0.320000, 0.000010<=TOAck<=0.040000; -0.280000<=TOMsg<=0.320000, 0.040000<=TOAck<=0.080000; -0.280000<=TOMsg<=0.320000, 0.080000<=TOAck<=0.120000; -0.280000<=TOMsg<=0.320000, 0.120000<=TOAck<=0.160000; -0.280000<=TOMsg<=0.320000, 0.160000<=TOAck<=0.200000; -0.280000<=TOMsg<=0.320000, 0.200000<=TOAck<=0.240000; -0.280000<=TOMsg<=0.320000, 0.240000<=TOAck<=0.280000; -0.280000<=TOMsg<=0.320000, 0.280000<=TOAck<=0.320000; -0.280000<=TOMsg<=0.320000, 0.320000<=TOAck<=0.360000; -0.280000<=TOMsg<=0.320000, 0.360000<=TOAck<=0.400000; -0.280000<=TOMsg<=0.320000, 0.400000<=TOAck<=0.440000; -0.280000<=TOMsg<=0.320000, 0.440000<=TOAck<=0.480000; -0.280000<=TOMsg<=0.320000, 0.480000<=TOAck<=0.520000; -0.280000<=TOMsg<=0.320000, 0.520000<=TOAck<=0.560000; -0.280000<=TOMsg<=0.320000, 0.560000<=TOAck<=0.600000; -0.280000<=TOMsg<=0.320000, 0.600000<=TOAck<=0.640000; -0.280000<=TOMsg<=0.320000, 0.640000<=TOAck<=0.680000; -0.280000<=TOMsg<=0.320000, 0.680000<=TOAck<=0.720000; -0.280000<=TOMsg<=0.320000, 0.720000<=TOAck<=0.760000; -0.280000<=TOMsg<=0.320000, 0.760000<=TOAck<=0.800000; -0.280000<=TOMsg<=0.320000, 0.800000<=TOAck<=0.840000; -0.280000<=TOMsg<=0.320000, 0.840000<=TOAck<=0.880000; -0.280000<=TOMsg<=0.320000, 0.880000<=TOAck<=0.920000; -0.280000<=TOMsg<=0.320000, 0.920000<=TOAck<=0.960000; -0.280000<=TOMsg<=0.320000, 0.960000<=TOAck<=0.999990; -0.320000<=TOMsg<=0.360000, 0.000010<=TOAck<=0.040000; -0.320000<=TOMsg<=0.360000, 0.040000<=TOAck<=0.080000; -0.320000<=TOMsg<=0.360000, 0.080000<=TOAck<=0.120000; -0.320000<=TOMsg<=0.360000, 0.120000<=TOAck<=0.160000; -0.320000<=TOMsg<=0.360000, 0.160000<=TOAck<=0.200000; -0.320000<=TOMsg<=0.360000, 0.200000<=TOAck<=0.240000; -0.320000<=TOMsg<=0.360000, 0.240000<=TOAck<=0.280000; -0.320000<=TOMsg<=0.360000, 0.280000<=TOAck<=0.320000; -0.320000<=TOMsg<=0.360000, 0.320000<=TOAck<=0.360000; -0.320000<=TOMsg<=0.360000, 0.360000<=TOAck<=0.400000; -0.320000<=TOMsg<=0.360000, 0.400000<=TOAck<=0.440000; -0.320000<=TOMsg<=0.360000, 0.440000<=TOAck<=0.480000; -0.320000<=TOMsg<=0.360000, 0.480000<=TOAck<=0.520000; -0.320000<=TOMsg<=0.360000, 0.520000<=TOAck<=0.560000; -0.320000<=TOMsg<=0.360000, 0.560000<=TOAck<=0.600000; -0.320000<=TOMsg<=0.360000, 0.600000<=TOAck<=0.640000; -0.320000<=TOMsg<=0.360000, 0.640000<=TOAck<=0.680000; -0.320000<=TOMsg<=0.360000, 0.680000<=TOAck<=0.720000; -0.320000<=TOMsg<=0.360000, 0.720000<=TOAck<=0.760000; -0.320000<=TOMsg<=0.360000, 0.760000<=TOAck<=0.800000; -0.320000<=TOMsg<=0.360000, 0.800000<=TOAck<=0.840000; -0.320000<=TOMsg<=0.360000, 0.840000<=TOAck<=0.880000; -0.320000<=TOMsg<=0.360000, 0.880000<=TOAck<=0.920000; -0.320000<=TOMsg<=0.360000, 0.920000<=TOAck<=0.960000; -0.320000<=TOMsg<=0.360000, 0.960000<=TOAck<=0.999990; -0.360000<=TOMsg<=0.400000, 0.000010<=TOAck<=0.040000; -0.360000<=TOMsg<=0.400000, 0.040000<=TOAck<=0.080000; -0.360000<=TOMsg<=0.400000, 0.080000<=TOAck<=0.120000; -0.360000<=TOMsg<=0.400000, 0.120000<=TOAck<=0.160000; -0.360000<=TOMsg<=0.400000, 0.160000<=TOAck<=0.200000; -0.360000<=TOMsg<=0.400000, 0.200000<=TOAck<=0.240000; -0.360000<=TOMsg<=0.400000, 0.240000<=TOAck<=0.280000; -0.360000<=TOMsg<=0.400000, 0.280000<=TOAck<=0.320000; -0.360000<=TOMsg<=0.400000, 0.320000<=TOAck<=0.360000; -0.360000<=TOMsg<=0.400000, 0.360000<=TOAck<=0.400000; -0.360000<=TOMsg<=0.400000, 0.400000<=TOAck<=0.440000; -0.360000<=TOMsg<=0.400000, 0.440000<=TOAck<=0.480000; -0.360000<=TOMsg<=0.400000, 0.480000<=TOAck<=0.520000; -0.360000<=TOMsg<=0.400000, 0.520000<=TOAck<=0.560000; -0.360000<=TOMsg<=0.400000, 0.560000<=TOAck<=0.600000; -0.360000<=TOMsg<=0.400000, 0.600000<=TOAck<=0.640000; -0.360000<=TOMsg<=0.400000, 0.640000<=TOAck<=0.680000; -0.360000<=TOMsg<=0.400000, 0.680000<=TOAck<=0.720000; -0.360000<=TOMsg<=0.400000, 0.720000<=TOAck<=0.760000; -0.360000<=TOMsg<=0.400000, 0.760000<=TOAck<=0.800000; -0.360000<=TOMsg<=0.400000, 0.800000<=TOAck<=0.840000; -0.360000<=TOMsg<=0.400000, 0.840000<=TOAck<=0.880000; -0.360000<=TOMsg<=0.400000, 0.880000<=TOAck<=0.920000; -0.360000<=TOMsg<=0.400000, 0.920000<=TOAck<=0.960000; -0.360000<=TOMsg<=0.400000, 0.960000<=TOAck<=0.999990; -0.400000<=TOMsg<=0.440000, 0.000010<=TOAck<=0.040000; -0.400000<=TOMsg<=0.440000, 0.040000<=TOAck<=0.080000; -0.400000<=TOMsg<=0.440000, 0.080000<=TOAck<=0.120000; -0.400000<=TOMsg<=0.440000, 0.120000<=TOAck<=0.160000; -0.400000<=TOMsg<=0.440000, 0.160000<=TOAck<=0.200000; -0.400000<=TOMsg<=0.440000, 0.200000<=TOAck<=0.240000; -0.400000<=TOMsg<=0.440000, 0.240000<=TOAck<=0.280000; -0.400000<=TOMsg<=0.440000, 0.280000<=TOAck<=0.320000; -0.400000<=TOMsg<=0.440000, 0.320000<=TOAck<=0.360000; -0.400000<=TOMsg<=0.440000, 0.360000<=TOAck<=0.400000; -0.400000<=TOMsg<=0.440000, 0.400000<=TOAck<=0.440000; -0.400000<=TOMsg<=0.440000, 0.440000<=TOAck<=0.480000; -0.400000<=TOMsg<=0.440000, 0.480000<=TOAck<=0.520000; -0.400000<=TOMsg<=0.440000, 0.520000<=TOAck<=0.560000; -0.400000<=TOMsg<=0.440000, 0.560000<=TOAck<=0.600000; -0.400000<=TOMsg<=0.440000, 0.600000<=TOAck<=0.640000; -0.400000<=TOMsg<=0.440000, 0.640000<=TOAck<=0.680000; -0.400000<=TOMsg<=0.440000, 0.680000<=TOAck<=0.720000; -0.400000<=TOMsg<=0.440000, 0.720000<=TOAck<=0.760000; -0.400000<=TOMsg<=0.440000, 0.760000<=TOAck<=0.800000; -0.400000<=TOMsg<=0.440000, 0.800000<=TOAck<=0.840000; -0.400000<=TOMsg<=0.440000, 0.840000<=TOAck<=0.880000; -0.400000<=TOMsg<=0.440000, 0.880000<=TOAck<=0.920000; -0.400000<=TOMsg<=0.440000, 0.920000<=TOAck<=0.960000; -0.400000<=TOMsg<=0.440000, 0.960000<=TOAck<=0.999990; -0.440000<=TOMsg<=0.480000, 0.000010<=TOAck<=0.040000; -0.440000<=TOMsg<=0.480000, 0.040000<=TOAck<=0.080000; -0.440000<=TOMsg<=0.480000, 0.080000<=TOAck<=0.120000; -0.440000<=TOMsg<=0.480000, 0.120000<=TOAck<=0.160000; -0.440000<=TOMsg<=0.480000, 0.160000<=TOAck<=0.200000; -0.440000<=TOMsg<=0.480000, 0.200000<=TOAck<=0.240000; -0.440000<=TOMsg<=0.480000, 0.240000<=TOAck<=0.280000; -0.440000<=TOMsg<=0.480000, 0.280000<=TOAck<=0.320000; -0.440000<=TOMsg<=0.480000, 0.320000<=TOAck<=0.360000; -0.440000<=TOMsg<=0.480000, 0.360000<=TOAck<=0.400000; -0.440000<=TOMsg<=0.480000, 0.400000<=TOAck<=0.440000; -0.440000<=TOMsg<=0.480000, 0.440000<=TOAck<=0.480000; -0.440000<=TOMsg<=0.480000, 0.480000<=TOAck<=0.520000; -0.440000<=TOMsg<=0.480000, 0.520000<=TOAck<=0.560000; -0.440000<=TOMsg<=0.480000, 0.560000<=TOAck<=0.600000; -0.440000<=TOMsg<=0.480000, 0.600000<=TOAck<=0.640000; -0.440000<=TOMsg<=0.480000, 0.640000<=TOAck<=0.680000; -0.440000<=TOMsg<=0.480000, 0.680000<=TOAck<=0.720000; -0.440000<=TOMsg<=0.480000, 0.720000<=TOAck<=0.760000; -0.440000<=TOMsg<=0.480000, 0.760000<=TOAck<=0.800000; -0.440000<=TOMsg<=0.480000, 0.800000<=TOAck<=0.840000; -0.440000<=TOMsg<=0.480000, 0.840000<=TOAck<=0.880000; -0.440000<=TOMsg<=0.480000, 0.880000<=TOAck<=0.920000; -0.440000<=TOMsg<=0.480000, 0.920000<=TOAck<=0.960000; -0.440000<=TOMsg<=0.480000, 0.960000<=TOAck<=0.999990; -0.480000<=TOMsg<=0.520000, 0.000010<=TOAck<=0.040000; -0.480000<=TOMsg<=0.520000, 0.040000<=TOAck<=0.080000; -0.480000<=TOMsg<=0.520000, 0.080000<=TOAck<=0.120000; -0.480000<=TOMsg<=0.520000, 0.120000<=TOAck<=0.160000; -0.480000<=TOMsg<=0.520000, 0.160000<=TOAck<=0.200000; -0.480000<=TOMsg<=0.520000, 0.200000<=TOAck<=0.240000; -0.480000<=TOMsg<=0.520000, 0.240000<=TOAck<=0.280000; -0.480000<=TOMsg<=0.520000, 0.280000<=TOAck<=0.320000; -0.480000<=TOMsg<=0.520000, 0.320000<=TOAck<=0.360000; -0.480000<=TOMsg<=0.520000, 0.360000<=TOAck<=0.400000; -0.480000<=TOMsg<=0.520000, 0.400000<=TOAck<=0.440000; -0.480000<=TOMsg<=0.520000, 0.440000<=TOAck<=0.480000; -0.480000<=TOMsg<=0.520000, 0.480000<=TOAck<=0.520000; -0.480000<=TOMsg<=0.520000, 0.520000<=TOAck<=0.560000; -0.480000<=TOMsg<=0.520000, 0.560000<=TOAck<=0.600000; -0.480000<=TOMsg<=0.520000, 0.600000<=TOAck<=0.640000; -0.480000<=TOMsg<=0.520000, 0.640000<=TOAck<=0.680000; -0.480000<=TOMsg<=0.520000, 0.680000<=TOAck<=0.720000; -0.480000<=TOMsg<=0.520000, 0.720000<=TOAck<=0.760000; -0.480000<=TOMsg<=0.520000, 0.760000<=TOAck<=0.800000; -0.480000<=TOMsg<=0.520000, 0.800000<=TOAck<=0.840000; -0.480000<=TOMsg<=0.520000, 0.840000<=TOAck<=0.880000; -0.480000<=TOMsg<=0.520000, 0.880000<=TOAck<=0.920000; -0.480000<=TOMsg<=0.520000, 0.920000<=TOAck<=0.960000; -0.480000<=TOMsg<=0.520000, 0.960000<=TOAck<=0.999990; -0.520000<=TOMsg<=0.560000, 0.000010<=TOAck<=0.040000; -0.520000<=TOMsg<=0.560000, 0.040000<=TOAck<=0.080000; -0.520000<=TOMsg<=0.560000, 0.080000<=TOAck<=0.120000; -0.520000<=TOMsg<=0.560000, 0.120000<=TOAck<=0.160000; -0.520000<=TOMsg<=0.560000, 0.160000<=TOAck<=0.200000; -0.520000<=TOMsg<=0.560000, 0.200000<=TOAck<=0.240000; -0.520000<=TOMsg<=0.560000, 0.240000<=TOAck<=0.280000; -0.520000<=TOMsg<=0.560000, 0.280000<=TOAck<=0.320000; -0.520000<=TOMsg<=0.560000, 0.320000<=TOAck<=0.360000; -0.520000<=TOMsg<=0.560000, 0.360000<=TOAck<=0.400000; -0.520000<=TOMsg<=0.560000, 0.400000<=TOAck<=0.440000; -0.520000<=TOMsg<=0.560000, 0.440000<=TOAck<=0.480000; -0.520000<=TOMsg<=0.560000, 0.480000<=TOAck<=0.520000; -0.520000<=TOMsg<=0.560000, 0.520000<=TOAck<=0.560000; -0.520000<=TOMsg<=0.560000, 0.560000<=TOAck<=0.600000; -0.520000<=TOMsg<=0.560000, 0.600000<=TOAck<=0.640000; -0.520000<=TOMsg<=0.560000, 0.640000<=TOAck<=0.680000; -0.520000<=TOMsg<=0.560000, 0.680000<=TOAck<=0.720000; -0.520000<=TOMsg<=0.560000, 0.720000<=TOAck<=0.760000; -0.520000<=TOMsg<=0.560000, 0.760000<=TOAck<=0.800000; -0.520000<=TOMsg<=0.560000, 0.800000<=TOAck<=0.840000; -0.520000<=TOMsg<=0.560000, 0.840000<=TOAck<=0.880000; -0.520000<=TOMsg<=0.560000, 0.880000<=TOAck<=0.920000; -0.520000<=TOMsg<=0.560000, 0.920000<=TOAck<=0.960000; -0.520000<=TOMsg<=0.560000, 0.960000<=TOAck<=0.999990; -0.560000<=TOMsg<=0.600000, 0.000010<=TOAck<=0.040000; -0.560000<=TOMsg<=0.600000, 0.040000<=TOAck<=0.080000; -0.560000<=TOMsg<=0.600000, 0.080000<=TOAck<=0.120000; -0.560000<=TOMsg<=0.600000, 0.120000<=TOAck<=0.160000; -0.560000<=TOMsg<=0.600000, 0.160000<=TOAck<=0.200000; -0.560000<=TOMsg<=0.600000, 0.200000<=TOAck<=0.240000; -0.560000<=TOMsg<=0.600000, 0.240000<=TOAck<=0.280000; -0.560000<=TOMsg<=0.600000, 0.280000<=TOAck<=0.320000; -0.560000<=TOMsg<=0.600000, 0.320000<=TOAck<=0.360000; -0.560000<=TOMsg<=0.600000, 0.360000<=TOAck<=0.400000; -0.560000<=TOMsg<=0.600000, 0.400000<=TOAck<=0.440000; -0.560000<=TOMsg<=0.600000, 0.440000<=TOAck<=0.480000; -0.560000<=TOMsg<=0.600000, 0.480000<=TOAck<=0.520000; -0.560000<=TOMsg<=0.600000, 0.520000<=TOAck<=0.560000; -0.560000<=TOMsg<=0.600000, 0.560000<=TOAck<=0.600000; -0.560000<=TOMsg<=0.600000, 0.600000<=TOAck<=0.640000; -0.560000<=TOMsg<=0.600000, 0.640000<=TOAck<=0.680000; -0.560000<=TOMsg<=0.600000, 0.680000<=TOAck<=0.720000; -0.560000<=TOMsg<=0.600000, 0.720000<=TOAck<=0.760000; -0.560000<=TOMsg<=0.600000, 0.760000<=TOAck<=0.800000; -0.560000<=TOMsg<=0.600000, 0.800000<=TOAck<=0.840000; -0.560000<=TOMsg<=0.600000, 0.840000<=TOAck<=0.880000; -0.560000<=TOMsg<=0.600000, 0.880000<=TOAck<=0.920000; -0.560000<=TOMsg<=0.600000, 0.920000<=TOAck<=0.960000; -0.560000<=TOMsg<=0.600000, 0.960000<=TOAck<=0.999990; -0.600000<=TOMsg<=0.640000, 0.000010<=TOAck<=0.040000; -0.600000<=TOMsg<=0.640000, 0.040000<=TOAck<=0.080000; -0.600000<=TOMsg<=0.640000, 0.080000<=TOAck<=0.120000; -0.600000<=TOMsg<=0.640000, 0.120000<=TOAck<=0.160000; -0.600000<=TOMsg<=0.640000, 0.160000<=TOAck<=0.200000; -0.600000<=TOMsg<=0.640000, 0.200000<=TOAck<=0.240000; -0.600000<=TOMsg<=0.640000, 0.240000<=TOAck<=0.280000; -0.600000<=TOMsg<=0.640000, 0.280000<=TOAck<=0.320000; -0.600000<=TOMsg<=0.640000, 0.320000<=TOAck<=0.360000; -0.600000<=TOMsg<=0.640000, 0.360000<=TOAck<=0.400000; -0.600000<=TOMsg<=0.640000, 0.400000<=TOAck<=0.440000; -0.600000<=TOMsg<=0.640000, 0.440000<=TOAck<=0.480000; -0.600000<=TOMsg<=0.640000, 0.480000<=TOAck<=0.520000; -0.600000<=TOMsg<=0.640000, 0.520000<=TOAck<=0.560000; -0.600000<=TOMsg<=0.640000, 0.560000<=TOAck<=0.600000; -0.600000<=TOMsg<=0.640000, 0.600000<=TOAck<=0.640000; -0.600000<=TOMsg<=0.640000, 0.640000<=TOAck<=0.680000; -0.600000<=TOMsg<=0.640000, 0.680000<=TOAck<=0.720000; -0.600000<=TOMsg<=0.640000, 0.720000<=TOAck<=0.760000; -0.600000<=TOMsg<=0.640000, 0.760000<=TOAck<=0.800000; -0.600000<=TOMsg<=0.640000, 0.800000<=TOAck<=0.840000; -0.600000<=TOMsg<=0.640000, 0.840000<=TOAck<=0.880000; -0.600000<=TOMsg<=0.640000, 0.880000<=TOAck<=0.920000; -0.600000<=TOMsg<=0.640000, 0.920000<=TOAck<=0.960000; -0.600000<=TOMsg<=0.640000, 0.960000<=TOAck<=0.999990; -0.640000<=TOMsg<=0.680000, 0.000010<=TOAck<=0.040000; -0.640000<=TOMsg<=0.680000, 0.040000<=TOAck<=0.080000; -0.640000<=TOMsg<=0.680000, 0.080000<=TOAck<=0.120000; -0.640000<=TOMsg<=0.680000, 0.120000<=TOAck<=0.160000; -0.640000<=TOMsg<=0.680000, 0.160000<=TOAck<=0.200000; -0.640000<=TOMsg<=0.680000, 0.200000<=TOAck<=0.240000; -0.640000<=TOMsg<=0.680000, 0.240000<=TOAck<=0.280000; -0.640000<=TOMsg<=0.680000, 0.280000<=TOAck<=0.320000; -0.640000<=TOMsg<=0.680000, 0.320000<=TOAck<=0.360000; -0.640000<=TOMsg<=0.680000, 0.360000<=TOAck<=0.400000; -0.640000<=TOMsg<=0.680000, 0.400000<=TOAck<=0.440000; -0.640000<=TOMsg<=0.680000, 0.440000<=TOAck<=0.480000; -0.640000<=TOMsg<=0.680000, 0.480000<=TOAck<=0.520000; -0.640000<=TOMsg<=0.680000, 0.520000<=TOAck<=0.560000; -0.640000<=TOMsg<=0.680000, 0.560000<=TOAck<=0.600000; -0.640000<=TOMsg<=0.680000, 0.600000<=TOAck<=0.640000; -0.640000<=TOMsg<=0.680000, 0.640000<=TOAck<=0.680000; -0.640000<=TOMsg<=0.680000, 0.680000<=TOAck<=0.720000; -0.640000<=TOMsg<=0.680000, 0.720000<=TOAck<=0.760000; -0.640000<=TOMsg<=0.680000, 0.760000<=TOAck<=0.800000; -0.640000<=TOMsg<=0.680000, 0.800000<=TOAck<=0.840000; -0.640000<=TOMsg<=0.680000, 0.840000<=TOAck<=0.880000; -0.640000<=TOMsg<=0.680000, 0.880000<=TOAck<=0.920000; -0.640000<=TOMsg<=0.680000, 0.920000<=TOAck<=0.960000; -0.640000<=TOMsg<=0.680000, 0.960000<=TOAck<=0.999990; -0.680000<=TOMsg<=0.720000, 0.000010<=TOAck<=0.040000; -0.680000<=TOMsg<=0.720000, 0.040000<=TOAck<=0.080000; -0.680000<=TOMsg<=0.720000, 0.080000<=TOAck<=0.120000; -0.680000<=TOMsg<=0.720000, 0.120000<=TOAck<=0.160000; -0.680000<=TOMsg<=0.720000, 0.160000<=TOAck<=0.200000; -0.680000<=TOMsg<=0.720000, 0.200000<=TOAck<=0.240000; -0.680000<=TOMsg<=0.720000, 0.240000<=TOAck<=0.280000; -0.680000<=TOMsg<=0.720000, 0.280000<=TOAck<=0.320000; -0.680000<=TOMsg<=0.720000, 0.320000<=TOAck<=0.360000; -0.680000<=TOMsg<=0.720000, 0.360000<=TOAck<=0.400000; -0.680000<=TOMsg<=0.720000, 0.400000<=TOAck<=0.440000; -0.680000<=TOMsg<=0.720000, 0.440000<=TOAck<=0.480000; -0.680000<=TOMsg<=0.720000, 0.480000<=TOAck<=0.520000; -0.680000<=TOMsg<=0.720000, 0.520000<=TOAck<=0.560000; -0.680000<=TOMsg<=0.720000, 0.560000<=TOAck<=0.600000; -0.680000<=TOMsg<=0.720000, 0.600000<=TOAck<=0.640000; -0.680000<=TOMsg<=0.720000, 0.640000<=TOAck<=0.680000; -0.680000<=TOMsg<=0.720000, 0.680000<=TOAck<=0.720000; -0.680000<=TOMsg<=0.720000, 0.720000<=TOAck<=0.760000; -0.680000<=TOMsg<=0.720000, 0.760000<=TOAck<=0.800000; -0.680000<=TOMsg<=0.720000, 0.800000<=TOAck<=0.840000; -0.680000<=TOMsg<=0.720000, 0.840000<=TOAck<=0.880000; -0.680000<=TOMsg<=0.720000, 0.880000<=TOAck<=0.920000; -0.680000<=TOMsg<=0.720000, 0.920000<=TOAck<=0.960000; -0.680000<=TOMsg<=0.720000, 0.960000<=TOAck<=0.999990; -0.720000<=TOMsg<=0.760000, 0.000010<=TOAck<=0.040000; -0.720000<=TOMsg<=0.760000, 0.040000<=TOAck<=0.080000; -0.720000<=TOMsg<=0.760000, 0.080000<=TOAck<=0.120000; -0.720000<=TOMsg<=0.760000, 0.120000<=TOAck<=0.160000; -0.720000<=TOMsg<=0.760000, 0.160000<=TOAck<=0.200000; -0.720000<=TOMsg<=0.760000, 0.200000<=TOAck<=0.240000; -0.720000<=TOMsg<=0.760000, 0.240000<=TOAck<=0.280000; -0.720000<=TOMsg<=0.760000, 0.280000<=TOAck<=0.320000; -0.720000<=TOMsg<=0.760000, 0.320000<=TOAck<=0.360000; -0.720000<=TOMsg<=0.760000, 0.360000<=TOAck<=0.400000; -0.720000<=TOMsg<=0.760000, 0.400000<=TOAck<=0.440000; -0.720000<=TOMsg<=0.760000, 0.440000<=TOAck<=0.480000; -0.720000<=TOMsg<=0.760000, 0.480000<=TOAck<=0.520000; -0.720000<=TOMsg<=0.760000, 0.520000<=TOAck<=0.560000; -0.720000<=TOMsg<=0.760000, 0.560000<=TOAck<=0.600000; -0.720000<=TOMsg<=0.760000, 0.600000<=TOAck<=0.640000; -0.720000<=TOMsg<=0.760000, 0.640000<=TOAck<=0.680000; -0.720000<=TOMsg<=0.760000, 0.680000<=TOAck<=0.720000; -0.720000<=TOMsg<=0.760000, 0.720000<=TOAck<=0.760000; -0.720000<=TOMsg<=0.760000, 0.760000<=TOAck<=0.800000; -0.720000<=TOMsg<=0.760000, 0.800000<=TOAck<=0.840000; -0.720000<=TOMsg<=0.760000, 0.840000<=TOAck<=0.880000; -0.720000<=TOMsg<=0.760000, 0.880000<=TOAck<=0.920000; -0.720000<=TOMsg<=0.760000, 0.920000<=TOAck<=0.960000; -0.720000<=TOMsg<=0.760000, 0.960000<=TOAck<=0.999990; -0.760000<=TOMsg<=0.800000, 0.000010<=TOAck<=0.040000; -0.760000<=TOMsg<=0.800000, 0.040000<=TOAck<=0.080000; -0.760000<=TOMsg<=0.800000, 0.080000<=TOAck<=0.120000; -0.760000<=TOMsg<=0.800000, 0.120000<=TOAck<=0.160000; -0.760000<=TOMsg<=0.800000, 0.160000<=TOAck<=0.200000; -0.760000<=TOMsg<=0.800000, 0.200000<=TOAck<=0.240000; -0.760000<=TOMsg<=0.800000, 0.240000<=TOAck<=0.280000; -0.760000<=TOMsg<=0.800000, 0.280000<=TOAck<=0.320000; -0.760000<=TOMsg<=0.800000, 0.320000<=TOAck<=0.360000; -0.760000<=TOMsg<=0.800000, 0.360000<=TOAck<=0.400000; -0.760000<=TOMsg<=0.800000, 0.400000<=TOAck<=0.440000; -0.760000<=TOMsg<=0.800000, 0.440000<=TOAck<=0.480000; -0.760000<=TOMsg<=0.800000, 0.480000<=TOAck<=0.520000; -0.760000<=TOMsg<=0.800000, 0.520000<=TOAck<=0.560000; -0.760000<=TOMsg<=0.800000, 0.560000<=TOAck<=0.600000; -0.760000<=TOMsg<=0.800000, 0.600000<=TOAck<=0.640000; -0.760000<=TOMsg<=0.800000, 0.640000<=TOAck<=0.680000; -0.760000<=TOMsg<=0.800000, 0.680000<=TOAck<=0.720000; -0.760000<=TOMsg<=0.800000, 0.720000<=TOAck<=0.760000; -0.760000<=TOMsg<=0.800000, 0.760000<=TOAck<=0.800000; -0.760000<=TOMsg<=0.800000, 0.800000<=TOAck<=0.840000; -0.760000<=TOMsg<=0.800000, 0.840000<=TOAck<=0.880000; -0.760000<=TOMsg<=0.800000, 0.880000<=TOAck<=0.920000; -0.760000<=TOMsg<=0.800000, 0.920000<=TOAck<=0.960000; -0.760000<=TOMsg<=0.800000, 0.960000<=TOAck<=0.999990; -0.800000<=TOMsg<=0.840000, 0.000010<=TOAck<=0.040000; -0.800000<=TOMsg<=0.840000, 0.040000<=TOAck<=0.080000; -0.800000<=TOMsg<=0.840000, 0.080000<=TOAck<=0.120000; -0.800000<=TOMsg<=0.840000, 0.120000<=TOAck<=0.160000; -0.800000<=TOMsg<=0.840000, 0.160000<=TOAck<=0.200000; -0.800000<=TOMsg<=0.840000, 0.200000<=TOAck<=0.240000; -0.800000<=TOMsg<=0.840000, 0.240000<=TOAck<=0.280000; -0.800000<=TOMsg<=0.840000, 0.280000<=TOAck<=0.320000; -0.800000<=TOMsg<=0.840000, 0.320000<=TOAck<=0.360000; -0.800000<=TOMsg<=0.840000, 0.360000<=TOAck<=0.400000; -0.800000<=TOMsg<=0.840000, 0.400000<=TOAck<=0.440000; -0.800000<=TOMsg<=0.840000, 0.440000<=TOAck<=0.480000; -0.800000<=TOMsg<=0.840000, 0.480000<=TOAck<=0.520000; -0.800000<=TOMsg<=0.840000, 0.520000<=TOAck<=0.560000; -0.800000<=TOMsg<=0.840000, 0.560000<=TOAck<=0.600000; -0.800000<=TOMsg<=0.840000, 0.600000<=TOAck<=0.640000; -0.800000<=TOMsg<=0.840000, 0.640000<=TOAck<=0.680000; -0.800000<=TOMsg<=0.840000, 0.680000<=TOAck<=0.720000; -0.800000<=TOMsg<=0.840000, 0.720000<=TOAck<=0.760000; -0.800000<=TOMsg<=0.840000, 0.760000<=TOAck<=0.800000; -0.800000<=TOMsg<=0.840000, 0.800000<=TOAck<=0.840000; -0.800000<=TOMsg<=0.840000, 0.840000<=TOAck<=0.880000; -0.800000<=TOMsg<=0.840000, 0.880000<=TOAck<=0.920000; -0.800000<=TOMsg<=0.840000, 0.920000<=TOAck<=0.960000; -0.800000<=TOMsg<=0.840000, 0.960000<=TOAck<=0.999990; -0.840000<=TOMsg<=0.880000, 0.000010<=TOAck<=0.040000; -0.840000<=TOMsg<=0.880000, 0.040000<=TOAck<=0.080000; -0.840000<=TOMsg<=0.880000, 0.080000<=TOAck<=0.120000; -0.840000<=TOMsg<=0.880000, 0.120000<=TOAck<=0.160000; -0.840000<=TOMsg<=0.880000, 0.160000<=TOAck<=0.200000; -0.840000<=TOMsg<=0.880000, 0.200000<=TOAck<=0.240000; -0.840000<=TOMsg<=0.880000, 0.240000<=TOAck<=0.280000; -0.840000<=TOMsg<=0.880000, 0.280000<=TOAck<=0.320000; -0.840000<=TOMsg<=0.880000, 0.320000<=TOAck<=0.360000; -0.840000<=TOMsg<=0.880000, 0.360000<=TOAck<=0.400000; -0.840000<=TOMsg<=0.880000, 0.400000<=TOAck<=0.440000; -0.840000<=TOMsg<=0.880000, 0.440000<=TOAck<=0.480000; -0.840000<=TOMsg<=0.880000, 0.480000<=TOAck<=0.520000; -0.840000<=TOMsg<=0.880000, 0.520000<=TOAck<=0.560000; -0.840000<=TOMsg<=0.880000, 0.560000<=TOAck<=0.600000; -0.840000<=TOMsg<=0.880000, 0.600000<=TOAck<=0.640000; -0.840000<=TOMsg<=0.880000, 0.640000<=TOAck<=0.680000; -0.840000<=TOMsg<=0.880000, 0.680000<=TOAck<=0.720000; -0.840000<=TOMsg<=0.880000, 0.720000<=TOAck<=0.760000; -0.840000<=TOMsg<=0.880000, 0.760000<=TOAck<=0.800000; -0.840000<=TOMsg<=0.880000, 0.800000<=TOAck<=0.840000; -0.840000<=TOMsg<=0.880000, 0.840000<=TOAck<=0.880000; -0.840000<=TOMsg<=0.880000, 0.880000<=TOAck<=0.920000; -0.840000<=TOMsg<=0.880000, 0.920000<=TOAck<=0.960000; -0.840000<=TOMsg<=0.880000, 0.960000<=TOAck<=0.999990; -0.880000<=TOMsg<=0.920000, 0.000010<=TOAck<=0.040000; -0.880000<=TOMsg<=0.920000, 0.040000<=TOAck<=0.080000; -0.880000<=TOMsg<=0.920000, 0.080000<=TOAck<=0.120000; -0.880000<=TOMsg<=0.920000, 0.120000<=TOAck<=0.160000; -0.880000<=TOMsg<=0.920000, 0.160000<=TOAck<=0.200000; -0.880000<=TOMsg<=0.920000, 0.200000<=TOAck<=0.240000; -0.880000<=TOMsg<=0.920000, 0.240000<=TOAck<=0.280000; -0.880000<=TOMsg<=0.920000, 0.280000<=TOAck<=0.320000; -0.880000<=TOMsg<=0.920000, 0.320000<=TOAck<=0.360000; -0.880000<=TOMsg<=0.920000, 0.360000<=TOAck<=0.400000; -0.880000<=TOMsg<=0.920000, 0.400000<=TOAck<=0.440000; -0.880000<=TOMsg<=0.920000, 0.440000<=TOAck<=0.480000; -0.880000<=TOMsg<=0.920000, 0.480000<=TOAck<=0.520000; -0.880000<=TOMsg<=0.920000, 0.520000<=TOAck<=0.560000; -0.880000<=TOMsg<=0.920000, 0.560000<=TOAck<=0.600000; -0.880000<=TOMsg<=0.920000, 0.600000<=TOAck<=0.640000; -0.880000<=TOMsg<=0.920000, 0.640000<=TOAck<=0.680000; -0.880000<=TOMsg<=0.920000, 0.680000<=TOAck<=0.720000; -0.880000<=TOMsg<=0.920000, 0.720000<=TOAck<=0.760000; -0.880000<=TOMsg<=0.920000, 0.760000<=TOAck<=0.800000; -0.880000<=TOMsg<=0.920000, 0.800000<=TOAck<=0.840000; -0.880000<=TOMsg<=0.920000, 0.840000<=TOAck<=0.880000; -0.880000<=TOMsg<=0.920000, 0.880000<=TOAck<=0.920000; -0.880000<=TOMsg<=0.920000, 0.920000<=TOAck<=0.960000; -0.880000<=TOMsg<=0.920000, 0.960000<=TOAck<=0.999990; -0.920000<=TOMsg<=0.960000, 0.000010<=TOAck<=0.040000; -0.920000<=TOMsg<=0.960000, 0.040000<=TOAck<=0.080000; -0.920000<=TOMsg<=0.960000, 0.080000<=TOAck<=0.120000; -0.920000<=TOMsg<=0.960000, 0.120000<=TOAck<=0.160000; -0.920000<=TOMsg<=0.960000, 0.160000<=TOAck<=0.200000; -0.920000<=TOMsg<=0.960000, 0.200000<=TOAck<=0.240000; -0.920000<=TOMsg<=0.960000, 0.240000<=TOAck<=0.280000; -0.920000<=TOMsg<=0.960000, 0.280000<=TOAck<=0.320000; -0.920000<=TOMsg<=0.960000, 0.320000<=TOAck<=0.360000; -0.920000<=TOMsg<=0.960000, 0.360000<=TOAck<=0.400000; -0.920000<=TOMsg<=0.960000, 0.400000<=TOAck<=0.440000; -0.920000<=TOMsg<=0.960000, 0.440000<=TOAck<=0.480000; -0.920000<=TOMsg<=0.960000, 0.480000<=TOAck<=0.520000; -0.920000<=TOMsg<=0.960000, 0.520000<=TOAck<=0.560000; -0.920000<=TOMsg<=0.960000, 0.560000<=TOAck<=0.600000; -0.920000<=TOMsg<=0.960000, 0.600000<=TOAck<=0.640000; -0.920000<=TOMsg<=0.960000, 0.640000<=TOAck<=0.680000; -0.920000<=TOMsg<=0.960000, 0.680000<=TOAck<=0.720000; -0.920000<=TOMsg<=0.960000, 0.720000<=TOAck<=0.760000; -0.920000<=TOMsg<=0.960000, 0.760000<=TOAck<=0.800000; -0.920000<=TOMsg<=0.960000, 0.800000<=TOAck<=0.840000; -0.920000<=TOMsg<=0.960000, 0.840000<=TOAck<=0.880000; -0.920000<=TOMsg<=0.960000, 0.880000<=TOAck<=0.920000; -0.920000<=TOMsg<=0.960000, 0.920000<=TOAck<=0.960000; -0.920000<=TOMsg<=0.960000, 0.960000<=TOAck<=0.999990; -0.960000<=TOMsg<=0.999990, 0.000010<=TOAck<=0.040000; -0.960000<=TOMsg<=0.999990, 0.040000<=TOAck<=0.080000; -0.960000<=TOMsg<=0.999990, 0.080000<=TOAck<=0.120000; -0.960000<=TOMsg<=0.999990, 0.120000<=TOAck<=0.160000; -0.960000<=TOMsg<=0.999990, 0.160000<=TOAck<=0.200000; -0.960000<=TOMsg<=0.999990, 0.200000<=TOAck<=0.240000; -0.960000<=TOMsg<=0.999990, 0.240000<=TOAck<=0.280000; -0.960000<=TOMsg<=0.999990, 0.280000<=TOAck<=0.320000; -0.960000<=TOMsg<=0.999990, 0.320000<=TOAck<=0.360000; -0.960000<=TOMsg<=0.999990, 0.360000<=TOAck<=0.400000; -0.960000<=TOMsg<=0.999990, 0.400000<=TOAck<=0.440000; -0.960000<=TOMsg<=0.999990, 0.440000<=TOAck<=0.480000; -0.960000<=TOMsg<=0.999990, 0.480000<=TOAck<=0.520000; -0.960000<=TOMsg<=0.999990, 0.520000<=TOAck<=0.560000; -0.960000<=TOMsg<=0.999990, 0.560000<=TOAck<=0.600000; -0.960000<=TOMsg<=0.999990, 0.600000<=TOAck<=0.640000; -0.960000<=TOMsg<=0.999990, 0.640000<=TOAck<=0.680000; -0.960000<=TOMsg<=0.999990, 0.680000<=TOAck<=0.720000; -0.960000<=TOMsg<=0.999990, 0.720000<=TOAck<=0.760000; -0.960000<=TOMsg<=0.999990, 0.760000<=TOAck<=0.800000; -0.960000<=TOMsg<=0.999990, 0.800000<=TOAck<=0.840000; -0.960000<=TOMsg<=0.999990, 0.840000<=TOAck<=0.880000; -0.960000<=TOMsg<=0.999990, 0.880000<=TOAck<=0.920000; -0.960000<=TOMsg<=0.999990, 0.920000<=TOAck<=0.960000; -0.960000<=TOMsg<=0.999990, 0.960000<=TOAck<=0.999990; diff --git a/examples/pdtmc/brp_rewards2/brp_rewards16_2.pm b/examples/pdtmc/brp_rewards2/brp_rewards16_2.pm new file mode 100644 index 000000000..0b05d22fd --- /dev/null +++ b/examples/pdtmc/brp_rewards2/brp_rewards16_2.pm @@ -0,0 +1,146 @@ +// 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 + + diff --git a/examples/pdtmc/brp_rewards2/brp_rewards2.pm b/examples/pdtmc/brp_rewards2/brp_rewards2.pm new file mode 100644 index 000000000..b4cc546e1 --- /dev/null +++ b/examples/pdtmc/brp_rewards2/brp_rewards2.pm @@ -0,0 +1,146 @@ +// 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 + + diff --git a/examples/pdtmc/brp_rewards/brp_rewards.prctl b/examples/pdtmc/brp_rewards2/brp_rewards2.prctl similarity index 100% rename from examples/pdtmc/brp_rewards/brp_rewards.prctl rename to examples/pdtmc/brp_rewards2/brp_rewards2.prctl diff --git a/examples/pdtmc/brp_rewards2/brp_rewards256_5.pm b/examples/pdtmc/brp_rewards2/brp_rewards256_5.pm new file mode 100644 index 000000000..6d274991a --- /dev/null +++ b/examples/pdtmc/brp_rewards2/brp_rewards256_5.pm @@ -0,0 +1,147 @@ +// 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_rewards/brp_rewards_prob_regions.txt b/examples/pdtmc/brp_rewards2/brp_rewards2_regions.txt similarity index 100% rename from examples/pdtmc/brp_rewards/brp_rewards_prob_regions.txt rename to examples/pdtmc/brp_rewards2/brp_rewards2_regions.txt diff --git a/examples/pdtmc/brp_rewards2/brp_rewards512_5.pm b/examples/pdtmc/brp_rewards2/brp_rewards512_5.pm new file mode 100644 index 000000000..344c545da --- /dev/null +++ b/examples/pdtmc/brp_rewards2/brp_rewards512_5.pm @@ -0,0 +1,147 @@ +// 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 new file mode 100644 index 000000000..0fdcf94a1 --- /dev/null +++ b/examples/pdtmc/brp_rewards2/brp_rewards64_4.pm @@ -0,0 +1,147 @@ +// 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 new file mode 100644 index 000000000..055586d1f --- /dev/null +++ b/examples/pdtmc/brp_rewards2/models @@ -0,0 +1,4 @@ +brp.pm -const N=512,MAX=5 +brp.pm -const N=1024,MAX=5 + + diff --git a/examples/pdtmc/brp_rewards/brp_rewards16_2.pm b/examples/pdtmc/brp_rewards4/brp_rewards16_2.pm similarity index 100% rename from examples/pdtmc/brp_rewards/brp_rewards16_2.pm rename to examples/pdtmc/brp_rewards4/brp_rewards16_2.pm diff --git a/examples/pdtmc/brp_rewards/brp_rewards256_5.pm b/examples/pdtmc/brp_rewards4/brp_rewards256_5.pm similarity index 100% rename from examples/pdtmc/brp_rewards/brp_rewards256_5.pm rename to examples/pdtmc/brp_rewards4/brp_rewards256_5.pm diff --git a/examples/pdtmc/brp_rewards4/brp_rewards4.pm b/examples/pdtmc/brp_rewards4/brp_rewards4.pm new file mode 100644 index 000000000..5617e839b --- /dev/null +++ b/examples/pdtmc/brp_rewards4/brp_rewards4.pm @@ -0,0 +1,146 @@ +// 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 + + diff --git a/examples/pdtmc/brp_rewards4/brp_rewards4.prctl b/examples/pdtmc/brp_rewards4/brp_rewards4.prctl new file mode 100644 index 000000000..3a194c0be --- /dev/null +++ b/examples/pdtmc/brp_rewards4/brp_rewards4.prctl @@ -0,0 +1,2 @@ +R<3 [ F ((s=5) | (s=0&srep=3)) ] + diff --git a/examples/pdtmc/brp_rewards/brp_rewards_regions.txt b/examples/pdtmc/brp_rewards4/brp_rewards4_regions.txt similarity index 100% rename from examples/pdtmc/brp_rewards/brp_rewards_regions.txt rename to examples/pdtmc/brp_rewards4/brp_rewards4_regions.txt diff --git a/examples/pdtmc/brp_rewards/brp_rewards512_5.pm b/examples/pdtmc/brp_rewards4/brp_rewards512_5.pm similarity index 100% rename from examples/pdtmc/brp_rewards/brp_rewards512_5.pm rename to examples/pdtmc/brp_rewards4/brp_rewards512_5.pm diff --git a/examples/pdtmc/brp_rewards/brp_rewards64_4.pm b/examples/pdtmc/brp_rewards4/brp_rewards64_4.pm similarity index 100% rename from examples/pdtmc/brp_rewards/brp_rewards64_4.pm rename to examples/pdtmc/brp_rewards4/brp_rewards64_4.pm diff --git a/examples/pdtmc/brp_rewards4/models b/examples/pdtmc/brp_rewards4/models new file mode 100644 index 000000000..3fb543c9a --- /dev/null +++ b/examples/pdtmc/brp_rewards4/models @@ -0,0 +1,2 @@ +brp.pm -const N=512,MAX=5 +brp.pm -const N=1024,MAX=5 diff --git a/examples/pdtmc/crowds/crowds.pm b/examples/pdtmc/crowds/crowds.pm new file mode 100644 index 000000000..1da952d06 --- /dev/null +++ b/examples/pdtmc/crowds/crowds.pm @@ -0,0 +1,194 @@ +// 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/models b/examples/pdtmc/crowds/models new file mode 100644 index 000000000..1ae914ac9 --- /dev/null +++ b/examples/pdtmc/crowds/models @@ -0,0 +1,2 @@ +crowds.pm -const CrowdSize=10,TotalRuns=5 +crowds.pm -const CrowdSize=15,TotalRuns=5 diff --git a/examples/pdtmc/nand/models b/examples/pdtmc/nand/models new file mode 100644 index 000000000..4337d6baa --- /dev/null +++ b/examples/pdtmc/nand/models @@ -0,0 +1,3 @@ +nand.pm -const N=10,K=5 +nand.pm -const N=20,K=5 +nand.pm -const N=40,K=5 diff --git a/examples/pdtmc/nand/nand.pm b/examples/pdtmc/nand/nand.pm new file mode 100644 index 000000000..10c867fca --- /dev/null +++ b/examples/pdtmc/nand/nand.pm @@ -0,0 +1,75 @@ +// 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/tiny/tiny.pm b/examples/pdtmc/tiny/tiny.pm deleted file mode 100644 index e644a10fc..000000000 --- a/examples/pdtmc/tiny/tiny.pm +++ /dev/null @@ -1,16 +0,0 @@ -dtmc - -module tiny - s : [0 .. 3] init 0; - - [] s = 0 -> 1/3 : (s'=1) + 1/3 : (s'=2) + 1/3 : (s'=3); - [] s = 1 -> 1 : (s'=2); - [] s = 2 -> 1/2 : (s'=2) + 1/2 : (s'=1); - [] s = 3 -> 1 : (s'=3); - -endmodule - -rewards - s=1 : 10; - s=3 : 5; -endrewards diff --git a/examples/pmdp/brp/brp.pm b/examples/pmdp/brp/brp.pm new file mode 100644 index 000000000..65fbae497 --- /dev/null +++ b/examples/pmdp/brp/brp.pm @@ -0,0 +1,139 @@ +// 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; + +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/models b/examples/pmdp/brp/models new file mode 100644 index 000000000..70d0bf3d4 --- /dev/null +++ b/examples/pmdp/brp/models @@ -0,0 +1,4 @@ +brp.pm -const N=256,MAX=5 +brp.pm -const N=512,MAX=5 +brp.pm -const N=1024,MAX=5 + diff --git a/examples/pmdp/coin2/coin2.pm b/examples/pmdp/coin2/coin2.pm new file mode 100644 index 000000000..8baa365f4 --- /dev/null +++ b/examples/pmdp/coin2/coin2.pm @@ -0,0 +1,56 @@ +//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_1" = coin1=1 &coin2=1 ; +rewards "steps" + true : 1; +endrewards + + + diff --git a/examples/pmdp/coin/coin.prctl b/examples/pmdp/coin2/coin2.prctl similarity index 100% rename from examples/pmdp/coin/coin.prctl rename to examples/pmdp/coin2/coin2.prctl diff --git a/examples/pmdp/coin/coin2_128.pm b/examples/pmdp/coin2/coin2_128.pm similarity index 100% rename from examples/pmdp/coin/coin2_128.pm rename to examples/pmdp/coin2/coin2_128.pm diff --git a/examples/pmdp/coin/coin2_16.pm b/examples/pmdp/coin2/coin2_16.pm similarity index 100% rename from examples/pmdp/coin/coin2_16.pm rename to examples/pmdp/coin2/coin2_16.pm diff --git a/examples/pmdp/coin/coin2_2.pm b/examples/pmdp/coin2/coin2_2.pm similarity index 100% rename from examples/pmdp/coin/coin2_2.pm rename to examples/pmdp/coin2/coin2_2.pm diff --git a/examples/pmdp/coin/coin2_32.pm b/examples/pmdp/coin2/coin2_32.pm similarity index 100% rename from examples/pmdp/coin/coin2_32.pm rename to examples/pmdp/coin2/coin2_32.pm diff --git a/examples/pmdp/coin/coin2_4.pm b/examples/pmdp/coin2/coin2_4.pm similarity index 100% rename from examples/pmdp/coin/coin2_4.pm rename to examples/pmdp/coin2/coin2_4.pm diff --git a/examples/pmdp/coin/coin2_64.pm b/examples/pmdp/coin2/coin2_64.pm similarity index 100% rename from examples/pmdp/coin/coin2_64.pm rename to examples/pmdp/coin2/coin2_64.pm diff --git a/examples/pmdp/coin/coin2_7.pm b/examples/pmdp/coin2/coin2_7.pm similarity index 100% rename from examples/pmdp/coin/coin2_7.pm rename to examples/pmdp/coin2/coin2_7.pm diff --git a/examples/pmdp/coin/coin2_8.pm b/examples/pmdp/coin2/coin2_8.pm similarity index 100% rename from examples/pmdp/coin/coin2_8.pm rename to examples/pmdp/coin2/coin2_8.pm diff --git a/examples/pmdp/coin/coin2_regions.txt b/examples/pmdp/coin2/coin2_regions.txt similarity index 100% rename from examples/pmdp/coin/coin2_regions.txt rename to examples/pmdp/coin2/coin2_regions.txt diff --git a/examples/pmdp/coin2/models b/examples/pmdp/coin2/models new file mode 100644 index 000000000..0650def19 --- /dev/null +++ b/examples/pmdp/coin2/models @@ -0,0 +1,5 @@ +coin2.pm -const K=2 +coin2.pm -const K=8 +coin2.pm -const K=32 +coin2.pm -const K=64 +coin2.pm -const K=128 diff --git a/examples/pmdp/coin4/coin2.prctl b/examples/pmdp/coin4/coin2.prctl new file mode 100644 index 000000000..2fe017f65 --- /dev/null +++ b/examples/pmdp/coin4/coin2.prctl @@ -0,0 +1,4 @@ +P>=0.25 [ F "finished"&"all_coins_equal_1" ] + + + diff --git a/examples/pmdp/coin4/coin4.pm b/examples/pmdp/coin4/coin4.pm new file mode 100644 index 000000000..bdb4bd877 --- /dev/null +++ b/examples/pmdp/coin4/coin4.pm @@ -0,0 +1,61 @@ +//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 ; +rewards "steps" + true : 1; +endrewards + + + diff --git a/examples/pmdp/coin/coin4_16.pm b/examples/pmdp/coin4/coin4_16.pm similarity index 100% rename from examples/pmdp/coin/coin4_16.pm rename to examples/pmdp/coin4/coin4_16.pm diff --git a/examples/pmdp/coin/coin4_2.pm b/examples/pmdp/coin4/coin4_2.pm similarity index 100% rename from examples/pmdp/coin/coin4_2.pm rename to examples/pmdp/coin4/coin4_2.pm diff --git a/examples/pmdp/coin/coin4_32.pm b/examples/pmdp/coin4/coin4_32.pm similarity index 100% rename from examples/pmdp/coin/coin4_32.pm rename to examples/pmdp/coin4/coin4_32.pm diff --git a/examples/pmdp/coin/coin4_4.pm b/examples/pmdp/coin4/coin4_4.pm similarity index 100% rename from examples/pmdp/coin/coin4_4.pm rename to examples/pmdp/coin4/coin4_4.pm diff --git a/examples/pmdp/coin/coin4_64.pm b/examples/pmdp/coin4/coin4_64.pm similarity index 100% rename from examples/pmdp/coin/coin4_64.pm rename to examples/pmdp/coin4/coin4_64.pm diff --git a/examples/pmdp/coin/coin4_8.pm b/examples/pmdp/coin4/coin4_8.pm similarity index 100% rename from examples/pmdp/coin/coin4_8.pm rename to examples/pmdp/coin4/coin4_8.pm diff --git a/examples/pmdp/coin/coin4_regions.txt b/examples/pmdp/coin4/coin4_regions.txt similarity index 100% rename from examples/pmdp/coin/coin4_regions.txt rename to examples/pmdp/coin4/coin4_regions.txt diff --git a/examples/pmdp/coin4/models b/examples/pmdp/coin4/models new file mode 100644 index 000000000..3083a6829 --- /dev/null +++ b/examples/pmdp/coin4/models @@ -0,0 +1,3 @@ +coin4.pm -const K=2 +coin4.pm -const K=4 +coin4.pm -const K=8 diff --git a/examples/pmdp/firewire/firewire.prop b/examples/pmdp/firewire/firewire.prctl similarity index 100% rename from examples/pmdp/firewire/firewire.prop rename to examples/pmdp/firewire/firewire.prctl diff --git a/examples/pmdp/firewire/firewire_3.pm b/examples/pmdp/firewire/firewire3.pm similarity index 100% rename from examples/pmdp/firewire/firewire_3.pm rename to examples/pmdp/firewire/firewire3.pm diff --git a/examples/pmdp/firewire/firewire_36.pm b/examples/pmdp/firewire/firewire36.pm similarity index 100% rename from examples/pmdp/firewire/firewire_36.pm rename to examples/pmdp/firewire/firewire36.pm diff --git a/examples/pmdp/firewire/firewire_regions.txt b/examples/pmdp/firewire/firewire_regions.txt new file mode 100644 index 000000000..c7c9b5a9f --- /dev/null +++ b/examples/pmdp/firewire/firewire_regions.txt @@ -0,0 +1,625 @@ +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/janitor/janitor.pm b/examples/pmdp/janitor/janitor.pm new file mode 100644 index 000000000..1005d3e32 --- /dev/null +++ b/examples/pmdp/janitor/janitor.pm @@ -0,0 +1,124 @@ +// 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 new file mode 100644 index 000000000..959df1e88 --- /dev/null +++ b/examples/pmdp/reporter2/reporter2.prctl @@ -0,0 +1 @@ +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 new file mode 100644 index 000000000..e8ec99525 --- /dev/null +++ b/examples/pmdp/reporter2/reporter2_25_25_5_5.pm @@ -0,0 +1,73 @@ +// 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 new file mode 100644 index 000000000..68269cfbb --- /dev/null +++ b/examples/pmdp/reporter2/reporter2_6_6_2_2.pm @@ -0,0 +1,73 @@ +// 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 new file mode 100644 index 000000000..8e3b7580c --- /dev/null +++ b/examples/pmdp/reporter2/reporter2_regions.txt @@ -0,0 +1,625 @@ +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/reporter4/models b/examples/pmdp/reporter4/models new file mode 100644 index 000000000..86c5e92ac --- /dev/null +++ b/examples/pmdp/reporter4/models @@ -0,0 +1,3 @@ +reporter4.pm -const Xsize=6,Ysize=6,MAXTRIES=2,B=2 +reporter4.pm -const Xsize=25,Ysize=25,MAXTRIES=5,B=5 +reporter4.pm -const Xsize=50,Ysize=50,MAXTRIES=8,B=8 diff --git a/examples/pmdp/reporter4/reporter25_25_5_5.pm b/examples/pmdp/reporter4/reporter25_25_5_5.pm new file mode 100644 index 000000000..ef8ac7bdf --- /dev/null +++ b/examples/pmdp/reporter4/reporter25_25_5_5.pm @@ -0,0 +1,73 @@ +// 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 new file mode 100644 index 000000000..1b4227741 --- /dev/null +++ b/examples/pmdp/reporter4/reporter4.pm @@ -0,0 +1,73 @@ +// 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 new file mode 100644 index 000000000..959df1e88 --- /dev/null +++ b/examples/pmdp/reporter4/reporter4.prctl @@ -0,0 +1 @@ +P>0.3[F "Crash" ] diff --git a/examples/pmdp/reporter4/reporter4_regions.txt b/examples/pmdp/reporter4/reporter4_regions.txt new file mode 100644 index 000000000..9b1faa972 --- /dev/null +++ b/examples/pmdp/reporter4/reporter4_regions.txt @@ -0,0 +1,625 @@ +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/reporter6_6_2_2.pm b/examples/pmdp/reporter4/reporter6_6_2_2.pm new file mode 100644 index 000000000..1ce47c201 --- /dev/null +++ b/examples/pmdp/reporter4/reporter6_6_2_2.pm @@ -0,0 +1,73 @@ +// 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/zeroconf/models b/examples/pmdp/zeroconf/models new file mode 100644 index 000000000..ae90eae00 --- /dev/null +++ b/examples/pmdp/zeroconf/models @@ -0,0 +1,4 @@ +zeroconf.pm -const K=2 +zeroconf.pm -const K=4 +zeroconf.pm -const K=6 +zeroconf.pm -const K=7 diff --git a/examples/pmdp/zeroconf/zeroconf.pm b/examples/pmdp/zeroconf/zeroconf.pm new file mode 100644 index 000000000..9c71181f2 --- /dev/null +++ b/examples/pmdp/zeroconf/zeroconf.pm @@ -0,0 +1,258 @@ +// 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 diff --git a/examples/pmdp/zeroconf/zeroconf.prop b/examples/pmdp/zeroconf/zeroconf.prctl similarity index 100% rename from examples/pmdp/zeroconf/zeroconf.prop rename to examples/pmdp/zeroconf/zeroconf.prctl diff --git a/examples/pmdp/zeroconf/zeroconf_2.nm b/examples/pmdp/zeroconf/zeroconf2.pm similarity index 100% rename from examples/pmdp/zeroconf/zeroconf_2.nm rename to examples/pmdp/zeroconf/zeroconf2.pm diff --git a/examples/pmdp/zeroconf/zeroconf3.pm b/examples/pmdp/zeroconf/zeroconf3.pm new file mode 100644 index 000000000..9cd95ac4b --- /dev/null +++ b/examples/pmdp/zeroconf/zeroconf3.pm @@ -0,0 +1,258 @@ +// 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/zeroconf_4.nm b/examples/pmdp/zeroconf/zeroconf4.pm similarity index 100% rename from examples/pmdp/zeroconf/zeroconf_4.nm rename to examples/pmdp/zeroconf/zeroconf4.pm diff --git a/examples/pmdp/zeroconf/zeroconf5.pm b/examples/pmdp/zeroconf/zeroconf5.pm new file mode 100644 index 000000000..e13a42d9f --- /dev/null +++ b/examples/pmdp/zeroconf/zeroconf5.pm @@ -0,0 +1,258 @@ +// 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/zeroconf_6.nm b/examples/pmdp/zeroconf/zeroconf6.pm similarity index 100% rename from examples/pmdp/zeroconf/zeroconf_6.nm rename to examples/pmdp/zeroconf/zeroconf6.pm diff --git a/examples/pmdp/zeroconf/zeroconf7.pm b/examples/pmdp/zeroconf/zeroconf7.pm new file mode 100644 index 000000000..445882db8 --- /dev/null +++ b/examples/pmdp/zeroconf/zeroconf7.pm @@ -0,0 +1,258 @@ +// 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/zeroconf_8.nm b/examples/pmdp/zeroconf/zeroconf8.pm similarity index 100% rename from examples/pmdp/zeroconf/zeroconf_8.nm rename to examples/pmdp/zeroconf/zeroconf8.pm diff --git a/examples/pmdp/zeroconf/zeroconf_regions.txt b/examples/pmdp/zeroconf/zeroconf_regions.txt new file mode 100644 index 000000000..1cdf24689 --- /dev/null +++ b/examples/pmdp/zeroconf/zeroconf_regions.txt @@ -0,0 +1,625 @@ +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/src/modelchecker/region/AbstractSparseRegionModelChecker.cpp b/src/modelchecker/region/AbstractSparseRegionModelChecker.cpp index a97be5ce4..f41c143df 100644 --- a/src/modelchecker/region/AbstractSparseRegionModelChecker.cpp +++ b/src/modelchecker/region/AbstractSparseRegionModelChecker.cpp @@ -482,6 +482,7 @@ namespace storm { outstream << " " << timeSmtInMilliseconds.count() << "ms Smt solving" << std::endl; outstream << "-----------------------------------------------" << std::endl; + outstream << "CSV format;" << timeOverallInMilliseconds.count() << ";" << this->numOfRegionsAllSat << ";" << this->numOfRegionsAllViolated << ";" << this->numOfRegionsExistsBoth << ";" << (this->numOfCheckedRegions-numOfSolvedRegions) << std::endl; } diff --git a/test/functional/modelchecker/SparseDtmcRegionModelCheckerTest.cpp b/test/functional/modelchecker/SparseDtmcRegionModelCheckerTest.cpp index 59551522d..26815f303 100644 --- a/test/functional/modelchecker/SparseDtmcRegionModelCheckerTest.cpp +++ b/test/functional/modelchecker/SparseDtmcRegionModelCheckerTest.cpp @@ -78,7 +78,7 @@ TEST(SparseDtmcRegionModelCheckerTest, Brp_Prob) { } TEST(SparseDtmcRegionModelCheckerTest, Brp_Rew) { - std::string const& programFile = STORM_CPP_BASE_PATH "/examples/pdtmc/brp_rewards/brp_rewards16_2.pm"; + std::string const& programFile = STORM_CPP_BASE_PATH "/examples/pdtmc/brp_rewards4/brp_rewards16_2.pm"; std::string const& formulaAsString = "R>2.5 [F ((s=5) | (s=0&srep=3)) ]"; std::string const& constantsAsString = "pL=0.9,TOAck=0.5"; @@ -163,7 +163,7 @@ TEST(SparseDtmcRegionModelCheckerTest, Brp_Rew) { TEST(SparseDtmcRegionModelCheckerTest, Brp_Rew_Infty) { - std::string const& programFile = STORM_CPP_BASE_PATH "/examples/pdtmc/brp_rewards/brp_rewards16_2.pm"; + std::string const& programFile = STORM_CPP_BASE_PATH "/examples/pdtmc/brp_rewards4/brp_rewards16_2.pm"; std::string const& formulaAsString = "R>2.5 [F (s=0&srep=3) ]"; std::string const& constantsAsString = ""; @@ -200,7 +200,7 @@ TEST(SparseDtmcRegionModelCheckerTest, Brp_Rew_Infty) { TEST(SparseDtmcRegionModelCheckerTest, Brp_Rew_4Par) { - std::string const& programFile = STORM_CPP_BASE_PATH "/examples/pdtmc/brp_rewards/brp_rewards16_2.pm"; + std::string const& programFile = STORM_CPP_BASE_PATH "/examples/pdtmc/brp_rewards4/brp_rewards16_2.pm"; std::string const& formulaAsString = "R>2.5 [F ((s=5) | (s=0&srep=3)) ]"; std::string const& constantsAsString = ""; //!! this model will have 4 parameters diff --git a/test/functional/modelchecker/SparseMdpRegionModelCheckerTest.cpp b/test/functional/modelchecker/SparseMdpRegionModelCheckerTest.cpp index bedb3048b..2bb539f24 100644 --- a/test/functional/modelchecker/SparseMdpRegionModelCheckerTest.cpp +++ b/test/functional/modelchecker/SparseMdpRegionModelCheckerTest.cpp @@ -74,7 +74,7 @@ TEST(SparseMdpRegionModelCheckerTest, two_dice_Prob) { TEST(SparseMdpRegionModelCheckerTest, coin_Prob) { - std::string const& programFile = STORM_CPP_BASE_PATH "/examples/pmdp/coin/coin2_2.pm"; + std::string const& programFile = STORM_CPP_BASE_PATH "/examples/pmdp/coin2/coin2_2.pm"; std::string const& formulaAsString = "P>0.25 [F \"finished\"&\"all_coins_equal_1\" ]"; std::string const& constantsAsString = ""; //e.g. pL=0.9,TOACK=0.5