introduce is_inherently_weak_automaton()

* spot/twaalgos/strength.cc, spot/twaalgos/strength.hh
(is_inherently_weak_automaton): New function.
(is_type_automaton): Adjust to implement the above and
set prop_inherently_weak().
* spot/twaalgos/isweakscc.cc, spot/twaalgos/isweakscc.hh:
Rewrite is_inherently_weak_scc() to not enumerate cycles.
* spot/bin/autfilt.cc: Add a --is-inherently-weak option.
* spot/tests/readsave.test: More tests.
* spot/tests/strength.test: Adjust expected output.
* doc/org/hoa.org: Adjust documentation of --check.
* NEWS: Mention those changes.
This commit is contained in:
Alexandre Duret-Lutz 2015-12-08 18:09:44 +01:00
parent 0edb2ad066
commit 1f2260f971
9 changed files with 154 additions and 70 deletions

View file

@ -26,6 +26,11 @@ namespace spot
/// \addtogroup twa_misc
/// @{
/// \brief Whether the SCC number \a scc in \a map has a rejecting
/// cycle.
SPOT_API bool
scc_has_rejecting_cycle(scc_info& map, unsigned scc);
/// \brief Whether the SCC number \a scc in \a map is inherently
/// weak.
///
@ -34,13 +39,6 @@ namespace spot
///
/// Note the terminal SCCs are also inherently weak with that
/// definition.
///
/// The absence of accepting cycle is easy to check (the scc_info
/// object can tell whether the SCC is non-accepting already).
/// Similarly, an SCC in which all transitions belong to all
/// acceptance sets is necessarily weak. For other accepting SCCs,
/// this function enumerates all cycles in the given SCC (it stops
/// if it find a non-accepting cycle).
SPOT_API bool
is_inherently_weak_scc(scc_info& map, unsigned scc);