* src/tgba/bdddict.hh, src/tgba/state.hh, src/tgba/statebdd.hh,

src/tgba/succiter.hh, src/tgba/succiterconcrete.hh,
src/tgba/tgba.hh, src/tgba/tgbabddconcrete.hh,
src/tgba/tgbabddconcreteproduct.hh, src/tgba/tgbaexplicit.hh,
src/tgba/tgbaproduct.hh, src/tgba/tgbareduc.hh,
src/tgba/tgbatba.hh, src/tgbaalgos/emptiness.hh,
src/tgbaalgos/magic.hh, src/tgbaalgos/replayrun.hh,
src/tgbaalgos/gtec/gtec.hh, iface/gspn/ssp.hh: Introduce Doxygen
groups in the documentation.  Presently this only covers the
tgba/ directory, and the emptiness-check algorithms.
* doc/Doxyfile.in (EXCLUDE_PATTERNS): Skip Bison-generated files
in src/evtgbaparse/.
This commit is contained in:
Alexandre Duret-Lutz 2004-11-16 23:47:50 +00:00
parent cac85dbcca
commit 2cd298e4b0
19 changed files with 182 additions and 70 deletions

View file

@ -29,43 +29,41 @@
namespace spot
{
/// An accepted run, for a tgba.
struct tgba_run
{
struct step {
const state* s;
bdd label;
bdd acc;
};
typedef std::list<step> steps;
steps prefix;
steps cycle;
~tgba_run();
tgba_run()
{
};
tgba_run(const tgba_run& run);
tgba_run& operator=(const tgba_run& run);
};
class tgba;
struct tgba_run;
/// \brief Display a tgba_run.
/// \addtogroup emptiness_check Emptiness-check
/// \ingroup tgba_algorithms
///
/// Output the prefix and cycle of the tgba_run \a run, even if it
/// does not corresponds to an actual run of the automaton \a a.
/// This is unlike replay_tgba_run(), which will ensure the run
/// actually exist in the automaton (and will display any transition
/// annotation).
/// All emptiness-check algorithms follow the same interface.
/// Basically once you have constructed an instance of
/// spot::emptiness_check (by instantiating a subclass, or calling a
/// functions construct such instance; see \ref
/// emptiness_check_algorithms "this list"), you should call
/// spot::emptiness_check::check() to check the automaton.
///
/// (\a a is used here only to format states and transitions.)
std::ostream& print_tgba_run(std::ostream& os,
const tgba* a,
const tgba_run* run);
/// If spot::emptiness_check::check() returns 0, then the automaton
/// was found empty. Otherwise the automaton accepts some run.
/// (Beware that some algorithms---those using bit-state
/// hashing---may found the automaton to be empty even if it is not
/// actually empty.)
///
/// When spot::emptiness_check::check() does not return 0, it
/// returns an instance of spot::emptiness_check_result. You can
/// try to call spot::emptiness_check_result::accepting_run() to
/// obtain an accepting run. For some emptiness-check algorithms,
/// spot::emptiness_check_result::accepting_run() will require some
/// extra computation. Most emptiness-check algorithms are able to
/// return such an accepting run, however this is not mandatory and
/// spot::emptiness_check_result::accepting_run() can return 0 (this
/// does not means by anyway that no accepting run exist).
///
/// The acceptance run returned by
/// spot::emptiness_check_result::accepting_run(), if any, is of
/// type spot::tgba_run. \ref tgba_run "This page" gathers existing
/// operations on these objects.
///
/// @{
/// \brief The result of an emptiness check.
///
@ -112,6 +110,53 @@ namespace spot
virtual std::ostream& print_stats(std::ostream& os) const;
};
/// @}
/// \addtogroup emptiness_check_algorithms Emptiness-check algorithms
/// \ingroup emptiness_check
/// \addtogroup tgba_run TGBA runs and supporting functions
/// \ingroup emptiness_check
/// @{
/// An accepted run, for a tgba.
struct tgba_run
{
struct step {
const state* s;
bdd label;
bdd acc;
};
typedef std::list<step> steps;
steps prefix;
steps cycle;
~tgba_run();
tgba_run()
{
};
tgba_run(const tgba_run& run);
tgba_run& operator=(const tgba_run& run);
};
/// \brief Display a tgba_run.
///
/// Output the prefix and cycle of the tgba_run \a run, even if it
/// does not corresponds to an actual run of the automaton \a a.
/// This is unlike replay_tgba_run(), which will ensure the run
/// actually exist in the automaton (and will display any transition
/// annotation).
///
/// (\a a is used here only to format states and transitions.)
std::ostream& print_tgba_run(std::ostream& os,
const tgba* a,
const tgba_run* run);
/// @}
}
#endif // SPOT_TGBAALGOS_EMPTINESS_HH

View file

@ -27,6 +27,9 @@
namespace spot
{
/// \addtogroup emptiness_check_algorithms
/// @{
/// \brief Check whether the language of an automate is empty.
///
/// This is based on the following paper.
@ -149,6 +152,7 @@ namespace spot
virtual int* find_state(const state* s);
};
/// @}
}
#endif // SPOT_TGBAALGOS_GTEC_GTEC_HH

View file

@ -27,16 +27,20 @@
namespace spot
{
/// \brief Returns an emptiness checker on the spot::tgba automaton \a a.
/// During the visit of \a a, the returned checker stores explicitely all
/// \addtogroup emptiness_check_algorithms
/// @{
/// \brief Returns an emptiness checker on the spot::tgba automaton \a a.
/// During the visit of \a a, the returned checker stores explicitely all
/// the traversed states.
///
/// \pre The automaton \a a must have at most one accepting condition (i.e.
/// it is a TBA).
///
/// The method \a check() of the returned checker can be called several times
/// (until it returns a null pointer) to enumerate all the visited accepting
/// paths. The implemented algorithm is the following.
/// The method \a check() of the returned checker can be called several times
/// (until it returns a null pointer) to enumerate all the visited accepting
/// paths. The implemented algorithm is the following.
///
/// \verbatim
/// procedure check ()
@ -77,7 +81,7 @@ namespace spot
///
/// \verbatim
/// Article{ courcoubertis.92.fmsd,
/// author = {Costas Courcoubetis and Moshe Y. Vardi and Pierre
/// author = {Costas Courcoubetis and Moshe Y. Vardi and Pierre
/// Wolper and Mihalis Yannakakis},
/// title = {Memory-Efficient Algorithm for the Verification of
/// Temporal Properties},
@ -90,7 +94,7 @@ namespace spot
///
emptiness_check* explicit_magic_search(const tgba *a);
/// \brief Returns an emptiness checker on the spot::tgba automaton \a a.
/// \brief Returns an emptiness checker on the spot::tgba automaton \a a.
/// During the visit of \a a, the returned checker does not store explicitely
/// the traversed states but uses the bit state hashing technic. However, the
/// implemented algorithm is the same as the one of
@ -103,24 +107,24 @@ namespace spot
///
emptiness_check* bit_state_hashing_magic_search(const tgba *a, size_t size);
/// \brief Returns an emptiness check on the spot::tgba automaton \a a.
/// During the visit of \a a, the returned checker stores explicitely all
/// \brief Returns an emptiness check on the spot::tgba automaton \a a.
/// During the visit of \a a, the returned checker stores explicitely all
/// the traversed states.
///
/// \pre The automaton \a a must have at most one accepting condition (i.e.
/// it is a TBA).
///
/// The method \a check() of the returned checker can be called several times
/// (until it returns a null pointer) to enumerate all the visited accepting
/// paths. The implemented algorithm is the following:
///
///
/// The method \a check() of the returned checker can be called several times
/// (until it returns a null pointer) to enumerate all the visited accepting
/// paths. The implemented algorithm is the following:
///
/// \verbatim
/// procedure check ()
/// begin
/// weight = 0;
/// call dfs_blue(s0);
/// end;
///
///
/// procedure dfs_blue (s)
/// begin
/// s.color = cyan;
@ -134,8 +138,8 @@ namespace spot
/// if the edge (s,t) is accepting then
/// weight = weight - 1;
/// end if;
/// else if t.color == cyan and
/// (the edge (s,t) is accepting or
/// else if t.color == cyan and
/// (the edge (s,t) is accepting or
/// weight > t.weight) then
/// report cycle;
/// end if;
@ -145,7 +149,7 @@ namespace spot
/// end for;
/// s.color = blue;
/// end;
///
///
/// procedure dfs_red(s)
/// begin
/// if s.color == cyan then
@ -159,8 +163,8 @@ namespace spot
/// end for;
/// end;
/// \endverbatim
///
/// It is an adaptation to TBA (and a slight extension) of the one
///
/// It is an adaptation to TBA (and a slight extension) of the one
/// presented in
/// \verbatim
/// InProceedings{ schwoon.05.tacas,
@ -183,7 +187,7 @@ namespace spot
///
emptiness_check* explicit_se05_search(const tgba *a);
/// \brief Returns an emptiness checker on the spot::tgba automaton \a a.
/// \brief Returns an emptiness checker on the spot::tgba automaton \a a.
/// During the visit of \a a, the returned checker does not store explicitely
/// the traversed states but uses the bit state hashing technic. However, the
/// implemented algorithm is the same as the one of
@ -196,6 +200,7 @@ namespace spot
///
emptiness_check* bit_state_hashing_se05_search(const tgba *a, size_t size);
/// @}
}
#endif // SPOT_TGBAALGOS_MAGIC_HH

View file

@ -43,6 +43,8 @@ namespace spot
/// \param debug if set the output will be more verbose and extra
/// debugging informations will be output on failure
/// \return true iff the run could be completed
///
/// \ingroup tgba_run
bool replay_tgba_run(std::ostream& os, const tgba* a, const tgba_run* run,
bool debug = false);
}