powerset: deal with accepting sinks more effectively

Part of #444.

* spot/twaalgos/powerset.cc, spot/twaalgos/powerset.hh: Implement
accepting sink handling.
* spot/twaalgos/minimize.cc (minimize_wdba): Pass sinks to
tgba_powerset.
* spot/misc/bitvect.hh: Add an interesects method.
* tests/core/ltl2tgba2.test: More tests.
* NEWS: Mention this new feature.
This commit is contained in:
Alexandre Duret-Lutz 2020-12-08 17:55:50 +01:00
parent eeaed5592f
commit 48edfd80c2
6 changed files with 75 additions and 8 deletions

View file

@ -94,14 +94,21 @@ namespace spot
///
/// If ab \a aborter is given, abort the construction whenever it
/// would build an automaton that is too large, and return nullptr.
///
/// If a vector of accepting sinks is given, all power-state that
/// contains any accepting sink will be merged into a single state
/// with number 0.
///
//@{
SPOT_API twa_graph_ptr
tgba_powerset(const const_twa_graph_ptr& aut,
power_map& pm, bool merge = true,
const output_aborter* aborter = nullptr);
const output_aborter* aborter = nullptr,
std::vector<unsigned>* accepting_sinks = nullptr);
SPOT_API twa_graph_ptr
tgba_powerset(const const_twa_graph_ptr& aut,
const output_aborter* aborter = nullptr);
const output_aborter* aborter = nullptr,
std::vector<unsigned>* accepting_sinks = nullptr);
//@}