tgbamask: implement a build_tgba_mask_acc_ignore() function.

* src/tgba/tgbamask.hh (build_tgba_mask_acc_ignore): New function.
(tgba_mask::wanted): Take an acc argument.
* src/tgba/tgbamask.cc: Implement the above.
* src/tgbatest/maskacc.cc, src/tgbatest/maskacc.test: New files.
* src/tgbatest/Makefile.am: Add them.
This commit is contained in:
Alexandre Duret-Lutz 2014-03-27 18:35:41 +01:00
parent a828662be6
commit 425e8bb37a
6 changed files with 215 additions and 47 deletions

View file

@ -21,6 +21,7 @@
# define SPOT_TGBA_TGBAMASK_HH
#include "tgbaproxy.hh"
#include "bdd.h"
namespace spot
{
@ -50,7 +51,7 @@ namespace spot
virtual tgba_succ_iterator*
succ_iter(const state* local_state) const;
virtual bool wanted(const state* s) const = 0;
virtual bool wanted(const state* s, const bdd& acc) const = 0;
protected:
const state* init_;
@ -78,6 +79,23 @@ namespace spot
const state_set& to_ignore,
const state* init = 0);
/// \ingroup tgba_on_the_fly_algorithms
/// \brief Mask a TGBA, rejecting some acceptance set of transitions.
///
/// This will ignore all transitions labeled by the acceptance ACC
/// such that ACC & TO_IGNORE != bddfalse. The initial state can
/// optionally be reset to \a init.
///
/// Note that the acceptance condition of the automaton (i.e. the
/// set of all acceptance set) is not changed, because so far this
/// function is only needed in graph algorithms that do not call
/// all_acceptance_conditions().
SPOT_API const tgba*
build_tgba_mask_acc_ignore(const tgba* to_mask,
const bdd to_ignore,
const state* init = 0);
}
#endif // SPOT_TGBA_TGBAMASK_HH