#!/bin/sh # -*- coding: utf-8 -*- # Copyright (C) 2009, 2010, 2013 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 || exit -1 set -e # Check if the TGBA was corretly constructed. check_construct() { run 0 ../ltl2tgba -F -le -b "$1" > output } # Check if the TGBA behaves correctly by doing an emptiness check on # the product between the constructed TGBA and a given formula # translated using FM. check_true() { run 0 ../ltl2tgba -CR -e -Poutput -f "$1" } check_false() { run 1 ../ltl2tgba -CR -e -Poutput -f "$1" } for f in 'GFa' 'FGb' 'GFa->GFb'; do run 0 ../ltl2tgba -lo -b "$f" > output check_false "!($f)" done # Create the prelude file. cat >input1 <<'EOF' X=( 0 1 true 1 2 $0 accept 2 ) U=( 0 0 $0 0 1 $1 accept 1 ) G=( 0 0 $0 ) F=U(true, $0) Strong=G(F($0))->G(F($1)) R=!U(!$0, !$1) EOF cat >input <input <input <input <input <input <input <input <G(F(b))' check_false '!(G(F(a))->G(F(b)))' cat >input <input <<'EOF' T=( 0 1 true 1 0 $0 ) % T(f) EOF check_construct input cat >input <<'EOF' include input1 Fusion= ( 0 1 $0 & !finish($0) 1 1 !finish($0) 1 2 $1 & finish($0) 0 2 $0 & $1 & finish($0) accept 2 ) % Fusion(F(a),b) EOF check_construct input cat >input <<'EOF' Concat= ( 0 1 $0 & !finish($0) 1 1 !finish($0) 1 2 finish($0) 0 2 $0 & finish($0) 2 3 $1 accept 3 ) % Concat(a,b) EOF check_construct input check_true 'a&X(b)' check_false '!(a&X(b))'