Title: Shortest%20Violation%20Traces%20in%20Model%20Checking%20Based%20on%20Petri%20Net%20Unfoldings%20and%20SAT
1Shortest Violation Traces in Model Checking Based
on Petri Net Unfoldings and SAT
- Victor Khomenko
- University of Newcastle upon Tyne
2Shortest violation traces
- Can be much shorter than the first computed trace
- Do not contain incidental system activity
unrelated to the found error - Facilitate debugging, saving the designers time
3Petri net unfolding prefixes
- Partial-order semantics of PNs
- Concurrency represented explicitly, using an
acyclic PN - Alleviate the state space explosion problem
- Efficient model checking algorithms
4Dining Philosophers
P13
P5
5Model checking on PN unfoldings
- A Boolean expression ?? is built using the
prefix, such that - ? is unsatisfiable iff the property holds
- Every satisfiable assignment of ? gives a
violation trace - ? has a form CONF?VIOL
- Some of the variables of ? are associated with
the events of the prefix
6CONF Causality
- If an e is executed than its causal predecessors
are also executed (its enough to require that
the direct predecessors of e are executed)
7CONF Conflicts
- If an e is executed than events in conflict
cannot be executed (its enough to require that
the events in direct conflict with e are not
executed)
8VIOL Deadlock
- For every e either
- some direct predecessor is not executed, or
- an event in direct conflict has fired, or
- e itself has fired
9Computing shortest traces
- input ? - a Boolean expression
- output T - a shortest violation trace or UNSAT
- A ? SAT_Assignment(?)
- if A UNSAT then T ? UNSAT stop
- T ? Extract_Trace(A)
- r ? T l ? 0
- while l lt r do
- t ? ?(l r)/2?
- A ? SAT_Assignment( ? ? Thresholdt )
- if A UNSAT then l t 1
- else
- T ? Extract_Trace(A)
- r ? T
10Threshold constraint
- First build a Boolean circuit and then translate
it into a boolean expression (linear translation
is possible by adding new variables) - Try to minimize the changes in the circuit if the
threshold changes good for incremental SAT
O(log n)
11Implementation of the counter
Size (if n is a power of 2) 4n 2 log2n 4
auxiliary variables 16n 10 log2n 16
clauses 52n 36 log2n 52 literals
- Linear translation
- Large multiplicative constants
12Exploiting conflicts
- Events in a conflict cluster are mutually
exclusive - An ?-gate can be used as a counter
13Implementation of the counter
- Significant gains if
- the number of
- clusters is much
- smaller than the
- number of events
- Need to partition
- the prefix into the
- minimum number
- of conflict clusters
- An NP-complete
- problem (reduction
- from partition into
- cliques)
- A greedy algorithm can be used in practice
14Exploiting causality
- If an event in a cluster has fired, some event in
a preceding cluster has also fired - If Cl1ltCl2ltltCln, then the outputs of the
corresponding ?-gates are ordered
15Implementation of the counter
- A sort-adder is simpler than a conventional one!
n
16Partitioning into chains of clusters
- Gains if the number of ordered chains of clusters
is small - Need to partition the conflict clusters into the
minimum number of ordered chains - The problem can be reduced to maximum matching in
bipartite graphs and solved in polynomial time,
but this might be inefficient due to the need to
work with an implicitly represented graph - A greedy algorithm can be used in practice
17Experimental results
- The first computed violation trace can be much
longer than a shortest one computing shortest
violation traces can indeed greatly facilitate
the debugging process - The number of conflict clusters is by many orders
of magnitude smaller than the number of events
significant reductions in the size of threshold
constraint
18The ideal case
- If the adder tree can be implemented as a single
?-gate - 1 (rather than 4n 2 log2n 4) auxiliary
variables - n1 (rather than 16n 10 log2n 16) clauses
- 3n1 (rather than 52n 36 log2n 52) literals
- Improvement ratios for n??
- variables ?
- clauses 16
- literals 17?
19Experimental results variables
20Experimental results clauses
21Experimental results literals