Ivy: Interactive Verification of Parameterized Systems (via Effectively Propositional Reasoning)
Oded Padon Joint work with: Ken McMillan and Mooly Sagiv Dagstuhl Seminar, 3-Nov-2015
Parameterized Systems (via Effectively Propositional Reasoning) - - PowerPoint PPT Presentation
Ivy: Interactive Verification of Parameterized Systems (via Effectively Propositional Reasoning) Oded Padon Joint work with: Ken McMillan and Mooly Sagiv Dagstuhl Seminar, 3-Nov-2015 Motivation Many real-world verification efforts use
Oded Padon Joint work with: Ken McMillan and Mooly Sagiv Dagstuhl Seminar, 3-Nov-2015
not effectively communicate with the user
heuristics interactively
user and machine heuristics
universal invariants for EPR transition systems
lists) inferring universal inductive invariants is decidable
Data Structures. CAV 2013
Their Absence. CAV 2015
isuali lization of
arefull lly ch chosen con
tran ansit itions
le to
induction base ased
Model Candidate Inductive Invariant Inductive? Yes No Display “minimal” CTI Modify candidate invariant Diagnose CTI User Heuristics Inductive Invariant Found
Model Candidate Inductive Invariant Inductive? Yes No Display “minimal” CTI Modify candidate invariant Diagnose CTI User Heuristics Inductive Invariant Found Z3 (EPR)
the id in the message is higher than the node’s own id
in circular configurations of processes. CACM 1979
3 5 2 4 1 6
the id in the message is higher than the node’s own id
in circular configurations of processes. CACM 1979
3 5 2 4 1 6
ring_head: Node
ring_tail il: Node
lead ader_id id: ID
le(ID, ID) – total order on node id’s
id(Node, ID) – relate a node to its id
ing(ID, Node) – models pending messages
lead ader(Node) – leader(n) means n is the leader
action send: n1 := * n2 := next_in_ring(n1) i1 := id(n1) pending.insert(i1, n2)
le(ID, ID) – total order on node id’s
id(Node, ID) – relate a node to its id
endin ing(ID, Node) – models pending messages
leader(Node) – leader(n) means n is the leader action receive: m, n1 := pending.nd_pop() i1 := id(n1) if i1 = m: # found leader leader.insert(n1) leader_id := i1 else if le(i1, m): # pass message n2 := next_in_ring(n1) pending.insert(m, n2)
action send: n1 := * n2 := next_in_ring(n1) i1 := id(n1) pending.insert(i1, n2) init ¬leader(N) ∧ ¬pending(I,N) ∧ leader_id = zero conjecture (leader(X) ∧ leader(Y)) X = Y conjecture leader(X) -> id(X, leader_id) conjecture (id(X, I) ∧ id(Y, J) ∧ leader(X)) le(J, I) action receive: m, n1 := pending.nd_pop() i1 := id(n1) if i1 = m: # found leader leader.insert(n1) leader_id := i1 else if le(i1, m): # pass message n2 := next_in_ring(n1) pending.insert(m, n2)
CTI min inim imization
user’s choice / model hints
Diagnosis is in interactions
Model Invariant Inductive? Yes No
Display “minimal” CTI
Modify Invariant
Diagnose CTI User Heuristics
leads to better generalizations
leads to better generalizations
Application Status Distributed spanning tree Modeled and verified Network learning switch Modeled and verified Leader in Ring Modeled and verified Chord Modeled and verified Flash Modeled and verified* Copy Garbage Collection Modeled and verified* Bakery Algorithm Modeled, work in progress Distributed Database Work in progress (with Aurojit Panda, UC Berkeley)
We are looking for more applications, please let me know your suggestions! *Not yet full functional correctness, still work in progress
CTI Mode
M Inv Ind? “minimal” CTI Modify Inv Diagnose CTI User Heuristics
CTI Mode
M Inv Ind? “minimal” CTI Modify Inv Diagnose CTI User Heuristics
BMC
M Spec BMC Fix model / spec
CTI Mode
M Inv Ind? “minimal” CTI Modify Inv Diagnose CTI User Heuristics
BMC
M Spec BMC Fix model / spec
Abstract Reachability & Concept Graphs
User Heuristics
CTI Mode
M Inv Ind? “minimal” CTI Modify Inv Diagnose CTI User Heuristics
BMC
M Spec BMC Fix model / spec
Abstract Reachability & Concept Graphs
User Heuristics
???
User Heuristics
feedback
to the failure?
differencing, and manual/heuristic quantifier instantiation
feedback
to the failure?
differencing, and manual/heuristic quantifier instantiation