work around issue #317

* spot/twaalgos/cobuchi.cc: Call sbacc() on transition-based input.
* tests/Makefile.am: Remove XFAIL_TESTS.
* NEWS: Adjust.
This commit is contained in:
Alexandre Duret-Lutz 2018-01-14 22:18:55 +01:00
parent 61b0a542f1
commit c920825fad
3 changed files with 19 additions and 5 deletions

5
NEWS
View file

@ -33,7 +33,8 @@ New in spot 2.4.4.dev (net yet released)
- ltl2tgba, autfilt, and dstar2tgba have some new '--cobuchi' option - ltl2tgba, autfilt, and dstar2tgba have some new '--cobuchi' option
to force co-Büchi acceptance on the output. Beware: if the input to force co-Büchi acceptance on the output. Beware: if the input
language is not co-Büchi realizable the output automaton will language is not co-Büchi realizable the output automaton will
recognize a superset of the input. recognize a superset of the input. Currently, the output is
always state-based.
- genltl learned to generate six new families of formulas, taken from - genltl learned to generate six new families of formulas, taken from
the SYNTCOMP competition on reactive synthesis, and from from the SYNTCOMP competition on reactive synthesis, and from from
@ -97,7 +98,7 @@ New in spot 2.4.4.dev (net yet released)
these four functions. The language of produced automata include these four functions. The language of produced automata include
the original language, but may be larger if the original automaton the original language, but may be larger if the original automaton
is not co-Büchi realizable. Based on Boker & Kupferman FOSSACS'11 is not co-Büchi realizable. Based on Boker & Kupferman FOSSACS'11
paper. paper. Currently only supports state-based output.
- spot::scc_info::states_on_acc_cycle_of() return all states - spot::scc_info::states_on_acc_cycle_of() return all states
visited by any accepting cycle of the specified SCC. It only visited by any accepting cycle of the specified SCC. It only

View file

@ -31,6 +31,7 @@
#include <spot/twaalgos/totgba.hh> #include <spot/twaalgos/totgba.hh>
#include <spot/twaalgos/isdet.hh> #include <spot/twaalgos/isdet.hh>
#include <spot/twaalgos/strength.hh> #include <spot/twaalgos/strength.hh>
#include <spot/twaalgos/sbacc.hh> // For issue #317
#include <stack> #include <stack>
#include <unordered_map> #include <unordered_map>
@ -274,6 +275,11 @@ namespace spot
throw std::runtime_error("dnf_to_nca() only works with DNF acceptance " throw std::runtime_error("dnf_to_nca() only works with DNF acceptance "
"condition"); "condition");
// FIXME: At the moment this algorithm does not support
// transition-based acceptance. See issue #317. Once that is
// fixed we may remove the next line.
ref = sbacc(std::const_pointer_cast<twa_graph>(ref));
auto streett_aut = spot::dnf_to_streett(ref, true); auto streett_aut = spot::dnf_to_streett(ref, true);
std::vector<acc_cond::rs_pair> pairs; std::vector<acc_cond::rs_pair> pairs;
@ -609,6 +615,11 @@ namespace spot
throw std::runtime_error("nsa_to_dca() only works with Streett-like or " throw std::runtime_error("nsa_to_dca() only works with Streett-like or "
"Parity acceptance condition"); "Parity acceptance condition");
// FIXME: At the moment this algorithm does not support
// transition-based acceptance. See issue #317. Once that is
// fixed we may remove the next line.
aut = sbacc(std::const_pointer_cast<twa_graph>(aut));
// Get states that must be visited infinitely often in NCA. // Get states that must be visited infinitely often in NCA.
vect_nca_info nca_info; vect_nca_info nca_info;
nsa_to_nca(aut, named_states, &nca_info); nsa_to_nca(aut, named_states, &nca_info);
@ -635,6 +646,11 @@ namespace spot
throw std::runtime_error("dnf_to_dca() only works with DNF (Rabin-like " throw std::runtime_error("dnf_to_dca() only works with DNF (Rabin-like "
"included) acceptance condition"); "included) acceptance condition");
// FIXME: At the moment this algorithm does not support
// transition-based acceptance. See issue #317. Once that is
// fixed we may remove the next line.
aut = sbacc(std::const_pointer_cast<twa_graph>(aut));
// Get states that must be visited infinitely often in NCA. // Get states that must be visited infinitely often in NCA.
vect_nca_info nca_info; vect_nca_info nca_info;
dnf_to_nca(aut, false, &nca_info); dnf_to_nca(aut, false, &nca_info);

View file

@ -315,9 +315,6 @@ TESTS_twa = \
core/parity2.test \ core/parity2.test \
core/ltlsynt.test core/ltlsynt.test
# Issue #317.
XFAIL_TESTS = core/dca2.test
############################## PYTHON ############################## ############################## PYTHON ##############################
if USE_PYTHON if USE_PYTHON