#!/bin/sh # -*- coding: utf-8 -*- # Copyright (C) 2015 Laboratoire de Recherche et Développement de # l'Epita # # 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 # Check the scc_info categorization of SCCs as accepting/rejecting # by looking at the dot output. cat < in.hoa HOA: v1 States: 11 Start: 1 AP: 2 "a" "b" acc-name: generalized-Buchi 2 Acceptance: 3 Inf(0)&Inf(1)&Fin(2) --BODY-- State: 0 {2} [0&1] 0 {0 1} [!0&!1] 0 [0] 5 State: 1 [1] 4 [0&!1] 3 State: 4 [!1] 4 {1 2} [1] 2 State: 2 [0] 0 [1] 7 State: 3 [0&1] 1 {1 0} State: 5 [t] 6 State: 6 [t] 5 State: 7 [!0&1] 7 {0 1} /* This state and the next one differs by */ [0&1] 7 {0 2} /* the order of the self loops. */ [t] 8 State: 8 [!0&1] 8 {0 2} [0&1] 8 {0 1} [t] 9 State: 9 [!0&1] 9 {0 2} [0&1] 10 {0 1} State: 10 [!0&1] 9 {0 1} [0&1] 10 {0 2} --END-- EOF run 0 autfilt --dot=as in.hoa > out.dot # The important stuff is the color=xxx lines cat <expected digraph G { rankdir=LR label="Fin(2) & (Inf(0)&Inf(1))" labelloc="t" node [shape="circle"] I [label="", style=invis, width=0] I -> 1 subgraph cluster_0 { color=grey label="" 5 [label="5"] 5 -> 6 [label="1"] 6 [label="6"] 6 -> 5 [label="1"] } subgraph cluster_1 { color=grey label="" 0 [label="0"] 0 -> 0 [label="a & b\n{0,1,2}"] 0 -> 0 [label="!a & !b\n{2}"] 0 -> 5 [label="a\n{2}"] } subgraph cluster_2 { color=green label="" 9 [label="9"] 9 -> 9 [label="!a & b\n{0,2}"] 9 -> 10 [label="a & b\n{0,1}"] 10 [label="10"] 10 -> 9 [label="!a & b\n{0,1}"] 10 -> 10 [label="a & b\n{0,2}"] } subgraph cluster_3 { color=green label="" 8 [label="8"] 8 -> 8 [label="!a & b\n{0,2}"] 8 -> 8 [label="a & b\n{0,1}"] 8 -> 9 [label="1"] } subgraph cluster_4 { color=green label="" 7 [label="7"] 7 -> 7 [label="!a & b\n{0,1}"] 7 -> 7 [label="a & b\n{0,2}"] 7 -> 8 [label="1"] } subgraph cluster_5 { color=black label="" 2 [label="2"] 2 -> 0 [label="a"] 2 -> 7 [label="b"] } subgraph cluster_6 { color=red label="" 4 [label="4"] 4 -> 4 [label="!b\n{1,2}"] 4 -> 2 [label="b"] } subgraph cluster_7 { color=green label="" 1 [label="1"] 1 -> 4 [label="b"] 1 -> 3 [label="a & !b"] 3 [label="3"] 3 -> 1 [label="a & b\n{0,1}"] } } EOF diff out.dot expected # While we are here, make sure scc_filter remove those grey SCCs. autfilt --small -x simul=0 in.hoa -H > out.hoa cat >expected.hoa <