Model checking based on the causal partial order semantics of Petri nets is an approach widely applied to cope with the state space explosion problem. One of the ways to exploit such a semantics is to consider (finite prefixes of) net unfoldings-themselves a class of acyclic Petri nets-which contain enough information, albeit implicit, to reason about the reachable markings of the original Petri nets. In view of recent very efficient model checking algorithms, employing unfoldings, the problem of efficiently building them becomes of great interest. We address these issues considerably improving the original McMillan/'s technique, but the unfolding algorithms proposed there are still relatively slow. In this paper, we put forward a method of computing possible extensions, which was the slowest part of the unfolding algorithm. Essentially, we show how to find new transition instances to be inserted in the unfolding, not trying all the transitions one-by-one, but all at once, merging common parts of the work. Moreover, we propose some additional heuristics, helping to speed up the algorithm.
展开▼