| 95 | |
| 96 | == A More Complex Example |
| 97 | |
| 98 | The following example extends the producer consumer problem by an actual product subnet. |
| 99 | Instead of black tokens, the producer creates a clock net instance. |
| 100 | This (simple) clock has four internal states. |
| 101 | The transitions can fire concurrently to any other transition that is not in this net instance. |
| 102 | The model is further simplified by assuming that the consumer instantly destroys the clock and therefore never has a persistent reference on it. |
| 103 | |
| 104 | === The net System |
| 105 | [[Image(prodconsclock-complete.pdf)]] |
| 106 | |
| 107 | === The Reachability Graph |
| 108 | As expected, the internal states of the clock lead to an significantly increasing amount of distinct markings. |
| 109 | This is even with the limitation of only a single clock instance at a time and the consumer not storing the clocks. |
| 110 | Still, the reachability graph becomes extremely harder to read for the human eye, even with proper formatting of the graph. |
| 111 | |
| 112 | However, the complexity of the actual system that is being modelled did not really increase and is, in fact, still easy to describe in words. |
| 113 | A proposed solution to this discrepancy is the feature to abstract certain nets or parts of their states. |
| 114 | The result is a folded reachability graph, where nodes that only differ in a marking of places that are flagged as "ignore" are folded into a single place. |
| 115 | It is important to remain the flexibility to flag only certain subnets, since in many cases, some subnets should appear fully in the reachability graph, while some should not. |
| 116 | |
| 117 | |
| 118 | [[Image(prodcons-clockRG.pdf)]] |