stutter: fix sl, sl2 to never accept on added self-loop

Fixes #401, reported by Victor Khomenko.

* spot/twaalgos/stutter.cc (sl, sl2): If {} is accepting, upgrade the
acceptance condition.
* tests/core/stutter-tgba.test, tests/python/stutter.py: Add test cases.
This commit is contained in:
Alexandre Duret-Lutz 2020-03-12 21:54:13 +01:00
parent 150f815c87
commit b5d688dc97
3 changed files with 72 additions and 8 deletions

View file

@ -1,6 +1,6 @@
#! /bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2014-2019 Laboratoire de Recherche et
# Copyright (C) 2014-2020 Laboratoire de Recherche et
# Développement de l'Epita (LRDE).
#
# This file is part of Spot, a model checking library.
@ -156,4 +156,12 @@ grep ' stutter-invariant' out
grep -q '^spot.accepted-word: "' out && exit 1
grep -q '^spot.rejected-word: "' out && exit 1
ltl2tgba 'G({x} |-> ({x[+]} <>-> ({Y1[+]} <>=> Y2)))' \
--check=stutter-sensitive-example > out
grep ' stutter-sensitive' out
grep -F 'spot-accepted-word: "cycle{!Y1 & !Y2 & x; Y1 & Y2 & x;' out
grep -F 'spot-rejected-word: "cycle{!Y1 & !Y2 & x; Y1 & Y2 & x}' out
: