bcg_open [bcg_opt] spec[.bcg] [cc_opt] projector [projector_opt] interface[.bcg] result[.bcg]
or:
caesar.open [caesar_opt] spec[.lotos] [cc_opt] projector [projector_opt] interface[.bcg] result[.bcg]
or:
exp.open [exp_opt] spec[.exp] [cc_opt] projector [projector_opt] interface[.bcg] result[.bcg]
or:
fsp.open [fsp_opt] spec[.lts] [cc_opt] projector [projector_opt] interface[.bcg] result[.bcg]
or:
lnt.open [lnt_opt] spec[.lnt] [cc_opt] projector [projector_opt] interface[.bcg] result[.bcg]
or:
seq.open [seq_opt] spec[.seq] [cc_opt] projector [projector_opt] interface[.bcg] result[.bcg]
projector performs the semi-composition of spec with respect to the LTS interface and using a synchronization set determined by the -sync option.
The resulting LTS is stored in result, in BCG format.
The semantics of the semi-composition operator is given in $CADP/doc/*/Krimm-Mounier-97.* and in Section FORMAL DEFINITION OF SEMI-COMPOSITION below.
In a few words, projector reduces the LTS spec by suppressing the transitions that are not possible when spec is synchronized with interface, with respect to a given synchronization set (see -sync option below). The way transitions are suppressed depends on the nature of the interface. See option -userinterface for details.
The following options projector_opt are currently available:
In "total matching" semantics, the regular expressions contained in sync-file denote full labels (i.e., gates possibly followed by experiment offers). Each transition of spec carrying a label that matches some rule in sync-file must be synchronized with a transition of interface carrying the same label.
In "partial matching" semantics, the regular expressions contained in sync-file denote substrings of labels. Each transition of spec carrying a label, a substring of which matches some rule in sync-file, must be synchronized with a transition of interface carrying the same label.
At last, in "gate matching" semantics, the regular expressions contained in sync-file denote gates. Each transition of spec carrying a label, the first word of which (called gate) matches some rule in sync-file, must be synchronized with a transition of interface carrying the same label. In this case, regular expressions in the synchronization set should not contain characters forbidden in gate identifiers (e.g., " ", "(", or "!").
Option -total is the default.
The -total, -partial, and -gate options specify the "total matching", "partial matching", and "gate matching" semantics, respectively. See the caesar_hide_1 manual page for more details about these semantics. Option -total is the default.
Note that label hiding does not operate on spec, but on the LTS resulting from the semi-composition of spec with respect to interface.bcg.
The -total, -single, -multiple, and -gate options specify the "total matching", "single partial matching", "multiple partial matching", and "gate matching" semantics, respectively. See the caesar_rename_1 manual page for more details about these semantics. Option -total is the default.
As for the bcg_labels tool, several hiding and/or renaming options can be present on the command-line, in which case they are processed from left to right. However, the semi-composition (synchronizations) is always performed before hiding and/or renaming. Note that hiding and renaming only affect the part of refused labels that follow the ":FAIL:" string.
Note that label renaming does not operate on spec, but on the LTS resulting from the semi-composition of spec with respect to interface.bcg.
"spec.lotos" -|| "interface.bcg" "spec.lotos" -|[G1, G2]| "interface.bcg"
The LTS expressed by spec does not have any restriction. In particular, it may contain refused transitions (i.e., labels prefixed by the special marker ":FAIL:").
The LTS contained in interface may not contain refused transitions. No other constraint is imposed (for instance, it may have non deterministic transitions).
Note: Minimizing interface for safety equivalence after hiding all labels that are not accepted by the synchronization set is likely to improve the time and space performances of projector, while not changing the resulting LTS. In svl, those two operations are automatically performed before calling projector.
<sync-set> ::= <positive-header> '\n' <label-list>
| <negative-header> '\n' <label-list>
<label-list> ::= <label>
| <label> '\n' <label-list>
<label> ::= <regexp-denoting-a-label>
<positive-header> ::= 'Sync'
| 'sync'
<negative-header> ::= 'Sync all but'
| 'sync all but'
If the header is a positive header, any label matching a regular expression of the file will be considered as accepted by the synchronization set. On the contrary, if the header is a negative header, any label that does not match any regular expression of the file will be considered as accepted by the synchronization set. The synchronization set should not accept any label prefixed by ":FAIL:" if there is any in the graph module. The special label "i" should not be accepted by the synchronization set. If it does, a warning is issued but "i" is not synchronized. When no synchronisation set is given, the synchronisation is performed on all labels of spec and interface, except the hidden label "i".
First of all, remind that an LTS is defined formally as a tuple (Q, A, T, q0), where Q is the set of states, A is a set of actions, T is the transition relation between states, and q0 is the initial state.
Let S1 and S2 be two LTSs, and SYNC be a set of labels (the synchronization set). We write (S1 |[SYNC]| S2) the parallel composition of S1 and S2, using an extension of LOTOS parallel composition, where SYNC contains full labels instead of gates.
The semi-composition (S1 -|[SYNC]| S2) is the LTS (Q, A, T, q0) defined as follows:
In the sequel, we describe LTSs as sets of transitions of the form q -a-> q'. The initial state will be generally noted q0, and sets of states and actions can be easily reconstructed from the transition relation.
Version 1.x of projector was developped by Jean-Pierre Krimm using an algorithm written by Laurent Mounier and himself (VERIMAG).
Version 2.x of projector was totally rewritten from scratch by Gordon Pace, Bruno Ondet, Nicolas Descoubes, and Frederic Lang (INRIA Rhone-Alpes / VASY).
Version 3.x of projector was partially rewritten by Remi Herilier and Frederic Lang (INRIA Rhone-Alpes / VASY).
Additional information is available from the CADP Web page located at http://cadp.inria.fr
Directives for installation are given in file $CADP/INSTALLATION.
Recent changes and improvements to this software are reported and commented in file $CADP/HISTORY.