simulation: improve merging of transiant-SCCs
* spot/twaalgos/simulation.cc: Code this. * tests/core/det.test, tests/core/dra2dba.test, tests/core/satmin.test, tests/core/sim3.test, tests/python/decompose.ipynb, tests/python/dualize.py: Adjust test cases. * NEWS: Mention the optimization.
This commit is contained in:
parent
c9ddbd0a73
commit
f3e57901a4
8 changed files with 221 additions and 231 deletions
3
NEWS
3
NEWS
|
|
@ -45,6 +45,9 @@ New in spot 2.7.5.dev (not yet released)
|
||||||
'ltldo ltl2dstar -f 'GFa -> GFb' | autfilt --small' produces 1
|
'ltldo ltl2dstar -f 'GFa -> GFb' | autfilt --small' produces 1
|
||||||
state instead of 4.)
|
state instead of 4.)
|
||||||
|
|
||||||
|
- simulation-based reductions hae learned another trick to better
|
||||||
|
merge states from transiant SCCs.
|
||||||
|
|
||||||
- acc_cond::top_disjuncts() and acc_cond::top_conjuncts() can be
|
- acc_cond::top_disjuncts() and acc_cond::top_conjuncts() can be
|
||||||
used to split an acceptance condition on the top-level & or |.
|
used to split an acceptance condition on the top-level & or |.
|
||||||
These methods also exist in acc_cond::acc_code.
|
These methods also exist in acc_cond::acc_code.
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
|
#include <numeric>
|
||||||
#include <spot/twaalgos/simulation.hh>
|
#include <spot/twaalgos/simulation.hh>
|
||||||
#include <spot/misc/minato.hh>
|
#include <spot/misc/minato.hh>
|
||||||
#include <spot/twa/bddprint.hh>
|
#include <spot/twa/bddprint.hh>
|
||||||
|
|
@ -493,7 +494,7 @@ namespace spot
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build the minimal resulting automaton.
|
// Build the simplified automaton.
|
||||||
twa_graph_ptr build_result()
|
twa_graph_ptr build_result()
|
||||||
{
|
{
|
||||||
twa_graph_ptr res = make_twa_graph(a_->get_dict());
|
twa_graph_ptr res = make_twa_graph(a_->get_dict());
|
||||||
|
|
@ -526,6 +527,9 @@ namespace spot
|
||||||
(*record_implications_)[s] = relation_[cl];
|
(*record_implications_)[s] = relation_[cl];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::vector<bdd> signatures;
|
||||||
|
signatures.reserve(sorted_classes_.size());
|
||||||
|
|
||||||
// Acceptance of states. Only used if Sba && Cosimulation.
|
// Acceptance of states. Only used if Sba && Cosimulation.
|
||||||
std::vector<acc_cond::mark_t> accst;
|
std::vector<acc_cond::mark_t> accst;
|
||||||
if (Sba && Cosimulation)
|
if (Sba && Cosimulation)
|
||||||
|
|
@ -538,6 +542,7 @@ namespace spot
|
||||||
unsigned nb_minato = 0;
|
unsigned nb_minato = 0;
|
||||||
|
|
||||||
auto all_inf = all_inf_;
|
auto all_inf = all_inf_;
|
||||||
|
unsigned srcst = 0;
|
||||||
// For each class, we will create
|
// For each class, we will create
|
||||||
// all the edges between the states.
|
// all the edges between the states.
|
||||||
for (auto& p: sorted_classes_)
|
for (auto& p: sorted_classes_)
|
||||||
|
|
@ -552,7 +557,11 @@ namespace spot
|
||||||
if (Cosimulation)
|
if (Cosimulation)
|
||||||
sig = bdd_compose(sig, bddfalse, bdd_var(bdd_initial));
|
sig = bdd_compose(sig, bddfalse, bdd_var(bdd_initial));
|
||||||
|
|
||||||
// Get all the variable in the signature.
|
assert(gb->get_state(src.id()) == srcst);
|
||||||
|
assert(signatures.size() == srcst);
|
||||||
|
signatures.push_back(bdd_exist(sig, all_proms_));
|
||||||
|
|
||||||
|
// Get all the variables in the signature.
|
||||||
bdd sup_sig = bdd_support(sig);
|
bdd sup_sig = bdd_support(sig);
|
||||||
|
|
||||||
// Get the variable in the signature which represents the
|
// Get the variable in the signature which represents the
|
||||||
|
|
@ -607,7 +616,6 @@ namespace spot
|
||||||
// acceptance conditions on the input automaton,
|
// acceptance conditions on the input automaton,
|
||||||
// we must revert them to create a new edge.
|
// we must revert them to create a new edge.
|
||||||
acc ^= all_inf;
|
acc ^= all_inf;
|
||||||
|
|
||||||
if (Cosimulation)
|
if (Cosimulation)
|
||||||
{
|
{
|
||||||
if (Sba)
|
if (Sba)
|
||||||
|
|
@ -617,7 +625,7 @@ namespace spot
|
||||||
// to all edges leaving src. As we
|
// to all edges leaving src. As we
|
||||||
// can't do this here, store this in a table
|
// can't do this here, store this in a table
|
||||||
// so we can fix it later.
|
// so we can fix it later.
|
||||||
accst[gb->get_state(src.id())] = acc;
|
accst[srcst] = acc;
|
||||||
acc = {};
|
acc = {};
|
||||||
}
|
}
|
||||||
gb->new_edge(dst.id(), src.id(), cond, acc);
|
gb->new_edge(dst.id(), src.id(), cond, acc);
|
||||||
|
|
@ -628,6 +636,7 @@ namespace spot
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
++srcst;
|
||||||
}
|
}
|
||||||
|
|
||||||
res->set_init_state(gb->get_state(previous_class_
|
res->set_init_state(gb->get_state(previous_class_
|
||||||
|
|
@ -652,6 +661,41 @@ namespace spot
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Attempt to merge trivial SCCs
|
||||||
|
if (!record_implications_ && res->num_states() > 1)
|
||||||
|
{
|
||||||
|
scc_info si(res, scc_info_options::NONE);
|
||||||
|
unsigned nscc = si.scc_count();
|
||||||
|
unsigned nstates = res->num_states();
|
||||||
|
std::vector<unsigned> redirect(nstates);
|
||||||
|
std::iota(redirect.begin(), redirect.end(), 0);
|
||||||
|
bool changed = false;
|
||||||
|
for (unsigned scc = 0; scc < nscc; ++scc)
|
||||||
|
if (si.is_trivial(scc))
|
||||||
|
{
|
||||||
|
unsigned s = si.one_state_of(scc);
|
||||||
|
bdd ref = signatures[s];
|
||||||
|
for (unsigned i = 0; i < nstates; ++i)
|
||||||
|
if (si.reachable_state(i)
|
||||||
|
&& signatures[i] == ref && !si.is_trivial(si.scc_of(i)))
|
||||||
|
{
|
||||||
|
changed = true;
|
||||||
|
redirect[s] = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (changed)
|
||||||
|
{
|
||||||
|
if (Cosimulation)
|
||||||
|
for (auto& e: res->edges())
|
||||||
|
e.src = redirect[e.src];
|
||||||
|
else
|
||||||
|
for (auto& e: res->edges())
|
||||||
|
e.dst = redirect[e.dst];
|
||||||
|
res->set_init_state(redirect[res->get_init_state_number()]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// If we recorded implications for the determinization
|
// If we recorded implications for the determinization
|
||||||
// procedure, we should not remove unreachable states, as that
|
// procedure, we should not remove unreachable states, as that
|
||||||
// will invalidate the contents of the IMPLICATIONS vector.
|
// will invalidate the contents of the IMPLICATIONS vector.
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# Copyright (C) 2013-2018 Laboratoire de Recherche et Développement de
|
# Copyright (C) 2013-2019 Laboratoire de Recherche et Développement de
|
||||||
# l'Epita (LRDE).
|
# l'Epita (LRDE).
|
||||||
#
|
#
|
||||||
# This file is part of Spot, a model checking library.
|
# This file is part of Spot, a model checking library.
|
||||||
|
|
@ -24,17 +24,17 @@ set -e
|
||||||
cat >formulas <<'EOF'
|
cat >formulas <<'EOF'
|
||||||
1,13,X((a M F((!b & !c) | (b & c))) W (G!c U b))
|
1,13,X((a M F((!b & !c) | (b & c))) W (G!c U b))
|
||||||
1,5,X(((a & b) R (!a U !c)) R b)
|
1,5,X(((a & b) R (!a U !c)) R b)
|
||||||
1,9,XXG(Fa U Xb)
|
1,8,XXG(Fa U Xb)
|
||||||
1,5,(!a M !b) W F!c
|
1,5,(!a M !b) W F!c
|
||||||
1,3,(b & Fa & GFc) R a
|
1,3,(b & Fa & GFc) R a
|
||||||
1,2,(a R (b W a)) W G(!a M (b | c))
|
1,2,(a R (b W a)) W G(!a M (b | c))
|
||||||
1,11,(Fa W b) R (!a | Fc)
|
1,11,(Fa W b) R (!a | Fc)
|
||||||
1,7,X(G(!a M !b) | G(a | G!a))
|
1,6,X(G(!a M !b) | G(a | G!a))
|
||||||
1,2,Fa W Gb
|
1,2,Fa W Gb
|
||||||
1,3,Ga | GFb
|
1,2,Ga | GFb
|
||||||
1,9,G((G!a & ((!b & X!c) | (b & Xc))) | (Fa & ((!b & Xc) | (b & X!c))))
|
1,9,G((G!a & ((!b & X!c) | (b & Xc))) | (Fa & ((!b & Xc) | (b & X!c))))
|
||||||
1,5,a M G(F!b | X!a)
|
1,5,a M G(F!b | X!a)
|
||||||
1,4,G!a R XFb
|
1,3,G!a R XFb
|
||||||
1,4,XF(!a | GFb)
|
1,4,XF(!a | GFb)
|
||||||
1,5,X(GF!a U a)
|
1,5,X(GF!a U a)
|
||||||
1,5,(a | G(a M !b)) W Fc
|
1,5,(a | G(a M !b)) W Fc
|
||||||
|
|
@ -43,14 +43,14 @@ cat >formulas <<'EOF'
|
||||||
1,2,XG!a R Fb
|
1,2,XG!a R Fb
|
||||||
1,4,GFc | (a & Fb)
|
1,4,GFc | (a & Fb)
|
||||||
1,6,X(a R (Fb R F!b))
|
1,6,X(a R (Fb R F!b))
|
||||||
1,2,G(Xa M Fa)
|
1,1,G(Xa M Fa)
|
||||||
1,4,X(Gb | GFa)
|
1,3,X(Gb | GFa)
|
||||||
1,9,X(Gc | XG((b & Ga) | (!b & F!a)))
|
1,9,X(Gc | XG((b & Ga) | (!b & F!a)))
|
||||||
1,2,Ga R Fb
|
1,2,Ga R Fb
|
||||||
1,3,G(a U (b | X((!a & !c) | (a & c))))
|
1,3,G(a U (b | X((!a & !c) | (a & c))))
|
||||||
1,5,XG((G!a & F!b) | (Fa & (a | Gb)))
|
1,5,XG((G!a & F!b) | (Fa & (a | Gb)))
|
||||||
1,9,(a U X!a) | XG(!b & Fc)
|
1,7,(a U X!a) | XG(!b & Fc)
|
||||||
1,4,X(G!a | GFa)
|
1,3,X(G!a | GFa)
|
||||||
1,4,G(G!a | F!c | G!b)
|
1,4,G(G!a | F!c | G!b)
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -330,4 +330,5 @@ Acc-Sig: +2
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
autcross 'dstar2tgba -D' --language-preserved -F in.dra --csv=out.csv
|
autcross 'dstar2tgba -D' --language-preserved -F in.dra --csv=out.csv
|
||||||
grep '3,18,107,144,1,2,0,0,0$' out.csv
|
cat out.csv
|
||||||
|
grep '3,17,104,136,1,1,0,0,0$' out.csv
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# Copyright (C) 2013, 2017, 2018 Laboratoire de Recherche et Développement
|
# Copyright (C) 2013, 2017, 2018, 2019 Laboratoire de Recherche et Développement
|
||||||
# de l'Epita (LRDE).
|
# de l'Epita (LRDE).
|
||||||
#
|
#
|
||||||
# This file is part of Spot, a model checking library.
|
# This file is part of Spot, a model checking library.
|
||||||
|
|
@ -949,7 +949,7 @@ cat >expected <<'EOF'
|
||||||
"!(((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2)))))","16",4
|
"!(((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2)))))","16",4
|
||||||
"!(((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2)))))","17",4
|
"!(((p0) R ((p1) W (p0))) W (G((!(p0)) M ((p1) | (p2)))))","17",4
|
||||||
"X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0))))))","1",5
|
"X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0))))))","1",5
|
||||||
"X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0))))))","2",7
|
"X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0))))))","2",6
|
||||||
"X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0))))))","3",6
|
"X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0))))))","3",6
|
||||||
"X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0))))))","4",6
|
"X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0))))))","4",6
|
||||||
"X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0))))))","6",6
|
"X((G((!(p0)) M (!(p1)))) | (G((p0) | (G(!(p0))))))","6",6
|
||||||
|
|
@ -1013,7 +1013,7 @@ cat >expected <<'EOF'
|
||||||
"!((F(p0)) W (G(p1)))","16",2
|
"!((F(p0)) W (G(p1)))","16",2
|
||||||
"!((F(p0)) W (G(p1)))","17",2
|
"!((F(p0)) W (G(p1)))","17",2
|
||||||
"(G(F(p1))) | (G(p0))","1",3
|
"(G(F(p1))) | (G(p0))","1",3
|
||||||
"(G(F(p1))) | (G(p0))","2",3
|
"(G(F(p1))) | (G(p0))","2",2
|
||||||
"(G(F(p1))) | (G(p0))","3",2
|
"(G(F(p1))) | (G(p0))","3",2
|
||||||
"(G(F(p1))) | (G(p0))","4",2
|
"(G(F(p1))) | (G(p0))","4",2
|
||||||
"(G(F(p1))) | (G(p0))","6",2
|
"(G(F(p1))) | (G(p0))","6",2
|
||||||
|
|
@ -1076,8 +1076,8 @@ cat >expected <<'EOF'
|
||||||
"!((p0) M (G((F(!(p1))) | (X(!(p0))))))","15",4
|
"!((p0) M (G((F(!(p1))) | (X(!(p0))))))","15",4
|
||||||
"!((p0) M (G((F(!(p1))) | (X(!(p0))))))","16",4
|
"!((p0) M (G((F(!(p1))) | (X(!(p0))))))","16",4
|
||||||
"!((p0) M (G((F(!(p1))) | (X(!(p0))))))","17",4
|
"!((p0) M (G((F(!(p1))) | (X(!(p0))))))","17",4
|
||||||
"(G(!(p0))) R (X(F(p1)))","1",4
|
"(G(!(p0))) R (X(F(p1)))","1",3
|
||||||
"(G(!(p0))) R (X(F(p1)))","2",4
|
"(G(!(p0))) R (X(F(p1)))","2",3
|
||||||
"(G(!(p0))) R (X(F(p1)))","3",3
|
"(G(!(p0))) R (X(F(p1)))","3",3
|
||||||
"(G(!(p0))) R (X(F(p1)))","4",3
|
"(G(!(p0))) R (X(F(p1)))","4",3
|
||||||
"(G(!(p0))) R (X(F(p1)))","6",3
|
"(G(!(p0))) R (X(F(p1)))","6",3
|
||||||
|
|
@ -1333,7 +1333,7 @@ cat >expected <<'EOF'
|
||||||
"!(X((p0) R ((F(p1)) R (F(!(p1))))))","16",3
|
"!(X((p0) R ((F(p1)) R (F(!(p1))))))","16",3
|
||||||
"!(X((p0) R ((F(p1)) R (F(!(p1))))))","17",3
|
"!(X((p0) R ((F(p1)) R (F(!(p1))))))","17",3
|
||||||
"G((X(p0)) M (F(p0)))","1",2
|
"G((X(p0)) M (F(p0)))","1",2
|
||||||
"G((X(p0)) M (F(p0)))","2",2
|
"G((X(p0)) M (F(p0)))","2",1
|
||||||
"G((X(p0)) M (F(p0)))","3",1
|
"G((X(p0)) M (F(p0)))","3",1
|
||||||
"G((X(p0)) M (F(p0)))","4",1
|
"G((X(p0)) M (F(p0)))","4",1
|
||||||
"G((X(p0)) M (F(p0)))","6",1
|
"G((X(p0)) M (F(p0)))","6",1
|
||||||
|
|
@ -1365,7 +1365,7 @@ cat >expected <<'EOF'
|
||||||
"!(G((X(p0)) M (F(p0))))","16",2
|
"!(G((X(p0)) M (F(p0))))","16",2
|
||||||
"!(G((X(p0)) M (F(p0))))","17",2
|
"!(G((X(p0)) M (F(p0))))","17",2
|
||||||
"X((G(F(p1))) | (G(p0)))","1",4
|
"X((G(F(p1))) | (G(p0)))","1",4
|
||||||
"X((G(F(p1))) | (G(p0)))","2",4
|
"X((G(F(p1))) | (G(p0)))","2",3
|
||||||
"X((G(F(p1))) | (G(p0)))","3",3
|
"X((G(F(p1))) | (G(p0)))","3",3
|
||||||
"X((G(F(p1))) | (G(p0)))","4",3
|
"X((G(F(p1))) | (G(p0)))","4",3
|
||||||
"X((G(F(p1))) | (G(p0)))","6",3
|
"X((G(F(p1))) | (G(p0)))","6",3
|
||||||
|
|
@ -1493,7 +1493,7 @@ cat >expected <<'EOF'
|
||||||
"!(X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1)))))))","16",7
|
"!(X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1)))))))","16",7
|
||||||
"!(X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1)))))))","17",7
|
"!(X(G(((G(!(p0))) & (F(!(p1)))) | ((F(p0)) & ((p0) | (G(p1)))))))","17",7
|
||||||
"X((G(F(p0))) | (G(!(p0))))","1",4
|
"X((G(F(p0))) | (G(!(p0))))","1",4
|
||||||
"X((G(F(p0))) | (G(!(p0))))","2",4
|
"X((G(F(p0))) | (G(!(p0))))","2",3
|
||||||
"X((G(F(p0))) | (G(!(p0))))","3",3
|
"X((G(F(p0))) | (G(!(p0))))","3",3
|
||||||
"X((G(F(p0))) | (G(!(p0))))","4",3
|
"X((G(F(p0))) | (G(!(p0))))","4",3
|
||||||
"X((G(F(p0))) | (G(!(p0))))","6",3
|
"X((G(F(p0))) | (G(!(p0))))","6",3
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ State: 6 {0 3}
|
||||||
--END--
|
--END--
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
test "`autfilt --small input --stats=%S,%s`" = 7,2
|
test "`autfilt --small input --stats=%S,%s`" = 7,1
|
||||||
|
|
||||||
autfilt -S --high --small input -H > out
|
autfilt -S --high --small input -H > out
|
||||||
cat >expected <<EOF
|
cat >expected <<EOF
|
||||||
|
|
|
||||||
|
|
@ -200,7 +200,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d85c40f0> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c2eaf30> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 2,
|
"execution_count": 2,
|
||||||
|
|
@ -330,7 +330,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d85c40c0> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c2f7270> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 3,
|
"execution_count": 3,
|
||||||
|
|
@ -489,7 +489,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d860a060> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c2f70f0> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 4,
|
"execution_count": 4,
|
||||||
|
|
@ -587,7 +587,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d85c4120> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c2f7540> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 5,
|
"execution_count": 5,
|
||||||
|
|
@ -669,7 +669,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d8571690> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c2f7810> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 6,
|
"execution_count": 6,
|
||||||
|
|
@ -796,7 +796,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d8571360> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c2f7630> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -941,7 +941,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d860a240> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c2f7420> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -1109,7 +1109,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d862fed0> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c2f7a50> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -1512,7 +1512,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d8571540> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c283210> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 8,
|
"execution_count": 8,
|
||||||
|
|
@ -1942,7 +1942,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d85c4030> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c283360> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -2174,7 +2174,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d85c4150> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c2f7a50> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -2384,7 +2384,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d85bbfc0> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c2f7bd0> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -2772,7 +2772,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d8571a80> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c2838d0> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 10,
|
"execution_count": 10,
|
||||||
|
|
@ -2933,7 +2933,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d8571bd0> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c2f7450> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -3072,7 +3072,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d8571b10> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c2f7d50> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -3087,200 +3087,145 @@
|
||||||
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
|
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
|
||||||
" -->\n",
|
" -->\n",
|
||||||
"<!-- Title: strong Pages: 1 -->\n",
|
"<!-- Title: strong Pages: 1 -->\n",
|
||||||
"<svg width=\"734pt\" height=\"272pt\"\n",
|
"<svg width=\"712pt\" height=\"254pt\"\n",
|
||||||
" viewBox=\"0.00 0.00 734.00 272.33\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
|
" viewBox=\"0.00 0.00 712.36 254.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
|
||||||
"<g id=\"graph0\" class=\"graph\" transform=\"scale(.8105 .8105) rotate(0) translate(4 332)\">\n",
|
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 250)\">\n",
|
||||||
"<title>strong</title>\n",
|
"<title>strong</title>\n",
|
||||||
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-332 901.6224,-332 901.6224,4 -4,4\"/>\n",
|
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-250 708.3625,-250 708.3625,4 -4,4\"/>\n",
|
||||||
"<text text-anchor=\"start\" x=\"428.3112\" y=\"-313.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">strong</text>\n",
|
"<text text-anchor=\"start\" x=\"331.6812\" y=\"-231.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">strong</text>\n",
|
||||||
"<text text-anchor=\"start\" x=\"366.8112\" y=\"-299.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n",
|
"<text text-anchor=\"start\" x=\"270.1812\" y=\"-217.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n",
|
||||||
"<text text-anchor=\"start\" x=\"388.8112\" y=\"-299.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
"<text text-anchor=\"start\" x=\"292.1812\" y=\"-217.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
||||||
"<text text-anchor=\"start\" x=\"404.8112\" y=\"-299.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) | (Fin(</text>\n",
|
"<text text-anchor=\"start\" x=\"308.1812\" y=\"-217.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) | (Fin(</text>\n",
|
||||||
"<text text-anchor=\"start\" x=\"447.8112\" y=\"-299.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
|
"<text text-anchor=\"start\" x=\"351.1812\" y=\"-217.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
|
||||||
"<text text-anchor=\"start\" x=\"463.8112\" y=\"-299.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) & Inf(</text>\n",
|
"<text text-anchor=\"start\" x=\"367.1812\" y=\"-217.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) & Inf(</text>\n",
|
||||||
"<text text-anchor=\"start\" x=\"506.8112\" y=\"-299.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
|
"<text text-anchor=\"start\" x=\"410.1812\" y=\"-217.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
|
||||||
"<text text-anchor=\"start\" x=\"522.8112\" y=\"-299.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">))</text>\n",
|
"<text text-anchor=\"start\" x=\"426.1812\" y=\"-217.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">))</text>\n",
|
||||||
"<text text-anchor=\"start\" x=\"388.8112\" y=\"-285.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[parity min even 3]</text>\n",
|
"<text text-anchor=\"start\" x=\"292.1812\" y=\"-203.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[parity min even 3]</text>\n",
|
||||||
"<g id=\"clust1\" class=\"cluster\">\n",
|
"<g id=\"clust1\" class=\"cluster\">\n",
|
||||||
"<title>cluster_0</title>\n",
|
"<title>cluster_0</title>\n",
|
||||||
"<polygon fill=\"none\" stroke=\"#00ff00\" points=\"284,-38 284,-243 889.6224,-243 889.6224,-38 284,-38\"/>\n",
|
"<polygon fill=\"none\" stroke=\"#00ff00\" points=\"168,-20 168,-188 696.3625,-188 696.3625,-20 168,-20\"/>\n",
|
||||||
"</g>\n",
|
"</g>\n",
|
||||||
"<g id=\"clust2\" class=\"cluster\">\n",
|
"<g id=\"clust2\" class=\"cluster\">\n",
|
||||||
"<title>cluster_1</title>\n",
|
"<title>cluster_1</title>\n",
|
||||||
"<polygon fill=\"none\" stroke=\"#000000\" points=\"170,-156 170,-208 222,-208 222,-156 170,-156\"/>\n",
|
"<polygon fill=\"none\" stroke=\"#000000\" points=\"30,-8 30,-60 82,-60 82,-8 30,-8\"/>\n",
|
||||||
"</g>\n",
|
|
||||||
"<g id=\"clust3\" class=\"cluster\">\n",
|
|
||||||
"<title>cluster_2</title>\n",
|
|
||||||
"<polygon fill=\"none\" stroke=\"#000000\" points=\"170,-43 170,-95 222,-95 222,-43 170,-43\"/>\n",
|
|
||||||
"</g>\n",
|
|
||||||
"<g id=\"clust4\" class=\"cluster\">\n",
|
|
||||||
"<title>cluster_3</title>\n",
|
|
||||||
"<polygon fill=\"none\" stroke=\"#000000\" points=\"30,-105 30,-157 82,-157 82,-105 30,-105\"/>\n",
|
|
||||||
"</g>\n",
|
"</g>\n",
|
||||||
"<!-- I -->\n",
|
"<!-- I -->\n",
|
||||||
"<!-- 0 -->\n",
|
"<!-- 0 -->\n",
|
||||||
"<g id=\"node2\" class=\"node\">\n",
|
"<g id=\"node2\" class=\"node\">\n",
|
||||||
"<title>0</title>\n",
|
"<title>0</title>\n",
|
||||||
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-131\" rx=\"18\" ry=\"18\"/>\n",
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-34\" rx=\"18\" ry=\"18\"/>\n",
|
||||||
"<text text-anchor=\"middle\" x=\"56\" y=\"-127.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
|
"<text text-anchor=\"middle\" x=\"56\" y=\"-30.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
|
||||||
"</g>\n",
|
"</g>\n",
|
||||||
"<!-- I->0 -->\n",
|
"<!-- I->0 -->\n",
|
||||||
"<g id=\"edge1\" class=\"edge\">\n",
|
"<g id=\"edge1\" class=\"edge\">\n",
|
||||||
"<title>I->0</title>\n",
|
"<title>I->0</title>\n",
|
||||||
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-131C4.178,-131 17.9448,-131 30.9241,-131\"/>\n",
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-34C4.178,-34 17.9448,-34 30.9241,-34\"/>\n",
|
||||||
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-131 30.9808,-134.1501 34.4807,-131 30.9807,-131.0001 30.9807,-131.0001 30.9807,-131.0001 34.4807,-131 30.9807,-127.8501 37.9807,-131 37.9807,-131\"/>\n",
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-34 30.9808,-37.1501 34.4807,-34 30.9807,-34.0001 30.9807,-34.0001 30.9807,-34.0001 34.4807,-34 30.9807,-30.8501 37.9807,-34 37.9807,-34\"/>\n",
|
||||||
"</g>\n",
|
|
||||||
"<!-- 3 -->\n",
|
|
||||||
"<g id=\"node3\" class=\"node\">\n",
|
|
||||||
"<title>3</title>\n",
|
|
||||||
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"325.9411\" cy=\"-135\" rx=\"33.8824\" ry=\"33.8824\"/>\n",
|
|
||||||
"<text text-anchor=\"start\" x=\"321.4411\" y=\"-138.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
|
|
||||||
"<text text-anchor=\"start\" x=\"309.9411\" y=\"-124.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
||||||
"<text text-anchor=\"start\" x=\"325.9411\" y=\"-124.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
|
|
||||||
"</g>\n",
|
|
||||||
"<!-- 0->3 -->\n",
|
|
||||||
"<g id=\"edge4\" class=\"edge\">\n",
|
|
||||||
"<title>0->3</title>\n",
|
|
||||||
"<path fill=\"none\" stroke=\"#000000\" d=\"M74.1308,-131.2687C116.9555,-131.9032 225.2462,-133.5079 284.9198,-134.3921\"/>\n",
|
|
||||||
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"291.9484,-134.4963 284.9024,-137.5421 288.4488,-134.4444 284.9491,-134.3925 284.9491,-134.3925 284.9491,-134.3925 288.4488,-134.4444 284.9959,-131.2428 291.9484,-134.4963 291.9484,-134.4963\"/>\n",
|
|
||||||
"<text text-anchor=\"start\" x=\"176\" y=\"-136.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a & !c</text>\n",
|
|
||||||
"</g>\n",
|
|
||||||
"<!-- 1 -->\n",
|
|
||||||
"<g id=\"node6\" class=\"node\">\n",
|
|
||||||
"<title>1</title>\n",
|
|
||||||
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"196\" cy=\"-182\" rx=\"18\" ry=\"18\"/>\n",
|
|
||||||
"<text text-anchor=\"middle\" x=\"196\" y=\"-178.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
||||||
"</g>\n",
|
|
||||||
"<!-- 0->1 -->\n",
|
|
||||||
"<g id=\"edge2\" class=\"edge\">\n",
|
|
||||||
"<title>0->1</title>\n",
|
|
||||||
"<path fill=\"none\" stroke=\"#000000\" d=\"M72.8108,-137.6541C78.8474,-140.0126 85.7153,-142.6606 92,-145 119.2701,-155.151 150.7769,-166.2765 171.9016,-173.6496\"/>\n",
|
|
||||||
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"178.6466,-175.9994 170.9999,-176.6711 175.3414,-174.8479 172.0362,-173.6964 172.0362,-173.6964 172.0362,-173.6964 175.3414,-174.8479 173.0726,-170.7218 178.6466,-175.9994 178.6466,-175.9994\"/>\n",
|
|
||||||
"<text text-anchor=\"start\" x=\"92\" y=\"-171.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !b & !c</text>\n",
|
|
||||||
"</g>\n",
|
"</g>\n",
|
||||||
"<!-- 2 -->\n",
|
"<!-- 2 -->\n",
|
||||||
"<g id=\"node7\" class=\"node\">\n",
|
"<g id=\"node3\" class=\"node\">\n",
|
||||||
"<title>2</title>\n",
|
"<title>2</title>\n",
|
||||||
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"196\" cy=\"-69\" rx=\"18\" ry=\"18\"/>\n",
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"202.8701\" cy=\"-107\" rx=\"26.7407\" ry=\"26.7407\"/>\n",
|
||||||
"<text text-anchor=\"middle\" x=\"196\" y=\"-65.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
|
"<text text-anchor=\"start\" x=\"198.3701\" y=\"-110.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
|
||||||
|
"<text text-anchor=\"start\" x=\"194.8701\" y=\"-95.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
|
||||||
"</g>\n",
|
"</g>\n",
|
||||||
"<!-- 0->2 -->\n",
|
"<!-- 0->2 -->\n",
|
||||||
"<g id=\"edge3\" class=\"edge\">\n",
|
"<g id=\"edge2\" class=\"edge\">\n",
|
||||||
"<title>0->2</title>\n",
|
"<title>0->2</title>\n",
|
||||||
"<path fill=\"none\" stroke=\"#000000\" d=\"M69.1644,-118.4178C75.6369,-112.7707 83.7975,-106.4035 92,-102 117.491,-88.3152 149.5844,-79.2132 171.3283,-74.0967\"/>\n",
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M72.2788,-42.0912C96.3033,-54.0323 141.6869,-76.5897 172.1084,-91.7103\"/>\n",
|
||||||
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"178.2811,-72.5135 172.1552,-77.1391 174.8685,-73.2906 171.4558,-74.0677 171.4558,-74.0677 171.4558,-74.0677 174.8685,-73.2906 170.7564,-70.9964 178.2811,-72.5135 178.2811,-72.5135\"/>\n",
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"178.7383,-95.0056 171.0678,-94.7107 175.6041,-93.4477 172.4699,-91.8899 172.4699,-91.8899 172.4699,-91.8899 175.6041,-93.4477 173.8719,-89.0691 178.7383,-95.0056 178.7383,-95.0056\"/>\n",
|
||||||
"<text text-anchor=\"start\" x=\"94\" y=\"-105.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & b & !c</text>\n",
|
"<text text-anchor=\"start\" x=\"92\" y=\"-86.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !b & !c</text>\n",
|
||||||
"</g>\n",
|
"</g>\n",
|
||||||
"<!-- 3->3 -->\n",
|
"<!-- 1 -->\n",
|
||||||
"<g id=\"edge10\" class=\"edge\">\n",
|
|
||||||
"<title>3->3</title>\n",
|
|
||||||
"<path fill=\"none\" stroke=\"#000000\" d=\"M312.8289,-166.4426C312.547,-177.7348 316.9177,-186.9411 325.9411,-186.9411 332.9907,-186.9411 337.2005,-181.322 338.5704,-173.4791\"/>\n",
|
|
||||||
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"339.0533,-166.4426 341.7166,-173.6419 338.8136,-169.9344 338.574,-173.4262 338.574,-173.4262 338.574,-173.4262 338.8136,-169.9344 335.4314,-173.2105 339.0533,-166.4426 339.0533,-166.4426\"/>\n",
|
|
||||||
"<text text-anchor=\"start\" x=\"305.9411\" y=\"-190.7411\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a & !c</text>\n",
|
|
||||||
"</g>\n",
|
|
||||||
"<!-- 4 -->\n",
|
|
||||||
"<g id=\"node4\" class=\"node\">\n",
|
"<g id=\"node4\" class=\"node\">\n",
|
||||||
"<title>4</title>\n",
|
"<title>1</title>\n",
|
||||||
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"854.7523\" cy=\"-169\" rx=\"26.7407\" ry=\"26.7407\"/>\n",
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"464.6812\" cy=\"-62\" rx=\"33.8824\" ry=\"33.8824\"/>\n",
|
||||||
"<text text-anchor=\"start\" x=\"850.2523\" y=\"-172.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">4</text>\n",
|
"<text text-anchor=\"start\" x=\"460.1812\" y=\"-65.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
||||||
"<text text-anchor=\"start\" x=\"846.7523\" y=\"-157.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
|
"<text text-anchor=\"start\" x=\"448.6812\" y=\"-51.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
||||||
|
"<text text-anchor=\"start\" x=\"464.6812\" y=\"-51.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
|
||||||
"</g>\n",
|
"</g>\n",
|
||||||
"<!-- 3->4 -->\n",
|
"<!-- 0->1 -->\n",
|
||||||
"<g id=\"edge11\" class=\"edge\">\n",
|
"<g id=\"edge3\" class=\"edge\">\n",
|
||||||
"<title>3->4</title>\n",
|
"<title>0->1</title>\n",
|
||||||
"<path fill=\"none\" stroke=\"#000000\" d=\"M351.1932,-158.0022C381.5398,-183.1753 435.1204,-220 488.8823,-220 488.8823,-220 488.8823,-220 757.8823,-220 784.0082,-220 810.007,-205.2955 828.4824,-191.678\"/>\n",
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M74.0878,-35.2393C135.391,-39.4393 336.3157,-53.2053 423.5963,-59.1851\"/>\n",
|
||||||
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"834.4489,-187.1243 830.7955,-193.8753 831.6667,-189.2478 828.8844,-191.3712 828.8844,-191.3712 828.8844,-191.3712 831.6667,-189.2478 826.9733,-188.8672 834.4489,-187.1243 834.4489,-187.1243\"/>\n",
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"430.6823,-59.6706 423.4833,-62.3347 427.1905,-59.4313 423.6987,-59.1921 423.6987,-59.1921 423.6987,-59.1921 427.1905,-59.4313 423.914,-56.0494 430.6823,-59.6706 430.6823,-59.6706\"/>\n",
|
||||||
"<text text-anchor=\"start\" x=\"621.8823\" y=\"-223.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !b & !c</text>\n",
|
"<text text-anchor=\"start\" x=\"247.7401\" y=\"-54.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & b & !c</text>\n",
|
||||||
"</g>\n",
|
"</g>\n",
|
||||||
"<!-- 5 -->\n",
|
"<!-- 0->1 -->\n",
|
||||||
|
"<g id=\"edge4\" class=\"edge\">\n",
|
||||||
|
"<title>0->1</title>\n",
|
||||||
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M73.9107,-31.9661C115.4814,-27.5964 221.6867,-18.4524 309.7401,-28 349.4483,-32.3055 393.8939,-42.6451 424.9646,-50.7999\"/>\n",
|
||||||
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"431.7769,-52.6091 424.2029,-53.8567 428.3942,-51.7107 425.0115,-50.8123 425.0115,-50.8123 425.0115,-50.8123 428.3942,-51.7107 425.82,-47.7678 431.7769,-52.6091 431.7769,-52.6091\"/>\n",
|
||||||
|
"<text text-anchor=\"start\" x=\"258.7401\" y=\"-31.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a & !c</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- 2->2 -->\n",
|
||||||
|
"<g id=\"edge9\" class=\"edge\">\n",
|
||||||
|
"<title>2->2</title>\n",
|
||||||
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M189.3338,-130.5464C187.6627,-141.8722 192.1747,-151.8701 202.8701,-151.8701 211.2258,-151.8701 215.8075,-145.7678 216.6154,-137.6976\"/>\n",
|
||||||
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"216.4063,-130.5464 219.7596,-137.4513 216.5086,-134.0449 216.611,-137.5434 216.611,-137.5434 216.611,-137.5434 216.5086,-134.0449 213.4623,-137.6355 216.4063,-130.5464 216.4063,-130.5464\"/>\n",
|
||||||
|
"<text text-anchor=\"start\" x=\"184.8701\" y=\"-155.6701\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !c</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- 2->1 -->\n",
|
||||||
|
"<g id=\"edge8\" class=\"edge\">\n",
|
||||||
|
"<title>2->1</title>\n",
|
||||||
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M229.0569,-100.6806C254.2385,-94.76 293.4306,-85.9538 327.7401,-80 359.8381,-74.43 396.4358,-69.7024 423.717,-66.4919\"/>\n",
|
||||||
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"430.7976,-65.668 424.2087,-69.606 427.3211,-66.0726 423.8446,-66.4771 423.8446,-66.4771 423.8446,-66.4771 427.3211,-66.0726 423.4805,-63.3482 430.7976,-65.668 430.7976,-65.668\"/>\n",
|
||||||
|
"<text text-anchor=\"start\" x=\"340.7401\" y=\"-83.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a & !c</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- 1->2 -->\n",
|
||||||
|
"<g id=\"edge6\" class=\"edge\">\n",
|
||||||
|
"<title>1->2</title>\n",
|
||||||
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M436.1813,-80.5247C423.6748,-87.6659 408.5011,-95.0524 393.7401,-99 340.4231,-113.2587 275.7721,-112.3607 237.0501,-109.9856\"/>\n",
|
||||||
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"229.6624,-109.495 236.8558,-106.8159 233.1547,-109.7269 236.647,-109.9589 236.647,-109.9589 236.647,-109.9589 233.1547,-109.7269 236.4382,-113.102 229.6624,-109.495 229.6624,-109.495\"/>\n",
|
||||||
|
"<text text-anchor=\"start\" x=\"327.7401\" y=\"-112.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !b & !c</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- 1->1 -->\n",
|
||||||
|
"<g id=\"edge5\" class=\"edge\">\n",
|
||||||
|
"<title>1->1</title>\n",
|
||||||
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M454.9318,-94.7164C454.9822,-105.419 458.232,-113.9411 464.6812,-113.9411 469.6189,-113.9411 472.6812,-108.9456 473.868,-101.8007\"/>\n",
|
||||||
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"474.4306,-94.7164 477.0164,-101.9439 474.1535,-98.2054 473.8763,-101.6944 473.8763,-101.6944 473.8763,-101.6944 474.1535,-98.2054 470.7362,-101.445 474.4306,-94.7164 474.4306,-94.7164\"/>\n",
|
||||||
|
"<text text-anchor=\"start\" x=\"444.6812\" y=\"-117.7411\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a & !c</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- 3 -->\n",
|
||||||
"<g id=\"node5\" class=\"node\">\n",
|
"<g id=\"node5\" class=\"node\">\n",
|
||||||
"<title>5</title>\n",
|
"<title>3</title>\n",
|
||||||
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"654.8823\" cy=\"-73\" rx=\"26.7407\" ry=\"26.7407\"/>\n",
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"661.4924\" cy=\"-113\" rx=\"26.7407\" ry=\"26.7407\"/>\n",
|
||||||
"<text text-anchor=\"start\" x=\"650.3823\" y=\"-76.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">5</text>\n",
|
"<text text-anchor=\"start\" x=\"656.9924\" y=\"-116.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
|
||||||
"<text text-anchor=\"start\" x=\"646.8823\" y=\"-61.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
|
"<text text-anchor=\"start\" x=\"653.4924\" y=\"-101.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
|
||||||
"</g>\n",
|
|
||||||
"<!-- 3->5 -->\n",
|
|
||||||
"<g id=\"edge12\" class=\"edge\">\n",
|
|
||||||
"<title>3->5</title>\n",
|
|
||||||
"<path fill=\"none\" stroke=\"#000000\" d=\"M358.4194,-124.4483C384.9285,-116.187 423.4901,-104.9651 457.8823,-98 514.5038,-86.533 581.407,-79.3664 620.8715,-75.7835\"/>\n",
|
|
||||||
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"627.9123,-75.1559 621.2197,-78.915 624.4262,-75.4667 620.94,-75.7775 620.94,-75.7775 620.94,-75.7775 624.4262,-75.4667 620.6603,-72.6399 627.9123,-75.1559 627.9123,-75.1559\"/>\n",
|
|
||||||
"<text text-anchor=\"start\" x=\"457.8823\" y=\"-101.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & b & !c</text>\n",
|
|
||||||
"</g>\n",
|
|
||||||
"<!-- 4->3 -->\n",
|
|
||||||
"<g id=\"edge13\" class=\"edge\">\n",
|
|
||||||
"<title>4->3</title>\n",
|
|
||||||
"<path fill=\"none\" stroke=\"#000000\" d=\"M827.6113,-169C808.1909,-169 781.4271,-169 757.8823,-169 488.8823,-169 488.8823,-169 488.8823,-169 445.8512,-169 397.7501,-157.4963 365.0365,-147.8717\"/>\n",
|
|
||||||
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"358.2967,-145.8513 365.9064,-144.8441 361.6493,-146.8564 365.0019,-147.8614 365.0019,-147.8614 365.0019,-147.8614 361.6493,-146.8564 364.0973,-150.8788 358.2967,-145.8513 358.2967,-145.8513\"/>\n",
|
|
||||||
"<text text-anchor=\"start\" x=\"634.8823\" y=\"-172.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a & !c</text>\n",
|
|
||||||
"</g>\n",
|
|
||||||
"<!-- 4->4 -->\n",
|
|
||||||
"<g id=\"edge14\" class=\"edge\">\n",
|
|
||||||
"<title>4->4</title>\n",
|
|
||||||
"<path fill=\"none\" stroke=\"#000000\" d=\"M846.5527,-194.8213C846.0894,-205.1776 848.8226,-213.8701 854.7523,-213.8701 859.1996,-213.8701 861.8488,-208.9805 862.7001,-202.1667\"/>\n",
|
|
||||||
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"862.952,-194.8213 865.8601,-201.9252 862.832,-198.3193 862.712,-201.8172 862.712,-201.8172 862.712,-201.8172 862.832,-198.3193 859.5638,-201.7092 862.952,-194.8213 862.952,-194.8213\"/>\n",
|
|
||||||
"<text text-anchor=\"start\" x=\"836.7523\" y=\"-217.6701\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !c</text>\n",
|
|
||||||
"</g>\n",
|
|
||||||
"<!-- 5->3 -->\n",
|
|
||||||
"<g id=\"edge15\" class=\"edge\">\n",
|
|
||||||
"<title>5->3</title>\n",
|
|
||||||
"<path fill=\"none\" stroke=\"#000000\" d=\"M629.3409,-82.0285C602.4421,-91.1899 558.6893,-105.113 519.8823,-113 467.6753,-123.6103 406.4473,-129.4858 366.9679,-132.4403\"/>\n",
|
|
||||||
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"359.8564,-132.9585 366.6089,-129.308 363.3471,-132.7041 366.8379,-132.4497 366.8379,-132.4497 366.8379,-132.4497 363.3471,-132.7041 367.0668,-135.5914 359.8564,-132.9585 359.8564,-132.9585\"/>\n",
|
|
||||||
"<text text-anchor=\"start\" x=\"468.8823\" y=\"-126.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a & !c</text>\n",
|
|
||||||
"</g>\n",
|
|
||||||
"<!-- 5->4 -->\n",
|
|
||||||
"<g id=\"edge16\" class=\"edge\">\n",
|
|
||||||
"<title>5->4</title>\n",
|
|
||||||
"<path fill=\"none\" stroke=\"#000000\" d=\"M679.3902,-84.7715C715.7514,-102.2362 783.9629,-134.999 823.7489,-154.1087\"/>\n",
|
|
||||||
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"830.3568,-157.2825 822.683,-157.0912 827.2018,-155.7672 824.0469,-154.2518 824.0469,-154.2518 824.0469,-154.2518 827.2018,-155.7672 825.4107,-151.4123 830.3568,-157.2825 830.3568,-157.2825\"/>\n",
|
|
||||||
"<text text-anchor=\"start\" x=\"724.8823\" y=\"-141.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !b & !c</text>\n",
|
|
||||||
"</g>\n",
|
|
||||||
"<!-- 5->5 -->\n",
|
|
||||||
"<g id=\"edge17\" class=\"edge\">\n",
|
|
||||||
"<title>5->5</title>\n",
|
|
||||||
"<path fill=\"none\" stroke=\"#000000\" d=\"M645.5896,-98.37C644.9488,-108.9238 648.0463,-117.8701 654.8823,-117.8701 660.116,-117.8701 663.1584,-112.6259 664.0094,-105.4312\"/>\n",
|
|
||||||
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"664.1749,-98.37 667.1599,-105.4419 664.0928,-101.869 664.0108,-105.3681 664.0108,-105.3681 664.0108,-105.3681 664.0928,-101.869 660.8616,-105.2943 664.1749,-98.37 664.1749,-98.37\"/>\n",
|
|
||||||
"<text text-anchor=\"start\" x=\"623.8823\" y=\"-121.6701\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & b & !c</text>\n",
|
|
||||||
"</g>\n",
|
"</g>\n",
|
||||||
"<!-- 1->3 -->\n",
|
"<!-- 1->3 -->\n",
|
||||||
"<g id=\"edge5\" class=\"edge\">\n",
|
|
||||||
"<title>1->3</title>\n",
|
|
||||||
"<path fill=\"none\" stroke=\"#000000\" d=\"M212.9875,-175.8556C231.7261,-169.0778 262.4965,-157.9481 287.1928,-149.0154\"/>\n",
|
|
||||||
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"293.9823,-146.5596 288.4711,-151.9028 290.691,-147.7501 287.3997,-148.9406 287.3997,-148.9406 287.3997,-148.9406 290.691,-147.7501 286.3282,-145.9784 293.9823,-146.5596 293.9823,-146.5596\"/>\n",
|
|
||||||
"<text text-anchor=\"start\" x=\"234\" y=\"-171.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a & !c</text>\n",
|
|
||||||
"</g>\n",
|
|
||||||
"<!-- 1->4 -->\n",
|
|
||||||
"<g id=\"edge6\" class=\"edge\">\n",
|
|
||||||
"<title>1->4</title>\n",
|
|
||||||
"<path fill=\"none\" stroke=\"#000000\" d=\"M207.7184,-195.7405C228.8167,-218.8502 275.6987,-263 325.9411,-263 325.9411,-263 325.9411,-263 757.8823,-263 794.9805,-263 823.2403,-227.0535 839.4061,-199.6186\"/>\n",
|
|
||||||
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"843.0592,-193.2073 842.3305,-200.8488 841.3264,-196.2483 839.5936,-199.2893 839.5936,-199.2893 839.5936,-199.2893 841.3264,-196.2483 836.8567,-197.7298 843.0592,-193.2073 843.0592,-193.2073\"/>\n",
|
|
||||||
"<text text-anchor=\"start\" x=\"552.8823\" y=\"-266.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !c</text>\n",
|
|
||||||
"</g>\n",
|
|
||||||
"<!-- 2->3 -->\n",
|
|
||||||
"<g id=\"edge7\" class=\"edge\">\n",
|
"<g id=\"edge7\" class=\"edge\">\n",
|
||||||
"<title>2->3</title>\n",
|
"<title>1->3</title>\n",
|
||||||
"<path fill=\"none\" stroke=\"#000000\" d=\"M213.1089,-75.2945C229.1664,-81.4211 253.6874,-91.3444 274,-102 279.7667,-105.0251 285.7319,-108.4805 291.4742,-111.9897\"/>\n",
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M498.8191,-61.7046C526.1661,-62.3835 565.1856,-65.4308 597.6224,-76 610.0484,-80.0489 622.7104,-86.7439 633.4483,-93.3341\"/>\n",
|
||||||
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"297.5977,-115.8009 289.9902,-114.7764 294.6262,-113.9515 291.6547,-112.102 291.6547,-112.102 291.6547,-112.102 294.6262,-113.9515 293.3192,-109.4277 297.5977,-115.8009 297.5977,-115.8009\"/>\n",
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"639.5319,-97.1814 631.932,-96.1022 636.5738,-95.3106 633.6157,-93.4399 633.6157,-93.4399 633.6157,-93.4399 636.5738,-95.3106 635.2993,-90.7776 639.5319,-97.1814 639.5319,-97.1814\"/>\n",
|
||||||
"<text text-anchor=\"start\" x=\"234\" y=\"-105.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a & !c</text>\n",
|
"<text text-anchor=\"start\" x=\"535.6224\" y=\"-79.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & b & !c</text>\n",
|
||||||
"</g>\n",
|
"</g>\n",
|
||||||
"<!-- 2->4 -->\n",
|
"<!-- 3->2 -->\n",
|
||||||
"<g id=\"edge8\" class=\"edge\">\n",
|
"<g id=\"edge11\" class=\"edge\">\n",
|
||||||
"<title>2->4</title>\n",
|
"<title>3->2</title>\n",
|
||||||
"<path fill=\"none\" stroke=\"#000000\" d=\"M209.1767,-56.3443C231.3646,-36.4246 278.4321,0 325.9411,0 325.9411,0 325.9411,0 757.8823,0 819.6088,0 842.5588,-85.9101 850.6479,-135.2255\"/>\n",
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M641.7336,-131.4797C623.6336,-146.426 595.3594,-165 566.6224,-165 360.7401,-165 360.7401,-165 360.7401,-165 313.4437,-165 262.7963,-141.78 231.9734,-124.7239\"/>\n",
|
||||||
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"851.7364,-142.2214 847.5476,-135.789 851.1982,-138.7631 850.6601,-135.3047 850.6601,-135.3047 850.6601,-135.3047 851.1982,-138.7631 853.7727,-134.8204 851.7364,-142.2214 851.7364,-142.2214\"/>\n",
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"225.7053,-121.1884 233.3499,-121.8838 228.7538,-122.9079 231.8023,-124.6274 231.8023,-124.6274 231.8023,-124.6274 228.7538,-122.9079 230.2548,-127.3711 225.7053,-121.1884 225.7053,-121.1884\"/>\n",
|
||||||
"<text text-anchor=\"start\" x=\"537.8823\" y=\"-3.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !b & !c</text>\n",
|
"<text text-anchor=\"start\" x=\"431.6812\" y=\"-168.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !b & !c</text>\n",
|
||||||
"</g>\n",
|
"</g>\n",
|
||||||
"<!-- 2->5 -->\n",
|
"<!-- 3->1 -->\n",
|
||||||
"<g id=\"edge9\" class=\"edge\">\n",
|
"<g id=\"edge10\" class=\"edge\">\n",
|
||||||
"<title>2->5</title>\n",
|
"<title>3->1</title>\n",
|
||||||
"<path fill=\"none\" stroke=\"#000000\" d=\"M214.2719,-69.1593C283.4106,-69.7619 529.6825,-71.9087 620.7266,-72.7023\"/>\n",
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M634.5945,-110.0009C608.8483,-106.7331 569.0891,-100.6434 535.6224,-91 524.5051,-87.7966 512.7557,-83.4236 502.086,-79.0452\"/>\n",
|
||||||
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"627.7753,-72.7637 620.748,-75.8525 624.2754,-72.7332 620.7755,-72.7026 620.7755,-72.7026 620.7755,-72.7026 624.2754,-72.7332 620.803,-69.5527 627.7753,-72.7637 627.7753,-72.7637\"/>\n",
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"495.5975,-76.3287 503.2709,-76.1264 498.826,-77.6803 502.0544,-79.032 502.0544,-79.032 502.0544,-79.032 498.826,-77.6803 500.8379,-81.9376 495.5975,-76.3287 495.5975,-76.3287\"/>\n",
|
||||||
"<text text-anchor=\"start\" x=\"377.8823\" y=\"-74.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & b & !c</text>\n",
|
"<text text-anchor=\"start\" x=\"546.6224\" y=\"-107.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a & !c</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- 3->3 -->\n",
|
||||||
|
"<g id=\"edge12\" class=\"edge\">\n",
|
||||||
|
"<title>3->3</title>\n",
|
||||||
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M653.2928,-138.8213C652.8295,-149.1776 655.5627,-157.8701 661.4924,-157.8701 665.9397,-157.8701 668.5889,-152.9805 669.4402,-146.1667\"/>\n",
|
||||||
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"669.6921,-138.8213 672.6002,-145.9252 669.5721,-142.3193 669.4521,-145.8172 669.4521,-145.8172 669.4521,-145.8172 669.5721,-142.3193 666.3039,-145.7092 669.6921,-138.8213 669.6921,-138.8213\"/>\n",
|
||||||
|
"<text text-anchor=\"start\" x=\"630.4924\" y=\"-161.6701\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & b & !c</text>\n",
|
||||||
"</g>\n",
|
"</g>\n",
|
||||||
"</g>\n",
|
"</g>\n",
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d8571630> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c2f7930> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -3633,7 +3578,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d8571ab0> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c2ea960> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 12,
|
"execution_count": 12,
|
||||||
|
|
@ -4016,7 +3961,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d85719c0> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c2ea7e0> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -4193,7 +4138,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d8571630> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c2f7900> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -4351,7 +4296,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d85715d0> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c2f7600> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -4700,7 +4645,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d857d8d0> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c2eafc0> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 14,
|
"execution_count": 14,
|
||||||
|
|
@ -4823,7 +4768,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d850d7e0> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c283b70> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 15,
|
"execution_count": 15,
|
||||||
|
|
@ -4921,7 +4866,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d8571bd0> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c283810> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -4997,7 +4942,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d8571bd0> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c283810> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -5091,7 +5036,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d850d720> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c2922d0> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 18,
|
"execution_count": 18,
|
||||||
|
|
@ -5241,7 +5186,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d850d780> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c292270> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 19,
|
"execution_count": 19,
|
||||||
|
|
@ -5401,7 +5346,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d850dd80> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c2eadb0> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -5503,7 +5448,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d85715d0> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c3302d0> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -5638,7 +5583,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d850d090> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c330270> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -5842,7 +5787,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d85c4060> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c2f77b0> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -5983,7 +5928,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d860a240> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c2f7a50> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 21,
|
"execution_count": 21,
|
||||||
|
|
@ -6086,7 +6031,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd3d850d8d0> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6b8c2f7b70> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 22,
|
"execution_count": 22,
|
||||||
|
|
@ -6115,7 +6060,7 @@
|
||||||
"name": "python",
|
"name": "python",
|
||||||
"nbconvert_exporter": "python",
|
"nbconvert_exporter": "python",
|
||||||
"pygments_lexer": "ipython3",
|
"pygments_lexer": "ipython3",
|
||||||
"version": "3.6.6+"
|
"version": "3.7.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nbformat": 4,
|
"nbformat": 4,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
# -*- mode: python; coding: utf-8 -*-
|
# -*- mode: python; coding: utf-8 -*-
|
||||||
# Copyright (C) 2017, 2018 Laboratoire de Recherche et Développement de
|
# Copyright (C) 2017-2019 Laboratoire de Recherche et Développement de
|
||||||
# l'EPITA.
|
# l'EPITA.
|
||||||
#
|
#
|
||||||
# This file is part of Spot, a model checking library.
|
# This file is part of Spot, a model checking library.
|
||||||
|
|
@ -553,7 +553,7 @@ dual = spot.dualize(aut)
|
||||||
h = dual.to_str('hoa')
|
h = dual.to_str('hoa')
|
||||||
|
|
||||||
assert h == """HOA: v1
|
assert h == """HOA: v1
|
||||||
States: 6
|
States: 5
|
||||||
Start: 0
|
Start: 0
|
||||||
AP: 2 "a" "b"
|
AP: 2 "a" "b"
|
||||||
acc-name: co-Buchi
|
acc-name: co-Buchi
|
||||||
|
|
@ -561,27 +561,24 @@ Acceptance: 1 Fin(0)
|
||||||
properties: trans-labels explicit-labels state-acc complete
|
properties: trans-labels explicit-labels state-acc complete
|
||||||
properties: deterministic univ-branch
|
properties: deterministic univ-branch
|
||||||
--BODY--
|
--BODY--
|
||||||
State: 0
|
State: 0 {0}
|
||||||
[0] 1
|
[0&1] 0
|
||||||
[!0] 1&2
|
[0&!1] 1
|
||||||
State: 1 {0}
|
[!0&!1] 1&2
|
||||||
[0&1] 1
|
[!0&1] 0&2
|
||||||
[0&!1] 4
|
State: 1
|
||||||
[!0&!1] 2&4
|
[0&1] 0
|
||||||
[!0&1] 1&2
|
[0&!1] 1
|
||||||
|
[!0&!1] 1&2
|
||||||
|
[!0&1] 0&2
|
||||||
State: 2
|
State: 2
|
||||||
[!0&1] 3
|
[!0&1] 3
|
||||||
[0 | !1] 5
|
[0 | !1] 4
|
||||||
State: 3 {0}
|
State: 3 {0}
|
||||||
[!0] 3
|
[!0] 3
|
||||||
[0] 5
|
[0] 4
|
||||||
State: 4
|
State: 4
|
||||||
[0&1] 1
|
[t] 4
|
||||||
[0&!1] 4
|
|
||||||
[!0&!1] 2&4
|
|
||||||
[!0&1] 1&2
|
|
||||||
State: 5
|
|
||||||
[t] 5
|
|
||||||
--END--"""
|
--END--"""
|
||||||
|
|
||||||
opts = spot.option_map()
|
opts = spot.option_map()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue