merge changes with lbtt 1.0.2

This commit is contained in:
Alexandre Duret-Lutz 2003-07-29 12:21:22 +00:00
parent ae5d2f9b09
commit ea90d2f8be
3 changed files with 205 additions and 158 deletions

View file

@ -30,6 +30,38 @@
* src/Alloc.h (__INT_TO_PTR): Redefine to work around glibc 2.3. * src/Alloc.h (__INT_TO_PTR): Redefine to work around glibc 2.3.
* doc/texinfo.tex: New upstream version. * doc/texinfo.tex: New upstream version.
2003-07-18 Heikki Tauriainen <heikki.tauriainen@hut.fi>
* UserCommands.cc (printAutomatonAnalysisResults): Ensure that
the states in a witness for the nonemptiness of two Bûchi
automata are distinct to prevent the truth valuation for the
atomic propositions from being defined multiple times in any
state of the witness.
* Version 1.0.2 released.
2003-07-17 Heikki Tauriainen <heikki.tauriainen@hut.fi>
* NeverClaimAutomaton.cc (ParseErrorException::ParseErrorException):
Fix a string buffer overflow.
* ProductAutomaton.cc (findAcceptingExecution): Concatenate
fragments of an accepting cycle in the correct order. (Thanks to
Joachim Klein for pointing out an example uncovering the bug
in previous releases.)
2002-11-04 Heikki Tauriainen <heikki.tauriainen@hut.fi>
* StatDisplay.cc (printCollectiveStats): If using more than five
formula operators (but the total number of operators is not
a multiple of 5), insert an empty line in the output before the
last row of the operator distribution table.
2002-10-21 Heikki Tauriainen <heikki.tauriainen@hut.fi>
* BitArray.cc (BitArray::find): Fix bug in testing whether
all accessed bytes were zero.
2002-10-01 Heikki Tauriainen <heikki.tauriainen@hut.fi> 2002-10-01 Heikki Tauriainen <heikki.tauriainen@hut.fi>
* Version 1.0.1 released. * Version 1.0.1 released.

View file

@ -14,12 +14,14 @@
This file documents how to use the LTL-to-B@"uchi This file documents how to use the LTL-to-B@"uchi
translator testbench @command{lbtt}. translator testbench @command{lbtt}.
Copyright @copyright{} 2001, 2003 Heikki Tauriainen Copyright @copyright{} 2003 Heikki Tauriainen
@ifinfo @ifinfo
@email{heikki.tauriainen@@hut.fi} @email{heikki.tauriainen@@hut.fi}
@end ifinfo @end ifinfo
@ifnotinfo @ifnotinfo
@ifnothtml
<@email{heikki.tauriainen@@hut.fi}> <@email{heikki.tauriainen@@hut.fi}>
@end ifnothtml
@end ifnotinfo @end ifnotinfo
@ifhtml @ifhtml
@ -66,11 +68,11 @@ under the above conditions for modified versions.
@author Heikki Tauriainen <@email{heikki.tauriainen@@hut.fi}> @author Heikki Tauriainen <@email{heikki.tauriainen@@hut.fi}>
@page @page
@vskip 0pt plus 1filll @vskip 0pt plus 1filll
Copyright @copyright{} 2001, 2003 Heikki Tauriainen Copyright @copyright{} 2003 Heikki Tauriainen
<@email{heikki.tauriainen@@hut.fi}> <@email{heikki.tauriainen@@hut.fi}>
The latest version of this manual can be obtained from@* The latest version of this manual can be obtained from@*
<@url{http://www.tcs.hut.fi/%7Ehtauriai/lbtt/}>. <@url{http://www.tcs.hut.fi/Software/lbtt/}>.
Permission is granted to make and distribute verbatim Permission is granted to make and distribute verbatim
copies of this manual provided the copyright notice and copies of this manual provided the copyright notice and
@ -101,7 +103,7 @@ under the above conditions for modified versions.
for translating propositional linear temporal logic formulas into for translating propositional linear temporal logic formulas into
B@"uchi automata. B@"uchi automata.
This is edition 1.0.0 of the @command{lbtt} documentation. This edition This is edition 1.0.1 of the @command{lbtt} documentation. This edition
applies to @command{lbtt} versions 1.0.x. applies to @command{lbtt} versions 1.0.x.
@command{lbtt} is free software, you may change and redistribute it @command{lbtt} is free software, you may change and redistribute it
@ -113,20 +115,20 @@ comes with NO WARRANTY. See @ref{Copying} for details.
* Overview:: A short introduction to @command{lbtt}. * Overview:: A short introduction to @command{lbtt}.
* Test methods:: Description of the tests @command{lbtt} * Test methods:: Description of the tests @command{lbtt}
performs. performs.
* Invocation:: How to run the program. * Invocation:: How to run the program.
* Interpreting the output:: Explanation of @command{lbtt}'s output messages. * Interpreting the output:: Explanation of @command{lbtt}'s output messages.
* Analyzing test results:: Working with @command{lbtt}'s internal * Analyzing test results:: Working with @command{lbtt}'s internal
commands. commands.
* Interfacing with lbtt:: Interfacing LTL-to-B@"uchi translators * Interfacing with lbtt:: Interfacing LTL-to-B@"uchi translators
with @command{lbtt}. with @command{lbtt}.
* References:: List of references. * References:: List of references.
* Definitions:: A reference of the formal definitions of * Definitions:: A reference of the formal definitions of
the various objects that @command{lbtt} the various objects that @command{lbtt}
manipulates. manipulates.
* Configuration file option index:: * Configuration file option index::
* Command line option index:: * Command line option index::
@ -200,12 +202,12 @@ formulas as input and then performing simple consistency checks on the
resulting automata to test whether the translators seem to operate correctly resulting automata to test whether the translators seem to operate correctly
in practice. (See in practice. (See
@ifnottex @ifnottex
@ref{[Tau00]} @ref{[TH02]}
@end ifnottex @end ifnottex
@iftex @iftex
[Tau00] [TH02]
@end iftex @end iftex
for a description of the theory behind the testing methods.) If the tests for more information on the theory behind the testing methods.) If the tests
suggest an implementation suggest an implementation
error in a translator, @command{lbtt} can generate sample data which causes error in a translator, @command{lbtt} can generate sample data which causes
a test failure and which may also be useful for debugging the a test failure and which may also be useful for debugging the
@ -237,6 +239,13 @@ together with the outline of @command{lbtt}'s testing procedure. However, the
chapter is not intended to be a thorough introduction to the theoretical chapter is not intended to be a thorough introduction to the theoretical
background of the different tests; see, for example, background of the different tests; see, for example,
@ifnottex @ifnottex
@ref{[TH02]}
@end ifnottex
@iftex
[TH02]
@end iftex
or
@ifnottex
@ref{[Tau00]} @ref{[Tau00]}
@end ifnottex @end ifnottex
@iftex @iftex
@ -246,24 +255,24 @@ for more information.
@menu @menu
* Random input generation:: How @command{lbtt} generates input for the * Random input generation:: How @command{lbtt} generates input for the
tests. tests.
* Testing procedure:: Outline of @command{lbtt}'s testing * Testing procedure:: Outline of @command{lbtt}'s testing
procedure. procedure.
* Model checking result cross-comparison test:: * Model checking result cross-comparison test::
Model checking the same LTL formula in Model checking the same LTL formula in
a fixed state space using different a fixed state space using different
LTL-to-B@"uchi translators should LTL-to-B@"uchi translators should
give the same model checking result. give the same model checking result.
* Model checking result consistency check:: * Model checking result consistency check::
Model checking two complementary LTL Model checking two complementary LTL
formulas in the same state space using formulas in the same state space using
an LTL-to-B@"uchi translator should an LTL-to-B@"uchi translator should
give consistent results. give consistent results.
* Buchi automata intersection emptiness check:: * Buchi automata intersection emptiness check::
The intersection of the languages The intersection of the languages
accepted by two B@"uchi automata accepted by two B@"uchi automata
constructed from two complementary constructed from two complementary
LTL formulas should be empty. LTL formulas should be empty.
@end menu @end menu
@ -293,9 +302,9 @@ the input generation algorithms.
@menu @menu
* Random LTL formulas:: How @command{lbtt} generates random * Random LTL formulas:: How @command{lbtt} generates random
LTL formulas. LTL formulas.
* Random state spaces:: How @command{lbtt} generates random * Random state spaces:: How @command{lbtt} generates random
state spaces. state spaces.
@end menu @end menu
@ -1019,7 +1028,7 @@ graphs:
@smallexample @smallexample
@r{1} function RandomGraph(@var{n} : Integer; @var{d} : Real in [0.0,1.0]; @r{1} function RandomGraph(@var{n} : Integer; @var{d} : Real in [0.0,1.0];
@var{t} : Real in [0.0,1.0]) : Graph; @var{t} : Real in [0.0,1.0]) : Graph;
@r{2} @var{S} := @{s1, s2, ..., sn@}; @r{2} @var{S} := @{s1, s2, ..., sn@};
@r{3} @var{NodesToProcess} := @{s1@}; @r{3} @var{NodesToProcess} := @{s1@};
@r{4} @var{UnreachableNodes} := @{s2, s3, ..., sn@}; @r{4} @var{UnreachableNodes} := @{s2, s3, ..., sn@};
@ -1046,7 +1055,7 @@ graphs:
@r{25} end; @r{25} end;
@r{26} end; @r{26} end;
@r{27} if @r{there is no edge} (@var{state},@var{state'}) @r{in} @var{Edges} @r{27} if @r{there is no edge} (@var{state},@var{state'}) @r{in} @var{Edges}
@r{for any} @var{state'} @r{in} @var{S} then @r{for any} @var{state'} @r{in} @var{S} then
@r{28} @r{insert} (@var{state},@var{state}) @r{into} @var{Edges}; @r{28} @r{insert} (@var{state},@var{state}) @r{into} @var{Edges};
@r{29} end; @r{29} end;
@r{30} return <@var{S}, @var{Edges}, s1, @var{Label}>; @r{30} return <@var{S}, @var{Edges}, s1, @var{Label}>;
@ -1279,7 +1288,7 @@ how to use @command{lbtt}'s internal commands).
@menu @menu
* Configuration file:: Description of the configuration file * Configuration file:: Description of the configuration file
format. format.
* Command line options:: List of command line options. * Command line options:: List of command line options.
@end menu @end menu
@ -1343,15 +1352,15 @@ are optional and can be used to override the default testing parameters.
@menu @menu
* Algorithm section:: Each LTL-to-B@"uchi translator to be * Algorithm section:: Each LTL-to-B@"uchi translator to be
tested requires a separate tested requires a separate
@samp{Algorithm} section in the @samp{Algorithm} section in the
configuration file. configuration file.
* GlobalOptions section:: Options for changing the general * GlobalOptions section:: Options for changing the general
behavior of @command{lbtt}. behavior of @command{lbtt}.
* FormulaOptions section:: Options controlling the way random * FormulaOptions section:: Options controlling the way random
LTL formulas are generated. LTL formulas are generated.
* StateSpaceOptions section:: Options controlling the way random * StateSpaceOptions section:: Options controlling the way random
state spaces are generated. state spaces are generated.
* Sample configuration file:: An example of a configuration file. * Sample configuration file:: An example of a configuration file.
@end menu @end menu
@ -1660,16 +1669,16 @@ The following table illustrates the effects of the
@t{ @t{
@r{LTL formula} @r{Can} f @r{be} OutputMode@r{'s effect on the} @r{LTL formula} @r{Can} f @r{be} OutputMode@r{'s effect on the}
f @r{generated if} @r{formula passed to the} f @r{generated if} @r{formula passed to the}
GenerateMode @r{LTL-to-B@"uchi translators} GenerateMode @r{LTL-to-B@"uchi translators}
=NNF @r{?} =NNF @r{?}
------------------------------------------------------------- -------------------------------------------------------------
(p1 V ! p0) @r{Yes} Normal@r{/}NNF@r{:} (p1 V ! p0) (p1 V ! p0) @r{Yes} Normal@r{/}NNF@r{:} (p1 V ! p0)
[] p0 -> <> p1 @r{Yes*} Nor@r{:} [] p0 -> <> p1 [] p0 -> <> p1 @r{Yes*} Nor@r{:} [] p0 -> <> p1
NNF@r{:} (true U ! p0) \/ (true U p1) NNF@r{:} (true U ! p0) \/ (true U p1)
! <> p0 @r{No} Nor@r{:} ! <> p0 ! <> p0 @r{No} Nor@r{:} ! <> p0
NNF@r{:} (false V ! p0) NNF@r{:} (false V ! p0)
@r{* only if} AbbreviatedOperators=Yes @r{* only if} AbbreviatedOperators=Yes
} }
@ -1906,7 +1915,7 @@ Algorithm
@{ @{
Name = "Translator 1" Name = "Translator 1"
Path = "~/lbtt/bin/t-1" # location of the translator Path = "~/lbtt/bin/t-1" # location of the translator
# executable # executable
Enabled = Yes Enabled = Yes
@} @}
@ -1915,7 +1924,7 @@ Algorithm
Name = "Translator 2" Name = "Translator 2"
Path = "~/lbtt/bin/t-2" Path = "~/lbtt/bin/t-2"
Parameters = "-x -y 3 -v 0" # parameters to be passed to the Parameters = "-x -y 3 -v 0" # parameters to be passed to the
# `~/lbtt/bin/t-2' executable # `~/lbtt/bin/t-2' executable
Enabled = Yes Enabled = Yes
@} @}
@ -1932,8 +1941,8 @@ GlobalOptions
IntersectionTest = No # emptiness test IntersectionTest = No # emptiness test
ModelCheck = Local # perform the tests only in a ModelCheck = Local # perform the tests only in a
# single state of each state # single state of each state
# space # space
@} @}
FormulaOptions FormulaOptions
@ -1943,15 +1952,15 @@ FormulaOptions
OutputMode = Normal OutputMode = Normal
ChangeInterval = 1 # new formula after each test ChangeInterval = 1 # new formula after each test
# round # round
RandomSeed = 4632912 # random seed RandomSeed = 4632912 # random seed
Size = 5...15 # 5 to 15 nodes in the parse Size = 5...15 # 5 to 15 nodes in the parse
# tree of each formula # tree of each formula
Propositions = 3 # max. 3 different propositions Propositions = 3 # max. 3 different propositions
# in each LTL formula # in each LTL formula
PropositionPriority = 50 # priorities for propositional PropositionPriority = 50 # priorities for propositional
TruePriority = 1 # symbols TruePriority = 1 # symbols
@ -1966,32 +1975,32 @@ FormulaOptions
ReleasePriority = 5 ReleasePriority = 5
DefaultOperatorPriority = 0 # disable all the remaining DefaultOperatorPriority = 0 # disable all the remaining
# operators # operators
@} @}
StatespaceOptions StatespaceOptions
@{ @{
GenerateMode = RandomGraph # generate random (not GenerateMode = RandomGraph # generate random (not
# necessarily connected) graphs # necessarily connected) graphs
# as state spaces # as state spaces
ChangeInterval = 10 # new state space after every ChangeInterval = 10 # new state space after every
# 10th test round # 10th test round
RandomSeed = 37620 # random seed RandomSeed = 37620 # random seed
Size = 50 # 50 states in each state space Size = 50 # 50 states in each state space
Propositions = 3 # 3 propositions in each state Propositions = 3 # 3 propositions in each state
# of each state space # of each state space
EdgeProbability = 0.1 # approximate probability of EdgeProbability = 0.1 # approximate probability of
# having a transition between # having a transition between
# any two states # any two states
TruthProbability = 0.5 # probability with which any TruthProbability = 0.5 # probability with which any
# atomic proposition is true in # atomic proposition is true in
# a state # a state
@} @}
@end smallexample @end smallexample
@ -2008,16 +2017,16 @@ there is no direct equivalent in the configuration file options.
@menu @menu
* Special options:: Options available only as command line * Special options:: Options available only as command line
parameters. parameters.
* Global options:: Options corresponding to the * Global options:: Options corresponding to the
@samp{GlobalOptions} section of the @samp{GlobalOptions} section of the
configuration file. configuration file.
* LTL formula options:: Options corresponding to the * LTL formula options:: Options corresponding to the
@samp{FormulaOptions} section of the @samp{FormulaOptions} section of the
configuration file. configuration file.
* State space options:: Options corresponding to the * State space options:: Options corresponding to the
@samp{StateSpaceOptions} section of the @samp{StateSpaceOptions} section of the
configuration file. configuration file.
@end menu @end menu
@ -2532,9 +2541,9 @@ messages will be suppressed; higher verbosity modes show information about
@menu @menu
* Configuration information:: The current configuration is shown * Configuration information:: The current configuration is shown
before starting tests. before starting tests.
* Test round messages:: Conventions for reporting test * Test round messages:: Conventions for reporting test
results and test failures. results and test failures.
* Test statistics:: Shown at the end of testing. * Test statistics:: Shown at the end of testing.
@end menu @end menu
@ -2886,13 +2895,13 @@ showing a prompt of the form
@menu @menu
* Command conventions:: Conventions for entering commands. * Command conventions:: Conventions for entering commands.
* Getting help:: Use the @samp{help} command to access * Getting help:: Use the @samp{help} command to access
on-line help. on-line help.
* Test control commands:: Commands for continuing testing, * Test control commands:: Commands for continuing testing,
skipping tests or enabling or disabling skipping tests or enabling or disabling
implementations. implementations.
* Data display commands:: Commands for displaying information * Data display commands:: Commands for displaying information
about B@"uchi automata, state spaces, about B@"uchi automata, state spaces,
and LTL formulas. and LTL formulas.
* Failure analysis commands:: Commands for analyzing test failures. * Failure analysis commands:: Commands for analyzing test failures.
@end menu @end menu
@ -3279,10 +3288,10 @@ itself indefinitely. The witness might look as follows:
@smallexample @smallexample
Execution M: Execution M:
prefix: < s0 @{p0, p4@}, prefix: < s0 @{p0, p4@},
s2 @{p1, p2, p3, p4@} > s2 @{p1, p2, p3, p4@} >
cycle: < s34 @{p0, p1, p2, p3, p4@}, cycle: < s34 @{p0, p1, p2, p3, p4@},
s42 @{p4@}, s42 @{p4@},
s44 @{p1, p4@} > s44 @{p1, p4@} >
@end smallexample @end smallexample
@noindent @noindent
@ -3312,7 +3321,7 @@ $S = \{s_0, s_2, s_{34}, s_{42}, s_{44}\}$,
@iftex @iftex
@tex @tex
$\rho = \{(s_0, s_2), (s_2, s_{34}), (s_{34}, s_{42}), (s_{42}, s_{44}), $\rho = \{(s_0, s_2), (s_2, s_{34}), (s_{34}, s_{42}), (s_{42}, s_{44}),
(s_{44}, s_{34})\}$, (s_{44}, s_{34})\}$,
@end tex @end tex
@end iftex @end iftex
@ifnottex @ifnottex
@ -3351,17 +3360,17 @@ LTL and might look as follows:
+-> M,<s0, ...> |== (p1 U p4) : +-> M,<s0, ...> |== (p1 U p4) :
| +-> M,<s0, ...> |== p4 | +-> M,<s0, ...> |== p4
+-> M,<s0, ...> |== (! p1 -> [] p4) : +-> M,<s0, ...> |== (! p1 -> [] p4) :
+-> M,<s0, ...> |== [] p4 : +-> M,<s0, ...> |== [] p4 :
+-> M,<s0, ...> |== p4 +-> M,<s0, ...> |== p4
+-> s0 --> s2 +-> s0 --> s2
+-> M,<s2, ...> |== p4 +-> M,<s2, ...> |== p4
+-> s2 --> s34 +-> s2 --> s34
+-> M,<s34, ...> |== p4 +-> M,<s34, ...> |== p4
+-> s34 --> s42 +-> s34 --> s42
+-> M,<s42, ...> |== p4 +-> M,<s42, ...> |== p4
+-> s42 --> s44 +-> s42 --> s44
+-> M,<s44, ...> |== p4 +-> M,<s44, ...> |== p4
+-> s44 --> s34 +-> s44 --> s34
@end smallexample @end smallexample
@noindent @noindent
@ -3437,13 +3446,13 @@ LTL-to-B@"uchi translator implementations to @command{lbtt}.)
@menu @menu
* Translator interface:: @command{lbtt}'s requirements for an * Translator interface:: @command{lbtt}'s requirements for an
LTL-to-B@"uchi translator. LTL-to-B@"uchi translator.
* Format for LTL formulas:: How @command{lbtt} passes LTL formulas * Format for LTL formulas:: How @command{lbtt} passes LTL formulas
to the translators. to the translators.
* Buchi automata:: How @command{lbtt} expects the translators * Buchi automata:: How @command{lbtt} expects the translators
to present their output. to present their output.
* The lbtt-translate utility:: An interface for two LTL-to-B@"uchi * The lbtt-translate utility:: An interface for two LTL-to-B@"uchi
translators. translators.
@end menu @end menu
@ -3511,41 +3520,41 @@ notation) is as follows:
@smallexample @smallexample
@var{formula} @r{::=} `t' @var{formula} @r{::=} `t'
@r{// ``true''} @r{// ``true''}
@r{|} `f' @r{|} `f'
@r{// ``false''} @r{// ``false''}
@r{|} `p'@r{[}0@r{---}9@r{]+} @r{|} `p'@r{[}0@r{---}9@r{]+}
@r{// atomic proposition with} @r{// atomic proposition with}
@r{// a nonnegative integer} @r{// a nonnegative integer}
@r{// identifier} @r{// identifier}
@r{|} `!' @var{sp} @var{formula} @r{|} `!' @var{sp} @var{formula}
@r{// negation} @r{// negation}
@r{|} `X' @var{sp} @var{formula} @r{|} `X' @var{sp} @var{formula}
@r{// ``next time''} @r{// ``next time''}
@r{|} `F' @var{sp} @var{formula} @r{|} `F' @var{sp} @var{formula}
@r{// ``finally''} @r{// ``finally''}
@r{|} `G' @var{sp} @var{formula} @r{|} `G' @var{sp} @var{formula}
@r{// ``globally''} @r{// ``globally''}
@r{|} `&' @var{sp} @var{formula} @var{sp} @var{formula} @r{|} `&' @var{sp} @var{formula} @var{sp} @var{formula}
@r{// conjunction} @r{// conjunction}
@r{|} `|' @var{sp} @var{formula} @var{sp} @var{formula} @r{|} `|' @var{sp} @var{formula} @var{sp} @var{formula}
@r{// disjunction} @r{// disjunction}
@r{|} `i' @var{sp} @var{formula} @var{sp} @var{formula} @r{|} `i' @var{sp} @var{formula} @var{sp} @var{formula}
@r{// implication} @r{// implication}
@r{|} `e' @var{sp} @var{formula} @var{sp} @var{formula} @r{|} `e' @var{sp} @var{formula} @var{sp} @var{formula}
@r{// equivalence} @r{// equivalence}
@r{|} `^' @var{sp} @var{formula} @var{sp} @var{formula} @r{|} `^' @var{sp} @var{formula} @var{sp} @var{formula}
@r{// exclusive or} @r{// exclusive or}
@r{|} `U' @var{sp} @var{formula} @var{sp} @var{formula} @r{|} `U' @var{sp} @var{formula} @var{sp} @var{formula}
@r{// ``(strong) until''} @r{// ``(strong) until''}
@r{|} `V' @var{sp} @var{formula} @var{sp} @var{formula} @r{|} `V' @var{sp} @var{formula} @var{sp} @var{formula}
@r{// ``(weak) release''} @r{// ``(weak) release''}
@r{|} `W' @var{sp} @var{formula} @var{sp} @var{formula} @r{|} `W' @var{sp} @var{formula} @var{sp} @var{formula}
@r{// ``weak until''} @r{// ``weak until''}
@r{|} `M' @var{sp} @var{formula} @var{sp} @var{formula} @r{|} `M' @var{sp} @var{formula} @var{sp} @var{formula}
@r{// ``strong release''} @r{// ``strong release''}
@r{|} `B' @var{sp} @var{formula} @var{sp} @var{formula} @r{|} `B' @var{sp} @var{formula} @var{sp} @var{formula}
@r{// ``before''} @r{// ``before''}
@end smallexample @end smallexample
@noindent @noindent
@ -3607,7 +3616,7 @@ described using the following grammar:
@var{number-of-acceptance-conditions} @r{::=} @r{[}0@r{---}9@r{]+} @var{number-of-acceptance-conditions} @r{::=} @r{[}0@r{---}9@r{]+}
@var{states} @r{::=} @var{states} @var{sp} @var{state} @var{states} @r{::=} @var{states} @var{sp} @var{state}
@r{|} @r{// empty} @r{|} @r{// empty}
@var{state} @r{::=} @var{state-id} @var{sp} @var{initial?} @var{acceptance-conditions} @var{sp} `-1' @var{transitions} @var{sp} `-1' @var{state} @r{::=} @var{state-id} @var{sp} @var{initial?} @var{acceptance-conditions} @var{sp} `-1' @var{transitions} @var{sp} `-1'
@ -3616,33 +3625,33 @@ described using the following grammar:
@var{initial?} @r{::=} `0' @r{|} `1' @var{initial?} @r{::=} `0' @r{|} `1'
@var{acceptance-conditions} @r{::=} @var{acceptance-conditions} @var{sp} @var{acceptance-set-id} @var{acceptance-conditions} @r{::=} @var{acceptance-conditions} @var{sp} @var{acceptance-set-id}
@r{|} @r{// empty} @r{|} @r{// empty}
@var{acceptance-set-id} @r{::=} @r{[}0@r{---}9@r{]+} @var{acceptance-set-id} @r{::=} @r{[}0@r{---}9@r{]+}
@var{transitions} @r{::=} @var{transitions} @var{sp} @var{transition} @var{transitions} @r{::=} @var{transitions} @var{sp} @var{transition}
@r{|} @r{// empty} @r{|} @r{// empty}
@var{transition} @r{::=} @var{state-id} @var{sp} @var{guard-formula} @var{transition} @r{::=} @var{state-id} @var{sp} @var{guard-formula}
@var{guard-formula} @r{::=} `t' @var{guard-formula} @r{::=} `t'
@r{// ``true''} @r{// ``true''}
@r{|} `f' @r{|} `f'
@r{// ``false''} @r{// ``false''}
@r{|} `p'@r{[}0@r{---}9@r{]+} @r{|} `p'@r{[}0@r{---}9@r{]+}
@r{// atomic proposition} @r{// atomic proposition}
@r{|} `!' @var{sp} @var{guard-formula} @r{|} `!' @var{sp} @var{guard-formula}
@r{// negation} @r{// negation}
@r{|} `&' @var{sp} @var{guard-formula} @var{sp} @var{guard-formula} @r{|} `&' @var{sp} @var{guard-formula} @var{sp} @var{guard-formula}
@r{// conjunction} @r{// conjunction}
@r{|} `|' @var{sp} @var{guard-formula} @var{sp} @var{guard-formula} @r{|} `|' @var{sp} @var{guard-formula} @var{sp} @var{guard-formula}
@r{// disjunction} @r{// disjunction}
@r{|} `i' @var{sp} @var{guard-formula} @var{sp} @var{guard-formula} @r{|} `i' @var{sp} @var{guard-formula} @var{sp} @var{guard-formula}
@r{// implication} @r{// implication}
@r{|} `e' @var{sp} @var{guard-formula} @var{sp} @var{guard-formula} @r{|} `e' @var{sp} @var{guard-formula} @var{sp} @var{guard-formula}
@r{// equivalence} @r{// equivalence}
@r{|} `^' @var{sp} @var{guard-formula} @var{sp} @var{guard-formula} @r{|} `^' @var{sp} @var{guard-formula} @var{sp} @var{guard-formula}
@r{// exclusive or} @r{// exclusive or}
@end smallexample @end smallexample
@noindent @noindent
(The quoted characters denote the characters themselves; @var{sp} denotes any (The quoted characters denote the characters themselves; @var{sp} denotes any
@ -3786,10 +3795,10 @@ originally based on the algorithm presented in
@end iftex @end iftex
See See
@ifinfo @ifinfo
@url{http://netlib.bell-labs.com/netlib/spin/whatispin.html} @url{http://spinroot.com/spin/whatispin.html}
@end ifinfo @end ifinfo
@ifnotinfo @ifnotinfo
<@uref{http://netlib.bell-labs.com/netlib/spin/whatispin.html}> <@uref{http://spinroot.com/spin/whatispin.html}>
@end ifnotinfo @end ifnotinfo
for more information. for more information.
@ -3912,19 +3921,25 @@ pages 247---263. Springer-Verlag, 2000.
@item @anchor{[Tau00]} [Tau00] @item @anchor{[Tau00]} [Tau00]
H. Tauriainen. Automated testing of B@"uchi automata translators H. Tauriainen. Automated testing of B@"uchi automata translators
for linear temporal logic. Technical report A66, Laboratory for Theoretical for linear temporal logic. Research report A66, Laboratory for Theoretical
Computer Science, Helsinki University of Technology, Espoo, Finland, Computer Science, Helsinki University of Technology, Espoo, Finland,
2000. Available on the WWW at 2000. Available on the WWW at
@ifinfo @ifinfo
@url{http://www.tcs.hut.fi/Publications/reports/A66abstract.html} @url{http://www.tcs.hut.fi/Publications/info/bibdb.HUT-TCS-A66.shtml}
@end ifinfo @end ifinfo
@ifhtml @ifhtml
<@uref{http://www.tcs.hut.fi/Publications/reports/A66abstract.html}>. <@uref{http://www.tcs.hut.fi/Publications/info/bibdb.HUT-TCS-A66.shtml}>.
@end ifhtml @end ifhtml
@iftex @iftex
<@url{http://www.tcs.hut.fi/Publications/reports/ A66abstract.html}>. <@url{http://www.tcs.hut.fi/Publications/info/ bibdb.HUT-TCS-A66.shtml}>.
@end iftex @end iftex
@item @anchor{[TH02]} [TH02]
H. Tauriainen and K. Heljanko. Testing LTL formula translation into B@"uchi
automata.
@i{International Journal on Software Tools for Technology Transfer (STTT)}
4(1):57---70, 2002.
@item @anchor{[Var96]} [Var96] @item @anchor{[Var96]} [Var96]
M.@: Y.@: Vardi. An automata-theoretic approach to linear temporal logic. M.@: Y.@: Vardi. An automata-theoretic approach to linear temporal logic.
In @i{Logics for Concurrency: Structure versus Automata}, volume 1043 of In @i{Logics for Concurrency: Structure versus Automata}, volume 1043 of
@ -3949,14 +3964,14 @@ manipulates.
@menu @menu
* LTL formulas:: @command{lbtt} uses traditional semantics * LTL formulas:: @command{lbtt} uses traditional semantics
for propositional linear temporal for propositional linear temporal
logic. logic.
* Generalized Buchi automata:: The B@"uchi automata used by @command{lbtt} * Generalized Buchi automata:: The B@"uchi automata used by @command{lbtt}
have one initial state, labels on have one initial state, labels on
transitions and zero or more transitions and zero or more
acceptance conditions. acceptance conditions.
* State spaces:: State spaces are Kripke structures * State spaces:: State spaces are Kripke structures
with a total transition relation. with a total transition relation.
@end menu @end menu

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (C) 1999, 2000, 2001, 2002 * Copyright (C) 1999, 2000, 2001, 2002, 2003
* Heikki Tauriainen <Heikki.Tauriainen@hut.fi> * Heikki Tauriainen <Heikki.Tauriainen@hut.fi>
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or