to_finit: fix issue #526

* spot/twaalgos/remprop.cc: Use bdd_restrict instead of bdd_exists.
* tests/core/ltlf.test: Add test case.
* NEWS: Mention the bug.
This commit is contained in:
Alexandre Duret-Lutz 2023-02-07 14:40:20 +01:00
parent 058975c167
commit 6fd0eebad4
3 changed files with 57 additions and 4 deletions

4
NEWS
View file

@ -22,6 +22,10 @@ New in spot 2.11.3.dev (not yet released)
done in Spot so far) may require the output to use transition-based
acceptance. (Issue #525.)
- to_finite(), introduce in 2.11, had a bug that could break the
completeness of automata and trigger an exception from the HOA
printer. (Issue #526.)
New in spot 2.11.3 (2022-12-09)
Bug fixes:

View file

@ -1,6 +1,6 @@
// -*- coding: utf-8 -*-
// Copyright (C) 2015-2019, 2022 Laboratoire de Recherche et Développement
// de l'Epita (LRDE).
// Copyright (C) 2015-2019, 2022, 2023 Laboratoire de Recherche et
// Développement de l'Epita (LRDE).
//
// This file is part of Spot, a model checking library.
//
@ -205,7 +205,7 @@ namespace spot
}
else
{
e.cond = bdd_exist(e.cond, rem);
e.cond = bdd_restrict(e.cond, rem);
}
}

View file

@ -1,6 +1,6 @@
#! /bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2022 Laboratoire de Recherche et Développement de
# Copyright (C) 2022, 2023 Laboratoire de Recherche et Développement de
# l'Epita (LRDE).
#
# This file is part of Spot, a model checking library.
@ -173,3 +173,52 @@ grep -v '\[f\]' out4 > out3
cmp out3 out4 && exit 1 # make sure we did remove something
autfilt out3 > out4
diff out4 expected3
# Issue #526
ltlfilt -f '(i->XXo)|G(i<->Xo2)' --from-ltlf | ltl2tgba -D |\
autfilt -C --to-finite > out
cat >exp <<EOF
HOA: v1
States: 9
Start: 0
AP: 3 "o" "o2" "i"
acc-name: Buchi
Acceptance: 1 Inf(0)
properties: trans-labels explicit-labels state-acc complete
properties: deterministic
--BODY--
State: 0 {0}
[2] 6
[!2] 7
State: 1
[!1&!2] 1
[!1&2] 5
[1] 8
State: 2 {0}
[0] 7
[!0] 8
State: 3 {0}
[!0&!1&!2] 1
[!0&!1&2] 5
[0] 7
[!0&1] 8
State: 4 {0}
[!0&1&!2] 1
[!0&1&2] 5
[0] 7
[!0&!1] 8
State: 5 {0}
[1&!2] 1
[1&2] 5
[!1] 8
State: 6 {0}
[!1] 2
[1&!2] 3
[1&2] 4
State: 7 {0}
[t] 7
State: 8
[t] 8
--END--
EOF
diff out exp