Create the cosimulation.

* src/tgbaalgos/simulation.cc: Add the cosimulation:
(acc_compl_automaton) Add a template parameter.
(acc_compl_automaton::process_link) Add a swap source destination.
(direct_simulation) Add a template parameter.
(direct_simulation::compute_sig) Add a flag in the signature to
know if the state is initial.
(direct_simulation::build_result) Remove the flag before reading
the signature.
Swap source and destination when building the new automaton.
* src/tgbaalgos/simulation.hh: Declare and document the
Cosimulation.
* src/tgbatest/ltl2tgba.cc: Associate the cosimulation with the -RRS
option.
* src/tgbatest/spotlbtt.test: Add a test on the cosimulation.
This commit is contained in:
Thomas Badie 2012-08-06 18:57:26 +02:00 committed by Alexandre Duret-Lutz
parent aa230d1f8b
commit 387bace98b
4 changed files with 137 additions and 38 deletions

View file

@ -30,12 +30,11 @@ namespace spot
/// \addtogroup tgba_reduction
/// @{
/// \brief Attempt to reduce the automaton by direct simulation
///
/// When the language recognized by one state is included in the
/// language recognized by an another one, the first one is merged
/// with the second. The algorithm is based on the following
/// paper, but generalized to handle TGBA directly.
/// \brief Attempt to reduce the automaton by direct simulation When
/// the suffixes (letter and acceptance conditions) seen by one
/// state is included in the suffixes seen by another one, the first
/// one is merged with the second. The algorithm is based on the
/// following paper, but generalized to handle TGBA directly.
///
/// \verbatim
/// @InProceedings{ etessami.00.concur,
@ -58,6 +57,34 @@ namespace spot
/// one
tgba* simulation(const tgba* automaton);
/// \brief Attempt to reduce the automaton by direct cosimulation.
/// When the prefixes (letter and acceptance conditions) seen by one
/// state is included in the prefixes seen by another one, the first
/// one is merged with the second. The algorithm is based on the
/// following paper, but generalized to handle TGBA directly.
/// \verbatim
/// @InProceedings{Somenzi:2000:EBA:647769.734097,
/// author = {Somenzi, Fabio and Bloem, Roderick},
/// title = {Efficient {B\"u}chi Automata from LTL Formulae},
/// booktitle = {Proceedings of the 12th International
/// Conference on Computer Aided Verification},
/// series = {CAV '00},
/// year = {2000},
/// isbn = {3-540-67770-4},
/// pages = {248--263},
/// numpages = {16},
/// url = {http://dl.acm.org/citation.cfm?id=647769.734097},
/// acmid = {734097},
/// publisher = {Springer-Verlag},
/// address = {London, UK, UK},
/// }
/// \endverbatim
/// \param automaton the automaton to simulate.
/// \return a new automaton which is at worst a copy of the received
/// one
tgba* cosimulation(const tgba* automaton);
/// @}
} // End namespace spot.