twa: add support for very-weak property

* spot/twa/twa.hh: Implement the property.
* spot/parseaut/parseaut.yy, spot/twaalgos/hoa.cc: Add input
and output for it.
* spot/twaalgos/strength.cc,
spot/twaalgos/strength.hh (is_very_weak_automaton): New function.
* tests/core/alternating.test: Add a test for --check=strength
on an alternating automaton.
* tests/core/strength.test, tests/core/parseaut.test: Adjust expected
output.
* NEWS, doc/org/hoa.org, doc/org/concepts.org: Document it.
This commit is contained in:
Alexandre Duret-Lutz 2016-12-01 18:27:54 +01:00
parent a4ce999402
commit 582d455c23
11 changed files with 146 additions and 33 deletions

View file

@ -526,8 +526,27 @@ header: format-version header-items
a->prop_stutter_invariant(!ss->second.val);
}
auto iw = p.find("inherently-weak");
auto vw = p.find("very-weak");
auto w = p.find("weak");
auto t = p.find("terminal");
if (vw != e)
{
a->prop_very_weak(vw->second.val);
if (w != e && !w->second.val && vw->second.val)
{
error(w->second.loc,
"'properties: !weak' contradicts...");
error(vw->second.loc,
"... 'properties: very-weak' given here");
}
if (iw != e && !iw->second.val && vw->second.val)
{
error(iw->second.loc,
"'properties: !inherently-weak' contradicts...");
error(vw->second.loc,
"... 'properties: very-weak' given here");
}
}
if (iw != e)
{
a->prop_inherently_weak(iw->second.val);