autfilt: Better display of cluster when universal edge loops in it

Fixes #208

* NEWS: Informations about the modifications
* spot/twaalgos/dot.cc (print): Gestion of cluster for
universal transitions
* tests/core/alternating.test: tests added
* tests/core/neverclaimread.test: tests changed for
new dot format
* tests/core/readsave.test: tests changed
* tests/core/sccdot.test: tests changed
* tests/python/_altscc.ipynb: tests changed
* tests/python/decompose.ipynb: tests changed
This commit is contained in:
Arthur Remaud 2017-02-04 17:16:09 +01:00 committed by Arthur Remaud
parent 34859568cd
commit f7bbfd2812
8 changed files with 1099 additions and 971 deletions

4
NEWS
View file

@ -41,6 +41,10 @@ New in spot 2.3.0.dev (not yet released)
caused any user-defined CPPFLAGS to be ignored while building
Spot.
- The display of clusters with universal edges was confused, because the
intermediate node was not in the cluster even if one of the target was
in the same one.
New in spot 2.3 (2017-01-19)
Build:

View file

@ -369,7 +369,8 @@ namespace spot
std::set<std::pair<int, int>> done;
void
print_dst(int dst, const char* style = nullptr, int color_num = -1)
print_dst(int dst, const char* style = nullptr, int scc_num = -1,
int color_num = -1)
{
std::ostringstream tmp_dst;
tmp_dst << dst;
@ -584,9 +585,14 @@ namespace spot
}
void
process_link(const twa_graph::edge_storage_t& t, int number)
process_link(const twa_graph::edge_storage_t& t, int number,
int scc_num = -1)
{
os_ << " " << t.src << " -> " << (int)t.dst;
if (scc_num >= 0)
{
os_ << '.' << scc_num;
}
if (aut_->is_univ_dest(t.dst) && highlight_edges_
&& !opt_shared_univ_dest_)
{
@ -659,9 +665,9 @@ namespace spot
if (aut_->is_univ_dest(t.dst))
{
if (color_num >= 0)
print_dst(t.dst, highlight.c_str(), color_num);
print_dst(t.dst, highlight.c_str(), scc_num, color_num);
else
print_dst(t.dst, highlight.c_str());
print_dst(t.dst, highlight.c_str(), scc_num);
}
}
@ -764,7 +770,29 @@ namespace spot
os_ << " label=\"\"\n";
}
for (auto s: si->states_of(i))
process_state(s);
{
process_state(s);
int trans_num = 0;
for (auto& t : aut_->out(s))
{
if (aut_->is_univ_dest(t.dst))
{
bool to_write = false;
for (unsigned d: aut_->univ_dests(t.dst))
{
to_write = si->scc_of(d) == si->scc_of(s);
if (to_write)
break;
}
if (to_write)
process_link(t, trans_num++, i);
else
process_link(t, trans_num++);
}
else
process_link(t, trans_num++);
}
}
os_ << " }\n";
}
}
@ -772,10 +800,12 @@ namespace spot
for (unsigned n = 0; n < ns; ++n)
{
if (!si || !si->reachable_state(n))
process_state(n);
int trans_num = 0;
for (auto& t: aut_->out(n))
process_link(t, trans_num++);
{
process_state(n);
int trans_num = 0;
for (auto& t: aut_->out(n))
process_link(t, trans_num++);
}
}
end();
}

View file

@ -69,37 +69,49 @@ digraph G {
color=green
label=""
2 [label="G(a)"]
2 -> 2 [label="a"]
}
subgraph cluster_1 {
color=red
label=""
1 [label="FG(a)\n⓿"]
1 -> 2 [label="a"]
1 -> 1 [label="1"]
}
subgraph cluster_2 {
color=green
label=""
6 [label="t"]
6 -> 6 [label="1"]
}
subgraph cluster_3 {
color=red
label=""
4 [label="F(b)\n⓿"]
4 -> 6 [label="b"]
4 -> 4 [label="!b"]
}
subgraph cluster_4 {
color=green
label=""
3 [label="GF(b)"]
3 -> 3 [label="b"]
3 -> -8.4 [label="!b", style=bold, color="#FAA43A", arrowhead=onormal]
-8.4 [label=<>,shape=point]
-8.4 -> 3 [style=bold, color="#FAA43A"]
-8.4 -> 4 [style=bold, color="#FAA43A"]
}
subgraph cluster_5 {
color=red
label=""
5 [label="((a) U (b))\n⓿"]
5 -> 6 [label="b"]
5 -> 5 [label="a & !b"]
}
subgraph cluster_6 {
color=black
label=""
0 [label="((((a) U (b)) && GF(b)) && FG(a))"]
}
0 -> -1 [label="b", arrowhead=onormal]
-1 [label=<>,shape=point]
-1 -> 1
@ -109,19 +121,7 @@ digraph G {
-4 -> 1 [style=bold, color="#F15854"]
-4 -> 3 [style=bold, color="#F15854"]
-4 -> 5 [style=bold, color="#F15854"]
1 -> 2 [label="a"]
1 -> 1 [label="1"]
2 -> 2 [label="a"]
3 -> 3 [label="b"]
3 -> -8 [label="!b", style=bold, color="#FAA43A", arrowhead=onormal]
-8 [label=<>,shape=point]
-8 -> 3 [style=bold, color="#FAA43A"]
-8 -> 4 [style=bold, color="#FAA43A"]
4 -> 6 [label="b"]
4 -> 4 [label="!b"]
5 -> 6 [label="b"]
5 -> 5 [label="a & !b"]
6 -> 6 [label="1"]
}
}
EOF
@ -353,7 +353,7 @@ State: 0
EOF
diff out5 expect
# Test if split option is correct
# Test if split option with color is correct
cat >ex6<<EOF
HOA: v1.1
States: 2
@ -373,6 +373,7 @@ EOF
run 0 autfilt --dot='baryf(Lato)' ex6 > ex6.dot
style='arrowhead=onormal'
cat >expect6.dot<<EOF
digraph G {
rankdir=LR
@ -389,11 +390,11 @@ digraph G {
-1 -> 1
0 [label=<0>]
0 -> 0 [label=<!a &amp; !c>]
0 -> -1.1 [label=<a &amp; b &amp; !c>, style=bold, color="#F17CB0", arrowhead=onormal]
0 -> -1.1 [label=<a &amp; b &amp; !c>, style=bold, color="#F17CB0", $style]
-1.1 [label=<>,shape=point]
-1.1 -> 0 [style=bold, color="#F17CB0"]
-1.1 -> 1 [style=bold, color="#F17CB0"]
0 -> -1.2 [label=<a &amp; !c>, style=bold, color="#FAA43A", arrowhead=onormal]
0 -> -1.2 [label=<a &amp; !c>, style=bold, color="#FAA43A", $style]
-1.2 [label=<>,shape=point]
-1.2 -> 0 [style=bold, color="#FAA43A"]
-1.2 -> 1 [style=bold, color="#FAA43A"]
@ -690,6 +691,79 @@ EOF
diff ex10.dot expect10.dot
cat >ex11 <<EOF
HOA: v1
tool: "LTL3HOA"
name: "SLAA for G((b & Fa) | (!b & G!a))"
States: 4
AP: 2 "b" "a"
Start: 0
Acceptance: 1 Fin(0)
--BODY--
State: 0 "G((b & Fa) | (!b & G!a))"
[(0 & 1)] 0
[(0 & !1)] 0&1
[(!0 & !1)] 0&2
State: 1 "Fa"
[(1)] 3
[(!1)] 1 {1}
State: 2 "G!a"
[(!1)] 2
State: 3 "t"
[t] 3
--END--
EOF
run 2 autfilt --dot='sbarf(Lato)' ex11 > ex11.dot
cat >expect11.dot <<EOF
digraph G {
rankdir=LR
label=<Fin(<font color="#5DA5DA">⓿</font>)>
labelloc="t"
fontname="Lato"
node [fontname="Lato"]
edge [fontname="Lato"]
I [label="", style=invis, width=0]
I -> 0
subgraph cluster_0 {
color=green
label=""
3 [label="t"]
3 -> 3 [label=<1>]
}
subgraph cluster_1 {
color=green
label=""
1 [label="Fa"]
1 -> 3 [label=<a>]
1 -> 1 [label=<!a>]
}
subgraph cluster_2 {
color=green
label=""
2 [label="G!a"]
2 -> 2 [label=<!a>]
}
subgraph cluster_3 {
color=green
label=""
0 [label="G((b & Fa) | (!b & G!a))"]
0 -> 0 [label=<a &amp; b>]
0 -> -1.3 [label=<!a &amp; b>, arrowhead=onormal]
-1.3 [label=<>,shape=point]
-1.3 -> 0
-1.3 -> 1
0 -> -4.3 [label=<!a &amp; !b>, arrowhead=onormal]
-4.3 [label=<>,shape=point]
-4.3 -> 0
-4.3 -> 2
}
}
EOF
diff ex11.dot expect11.dot
# Detect cases where alternation-removal cannot work.
cat >in <<EOF
HOA: v1

View file

@ -336,15 +336,15 @@ digraph G {
color=green
label=""
1 [label="1", peripheries=2]
1 -> 1 [label="1"]
}
subgraph cluster_1 {
color=red
label=""
0 [label="0"]
}
0 -> 1 [label="b"]
0 -> 0 [label="0"]
1 -> 1 [label="1"]
}
}
EOF
diff stdout expected

View file

@ -327,21 +327,21 @@ digraph G {
subgraph cluster_0 {
color=green
1 [label="s1", peripheries=2]
1 -> 1 [label="a"]
}
subgraph cluster_1 {
color=green
0 [label="s0", peripheries=2]
0 -> 0 [label="b"]
}
subgraph cluster_2 {
color=black
3 [label="s3"]
}
0 -> 0 [label="b"]
1 -> 1 [label="a"]
2 [label="s2"]
2 -> 0 [label="b"]
3 -> 1 [label="a"]
3 -> 0 [label="b"]
}
2 [label="s2"]
2 -> 0 [label="b"]
}
EOF

View file

@ -83,67 +83,67 @@ digraph G {
color=grey
label=""
5 [label="5"]
5 -> 6 [label="1"]
6 [label="6"]
6 -> 5 [label="1"]
}
subgraph cluster_1 {
color=grey
label=""
0 [label="0"]
0 -> 0 [label="a & b\n{0,1,2}"]
0 -> 0 [label="!a & !b\n{2}"]
0 -> 5 [label="a\n{2}"]
}
subgraph cluster_2 {
color=green
label=""
9 [label="9"]
9 -> 9 [label="!a & b\n{0,2}"]
9 -> 10 [label="a & b\n{0,1}"]
10 [label="10"]
10 -> 9 [label="!a & b\n{0,1}"]
10 -> 10 [label="a & b\n{0,2}"]
}
subgraph cluster_3 {
color=green
label=""
8 [label="8"]
8 -> 8 [label="!a & b\n{0,2}"]
8 -> 8 [label="a & b\n{0,1}"]
8 -> 9 [label="1"]
}
subgraph cluster_4 {
color=green
label=""
7 [label="7"]
7 -> 7 [label="!a & b\n{0,1}"]
7 -> 7 [label="a & b\n{0,2}"]
7 -> 8 [label="1"]
}
subgraph cluster_5 {
color=black
label=""
2 [label="2"]
2 -> 0 [label="a"]
2 -> 7 [label="b"]
}
subgraph cluster_6 {
color=red
label=""
4 [label="4"]
4 -> 4 [label="!b\n{1,2}"]
4 -> 2 [label="b"]
}
subgraph cluster_7 {
color=green
label=""
1 [label="1"]
3 [label="3"]
}
0 -> 0 [label="a & b\n{0,1,2}"]
0 -> 0 [label="!a & !b\n{2}"]
0 -> 5 [label="a\n{2}"]
1 -> 4 [label="b"]
1 -> 3 [label="a & !b"]
2 -> 0 [label="a"]
2 -> 7 [label="b"]
3 [label="3"]
3 -> 1 [label="a & b\n{0,1}"]
4 -> 4 [label="!b\n{1,2}"]
4 -> 2 [label="b"]
5 -> 6 [label="1"]
6 -> 5 [label="1"]
7 -> 7 [label="!a & b\n{0,1}"]
7 -> 7 [label="a & b\n{0,2}"]
7 -> 8 [label="1"]
8 -> 8 [label="!a & b\n{0,2}"]
8 -> 8 [label="a & b\n{0,1}"]
8 -> 9 [label="1"]
9 -> 9 [label="!a & b\n{0,2}"]
9 -> 10 [label="a & b\n{0,1}"]
10 -> 9 [label="!a & b\n{0,1}"]
10 -> 10 [label="a & b\n{0,2}"]
}
}
EOF

View file

@ -15,7 +15,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.2+"
"version": "3.5.3"
},
"name": ""
},
@ -122,19 +122,19 @@
"<polygon fill=\"black\" stroke=\"black\" points=\"161.511,-30.9167 154.101,-32.9203 158.055,-30.3633 154.599,-29.8099 154.599,-29.8099 154.599,-29.8099 158.055,-30.3633 155.097,-26.6995 161.511,-30.9167 161.511,-30.9167\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge4\" class=\"edge\"><title>0&#45;&gt;0</title>\n",
"<g id=\"edge5\" class=\"edge\"><title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M90.2208,-73.0373C88.9189,-82.8579 91.0453,-92 96.6,-92 100.766,-92 103.004,-86.8576 103.313,-80.1433\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"102.979,-73.0373 106.454,-79.8818 103.143,-76.5335 103.308,-80.0296 103.308,-80.0296 103.308,-80.0296 103.143,-76.5335 100.161,-80.1774 102.979,-73.0373 102.979,-73.0373\"/>\n",
"<text text-anchor=\"start\" x=\"93.1\" y=\"-95.8\" font-family=\"Lato\" font-size=\"14.00\">a</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge5\" class=\"edge\"><title>0&#45;&gt;1</title>\n",
"<g id=\"edge6\" class=\"edge\"><title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M114.383,-51.4416C126.191,-48.2346 142.151,-43.8996 155.206,-40.3538\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"162.115,-38.4773 156.186,-43.352 158.738,-39.3947 155.36,-40.3121 155.36,-40.3121 155.36,-40.3121 158.738,-39.3947 154.534,-37.2723 162.115,-38.4773 162.115,-38.4773\"/>\n",
"<text text-anchor=\"start\" x=\"132.6\" y=\"-50.8\" font-family=\"Lato\" font-size=\"14.00\">!a</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge6\" class=\"edge\"><title>1&#45;&gt;1</title>\n",
"<g id=\"edge4\" class=\"edge\"><title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M172.569,-50.6641C171.006,-60.625 173.35,-70 179.6,-70 184.288,-70 186.778,-64.7266 187.071,-57.8876\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"186.631,-50.6641 190.201,-57.4598 186.844,-54.1576 187.056,-57.6511 187.056,-57.6511 187.056,-57.6511 186.844,-54.1576 183.912,-57.8425 186.631,-50.6641 186.631,-50.6641\"/>\n",
"<text text-anchor=\"start\" x=\"175.1\" y=\"-88.8\" font-family=\"Lato\" font-size=\"14.00\">b</text>\n",
@ -144,7 +144,7 @@
"</svg>\n"
],
"text": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7620378330> >"
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faa50350420> >"
]
}
],
@ -189,68 +189,73 @@
"<!-- Generated by graphviz version 2.38.0 (20140413.2041)\n",
" -->\n",
"<!-- Title: G Pages: 1 -->\n",
"<svg width=\"154pt\" height=\"192pt\"\n",
" viewBox=\"0.00 0.00 153.60 192.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 188)\">\n",
"<svg width=\"244pt\" height=\"210pt\"\n",
" viewBox=\"0.00 0.00 243.90 210.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 206)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-188 149.6,-188 149.6,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"50.3\" y=\"-169.8\" font-family=\"Lato\" font-size=\"14.00\">Fin(</text>\n",
"<text text-anchor=\"start\" x=\"75.3\" y=\"-169.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#5da5da\">\u24ff</text>\n",
"<text text-anchor=\"start\" x=\"91.3\" y=\"-169.8\" font-family=\"Lato\" font-size=\"14.00\">)</text>\n",
"<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-206 239.895,-206 239.895,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"95.4476\" y=\"-187.8\" font-family=\"Lato\" font-size=\"14.00\">Fin(</text>\n",
"<text text-anchor=\"start\" x=\"120.448\" y=\"-187.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#5da5da\">\u24ff</text>\n",
"<text text-anchor=\"start\" x=\"136.448\" y=\"-187.8\" font-family=\"Lato\" font-size=\"14.00\">)</text>\n",
"<g id=\"clust1\" class=\"cluster\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" stroke=\"green\" points=\"85.6,-8 85.6,-93 137.6,-93 137.6,-8 85.6,-8\"/>\n",
"<polygon fill=\"none\" stroke=\"green\" points=\"70.6,-8 70.6,-93 122.6,-93 122.6,-8 70.6,-8\"/>\n",
"</g>\n",
"<g id=\"clust2\" class=\"cluster\"><title>cluster_1</title>\n",
"<polygon fill=\"none\" stroke=\"red\" points=\"85.6,-101 85.6,-153 137.6,-153 137.6,-101 85.6,-101\"/>\n",
"<polygon fill=\"none\" stroke=\"red\" points=\"70.6,-101 70.6,-171 227.895,-171 227.895,-101 70.6,-101\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- &#45;1 -->\n",
"<g id=\"node2\" class=\"node\"><title>&#45;1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"39.8\" cy=\"-82\" rx=\"1.8\" ry=\"1.8\"/>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"39.8\" cy=\"-90\" rx=\"1.8\" ry=\"1.8\"/>\n",
"</g>\n",
"<!-- I&#45;&gt;&#45;1 -->\n",
"<g id=\"edge1\" class=\"edge\"><title>I&#45;&gt;&#45;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.10844,-82C2.6468,-82 20.196,-82 30.7973,-82\"/>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"30.9213,-84.4501 37.9213,-82 30.9212,-79.5501 30.9213,-84.4501\"/>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.10844,-90C2.6468,-90 20.196,-90 30.7973,-90\"/>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"30.9213,-92.4501 37.9213,-90 30.9212,-87.5501 30.9213,-92.4501\"/>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g id=\"node3\" class=\"node\"><title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"111.6\" cy=\"-127\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"111.6\" y=\"-123.3\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"96.6\" cy=\"-130\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"96.6\" y=\"-126.3\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</g>\n",
"<!-- &#45;1&#45;&gt;0 -->\n",
"<g id=\"edge2\" class=\"edge\"><title>&#45;1&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M41.2389,-83.4339C42.8255,-88.3703 48.7502,-104.807 59.6,-113 67.3475,-118.85 77.3952,-122.256 86.5214,-124.239\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"93.5814,-125.543 86.1255,-127.369 90.1396,-124.907 86.6979,-124.272 86.6979,-124.272 86.6979,-124.272 90.1396,-124.907 87.2703,-121.174 93.5814,-125.543 93.5814,-125.543\"/>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M41.7512,-90.6943C45.7938,-93.6451 61.9639,-105.448 75.5392,-115.357\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"81.541,-119.738 74.0298,-118.155 78.714,-117.674 75.887,-115.611 75.887,-115.611 75.887,-115.611 78.714,-117.674 77.7442,-113.067 81.541,-119.738 81.541,-119.738\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node4\" class=\"node\"><title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"111.6\" cy=\"-34\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"111.6\" y=\"-30.3\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"96.6\" cy=\"-34\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"96.6\" y=\"-30.3\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- &#45;1&#45;&gt;1 -->\n",
"<g id=\"edge3\" class=\"edge\"><title>&#45;1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M41.5839,-81.4609C46.3474,-78.1852 71.8242,-60.6653 90.4426,-47.8618\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"96.4539,-43.728 92.471,-50.2899 93.57,-45.7112 90.6861,-47.6944 90.6861,-47.6944 90.6861,-47.6944 93.57,-45.7112 88.9012,-45.0989 96.4539,-43.728 96.4539,-43.728\"/>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M41.7512,-89.028C46.0802,-84.6041 64.3165,-65.9685 78.3809,-51.5962\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"83.3402,-46.5283 80.6957,-53.7345 80.8923,-49.0298 78.4443,-51.5314 78.4443,-51.5314 78.4443,-51.5314 80.8923,-49.0298 76.1929,-49.3282 83.3402,-46.5283 83.3402,-46.5283\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;&#45;1 -->\n",
"<g id=\"edge4\" class=\"edge\"><title>0&#45;&gt;&#45;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M98.8419,-113.981C94.4601,-108.857 89.5866,-102.816 85.6,-97 80.4256,-89.4515 83.4876,-83.6411 75.6,-79 67.3683,-74.1565 56.0932,-76.4083 48.6353,-78.8582\"/>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"47.3759,-76.7198 41.7465,-81.5482 49.1582,-81.2841 47.3759,-76.7198\"/>\n",
"<text text-anchor=\"start\" x=\"64.1\" y=\"-97.8\" font-family=\"Lato\" font-size=\"14.00\">a</text>\n",
"<text text-anchor=\"start\" x=\"59.6\" y=\"-82.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#5da5da\">\u24ff</text>\n",
"<!-- &#45;1.1 -->\n",
"<g id=\"node5\" class=\"node\"><title>&#45;1.1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"193.248\" cy=\"-136\" rx=\"26.7961\" ry=\"26.7961\"/>\n",
"<text text-anchor=\"middle\" x=\"193.248\" y=\"-132.3\" font-family=\"Lato\" font-size=\"14.00\">&#45;1.1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;&#45;1.1 -->\n",
"<g id=\"edge5\" class=\"edge\"><title>0&#45;&gt;&#45;1.1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M114.96,-131.1C127.343,-131.885 144.375,-132.965 159.3,-133.911\"/>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"159.287,-136.365 166.428,-134.363 159.597,-131.475 159.287,-136.365\"/>\n",
"<text text-anchor=\"start\" x=\"137.1\" y=\"-151.8\" font-family=\"Lato\" font-size=\"14.00\">a</text>\n",
"<text text-anchor=\"start\" x=\"132.6\" y=\"-136.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#5da5da\">\u24ff</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge5\" class=\"edge\"><title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M103.932,-50.2903C102.083,-60.3892 104.639,-70 111.6,-70 116.821,-70 119.564,-64.5939 119.829,-57.6304\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"119.268,-50.2903 122.942,-57.0299 119.535,-53.7801 119.801,-57.2699 119.801,-57.2699 119.801,-57.2699 119.535,-53.7801 116.66,-57.5099 119.268,-50.2903 119.268,-50.2903\"/>\n",
"<text text-anchor=\"start\" x=\"107.1\" y=\"-73.8\" font-family=\"Lato\" font-size=\"14.00\">b</text>\n",
"<g id=\"edge4\" class=\"edge\"><title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M90.2208,-51.0373C88.9189,-60.8579 91.0453,-70 96.6,-70 100.766,-70 103.004,-64.8576 103.313,-58.1433\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"102.979,-51.0373 106.454,-57.8818 103.143,-54.5335 103.308,-58.0296 103.308,-58.0296 103.308,-58.0296 103.143,-54.5335 100.161,-58.1774 102.979,-51.0373 102.979,-51.0373\"/>\n",
"<text text-anchor=\"start\" x=\"92.1\" y=\"-73.8\" font-family=\"Lato\" font-size=\"14.00\">b</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7620378870> >"
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faa50350810> >"
]
}
],
@ -276,12 +281,14 @@
"''')"
],
"language": "python",
"metadata": {},
"metadata": {
"scrolled": true
},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 4,
"prompt_number": 5,
"svg": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
@ -289,75 +296,80 @@
"<!-- Generated by graphviz version 2.38.0 (20140413.2041)\n",
" -->\n",
"<!-- Title: G Pages: 1 -->\n",
"<svg width=\"181pt\" height=\"170pt\"\n",
" viewBox=\"0.00 0.00 181.00 169.80\" 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 165.8)\">\n",
"<svg width=\"320pt\" height=\"147pt\"\n",
" viewBox=\"0.00 0.00 319.90 147.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 143)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-165.8 177,-165.8 177,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"64\" y=\"-147.6\" font-family=\"Lato\" font-size=\"14.00\">Fin(</text>\n",
"<text text-anchor=\"start\" x=\"89\" y=\"-147.6\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#5da5da\">\u24ff</text>\n",
"<text text-anchor=\"start\" x=\"105\" y=\"-147.6\" font-family=\"Lato\" font-size=\"14.00\">)</text>\n",
"<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-143 315.895,-143 315.895,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"133.448\" y=\"-124.8\" font-family=\"Lato\" font-size=\"14.00\">Fin(</text>\n",
"<text text-anchor=\"start\" x=\"158.448\" y=\"-124.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#5da5da\">\u24ff</text>\n",
"<text text-anchor=\"start\" x=\"174.448\" y=\"-124.8\" font-family=\"Lato\" font-size=\"14.00\">)</text>\n",
"<g id=\"clust1\" class=\"cluster\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" stroke=\"green\" points=\"30,-8 30,-108 165,-108 165,-8 30,-8\"/>\n",
"<polygon fill=\"none\" stroke=\"green\" points=\"70.6,-8 70.6,-108 303.895,-108 303.895,-8 70.6,-8\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- &#45;1 -->\n",
"<g id=\"node2\" class=\"node\"><title>&#45;1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-137\" rx=\"1.8\" ry=\"1.8\"/>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"39.8\" cy=\"-5\" rx=\"1.8\" ry=\"1.8\"/>\n",
"</g>\n",
"<!-- I&#45;&gt;&#45;1 -->\n",
"<g id=\"edge1\" class=\"edge\"><title>I&#45;&gt;&#45;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.15491,-137C3.52733,-137 32.5548,-137 46.9758,-137\"/>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"47.1189,-139.45 54.1189,-137 47.1188,-134.55 47.1189,-139.45\"/>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.10844,-5C2.6468,-5 20.196,-5 30.7973,-5\"/>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"30.9213,-7.4501 37.9213,-5 30.9212,-2.5501 30.9213,-7.4501\"/>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g id=\"node3\" class=\"node\"><title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-34\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-30.3\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"96.6\" cy=\"-34\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"96.6\" y=\"-30.3\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</g>\n",
"<!-- &#45;1&#45;&gt;0 -->\n",
"<g id=\"edge2\" class=\"edge\"><title>&#45;1&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M56,-135.01C56,-109.75 56,-84.4902 56,-59.2301\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"56,-52.1055 59.1501,-59.1054 56,-55.6055 56.0001,-59.1055 56.0001,-59.1055 56.0001,-59.1055 56,-55.6055 52.8501,-59.1055 56,-52.1055 56,-52.1055\"/>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M41.7512,-5.50335C45.6352,-7.55878 60.7141,-15.5385 73.9308,-22.5327\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"80.2121,-25.8568 72.5516,-25.3667 77.1186,-24.2197 74.025,-22.5826 74.025,-22.5826 74.025,-22.5826 77.1186,-24.2197 75.4985,-19.7984 80.2121,-25.8568 80.2121,-25.8568\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node4\" class=\"node\"><title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"139\" cy=\"-82\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"139\" y=\"-78.3\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"179.6\" cy=\"-34\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"179.6\" y=\"-30.3\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- &#45;1&#45;&gt;1 -->\n",
"<g id=\"edge3\" class=\"edge\"><title>&#45;1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M58.1975,-136.505C63.6262,-134.235 86.3798,-124.441 103,-113 108.892,-108.944 114.875,-104.007 120.188,-99.2761\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"125.655,-94.275 122.616,-101.324 123.072,-96.6375 120.49,-99.0001 120.49,-99.0001 120.49,-99.0001 123.072,-96.6375 118.364,-96.676 125.655,-94.275 125.655,-94.275\"/>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M41.858,-4.88357C48.5396,-4.17795 85.5371,-0.709466 114.6,-7 129.318,-10.1857 144.906,-16.6879 157.013,-22.5131\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"163.353,-25.6543 155.682,-25.3692 160.217,-24.1005 157.081,-22.5466 157.081,-22.5466 157.081,-22.5466 160.217,-24.1005 158.479,-19.7241 163.353,-25.6543 163.353,-25.6543\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge4\" class=\"edge\"><title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M49.6208,-51.0373C48.3189,-60.8579 50.4453,-70 56,-70 60.166,-70 62.4036,-64.8576 62.7128,-58.1433\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"62.3792,-51.0373 65.8541,-57.8818 62.5434,-54.5335 62.7076,-58.0296 62.7076,-58.0296 62.7076,-58.0296 62.5434,-54.5335 59.561,-58.1774 62.3792,-51.0373 62.3792,-51.0373\"/>\n",
"<text text-anchor=\"start\" x=\"52.5\" y=\"-88.8\" font-family=\"Lato\" font-size=\"14.00\">a</text>\n",
"<text text-anchor=\"start\" x=\"48\" y=\"-73.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#5da5da\">\u24ff</text>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M90.2208,-51.0373C88.9189,-60.8579 91.0453,-70 96.6,-70 100.766,-70 103.004,-64.8576 103.313,-58.1433\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"102.979,-51.0373 106.454,-57.8818 103.143,-54.5335 103.308,-58.0296 103.308,-58.0296 103.308,-58.0296 103.143,-54.5335 100.161,-58.1774 102.979,-51.0373 102.979,-51.0373\"/>\n",
"<text text-anchor=\"start\" x=\"93.1\" y=\"-88.8\" font-family=\"Lato\" font-size=\"14.00\">a</text>\n",
"<text text-anchor=\"start\" x=\"88.6\" y=\"-73.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#5da5da\">\u24ff</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge5\" class=\"edge\"><title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M72.6567,-41.0787C81.7089,-45.355 93.2089,-51.105 103,-57 108.128,-60.0874 113.476,-63.6923 118.403,-67.188\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"124.372,-71.5104 116.855,-69.9558 121.537,-69.4575 118.702,-67.4046 118.702,-67.4046 118.702,-67.4046 121.537,-69.4575 120.55,-64.8533 124.372,-71.5104 124.372,-71.5104\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-60.8\" font-family=\"Lato\" font-size=\"14.00\">!a</text>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M114.778,-34C126.269,-34 141.559,-34 154.293,-34\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"161.447,-34 154.447,-37.1501 157.947,-34 154.447,-34.0001 154.447,-34.0001 154.447,-34.0001 157.947,-34 154.447,-30.8501 161.447,-34 161.447,-34\"/>\n",
"<text text-anchor=\"start\" x=\"132.6\" y=\"-37.8\" font-family=\"Lato\" font-size=\"14.00\">!a</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;&#45;1 -->\n",
"<g id=\"edge6\" class=\"edge\"><title>1&#45;&gt;&#45;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M120.788,-83.8666C111.67,-85.4769 100.608,-88.4653 92,-94 84.4423,-98.8591 69.2944,-119.499 61.6458,-130.319\"/>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"59.6115,-128.953 57.6175,-136.096 63.6309,-131.756 59.6115,-128.953\"/>\n",
"<text text-anchor=\"start\" x=\"93\" y=\"-97.8\" font-family=\"Lato\" font-size=\"14.00\">b</text>\n",
"<!-- &#45;1.0 -->\n",
"<g id=\"node5\" class=\"node\"><title>&#45;1.0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"269.248\" cy=\"-43\" rx=\"26.7961\" ry=\"26.7961\"/>\n",
"<text text-anchor=\"middle\" x=\"269.248\" y=\"-39.3\" font-family=\"Lato\" font-size=\"14.00\">&#45;1.0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;&#45;1.0 -->\n",
"<g id=\"edge6\" class=\"edge\"><title>1&#45;&gt;&#45;1.0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M197.916,-35.7781C208.593,-36.8744 222.631,-38.3159 235.356,-39.6225\"/>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"235.447,-42.0947 242.661,-40.3726 235.948,-37.2203 235.447,-42.0947\"/>\n",
"<text text-anchor=\"start\" x=\"215.6\" y=\"-41.8\" font-family=\"Lato\" font-size=\"14.00\">b</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7620378390> >"
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faa50350870> >"
]
}
],
"prompt_number": 4
"prompt_number": 5
},
{
"cell_type": "code",
@ -384,7 +396,7 @@
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 5,
"prompt_number": 6,
"svg": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
@ -392,75 +404,75 @@
"<!-- Generated by graphviz version 2.38.0 (20140413.2041)\n",
" -->\n",
"<!-- Title: G Pages: 1 -->\n",
"<svg width=\"186pt\" height=\"155pt\"\n",
" viewBox=\"0.00 0.00 186.00 154.80\" 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 150.8)\">\n",
"<svg width=\"235pt\" height=\"132pt\"\n",
" viewBox=\"0.00 0.00 234.60 132.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 128)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-150.8 182,-150.8 182,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"66.5\" y=\"-132.6\" font-family=\"Lato\" font-size=\"14.00\">Fin(</text>\n",
"<text text-anchor=\"start\" x=\"91.5\" y=\"-132.6\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#5da5da\">\u24ff</text>\n",
"<text text-anchor=\"start\" x=\"107.5\" y=\"-132.6\" font-family=\"Lato\" font-size=\"14.00\">)</text>\n",
"<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-128 230.6,-128 230.6,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"90.8\" y=\"-109.8\" font-family=\"Lato\" font-size=\"14.00\">Fin(</text>\n",
"<text text-anchor=\"start\" x=\"115.8\" y=\"-109.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#5da5da\">\u24ff</text>\n",
"<text text-anchor=\"start\" x=\"131.8\" y=\"-109.8\" font-family=\"Lato\" font-size=\"14.00\">)</text>\n",
"<g id=\"clust1\" class=\"cluster\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" stroke=\"green\" points=\"30,-30.8 30,-115.8 170,-115.8 170,-30.8 30,-30.8\"/>\n",
"<polygon fill=\"none\" stroke=\"green\" points=\"30,-8 30,-93 218.6,-93 218.6,-8 30,-8\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\"><title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-56.8\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-53.1\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-34\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-30.3\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\"><title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.15491,-56.8C2.79388,-56.8 17.1543,-56.8 30.6317,-56.8\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.9419,-56.8 30.9419,-59.9501 34.4419,-56.8 30.9419,-56.8001 30.9419,-56.8001 30.9419,-56.8001 34.4419,-56.8 30.9418,-53.6501 37.9419,-56.8 37.9419,-56.8\"/>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.15491,-34C2.79388,-34 17.1543,-34 30.6317,-34\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.9419,-34 30.9419,-37.1501 34.4419,-34 30.9419,-34.0001 30.9419,-34.0001 30.9419,-34.0001 34.4419,-34 30.9418,-30.8501 37.9419,-34 37.9419,-34\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge2\" class=\"edge\"><title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M49.6208,-73.8373C48.3189,-83.6579 50.4453,-92.8 56,-92.8 60.166,-92.8 62.4036,-87.6576 62.7128,-80.9433\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"62.3792,-73.8373 65.8541,-80.6818 62.5434,-77.3335 62.7076,-80.8296 62.7076,-80.8296 62.7076,-80.8296 62.5434,-77.3335 59.561,-80.9774 62.3792,-73.8373 62.3792,-73.8373\"/>\n",
"<text text-anchor=\"start\" x=\"52.5\" y=\"-96.6\" font-family=\"Lato\" font-size=\"14.00\">a</text>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M49.6208,-51.0373C48.3189,-60.8579 50.4453,-70 56,-70 60.166,-70 62.4036,-64.8576 62.7128,-58.1433\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"62.3792,-51.0373 65.8541,-57.8818 62.5434,-54.5335 62.7076,-58.0296 62.7076,-58.0296 62.7076,-58.0296 62.5434,-54.5335 59.561,-58.1774 62.3792,-51.0373 62.3792,-51.0373\"/>\n",
"<text text-anchor=\"start\" x=\"52.5\" y=\"-73.8\" font-family=\"Lato\" font-size=\"14.00\">a</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\"><title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"144\" cy=\"-56.8\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"144\" y=\"-53.1\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"144\" cy=\"-34\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"144\" y=\"-30.3\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge3\" class=\"edge\"><title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M74.4034,-56.8C87.1928,-56.8 104.732,-56.8 118.874,-56.8\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"125.916,-56.8 118.916,-59.9501 122.416,-56.8 118.916,-56.8001 118.916,-56.8001 118.916,-56.8001 122.416,-56.8 118.916,-53.6501 125.916,-56.8 125.916,-56.8\"/>\n",
"<text text-anchor=\"start\" x=\"94.5\" y=\"-75.6\" font-family=\"Lato\" font-size=\"14.00\">!a</text>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-60.6\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#5da5da\">\u24ff</text>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M74.4034,-34C87.1928,-34 104.732,-34 118.874,-34\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"125.916,-34 118.916,-37.1501 122.416,-34 118.916,-34.0001 118.916,-34.0001 118.916,-34.0001 122.416,-34 118.916,-30.8501 125.916,-34 125.916,-34\"/>\n",
"<text text-anchor=\"start\" x=\"94.5\" y=\"-52.8\" font-family=\"Lato\" font-size=\"14.00\">!a</text>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-37.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#5da5da\">\u24ff</text>\n",
"</g>\n",
"<!-- &#45;1 -->\n",
"<g id=\"node4\" class=\"node\"><title>&#45;1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-1.8\" rx=\"1.8\" ry=\"1.8\"/>\n",
"<!-- &#45;1.0 -->\n",
"<g id=\"node4\" class=\"node\"><title>&#45;1.0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"208.8\" cy=\"-55\" rx=\"1.8\" ry=\"1.8\"/>\n",
"</g>\n",
"<!-- 1&#45;&gt;&#45;1 -->\n",
"<g id=\"edge4\" class=\"edge\"><title>1&#45;&gt;&#45;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M128.216,-47.3452C109.582,-35.428 78.2908,-15.4162 64.2282,-6.42267\"/>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"65.183,-4.12514 57.9658,-2.41768 62.543,-8.25315 65.183,-4.12514\"/>\n",
"<text text-anchor=\"start\" x=\"95.5\" y=\"-38.6\" font-family=\"Lato\" font-size=\"14.00\">b</text>\n",
"<!-- 1&#45;&gt;&#45;1.0 -->\n",
"<g id=\"edge4\" class=\"edge\"><title>1&#45;&gt;&#45;1.0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M161.97,-31.3847C170.435,-30.8121 180.626,-31.2653 189,-35 195.022,-37.6859 200.027,-43.3116 203.355,-47.9143\"/>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"201.413,-49.4256 207.255,-53.9948 205.538,-46.78 201.413,-49.4256\"/>\n",
"<text text-anchor=\"start\" x=\"180\" y=\"-38.8\" font-family=\"Lato\" font-size=\"14.00\">b</text>\n",
"</g>\n",
"<!-- &#45;1&#45;&gt;0 -->\n",
"<g id=\"edge5\" class=\"edge\"><title>&#45;1&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M56,-3.94844C56,-13.1613 56,-22.3742 56,-31.5871\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"56,-38.6323 52.8501,-31.6322 56,-35.1323 56.0001,-31.6323 56.0001,-31.6323 56.0001,-31.6323 56,-35.1323 59.1501,-31.6323 56,-38.6323 56,-38.6323\"/>\n",
"<!-- &#45;1.0&#45;&gt;0 -->\n",
"<g id=\"edge5\" class=\"edge\"><title>&#45;1.0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M207.029,-55.3291C199.425,-58.5247 137.182,-83.5412 92,-66 84.8621,-63.2288 78.2913,-58.2479 72.8175,-53.0285\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"67.7291,-47.8027 74.8694,-50.6204 70.1708,-50.3103 72.6125,-52.8179 72.6125,-52.8179 72.6125,-52.8179 70.1708,-50.3103 70.3556,-55.0155 67.7291,-47.8027 67.7291,-47.8027\"/>\n",
"</g>\n",
"<!-- &#45;1&#45;&gt;1 -->\n",
"<g id=\"edge6\" class=\"edge\"><title>&#45;1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M58.3605,-2.07433C64.5216,-3.36203 90.2737,-9.23561 108,-20.8 115.043,-25.3947 121.748,-31.6386 127.37,-37.6363\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"132.206,-43.0208 125.185,-39.9183 129.867,-40.4171 127.528,-37.8133 127.528,-37.8133 127.528,-37.8133 129.867,-40.4171 129.872,-35.7083 132.206,-43.0208 132.206,-43.0208\"/>\n",
"<!-- &#45;1.0&#45;&gt;1 -->\n",
"<g id=\"edge6\" class=\"edge\"><title>&#45;1.0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M206.716,-54.9037C202.95,-54.5484 190.109,-53.1643 180,-50 175.648,-48.6378 171.129,-46.8647 166.841,-44.9966\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"160.351,-42.0283 168.027,-42.0751 163.534,-43.484 166.717,-44.9397 166.717,-44.9397 166.717,-44.9397 163.534,-43.484 165.407,-47.8043 160.351,-42.0283 160.351,-42.0283\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f76203783c0> >"
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faa503508a0> >"
]
}
],
"prompt_number": 5
"prompt_number": 6
},
{
"cell_type": "code",
@ -487,7 +499,7 @@
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 6,
"prompt_number": 7,
"svg": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
@ -495,76 +507,76 @@
"<!-- Generated by graphviz version 2.38.0 (20140413.2041)\n",
" -->\n",
"<!-- Title: G Pages: 1 -->\n",
"<svg width=\"186pt\" height=\"170pt\"\n",
" viewBox=\"0.00 0.00 186.00 169.80\" 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 165.8)\">\n",
"<svg width=\"237pt\" height=\"147pt\"\n",
" viewBox=\"0.00 0.00 236.60 147.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 143)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-165.8 182,-165.8 182,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"66.5\" y=\"-147.6\" font-family=\"Lato\" font-size=\"14.00\">Fin(</text>\n",
"<text text-anchor=\"start\" x=\"91.5\" y=\"-147.6\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#5da5da\">\u24ff</text>\n",
"<text text-anchor=\"start\" x=\"107.5\" y=\"-147.6\" font-family=\"Lato\" font-size=\"14.00\">)</text>\n",
"<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-143 232.6,-143 232.6,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"91.8\" y=\"-124.8\" font-family=\"Lato\" font-size=\"14.00\">Fin(</text>\n",
"<text text-anchor=\"start\" x=\"116.8\" y=\"-124.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#5da5da\">\u24ff</text>\n",
"<text text-anchor=\"start\" x=\"132.8\" y=\"-124.8\" font-family=\"Lato\" font-size=\"14.00\">)</text>\n",
"<g id=\"clust1\" class=\"cluster\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" stroke=\"orange\" points=\"30,-30.8 30,-130.8 170,-130.8 170,-30.8 30,-30.8\"/>\n",
"<polygon fill=\"none\" stroke=\"orange\" points=\"30,-8 30,-108 220.6,-108 220.6,-8 30,-8\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\"><title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-56.8\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-53.1\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-34\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-30.3\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\"><title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.15491,-56.8C2.79388,-56.8 17.1543,-56.8 30.6317,-56.8\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.9419,-56.8 30.9419,-59.9501 34.4419,-56.8 30.9419,-56.8001 30.9419,-56.8001 30.9419,-56.8001 34.4419,-56.8 30.9418,-53.6501 37.9419,-56.8 37.9419,-56.8\"/>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.15491,-34C2.79388,-34 17.1543,-34 30.6317,-34\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.9419,-34 30.9419,-37.1501 34.4419,-34 30.9419,-34.0001 30.9419,-34.0001 30.9419,-34.0001 34.4419,-34 30.9418,-30.8501 37.9419,-34 37.9419,-34\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge2\" class=\"edge\"><title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M49.6208,-73.8373C48.3189,-83.6579 50.4453,-92.8 56,-92.8 60.166,-92.8 62.4036,-87.6576 62.7128,-80.9433\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"62.3792,-73.8373 65.8541,-80.6818 62.5434,-77.3335 62.7076,-80.8296 62.7076,-80.8296 62.7076,-80.8296 62.5434,-77.3335 59.561,-80.9774 62.3792,-73.8373 62.3792,-73.8373\"/>\n",
"<text text-anchor=\"start\" x=\"52.5\" y=\"-111.6\" font-family=\"Lato\" font-size=\"14.00\">a</text>\n",
"<text text-anchor=\"start\" x=\"48\" y=\"-96.6\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#5da5da\">\u24ff</text>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M49.6208,-51.0373C48.3189,-60.8579 50.4453,-70 56,-70 60.166,-70 62.4036,-64.8576 62.7128,-58.1433\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"62.3792,-51.0373 65.8541,-57.8818 62.5434,-54.5335 62.7076,-58.0296 62.7076,-58.0296 62.7076,-58.0296 62.5434,-54.5335 59.561,-58.1774 62.3792,-51.0373 62.3792,-51.0373\"/>\n",
"<text text-anchor=\"start\" x=\"52.5\" y=\"-88.8\" font-family=\"Lato\" font-size=\"14.00\">a</text>\n",
"<text text-anchor=\"start\" x=\"48\" y=\"-73.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#5da5da\">\u24ff</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\"><title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"144\" cy=\"-56.8\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"144\" y=\"-53.1\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"139\" cy=\"-34\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"139\" y=\"-30.3\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge3\" class=\"edge\"><title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M74.4034,-56.8C87.1928,-56.8 104.732,-56.8 118.874,-56.8\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"125.916,-56.8 118.916,-59.9501 122.416,-56.8 118.916,-56.8001 118.916,-56.8001 118.916,-56.8001 122.416,-56.8 118.916,-53.6501 125.916,-56.8 125.916,-56.8\"/>\n",
"<text text-anchor=\"start\" x=\"94.5\" y=\"-60.6\" font-family=\"Lato\" font-size=\"14.00\">!a</text>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M74.178,-34C85.6688,-34 100.959,-34 113.693,-34\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"120.847,-34 113.847,-37.1501 117.347,-34 113.847,-34.0001 113.847,-34.0001 113.847,-34.0001 117.347,-34 113.847,-30.8501 120.847,-34 120.847,-34\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-37.8\" font-family=\"Lato\" font-size=\"14.00\">!a</text>\n",
"</g>\n",
"<!-- &#45;1 -->\n",
"<g id=\"node4\" class=\"node\"><title>&#45;1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-1.8\" rx=\"1.8\" ry=\"1.8\"/>\n",
"<!-- &#45;1.0 -->\n",
"<g id=\"node4\" class=\"node\"><title>&#45;1.0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"210.8\" cy=\"-70\" rx=\"1.8\" ry=\"1.8\"/>\n",
"</g>\n",
"<!-- 1&#45;&gt;&#45;1 -->\n",
"<g id=\"edge4\" class=\"edge\"><title>1&#45;&gt;&#45;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M131.685,-43.6003C125.268,-36.7206 116.782,-28.5634 108,-22.8 94.1305,-13.6981 75.6755,-7.29775 65.1938,-4.11103\"/>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"65.7549,-1.72327 58.3508,-2.15071 64.4054,-6.4338 65.7549,-1.72327\"/>\n",
"<text text-anchor=\"start\" x=\"95.5\" y=\"-41.6\" font-family=\"Lato\" font-size=\"14.00\">b</text>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-26.6\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#5da5da\">\u24ff</text>\n",
"<!-- 1&#45;&gt;&#45;1.0 -->\n",
"<g id=\"edge4\" class=\"edge\"><title>1&#45;&gt;&#45;1.0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M156.81,-30.2475C167.377,-28.8262 180.875,-28.8101 191,-35 200.508,-40.8127 205.503,-53.2288 207.894,-61.5983\"/>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"205.553,-62.3452 209.557,-68.5878 210.32,-61.2108 205.553,-62.3452\"/>\n",
"<text text-anchor=\"start\" x=\"178.5\" y=\"-53.8\" font-family=\"Lato\" font-size=\"14.00\">b</text>\n",
"<text text-anchor=\"start\" x=\"175\" y=\"-38.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#5da5da\">\u24ff</text>\n",
"</g>\n",
"<!-- &#45;1&#45;&gt;0 -->\n",
"<g id=\"edge5\" class=\"edge\"><title>&#45;1&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M56,-3.94844C56,-13.1613 56,-22.3742 56,-31.5871\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"56,-38.6323 52.8501,-31.6322 56,-35.1323 56.0001,-31.6323 56.0001,-31.6323 56.0001,-31.6323 56,-35.1323 59.1501,-31.6323 56,-38.6323 56,-38.6323\"/>\n",
"<!-- &#45;1.0&#45;&gt;0 -->\n",
"<g id=\"edge5\" class=\"edge\"><title>&#45;1.0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M208.937,-70.1497C205.016,-70.8087 188.487,-73.3597 175,-72 137.348,-68.204 127.098,-67.1511 92,-53 87.4332,-51.1587 82.6985,-48.8714 78.2428,-46.5287\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"71.9664,-43.1024 79.6199,-43.6917 75.0385,-44.7795 78.1106,-46.4566 78.1106,-46.4566 78.1106,-46.4566 75.0385,-44.7795 76.6012,-49.2214 71.9664,-43.1024 71.9664,-43.1024\"/>\n",
"</g>\n",
"<!-- &#45;1&#45;&gt;1 -->\n",
"<g id=\"edge6\" class=\"edge\"><title>&#45;1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M58.3854,-1.69527C64.6542,-1.28831 90.8043,-0.315741 108,-10.8 117.607,-16.6573 125.513,-26.2081 131.364,-35.0934\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"135.083,-41.0848 128.715,-36.7985 133.237,-38.111 131.391,-35.1373 131.391,-35.1373 131.391,-35.1373 133.237,-38.111 134.068,-33.4761 135.083,-41.0848 135.083,-41.0848\"/>\n",
"<!-- &#45;1.0&#45;&gt;1 -->\n",
"<g id=\"edge6\" class=\"edge\"><title>&#45;1.0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M208.886,-70.0545C204.745,-70.2648 187.406,-70.7466 175,-65 168.261,-61.8783 161.868,-57.0279 156.434,-52.0833\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"151.344,-47.1678 158.567,-49.7641 153.862,-49.599 156.379,-52.0302 156.379,-52.0302 156.379,-52.0302 153.862,-49.599 154.191,-54.2962 151.344,-47.1678 151.344,-47.1678\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text": [
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7620378360> >"
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faa50350cc0> >"
]
}
],
"prompt_number": 6
"prompt_number": 7
},
{
"cell_type": "code",

File diff suppressed because it is too large Load diff