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:
parent
b25ec6fe02
commit
69a3e8486e
4 changed files with 41 additions and 2 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue