From 392c527d317cc8017d7db529c4a32f307cd3f083 Mon Sep 17 00:00:00 2001 From: Alexandre Duret-Lutz Date: Thu, 20 Nov 2014 10:59:56 +0100 Subject: [PATCH] monitor: add a few tests * src/tgbatest/monitor.test: New file. * src/tgbatest/Makefile.am: Add it. * src/tgbaalgos/minimize.cc (minimize_monitor): Mark the output automaton as state-based. * src/tgba/tgbagraph.hh: Assume automata with 0 acceptance sets are also state-based. --- src/tgba/tgbagraph.hh | 4 ++- src/tgbaalgos/minimize.cc | 1 + src/tgbatest/Makefile.am | 1 + src/tgbatest/monitor.test | 75 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 80 insertions(+), 1 deletion(-) create mode 100755 src/tgbatest/monitor.test diff --git a/src/tgba/tgbagraph.hh b/src/tgba/tgbagraph.hh index 688746012..f5c6182f4 100644 --- a/src/tgba/tgbagraph.hh +++ b/src/tgba/tgbagraph.hh @@ -322,6 +322,8 @@ namespace spot } acc_.add_sets(num - acc_.num_sets()); prop_single_acc_set(num == 1); + if (num == 0) + prop_state_based_acc(); } acc_cond::mark_t set_single_acceptance_set() @@ -430,7 +432,7 @@ namespace spot bool state_is_accepting(unsigned s) const { - assert(has_state_based_acc()); + assert(has_state_based_acc() || acc_.num_sets() == 0); for (auto& t: g_.out(s)) // Stop at the first transition, since the remaining should be // labeled identically. diff --git a/src/tgbaalgos/minimize.cc b/src/tgbaalgos/minimize.cc index 22e73761b..6e77ac234 100644 --- a/src/tgbaalgos/minimize.cc +++ b/src/tgbaalgos/minimize.cc @@ -496,6 +496,7 @@ namespace spot auto res = minimize_dfa(det_a, final, non_final); res->prop_deterministic(); res->prop_inherently_weak(); + res->prop_state_based_acc(); return res; } diff --git a/src/tgbatest/Makefile.am b/src/tgbatest/Makefile.am index 7f2283a3c..430427463 100644 --- a/src/tgbatest/Makefile.am +++ b/src/tgbatest/Makefile.am @@ -112,6 +112,7 @@ TESTS = \ wdba.test \ wdba2.test \ babiak.test \ + monitor.test \ dra2dba.test \ ltlcross4.test \ ltl2dstar.test \ diff --git a/src/tgbatest/monitor.test b/src/tgbatest/monitor.test new file mode 100755 index 000000000..5fdd082fc --- /dev/null +++ b/src/tgbatest/monitor.test @@ -0,0 +1,75 @@ +#!/bin/sh +# -*- coding: utf-8 -*- +# Copyright (C) 2014 Laboratoire de Recherche et Développement de +# l'Epita (LRDE). +# +# This file is part of Spot, a model checking library. +# +# Spot is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# Spot is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +# License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +. ./defs + +set -e + +expect() +{ + cat >output.exp + run 0 "$@" > output.out + cat output.out + diff output.out output.exp +} + +expect ../../bin/ltl2tgba --monitor a < 1 + 1 [label="1", peripheries=2] + 1 -> 2 [label="a"] + 2 [label="0", peripheries=2] + 2 -> 2 [label="1"] +} +EOF + +expect ../../bin/ltl2tgba --monitor a --hoa<