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

@ -38,7 +38,7 @@ namespace spot
/// \brief Whether an automaton is weak.
///
/// An automaton is weak if if any given SCC, all transitions belong
/// An automaton is weak if in any given SCC, all transitions belong
/// to the same acceptance sets.
///
/// \param aut the automaton to check
@ -48,6 +48,19 @@ namespace spot
SPOT_API bool
is_weak_automaton(const const_twa_graph_ptr& aut, scc_info* sm = nullptr);
/// \brief Whether an automaton is inherently weak.
///
/// An automaton is inherently weak if in any given SCC, there
/// are only accepting cycles, or only rejecting cycles.
///
/// \param aut the automaton to check
///
/// \param sm an scc_info object for the automaton if available (it
/// will be built otherwise).
SPOT_API bool
is_inherently_weak_automaton(const const_twa_graph_ptr& aut,
scc_info* sm = nullptr);
/// \brief Whether a minimized WDBA represents a safety property.
///
/// A minimized WDBA (as returned by a successful run of