From 467bf378a82100b26e81f11cba7a212b31650c35 Mon Sep 17 00:00:00 2001 From: Thomas Badie Date: Wed, 26 Sep 2012 17:09:43 +0200 Subject: [PATCH] =?UTF-8?q?simulation:=20Fix=20a=20bug=20reported=20by=20?= =?UTF-8?q?=C3=89tienne=20Renault.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * src/tgbatest/renault.test: New file. * src/tgbatest/Makefile.am: Add it. * src/tgbaalgos/simulation.cc: Fix the bug. --- src/tgbaalgos/simulation.cc | 12 +++++++- src/tgbatest/Makefile.am | 1 + src/tgbatest/renault.test | 58 +++++++++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+), 1 deletion(-) create mode 100755 src/tgbatest/renault.test diff --git a/src/tgbaalgos/simulation.cc b/src/tgbaalgos/simulation.cc index 0a58565f0..a2094276b 100644 --- a/src/tgbaalgos/simulation.cc +++ b/src/tgbaalgos/simulation.cc @@ -394,7 +394,17 @@ namespace spot free_var_.pop(); } - assert(bdd_lstate_.size() == used_var_.size()); + for (int i = 0; i > nb_new_color; --i) + { + assert(!used_var_.empty()); + free_var_.push(bdd_var(used_var_.front())); + used_var_.pop_front(); + } + + + assert((bdd_lstate_.size() == used_var_.size()) + || (bdd_lstate_.find(bddfalse) != bdd_lstate_.end() + && bdd_lstate_.size() == used_var_.size() + 1)); // Now we make a temporary hash_table which links the tuple // "C^(i-1), N^(i-1)" to the new class coloring. If we diff --git a/src/tgbatest/Makefile.am b/src/tgbatest/Makefile.am index 70198270a..f9d95a427 100644 --- a/src/tgbatest/Makefile.am +++ b/src/tgbatest/Makefile.am @@ -76,6 +76,7 @@ TESTS = \ explicit2.test \ taatgba.test \ tgbaread.test \ + renault.test \ neverclaimread.test \ readsave.test \ ltl2tgba.test \ diff --git a/src/tgbatest/renault.test b/src/tgbatest/renault.test new file mode 100755 index 000000000..e413a1555 --- /dev/null +++ b/src/tgbatest/renault.test @@ -0,0 +1,58 @@ +#!/bin/sh +# -*- coding: utf-8 -*- +# Copyright (C) 2012 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 2 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 Spot; see the file COPYING. If not, write to the Free +# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +. ./defs +set -e + +cat >file <outexp < out + +cmp out outexp