cl:
u2
u1
u3
cl2:
cl1:
station:
u1
u2
u3
cl2:
cl2:
ap1:
[cl(u1,u2): , cluster ]
u4
u6
u5
ch1:
ch3:
[cl1(u3,u2): , station ]
u9
u7
ch2:
chain:
u8
[cl(u1,u2): , cluster ]
u2
u1
u3
[cl1(u3,u2): , station ]
cl2:
ap1:
u4
u6
u5
ch1:
ch3:
sh1:
u7
u9
[ch2(u8,u5): , chain ]
u10
ms1:
manyShips:
u8
[cl(u1,u2): , cluster ]
u1
u3
u2
[cl1(u3,u2): , station ]
cl2:
ap1:
u4
u6
u5
ch1:
ch3:
sh1:
u7
u9
[ch2(u8,u5): , chain ]
u10
ms3:
ms2:
[ms1(u8,u10): , manyShips ]
u11
u8
manyShips:
class void FixGraph (SequenceOfProductions P , invariant inv)
[cl(u1,u2): , cluster ]
For every production p
u1
u3
u2
tmpP = P
[cl1(u3,u2): , station ]
cl2:
ap1:
If graph* satisfies weakestPre(p, inv) then
u4
u6
tmpP+=p
u5
ch1:
ch3:
Apply tmpP to graph
sh1:
break
u7
u9
else
u10
[ch2(u8,u5): , chain ]
FixGraph(tmpP, weakestPre(p, inv))
ms5:
ms4:
ms2:
end if
end for
[ms1(u8,u10): , manyShips ]
u12
u11
u8
end
[ms3(u11,u10): , manyShips ]
manyShips
x1
x2
x1
manyShips
x2
x3
v1
e2:
e1:
e3:
Check if a given graph satisfies a given invariant
v2
v3
v4
u10
u10
ms5:
ms4:
ms2:
ms5:
u1
u2
ms4:
u1
u2
ms2:
ap1:
u12
u11
u8
u13
u4
u6
u4
u6
u12
u3
u
u11
u3
u8
u3
ch1:
ch3:
bs1:
bs1:
sh1:
u7
u9
u7
u9
u8
u1
u3
u2
u8
bs2:
sh2:
cl2:
sh2:
ap1:
sh3:
bs3:
u4
u6
sh3:
u5
u9
u12
u9
ch1:
u12
ch3:
sh1:
u7
u9
u10
ms5:
ms4:
ms2:
u3
u13
u12
[ch2(u8,u3): ,chain]
u11
[ms6(u13,u10): , ]
u8
bs1:
[sh1(u8,u3): , shipOFF ]
[bs1(u8,u3): , ]
u8
u8
[ms3(u12,u8): , ship ]
[ms2(u9,u8): , ship ]
ms1:
[sh2(u9,u8): , ]
[sh3(u12,u8): , ]
u9
Identify the graph using the derivation tree
Use last year's methodology on the affected area
If graph is not fixed:
Use the derivation tree to parse the graph
Use last year's methodology on the parsed graph
The Big Picture
That's me!
Department of Computer Science
Weakest pre-condition ( cluster , Post-condition)
Pre-condition
cluster:
transfer: cluster(cluster(x1,x2),x3) cluster(x1, cluster(x3,x2))
add(x4): cluster(cluster(x1,x2),x3) cluster(cluster(x1,x2), cluster(x3,x4))
Post-condition
L. Lambrinos and C. Djouvas, "Creating a maritime wireless mesh infrastructure for real-time applications" in the Mobile Computing and Emerging Communication Networks workshop, 2011
[cl(u1,u2): , cluster ]
[cl2(u1,u3): , ]
[cl1(u3,u2): , ]
[cl2(u1,u3): , ]
[ms2(u8,u10): , ]
[ms4(u11,u10): , ]
[cl2(u1,u3): , ]
ICE12 methodology
[ap1(u1,u3): , ]
[sh1(u10,u5): , ]
[ms5(u12,u10): , ]
[cl(u1,u2): , ]
[ch1(u7,u4): , ]
[ms4(u11,u10): , ]
[cl2(u1,u3): , ]
[ch1(u7,u4): , ]
[sh1(u10,u5): , ]
[ap1(u1,u3): , ]
[ms2(u8,u10): , ]
[ch2(u8,u5): , ]
[ms2(u8,u10): , ]
[cl2(u1,u3): , ]
[ms3(u11,u10): , ]
[ms3(u11,u10): , manyShips ]
[ms5(u12,u10): , ]
[ms1(u8,u10): , manyShips ]
connectShip(x3): manyShips(x1,x2) manyShips(x1,manyShips(x2,x3))
[ms3(u11,u10): , manyShips ]
reconfiguration: LHS RHS
[ch2(u8,u5): , chain ]
[ms1(u8,u10): , ]
[ap1(u1,u3): , ]
Identify which part of the graph has been reconfigured
therefore: which part if any caused the violation
[cl(u1,u2): , cluster ]
ICE12 methodology
[ch1(u7,u4): , ]
[ms1(u9,u8): , manyShips ]
INV
invariant: (For Every AND For Every ) There should Exist a OR a connected to them on their second tentacle
[sh1(u10,u5): , ]
[de1(u11,u10): , manyShips ]
[ms1(u8,u10): , manyShips ]
cluster:
[ch3(u9,u6): , ]
[ch3(u9,u6): , ]
[ch3(u9,u6): , ]
[sh1(u10,u5): , ]
[ms2(u8,u10): , ]
[ch3(u9,u6): , ]
[ap1(u1,u3): , ]
[cl1(u3,u2): , station ]
[cl2(u1,u3): , ]
INV
[ch1(u7,u4): , ]
u2
u1
[ap1(u1,u3): , ]
[ch3(u9,u6): , ]
[ms4(u11,u10): , ]
[ms5(u12,u10): , ]
[ch1(u7,u4): , ]