#!/bin/sh # -*- coding: utf-8 -*- # Copyright (C) 2014, 2015, 2016, 2018, 2020 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 . # While running some benchmark, Tomáš Babiak found that Spot took too # much time (i.e. >1h) to translate those six formulae. It turns out # that the WDBA minimization was performed after the degeneralization # algorithm, while this is not necessary (WDBA will produce a BA, so # we may as well skip degeneralization). Translating these formulae # in the test-suite ensure that they don't take too much time (the # buildfarm will timeout if it does). . ./defs set -e run 0 ../twacube > stdout cat >expected < 0 0 [label="0"] 0 -> 0 [label="0"] 0 -> 1 [label="p1"] 0 -> 2 [label="p2\n{1}"] 1 [label="1"] 1 -> 2 [label="p1 & p2\n{0}"] 2 [label="2"] 2 -> 0 [label="p1 | p2\n{0,1}"] 2 -> 1 [label="!p1 | p2"] 2 -> 2 [label="1\n{0,1}"] } ----------- init : 0 0->1 : p1 {} 0->2 : p2 {1} 1->2 : p1&p2 {0} 2->0 : !p1&p2 {0,1} 2->0 : p1 {0,1} 2->1 : !p1 {} 2->1 : p1&p2 {} 2->2 : 1 {0,1} ----------- 2 2 1 {0,1} 2 1 p1&p2 {} 2 1 !p1 {} 2 0 p1 {0,1} 2 0 !p1&p2 {0,1} digraph "" { rankdir=LR node [shape="circle"] I [label="", style=invis, width=0] I -> 0 0 [label="0"] 0 -> 1 [label="p1"] 0 -> 2 [label="p2\n{1}"] 1 [label="1"] 1 -> 2 [label="p1 & p2\n{0}"] 2 [label="2"] 2 -> 0 [label="!p1 & p2\n{0,1}"] 2 -> 0 [label="p1\n{0,1}"] 2 -> 1 [label="!p1"] 2 -> 1 [label="p1 & p2"] 2 -> 2 [label="1\n{0,1}"] } EOF diff stdout expected