spot/tests/python/zlktree.ipynb
Alexandre Duret-Lutz 5c5790039b zlktree: cleanup the interface, and add interactive ACD
* tests/python/_zlktree.ipynb: Remove and replace by...
* tests/python/zlktree.ipynb: ... this more documented notebook.
* tests/Makefile.am: Adjust.
* doc/org/tut.org, NEWS: Mention zlktree.ipynb.
* spot/twaalgos/zlktree.hh, spot/twaalgos/zlktree.cc,
python/spot/__init__.py: Cleanup interface, and add support for
interactive display.
2021-09-04 12:48:57 +02:00

6570 lines
454 KiB
Text

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "found-hurricane",
"metadata": {},
"outputs": [],
"source": [
"import spot\n",
"spot.setup()"
]
},
{
"cell_type": "markdown",
"id": "fb656100",
"metadata": {},
"source": [
"This notebook demonstrates the implementation of Zielonka Tree and ACD (Alternating Cycle Decomposition)\n",
"in Spot. \n",
"\n",
"These two structures are used to decompose an acceptance condition (or automaton) into trees that alternate accepting and rejecting elements in order to help converting an automaton to parity acceptance. Spot implements those structures, includes some display code to better explore them iteractively, and finally use them to implement a transformation to parity acceptance.\n",
"\n",
"For a formal tratement of these, in a slightly different formalism, see [Optimal Transformations of Games and Automata Using Muller Conditions](https://arxiv.org/abs/2011.13041) by Casares, Colcombet, and Fijalkow. In Spot those definitions have been adapted to use Emerson-Lei acceptance, and support transitions labeled by multiple colors (the main differences are for the Zielonka Tree, the ACD is almost identical)."
]
},
{
"cell_type": "markdown",
"id": "4e8b5d3f",
"metadata": {},
"source": [
"# Zielonka Tree\n",
"\n",
"The Zielonka tree is built from an acceptance formula and is labeled by sets of colors. The root contains all colors used in the formula. If seing infinitely all colors of one node would satisfy the acceptance condition, we say that the node is accepting and draw it with an ellipse, otherwise is is rejecting and drawn with a rectangle. The children of an accepting (resp. rejecting) node, are the largest subsets of colors that are rejecting (resp. accepting).\n",
"\n",
"Here is an example:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "b330dcc5",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Title: zielonka_tree Pages: 1 -->\n",
"<svg width=\"560pt\" height=\"278pt\"\n",
" viewBox=\"0.00 0.00 560.07 277.74\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 273.74)\">\n",
"<title>zielonka_tree</title>\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-273.74 556.07,-273.74 556.07,4 -4,4\"/>\n",
"<!-- 0 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>0</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"295.36,-269.74 211.36,-269.74 211.36,-233.74 295.36,-233.74 295.36,-269.74\"/>\n",
"<text text-anchor=\"middle\" x=\"253.36\" y=\"-248.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3}</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"161.36\" cy=\"-179.74\" rx=\"46.29\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"161.36\" y=\"-176.04\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2,3}</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M230.61,-233.44C218.3,-224.07 202.98,-212.41 189.88,-202.44\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"191.72,-199.45 181.64,-196.18 187.48,-205.02 191.72,-199.45\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"340.36\" cy=\"-179.74\" rx=\"46.29\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"340.36\" y=\"-176.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,3}</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M274.86,-233.44C286.39,-224.16 300.72,-212.63 313.03,-202.73\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"315.57,-205.17 321.17,-196.18 311.18,-199.72 315.57,-205.17\"/>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>3</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"107.86,-125.74 50.86,-125.74 50.86,-89.74 107.86,-89.74 107.86,-125.74\"/>\n",
"<text text-anchor=\"middle\" x=\"79.36\" y=\"-104.04\" font-family=\"Times,serif\" font-size=\"14.00\">{2,3}</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;3 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>1&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M142.75,-162.86C132.23,-153.88 118.87,-142.47 107.13,-132.45\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"109.2,-129.61 99.32,-125.78 104.65,-134.94 109.2,-129.61\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"189.86,-125.74 132.86,-125.74 132.86,-89.74 189.86,-89.74 189.86,-125.74\"/>\n",
"<text text-anchor=\"middle\" x=\"161.36\" y=\"-104.04\" font-family=\"Times,serif\" font-size=\"14.00\">{1,3}</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;4 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M161.36,-161.44C161.36,-153.72 161.36,-144.45 161.36,-135.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"164.86,-135.84 161.36,-125.84 157.86,-135.84 164.86,-135.84\"/>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>5</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"368.86,-125.74 311.86,-125.74 311.86,-89.74 368.86,-89.74 368.86,-125.74\"/>\n",
"<text text-anchor=\"middle\" x=\"340.36\" y=\"-104.04\" font-family=\"Times,serif\" font-size=\"14.00\">{1,3}</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;5 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>2&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M340.36,-161.44C340.36,-153.72 340.36,-144.45 340.36,-135.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"343.86,-135.84 340.36,-125.84 336.86,-135.84 343.86,-135.84\"/>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>6</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"506.86,-125.74 449.86,-125.74 449.86,-89.74 506.86,-89.74 506.86,-125.74\"/>\n",
"<text text-anchor=\"middle\" x=\"478.36\" y=\"-104.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1}</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;6 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>2&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M367.29,-165.08C388.11,-154.52 417.19,-139.76 440.38,-128.01\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"442.25,-130.98 449.58,-123.33 439.08,-124.74 442.25,-130.98\"/>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>7</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"35.36\" cy=\"-26.87\" rx=\"35.21\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"35.36\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{3}</text>\n",
"<text text-anchor=\"middle\" x=\"35.36\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;7&gt;</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;7 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>3&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M69.81,-89.63C65.09,-81.16 59.22,-70.65 53.68,-60.72\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"56.65,-58.86 48.72,-51.83 50.54,-62.27 56.65,-58.86\"/>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"124.36\" cy=\"-26.87\" rx=\"35.21\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"124.36\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{1}</text>\n",
"<text text-anchor=\"middle\" x=\"124.36\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;8&gt;</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;8 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>4&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M153.33,-89.63C149.46,-81.39 144.69,-71.21 140.14,-61.51\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"143.29,-60 135.88,-52.43 136.96,-62.97 143.29,-60\"/>\n",
"</g>\n",
"<!-- 9 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>9</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"213.36\" cy=\"-26.87\" rx=\"35.21\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"213.36\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{3}</text>\n",
"<text text-anchor=\"middle\" x=\"213.36\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;9&gt;</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;9 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>4&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M172.64,-89.63C178.43,-80.85 185.66,-69.87 192.43,-59.61\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"195.37,-61.51 197.95,-51.23 189.52,-57.66 195.37,-61.51\"/>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>10</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"308.36\" cy=\"-26.87\" rx=\"41.94\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"308.36\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{1}</text>\n",
"<text text-anchor=\"middle\" x=\"308.36\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;10&gt;</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;10 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>5&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M333.41,-89.63C330.19,-81.69 326.24,-71.96 322.44,-62.58\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"325.57,-60.99 318.57,-53.04 319.08,-63.62 325.57,-60.99\"/>\n",
"</g>\n",
"<!-- 11 -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>11</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"409.36\" cy=\"-26.87\" rx=\"41.94\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"409.36\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{3}</text>\n",
"<text text-anchor=\"middle\" x=\"409.36\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;11&gt;</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;11 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>5&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M355.33,-89.63C363.36,-80.44 373.51,-68.84 382.83,-58.19\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"385.49,-60.47 389.44,-50.64 380.22,-55.86 385.49,-60.47\"/>\n",
"</g>\n",
"<!-- 12 -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>12</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"510.36\" cy=\"-26.87\" rx=\"41.94\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"510.36\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{1}</text>\n",
"<text text-anchor=\"middle\" x=\"510.36\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;12&gt;</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;12 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>6&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M485.3,-89.63C488.52,-81.69 492.47,-71.96 496.27,-62.58\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"499.63,-63.62 500.14,-53.04 493.14,-60.99 499.63,-63.62\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7fa2682f4270> >"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c = spot.acc_cond('Fin(0)&Inf(1)&(Inf(2)|Fin(3)) | (Inf(0)|Fin(1))&Fin(2)&Inf(3)')\n",
"t = spot.zielonka_tree(c)\n",
"t"
]
},
{
"cell_type": "markdown",
"id": "d7629725",
"metadata": {},
"source": [
"Above we can see that `{0,1,2,3}` is a rejecting root, but it has two accepting maximal subsets: `{1,2,3}` and `{0,1,3}`. Similarly, `{1,2,3}` has two rejecting maximal subsets: `{2,3}` and `{1,3}`.\n",
"\n",
"The leaves of this tree have some additional numbers in angle brackets: those are the node numbers. Each node has a number (it can be seen by hovering over it with the mouse), but those leaf numbers play a particular role when the tree is used to paritize an automaton.\n",
"\n",
"This tree is also layered: all nodes in each layers are alternatively rejecting and accepting. Layers are numbered incrementally from 0 at the root. In this example, leaves are in layer 3. Since it is conventional to put the root at the top, we will say that a node is high in the tree when it has a small level.\n",
"\n",
"In this example, odd levels are accepting: we say the tree is odd. On another example, it could be the other way arround. The `is_even()` method tells us which way it is."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "ef1a0061",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"t.is_even()"
]
},
{
"cell_type": "markdown",
"id": "15fbd4e6",
"metadata": {},
"source": [
"The number of leaves, and the number of the left-most leaf can be found with the following functions:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "ad093868",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(6, 7)"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"t.num_branches(), t.first_branch()"
]
},
{
"cell_type": "markdown",
"id": "de4cdc45",
"metadata": {},
"source": [
"The `step()` methods takes one leaf L, one set of colors S, and returns a pair: (leaf, level).\n",
"It works as follows: starting from node L, it walks up the tree until it has seen all colors in S, and then return the left-most leaf of the *next* branch of the node it has seen (assuming branches are ordered circularly from left to right). The level returned is that of the highest node seen.\n",
"\n",
"We refer to the process performed by `step(L,S)` as *reading S from L*. \n",
"\n",
"For instance reading `[3]` from 7 does not change the leaf, since that leaf is already labeled by `{3}`. The level emitted is 3, since that's the level of 7."
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "f4795cff",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(7, 3)"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"t.step(7, [3])"
]
},
{
"cell_type": "markdown",
"id": "4c3bf70b",
"metadata": {},
"source": [
"Reading `[3]` from 8, would however move to leave 9 and emit level 2. Indeed, color 3 is not recognized by 8, so we move up to node 4 (the one labelled by `{1,3}`), emit its level (2), and go down to the left-most leaf of the next branch."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "27899524",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(9, 2)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"t.step(8, [3])"
]
},
{
"cell_type": "markdown",
"id": "0d865f30",
"metadata": {},
"source": [
"If we read `[0,2]` from 9, we will have to go all the way up to the root (emitting 0) and then down to leaf 10:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "94d01547",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(10, 0)"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"t.step(9, [0,2])"
]
},
{
"cell_type": "markdown",
"id": "8b6b3928",
"metadata": {},
"source": [
"Now, let's take this a *step* further, and chain multiple steps, by reading a sequence of Sᵢ and producing a sequence of levels."
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "43b17b85",
"metadata": {},
"outputs": [],
"source": [
"def steps(tree, leaf, seq_of_s):\n",
" seq_of_lvl = []\n",
" for s in seq_of_s:\n",
" leaf, lvl = tree.step(leaf, s)\n",
" seq_of_lvl.append(lvl)\n",
" return leaf, seq_of_lvl"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "1d411142",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(10, [1, 0, 2, 2, 1, 1, 3, 1, 1, 3, 1, 1])\n",
"(9, [1, 2, 2, 2, 2, 2, 2, 2])\n"
]
}
],
"source": [
"print(steps(t, 7, [[1],[0],[3],[1],[0],[3],[1],[0],[3],[1],[0],[3]]))\n",
"print(steps(t, 7, [[1],[3],[1],[3],[1],[3],[1],[3]]))"
]
},
{
"cell_type": "markdown",
"id": "656e05f4",
"metadata": {},
"source": [
"If we imagine an run looping on tree transitions labeled by `[1]`, `[0]`, `[3]`, we know (from the original acceptance condition) that it should be accepting. Infinite repetition of the `step()` procedure will emit many levels, but the smallest level we see infinitely often is `1`. It corresponds to node 2, labeled by `{0,1,3}`: this is the highest node we visit infinitely often while steping through this tree in a loop.\n",
"\n",
"Similarly, a loop of two transitions labeled by `[1]` and `[3]` should be rejecting. Stepping through the tree will emit infinitely many 2, a rejecting level."
]
},
{
"cell_type": "markdown",
"id": "5c7014e9",
"metadata": {},
"source": [
"All of this can be used to transform an automaton with arbitrary acceptance into a parity automaton, where the emitted levels will correspond to the priorities of the parity automaton.\n",
"\n",
"The states of the new automaton will be pairs of states of the form `(original state, leaf)`. If the input edge `(src,dst)` has colors `S`, then the output edge `((src,leaf),(dst,nextleaf))` will have priority `L` where `L` and `nextleaf` are computed as `(nextleaf,L)=t.step(leaf, S)`. The leaf used for the initial state does not really matter, we use the left-most one."
]
},
{
"cell_type": "markdown",
"id": "2750cb1d",
"metadata": {},
"source": [
"Let's create a random automaton with this example acceptance condition, and paritize it:"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "0b9511da",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"510pt\" height=\"276pt\"\n",
" viewBox=\"0.00 0.00 509.50 276.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.0 1.0) rotate(0) translate(4 272)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-272 505.5,-272 505.5,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"16.75\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\">(Fin(</text>\n",
"<text text-anchor=\"start\" x=\"43.75\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"59.75\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\">) &amp; Inf(</text>\n",
"<text text-anchor=\"start\" x=\"101.75\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"117.75\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\">) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"163.75\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"179.75\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\">) | Fin(</text>\n",
"<text text-anchor=\"start\" x=\"217.75\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"233.75\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\">))) | ((Inf(</text>\n",
"<text text-anchor=\"start\" x=\"284.75\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"300.75\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\">) | Fin(</text>\n",
"<text text-anchor=\"start\" x=\"338.75\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"354.75\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\">)) &amp; Fin(</text>\n",
"<text text-anchor=\"start\" x=\"402.75\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"418.75\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\">) &amp; Inf(</text>\n",
"<text text-anchor=\"start\" x=\"460.75\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"476.75\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\">))</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-130\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-126.3\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.15,-130C2.79,-130 17.15,-130 30.63,-130\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.94,-130 30.94,-133.15 34.44,-130 30.94,-130 30.94,-130 30.94,-130 34.44,-130 30.94,-126.85 37.94,-130 37.94,-130\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M49.62,-147.04C48.32,-156.86 50.45,-166 56,-166 60.17,-166 62.4,-160.86 62.71,-154.14\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"62.38,-147.04 65.85,-153.88 62.54,-150.53 62.71,-154.03 62.71,-154.03 62.71,-154.03 62.54,-150.53 59.56,-154.18 62.38,-147.04 62.38,-147.04\"/>\n",
"<text text-anchor=\"start\" x=\"27.5\" y=\"-184.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"48\" y=\"-169.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"191.5\" cy=\"-77\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"191.5\" y=\"-73.3\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M73.96,-128.04C92.96,-125.38 124.31,-119.57 149,-108 157.14,-104.18 165.26,-98.62 172.12,-93.25\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"177.57,-88.84 174.12,-95.69 174.85,-91.04 172.13,-93.25 172.13,-93.25 172.13,-93.25 174.85,-91.04 170.15,-90.8 177.57,-88.84 177.57,-88.84\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-142.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"112.5\" y=\"-127.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"473\" cy=\"-120\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"473\" y=\"-116.3\" font-family=\"Lato\" font-size=\"14.00\">3</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;3 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M61.9,-147.22C66.96,-161.67 76.37,-181.58 92,-192 165.86,-241.24 202.38,-214.14 291,-209 356.22,-205.22 383.72,-229.8 437,-192 452.63,-180.91 461.58,-160.88 466.5,-144.76\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"468.5,-137.67 469.63,-145.26 467.55,-141.04 466.6,-144.41 466.6,-144.41 466.6,-144.41 467.55,-141.04 463.57,-143.56 468.5,-137.67 468.5,-137.67\"/>\n",
"<text text-anchor=\"start\" x=\"234\" y=\"-233.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"254.5\" y=\"-218.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>1&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M173.96,-71.64C153.36,-65.99 117.74,-59.73 92,-74 79.39,-80.99 70.73,-94.62 65.17,-106.68\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"62.4,-113.17 62.25,-105.49 63.78,-109.95 65.15,-106.73 65.15,-106.73 65.15,-106.73 63.78,-109.95 68.05,-107.97 62.4,-113.17 62.4,-113.17\"/>\n",
"<text text-anchor=\"start\" x=\"94\" y=\"-92.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"112.5\" y=\"-77.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M180.07,-91.04C175.8,-101.91 179.61,-113 191.5,-113 200.79,-113 205.15,-106.23 204.57,-98.09\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"202.93,-91.04 207.59,-97.14 203.73,-94.45 204.52,-97.86 204.52,-97.86 204.52,-97.86 203.73,-94.45 201.45,-98.57 202.93,-91.04 202.93,-91.04\"/>\n",
"<text text-anchor=\"start\" x=\"165\" y=\"-131.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"183.5\" y=\"-116.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"337.5\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"337.5\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\">2</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>1&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M209.6,-75.03C229.84,-72.21 264.18,-65.87 291,-53 300.74,-48.33 310.39,-41.34 318.27,-34.83\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"323.94,-30 320.66,-36.94 321.27,-32.27 318.61,-34.54 318.61,-34.54 318.61,-34.54 321.27,-32.27 316.57,-32.15 323.94,-30 323.94,-30\"/>\n",
"<text text-anchor=\"start\" x=\"238\" y=\"-88.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"254.5\" y=\"-73.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;0 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>3&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M456.56,-128.18C450.55,-131.18 443.55,-134.46 437,-137 406.32,-148.9 398.57,-153.28 366,-158 305.74,-166.72 149.46,-178.15 92,-158 85.64,-155.77 79.57,-151.84 74.33,-147.62\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"68.99,-142.99 76.35,-145.19 71.64,-145.28 74.28,-147.57 74.28,-147.57 74.28,-147.57 71.64,-145.28 72.22,-149.95 68.99,-142.99 68.99,-142.99\"/>\n",
"<text text-anchor=\"start\" x=\"236\" y=\"-186.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"254.5\" y=\"-171.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;1 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>3&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M455,-121.72C415.16,-125.16 313.16,-130.4 234,-104 226.13,-101.38 218.3,-96.9 211.6,-92.33\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"205.79,-88.17 213.31,-89.68 208.63,-90.2 211.48,-92.24 211.48,-92.24 211.48,-92.24 208.63,-90.2 209.64,-94.8 205.79,-88.17 205.79,-88.17\"/>\n",
"<text text-anchor=\"start\" x=\"309\" y=\"-142.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"329.5\" y=\"-127.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g id=\"edge15\" class=\"edge\">\n",
"<title>3&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M462.63,-134.79C459.25,-145.42 462.71,-156 473,-156 480.88,-156 484.75,-149.8 484.62,-142.12\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"483.37,-134.79 487.65,-141.16 483.96,-138.24 484.55,-141.69 484.55,-141.69 484.55,-141.69 483.96,-138.24 481.44,-142.22 483.37,-134.79 483.37,-134.79\"/>\n",
"<text text-anchor=\"start\" x=\"444.5\" y=\"-174.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"465\" y=\"-159.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;2 -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>3&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M471.74,-101.95C470.3,-78.18 463.82,-37.15 437,-18 415.24,-2.46 383.33,-5.9 361.77,-10.93\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"354.89,-12.68 360.9,-7.91 358.28,-11.82 361.68,-10.96 361.68,-10.96 361.68,-10.96 358.28,-11.82 362.45,-14.01 354.89,-12.68 354.89,-12.68\"/>\n",
"<text text-anchor=\"start\" x=\"384\" y=\"-36.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"402.5\" y=\"-21.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;0 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>2&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M320.28,-12.63C311.68,-10.07 300.88,-7.28 291,-6 236,1.13 219.04,-0.82 167,-20 131.36,-33.14 118.44,-33.73 92,-61 79.63,-73.76 70.69,-91.77 64.95,-106.19\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"62.38,-112.94 61.92,-105.28 63.63,-109.67 64.87,-106.4 64.87,-106.4 64.87,-106.4 63.63,-109.67 67.81,-107.51 62.38,-112.94 62.38,-112.94\"/>\n",
"<text text-anchor=\"start\" x=\"167\" y=\"-38.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"183.5\" y=\"-23.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>2&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M319.78,-13.77C298.52,-9.33 261.31,-4.79 234,-19 219.69,-26.45 209.2,-41.34 202.34,-54.16\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"199.09,-60.63 199.42,-52.97 200.66,-57.51 202.23,-54.38 202.23,-54.38 202.23,-54.38 200.66,-57.51 205.05,-55.8 199.09,-60.63 199.09,-60.63\"/>\n",
"<text text-anchor=\"start\" x=\"236\" y=\"-37.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"254.5\" y=\"-22.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>2&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M351.9,-29.23C360.69,-36.28 372.62,-45.28 384,-52 406.27,-65.15 416.6,-60.1 437,-76 445.22,-82.41 452.67,-91.12 458.57,-99.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"462.76,-105.02 456.14,-101.13 460.73,-102.17 458.71,-99.31 458.71,-99.31 458.71,-99.31 460.73,-102.17 461.28,-97.49 462.76,-105.02 462.76,-105.02\"/>\n",
"<text text-anchor=\"start\" x=\"384\" y=\"-94.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"402.5\" y=\"-79.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>2&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M325.74,-32.04C321.35,-42.91 325.27,-54 337.5,-54 347.06,-54 351.54,-47.23 350.95,-39.09\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"349.26,-32.04 353.95,-38.11 350.07,-35.45 350.89,-38.85 350.89,-38.85 350.89,-38.85 350.07,-35.45 347.83,-39.58 349.26,-32.04 349.26,-32.04\"/>\n",
"<text text-anchor=\"start\" x=\"311\" y=\"-72.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"329.5\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa2681f9db0> >"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a1 = spot.automaton(\"randaut -Q4 --colored -e.7 -A '{}' 2 |\".format(c.get_acceptance()))\n",
"a1"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "499c26d8",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"581pt\" height=\"360pt\"\n",
" viewBox=\"0.00 0.00 581.40 360.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(0.4504504504504504 0.4504504504504504) rotate(0) translate(4 794)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-794 1284.76,-794 1284.76,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"525.88\" y=\"-775.8\" font-family=\"Lato\" font-size=\"14.00\">Fin(</text>\n",
"<text text-anchor=\"start\" x=\"548.88\" y=\"-775.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"564.88\" y=\"-775.8\" font-family=\"Lato\" font-size=\"14.00\">) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"610.88\" y=\"-775.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"626.88\" y=\"-775.8\" font-family=\"Lato\" font-size=\"14.00\">) | (Fin(</text>\n",
"<text text-anchor=\"start\" x=\"668.88\" y=\"-775.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"684.88\" y=\"-775.8\" font-family=\"Lato\" font-size=\"14.00\">) &amp; Inf(</text>\n",
"<text text-anchor=\"start\" x=\"726.88\" y=\"-775.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"742.88\" y=\"-775.8\" font-family=\"Lato\" font-size=\"14.00\">)))</text>\n",
"<text text-anchor=\"start\" x=\"586.38\" y=\"-761.8\" font-family=\"Lato\" font-size=\"14.00\">[parity min odd 4]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"64.65\" cy=\"-442\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"52.15\" y=\"-438.3\" font-family=\"Lato\" font-size=\"14.00\">0#7</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.05,-442C1.94,-442 16.02,-442 30.59,-442\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.73,-442 30.73,-445.15 34.23,-442 30.73,-442 30.73,-442 30.73,-442 34.23,-442 30.73,-438.85 37.73,-442 37.73,-442\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"210.94\" cy=\"-443\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"198.44\" y=\"-439.3\" font-family=\"Lato\" font-size=\"14.00\">1#7</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M90.99,-445.4C96.98,-446.06 103.36,-446.66 109.3,-447 134.59,-448.44 140.99,-448.16 166.3,-447 169.91,-446.83 173.68,-446.59 177.44,-446.31\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"184.58,-445.72 177.86,-449.43 181.09,-446.01 177.61,-446.3 177.61,-446.3 177.61,-446.3 181.09,-446.01 177.35,-443.16 184.58,-445.72 184.58,-445.72\"/>\n",
"<text text-anchor=\"start\" x=\"109.3\" y=\"-465.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"129.8\" y=\"-450.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"955.67\" cy=\"-523\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"943.17\" y=\"-519.3\" font-family=\"Lato\" font-size=\"14.00\">3#7</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M69.37,-459.84C80.8,-509.03 120.16,-643 209.94,-643 209.94,-643 209.94,-643 650.53,-643 761.58,-643 880.52,-572.92 930.44,-539.87\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"936.46,-535.84 932.39,-542.35 933.55,-537.79 930.64,-539.74 930.64,-539.74 930.64,-539.74 933.55,-537.79 928.89,-537.12 936.46,-535.84 936.46,-535.84\"/>\n",
"<text text-anchor=\"start\" x=\"472.89\" y=\"-661.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"493.39\" y=\"-646.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"797.68\" cy=\"-688\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"785.18\" y=\"-684.3\" font-family=\"Lato\" font-size=\"14.00\">0#8</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;3 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>0&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M67.2,-460.24C71.47,-506.45 84.7,-626.56 109.3,-657 139.97,-694.98 161.12,-701 209.94,-701 209.94,-701 209.94,-701 650.53,-701 689.75,-701 734.65,-696.3 764.22,-692.55\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"771.39,-691.62 764.86,-695.64 767.92,-692.07 764.45,-692.52 764.45,-692.52 764.45,-692.52 767.92,-692.07 764.05,-689.4 771.39,-691.62 771.39,-691.62\"/>\n",
"<text text-anchor=\"start\" x=\"397.89\" y=\"-719.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"418.39\" y=\"-704.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>1&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M194.2,-428.73C186.4,-422.62 176.48,-416.16 166.3,-413 142.1,-405.49 133.55,-405.68 109.3,-413 101.69,-415.3 94.2,-419.4 87.63,-423.81\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"81.87,-427.9 85.75,-421.27 84.73,-425.87 87.58,-423.84 87.58,-423.84 87.58,-423.84 84.73,-425.87 89.4,-426.41 81.87,-427.9 81.87,-427.9\"/>\n",
"<text text-anchor=\"start\" x=\"111.3\" y=\"-431.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"129.8\" y=\"-416.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M198.74,-459.29C195.8,-469.39 199.87,-479 210.94,-479 219.25,-479 223.61,-473.59 224.03,-466.63\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"223.14,-459.29 227.11,-465.86 223.56,-462.76 223.99,-466.24 223.99,-466.24 223.99,-466.24 223.56,-462.76 220.86,-466.62 223.14,-459.29 223.14,-459.29\"/>\n",
"<text text-anchor=\"start\" x=\"184.44\" y=\"-497.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"202.94\" y=\"-482.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>4</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"353.24\" cy=\"-390\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"340.74\" y=\"-386.3\" font-family=\"Lato\" font-size=\"14.00\">2#7</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;4 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>1&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M237.44,-439.99C257.45,-436.97 285.66,-431.26 308.59,-421 316,-417.69 323.42,-413.03 330,-408.33\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"335.78,-404.04 332.04,-410.74 332.97,-406.13 330.16,-408.21 330.16,-408.21 330.16,-408.21 332.97,-406.13 328.28,-405.69 335.78,-404.04 335.78,-404.04\"/>\n",
"<text text-anchor=\"start\" x=\"257.59\" y=\"-454.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"274.09\" y=\"-439.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>2&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M931.24,-530.36C923.07,-532.6 913.8,-534.79 905.18,-536 804.36,-550.14 777.97,-539.89 676.18,-541 486.62,-543.07 432.17,-538.99 255.59,-470 248.87,-467.37 242.03,-463.71 235.82,-459.92\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"229.85,-456.13 237.45,-457.22 232.81,-458 235.76,-459.88 235.76,-459.88 235.76,-459.88 232.81,-458 234.07,-462.54 229.85,-456.13 229.85,-456.13\"/>\n",
"<text text-anchor=\"start\" x=\"547.89\" y=\"-559.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"568.39\" y=\"-544.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;4 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>2&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M928.8,-523.51C907.2,-523.69 875.62,-523.41 848.18,-521 747.26,-512.14 484.29,-502.87 397.89,-450 383.85,-441.41 372.96,-426.46 365.56,-413.63\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"362.01,-407.15 368.14,-411.78 363.7,-410.22 365.38,-413.29 365.38,-413.29 365.38,-413.29 363.7,-410.22 362.62,-414.81 362.01,-407.15 362.01,-407.15\"/>\n",
"<text text-anchor=\"start\" x=\"623.03\" y=\"-525.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"641.53\" y=\"-510.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>5</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"797.68\" cy=\"-379\" rx=\"32.49\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"780.68\" y=\"-375.3\" font-family=\"Lato\" font-size=\"14.00\">0#10</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;5 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>2&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M943.74,-506.63C934.66,-494.09 920.75,-477.11 905.18,-466 882.94,-450.14 869.96,-459.49 848.18,-443 833.61,-431.97 821.07,-415.63 812.25,-402.22\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"808.47,-396.29 814.89,-400.5 810.35,-399.24 812.23,-402.19 812.23,-402.19 812.23,-402.19 810.35,-399.24 809.58,-403.89 808.47,-396.29 808.47,-396.29\"/>\n",
"<text text-anchor=\"start\" x=\"850.18\" y=\"-484.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"868.68\" y=\"-469.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1107.82\" cy=\"-379\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"1095.32\" y=\"-375.3\" font-family=\"Lato\" font-size=\"14.00\">3#8</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;6 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>2&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M971.9,-508.4C998.99,-482.42 1055.59,-428.13 1086.16,-398.81\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1091.55,-393.64 1088.68,-400.76 1089.03,-396.06 1086.5,-398.48 1086.5,-398.48 1086.5,-398.48 1089.03,-396.06 1084.32,-396.21 1091.55,-393.64 1091.55,-393.64\"/>\n",
"<text text-anchor=\"start\" x=\"1006.17\" y=\"-490.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1026.67\" y=\"-475.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;2 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>3&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M814.52,-673.49C824.13,-664.8 836.72,-653.6 848.18,-644 872.91,-623.27 883.41,-622.84 905.18,-599 919.85,-582.92 933.11,-562.05 942.21,-546.24\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"945.84,-539.81 945.14,-547.45 944.12,-542.85 942.4,-545.9 942.4,-545.9 942.4,-545.9 944.12,-542.85 939.65,-544.35 945.84,-539.81 945.84,-539.81\"/>\n",
"<text text-anchor=\"start\" x=\"848.18\" y=\"-662.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"868.68\" y=\"-647.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>3&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M784.56,-703.92C781.13,-714.15 785.51,-724 797.68,-724 807,-724 811.75,-718.23 811.92,-710.93\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"810.8,-703.92 815.02,-710.33 811.35,-707.37 811.91,-710.83 811.91,-710.83 811.91,-710.83 811.35,-707.37 808.8,-711.33 810.8,-703.92 810.8,-703.92\"/>\n",
"<text text-anchor=\"start\" x=\"769.18\" y=\"-742.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"789.68\" y=\"-727.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>7</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1254.11\" cy=\"-225\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"1241.61\" y=\"-221.3\" font-family=\"Lato\" font-size=\"14.00\">1#9</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;7 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>3&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M824.4,-688.73C875.64,-688.82 991.67,-682.1 1063.17,-624 1187.54,-522.93 1235.41,-321.14 1248.82,-250.3\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1250.15,-243.08 1251.98,-250.54 1249.51,-246.53 1248.88,-249.97 1248.88,-249.97 1248.88,-249.97 1249.51,-246.53 1245.78,-249.4 1250.15,-243.08 1250.15,-243.08\"/>\n",
"<text text-anchor=\"start\" x=\"1006.17\" y=\"-674.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1026.67\" y=\"-659.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;1 -->\n",
"<g id=\"edge15\" class=\"edge\">\n",
"<title>4&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M328.29,-383.29C307.9,-378.92 278.37,-375.87 255.59,-387 241.63,-393.82 230.84,-407.5 223.48,-419.63\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"219.94,-425.78 220.69,-418.15 221.68,-422.75 223.43,-419.71 223.43,-419.71 223.43,-419.71 221.68,-422.75 226.16,-421.28 219.94,-425.78 219.94,-425.78\"/>\n",
"<text text-anchor=\"start\" x=\"255.59\" y=\"-405.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"274.09\" y=\"-390.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;2 -->\n",
"<g id=\"edge17\" class=\"edge\">\n",
"<title>4&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M378.19,-396.84C384.57,-398.59 391.48,-400.42 397.89,-402 596.46,-450.84 837.4,-499.7 922.8,-516.7\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"929.87,-518.11 922.39,-519.83 926.43,-517.43 923,-516.74 923,-516.74 923,-516.74 926.43,-517.43 923.61,-513.66 929.87,-518.11 929.87,-518.11\"/>\n",
"<text text-anchor=\"start\" x=\"623.03\" y=\"-483.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"641.53\" y=\"-468.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;5 -->\n",
"<g id=\"edge16\" class=\"edge\">\n",
"<title>4&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M379.94,-389.36C454.2,-387.51 669.43,-382.16 757.95,-379.96\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"765.11,-379.78 758.19,-383.11 761.61,-379.87 758.11,-379.96 758.11,-379.96 758.11,-379.96 761.61,-379.87 758.04,-376.81 765.11,-379.78 765.11,-379.78\"/>\n",
"<text text-anchor=\"start\" x=\"551.89\" y=\"-403.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"568.39\" y=\"-388.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"501.39\" cy=\"-290\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"488.89\" y=\"-286.3\" font-family=\"Lato\" font-size=\"14.00\">2#8</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;8 -->\n",
"<g id=\"edge18\" class=\"edge\">\n",
"<title>4&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M367.43,-374.62C375.62,-365.62 386.71,-354.41 397.89,-346 421.24,-328.44 450.78,-312.91 472.14,-302.68\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"478.49,-299.68 473.5,-305.52 475.32,-301.18 472.16,-302.67 472.16,-302.67 472.16,-302.67 475.32,-301.18 470.81,-299.82 478.49,-299.68 478.49,-299.68\"/>\n",
"<text text-anchor=\"start\" x=\"399.89\" y=\"-364.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"418.39\" y=\"-349.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;2 -->\n",
"<g id=\"edge20\" class=\"edge\">\n",
"<title>5&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M827.76,-385.83C857.21,-392.96 899.24,-403.82 905.18,-409 931.77,-432.22 944.59,-472.33 950.38,-498.25\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"951.83,-505.16 947.31,-498.96 951.11,-501.73 950.39,-498.31 950.39,-498.31 950.39,-498.31 951.11,-501.73 953.47,-497.66 951.83,-505.16 951.83,-505.16\"/>\n",
"<text text-anchor=\"start\" x=\"848.18\" y=\"-427.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"868.68\" y=\"-412.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;5 -->\n",
"<g id=\"edge21\" class=\"edge\">\n",
"<title>5&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M784.32,-395.66C781.35,-405.62 785.8,-415 797.68,-415 806.58,-415 811.32,-409.73 811.87,-402.89\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"811.04,-395.66 814.97,-402.26 811.44,-399.14 811.84,-402.62 811.84,-402.62 811.84,-402.62 811.44,-399.14 808.71,-402.98 811.04,-395.66 811.04,-395.66\"/>\n",
"<text text-anchor=\"start\" x=\"769.18\" y=\"-433.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"789.68\" y=\"-418.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 9 -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>9</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"955.67\" cy=\"-58\" rx=\"32.49\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"938.67\" y=\"-54.3\" font-family=\"Lato\" font-size=\"14.00\">1#11</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;9 -->\n",
"<g id=\"edge19\" class=\"edge\">\n",
"<title>5&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M813.62,-363.24C822.91,-354.1 835.47,-342.88 848.18,-335 871.39,-320.6 887.79,-333.07 905.18,-312 907.02,-309.77 937.96,-146.57 949.97,-82.97\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"951.27,-76.08 953.06,-83.54 950.62,-79.52 949.97,-82.96 949.97,-82.96 949.97,-82.96 950.62,-79.52 946.87,-82.37 951.27,-76.08 951.27,-76.08\"/>\n",
"<text text-anchor=\"start\" x=\"848.18\" y=\"-353.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"868.68\" y=\"-338.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;4 -->\n",
"<g id=\"edge24\" class=\"edge\">\n",
"<title>6&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1104.65,-396.9C1100.64,-423.38 1089.89,-473.34 1063.17,-506 1038.7,-535.91 1023.67,-534.74 988.17,-550 831.06,-617.55 775.88,-581.15 604.89,-584 579.56,-584.42 571.98,-591.83 547.89,-584 469.51,-558.53 451.5,-537.58 397.89,-475 382.35,-456.87 370.49,-432.27 363.08,-414.19\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"360.37,-407.37 365.88,-412.71 361.66,-410.62 362.96,-413.88 362.96,-413.88 362.96,-413.88 361.66,-410.62 360.03,-415.04 360.37,-407.37 360.37,-407.37\"/>\n",
"<text text-anchor=\"start\" x=\"694.18\" y=\"-607.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"712.68\" y=\"-592.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;5 -->\n",
"<g id=\"edge22\" class=\"edge\">\n",
"<title>6&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1080.86,-379C1026.63,-379 901.04,-379 837.29,-379\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"830.21,-379 837.21,-375.85 833.71,-379 837.21,-379 837.21,-379 837.21,-379 833.71,-379 837.21,-382.15 830.21,-379 830.21,-379\"/>\n",
"<text text-anchor=\"start\" x=\"929.17\" y=\"-397.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"947.67\" y=\"-382.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;6 -->\n",
"<g id=\"edge25\" class=\"edge\">\n",
"<title>6&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1095.27,-395.29C1092.24,-405.39 1096.43,-415 1107.82,-415 1116.36,-415 1120.85,-409.59 1121.28,-402.63\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1120.36,-395.29 1124.36,-401.85 1120.8,-398.76 1121.23,-402.24 1121.23,-402.24 1121.23,-402.24 1120.8,-398.76 1118.11,-402.63 1120.36,-395.29 1120.36,-395.29\"/>\n",
"<text text-anchor=\"start\" x=\"1079.32\" y=\"-433.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1099.82\" y=\"-418.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;7 -->\n",
"<g id=\"edge23\" class=\"edge\">\n",
"<title>6&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1122.92,-363.95C1148.93,-336.19 1204.49,-276.9 1233.91,-245.49\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1238.74,-240.34 1236.26,-247.6 1236.35,-242.89 1233.96,-245.44 1233.96,-245.44 1233.96,-245.44 1236.35,-242.89 1231.66,-243.29 1238.74,-240.34 1238.74,-240.34\"/>\n",
"<text text-anchor=\"start\" x=\"1152.46\" y=\"-348.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1172.96\" y=\"-333.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;0 -->\n",
"<g id=\"edge27\" class=\"edge\">\n",
"<title>7&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1250.44,-206.97C1241.43,-153.58 1206.96,0 1108.82,0 209.94,0 209.94,0 209.94,0 150.82,0 137.13,-34.83 109.3,-87 78.69,-144.35 68.95,-345.35 66.42,-416.67\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"66.17,-423.93 63.26,-416.83 66.29,-420.43 66.41,-416.94 66.41,-416.94 66.41,-416.94 66.29,-420.43 69.56,-417.04 66.17,-423.93 66.17,-423.93\"/>\n",
"<text text-anchor=\"start\" x=\"623.03\" y=\"-18.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"641.53\" y=\"-3.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;4 -->\n",
"<g id=\"edge28\" class=\"edge\">\n",
"<title>7&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1237.14,-210.58C1211.85,-189.3 1160.19,-152 1108.82,-152 875.68,-152 875.68,-152 875.68,-152 659.83,-152 554.91,-90.9 397.89,-239 362.91,-271.99 355.4,-331.08 354.12,-364.73\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"353.93,-371.91 350.97,-364.83 354.02,-368.41 354.12,-364.91 354.12,-364.91 354.12,-364.91 354.02,-368.41 357.27,-365 353.93,-371.91 353.93,-371.91\"/>\n",
"<text text-anchor=\"start\" x=\"773.18\" y=\"-170.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"789.68\" y=\"-155.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;7 -->\n",
"<g id=\"edge26\" class=\"edge\">\n",
"<title>7&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1241.56,-241.29C1238.54,-251.39 1242.72,-261 1254.11,-261 1262.66,-261 1267.14,-255.59 1267.58,-248.63\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1266.66,-241.29 1270.65,-247.85 1267.09,-244.76 1267.53,-248.24 1267.53,-248.24 1267.53,-248.24 1267.09,-244.76 1264.4,-248.63 1266.66,-241.29 1266.66,-241.29\"/>\n",
"<text text-anchor=\"start\" x=\"1227.61\" y=\"-279.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1246.11\" y=\"-264.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;5 -->\n",
"<g id=\"edge30\" class=\"edge\">\n",
"<title>8&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M520.23,-302.92C528.34,-308.27 538.25,-314.12 547.89,-318 602.01,-339.82 619.51,-332.07 676.18,-346 705.13,-353.12 737.72,-362.1 761.71,-368.9\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"768.55,-370.85 760.95,-371.96 765.18,-369.89 761.81,-368.93 761.81,-368.93 761.81,-368.93 765.18,-369.89 762.67,-365.9 768.55,-370.85 768.55,-370.85\"/>\n",
"<text text-anchor=\"start\" x=\"625.03\" y=\"-364.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"641.53\" y=\"-349.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;7 -->\n",
"<g id=\"edge29\" class=\"edge\">\n",
"<title>8&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M525.27,-281.78C549.35,-273.33 588.46,-260.13 622.89,-251 745.82,-218.38 778.04,-200.17 905.18,-204 1021.14,-207.5 1158.54,-217.53 1220.24,-222.35\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1227.38,-222.91 1220.16,-225.51 1223.89,-222.64 1220.41,-222.37 1220.41,-222.37 1220.41,-222.37 1223.89,-222.64 1220.65,-219.23 1227.38,-222.91 1227.38,-222.91\"/>\n",
"<text text-anchor=\"start\" x=\"850.18\" y=\"-222.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"868.68\" y=\"-207.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;8 -->\n",
"<g id=\"edge32\" class=\"edge\">\n",
"<title>8&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M488.61,-305.92C485.28,-316.15 489.53,-326 501.39,-326 510.46,-326 515.08,-320.23 515.26,-312.93\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"514.16,-305.92 518.35,-312.35 514.7,-309.37 515.24,-312.83 515.24,-312.83 515.24,-312.83 514.7,-309.37 512.13,-313.32 514.16,-305.92 514.16,-305.92\"/>\n",
"<text text-anchor=\"start\" x=\"474.89\" y=\"-344.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"493.39\" y=\"-329.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>10</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"649.53\" cy=\"-278\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"637.03\" y=\"-274.3\" font-family=\"Lato\" font-size=\"14.00\">3#9</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;10 -->\n",
"<g id=\"edge31\" class=\"edge\">\n",
"<title>8&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M528.18,-287.88C552.6,-285.88 589.36,-282.86 615.83,-280.69\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"623,-280.1 616.28,-283.81 619.51,-280.38 616.02,-280.67 616.02,-280.67 616.02,-280.67 619.51,-280.38 615.77,-277.53 623,-280.1 623,-280.1\"/>\n",
"<text text-anchor=\"start\" x=\"549.89\" y=\"-305.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"568.39\" y=\"-290.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;0 -->\n",
"<g id=\"edge34\" class=\"edge\">\n",
"<title>9&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M923,-58C891.49,-58 841.74,-58 798.68,-58 209.94,-58 209.94,-58 209.94,-58 132.96,-58 83.09,-331.88 69.44,-417.04\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"68.34,-423.99 66.33,-416.59 68.89,-420.54 69.44,-417.08 69.44,-417.08 69.44,-417.08 68.89,-420.54 72.55,-417.57 68.34,-423.99 68.34,-423.99\"/>\n",
"<text text-anchor=\"start\" x=\"474.89\" y=\"-76.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"493.39\" y=\"-61.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;4 -->\n",
"<g id=\"edge35\" class=\"edge\">\n",
"<title>9&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M926.82,-66.55C919.8,-68.52 912.25,-70.48 905.18,-72 793.74,-96 479.68,-68.6 397.89,-148 367.18,-177.81 357.8,-309.37 355.17,-365.01\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"354.86,-372.03 352.03,-364.9 355.02,-368.53 355.17,-365.04 355.17,-365.04 355.17,-365.04 355.02,-368.53 358.32,-365.18 354.86,-372.03 354.86,-372.03\"/>\n",
"<text text-anchor=\"start\" x=\"625.03\" y=\"-109.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"641.53\" y=\"-94.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;9 -->\n",
"<g id=\"edge33\" class=\"edge\">\n",
"<title>9&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M941.96,-74.66C938.91,-84.62 943.48,-94 955.67,-94 964.81,-94 969.67,-88.73 970.24,-81.89\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"969.38,-74.66 973.34,-81.24 969.8,-78.14 970.21,-81.62 970.21,-81.62 970.21,-81.62 969.8,-78.14 967.08,-81.99 969.38,-74.66 969.38,-74.66\"/>\n",
"<text text-anchor=\"start\" x=\"929.17\" y=\"-112.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"947.67\" y=\"-97.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;4 -->\n",
"<g id=\"edge38\" class=\"edge\">\n",
"<title>10&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M630.03,-265.69C597.4,-245.61 527.85,-210.23 472.89,-233 414.5,-257.19 378.54,-328.4 363.08,-366.04\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"360.44,-372.66 360.11,-364.99 361.74,-369.41 363.04,-366.16 363.04,-366.16 363.04,-366.16 361.74,-369.41 365.96,-367.33 360.44,-372.66 360.44,-372.66\"/>\n",
"<text text-anchor=\"start\" x=\"474.89\" y=\"-251.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"493.39\" y=\"-236.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;5 -->\n",
"<g id=\"edge36\" class=\"edge\">\n",
"<title>10&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M673.38,-286.26C699.95,-295.99 741,-311.4 747.18,-316 761.57,-326.7 774.01,-342.6 782.83,-355.75\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"786.86,-361.95 780.4,-357.79 784.95,-359.01 783.04,-356.08 783.04,-356.08 783.04,-356.08 784.95,-359.01 785.68,-354.36 786.86,-361.95 786.86,-361.95\"/>\n",
"<text text-anchor=\"start\" x=\"694.18\" y=\"-334.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"712.68\" y=\"-319.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;6 -->\n",
"<g id=\"edge39\" class=\"edge\">\n",
"<title>10&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M675.92,-274.19C722.23,-268.08 823.22,-258.62 905.18,-278 974.15,-294.31 1046.41,-338.06 1082.81,-362.28\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1088.76,-366.28 1081.2,-364.99 1085.86,-364.33 1082.95,-362.38 1082.95,-362.38 1082.95,-362.38 1085.86,-364.33 1084.71,-359.76 1088.76,-366.28 1088.76,-366.28\"/>\n",
"<text text-anchor=\"start\" x=\"848.18\" y=\"-296.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"868.68\" y=\"-281.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;7 -->\n",
"<g id=\"edge37\" class=\"edge\">\n",
"<title>10&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M673.45,-269.91C680.08,-267.77 687.37,-265.61 694.18,-264 739.05,-253.37 750.57,-248 796.68,-248 796.68,-248 796.68,-248 1108.82,-248 1148.22,-248 1192.93,-239.53 1222,-232.87\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1229.04,-231.22 1222.95,-235.89 1225.64,-232.02 1222.23,-232.82 1222.23,-232.82 1222.23,-232.82 1225.64,-232.02 1221.51,-229.75 1229.04,-231.22 1229.04,-231.22\"/>\n",
"<text text-anchor=\"start\" x=\"927.17\" y=\"-266.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"947.67\" y=\"-251.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa2681f96f0> >"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p1 = spot.zielonka_tree_transform(a1)\n",
"p1.copy_state_names_from(a1)\n",
"p1"
]
},
{
"cell_type": "markdown",
"id": "ea452913",
"metadata": {},
"source": [
"Here the parity automaton output has as many proprities as there are levels in the Zielonka tree.\n",
"\n",
"The call to `copy_state_names_from()` above causes the states to be labeled by strings of the form `orig#leaf` when `orig` is the original state number, and `leaf` is a leaf of the Zielonka tree.\n",
"\n",
"Since this notebook is part of our test-suite, let us also make sure those automata are equivalent. "
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "934e5cd5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"spot.are_equivalent(p1, a1)"
]
},
{
"cell_type": "markdown",
"id": "da8d9e97",
"metadata": {},
"source": [
"Note that `a1` above was generated as a so-called \"colored\" automaton, i.e., each edge has exactly one color. But the transformation also works when edges have arbitrary and possibly empty subsets of colors. In that case, reading a transition without color may emit a level that is not in the Zielonka tree, as if an additional imaginary layer labeled with the empty set was below the tree: we do not store this level for simplicity, but the `step()` function is aware of that."
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "87eb80e1",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"492pt\" height=\"181pt\"\n",
" viewBox=\"0.00 0.00 492.00 181.06\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 177.06)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-177.06 488,-177.06 488,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"8\" y=\"-158.86\" font-family=\"Lato\" font-size=\"14.00\">(Fin(</text>\n",
"<text text-anchor=\"start\" x=\"35\" y=\"-158.86\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"51\" y=\"-158.86\" font-family=\"Lato\" font-size=\"14.00\">) &amp; Inf(</text>\n",
"<text text-anchor=\"start\" x=\"93\" y=\"-158.86\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"109\" y=\"-158.86\" font-family=\"Lato\" font-size=\"14.00\">) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"155\" y=\"-158.86\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"171\" y=\"-158.86\" font-family=\"Lato\" font-size=\"14.00\">) | Fin(</text>\n",
"<text text-anchor=\"start\" x=\"209\" y=\"-158.86\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"225\" y=\"-158.86\" font-family=\"Lato\" font-size=\"14.00\">))) | ((Inf(</text>\n",
"<text text-anchor=\"start\" x=\"276\" y=\"-158.86\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"292\" y=\"-158.86\" font-family=\"Lato\" font-size=\"14.00\">) | Fin(</text>\n",
"<text text-anchor=\"start\" x=\"330\" y=\"-158.86\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"346\" y=\"-158.86\" font-family=\"Lato\" font-size=\"14.00\">)) &amp; Fin(</text>\n",
"<text text-anchor=\"start\" x=\"394\" y=\"-158.86\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"410\" y=\"-158.86\" font-family=\"Lato\" font-size=\"14.00\">) &amp; Inf(</text>\n",
"<text text-anchor=\"start\" x=\"452\" y=\"-158.86\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"468\" y=\"-158.86\" font-family=\"Lato\" font-size=\"14.00\">))</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"119.25\" cy=\"-39.06\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"119.25\" y=\"-35.36\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M64.4,-39.06C66.04,-39.06 80.4,-39.06 93.88,-39.06\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"101.19,-39.06 94.19,-42.21 97.69,-39.06 94.19,-39.06 94.19,-39.06 94.19,-39.06 97.69,-39.06 94.19,-35.91 101.19,-39.06 101.19,-39.06\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M112.87,-56.1C111.57,-65.92 113.7,-75.06 119.25,-75.06 123.42,-75.06 125.65,-69.92 125.96,-63.2\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"125.63,-56.1 129.1,-62.94 125.79,-59.6 125.96,-63.09 125.96,-63.09 125.96,-63.09 125.79,-59.6 122.81,-63.24 125.63,-56.1 125.63,-56.1\"/>\n",
"<text text-anchor=\"start\" x=\"90.75\" y=\"-93.86\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"111.25\" y=\"-78.86\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"254.75\" cy=\"-99.06\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"254.75\" y=\"-95.36\" font-family=\"Lato\" font-size=\"14.00\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M127.63,-55.19C133.5,-66.08 142.8,-79.75 155.25,-87.06 177.97,-100.41 208.71,-102.09 229.77,-101.28\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"236.79,-100.91 229.96,-104.42 233.29,-101.09 229.8,-101.28 229.8,-101.28 229.8,-101.28 233.29,-101.09 229.63,-98.13 236.79,-100.91 236.79,-100.91\"/>\n",
"<text text-anchor=\"start\" x=\"155.25\" y=\"-118.86\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"173.75\" y=\"-103.86\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"394.25\" cy=\"-39.06\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"394.25\" y=\"-35.36\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M137.33,-37.89C143.03,-37.55 149.41,-37.23 155.25,-37.06 245.44,-34.49 268.06,-34.49 358.25,-37.06 361.72,-37.16 365.38,-37.31 368.97,-37.49\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"376.17,-37.89 369.01,-40.65 372.67,-37.7 369.18,-37.51 369.18,-37.51 369.18,-37.51 372.67,-37.7 369.35,-34.36 376.17,-37.89 376.17,-37.89\"/>\n",
"<text text-anchor=\"start\" x=\"226.25\" y=\"-53.86\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"246.75\" y=\"-38.86\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;0 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>2&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M243.51,-84.59C235.24,-74.08 222.64,-60.45 208.25,-53.06 188.5,-42.92 163.24,-39.75 144.86,-38.92\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"137.43,-38.7 144.52,-35.76 140.93,-38.8 144.43,-38.91 144.43,-38.91 144.43,-38.91 140.93,-38.8 144.33,-42.06 137.43,-38.7 137.43,-38.7\"/>\n",
"<text text-anchor=\"start\" x=\"155.25\" y=\"-71.86\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"173.75\" y=\"-56.86\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>2&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M242.99,-113.1C238.6,-123.97 242.52,-135.06 254.75,-135.06 264.31,-135.06 268.79,-128.29 268.2,-120.15\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"266.51,-113.1 271.2,-119.17 267.32,-116.51 268.14,-119.91 268.14,-119.91 268.14,-119.91 267.32,-116.51 265.08,-120.65 266.51,-113.1 266.51,-113.1\"/>\n",
"<text text-anchor=\"start\" x=\"230.25\" y=\"-138.86\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>2&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M272.65,-101.03C294.09,-102.68 331.49,-102.7 358.25,-87.06 368.48,-81.09 376.57,-70.81 382.39,-61.3\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"385.88,-55.21 385.13,-62.85 384.14,-58.25 382.4,-61.28 382.4,-61.28 382.4,-61.28 384.14,-58.25 379.67,-59.71 385.88,-55.21 385.88,-55.21\"/>\n",
"<text text-anchor=\"start\" x=\"305.25\" y=\"-118.86\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"313.75\" y=\"-104.86\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"329.75\" y=\"-104.86\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>1&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M377.61,-32.19C356.63,-23.39 317.98,-8.6 283.25,-3.06 258.23,0.93 251.24,1.07 226.25,-3.06 196.45,-7.98 163.76,-20.2 142.68,-29.04\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"135.99,-31.89 141.19,-26.25 139.21,-30.52 142.43,-29.14 142.43,-29.14 142.43,-29.14 139.21,-30.52 143.67,-32.04 135.99,-31.89 135.99,-31.89\"/>\n",
"<text text-anchor=\"start\" x=\"230.25\" y=\"-20.86\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"238.75\" y=\"-6.86\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"254.75\" y=\"-6.86\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>1&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M376.07,-39.64C356.88,-40.9 325.35,-44.84 301.25,-57.06 290.34,-62.59 280.15,-71.5 272.18,-79.69\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"267.04,-85.2 269.52,-77.93 269.43,-82.64 271.82,-80.08 271.82,-80.08 271.82,-80.08 269.43,-82.64 274.12,-82.23 267.04,-85.2 267.04,-85.2\"/>\n",
"<text text-anchor=\"start\" x=\"301.25\" y=\"-75.86\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"321.75\" y=\"-60.86\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M383.54,-53.85C380.06,-64.48 383.62,-75.06 394.25,-75.06 402.38,-75.06 406.38,-68.86 406.25,-61.18\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"404.96,-53.85 409.27,-60.2 405.56,-57.3 406.17,-60.75 406.17,-60.75 406.17,-60.75 405.56,-57.3 403.07,-61.29 404.96,-53.85 404.96,-53.85\"/>\n",
"<text text-anchor=\"start\" x=\"367.75\" y=\"-93.86\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"386.25\" y=\"-78.86\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa2681f98d0> >"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a2 = spot.automaton(\"randaut -Q3 -e.8 --seed=4 -A '{}' 2 |\".format(c.get_acceptance()))\n",
"a2"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "201acd7e",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"520pt\" height=\"360pt\"\n",
" viewBox=\"0.00 0.00 520.25 360.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(0.4310344827586207 0.4310344827586207) rotate(0) translate(4 830)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-830 1201.25,-830 1201.25,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"453.13\" y=\"-811.8\" font-family=\"Lato\" font-size=\"14.00\">Fin(</text>\n",
"<text text-anchor=\"start\" x=\"476.13\" y=\"-811.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"492.13\" y=\"-811.8\" font-family=\"Lato\" font-size=\"14.00\">) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"538.13\" y=\"-811.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"554.13\" y=\"-811.8\" font-family=\"Lato\" font-size=\"14.00\">) | (Fin(</text>\n",
"<text text-anchor=\"start\" x=\"596.13\" y=\"-811.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"612.13\" y=\"-811.8\" font-family=\"Lato\" font-size=\"14.00\">) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"658.13\" y=\"-811.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"674.13\" y=\"-811.8\" font-family=\"Lato\" font-size=\"14.00\">) | Fin(</text>\n",
"<text text-anchor=\"start\" x=\"712.13\" y=\"-811.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"<text text-anchor=\"start\" x=\"728.13\" y=\"-811.8\" font-family=\"Lato\" font-size=\"14.00\">))))</text>\n",
"<text text-anchor=\"start\" x=\"544.63\" y=\"-797.8\" font-family=\"Lato\" font-size=\"14.00\">[parity min odd 5]</text>\n",
"<!-- I -->\n",
"<!-- 6 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"70.5\" cy=\"-252\" rx=\"32.49\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"53.5\" y=\"-248.3\" font-family=\"Lato\" font-size=\"14.00\">0#11</text>\n",
"</g>\n",
"<!-- I&#45;&gt;6 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.05,-252C1.97,-252 15.51,-252 30.31,-252\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.63,-252 30.63,-255.15 34.13,-252 30.63,-252 30.63,-252 30.63,-252 34.13,-252 30.63,-248.85 37.63,-252 37.63,-252\"/>\n",
"</g>\n",
"<!-- 6&#45;&gt;6 -->\n",
"<g id=\"edge22\" class=\"edge\">\n",
"<title>6&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M61.57,-269.41C59.9,-279.09 62.88,-288 70.5,-288 76.09,-288 79.18,-283.19 79.77,-276.81\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"79.42,-269.41 82.9,-276.26 79.59,-272.91 79.75,-276.4 79.75,-276.4 79.75,-276.4 79.59,-272.91 76.6,-276.55 79.42,-269.41 79.42,-269.41\"/>\n",
"<text text-anchor=\"start\" x=\"42\" y=\"-306.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"62.5\" y=\"-291.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"228.49\" cy=\"-367\" rx=\"32.49\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"211.49\" y=\"-363.3\" font-family=\"Lato\" font-size=\"14.00\">1#10</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;1 -->\n",
"<g id=\"edge21\" class=\"edge\">\n",
"<title>6&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M75.96,-269.75C82.28,-291.06 95.96,-326.25 120.99,-345 140.27,-359.44 166.79,-364.95 188.54,-366.84\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"195.71,-367.36 188.5,-370 192.22,-367.11 188.73,-366.86 188.73,-366.86 188.73,-366.86 192.22,-367.11 188.95,-363.72 195.71,-367.36 195.71,-367.36\"/>\n",
"<text text-anchor=\"start\" x=\"120.99\" y=\"-383.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"141.49\" y=\"-368.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>10</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1018.46\" cy=\"-85\" rx=\"32.49\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"1001.46\" y=\"-81.3\" font-family=\"Lato\" font-size=\"14.00\">2#11</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;10 -->\n",
"<g id=\"edge20\" class=\"edge\">\n",
"<title>6&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M71.12,-233.76C71.27,-195.7 76.71,-106.81 120.99,-52 154.1,-11.03 174.82,0 227.49,0 227.49,0 227.49,0 861.47,0 915.25,0 968.14,-39.44 996.4,-64.59\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1001.72,-69.41 994.42,-67.04 999.13,-67.06 996.53,-64.71 996.53,-64.71 996.53,-64.71 999.13,-67.06 998.65,-62.37 1001.72,-69.41 1001.72,-69.41\"/>\n",
"<text text-anchor=\"start\" x=\"517.98\" y=\"-18.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"536.48\" y=\"-3.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1170.61\" cy=\"-465\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"1158.11\" y=\"-461.3\" font-family=\"Lato\" font-size=\"14.00\">1#8</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"702.47\" cy=\"-417\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"689.97\" y=\"-413.3\" font-family=\"Lato\" font-size=\"14.00\">1#7</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1151.6,-452.1C1143.99,-447.12 1134.83,-441.73 1125.96,-438 1059.29,-409.97 1039.76,-407.73 967.97,-399 884.36,-388.83 785.13,-402.4 735.33,-410.96\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"728.35,-412.19 734.7,-407.88 731.8,-411.58 735.25,-410.98 735.25,-410.98 735.25,-410.98 731.8,-411.58 735.79,-414.08 728.35,-412.19 728.35,-412.19\"/>\n",
"<text text-anchor=\"start\" x=\"912.97\" y=\"-417.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"931.47\" y=\"-402.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"860.47\" cy=\"-435\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"847.97\" y=\"-431.3\" font-family=\"Lato\" font-size=\"14.00\">2#8</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;3 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1146.75,-456.64C1140.12,-454.5 1132.82,-452.4 1125.96,-451 1043.91,-434.22 944.8,-433.21 894.39,-434.03\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"887.31,-434.17 894.25,-430.89 890.81,-434.1 894.31,-434.03 894.31,-434.03 894.31,-434.03 890.81,-434.1 894.37,-437.18 887.31,-434.17 887.31,-434.17\"/>\n",
"<text text-anchor=\"start\" x=\"989.96\" y=\"-457.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1010.46\" y=\"-442.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>4</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1018.46\" cy=\"-562\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"1005.96\" y=\"-558.3\" font-family=\"Lato\" font-size=\"14.00\">0#9</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;4 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>0&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1145.43,-471.06C1119.61,-477.89 1080.81,-489.31 1068.96,-499 1056.62,-509.08 1060.62,-517.33 1050.96,-530 1047.71,-534.26 1043.93,-538.54 1040.15,-542.52\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1035.03,-547.74 1037.68,-540.54 1037.48,-545.24 1039.93,-542.74 1039.93,-542.74 1039.93,-542.74 1037.48,-545.24 1042.18,-544.95 1035.03,-547.74 1035.03,-547.74\"/>\n",
"<text text-anchor=\"start\" x=\"1072.96\" y=\"-517.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1089.46\" y=\"-502.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>2&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M689.01,-432.92C685.49,-443.15 689.98,-453 702.47,-453 712.04,-453 716.91,-447.23 717.09,-439.93\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"715.94,-432.92 720.19,-439.31 716.51,-436.37 717.08,-439.82 717.08,-439.82 717.08,-439.82 716.51,-436.37 713.97,-440.33 715.94,-432.92 715.94,-432.92\"/>\n",
"<text text-anchor=\"start\" x=\"675.97\" y=\"-471.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"694.47\" y=\"-456.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>2&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M729.07,-414.96C750.77,-413.77 782.64,-413.3 809.97,-418 816.68,-419.15 823.7,-421.09 830.27,-423.24\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"837.2,-425.65 829.55,-426.33 833.89,-424.5 830.59,-423.35 830.59,-423.35 830.59,-423.35 833.89,-424.5 831.62,-420.38 837.2,-425.65 837.2,-425.65\"/>\n",
"<text text-anchor=\"start\" x=\"752.97\" y=\"-436.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"773.47\" y=\"-421.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>7</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"860.47\" cy=\"-547\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"847.97\" y=\"-543.3\" font-family=\"Lato\" font-size=\"14.00\">0#8</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;7 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>2&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M719.87,-430.67C748,-454.11 805.49,-502.01 837.21,-528.45\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"842.82,-533.13 835.43,-531.06 840.13,-530.88 837.44,-528.64 837.44,-528.64 837.44,-528.64 840.13,-530.88 839.46,-526.22 842.82,-533.13 842.82,-533.13\"/>\n",
"<text text-anchor=\"start\" x=\"756.97\" y=\"-522.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"773.47\" y=\"-507.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>3&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M847,-450.92C843.49,-461.15 847.98,-471 860.47,-471 870.03,-471 874.91,-465.23 875.09,-457.93\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"873.94,-450.92 878.18,-457.31 874.5,-454.37 875.07,-457.82 875.07,-457.82 875.07,-457.82 874.5,-454.37 871.96,-458.33 873.94,-450.92 873.94,-450.92\"/>\n",
"<text text-anchor=\"start\" x=\"835.97\" y=\"-489.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"852.47\" y=\"-474.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;4 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>3&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M879.15,-447.92C900.57,-463.73 937.55,-491.54 967.97,-517 977.7,-525.15 988.15,-534.54 996.92,-542.63\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1002.15,-547.48 994.87,-545.03 999.58,-545.1 997.01,-542.72 997.01,-542.72 997.01,-542.72 999.58,-545.1 999.16,-540.41 1002.15,-547.48 1002.15,-547.48\"/>\n",
"<text text-anchor=\"start\" x=\"912.97\" y=\"-535.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"931.47\" y=\"-520.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;1 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>3&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M851.54,-452.18C843.42,-467.68 829.26,-489.72 809.97,-501 768.76,-525.09 751.21,-515 703.47,-515 385.49,-515 385.49,-515 385.49,-515 314.26,-515 262.55,-432.79 240.83,-390.91\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"237.61,-384.56 243.59,-389.37 239.19,-387.68 240.78,-390.8 240.78,-390.8 240.78,-390.8 239.19,-387.68 237.97,-392.23 237.61,-384.56 237.61,-384.56\"/>\n",
"<text text-anchor=\"start\" x=\"519.98\" y=\"-533.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"536.48\" y=\"-518.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;0 -->\n",
"<g id=\"edge15\" class=\"edge\">\n",
"<title>4&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1043.93,-556.41C1071.1,-549.85 1112.88,-538.66 1125.96,-529 1140.09,-518.56 1151.16,-502.11 1158.62,-488.5\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1161.99,-482.09 1161.52,-489.75 1160.36,-485.19 1158.73,-488.29 1158.73,-488.29 1158.73,-488.29 1160.36,-485.19 1155.95,-486.82 1161.99,-482.09 1161.99,-482.09\"/>\n",
"<text text-anchor=\"start\" x=\"1068.96\" y=\"-567.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1089.46\" y=\"-552.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;4 -->\n",
"<g id=\"edge16\" class=\"edge\">\n",
"<title>4&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1004.99,-577.92C1001.48,-588.15 1005.97,-598 1018.46,-598 1028.03,-598 1032.9,-592.23 1033.08,-584.93\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1031.93,-577.92 1036.17,-584.31 1032.5,-581.37 1033.07,-584.82 1033.07,-584.82 1033.07,-584.82 1032.5,-581.37 1029.96,-585.33 1031.93,-577.92 1031.93,-577.92\"/>\n",
"<text text-anchor=\"start\" x=\"989.96\" y=\"-616.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1010.46\" y=\"-601.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1170.61\" cy=\"-679\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"1158.11\" y=\"-675.3\" font-family=\"Lato\" font-size=\"14.00\">2#9</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;8 -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>4&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1041.64,-570.96C1050.18,-574.41 1060.02,-578.39 1068.96,-582 1094.29,-592.23 1105.26,-587.18 1125.96,-605 1141.59,-618.45 1153.07,-638.96 1160.32,-654.97\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1163.17,-661.53 1157.49,-656.36 1161.77,-658.32 1160.38,-655.11 1160.38,-655.11 1160.38,-655.11 1161.77,-658.32 1163.27,-653.85 1163.17,-661.53 1163.17,-661.53\"/>\n",
"<text text-anchor=\"start\" x=\"1070.96\" y=\"-623.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1089.46\" y=\"-608.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;6 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>1&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M214.71,-350.2C205.49,-339.02 192.22,-324.67 177.99,-315 155.4,-299.65 144.54,-305.85 120.99,-292 111.4,-286.36 101.69,-278.96 93.44,-272.06\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"87.99,-267.4 95.35,-269.55 90.65,-269.67 93.31,-271.95 93.31,-271.95 93.31,-271.95 90.65,-269.67 91.26,-274.34 87.99,-267.4 87.99,-267.4\"/>\n",
"<text text-anchor=\"start\" x=\"124.99\" y=\"-333.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"141.49\" y=\"-318.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>1&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M260.37,-370.83C266.54,-371.57 272.97,-372.32 278.99,-373 423.93,-389.33 597.11,-406.69 668.36,-413.74\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"675.74,-414.47 668.46,-416.92 672.26,-414.13 668.77,-413.78 668.77,-413.78 668.77,-413.78 672.26,-414.13 669.08,-410.65 675.74,-414.47 675.74,-414.47\"/>\n",
"<text text-anchor=\"start\" x=\"438.98\" y=\"-413.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"457.48\" y=\"-398.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>5</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"386.49\" cy=\"-187\" rx=\"32.49\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"369.49\" y=\"-183.3\" font-family=\"Lato\" font-size=\"14.00\">2#10</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;5 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>1&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M243.61,-350.71C271.8,-318.18 335.07,-245.18 366.71,-208.66\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"371.51,-203.12 369.31,-210.48 369.22,-205.77 366.93,-208.41 366.93,-208.41 366.93,-208.41 369.22,-205.77 364.55,-206.35 371.51,-203.12 371.51,-203.12\"/>\n",
"<text text-anchor=\"start\" x=\"278.99\" y=\"-326.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"299.49\" y=\"-311.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;6 -->\n",
"<g id=\"edge19\" class=\"edge\">\n",
"<title>5&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M355.86,-193.13C298.24,-205.06 171.22,-231.36 108.3,-244.38\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"101.32,-245.83 107.54,-241.32 104.75,-245.12 108.17,-244.41 108.17,-244.41 108.17,-244.41 104.75,-245.12 108.81,-247.49 101.32,-245.83 101.32,-245.83\"/>\n",
"<text text-anchor=\"start\" x=\"201.99\" y=\"-244.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"220.49\" y=\"-229.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;5 -->\n",
"<g id=\"edge18\" class=\"edge\">\n",
"<title>5&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M372.77,-203.66C369.73,-213.62 374.3,-223 386.49,-223 395.63,-223 400.48,-217.73 401.05,-210.89\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"400.2,-203.66 404.15,-210.24 400.61,-207.14 401.02,-210.62 401.02,-210.62 401.02,-210.62 400.61,-207.14 397.89,-210.99 400.2,-203.66 400.2,-203.66\"/>\n",
"<text text-anchor=\"start\" x=\"361.99\" y=\"-241.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"378.49\" y=\"-226.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 9 -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>9</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"544.48\" cy=\"-184\" rx=\"32.49\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"527.48\" y=\"-180.3\" font-family=\"Lato\" font-size=\"14.00\">1#12</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;9 -->\n",
"<g id=\"edge17\" class=\"edge\">\n",
"<title>5&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M419.05,-186.39C443.79,-185.92 478.33,-185.25 504.74,-184.75\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"511.96,-184.61 505.02,-187.89 508.46,-184.67 504.96,-184.74 504.96,-184.74 504.96,-184.74 508.46,-184.67 504.9,-181.59 511.96,-184.61 511.96,-184.61\"/>\n",
"<text text-anchor=\"start\" x=\"440.98\" y=\"-205.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"457.48\" y=\"-190.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;0 -->\n",
"<g id=\"edge24\" class=\"edge\">\n",
"<title>7&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M883.79,-538.11C921.38,-523.5 999.98,-494.49 1068.96,-479 1091.5,-473.94 1117.3,-470.39 1137.15,-468.14\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1144.17,-467.36 1137.55,-471.26 1140.69,-467.75 1137.21,-468.13 1137.21,-468.13 1137.21,-468.13 1140.69,-467.75 1136.86,-465 1144.17,-467.36 1144.17,-467.36\"/>\n",
"<text text-anchor=\"start\" x=\"989.96\" y=\"-519.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1010.46\" y=\"-504.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;4 -->\n",
"<g id=\"edge25\" class=\"edge\">\n",
"<title>7&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M886.88,-549.44C913.54,-552.01 955.55,-556.05 984.69,-558.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"991.8,-559.53 984.53,-562 988.32,-559.2 984.84,-558.86 984.84,-558.86 984.84,-558.86 988.32,-559.2 985.14,-555.73 991.8,-559.53 991.8,-559.53\"/>\n",
"<text text-anchor=\"start\" x=\"910.97\" y=\"-575.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"931.47\" y=\"-560.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;8 -->\n",
"<g id=\"edge23\" class=\"edge\">\n",
"<title>7&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M875.81,-561.82C907.23,-593.03 985.97,-664.56 1068.96,-688 1091.76,-694.44 1118.52,-691.58 1138.72,-687.44\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1145.57,-685.93 1139.41,-690.51 1142.15,-686.69 1138.73,-687.44 1138.73,-687.44 1138.73,-687.44 1142.15,-686.69 1138.05,-684.36 1145.57,-685.93 1145.57,-685.93\"/>\n",
"<text text-anchor=\"start\" x=\"991.96\" y=\"-698.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1010.46\" y=\"-683.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;4 -->\n",
"<g id=\"edge28\" class=\"edge\">\n",
"<title>8&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1148.42,-668.47C1141.33,-665.03 1133.34,-661.26 1125.96,-658 1100.97,-646.96 1090.21,-652.16 1068.96,-635 1052.49,-621.7 1039.37,-601.48 1030.79,-585.68\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1027.39,-579.22 1033.44,-583.95 1029.02,-582.32 1030.65,-585.42 1030.65,-585.42 1030.65,-585.42 1029.02,-582.32 1027.86,-586.88 1027.39,-579.22 1027.39,-579.22\"/>\n",
"<text text-anchor=\"start\" x=\"1070.96\" y=\"-676.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1089.46\" y=\"-661.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;1 -->\n",
"<g id=\"edge26\" class=\"edge\">\n",
"<title>8&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1154.43,-693.86C1128.85,-717.24 1074.55,-760 1019.46,-760 385.49,-760 385.49,-760 385.49,-760 305.95,-760 249.3,-478.44 233.77,-391.96\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"232.52,-384.91 236.84,-391.25 233.13,-388.35 233.74,-391.8 233.74,-391.8 233.74,-391.8 233.13,-388.35 230.64,-392.35 232.52,-384.91 232.52,-384.91\"/>\n",
"<text text-anchor=\"start\" x=\"677.97\" y=\"-778.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"694.47\" y=\"-763.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;8 -->\n",
"<g id=\"edge27\" class=\"edge\">\n",
"<title>8&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1158.06,-695.29C1155.03,-705.39 1159.22,-715 1170.61,-715 1179.15,-715 1183.64,-709.59 1184.07,-702.63\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1183.15,-695.29 1187.15,-701.85 1183.59,-698.76 1184.02,-702.24 1184.02,-702.24 1184.02,-702.24 1183.59,-698.76 1180.9,-702.63 1183.15,-695.29 1183.15,-695.29\"/>\n",
"<text text-anchor=\"start\" x=\"1146.11\" y=\"-733.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1162.61\" y=\"-718.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;2 -->\n",
"<g id=\"edge29\" class=\"edge\">\n",
"<title>9&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M556.7,-200.76C584.31,-242 655.57,-348.44 686.63,-394.83\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"690.56,-400.71 684.05,-396.64 688.62,-397.8 686.67,-394.89 686.67,-394.89 686.67,-394.89 688.62,-397.8 689.29,-393.14 690.56,-400.71 690.56,-400.71\"/>\n",
"<text text-anchor=\"start\" x=\"596.98\" y=\"-359.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"615.48\" y=\"-344.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 11 -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>11</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"702.47\" cy=\"-216\" rx=\"32.49\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"685.47\" y=\"-212.3\" font-family=\"Lato\" font-size=\"14.00\">2#12</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;11 -->\n",
"<g id=\"edge30\" class=\"edge\">\n",
"<title>9&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M575.97,-179.49C597.63,-177.36 627.15,-176.67 651.98,-184 661.21,-186.72 670.33,-191.76 678.19,-197.05\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"683.93,-201.11 676.39,-199.64 681.07,-199.09 678.21,-197.07 678.21,-197.07 678.21,-197.07 681.07,-199.09 680.03,-194.5 683.93,-201.11 683.93,-201.11\"/>\n",
"<text text-anchor=\"start\" x=\"594.98\" y=\"-202.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"615.48\" y=\"-187.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 12 -->\n",
"<g id=\"node14\" class=\"node\">\n",
"<title>12</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"860.47\" cy=\"-216\" rx=\"32.49\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"843.47\" y=\"-212.3\" font-family=\"Lato\" font-size=\"14.00\">0#10</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;12 -->\n",
"<g id=\"edge31\" class=\"edge\">\n",
"<title>9&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M572.4,-174.65C609.36,-163.13 677.75,-146.52 734.97,-159 770.15,-166.67 807.28,-185.22 831.74,-199.09\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"837.99,-202.68 830.35,-201.92 834.95,-200.93 831.92,-199.19 831.92,-199.19 831.92,-199.19 834.95,-200.93 833.49,-196.46 837.99,-202.68 837.99,-202.68\"/>\n",
"<text text-anchor=\"start\" x=\"677.97\" y=\"-177.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"694.47\" y=\"-162.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;6 -->\n",
"<g id=\"edge34\" class=\"edge\">\n",
"<title>10&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M987.69,-79.2C956.39,-73.61 905.67,-66 861.47,-66 227.49,-66 227.49,-66 227.49,-66 144.17,-66 96.51,-176.93 79.12,-227.46\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"76.87,-234.17 76.11,-226.53 77.98,-230.85 79.09,-227.53 79.09,-227.53 79.09,-227.53 77.98,-230.85 82.08,-228.53 76.87,-234.17 76.87,-234.17\"/>\n",
"<text text-anchor=\"start\" x=\"517.98\" y=\"-84.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"536.48\" y=\"-69.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;9 -->\n",
"<g id=\"edge32\" class=\"edge\">\n",
"<title>10&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M985.95,-86.06C914.3,-89.35 734.61,-102.49 594.98,-154 586.73,-157.04 578.34,-161.51 570.86,-166.07\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"564.82,-169.9 569.05,-163.49 567.78,-168.03 570.74,-166.15 570.74,-166.15 570.74,-166.15 567.78,-168.03 572.42,-168.81 564.82,-169.9 564.82,-169.9\"/>\n",
"<text text-anchor=\"start\" x=\"756.97\" y=\"-130.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"773.47\" y=\"-115.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;10 -->\n",
"<g id=\"edge33\" class=\"edge\">\n",
"<title>10&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1004.75,-101.66C1001.7,-111.62 1006.28,-121 1018.46,-121 1027.6,-121 1032.46,-115.73 1033.03,-108.89\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1032.17,-101.66 1036.13,-108.24 1032.59,-105.14 1033,-108.62 1033,-108.62 1033,-108.62 1032.59,-105.14 1029.87,-108.99 1032.17,-101.66 1032.17,-101.66\"/>\n",
"<text text-anchor=\"start\" x=\"993.96\" y=\"-139.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1010.46\" y=\"-124.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;9 -->\n",
"<g id=\"edge35\" class=\"edge\">\n",
"<title>11&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M670.54,-219.61C648.94,-221.12 619.67,-221.15 594.98,-214 586.38,-211.51 577.77,-207.12 570.21,-202.46\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"564.12,-198.51 571.7,-199.67 567.05,-200.41 569.99,-202.32 569.99,-202.32 569.99,-202.32 567.05,-200.41 568.28,-204.96 564.12,-198.51 564.12,-198.51\"/>\n",
"<text text-anchor=\"start\" x=\"598.98\" y=\"-239.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"615.48\" y=\"-224.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;11 -->\n",
"<g id=\"edge36\" class=\"edge\">\n",
"<title>11&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M688.76,-232.66C685.72,-242.62 690.29,-252 702.47,-252 711.61,-252 716.47,-246.73 717.04,-239.89\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"716.18,-232.66 720.14,-239.24 716.6,-236.14 717.01,-239.62 717.01,-239.62 717.01,-239.62 716.6,-236.14 713.88,-239.99 716.18,-232.66 716.18,-232.66\"/>\n",
"<text text-anchor=\"start\" x=\"677.97\" y=\"-270.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"694.47\" y=\"-255.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;12 -->\n",
"<g id=\"edge37\" class=\"edge\">\n",
"<title>11&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M735.04,-216C759.78,-216 794.32,-216 820.73,-216\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"827.95,-216 820.95,-219.15 824.45,-216 820.95,-216 820.95,-216 820.95,-216 824.45,-216 820.95,-212.85 827.95,-216 827.95,-216\"/>\n",
"<text text-anchor=\"start\" x=\"754.97\" y=\"-234.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"773.47\" y=\"-219.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;6 -->\n",
"<g id=\"edge40\" class=\"edge\">\n",
"<title>12&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M842.03,-231.13C819.25,-249.74 777.27,-280.19 734.97,-291 694.12,-301.44 587.65,-281 545.48,-281 227.49,-281 227.49,-281 227.49,-281 185.24,-281 137.61,-270.59 106.22,-262.24\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"99.39,-260.39 106.97,-259.18 102.77,-261.3 106.14,-262.22 106.14,-262.22 106.14,-262.22 102.77,-261.3 105.32,-265.26 99.39,-260.39 99.39,-260.39\"/>\n",
"<text text-anchor=\"start\" x=\"436.98\" y=\"-299.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"457.48\" y=\"-284.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;1 -->\n",
"<g id=\"edge39\" class=\"edge\">\n",
"<title>12&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M855.92,-233.96C850.28,-257.84 837.04,-299.81 809.97,-324 772.82,-357.2 753.3,-359 703.47,-359 385.49,-359 385.49,-359 385.49,-359 345.44,-359 299.69,-361.66 268.14,-363.91\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"260.84,-364.45 267.59,-360.8 264.33,-364.19 267.82,-363.94 267.82,-363.94 267.82,-363.94 264.33,-364.19 268.05,-367.08 260.84,-364.45 260.84,-364.45\"/>\n",
"<text text-anchor=\"start\" x=\"515.98\" y=\"-377.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"536.48\" y=\"-362.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;10 -->\n",
"<g id=\"edge38\" class=\"edge\">\n",
"<title>12&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M879.06,-201.23C907.26,-177.54 962.62,-131.05 994.11,-104.61\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"999.7,-99.92 996.36,-106.83 997.02,-102.17 994.34,-104.42 994.34,-104.42 994.34,-104.42 997.02,-102.17 992.31,-102.01 999.7,-99.92 999.7,-99.92\"/>\n",
"<text text-anchor=\"start\" x=\"912.97\" y=\"-192.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"931.47\" y=\"-177.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa268204300> >"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p2 = spot.zielonka_tree_transform(a2)\n",
"p2.copy_state_names_from(a2)\n",
"p2"
]
},
{
"cell_type": "markdown",
"id": "9bf70138",
"metadata": {},
"source": [
"The shape of the Zielonka tree (and later of the ACD), can also tell us if the acceptance condition can be converted into Rabin/Streett/parity without changing the automaton structure. This follows from the following properties:\n",
"\n",
"- an automaton is Rabin-type iff the union of any two accepting cycle is necessarily accepting\n",
"- an automaton is Streett-type iff the union of two rejecting cycle is necessarily rejecting\n",
"- an automaton is parity-type iff it is Rabin-type and Streett-type\n",
"\n",
"Here, X-type means that the acceptance condition of the automaton can be changed into X without changing the transition structure (just by coloring it differently). The Zielonka tree does not really look at the automaton, however its shape can still implies some typeness:\n",
"\n",
"- an automaton is Rabin-type if (not iff) accepting nodes of the Zielonka tree have at most one child\n",
"- an automaton is Street-type if (not iff) rejecting nodes of the Zielonka tree have at most one child\n",
"\n",
"The following methods provide this information:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "25ae5666",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(False, False, False)"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"t.has_rabin_shape(), t.has_streett_shape(), t.has_parity_shape()"
]
},
{
"cell_type": "markdown",
"id": "147a71a6",
"metadata": {},
"source": [
"Let's look at some examples:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "e24c005d",
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(Fin(0) & Inf(1)) | (Fin(2) & Inf(3)) | (Fin(4) & Inf(5)) : True False False\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Title: zielonka_tree Pages: 1 -->\n",
"<svg width=\"650pt\" height=\"422pt\"\n",
" viewBox=\"0.00 0.00 650.29 421.74\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 417.74)\">\n",
"<title>zielonka_tree</title>\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-417.74 646.29,-417.74 646.29,4 -4,4\"/>\n",
"<!-- 0 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>0</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"381.65,-413.74 270.65,-413.74 270.65,-377.74 381.65,-377.74 381.65,-413.74\"/>\n",
"<text text-anchor=\"middle\" x=\"326.15\" y=\"-392.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3,4,5}</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"161.15\" cy=\"-323.74\" rx=\"63.89\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"161.15\" y=\"-320.04\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2,3,4,5}</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M285.78,-377.62C261.08,-367.14 229.49,-353.73 204.29,-343.04\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"205.55,-339.78 194.97,-339.09 202.81,-346.22 205.55,-339.78\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"326.15\" cy=\"-323.74\" rx=\"63.89\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"326.15\" y=\"-320.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,3,4,5}</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M326.15,-377.44C326.15,-369.72 326.15,-360.45 326.15,-351.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"329.65,-351.84 326.15,-341.84 322.65,-351.84 329.65,-351.84\"/>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"481.15\" cy=\"-323.74\" rx=\"63.89\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"481.15\" y=\"-320.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3,5}</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;3 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M364.06,-377.62C386.91,-367.3 416.02,-354.15 439.5,-343.55\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"441.18,-346.63 448.86,-339.32 438.3,-340.25 441.18,-346.63\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"198.15,-269.74 114.15,-269.74 114.15,-233.74 198.15,-233.74 198.15,-269.74\"/>\n",
"<text text-anchor=\"middle\" x=\"156.15\" y=\"-248.04\" font-family=\"Times,serif\" font-size=\"14.00\">{2,3,4,5}</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;4 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M159.91,-305.44C159.36,-297.72 158.7,-288.45 158.08,-279.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"161.57,-279.57 157.37,-269.84 154.59,-280.07 161.57,-279.57\"/>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>5</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"368.15,-269.74 284.15,-269.74 284.15,-233.74 368.15,-233.74 368.15,-269.74\"/>\n",
"<text text-anchor=\"middle\" x=\"326.15\" y=\"-248.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,4,5}</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;5 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>2&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M326.15,-305.44C326.15,-297.72 326.15,-288.45 326.15,-279.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"329.65,-279.84 326.15,-269.84 322.65,-279.84 329.65,-279.84\"/>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>6</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"528.15,-269.74 444.15,-269.74 444.15,-233.74 528.15,-233.74 528.15,-269.74\"/>\n",
"<text text-anchor=\"middle\" x=\"486.15\" y=\"-248.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3}</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;6 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>3&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M482.38,-305.44C482.93,-297.72 483.6,-288.45 484.21,-279.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"487.7,-280.07 484.92,-269.84 480.72,-279.57 487.7,-280.07\"/>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>7</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"46.15\" cy=\"-179.74\" rx=\"46.29\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"46.15\" y=\"-176.04\" font-family=\"Times,serif\" font-size=\"14.00\">{3,4,5}</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;7 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>4&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M129.24,-233.62C113.78,-223.78 94.28,-211.37 78.05,-201.05\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"79.74,-197.97 69.42,-195.55 75.98,-203.87 79.74,-197.97\"/>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"156.15\" cy=\"-179.74\" rx=\"46.29\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"156.15\" y=\"-176.04\" font-family=\"Times,serif\" font-size=\"14.00\">{2,3,5}</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;8 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>4&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M156.15,-233.44C156.15,-225.72 156.15,-216.45 156.15,-207.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"159.65,-207.84 156.15,-197.84 152.65,-207.84 159.65,-207.84\"/>\n",
"</g>\n",
"<!-- 9 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>9</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"266.15\" cy=\"-179.74\" rx=\"46.29\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"266.15\" y=\"-176.04\" font-family=\"Times,serif\" font-size=\"14.00\">{1,4,5}</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;9 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>5&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M311.31,-233.44C304.01,-224.92 295.09,-214.5 287.1,-205.19\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"289.56,-202.68 280.39,-197.36 284.24,-207.23 289.56,-202.68\"/>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>10</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"376.15\" cy=\"-179.74\" rx=\"46.29\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"376.15\" y=\"-176.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,5}</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;10 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>5&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M338.51,-233.44C344.47,-225.09 351.73,-214.92 358.28,-205.76\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"361.31,-207.53 364.27,-197.36 355.61,-203.47 361.31,-207.53\"/>\n",
"</g>\n",
"<!-- 11 -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>11</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"486.15\" cy=\"-179.74\" rx=\"46.29\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"486.15\" y=\"-176.04\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2,3}</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;11 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>6&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M486.15,-233.44C486.15,-225.72 486.15,-216.45 486.15,-207.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"489.65,-207.84 486.15,-197.84 482.65,-207.84 489.65,-207.84\"/>\n",
"</g>\n",
"<!-- 12 -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>12</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"596.15\" cy=\"-179.74\" rx=\"46.29\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"596.15\" y=\"-176.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,3}</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;12 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>6&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M513.05,-233.62C528.51,-223.78 548.01,-211.37 564.24,-201.05\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"566.31,-203.87 572.87,-195.55 562.55,-197.97 566.31,-203.87\"/>\n",
"</g>\n",
"<!-- 13 -->\n",
"<g id=\"node14\" class=\"node\">\n",
"<title>13</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"74.65,-125.74 17.65,-125.74 17.65,-89.74 74.65,-89.74 74.65,-125.74\"/>\n",
"<text text-anchor=\"middle\" x=\"46.15\" y=\"-104.04\" font-family=\"Times,serif\" font-size=\"14.00\">{4,5}</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;13 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>7&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M46.15,-161.44C46.15,-153.72 46.15,-144.45 46.15,-135.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"49.65,-135.84 46.15,-125.84 42.65,-135.84 49.65,-135.84\"/>\n",
"</g>\n",
"<!-- 14 -->\n",
"<g id=\"node15\" class=\"node\">\n",
"<title>14</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"184.65,-125.74 127.65,-125.74 127.65,-89.74 184.65,-89.74 184.65,-125.74\"/>\n",
"<text text-anchor=\"middle\" x=\"156.15\" y=\"-104.04\" font-family=\"Times,serif\" font-size=\"14.00\">{2,3}</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;14 -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>8&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M156.15,-161.44C156.15,-153.72 156.15,-144.45 156.15,-135.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"159.65,-135.84 156.15,-125.84 152.65,-135.84 159.65,-135.84\"/>\n",
"</g>\n",
"<!-- 15 -->\n",
"<g id=\"node16\" class=\"node\">\n",
"<title>15</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"294.65,-125.74 237.65,-125.74 237.65,-89.74 294.65,-89.74 294.65,-125.74\"/>\n",
"<text text-anchor=\"middle\" x=\"266.15\" y=\"-104.04\" font-family=\"Times,serif\" font-size=\"14.00\">{4,5}</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;15 -->\n",
"<g id=\"edge15\" class=\"edge\">\n",
"<title>9&#45;&gt;15</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M266.15,-161.44C266.15,-153.72 266.15,-144.45 266.15,-135.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"269.65,-135.84 266.15,-125.84 262.65,-135.84 269.65,-135.84\"/>\n",
"</g>\n",
"<!-- 16 -->\n",
"<g id=\"node17\" class=\"node\">\n",
"<title>16</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"404.65,-125.74 347.65,-125.74 347.65,-89.74 404.65,-89.74 404.65,-125.74\"/>\n",
"<text text-anchor=\"middle\" x=\"376.15\" y=\"-104.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1}</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;16 -->\n",
"<g id=\"edge16\" class=\"edge\">\n",
"<title>10&#45;&gt;16</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M376.15,-161.44C376.15,-153.72 376.15,-144.45 376.15,-135.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"379.65,-135.84 376.15,-125.84 372.65,-135.84 379.65,-135.84\"/>\n",
"</g>\n",
"<!-- 17 -->\n",
"<g id=\"node18\" class=\"node\">\n",
"<title>17</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"514.65,-125.74 457.65,-125.74 457.65,-89.74 514.65,-89.74 514.65,-125.74\"/>\n",
"<text text-anchor=\"middle\" x=\"486.15\" y=\"-104.04\" font-family=\"Times,serif\" font-size=\"14.00\">{2,3}</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;17 -->\n",
"<g id=\"edge17\" class=\"edge\">\n",
"<title>11&#45;&gt;17</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M486.15,-161.44C486.15,-153.72 486.15,-144.45 486.15,-135.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"489.65,-135.84 486.15,-125.84 482.65,-135.84 489.65,-135.84\"/>\n",
"</g>\n",
"<!-- 18 -->\n",
"<g id=\"node19\" class=\"node\">\n",
"<title>18</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"624.65,-125.74 567.65,-125.74 567.65,-89.74 624.65,-89.74 624.65,-125.74\"/>\n",
"<text text-anchor=\"middle\" x=\"596.15\" y=\"-104.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1}</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;18 -->\n",
"<g id=\"edge18\" class=\"edge\">\n",
"<title>12&#45;&gt;18</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M596.15,-161.44C596.15,-153.72 596.15,-144.45 596.15,-135.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"599.65,-135.84 596.15,-125.84 592.65,-135.84 599.65,-135.84\"/>\n",
"</g>\n",
"<!-- 19 -->\n",
"<g id=\"node20\" class=\"node\">\n",
"<title>19</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"46.15\" cy=\"-26.87\" rx=\"41.94\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"46.15\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{5}</text>\n",
"<text text-anchor=\"middle\" x=\"46.15\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;19&gt;</text>\n",
"</g>\n",
"<!-- 13&#45;&gt;19 -->\n",
"<g id=\"edge19\" class=\"edge\">\n",
"<title>13&#45;&gt;19</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M46.15,-89.63C46.15,-82.14 46.15,-73.05 46.15,-64.17\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"49.65,-63.95 46.15,-53.95 42.65,-63.95 49.65,-63.95\"/>\n",
"</g>\n",
"<!-- 20 -->\n",
"<g id=\"node21\" class=\"node\">\n",
"<title>20</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"156.15\" cy=\"-26.87\" rx=\"41.94\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"156.15\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{3}</text>\n",
"<text text-anchor=\"middle\" x=\"156.15\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;20&gt;</text>\n",
"</g>\n",
"<!-- 14&#45;&gt;20 -->\n",
"<g id=\"edge20\" class=\"edge\">\n",
"<title>14&#45;&gt;20</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M156.15,-89.63C156.15,-82.14 156.15,-73.05 156.15,-64.17\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"159.65,-63.95 156.15,-53.95 152.65,-63.95 159.65,-63.95\"/>\n",
"</g>\n",
"<!-- 21 -->\n",
"<g id=\"node22\" class=\"node\">\n",
"<title>21</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"266.15\" cy=\"-26.87\" rx=\"41.94\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"266.15\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{5}</text>\n",
"<text text-anchor=\"middle\" x=\"266.15\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;21&gt;</text>\n",
"</g>\n",
"<!-- 15&#45;&gt;21 -->\n",
"<g id=\"edge21\" class=\"edge\">\n",
"<title>15&#45;&gt;21</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M266.15,-89.63C266.15,-82.14 266.15,-73.05 266.15,-64.17\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"269.65,-63.95 266.15,-53.95 262.65,-63.95 269.65,-63.95\"/>\n",
"</g>\n",
"<!-- 22 -->\n",
"<g id=\"node23\" class=\"node\">\n",
"<title>22</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"376.15\" cy=\"-26.87\" rx=\"41.94\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"376.15\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{1}</text>\n",
"<text text-anchor=\"middle\" x=\"376.15\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;22&gt;</text>\n",
"</g>\n",
"<!-- 16&#45;&gt;22 -->\n",
"<g id=\"edge22\" class=\"edge\">\n",
"<title>16&#45;&gt;22</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M376.15,-89.63C376.15,-82.14 376.15,-73.05 376.15,-64.17\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"379.65,-63.95 376.15,-53.95 372.65,-63.95 379.65,-63.95\"/>\n",
"</g>\n",
"<!-- 23 -->\n",
"<g id=\"node24\" class=\"node\">\n",
"<title>23</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"486.15\" cy=\"-26.87\" rx=\"41.94\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"486.15\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{3}</text>\n",
"<text text-anchor=\"middle\" x=\"486.15\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;23&gt;</text>\n",
"</g>\n",
"<!-- 17&#45;&gt;23 -->\n",
"<g id=\"edge23\" class=\"edge\">\n",
"<title>17&#45;&gt;23</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M486.15,-89.63C486.15,-82.14 486.15,-73.05 486.15,-64.17\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"489.65,-63.95 486.15,-53.95 482.65,-63.95 489.65,-63.95\"/>\n",
"</g>\n",
"<!-- 24 -->\n",
"<g id=\"node25\" class=\"node\">\n",
"<title>24</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"596.15\" cy=\"-26.87\" rx=\"41.94\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"596.15\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{1}</text>\n",
"<text text-anchor=\"middle\" x=\"596.15\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;24&gt;</text>\n",
"</g>\n",
"<!-- 18&#45;&gt;24 -->\n",
"<g id=\"edge24\" class=\"edge\">\n",
"<title>18&#45;&gt;24</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M596.15,-89.63C596.15,-82.14 596.15,-73.05 596.15,-64.17\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"599.65,-63.95 596.15,-53.95 592.65,-63.95 599.65,-63.95\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7fa2682024b0> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"(Fin(0) | Inf(1)) & (Fin(2) | Inf(3)) & (Fin(4) | Inf(5)) : False True False\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Title: zielonka_tree Pages: 1 -->\n",
"<svg width=\"542pt\" height=\"406pt\"\n",
" viewBox=\"0.00 0.00 542.09 406.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.0 1.0) rotate(0) translate(4 402)\">\n",
"<title>zielonka_tree</title>\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-402 538.09,-402 538.09,4 -4,4\"/>\n",
"<!-- 0 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"270.05\" cy=\"-380\" rx=\"72.29\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"270.05\" y=\"-376.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3,4,5}</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>1</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"187.05,-326 89.05,-326 89.05,-290 187.05,-290 187.05,-326\"/>\n",
"<text text-anchor=\"middle\" x=\"138.05\" y=\"-304.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,2,3,4,5}</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M240.75,-363.46C222.7,-353.89 199.29,-341.48 179.37,-330.92\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"180.98,-327.8 170.5,-326.21 177.7,-333.99 180.98,-327.8\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"319.05,-326 221.05,-326 221.05,-290 319.05,-290 319.05,-326\"/>\n",
"<text text-anchor=\"middle\" x=\"270.05\" y=\"-304.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,4,5}</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M270.05,-361.7C270.05,-353.98 270.05,-344.71 270.05,-336.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"273.55,-336.1 270.05,-326.1 266.55,-336.1 273.55,-336.1\"/>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>3</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"440.05,-326 342.05,-326 342.05,-290 440.05,-290 440.05,-326\"/>\n",
"<text text-anchor=\"middle\" x=\"391.05\" y=\"-304.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3,4}</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;3 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M297.2,-363.29C313.46,-353.89 334.39,-341.78 352.36,-331.38\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"354.54,-334.16 361.44,-326.13 351.03,-328.11 354.54,-334.16\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>4</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"129.05\" cy=\"-236\" rx=\"54.69\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"129.05\" y=\"-232.3\" font-family=\"Times,serif\" font-size=\"14.00\">{2,3,4,5}</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;4 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M135.82,-289.7C134.83,-281.98 133.64,-272.71 132.53,-264.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"135.99,-263.58 131.25,-254.1 129.05,-264.47 135.99,-263.58\"/>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>5</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"270.05\" cy=\"-236\" rx=\"54.69\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"270.05\" y=\"-232.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,4,5}</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;5 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>2&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M270.05,-289.7C270.05,-281.98 270.05,-272.71 270.05,-264.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"273.55,-264.1 270.05,-254.1 266.55,-264.1 273.55,-264.1\"/>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"405.05\" cy=\"-236\" rx=\"54.69\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"405.05\" y=\"-232.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3}</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;6 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>3&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M394.51,-289.7C396.05,-281.98 397.9,-272.71 399.62,-264.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"403.1,-264.6 401.63,-254.1 396.23,-263.22 403.1,-264.6\"/>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>7</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"74.55,-182 3.55,-182 3.55,-146 74.55,-146 74.55,-182\"/>\n",
"<text text-anchor=\"middle\" x=\"39.05\" y=\"-160.3\" font-family=\"Times,serif\" font-size=\"14.00\">{2,4,5}</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;7 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>4&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M108.62,-219.12C96.97,-210.05 82.14,-198.51 69.16,-188.42\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"71,-185.42 60.96,-182.04 66.71,-190.95 71,-185.42\"/>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>8</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"164.55,-182 93.55,-182 93.55,-146 164.55,-146 164.55,-182\"/>\n",
"<text text-anchor=\"middle\" x=\"129.05\" y=\"-160.3\" font-family=\"Times,serif\" font-size=\"14.00\">{2,3,4}</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;8 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>4&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M129.05,-217.7C129.05,-209.98 129.05,-200.71 129.05,-192.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"132.55,-192.1 129.05,-182.1 125.55,-192.1 132.55,-192.1\"/>\n",
"</g>\n",
"<!-- 9 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>9</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"257.55,-182 186.55,-182 186.55,-146 257.55,-146 257.55,-182\"/>\n",
"<text text-anchor=\"middle\" x=\"222.05\" y=\"-160.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,4,5}</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;9 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>5&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M258.43,-218.05C252.79,-209.84 245.9,-199.79 239.64,-190.66\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"242.43,-188.54 233.89,-182.28 236.66,-192.5 242.43,-188.54\"/>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>10</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"347.55,-182 276.55,-182 276.55,-146 347.55,-146 347.55,-182\"/>\n",
"<text text-anchor=\"middle\" x=\"312.05\" y=\"-160.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,4}</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;10 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>5&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M280.21,-218.05C285.09,-209.92 291.05,-200 296.48,-190.94\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"299.54,-192.65 301.68,-182.28 293.54,-189.05 299.54,-192.65\"/>\n",
"</g>\n",
"<!-- 11 -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>11</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"440.55,-182 369.55,-182 369.55,-146 440.55,-146 440.55,-182\"/>\n",
"<text text-anchor=\"middle\" x=\"405.05\" y=\"-160.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,2,3}</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;11 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>6&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M405.05,-217.7C405.05,-209.98 405.05,-200.71 405.05,-192.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"408.55,-192.1 405.05,-182.1 401.55,-192.1 408.55,-192.1\"/>\n",
"</g>\n",
"<!-- 12 -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>12</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"530.55,-182 459.55,-182 459.55,-146 530.55,-146 530.55,-182\"/>\n",
"<text text-anchor=\"middle\" x=\"495.05\" y=\"-160.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2}</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;12 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>6&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M425.47,-219.12C437.13,-210.05 451.96,-198.51 464.93,-188.42\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"467.39,-190.95 473.13,-182.04 463.09,-185.42 467.39,-190.95\"/>\n",
"</g>\n",
"<!-- 13 -->\n",
"<g id=\"node14\" class=\"node\">\n",
"<title>13</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"37.05\" cy=\"-92\" rx=\"37.09\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"37.05\" y=\"-88.3\" font-family=\"Times,serif\" font-size=\"14.00\">{4,5}</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;13 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>7&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M38.55,-145.7C38.33,-137.98 38.07,-128.71 37.82,-120.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"41.32,-120 37.54,-110.1 34.32,-120.2 41.32,-120\"/>\n",
"</g>\n",
"<!-- 14 -->\n",
"<g id=\"node15\" class=\"node\">\n",
"<title>14</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"129.05\" cy=\"-92\" rx=\"37.09\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"129.05\" y=\"-88.3\" font-family=\"Times,serif\" font-size=\"14.00\">{2,3}</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;14 -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>8&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M129.05,-145.7C129.05,-137.98 129.05,-128.71 129.05,-120.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"132.55,-120.1 129.05,-110.1 125.55,-120.1 132.55,-120.1\"/>\n",
"</g>\n",
"<!-- 15 -->\n",
"<g id=\"node16\" class=\"node\">\n",
"<title>15</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"221.05\" cy=\"-92\" rx=\"37.09\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"221.05\" y=\"-88.3\" font-family=\"Times,serif\" font-size=\"14.00\">{4,5}</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;15 -->\n",
"<g id=\"edge15\" class=\"edge\">\n",
"<title>9&#45;&gt;15</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M221.8,-145.7C221.69,-137.98 221.56,-128.71 221.43,-120.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"224.93,-120.05 221.29,-110.1 217.93,-120.15 224.93,-120.05\"/>\n",
"</g>\n",
"<!-- 16 -->\n",
"<g id=\"node17\" class=\"node\">\n",
"<title>16</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"313.05\" cy=\"-92\" rx=\"37.09\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"313.05\" y=\"-88.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1}</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;16 -->\n",
"<g id=\"edge16\" class=\"edge\">\n",
"<title>10&#45;&gt;16</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M312.29,-145.7C312.4,-137.98 312.54,-128.71 312.66,-120.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"316.16,-120.15 312.8,-110.1 309.16,-120.05 316.16,-120.15\"/>\n",
"</g>\n",
"<!-- 17 -->\n",
"<g id=\"node18\" class=\"node\">\n",
"<title>17</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"405.05\" cy=\"-92\" rx=\"37.09\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"405.05\" y=\"-88.3\" font-family=\"Times,serif\" font-size=\"14.00\">{2,3}</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;17 -->\n",
"<g id=\"edge17\" class=\"edge\">\n",
"<title>11&#45;&gt;17</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M405.05,-145.7C405.05,-137.98 405.05,-128.71 405.05,-120.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"408.55,-120.1 405.05,-110.1 401.55,-120.1 408.55,-120.1\"/>\n",
"</g>\n",
"<!-- 18 -->\n",
"<g id=\"node19\" class=\"node\">\n",
"<title>18</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"497.05\" cy=\"-92\" rx=\"37.09\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"497.05\" y=\"-88.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1}</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;18 -->\n",
"<g id=\"edge18\" class=\"edge\">\n",
"<title>12&#45;&gt;18</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M495.54,-145.7C495.76,-137.98 496.03,-128.71 496.27,-120.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"499.77,-120.2 496.56,-110.1 492.77,-120 499.77,-120.2\"/>\n",
"</g>\n",
"<!-- 19 -->\n",
"<g id=\"node20\" class=\"node\">\n",
"<title>19</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"66.55,-38 7.55,-38 7.55,0 66.55,0 66.55,-38\"/>\n",
"<text text-anchor=\"middle\" x=\"37.05\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">{4}</text>\n",
"<text text-anchor=\"middle\" x=\"37.05\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;19&gt;</text>\n",
"</g>\n",
"<!-- 13&#45;&gt;19 -->\n",
"<g id=\"edge19\" class=\"edge\">\n",
"<title>13&#45;&gt;19</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M37.05,-73.81C37.05,-66.11 37.05,-56.82 37.05,-48.15\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"40.55,-48.02 37.05,-38.02 33.55,-48.02 40.55,-48.02\"/>\n",
"</g>\n",
"<!-- 20 -->\n",
"<g id=\"node21\" class=\"node\">\n",
"<title>20</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"158.55,-38 99.55,-38 99.55,0 158.55,0 158.55,-38\"/>\n",
"<text text-anchor=\"middle\" x=\"129.05\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">{2}</text>\n",
"<text text-anchor=\"middle\" x=\"129.05\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;20&gt;</text>\n",
"</g>\n",
"<!-- 14&#45;&gt;20 -->\n",
"<g id=\"edge20\" class=\"edge\">\n",
"<title>14&#45;&gt;20</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M129.05,-73.81C129.05,-66.11 129.05,-56.82 129.05,-48.15\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"132.55,-48.02 129.05,-38.02 125.55,-48.02 132.55,-48.02\"/>\n",
"</g>\n",
"<!-- 21 -->\n",
"<g id=\"node22\" class=\"node\">\n",
"<title>21</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"250.55,-38 191.55,-38 191.55,0 250.55,0 250.55,-38\"/>\n",
"<text text-anchor=\"middle\" x=\"221.05\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">{4}</text>\n",
"<text text-anchor=\"middle\" x=\"221.05\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;21&gt;</text>\n",
"</g>\n",
"<!-- 15&#45;&gt;21 -->\n",
"<g id=\"edge21\" class=\"edge\">\n",
"<title>15&#45;&gt;21</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M221.05,-73.81C221.05,-66.11 221.05,-56.82 221.05,-48.15\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"224.55,-48.02 221.05,-38.02 217.55,-48.02 224.55,-48.02\"/>\n",
"</g>\n",
"<!-- 22 -->\n",
"<g id=\"node23\" class=\"node\">\n",
"<title>22</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"342.55,-38 283.55,-38 283.55,0 342.55,0 342.55,-38\"/>\n",
"<text text-anchor=\"middle\" x=\"313.05\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">{0}</text>\n",
"<text text-anchor=\"middle\" x=\"313.05\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;22&gt;</text>\n",
"</g>\n",
"<!-- 16&#45;&gt;22 -->\n",
"<g id=\"edge22\" class=\"edge\">\n",
"<title>16&#45;&gt;22</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M313.05,-73.81C313.05,-66.11 313.05,-56.82 313.05,-48.15\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"316.55,-48.02 313.05,-38.02 309.55,-48.02 316.55,-48.02\"/>\n",
"</g>\n",
"<!-- 23 -->\n",
"<g id=\"node24\" class=\"node\">\n",
"<title>23</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"434.55,-38 375.55,-38 375.55,0 434.55,0 434.55,-38\"/>\n",
"<text text-anchor=\"middle\" x=\"405.05\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">{2}</text>\n",
"<text text-anchor=\"middle\" x=\"405.05\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;23&gt;</text>\n",
"</g>\n",
"<!-- 17&#45;&gt;23 -->\n",
"<g id=\"edge23\" class=\"edge\">\n",
"<title>17&#45;&gt;23</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M405.05,-73.81C405.05,-66.11 405.05,-56.82 405.05,-48.15\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"408.55,-48.02 405.05,-38.02 401.55,-48.02 408.55,-48.02\"/>\n",
"</g>\n",
"<!-- 24 -->\n",
"<g id=\"node25\" class=\"node\">\n",
"<title>24</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"526.55,-38 467.55,-38 467.55,0 526.55,0 526.55,-38\"/>\n",
"<text text-anchor=\"middle\" x=\"497.05\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">{0}</text>\n",
"<text text-anchor=\"middle\" x=\"497.05\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;24&gt;</text>\n",
"</g>\n",
"<!-- 18&#45;&gt;24 -->\n",
"<g id=\"edge24\" class=\"edge\">\n",
"<title>18&#45;&gt;24</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M497.05,-73.81C497.05,-66.11 497.05,-56.82 497.05,-48.15\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"500.55,-48.02 497.05,-38.02 493.55,-48.02 500.55,-48.02\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7fa2682026f0> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Fin(0) & (Inf(1) | (Fin(2) & (Inf(3) | Fin(4)))) : True True True\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Title: zielonka_tree Pages: 1 -->\n",
"<svg width=\"117pt\" height=\"334pt\"\n",
" viewBox=\"0.00 0.00 117.19 334.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.0 1.0) rotate(0) translate(4 330)\">\n",
"<title>zielonka_tree</title>\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-330 113.19,-330 113.19,4 -4,4\"/>\n",
"<!-- 0 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>0</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"103.6,-326 5.6,-326 5.6,-290 103.6,-290 103.6,-326\"/>\n",
"<text text-anchor=\"middle\" x=\"54.6\" y=\"-304.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3,4}</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"54.6\" cy=\"-236\" rx=\"54.69\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"54.6\" y=\"-232.3\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2,3,4}</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M54.6,-289.7C54.6,-281.98 54.6,-272.71 54.6,-264.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"58.1,-264.1 54.6,-254.1 51.1,-264.1 58.1,-264.1\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"90.1,-182 19.1,-182 19.1,-146 90.1,-146 90.1,-182\"/>\n",
"<text text-anchor=\"middle\" x=\"54.6\" y=\"-160.3\" font-family=\"Times,serif\" font-size=\"14.00\">{2,3,4}</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>1&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M54.6,-217.7C54.6,-209.98 54.6,-200.71 54.6,-192.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"58.1,-192.1 54.6,-182.1 51.1,-192.1 58.1,-192.1\"/>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"54.6\" cy=\"-92\" rx=\"37.09\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"54.6\" y=\"-88.3\" font-family=\"Times,serif\" font-size=\"14.00\">{3,4}</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>2&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M54.6,-145.7C54.6,-137.98 54.6,-128.71 54.6,-120.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"58.1,-120.1 54.6,-110.1 51.1,-120.1 58.1,-120.1\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"81.6,-38 27.6,-38 27.6,0 81.6,0 81.6,-38\"/>\n",
"<text text-anchor=\"middle\" x=\"54.6\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">{4}</text>\n",
"<text text-anchor=\"middle\" x=\"54.6\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;4&gt;</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;4 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>3&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M54.6,-73.81C54.6,-66.11 54.6,-56.82 54.6,-48.15\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"58.1,-48.02 54.6,-38.02 51.1,-48.02 58.1,-48.02\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7fa2682022d0> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"(Inf(0) & Fin(1)) | (Inf(2) & Fin(3) & Fin(4)) : True False False\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Title: zielonka_tree Pages: 1 -->\n",
"<svg width=\"228pt\" height=\"278pt\"\n",
" viewBox=\"0.00 0.00 227.74 277.74\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 273.74)\">\n",
"<title>zielonka_tree</title>\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-273.74 223.74,-273.74 223.74,4 -4,4\"/>\n",
"<!-- 0 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>0</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"162.6,-269.74 64.6,-269.74 64.6,-233.74 162.6,-233.74 162.6,-269.74\"/>\n",
"<text text-anchor=\"middle\" x=\"113.6\" y=\"-248.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3,4}</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"54.6\" cy=\"-179.74\" rx=\"54.69\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"54.6\" y=\"-176.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,2,3,4}</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M99.01,-233.44C91.83,-224.92 83.05,-214.5 75.2,-205.19\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"77.73,-202.75 68.61,-197.36 72.37,-207.26 77.73,-202.75\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"173.6\" cy=\"-179.74\" rx=\"46.29\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"173.6\" y=\"-176.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2}</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M128.43,-233.44C135.73,-224.92 144.65,-214.5 152.64,-205.19\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"155.5,-207.23 159.35,-197.36 150.18,-202.68 155.5,-207.23\"/>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>3</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"90.1,-125.74 19.1,-125.74 19.1,-89.74 90.1,-89.74 90.1,-125.74\"/>\n",
"<text text-anchor=\"middle\" x=\"54.6\" y=\"-104.04\" font-family=\"Times,serif\" font-size=\"14.00\">{2,3,4}</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;3 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>1&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M54.6,-161.44C54.6,-153.72 54.6,-144.45 54.6,-135.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"58.1,-135.84 54.6,-125.84 51.1,-135.84 58.1,-135.84\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"202.1,-125.74 145.1,-125.74 145.1,-89.74 202.1,-89.74 202.1,-125.74\"/>\n",
"<text text-anchor=\"middle\" x=\"173.6\" y=\"-104.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1}</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;4 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>2&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M173.6,-161.44C173.6,-153.72 173.6,-144.45 173.6,-135.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"177.1,-135.84 173.6,-125.84 170.1,-135.84 177.1,-135.84\"/>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>5</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"54.6\" cy=\"-26.87\" rx=\"35.21\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"54.6\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{2}</text>\n",
"<text text-anchor=\"middle\" x=\"54.6\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;5&gt;</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;5 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>3&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M54.6,-89.63C54.6,-82.14 54.6,-73.05 54.6,-64.17\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"58.1,-63.95 54.6,-53.95 51.1,-63.95 58.1,-63.95\"/>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"173.6\" cy=\"-26.87\" rx=\"35.21\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"173.6\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{0}</text>\n",
"<text text-anchor=\"middle\" x=\"173.6\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;6&gt;</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;6 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>4&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M173.6,-89.63C173.6,-82.14 173.6,-73.05 173.6,-64.17\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"177.1,-63.95 173.6,-53.95 170.1,-63.95 177.1,-63.95\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7fa268202480> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"f : True True True\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Title: zielonka_tree Pages: 1 -->\n",
"<svg width=\"62pt\" height=\"46pt\"\n",
" viewBox=\"0.00 0.00 62.00 46.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.0 1.0) rotate(0) translate(4 42)\">\n",
"<title>zielonka_tree</title>\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-42 58,-42 58,4 -4,4\"/>\n",
"<!-- 0 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>0</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"54,-38 0,-38 0,0 54,0 54,-38\"/>\n",
"<text text-anchor=\"middle\" x=\"27\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">{}</text>\n",
"<text text-anchor=\"middle\" x=\"27\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;0&gt;</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7fa2682023f0> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"t : True True True\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Title: zielonka_tree Pages: 1 -->\n",
"<svg width=\"79pt\" height=\"62pt\"\n",
" viewBox=\"0.00 0.00 78.71 61.74\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 57.74)\">\n",
"<title>zielonka_tree</title>\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-57.74 74.71,-57.74 74.71,4 -4,4\"/>\n",
"<!-- 0 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"35.36\" cy=\"-26.87\" rx=\"35.21\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"35.36\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{}</text>\n",
"<text text-anchor=\"middle\" x=\"35.36\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;0&gt;</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7fa2682020f0> >"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"for ct in ('Rabin 3', 'Streett 3', 'parity min odd 5', \n",
" 'Inf(0)&Fin(1) | (Inf(2)&Fin(3)&Fin(4))', 'f', 't'):\n",
" cond = spot.acc_cond(ct)\n",
" tcond = spot.zielonka_tree(cond)\n",
" print(cond.get_acceptance(), \":\", tcond.has_rabin_shape(), \n",
" tcond.has_streett_shape(), tcond.has_parity_shape());\n",
" display(tcond)"
]
},
{
"cell_type": "markdown",
"id": "75838579",
"metadata": {},
"source": [
"# Alternating Cycle Decomposition\n",
"\n",
"We now turn to the ACD, which extends the Zielonka tree to take the automaton structure into account. Instead of storing subsets of colors, it stores SCCs (not necessarily maximal). In Spot, those SCCs are stored as bitvectors of edges. The principle is similar: instead of one tree, we are building a forest, with one root per non-trivial maximal SCC. The root of each tree is labeled by all the transitions in this maximal SCC: if such a huge cycle is accepting the node is said accepting and drawn as an ellipse, otherwise it is rejecting and drawn as a rectangle. For children, we look for maximal subsets of cycles that can be rejecting (if the parent was accepting), or accepting (if the parent was rejecting). \n",
"\n",
"In other words all nodes correspond to SCCs that may not be maximal from a graph point of view, but that are maximal with respect to their accepting or rejecting status: adding more cycles to it would change that status."
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "ea3488b1",
"metadata": {},
"outputs": [],
"source": [
"a3 = spot.automaton(\"\"\"HOA: v1 name: \"(FGp0 & ((XFp0 & F!p1) | F(Gp1 &\n",
"XG!p0))) | G(F!p0 &\\n(XFp0 | F!p1) & F(Gp1 | G!p0))\" States: 10 Start:\n",
"0 AP: 2 \"p0\" \"p1\" Acceptance: 6 (Fin(0) & Fin(1)) | ((Fin(4)|Fin(5)) &\n",
"(Inf(2)&Inf(3))) properties: trans-labels explicit-labels trans-acc\n",
"complete properties: deterministic --BODY-- State: 0 [!0&!1] 0 {0 1 2\n",
"3 5} [!0&1] 1 [0&!1] 2 [0&1] 3 State: 1 [!0&1] 1 {1 3} [0&!1] 2\n",
"[!0&!1] 4 {0 1 2 3 5} [0&1] 5 State: 2 [!0&!1] 2 {1 2 3 5} [0&!1] 2 {2\n",
"4 5} [!0&1] 3 {1 3} [0&1] 3 {4} State: 3 [0&!1] 2 {2 4 5} [!0&1] 3 {1\n",
"3} [0&1] 5 {2 4} [!0&!1] 6 {1 2 3 5} State: 4 [!0&1] 1 {1 3} [0&!1] 2\n",
"[0&1] 3 [!0&!1] 7 State: 5 [0&!1] 2 {2 4 5} [0&1] 3 {4} [!0&1] 5 {1 3}\n",
"[!0&!1] 8 {1 3 5} State: 6 [0&!1] 2 {2 4 5} [!0&1] 3 {1 3} [0&1] 3 {4}\n",
"[!0&!1] 8 {1 3 5} State: 7 [0&!1] 2 [0&1] 5 [!0&!1] 7 {0 1 2 3 5}\n",
"[!0&1] 9 {1 2 3} State: 8 [0&!1] 2 {2 4 5} [!0&1] 5 {1 2 3} [0&1] 5 {2\n",
"4} [!0&!1] 8 {1 2 3 5} State: 9 [0&!1] 2 [0&1] 3 [!0&!1] 7 {0 1 3 5}\n",
"[!0&1] 9 {1 3} --END--\"\"\")"
]
},
{
"cell_type": "markdown",
"id": "cb546bc2",
"metadata": {},
"source": [
"Here is the ACD for automaton `a3`, displayed below a copy of the automaton. Note that the automaton and ACD are linked interactively: you may click on nodes of the ACD to highlight the cycles it stores, and you may click on a state or an edge in the automaton to highlight to relevant ACD nodes (it is easier to click on edge labels than on edges)."
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "fad721c0",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Title: acd Pages: 1 -->\n",
"<svg width=\"1355pt\" height=\"458pt\"\n",
" viewBox=\"0.00 0.00 1354.97 457.97\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 453.97)\">\n",
"<title>acd</title>\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-453.97 1350.97,-453.97 1350.97,4 -4,4\"/>\n",
"<text text-anchor=\"middle\" x=\"673.48\" y=\"-418.77\" font-family=\"Times,serif\" font-size=\"14.00\">min odd</text>\n",
"<!-- 0 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>0</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"586.67,-383.18 430.67,-383.18 430.67,-300.18 586.67,-300.18 586.67,-383.18\"/>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-367.98\" font-family=\"Times,serif\" font-size=\"14.00\">SCC #0</text>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-352.98\" font-family=\"Times,serif\" font-size=\"14.00\">T: 9&#45;16,21&#45;28,33&#45;36</text>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-337.98\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2,3,4,5}</text>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-322.98\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 2,3,5,6,8</text>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-307.98\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 0</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>4</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"116.67\" cy=\"-177.69\" rx=\"116.85\" ry=\"58.88\"/>\n",
"<text text-anchor=\"middle\" x=\"116.67\" y=\"-203.99\" font-family=\"Times,serif\" font-size=\"14.00\">T: 10,12,13,15,21,22</text>\n",
"<text text-anchor=\"middle\" x=\"116.67\" y=\"-188.99\" font-family=\"Times,serif\" font-size=\"14.00\">{2,4,5}</text>\n",
"<text text-anchor=\"middle\" x=\"116.67\" y=\"-173.99\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 2,3,5</text>\n",
"<text text-anchor=\"middle\" x=\"116.67\" y=\"-158.99\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 1</text>\n",
"<text text-anchor=\"middle\" x=\"116.67\" y=\"-143.99\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;4&gt;</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;4 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>0&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M430.52,-311.35C377.27,-291.04 305.34,-262.99 242.67,-236.38 232.31,-231.98 221.53,-227.26 210.82,-222.49\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"212,-219.18 201.45,-218.28 209.14,-225.57 212,-219.18\"/>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>5</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"336.67\" cy=\"-177.69\" rx=\"84.71\" ry=\"48.17\"/>\n",
"<text text-anchor=\"middle\" x=\"336.67\" y=\"-196.49\" font-family=\"Times,serif\" font-size=\"14.00\">T: 23,24,34,36</text>\n",
"<text text-anchor=\"middle\" x=\"336.67\" y=\"-181.49\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2,3,5}</text>\n",
"<text text-anchor=\"middle\" x=\"336.67\" y=\"-166.49\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 5,8</text>\n",
"<text text-anchor=\"middle\" x=\"336.67\" y=\"-151.49\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;5 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M465.27,-299.8C441.55,-277.46 412.05,-249.68 387.28,-226.36\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"389.44,-223.58 379.76,-219.27 384.64,-228.68 389.44,-223.58\"/>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"508.67\" cy=\"-177.69\" rx=\"69.09\" ry=\"48.17\"/>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-196.49\" font-family=\"Times,serif\" font-size=\"14.00\">T: 14,16,26</text>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-181.49\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2,3,5}</text>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-166.49\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 3,6</text>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-151.49\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;6 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M508.67,-299.8C508.67,-280.47 508.67,-257.06 508.67,-235.99\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"512.17,-235.87 508.67,-225.87 505.17,-235.87 512.17,-235.87\"/>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>7</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"655.67\" cy=\"-177.69\" rx=\"59.29\" ry=\"58.88\"/>\n",
"<text text-anchor=\"middle\" x=\"655.67\" y=\"-203.99\" font-family=\"Times,serif\" font-size=\"14.00\">T: 9</text>\n",
"<text text-anchor=\"middle\" x=\"655.67\" y=\"-188.99\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2,3,5}</text>\n",
"<text text-anchor=\"middle\" x=\"655.67\" y=\"-173.99\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 2</text>\n",
"<text text-anchor=\"middle\" x=\"655.67\" y=\"-158.99\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 1</text>\n",
"<text text-anchor=\"middle\" x=\"655.67\" y=\"-143.99\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;7&gt;</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;7 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>0&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M545.77,-299.8C565.1,-278.5 588.93,-252.24 609.45,-229.62\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"612.14,-231.86 616.27,-222.11 606.96,-227.16 612.14,-231.86\"/>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"817.67\" cy=\"-177.69\" rx=\"84.71\" ry=\"48.17\"/>\n",
"<text text-anchor=\"middle\" x=\"817.67\" y=\"-196.49\" font-family=\"Times,serif\" font-size=\"14.00\">T: 14,15,22,23</text>\n",
"<text text-anchor=\"middle\" x=\"817.67\" y=\"-181.49\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2,3,4}</text>\n",
"<text text-anchor=\"middle\" x=\"817.67\" y=\"-166.49\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 3,5</text>\n",
"<text text-anchor=\"middle\" x=\"817.67\" y=\"-151.49\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;8 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>0&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M586.73,-305.08C627.95,-285.72 679.1,-260.79 723.67,-236.38 733.41,-231.04 743.57,-225.16 753.45,-219.26\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"755.28,-222.24 762.04,-214.08 751.67,-216.25 755.28,-222.24\"/>\n",
"</g>\n",
"<!-- 11 -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>11</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"366.17,-83 307.17,-83 307.17,0 366.17,0 366.17,-83\"/>\n",
"<text text-anchor=\"middle\" x=\"336.67\" y=\"-67.8\" font-family=\"Times,serif\" font-size=\"14.00\">T: 23</text>\n",
"<text text-anchor=\"middle\" x=\"336.67\" y=\"-52.8\" font-family=\"Times,serif\" font-size=\"14.00\">{1,3}</text>\n",
"<text text-anchor=\"middle\" x=\"336.67\" y=\"-37.8\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 5</text>\n",
"<text text-anchor=\"middle\" x=\"336.67\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 2</text>\n",
"<text text-anchor=\"middle\" x=\"336.67\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;11&gt;</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;11 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>5&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M336.67,-129.38C336.67,-117.71 336.67,-105.16 336.67,-93.33\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"340.17,-93.15 336.67,-83.15 333.17,-93.15 340.17,-93.15\"/>\n",
"</g>\n",
"<!-- 12 -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>12</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"538.17,-83 479.17,-83 479.17,0 538.17,0 538.17,-83\"/>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-67.8\" font-family=\"Times,serif\" font-size=\"14.00\">T: 14</text>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-52.8\" font-family=\"Times,serif\" font-size=\"14.00\">{1,3}</text>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-37.8\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 3</text>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 2</text>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;12&gt;</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;12 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>6&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M508.67,-129.38C508.67,-117.71 508.67,-105.16 508.67,-93.33\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"512.17,-93.15 508.67,-83.15 505.17,-93.15 512.17,-93.15\"/>\n",
"</g>\n",
"<!-- 13 -->\n",
"<g id=\"node14\" class=\"node\">\n",
"<title>13</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"808.17,-83 749.17,-83 749.17,0 808.17,0 808.17,-83\"/>\n",
"<text text-anchor=\"middle\" x=\"778.67\" y=\"-67.8\" font-family=\"Times,serif\" font-size=\"14.00\">T: 14</text>\n",
"<text text-anchor=\"middle\" x=\"778.67\" y=\"-52.8\" font-family=\"Times,serif\" font-size=\"14.00\">{1,3}</text>\n",
"<text text-anchor=\"middle\" x=\"778.67\" y=\"-37.8\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 3</text>\n",
"<text text-anchor=\"middle\" x=\"778.67\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 2</text>\n",
"<text text-anchor=\"middle\" x=\"778.67\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;13&gt;</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;13 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>8&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M804.14,-130.13C800.64,-118.07 796.84,-105.02 793.28,-92.77\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"796.64,-91.78 790.49,-83.16 789.92,-93.74 796.64,-91.78\"/>\n",
"</g>\n",
"<!-- 14 -->\n",
"<g id=\"node15\" class=\"node\">\n",
"<title>14</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"885.17,-83 826.17,-83 826.17,0 885.17,0 885.17,-83\"/>\n",
"<text text-anchor=\"middle\" x=\"855.67\" y=\"-67.8\" font-family=\"Times,serif\" font-size=\"14.00\">T: 23</text>\n",
"<text text-anchor=\"middle\" x=\"855.67\" y=\"-52.8\" font-family=\"Times,serif\" font-size=\"14.00\">{1,3}</text>\n",
"<text text-anchor=\"middle\" x=\"855.67\" y=\"-37.8\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 5</text>\n",
"<text text-anchor=\"middle\" x=\"855.67\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 2</text>\n",
"<text text-anchor=\"middle\" x=\"855.67\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;14&gt;</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;14 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>8&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M830.86,-130.13C834.24,-118.19 837.89,-105.28 841.33,-93.14\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"844.8,-93.73 844.16,-83.16 838.07,-91.83 844.8,-93.73\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"948.67\" cy=\"-341.68\" rx=\"84.71\" ry=\"58.88\"/>\n",
"<text text-anchor=\"middle\" x=\"948.67\" y=\"-367.98\" font-family=\"Times,serif\" font-size=\"14.00\">SCC #1</text>\n",
"<text text-anchor=\"middle\" x=\"948.67\" y=\"-352.98\" font-family=\"Times,serif\" font-size=\"14.00\">T: 31,32,39,40</text>\n",
"<text text-anchor=\"middle\" x=\"948.67\" y=\"-337.98\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3,5}</text>\n",
"<text text-anchor=\"middle\" x=\"948.67\" y=\"-322.98\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 7,9</text>\n",
"<text text-anchor=\"middle\" x=\"948.67\" y=\"-307.98\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 1</text>\n",
"</g>\n",
"<!-- 9 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>9</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"977.17,-219.19 920.17,-219.19 920.17,-136.19 977.17,-136.19 977.17,-219.19\"/>\n",
"<text text-anchor=\"middle\" x=\"948.67\" y=\"-203.99\" font-family=\"Times,serif\" font-size=\"14.00\">T: 40</text>\n",
"<text text-anchor=\"middle\" x=\"948.67\" y=\"-188.99\" font-family=\"Times,serif\" font-size=\"14.00\">{1,3}</text>\n",
"<text text-anchor=\"middle\" x=\"948.67\" y=\"-173.99\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 9</text>\n",
"<text text-anchor=\"middle\" x=\"948.67\" y=\"-158.99\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 2</text>\n",
"<text text-anchor=\"middle\" x=\"948.67\" y=\"-143.99\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;9&gt;</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;9 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>1&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M948.67,-282.65C948.67,-265.36 948.67,-246.55 948.67,-229.74\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"952.17,-229.56 948.67,-219.56 945.17,-229.56 952.17,-229.56\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"1120.67\" cy=\"-341.68\" rx=\"69.09\" ry=\"58.88\"/>\n",
"<text text-anchor=\"middle\" x=\"1120.67\" y=\"-367.98\" font-family=\"Times,serif\" font-size=\"14.00\">SCC #2</text>\n",
"<text text-anchor=\"middle\" x=\"1120.67\" y=\"-352.98\" font-family=\"Times,serif\" font-size=\"14.00\">T: 5,7,17</text>\n",
"<text text-anchor=\"middle\" x=\"1120.67\" y=\"-337.98\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3,5}</text>\n",
"<text text-anchor=\"middle\" x=\"1120.67\" y=\"-322.98\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 1,4</text>\n",
"<text text-anchor=\"middle\" x=\"1120.67\" y=\"-307.98\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 1</text>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>10</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"1150.17,-219.19 1091.17,-219.19 1091.17,-136.19 1150.17,-136.19 1150.17,-219.19\"/>\n",
"<text text-anchor=\"middle\" x=\"1120.67\" y=\"-203.99\" font-family=\"Times,serif\" font-size=\"14.00\">T: 5</text>\n",
"<text text-anchor=\"middle\" x=\"1120.67\" y=\"-188.99\" font-family=\"Times,serif\" font-size=\"14.00\">{1,3}</text>\n",
"<text text-anchor=\"middle\" x=\"1120.67\" y=\"-173.99\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 1</text>\n",
"<text text-anchor=\"middle\" x=\"1120.67\" y=\"-158.99\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 2</text>\n",
"<text text-anchor=\"middle\" x=\"1120.67\" y=\"-143.99\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;10&gt;</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;10 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>2&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1120.67,-282.65C1120.67,-265.36 1120.67,-246.55 1120.67,-229.74\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1124.17,-229.56 1120.67,-219.56 1117.17,-229.56 1124.17,-229.56\"/>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"1277.67\" cy=\"-341.68\" rx=\"69.09\" ry=\"69.09\"/>\n",
"<text text-anchor=\"middle\" x=\"1277.67\" y=\"-375.48\" font-family=\"Times,serif\" font-size=\"14.00\">SCC #3</text>\n",
"<text text-anchor=\"middle\" x=\"1277.67\" y=\"-360.48\" font-family=\"Times,serif\" font-size=\"14.00\">T: 1</text>\n",
"<text text-anchor=\"middle\" x=\"1277.67\" y=\"-345.48\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3,5}</text>\n",
"<text text-anchor=\"middle\" x=\"1277.67\" y=\"-330.48\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 0</text>\n",
"<text text-anchor=\"middle\" x=\"1277.67\" y=\"-315.48\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 1</text>\n",
"<text text-anchor=\"middle\" x=\"1277.67\" y=\"-300.48\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;3&gt;</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/html": [
"<style>\n",
".acdhigh ellipse,.acdacc ellipse,.acdacc path,.acdacc polygon{stroke:green;}\n",
".acdhigh polygon,.acdrej ellipse,.acdrej path,.acdrej polygon{stroke:red;}\n",
".acdbold ellipse,.acdbold polygon,.acdbold path{stroke-width:2;}\n",
".acdrej polygon{fill:red;}\n",
".acdacc polygon{fill:green;}\n",
"</style><div><?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Title: (FGp0 &amp; ((XFp0 &amp; F!p1) | F(Gp1 &amp;\\nXG!p0))) | G(F!p0 &amp;\\n(XFp0 | F!p1) &amp; F(Gp1 | G!p0)) Pages: 1 -->\n",
"<svg width=\"729pt\" height=\"253pt\"\n",
" viewBox=\"0.00 0.00 729.00 252.93\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"acdaut0\" class=\"graph\" transform=\"scale(0.5376344086021505 0.5376344086021505) rotate(0) translate(4 467)\">\n",
"<title>(FGp0 &amp; ((XFp0 &amp; F!p1) | F(Gp1 &amp;\\nXG!p0))) | G(F!p0 &amp;\\n(XFp0 | F!p1) &amp; F(Gp1 | G!p0))</title>\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-467 1353.5,-467 1353.5,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"503.75\" y=\"-448.8\" font-family=\"Lato\" font-size=\"14.00\">(Fin(</text>\n",
"<text text-anchor=\"start\" x=\"530.75\" y=\"-448.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"546.75\" y=\"-448.8\" font-family=\"Lato\" font-size=\"14.00\">) &amp; Fin(</text>\n",
"<text text-anchor=\"start\" x=\"590.75\" y=\"-448.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"606.75\" y=\"-448.8\" font-family=\"Lato\" font-size=\"14.00\">)) | ((Fin(</text>\n",
"<text text-anchor=\"start\" x=\"655.75\" y=\"-448.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"<text text-anchor=\"start\" x=\"671.75\" y=\"-448.8\" font-family=\"Lato\" font-size=\"14.00\">)|Fin(</text>\n",
"<text text-anchor=\"start\" x=\"702.75\" y=\"-448.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#e31a1c\">❺</text>\n",
"<text text-anchor=\"start\" x=\"718.75\" y=\"-448.8\" font-family=\"Lato\" font-size=\"14.00\">)) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"767.75\" y=\"-448.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"783.75\" y=\"-448.8\" font-family=\"Lato\" font-size=\"14.00\">)&amp;Inf(</text>\n",
"<text text-anchor=\"start\" x=\"817.75\" y=\"-448.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"833.75\" y=\"-448.8\" font-family=\"Lato\" font-size=\"14.00\">)))</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"S0\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-134\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-130.3\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"acdaut0_edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.15,-134C2.79,-134 17.15,-134 30.63,-134\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.94,-134 30.94,-137.15 34.44,-134 30.94,-134 30.94,-134 30.94,-134 34.44,-134 30.94,-130.85 37.94,-134 37.94,-134\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"E1\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<g id=\"a_E1\"><a xlink:title=\"0&#45;&gt;0&#10;#1\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M49.62,-151.04C48.32,-160.86 50.45,-170 56,-170 60.17,-170 62.4,-164.86 62.71,-158.14\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"62.38,-151.04 65.85,-157.88 62.54,-154.53 62.71,-158.03 62.71,-158.03 62.71,-158.03 62.54,-154.53 59.56,-158.18 62.38,-151.04 62.38,-151.04\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"27.5\" y=\"-187.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"16\" y=\"-173.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"32\" y=\"-173.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"48\" y=\"-173.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"64\" y=\"-173.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"80\" y=\"-173.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#e31a1c\">❺</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"S1\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"181\" cy=\"-134\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"181\" y=\"-130.3\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"E2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<g id=\"a_E2\"><a xlink:title=\"0&#45;&gt;1&#10;#2\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M74.1,-134C95.28,-134 131.49,-134 155.59,-134\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"162.65,-134 155.65,-137.15 159.15,-134 155.65,-134 155.65,-134 155.65,-134 159.15,-134 155.65,-130.85 162.65,-134 162.65,-134\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-137.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"S2\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"763.5\" cy=\"-277\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"763.5\" y=\"-273.3\" font-family=\"Lato\" font-size=\"14.00\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"E3\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<g id=\"a_E3\"><a xlink:title=\"0&#45;&gt;2&#10;#3\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M57.04,-152.28C58.2,-212.38 70.61,-400 180,-400 180,-400 180,-400 624.5,-400 684.47,-400 730.42,-334.46 750.87,-299.06\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"754.38,-292.83 753.69,-300.47 752.66,-295.88 750.94,-298.93 750.94,-298.93 750.94,-298.93 752.66,-295.88 748.2,-297.38 754.38,-292.83 754.38,-292.83\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"371\" y=\"-403.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"S3\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"903.5\" cy=\"-175\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"903.5\" y=\"-171.3\" font-family=\"Lato\" font-size=\"14.00\">3</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;3 -->\n",
"<g id=\"E4\" class=\"edge\">\n",
"<title>0&#45;&gt;3</title>\n",
"<g id=\"a_E4\"><a xlink:title=\"0&#45;&gt;3&#10;#4\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M63.12,-117.3C77.49,-81.38 117,0 180,0 180,0 180,0 695.5,0 779.99,0 808.53,-29.23 859,-97 872.05,-114.52 883.91,-136.38 891.94,-152.49\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"895.13,-159.02 889.23,-154.12 893.59,-155.88 892.05,-152.73 892.05,-152.73 892.05,-152.73 893.59,-155.88 894.88,-151.35 895.13,-159.02 895.13,-159.02\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"446\" y=\"-3.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"E5\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<g id=\"a_E5\"><a xlink:title=\"1&#45;&gt;1&#10;#5\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M170.63,-148.79C167.25,-159.42 170.71,-170 181,-170 188.88,-170 192.75,-163.8 192.62,-156.12\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"191.37,-148.79 195.65,-155.16 191.96,-152.24 192.55,-155.69 192.55,-155.69 192.55,-155.69 191.96,-152.24 189.44,-156.22 191.37,-148.79 191.37,-148.79\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"154.5\" y=\"-187.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"165\" y=\"-173.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"181\" y=\"-173.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g id=\"E6\" class=\"edge\">\n",
"<title>1&#45;&gt;2</title>\n",
"<g id=\"a_E6\"><a xlink:title=\"1&#45;&gt;2&#10;#6\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M192.8,-147.6C199.31,-155.3 208.06,-164.8 217,-172 308.05,-245.36 331.15,-274.38 444,-305 562.89,-337.26 601.33,-324.26 721,-295 727.61,-293.38 734.5,-290.8 740.72,-288.09\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"747.17,-285.13 742.12,-290.91 743.99,-286.59 740.81,-288.05 740.81,-288.05 740.81,-288.05 743.99,-286.59 739.49,-285.19 747.17,-285.13 747.17,-285.13\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"444\" y=\"-321.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"S4\" class=\"node\">\n",
"<title>4</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"333\" cy=\"-135\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"333\" y=\"-131.3\" font-family=\"Lato\" font-size=\"14.00\">4</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;4 -->\n",
"<g id=\"E7\" class=\"edge\">\n",
"<title>1&#45;&gt;4</title>\n",
"<g id=\"a_E7\"><a xlink:title=\"1&#45;&gt;4&#10;#7\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M194.95,-122.33C201.16,-117.52 208.98,-112.49 217,-110 250.96,-99.47 263.14,-99.15 297,-110 302.93,-111.9 308.71,-115.21 313.81,-118.82\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"319.45,-123.12 311.97,-121.38 316.66,-121 313.88,-118.88 313.88,-118.88 313.88,-118.88 316.66,-121 315.79,-116.37 319.45,-123.12 319.45,-123.12\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"228.5\" y=\"-127.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"217\" y=\"-113.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"233\" y=\"-113.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"249\" y=\"-113.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"265\" y=\"-113.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"281\" y=\"-113.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#e31a1c\">❺</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"S5\" class=\"node\">\n",
"<title>5</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1323\" cy=\"-229\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1323\" y=\"-225.3\" font-family=\"Lato\" font-size=\"14.00\">5</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;5 -->\n",
"<g id=\"E8\" class=\"edge\">\n",
"<title>1&#45;&gt;5</title>\n",
"<g id=\"a_E8\"><a xlink:title=\"1&#45;&gt;5&#10;#8\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M192.96,-120.46C199.39,-113.13 208.01,-104.31 217,-98 262.91,-65.77 275.91,-46 332,-46 332,-46 332,-46 695.5,-46 787.52,-46 810.48,-42 902.5,-42 902.5,-42 902.5,-42 1195,-42 1272.62,-42 1306.11,-153.61 1317.32,-204.38\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1318.82,-211.41 1314.28,-205.22 1318.09,-207.98 1317.36,-204.56 1317.36,-204.56 1317.36,-204.56 1318.09,-207.98 1320.44,-203.9 1318.82,-211.41 1318.82,-211.41\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"739\" y=\"-49.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g id=\"E9\" class=\"edge\">\n",
"<title>2&#45;&gt;2</title>\n",
"<g id=\"a_E9\"><a xlink:title=\"2&#45;&gt;2&#10;#9\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M757.48,-294.04C756.25,-303.86 758.25,-313 763.5,-313 767.43,-313 769.55,-307.86 769.84,-301.14\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"769.52,-294.04 772.98,-300.89 769.68,-297.53 769.83,-301.03 769.83,-301.03 769.83,-301.03 769.68,-297.53 766.69,-301.17 769.52,-294.04 769.52,-294.04\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"735\" y=\"-330.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"731.5\" y=\"-316.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"747.5\" y=\"-316.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"763.5\" y=\"-316.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"779.5\" y=\"-316.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#e31a1c\">❺</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g id=\"E10\" class=\"edge\">\n",
"<title>2&#45;&gt;2</title>\n",
"<g id=\"a_E10\"><a xlink:title=\"2&#45;&gt;2&#10;#10\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M754.56,-292.69C747.37,-313.48 750.35,-341 763.5,-341 775.26,-341 778.89,-318.98 774.37,-299.45\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"772.44,-292.69 777.39,-298.55 773.4,-296.05 774.36,-299.42 774.36,-299.42 774.36,-299.42 773.4,-296.05 771.33,-300.28 772.44,-292.69 772.44,-292.69\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"737\" y=\"-358.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"739.5\" y=\"-344.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"755.5\" y=\"-344.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"<text text-anchor=\"start\" x=\"771.5\" y=\"-344.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#e31a1c\">❺</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g id=\"E11\" class=\"edge\">\n",
"<title>2&#45;&gt;3</title>\n",
"<g id=\"a_E11\"><a xlink:title=\"2&#45;&gt;3&#10;#11\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M766.03,-259.06C769.12,-235.44 778.38,-194.72 806,-176 827.34,-161.54 857.89,-164.1 878.86,-168.44\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"885.85,-170.03 878.33,-171.55 882.44,-169.26 879.03,-168.48 879.03,-168.48 879.03,-168.48 882.44,-169.26 879.72,-165.41 885.85,-170.03 885.85,-170.03\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"806\" y=\"-193.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"816.5\" y=\"-179.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"832.5\" y=\"-179.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g id=\"E12\" class=\"edge\">\n",
"<title>2&#45;&gt;3</title>\n",
"<g id=\"a_E12\"><a xlink:title=\"2&#45;&gt;3&#10;#12\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M781.61,-277.09C802.02,-276.36 836.22,-272.35 859,-255 877.32,-241.05 888.88,-217.07 895.43,-199\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"897.79,-192.15 898.49,-199.79 896.65,-195.46 895.51,-198.77 895.51,-198.77 895.51,-198.77 896.65,-195.46 892.53,-197.75 897.79,-192.15 897.79,-192.15\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"808\" y=\"-293.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"824.5\" y=\"-278.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;2 -->\n",
"<g id=\"E13\" class=\"edge\">\n",
"<title>3&#45;&gt;2</title>\n",
"<g id=\"a_E13\"><a xlink:title=\"3&#45;&gt;2&#10;#13\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M888.53,-185.58C880.25,-191.53 869.38,-198.78 859,-204 836.65,-215.25 826.22,-208.26 806,-223 794.34,-231.5 784.36,-244.17 777.12,-255.1\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"773.18,-261.29 774.28,-253.69 775.06,-258.34 776.94,-255.39 776.94,-255.39 776.94,-255.39 775.06,-258.34 779.59,-257.08 773.18,-261.29 773.18,-261.29\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"806\" y=\"-240.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"808.5\" y=\"-226.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"824.5\" y=\"-226.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"<text text-anchor=\"start\" x=\"840.5\" y=\"-226.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#e31a1c\">❺</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g id=\"E14\" class=\"edge\">\n",
"<title>3&#45;&gt;3</title>\n",
"<g id=\"a_E14\"><a xlink:title=\"3&#45;&gt;3&#10;#14\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M892.07,-189.04C887.8,-199.91 891.61,-211 903.5,-211 912.79,-211 917.15,-204.23 916.57,-196.09\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"914.93,-189.04 919.59,-195.14 915.73,-192.45 916.52,-195.86 916.52,-195.86 916.52,-195.86 915.73,-192.45 913.45,-196.57 914.93,-189.04 914.93,-189.04\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"877\" y=\"-228.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"887.5\" y=\"-214.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"903.5\" y=\"-214.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;5 -->\n",
"<g id=\"E15\" class=\"edge\">\n",
"<title>3&#45;&gt;5</title>\n",
"<g id=\"a_E15\"><a xlink:title=\"3&#45;&gt;5&#10;#15\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M920.19,-167.23C928.28,-163.65 938.44,-159.8 948,-158 975.95,-152.73 983.62,-156.15 1012,-158 1135,-166.02 1176.43,-139.52 1287,-194 1294.44,-197.66 1301.24,-203.54 1306.83,-209.43\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1311.6,-214.79 1304.59,-211.66 1309.28,-212.18 1306.95,-209.57 1306.95,-209.57 1306.95,-209.57 1309.28,-212.18 1309.3,-207.47 1311.6,-214.79 1311.6,-214.79\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"1105\" y=\"-177.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1113.5\" y=\"-163.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"1129.5\" y=\"-163.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"S6\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1056.5\" cy=\"-256\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1056.5\" y=\"-252.3\" font-family=\"Lato\" font-size=\"14.00\">6</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;6 -->\n",
"<g id=\"E16\" class=\"edge\">\n",
"<title>3&#45;&gt;6</title>\n",
"<g id=\"a_E16\"><a xlink:title=\"3&#45;&gt;6&#10;#16\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M918.47,-185.58C926.75,-191.52 937.62,-198.77 948,-204 975,-217.59 985,-213.41 1012,-227 1020.11,-231.08 1028.52,-236.4 1035.76,-241.37\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1041.53,-245.42 1033.99,-243.98 1038.67,-243.41 1035.8,-241.4 1035.8,-241.4 1035.8,-241.4 1038.67,-243.41 1037.61,-238.82 1041.53,-245.42 1041.53,-245.42\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"951.5\" y=\"-244.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"948\" y=\"-230.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"964\" y=\"-230.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"980\" y=\"-230.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"996\" y=\"-230.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#e31a1c\">❺</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;1 -->\n",
"<g id=\"E17\" class=\"edge\">\n",
"<title>4&#45;&gt;1</title>\n",
"<g id=\"a_E17\"><a xlink:title=\"4&#45;&gt;1&#10;#17\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M314.93,-136.76C309.23,-137.27 302.85,-137.75 297,-138 261.48,-139.52 252.5,-140.02 217,-138 213.52,-137.8 209.85,-137.49 206.26,-137.13\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"199.06,-136.34 206.36,-133.98 202.54,-136.73 206.01,-137.11 206.01,-137.11 206.01,-137.11 202.54,-136.73 205.67,-140.24 199.06,-136.34 199.06,-136.34\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"230.5\" y=\"-157.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"241\" y=\"-143.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"257\" y=\"-143.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;2 -->\n",
"<g id=\"E18\" class=\"edge\">\n",
"<title>4&#45;&gt;2</title>\n",
"<g id=\"a_E18\"><a xlink:title=\"4&#45;&gt;2&#10;#18\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M351.17,-132.6C399.9,-126.49 542.48,-113.58 650,-154 687.36,-168.05 694.39,-179.25 721,-209 733.28,-222.73 744.02,-240.58 751.49,-254.55\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"754.89,-261.06 748.86,-256.31 753.27,-257.96 751.65,-254.85 751.65,-254.85 751.65,-254.85 753.27,-257.96 754.44,-253.4 754.89,-261.06 754.89,-261.06\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"520.5\" y=\"-138.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;3 -->\n",
"<g id=\"E19\" class=\"edge\">\n",
"<title>4&#45;&gt;3</title>\n",
"<g id=\"a_E19\"><a xlink:title=\"4&#45;&gt;3&#10;#19\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M349.35,-126.71C373.96,-114.21 424.09,-92 469.5,-92 469.5,-92 469.5,-92 764.5,-92 814.4,-92 861.81,-132.35 885.94,-156.79\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"891,-162.03 883.87,-159.18 888.57,-159.51 886.14,-157 886.14,-157 886.14,-157 888.57,-159.51 888.41,-154.81 891,-162.03 891,-162.03\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"599\" y=\"-95.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"S7\" class=\"node\">\n",
"<title>7</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"470.5\" cy=\"-232\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"470.5\" y=\"-228.3\" font-family=\"Lato\" font-size=\"14.00\">7</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;7 -->\n",
"<g id=\"E20\" class=\"edge\">\n",
"<title>4&#45;&gt;7</title>\n",
"<g id=\"a_E20\"><a xlink:title=\"4&#45;&gt;7&#10;#20\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M347.99,-145.02C372.13,-162.3 421.68,-197.77 449.47,-217.66\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"455.38,-221.89 447.86,-220.38 452.54,-219.86 449.69,-217.82 449.69,-217.82 449.69,-217.82 452.54,-219.86 451.52,-215.26 455.38,-221.89 455.38,-221.89\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"369\" y=\"-204.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;2 -->\n",
"<g id=\"E21\" class=\"edge\">\n",
"<title>5&#45;&gt;2</title>\n",
"<g id=\"a_E21\"><a xlink:title=\"5&#45;&gt;2&#10;#21\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1316.73,-212.05C1311.47,-198.03 1301.99,-178.74 1287,-168 1193.04,-100.67 1145.35,-120.49 1030,-128 958.55,-132.65 823.81,-146.71 806,-162 779.65,-184.63 770.03,-225.31 766.52,-251.72\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"765.68,-258.76 763.38,-251.44 766.1,-255.29 766.51,-251.81 766.51,-251.81 766.51,-251.81 766.1,-255.29 769.64,-252.19 765.68,-258.76 765.68,-258.76\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"1030\" y=\"-145.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1032.5\" y=\"-131.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"1048.5\" y=\"-131.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"<text text-anchor=\"start\" x=\"1064.5\" y=\"-131.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#e31a1c\">❺</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;3 -->\n",
"<g id=\"E22\" class=\"edge\">\n",
"<title>5&#45;&gt;3</title>\n",
"<g id=\"a_E22\"><a xlink:title=\"5&#45;&gt;3&#10;#22\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1320.99,-247.12C1318.69,-269.23 1311.21,-305.89 1287,-324 1226.54,-369.22 1006.7,-348.49 948,-301 917.48,-276.31 908.31,-229.02 905.59,-199.92\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"905.03,-192.94 908.73,-199.66 905.31,-196.43 905.59,-199.92 905.59,-199.92 905.59,-199.92 905.31,-196.43 902.45,-200.17 905.03,-192.94 905.03,-192.94\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"1105\" y=\"-367.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1121.5\" y=\"-352.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;5 -->\n",
"<g id=\"E23\" class=\"edge\">\n",
"<title>5&#45;&gt;5</title>\n",
"<g id=\"a_E23\"><a xlink:title=\"5&#45;&gt;5&#10;#23\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1312.29,-243.79C1308.81,-254.42 1312.38,-265 1323,-265 1331.13,-265 1335.13,-258.8 1335,-251.12\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1333.71,-243.79 1338.02,-250.14 1334.31,-247.24 1334.92,-250.69 1334.92,-250.69 1334.92,-250.69 1334.31,-247.24 1331.82,-251.23 1333.71,-243.79 1333.71,-243.79\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"1296.5\" y=\"-282.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1307\" y=\"-268.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"1323\" y=\"-268.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"S8\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1194\" cy=\"-256\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1194\" y=\"-252.3\" font-family=\"Lato\" font-size=\"14.00\">8</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;8 -->\n",
"<g id=\"E24\" class=\"edge\">\n",
"<title>5&#45;&gt;8</title>\n",
"<g id=\"a_E24\"><a xlink:title=\"5&#45;&gt;8&#10;#24\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1316.41,-245.8C1311.09,-258.82 1301.68,-275.94 1287,-284 1264.79,-296.19 1253.91,-292.39 1230,-284 1223.64,-281.77 1217.57,-277.84 1212.33,-273.62\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1206.99,-268.99 1214.35,-271.19 1209.64,-271.28 1212.28,-273.57 1212.28,-273.57 1212.28,-273.57 1209.64,-271.28 1210.22,-275.95 1206.99,-268.99 1206.99,-268.99\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"1230\" y=\"-309.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1234.5\" y=\"-295.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"1250.5\" y=\"-295.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"1266.5\" y=\"-295.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#e31a1c\">❺</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;2 -->\n",
"<g id=\"E25\" class=\"edge\">\n",
"<title>6&#45;&gt;2</title>\n",
"<g id=\"a_E25\"><a xlink:title=\"6&#45;&gt;2&#10;#25\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1045.67,-271.05C1037.91,-281.5 1026.06,-294.65 1012,-301 951.77,-328.19 845.16,-321.01 806,-308 797.33,-305.12 789.01,-299.65 782.12,-294.09\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"776.7,-289.46 784.07,-291.61 779.36,-291.73 782.02,-294 782.02,-294 782.02,-294 779.36,-291.73 779.98,-296.4 776.7,-289.46 776.7,-289.46\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"877\" y=\"-337.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"879.5\" y=\"-323.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"895.5\" y=\"-323.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"<text text-anchor=\"start\" x=\"911.5\" y=\"-323.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#e31a1c\">❺</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;3 -->\n",
"<g id=\"E26\" class=\"edge\">\n",
"<title>6&#45;&gt;3</title>\n",
"<g id=\"a_E26\"><a xlink:title=\"6&#45;&gt;3&#10;#26\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1052.06,-238.49C1047.07,-218.41 1035.71,-186.42 1012,-172 986.52,-156.5 950.99,-161.51 927.87,-167.47\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"920.83,-169.41 926.74,-164.51 924.2,-168.48 927.58,-167.55 927.58,-167.55 927.58,-167.55 924.2,-168.48 928.41,-170.59 920.83,-169.41 920.83,-169.41\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"953.5\" y=\"-189.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"964\" y=\"-175.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"980\" y=\"-175.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;3 -->\n",
"<g id=\"E27\" class=\"edge\">\n",
"<title>6&#45;&gt;3</title>\n",
"<g id=\"a_E27\"><a xlink:title=\"6&#45;&gt;3&#10;#27\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1038.82,-260.72C1016.41,-266.05 976.16,-271.92 948,-255 928.02,-243 916.63,-218.29 910.56,-199.49\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"908.41,-192.35 913.44,-198.15 909.42,-195.71 910.43,-199.06 910.43,-199.06 910.43,-199.06 909.42,-195.71 907.41,-199.96 908.41,-192.35 908.41,-192.35\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"955.5\" y=\"-285.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"972\" y=\"-270.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;8 -->\n",
"<g id=\"E28\" class=\"edge\">\n",
"<title>6&#45;&gt;8</title>\n",
"<g id=\"a_E28\"><a xlink:title=\"6&#45;&gt;8&#10;#28\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1074.66,-256C1098.49,-256 1141.7,-256 1168.79,-256\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1175.98,-256 1168.98,-259.15 1172.48,-256 1168.98,-256 1168.98,-256 1168.98,-256 1172.48,-256 1168.98,-252.85 1175.98,-256 1175.98,-256\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"1101\" y=\"-273.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1105.5\" y=\"-259.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"1121.5\" y=\"-259.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"1137.5\" y=\"-259.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#e31a1c\">❺</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;2 -->\n",
"<g id=\"E29\" class=\"edge\">\n",
"<title>7&#45;&gt;2</title>\n",
"<g id=\"a_E29\"><a xlink:title=\"7&#45;&gt;2&#10;#29\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M485.13,-242.86C493.3,-248.74 504.18,-255.49 515,-259 593.6,-284.53 693.37,-281.91 738.45,-278.99\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"745.46,-278.5 738.7,-282.13 741.97,-278.74 738.48,-278.99 738.48,-278.99 738.48,-278.99 741.97,-278.74 738.26,-275.84 745.46,-278.5 745.46,-278.5\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"597\" y=\"-284.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;5 -->\n",
"<g id=\"E30\" class=\"edge\">\n",
"<title>7&#45;&gt;5</title>\n",
"<g id=\"a_E30\"><a xlink:title=\"7&#45;&gt;5&#10;#30\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M482.2,-246.19C517.13,-290.76 633.07,-425 762.5,-425 762.5,-425 762.5,-425 1195,-425 1275.74,-425 1307.72,-306.41 1317.94,-253.72\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1319.24,-246.74 1321.05,-254.2 1318.6,-250.18 1317.95,-253.62 1317.95,-253.62 1317.95,-253.62 1318.6,-250.18 1314.86,-253.04 1319.24,-246.74 1319.24,-246.74\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"879\" y=\"-428.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;7 -->\n",
"<g id=\"E31\" class=\"edge\">\n",
"<title>7&#45;&gt;7</title>\n",
"<g id=\"a_E31\"><a xlink:title=\"7&#45;&gt;7&#10;#31\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M458.74,-246.04C454.35,-256.91 458.27,-268 470.5,-268 480.06,-268 484.54,-261.23 483.95,-253.09\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"482.26,-246.04 486.95,-252.11 483.07,-249.45 483.89,-252.85 483.89,-252.85 483.89,-252.85 483.07,-249.45 480.83,-253.58 482.26,-246.04 482.26,-246.04\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"442\" y=\"-285.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"430.5\" y=\"-271.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"446.5\" y=\"-271.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"462.5\" y=\"-271.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"478.5\" y=\"-271.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"494.5\" y=\"-271.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#e31a1c\">❺</text>\n",
"</g>\n",
"<!-- 9 -->\n",
"<g id=\"S9\" class=\"node\">\n",
"<title>9</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"623.5\" cy=\"-181\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"623.5\" y=\"-177.3\" font-family=\"Lato\" font-size=\"14.00\">9</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;9 -->\n",
"<g id=\"E32\" class=\"edge\">\n",
"<title>7&#45;&gt;9</title>\n",
"<g id=\"a_E32\"><a xlink:title=\"7&#45;&gt;9&#10;#32\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M488.48,-230.56C510.18,-228.27 548.58,-222.68 579,-210 587.38,-206.51 595.85,-201.32 603.06,-196.29\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"608.79,-192.15 604.97,-198.8 605.96,-194.2 603.12,-196.25 603.12,-196.25 603.12,-196.25 605.96,-194.2 601.27,-193.7 608.79,-192.15 608.79,-192.15\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"520.5\" y=\"-244.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"523\" y=\"-230.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"539\" y=\"-230.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"555\" y=\"-230.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;2 -->\n",
"<g id=\"E33\" class=\"edge\">\n",
"<title>8&#45;&gt;2</title>\n",
"<g id=\"a_E33\"><a xlink:title=\"8&#45;&gt;2&#10;#33\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1181.49,-269.11C1175.14,-275.63 1166.78,-283.12 1158,-288 1066,-339.12 1034.27,-337.64 930,-352 874.31,-359.67 852.14,-359.13 806,-327 794.96,-319.31 785.2,-307.94 777.92,-297.98\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"773.72,-292.01 780.33,-295.92 775.74,-294.87 777.75,-297.73 777.75,-297.73 777.75,-297.73 775.74,-294.87 775.17,-299.54 773.72,-292.01 773.72,-292.01\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"953.5\" y=\"-366.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"956\" y=\"-352.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"972\" y=\"-352.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"<text text-anchor=\"start\" x=\"988\" y=\"-352.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#e31a1c\">❺</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;5 -->\n",
"<g id=\"E34\" class=\"edge\">\n",
"<title>8&#45;&gt;5</title>\n",
"<g id=\"a_E34\"><a xlink:title=\"8&#45;&gt;5&#10;#34\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1201.38,-239.39C1206.95,-227.44 1216.32,-212.2 1230,-205 1252.42,-193.2 1262.8,-197.5 1287,-205 1292.64,-206.75 1298.18,-209.75 1303.13,-213.06\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1309.05,-217.33 1301.53,-215.79 1306.21,-215.28 1303.37,-213.23 1303.37,-213.23 1303.37,-213.23 1306.21,-215.28 1305.22,-210.68 1309.05,-217.33 1309.05,-217.33\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"1232\" y=\"-222.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1234.5\" y=\"-208.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"1250.5\" y=\"-208.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"1266.5\" y=\"-208.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;5 -->\n",
"<g id=\"E35\" class=\"edge\">\n",
"<title>8&#45;&gt;5</title>\n",
"<g id=\"a_E35\"><a xlink:title=\"8&#45;&gt;5&#10;#35\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1211.86,-252.41C1233.97,-247.71 1272.89,-239.44 1298.05,-234.09\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1305.07,-232.6 1298.87,-237.14 1301.64,-233.33 1298.22,-234.06 1298.22,-234.06 1298.22,-234.06 1301.64,-233.33 1297.56,-230.97 1305.07,-232.6 1305.07,-232.6\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"1234\" y=\"-266.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1242.5\" y=\"-252.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"1258.5\" y=\"-252.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;8 -->\n",
"<g id=\"E36\" class=\"edge\">\n",
"<title>8&#45;&gt;8</title>\n",
"<g id=\"a_E36\"><a xlink:title=\"8&#45;&gt;8&#10;#36\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1183.29,-270.79C1179.81,-281.42 1183.38,-292 1194,-292 1202.13,-292 1206.13,-285.8 1206,-278.12\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1204.71,-270.79 1209.02,-277.14 1205.31,-274.24 1205.92,-277.69 1205.92,-277.69 1205.92,-277.69 1205.31,-274.24 1202.82,-278.23 1204.71,-270.79 1204.71,-270.79\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"1165.5\" y=\"-309.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1162\" y=\"-295.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"1178\" y=\"-295.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"1194\" y=\"-295.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"1210\" y=\"-295.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#e31a1c\">❺</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;2 -->\n",
"<g id=\"E37\" class=\"edge\">\n",
"<title>9&#45;&gt;2</title>\n",
"<g id=\"a_E37\"><a xlink:title=\"9&#45;&gt;2&#10;#37\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M638.75,-190.91C663.33,-208.01 713.8,-243.12 742.1,-262.81\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"748.12,-267 740.58,-265.59 745.25,-265 742.38,-263 742.38,-263 742.38,-263 745.25,-265 744.17,-260.41 748.12,-267 748.12,-267\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"668\" y=\"-249.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;3 -->\n",
"<g id=\"E38\" class=\"edge\">\n",
"<title>9&#45;&gt;3</title>\n",
"<g id=\"a_E38\"><a xlink:title=\"9&#45;&gt;3&#10;#38\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M641.36,-177.04C680.02,-168.52 777.97,-150.15 859,-162 865.76,-162.99 872.93,-164.8 879.45,-166.76\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"886.23,-168.91 878.6,-169.79 882.89,-167.85 879.56,-166.79 879.56,-166.79 879.56,-166.79 882.89,-167.85 880.51,-163.79 886.23,-168.91 886.23,-168.91\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"739\" y=\"-165.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;7 -->\n",
"<g id=\"E39\" class=\"edge\">\n",
"<title>9&#45;&gt;7</title>\n",
"<g id=\"a_E39\"><a xlink:title=\"9&#45;&gt;7&#10;#39\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M605.88,-176.05C583.89,-170.48 544.47,-163.9 515,-178 501.16,-184.62 490.33,-198.03 482.93,-209.82\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"479.18,-216.16 480.03,-208.53 480.96,-213.15 482.74,-210.14 482.74,-210.14 482.74,-210.14 480.96,-213.15 485.45,-211.74 479.18,-216.16 479.18,-216.16\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"518.5\" y=\"-195.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"515\" y=\"-181.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"531\" y=\"-181.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"547\" y=\"-181.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"563\" y=\"-181.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#e31a1c\">❺</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;9 -->\n",
"<g id=\"E40\" class=\"edge\">\n",
"<title>9&#45;&gt;9</title>\n",
"<g id=\"a_E40\"><a xlink:title=\"9&#45;&gt;9&#10;#40\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M612.07,-195.04C607.8,-205.91 611.61,-217 623.5,-217 632.79,-217 637.15,-210.23 636.57,-202.09\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"634.93,-195.04 639.59,-201.14 635.73,-198.45 636.52,-201.86 636.52,-201.86 636.52,-201.86 635.73,-198.45 633.45,-202.57 634.93,-195.04 634.93,-195.04\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"597\" y=\"-234.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"607.5\" y=\"-220.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"623.5\" y=\"-220.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n",
"</div><div><?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Title: acd Pages: 1 -->\n",
"<svg width=\"1355pt\" height=\"458pt\"\n",
" viewBox=\"0.00 0.00 1354.97 457.97\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"acd0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 453.97)\">\n",
"<title>acd</title>\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-453.97 1350.97,-453.97 1350.97,4 -4,4\"/>\n",
"<text text-anchor=\"middle\" x=\"673.48\" y=\"-418.77\" font-family=\"Times,serif\" font-size=\"14.00\">min odd</text>\n",
"<!-- 0 -->\n",
"<g id=\"N0\" class=\"node acdS2\n",
" acdS3\n",
" acdS5\n",
" acdS6\n",
" acdS8\n",
"\">\n",
"<title>0</title>\n",
"<polygon fill=\"white\" stroke=\"black\" points=\"586.67,-383.18 430.67,-383.18 430.67,-300.18 586.67,-300.18 586.67,-383.18\"/>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-367.98\" font-family=\"Times,serif\" font-size=\"14.00\">SCC #0</text>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-352.98\" font-family=\"Times,serif\" font-size=\"14.00\">T: 9&#45;16,21&#45;28,33&#45;36</text>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-337.98\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2,3,4,5}</text>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-322.98\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 2,3,5,6,8</text>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-307.98\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 0</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"N4\" class=\"node acdS2\n",
" acdS3\n",
" acdS5\n",
"\">\n",
"<title>4</title>\n",
"<ellipse fill=\"white\" stroke=\"black\" cx=\"116.67\" cy=\"-177.69\" rx=\"116.85\" ry=\"58.88\"/>\n",
"<text text-anchor=\"middle\" x=\"116.67\" y=\"-203.99\" font-family=\"Times,serif\" font-size=\"14.00\">T: 10,12,13,15,21,22</text>\n",
"<text text-anchor=\"middle\" x=\"116.67\" y=\"-188.99\" font-family=\"Times,serif\" font-size=\"14.00\">{2,4,5}</text>\n",
"<text text-anchor=\"middle\" x=\"116.67\" y=\"-173.99\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 2,3,5</text>\n",
"<text text-anchor=\"middle\" x=\"116.67\" y=\"-158.99\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 1</text>\n",
"<text text-anchor=\"middle\" x=\"116.67\" y=\"-143.99\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;4&gt;</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;4 -->\n",
"<g id=\"acd0_edge1\" class=\"edge\">\n",
"<title>0&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M430.52,-311.35C377.27,-291.04 305.34,-262.99 242.67,-236.38 232.31,-231.98 221.53,-227.26 210.82,-222.49\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"212,-219.18 201.45,-218.28 209.14,-225.57 212,-219.18\"/>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"N5\" class=\"node acdS5\n",
" acdS8\n",
"\">\n",
"<title>5</title>\n",
"<ellipse fill=\"white\" stroke=\"black\" cx=\"336.67\" cy=\"-177.69\" rx=\"84.71\" ry=\"48.17\"/>\n",
"<text text-anchor=\"middle\" x=\"336.67\" y=\"-196.49\" font-family=\"Times,serif\" font-size=\"14.00\">T: 23,24,34,36</text>\n",
"<text text-anchor=\"middle\" x=\"336.67\" y=\"-181.49\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2,3,5}</text>\n",
"<text text-anchor=\"middle\" x=\"336.67\" y=\"-166.49\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 5,8</text>\n",
"<text text-anchor=\"middle\" x=\"336.67\" y=\"-151.49\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;5 -->\n",
"<g id=\"acd0_edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M465.27,-299.8C441.55,-277.46 412.05,-249.68 387.28,-226.36\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"389.44,-223.58 379.76,-219.27 384.64,-228.68 389.44,-223.58\"/>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"N6\" class=\"node acdS3\n",
" acdS6\n",
"\">\n",
"<title>6</title>\n",
"<ellipse fill=\"white\" stroke=\"black\" cx=\"508.67\" cy=\"-177.69\" rx=\"69.09\" ry=\"48.17\"/>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-196.49\" font-family=\"Times,serif\" font-size=\"14.00\">T: 14,16,26</text>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-181.49\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2,3,5}</text>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-166.49\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 3,6</text>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-151.49\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;6 -->\n",
"<g id=\"acd0_edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M508.67,-299.8C508.67,-280.47 508.67,-257.06 508.67,-235.99\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"512.17,-235.87 508.67,-225.87 505.17,-235.87 512.17,-235.87\"/>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"N7\" class=\"node acdS2\n",
"\">\n",
"<title>7</title>\n",
"<ellipse fill=\"white\" stroke=\"black\" cx=\"655.67\" cy=\"-177.69\" rx=\"59.29\" ry=\"58.88\"/>\n",
"<text text-anchor=\"middle\" x=\"655.67\" y=\"-203.99\" font-family=\"Times,serif\" font-size=\"14.00\">T: 9</text>\n",
"<text text-anchor=\"middle\" x=\"655.67\" y=\"-188.99\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2,3,5}</text>\n",
"<text text-anchor=\"middle\" x=\"655.67\" y=\"-173.99\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 2</text>\n",
"<text text-anchor=\"middle\" x=\"655.67\" y=\"-158.99\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 1</text>\n",
"<text text-anchor=\"middle\" x=\"655.67\" y=\"-143.99\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;7&gt;</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;7 -->\n",
"<g id=\"acd0_edge4\" class=\"edge\">\n",
"<title>0&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M545.77,-299.8C565.1,-278.5 588.93,-252.24 609.45,-229.62\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"612.14,-231.86 616.27,-222.11 606.96,-227.16 612.14,-231.86\"/>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"N8\" class=\"node acdS3\n",
" acdS5\n",
"\">\n",
"<title>8</title>\n",
"<ellipse fill=\"white\" stroke=\"black\" cx=\"817.67\" cy=\"-177.69\" rx=\"84.71\" ry=\"48.17\"/>\n",
"<text text-anchor=\"middle\" x=\"817.67\" y=\"-196.49\" font-family=\"Times,serif\" font-size=\"14.00\">T: 14,15,22,23</text>\n",
"<text text-anchor=\"middle\" x=\"817.67\" y=\"-181.49\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2,3,4}</text>\n",
"<text text-anchor=\"middle\" x=\"817.67\" y=\"-166.49\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 3,5</text>\n",
"<text text-anchor=\"middle\" x=\"817.67\" y=\"-151.49\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;8 -->\n",
"<g id=\"acd0_edge5\" class=\"edge\">\n",
"<title>0&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M586.73,-305.08C627.95,-285.72 679.1,-260.79 723.67,-236.38 733.41,-231.04 743.57,-225.16 753.45,-219.26\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"755.28,-222.24 762.04,-214.08 751.67,-216.25 755.28,-222.24\"/>\n",
"</g>\n",
"<!-- 11 -->\n",
"<g id=\"N11\" class=\"node acdS5\n",
"\">\n",
"<title>11</title>\n",
"<polygon fill=\"white\" stroke=\"black\" points=\"366.17,-83 307.17,-83 307.17,0 366.17,0 366.17,-83\"/>\n",
"<text text-anchor=\"middle\" x=\"336.67\" y=\"-67.8\" font-family=\"Times,serif\" font-size=\"14.00\">T: 23</text>\n",
"<text text-anchor=\"middle\" x=\"336.67\" y=\"-52.8\" font-family=\"Times,serif\" font-size=\"14.00\">{1,3}</text>\n",
"<text text-anchor=\"middle\" x=\"336.67\" y=\"-37.8\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 5</text>\n",
"<text text-anchor=\"middle\" x=\"336.67\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 2</text>\n",
"<text text-anchor=\"middle\" x=\"336.67\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;11&gt;</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;11 -->\n",
"<g id=\"acd0_edge8\" class=\"edge\">\n",
"<title>5&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M336.67,-129.38C336.67,-117.71 336.67,-105.16 336.67,-93.33\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"340.17,-93.15 336.67,-83.15 333.17,-93.15 340.17,-93.15\"/>\n",
"</g>\n",
"<!-- 12 -->\n",
"<g id=\"N12\" class=\"node acdS3\n",
"\">\n",
"<title>12</title>\n",
"<polygon fill=\"white\" stroke=\"black\" points=\"538.17,-83 479.17,-83 479.17,0 538.17,0 538.17,-83\"/>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-67.8\" font-family=\"Times,serif\" font-size=\"14.00\">T: 14</text>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-52.8\" font-family=\"Times,serif\" font-size=\"14.00\">{1,3}</text>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-37.8\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 3</text>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 2</text>\n",
"<text text-anchor=\"middle\" x=\"508.67\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;12&gt;</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;12 -->\n",
"<g id=\"acd0_edge9\" class=\"edge\">\n",
"<title>6&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M508.67,-129.38C508.67,-117.71 508.67,-105.16 508.67,-93.33\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"512.17,-93.15 508.67,-83.15 505.17,-93.15 512.17,-93.15\"/>\n",
"</g>\n",
"<!-- 13 -->\n",
"<g id=\"N13\" class=\"node acdS3\n",
"\">\n",
"<title>13</title>\n",
"<polygon fill=\"white\" stroke=\"black\" points=\"808.17,-83 749.17,-83 749.17,0 808.17,0 808.17,-83\"/>\n",
"<text text-anchor=\"middle\" x=\"778.67\" y=\"-67.8\" font-family=\"Times,serif\" font-size=\"14.00\">T: 14</text>\n",
"<text text-anchor=\"middle\" x=\"778.67\" y=\"-52.8\" font-family=\"Times,serif\" font-size=\"14.00\">{1,3}</text>\n",
"<text text-anchor=\"middle\" x=\"778.67\" y=\"-37.8\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 3</text>\n",
"<text text-anchor=\"middle\" x=\"778.67\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 2</text>\n",
"<text text-anchor=\"middle\" x=\"778.67\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;13&gt;</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;13 -->\n",
"<g id=\"acd0_edge10\" class=\"edge\">\n",
"<title>8&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M804.14,-130.13C800.64,-118.07 796.84,-105.02 793.28,-92.77\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"796.64,-91.78 790.49,-83.16 789.92,-93.74 796.64,-91.78\"/>\n",
"</g>\n",
"<!-- 14 -->\n",
"<g id=\"N14\" class=\"node acdS5\n",
"\">\n",
"<title>14</title>\n",
"<polygon fill=\"white\" stroke=\"black\" points=\"885.17,-83 826.17,-83 826.17,0 885.17,0 885.17,-83\"/>\n",
"<text text-anchor=\"middle\" x=\"855.67\" y=\"-67.8\" font-family=\"Times,serif\" font-size=\"14.00\">T: 23</text>\n",
"<text text-anchor=\"middle\" x=\"855.67\" y=\"-52.8\" font-family=\"Times,serif\" font-size=\"14.00\">{1,3}</text>\n",
"<text text-anchor=\"middle\" x=\"855.67\" y=\"-37.8\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 5</text>\n",
"<text text-anchor=\"middle\" x=\"855.67\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 2</text>\n",
"<text text-anchor=\"middle\" x=\"855.67\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;14&gt;</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;14 -->\n",
"<g id=\"acd0_edge11\" class=\"edge\">\n",
"<title>8&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M830.86,-130.13C834.24,-118.19 837.89,-105.28 841.33,-93.14\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"844.8,-93.73 844.16,-83.16 838.07,-91.83 844.8,-93.73\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"N1\" class=\"node acdS7\n",
" acdS9\n",
"\">\n",
"<title>1</title>\n",
"<ellipse fill=\"white\" stroke=\"black\" cx=\"948.67\" cy=\"-341.68\" rx=\"84.71\" ry=\"58.88\"/>\n",
"<text text-anchor=\"middle\" x=\"948.67\" y=\"-367.98\" font-family=\"Times,serif\" font-size=\"14.00\">SCC #1</text>\n",
"<text text-anchor=\"middle\" x=\"948.67\" y=\"-352.98\" font-family=\"Times,serif\" font-size=\"14.00\">T: 31,32,39,40</text>\n",
"<text text-anchor=\"middle\" x=\"948.67\" y=\"-337.98\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3,5}</text>\n",
"<text text-anchor=\"middle\" x=\"948.67\" y=\"-322.98\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 7,9</text>\n",
"<text text-anchor=\"middle\" x=\"948.67\" y=\"-307.98\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 1</text>\n",
"</g>\n",
"<!-- 9 -->\n",
"<g id=\"N9\" class=\"node acdS9\n",
"\">\n",
"<title>9</title>\n",
"<polygon fill=\"white\" stroke=\"black\" points=\"977.17,-219.19 920.17,-219.19 920.17,-136.19 977.17,-136.19 977.17,-219.19\"/>\n",
"<text text-anchor=\"middle\" x=\"948.67\" y=\"-203.99\" font-family=\"Times,serif\" font-size=\"14.00\">T: 40</text>\n",
"<text text-anchor=\"middle\" x=\"948.67\" y=\"-188.99\" font-family=\"Times,serif\" font-size=\"14.00\">{1,3}</text>\n",
"<text text-anchor=\"middle\" x=\"948.67\" y=\"-173.99\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 9</text>\n",
"<text text-anchor=\"middle\" x=\"948.67\" y=\"-158.99\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 2</text>\n",
"<text text-anchor=\"middle\" x=\"948.67\" y=\"-143.99\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;9&gt;</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;9 -->\n",
"<g id=\"acd0_edge6\" class=\"edge\">\n",
"<title>1&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M948.67,-282.65C948.67,-265.36 948.67,-246.55 948.67,-229.74\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"952.17,-229.56 948.67,-219.56 945.17,-229.56 952.17,-229.56\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"N2\" class=\"node acdS1\n",
" acdS4\n",
"\">\n",
"<title>2</title>\n",
"<ellipse fill=\"white\" stroke=\"black\" cx=\"1120.67\" cy=\"-341.68\" rx=\"69.09\" ry=\"58.88\"/>\n",
"<text text-anchor=\"middle\" x=\"1120.67\" y=\"-367.98\" font-family=\"Times,serif\" font-size=\"14.00\">SCC #2</text>\n",
"<text text-anchor=\"middle\" x=\"1120.67\" y=\"-352.98\" font-family=\"Times,serif\" font-size=\"14.00\">T: 5,7,17</text>\n",
"<text text-anchor=\"middle\" x=\"1120.67\" y=\"-337.98\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3,5}</text>\n",
"<text text-anchor=\"middle\" x=\"1120.67\" y=\"-322.98\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 1,4</text>\n",
"<text text-anchor=\"middle\" x=\"1120.67\" y=\"-307.98\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 1</text>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"N10\" class=\"node acdS1\n",
"\">\n",
"<title>10</title>\n",
"<polygon fill=\"white\" stroke=\"black\" points=\"1150.17,-219.19 1091.17,-219.19 1091.17,-136.19 1150.17,-136.19 1150.17,-219.19\"/>\n",
"<text text-anchor=\"middle\" x=\"1120.67\" y=\"-203.99\" font-family=\"Times,serif\" font-size=\"14.00\">T: 5</text>\n",
"<text text-anchor=\"middle\" x=\"1120.67\" y=\"-188.99\" font-family=\"Times,serif\" font-size=\"14.00\">{1,3}</text>\n",
"<text text-anchor=\"middle\" x=\"1120.67\" y=\"-173.99\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 1</text>\n",
"<text text-anchor=\"middle\" x=\"1120.67\" y=\"-158.99\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 2</text>\n",
"<text text-anchor=\"middle\" x=\"1120.67\" y=\"-143.99\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;10&gt;</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;10 -->\n",
"<g id=\"acd0_edge7\" class=\"edge\">\n",
"<title>2&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1120.67,-282.65C1120.67,-265.36 1120.67,-246.55 1120.67,-229.74\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1124.17,-229.56 1120.67,-219.56 1117.17,-229.56 1124.17,-229.56\"/>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"N3\" class=\"node acdS0\n",
"\">\n",
"<title>3</title>\n",
"<ellipse fill=\"white\" stroke=\"black\" cx=\"1277.67\" cy=\"-341.68\" rx=\"69.09\" ry=\"69.09\"/>\n",
"<text text-anchor=\"middle\" x=\"1277.67\" y=\"-375.48\" font-family=\"Times,serif\" font-size=\"14.00\">SCC #3</text>\n",
"<text text-anchor=\"middle\" x=\"1277.67\" y=\"-360.48\" font-family=\"Times,serif\" font-size=\"14.00\">T: 1</text>\n",
"<text text-anchor=\"middle\" x=\"1277.67\" y=\"-345.48\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3,5}</text>\n",
"<text text-anchor=\"middle\" x=\"1277.67\" y=\"-330.48\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 0</text>\n",
"<text text-anchor=\"middle\" x=\"1277.67\" y=\"-315.48\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 1</text>\n",
"<text text-anchor=\"middle\" x=\"1277.67\" y=\"-300.48\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;3&gt;</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n",
"</div><script>\n",
"function acd0_clear(){\n",
" $(\"#acd0 .node,#acdaut0 .node,#acdaut0 .edge\")\n",
" .removeClass(\"acdhigh acdbold acdacc acdrej\");\n",
"};\n",
"function acd0_state(state){\n",
" acd0_clear();\n",
" $(\"#acd0 .acdS\" + state).addClass(\"acdhigh acdbold\");\n",
" $(\"#acdaut0 #S\" + state).addClass(\"acdbold\");\n",
"};\n",
"function acd0_edge(edge){\n",
" acd0_clear();\n",
" var theedge = $('#acdaut0 #E' + edge)\n",
" var classList = theedge.attr('class').split(/\\s+/);\n",
" $.each(classList, function(index, item) {\n",
" if (item.startsWith('acdN')) {\n",
" $(\"#acd0 #\" + item.substring(3)).addClass(\"acdhigh acdbold\");\n",
" }\n",
" });\n",
" theedge.addClass(\"acdbold\");\n",
"};\n",
"function acd0_node(node, acc){\n",
" acd0_clear();\n",
" $(\"#acdaut0 .acdN\" + node).addClass(acc\n",
" ? \"acdacc acdbold\"\n",
" : \"acdrej acdbold\");\n",
" $(\"#acd0 #N\" + node).addClass(\"acdbold acdhigh\");\n",
"};$(\"#acdaut0 #E9\").addClass(\"acdN0\");$(\"#acdaut0 #E10\").addClass(\"acdN0\");$(\"#acdaut0 #E11\").addClass(\"acdN0\");$(\"#acdaut0 #E12\").addClass(\"acdN0\");$(\"#acdaut0 #E13\").addClass(\"acdN0\");$(\"#acdaut0 #E14\").addClass(\"acdN0\");$(\"#acdaut0 #E15\").addClass(\"acdN0\");$(\"#acdaut0 #E16\").addClass(\"acdN0\");$(\"#acdaut0 #E21\").addClass(\"acdN0\");$(\"#acdaut0 #E22\").addClass(\"acdN0\");$(\"#acdaut0 #E23\").addClass(\"acdN0\");$(\"#acdaut0 #E24\").addClass(\"acdN0\");$(\"#acdaut0 #E25\").addClass(\"acdN0\");$(\"#acdaut0 #E26\").addClass(\"acdN0\");$(\"#acdaut0 #E27\").addClass(\"acdN0\");$(\"#acdaut0 #E28\").addClass(\"acdN0\");$(\"#acdaut0 #E33\").addClass(\"acdN0\");$(\"#acdaut0 #E34\").addClass(\"acdN0\");$(\"#acdaut0 #E35\").addClass(\"acdN0\");$(\"#acdaut0 #E36\").addClass(\"acdN0\");$(\"#acdaut0 #E31\").addClass(\"acdN1\");$(\"#acdaut0 #E32\").addClass(\"acdN1\");$(\"#acdaut0 #E39\").addClass(\"acdN1\");$(\"#acdaut0 #E40\").addClass(\"acdN1\");$(\"#acdaut0 #E5\").addClass(\"acdN2\");$(\"#acdaut0 #E7\").addClass(\"acdN2\");$(\"#acdaut0 #E17\").addClass(\"acdN2\");$(\"#acdaut0 #E1\").addClass(\"acdN3\");$(\"#acdaut0 #E10\").addClass(\"acdN4\");$(\"#acdaut0 #E12\").addClass(\"acdN4\");$(\"#acdaut0 #E13\").addClass(\"acdN4\");$(\"#acdaut0 #E15\").addClass(\"acdN4\");$(\"#acdaut0 #E21\").addClass(\"acdN4\");$(\"#acdaut0 #E22\").addClass(\"acdN4\");$(\"#acdaut0 #E23\").addClass(\"acdN5\");$(\"#acdaut0 #E24\").addClass(\"acdN5\");$(\"#acdaut0 #E34\").addClass(\"acdN5\");$(\"#acdaut0 #E36\").addClass(\"acdN5\");$(\"#acdaut0 #E14\").addClass(\"acdN6\");$(\"#acdaut0 #E16\").addClass(\"acdN6\");$(\"#acdaut0 #E26\").addClass(\"acdN6\");$(\"#acdaut0 #E9\").addClass(\"acdN7\");$(\"#acdaut0 #E14\").addClass(\"acdN8\");$(\"#acdaut0 #E15\").addClass(\"acdN8\");$(\"#acdaut0 #E22\").addClass(\"acdN8\");$(\"#acdaut0 #E23\").addClass(\"acdN8\");$(\"#acdaut0 #E40\").addClass(\"acdN9\");$(\"#acdaut0 #E5\").addClass(\"acdN10\");$(\"#acdaut0 #E23\").addClass(\"acdN11\");$(\"#acdaut0 #E14\").addClass(\"acdN12\");$(\"#acdaut0 #E14\").addClass(\"acdN13\");$(\"#acdaut0 #E23\").addClass(\"acdN14\");$(\"#acdaut0 #E1\").click(function(){acd0_edge(1);});$(\"#acdaut0 #E2\").click(function(){acd0_edge(2);});$(\"#acdaut0 #E3\").click(function(){acd0_edge(3);});$(\"#acdaut0 #E4\").click(function(){acd0_edge(4);});$(\"#acdaut0 #E5\").click(function(){acd0_edge(5);});$(\"#acdaut0 #E6\").click(function(){acd0_edge(6);});$(\"#acdaut0 #E7\").click(function(){acd0_edge(7);});$(\"#acdaut0 #E8\").click(function(){acd0_edge(8);});$(\"#acdaut0 #E9\").click(function(){acd0_edge(9);});$(\"#acdaut0 #E10\").click(function(){acd0_edge(10);});$(\"#acdaut0 #E11\").click(function(){acd0_edge(11);});$(\"#acdaut0 #E12\").click(function(){acd0_edge(12);});$(\"#acdaut0 #E13\").click(function(){acd0_edge(13);});$(\"#acdaut0 #E14\").click(function(){acd0_edge(14);});$(\"#acdaut0 #E15\").click(function(){acd0_edge(15);});$(\"#acdaut0 #E16\").click(function(){acd0_edge(16);});$(\"#acdaut0 #E17\").click(function(){acd0_edge(17);});$(\"#acdaut0 #E18\").click(function(){acd0_edge(18);});$(\"#acdaut0 #E19\").click(function(){acd0_edge(19);});$(\"#acdaut0 #E20\").click(function(){acd0_edge(20);});$(\"#acdaut0 #E21\").click(function(){acd0_edge(21);});$(\"#acdaut0 #E22\").click(function(){acd0_edge(22);});$(\"#acdaut0 #E23\").click(function(){acd0_edge(23);});$(\"#acdaut0 #E24\").click(function(){acd0_edge(24);});$(\"#acdaut0 #E25\").click(function(){acd0_edge(25);});$(\"#acdaut0 #E26\").click(function(){acd0_edge(26);});$(\"#acdaut0 #E27\").click(function(){acd0_edge(27);});$(\"#acdaut0 #E28\").click(function(){acd0_edge(28);});$(\"#acdaut0 #E29\").click(function(){acd0_edge(29);});$(\"#acdaut0 #E30\").click(function(){acd0_edge(30);});$(\"#acdaut0 #E31\").click(function(){acd0_edge(31);});$(\"#acdaut0 #E32\").click(function(){acd0_edge(32);});$(\"#acdaut0 #E33\").click(function(){acd0_edge(33);});$(\"#acdaut0 #E34\").click(function(){acd0_edge(34);});$(\"#acdaut0 #E35\").click(function(){acd0_edge(35);});$(\"#acdaut0 #E36\").click(function(){acd0_edge(36);});$(\"#acdaut0 #E37\").click(function(){acd0_edge(37);});$(\"#acdaut0 #E38\").click(function(){acd0_edge(38);});$(\"#acdaut0 #E39\").click(function(){acd0_edge(39);});$(\"#acdaut0 #E40\").click(function(){acd0_edge(40);});$(\"#acdaut0 #S0\").click(function(){acd0_state(0);});$(\"#acdaut0 #S1\").click(function(){acd0_state(1);});$(\"#acdaut0 #S2\").click(function(){acd0_state(2);});$(\"#acdaut0 #S3\").click(function(){acd0_state(3);});$(\"#acdaut0 #S4\").click(function(){acd0_state(4);});$(\"#acdaut0 #S5\").click(function(){acd0_state(5);});$(\"#acdaut0 #S6\").click(function(){acd0_state(6);});$(\"#acdaut0 #S7\").click(function(){acd0_state(7);});$(\"#acdaut0 #S8\").click(function(){acd0_state(8);});$(\"#acdaut0 #S9\").click(function(){acd0_state(9);});$(\"#acd0 #N0\").click(function(){acd0_node(0, 0);});$(\"#acd0 #N1\").click(function(){acd0_node(1, 1);});$(\"#acd0 #N2\").click(function(){acd0_node(2, 1);});$(\"#acd0 #N3\").click(function(){acd0_node(3, 1);});$(\"#acd0 #N4\").click(function(){acd0_node(4, 1);});$(\"#acd0 #N5\").click(function(){acd0_node(5, 1);});$(\"#acd0 #N6\").click(function(){acd0_node(6, 1);});$(\"#acd0 #N7\").click(function(){acd0_node(7, 1);});$(\"#acd0 #N8\").click(function(){acd0_node(8, 1);});$(\"#acd0 #N9\").click(function(){acd0_node(9, 0);});$(\"#acd0 #N10\").click(function(){acd0_node(10, 0);});$(\"#acd0 #N11\").click(function(){acd0_node(11, 0);});$(\"#acd0 #N12\").click(function(){acd0_node(12, 0);});$(\"#acd0 #N13\").click(function(){acd0_node(13, 0);});$(\"#acd0 #N14\").click(function(){acd0_node(14, 0);});</script>"
],
"text/plain": [
"<spot.acd; proxy of <Swig Object of type 'spot::acd *' at 0x7fa2682040f0> >"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"theacd = spot.acd(a3); theacd"
]
},
{
"cell_type": "markdown",
"id": "0f2f00c4",
"metadata": {},
"source": [
"The nodes of the ACD represent various bits of informations. First, the root of each tree shows the number of the maximal SCC (as computed by `spot.scc_info`). Trivial maximal SCCs (without cycles) are omitted from the construction.\n",
"\n",
"The numbers after `T:` list the edges that belong to the strongly connected component. The numbers are simply the indices of those edges in the automaton. Between braces are the colors covered by all those edges, to decide if a cycle formed by all these edges would be accepting. The numbers after `Q:` are the states touched by those edges. `lvl:` indicates the level of each node. Since some trees can have accepting roots while others have rejecting roots, the levels of some tree have been shifted down (i.e., the root start at levl 1 instead of 0) to ensure that all trees use the same parity. The parity of the decomposition (i.e., whether even levels are accepting) is indicated by the `is_even()` method."
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "859a993a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"theacd.is_even()"
]
},
{
"cell_type": "markdown",
"id": "3a3db431",
"metadata": {},
"source": [
"Finally, the leaves have their node number indicated between angle brackets, but again, node numbers can be obtained by hovering over the node with the mouse. This construction may step in more that just those indicated leaves because it will consider subtrees of the ACD.\n",
"\n",
"For each state of the original automaton, there exists a subtree in the ACD formed by all the node whose `Q:` contain that state. In the display of `theacd` above, you can click on any state of the input automaton to highlight the corresponding subtree of the ACD."
]
},
{
"cell_type": "markdown",
"id": "6595333d",
"metadata": {},
"source": [
"The `step()` method works similarly to Zielonka trees, except it uses edge number instead of colors. It is given a node of the ACD and the number of an edge whose source state touched belong to `Q:` in the current node. Then it walks up the tree until it finds a node that contains the given edge, emit the level of that node, and returns the left-most node of the next-branch in the sub-tree associated to the destination state.\n",
"\n",
"For instance, let's consider the edges 2->3 and 3->2 in `a1`. There are actually two edges going from 2 to 3. Hovering above those arrows tells us the number of these edges:\n",
" - 2->3 with {1,3} is edge 11\n",
" - 2->3 with {4} is edge 12\n",
" - 3->2 with {2,4,5} is edge 13\n",
" \n",
"Let us assume we are in node 4 of the ACD (a node that contains state 2) and want to step through edges 12 and 13:"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "a8bd0844",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(4, 1)"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"theacd.step(4, 12)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "93116a05",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(4, 1)"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"theacd.step(4, 13)"
]
},
{
"cell_type": "markdown",
"id": "1c6d4fe9",
"metadata": {},
"source": [
"In both case, we stay in node 4 and emit level 1, this is the level of node 4, which contains both edges.\n",
"\n",
"If we were to iterate through edges 11 and 13 instead, the story would be different:"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "23940b6a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(12, 0)"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"theacd.step(4, 11)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "de7cbd02",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(7, 0)"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"theacd.step(12, 13)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "8b0305d4",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(13, 0)"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"theacd.step(7, 11)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "4f0a10f5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(4, 0)"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"theacd.step(13, 13)"
]
},
{
"cell_type": "markdown",
"id": "ad201f45",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"And then it would loop again. \n",
"\n",
"Let's consider the first step. Node 4 does not contains edge 11, so we move up the tree until we find node 0 that contains it, and emit level 0. Then the destination of edge 11 is 3, so we consider the subtree associated to 3 (clicking on state 3 shows us this is the tree that has nodes 4,7,13 as leaves) and return the left-most node of the next branch: 12.\n",
"\n",
"When we read edge 13 from node 12, go all the way up to node 0 again, and consider the left-most node of the next branch in the tree for the destination 2: that's node 7."
]
},
{
"cell_type": "markdown",
"id": "04d7cc51",
"metadata": {},
"source": [
"The initial node we use to start this process can be any node that contains this state. The `first_branch(s)` method returns the left-most node containing state `s`."
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "2bd04c1f",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"theacd.first_branch(2)"
]
},
{
"cell_type": "markdown",
"id": "1015abb6",
"metadata": {},
"source": [
"This `first_branch()` method is actually being used when `step()` is used to take an edge between two SCCs. In that case the edge does not appear in the ACD, and `step()` will return the `first_branch()` for its destination, and level 0."
]
},
{
"cell_type": "markdown",
"id": "b89a6186",
"metadata": {},
"source": [
"An automaton can be paritized using ACD following a procedure similar to Zielonka tree, with this more complex stepping process."
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "e28035e8",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"729pt\" height=\"308pt\"\n",
" viewBox=\"0.00 0.00 729.00 308.28\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(0.35842293906810035 0.35842293906810035) rotate(0) translate(4 855)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-855 2027.33,-855 2027.33,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"930.17\" y=\"-836.8\" font-family=\"Lato\" font-size=\"14.00\">Fin(</text>\n",
"<text text-anchor=\"start\" x=\"953.17\" y=\"-836.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"969.17\" y=\"-836.8\" font-family=\"Lato\" font-size=\"14.00\">) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"1015.17\" y=\"-836.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"1031.17\" y=\"-836.8\" font-family=\"Lato\" font-size=\"14.00\">) | Fin(</text>\n",
"<text text-anchor=\"start\" x=\"1069.17\" y=\"-836.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"1085.17\" y=\"-836.8\" font-family=\"Lato\" font-size=\"14.00\">))</text>\n",
"<text text-anchor=\"start\" x=\"957.67\" y=\"-822.8\" font-family=\"Lato\" font-size=\"14.00\">[parity min odd 3]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"64.65\" cy=\"-527\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"52.15\" y=\"-523.3\" font-family=\"Lato\" font-size=\"14.00\">0#3</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.05,-527C1.94,-527 16.02,-527 30.59,-527\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.73,-527 30.73,-530.15 34.23,-527 30.73,-527 30.73,-527 30.73,-527 34.23,-527 30.73,-523.85 37.73,-527 37.73,-527\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M56.79,-544.41C55.33,-554.09 57.94,-563 64.65,-563 69.57,-563 72.29,-558.19 72.81,-551.81\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"72.5,-544.41 75.94,-551.27 72.65,-547.91 72.79,-551.4 72.79,-551.4 72.79,-551.4 72.65,-547.91 69.64,-551.53 72.5,-544.41 72.5,-544.41\"/>\n",
"<text text-anchor=\"start\" x=\"36.15\" y=\"-581.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"56.65\" y=\"-566.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"212.79\" cy=\"-527\" rx=\"32.49\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"195.79\" y=\"-523.3\" font-family=\"Lato\" font-size=\"14.00\">1#10</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M91.44,-527C114.06,-527 147.27,-527 173.08,-527\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"180.15,-527 173.15,-530.15 176.65,-527 173.15,-527 173.15,-527 173.15,-527 176.65,-527 173.15,-523.85 180.15,-527 180.15,-527\"/>\n",
"<text text-anchor=\"start\" x=\"109.3\" y=\"-545.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"127.8\" y=\"-530.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"799.82\" cy=\"-362\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"787.32\" y=\"-358.3\" font-family=\"Lato\" font-size=\"14.00\">2#4</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M69.04,-509.01C79.82,-457.98 118.21,-316 211.79,-316 211.79,-316 211.79,-316 658.53,-316 699.82,-316 744.69,-334.21 772.3,-347.72\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"778.59,-350.86 770.92,-350.55 775.46,-349.3 772.33,-347.74 772.33,-347.74 772.33,-347.74 775.46,-349.3 773.74,-344.92 778.59,-350.86 778.59,-350.86\"/>\n",
"<text text-anchor=\"start\" x=\"411.58\" y=\"-334.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"430.08\" y=\"-319.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"942.12\" cy=\"-548\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"929.62\" y=\"-544.3\" font-family=\"Lato\" font-size=\"14.00\">3#4</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;3 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>0&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M67.22,-545.14C73.39,-603.87 101.37,-785 211.79,-785 211.79,-785 211.79,-785 585.38,-785 739.47,-785 792.25,-746.57 897.47,-634 914.02,-616.29 925.81,-591.11 932.94,-572.56\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"935.52,-565.57 936.05,-573.22 934.31,-568.85 933.1,-572.13 933.1,-572.13 933.1,-572.13 934.31,-568.85 930.14,-571.04 935.52,-565.57 935.52,-565.57\"/>\n",
"<text text-anchor=\"start\" x=\"486.73\" y=\"-803.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"503.23\" y=\"-788.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M199.43,-543.66C196.46,-553.62 200.92,-563 212.79,-563 221.7,-563 226.43,-557.73 226.99,-550.89\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"226.15,-543.66 230.08,-550.26 226.55,-547.14 226.96,-550.62 226.96,-550.62 226.96,-550.62 226.55,-547.14 223.83,-550.98 226.15,-543.66 226.15,-543.66\"/>\n",
"<text text-anchor=\"start\" x=\"186.29\" y=\"-581.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"204.79\" y=\"-566.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>1&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M220.08,-509.34C236.5,-466.78 284.93,-362 363.94,-362 363.94,-362 363.94,-362 658.53,-362 695.2,-362 737.26,-362 765.68,-362\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"772.97,-362 765.97,-365.15 769.47,-362 765.97,-362 765.97,-362 765.97,-362 769.47,-362 765.97,-358.85 772.97,-362 772.97,-362\"/>\n",
"<text text-anchor=\"start\" x=\"484.73\" y=\"-380.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"503.23\" y=\"-365.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>4</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"364.94\" cy=\"-528\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"352.44\" y=\"-524.3\" font-family=\"Lato\" font-size=\"14.00\">4#2</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;4 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>1&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M235.12,-513.48C243.55,-508.88 253.55,-504.32 263.29,-502 287.93,-496.13 295.86,-495.28 320.29,-502 327.31,-503.93 334.33,-507.32 340.63,-511.02\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"346.67,-514.79 339.06,-513.75 343.7,-512.93 340.73,-511.08 340.73,-511.08 340.73,-511.08 343.7,-512.93 342.4,-508.41 346.67,-514.79 346.67,-514.79\"/>\n",
"<text text-anchor=\"start\" x=\"263.29\" y=\"-520.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"283.79\" y=\"-505.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>5</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1088.41\" cy=\"-550\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"1075.91\" y=\"-546.3\" font-family=\"Lato\" font-size=\"14.00\">5#4</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;5 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>1&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M218.03,-545.1C230.75,-594.33 273.41,-727 363.94,-727 363.94,-727 363.94,-727 943.12,-727 1020.96,-727 1064.28,-622.88 1080.24,-574.36\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1082.4,-567.62 1083.26,-575.25 1081.33,-570.95 1080.26,-574.29 1080.26,-574.29 1080.26,-574.29 1081.33,-570.95 1077.26,-573.32 1082.4,-567.62 1082.4,-567.62\"/>\n",
"<text text-anchor=\"start\" x=\"633.03\" y=\"-745.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"649.53\" y=\"-730.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>2&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M787.62,-378.29C784.68,-388.39 788.75,-398 799.82,-398 808.13,-398 812.49,-392.59 812.91,-385.63\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"812.02,-378.29 815.99,-384.86 812.44,-381.76 812.87,-385.24 812.87,-385.24 812.87,-385.24 812.44,-381.76 809.74,-385.62 812.02,-378.29 812.02,-378.29\"/>\n",
"<text text-anchor=\"start\" x=\"773.32\" y=\"-416.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"791.82\" y=\"-401.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>2&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M808.66,-379.18C816.08,-393.83 828.47,-414.58 844.47,-428 864.14,-444.5 879.19,-432.96 897.47,-451 917.55,-470.81 929.2,-501.51 935.34,-523.05\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"937.22,-529.98 932.35,-524.05 936.3,-526.6 935.39,-523.22 935.39,-523.22 935.39,-523.22 936.3,-526.6 938.43,-522.4 937.22,-529.98 937.22,-529.98\"/>\n",
"<text text-anchor=\"start\" x=\"846.47\" y=\"-469.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"862.97\" y=\"-454.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1232.56\" cy=\"-125\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"1220.06\" y=\"-121.3\" font-family=\"Lato\" font-size=\"14.00\">2#7</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;6 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>2&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M800.25,-343.78C800.3,-311.13 805.38,-242.63 844.47,-206 944.74,-112.05 1124.8,-115.49 1198.62,-121.47\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1205.84,-122.09 1198.6,-124.62 1202.36,-121.79 1198.87,-121.49 1198.87,-121.49 1198.87,-121.49 1202.36,-121.79 1199.14,-118.35 1205.84,-122.09 1205.84,-122.09\"/>\n",
"<text text-anchor=\"start\" x=\"986.77\" y=\"-153.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1007.27\" y=\"-138.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>7</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1990.84\" cy=\"-293\" rx=\"32.49\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"1973.84\" y=\"-289.3\" font-family=\"Lato\" font-size=\"14.00\">3#12</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;7 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>2&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M800.66,-343.89C800.97,-301.03 805.77,-190.91 844.47,-110 872.55,-51.29 876.04,0 941.12,0 941.12,0 941.12,0 1841.84,0 1961.16,0 1984.3,-195.98 1988.77,-267.38\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1989.19,-274.67 1985.64,-267.86 1988.99,-271.18 1988.79,-267.68 1988.79,-267.68 1988.79,-267.68 1988.99,-271.18 1991.93,-267.5 1989.19,-274.67 1989.19,-274.67\"/>\n",
"<text text-anchor=\"start\" x=\"1356.06\" y=\"-18.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1374.56\" y=\"-3.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;2 -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>3&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M928.2,-532.25C920.09,-523.11 909.02,-511.89 897.47,-504 876.27,-489.51 862.09,-499.67 844.47,-481 819.76,-454.81 808.81,-413.49 804.12,-387.08\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"802.96,-380.05 807.21,-386.44 803.53,-383.5 804.1,-386.95 804.1,-386.95 804.1,-386.95 803.53,-383.5 800.99,-387.47 802.96,-380.05 802.96,-380.05\"/>\n",
"<text text-anchor=\"start\" x=\"844.47\" y=\"-522.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"862.97\" y=\"-507.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;5 -->\n",
"<g id=\"edge16\" class=\"edge\">\n",
"<title>3&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M968.92,-548.36C992.77,-548.69 1028.36,-549.18 1054.31,-549.54\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1061.35,-549.64 1054.31,-552.69 1057.85,-549.59 1054.35,-549.54 1054.35,-549.54 1054.35,-549.54 1057.85,-549.59 1054.4,-546.39 1061.35,-549.64 1061.35,-549.64\"/>\n",
"<text text-anchor=\"start\" x=\"990.77\" y=\"-567.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1007.27\" y=\"-552.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;7 -->\n",
"<g id=\"edge15\" class=\"edge\">\n",
"<title>3&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M958.53,-562.26C966.4,-568.74 976.48,-575.86 986.77,-580 1215.04,-671.82 1289.5,-653 1535.55,-653 1535.55,-653 1535.55,-653 1841.84,-653 1914.49,-653 1969.5,-399.05 1985.26,-317.73\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1986.57,-310.85 1988.35,-318.32 1985.92,-314.29 1985.26,-317.73 1985.26,-317.73 1985.26,-317.73 1985.92,-314.29 1982.16,-317.13 1986.57,-310.85 1986.57,-310.85\"/>\n",
"<text text-anchor=\"start\" x=\"1433.06\" y=\"-671.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1451.56\" y=\"-656.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1088.41\" cy=\"-372\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"1075.91\" y=\"-368.3\" font-family=\"Lato\" font-size=\"14.00\">6#6</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;8 -->\n",
"<g id=\"edge17\" class=\"edge\">\n",
"<title>3&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M951.49,-530.83C959.54,-515.1 972.53,-491.51 986.77,-473 1010.86,-441.65 1044.07,-410.1 1065.64,-390.81\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1071.13,-385.94 1067.98,-392.94 1068.51,-388.26 1065.89,-390.58 1065.89,-390.58 1065.89,-390.58 1068.51,-388.26 1063.8,-388.23 1071.13,-385.94 1071.13,-385.94\"/>\n",
"<text text-anchor=\"start\" x=\"986.77\" y=\"-491.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1007.27\" y=\"-476.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;1 -->\n",
"<g id=\"edge18\" class=\"edge\">\n",
"<title>4&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M338.58,-530.72C332.59,-531.25 326.22,-531.73 320.29,-532 294.98,-533.16 288.59,-533.27 263.29,-532 259.52,-531.81 255.59,-531.54 251.66,-531.22\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"244.65,-530.6 251.9,-528.08 248.13,-530.91 251.62,-531.22 251.62,-531.22 251.62,-531.22 248.13,-530.91 251.34,-534.35 244.65,-530.6 244.65,-530.6\"/>\n",
"<text text-anchor=\"start\" x=\"265.29\" y=\"-550.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"283.79\" y=\"-535.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;2 -->\n",
"<g id=\"edge19\" class=\"edge\">\n",
"<title>4&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M386.26,-516.83C420.5,-498.31 492.21,-460.82 555.88,-436 642.06,-402.4 666.84,-403.46 755.18,-376 759.46,-374.67 763.98,-373.24 768.42,-371.83\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"775.29,-369.63 769.58,-374.77 771.96,-370.7 768.62,-371.76 768.62,-371.76 768.62,-371.76 771.96,-370.7 767.66,-368.76 775.29,-369.63 775.29,-369.63\"/>\n",
"<text text-anchor=\"start\" x=\"557.88\" y=\"-454.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"576.38\" y=\"-439.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;3 -->\n",
"<g id=\"edge20\" class=\"edge\">\n",
"<title>4&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M382.46,-541.9C390.44,-548.33 400.27,-555.88 409.58,-562 441.34,-582.85 449.98,-587.34 484.58,-603 602.91,-656.55 643.43,-643.04 773.18,-649 796.84,-650.09 804.31,-657.37 826.47,-649 868.28,-633.21 904.72,-594.45 924.74,-569.8\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"929.24,-564.16 927.34,-571.6 927.06,-566.9 924.88,-569.64 924.88,-569.64 924.88,-569.64 927.06,-566.9 922.41,-567.67 929.24,-564.16 929.24,-564.16\"/>\n",
"<text text-anchor=\"start\" x=\"633.03\" y=\"-664.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"649.53\" y=\"-649.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 9 -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>9</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"511.23\" cy=\"-528\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"498.73\" y=\"-524.3\" font-family=\"Lato\" font-size=\"14.00\">7#1</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;9 -->\n",
"<g id=\"edge21\" class=\"edge\">\n",
"<title>4&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M391.73,-528C415.59,-528 451.18,-528 477.13,-528\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"484.17,-528 477.17,-531.15 480.67,-528 477.17,-528 477.17,-528 477.17,-528 480.67,-528 477.17,-524.85 484.17,-528 484.17,-528\"/>\n",
"<text text-anchor=\"start\" x=\"409.58\" y=\"-546.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"430.08\" y=\"-531.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;2 -->\n",
"<g id=\"edge22\" class=\"edge\">\n",
"<title>5&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1074.7,-534.06C1066.5,-524.38 1055.25,-512.18 1043.77,-503 972.59,-446.13 875.92,-397.18 828.87,-374.87\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"822.3,-371.77 829.97,-371.91 825.46,-373.26 828.63,-374.76 828.63,-374.76 828.63,-374.76 825.46,-373.26 827.29,-377.61 822.3,-371.77 822.3,-371.77\"/>\n",
"<text text-anchor=\"start\" x=\"915.62\" y=\"-467.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"934.12\" y=\"-452.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;3 -->\n",
"<g id=\"edge23\" class=\"edge\">\n",
"<title>5&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1074.09,-534.81C1066.17,-526.97 1055.41,-518.18 1043.77,-514 1019.92,-505.44 1010.72,-505.77 986.77,-514 978.11,-516.97 969.85,-522.45 962.89,-528.15\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"957.37,-532.93 960.59,-525.97 960.01,-530.64 962.65,-528.35 962.65,-528.35 962.65,-528.35 960.01,-530.64 964.72,-530.73 957.37,-532.93 957.37,-532.93\"/>\n",
"<text text-anchor=\"start\" x=\"990.77\" y=\"-532.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1007.27\" y=\"-517.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>10</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1840.84\" cy=\"-293\" rx=\"32.49\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"1823.84\" y=\"-289.3\" font-family=\"Lato\" font-size=\"14.00\">5#11</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;10 -->\n",
"<g id=\"edge24\" class=\"edge\">\n",
"<title>5&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1111.29,-559.24C1118.15,-561.8 1125.83,-564.33 1133.06,-566 1255.57,-594.19 1289.93,-600.07 1415.06,-588 1484.46,-581.3 1505.53,-586.77 1569.05,-558 1690.21,-503.12 1788.91,-369.6 1825.05,-315.92\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1828.94,-310.07 1827.68,-317.64 1827,-312.98 1825.06,-315.9 1825.06,-315.9 1825.06,-315.9 1827,-312.98 1822.44,-314.15 1828.94,-310.07 1828.94,-310.07\"/>\n",
"<text text-anchor=\"start\" x=\"1433.06\" y=\"-604.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1451.56\" y=\"-589.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 11 -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>11</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1688.7\" cy=\"-295\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"1676.2\" y=\"-291.3\" font-family=\"Lato\" font-size=\"14.00\">8#5</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;11 -->\n",
"<g id=\"edge25\" class=\"edge\">\n",
"<title>5&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1115.13,-550.9C1209.16,-553.96 1530.81,-562.56 1569.05,-538 1646.8,-488.07 1675.13,-371.28 1684.07,-319.95\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1685.25,-312.87 1687.21,-320.29 1684.68,-316.32 1684.1,-319.77 1684.1,-319.77 1684.1,-319.77 1684.68,-316.32 1681,-319.25 1685.25,-312.87 1685.25,-312.87\"/>\n",
"<text text-anchor=\"start\" x=\"1354.06\" y=\"-572.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1374.56\" y=\"-557.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;2 -->\n",
"<g id=\"edge27\" class=\"edge\">\n",
"<title>6&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1207.14,-119.19C1171.49,-111.07 1102.99,-96.76 1043.77,-92 949.74,-84.45 902.11,-90.33 844.47,-165 804.87,-216.3 799.71,-296.32 799.89,-336.77\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"799.98,-343.85 796.75,-336.89 799.94,-340.35 799.9,-336.85 799.9,-336.85 799.9,-336.85 799.94,-340.35 803.04,-336.81 799.98,-343.85 799.98,-343.85\"/>\n",
"<text text-anchor=\"start\" x=\"988.77\" y=\"-110.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1007.27\" y=\"-95.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;6 -->\n",
"<g id=\"edge26\" class=\"edge\">\n",
"<title>6&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1220.01,-141.29C1216.99,-151.39 1221.17,-161 1232.56,-161 1241.1,-161 1245.59,-155.59 1246.03,-148.63\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1245.11,-141.29 1249.1,-147.85 1245.54,-144.76 1245.98,-148.24 1245.98,-148.24 1245.98,-148.24 1245.54,-144.76 1242.85,-148.63 1245.11,-141.29 1245.11,-141.29\"/>\n",
"<text text-anchor=\"start\" x=\"1204.06\" y=\"-179.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1224.56\" y=\"-164.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 12 -->\n",
"<g id=\"node14\" class=\"node\">\n",
"<title>12</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1382.56\" cy=\"-193\" rx=\"32.49\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"1365.56\" y=\"-189.3\" font-family=\"Lato\" font-size=\"14.00\">3#13</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;12 -->\n",
"<g id=\"edge28\" class=\"edge\">\n",
"<title>6&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1257.88,-130.61C1278.35,-135.87 1308.03,-144.75 1332.06,-157 1340.96,-161.54 1350,-167.6 1357.88,-173.45\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1363.65,-177.86 1356.18,-176.12 1360.87,-175.74 1358.09,-173.61 1358.09,-173.61 1358.09,-173.61 1360.87,-175.74 1360,-171.11 1363.65,-177.86 1363.65,-177.86\"/>\n",
"<text text-anchor=\"start\" x=\"1279.06\" y=\"-175.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1297.56\" y=\"-160.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;12 -->\n",
"<g id=\"edge29\" class=\"edge\">\n",
"<title>6&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1241.02,-142.29C1248.37,-157 1261.12,-177.24 1279.06,-187 1298.67,-197.66 1323.62,-199.33 1344,-198.25\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1351,-197.76 1344.23,-201.39 1347.51,-198.01 1344.02,-198.25 1344.02,-198.25 1344.02,-198.25 1347.51,-198.01 1343.8,-195.11 1351,-197.76 1351,-197.76\"/>\n",
"<text text-anchor=\"start\" x=\"1281.06\" y=\"-217.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1297.56\" y=\"-202.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;6 -->\n",
"<g id=\"edge30\" class=\"edge\">\n",
"<title>7&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1987.34,-274.95C1978.63,-219.92 1944.3,-58 1841.84,-58 1381.56,-58 1381.56,-58 1381.56,-58 1333.84,-58 1284.54,-87.27 1256.61,-107.12\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1250.64,-111.44 1254.46,-104.78 1253.48,-109.39 1256.31,-107.33 1256.31,-107.33 1256.31,-107.33 1253.48,-109.39 1258.16,-109.88 1250.64,-111.44 1250.64,-111.44\"/>\n",
"<text text-anchor=\"start\" x=\"1589.05\" y=\"-76.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1607.55\" y=\"-61.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;7 -->\n",
"<g id=\"edge31\" class=\"edge\">\n",
"<title>7&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1977.83,-309.66C1974.94,-319.62 1979.27,-329 1990.84,-329 1999.51,-329 2004.12,-323.73 2004.66,-316.89\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"2003.84,-309.66 2007.76,-316.27 2004.24,-313.14 2004.63,-316.62 2004.63,-316.62 2004.63,-316.62 2004.24,-313.14 2001.5,-316.97 2003.84,-309.66 2003.84,-309.66\"/>\n",
"<text text-anchor=\"start\" x=\"1964.34\" y=\"-347.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1982.84\" y=\"-332.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;8 -->\n",
"<g id=\"edge33\" class=\"edge\">\n",
"<title>7&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1982.15,-310.49C1963.89,-349.06 1913.96,-438 1841.84,-438 1614.55,-438 1614.55,-438 1614.55,-438 1431.72,-438 1385.91,-429.99 1204.06,-411 1172.43,-407.7 1162.78,-413.33 1133.06,-402 1125.56,-399.14 1118.1,-394.75 1111.53,-390.19\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1105.76,-386.01 1113.28,-387.57 1108.59,-388.06 1111.43,-390.12 1111.43,-390.12 1111.43,-390.12 1108.59,-388.06 1109.58,-392.67 1105.76,-386.01 1105.76,-386.01\"/>\n",
"<text text-anchor=\"start\" x=\"1508.05\" y=\"-455.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1528.55\" y=\"-440.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 13 -->\n",
"<g id=\"node15\" class=\"node\">\n",
"<title>13</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1536.55\" cy=\"-242\" rx=\"32.49\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"1519.55\" y=\"-238.3\" font-family=\"Lato\" font-size=\"14.00\">5#14</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;13 -->\n",
"<g id=\"edge32\" class=\"edge\">\n",
"<title>7&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1963.9,-282.66C1926.34,-268.25 1854.29,-242.68 1790.34,-232 1726.18,-221.28 1709.1,-228.11 1644.05,-227 1618.72,-226.57 1612.11,-223.29 1587.05,-227 1581.86,-227.77 1576.46,-228.97 1571.22,-230.36\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1564.2,-232.36 1570.07,-227.41 1567.56,-231.4 1570.93,-230.44 1570.93,-230.44 1570.93,-230.44 1567.56,-231.4 1571.79,-233.47 1564.2,-232.36 1564.2,-232.36\"/>\n",
"<text text-anchor=\"start\" x=\"1737.34\" y=\"-250.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1753.84\" y=\"-235.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;6 -->\n",
"<g id=\"edge34\" class=\"edge\">\n",
"<title>8&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1092.75,-353.95C1099.89,-316.48 1117.33,-231.67 1133.06,-207 1151.32,-178.36 1182.83,-154.72 1205.29,-140.3\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1211.37,-136.48 1207.12,-142.87 1208.4,-138.34 1205.44,-140.21 1205.44,-140.21 1205.44,-140.21 1208.4,-138.34 1203.76,-137.54 1211.37,-136.48 1211.37,-136.48\"/>\n",
"<text text-anchor=\"start\" x=\"1133.06\" y=\"-225.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1151.56\" y=\"-210.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;7 -->\n",
"<g id=\"edge35\" class=\"edge\">\n",
"<title>8&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1097.59,-388.99C1116.07,-424.64 1164.71,-504 1231.56,-504 1231.56,-504 1231.56,-504 1841.84,-504 1931.77,-504 1971.71,-373.96 1984.73,-318.05\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1986.32,-310.99 1987.85,-318.51 1985.55,-314.4 1984.78,-317.82 1984.78,-317.82 1984.78,-317.82 1985.55,-314.4 1981.71,-317.13 1986.32,-310.99 1986.32,-310.99\"/>\n",
"<text text-anchor=\"start\" x=\"1510.05\" y=\"-522.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1528.55\" y=\"-507.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;11 -->\n",
"<g id=\"edge37\" class=\"edge\">\n",
"<title>8&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1113.83,-378.39C1120.08,-379.96 1126.81,-381.6 1133.06,-383 1188.9,-395.53 1204.09,-402.45 1261.06,-397 1433.64,-380.48 1483.09,-387.4 1644.05,-323 1650.95,-320.24 1657.93,-316.35 1664.23,-312.35\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1670.27,-308.34 1666.18,-314.84 1667.35,-310.28 1664.44,-312.21 1664.44,-312.21 1664.44,-312.21 1667.35,-310.28 1662.7,-309.58 1670.27,-308.34 1670.27,-308.34\"/>\n",
"<text text-anchor=\"start\" x=\"1354.06\" y=\"-407.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1374.56\" y=\"-392.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;12 -->\n",
"<g id=\"edge36\" class=\"edge\">\n",
"<title>8&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1110.35,-361.62C1133.19,-350.41 1170.92,-332.26 1204.06,-318 1260.16,-293.86 1284.57,-306.4 1332.06,-268 1348.94,-254.35 1362.09,-233.39 1370.58,-217.09\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1373.93,-210.43 1373.6,-218.1 1372.36,-213.55 1370.79,-216.68 1370.79,-216.68 1370.79,-216.68 1372.36,-213.55 1367.97,-215.26 1373.93,-210.43 1373.93,-210.43\"/>\n",
"<text text-anchor=\"start\" x=\"1208.06\" y=\"-336.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1224.56\" y=\"-321.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;2 -->\n",
"<g id=\"edge38\" class=\"edge\">\n",
"<title>9&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M528.04,-513.93C536.01,-507.31 546.05,-499.64 555.88,-494 587.02,-476.13 597.15,-476.3 630.88,-464 685.53,-444.08 708.32,-457.47 755.18,-423 768.49,-413.21 779.32,-398.14 786.87,-385.43\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"790.51,-379.04 789.78,-386.68 788.78,-382.08 787.05,-385.12 787.05,-385.12 787.05,-385.12 788.78,-382.08 784.31,-383.56 790.51,-379.04 790.51,-379.04\"/>\n",
"<text text-anchor=\"start\" x=\"631.03\" y=\"-482.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"649.53\" y=\"-467.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;5 -->\n",
"<g id=\"edge39\" class=\"edge\">\n",
"<title>9&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M526.02,-543.24C534.09,-551.44 544.84,-561.24 555.88,-568 586.22,-586.58 595.87,-589.68 630.88,-596 739.68,-615.65 721.98,-697.46 1043.77,-583 1052.16,-580.02 1060.26,-574.79 1067.15,-569.37\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1072.64,-564.81 1069.27,-571.71 1069.95,-567.05 1067.25,-569.28 1067.25,-569.28 1067.25,-569.28 1069.95,-567.05 1065.24,-566.86 1072.64,-564.81 1072.64,-564.81\"/>\n",
"<text text-anchor=\"start\" x=\"775.32\" y=\"-660.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"791.82\" y=\"-645.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;9 -->\n",
"<g id=\"edge40\" class=\"edge\">\n",
"<title>9&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M498.68,-544.29C495.66,-554.39 499.84,-564 511.23,-564 519.78,-564 524.26,-558.59 524.7,-551.63\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"523.78,-544.29 527.77,-550.85 524.21,-547.76 524.65,-551.24 524.65,-551.24 524.65,-551.24 524.21,-547.76 521.52,-551.63 523.78,-544.29 523.78,-544.29\"/>\n",
"<text text-anchor=\"start\" x=\"482.73\" y=\"-582.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"503.23\" y=\"-567.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 14 -->\n",
"<g id=\"node16\" class=\"node\">\n",
"<title>14</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"657.53\" cy=\"-521\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"645.03\" y=\"-517.3\" font-family=\"Lato\" font-size=\"14.00\">9#9</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;14 -->\n",
"<g id=\"edge41\" class=\"edge\">\n",
"<title>9&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M529.99,-515.03C537.57,-510.25 546.77,-505.43 555.88,-503 580.36,-496.49 588.03,-498.08 612.88,-503 618.31,-504.08 623.91,-505.83 629.21,-507.84\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"635.74,-510.49 628.07,-510.78 632.49,-509.17 629.25,-507.86 629.25,-507.86 629.25,-507.86 632.49,-509.17 630.43,-504.94 635.74,-510.49 635.74,-510.49\"/>\n",
"<text text-anchor=\"start\" x=\"557.88\" y=\"-521.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"576.38\" y=\"-506.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;6 -->\n",
"<g id=\"edge42\" class=\"edge\">\n",
"<title>10&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1823.55,-277.47C1783.93,-240.9 1677.77,-150.07 1569.05,-118 1461.39,-86.24 1325.76,-106.25 1265.23,-118.1\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1258.23,-119.5 1264.48,-115.03 1261.66,-118.81 1265.1,-118.12 1265.1,-118.12 1265.1,-118.12 1261.66,-118.81 1265.71,-121.21 1258.23,-119.5 1258.23,-119.5\"/>\n",
"<text text-anchor=\"start\" x=\"1510.05\" y=\"-136.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1528.55\" y=\"-121.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;7 -->\n",
"<g id=\"edge43\" class=\"edge\">\n",
"<title>10&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1873.59,-293C1896.22,-293 1926.78,-293 1950.88,-293\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1958.14,-293 1951.14,-296.15 1954.64,-293 1951.14,-293 1951.14,-293 1951.14,-293 1954.64,-293 1951.14,-289.85 1958.14,-293 1958.14,-293\"/>\n",
"<text text-anchor=\"start\" x=\"1891.34\" y=\"-311.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1907.84\" y=\"-296.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;10 -->\n",
"<g id=\"edge44\" class=\"edge\">\n",
"<title>10&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1827.83,-309.66C1824.94,-319.62 1829.28,-329 1840.84,-329 1849.51,-329 1854.12,-323.73 1854.66,-316.89\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1853.85,-309.66 1857.76,-316.27 1854.24,-313.14 1854.63,-316.62 1854.63,-316.62 1854.63,-316.62 1854.24,-313.14 1851.5,-316.97 1853.85,-309.66 1853.85,-309.66\"/>\n",
"<text text-anchor=\"start\" x=\"1814.34\" y=\"-347.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1832.84\" y=\"-332.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;11 -->\n",
"<g id=\"edge45\" class=\"edge\">\n",
"<title>10&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1817.41,-280.06C1809.17,-276 1799.6,-272.04 1790.34,-270 1765.61,-264.53 1757.83,-263.49 1733.34,-270 1726.65,-271.78 1719.92,-274.86 1713.81,-278.26\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1707.46,-282.03 1711.87,-275.74 1710.47,-280.24 1713.48,-278.45 1713.48,-278.45 1713.48,-278.45 1710.47,-280.24 1715.08,-281.16 1707.46,-282.03 1707.46,-282.03\"/>\n",
"<text text-anchor=\"start\" x=\"1733.34\" y=\"-288.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1753.84\" y=\"-273.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;6 -->\n",
"<g id=\"edge46\" class=\"edge\">\n",
"<title>11&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1679.9,-277.84C1672.43,-262.9 1659.94,-241.42 1644.05,-227 1585.61,-173.97 1561.93,-167.68 1486.06,-146 1409.62,-124.16 1315.27,-122.69 1266.39,-123.71\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1259.23,-123.89 1266.15,-120.57 1262.73,-123.8 1266.23,-123.72 1266.23,-123.72 1266.23,-123.72 1262.73,-123.8 1266.31,-126.87 1259.23,-123.89 1259.23,-123.89\"/>\n",
"<text text-anchor=\"start\" x=\"1433.06\" y=\"-164.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1451.56\" y=\"-149.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;10 -->\n",
"<g id=\"edge47\" class=\"edge\">\n",
"<title>11&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1715.04,-298.4C1721.03,-299.06 1727.41,-299.66 1733.34,-300 1758.64,-301.44 1765.07,-301.78 1790.34,-300 1794.24,-299.73 1798.3,-299.33 1802.34,-298.87\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1809.55,-297.97 1802.99,-301.96 1806.08,-298.4 1802.6,-298.84 1802.6,-298.84 1802.6,-298.84 1806.08,-298.4 1802.21,-295.71 1809.55,-297.97 1809.55,-297.97\"/>\n",
"<text text-anchor=\"start\" x=\"1735.34\" y=\"-320.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1753.84\" y=\"-305.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;11 -->\n",
"<g id=\"edge49\" class=\"edge\">\n",
"<title>11&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1676.15,-311.29C1673.12,-321.39 1677.31,-331 1688.7,-331 1697.24,-331 1701.73,-325.59 1702.16,-318.63\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1701.24,-311.29 1705.24,-317.85 1701.68,-314.76 1702.11,-318.24 1702.11,-318.24 1702.11,-318.24 1701.68,-314.76 1698.99,-318.63 1701.24,-311.29 1701.24,-311.29\"/>\n",
"<text text-anchor=\"start\" x=\"1660.2\" y=\"-349.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1680.7\" y=\"-334.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;13 -->\n",
"<g id=\"edge48\" class=\"edge\">\n",
"<title>11&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1662.16,-291.9C1641.37,-288.79 1611.56,-283 1587.05,-273 1578.83,-269.65 1570.45,-264.97 1562.98,-260.26\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1556.94,-256.32 1564.52,-257.5 1559.87,-258.23 1562.8,-260.14 1562.8,-260.14 1562.8,-260.14 1559.87,-258.23 1561.08,-262.78 1556.94,-256.32 1556.94,-256.32\"/>\n",
"<text text-anchor=\"start\" x=\"1591.05\" y=\"-307.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1607.55\" y=\"-292.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;2 -->\n",
"<g id=\"edge50\" class=\"edge\">\n",
"<title>12&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1367.23,-209.05C1358.16,-217.97 1345.6,-228.21 1332.06,-233 1259.99,-258.48 1237,-220 1160.56,-220 941.12,-220 941.12,-220 941.12,-220 893.92,-220 877.71,-230.49 844.47,-264 824.32,-284.32 812.64,-315.54 806.51,-337.27\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"804.65,-344.24 803.41,-336.66 805.55,-340.86 806.46,-337.48 806.46,-337.48 806.46,-337.48 805.55,-340.86 809.5,-338.29 804.65,-344.24 804.65,-344.24\"/>\n",
"<text text-anchor=\"start\" x=\"1061.91\" y=\"-238.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1080.41\" y=\"-223.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;8 -->\n",
"<g id=\"edge53\" class=\"edge\">\n",
"<title>12&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1375.98,-210.9C1368.54,-232.72 1353.74,-269.91 1332.06,-296 1307.06,-326.08 1297.3,-333.29 1261.06,-348 1215.38,-366.54 1157.86,-371.18 1122.37,-372.12\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1115.14,-372.26 1122.08,-368.97 1118.64,-372.19 1122.14,-372.12 1122.14,-372.12 1122.14,-372.12 1118.64,-372.19 1122.2,-375.27 1115.14,-372.26 1115.14,-372.26\"/>\n",
"<text text-anchor=\"start\" x=\"1204.06\" y=\"-381.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1224.56\" y=\"-366.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;12 -->\n",
"<g id=\"edge51\" class=\"edge\">\n",
"<title>12&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1369.2,-209.66C1366.23,-219.62 1370.68,-229 1382.56,-229 1391.46,-229 1396.2,-223.73 1396.75,-216.89\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1395.92,-209.66 1399.85,-216.26 1396.32,-213.14 1396.72,-216.62 1396.72,-216.62 1396.72,-216.62 1396.32,-213.14 1393.59,-216.98 1395.92,-209.66 1395.92,-209.66\"/>\n",
"<text text-anchor=\"start\" x=\"1356.06\" y=\"-247.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1374.56\" y=\"-232.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;13 -->\n",
"<g id=\"edge52\" class=\"edge\">\n",
"<title>12&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1404.61,-206.23C1413.17,-211.14 1423.33,-216.39 1433.06,-220 1453.87,-227.73 1478.13,-233.09 1497.82,-236.58\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1504.85,-237.78 1497.42,-239.71 1501.4,-237.19 1497.95,-236.6 1497.95,-236.6 1497.95,-236.6 1501.4,-237.19 1498.48,-233.5 1504.85,-237.78 1504.85,-237.78\"/>\n",
"<text text-anchor=\"start\" x=\"1435.06\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1451.56\" y=\"-238.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 13&#45;&gt;2 -->\n",
"<g id=\"edge54\" class=\"edge\">\n",
"<title>13&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1515.23,-255.69C1506.6,-260.79 1496.21,-266.06 1486.06,-269 1335.06,-312.78 1288.82,-270.63 1133.06,-292 1021.05,-307.37 890.39,-339 831.9,-353.9\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"824.79,-355.72 830.8,-350.93 828.19,-354.85 831.58,-353.98 831.58,-353.98 831.58,-353.98 828.19,-354.85 832.36,-357.03 824.79,-355.72 824.79,-355.72\"/>\n",
"<text text-anchor=\"start\" x=\"1133.06\" y=\"-310.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1151.56\" y=\"-295.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 13&#45;&gt;11 -->\n",
"<g id=\"edge57\" class=\"edge\">\n",
"<title>13&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1566.2,-234.25C1588.56,-229.79 1619.78,-227.15 1644.05,-239 1658.01,-245.82 1668.8,-259.5 1676.16,-271.63\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1679.7,-277.78 1673.48,-273.28 1677.96,-274.75 1676.21,-271.71 1676.21,-271.71 1676.21,-271.71 1677.96,-274.75 1678.95,-270.15 1679.7,-277.78 1679.7,-277.78\"/>\n",
"<text text-anchor=\"start\" x=\"1587.05\" y=\"-257.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1607.55\" y=\"-242.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 13&#45;&gt;12 -->\n",
"<g id=\"edge55\" class=\"edge\">\n",
"<title>13&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1525.91,-224.72C1517.37,-211.38 1503.56,-193.89 1486.06,-186 1464.96,-176.49 1438.93,-178.42 1418.38,-182.63\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1411.36,-184.2 1417.5,-179.6 1414.77,-183.44 1418.19,-182.67 1418.19,-182.67 1418.19,-182.67 1414.77,-183.44 1418.88,-185.75 1411.36,-184.2 1411.36,-184.2\"/>\n",
"<text text-anchor=\"start\" x=\"1435.06\" y=\"-204.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1451.56\" y=\"-189.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 13&#45;&gt;13 -->\n",
"<g id=\"edge56\" class=\"edge\">\n",
"<title>13&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1523.19,-258.66C1520.22,-268.62 1524.68,-278 1536.55,-278 1545.46,-278 1550.19,-272.73 1550.75,-265.89\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1549.91,-258.66 1553.84,-265.26 1550.31,-262.14 1550.72,-265.62 1550.72,-265.62 1550.72,-265.62 1550.31,-262.14 1547.59,-265.98 1549.91,-258.66 1549.91,-258.66\"/>\n",
"<text text-anchor=\"start\" x=\"1510.05\" y=\"-296.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1528.55\" y=\"-281.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 14&#45;&gt;2 -->\n",
"<g id=\"edge58\" class=\"edge\">\n",
"<title>14&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M680.25,-511.42C705.28,-500.02 744.35,-481.04 755.18,-469 776.33,-445.47 787.98,-410.33 793.81,-386.81\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"795.44,-379.91 796.9,-387.45 794.64,-383.32 793.83,-386.72 793.83,-386.72 793.83,-386.72 794.64,-383.32 790.77,-386 795.44,-379.91 795.44,-379.91\"/>\n",
"<text text-anchor=\"start\" x=\"702.18\" y=\"-518.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"720.68\" y=\"-503.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 14&#45;&gt;3 -->\n",
"<g id=\"edge59\" class=\"edge\">\n",
"<title>14&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M681.85,-529.03C688.35,-530.97 695.48,-532.82 702.18,-534 775.02,-546.8 862.07,-548.57 908.36,-548.46\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"915.43,-548.43 908.45,-551.61 911.93,-548.44 908.43,-548.46 908.43,-548.46 908.43,-548.46 911.93,-548.44 908.42,-545.31 915.43,-548.43 915.43,-548.43\"/>\n",
"<text text-anchor=\"start\" x=\"775.32\" y=\"-564.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"791.82\" y=\"-549.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 14&#45;&gt;9 -->\n",
"<g id=\"edge60\" class=\"edge\">\n",
"<title>14&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M633.21,-528.65C626.7,-530.45 619.58,-532.1 612.88,-533 590.18,-536.06 564.38,-534.69 544.58,-532.61\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"537.57,-531.82 544.88,-529.47 541.05,-532.21 544.53,-532.6 544.53,-532.6 544.53,-532.6 541.05,-532.21 544.17,-535.73 537.57,-531.82 537.57,-531.82\"/>\n",
"<text text-anchor=\"start\" x=\"555.88\" y=\"-552.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"576.38\" y=\"-537.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 14&#45;&gt;14 -->\n",
"<g id=\"edge61\" class=\"edge\">\n",
"<title>14&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M645.33,-537.29C642.39,-547.39 646.45,-557 657.53,-557 665.83,-557 670.2,-551.59 670.62,-544.63\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"669.73,-537.29 673.7,-543.86 670.15,-540.76 670.57,-544.24 670.57,-544.24 670.57,-544.24 670.15,-540.76 667.44,-544.62 669.73,-537.29 669.73,-537.29\"/>\n",
"<text text-anchor=\"start\" x=\"631.03\" y=\"-575.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"649.53\" y=\"-560.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa2681f9d20> >"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p3 = spot.acd_transform(a3, True)\n",
"p3.copy_state_names_from(a3)\n",
"p3"
]
},
{
"cell_type": "markdown",
"id": "f039aeaa",
"metadata": {},
"source": [
"Note how the loops `2#4 → 3#4 → 2#4` and `2#4 → 3#12 → 2#7 → 3#13 → 2#4` corresponds to the two cycles stepped though before."
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "numerical-education",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a3.equivalent_to(p3)"
]
},
{
"cell_type": "markdown",
"id": "07aaab3a",
"metadata": {},
"source": [
"By default, the construction will try to save colors by not emitting colors between SCCs, and not emitting colors for the largest level of an SCC when the parity allows it. So this automaton can actually be paritized with two colors:"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "3e239a0c",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"729pt\" height=\"286pt\"\n",
" viewBox=\"0.00 0.00 729.00 285.67\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(0.35842293906810035 0.35842293906810035) rotate(0) translate(4 792)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-792 2027.33,-792 2027.33,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"961.17\" y=\"-773.8\" font-family=\"Lato\" font-size=\"14.00\">Fin(</text>\n",
"<text text-anchor=\"start\" x=\"984.17\" y=\"-773.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"1000.17\" y=\"-773.8\" font-family=\"Lato\" font-size=\"14.00\">) &amp; Inf(</text>\n",
"<text text-anchor=\"start\" x=\"1042.17\" y=\"-773.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"1058.17\" y=\"-773.8\" font-family=\"Lato\" font-size=\"14.00\">)</text>\n",
"<text text-anchor=\"start\" x=\"984.17\" y=\"-759.8\" font-family=\"Lato\" font-size=\"14.00\">[Rabin 1]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"64.65\" cy=\"-523\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"52.15\" y=\"-519.3\" font-family=\"Lato\" font-size=\"14.00\">0#3</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.05,-523C1.94,-523 16.02,-523 30.59,-523\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.73,-523 30.73,-526.15 34.23,-523 30.73,-523 30.73,-523 30.73,-523 34.23,-523 30.73,-519.85 37.73,-523 37.73,-523\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M56.79,-540.41C55.33,-550.09 57.94,-559 64.65,-559 69.57,-559 72.29,-554.19 72.81,-547.81\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"72.5,-540.41 75.94,-547.27 72.65,-543.91 72.79,-547.4 72.79,-547.4 72.79,-547.4 72.65,-543.91 69.64,-547.53 72.5,-540.41 72.5,-540.41\"/>\n",
"<text text-anchor=\"start\" x=\"36.15\" y=\"-577.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"56.65\" y=\"-562.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"212.79\" cy=\"-523\" rx=\"32.49\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"195.79\" y=\"-519.3\" font-family=\"Lato\" font-size=\"14.00\">1#10</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M91.44,-523C114.06,-523 147.27,-523 173.08,-523\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"180.15,-523 173.15,-526.15 176.65,-523 173.15,-523 173.15,-523 173.15,-523 176.65,-523 173.15,-519.85 180.15,-523 180.15,-523\"/>\n",
"<text text-anchor=\"start\" x=\"109.3\" y=\"-526.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"799.82\" cy=\"-380\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"787.32\" y=\"-376.3\" font-family=\"Lato\" font-size=\"14.00\">2#4</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M70.13,-505.22C83.17,-458.17 125.73,-334 211.79,-334 211.79,-334 211.79,-334 658.53,-334 699.82,-334 744.69,-352.21 772.3,-365.72\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"778.59,-368.86 770.92,-368.55 775.46,-367.3 772.33,-365.74 772.33,-365.74 772.33,-365.74 775.46,-367.3 773.74,-362.92 778.59,-368.86 778.59,-368.86\"/>\n",
"<text text-anchor=\"start\" x=\"411.58\" y=\"-337.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"942.12\" cy=\"-548\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"929.62\" y=\"-544.3\" font-family=\"Lato\" font-size=\"14.00\">3#4</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;3 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>0&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M68.88,-540.88C79.32,-592.31 117.09,-737 211.79,-737 211.79,-737 211.79,-737 585.38,-737 732.3,-737 787.94,-725.93 897.47,-628 914.34,-612.92 925.98,-589.72 932.97,-572.18\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"935.51,-565.53 935.96,-573.19 934.27,-568.8 933.02,-572.07 933.02,-572.07 933.02,-572.07 934.27,-568.8 930.07,-570.94 935.51,-565.53 935.51,-565.53\"/>\n",
"<text text-anchor=\"start\" x=\"486.73\" y=\"-740.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M199.43,-539.66C196.46,-549.62 200.92,-559 212.79,-559 221.7,-559 226.43,-553.73 226.99,-546.89\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"226.15,-539.66 230.08,-546.26 226.55,-543.14 226.96,-546.62 226.96,-546.62 226.96,-546.62 226.55,-543.14 223.83,-546.98 226.15,-539.66 226.15,-539.66\"/>\n",
"<text text-anchor=\"start\" x=\"186.29\" y=\"-562.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>1&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M221.87,-505.47C240.8,-467.28 291.94,-380 363.94,-380 363.94,-380 363.94,-380 658.53,-380 695.2,-380 737.26,-380 765.68,-380\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"772.97,-380 765.97,-383.15 769.47,-380 765.97,-380 765.97,-380 765.97,-380 769.47,-380 765.97,-376.85 772.97,-380 772.97,-380\"/>\n",
"<text text-anchor=\"start\" x=\"484.73\" y=\"-383.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>4</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"364.94\" cy=\"-524\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"352.44\" y=\"-520.3\" font-family=\"Lato\" font-size=\"14.00\">4#2</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;4 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>1&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M235.12,-509.48C243.55,-504.88 253.55,-500.32 263.29,-498 287.93,-492.13 295.86,-491.28 320.29,-498 327.31,-499.93 334.33,-503.32 340.63,-507.02\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"346.67,-510.79 339.06,-509.75 343.7,-508.93 340.73,-507.08 340.73,-507.08 340.73,-507.08 343.7,-508.93 342.4,-504.41 346.67,-510.79 346.67,-510.79\"/>\n",
"<text text-anchor=\"start\" x=\"263.29\" y=\"-516.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"283.79\" y=\"-501.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>5</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1088.41\" cy=\"-550\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"1075.91\" y=\"-546.3\" font-family=\"Lato\" font-size=\"14.00\">5#4</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;5 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>1&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M230.83,-538.3C240.01,-546.05 251.79,-555.22 263.29,-562 448.14,-670.95 513.11,-694 727.68,-694 727.68,-694 727.68,-694 943.12,-694 1010.34,-694 1057.24,-614.74 1076.97,-573.83\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1080.01,-567.37 1079.88,-575.04 1078.52,-570.54 1077.03,-573.7 1077.03,-573.7 1077.03,-573.7 1078.52,-570.54 1074.18,-572.36 1080.01,-567.37 1080.01,-567.37\"/>\n",
"<text text-anchor=\"start\" x=\"633.03\" y=\"-696.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>2&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M787.62,-396.29C784.68,-406.39 788.75,-416 799.82,-416 808.13,-416 812.49,-410.59 812.91,-403.63\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"812.02,-396.29 815.99,-402.86 812.44,-399.76 812.87,-403.24 812.87,-403.24 812.87,-403.24 812.44,-399.76 809.74,-403.62 812.02,-396.29 812.02,-396.29\"/>\n",
"<text text-anchor=\"start\" x=\"773.32\" y=\"-434.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"791.82\" y=\"-419.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>2&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M812.39,-395.88C820.47,-406.1 832.01,-419.09 844.47,-428 865.35,-442.94 879.19,-432.96 897.47,-451 917.55,-470.81 929.2,-501.51 935.34,-523.05\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"937.22,-529.98 932.35,-524.05 936.3,-526.6 935.39,-523.22 935.39,-523.22 935.39,-523.22 936.3,-526.6 938.43,-522.4 937.22,-529.98 937.22,-529.98\"/>\n",
"<text text-anchor=\"start\" x=\"846.47\" y=\"-469.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"862.97\" y=\"-454.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1232.56\" cy=\"-125\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"1220.06\" y=\"-121.3\" font-family=\"Lato\" font-size=\"14.00\">2#7</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;6 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>2&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M802.92,-362.06C807.94,-322.12 821.98,-227.65 844.47,-206 943.7,-110.47 1125.11,-114.92 1198.97,-121.32\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1206.2,-121.98 1198.94,-124.48 1202.71,-121.66 1199.23,-121.34 1199.23,-121.34 1199.23,-121.34 1202.71,-121.66 1199.51,-118.2 1206.2,-121.98 1206.2,-121.98\"/>\n",
"<text text-anchor=\"start\" x=\"986.77\" y=\"-152.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1007.27\" y=\"-137.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>7</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1990.84\" cy=\"-295\" rx=\"32.49\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"1973.84\" y=\"-291.3\" font-family=\"Lato\" font-size=\"14.00\">3#12</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;7 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>2&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M800.34,-361.87C799.84,-316.78 802.84,-196.85 844.47,-109 872.2,-50.49 876.37,0 941.12,0 941.12,0 941.12,0 1841.84,0 1962.09,0 1984.64,-198.23 1988.86,-269.7\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1989.26,-276.99 1985.74,-270.17 1989.07,-273.5 1988.88,-270 1988.88,-270 1988.88,-270 1989.07,-273.5 1992.03,-269.83 1989.26,-276.99 1989.26,-276.99\"/>\n",
"<text text-anchor=\"start\" x=\"1356.06\" y=\"-18.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1374.56\" y=\"-3.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;2 -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>3&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M928.2,-532.25C920.09,-523.11 909.02,-511.89 897.47,-504 876.27,-489.51 862.61,-499.17 844.47,-481 823.52,-460.02 811.93,-427.36 806.05,-404.89\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"804.34,-397.98 809.08,-404.01 805.18,-401.37 806.02,-404.77 806.02,-404.77 806.02,-404.77 805.18,-401.37 802.97,-405.53 804.34,-397.98 804.34,-397.98\"/>\n",
"<text text-anchor=\"start\" x=\"844.47\" y=\"-522.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"862.97\" y=\"-507.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;5 -->\n",
"<g id=\"edge16\" class=\"edge\">\n",
"<title>3&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M968.92,-548.36C992.77,-548.69 1028.36,-549.18 1054.31,-549.54\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1061.35,-549.64 1054.31,-552.69 1057.85,-549.59 1054.35,-549.54 1054.35,-549.54 1054.35,-549.54 1057.85,-549.59 1054.4,-546.39 1061.35,-549.64 1061.35,-549.64\"/>\n",
"<text text-anchor=\"start\" x=\"990.77\" y=\"-567.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1007.27\" y=\"-552.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;7 -->\n",
"<g id=\"edge15\" class=\"edge\">\n",
"<title>3&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M958.53,-562.26C966.4,-568.74 976.48,-575.86 986.77,-580 1215.04,-671.82 1289.5,-653 1535.55,-653 1535.55,-653 1535.55,-653 1841.84,-653 1913.98,-653 1969.14,-401.6 1985.12,-320.14\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1986.46,-313.25 1988.22,-320.72 1985.79,-316.68 1985.13,-320.12 1985.13,-320.12 1985.13,-320.12 1985.79,-316.68 1982.03,-319.52 1986.46,-313.25 1986.46,-313.25\"/>\n",
"<text text-anchor=\"start\" x=\"1433.06\" y=\"-671.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1451.56\" y=\"-656.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1088.41\" cy=\"-372\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"1075.91\" y=\"-368.3\" font-family=\"Lato\" font-size=\"14.00\">6#6</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;8 -->\n",
"<g id=\"edge17\" class=\"edge\">\n",
"<title>3&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M951.49,-530.83C959.54,-515.1 972.53,-491.51 986.77,-473 1010.86,-441.65 1044.07,-410.1 1065.64,-390.81\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1071.13,-385.94 1067.98,-392.94 1068.51,-388.26 1065.89,-390.58 1065.89,-390.58 1065.89,-390.58 1068.51,-388.26 1063.8,-388.23 1071.13,-385.94 1071.13,-385.94\"/>\n",
"<text text-anchor=\"start\" x=\"986.77\" y=\"-491.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1007.27\" y=\"-476.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;1 -->\n",
"<g id=\"edge18\" class=\"edge\">\n",
"<title>4&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M338.58,-526.72C332.59,-527.25 326.22,-527.73 320.29,-528 294.98,-529.16 288.59,-529.27 263.29,-528 259.52,-527.81 255.59,-527.54 251.66,-527.22\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"244.65,-526.6 251.9,-524.08 248.13,-526.91 251.62,-527.22 251.62,-527.22 251.62,-527.22 248.13,-526.91 251.34,-530.35 244.65,-526.6 244.65,-526.6\"/>\n",
"<text text-anchor=\"start\" x=\"265.29\" y=\"-546.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"283.79\" y=\"-531.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;2 -->\n",
"<g id=\"edge19\" class=\"edge\">\n",
"<title>4&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M388.24,-514.89C423.53,-500.62 494.51,-472.53 555.88,-452 643.37,-422.74 666.96,-420.98 755.18,-394 759.47,-392.69 763.99,-391.27 768.43,-389.86\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"775.3,-387.67 769.59,-392.8 771.97,-388.74 768.63,-389.8 768.63,-389.8 768.63,-389.8 771.97,-388.74 767.68,-386.8 775.3,-387.67 775.3,-387.67\"/>\n",
"<text text-anchor=\"start\" x=\"557.88\" y=\"-455.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;3 -->\n",
"<g id=\"edge20\" class=\"edge\">\n",
"<title>4&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M375.51,-540.55C395.82,-573.24 446.59,-643 510.23,-643 510.23,-643 510.23,-643 800.82,-643 852.73,-643 899.73,-597.87 923.93,-569.82\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"928.74,-564.12 926.64,-571.5 926.49,-566.79 924.23,-569.47 924.23,-569.47 924.23,-569.47 926.49,-566.79 921.82,-567.43 928.74,-564.12 928.74,-564.12\"/>\n",
"<text text-anchor=\"start\" x=\"633.03\" y=\"-646.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"</g>\n",
"<!-- 9 -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>9</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"511.23\" cy=\"-524\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"498.73\" y=\"-520.3\" font-family=\"Lato\" font-size=\"14.00\">7#1</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;9 -->\n",
"<g id=\"edge21\" class=\"edge\">\n",
"<title>4&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M391.73,-524C415.59,-524 451.18,-524 477.13,-524\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"484.17,-524 477.17,-527.15 480.67,-524 477.17,-524 477.17,-524 477.17,-524 480.67,-524 477.17,-520.85 484.17,-524 484.17,-524\"/>\n",
"<text text-anchor=\"start\" x=\"409.58\" y=\"-527.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;2 -->\n",
"<g id=\"edge22\" class=\"edge\">\n",
"<title>5&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1075.24,-534.27C1067.09,-524.43 1055.69,-511.98 1043.77,-503 973.94,-450.41 878.24,-409.62 830.47,-391.02\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"823.78,-388.44 831.44,-388.02 827.04,-389.7 830.31,-390.96 830.31,-390.96 830.31,-390.96 827.04,-389.7 829.18,-393.9 823.78,-388.44 823.78,-388.44\"/>\n",
"<text text-anchor=\"start\" x=\"915.62\" y=\"-472.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"934.12\" y=\"-457.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;3 -->\n",
"<g id=\"edge23\" class=\"edge\">\n",
"<title>5&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1074.09,-534.81C1066.17,-526.97 1055.41,-518.18 1043.77,-514 1019.92,-505.44 1010.72,-505.77 986.77,-514 978.11,-516.97 969.85,-522.45 962.89,-528.15\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"957.37,-532.93 960.59,-525.97 960.01,-530.64 962.65,-528.35 962.65,-528.35 962.65,-528.35 960.01,-530.64 964.72,-530.73 957.37,-532.93 957.37,-532.93\"/>\n",
"<text text-anchor=\"start\" x=\"990.77\" y=\"-532.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1007.27\" y=\"-517.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>10</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1840.84\" cy=\"-295\" rx=\"32.49\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"1823.84\" y=\"-291.3\" font-family=\"Lato\" font-size=\"14.00\">5#11</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;10 -->\n",
"<g id=\"edge24\" class=\"edge\">\n",
"<title>5&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1111.29,-559.24C1118.15,-561.8 1125.83,-564.33 1133.06,-566 1255.57,-594.19 1289.93,-600.07 1415.06,-588 1484.46,-581.3 1505.53,-586.77 1569.05,-558 1689.52,-503.43 1788.32,-371.47 1824.77,-318.04\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1828.9,-311.92 1827.59,-319.49 1826.94,-314.82 1824.98,-317.72 1824.98,-317.72 1824.98,-317.72 1826.94,-314.82 1822.37,-315.96 1828.9,-311.92 1828.9,-311.92\"/>\n",
"<text text-anchor=\"start\" x=\"1433.06\" y=\"-604.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1451.56\" y=\"-589.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 11 -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>11</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1688.7\" cy=\"-295\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"1676.2\" y=\"-291.3\" font-family=\"Lato\" font-size=\"14.00\">8#5</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;11 -->\n",
"<g id=\"edge25\" class=\"edge\">\n",
"<title>5&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1115.13,-550.9C1209.16,-553.96 1530.81,-562.56 1569.05,-538 1646.8,-488.07 1675.13,-371.28 1684.07,-319.95\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1685.25,-312.87 1687.21,-320.29 1684.68,-316.32 1684.1,-319.77 1684.1,-319.77 1684.1,-319.77 1684.68,-316.32 1681,-319.25 1685.25,-312.87 1685.25,-312.87\"/>\n",
"<text text-anchor=\"start\" x=\"1354.06\" y=\"-572.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1374.56\" y=\"-557.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;2 -->\n",
"<g id=\"edge27\" class=\"edge\">\n",
"<title>6&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1207.46,-118.95C1171.92,-110.38 1103.24,-95.18 1043.77,-90 949.48,-81.78 901.22,-89.26 844.47,-165 822.15,-194.79 808.47,-304.43 803.25,-354.62\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"802.51,-361.86 800.08,-354.57 802.86,-358.38 803.22,-354.89 803.22,-354.89 803.22,-354.89 802.86,-358.38 806.35,-355.21 802.51,-361.86 802.51,-361.86\"/>\n",
"<text text-anchor=\"start\" x=\"988.77\" y=\"-108.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1007.27\" y=\"-93.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;6 -->\n",
"<g id=\"edge26\" class=\"edge\">\n",
"<title>6&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1220.01,-141.29C1216.99,-151.39 1221.17,-161 1232.56,-161 1241.1,-161 1245.59,-155.59 1246.03,-148.63\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1245.11,-141.29 1249.1,-147.85 1245.54,-144.76 1245.98,-148.24 1245.98,-148.24 1245.98,-148.24 1245.54,-144.76 1242.85,-148.63 1245.11,-141.29 1245.11,-141.29\"/>\n",
"<text text-anchor=\"start\" x=\"1204.06\" y=\"-179.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1224.56\" y=\"-164.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 12 -->\n",
"<g id=\"node14\" class=\"node\">\n",
"<title>12</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1382.56\" cy=\"-208\" rx=\"32.49\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"1365.56\" y=\"-204.3\" font-family=\"Lato\" font-size=\"14.00\">3#13</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;12 -->\n",
"<g id=\"edge28\" class=\"edge\">\n",
"<title>6&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1258.47,-129.58C1279.29,-134.2 1309.17,-142.74 1332.06,-157 1344.25,-164.6 1355.6,-175.83 1364.34,-185.83\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1368.92,-191.22 1361.98,-187.92 1366.65,-188.55 1364.39,-185.89 1364.39,-185.89 1364.39,-185.89 1366.65,-188.55 1366.79,-183.85 1368.92,-191.22 1368.92,-191.22\"/>\n",
"<text text-anchor=\"start\" x=\"1279.06\" y=\"-175.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1297.56\" y=\"-160.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;12 -->\n",
"<g id=\"edge29\" class=\"edge\">\n",
"<title>6&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1241.53,-141.96C1249.14,-156.25 1261.97,-176.05 1279.06,-187 1297.94,-199.1 1322.45,-204.41 1342.76,-206.67\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1349.76,-207.35 1342.48,-209.81 1346.27,-207.01 1342.79,-206.67 1342.79,-206.67 1342.79,-206.67 1346.27,-207.01 1343.09,-203.54 1349.76,-207.35 1349.76,-207.35\"/>\n",
"<text text-anchor=\"start\" x=\"1281.06\" y=\"-224.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1297.56\" y=\"-209.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;6 -->\n",
"<g id=\"edge30\" class=\"edge\">\n",
"<title>7&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1987.4,-276.8C1978.85,-221.3 1944.92,-58 1841.84,-58 1381.56,-58 1381.56,-58 1381.56,-58 1333.84,-58 1284.54,-87.27 1256.61,-107.12\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1250.64,-111.44 1254.46,-104.78 1253.48,-109.39 1256.31,-107.33 1256.31,-107.33 1256.31,-107.33 1253.48,-109.39 1258.16,-109.88 1250.64,-111.44 1250.64,-111.44\"/>\n",
"<text text-anchor=\"start\" x=\"1589.05\" y=\"-76.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1607.55\" y=\"-61.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;7 -->\n",
"<g id=\"edge31\" class=\"edge\">\n",
"<title>7&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1977.83,-311.66C1974.94,-321.62 1979.27,-331 1990.84,-331 1999.51,-331 2004.12,-325.73 2004.66,-318.89\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"2003.84,-311.66 2007.76,-318.27 2004.24,-315.14 2004.63,-318.62 2004.63,-318.62 2004.63,-318.62 2004.24,-315.14 2001.5,-318.97 2003.84,-311.66 2003.84,-311.66\"/>\n",
"<text text-anchor=\"start\" x=\"1964.34\" y=\"-334.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;8 -->\n",
"<g id=\"edge33\" class=\"edge\">\n",
"<title>7&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1981.95,-312.53C1963.43,-350.72 1913.3,-438 1841.84,-438 1614.55,-438 1614.55,-438 1614.55,-438 1431.72,-438 1385.91,-429.99 1204.06,-411 1172.43,-407.7 1162.78,-413.33 1133.06,-402 1125.56,-399.14 1118.1,-394.75 1111.53,-390.19\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1105.76,-386.01 1113.28,-387.57 1108.59,-388.06 1111.43,-390.12 1111.43,-390.12 1111.43,-390.12 1108.59,-388.06 1109.58,-392.67 1105.76,-386.01 1105.76,-386.01\"/>\n",
"<text text-anchor=\"start\" x=\"1508.05\" y=\"-455.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1528.55\" y=\"-440.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 13 -->\n",
"<g id=\"node15\" class=\"node\">\n",
"<title>13</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1536.55\" cy=\"-242\" rx=\"32.49\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"1519.55\" y=\"-238.3\" font-family=\"Lato\" font-size=\"14.00\">5#14</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;13 -->\n",
"<g id=\"edge32\" class=\"edge\">\n",
"<title>7&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1964.25,-284.44C1926.83,-269.57 1854.6,-243.03 1790.34,-232 1726.22,-220.99 1709.1,-228.11 1644.05,-227 1618.72,-226.57 1612.11,-223.29 1587.05,-227 1581.86,-227.77 1576.46,-228.97 1571.22,-230.36\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1564.2,-232.36 1570.07,-227.41 1567.56,-231.4 1570.93,-230.44 1570.93,-230.44 1570.93,-230.44 1567.56,-231.4 1571.79,-233.47 1564.2,-232.36 1564.2,-232.36\"/>\n",
"<text text-anchor=\"start\" x=\"1737.34\" y=\"-250.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1753.84\" y=\"-235.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;6 -->\n",
"<g id=\"edge34\" class=\"edge\">\n",
"<title>8&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1092.75,-353.95C1099.89,-316.48 1117.33,-231.67 1133.06,-207 1151.32,-178.36 1182.83,-154.72 1205.29,-140.3\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1211.37,-136.48 1207.12,-142.87 1208.4,-138.34 1205.44,-140.21 1205.44,-140.21 1205.44,-140.21 1208.4,-138.34 1203.76,-137.54 1211.37,-136.48 1211.37,-136.48\"/>\n",
"<text text-anchor=\"start\" x=\"1133.06\" y=\"-225.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1151.56\" y=\"-210.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;7 -->\n",
"<g id=\"edge35\" class=\"edge\">\n",
"<title>8&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1097.59,-388.99C1116.07,-424.64 1164.71,-504 1231.56,-504 1231.56,-504 1231.56,-504 1841.84,-504 1930.98,-504 1971.27,-375.8 1984.55,-320.21\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1986.18,-313.18 1987.67,-320.71 1985.39,-316.59 1984.6,-320 1984.6,-320 1984.6,-320 1985.39,-316.59 1981.53,-319.29 1986.18,-313.18 1986.18,-313.18\"/>\n",
"<text text-anchor=\"start\" x=\"1510.05\" y=\"-522.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1528.55\" y=\"-507.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;11 -->\n",
"<g id=\"edge37\" class=\"edge\">\n",
"<title>8&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1113.83,-378.39C1120.08,-379.96 1126.81,-381.6 1133.06,-383 1188.9,-395.53 1204.09,-402.45 1261.06,-397 1433.64,-380.48 1483.09,-387.4 1644.05,-323 1650.95,-320.24 1657.93,-316.35 1664.23,-312.35\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1670.27,-308.34 1666.18,-314.84 1667.35,-310.28 1664.44,-312.21 1664.44,-312.21 1664.44,-312.21 1667.35,-310.28 1662.7,-309.58 1670.27,-308.34 1670.27,-308.34\"/>\n",
"<text text-anchor=\"start\" x=\"1354.06\" y=\"-407.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1374.56\" y=\"-392.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;12 -->\n",
"<g id=\"edge36\" class=\"edge\">\n",
"<title>8&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1110.35,-361.62C1133.19,-350.41 1170.92,-332.26 1204.06,-318 1260.16,-293.86 1282.59,-303.82 1332.06,-268 1345.88,-258 1358.11,-243.25 1366.96,-230.89\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1371.02,-225.04 1369.62,-232.58 1369.03,-227.91 1367.03,-230.79 1367.03,-230.79 1367.03,-230.79 1369.03,-227.91 1364.44,-228.99 1371.02,-225.04 1371.02,-225.04\"/>\n",
"<text text-anchor=\"start\" x=\"1208.06\" y=\"-336.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1224.56\" y=\"-321.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;2 -->\n",
"<g id=\"edge38\" class=\"edge\">\n",
"<title>9&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M527.86,-509.93C535.79,-503.41 545.85,-496.01 555.88,-491 638.31,-449.86 678.36,-484.86 755.18,-434 767.3,-425.97 777.69,-413.51 785.29,-402.59\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"789.22,-396.71 787.95,-404.28 787.27,-399.62 785.33,-402.53 785.33,-402.53 785.33,-402.53 787.27,-399.62 782.71,-400.78 789.22,-396.71 789.22,-396.71\"/>\n",
"<text text-anchor=\"start\" x=\"631.03\" y=\"-471.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;5 -->\n",
"<g id=\"edge39\" class=\"edge\">\n",
"<title>9&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M524.76,-539.63C532.72,-548.49 543.79,-558.96 555.88,-565 586.15,-580.11 597.2,-574.86 630.88,-578 788.39,-592.66 828.58,-581.89 986.77,-583 1012.1,-583.18 1019.75,-591.06 1043.77,-583 1052.21,-580.17 1060.32,-574.98 1067.21,-569.55\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1072.7,-564.97 1069.34,-571.88 1070.01,-567.22 1067.32,-569.46 1067.32,-569.46 1067.32,-569.46 1070.01,-567.22 1065.3,-567.04 1072.7,-564.97 1072.7,-564.97\"/>\n",
"<text text-anchor=\"start\" x=\"775.32\" y=\"-588.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;9 -->\n",
"<g id=\"edge40\" class=\"edge\">\n",
"<title>9&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M498.68,-540.29C495.66,-550.39 499.84,-560 511.23,-560 519.78,-560 524.26,-554.59 524.7,-547.63\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"523.78,-540.29 527.77,-546.85 524.21,-543.76 524.65,-547.24 524.65,-547.24 524.65,-547.24 524.21,-543.76 521.52,-547.63 523.78,-540.29 523.78,-540.29\"/>\n",
"<text text-anchor=\"start\" x=\"482.73\" y=\"-578.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"503.23\" y=\"-563.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 14 -->\n",
"<g id=\"node16\" class=\"node\">\n",
"<title>14</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"657.53\" cy=\"-518\" rx=\"26.8\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"645.03\" y=\"-514.3\" font-family=\"Lato\" font-size=\"14.00\">9#9</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;14 -->\n",
"<g id=\"edge41\" class=\"edge\">\n",
"<title>9&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M530.48,-511.29C537.99,-506.79 547,-502.28 555.88,-500 580.42,-493.7 588.03,-495.08 612.88,-500 618.31,-501.08 623.91,-502.83 629.21,-504.84\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"635.74,-507.49 628.07,-507.78 632.49,-506.17 629.25,-504.86 629.25,-504.86 629.25,-504.86 632.49,-506.17 630.43,-501.94 635.74,-507.49 635.74,-507.49\"/>\n",
"<text text-anchor=\"start\" x=\"557.88\" y=\"-518.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"576.38\" y=\"-503.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;6 -->\n",
"<g id=\"edge42\" class=\"edge\">\n",
"<title>10&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1823.87,-279.63C1784.53,-243 1678.22,-151.2 1569.05,-119 1461.4,-87.24 1325.76,-106.69 1265.23,-118.25\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1258.23,-119.62 1264.5,-115.18 1261.67,-118.95 1265.1,-118.28 1265.1,-118.28 1265.1,-118.28 1261.67,-118.95 1265.71,-121.37 1258.23,-119.62 1258.23,-119.62\"/>\n",
"<text text-anchor=\"start\" x=\"1510.05\" y=\"-137.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1528.55\" y=\"-122.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;7 -->\n",
"<g id=\"edge43\" class=\"edge\">\n",
"<title>10&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1873.59,-295C1896.22,-295 1926.78,-295 1950.88,-295\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1958.14,-295 1951.14,-298.15 1954.64,-295 1951.14,-295 1951.14,-295 1951.14,-295 1954.64,-295 1951.14,-291.85 1958.14,-295 1958.14,-295\"/>\n",
"<text text-anchor=\"start\" x=\"1891.34\" y=\"-313.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1907.84\" y=\"-298.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;10 -->\n",
"<g id=\"edge44\" class=\"edge\">\n",
"<title>10&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1827.83,-311.66C1824.94,-321.62 1829.28,-331 1840.84,-331 1849.51,-331 1854.12,-325.73 1854.66,-318.89\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1853.85,-311.66 1857.76,-318.27 1854.24,-315.14 1854.63,-318.62 1854.63,-318.62 1854.63,-318.62 1854.24,-315.14 1851.5,-318.97 1853.85,-311.66 1853.85,-311.66\"/>\n",
"<text text-anchor=\"start\" x=\"1814.34\" y=\"-334.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;11 -->\n",
"<g id=\"edge45\" class=\"edge\">\n",
"<title>10&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1818.52,-281.48C1810.08,-276.88 1800.08,-272.32 1790.34,-270 1765.7,-264.13 1757.83,-263.49 1733.34,-270 1726.65,-271.78 1719.92,-274.86 1713.81,-278.26\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1707.46,-282.03 1711.87,-275.74 1710.47,-280.24 1713.48,-278.45 1713.48,-278.45 1713.48,-278.45 1710.47,-280.24 1715.08,-281.16 1707.46,-282.03 1707.46,-282.03\"/>\n",
"<text text-anchor=\"start\" x=\"1733.34\" y=\"-288.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1753.84\" y=\"-273.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;6 -->\n",
"<g id=\"edge46\" class=\"edge\">\n",
"<title>11&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1679.92,-277.82C1672.46,-262.86 1659.98,-241.38 1644.05,-227 1585.63,-174.25 1561.75,-168.59 1486.06,-147 1409.58,-125.19 1315.25,-123.21 1266.38,-123.93\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1259.22,-124.06 1266.17,-120.78 1262.72,-124 1266.22,-123.93 1266.22,-123.93 1266.22,-123.93 1262.72,-124 1266.28,-127.08 1259.22,-124.06 1259.22,-124.06\"/>\n",
"<text text-anchor=\"start\" x=\"1433.06\" y=\"-165.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1451.56\" y=\"-150.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;10 -->\n",
"<g id=\"edge47\" class=\"edge\">\n",
"<title>11&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1715.04,-298.4C1721.03,-299.06 1727.41,-299.66 1733.34,-300 1758.64,-301.44 1765.04,-301.27 1790.34,-300 1794.12,-299.81 1798.05,-299.54 1801.97,-299.22\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1808.99,-298.6 1802.29,-302.35 1805.5,-298.91 1802.01,-299.22 1802.01,-299.22 1802.01,-299.22 1805.5,-298.91 1801.74,-296.08 1808.99,-298.6 1808.99,-298.6\"/>\n",
"<text text-anchor=\"start\" x=\"1735.34\" y=\"-320.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1753.84\" y=\"-305.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;11 -->\n",
"<g id=\"edge49\" class=\"edge\">\n",
"<title>11&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1676.15,-311.29C1673.12,-321.39 1677.31,-331 1688.7,-331 1697.24,-331 1701.73,-325.59 1702.16,-318.63\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1701.24,-311.29 1705.24,-317.85 1701.68,-314.76 1702.11,-318.24 1702.11,-318.24 1702.11,-318.24 1701.68,-314.76 1698.99,-318.63 1701.24,-311.29 1701.24,-311.29\"/>\n",
"<text text-anchor=\"start\" x=\"1660.2\" y=\"-349.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1680.7\" y=\"-334.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;13 -->\n",
"<g id=\"edge48\" class=\"edge\">\n",
"<title>11&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1662.16,-291.9C1641.37,-288.79 1611.56,-283 1587.05,-273 1578.83,-269.65 1570.45,-264.97 1562.98,-260.26\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1556.94,-256.32 1564.52,-257.5 1559.87,-258.23 1562.8,-260.14 1562.8,-260.14 1562.8,-260.14 1559.87,-258.23 1561.08,-262.78 1556.94,-256.32 1556.94,-256.32\"/>\n",
"<text text-anchor=\"start\" x=\"1591.05\" y=\"-307.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1607.55\" y=\"-292.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;2 -->\n",
"<g id=\"edge50\" class=\"edge\">\n",
"<title>12&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1364.01,-222.89C1355.06,-229.52 1343.64,-236.58 1332.06,-240 1258.46,-261.72 1237.3,-220 1160.56,-220 941.12,-220 941.12,-220 941.12,-220 893.92,-220 876.7,-229.52 844.47,-264 820.66,-289.47 809.51,-329.16 804.53,-354.87\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"803.23,-362.05 801.37,-354.6 803.85,-358.6 804.47,-355.16 804.47,-355.16 804.47,-355.16 803.85,-358.6 807.57,-355.72 803.23,-362.05 803.23,-362.05\"/>\n",
"<text text-anchor=\"start\" x=\"1061.91\" y=\"-238.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1080.41\" y=\"-223.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;8 -->\n",
"<g id=\"edge53\" class=\"edge\">\n",
"<title>12&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1374.37,-225.59C1366.08,-244.43 1351.14,-274.49 1332.06,-296 1306.11,-325.26 1297.3,-333.29 1261.06,-348 1215.38,-366.54 1157.86,-371.18 1122.37,-372.12\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1115.14,-372.26 1122.08,-368.97 1118.64,-372.19 1122.14,-372.12 1122.14,-372.12 1122.14,-372.12 1118.64,-372.19 1122.2,-375.27 1115.14,-372.26 1115.14,-372.26\"/>\n",
"<text text-anchor=\"start\" x=\"1204.06\" y=\"-381.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1224.56\" y=\"-366.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;12 -->\n",
"<g id=\"edge51\" class=\"edge\">\n",
"<title>12&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1369.2,-224.66C1366.23,-234.62 1370.68,-244 1382.56,-244 1391.46,-244 1396.2,-238.73 1396.75,-231.89\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1395.92,-224.66 1399.85,-231.26 1396.32,-228.14 1396.72,-231.62 1396.72,-231.62 1396.72,-231.62 1396.32,-228.14 1393.59,-231.98 1395.92,-224.66 1395.92,-224.66\"/>\n",
"<text text-anchor=\"start\" x=\"1356.06\" y=\"-247.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;13 -->\n",
"<g id=\"edge52\" class=\"edge\">\n",
"<title>12&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1412.58,-215.17C1419.3,-216.79 1426.42,-218.48 1433.06,-220 1454.86,-224.98 1479.36,-230.25 1498.93,-234.38\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1505.9,-235.85 1498.4,-237.49 1502.48,-235.13 1499.05,-234.41 1499.05,-234.41 1499.05,-234.41 1502.48,-235.13 1499.7,-231.33 1505.9,-235.85 1505.9,-235.85\"/>\n",
"<text text-anchor=\"start\" x=\"1435.06\" y=\"-250.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1451.56\" y=\"-235.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 13&#45;&gt;2 -->\n",
"<g id=\"edge54\" class=\"edge\">\n",
"<title>13&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1513.58,-254.85C1505.23,-259.13 1495.46,-263.46 1486.06,-266 1334.16,-307.04 1288.24,-266.97 1133.06,-293 1019.77,-312.01 888.82,-351.68 830.96,-370.15\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"824.27,-372.29 829.98,-367.16 827.61,-371.23 830.94,-370.16 830.94,-370.16 830.94,-370.16 827.61,-371.23 831.9,-373.16 824.27,-372.29 824.27,-372.29\"/>\n",
"<text text-anchor=\"start\" x=\"1133.06\" y=\"-311.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1151.56\" y=\"-296.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 13&#45;&gt;11 -->\n",
"<g id=\"edge57\" class=\"edge\">\n",
"<title>13&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1566.2,-234.25C1588.56,-229.79 1619.78,-227.15 1644.05,-239 1658.01,-245.82 1668.8,-259.5 1676.16,-271.63\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1679.7,-277.78 1673.48,-273.28 1677.96,-274.75 1676.21,-271.71 1676.21,-271.71 1676.21,-271.71 1677.96,-274.75 1678.95,-270.15 1679.7,-277.78 1679.7,-277.78\"/>\n",
"<text text-anchor=\"start\" x=\"1587.05\" y=\"-257.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"1607.55\" y=\"-242.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 13&#45;&gt;12 -->\n",
"<g id=\"edge55\" class=\"edge\">\n",
"<title>13&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1525.91,-224.72C1517.37,-211.38 1503.56,-193.89 1486.06,-186 1462.55,-175.4 1433.67,-183.27 1412.56,-192.42\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1406,-195.41 1411.06,-189.64 1409.19,-193.95 1412.37,-192.5 1412.37,-192.5 1412.37,-192.5 1409.19,-193.95 1413.68,-195.37 1406,-195.41 1406,-195.41\"/>\n",
"<text text-anchor=\"start\" x=\"1435.06\" y=\"-204.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"1451.56\" y=\"-189.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 13&#45;&gt;13 -->\n",
"<g id=\"edge56\" class=\"edge\">\n",
"<title>13&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1523.19,-258.66C1520.22,-268.62 1524.68,-278 1536.55,-278 1545.46,-278 1550.19,-272.73 1550.75,-265.89\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1549.91,-258.66 1553.84,-265.26 1550.31,-262.14 1550.72,-265.62 1550.72,-265.62 1550.72,-265.62 1550.31,-262.14 1547.59,-265.98 1549.91,-258.66 1549.91,-258.66\"/>\n",
"<text text-anchor=\"start\" x=\"1510.05\" y=\"-281.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"</g>\n",
"<!-- 14&#45;&gt;2 -->\n",
"<g id=\"edge58\" class=\"edge\">\n",
"<title>14&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M683.65,-513.7C705.07,-508.85 735.44,-499.02 755.18,-480 776.34,-459.6 787.89,-427.18 793.7,-404.81\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"795.39,-397.93 796.78,-405.48 794.55,-401.33 793.72,-404.73 793.72,-404.73 793.72,-404.73 794.55,-401.33 790.66,-403.98 795.39,-397.93 795.39,-397.93\"/>\n",
"<text text-anchor=\"start\" x=\"702.18\" y=\"-511.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"</g>\n",
"<!-- 14&#45;&gt;3 -->\n",
"<g id=\"edge59\" class=\"edge\">\n",
"<title>14&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M682.91,-523.55C689.16,-524.83 695.9,-526.08 702.18,-527 775.31,-537.72 861.9,-543.67 908.13,-546.31\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"915.19,-546.71 908.03,-549.46 911.7,-546.51 908.2,-546.31 908.2,-546.31 908.2,-546.31 911.7,-546.51 908.38,-543.17 915.19,-546.71 915.19,-546.71\"/>\n",
"<text text-anchor=\"start\" x=\"775.32\" y=\"-543.8\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"</g>\n",
"<!-- 14&#45;&gt;9 -->\n",
"<g id=\"edge60\" class=\"edge\">\n",
"<title>14&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M633.21,-525.65C626.7,-527.45 619.58,-529.1 612.88,-530 590.17,-533.07 564.36,-531.43 544.57,-529.09\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"537.56,-528.21 544.9,-525.96 541.04,-528.65 544.51,-529.09 544.51,-529.09 544.51,-529.09 541.04,-528.65 544.12,-532.21 537.56,-528.21 537.56,-528.21\"/>\n",
"<text text-anchor=\"start\" x=\"555.88\" y=\"-549.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"576.38\" y=\"-534.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 14&#45;&gt;14 -->\n",
"<g id=\"edge61\" class=\"edge\">\n",
"<title>14&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M645.33,-534.29C642.39,-544.39 646.45,-554 657.53,-554 665.83,-554 670.2,-548.59 670.62,-541.63\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"669.73,-534.29 673.7,-540.86 670.15,-537.76 670.57,-541.24 670.57,-541.24 670.57,-541.24 670.15,-537.76 667.44,-541.62 669.73,-534.29 669.73,-534.29\"/>\n",
"<text text-anchor=\"start\" x=\"631.03\" y=\"-557.8\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa2682f4c60> >"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p3 = spot.acd_transform(a3) # second argument defaults to False\n",
"p3.copy_state_names_from(a3)\n",
"assert a3.equivalent_to(p3)\n",
"p3\n"
]
},
{
"cell_type": "markdown",
"id": "f14ee428",
"metadata": {},
"source": [
"This transformation can have substantiually fewer states than the one based on Zielonka tree, because the branches are actually restricted to only those that matter for a given state."
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "4f62e612",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"15"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p3.num_states()"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "20f2a45c",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"27"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"spot.zielonka_tree_transform(a3).num_states()"
]
},
{
"cell_type": "markdown",
"id": "e3d0ff64",
"metadata": {},
"source": [
"We can decide Rabin, Streett, and parity-typeness with the following methods. However building the entire ACD to decide that is a bit overkill, especially in case of a negative answer."
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "2d0bbc0b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"False False False\n"
]
}
],
"source": [
"print(theacd.has_rabin_shape(), theacd.has_streett_shape(), theacd.has_parity_shape())"
]
},
{
"cell_type": "markdown",
"id": "15f094c0",
"metadata": {},
"source": [
"# More examples\n",
"\n",
"These additional examples also contribute to our test suite."
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "criminal-northwest",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"356pt\" height=\"233pt\"\n",
" viewBox=\"0.00 0.00 356.00 233.30\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 229.3)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-229.3 352,-229.3 352,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"8\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\">(Fin(</text>\n",
"<text text-anchor=\"start\" x=\"35\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"51\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\">) &amp; (Fin(</text>\n",
"<text text-anchor=\"start\" x=\"99\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"115\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\">)|Fin(</text>\n",
"<text text-anchor=\"start\" x=\"146\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"<text text-anchor=\"start\" x=\"162\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\">)) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"211\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"227\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\">)&amp;Inf(</text>\n",
"<text text-anchor=\"start\" x=\"261\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"277\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\">))) | Inf(</text>\n",
"<text text-anchor=\"start\" x=\"320\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"336\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\">)</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"120.75\" cy=\"-44.3\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"120.75\" y=\"-40.6\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M65.9,-44.3C67.54,-44.3 81.9,-44.3 95.38,-44.3\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"102.69,-44.3 95.69,-47.45 99.19,-44.3 95.69,-44.3 95.69,-44.3 95.69,-44.3 99.19,-44.3 95.69,-41.15 102.69,-44.3 102.69,-44.3\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M117.51,-62.08C116.96,-71.62 118.04,-80.3 120.75,-80.3 122.74,-80.3 123.85,-75.62 124.08,-69.35\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"123.99,-62.08 127.23,-69.04 124.03,-65.58 124.08,-69.08 124.08,-69.08 124.08,-69.08 124.03,-65.58 120.93,-69.12 123.99,-62.08 123.99,-62.08\"/>\n",
"<text text-anchor=\"start\" x=\"94.25\" y=\"-98.1\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"104.75\" y=\"-84.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"120.75\" y=\"-84.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M115.69,-61.9C112.31,-82.43 114,-108.3 120.75,-108.3 126.74,-108.3 128.74,-87.96 126.76,-69.03\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"125.81,-61.9 129.86,-68.42 126.28,-65.37 126.74,-68.83 126.74,-68.83 126.74,-68.83 126.28,-65.37 123.62,-69.25 125.81,-61.9 125.81,-61.9\"/>\n",
"<text text-anchor=\"start\" x=\"92.25\" y=\"-126.1\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"96.75\" y=\"-112.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"112.75\" y=\"-112.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"128.75\" y=\"-112.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"256.75\" cy=\"-44.3\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"256.75\" y=\"-40.6\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M133.35,-57.44C139.59,-63.52 147.84,-70.09 156.75,-73.3 183.51,-82.95 193.99,-82.95 220.75,-73.3 227.29,-70.94 233.48,-66.77 238.78,-62.32\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"244.15,-57.44 241.08,-64.48 241.56,-59.79 238.97,-62.14 238.97,-62.14 238.97,-62.14 241.56,-59.79 236.85,-59.81 244.15,-57.44 244.15,-57.44\"/>\n",
"<text text-anchor=\"start\" x=\"162.25\" y=\"-84.1\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M138.82,-42.54C144.52,-42.04 150.9,-41.55 156.75,-41.3 185.17,-40.09 192.33,-40.09 220.75,-41.3 224.22,-41.45 227.88,-41.68 231.48,-41.95\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"238.68,-42.54 231.44,-45.11 235.19,-42.26 231.7,-41.97 231.7,-41.97 231.7,-41.97 235.19,-42.26 231.96,-38.83 238.68,-42.54 238.68,-42.54\"/>\n",
"<text text-anchor=\"start\" x=\"164.25\" y=\"-59.1\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"172.75\" y=\"-45.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"188.75\" y=\"-45.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>1&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M245.96,-29.56C239.78,-21.64 231.03,-12.64 220.75,-8.3 194.55,2.77 182.95,2.77 156.75,-8.3 148.88,-11.63 141.91,-17.68 136.3,-23.89\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"131.54,-29.56 133.63,-22.17 133.79,-26.88 136.04,-24.2 136.04,-24.2 136.04,-24.2 133.79,-26.88 138.45,-26.22 131.54,-29.56 131.54,-29.56\"/>\n",
"<text text-anchor=\"start\" x=\"160.25\" y=\"-26.1\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"156.75\" y=\"-12.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"172.75\" y=\"-12.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"188.75\" y=\"-12.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"204.75\" y=\"-12.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M252.68,-62.08C251.98,-71.62 253.34,-80.3 256.75,-80.3 259.25,-80.3 260.65,-75.62 260.94,-69.35\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"260.82,-62.08 264.09,-69.03 260.88,-65.58 260.94,-69.08 260.94,-69.08 260.94,-69.08 260.88,-65.58 257.79,-69.13 260.82,-62.08 260.82,-62.08\"/>\n",
"<text text-anchor=\"start\" x=\"230.25\" y=\"-99.1\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"248.75\" y=\"-84.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M250.58,-61.22C246.06,-82.45 248.12,-110.3 256.75,-110.3 264.47,-110.3 266.93,-88.02 264.13,-68.12\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"262.92,-61.22 267.23,-67.57 263.53,-64.67 264.13,-68.12 264.13,-68.12 264.13,-68.12 263.53,-64.67 261.03,-68.66 262.92,-61.22 262.92,-61.22\"/>\n",
"<text text-anchor=\"start\" x=\"230.25\" y=\"-128.1\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"240.75\" y=\"-114.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"256.75\" y=\"-114.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M249.23,-61.02C240.3,-91.2 242.8,-138.3 256.75,-138.3 269.66,-138.3 272.77,-97.93 266.07,-68\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"264.27,-61.02 269.07,-67.01 265.14,-64.41 266.02,-67.8 266.02,-67.8 266.02,-67.8 265.14,-64.41 262.97,-68.59 264.27,-61.02 264.27,-61.02\"/>\n",
"<text text-anchor=\"start\" x=\"232.25\" y=\"-156.1\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"232.75\" y=\"-142.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"248.75\" y=\"-142.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"264.75\" y=\"-142.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa268211ae0> >"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c = spot.automaton(\"\"\"\n",
"HOA: v1\n",
"States: 2\n",
"Start: 0\n",
"AP: 2 \"p1\" \"p0\"\n",
"Acceptance: 5 (Fin(0) & (Fin(3)|Fin(4)) & (Inf(1)&Inf(2))) | Inf(3)\n",
"properties: trans-labels explicit-labels trans-acc complete\n",
"properties: deterministic stutter-invariant\n",
"--BODY--\n",
"State: 0\n",
"[0&!1] 0 {2 3}\n",
"[!0&!1] 0 {2 3 4}\n",
"[!0&1] 1\n",
"[0&1] 1 {2 4}\n",
"State: 1\n",
"[!0&!1] 0 {0 2 3 4}\n",
"[!0&1] 1 {1}\n",
"[0&!1] 1 {2 3}\n",
"[0&1] 1 {1 2 4}\n",
"--END--\n",
"\"\"\"); c"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "63c7c062",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Title: zielonka_tree Pages: 1 -->\n",
"<svg width=\"140pt\" height=\"262pt\"\n",
" viewBox=\"0.00 0.00 140.00 262.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.0 1.0) rotate(0) translate(4 258)\">\n",
"<title>zielonka_tree</title>\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-258 136,-258 136,4 -4,4\"/>\n",
"<!-- 0 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"65.5\" cy=\"-236\" rx=\"63.89\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"65.5\" y=\"-232.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3,4}</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>1</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"107.5,-182 23.5,-182 23.5,-146 107.5,-146 107.5,-182\"/>\n",
"<text text-anchor=\"middle\" x=\"65.5\" y=\"-160.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,4}</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M65.5,-217.7C65.5,-209.98 65.5,-200.71 65.5,-192.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"69,-192.1 65.5,-182.1 62,-192.1 69,-192.1\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"65.5\" cy=\"-92\" rx=\"46.29\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"65.5\" y=\"-88.3\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2,4}</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>1&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M65.5,-145.7C65.5,-137.98 65.5,-128.71 65.5,-120.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"69,-120.1 65.5,-110.1 62,-120.1 69,-120.1\"/>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>3</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"57,-38 0,-38 0,0 57,0 57,-38\"/>\n",
"<text text-anchor=\"middle\" x=\"28.5\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">{2,4}</text>\n",
"<text text-anchor=\"middle\" x=\"28.5\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;3&gt;</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>2&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M56.73,-74.17C52.54,-66.14 47.43,-56.32 42.71,-47.26\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"45.71,-45.45 37.98,-38.2 39.5,-48.68 45.71,-45.45\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"132,-38 75,-38 75,0 132,0 132,-38\"/>\n",
"<text text-anchor=\"middle\" x=\"103.5\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">{1,4}</text>\n",
"<text text-anchor=\"middle\" x=\"103.5\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;4&gt;</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;4 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>2&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M74.51,-74.17C78.81,-66.14 84.06,-56.32 88.91,-47.26\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"92.13,-48.67 93.76,-38.2 85.96,-45.36 92.13,-48.67\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7fa268211900> >"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"spot.zielonka_tree(c.acc())"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "balanced-investing",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"366pt\" height=\"238pt\"\n",
" viewBox=\"0.00 0.00 365.50 238.16\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 234.16)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-234.16 361.5,-234.16 361.5,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"67.25\" y=\"-215.96\" font-family=\"Lato\" font-size=\"14.00\">Inf(</text>\n",
"<text text-anchor=\"start\" x=\"88.25\" y=\"-215.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"104.25\" y=\"-215.96\" font-family=\"Lato\" font-size=\"14.00\">) | (Fin(</text>\n",
"<text text-anchor=\"start\" x=\"146.25\" y=\"-215.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"162.25\" y=\"-215.96\" font-family=\"Lato\" font-size=\"14.00\">) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"208.25\" y=\"-215.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"224.25\" y=\"-215.96\" font-family=\"Lato\" font-size=\"14.00\">) | Fin(</text>\n",
"<text text-anchor=\"start\" x=\"262.25\" y=\"-215.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"278.25\" y=\"-215.96\" font-family=\"Lato\" font-size=\"14.00\">)))</text>\n",
"<text text-anchor=\"start\" x=\"121.75\" y=\"-201.96\" font-family=\"Lato\" font-size=\"14.00\">[parity min even 4]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-44.16\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-40.46\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.15,-44.16C2.79,-44.16 17.15,-44.16 30.63,-44.16\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.94,-44.16 30.94,-47.31 34.44,-44.16 30.94,-44.16 30.94,-44.16 30.94,-44.16 34.44,-44.16 30.94,-41.01 37.94,-44.16 37.94,-44.16\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M52.76,-61.94C52.21,-71.47 53.29,-80.16 56,-80.16 57.99,-80.16 59.1,-75.48 59.33,-69.21\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"59.24,-61.94 62.48,-68.9 59.28,-65.44 59.33,-68.94 59.33,-68.94 59.33,-68.94 59.28,-65.44 56.18,-68.98 59.24,-61.94 59.24,-61.94\"/>\n",
"<text text-anchor=\"start\" x=\"29.5\" y=\"-98.96\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"48\" y=\"-83.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M50.99,-61.74C47.55,-82.88 49.21,-110.16 56,-110.16 62.04,-110.16 64.03,-88.52 61.96,-68.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"61.01,-61.74 65.06,-68.26 61.47,-65.21 61.93,-68.68 61.93,-68.68 61.93,-68.68 61.47,-65.21 58.81,-69.09 61.01,-61.74 61.01,-61.74\"/>\n",
"<text text-anchor=\"start\" x=\"27.5\" y=\"-128.96\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"48\" y=\"-113.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"195.5\" cy=\"-71.16\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"195.5\" y=\"-67.46\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M62.13,-61.3C67.26,-75.07 76.64,-93.49 92,-102.16 114.06,-114.61 124.79,-109.62 149,-102.16 158.75,-99.15 168.29,-93.26 176.09,-87.41\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"181.69,-83 178.14,-89.81 178.94,-85.17 176.19,-87.33 176.19,-87.33 176.19,-87.33 178.94,-85.17 174.24,-84.86 181.69,-83 181.69,-83\"/>\n",
"<text text-anchor=\"start\" x=\"94\" y=\"-127.96\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"112.5\" y=\"-112.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M73.86,-47.47C98.09,-52.23 142.86,-61.02 170.52,-66.45\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"177.5,-67.82 170.03,-69.56 174.07,-67.15 170.63,-66.47 170.63,-66.47 170.63,-66.47 174.07,-67.15 171.24,-63.38 177.5,-67.82 177.5,-67.82\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-79.96\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"112.5\" y=\"-64.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>1&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M186.44,-55.56C178.77,-42.58 165.9,-25.02 149,-17.16 126.03,-6.48 115.98,-8.99 92,-17.16 85.84,-19.26 79.92,-22.93 74.76,-26.9\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"69.07,-31.63 72.44,-24.73 71.77,-29.39 74.46,-27.15 74.46,-27.15 74.46,-27.15 71.77,-29.39 76.47,-29.58 69.07,-31.63 69.07,-31.63\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-35.96\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"112.5\" y=\"-20.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M183.74,-85.2C179.35,-96.07 183.27,-107.16 195.5,-107.16 205.06,-107.16 209.54,-100.39 208.95,-92.25\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"207.26,-85.2 211.95,-91.27 208.07,-88.6 208.89,-92.01 208.89,-92.01 208.89,-92.01 208.07,-88.6 205.83,-92.74 207.26,-85.2 207.26,-85.2\"/>\n",
"<text text-anchor=\"start\" x=\"169\" y=\"-125.96\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"187.5\" y=\"-110.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"331\" cy=\"-71.16\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"331\" y=\"-67.46\" font-family=\"Lato\" font-size=\"14.00\">2</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>1&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M200.35,-88.7C205.8,-108.8 217.92,-140.82 242,-155.16 262.24,-167.21 275.4,-168.23 295,-155.16 314.55,-142.13 323.2,-115.88 327.01,-96.18\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"328.21,-89.25 330.12,-96.69 327.61,-92.7 327.02,-96.15 327.02,-96.15 327.02,-96.15 327.61,-92.7 323.91,-95.61 328.21,-89.25 328.21,-89.25\"/>\n",
"<text text-anchor=\"start\" x=\"242\" y=\"-182.96\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"260.5\" y=\"-167.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>1&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M209.31,-83C217.87,-90.07 229.76,-98.39 242,-102.16 264.51,-109.1 272.97,-110.51 295,-102.16 301.94,-99.53 308.4,-94.82 313.82,-89.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"318.88,-84.86 316.1,-92.02 316.39,-87.32 313.89,-89.78 313.89,-89.78 313.89,-89.78 316.39,-87.32 311.68,-87.53 318.88,-84.86 318.88,-84.86\"/>\n",
"<text text-anchor=\"start\" x=\"244\" y=\"-125.96\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"260.5\" y=\"-110.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;0 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>2&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M322.72,-54.68C316.89,-43.56 307.6,-29.6 295,-22.16 238.74,11.05 214.22,-8.94 149,-5.16 123.71,-3.69 115.13,5.16 92,-5.16 83.43,-8.98 76.09,-16.05 70.37,-23.14\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"65.96,-29.02 67.64,-21.53 68.06,-26.22 70.16,-23.42 70.16,-23.42 70.16,-23.42 68.06,-26.22 72.68,-25.31 65.96,-29.02 65.96,-29.02\"/>\n",
"<text text-anchor=\"start\" x=\"167\" y=\"-23.96\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"187.5\" y=\"-8.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>2&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M312.93,-69.4C307.23,-68.89 300.85,-68.41 295,-68.16 271.47,-67.15 265.54,-67.38 242,-68.16 235.14,-68.39 227.72,-68.8 220.89,-69.25\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"213.77,-69.75 220.53,-66.12 217.26,-69.51 220.75,-69.26 220.75,-69.26 220.75,-69.26 217.26,-69.51 220.97,-72.41 213.77,-69.75 213.77,-69.75\"/>\n",
"<text text-anchor=\"start\" x=\"242\" y=\"-86.96\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"260.5\" y=\"-71.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>2&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M320.67,-56.01C314.54,-47.57 305.68,-37.84 295,-33.16 273.43,-23.7 264.14,-25.13 242,-33.16 230.99,-37.15 220.79,-45.1 212.84,-52.7\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"207.72,-57.85 210.42,-50.66 210.18,-55.37 212.65,-52.89 212.65,-52.89 212.65,-52.89 210.18,-55.37 214.89,-55.11 207.72,-57.85 207.72,-57.85\"/>\n",
"<text text-anchor=\"start\" x=\"244\" y=\"-51.96\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"260.5\" y=\"-36.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>2&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M320.63,-85.95C317.25,-96.58 320.71,-107.16 331,-107.16 338.88,-107.16 342.75,-100.96 342.62,-93.28\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"341.37,-85.95 345.65,-92.32 341.96,-89.4 342.55,-92.85 342.55,-92.85 342.55,-92.85 341.96,-89.4 339.44,-93.38 341.37,-85.95 341.37,-85.95\"/>\n",
"<text text-anchor=\"start\" x=\"304.5\" y=\"-125.96\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"323\" y=\"-110.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa2682117b0> >"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d = spot.zielonka_tree_transform(c); d"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "nutritional-rugby",
"metadata": {},
"outputs": [],
"source": [
"assert c.equivalent_to(d)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "criminal-marking",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Title: acd Pages: 1 -->\n",
"<svg width=\"147pt\" height=\"283pt\"\n",
" viewBox=\"0.00 0.00 146.59 283.38\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 279.38)\">\n",
"<title>acd</title>\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-279.38 142.59,-279.38 142.59,4 -4,4\"/>\n",
"<text text-anchor=\"middle\" x=\"69.3\" y=\"-244.18\" font-family=\"Times,serif\" font-size=\"14.00\">min even</text>\n",
"<!-- 0 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"69.3\" cy=\"-177.69\" rx=\"69.09\" ry=\"58.88\"/>\n",
"<text text-anchor=\"middle\" x=\"69.3\" y=\"-203.99\" font-family=\"Times,serif\" font-size=\"14.00\">SCC #0</text>\n",
"<text text-anchor=\"middle\" x=\"69.3\" y=\"-188.99\" font-family=\"Times,serif\" font-size=\"14.00\">T: 1&#45;8</text>\n",
"<text text-anchor=\"middle\" x=\"69.3\" y=\"-173.99\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3,4}</text>\n",
"<text text-anchor=\"middle\" x=\"69.3\" y=\"-158.99\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 0,1</text>\n",
"<text text-anchor=\"middle\" x=\"69.3\" y=\"-143.99\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 0</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>1</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"96.3,-83 42.3,-83 42.3,0 96.3,0 96.3,-83\"/>\n",
"<text text-anchor=\"middle\" x=\"69.3\" y=\"-67.8\" font-family=\"Times,serif\" font-size=\"14.00\">T: 6</text>\n",
"<text text-anchor=\"middle\" x=\"69.3\" y=\"-52.8\" font-family=\"Times,serif\" font-size=\"14.00\">{1}</text>\n",
"<text text-anchor=\"middle\" x=\"69.3\" y=\"-37.8\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 1</text>\n",
"<text text-anchor=\"middle\" x=\"69.3\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 1</text>\n",
"<text text-anchor=\"middle\" x=\"69.3\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;1&gt;</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M69.3,-118.61C69.3,-110.25 69.3,-101.69 69.3,-93.47\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"72.8,-93.29 69.3,-83.29 65.8,-93.29 72.8,-93.29\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/html": [
"<style>\n",
".acdhigh ellipse,.acdacc ellipse,.acdacc path,.acdacc polygon{stroke:green;}\n",
".acdhigh polygon,.acdrej ellipse,.acdrej path,.acdrej polygon{stroke:red;}\n",
".acdbold ellipse,.acdbold polygon,.acdbold path{stroke-width:2;}\n",
".acdrej polygon{fill:red;}\n",
".acdacc polygon{fill:green;}\n",
"</style><div><?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"356pt\" height=\"233pt\"\n",
" viewBox=\"0.00 0.00 356.00 233.30\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"acdaut1\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 229.3)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-229.3 352,-229.3 352,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"8\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\">(Fin(</text>\n",
"<text text-anchor=\"start\" x=\"35\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"51\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\">) &amp; (Fin(</text>\n",
"<text text-anchor=\"start\" x=\"99\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"115\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\">)|Fin(</text>\n",
"<text text-anchor=\"start\" x=\"146\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"<text text-anchor=\"start\" x=\"162\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\">)) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"211\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"227\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\">)&amp;Inf(</text>\n",
"<text text-anchor=\"start\" x=\"261\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"277\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\">))) | Inf(</text>\n",
"<text text-anchor=\"start\" x=\"320\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"336\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\">)</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"S0\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"120.75\" cy=\"-44.3\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"120.75\" y=\"-40.6\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"acdaut1_edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M65.9,-44.3C67.54,-44.3 81.9,-44.3 95.38,-44.3\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"102.69,-44.3 95.69,-47.45 99.19,-44.3 95.69,-44.3 95.69,-44.3 95.69,-44.3 99.19,-44.3 95.69,-41.15 102.69,-44.3 102.69,-44.3\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"E1\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<g id=\"a_E1\"><a xlink:title=\"0&#45;&gt;0&#10;#1\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M117.51,-62.08C116.96,-71.62 118.04,-80.3 120.75,-80.3 122.74,-80.3 123.85,-75.62 124.08,-69.35\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"123.99,-62.08 127.23,-69.04 124.03,-65.58 124.08,-69.08 124.08,-69.08 124.08,-69.08 124.03,-65.58 120.93,-69.12 123.99,-62.08 123.99,-62.08\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"94.25\" y=\"-98.1\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"104.75\" y=\"-84.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"120.75\" y=\"-84.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"E2\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<g id=\"a_E2\"><a xlink:title=\"0&#45;&gt;0&#10;#2\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M115.69,-61.9C112.31,-82.43 114,-108.3 120.75,-108.3 126.74,-108.3 128.74,-87.96 126.76,-69.03\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"125.81,-61.9 129.86,-68.42 126.28,-65.37 126.74,-68.83 126.74,-68.83 126.74,-68.83 126.28,-65.37 123.62,-69.25 125.81,-61.9 125.81,-61.9\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"92.25\" y=\"-126.1\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"96.75\" y=\"-112.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"112.75\" y=\"-112.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"128.75\" y=\"-112.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"S1\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"256.75\" cy=\"-44.3\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"256.75\" y=\"-40.6\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"E3\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<g id=\"a_E3\"><a xlink:title=\"0&#45;&gt;1&#10;#3\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M133.35,-57.44C139.59,-63.52 147.84,-70.09 156.75,-73.3 183.51,-82.95 193.99,-82.95 220.75,-73.3 227.29,-70.94 233.48,-66.77 238.78,-62.32\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"244.15,-57.44 241.08,-64.48 241.56,-59.79 238.97,-62.14 238.97,-62.14 238.97,-62.14 241.56,-59.79 236.85,-59.81 244.15,-57.44 244.15,-57.44\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"162.25\" y=\"-84.1\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"E4\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<g id=\"a_E4\"><a xlink:title=\"0&#45;&gt;1&#10;#4\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M138.82,-42.54C144.52,-42.04 150.9,-41.55 156.75,-41.3 185.17,-40.09 192.33,-40.09 220.75,-41.3 224.22,-41.45 227.88,-41.68 231.48,-41.95\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"238.68,-42.54 231.44,-45.11 235.19,-42.26 231.7,-41.97 231.7,-41.97 231.7,-41.97 235.19,-42.26 231.96,-38.83 238.68,-42.54 238.68,-42.54\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"164.25\" y=\"-59.1\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"172.75\" y=\"-45.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"188.75\" y=\"-45.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g id=\"E5\" class=\"edge\">\n",
"<title>1&#45;&gt;0</title>\n",
"<g id=\"a_E5\"><a xlink:title=\"1&#45;&gt;0&#10;#5\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M245.96,-29.56C239.78,-21.64 231.03,-12.64 220.75,-8.3 194.55,2.77 182.95,2.77 156.75,-8.3 148.88,-11.63 141.91,-17.68 136.3,-23.89\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"131.54,-29.56 133.63,-22.17 133.79,-26.88 136.04,-24.2 136.04,-24.2 136.04,-24.2 133.79,-26.88 138.45,-26.22 131.54,-29.56 131.54,-29.56\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"160.25\" y=\"-26.1\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"156.75\" y=\"-12.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"172.75\" y=\"-12.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"188.75\" y=\"-12.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"204.75\" y=\"-12.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"E6\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<g id=\"a_E6\"><a xlink:title=\"1&#45;&gt;1&#10;#6\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M252.68,-62.08C251.98,-71.62 253.34,-80.3 256.75,-80.3 259.25,-80.3 260.65,-75.62 260.94,-69.35\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"260.82,-62.08 264.09,-69.03 260.88,-65.58 260.94,-69.08 260.94,-69.08 260.94,-69.08 260.88,-65.58 257.79,-69.13 260.82,-62.08 260.82,-62.08\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"230.25\" y=\"-99.1\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"248.75\" y=\"-84.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"E7\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<g id=\"a_E7\"><a xlink:title=\"1&#45;&gt;1&#10;#7\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M250.58,-61.22C246.06,-82.45 248.12,-110.3 256.75,-110.3 264.47,-110.3 266.93,-88.02 264.13,-68.12\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"262.92,-61.22 267.23,-67.57 263.53,-64.67 264.13,-68.12 264.13,-68.12 264.13,-68.12 263.53,-64.67 261.03,-68.66 262.92,-61.22 262.92,-61.22\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"230.25\" y=\"-128.1\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"240.75\" y=\"-114.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"256.75\" y=\"-114.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"E8\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<g id=\"a_E8\"><a xlink:title=\"1&#45;&gt;1&#10;#8\">\n",
"<path fill=\"none\" stroke=\"black\" d=\"M249.23,-61.02C240.3,-91.2 242.8,-138.3 256.75,-138.3 269.66,-138.3 272.77,-97.93 266.07,-68\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"264.27,-61.02 269.07,-67.01 265.14,-64.41 266.02,-67.8 266.02,-67.8 266.02,-67.8 265.14,-64.41 262.97,-68.59 264.27,-61.02 264.27,-61.02\"/>\n",
"</a>\n",
"</g>\n",
"<text text-anchor=\"start\" x=\"232.25\" y=\"-156.1\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"232.75\" y=\"-142.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"248.75\" y=\"-142.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"264.75\" y=\"-142.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n",
"</div><div><?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Title: acd Pages: 1 -->\n",
"<svg width=\"147pt\" height=\"283pt\"\n",
" viewBox=\"0.00 0.00 146.59 283.38\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"acd1\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 279.38)\">\n",
"<title>acd</title>\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-279.38 142.59,-279.38 142.59,4 -4,4\"/>\n",
"<text text-anchor=\"middle\" x=\"69.3\" y=\"-244.18\" font-family=\"Times,serif\" font-size=\"14.00\">min even</text>\n",
"<!-- 0 -->\n",
"<g id=\"N0\" class=\"node acdS0\n",
" acdS1\n",
"\">\n",
"<title>0</title>\n",
"<ellipse fill=\"white\" stroke=\"black\" cx=\"69.3\" cy=\"-177.69\" rx=\"69.09\" ry=\"58.88\"/>\n",
"<text text-anchor=\"middle\" x=\"69.3\" y=\"-203.99\" font-family=\"Times,serif\" font-size=\"14.00\">SCC #0</text>\n",
"<text text-anchor=\"middle\" x=\"69.3\" y=\"-188.99\" font-family=\"Times,serif\" font-size=\"14.00\">T: 1&#45;8</text>\n",
"<text text-anchor=\"middle\" x=\"69.3\" y=\"-173.99\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3,4}</text>\n",
"<text text-anchor=\"middle\" x=\"69.3\" y=\"-158.99\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 0,1</text>\n",
"<text text-anchor=\"middle\" x=\"69.3\" y=\"-143.99\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 0</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"N1\" class=\"node acdS1\n",
"\">\n",
"<title>1</title>\n",
"<polygon fill=\"white\" stroke=\"black\" points=\"96.3,-83 42.3,-83 42.3,0 96.3,0 96.3,-83\"/>\n",
"<text text-anchor=\"middle\" x=\"69.3\" y=\"-67.8\" font-family=\"Times,serif\" font-size=\"14.00\">T: 6</text>\n",
"<text text-anchor=\"middle\" x=\"69.3\" y=\"-52.8\" font-family=\"Times,serif\" font-size=\"14.00\">{1}</text>\n",
"<text text-anchor=\"middle\" x=\"69.3\" y=\"-37.8\" font-family=\"Times,serif\" font-size=\"14.00\">Q: 1</text>\n",
"<text text-anchor=\"middle\" x=\"69.3\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">lvl: 1</text>\n",
"<text text-anchor=\"middle\" x=\"69.3\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;1&gt;</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"acd1_edge1\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M69.3,-118.61C69.3,-110.25 69.3,-101.69 69.3,-93.47\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"72.8,-93.29 69.3,-83.29 65.8,-93.29 72.8,-93.29\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n",
"</div><script>\n",
"function acd1_clear(){\n",
" $(\"#acd1 .node,#acdaut1 .node,#acdaut1 .edge\")\n",
" .removeClass(\"acdhigh acdbold acdacc acdrej\");\n",
"};\n",
"function acd1_state(state){\n",
" acd1_clear();\n",
" $(\"#acd1 .acdS\" + state).addClass(\"acdhigh acdbold\");\n",
" $(\"#acdaut1 #S\" + state).addClass(\"acdbold\");\n",
"};\n",
"function acd1_edge(edge){\n",
" acd1_clear();\n",
" var theedge = $('#acdaut1 #E' + edge)\n",
" var classList = theedge.attr('class').split(/\\s+/);\n",
" $.each(classList, function(index, item) {\n",
" if (item.startsWith('acdN')) {\n",
" $(\"#acd1 #\" + item.substring(3)).addClass(\"acdhigh acdbold\");\n",
" }\n",
" });\n",
" theedge.addClass(\"acdbold\");\n",
"};\n",
"function acd1_node(node, acc){\n",
" acd1_clear();\n",
" $(\"#acdaut1 .acdN\" + node).addClass(acc\n",
" ? \"acdacc acdbold\"\n",
" : \"acdrej acdbold\");\n",
" $(\"#acd1 #N\" + node).addClass(\"acdbold acdhigh\");\n",
"};$(\"#acdaut1 #E1\").addClass(\"acdN0\");$(\"#acdaut1 #E2\").addClass(\"acdN0\");$(\"#acdaut1 #E3\").addClass(\"acdN0\");$(\"#acdaut1 #E4\").addClass(\"acdN0\");$(\"#acdaut1 #E5\").addClass(\"acdN0\");$(\"#acdaut1 #E6\").addClass(\"acdN0\");$(\"#acdaut1 #E7\").addClass(\"acdN0\");$(\"#acdaut1 #E8\").addClass(\"acdN0\");$(\"#acdaut1 #E6\").addClass(\"acdN1\");$(\"#acdaut1 #E1\").click(function(){acd1_edge(1);});$(\"#acdaut1 #E2\").click(function(){acd1_edge(2);});$(\"#acdaut1 #E3\").click(function(){acd1_edge(3);});$(\"#acdaut1 #E4\").click(function(){acd1_edge(4);});$(\"#acdaut1 #E5\").click(function(){acd1_edge(5);});$(\"#acdaut1 #E6\").click(function(){acd1_edge(6);});$(\"#acdaut1 #E7\").click(function(){acd1_edge(7);});$(\"#acdaut1 #E8\").click(function(){acd1_edge(8);});$(\"#acdaut1 #S0\").click(function(){acd1_state(0);});$(\"#acdaut1 #S1\").click(function(){acd1_state(1);});$(\"#acd1 #N0\").click(function(){acd1_node(0, 1);});$(\"#acd1 #N1\").click(function(){acd1_node(1, 0);});</script>"
],
"text/plain": [
"<spot.acd; proxy of <Swig Object of type 'spot::acd *' at 0x7fa268216150> >"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"spot.acd(c)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "unusual-dependence",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"220pt\" height=\"237pt\"\n",
" viewBox=\"0.00 0.00 219.50 236.63\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 232.63)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-232.63 215.5,-232.63 215.5,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"85.25\" y=\"-214.43\" font-family=\"Lato\" font-size=\"14.00\">Inf(</text>\n",
"<text text-anchor=\"start\" x=\"106.25\" y=\"-214.43\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"122.25\" y=\"-214.43\" font-family=\"Lato\" font-size=\"14.00\">)</text>\n",
"<text text-anchor=\"start\" x=\"84.25\" y=\"-200.43\" font-family=\"Lato\" font-size=\"14.00\">[Büchi]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-45.63\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-41.93\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.15,-45.63C2.79,-45.63 17.15,-45.63 30.63,-45.63\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.94,-45.63 30.94,-48.78 34.44,-45.63 30.94,-45.63 30.94,-45.63 30.94,-45.63 34.44,-45.63 30.94,-42.48 37.94,-45.63 37.94,-45.63\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M52.76,-63.41C52.21,-72.94 53.29,-81.63 56,-81.63 57.99,-81.63 59.1,-76.95 59.33,-70.68\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"59.24,-63.41 62.48,-70.37 59.28,-66.91 59.33,-70.41 59.33,-70.41 59.33,-70.41 59.28,-66.91 56.18,-70.45 59.24,-63.41 59.24,-63.41\"/>\n",
"<text text-anchor=\"start\" x=\"29.5\" y=\"-100.43\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"48\" y=\"-85.43\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M50.99,-63.21C47.55,-84.35 49.21,-111.63 56,-111.63 62.04,-111.63 64.03,-89.99 61.96,-70.32\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"61.01,-63.21 65.06,-69.73 61.47,-66.68 61.93,-70.15 61.93,-70.15 61.93,-70.15 61.47,-66.68 58.81,-70.56 61.01,-63.21 61.01,-63.21\"/>\n",
"<text text-anchor=\"start\" x=\"27.5\" y=\"-130.43\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"48\" y=\"-115.43\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"185\" cy=\"-45.63\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"185\" y=\"-41.93\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M68.12,-59.33C74.36,-65.91 82.74,-73.12 92,-76.63 115.69,-85.61 125.31,-85.61 149,-76.63 155.94,-74 162.4,-69.29 167.82,-64.32\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"172.88,-59.33 170.1,-66.49 170.39,-61.79 167.89,-64.25 167.89,-64.25 167.89,-64.25 170.39,-61.79 165.68,-62 172.88,-59.33 172.88,-59.33\"/>\n",
"<text text-anchor=\"start\" x=\"94\" y=\"-101.43\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"112.5\" y=\"-86.43\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M74.07,-43.87C79.77,-43.36 86.15,-42.88 92,-42.63 117.31,-41.55 123.69,-41.55 149,-42.63 152.47,-42.78 156.13,-43.01 159.73,-43.28\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"166.93,-43.87 159.69,-46.44 163.44,-43.58 159.95,-43.3 159.95,-43.3 159.95,-43.3 163.44,-43.58 160.21,-40.16 166.93,-43.87 166.93,-43.87\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-61.43\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"112.5\" y=\"-46.43\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>1&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M174.67,-30.48C168.54,-22.04 159.68,-12.31 149,-7.63 125.8,2.54 115.2,2.54 92,-7.63 83.66,-11.29 76.43,-18.02 70.74,-24.82\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"66.33,-30.48 68.15,-23.02 68.48,-27.72 70.63,-24.96 70.63,-24.96 70.63,-24.96 68.48,-27.72 73.12,-26.89 66.33,-30.48 66.33,-30.48\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-26.43\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"112.5\" y=\"-11.43\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M181.17,-63.41C180.51,-72.94 181.79,-81.63 185,-81.63 187.36,-81.63 188.67,-76.95 188.95,-70.68\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"188.83,-63.41 192.09,-70.36 188.89,-66.91 188.94,-70.41 188.94,-70.41 188.94,-70.41 188.89,-66.91 185.79,-70.46 188.83,-63.41 188.83,-63.41\"/>\n",
"<text text-anchor=\"start\" x=\"158.5\" y=\"-85.43\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M178.76,-62.77C175.09,-80.21 177.17,-99.63 185,-99.63 191.79,-99.63 194.26,-85.03 192.4,-69.78\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"191.24,-62.77 195.49,-69.16 191.81,-66.22 192.38,-69.68 192.38,-69.68 192.38,-69.68 191.81,-66.22 189.28,-70.19 191.24,-62.77 191.24,-62.77\"/>\n",
"<text text-anchor=\"start\" x=\"158.5\" y=\"-118.43\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"177\" y=\"-103.43\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M177.69,-62.29C169.56,-90.02 172,-129.63 185,-129.63 196.93,-129.63 199.97,-96.25 194.1,-69.33\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"192.31,-62.29 197.09,-68.3 193.17,-65.69 194.04,-69.08 194.04,-69.08 194.04,-69.08 193.17,-65.69 190.98,-69.85 192.31,-62.29 192.31,-62.29\"/>\n",
"<text text-anchor=\"start\" x=\"160.5\" y=\"-148.43\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"177\" y=\"-133.43\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa2682163c0> >"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d = spot.acd_transform(c); d"
]
},
{
"cell_type": "code",
"execution_count": 39,
"id": "9ed0bc59",
"metadata": {},
"outputs": [],
"source": [
"assert c.equivalent_to(d)"
]
},
{
"cell_type": "markdown",
"id": "7d638d20",
"metadata": {},
"source": [
"An issue in Spot is to always ensure that property bits of automata (cleaming that an automaton is weak, inherently weak, deterministic, etc.) are properly preserved or reset.\n",
"\n",
"Here if the input is inherently weak, the output should be weak. "
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "german-vienna",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"170pt\" height=\"137pt\"\n",
" viewBox=\"0.00 0.00 170.00 136.63\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 132.63)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-132.63 166,-132.63 166,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"34.5\" y=\"-114.43\" font-family=\"Lato\" font-size=\"14.00\">Inf(</text>\n",
"<text text-anchor=\"start\" x=\"55.5\" y=\"-114.43\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"71.5\" y=\"-114.43\" font-family=\"Lato\" font-size=\"14.00\">) | Inf(</text>\n",
"<text text-anchor=\"start\" x=\"107.5\" y=\"-114.43\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"123.5\" y=\"-114.43\" font-family=\"Lato\" font-size=\"14.00\">)</text>\n",
"<text text-anchor=\"start\" x=\"47\" y=\"-100.43\" font-family=\"Lato\" font-size=\"14.00\">[Fin&#45;less 2]</text>\n",
"<!-- I -->\n",
"<!-- 1 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-26.63\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-22.93\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- I&#45;&gt;1 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.15,-26.63C2.79,-26.63 17.15,-26.63 30.63,-26.63\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.94,-26.63 30.94,-29.78 34.44,-26.63 30.94,-26.63 30.94,-26.63 30.94,-26.63 34.44,-26.63 30.94,-23.48 37.94,-26.63 37.94,-26.63\"/>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M49.62,-43.66C48.32,-53.49 50.45,-62.63 56,-62.63 60.17,-62.63 62.4,-57.49 62.71,-50.77\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"62.38,-43.66 65.85,-50.51 62.54,-47.16 62.71,-50.66 62.71,-50.66 62.71,-50.66 62.54,-47.16 59.56,-50.8 62.38,-43.66 62.38,-43.66\"/>\n",
"<text text-anchor=\"start\" x=\"50.5\" y=\"-81.43\" font-family=\"Lato\" font-size=\"14.00\">!a</text>\n",
"<text text-anchor=\"start\" x=\"48\" y=\"-66.43\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"144\" cy=\"-26.63\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"144\" y=\"-22.93\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>1&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M74.04,-29.56C79.73,-30.4 86.12,-31.21 92,-31.63 99.09,-32.13 100.91,-32.13 108,-31.63 111.49,-31.38 115.16,-30.99 118.76,-30.54\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"125.96,-29.56 119.46,-33.63 122.49,-30.03 119.03,-30.51 119.03,-30.51 119.03,-30.51 122.49,-30.03 118.6,-27.39 125.96,-29.56 125.96,-29.56\"/>\n",
"<text text-anchor=\"start\" x=\"96.5\" y=\"-50.43\" font-family=\"Lato\" font-size=\"14.00\">a</text>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-35.43\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M130.45,-14.75C124.21,-9.65 116.25,-4.27 108,-1.63 101.23,0.54 98.77,0.54 92,-1.63 86.07,-3.53 80.29,-6.84 75.19,-10.45\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"69.55,-14.75 73.21,-8 72.34,-12.62 75.12,-10.5 75.12,-10.5 75.12,-10.5 72.34,-12.62 77.03,-13.01 69.55,-14.75 69.55,-14.75\"/>\n",
"<text text-anchor=\"start\" x=\"95.5\" y=\"-20.43\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-5.43\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa268216a50> >"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"w = spot.automaton(\"\"\"HOA: v1\n",
"States: 2\n",
"Start: 1\n",
"AP: 1 \"a\"\n",
"Acceptance: 2 Inf(0) | Inf(1)\n",
"properties: trans-labels explicit-labels trans-acc colored complete\n",
"properties: deterministic inherently-weak\n",
"--BODY--\n",
"State: 0\n",
"[t] 1 {0}\n",
"State: 1\n",
"[0] 0 {1}\n",
"[!0] 1 {0}\n",
"--END--\"\"\"); w"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "chemical-primary",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(spot.trival_maybe(), spot.trival(True))"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"w.prop_weak(), w.prop_inherently_weak()"
]
},
{
"cell_type": "code",
"execution_count": 42,
"id": "hispanic-floor",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"163pt\" height=\"117pt\"\n",
" viewBox=\"0.00 0.00 163.00 117.35\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 113.35)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-113.35 159,-113.35 159,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"74.5\" y=\"-94.15\" font-family=\"Lato\" font-size=\"14.00\">t</text>\n",
"<text text-anchor=\"start\" x=\"66.5\" y=\"-79.15\" font-family=\"Lato\" font-size=\"14.00\">[all]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-20.35\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-16.65\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.15,-20.35C2.79,-20.35 17.15,-20.35 30.63,-20.35\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.94,-20.35 30.94,-23.5 34.44,-20.35 30.94,-20.35 30.94,-20.35 30.94,-20.35 34.44,-20.35 30.94,-17.2 37.94,-20.35 37.94,-20.35\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M49.62,-37.39C48.32,-47.21 50.45,-56.35 56,-56.35 60.17,-56.35 62.4,-51.21 62.71,-44.49\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"62.38,-37.39 65.85,-44.23 62.54,-40.89 62.71,-44.38 62.71,-44.38 62.71,-44.38 62.54,-40.89 59.56,-44.53 62.38,-37.39 62.38,-37.39\"/>\n",
"<text text-anchor=\"start\" x=\"50.5\" y=\"-60.15\" font-family=\"Lato\" font-size=\"14.00\">!a</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"137\" cy=\"-20.35\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"137\" y=\"-16.65\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M74.14,-20.35C85.12,-20.35 99.52,-20.35 111.67,-20.35\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"118.89,-20.35 111.89,-23.5 115.39,-20.35 111.89,-20.35 111.89,-20.35 111.89,-20.35 115.39,-20.35 111.89,-17.2 118.89,-20.35 118.89,-20.35\"/>\n",
"<text text-anchor=\"start\" x=\"93\" y=\"-24.15\" font-family=\"Lato\" font-size=\"14.00\">a</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M122.52,-9.39C114.01,-3.78 102.65,1.35 92,-1.35 87.14,-2.59 82.22,-4.65 77.67,-6.97\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"71.31,-10.49 75.91,-4.34 74.37,-8.79 77.44,-7.1 77.44,-7.1 77.44,-7.1 74.37,-8.79 78.96,-9.85 71.31,-10.49 71.31,-10.49\"/>\n",
"<text text-anchor=\"middle\" x=\"96.5\" y=\"-5.15\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa268216270> >"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"w2 = spot.acd_transform(w); w2"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "central-london",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(spot.trival(True), spot.trival(True))"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"w2.prop_weak(), w2.prop_inherently_weak()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}