Varese, September 19-21 2012
Hoare Logic for Multiprocessing
(Work in progress)
Daniel Pellarini
joint work with
Marina Lenisa
Università degli studi di Udine, Italy
Daniel Pellarini and Marina Lenisa Hoare Logic for Multiprocessing
Hoare Logic for Multiprocessing (Work in progress) Daniel Pellarini - - PowerPoint PPT Presentation
Varese, September 19-21 2012 Hoare Logic for Multiprocessing (Work in progress) Daniel Pellarini joint work with Marina Lenisa Universit degli studi di Udine, Italy Daniel Pellarini and Marina Lenisa Hoare Logic for Multiprocessing Hoare
joint work with
Daniel Pellarini and Marina Lenisa Hoare Logic for Multiprocessing
Daniel Pellarini and Marina Lenisa Hoare Logic for Multiprocessing
Daniel Pellarini and Marina Lenisa Hoare Logic for Multiprocessing
Daniel Pellarini and Marina Lenisa Hoare Logic for Multiprocessing
Daniel Pellarini and Marina Lenisa Hoare Logic for Multiprocessing
Daniel Pellarini and Marina Lenisa Hoare Logic for Multiprocessing
Daniel Pellarini and Marina Lenisa Hoare Logic for Multiprocessing
i , τi >}i∈I
i=1 τi >
i
Daniel Pellarini and Marina Lenisa Hoare Logic for Multiprocessing
Daniel Pellarini and Marina Lenisa Hoare Logic for Multiprocessing
Let’s look at the computations of the simple parallel program < [x := 1 ||| y := 2; x := 0], σ > using the interleaving semantics: Daniel Pellarini and Marina Lenisa Hoare Logic for Multiprocessing
The same program gives rise to a single computation in the case of multiprocessing semantics: Daniel Pellarini and Marina Lenisa Hoare Logic for Multiprocessing
Daniel Pellarini and Marina Lenisa Hoare Logic for Multiprocessing
l
l1
l2
Daniel Pellarini and Marina Lenisa Hoare Logic for Multiprocessing
skip
x:=t
ε
await B then S end
l1
′
1
l1
′
1; S2
B
¬B
¬B
B
li
i }i∈I
<l′
1,...,l′ n>
′
1 ||| . . . ||| S
′
n] where {Si }i∈I is a maximal set of components executing disjoint atomic actions and l′
i =
if i ∈ I ε if i ∈ I . Daniel Pellarini and Marina Lenisa Hoare Logic for Multiprocessing
Daniel Pellarini and Marina Lenisa Hoare Logic for Multiprocessing
j1, . . . , pn jn appearing in the proof outlines at that point.
1 ||| . . . ||| S′ n], for
1 ||| . . . ||| S′ n] <l1,...,ln>
1 ||| . . . ||| S′′ n ], a new node
1 ||| . . . ||| S′′ n ] is built, if it does not already exists,
Daniel Pellarini and Marina Lenisa Hoare Logic for Multiprocessing
Daniel Pellarini and Marina Lenisa Hoare Logic for Multiprocessing
Daniel Pellarini and Marina Lenisa Hoare Logic for Multiprocessing
Daniel Pellarini and Marina Lenisa Hoare Logic for Multiprocessing
N = ∅ create the root node: < p1
0, . . . , pn 0 >
add the root node to the set N while N = ∅ do take a node < p1
1, . . . , pn 1 > corresponding to [S
′
1 ||| . . . ||| S
′
n] from N
N = N \ {< p1
0, . . . , pn 0 >}
for all [S
′
1 ||| . . . ||| S
′
n] <l1,...,ln>
− − − − − − − → [S
′′
1 ||| . . . ||| S
′′
n ] do
if of the guards in the label and n
i=1 pi 1 ≡ False then
skip else if the node < p1
2, . . . , pn 2 > corresponding to [S
′′
1 ||| . . . ||| S
′′
n ] ∈ N then
create edge from < p1
1, . . . , pn 1 > to < p1 2, . . . , pn 2 > and label it
< l1, . . . , ln > else create node < p1
2, . . . , pn 2 > and create the edge and label it
< l1, . . . , ln > add the node < p1
2, . . . , pn 2 > to N
end if end if end for end while
Daniel Pellarini and Marina Lenisa Hoare Logic for Multiprocessing
Daniel Pellarini and Marina Lenisa Hoare Logic for Multiprocessing
Daniel Pellarini and Marina Lenisa Hoare Logic for Multiprocessing
Daniel Pellarini and Marina Lenisa Hoare Logic for Multiprocessing