stutter: complement non-det automata via determinization

Fixes #164.

* spot/twaalgos/stutter.hh, spot/twaalgos/stutter.cc: Implement
the determinization, while keeping it optional.
* NEWS: Mention the change.
* tests/core/ltl2dstar.test, tests/core/stutter-tgba.test: Add
test cases.
* tests/core/readsave.test: Adjust.
This commit is contained in:
Alexandre Duret-Lutz 2016-07-19 12:02:08 +02:00
parent 29a1e3a299
commit 5a2bc9f915
6 changed files with 65 additions and 26 deletions

View file

@ -60,13 +60,17 @@ namespace spot
/// \brief Check whether \a aut is stutter-invariant
///
/// This procedure only works if \a aut is deterministic, or if the
/// equivalent formula \a f is given. The stutter-invariant property
/// of the automaton is updated and also returned.
/// This procedure requires the negation of \a aut to
/// be computed. This is easily done of \a aut is deterministic
/// or if a formula represented by \a aut is known. Otherwise
/// \a aut will be complemented by determinization, which can
/// be expansive. The determinization can be forbidden using
/// the \a do_not_determinize flag.
///
/// If no formula is given and the automaton is not deterministic,
/// If no complemented automaton could be constructed, the
/// the result will be returned as trival::maybe().
SPOT_API trival
check_stutter_invariance(const twa_graph_ptr& aut,
formula f = nullptr);
formula f = nullptr,
bool do_not_determinize = false);
}