spot/tests/python/games.ipynb
Philipp Schlehuber c973fcdf2d Improving handling of unused proposition for aig
By default only propositions appearing in the strategy are
treated. By handing over propositions explicitly one
can force their appearance in the aig circuit.

* spot/twaalgos/aiger.cc: Here
* spot/twaalgos/aiger.hh: New doc
* tests/python/games.ipynb: New test
2021-09-16 14:53:49 +02:00

4402 lines
326 KiB
Text

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import spot\n",
"from buddy import bddtrue\n",
"spot.setup()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Support for games\n",
"\n",
"The support for games is currently quite rudimentary, as Spot currently only uses those games in `ltlsynt`.\n",
"\n",
"In essence, agame is just an ω-automaton with a property named `state-player` that stores the player owning each state. The players are named 0 and 1. The player owning a state can decide what the next transition from this state should be. The goal for player 1 is to force the play to be infinite and to satisfy the acceptance condition of the automaton, while the goal for player 0 is to prevent it by either forcing a finite play, or forcing an infinite play that does not satisfy the acceptance condition.\n",
"\n",
"The support is currently restricted to games that use:\n",
"- `t` acceptance: all infinite run are accepting, and player 0 can only win if it manages to force a finite play (this requires reaching states without successors).\n",
"- max odd parity acceptance: player 0 can win if the maximal value seen infinitely often is even"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Creating games from scratch\n",
"\n",
"Games can be [created like any automaton](https://spot.lrde.epita.fr/tut22.html). \n",
"Using `set_state_players()` will fix the state owners."
]
},
{
"cell_type": "code",
"execution_count": 2,
"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.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"495pt\" height=\"190pt\"\n",
" viewBox=\"0.00 0.00 495.00 190.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 186)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-186 491,-186 491,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"240.5\" y=\"-166.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">t</text>\n",
"<text text-anchor=\"start\" x=\"232.5\" y=\"-151.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[all]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"64,-144 37,-126 64,-108 91,-126 64,-144\"/>\n",
"<text text-anchor=\"middle\" x=\"64\" y=\"-122.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.2131,-126C4.2712,-126 16.7131,-126 29.7242,-126\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"36.9552,-126 29.9552,-129.1501 33.4552,-126 29.9552,-126.0001 29.9552,-126.0001 29.9552,-126.0001 33.4552,-126 29.9551,-122.8501 36.9552,-126 36.9552,-126\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"145\" cy=\"-126\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"145\" y=\"-122.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M82.3802,-120.2392C93.6671,-119.1141 108.2605,-118.9488 120.5195,-119.7431\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"127.8003,-120.3617 120.5587,-122.9077 124.3129,-120.0653 120.8254,-119.769 120.8254,-119.769 120.8254,-119.769 124.3129,-120.0653 121.0921,-116.6303 127.8003,-120.3617 127.8003,-120.3617\"/>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"145\" cy=\"-72\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"145\" y=\"-68.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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=\"#000000\" d=\"M77.7405,-116.8396C90.3786,-108.4142 109.3093,-95.7938 123.8702,-86.0865\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"129.8121,-82.1253 125.735,-88.6292 126.8999,-84.0668 123.9877,-86.0082 123.9877,-86.0082 123.9877,-86.0082 126.8999,-84.0668 122.2404,-83.3873 129.8121,-82.1253 129.8121,-82.1253\"/>\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=\"#000000\" d=\"M127.8003,-131.6383C116.6491,-132.8423 101.9263,-133.0683 89.4339,-132.3165\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"82.3802,-131.7608 89.606,-129.1704 85.8693,-132.0357 89.3585,-132.3106 89.3585,-132.3106 89.3585,-132.3106 85.8693,-132.0357 89.1111,-135.4509 82.3802,-131.7608 82.3802,-131.7608\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"226,-144 199,-126 226,-108 253,-126 226,-144\"/>\n",
"<text text-anchor=\"middle\" x=\"226\" y=\"-122.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>1&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M162.178,-120.364C173.2806,-119.1636 187.9303,-118.9333 200.3937,-119.6732\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"207.436,-120.221 200.2128,-122.8186 203.9466,-119.9495 200.4571,-119.6781 200.4571,-119.6781 200.4571,-119.6781 203.9466,-119.9495 200.7014,-116.5375 207.436,-120.221 207.436,-120.221\"/>\n",
"</g>\n",
"<!-- 3&#45;&gt;2 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>3&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M160.2355,-82.157C173.2706,-90.847 192.1193,-103.4129 206.2992,-112.8661\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"212.4481,-116.9654 204.8764,-115.7034 209.5359,-115.0239 206.6238,-113.0825 206.6238,-113.0825 206.6238,-113.0825 209.5359,-115.0239 208.3711,-110.4615 212.4481,-116.9654 212.4481,-116.9654\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"226,-90 199,-72 226,-54 253,-72 226,-90\"/>\n",
"<text text-anchor=\"middle\" x=\"226\" y=\"-68.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">4</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;4 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>3&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M163.3802,-72C171.7119,-72 181.8453,-72 191.5115,-72\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"198.7746,-72 191.7747,-75.1501 195.2746,-72 191.7746,-72.0001 191.7746,-72.0001 191.7746,-72.0001 195.2746,-72 191.7746,-68.8501 198.7746,-72 198.7746,-72\"/>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>6</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"226,-36 199,-18 226,0 253,-18 226,-36\"/>\n",
"<text text-anchor=\"middle\" x=\"226\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">6</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;6 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>3&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M160.2355,-61.843C173.2706,-53.153 192.1193,-40.5871 206.2992,-31.1339\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"212.4481,-27.0346 208.3711,-33.5385 209.5359,-28.9761 206.6238,-30.9175 206.6238,-30.9175 206.6238,-30.9175 209.5359,-28.9761 204.8764,-28.2966 212.4481,-27.0346 212.4481,-27.0346\"/>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>2&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M207.436,-131.779C196.1581,-132.8893 181.6301,-133.0474 169.4264,-132.2534\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"162.178,-131.636 169.4201,-129.0915 165.6654,-131.9331 169.1528,-132.2302 169.1528,-132.2302 169.1528,-132.2302 165.6654,-131.9331 168.8854,-135.3688 162.178,-131.636 162.178,-131.636\"/>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>5</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"460,-90 433,-72 460,-54 487,-72 460,-90\"/>\n",
"<text text-anchor=\"middle\" x=\"460\" y=\"-68.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">5</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;5 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>2&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M246.3566,-121.3023C288.5563,-111.5639 385.5805,-89.1737 432.9661,-78.2386\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"439.8571,-76.6484 433.7447,-81.2918 436.4467,-77.4354 433.0363,-78.2225 433.0363,-78.2225 433.0363,-78.2225 436.4467,-77.4354 432.328,-75.1531 439.8571,-76.6484 439.8571,-76.6484\"/>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>7</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"307\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"307\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">7</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;7 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>6&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M244.3802,-12.2392C255.6671,-11.1141 270.2605,-10.9488 282.5195,-11.7431\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"289.8003,-12.3617 282.5587,-14.9077 286.3129,-12.0653 282.8254,-11.769 282.8254,-11.769 282.8254,-11.769 286.3129,-12.0653 283.0921,-8.6303 289.8003,-12.3617 289.8003,-12.3617\"/>\n",
"</g>\n",
"<!-- 7&#45;&gt;6 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>7&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M289.8003,-23.6383C278.6491,-24.8423 263.9263,-25.0683 251.4339,-24.3165\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"244.3802,-23.7608 251.606,-21.1704 247.8693,-24.0357 251.3585,-24.3106 251.3585,-24.3106 251.3585,-24.3106 247.8693,-24.0357 251.1111,-27.4509 244.3802,-23.7608 244.3802,-23.7608\"/>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"379\" cy=\"-49\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"379\" y=\"-45.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">8</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;8 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>7&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M323.6992,-25.1899C333.2409,-29.2982 345.3509,-34.5122 355.8046,-39.0131\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"362.3913,-41.849 354.7162,-41.974 359.1766,-40.4649 355.9619,-39.0808 355.9619,-39.0808 355.9619,-39.0808 359.1766,-40.4649 357.2077,-36.1876 362.3913,-41.849 362.3913,-41.849\"/>\n",
"</g>\n",
"<!-- 8&#45;&gt;5 -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>8&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M396.5758,-53.9907C407.5442,-57.1052 421.8575,-61.1694 434.1105,-64.6486\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"441.0459,-66.618 433.4516,-67.736 437.679,-65.6619 434.3121,-64.7058 434.3121,-64.7058 434.3121,-64.7058 437.679,-65.6619 435.1725,-61.6756 441.0459,-66.618 441.0459,-66.618\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.jupyter.SVG object>"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bdict = spot.make_bdd_dict();\n",
"game = spot.make_twa_graph(bdict)\n",
"game.new_states(9)\n",
"for (s, d) in ((0,1), (0, 3), \n",
" (1, 0), (1, 2),\n",
" (2, 1), (2, 5),\n",
" (3, 2), (3, 4), (3, 6),\n",
" (6, 7),\n",
" (7, 6), (7, 8),\n",
" (8, 5)):\n",
" game.new_edge(s, d, bddtrue)\n",
"spot.set_state_players(game, [True, False, True, False, True, True, True, False, False])\n",
"game.show('.g') # Use \"g\" to hide the irrelevant edge labels."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The `set_state_players()` function takes a list of owner for each of the states in the automaton. In the output,\n",
"states from player 0 use circles, ellispes, or rectangle with rounded corners (mnemonic: 0 is round) while states from player 1 have a losanse shape (1 has only straight lines). \n",
"\n",
"\n",
"State ownership can also be manipulated by the following functions:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(True, False, True, False, True, True, True, False, False)"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"spot.get_state_players(game)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"spot.get_state_player(game, 4)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"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.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"495pt\" height=\"190pt\"\n",
" viewBox=\"0.00 0.00 495.00 190.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 186)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-186 491,-186 491,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"240.5\" y=\"-166.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">t</text>\n",
"<text text-anchor=\"start\" x=\"232.5\" y=\"-151.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[all]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"64,-144 37,-126 64,-108 91,-126 64,-144\"/>\n",
"<text text-anchor=\"middle\" x=\"64\" y=\"-122.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.2131,-126C4.2712,-126 16.7131,-126 29.7242,-126\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"36.9552,-126 29.9552,-129.1501 33.4552,-126 29.9552,-126.0001 29.9552,-126.0001 29.9552,-126.0001 33.4552,-126 29.9551,-122.8501 36.9552,-126 36.9552,-126\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"145\" cy=\"-126\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"145\" y=\"-122.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M82.3802,-120.2392C93.6671,-119.1141 108.2605,-118.9488 120.5195,-119.7431\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"127.8003,-120.3617 120.5587,-122.9077 124.3129,-120.0653 120.8254,-119.769 120.8254,-119.769 120.8254,-119.769 124.3129,-120.0653 121.0921,-116.6303 127.8003,-120.3617 127.8003,-120.3617\"/>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"145\" cy=\"-72\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"145\" y=\"-68.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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=\"#000000\" d=\"M77.7405,-116.8396C90.3786,-108.4142 109.3093,-95.7938 123.8702,-86.0865\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"129.8121,-82.1253 125.735,-88.6292 126.8999,-84.0668 123.9877,-86.0082 123.9877,-86.0082 123.9877,-86.0082 126.8999,-84.0668 122.2404,-83.3873 129.8121,-82.1253 129.8121,-82.1253\"/>\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=\"#000000\" d=\"M127.8003,-131.6383C116.6491,-132.8423 101.9263,-133.0683 89.4339,-132.3165\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"82.3802,-131.7608 89.606,-129.1704 85.8693,-132.0357 89.3585,-132.3106 89.3585,-132.3106 89.3585,-132.3106 85.8693,-132.0357 89.1111,-135.4509 82.3802,-131.7608 82.3802,-131.7608\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"226,-144 199,-126 226,-108 253,-126 226,-144\"/>\n",
"<text text-anchor=\"middle\" x=\"226\" y=\"-122.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>1&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M162.178,-120.364C173.2806,-119.1636 187.9303,-118.9333 200.3937,-119.6732\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"207.436,-120.221 200.2128,-122.8186 203.9466,-119.9495 200.4571,-119.6781 200.4571,-119.6781 200.4571,-119.6781 203.9466,-119.9495 200.7014,-116.5375 207.436,-120.221 207.436,-120.221\"/>\n",
"</g>\n",
"<!-- 3&#45;&gt;2 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>3&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M160.2355,-82.157C173.2706,-90.847 192.1193,-103.4129 206.2992,-112.8661\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"212.4481,-116.9654 204.8764,-115.7034 209.5359,-115.0239 206.6238,-113.0825 206.6238,-113.0825 206.6238,-113.0825 209.5359,-115.0239 208.3711,-110.4615 212.4481,-116.9654 212.4481,-116.9654\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>4</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"226\" cy=\"-72\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"226\" y=\"-68.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">4</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;4 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>3&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M163.3802,-72C174.4352,-72 188.6622,-72 200.7609,-72\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"207.9716,-72 200.9716,-75.1501 204.4716,-72 200.9716,-72.0001 200.9716,-72.0001 200.9716,-72.0001 204.4716,-72 200.9716,-68.8501 207.9716,-72 207.9716,-72\"/>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>6</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"226,-36 199,-18 226,0 253,-18 226,-36\"/>\n",
"<text text-anchor=\"middle\" x=\"226\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">6</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;6 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>3&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M160.2355,-61.843C173.2706,-53.153 192.1193,-40.5871 206.2992,-31.1339\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"212.4481,-27.0346 208.3711,-33.5385 209.5359,-28.9761 206.6238,-30.9175 206.6238,-30.9175 206.6238,-30.9175 209.5359,-28.9761 204.8764,-28.2966 212.4481,-27.0346 212.4481,-27.0346\"/>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>2&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M207.436,-131.779C196.1581,-132.8893 181.6301,-133.0474 169.4264,-132.2534\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"162.178,-131.636 169.4201,-129.0915 165.6654,-131.9331 169.1528,-132.2302 169.1528,-132.2302 169.1528,-132.2302 165.6654,-131.9331 168.8854,-135.3688 162.178,-131.636 162.178,-131.636\"/>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>5</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"460,-90 433,-72 460,-54 487,-72 460,-90\"/>\n",
"<text text-anchor=\"middle\" x=\"460\" y=\"-68.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">5</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;5 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>2&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M246.3566,-121.3023C288.5563,-111.5639 385.5805,-89.1737 432.9661,-78.2386\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"439.8571,-76.6484 433.7447,-81.2918 436.4467,-77.4354 433.0363,-78.2225 433.0363,-78.2225 433.0363,-78.2225 436.4467,-77.4354 432.328,-75.1531 439.8571,-76.6484 439.8571,-76.6484\"/>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>7</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"307\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"307\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">7</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;7 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>6&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M244.3802,-12.2392C255.6671,-11.1141 270.2605,-10.9488 282.5195,-11.7431\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"289.8003,-12.3617 282.5587,-14.9077 286.3129,-12.0653 282.8254,-11.769 282.8254,-11.769 282.8254,-11.769 286.3129,-12.0653 283.0921,-8.6303 289.8003,-12.3617 289.8003,-12.3617\"/>\n",
"</g>\n",
"<!-- 7&#45;&gt;6 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>7&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M289.8003,-23.6383C278.6491,-24.8423 263.9263,-25.0683 251.4339,-24.3165\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"244.3802,-23.7608 251.606,-21.1704 247.8693,-24.0357 251.3585,-24.3106 251.3585,-24.3106 251.3585,-24.3106 247.8693,-24.0357 251.1111,-27.4509 244.3802,-23.7608 244.3802,-23.7608\"/>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"379\" cy=\"-49\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"379\" y=\"-45.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">8</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;8 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>7&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M323.6992,-25.1899C333.2409,-29.2982 345.3509,-34.5122 355.8046,-39.0131\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"362.3913,-41.849 354.7162,-41.974 359.1766,-40.4649 355.9619,-39.0808 355.9619,-39.0808 355.9619,-39.0808 359.1766,-40.4649 357.2077,-36.1876 362.3913,-41.849 362.3913,-41.849\"/>\n",
"</g>\n",
"<!-- 8&#45;&gt;5 -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>8&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M396.5758,-53.9907C407.5442,-57.1052 421.8575,-61.1694 434.1105,-64.6486\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"441.0459,-66.618 433.4516,-67.736 437.679,-65.6619 434.3121,-64.7058 434.3121,-64.7058 434.3121,-64.7058 437.679,-65.6619 435.1725,-61.6756 441.0459,-66.618 441.0459,-66.618\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.jupyter.SVG object>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"spot.set_state_player(game, 4, False)\n",
"game.show('.g')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Solving a game - The \"old\" way\n",
"\n",
"Solving a game is done my calling `solve_safety_game()` or `solve_parity_game()`. This will attach two additional vectors into the game automaton: one vector stores the winner of each state, and one vector stores (memory-less) strategy for each state, i.e., the transition that should always be taken by the owner of this state in order to win. \n",
"\n",
"The return value of those function is simply the winner for the initial state."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"spot.solve_safety_game(game)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Calling the `highlight_strategy()` function can be used to decorate the `game` automaton using the winning regions and strategies. Below, green represent the winning region/strategy for player 1 and red those for player 0."
]
},
{
"cell_type": "code",
"execution_count": 7,
"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.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"495pt\" height=\"190pt\"\n",
" viewBox=\"0.00 0.00 495.00 190.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 186)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-186 491,-186 491,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"240.5\" y=\"-166.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">t</text>\n",
"<text text-anchor=\"start\" x=\"232.5\" y=\"-151.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[all]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"64,-144 37,-126 64,-108 91,-126 64,-144\"/>\n",
"<text text-anchor=\"middle\" x=\"64\" y=\"-122.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.2131,-126C4.2712,-126 16.7131,-126 29.7242,-126\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"36.9552,-126 29.9552,-129.1501 33.4552,-126 29.9552,-126.0001 29.9552,-126.0001 29.9552,-126.0001 33.4552,-126 29.9551,-122.8501 36.9552,-126 36.9552,-126\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"145\" cy=\"-126\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"145\" y=\"-122.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M82.3802,-120.2392C93.6671,-119.1141 108.2605,-118.9488 120.5195,-119.7431\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"127.8003,-120.3617 120.5587,-122.9077 124.2705,-120.5635 120.7831,-120.2672 120.8254,-119.769 120.8678,-119.2708 124.3552,-119.5671 121.0921,-116.6303 127.8003,-120.3617 127.8003,-120.3617\"/>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" cx=\"145\" cy=\"-72\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"145\" y=\"-68.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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=\"#000000\" d=\"M77.7405,-116.8396C90.3786,-108.4142 109.3093,-95.7938 123.8702,-86.0865\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"129.8121,-82.1253 125.735,-88.6292 126.8999,-84.0668 123.9877,-86.0082 123.9877,-86.0082 123.9877,-86.0082 126.8999,-84.0668 122.2404,-83.3873 129.8121,-82.1253 129.8121,-82.1253\"/>\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=\"#000000\" d=\"M127.8003,-131.6383C116.6491,-132.8423 101.9263,-133.0683 89.4339,-132.3165\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"82.3802,-131.7608 89.606,-129.1704 85.8693,-132.0357 89.3585,-132.3106 89.3585,-132.3106 89.3585,-132.3106 85.8693,-132.0357 89.1111,-135.4509 82.3802,-131.7608 82.3802,-131.7608\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"226,-144 199,-126 226,-108 253,-126 226,-144\"/>\n",
"<text text-anchor=\"middle\" x=\"226\" y=\"-122.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>1&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M162.178,-120.364C173.2806,-119.1636 187.9303,-118.9333 200.3937,-119.6732\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"207.436,-120.221 200.2128,-122.8186 203.9466,-119.9495 200.4571,-119.6781 200.4571,-119.6781 200.4571,-119.6781 203.9466,-119.9495 200.7014,-116.5375 207.436,-120.221 207.436,-120.221\"/>\n",
"</g>\n",
"<!-- 3&#45;&gt;2 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>3&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M160.2355,-82.157C173.2706,-90.847 192.1193,-103.4129 206.2992,-112.8661\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"212.4481,-116.9654 204.8764,-115.7034 209.5359,-115.0239 206.6238,-113.0825 206.6238,-113.0825 206.6238,-113.0825 209.5359,-115.0239 208.3711,-110.4615 212.4481,-116.9654 212.4481,-116.9654\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>4</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" cx=\"226\" cy=\"-72\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"226\" y=\"-68.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">4</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;4 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>3&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M163.3802,-72C174.4352,-72 188.6622,-72 200.7609,-72\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"207.9716,-72 200.9716,-75.1501 204.4716,-72 200.9716,-72.0001 200.9716,-72.0001 200.9716,-72.0001 204.4716,-72 200.9716,-68.8501 207.9716,-72 207.9716,-72\"/>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>6</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"226,-36 199,-18 226,0 253,-18 226,-36\"/>\n",
"<text text-anchor=\"middle\" x=\"226\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">6</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;6 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>3&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M160.2355,-61.843C173.2706,-53.153 192.1193,-40.5871 206.2992,-31.1339\"/>\n",
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"212.4481,-27.0346 208.3711,-33.5385 209.8133,-29.3921 206.9011,-31.3336 206.6238,-30.9175 206.3464,-30.5015 209.2586,-28.56 204.8764,-28.2966 212.4481,-27.0346 212.4481,-27.0346\"/>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>2&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M207.436,-131.779C196.1581,-132.8893 181.6301,-133.0474 169.4264,-132.2534\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"162.178,-131.636 169.4201,-129.0915 165.7078,-131.4349 169.1952,-131.732 169.1528,-132.2302 169.1103,-132.7284 165.6229,-132.4313 168.8854,-135.3688 162.178,-131.636 162.178,-131.636\"/>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>5</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"460,-90 433,-72 460,-54 487,-72 460,-90\"/>\n",
"<text text-anchor=\"middle\" x=\"460\" y=\"-68.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">5</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;5 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>2&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M246.3566,-121.3023C288.5563,-111.5639 385.5805,-89.1737 432.9661,-78.2386\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"439.8571,-76.6484 433.7447,-81.2918 436.4467,-77.4354 433.0363,-78.2225 433.0363,-78.2225 433.0363,-78.2225 436.4467,-77.4354 432.328,-75.1531 439.8571,-76.6484 439.8571,-76.6484\"/>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>7</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" cx=\"307\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"307\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">7</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;7 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>6&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M244.3802,-12.2392C255.6671,-11.1141 270.2605,-10.9488 282.5195,-11.7431\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"289.8003,-12.3617 282.5587,-14.9077 286.3129,-12.0653 282.8254,-11.769 282.8254,-11.769 282.8254,-11.769 286.3129,-12.0653 283.0921,-8.6303 289.8003,-12.3617 289.8003,-12.3617\"/>\n",
"</g>\n",
"<!-- 7&#45;&gt;6 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>7&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M289.8003,-23.6383C278.6491,-24.8423 263.9263,-25.0683 251.4339,-24.3165\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"244.3802,-23.7608 251.606,-21.1704 247.8693,-24.0357 251.3585,-24.3106 251.3585,-24.3106 251.3585,-24.3106 247.8693,-24.0357 251.1111,-27.4509 244.3802,-23.7608 244.3802,-23.7608\"/>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" cx=\"379\" cy=\"-49\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"379\" y=\"-45.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">8</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;8 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>7&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M323.6992,-25.1899C333.2409,-29.2982 345.3509,-34.5122 355.8046,-39.0131\"/>\n",
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"362.3913,-41.849 354.7162,-41.974 358.9789,-40.9242 355.7642,-39.54 355.9619,-39.0808 356.1597,-38.6215 359.3744,-40.0057 357.2077,-36.1876 362.3913,-41.849 362.3913,-41.849\"/>\n",
"</g>\n",
"<!-- 8&#45;&gt;5 -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>8&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M396.5758,-53.9907C407.5442,-57.1052 421.8575,-61.1694 434.1105,-64.6486\"/>\n",
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"441.0459,-66.618 433.4516,-67.736 437.5424,-66.1429 434.1755,-65.1868 434.3121,-64.7058 434.4486,-64.2248 437.8155,-65.1809 435.1725,-61.6756 441.0459,-66.618 441.0459,-66.618\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.jupyter.SVG object>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"spot.highlight_strategy(game)\n",
"game.show('.g')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Solving a game - The new interface\n",
"\n",
"A strategy/control circuit can now be derived more conveniently from a LTL/PSL specification.\n",
"The process is decomposed in to three steps:\n",
"- Creating the game\n",
"- Solving the game\n",
"- Obtaining the strategy\n",
"\n",
"Each of these steps is parametrized by the same options structure called game_info."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"game has 29 states, and 55 edges.\n",
"output propositions are ('o0',)\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.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"538pt\" height=\"360pt\"\n",
" viewBox=\"0.00 0.00 538.00 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.3609 0.3609) rotate(0) translate(4 993.6189)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-993.6189 1486.8756,-993.6189 1486.8756,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"627.4378\" y=\"-975.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n",
"<text text-anchor=\"start\" x=\"649.4378\" y=\"-975.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"665.4378\" y=\"-975.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) | (Fin(</text>\n",
"<text text-anchor=\"start\" x=\"708.4378\" y=\"-975.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"724.4378\" y=\"-975.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"771.4378\" y=\"-975.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"787.4378\" y=\"-975.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) | Fin(</text>\n",
"<text text-anchor=\"start\" x=\"827.4378\" y=\"-975.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"843.4378\" y=\"-975.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)))</text>\n",
"<text text-anchor=\"start\" x=\"683.9378\" y=\"-961.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[parity max odd 4]</text>\n",
"<!-- I -->\n",
"<!-- 9 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>9</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-799.6189\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-795.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">9</text>\n",
"</g>\n",
"<!-- I&#45;&gt;9 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-799.6189C4.178,-799.6189 17.9448,-799.6189 30.9241,-799.6189\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-799.6189 30.9808,-802.769 34.4807,-799.619 30.9807,-799.619 30.9807,-799.619 30.9807,-799.619 34.4807,-799.619 30.9807,-796.469 37.9807,-799.6189 37.9807,-799.6189\"/>\n",
"</g>\n",
"<!-- 25 -->\n",
"<g id=\"node26\" class=\"node\">\n",
"<title>25</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"190.3322,-727.6189 160.1669,-709.6189 190.3322,-691.6189 220.4975,-709.6189 190.3322,-727.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"190.3322\" y=\"-705.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">25</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;25 -->\n",
"<g id=\"edge28\" class=\"edge\">\n",
"<title>9&#45;&gt;25</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M71.1485,-789.4697C95.2873,-773.2972 142.5223,-741.6506 169.7184,-723.4298\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"175.8506,-719.3213 171.7885,-725.8345 172.9429,-721.2694 170.0352,-723.2176 170.0352,-723.2176 170.0352,-723.2176 172.9429,-721.2694 168.2818,-720.6006 175.8506,-719.3213 175.8506,-719.3213\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-793.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"109\" y=\"-778.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 26 -->\n",
"<g id=\"node27\" class=\"node\">\n",
"<title>26</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"268.9966,-882.6189 238.8313,-864.6189 268.9966,-846.6189 299.1619,-864.6189 268.9966,-882.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"268.9966\" y=\"-860.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">26</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;26 -->\n",
"<g id=\"edge29\" class=\"edge\">\n",
"<title>9&#45;&gt;26</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M73.4304,-804.9381C110.5884,-816.2776 197.8088,-842.8946 242.1289,-856.4197\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"248.8594,-858.4737 241.2448,-859.4433 245.5119,-857.4521 242.1643,-856.4304 242.1643,-856.4304 242.1643,-856.4304 245.5119,-857.4521 243.0837,-853.4176 248.8594,-858.4737 248.8594,-858.4737\"/>\n",
"<text text-anchor=\"start\" x=\"94\" y=\"-843.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"109\" y=\"-828.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 27 -->\n",
"<g id=\"node28\" class=\"node\">\n",
"<title>27</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"401.6609,-542.6189 371.4956,-524.6189 401.6609,-506.6189 431.8262,-524.6189 401.6609,-542.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"401.6609\" y=\"-520.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">27</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;27 -->\n",
"<g id=\"edge30\" class=\"edge\">\n",
"<title>9&#45;&gt;27</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M63.8562,-783.416C78.8625,-753.9169 114.2247,-690.9591 160,-652.6189 229.4122,-594.4812 329.5194,-551.9284 376.067,-534.0047\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"382.8007,-531.4403 377.3801,-536.8754 379.5299,-532.686 376.259,-533.9316 376.259,-533.9316 376.259,-533.9316 379.5299,-532.686 375.1379,-530.9879 382.8007,-531.4403 382.8007,-531.4403\"/>\n",
"<text text-anchor=\"start\" x=\"167.3322\" y=\"-671.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"182.3322\" y=\"-656.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 28 -->\n",
"<g id=\"node29\" class=\"node\">\n",
"<title>28</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"558.9897,-949.6189 528.8244,-931.6189 558.9897,-913.6189 589.155,-931.6189 558.9897,-949.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"558.9897\" y=\"-927.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">28</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;28 -->\n",
"<g id=\"edge31\" class=\"edge\">\n",
"<title>9&#45;&gt;28</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M63.3412,-816.1013C69.6055,-828.8227 79.5662,-846.2773 92,-858.6189 128.1725,-894.5233 139.3658,-917.6189 190.3322,-917.6189 190.3322,-917.6189 190.3322,-917.6189 401.6609,-917.6189 445.3261,-917.6189 495.5408,-923.0354 527.2634,-927.1303\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"534.5235,-928.0861 527.1721,-930.2953 531.0534,-927.6292 527.5834,-927.1723 527.5834,-927.1723 527.5834,-927.1723 531.0534,-927.6292 527.9946,-924.0492 534.5235,-928.0861 534.5235,-928.0861\"/>\n",
"<text text-anchor=\"start\" x=\"247.4966\" y=\"-936.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"260.9966\" y=\"-921.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"1104.6507\" cy=\"-757.6189\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1104.6507\" y=\"-753.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>10</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"1238.9828,-598.6189 1208.8175,-580.6189 1238.9828,-562.6189 1269.1481,-580.6189 1238.9828,-598.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"1238.9828\" y=\"-576.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">10</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;10 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1117.42,-744.7743C1134.9668,-726.791 1167.0399,-692.7032 1190.6507,-660.6189 1204.9999,-641.12 1219.0398,-617.1768 1228.2572,-600.5924\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1231.6624,-594.4046 1231.0472,-602.0561 1229.9749,-597.471 1228.2875,-600.5373 1228.2875,-600.5373 1228.2875,-600.5373 1229.9749,-597.471 1225.5278,-599.0186 1231.6624,-594.4046 1231.6624,-594.4046\"/>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-738.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-723.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 11 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>11</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"1238.9828,-775.6189 1208.8175,-757.6189 1238.9828,-739.6189 1269.1481,-757.6189 1238.9828,-775.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"1238.9828\" y=\"-753.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">11</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;11 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1122.7673,-757.6189C1142.8637,-757.6189 1175.8415,-757.6189 1201.5437,-757.6189\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1208.5834,-757.6189 1201.5835,-760.769 1205.0834,-757.619 1201.5834,-757.619 1201.5834,-757.619 1201.5834,-757.619 1205.0834,-757.619 1201.5834,-754.469 1208.5834,-757.6189 1208.5834,-757.6189\"/>\n",
"<text text-anchor=\"start\" x=\"1159.1507\" y=\"-776.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-761.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"1343.7631\" cy=\"-626.6189\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1343.7631\" y=\"-622.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;1 -->\n",
"<g id=\"edge32\" class=\"edge\">\n",
"<title>10&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1263.0028,-576.9337C1275.8289,-576.0314 1291.5558,-576.686 1304.315,-582.6189 1314.7459,-587.4692 1323.6071,-596.5114 1330.2725,-605.1431\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1334.5286,-610.9967 1327.8643,-607.1875 1332.4704,-608.1659 1330.4121,-605.335 1330.4121,-605.335 1330.4121,-605.335 1332.4704,-608.1659 1332.9598,-603.4826 1334.5286,-610.9967 1334.5286,-610.9967\"/>\n",
"<text text-anchor=\"start\" x=\"1287.315\" y=\"-601.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"<text text-anchor=\"start\" x=\"1287.815\" y=\"-586.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;0 -->\n",
"<g id=\"edge33\" class=\"edge\">\n",
"<title>11&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1226.4545,-768.5274C1217.2425,-775.7898 1204.0432,-784.693 1190.6507,-788.6189 1169.3258,-794.8701 1161.4837,-796.3526 1140.6507,-788.6189 1133.6916,-786.0355 1127.1761,-781.4371 1121.6525,-776.5598\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1116.4798,-771.6538 1123.7265,-774.1853 1119.0193,-774.0623 1121.5588,-776.4709 1121.5588,-776.4709 1121.5588,-776.4709 1119.0193,-774.0623 1119.3911,-778.7564 1116.4798,-771.6538 1116.4798,-771.6538\"/>\n",
"<text text-anchor=\"start\" x=\"1157.1507\" y=\"-812.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-797.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 12 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>12</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"1452.5434,-697.6189 1422.3781,-679.6189 1452.5434,-661.6189 1482.7087,-679.6189 1452.5434,-697.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"1452.5434\" y=\"-675.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">12</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;12 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1357.1525,-639.123C1364.419,-645.3757 1373.8184,-652.6492 1383.2112,-657.6189 1395.7373,-664.2464 1410.6041,-669.291 1423.3526,-672.8668\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1430.1889,-674.703 1422.6113,-675.9293 1426.8087,-673.7951 1423.4285,-672.8871 1423.4285,-672.8871 1423.4285,-672.8871 1426.8087,-673.7951 1424.2457,-669.8449 1430.1889,-674.703 1430.1889,-674.703\"/>\n",
"<text text-anchor=\"start\" x=\"1385.7112\" y=\"-684.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"1385.7112\" y=\"-669.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 13 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>13</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"999.3185,-745.6189 969.1532,-727.6189 999.3185,-709.6189 1029.4838,-727.6189 999.3185,-745.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"999.3185\" y=\"-723.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">13</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;13 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>1&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1326.0923,-623.0926C1290.1334,-616.6714 1206.2979,-605.573 1140.6507,-626.6189 1088.854,-643.2244 1039.8901,-686.5642 1015.4772,-710.7259\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1010.3688,-715.859 1013.0739,-708.6753 1012.8377,-713.3781 1015.3066,-710.8973 1015.3066,-710.8973 1015.3066,-710.8973 1012.8377,-713.3781 1017.5394,-713.1193 1010.3688,-715.859 1010.3688,-715.859\"/>\n",
"<text text-anchor=\"start\" x=\"1159.1507\" y=\"-645.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-630.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;1 -->\n",
"<g id=\"edge34\" class=\"edge\">\n",
"<title>12&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1445.2824,-665.7633C1437.2805,-652.1568 1423.0108,-632.2267 1404.2112,-623.6189 1393.1612,-618.5594 1379.7567,-618.6842 1368.381,-620.3415\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1361.2436,-621.6127 1367.5828,-617.284 1364.6894,-620.9989 1368.1352,-620.3852 1368.1352,-620.3852 1368.1352,-620.3852 1364.6894,-620.9989 1368.6876,-623.4864 1361.2436,-621.6127 1361.2436,-621.6127\"/>\n",
"<text text-anchor=\"start\" x=\"1383.2112\" y=\"-642.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"1385.7112\" y=\"-627.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 13&#45;&gt;0 -->\n",
"<g id=\"edge35\" class=\"edge\">\n",
"<title>13&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1019.8776,-733.4744C1037.2138,-738.412 1062.0555,-745.4873 1080.3683,-750.703\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1087.283,-752.6724 1079.6879,-753.7844 1083.9169,-751.7136 1080.5507,-750.7549 1080.5507,-750.7549 1080.5507,-750.7549 1083.9169,-751.7136 1081.4136,-747.7253 1087.283,-752.6724 1087.283,-752.6724\"/>\n",
"<text text-anchor=\"start\" x=\"1047.6507\" y=\"-765.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"1050.1507\" y=\"-750.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"1104.6507\" cy=\"-509.6189\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1104.6507\" y=\"-505.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"</g>\n",
"<!-- 14 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>14</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"1238.9828,-184.6189 1208.8175,-166.6189 1238.9828,-148.6189 1269.1481,-166.6189 1238.9828,-184.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"1238.9828\" y=\"-162.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">14</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;14 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>2&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1110.8379,-492.4646C1116.7845,-477.7274 1126.8972,-456.5553 1140.6507,-441.6189 1158.5224,-422.2101 1176.739,-432.0368 1190.6507,-409.6189 1209.9826,-378.4665 1200.0085,-281.2491 1208.6507,-245.6189 1213.5758,-225.3136 1222.39,-203.1877 1229.2522,-187.5308\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1232.2467,-180.822 1232.2699,-188.4981 1230.8201,-184.0181 1229.3934,-187.2141 1229.3934,-187.2141 1229.3934,-187.2141 1230.8201,-184.0181 1226.517,-185.9302 1232.2467,-180.822 1232.2467,-180.822\"/>\n",
"<text text-anchor=\"start\" x=\"1159.1507\" y=\"-460.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-445.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 16 -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>16</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"1238.9828,-502.6189 1208.8175,-484.6189 1238.9828,-466.6189 1269.1481,-484.6189 1238.9828,-502.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"1238.9828\" y=\"-480.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">16</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;16 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>2&#45;&gt;16</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1122.1669,-514.3592C1139.8219,-518.3274 1167.6707,-522.3552 1190.6507,-515.6189 1201.4275,-512.4598 1212.0792,-506.0778 1220.6288,-499.9212\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1226.4545,-495.5274 1222.7626,-502.2574 1223.6602,-497.6349 1220.8658,-499.7425 1220.8658,-499.7425 1220.8658,-499.7425 1223.6602,-497.6349 1218.969,-497.2275 1226.4545,-495.5274 1226.4545,-495.5274\"/>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-537.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-522.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 15 -->\n",
"<g id=\"node30\" class=\"node\">\n",
"<title>15</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"1343.7631\" cy=\"-166.6189\" rx=\"21.3963\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1343.7631\" y=\"-162.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">15</text>\n",
"</g>\n",
"<!-- 14&#45;&gt;15 -->\n",
"<g id=\"edge36\" class=\"edge\">\n",
"<title>14&#45;&gt;15</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1252.2734,-156.082C1265.3197,-147.0477 1285.887,-136.2713 1304.315,-141.6189 1310.4715,-143.4055 1316.5879,-146.473 1322.1017,-149.8599\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1328.264,-153.925 1320.6863,-152.6998 1325.3424,-151.9977 1322.4208,-150.0704 1322.4208,-150.0704 1322.4208,-150.0704 1325.3424,-151.9977 1324.1554,-147.441 1328.264,-153.925 1328.264,-153.925\"/>\n",
"<text text-anchor=\"start\" x=\"1291.315\" y=\"-160.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"1287.815\" y=\"-145.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 16&#45;&gt;2 -->\n",
"<g id=\"edge38\" class=\"edge\">\n",
"<title>16&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1216.8354,-479.5745C1196.4569,-475.9394 1165.691,-473.0274 1140.6507,-481.6189 1134.2707,-483.8079 1128.1504,-487.6406 1122.8235,-491.7806\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1117.3798,-496.3303 1120.7308,-489.4243 1120.0654,-494.0858 1122.7509,-491.8412 1122.7509,-491.8412 1122.7509,-491.8412 1120.0654,-494.0858 1124.771,-494.2582 1117.3798,-496.3303 1117.3798,-496.3303\"/>\n",
"<text text-anchor=\"start\" x=\"1161.1507\" y=\"-500.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-485.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"864.9863\" cy=\"-825.6189\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"864.9863\" y=\"-821.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;13 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>3&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M882.9304,-822.1403C901.4307,-817.8649 930.4017,-809.1853 950.9863,-793.6189 967.0966,-781.436 980.2236,-762.42 988.71,-747.9229\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"992.2766,-741.6209 991.5702,-749.2645 990.5527,-744.6669 988.8288,-747.713 988.8288,-747.713 988.8288,-747.713 990.5527,-744.6669 986.0873,-746.1614 992.2766,-741.6209 992.2766,-741.6209\"/>\n",
"<text text-anchor=\"start\" x=\"919.4863\" y=\"-835.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"<text text-anchor=\"start\" x=\"917.9863\" y=\"-820.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 17 -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>17</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"759.6541,-795.6189 729.4888,-777.6189 759.6541,-759.6189 789.8194,-777.6189 759.6541,-795.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"759.6541\" y=\"-773.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">17</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;17 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>3&#45;&gt;17</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M846.9569,-822.9632C835.4497,-820.8439 820.4151,-817.2732 807.9863,-811.6189 797.364,-806.7865 786.639,-799.5357 777.9997,-792.9698\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"772.3789,-788.5718 779.833,-790.4046 775.1353,-790.7286 777.8918,-792.8854 777.8918,-792.8854 777.8918,-792.8854 775.1353,-790.7286 775.9507,-795.3663 772.3789,-788.5718 772.3789,-788.5718\"/>\n",
"<text text-anchor=\"start\" x=\"810.4863\" y=\"-836.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"810.4863\" y=\"-821.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 17&#45;&gt;2 -->\n",
"<g id=\"edge39\" class=\"edge\">\n",
"<title>17&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M781.6796,-772.5392C825.8079,-762.0713 923.204,-737.4194 950.9863,-717.6189 969.569,-704.375 1055.5508,-580.9834 1090.1606,-530.7465\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1094.3102,-524.7164 1092.9369,-532.2687 1092.326,-527.5997 1090.3419,-530.483 1090.3419,-530.483 1090.3419,-530.483 1092.326,-527.5997 1087.7469,-528.6973 1094.3102,-524.7164 1094.3102,-524.7164\"/>\n",
"<text text-anchor=\"start\" x=\"917.4863\" y=\"-757.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"<text text-anchor=\"start\" x=\"917.9863\" y=\"-742.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 17&#45;&gt;3 -->\n",
"<g id=\"edge40\" class=\"edge\">\n",
"<title>17&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M781.7383,-772.7484C795.9662,-770.7492 814.4521,-770.3518 828.9863,-777.6189 839.6862,-782.9689 848.031,-793.1787 853.9803,-802.8114\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"857.5446,-809.0013 851.3217,-804.507 855.798,-805.9682 854.0515,-802.9351 854.0515,-802.9351 854.0515,-802.9351 855.798,-805.9682 856.7812,-801.3632 857.5446,-809.0013 857.5446,-809.0013\"/>\n",
"<text text-anchor=\"start\" x=\"807.9863\" y=\"-796.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"810.4863\" y=\"-781.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node14\" class=\"node\">\n",
"<title>4</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"1104.6507\" cy=\"-330.6189\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1104.6507\" y=\"-326.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">4</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;14 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>4&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1105.7736,-312.5218C1108.6272,-273.2423 1117.6321,-182.2042 1140.6507,-163.6189 1160.9155,-147.2571 1191.9299,-151.4529 1213.6962,-157.5203\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1220.4129,-159.5324 1212.8033,-160.5411 1217.0601,-158.528 1213.7073,-157.5236 1213.7073,-157.5236 1213.7073,-157.5236 1217.0601,-158.528 1214.6112,-154.5061 1220.4129,-159.5324 1220.4129,-159.5324\"/>\n",
"<text text-anchor=\"start\" x=\"1159.1507\" y=\"-182.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-167.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 18 -->\n",
"<g id=\"node15\" class=\"node\">\n",
"<title>18</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"1238.9828,-290.6189 1208.8175,-272.6189 1238.9828,-254.6189 1269.1481,-272.6189 1238.9828,-290.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"1238.9828\" y=\"-268.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">18</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;18 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>4&#45;&gt;18</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1110.3889,-313.2499C1115.8543,-299.79 1125.5228,-282.0575 1140.6507,-273.6189 1161.8567,-261.7898 1189.8521,-262.7962 1210.5468,-266.027\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1217.5392,-267.2452 1210.1024,-269.147 1214.0912,-266.6445 1210.6431,-266.0437 1210.6431,-266.0437 1210.6431,-266.0437 1214.0912,-266.6445 1211.1837,-262.9405 1217.5392,-267.2452 1217.5392,-267.2452\"/>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-292.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-277.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 18&#45;&gt;4 -->\n",
"<g id=\"edge41\" class=\"edge\">\n",
"<title>18&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1225.1753,-282.8834C1215.8055,-289.4878 1202.9325,-297.878 1190.6507,-303.6189 1170.8032,-312.8963 1146.9436,-320.1015 1129.3961,-324.7263\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1122.2923,-326.549 1128.2898,-321.7581 1125.6825,-325.6791 1129.0727,-324.8092 1129.0727,-324.8092 1129.0727,-324.8092 1125.6825,-325.6791 1129.8555,-327.8604 1122.2923,-326.549 1122.2923,-326.549\"/>\n",
"<text text-anchor=\"start\" x=\"1161.1507\" y=\"-339.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-324.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node16\" class=\"node\">\n",
"<title>5</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"1104.6507\" cy=\"-166.6189\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1104.6507\" y=\"-162.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">5</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;14 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>5&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1111.2511,-149.6822C1117.0053,-137.4929 1126.6453,-121.9571 1140.6507,-114.6189 1160.3346,-104.3054 1170.2788,-105.7412 1190.6507,-114.6189 1205.853,-121.2438 1218.4261,-135.2688 1226.9344,-147.0853\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1231.0056,-153.0124 1224.4458,-149.0259 1229.0239,-150.1274 1227.0423,-147.2424 1227.0423,-147.2424 1227.0423,-147.2424 1229.0239,-150.1274 1229.6388,-145.4589 1231.0056,-153.0124 1231.0056,-153.0124\"/>\n",
"<text text-anchor=\"start\" x=\"1144.1507\" y=\"-133.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-118.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;16 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>5&#45;&gt;16</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1107.1899,-184.7385C1113.5511,-229.2018 1130.3934,-341.0748 1140.6507,-354.6189 1155.6505,-374.4252 1173.3681,-361.7697 1190.6507,-379.6189 1213.1687,-402.8753 1226.4991,-438.514 1233.2796,-461.696\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1235.1765,-468.463 1230.2539,-462.5731 1234.2318,-465.0929 1233.287,-461.7228 1233.287,-461.7228 1233.287,-461.7228 1234.2318,-465.0929 1236.3201,-460.8726 1235.1765,-468.463 1235.1765,-468.463\"/>\n",
"<text text-anchor=\"start\" x=\"1142.6507\" y=\"-398.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-383.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;18 -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>5&#45;&gt;18</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1117.9867,-178.8163C1124.6306,-184.7063 1132.8859,-191.7511 1140.6507,-197.6189 1161.8931,-213.6719 1169.4444,-214.5181 1190.6507,-230.6189 1201.3554,-238.7465 1212.7296,-248.5653 1221.753,-256.665\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1227.0406,-261.4555 1219.738,-259.09 1224.4468,-259.1056 1221.853,-256.7556 1221.853,-256.7556 1221.853,-256.7556 1224.4468,-259.1056 1223.968,-254.4212 1227.0406,-261.4555 1227.0406,-261.4555\"/>\n",
"<text text-anchor=\"start\" x=\"1142.6507\" y=\"-249.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-234.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 19 -->\n",
"<g id=\"node17\" class=\"node\">\n",
"<title>19</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"1238.9828,-52.6189 1208.8175,-34.6189 1238.9828,-16.6189 1269.1481,-34.6189 1238.9828,-52.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"1238.9828\" y=\"-30.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">19</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;19 -->\n",
"<g id=\"edge15\" class=\"edge\">\n",
"<title>5&#45;&gt;19</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1106.0042,-148.638C1109.2496,-111.006 1118.8782,-25.9886 1140.6507,-8.6189 1163.5163,9.6228 1197.9617,-6.6286 1219.4276,-20.3722\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1225.3814,-24.3334 1217.8085,-23.0785 1222.4674,-22.3946 1219.5534,-20.4559 1219.5534,-20.4559 1219.5534,-20.4559 1222.4674,-22.3946 1221.2982,-17.8333 1225.3814,-24.3334 1225.3814,-24.3334\"/>\n",
"<text text-anchor=\"start\" x=\"1140.6507\" y=\"-27.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-12.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 19&#45;&gt;5 -->\n",
"<g id=\"edge42\" class=\"edge\">\n",
"<title>19&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1214.9273,-38.5108C1192.9266,-43.2447 1160.8254,-53.277 1140.6507,-73.6189 1122.3287,-92.0926 1113.1121,-120.9257 1108.6244,-141.5893\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1107.2271,-148.5272 1105.5212,-141.043 1107.9181,-145.0961 1108.6092,-141.665 1108.6092,-141.665 1108.6092,-141.665 1107.9181,-145.0961 1111.6972,-142.2869 1107.2271,-148.5272 1107.2271,-148.5272\"/>\n",
"<text text-anchor=\"start\" x=\"1161.1507\" y=\"-92.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-77.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node18\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"625.3219\" cy=\"-501.6189\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"625.3219\" y=\"-497.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">6</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;10 -->\n",
"<g id=\"edge16\" class=\"edge\">\n",
"<title>6&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M638.4633,-513.92C644.9308,-519.4058 653.0938,-525.5375 661.3219,-529.6189 721.746,-559.5914 741.2337,-558.9486 807.9863,-568.6189 883.4503,-579.5512 1111.7714,-580.6832 1201.8579,-580.6897\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1208.8669,-580.6879 1201.8678,-583.8398 1205.3669,-580.6888 1201.8669,-580.6898 1201.8669,-580.6898 1201.8669,-580.6898 1205.3669,-580.6888 1201.8661,-577.5398 1208.8669,-580.6879 1208.8669,-580.6879\"/>\n",
"<text text-anchor=\"start\" x=\"902.9863\" y=\"-595.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"917.9863\" y=\"-580.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;11 -->\n",
"<g id=\"edge17\" class=\"edge\">\n",
"<title>6&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M633.1604,-518.3766C639.3183,-529.8329 648.9224,-544.5328 661.3219,-553.6189 686.8356,-572.315 698.7953,-566.3353 729.3219,-574.6189 780.2035,-588.426 1147.4523,-655.3951 1190.6507,-685.6189 1208.7842,-698.306 1222.0289,-720.1632 1230.0202,-736.4758\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1233.1224,-743.0846 1227.2964,-738.0864 1231.6351,-739.9163 1230.1479,-736.7479 1230.1479,-736.7479 1230.1479,-736.7479 1231.6351,-739.9163 1232.9994,-735.4094 1233.1224,-743.0846 1233.1224,-743.0846\"/>\n",
"<text text-anchor=\"start\" x=\"904.4863\" y=\"-639.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"917.9863\" y=\"-624.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 20 -->\n",
"<g id=\"node19\" class=\"node\">\n",
"<title>20</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"759.6541,-499.6189 729.4888,-481.6189 759.6541,-463.6189 789.8194,-481.6189 759.6541,-499.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"759.6541\" y=\"-477.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">20</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;20 -->\n",
"<g id=\"edge18\" class=\"edge\">\n",
"<title>6&#45;&gt;20</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M643.1602,-498.9631C664.8185,-495.7385 701.7277,-490.2433 728.2003,-486.3019\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"735.3689,-485.2346 728.9091,-489.3812 731.907,-485.7501 728.4452,-486.2655 728.4452,-486.2655 728.4452,-486.2655 731.907,-485.7501 727.9813,-483.1499 735.3689,-485.2346 735.3689,-485.2346\"/>\n",
"<text text-anchor=\"start\" x=\"661.3219\" y=\"-514.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"678.3219\" y=\"-499.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 21 -->\n",
"<g id=\"node20\" class=\"node\">\n",
"<title>21</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"759.6541,-413.6189 729.4888,-395.6189 759.6541,-377.6189 789.8194,-395.6189 759.6541,-413.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"759.6541\" y=\"-391.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">21</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;21 -->\n",
"<g id=\"edge19\" class=\"edge\">\n",
"<title>6&#45;&gt;21</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M634.9642,-485.914C641.5359,-476.0911 650.9114,-463.6365 661.3219,-454.6189 680.5733,-437.9433 689.4817,-439.7223 711.3219,-426.6189 720.4498,-421.1425 730.3719,-414.8412 738.8377,-409.3559\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"744.9903,-405.3475 740.8447,-411.8079 742.0578,-407.258 739.1252,-409.1686 739.1252,-409.1686 739.1252,-409.1686 742.0578,-407.258 737.4057,-406.5293 744.9903,-405.3475 744.9903,-405.3475\"/>\n",
"<text text-anchor=\"start\" x=\"663.3219\" y=\"-473.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"678.3219\" y=\"-458.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 20&#45;&gt;4 -->\n",
"<g id=\"edge43\" class=\"edge\">\n",
"<title>20&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M772.939,-471.1939C797.1383,-452.6452 850.5694,-413.6971 900.9863,-390.6189 933.4369,-375.7648 1033.3231,-349.053 1080.0604,-336.9209\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1087.0866,-335.103 1081.0988,-339.906 1083.6982,-335.9797 1080.3098,-336.8564 1080.3098,-336.8564 1080.3098,-336.8564 1083.6982,-335.9797 1079.5207,-333.8068 1087.0866,-335.103 1087.0866,-335.103\"/>\n",
"<text text-anchor=\"start\" x=\"915.4863\" y=\"-409.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"917.9863\" y=\"-394.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node21\" class=\"node\">\n",
"<title>7</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"864.9863\" cy=\"-488.6189\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"864.9863\" y=\"-484.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">7</text>\n",
"</g>\n",
"<!-- 20&#45;&gt;7 -->\n",
"<g id=\"edge44\" class=\"edge\">\n",
"<title>20&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M789.0548,-481.0656C801.4085,-481.0864 815.9176,-481.4424 828.9863,-482.6189 832.6011,-482.9443 836.4007,-483.4245 840.1213,-483.974\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"847.1096,-485.0933 839.6994,-487.0965 843.6536,-484.5397 840.1977,-483.9861 840.1977,-483.9861 840.1977,-483.9861 843.6536,-484.5397 840.6959,-480.8758 847.1096,-485.0933 847.1096,-485.0933\"/>\n",
"<text text-anchor=\"start\" x=\"809.9863\" y=\"-501.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"<text text-anchor=\"start\" x=\"810.4863\" y=\"-486.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 21&#45;&gt;4 -->\n",
"<g id=\"edge45\" class=\"edge\">\n",
"<title>21&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M774.555,-386.0733C799.5064,-370.7507 851.8497,-341.3956 900.9863,-331.6189 964.2213,-319.037 1040.702,-323.8715 1079.4772,-327.6949\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1086.7144,-328.4407 1079.4283,-330.8565 1083.2328,-328.0819 1079.7512,-327.7231 1079.7512,-327.7231 1079.7512,-327.7231 1083.2328,-328.0819 1080.0742,-324.5897 1086.7144,-328.4407 1086.7144,-328.4407\"/>\n",
"<text text-anchor=\"start\" x=\"915.4863\" y=\"-350.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"917.9863\" y=\"-335.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 21&#45;&gt;6 -->\n",
"<g id=\"edge46\" class=\"edge\">\n",
"<title>21&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M740.6448,-388.7245C719.2402,-382.2773 684.4378,-375.9095 661.3219,-392.6189 647.5492,-402.5745 636.1497,-447.6418 630.0739,-476.6195\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"628.6457,-483.6089 626.961,-476.1199 629.3465,-480.1797 630.0472,-476.7506 630.0472,-476.7506 630.0472,-476.7506 629.3465,-480.1797 633.1334,-477.3813 628.6457,-483.6089 628.6457,-483.6089\"/>\n",
"<text text-anchor=\"start\" x=\"677.8219\" y=\"-411.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"<text text-anchor=\"start\" x=\"678.3219\" y=\"-396.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;12 -->\n",
"<g id=\"edge20\" class=\"edge\">\n",
"<title>7&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M865.5143,-507.0206C867.699,-577.1077 877.0657,-824.6712 900.9863,-849.6189 931.5379,-881.4824 955.1745,-863.6189 999.3185,-863.6189 999.3185,-863.6189 999.3185,-863.6189 1343.7631,-863.6189 1417.1818,-863.6189 1442.0909,-753.7227 1449.6193,-703.7919\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1450.6455,-696.5994 1452.7751,-703.9742 1450.1511,-700.0643 1449.6567,-703.5292 1449.6567,-703.5292 1449.6567,-703.5292 1450.1511,-700.0643 1446.5383,-703.0842 1450.6455,-696.5994 1450.6455,-696.5994\"/>\n",
"<text text-anchor=\"start\" x=\"1142.6507\" y=\"-882.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-867.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;13 -->\n",
"<g id=\"edge21\" class=\"edge\">\n",
"<title>7&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M866.701,-506.5777C870.7503,-545.6587 882.0172,-636.8224 900.9863,-660.6189 916.2332,-679.7461 930.5908,-670.1153 950.9863,-683.6189 962.5825,-691.2966 974.1534,-701.7081 983.0652,-710.4758\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"988.2469,-715.6834 981.0765,-712.9432 985.7782,-713.2024 983.3095,-710.7213 983.3095,-710.7213 983.3095,-710.7213 985.7782,-713.2024 985.5424,-708.4995 988.2469,-715.6834 988.2469,-715.6834\"/>\n",
"<text text-anchor=\"start\" x=\"904.4863\" y=\"-702.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"917.9863\" y=\"-687.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 22 -->\n",
"<g id=\"node22\" class=\"node\">\n",
"<title>22</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"999.3185,-454.6189 969.1532,-436.6189 999.3185,-418.6189 1029.4838,-436.6189 999.3185,-454.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"999.3185\" y=\"-432.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">22</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;22 -->\n",
"<g id=\"edge22\" class=\"edge\">\n",
"<title>7&#45;&gt;22</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M882.9964,-486.005C900.7898,-483.0149 928.5251,-477.2454 950.9863,-467.6189 961.1611,-463.2582 971.603,-456.8476 980.1658,-450.986\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"986.038,-446.8521 982.1274,-453.4574 983.176,-448.8669 980.3141,-450.8816 980.3141,-450.8816 980.3141,-450.8816 983.176,-448.8669 978.5008,-448.3059 986.038,-446.8521 986.038,-446.8521\"/>\n",
"<text text-anchor=\"start\" x=\"900.9863\" y=\"-500.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"917.9863\" y=\"-485.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 23 -->\n",
"<g id=\"node23\" class=\"node\">\n",
"<title>23</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"480.3253,-623.6189 450.16,-605.6189 480.3253,-587.6189 510.4906,-605.6189 480.3253,-623.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"480.3253\" y=\"-601.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">23</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;23 -->\n",
"<g id=\"edge23\" class=\"edge\">\n",
"<title>7&#45;&gt;23</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M861.8377,-506.4913C857.6518,-524.5286 848.3895,-551.6539 828.9863,-565.6189 730.8955,-636.2172 575.4908,-621.4269 510.4782,-611.1866\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"503.3727,-610.028 510.7885,-608.0457 506.8271,-610.5913 510.2815,-611.1546 510.2815,-611.1546 510.2815,-611.1546 506.8271,-610.5913 509.7745,-614.2635 503.3727,-610.028 503.3727,-610.028\"/>\n",
"<text text-anchor=\"start\" x=\"663.3219\" y=\"-636.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"678.3219\" y=\"-621.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 22&#45;&gt;4 -->\n",
"<g id=\"edge47\" class=\"edge\">\n",
"<title>22&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1017.9782,-429.574C1033.1185,-423.111 1054.2415,-412.3096 1068.6507,-397.6189 1080.7288,-385.3049 1089.854,-368.1133 1095.8951,-354.2279\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1098.6125,-347.7129 1098.825,-355.3861 1097.2651,-350.9432 1095.9178,-354.1735 1095.9178,-354.1735 1095.9178,-354.1735 1097.2651,-350.9432 1093.0105,-352.9609 1098.6125,-347.7129 1098.6125,-347.7129\"/>\n",
"<text text-anchor=\"start\" x=\"1049.6507\" y=\"-432.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"<text text-anchor=\"start\" x=\"1050.1507\" y=\"-417.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 22&#45;&gt;7 -->\n",
"<g id=\"edge48\" class=\"edge\">\n",
"<title>22&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M979.1261,-430.3801C958.2379,-425.157 925.3258,-420.4604 900.9863,-433.6189 888.65,-440.2882 879.8621,-453.2274 874.0584,-464.8806\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"870.9818,-471.5361 871.0597,-463.8603 872.4504,-468.3591 873.919,-465.1821 873.919,-465.1821 873.919,-465.1821 872.4504,-468.3591 876.7783,-466.5038 870.9818,-471.5361 870.9818,-471.5361\"/>\n",
"<text text-anchor=\"start\" x=\"915.4863\" y=\"-452.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"917.9863\" y=\"-437.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 23&#45;&gt;4 -->\n",
"<g id=\"edge49\" class=\"edge\">\n",
"<title>23&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M502.0618,-600.2668C554.4356,-587.5118 691.8738,-554.8782 807.9863,-534.6189 871.1462,-523.5988 890.2914,-536.2768 950.9863,-515.6189 1008.1653,-496.1577 1031.0183,-494.8628 1068.6507,-447.6189 1089.982,-420.8394 1098.7223,-381.4316 1102.2711,-355.8939\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1103.1774,-348.7622 1105.4198,-356.1035 1102.7362,-352.2342 1102.2949,-355.7063 1102.2949,-355.7063 1102.2949,-355.7063 1102.7362,-352.2342 1099.17,-355.3092 1103.1774,-348.7622 1103.1774,-348.7622\"/>\n",
"<text text-anchor=\"start\" x=\"809.9863\" y=\"-553.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"<text text-anchor=\"start\" x=\"810.4863\" y=\"-538.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 23&#45;&gt;6 -->\n",
"<g id=\"edge50\" class=\"edge\">\n",
"<title>23&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M485.6664,-590.5966C492.7428,-572.873 506.9255,-543.7793 528.6575,-527.6189 549.6148,-512.0347 579.2783,-505.7876 600.2043,-503.2856\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"607.213,-502.5477 600.5814,-506.4134 603.7323,-502.9142 600.2515,-503.2807 600.2515,-503.2807 600.2515,-503.2807 603.7323,-502.9142 599.9216,-500.148 607.213,-502.5477 607.213,-502.5477\"/>\n",
"<text text-anchor=\"start\" x=\"548.4897\" y=\"-546.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"550.9897\" y=\"-531.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node24\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"335.3288\" cy=\"-688.6189\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"335.3288\" y=\"-684.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">8</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;13 -->\n",
"<g id=\"edge24\" class=\"edge\">\n",
"<title>8&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M351.9534,-695.842C357.9724,-698.2541 364.8769,-700.7903 371.3288,-702.6189 418.714,-716.0491 431.0736,-722.6189 480.3253,-722.6189 480.3253,-722.6189 480.3253,-722.6189 818.4863,-722.6189 868.9182,-722.6189 927.2314,-724.5862 963.6961,-726.0527\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"971.1349,-726.3572 964.0119,-729.2182 967.6379,-726.214 964.1408,-726.0709 964.1408,-726.0709 964.1408,-726.0709 967.6379,-726.214 964.2697,-722.9235 971.1349,-726.3572 971.1349,-726.3572\"/>\n",
"<text text-anchor=\"start\" x=\"664.8219\" y=\"-741.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"678.3219\" y=\"-726.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;17 -->\n",
"<g id=\"edge25\" class=\"edge\">\n",
"<title>8&#45;&gt;17</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M343.2553,-705.2894C349.3426,-716.1293 358.8271,-729.5232 371.3288,-736.6189 488.796,-803.2915 658.6356,-791.0186 728.1739,-782.2988\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"735.3684,-781.3637 728.8328,-785.3897 731.8976,-781.8149 728.4268,-782.266 728.4268,-782.266 728.4268,-782.266 731.8976,-781.8149 728.0208,-779.1423 735.3684,-781.3637 735.3684,-781.3637\"/>\n",
"<text text-anchor=\"start\" x=\"535.9897\" y=\"-807.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"550.9897\" y=\"-792.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;23 -->\n",
"<g id=\"edge26\" class=\"edge\">\n",
"<title>8&#45;&gt;23</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M351.5552,-680.067C370.8814,-669.8024 404.0615,-651.9289 431.9931,-635.6189 441.1,-630.3012 451.0187,-624.2001 459.4875,-618.8944\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"465.6436,-615.0183 461.3984,-621.4137 462.6818,-616.8832 459.72,-618.7481 459.72,-618.7481 459.72,-618.7481 462.6818,-616.8832 458.0416,-616.0825 465.6436,-615.0183 465.6436,-615.0183\"/>\n",
"<text text-anchor=\"start\" x=\"378.6609\" y=\"-687.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"393.6609\" y=\"-672.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 24 -->\n",
"<g id=\"node25\" class=\"node\">\n",
"<title>24</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"480.3253,-457.6189 450.16,-439.6189 480.3253,-421.6189 510.4906,-439.6189 480.3253,-457.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"480.3253\" y=\"-435.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">24</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;24 -->\n",
"<g id=\"edge27\" class=\"edge\">\n",
"<title>8&#45;&gt;24</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M335.8092,-670.3494C337.4338,-622.8748 344.2526,-497.2478 371.3288,-467.6189 389.6033,-447.6214 420.057,-441.0722 444.1358,-439.2698\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"451.3833,-438.8532 444.5756,-442.3998 447.8891,-439.0541 444.3948,-439.255 444.3948,-439.255 444.3948,-439.255 447.8891,-439.0541 444.214,-436.1102 451.3833,-438.8532 451.3833,-438.8532\"/>\n",
"<text text-anchor=\"start\" x=\"376.6609\" y=\"-486.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"393.6609\" y=\"-471.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 24&#45;&gt;5 -->\n",
"<g id=\"edge51\" class=\"edge\">\n",
"<title>24&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M483.2281,-423.2588C493.1094,-373.3822 530.2619,-226.6189 625.3219,-226.6189 625.3219,-226.6189 625.3219,-226.6189 999.3185,-226.6189 1033.7526,-226.6189 1067.1978,-202.1097 1086.8523,-184.4204\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1092.0195,-179.638 1089.0218,-186.7046 1089.4508,-182.0154 1086.8821,-184.3928 1086.8821,-184.3928 1086.8821,-184.3928 1089.4508,-182.0154 1084.7425,-182.081 1092.0195,-179.638 1092.0195,-179.638\"/>\n",
"<text text-anchor=\"start\" x=\"809.9863\" y=\"-245.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"<text text-anchor=\"start\" x=\"810.4863\" y=\"-230.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 24&#45;&gt;8 -->\n",
"<g id=\"edge52\" class=\"edge\">\n",
"<title>24&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M467.3993,-450.2547C461.251,-455.9762 454.316,-463.514 449.9931,-471.6189 432.842,-503.7754 451.0854,-520.5757 431.9931,-551.6189 413.6892,-581.3803 391.445,-573.0512 371.3288,-601.6189 357.7307,-620.93 362.5081,-629.8573 353.3288,-651.6189 351.3055,-656.4154 348.9756,-661.4794 346.6774,-666.27\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"343.5952,-672.5822 343.8361,-664.9098 345.1309,-669.4371 346.6667,-666.292 346.6667,-666.292 346.6667,-666.292 345.1309,-669.4371 349.4973,-667.6742 343.5952,-672.5822 343.5952,-672.5822\"/>\n",
"<text text-anchor=\"start\" x=\"391.1609\" y=\"-620.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"393.6609\" y=\"-605.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 25&#45;&gt;8 -->\n",
"<g id=\"edge53\" class=\"edge\">\n",
"<title>25&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M214.9289,-706.0565C241.5162,-702.2059 283.661,-696.102 310.3834,-692.2318\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"317.4858,-691.2031 311.0096,-695.324 314.0219,-691.7048 310.558,-692.2066 310.558,-692.2066 310.558,-692.2066 314.0219,-691.7048 310.1065,-689.0891 317.4858,-691.2031 317.4858,-691.2031\"/>\n",
"<text text-anchor=\"start\" x=\"264.4966\" y=\"-720.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"260.9966\" y=\"-705.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 26&#45;&gt;3 -->\n",
"<g id=\"edge54\" class=\"edge\">\n",
"<title>26&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M292.8827,-868.6683C319.3818,-872.803 363.4471,-878.6189 401.6609,-878.6189 401.6609,-878.6189 401.6609,-878.6189 759.6541,-878.6189 792.6329,-878.6189 825.8172,-857.6308 845.8887,-842.0696\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"851.4365,-837.6454 847.9277,-844.4727 848.7001,-839.8277 845.9637,-842.0099 845.9637,-842.0099 845.9637,-842.0099 848.7001,-839.8277 843.9997,-839.5471 851.4365,-837.6454 851.4365,-837.6454\"/>\n",
"<text text-anchor=\"start\" x=\"554.4897\" y=\"-897.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"550.9897\" y=\"-882.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 27&#45;&gt;6 -->\n",
"<g id=\"edge55\" class=\"edge\">\n",
"<title>27&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M425.9474,-520.8453C451.4631,-517.0036 492.7924,-511.128 528.6575,-507.6189 552.8446,-505.2524 580.5331,-503.6455 600.0593,-502.6949\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"607.1189,-502.3625 600.2749,-505.8383 603.6228,-502.5271 600.1267,-502.6918 600.1267,-502.6918 600.1267,-502.6918 603.6228,-502.5271 599.9785,-499.5453 607.1189,-502.3625 607.1189,-502.3625\"/>\n",
"<text text-anchor=\"start\" x=\"475.8253\" y=\"-535.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"472.3253\" y=\"-520.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 28&#45;&gt;0 -->\n",
"<g id=\"edge56\" class=\"edge\">\n",
"<title>28&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M585.2972,-928.9994C611.024,-926.6663 651.3251,-923.6189 686.3219,-923.6189 686.3219,-923.6189 686.3219,-923.6189 999.3185,-923.6189 1065.2492,-923.6189 1091.6544,-829.1063 1100.6446,-782.711\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1101.9413,-775.6998 1103.7656,-783.156 1101.3048,-779.1415 1100.6682,-782.5831 1100.6682,-782.5831 1100.6682,-782.5831 1101.3048,-779.1415 1097.5707,-782.0102 1101.9413,-775.6998 1101.9413,-775.6998\"/>\n",
"<text text-anchor=\"start\" x=\"813.9863\" y=\"-942.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"810.4863\" y=\"-927.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 15&#45;&gt;14 -->\n",
"<g id=\"edge37\" class=\"edge\">\n",
"<title>15&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1322.5182,-169.8104C1316.6362,-170.5579 1310.2402,-171.2449 1304.315,-171.6189 1293.3381,-172.3118 1281.3335,-171.7681 1270.6432,-170.823\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1263.481,-170.1148 1270.757,-167.669 1266.964,-170.4593 1270.447,-170.8037 1270.447,-170.8037 1270.447,-170.8037 1266.964,-170.4593 1270.1371,-173.9384 1263.481,-170.1148 1263.481,-170.1148\"/>\n",
"<text text-anchor=\"start\" x=\"1291.315\" y=\"-191.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"1287.815\" y=\"-176.4189\" 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 0x7f7c803ebb10> >"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#Create the game\n",
"gi = spot.game_info()\n",
"gi.s = spot.game_info.solver_LAR #Use lar solver\n",
"\n",
"#Todo arena changes when executed multiple times\n",
"game = spot.create_game(\"G((F(i0) && F(i1))->(G(i1<->(X(o0)))))\", [\"o0\"], gi)\n",
"print(\"game has \", game.num_states(), \" states, and \", game.num_edges(), \" edges.\")\n",
"print(\"output propositions are \", spot.get_synthesis_output_aps(game))\n",
"display(game)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Found a solution: 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.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"650pt\" height=\"360pt\"\n",
" viewBox=\"0.00 0.00 650.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.4858 0.4858) rotate(0) translate(4 737.0711)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-737.0711 1334.8756,-737.0711 1334.8756,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"551.4378\" y=\"-718.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n",
"<text text-anchor=\"start\" x=\"573.4378\" y=\"-718.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"589.4378\" y=\"-718.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) | (Fin(</text>\n",
"<text text-anchor=\"start\" x=\"632.4378\" y=\"-718.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"648.4378\" y=\"-718.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"695.4378\" y=\"-718.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"711.4378\" y=\"-718.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) | Fin(</text>\n",
"<text text-anchor=\"start\" x=\"751.4378\" y=\"-718.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"767.4378\" y=\"-718.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)))</text>\n",
"<text text-anchor=\"start\" x=\"607.9378\" y=\"-704.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[parity max odd 4]</text>\n",
"<!-- I -->\n",
"<!-- 9 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>9</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"56\" cy=\"-607.0711\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-603.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">9</text>\n",
"</g>\n",
"<!-- I&#45;&gt;9 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-607.0711C4.178,-607.0711 17.9448,-607.0711 30.9241,-607.0711\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-607.0711 30.9808,-610.2212 34.4807,-607.0711 30.9807,-607.0712 30.9807,-607.0712 30.9807,-607.0712 34.4807,-607.0711 30.9807,-603.9212 37.9807,-607.0711 37.9807,-607.0711\"/>\n",
"</g>\n",
"<!-- 25 -->\n",
"<g id=\"node26\" class=\"node\">\n",
"<title>25</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"156.3322,-523.0711 126.1669,-505.0711 156.3322,-487.0711 186.4975,-505.0711 156.3322,-523.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"156.3322\" y=\"-501.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">25</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;25 -->\n",
"<g id=\"edge28\" class=\"edge\">\n",
"<title>9&#45;&gt;25</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M68.7071,-594.1527C86.8106,-575.7483 120.0348,-541.9718 139.9614,-521.7139\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"144.9646,-516.6276 142.3015,-523.8269 142.5102,-519.1228 140.0558,-521.618 140.0558,-521.618 140.0558,-521.618 142.5102,-519.1228 137.8102,-519.409 144.9646,-516.6276 144.9646,-516.6276\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-571.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 26 -->\n",
"<g id=\"node27\" class=\"node\">\n",
"<title>26</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"234.9966,-647.0711 204.8313,-629.0711 234.9966,-611.0711 265.1619,-629.0711 234.9966,-647.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"234.9966\" y=\"-625.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">26</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;26 -->\n",
"<g id=\"edge29\" class=\"edge\">\n",
"<title>9&#45;&gt;26</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M74.1482,-609.3016C104.3116,-613.0089 165.1581,-620.4874 202.759,-625.1088\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"209.9533,-625.9931 202.6213,-628.2655 206.4794,-625.5661 203.0056,-625.139 203.0056,-625.139 203.0056,-625.139 206.4794,-625.5661 203.3899,-622.0126 209.9533,-625.9931 209.9533,-625.9931\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-615.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 27 -->\n",
"<g id=\"node28\" class=\"node\">\n",
"<title>27</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"367.6609,-388.0711 337.4956,-370.0711 367.6609,-352.0711 397.8262,-370.0711 367.6609,-388.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"367.6609\" y=\"-366.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">27</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;27 -->\n",
"<g id=\"edge30\" class=\"edge\">\n",
"<title>9&#45;&gt;27</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M60.0456,-589.4701C67.8001,-559.5094 87.5088,-498.4182 126,-463.0711 187.0669,-406.9923 285.5713,-383.4464 335.8764,-374.664\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"342.9385,-373.4733 336.5597,-377.7433 339.4872,-374.0552 336.0359,-374.6372 336.0359,-374.6372 336.0359,-374.6372 339.4872,-374.0552 335.5122,-371.531 342.9385,-373.4733 342.9385,-373.4733\"/>\n",
"<text text-anchor=\"start\" x=\"148.3322\" y=\"-466.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 28 -->\n",
"<g id=\"node29\" class=\"node\">\n",
"<title>28</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"524.9897,-697.0711 494.8244,-679.0711 524.9897,-661.0711 555.155,-679.0711 524.9897,-697.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"524.9897\" y=\"-675.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">28</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;28 -->\n",
"<g id=\"edge31\" class=\"edge\">\n",
"<title>9&#45;&gt;28</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M66.7967,-621.9895C83.4389,-643.0788 117.5262,-679.0711 156.3322,-679.0711 156.3322,-679.0711 156.3322,-679.0711 367.6609,-679.0711 408.4991,-679.0711 455.3001,-679.0711 487.1689,-679.0711\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"494.5349,-679.0711 487.535,-682.2212 491.0349,-679.0711 487.5349,-679.0712 487.5349,-679.0712 487.5349,-679.0712 491.0349,-679.0711 487.5349,-675.9212 494.5349,-679.0711 494.5349,-679.0711\"/>\n",
"<text text-anchor=\"start\" x=\"226.9966\" y=\"-682.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"992.6507\" cy=\"-558.0711\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"992.6507\" y=\"-554.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>10</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"1092.9828,-429.0711 1062.8175,-411.0711 1092.9828,-393.0711 1123.1481,-411.0711 1092.9828,-429.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"1092.9828\" y=\"-407.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">10</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;10 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1002.8232,-543.167C1021.2414,-516.1818 1060.0697,-459.2933 1080.2296,-429.7563\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1084.234,-423.8892 1082.8896,-431.4467 1082.2609,-426.7801 1080.2878,-429.6709 1080.2878,-429.6709 1080.2878,-429.6709 1082.2609,-426.7801 1077.6861,-427.8951 1084.234,-423.8892 1084.234,-423.8892\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-504.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 11 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>11</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"1092.9828,-576.0711 1062.8175,-558.0711 1092.9828,-540.0711 1123.1481,-558.0711 1092.9828,-576.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"1092.9828\" y=\"-554.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">11</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;11 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1011.0531,-558.0711C1023.4018,-558.0711 1040.1126,-558.0711 1055.2217,-558.0711\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1062.484,-558.0711 1055.4841,-561.2212 1058.984,-558.0711 1055.484,-558.0712 1055.484,-558.0712 1055.484,-558.0712 1058.984,-558.0711 1055.484,-554.9212 1062.484,-558.0711 1062.484,-558.0711\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-561.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"1196.7631\" cy=\"-457.0711\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1196.7631\" y=\"-453.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;1 -->\n",
"<g id=\"edge32\" class=\"edge\">\n",
"<title>10&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M1116.6532,-415.1043C1129.1448,-417.7761 1144.4967,-421.94 1157.315,-428.0711 1164.2164,-431.372 1171.1408,-435.9362 1177.2192,-440.4675\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"1182.9833,-444.9399 1175.5218,-443.1375 1179.9115,-443.1893 1177.1463,-441.0438 1177.4528,-440.6487 1177.7593,-440.2537 1180.5245,-442.3993 1179.3838,-438.16 1182.9833,-444.9399 1182.9833,-444.9399\"/>\n",
"<text text-anchor=\"start\" x=\"1141.315\" y=\"-431.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;0 -->\n",
"<g id=\"edge33\" class=\"edge\">\n",
"<title>11&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M1076.3944,-566.4406C1063.4459,-571.9422 1044.9752,-577.5354 1028.6507,-574.0711 1024.1722,-573.1207 1019.5745,-571.5734 1015.226,-569.8063\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"1008.6509,-566.9028 1016.3269,-566.849 1012.0546,-567.8593 1015.2564,-569.2732 1015.0544,-569.7306 1014.8524,-570.188 1011.6507,-568.7741 1013.7819,-572.6121 1008.6509,-566.9028 1008.6509,-566.9028\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-578.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 12 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>12</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"1300.5434,-513.0711 1270.3781,-495.0711 1300.5434,-477.0711 1330.7087,-495.0711 1300.5434,-513.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"1300.5434\" y=\"-491.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">12</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;12 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1213.575,-464.1309C1220.5446,-466.9946 1228.7339,-470.2786 1236.2112,-473.0711 1248.5736,-477.6878 1262.4074,-482.4679 1274.0699,-486.3882\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1281.0183,-488.7089 1273.3809,-489.4791 1277.6986,-487.6001 1274.3788,-486.4913 1274.3788,-486.4913 1274.3788,-486.4913 1277.6986,-487.6001 1275.3767,-483.5036 1281.0183,-488.7089 1281.0183,-488.7089\"/>\n",
"<text text-anchor=\"start\" x=\"1236.2112\" y=\"-481.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 13 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>13</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"892.3185,-554.0711 862.1532,-536.0711 892.3185,-518.0711 922.4838,-536.0711 892.3185,-554.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"892.3185\" y=\"-532.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">13</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;13 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>1&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1178.7053,-455.4322C1147.4876,-453.1459 1081.6818,-450.7451 1028.6507,-465.0711 984.2382,-477.0688 937.8181,-505.1042 912.234,-522.1372\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"906.1923,-526.2141 910.2328,-519.6874 909.0936,-524.2563 911.9948,-522.2985 911.9948,-522.2985 911.9948,-522.2985 909.0936,-524.2563 913.7568,-524.9096 906.1923,-526.2141 906.1923,-526.2141\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-468.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;1 -->\n",
"<g id=\"edge34\" class=\"edge\">\n",
"<title>12&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M1290.5158,-482.7291C1281.6362,-472.8566 1267.7058,-459.7578 1252.2112,-454.0711 1242.5473,-450.5243 1231.2982,-450.4582 1221.4677,-451.5863\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"1214.2765,-452.6439 1220.7437,-448.5089 1217.6665,-451.6399 1221.1293,-451.1307 1221.202,-451.6253 1221.2748,-452.12 1217.812,-452.6293 1221.6604,-454.7418 1214.2765,-452.6439 1214.2765,-452.6439\"/>\n",
"<text text-anchor=\"start\" x=\"1236.2112\" y=\"-457.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 13&#45;&gt;0 -->\n",
"<g id=\"edge35\" class=\"edge\">\n",
"<title>13&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M914.5854,-540.9536C930.3056,-544.4006 951.3851,-549.0227 967.677,-552.5951\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"974.7892,-554.1545 967.2769,-555.7321 971.2633,-553.8933 967.8445,-553.1436 967.9516,-552.6552 968.0587,-552.1668 971.4775,-552.9165 968.6263,-549.5783 974.7892,-554.1545 974.7892,-554.1545\"/>\n",
"<text text-anchor=\"start\" x=\"940.6507\" y=\"-552.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" cx=\"992.6507\" cy=\"-357.0711\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"992.6507\" y=\"-353.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"</g>\n",
"<!-- 14 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>14</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"1092.9828,-136.0711 1062.8175,-118.0711 1092.9828,-100.0711 1123.1481,-118.0711 1092.9828,-136.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"1092.9828\" y=\"-114.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">14</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;14 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>2&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M1005.401,-343.8885C1017.5729,-330.4792 1035.3893,-308.5296 1044.6507,-286.0711 1065.043,-236.6202 1044.198,-217.278 1062.6507,-167.0711 1066.6327,-156.2364 1073.1864,-145.2151 1079.185,-136.3761\"/>\n",
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"1083.2107,-130.6345 1081.7712,-138.1745 1081.6107,-133.7873 1079.6014,-136.6531 1079.192,-136.366 1078.7826,-136.079 1080.7919,-133.2132 1076.6128,-134.5576 1083.2107,-130.6345 1083.2107,-130.6345\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-316.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 16 -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>16</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"1092.9828,-364.0711 1062.8175,-346.0711 1092.9828,-328.0711 1123.1481,-346.0711 1092.9828,-364.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"1092.9828\" y=\"-342.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">16</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;16 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>2&#45;&gt;16</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1010.5451,-360.0524C1016.3078,-360.8793 1022.7334,-361.6621 1028.6507,-362.0711 1035.7448,-362.5614 1037.6302,-363.2029 1044.6507,-362.0711 1052.5342,-360.8001 1060.8728,-358.4335 1068.3635,-355.9029\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1074.967,-353.5595 1069.4236,-358.8693 1071.6685,-354.7301 1068.3701,-355.9006 1068.3701,-355.9006 1068.3701,-355.9006 1071.6685,-354.7301 1067.3166,-352.932 1074.967,-353.5595 1074.967,-353.5595\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-365.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 15 -->\n",
"<g id=\"node30\" class=\"node\">\n",
"<title>15</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" cx=\"1196.7631\" cy=\"-118.0711\" rx=\"21.3963\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1196.7631\" y=\"-114.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">15</text>\n",
"</g>\n",
"<!-- 14&#45;&gt;15 -->\n",
"<g id=\"edge36\" class=\"edge\">\n",
"<title>14&#45;&gt;15</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1108.7157,-109.2166C1121.6612,-103.0109 1140.5421,-96.4252 1157.315,-100.0711 1162.3724,-101.1704 1167.5584,-102.9774 1172.4393,-105.0328\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1178.8652,-107.9463 1171.1891,-107.9245 1175.6775,-106.501 1172.4899,-105.0557 1172.4899,-105.0557 1172.4899,-105.0557 1175.6775,-106.501 1173.7907,-102.1868 1178.8652,-107.9463 1178.8652,-107.9463\"/>\n",
"<text text-anchor=\"start\" x=\"1141.315\" y=\"-103.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 16&#45;&gt;2 -->\n",
"<g id=\"edge38\" class=\"edge\">\n",
"<title>16&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1068.9703,-342.336C1056.7974,-341.1017 1041.8377,-340.5972 1028.6507,-343.0711 1024.4283,-343.8632 1020.0648,-345.1356 1015.8952,-346.5982\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1009.1202,-349.1883 1014.5339,-343.7462 1012.3895,-347.9384 1015.6587,-346.6886 1015.6587,-346.6886 1015.6587,-346.6886 1012.3895,-347.9384 1016.7836,-349.6309 1009.1202,-349.1883 1009.1202,-349.1883\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-346.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"791.9863\" cy=\"-605.0711\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"791.9863\" y=\"-601.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;13 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>3&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M807.6561,-595.5507C818.0809,-589.114 832.0081,-580.3158 843.9863,-572.0711 853.7899,-565.3231 864.4237,-557.4642 873.2145,-550.814\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"878.973,-546.4315 875.3103,-553.1774 876.1878,-548.5511 873.4026,-550.6708 873.4026,-550.6708 873.4026,-550.6708 876.1878,-548.5511 871.495,-548.1641 878.973,-546.4315 878.973,-546.4315\"/>\n",
"<text text-anchor=\"start\" x=\"827.9863\" y=\"-585.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 17 -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>17</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"691.6541,-585.0711 661.4888,-567.0711 691.6541,-549.0711 721.8194,-567.0711 691.6541,-585.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"691.6541\" y=\"-563.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">17</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;17 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>3&#45;&gt;17</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M774.4636,-600.2893C764.2894,-597.3621 751.2894,-593.3621 739.9863,-589.0711 731.6364,-585.9012 722.6849,-581.98 714.7827,-578.33\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"708.4279,-575.3503 716.1031,-575.4701 711.5969,-576.8362 714.7658,-578.3221 714.7658,-578.3221 714.7658,-578.3221 711.5969,-576.8362 713.4285,-581.1742 708.4279,-575.3503 708.4279,-575.3503\"/>\n",
"<text text-anchor=\"start\" x=\"739.9863\" y=\"-597.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 17&#45;&gt;2 -->\n",
"<g id=\"edge39\" class=\"edge\">\n",
"<title>17&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M712.9023,-561.5349C743.5917,-552.9045 801.3169,-534.2533 843.9863,-506.0711 899.9606,-469.1012 952.1033,-408.5347 977.1268,-377.2237\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"981.4784,-371.73 979.6012,-379.173 979.3052,-374.4735 977.132,-377.2171 977.132,-377.2171 977.132,-377.2171 979.3052,-374.4735 974.6627,-375.2612 981.4784,-371.73 981.4784,-371.73\"/>\n",
"<text text-anchor=\"start\" x=\"827.9863\" y=\"-517.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 17&#45;&gt;3 -->\n",
"<g id=\"edge40\" class=\"edge\">\n",
"<title>17&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M717.0288,-564.1728C729.2668,-563.7774 743.8808,-564.8246 755.9863,-570.0711 763.7019,-573.415 770.7147,-579.2088 776.4586,-585.1312\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"781.3607,-590.5398 774.3257,-587.4685 778.6397,-588.2822 776.2892,-585.6889 776.6597,-585.3531 777.0302,-585.0173 779.3807,-587.6107 778.9937,-583.2377 781.3607,-590.5398 781.3607,-590.5398\"/>\n",
"<text text-anchor=\"start\" x=\"739.9863\" y=\"-573.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node14\" class=\"node\">\n",
"<title>4</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" cx=\"992.6507\" cy=\"-232.0711\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"992.6507\" y=\"-228.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">4</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;14 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>4&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M996.4899,-214.258C1002.6023,-187.607 1015.2329,-139.2785 1028.6507,-128.0711 1036.8972,-121.183 1047.8901,-118.0316 1058.4526,-116.7915\"/>\n",
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"1065.6573,-116.216 1058.9304,-119.9135 1062.2082,-116.9932 1058.7194,-117.2719 1058.6795,-116.7735 1058.6397,-116.2751 1062.1286,-115.9963 1058.4287,-113.6335 1065.6573,-116.216 1065.6573,-116.216\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-131.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 18 -->\n",
"<g id=\"node15\" class=\"node\">\n",
"<title>18</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"1092.9828,-212.0711 1062.8175,-194.0711 1092.9828,-176.0711 1123.1481,-194.0711 1092.9828,-212.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"1092.9828\" y=\"-190.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">18</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;18 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>4&#45;&gt;18</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1002.7506,-216.9795C1009.1173,-208.8657 1018.1173,-199.6157 1028.6507,-195.0711 1038.9991,-190.6063 1051.1836,-189.5056 1062.1494,-189.8108\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1069.148,-190.1931 1061.9865,-192.9565 1065.6532,-190.0021 1062.1584,-189.8112 1062.1584,-189.8112 1062.1584,-189.8112 1065.6532,-190.0021 1062.3303,-186.6658 1069.148,-190.1931 1069.148,-190.1931\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-198.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 18&#45;&gt;4 -->\n",
"<g id=\"edge41\" class=\"edge\">\n",
"<title>18&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1074.5165,-201.0651C1058.1556,-207.2616 1034.1742,-216.3443 1016.392,-223.0792\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1009.6706,-225.6249 1015.1011,-220.1997 1012.9438,-224.3852 1016.2169,-223.1455 1016.2169,-223.1455 1016.2169,-223.1455 1012.9438,-224.3852 1017.3326,-226.0913 1009.6706,-225.6249 1009.6706,-225.6249\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-221.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node16\" class=\"node\">\n",
"<title>5</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" cx=\"992.6507\" cy=\"-118.0711\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"992.6507\" y=\"-114.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">5</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;14 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>5&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M1002.7244,-102.918C1009.0823,-94.7837 1018.0823,-85.5337 1028.6507,-81.0711 1035.2017,-78.3048 1037.9156,-78.7891 1044.6507,-81.0711 1056.5233,-85.0938 1067.7708,-93.3331 1076.4232,-101.0174\"/>\n",
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"1081.9745,-106.1901 1074.7057,-103.7226 1079.0729,-104.1699 1076.5123,-101.7838 1076.8531,-101.418 1077.194,-101.0522 1079.7547,-103.4382 1079.0005,-99.1134 1081.9745,-106.1901 1081.9745,-106.1901\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-84.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;16 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>5&#45;&gt;16</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M996.6239,-135.8838C1002.2237,-159.5736 1013.4738,-202.4815 1028.6507,-237.0711 1043.2757,-270.4028 1065.9094,-306.2364 1080.0642,-327.3784\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1083.9922,-333.1934 1077.4636,-329.1561 1082.033,-330.2931 1080.0738,-327.3928 1080.0738,-327.3928 1080.0738,-327.3928 1082.033,-330.2931 1082.6841,-325.6295 1083.9922,-333.1934 1083.9922,-333.1934\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-271.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;18 -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>5&#45;&gt;18</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1007.0258,-128.96C1024.6055,-142.2763 1054.4205,-164.8607 1073.9058,-179.6205\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1079.5963,-183.931 1072.1144,-182.2152 1076.8063,-181.8176 1074.0164,-179.7042 1074.0164,-179.7042 1074.0164,-179.7042 1076.8063,-181.8176 1075.9184,-177.1933 1079.5963,-183.931 1079.5963,-183.931\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-159.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 19 -->\n",
"<g id=\"node17\" class=\"node\">\n",
"<title>19</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"1092.9828,-41.0711 1062.8175,-23.0711 1092.9828,-5.0711 1123.1481,-23.0711 1092.9828,-41.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"1092.9828\" y=\"-19.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">19</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;19 -->\n",
"<g id=\"edge15\" class=\"edge\">\n",
"<title>5&#45;&gt;19</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M995.7861,-99.8796C1001.1924,-70.9024 1013.1917,-16.3706 1028.6507,-5.0711 1041.6859,4.4569 1059.5693,-1.7016 1073.1726,-9.303\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1079.4668,-13.0882 1071.8445,-12.1801 1076.4674,-11.2844 1073.4679,-9.4806 1073.4679,-9.4806 1073.4679,-9.4806 1076.4674,-11.2844 1075.0913,-6.7811 1079.4668,-13.0882 1079.4668,-13.0882\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-8.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 19&#45;&gt;5 -->\n",
"<g id=\"edge42\" class=\"edge\">\n",
"<title>19&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1075.3677,-30.6484C1061.5143,-37.2317 1042.3333,-47.7899 1028.6507,-61.0711 1018.541,-70.8841 1009.9791,-84.0715 1003.7447,-95.2902\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1000.3488,-101.6277 1000.8784,-93.9699 1002.0019,-98.5427 1003.655,-95.4577 1003.655,-95.4577 1003.655,-95.4577 1002.0019,-98.5427 1006.4315,-96.9454 1000.3488,-101.6277 1000.3488,-101.6277\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-64.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node18\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"591.3219\" cy=\"-329.0711\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"591.3219\" y=\"-325.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">6</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;10 -->\n",
"<g id=\"edge16\" class=\"edge\">\n",
"<title>6&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M606.7024,-338.4923C644.3447,-360.6231 744.7036,-414.0711 835.9863,-414.0711 835.9863,-414.0711 835.9863,-414.0711 992.6507,-414.0711 1014.2841,-414.0711 1038.5297,-413.3656 1057.7668,-412.6389\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1064.8785,-412.3607 1058.007,-415.782 1061.3812,-412.4976 1057.8839,-412.6344 1057.8839,-412.6344 1057.8839,-412.6344 1061.3812,-412.4976 1057.7608,-409.4868 1064.8785,-412.3607 1064.8785,-412.3607\"/>\n",
"<text text-anchor=\"start\" x=\"827.9863\" y=\"-417.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;11 -->\n",
"<g id=\"edge17\" class=\"edge\">\n",
"<title>6&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M602.5438,-343.3352C615.1529,-358.2873 637.0562,-381.2197 661.3219,-393.0711 820.3676,-470.7487 895.735,-405.3972 1044.6507,-501.0711 1059.6598,-510.714 1072.489,-526.442 1081.1501,-538.9366\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1085.0584,-544.7697 1078.545,-540.7077 1083.1102,-541.862 1081.162,-538.9543 1081.162,-538.9543 1081.162,-538.9543 1083.1102,-541.862 1083.7789,-537.201 1085.0584,-544.7697 1085.0584,-544.7697\"/>\n",
"<text text-anchor=\"start\" x=\"827.9863\" y=\"-442.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 20 -->\n",
"<g id=\"node19\" class=\"node\">\n",
"<title>20</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"691.6541,-335.0711 661.4888,-317.0711 691.6541,-299.0711 721.8194,-317.0711 691.6541,-335.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"691.6541\" y=\"-313.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">20</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;20 -->\n",
"<g id=\"edge18\" class=\"edge\">\n",
"<title>6&#45;&gt;20</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M609.2593,-326.9257C623.0433,-325.2771 642.4568,-322.9552 658.9775,-320.9793\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"666.334,-320.0994 659.7577,-324.0585 662.8588,-320.5151 659.3835,-320.9308 659.3835,-320.9308 659.3835,-320.9308 662.8588,-320.5151 659.0094,-317.8031 666.334,-320.0994 666.334,-320.0994\"/>\n",
"<text text-anchor=\"start\" x=\"627.3219\" y=\"-327.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 21 -->\n",
"<g id=\"node20\" class=\"node\">\n",
"<title>21</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"691.6541,-271.0711 661.4888,-253.0711 691.6541,-235.0711 721.8194,-253.0711 691.6541,-271.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"691.6541\" y=\"-249.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">21</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;21 -->\n",
"<g id=\"edge19\" class=\"edge\">\n",
"<title>6&#45;&gt;21</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M605.6971,-318.1821C623.2767,-304.8658 653.0917,-282.2814 672.577,-267.5216\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"678.2675,-263.2112 674.5896,-269.9488 675.4776,-265.3245 672.6876,-267.4379 672.6876,-267.4379 672.6876,-267.4379 675.4776,-265.3245 670.7856,-264.9269 678.2675,-263.2112 678.2675,-263.2112\"/>\n",
"<text text-anchor=\"start\" x=\"627.3219\" y=\"-303.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 20&#45;&gt;4 -->\n",
"<g id=\"edge43\" class=\"edge\">\n",
"<title>20&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M710.421,-309.8973C736.5245,-300.0814 785.3912,-282.2915 827.9863,-270.0711 877.0146,-256.0049 935.393,-243.5185 967.8108,-236.9533\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"974.7054,-235.5673 968.4636,-240.0352 971.274,-236.2571 967.8427,-236.947 967.8427,-236.947 967.8427,-236.947 971.274,-236.2571 967.2218,-233.8588 974.7054,-235.5673 974.7054,-235.5673\"/>\n",
"<text text-anchor=\"start\" x=\"827.9863\" y=\"-273.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node21\" class=\"node\">\n",
"<title>7</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"791.9863\" cy=\"-317.0711\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"791.9863\" y=\"-313.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">7</text>\n",
"</g>\n",
"<!-- 20&#45;&gt;7 -->\n",
"<g id=\"edge44\" class=\"edge\">\n",
"<title>20&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M722.0293,-317.0711C736.3367,-317.0711 753.2018,-317.0711 766.7878,-317.0711\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"773.9611,-317.0711 766.9611,-320.2212 770.4611,-317.5711 766.9611,-317.5712 766.9611,-317.0712 766.9611,-316.5712 770.4611,-316.5711 766.9611,-313.9212 773.9611,-317.0711 773.9611,-317.0711\"/>\n",
"<text text-anchor=\"start\" x=\"739.9863\" y=\"-320.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 21&#45;&gt;4 -->\n",
"<g id=\"edge45\" class=\"edge\">\n",
"<title>21&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M711.7057,-246.6278C738.0501,-238.532 785.9116,-225.0908 827.9863,-220.0711 877.2592,-214.1925 935.1944,-221.7526 967.5425,-227.2638\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"974.8115,-228.5418 967.3717,-230.432 971.3643,-227.9357 967.9172,-227.3296 967.9172,-227.3296 967.9172,-227.3296 971.3643,-227.9357 968.4627,-224.2272 974.8115,-228.5418 974.8115,-228.5418\"/>\n",
"<text text-anchor=\"start\" x=\"827.9863\" y=\"-223.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 21&#45;&gt;6 -->\n",
"<g id=\"edge46\" class=\"edge\">\n",
"<title>21&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M666.5437,-256.1959C653.7973,-258.7862 638.6554,-263.503 627.3219,-272.0711 615.927,-280.6856 607.2148,-294.0415 601.2171,-305.6601\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"597.9998,-312.2511 598.2398,-304.5788 599.0858,-308.8865 600.6212,-305.7412 601.0705,-305.9606 601.5198,-306.1799 599.9845,-309.3252 603.9013,-307.3424 597.9998,-312.2511 597.9998,-312.2511\"/>\n",
"<text text-anchor=\"start\" x=\"627.3219\" y=\"-275.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;12 -->\n",
"<g id=\"edge20\" class=\"edge\">\n",
"<title>7&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M793.3115,-335.3209C797.7516,-394.6105 812.6865,-579.2484 827.9863,-601.0711 846.4335,-627.383 860.1841,-634.0711 892.3185,-634.0711 892.3185,-634.0711 892.3185,-634.0711 1196.7631,-634.0711 1254.0331,-634.0711 1283.4849,-557.3717 1294.8455,-517.9219\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1296.7589,-511.0161 1297.9254,-518.6031 1295.8243,-514.3891 1294.8898,-517.762 1294.8898,-517.762 1294.8898,-517.762 1295.8243,-514.3891 1291.8541,-516.9209 1296.7589,-511.0161 1296.7589,-511.0161\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-637.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;13 -->\n",
"<g id=\"edge21\" class=\"edge\">\n",
"<title>7&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M793.2836,-335.3536C796.0277,-364.8896 804.2644,-424.2185 827.9863,-468.0711 834.2386,-479.6292 858.2641,-503.7207 875.1126,-519.8982\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"880.5153,-525.0515 873.2758,-522.4994 877.9827,-522.6357 875.45,-520.22 875.45,-520.22 875.45,-520.22 877.9827,-522.6357 877.6242,-517.9406 880.5153,-525.0515 880.5153,-525.0515\"/>\n",
"<text text-anchor=\"start\" x=\"827.9863\" y=\"-490.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 22 -->\n",
"<g id=\"node22\" class=\"node\">\n",
"<title>22</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"892.3185,-321.0711 862.1532,-303.0711 892.3185,-285.0711 922.4838,-303.0711 892.3185,-321.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"892.3185\" y=\"-299.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">22</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;22 -->\n",
"<g id=\"edge22\" class=\"edge\">\n",
"<title>7&#45;&gt;22</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M810.3039,-315.1798C820.278,-314.0941 832.827,-312.6375 843.9863,-311.0711 849.6715,-310.273 855.7189,-309.3397 861.5422,-308.3978\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"868.7543,-307.2098 862.3594,-311.4557 865.3009,-307.7787 861.8474,-308.3476 861.8474,-308.3476 861.8474,-308.3476 865.3009,-307.7787 861.3354,-305.2395 868.7543,-307.2098 868.7543,-307.2098\"/>\n",
"<text text-anchor=\"start\" x=\"827.9863\" y=\"-316.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 23 -->\n",
"<g id=\"node23\" class=\"node\">\n",
"<title>23</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"446.3253,-439.0711 416.16,-421.0711 446.3253,-403.0711 476.4906,-421.0711 446.3253,-439.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"446.3253\" y=\"-417.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">23</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;23 -->\n",
"<g id=\"edge23\" class=\"edge\">\n",
"<title>7&#45;&gt;23</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M786.6686,-334.53C781.3243,-348.9255 771.606,-368.618 755.9863,-379.0711 669.293,-437.0881 538.1408,-431.6474 478.2194,-425.3439\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"470.9309,-424.5353 478.2356,-422.1765 474.4095,-424.9213 477.8882,-425.3073 477.8882,-425.3073 477.8882,-425.3073 474.4095,-424.9213 477.5408,-428.4381 470.9309,-424.5353 470.9309,-424.5353\"/>\n",
"<text text-anchor=\"start\" x=\"627.3219\" y=\"-426.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 22&#45;&gt;4 -->\n",
"<g id=\"edge47\" class=\"edge\">\n",
"<title>22&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M910.7979,-296.0081C924.236,-290.3821 942.4797,-281.6988 956.6507,-271.0711 963.9072,-265.6289 970.906,-258.6056 976.7723,-252.0218\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"981.4145,-246.6391 979.2282,-253.9973 979.1286,-249.2895 976.8428,-251.94 976.8428,-251.94 976.8428,-251.94 979.1286,-249.2895 974.4574,-249.8828 981.4145,-246.6391 981.4145,-246.6391\"/>\n",
"<text text-anchor=\"start\" x=\"940.6507\" y=\"-283.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 22&#45;&gt;7 -->\n",
"<g id=\"edge48\" class=\"edge\">\n",
"<title>22&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M874.5431,-295.6092C861.455,-291.1729 843.3408,-287.2625 827.9863,-292.0711 822.0364,-293.9344 816.2073,-297.166 811.0311,-300.6992\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"805.2867,-304.9214 809.0615,-298.2375 807.8107,-302.4456 810.6309,-300.3728 810.927,-300.7757 811.2231,-301.1785 808.403,-303.2514 812.7926,-303.3138 805.2867,-304.9214 805.2867,-304.9214\"/>\n",
"<text text-anchor=\"start\" x=\"827.9863\" y=\"-295.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 23&#45;&gt;4 -->\n",
"<g id=\"edge49\" class=\"edge\">\n",
"<title>23&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M465.84,-414.6424C513.4749,-399.5414 639.7245,-363.0711 747.9863,-363.0711 747.9863,-363.0711 747.9863,-363.0711 892.3185,-363.0711 945.2262,-363.0711 974.0147,-294.8896 985.9481,-256.9037\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"988.1122,-249.7383 989.1037,-257.3501 987.1002,-253.0888 986.0883,-256.4394 986.0883,-256.4394 986.0883,-256.4394 987.1002,-253.0888 983.0728,-255.5286 988.1122,-249.7383 988.1122,-249.7383\"/>\n",
"<text text-anchor=\"start\" x=\"739.9863\" y=\"-366.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 23&#45;&gt;6 -->\n",
"<g id=\"edge50\" class=\"edge\">\n",
"<title>23&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M453.7325,-407.217C461.9459,-393.1312 476.4694,-371.6425 494.6575,-359.0711 506.3665,-350.9779 541.9687,-341.1135 566.5335,-334.9608\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"573.4518,-333.2526 567.4111,-337.9888 570.1737,-334.577 566.7758,-335.4161 566.6559,-334.9307 566.5361,-334.4453 569.934,-333.6062 565.9008,-331.8725 573.4518,-333.2526 573.4518,-333.2526\"/>\n",
"<text text-anchor=\"start\" x=\"516.9897\" y=\"-362.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node24\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"301.3288\" cy=\"-498.0711\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"301.3288\" y=\"-494.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">8</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;13 -->\n",
"<g id=\"edge24\" class=\"edge\">\n",
"<title>8&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M319.1078,-501.5113C346.3712,-506.4787 400.1966,-515.0711 446.3253,-515.0711 446.3253,-515.0711 446.3253,-515.0711 747.9863,-515.0711 788.3701,-515.0711 834.4538,-523.2214 863.4621,-529.367\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"870.4553,-530.88 862.9474,-532.4785 867.0344,-530.1399 863.6136,-529.3997 863.6136,-529.3997 863.6136,-529.3997 867.0344,-530.1399 864.2797,-526.3209 870.4553,-530.88 870.4553,-530.88\"/>\n",
"<text text-anchor=\"start\" x=\"627.3219\" y=\"-518.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;17 -->\n",
"<g id=\"edge25\" class=\"edge\">\n",
"<title>8&#45;&gt;17</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M313.3248,-511.6906C319.7694,-518.0786 328.2471,-525.1361 337.3288,-529.0711 446.9244,-576.558 592.7332,-574.033 657.8058,-569.9209\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"664.963,-569.4412 658.1894,-573.0524 661.4708,-569.6753 657.9787,-569.9095 657.9787,-569.9095 657.9787,-569.9095 661.4708,-569.6753 657.768,-566.7665 664.963,-569.4412 664.963,-569.4412\"/>\n",
"<text text-anchor=\"start\" x=\"516.9897\" y=\"-574.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;23 -->\n",
"<g id=\"edge26\" class=\"edge\">\n",
"<title>8&#45;&gt;23</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M318.0115,-490.5954C337.4906,-481.7215 370.542,-466.2118 397.9931,-451.0711 407.2274,-445.9779 417.1672,-439.914 425.6174,-434.5754\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"431.7526,-430.6624 427.5447,-437.0825 428.8017,-432.5445 425.8508,-434.4266 425.8508,-434.4266 425.8508,-434.4266 428.8017,-432.5445 424.1569,-431.7708 431.7526,-430.6624 431.7526,-430.6624\"/>\n",
"<text text-anchor=\"start\" x=\"359.6609\" y=\"-483.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 24 -->\n",
"<g id=\"node25\" class=\"node\">\n",
"<title>24</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"446.3253,-289.0711 416.16,-271.0711 446.3253,-253.0711 476.4906,-271.0711 446.3253,-289.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"446.3253\" y=\"-267.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">24</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;24 -->\n",
"<g id=\"edge27\" class=\"edge\">\n",
"<title>8&#45;&gt;24</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M303.1906,-480.0977C307.4982,-441.4468 319.1908,-351.989 337.3288,-328.0711 357.2613,-301.7867 392.8262,-286.4687 417.8997,-278.453\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"424.6718,-276.3828 418.8985,-281.4416 421.3247,-277.406 417.9776,-278.4293 417.9776,-278.4293 417.9776,-278.4293 421.3247,-277.406 417.0567,-275.4169 424.6718,-276.3828 424.6718,-276.3828\"/>\n",
"<text text-anchor=\"start\" x=\"359.6609\" y=\"-331.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 24&#45;&gt;5 -->\n",
"<g id=\"edge51\" class=\"edge\">\n",
"<title>24&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M454.1177,-257.1908C473.1037,-225.408 525.0926,-150.0711 591.3219,-150.0711 591.3219,-150.0711 591.3219,-150.0711 892.3185,-150.0711 920.079,-150.0711 950.2042,-138.8141 970.1235,-129.6535\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"976.4693,-126.6465 971.4925,-132.4906 973.3064,-128.1453 970.1436,-129.644 970.1436,-129.644 970.1436,-129.644 973.3064,-128.1453 968.7947,-126.7974 976.4693,-126.6465 976.4693,-126.6465\"/>\n",
"<text text-anchor=\"start\" x=\"739.9863\" y=\"-153.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 24&#45;&gt;8 -->\n",
"<g id=\"edge52\" class=\"edge\">\n",
"<title>24&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M433.2887,-281.649C427.1121,-287.3557 420.1853,-294.8978 415.9931,-303.0711 396.5801,-340.9197 422.6514,-362.4105 397.9931,-397.0711 379.9488,-422.4349 359.0741,-409.7986 337.3288,-432.0711 335.5828,-433.8593 323.0359,-457.14 313.2395,-475.5511\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"309.7799,-482.065 310.2814,-474.4053 310.98,-478.7394 312.6218,-475.6483 313.0634,-475.8829 313.505,-476.1174 311.8632,-479.2085 315.8453,-477.3604 309.7799,-482.065 309.7799,-482.065\"/>\n",
"<text text-anchor=\"start\" x=\"359.6609\" y=\"-435.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 25&#45;&gt;8 -->\n",
"<g id=\"edge53\" class=\"edge\">\n",
"<title>25&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M184.289,-503.7214C210.8036,-502.4413 250.2957,-500.5348 275.9322,-499.2971\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"283.0933,-498.9514 276.2534,-502.4354 279.6215,-499.6196 276.1256,-499.7885 276.1015,-499.2891 276.0774,-498.7896 279.5733,-498.6208 275.9495,-496.1427 283.0933,-498.9514 283.0933,-498.9514\"/>\n",
"<text text-anchor=\"start\" x=\"226.9966\" y=\"-505.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 26&#45;&gt;3 -->\n",
"<g id=\"edge54\" class=\"edge\">\n",
"<title>26&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M259.388,-632.6066C285.9556,-636.1463 329.7342,-641.0711 367.6609,-641.0711 367.6609,-641.0711 367.6609,-641.0711 691.6541,-641.0711 719.9193,-641.0711 750.171,-628.2567 769.9778,-617.9186\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"776.2765,-614.5296 771.6046,-620.6204 773.4312,-616.6283 770.349,-618.2867 770.1121,-617.8464 769.8752,-617.4061 772.9574,-615.7477 768.6195,-615.0724 776.2765,-614.5296 776.2765,-614.5296\"/>\n",
"<text text-anchor=\"start\" x=\"516.9897\" y=\"-644.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 27&#45;&gt;6 -->\n",
"<g id=\"edge55\" class=\"edge\">\n",
"<title>27&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M388.1564,-364.1522C413.1115,-357.159 456.6397,-345.6461 494.6575,-339.0711 518.6862,-334.9154 546.3951,-332.2646 565.9692,-330.7441\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"573.0482,-330.2159 566.302,-333.8781 569.5951,-330.975 566.1048,-331.2355 566.0676,-330.7368 566.0304,-330.2382 569.5207,-329.9778 565.8332,-327.5956 573.0482,-330.2159 573.0482,-330.2159\"/>\n",
"<text text-anchor=\"start\" x=\"438.3253\" y=\"-359.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 28&#45;&gt;0 -->\n",
"<g id=\"edge56\" class=\"edge\">\n",
"<title>28&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M555.4298,-679.0711C577.5862,-679.0711 608.3135,-679.0711 635.3219,-679.0711 635.3219,-679.0711 635.3219,-679.0711 892.3185,-679.0711 942.2067,-679.0711 972.0083,-617.3665 984.9707,-582.0852\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"987.3397,-575.4074 987.968,-583.0578 986.6407,-578.8732 985.4705,-582.1718 984.9993,-582.0046 984.5281,-581.8374 985.6982,-578.5388 982.0305,-580.9514 987.3397,-575.4074 987.3397,-575.4074\"/>\n",
"<text text-anchor=\"start\" x=\"739.9863\" y=\"-682.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 15&#45;&gt;14 -->\n",
"<g id=\"edge37\" class=\"edge\">\n",
"<title>15&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M1175.1682,-118.0711C1162.2589,-118.0711 1145.4996,-118.0711 1130.4853,-118.0711\"/>\n",
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"1123.2794,-118.0711 1130.2794,-114.9212 1126.7794,-117.5711 1130.2794,-117.5712 1130.2794,-118.0712 1130.2794,-118.5712 1126.7794,-118.5711 1130.2793,-121.2212 1123.2794,-118.0711 1123.2794,-118.0711\"/>\n",
"<text text-anchor=\"start\" x=\"1141.315\" y=\"-121.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.jupyter.SVG object>"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Solve the game\n",
"print(\"Found a solution: \", spot.solve_game(game))\n",
"spot.highlight_strategy(game)\n",
"game.show('.g')"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"minimization lvl 0\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.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"729pt\" height=\"283pt\"\n",
" viewBox=\"0.00 0.00 729.00 283.01\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(0.8007 0.8007) rotate(0) translate(4 349.4766)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-349.4766 906.5,-349.4766 906.5,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"448.25\" y=\"-330.2766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">t</text>\n",
"<text text-anchor=\"start\" x=\"440.25\" y=\"-315.2766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[all]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-208.4766\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-204.7766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-208.4766C4.178,-208.4766 17.9448,-208.4766 30.9241,-208.4766\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-208.4766 30.9808,-211.6267 34.4807,-208.4767 30.9807,-208.4767 30.9807,-208.4767 30.9807,-208.4767 34.4807,-208.4767 30.9807,-205.3267 37.9807,-208.4766 37.9807,-208.4766\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"183\" cy=\"-143.4766\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"183\" y=\"-139.7766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M72.0846,-200.2443C94.3872,-188.8296 134.8197,-168.1359 160.2193,-155.136\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"166.6448,-151.8474 161.8487,-157.8408 163.5292,-153.442 160.4135,-155.0367 160.4135,-155.0367 160.4135,-155.0367 163.5292,-153.442 158.9783,-152.2326 166.6448,-151.8474 166.6448,-151.8474\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-192.2766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"348.5\" cy=\"-205.4766\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"348.5\" y=\"-201.7766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M73.8971,-211.0817C115.4279,-216.6833 221.4826,-228.4351 309,-216.4766 314.1399,-215.7743 319.5544,-214.5804 324.6706,-213.2318\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"331.4086,-211.3285 325.5286,-216.2628 328.0404,-212.2799 324.6722,-213.2314 324.6722,-213.2314 324.6722,-213.2314 328.0404,-212.2799 323.8159,-210.2001 331.4086,-211.3285 331.4086,-211.3285\"/>\n",
"<text text-anchor=\"start\" x=\"160\" y=\"-224.2766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"348.5\" cy=\"-78.4766\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"348.5\" y=\"-74.7766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</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=\"#000000\" d=\"M65.4736,-192.8824C81.4388,-168.2484 116.2834,-121.1146 160,-101.4766 214.4142,-77.0332 286.0747,-75.6528 323.4201,-76.9447\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"330.4163,-77.2327 323.2926,-80.0921 326.9193,-77.0887 323.4222,-76.9447 323.4222,-76.9447 323.4222,-76.9447 326.9193,-77.0887 323.5518,-73.7974 330.4163,-77.2327 330.4163,-77.2327\"/>\n",
"<text text-anchor=\"start\" x=\"160\" y=\"-105.2766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>4</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"727.5\" cy=\"-116.4766\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"727.5\" y=\"-112.7766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">4</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;4 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>0&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M67.277,-222.7261C87.6253,-246.6916 133.0376,-292.4766 183,-292.4766 183,-292.4766 183,-292.4766 529.5,-292.4766 620.8664,-292.4766 689.6631,-186.4934 715.8995,-139.0131\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"719.3171,-132.7188 718.7452,-140.3736 717.647,-135.7947 715.9769,-138.8705 715.9769,-138.8705 715.9769,-138.8705 717.647,-135.7947 713.2086,-137.3675 719.3171,-132.7188 719.3171,-132.7188\"/>\n",
"<text text-anchor=\"start\" x=\"327\" y=\"-296.2766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</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=\"#000000\" d=\"M172.0873,-157.8933C168.2765,-168.6426 171.9141,-179.4766 183,-179.4766 191.6609,-179.4766 195.7757,-172.8641 195.3443,-164.8454\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"193.9127,-157.8933 198.4099,-164.1141 194.6187,-161.3214 195.3246,-164.7494 195.3246,-164.7494 195.3246,-164.7494 194.6187,-161.3214 192.2394,-165.3848 193.9127,-157.8933 193.9127,-157.8933\"/>\n",
"<text text-anchor=\"start\" x=\"139\" y=\"-183.2766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1 &amp; !o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>1&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M196.5743,-155.451C204.1841,-161.6173 214.1125,-168.802 224,-173.4766 256.5029,-188.8434 297.4008,-197.542 323.2567,-201.8796\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"330.4514,-203.0388 323.0394,-205.0351 326.996,-202.482 323.5405,-201.9252 323.5405,-201.9252 323.5405,-201.9252 326.996,-202.482 324.0417,-198.8153 330.4514,-203.0388 330.4514,-203.0388\"/>\n",
"<text text-anchor=\"start\" x=\"224\" y=\"-202.2766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1 &amp; !o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;3 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>1&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M200.2947,-137.9303C232.395,-127.6038 298.8619,-106.0591 309,-101.4766 314.925,-98.7985 321.1037,-95.4786 326.7667,-92.202\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"333.1317,-88.4165 328.7255,-94.7021 330.1235,-90.2056 327.1153,-91.9947 327.1153,-91.9947 327.1153,-91.9947 330.1235,-90.2056 325.5051,-89.2873 333.1317,-88.4165 333.1317,-88.4165\"/>\n",
"<text text-anchor=\"start\" x=\"224\" y=\"-133.2766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1 &amp; !o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;4 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>1&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M201.3618,-144.5636C208.4348,-144.9321 216.5906,-145.296 224,-145.4766 261.7666,-146.3972 271.2316,-146.3202 309,-145.4766 468.2302,-141.9202 509.0363,-149.8329 667,-129.4766 678.9745,-127.9335 692.0949,-125.2399 703.0474,-122.7033\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"709.8978,-121.0728 703.8175,-125.7581 706.493,-121.8833 703.0881,-122.6937 703.0881,-122.6937 703.0881,-122.6937 706.493,-121.8833 702.3587,-119.6293 709.8978,-121.0728 709.8978,-121.0728\"/>\n",
"<text text-anchor=\"start\" x=\"390\" y=\"-148.2766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1 &amp; !o0</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=\"#000000\" d=\"M335.6625,-218.395C329.8068,-229.6114 334.0859,-241.4766 348.5,-241.4766 359.9862,-241.4766 365.0367,-233.9421 363.6514,-225.2054\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"361.3375,-218.395 366.572,-224.0096 362.4635,-221.709 363.5894,-225.023 363.5894,-225.023 363.5894,-225.023 362.4635,-221.709 360.6069,-226.0363 361.3375,-218.395 361.3375,-218.395\"/>\n",
"<text text-anchor=\"start\" x=\"321\" y=\"-245.2766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1 &amp; !o0</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=\"#000000\" d=\"M366.4379,-207.5462C416.6056,-212.5453 561.5751,-221.5561 667,-173.4766 684.99,-165.2722 701.0536,-149.522 712.0995,-136.6535\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"716.8104,-130.9812 714.7613,-138.3788 714.5742,-133.6737 712.3381,-136.3662 712.3381,-136.3662 712.3381,-136.3662 714.5742,-133.6737 709.9148,-134.3536 716.8104,-130.9812 716.8104,-130.9812\"/>\n",
"<text text-anchor=\"start\" x=\"504\" y=\"-214.2766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1 &amp; !o0</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=\"#000000\" d=\"M335.6625,-91.395C329.8068,-102.6114 334.0859,-114.4766 348.5,-114.4766 359.9862,-114.4766 365.0367,-106.9421 363.6514,-98.2054\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"361.3375,-91.395 366.572,-97.0096 362.4635,-94.709 363.5894,-98.023 363.5894,-98.023 363.5894,-98.023 362.4635,-94.709 360.6069,-99.0363 361.3375,-91.395 361.3375,-91.395\"/>\n",
"<text text-anchor=\"start\" x=\"308\" y=\"-118.2766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1 &amp; o0</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=\"#000000\" d=\"M365.5602,-85.103C372.4311,-87.5037 380.4935,-89.9883 388,-91.4766 503.6782,-114.4115 645.2884,-116.7817 702.1241,-116.7116\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"709.2569,-116.6891 702.2669,-119.8613 705.7569,-116.7002 702.2569,-116.7113 702.2569,-116.7113 702.2569,-116.7113 705.7569,-116.7002 702.2469,-113.5613 709.2569,-116.6891 709.2569,-116.6891\"/>\n",
"<text text-anchor=\"start\" x=\"491\" y=\"-117.2766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1 &amp; o0</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>5</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"875\" cy=\"-47.4766\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"875\" y=\"-43.7766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">5</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;5 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>3&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M355.439,-61.7068C361.868,-48.351 372.7466,-30.3174 388,-20.4766 427.05,4.7167 444.7022,-6.4916 491,-2.4766 627.2306,9.3375 789.8149,-26.1479 850.5402,-41.1345\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"857.4321,-42.856 849.8774,-44.2157 854.0364,-42.0078 850.6408,-41.1596 850.6408,-41.1596 850.6408,-41.1596 854.0364,-42.0078 851.4041,-38.1035 857.4321,-42.856 857.4321,-42.856\"/>\n",
"<text text-anchor=\"start\" x=\"586\" y=\"-11.2766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1 &amp; o0</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"529.5\" cy=\"-29.4766\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"529.5\" y=\"-25.7766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">6</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;6 -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>3&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M358.7541,-63.577C365.8348,-54.6052 376.0995,-43.9 388,-38.4766 425.7883,-21.2556 475.222,-22.8233 504.542,-25.895\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"511.5435,-26.6978 504.2302,-29.0298 508.0663,-26.299 504.5891,-25.9003 504.5891,-25.9003 504.5891,-25.9003 508.0663,-26.299 504.948,-22.7708 511.5435,-26.6978 511.5435,-26.6978\"/>\n",
"<text text-anchor=\"start\" x=\"388\" y=\"-42.2766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1 &amp; o0</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;4 -->\n",
"<g id=\"edge17\" class=\"edge\">\n",
"<title>4&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M714.2449,-129.0214C707.7965,-140.3463 712.2148,-152.4766 727.5,-152.4766 739.7998,-152.4766 745.0631,-144.6219 743.2899,-135.6529\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"740.7551,-129.0214 746.1968,-134.4353 742.0048,-132.2907 743.2544,-135.56 743.2544,-135.56 743.2544,-135.56 742.0048,-132.2907 740.3121,-136.6847 740.7551,-129.0214 740.7551,-129.0214\"/>\n",
"<text text-anchor=\"start\" x=\"704\" y=\"-156.2766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1 &amp; o0</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=\"#000000\" d=\"M745.8509,-115.9799C769.1405,-114.5792 809.7919,-109.4977 839,-91.4766 847.9694,-85.9426 855.7197,-77.3699 861.7074,-69.2563\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"865.9336,-63.1993 864.5114,-70.7425 863.9308,-66.0696 861.9281,-68.94 861.9281,-68.94 861.9281,-68.94 863.9308,-66.0696 859.3447,-67.1375 865.9336,-63.1993 865.9336,-63.1993\"/>\n",
"<text text-anchor=\"start\" x=\"788\" y=\"-114.2766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1 &amp; o0</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;4 -->\n",
"<g id=\"edge19\" class=\"edge\">\n",
"<title>5&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M857.0045,-50.7316C838.93,-54.4352 810.5941,-61.4422 788,-72.4766 773.0932,-79.7568 758,-90.7263 746.6176,-99.8909\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"741.0243,-104.4898 744.4307,-97.6109 743.7278,-102.267 746.4313,-100.0441 746.4313,-100.0441 746.4313,-100.0441 743.7278,-102.267 748.4319,-102.4773 741.0243,-104.4898 741.0243,-104.4898\"/>\n",
"<text text-anchor=\"start\" x=\"788\" y=\"-76.2766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1 &amp; !o0</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=\"#000000\" d=\"M864.8486,-62.6432C861.7725,-73.1407 865.1563,-83.4766 875,-83.4766 882.5366,-83.4766 886.2865,-77.4179 886.2497,-69.8667\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"885.1514,-62.6432 889.318,-69.0901 885.6776,-66.1035 886.2037,-69.5637 886.2037,-69.5637 886.2037,-69.5637 885.6776,-66.1035 883.0895,-70.0373 885.1514,-62.6432 885.1514,-62.6432\"/>\n",
"<text text-anchor=\"start\" x=\"847.5\" y=\"-87.2766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1 &amp; !o0</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;3 -->\n",
"<g id=\"edge23\" class=\"edge\">\n",
"<title>6&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M513.0226,-37.5303C501.9273,-42.6886 486.8469,-49.1944 473,-53.4766 439.2615,-63.9104 398.9987,-71.0752 373.5865,-74.9768\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"366.5157,-76.0368 372.9713,-71.8837 369.977,-75.5179 373.4383,-74.9989 373.4383,-74.9989 373.4383,-74.9989 369.977,-75.5179 373.9054,-78.1141 366.5157,-76.0368 366.5157,-76.0368\"/>\n",
"<text text-anchor=\"start\" x=\"388\" y=\"-76.2766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1 &amp; !o0</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;4 -->\n",
"<g id=\"edge21\" class=\"edge\">\n",
"<title>6&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M546.5474,-36.3609C572.6462,-46.9693 624.0043,-68.117 667,-87.4766 679.6072,-93.1533 693.5306,-99.8007 704.839,-105.2981\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"711.1653,-108.3859 703.4929,-108.1462 708.0199,-106.8507 704.8746,-105.3154 704.8746,-105.3154 704.8746,-105.3154 708.0199,-106.8507 706.2563,-102.4846 711.1653,-108.3859 711.1653,-108.3859\"/>\n",
"<text text-anchor=\"start\" x=\"586\" y=\"-91.2766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1 &amp; !o0</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;5 -->\n",
"<g id=\"edge20\" class=\"edge\">\n",
"<title>6&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M547.5891,-30.419C604.9437,-33.4071 782.87,-42.6768 849.4809,-46.1471\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"856.6731,-46.5218 849.5187,-49.3033 853.1778,-46.3397 849.6826,-46.1575 849.6826,-46.1575 849.6826,-46.1575 853.1778,-46.3397 849.8465,-43.0118 856.6731,-46.5218 856.6731,-46.5218\"/>\n",
"<text text-anchor=\"start\" x=\"685\" y=\"-46.2766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1 &amp; !o0</text>\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=\"#000000\" d=\"M515.4551,-40.9045C507.1934,-52.5333 511.875,-65.4766 529.5,-65.4766 543.958,-65.4766 549.7063,-56.7669 546.7448,-47.2177\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"543.5449,-40.9045 549.5193,-45.7242 545.1273,-44.0264 546.7096,-47.1483 546.7096,-47.1483 546.7096,-47.1483 545.1273,-44.0264 543.8999,-48.5724 543.5449,-40.9045 543.5449,-40.9045\"/>\n",
"<text text-anchor=\"start\" x=\"485.5\" y=\"-69.2766\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1 &amp; !o0</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.jupyter.SVG object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"minimization lvl 1\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.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"394pt\" height=\"218pt\"\n",
" viewBox=\"0.00 0.00 393.50 217.57\" 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 213.5676)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-213.5676 389.5,-213.5676 389.5,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"189.75\" y=\"-194.3676\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">t</text>\n",
"<text text-anchor=\"start\" x=\"181.75\" y=\"-179.3676\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[all]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-32.5676\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-28.8676\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-32.5676C4.178,-32.5676 17.9448,-32.5676 30.9241,-32.5676\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-32.5676 30.9808,-35.7177 34.4807,-32.5677 30.9807,-32.5677 30.9807,-32.5677 30.9807,-32.5677 34.4807,-32.5677 30.9807,-29.4177 37.9807,-32.5676 37.9807,-32.5676\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"183\" cy=\"-87.5676\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"183\" y=\"-83.8676\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M67.7612,-46.2287C74.2673,-52.9807 82.8712,-60.7034 92,-65.5676 112.6414,-76.5663 138.83,-82.1513 157.8077,-84.9336\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"164.9542,-85.8995 157.5953,-88.0834 161.4857,-85.4307 158.0173,-84.9618 158.0173,-84.9618 158.0173,-84.9618 161.4857,-85.4307 158.4392,-81.8402 164.9542,-85.8995 164.9542,-85.8995\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-85.3676\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</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=\"#000000\" d=\"M74.123,-32.3422C92.25,-32.8231 120.4583,-35.5332 142,-46.5676 151.567,-51.4681 160.2863,-59.4139 167.2005,-67.0118\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"172.1202,-72.698 165.158,-69.4653 169.8302,-70.0511 167.5401,-67.4043 167.5401,-67.4043 167.5401,-67.4043 169.8302,-70.0511 169.9223,-65.3432 172.1202,-72.698 172.1202,-72.698\"/>\n",
"<text text-anchor=\"start\" x=\"94\" y=\"-50.3676\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"345\" cy=\"-68.5676\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"345\" y=\"-64.8676\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</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=\"#000000\" d=\"M73.9088,-29.4848C116.3531,-22.9578 225.7429,-10.7381 309,-41.5676 315.1083,-43.8295 321.0564,-47.4819 326.3007,-51.3793\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"332.1012,-55.9982 324.663,-54.1018 329.3632,-53.8179 326.6253,-51.6377 326.6253,-51.6377 326.6253,-51.6377 329.3632,-53.8179 328.5875,-49.1735 332.1012,-55.9982 332.1012,-55.9982\"/>\n",
"<text text-anchor=\"start\" x=\"160\" y=\"-25.3676\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M72.6929,-25.5716C78.7184,-23.181 85.6095,-20.6001 92,-18.5676 140.8173,-3.0412 154.9646,2.8583 206,-1.5676 252.2978,-5.5826 269.5059,4.9237 309,-19.5676 319.3028,-25.9566 327.6067,-36.4745 333.6318,-46.131\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"337.2601,-52.3003 330.9962,-47.8634 335.4857,-49.2834 333.7114,-46.2665 333.7114,-46.2665 333.7114,-46.2665 335.4857,-49.2834 336.4266,-44.6695 337.2601,-52.3003 337.2601,-52.3003\"/>\n",
"<text text-anchor=\"start\" x=\"161.5\" y=\"-5.3676\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</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=\"#000000\" d=\"M177.1524,-104.6049C175.959,-114.4255 177.9082,-123.5676 183,-123.5676 186.8188,-123.5676 188.87,-118.4252 189.1534,-111.7109\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"188.8476,-104.6049 192.2958,-111.463 188.9981,-108.1017 189.1487,-111.5984 189.1487,-111.5984 189.1487,-111.5984 188.9981,-108.1017 186.0016,-111.7339 188.8476,-104.6049 188.8476,-104.6049\"/>\n",
"<text text-anchor=\"start\" x=\"140.5\" y=\"-127.3676\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1 &amp; !o0</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=\"#000000\" d=\"M173.8162,-103.3222C167.4993,-121.1061 170.5605,-141.5676 183,-141.5676 193.8845,-141.5676 197.5889,-125.9018 194.1131,-110.0715\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"192.1838,-103.3222 197.1364,-109.1869 193.1458,-106.6874 194.1077,-110.0526 194.1077,-110.0526 194.1077,-110.0526 193.1458,-106.6874 191.079,-110.9184 192.1838,-103.3222 192.1838,-103.3222\"/>\n",
"<text text-anchor=\"start\" x=\"139\" y=\"-145.3676\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1 &amp; !o0</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=\"#000000\" d=\"M190.4024,-104.1557C197.13,-116.9844 208.3951,-133.8226 224,-141.5676 257.8392,-158.3626 276.919,-161.5168 309,-141.5676 325.905,-131.0554 335.1062,-110.0068 339.9631,-93.2013\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"341.7884,-86.3018 343.0433,-93.8746 340.8932,-89.6854 339.998,-93.069 339.998,-93.069 339.998,-93.069 340.8932,-89.6854 336.9528,-92.2633 341.7884,-86.3018 341.7884,-86.3018\"/>\n",
"<text text-anchor=\"start\" x=\"226\" y=\"-158.3676\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1 &amp; !o0</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=\"#000000\" d=\"M199.3407,-95.5573C206.691,-98.7244 215.5899,-101.9847 224,-103.5676 261.1259,-110.5551 273.9969,-117.7784 309,-103.5676 316.7915,-100.4044 323.8229,-94.6551 329.5606,-88.7179\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"334.451,-83.2814 332.1114,-90.5924 332.1103,-85.8836 329.7695,-88.4857 329.7695,-88.4857 329.7695,-88.4857 332.1103,-85.8836 327.4276,-86.379 334.451,-83.2814 334.451,-83.2814\"/>\n",
"<text text-anchor=\"start\" x=\"224\" y=\"-115.3676\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1 &amp; !o0</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>2&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M326.9638,-70.683C297.9616,-74.0845 240.8889,-80.7782 207.9843,-84.6373\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"200.9558,-85.4617 207.5412,-81.5176 204.432,-85.0539 207.9082,-84.6462 207.9082,-84.6462 207.9082,-84.6462 204.432,-85.0539 208.2751,-87.7747 200.9558,-85.4617 200.9558,-85.4617\"/>\n",
"<text text-anchor=\"start\" x=\"226\" y=\"-85.3676\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1 &amp; o0</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=\"#000000\" d=\"M328.9431,-60.2843C322.8628,-57.5784 315.7721,-54.922 309,-53.5676 271.9558,-46.1588 259.5368,-40.7498 224,-53.5676 215.1655,-56.7541 206.8876,-62.7637 200.1153,-68.8547\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"194.8014,-73.9302 197.6877,-66.8174 197.3324,-71.5128 199.8634,-69.0953 199.8634,-69.0953 199.8634,-69.0953 197.3324,-71.5128 202.0391,-71.3732 194.8014,-73.9302 194.8014,-73.9302\"/>\n",
"<text text-anchor=\"start\" x=\"224\" y=\"-57.3676\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1 &amp; o0</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=\"#000000\" d=\"M338.1445,-85.2317C336.6211,-95.1926 338.9063,-104.5676 345,-104.5676 349.5703,-104.5676 351.9983,-99.2942 352.2839,-92.4552\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"351.8555,-85.2317 355.4145,-92.0328 352.0628,-88.7255 352.27,-92.2194 352.27,-92.2194 352.27,-92.2194 352.0628,-88.7255 349.1256,-92.4059 351.8555,-85.2317 351.8555,-85.2317\"/>\n",
"<text text-anchor=\"start\" x=\"306.5\" y=\"-108.3676\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1 &amp; o0</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>2&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M334.5026,-83.4949C326.5712,-101.4651 330.0703,-122.5676 345,-122.5676 358.0635,-122.5676 362.3754,-106.411 357.9359,-90.3332\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"355.4974,-83.4949 360.8156,-89.0303 356.673,-86.7916 357.8486,-90.0883 357.8486,-90.0883 357.8486,-90.0883 356.673,-86.7916 354.8816,-91.1463 355.4974,-83.4949 355.4974,-83.4949\"/>\n",
"<text text-anchor=\"start\" x=\"304.5\" y=\"-126.3676\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1 &amp; o0</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.jupyter.SVG object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"minimization lvl 2\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.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"265pt\" height=\"186pt\"\n",
" viewBox=\"0.00 0.00 265.00 186.13\" 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 182.1332)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-182.1332 261,-182.1332 261,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"125.5\" y=\"-162.9332\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">t</text>\n",
"<text text-anchor=\"start\" x=\"117.5\" y=\"-147.9332\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[all]</text>\n",
"<!-- I -->\n",
"<!-- 1 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-56.1332\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-52.4332\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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=\"#000000\" d=\"M1.1233,-56.1332C4.178,-56.1332 17.9448,-56.1332 30.9241,-56.1332\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-56.1332 30.9808,-59.2833 34.4807,-56.1332 30.9807,-56.1333 30.9807,-56.1333 30.9807,-56.1333 34.4807,-56.1332 30.9807,-52.9833 37.9807,-56.1332 37.9807,-56.1332\"/>\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=\"#000000\" d=\"M52.7643,-73.9149C52.2144,-83.4481 53.293,-92.1332 56,-92.1332 57.988,-92.1332 59.0977,-87.4493 59.3292,-81.1853\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"59.2357,-73.9149 62.4756,-80.8738 59.2808,-77.4146 59.3258,-80.9143 59.3258,-80.9143 59.3258,-80.9143 59.2808,-77.4146 56.1761,-80.9549 59.2357,-73.9149 59.2357,-73.9149\"/>\n",
"<text text-anchor=\"start\" x=\"17.5\" y=\"-95.9332\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1 &amp; o0</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=\"#000000\" d=\"M50.6841,-73.5535C47.6538,-90.9241 49.4258,-110.1332 56,-110.1332 61.7011,-110.1332 63.7908,-95.6877 62.2691,-80.5226\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"61.3159,-73.5535 65.3856,-80.062 61.7902,-77.0212 62.2646,-80.4889 62.2646,-80.4889 62.2646,-80.4889 61.7902,-77.0212 59.1437,-80.9158 61.3159,-73.5535 61.3159,-73.5535\"/>\n",
"<text text-anchor=\"start\" x=\"15.5\" y=\"-113.9332\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1 &amp; o0</text>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"213\" cy=\"-56.1332\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"213\" y=\"-52.4332\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</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=\"#000000\" d=\"M66.549,-70.847C72.9434,-78.4584 81.8234,-87.0016 92,-91.1332 127.0031,-105.344 141.9969,-105.344 177,-91.1332 184.7915,-87.9699 191.8229,-82.2207 197.5606,-76.2835\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"202.451,-70.847 200.1114,-78.158 200.1103,-73.4492 197.7695,-76.0513 197.7695,-76.0513 197.7695,-76.0513 200.1103,-73.4492 195.4276,-73.9446 202.451,-70.847 202.451,-70.847\"/>\n",
"<text text-anchor=\"start\" x=\"94\" y=\"-104.9332\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1 &amp; o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>1&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M74.0099,-56.1332C101.8978,-56.1332 155.63,-56.1332 187.4982,-56.1332\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"194.7165,-56.1332 187.7166,-59.2833 191.2165,-56.1332 187.7165,-56.1333 187.7165,-56.1333 187.7165,-56.1333 191.2165,-56.1332 187.7165,-52.9833 194.7165,-56.1332 194.7165,-56.1332\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-59.9332\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1 &amp; o0</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M197.4772,-46.3975C191.3404,-43.0866 184.0728,-39.8029 177,-38.1332 140.2328,-29.4536 128.7672,-29.4536 92,-38.1332 87.248,-39.255 82.408,-41.1054 77.8821,-43.2032\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"71.5228,-46.3975 76.3641,-40.4405 74.6505,-44.8264 77.7781,-43.2554 77.7781,-43.2554 77.7781,-43.2554 74.6505,-44.8264 79.192,-46.0702 71.5228,-46.3975 71.5228,-46.3975\"/>\n",
"<text text-anchor=\"start\" x=\"94\" y=\"-41.9332\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1 &amp; !o0</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=\"#000000\" d=\"M204.6812,-39.9821C198.5321,-29.9401 189.13,-17.8814 177,-12.1332 142.8614,4.0444 126.1386,4.0444 92,-12.1332 82.3339,-16.7138 74.4001,-25.3016 68.4642,-33.6829\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"64.3188,-39.9821 65.5356,-32.403 66.2429,-37.0584 68.1669,-34.1346 68.1669,-34.1346 68.1669,-34.1346 66.2429,-37.0584 70.7983,-35.8663 64.3188,-39.9821 64.3188,-39.9821\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-15.9332\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1 &amp; !o0</text>\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=\"#000000\" d=\"M206.1445,-72.7973C204.6211,-82.7582 206.9063,-92.1332 213,-92.1332 217.5703,-92.1332 219.9983,-86.8598 220.2839,-80.0208\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"219.8555,-72.7973 223.4145,-79.5984 220.0628,-76.2911 220.27,-79.785 220.27,-79.785 220.27,-79.785 220.0628,-76.2911 217.1256,-79.9715 219.8555,-72.7973 219.8555,-72.7973\"/>\n",
"<text text-anchor=\"start\" x=\"170.5\" y=\"-95.9332\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1 &amp; !o0</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M202.5026,-71.0605C194.5712,-89.0306 198.0703,-110.1332 213,-110.1332 226.0635,-110.1332 230.3754,-93.9766 225.9359,-77.8988\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"223.4974,-71.0605 228.8156,-76.5958 224.673,-74.3572 225.8486,-77.6539 225.8486,-77.6539 225.8486,-77.6539 224.673,-74.3572 222.8816,-78.7119 223.4974,-71.0605 223.4974,-71.0605\"/>\n",
"<text text-anchor=\"start\" x=\"169\" y=\"-113.9332\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1 &amp; !o0</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.jupyter.SVG object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"minimization lvl 3\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.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"215pt\" height=\"120pt\"\n",
" viewBox=\"0.00 0.00 214.50 120.09\" 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 116.0873)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-116.0873 210.5,-116.0873 210.5,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"100.25\" y=\"-96.8873\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">t</text>\n",
"<text text-anchor=\"start\" x=\"92.25\" y=\"-81.8873\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[all]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-23.0873\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-19.3873\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-23.0873C4.178,-23.0873 17.9448,-23.0873 30.9241,-23.0873\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-23.0873 30.9808,-26.2374 34.4807,-23.0874 30.9807,-23.0874 30.9807,-23.0874 30.9807,-23.0874 34.4807,-23.0874 30.9807,-19.9374 37.9807,-23.0873 37.9807,-23.0873\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M49.6208,-40.1247C48.3189,-49.9453 50.4453,-59.0873 56,-59.0873 60.166,-59.0873 62.4036,-53.9449 62.7128,-47.2306\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"62.3792,-40.1247 65.8541,-46.9692 62.5434,-43.6208 62.7076,-47.117 62.7076,-47.117 62.7076,-47.117 62.5434,-43.6208 59.561,-47.2647 62.3792,-40.1247 62.3792,-40.1247\"/>\n",
"<text text-anchor=\"start\" x=\"32.5\" y=\"-62.8873\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1 &amp; o0</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"179\" cy=\"-23.0873\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"179\" y=\"-19.3873\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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=\"#000000\" d=\"M74.1491,-23.0873C95.1332,-23.0873 129.8175,-23.0873 153.5039,-23.0873\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"160.7765,-23.0873 153.7765,-26.2374 157.2765,-23.0874 153.7765,-23.0874 153.7765,-23.0874 153.7765,-23.0874 157.2765,-23.0874 153.7764,-19.9374 160.7765,-23.0873 160.7765,-23.0873\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-26.8873\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1 &amp; o0</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=\"#000000\" d=\"M163.8943,-13.0173C157.6932,-9.4555 150.2713,-5.8884 143,-4.0873 120.9982,1.3624 114.0018,1.3624 92,-4.0873 87.1146,-5.2975 82.1612,-7.3048 77.5558,-9.572\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"71.1057,-13.0173 75.7959,-6.9408 74.1929,-11.3683 77.2801,-9.7192 77.2801,-9.7192 77.2801,-9.7192 74.1929,-11.3683 78.7642,-12.4977 71.1057,-13.0173 71.1057,-13.0173\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-7.8873\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1 &amp; !o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M168.8486,-38.254C165.7725,-48.7514 169.1563,-59.0873 179,-59.0873 186.5366,-59.0873 190.2865,-53.0286 190.2497,-45.4774\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"189.1514,-38.254 193.318,-44.7009 189.6776,-41.7142 190.2037,-45.1744 190.2037,-45.1744 190.2037,-45.1744 189.6776,-41.7142 187.0895,-45.648 189.1514,-38.254 189.1514,-38.254\"/>\n",
"<text text-anchor=\"start\" x=\"151.5\" y=\"-62.8873\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1 &amp; !o0</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.jupyter.SVG object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"minimization lvl 4\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.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"211pt\" height=\"120pt\"\n",
" viewBox=\"0.00 0.00 210.50 120.09\" 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 116.0873)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-116.0873 206.5,-116.0873 206.5,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"98.25\" y=\"-96.8873\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">t</text>\n",
"<text text-anchor=\"start\" x=\"90.25\" y=\"-81.8873\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[all]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-23.0873\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-19.3873\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-23.0873C4.178,-23.0873 17.9448,-23.0873 30.9241,-23.0873\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-23.0873 30.9808,-26.2374 34.4807,-23.0874 30.9807,-23.0874 30.9807,-23.0874 30.9807,-23.0874 34.4807,-23.0874 30.9807,-19.9374 37.9807,-23.0873 37.9807,-23.0873\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M49.6208,-40.1247C48.3189,-49.9453 50.4453,-59.0873 56,-59.0873 60.166,-59.0873 62.4036,-53.9449 62.7128,-47.2306\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"62.3792,-40.1247 65.8541,-46.9692 62.5434,-43.6208 62.7076,-47.117 62.7076,-47.117 62.7076,-47.117 62.5434,-43.6208 59.561,-47.2647 62.3792,-40.1247 62.3792,-40.1247\"/>\n",
"<text text-anchor=\"start\" x=\"28.5\" y=\"-62.8873\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1 &amp; !o0</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"179\" cy=\"-23.0873\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"179\" y=\"-19.3873\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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=\"#000000\" d=\"M74.1491,-23.0873C95.1332,-23.0873 129.8175,-23.0873 153.5039,-23.0873\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"160.7765,-23.0873 153.7765,-26.2374 157.2765,-23.0874 153.7765,-23.0874 153.7765,-23.0874 153.7765,-23.0874 157.2765,-23.0874 153.7764,-19.9374 160.7765,-23.0873 160.7765,-23.0873\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-26.8873\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1 &amp; !o0</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=\"#000000\" d=\"M163.8943,-13.0173C157.6932,-9.4555 150.2713,-5.8884 143,-4.0873 120.9982,1.3624 114.0018,1.3624 92,-4.0873 87.1146,-5.2975 82.1612,-7.3048 77.5558,-9.572\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"71.1057,-13.0173 75.7959,-6.9408 74.1929,-11.3683 77.2801,-9.7192 77.2801,-9.7192 77.2801,-9.7192 74.1929,-11.3683 78.7642,-12.4977 71.1057,-13.0173 71.1057,-13.0173\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-7.8873\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1 &amp; o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M168.8486,-38.254C165.7725,-48.7514 169.1563,-59.0873 179,-59.0873 186.5366,-59.0873 190.2865,-53.0286 190.2497,-45.4774\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"189.1514,-38.254 193.318,-44.7009 189.6776,-41.7142 190.2037,-45.1744 190.2037,-45.1744 190.2037,-45.1744 189.6776,-41.7142 187.0895,-45.648 189.1514,-38.254 189.1514,-38.254\"/>\n",
"<text text-anchor=\"start\" x=\"155.5\" y=\"-62.8873\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1 &amp; o0</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.jupyter.SVG object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"minimization lvl 5\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.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"215pt\" height=\"120pt\"\n",
" viewBox=\"0.00 0.00 214.50 120.09\" 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 116.0873)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-116.0873 210.5,-116.0873 210.5,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"100.25\" y=\"-96.8873\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">t</text>\n",
"<text text-anchor=\"start\" x=\"92.25\" y=\"-81.8873\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[all]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-23.0873\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-19.3873\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-23.0873C4.178,-23.0873 17.9448,-23.0873 30.9241,-23.0873\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-23.0873 30.9808,-26.2374 34.4807,-23.0874 30.9807,-23.0874 30.9807,-23.0874 30.9807,-23.0874 34.4807,-23.0874 30.9807,-19.9374 37.9807,-23.0873 37.9807,-23.0873\"/>\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=\"#000000\" d=\"M49.6208,-40.1247C48.3189,-49.9453 50.4453,-59.0873 56,-59.0873 60.166,-59.0873 62.4036,-53.9449 62.7128,-47.2306\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"62.3792,-40.1247 65.8541,-46.9692 62.5434,-43.6208 62.7076,-47.117 62.7076,-47.117 62.7076,-47.117 62.5434,-43.6208 59.561,-47.2647 62.3792,-40.1247 62.3792,-40.1247\"/>\n",
"<text text-anchor=\"start\" x=\"32.5\" y=\"-62.8873\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1 &amp; o0</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"179\" cy=\"-23.0873\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"179\" y=\"-19.3873\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M74.1491,-23.0873C95.1332,-23.0873 129.8175,-23.0873 153.5039,-23.0873\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"160.7765,-23.0873 153.7765,-26.2374 157.2765,-23.0874 153.7765,-23.0874 153.7765,-23.0874 153.7765,-23.0874 157.2765,-23.0874 153.7764,-19.9374 160.7765,-23.0873 160.7765,-23.0873\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-26.8873\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1 &amp; o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>1&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M163.8943,-13.0173C157.6932,-9.4555 150.2713,-5.8884 143,-4.0873 120.9982,1.3624 114.0018,1.3624 92,-4.0873 87.1146,-5.2975 82.1612,-7.3048 77.5558,-9.572\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"71.1057,-13.0173 75.7959,-6.9408 74.1929,-11.3683 77.2801,-9.7192 77.2801,-9.7192 77.2801,-9.7192 74.1929,-11.3683 78.7642,-12.4977 71.1057,-13.0173 71.1057,-13.0173\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-7.8873\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1 &amp; !o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M168.8486,-38.254C165.7725,-48.7514 169.1563,-59.0873 179,-59.0873 186.5366,-59.0873 190.2865,-53.0286 190.2497,-45.4774\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"189.1514,-38.254 193.318,-44.7009 189.6776,-41.7142 190.2037,-45.1744 190.2037,-45.1744 190.2037,-45.1744 189.6776,-41.7142 187.0895,-45.648 189.1514,-38.254 189.1514,-38.254\"/>\n",
"<text text-anchor=\"start\" x=\"151.5\" y=\"-62.8873\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1 &amp; !o0</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.jupyter.SVG object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Create the strategy\n",
"# We have different strategies for minimization:\n",
"# 0 : No minimizaiton\n",
"# 1 : DFA minimization\n",
"# 2 : Inclusion based minimization with output assignement\n",
"# 3 : SAT based exact minimization\n",
"# 4 : First 1 then 3 (exact)\n",
"# 5 : First 2 then 3 (not exact)\n",
"for i in range(6):\n",
" print(\"minimization lvl \", i)\n",
" gi.minimize_lvl = i #Use inclusion with output assignement to minimize the strategy\n",
" strat = spot.create_strategy(game, gi)\n",
" display(strat.show())"
]
},
{
"cell_type": "code",
"execution_count": 11,
"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.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"729pt\" height=\"239pt\"\n",
" viewBox=\"0.00 0.00 729.00 238.99\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(0.5196 0.5196) rotate(0) translate(4 456)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-456 1399.1338,-456 1399.1338,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"694.5669\" y=\"-436.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">t</text>\n",
"<text text-anchor=\"start\" x=\"686.5669\" y=\"-421.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[all]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-234\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-230.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-234C4.178,-234 17.9448,-234 30.9241,-234\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-234 30.9808,-237.1501 34.4807,-234 30.9807,-234.0001 30.9807,-234.0001 30.9807,-234.0001 34.4807,-234 30.9807,-230.8501 37.9807,-234 37.9807,-234\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"182.9789,-295 160.021,-277 182.9789,-259 205.9368,-277 182.9789,-295\"/>\n",
"<text text-anchor=\"middle\" x=\"182.9789\" y=\"-273.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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=\"#000000\" d=\"M73.1249,-239.7992C95.6483,-247.4265 135.2891,-260.8504 160.2886,-269.3162\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"166.9251,-271.5636 159.2846,-272.3018 163.61,-270.4409 160.295,-269.3183 160.295,-269.3183 160.295,-269.3183 163.61,-270.4409 161.3053,-266.3347 166.9251,-271.5636 166.9251,-271.5636\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-266.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"246.9368,-361 223.9789,-343 246.9368,-325 269.8947,-343 246.9368,-361\"/>\n",
"<text text-anchor=\"middle\" x=\"246.9368\" y=\"-339.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">4</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;4 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M64.8873,-250.0927C71.2764,-260.403 80.7323,-273.4132 92,-282 131.9734,-312.4626 189.1092,-329.6829 221.6619,-337.5978\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"228.6079,-339.2356 221.0718,-340.6949 225.2013,-338.4323 221.7948,-337.629 221.7948,-337.629 221.7948,-337.629 225.2013,-338.4323 222.5177,-334.5631 228.6079,-339.2356 228.6079,-339.2356\"/>\n",
"<text text-anchor=\"start\" x=\"94\" y=\"-312.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>6</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"246.9368,-207 223.9789,-189 246.9368,-171 269.8947,-189 246.9368,-207\"/>\n",
"<text text-anchor=\"middle\" x=\"246.9368\" y=\"-185.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">6</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;6 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>0&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M73.6206,-229.8472C107.7767,-221.7973 183.0681,-204.0526 222.2111,-194.8274\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"229.0812,-193.2082 222.9905,-197.8801 225.6745,-194.0111 222.2678,-194.8141 222.2678,-194.8141 222.2678,-194.8141 225.6745,-194.0111 221.5452,-191.7481 229.0812,-193.2082 229.0812,-193.2082\"/>\n",
"<text text-anchor=\"start\" x=\"94\" y=\"-228.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>8</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"366.9157,-86 343.9578,-68 366.9157,-50 389.8736,-68 366.9157,-86\"/>\n",
"<text text-anchor=\"middle\" x=\"366.9157\" y=\"-64.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">8</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=\"#000000\" d=\"M70.8252,-223.5779C77.233,-219.2151 84.8809,-214.1941 92,-210 184.1999,-155.6821 299.3722,-99.9171 345.9388,-77.8465\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"352.3006,-74.8388 347.3185,-80.6785 349.1364,-76.3348 345.9721,-77.8307 345.9721,-77.8307 345.9721,-77.8307 349.1364,-76.3348 344.6258,-74.9829 352.3006,-74.8388 352.3006,-74.8388\"/>\n",
"<text text-anchor=\"start\" x=\"161.4789\" y=\"-173.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"305.9157\" cy=\"-302\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"305.9157\" y=\"-298.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>2&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M201.3838,-280.7428C222.63,-285.0633 257.67,-292.1889 281.2591,-296.9859\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"288.1843,-298.3942 280.6969,-300.086 284.7545,-297.6967 281.3247,-296.9992 281.3247,-296.9992 281.3247,-296.9992 284.7545,-297.6967 281.9524,-293.9123 288.1843,-298.3942 288.1843,-298.3942\"/>\n",
"<text text-anchor=\"middle\" x=\"246.9368\" y=\"-297.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"545.5801\" cy=\"-364\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"545.5801\" y=\"-360.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;3 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>4&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M260.3722,-350.7724C294.8557,-369.7903 389.4808,-416.1153 470.5801,-402 488.7237,-398.8421 493.1302,-396.2801 509.5801,-388 514.7695,-385.3879 520.1093,-382.1635 525.0348,-378.9351\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"531.0099,-374.8896 526.9796,-381.4226 528.1117,-376.8519 525.2135,-378.8142 525.2135,-378.8142 525.2135,-378.8142 528.1117,-376.8519 523.4474,-376.2058 531.0099,-374.8896 531.0099,-374.8896\"/>\n",
"<text text-anchor=\"middle\" x=\"366.9157\" y=\"-402.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>5</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"545.5801\" cy=\"-161\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"545.5801\" y=\"-157.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">5</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;5 -->\n",
"<g id=\"edge18\" class=\"edge\">\n",
"<title>6&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M267.4638,-187.0754C320.5598,-182.0973 462.3174,-168.8065 520.3145,-163.3688\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"527.6042,-162.6854 520.9288,-166.4751 524.1195,-163.0121 520.6347,-163.3389 520.6347,-163.3389 520.6347,-163.3389 524.1195,-163.0121 520.3407,-160.2027 527.6042,-162.6854 527.6042,-162.6854\"/>\n",
"<text text-anchor=\"middle\" x=\"366.9157\" y=\"-182.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node18\" class=\"node\">\n",
"<title>7</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"1027.8051\" cy=\"-56\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1027.8051\" y=\"-52.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">7</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;7 -->\n",
"<g id=\"edge21\" class=\"edge\">\n",
"<title>8&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M378.5457,-58.9375C400.6825,-42.625 450.9698,-10 499.0801,-10 499.0801,-10 499.0801,-10 922.4729,-10 954.1196,-10 986.9809,-27.6543 1007.4063,-41.0889\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1013.3308,-45.0986 1005.7681,-43.7839 1010.4322,-43.1369 1007.5337,-41.1751 1007.5337,-41.1751 1007.5337,-41.1751 1010.4322,-43.1369 1009.2992,-38.5664 1013.3308,-45.0986 1013.3308,-45.0986\"/>\n",
"<text text-anchor=\"middle\" x=\"679.9123\" y=\"-13.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 13 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>13</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"922.4729,-220 892.3076,-202 922.4729,-184 952.6382,-202 922.4729,-220\"/>\n",
"<text text-anchor=\"middle\" x=\"922.4729\" y=\"-198.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">13</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;13 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>1&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M323.6427,-297.8404C357.5214,-290.2667 433.8967,-275 499.0801,-275 499.0801,-275 499.0801,-275 784.6926,-275 832.8099,-275 880.5322,-239.8065 905.2106,-218.2918\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"910.69,-213.4063 907.5615,-220.416 908.0776,-215.7355 905.4652,-218.0648 905.4652,-218.0648 905.4652,-218.0648 908.0776,-215.7355 903.3688,-215.7137 910.69,-213.4063 910.69,-213.4063\"/>\n",
"<text text-anchor=\"start\" x=\"585.0801\" y=\"-278.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 18 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>18</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"440.2479,-247 410.0826,-229 440.2479,-211 470.4132,-229 440.2479,-247\"/>\n",
"<text text-anchor=\"middle\" x=\"440.2479\" y=\"-225.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">18</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;18 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>1&#45;&gt;18</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M312.1328,-284.9615C317.8256,-271.8775 327.5657,-254.492 341.9157,-245 360.4168,-232.7623 385.0598,-228.7705 405.0475,-227.8341\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"412.1808,-227.6177 405.2795,-230.9786 408.6824,-227.7239 405.184,-227.83 405.184,-227.83 405.184,-227.83 408.6824,-227.7239 405.0884,-224.6815 412.1808,-227.6177 412.1808,-227.6177\"/>\n",
"<text text-anchor=\"start\" x=\"343.9157\" y=\"-248.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 19 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>19</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"440.2479,-393 410.0826,-375 440.2479,-357 470.4132,-375 440.2479,-393\"/>\n",
"<text text-anchor=\"middle\" x=\"440.2479\" y=\"-371.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">19</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;19 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>1&#45;&gt;19</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M315.143,-317.4714C321.5491,-326.974 330.8961,-338.6866 341.9157,-346 361.8142,-359.2061 387.8675,-366.5354 408.1572,-370.5205\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"415.074,-371.7948 407.6191,-373.6243 411.6319,-371.1606 408.1898,-370.5265 408.1898,-370.5265 408.1898,-370.5265 411.6319,-371.1606 408.7606,-367.4286 415.074,-371.7948 415.074,-371.7948\"/>\n",
"<text text-anchor=\"start\" x=\"343.9157\" y=\"-369.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 20 -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>20</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"440.2479,-339 410.0826,-321 440.2479,-303 470.4132,-321 440.2479,-339\"/>\n",
"<text text-anchor=\"middle\" x=\"440.2479\" y=\"-317.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">20</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;20 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>1&#45;&gt;20</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M324.1553,-302.2538C341.6462,-302.7366 368.7416,-304.1125 391.9157,-308 398.8383,-309.1613 406.2045,-310.8841 413.0452,-312.6985\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"420.2159,-314.6809 412.6296,-315.8517 416.8425,-313.7482 413.469,-312.8156 413.469,-312.8156 413.469,-312.8156 416.8425,-313.7482 414.3084,-309.7795 420.2159,-314.6809 420.2159,-314.6809\"/>\n",
"<text text-anchor=\"start\" x=\"341.9157\" y=\"-311.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 13&#45;&gt;7 -->\n",
"<g id=\"edge27\" class=\"edge\">\n",
"<title>13&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M934.6075,-191.1585C940.418,-185.6862 947.2931,-178.7825 952.8051,-172 977.6573,-141.4194 1001.5051,-102.3055 1015.3991,-78.2114\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1018.879,-72.1288 1018.1371,-79.769 1017.141,-75.1667 1015.4029,-78.2047 1015.4029,-78.2047 1015.4029,-78.2047 1017.141,-75.1667 1012.6687,-76.6404 1018.879,-72.1288 1018.879,-72.1288\"/>\n",
"<text text-anchor=\"start\" x=\"970.8051\" y=\"-150.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 18&#45;&gt;5 -->\n",
"<g id=\"edge35\" class=\"edge\">\n",
"<title>18&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M454.8939,-219.5449C472.9264,-207.9035 503.6919,-188.042 524.324,-174.7225\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"530.3764,-170.8152 526.2039,-177.2583 527.4359,-172.7135 524.4954,-174.6118 524.4954,-174.6118 524.4954,-174.6118 527.4359,-172.7135 522.7869,-171.9654 530.3764,-170.8152 530.3764,-170.8152\"/>\n",
"<text text-anchor=\"start\" x=\"488.5801\" y=\"-200.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 19&#45;&gt;3 -->\n",
"<g id=\"edge36\" class=\"edge\">\n",
"<title>19&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M453.8128,-364.9352C463.0802,-358.708 475.9302,-351.2938 488.5801,-348 500.0032,-345.0257 512.6485,-347.9399 523.1206,-352.058\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"529.6537,-354.8883 521.9783,-354.996 526.4421,-353.497 523.2305,-352.1056 523.2305,-352.1056 523.2305,-352.1056 526.4421,-353.497 524.4827,-349.2152 529.6537,-354.8883 529.6537,-354.8883\"/>\n",
"<text text-anchor=\"start\" x=\"488.5801\" y=\"-351.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 20&#45;&gt;1 -->\n",
"<g id=\"edge37\" class=\"edge\">\n",
"<title>20&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M416.7525,-325.1294C396.5445,-327.824 366.8056,-329.7289 341.9157,-323 336.7294,-321.5979 331.5232,-319.2425 326.7448,-316.6049\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"320.5362,-312.896 328.1611,-313.7816 323.5409,-314.6909 326.5456,-316.4859 326.5456,-316.4859 326.5456,-316.4859 323.5409,-314.6909 324.9302,-319.1901 320.5362,-312.896 320.5362,-312.896\"/>\n",
"<text text-anchor=\"start\" x=\"356.4157\" y=\"-330.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;13 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>3&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M563.6944,-364.7429C616.9848,-365.9969 775.6532,-362.9525 874.1407,-289 895.6465,-272.8517 908.8679,-244.1788 915.9289,-224.1808\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"918.1729,-217.5038 918.9287,-225.1426 917.0579,-220.8214 915.9428,-224.1391 915.9428,-224.1391 915.9428,-224.1391 917.0579,-220.8214 912.9569,-223.1355 918.1729,-217.5038 918.1729,-217.5038\"/>\n",
"<text text-anchor=\"start\" x=\"730.2445\" y=\"-352.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;19 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>3&#45;&gt;19</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M527.6663,-365.8708C512.7165,-367.432 491.0187,-369.6979 472.9806,-371.5817\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"466.0151,-372.3091 472.65,-368.449 469.4961,-371.9455 472.9772,-371.5819 472.9772,-371.5819 472.9772,-371.5819 469.4961,-371.9455 473.3044,-374.7149 466.0151,-372.3091 466.0151,-372.3091\"/>\n",
"<text text-anchor=\"start\" x=\"491.0801\" y=\"-372.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node14\" class=\"node\">\n",
"<title>10</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"1158.1372,-142 1127.9719,-124 1158.1372,-106 1188.3025,-124 1158.1372,-142\"/>\n",
"<text text-anchor=\"middle\" x=\"1158.1372\" y=\"-120.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">10</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;10 -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>5&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M553.8736,-144.4326C560.012,-134.0684 569.4116,-121.4917 581.5801,-115 608.3171,-100.7363 619.2967,-111.1119 649.5801,-110 828.2214,-103.4412 1042.2644,-116.0036 1124.0752,-121.5525\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1131.1167,-122.035 1123.9177,-124.699 1127.6249,-121.7957 1124.1331,-121.5564 1124.1331,-121.5564 1124.1331,-121.5564 1127.6249,-121.7957 1124.3485,-118.4137 1131.1167,-122.035 1131.1167,-122.035\"/>\n",
"<text text-anchor=\"start\" x=\"826.1407\" y=\"-113.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 11 -->\n",
"<g id=\"node15\" class=\"node\">\n",
"<title>11</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"1158.1372,-36 1127.9719,-18 1158.1372,0 1188.3025,-18 1158.1372,-36\"/>\n",
"<text text-anchor=\"middle\" x=\"1158.1372\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">11</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;11 -->\n",
"<g id=\"edge15\" class=\"edge\">\n",
"<title>5&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M551.9051,-144.1211C557.659,-131.1274 567.4286,-113.7855 581.5801,-104 671.5597,-41.7812 954.9692,-16.0566 1063.8051,-5 1084.1448,-2.9337 1089.5368,-2.3218 1109.8051,-5 1117.0411,-5.9562 1124.7322,-7.6845 1131.8007,-9.5753\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1138.6217,-11.4977 1131.0297,-12.6307 1135.253,-10.5483 1131.8842,-9.5988 1131.8842,-9.5988 1131.8842,-9.5988 1135.253,-10.5483 1132.7387,-6.5669 1138.6217,-11.4977 1138.6217,-11.4977\"/>\n",
"<text text-anchor=\"start\" x=\"827.6407\" y=\"-37.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 15 -->\n",
"<g id=\"node16\" class=\"node\">\n",
"<title>15</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"679.9123,-155 649.747,-137 679.9123,-119 710.0776,-137 679.9123,-155\"/>\n",
"<text text-anchor=\"middle\" x=\"679.9123\" y=\"-133.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">15</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;15 -->\n",
"<g id=\"edge16\" class=\"edge\">\n",
"<title>5&#45;&gt;15</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M555.6538,-145.8469C562.0117,-137.7126 571.0117,-128.4626 581.5801,-124 605.2785,-113.9931 634.8031,-120.0919 655.2844,-126.9072\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"662.1273,-129.3225 654.478,-129.963 658.8269,-128.1575 655.5265,-126.9926 655.5265,-126.9926 655.5265,-126.9926 658.8269,-128.1575 656.5749,-124.0222 662.1273,-129.3225 662.1273,-129.3225\"/>\n",
"<text text-anchor=\"start\" x=\"581.5801\" y=\"-127.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 16 -->\n",
"<g id=\"node17\" class=\"node\">\n",
"<title>16</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"679.9123,-209 649.747,-191 679.9123,-173 710.0776,-191 679.9123,-209\"/>\n",
"<text text-anchor=\"middle\" x=\"679.9123\" y=\"-187.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">16</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;16 -->\n",
"<g id=\"edge17\" class=\"edge\">\n",
"<title>5&#45;&gt;16</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M561.71,-169.3122C567.7982,-172.1418 574.8752,-175.0732 581.5801,-177 602.4478,-182.9966 626.5763,-186.4812 645.7095,-188.4742\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"652.7808,-189.1671 645.5069,-191.6193 649.2974,-188.8257 645.8141,-188.4843 645.8141,-188.4843 645.8141,-188.4843 649.2974,-188.8257 646.1214,-185.3493 652.7808,-189.1671 652.7808,-189.1671\"/>\n",
"<text text-anchor=\"start\" x=\"583.5801\" y=\"-189.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 9 -->\n",
"<g id=\"node19\" class=\"node\">\n",
"<title>9</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"1259.4694\" cy=\"-185\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1259.4694\" y=\"-181.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">9</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;9 -->\n",
"<g id=\"edge24\" class=\"edge\">\n",
"<title>10&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1173.8218,-132.8786C1187.124,-140.4667 1206.6659,-151.7515 1223.4694,-162 1228.2777,-164.9326 1233.4011,-168.1492 1238.2295,-171.2232\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1244.1419,-175.0086 1236.5481,-173.887 1241.1942,-173.1214 1238.2466,-171.2341 1238.2466,-171.2341 1238.2466,-171.2341 1241.1942,-173.1214 1239.9452,-168.5813 1244.1419,-175.0086 1244.1419,-175.0086\"/>\n",
"<text text-anchor=\"start\" x=\"1206.4694\" y=\"-165.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;7 -->\n",
"<g id=\"edge25\" class=\"edge\">\n",
"<title>11&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1137.2403,-12.2409C1117.4104,-7.9223 1087.2403,-4.3902 1063.8051,-15 1054.728,-19.1094 1047.0324,-26.7638 1041.1155,-34.3562\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1036.9441,-40.0904 1038.5148,-32.5767 1039.0031,-37.2601 1041.0621,-34.4297 1041.0621,-34.4297 1041.0621,-34.4297 1039.0031,-37.2601 1043.6094,-36.2828 1036.9441,-40.0904 1036.9441,-40.0904\"/>\n",
"<text text-anchor=\"start\" x=\"1078.3051\" y=\"-18.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 14 -->\n",
"<g id=\"node21\" class=\"node\">\n",
"<title>14</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"784.6926\" cy=\"-210\" rx=\"21.3963\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"784.6926\" y=\"-206.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">14</text>\n",
"</g>\n",
"<!-- 15&#45;&gt;14 -->\n",
"<g id=\"edge32\" class=\"edge\">\n",
"<title>15&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M694.0434,-146.8451C711.533,-159.03 741.5303,-179.929 762.198,-194.3281\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"768.0247,-198.3876 760.4805,-196.9706 765.1529,-196.3868 762.2812,-194.386 762.2812,-194.386 762.2812,-194.386 765.1529,-196.3868 764.0818,-191.8014 768.0247,-198.3876 768.0247,-198.3876\"/>\n",
"<text text-anchor=\"start\" x=\"728.2445\" y=\"-185.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 16&#45;&gt;5 -->\n",
"<g id=\"edge33\" class=\"edge\">\n",
"<title>16&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M667.8961,-179.7289C658.7284,-171.945 645.3654,-162.2573 631.5801,-158 611.5959,-151.8283 587.7492,-153.3041 570.2413,-155.9088\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"563.1558,-157.0752 569.5512,-152.8299 566.6093,-156.5066 570.0628,-155.9381 570.0628,-155.9381 570.0628,-155.9381 566.6093,-156.5066 570.5745,-159.0462 563.1558,-157.0752 563.1558,-157.0752\"/>\n",
"<text text-anchor=\"start\" x=\"598.0801\" y=\"-161.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;10 -->\n",
"<g id=\"edge19\" class=\"edge\">\n",
"<title>7&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1044.3726,-63.3115C1061.1022,-70.8263 1087.5762,-83.0808 1109.8051,-95 1118.8765,-99.8641 1128.6531,-105.6271 1137.0239,-110.729\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1143.1161,-114.4758 1135.5033,-113.4918 1140.1348,-112.6422 1137.1535,-110.8087 1137.1535,-110.8087 1137.1535,-110.8087 1140.1348,-112.6422 1138.8037,-108.1255 1143.1161,-114.4758 1143.1161,-114.4758\"/>\n",
"<text text-anchor=\"start\" x=\"1078.8051\" y=\"-98.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;11 -->\n",
"<g id=\"edge20\" class=\"edge\">\n",
"<title>7&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1045.4831,-51.5708C1062.1462,-47.3218 1087.7774,-40.595 1109.8051,-34 1117.0447,-31.8325 1124.8398,-29.328 1132.0117,-26.9535\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1138.9322,-24.6396 1133.2923,-29.8468 1135.6128,-25.7495 1132.2934,-26.8594 1132.2934,-26.8594 1132.2934,-26.8594 1135.6128,-25.7495 1131.2945,-23.872 1138.9322,-24.6396 1138.9322,-24.6396\"/>\n",
"<text text-anchor=\"start\" x=\"1080.3051\" y=\"-50.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;13 -->\n",
"<g id=\"edge23\" class=\"edge\">\n",
"<title>9&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1241.138,-185.9247C1187.2838,-188.6414 1028.8825,-196.6321 957.7555,-200.2201\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"950.3374,-200.5944 957.1698,-197.0956 953.833,-200.418 957.3285,-200.2416 957.3285,-200.2416 957.3285,-200.2416 953.833,-200.418 957.4873,-203.3876 950.3374,-200.5944 950.3374,-200.5944\"/>\n",
"<text text-anchor=\"start\" x=\"1080.3051\" y=\"-197.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"</g>\n",
"<!-- 12 -->\n",
"<g id=\"node20\" class=\"node\">\n",
"<title>12</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"1364.8016,-236 1334.6363,-218 1364.8016,-200 1394.9669,-218 1364.8016,-236\"/>\n",
"<text text-anchor=\"middle\" x=\"1364.8016\" y=\"-214.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">12</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;12 -->\n",
"<g id=\"edge22\" class=\"edge\">\n",
"<title>9&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1276.8629,-190.4493C1293.5161,-195.6666 1318.8773,-203.6122 1338.0921,-209.632\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1344.8656,-211.7542 1337.244,-212.6673 1341.5257,-210.7077 1338.1858,-209.6613 1338.1858,-209.6613 1338.1858,-209.6613 1341.5257,-210.7077 1339.1275,-206.6554 1344.8656,-211.7542 1344.8656,-211.7542\"/>\n",
"<text text-anchor=\"start\" x=\"1297.9694\" y=\"-205.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;9 -->\n",
"<g id=\"edge26\" class=\"edge\">\n",
"<title>12&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1354.774,-205.658C1345.8944,-195.7856 1331.964,-182.6867 1316.4694,-177 1305.951,-173.1396 1293.712,-174.1955 1283.2773,-176.6017\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1276.3849,-178.4394 1282.337,-173.5922 1279.7668,-177.5376 1283.1486,-176.6359 1283.1486,-176.6359 1283.1486,-176.6359 1279.7668,-177.5376 1283.9602,-179.6796 1276.3849,-178.4394 1276.3849,-178.4394\"/>\n",
"<text text-anchor=\"start\" x=\"1295.4694\" y=\"-180.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 14&#45;&gt;13 -->\n",
"<g id=\"edge29\" class=\"edge\">\n",
"<title>14&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M806.2208,-208.75C828.0819,-207.4807 862.2759,-205.4952 887.9301,-204.0057\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"894.9221,-203.5997 888.1165,-207.1503 891.428,-203.8026 887.9339,-204.0055 887.9339,-204.0055 887.9339,-204.0055 891.428,-203.8026 887.7512,-200.8608 894.9221,-203.5997 894.9221,-203.5997\"/>\n",
"<text text-anchor=\"start\" x=\"827.6407\" y=\"-210.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 14&#45;&gt;18 -->\n",
"<g id=\"edge31\" class=\"edge\">\n",
"<title>14&#45;&gt;18</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M763.2249,-212.6882C748.3708,-214.4546 728.1348,-216.6758 710.2445,-218 626.9095,-224.1682 528.8302,-227.0782 476.8688,-228.2779\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"469.8493,-228.436 476.7765,-225.1291 473.3484,-228.3571 476.8475,-228.2783 476.8475,-228.2783 476.8475,-228.2783 473.3484,-228.3571 476.9185,-231.4275 469.8493,-228.436 469.8493,-228.436\"/>\n",
"<text text-anchor=\"start\" x=\"583.5801\" y=\"-227.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 14&#45;&gt;12 -->\n",
"<g id=\"edge28\" class=\"edge\">\n",
"<title>14&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M803.8541,-218.8135C830.0555,-230.0391 878.8015,-248 922.4729,-248 922.4729,-248 922.4729,-248 1259.4694,-248 1288.3396,-248 1320.0171,-237.4466 1341.0158,-228.8585\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1347.7083,-226.0394 1342.4801,-231.6599 1344.4828,-227.3982 1341.2572,-228.7569 1341.2572,-228.7569 1341.2572,-228.7569 1344.4828,-227.3982 1340.0344,-225.8539 1347.7083,-226.0394 1347.7083,-226.0394\"/>\n",
"<text text-anchor=\"start\" x=\"1063.8051\" y=\"-251.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 17 -->\n",
"<g id=\"node22\" class=\"node\">\n",
"<title>17</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"922.4729,-163 892.3076,-145 922.4729,-127 952.6382,-145 922.4729,-163\"/>\n",
"<text text-anchor=\"middle\" x=\"922.4729\" y=\"-141.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">17</text>\n",
"</g>\n",
"<!-- 14&#45;&gt;17 -->\n",
"<g id=\"edge30\" class=\"edge\">\n",
"<title>14&#45;&gt;17</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M788.7281,-192.2098C793.7532,-174.6891 804.2201,-148.8783 824.1407,-137 846.3454,-123.7597 876.5493,-128.9134 897.6008,-135.3736\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"904.3644,-137.5898 896.7315,-138.4034 901.0384,-136.4999 897.7124,-135.4101 897.7124,-135.4101 897.7124,-135.4101 901.0384,-136.4999 898.6933,-132.4167 904.3644,-137.5898 904.3644,-137.5898\"/>\n",
"<text text-anchor=\"start\" x=\"824.1407\" y=\"-140.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 17&#45;&gt;14 -->\n",
"<g id=\"edge34\" class=\"edge\">\n",
"<title>17&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M903.1718,-151.6892C883.0105,-158.9426 850.6837,-171.3295 824.1407,-185 818.6489,-187.8285 812.932,-191.1876 807.6103,-194.5111\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"801.5819,-198.3623 805.7851,-191.9392 804.5314,-196.478 807.481,-194.5937 807.481,-194.5937 807.481,-194.5937 804.5314,-196.478 809.1768,-197.2483 801.5819,-198.3623 801.5819,-198.3623\"/>\n",
"<text text-anchor=\"start\" x=\"838.6407\" y=\"-188.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</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 0x7f7c803ebf90> >"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gi.minimize_lvl = 0\n",
"spot.apply_strategy(game, False, False)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Input/Output\n",
"\n",
"An extension of the HOA format makes it possible to store the `state-player` property. This allows us to read the parity game constructed by `ltlsynt` using `spot.automaton()` like any other automaton."
]
},
{
"cell_type": "code",
"execution_count": 12,
"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.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"567pt\" height=\"353pt\"\n",
" viewBox=\"0.00 0.00 566.58 353.05\" 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 349.0543)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-349.0543 562.5801,-349.0543 562.5801,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"130.2901\" y=\"-330.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Fin(</text>\n",
"<text text-anchor=\"start\" x=\"155.2901\" y=\"-330.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"<text text-anchor=\"start\" x=\"171.2901\" y=\"-330.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"218.2901\" y=\"-330.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"234.2901\" y=\"-330.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) | (Fin(</text>\n",
"<text text-anchor=\"start\" x=\"277.2901\" y=\"-330.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"293.2901\" y=\"-330.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"340.2901\" y=\"-330.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"356.2901\" y=\"-330.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) | Fin(</text>\n",
"<text text-anchor=\"start\" x=\"396.2901\" y=\"-330.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"412.2901\" y=\"-330.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">))))</text>\n",
"<text text-anchor=\"start\" x=\"221.7901\" y=\"-316.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[parity max odd 5]</text>\n",
"<!-- I -->\n",
"<!-- 4 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>4</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-167.0543\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-163.3543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">4</text>\n",
"</g>\n",
"<!-- I&#45;&gt;4 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-167.0543C4.178,-167.0543 17.9448,-167.0543 30.9241,-167.0543\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-167.0543 30.9808,-170.2044 34.4807,-167.0543 30.9807,-167.0544 30.9807,-167.0544 30.9807,-167.0544 34.4807,-167.0543 30.9807,-163.9044 37.9807,-167.0543 37.9807,-167.0543\"/>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>10</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"156.3322,-159.0543 126.1669,-141.0543 156.3322,-123.0543 186.4975,-141.0543 156.3322,-159.0543\"/>\n",
"<text text-anchor=\"middle\" x=\"156.3322\" y=\"-137.3543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">10</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;10 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>4&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M69.6566,-154.7003C75.9825,-149.7758 83.8872,-144.6644 92,-142.0543 102.1083,-138.8022 113.5804,-137.8275 124.0094,-137.8872\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"131.0333,-138.0785 123.9501,-141.0367 127.5346,-137.9832 124.0359,-137.8878 124.0359,-137.8878 124.0359,-137.8878 127.5346,-137.9832 124.1217,-134.739 131.0333,-138.0785 131.0333,-138.0785\"/>\n",
"<text text-anchor=\"start\" x=\"94.5\" y=\"-160.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-145.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 11 -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>11</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"156.3322,-213.0543 126.1669,-195.0543 156.3322,-177.0543 186.4975,-195.0543 156.3322,-213.0543\"/>\n",
"<text text-anchor=\"middle\" x=\"156.3322\" y=\"-191.3543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">11</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;11 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>4&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M73.4765,-171.9315C88.7425,-176.1918 111.1619,-182.4485 128.8314,-187.3796\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"135.5889,-189.2654 127.9998,-190.4178 132.2178,-188.3246 128.8466,-187.3837 128.8466,-187.3837 128.8466,-187.3837 132.2178,-188.3246 129.6933,-184.3497 135.5889,-189.2654 135.5889,-189.2654\"/>\n",
"<text text-anchor=\"start\" x=\"96.5\" y=\"-199.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-184.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"256.6644\" cy=\"-86.0543\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"256.6644\" y=\"-82.3543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>5</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"349.6433,-141.0543 326.6854,-123.0543 349.6433,-105.0543 372.6012,-123.0543 349.6433,-141.0543\"/>\n",
"<text text-anchor=\"middle\" x=\"349.6433\" y=\"-119.3543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">5</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=\"#000000\" d=\"M274.5828,-83.4196C284.8889,-82.6247 297.8889,-82.8747 308.6644,-87.0543 318.9362,-91.0386 328.3355,-98.8369 335.5337,-106.1596\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"340.5871,-111.5956 333.5139,-108.6135 338.2041,-109.0321 335.821,-106.4687 335.821,-106.4687 335.821,-106.4687 338.2041,-109.0321 338.1281,-104.324 340.5871,-111.5956 340.5871,-111.5956\"/>\n",
"<text text-anchor=\"start\" x=\"295.1644\" y=\"-105.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"<text text-anchor=\"start\" x=\"292.6644\" y=\"-90.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>6</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"349.6433,-71.0543 326.6854,-53.0543 349.6433,-35.0543 372.6012,-53.0543 349.6433,-71.0543\"/>\n",
"<text text-anchor=\"middle\" x=\"349.6433\" y=\"-49.3543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">6</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=\"#000000\" d=\"M263.2648,-69.1176C269.019,-56.9283 278.659,-41.3925 292.6644,-34.0543 305.1338,-27.5209 320.2972,-33.1619 331.8457,-39.9541\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"337.8495,-43.7759 330.2529,-42.6742 334.897,-41.8964 331.9444,-40.0169 331.9444,-40.0169 331.9444,-40.0169 334.897,-41.8964 333.636,-37.3596 337.8495,-43.7759 337.8495,-43.7759\"/>\n",
"<text text-anchor=\"start\" x=\"297.1644\" y=\"-52.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<text text-anchor=\"start\" x=\"292.6644\" y=\"-37.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;0 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>5&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M327.4895,-123.7727C316.6059,-123.3765 303.53,-121.7499 292.6644,-117.0543 285.8503,-114.1096 279.3779,-109.4039 273.8492,-104.5394\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"268.6573,-99.6812 275.9208,-102.1639 271.2129,-102.0726 273.7686,-104.464 273.7686,-104.464 273.7686,-104.464 271.2129,-102.0726 271.6164,-106.7641 268.6573,-99.6812 268.6573,-99.6812\"/>\n",
"<text text-anchor=\"start\" x=\"296.1644\" y=\"-140.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"292.6644\" y=\"-125.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"442.6222\" cy=\"-80.0543\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"442.6222\" y=\"-76.3543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;1 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>6&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M359.6403,-63.6236C367.3183,-70.9265 378.6131,-80.0236 390.6222,-84.0543 399.2061,-86.9353 409.0184,-86.9552 417.7896,-85.9096\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"424.8627,-84.8201 418.4239,-88.9991 421.4035,-85.353 417.9443,-85.8858 417.9443,-85.8858 417.9443,-85.8858 421.4035,-85.353 417.4648,-82.7726 424.8627,-84.8201 424.8627,-84.8201\"/>\n",
"<text text-anchor=\"start\" x=\"394.1222\" y=\"-105.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"390.6222\" y=\"-90.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;6 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M429.3777,-67.4936C423.0117,-62.2913 414.9608,-56.8317 406.6222,-54.0543 397.1974,-50.9151 386.4005,-50.0846 376.7577,-50.2346\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"369.6506,-50.5185 376.5193,-47.0915 373.1478,-50.3787 376.6451,-50.239 376.6451,-50.239 376.6451,-50.239 373.1478,-50.3787 376.7708,-53.3865 369.6506,-50.5185 369.6506,-50.5185\"/>\n",
"<text text-anchor=\"start\" x=\"395.1222\" y=\"-72.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<text text-anchor=\"start\" x=\"390.6222\" y=\"-57.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>7</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"535.6012,-38.0543 512.6433,-20.0543 535.6012,-2.0543 558.5591,-20.0543 535.6012,-38.0543\"/>\n",
"<text text-anchor=\"middle\" x=\"535.6012\" y=\"-16.3543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">7</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;7 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>1&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M457.9758,-70.1465C474.1459,-59.7118 499.6171,-43.2751 516.9366,-32.0987\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"522.9164,-28.2399 518.7427,-34.6822 519.9755,-30.1377 517.0347,-32.0354 517.0347,-32.0354 517.0347,-32.0354 519.9755,-30.1377 515.3267,-29.3887 522.9164,-28.2399 522.9164,-28.2399\"/>\n",
"<text text-anchor=\"start\" x=\"481.1222\" y=\"-74.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"<text text-anchor=\"start\" x=\"478.6222\" y=\"-59.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;0 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>7&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M518.6106,-15.2181C476.4961,-4.2917 365.4384,17.9334 292.6644,-28.0543 280.1536,-35.9602 271.2822,-49.9539 265.4766,-62.215\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"262.563,-68.7988 262.5152,-61.1228 263.9794,-65.5982 265.3958,-62.3976 265.3958,-62.3976 265.3958,-62.3976 263.9794,-65.5982 268.2763,-63.6724 262.563,-68.7988 262.563,-68.7988\"/>\n",
"<text text-anchor=\"start\" x=\"394.1222\" y=\"-19.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"390.6222\" y=\"-4.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"442.6222\" cy=\"-271.0543\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"442.6222\" y=\"-267.3543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>8</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"535.6012,-288.0543 512.6433,-270.0543 535.6012,-252.0543 558.5591,-270.0543 535.6012,-288.0543\"/>\n",
"<text text-anchor=\"middle\" x=\"535.6012\" y=\"-266.3543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">8</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;8 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>2&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M460.5349,-273.4397C466.2986,-274.1013 472.7201,-274.7274 478.6222,-275.0543 488.6565,-275.61 499.662,-274.945 509.3026,-273.9375\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"516.37,-273.1149 509.7812,-277.0531 512.8935,-273.5196 509.417,-273.9243 509.417,-273.9243 509.417,-273.9243 512.8935,-273.5196 509.0527,-270.7954 516.37,-273.1149 516.37,-273.1149\"/>\n",
"<text text-anchor=\"start\" x=\"482.1222\" y=\"-293.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"478.6222\" y=\"-278.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;2 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>8&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M525.8496,-259.4959C514.7619,-248.8376 495.9472,-234.7818 478.6222,-241.0543 471.7375,-243.5469 465.2441,-247.9948 459.7178,-252.7151\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"454.5353,-257.4638 457.5683,-250.4123 457.1158,-255.0993 459.6963,-252.7348 459.6963,-252.7348 459.6963,-252.7348 457.1158,-255.0993 461.8244,-255.0572 454.5353,-257.4638 454.5353,-257.4638\"/>\n",
"<text text-anchor=\"start\" x=\"482.1222\" y=\"-259.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"478.6222\" y=\"-244.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"256.6644\" cy=\"-241.0543\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"256.6644\" y=\"-237.3543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
"</g>\n",
"<!-- 9 -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>9</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"349.6433,-289.0543 326.6854,-271.0543 349.6433,-253.0543 372.6012,-271.0543 349.6433,-289.0543\"/>\n",
"<text text-anchor=\"middle\" x=\"349.6433\" y=\"-267.3543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">9</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;9 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>3&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M267.2134,-255.7681C273.6078,-263.3795 282.4877,-271.9227 292.6644,-276.0543 303.1303,-280.3033 315.5451,-279.7892 326.1105,-277.9059\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"333.0828,-276.425 326.89,-280.9607 329.6592,-277.1522 326.2355,-277.8794 326.2355,-277.8794 326.2355,-277.8794 329.6592,-277.1522 325.5811,-274.7981 333.0828,-276.425 333.0828,-276.425\"/>\n",
"<text text-anchor=\"start\" x=\"296.1644\" y=\"-297.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"292.6644\" y=\"-282.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;2 -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>9&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M372.6269,-271.0543C386.1484,-271.0543 403.27,-271.0543 417.1949,-271.0543\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"424.5588,-271.0543 417.5589,-274.2044 421.0588,-271.0543 417.5588,-271.0544 417.5588,-271.0544 417.5588,-271.0544 421.0588,-271.0543 417.5588,-267.9044 424.5588,-271.0543 424.5588,-271.0543\"/>\n",
"<text text-anchor=\"start\" x=\"392.1222\" y=\"-289.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!b</text>\n",
"<text text-anchor=\"start\" x=\"390.6222\" y=\"-274.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;3 -->\n",
"<g id=\"edge15\" class=\"edge\">\n",
"<title>9&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M339.167,-260.9341C331.4252,-254.1801 320.2563,-245.8642 308.6644,-242.0543 300.2204,-239.279 290.5816,-238.4902 281.9155,-238.5705\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"274.9122,-238.8179 281.7966,-235.4226 278.41,-238.6943 281.9078,-238.5707 281.9078,-238.5707 281.9078,-238.5707 278.41,-238.6943 282.019,-241.7187 274.9122,-238.8179 274.9122,-238.8179\"/>\n",
"<text text-anchor=\"start\" x=\"296.1644\" y=\"-260.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">b</text>\n",
"<text text-anchor=\"start\" x=\"292.6644\" y=\"-245.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;0 -->\n",
"<g id=\"edge16\" class=\"edge\">\n",
"<title>10&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M165.4563,-128.1004C174.1563,-116.8397 188.3284,-101.1049 204.6644,-93.0543 212.8353,-89.0276 222.5572,-87.0786 231.3717,-86.1986\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"238.5084,-85.6887 231.7508,-89.3296 235.0173,-85.9382 231.5262,-86.1877 231.5262,-86.1877 231.5262,-86.1877 235.0173,-85.9382 231.3017,-83.0457 238.5084,-85.6887 238.5084,-85.6887\"/>\n",
"<text text-anchor=\"start\" x=\"206.1644\" y=\"-111.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!b</text>\n",
"<text text-anchor=\"start\" x=\"204.6644\" y=\"-96.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;3 -->\n",
"<g id=\"edge17\" class=\"edge\">\n",
"<title>10&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M172.777,-149.4895C186.669,-157.1761 206.5074,-169.5259 220.6644,-184.0543 230.497,-194.1449 239.0424,-207.3488 245.3371,-218.5071\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"248.776,-224.8016 242.6555,-220.1688 247.0979,-221.7301 245.4198,-218.6586 245.4198,-218.6586 245.4198,-218.6586 247.0979,-221.7301 248.1842,-217.1483 248.776,-224.8016 248.776,-224.8016\"/>\n",
"<text text-anchor=\"start\" x=\"208.1644\" y=\"-202.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">b</text>\n",
"<text text-anchor=\"start\" x=\"204.6644\" y=\"-187.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;1 -->\n",
"<g id=\"edge18\" class=\"edge\">\n",
"<title>11&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M184.3889,-193.6481C227.0638,-190.5578 309.9394,-180.7726 372.6222,-150.0543 395.5765,-138.8054 415.487,-116.9988 428.1422,-100.6995\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"432.4686,-94.9735 430.762,-102.4575 430.3586,-97.766 428.2487,-100.5586 428.2487,-100.5586 428.2487,-100.5586 430.3586,-97.766 425.7354,-98.6596 432.4686,-94.9735 432.4686,-94.9735\"/>\n",
"<text text-anchor=\"start\" x=\"294.1644\" y=\"-195.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!b</text>\n",
"<text text-anchor=\"start\" x=\"292.6644\" y=\"-180.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;3 -->\n",
"<g id=\"edge19\" class=\"edge\">\n",
"<title>11&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M173.8087,-203.0669C190.4099,-210.6781 215.4705,-222.1678 233.6828,-230.5178\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"240.0544,-233.439 232.3784,-233.385 236.8728,-231.9803 233.6912,-230.5216 233.6912,-230.5216 233.6912,-230.5216 236.8728,-231.9803 235.0041,-227.6582 240.0544,-233.439 240.0544,-233.439\"/>\n",
"<text text-anchor=\"start\" x=\"208.1644\" y=\"-241.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">b</text>\n",
"<text text-anchor=\"start\" x=\"204.6644\" y=\"-226.8543\" 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 0x7f7c803ebd20> >"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"game = spot.automaton(\"ltlsynt --ins=a --outs=b -f '!b & GFa <-> Gb' --print-game-hoa |\");\n",
"game"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In the graphical output, player 0 is represented by circles (or ellipses or rounded rectangles depending on the situations), while player 1's states are diamond shaped. In the case of `ltlsynt`, player 0 plays the role of the environment, and player 1 plays the role of the controler.\n",
"\n",
"In the HOA output, a header `spot-state-player` (or `spot.state-player` in HOA 1.1) lists the owner of each state."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"HOA: v1\n",
"States: 12\n",
"Start: 4\n",
"AP: 2 \"b\" \"a\"\n",
"acc-name: parity max odd 5\n",
"Acceptance: 5 Fin(4) & (Inf(3) | (Fin(2) & (Inf(1) | Fin(0))))\n",
"properties: trans-labels explicit-labels trans-acc colored complete\n",
"properties: deterministic\n",
"spot-state-player: 0 0 0 0 0 1 1 1 1 1 1 1\n",
"--BODY--\n",
"State: 0\n",
"[!1] 5 {1}\n",
"[1] 6 {1}\n",
"State: 1\n",
"[1] 6 {1}\n",
"[!1] 7 {1}\n",
"State: 2\n",
"[t] 8 {1}\n",
"State: 3\n",
"[t] 9 {1}\n",
"State: 4\n",
"[!1] 10 {1}\n",
"[1] 11 {1}\n",
"State: 5\n",
"[t] 0 {3}\n",
"State: 6\n",
"[t] 1 {4}\n",
"State: 7\n",
"[t] 0 {4}\n",
"State: 8\n",
"[t] 2 {3}\n",
"State: 9\n",
"[!0] 2 {3}\n",
"[0] 3 {4}\n",
"State: 10\n",
"[!0] 0 {3}\n",
"[0] 3 {3}\n",
"State: 11\n",
"[!0] 1 {3}\n",
"[0] 3 {3}\n",
"--END--\n"
]
}
],
"source": [
"print(game.to_str('hoa'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here is the solution of this particular game."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"spot.solve_parity_game(game)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"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.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"567pt\" height=\"353pt\"\n",
" viewBox=\"0.00 0.00 566.58 353.05\" 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 349.0543)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-349.0543 562.5801,-349.0543 562.5801,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"130.2901\" y=\"-330.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Fin(</text>\n",
"<text text-anchor=\"start\" x=\"155.2901\" y=\"-330.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"<text text-anchor=\"start\" x=\"171.2901\" y=\"-330.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"218.2901\" y=\"-330.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"234.2901\" y=\"-330.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) | (Fin(</text>\n",
"<text text-anchor=\"start\" x=\"277.2901\" y=\"-330.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"293.2901\" y=\"-330.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"340.2901\" y=\"-330.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"356.2901\" y=\"-330.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) | Fin(</text>\n",
"<text text-anchor=\"start\" x=\"396.2901\" y=\"-330.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"412.2901\" y=\"-330.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">))))</text>\n",
"<text text-anchor=\"start\" x=\"221.7901\" y=\"-316.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[parity max odd 5]</text>\n",
"<!-- I -->\n",
"<!-- 4 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>4</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"56\" cy=\"-167.0543\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-163.3543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">4</text>\n",
"</g>\n",
"<!-- I&#45;&gt;4 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-167.0543C4.178,-167.0543 17.9448,-167.0543 30.9241,-167.0543\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-167.0543 30.9808,-170.2044 34.4807,-167.0543 30.9807,-167.0544 30.9807,-167.0544 30.9807,-167.0544 34.4807,-167.0543 30.9807,-163.9044 37.9807,-167.0543 37.9807,-167.0543\"/>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>10</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"156.3322,-159.0543 126.1669,-141.0543 156.3322,-123.0543 186.4975,-141.0543 156.3322,-159.0543\"/>\n",
"<text text-anchor=\"middle\" x=\"156.3322\" y=\"-137.3543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">10</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;10 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>4&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M69.6566,-154.7003C75.9825,-149.7758 83.8872,-144.6644 92,-142.0543 102.1083,-138.8022 113.5804,-137.8275 124.0094,-137.8872\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"131.0333,-138.0785 123.9501,-141.0367 127.5346,-137.9832 124.0359,-137.8878 124.0359,-137.8878 124.0359,-137.8878 127.5346,-137.9832 124.1217,-134.739 131.0333,-138.0785 131.0333,-138.0785\"/>\n",
"<text text-anchor=\"start\" x=\"94.5\" y=\"-160.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-145.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 11 -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>11</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"156.3322,-213.0543 126.1669,-195.0543 156.3322,-177.0543 186.4975,-195.0543 156.3322,-213.0543\"/>\n",
"<text text-anchor=\"middle\" x=\"156.3322\" y=\"-191.3543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">11</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;11 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>4&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M73.4765,-171.9315C88.7425,-176.1918 111.1619,-182.4485 128.8314,-187.3796\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"135.5889,-189.2654 127.9998,-190.4178 132.2178,-188.3246 128.8466,-187.3837 128.8466,-187.3837 128.8466,-187.3837 132.2178,-188.3246 129.6933,-184.3497 135.5889,-189.2654 135.5889,-189.2654\"/>\n",
"<text text-anchor=\"start\" x=\"96.5\" y=\"-199.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-184.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" cx=\"256.6644\" cy=\"-86.0543\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"256.6644\" y=\"-82.3543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>5</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"349.6433,-141.0543 326.6854,-123.0543 349.6433,-105.0543 372.6012,-123.0543 349.6433,-141.0543\"/>\n",
"<text text-anchor=\"middle\" x=\"349.6433\" y=\"-119.3543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">5</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=\"#000000\" d=\"M274.5828,-83.4196C284.8889,-82.6247 297.8889,-82.8747 308.6644,-87.0543 318.9362,-91.0386 328.3355,-98.8369 335.5337,-106.1596\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"340.5871,-111.5956 333.5139,-108.6135 338.2041,-109.0321 335.821,-106.4687 335.821,-106.4687 335.821,-106.4687 338.2041,-109.0321 338.1281,-104.324 340.5871,-111.5956 340.5871,-111.5956\"/>\n",
"<text text-anchor=\"start\" x=\"295.1644\" y=\"-105.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"<text text-anchor=\"start\" x=\"292.6644\" y=\"-90.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>6</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"349.6433,-71.0543 326.6854,-53.0543 349.6433,-35.0543 372.6012,-53.0543 349.6433,-71.0543\"/>\n",
"<text text-anchor=\"middle\" x=\"349.6433\" y=\"-49.3543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">6</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=\"#e31a1c\" stroke-width=\"2\" d=\"M263.2648,-69.1176C269.019,-56.9283 278.659,-41.3925 292.6644,-34.0543 305.1338,-27.5209 320.2972,-33.1619 331.8457,-39.9541\"/>\n",
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"337.8495,-43.7759 330.2529,-42.6742 334.6285,-42.3182 331.6759,-40.4387 331.9444,-40.0169 332.2129,-39.5951 335.1655,-41.4746 333.636,-37.3596 337.8495,-43.7759 337.8495,-43.7759\"/>\n",
"<text text-anchor=\"start\" x=\"297.1644\" y=\"-52.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<text text-anchor=\"start\" x=\"292.6644\" y=\"-37.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;0 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>5&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M327.4895,-123.7727C316.6059,-123.3765 303.53,-121.7499 292.6644,-117.0543 285.8503,-114.1096 279.3779,-109.4039 273.8492,-104.5394\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"268.6573,-99.6812 275.9208,-102.1639 271.2129,-102.0726 273.7686,-104.464 273.7686,-104.464 273.7686,-104.464 271.2129,-102.0726 271.6164,-106.7641 268.6573,-99.6812 268.6573,-99.6812\"/>\n",
"<text text-anchor=\"start\" x=\"296.1644\" y=\"-140.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"292.6644\" y=\"-125.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" cx=\"442.6222\" cy=\"-80.0543\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"442.6222\" y=\"-76.3543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;1 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>6&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M359.6403,-63.6236C367.3183,-70.9265 378.6131,-80.0236 390.6222,-84.0543 399.2061,-86.9353 409.0184,-86.9552 417.7896,-85.9096\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"424.8627,-84.8201 418.4239,-88.9991 421.4035,-85.353 417.9443,-85.8858 417.9443,-85.8858 417.9443,-85.8858 421.4035,-85.353 417.4648,-82.7726 424.8627,-84.8201 424.8627,-84.8201\"/>\n",
"<text text-anchor=\"start\" x=\"394.1222\" y=\"-105.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"390.6222\" y=\"-90.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;6 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M429.3777,-67.4936C423.0117,-62.2913 414.9608,-56.8317 406.6222,-54.0543 397.1974,-50.9151 386.4005,-50.0846 376.7577,-50.2346\"/>\n",
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"369.6506,-50.5185 376.5193,-47.0915 373.1279,-49.8791 376.6251,-49.7394 376.6451,-50.239 376.665,-50.7386 373.1678,-50.8783 376.7708,-53.3865 369.6506,-50.5185 369.6506,-50.5185\"/>\n",
"<text text-anchor=\"start\" x=\"395.1222\" y=\"-72.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"<text text-anchor=\"start\" x=\"390.6222\" y=\"-57.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>7</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"535.6012,-38.0543 512.6433,-20.0543 535.6012,-2.0543 558.5591,-20.0543 535.6012,-38.0543\"/>\n",
"<text text-anchor=\"middle\" x=\"535.6012\" y=\"-16.3543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">7</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;7 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>1&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M457.9758,-70.1465C474.1459,-59.7118 499.6171,-43.2751 516.9366,-32.0987\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"522.9164,-28.2399 518.7427,-34.6822 519.9755,-30.1377 517.0347,-32.0354 517.0347,-32.0354 517.0347,-32.0354 519.9755,-30.1377 515.3267,-29.3887 522.9164,-28.2399 522.9164,-28.2399\"/>\n",
"<text text-anchor=\"start\" x=\"481.1222\" y=\"-74.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
"<text text-anchor=\"start\" x=\"478.6222\" y=\"-59.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;0 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>7&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M518.6106,-15.2181C476.4961,-4.2917 365.4384,17.9334 292.6644,-28.0543 280.1536,-35.9602 271.2822,-49.9539 265.4766,-62.215\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"262.563,-68.7988 262.5152,-61.1228 263.9794,-65.5982 265.3958,-62.3976 265.3958,-62.3976 265.3958,-62.3976 263.9794,-65.5982 268.2763,-63.6724 262.563,-68.7988 262.563,-68.7988\"/>\n",
"<text text-anchor=\"start\" x=\"394.1222\" y=\"-19.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"390.6222\" y=\"-4.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"442.6222\" cy=\"-271.0543\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"442.6222\" y=\"-267.3543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>8</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"535.6012,-288.0543 512.6433,-270.0543 535.6012,-252.0543 558.5591,-270.0543 535.6012,-288.0543\"/>\n",
"<text text-anchor=\"middle\" x=\"535.6012\" y=\"-266.3543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">8</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;8 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>2&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M460.5349,-273.4397C466.2986,-274.1013 472.7201,-274.7274 478.6222,-275.0543 488.6565,-275.61 499.662,-274.945 509.3026,-273.9375\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"516.37,-273.1149 509.7812,-277.0531 512.8935,-273.5196 509.417,-273.9243 509.417,-273.9243 509.417,-273.9243 512.8935,-273.5196 509.0527,-270.7954 516.37,-273.1149 516.37,-273.1149\"/>\n",
"<text text-anchor=\"start\" x=\"482.1222\" y=\"-293.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"478.6222\" y=\"-278.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;2 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>8&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M525.8496,-259.4959C514.7619,-248.8376 495.9472,-234.7818 478.6222,-241.0543 471.7375,-243.5469 465.2441,-247.9948 459.7178,-252.7151\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"454.5353,-257.4638 457.5683,-250.4123 456.778,-254.7307 459.3586,-252.3661 459.6963,-252.7348 460.0341,-253.1034 457.4536,-255.4679 461.8244,-255.0572 454.5353,-257.4638 454.5353,-257.4638\"/>\n",
"<text text-anchor=\"start\" x=\"482.1222\" y=\"-259.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"478.6222\" y=\"-244.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"256.6644\" cy=\"-241.0543\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"256.6644\" y=\"-237.3543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
"</g>\n",
"<!-- 9 -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>9</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"349.6433,-289.0543 326.6854,-271.0543 349.6433,-253.0543 372.6012,-271.0543 349.6433,-289.0543\"/>\n",
"<text text-anchor=\"middle\" x=\"349.6433\" y=\"-267.3543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">9</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;9 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>3&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M267.2134,-255.7681C273.6078,-263.3795 282.4877,-271.9227 292.6644,-276.0543 303.1303,-280.3033 315.5451,-279.7892 326.1105,-277.9059\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"333.0828,-276.425 326.89,-280.9607 329.6592,-277.1522 326.2355,-277.8794 326.2355,-277.8794 326.2355,-277.8794 329.6592,-277.1522 325.5811,-274.7981 333.0828,-276.425 333.0828,-276.425\"/>\n",
"<text text-anchor=\"start\" x=\"296.1644\" y=\"-297.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"292.6644\" y=\"-282.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;2 -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>9&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M372.6269,-271.0543C386.1484,-271.0543 403.27,-271.0543 417.1949,-271.0543\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"424.5588,-271.0543 417.5589,-274.2044 421.0589,-271.5543 417.5589,-271.5544 417.5588,-271.0544 417.5588,-270.5544 421.0588,-270.5543 417.5588,-267.9044 424.5588,-271.0543 424.5588,-271.0543\"/>\n",
"<text text-anchor=\"start\" x=\"392.1222\" y=\"-289.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!b</text>\n",
"<text text-anchor=\"start\" x=\"390.6222\" y=\"-274.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;3 -->\n",
"<g id=\"edge15\" class=\"edge\">\n",
"<title>9&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M339.167,-260.9341C331.4252,-254.1801 320.2563,-245.8642 308.6644,-242.0543 300.2204,-239.279 290.5816,-238.4902 281.9155,-238.5705\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"274.9122,-238.8179 281.7966,-235.4226 278.41,-238.6943 281.9078,-238.5707 281.9078,-238.5707 281.9078,-238.5707 278.41,-238.6943 282.019,-241.7187 274.9122,-238.8179 274.9122,-238.8179\"/>\n",
"<text text-anchor=\"start\" x=\"296.1644\" y=\"-260.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">b</text>\n",
"<text text-anchor=\"start\" x=\"292.6644\" y=\"-245.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;0 -->\n",
"<g id=\"edge16\" class=\"edge\">\n",
"<title>10&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M165.4563,-128.1004C174.1563,-116.8397 188.3284,-101.1049 204.6644,-93.0543 212.8353,-89.0276 222.5572,-87.0786 231.3717,-86.1986\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"238.5084,-85.6887 231.7508,-89.3296 235.0173,-85.9382 231.5262,-86.1877 231.5262,-86.1877 231.5262,-86.1877 235.0173,-85.9382 231.3017,-83.0457 238.5084,-85.6887 238.5084,-85.6887\"/>\n",
"<text text-anchor=\"start\" x=\"206.1644\" y=\"-111.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!b</text>\n",
"<text text-anchor=\"start\" x=\"204.6644\" y=\"-96.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;3 -->\n",
"<g id=\"edge17\" class=\"edge\">\n",
"<title>10&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M172.777,-149.4895C186.669,-157.1761 206.5074,-169.5259 220.6644,-184.0543 230.497,-194.1449 239.0424,-207.3488 245.3371,-218.5071\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"248.776,-224.8016 242.6555,-220.1688 246.6591,-221.9698 244.9811,-218.8983 245.4198,-218.6586 245.8586,-218.4188 247.5367,-221.4903 248.1842,-217.1483 248.776,-224.8016 248.776,-224.8016\"/>\n",
"<text text-anchor=\"start\" x=\"208.1644\" y=\"-202.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">b</text>\n",
"<text text-anchor=\"start\" x=\"204.6644\" y=\"-187.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;1 -->\n",
"<g id=\"edge18\" class=\"edge\">\n",
"<title>11&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M184.3889,-193.6481C227.0638,-190.5578 309.9394,-180.7726 372.6222,-150.0543 395.5765,-138.8054 415.487,-116.9988 428.1422,-100.6995\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"432.4686,-94.9735 430.762,-102.4575 430.3586,-97.766 428.2487,-100.5586 428.2487,-100.5586 428.2487,-100.5586 430.3586,-97.766 425.7354,-98.6596 432.4686,-94.9735 432.4686,-94.9735\"/>\n",
"<text text-anchor=\"start\" x=\"294.1644\" y=\"-195.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!b</text>\n",
"<text text-anchor=\"start\" x=\"292.6644\" y=\"-180.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;3 -->\n",
"<g id=\"edge19\" class=\"edge\">\n",
"<title>11&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M173.8087,-203.0669C190.4099,-210.6781 215.4705,-222.1678 233.6828,-230.5178\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"240.0544,-233.439 232.3784,-233.385 236.6644,-232.4348 233.4829,-230.9761 233.6912,-230.5216 233.8996,-230.0671 237.0812,-231.5258 235.0041,-227.6582 240.0544,-233.439 240.0544,-233.439\"/>\n",
"<text text-anchor=\"start\" x=\"208.1644\" y=\"-241.8543\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">b</text>\n",
"<text text-anchor=\"start\" x=\"204.6644\" y=\"-226.8543\" 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 0x7f7c803ddea0> >"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"spot.highlight_strategy(game)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Reading an aiger-file</h2>\n",
"\n",
"<p>Read an aiger file. Note that we do not support the full \n",
" <a href=\"http://fmv.jku.at/aiger/FORMAT.aiger\">syntax</a>, but are restricted to:\n",
" <ul>\n",
" <li>Input variables start at index 2 and are consecutively numbered.</li>\n",
" <li>Latch variables start at index (1 + #inputs) * 2 and are consecutively numbered.</li>\n",
" <li>If inputs or outputs are named in the comments, all of them have to be named.</li>\n",
" <li>Gate number $n$ can only have latches, inputs or previously defined gates ($<n$). </li>\n",
" </ul>\n",
"</p>"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"aag 5 2 0 2 3\n",
"2\n",
"4\n",
"10\n",
"6\n",
"6 2 4\n",
"8 3 5\n",
"10 7 9\n",
"i0 a\n",
"i1 b\n",
"o0 c\n",
"o1 d\n"
]
}
],
"source": [
"#aiger file \n",
"aag_txt = \"\"\"aag 5 2 0 2 3\n",
"2\n",
"4\n",
"10\n",
"6\n",
"6 2 4\n",
"8 3 5\n",
"10 7 9\n",
"i0 a\n",
"i1 b\n",
"o0 c\n",
"o1 d\"\"\"\n",
"print(aag_txt)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"this_aig = spot.aiger_circuit(aag_txt)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"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.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"202pt\" height=\"289pt\"\n",
" viewBox=\"0.00 0.00 202.39 289.50\" 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 285.496)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-285.496 198.3922,-285.496 198.3922,4 -4,4\"/>\n",
"<!-- 2 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"none\" stroke=\"#000000\" points=\"44.1961,-46 5.203,-11.5 83.1892,-11.5 44.1961,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"44.1961\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i0</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"129.1961\" cy=\"-100\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"129.1961\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">6</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;6 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>2&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M57.1057,-34.6946C70.5523,-46.8756 91.844,-66.1635 107.8083,-80.6252\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"105.8402,-83.5649 115.6012,-87.6847 110.5398,-78.377 105.8402,-83.5649\"/>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"65.1961\" cy=\"-100\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"65.1961\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">8</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;8 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>2&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M49.2796,-41.6396C51.988,-51.5705 55.3586,-63.9293 58.2998,-74.7138\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"59.3947\" cy=\"-78.7286\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"none\" stroke=\"#000000\" points=\"140.1961,-46 101.203,-11.5 179.1892,-11.5 140.1961,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"140.1961\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;6 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>4&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M137.2483,-43.6346C136.0091,-52.3088 134.5478,-62.5377 133.2126,-71.8842\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"129.7267,-71.5372 131.7773,-81.9317 136.6564,-72.5272 129.7267,-71.5372\"/>\n",
"</g>\n",
"<!-- 4&#45;&gt;8 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>4&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M128.146,-35.3714C116.1171,-47.7211 97.4731,-66.8622 83.593,-81.1125\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"80.7602\" cy=\"-84.0208\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>10</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"65.1961\" cy=\"-176.748\" rx=\"22.9987\" ry=\"22.9987\"/>\n",
"<text text-anchor=\"middle\" x=\"65.1961\" y=\"-173.048\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">10</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;10 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>6&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M117.4575,-114.0768C108.4229,-124.9109 95.7279,-140.1346 85.1125,-152.8645\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"82.343\" cy=\"-156.1856\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- o1o1 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>o1o1</title>\n",
"<polygon fill=\"none\" stroke=\"#000000\" points=\"150.1961,-235.496 194.5891,-269.996 105.803,-269.996 150.1961,-235.496\"/>\n",
"<text text-anchor=\"middle\" x=\"150.1961\" y=\"-254.796\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">o1</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;o1o1 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>6&#45;&gt;o1o1:s</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M133.7528,-117.8359C139.4465,-141.6042 148.6168,-185.3313 150.0149,-225.4017\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"146.5171,-225.5604 150.1961,-235.496 153.516,-225.4347 146.5171,-225.5604\"/>\n",
"</g>\n",
"<!-- 8&#45;&gt;10 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>8&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M65.1961,-118.1882C65.1961,-126.4164 65.1961,-136.3755 65.1961,-145.729\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"65.1961\" cy=\"-149.7341\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- o0o0 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>o0o0</title>\n",
"<polygon fill=\"none\" stroke=\"#000000\" points=\"44.1961,-235.496 88.5891,-269.996 -.197,-269.996 44.1961,-235.496\"/>\n",
"<text text-anchor=\"middle\" x=\"44.1961\" y=\"-254.796\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;o0o0 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>10&#45;&gt;o0o0:s</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M54.2041,-196.7859C50.3933,-205.093 46.6692,-215.159 45.0453,-225.3389\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"41.5415,-225.2391 44.1961,-235.496 48.5172,-225.8224 41.5415,-225.2391\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.jupyter.SVG object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(this_aig.show())"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"aag 5 2 0 2 3\n",
"2\n",
"4\n",
"10\n",
"6\n",
"6 2 4\n",
"8 3 5\n",
"10 7 9\n",
"i0 i0\n",
"i1 i1\n",
"o0 o0\n",
"o1 o1\n"
]
}
],
"source": [
"print(this_aig.to_str())"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"((2, 4), (3, 5), (7, 9))\n"
]
}
],
"source": [
"print(this_aig.gates())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Verifying an implementation</h2>\n",
"\n",
"<p>\n",
" An aiger circuit can be transformed into a monitor. If the aiger represents the implementation of a strategy in the context of active control, it can be check for correctness. This is done by computing the intersecting of the monitor and the negation of the specification.\n",
"</p>"
]
},
{
"cell_type": "code",
"execution_count": 21,
"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.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"550pt\" height=\"115pt\"\n",
" viewBox=\"0.00 0.00 550.00 115.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 111)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-111 546,-111 546,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"268\" y=\"-91.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">t</text>\n",
"<text text-anchor=\"start\" x=\"260\" y=\"-76.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[all]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"271\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"271\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M216.1233,-18C219.178,-18 232.9448,-18 245.9241,-18\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"252.9807,-18 245.9808,-21.1501 249.4807,-18 245.9807,-18.0001 245.9807,-18.0001 245.9807,-18.0001 249.4807,-18 245.9807,-14.8501 252.9807,-18 252.9807,-18\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M264.6208,-35.0373C263.3189,-44.8579 265.4453,-54 271,-54 275.166,-54 277.4036,-48.8576 277.7128,-42.1433\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"277.3792,-35.0373 280.8541,-41.8818 277.5434,-38.5335 277.7076,-42.0296 277.7076,-42.0296 277.7076,-42.0296 277.5434,-38.5335 274.561,-42.1774 277.3792,-35.0373 277.3792,-35.0373\"/>\n",
"<text text-anchor=\"start\" x=\"0\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">(!i0 &amp; !i1 &amp; !o0 &amp; !o1) | (!i0 &amp; i1 &amp; o0 &amp; !o1) | (i0 &amp; !i1 &amp; o0 &amp; !o1) | (i0 &amp; i1 &amp; !o0 &amp; o1)</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 0x7f7c804061b0> >"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"aigasmon = this_aig.as_automaton()\n",
"display(aigasmon)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Incomplete circuit</h2>\n",
"\n",
"<p>\n",
" It can happen that propositions declared as output are ommited in the aig circuit.\n",
" This happens if the output does not appear in the strategy. Since it does not appear in the\n",
" strategy it can take arbritrary values.\n",
"</p>"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"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.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"383pt\" height=\"110pt\"\n",
" viewBox=\"0.00 0.00 383.00 109.68\" 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 105.6845)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-105.6845 379,-105.6845 379,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"73.5\" y=\"-87.4845\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n",
"<text text-anchor=\"start\" x=\"95.5\" y=\"-87.4845\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"111.5\" y=\"-87.4845\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) | (Fin(</text>\n",
"<text text-anchor=\"start\" x=\"154.5\" y=\"-87.4845\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"170.5\" y=\"-87.4845\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"217.5\" y=\"-87.4845\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"233.5\" y=\"-87.4845\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) | Fin(</text>\n",
"<text text-anchor=\"start\" x=\"273.5\" y=\"-87.4845\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"289.5\" y=\"-87.4845\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)))</text>\n",
"<text text-anchor=\"start\" x=\"130\" y=\"-73.4845\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[parity max odd 4]</text>\n",
"<!-- I -->\n",
"<!-- 1 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"56\" cy=\"-30.6845\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-26.9845\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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=\"#000000\" d=\"M1.1233,-30.6845C4.178,-30.6845 17.9448,-30.6845 30.9241,-30.6845\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-30.6845 30.9808,-33.8346 34.4807,-30.6846 30.9807,-30.6846 30.9807,-30.6846 30.9807,-30.6846 34.4807,-30.6846 30.9807,-27.5346 37.9807,-30.6845 37.9807,-30.6845\"/>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>3</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"153,-48.6845 126,-30.6845 153,-12.6845 180,-30.6845 153,-48.6845\"/>\n",
"<text text-anchor=\"middle\" x=\"153\" y=\"-26.9845\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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=\"#000000\" d=\"M74.245,-30.6845C86.6958,-30.6845 103.576,-30.6845 118.5154,-30.6845\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"125.6654,-30.6845 118.6654,-33.8346 122.1654,-30.6846 118.6654,-30.6846 118.6654,-30.6846 118.6654,-30.6846 122.1654,-30.6846 118.6654,-27.5346 125.6654,-30.6845 125.6654,-30.6845\"/>\n",
"<text text-anchor=\"start\" x=\"95.5\" y=\"-49.4845\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-34.4845\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"251\" cy=\"-30.6845\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"251\" y=\"-26.9845\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"348,-48.6845 321,-30.6845 348,-12.6845 375,-30.6845 348,-48.6845\"/>\n",
"<text text-anchor=\"middle\" x=\"348\" y=\"-26.9845\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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=\"#000000\" d=\"M268.8944,-33.6659C274.6572,-34.4928 281.0827,-35.2756 287,-35.6845 297.4067,-36.4037 308.8025,-35.8361 318.8983,-34.8627\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"325.9871,-34.0948 319.3671,-37.9804 322.5075,-34.4718 319.0278,-34.8487 319.0278,-34.8487 319.0278,-34.8487 322.5075,-34.4718 318.6886,-31.7171 325.9871,-34.0948 325.9871,-34.0948\"/>\n",
"<text text-anchor=\"start\" x=\"290.5\" y=\"-54.4845\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"287\" y=\"-39.4845\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;0 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>2&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M335.974,-20.1884C327.4195,-13.45 315.3043,-5.3058 303,-1.6845 296.1782,.3232 293.7063,.6806 287,-1.6845 280.4412,-3.9977 274.1978,-8.0677 268.8077,-12.4402\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"263.3193,-17.2346 266.5187,-10.2571 265.6262,-14.5555 268.2621,-12.2528 268.5911,-12.6294 268.92,-13.0059 266.2841,-15.3086 270.6635,-15.0017 263.3193,-17.2346 263.3193,-17.2346\"/>\n",
"<text text-anchor=\"start\" x=\"290.5\" y=\"-20.4845\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"287\" y=\"-5.4845\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;0 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>3&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M180.0384,-30.6845C194.188,-30.6845 211.4182,-30.6845 225.3568,-30.6845\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"232.7214,-30.6845 225.7214,-33.8346 229.2214,-31.1846 225.7214,-31.1846 225.7214,-30.6846 225.7214,-30.1846 229.2214,-30.1846 225.7213,-27.5346 232.7214,-30.6845 232.7214,-30.6845\"/>\n",
"<text text-anchor=\"start\" x=\"198\" y=\"-49.4845\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"<text text-anchor=\"start\" x=\"198.5\" y=\"-34.4845\" 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 0x7f7c80406540> >"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"game = spot.create_game(\"o0\", [\"o0\", \"o1\"])\n",
"print(spot.solve_game(game))\n",
"spot.highlight_strategy(game)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"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.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"160pt\" height=\"198pt\"\n",
" viewBox=\"0.00 0.00 159.70 198.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 194)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-194 155.6961,-194 155.6961,4 -4,4\"/>\n",
"<!-- 2 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"none\" stroke=\"#000000\" points=\"77.1961,-108 11.1961,-108 11.1961,-72 77.1961,-72 77.1961,-108\"/>\n",
"<text text-anchor=\"middle\" x=\"44.1961\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">L0_out</text>\n",
"</g>\n",
"<!-- o0o0 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>o0o0</title>\n",
"<polygon fill=\"none\" stroke=\"#000000\" points=\"44.1961,-144 88.5891,-178.5 -.197,-178.5 44.1961,-144\"/>\n",
"<text text-anchor=\"middle\" x=\"44.1961\" y=\"-163.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;o0o0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>2&#45;&gt;o0o0:s</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M44.1961,-108C44.1961,-116.2031 44.1961,-126.2373 44.1961,-135.9568\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"44.1961\" cy=\"-140\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- L0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>L0</title>\n",
"<polygon fill=\"none\" stroke=\"#000000\" points=\"149.1961,-108 95.1961,-108 95.1961,-72 149.1961,-72 149.1961,-108\"/>\n",
"<text text-anchor=\"middle\" x=\"122.1961\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">L0</text>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>0</title>\n",
"<polygon fill=\"none\" stroke=\"#000000\" points=\"151.6961,-36 92.6961,-36 92.6961,0 151.6961,0 151.6961,-36\"/>\n",
"<text text-anchor=\"middle\" x=\"122.1961\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Const</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;L0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>0&#45;&gt;L0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M122.1961,-36.1686C122.1961,-43.869 122.1961,-53.0257 122.1961,-61.5834\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"118.6962,-61.5867 122.1961,-71.5867 125.6962,-61.5868 118.6962,-61.5867\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.aig; proxy of <Swig Object of type 'spot::aig_ptr *' at 0x7f7c803fa0c0> >"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"strat = spot.create_strategy(game)\n",
"aig = spot.strategy_to_aig(strat, \"isop\")\n",
"aig"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"By handing over the input and output propositions explicitly, you can force their appearance of the propositions in the circuit"
]
},
{
"cell_type": "code",
"execution_count": 24,
"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.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"229pt\" height=\"198pt\"\n",
" viewBox=\"0.00 0.00 229.39 198.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 194)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-194 225.3922,-194 225.3922,4 -4,4\"/>\n",
"<!-- 2 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"none\" stroke=\"#000000\" points=\"77.1961,-108 11.1961,-108 11.1961,-72 77.1961,-72 77.1961,-108\"/>\n",
"<text text-anchor=\"middle\" x=\"44.1961\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">L0_out</text>\n",
"</g>\n",
"<!-- o0o0 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>o0o0</title>\n",
"<polygon fill=\"none\" stroke=\"#000000\" points=\"44.1961,-144 88.5891,-178.5 -.197,-178.5 44.1961,-144\"/>\n",
"<text text-anchor=\"middle\" x=\"44.1961\" y=\"-163.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;o0o0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>2&#45;&gt;o0o0:s</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M44.1961,-108C44.1961,-116.2031 44.1961,-126.2373 44.1961,-135.9568\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"44.1961\" cy=\"-140\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- L0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>L0</title>\n",
"<polygon fill=\"none\" stroke=\"#000000\" points=\"149.1961,-108 95.1961,-108 95.1961,-72 149.1961,-72 149.1961,-108\"/>\n",
"<text text-anchor=\"middle\" x=\"122.1961\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">L0</text>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>0</title>\n",
"<polygon fill=\"none\" stroke=\"#000000\" points=\"178.6961,-36 119.6961,-36 119.6961,0 178.6961,0 178.6961,-36\"/>\n",
"<text text-anchor=\"middle\" x=\"149.1961\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">Const</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;L0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>0&#45;&gt;L0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M142.3828,-36.1686C139.4317,-44.0383 135.9103,-53.4288 132.6411,-62.1467\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"129.3352,-60.9945 129.1011,-71.5867 135.8895,-63.4524 129.3352,-60.9945\"/>\n",
"</g>\n",
"<!-- o1o1 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>o1o1</title>\n",
"<polygon fill=\"none\" stroke=\"#000000\" points=\"177.1961,-144 221.5891,-178.5 132.803,-178.5 177.1961,-144\"/>\n",
"<text text-anchor=\"middle\" x=\"177.1961\" y=\"-163.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">o1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;o1o1 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;o1o1:s</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M155.8317,-36.0824C163.4001,-58.2228 174.9827,-97.2894 176.9175,-133.7894\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"173.4246,-134.0992 177.1961,-144 180.422,-133.9082 173.4246,-134.0992\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.aig; proxy of <Swig Object of type 'spot::aig_ptr *' at 0x7f7c803fa510> >"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"aig2 = spot.strategy_to_aig(strat, \"isop\", [], [\"o0\", \"o1\"])\n",
"aig2"
]
}
],
"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.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 4
}