Incomplete Binding Sequences
Simulator cannot calculate binding sequence for some transitions Errors and Bugs


Related Pages

Syntax Checking

Problem

During a syntax check, the simulator may report that a binding sequence cannot be found for a transition. This is due to the fact that the simulator cannot find an order in which to bind the variables of the transition. In most cases, it ought to be possible to find a binding sequence, however, there is a bug in the simulator.

In some cases, it is possible to use a guard to work around the problem. Examples of the problem and of workarounds are shown below.

Example

The problem has been observed for transitions with two (or more) arc inscriptions that contain the list constructor ::, nested tuples, and nested records.

In the top example, the transition t1 should remove two lists from the input places p1 and p2. The same element must be at the head of each list, as indicated by the a:: in each of the arc inscriptions. The tails of the two lists may or may not be equal, as indicated by the use of variables alist1 and alist2.

In the bottom example, the variables a and b appear in nested tuples on each input arc to transition t2.

Incomplete Binding Sequence

Workaround

In many cases, guards can be used to work around the problem.

In the top example, the variable a has been replaced by the variable b on one input arc, and a guard has been added to ensure that a=b.

In the bottom example, the variable b has been replaced by the variable e on one input arc, and the guard ensures that b=e.

Workaround for Binding Sequence