stutter: fix closure() on Fin-acceptance

From a report by Anton Pirogov.

* NEWS: Mention the bug.
* spot/twaalgos/stutter.cc: Fix it.
* tests/core/stutter-tgba.test: Test it.
* THANKS: Add Anton.
This commit is contained in:
Alexandre Duret-Lutz 2018-03-23 18:20:35 +01:00
parent b25ec6fe02
commit 69a3e8486e
4 changed files with 41 additions and 2 deletions

View file

@ -410,6 +410,11 @@ namespace spot
twa_graph_ptr
closure_inplace(twa_graph_ptr a)
{
// In the fin-less version of the closure, we can merge edges that
// have the same src, letter, and destination by taking the union
// of their marks. If some Fin() is used, we cannot do that.
bool fin_less = !a->acc().uses_fin_acceptance();
a->prop_keep({false, // state_based
false, // inherently_weak
false, false, // deterministic
@ -458,7 +463,7 @@ namespace spot
need_new_trans = false;
break;
}
else if (cond == ts.cond)
else if (fin_less && cond == ts.cond)
{
acc |= ts.acc;
if (ts.acc != acc)