fix several algorithms that incorrectly preserved !weak
This massive set of changes was triggered by issue #546. In addition to the better handling of !weak, this also adds some weak properties in a few places. * spot/twaalgos/product.cc (product_aux): Throw some exception if an automaton with t or f acceptance has the !weak property. This is a cheap sanity check to help detect algorithms that incorrectly assumed !weak input would necessarily become !weak output. * spot/twaalgos/hoa.cc (print_hoa): Likewise, also do not assume that terminal implies very-weak. * spot/parseaut/parseaut.yy: Add several diagnostics for similar cases. E.g., a one-state automaton cannot be declared as !very-weak. * tests/core/parseaut.test: Check those new diagnostics. * spot/twa/twa.cc (twa::intersecting_run): Temporary remove the weak property by setting it to maybe, not to false. * spot/twaalgos/minimize.cc, spot/twaalgos/parity.cc, spot/twaalgos/sccfilter.cc, spot/twaalgos/simulation.cc: Account for the fact that these algorithm may in fact improve the weakness. * spot/twaalgos/strength.cc: Only look at colors used by the acceptance condition when deciding weakness. * spot/twaalgos/synthesis.cc: Declare the strategy as weak. * bin/randaut.cc: Add weak to automata with t/f acceptance. * spot/kripke/kripke.hh: Make kripke structures as weak. * tests/core/acc_word.test, tests/core/alternating.test, tests/core/complement.test, tests/core/complete.test, tests/core/ltlsynt.test, tests/core/randomize.test, tests/core/readsave.test, tests/core/remfin.test, tests/core/sccsimpl.test, tests/core/strength.test, tests/core/wdba2.test, tests/ltsmin/kripke.test, tests/python/automata-io.ipynb, tests/python/automata.ipynb, tests/python/dbranch.py, tests/python/highlighting.ipynb, tests/python/kripke.py, tests/python/ltsmin-dve.ipynb, tests/python/mealy.py, tests/python/simstate.py: Adjust all these test cases. * NEWS: Mention the fixes.
This commit is contained in:
parent
ac05035267
commit
67b5d2aa9a
34 changed files with 287 additions and 164 deletions
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/sh
|
||||
# -*- coding: utf-8 -*-
|
||||
# Copyright (C) 2014-2018, 2020-2022 Laboratoire de Recherche et
|
||||
# Copyright (C) 2014-2018, 2020-2023 Laboratoire de Recherche et
|
||||
# Développement de l'Epita (LRDE).
|
||||
#
|
||||
# This file is part of Spot, a model checking library.
|
||||
|
|
@ -664,7 +664,7 @@ Start: 0
|
|||
AP: 1 "a"
|
||||
acc-name: all
|
||||
Acceptance: 0 t
|
||||
properties: trans-labels explicit-labels state-acc deterministic
|
||||
properties: trans-labels explicit-labels state-acc deterministic weak
|
||||
--BODY--
|
||||
State: 0
|
||||
[0] 1
|
||||
|
|
@ -1322,7 +1322,7 @@ AP: 2 "a" "b"
|
|||
acc-name: all
|
||||
Acceptance: 0 t
|
||||
properties: trans-labels explicit-labels state-acc complete
|
||||
properties: deterministic
|
||||
properties: deterministic weak
|
||||
--BODY--
|
||||
State: 0
|
||||
[0&!1] 0
|
||||
|
|
@ -1778,7 +1778,7 @@ Start: 0
|
|||
AP: 1 "a"
|
||||
Acceptance: 1 t
|
||||
properties: trans-labels explicit-labels trans-acc complete
|
||||
properties: deterministic
|
||||
properties: deterministic weak
|
||||
--BODY--
|
||||
State: 0 "F(a)"
|
||||
[0] 1 {0}
|
||||
|
|
@ -1844,7 +1844,7 @@ AP: 1 "a"
|
|||
acc-name: all
|
||||
Acceptance: 0 t
|
||||
properties: trans-labels explicit-labels state-acc complete
|
||||
properties: deterministic
|
||||
properties: deterministic weak
|
||||
--BODY--
|
||||
State: 0 "F(a)"
|
||||
[0] 1
|
||||
|
|
@ -2079,6 +2079,15 @@ properties: complete !weak very-weak
|
|||
--BODY--
|
||||
State: 0 0
|
||||
--END--
|
||||
HOA: v1
|
||||
States: 1
|
||||
Start: 0
|
||||
AP: 0
|
||||
Acceptance: 0 t
|
||||
properties: complete !very-weak
|
||||
--BODY--
|
||||
State: 0 0
|
||||
--END--
|
||||
EOF
|
||||
|
||||
expecterr input <<EOF
|
||||
|
|
@ -2091,14 +2100,18 @@ input:36.36-43: 'properties: terminal' contradicts...
|
|||
input:36.13-28: ... 'properties: !inherently-weak' given here
|
||||
input:36.36-43: 'properties: terminal' contradicts...
|
||||
input:36.30-34: ... 'properties: !weak' given here
|
||||
input:36.30-34: an automaton with this condition is necessarily weak
|
||||
input:36.13-28: an automaton with this condition is necessarily inherently-weak
|
||||
input:46.13-28: 'properties: !inherently-weak' contradicts...
|
||||
input:46.35-43: ... 'properties: very-weak' given here
|
||||
input:46.30-33: 'properties: weak' contradicts...
|
||||
input:46.13-28: ... 'properties: !inherently-weak' given here
|
||||
input:55.22-26: 'properties: !weak' contradicts...
|
||||
input:55.28-36: ... 'properties: very-weak' given here
|
||||
input:55.22-26: an automaton with this condition is necessarily weak
|
||||
input:51.1-9: state 1 is unused and undefined
|
||||
input:55.13-20: automaton is incomplete because it has undefined states
|
||||
input:64.22-31: an automaton with 0 or 1 state is necessarily very-weak
|
||||
EOF
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue