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:
Alexandre Duret-Lutz 2023-11-09 22:13:05 +01:00
parent ac05035267
commit 67b5d2aa9a
34 changed files with 287 additions and 164 deletions

View file

@ -79,7 +79,7 @@ AP: 2 "b" "a"
acc-name: Buchi
Acceptance: 1 Inf(0)
properties: trans-labels explicit-labels state-acc !complete
properties: deterministic stutter-invariant terminal
properties: deterministic stutter-invariant terminal very-weak
spot.highlight.edges: 1 1 2 1
--BODY--
State: 0 {0}
@ -113,7 +113,7 @@ AP: 2 "a" "b"
acc-name: Buchi
Acceptance: 1 Inf(0)
properties: trans-labels explicit-labels state-acc complete
properties: deterministic stutter-invariant terminal
properties: deterministic stutter-invariant terminal very-weak
spot.highlight.edges: 1 3 2 3 5 3 6 3 7 2 8 2
--BODY--
State: 0 {0}

View file

@ -472,7 +472,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

View file

@ -1,7 +1,7 @@
#!/bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2015-2019, 2021 Laboratoire de Recherche et Développement de
# l'Epita (LRDE).
# Copyright (C) 2015-2019, 2021, 2023 Laboratoire de Recherche et
# Développement de l'Epita (LRDE).
#
# This file is part of Spot, a model checking library.
#
@ -41,7 +41,7 @@ AP: 0
acc-name: all
Acceptance: 0 t
properties: trans-labels explicit-labels state-acc complete
properties: deterministic
properties: deterministic very-weak
--BODY--
State: 0
[t] 0
@ -74,7 +74,7 @@ AP: 1 "a"
acc-name: co-Buchi
Acceptance: 1 Fin(0)
properties: trans-labels explicit-labels state-acc complete
properties: deterministic weak
properties: deterministic very-weak
--BODY--
State: 0
[0] 2
@ -93,7 +93,7 @@ AP: 1 "a"
acc-name: co-Buchi
Acceptance: 1 Fin(0)
properties: trans-labels explicit-labels state-acc complete
properties: deterministic stutter-invariant weak
properties: deterministic stutter-invariant very-weak
--BODY--
State: 0 {0}
[t] 0

View file

@ -1,6 +1,6 @@
#! /bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2015-2017, 2022 Laboratoire de Recherche et Développement
# Copyright (C) 2015-2017, 2022, 2023 Laboratoire de Recherche et Développement
# de l'Epita (LRDE).
#
# This file is part of Spot, a model checking library.
@ -151,7 +151,7 @@ AP: 1 "a"
acc-name: Buchi
Acceptance: 1 Inf(0)
properties: trans-labels explicit-labels state-acc complete
properties: deterministic
properties: deterministic weak
--BODY--
State: 0 {0}
[0] 1
@ -169,7 +169,7 @@ AP: 1 "a"
acc-name: none
Acceptance: 0 f
properties: trans-labels explicit-labels state-acc complete
properties: deterministic
properties: deterministic weak
--BODY--
State: 0
[t] 1

View file

@ -611,7 +611,7 @@ Start: 0
AP: 3 "c" "a" "b"
acc-name: all
Acceptance: 0 t
properties: trans-labels explicit-labels state-acc deterministic
properties: trans-labels explicit-labels state-acc deterministic weak
controllable-AP: 0
--BODY--
State: 0

View file

@ -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

View file

@ -1,7 +1,7 @@
#!/bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2014, 2015, 2017, 2018 Laboratoire de Recherche et
# Développement de l'Epita (LRDE).
# Copyright (C) 2014, 2015, 2017-2018, 2023 Laboratoire de Recherche
# et Développement de l'Epita (LRDE).
#
# This file is part of Spot, a model checking library.
#
@ -113,7 +113,7 @@ Start: 3
AP: 4 "a" "b" "c" "d"
acc-name: all
Acceptance: 0 t
properties: trans-labels explicit-labels state-acc
properties: trans-labels explicit-labels state-acc weak
--BODY--
State: 0 "s4"
[3] 0

View file

@ -636,7 +636,7 @@ Start: 1
AP: 2 "p0" "p1"
acc-name: all
Acceptance: 0 t
properties: trans-labels explicit-labels state-acc
properties: trans-labels explicit-labels state-acc weak
--BODY--
State: 0
State: 1
@ -676,7 +676,7 @@ Start: 0
AP: 2 "p0" "p1"
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] 1
@ -698,7 +698,7 @@ Start: 0
AP: 2 "p0" "p1"
acc-name: all
Acceptance: 0 t
properties: state-labels explicit-labels state-acc deterministic
properties: state-labels explicit-labels state-acc deterministic weak
--BODY--
State: [!0&!1] 0
1
@ -745,7 +745,7 @@ Start: 0
AP: 2 "p0" "p1"
acc-name: all
Acceptance: 0 t
properties: trans-labels explicit-labels state-acc
properties: trans-labels explicit-labels state-acc weak
--BODY--
State: 0
[!0&!1] 1
@ -762,7 +762,7 @@ Start: 0
AP: 2 "p0" "p1"
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] 1

View file

@ -1,6 +1,6 @@
#!/bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2015-2018, 2020 Laboratoire de Recherche et
# Copyright (C) 2015-2018, 2020, 2023 Laboratoire de Recherche et
# Développement de l'Epita (LRDE).
#
# This file is part of Spot, a model checking library.
@ -370,7 +370,7 @@ AP: 0
acc-name: all
Acceptance: 0 t
properties: trans-labels explicit-labels state-acc complete
properties: deterministic
properties: deterministic very-weak
--BODY--
State: 0
[t] 0
@ -955,7 +955,7 @@ AP: 0
acc-name: all
Acceptance: 0 t
properties: trans-labels explicit-labels state-acc complete
properties: deterministic
properties: deterministic very-weak
--BODY--
State: 0
[t] 0

View file

@ -1,6 +1,6 @@
#!/bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2011, 2013, 2015, 2018, 2019 Laboratoire de Recherche
# Copyright (C) 2011, 2013, 2015, 2018, 2019, 2023 Laboratoire de Recherche
# et Développement de l'Epita
#
# This file is part of Spot, a model checking library.
@ -316,7 +316,7 @@ AP: 1 "p0"
acc-name: Buchi
Acceptance: 1 Inf(0)
properties: trans-labels explicit-labels state-acc complete
properties: deterministic terminal
properties: deterministic terminal very-weak
--BODY--
State: 0 {0}
[t] 0
@ -331,7 +331,7 @@ AP: 1 "p0"
acc-name: Buchi
Acceptance: 1 Inf(0)
properties: trans-labels explicit-labels state-acc complete
properties: deterministic terminal
properties: deterministic terminal very-weak
--BODY--
State: 0 {0}
[t] 0

View file

@ -1,6 +1,6 @@
#!/bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2015, 2016, 2017 Laboratoire de Recherche et Developpement
# Copyright (C) 2015, 2016, 2017, 2023 Laboratoire de Recherche et Developpement
# de l'Epita
#
# This file is part of Spot, a model checking library.
@ -122,7 +122,7 @@ AP: 2 "a" "b"
acc-name: Buchi
Acceptance: 1 Inf(0)
properties: trans-labels explicit-labels state-acc deterministic
properties: terminal
properties: terminal very-weak
--BODY--
State: 0 {0}
[t] 0
@ -710,7 +710,7 @@ AP: 1 "a"
acc-name: co-Buchi
Acceptance: 1 Fin(0)
properties: trans-labels explicit-labels state-acc complete
properties: deterministic terminal
properties: deterministic terminal very-weak
--BODY--
State: 0
[t] 0

View file

@ -68,6 +68,7 @@ AP: 1 "p1"
acc-name: Buchi
Acceptance: 1 Inf(0)
properties: implicit-labels state-acc complete deterministic terminal
properties: very-weak
--BODY--
State: 0 {0}
0 0
@ -108,7 +109,7 @@ AP: 0
acc-name: Buchi
Acceptance: 1 Inf(0)
properties: trans-labels explicit-labels state-acc colored complete
properties: deterministic terminal
properties: deterministic terminal very-weak
--BODY--
State: 0 {0}
[t] 0