sbacc: more fixes related to #312
The issue also exists with determinism. * tests/core/sbacc.test: New test case. * spot/twaalgos/sbacc.cc: Fix it. * NEWS: Update.
This commit is contained in:
parent
18e65f3bc8
commit
915d2f4659
3 changed files with 25 additions and 8 deletions
7
NEWS
7
NEWS
|
|
@ -6,9 +6,10 @@ New in spot 2.4.3.dev (not yet released)
|
||||||
Fin-less & CNF version of the acceptance condition had several
|
Fin-less & CNF version of the acceptance condition had several
|
||||||
unit clauses.
|
unit clauses.
|
||||||
|
|
||||||
- If the automaton passed to sbacc() was incomplete because of some
|
- If the automaton passed to sbacc() was incomplete or
|
||||||
unreachable states, then it was possible that the output would
|
non-deterministic because of some unreachable states, then it was
|
||||||
marked incomplete while it was in fact complete.
|
possible that the output would marked similarly while it was in
|
||||||
|
fact complete or deterministic.
|
||||||
|
|
||||||
New in spot 2.4.3 (2017-12-19)
|
New in spot 2.4.3 (2017-12-19)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -169,14 +169,17 @@ namespace spot
|
||||||
}
|
}
|
||||||
res->merge_edges();
|
res->merge_edges();
|
||||||
|
|
||||||
// If the automaton was marked as not complete, and we have
|
// If the automaton was marked as not complete or not universal,
|
||||||
// ignored some unreachable state, then it is possible that the
|
// and we have ignored some unreachable state, then it is possible
|
||||||
// result becomes complete.
|
// that the result becomes complete or universal.
|
||||||
if (res->prop_complete().is_false())
|
if (res->prop_complete().is_false() || res->prop_universal().is_false())
|
||||||
for (unsigned i = 0; i < ns; ++i)
|
for (unsigned i = 0; i < ns; ++i)
|
||||||
if (!si.reachable_state(i))
|
if (!si.reachable_state(i))
|
||||||
{
|
{
|
||||||
|
if (res->prop_complete().is_false())
|
||||||
res->prop_complete(trival::maybe());
|
res->prop_complete(trival::maybe());
|
||||||
|
if (res->prop_universal().is_false())
|
||||||
|
res->prop_universal(trival::maybe());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
|
|
|
||||||
|
|
@ -279,3 +279,16 @@ State: 0 [t] 0 {0}
|
||||||
State: 1
|
State: 1
|
||||||
--END--
|
--END--
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
autfilt -S <<EOF | autfilt --is-deterministic
|
||||||
|
HOA: v1
|
||||||
|
States: 2
|
||||||
|
Start: 0
|
||||||
|
AP: 1 "a"
|
||||||
|
Acceptance: 1 Inf(0)
|
||||||
|
properties: !complete !deterministic
|
||||||
|
--BODY--
|
||||||
|
State: 0 [0] 0 {0}
|
||||||
|
State: 1 [0] 1 [0] 0
|
||||||
|
--END--
|
||||||
|
EOF
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue