Browse Source
Tidy up mutual (and add pp files).
Tidy up mutual (and add pp files).
git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@679 bbc10eb1-c90d-0410-af57-cb519fbb1720master
14 changed files with 201 additions and 261 deletions
-
7prism-examples/mutual/.autopp
-
66prism-examples/mutual/.mutualN.nm.pp
-
10prism-examples/mutual/auto
-
18prism-examples/mutual/mutual.pctl
-
39prism-examples/mutual/mutual10.nm
-
68prism-examples/mutual/mutual10.pctl
-
25prism-examples/mutual/mutual3.nm
-
25prism-examples/mutual/mutual3.pctl
-
27prism-examples/mutual/mutual4.nm
-
29prism-examples/mutual/mutual4.pctl
-
29prism-examples/mutual/mutual5.nm
-
33prism-examples/mutual/mutual5.pctl
-
35prism-examples/mutual/mutual8.nm
-
51prism-examples/mutual/mutual8.pctl
@ -0,0 +1,7 @@ |
|||||
|
#!/bin/csh |
||||
|
|
||||
|
foreach N ( 3 4 5 8 10 ) |
||||
|
echo "Generating for N=$N" |
||||
|
prismpp .mutualN.nm.pp $N >! mutual"$N".nm |
||||
|
unix2dos mutual"$N".nm |
||||
|
end |
||||
@ -0,0 +1,66 @@ |
|||||
|
#const N# |
||||
|
// mutual exclusion [PZ82] |
||||
|
// dxp/gxn 19/12/99 |
||||
|
|
||||
|
mdp |
||||
|
|
||||
|
// atomic formula |
||||
|
// none in low, high, tie |
||||
|
formula none_lht = #& i=2:N#!(p#i#>=4&p#i#<=13)#end#; |
||||
|
// some in admit |
||||
|
formula some_a = #| i=2:N#(p#i#>=14&p#i#<=15)#end#; |
||||
|
// some in high, admit |
||||
|
formula some_ha = #| i=2:N#(p#i#>=4&p#i#<=5|p#i#>=10&p#i#<=15)#end#; |
||||
|
// none in high, tie, admit |
||||
|
formula none_hta = #& i=2:N#(p#i#>=0&p#i#<=3|p#i#>=7&p#i#<=8)#end#; |
||||
|
// none in enter |
||||
|
formula none_e = #& i=2:N#!(p#i#>=2&p#i#<=3)#end#; |
||||
|
|
||||
|
|
||||
|
module process1 |
||||
|
|
||||
|
p1: [0..15]; |
||||
|
|
||||
|
[] p1=0 -> (p1'=0); |
||||
|
[] p1=0 -> (p1'=1); |
||||
|
[] p1=1 -> (p1'=2); |
||||
|
[] p1=2 & (none_lht | some_a) -> (p1'=3); |
||||
|
[] p1=2 & !(none_lht | some_a) -> (p1'=2); |
||||
|
[] p1=3 -> (p1'=4); |
||||
|
[] p1=3 -> (p1'=7); |
||||
|
[] p1=4 & some_ha -> (p1'=5); |
||||
|
[] p1=4 & !some_ha -> (p1'=10); |
||||
|
[] p1=5 -> (p1'=6); |
||||
|
[] p1=6 & some_ha -> (p1'=6); |
||||
|
[] p1=6 & !some_ha -> (p1'=9); |
||||
|
[] p1=7 & none_hta -> (p1'=8); |
||||
|
[] p1=7 & !none_hta -> (p1'=7); |
||||
|
[] p1=8 -> (p1'=9); |
||||
|
[] p1=9 -> 0.5 : (p1'=4) + 0.5 : (p1'=7); |
||||
|
[] p1=10 -> (p1'=11); |
||||
|
[] p1=11 & none_lht -> (p1'=13); |
||||
|
[] p1=11 & !none_lht -> (p1'=12); |
||||
|
[] p1=12 -> (p1'=0); |
||||
|
[] p1=13 -> (p1'=14); |
||||
|
[] p1=14 & none_e -> (p1'=15); |
||||
|
[] p1=14 & !none_e -> (p1'=14); |
||||
|
[] p1=15 -> (p1'=0); |
||||
|
|
||||
|
endmodule |
||||
|
|
||||
|
// construct further modules through renaming |
||||
|
|
||||
|
#for i=2:N# |
||||
|
module process#i# = process1 [ p1=p#i#, p#i#=p1 ] endmodule |
||||
|
#end# |
||||
|
|
||||
|
// formulas/labels for properties |
||||
|
|
||||
|
// number of procs in critical section |
||||
|
formula num_crit = #+ i=1:N#p#1#>9?1:0#end#; |
||||
|
// some process is between 4 and 13 |
||||
|
label "some_4_13" = #| i=1:N#(p#i#>=4&p#i#<=13)#end#; |
||||
|
// some process is in 14 |
||||
|
label "some_14" = #| i=1:N#(p#i#=14)#end#; |
||||
|
|
||||
|
|
||||
@ -1,7 +1,7 @@ |
|||||
#!/bin/csh |
#!/bin/csh |
||||
|
|
||||
prism mutual3.nm mutual3.pctl -fair |
|
||||
prism mutual4.nm mutual4.pctl -fair |
|
||||
prism mutual5.nm mutual5.pctl -fair |
|
||||
prism mutual8.nm mutual8.pctl -fair |
|
||||
prism mutual10.nm mutual10.pctl -fair |
|
||||
|
prism mutual3.nm mutual.pctl -fair |
||||
|
prism mutual4.nm mutual.pctl -fair |
||||
|
prism mutual5.nm mutual.pctl -fair |
||||
|
prism mutual8.nm mutual.pctl -fair |
||||
|
prism mutual10.nm mutual.pctl -fair |
||||
@ -0,0 +1,18 @@ |
|||||
|
// Theorem 1 (mutual exclusion) |
||||
|
|
||||
|
num_crit <= 1 |
||||
|
|
||||
|
// Lemma C |
||||
|
// If the crical section is occupied then eventually it becomes clear |
||||
|
|
||||
|
num_crit > 0 => P>=1 [ F num_crit = 0 ] |
||||
|
|
||||
|
// Lemma D |
||||
|
// If a process is between 4 and 13 (in our version) then eventually some process gets to 14 |
||||
|
|
||||
|
"some_4_13" => P>=1 [ F "some_14" ] |
||||
|
|
||||
|
// Theorem 2 (liveness) |
||||
|
// If process 1 tries then eventually it enters the critical section |
||||
|
|
||||
|
p1=1 => P>=1 [ F p1=10 ] |
||||
@ -1,68 +0,0 @@ |
|||||
// theorem 1 (mutual exclusion) |
|
||||
|
|
||||
(!((p1>9) & (p2>9))) & |
|
||||
(!((p1>9) & (p3>9))) & |
|
||||
(!((p1>9) & (p4>9))) & |
|
||||
(!((p1>9) & (p5>9))) & |
|
||||
(!((p1>9) & (p6>9))) & |
|
||||
(!((p1>9) & (p7>9))) & |
|
||||
(!((p1>9) & (p8>9))) & |
|
||||
(!((p1>9) & (p9>9))) & |
|
||||
(!((p1>9) & (p10>9))) & |
|
||||
(!((p2>9) & (p3>9))) & |
|
||||
(!((p2>9) & (p4>9))) & |
|
||||
(!((p2>9) & (p5>9))) & |
|
||||
(!((p2>9) & (p6>9))) & |
|
||||
(!((p2>9) & (p7>9))) & |
|
||||
(!((p2>9) & (p8>9))) & |
|
||||
(!((p2>9) & (p9>9))) & |
|
||||
(!((p2>9) & (p10>9))) & |
|
||||
(!((p3>9) & (p4>9))) & |
|
||||
(!((p3>9) & (p5>9))) & |
|
||||
(!((p3>9) & (p6>9))) & |
|
||||
(!((p3>9) & (p7>9))) & |
|
||||
(!((p3>9) & (p8>9))) & |
|
||||
(!((p3>9) & (p9>9))) & |
|
||||
(!((p3>9) & (p10>9))) & |
|
||||
(!((p4>9) & (p5>9))) & |
|
||||
(!((p4>9) & (p6>9))) & |
|
||||
(!((p4>9) & (p7>9))) & |
|
||||
(!((p4>9) & (p8>9))) & |
|
||||
(!((p4>9) & (p9>9))) & |
|
||||
(!((p4>9) & (p10>9))) & |
|
||||
(!((p5>9) & (p6>9))) & |
|
||||
(!((p5>9) & (p7>9))) & |
|
||||
(!((p5>9) & (p8>9))) & |
|
||||
(!((p5>9) & (p9>9))) & |
|
||||
(!((p5>9) & (p10>9))) & |
|
||||
(!((p6>9) & (p7>9))) & |
|
||||
(!((p6>9) & (p8>9))) & |
|
||||
(!((p6>9) & (p9>9))) & |
|
||||
(!((p6>9) & (p10>9))) & |
|
||||
(!((p7>9) & (p8>9))) & |
|
||||
(!((p7>9) & (p9>9))) & |
|
||||
(!((p7>9) & (p10>9))) & |
|
||||
(!((p8>9) & (p9>9))) & |
|
||||
(!((p8>9) & (p10>9))) & |
|
||||
(!((p9>9) & (p10>9))) |
|
||||
|
|
||||
// lemma c |
|
||||
// if the crical section is occupied then eventually it becomes clear |
|
||||
|
|
||||
(p1>9) | (p2>9) | (p3>9) | (p4>9) | (p5>9) | (p6>9) | (p7>9) | (p8>9) | (p9>9) | (p10>9) => |
|
||||
P>=1 [ true U (p1<10) & (p2<10) & (p3<10) & (p4<10) & (p5<10) & (p6<10) & (p7<10) & (p8<10) & (p9<10) & (p10<10) ] |
|
||||
|
|
||||
// lemma d |
|
||||
// if a process is between 4 and 13 (in our version) then eventually some process gets to 14 |
|
||||
|
|
||||
((p1>3) & (p1<14)) | ((p2>3) & (p2<14)) | ((p3>3) & (p3<14)) | ((p4>3) & (p4<14)) | ((p5>3) & (p5<14)) | ((p6>3) & (p6<14)) | ((p7>3) & (p7<14)) | ((p8>3) & (p8<14)) | ((p9>3) & (p9<14)) | ((p10>3) & (p10<14)) => |
|
||||
P>=1 [ true U (p1=14) | (p2=14) | (p3=14) | (p4=14) | (p5=14) | (p6=14) | (p7=14) | (p8=14) | (p9=14) | (p10=14) ] |
|
||||
|
|
||||
// theorem 2 (liveness) |
|
||||
// if process 1 tries then eventually it enters the critical section |
|
||||
|
|
||||
(p1=1) => P>=1 [ true U (p1=10) ] |
|
||||
|
|
||||
// not probability 1 |
|
||||
|
|
||||
P<=0.5 [ (p2!=10 & p3!=10) U (p1=10) ] |
|
||||
@ -1,25 +0,0 @@ |
|||||
// theorem 1 (mutual exclusion) |
|
||||
|
|
||||
!((p1>9) & (p2>9)) |
|
||||
& !((p1>9) & (p3>9)) |
|
||||
& !((p2>9) & (p3>9)) |
|
||||
|
|
||||
// lemma c |
|
||||
// if the crical section is occupied then eventually it becomes clear |
|
||||
|
|
||||
(p1>9) | (p2>9) | (p3>9) => P>=1 [ true U (p1<10) & (p2<10) & (p3<10) ] |
|
||||
|
|
||||
// lemma d |
|
||||
// if a process is between 4 and 13 (in our version) then eventually some process gets to 14 |
|
||||
|
|
||||
((p1>3) & (p1<14)) | ((p2>3) & (p2<14)) | ((p3>3) & (p3<14)) => P>=1 [ true U (p1=14) | (p2=14) | (p3=14) ] |
|
||||
|
|
||||
|
|
||||
// theorem 2 (liveness) |
|
||||
// if process 1 tries then eventually it enters the critical section |
|
||||
|
|
||||
(p1=1) => P>=1 [ true U (p1=10) ] |
|
||||
|
|
||||
// not probability 1 |
|
||||
|
|
||||
P<=0.5 [ (p2!=10 & p3!=10) U (p1=10) ] |
|
||||
@ -1,29 +0,0 @@ |
|||||
// theorem 1 (mutual exclusion) |
|
||||
|
|
||||
(!((p1>9) & (p2>9))) & |
|
||||
(!((p1>9) & (p3>9))) & |
|
||||
(!((p1>9) & (p4>9))) & |
|
||||
(!((p2>9) & (p3>9))) & |
|
||||
(!((p2>9) & (p4>9))) & |
|
||||
(!((p3>9) & (p4>9))) |
|
||||
|
|
||||
// lemma c |
|
||||
// if the crical section is occupied then eventually it becomes clear |
|
||||
|
|
||||
(p1>9) | (p2>9) | (p3>9) | (p4>9) => |
|
||||
P>=1 [ true U (p1<10) & (p2<10) & (p3<10) & (p4<10) ] |
|
||||
|
|
||||
// lemma d |
|
||||
// if a process is between 4 and 13 (in our version) then eventually some process gets to 14 |
|
||||
|
|
||||
((p1>3) & (p1<14)) | ((p2>3) & (p2<14)) | ((p3>3) & (p3<14)) | ((p4>3) & (p4<14)) => |
|
||||
P>=1 [ true U (p1=14) | (p2=14) | (p3=14) | (p4=14) ] |
|
||||
|
|
||||
// theorem 2 (liveness) |
|
||||
// if process 1 tries then eventually it enters the critical section |
|
||||
|
|
||||
(p1=1) => P>=1 [ true U (p1=10) ] |
|
||||
|
|
||||
// not probability 1 |
|
||||
|
|
||||
P<=0.5 [ (p2!=10 & p3!=10) U (p1=10) ] |
|
||||
@ -1,33 +0,0 @@ |
|||||
// theorem 1 (mutual exclusion) |
|
||||
|
|
||||
(!((p1>9) & (p2>9))) & |
|
||||
(!((p1>9) & (p3>9))) & |
|
||||
(!((p1>9) & (p4>9))) & |
|
||||
(!((p1>9) & (p5>9))) & |
|
||||
(!((p2>9) & (p3>9))) & |
|
||||
(!((p2>9) & (p4>9))) & |
|
||||
(!((p2>9) & (p5>9))) & |
|
||||
(!((p3>9) & (p4>9))) & |
|
||||
(!((p3>9) & (p5>9))) & |
|
||||
(!((p4>9) & (p5>9))) |
|
||||
|
|
||||
// lemma c |
|
||||
// if the crical section is occupied then eventually it becomes clear |
|
||||
|
|
||||
(p1>9) | (p2>9) | (p3>9) | (p4>9) | (p5>9) => |
|
||||
P>=1 [ true U (p1<10) & (p2<10) & (p3<10) & (p4<10) & (p5<10) ] |
|
||||
|
|
||||
// lemma d |
|
||||
// if a process is between 4 and 13 (in our version) then eventually some process gets to 14 |
|
||||
|
|
||||
((p1>3) & (p1<14)) | ((p2>3) & (p2<14)) | ((p3>3) & (p3<14)) | ((p4>3) & (p4<14)) | ((p5>3) & (p5<14)) => |
|
||||
P>=1 [ true U (p1=14) | (p2=14) | (p3=14) | (p4=14) | (p5=14) ] |
|
||||
|
|
||||
// theorem 2 (liveness) |
|
||||
// if process 1 tries then eventually it enters the critical section |
|
||||
|
|
||||
(p1=1) => P>=1 [ true U (p1=10) ] |
|
||||
|
|
||||
// not probability 1 |
|
||||
|
|
||||
P<=0.5 [ (p2!=10 & p3!=10) U (p1=10) ] |
|
||||
@ -1,51 +0,0 @@ |
|||||
// theorem 1 (mutual exclusion) |
|
||||
|
|
||||
(!((p1>9) & (p2>9))) & |
|
||||
(!((p1>9) & (p3>9))) & |
|
||||
(!((p1>9) & (p4>9))) & |
|
||||
(!((p1>9) & (p5>9))) & |
|
||||
(!((p1>9) & (p6>9))) & |
|
||||
(!((p1>9) & (p7>9))) & |
|
||||
(!((p1>9) & (p8>9))) & |
|
||||
(!((p2>9) & (p3>9))) & |
|
||||
(!((p2>9) & (p4>9))) & |
|
||||
(!((p2>9) & (p5>9))) & |
|
||||
(!((p2>9) & (p6>9))) & |
|
||||
(!((p2>9) & (p7>9))) & |
|
||||
(!((p2>9) & (p8>9))) & |
|
||||
(!((p3>9) & (p4>9))) & |
|
||||
(!((p3>9) & (p5>9))) & |
|
||||
(!((p3>9) & (p6>9))) & |
|
||||
(!((p3>9) & (p7>9))) & |
|
||||
(!((p3>9) & (p8>9))) & |
|
||||
(!((p4>9) & (p5>9))) & |
|
||||
(!((p4>9) & (p6>9))) & |
|
||||
(!((p4>9) & (p7>9))) & |
|
||||
(!((p4>9) & (p8>9))) & |
|
||||
(!((p5>9) & (p6>9))) & |
|
||||
(!((p5>9) & (p7>9))) & |
|
||||
(!((p5>9) & (p8>9))) & |
|
||||
(!((p6>9) & (p7>9))) & |
|
||||
(!((p6>9) & (p8>9))) & |
|
||||
(!((p7>9) & (p8>9))) |
|
||||
|
|
||||
// lemma c |
|
||||
// if the crical section is occupied then eventually it becomes clear |
|
||||
|
|
||||
(p1>9) | (p2>9) | (p3>9) | (p4>9) | (p5>9) | (p6>9) | (p7>9) | (p8>9) => |
|
||||
P>=1 [ true U (p1<10) & (p2<10) & (p3<10) & (p4<10) & (p5<10) & (p6<10) & (p7<10) & (p8<10) ] |
|
||||
|
|
||||
// lemma d |
|
||||
// if a process is between 4 and 13 (in our version) then eventually some process gets to 14 |
|
||||
|
|
||||
((p1>3) & (p1<14)) | ((p2>3) & (p2<14)) | ((p3>3) & (p3<14)) | ((p4>3) & (p4<14)) | ((p5>3) & (p5<14)) | ((p6>3) & (p6<14)) | ((p7>3) & (p7<14)) | ((p8>3) & (p8<14)) => |
|
||||
P>=1 [ true U (p1=14) | (p2=14) | (p3=14) | (p4=14) | (p5=14) | (p6=14) | (p7=14) | (p8=14) ] |
|
||||
|
|
||||
// theorem 2 (liveness) |
|
||||
// if process 1 tries then eventually it enters the critical section |
|
||||
|
|
||||
(p1=1) => P>=1 [ true U (p1=10) ] |
|
||||
|
|
||||
// not probability 1 |
|
||||
|
|
||||
P<=0.5 [ (p2!=10 & p3!=10) U (p1=10) ] |
|
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue