Table of Contents
exp.open - OPEN/CAESAR connection for EXP networks of communicating
automata
exp.open [
-branching |
-deadpreserving |
-strong |
-weaktrace]
[
-case] [
-debug] [
-lotos |
-elotos |
-ccs |
-csp |
-mcrl] [
-hidden string] [
-termination
string] [
-coaction string] [
-depend] [
-history] [
-info] [
-inline] [
-interface
interface_directives] [
-interfaceuser] [
-labels] [
-network format] [
-nocheck]
[
-prob] [
-rate] [
-silent |
-verbose] [
-unparse] [
-version]
filename[
.exp] [
cc_options]
prog[
.a|
.c|
.o] [
prog_options]
Taking as input
filename.exp, which
describes a network of communicating automata in the EXP 2.0, see
exp
,
and an OPEN/CAESAR program
prog[
.a|
.c|
.o],
exp.open generates an OPEN/CAESAR
graph module
filename.c. This file is then compiled into
filename.o and an
executable program
prog resulting from the combination of
filename.o and
prog[
.a|
.c|
.o] is produced. Finally,
prog is executed.
According to the principles
of the OPEN/CAESAR architecture, prog is obtained by combining three different
modules:
- the graph module is generated from filename.exp
- the storage module
is the standard OPEN/CAESAR library
- the exploration module is prog[.a|.c|.o]
The exploration module
prog[
.a|
.c|
.o] is
supposed to contain an OPEN/CAESAR application program, such as
evaluator
,
generator
,
ocis
...
The exploration module can be supplied in
three different forms. It can be either an archive file (with .a suffix),
or a source C program (with .c suffix) or an object code file (with .o suffix).
If prog.a is not present in the current directory, exp.open attempts to fetch
it in the OPEN/CAESAR binary library $CADP/bin.`arch`.
If prog.c is not present
in the current directory, exp.open attempts to fetch it in the OPEN/CAESAR
source library $CADP/src/open_caesar.
If prog.o is not present in the current
directory, exp.open attempts to fetch it in the OPEN/CAESAR binary library
$CADP/bin.`arch`.
If no suffix (.a, .c, .o) is specified on the command line
for the exploration module prog, exp.open will make successive attempts
to fetch this exploration module: first, as a source C program with .c
suffix; then as an archive file with .a suffix; finally as an object code
file with .o suffix.
- -branching
- Perform on-the-fly partial order reduction
modulo branching bisimulation. This yields a generally smaller graph, which
is equivalent modulo branching bisimulation to the graph obtained using
the -strong option. The used technique is based on prioritization of so-called
tau-confluent transitions [Pace-Lang-Mateescu-03]. This is not a default option.
If the -branching option is used in combination with -rate, then also attempt
on-the-fly partial order reduction modulo stochastic branching bisimulation
(which is weaker than branching bisimulation), by giving priority to hidden
actions over stochastic transitions (see the -rate option below), thus taking
an account of the maximal progress of hidden actions.
- -case
- Force the distinction
between lowercase and uppercase characters in labels occurring within the
operators used in filename.exp. This is the default option if no reference
language is selected or if the reference language is E-LOTOS or mCRL. In
other cases, labels occurring within the operators used in filename.exp
are automatically turned to uppercase. Therefore, labels in LTSs should
also be uppercase, except possibly the strings representing the hidden
label, termination label, co-action prefix, and the "prob" and "rate" keywords
used to denote probabilistic and stochastic transitions (see the -prob and
-rate options below).
- -ccs
- Set CCS as the reference language. This is not
a default option. See Section LANGUAGE PARAMETERS of exp
for details.
- -coaction string
- Set string so as to prefix CCS co-action labels; string is
named co-action prefix. See Section CCS PARALLEL COMPOSITION of exp
for more information about the co-action prefix.
- -csp
- Set CSP as the reference
language. This is not a default option. See Section LANGUAGE PARAMETERS of
exp
for details.
- -deadpreserving
- Perform on-the-fly partial order reduction
preserving deadlocks. This yields a generally smaller graph, which contains
the same deadlocks as the graph obtained using the -strong option. This is
not a default option.
- -debug
- Undocumented option.
- -depend
- Display the list
of EXP files included (directly or transitively) in filename.exp, followed
by the list of communicating automata, hide, rename, and cut files used
in the EXP behaviour and stop. This list may be incomplete if the EXP behaviour
is syntactically incorrect. Not a default option.
- -elotos
- Set E-LOTOS as the
reference language. This is not a default option. See Section LANGUAGE PARAMETERS
of exp
for details.
- -hidden string
- Set string as denoting the hidden
label in BCG files of both the communicating automata and of the automaton
corresponding to their composition. The default value depends on the reference
language, see Section LANGUAGE PARAMETERS of exp
for details.
Note
that many CADP tools (such as for instance bcg_min
, aldebaran
,
etc.) require the hidden label to be written "i". If it is written differently,
e.g., "tau", then one may use the "-hidden i" option and hide "tau" in each
communicating automaton, by using the hiding operator of EXP 2.0.
Note also
that the hidden label is usually written "tau" in the FC2 format. During
conversion from FC2 communicating automata into BCG, "tau" labels are automatically
renamed into "i" by the bcg_io
tool. Therefore, since bcg_io is systematically
called to translate FC2 components into the BCG format, the hidden label
should be set to "i", using "-hidden i", even though some component is in
the FC2 format, with "tau" denoting the hidden label.
- -history
- Record a history
of each label. The history can be read using the CAESAR_INFORMATION_LABEL
function of the OPEN/CAESAR API. With the -history option, it is possible
to set FORMAT_LABEL (see the OPEN/CAESAR manual) to a natural number up
to 3 (instead of 2 otherwise):
o The behaviour of CAESAR_INFORMATION_LABEL
with FORMAT_LABEL set to 0 or 1 is described in the OPEN/CAESAR documentation.
o If FORMAT_LABEL is equal to 2, then information about the synchronisations
involved in the computation of each label is displayed under the form of
a synchronisation vector.
o If FORMAT_LABEL is equal to 3, then the displayed
synchronisation vector is extended with information about hidings and renamings
performed to produce the label.
This is not a default option.
- -info
- Print
structural information about the LTSs referenced in filename.exp and stop.
See bcg_info
for more information.
- -inline
- Generate an OPEN/CAESAR
graph module that does not depend on BCG files. This option cannot be combined
with -branching, -deadpreserving, -weaktrace, and/or the priority operator.
Debugging option, not available in official releases of CADP.
- -interface
interface_directives
- This option allows to generate a refined interface
as explained in the article [Lang-06].
This option assumes that the composition
of LTSs stored in filename.exp corresponds to a system of concurrent processes
S as follows: The concurrent architecture of filename.exp is the same as
the concurrent architecture of S, and each LTS in filename.exp represents
either the state space (named concrete LTS in the sequel) or simply the
set of labels (named abstract LTS in the sequel) of the corresponding process
in S; States and transitions of abstract LTSs are irrelevant.
Consider processes
P0, P1, ..., Pm of S, such that, in filename.exp, the LTS corresponding to
P0 is abstract and the LTSs corresponding to P1, ..., Pm are concrete. The
-interface option allows to synthesize an interface representing the synchronization
constraints imposed on P0 by P1, ..., Pm. This interface has the form of an
OPEN/CAESAR graph module stored in a file named filename.c and a list of
synchronisation labels stored in a file named filename.sync. The graph module
can be translated into an explicit LTS using the generator
tool.
The resulting LTS can then be given, together with filename.sync, to the
projector
tool so as to restrict the behaviour of P0.
The interface_directives
argument has the form "nat:nat_list", where nat is a natural number and
nat_list is a list of natural numbers separated by blank characters. Each
of these natural numbers is an index corresponding to the rank of occurrence
of an LTS in filename.exp (once eventual .exp file names have been substituted
by the expression stored in the corresponding .exp files). Index 1 represents
the leftmost LTS. The left-hand side of ":" is the index of the LTS corresponding
to P0. The right-hand side of ":" is the list of indices of the LTSs corresponding
to P1, ..., Pm. interface_directives must be parsed as a single argument on
the command line and thus must be enclosed in quotes.
- -interfaceuser
- Indicate
that some of the automata in filename.exp have been obtained by semi-composition
with "user-given" restriction interfaces, and compute the associated validation
predicates. Note that this option does not make sense outside a compositional
verification process using restriction interfaces. See projector
and svl
for more information about using restriction interfaces.
This is not a default option.
- -labels
- Display the number of labels followed
by the list of labels potentially occurring in the state space of the input
network of communicating automata and stop. If the -interfaceuser option
is set, do not print the labels representing validation predicates (see
-interfaceuser option).
- -lotos
- Set LOTOS as the reference language. This is
not a default option. See Section LANGUAGE PARAMETERS of exp
for
details.
- -mcrl
- Set mCRL as the reference language. This is not a default option.
See Section LANGUAGE PARAMETERS of exp
for details.
- -network format
- Generate a network equivalent to filename.exp in one of "nupn", "pep", "tina",
"fc2", or "txt" format and stop:
If format is "nupn", exp.open generates
a file named filename.nupn, containing a Petri net in the NUPN (Nested Unit
Petri Net) file format [Garavel-15-a] (see caesar.bdd
for a description
of the NUPN format);
If format is "pep", exp.open generates a file named
filename.ll_net, containing a Petri net in the low-level PEP file format
[Best-Grahlmann-98];
If format is "tina", exp.open generates a file named
filename.tpn, containing a Petri net in the ``tpn'' format of the TINA toolbox
[Berthomieu-Ribet-Vernadat-04];
If format is "fc2", exp.open generates a file
named filename.fc2, containing a network of automata in the FC2 format [Bouali-Ressouche-Roy-deSimone-96].
If format is "txt", exp.open generates a file named filename.txt, containing
a description of the network of automata in an undocumented textual format.
This description includes the list of files containing the communicating
automata, the list of labels potentially occurring in the product and,
for each label, the list of synchronization vectors.
The bcg_io
and fc2link tools are called internally to make the conversion from EXP
to FC2. Note however that fc2link is not provided within CADP but belongs
to the Fc2Tools distribution, which can be downloaded at http://www-sop.inria.fr/meije/verification.
Moreover, when converting EXP to FC2, the hidden event must be written
"i" (see -hidden option above and Section LANGUAGE PARAMETERS of exp
for details) because this is required by bcg_io
and fc2link.
This
option does not require an exploration module. This is not a default option.
This option is not available if filename.exp contains a priority operator.
- -nocheck
- Parsing of EXP behaviours is generally followed by a static semantics
verification phase to verify that behaviours are well-formed. Option -nocheck
skips this verification phase. This option should be used with caution since
the semantics of ill-formed behaviours is undefined. This is not a default
option.
- -prob
- Consider the LTSs composed in filename.exp as "probabilistic
LTSs" (see the bcg_min
manual page for details about probabilistic
LTSs). Labels of the form "prob %p" or "label; prob %p", where %p denotes
a floating-point number in the range ]0..1] and label denotes a character
string that does not contain the ";" character, are interpreted as "special"
transitions, named "probabilistic". With this option, probabilistic transitions
can always execute asynchronously. If a parallel composition attempts to
synchronize probabilistic transitions explicitly, then exp.open issues a
warning message.
- -rate
- Consider the LTSs composed in filename.exp as "stochastic
LTSs" (see the bcg_min
manual page for details about stochastic
LTSs). Labels of the form "rate %f" or "label; rate %f", where %f denotes
a stricly positive floating-point number and label denotes a character
string that does not contain the ";" character, are interpreted as "special"
transitions, named "stochastic". With this option, stochastic transitions
can always execute asynchronously. If a parallel composition attempts to
synchronize stochastic transitions explicitly, then exp.open issues a warning
message.
- -ratebranching
- This option is obsolete and should be replaced by
the combination of options -rate -branching.
- -silent
- Execute silently. Opposite
of -verbose. Default option is -verbose.
- -strong
- Do not perform partial order
reduction of the graph. This is a default option.
- -termination string
- Set
string as denoting the gate used to express behaviour termination. The default
value depends on the reference language, see Section LANGUAGE PARAMETERS
of exp
for details.
- -unparse
- Use the "-bcg -unparse" options of bcg_io
while converting LTSs in AUT, FC2, or SEQ formats into BCG. See the bcg_io
manual page for details about these options.
- -verbose
- Report activities and
progress, including errors, to the user's screen. Opposite of -silent. Default
option is -verbose.
- -version
- Display the version number and stop.
- -weaktrace
- Perform on-the-fly partial order reduction modulo weak trace equivalence.
This yields a generally smaller graph, which is equivalent modulo weak
trace equivalence to the graph obtained using the -strong option. This is
not a default option.
- cc_options
- if any, are passed to the C compiler.
- prog_options
- if any, are passed to prog.
Exit status is 0 if everything is
all right, > 0 otherwise.
- [Berthomieu-Ribet-Vernadat-04]
- Bernard
Berthomieu, Pierre-Olivier Ribet, and Francois Vernadat. The tool TINA - Construction
of Abstract State Spaces for Petri Nets and Time Petri Nets. In International
Journal of Production Research, Vol. 42, No 14, July 2004.
- [Best-Grahlmann-98]
- Eike
Best and Bernd Grahlmann. "PEP Documentation and User Guide." http://parsys.informatik.uni-oldenburg.de/~pep/paper.html.
1998."
- [Bouali-Ressouche-Roy-deSimone-96]
- Amar Bouali, Annie Ressouche, Valerie
Roy, and Robert de Simone. The Fc2Tools set: a Toolset for the Verification
of Concurrent Systems. In R. Alur and T.A. Henzinger, editors, Proceedings
of the 8th Conference on Computer-Aided Verification (New Brunswick, New
Jersey, USA). Lecture Notes in Computer Science volume 1102, Springer-Verlag,
1996.
- [Brookes-Hoare-Roscoe-84]
- Stephen D. Brookes, Tony Hoare, and Andrew W.
Roscoe. "A Theory of Communicating Sequential Processes." In Journal of the
ACM, vol. 31, number 3, pages 560-599. ACM, 1984.
- [Garavel-15-a]
- Hubert Garavel.
"Nested-Unit Petri Nets: A Structural Means to Increase Efficiency and Scalability
of Verification on Elementary Nets." In R. Devillers and A. Valmari, editors,
Proceedings of the 36th International Conference on Application and Theory
of Petri Nets and Concurrency (Brussels, Belgium). Lecture Notes in Computer
Science volume 9115, Springer-Verlag, 2015. Available from http://cadp.inria.fr/publications/Garavel-15-a.html
- [Garavel-Sighireanu-99]
- Hubert Garavel and Mihaela Sighireanu. "A Graphical
Parallel Composition Operator for Process Algebras." In J. Wu, Q. Gao, and
S.T. Chanson, editors, Proceedings of the Joint International Conference
on Formal Description Techniques for Distributed Systems and Communication
Protocols, and Protocol Specification, Testing, and Verification FORTE/PSTV'99
(Beijing, China). Kluwer Academic Publishers, 1999. Available from http://cadp.inria.fr/publications/Garavel-Sighireanu-99.html
- [Groote-Ponse-90]
- Jan Friso Groote and Alban Ponse. "The syntax and semantics
of mCRL." In A. Ponse, C. Verhoef and S.F.M. van Vlijmen, editors, Algebra of
Communicating Processes '94, Workshops in Computing Series, Springer-Verlag,
pp. 26-62, 1995. Also appeared as: Technical Report CS-R9076, CWI, Amsterdam,
1990.
- [ISO-89]
- ISO/IEC. "LOTOS --- A Formal Description Technique Based on the
Temporal Ordering of Observational Behaviour." International Organization
for Standardization --- Information Processing Systems --- Open Systems Interconnection.
International Standard number 8807. Geneva, September 1989.
- [ISO-01]
- ISO/IEC.
"Enhancements to LOTOS (E-LOTOS)." International Organization for Standardization
--- Information Technology. International Standard number 15437:2001. Geneva,
September 2001.
- [Lang-05]
- Frederic Lang. "EXP.OPEN 2.0: A Flexible Tool Integrating
Partial Order, Compositional, and On-the-fly Verification Methods." In J. van
de Pol, J. Romijn and G. Smith, editors, Proceedings of the 5th International
Conference on Integrated Formal Methods IFM'2005 (Eindhoven, The Netherlands).
Lecture Notes in Computer Science volume 3771, Springer-Verlag, 2005. Available
from http://cadp.inria.fr/publications/Lang-05.html
- [Lang-06]
- Frederic Lang. "Refined
Interfaces for Compositional Verification." In E. Najm, J.-F. Pradat-Peyre and
V. Viguie Donzeau-Gouge, editors, Proceedings of the 26th IFIP WG 6.1 International
Conference on Formal Techniques for Networked and Distributed Systems FORTE'2006
(Paris, France). Lecture Notes in Computer Science volume 4229, Springer-Verlag,
2006. Available from http://cadp.inria.fr/publications/Lang-06.html
- [Milner-89]
- Robin
Milner. "Communication and Concurrency." Prentice-Hall, 1989.
- [Pace-Lang-Mateescu-03]
- Gordon
Pace, Frederic Lang, and Radu Mateescu. "Calculating tau-confluence compositionally."
In W.A. Hunt Jr. and F. Somenzi, editors, 15th Computer-Aided Verification conference
(CAV 2003), Lecture Notes in Computer Science volume 2725, Springer-Verlag,
2003. Available from http://cadp.inria.fr/publications/Pace-Lang-Mateescu-03.html
Versions 1.*: Marius Bozga, Jean-Claude Fernandez, and Laurent Mounier.
Versions 2.*: Frederic Lang and Hubert Garavel.
- filename.exp
- network
of communicating automata (input)
- filename.c
- graph module for filename.exp
(output)
- filename.fc2
- FC2 network (output, with -network fc2 option)
- filename.ll_net
- low level PEP Petri net (output, with -network pep option)
- filename.nupn
- NUPN Petri net (output, with -network nupn option)
- filename.tpn
- TINA Petri
net (output, with -network tina option)
- prog.a
- exploration module (archive,
input)
- prog.c
- exploration module (source, input)
- prog.o
- exploration module
(object code, input)
- prog
- executable program (output)
- $CADP/com/exp.open
- ``exp.open'' shell script
- $CADP/bin.`arch`/libexp_open.a
- ``exp.open'' static library
- $CADP/bin.`arch`/exp2c
- ``exp.open'' graph module generator
- $CADP/incl/caesar_*.h
- OPEN/CAESAR interfaces
- $CADP/bin.`arch`/libcaesar.a
- OPEN/CAESAR library
- $CADP/src/open_caesar/*.c
- exploration modules (source)
- $CADP/bin.`arch`/*.a
- exploration modules (archive)
- $CADP/bin.`arch`/*.o
- exploration modules (object code)
aldebaran
,
aut
,
bcg
,
bcg_io
,
caesar_hide_1
,
caesar_rename_1
,
exp
,
lotos.open
,
projector
,
regexp
,
seq
,
svl
Additional information is available from the CADP Web page located
at http://cadp.inria.fr
Directives for installation are given in files $CADP/INSTALLATION_*.
Recent changes and improvements to this software are reported and commented
in file $CADP/HISTORY.
Please report bugs to
cadp@inria.fr
Table of Contents