translate: add ltl-split option

* spot/twaalgos/translate.cc, spot/twaalgos/translate.hh: Build
automata with generic acceptance by doing product of automata for
smaller subformulas.
* bin/spot-x.cc: Mention ltl-split.
* NEWS: Mention the change, and show some results.
* tests/core/genltl.test, tests/python/_product_susp.ipynb,
tests/python/highlighting.ipynb: Adjust test cases.
* doc/org/ltl2tgba.org: Update.
* tests/core/gragsa.test: Add another formula to cover more
code.
This commit is contained in:
Alexandre Duret-Lutz 2018-06-19 16:42:30 +02:00
parent 4f2e9512a2
commit 4815a361de
9 changed files with 736 additions and 499 deletions

36
NEWS
View file

@ -87,6 +87,35 @@ New in spot 2.5.3.dev (not yet released)
a "suspendable" automaton B. They are also optimized for
the case that A is weak.
- When 'generic' acceptance is enabled, the translation routine will
split the input formula on Boolean operators into components that
are syntactically 'obligation', 'suspendable', or 'something
else'. Those will be translated separately and combined with
product()/product_susp(). This is inspired by the ways things are
done in ltl2dstar or delag, and can be disabled by passing option
-xltl-split=0, as in ltl2tgba -G -D -xltl-split=0. Here are the
sizes of deterministic automata produced with generic acceptance
using two versions of ltl2tgba and delag for reference.
ltl2tgba -GD rabinizer 4
2.5 2.6 delag
------------- -------------
FGa0&GFb0 5 1 1
(FGa1&GFb1)|FGa0|GFb0 8 1 1
(FGa2&GFb2)|((FGa1|GFb1)&FGa0&GFb0) 497 1 1
FGa0|GFb0 2 1 1
(FGa1|GFb1)&FGa0&GFb0 16 1 1
(FGa2|GFb2)&((FGa1&GFb1)|FGa0|GFb0) 29 1 1
GFa1 <-> GFz 4 1 1
(GFa1 & GFa2) <-> GFz 8 1 1
(GFa1 & GFa2 & GFa3) <-> GFz 21 1 1
GFa1 -> GFz 5 1 1
(GFa1 & GFa2) -> GFz 12 1 1
(GFa1 & GFa2 & GFa3) -> GFz 41 1 1
FG(a|b)|FG(!a|Xb) 4 2 2
FG(a|b)|FG(!a|Xb)|FG(a|XXb) 21 5 4
FG(a|b)|FG(!a|Xb)|FG(a|XXb)|FG(!a|XXXb) 170 15 8
- print_dot(), used to print automata in GraphViz's format,
underwent several changes:
@ -219,6 +248,13 @@ New in spot 2.5.3.dev (not yet released)
Make sure to quote %L to protect the potential commas:
genltl --format='%F,"%L",%f' ...
- In Spot 2.5 and prior running "ltl2tgba --generic --det" on some
formula would attempt to translate it as deterministic TGBA or
determinize it into an automaton with parity acceptance. Version
2.5 introduced --parity to force parity acceptance on the output.
This version finally gives --generic some more natural semantics:
any acceptance condition can be used.
New in spot 2.5.3 (2018-04-20)

View file

@ -45,6 +45,9 @@ static const argp_option options[] =
more rules based on automata-based implication checks. The default value \
depends on the --low/--medium/--high settings.") },
{ nullptr, 0, nullptr, 0, "Translation options:", 0 },
{ DOC("ltl-split", "Set to 0 to disable the translation of automata \
as product or sum of subformulas. This is currently used only when \
building automata with generic acceptance conditions.") },
{ DOC("comp-susp", "Set to 1 to enable compositional suspension, \
as described in our SPIN'13 paper (see Bibliography below). Set to 2, \
to build only the skeleton TGBA without composing it. Set to 0 (the \

View file

@ -18,8 +18,8 @@ a quick summary:
- =--ba= (or =-B=) outputs state-based Büchi automata
- =--monitor= (or =-M=) outputs monitors
- =--generic --deterministic= (or =-DG=) will do whatever it takes to
produce a deterministic automaton, and may output generalized Büchi,
or parity acceptance.
produce a deterministic automaton, and may use any acceptance
condition
- =--parity --deterministic= (or =-DP=) will produce a deterministic
automaton with parity acceptance.
@ -466,8 +466,7 @@ In particular, for properties more complex than obligations, it is
possible that no deterministic TGBA exist, and even if it exists,
=ltl2tgba= might not find it: so a non-deterministic automaton can be
returned in this case. If you absolutely want a deterministic
automaton, [[#generic][read on about the =--generic= option below]].
automaton, see [[#generic][the =--generic= option]] or [[#parity][the =--parity= option]].
An example formula where the difference between =-D= and =--small= is
flagrant is =Ga|Gb|Gc=:
@ -724,9 +723,15 @@ expectations.
:END:
The =--generic= (or =-G=) option allows =ltl2tgba= to use more
complex acceptance. Combined with =--deterministic= (or =-D=) this
allows the use of a determinization algorithm that produces
automata with parity acceptance.
complex acceptance conditions. This is done by splitting the LTL
formulas on Boolean connectives to recognize some subformulas that
are either to translate with different types of acceptance
conditions, and then combining everything back together.
Combined with =--deterministic= (or =-D=) this allows the use of a
determinization algorithm that produces automata with parity
acceptance. This is only used for subformulas for which we do not
know a better way to get a deterministic automaton.
For instance =FGa= is the typical formula for which not
deterministic TGBA exists.
@ -743,7 +748,7 @@ ltl2tgba "FGa" -D -d
#+RESULTS:
[[file:ltl2tgba-fga.svg]]
But with =--generic=, =ltl2tgba= will output the following Rabin automaton:
But with =--generic=, =ltl2tgba= will output the following co-Büchi automaton:
#+NAME: ltl2tgba-fga-D
#+BEGIN_SRC sh :results verbatim :exports code
@ -757,9 +762,54 @@ ltl2tgba "FGa" -G -D -d
#+RESULTS:
[[file:ltl2tgba-fga-D.svg]]
Note that determinization algorithm implemented actually outputs
parity acceptance, but =Fin(0)&Inf(1)= can be interpreted either as
=Rabin 1= or =parity min odd 2=.
If we translate =Fb|Gc= as a deterministic automaton with any
acceptance condition, we get a weak and deterministic Büchi automaton:
#+NAME: ltl2tgba-fbgc-D
#+BEGIN_SRC sh :results verbatim :exports code
ltl2tgba "Fb|Gc" -G -D -d
#+END_SRC
#+BEGIN_SRC dot :file ltl2tgba-fbgc-D.svg :var txt=ltl2tgba-fbgc-D :exports results
$txt
#+END_SRC
#+RESULTS:
[[file:ltl2tgba-fbgc-D.svg]]
Finally if we translate the conjunction of these two subformulas, a
product of these two automata will be made, producing:
#+NAME: ltl2tgba-fbgcfga-D
#+BEGIN_SRC sh :results verbatim :exports code
ltl2tgba "(Fb|Gc)&FGa" -G -D -d
#+END_SRC
#+BEGIN_SRC dot :file ltl2tgba-fbgcfga-D.svg :var txt=ltl2tgba-fbgcfga-D :exports results
$txt
#+END_SRC
#+RESULTS:
[[file:ltl2tgba-fbgcfga-D.svg]]
Disabling the splitting of the original formula LTL formulas can be
done using option =-x ltl-split=0=. In that case the formula
=(Fb|Gc)&FGa= will be translated into a single TGBA, and because this
TGBA is non-deterministic, it will then be determinized into an
automaton with parity acceptance:
#+NAME: ltl2tgba-fbgcfga-nosplit-D
#+BEGIN_SRC sh :results verbatim :exports code
ltl2tgba "(Fb|Gc)&FGa" -G -D -xltl-split=0 -d
#+END_SRC
#+BEGIN_SRC dot :file ltl2tgba-fbgcfga-nosplit-D.svg :var txt=ltl2tgba-fbgcfga-nosplit-D :exports results
$txt
#+END_SRC
#+RESULTS:
[[file:ltl2tgba-fbgcfga-nosplit-D.svg]]
The [[./man/spot-x.7.html][=spot-x=]](7) man page lists a few =-x= options (=det-scc=,
@ -785,7 +835,7 @@ would be larger if SCC-based optimizations were disabled:
#+NAME: ltl2tgba-det2
#+BEGIN_SRC sh :results verbatim :exports code
ltl2tgba "F(a W FGb)" -x '!det-scc' -G -D -d
ltl2tgba "F(a W FGb)" -xdet-scc=0 -G -D -d
#+END_SRC
#+BEGIN_SRC dot :file ltl2tgba-det2.svg :var txt=ltl2tgba-det2 :exports results
@ -795,11 +845,10 @@ ltl2tgba "F(a W FGb)" -x '!det-scc' -G -D -d
#+RESULTS:
[[file:ltl2tgba-det2.svg]]
While the =--generic= option currently only builds automata with
generalized-Büchi or parity acceptance, this is very likely to change
in the future.
* Deterministic automata with =--parity --deterministic=
:PROPERTIES:
:CUSTOM_ID: parity
:END:
Using the =--parity= (or upper-case =-P=) option will force the
acceptance condition to be of a parity type. This has to be

View file

@ -26,6 +26,7 @@
#include <spot/twaalgos/relabel.hh>
#include <spot/twaalgos/gfguarantee.hh>
#include <spot/twaalgos/isdet.hh>
#include <spot/twaalgos/product.hh>
namespace spot
{
@ -35,7 +36,9 @@ namespace spot
comp_susp_ = early_susp_ = skel_wdba_ = skel_simul_ = 0;
relabel_bool_ = tls_impl_ = -1;
gf_guarantee_ = level_ != Low;
ltl_split_ = true;
opt_ = opt;
if (!opt)
return;
@ -49,6 +52,7 @@ namespace spot
}
tls_impl_ = opt->get("tls-impl", -1);
gf_guarantee_ = opt->get("gf-guarantee", gf_guarantee_);
ltl_split_ = opt->get("ltl-split", 1);
}
void translator::build_simplifier(const bdd_dict_ptr& dict)
@ -95,6 +99,8 @@ namespace spot
throw std::runtime_error
("tls-impl should take a value between 0 and 3");
}
if (comp_susp_ > 0 || (ltl_split_ && type_ == Generic))
options.favor_event_univ = true;
simpl_owned_ = simpl_ = new tl_simplifier(options, dict);
}
@ -160,37 +166,160 @@ namespace spot
twa_graph_ptr aut;
twa_graph_ptr aut2 = nullptr;
if (comp_susp_ > 0)
{
// FIXME: Handle unambiguous_ automata?
int skel_wdba = skel_wdba_;
if (skel_wdba < 0)
skel_wdba = (pref_ & postprocessor::Deterministic) ? 1 : 2;
aut = compsusp(r, simpl_->get_dict(), skel_wdba == 0,
skel_simul_ == 0, early_susp_ != 0,
comp_susp_ == 2, skel_wdba == 2, false);
if (ltl_split_ && type_ == Generic && !r.is_syntactic_obligation())
{
formula r2 = r;
unsigned leading_x = 0;
while (r2.is(op::X))
{
r2 = r2[0];
++leading_x;
}
// F(q|u|f) = q|F(u)|F(f)
// G(q&e&f) = q&G(e)&G(f)
bool want_u = r2.is({op::F, op::Or});
if (want_u || r2.is({op::G, op::And}))
{
std::vector<formula> susp;
std::vector<formula> rest;
auto op1 = r2.kind();
auto op2 = r2[0].kind();
for (formula child: r2[0])
{
bool u = child.is_universal();
bool e = child.is_eventual();
if (u && e)
susp.push_back(child);
else if ((want_u && u) || (!want_u && e))
susp.push_back(formula::unop(op1, child));
else
rest.push_back(child);
}
susp.push_back(formula::unop(op1, formula::multop(op2, rest)));
r2 = formula::multop(op2, susp);
}
if (r2.is_syntactic_obligation() || !r2.is(op::And, op::Or))
goto nosplit;
bool is_and = r2.is(op::And);
// Let's classify subformulas.
std::vector<formula> oblg;
std::vector<formula> susp;
std::vector<formula> rest;
for (formula child: r2)
{
if (child.is_syntactic_obligation())
oblg.push_back(child);
else if (child.is_eventual() && child.is_universal())
susp.push_back(child);
else
rest.push_back(child);
}
option_map om;
if (opt_)
om = *opt_;
om.set("ltl-split", 0);
translator translate_without_split(simpl_, &om);
translate_without_split.set_pref(pref_);
translate_without_split.set_level(level_);
translate_without_split.set_type(type_);
auto transrun = [&](formula f)
{
if (f == r2)
return translate_without_split.run(f);
else
return run(f);
};
aut = nullptr;
// All obligations can be converted into a minimal WDBA.
if (!oblg.empty())
{
formula oblg_f = formula::multop(r2.kind(), oblg);
aut = transrun(oblg_f);
}
if (!rest.empty())
{
formula rest_f = formula::multop(r2.kind(), rest);
twa_graph_ptr rest_aut = transrun(rest_f);
if (aut == nullptr)
aut = rest_aut;
else if (is_and)
aut = product(aut, rest_aut);
else
aut = product_or(aut, rest_aut);
}
if (!susp.empty())
{
twa_graph_ptr susp_aut = nullptr;
// Each suspendable formula separately
for (formula f: susp)
{
twa_graph_ptr one = transrun(f);
if (!susp_aut)
susp_aut = one;
else if (is_and)
susp_aut = product(susp_aut, one);
else
susp_aut = product_or(susp_aut, one);
}
if (aut == nullptr)
aut = susp_aut;
else if (is_and)
aut = product_susp(aut, susp_aut);
else
aut = product_or_susp(aut, susp_aut);
}
if (leading_x > 0)
{
unsigned init = aut->get_init_state_number();
do
{
unsigned tmp = aut->new_state();
aut->new_edge(tmp, init, bddtrue);
init = tmp;
}
while (--leading_x);
aut->set_init_state(init);
}
}
else
{
if (gf_guarantee_ && PREF_ != Any)
nosplit:
if (comp_susp_ > 0)
{
bool det = unambiguous || (PREF_ == Deterministic);
bool sba = type_ == BA || (pref_ & SBAcc);
if ((type_ & (BA | Parity | Generic)) || type_ == TGBA)
aut2 = gf_guarantee_to_ba_maybe(r, simpl_->get_dict(), det, sba);
if (aut2 && (type_ & (BA | Parity)) && (pref_ & Deterministic))
return finalize(aut2);
if (!aut2 && (type_ & (Generic | Parity | CoBuchi)))
// FIXME: Handle unambiguous_ automata?
int skel_wdba = skel_wdba_;
if (skel_wdba < 0)
skel_wdba = (pref_ & postprocessor::Deterministic) ? 1 : 2;
aut = compsusp(r, simpl_->get_dict(), skel_wdba == 0,
skel_simul_ == 0, early_susp_ != 0,
comp_susp_ == 2, skel_wdba == 2, false);
}
else
{
if (gf_guarantee_ && PREF_ != Any)
{
aut2 = fg_safety_to_dca_maybe(r, simpl_->get_dict(), sba);
if (aut2
&& (type_ & (CoBuchi | Parity))
bool det = unambiguous || (PREF_ == Deterministic);
bool sba = type_ == BA || (pref_ & SBAcc);
if ((type_ & (BA | Parity | Generic)) || type_ == TGBA)
aut2 = gf_guarantee_to_ba_maybe(r, simpl_->get_dict(),
det, sba);
if (aut2 && ((type_ == BA) || (type_ & Parity))
&& (pref_ & Deterministic))
return finalize(aut2);
if (!aut2 && (type_ & (Generic | Parity | CoBuchi)))
{
aut2 = fg_safety_to_dca_maybe(r, simpl_->get_dict(), sba);
if (aut2
&& (type_ & (CoBuchi | Parity))
&& (pref_ & Deterministic))
return finalize(aut2);
}
}
}
bool exprop = unambiguous || level_ == postprocessor::High;
aut = ltl_to_tgba_fm(r, simpl_->get_dict(), exprop,
true, false, false, nullptr, nullptr,

View file

@ -149,6 +149,8 @@ namespace spot
int relabel_bool_;
int tls_impl_;
bool gf_guarantee_;
bool ltl_split_;
const option_map* opt_;
};
/// @}

View file

@ -183,29 +183,29 @@ cat >exp<<EOF
"ms-example=4,2",10
"ms-example=4,3",11
"ms-example=4,4",12
"ms-phi-r=0",2
"ms-phi-r=1",16
"ms-phi-r=2",29
"ms-phi-s=0",5
"ms-phi-s=1",8
"ms-phi-s=2",497
"ms-phi-r=0",1
"ms-phi-r=1",1
"ms-phi-r=2",1
"ms-phi-s=0",1
"ms-phi-s=1",1
"ms-phi-s=2",1
"ms-phi-h=0",1
"ms-phi-h=1",3
"ms-phi-h=2",7
"ms-phi-h=3",15
"ms-phi-h=4",31
"ms-phi-h=1",2
"ms-phi-h=2",5
"ms-phi-h=3",19
"ms-phi-h=4",83
"gf-equiv=0",1
"gf-equiv=1",4
"gf-equiv=2",8
"gf-equiv=3",21
"gf-equiv=4",81
"gf-equiv=5",431
"gf-equiv=1",1
"gf-equiv=2",1
"gf-equiv=3",1
"gf-equiv=4",1
"gf-equiv=5",1
"gf-implies=0",1
"gf-implies=1",5
"gf-implies=2",12
"gf-implies=3",41
"gf-implies=4",186
"gf-implies=5",1047
"gf-implies=1",1
"gf-implies=2",1
"gf-implies=3",1
"gf-implies=4",1
"gf-implies=5",1
"gf-equiv-xn=1",2
"gf-equiv-xn=2",4
"gf-equiv-xn=3",8

View file

@ -1,6 +1,6 @@
#!/bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2016 Laboratoire de Recherche
# Copyright (C) 2016, 2018 Laboratoire de Recherche
# et Développement de l'Epita (LRDE).
#
# This file is part of Spot, a model checking library.
@ -21,8 +21,10 @@
. ./defs
set -e
# formula 'XX((Fa|Gb)&FGc)' tests the X removal of the ltl-split path
randltl -n 100 p1 p2 p3 --tree-size 5..15 --seed=200 |
ltlcross --timeout=60 \
ltlcross -F- -f 'XX((Fa|Gb)&FGc)' --timeout=60 \
"ltl2tgba %f > %T" \
"ltl2tgba -G -D %f > %T" \
"ltl2tgba -G -D %f | autfilt --gsa=unique-fin > %T" \

View file

@ -2216,84 +2216,62 @@
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"244pt\" height=\"212pt\"\n",
" viewBox=\"0.00 0.00 244.00 212.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 208)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-208 240,-208 240,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"66\" y=\"-189.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Fin(</text>\n",
"<text text-anchor=\"start\" x=\"91\" y=\"-189.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"107\" y=\"-189.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) &amp; Inf(</text>\n",
"<text text-anchor=\"start\" x=\"150\" y=\"-189.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"166\" y=\"-189.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)</text>\n",
"<text text-anchor=\"start\" x=\"89\" y=\"-175.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Rabin 1]</text>\n",
"<svg width=\"165pt\" height=\"161pt\"\n",
" viewBox=\"0.00 0.00 165.00 161.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 157)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-157 161,-157 161,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"57.5\" y=\"-138.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n",
"<text text-anchor=\"start\" x=\"79.5\" y=\"-138.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"95.5\" y=\"-138.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)</text>\n",
"<text text-anchor=\"start\" x=\"55.5\" y=\"-124.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Büchi]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-69\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-65.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-69C4.178,-69 17.9448,-69 30.9241,-69\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-69 30.9808,-72.1501 34.4807,-69 30.9807,-69.0001 30.9807,-69.0001 30.9807,-69.0001 34.4807,-69 30.9807,-65.8501 37.9807,-69 37.9807,-69\"/>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-18C4.178,-18 17.9448,-18 30.9241,-18\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#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\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M49.6208,-35.0373C48.3189,-44.8579 50.4453,-54 56,-54 60.166,-54 62.4036,-48.8576 62.7128,-42.1433\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#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\"/>\n",
"<text text-anchor=\"start\" x=\"52.5\" y=\"-72.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<text text-anchor=\"start\" x=\"48\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"218\" cy=\"-69\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"218\" y=\"-65.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"139\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"139\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M72.0705,-77.2478C84.0909,-82.934 101.1227,-89.9889 117,-93 132.7198,-95.9812 137.2496,-95.8149 153,-93 167.4876,-90.4108 182.9734,-84.8149 195.1944,-79.6776\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"201.6209,-76.8927 196.4506,-82.5663 198.4095,-78.2844 195.198,-79.6761 195.198,-79.6761 195.198,-79.6761 198.4095,-78.2844 193.9455,-76.7858 201.6209,-76.8927 201.6209,-76.8927\"/>\n",
"<text text-anchor=\"start\" x=\"129.5\" y=\"-98.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"135\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"135\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M71.232,-59.1667C83.3632,-51.3352 100.4804,-40.2848 113.9263,-31.6045\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"119.8148,-27.8031 115.6423,-34.2462 116.8743,-29.7014 113.9338,-31.5998 113.9338,-31.5998 113.9338,-31.5998 116.8743,-29.7014 112.2253,-28.9533 119.8148,-27.8031 119.8148,-27.8031\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-48.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M74.0098,-18C85.5679,-18 100.7507,-18 113.5345,-18\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"120.7388,-18 113.7388,-21.1501 117.2388,-18 113.7388,-18.0001 113.7388,-18.0001 113.7388,-18.0001 117.2388,-18 113.7387,-14.8501 120.7388,-18 120.7388,-18\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-21.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M214.4047,-86.7817C213.7938,-96.3149 214.9922,-105 218,-105 220.2089,-105 221.4419,-100.3161 221.6991,-94.0521\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"221.5953,-86.7817 224.845,-93.736 221.6453,-90.2814 221.6954,-93.781 221.6954,-93.781 221.6954,-93.781 221.6453,-90.2814 218.5457,-93.8261 221.5953,-86.7817 221.5953,-86.7817\"/>\n",
"<text text-anchor=\"start\" x=\"214.5\" y=\"-108.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M135.4047,-35.7817C134.7938,-45.3149 135.9922,-54 139,-54 141.2089,-54 142.4419,-49.3161 142.6991,-43.0521\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"142.5953,-35.7817 145.845,-42.736 142.6453,-39.2814 142.6954,-42.781 142.6954,-42.781 142.6954,-42.781 142.6453,-39.2814 139.5457,-42.8261 142.5953,-35.7817 142.5953,-35.7817\"/>\n",
"<text text-anchor=\"start\" x=\"133.5\" y=\"-72.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"<text text-anchor=\"start\" x=\"131\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M212.1479,-86.1418C208.7056,-103.585 210.6563,-123 218,-123 224.3684,-123 226.6812,-108.3996 224.9382,-93.146\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"223.8521,-86.1418 228.0376,-92.5763 224.3884,-89.6004 224.9248,-93.0591 224.9248,-93.0591 224.9248,-93.0591 224.3884,-89.6004 221.812,-93.5418 223.8521,-86.1418 223.8521,-86.1418\"/>\n",
"<text text-anchor=\"start\" x=\"212.5\" y=\"-141.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"<text text-anchor=\"start\" x=\"210\" y=\"-126.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>2&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M150.6117,-27.5927C163.4799,-35.4997 181.8775,-46.8042 196.1993,-55.6044\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"202.4583,-59.4503 194.8451,-58.4694 199.4763,-57.6179 196.4942,-55.7856 196.4942,-55.7856 196.4942,-55.7856 199.4763,-57.6179 198.1434,-53.1017 202.4583,-59.4503 202.4583,-59.4503\"/>\n",
"<text text-anchor=\"start\" x=\"171\" y=\"-49.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>2&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M128.2664,-35.0373C126.8922,-44.8579 129.1367,-54 135,-54 139.3975,-54 141.7594,-48.8576 142.0858,-42.1433\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"141.7336,-35.0373 145.2263,-41.8728 141.9069,-38.533 142.0802,-42.0287 142.0802,-42.0287 142.0802,-42.0287 141.9069,-38.533 138.934,-42.1847 141.7336,-35.0373 141.7336,-35.0373\"/>\n",
"<text text-anchor=\"start\" x=\"131.5\" y=\"-72.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<text text-anchor=\"start\" x=\"127\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M133.494,-35.249C129.5865,-56.4346 131.4219,-84 139,-84 145.7493,-84 147.9433,-62.1347 145.582,-42.3851\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"144.506,-35.249 148.6646,-41.7011 145.0279,-38.7099 145.5498,-42.1708 145.5498,-42.1708 145.5498,-42.1708 145.0279,-38.7099 142.435,-42.6405 144.506,-35.249 144.506,-35.249\"/>\n",
"<text text-anchor=\"start\" x=\"135.5\" y=\"-87.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n",
@ -2368,111 +2346,110 @@
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"362pt\" height=\"179pt\"\n",
" viewBox=\"0.00 0.00 362.00 179.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 175)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-175 358,-175 358,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"95\" y=\"-156.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Fin(</text>\n",
"<text text-anchor=\"start\" x=\"120\" y=\"-156.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"136\" y=\"-156.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"183\" y=\"-156.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"199\" y=\"-156.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)&amp;Inf(</text>\n",
"<text text-anchor=\"start\" x=\"235\" y=\"-156.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"251\" y=\"-156.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">))</text>\n",
"<text text-anchor=\"start\" x=\"131.5\" y=\"-142.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Streett&#45;like 3]</text>\n",
"<svg width=\"378pt\" height=\"176pt\"\n",
" viewBox=\"0.00 0.00 378.00 176.46\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 172.4617)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-172.4617 374,-172.4617 374,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"138\" y=\"-154.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n",
"<text text-anchor=\"start\" x=\"160\" y=\"-154.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"176\" y=\"-154.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)&amp;Inf(</text>\n",
"<text text-anchor=\"start\" x=\"212\" y=\"-154.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"228\" y=\"-154.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)</text>\n",
"<text text-anchor=\"start\" x=\"141\" y=\"-140.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[gen. Büchi 2]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-69\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-65.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-31.4617\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-27.7617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-69C4.178,-69 17.9448,-69 30.9241,-69\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-69 30.9808,-72.1501 34.4807,-69 30.9807,-69.0001 30.9807,-69.0001 30.9807,-69.0001 34.4807,-69 30.9807,-65.8501 37.9807,-69 37.9807,-69\"/>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-31.4617C4.178,-31.4617 17.9448,-31.4617 30.9241,-31.4617\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-31.4617 30.9808,-34.6118 34.4807,-31.4618 30.9807,-31.4618 30.9807,-31.4618 30.9807,-31.4618 34.4807,-31.4618 30.9807,-28.3118 37.9807,-31.4617 37.9807,-31.4617\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"232\" cy=\"-69\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"232\" y=\"-65.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"160\" cy=\"-66.4617\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"160\" y=\"-62.7617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M73.1713,-75.3338C79.119,-77.4923 85.8387,-79.8915 92,-82 121.7965,-92.1967 130.8917,-97.907 162,-93 178.1018,-90.4601 195.4382,-84.5422 208.8299,-79.2188\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"215.4459,-76.5102 210.1612,-82.0776 212.2068,-77.8363 208.9677,-79.1624 208.9677,-79.1624 208.9677,-79.1624 212.2068,-77.8363 207.7742,-76.2472 215.4459,-76.5102 215.4459,-76.5102\"/>\n",
"<text text-anchor=\"start\" x=\"138.5\" y=\"-97.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M73.1735,-37.2413C90.3354,-43.0169 116.864,-51.9448 136.0822,-58.4125\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"142.801,-60.6736 135.1619,-61.4263 139.4838,-59.5572 136.1666,-58.4408 136.1666,-58.4408 136.1666,-58.4408 139.4838,-59.5572 137.1714,-55.4553 142.801,-60.6736 142.801,-60.6736\"/>\n",
"<text text-anchor=\"start\" x=\"104.5\" y=\"-71.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-57.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"108\" y=\"-57.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"144\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"144\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"248\" cy=\"-31.4617\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"248\" y=\"-27.7617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M71.7326,-59.8822C85.7481,-51.7596 106.3994,-39.7912 122.0408,-30.7264\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"128.4036,-27.0388 123.9266,-33.2742 125.3754,-28.7938 122.3471,-30.5489 122.3471,-30.5489 122.3471,-30.5489 125.3754,-28.7938 120.7676,-27.8235 128.4036,-27.0388 128.4036,-27.0388\"/>\n",
"<text text-anchor=\"start\" x=\"96.5\" y=\"-66.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-51.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M74.1845,-29.2012C98.0199,-26.5175 141.131,-22.6229 178,-24.4617 192.9238,-25.2061 209.5708,-26.8377 222.8855,-28.3386\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"229.9076,-29.1524 222.5914,-31.4755 226.4308,-28.7494 222.9541,-28.3464 222.9541,-28.3464 222.9541,-28.3464 226.4308,-28.7494 223.3168,-25.2174 229.9076,-29.1524 229.9076,-29.1524\"/>\n",
"<text text-anchor=\"start\" x=\"154.5\" y=\"-28.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M224.3321,-85.2903C222.4831,-95.3892 225.0391,-105 232,-105 237.2207,-105 239.9636,-99.5939 240.2287,-92.6304\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"239.6679,-85.2903 243.3421,-92.0299 239.9346,-88.7801 240.2013,-92.2699 240.2013,-92.2699 240.2013,-92.2699 239.9346,-88.7801 237.0604,-92.5099 239.6679,-85.2903 239.6679,-85.2903\"/>\n",
"<text text-anchor=\"start\" x=\"226.5\" y=\"-123.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"<text text-anchor=\"start\" x=\"224\" y=\"-108.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M152.3321,-82.752C150.4831,-92.8509 153.0391,-102.4617 160,-102.4617 165.2207,-102.4617 167.9636,-97.0556 168.2287,-90.0921\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"167.6679,-82.752 171.3421,-89.4916 167.9346,-86.2418 168.2013,-89.7316 168.2013,-89.7316 168.2013,-89.7316 167.9346,-86.2418 165.0604,-89.9717 167.6679,-82.752 167.6679,-82.752\"/>\n",
"<text text-anchor=\"start\" x=\"156.5\" y=\"-121.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<text text-anchor=\"start\" x=\"152\" y=\"-106.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>1&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M176.9673,-59.7134C190.4805,-54.3388 209.5478,-46.7552 224.5255,-40.7982\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"231.0848,-38.1894 225.7445,-43.7034 227.8326,-39.4829 224.5804,-40.7764 224.5804,-40.7764 224.5804,-40.7764 227.8326,-39.4829 223.4162,-37.8494 231.0848,-38.1894 231.0848,-38.1894\"/>\n",
"<text text-anchor=\"start\" x=\"198.5\" y=\"-70.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"<text text-anchor=\"start\" x=\"196\" y=\"-55.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>2&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M240.3321,-47.752C238.4831,-57.8509 241.0391,-67.4617 248,-67.4617 253.2207,-67.4617 255.9636,-62.0556 256.2287,-55.0921\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"255.6679,-47.752 259.3421,-54.4916 255.9346,-51.2418 256.2013,-54.7316 256.2013,-54.7316 256.2013,-54.7316 255.9346,-51.2418 253.0604,-54.9717 255.6679,-47.752 255.6679,-47.752\"/>\n",
"<text text-anchor=\"start\" x=\"242.5\" y=\"-86.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"<text text-anchor=\"start\" x=\"240\" y=\"-71.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"336\" cy=\"-69\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"336\" y=\"-65.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"352\" cy=\"-31.4617\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"352\" y=\"-27.7617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;3 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M249.9127,-71.3854C255.6764,-72.047 262.0979,-72.6731 268,-73 282.2005,-73.7865 285.7995,-73.7865 300,-73 303.5966,-72.8008 307.3861,-72.4905 311.102,-72.1287\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"318.0873,-71.3854 311.46,-75.2585 314.607,-71.7558 311.1266,-72.1262 311.1266,-72.1262 311.1266,-72.1262 314.607,-71.7558 310.7933,-68.9939 318.0873,-71.3854 318.0873,-71.3854\"/>\n",
"<text text-anchor=\"start\" x=\"280.5\" y=\"-91.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<text text-anchor=\"start\" x=\"276\" y=\"-76.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>2&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M159.7326,-27.1178C173.7481,-35.2404 194.3994,-47.2088 210.0408,-56.2736\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"216.4036,-59.9612 208.7676,-59.1765 213.3754,-58.2062 210.3471,-56.4511 210.3471,-56.4511 210.3471,-56.4511 213.3754,-58.2062 211.9266,-53.7258 216.4036,-59.9612 216.4036,-59.9612\"/>\n",
"<text text-anchor=\"start\" x=\"182.5\" y=\"-66.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"<text text-anchor=\"start\" x=\"180\" y=\"-51.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>2&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M136.3321,-34.2903C134.4831,-44.3892 137.0391,-54 144,-54 149.2207,-54 151.9636,-48.5939 152.2287,-41.6304\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"151.6679,-34.2903 155.3421,-41.0299 151.9346,-37.7801 152.2013,-41.2699 152.2013,-41.2699 152.2013,-41.2699 151.9346,-37.7801 149.0604,-41.5099 151.6679,-34.2903 151.6679,-34.2903\"/>\n",
"<text text-anchor=\"start\" x=\"140.5\" y=\"-72.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<text text-anchor=\"start\" x=\"136\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<title>2&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M265.9127,-33.8471C271.6764,-34.5087 278.0979,-35.1348 284,-35.4617 298.2005,-36.2482 301.7995,-36.2482 316,-35.4617 319.5966,-35.2625 323.3861,-34.9522 327.102,-34.5905\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"334.0873,-33.8471 327.46,-37.7203 330.607,-34.2175 327.1266,-34.5879 327.1266,-34.5879 327.1266,-34.5879 330.607,-34.2175 326.7933,-31.4556 334.0873,-33.8471 334.0873,-33.8471\"/>\n",
"<text text-anchor=\"start\" x=\"296.5\" y=\"-54.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<text text-anchor=\"start\" x=\"292\" y=\"-39.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;1 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>3&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M323.2708,-55.7114C316.8937,-50.0093 308.6876,-43.9808 300,-41 286.5476,-36.3844 281.4524,-36.3844 268,-41 261.62,-43.189 255.4998,-47.0217 250.1728,-51.1617\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"244.7292,-55.7114 248.0802,-48.8053 247.4147,-53.4669 250.1003,-51.2223 250.1003,-51.2223 250.1003,-51.2223 247.4147,-53.4669 252.1203,-53.6393 244.7292,-55.7114 244.7292,-55.7114\"/>\n",
"<text text-anchor=\"start\" x=\"278.5\" y=\"-58.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"<text text-anchor=\"start\" x=\"268\" y=\"-44.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"284\" y=\"-44.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<!-- 3&#45;&gt;2 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>3&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M339.2708,-18.1731C332.8937,-12.471 324.6876,-6.4425 316,-3.4617 302.5476,1.1539 297.4524,1.1539 284,-3.4617 277.62,-5.6507 271.4998,-9.4834 266.1728,-13.6234\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"260.7292,-18.1731 264.0802,-11.2671 263.4147,-15.9286 266.1003,-13.6841 266.1003,-13.6841 266.1003,-13.6841 263.4147,-15.9286 268.1203,-16.101 260.7292,-18.1731 260.7292,-18.1731\"/>\n",
"<text text-anchor=\"start\" x=\"294.5\" y=\"-21.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"<text text-anchor=\"start\" x=\"284\" y=\"-7.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"300\" y=\"-7.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>3&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M327.0212,-84.916C324.679,-95.1504 327.6719,-105 336,-105 342.3762,-105 345.625,-99.2263 345.7465,-91.9268\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"344.9788,-84.916 348.8721,-91.5315 345.3598,-88.3952 345.7408,-91.8744 345.7408,-91.8744 345.7408,-91.8744 345.3598,-88.3952 342.6095,-92.2174 344.9788,-84.916 344.9788,-84.916\"/>\n",
"<text text-anchor=\"start\" x=\"332.5\" y=\"-108.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M343.0212,-47.3778C340.679,-57.6121 343.6719,-67.4617 352,-67.4617 358.3762,-67.4617 361.625,-61.6881 361.7465,-54.3885\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"360.9788,-47.3778 364.8721,-53.9932 361.3598,-50.857 361.7408,-54.3362 361.7408,-54.3362 361.7408,-54.3362 361.3598,-50.857 358.6095,-54.6791 360.9788,-47.3778 360.9788,-47.3778\"/>\n",
"<text text-anchor=\"start\" x=\"348.5\" y=\"-71.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n",
@ -2494,84 +2471,62 @@
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"244pt\" height=\"212pt\"\n",
" viewBox=\"0.00 0.00 244.00 212.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 208)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-208 240,-208 240,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"66\" y=\"-189.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Fin(</text>\n",
"<text text-anchor=\"start\" x=\"91\" y=\"-189.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"107\" y=\"-189.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) &amp; Inf(</text>\n",
"<text text-anchor=\"start\" x=\"150\" y=\"-189.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"166\" y=\"-189.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)</text>\n",
"<text text-anchor=\"start\" x=\"89\" y=\"-175.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Rabin 1]</text>\n",
"<svg width=\"165pt\" height=\"161pt\"\n",
" viewBox=\"0.00 0.00 165.00 161.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 157)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-157 161,-157 161,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"57.5\" y=\"-138.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n",
"<text text-anchor=\"start\" x=\"79.5\" y=\"-138.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"95.5\" y=\"-138.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)</text>\n",
"<text text-anchor=\"start\" x=\"55.5\" y=\"-124.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Büchi]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-69\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-65.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-69C4.178,-69 17.9448,-69 30.9241,-69\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-69 30.9808,-72.1501 34.4807,-69 30.9807,-69.0001 30.9807,-69.0001 30.9807,-69.0001 34.4807,-69 30.9807,-65.8501 37.9807,-69 37.9807,-69\"/>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-18C4.178,-18 17.9448,-18 30.9241,-18\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#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\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M49.6208,-35.0373C48.3189,-44.8579 50.4453,-54 56,-54 60.166,-54 62.4036,-48.8576 62.7128,-42.1433\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#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\"/>\n",
"<text text-anchor=\"start\" x=\"52.5\" y=\"-72.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<text text-anchor=\"start\" x=\"48\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"218\" cy=\"-69\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"218\" y=\"-65.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"139\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"139\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M72.0705,-77.2478C84.0909,-82.934 101.1227,-89.9889 117,-93 132.7198,-95.9812 137.2496,-95.8149 153,-93 167.4876,-90.4108 182.9734,-84.8149 195.1944,-79.6776\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"201.6209,-76.8927 196.4506,-82.5663 198.4095,-78.2844 195.198,-79.6761 195.198,-79.6761 195.198,-79.6761 198.4095,-78.2844 193.9455,-76.7858 201.6209,-76.8927 201.6209,-76.8927\"/>\n",
"<text text-anchor=\"start\" x=\"129.5\" y=\"-98.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"135\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"135\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M71.232,-59.1667C83.3632,-51.3352 100.4804,-40.2848 113.9263,-31.6045\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"119.8148,-27.8031 115.6423,-34.2462 116.8743,-29.7014 113.9338,-31.5998 113.9338,-31.5998 113.9338,-31.5998 116.8743,-29.7014 112.2253,-28.9533 119.8148,-27.8031 119.8148,-27.8031\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-48.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M74.0098,-18C85.5679,-18 100.7507,-18 113.5345,-18\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"120.7388,-18 113.7388,-21.1501 117.2388,-18 113.7388,-18.0001 113.7388,-18.0001 113.7388,-18.0001 117.2388,-18 113.7387,-14.8501 120.7388,-18 120.7388,-18\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-21.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M214.4047,-86.7817C213.7938,-96.3149 214.9922,-105 218,-105 220.2089,-105 221.4419,-100.3161 221.6991,-94.0521\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"221.5953,-86.7817 224.845,-93.736 221.6453,-90.2814 221.6954,-93.781 221.6954,-93.781 221.6954,-93.781 221.6453,-90.2814 218.5457,-93.8261 221.5953,-86.7817 221.5953,-86.7817\"/>\n",
"<text text-anchor=\"start\" x=\"214.5\" y=\"-108.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M135.4047,-35.7817C134.7938,-45.3149 135.9922,-54 139,-54 141.2089,-54 142.4419,-49.3161 142.6991,-43.0521\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"142.5953,-35.7817 145.845,-42.736 142.6453,-39.2814 142.6954,-42.781 142.6954,-42.781 142.6954,-42.781 142.6453,-39.2814 139.5457,-42.8261 142.5953,-35.7817 142.5953,-35.7817\"/>\n",
"<text text-anchor=\"start\" x=\"133.5\" y=\"-72.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"<text text-anchor=\"start\" x=\"131\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M212.1479,-86.1418C208.7056,-103.585 210.6563,-123 218,-123 224.3684,-123 226.6812,-108.3996 224.9382,-93.146\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"223.8521,-86.1418 228.0376,-92.5763 224.3884,-89.6004 224.9248,-93.0591 224.9248,-93.0591 224.9248,-93.0591 224.3884,-89.6004 221.812,-93.5418 223.8521,-86.1418 223.8521,-86.1418\"/>\n",
"<text text-anchor=\"start\" x=\"212.5\" y=\"-141.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"<text text-anchor=\"start\" x=\"210\" y=\"-126.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>2&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M150.6117,-27.5927C163.4799,-35.4997 181.8775,-46.8042 196.1993,-55.6044\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"202.4583,-59.4503 194.8451,-58.4694 199.4763,-57.6179 196.4942,-55.7856 196.4942,-55.7856 196.4942,-55.7856 199.4763,-57.6179 198.1434,-53.1017 202.4583,-59.4503 202.4583,-59.4503\"/>\n",
"<text text-anchor=\"start\" x=\"171\" y=\"-49.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>2&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M128.2664,-35.0373C126.8922,-44.8579 129.1367,-54 135,-54 139.3975,-54 141.7594,-48.8576 142.0858,-42.1433\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"141.7336,-35.0373 145.2263,-41.8728 141.9069,-38.533 142.0802,-42.0287 142.0802,-42.0287 142.0802,-42.0287 141.9069,-38.533 138.934,-42.1847 141.7336,-35.0373 141.7336,-35.0373\"/>\n",
"<text text-anchor=\"start\" x=\"131.5\" y=\"-72.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<text text-anchor=\"start\" x=\"127\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M133.494,-35.249C129.5865,-56.4346 131.4219,-84 139,-84 145.7493,-84 147.9433,-62.1347 145.582,-42.3851\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"144.506,-35.249 148.6646,-41.7011 145.0279,-38.7099 145.5498,-42.1708 145.5498,-42.1708 145.5498,-42.1708 145.0279,-38.7099 142.435,-42.6405 144.506,-35.249 144.506,-35.249\"/>\n",
"<text text-anchor=\"start\" x=\"135.5\" y=\"-87.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n",
@ -2646,111 +2601,110 @@
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"362pt\" height=\"179pt\"\n",
" viewBox=\"0.00 0.00 362.00 179.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 175)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-175 358,-175 358,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"95.5\" y=\"-156.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">(Fin(</text>\n",
"<text text-anchor=\"start\" x=\"123.5\" y=\"-156.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"139.5\" y=\"-156.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) &amp; Inf(</text>\n",
"<text text-anchor=\"start\" x=\"182.5\" y=\"-156.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"198.5\" y=\"-156.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)) | Inf(</text>\n",
"<text text-anchor=\"start\" x=\"238.5\" y=\"-156.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"254.5\" y=\"-156.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)</text>\n",
"<text text-anchor=\"start\" x=\"135\" y=\"-142.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Rabin&#45;like 2]</text>\n",
"<svg width=\"378pt\" height=\"176pt\"\n",
" viewBox=\"0.00 0.00 378.00 176.46\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 172.4617)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-172.4617 374,-172.4617 374,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"137.5\" y=\"-154.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n",
"<text text-anchor=\"start\" x=\"159.5\" y=\"-154.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"175.5\" y=\"-154.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) | Inf(</text>\n",
"<text text-anchor=\"start\" x=\"212.5\" y=\"-154.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"228.5\" y=\"-154.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)</text>\n",
"<text text-anchor=\"start\" x=\"150\" y=\"-140.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Fin&#45;less 2]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-69\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-65.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-31.4617\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-27.7617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-69C4.178,-69 17.9448,-69 30.9241,-69\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-69 30.9808,-72.1501 34.4807,-69 30.9807,-69.0001 30.9807,-69.0001 30.9807,-69.0001 34.4807,-69 30.9807,-65.8501 37.9807,-69 37.9807,-69\"/>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-31.4617C4.178,-31.4617 17.9448,-31.4617 30.9241,-31.4617\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-31.4617 30.9808,-34.6118 34.4807,-31.4618 30.9807,-31.4618 30.9807,-31.4618 30.9807,-31.4618 34.4807,-31.4618 30.9807,-28.3118 37.9807,-31.4617 37.9807,-31.4617\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"232\" cy=\"-69\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"232\" y=\"-65.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"160\" cy=\"-66.4617\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"160\" y=\"-62.7617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M73.1713,-75.3338C79.119,-77.4923 85.8387,-79.8915 92,-82 121.7965,-92.1967 130.8917,-97.907 162,-93 178.1018,-90.4601 195.4382,-84.5422 208.8299,-79.2188\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"215.4459,-76.5102 210.1612,-82.0776 212.2068,-77.8363 208.9677,-79.1624 208.9677,-79.1624 208.9677,-79.1624 212.2068,-77.8363 207.7742,-76.2472 215.4459,-76.5102 215.4459,-76.5102\"/>\n",
"<text text-anchor=\"start\" x=\"138.5\" y=\"-97.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M73.1735,-37.2413C90.3354,-43.0169 116.864,-51.9448 136.0822,-58.4125\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"142.801,-60.6736 135.1619,-61.4263 139.4838,-59.5572 136.1666,-58.4408 136.1666,-58.4408 136.1666,-58.4408 139.4838,-59.5572 137.1714,-55.4553 142.801,-60.6736 142.801,-60.6736\"/>\n",
"<text text-anchor=\"start\" x=\"104.5\" y=\"-71.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-57.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"108\" y=\"-57.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"144\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"144\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"248\" cy=\"-31.4617\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"248\" y=\"-27.7617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M71.7326,-59.8822C85.7481,-51.7596 106.3994,-39.7912 122.0408,-30.7264\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"128.4036,-27.0388 123.9266,-33.2742 125.3754,-28.7938 122.3471,-30.5489 122.3471,-30.5489 122.3471,-30.5489 125.3754,-28.7938 120.7676,-27.8235 128.4036,-27.0388 128.4036,-27.0388\"/>\n",
"<text text-anchor=\"start\" x=\"96.5\" y=\"-66.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-51.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M74.1845,-29.2012C98.0199,-26.5175 141.131,-22.6229 178,-24.4617 192.9238,-25.2061 209.5708,-26.8377 222.8855,-28.3386\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"229.9076,-29.1524 222.5914,-31.4755 226.4308,-28.7494 222.9541,-28.3464 222.9541,-28.3464 222.9541,-28.3464 226.4308,-28.7494 223.3168,-25.2174 229.9076,-29.1524 229.9076,-29.1524\"/>\n",
"<text text-anchor=\"start\" x=\"154.5\" y=\"-28.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M224.3321,-85.2903C222.4831,-95.3892 225.0391,-105 232,-105 237.2207,-105 239.9636,-99.5939 240.2287,-92.6304\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"239.6679,-85.2903 243.3421,-92.0299 239.9346,-88.7801 240.2013,-92.2699 240.2013,-92.2699 240.2013,-92.2699 239.9346,-88.7801 237.0604,-92.5099 239.6679,-85.2903 239.6679,-85.2903\"/>\n",
"<text text-anchor=\"start\" x=\"226.5\" y=\"-123.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"<text text-anchor=\"start\" x=\"224\" y=\"-108.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M152.3321,-82.752C150.4831,-92.8509 153.0391,-102.4617 160,-102.4617 165.2207,-102.4617 167.9636,-97.0556 168.2287,-90.0921\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"167.6679,-82.752 171.3421,-89.4916 167.9346,-86.2418 168.2013,-89.7316 168.2013,-89.7316 168.2013,-89.7316 167.9346,-86.2418 165.0604,-89.9717 167.6679,-82.752 167.6679,-82.752\"/>\n",
"<text text-anchor=\"start\" x=\"156.5\" y=\"-121.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<text text-anchor=\"start\" x=\"152\" y=\"-106.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>1&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M176.9673,-59.7134C190.4805,-54.3388 209.5478,-46.7552 224.5255,-40.7982\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"231.0848,-38.1894 225.7445,-43.7034 227.8326,-39.4829 224.5804,-40.7764 224.5804,-40.7764 224.5804,-40.7764 227.8326,-39.4829 223.4162,-37.8494 231.0848,-38.1894 231.0848,-38.1894\"/>\n",
"<text text-anchor=\"start\" x=\"198.5\" y=\"-70.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"<text text-anchor=\"start\" x=\"196\" y=\"-55.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>2&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M240.3321,-47.752C238.4831,-57.8509 241.0391,-67.4617 248,-67.4617 253.2207,-67.4617 255.9636,-62.0556 256.2287,-55.0921\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"255.6679,-47.752 259.3421,-54.4916 255.9346,-51.2418 256.2013,-54.7316 256.2013,-54.7316 256.2013,-54.7316 255.9346,-51.2418 253.0604,-54.9717 255.6679,-47.752 255.6679,-47.752\"/>\n",
"<text text-anchor=\"start\" x=\"242.5\" y=\"-86.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"<text text-anchor=\"start\" x=\"240\" y=\"-71.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"336\" cy=\"-69\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"336\" y=\"-65.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"352\" cy=\"-31.4617\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"352\" y=\"-27.7617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;3 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M249.9127,-71.3854C255.6764,-72.047 262.0979,-72.6731 268,-73 282.2005,-73.7865 285.7995,-73.7865 300,-73 303.5966,-72.8008 307.3861,-72.4905 311.102,-72.1287\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"318.0873,-71.3854 311.46,-75.2585 314.607,-71.7558 311.1266,-72.1262 311.1266,-72.1262 311.1266,-72.1262 314.607,-71.7558 310.7933,-68.9939 318.0873,-71.3854 318.0873,-71.3854\"/>\n",
"<text text-anchor=\"start\" x=\"280.5\" y=\"-91.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<text text-anchor=\"start\" x=\"276\" y=\"-76.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>2&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M159.7326,-27.1178C173.7481,-35.2404 194.3994,-47.2088 210.0408,-56.2736\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"216.4036,-59.9612 208.7676,-59.1765 213.3754,-58.2062 210.3471,-56.4511 210.3471,-56.4511 210.3471,-56.4511 213.3754,-58.2062 211.9266,-53.7258 216.4036,-59.9612 216.4036,-59.9612\"/>\n",
"<text text-anchor=\"start\" x=\"182.5\" y=\"-66.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"<text text-anchor=\"start\" x=\"180\" y=\"-51.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>2&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M136.3321,-34.2903C134.4831,-44.3892 137.0391,-54 144,-54 149.2207,-54 151.9636,-48.5939 152.2287,-41.6304\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"151.6679,-34.2903 155.3421,-41.0299 151.9346,-37.7801 152.2013,-41.2699 152.2013,-41.2699 152.2013,-41.2699 151.9346,-37.7801 149.0604,-41.5099 151.6679,-34.2903 151.6679,-34.2903\"/>\n",
"<text text-anchor=\"start\" x=\"140.5\" y=\"-72.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<text text-anchor=\"start\" x=\"136\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<title>2&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M265.9127,-33.8471C271.6764,-34.5087 278.0979,-35.1348 284,-35.4617 298.2005,-36.2482 301.7995,-36.2482 316,-35.4617 319.5966,-35.2625 323.3861,-34.9522 327.102,-34.5905\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"334.0873,-33.8471 327.46,-37.7203 330.607,-34.2175 327.1266,-34.5879 327.1266,-34.5879 327.1266,-34.5879 330.607,-34.2175 326.7933,-31.4556 334.0873,-33.8471 334.0873,-33.8471\"/>\n",
"<text text-anchor=\"start\" x=\"296.5\" y=\"-54.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<text text-anchor=\"start\" x=\"292\" y=\"-39.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;1 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>3&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M323.2708,-55.7114C316.8937,-50.0093 308.6876,-43.9808 300,-41 286.5476,-36.3844 281.4524,-36.3844 268,-41 261.62,-43.189 255.4998,-47.0217 250.1728,-51.1617\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"244.7292,-55.7114 248.0802,-48.8053 247.4147,-53.4669 250.1003,-51.2223 250.1003,-51.2223 250.1003,-51.2223 247.4147,-53.4669 252.1203,-53.6393 244.7292,-55.7114 244.7292,-55.7114\"/>\n",
"<text text-anchor=\"start\" x=\"278.5\" y=\"-58.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"<text text-anchor=\"start\" x=\"268\" y=\"-44.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"284\" y=\"-44.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<!-- 3&#45;&gt;2 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>3&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M339.2708,-18.1731C332.8937,-12.471 324.6876,-6.4425 316,-3.4617 302.5476,1.1539 297.4524,1.1539 284,-3.4617 277.62,-5.6507 271.4998,-9.4834 266.1728,-13.6234\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"260.7292,-18.1731 264.0802,-11.2671 263.4147,-15.9286 266.1003,-13.6841 266.1003,-13.6841 266.1003,-13.6841 263.4147,-15.9286 268.1203,-16.101 260.7292,-18.1731 260.7292,-18.1731\"/>\n",
"<text text-anchor=\"start\" x=\"294.5\" y=\"-21.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"<text text-anchor=\"start\" x=\"284\" y=\"-7.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"300\" y=\"-7.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>3&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M327.0212,-84.916C324.679,-95.1504 327.6719,-105 336,-105 342.3762,-105 345.625,-99.2263 345.7465,-91.9268\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"344.9788,-84.916 348.8721,-91.5315 345.3598,-88.3952 345.7408,-91.8744 345.7408,-91.8744 345.7408,-91.8744 345.3598,-88.3952 342.6095,-92.2174 344.9788,-84.916 344.9788,-84.916\"/>\n",
"<text text-anchor=\"start\" x=\"332.5\" y=\"-108.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M343.0212,-47.3778C340.679,-57.6121 343.6719,-67.4617 352,-67.4617 358.3762,-67.4617 361.625,-61.6881 361.7465,-54.3885\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"360.9788,-47.3778 364.8721,-53.9932 361.3598,-50.857 361.7408,-54.3362 361.7408,-54.3362 361.7408,-54.3362 361.3598,-50.857 358.6095,-54.6791 360.9788,-47.3778 360.9788,-47.3778\"/>\n",
"<text text-anchor=\"start\" x=\"348.5\" y=\"-71.2617\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n",
@ -3140,7 +3094,7 @@
},
{
"cell_type": "code",
"execution_count": 10,
"execution_count": 7,
"metadata": {},
"outputs": [
{
@ -3506,13 +3460,6 @@
"source": [
"test(spot.translate('(Ga | GF!a)'), spot.translate('false'))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {

View file

@ -240,7 +240,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7feca4075120> >"
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a240ef0f0> >"
]
},
"execution_count": 4,
@ -352,7 +352,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa; proxy of <Swig Object of type 'std::shared_ptr< spot::twa > *' at 0x7fec96f528d0> >"
"<spot.twa; proxy of <Swig Object of type 'std::shared_ptr< spot::twa > *' at 0x7f6a1d7ce8a0> >"
]
},
"execution_count": 5,
@ -462,7 +462,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7feca4075120> >"
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a240ef0f0> >"
]
},
"execution_count": 6,
@ -695,7 +695,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fec96f528a0> >"
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a1d7ce8d0> >"
]
},
"execution_count": 8,
@ -892,7 +892,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fec96f528a0> >"
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a1d7ce8d0> >"
]
},
"execution_count": 11,
@ -977,7 +977,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fec96f52a50> >"
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a1d7ce060> >"
]
},
"metadata": {},
@ -1032,7 +1032,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fec96f529f0> >"
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a240e6f60> >"
]
},
"metadata": {},
@ -1126,7 +1126,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fec96f52ab0> >"
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a1d7ce9f0> >"
]
},
"execution_count": 13,
@ -1257,7 +1257,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fec96f52ab0> >"
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a1d7ce9f0> >"
]
},
"metadata": {},
@ -1322,7 +1322,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fec96f52a50> >"
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a1d7ce060> >"
]
},
"metadata": {},
@ -1377,7 +1377,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fec96f529f0> >"
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a240e6f60> >"
]
},
"metadata": {},
@ -1609,7 +1609,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.impl.twa_product; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_product > *' at 0x7fec96f52b40> >"
"<spot.impl.twa_product; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_product > *' at 0x7f6a1d7bdae0> >"
]
},
"metadata": {},
@ -1694,7 +1694,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fec96f52c00> >"
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a1d7bd4b0> >"
]
},
"metadata": {},
@ -1791,7 +1791,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fec96f52b10> >"
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a1d7ceb40> >"
]
},
"metadata": {},
@ -1959,7 +1959,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fec96f52d80> >"
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a1d7ced50> >"
]
},
"execution_count": 18,
@ -2127,7 +2127,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fec96f52d80> >"
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a1d7ced50> >"
]
},
"execution_count": 19,
@ -2290,7 +2290,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fec96f52d80> >"
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a1d7ced50> >"
]
},
"metadata": {},
@ -2509,233 +2509,295 @@
{
"data": {
"image/svg+xml": [
"<svg height=\"329pt\" viewBox=\"0.00 0.00 734.00 328.98\" width=\"734pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(.8266 .8266) rotate(0) translate(4 394)\">\n",
"<polygon fill=\"#ffffff\" points=\"-4,4 -4,-394 884,-394 884,4 -4,4\" stroke=\"transparent\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"388\" y=\"-375.8\">Fin(</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"413\" y=\"-375.8\">⓿</text>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"429\" y=\"-375.8\">) &amp; Inf(</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"472\" y=\"-375.8\">❶</text>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"488\" y=\"-375.8\">)</text>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"411\" y=\"-361.8\">[Rabin 1]</text>\n",
"<svg height=\"360pt\" viewBox=\"0.00 0.00 684.90 360.00\" width=\"685pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(.7469 .7469) rotate(0) translate(4 478)\">\n",
"<polygon fill=\"#ffffff\" points=\"-4,4 -4,-478 913,-478 913,4 -4,4\" stroke=\"transparent\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"433.5\" y=\"-459.8\">Inf(</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"455.5\" y=\"-459.8\">⓿</text>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"471.5\" y=\"-459.8\">)</text>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"431.5\" y=\"-445.8\">[Büchi]</text>\n",
"<g class=\"cluster\" id=\"clust1\">\n",
"<title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"543,-144 543,-346 872,-346 872,-144 543,-144\" stroke=\"#00ff00\"/>\n",
"<polygon fill=\"none\" points=\"318,-330 318,-430 370,-430 370,-330 318,-330\" stroke=\"#00ff00\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust2\">\n",
"<title>cluster_1</title>\n",
"<polygon fill=\"none\" points=\"464,-149 464,-201 516,-201 516,-149 464,-149\" stroke=\"#000000\"/>\n",
"<polygon fill=\"none\" points=\"168.5,-294 168.5,-394 220.5,-394 220.5,-294 168.5,-294\" stroke=\"#00ff00\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust3\">\n",
"<title>cluster_2</title>\n",
"<polygon fill=\"none\" points=\"139,-191 139,-306 403,-306 403,-191 139,-191\" stroke=\"#00ff00\"/>\n",
"<polygon fill=\"none\" points=\"667,-147 667,-379 901,-379 901,-147 667,-147\" stroke=\"#00ff00\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust4\">\n",
"<title>cluster_3</title>\n",
"<polygon fill=\"none\" points=\"139,-8 139,-108 191,-108 191,-8 139,-8\" stroke=\"#00ff00\"/>\n",
"<polygon fill=\"none\" points=\"559,-68 559,-120 611,-120 611,-68 559,-68\" stroke=\"#000000\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust5\">\n",
"<title>cluster_4</title>\n",
"<polygon fill=\"none\" points=\"30,-102 30,-154 82,-154 82,-102 30,-102\" stroke=\"#000000\"/>\n",
"<polygon fill=\"none\" points=\"168.5,-101 168.5,-216 498,-216 498,-101 168.5,-101\" stroke=\"#00ff00\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust6\">\n",
"<title>cluster_5</title>\n",
"<polygon fill=\"none\" points=\"30,-248 30,-300 82,-300 82,-248 30,-248\" stroke=\"#000000\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\">\n",
"<title>0</title>\n",
"<ellipse cx=\"56\" cy=\"-128\" 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=\"-124.3\">0</text>\n",
"<ellipse cx=\"56\" cy=\"-274\" 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=\"-270.3\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\">\n",
"<title>I-&gt;0</title>\n",
"<path d=\"M1.1233,-128C4.178,-128 17.9448,-128 30.9241,-128\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"37.9807,-128 30.9808,-131.1501 34.4807,-128 30.9807,-128.0001 30.9807,-128.0001 30.9807,-128.0001 34.4807,-128 30.9807,-124.8501 37.9807,-128 37.9807,-128\" stroke=\"#000000\"/>\n",
"<path d=\"M1.1233,-274C4.178,-274 17.9448,-274 30.9241,-274\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"37.9807,-274 30.9808,-277.1501 34.4807,-274 30.9807,-274.0001 30.9807,-274.0001 30.9807,-274.0001 34.4807,-274 30.9807,-270.8501 37.9807,-274 37.9807,-274\" stroke=\"#000000\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node6\">\n",
"<g class=\"node\" id=\"node3\">\n",
"<title>1</title>\n",
"<ellipse cx=\"490\" cy=\"-175\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"490\" y=\"-171.3\">1</text>\n",
"<ellipse cx=\"344\" cy=\"-356\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#1f78b4\" stroke-width=\"2\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"344\" y=\"-352.3\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge2\">\n",
"<title>0-&gt;1</title>\n",
"<path d=\"M74.1292,-128C95.7601,-128 133.0191,-128 165,-128 165,-128 165,-128 377,-128 411.229,-128 447.1265,-146.6121 469.0379,-160.4116\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"475.1027,-164.335 467.5143,-163.1777 472.164,-162.4339 469.2253,-160.5328 469.2253,-160.5328 469.2253,-160.5328 472.164,-162.4339 470.9362,-157.888 475.1027,-164.335 475.1027,-164.335\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"230.5\" y=\"-131.8\">!a &amp; !b</text>\n",
"<path d=\"M64.3119,-290.4883C79.9858,-319.3838 117.0199,-378.0014 168.5,-398 221.8867,-418.7393 288.5224,-388.4401 322.2598,-369.4207\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"328.5549,-365.7857 324.0681,-372.014 325.5239,-367.5359 322.493,-369.2861 322.493,-369.2861 322.493,-369.2861 325.5239,-367.5359 320.9178,-366.5582 328.5549,-365.7857 328.5549,-365.7857\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"176\" y=\"-407.8\">a &amp; !b</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node7\">\n",
"<g class=\"node\" id=\"node4\">\n",
"<title>2</title>\n",
"<ellipse cx=\"165\" cy=\"-217\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#1f78b4\" stroke-width=\"2\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"165\" y=\"-213.3\">2</text>\n",
"<ellipse cx=\"194.5\" cy=\"-320\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#1f78b4\" stroke-width=\"2\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"194.5\" y=\"-316.3\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge3\">\n",
"<title>0-&gt;2</title>\n",
"<path d=\"M70.2498,-139.6352C89.426,-155.2928 123.6231,-183.2152 145.2652,-200.8863\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"150.7467,-205.3619 143.3322,-203.3746 148.0356,-203.1483 145.3245,-200.9347 145.3245,-200.9347 145.3245,-200.9347 148.0356,-203.1483 147.3168,-198.4947 150.7467,-205.3619 150.7467,-205.3619\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-188.8\">!a &amp; b</text>\n",
"<path d=\"M72.7611,-280.7918C78.793,-283.1633 85.6707,-285.7842 92,-288 118.4422,-297.257 149.162,-306.6732 170.0249,-312.8716\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"176.9701,-314.9243 169.3643,-315.961 173.6137,-313.9322 170.2572,-312.9402 170.2572,-312.9402 170.2572,-312.9402 173.6137,-313.9322 171.1501,-309.9193 176.9701,-314.9243 176.9701,-314.9243\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"108\" y=\"-312.8\">a &amp; b</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g class=\"node\" id=\"node9\">\n",
"<g class=\"node\" id=\"node7\">\n",
"<title>3</title>\n",
"<ellipse cx=\"165\" cy=\"-34\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"165\" y=\"-30.3\">3</text>\n",
"<ellipse cx=\"585\" cy=\"-94\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"585\" y=\"-90.3\">3</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge4\">\n",
"<title>0-&gt;3</title>\n",
"<path d=\"M69.8049,-116.0948C89.0516,-99.4968 124.0302,-69.3318 145.8063,-50.5524\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"151.3072,-45.8085 148.0633,-52.7656 148.6566,-48.0943 146.0061,-50.3801 146.0061,-50.3801 146.0061,-50.3801 148.6566,-48.0943 143.9489,-47.9946 151.3072,-45.8085 151.3072,-45.8085\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"107\" y=\"-97.8\">a</text>\n",
"<path d=\"M56.6779,-255.5966C60.0121,-194.1624 79.6359,0 194.5,0 194.5,0 194.5,0 472,0 495.3255,0 542.9619,-47.9358 568.2929,-75.3444\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"573.0478,-80.5321 565.9958,-77.5002 570.6829,-77.9519 568.318,-75.3718 568.318,-75.3718 568.318,-75.3718 570.6829,-77.9519 570.6401,-73.2433 573.0478,-80.5321 573.0478,-80.5321\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"323.5\" y=\"-3.8\">!a &amp; !b</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g class=\"node\" id=\"node3\">\n",
"<g class=\"node\" id=\"node8\">\n",
"<title>4</title>\n",
"<ellipse cx=\"569\" cy=\"-234\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#ff4da0\" stroke-width=\"2\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"569\" y=\"-230.3\">4</text>\n",
"<ellipse cx=\"194.5\" cy=\"-142\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#ff4da0\" stroke-width=\"2\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"194.5\" y=\"-138.3\">4</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g class=\"node\" id=\"node4\">\n",
"<title>6</title>\n",
"<ellipse cx=\"695\" cy=\"-221\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#ff4da0\" stroke-width=\"2\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"695\" y=\"-217.3\">6</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge11\">\n",
"<title>4-&gt;6</title>\n",
"<path d=\"M586.6825,-229.1951C597.3921,-226.5227 611.3779,-223.4509 624,-222 639.0867,-220.2658 656.0943,-219.969 669.6807,-220.1279\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"676.8429,-220.2568 669.7873,-223.2802 673.3434,-220.1937 669.844,-220.1307 669.844,-220.1307 669.844,-220.1307 673.3434,-220.1937 669.9007,-216.9812 676.8429,-220.2568 676.8429,-220.2568\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"626.5\" y=\"-225.8\">!c</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g class=\"node\" id=\"node5\">\n",
"<title>7</title>\n",
"<ellipse cx=\"846\" cy=\"-240\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#ff4da0\" stroke-width=\"2\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"846\" y=\"-236.3\">7</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge12\">\n",
"<title>4-&gt;7</title>\n",
"<path d=\"M576.4064,-217.5184C586.186,-198.5557 605.339,-170 632,-170 632,-170 632,-170 770.5,-170 799.0099,-170 821.302,-197.1731 834.057,-217.6591\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"837.7056,-223.7646 831.4108,-219.3717 835.9102,-220.7602 834.1147,-217.7558 834.1147,-217.7558 834.1147,-217.7558 835.9102,-220.7602 836.8187,-216.1399 837.7056,-223.7646 837.7056,-223.7646\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"691.5\" y=\"-173.8\">c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge16\">\n",
"<title>6-&gt;4</title>\n",
"<path d=\"M677.9355,-227.3217C667.2121,-230.9521 652.9954,-235.1481 640,-237 624.8508,-239.1588 607.7148,-238.5215 594.0732,-237.2908\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"586.8888,-236.56 594.1717,-234.1346 590.3708,-236.9142 593.8529,-237.2685 593.8529,-237.2685 593.8529,-237.2685 590.3708,-236.9142 593.5341,-240.4023 586.8888,-236.56 586.8888,-236.56\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"625.5\" y=\"-256.8\">!b</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"624\" y=\"-241.8\">❶</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge17\">\n",
"<title>6-&gt;6</title>\n",
"<path d=\"M688.6208,-238.0373C687.3189,-247.8579 689.4453,-257 695,-257 699.166,-257 701.4036,-251.8576 701.7128,-245.1433\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"701.3792,-238.0373 704.8541,-244.8818 701.5434,-241.5335 701.7076,-245.0296 701.7076,-245.0296 701.7076,-245.0296 701.5434,-241.5335 698.561,-245.1774 701.3792,-238.0373 701.3792,-238.0373\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"676.5\" y=\"-260.8\">b &amp; !c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge18\">\n",
"<title>6-&gt;7</title>\n",
"<path d=\"M713.1301,-221.5548C732.4942,-222.326 764.0424,-224.0965 791,-228 801.02,-229.4509 811.9369,-231.6926 821.384,-233.8474\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"828.2826,-235.4638 820.7486,-236.9338 824.8749,-234.6653 821.4672,-233.8669 821.4672,-233.8669 821.4672,-233.8669 824.8749,-234.6653 822.1858,-230.7999 828.2826,-235.4638 828.2826,-235.4638\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"753.5\" y=\"-231.8\">b &amp; c</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge19\">\n",
"<title>7-&gt;4</title>\n",
"<path d=\"M837.3792,-256.1151C825.3165,-276.2236 801.3706,-308 770.5,-308 632,-308 632,-308 632,-308 605.0884,-308 587.2554,-279.2741 577.6349,-257.6175\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"574.912,-251.1631 580.5352,-256.3882 576.2724,-254.3879 577.6329,-257.6126 577.6329,-257.6126 577.6329,-257.6126 576.2724,-254.3879 574.7306,-258.8371 574.912,-251.1631 574.912,-251.1631\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"690.5\" y=\"-326.8\">b</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"687\" y=\"-311.8\">❶</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge20\">\n",
"<title>7-&gt;6</title>\n",
"<path d=\"M828.1204,-242.8876C808.6992,-245.4858 776.8532,-248.1715 750,-243 739.0051,-240.8826 727.4143,-236.587 717.7231,-232.3489\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"711.3479,-229.4515 719.024,-229.4801 714.5343,-230.8997 717.7206,-232.3479 717.7206,-232.3479 717.7206,-232.3479 714.5343,-230.8997 716.4173,-235.2156 711.3479,-229.4515 711.3479,-229.4515\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"750\" y=\"-248.8\">!b &amp; !c</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge21\">\n",
"<title>7-&gt;7</title>\n",
"<path d=\"M839.6208,-257.0373C838.3189,-266.8579 840.4453,-276 846,-276 850.166,-276 852.4036,-270.8576 852.7128,-264.1433\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"852.3792,-257.0373 855.8541,-263.8818 852.5434,-260.5335 852.7076,-264.0296 852.7076,-264.0296 852.7076,-264.0296 852.5434,-260.5335 849.561,-264.1774 852.3792,-257.0373 852.3792,-257.0373\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"827.5\" y=\"-279.8\">!b &amp; c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;4 -->\n",
"<!-- 0&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge5\">\n",
"<title>1-&gt;4</title>\n",
"<path d=\"M505.306,-185.3002C513.6004,-190.9762 523.9712,-198.2264 533,-205 538.4689,-209.1029 544.2844,-213.6864 549.6103,-217.9764\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"555.1578,-222.4796 547.7377,-220.5134 552.4404,-220.2737 549.723,-218.0678 549.723,-218.0678 549.723,-218.0678 552.4404,-220.2737 551.7083,-215.6221 555.1578,-222.4796 555.1578,-222.4796\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"526\" y=\"-208.8\">a</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge8\">\n",
"<title>2-&gt;4</title>\n",
"<path d=\"M169.9131,-234.5127C179.7482,-265.3245 204.9605,-326 251,-326 251,-326 251,-326 490,-326 525.9049,-326 549.032,-285.1685 560.4711,-257.9093\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"563.1282,-251.3045 563.438,-258.9744 561.8219,-254.5516 560.5156,-257.7987 560.5156,-257.7987 560.5156,-257.7987 561.8219,-254.5516 557.5932,-256.623 563.1282,-251.3045 563.1282,-251.3045\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"373.5\" y=\"-329.8\">a</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge6\">\n",
"<title>2-&gt;1</title>\n",
"<path d=\"M182.9363,-214.6821C237.5383,-207.6258 401.836,-186.3935 464.9394,-178.2386\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"472.1191,-177.3108 465.5806,-181.332 468.648,-177.7594 465.1768,-178.208 465.1768,-178.208 465.1768,-178.208 468.648,-177.7594 464.7731,-175.084 472.1191,-177.3108 472.1191,-177.3108\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"300\" y=\"-202.8\">!a &amp; !b</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge7\">\n",
"<title>2-&gt;2</title>\n",
"<path d=\"M158.6208,-234.0373C157.3189,-243.8579 159.4453,-253 165,-253 169.166,-253 171.4036,-247.8576 171.7128,-241.1433\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"171.3792,-234.0373 174.8541,-240.8818 171.5434,-237.5335 171.7076,-241.0296 171.7076,-241.0296 171.7076,-241.0296 171.5434,-237.5335 168.561,-241.1774 171.3792,-234.0373 171.3792,-234.0373\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"132\" y=\"-256.8\">!a &amp; b &amp; !c</text>\n",
"<title>0-&gt;4</title>\n",
"<path d=\"M69.28,-261.3433C94.1619,-237.6291 147.8378,-186.4722 176.1535,-159.4855\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"181.4625,-154.4257 178.5685,-161.5354 178.9288,-156.8404 176.3952,-159.2551 176.3952,-159.2551 176.3952,-159.2551 178.9288,-156.8404 174.222,-156.9748 181.4625,-154.4257 181.4625,-154.4257\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-241.8\">!a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g class=\"node\" id=\"node8\">\n",
"<g class=\"node\" id=\"node9\">\n",
"<title>5</title>\n",
"<ellipse cx=\"377\" cy=\"-226\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#1f78b4\" stroke-width=\"2\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"377\" y=\"-222.3\">5</text>\n",
"<ellipse cx=\"472\" cy=\"-134\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#ff4da0\" stroke-width=\"2\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"472\" y=\"-130.3\">5</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;5 -->\n",
"<!-- 0&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge6\">\n",
"<title>0-&gt;5</title>\n",
"<path d=\"M74.1625,-275.0064C114.7106,-276.6504 215.1614,-277.3559 293,-250 357.4634,-227.3447 421.9916,-177.0856 453.0025,-150.7837\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"458.3953,-146.1635 455.1289,-153.11 455.7373,-148.4406 453.0794,-150.7178 453.0794,-150.7178 453.0794,-150.7178 455.7373,-148.4406 451.0299,-148.3257 458.3953,-146.1635 458.3953,-146.1635\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"231\" y=\"-268.8\">!a &amp; b &amp; c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge7\">\n",
"<title>1-&gt;1</title>\n",
"<path d=\"M332.5701,-370.0417C328.2955,-380.9126 332.1055,-392 344,-392 353.2926,-392 357.6508,-385.2328 357.0745,-377.0885\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"355.4299,-370.0417 360.0885,-376.1426 356.2254,-373.4502 357.0209,-376.8586 357.0209,-376.8586 357.0209,-376.8586 356.2254,-373.4502 353.9534,-377.5745 355.4299,-370.0417 355.4299,-370.0417\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"339.5\" y=\"-410.8\">1</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"336\" y=\"-395.8\">⓿</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge8\">\n",
"<title>2-&gt;1</title>\n",
"<path d=\"M212.2367,-324.271C238.8738,-330.6853 289.2919,-342.8261 319.4472,-350.0876\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"326.2864,-351.7345 318.7434,-353.1581 322.8837,-350.9151 319.4809,-350.0957 319.4809,-350.0957 319.4809,-350.0957 322.8837,-350.9151 320.2184,-347.0332 326.2864,-351.7345 326.2864,-351.7345\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"246.5\" y=\"-346.8\">a | !b</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge9\">\n",
"<title>2-&gt;5</title>\n",
"<path d=\"M183.075,-217.7673C220.9374,-219.3747 308.6456,-223.0982 351.924,-224.9355\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"358.9707,-225.2346 351.8434,-228.0848 355.4739,-225.0861 351.977,-224.9376 351.977,-224.9376 351.977,-224.9376 355.4739,-225.0861 352.1107,-221.7904 358.9707,-225.2346 358.9707,-225.2346\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"220\" y=\"-224.8\">!a &amp; b &amp; c</text>\n",
"<title>2-&gt;2</title>\n",
"<path d=\"M183.5873,-334.4167C179.7765,-345.166 183.4141,-356 194.5,-356 203.1609,-356 207.2757,-349.3875 206.8443,-341.3688\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"205.4127,-334.4167 209.9099,-340.6375 206.1187,-337.8447 206.8246,-341.2728 206.8246,-341.2728 206.8246,-341.2728 206.1187,-337.8447 203.7394,-341.9082 205.4127,-334.4167 205.4127,-334.4167\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"176\" y=\"-374.8\">!a &amp; b</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"186.5\" y=\"-359.8\">⓿</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g class=\"node\" id=\"node5\">\n",
"<title>6</title>\n",
"<ellipse cx=\"693\" cy=\"-236\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#ff7f00\" stroke-width=\"2\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"693\" y=\"-232.3\">6</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge22\">\n",
"<title>6-&gt;6</title>\n",
"<path d=\"M688.3583,-253.4099C687.4918,-263.0879 689.0391,-272 693,-272 695.9088,-272 697.5159,-267.1936 697.8213,-260.8073\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"697.6417,-253.4099 700.9607,-260.3314 697.7267,-256.9089 697.8117,-260.4078 697.8117,-260.4078 697.8117,-260.4078 697.7267,-256.9089 694.6626,-260.4843 697.6417,-253.4099 697.6417,-253.4099\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"672.5\" y=\"-290.8\">!b &amp; !c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"685\" y=\"-275.8\">⓿</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge23\">\n",
"<title>6-&gt;6</title>\n",
"<path d=\"M686.0017,-252.5959C680.7141,-273.8633 683.0469,-302 693,-302 701.9034,-302 704.7091,-279.4854 701.417,-259.5132\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"699.9983,-252.5959 704.4906,-258.8202 700.7015,-256.0245 701.4048,-259.4531 701.4048,-259.4531 701.4048,-259.4531 700.7015,-256.0245 698.319,-260.0861 699.9983,-252.5959 699.9983,-252.5959\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"674.5\" y=\"-305.8\">b &amp; !c</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g class=\"node\" id=\"node6\">\n",
"<title>7</title>\n",
"<ellipse cx=\"875\" cy=\"-173\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#ff7f00\" stroke-width=\"2\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"875\" y=\"-169.3\">7</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge24\">\n",
"<title>6-&gt;7</title>\n",
"<path d=\"M707.7113,-225.3238C724.2127,-213.9133 752.1888,-196.2241 779,-187 802.161,-179.0318 829.9864,-175.5987 849.7032,-174.1196\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"856.8362,-173.643 850.0619,-177.2528 853.344,-173.8764 849.8518,-174.1098 849.8518,-174.1098 849.8518,-174.1098 853.344,-173.8764 849.6418,-170.9668 856.8362,-173.643 856.8362,-173.643\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"781\" y=\"-205.8\">!b &amp; c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"791.5\" y=\"-190.8\">⓿</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge25\">\n",
"<title>6-&gt;7</title>\n",
"<path d=\"M711.0566,-236.2051C736.4385,-235.8609 783.6313,-232.8772 820,-217 833.8054,-210.9731 847.0599,-200.5581 857.0971,-191.3737\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"862.3253,-186.4335 859.4008,-193.5307 859.7813,-188.8373 857.2374,-191.2411 857.2374,-191.2411 857.2374,-191.2411 859.7813,-188.8373 855.0739,-188.9515 862.3253,-186.4335 862.3253,-186.4335\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"782.5\" y=\"-232.8\">b &amp; c</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge26\">\n",
"<title>7-&gt;6</title>\n",
"<path d=\"M868.2515,-189.799C859.937,-207.9458 843.9091,-235.8843 820,-248 786.995,-264.7249 742.9786,-254.5089 716.3806,-245.393\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"709.6876,-242.9955 717.3399,-242.3907 712.9826,-244.1758 716.2776,-245.3561 716.2776,-245.3561 716.2776,-245.3561 712.9826,-244.1758 715.2153,-248.3216 709.6876,-242.9955 709.6876,-242.9955\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"779\" y=\"-259.8\">!b &amp; !c</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge27\">\n",
"<title>7-&gt;6</title>\n",
"<path d=\"M871.2552,-190.9311C865.1642,-214.9751 850.5771,-256.7486 820,-275 785.5301,-295.575 739.2279,-270.1466 713.1151,-251.7572\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"707.2405,-247.4975 714.7567,-249.0566 710.074,-249.5522 712.9075,-251.6068 712.9075,-251.6068 712.9075,-251.6068 710.074,-249.5522 711.0584,-254.1569 707.2405,-247.4975 707.2405,-247.4975\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"781\" y=\"-300.8\">b &amp; !c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"791.5\" y=\"-285.8\">⓿</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge28\">\n",
"<title>7-&gt;7</title>\n",
"<path d=\"M871.7643,-190.7817C871.2144,-200.3149 872.293,-209 875,-209 876.988,-209 878.0977,-204.3161 878.3292,-198.0521\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"878.2357,-190.7817 881.4756,-197.7406 878.2808,-194.2814 878.3258,-197.7812 878.3258,-197.7812 878.3258,-197.7812 878.2808,-194.2814 875.1761,-197.8217 878.2357,-190.7817 878.2357,-190.7817\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"856.5\" y=\"-212.8\">!b &amp; c</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge29\">\n",
"<title>7-&gt;7</title>\n",
"<path d=\"M869.6841,-190.4203C866.6538,-207.791 868.4258,-227 875,-227 880.7011,-227 882.7908,-212.5545 881.2691,-197.3894\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"880.3159,-190.4203 884.3856,-196.9288 880.7902,-193.888 881.2646,-197.3557 881.2646,-197.3557 881.2646,-197.3557 880.7902,-193.888 878.1437,-197.7826 880.3159,-190.4203 880.3159,-190.4203\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"858\" y=\"-245.8\">b &amp; c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"867\" y=\"-230.8\">⓿</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge10\">\n",
"<title>3-&gt;6</title>\n",
"<path d=\"M599.4245,-105.223C615.085,-117.9544 640.1143,-139.9578 657,-163 668.2272,-178.3206 677.5892,-197.6777 683.9495,-212.6089\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"686.6565,-219.1274 681.0626,-213.8708 685.3141,-215.895 683.9717,-212.6627 683.9717,-212.6627 683.9717,-212.6627 685.3141,-215.895 686.8809,-211.4545 686.6565,-219.1274 686.6565,-219.1274\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"621\" y=\"-166.8\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge11\">\n",
"<title>3-&gt;7</title>\n",
"<path d=\"M602.5885,-89.8752C646.7134,-80.5871 763.9336,-62.5742 839,-113 851.8806,-121.6525 860.87,-136.6083 866.6445,-149.423\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"869.3748,-155.8843 863.7485,-150.6624 868.0125,-152.6603 866.6501,-149.4363 866.6501,-149.4363 866.6501,-149.4363 868.0125,-152.6603 869.5517,-148.2102 869.3748,-155.8843 869.3748,-155.8843\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"729\" y=\"-86.8\">a &amp; c</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge15\">\n",
"<title>4-&gt;6</title>\n",
"<path d=\"M206.0931,-155.87C229.3352,-182.0177 284.5214,-236 344,-236 344,-236 344,-236 585,-236 613.1777,-236 645.4908,-236 667.3737,-236\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"674.655,-236 667.6551,-239.1501 671.155,-236 667.655,-236.0001 667.655,-236.0001 667.655,-236.0001 671.155,-236 667.655,-232.8501 674.655,-236 674.655,-236\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"454\" y=\"-239.8\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge16\">\n",
"<title>4-&gt;7</title>\n",
"<path d=\"M205.9324,-127.3922C228.8929,-99.8537 283.6082,-43 344,-43 344,-43 344,-43 799.5,-43 847.458,-43 865.4676,-109.9758 871.8132,-147.7805\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"872.9322,-154.9241 868.7367,-148.4959 872.3905,-151.4662 871.8488,-148.0084 871.8488,-148.0084 871.8488,-148.0084 872.3905,-151.4662 874.9608,-147.5209 872.9322,-154.9241 872.9322,-154.9241\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"569\" y=\"-46.8\">a &amp; c</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge12\">\n",
"<title>4-&gt;3</title>\n",
"<path d=\"M212.2864,-138.3794C218.2247,-137.2266 224.886,-135.9938 231,-135 353.5956,-115.0729 384.3247,-109.4533 508,-98 525.2965,-96.3982 544.8427,-95.3925 559.9135,-94.7902\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"566.923,-94.5261 560.0466,-97.9375 563.4255,-94.6579 559.9279,-94.7897 559.9279,-94.7897 559.9279,-94.7897 563.4255,-94.6579 559.8093,-91.642 566.923,-94.5261 566.923,-94.5261\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"395\" y=\"-112.8\">!a &amp; !b</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge13\">\n",
"<title>4-&gt;4</title>\n",
"<path d=\"M183.5873,-156.4167C179.7765,-167.166 183.4141,-178 194.5,-178 203.1609,-178 207.2757,-171.3875 206.8443,-163.3688\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"205.4127,-156.4167 209.9099,-162.6375 206.1187,-159.8447 206.8246,-163.2728 206.8246,-163.2728 206.8246,-163.2728 206.1187,-159.8447 203.7394,-163.9082 205.4127,-156.4167 205.4127,-156.4167\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"161.5\" y=\"-181.8\">!a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge14\">\n",
"<title>4-&gt;5</title>\n",
"<path d=\"M212.7076,-141.4751C260.7301,-140.0907 390.9341,-136.337 446.4098,-134.7377\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"453.7254,-134.5268 446.8191,-137.8773 450.2269,-134.6277 446.7283,-134.7286 446.7283,-134.7286 446.7283,-134.7286 450.2269,-134.6277 446.6375,-131.58 453.7254,-134.5268 453.7254,-134.5268\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"313\" y=\"-141.8\">!a &amp; b &amp; c</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge20\">\n",
"<title>5-&gt;6</title>\n",
"<path d=\"M486.6714,-144.6952C493.0532,-149.1042 500.7232,-154.0858 508,-158 537.4417,-173.8366 626.6308,-209.7338 669.4995,-226.7372\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"676.2101,-229.3945 668.542,-229.7459 672.9559,-228.1059 669.7018,-226.8172 669.7018,-226.8172 669.7018,-226.8172 672.9559,-228.1059 670.8616,-223.8885 676.2101,-229.3945 676.2101,-229.3945\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"567\" y=\"-205.8\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge21\">\n",
"<title>5-&gt;7</title>\n",
"<path d=\"M490.099,-135.7515C554.8067,-142.0136 774.8091,-163.3041 849.7547,-170.5569\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"856.9509,-171.2533 849.68,-173.7143 853.4672,-170.9161 849.9834,-170.579 849.9834,-170.579 849.9834,-170.579 853.4672,-170.9161 850.2869,-167.4436 856.9509,-171.2533 856.9509,-171.2533\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"677\" y=\"-160.8\">a &amp; c</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge17\">\n",
"<title>5-&gt;3</title>\n",
"<path d=\"M487.7728,-124.7133C493.9403,-121.3401 501.1635,-117.6984 508,-115 524.9465,-108.311 544.7975,-102.9534 560.099,-99.3241\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"567.2125,-97.6829 561.0998,-102.326 563.8021,-98.4698 560.3917,-99.2566 560.3917,-99.2566 560.3917,-99.2566 563.8021,-98.4698 559.6835,-96.1872 567.2125,-97.6829 567.2125,-97.6829\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"508\" y=\"-118.8\">!a &amp; !b</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge15\">\n",
"<g class=\"edge\" id=\"edge18\">\n",
"<title>5-&gt;4</title>\n",
"<path d=\"M395.0629,-226.7526C429.3694,-228.1821 504.0395,-231.2933 543.4547,-232.9356\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"550.8452,-233.2436 543.7201,-236.0993 547.3483,-233.0978 543.8513,-232.952 543.8513,-232.952 543.8513,-232.952 547.3483,-233.0978 543.9825,-229.8048 550.8452,-233.2436 550.8452,-233.2436\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"486.5\" y=\"-234.8\">a</text>\n",
"<path d=\"M454.6985,-139.2604C435.8147,-144.7055 404.5849,-152.8477 377,-156 320.7026,-162.4335 254.2876,-153.112 219.1642,-146.8623\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"212.1591,-145.5821 219.6114,-143.742 215.6021,-146.2114 219.0451,-146.8406 219.0451,-146.8406 219.0451,-146.8406 215.6021,-146.2114 218.4787,-149.9393 212.1591,-145.5821 212.1591,-145.5821\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"311\" y=\"-176.8\">!a &amp; b &amp; !c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"336\" y=\"-161.8\">⓿</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge13\">\n",
"<title>5-&gt;1</title>\n",
"<path d=\"M392.481,-216.2542C398.7338,-212.5082 406.0931,-208.3347 413,-205 430.3661,-196.6156 450.7234,-188.7653 466.1434,-183.1996\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"472.8523,-180.8094 467.3154,-186.126 469.5553,-181.9841 466.2583,-183.1587 466.2583,-183.1587 466.2583,-183.1587 469.5553,-181.9841 465.2011,-180.1914 472.8523,-180.8094 472.8523,-180.8094\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"413\" y=\"-208.8\">!a &amp; !b</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge14\">\n",
"<title>5-&gt;2</title>\n",
"<path d=\"M359.3975,-230.8141C330.1706,-238.0861 269.9042,-250.0143 220,-240 208.7869,-237.7499 197.0066,-233.157 187.2379,-228.6631\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"180.8281,-225.5977 188.5021,-225.776 183.9856,-227.1078 187.1431,-228.6178 187.1431,-228.6178 187.1431,-228.6178 183.9856,-227.1078 185.7841,-231.4596 180.8281,-225.5977 180.8281,-225.5977\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"232.5\" y=\"-261.8\">!a &amp; b</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"243\" y=\"-246.8\">❶</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge10\">\n",
"<title>3-&gt;3</title>\n",
"<path d=\"M158.6208,-51.0373C157.3189,-60.8579 159.4453,-70 165,-70 169.166,-70 171.4036,-64.8576 171.7128,-58.1433\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"171.3792,-51.0373 174.8541,-57.8818 171.5434,-54.5335 171.7076,-58.0296 171.7076,-58.0296 171.7076,-58.0296 171.5434,-54.5335 168.561,-58.1774 171.3792,-51.0373 171.3792,-51.0373\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"160.5\" y=\"-88.8\">1</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"157\" y=\"-73.8\">❶</text>\n",
"<!-- 5&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge19\">\n",
"<title>5-&gt;5</title>\n",
"<path d=\"M462.4254,-149.5414C459.7303,-159.9087 462.9219,-170 472,-170 478.9504,-170 482.4503,-164.0847 482.4995,-156.6591\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"481.5746,-149.5414 485.6004,-156.0771 482.0256,-153.0123 482.4767,-156.4831 482.4767,-156.4831 482.4767,-156.4831 482.0256,-153.0123 479.353,-156.889 481.5746,-149.5414 481.5746,-149.5414\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"441\" y=\"-188.8\">!a &amp; b &amp; c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"464\" y=\"-173.8\">⓿</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
@ -2754,6 +2816,13 @@
"spot.highlight_languages(aut)\n",
"aut.show('.bas')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {