simulation: Fix co-simulation and iterated simulations of BA automata
* src/tgbaalgos/simulation.hh, src/tgbaalgos/simulation.cc (simulation_sba, cosimulation_sba, iterated_simulations_sba): New function. Also speedup the existing functions by avoiding add_acceptince_conditions() and add_conditions(). Finally, use scc_filter_states() when dealing with degeneralized automata. * src/tgbaalgos/postproc.cc, src/tgbaalgos/postproc.hh (do_ba_simul): New method. Use it after degeneralization. * src/tgba/tgbaexplicit.hh (get_transition, get_state): New methods. * src/tgbatest/basimul.test: New file. * src/tgbatest/Makefile.am (TESTS): Add it. * NEWS: Introduce the new function and summarize the bug.
This commit is contained in:
parent
372790a489
commit
0c7c933805
8 changed files with 303 additions and 110 deletions
|
|
@ -1,5 +1,5 @@
|
|||
// -*- coding: utf-8 -*-
|
||||
// Copyright (C) 2012 Laboratoire de Recherche et Développement
|
||||
// Copyright (C) 2012, 2013 Laboratoire de Recherche et Développement
|
||||
// de l'Epita (LRDE).
|
||||
//
|
||||
// This file is part of Spot, a model checking library.
|
||||
|
|
@ -20,7 +20,6 @@
|
|||
#ifndef SPOT_TGBAALGOS_SIMULATION_HH
|
||||
# define SPOT_TGBAALGOS_SIMULATION_HH
|
||||
|
||||
|
||||
namespace spot
|
||||
{
|
||||
class tgba;
|
||||
|
|
@ -28,6 +27,7 @@ namespace spot
|
|||
/// \addtogroup tgba_reduction
|
||||
/// @{
|
||||
|
||||
/// @{
|
||||
/// \brief Attempt to reduce the automaton by direct simulation.
|
||||
///
|
||||
/// When the suffixes (letter and acceptance conditions) reachable
|
||||
|
|
@ -68,7 +68,10 @@ namespace spot
|
|||
/// \return a new automaton which is at worst a copy of the received
|
||||
/// one
|
||||
tgba* simulation(const tgba* automaton);
|
||||
tgba* simulation_sba(const tgba* automaton);
|
||||
/// @}
|
||||
|
||||
/// @{
|
||||
/// \brief Attempt to reduce the automaton by reverse simulation.
|
||||
///
|
||||
/// When the prefixes (letter and acceptance conditions) leading to
|
||||
|
|
@ -116,7 +119,10 @@ namespace spot
|
|||
/// \return a new automaton which is at worst a copy of the received
|
||||
/// one
|
||||
tgba* cosimulation(const tgba* automaton);
|
||||
tgba* cosimulation_sba(const tgba* automaton);
|
||||
/// @}
|
||||
|
||||
/// @{
|
||||
/// \brief Iterate simulation() and cosimulation().
|
||||
///
|
||||
/// Runs simulation(), cosimulation(), and scc_filter() in a loop,
|
||||
|
|
@ -132,6 +138,8 @@ namespace spot
|
|||
/// \return a new automaton which is at worst a copy of the received
|
||||
/// one
|
||||
tgba* iterated_simulations(const tgba* automaton);
|
||||
tgba* iterated_simulations_sba(const tgba* automaton);
|
||||
/// @}
|
||||
|
||||
|
||||
tgba* dont_care_simulation(const tgba* t, int limit = -1);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue