simplify: GF(f)=GF(dnf(f)) FG(f)=FG(cnf(f))

These rules come from Delag's paper, and help some cases
in issue #385.

* spot/tl/simplify.cc: Implement the simplification.
* doc/tl/tl.tex, NEWS: Document it.
* tests/core/385.test: New file.
* tests/Makefile.am: Add it.
* tests/core/reduccmp.test: More tests.
* tests/core/ltl2tgba2.test: Adjust one improved case.
* tests/python/automata.ipynb, tests/python/twagraph-internals.ipynb:
Adjust expected output, as the cnf/dnf reorder some subformulas.
This commit is contained in:
Alexandre Duret-Lutz 2019-06-17 00:19:02 +02:00
parent df326e032b
commit da5d23f0a2
9 changed files with 2517 additions and 2291 deletions

4
NEWS
View file

@ -105,9 +105,11 @@ New in spot 2.7.5.dev (not yet released)
- The LTL simplifier learned the following optional rules: - The LTL simplifier learned the following optional rules:
F(G(a | Fb)) = FGa | GFb (if option "favor_event_univ") F(G(a | Fb)) = FGa | GFb (if option "favor_event_univ")
G(F(a | Gb)) = GFa | FGb (if option "favor_event_univ") G(F(a | Gb)) = GFa | FGb (if option "favor_event_univ")
F(G(a & Fb) = FGa & GFb (unless option "reduce_size_strictly") F(G(a & Fb) = FGa & GFb (unless option "reduce_size_strictly")
G(F(a & Gb)) = GFa & FGb (unless option "reduce_size_strictly") G(F(a & Gb)) = GFa & FGb (unless option "reduce_size_strictly")
GF(f) = GF(dnf(f)) (unless option "reduce_size_strictly")
FG(f) = FG(cnf(f)) (unless option "reduce_size_strictly")
- cleanup_parity() and colorize_parity() were cleaned up a bit, - cleanup_parity() and colorize_parity() were cleaned up a bit,
resulting in fewer colors used in some cases. In particular, resulting in fewer colors used in some cases. In particular,

View file

@ -116,7 +116,7 @@
\newcommand{\nsereMarked}[1]{\texttt{!+\{}#1\texttt{\}}} \newcommand{\nsereMarked}[1]{\texttt{!+\{}#1\texttt{\}}}
\newcommand{\seren}[1]{\texttt{\{}#1\texttt{\}!}} \newcommand{\seren}[1]{\texttt{\{}#1\texttt{\}!}}
% rewriting rules that enlarge the formula % rewriting rules that (may) enlarge the formula
\newcommand{\equiV}{\stackrel{\star}{\equiv}} \newcommand{\equiV}{\stackrel{\star}{\equiv}}
% rewriting rules that favors event/univ % rewriting rules that favors event/univ
\newcommand{\equivEU}{\stackrel{\blacktriangleup}{\equiv}} \newcommand{\equivEU}{\stackrel{\blacktriangleup}{\equiv}}
@ -1463,15 +1463,19 @@ instead of $\equiv$, and they can be disabled by setting the
\label{sec:basic-simp-ltl} \label{sec:basic-simp-ltl}
The following are simplification rules for unary operators (applied The following are simplification rules for unary operators (applied
from left to right, as usual): from left to right, as usual). The terms $\mathsf{dnf}(f)$ and
$\mathsf{cnf}(f)$ denote respectively the disjunctive and conjunctive
normal forms if $f$, handling non-Boolean sub-formulas as if they were
atomic propositions.
\begin{align*} \begin{align*}
\X\F\G f & \equiv \F\G f & \F(f\U g) & \equiv \F g & \G(f \R g) & \equiv \G g \\ \X\F\G f & \equiv \F\G f & \F(f\U g) & \equiv \F g & \G(f \R g) & \equiv \G g \\
\X\G\F f & \equiv \G\F f & \F(f\M g) & \equiv \F (f\AND g) & \G(f \W g) & \equiv \G(f\OR g) \\ \X\G\F f & \equiv \G\F f & \F(f\M g) & \equiv \F (f\AND g) & \G(f \W g) & \equiv \G(f\OR g) \\
\F\X f & \equiv \X\F f & \F\G(f\AND \X g) & \equiv \F\G(f\AND g) & \G\F(f\OR \X g) & \equiv \G\F(f\OR g) \\ \F\X f & \equiv \X\F f & \F\G(f\AND \X g) & \equiv \F\G(f\AND g) & \G\F(f\OR \X g) & \equiv \G\F(f\OR g) \\
\G\X f & \equiv \X\G f & \F\G(f\AND \G g) & \equiv \F\G(f\AND g) & \G\F(f\OR \F g) & \equiv \G\F(f\OR g) \\ \G\X f & \equiv \X\G f & \F\G(f\AND \G g) & \equiv \F\G(f\AND g) & \G\F(f\OR \F g) & \equiv \G\F(f\OR g) \\
& & \F\G(f\OR\G g) & \equiv \F(\G f\OR\G g) & \G\F(f\AND\F g) & \equiv \G(\F f\AND\F g) \\ & & \F\G(f\OR\G g) & \equiv \F(\G f\OR\G g) & \G\F(f\AND\F g) & \equiv \G(\F f\AND\F g) \\
& & \F\G(f\AND\F g) & \equiV \F\G f\AND\G\F g & \G\F(f\AND\G g) & \equiV \G\F f\AND\F\G g \\ \G\F f & \equiV \G\F(\mathsf{dnf}(f)) & \F\G(f\AND\F g) & \equiV \F\G f\AND\G\F g & \G\F(f\AND\G g) & \equiV \G\F f\AND\F\G g \\
& & \F\G(f\OR\F g) & \equivEU \F\G f\OR\G\F g & \G\F(f\OR\G g) & \equivEU \G\F f\OR\F\G g \F\G f & \equiV \F\G(\mathsf{cnf}(f)) & \F\G(f\OR\F g) & \equivEU \F\G f\OR\G\F g & \G\F(f\OR\G g) & \equivEU \G\F f\OR\F\G g
\end{align*} \end{align*}
\begin{align*} \begin{align*}
\G(f_1\OR\ldots\OR f_n \OR \G\F(g_1)\OR\ldots\OR \G\F(g_m)) & \equiv \G(f_1\OR\ldots\OR f_n)\OR \G\F(g_1\OR\ldots\OR g_m) \G(f_1\OR\ldots\OR f_n \OR \G\F(g_1)\OR\ldots\OR \G\F(g_m)) & \equiv \G(f_1\OR\ldots\OR f_n)\OR \G\F(g_1\OR\ldots\OR g_m)

View file

@ -33,6 +33,7 @@
#include <spot/tl/snf.hh> #include <spot/tl/snf.hh>
#include <spot/tl/length.hh> #include <spot/tl/length.hh>
#include <spot/twa/formula2bdd.hh> #include <spot/twa/formula2bdd.hh>
#include <spot/misc/minato.hh>
#include <cassert> #include <cassert>
#include <memory> #include <memory>
@ -45,6 +46,7 @@ namespace spot
{ {
typedef std::unordered_map<formula, formula> f2f_map; typedef std::unordered_map<formula, formula> f2f_map;
typedef std::unordered_map<formula, bdd> f2b_map; typedef std::unordered_map<formula, bdd> f2b_map;
typedef std::map<int, formula> b2f_map;
typedef std::pair<formula, formula> pairf; typedef std::pair<formula, formula> pairf;
typedef std::map<pairf, bool> syntimpl_cache_t; typedef std::map<pairf, bool> syntimpl_cache_t;
public: public:
@ -78,13 +80,18 @@ namespace spot
<< "syntactic implications: " << syntimpl_.size() << " entries\n" << "syntactic implications: " << syntimpl_.size() << " entries\n"
<< "boolean to bdd: " << as_bdd_.size() << " entries\n" << "boolean to bdd: " << as_bdd_.size() << " entries\n"
<< "star normal form: " << snf_cache_.size() << " entries\n" << "star normal form: " << snf_cache_.size() << " entries\n"
<< "boolean isop: " << bool_isop_.size() << " entries\n"; << "boolean isop: " << bool_isop_.size() << " entries\n"
<< "as dnf: " << as_dnf_.size() << " entries\n"
<< "as cnf: " << as_cnf_.size() << " entries\n";
} }
void void
clear_as_bdd_cache() clear_as_bdd_cache()
{ {
as_bdd_.clear(); as_bdd_.clear();
for (auto p: bdd_to_f_)
dict->unregister_variable(p.first, this);
bdd_to_f_.clear();
} }
// Convert a Boolean formula into a BDD for easier comparison. // Convert a Boolean formula into a BDD for easier comparison.
@ -136,7 +143,12 @@ namespace spot
break; break;
} }
default: default:
SPOT_UNIMPLEMENTED(); {
unsigned var = dict->register_anonymous_variables(1, this);
bdd_to_f_[var] = f;
result = bdd_ithvar(var);
break;
}
} }
// Cache the result before returning. // Cache the result before returning.
@ -144,6 +156,83 @@ namespace spot
return result; return result;
} }
formula as_xnf(formula f, bool cnf)
{
bdd in = as_bdd(f);
if (cnf)
in = !in;
minato_isop isop(in);
bdd cube;
vec clauses;
while ((cube = isop.next()) != bddfalse)
{
vec literals;
while (cube != bddtrue)
{
int var = bdd_var(cube);
const bdd_dict::bdd_info& i = dict->bdd_map[var];
formula res;
if (i.type == bdd_dict::var)
{
res = i.f;
}
else
{
res = bdd_to_f_[var];
assert(res);
}
bdd high = bdd_high(cube);
if (high == bddfalse)
{
if (!cnf)
res = formula::Not(res);
cube = bdd_low(cube);
}
else
{
if (cnf)
res = formula::Not(res);
// If bdd_low is not false, then cube was not a
// conjunction.
assert(bdd_low(cube) == bddfalse);
cube = high;
}
assert(cube != bddfalse);
literals.emplace_back(res);
}
if (cnf)
clauses.emplace_back(formula::Or(literals));
else
clauses.emplace_back(formula::And(literals));
}
if (cnf)
return formula::And(clauses);
else
return formula::Or(clauses);
}
formula as_dnf(formula f)
{
auto i = as_dnf_.find(f);
if (i != as_dnf_.end())
return i->second;
formula r = as_xnf(f, false);
as_dnf_[f] = r;
return r;
}
formula as_cnf(formula f)
{
auto i = as_cnf_.find(f);
if (i != as_cnf_.end())
return i->second;
formula r = as_xnf(f, true);
as_cnf_[f] = r;
return r;
}
formula formula
lookup_nenoform(formula f) lookup_nenoform(formula f)
{ {
@ -303,7 +392,10 @@ namespace spot
private: private:
f2b_map as_bdd_; f2b_map as_bdd_;
b2f_map bdd_to_f_;
f2f_map simplified_; f2f_map simplified_;
f2f_map as_dnf_;
f2f_map as_cnf_;
f2f_map nenoform_; f2f_map nenoform_;
syntimpl_cache_t syntimpl_; syntimpl_cache_t syntimpl_;
snf_cache snf_cache_; snf_cache snf_cache_;
@ -987,22 +1079,32 @@ namespace spot
return recurse(res); return recurse(res);
} }
// FG(a & Xb) = FG(a & b) // FG(a) = FG(dnf(a)) if a is not Boolean
// FG(a & Gb) = FG(a & b) // and contains some | above non-Boolean subformulas.
if (c.is({op::G, op::And})) if (c.is(op::G) && !c[0].is_boolean())
{ {
formula m = c[0]; formula m = c[0];
if (!m.is_boolean()) bool want_cnf = m.is(op::And);
{ if (!want_cnf && m.is(op::Or))
formula out = m.map([](formula f) for (auto cc : m)
{ if (cc.is(op::And))
if (f.is(op::X, op::G)) {
return f[0]; want_cnf = true;
return f; break;
}); }
if (out != m) if (want_cnf && !opt_.reduce_size_strictly)
return recurse(unop_unop(op::F, op::G, out)); m = c_->as_cnf(m);
} // FG(a & Xb) = FG(a & b)
// FG(a & Gb) = FG(a & b)
if (m.is(op::And))
m = m.map([](formula f)
{
if (f.is(op::X, op::G))
return f[0];
return f;
});
if (c[0] != m)
return recurse(unop_unop(op::F, op::G, m));
} }
} }
// if Fa => a, keep a. // if Fa => a, keep a.
@ -1248,22 +1350,33 @@ namespace spot
return recurse(res); return recurse(res);
} }
// GF(a | Xb) = GF(a | b)
// GF(a | Fb) = GF(a | b) // GF(a) = GF(dnf(a)) if a is not Boolean
if (c.is({op::F, op::Or})) // and contains some | above non-Boolean subformulas.
if (c.is(op::F) && !c[0].is_boolean())
{ {
formula m = c[0]; formula m = c[0];
if (!m.is_boolean()) bool want_dnf = m.is(op::Or);
{ if (!want_dnf && m.is(op::And))
formula out = m.map([](formula f) for (auto cc : m)
{ if (cc.is(op::Or))
if (f.is(op::X, op::F)) {
return f[0]; want_dnf = true;
return f; break;
}); }
if (out != m) if (want_dnf && !opt_.reduce_size_strictly)
return recurse(unop_unop(op::G, op::F, out)); m = c_->as_dnf(m);
} // GF(a | Xb) = GF(a | b)
// GF(a | Fb) = GF(a | b)
if (m.is(op::Or))
m = m.map([](formula f)
{
if (f.is(op::X, op::F))
return f[0];
return f;
});
if (c[0] != m)
return recurse(unop_unop(op::G, op::F, m));
} }
// GF(f1 & f2 & eu1 & eu2) = G(F(f1 & f2) & eu1 & eu2 // GF(f1 & f2 & eu1 & eu2) = G(F(f1 & f2) & eu1 & eu2
if (opt_.event_univ && c.is({op::F, op::And})) if (opt_.event_univ && c.is({op::F, op::And}))

View file

@ -208,6 +208,7 @@ TESTS_misc = \
core/trival.test core/trival.test
TESTS_twa = \ TESTS_twa = \
core/385.test \
core/acc.test \ core/acc.test \
core/acc2.test \ core/acc2.test \
core/bdddict.test \ core/bdddict.test \

45
tests/core/385.test Executable file
View file

@ -0,0 +1,45 @@
#!/bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2019 Laboratoire de Recherche et Développement de
# l'Epita (LRDE).
#
# This file is part of Spot, a model checking library.
#
# Spot is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Spot is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
# License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
. ./defs
set -e
# Formulas from issue #385.
ltl2tgba -G --stats=%s,%f> out <<EOF
GFX((e & XXXa) -> (e & X!d))
G(Gc | Fa | F!G(c | Ge))
Ge | XGF(Ge & X(c & Fd))
G!GXXe -> GF(b & c & Gc)
G!(Gd & (c | Fb))
XF(F(Gc & Xb) -> a)
EOF
# Some of the following are still not optimal.
cat >expected <<EOF
1,GF(!a | !d | !e)
6,G(Gc | F(a | (!c & F!e)))
2,Ge | G(Fd & FGe & Fc)
1,F(G(Fb & FGc) | Ge)
4,G(F!d | (!c & G!b))
3,F(GF!c | G!b) | XFa
EOF
diff out expected

View file

@ -369,7 +369,7 @@ diff output expected
cat >formulas <<EOF cat >formulas <<EOF
GF((a & XXa) | (!a & XX!a)), 4,8, 4,8, 6,14, 7,14, 4,8 GF((a & XXa) | (!a & XX!a)), 4,8, 4,8, 6,14, 7,14, 4,8
GF((a & XXXa) | (!a & XXX!a)), 7,14, 8,16, 8,18, 15,30, 8,16 GF((a & XXXa) | (!a & XXX!a)), 7,14, 8,16, 8,18, 15,30, 8,16
GF(((a & Xb) | XXc) & Xd), 4,64, 4,64, 5,80, 5,80, 4,64 GF(((a & Xb) | XXc) & Xd), 3,58, 4,64, 3,58, 5,80, 4,64
GF((b | Fa) & (b R Xb)), 2,4, 2,4, 3,6, 3,12, 2,4 GF((b | Fa) & (b R Xb)), 2,4, 2,4, 3,6, 3,12, 2,4
G(F(a & Xa) & F(a & X!a)), 2,4, 2,4, 4,8, 4,8, 3,6 G(F(a & Xa) & F(a & X!a)), 2,4, 2,4, 4,8, 4,8, 3,6
G(!p0 & F(p1 & XG!p1)), 1,0, 1,0, 1,0, 1,0, 1,0 G(!p0 & F(p1 & XG!p1)), 1,0, 1,0, 1,0, 1,0, 1,0

View file

@ -346,6 +346,8 @@ F(G(a & Fb)), G(Fb & FGa)
G(F(a & Gb)), G(Fa & FGb) G(F(a & Gb)), G(Fa & FGb)
Ge | XGF(Ge & X(c & Fd)), Ge | G(Fd & FGe & Fc) Ge | XGF(Ge & X(c & Fd)), Ge | G(Fd & FGe & Fc)
G!GXXe -> GF(b & c & Gc), F(G(Fb & FGc) | Ge) G!GXXe -> GF(b & c & Gc), F(G(Fb & FGc) | Ge)
GFX((e & XXXa) -> (e & X!d)), GF(!a | !d | !e)
!GFX((e & XXXa) -> (e & X!d)), FG(a & d & e)
# Because reduccmp will translate the formula, # Because reduccmp will translate the formula,
# this also check for an old bug in ltl2tgba_fm. # this also check for an old bug in ltl2tgba_fm.

View file

@ -178,7 +178,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0d1c0b2de0> >" "<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f5a6034a960> >"
] ]
}, },
"execution_count": 2, "execution_count": 2,
@ -643,7 +643,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0d1c02c930> >" "<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f5a60301210> >"
] ]
}, },
"execution_count": 6, "execution_count": 6,
@ -719,7 +719,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0d1c02c960> >" "<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f5a60301bd0> >"
] ]
}, },
"execution_count": 7, "execution_count": 7,
@ -802,7 +802,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0d1c02ca80> >" "<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f5a60301690> >"
] ]
}, },
"execution_count": 8, "execution_count": 8,
@ -1321,7 +1321,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0d1c03ec90> >" "<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f5a603010c0> >"
] ]
}, },
"execution_count": 12, "execution_count": 12,
@ -1435,7 +1435,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0d1c03edb0> >" "<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f5a60301090> >"
] ]
}, },
"execution_count": 13, "execution_count": 13,
@ -1566,7 +1566,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0d1c03ecf0> >" "<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f5a60301c90> >"
] ]
}, },
"execution_count": 14, "execution_count": 14,
@ -1785,7 +1785,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0d077c1540> >" "<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f5a6030f4b0> >"
] ]
}, },
"metadata": {}, "metadata": {},
@ -1935,7 +1935,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0d1c02c630> >" "<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f5a60392630> >"
] ]
}, },
"metadata": {}, "metadata": {},
@ -2107,7 +2107,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0d077c1780> >" "<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f5a6030f930> >"
] ]
}, },
"metadata": {}, "metadata": {},
@ -2282,7 +2282,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0d077c1660> >" "<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f5a6030f870> >"
] ]
}, },
"metadata": {}, "metadata": {},
@ -2468,7 +2468,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0d077c1810> >" "<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f5a6030fbd0> >"
] ]
}, },
"execution_count": 19, "execution_count": 19,
@ -2544,7 +2544,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0d077c1930> >" "<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f5a6030f150> >"
] ]
}, },
"execution_count": 20, "execution_count": 20,
@ -2616,7 +2616,7 @@
"<title>0-&gt;0</title>\n", "<title>0-&gt;0</title>\n",
"<path d=\"M49.6208,-37.4339C48.3189,-47.2545 50.4453,-56.3966 56,-56.3966 60.166,-56.3966 62.4036,-51.2542 62.7128,-44.5399\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M49.6208,-37.4339C48.3189,-47.2545 50.4453,-56.3966 56,-56.3966 60.166,-56.3966 62.4036,-51.2542 62.7128,-44.5399\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"62.3792,-37.4339 65.8541,-44.2785 62.5434,-40.9301 62.7076,-44.4262 62.7076,-44.4262 62.7076,-44.4262 62.5434,-40.9301 59.561,-44.574 62.3792,-37.4339 62.3792,-37.4339\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"62.3792,-37.4339 65.8541,-44.2785 62.5434,-40.9301 62.7076,-44.4262 62.7076,-44.4262 62.7076,-44.4262 62.5434,-40.9301 59.561,-44.574 62.3792,-37.4339 62.3792,-37.4339\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"52.5\" y=\"-75.1966\">a</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"50.5\" y=\"-75.1966\">!a</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"48\" y=\"-60.1966\">⓿</text>\n", "<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"48\" y=\"-60.1966\">⓿</text>\n",
"</g>\n", "</g>\n",
"<!-- 1 -->\n", "<!-- 1 -->\n",
@ -2630,21 +2630,21 @@
"<title>0-&gt;1</title>\n", "<title>0-&gt;1</title>\n",
"<path d=\"M74.0098,-20.3966C85.5679,-20.3966 100.7507,-20.3966 113.5345,-20.3966\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M74.0098,-20.3966C85.5679,-20.3966 100.7507,-20.3966 113.5345,-20.3966\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"120.7388,-20.3966 113.7388,-23.5467 117.2388,-20.3967 113.7388,-20.3967 113.7388,-20.3967 113.7388,-20.3967 117.2388,-20.3967 113.7387,-17.2467 120.7388,-20.3966 120.7388,-20.3966\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"120.7388,-20.3966 113.7388,-23.5467 117.2388,-20.3967 113.7388,-20.3967 113.7388,-20.3967 113.7388,-20.3967 117.2388,-20.3967 113.7387,-17.2467 120.7388,-20.3966 120.7388,-20.3966\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-24.1966\">!a</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"94\" y=\"-24.1966\">a</text>\n",
"</g>\n", "</g>\n",
"<!-- 1&#45;&gt;0 -->\n", "<!-- 1&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge4\">\n", "<g class=\"edge\" id=\"edge4\">\n",
"<title>1-&gt;0</title>\n", "<title>1-&gt;0</title>\n",
"<path d=\"M124.5385,-9.3757C115.4203,-3.7422 103.2768,1.3966 92,-1.3966 87.1146,-2.6067 82.1612,-4.614 77.5558,-6.8813\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M124.5385,-9.3757C115.4203,-3.7422 103.2768,1.3966 92,-1.3966 87.1146,-2.6067 82.1612,-4.614 77.5558,-6.8813\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"71.1057,-10.3266 75.7959,-4.25 74.1929,-8.6776 77.2801,-7.0285 77.2801,-7.0285 77.2801,-7.0285 74.1929,-8.6776 78.7642,-9.807 71.1057,-10.3266 71.1057,-10.3266\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"71.1057,-10.3266 75.7959,-4.25 74.1929,-8.6776 77.2801,-7.0285 77.2801,-7.0285 77.2801,-7.0285 74.1929,-8.6776 78.7642,-9.807 71.1057,-10.3266 71.1057,-10.3266\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"94\" y=\"-5.1966\">a</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-5.1966\">!a</text>\n",
"</g>\n", "</g>\n",
"<!-- 1&#45;&gt;1 -->\n", "<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge5\">\n", "<g class=\"edge\" id=\"edge5\">\n",
"<title>1-&gt;1</title>\n", "<title>1-&gt;1</title>\n",
"<path d=\"M131.9688,-37.0607C130.4063,-47.0216 132.75,-56.3966 139,-56.3966 143.6875,-56.3966 146.1777,-51.1232 146.4707,-44.2842\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M131.9688,-37.0607C130.4063,-47.0216 132.75,-56.3966 139,-56.3966 143.6875,-56.3966 146.1777,-51.1232 146.4707,-44.2842\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"146.0313,-37.0607 149.6006,-43.8564 146.2438,-40.5542 146.4564,-44.0478 146.4564,-44.0478 146.4564,-44.0478 146.2438,-40.5542 143.3122,-44.2391 146.0313,-37.0607 146.0313,-37.0607\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"146.0313,-37.0607 149.6006,-43.8564 146.2438,-40.5542 146.4564,-44.0478 146.4564,-44.0478 146.4564,-44.0478 146.2438,-40.5542 143.3122,-44.2391 146.0313,-37.0607 146.0313,-37.0607\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"133.5\" y=\"-75.1966\">!a</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"135.5\" y=\"-75.1966\">a</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"131\" y=\"-60.1966\">⓿</text>\n", "<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"131\" y=\"-60.1966\">⓿</text>\n",
"</g>\n", "</g>\n",
"</g>\n", "</g>\n",
@ -2716,257 +2716,316 @@
{ {
"data": { "data": {
"text/html": [ "text/html": [
"<div style='vertical-align:text-top;display:inline-block;width:50%;'><svg height=\"244pt\" viewBox=\"0.00 0.00 354.00 244.00\" width=\"354pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", "<div style='vertical-align:text-top;display:inline-block;width:50%;'><svg height=\"279pt\" viewBox=\"0.00 0.00 484.00 279.06\" width=\"484pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 240)\">\n", "<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 275.0638)\">\n",
"<polygon fill=\"#ffffff\" points=\"-4,4 -4,-240 350,-240 350,4 -4,4\" stroke=\"transparent\"/>\n", "<polygon fill=\"#ffffff\" points=\"-4,4 -4,-275.0638 480,-275.0638 480,4 -4,4\" stroke=\"transparent\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"126\" y=\"-221.8\">Inf(</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"191\" y=\"-256.8638\">Inf(</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"148\" y=\"-221.8\">⓿</text>\n", "<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"213\" y=\"-256.8638\">⓿</text>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"164\" y=\"-221.8\">)&amp;Inf(</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"229\" y=\"-256.8638\">)&amp;Inf(</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"200\" y=\"-221.8\">❶</text>\n", "<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"265\" y=\"-256.8638\">❶</text>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"216\" y=\"-221.8\">)</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"281\" y=\"-256.8638\">)</text>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"129\" y=\"-207.8\">[gen. Büchi 2]</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"194\" y=\"-242.8638\">[gen. Büchi 2]</text>\n",
"<!-- I -->\n", "<!-- I -->\n",
"<!-- 0 -->\n", "<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\">\n", "<g class=\"node\" id=\"node2\">\n",
"<title>0</title>\n", "<title>0</title>\n",
"<ellipse cx=\"65\" cy=\"-18\" fill=\"#ffffaa\" rx=\"27\" ry=\"18\" stroke=\"#000000\"/>\n", "<ellipse cx=\"65\" cy=\"-29.0638\" fill=\"#ffffaa\" rx=\"27\" ry=\"18\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"55\" y=\"-14.3\">0,0</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"55\" y=\"-25.3638\">0,0</text>\n",
"</g>\n", "</g>\n",
"<!-- I&#45;&gt;0 -->\n", "<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\">\n", "<g class=\"edge\" id=\"edge1\">\n",
"<title>I-&gt;0</title>\n", "<title>I-&gt;0</title>\n",
"<path d=\"M1.2244,-18C4.383,-18 17.3969,-18 30.8528,-18\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M1.2244,-29.0638C4.383,-29.0638 17.3969,-29.0638 30.8528,-29.0638\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"37.8798,-18 30.8799,-21.1501 34.3798,-18 30.8798,-18.0001 30.8798,-18.0001 30.8798,-18.0001 34.3798,-18 30.8798,-14.8501 37.8798,-18 37.8798,-18\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"37.8798,-29.0638 30.8799,-32.2139 34.3798,-29.0638 30.8798,-29.0639 30.8798,-29.0639 30.8798,-29.0639 34.3798,-29.0638 30.8798,-25.9139 37.8798,-29.0638 37.8798,-29.0638\" stroke=\"#000000\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge2\">\n",
"<title>0-&gt;0</title>\n",
"<path d=\"M57.1448,-35.4099C55.6785,-45.0879 58.2969,-54 65,-54 69.9226,-54 72.6423,-49.1936 73.1591,-42.8073\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"72.8552,-35.4099 76.2899,-42.2747 72.9989,-38.9069 73.1426,-42.404 73.1426,-42.404 73.1426,-42.404 72.9989,-38.9069 69.9953,-42.5333 72.8552,-35.4099 72.8552,-35.4099\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"46.5\" y=\"-72.8\">a &amp; !b</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"57\" y=\"-57.8\">⓿</text>\n",
"</g>\n", "</g>\n",
"<!-- 1 -->\n", "<!-- 1 -->\n",
"<g class=\"node\" id=\"node3\">\n", "<g class=\"node\" id=\"node3\">\n",
"<title>1</title>\n", "<title>1</title>\n",
"<ellipse cx=\"189\" cy=\"-88\" fill=\"#ffffaa\" rx=\"27\" ry=\"18\" stroke=\"#000000\"/>\n", "<ellipse cx=\"319\" cy=\"-123.0638\" fill=\"#ffffaa\" rx=\"27\" ry=\"18\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"179\" y=\"-84.3\">0,1</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"309\" y=\"-119.3638\">0,1</text>\n",
"</g>\n", "</g>\n",
"<!-- 0&#45;&gt;1 -->\n", "<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge3\">\n", "<g class=\"edge\" id=\"edge2\">\n",
"<title>0-&gt;1</title>\n", "<title>0-&gt;1</title>\n",
"<path d=\"M85.7548,-29.7164C106.6774,-41.5276 139.0687,-59.813 161.9831,-72.7485\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M80.0121,-44.4121C98.2989,-62.0597 130.9836,-90.3536 165,-104.0638 203.8607,-119.7263 252.3451,-123.3706 284.4157,-123.8186\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"168.1775,-76.2453 160.5331,-75.5472 165.1296,-74.5247 162.0817,-72.8041 162.0817,-72.8041 162.0817,-72.8041 165.1296,-74.5247 163.6302,-70.061 168.1775,-76.2453 168.1775,-76.2453\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"291.799,-123.8693 284.7775,-126.9711 288.2991,-123.8452 284.7992,-123.8212 284.7992,-123.8212 284.7992,-123.8212 288.2991,-123.8452 284.8208,-120.6712 291.799,-123.8693 291.799,-123.8693\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"110\" y=\"-79.8\">a &amp; b</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"173.5\" y=\"-136.8638\">!a &amp; b</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"119\" y=\"-64.8\">⓿</text>\n", "<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"184\" y=\"-121.8638\">⓿</text>\n",
"</g>\n", "</g>\n",
"<!-- 2 -->\n", "<!-- 2 -->\n",
"<g class=\"node\" id=\"node4\">\n", "<g class=\"node\" id=\"node4\">\n",
"<title>2</title>\n", "<title>2</title>\n",
"<ellipse cx=\"319\" cy=\"-88\" fill=\"#ffffaa\" rx=\"27\" ry=\"18\" stroke=\"#000000\"/>\n", "<ellipse cx=\"192\" cy=\"-29.0638\" fill=\"#ffffaa\" rx=\"27\" ry=\"18\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"309\" y=\"-84.3\">1,1</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"182\" y=\"-25.3638\">1,0</text>\n",
"</g>\n", "</g>\n",
"<!-- 0&#45;&gt;2 -->\n", "<!-- 0&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge4\">\n", "<g class=\"edge\" id=\"edge3\">\n",
"<title>0-&gt;2</title>\n", "<title>0-&gt;2</title>\n",
"<path d=\"M92.0179,-15.3093C133.4782,-12.3841 214.2574,-11.5218 274,-41 285.4096,-46.6297 295.4898,-56.4027 303.202,-65.5838\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M92.2447,-29.0638C111.4127,-29.0638 137.2089,-29.0638 157.7667,-29.0638\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"307.6886,-71.1815 300.8527,-67.6895 305.4996,-68.4504 303.3106,-65.7194 303.3106,-65.7194 303.3106,-65.7194 305.4996,-68.4504 305.7686,-63.7493 307.6886,-71.1815 307.6886,-71.1815\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"164.8004,-29.0638 157.8004,-32.2139 161.3004,-29.0638 157.8004,-29.0639 157.8004,-29.0639 157.8004,-29.0639 161.3004,-29.0638 157.8003,-25.9139 164.8004,-29.0638 164.8004,-29.0638\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"170.5\" y=\"-25.8\">!a &amp; b</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"110\" y=\"-32.8638\">a &amp; !b</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g class=\"node\" id=\"node5\">\n",
"<title>3</title>\n",
"<ellipse cx=\"449\" cy=\"-88.0638\" fill=\"#ffffaa\" rx=\"27\" ry=\"18\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"439\" y=\"-84.3638\">1,1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge4\">\n",
"<title>0-&gt;3</title>\n",
"<path d=\"M89.2895,-20.5704C109.3161,-14.0403 138.6165,-5.5629 165,-2.0638 188.7917,1.0916 195.0789,-.1195 219,-2.0638 302.9404,-8.8862 330.6391,-1.7029 404,-43.0638 414.322,-48.8833 423.8935,-57.7249 431.5317,-66.035\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"436.4962,-71.6595 429.5023,-68.4959 434.1801,-69.0355 431.8639,-66.4114 431.8639,-66.4114 431.8639,-66.4114 434.1801,-69.0355 434.2256,-64.3269 436.4962,-71.6595 436.4962,-71.6595\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"238.5\" y=\"-9.8638\">a &amp; b</text>\n",
"</g>\n", "</g>\n",
"<!-- 1&#45;&gt;1 -->\n", "<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge5\">\n", "<g class=\"edge\" id=\"edge5\">\n",
"<title>1-&gt;1</title>\n", "<title>1-&gt;1</title>\n",
"<path d=\"M183.4273,-105.7817C182.4803,-115.3149 184.3379,-124 189,-124 192.4237,-124 194.335,-119.3161 194.7337,-113.0521\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M313.4273,-140.8455C312.4803,-150.3787 314.3379,-159.0638 319,-159.0638 322.4237,-159.0638 324.335,-154.3798 324.7337,-148.1159\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"194.5727,-105.7817 197.877,-112.7102 194.6502,-109.2809 194.7277,-112.78 194.7277,-112.78 194.7277,-112.78 194.6502,-109.2809 191.5785,-112.8498 194.5727,-105.7817 194.5727,-105.7817\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"324.5727,-140.8455 327.877,-147.774 324.6502,-144.3446 324.7277,-147.8438 324.7277,-147.8438 324.7277,-147.8438 324.6502,-144.3446 321.5785,-147.9135 324.5727,-140.8455 324.5727,-140.8455\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"171\" y=\"-142.8\">a &amp; !c</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"299\" y=\"-177.8638\">!a &amp; !c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"181\" y=\"-127.8\">⓿</text>\n", "<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"311\" y=\"-162.8638\">⓿</text>\n",
"</g>\n", "</g>\n",
"<!-- 1&#45;&gt;1 -->\n", "<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge6\">\n", "<g class=\"edge\" id=\"edge6\">\n",
"<title>1-&gt;1</title>\n", "<title>1-&gt;1</title>\n",
"<path d=\"M180.4657,-105.249C174.4091,-126.4346 177.2539,-154 189,-154 199.5072,-154 202.8918,-131.9425 199.1536,-112.1253\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M310.4657,-140.3128C304.4091,-161.4983 307.2539,-189.0638 319,-189.0638 329.5072,-189.0638 332.8918,-167.0063 329.1536,-147.1891\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"197.5343,-105.249 202.205,-111.3406 198.3366,-108.6558 199.1389,-112.0627 199.1389,-112.0627 199.1389,-112.0627 198.3366,-108.6558 196.0727,-112.7847 197.5343,-105.249 197.5343,-105.249\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"327.5343,-140.3128 332.205,-146.4043 328.3366,-143.7196 329.1389,-147.1264 329.1389,-147.1264 329.1389,-147.1264 328.3366,-143.7196 326.0727,-147.8485 327.5343,-140.3128 327.5343,-140.3128\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"173\" y=\"-171.8\">a &amp; c</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"301\" y=\"-206.8638\">!a &amp; c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"173\" y=\"-157.8\">⓿</text>\n", "<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"303\" y=\"-192.8638\">⓿</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"189\" y=\"-157.8\">❶</text>\n", "<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"319\" y=\"-192.8638\">❶</text>\n",
"</g>\n", "</g>\n",
"<!-- 1&#45;&gt;2 -->\n", "<!-- 1&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge7\">\n", "<g class=\"edge\" id=\"edge7\">\n",
"<title>1-&gt;2</title>\n", "<title>1-&gt;3</title>\n",
"<path d=\"M194.9997,-105.8615C201.6466,-122.4762 214.1313,-146.2372 234,-157 249.6317,-165.4676 258.3683,-165.4676 274,-157 291.3851,-147.5825 303.1168,-128.2133 310.231,-112.3876\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M326.4052,-140.6219C333.6277,-155.2329 346.144,-175.0472 364,-184.0638 379.8693,-192.0771 388.9968,-193.6007 404,-184.0638 428.3898,-168.5601 439.7893,-135.9631 444.9584,-113.0715\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"313.0003,-105.8615 313.1656,-113.5358 311.6331,-109.0834 310.2659,-112.3053 310.2659,-112.3053 310.2659,-112.3053 311.6331,-109.0834 307.3662,-111.0748 313.0003,-105.8615 313.0003,-105.8615\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"446.4264,-106.0142 448.0848,-113.509 445.7136,-109.4409 445.0008,-112.8675 445.0008,-112.8675 445.0008,-112.8675 445.7136,-109.4409 441.9168,-112.226 446.4264,-106.0142 446.4264,-106.0142\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"234\" y=\"-166.8\">!a &amp; !c</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"366\" y=\"-193.8638\">a &amp; !c</text>\n",
"</g>\n", "</g>\n",
"<!-- 1&#45;&gt;2 -->\n", "<!-- 1&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge8\">\n", "<g class=\"edge\" id=\"edge8\">\n",
"<title>1-&gt;2</title>\n", "<title>1-&gt;3</title>\n",
"<path d=\"M211.9489,-97.8578C218.9011,-100.3774 226.6461,-102.7315 234,-104 251.5191,-107.0218 256.4809,-107.0218 274,-104 279.0558,-103.1279 284.2965,-101.7427 289.3373,-100.1434\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M343.3042,-131.1652C360.7865,-135.6248 384.602,-138.8417 404,-131.0638 414.9197,-126.6853 424.6906,-118.2535 432.3148,-110.0081\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"296.0511,-97.8578 290.4397,-103.0957 292.7378,-98.9858 289.4246,-100.1137 289.4246,-100.1137 289.4246,-100.1137 292.7378,-98.9858 288.4094,-97.1318 296.0511,-97.8578 296.0511,-97.8578\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"437.2378,-104.3815 434.999,-111.724 434.9331,-107.0156 432.6283,-109.6497 432.6283,-109.6497 432.6283,-109.6497 434.9331,-107.0156 430.2577,-107.5754 437.2378,-104.3815 437.2378,-104.3815\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"236\" y=\"-124.8\">!a &amp; c</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"368\" y=\"-153.8638\">a &amp; c</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"246\" y=\"-109.8\">❶</text>\n", "<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"376\" y=\"-138.8638\">❶</text>\n",
"</g>\n", "</g>\n",
"<!-- 2&#45;&gt;1 -->\n", "<!-- 2&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge9\">\n", "<g class=\"edge\" id=\"edge9\">\n",
"<title>2-&gt;1</title>\n", "<title>2-&gt;1</title>\n",
"<path d=\"M291.8871,-85.8995C285.994,-85.5248 279.7909,-85.1928 274,-85 256.2321,-84.4084 251.7679,-84.4084 234,-85 230.4712,-85.1175 226.7893,-85.2867 223.1178,-85.4857\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M210.196,-42.5317C232.5468,-59.0748 270.5227,-87.1829 295.1794,-105.4327\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"216.1129,-85.8995 222.9149,-82.3421 219.6068,-85.693 223.1007,-85.4866 223.1007,-85.4866 223.1007,-85.4866 219.6068,-85.693 223.2865,-88.6311 216.1129,-85.8995 216.1129,-85.8995\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"300.8378,-109.6208 293.3372,-107.9882 298.0245,-107.5386 295.2113,-105.4563 295.2113,-105.4563 295.2113,-105.4563 298.0245,-107.5386 297.0853,-102.9244 300.8378,-109.6208 300.8378,-109.6208\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"236\" y=\"-88.8\">a &amp; !c</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"237\" y=\"-90.8638\">!a &amp; b</text>\n",
"</g>\n", "</g>\n",
"<!-- 2&#45;&gt;1 -->\n", "<!-- 2&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge10\">\n", "<g class=\"edge\" id=\"edge10\">\n",
"<title>2-&gt;1</title>\n", "<title>2-&gt;2</title>\n",
"<path d=\"M305.3336,-71.9784C297.1903,-63.7001 286.1001,-54.4255 274,-50 257.3039,-43.8935 250.6961,-43.8935 234,-50 224.3577,-53.5266 215.3568,-60.1324 207.9773,-66.8595\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M181.1016,-45.7278C178.6797,-55.6888 182.3125,-65.0638 192,-65.0638 199.2656,-65.0638 203.1255,-59.7903 203.5796,-52.9513\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"202.6664,-71.9784 205.5204,-64.8525 205.1864,-69.5495 207.7064,-67.1205 207.7064,-67.1205 207.7064,-67.1205 205.1864,-69.5495 209.8925,-69.3885 202.6664,-71.9784 202.6664,-71.9784\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"202.8984,-45.7278 206.6918,-52.4011 203.2271,-49.2124 203.5557,-52.6969 203.5557,-52.6969 203.5557,-52.6969 203.2271,-49.2124 200.4196,-52.9927 202.8984,-45.7278 202.8984,-45.7278\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"238\" y=\"-68.8\">a &amp; c</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"173.5\" y=\"-83.8638\">a &amp; !b</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"246\" y=\"-53.8\">❶</text>\n", "<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"184\" y=\"-68.8638\">⓿</text>\n",
"</g>\n", "</g>\n",
"<!-- 2&#45;&gt;2 -->\n", "<!-- 2&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge11\">\n", "<g class=\"edge\" id=\"edge11\">\n",
"<title>2-&gt;2</title>\n", "<title>2-&gt;3</title>\n",
"<path d=\"M313.2476,-105.7817C312.27,-115.3149 314.1875,-124 319,-124 322.5342,-124 324.5071,-119.3161 324.9186,-113.0521\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M219.0517,-28.9307C260.2943,-29.5646 340.7713,-34.1216 404,-58.0638 411.5297,-60.915 419.0641,-65.222 425.7551,-69.6898\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"324.7524,-105.7817 328.0617,-112.7079 324.8325,-109.2808 324.9125,-112.7799 324.9125,-112.7799 324.9125,-112.7799 324.8325,-109.2808 321.7633,-112.8519 324.7524,-105.7817 324.7524,-105.7817\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"431.6385,-73.8008 424.0963,-72.3735 428.7695,-71.7961 425.9005,-69.7914 425.9005,-69.7914 425.9005,-69.7914 428.7695,-71.7961 427.7048,-67.2093 431.6385,-73.8008 431.6385,-73.8008\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"299\" y=\"-142.8\">!a &amp; !c</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"302\" y=\"-60.8638\">a &amp; b</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"311\" y=\"-127.8\">⓿</text>\n", "<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"311\" y=\"-45.8638\">⓿</text>\n",
"</g>\n", "</g>\n",
"<!-- 2&#45;&gt;2 -->\n", "<!-- 3&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge12\">\n", "<g class=\"edge\" id=\"edge12\">\n",
"<title>2-&gt;2</title>\n", "<title>3-&gt;1</title>\n",
"<path d=\"M310.1904,-105.249C303.9385,-126.4346 306.875,-154 319,-154 329.8462,-154 333.3399,-131.9425 329.4811,-112.1253\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M423.5681,-94.9108C402.8262,-100.4952 373.4072,-108.4157 351.0544,-114.4337\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"327.8096,-105.249 332.524,-111.3069 328.6363,-108.65 329.4631,-112.051 329.4631,-112.051 329.4631,-112.051 328.6363,-108.65 326.4022,-112.795 327.8096,-105.249 327.8096,-105.249\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"344.0653,-116.3154 350.0057,-111.4538 347.445,-115.4055 350.8246,-114.4955 350.8246,-114.4955 350.8246,-114.4955 347.445,-115.4055 351.6436,-117.5372 344.0653,-116.3154 344.0653,-116.3154\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"301\" y=\"-171.8\">!a &amp; c</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"364\" y=\"-113.8638\">!a &amp; !c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"303\" y=\"-157.8\">⓿</text>\n", "</g>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"319\" y=\"-157.8\">❶</text>\n", "<!-- 3&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge13\">\n",
"<title>3-&gt;1</title>\n",
"<path d=\"M429.332,-75.4937C411.5934,-65.8674 385.1248,-55.8266 364,-66.0638 349.6039,-73.0401 338.4238,-87.1034 330.8082,-99.5147\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"327.1525,-105.8081 327.9447,-98.173 328.9105,-102.7816 330.6685,-99.7552 330.6685,-99.7552 330.6685,-99.7552 328.9105,-102.7816 333.3923,-101.3374 327.1525,-105.8081 327.1525,-105.8081\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"366\" y=\"-84.8638\">!a &amp; c</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"376\" y=\"-69.8638\">❶</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge14\">\n",
"<title>3-&gt;3</title>\n",
"<path d=\"M443.2476,-105.8455C442.27,-115.3787 444.1875,-124.0638 449,-124.0638 452.5342,-124.0638 454.5071,-119.3798 454.9186,-113.1159\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"454.7524,-105.8455 458.0617,-112.7716 454.8325,-109.3446 454.9125,-112.8437 454.9125,-112.8437 454.9125,-112.8437 454.8325,-109.3446 451.7633,-112.9157 454.7524,-105.8455 454.7524,-105.8455\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"431\" y=\"-142.8638\">a &amp; !c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"441\" y=\"-127.8638\">⓿</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge15\">\n",
"<title>3-&gt;3</title>\n",
"<path d=\"M440.1904,-105.3128C433.9385,-126.4983 436.875,-154.0638 449,-154.0638 459.8462,-154.0638 463.3399,-132.0063 459.4811,-112.1891\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"457.8096,-105.3128 462.524,-111.3706 458.6363,-108.7137 459.4631,-112.1147 459.4631,-112.1147 459.4631,-112.1147 458.6363,-108.7137 456.4022,-112.8588 457.8096,-105.3128 457.8096,-105.3128\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"433\" y=\"-171.8638\">a &amp; c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"433\" y=\"-157.8638\">⓿</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"449\" y=\"-157.8638\">❶</text>\n",
"</g>\n", "</g>\n",
"</g>\n", "</g>\n",
"</svg></div><div style='vertical-align:text-top;display:inline-block;width:50%;'><svg height=\"244pt\" viewBox=\"0.00 0.00 303.00 244.00\" width=\"303pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", "</svg></div><div style='vertical-align:text-top;display:inline-block;width:50%;'><svg height=\"278pt\" viewBox=\"0.00 0.00 413.00 278.48\" width=\"413pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 240)\">\n", "<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 274.4783)\">\n",
"<polygon fill=\"#ffffff\" points=\"-4,4 -4,-240 299,-240 299,4 -4,4\" stroke=\"transparent\"/>\n", "<polygon fill=\"#ffffff\" points=\"-4,4 -4,-274.4783 409,-274.4783 409,4 -4,4\" stroke=\"transparent\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"100.5\" y=\"-221.8\">Inf(</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"155.5\" y=\"-256.2783\">Inf(</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"122.5\" y=\"-221.8\">⓿</text>\n", "<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"177.5\" y=\"-256.2783\">⓿</text>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"138.5\" y=\"-221.8\">)&amp;Inf(</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"193.5\" y=\"-256.2783\">)&amp;Inf(</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"174.5\" y=\"-221.8\">❶</text>\n", "<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"229.5\" y=\"-256.2783\">❶</text>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"190.5\" y=\"-221.8\">)</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"245.5\" y=\"-256.2783\">)</text>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"103.5\" y=\"-207.8\">[gen. Büchi 2]</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"158.5\" y=\"-242.2783\">[gen. Büchi 2]</text>\n",
"<!-- I -->\n", "<!-- I -->\n",
"<!-- 0 -->\n", "<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\">\n", "<g class=\"node\" id=\"node2\">\n",
"<title>0</title>\n", "<title>0</title>\n",
"<g id=\"a_node2\"><a xlink:title=\"0,0\">\n", "<g id=\"a_node2\"><a xlink:title=\"0,0\">\n",
"<ellipse cx=\"56\" cy=\"-18\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n", "<ellipse cx=\"56\" cy=\"-28.4783\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-14.3\">0</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-24.7783\">0</text>\n",
"</a>\n", "</a>\n",
"</g>\n", "</g>\n",
"</g>\n", "</g>\n",
"<!-- I&#45;&gt;0 -->\n", "<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\">\n", "<g class=\"edge\" id=\"edge1\">\n",
"<title>I-&gt;0</title>\n", "<title>I-&gt;0</title>\n",
"<path d=\"M1.1233,-18C4.178,-18 17.9448,-18 30.9241,-18\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M1.1233,-28.4783C4.178,-28.4783 17.9448,-28.4783 30.9241,-28.4783\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"37.9807,-18 30.9808,-21.1501 34.4807,-18 30.9807,-18.0001 30.9807,-18.0001 30.9807,-18.0001 34.4807,-18 30.9807,-14.8501 37.9807,-18 37.9807,-18\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"37.9807,-28.4783 30.9808,-31.6284 34.4807,-28.4784 30.9807,-28.4784 30.9807,-28.4784 30.9807,-28.4784 34.4807,-28.4784 30.9807,-25.3284 37.9807,-28.4783 37.9807,-28.4783\" stroke=\"#000000\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge2\">\n",
"<title>0-&gt;0</title>\n",
"<path d=\"M49.6208,-35.0373C48.3189,-44.8579 50.4453,-54 56,-54 60.166,-54 62.4036,-48.8576 62.7128,-42.1433\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"62.3792,-35.0373 65.8541,-41.8818 62.5434,-38.5335 62.7076,-42.0296 62.7076,-42.0296 62.7076,-42.0296 62.5434,-38.5335 59.561,-42.1774 62.3792,-35.0373 62.3792,-35.0373\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"37.5\" y=\"-72.8\">a &amp; !b</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"48\" y=\"-57.8\">⓿</text>\n",
"</g>\n", "</g>\n",
"<!-- 1 -->\n", "<!-- 1 -->\n",
"<g class=\"node\" id=\"node3\">\n", "<g class=\"node\" id=\"node3\">\n",
"<title>1</title>\n", "<title>1</title>\n",
"<g id=\"a_node3\"><a xlink:title=\"0,1\">\n", "<g id=\"a_node3\"><a xlink:title=\"0,1\">\n",
"<ellipse cx=\"162.5\" cy=\"-88\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n", "<ellipse cx=\"275\" cy=\"-122.4783\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"162.5\" y=\"-84.3\">1</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"275\" y=\"-118.7783\">1</text>\n",
"</a>\n", "</a>\n",
"</g>\n", "</g>\n",
"</g>\n", "</g>\n",
"<!-- 0&#45;&gt;1 -->\n", "<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge3\">\n", "<g class=\"edge\" id=\"edge2\">\n",
"<title>0-&gt;1</title>\n", "<title>0-&gt;1</title>\n",
"<path d=\"M71.2589,-28.0293C89.6065,-40.0888 120.5099,-60.4009 141.2011,-74.0007\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M68.0094,-42.1794C84.1073,-59.5594 114.4491,-89.0069 147,-103.4783 180.4004,-118.3274 223.0486,-121.9763 249.6981,-122.6637\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"147.2695,-77.9893 139.6897,-76.7768 144.3447,-76.0669 141.4199,-74.1445 141.4199,-74.1445 141.4199,-74.1445 144.3447,-76.0669 143.15,-71.5122 147.2695,-77.9893 147.2695,-77.9893\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"256.7693,-122.7859 249.7159,-125.8144 253.2698,-122.7254 249.7704,-122.6649 249.7704,-122.6649 249.7704,-122.6649 253.2698,-122.7254 249.8248,-119.5153 256.7693,-122.7859 256.7693,-122.7859\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-81.8\">a &amp; b</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"147\" y=\"-133.2783\">!a &amp; b</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"101\" y=\"-66.8\">⓿</text>\n", "<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"157.5\" y=\"-118.2783\">⓿</text>\n",
"</g>\n", "</g>\n",
"<!-- 2 -->\n", "<!-- 2 -->\n",
"<g class=\"node\" id=\"node4\">\n", "<g class=\"node\" id=\"node4\">\n",
"<title>2</title>\n", "<title>2</title>\n",
"<g id=\"a_node4\"><a xlink:title=\"1,1\">\n", "<g id=\"a_node4\"><a xlink:title=\"1,0\">\n",
"<ellipse cx=\"275\" cy=\"-88\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n", "<ellipse cx=\"165.5\" cy=\"-28.4783\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"275\" y=\"-84.3\">2</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"165.5\" y=\"-24.7783\">2</text>\n",
"</a>\n", "</a>\n",
"</g>\n", "</g>\n",
"</g>\n", "</g>\n",
"<!-- 0&#45;&gt;2 -->\n", "<!-- 0&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge4\">\n", "<g class=\"edge\" id=\"edge3\">\n",
"<title>0-&gt;2</title>\n", "<title>0-&gt;2</title>\n",
"<path d=\"M74.0755,-15.7322C108.6608,-12.3006 185.511,-9.1273 239,-40 249.2129,-45.8947 257.433,-55.9621 263.4257,-65.3591\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M74.0817,-28.4783C92.1512,-28.4783 120.0828,-28.4783 140.3174,-28.4783\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"267.0406,-71.387 260.7389,-67.0039 265.2405,-68.3854 263.4404,-65.3838 263.4404,-65.3838 263.4404,-65.3838 265.2405,-68.3854 266.1418,-63.7637 267.0406,-71.387 267.0406,-71.387\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"147.3914,-28.4783 140.3915,-31.6284 143.8914,-28.4784 140.3914,-28.4784 140.3914,-28.4784 140.3914,-28.4784 143.8914,-28.4784 140.3914,-25.3284 147.3914,-28.4783 147.3914,-28.4783\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"144\" y=\"-23.8\">!a &amp; b</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-32.2783\">a &amp; !b</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g class=\"node\" id=\"node5\">\n",
"<title>3</title>\n",
"<g id=\"a_node5\"><a xlink:title=\"1,1\">\n",
"<ellipse cx=\"387\" cy=\"-87.4783\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"387\" y=\"-83.7783\">3</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 0&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge4\">\n",
"<title>0-&gt;3</title>\n",
"<path d=\"M72.7785,-21.9058C90.7938,-15.2292 120.4175,-5.3387 147,-1.4783 163.2737,.885 167.5984,-.2917 184,-1.4783 259.7293,-6.9571 288.1583,5.1346 351,-37.4783 361.1671,-44.3726 369.4571,-55.1437 375.508,-64.9258\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"379.1583,-71.1605 372.9031,-66.7112 377.3899,-68.1401 375.6215,-65.1197 375.6215,-65.1197 375.6215,-65.1197 377.3899,-68.1401 378.3399,-63.5281 379.1583,-71.1605 379.1583,-71.1605\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"203.5\" y=\"-8.2783\">a &amp; b</text>\n",
"</g>\n", "</g>\n",
"<!-- 1&#45;&gt;1 -->\n", "<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge5\">\n", "<g class=\"edge\" id=\"edge5\">\n",
"<title>1-&gt;1</title>\n", "<title>1-&gt;1</title>\n",
"<path d=\"M157.8583,-105.4099C156.9918,-115.0879 158.5391,-124 162.5,-124 165.4088,-124 167.0159,-119.1936 167.3213,-112.8073\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M270.1797,-139.8882C269.28,-149.5662 270.8867,-158.4783 275,-158.4783 278.0207,-158.4783 279.6896,-153.6719 280.0067,-147.2856\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"167.1417,-105.4099 170.4607,-112.3314 167.2267,-108.9089 167.3117,-112.4078 167.3117,-112.4078 167.3117,-112.4078 167.2267,-108.9089 164.1626,-112.4843 167.1417,-105.4099 167.1417,-105.4099\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"279.8203,-139.8882 283.1457,-146.8066 279.9085,-143.3871 279.9967,-146.886 279.9967,-146.886 279.9967,-146.886 279.9085,-143.3871 276.8477,-146.9654 279.8203,-139.8882 279.8203,-139.8882\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"144.5\" y=\"-142.8\">a &amp; !c</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"255\" y=\"-177.2783\">!a &amp; !c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"154.5\" y=\"-127.8\">⓿</text>\n", "<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"267\" y=\"-162.2783\">⓿</text>\n",
"</g>\n", "</g>\n",
"<!-- 1&#45;&gt;1 -->\n", "<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge6\">\n", "<g class=\"edge\" id=\"edge6\">\n",
"<title>1-&gt;1</title>\n", "<title>1-&gt;1</title>\n",
"<path d=\"M155.5017,-104.5959C150.2141,-125.8633 152.5469,-154 162.5,-154 171.4034,-154 174.2091,-131.4854 170.917,-111.5132\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M267.7325,-139.0742C262.2416,-160.3416 264.6641,-188.4783 275,-188.4783 284.2458,-188.4783 287.1594,-165.9637 283.7408,-145.9915\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"169.4983,-104.5959 173.9906,-110.8202 170.2015,-108.0245 170.9048,-111.4531 170.9048,-111.4531 170.9048,-111.4531 170.2015,-108.0245 167.819,-112.0861 169.4983,-104.5959 169.4983,-104.5959\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"282.2675,-139.0742 286.8066,-145.2644 282.9966,-142.4974 283.7257,-145.9206 283.7257,-145.9206 283.7257,-145.9206 282.9966,-142.4974 280.6448,-146.5768 282.2675,-139.0742 282.2675,-139.0742\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"146.5\" y=\"-171.8\">a &amp; c</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"257\" y=\"-206.2783\">!a &amp; c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"146.5\" y=\"-157.8\">⓿</text>\n", "<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"259\" y=\"-192.2783\">⓿</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"162.5\" y=\"-157.8\">❶</text>\n", "<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"275\" y=\"-192.2783\">❶</text>\n",
"</g>\n", "</g>\n",
"<!-- 1&#45;&gt;2 -->\n", "<!-- 1&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge7\">\n", "<g class=\"edge\" id=\"edge7\">\n",
"<title>1-&gt;2</title>\n", "<title>1-&gt;3</title>\n",
"<path d=\"M166.3877,-105.7363C171.0533,-122.2582 180.658,-145.9525 199,-157 214.2288,-166.1724 223.7973,-166.2156 239,-157 254.8314,-147.4033 264.0288,-128.3136 269.1584,-112.6417\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M279.9602,-139.9118C285.1203,-154.443 294.7683,-174.21 311,-183.4783 326.4383,-192.2935 336.388,-193.6044 351,-183.4783 363.0357,-175.1376 374.471,-137.8639 381.1061,-112.293\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"271.2383,-105.7279 272.2381,-113.3387 270.23,-109.0796 269.2217,-112.4312 269.2217,-112.4312 269.2217,-112.4312 270.23,-109.0796 266.2052,-111.5237 271.2383,-105.7279 271.2383,-105.7279\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"382.8468,-105.4248 384.1805,-112.9841 381.9869,-108.8175 381.127,-112.2102 381.127,-112.2102 381.127,-112.2102 381.9869,-108.8175 378.0736,-111.4363 382.8468,-105.4248 382.8468,-105.4248\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"199\" y=\"-166.8\">!a &amp; !c</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"313\" y=\"-194.2783\">a &amp; !c</text>\n",
"</g>\n", "</g>\n",
"<!-- 1&#45;&gt;2 -->\n", "<!-- 1&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge8\">\n", "<g class=\"edge\" id=\"edge8\">\n",
"<title>1-&gt;2</title>\n", "<title>1-&gt;3</title>\n",
"<path d=\"M178.3742,-96.6628C184.6129,-99.6068 191.9573,-102.5242 199,-104 216.3998,-107.6462 221.6095,-107.6905 239,-104 243.4784,-103.0496 248.0762,-101.5023 252.4246,-99.7353\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M291.8393,-129.0964C307.8181,-134.2861 332.1267,-139.2918 351,-130.4783 360.4199,-126.0794 368.2449,-117.8688 374.1666,-109.7918\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"258.9997,-96.8317 253.8688,-102.5411 255.798,-98.2456 252.5963,-99.6595 252.5963,-99.6595 252.5963,-99.6595 255.798,-98.2456 251.3238,-96.778 258.9997,-96.8317 258.9997,-96.8317\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"378.3188,-103.7066 376.9753,-111.2642 376.346,-106.5977 374.3733,-109.4887 374.3733,-109.4887 374.3733,-109.4887 376.346,-106.5977 371.7713,-107.7133 378.3188,-103.7066 378.3188,-103.7066\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"201\" y=\"-124.8\">!a &amp; c</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"315\" y=\"-153.2783\">a &amp; c</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"211\" y=\"-109.8\">❶</text>\n", "<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"323\" y=\"-138.2783\">❶</text>\n",
"</g>\n", "</g>\n",
"<!-- 2&#45;&gt;1 -->\n", "<!-- 2&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge9\">\n", "<g class=\"edge\" id=\"edge9\">\n",
"<title>2-&gt;1</title>\n", "<title>2-&gt;1</title>\n",
"<path d=\"M257.0731,-86.2107C251.3086,-85.7146 244.8903,-85.245 239,-85 221.2376,-84.2612 216.7628,-84.2712 199,-85 195.361,-85.1493 191.5231,-85.382 187.7575,-85.6533\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M179.3683,-40.3835C198.7033,-56.9816 233.8422,-87.1465 255.7182,-105.9259\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"180.6764,-86.2107 187.4075,-82.521 184.1656,-85.936 187.6548,-85.6612 187.6548,-85.6612 187.6548,-85.6612 184.1656,-85.936 187.9021,-88.8015 180.6764,-86.2107 180.6764,-86.2107\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"261.2444,-110.6698 253.8812,-108.5004 258.5887,-108.39 255.933,-106.1102 255.933,-106.1102 255.933,-106.1102 258.5887,-108.39 257.9848,-103.7201 261.2444,-110.6698 261.2444,-110.6698\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"201\" y=\"-88.8\">a &amp; !c</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"202\" y=\"-92.2783\">!a &amp; b</text>\n",
"</g>\n", "</g>\n",
"<!-- 2&#45;&gt;1 -->\n", "<!-- 2&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge10\">\n", "<g class=\"edge\" id=\"edge10\">\n",
"<title>2-&gt;1</title>\n", "<title>2-&gt;2</title>\n",
"<path d=\"M265.0142,-72.4472C258.6857,-64.0962 249.6857,-54.5962 239,-50 222.6689,-42.9755 215.3552,-43.0318 199,-50 190.4529,-53.6415 182.9427,-60.3746 176.9919,-67.1731\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M156.2674,-44.0198C153.6685,-54.387 156.7461,-64.4783 165.5,-64.4783 172.2022,-64.4783 175.577,-58.563 175.6245,-51.1374\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"172.3715,-72.8328 174.3582,-65.4182 174.5849,-70.1215 176.7983,-67.4102 176.7983,-67.4102 176.7983,-67.4102 174.5849,-70.1215 179.2385,-69.4023 172.3715,-72.8328 172.3715,-72.8328\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"174.7326,-44.0198 178.7286,-50.5738 175.1678,-47.4926 175.603,-50.9654 175.603,-50.9654 175.603,-50.9654 175.1678,-47.4926 172.4775,-51.3571 174.7326,-44.0198 174.7326,-44.0198\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"203\" y=\"-68.8\">a &amp; c</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"147\" y=\"-83.2783\">a &amp; !b</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"211\" y=\"-53.8\">❶</text>\n", "<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"157.5\" y=\"-68.2783\">⓿</text>\n",
"</g>\n", "</g>\n",
"<!-- 2&#45;&gt;2 -->\n", "<!-- 2&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge11\">\n", "<g class=\"edge\" id=\"edge11\">\n",
"<title>2-&gt;2</title>\n", "<title>2-&gt;3</title>\n",
"<path d=\"M270.0012,-105.4099C269.0681,-115.0879 270.7344,-124 275,-124 278.1326,-124 279.8633,-119.1936 280.1921,-112.8073\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M183.594,-27.7587C217.9351,-27.0979 294.2023,-29.0444 351,-55.4783 357.8232,-58.6539 364.2983,-63.5517 369.8268,-68.5683\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"279.9988,-105.4099 283.3307,-112.3252 280.0903,-108.9087 280.1818,-112.4075 280.1818,-112.4075 280.1818,-112.4075 280.0903,-108.9087 277.0329,-112.4899 279.9988,-105.4099 279.9988,-105.4099\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"375.0175,-73.5652 367.7898,-70.9798 372.496,-71.1378 369.9744,-68.7105 369.9744,-68.7105 369.9744,-68.7105 372.496,-71.1378 372.1591,-66.4411 375.0175,-73.5652 375.0175,-73.5652\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"255\" y=\"-142.8\">!a &amp; !c</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"258\" y=\"-56.2783\">a &amp; b</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"267\" y=\"-127.8\">⓿</text>\n", "<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"267\" y=\"-41.2783\">⓿</text>\n",
"</g>\n", "</g>\n",
"<!-- 2&#45;&gt;2 -->\n", "<!-- 3&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge12\">\n", "<g class=\"edge\" id=\"edge12\">\n",
"<title>2-&gt;2</title>\n", "<title>3-&gt;1</title>\n",
"<path d=\"M267.4634,-104.5959C261.769,-125.8633 264.2813,-154 275,-154 284.5883,-154 287.6098,-131.4854 284.0645,-111.5132\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M369.6229,-92.9087C350.7682,-98.8008 320.5243,-108.252 299.3164,-114.8795\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"282.5366,-104.5959 287.1223,-110.7517 283.2915,-108.0135 284.0464,-111.4311 284.0464,-111.4311 284.0464,-111.4311 283.2915,-108.0135 280.9706,-112.1106 282.5366,-104.5959 282.5366,-104.5959\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"292.5,-117.0096 298.2418,-111.915 295.8407,-115.9656 299.1814,-114.9216 299.1814,-114.9216 299.1814,-114.9216 295.8407,-115.9656 300.121,-117.9282 292.5,-117.0096 292.5,-117.0096\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"257\" y=\"-171.8\">!a &amp; c</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"311\" y=\"-114.2783\">!a &amp; !c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"259\" y=\"-157.8\">⓿</text>\n", "</g>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"275\" y=\"-157.8\">❶</text>\n", "<!-- 3&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge13\">\n",
"<title>3-&gt;1</title>\n",
"<path d=\"M372.8693,-75.8011C366.5789,-71.3346 358.8309,-66.7663 351,-64.4783 333.9357,-59.4925 326.5358,-55.8361 311,-64.4783 297.9795,-71.7213 289.0654,-85.8382 283.3646,-98.3307\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"280.5224,-105.05 280.3484,-97.3758 281.886,-101.8265 283.2495,-98.603 283.2495,-98.603 283.2495,-98.603 281.886,-101.8265 286.1506,-99.8302 280.5224,-105.05 280.5224,-105.05\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"313\" y=\"-83.2783\">!a &amp; c</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"323\" y=\"-68.2783\">❶</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge14\">\n",
"<title>3-&gt;3</title>\n",
"<path d=\"M382.0012,-104.8882C381.0681,-114.5662 382.7344,-123.4783 387,-123.4783 390.1326,-123.4783 391.8633,-118.6719 392.1921,-112.2856\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"391.9988,-104.8882 395.3307,-111.8035 392.0903,-108.387 392.1818,-111.8858 392.1818,-111.8858 392.1818,-111.8858 392.0903,-108.387 389.0329,-111.9682 391.9988,-104.8882 391.9988,-104.8882\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"369\" y=\"-142.2783\">a &amp; !c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"379\" y=\"-127.2783\">⓿</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge15\">\n",
"<title>3-&gt;3</title>\n",
"<path d=\"M379.4634,-104.0742C373.769,-125.3416 376.2813,-153.4783 387,-153.4783 396.5883,-153.4783 399.6098,-130.9637 396.0645,-110.9915\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"394.5366,-104.0742 399.1223,-110.23 395.2915,-107.4918 396.0464,-110.9094 396.0464,-110.9094 396.0464,-110.9094 395.2915,-107.4918 392.9706,-111.5889 394.5366,-104.0742 394.5366,-104.0742\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"371\" y=\"-171.2783\">a &amp; c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"371\" y=\"-157.2783\">⓿</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"387\" y=\"-157.2783\">❶</text>\n",
"</g>\n", "</g>\n",
"</g>\n", "</g>\n",
"</svg></div>" "</svg></div>"
@ -3062,7 +3121,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0d077c1e40> >" "<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f5a6034ad20> >"
] ]
}, },
"metadata": {}, "metadata": {},
@ -3162,7 +3221,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0d1c02c750> >" "<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f5a60301ba0> >"
] ]
}, },
"execution_count": 24, "execution_count": 24,
@ -3235,7 +3294,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0d1c02c780> >" "<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f5a6030f9c0> >"
] ]
}, },
"execution_count": 25, "execution_count": 25,
@ -3399,7 +3458,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0d1c03ed80> >" "<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f5a6030f750> >"
] ]
}, },
"execution_count": 27, "execution_count": 27,
@ -3482,7 +3541,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0d077c1e40> >" "<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f5a6034ad20> >"
] ]
}, },
"metadata": {}, "metadata": {},
@ -3547,7 +3606,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0d077c1e40> >" "<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f5a6034ad20> >"
] ]
}, },
"metadata": {}, "metadata": {},
@ -3634,7 +3693,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0d077c1e40> >" "<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f5a6034ad20> >"
] ]
}, },
"execution_count": 29, "execution_count": 29,
@ -3667,7 +3726,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.6.7" "version": "3.7.3"
} }
}, },
"nbformat": 4, "nbformat": 4,

File diff suppressed because it is too large Load diff