Browse Source

Added benchmarks

Former-commit-id: 6979a9aece
main
TimQu 11 years ago
parent
commit
3ce8643d96
  1. 41
      examples/benchmarkRegions.sh
  2. 135
      examples/pdtmc/brp/brp.pm
  3. 5
      examples/pdtmc/brp/models
  4. 625
      examples/pdtmc/brp_rewards/brp_rewards_rew_regions.txt
  5. 146
      examples/pdtmc/brp_rewards2/brp_rewards16_2.pm
  6. 146
      examples/pdtmc/brp_rewards2/brp_rewards2.pm
  7. 0
      examples/pdtmc/brp_rewards2/brp_rewards2.prctl
  8. 147
      examples/pdtmc/brp_rewards2/brp_rewards256_5.pm
  9. 0
      examples/pdtmc/brp_rewards2/brp_rewards2_regions.txt
  10. 147
      examples/pdtmc/brp_rewards2/brp_rewards512_5.pm
  11. 147
      examples/pdtmc/brp_rewards2/brp_rewards64_4.pm
  12. 4
      examples/pdtmc/brp_rewards2/models
  13. 0
      examples/pdtmc/brp_rewards4/brp_rewards16_2.pm
  14. 0
      examples/pdtmc/brp_rewards4/brp_rewards256_5.pm
  15. 146
      examples/pdtmc/brp_rewards4/brp_rewards4.pm
  16. 2
      examples/pdtmc/brp_rewards4/brp_rewards4.prctl
  17. 0
      examples/pdtmc/brp_rewards4/brp_rewards4_regions.txt
  18. 0
      examples/pdtmc/brp_rewards4/brp_rewards512_5.pm
  19. 0
      examples/pdtmc/brp_rewards4/brp_rewards64_4.pm
  20. 2
      examples/pdtmc/brp_rewards4/models
  21. 194
      examples/pdtmc/crowds/crowds.pm
  22. 2
      examples/pdtmc/crowds/models
  23. 3
      examples/pdtmc/nand/models
  24. 75
      examples/pdtmc/nand/nand.pm
  25. 16
      examples/pdtmc/tiny/tiny.pm
  26. 139
      examples/pmdp/brp/brp.pm
  27. 4
      examples/pmdp/brp/models
  28. 56
      examples/pmdp/coin2/coin2.pm
  29. 0
      examples/pmdp/coin2/coin2.prctl
  30. 0
      examples/pmdp/coin2/coin2_128.pm
  31. 0
      examples/pmdp/coin2/coin2_16.pm
  32. 0
      examples/pmdp/coin2/coin2_2.pm
  33. 0
      examples/pmdp/coin2/coin2_32.pm
  34. 0
      examples/pmdp/coin2/coin2_4.pm
  35. 0
      examples/pmdp/coin2/coin2_64.pm
  36. 0
      examples/pmdp/coin2/coin2_7.pm
  37. 0
      examples/pmdp/coin2/coin2_8.pm
  38. 0
      examples/pmdp/coin2/coin2_regions.txt
  39. 5
      examples/pmdp/coin2/models
  40. 4
      examples/pmdp/coin4/coin2.prctl
  41. 61
      examples/pmdp/coin4/coin4.pm
  42. 0
      examples/pmdp/coin4/coin4_16.pm
  43. 0
      examples/pmdp/coin4/coin4_2.pm
  44. 0
      examples/pmdp/coin4/coin4_32.pm
  45. 0
      examples/pmdp/coin4/coin4_4.pm
  46. 0
      examples/pmdp/coin4/coin4_64.pm
  47. 0
      examples/pmdp/coin4/coin4_8.pm
  48. 0
      examples/pmdp/coin4/coin4_regions.txt
  49. 3
      examples/pmdp/coin4/models
  50. 0
      examples/pmdp/firewire/firewire.prctl
  51. 0
      examples/pmdp/firewire/firewire3.pm
  52. 0
      examples/pmdp/firewire/firewire36.pm
  53. 625
      examples/pmdp/firewire/firewire_regions.txt
  54. 124
      examples/pmdp/janitor/janitor.pm
  55. 4
      examples/pmdp/reporter2/models
  56. 73
      examples/pmdp/reporter2/reporter2.pm
  57. 1
      examples/pmdp/reporter2/reporter2.prctl
  58. 73
      examples/pmdp/reporter2/reporter2_25_25_5_5.pm
  59. 73
      examples/pmdp/reporter2/reporter2_6_6_2_2.pm
  60. 625
      examples/pmdp/reporter2/reporter2_regions.txt
  61. 3
      examples/pmdp/reporter4/models
  62. 73
      examples/pmdp/reporter4/reporter25_25_5_5.pm
  63. 73
      examples/pmdp/reporter4/reporter4.pm
  64. 1
      examples/pmdp/reporter4/reporter4.prctl
  65. 625
      examples/pmdp/reporter4/reporter4_regions.txt
  66. 73
      examples/pmdp/reporter4/reporter6_6_2_2.pm
  67. 4
      examples/pmdp/zeroconf/models
  68. 258
      examples/pmdp/zeroconf/zeroconf.pm
  69. 0
      examples/pmdp/zeroconf/zeroconf.prctl
  70. 0
      examples/pmdp/zeroconf/zeroconf2.pm
  71. 258
      examples/pmdp/zeroconf/zeroconf3.pm
  72. 0
      examples/pmdp/zeroconf/zeroconf4.pm
  73. 258
      examples/pmdp/zeroconf/zeroconf5.pm
  74. 0
      examples/pmdp/zeroconf/zeroconf6.pm
  75. 258
      examples/pmdp/zeroconf/zeroconf7.pm
  76. 0
      examples/pmdp/zeroconf/zeroconf8.pm
  77. 625
      examples/pmdp/zeroconf/zeroconf_regions.txt
  78. 1
      src/modelchecker/region/AbstractSparseRegionModelChecker.cpp
  79. 6
      test/functional/modelchecker/SparseDtmcRegionModelCheckerTest.cpp
  80. 2
      test/functional/modelchecker/SparseMdpRegionModelCheckerTest.cpp

41
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

135
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<MAX) -> (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1);
[] (s=3) & (nrtr=MAX) & (i<N) -> (s'=5) & (srep'=1);
[] (s=3) & (nrtr=MAX) & (i=N) -> (s'=5) & (srep'=2);
// success
[] (s=4) & (i<N) -> (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

5
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

625
examples/pdtmc/brp_rewards/brp_rewards_rew_regions.txt

@ -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;

146
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<MAX) -> (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1);
[] (s=3) & (nrtr=MAX) & (i<N) -> (s'=5) & (srep'=1);
[] (s=3) & (nrtr=MAX) & (i=N) -> (s'=5) & (srep'=2);
// success
[] (s=4) & (i<N) -> (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

146
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<MAX) -> (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1);
[] (s=3) & (nrtr=MAX) & (i<N) -> (s'=5) & (srep'=1);
[] (s=3) & (nrtr=MAX) & (i=N) -> (s'=5) & (srep'=2);
// success
[] (s=4) & (i<N) -> (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

0
examples/pdtmc/brp_rewards/brp_rewards.prctl → examples/pdtmc/brp_rewards2/brp_rewards2.prctl

147
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<MAX) -> (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1);
[] (s=3) & (nrtr=MAX) & (i<N) -> (s'=5) & (srep'=1);
[] (s=3) & (nrtr=MAX) & (i=N) -> (s'=5) & (srep'=2);
// success
[] (s=4) & (i<N) -> (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

0
examples/pdtmc/brp_rewards/brp_rewards_prob_regions.txt → examples/pdtmc/brp_rewards2/brp_rewards2_regions.txt

147
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<MAX) -> (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1);
[] (s=3) & (nrtr=MAX) & (i<N) -> (s'=5) & (srep'=1);
[] (s=3) & (nrtr=MAX) & (i=N) -> (s'=5) & (srep'=2);
// success
[] (s=4) & (i<N) -> (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

147
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<MAX) -> (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1);
[] (s=3) & (nrtr=MAX) & (i<N) -> (s'=5) & (srep'=1);
[] (s=3) & (nrtr=MAX) & (i=N) -> (s'=5) & (srep'=2);
// success
[] (s=4) & (i<N) -> (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

4
examples/pdtmc/brp_rewards2/models

@ -0,0 +1,4 @@
brp.pm -const N=512,MAX=5
brp.pm -const N=1024,MAX=5

0
examples/pdtmc/brp_rewards/brp_rewards16_2.pm → examples/pdtmc/brp_rewards4/brp_rewards16_2.pm

0
examples/pdtmc/brp_rewards/brp_rewards256_5.pm → examples/pdtmc/brp_rewards4/brp_rewards256_5.pm

146
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<MAX) -> (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1);
[] (s=3) & (nrtr=MAX) & (i<N) -> (s'=5) & (srep'=1);
[] (s=3) & (nrtr=MAX) & (i=N) -> (s'=5) & (srep'=2);
// success
[] (s=4) & (i<N) -> (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

2
examples/pdtmc/brp_rewards4/brp_rewards4.prctl

@ -0,0 +1,2 @@
R<3 [ F ((s=5) | (s=0&srep=3)) ]

0
examples/pdtmc/brp_rewards/brp_rewards_regions.txt → examples/pdtmc/brp_rewards4/brp_rewards4_regions.txt

0
examples/pdtmc/brp_rewards/brp_rewards512_5.pm → examples/pdtmc/brp_rewards4/brp_rewards512_5.pm

0
examples/pdtmc/brp_rewards/brp_rewards64_4.pm → examples/pdtmc/brp_rewards4/brp_rewards64_4.pm

2
examples/pdtmc/brp_rewards4/models

@ -0,0 +1,2 @@
brp.pm -const N=512,MAX=5
brp.pm -const N=1024,MAX=5

194
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 <TotalRuns -> (observe0' =observe0 +1) & (deliver'=true) & (run'=true) & (badObserve'=false);
[] lastSeen=1 & badObserve & observe1 <TotalRuns -> (observe1' =observe1 +1) & (deliver'=true) & (run'=true) & (badObserve'=false);
[] lastSeen=2 & badObserve & observe2 <TotalRuns -> (observe2' =observe2 +1) & (deliver'=true) & (run'=true) & (badObserve'=false);
[] lastSeen=3 & badObserve & observe3 <TotalRuns -> (observe3' =observe3 +1) & (deliver'=true) & (run'=true) & (badObserve'=false);
[] lastSeen=4 & badObserve & observe4 <TotalRuns -> (observe4' =observe4 +1) & (deliver'=true) & (run'=true) & (badObserve'=false);
[] lastSeen=5 & badObserve & observe5 <TotalRuns -> (observe5' =observe5 +1) & (deliver'=true) & (run'=true) & (badObserve'=false);
[] lastSeen=6 & badObserve & observe6 <TotalRuns -> (observe6' =observe6 +1) & (deliver'=true) & (run'=true) & (badObserve'=false);
[] lastSeen=7 & badObserve & observe7 <TotalRuns -> (observe7' =observe7 +1) & (deliver'=true) & (run'=true) & (badObserve'=false);
[] lastSeen=8 & badObserve & observe8 <TotalRuns -> (observe8' =observe8 +1) & (deliver'=true) & (run'=true) & (badObserve'=false);
[] lastSeen=9 & badObserve & observe9 <TotalRuns -> (observe9' =observe9 +1) & (deliver'=true) & (run'=true) & (badObserve'=false);
[] lastSeen=10 & badObserve & observe10<TotalRuns -> (observe10'=observe10+1) & (deliver'=true) & (run'=true) & (badObserve'=false);
[] lastSeen=11 & badObserve & observe11<TotalRuns -> (observe11'=observe11+1) & (deliver'=true) & (run'=true) & (badObserve'=false);
[] lastSeen=12 & badObserve & observe12<TotalRuns -> (observe12'=observe12+1) & (deliver'=true) & (run'=true) & (badObserve'=false);
[] lastSeen=13 & badObserve & observe13<TotalRuns -> (observe13'=observe13+1) & (deliver'=true) & (run'=true) & (badObserve'=false);
[] lastSeen=14 & badObserve & observe14<TotalRuns -> (observe14'=observe14+1) & (deliver'=true) & (run'=true) & (badObserve'=false);
[] lastSeen=15 & badObserve & observe15<TotalRuns -> (observe15'=observe15+1) & (deliver'=true) & (run'=true) & (badObserve'=false);
[] lastSeen=16 & badObserve & observe16<TotalRuns -> (observe16'=observe16+1) & (deliver'=true) & (run'=true) & (badObserve'=false);
[] lastSeen=17 & badObserve & observe17<TotalRuns -> (observe17'=observe17+1) & (deliver'=true) & (run'=true) & (badObserve'=false);
[] lastSeen=18 & badObserve & observe18<TotalRuns -> (observe18'=observe18+1) & (deliver'=true) & (run'=true) & (badObserve'=false);
[] lastSeen=19 & badObserve & observe19<TotalRuns -> (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;

2
examples/pdtmc/crowds/models

@ -0,0 +1,2 @@
crowds.pm -const CrowdSize=10,TotalRuns=5
crowds.pm -const CrowdSize=15,TotalRuns=5

3
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

75
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<N) -> (s'=1); // do next nand if have not done N yet
[] s=0 & (c=N) & (u<M) -> (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<N -> 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<N & c<N -> (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<N -> (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

16
examples/pdtmc/tiny/tiny.pm

@ -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

139
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<MAX) -> (s'=2) & (fs'=(i=1)) & (ls'=(i=N)) & (bs'=s_ab) & (nrtr'=nrtr+1);
[] (s=3) & (nrtr=MAX) & (i<N) -> (s'=5) & (srep'=1);
[] (s=3) & (nrtr=MAX) & (i=N) -> (s'=5) & (srep'=2);
// success
[] (s=4) & (i<N) -> (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

4
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

56
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<range) -> (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<right) -> (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

0
examples/pmdp/coin/coin.prctl → examples/pmdp/coin2/coin2.prctl

0
examples/pmdp/coin/coin2_128.pm → examples/pmdp/coin2/coin2_128.pm

0
examples/pmdp/coin/coin2_16.pm → examples/pmdp/coin2/coin2_16.pm

0
examples/pmdp/coin/coin2_2.pm → examples/pmdp/coin2/coin2_2.pm

0
examples/pmdp/coin/coin2_32.pm → examples/pmdp/coin2/coin2_32.pm

0
examples/pmdp/coin/coin2_4.pm → examples/pmdp/coin2/coin2_4.pm

0
examples/pmdp/coin/coin2_64.pm → examples/pmdp/coin2/coin2_64.pm

0
examples/pmdp/coin/coin2_7.pm → examples/pmdp/coin2/coin2_7.pm

0
examples/pmdp/coin/coin2_8.pm → examples/pmdp/coin2/coin2_8.pm

0
examples/pmdp/coin/coin2_regions.txt → examples/pmdp/coin2/coin2_regions.txt

5
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

4
examples/pmdp/coin4/coin2.prctl

@ -0,0 +1,4 @@
P>=0.25 [ F "finished"&"all_coins_equal_1" ]

61
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<range) -> (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<right) -> (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

0
examples/pmdp/coin/coin4_16.pm → examples/pmdp/coin4/coin4_16.pm

0
examples/pmdp/coin/coin4_2.pm → examples/pmdp/coin4/coin4_2.pm

0
examples/pmdp/coin/coin4_32.pm → examples/pmdp/coin4/coin4_32.pm

0
examples/pmdp/coin/coin4_4.pm → examples/pmdp/coin4/coin4_4.pm

0
examples/pmdp/coin/coin4_64.pm → examples/pmdp/coin4/coin4_64.pm

0
examples/pmdp/coin/coin4_8.pm → examples/pmdp/coin4/coin4_8.pm

0
examples/pmdp/coin/coin4_regions.txt → examples/pmdp/coin4/coin4_regions.txt

3
examples/pmdp/coin4/models

@ -0,0 +1,3 @@
coin4.pm -const K=2
coin4.pm -const K=4
coin4.pm -const K=8

0
examples/pmdp/firewire/firewire.prop → examples/pmdp/firewire/firewire.prctl

0
examples/pmdp/firewire/firewire_3.pm → examples/pmdp/firewire/firewire3.pm

0
examples/pmdp/firewire/firewire_36.pm → examples/pmdp/firewire/firewire36.pm

625
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;

124
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 TACAS16
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<maxSteps & !C) -> 1:(count'=count+1);
[turnLeft] (count<maxSteps & !C) -> 1:(count'=count+1);
[turnRight] (count<maxSteps & !C) -> 1:(count'=count+1);
[forward] (count<maxSteps & C) -> 1:(count'=maxSteps);
[turnLeft] (count<maxSteps & C) -> 1:(count'=maxSteps);
[turnRight] (count<maxSteps & C) -> 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<jXmax & 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 & xJ<jXmax & xJ>jXmin) -> 0.3333:(yJ'=yJ+1) + 0.6667*jProbW:(xJ'=xJ-1) + 0.6667*jProbE:(xJ'=xJ+1);
[forward] (yJ<jYmax & yJ>jYmin & xJ=jXmax) -> 0.6667*jProbN:(yJ'=yJ+1) + 0.6667*jProbS:(yJ'=yJ-1) + 0.3333:(xJ'=xJ-1);
[forward] (yJ<jYmax & yJ>jYmin & xJ=jXmin) -> 0.6667*jProbN:(yJ'=yJ+1) + 0.6667*jProbS:(yJ'=yJ-1) + 0.3333:(xJ'=xJ+1);
[forward] (yJ<jYmax & yJ>jYmin & xJ<jXmax & xJ>jXmin) -> 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<jXmax & 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 & xJ<jXmax & xJ>jXmin) -> 0.3333:(yJ'=yJ+1) + 0.6667*jProbW:(xJ'=xJ-1) + 0.6667*jProbE:(xJ'=xJ+1);
[turnLeft] (yJ<jYmax & yJ>jYmin & xJ=jXmax) -> 0.6667*jProbN:(yJ'=yJ+1) + 0.6667*jProbS:(yJ'=yJ-1) + 0.3333:(xJ'=xJ-1);
[turnLeft] (yJ<jYmax & yJ>jYmin & xJ=jXmin) -> 0.6667*jProbN:(yJ'=yJ+1) + 0.6667*jProbS:(yJ'=yJ-1) + 0.3333:(xJ'=xJ+1);
[turnLeft] (yJ<jYmax & yJ>jYmin & xJ<jXmax & xJ>jXmin) -> 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<jXmax & 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 & xJ<jXmax & xJ>jXmin) -> 0.3333:(yJ'=yJ+1) + 0.6667*jProbW:(xJ'=xJ-1) + 0.6667*jProbE:(xJ'=xJ+1);
[turnRight] (yJ<jYmax & yJ>jYmin & xJ=jXmax) -> 0.6667*jProbN:(yJ'=yJ+1) + 0.6667*jProbS:(yJ'=yJ-1) + 0.3333:(xJ'=xJ-1);
[turnRight] (yJ<jYmax & yJ>jYmin & xJ=jXmin) -> 0.6667*jProbN:(yJ'=yJ+1) + 0.6667*jProbS:(yJ'=yJ-1) + 0.3333:(xJ'=xJ+1);
[turnRight] (yJ<jYmax & yJ>jYmin & xJ<jXmax & xJ>jXmin) -> 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<maxSteps) & !C;
label "Crash" = C;

4
examples/pmdp/reporter2/models

@ -0,0 +1,4 @@
reporter2.pm -const Xsize=6,Ysize=6,MAXTRIES=2,B=2
reporter2.pm -const Xsize=25,Ysize=25,MAXTRIES=5,B=5
reporter2.pm -const Xsize=50,Ysize=50,MAXTRIES=8,B=8
reporter2.pm -const Xsize=75,Ysize=75,MAXTRIES=10,B=10

73
examples/pmdp/reporter2/reporter2.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 TACAS16
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;

1
examples/pmdp/reporter2/reporter2.prctl

@ -0,0 +1 @@
P>0.3[F "Crash" ]

73
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 TACAS16
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;

73
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 TACAS16
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;

625
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;

3
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

73
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 TACAS16
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;

73
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 TACAS16
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;

1
examples/pmdp/reporter4/reporter4.prctl

@ -0,0 +1 @@
P>0.3[F "Crash" ]

625
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;

73
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 TACAS16
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;

4
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

258
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<MAXCOLL -> 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<LONGWAIT -> (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<K -> (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<CONSEC -> (x'=min(x+1,TIME_MAX_X));
[time] l=3 & mess=0 & defend=1 & x<CONSEC -> (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<DEFEND) -> (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

0
examples/pmdp/zeroconf/zeroconf.prop → examples/pmdp/zeroconf/zeroconf.prctl

0
examples/pmdp/zeroconf/zeroconf_2.nm → examples/pmdp/zeroconf/zeroconf2.pm

258
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<MAXCOLL -> 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<LONGWAIT -> (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<K -> (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<CONSEC -> (x'=min(x+1,TIME_MAX_X));
[time] l=3 & mess=0 & defend=1 & x<CONSEC -> (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<DEFEND) -> (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

0
examples/pmdp/zeroconf/zeroconf_4.nm → examples/pmdp/zeroconf/zeroconf4.pm

258
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<MAXCOLL -> 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<LONGWAIT -> (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<K -> (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<CONSEC -> (x'=min(x+1,TIME_MAX_X));
[time] l=3 & mess=0 & defend=1 & x<CONSEC -> (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<DEFEND) -> (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

0
examples/pmdp/zeroconf/zeroconf_6.nm → examples/pmdp/zeroconf/zeroconf6.pm

258
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<MAXCOLL -> 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<LONGWAIT -> (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<K -> (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<CONSEC -> (x'=min(x+1,TIME_MAX_X));
[time] l=3 & mess=0 & defend=1 & x<CONSEC -> (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<DEFEND) -> (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

0
examples/pmdp/zeroconf/zeroconf_8.nm → examples/pmdp/zeroconf/zeroconf8.pm

625
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;

1
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;
}

6
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

2
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

Loading…
Cancel
Save