spot/tests/python/synthesis.ipynb
Florian Renkin d4967f20e9 Notebooks: correct typos
* tests/python/acc_cond.ipynb, tests/python/contains.ipynb,
tests/python/decompose.ipynb, tests/python/games.ipynb,
tests/python/randltl.ipynb, tests/python/synthesis.ipynb,
tests/python/testingaut.ipynb: here.
2021-11-06 11:56:05 +01:00

3901 lines
318 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import spot\n",
"spot.setup()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This notebook presents functions that can be used to solve the Reactive Synthesis problem using games.\n",
"If you are not familiar with how Spot represent games, please read the `games` notebook first.\n",
"\n",
"In Reactive Synthesis, the goal is to build an electronic circuit that reacts to some input signals by producing some output signals, under some LTL constraints that tie both input and output. Of course the input signals are not controlable, so only job is to decide what output signal to produce.\n",
"\n",
"# Reactive synthesis in three steps\n",
"\n",
"A strategy/control circuit can be derived more conveniently from an 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 a structure called `synthesis_info`. This structure stores some additional data needed to pass fine-tuning options or to store statistics.\n",
"\n",
"The `ltl_to_game` function takes the LTL specification, and the list of controlable atomic propositions (or output signals). It returns a two-player game, where player 0 plays the input variables (and wants to invalidate the acceptance condition), and player 1 plays the output variables (and wants to satisfy the output condition). The conversion from LTL to parity automata can use one of many algorithms, and can be specified in the `synthesis_info` structure (this works like the `--algo=` option of `ltlsynt`)."
]
},
{
"cell_type": "code",
"execution_count": 2,
"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 0x7f4d60cb1540> >"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"si = spot.synthesis_info()\n",
"si.s = spot.synthesis_info.algo_LAR # Use LAR algorithm\n",
"\n",
"game = spot.ltl_to_game(\"G((F(i0) && F(i1))->(G(i1<->(X(o0)))))\", [\"o0\"], si)\n",
"print(\"game has\", game.num_states(), \"states and\", game.num_edges(), \"edges\")\n",
"print(\"output propositions are:\", \", \".join(spot.get_synthesis_output_aps(game)))\n",
"display(game)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Solving the game, is done with `solve_game()` as with any game. There is also a version that takes a `synthesis_info` as second argument in case the time it takes has to be recorded. Here passing `si` or not makes no difference."
]
},
{
"cell_type": "code",
"execution_count": 3,
"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": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(\"Found a solution:\", spot.solve_game(game, si))\n",
"spot.highlight_strategy(game)\n",
"game.show('.g')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Once a strategy has been found, it can be extracted as an automaton and simplified using 6 different levels (the default is 2). The output should be interpreted as a mealy automaton, where transition are labeled by combination of input assignments and associated output assignments."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"simplification 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=\"236pt\"\n",
" viewBox=\"0.00 0.00 729.00 236.03\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(0.675 0.675) rotate(0) translate(4 345.6811)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-345.6811 1076,-345.6811 1076,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-232.6811\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-228.9811\" 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,-232.6811C4.178,-232.6811 17.9448,-232.6811 30.9241,-232.6811\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-232.6811 30.9808,-235.8312 34.4807,-232.6812 30.9807,-232.6812 30.9807,-232.6812 30.9807,-232.6812 34.4807,-232.6812 30.9807,-229.5312 37.9807,-232.6811 37.9807,-232.6811\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"237\" cy=\"-161.6811\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"237\" y=\"-157.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M73.028,-226.0016C105.4516,-213.283 176.1206,-185.562 213.2019,-171.0163\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"220.1491,-168.2912 214.7828,-173.7799 216.8908,-169.5693 213.6325,-170.8475 213.6325,-170.8475 213.6325,-170.8475 216.8908,-169.5693 212.4822,-167.915 220.1491,-168.2912 220.1491,-168.2912\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94,-218.1811 94,-237.1811 148,-237.1811 148,-218.1811 94,-218.1811\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-223.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"152\" y=\"-223.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"163,-218.1811 163,-237.1811 176,-237.1811 176,-218.1811 163,-218.1811\"/>\n",
"<text text-anchor=\"start\" x=\"165\" y=\"-223.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"447.5\" cy=\"-223.6811\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"447.5\" y=\"-219.9811\" 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.3788,-238.5315C79.2248,-240.2236 85.8299,-241.8401 92,-242.6811 129.872,-247.8434 139.7779,-242.7713 178,-242.6811 272.223,-242.4589 296.8925,-256.1387 390,-241.6811 401.4218,-239.9076 413.6964,-236.3115 423.9596,-232.7966\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"430.7083,-230.3996 425.1663,-235.7108 427.4101,-231.5711 424.112,-232.7425 424.112,-232.7425 424.112,-232.7425 427.4101,-231.5711 423.0577,-229.7742 430.7083,-230.3996 430.7083,-230.3996\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"198,-248.1811 198,-267.1811 248,-267.1811 248,-248.1811 198,-248.1811\"/>\n",
"<text text-anchor=\"start\" x=\"200\" y=\"-253.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"252\" y=\"-253.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"263,-248.1811 263,-267.1811 276,-267.1811 276,-248.1811 263,-248.1811\"/>\n",
"<text text-anchor=\"start\" x=\"265\" y=\"-253.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"447.5\" cy=\"-87.6811\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"447.5\" y=\"-83.9811\" 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.0796,-216.8288C71.6816,-206.1416 81.3074,-192.1386 92,-181.6811 131.8335,-142.7236 143.5431,-130.4607 196,-111.6811 274.8215,-83.4631 375.9185,-83.9818 422.255,-86.0719\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"429.4713,-86.4309 422.3234,-89.2291 425.9756,-86.2569 422.48,-86.083 422.48,-86.083 422.48,-86.083 425.9756,-86.2569 422.6365,-82.9369 429.4713,-86.4309 429.4713,-86.4309\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"198,-113.1811 198,-132.1811 248,-132.1811 248,-113.1811 198,-113.1811\"/>\n",
"<text text-anchor=\"start\" x=\"200\" y=\"-118.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"252\" y=\"-118.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"263,-113.1811 263,-132.1811 276,-132.1811 276,-113.1811 263,-113.1811\"/>\n",
"<text text-anchor=\"start\" x=\"265\" y=\"-118.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>4</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"878\" cy=\"-126.6811\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"878\" y=\"-122.9811\" 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=\"M69.9301,-244.6391C98.9375,-268.2695 168.811,-318.6811 237,-318.6811 237,-318.6811 237,-318.6811 660.5,-318.6811 761.7284,-318.6811 838.0661,-200.3464 866.205,-149.4778\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"869.7016,-143.0509 869.1232,-150.7053 868.0289,-146.1254 866.3562,-149.1999 866.3562,-149.1999 866.3562,-149.1999 868.0289,-146.1254 863.5892,-147.6944 869.7016,-143.0509 869.7016,-143.0509\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"410.5,-320.1811 410.5,-339.1811 457.5,-339.1811 457.5,-320.1811 410.5,-320.1811\"/>\n",
"<text text-anchor=\"start\" x=\"412.5\" y=\"-325.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"461.5\" y=\"-325.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"472.5,-320.1811 472.5,-339.1811 485.5,-339.1811 485.5,-320.1811 472.5,-320.1811\"/>\n",
"<text text-anchor=\"start\" x=\"474.5\" y=\"-325.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</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=\"M222.3621,-172.7383C213.1949,-184.4609 218.0742,-197.6811 237,-197.6811 252.6729,-197.6811 258.7129,-188.6148 255.1199,-178.8408\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"251.6379,-172.7383 257.843,-177.2571 253.3725,-175.7783 255.1071,-178.8182 255.1071,-178.8182 255.1071,-178.8182 253.3725,-175.7783 252.3711,-180.3794 251.6379,-172.7383 251.6379,-172.7383\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"190,-199.1811 190,-218.1811 244,-218.1811 244,-199.1811 190,-199.1811\"/>\n",
"<text text-anchor=\"start\" x=\"192\" y=\"-204.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"248\" y=\"-204.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"259,-199.1811 259,-218.1811 284,-218.1811 284,-199.1811 259,-199.1811\"/>\n",
"<text text-anchor=\"start\" x=\"261\" y=\"-204.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M252.5254,-170.9993C264.1427,-177.6141 280.6127,-186.2505 296,-191.6811 338.9998,-206.8571 391.5304,-215.9711 422.0831,-220.3936\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"429.3581,-221.4177 421.9873,-223.5611 425.8923,-220.9298 422.4264,-220.4419 422.4264,-220.4419 422.4264,-220.4419 425.8923,-220.9298 422.8656,-217.3226 429.3581,-221.4177 429.3581,-221.4177\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"298,-216.1811 298,-235.1811 348,-235.1811 348,-216.1811 298,-216.1811\"/>\n",
"<text text-anchor=\"start\" x=\"300\" y=\"-221.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"352\" y=\"-221.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"363,-216.1811 363,-235.1811 388,-235.1811 388,-216.1811 363,-216.1811\"/>\n",
"<text text-anchor=\"start\" x=\"365\" y=\"-221.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M253.9738,-155.4229C265.7281,-151.1424 281.7604,-145.4094 296,-140.6811 337.4931,-126.9032 348.89,-126.5631 390,-111.6811 401.5143,-107.5129 414.0889,-102.3381 424.5347,-97.862\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"431.059,-95.039 425.8855,-100.7098 427.8468,-96.4289 424.6346,-97.8188 424.6346,-97.8188 424.6346,-97.8188 427.8468,-96.4289 423.3837,-94.9278 431.059,-95.039 431.059,-95.039\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"298,-142.1811 298,-161.1811 348,-161.1811 348,-142.1811 298,-142.1811\"/>\n",
"<text text-anchor=\"start\" x=\"300\" y=\"-147.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"352\" y=\"-147.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"363,-142.1811 363,-161.1811 388,-161.1811 388,-142.1811 363,-142.1811\"/>\n",
"<text text-anchor=\"start\" x=\"365\" y=\"-147.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M255.0715,-162.4523C266.7468,-162.9114 282.2684,-163.4485 296,-163.6811 337.7718,-164.3889 348.2248,-164.1467 390,-163.6811 529.5816,-162.1255 564.7134,-165.8832 704,-156.6811 752.6311,-153.4683 765.139,-153.8809 813,-144.6811 826.7457,-142.039 841.827,-137.9396 853.9995,-134.3199\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"860.7982,-132.2588 855.0132,-137.3043 857.4488,-133.2743 854.0993,-134.2898 854.0993,-134.2898 854.0993,-134.2898 857.4488,-133.2743 853.1854,-131.2752 860.7982,-132.2588 860.7982,-132.2588\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"509,-165.1811 509,-184.1811 556,-184.1811 556,-165.1811 509,-165.1811\"/>\n",
"<text text-anchor=\"start\" x=\"511\" y=\"-170.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"560\" y=\"-170.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"571,-165.1811 571,-184.1811 596,-184.1811 596,-165.1811 571,-165.1811\"/>\n",
"<text text-anchor=\"start\" x=\"573\" y=\"-170.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M432.875,-234.3686C423.125,-246.1811 428,-259.6811 447.5,-259.6811 463.6484,-259.6811 469.7672,-250.423 465.8562,-240.5319\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"462.125,-234.3686 468.4449,-238.7254 463.9376,-237.3627 465.7503,-240.3568 465.7503,-240.3568 465.7503,-240.3568 463.9376,-237.3627 463.0556,-241.9882 462.125,-234.3686 462.125,-234.3686\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"417.5,-261.1811 417.5,-280.1811 437.5,-280.1811 437.5,-261.1811 417.5,-261.1811\"/>\n",
"<text text-anchor=\"start\" x=\"419.5\" y=\"-266.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"441.5\" y=\"-266.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"452.5,-261.1811 452.5,-280.1811 477.5,-280.1811 477.5,-261.1811 452.5,-261.1811\"/>\n",
"<text text-anchor=\"start\" x=\"454.5\" y=\"-266.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M465.334,-226.2282C520.2735,-233.2455 690.615,-248.7548 813,-191.6811 833.8128,-181.9752 851.7652,-162.6433 863.4967,-147.5737\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"867.8319,-141.8304 866.1289,-149.3152 865.7233,-144.6239 863.6147,-147.4175 863.6147,-147.4175 863.6147,-147.4175 865.7233,-144.6239 861.1005,-145.5197 867.8319,-141.8304 867.8319,-141.8304\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"632.5,-234.1811 632.5,-253.1811 649.5,-253.1811 649.5,-234.1811 632.5,-234.1811\"/>\n",
"<text text-anchor=\"start\" x=\"634.5\" y=\"-239.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"<text text-anchor=\"start\" x=\"653.5\" y=\"-239.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"664.5,-234.1811 664.5,-253.1811 689.5,-253.1811 689.5,-234.1811 664.5,-234.1811\"/>\n",
"<text text-anchor=\"start\" x=\"666.5\" y=\"-239.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M432.875,-98.3686C423.125,-110.1811 428,-123.6811 447.5,-123.6811 463.6484,-123.6811 469.7672,-114.423 465.8562,-104.5319\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"462.125,-98.3686 468.4449,-102.7254 463.9376,-101.3627 465.7503,-104.3568 465.7503,-104.3568 465.7503,-104.3568 463.9376,-101.3627 463.0556,-105.9882 462.125,-98.3686 462.125,-98.3686\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"404.5,-125.1811 404.5,-144.1811 454.5,-144.1811 454.5,-125.1811 404.5,-125.1811\"/>\n",
"<text text-anchor=\"start\" x=\"406.5\" y=\"-130.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"458.5\" y=\"-130.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"469.5,-125.1811 469.5,-144.1811 490.5,-144.1811 490.5,-125.1811 469.5,-125.1811\"/>\n",
"<text text-anchor=\"start\" x=\"471.5\" y=\"-130.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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=\"M464.2191,-95.3128C475.4898,-100.0731 490.8323,-105.8211 505,-108.6811 633.5914,-134.6399 791.9349,-130.8079 852.6598,-128.0614\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"859.9057,-127.7173 853.063,-131.1959 856.4097,-127.8834 852.9136,-128.0494 852.9136,-128.0494 852.9136,-128.0494 856.4097,-127.8834 852.7642,-124.903 859.9057,-127.7173 859.9057,-127.7173\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"619.5,-131.1811 619.5,-150.1811 666.5,-150.1811 666.5,-131.1811 619.5,-131.1811\"/>\n",
"<text text-anchor=\"start\" x=\"621.5\" y=\"-136.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"670.5\" y=\"-136.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"681.5,-131.1811 681.5,-150.1811 702.5,-150.1811 702.5,-131.1811 681.5,-131.1811\"/>\n",
"<text text-anchor=\"start\" x=\"683.5\" y=\"-136.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>5</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"1040\" cy=\"-49.6811\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1040\" y=\"-45.9811\" 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=\"M456.519,-72.0273C466.342,-56.5295 483.5561,-33.4622 505,-21.6811 549.127,2.5618 566.7948,-8.4697 617,-4.6811 789.2945,8.3203 834.5718,-7.7917 1004,-41.6811 1007.6727,-42.4158 1011.5467,-43.2324 1015.3383,-44.0552\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1022.4535,-45.6251 1014.9392,-47.1928 1019.0357,-44.871 1015.6179,-44.1168 1015.6179,-44.1168 1015.6179,-44.1168 1019.0357,-44.871 1016.2967,-41.0408 1022.4535,-45.6251 1022.4535,-45.6251\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"724.5,-7.1811 724.5,-26.1811 774.5,-26.1811 774.5,-7.1811 724.5,-7.1811\"/>\n",
"<text text-anchor=\"start\" x=\"726.5\" y=\"-12.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"778.5\" y=\"-12.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"789.5,-7.1811 789.5,-26.1811 810.5,-26.1811 810.5,-7.1811 789.5,-7.1811\"/>\n",
"<text text-anchor=\"start\" x=\"791.5\" y=\"-12.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"660.5\" cy=\"-31.6811\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"660.5\" y=\"-27.9811\" 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=\"M459.0755,-73.6097C469.659,-61.894 486.4523,-45.99 505,-38.6811 548.2938,-21.621 603.7002,-24.3444 635.3365,-27.9557\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"642.4684,-28.8316 635.1366,-31.1047 638.9945,-28.4049 635.5206,-27.9782 635.5206,-27.9782 635.5206,-27.9782 638.9945,-28.4049 635.9046,-24.8517 642.4684,-28.8316 642.4684,-28.8316\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"507,-40.1811 507,-59.1811 561,-59.1811 561,-40.1811 507,-40.1811\"/>\n",
"<text text-anchor=\"start\" x=\"509\" y=\"-45.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"565\" y=\"-45.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"576,-40.1811 576,-59.1811 597,-59.1811 597,-40.1811 576,-40.1811\"/>\n",
"<text text-anchor=\"start\" x=\"578\" y=\"-45.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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=\"M863.9938,-138.4805C856.257,-150.0117 860.9258,-162.6811 878,-162.6811 891.8728,-162.6811 897.556,-154.3173 895.0497,-144.9959\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"892.0062,-138.4805 897.8229,-143.4895 893.4875,-141.6516 894.9689,-144.8227 894.9689,-144.8227 894.9689,-144.8227 893.4875,-141.6516 892.1149,-146.1559 892.0062,-138.4805 892.0062,-138.4805\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"852,-164.1811 852,-183.1811 869,-183.1811 869,-164.1811 852,-164.1811\"/>\n",
"<text text-anchor=\"start\" x=\"854\" y=\"-169.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"<text text-anchor=\"start\" x=\"873\" y=\"-169.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"884,-164.1811 884,-183.1811 905,-183.1811 905,-164.1811 884,-164.1811\"/>\n",
"<text text-anchor=\"start\" x=\"886\" y=\"-169.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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=\"M896.2808,-127.1991C922.3182,-127.0754 970.621,-123.5767 1004,-101.6811 1014.7964,-94.599 1023.2702,-83.0511 1029.2772,-72.6345\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1032.6973,-66.3449 1032.1206,-73.9993 1031.0253,-69.4197 1029.3533,-72.4945 1029.3533,-72.4945 1029.3533,-72.4945 1031.0253,-69.4197 1026.5859,-70.9897 1032.6973,-66.3449 1032.6973,-66.3449\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"945.5,-125.1811 945.5,-144.1811 965.5,-144.1811 965.5,-125.1811 945.5,-125.1811\"/>\n",
"<text text-anchor=\"start\" x=\"947.5\" y=\"-130.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"969.5\" y=\"-130.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"980.5,-125.1811 980.5,-144.1811 1001.5,-144.1811 1001.5,-125.1811 980.5,-125.1811\"/>\n",
"<text text-anchor=\"start\" x=\"982.5\" y=\"-130.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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=\"M1022.0379,-51.9927C1001.9423,-55.0946 968.8227,-61.7748 943,-74.6811 925.5124,-83.4215 908.3559,-97.4454 896.0639,-108.728\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"890.7748,-113.6901 893.7246,-106.6033 893.3274,-111.2954 895.8799,-108.9006 895.8799,-108.9006 895.8799,-108.9006 893.3274,-111.2954 898.0351,-111.1979 890.7748,-113.6901 890.7748,-113.6901\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"945.5,-76.1811 945.5,-95.1811 962.5,-95.1811 962.5,-76.1811 945.5,-76.1811\"/>\n",
"<text text-anchor=\"start\" x=\"947.5\" y=\"-81.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"<text text-anchor=\"start\" x=\"966.5\" y=\"-81.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"977.5,-76.1811 977.5,-95.1811 1002.5,-95.1811 1002.5,-76.1811 977.5,-76.1811\"/>\n",
"<text text-anchor=\"start\" x=\"979.5\" y=\"-81.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M1029.0873,-64.0978C1025.2765,-74.8472 1028.9141,-85.6811 1040,-85.6811 1048.6609,-85.6811 1052.7757,-79.0686 1052.3443,-71.0499\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1050.9127,-64.0978 1055.4099,-70.3186 1051.6187,-67.5259 1052.3246,-70.954 1052.3246,-70.954 1052.3246,-70.954 1051.6187,-67.5259 1049.2394,-71.5893 1050.9127,-64.0978 1050.9127,-64.0978\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"1010,-87.1811 1010,-106.1811 1030,-106.1811 1030,-87.1811 1010,-87.1811\"/>\n",
"<text text-anchor=\"start\" x=\"1012\" y=\"-92.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"1034\" y=\"-92.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"1045,-87.1811 1045,-106.1811 1070,-106.1811 1070,-87.1811 1045,-87.1811\"/>\n",
"<text text-anchor=\"start\" x=\"1047\" y=\"-92.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M644.8347,-40.8689C632.7052,-47.5956 615.2814,-56.4316 599,-61.6811 555.9169,-75.5723 503.4134,-82.4699 472.8884,-85.543\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"465.6205,-86.2439 472.2858,-82.4364 469.1043,-85.9079 472.5882,-85.5719 472.5882,-85.5719 472.5882,-85.5719 469.1043,-85.9079 472.8906,-88.7073 465.6205,-86.2439 465.6205,-86.2439\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"507,-83.1811 507,-102.1811 557,-102.1811 557,-83.1811 507,-83.1811\"/>\n",
"<text text-anchor=\"start\" x=\"509\" y=\"-88.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"561\" y=\"-88.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"572,-83.1811 572,-102.1811 597,-102.1811 597,-83.1811 572,-83.1811\"/>\n",
"<text text-anchor=\"start\" x=\"574\" y=\"-88.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M677.7811,-37.2807C706.4336,-46.7788 765.3425,-67.2181 813,-89.6811 827.9031,-96.7056 844.0008,-105.8562 856.4478,-113.2997\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"862.5984,-117.0162 854.9781,-116.092 859.6028,-115.2061 856.6072,-113.396 856.6072,-113.396 856.6072,-113.396 859.6028,-115.2061 858.2364,-110.6999 862.5984,-117.0162 862.5984,-117.0162\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"724.5,-91.1811 724.5,-110.1811 771.5,-110.1811 771.5,-91.1811 724.5,-91.1811\"/>\n",
"<text text-anchor=\"start\" x=\"726.5\" y=\"-96.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"775.5\" y=\"-96.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"786.5,-91.1811 786.5,-110.1811 811.5,-110.1811 811.5,-91.1811 786.5,-91.1811\"/>\n",
"<text text-anchor=\"start\" x=\"788.5\" y=\"-96.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M678.5488,-32.5372C740.2304,-35.4628 942.7891,-45.0703 1014.5325,-48.4732\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1021.8407,-48.8198 1014.6993,-51.6346 1018.3447,-48.654 1014.8486,-48.4881 1014.8486,-48.4881 1014.8486,-48.4881 1018.3447,-48.654 1014.9979,-45.3416 1021.8407,-48.8198 1021.8407,-48.8198\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"833,-46.1811 833,-65.1811 883,-65.1811 883,-46.1811 833,-46.1811\"/>\n",
"<text text-anchor=\"start\" x=\"835\" y=\"-51.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"887\" y=\"-51.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"898,-46.1811 898,-65.1811 923,-65.1811 923,-46.1811 898,-46.1811\"/>\n",
"<text text-anchor=\"start\" x=\"900\" y=\"-51.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M645.5938,-42.3686C635.6563,-54.1811 640.625,-67.6811 660.5,-67.6811 676.959,-67.6811 683.1954,-58.423 679.2092,-48.5319\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"675.4063,-42.3686 681.7629,-46.6717 677.2442,-45.3472 679.0821,-48.3259 679.0821,-48.3259 679.0821,-48.3259 677.2442,-45.3472 676.4014,-49.98 675.4063,-42.3686 675.4063,-42.3686\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"613.5,-69.1811 613.5,-88.1811 667.5,-88.1811 667.5,-69.1811 613.5,-69.1811\"/>\n",
"<text text-anchor=\"start\" x=\"615.5\" y=\"-74.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"671.5\" y=\"-74.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"682.5,-69.1811 682.5,-88.1811 707.5,-88.1811 707.5,-69.1811 682.5,-69.1811\"/>\n",
"<text text-anchor=\"start\" x=\"684.5\" y=\"-74.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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": [
"simplification 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=\"479pt\" height=\"237pt\"\n",
" viewBox=\"0.00 0.00 479.00 236.82\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 232.8155)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-232.8155 475,-232.8155 475,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-57.8155\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-54.1155\" 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,-57.8155C4.178,-57.8155 17.9448,-57.8155 30.9241,-57.8155\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-57.8155 30.9808,-60.9656 34.4807,-57.8156 30.9807,-57.8156 30.9807,-57.8156 30.9807,-57.8156 34.4807,-57.8156 30.9807,-54.6656 37.9807,-57.8155 37.9807,-57.8155\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"237\" cy=\"-120.8155\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"237\" y=\"-117.1155\" 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=\"M65.7261,-73.5413C72.081,-82.4268 81.1956,-92.9073 92,-98.8155 129.8938,-119.5371 181.2311,-122.4573 211.5599,-122.069\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"218.797,-121.9078 211.8689,-125.213 215.2979,-121.9858 211.7987,-122.0637 211.7987,-122.0637 211.7987,-122.0637 215.2979,-121.9858 211.7285,-118.9145 218.797,-121.9078 218.797,-121.9078\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94,-121.3155 94,-140.3155 148,-140.3155 148,-121.3155 94,-121.3155\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-127.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"152\" y=\"-127.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"163,-121.3155 163,-140.3155 176,-140.3155 176,-121.3155 163,-121.3155\"/>\n",
"<text text-anchor=\"start\" x=\"165\" y=\"-127.1155\" 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.1865,-56.7447C98.7692,-55.9869 143.4933,-57.0772 178,-71.8155 193.9948,-78.6472 209.028,-91.2647 219.9165,-101.9848\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"224.9148,-107.0614 217.759,-104.2834 222.4592,-104.5673 220.0036,-102.0733 220.0036,-102.0733 220.0036,-102.0733 222.4592,-104.5673 222.2482,-99.8633 224.9148,-107.0614 224.9148,-107.0614\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"96,-73.3155 96,-92.3155 146,-92.3155 146,-73.3155 96,-73.3155\"/>\n",
"<text text-anchor=\"start\" x=\"98\" y=\"-79.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"150\" y=\"-79.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"161,-73.3155 161,-92.3155 174,-92.3155 174,-73.3155 161,-73.3155\"/>\n",
"<text text-anchor=\"start\" x=\"163\" y=\"-79.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"426\" cy=\"-97.8155\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"426\" y=\"-94.1155\" 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.665,-53.355C125.1345,-41.2987 278.382,-12.1252 390,-60.8155 398.2148,-64.399 405.505,-70.8287 411.3394,-77.3341\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"415.8863,-82.7557 408.9745,-79.4164 413.6372,-80.0739 411.3881,-77.3922 411.3881,-77.3922 411.3881,-77.3922 413.6372,-80.0739 413.8017,-75.368 415.8863,-82.7557 415.8863,-82.7557\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"198,-36.3155 198,-55.3155 248,-55.3155 248,-36.3155 198,-36.3155\"/>\n",
"<text text-anchor=\"start\" x=\"200\" y=\"-42.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"252\" y=\"-42.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"263,-36.3155 263,-55.3155 276,-55.3155 276,-36.3155 263,-36.3155\"/>\n",
"<text text-anchor=\"start\" x=\"265\" y=\"-42.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</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=\"M69.9253,-45.8464C76.3009,-40.8877 84.1703,-35.4561 92,-31.8155 167.6887,3.3773 195.1128,4.0343 278,-5.8155 328.846,-11.8577 349.2617,-1.7958 390,-32.8155 403.4946,-43.0909 412.6239,-59.9579 418.3123,-73.9349\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"420.8323,-80.5226 415.3892,-75.1102 419.5818,-77.2536 418.3312,-73.9847 418.3312,-73.9847 418.3312,-73.9847 419.5818,-77.2536 421.2733,-72.8592 420.8323,-80.5226 420.8323,-80.5226\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"200,-7.3155 200,-26.3155 247,-26.3155 247,-7.3155 200,-7.3155\"/>\n",
"<text text-anchor=\"start\" x=\"202\" y=\"-13.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"251\" y=\"-13.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"262,-7.3155 262,-26.3155 275,-26.3155 275,-7.3155 262,-7.3155\"/>\n",
"<text text-anchor=\"start\" x=\"264\" y=\"-13.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</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=\"M228.1939,-136.7316C225.8967,-146.9659 228.832,-156.8155 237,-156.8155 243.2536,-156.8155 246.4399,-151.0419 246.559,-143.7423\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"245.8061,-136.7316 249.6857,-143.3551 246.1799,-140.2115 246.5537,-143.6915 246.5537,-143.6915 246.5537,-143.6915 246.1799,-140.2115 243.4217,-144.0279 245.8061,-136.7316 245.8061,-136.7316\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"192,-158.3155 192,-177.3155 242,-177.3155 242,-158.3155 192,-158.3155\"/>\n",
"<text text-anchor=\"start\" x=\"194\" y=\"-164.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"246\" y=\"-164.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"257,-158.3155 257,-177.3155 282,-177.3155 282,-158.3155 257,-158.3155\"/>\n",
"<text text-anchor=\"start\" x=\"259\" y=\"-164.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M224.6173,-134.0948C212.5521,-153.7801 216.6797,-179.8155 237,-179.8155 255.0978,-179.8155 260.3513,-159.1639 252.7604,-140.7396\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"249.3827,-134.0948 255.3628,-138.9074 250.9687,-137.2148 252.5548,-140.3349 252.5548,-140.3349 252.5548,-140.3349 250.9687,-137.2148 249.7467,-141.7623 249.3827,-134.0948 249.3827,-134.0948\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"190,-181.3155 190,-200.3155 244,-200.3155 244,-181.3155 190,-181.3155\"/>\n",
"<text text-anchor=\"start\" x=\"192\" y=\"-187.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"248\" y=\"-187.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"259,-181.3155 259,-200.3155 284,-200.3155 284,-181.3155 259,-181.3155\"/>\n",
"<text text-anchor=\"start\" x=\"261\" y=\"-187.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M245.2252,-137.1812C254.7983,-154.1886 272.3644,-179.8257 296,-190.8155 333.8829,-208.4299 355.5366,-214.4302 390,-190.8155 401.6341,-182.8437 413.0404,-147.3531 419.7971,-122.5982\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"421.6578,-115.618 422.8984,-123.1932 420.7563,-118.9999 419.8547,-122.3818 419.8547,-122.3818 419.8547,-122.3818 420.7563,-118.9999 416.811,-121.5704 421.6578,-115.618 421.6578,-115.618\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"300,-207.3155 300,-226.3155 347,-226.3155 347,-207.3155 300,-207.3155\"/>\n",
"<text text-anchor=\"start\" x=\"302\" y=\"-213.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"351\" y=\"-213.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"362,-207.3155 362,-226.3155 387,-226.3155 387,-207.3155 362,-207.3155\"/>\n",
"<text text-anchor=\"start\" x=\"364\" y=\"-213.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M253.1307,-129.288C282.1015,-143.2559 344.1922,-167.43 390,-144.8155 400.3339,-139.7139 408.5215,-130.065 414.4606,-120.8308\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"418.2118,-114.5651 417.3187,-122.1891 416.4139,-117.5681 414.6161,-120.571 414.6161,-120.571 414.6161,-120.571 416.4139,-117.5681 411.9134,-118.953 418.2118,-114.5651 418.2118,-114.5651\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"298,-155.3155 298,-174.3155 348,-174.3155 348,-155.3155 298,-155.3155\"/>\n",
"<text text-anchor=\"start\" x=\"300\" y=\"-161.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"352\" y=\"-161.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"363,-155.3155 363,-174.3155 388,-174.3155 388,-155.3155 363,-155.3155\"/>\n",
"<text text-anchor=\"start\" x=\"365\" y=\"-161.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M407.9328,-100.0142C374.1072,-104.1305 301.1494,-113.009 262.3952,-117.7251\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"255.1221,-118.6102 261.6903,-114.6376 258.5965,-118.1873 262.0709,-117.7645 262.0709,-117.7645 262.0709,-117.7645 258.5965,-118.1873 262.4514,-120.8914 255.1221,-118.6102 255.1221,-118.6102\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"300,-114.3155 300,-133.3155 350,-133.3155 350,-114.3155 300,-114.3155\"/>\n",
"<text text-anchor=\"start\" x=\"302\" y=\"-120.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"354\" y=\"-120.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"365,-114.3155 365,-133.3155 386,-133.3155 386,-114.3155 365,-114.3155\"/>\n",
"<text text-anchor=\"start\" x=\"367\" y=\"-120.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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=\"M411.8693,-86.1383C405.5789,-81.6718 397.8309,-77.1035 390,-74.8155 349.8988,-63.099 335.5085,-61.234 296,-74.8155 280.1013,-80.2809 265.1967,-91.9793 254.3454,-102.2104\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"249.0565,-107.3862 251.8563,-100.2388 251.558,-104.9382 254.0595,-102.4902 254.0595,-102.4902 254.0595,-102.4902 251.558,-104.9382 256.2627,-104.7415 249.0565,-107.3862 249.0565,-107.3862\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"298,-76.3155 298,-95.3155 352,-95.3155 352,-76.3155 298,-76.3155\"/>\n",
"<text text-anchor=\"start\" x=\"300\" y=\"-82.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"356\" y=\"-82.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"367,-76.3155 367,-95.3155 388,-95.3155 388,-76.3155 367,-76.3155\"/>\n",
"<text text-anchor=\"start\" x=\"369\" y=\"-82.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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=\"M418.793,-114.4796C417.1914,-124.4405 419.5938,-133.8155 426,-133.8155 430.8047,-133.8155 433.3572,-128.5421 433.6575,-121.7031\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"433.207,-114.4796 436.7867,-121.2699 433.4249,-117.9728 433.6428,-121.466 433.6428,-121.466 433.6428,-121.466 433.4249,-117.9728 430.4989,-121.6621 433.207,-114.4796 433.207,-114.4796\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"385,-135.3155 385,-154.3155 432,-154.3155 432,-135.3155 385,-135.3155\"/>\n",
"<text text-anchor=\"start\" x=\"387\" y=\"-141.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"436\" y=\"-141.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"447,-135.3155 447,-154.3155 468,-154.3155 468,-135.3155 447,-135.3155\"/>\n",
"<text text-anchor=\"start\" x=\"449\" y=\"-141.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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=\"M415.3556,-112.5532C406.5163,-132.0407 410.0645,-156.8155 426,-156.8155 440.0681,-156.8155 444.482,-137.5071 439.2417,-119.5738\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"436.6444,-112.5532 442.0276,-118.0254 437.8588,-115.8358 439.0732,-119.1184 439.0732,-119.1184 439.0732,-119.1184 437.8588,-115.8358 436.1189,-120.2114 436.6444,-112.5532 436.6444,-112.5532\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"383,-158.3155 383,-177.3155 433,-177.3155 433,-158.3155 383,-158.3155\"/>\n",
"<text text-anchor=\"start\" x=\"385\" y=\"-164.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"437\" y=\"-164.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"448,-158.3155 448,-177.3155 469,-177.3155 469,-158.3155 448,-158.3155\"/>\n",
"<text text-anchor=\"start\" x=\"450\" y=\"-164.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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": [
"simplification 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=\"279pt\" height=\"181pt\"\n",
" viewBox=\"0.00 0.00 279.00 181.23\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 177.232)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-177.232 275,-177.232 275,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 1 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-73.232\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-69.532\" 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,-73.232C4.178,-73.232 17.9448,-73.232 30.9241,-73.232\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-73.232 30.9808,-76.382 34.4807,-73.232 30.9807,-73.232 30.9807,-73.232 30.9807,-73.232 34.4807,-73.232 30.9807,-70.082 37.9807,-73.232 37.9807,-73.232\"/>\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,-91.0137C52.2144,-100.5469 53.293,-109.232 56,-109.232 57.988,-109.232 59.0977,-104.548 59.3292,-98.2841\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"59.2357,-91.0137 62.4756,-97.9726 59.2808,-94.5134 59.3258,-98.0131 59.3258,-98.0131 59.3258,-98.0131 59.2808,-94.5134 56.1761,-98.0536 59.2357,-91.0137 59.2357,-91.0137\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"15,-110.732 15,-129.732 62,-129.732 62,-110.732 15,-110.732\"/>\n",
"<text text-anchor=\"start\" x=\"17\" y=\"-116.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"66\" y=\"-116.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"77,-110.732 77,-129.732 98,-129.732 98,-110.732 77,-110.732\"/>\n",
"<text text-anchor=\"start\" x=\"79\" y=\"-116.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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.8337,-90.6434C47.5982,-109.6474 49.3203,-132.232 56,-132.232 61.8447,-132.232 63.8938,-114.9407 62.1472,-97.8866\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"61.1663,-90.6434 65.2273,-97.1573 61.6361,-94.1117 62.1058,-97.58 62.1058,-97.58 62.1058,-97.58 61.6361,-94.1117 58.9843,-98.0028 61.1663,-90.6434 61.1663,-90.6434\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"13,-133.732 13,-152.732 63,-152.732 63,-133.732 13,-133.732\"/>\n",
"<text text-anchor=\"start\" x=\"15\" y=\"-139.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"67\" y=\"-139.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"78,-133.732 78,-152.732 99,-152.732 99,-133.732 78,-133.732\"/>\n",
"<text text-anchor=\"start\" x=\"80\" y=\"-139.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"222\" cy=\"-73.232\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"222\" y=\"-69.532\" 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=\"M63.7882,-89.9815C69.8139,-100.7859 79.2814,-113.953 92,-120.232 129.4614,-138.7259 148.5386,-138.7259 186,-120.232 196.3339,-115.1303 204.5215,-105.4814 210.4606,-96.2472\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"214.2118,-89.9815 213.3187,-97.6055 212.4139,-92.9845 210.6161,-95.9875 210.6161,-95.9875 210.6161,-95.9875 212.4139,-92.9845 207.9134,-94.3694 214.2118,-89.9815 214.2118,-89.9815\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"96,-134.732 96,-153.732 146,-153.732 146,-134.732 96,-134.732\"/>\n",
"<text text-anchor=\"start\" x=\"98\" y=\"-140.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"150\" y=\"-140.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"161,-134.732 161,-153.732 182,-153.732 182,-134.732 161,-134.732\"/>\n",
"<text text-anchor=\"start\" x=\"163\" y=\"-140.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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.3121,-73.839C79.9813,-74.0005 86.2483,-74.1521 92,-74.232 133.7738,-74.812 144.2262,-74.812 186,-74.232 189.4151,-74.1845 193.0118,-74.1118 196.5572,-74.0268\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"203.6879,-73.839 196.7733,-77.1723 200.1891,-73.9312 196.6904,-74.0233 196.6904,-74.0233 196.6904,-74.0233 200.1891,-73.9312 196.6074,-70.8744 203.6879,-73.839 203.6879,-73.839\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94,-75.732 94,-94.732 148,-94.732 148,-75.732 94,-75.732\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-81.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"152\" y=\"-81.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"163,-75.732 163,-94.732 184,-94.732 184,-75.732 163,-75.732\"/>\n",
"<text text-anchor=\"start\" x=\"165\" y=\"-81.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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=\"M207.7962,-62.0563C201.4934,-57.783 193.756,-53.4142 186,-51.232 145.7838,-39.9165 132.2162,-39.9165 92,-51.232 86.5466,-52.7664 81.1023,-55.3817 76.1595,-58.2849\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"70.2038,-62.0563 74.4325,-55.65 73.1608,-60.1838 76.1178,-58.3112 76.1178,-58.3112 76.1178,-58.3112 73.1608,-60.1838 77.8031,-60.9725 70.2038,-62.0563 70.2038,-62.0563\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"96,-52.732 96,-71.732 143,-71.732 143,-52.732 96,-52.732\"/>\n",
"<text text-anchor=\"start\" x=\"98\" y=\"-58.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"147\" y=\"-58.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"158,-52.732 158,-71.732 183,-71.732 183,-52.732 158,-52.732\"/>\n",
"<text text-anchor=\"start\" x=\"160\" y=\"-58.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M216.4776,-55.8036C211.0953,-42.056 201.4317,-23.8163 186,-15.232 149.4909,5.0773 128.5091,5.0773 92,-15.232 78.9795,-22.475 70.0654,-36.5918 64.3646,-49.0844\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"61.5224,-55.8036 61.3484,-48.1295 62.886,-52.5801 64.2495,-49.3567 64.2495,-49.3567 64.2495,-49.3567 62.886,-52.5801 67.1506,-50.5838 61.5224,-55.8036 61.5224,-55.8036\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94,-16.732 94,-35.732 144,-35.732 144,-16.732 94,-16.732\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-22.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"148\" y=\"-22.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"159,-16.732 159,-35.732 184,-35.732 184,-16.732 159,-16.732\"/>\n",
"<text text-anchor=\"start\" x=\"161\" y=\"-22.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M214.793,-89.896C213.1914,-99.857 215.5938,-109.232 222,-109.232 226.8047,-109.232 229.3572,-103.9585 229.6575,-97.1195\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"229.207,-89.896 232.7867,-96.6864 229.4249,-93.3892 229.6428,-96.8824 229.6428,-96.8824 229.6428,-96.8824 229.4249,-93.3892 226.4989,-97.0785 229.207,-89.896 229.207,-89.896\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"177,-110.732 177,-129.732 227,-129.732 227,-110.732 177,-110.732\"/>\n",
"<text text-anchor=\"start\" x=\"179\" y=\"-116.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"231\" y=\"-116.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"242,-110.732 242,-129.732 267,-129.732 267,-110.732 242,-110.732\"/>\n",
"<text text-anchor=\"start\" x=\"244\" y=\"-116.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M211.3556,-87.9697C202.5163,-107.4572 206.0645,-132.232 222,-132.232 236.0681,-132.232 240.482,-112.9235 235.2417,-94.9902\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"232.6444,-87.9697 238.0276,-93.4419 233.8588,-91.2522 235.0732,-94.5348 235.0732,-94.5348 235.0732,-94.5348 233.8588,-91.2522 232.1189,-95.6278 232.6444,-87.9697 232.6444,-87.9697\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"175,-133.732 175,-152.732 229,-152.732 229,-133.732 175,-133.732\"/>\n",
"<text text-anchor=\"start\" x=\"177\" y=\"-139.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"233\" y=\"-139.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"244,-133.732 244,-152.732 269,-152.732 269,-133.732 244,-133.732\"/>\n",
"<text text-anchor=\"start\" x=\"246\" y=\"-139.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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": [
"simplification 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=\"229pt\" height=\"99pt\"\n",
" viewBox=\"0.00 0.00 229.00 99.26\" 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 95.2559)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-95.2559 225,-95.2559 225,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-32.2559\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-28.5559\" 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.2559C4.178,-32.2559 17.9448,-32.2559 30.9241,-32.2559\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-32.2559 30.9808,-35.406 34.4807,-32.256 30.9807,-32.256 30.9807,-32.256 30.9807,-32.256 34.4807,-32.256 30.9807,-29.106 37.9807,-32.2559 37.9807,-32.2559\"/>\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,-49.2932C48.3189,-59.1139 50.4453,-68.2559 56,-68.2559 60.166,-68.2559 62.4036,-63.1135 62.7128,-56.3992\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"62.3792,-49.2932 65.8541,-56.1378 62.5434,-52.7894 62.7076,-56.2855 62.7076,-56.2855 62.7076,-56.2855 62.5434,-52.7894 59.561,-56.4333 62.3792,-49.2932 62.3792,-49.2932\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"30,-69.7559 30,-88.7559 47,-88.7559 47,-69.7559 30,-69.7559\"/>\n",
"<text text-anchor=\"start\" x=\"32\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"<text text-anchor=\"start\" x=\"51\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"62,-69.7559 62,-88.7559 83,-88.7559 83,-69.7559 62,-69.7559\"/>\n",
"<text text-anchor=\"start\" x=\"64\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"189\" cy=\"-32.2559\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"189\" y=\"-28.5559\" 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.3121,-32.863C79.9813,-33.0245 86.2483,-33.1761 92,-33.2559 119.1085,-33.6324 125.8915,-33.6324 153,-33.2559 156.4151,-33.2085 160.0118,-33.1358 163.5572,-33.0508\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"170.6879,-32.863 163.7733,-36.1962 167.1891,-32.9552 163.6904,-33.0473 163.6904,-33.0473 163.6904,-33.0473 167.1891,-32.9552 163.6074,-29.8984 170.6879,-32.863 170.6879,-32.863\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94.5,-34.7559 94.5,-53.7559 114.5,-53.7559 114.5,-34.7559 94.5,-34.7559\"/>\n",
"<text text-anchor=\"start\" x=\"96.5\" y=\"-40.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"118.5\" y=\"-40.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"129.5,-34.7559 129.5,-53.7559 150.5,-53.7559 150.5,-34.7559 129.5,-34.7559\"/>\n",
"<text text-anchor=\"start\" x=\"131.5\" y=\"-40.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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=\"M175.7776,-19.6276C169.4162,-14.4117 161.3626,-8.96 153,-6.2559 127.204,2.0853 117.796,2.0853 92,-6.2559 85.9894,-8.1995 80.1384,-11.5625 74.9606,-15.2371\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"69.2224,-19.6276 72.8676,-12.8722 72.0021,-17.5008 74.7818,-15.3739 74.7818,-15.3739 74.7818,-15.3739 72.0021,-17.5008 76.6959,-17.8756 69.2224,-19.6276 69.2224,-19.6276\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94.5,-7.7559 94.5,-26.7559 111.5,-26.7559 111.5,-7.7559 94.5,-7.7559\"/>\n",
"<text text-anchor=\"start\" x=\"96.5\" y=\"-13.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"<text text-anchor=\"start\" x=\"115.5\" y=\"-13.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"126.5,-7.7559 126.5,-26.7559 151.5,-26.7559 151.5,-7.7559 126.5,-7.7559\"/>\n",
"<text text-anchor=\"start\" x=\"128.5\" y=\"-13.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M178.0873,-46.6726C174.2765,-57.422 177.9141,-68.2559 189,-68.2559 197.6609,-68.2559 201.7757,-61.6434 201.3443,-53.6247\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"199.9127,-46.6726 204.4099,-52.8934 200.6187,-50.1007 201.3246,-53.5288 201.3246,-53.5288 201.3246,-53.5288 200.6187,-50.1007 198.2394,-54.1641 199.9127,-46.6726 199.9127,-46.6726\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"159,-69.7559 159,-88.7559 179,-88.7559 179,-69.7559 159,-69.7559\"/>\n",
"<text text-anchor=\"start\" x=\"161\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"183\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"194,-69.7559 194,-88.7559 219,-88.7559 219,-69.7559 194,-69.7559\"/>\n",
"<text text-anchor=\"start\" x=\"196\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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": [
"simplification 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=\"226pt\" height=\"99pt\"\n",
" viewBox=\"0.00 0.00 225.50 99.26\" 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 95.2559)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-95.2559 221.5,-95.2559 221.5,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-32.2559\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-28.5559\" 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.2559C4.178,-32.2559 17.9448,-32.2559 30.9241,-32.2559\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-32.2559 30.9808,-35.406 34.4807,-32.256 30.9807,-32.256 30.9807,-32.256 30.9807,-32.256 34.4807,-32.256 30.9807,-29.106 37.9807,-32.2559 37.9807,-32.2559\"/>\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,-49.2932C48.3189,-59.1139 50.4453,-68.2559 56,-68.2559 60.166,-68.2559 62.4036,-63.1135 62.7128,-56.3992\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"62.3792,-49.2932 65.8541,-56.1378 62.5434,-52.7894 62.7076,-56.2855 62.7076,-56.2855 62.7076,-56.2855 62.5434,-52.7894 59.561,-56.4333 62.3792,-49.2932 62.3792,-49.2932\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"26,-69.7559 26,-88.7559 46,-88.7559 46,-69.7559 26,-69.7559\"/>\n",
"<text text-anchor=\"start\" x=\"28\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"50\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"61,-69.7559 61,-88.7559 86,-88.7559 86,-69.7559 61,-69.7559\"/>\n",
"<text text-anchor=\"start\" x=\"63\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"189\" cy=\"-32.2559\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"189\" y=\"-28.5559\" 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.3121,-32.863C79.9813,-33.0245 86.2483,-33.1761 92,-33.2559 119.1085,-33.6324 125.8915,-33.6324 153,-33.2559 156.4151,-33.2085 160.0118,-33.1358 163.5572,-33.0508\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"170.6879,-32.863 163.7733,-36.1962 167.1891,-32.9552 163.6904,-33.0473 163.6904,-33.0473 163.6904,-33.0473 167.1891,-32.9552 163.6074,-29.8984 170.6879,-32.863 170.6879,-32.863\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94.5,-34.7559 94.5,-53.7559 111.5,-53.7559 111.5,-34.7559 94.5,-34.7559\"/>\n",
"<text text-anchor=\"start\" x=\"96.5\" y=\"-40.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"<text text-anchor=\"start\" x=\"115.5\" y=\"-40.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"126.5,-34.7559 126.5,-53.7559 151.5,-53.7559 151.5,-34.7559 126.5,-34.7559\"/>\n",
"<text text-anchor=\"start\" x=\"128.5\" y=\"-40.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M175.7776,-19.6276C169.4162,-14.4117 161.3626,-8.96 153,-6.2559 127.204,2.0853 117.796,2.0853 92,-6.2559 85.9894,-8.1995 80.1384,-11.5625 74.9606,-15.2371\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"69.2224,-19.6276 72.8676,-12.8722 72.0021,-17.5008 74.7818,-15.3739 74.7818,-15.3739 74.7818,-15.3739 72.0021,-17.5008 76.6959,-17.8756 69.2224,-19.6276 69.2224,-19.6276\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94.5,-7.7559 94.5,-26.7559 114.5,-26.7559 114.5,-7.7559 94.5,-7.7559\"/>\n",
"<text text-anchor=\"start\" x=\"96.5\" y=\"-13.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"118.5\" y=\"-13.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"129.5,-7.7559 129.5,-26.7559 150.5,-26.7559 150.5,-7.7559 129.5,-7.7559\"/>\n",
"<text text-anchor=\"start\" x=\"131.5\" y=\"-13.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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=\"M178.0873,-46.6726C174.2765,-57.422 177.9141,-68.2559 189,-68.2559 197.6609,-68.2559 201.7757,-61.6434 201.3443,-53.6247\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"199.9127,-46.6726 204.4099,-52.8934 200.6187,-50.1007 201.3246,-53.5288 201.3246,-53.5288 201.3246,-53.5288 200.6187,-50.1007 198.2394,-54.1641 199.9127,-46.6726 199.9127,-46.6726\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"163,-69.7559 163,-88.7559 180,-88.7559 180,-69.7559 163,-69.7559\"/>\n",
"<text text-anchor=\"start\" x=\"165\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"<text text-anchor=\"start\" x=\"184\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"195,-69.7559 195,-88.7559 216,-88.7559 216,-69.7559 195,-69.7559\"/>\n",
"<text text-anchor=\"start\" x=\"197\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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": [
"simplification 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=\"229pt\" height=\"99pt\"\n",
" viewBox=\"0.00 0.00 229.00 99.26\" 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 95.2559)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-95.2559 225,-95.2559 225,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-32.2559\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-28.5559\" 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.2559C4.178,-32.2559 17.9448,-32.2559 30.9241,-32.2559\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-32.2559 30.9808,-35.406 34.4807,-32.256 30.9807,-32.256 30.9807,-32.256 30.9807,-32.256 34.4807,-32.256 30.9807,-29.106 37.9807,-32.2559 37.9807,-32.2559\"/>\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,-49.2932C48.3189,-59.1139 50.4453,-68.2559 56,-68.2559 60.166,-68.2559 62.4036,-63.1135 62.7128,-56.3992\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"62.3792,-49.2932 65.8541,-56.1378 62.5434,-52.7894 62.7076,-56.2855 62.7076,-56.2855 62.7076,-56.2855 62.5434,-52.7894 59.561,-56.4333 62.3792,-49.2932 62.3792,-49.2932\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"30,-69.7559 30,-88.7559 47,-88.7559 47,-69.7559 30,-69.7559\"/>\n",
"<text text-anchor=\"start\" x=\"32\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"<text text-anchor=\"start\" x=\"51\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"62,-69.7559 62,-88.7559 83,-88.7559 83,-69.7559 62,-69.7559\"/>\n",
"<text text-anchor=\"start\" x=\"64\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"189\" cy=\"-32.2559\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"189\" y=\"-28.5559\" 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.3121,-32.863C79.9813,-33.0245 86.2483,-33.1761 92,-33.2559 119.1085,-33.6324 125.8915,-33.6324 153,-33.2559 156.4151,-33.2085 160.0118,-33.1358 163.5572,-33.0508\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"170.6879,-32.863 163.7733,-36.1962 167.1891,-32.9552 163.6904,-33.0473 163.6904,-33.0473 163.6904,-33.0473 167.1891,-32.9552 163.6074,-29.8984 170.6879,-32.863 170.6879,-32.863\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94.5,-34.7559 94.5,-53.7559 114.5,-53.7559 114.5,-34.7559 94.5,-34.7559\"/>\n",
"<text text-anchor=\"start\" x=\"96.5\" y=\"-40.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"118.5\" y=\"-40.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"129.5,-34.7559 129.5,-53.7559 150.5,-53.7559 150.5,-34.7559 129.5,-34.7559\"/>\n",
"<text text-anchor=\"start\" x=\"131.5\" y=\"-40.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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=\"M175.7776,-19.6276C169.4162,-14.4117 161.3626,-8.96 153,-6.2559 127.204,2.0853 117.796,2.0853 92,-6.2559 85.9894,-8.1995 80.1384,-11.5625 74.9606,-15.2371\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"69.2224,-19.6276 72.8676,-12.8722 72.0021,-17.5008 74.7818,-15.3739 74.7818,-15.3739 74.7818,-15.3739 72.0021,-17.5008 76.6959,-17.8756 69.2224,-19.6276 69.2224,-19.6276\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94.5,-7.7559 94.5,-26.7559 111.5,-26.7559 111.5,-7.7559 94.5,-7.7559\"/>\n",
"<text text-anchor=\"start\" x=\"96.5\" y=\"-13.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"<text text-anchor=\"start\" x=\"115.5\" y=\"-13.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"126.5,-7.7559 126.5,-26.7559 151.5,-26.7559 151.5,-7.7559 126.5,-7.7559\"/>\n",
"<text text-anchor=\"start\" x=\"128.5\" y=\"-13.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M178.0873,-46.6726C174.2765,-57.422 177.9141,-68.2559 189,-68.2559 197.6609,-68.2559 201.7757,-61.6434 201.3443,-53.6247\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"199.9127,-46.6726 204.4099,-52.8934 200.6187,-50.1007 201.3246,-53.5288 201.3246,-53.5288 201.3246,-53.5288 200.6187,-50.1007 198.2394,-54.1641 199.9127,-46.6726 199.9127,-46.6726\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"159,-69.7559 159,-88.7559 179,-88.7559 179,-69.7559 159,-69.7559\"/>\n",
"<text text-anchor=\"start\" x=\"161\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"183\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"194,-69.7559 194,-88.7559 219,-88.7559 219,-69.7559 194,-69.7559\"/>\n",
"<text text-anchor=\"start\" x=\"196\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.jupyter.SVG object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# We have different levels of simplification:\n",
"# 0 : No simplification\n",
"# 1 : bisimulation-based reduction\n",
"# 2 : bisimulation-based reduction with output 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(\"simplification lvl\", i)\n",
" si.minimize_lvl = i\n",
" strat = spot.create_strategy(game, si)\n",
" display(strat.show())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Alternatively, the `apply_strategy` is a more low-level function that can be used to restrict the automaton to the part where player 1 is winning, without simplifying it. It's second argument controls whether pairs of transitions corresponding to each player should be fused back into a single transition. The third argument controls whether the game's acceptance condition should be copied."
]
},
{
"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=\"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 0x7f4d61543bd0> >"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"spot.apply_strategy(game, False, False)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"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=\"236pt\"\n",
" viewBox=\"0.00 0.00 729.00 236.03\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(0.675 0.675) rotate(0) translate(4 345.6811)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-345.6811 1076,-345.6811 1076,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-232.6811\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-228.9811\" 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,-232.6811C4.178,-232.6811 17.9448,-232.6811 30.9241,-232.6811\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-232.6811 30.9808,-235.8312 34.4807,-232.6812 30.9807,-232.6812 30.9807,-232.6812 30.9807,-232.6812 34.4807,-232.6812 30.9807,-229.5312 37.9807,-232.6811 37.9807,-232.6811\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"237\" cy=\"-161.6811\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"237\" y=\"-157.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M73.028,-226.0016C105.4516,-213.283 176.1206,-185.562 213.2019,-171.0163\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"220.1491,-168.2912 214.7828,-173.7799 216.8908,-169.5693 213.6325,-170.8475 213.6325,-170.8475 213.6325,-170.8475 216.8908,-169.5693 212.4822,-167.915 220.1491,-168.2912 220.1491,-168.2912\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94,-218.1811 94,-237.1811 148,-237.1811 148,-218.1811 94,-218.1811\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-223.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"152\" y=\"-223.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"163,-218.1811 163,-237.1811 176,-237.1811 176,-218.1811 163,-218.1811\"/>\n",
"<text text-anchor=\"start\" x=\"165\" y=\"-223.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"447.5\" cy=\"-223.6811\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"447.5\" y=\"-219.9811\" 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.3788,-238.5315C79.2248,-240.2236 85.8299,-241.8401 92,-242.6811 129.872,-247.8434 139.7779,-242.7713 178,-242.6811 272.223,-242.4589 296.8925,-256.1387 390,-241.6811 401.4218,-239.9076 413.6964,-236.3115 423.9596,-232.7966\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"430.7083,-230.3996 425.1663,-235.7108 427.4101,-231.5711 424.112,-232.7425 424.112,-232.7425 424.112,-232.7425 427.4101,-231.5711 423.0577,-229.7742 430.7083,-230.3996 430.7083,-230.3996\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"198,-248.1811 198,-267.1811 248,-267.1811 248,-248.1811 198,-248.1811\"/>\n",
"<text text-anchor=\"start\" x=\"200\" y=\"-253.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"252\" y=\"-253.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"263,-248.1811 263,-267.1811 276,-267.1811 276,-248.1811 263,-248.1811\"/>\n",
"<text text-anchor=\"start\" x=\"265\" y=\"-253.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"447.5\" cy=\"-87.6811\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"447.5\" y=\"-83.9811\" 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.0796,-216.8288C71.6816,-206.1416 81.3074,-192.1386 92,-181.6811 131.8335,-142.7236 143.5431,-130.4607 196,-111.6811 274.8215,-83.4631 375.9185,-83.9818 422.255,-86.0719\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"429.4713,-86.4309 422.3234,-89.2291 425.9756,-86.2569 422.48,-86.083 422.48,-86.083 422.48,-86.083 425.9756,-86.2569 422.6365,-82.9369 429.4713,-86.4309 429.4713,-86.4309\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"198,-113.1811 198,-132.1811 248,-132.1811 248,-113.1811 198,-113.1811\"/>\n",
"<text text-anchor=\"start\" x=\"200\" y=\"-118.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"252\" y=\"-118.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"263,-113.1811 263,-132.1811 276,-132.1811 276,-113.1811 263,-113.1811\"/>\n",
"<text text-anchor=\"start\" x=\"265\" y=\"-118.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>4</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"878\" cy=\"-126.6811\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"878\" y=\"-122.9811\" 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=\"M69.9301,-244.6391C98.9375,-268.2695 168.811,-318.6811 237,-318.6811 237,-318.6811 237,-318.6811 660.5,-318.6811 761.7284,-318.6811 838.0661,-200.3464 866.205,-149.4778\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"869.7016,-143.0509 869.1232,-150.7053 868.0289,-146.1254 866.3562,-149.1999 866.3562,-149.1999 866.3562,-149.1999 868.0289,-146.1254 863.5892,-147.6944 869.7016,-143.0509 869.7016,-143.0509\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"410.5,-320.1811 410.5,-339.1811 457.5,-339.1811 457.5,-320.1811 410.5,-320.1811\"/>\n",
"<text text-anchor=\"start\" x=\"412.5\" y=\"-325.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"461.5\" y=\"-325.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"472.5,-320.1811 472.5,-339.1811 485.5,-339.1811 485.5,-320.1811 472.5,-320.1811\"/>\n",
"<text text-anchor=\"start\" x=\"474.5\" y=\"-325.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</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=\"M222.3621,-172.7383C213.1949,-184.4609 218.0742,-197.6811 237,-197.6811 252.6729,-197.6811 258.7129,-188.6148 255.1199,-178.8408\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"251.6379,-172.7383 257.843,-177.2571 253.3725,-175.7783 255.1071,-178.8182 255.1071,-178.8182 255.1071,-178.8182 253.3725,-175.7783 252.3711,-180.3794 251.6379,-172.7383 251.6379,-172.7383\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"190,-199.1811 190,-218.1811 244,-218.1811 244,-199.1811 190,-199.1811\"/>\n",
"<text text-anchor=\"start\" x=\"192\" y=\"-204.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"248\" y=\"-204.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"259,-199.1811 259,-218.1811 284,-218.1811 284,-199.1811 259,-199.1811\"/>\n",
"<text text-anchor=\"start\" x=\"261\" y=\"-204.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M252.5254,-170.9993C264.1427,-177.6141 280.6127,-186.2505 296,-191.6811 338.9998,-206.8571 391.5304,-215.9711 422.0831,-220.3936\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"429.3581,-221.4177 421.9873,-223.5611 425.8923,-220.9298 422.4264,-220.4419 422.4264,-220.4419 422.4264,-220.4419 425.8923,-220.9298 422.8656,-217.3226 429.3581,-221.4177 429.3581,-221.4177\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"298,-216.1811 298,-235.1811 348,-235.1811 348,-216.1811 298,-216.1811\"/>\n",
"<text text-anchor=\"start\" x=\"300\" y=\"-221.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"352\" y=\"-221.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"363,-216.1811 363,-235.1811 388,-235.1811 388,-216.1811 363,-216.1811\"/>\n",
"<text text-anchor=\"start\" x=\"365\" y=\"-221.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M253.9738,-155.4229C265.7281,-151.1424 281.7604,-145.4094 296,-140.6811 337.4931,-126.9032 348.89,-126.5631 390,-111.6811 401.5143,-107.5129 414.0889,-102.3381 424.5347,-97.862\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"431.059,-95.039 425.8855,-100.7098 427.8468,-96.4289 424.6346,-97.8188 424.6346,-97.8188 424.6346,-97.8188 427.8468,-96.4289 423.3837,-94.9278 431.059,-95.039 431.059,-95.039\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"298,-142.1811 298,-161.1811 348,-161.1811 348,-142.1811 298,-142.1811\"/>\n",
"<text text-anchor=\"start\" x=\"300\" y=\"-147.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"352\" y=\"-147.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"363,-142.1811 363,-161.1811 388,-161.1811 388,-142.1811 363,-142.1811\"/>\n",
"<text text-anchor=\"start\" x=\"365\" y=\"-147.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M255.0715,-162.4523C266.7468,-162.9114 282.2684,-163.4485 296,-163.6811 337.7718,-164.3889 348.2248,-164.1467 390,-163.6811 529.5816,-162.1255 564.7134,-165.8832 704,-156.6811 752.6311,-153.4683 765.139,-153.8809 813,-144.6811 826.7457,-142.039 841.827,-137.9396 853.9995,-134.3199\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"860.7982,-132.2588 855.0132,-137.3043 857.4488,-133.2743 854.0993,-134.2898 854.0993,-134.2898 854.0993,-134.2898 857.4488,-133.2743 853.1854,-131.2752 860.7982,-132.2588 860.7982,-132.2588\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"509,-165.1811 509,-184.1811 556,-184.1811 556,-165.1811 509,-165.1811\"/>\n",
"<text text-anchor=\"start\" x=\"511\" y=\"-170.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"560\" y=\"-170.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"571,-165.1811 571,-184.1811 596,-184.1811 596,-165.1811 571,-165.1811\"/>\n",
"<text text-anchor=\"start\" x=\"573\" y=\"-170.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M432.875,-234.3686C423.125,-246.1811 428,-259.6811 447.5,-259.6811 463.6484,-259.6811 469.7672,-250.423 465.8562,-240.5319\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"462.125,-234.3686 468.4449,-238.7254 463.9376,-237.3627 465.7503,-240.3568 465.7503,-240.3568 465.7503,-240.3568 463.9376,-237.3627 463.0556,-241.9882 462.125,-234.3686 462.125,-234.3686\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"417.5,-261.1811 417.5,-280.1811 437.5,-280.1811 437.5,-261.1811 417.5,-261.1811\"/>\n",
"<text text-anchor=\"start\" x=\"419.5\" y=\"-266.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"441.5\" y=\"-266.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"452.5,-261.1811 452.5,-280.1811 477.5,-280.1811 477.5,-261.1811 452.5,-261.1811\"/>\n",
"<text text-anchor=\"start\" x=\"454.5\" y=\"-266.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M465.334,-226.2282C520.2735,-233.2455 690.615,-248.7548 813,-191.6811 833.8128,-181.9752 851.7652,-162.6433 863.4967,-147.5737\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"867.8319,-141.8304 866.1289,-149.3152 865.7233,-144.6239 863.6147,-147.4175 863.6147,-147.4175 863.6147,-147.4175 865.7233,-144.6239 861.1005,-145.5197 867.8319,-141.8304 867.8319,-141.8304\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"632.5,-234.1811 632.5,-253.1811 649.5,-253.1811 649.5,-234.1811 632.5,-234.1811\"/>\n",
"<text text-anchor=\"start\" x=\"634.5\" y=\"-239.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"<text text-anchor=\"start\" x=\"653.5\" y=\"-239.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"664.5,-234.1811 664.5,-253.1811 689.5,-253.1811 689.5,-234.1811 664.5,-234.1811\"/>\n",
"<text text-anchor=\"start\" x=\"666.5\" y=\"-239.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M432.875,-98.3686C423.125,-110.1811 428,-123.6811 447.5,-123.6811 463.6484,-123.6811 469.7672,-114.423 465.8562,-104.5319\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"462.125,-98.3686 468.4449,-102.7254 463.9376,-101.3627 465.7503,-104.3568 465.7503,-104.3568 465.7503,-104.3568 463.9376,-101.3627 463.0556,-105.9882 462.125,-98.3686 462.125,-98.3686\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"404.5,-125.1811 404.5,-144.1811 454.5,-144.1811 454.5,-125.1811 404.5,-125.1811\"/>\n",
"<text text-anchor=\"start\" x=\"406.5\" y=\"-130.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"458.5\" y=\"-130.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"469.5,-125.1811 469.5,-144.1811 490.5,-144.1811 490.5,-125.1811 469.5,-125.1811\"/>\n",
"<text text-anchor=\"start\" x=\"471.5\" y=\"-130.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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=\"M464.2191,-95.3128C475.4898,-100.0731 490.8323,-105.8211 505,-108.6811 633.5914,-134.6399 791.9349,-130.8079 852.6598,-128.0614\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"859.9057,-127.7173 853.063,-131.1959 856.4097,-127.8834 852.9136,-128.0494 852.9136,-128.0494 852.9136,-128.0494 856.4097,-127.8834 852.7642,-124.903 859.9057,-127.7173 859.9057,-127.7173\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"619.5,-131.1811 619.5,-150.1811 666.5,-150.1811 666.5,-131.1811 619.5,-131.1811\"/>\n",
"<text text-anchor=\"start\" x=\"621.5\" y=\"-136.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"670.5\" y=\"-136.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"681.5,-131.1811 681.5,-150.1811 702.5,-150.1811 702.5,-131.1811 681.5,-131.1811\"/>\n",
"<text text-anchor=\"start\" x=\"683.5\" y=\"-136.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>5</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"1040\" cy=\"-49.6811\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1040\" y=\"-45.9811\" 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=\"M456.519,-72.0273C466.342,-56.5295 483.5561,-33.4622 505,-21.6811 549.127,2.5618 566.7948,-8.4697 617,-4.6811 789.2945,8.3203 834.5718,-7.7917 1004,-41.6811 1007.6727,-42.4158 1011.5467,-43.2324 1015.3383,-44.0552\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1022.4535,-45.6251 1014.9392,-47.1928 1019.0357,-44.871 1015.6179,-44.1168 1015.6179,-44.1168 1015.6179,-44.1168 1019.0357,-44.871 1016.2967,-41.0408 1022.4535,-45.6251 1022.4535,-45.6251\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"724.5,-7.1811 724.5,-26.1811 774.5,-26.1811 774.5,-7.1811 724.5,-7.1811\"/>\n",
"<text text-anchor=\"start\" x=\"726.5\" y=\"-12.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"778.5\" y=\"-12.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"789.5,-7.1811 789.5,-26.1811 810.5,-26.1811 810.5,-7.1811 789.5,-7.1811\"/>\n",
"<text text-anchor=\"start\" x=\"791.5\" y=\"-12.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"660.5\" cy=\"-31.6811\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"660.5\" y=\"-27.9811\" 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=\"M459.0755,-73.6097C469.659,-61.894 486.4523,-45.99 505,-38.6811 548.2938,-21.621 603.7002,-24.3444 635.3365,-27.9557\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"642.4684,-28.8316 635.1366,-31.1047 638.9945,-28.4049 635.5206,-27.9782 635.5206,-27.9782 635.5206,-27.9782 638.9945,-28.4049 635.9046,-24.8517 642.4684,-28.8316 642.4684,-28.8316\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"507,-40.1811 507,-59.1811 561,-59.1811 561,-40.1811 507,-40.1811\"/>\n",
"<text text-anchor=\"start\" x=\"509\" y=\"-45.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"565\" y=\"-45.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"576,-40.1811 576,-59.1811 597,-59.1811 597,-40.1811 576,-40.1811\"/>\n",
"<text text-anchor=\"start\" x=\"578\" y=\"-45.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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=\"M863.9938,-138.4805C856.257,-150.0117 860.9258,-162.6811 878,-162.6811 891.8728,-162.6811 897.556,-154.3173 895.0497,-144.9959\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"892.0062,-138.4805 897.8229,-143.4895 893.4875,-141.6516 894.9689,-144.8227 894.9689,-144.8227 894.9689,-144.8227 893.4875,-141.6516 892.1149,-146.1559 892.0062,-138.4805 892.0062,-138.4805\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"852,-164.1811 852,-183.1811 869,-183.1811 869,-164.1811 852,-164.1811\"/>\n",
"<text text-anchor=\"start\" x=\"854\" y=\"-169.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"<text text-anchor=\"start\" x=\"873\" y=\"-169.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"884,-164.1811 884,-183.1811 905,-183.1811 905,-164.1811 884,-164.1811\"/>\n",
"<text text-anchor=\"start\" x=\"886\" y=\"-169.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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=\"M896.2808,-127.1991C922.3182,-127.0754 970.621,-123.5767 1004,-101.6811 1014.7964,-94.599 1023.2702,-83.0511 1029.2772,-72.6345\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1032.6973,-66.3449 1032.1206,-73.9993 1031.0253,-69.4197 1029.3533,-72.4945 1029.3533,-72.4945 1029.3533,-72.4945 1031.0253,-69.4197 1026.5859,-70.9897 1032.6973,-66.3449 1032.6973,-66.3449\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"945.5,-125.1811 945.5,-144.1811 965.5,-144.1811 965.5,-125.1811 945.5,-125.1811\"/>\n",
"<text text-anchor=\"start\" x=\"947.5\" y=\"-130.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"969.5\" y=\"-130.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"980.5,-125.1811 980.5,-144.1811 1001.5,-144.1811 1001.5,-125.1811 980.5,-125.1811\"/>\n",
"<text text-anchor=\"start\" x=\"982.5\" y=\"-130.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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=\"M1022.0379,-51.9927C1001.9423,-55.0946 968.8227,-61.7748 943,-74.6811 925.5124,-83.4215 908.3559,-97.4454 896.0639,-108.728\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"890.7748,-113.6901 893.7246,-106.6033 893.3274,-111.2954 895.8799,-108.9006 895.8799,-108.9006 895.8799,-108.9006 893.3274,-111.2954 898.0351,-111.1979 890.7748,-113.6901 890.7748,-113.6901\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"945.5,-76.1811 945.5,-95.1811 962.5,-95.1811 962.5,-76.1811 945.5,-76.1811\"/>\n",
"<text text-anchor=\"start\" x=\"947.5\" y=\"-81.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"<text text-anchor=\"start\" x=\"966.5\" y=\"-81.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"977.5,-76.1811 977.5,-95.1811 1002.5,-95.1811 1002.5,-76.1811 977.5,-76.1811\"/>\n",
"<text text-anchor=\"start\" x=\"979.5\" y=\"-81.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M1029.0873,-64.0978C1025.2765,-74.8472 1028.9141,-85.6811 1040,-85.6811 1048.6609,-85.6811 1052.7757,-79.0686 1052.3443,-71.0499\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1050.9127,-64.0978 1055.4099,-70.3186 1051.6187,-67.5259 1052.3246,-70.954 1052.3246,-70.954 1052.3246,-70.954 1051.6187,-67.5259 1049.2394,-71.5893 1050.9127,-64.0978 1050.9127,-64.0978\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"1010,-87.1811 1010,-106.1811 1030,-106.1811 1030,-87.1811 1010,-87.1811\"/>\n",
"<text text-anchor=\"start\" x=\"1012\" y=\"-92.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"1034\" y=\"-92.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"1045,-87.1811 1045,-106.1811 1070,-106.1811 1070,-87.1811 1045,-87.1811\"/>\n",
"<text text-anchor=\"start\" x=\"1047\" y=\"-92.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M644.8347,-40.8689C632.7052,-47.5956 615.2814,-56.4316 599,-61.6811 555.9169,-75.5723 503.4134,-82.4699 472.8884,-85.543\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"465.6205,-86.2439 472.2858,-82.4364 469.1043,-85.9079 472.5882,-85.5719 472.5882,-85.5719 472.5882,-85.5719 469.1043,-85.9079 472.8906,-88.7073 465.6205,-86.2439 465.6205,-86.2439\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"507,-83.1811 507,-102.1811 557,-102.1811 557,-83.1811 507,-83.1811\"/>\n",
"<text text-anchor=\"start\" x=\"509\" y=\"-88.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"561\" y=\"-88.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"572,-83.1811 572,-102.1811 597,-102.1811 597,-83.1811 572,-83.1811\"/>\n",
"<text text-anchor=\"start\" x=\"574\" y=\"-88.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M677.7811,-37.2807C706.4336,-46.7788 765.3425,-67.2181 813,-89.6811 827.9031,-96.7056 844.0008,-105.8562 856.4478,-113.2997\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"862.5984,-117.0162 854.9781,-116.092 859.6028,-115.2061 856.6072,-113.396 856.6072,-113.396 856.6072,-113.396 859.6028,-115.2061 858.2364,-110.6999 862.5984,-117.0162 862.5984,-117.0162\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"724.5,-91.1811 724.5,-110.1811 771.5,-110.1811 771.5,-91.1811 724.5,-91.1811\"/>\n",
"<text text-anchor=\"start\" x=\"726.5\" y=\"-96.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"775.5\" y=\"-96.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"786.5,-91.1811 786.5,-110.1811 811.5,-110.1811 811.5,-91.1811 786.5,-91.1811\"/>\n",
"<text text-anchor=\"start\" x=\"788.5\" y=\"-96.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M678.5488,-32.5372C740.2304,-35.4628 942.7891,-45.0703 1014.5325,-48.4732\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1021.8407,-48.8198 1014.6993,-51.6346 1018.3447,-48.654 1014.8486,-48.4881 1014.8486,-48.4881 1014.8486,-48.4881 1018.3447,-48.654 1014.9979,-45.3416 1021.8407,-48.8198 1021.8407,-48.8198\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"833,-46.1811 833,-65.1811 883,-65.1811 883,-46.1811 833,-46.1811\"/>\n",
"<text text-anchor=\"start\" x=\"835\" y=\"-51.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"887\" y=\"-51.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"898,-46.1811 898,-65.1811 923,-65.1811 923,-46.1811 898,-46.1811\"/>\n",
"<text text-anchor=\"start\" x=\"900\" y=\"-51.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!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=\"M645.5938,-42.3686C635.6563,-54.1811 640.625,-67.6811 660.5,-67.6811 676.959,-67.6811 683.1954,-58.423 679.2092,-48.5319\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"675.4063,-42.3686 681.7629,-46.6717 677.2442,-45.3472 679.0821,-48.3259 679.0821,-48.3259 679.0821,-48.3259 677.2442,-45.3472 676.4014,-49.98 675.4063,-42.3686 675.4063,-42.3686\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"613.5,-69.1811 613.5,-88.1811 667.5,-88.1811 667.5,-69.1811 613.5,-69.1811\"/>\n",
"<text text-anchor=\"start\" x=\"615.5\" y=\"-74.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"671.5\" y=\"-74.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"682.5,-69.1811 682.5,-88.1811 707.5,-88.1811 707.5,-69.1811 682.5,-69.1811\"/>\n",
"<text text-anchor=\"start\" x=\"684.5\" y=\"-74.9811\" 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 0x7f4d61524e10> >"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"spot.apply_strategy(game, True, False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Converting the strategy to AIGER\n",
"\n",
"A strategy can be converted to a circuit in the [AIGER format](http://fmv.jku.at/aiger/FORMAT.aiger) using `strategy_to_aig()`. This takes a second argument specifying what type of encoding to use (exactly like `ltlsynt`'s `--aiger=...` option). \n",
"\n",
"In this case, the circuit is quite simple: `o0` should be the negation of previous value of `i1`. This is done by storing the value of `i1` in a latch. And the value of `i0` can be ignored."
]
},
{
"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=\"266pt\" height=\"208pt\"\n",
" viewBox=\"0.00 0.00 266.19 208.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 204)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-204 262.1926,-204 262.1926,4 -4,4\"/>\n",
"<!-- 6 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>6</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"#000000\" points=\"77.1961,-118 11.1961,-118 11.1961,-82 77.1961,-82 77.1961,-118\"/>\n",
"<text text-anchor=\"middle\" x=\"44.1961\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">L0_out</text>\n",
"</g>\n",
"<!-- o0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>o0</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"#000000\" points=\"44.1961,-154 88.5891,-188.5 -.197,-188.5 44.1961,-154\"/>\n",
"<text text-anchor=\"middle\" x=\"44.1961\" y=\"-173.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;o0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>6&#45;&gt;o0:s</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M44.1961,-118C44.1961,-126.2031 44.1961,-136.2373 44.1961,-145.9568\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"44.1961\" cy=\"-150\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- L0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>L0</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"#000000\" points=\"151.1961,-118 95.1961,-118 95.1961,-82 151.1961,-82 151.1961,-118\"/>\n",
"<text text-anchor=\"middle\" x=\"123.1961\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">L0_in</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"123.1961,-46 84.203,-11.5 162.1892,-11.5 123.1961,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"123.1961\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;L0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>2&#45;&gt;L0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M123.1961,-46.1025C123.1961,-54.6964 123.1961,-64.5158 123.1961,-73.3982\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"123.1961\" cy=\"-77.5566\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"219.1961,-46 180.203,-11.5 258.1892,-11.5 219.1961,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"219.1961\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i0</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.aig; proxy of <Swig Object of type 'spot::aig_ptr *' at 0x7f4d615436f0> >"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"aig = spot.strategy_to_aig(strat, \"isop\")\n",
"display(aig)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"While we are at it, let us mention that you can render those circuits horizontally as follows:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"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=\"312pt\" height=\"172pt\"\n",
" viewBox=\"0.00 0.00 312.39 172.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 168)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-168 308.3852,-168 308.3852,4 -4,4\"/>\n",
"<!-- 6 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>6</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"#000000\" points=\"179.9931,-41 113.9931,-41 113.9931,-5 179.9931,-5 179.9931,-41\"/>\n",
"<text text-anchor=\"middle\" x=\"146.9931\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">L0_out</text>\n",
"</g>\n",
"<!-- o0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>o0</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"#000000\" points=\"215.7961,-23 282.3857,0 282.3857,-46 215.7961,-23\"/>\n",
"<text text-anchor=\"middle\" x=\"260.1892\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;o0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>6&#45;&gt;o0:w</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M180.334,-23C189.0884,-23 198.6813,-23 207.9549,-23\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"211.9931\" cy=\"-23\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- L0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>L0</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"#000000\" points=\"174.9931,-95 118.9931,-95 118.9931,-59 174.9931,-59 174.9931,-95\"/>\n",
"<text text-anchor=\"middle\" x=\"146.9931\" y=\"-73.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">L0_in</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"77.9896,-77 19.5,-100 19.5,-54 77.9896,-77\"/>\n",
"<text text-anchor=\"middle\" x=\"38.9965\" y=\"-73.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;L0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>2&#45;&gt;L0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M78.2913,-77C88.8559,-77 100.2334,-77 110.6309,-77\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"114.7252\" cy=\"-77\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"77.9896,-141 19.5,-164 19.5,-118 77.9896,-141\"/>\n",
"<text text-anchor=\"middle\" x=\"38.9965\" y=\"-137.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i0</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.jupyter.SVG object>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"aig.show('h')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Adding more inputs and outputs by force"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It can happen that propositions declared as output are ommited in the aig circuit (either because they are not part of the specification, or because they do not appear in the winning strategy). In that case those \n",
"values can take arbitrary values.\n",
"\n",
"For instance so following constraint mention `o1` and `i1`, but those atomic proposition are actually unconstrained (`F(... U x)` can be simplified to `Fx`). Without any indication, the circuit built will ignore those variables:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"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=\"392pt\" height=\"258pt\"\n",
" viewBox=\"0.00 0.00 392.00 257.85\" 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 253.851)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-253.851 388,-253.851 388,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"13.5\" y=\"-235.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n",
"<text text-anchor=\"start\" x=\"35.5\" y=\"-235.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#e31a1c\">❺</text>\n",
"<text text-anchor=\"start\" x=\"51.5\" y=\"-235.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) | (Fin(</text>\n",
"<text text-anchor=\"start\" x=\"94.5\" y=\"-235.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"<text text-anchor=\"start\" x=\"110.5\" y=\"-235.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"157.5\" y=\"-235.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"173.5\" y=\"-235.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) | (Fin(</text>\n",
"<text text-anchor=\"start\" x=\"216.5\" y=\"-235.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"232.5\" y=\"-235.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"279.5\" y=\"-235.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"295.5\" y=\"-235.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) | Fin(</text>\n",
"<text text-anchor=\"start\" x=\"335.5\" y=\"-235.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"351.5\" y=\"-235.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)))))</text>\n",
"<text text-anchor=\"start\" x=\"134.5\" y=\"-221.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[parity max odd 6]</text>\n",
"<!-- I -->\n",
"<!-- 3 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"56\" cy=\"-95.851\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-92.151\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
"</g>\n",
"<!-- I&#45;&gt;3 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-95.851C4.178,-95.851 17.9448,-95.851 30.9241,-95.851\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-95.851 30.9808,-99.0011 34.4807,-95.851 30.9807,-95.8511 30.9807,-95.8511 30.9807,-95.8511 34.4807,-95.851 30.9807,-92.7011 37.9807,-95.851 37.9807,-95.851\"/>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>6</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"153,-154.851 126,-136.851 153,-118.851 180,-136.851 153,-154.851\"/>\n",
"<text text-anchor=\"middle\" x=\"153\" y=\"-133.151\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">6</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;6 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>3&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M72.8961,-102.9926C88.6134,-109.6361 112.174,-119.5946 129.6791,-126.9937\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"136.2975,-129.7912 128.6234,-129.9673 133.0737,-128.4285 129.8498,-127.0658 129.8498,-127.0658 129.8498,-127.0658 133.0737,-128.4285 131.0762,-124.1643 136.2975,-129.7912 136.2975,-129.7912\"/>\n",
"<text text-anchor=\"start\" x=\"93.5\" y=\"-135.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0</text>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-120.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>7</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"153,-87.851 126,-69.851 153,-51.851 180,-69.851 153,-87.851\"/>\n",
"<text text-anchor=\"middle\" x=\"153\" y=\"-66.151\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">7</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;7 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>3&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M69.6576,-83.5003C75.9837,-78.5764 83.8883,-73.4645 92,-70.851 101.7348,-67.7145 112.8047,-66.8019 122.8174,-66.8817\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"129.8872,-67.0977 122.7942,-70.0324 126.3888,-66.9908 122.8904,-66.8839 122.8904,-66.8839 122.8904,-66.8839 126.3888,-66.9908 122.9866,-63.7353 129.8872,-67.0977 129.8872,-67.0977\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-89.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0</text>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-74.651\" 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=\"255\" cy=\"-97.851\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"255\" y=\"-94.151\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"357,-128.851 330,-110.851 357,-92.851 384,-110.851 357,-128.851\"/>\n",
"<text text-anchor=\"middle\" x=\"357\" y=\"-107.151\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">4</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;4 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M266.8292,-111.8858C273.2312,-118.3797 281.7212,-125.4065 291,-128.851 305.981,-134.4123 323.4458,-129.1557 336.6454,-122.9163\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"343.1234,-119.616 338.3161,-125.6004 340.0048,-121.2048 336.8862,-122.7937 336.8862,-122.7937 336.8862,-122.7937 340.0048,-121.2048 335.4562,-119.9869 343.1234,-119.616 343.1234,-119.616\"/>\n",
"<text text-anchor=\"start\" x=\"297\" y=\"-149.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"293.5\" y=\"-134.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;0 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>4&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M340.6952,-103.5339C332.3057,-100.1636 321.8052,-96.5423 312,-94.851 301.5488,-93.0483 289.8739,-93.2772 279.8251,-94.1541\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"272.8362,-94.8873 279.4692,-91.024 276.2649,-94.0248 279.7458,-93.6596 279.798,-94.1568 279.8501,-94.6541 276.3692,-95.0194 280.1267,-97.2896 272.8362,-94.8873 272.8362,-94.8873\"/>\n",
"<text text-anchor=\"start\" x=\"297\" y=\"-113.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"293.5\" y=\"-98.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#e31a1c\">❺</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"255\" cy=\"-43.851\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"255\" y=\"-40.151\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>5</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"357,-48.851 330,-30.851 357,-12.851 384,-30.851 357,-48.851\"/>\n",
"<text text-anchor=\"middle\" x=\"357\" y=\"-27.151\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">5</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;5 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>1&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M273.2356,-41.5269C288.1771,-39.6225 309.6253,-36.8889 327.0775,-34.6646\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"334.2817,-33.7465 327.7362,-37.7563 330.8098,-34.189 327.3379,-34.6315 327.3379,-34.6315 327.3379,-34.6315 330.8098,-34.189 326.9396,-31.5068 334.2817,-33.7465 334.2817,-33.7465\"/>\n",
"<text text-anchor=\"start\" x=\"297\" y=\"-57.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"293.5\" y=\"-42.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;1 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>5&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M345.7181,-20.1427C332.5203,-8.9804 310.0494,5.7732 291,-2.851 281.923,-6.9604 274.2274,-14.6148 268.3104,-22.2072\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"264.139,-27.9414 265.7097,-20.4276 265.7937,-24.8169 267.8527,-21.9866 268.257,-22.2807 268.6613,-22.5749 266.6024,-25.4052 270.8043,-24.1338 264.139,-27.9414 264.139,-27.9414\"/>\n",
"<text text-anchor=\"start\" x=\"291\" y=\"-21.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"293.5\" y=\"-6.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#e31a1c\">❺</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"255\" cy=\"-176.851\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"255\" y=\"-173.151\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;6 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>2&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M241.1356,-164.7477C234.7713,-159.7642 226.8939,-154.3502 219,-150.851 207.8265,-145.898 194.7968,-142.6567 183.2803,-140.5547\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"176.3353,-139.388 183.7605,-137.4413 179.7869,-139.9679 183.2386,-140.5478 183.2386,-140.5478 183.2386,-140.5478 179.7869,-139.9679 182.7167,-143.6543 176.3353,-139.388 176.3353,-139.388\"/>\n",
"<text text-anchor=\"start\" x=\"204\" y=\"-169.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"200.5\" y=\"-154.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;0 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>6&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M162.6152,-124.7394C170.864,-115.398 183.6643,-103.1987 198,-97.851 208.0722,-94.0937 219.8601,-93.5252 230.094,-94.1158\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"237.2245,-94.7216 229.9829,-97.2676 233.6947,-94.9235 230.2073,-94.6271 230.2496,-94.1289 230.292,-93.6307 233.7794,-93.9271 230.5163,-90.9902 237.2245,-94.7216 237.2245,-94.7216\"/>\n",
"<text text-anchor=\"start\" x=\"200\" y=\"-116.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"<text text-anchor=\"start\" x=\"200.5\" y=\"-101.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;2 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>6&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M161.6314,-149.6319C169.6399,-160.2454 182.6205,-174.5816 198,-180.851 208.2254,-185.0194 220.3351,-184.8065 230.7573,-183.2344\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"237.6591,-181.9661 231.3438,-186.3295 234.2167,-182.5987 230.7744,-183.2314 230.7744,-183.2314 230.7744,-183.2314 234.2167,-182.5987 230.205,-180.1333 237.6591,-181.9661 237.6591,-181.9661\"/>\n",
"<text text-anchor=\"start\" x=\"198\" y=\"-202.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"200.5\" y=\"-187.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;1 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>7&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M166.0387,-60.3452C174.6466,-54.6607 186.4339,-47.9566 198,-44.851 208.2301,-42.1041 219.8688,-41.4792 229.9503,-41.6821\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"236.9736,-41.9576 229.8554,-44.8307 233.4567,-42.32 229.9594,-42.1827 229.979,-41.6831 229.9986,-41.1835 233.4959,-41.3208 230.1025,-38.5355 236.9736,-41.9576 236.9736,-41.9576\"/>\n",
"<text text-anchor=\"start\" x=\"198\" y=\"-63.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"200.5\" y=\"-48.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f4d60cb1e10> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"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=\"143pt\" height=\"352pt\"\n",
" viewBox=\"0.00 0.00 143.20 352.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 348)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-348 139.1961,-348 139.1961,4 -4,4\"/>\n",
"<!-- 4 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"#000000\" points=\"66,-118 0,-118 0,-82 66,-82 66,-118\"/>\n",
"<text text-anchor=\"middle\" x=\"33\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">L0_out</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"63\" cy=\"-172\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"63\" y=\"-168.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">6</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;6 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>4&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M40.5703,-118.1686C44.2957,-127.1097 48.8392,-138.014 52.8602,-147.6645\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"54.4089\" cy=\"-151.3814\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- L0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>L0</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"#000000\" points=\"63,-262 7,-262 7,-226 63,-226 63,-262\"/>\n",
"<text text-anchor=\"middle\" x=\"35\" y=\"-240.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">L0_in</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;L0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>6&#45;&gt;L0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M56.3644,-189.063C52.9701,-197.7912 48.7684,-208.5956 44.9916,-218.3072\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"43.5273\" cy=\"-222.0728\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- o0 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>o0</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"#000000\" points=\"91,-298 135.393,-332.5 46.607,-332.5 91,-298\"/>\n",
"<text text-anchor=\"middle\" x=\"91\" y=\"-317.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;o0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>6&#45;&gt;o0:s</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M69.3536,-189.2599C76.9049,-211.2221 88.7373,-250.7491 90.7152,-287.6717\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"87.2256,-288.1003 91,-298 94.2229,-287.9073 87.2256,-288.1003\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"94,-46 55.0069,-11.5 132.9931,-11.5 94,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"94\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i0</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;6 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>2&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M90.1917,-42.6751C86.4398,-61.9047 80.4887,-91.9979 75,-118 73.2149,-126.457 71.2017,-135.6418 69.3416,-143.9975\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"65.8669,-143.4974 67.0958,-154.0208 72.6976,-145.0279 65.8669,-143.4974\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.aig; proxy of <Swig Object of type 'spot::aig_ptr *' at 0x7f4d60cb1600> >"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"game = spot.ltl_to_game(\"i0 <-> F((Go1 -> Fi1) U o0)\", [\"o0\", \"o1\"])\n",
"spot.solve_game(game)\n",
"spot.highlight_strategy(game)\n",
"display(game)\n",
"strat = spot.create_strategy(game)\n",
"aig = spot.strategy_to_aig(strat, \"isop\")\n",
"display(aig)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To force the presence of extra variables in the circuit, they can be passed to `strategy_to_aig()`."
]
},
{
"cell_type": "code",
"execution_count": 10,
"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=\"333pt\" height=\"352pt\"\n",
" viewBox=\"0.00 0.00 333.00 352.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 348)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-348 328.9965,-348 328.9965,4 -4,4\"/>\n",
"<!-- 6 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>6</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"#000000\" points=\"66,-118 0,-118 0,-82 66,-82 66,-118\"/>\n",
"<text text-anchor=\"middle\" x=\"33\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">L0_out</text>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"63\" cy=\"-172\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"63\" y=\"-168.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">8</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;8 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>6&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M40.5703,-118.1686C44.2957,-127.1097 48.8392,-138.014 52.8602,-147.6645\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"54.4089\" cy=\"-151.3814\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- L0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>L0</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"#000000\" points=\"68,-262 12,-262 12,-226 68,-226 68,-262\"/>\n",
"<text text-anchor=\"middle\" x=\"40\" y=\"-240.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">L0_in</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;L0 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>8&#45;&gt;L0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M57.4323,-189.4292C54.6695,-198.078 51.2776,-208.6961 48.2225,-218.26\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"46.9738\" cy=\"-222.1691\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- o0 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>o0</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"#000000\" points=\"96,-298 140.393,-332.5 51.607,-332.5 96,-298\"/>\n",
"<text text-anchor=\"middle\" x=\"96\" y=\"-317.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;o0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>8&#45;&gt;o0:s</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M70.3238,-188.7535C79.2103,-210.5107 93.3039,-250.1396 95.6606,-287.5301\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"92.1778,-288.1187 96,-298 99.1741,-287.8918 92.1778,-288.1187\"/>\n",
"</g>\n",
"<!-- o1 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>o1</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"#000000\" points=\"202,-298 246.393,-332.5 157.607,-332.5 202,-298\"/>\n",
"<text text-anchor=\"middle\" x=\"202\" y=\"-317.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">o1</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"94,-46 55.0069,-11.5 132.9931,-11.5 94,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"94\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i0</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;8 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>2&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M90.1917,-42.6751C86.4398,-61.9047 80.4887,-91.9979 75,-118 73.2149,-126.457 71.2017,-135.6418 69.3416,-143.9975\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"65.8669,-143.4974 67.0958,-154.0208 72.6976,-145.0279 65.8669,-143.4974\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"286,-46 247.0069,-11.5 324.9931,-11.5 286,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"286\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>0</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"#000000\" points=\"229,-41 175,-41 175,-5 229,-5 229,-41\"/>\n",
"<text text-anchor=\"middle\" x=\"202\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">False</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;o1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;o1:s</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M202,-41.0182C202,-83.4483 202,-193.2273 202,-287.9984\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"198.5001,-288 202,-298 205.5001,-288 198.5001,-288\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.aig; proxy of <Swig Object of type 'spot::aig_ptr *' at 0x7f4d60cb1480> >"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(spot.strategy_to_aig(strat, \"isop\", [\"i0\", \"i1\"], [\"o0\", \"o1\"]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Reading an AIGER-file\n",
"\n",
"Note that we do not support the full [AIGER syntax](http://fmv.jku.at/aiger/FORMAT.aiger). Our restrictions corresponds to the conventions used in the type of AIGER file we output:\n",
"- Input variables start at index 2 and are consecutively numbered.\n",
"- Latch variables start at index (1 + #inputs) × 2 and are consecutively numbered.\n",
"- If some inputs or outputs are named in comments, all of them have to be named.\n",
"- Gate number $n$ can only connect to latches, inputs, or previously defined gates ($<n$)."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"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\"\"\""
]
},
{
"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=\"161pt\" height=\"289pt\"\n",
" viewBox=\"0.00 0.00 161.29 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 157.2941,-285.496 157.2941,4 -4,4\"/>\n",
"<!-- 6 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"108.4971\" cy=\"-100\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"108.4971\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">6</text>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>10</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"47.4971\" cy=\"-176.748\" rx=\"22.9987\" ry=\"22.9987\"/>\n",
"<text text-anchor=\"middle\" x=\"47.4971\" 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=\"edge7\" class=\"edge\">\n",
"<title>6&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M97.0235,-114.4357C88.5006,-125.1589 76.6775,-140.0343 66.7205,-152.5618\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"64.2\" cy=\"-155.7331\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- o1 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>o1</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"#000000\" points=\"119.4971,-235.496 153.0923,-269.996 85.9019,-269.996 119.4971,-235.496\"/>\n",
"<text text-anchor=\"middle\" x=\"119.4971\" y=\"-254.796\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">d</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;o1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>6&#45;&gt;o1:s</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M110.884,-117.9348C113.8664,-141.8139 118.6699,-185.673 119.4022,-225.478\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"115.9025,-225.5296 119.4971,-235.496 122.9021,-225.4632 115.9025,-225.5296\"/>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"47.4971\" cy=\"-100\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"47.4971\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">8</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;10 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>8&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M47.4971,-118.1882C47.4971,-126.4164 47.4971,-136.3755 47.4971,-145.729\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"47.4972\" cy=\"-149.7341\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- o0 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>o0</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"#000000\" points=\"35.4971,-235.496 67.9913,-269.996 3.0029,-269.996 35.4971,-235.496\"/>\n",
"<text text-anchor=\"middle\" x=\"35.4971\" y=\"-254.796\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">c</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;o0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>10&#45;&gt;o0:s</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M40.8653,-198.5716C38.8273,-206.6287 36.8875,-216.0847 36.0008,-225.4459\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"32.5021,-225.3333 35.4971,-235.496 39.4934,-225.6837 32.5021,-225.3333\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"32.4971,-46 .0029,-11.5 64.9913,-11.5 32.4971,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"32.4971\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;6 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>2&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M43.7112,-34.3616C55.417,-46.2215 74.0226,-65.0719 88.2981,-79.5352\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"86.1964,-82.3883 95.7121,-87.0468 91.1784,-77.471 86.1964,-82.3883\"/>\n",
"</g>\n",
"<!-- 2&#45;&gt;8 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>2&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M36.2822,-42.4304C38.1587,-52.0626 40.4501,-63.8255 42.4715,-74.202\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"43.2568\" cy=\"-78.2331\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"116.4971,-46 82.9019,-11.5 150.0923,-11.5 116.4971,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"116.4971\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">b</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;6 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>4&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M114.3111,-44.0406C113.4266,-52.5538 112.392,-62.5119 111.4427,-71.6488\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"107.9338,-71.5536 110.3816,-81.8618 114.8964,-72.277 107.9338,-71.5536\"/>\n",
"</g>\n",
"<!-- 4&#45;&gt;8 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>4&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M105.7159,-35.0313C94.8691,-47.1356 77.9599,-66.0053 65.1537,-80.2963\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"62.2644\" cy=\"-83.5206\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.aig; proxy of <Swig Object of type 'spot::aig_ptr *' at 0x7f4d60cb1540> >"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"this_aig = spot.aiger_circuit(aag_txt)\n",
"display(this_aig)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"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": [
"print(this_aig.to_str())"
]
},
{
"cell_type": "code",
"execution_count": 14,
"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": [
"An aiger circuit can be transformed into a monitor. This can help for instance to verify that it does not intersect the negation of the specification."
]
},
{
"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=\"442pt\" height=\"115pt\"\n",
" viewBox=\"0.00 0.00 442.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 438,-111 438,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"214\" y=\"-91.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">t</text>\n",
"<text text-anchor=\"start\" x=\"206\" 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=\"217\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"217\" 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=\"M162.1233,-18C165.178,-18 178.9448,-18 191.9241,-18\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"198.9807,-18 191.9808,-21.1501 195.4807,-18 191.9807,-18.0001 191.9807,-18.0001 191.9807,-18.0001 195.4807,-18 191.9807,-14.8501 198.9807,-18 198.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=\"M210.6208,-35.0373C209.3189,-44.8579 211.4453,-54 217,-54 221.166,-54 223.4036,-48.8576 223.7128,-42.1433\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"223.3792,-35.0373 226.8541,-41.8818 223.5434,-38.5335 223.7076,-42.0296 223.7076,-42.0296 223.7076,-42.0296 223.5434,-38.5335 220.561,-42.1774 223.3792,-35.0373 223.3792,-35.0373\"/>\n",
"<text text-anchor=\"start\" x=\"0\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">(!a &amp; !b &amp; !c &amp; !d) | (!a &amp; b &amp; c &amp; !d) | (a &amp; !b &amp; c &amp; !d) | (a &amp; b &amp; !c &amp; d)</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 0x7f4d61543b70> >"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"this_aig.as_automaton()"
]
}
],
"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": 5
}