Inhibition and Permission TPN (IPTPN)

Berthomieu et al. [PBV2011] define an extension of TPN with inhibition and permission that provides a method for building composable nets; meaning TPN where all observable transitions have trivial time constraints (their time interval is $[0, \infty[$]). With this extension, it is always possible to build a composable IPTPN from a TPN.

For example, Fig. 1 and 2 below display two TPN and Fig. 3 displays the IPTPN corresponding to their product. In this construction, we create a silent, extra-transition $tc_i$ for every non-trivial observable transition $t_i$. These transitions cannot fire (they self-inhibit themselves with an inhibitor arc —○) but “record the timing constraints” of the transition they are associated with. Then a permission arc ( —●) is used to transfer these constraints on the (product of) labeled transitions.

output of Twina with options -I -iptpn, drawn using nd

Option -iptpn is used to generate a TPN (in .net or .tpn syntax) that can be analyzed using Tina. This option can be used to generate an IPTPN from: (1) the product of two nets (together with option -I); (2) the “twin-plant” construction (-twin); or (3) just from a single net alone. In the resulting net, the silent (timed) transition corresponding to $tc_i$ is named {ti.t}.

$ twina -iptpn -fault=a
# net C1
# 2 places, 2 transitions + 1 tc transitions
pl p0 (1)
pl p1 (1)
tr t0 : a [0,w[ p0 ->
tr t1 : b  p1 ->
tr {t1.t} [0,1] p1 ->
pr {t1.t} -o {t1.t}
pr {t1.t} -* t1

To use the resulting net with Tina you only need to set an environment variable called IPTPN (to a non-zero value). Then you may directly pipe the result to Tina, like in the following example. (our example below use sift, an optimized tool for state-space generation.)

$ export IPTPN=1
$ twina -iptpn -I | sift -
3 marking(s), 3 domain(s), 3 classe(s), 2 transition(s)

Examples used in this post

The basic examples of nets used in our paper and .