product: optimize product with weak automata

Fixes #350.

* spot/twaalgos/product.cc: Implement this change.
* NEWS, spot/twaalgos/product.hh: Mention it.
* spot/twa/acc.cc, spot/twa/acc.hh (acc_cond::sat_mark): New method.
* tests/python/_product_weak.ipynb: New file.
* tests/Makefile.am: Add it.
* tests/python/automata.ipynb, tests/python/highlighting.ipynb,
tests/python/product.ipynb, tests/core/prodor.test: Adjust test cases.
This commit is contained in:
Alexandre Duret-Lutz 2018-05-23 18:34:31 +02:00
parent b655038803
commit a738801edf
11 changed files with 15348 additions and 1605 deletions

5
NEWS
View file

@ -89,6 +89,11 @@ New in spot 2.5.3.dev (not yet released)
They are most welcome in Python, since we used to redefine They are most welcome in Python, since we used to redefine
them every now and them. them every now and them.
- spot::product() and spot::product_or() learned so produce an
automaton with a simpler acceptance condition if one of the
argument is a weak automaton. In this case the resulting
acceptance condition is (usually) that of the other argument.
- spot::parity_product() and spot::parity_product_or() were dropped. - spot::parity_product() and spot::parity_product_or() were dropped.
The code was buggy, hard to maintain, and these functions do not The code was buggy, hard to maintain, and these functions do not
seem to be used. seem to be used.

View file

@ -1153,12 +1153,22 @@ namespace spot
} }
std::pair<bool, acc_cond::mark_t> std::pair<bool, acc_cond::mark_t>
acc_cond::unsat_mark() const acc_cond::sat_unsat_mark(bool sat) const
{ {
if (is_t()) if (sat)
return {false, mark_t({})}; {
if (!uses_fin_acceptance()) if (is_f())
return {true, mark_t({})}; return {false, mark_t({})};
if (!uses_fin_acceptance())
return {true, all_sets()};
}
else
{
if (is_t())
return {false, mark_t({})};
if (!uses_fin_acceptance())
return {true, mark_t({})};
}
auto used = code_.used_sets(); auto used = code_.used_sets();
unsigned c = used.count(); unsigned c = used.count();
@ -1185,11 +1195,11 @@ namespace spot
bdd res = to_bdd_rec(&code_.back(), &r[0]); bdd res = to_bdd_rec(&code_.back(), &r[0]);
if (res == bddtrue) if (res == bddtrue)
return {false, mark_t({})}; return {sat, mark_t({})};
if (res == bddfalse) if (res == bddfalse)
return {true, mark_t({})}; return {!sat, mark_t({})};
bdd cube = bdd_satone(!res); bdd cube = bdd_satone(sat ? res : !res);
mark_t i = {}; mark_t i = {};
while (cube != bddtrue) while (cube != bddtrue)
{ {

View file

@ -1165,10 +1165,21 @@ namespace spot
// Return (true, m) if there exist some acceptance mark m that // Return (true, m) if there exist some acceptance mark m that
// does not satisfy the acceptance condition. Return (false, 0U) // does not satisfy the acceptance condition. Return (false, 0U)
// otherwise. // otherwise.
std::pair<bool, acc_cond::mark_t> unsat_mark() const; std::pair<bool, acc_cond::mark_t> unsat_mark() const
{
return sat_unsat_mark(false);
}
// Return (true, m) if there exist some acceptance mark m that
// does satisfy the acceptance condition. Return (false, 0U)
// otherwise.
std::pair<bool, acc_cond::mark_t> sat_mark() const
{
return sat_unsat_mark(true);
}
protected: protected:
bool check_fin_acceptance() const; bool check_fin_acceptance() const;
std::pair<bool, acc_cond::mark_t> sat_unsat_mark(bool) const;
public: public:
static acc_code inf(mark_t mark) static acc_code inf(mark_t mark)

View file

@ -40,33 +40,18 @@ namespace spot
} }
}; };
template<typename T>
static static
twa_graph_ptr product_aux(const const_twa_graph_ptr& left, void product_main(const const_twa_graph_ptr& left,
const const_twa_graph_ptr& right, const const_twa_graph_ptr& right,
unsigned left_state, unsigned left_state,
unsigned right_state, unsigned right_state,
bool and_acc) twa_graph_ptr res, T merge_acc)
{ {
if (!(left->is_existential() && right->is_existential()))
throw std::runtime_error
("product() does not support alternating automata");
std::unordered_map<product_state, unsigned, product_state_hash> s2n; std::unordered_map<product_state, unsigned, product_state_hash> s2n;
std::deque<std::pair<product_state, unsigned>> todo; std::deque<std::pair<product_state, unsigned>> todo;
if (left->get_dict() != right->get_dict())
throw std::runtime_error("product: left and right automata should "
"share their bdd_dict");
auto res = make_twa_graph(left->get_dict());
res->copy_ap_of(left);
res->copy_ap_of(right);
auto left_num = left->num_sets();
auto right_acc = right->get_acceptance() << left_num;
if (and_acc)
right_acc &= left->get_acceptance();
else
right_acc |= left->get_acceptance();
res->set_acceptance(left_num + right->num_sets(), right_acc);
auto v = new product_states; auto v = new product_states;
res->set_named_prop("product-states", v); res->set_named_prop("product-states", v);
@ -86,10 +71,10 @@ namespace spot
}; };
res->set_init_state(new_state(left_state, right_state)); res->set_init_state(new_state(left_state, right_state));
if (right_acc.is_f()) if (res->acc().is_f())
// Do not bother doing any work if the resulting acceptance is // Do not bother doing any work if the resulting acceptance is
// false. // false.
return res; return;
while (!todo.empty()) while (!todo.empty())
{ {
auto top = todo.front(); auto top = todo.front();
@ -102,10 +87,192 @@ namespace spot
continue; continue;
auto dst = new_state(l.dst, r.dst); auto dst = new_state(l.dst, r.dst);
res->new_edge(top.second, dst, cond, res->new_edge(top.second, dst, cond,
l.acc | (r.acc << left_num)); merge_acc(l.acc, r.acc));
// If right is deterministic, we can abort immediately! // If right is deterministic, we can abort immediately!
} }
} }
}
static
twa_graph_ptr product_aux(const const_twa_graph_ptr& left,
const const_twa_graph_ptr& right,
unsigned left_state,
unsigned right_state,
bool and_acc)
{
if (SPOT_UNLIKELY(!(left->is_existential() && right->is_existential())))
throw std::runtime_error
("product() does not support alternating automata");
if (SPOT_UNLIKELY(left->get_dict() != right->get_dict()))
throw std::runtime_error("product: left and right automata should "
"share their bdd_dict");
auto res = make_twa_graph(left->get_dict());
res->copy_ap_of(left);
res->copy_ap_of(right);
bool leftweak = left->prop_weak().is_true();
bool rightweak = right->prop_weak().is_true();
// We have optimization to the standard product in case one
// of the arguments is weak. However these optimizations
// are pointless if the said arguments are "t" or "f".
if ((leftweak || rightweak)
&& (left->num_sets() > 0) && (right->num_sets() > 0))
{
// If both automata are weak, we can restrict the result to
// Büchi or co-Büchi. We will favor Büchi unless the two
// operands are co-Büchi.
if (leftweak && rightweak)
{
weak_weak:
acc_cond::mark_t accmark = {0};
acc_cond::mark_t rejmark = {};
if (left->acc().is_co_buchi() && right->acc().is_co_buchi())
{
res->set_co_buchi();
std::swap(accmark, rejmark);
}
else
{
res->set_buchi();
}
res->prop_weak(true);
auto& lacc = left->acc();
auto& racc = right->acc();
if (and_acc)
product_main(left, right, left_state, right_state, res,
[&] (acc_cond::mark_t ml, acc_cond::mark_t mr)
{
if (lacc.accepting(ml) && racc.accepting(mr))
return accmark;
else
return rejmark;
});
else
product_main(left, right, left_state, right_state, res,
[&] (acc_cond::mark_t ml, acc_cond::mark_t mr)
{
if (lacc.accepting(ml) || racc.accepting(mr))
return accmark;
else
return rejmark;
});
}
else if (!rightweak)
{
if (and_acc)
{
auto rightunsatmark = right->acc().unsat_mark();
if (!rightunsatmark.first)
{
// Left is weak. Right was not weak, but it is
// always accepting. We can therefore pretend
// that right is weak.
goto weak_weak;
}
res->copy_acceptance_of(right);
acc_cond::mark_t rejmark = rightunsatmark.second;
auto& lacc = left->acc();
product_main(left, right, left_state, right_state, res,
[&] (acc_cond::mark_t ml, acc_cond::mark_t mr)
{
if (lacc.accepting(ml))
return mr;
else
return rejmark;
});
}
else
{
auto rightsatmark = right->acc().sat_mark();
if (!rightsatmark.first)
{
// Left is weak. Right was not weak, but it is
// always rejecting. We can therefore pretend
// that right is weak.
goto weak_weak;
}
res->copy_acceptance_of(right);
acc_cond::mark_t accmark = rightsatmark.second;
auto& lacc = left->acc();
product_main(left, right, left_state, right_state, res,
[&] (acc_cond::mark_t ml, acc_cond::mark_t mr)
{
if (!lacc.accepting(ml))
return mr;
else
return accmark;
});
}
}
else
{
assert(!leftweak);
if (and_acc)
{
auto leftunsatmark = left->acc().unsat_mark();
if (!leftunsatmark.first)
{
// Right is weak. Left was not weak, but it is
// always accepting. We can therefore pretend
// that left is weak.
goto weak_weak;
}
res->copy_acceptance_of(left);
acc_cond::mark_t rejmark = leftunsatmark.second;
auto& racc = right->acc();
product_main(left, right, left_state, right_state, res,
[&] (acc_cond::mark_t ml, acc_cond::mark_t mr)
{
if (racc.accepting(mr))
return ml;
else
return rejmark;
});
}
else
{
auto leftsatmark = left->acc().sat_mark();
if (!leftsatmark.first)
{
// Right is weak. Left was not weak, but it is
// always rejecting. We can therefore pretend
// that left is weak.
goto weak_weak;
}
res->copy_acceptance_of(left);
acc_cond::mark_t accmark = leftsatmark.second;
auto& racc = right->acc();
product_main(left, right, left_state, right_state, res,
[&] (acc_cond::mark_t ml, acc_cond::mark_t mr)
{
if (!racc.accepting(mr))
return ml;
else
return accmark;
});
}
}
}
else // general case
{
auto left_num = left->num_sets();
auto right_acc = right->get_acceptance() << left_num;
if (and_acc)
right_acc &= left->get_acceptance();
else
right_acc |= left->get_acceptance();
res->set_acceptance(left_num + right->num_sets(), right_acc);
product_main(left, right, left_state, right_state, res,
[&] (acc_cond::mark_t ml, acc_cond::mark_t mr)
{
return ml | (mr << left_num);
});
}
// The product of two non-deterministic automata could be // The product of two non-deterministic automata could be
// deterministic. Likewise for non-complete automata. // deterministic. Likewise for non-complete automata.
@ -147,8 +314,7 @@ namespace spot
unsigned left_state, unsigned left_state,
unsigned right_state) unsigned right_state)
{ {
return product_aux(complete(left), return product_aux(complete(left), complete(right),
complete(right),
left_state, right_state, false); left_state, right_state, false);
} }

View file

@ -1,5 +1,5 @@
// -*- coding: utf-8 -*- // -*- coding: utf-8 -*-
// Copyright (C) 2014, 2015 Laboratoire de Recherche et // Copyright (C) 2014, 2015, 2018 Laboratoire de Recherche et
// Développement de l'Epita (LRDE). // Développement de l'Epita (LRDE).
// //
// This file is part of Spot, a model checking library. // This file is part of Spot, a model checking library.
@ -36,7 +36,10 @@ namespace spot
/// The resulting automaton will accept the intersection of both /// The resulting automaton will accept the intersection of both
/// languages and have an acceptance condition that is the /// languages and have an acceptance condition that is the
/// conjunction of the acceptance conditions of the two input /// conjunction of the acceptance conditions of the two input
/// automata. /// automata. In case one of the left or right automaton is weak,
/// the acceptance condition of the result is made simpler: it
/// usually is the acceptance condition of the other argument,
/// therefore avoiding the need to introduce new accepting sets.
/// ///
/// The algorithm also defines a named property called /// The algorithm also defines a named property called
/// "product-states" with type spot::product_states. This stores /// "product-states" with type spot::product_states. This stores
@ -56,7 +59,10 @@ namespace spot
/// languages recognized by each input automaton (with its initial /// languages recognized by each input automaton (with its initial
/// state changed) and have an acceptance condition that is the /// state changed) and have an acceptance condition that is the
/// conjunction of the acceptance conditions of the two input /// conjunction of the acceptance conditions of the two input
/// automata. /// automata. In case one of the left or right automaton is weak,
/// the acceptance condition of the result is made simpler: it
/// usually is the acceptance condition of the other argument,
/// therefore avoiding the need to introduce new accepting sets.
/// ///
/// The algorithm also defines a named property called /// The algorithm also defines a named property called
/// "product-states" with type spot::product_states. This stores /// "product-states" with type spot::product_states. This stores
@ -74,7 +80,10 @@ namespace spot
/// The resulting automaton will accept the union of both /// The resulting automaton will accept the union of both
/// languages and have an acceptance condition that is the /// languages and have an acceptance condition that is the
/// disjunction of the acceptance conditions of the two input /// disjunction of the acceptance conditions of the two input
/// automata. /// automata. In case one of the left or right automaton is weak,
/// the acceptance condition of the result is made simpler: it
/// usually is the acceptance condition of the other argument,
/// therefore avoiding the need to introduce new accepting sets.
/// ///
/// The algorithm also defines a named property called /// The algorithm also defines a named property called
/// "product-states" with type spot::product_states. This stores /// "product-states" with type spot::product_states. This stores
@ -94,7 +103,10 @@ namespace spot
/// recognized by each input automaton (with its initial state /// recognized by each input automaton (with its initial state
/// changed) and have an acceptance condition that is the /// changed) and have an acceptance condition that is the
/// disjunction of the acceptance conditions of the two input /// disjunction of the acceptance conditions of the two input
/// automata. /// automata. In case one of the left or right automaton is weak,
/// the acceptance condition of the result is made simpler: it
/// usually is the acceptance condition of the other argument,
/// therefore avoiding the need to introduce new accepting sets.
/// ///
/// The algorithm also defines a named property called /// The algorithm also defines a named property called
/// "product-states" with type spot::product_states. This stores /// "product-states" with type spot::product_states. This stores

View file

@ -383,6 +383,7 @@ TESTS_python = \
python/parsetgba.py \ python/parsetgba.py \
python/parity.py \ python/parity.py \
python/prodexpt.py \ python/prodexpt.py \
python/_product_weak.ipynb \
python/randgen.py \ python/randgen.py \
python/relabel.py \ python/relabel.py \
python/remfin.py \ python/remfin.py \

View file

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Copyright (C) 2015, 2017 Laboratoire de Recherche et Développement # Copyright (C) 2015, 2017, 2018 Laboratoire de Recherche et Développement
# de l'Epita (LRDE). # de l'Epita (LRDE).
# #
# This file is part of Spot, a model checking library. # This file is part of Spot, a model checking library.
@ -106,6 +106,7 @@ diff pand.hoa exp
test 2 = `autfilt -c --intersect pand.hoa gfa.hoa fgb.hoa` test 2 = `autfilt -c --intersect pand.hoa gfa.hoa fgb.hoa`
# Xb is weak, so the product will still be Büchi
ltl2tgba -BDH 'GFa' > gfa.hoa ltl2tgba -BDH 'GFa' > gfa.hoa
ltl2tgba -BDH 'Xb' > xb.hoa ltl2tgba -BDH 'Xb' > xb.hoa
autfilt --product-or gfa.hoa xb.hoa -H > por.hoa autfilt --product-or gfa.hoa xb.hoa -H > por.hoa
@ -116,14 +117,15 @@ HOA: v1
States: 7 States: 7
Start: 0 Start: 0
AP: 2 "a" "b" AP: 2 "a" "b"
Acceptance: 2 Inf(0) | Inf(1) acc-name: Buchi
Acceptance: 1 Inf(0)
properties: trans-labels explicit-labels state-acc complete properties: trans-labels explicit-labels state-acc complete
properties: deterministic properties: deterministic
--BODY-- --BODY--
State: 0 {1} State: 0 {0}
[0] 1 [0] 1
[!0] 2 [!0] 2
State: 1 {1} State: 1 {0}
[0&1] 3 [0&1] 3
[!0&1] 4 [!0&1] 4
[0&!1] 5 [0&!1] 5
@ -133,13 +135,13 @@ State: 2
[!0&1] 4 [!0&1] 4
[0&!1] 5 [0&!1] 5
[!0&!1] 6 [!0&!1] 6
State: 3 {0 1} State: 3 {0}
[0] 3 [0] 3
[!0] 4 [!0] 4
State: 4 {0} State: 4 {0}
[0] 3 [0] 3
[!0] 4 [!0] 4
State: 5 {1} State: 5 {0}
[0] 5 [0] 5
[!0] 6 [!0] 6
State: 6 State: 6
@ -159,14 +161,15 @@ HOA: v1
States: 7 States: 7
Start: 0 Start: 0
AP: 2 "a" "b" AP: 2 "a" "b"
Acceptance: 2 Inf(0) | Inf(1) acc-name: Buchi
Acceptance: 1 Inf(0)
properties: trans-labels explicit-labels state-acc complete properties: trans-labels explicit-labels state-acc complete
properties: deterministic properties: deterministic
--BODY-- --BODY--
State: 0 {0 1} State: 0 {0}
[0] 1 [0] 1
[!0] 2 [!0] 2
State: 1 {0 1} State: 1 {0}
[0&1] 3 [0&1] 3
[!0&1] 4 [!0&1] 4
[0&!1] 5 [0&!1] 5
@ -176,13 +179,13 @@ State: 2 {0}
[!0&1] 4 [!0&1] 4
[0&!1] 5 [0&!1] 5
[!0&!1] 6 [!0&!1] 6
State: 3 {0 1} State: 3 {0}
[0] 3 [0] 3
[!0] 4 [!0] 4
State: 4 {0} State: 4 {0}
[0] 3 [0] 3
[!0] 4 [!0] 4
State: 5 {1} State: 5 {0}
[0] 5 [0] 5
[!0] 6 [!0] 6
State: 6 State: 6

File diff suppressed because it is too large Load diff

View file

@ -8,6 +8,7 @@
"source": [ "source": [
"from IPython.display import display\n", "from IPython.display import display\n",
"import spot\n", "import spot\n",
"from spot.jupyter import display_inline\n",
"spot.setup()" "spot.setup()"
] ]
}, },
@ -163,7 +164,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fbe2c0c80f0> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f16ec60d690> >"
] ]
}, },
"execution_count": 2, "execution_count": 2,
@ -600,7 +601,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fbe1efccd80> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f16ec57bc90> >"
] ]
}, },
"execution_count": 6, "execution_count": 6,
@ -676,7 +677,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fbe1efdc180> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f16ec58a9f0> >"
] ]
}, },
"execution_count": 7, "execution_count": 7,
@ -759,7 +760,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fbe1efdc150> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f16ec58ab10> >"
] ]
}, },
"execution_count": 8, "execution_count": 8,
@ -1278,7 +1279,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fbe1efee7e0> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f16ec59c840> >"
] ]
}, },
"execution_count": 12, "execution_count": 12,
@ -1392,7 +1393,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fbe1efee900> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f16ec59ca20> >"
] ]
}, },
"execution_count": 13, "execution_count": 13,
@ -1523,7 +1524,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fbe1efee7b0> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f16ec59cab0> >"
] ]
}, },
"execution_count": 14, "execution_count": 14,
@ -1635,7 +1636,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fbe1efee810> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f16ec59cb10> >"
] ]
}, },
"execution_count": 15, "execution_count": 15,
@ -2180,7 +2181,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fbe1efcc9c0> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f16ec59c210> >"
] ]
}, },
"execution_count": 16, "execution_count": 16,
@ -2391,7 +2392,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fbe1efee2a0> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f16ec59cbd0> >"
] ]
}, },
"metadata": {}, "metadata": {},
@ -2541,7 +2542,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fbe1efcce40> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f16ec57b9c0> >"
] ]
}, },
"metadata": {}, "metadata": {},
@ -2713,7 +2714,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fbe1efeec90> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f16ec59ce40> >"
] ]
}, },
"metadata": {}, "metadata": {},
@ -2888,7 +2889,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fbe1efeeba0> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f16ec59cc90> >"
] ]
}, },
"metadata": {}, "metadata": {},
@ -3074,7 +3075,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fbe1efeee40> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f16ec59cf00> >"
] ]
}, },
"execution_count": 21, "execution_count": 21,
@ -3150,7 +3151,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fbe1efeef30> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f16ec59c8d0> >"
] ]
}, },
"execution_count": 22, "execution_count": 22,
@ -3169,123 +3170,151 @@
"outputs": [ "outputs": [
{ {
"data": { "data": {
"image/svg+xml": [ "text/plain": [
"<svg height=\"128pt\" viewBox=\"0.00 0.00 170.00 128.00\" width=\"170pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", "True"
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 124)\">\n", ]
"<polygon fill=\"#ffffff\" points=\"-4,4 -4,-124 166,-124 166,4 -4,4\" stroke=\"transparent\"/>\n", },
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"60\" y=\"-105.8\">Inf(</text>\n", "execution_count": 23,
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"82\" y=\"-105.8\">⓿</text>\n", "metadata": {},
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"98\" y=\"-105.8\">)</text>\n", "output_type": "execute_result"
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"58\" y=\"-91.8\">[Büchi]</text>\n", }
],
"source": [
"spot.formula('(a W c) & FGa').is_syntactic_persistence()"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"no\n"
]
},
{
"data": {
"text/html": [
"<div style='vertical-align:text-top;display:inline-block;'><svg height=\"130pt\" viewBox=\"0.00 0.00 165.00 130.40\" width=\"165pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 126.3966)\">\n",
"<polygon fill=\"#ffffff\" points=\"-4,4 -4,-126.3966 161,-126.3966 161,4 -4,4\" stroke=\"transparent\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"57.5\" y=\"-108.1966\">Inf(</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"79.5\" y=\"-108.1966\">⓿</text>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"95.5\" y=\"-108.1966\">)</text>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"55.5\" y=\"-94.1966\">[Büchi]</text>\n",
"<!-- I -->\n", "<!-- I -->\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node2\">\n",
"<title>1</title>\n",
"<ellipse cx=\"56\" cy=\"-18\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-14.3\">1</text>\n",
"</g>\n",
"<!-- I&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge1\">\n",
"<title>I-&gt;1</title>\n",
"<path d=\"M1.1233,-18C4.178,-18 17.9448,-18 30.9241,-18\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"37.9807,-18 30.9808,-21.1501 34.4807,-18 30.9807,-18.0001 30.9807,-18.0001 30.9807,-18.0001 34.4807,-18 30.9807,-14.8501 37.9807,-18 37.9807,-18\" stroke=\"#000000\"/>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge4\">\n",
"<title>1-&gt;1</title>\n",
"<path d=\"M49.6208,-35.0373C48.3189,-44.8579 50.4453,-54 56,-54 60.166,-54 62.4036,-48.8576 62.7128,-42.1433\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"62.3792,-35.0373 65.8541,-41.8818 62.5434,-38.5335 62.7076,-42.0296 62.7076,-42.0296 62.7076,-42.0296 62.5434,-38.5335 59.561,-42.1774 62.3792,-35.0373 62.3792,-35.0373\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"38\" y=\"-72.8\">a &amp; !c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"48\" y=\"-57.8\">⓿</text>\n",
"</g>\n",
"<!-- 0 -->\n", "<!-- 0 -->\n",
"<g class=\"node\" id=\"node3\">\n", "<g class=\"node\" id=\"node2\">\n",
"<title>0</title>\n", "<title>0</title>\n",
"<ellipse cx=\"144\" cy=\"-18\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n", "<ellipse cx=\"56\" cy=\"-20.3966\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"144\" y=\"-14.3\">0</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-16.6966\">0</text>\n",
"</g>\n", "</g>\n",
"<!-- 1&#45;&gt;0 -->\n", "<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge3\">\n", "<g class=\"edge\" id=\"edge1\">\n",
"<title>1-&gt;0</title>\n", "<title>I-&gt;0</title>\n",
"<path d=\"M74.2337,-18C87.0948,-18 104.4907,-18 118.6942,-18\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M1.1233,-20.3966C4.178,-20.3966 17.9448,-20.3966 30.9241,-20.3966\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"125.7897,-18 118.7897,-21.1501 122.2897,-18 118.7897,-18.0001 118.7897,-18.0001 118.7897,-18.0001 122.2897,-18 118.7897,-14.8501 125.7897,-18 125.7897,-18\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"37.9807,-20.3966 30.9808,-23.5467 34.4807,-20.3967 30.9807,-20.3967 30.9807,-20.3967 30.9807,-20.3967 34.4807,-20.3967 30.9807,-17.2467 37.9807,-20.3966 37.9807,-20.3966\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"96.5\" y=\"-36.8\">c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-21.8\">⓿</text>\n",
"</g>\n", "</g>\n",
"<!-- 0&#45;&gt;0 -->\n", "<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge2\">\n", "<g class=\"edge\" id=\"edge2\">\n",
"<title>0-&gt;0</title>\n", "<title>0-&gt;0</title>\n",
"<path d=\"M136.3321,-34.2903C134.4831,-44.3892 137.0391,-54 144,-54 149.2207,-54 151.9636,-48.5939 152.2287,-41.6304\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M49.6208,-37.4339C48.3189,-47.2545 50.4453,-56.3966 56,-56.3966 60.166,-56.3966 62.4036,-51.2542 62.7128,-44.5399\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"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\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"62.3792,-37.4339 65.8541,-44.2785 62.5434,-40.9301 62.7076,-44.4262 62.7076,-44.4262 62.7076,-44.4262 62.5434,-40.9301 59.561,-44.574 62.3792,-37.4339 62.3792,-37.4339\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"139.5\" y=\"-72.8\">1</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"50.5\" y=\"-75.1966\">!a</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"136\" y=\"-57.8\">⓿</text>\n", "<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"48\" y=\"-60.1966\">⓿</text>\n",
"</g>\n", "</g>\n",
"</g>\n",
"</svg>"
],
"text/plain": [
"<IPython.core.display.SVG object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/svg+xml": [
"<svg height=\"128pt\" viewBox=\"0.00 0.00 163.00 128.00\" width=\"163pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 124)\">\n",
"<polygon fill=\"#ffffff\" points=\"-4,4 -4,-124 159,-124 159,4 -4,4\" stroke=\"transparent\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"56.5\" y=\"-105.8\">Inf(</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"78.5\" y=\"-105.8\">❶</text>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"94.5\" y=\"-105.8\">)</text>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"54.5\" y=\"-91.8\">[Büchi]</text>\n",
"<!-- I -->\n",
"<!-- 1 -->\n", "<!-- 1 -->\n",
"<g class=\"node\" id=\"node2\">\n", "<g class=\"node\" id=\"node3\">\n",
"<title>1</title>\n", "<title>1</title>\n",
"<ellipse cx=\"56\" cy=\"-18\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n", "<ellipse cx=\"139\" cy=\"-20.3966\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-14.3\">1</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"139\" y=\"-16.6966\">1</text>\n",
"</g>\n", "</g>\n",
"<!-- I&#45;&gt;1 -->\n", "<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge3\">\n",
"<title>0-&gt;1</title>\n",
"<path d=\"M74.0098,-20.3966C85.5679,-20.3966 100.7507,-20.3966 113.5345,-20.3966\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"120.7388,-20.3966 113.7388,-23.5467 117.2388,-20.3967 113.7388,-20.3967 113.7388,-20.3967 113.7388,-20.3967 117.2388,-20.3967 113.7387,-17.2467 120.7388,-20.3966 120.7388,-20.3966\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"94\" y=\"-24.1966\">a</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge4\">\n",
"<title>1-&gt;0</title>\n",
"<path d=\"M124.5385,-9.3757C115.4203,-3.7422 103.2768,1.3966 92,-1.3966 87.1146,-2.6067 82.1612,-4.614 77.5558,-6.8813\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"71.1057,-10.3266 75.7959,-4.25 74.1929,-8.6776 77.2801,-7.0285 77.2801,-7.0285 77.2801,-7.0285 74.1929,-8.6776 78.7642,-9.807 71.1057,-10.3266 71.1057,-10.3266\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-5.1966\">!a</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge5\">\n",
"<title>1-&gt;1</title>\n",
"<path d=\"M131.9688,-37.0607C130.4063,-47.0216 132.75,-56.3966 139,-56.3966 143.6875,-56.3966 146.1777,-51.1232 146.4707,-44.2842\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"146.0313,-37.0607 149.6006,-43.8564 146.2438,-40.5542 146.4564,-44.0478 146.4564,-44.0478 146.4564,-44.0478 146.2438,-40.5542 143.3122,-44.2391 146.0313,-37.0607 146.0313,-37.0607\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"135.5\" y=\"-75.1966\">a</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"131\" y=\"-60.1966\">⓿</text>\n",
"</g>\n",
"</g>\n",
"</svg></div><div style='vertical-align:text-top;display:inline-block;'><svg height=\"161pt\" viewBox=\"0.00 0.00 163.00 161.00\" width=\"163pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 157)\">\n",
"<polygon fill=\"#ffffff\" points=\"-4,4 -4,-157 159,-157 159,4 -4,4\" stroke=\"transparent\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"56.5\" y=\"-138.8\">Inf(</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"78.5\" y=\"-138.8\">❶</text>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"94.5\" y=\"-138.8\">)</text>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"54.5\" y=\"-124.8\">[Büchi]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\">\n",
"<title>0</title>\n",
"<ellipse cx=\"56\" cy=\"-18\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-14.3\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\">\n", "<g class=\"edge\" id=\"edge1\">\n",
"<title>I-&gt;1</title>\n", "<title>I-&gt;0</title>\n",
"<path d=\"M1.1233,-18C4.178,-18 17.9448,-18 30.9241,-18\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M1.1233,-18C4.178,-18 17.9448,-18 30.9241,-18\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"37.9807,-18 30.9808,-21.1501 34.4807,-18 30.9807,-18.0001 30.9807,-18.0001 30.9807,-18.0001 34.4807,-18 30.9807,-14.8501 37.9807,-18 37.9807,-18\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"37.9807,-18 30.9808,-21.1501 34.4807,-18 30.9807,-18.0001 30.9807,-18.0001 30.9807,-18.0001 34.4807,-18 30.9807,-14.8501 37.9807,-18 37.9807,-18\" stroke=\"#000000\"/>\n",
"</g>\n", "</g>\n",
"<!-- 1&#45;&gt;1 -->\n", "<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge4\">\n", "<g class=\"edge\" id=\"edge2\">\n",
"<title>1-&gt;1</title>\n", "<title>0-&gt;0</title>\n",
"<path d=\"M49.6208,-35.0373C48.3189,-44.8579 50.4453,-54 56,-54 60.166,-54 62.4036,-48.8576 62.7128,-42.1433\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M49.6208,-35.0373C48.3189,-44.8579 50.4453,-54 56,-54 60.166,-54 62.4036,-48.8576 62.7128,-42.1433\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"62.3792,-35.0373 65.8541,-41.8818 62.5434,-38.5335 62.7076,-42.0296 62.7076,-42.0296 62.7076,-42.0296 62.5434,-38.5335 59.561,-42.1774 62.3792,-35.0373 62.3792,-35.0373\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"62.3792,-35.0373 65.8541,-41.8818 62.5434,-38.5335 62.7076,-42.0296 62.7076,-42.0296 62.7076,-42.0296 62.5434,-38.5335 59.561,-42.1774 62.3792,-35.0373 62.3792,-35.0373\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"37.5\" y=\"-57.8\">a &amp; !b</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"37.5\" y=\"-57.8\">a &amp; !b</text>\n",
"</g>\n", "</g>\n",
"<!-- 0 -->\n", "<!-- 1 -->\n",
"<g class=\"node\" id=\"node3\">\n", "<g class=\"node\" id=\"node3\">\n",
"<title>0</title>\n", "<title>1</title>\n",
"<ellipse cx=\"137\" cy=\"-18\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n", "<ellipse cx=\"137\" cy=\"-18\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"137\" y=\"-14.3\">0</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"137\" y=\"-14.3\">1</text>\n",
"</g>\n", "</g>\n",
"<!-- 1&#45;&gt;0 -->\n", "<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge3\">\n", "<g class=\"edge\" id=\"edge3\">\n",
"<title>1-&gt;0</title>\n", "<title>0-&gt;1</title>\n",
"<path d=\"M74.3802,-18C85.4352,-18 99.6622,-18 111.7609,-18\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M74.3802,-18C85.4352,-18 99.6622,-18 111.7609,-18\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"118.9716,-18 111.9716,-21.1501 115.4716,-18 111.9716,-18.0001 111.9716,-18.0001 111.9716,-18.0001 115.4716,-18 111.9716,-14.8501 118.9716,-18 118.9716,-18\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"118.9716,-18 111.9716,-21.1501 115.4716,-18 111.9716,-18.0001 111.9716,-18.0001 111.9716,-18.0001 115.4716,-18 111.9716,-14.8501 118.9716,-18 118.9716,-18\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-21.8\">b</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-21.8\">b</text>\n",
"</g>\n", "</g>\n",
"<!-- 0&#45;&gt;0 -->\n", "<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge2\">\n", "<g class=\"edge\" id=\"edge4\">\n",
"<title>0-&gt;0</title>\n", "<title>1-&gt;1</title>\n",
"<path d=\"M129.9688,-34.6641C128.4063,-44.625 130.75,-54 137,-54 141.6875,-54 144.1777,-48.7266 144.4707,-41.8876\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M133.4047,-35.7817C132.7938,-45.3149 133.9922,-54 137,-54 139.2089,-54 140.4419,-49.3161 140.6991,-43.0521\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"144.0313,-34.6641 147.6006,-41.4598 144.2438,-38.1576 144.4564,-41.6511 144.4564,-41.6511 144.4564,-41.6511 144.2438,-38.1576 141.3122,-41.8425 144.0313,-34.6641 144.0313,-34.6641\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"140.5953,-35.7817 143.845,-42.736 140.6453,-39.2814 140.6954,-42.781 140.6954,-42.781 140.6954,-42.781 140.6453,-39.2814 137.5457,-42.8261 140.5953,-35.7817 140.5953,-35.7817\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"132.5\" y=\"-72.8\">1</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"131.5\" y=\"-57.8\">!c</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"129\" y=\"-57.8\">❶</text>\n", "</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge5\">\n",
"<title>1-&gt;1</title>\n",
"<path d=\"M131.1479,-35.1418C127.7056,-52.585 129.6563,-72 137,-72 143.3684,-72 145.6812,-57.3996 143.9382,-42.146\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"142.8521,-35.1418 147.0376,-41.5763 143.3884,-38.6004 143.9248,-42.0591 143.9248,-42.0591 143.9248,-42.0591 143.3884,-38.6004 140.812,-42.5418 142.8521,-35.1418 142.8521,-35.1418\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"133.5\" y=\"-90.8\">c</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"129\" y=\"-75.8\">❶</text>\n",
"</g>\n", "</g>\n",
"</g>\n", "</g>\n",
"</svg>" "</svg></div>"
], ],
"text/plain": [ "text/plain": [
"<IPython.core.display.SVG object>" "<IPython.core.display.HTML object>"
] ]
}, },
"metadata": {}, "metadata": {},
@ -3293,267 +3322,323 @@
}, },
{ {
"data": { "data": {
"image/svg+xml": [ "text/html": [
"<svg height=\"271pt\" viewBox=\"0.00 0.00 374.00 271.00\" width=\"374pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", "<div style='vertical-align:text-top;display:inline-block;width:50%;'><svg height=\"279pt\" viewBox=\"0.00 0.00 484.00 279.06\" width=\"484pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 267)\">\n", "<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 275.0638)\">\n",
"<polygon fill=\"#ffffff\" points=\"-4,4 -4,-267 370,-267 370,4 -4,4\" stroke=\"transparent\"/>\n", "<polygon fill=\"#ffffff\" points=\"-4,4 -4,-275.0638 480,-275.0638 480,4 -4,4\" stroke=\"transparent\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"136\" y=\"-248.8\">Inf(</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"191\" y=\"-256.8638\">Inf(</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"158\" y=\"-248.8\">⓿</text>\n", "<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"213\" y=\"-256.8638\">⓿</text>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"174\" y=\"-248.8\">)&amp;Inf(</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"229\" y=\"-256.8638\">)&amp;Inf(</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"210\" y=\"-248.8\">❶</text>\n", "<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"265\" y=\"-256.8638\">❶</text>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"226\" y=\"-248.8\">)</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"281\" y=\"-256.8638\">)</text>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"139\" y=\"-234.8\">[gen. Büchi 2]</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"194\" y=\"-242.8638\">[gen. Büchi 2]</text>\n",
"<!-- I -->\n", "<!-- I -->\n",
"<!-- 0 -->\n", "<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\">\n", "<g class=\"node\" id=\"node2\">\n",
"<title>0</title>\n", "<title>0</title>\n",
"<ellipse cx=\"65\" cy=\"-118\" fill=\"#ffffaa\" rx=\"27\" ry=\"18\" stroke=\"#000000\"/>\n", "<ellipse cx=\"65\" cy=\"-29.0638\" fill=\"#ffffaa\" rx=\"27\" ry=\"18\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"55\" y=\"-114.3\">1,1</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"55\" y=\"-25.3638\">0,0</text>\n",
"</g>\n", "</g>\n",
"<!-- I&#45;&gt;0 -->\n", "<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\">\n", "<g class=\"edge\" id=\"edge1\">\n",
"<title>I-&gt;0</title>\n", "<title>I-&gt;0</title>\n",
"<path d=\"M1.2244,-118C4.383,-118 17.3969,-118 30.8528,-118\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M1.2244,-29.0638C4.383,-29.0638 17.3969,-29.0638 30.8528,-29.0638\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"37.8798,-118 30.8799,-121.1501 34.3798,-118 30.8798,-118.0001 30.8798,-118.0001 30.8798,-118.0001 34.3798,-118 30.8798,-114.8501 37.8798,-118 37.8798,-118\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"37.8798,-29.0638 30.8799,-32.2139 34.3798,-29.0638 30.8798,-29.0639 30.8798,-29.0639 30.8798,-29.0639 34.3798,-29.0638 30.8798,-25.9139 37.8798,-29.0638 37.8798,-29.0638\" stroke=\"#000000\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge5\">\n",
"<title>0-&gt;0</title>\n",
"<path d=\"M57.1448,-135.4099C55.6785,-145.0879 58.2969,-154 65,-154 69.9226,-154 72.6423,-149.1936 73.1591,-142.8073\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"72.8552,-135.4099 76.2899,-142.2747 72.9989,-138.9069 73.1426,-142.404 73.1426,-142.404 73.1426,-142.404 72.9989,-138.9069 69.9953,-142.5333 72.8552,-135.4099 72.8552,-135.4099\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"32\" y=\"-172.8\">a &amp; !b &amp; !c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"57\" y=\"-157.8\">⓿</text>\n",
"</g>\n", "</g>\n",
"<!-- 1 -->\n", "<!-- 1 -->\n",
"<g class=\"node\" id=\"node3\">\n", "<g class=\"node\" id=\"node3\">\n",
"<title>1</title>\n", "<title>1</title>\n",
"<ellipse cx=\"339\" cy=\"-118\" fill=\"#ffffaa\" rx=\"27\" ry=\"18\" stroke=\"#000000\"/>\n", "<ellipse cx=\"319\" cy=\"-123.0638\" fill=\"#ffffaa\" rx=\"27\" ry=\"18\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"329\" y=\"-114.3\">0,0</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"309\" y=\"-119.3638\">0,1</text>\n",
"</g>\n", "</g>\n",
"<!-- 0&#45;&gt;1 -->\n", "<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge2\">\n", "<g class=\"edge\" id=\"edge2\">\n",
"<title>0-&gt;1</title>\n", "<title>0-&gt;1</title>\n",
"<path d=\"M80.5461,-132.8388C111.2933,-160.3129 182.249,-214.4376 244,-193 274.5832,-182.3827 302.7623,-157.3816 320.3546,-139.1546\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M80.0121,-44.4121C98.2989,-62.0597 130.9836,-90.3536 165,-104.0638 203.8607,-119.7263 252.3451,-123.3706 284.4157,-123.8186\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"325.4653,-133.7389 322.952,-140.9919 323.0632,-136.2844 320.661,-138.8299 320.661,-138.8299 320.661,-138.8299 323.0632,-136.2844 318.37,-136.668 325.4653,-133.7389 325.4653,-133.7389\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"291.799,-123.8693 284.7775,-126.9711 288.2991,-123.8452 284.7992,-123.8212 284.7992,-123.8212 284.7992,-123.8212 288.2991,-123.8452 284.8208,-120.6712 291.799,-123.8693 291.799,-123.8693\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"200\" y=\"-215.8\">b &amp; c</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"173.5\" y=\"-136.8638\">!a &amp; b</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"209\" y=\"-200.8\">⓿</text>\n", "<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"184\" y=\"-121.8638\">⓿</text>\n",
"</g>\n", "</g>\n",
"<!-- 2 -->\n", "<!-- 2 -->\n",
"<g class=\"node\" id=\"node4\">\n", "<g class=\"node\" id=\"node4\">\n",
"<title>2</title>\n", "<title>2</title>\n",
"<ellipse cx=\"217\" cy=\"-118\" fill=\"#ffffaa\" rx=\"27\" ry=\"18\" stroke=\"#000000\"/>\n", "<ellipse cx=\"192\" cy=\"-29.0638\" fill=\"#ffffaa\" rx=\"27\" ry=\"18\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"207\" y=\"-114.3\">0,1</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"182\" y=\"-25.3638\">1,0</text>\n",
"</g>\n", "</g>\n",
"<!-- 0&#45;&gt;2 -->\n", "<!-- 0&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge3\">\n", "<g class=\"edge\" id=\"edge3\">\n",
"<title>0-&gt;2</title>\n", "<title>0-&gt;2</title>\n",
"<path d=\"M92.1746,-118C117.4935,-118 155.35,-118 182.7316,-118\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M92.2447,-29.0638C111.4127,-29.0638 137.2089,-29.0638 157.7667,-29.0638\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"189.8049,-118 182.8049,-121.1501 186.3049,-118 182.8049,-118.0001 182.8049,-118.0001 182.8049,-118.0001 186.3049,-118 182.8049,-114.8501 189.8049,-118 189.8049,-118\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"164.8004,-29.0638 157.8004,-32.2139 161.3004,-29.0638 157.8004,-29.0639 157.8004,-29.0639 157.8004,-29.0639 161.3004,-29.0638 157.8003,-25.9139 164.8004,-29.0638 164.8004,-29.0638\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"110\" y=\"-136.8\">a &amp; !b &amp; c</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"110\" y=\"-32.8638\">a &amp; !b</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"133\" y=\"-121.8\">⓿</text>\n",
"</g>\n", "</g>\n",
"<!-- 3 -->\n", "<!-- 3 -->\n",
"<g class=\"node\" id=\"node5\">\n", "<g class=\"node\" id=\"node5\">\n",
"<title>3</title>\n", "<title>3</title>\n",
"<ellipse cx=\"217\" cy=\"-18\" fill=\"#ffffaa\" rx=\"27\" ry=\"18\" stroke=\"#000000\"/>\n", "<ellipse cx=\"449\" cy=\"-88.0638\" fill=\"#ffffaa\" rx=\"27\" ry=\"18\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"207\" y=\"-14.3\">1,0</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"439\" y=\"-84.3638\">1,1</text>\n",
"</g>\n", "</g>\n",
"<!-- 0&#45;&gt;3 -->\n", "<!-- 0&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge4\">\n", "<g class=\"edge\" id=\"edge4\">\n",
"<title>0-&gt;3</title>\n", "<title>0-&gt;3</title>\n",
"<path d=\"M82.6721,-104.0387C90.8549,-97.7332 100.7863,-90.3017 110,-84 136.7268,-65.7202 168.411,-46.462 190.3309,-33.4984\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M89.2895,-20.5704C109.3161,-14.0403 138.6165,-5.5629 165,-2.0638 188.7917,1.0916 195.0789,-.1195 219,-2.0638 302.9404,-8.8862 330.6391,-1.7029 404,-43.0638 414.322,-48.8833 423.8935,-57.7249 431.5317,-66.035\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"196.5227,-29.8504 192.0906,-36.1178 193.5071,-31.6271 190.4916,-33.4038 190.4916,-33.4038 190.4916,-33.4038 193.5071,-31.6271 188.8926,-30.6898 196.5227,-29.8504 196.5227,-29.8504\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"436.4962,-71.6595 429.5023,-68.4959 434.1801,-69.0355 431.8639,-66.4114 431.8639,-66.4114 431.8639,-66.4114 434.1801,-69.0355 434.2256,-64.3269 436.4962,-71.6595 436.4962,-71.6595\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"110\" y=\"-102.8\">a &amp; b &amp; !c</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"238.5\" y=\"-9.8638\">a &amp; b</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"133\" y=\"-87.8\">⓿</text>\n", "</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge5\">\n",
"<title>1-&gt;1</title>\n",
"<path d=\"M313.4273,-140.8455C312.4803,-150.3787 314.3379,-159.0638 319,-159.0638 322.4237,-159.0638 324.335,-154.3798 324.7337,-148.1159\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"324.5727,-140.8455 327.877,-147.774 324.6502,-144.3446 324.7277,-147.8438 324.7277,-147.8438 324.7277,-147.8438 324.6502,-144.3446 321.5785,-147.9135 324.5727,-140.8455 324.5727,-140.8455\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"299\" y=\"-177.8638\">!a &amp; !c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"311\" y=\"-162.8638\">⓿</text>\n",
"</g>\n", "</g>\n",
"<!-- 1&#45;&gt;1 -->\n", "<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge6\">\n", "<g class=\"edge\" id=\"edge6\">\n",
"<title>1-&gt;1</title>\n", "<title>1-&gt;1</title>\n",
"<path d=\"M328.4531,-134.6641C326.1094,-144.625 329.625,-154 339,-154 346.0313,-154 349.7666,-148.7266 350.2061,-141.8876\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M310.4657,-140.3128C304.4091,-161.4983 307.2539,-189.0638 319,-189.0638 329.5072,-189.0638 332.8918,-167.0063 329.1536,-147.1891\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"349.5469,-134.6641 353.3201,-141.3488 349.865,-138.1496 350.1831,-141.6351 350.1831,-141.6351 350.1831,-141.6351 349.865,-138.1496 347.0461,-141.9214 349.5469,-134.6641 349.5469,-134.6641\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"327.5343,-140.3128 332.205,-146.4043 328.3366,-143.7196 329.1389,-147.1264 329.1389,-147.1264 329.1389,-147.1264 328.3366,-143.7196 326.0727,-147.8485 327.5343,-140.3128 327.5343,-140.3128\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"334.5\" y=\"-171.8\">1</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"301\" y=\"-206.8638\">!a &amp; c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"323\" y=\"-157.8\">⓿</text>\n", "<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"303\" y=\"-192.8638\">⓿</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"339\" y=\"-157.8\">❶</text>\n", "<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"319\" y=\"-192.8638\">❶</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge7\">\n",
"<title>1-&gt;3</title>\n",
"<path d=\"M326.4052,-140.6219C333.6277,-155.2329 346.144,-175.0472 364,-184.0638 379.8693,-192.0771 388.9968,-193.6007 404,-184.0638 428.3898,-168.5601 439.7893,-135.9631 444.9584,-113.0715\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"446.4264,-106.0142 448.0848,-113.509 445.7136,-109.4409 445.0008,-112.8675 445.0008,-112.8675 445.0008,-112.8675 445.7136,-109.4409 441.9168,-112.226 446.4264,-106.0142 446.4264,-106.0142\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"366\" y=\"-193.8638\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge8\">\n",
"<title>1-&gt;3</title>\n",
"<path d=\"M343.3042,-131.1652C360.7865,-135.6248 384.602,-138.8417 404,-131.0638 414.9197,-126.6853 424.6906,-118.2535 432.3148,-110.0081\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"437.2378,-104.3815 434.999,-111.724 434.9331,-107.0156 432.6283,-109.6497 432.6283,-109.6497 432.6283,-109.6497 434.9331,-107.0156 430.2577,-107.5754 437.2378,-104.3815 437.2378,-104.3815\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"368\" y=\"-153.8638\">a &amp; c</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"376\" y=\"-138.8638\">❶</text>\n",
"</g>\n", "</g>\n",
"<!-- 2&#45;&gt;1 -->\n", "<!-- 2&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge7\">\n", "<g class=\"edge\" id=\"edge9\">\n",
"<title>2-&gt;1</title>\n", "<title>2-&gt;1</title>\n",
"<path d=\"M244.0758,-118C262.003,-118 285.6621,-118 304.8752,-118\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M210.196,-42.5317C232.5468,-59.0748 270.5227,-87.1829 295.1794,-105.4327\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"311.9999,-118 305,-121.1501 308.4999,-118 304.9999,-118.0001 304.9999,-118.0001 304.9999,-118.0001 308.4999,-118 304.9999,-114.8501 311.9999,-118 311.9999,-118\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"300.8378,-109.6208 293.3372,-107.9882 298.0245,-107.5386 295.2113,-105.4563 295.2113,-105.4563 295.2113,-105.4563 298.0245,-107.5386 297.0853,-102.9244 300.8378,-109.6208 300.8378,-109.6208\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"273.5\" y=\"-136.8\">b</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"237\" y=\"-90.8638\">!a &amp; b</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"270\" y=\"-121.8\">⓿</text>\n",
"</g>\n", "</g>\n",
"<!-- 2&#45;&gt;2 -->\n", "<!-- 2&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge8\">\n", "<g class=\"edge\" id=\"edge10\">\n",
"<title>2-&gt;2</title>\n", "<title>2-&gt;2</title>\n",
"<path d=\"M206.4531,-134.6641C204.1094,-144.625 207.625,-154 217,-154 224.0313,-154 227.7666,-148.7266 228.2061,-141.8876\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M181.1016,-45.7278C178.6797,-55.6888 182.3125,-65.0638 192,-65.0638 199.2656,-65.0638 203.1255,-59.7903 203.5796,-52.9513\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"227.5469,-134.6641 231.3201,-141.3488 227.865,-138.1496 228.1831,-141.6351 228.1831,-141.6351 228.1831,-141.6351 227.865,-138.1496 225.0461,-141.9214 227.5469,-134.6641 227.5469,-134.6641\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"202.8984,-45.7278 206.6918,-52.4011 203.2271,-49.2124 203.5557,-52.6969 203.5557,-52.6969 203.5557,-52.6969 203.2271,-49.2124 200.4196,-52.9927 202.8984,-45.7278 202.8984,-45.7278\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"198.5\" y=\"-172.8\">a &amp; !b</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"173.5\" y=\"-83.8638\">a &amp; !b</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"209\" y=\"-157.8\">⓿</text>\n", "<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"184\" y=\"-68.8638\">⓿</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge11\">\n",
"<title>2-&gt;3</title>\n",
"<path d=\"M219.0517,-28.9307C260.2943,-29.5646 340.7713,-34.1216 404,-58.0638 411.5297,-60.915 419.0641,-65.222 425.7551,-69.6898\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"431.6385,-73.8008 424.0963,-72.3735 428.7695,-71.7961 425.9005,-69.7914 425.9005,-69.7914 425.9005,-69.7914 428.7695,-71.7961 427.7048,-67.2093 431.6385,-73.8008 431.6385,-73.8008\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"302\" y=\"-60.8638\">a &amp; b</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"311\" y=\"-45.8638\">⓿</text>\n",
"</g>\n", "</g>\n",
"<!-- 3&#45;&gt;1 -->\n", "<!-- 3&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge9\">\n", "<g class=\"edge\" id=\"edge12\">\n",
"<title>3-&gt;1</title>\n", "<title>3-&gt;1</title>\n",
"<path d=\"M234.2209,-32.1155C255.7467,-49.7596 292.6453,-80.0043 316.4172,-99.4895\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M423.5681,-94.9108C402.8262,-100.4952 373.4072,-108.4157 351.0544,-114.4337\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"321.8667,-103.9563 314.4561,-101.955 319.1599,-101.7376 316.453,-99.5188 316.453,-99.5188 316.453,-99.5188 319.1599,-101.7376 318.4499,-97.0826 321.8667,-103.9563 321.8667,-103.9563\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"344.0653,-116.3154 350.0057,-111.4538 347.445,-115.4055 350.8246,-114.4955 350.8246,-114.4955 350.8246,-114.4955 347.445,-115.4055 351.6436,-117.5372 344.0653,-116.3154 344.0653,-116.3154\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"274.5\" y=\"-96.8\">c</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"364\" y=\"-113.8638\">!a &amp; !c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"262\" y=\"-82.8\">⓿</text>\n", "</g>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"278\" y=\"-82.8\">❶</text>\n", "<!-- 3&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge13\">\n",
"<title>3-&gt;1</title>\n",
"<path d=\"M429.332,-75.4937C411.5934,-65.8674 385.1248,-55.8266 364,-66.0638 349.6039,-73.0401 338.4238,-87.1034 330.8082,-99.5147\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"327.1525,-105.8081 327.9447,-98.173 328.9105,-102.7816 330.6685,-99.7552 330.6685,-99.7552 330.6685,-99.7552 328.9105,-102.7816 333.3923,-101.3374 327.1525,-105.8081 327.1525,-105.8081\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"366\" y=\"-84.8638\">!a &amp; c</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"376\" y=\"-69.8638\">❶</text>\n",
"</g>\n", "</g>\n",
"<!-- 3&#45;&gt;3 -->\n", "<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge10\">\n", "<g class=\"edge\" id=\"edge14\">\n",
"<title>3-&gt;3</title>\n", "<title>3-&gt;3</title>\n",
"<path d=\"M206.4531,-34.6641C204.1094,-44.625 207.625,-54 217,-54 224.0313,-54 227.7666,-48.7266 228.2061,-41.8876\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M443.2476,-105.8455C442.27,-115.3787 444.1875,-124.0638 449,-124.0638 452.5342,-124.0638 454.5071,-119.3798 454.9186,-113.1159\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"227.5469,-34.6641 231.3201,-41.3488 227.865,-38.1496 228.1831,-41.6351 228.1831,-41.6351 228.1831,-41.6351 227.865,-38.1496 225.0461,-41.9214 227.5469,-34.6641 227.5469,-34.6641\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"454.7524,-105.8455 458.0617,-112.7716 454.8325,-109.3446 454.9125,-112.8437 454.9125,-112.8437 454.9125,-112.8437 454.8325,-109.3446 451.7633,-112.9157 454.7524,-105.8455 454.7524,-105.8455\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"199\" y=\"-71.8\">a &amp; !c</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"431\" y=\"-142.8638\">a &amp; !c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"201\" y=\"-57.8\">⓿</text>\n", "<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"441\" y=\"-127.8638\">⓿</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"217\" y=\"-57.8\">❶</text>\n", "</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge15\">\n",
"<title>3-&gt;3</title>\n",
"<path d=\"M440.1904,-105.3128C433.9385,-126.4983 436.875,-154.0638 449,-154.0638 459.8462,-154.0638 463.3399,-132.0063 459.4811,-112.1891\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"457.8096,-105.3128 462.524,-111.3706 458.6363,-108.7137 459.4631,-112.1147 459.4631,-112.1147 459.4631,-112.1147 458.6363,-108.7137 456.4022,-112.8588 457.8096,-105.3128 457.8096,-105.3128\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"433\" y=\"-171.8638\">a &amp; c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"433\" y=\"-157.8638\">⓿</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"449\" y=\"-157.8638\">❶</text>\n",
"</g>\n", "</g>\n",
"</g>\n", "</g>\n",
"</svg>" "</svg></div><div style='vertical-align:text-top;display:inline-block;width:50%;'><svg height=\"278pt\" viewBox=\"0.00 0.00 413.00 278.48\" width=\"413pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
], "<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 274.4783)\">\n",
"text/plain": [ "<polygon fill=\"#ffffff\" points=\"-4,4 -4,-274.4783 409,-274.4783 409,4 -4,4\" stroke=\"transparent\"/>\n",
"<IPython.core.display.SVG object>" "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"155.5\" y=\"-256.2783\">Inf(</text>\n",
] "<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"177.5\" y=\"-256.2783\">⓿</text>\n",
}, "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"193.5\" y=\"-256.2783\">)&amp;Inf(</text>\n",
"metadata": {}, "<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"229.5\" y=\"-256.2783\">❶</text>\n",
"output_type": "display_data" "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"245.5\" y=\"-256.2783\">)</text>\n",
}, "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"158.5\" y=\"-242.2783\">[gen. Büchi 2]</text>\n",
{
"data": {
"image/svg+xml": [
"<svg height=\"271pt\" viewBox=\"0.00 0.00 320.00 271.00\" width=\"320pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 267)\">\n",
"<polygon fill=\"#ffffff\" points=\"-4,4 -4,-267 316,-267 316,4 -4,4\" stroke=\"transparent\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"109\" y=\"-248.8\">Inf(</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"131\" y=\"-248.8\">⓿</text>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"147\" y=\"-248.8\">)&amp;Inf(</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"183\" y=\"-248.8\">❶</text>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"199\" y=\"-248.8\">)</text>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"112\" y=\"-234.8\">[gen. Büchi 2]</text>\n",
"<!-- I -->\n", "<!-- I -->\n",
"<!-- 0 -->\n", "<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\">\n", "<g class=\"node\" id=\"node2\">\n",
"<title>0</title>\n", "<title>0</title>\n",
"<g id=\"a_node2\"><a xlink:title=\"1,1\">\n", "<g id=\"a_node2\"><a xlink:title=\"0,0\">\n",
"<ellipse cx=\"56\" cy=\"-118\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n", "<ellipse cx=\"56\" cy=\"-28.4783\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-114.3\">0</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-24.7783\">0</text>\n",
"</a>\n", "</a>\n",
"</g>\n", "</g>\n",
"</g>\n", "</g>\n",
"<!-- I&#45;&gt;0 -->\n", "<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\">\n", "<g class=\"edge\" id=\"edge1\">\n",
"<title>I-&gt;0</title>\n", "<title>I-&gt;0</title>\n",
"<path d=\"M1.1233,-118C4.178,-118 17.9448,-118 30.9241,-118\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M1.1233,-28.4783C4.178,-28.4783 17.9448,-28.4783 30.9241,-28.4783\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"37.9807,-118 30.9808,-121.1501 34.4807,-118 30.9807,-118.0001 30.9807,-118.0001 30.9807,-118.0001 34.4807,-118 30.9807,-114.8501 37.9807,-118 37.9807,-118\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"37.9807,-28.4783 30.9808,-31.6284 34.4807,-28.4784 30.9807,-28.4784 30.9807,-28.4784 30.9807,-28.4784 34.4807,-28.4784 30.9807,-25.3284 37.9807,-28.4783 37.9807,-28.4783\" stroke=\"#000000\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge5\">\n",
"<title>0-&gt;0</title>\n",
"<path d=\"M49.6208,-135.0373C48.3189,-144.8579 50.4453,-154 56,-154 60.166,-154 62.4036,-148.8576 62.7128,-142.1433\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"62.3792,-135.0373 65.8541,-141.8818 62.5434,-138.5335 62.7076,-142.0296 62.7076,-142.0296 62.7076,-142.0296 62.5434,-138.5335 59.561,-142.1774 62.3792,-135.0373 62.3792,-135.0373\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"23\" y=\"-172.8\">a &amp; !b &amp; !c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"48\" y=\"-157.8\">⓿</text>\n",
"</g>\n", "</g>\n",
"<!-- 1 -->\n", "<!-- 1 -->\n",
"<g class=\"node\" id=\"node3\">\n", "<g class=\"node\" id=\"node3\">\n",
"<title>1</title>\n", "<title>1</title>\n",
"<g id=\"a_node3\"><a xlink:title=\"0,0\">\n", "<g id=\"a_node3\"><a xlink:title=\"0,1\">\n",
"<ellipse cx=\"294\" cy=\"-118\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n", "<ellipse cx=\"275\" cy=\"-122.4783\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"294\" y=\"-114.3\">1</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"275\" y=\"-118.7783\">1</text>\n",
"</a>\n", "</a>\n",
"</g>\n", "</g>\n",
"</g>\n", "</g>\n",
"<!-- 0&#45;&gt;1 -->\n", "<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge2\">\n", "<g class=\"edge\" id=\"edge2\">\n",
"<title>0-&gt;1</title>\n", "<title>0-&gt;1</title>\n",
"<path d=\"M68.1852,-131.6286C93.4434,-158.1392 153.6917,-212.4194 208,-193 237.415,-182.4819 263.2224,-156.4652 278.706,-138.034\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M68.0094,-42.1794C84.1073,-59.5594 114.4491,-89.0069 147,-103.4783 180.4004,-118.3274 223.0486,-121.9763 249.6981,-122.6637\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"283.1724,-132.583 281.1724,-139.994 280.9541,-135.2903 278.7358,-137.9976 278.7358,-137.9976 278.7358,-137.9976 280.9541,-135.2903 276.2992,-136.0011 283.1724,-132.583 283.1724,-132.583\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"256.7693,-122.7859 249.7159,-125.8144 253.2698,-122.7254 249.7704,-122.6649 249.7704,-122.6649 249.7704,-122.6649 253.2698,-122.7254 249.8248,-119.5153 256.7693,-122.7859 256.7693,-122.7859\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"173\" y=\"-215.8\">b &amp; c</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"147\" y=\"-133.2783\">!a &amp; b</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"182\" y=\"-200.8\">⓿</text>\n", "<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"157.5\" y=\"-118.2783\">⓿</text>\n",
"</g>\n", "</g>\n",
"<!-- 2 -->\n", "<!-- 2 -->\n",
"<g class=\"node\" id=\"node4\">\n", "<g class=\"node\" id=\"node4\">\n",
"<title>2</title>\n", "<title>2</title>\n",
"<g id=\"a_node4\"><a xlink:title=\"0,1\">\n", "<g id=\"a_node4\"><a xlink:title=\"1,0\">\n",
"<ellipse cx=\"190\" cy=\"-118\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n", "<ellipse cx=\"165.5\" cy=\"-28.4783\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"190\" y=\"-114.3\">2</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"165.5\" y=\"-24.7783\">2</text>\n",
"</a>\n", "</a>\n",
"</g>\n", "</g>\n",
"</g>\n", "</g>\n",
"<!-- 0&#45;&gt;2 -->\n", "<!-- 0&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge3\">\n", "<g class=\"edge\" id=\"edge3\">\n",
"<title>0-&gt;2</title>\n", "<title>0-&gt;2</title>\n",
"<path d=\"M74.0718,-118C97.4488,-118 138.2991,-118 164.738,-118\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M74.0817,-28.4783C92.1512,-28.4783 120.0828,-28.4783 140.3174,-28.4783\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"171.7865,-118 164.7866,-121.1501 168.2865,-118 164.7865,-118.0001 164.7865,-118.0001 164.7865,-118.0001 168.2865,-118 164.7865,-114.8501 171.7865,-118 171.7865,-118\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"147.3914,-28.4783 140.3915,-31.6284 143.8914,-28.4784 140.3914,-28.4784 140.3914,-28.4784 140.3914,-28.4784 143.8914,-28.4784 140.3914,-25.3284 147.3914,-28.4783 147.3914,-28.4783\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-136.8\">a &amp; !b &amp; c</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-32.2783\">a &amp; !b</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"115\" y=\"-121.8\">⓿</text>\n",
"</g>\n", "</g>\n",
"<!-- 3 -->\n", "<!-- 3 -->\n",
"<g class=\"node\" id=\"node5\">\n", "<g class=\"node\" id=\"node5\">\n",
"<title>3</title>\n", "<title>3</title>\n",
"<g id=\"a_node5\"><a xlink:title=\"1,0\">\n", "<g id=\"a_node5\"><a xlink:title=\"1,1\">\n",
"<ellipse cx=\"190\" cy=\"-18\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n", "<ellipse cx=\"387\" cy=\"-87.4783\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"190\" y=\"-14.3\">3</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"387\" y=\"-83.7783\">3</text>\n",
"</a>\n", "</a>\n",
"</g>\n", "</g>\n",
"</g>\n", "</g>\n",
"<!-- 0&#45;&gt;3 -->\n", "<!-- 0&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge4\">\n", "<g class=\"edge\" id=\"edge4\">\n",
"<title>0-&gt;3</title>\n", "<title>0-&gt;3</title>\n",
"<path d=\"M68.8649,-104.8649C75.531,-98.3182 83.9446,-90.4447 92,-84 117.0039,-63.9959 147.954,-43.8468 168.3011,-31.1679\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M72.7785,-21.9058C90.7938,-15.2292 120.4175,-5.3387 147,-1.4783 163.2737,.885 167.5984,-.2917 184,-1.4783 259.7293,-6.9571 288.1583,5.1346 351,-37.4783 361.1671,-44.3726 369.4571,-55.1437 375.508,-64.9258\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"174.5137,-27.3235 170.2187,-33.6856 171.5374,-29.1652 168.5612,-31.007 168.5612,-31.007 168.5612,-31.007 171.5374,-29.1652 166.9036,-28.3283 174.5137,-27.3235 174.5137,-27.3235\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"379.1583,-71.1605 372.9031,-66.7112 377.3899,-68.1401 375.6215,-65.1197 375.6215,-65.1197 375.6215,-65.1197 377.3899,-68.1401 378.3399,-63.5281 379.1583,-71.1605 379.1583,-71.1605\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-102.8\">a &amp; b &amp; !c</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"203.5\" y=\"-8.2783\">a &amp; b</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"115\" y=\"-87.8\">⓿</text>\n", "</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge5\">\n",
"<title>1-&gt;1</title>\n",
"<path d=\"M270.1797,-139.8882C269.28,-149.5662 270.8867,-158.4783 275,-158.4783 278.0207,-158.4783 279.6896,-153.6719 280.0067,-147.2856\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"279.8203,-139.8882 283.1457,-146.8066 279.9085,-143.3871 279.9967,-146.886 279.9967,-146.886 279.9967,-146.886 279.9085,-143.3871 276.8477,-146.9654 279.8203,-139.8882 279.8203,-139.8882\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"255\" y=\"-177.2783\">!a &amp; !c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"267\" y=\"-162.2783\">⓿</text>\n",
"</g>\n", "</g>\n",
"<!-- 1&#45;&gt;1 -->\n", "<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge6\">\n", "<g class=\"edge\" id=\"edge6\">\n",
"<title>1-&gt;1</title>\n", "<title>1-&gt;1</title>\n",
"<path d=\"M285.0212,-133.916C282.679,-144.1504 285.6719,-154 294,-154 300.3762,-154 303.625,-148.2263 303.7465,-140.9268\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M267.7325,-139.0742C262.2416,-160.3416 264.6641,-188.4783 275,-188.4783 284.2458,-188.4783 287.1594,-165.9637 283.7408,-145.9915\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"302.9788,-133.916 306.8721,-140.5315 303.3598,-137.3952 303.7408,-140.8744 303.7408,-140.8744 303.7408,-140.8744 303.3598,-137.3952 300.6095,-141.2174 302.9788,-133.916 302.9788,-133.916\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"282.2675,-139.0742 286.8066,-145.2644 282.9966,-142.4974 283.7257,-145.9206 283.7257,-145.9206 283.7257,-145.9206 282.9966,-142.4974 280.6448,-146.5768 282.2675,-139.0742 282.2675,-139.0742\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"289.5\" y=\"-171.8\">1</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"257\" y=\"-206.2783\">!a &amp; c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"278\" y=\"-157.8\">⓿</text>\n", "<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"259\" y=\"-192.2783\">⓿</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"294\" y=\"-157.8\">❶</text>\n", "<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"275\" y=\"-192.2783\">❶</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge7\">\n",
"<title>1-&gt;3</title>\n",
"<path d=\"M279.9602,-139.9118C285.1203,-154.443 294.7683,-174.21 311,-183.4783 326.4383,-192.2935 336.388,-193.6044 351,-183.4783 363.0357,-175.1376 374.471,-137.8639 381.1061,-112.293\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"382.8468,-105.4248 384.1805,-112.9841 381.9869,-108.8175 381.127,-112.2102 381.127,-112.2102 381.127,-112.2102 381.9869,-108.8175 378.0736,-111.4363 382.8468,-105.4248 382.8468,-105.4248\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"313\" y=\"-194.2783\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge8\">\n",
"<title>1-&gt;3</title>\n",
"<path d=\"M291.8393,-129.0964C307.8181,-134.2861 332.1267,-139.2918 351,-130.4783 360.4199,-126.0794 368.2449,-117.8688 374.1666,-109.7918\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"378.3188,-103.7066 376.9753,-111.2642 376.346,-106.5977 374.3733,-109.4887 374.3733,-109.4887 374.3733,-109.4887 376.346,-106.5977 371.7713,-107.7133 378.3188,-103.7066 378.3188,-103.7066\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"315\" y=\"-153.2783\">a &amp; c</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"323\" y=\"-138.2783\">❶</text>\n",
"</g>\n", "</g>\n",
"<!-- 2&#45;&gt;1 -->\n", "<!-- 2&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge7\">\n", "<g class=\"edge\" id=\"edge9\">\n",
"<title>2-&gt;1</title>\n", "<title>2-&gt;1</title>\n",
"<path d=\"M208.1154,-118C224.8642,-118 249.92,-118 268.6521,-118\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M179.3683,-40.3835C198.7033,-56.9816 233.8422,-87.1465 255.7182,-105.9259\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"275.7432,-118 268.7433,-121.1501 272.2432,-118 268.7432,-118.0001 268.7432,-118.0001 268.7432,-118.0001 272.2432,-118 268.7432,-114.8501 275.7432,-118 275.7432,-118\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"261.2444,-110.6698 253.8812,-108.5004 258.5887,-108.39 255.933,-106.1102 255.933,-106.1102 255.933,-106.1102 258.5887,-108.39 257.9848,-103.7201 261.2444,-110.6698 261.2444,-110.6698\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"237.5\" y=\"-136.8\">b</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"202\" y=\"-92.2783\">!a &amp; b</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"234\" y=\"-121.8\">⓿</text>\n",
"</g>\n", "</g>\n",
"<!-- 2&#45;&gt;2 -->\n", "<!-- 2&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge8\">\n", "<g class=\"edge\" id=\"edge10\">\n",
"<title>2-&gt;2</title>\n", "<title>2-&gt;2</title>\n",
"<path d=\"M181.0212,-133.916C178.679,-144.1504 181.6719,-154 190,-154 196.3762,-154 199.625,-148.2263 199.7465,-140.9268\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M156.2674,-44.0198C153.6685,-54.387 156.7461,-64.4783 165.5,-64.4783 172.2022,-64.4783 175.577,-58.563 175.6245,-51.1374\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"198.9788,-133.916 202.8721,-140.5315 199.3598,-137.3952 199.7408,-140.8744 199.7408,-140.8744 199.7408,-140.8744 199.3598,-137.3952 196.6095,-141.2174 198.9788,-133.916 198.9788,-133.916\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"174.7326,-44.0198 178.7286,-50.5738 175.1678,-47.4926 175.603,-50.9654 175.603,-50.9654 175.603,-50.9654 175.1678,-47.4926 172.4775,-51.3571 174.7326,-44.0198 174.7326,-44.0198\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"171.5\" y=\"-172.8\">a &amp; !b</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"147\" y=\"-83.2783\">a &amp; !b</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"182\" y=\"-157.8\">⓿</text>\n", "<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"157.5\" y=\"-68.2783\">⓿</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge11\">\n",
"<title>2-&gt;3</title>\n",
"<path d=\"M183.594,-27.7587C217.9351,-27.0979 294.2023,-29.0444 351,-55.4783 357.8232,-58.6539 364.2983,-63.5517 369.8268,-68.5683\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"375.0175,-73.5652 367.7898,-70.9798 372.496,-71.1378 369.9744,-68.7105 369.9744,-68.7105 369.9744,-68.7105 372.496,-71.1378 372.1591,-66.4411 375.0175,-73.5652 375.0175,-73.5652\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"258\" y=\"-56.2783\">a &amp; b</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"267\" y=\"-41.2783\">⓿</text>\n",
"</g>\n", "</g>\n",
"<!-- 3&#45;&gt;1 -->\n", "<!-- 3&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge9\">\n", "<g class=\"edge\" id=\"edge12\">\n",
"<title>3-&gt;1</title>\n", "<title>3-&gt;1</title>\n",
"<path d=\"M203.1717,-30.6651C221.5355,-48.3226 254.9095,-80.413 275.6867,-100.3911\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M369.6229,-92.9087C350.7682,-98.8008 320.5243,-108.252 299.3164,-114.8795\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"280.9353,-105.4378 273.7061,-102.8566 278.4123,-103.0119 275.8894,-100.586 275.8894,-100.586 275.8894,-100.586 278.4123,-103.0119 278.0727,-98.3153 280.9353,-105.4378 280.9353,-105.4378\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"292.5,-117.0096 298.2418,-111.915 295.8407,-115.9656 299.1814,-114.9216 299.1814,-114.9216 299.1814,-114.9216 295.8407,-115.9656 300.121,-117.9282 292.5,-117.0096 292.5,-117.0096\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"238.5\" y=\"-99.8\">c</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"311\" y=\"-114.2783\">!a &amp; !c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"226\" y=\"-85.8\">⓿</text>\n", "</g>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"242\" y=\"-85.8\">❶</text>\n", "<!-- 3&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge13\">\n",
"<title>3-&gt;1</title>\n",
"<path d=\"M372.8693,-75.8011C366.5789,-71.3346 358.8309,-66.7663 351,-64.4783 333.9357,-59.4925 326.5358,-55.8361 311,-64.4783 297.9795,-71.7213 289.0654,-85.8382 283.3646,-98.3307\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"280.5224,-105.05 280.3484,-97.3758 281.886,-101.8265 283.2495,-98.603 283.2495,-98.603 283.2495,-98.603 281.886,-101.8265 286.1506,-99.8302 280.5224,-105.05 280.5224,-105.05\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"313\" y=\"-83.2783\">!a &amp; c</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"323\" y=\"-68.2783\">❶</text>\n",
"</g>\n", "</g>\n",
"<!-- 3&#45;&gt;3 -->\n", "<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge10\">\n", "<g class=\"edge\" id=\"edge14\">\n",
"<title>3-&gt;3</title>\n", "<title>3-&gt;3</title>\n",
"<path d=\"M181.0212,-33.916C178.679,-44.1504 181.6719,-54 190,-54 196.3762,-54 199.625,-48.2263 199.7465,-40.9268\" fill=\"none\" stroke=\"#000000\"/>\n", "<path d=\"M382.0012,-104.8882C381.0681,-114.5662 382.7344,-123.4783 387,-123.4783 390.1326,-123.4783 391.8633,-118.6719 392.1921,-112.2856\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"198.9788,-33.916 202.8721,-40.5315 199.3598,-37.3952 199.7408,-40.8744 199.7408,-40.8744 199.7408,-40.8744 199.3598,-37.3952 196.6095,-41.2174 198.9788,-33.916 198.9788,-33.916\" stroke=\"#000000\"/>\n", "<polygon fill=\"#000000\" points=\"391.9988,-104.8882 395.3307,-111.8035 392.0903,-108.387 392.1818,-111.8858 392.1818,-111.8858 392.1818,-111.8858 392.0903,-108.387 389.0329,-111.9682 391.9988,-104.8882 391.9988,-104.8882\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"172\" y=\"-71.8\">a &amp; !c</text>\n", "<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"369\" y=\"-142.2783\">a &amp; !c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"174\" y=\"-57.8\">⓿</text>\n", "<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"379\" y=\"-127.2783\">⓿</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"190\" y=\"-57.8\">❶</text>\n", "</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge15\">\n",
"<title>3-&gt;3</title>\n",
"<path d=\"M379.4634,-104.0742C373.769,-125.3416 376.2813,-153.4783 387,-153.4783 396.5883,-153.4783 399.6098,-130.9637 396.0645,-110.9915\" fill=\"none\" stroke=\"#000000\"/>\n",
"<polygon fill=\"#000000\" points=\"394.5366,-104.0742 399.1223,-110.23 395.2915,-107.4918 396.0464,-110.9094 396.0464,-110.9094 396.0464,-110.9094 395.2915,-107.4918 392.9706,-111.5889 394.5366,-104.0742 394.5366,-104.0742\" stroke=\"#000000\"/>\n",
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"371\" y=\"-171.2783\">a &amp; c</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"371\" y=\"-157.2783\">⓿</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"387\" y=\"-157.2783\">❶</text>\n",
"</g>\n", "</g>\n",
"</g>\n", "</g>\n",
"</svg>" "</svg></div>"
], ],
"text/plain": [ "text/plain": [
"<IPython.core.display.SVG object>" "<IPython.core.display.HTML object>"
] ]
}, },
"metadata": {}, "metadata": {},
@ -3563,10 +3648,13 @@
"source": [ "source": [
"# Using +1 in the display options is a convient way to shift the \n", "# Using +1 in the display options is a convient way to shift the \n",
"# set numbers in the output, as an aid in reading the product.\n", "# set numbers in the output, as an aid in reading the product.\n",
"a1 = spot.translate('a W c'); display(a1.show('.t'))\n", "a1 = spot.translate('GF(a <-> Xa)')\n",
"a2 = spot.translate('a U b'); display(a2.show('.t+1'))\n", "print(a1.prop_weak())\n",
"# the product should display pairs of states, unless asked not to (using 1).\n", "a2 = spot.translate('a U b & GFc')\n",
"p = spot.product(a1, a2); display(p.show('.t')); display(p.show('.t1'))" "display_inline(a1.show('.t'), a2.show('.t+1'))\n",
"# the product should display pairs of states, unless asked not to (using '1').\n",
"p = spot.product(a1, a2)\n",
"display_inline(p.show('.t'), p.show('.t1'), per_row=2)"
] ]
}, },
{ {
@ -3578,7 +3666,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 24, "execution_count": 25,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
@ -3643,7 +3731,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fbe1effb4b0> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f16ec52abd0> >"
] ]
}, },
"metadata": {}, "metadata": {},
@ -3667,7 +3755,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 25, "execution_count": 26,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
@ -3743,10 +3831,10 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fbe1efeec90> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f16ec52ae40> >"
] ]
}, },
"execution_count": 25, "execution_count": 26,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
@ -3764,7 +3852,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 26, "execution_count": 27,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
@ -3816,10 +3904,10 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fbe1efee030> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f16ec52ab10> >"
] ]
}, },
"execution_count": 26, "execution_count": 27,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
@ -3837,7 +3925,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 27, "execution_count": 28,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
@ -3905,7 +3993,7 @@
"<IPython.core.display.SVG object>" "<IPython.core.display.SVG object>"
] ]
}, },
"execution_count": 27, "execution_count": 28,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
@ -3923,7 +4011,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 28, "execution_count": 29,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
@ -3980,10 +4068,10 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fbe1effbe10> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f16ec53da50> >"
] ]
}, },
"execution_count": 28, "execution_count": 29,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
@ -4001,7 +4089,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 29, "execution_count": 30,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
@ -4066,7 +4154,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fbe1effb4b0> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f16ec52abd0> >"
] ]
}, },
"metadata": {}, "metadata": {},
@ -4134,7 +4222,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fbe1effb4b0> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f16ec52abd0> >"
] ]
}, },
"metadata": {}, "metadata": {},
@ -4159,7 +4247,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 30, "execution_count": 31,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
@ -4224,10 +4312,10 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fbe1effb4b0> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f16ec52abd0> >"
] ]
}, },
"execution_count": 30, "execution_count": 31,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }

View file

@ -240,7 +240,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f65e4c3f0c0> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0128edca50> >"
] ]
}, },
"execution_count": 4, "execution_count": 4,
@ -352,7 +352,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.twa; proxy of <Swig Object of type 'std::shared_ptr< spot::twa > *' at 0x7f65e4c3f0f0> >" "<spot.twa; proxy of <Swig Object of type 'std::shared_ptr< spot::twa > *' at 0x7f0128e4cd50> >"
] ]
}, },
"execution_count": 5, "execution_count": 5,
@ -462,7 +462,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f65e4c3f0c0> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0128edca50> >"
] ]
}, },
"execution_count": 6, "execution_count": 6,
@ -695,7 +695,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f65e4b5acc0> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0128e4cab0> >"
] ]
}, },
"execution_count": 8, "execution_count": 8,
@ -892,7 +892,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f65e4b5acc0> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0128e4cab0> >"
] ]
}, },
"execution_count": 11, "execution_count": 11,
@ -977,7 +977,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f65e4b7c6f0> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0128e6d8a0> >"
] ]
}, },
"metadata": {}, "metadata": {},
@ -1032,7 +1032,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f65e4b7c2a0> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0128e6d780> >"
] ]
}, },
"metadata": {}, "metadata": {},
@ -1059,80 +1059,74 @@
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n", "<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n", " -->\n",
"<!-- Pages: 1 -->\n", "<!-- Pages: 1 -->\n",
"<svg width=\"227pt\" height=\"188pt\"\n", "<svg width=\"227pt\" height=\"164pt\"\n",
" viewBox=\"0.00 0.00 227.00 188.48\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", " viewBox=\"0.00 0.00 227.00 164.45\" 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 184.4822)\">\n", "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 160.4473)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-184.4822 223,-184.4822 223,4 -4,4\"/>\n", "<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-160.4473 223,-160.4473 223,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"62.5\" y=\"-166.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n", "<text text-anchor=\"start\" x=\"88.5\" y=\"-142.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n",
"<text text-anchor=\"start\" x=\"84.5\" y=\"-166.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n", "<text text-anchor=\"start\" x=\"110.5\" y=\"-142.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"100.5\" y=\"-166.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)&amp;Inf(</text>\n", "<text text-anchor=\"start\" x=\"126.5\" y=\"-142.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)</text>\n",
"<text text-anchor=\"start\" x=\"136.5\" y=\"-166.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n", "<text text-anchor=\"start\" x=\"86.5\" y=\"-128.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Büchi]</text>\n",
"<text text-anchor=\"start\" x=\"152.5\" y=\"-166.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)</text>\n",
"<text text-anchor=\"start\" x=\"65.5\" y=\"-152.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[gen. Büchi 2]</text>\n",
"<!-- I -->\n", "<!-- I -->\n",
"<!-- 0 -->\n", "<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n", "<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n", "<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"65\" cy=\"-32.4822\" rx=\"27\" ry=\"18\"/>\n", "<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"65\" cy=\"-21.4473\" rx=\"27\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"55\" y=\"-28.7822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1,0</text>\n", "<text text-anchor=\"start\" x=\"55\" y=\"-17.7473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1,0</text>\n",
"</g>\n", "</g>\n",
"<!-- I&#45;&gt;0 -->\n", "<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n", "<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n", "<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.2244,-32.4822C4.383,-32.4822 17.3969,-32.4822 30.8528,-32.4822\"/>\n", "<path fill=\"none\" stroke=\"#000000\" d=\"M1.2244,-21.4473C4.383,-21.4473 17.3969,-21.4473 30.8528,-21.4473\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.8798,-32.4822 30.8799,-35.6323 34.3798,-32.4822 30.8798,-32.4823 30.8798,-32.4823 30.8798,-32.4823 34.3798,-32.4822 30.8798,-29.3323 37.8798,-32.4822 37.8798,-32.4822\"/>\n", "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.8798,-21.4473 30.8799,-24.5974 34.3798,-21.4474 30.8798,-21.4474 30.8798,-21.4474 30.8798,-21.4474 34.3798,-21.4474 30.8798,-18.2974 37.8798,-21.4473 37.8798,-21.4473\"/>\n",
"</g>\n", "</g>\n",
"<!-- 0&#45;&gt;0 -->\n", "<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge4\" class=\"edge\">\n", "<g id=\"edge4\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n", "<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M57.1448,-49.8921C55.6785,-59.5701 58.2969,-68.4822 65,-68.4822 69.9226,-68.4822 72.6423,-63.6758 73.1591,-57.2894\"/>\n", "<path fill=\"none\" stroke=\"#000000\" d=\"M57.1448,-38.8572C55.6785,-48.5352 58.2969,-57.4473 65,-57.4473 69.9226,-57.4473 72.6423,-52.641 73.1591,-46.2546\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"72.8552,-49.8921 76.2899,-56.7568 72.9989,-53.3891 73.1426,-56.8862 73.1426,-56.8862 73.1426,-56.8862 72.9989,-53.3891 69.9953,-57.0155 72.8552,-49.8921 72.8552,-49.8921\"/>\n", "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"72.8552,-38.8572 76.2899,-45.722 72.9989,-42.3543 73.1426,-45.8513 73.1426,-45.8513 73.1426,-45.8513 72.9989,-42.3543 69.9953,-45.9806 72.8552,-38.8572 72.8552,-38.8572\"/>\n",
"<text text-anchor=\"start\" x=\"46.5\" y=\"-87.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a &amp; !b</text>\n", "<text text-anchor=\"start\" x=\"46.5\" y=\"-61.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a &amp; !b</text>\n",
"<text text-anchor=\"start\" x=\"57\" y=\"-72.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n", "</g>\n",
"<!-- 1 -->\n", "<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n", "<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n", "<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"192\" cy=\"-32.4822\" rx=\"27\" ry=\"18\"/>\n", "<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"192\" cy=\"-21.4473\" rx=\"27\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"182\" y=\"-28.7822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0,0</text>\n", "<text text-anchor=\"start\" x=\"182\" y=\"-17.7473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0,0</text>\n",
"</g>\n", "</g>\n",
"<!-- 0&#45;&gt;1 -->\n", "<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n", "<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n", "<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M91.6098,-35.9318C97.6458,-36.5769 104.0351,-37.1518 110,-37.4822 126.4193,-38.3915 130.5807,-38.3915 147,-37.4822 150.6349,-37.2808 154.4273,-36.9887 158.2014,-36.6453\"/>\n", "<path fill=\"none\" stroke=\"#000000\" d=\"M92.2447,-21.4473C111.4127,-21.4473 137.2089,-21.4473 157.7667,-21.4473\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"165.3902,-35.9318 158.7356,-39.7578 161.9073,-36.2775 158.4244,-36.6232 158.4244,-36.6232 158.4244,-36.6232 161.9073,-36.2775 158.1133,-33.4886 165.3902,-35.9318 165.3902,-35.9318\"/>\n", "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"164.8004,-21.4473 157.8004,-24.5974 161.3004,-21.4474 157.8004,-21.4474 157.8004,-21.4474 157.8004,-21.4474 161.3004,-21.4474 157.8003,-18.2974 164.8004,-21.4473 164.8004,-21.4473\"/>\n",
"<text text-anchor=\"start\" x=\"110\" y=\"-41.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a &amp; b</text>\n", "<text text-anchor=\"start\" x=\"110\" y=\"-25.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a &amp; b</text>\n",
"</g>\n", "</g>\n",
"<!-- 0&#45;&gt;1 -->\n", "<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge3\" class=\"edge\">\n", "<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n", "<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M81.7946,-18.374C89.8002,-12.5517 99.8356,-6.4737 110,-3.4822 125.7754,1.1607 131.2246,1.1607 147,-3.4822 154.7821,-5.7725 162.4886,-9.8721 169.2664,-14.2811\"/>\n", "<path fill=\"none\" stroke=\"#000000\" d=\"M86.4111,-10.3522C93.6978,-7.1385 102.0208,-4.0628 110,-2.4473 126.1174,.8158 130.8826,.8158 147,-2.4473 152.6104,-3.5832 158.3907,-5.441 163.8613,-7.5611\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"175.2054,-18.374 167.6541,-16.9955 172.3235,-16.3879 169.4416,-14.4017 169.4416,-14.4017 169.4416,-14.4017 172.3235,-16.3879 171.2291,-11.808 175.2054,-18.374 175.2054,-18.374\"/>\n", "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"170.5889,-10.3522 162.9162,-10.5793 167.3561,-9.0109 164.1233,-7.6697 164.1233,-7.6697 164.1233,-7.6697 167.3561,-9.0109 165.3304,-4.7602 170.5889,-10.3522 170.5889,-10.3522\"/>\n",
"<text text-anchor=\"start\" x=\"111.5\" y=\"-22.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a &amp; b</text>\n", "<text text-anchor=\"start\" x=\"111.5\" y=\"-6.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a &amp; b</text>\n",
"<text text-anchor=\"start\" x=\"120.5\" y=\"-7.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n", "</g>\n",
"<!-- 1&#45;&gt;1 -->\n", "<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge5\" class=\"edge\">\n", "<g id=\"edge5\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n", "<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M186.4273,-50.2639C185.4803,-59.7971 187.3379,-68.4822 192,-68.4822 195.4237,-68.4822 197.335,-63.7983 197.7337,-57.5343\"/>\n", "<path fill=\"none\" stroke=\"#000000\" d=\"M186.4273,-39.2291C185.4803,-48.7623 187.3379,-57.4473 192,-57.4473 195.4237,-57.4473 197.335,-52.7634 197.7337,-46.4994\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"197.5727,-50.2639 200.877,-57.1924 197.6502,-53.763 197.7277,-57.2622 197.7277,-57.2622 197.7277,-57.2622 197.6502,-53.763 194.5785,-57.332 197.5727,-50.2639 197.5727,-50.2639\"/>\n", "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"197.5727,-39.2291 200.877,-46.1576 197.6502,-42.7282 197.7277,-46.2273 197.7277,-46.2273 197.7277,-46.2273 197.6502,-42.7282 194.5785,-46.2971 197.5727,-39.2291 197.5727,-39.2291\"/>\n",
"<text text-anchor=\"start\" x=\"186.5\" y=\"-87.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n", "<text text-anchor=\"start\" x=\"186.5\" y=\"-61.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"<text text-anchor=\"start\" x=\"184\" y=\"-72.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n", "</g>\n",
"<!-- 1&#45;&gt;1 -->\n", "<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge6\" class=\"edge\">\n", "<g id=\"edge6\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n", "<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M183.4657,-49.7312C177.4091,-70.9167 180.2539,-98.4822 192,-98.4822 202.5072,-98.4822 205.8918,-76.4247 202.1536,-56.6075\"/>\n", "<path fill=\"none\" stroke=\"#000000\" d=\"M182.9293,-38.5891C177.5936,-56.0323 180.6172,-75.4473 192,-75.4473 201.871,-75.4473 205.4558,-60.8469 202.7543,-45.5934\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"200.5343,-49.7312 205.205,-55.8227 201.3366,-53.138 202.1389,-56.5448 202.1389,-56.5448 202.1389,-56.5448 201.3366,-53.138 199.0727,-57.2669 200.5343,-49.7312 200.5343,-49.7312\"/>\n", "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"201.0707,-38.5891 205.7695,-44.659 201.8887,-41.9922 202.7067,-45.3952 202.7067,-45.3952 202.7067,-45.3952 201.8887,-41.9922 199.644,-46.1315 201.0707,-38.5891 201.0707,-38.5891\"/>\n",
"<text text-anchor=\"start\" x=\"188.5\" y=\"-116.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n", "<text text-anchor=\"start\" x=\"188.5\" y=\"-94.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<text text-anchor=\"start\" x=\"176\" y=\"-102.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n", "<text text-anchor=\"start\" x=\"184\" y=\"-79.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"192\" y=\"-102.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n", "</g>\n",
"</g>\n", "</g>\n",
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f65e4b7c0f0> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0128e6d090> >"
] ]
}, },
"execution_count": 13, "execution_count": 13,
@ -1157,9 +1151,7 @@
" | !a & b\n", " | !a & b\n",
"Cycle:\n", "Cycle:\n",
" 0,0\n", " 0,0\n",
" | !a\t{0}\n", " | a\t{0}"
" 0,0\n",
" | a\t{0,1}"
] ]
}, },
"execution_count": 14, "execution_count": 14,
@ -1198,80 +1190,74 @@
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n", "<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n", " -->\n",
"<!-- Pages: 1 -->\n", "<!-- Pages: 1 -->\n",
"<svg width=\"227pt\" height=\"188pt\"\n", "<svg width=\"227pt\" height=\"164pt\"\n",
" viewBox=\"0.00 0.00 227.00 188.48\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", " viewBox=\"0.00 0.00 227.00 164.45\" 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 184.4822)\">\n", "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 160.4473)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-184.4822 223,-184.4822 223,4 -4,4\"/>\n", "<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-160.4473 223,-160.4473 223,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"62.5\" y=\"-166.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n", "<text text-anchor=\"start\" x=\"88.5\" y=\"-142.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n",
"<text text-anchor=\"start\" x=\"84.5\" y=\"-166.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n", "<text text-anchor=\"start\" x=\"110.5\" y=\"-142.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"100.5\" y=\"-166.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)&amp;Inf(</text>\n", "<text text-anchor=\"start\" x=\"126.5\" y=\"-142.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)</text>\n",
"<text text-anchor=\"start\" x=\"136.5\" y=\"-166.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n", "<text text-anchor=\"start\" x=\"86.5\" y=\"-128.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Büchi]</text>\n",
"<text text-anchor=\"start\" x=\"152.5\" y=\"-166.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)</text>\n",
"<text text-anchor=\"start\" x=\"65.5\" y=\"-152.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[gen. Büchi 2]</text>\n",
"<!-- I -->\n", "<!-- I -->\n",
"<!-- 0 -->\n", "<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n", "<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n", "<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"65\" cy=\"-32.4822\" rx=\"27\" ry=\"18\"/>\n", "<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"65\" cy=\"-21.4473\" rx=\"27\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"55\" y=\"-28.7822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1,0</text>\n", "<text text-anchor=\"start\" x=\"55\" y=\"-17.7473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1,0</text>\n",
"</g>\n", "</g>\n",
"<!-- I&#45;&gt;0 -->\n", "<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n", "<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n", "<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.2244,-32.4822C4.383,-32.4822 17.3969,-32.4822 30.8528,-32.4822\"/>\n", "<path fill=\"none\" stroke=\"#000000\" d=\"M1.2244,-21.4473C4.383,-21.4473 17.3969,-21.4473 30.8528,-21.4473\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.8798,-32.4822 30.8799,-35.6323 34.3798,-32.4822 30.8798,-32.4823 30.8798,-32.4823 30.8798,-32.4823 34.3798,-32.4822 30.8798,-29.3323 37.8798,-32.4822 37.8798,-32.4822\"/>\n", "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.8798,-21.4473 30.8799,-24.5974 34.3798,-21.4474 30.8798,-21.4474 30.8798,-21.4474 30.8798,-21.4474 34.3798,-21.4474 30.8798,-18.2974 37.8798,-21.4473 37.8798,-21.4473\"/>\n",
"</g>\n", "</g>\n",
"<!-- 0&#45;&gt;0 -->\n", "<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge4\" class=\"edge\">\n", "<g id=\"edge4\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n", "<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M57.1448,-49.8921C55.6785,-59.5701 58.2969,-68.4822 65,-68.4822 69.9226,-68.4822 72.6423,-63.6758 73.1591,-57.2894\"/>\n", "<path fill=\"none\" stroke=\"#000000\" d=\"M57.1448,-38.8572C55.6785,-48.5352 58.2969,-57.4473 65,-57.4473 69.9226,-57.4473 72.6423,-52.641 73.1591,-46.2546\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"72.8552,-49.8921 76.2899,-56.7568 72.9989,-53.3891 73.1426,-56.8862 73.1426,-56.8862 73.1426,-56.8862 72.9989,-53.3891 69.9953,-57.0155 72.8552,-49.8921 72.8552,-49.8921\"/>\n", "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"72.8552,-38.8572 76.2899,-45.722 72.9989,-42.3543 73.1426,-45.8513 73.1426,-45.8513 73.1426,-45.8513 72.9989,-42.3543 69.9953,-45.9806 72.8552,-38.8572 72.8552,-38.8572\"/>\n",
"<text text-anchor=\"start\" x=\"46.5\" y=\"-87.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a &amp; !b</text>\n", "<text text-anchor=\"start\" x=\"46.5\" y=\"-61.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a &amp; !b</text>\n",
"<text text-anchor=\"start\" x=\"57\" y=\"-72.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n", "</g>\n",
"<!-- 1 -->\n", "<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n", "<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n", "<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"192\" cy=\"-32.4822\" rx=\"27\" ry=\"18\"/>\n", "<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"192\" cy=\"-21.4473\" rx=\"27\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"182\" y=\"-28.7822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0,0</text>\n", "<text text-anchor=\"start\" x=\"182\" y=\"-17.7473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0,0</text>\n",
"</g>\n", "</g>\n",
"<!-- 0&#45;&gt;1 -->\n", "<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n", "<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n", "<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M91.6098,-35.9318C97.6458,-36.5769 104.0351,-37.1518 110,-37.4822 126.4193,-38.3915 130.5807,-38.3915 147,-37.4822 150.6349,-37.2808 154.4273,-36.9887 158.2014,-36.6453\"/>\n", "<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M92.2447,-21.4473C111.4127,-21.4473 137.2089,-21.4473 157.7667,-21.4473\"/>\n",
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"165.3902,-35.9318 158.7356,-39.7578 161.9567,-36.7751 158.4738,-37.1208 158.4244,-36.6232 158.375,-36.1257 161.8579,-35.78 158.1133,-33.4886 165.3902,-35.9318 165.3902,-35.9318\"/>\n", "<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"164.8004,-21.4473 157.8004,-24.5974 161.3004,-21.9474 157.8004,-21.9474 157.8004,-21.4474 157.8004,-20.9474 161.3004,-20.9474 157.8003,-18.2974 164.8004,-21.4473 164.8004,-21.4473\"/>\n",
"<text text-anchor=\"start\" x=\"110\" y=\"-41.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a &amp; b</text>\n", "<text text-anchor=\"start\" x=\"110\" y=\"-25.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a &amp; b</text>\n",
"</g>\n", "</g>\n",
"<!-- 0&#45;&gt;1 -->\n", "<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge3\" class=\"edge\">\n", "<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n", "<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M81.7946,-18.374C89.8002,-12.5517 99.8356,-6.4737 110,-3.4822 125.7754,1.1607 131.2246,1.1607 147,-3.4822 154.7821,-5.7725 162.4886,-9.8721 169.2664,-14.2811\"/>\n", "<path fill=\"none\" stroke=\"#000000\" d=\"M86.4111,-10.3522C93.6978,-7.1385 102.0208,-4.0628 110,-2.4473 126.1174,.8158 130.8826,.8158 147,-2.4473 152.6104,-3.5832 158.3907,-5.441 163.8613,-7.5611\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"175.2054,-18.374 167.6541,-16.9955 172.3235,-16.3879 169.4416,-14.4017 169.4416,-14.4017 169.4416,-14.4017 172.3235,-16.3879 171.2291,-11.808 175.2054,-18.374 175.2054,-18.374\"/>\n", "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"170.5889,-10.3522 162.9162,-10.5793 167.3561,-9.0109 164.1233,-7.6697 164.1233,-7.6697 164.1233,-7.6697 167.3561,-9.0109 165.3304,-4.7602 170.5889,-10.3522 170.5889,-10.3522\"/>\n",
"<text text-anchor=\"start\" x=\"111.5\" y=\"-22.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a &amp; b</text>\n", "<text text-anchor=\"start\" x=\"111.5\" y=\"-6.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a &amp; b</text>\n",
"<text text-anchor=\"start\" x=\"120.5\" y=\"-7.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n", "</g>\n",
"<!-- 1&#45;&gt;1 -->\n", "<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge5\" class=\"edge\">\n", "<g id=\"edge5\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n", "<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M186.4273,-50.2639C185.4803,-59.7971 187.3379,-68.4822 192,-68.4822 195.4237,-68.4822 197.335,-63.7983 197.7337,-57.5343\"/>\n", "<path fill=\"none\" stroke=\"#000000\" d=\"M186.4273,-39.2291C185.4803,-48.7623 187.3379,-57.4473 192,-57.4473 195.4237,-57.4473 197.335,-52.7634 197.7337,-46.4994\"/>\n",
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"197.5727,-50.2639 200.877,-57.1924 198.1501,-53.752 198.2276,-57.2511 197.7277,-57.2622 197.2279,-57.2733 197.1503,-53.7741 194.5785,-57.332 197.5727,-50.2639 197.5727,-50.2639\"/>\n", "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"197.5727,-39.2291 200.877,-46.1576 197.6502,-42.7282 197.7277,-46.2273 197.7277,-46.2273 197.7277,-46.2273 197.6502,-42.7282 194.5785,-46.2971 197.5727,-39.2291 197.5727,-39.2291\"/>\n",
"<text text-anchor=\"start\" x=\"186.5\" y=\"-87.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n", "<text text-anchor=\"start\" x=\"186.5\" y=\"-61.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"<text text-anchor=\"start\" x=\"184\" y=\"-72.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n", "</g>\n",
"<!-- 1&#45;&gt;1 -->\n", "<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge6\" class=\"edge\">\n", "<g id=\"edge6\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n", "<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M183.4657,-49.7312C177.4091,-70.9167 180.2539,-98.4822 192,-98.4822 202.5072,-98.4822 205.8918,-76.4247 202.1536,-56.6075\"/>\n", "<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M182.9293,-38.5891C177.5936,-56.0323 180.6172,-75.4473 192,-75.4473 201.871,-75.4473 205.4558,-60.8469 202.7543,-45.5934\"/>\n",
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"200.5343,-49.7312 205.205,-55.8227 201.8233,-53.0234 202.6256,-56.4302 202.1389,-56.5448 201.6522,-56.6594 200.8499,-53.2526 199.0727,-57.2669 200.5343,-49.7312 200.5343,-49.7312\"/>\n", "<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"201.0707,-38.5891 205.7695,-44.659 202.3749,-41.8753 203.1929,-45.2784 202.7067,-45.3952 202.2206,-45.5121 201.4025,-42.109 199.644,-46.1315 201.0707,-38.5891 201.0707,-38.5891\"/>\n",
"<text text-anchor=\"start\" x=\"188.5\" y=\"-116.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n", "<text text-anchor=\"start\" x=\"188.5\" y=\"-94.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<text text-anchor=\"start\" x=\"176\" y=\"-102.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n", "<text text-anchor=\"start\" x=\"184\" y=\"-79.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"192\" y=\"-102.2822\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n", "</g>\n",
"</g>\n", "</g>\n",
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f65e4b7c0f0> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0128e6d090> >"
] ]
}, },
"metadata": {}, "metadata": {},
@ -1336,7 +1322,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f65e4b7c6f0> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0128e6d8a0> >"
] ]
}, },
"metadata": {}, "metadata": {},
@ -1391,7 +1377,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f65e4b7c2a0> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0128e6d780> >"
] ]
}, },
"metadata": {}, "metadata": {},
@ -1623,7 +1609,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_product; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_product > *' at 0x7f65e4b7c9f0> >" "<spot.impl.twa_product; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_product > *' at 0x7f0128e6db40> >"
] ]
}, },
"metadata": {}, "metadata": {},
@ -1711,7 +1697,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f65e4b7ca50> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0128e6dba0> >"
] ]
}, },
"metadata": {}, "metadata": {},
@ -1808,7 +1794,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f65e4b7c510> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0128e6d180> >"
] ]
}, },
"metadata": {}, "metadata": {},
@ -1976,7 +1962,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f65e4b7cb70> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0128e6dc30> >"
] ]
}, },
"execution_count": 18, "execution_count": 18,
@ -2144,7 +2130,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f65e4b7cb70> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0128e6dc30> >"
] ]
}, },
"execution_count": 19, "execution_count": 19,
@ -2307,7 +2293,7 @@
"</svg>\n" "</svg>\n"
], ],
"text/plain": [ "text/plain": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f65e4b7cb70> >" "<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0128e6dc30> >"
] ]
}, },
"metadata": {}, "metadata": {},
@ -2771,6 +2757,13 @@
"spot.highlight_languages(aut)\n", "spot.highlight_languages(aut)\n",
"aut.show('.bas')" "aut.show('.bas')"
] ]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
} }
], ],
"metadata": { "metadata": {

File diff suppressed because it is too large Load diff