#!/bin/sh # -*- coding: utf-8 -*- # Copyright (C) 2016, 2017, 2018 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 # The --accept-word option filters automata that accept the given word # If several words are given, it filters automata that accept ALL words ltl2tgba 'G!a' | autfilt --accept-word 'b; cycle{!a}' -q ltl2tgba 'a U b' | autfilt --accept-word 'a; a; cycle{b}' -q ltl2tgba 'F(!a&b)' | autfilt --accept-word 'b; cycle{b; !a&b}' --accept-word 'cycle{b}' -q ltl2tgba -f 'a U b' | autfilt --accept-word='cycle{!a}' --accept-word='a;cycle{b}' -q ltl2tgba -f 'a U b' | autfilt --accept-word='cycle{!b}' -q && exit 1 # An example from the documentation: randltl -n -1 a b | ltlfilt --simplify --uniq | ltl2tgba | autfilt --accept-word='a&!b;cycle{!a&!b}' --accept-word='!a&!b;cycle{a&b}' \ --reject-word='cycle{b}' --stats=%M -n 3 > out cat >expect < out diff out expect # Test syntax errors autfilt --reject-w='foobar' error && exit 1 autfilt --accept-w='cycle{foo' >error && exit 1 cat error cat >expect <>> foobar ^ A twa_word must contain a cycle autfilt: failed to parse the argument of --accept-word: >>> cycle{foo ^ Missing ';' or '}' after formula EOF diff expect error ltl2tgba 'a U b' | autfilt -H1.1 --highlight-word='cycle{b}' >out cat >expected <out cat >expected <stderr && exit 1 test $? -eq 2 cat stderr grep 'failed to parse the argument of --highlight-word' stderr done # highlight-word does not yet work with Fin acceptance ltl2tgba -G -D 'FGa' | autfilt --highlight-word='cycle{a}' 2>stderr && exit 1 test $? -eq 2 grep 'highlight-word.*Fin' stderr ltlfilt -f 'GFa' --accept-word 'cycle{!a}' && exit 1 ltlfilt -f 'GF!a' --accept-word 'cycle{!a}'