diff --git a/NEWS b/NEWS index d2547dd2e..e187230d7 100644 --- a/NEWS +++ b/NEWS @@ -173,6 +173,9 @@ New in spot 2.9.6.dev (not yet released) cut the size of the powerset automaton by 2^|sinks| in favorable cases. + - twa_graph::merge_edges() had its two passes swapped. Doing so + improves the determinism of some automata. + Python: - Bindings for functions related to games. diff --git a/spot/twa/twagraph.cc b/spot/twa/twagraph.cc index 38e302c96..f0299698a 100644 --- a/spot/twa/twagraph.cc +++ b/spot/twa/twagraph.cc @@ -1,5 +1,5 @@ // -*- coding: utf-8 -*- -// Copyright (C) 2014-2020 Laboratoire de Recherche et Développement +// Copyright (C) 2014-2021 Laboratoire de Recherche et Développement // de l'Epita. // // This file is part of Spot, a model checking library. @@ -140,117 +140,153 @@ namespace spot if (!is_existential()) merge_univ_dests(); - typedef graph_t::edge_storage_t tr_t; - g_.sort_edges_([](const tr_t& lhs, const tr_t& rhs) - { - if (lhs.src < rhs.src) - return true; - if (lhs.src > rhs.src) - return false; - if (lhs.dst < rhs.dst) - return true; - if (lhs.dst > rhs.dst) - return false; - return lhs.acc < rhs.acc; - // Do not sort on conditions, we'll merge - // them. - }); - auto& trans = this->edge_vector(); unsigned orig_size = trans.size(); unsigned tend = orig_size; - unsigned out = 0; - unsigned in = 1; - // Skip any leading false edge. - while (in < tend && trans[in].cond == bddfalse) - ++in; - if (in < tend) + + // When two transitions have the same (src,colors,dst), + // we can marge their conds. + auto merge_conds_and_remove_false = [&]() + { + typedef graph_t::edge_storage_t tr_t; + g_.sort_edges_([](const tr_t& lhs, const tr_t& rhs) { - ++out; - if (out != in) - trans[out] = trans[in]; - for (++in; in < tend; ++in) - { - if (trans[in].cond == bddfalse) // Unusable edge - continue; - // Merge edges with the same source, destination, and - // acceptance. (We test the source last, because this is the - // most likely test to be true as edges are ordered by - // sources and then destinations.) - if (trans[out].dst == trans[in].dst - && trans[out].acc == trans[in].acc - && trans[out].src == trans[in].src) - { - trans[out].cond |= trans[in].cond; - } - else - { - ++out; - if (in != out) - trans[out] = trans[in]; - } - } - } - if (++out != tend) - trans.resize(out); + if (lhs.src < rhs.src) + return true; + if (lhs.src > rhs.src) + return false; + if (lhs.dst < rhs.dst) + return true; + if (lhs.dst > rhs.dst) + return false; + return lhs.acc < rhs.acc; + // Do not sort on conditions, we'll merge + // them. + }); - tend = out; - out = 1; - in = 2; + unsigned out = 0; + unsigned in = 1; + // Skip any leading false edge. + while (in < tend && trans[in].cond == bddfalse) + ++in; + if (in < tend) + { + ++out; + if (out != in) + trans[out] = trans[in]; + for (++in; in < tend; ++in) + { + if (trans[in].cond == bddfalse) // Unusable edge + continue; + // Merge edges with the same source, destination, and + // colors. (We test the source last, because this is the + // most likely test to be true as edges are ordered by + // sources and then destinations.) + if (trans[out].dst == trans[in].dst + && trans[out].acc == trans[in].acc + && trans[out].src == trans[in].src) + { + trans[out].cond |= trans[in].cond; + } + else + { + ++out; + if (in != out) + trans[out] = trans[in]; + } + } + } + if (++out != tend) + { + tend = out; + trans.resize(tend); + } + }; + + // When two transitions have the same (src,cond,dst), we can marge + // their colors. This only works for Fin-less acceptance. + // // FIXME: We could should also merge edges when using // fin_acceptance, but the rule for Fin sets are different than // those for Inf sets, (and we need to be careful if a set is used // both as Inf and Fin) - if ((in < tend) && !acc().uses_fin_acceptance()) + auto merge_colors = [&]() + { + if (tend < 2 || acc().uses_fin_acceptance()) + return; + typedef graph_t::edge_storage_t tr_t; + g_.sort_edges_([](const tr_t& lhs, const tr_t& rhs) { - typedef graph_t::edge_storage_t tr_t; - g_.sort_edges_([](const tr_t& lhs, const tr_t& rhs) - { - if (lhs.src < rhs.src) - return true; - if (lhs.src > rhs.src) - return false; - if (lhs.dst < rhs.dst) - return true; - if (lhs.dst > rhs.dst) - return false; - bdd_less_than_stable lt; - return lt(lhs.cond, rhs.cond); - // Do not sort on acceptance, we'll merge - // them. - }); + if (lhs.src < rhs.src) + return true; + if (lhs.src > rhs.src) + return false; + if (lhs.dst < rhs.dst) + return true; + if (lhs.dst > rhs.dst) + return false; + bdd_less_than_stable lt; + return lt(lhs.cond, rhs.cond); + // Do not sort on acceptance, we'll merge them. + }); - for (; in < tend; ++in) - { - // Merge edges with the same source, destination, - // and conditions. (We test the source last, for the - // same reason as above.) - if (trans[out].dst == trans[in].dst - && trans[out].cond.id() == trans[in].cond.id() - && trans[out].src == trans[in].src) - { - trans[out].acc |= trans[in].acc; - } - else - { - ++out; - if (in != out) - trans[out] = trans[in]; - } - } - if (++out != tend) - trans.resize(out); - } + // Start on the second position and try to merge it into the + // first one + unsigned out = 1; + unsigned in = 2; + for (; in < tend; ++in) + { + // Merge edges with the same source, destination, + // and conditions. (We test the source last, for the + // same reason as above.) + if (trans[out].dst == trans[in].dst + && trans[out].cond.id() == trans[in].cond.id() + && trans[out].src == trans[in].src) + { + trans[out].acc |= trans[in].acc; + } + else + { + ++out; + if (in != out) + trans[out] = trans[in]; + } + } + if (++out != tend) + { + tend = out; + trans.resize(tend); + } + }; + + // These next two lines used to be done in the opposite order in + // 2.9.x and before. + // + // However merging colors first is more likely to + // make parallel non-deterministic transition disappear. + // + // Consider: + // (1)--a-{1}--->(2) + // (1)--a-{2}--->(2) + // (1)--!a-{1}-->(2) + // If colors are merged first, the first two transitions become one, + // and the result is more deterministic: + // (1)--a-{1,2}->(2) + // (1)--!a-{1}-->(2) + // If conditions were merged first, we would get the following + // non-deterministic transitions instead: + // (1)--1-{1}--->(2) + // (1)--a-{2}--->(2) + merge_colors(); + merge_conds_and_remove_false(); + + // Merging some edges may turn a non-deterministic automaton + // into a deterministic one. + if (prop_universal().is_false() && tend != orig_size) + prop_universal(trival::maybe()); g_.chain_edges_(); - - // Did we actually reduce the number of edges? - if (trans.size() != orig_size) - // Merging some edges may turn a non-deterministic automaton - // into a deterministic one. - if (prop_universal().is_false()) - prop_universal(trival::maybe()); } void twa_graph::merge_states() diff --git a/spot/twa/twagraph.hh b/spot/twa/twagraph.hh index d2dc9d739..72cf886e8 100644 --- a/spot/twa/twagraph.hh +++ b/spot/twa/twagraph.hh @@ -1,5 +1,5 @@ // -*- coding: utf-8 -*- -// Copyright (C) 2014-2020 Laboratoire de Recherche et Développement +// Copyright (C) 2014-2021 Laboratoire de Recherche et Développement // de l'Epita. // // This file is part of Spot, a model checking library. @@ -552,15 +552,15 @@ namespace spot /// This makes two passes over the automaton to reduce the number /// of edges with an identical pair of source and destination. /// - /// In the first pass, edges that share their source, destination, - /// and acceptance marks are merged into a single edge whose condition - /// is the conjunction of the conditions of the original edges. - /// - /// In the second pass, which is performed only on automata with + /// In the first pass, which is performed only on automata with /// Fin-less acceptance, edges with the same source, destination, /// and conditions are merged into a single edge whose set of /// acceptance marks is the intersection of the sets of the edges. /// + /// In the second pass, edges that share their source, destination, + /// and acceptance marks are merged into a single edge whose condition + /// is the conjunction of the conditions of the original edges. + /// /// If the automaton uses some universal edges, the method /// merge_univ_dests() is also called. void merge_edges(); diff --git a/tests/core/alternating.test b/tests/core/alternating.test index 8970848bb..ec6b8a511 100755 --- a/tests/core/alternating.test +++ b/tests/core/alternating.test @@ -1,6 +1,6 @@ #!/bin/sh # -*- coding: utf-8 -*- -# Copyright (C) 2016-2018, 2020 Laboratoire de Recherche et +# Copyright (C) 2016-2018, 2020-2021 Laboratoire de Recherche et # Développement de l'Epita (LRDE). # # This file is part of Spot, a model checking library. @@ -196,11 +196,12 @@ AP: 1 "a" acc-name: Buchi Acceptance: 1 Inf(0) properties: trans-labels explicit-labels trans-acc complete +properties: deterministic --BODY-- State: 0 [t] 1 State: 1 -[t] 1 +[!0] 1 [0] 1 {0} --END-- EOF diff --git a/tests/core/parity2.test b/tests/core/parity2.test index 471793355..aeb86463f 100755 --- a/tests/core/parity2.test +++ b/tests/core/parity2.test @@ -1,7 +1,7 @@ #!/bin/sh # -*- coding: utf-8 -*- -# Copyright (C) 2018, 2019 Laboratoire de Recherche et Développement de -# l'Epita (LRDE). +# Copyright (C) 2018-2019, 2021 Laboratoire de Recherche et +# Développement de l'Epita (LRDE). # # This file is part of Spot, a model checking library. # @@ -56,8 +56,8 @@ properties: trans-labels explicit-labels trans-acc complete properties: deterministic stutter-invariant --BODY-- State: 0 -[0&1] 0 {0} [!1] 0 +[0&1] 0 {0} [!0&1] 1 State: 1 [0] 0 {0} @@ -115,8 +115,8 @@ properties: trans-labels explicit-labels trans-acc complete properties: deterministic stutter-invariant --BODY-- State: 0 -[0&1] 0 {1} [!1] 0 +[0&1] 0 {1} [!0&1] 1 State: 1 [0] 0 {1} @@ -174,8 +174,8 @@ properties: trans-labels explicit-labels trans-acc complete properties: deterministic stutter-invariant --BODY-- State: 0 -[0&1] 0 {0} [!1] 0 +[0&1] 0 {0} [!0&1] 1 State: 1 [0] 0 {0} @@ -233,8 +233,8 @@ properties: trans-labels explicit-labels trans-acc colored complete properties: deterministic stutter-invariant --BODY-- State: 0 -[0&1] 0 {1} [!1] 0 {0} +[0&1] 0 {1} [!0&1] 1 {0} State: 1 [0] 0 {1} @@ -292,8 +292,8 @@ properties: trans-labels explicit-labels trans-acc colored complete properties: deterministic stutter-invariant --BODY-- State: 0 -[0&1] 0 {1} [!1] 0 {2} +[0&1] 0 {1} [!0&1] 1 {2} State: 1 [0] 0 {1} @@ -351,8 +351,8 @@ properties: trans-labels explicit-labels trans-acc colored complete properties: deterministic stutter-invariant --BODY-- State: 0 -[0&1] 0 {2} [!1] 0 {1} +[0&1] 0 {2} [!0&1] 1 {1} State: 1 [0] 0 {2} @@ -417,8 +417,8 @@ properties: trans-labels explicit-labels trans-acc complete properties: deterministic stutter-invariant --BODY-- State: 0 -[0&1] 0 {0} [!1] 0 +[0&1] 0 {0} [!0&1] 1 State: 1 [0] 0 {0} @@ -478,8 +478,8 @@ properties: trans-labels explicit-labels trans-acc complete properties: deterministic stutter-invariant --BODY-- State: 0 -[0&1] 0 {1} [!1] 0 +[0&1] 0 {1} [!0&1] 1 State: 1 [0] 0 {1} @@ -539,8 +539,8 @@ properties: trans-labels explicit-labels trans-acc complete properties: deterministic stutter-invariant --BODY-- State: 0 -[0&1] 0 {0} [!1] 0 +[0&1] 0 {0} [!0&1] 1 State: 1 [0] 0 {0} @@ -600,8 +600,8 @@ properties: trans-labels explicit-labels trans-acc colored complete properties: deterministic stutter-invariant --BODY-- State: 0 -[0&1] 0 {1} [!1] 0 {0} +[0&1] 0 {1} [!0&1] 1 {0} State: 1 [0] 0 {1} @@ -661,8 +661,8 @@ properties: trans-labels explicit-labels trans-acc colored complete properties: deterministic stutter-invariant --BODY-- State: 0 -[0&1] 0 {1} [!1] 0 {2} +[0&1] 0 {1} [!0&1] 1 {2} State: 1 [0] 0 {1} @@ -722,8 +722,8 @@ properties: trans-labels explicit-labels trans-acc colored complete properties: deterministic stutter-invariant --BODY-- State: 0 -[0&1] 0 {2} [!1] 0 {1} +[0&1] 0 {2} [!0&1] 1 {1} State: 1 [0] 0 {2} @@ -1158,8 +1158,8 @@ properties: trans-labels explicit-labels trans-acc complete properties: deterministic stutter-invariant --BODY-- State: 0 -[0&1] 0 {0} [!1] 0 +[0&1] 0 {0} [!0&1] 1 State: 1 [0] 0 {0} @@ -1219,8 +1219,8 @@ properties: trans-labels explicit-labels trans-acc complete properties: deterministic stutter-invariant --BODY-- State: 0 -[0&1] 0 {1} [!1] 0 +[0&1] 0 {1} [!0&1] 1 State: 1 [0] 0 {1} @@ -1280,8 +1280,8 @@ properties: trans-labels explicit-labels trans-acc complete properties: deterministic stutter-invariant --BODY-- State: 0 -[0&1] 0 {0} [!1] 0 +[0&1] 0 {0} [!0&1] 1 State: 1 [0] 0 {0} @@ -1341,8 +1341,8 @@ properties: trans-labels explicit-labels trans-acc colored complete properties: deterministic stutter-invariant --BODY-- State: 0 -[0&1] 0 {1} [!1] 0 {0} +[0&1] 0 {1} [!0&1] 1 {0} State: 1 [0] 0 {1} @@ -1403,8 +1403,8 @@ properties: trans-labels explicit-labels trans-acc colored complete properties: deterministic stutter-invariant --BODY-- State: 0 -[0&1] 0 {1} [!1] 0 {2} +[0&1] 0 {1} [!0&1] 1 {2} State: 1 [0] 0 {1} @@ -1465,8 +1465,8 @@ properties: trans-labels explicit-labels trans-acc colored complete properties: deterministic stutter-invariant --BODY-- State: 0 -[0&1] 0 {2} [!1] 0 {1} +[0&1] 0 {2} [!0&1] 1 {1} State: 1 [0] 0 {2} diff --git a/tests/core/readsave.test b/tests/core/readsave.test index 2f9b424f9..977210991 100755 --- a/tests/core/readsave.test +++ b/tests/core/readsave.test @@ -1,6 +1,6 @@ #!/bin/sh # -*- coding: utf-8 -*- -# Copyright (C) 2009, 2010, 2012, 2014-2020 Laboratoire de +# Copyright (C) 2009, 2010, 2012, 2014-2021 Laboratoire de # Recherche et Développement de l'Epita (LRDE). # Copyright (C) 2003, 2004 Laboratoire d'Informatique de Paris 6 (LIP6), # département Systèmes Répartis Coopératifs (SRC), Université Pierre @@ -364,8 +364,8 @@ digraph "G(Fa & Fb)" { I -> 0 0 [label="0"] 0 -> 0 [label="!a & !b"] - 0 -> 0 [label="!a & b\n{1}"] 0 -> 0 [label="a & !b\n{0}"] + 0 -> 0 [label="!a & b\n{1}"] 0 -> 0 [label="a & b\n{0,1}"] } EOF @@ -383,8 +383,8 @@ digraph "G(Fa & Fb)" { I -> 0 0 [label="0"] 0 -> 0 [label="!a & !b"] - 0 -> 0 [label="!a & b\n❶"] 0 -> 0 [label="a & !b\n⓿"] + 0 -> 0 [label="!a & b\n❶"] 0 -> 0 [label="a & b\n⓿❶"] } EOF @@ -402,8 +402,8 @@ digraph "G(Fa & Fb)" { I -> 0 0 [label="0"] 0 -> 0 [label=""] - 0 -> 0 [label="❶"] 0 -> 0 [label="⓿"] + 0 -> 0 [label="❶"] 0 -> 0 [label="⓿❶"] } EOF @@ -428,8 +428,8 @@ digraph "G(Fa & Fb)" { I -> 0 0 [label=<0>] 0 -> 0 [label=] - 0 -> 0 [label=$one>] 0 -> 0 [label=$zero>] + 0 -> 0 [label=$one>] 0 -> 0 [label=$zero$one>] } EOF diff --git a/tests/core/sbacc.test b/tests/core/sbacc.test index 1d57a74a0..d694fa831 100755 --- a/tests/core/sbacc.test +++ b/tests/core/sbacc.test @@ -1,6 +1,6 @@ #! /bin/sh # -*- coding: utf-8 -*- -# Copyright (C) 2015-2017, 2020 Laboratoire de Recherche et +# Copyright (C) 2015-2017, 2020-2021 Laboratoire de Recherche et # Développement de l'Epita (LRDE). # # This file is part of Spot, a model checking library. @@ -37,23 +37,23 @@ properties: deterministic stutter-invariant State: 0 {0 1} [0&1] 0 [!0&!1] 1 -[!0&1] 2 -[0&!1] 3 +[0&!1] 2 +[!0&1] 3 State: 1 [0&1] 0 [!0&!1] 1 -[!0&1] 2 -[0&!1] 3 -State: 2 {1} +[0&!1] 2 +[!0&1] 3 +State: 2 {0} [0&1] 0 [!0&!1] 1 -[!0&1] 2 -[0&!1] 3 -State: 3 {0} +[0&!1] 2 +[!0&1] 3 +State: 3 {1} [0&1] 0 [!0&!1] 1 -[!0&1] 2 -[0&!1] 3 +[0&!1] 2 +[!0&1] 3 --END-- EOF diff --git a/tests/python/_product_susp.ipynb b/tests/python/_product_susp.ipynb index a8bd194d0..a0de91f95 100644 --- a/tests/python/_product_susp.ipynb +++ b/tests/python/_product_susp.ipynb @@ -36,130 +36,130 @@ "
\n", "\n", - "\n", "\n", - "\n", - "\n", - "\n", - "t\n", - "[all]\n", + "\n", + "\n", + "\n", + "t\n", + "[all]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "1\n", - "\n", - "1\n", + "\n", + "1\n", "\n", "\n", "\n", "0->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "2\n", - "\n", - "2\n", + "\n", + "2\n", "\n", "\n", "\n", "0->2\n", - "\n", - "\n", - "b\n", + "\n", + "\n", + "b\n", "\n", "\n", "\n", "3\n", - "\n", - "3\n", + "\n", + "3\n", "\n", "\n", "\n", "0->3\n", - "\n", - "\n", - "c\n", + "\n", + "\n", + "c\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "b\n", + "\n", + "\n", + "b\n", "\n", "\n", "\n", "3->3\n", - "\n", - "\n", - "c\n", + "\n", + "\n", + "c\n", "\n", "\n", "\n", "
\n", "\n", - "\n", "\n", "\n", - "\n", - "\n", - "Inf(\n", - "\n", - ")\n", - "[Büchi]\n", + "\n", + "\n", + "Inf(\n", + "\n", + ")\n", + "[Büchi]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "0->0\n", - "\n", - "\n", - "!a\n", + "\n", + "\n", + "!a\n", "\n", "\n", "\n", "0->0\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", @@ -167,123 +167,123 @@ "
\n", "\n", - "\n", "\n", - "\n", - "\n", - "\n", - "Inf(\n", - "\n", - ")\n", - "[Büchi]\n", + "\n", + "\n", + "\n", + "Inf(\n", + "\n", + ")\n", + "[Büchi]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "1\n", - "\n", - "1\n", + "\n", + "1\n", "\n", "\n", "\n", "0->1\n", - "\n", - "\n", - "a\n", - "\n", + "\n", + "\n", + "a\n", + "\n", "\n", "\n", "\n", "2\n", - "\n", - "2\n", + "\n", + "2\n", "\n", "\n", "\n", "0->2\n", - "\n", - "\n", - "!a & b\n", + "\n", + "\n", + "!a & b\n", "\n", "\n", "\n", "0->2\n", - "\n", - "\n", - "a & b\n", - "\n", + "\n", + "\n", + "a & b\n", + "\n", "\n", "\n", "\n", "3\n", - "\n", - "3\n", + "\n", + "3\n", "\n", "\n", "\n", "0->3\n", - "\n", - "\n", - "!a & c\n", + "\n", + "\n", + "!a & c\n", "\n", "\n", "\n", "0->3\n", - "\n", - "\n", - "a & c\n", - "\n", + "\n", + "\n", + "a & c\n", + "\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "a\n", - "\n", + "\n", + "\n", + "a\n", + "\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "!a & b\n", + "\n", + "\n", + "!a & b\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "a & b\n", - "\n", + "\n", + "\n", + "a & b\n", + "\n", "\n", "\n", "\n", "3->3\n", - "\n", - "\n", - "!a & c\n", + "\n", + "\n", + "!a & c\n", "\n", "\n", "\n", "3->3\n", - "\n", - "\n", - "a & c\n", - "\n", + "\n", + "\n", + "a & c\n", + "\n", "\n", "\n", "\n", @@ -302,130 +302,130 @@ "
\n", "\n", - "\n", "\n", - "\n", - "\n", - "\n", - "t\n", - "[all]\n", + "\n", + "\n", + "\n", + "t\n", + "[all]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "1\n", - "\n", - "1\n", + "\n", + "1\n", "\n", "\n", "\n", "0->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "2\n", - "\n", - "2\n", + "\n", + "2\n", "\n", "\n", "\n", "0->2\n", - "\n", - "\n", - "b\n", + "\n", + "\n", + "b\n", "\n", "\n", "\n", "3\n", - "\n", - "3\n", + "\n", + "3\n", "\n", "\n", "\n", "0->3\n", - "\n", - "\n", - "c\n", + "\n", + "\n", + "c\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "b\n", + "\n", + "\n", + "b\n", "\n", "\n", "\n", "3->3\n", - "\n", - "\n", - "c\n", + "\n", + "\n", + "c\n", "\n", "\n", "\n", "
\n", "\n", - "\n", "\n", "\n", - "\n", - "\n", - "Inf(\n", - "\n", - ")\n", - "[Büchi]\n", + "\n", + "\n", + "Inf(\n", + "\n", + ")\n", + "[Büchi]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "0->0\n", - "\n", - "\n", - "!a\n", + "\n", + "\n", + "!a\n", "\n", "\n", "\n", "0->0\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", @@ -433,164 +433,164 @@ "
\n", "\n", - "\n", "\n", - "\n", - "\n", - "\n", - "Inf(\n", - "\n", - ")\n", - "[Büchi]\n", + "\n", + "\n", + "\n", + "Inf(\n", + "\n", + ")\n", + "[Büchi]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "1\n", - "\n", - "1\n", + "\n", + "1\n", "\n", "\n", "\n", "0->1\n", - "\n", - "\n", - "a\n", - "\n", + "\n", + "\n", + "a\n", + "\n", "\n", "\n", "\n", "2\n", - "\n", - "2\n", + "\n", + "2\n", "\n", "\n", "\n", "0->2\n", - "\n", - "\n", - "b\n", - "\n", + "\n", + "\n", + "b\n", + "\n", "\n", "\n", "\n", "3\n", - "\n", - "3\n", + "\n", + "3\n", "\n", "\n", "\n", "0->3\n", - "\n", - "\n", - "c\n", - "\n", + "\n", + "\n", + "c\n", + "\n", "\n", "\n", "\n", "4\n", - "\n", - "4\n", + "\n", + "4\n", "\n", "\n", "\n", "0->4\n", - "\n", - "\n", - "!a & !b & !c\n", - "\n", + "\n", + "\n", + "!a & !b & !c\n", + "\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "a\n", - "\n", + "\n", + "\n", + "a\n", + "\n", "\n", "\n", "\n", "1->4\n", - "\n", - "\n", - "!a\n", - "\n", + "\n", + "\n", + "!a\n", + "\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "b\n", - "\n", + "\n", + "\n", + "b\n", + "\n", "\n", "\n", "\n", "2->4\n", - "\n", - "\n", - "!a & !b\n", - "\n", + "\n", + "\n", + "!a & !b\n", + "\n", "\n", "\n", "\n", "2->4\n", - "\n", - "\n", - "a & !b\n", - "\n", + "\n", + "\n", + "a & !b\n", + "\n", "\n", "\n", "\n", "3->3\n", - "\n", - "\n", - "c\n", - "\n", + "\n", + "\n", + "c\n", + "\n", "\n", "\n", "\n", "3->4\n", - "\n", - "\n", - "!a & !c\n", - "\n", + "\n", + "\n", + "!a & !c\n", + "\n", "\n", "\n", "\n", "3->4\n", - "\n", - "\n", - "a & !c\n", - "\n", + "\n", + "\n", + "a & !c\n", + "\n", "\n", "\n", "\n", "4->4\n", - "\n", - "\n", - "!a\n", + "\n", + "\n", + "!a\n", "\n", "\n", "\n", "4->4\n", - "\n", - "\n", - "a\n", - "\n", + "\n", + "\n", + "a\n", + "\n", "\n", "\n", "\n", @@ -621,245 +621,245 @@ "
\n", "\n", - "\n", "\n", - "\n", - "\n", - "\n", - "[Büchi]\n", + "\n", + "\n", + "\n", + "[Büchi]\n", "\n", "\n", "\n", "6\n", - "\n", - "\n", - "6\n", + "\n", + "\n", + "6\n", "\n", "\n", "\n", "I->6\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "6->6\n", - "\n", - "\n", - "a & b & c\n", + "\n", + "\n", + "a & b & c\n", "\n", "\n", "\n", "0\n", - "\n", - "\n", - "0\n", + "\n", + "\n", + "0\n", "\n", "\n", "\n", "6->0\n", - "\n", - "\n", - "!a & !b & c\n", + "\n", + "\n", + "!a & !b & c\n", "\n", "\n", "\n", "1\n", - "\n", - "\n", - "1\n", + "\n", + "\n", + "1\n", "\n", "\n", "\n", "6->1\n", - "\n", - "\n", - "!a & b & c\n", + "\n", + "\n", + "!a & b & c\n", "\n", "\n", "\n", "2\n", - "\n", - "\n", - "2\n", + "\n", + "\n", + "2\n", "\n", "\n", "\n", "6->2\n", - "\n", - "\n", - "!a & b & !c\n", + "\n", + "\n", + "!a & b & !c\n", "\n", "\n", "\n", "3\n", - "\n", - "\n", - "3\n", + "\n", + "\n", + "3\n", "\n", "\n", "\n", "6->3\n", - "\n", - "\n", - "a & !b & !c\n", + "\n", + "\n", + "a & !b & !c\n", "\n", "\n", "\n", "4\n", - "\n", - "\n", - "4\n", + "\n", + "\n", + "4\n", "\n", "\n", "\n", "6->4\n", - "\n", - "\n", - "a & !b & c\n", + "\n", + "\n", + "a & !b & c\n", "\n", "\n", "\n", "5\n", - "\n", - "\n", - "5\n", + "\n", + "\n", + "5\n", "\n", "\n", "\n", "6->5\n", - "\n", - "\n", - "a & b & !c\n", + "\n", + "\n", + "a & b & !c\n", "\n", "\n", "\n", "0->0\n", - "\n", - "\n", - "c\n", + "\n", + "\n", + "c\n", "\n", "\n", "\n", "1->0\n", - "\n", - "\n", - "!b & c\n", + "\n", + "\n", + "!b & c\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "b & c\n", + "\n", + "\n", + "b & c\n", "\n", "\n", "\n", "1->2\n", - "\n", - "\n", - "b & !c\n", + "\n", + "\n", + "b & !c\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "b\n", + "\n", + "\n", + "b\n", "\n", "\n", "\n", "3->3\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "4->0\n", - "\n", - "\n", - "!a & c\n", + "\n", + "\n", + "!a & c\n", "\n", "\n", "\n", "4->3\n", - "\n", - "\n", - "a & !c\n", + "\n", + "\n", + "a & !c\n", "\n", "\n", "\n", "4->4\n", - "\n", - "\n", - "a & c\n", + "\n", + "\n", + "a & c\n", "\n", "\n", "\n", "5->2\n", - "\n", - "\n", - "!a & b\n", + "\n", + "\n", + "!a & b\n", "\n", "\n", "\n", "5->3\n", - "\n", - "\n", - "a & !b\n", + "\n", + "\n", + "a & !b\n", "\n", "\n", "\n", "5->5\n", - "\n", - "\n", - "a & b\n", + "\n", + "\n", + "a & b\n", "\n", "\n", "\n", "
\n", "\n", - "\n", "\n", "\n", - "\n", - "\n", - "Inf(\n", - "\n", - ")\n", - "[Büchi]\n", + "\n", + "\n", + "Inf(\n", + "\n", + ")\n", + "[Büchi]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "0->0\n", - "\n", - "\n", - "!a\n", + "\n", + "\n", + "!a\n", "\n", "\n", "\n", "0->0\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", @@ -867,247 +867,247 @@ "
\n", "\n", - "\n", "\n", - "\n", - "\n", - "\n", - "Inf(\n", - "\n", - ")\n", - "[Büchi]\n", + "\n", + "\n", + "\n", + "Inf(\n", + "\n", + ")\n", + "[Büchi]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "0->0\n", - "\n", - "\n", - "a & b & c\n", - "\n", + "\n", + "\n", + "a & b & c\n", + "\n", "\n", "\n", "\n", "1\n", - "\n", - "1\n", + "\n", + "1\n", "\n", "\n", "\n", "0->1\n", - "\n", - "\n", - "!a & !b & c\n", + "\n", + "\n", + "!a & !b & c\n", "\n", "\n", "\n", "2\n", - "\n", - "2\n", + "\n", + "2\n", "\n", "\n", "\n", "0->2\n", - "\n", - "\n", - "!a & b & c\n", + "\n", + "\n", + "!a & b & c\n", "\n", "\n", "\n", "3\n", - "\n", - "3\n", + "\n", + "3\n", "\n", "\n", "\n", "0->3\n", - "\n", - "\n", - "!a & b & !c\n", + "\n", + "\n", + "!a & b & !c\n", "\n", "\n", "\n", "4\n", - "\n", - "4\n", + "\n", + "4\n", "\n", "\n", "\n", "0->4\n", - "\n", - "\n", - "a & !b & !c\n", - "\n", + "\n", + "\n", + "a & !b & !c\n", + "\n", "\n", "\n", "\n", "5\n", - "\n", - "5\n", + "\n", + "5\n", "\n", "\n", "\n", "0->5\n", - "\n", - "\n", - "a & !b & c\n", - "\n", + "\n", + "\n", + "a & !b & c\n", + "\n", "\n", "\n", "\n", "6\n", - "\n", - "6\n", + "\n", + "6\n", "\n", "\n", "\n", "0->6\n", - "\n", - "\n", - "a & b & !c\n", - "\n", + "\n", + "\n", + "a & b & !c\n", + "\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "!a & c\n", + "\n", + "\n", + "!a & c\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "a & c\n", - "\n", + "\n", + "\n", + "a & c\n", + "\n", "\n", "\n", "\n", "2->1\n", - "\n", - "\n", - "!a & !b & c\n", + "\n", + "\n", + "!a & !b & c\n", "\n", "\n", "\n", "2->1\n", - "\n", - "\n", - "a & !b & c\n", - "\n", + "\n", + "\n", + "a & !b & c\n", + "\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "!a & b & c\n", + "\n", + "\n", + "!a & b & c\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "a & b & c\n", - "\n", + "\n", + "\n", + "a & b & c\n", + "\n", "\n", "\n", "\n", "2->3\n", - "\n", - "\n", - "!a & b & !c\n", + "\n", + "\n", + "!a & b & !c\n", "\n", "\n", "\n", "2->3\n", - "\n", - "\n", - "a & b & !c\n", - "\n", + "\n", + "\n", + "a & b & !c\n", + "\n", "\n", "\n", "\n", "3->3\n", - "\n", - "\n", - "!a & b\n", + "\n", + "\n", + "!a & b\n", "\n", "\n", "\n", "3->3\n", - "\n", - "\n", - "a & b\n", - "\n", + "\n", + "\n", + "a & b\n", + "\n", "\n", "\n", "\n", "4->4\n", - "\n", - "\n", - "a\n", - "\n", + "\n", + "\n", + "a\n", + "\n", "\n", "\n", "\n", "5->1\n", - "\n", - "\n", - "!a & c\n", + "\n", + "\n", + "!a & c\n", "\n", "\n", "\n", "5->4\n", - "\n", - "\n", - "a & !c\n", - "\n", + "\n", + "\n", + "a & !c\n", + "\n", "\n", "\n", "\n", "5->5\n", - "\n", - "\n", - "a & c\n", - "\n", + "\n", + "\n", + "a & c\n", + "\n", "\n", "\n", "\n", "6->3\n", - "\n", - "\n", - "!a & b\n", + "\n", + "\n", + "!a & b\n", "\n", "\n", "\n", "6->4\n", - "\n", - "\n", - "a & !b\n", - "\n", + "\n", + "\n", + "a & !b\n", + "\n", "\n", "\n", "\n", "6->6\n", - "\n", - "\n", - "a & b\n", - "\n", + "\n", + "\n", + "a & b\n", + "\n", "\n", "\n", "\n", @@ -1126,245 +1126,245 @@ "
\n", "\n", - "\n", "\n", - "\n", - "\n", - "\n", - "[Büchi]\n", + "\n", + "\n", + "\n", + "[Büchi]\n", "\n", "\n", "\n", "6\n", - "\n", - "\n", - "6\n", + "\n", + "\n", + "6\n", "\n", "\n", "\n", "I->6\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "6->6\n", - "\n", - "\n", - "a & b & c\n", + "\n", + "\n", + "a & b & c\n", "\n", "\n", "\n", "0\n", - "\n", - "\n", - "0\n", + "\n", + "\n", + "0\n", "\n", "\n", "\n", "6->0\n", - "\n", - "\n", - "!a & !b & c\n", + "\n", + "\n", + "!a & !b & c\n", "\n", "\n", "\n", "1\n", - "\n", - "\n", - "1\n", + "\n", + "\n", + "1\n", "\n", "\n", "\n", "6->1\n", - "\n", - "\n", - "!a & b & c\n", + "\n", + "\n", + "!a & b & c\n", "\n", "\n", "\n", "2\n", - "\n", - "\n", - "2\n", + "\n", + "\n", + "2\n", "\n", "\n", "\n", "6->2\n", - "\n", - "\n", - "!a & b & !c\n", + "\n", + "\n", + "!a & b & !c\n", "\n", "\n", "\n", "3\n", - "\n", - "\n", - "3\n", + "\n", + "\n", + "3\n", "\n", "\n", "\n", "6->3\n", - "\n", - "\n", - "a & !b & !c\n", + "\n", + "\n", + "a & !b & !c\n", "\n", "\n", "\n", "4\n", - "\n", - "\n", - "4\n", + "\n", + "\n", + "4\n", "\n", "\n", "\n", "6->4\n", - "\n", - "\n", - "a & !b & c\n", + "\n", + "\n", + "a & !b & c\n", "\n", "\n", "\n", "5\n", - "\n", - "\n", - "5\n", + "\n", + "\n", + "5\n", "\n", "\n", "\n", "6->5\n", - "\n", - "\n", - "a & b & !c\n", + "\n", + "\n", + "a & b & !c\n", "\n", "\n", "\n", "0->0\n", - "\n", - "\n", - "c\n", + "\n", + "\n", + "c\n", "\n", "\n", "\n", "1->0\n", - "\n", - "\n", - "!b & c\n", + "\n", + "\n", + "!b & c\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "b & c\n", + "\n", + "\n", + "b & c\n", "\n", "\n", "\n", "1->2\n", - "\n", - "\n", - "b & !c\n", + "\n", + "\n", + "b & !c\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "b\n", + "\n", + "\n", + "b\n", "\n", "\n", "\n", "3->3\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "4->0\n", - "\n", - "\n", - "!a & c\n", + "\n", + "\n", + "!a & c\n", "\n", "\n", "\n", "4->3\n", - "\n", - "\n", - "a & !c\n", + "\n", + "\n", + "a & !c\n", "\n", "\n", "\n", "4->4\n", - "\n", - "\n", - "a & c\n", + "\n", + "\n", + "a & c\n", "\n", "\n", "\n", "5->2\n", - "\n", - "\n", - "!a & b\n", + "\n", + "\n", + "!a & b\n", "\n", "\n", "\n", "5->3\n", - "\n", - "\n", - "a & !b\n", + "\n", + "\n", + "a & !b\n", "\n", "\n", "\n", "5->5\n", - "\n", - "\n", - "a & b\n", + "\n", + "\n", + "a & b\n", "\n", "\n", "\n", "
\n", "\n", - "\n", "\n", "\n", - "\n", - "\n", - "Inf(\n", - "\n", - ")\n", - "[Büchi]\n", + "\n", + "\n", + "Inf(\n", + "\n", + ")\n", + "[Büchi]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "0->0\n", - "\n", - "\n", - "!a\n", + "\n", + "\n", + "!a\n", "\n", "\n", "\n", "0->0\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", @@ -1372,318 +1372,318 @@ "
\n", "\n", - "\n", "\n", - "\n", - "\n", - "\n", - "Inf(\n", - "\n", - ")\n", - "[Büchi]\n", + "\n", + "\n", + "\n", + "Inf(\n", + "\n", + ")\n", + "[Büchi]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "0->0\n", - "\n", - "\n", - "a & b & c\n", + "\n", + "\n", + "a & b & c\n", "\n", "\n", "\n", "\n", "1\n", - "\n", - "1\n", + "\n", + "1\n", "\n", "\n", "\n", "0->1\n", - "\n", - "\n", - "!a & !b & c\n", - "\n", + "\n", + "\n", + "!a & !b & c\n", + "\n", "\n", "\n", "\n", "2\n", - "\n", - "2\n", + "\n", + "2\n", "\n", "\n", "\n", "0->2\n", - "\n", - "\n", - "!a & b & c\n", - "\n", + "\n", + "\n", + "!a & b & c\n", + "\n", "\n", "\n", "\n", "3\n", - "\n", - "3\n", + "\n", + "3\n", "\n", "\n", "\n", "0->3\n", - "\n", - "\n", - "!a & b & !c\n", - "\n", + "\n", + "\n", + "!a & b & !c\n", + "\n", "\n", "\n", "\n", "4\n", - "\n", - "4\n", + "\n", + "4\n", "\n", "\n", "\n", "0->4\n", - "\n", - "\n", - "a & !b & !c\n", - "\n", + "\n", + "\n", + "a & !b & !c\n", + "\n", "\n", "\n", "\n", "5\n", - "\n", - "5\n", + "\n", + "5\n", "\n", "\n", "\n", "0->5\n", - "\n", - "\n", - "a & !b & c\n", - "\n", + "\n", + "\n", + "a & !b & c\n", + "\n", "\n", "\n", "\n", "6\n", - "\n", - "6\n", + "\n", + "6\n", "\n", "\n", "\n", "0->6\n", - "\n", - "\n", - "a & b & !c\n", - "\n", + "\n", + "\n", + "a & b & !c\n", + "\n", "\n", "\n", "\n", "7\n", - "\n", - "7\n", + "\n", + "7\n", "\n", "\n", "\n", "0->7\n", - "\n", - "\n", - "!a & !b & !c\n", - "\n", + "\n", + "\n", + "!a & !b & !c\n", + "\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "c\n", - "\n", + "\n", + "\n", + "c\n", + "\n", "\n", "\n", "\n", "1->7\n", - "\n", - "\n", - "!a & !c\n", - "\n", + "\n", + "\n", + "!a & !c\n", + "\n", "\n", "\n", "\n", "1->7\n", - "\n", - "\n", - "a & !c\n", - "\n", + "\n", + "\n", + "a & !c\n", + "\n", "\n", "\n", "\n", "2->1\n", - "\n", - "\n", - "!b & c\n", - "\n", + "\n", + "\n", + "!b & c\n", + "\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "b & c\n", - "\n", + "\n", + "\n", + "b & c\n", + "\n", "\n", "\n", "\n", "2->3\n", - "\n", - "\n", - "b & !c\n", - "\n", + "\n", + "\n", + "b & !c\n", + "\n", "\n", "\n", "\n", "2->7\n", - "\n", - "\n", - "!a & !b & !c\n", - "\n", + "\n", + "\n", + "!a & !b & !c\n", + "\n", "\n", "\n", "\n", "2->7\n", - "\n", - "\n", - "a & !b & !c\n", - "\n", + "\n", + "\n", + "a & !b & !c\n", + "\n", "\n", "\n", "\n", "3->3\n", - "\n", - "\n", - "b\n", - "\n", + "\n", + "\n", + "b\n", + "\n", "\n", "\n", "\n", "3->7\n", - "\n", - "\n", - "!a & !b\n", - "\n", + "\n", + "\n", + "!a & !b\n", + "\n", "\n", "\n", "\n", "3->7\n", - "\n", - "\n", - "a & !b\n", - "\n", + "\n", + "\n", + "a & !b\n", + "\n", "\n", "\n", "\n", "4->4\n", - "\n", - "\n", - "a\n", - "\n", + "\n", + "\n", + "a\n", + "\n", "\n", "\n", "\n", "4->7\n", - "\n", - "\n", - "!a\n", - "\n", + "\n", + "\n", + "!a\n", + "\n", "\n", "\n", "\n", "5->1\n", - "\n", - "\n", - "!a & c\n", - "\n", + "\n", + "\n", + "!a & c\n", + "\n", "\n", "\n", "\n", "5->4\n", - "\n", - "\n", - "a & !c\n", - "\n", + "\n", + "\n", + "a & !c\n", + "\n", "\n", "\n", "\n", "5->5\n", - "\n", - "\n", - "a & c\n", - "\n", + "\n", + "\n", + "a & c\n", + "\n", "\n", "\n", "\n", "5->7\n", - "\n", - "\n", - "!a & !c\n", - "\n", + "\n", + "\n", + "!a & !c\n", + "\n", "\n", "\n", "\n", "6->3\n", - "\n", - "\n", - "!a & b\n", - "\n", + "\n", + "\n", + "!a & b\n", + "\n", "\n", "\n", "\n", "6->4\n", - "\n", - "\n", - "a & !b\n", - "\n", + "\n", + "\n", + "a & !b\n", + "\n", "\n", "\n", "\n", "6->6\n", - "\n", - "\n", - "a & b\n", - "\n", + "\n", + "\n", + "a & b\n", + "\n", "\n", "\n", "\n", "6->7\n", - "\n", - "\n", - "!a & !b\n", - "\n", + "\n", + "\n", + "!a & !b\n", + "\n", "\n", "\n", "\n", "7->7\n", - "\n", - "\n", - "!a\n", + "\n", + "\n", + "!a\n", "\n", "\n", "\n", "7->7\n", - "\n", - "\n", - "a\n", - "\n", + "\n", + "\n", + "a\n", + "\n", "\n", "\n", "\n", @@ -1714,203 +1714,203 @@ "
\n", "\n", - "\n", "\n", "\n", - "\n", - "\n", - "[Büchi]\n", + "\n", + "\n", + "[Büchi]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "1\n", - "\n", - "\n", - "1\n", + "\n", + "\n", + "1\n", "\n", "\n", "\n", "0->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "2\n", - "\n", - "\n", - "2\n", + "\n", + "\n", + "2\n", "\n", "\n", "\n", "0->2\n", - "\n", - "\n", - "!a\n", + "\n", + "\n", + "!a\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "!a\n", + "\n", + "\n", + "!a\n", "\n", "\n", "\n", "
\n", "\n", - "\n", "\n", - "\n", - "\n", - "\n", - "Inf(\n", - "\n", - ")\n", - "[Büchi]\n", + "\n", + "\n", + "\n", + "Inf(\n", + "\n", + ")\n", + "[Büchi]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "0->0\n", - "\n", - "\n", - "!a\n", + "\n", + "\n", + "!a\n", "\n", "\n", "\n", "1\n", - "\n", - "1\n", + "\n", + "1\n", "\n", "\n", "\n", "0->1\n", - "\n", - "\n", - "a\n", - "\n", + "\n", + "\n", + "a\n", + "\n", "\n", "\n", "\n", "1->0\n", - "\n", - "\n", - "!a\n", - "\n", + "\n", + "\n", + "!a\n", + "\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "
\n", "\n", - "\n", "\n", "\n", - "\n", - "\n", - "Inf(\n", - "\n", - ")\n", - "[Büchi]\n", + "\n", + "\n", + "Inf(\n", + "\n", + ")\n", + "[Büchi]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "1\n", - "\n", - "1\n", + "\n", + "1\n", "\n", "\n", "\n", "0->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "\n", "2\n", - "\n", - "2\n", + "\n", + "2\n", "\n", "\n", "\n", "0->2\n", - "\n", - "\n", - "!a\n", + "\n", + "\n", + "!a\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "!a\n", + "\n", + "\n", + "!a\n", "\n", "\n", "\n", @@ -1929,262 +1929,262 @@ "
\n", "\n", - "\n", "\n", "\n", - "\n", - "\n", - "[Büchi]\n", + "\n", + "\n", + "[Büchi]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "1\n", - "\n", - "\n", - "1\n", + "\n", + "\n", + "1\n", "\n", "\n", "\n", "0->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "2\n", - "\n", - "\n", - "2\n", + "\n", + "\n", + "2\n", "\n", "\n", "\n", "0->2\n", - "\n", - "\n", - "!a\n", + "\n", + "\n", + "!a\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "!a\n", + "\n", + "\n", + "!a\n", "\n", "\n", "\n", "
\n", "\n", - "\n", "\n", - "\n", - "\n", - "\n", - "Inf(\n", - "\n", - ")\n", - "[Büchi]\n", + "\n", + "\n", + "\n", + "Inf(\n", + "\n", + ")\n", + "[Büchi]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "0->0\n", - "\n", - "\n", - "!a\n", + "\n", + "\n", + "!a\n", "\n", "\n", "\n", "1\n", - "\n", - "1\n", + "\n", + "1\n", "\n", "\n", "\n", "0->1\n", - "\n", - "\n", - "a\n", - "\n", + "\n", + "\n", + "a\n", + "\n", "\n", "\n", "\n", "1->0\n", - "\n", - "\n", - "!a\n", - "\n", + "\n", + "\n", + "!a\n", + "\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "
\n", "\n", - "\n", "\n", "\n", - "\n", - "\n", - "Inf(\n", - "\n", - ")\n", - "[Büchi]\n", + "\n", + "\n", + "Inf(\n", + "\n", + ")\n", + "[Büchi]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "1\n", - "\n", - "1\n", + "\n", + "1\n", "\n", "\n", "\n", "0->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "2\n", - "\n", - "2\n", + "\n", + "2\n", "\n", "\n", "\n", "0->2\n", - "\n", - "\n", - "!a\n", + "\n", + "\n", + "!a\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "\n", "3\n", - "\n", - "3\n", + "\n", + "3\n", "\n", "\n", "\n", "1->3\n", - "\n", - "\n", - "!a\n", + "\n", + "\n", + "!a\n", "\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "!a\n", + "\n", + "\n", + "!a\n", "\n", "\n", "\n", "\n", "4\n", - "\n", - "4\n", + "\n", + "4\n", "\n", "\n", "\n", "2->4\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "\n", "3->3\n", - "\n", - "\n", - "!a\n", + "\n", + "\n", + "!a\n", "\n", "\n", "\n", "3->4\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "\n", "4->3\n", - "\n", - "\n", - "!a\n", + "\n", + "\n", + "!a\n", "\n", "\n", "\n", "\n", "4->4\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", @@ -2213,243 +2213,243 @@ "
\n", "\n", - "\n", "\n", "\n", - "\n", - "\n", - "Inf(\n", - "\n", - ")\n", - "[Büchi]\n", + "\n", + "\n", + "Inf(\n", + "\n", + ")\n", + "[Büchi]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "0->0\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "\n", "1\n", - "\n", - "1\n", + "\n", + "1\n", "\n", "\n", "\n", "0->1\n", - "\n", - "\n", - "!a\n", + "\n", + "\n", + "!a\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "!a\n", - "\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "!a\n", + "\n", "\n", "\n", "\n", "
\n", "\n", - "\n", "\n", - "\n", - "\n", - "\n", - "Inf(\n", - "\n", - ")\n", - "[Büchi]\n", + "\n", + "\n", + "\n", + "Inf(\n", + "\n", + ")\n", + "[Büchi]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "0->0\n", - "\n", - "\n", - "!a\n", + "\n", + "\n", + "!a\n", "\n", "\n", "\n", "1\n", - "\n", - "1\n", + "\n", + "1\n", "\n", "\n", "\n", "0->1\n", - "\n", - "\n", - "a\n", - "\n", + "\n", + "\n", + "a\n", + "\n", "\n", "\n", "\n", "1->0\n", - "\n", - "\n", - "!a\n", - "\n", + "\n", + "\n", + "!a\n", + "\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "
\n", "\n", - "\n", "\n", - "\n", - "\n", - "\n", - "Inf(\n", - "\n", - ")&Inf(\n", - "\n", - ")\n", - "[gen. Büchi 2]\n", + "\n", + "\n", + "\n", + "Inf(\n", + "\n", + ")&Inf(\n", + "\n", + ")\n", + "[gen. Büchi 2]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "1\n", - "\n", - "1\n", + "\n", + "1\n", "\n", "\n", "\n", "0->1\n", - "\n", - "\n", - "a\n", - "\n", - "\n", + "\n", + "\n", + "a\n", + "\n", + "\n", "\n", "\n", "\n", "2\n", - "\n", - "2\n", + "\n", + "2\n", "\n", "\n", "\n", "0->2\n", - "\n", - "\n", - "!a\n", + "\n", + "\n", + "!a\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "a\n", - "\n", + "\n", + "\n", + "a\n", + "\n", "\n", "\n", "\n", "1->2\n", - "\n", - "\n", - "!a\n", - "\n", + "\n", + "\n", + "!a\n", + "\n", "\n", "\n", - "\n", + "\n", "2->2\n", - "\n", - "\n", - "!a\n", - "\n", + "\n", + "\n", + "!a\n", + "\n", "\n", "\n", "\n", "3\n", - "\n", - "3\n", + "\n", + "3\n", "\n", "\n", - "\n", + "\n", "2->3\n", - "\n", - "\n", - "a\n", - "\n", + "\n", + "\n", + "a\n", + "\n", "\n", "\n", - "\n", + "\n", "3->2\n", - "\n", - "\n", - "!a\n", - "\n", - "\n", + "\n", + "\n", + "!a\n", + "\n", + "\n", "\n", "\n", - "\n", + "\n", "3->3\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", @@ -2468,243 +2468,243 @@ "
\n", "\n", - "\n", "\n", "\n", - "\n", - "\n", - "Inf(\n", - "\n", - ")\n", - "[Büchi]\n", + "\n", + "\n", + "Inf(\n", + "\n", + ")\n", + "[Büchi]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "0->0\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "\n", "1\n", - "\n", - "1\n", + "\n", + "1\n", "\n", "\n", "\n", "0->1\n", - "\n", - "\n", - "!a\n", + "\n", + "\n", + "!a\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "!a\n", - "\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "!a\n", + "\n", "\n", "\n", "\n", "
\n", "\n", - "\n", "\n", - "\n", - "\n", - "\n", - "Inf(\n", - "\n", - ")\n", - "[Büchi]\n", + "\n", + "\n", + "\n", + "Inf(\n", + "\n", + ")\n", + "[Büchi]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "0->0\n", - "\n", - "\n", - "!a\n", + "\n", + "\n", + "!a\n", "\n", "\n", "\n", "1\n", - "\n", - "1\n", + "\n", + "1\n", "\n", "\n", "\n", "0->1\n", - "\n", - "\n", - "a\n", - "\n", + "\n", + "\n", + "a\n", + "\n", "\n", "\n", "\n", "1->0\n", - "\n", - "\n", - "!a\n", - "\n", + "\n", + "\n", + "!a\n", + "\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "
\n", "\n", - "\n", "\n", - "\n", - "\n", - "\n", - "Inf(\n", - "\n", - ") | Inf(\n", - "\n", - ")\n", - "[Fin-less 2]\n", + "\n", + "\n", + "\n", + "Inf(\n", + "\n", + ") | Inf(\n", + "\n", + ")\n", + "[Fin-less 2]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "1\n", - "\n", - "1\n", + "\n", + "1\n", "\n", "\n", "\n", "0->1\n", - "\n", - "\n", - "a\n", - "\n", - "\n", + "\n", + "\n", + "a\n", + "\n", + "\n", "\n", "\n", "\n", "2\n", - "\n", - "2\n", + "\n", + "2\n", "\n", "\n", "\n", "0->2\n", - "\n", - "\n", - "!a\n", + "\n", + "\n", + "!a\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "a\n", - "\n", + "\n", + "\n", + "a\n", + "\n", "\n", "\n", "\n", "1->2\n", - "\n", - "\n", - "!a\n", - "\n", + "\n", + "\n", + "!a\n", + "\n", "\n", "\n", - "\n", + "\n", "2->2\n", - "\n", - "\n", - "!a\n", - "\n", + "\n", + "\n", + "!a\n", + "\n", "\n", "\n", "\n", "3\n", - "\n", - "3\n", + "\n", + "3\n", "\n", "\n", - "\n", + "\n", "2->3\n", - "\n", - "\n", - "a\n", - "\n", + "\n", + "\n", + "a\n", + "\n", "\n", "\n", - "\n", + "\n", "3->2\n", - "\n", - "\n", - "!a\n", - "\n", - "\n", + "\n", + "\n", + "!a\n", + "\n", + "\n", "\n", "\n", - "\n", + "\n", "3->3\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", @@ -2733,190 +2733,190 @@ "
\n", "\n", - "\n", "\n", "\n", - "\n", - "\n", - "Inf(\n", - "\n", - ")\n", - "[Büchi]\n", + "\n", + "\n", + "Inf(\n", + "\n", + ")\n", + "[Büchi]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "1\n", - "\n", - "1\n", + "\n", + "1\n", "\n", "\n", "\n", "0->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "2\n", - "\n", - "2\n", + "\n", + "2\n", "\n", "\n", "\n", "0->2\n", - "\n", - "\n", - "1\n", + "\n", + "\n", + "1\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "!a\n", - "\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "!a\n", + "\n", "\n", "\n", "\n", "
\n", "\n", - "\n", "\n", "\n", - "\n", - "\n", - "t\n", - "[all]\n", + "\n", + "\n", + "t\n", + "[all]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "0->0\n", - "\n", - "\n", - "1\n", + "\n", + "\n", + "1\n", "\n", "\n", "\n", "
\n", "\n", - "\n", "\n", "\n", - "\n", - "\n", - "Inf(\n", - "\n", - ")\n", - "[Büchi]\n", + "\n", + "\n", + "Inf(\n", + "\n", + ")\n", + "[Büchi]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "1\n", - "\n", - "1\n", + "\n", + "1\n", "\n", "\n", "\n", "0->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "2\n", - "\n", - "2\n", + "\n", + "2\n", "\n", "\n", "\n", "0->2\n", - "\n", - "\n", - "1\n", + "\n", + "\n", + "1\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "!a\n", - "\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "!a\n", + "\n", "\n", "\n", "\n", @@ -2935,146 +2935,146 @@ "
\n", "\n", - "\n", "\n", "\n", - "\n", - "\n", - "Inf(\n", - "\n", - ")\n", - "[Büchi]\n", + "\n", + "\n", + "Inf(\n", + "\n", + ")\n", + "[Büchi]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "1\n", - "\n", - "1\n", + "\n", + "1\n", "\n", "\n", "\n", "0->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "2\n", - "\n", - "2\n", + "\n", + "2\n", "\n", "\n", "\n", "0->2\n", - "\n", - "\n", - "1\n", + "\n", + "\n", + "1\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "!a\n", - "\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "!a\n", + "\n", "\n", "\n", "\n", "
\n", "\n", - "\n", "\n", "\n", - "\n", - "\n", - "t\n", - "[all]\n", + "\n", + "\n", + "t\n", + "[all]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "0->0\n", - "\n", - "\n", - "1\n", + "\n", + "\n", + "1\n", "\n", "\n", "\n", "
\n", "\n", - "\n", "\n", "\n", - "\n", - "\n", - "t\n", - "[all]\n", + "\n", + "\n", + "t\n", + "[all]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "0->0\n", - "\n", - "\n", - "1\n", + "\n", + "\n", + "1\n", "\n", "\n", "\n", @@ -3103,132 +3103,132 @@ "
\n", "\n", - "\n", "\n", "\n", - "\n", - "\n", - "Inf(\n", - "\n", - ")\n", - "[Büchi]\n", + "\n", + "\n", + "Inf(\n", + "\n", + ")\n", + "[Büchi]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "1\n", - "\n", - "1\n", + "\n", + "1\n", "\n", "\n", "\n", "0->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "2\n", - "\n", - "2\n", + "\n", + "2\n", "\n", "\n", "\n", "0->2\n", - "\n", - "\n", - "1\n", + "\n", + "\n", + "1\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "!a\n", - "\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "!a\n", + "\n", "\n", "\n", "\n", "
\n", "\n", - "\n", "\n", "\n", - "\n", - "\n", - "t\n", - "[all]\n", + "\n", + "\n", + "t\n", + "[all]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "
\n", "\n", - "\n", "\n", "\n", - "\n", - "\n", - "t\n", - "[all]\n", + "\n", + "\n", + "t\n", + "[all]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", @@ -3247,203 +3247,203 @@ "
\n", "\n", - "\n", "\n", "\n", - "\n", - "\n", - "Inf(\n", - "\n", - ")\n", - "[Büchi]\n", + "\n", + "\n", + "Inf(\n", + "\n", + ")\n", + "[Büchi]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "1\n", - "\n", - "1\n", + "\n", + "1\n", "\n", "\n", "\n", "0->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "2\n", - "\n", - "2\n", + "\n", + "2\n", "\n", "\n", "\n", "0->2\n", - "\n", - "\n", - "1\n", + "\n", + "\n", + "1\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "!a\n", - "\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "!a\n", + "\n", "\n", "\n", "\n", "
\n", "\n", - "\n", "\n", "\n", - "\n", - "\n", - "t\n", - "[all]\n", + "\n", + "\n", + "t\n", + "[all]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "
\n", "\n", - "\n", "\n", "\n", - "\n", - "\n", - "Inf(\n", - "\n", - ")\n", - "[Büchi]\n", + "\n", + "\n", + "Inf(\n", + "\n", + ")\n", + "[Büchi]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "1\n", - "\n", - "1\n", + "\n", + "1\n", "\n", "\n", "\n", "0->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "2\n", - "\n", - "2\n", + "\n", + "2\n", "\n", "\n", "\n", "0->2\n", - "\n", - "\n", - "1\n", + "\n", + "\n", + "1\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "\n", "3\n", - "\n", - "3\n", + "\n", + "3\n", "\n", "\n", "\n", "1->3\n", - "\n", - "\n", - "!a\n", + "\n", + "\n", + "!a\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "!a\n", - "\n", + "\n", + "\n", + "a\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "a\n", + "\n", + "\n", + "!a\n", + "\n", "\n", "\n", "\n", "3->3\n", - "\n", - "\n", - "1\n", + "\n", + "\n", + "1\n", "\n", "\n", "\n", @@ -3460,6 +3460,13 @@ "source": [ "test(spot.translate('(Ga | GF!a)'), spot.translate('false'))" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -3478,7 +3485,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5+" + "version": "3.9.1+" } }, "nbformat": 4, diff --git a/tests/python/alternation.ipynb b/tests/python/alternation.ipynb index 0117da723..96fcbf2c9 100644 --- a/tests/python/alternation.ipynb +++ b/tests/python/alternation.ipynb @@ -3667,14 +3667,14 @@ "\n", "\n", - "\n", + "\n", "\n", - "\n", - "Inf(\n", - "\n", - ")\n", - "[Büchi]\n", + "\n", + "Inf(\n", + "\n", + ")\n", + "[Büchi]\n", "\n", "\n", "\n", @@ -3706,7 +3706,7 @@ "1->1\n", "\n", "\n", - "1\n", + "!a\n", "\n", "\n", "\n", @@ -4296,7 +4296,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.2" + "version": "3.9.1+" } }, "nbformat": 4, diff --git a/tests/python/atva16-fig2a.ipynb b/tests/python/atva16-fig2a.ipynb index 2024d5ccd..1a62abff7 100644 --- a/tests/python/atva16-fig2a.ipynb +++ b/tests/python/atva16-fig2a.ipynb @@ -51,111 +51,111 @@ "\n", "\n", - "\n", "\n", - "\n", - "\n", - "\n", - "Inf(\n", - "\n", - ")&Inf(\n", - "\n", - ")\n", - "[gen. Büchi 2]\n", + "\n", + "\n", + "\n", + "Inf(\n", + "\n", + ")&Inf(\n", + "\n", + ")\n", + "[gen. Büchi 2]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "0->0\n", - "\n", - "\n", - "1\n", + "\n", + "\n", + "1\n", "\n", "\n", "\n", "1\n", - "\n", - "1\n", + "\n", + "1\n", "\n", "\n", "\n", "0->1\n", - "\n", - "\n", - "a | b\n", + "\n", + "\n", + "a | b\n", "\n", "\n", "\n", "2\n", - "\n", - "2\n", + "\n", + "2\n", "\n", "\n", "\n", "0->2\n", - "\n", - "\n", - "!a & !b\n", + "\n", + "\n", + "!a & !b\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "!a & !b\n", + "\n", + "\n", + "!a & !b\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "!a & b\n", - "\n", + "\n", + "\n", + "a & !b\n", + "\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "a & !b\n", - "\n", + "\n", + "\n", + "!a & b\n", + "\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "a & b\n", - "\n", - "\n", + "\n", + "\n", + "a & b\n", + "\n", + "\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "!a & !b\n", - "\n", - "\n", + "\n", + "\n", + "!a & !b\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - " *' at 0x7f62d41ff690> >" + " *' at 0x7f12cf944300> >" ] }, "execution_count": 3, @@ -238,7 +238,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.7" + "version": "3.9.1+" } }, "nbformat": 4, diff --git a/tests/python/decompose.ipynb b/tests/python/decompose.ipynb index e827ff3f2..4382c10f1 100644 --- a/tests/python/decompose.ipynb +++ b/tests/python/decompose.ipynb @@ -200,7 +200,7 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb000ab150> >" + " *' at 0x7f09cc092f00> >" ] }, "execution_count": 2, @@ -330,7 +330,7 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb015474e0> >" + " *' at 0x7f09cc211360> >" ] }, "execution_count": 3, @@ -489,7 +489,7 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb000ab360> >" + " *' at 0x7f09cc23f3c0> >" ] }, "execution_count": 4, @@ -587,7 +587,7 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb000ab840> >" + " *' at 0x7f09cc0ea4e0> >" ] }, "execution_count": 5, @@ -655,21 +655,21 @@ "0->0\n", "\n", "\n", - "!a & !c\n", - "\n", + "a & !c\n", "\n", "\n", "\n", "0->0\n", - "\n", - "\n", - "a & !c\n", + "\n", + "\n", + "!a & !c\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - " *' at 0x7fbb000abb40> >" + " *' at 0x7f09cc0ea840> >" ] }, "execution_count": 6, @@ -796,7 +796,7 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb000abd50> >" + " *' at 0x7f09cc0eaab0> >" ] }, "metadata": {}, @@ -941,7 +941,7 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb000abf00> >" + " *' at 0x7f09cc20bc60> >" ] }, "metadata": {}, @@ -1109,7 +1109,7 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb00d0fd80> >" + " *' at 0x7f09cc092cc0> >" ] }, "metadata": {}, @@ -1512,7 +1512,7 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb000ab390> >" + " *' at 0x7f09cc0ea570> >" ] }, "execution_count": 8, @@ -1942,7 +1942,7 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb00064e40> >" + " *' at 0x7f09cc0eaa50> >" ] }, "metadata": {}, @@ -1957,8 +1957,8 @@ "\n", "\n", - "\n", + "\n", "\n", "strictly weak\n", "\n", @@ -2174,7 +2174,7 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb00064e10> >" + " *' at 0x7f09cc092cc0> >" ] }, "metadata": {}, @@ -2384,7 +2384,7 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb000abed0> >" + " *' at 0x7f09cc21dea0> >" ] }, "metadata": {}, @@ -2772,7 +2772,7 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb00cd01e0> >" + " *' at 0x7f09cc0ea7b0> >" ] }, "execution_count": 10, @@ -2793,7 +2793,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -2933,7 +2933,7 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb000798a0> >" + " *' at 0x7f09cc0ab3f0> >" ] }, "metadata": {}, @@ -3072,7 +3072,7 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb00079660> >" + " *' at 0x7f09cc211570> >" ] }, "metadata": {}, @@ -3224,7 +3224,7 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb00079750> >" + " *' at 0x7f09cc23fa80> >" ] }, "metadata": {}, @@ -3252,7 +3252,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -3577,10 +3577,10 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb00d0f0f0> >" + " *' at 0x7f09cc21d750> >" ] }, - "execution_count": 13, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -3641,7 +3641,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -3960,7 +3960,7 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb00079420> >" + " *' at 0x7f09cc0ea480> >" ] }, "metadata": {}, @@ -4137,7 +4137,7 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb01538de0> >" + " *' at 0x7f09cc23fae0> >" ] }, "metadata": {}, @@ -4295,7 +4295,7 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb00d0f360> >" + " *' at 0x7f09cc092c00> >" ] }, "metadata": {}, @@ -4320,7 +4320,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -4644,10 +4644,10 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb000abd50> >" + " *' at 0x7f09cc0ea3c0> >" ] }, - "execution_count": 15, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -4673,7 +4673,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -4767,10 +4767,10 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb00079330> >" + " *' at 0x7f09cc23fbd0> >" ] }, - "execution_count": 16, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -4781,7 +4781,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -4791,7 +4791,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -4865,7 +4865,7 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb00079660> >" + " *' at 0x7f09cc0eac90> >" ] }, "metadata": {}, @@ -4941,7 +4941,7 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb000abea0> >" + " *' at 0x7f09cc21d7e0> >" ] }, "metadata": {}, @@ -4962,7 +4962,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -5035,10 +5035,10 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb000791b0> >" + " *' at 0x7f09cc0eaab0> >" ] }, - "execution_count": 19, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -5065,7 +5065,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -5185,10 +5185,10 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb00079300> >" + " *' at 0x7f09cc0ab6f0> >" ] }, - "execution_count": 20, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -5226,7 +5226,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -5345,7 +5345,7 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb00079d50> >" + " *' at 0x7f09cc0abb70> >" ] }, "metadata": {}, @@ -5447,7 +5447,7 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb000abcf0> >" + " *' at 0x7f09cc092c00> >" ] }, "metadata": {}, @@ -5582,7 +5582,7 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb000abe70> >" + " *' at 0x7f09cc0abae0> >" ] }, "metadata": {}, @@ -5611,7 +5611,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -5786,7 +5786,7 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb000ab930> >" + " *' at 0x7f09cc0ea1e0> >" ] }, "metadata": {}, @@ -5927,10 +5927,10 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb00079db0> >" + " *' at 0x7f09cc0ea630> >" ] }, - "execution_count": 22, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -5953,7 +5953,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -6030,10 +6030,10 @@ "\n" ], "text/plain": [ - " *' at 0x7fbb000792d0> >" + " *' at 0x7f09cc0eae70> >" ] }, - "execution_count": 23, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -6041,13 +6041,6 @@ "source": [ "spot.decompose_scc(si, 'a2')" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { @@ -6066,7 +6059,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.5" + "version": "3.9.1+" } }, "nbformat": 4, diff --git a/tests/python/highlighting.ipynb b/tests/python/highlighting.ipynb index 3b69aa3ff..12077b8c9 100644 --- a/tests/python/highlighting.ipynb +++ b/tests/python/highlighting.ipynb @@ -247,7 +247,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f7da043c8d0> >" + " *' at 0x7efc20027d80> >" ] }, "execution_count": 4, @@ -359,7 +359,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f7da0446d20> >" + " *' at 0x7efc2002e2a0> >" ] }, "execution_count": 5, @@ -469,7 +469,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f7da043c8d0> >" + " *' at 0x7efc20027d80> >" ] }, "execution_count": 6, @@ -659,30 +659,30 @@ "1->1\n", "\n", "\n", - "!b\n", - "\n", + "b\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "b\n", + "\n", + "\n", + "!b\n", + "\n", "\n", "\n", "\n", "2->2\n", "\n", "\n", - "a & !b\n", - "\n", + "a & b\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "a & b\n", + "\n", + "\n", + "a & !b\n", + "\n", "\n", "\n", "\n", @@ -702,7 +702,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f7da0446e70> >" + " *' at 0x7efc2002e360> >" ] }, "execution_count": 8, @@ -852,32 +852,32 @@ "\n", "\n", "1->1\n", - "\n", - "\n", - "!b\n", - "\n", + "\n", + "\n", + "b\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "b\n", + "\n", + "\n", + "!b\n", + "\n", "\n", "\n", "\n", "2->2\n", "\n", "\n", - "a & !b\n", - "\n", + "a & b\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "a & b\n", + "\n", + "\n", + "a & !b\n", + "\n", "\n", "\n", "\n", @@ -897,7 +897,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f7da0446e70> >" + " *' at 0x7efc2002e360> >" ] }, "execution_count": 11, @@ -1235,7 +1235,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f7da045a150> >" + " *' at 0x7efc2002edb0> >" ] }, "metadata": {}, @@ -1250,9 +1250,9 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "\n", "Fin(\n", "\n", @@ -1496,7 +1496,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f7da0446510> >" + " *' at 0x7efc20027de0> >" ] }, "metadata": {}, @@ -1679,7 +1679,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f7da044c6f0> >" + " *' at 0x7efc2002e570> >" ] }, "metadata": {}, @@ -1796,7 +1796,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f7da044cb10> >" + " *' at 0x7efc2002e480> >" ] }, "metadata": {}, @@ -1851,7 +1851,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f7da044ca20> >" + " *' at 0x7efc2002e6c0> >" ] }, "metadata": {}, @@ -1945,7 +1945,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f7da04520f0> >" + " *' at 0x7efc2002ec60> >" ] }, "execution_count": 14, @@ -2074,7 +2074,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f7da04520f0> >" + " *' at 0x7efc2002ec60> >" ] }, "metadata": {}, @@ -2139,7 +2139,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f7da044cb10> >" + " *' at 0x7efc2002e480> >" ] }, "metadata": {}, @@ -2194,7 +2194,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f7da044ca20> >" + " *' at 0x7efc2002e6c0> >" ] }, "metadata": {}, @@ -2425,7 +2425,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f7da0468a50> >" + " *' at 0x7efc20044780> >" ] }, "metadata": {}, @@ -2510,7 +2510,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f7da0468de0> >" + " *' at 0x7efc200449c0> >" ] }, "metadata": {}, @@ -2607,7 +2607,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f7da0468bd0> >" + " *' at 0x7efc200448d0> >" ] }, "metadata": {}, @@ -2733,30 +2733,30 @@ "1->1\n", "\n", "\n", - "!b\n", - "\n", + "b\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "b\n", + "\n", + "\n", + "!b\n", + "\n", "\n", "\n", "\n", "2->2\n", "\n", "\n", - "a & !b\n", - "\n", + "a & b\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "a & b\n", + "\n", + "\n", + "a & !b\n", + "\n", "\n", "\n", "\n", @@ -2776,7 +2776,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f7da0461210> >" + " *' at 0x7efc20044f30> >" ] }, "execution_count": 19, @@ -2861,15 +2861,15 @@ "0->0\n", "\n", "\n", - "a & !b\n", - "\n", + "a & b\n", "\n", "\n", "\n", "0->0\n", - "\n", - "\n", - "a & b\n", + "\n", + "\n", + "a & !b\n", + "\n", "\n", "\n", "\n", @@ -2882,15 +2882,15 @@ "1->1\n", "\n", "\n", - "!b\n", - "\n", + "b\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "b\n", + "\n", + "\n", + "!b\n", + "\n", "\n", "\n", "\n", @@ -2944,7 +2944,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f7da0461210> >" + " *' at 0x7efc20044f30> >" ] }, "execution_count": 20, @@ -3024,15 +3024,15 @@ "0->0\n", "\n", "\n", - "a & !b\n", - "\n", + "a & b\n", "\n", "\n", "\n", "0->0\n", - "\n", - "\n", - "a & b\n", + "\n", + "\n", + "a & !b\n", + "\n", "\n", "\n", "\n", @@ -3045,15 +3045,15 @@ "1->1\n", "\n", "\n", - "!b\n", - "\n", + "b\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "b\n", + "\n", + "\n", + "!b\n", + "\n", "\n", "\n", "\n", @@ -3107,7 +3107,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f7da0461210> >" + " *' at 0x7efc20044f30> >" ] }, "metadata": {}, @@ -3212,15 +3212,15 @@ "2->2\n", "\n", "\n", - "!b\n", - "\n", + "b\n", "\n", "\n", "\n", "2->2\n", - "\n", - "\n", - "b\n", + "\n", + "\n", + "!b\n", + "\n", "\n", "\n", "\n", @@ -3615,7 +3615,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.2" + "version": "3.9.1+" } }, "nbformat": 4, diff --git a/tests/python/mergedge.py b/tests/python/mergedge.py index e6a2e0008..e1dffc80a 100644 --- a/tests/python/mergedge.py +++ b/tests/python/mergedge.py @@ -26,3 +26,30 @@ Acceptance: 1 Inf(0) --BODY-- State: 0 [0] 0 [0] 0 {0} --END--""") assert aut.num_edges() == 2 aut.merge_edges() assert aut.num_edges() == 1 + +aut = spot.automaton(""" +HOA: v1 +States: 2 +Start: 0 +AP: 2 "p0" "p1" +acc-name: Buchi +Acceptance: 1 Inf(0) +properties: trans-labels explicit-labels trans-acc complete +--BODY-- +State: 0 +[!0] 0 {0} +[0] 1 {0} +State: 1 +[!0&!1] 0 {0} +[0 | 1] 1 +[0&!1] 1 {0} +--END--""") +assert aut.num_edges() == 5 +aut.merge_edges() +assert aut.num_edges() == 5 +assert not spot.is_deterministic(aut) +aut = spot.split_edges(aut) +assert aut.num_edges() == 9 +aut.merge_edges() +assert aut.num_edges() == 5 +assert spot.is_deterministic(aut) diff --git a/tests/python/satmin.ipynb b/tests/python/satmin.ipynb index 3e9c7c8b1..4cec11ad3 100644 --- a/tests/python/satmin.ipynb +++ b/tests/python/satmin.ipynb @@ -143,28 +143,28 @@ "!a\n", "\n", "\n", - "\n", + "\n", "4->6\n", "\n", "\n", "b\n", "\n", "\n", - "\n", + "\n", "4->4\n", "\n", "\n", "a & !b\n", "\n", "\n", - "\n", + "\n", "4->5\n", "\n", "\n", "!a & !b\n", "\n", "\n", - "\n", + "\n", "5->6\n", "\n", "\n", @@ -177,7 +177,7 @@ "2\n", "\n", "\n", - "\n", + "\n", "5->2\n", "\n", "\n", @@ -190,7 +190,7 @@ "3\n", "\n", "\n", - "\n", + "\n", "5->3\n", "\n", "\n", @@ -211,42 +211,42 @@ "!a\n", "\n", "\n", - "\n", + "\n", "2->6\n", "\n", "\n", "!b\n", "\n", "\n", - "\n", + "\n", "2->4\n", "\n", "\n", "a & b\n", "\n", "\n", - "\n", + "\n", "2->5\n", "\n", "\n", "!a & b\n", "\n", "\n", - "\n", + "\n", "3->6\n", "\n", "\n", "!b\n", "\n", "\n", - "\n", + "\n", "3->2\n", "\n", "\n", "a & b\n", "\n", "\n", - "\n", + "\n", "3->3\n", "\n", "\n", @@ -256,7 +256,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f461c465a80> >" + " *' at 0x7fe138232480> >" ] }, "execution_count": 3, @@ -289,162 +289,162 @@ "\n", "\n", - "\n", - "\n", - "\n", - "Inf(\n", - "\n", - ")\n", - "[Büchi]\n", + "\n", + "\n", + "\n", + "Inf(\n", + "\n", + ")\n", + "[Büchi]\n", "\n", "\n", "\n", "0\n", - "\n", - "0\n", + "\n", + "0\n", "\n", "\n", "\n", "I->0\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "1\n", - "\n", - "1\n", + "\n", + "1\n", "\n", "\n", "\n", "0->1\n", - "\n", - "\n", - "!a & !b\n", - "\n", + "\n", + "\n", + "!a & !b\n", + "\n", "\n", "\n", "\n", "2\n", - "\n", - "2\n", + "\n", + "2\n", "\n", "\n", "\n", "0->2\n", - "\n", - "\n", - "!a & b\n", + "\n", + "\n", + "!a & b\n", "\n", "\n", "\n", "3\n", - "\n", - "3\n", + "\n", + "3\n", "\n", "\n", "\n", "0->3\n", - "\n", - "\n", - "a & !b\n", - "\n", + "\n", + "\n", + "a & b\n", "\n", "\n", "\n", "0->3\n", - "\n", - "\n", - "a & b\n", + "\n", + "\n", + "a & !b\n", + "\n", "\n", "\n", "\n", "1->0\n", - "\n", - "\n", - "a & !b\n", - "\n", + "\n", + "\n", + "a & b\n", "\n", "\n", "\n", "1->0\n", - "\n", - "\n", - "a & b\n", + "\n", + "\n", + "a & !b\n", + "\n", "\n", "\n", "\n", "1->1\n", - "\n", - "\n", - "!a & b\n", + "\n", + "\n", + "!a & b\n", "\n", "\n", "\n", "1->3\n", - "\n", - "\n", - "!a & !b\n", - "\n", + "\n", + "\n", + "!a & !b\n", + "\n", "\n", "\n", "\n", "2->0\n", - "\n", - "\n", - "a & !b\n", + "\n", + "\n", + "a & !b\n", "\n", "\n", "\n", "2->1\n", - "\n", - "\n", - "!a & !b\n", + "\n", + "\n", + "!a & !b\n", "\n", "\n", "\n", "2->1\n", - "\n", - "\n", - "b\n", - "\n", + "\n", + "\n", + "b\n", + "\n", "\n", "\n", "\n", "3->0\n", - "\n", - "\n", - "a & b\n", - "\n", + "\n", + "\n", + "a & b\n", + "\n", "\n", "\n", "\n", "3->1\n", - "\n", - "\n", - "!a & b\n", - "\n", + "\n", + "\n", + "!a & b\n", + "\n", "\n", "\n", "\n", "3->2\n", - "\n", - "\n", - "!a & !b\n", + "\n", + "\n", + "!a & !b\n", "\n", "\n", "\n", "3->3\n", - "\n", - "\n", - "a & !b\n", + "\n", + "\n", + "a & !b\n", "\n", "\n", "\n" ], "text/plain": [ - " *' at 0x7f461c462d80> >" + " *' at 0x7fe1381dadb0> >" ] }, "execution_count": 4, @@ -680,7 +680,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f461c46dc60> >" + " *' at 0x7fe138232030> >" ] }, "execution_count": 5, @@ -720,9 +720,9 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "& | F G a F b F G c\n", "\n", "(Fin(\n", @@ -913,7 +913,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f461c46dab0> >" + " *' at 0x7fe1382323f0> >" ] }, "execution_count": 6, @@ -1062,7 +1062,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f461c46dd20> >" + " *' at 0x7fe1382325d0> >" ] }, "execution_count": 7, @@ -1234,7 +1234,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f461c511270> >" + " *' at 0x7fe1382327e0> >" ] }, "execution_count": 8, @@ -1393,7 +1393,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f461c46de40> >" + " *' at 0x7fe138232a20> >" ] }, "execution_count": 9, @@ -1465,8 +1465,8 @@ " NaN\n", " 996\n", " 48806\n", - " 2\n", - " 0\n", + " 3\n", + " 1\n", " 1\n", " 0\n", " \n", @@ -1479,9 +1479,9 @@ " 40\n", " 2760\n", " 224707\n", - " 9\n", + " 12\n", " 0\n", - " 7\n", + " 9\n", " 0\n", " \n", " \n", @@ -1493,7 +1493,7 @@ " 32\n", " 2008\n", " 155020\n", - " 6\n", + " 8\n", " 0\n", " 7\n", " 0\n", @@ -1509,9 +1509,9 @@ "2 5 4 4 11 32 2008 \n", "\n", " clauses enc.user enc.sys sat.user sat.sys \n", - "0 48806 2 0 1 0 \n", - "1 224707 9 0 7 0 \n", - "2 155020 6 0 7 0 " + "0 48806 3 1 1 0 \n", + "1 224707 12 0 9 0 \n", + "2 155020 8 0 7 0 " ] }, "metadata": {}, @@ -1652,7 +1652,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f461c462cc0> >" + " *' at 0x7fe138232750> >" ] }, "execution_count": 10, @@ -1722,7 +1722,7 @@ " 15974\n", " 1\n", " 0\n", - " 0\n", + " 1\n", " 0\n", " \n", " \n", @@ -1734,9 +1734,9 @@ " 40\n", " 960\n", " 73187\n", - " 3\n", + " 4\n", " 0\n", - " 2\n", + " 3\n", " 0\n", " \n", " \n", @@ -1748,9 +1748,9 @@ " 32\n", " 616\n", " 37620\n", - " 1\n", + " 3\n", + " 0\n", " 0\n", - " 1\n", " 0\n", " \n", " \n", @@ -1764,9 +1764,9 @@ "2 2 4 4 11 32 616 \n", "\n", " clauses enc.user enc.sys sat.user sat.sys \n", - "0 15974 1 0 0 0 \n", - "1 73187 3 0 2 0 \n", - "2 37620 1 0 1 0 " + "0 15974 1 0 1 0 \n", + "1 73187 4 0 3 0 \n", + "2 37620 3 0 0 0 " ] }, "metadata": {}, @@ -1907,7 +1907,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f45fde18360> >" + " *' at 0x7fe138b8ac30> >" ] }, "execution_count": 11, @@ -1977,9 +1977,9 @@ " 40\n", " 2300\n", " 288887\n", - " 13\n", - " 1\n", - " 12\n", + " 19\n", + " 0\n", + " 25\n", " 0\n", " \n", " \n", @@ -2021,7 +2021,7 @@ "2 2 1 NaN NaN NaN 92 \n", "\n", " clauses enc.user enc.sys sat.user sat.sys \n", - "0 288887 13 1 12 0 \n", + "0 288887 19 0 25 0 \n", "1 18569 1 0 1 0 \n", "2 2337 0 0 0 0 " ] @@ -2121,7 +2121,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f45fde18bd0> >" + " *' at 0x7fe138232f60> >" ] }, "execution_count": 12, @@ -2189,9 +2189,9 @@ " 40\n", " 2742\n", " 173183\n", - " 7\n", + " 9\n", " 0\n", - " 4\n", + " 7\n", " 0\n", " \n", " \n", @@ -2203,9 +2203,9 @@ " 32\n", " 964\n", " 45412\n", - " 3\n", - " 0\n", + " 2\n", " 0\n", + " 2\n", " 0\n", " \n", " \n", @@ -2217,7 +2217,7 @@ " NaN\n", " 363\n", " 10496\n", - " 0\n", + " 1\n", " 0\n", " 0\n", " 0\n", @@ -2233,9 +2233,9 @@ "2 4 3 NaN NaN NaN 363 \n", "\n", " clauses enc.user enc.sys sat.user sat.sys \n", - "0 173183 7 0 4 0 \n", - "1 45412 3 0 0 0 \n", - "2 10496 0 0 0 0 " + "0 173183 9 0 7 0 \n", + "1 45412 2 0 2 0 \n", + "2 10496 1 0 0 0 " ] }, "metadata": {}, @@ -2372,7 +2372,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f45fde18d20> >" + " *' at 0x7fe138b8a1b0> >" ] }, "execution_count": 13, @@ -2453,10 +2453,10 @@ " NaN\n", " 2747\n", " 173427\n", + " 8\n", + " 0\n", " 6\n", - " 0\n", - " 2\n", - " 0\n", + " 1\n", " \n", " \n", " 1\n", @@ -2469,7 +2469,7 @@ " 173427\n", " 0\n", " 0\n", - " 1\n", + " 2\n", " 0\n", " \n", " \n", @@ -2483,7 +2483,7 @@ " 173427\n", " 0\n", " 0\n", - " 0\n", + " 1\n", " 0\n", " \n", " \n", @@ -2497,9 +2497,9 @@ "2 6 4 4 12 32 2747 \n", "\n", " clauses enc.user enc.sys sat.user sat.sys \n", - "0 173427 6 0 2 0 \n", - "1 173427 0 0 1 0 \n", - "2 173427 0 0 0 0 " + "0 173427 8 0 6 1 \n", + "1 173427 0 0 2 0 \n", + "2 173427 0 0 1 0 " ] }, "metadata": {}, @@ -2643,7 +2643,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f45fde2a750> >" + " *' at 0x7fe120556e10> >" ] }, "execution_count": 14, @@ -2713,9 +2713,9 @@ " 40\n", " 2742\n", " 173183\n", - " 7\n", + " 9\n", " 0\n", - " 3\n", + " 6\n", " 0\n", " \n", " \n", @@ -2727,9 +2727,9 @@ " 32\n", " 2742\n", " 173279\n", - " 1\n", " 0\n", - " 1\n", + " 0\n", + " 2\n", " 0\n", " \n", " \n", @@ -2743,7 +2743,7 @@ " 173327\n", " 0\n", " 0\n", - " 0\n", + " 1\n", " 0\n", " \n", " \n", @@ -2757,9 +2757,9 @@ "2 4 3 NaN NaN NaN 2742 \n", "\n", " clauses enc.user enc.sys sat.user sat.sys \n", - "0 173183 7 0 3 0 \n", - "1 173279 1 0 1 0 \n", - "2 173327 0 0 0 0 " + "0 173183 9 0 6 0 \n", + "1 173279 0 0 2 0 \n", + "2 173327 0 0 1 0 " ] }, "metadata": {}, @@ -2903,7 +2903,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f45fde183f0> >" + " *' at 0x7fe138232bd0> >" ] }, "execution_count": 15, @@ -3069,7 +3069,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f45fde2ad80> >" + " *' at 0x7fe120556d50> >" ] }, "metadata": {}, @@ -3120,9 +3120,9 @@ " 40\n", " 2742\n", " 173183\n", - " 7\n", + " 9\n", " 0\n", - " 3\n", + " 7\n", " 0\n", " HOA: v1 States: 5 Start: 0 AP: 3 \"a\" \"c\" \"b\" a...\n", " \n", @@ -3137,7 +3137,7 @@ " 173279\n", " 0\n", " 0\n", - " 0\n", + " 2\n", " 0\n", " HOA: v1 States: 4 Start: 0 AP: 3 \"a\" \"c\" \"b\" a...\n", " \n", @@ -3167,8 +3167,8 @@ "2 4 3 NaN NaN NaN 2742 \n", "\n", " clauses enc.user enc.sys sat.user sat.sys \\\n", - "0 173183 7 0 3 0 \n", - "1 173279 0 0 0 0 \n", + "0 173183 9 0 7 0 \n", + "1 173279 0 0 2 0 \n", "2 173327 1 0 0 0 \n", "\n", " automaton \n", @@ -3357,7 +3357,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f45fddb33f0> >" + " *' at 0x7fe1205266c0> >" ] }, "metadata": {}, @@ -3508,7 +3508,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f45fddb3480> >" + " *' at 0x7fe120526cc0> >" ] }, "metadata": {}, @@ -3547,9 +3547,9 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "& | F G a F b F G c\n", "\n", "(Fin(\n", @@ -3740,7 +3740,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f461c46dab0> >" + " *' at 0x7fe1382323f0> >" ] }, "execution_count": 18, @@ -3808,7 +3808,7 @@ " NaN\n", " 687\n", " 21896\n", - " 1\n", + " 2\n", " 0\n", " 0\n", " 0\n", @@ -3822,9 +3822,9 @@ " 32\n", " 1905\n", " 100457\n", - " 4\n", - " 0\n", - " 3\n", + " 6\n", + " 1\n", + " 5\n", " 0\n", " \n", " \n", @@ -3837,8 +3837,8 @@ "1 6 5 4 12 32 1905 \n", "\n", " clauses enc.user enc.sys sat.user sat.sys \n", - "0 21896 1 0 0 0 \n", - "1 100457 4 0 3 0 " + "0 21896 2 0 0 0 \n", + "1 100457 6 1 5 0 " ] }, "metadata": {}, @@ -3853,8 +3853,8 @@ "\n", "\n", - "\n", + "\n", "\n", "\n", "Fin(\n", @@ -3982,7 +3982,7 @@ "\n" ], "text/plain": [ - " *' at 0x7f45fddb3ab0> >" + " *' at 0x7fe138b8aa50> >" ] }, "execution_count": 19, @@ -4044,9 +4044,9 @@ " 32\n", " 1220\n", " 51612\n", - " 2\n", + " 3\n", " 0\n", - " 1\n", + " 2\n", " 0\n", " \n", "
\n", @@ -4072,10 +4072,10 @@ " NaN\n", " 363\n", " 10496\n", + " 0\n", + " 0\n", " 1\n", " 0\n", - " 0\n", - " 0\n", "
\n", " \n", "\n", @@ -4088,9 +4088,9 @@ "2 4 3 NaN NaN NaN 363 \n", "\n", " clauses enc.user enc.sys sat.user sat.sys \n", - "0 51612 2 0 1 0 \n", + "0 51612 3 0 2 0 \n", "1 3129 0 0 0 0 \n", - "2 10496 1 0 0 0 " + "2 10496 0 0 1 0 " ] }, "metadata": {}, @@ -4234,7 +4234,7 @@ "
\n" ], "text/plain": [ - " *' at 0x7f45fddb3c30> >" + " *' at 0x7fe120526990> >" ] }, "execution_count": 20, @@ -4305,9 +4305,9 @@ " 56\n", " 1379\n", " 89168\n", - " 3\n", + " 5\n", " 0\n", - " 1\n", + " 4\n", " 0\n", " \n", " \n", @@ -4319,7 +4319,7 @@ "0 2 7 7 23 56 1379 \n", "\n", " clauses enc.user enc.sys sat.user sat.sys \n", - "0 89168 3 0 1 0 " + "0 89168 5 0 4 0 " ] }, "metadata": {}, @@ -4559,7 +4559,7 @@ "
\n" ], "text/plain": [ - " *' at 0x7f45fddb3750> >" + " *' at 0x7fe120556f00> >" ] }, "execution_count": 21, @@ -4588,7 +4588,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.2" + "version": "3.9.1+" } }, "nbformat": 4, diff --git a/tests/python/simstate.py b/tests/python/simstate.py index 8e5e1c712..1ca625d61 100644 --- a/tests/python/simstate.py +++ b/tests/python/simstate.py @@ -1,6 +1,6 @@ # -*- mode: python; coding: utf-8 -*- -# Copyright (C) 2015, 2017-2018, 2020 Laboratoire de Recherche et Développement -# de l'Epita +# Copyright (C) 2015, 2017-2018, 2020-2021 Laboratoire de Recherche +# et Développement de l'Epita # # This file is part of Spot, a model checking library. # @@ -185,6 +185,6 @@ properties: trans-labels explicit-labels trans-acc complete properties: deterministic stutter-invariant --BODY-- State: 0 "[1,7]" -[!1] 0 {0} [1] 0 +[!1] 0 {0} --END--"""