31.07.2015 Views

Counterexample-guided Abstraction Refinement for the Analysis of ...

Counterexample-guided Abstraction Refinement for the Analysis of ...

Counterexample-guided Abstraction Refinement for the Analysis of ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Proposition 1. Let C G be an over-approximation <strong>for</strong> a gts G computed byAlgorithm 7. Then, <strong>for</strong> every real run J r <strong>of</strong> <strong>the</strong> graph trans<strong>for</strong>mation system<strong>the</strong>re exists an abstract run J ∈ Run A (C G ) such that J r corresponds to J , i.e.,J r ≪ J .An abstract run J <strong>for</strong> which <strong>the</strong>re does not exist a real run correspondingto J is called spurious. If, at <strong>the</strong> same time, it violates <strong>the</strong> property we attemptto verify, it is called a counterexample or error trace.We can now verify <strong>the</strong> gts by analyzing <strong>the</strong> Petri graph underlying <strong>the</strong> Petrinet. For instance, in order to show that no reachable graph contains a subgraphG s we add a new rule to <strong>the</strong> gts with G s as left-hand side and an edge witha new label Error in <strong>the</strong> right-hand side (see rule “Error” in Table 1). If wecan show that ei<strong>the</strong>r no place labelled Error exists in <strong>the</strong> net or every suchplace is not coverable (this can be done using coverability graphs or backwardreachability algorithms [1]), <strong>the</strong>n we can deduce that this property holds.However, if <strong>the</strong> approximation is too coarse, we might not be able to verify<strong>the</strong> property. We have shown in [5] how to construct a sequence <strong>of</strong> subsequentlybetter unfolding—which however grow in size fairly rapidly—by <strong>for</strong>bidding foldingsteps up to depth k. There<strong>for</strong>e we will now show how to successfully apply <strong>the</strong>technique <strong>of</strong> counterexample-<strong>guided</strong> abstraction refinement in our framework.4 <strong>Abstraction</strong> <strong>Refinement</strong>In order to eliminate spurious runs, we will show that <strong>the</strong>y are always causedby <strong>the</strong> fact that certain nodes were merged. We will identify <strong>the</strong>se nodes andshow how to avoid <strong>the</strong>ir being merged in <strong>the</strong> next iteration, <strong>the</strong>reby avoidingthis particular spurious run and all o<strong>the</strong>r abstract runs corresponding to it ina sense made precise later. Merging <strong>of</strong> nodes is harmful since it might producenew left-hand sides, <strong>the</strong>reby leading to additional rewriting steps.4.1 Spurious RunsFor a given abstract run J = (graph(m 0 ) ⇛ r1 graph(m 1 ) ⇛ r2 ... ⇛ rngraph(m n )) <strong>of</strong> <strong>the</strong> Petri graph with morphisms ϕ i : L i+1 → graph(m i ) we defineH to be <strong>the</strong> set <strong>of</strong> real runs corresponding to <strong>the</strong> prefixes <strong>of</strong> J . Fur<strong>the</strong>rmore letH i be <strong>the</strong> set <strong>of</strong> hypergraphs reachable after i steps in a real run J r ∈ H. Itholds that H 0 = {G 0 }.An abstract run J is spurious if H n = ∅. If <strong>the</strong> run is spurious, <strong>the</strong>re existsa k such that H k ≠ ∅, but H k+1 = ∅ (and <strong>the</strong>re<strong>for</strong>e also H l = ∅ <strong>for</strong> l > k). It willbe shown in <strong>the</strong> following how to construct a new refined over-approximationC G ′ , which does not contain J and some o<strong>the</strong>r spurious runs corresponding to J .Example: We illustrate <strong>the</strong> idea <strong>of</strong> a spurious abstract run with <strong>the</strong> run correspondingto <strong>the</strong> firing <strong>of</strong> <strong>the</strong> highlighted transitions “Cross Location” and “Error”in Fig. 3. In fact, <strong>the</strong>re is not real run in <strong>the</strong> original gts that correspondsto it.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!