Explanation of the options
In the sequel, the meaning of the options will be
explained. It should be emphasized that the majority of them are meant only for
debugging purposes or for advanced users who are
familiar with the algorithms. For normal work it should be sufficient to use
the defaults.
Options for the syntax check
- Skip Syntax Check
- The user can choose whether the syntax of the B(PN)² program is checked before it is compiled into a PBC term or into a M-net. The compiler into M-nets is able to handle some small extensions, that are not accepted by the syntax checker or the other
compiler.
Options for the compiler B(PN)² => PBC
- Sequential Termination
- Originally there had been an exit-transition for every possible combination of variable bindings. Thus a possibly exponential
amount of transitions had been created. It is more space efficient to
terminate the variables of a block sequentially.
- Standard Initialisation
- The user can determine whether variables are initialised with the
smallest possible value (resp. false for Boolean variables).
- Suppress Warnings (E.g. Old Syntax)
- If one writes a program using old syntax, warnings can be
suppressed. This option is only for compatibility with older versions of the
PEP tool.
Options for the compiler PBC => LL Net
- Check Net
- The net can be checked for consistency. This is
meant only for debugging purposes.
- Remove Duplicates
- Places and transitions duplicates (identical pre- and postsets and meanings) can be removed automatically.
- Bundle Atomic Actions
- Transitions corresponding to the same action or the same parallel
composition of actions can be displayed at the same position on the screen.
- Simple C-&D-Boxes
- The user can specify that simple boxes are generated for plain and channel variables, otherwise the initialisation transitions are synchronised with transitions of the control flow which yields nets with a smaller prefix.
- Extended Labeling
- Extended labellings can be generated. A transition corresponding to the action < a' = 'a - 1 > will have the meaning a' = 'a - 1 which can be displayed optionally in the net editors using Option > Display Meanings.
- Generate Invisible Arcs
- Arcs between the data boxes of the net and the control flow part of the
net can be specified as invisible to enhance the readability of the nets
constructed from a program. Invisible arcs can be displayed optionally in the
net editor using Option > Show Invisible Arcs.
- Wide Output Format
-
The depth of recursion must be restricted to make sure that the LL nets are finite.
Note: The slider can be moved even when Recursion Depth is unchecked, but then it has an effect.
- Depth of Recursion and Synchronisation
-
The maximum number of transitions which can be synchronized by one synchronisation should be restricted to make sure that the LL nets are finite.
Note: The slider can be moved even when Synchronisation Depth is unchecked, but then it has an effect.
- Small/Medium/Big Loop
- Different loop semantics are implemented in the compiler. All of them behave in an equivalent way. For larger examples the small loop should be chosen for efficiency reasons when calculating the finite prefix of the branching process. The medium and large versions are meant to support future theoretical work.
Options for the compiler B(PN)² => M-net
- Check Net
- The net can be checked for consistency. This is
meant only for debugging purposes.
- Remove Duplikates
- Place and transition duplicates can be removed automatically.
- Eliminate Dead Transitions
- Some transitions can be recognized as initially dead and can be removed automatically.
- Use Parallel Termination
- Originally there had been an exit transition for every possible combination of variable bindings. Thus a possibly exponential
amount of transitions had been created. It is more space efficient to
terminate the variables of a block in a sequential way.
- Use B(PN)² Names for Communication Variables
- The names of the variables in the B(PN)² program can be
used for the communication variables in the arc inscriptions. This
yields M-nets that are easier to understand.
- No Scoping
- The final scoping (for the outermost block as well as for the inner ones) can be omitted. Thus the data boxes and the control
flow can be analysed separately. It is not possible to simulate such nets.
- Scale
- The graphical distances between the individual parts of the generated net can be changed.
- Small/Medium/Big Loop
- Different loop semantics are implemented in the compiler. All of them behave in an equivalent way. For larger examples the small loop should be chosen for efficiency reasons when calculating the finite prefix of the branching process. The medium and large versions are meant to support future theoretical work.
- Restrict Number of Transitions
- Depending on the power of the machine it might be useful to restrict the maximum number of generated transitions. Otherwise it is possible that one has to wait a while for the end of this calculation or a later one. If the maximum number is reached the compilation is stopped and no net is created. At the present time, no mechanism to stop the execution of an algorithm is implemented. Thus a kill command (in the shell) is the only way to stop execution, unless this option is set.
Note: The slider can be moved even when Restrict Number of Transitions is unchecked, but then it has an effect.
Note
Arcs between the data boxes of the net and the control flow part of the net are specified (automatically) as invisible to enhance readability of the
nets constructed from a program.
Invisible arcs can be displayed optionally in the net editor
using Option>Show Invisible Arcs.
Options for the prefix builder
The prefix builder has several options that may
increase the speed of the calculations.
These options are meant for the developer.
Usually the default values are fine. Note that changing critical options may result in incorrect prefixes.
- Display Time
- The time used for the calculation can be written to the shell.
- Display Progress
- The progress of the calculation can be written to the shell. This might
be useful for large nets.
- Use Bit Arrays for Hash Table Entries
- Bit arrays can be used internally for hash table entries. This
option may increase the speed of the calculation depending on the
example.
- Change B-Conflict Algorithm
-
The B-conflict algorithm can be changed. In addition to that it is possible to change it after a certain number of events. This option often increases the speed of the calculation.
Note: The slider can be moved even when Number of Events before Change is unchecked, but then it has an effect.
- Restrict Number of Maximal Generated Events
- Depending on the power of the machine it might be useful to restrict the maximum number of generated events. (You can set the Display Progress option to observe it). However there is no direct correspondence between the number of generated events and the duration of the calculation. At the present time, no mechanism to stop the execution of an algorithm is implemented. Thus a kill command (in the shell) is the only way to stop execution, unless this option is set.
Note: The slider can be moved even when Maximum Number of Generated Events is unchecked, but then it has an effect.
- Do not Look at Postfixes (Definite Nets Only)
- For some nets it makes no difference whether postfixes are
considered. This option may increase the speed of the calculation. But be
careful, it may result in wrong finite prefixes of the branching process! Thus
this option is meant only for the developper of the prefix builder.
- Check Consistency of Configurations
- The consistency of the calculated configurations can be checked. This
option is meant only for debugging purposes.
- Display Statistics
- The results of the calculations can be written to the shell. Sizes of the
original net and the prefix are given. The time used is output.
- Display Program Version
- The version number of the prefix builder can be written to the shell.
- Take Current Marking instead of Initial
- The current marking can be used for the calculation of the prefix instead of the initial marking. The size of the prefix can be
reduced if the net is simulated up to a certain state and this marking is then taken as input for the prefix builder.
- Display List of Unused Transitions
- The unused transitions (that is, the initially dead ones that can never
occur) can be written to the shell.
- Minimize Net (Replace Old Net)
- The unused transitions (that is, the initially dead ones that can never occur) can be deleted together with their surrounding arcs. Be careful, the original net is replaced with the reduced net!
- Use Esparza/Vogler Algorithm
- The Esparza/R"omer/Vogler algorithm is more efficient than the original one and yields minimal prefixes.
Options for the bounded analyser
- Display Statistics
- The results of the calculations can be written to the shell. The number of reachable markings and the number of arcs are given.
- Display Progress
- Progress information can be written to the shell. This can be
useful for large nets.
- Display Version
- The version number of the boundedness analyser can be written to the
shell.
Options for the reachability analyser
- Calculate all Paths
- Either all paths or a shortest one can be calculated.
- Calculate partial Reachability
- It can be specified that the given marking is only part of the marking
the algorithm searches for.
Note: If you check both options, it is possible that hundrets of paths are calculated and displayed.
Options for the model checking algorithm for 1-safe Petri nets
- Force Calculation of Information
- The model checker needs certain isomorphisms for the
verification. They can be written to a file. It can be chosen whether the
model checker decides if it is necessary to calculate them (because they do not yet exist, or because the file containing the prefix is
newer than the files containing the isomorphisms) or if they are
calculated anyway.
- Display Accessibilty Relation
- The accessibility relation can be written to the shell. This option is meant only for debugging purposes.
- Write Debugging Information in mca.out
- Some debugging information can be written to the file mca.out. This
option is meant only for debugging purposes.
Options for the B(PN)² expander
- Standard Initialisation
- The user can determine whether variables are initialised with the smallest possible value (resp. false for Boolean
variables).
- Depth of Recursion and Synchronisation
- The depth of recursion and synchronisation must be restricted to make
sure that the nets are finite.