#!/bin/sh # -*- coding: utf-8 -*- # Copyright (C) 2009, 2010, 2011, 2012, 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 pwd lc="genltl" run='run 0' check_formula() { # First, check the satisfiability of the formula with Spot $run ../ikwiad -CR -e -x -f "$1" >/dev/null # Also check the satisfiability of the degeneralized formula $run ../ikwiad -CR -e -DT -x -f "$1" >/dev/null $run ../ikwiad -CR -e -DS -x -f "$1" >/dev/null } # Kristin Y. Rozier reported that the formulae with n=10 were badly # translated. Each of these formulae should have exactly one # accepting path, but in this case the emptiness returned an automata # without cycle. It turned out the function used to compare LTL # formulae was bugged when two LTL formulae had the same hash value, # so the translation of the formula stopped midway, on a formula it # thought it had already seen. check_range() { "$lc" --rv-counter $1 --rv-counter-linear $1 \ --rv-counter-carry $1 --rv-counter-carry-linear $1 | while read line; do check_formula "$line" done } check_range 1..2 # Do not run the larger formulae with valgrind, it is too slow run= check_range 3..11