spot/tests/python/synthesis.ipynb
Alexandre Duret-Lutz 3be79ea476 print_dot: improve aiger rendering
* spot/twaalgos/dot.cc: Improve the aiger printer by using a more
traditional dot syntax, indenting the output, adding some hard-coded
colors, fixing a bug in the negation of latch inputs, and rotating the
triangles for horizontal output.
* tests/python/synthesis.ipynb: Adjust expected output, and add
an example of horizontal layout.
2021-10-29 23:21:54 +02:00

3927 lines
287 KiB
Text

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "acbc10d9",
"metadata": {},
"outputs": [],
"source": [
"import spot\n",
"spot.setup()"
]
},
{
"cell_type": "markdown",
"id": "9a6831b2",
"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,
"id": "eb46d524",
"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.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"535pt\" height=\"360pt\"\n",
" viewBox=\"0.00 0.00 535.26 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.36101083032490977 0.36101083032490977) rotate(0) translate(4 993.33)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-993.33 1478.88,-993.33 1478.88,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"625.94\" y=\"-975.13\" font-family=\"Lato\" font-size=\"14.00\">Inf(</text>\n",
"<text text-anchor=\"start\" x=\"646.94\" y=\"-975.13\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"662.94\" y=\"-975.13\" font-family=\"Lato\" font-size=\"14.00\">) | (Fin(</text>\n",
"<text text-anchor=\"start\" x=\"704.94\" y=\"-975.13\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"720.94\" y=\"-975.13\" font-family=\"Lato\" font-size=\"14.00\">) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"766.94\" y=\"-975.13\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"782.94\" y=\"-975.13\" font-family=\"Lato\" font-size=\"14.00\">) | Fin(</text>\n",
"<text text-anchor=\"start\" x=\"820.94\" y=\"-975.13\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"836.94\" y=\"-975.13\" font-family=\"Lato\" font-size=\"14.00\">)))</text>\n",
"<text text-anchor=\"start\" x=\"681.94\" y=\"-961.13\" font-family=\"Lato\" font-size=\"14.00\">[parity max odd 4]</text>\n",
"<!-- I -->\n",
"<!-- 9 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>9</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-799.33\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-795.63\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1.15,-799.33C2.79,-799.33 17.15,-799.33 30.63,-799.33\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.94,-799.33 30.94,-802.48 34.44,-799.33 30.94,-799.33 30.94,-799.33 30.94,-799.33 34.44,-799.33 30.94,-796.18 37.94,-799.33 37.94,-799.33\"/>\n",
"</g>\n",
"<!-- 25 -->\n",
"<g id=\"node26\" class=\"node\">\n",
"<title>25</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"black\" points=\"188.33,-727.33 158.17,-709.33 188.33,-691.33 218.5,-709.33 188.33,-727.33\"/>\n",
"<text text-anchor=\"middle\" x=\"188.33\" y=\"-705.63\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M71.2,-789.53C94.53,-773.42 141.04,-741.3 167.57,-722.98\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"173.55,-718.85 169.58,-725.42 170.67,-720.84 167.79,-722.83 167.79,-722.83 167.79,-722.83 170.67,-720.84 166,-720.24 173.55,-718.85 173.55,-718.85\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-791.13\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"108\" y=\"-776.13\" 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=\"black\" points=\"267,-882.33 236.83,-864.33 267,-846.33 297.16,-864.33 267,-882.33\"/>\n",
"<text text-anchor=\"middle\" x=\"267\" y=\"-860.63\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M73.4,-804.43C109.5,-815.66 196.08,-842.59 239.8,-856.18\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"246.69,-858.33 239.07,-859.25 243.34,-857.29 240,-856.25 240,-856.25 240,-856.25 243.34,-857.29 240.94,-853.24 246.69,-858.33 246.69,-858.33\"/>\n",
"<text text-anchor=\"start\" x=\"94\" y=\"-843.13\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"108\" y=\"-828.13\" 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=\"black\" points=\"399.66,-542.33 369.5,-524.33 399.66,-506.33 429.83,-524.33 399.66,-542.33\"/>\n",
"<text text-anchor=\"middle\" x=\"399.66\" y=\"-520.63\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M64.52,-783.13C78.91,-753.63 112.97,-690.67 158,-652.33 226.89,-593.68 327.11,-551.24 373.44,-533.51\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"380.14,-530.98 374.71,-536.4 376.86,-532.22 373.59,-533.46 373.59,-533.46 373.59,-533.46 376.86,-532.22 372.48,-530.51 380.14,-530.98 380.14,-530.98\"/>\n",
"<text text-anchor=\"start\" x=\"166.33\" y=\"-671.13\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"180.33\" y=\"-656.13\" 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=\"black\" points=\"556.99,-949.33 526.82,-931.33 556.99,-913.33 587.16,-931.33 556.99,-949.33\"/>\n",
"<text text-anchor=\"middle\" x=\"556.99\" y=\"-927.63\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M63.96,-815.52C70.02,-828.24 79.74,-845.84 92,-858.33 126.9,-893.89 137.5,-917.33 187.33,-917.33 187.33,-917.33 187.33,-917.33 400.66,-917.33 444.03,-917.33 493.93,-922.81 525.21,-926.91\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"532.37,-927.87 525.01,-930.06 528.9,-927.41 525.43,-926.94 525.43,-926.94 525.43,-926.94 528.9,-927.41 525.84,-923.82 532.37,-927.87 532.37,-927.87\"/>\n",
"<text text-anchor=\"start\" x=\"247\" y=\"-936.13\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"259\" y=\"-921.13\" 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=\"black\" cx=\"1098.65\" cy=\"-757.33\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1098.65\" y=\"-753.63\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>10</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"black\" points=\"1230.98,-598.33 1200.82,-580.33 1230.98,-562.33 1261.15,-580.33 1230.98,-598.33\"/>\n",
"<text text-anchor=\"middle\" x=\"1230.98\" y=\"-576.63\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1111.68,-744.74C1128.54,-726.78 1159.7,-692.42 1182.65,-660.33 1196.74,-640.63 1210.58,-616.54 1219.62,-599.97\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1222.95,-593.8 1222.4,-601.45 1221.29,-596.88 1219.62,-599.96 1219.62,-599.96 1219.62,-599.96 1221.29,-596.88 1216.85,-598.46 1222.95,-593.8 1222.95,-593.8\"/>\n",
"<text text-anchor=\"start\" x=\"1150.65\" y=\"-737.13\" font-family=\"Lato\" font-size=\"14.00\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"1150.65\" y=\"-722.13\" 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=\"black\" points=\"1230.98,-775.33 1200.82,-757.33 1230.98,-739.33 1261.15,-757.33 1230.98,-775.33\"/>\n",
"<text text-anchor=\"middle\" x=\"1230.98\" y=\"-753.63\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1116.69,-757.33C1136.09,-757.33 1168.36,-757.33 1193.51,-757.33\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1200.73,-757.33 1193.73,-760.48 1197.23,-757.33 1193.73,-757.33 1193.73,-757.33 1193.73,-757.33 1197.23,-757.33 1193.73,-754.18 1200.73,-757.33 1200.73,-757.33\"/>\n",
"<text text-anchor=\"start\" x=\"1152.65\" y=\"-776.13\" font-family=\"Lato\" font-size=\"14.00\">i1</text>\n",
"<text text-anchor=\"start\" x=\"1150.65\" y=\"-761.13\" 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=\"black\" cx=\"1335.76\" cy=\"-626.33\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1335.76\" y=\"-622.63\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1255.36,-576.67C1268.05,-575.74 1283.69,-576.36 1296.32,-582.33 1306.6,-587.2 1315.25,-596.24 1321.72,-604.87\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1325.85,-610.72 1319.24,-606.82 1323.84,-607.86 1321.82,-605 1321.82,-605 1321.82,-605 1323.84,-607.86 1324.39,-603.18 1325.85,-610.72 1325.85,-610.72\"/>\n",
"<text text-anchor=\"start\" x=\"1279.32\" y=\"-601.13\" font-family=\"Lato\" font-size=\"14.00\">o0</text>\n",
"<text text-anchor=\"start\" x=\"1279.82\" y=\"-586.13\" 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=\"black\" d=\"M1218.14,-767.93C1209.12,-775.24 1196.02,-784.34 1182.65,-788.33 1162.21,-794.43 1154.6,-795.9 1134.65,-788.33 1127.71,-785.7 1121.25,-780.99 1115.83,-776.02\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1110.77,-771.03 1117.97,-773.7 1113.26,-773.49 1115.76,-775.95 1115.76,-775.95 1115.76,-775.95 1113.26,-773.49 1113.55,-778.19 1110.77,-771.03 1110.77,-771.03\"/>\n",
"<text text-anchor=\"start\" x=\"1150.15\" y=\"-812.13\" font-family=\"Lato\" font-size=\"14.00\">o0</text>\n",
"<text text-anchor=\"start\" x=\"1150.65\" y=\"-797.13\" 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=\"black\" points=\"1444.54,-697.33 1414.38,-679.33 1444.54,-661.33 1474.71,-679.33 1444.54,-697.33\"/>\n",
"<text text-anchor=\"middle\" x=\"1444.54\" y=\"-675.63\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1349.43,-638.53C1356.54,-644.85 1365.86,-652.28 1375.21,-657.33 1387.7,-664.08 1402.61,-669.17 1415.3,-672.76\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1422.1,-674.59 1414.52,-675.81 1418.72,-673.68 1415.34,-672.77 1415.34,-672.77 1415.34,-672.77 1418.72,-673.68 1416.16,-669.72 1422.1,-674.59 1422.1,-674.59\"/>\n",
"<text text-anchor=\"start\" x=\"1377.71\" y=\"-684.13\" font-family=\"Lato\" font-size=\"14.00\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"1377.71\" y=\"-669.13\" 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=\"black\" points=\"993.32,-745.33 963.15,-727.33 993.32,-709.33 1023.48,-727.33 993.32,-745.33\"/>\n",
"<text text-anchor=\"middle\" x=\"993.32\" y=\"-723.63\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1317.89,-622.94C1282.75,-616.59 1199.62,-605.38 1134.65,-626.33 1082.86,-643.03 1034.05,-686.73 1009.97,-710.81\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1004.94,-715.92 1007.6,-708.72 1007.39,-713.43 1009.85,-710.93 1009.85,-710.93 1009.85,-710.93 1007.39,-713.43 1012.09,-713.14 1004.94,-715.92 1004.94,-715.92\"/>\n",
"<text text-anchor=\"start\" x=\"1152.65\" y=\"-645.13\" font-family=\"Lato\" font-size=\"14.00\">i1</text>\n",
"<text text-anchor=\"start\" x=\"1150.65\" y=\"-630.13\" 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=\"black\" d=\"M1436.65,-665.74C1428.9,-652.13 1414.92,-632.01 1396.21,-623.33 1385.14,-618.19 1371.63,-618.43 1360.28,-620.19\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1353.19,-621.51 1359.49,-617.13 1356.63,-620.87 1360.07,-620.23 1360.07,-620.23 1360.07,-620.23 1356.63,-620.87 1360.65,-623.32 1353.19,-621.51 1353.19,-621.51\"/>\n",
"<text text-anchor=\"start\" x=\"1375.21\" y=\"-642.13\" font-family=\"Lato\" font-size=\"14.00\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"1377.71\" y=\"-627.13\" 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=\"black\" d=\"M1014.24,-733.12C1031.43,-738.11 1056.27,-745.32 1074.37,-750.57\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1081.19,-752.55 1073.59,-753.63 1077.83,-751.58 1074.47,-750.6 1074.47,-750.6 1074.47,-750.6 1077.83,-751.58 1075.35,-747.58 1081.19,-752.55 1081.19,-752.55\"/>\n",
"<text text-anchor=\"start\" x=\"1041.65\" y=\"-765.13\" font-family=\"Lato\" font-size=\"14.00\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"1044.15\" y=\"-750.13\" 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=\"black\" cx=\"1098.65\" cy=\"-509.33\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1098.65\" y=\"-505.63\" font-family=\"Lato\" font-size=\"14.00\">2</text>\n",
"</g>\n",
"<!-- 14 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>14</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"black\" points=\"1230.98,-184.33 1200.82,-166.33 1230.98,-148.33 1261.15,-166.33 1230.98,-184.33\"/>\n",
"<text text-anchor=\"middle\" x=\"1230.98\" y=\"-162.63\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1105.52,-492.52C1111.26,-477.81 1121.12,-456.48 1134.65,-441.33 1151.73,-422.21 1169.34,-431.24 1182.65,-409.33 1220.73,-346.67 1183.76,-316.69 1200.65,-245.33 1205.47,-224.96 1214.07,-202.68 1220.71,-186.99\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1223.61,-180.28 1223.73,-187.95 1222.22,-183.49 1220.84,-186.7 1220.84,-186.7 1220.84,-186.7 1222.22,-183.49 1217.94,-185.46 1223.61,-180.28 1223.61,-180.28\"/>\n",
"<text text-anchor=\"start\" x=\"1152.65\" y=\"-460.13\" font-family=\"Lato\" font-size=\"14.00\">i1</text>\n",
"<text text-anchor=\"start\" x=\"1150.65\" y=\"-445.13\" 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=\"black\" points=\"1230.98,-502.33 1200.82,-484.33 1230.98,-466.33 1261.15,-484.33 1230.98,-502.33\"/>\n",
"<text text-anchor=\"middle\" x=\"1230.98\" y=\"-480.63\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1116.25,-513.94C1133.28,-517.89 1160.36,-521.98 1182.65,-515.33 1193.3,-512.15 1203.78,-505.73 1212.17,-499.55\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1218.14,-494.93 1214.53,-501.7 1215.37,-497.07 1212.6,-499.21 1212.6,-499.21 1212.6,-499.21 1215.37,-497.07 1210.67,-496.72 1218.14,-494.93 1218.14,-494.93\"/>\n",
"<text text-anchor=\"start\" x=\"1150.65\" y=\"-537.13\" font-family=\"Lato\" font-size=\"14.00\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"1150.65\" y=\"-522.13\" 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=\"black\" cx=\"1335.76\" cy=\"-166.33\" rx=\"21.4\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1335.76\" y=\"-162.63\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1244.58,-156.12C1257.4,-147.01 1277.93,-135.88 1296.32,-141.33 1302.46,-143.15 1308.54,-146.3 1313.99,-149.76\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1320.07,-153.91 1312.51,-152.56 1317.18,-151.93 1314.29,-149.96 1314.29,-149.96 1314.29,-149.96 1317.18,-151.93 1316.06,-147.36 1320.07,-153.91 1320.07,-153.91\"/>\n",
"<text text-anchor=\"start\" x=\"1283.32\" y=\"-160.13\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"<text text-anchor=\"start\" x=\"1279.82\" y=\"-145.13\" 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=\"black\" d=\"M1208.87,-479.4C1189.09,-475.77 1159.03,-472.78 1134.65,-481.33 1128.29,-483.56 1122.22,-487.49 1116.98,-491.71\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1111.64,-496.34 1114.87,-489.38 1114.29,-494.05 1116.93,-491.76 1116.93,-491.76 1116.93,-491.76 1114.29,-494.05 1119,-494.14 1111.64,-496.34 1111.64,-496.34\"/>\n",
"<text text-anchor=\"start\" x=\"1154.15\" y=\"-500.13\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"<text text-anchor=\"start\" x=\"1150.65\" y=\"-485.13\" 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=\"black\" cx=\"860.99\" cy=\"-825.33\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"860.99\" y=\"-821.63\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M878.68,-821.91C896.52,-817.6 924.95,-808.83 944.99,-793.33 960.95,-780.99 973.85,-761.82 982.13,-747.32\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"985.6,-741.03 984.98,-748.68 983.91,-744.09 982.22,-747.15 982.22,-747.15 982.22,-747.15 983.91,-744.09 979.46,-745.63 985.6,-741.03 985.6,-741.03\"/>\n",
"<text text-anchor=\"start\" x=\"914.99\" y=\"-835.13\" font-family=\"Lato\" font-size=\"14.00\">i1</text>\n",
"<text text-anchor=\"start\" x=\"912.99\" y=\"-820.13\" 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=\"black\" points=\"755.65,-795.33 725.49,-777.33 755.65,-759.33 785.82,-777.33 755.65,-795.33\"/>\n",
"<text text-anchor=\"middle\" x=\"755.65\" y=\"-773.63\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M842.76,-822.76C831.38,-820.65 816.35,-817.06 803.99,-811.33 793.39,-806.42 782.74,-799.03 774.22,-792.4\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"768.7,-787.96 776.13,-789.89 771.43,-790.15 774.16,-792.34 774.16,-792.34 774.16,-792.34 771.43,-790.15 772.18,-794.8 768.7,-787.96 768.7,-787.96\"/>\n",
"<text text-anchor=\"start\" x=\"806.49\" y=\"-837.13\" font-family=\"Lato\" font-size=\"14.00\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"806.49\" y=\"-822.13\" 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=\"black\" d=\"M777.68,-772.38C820.81,-761.95 917.54,-737.05 944.99,-717.33 963.56,-703.98 1049.69,-579.51 1083.74,-529.75\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1087.82,-523.79 1086.47,-531.34 1085.84,-526.68 1083.87,-529.57 1083.87,-529.57 1083.87,-529.57 1085.84,-526.68 1081.27,-527.79 1087.82,-523.79 1087.82,-523.79\"/>\n",
"<text text-anchor=\"start\" x=\"912.49\" y=\"-757.13\" font-family=\"Lato\" font-size=\"14.00\">o0</text>\n",
"<text text-anchor=\"start\" x=\"912.99\" y=\"-742.13\" 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=\"black\" d=\"M777.83,-772.56C791.95,-770.48 810.5,-769.97 824.99,-777.33 835.54,-782.7 843.67,-792.91 849.43,-802.54\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"852.87,-808.73 846.71,-804.14 851.17,-805.67 849.47,-802.61 849.47,-802.61 849.47,-802.61 851.17,-805.67 852.22,-801.08 852.87,-808.73 852.87,-808.73\"/>\n",
"<text text-anchor=\"start\" x=\"803.99\" y=\"-796.13\" font-family=\"Lato\" font-size=\"14.00\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"806.49\" y=\"-781.13\" 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=\"black\" cx=\"1098.65\" cy=\"-330.33\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1098.65\" y=\"-326.63\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1100.66,-312.24C1103.27,-272.97 1111.71,-181.96 1134.65,-163.33 1154.17,-147.48 1184.07,-151.49 1205.17,-157.37\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1211.96,-159.41 1204.35,-160.42 1208.61,-158.41 1205.26,-157.4 1205.26,-157.4 1205.26,-157.4 1208.61,-158.41 1206.17,-154.38 1211.96,-159.41 1211.96,-159.41\"/>\n",
"<text text-anchor=\"start\" x=\"1152.65\" y=\"-182.13\" font-family=\"Lato\" font-size=\"14.00\">i0</text>\n",
"<text text-anchor=\"start\" x=\"1150.65\" y=\"-167.13\" 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=\"black\" points=\"1230.98,-290.33 1200.82,-272.33 1230.98,-254.33 1261.15,-272.33 1230.98,-290.33\"/>\n",
"<text text-anchor=\"middle\" x=\"1230.98\" y=\"-268.63\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1104.99,-313.25C1110.21,-299.77 1119.59,-281.86 1134.65,-273.33 1155.05,-261.78 1182.05,-262.7 1202.11,-265.83\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1209.16,-267.07 1201.72,-268.96 1205.71,-266.46 1202.26,-265.86 1202.26,-265.86 1202.26,-265.86 1205.71,-266.46 1202.81,-262.76 1209.16,-267.07 1209.16,-267.07\"/>\n",
"<text text-anchor=\"start\" x=\"1150.65\" y=\"-292.13\" font-family=\"Lato\" font-size=\"14.00\">!i0</text>\n",
"<text text-anchor=\"start\" x=\"1150.65\" y=\"-277.13\" 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=\"black\" d=\"M1216.88,-282.28C1207.67,-288.92 1194.87,-297.47 1182.65,-303.33 1163.4,-312.56 1140.2,-319.81 1123.23,-324.46\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1116.37,-326.29 1122.32,-321.45 1119.75,-325.39 1123.13,-324.49 1123.13,-324.49 1123.13,-324.49 1119.75,-325.39 1123.95,-327.53 1116.37,-326.29 1116.37,-326.29\"/>\n",
"<text text-anchor=\"start\" x=\"1154.15\" y=\"-339.13\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"<text text-anchor=\"start\" x=\"1150.65\" y=\"-324.13\" 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=\"black\" cx=\"1098.65\" cy=\"-166.33\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1098.65\" y=\"-162.63\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1105.83,-149.66C1111.34,-137.44 1120.72,-121.75 1134.65,-114.33 1153.48,-104.31 1163.14,-105.71 1182.65,-114.33 1197.86,-121.06 1210.29,-135.35 1218.59,-147.26\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1222.54,-153.21 1216.05,-149.12 1220.61,-150.29 1218.67,-147.38 1218.67,-147.38 1218.67,-147.38 1220.61,-150.29 1221.29,-145.64 1222.54,-153.21 1222.54,-153.21\"/>\n",
"<text text-anchor=\"start\" x=\"1138.65\" y=\"-133.13\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"1150.65\" y=\"-118.13\" 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=\"black\" d=\"M1101,-184.3C1104.44,-225.91 1114.7,-327.38 1134.65,-354.33 1148.96,-373.66 1166.13,-361.85 1182.65,-379.33 1204.96,-402.94 1218.01,-438.86 1224.57,-461.96\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1226.48,-468.98 1221.61,-463.05 1225.56,-465.6 1224.65,-462.23 1224.65,-462.23 1224.65,-462.23 1225.56,-465.6 1227.69,-461.4 1226.48,-468.98 1226.48,-468.98\"/>\n",
"<text text-anchor=\"start\" x=\"1136.65\" y=\"-398.13\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"1150.65\" y=\"-383.13\" 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=\"black\" d=\"M1112.29,-178.2C1118.81,-184.15 1126.98,-191.33 1134.65,-197.33 1155.05,-213.28 1162.26,-214.38 1182.65,-230.33 1193.25,-238.63 1204.55,-248.61 1213.45,-256.76\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1218.66,-261.56 1211.38,-259.13 1216.08,-259.19 1213.51,-256.81 1213.51,-256.81 1213.51,-256.81 1216.08,-259.19 1215.65,-254.5 1218.66,-261.56 1218.66,-261.56\"/>\n",
"<text text-anchor=\"start\" x=\"1136.65\" y=\"-249.13\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"1150.65\" y=\"-234.13\" 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=\"black\" points=\"1230.98,-52.33 1200.82,-34.33 1230.98,-16.33 1261.15,-34.33 1230.98,-52.33\"/>\n",
"<text text-anchor=\"middle\" x=\"1230.98\" y=\"-30.63\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1100.89,-148.36C1103.88,-110.74 1112.96,-25.74 1134.65,-8.33 1156.84,9.48 1190.29,-6.7 1211.1,-20.3\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1217.12,-24.4 1209.56,-23.07 1214.23,-22.43 1211.33,-20.46 1211.33,-20.46 1211.33,-20.46 1214.23,-22.43 1213.1,-17.86 1217.12,-24.4 1217.12,-24.4\"/>\n",
"<text text-anchor=\"start\" x=\"1134.65\" y=\"-27.13\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"1150.65\" y=\"-12.13\" 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=\"black\" d=\"M1207.02,-38.29C1185.64,-43.09 1154.22,-53.2 1134.65,-73.33 1116.58,-91.92 1107.66,-120.73 1103.38,-141.36\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1102.05,-148.29 1100.28,-140.82 1102.71,-144.85 1103.37,-141.41 1103.37,-141.41 1103.37,-141.41 1102.71,-144.85 1106.47,-142.01 1102.05,-148.29 1102.05,-148.29\"/>\n",
"<text text-anchor=\"start\" x=\"1154.15\" y=\"-92.13\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"<text text-anchor=\"start\" x=\"1150.65\" y=\"-77.13\" 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=\"black\" cx=\"623.32\" cy=\"-501.33\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"623.32\" y=\"-497.63\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M636.73,-513.35C643.06,-518.91 651.13,-525.18 659.32,-529.33 718.72,-559.43 738.1,-558.66 803.99,-568.33 878.66,-579.29 1104.86,-580.4 1193.66,-580.4\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1200.81,-580.4 1193.81,-583.55 1197.31,-580.4 1193.81,-580.4 1193.81,-580.4 1193.81,-580.4 1197.31,-580.4 1193.81,-577.25 1200.81,-580.4 1200.81,-580.4\"/>\n",
"<text text-anchor=\"start\" x=\"898.99\" y=\"-595.13\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"912.99\" y=\"-580.13\" 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=\"black\" d=\"M631.61,-517.57C637.54,-529.08 646.96,-544.06 659.32,-553.33 683.95,-571.79 695.66,-566.11 725.32,-574.33 775.71,-588.29 1139.98,-655.11 1182.65,-685.33 1200.7,-698.12 1213.69,-720.16 1221.45,-736.49\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1224.45,-743.1 1218.68,-738.03 1223,-739.91 1221.55,-736.73 1221.55,-736.73 1221.55,-736.73 1223,-739.91 1224.42,-735.42 1224.45,-743.1 1224.45,-743.1\"/>\n",
"<text text-anchor=\"start\" x=\"900.99\" y=\"-639.13\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"912.99\" y=\"-624.13\" 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=\"black\" points=\"755.65,-499.33 725.49,-481.33 755.65,-463.33 785.82,-481.33 755.65,-499.33\"/>\n",
"<text text-anchor=\"middle\" x=\"755.65\" y=\"-477.63\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M641.36,-498.72C662.43,-495.48 698.65,-489.93 724.47,-485.96\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"731.45,-484.89 725.01,-489.07 727.99,-485.42 724.53,-485.95 724.53,-485.95 724.53,-485.95 727.99,-485.42 724.06,-482.84 731.45,-484.89 731.45,-484.89\"/>\n",
"<text text-anchor=\"start\" x=\"659.32\" y=\"-514.13\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"675.32\" y=\"-499.13\" 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=\"black\" points=\"755.65,-413.33 725.49,-395.33 755.65,-377.33 785.82,-395.33 755.65,-413.33\"/>\n",
"<text text-anchor=\"middle\" x=\"755.65\" y=\"-391.63\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M633.38,-486.11C639.77,-476.24 649.01,-463.55 659.32,-454.33 677.74,-437.87 686.32,-439.32 707.32,-426.33 716.38,-420.73 726.25,-414.32 734.62,-408.78\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"740.69,-404.75 736.6,-411.24 737.78,-406.68 734.86,-408.62 734.86,-408.62 734.86,-408.62 737.78,-406.68 733.12,-406 740.69,-404.75 740.69,-404.75\"/>\n",
"<text text-anchor=\"start\" x=\"661.32\" y=\"-473.13\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"675.32\" y=\"-458.13\" 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=\"black\" d=\"M769.46,-471.21C793.3,-452.8 846.64,-413.6 896.99,-390.33 929.1,-375.49 1028.33,-348.54 1074.09,-336.47\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1080.96,-334.66 1074.99,-339.49 1077.58,-335.56 1074.19,-336.45 1074.19,-336.45 1074.19,-336.45 1077.58,-335.56 1073.39,-333.4 1080.96,-334.66 1080.96,-334.66\"/>\n",
"<text text-anchor=\"start\" x=\"910.49\" y=\"-409.13\" font-family=\"Lato\" font-size=\"14.00\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"912.99\" y=\"-394.13\" 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=\"black\" cx=\"860.99\" cy=\"-488.33\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"860.99\" y=\"-484.63\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M784.97,-480.76C797.28,-480.77 811.87,-481.12 824.99,-482.33 828.58,-482.66 832.36,-483.16 836.05,-483.72\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"842.97,-484.87 835.55,-486.83 839.51,-484.3 836.06,-483.72 836.06,-483.72 836.06,-483.72 839.51,-484.3 836.58,-480.62 842.97,-484.87 842.97,-484.87\"/>\n",
"<text text-anchor=\"start\" x=\"805.99\" y=\"-501.13\" font-family=\"Lato\" font-size=\"14.00\">o0</text>\n",
"<text text-anchor=\"start\" x=\"806.49\" y=\"-486.13\" 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=\"black\" d=\"M770.65,-386.26C795.07,-371.07 847.61,-341.16 896.99,-331.33 959.61,-318.87 1035.42,-323.74 1073.43,-327.51\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1080.52,-328.25 1073.23,-330.66 1077.04,-327.88 1073.56,-327.52 1073.56,-327.52 1073.56,-327.52 1077.04,-327.88 1073.88,-324.39 1080.52,-328.25 1080.52,-328.25\"/>\n",
"<text text-anchor=\"start\" x=\"910.49\" y=\"-350.13\" font-family=\"Lato\" font-size=\"14.00\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"912.99\" y=\"-335.13\" 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=\"black\" d=\"M736.57,-388.7C715.83,-382.36 681.8,-375.94 659.32,-392.33 633.3,-411.3 626.2,-449.92 624.49,-475.71\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"624.13,-482.95 621.33,-475.8 624.3,-479.45 624.48,-475.95 624.48,-475.95 624.48,-475.95 624.3,-479.45 627.62,-476.11 624.13,-482.95 624.13,-482.95\"/>\n",
"<text text-anchor=\"start\" x=\"674.82\" y=\"-411.13\" font-family=\"Lato\" font-size=\"14.00\">o0</text>\n",
"<text text-anchor=\"start\" x=\"675.32\" y=\"-396.13\" 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=\"black\" d=\"M862.46,-506.73C864.46,-576.8 873.16,-824.31 896.99,-849.33 926.51,-880.35 949.49,-863.33 992.32,-863.33 992.32,-863.33 992.32,-863.33 1336.76,-863.33 1410.01,-863.33 1433.85,-752.91 1440.88,-703.15\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1441.83,-695.98 1444.03,-703.34 1441.37,-699.45 1440.91,-702.92 1440.91,-702.92 1440.91,-702.92 1441.37,-699.45 1437.79,-702.51 1441.83,-695.98 1441.83,-695.98\"/>\n",
"<text text-anchor=\"start\" x=\"1136.65\" y=\"-882.13\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"1150.65\" y=\"-867.13\" 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=\"black\" d=\"M863.62,-506.26C867.48,-545.29 878.29,-636.36 896.99,-660.33 911.53,-678.99 925.43,-670.02 944.99,-683.33 956.51,-691.18 967.99,-701.77 976.76,-710.59\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"981.85,-715.82 974.71,-713 979.41,-713.31 976.97,-710.8 976.97,-710.8 976.97,-710.8 979.41,-713.31 979.22,-708.61 981.85,-715.82 981.85,-715.82\"/>\n",
"<text text-anchor=\"start\" x=\"900.99\" y=\"-702.13\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"912.99\" y=\"-687.13\" 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=\"black\" points=\"993.32,-454.33 963.15,-436.33 993.32,-418.33 1023.48,-436.33 993.32,-454.33\"/>\n",
"<text text-anchor=\"middle\" x=\"993.32\" y=\"-432.63\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M879.06,-485.72C896.23,-482.71 923.21,-476.89 944.99,-467.33 955.02,-462.92 965.3,-456.47 973.7,-450.59\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"979.73,-446.25 975.89,-452.9 976.89,-448.3 974.05,-450.34 974.05,-450.34 974.05,-450.34 976.89,-448.3 972.21,-447.79 979.73,-446.25 979.73,-446.25\"/>\n",
"<text text-anchor=\"start\" x=\"896.99\" y=\"-500.13\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"912.99\" y=\"-485.13\" 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=\"black\" points=\"478.33,-623.33 448.16,-605.33 478.33,-587.33 508.49,-605.33 478.33,-623.33\"/>\n",
"<text text-anchor=\"middle\" x=\"478.33\" y=\"-601.63\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M857.07,-506.19C853.12,-524.21 844.21,-551.32 824.99,-565.33 727.67,-636.24 572.35,-620.98 508.35,-610.75\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"501.36,-609.59 508.78,-607.62 504.81,-610.16 508.27,-610.73 508.27,-610.73 508.27,-610.73 504.81,-610.16 507.75,-613.84 501.36,-609.59 501.36,-609.59\"/>\n",
"<text text-anchor=\"start\" x=\"661.32\" y=\"-636.13\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"675.32\" y=\"-621.13\" 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=\"black\" d=\"M1012.15,-429.53C1027.14,-423.08 1048.34,-412.19 1062.65,-397.33 1074.62,-384.91 1083.53,-367.57 1089.36,-353.64\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1091.98,-347.12 1092.3,-354.79 1090.68,-350.37 1089.37,-353.62 1089.37,-353.62 1089.37,-353.62 1090.68,-350.37 1086.45,-352.44 1091.98,-347.12 1091.98,-347.12\"/>\n",
"<text text-anchor=\"start\" x=\"1043.65\" y=\"-432.13\" font-family=\"Lato\" font-size=\"14.00\">o0</text>\n",
"<text text-anchor=\"start\" x=\"1044.15\" y=\"-417.13\" 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=\"black\" d=\"M973.08,-430.29C952.83,-425.11 920.65,-420.34 896.99,-433.33 884.71,-440.07 876.13,-453.14 870.53,-464.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"867.58,-471.53 867.53,-463.85 868.99,-468.33 870.41,-465.13 870.41,-465.13 870.41,-465.13 868.99,-468.33 873.29,-466.4 867.58,-471.53 867.58,-471.53\"/>\n",
"<text text-anchor=\"start\" x=\"910.49\" y=\"-452.13\" font-family=\"Lato\" font-size=\"14.00\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"912.99\" y=\"-437.13\" 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=\"black\" d=\"M500.1,-600.17C551.41,-587.56 688.36,-554.73 803.99,-534.33 866.26,-523.35 885.14,-535.76 944.99,-515.33 1002.15,-495.82 1025.2,-494.72 1062.65,-447.33 1083.83,-420.53 1092.21,-381.13 1095.52,-355.6\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1096.36,-348.47 1098.67,-355.79 1095.95,-351.94 1095.54,-355.42 1095.54,-355.42 1095.54,-355.42 1095.95,-351.94 1092.41,-355.05 1096.36,-348.47 1096.36,-348.47\"/>\n",
"<text text-anchor=\"start\" x=\"805.99\" y=\"-553.13\" font-family=\"Lato\" font-size=\"14.00\">o0</text>\n",
"<text text-anchor=\"start\" x=\"806.49\" y=\"-538.13\" 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=\"black\" d=\"M484.36,-590.63C491.17,-572.95 505.02,-543.62 526.66,-527.33 547.47,-511.66 577.13,-505.43 597.89,-502.96\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"605.1,-502.2 598.47,-506.06 601.62,-502.57 598.14,-502.93 598.14,-502.93 598.14,-502.93 601.62,-502.57 597.81,-499.8 605.1,-502.2 605.1,-502.2\"/>\n",
"<text text-anchor=\"start\" x=\"546.49\" y=\"-546.13\" font-family=\"Lato\" font-size=\"14.00\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"548.99\" y=\"-531.13\" 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=\"black\" cx=\"333.33\" cy=\"-688.33\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"333.33\" y=\"-684.63\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M350.13,-695.42C356.06,-697.88 362.92,-700.48 369.33,-702.33 416.22,-715.91 428.51,-722.33 477.33,-722.33 477.33,-722.33 477.33,-722.33 815.49,-722.33 864.95,-722.33 922.16,-724.31 957.79,-725.78\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"965.06,-726.08 957.94,-728.94 961.56,-725.94 958.07,-725.79 958.07,-725.79 958.07,-725.79 961.56,-725.94 958.2,-722.64 965.06,-726.08 965.06,-726.08\"/>\n",
"<text text-anchor=\"start\" x=\"663.32\" y=\"-741.13\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"675.32\" y=\"-726.13\" 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=\"black\" d=\"M341.67,-704.52C347.53,-715.44 356.82,-729.11 369.33,-736.33 485.99,-803.65 655.85,-790.75 724.35,-781.93\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"731.42,-780.99 724.9,-785.03 727.95,-781.45 724.48,-781.91 724.48,-781.91 724.48,-781.91 727.95,-781.45 724.07,-778.79 731.42,-780.99 731.42,-780.99\"/>\n",
"<text text-anchor=\"start\" x=\"534.99\" y=\"-807.13\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"548.99\" y=\"-792.13\" 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=\"black\" d=\"M349.73,-680.16C368.77,-669.98 402.07,-651.9 429.99,-635.33 439.06,-629.95 448.93,-623.75 457.31,-618.39\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"463.38,-614.48 459.2,-620.92 460.43,-616.37 457.49,-618.27 457.49,-618.27 457.49,-618.27 460.43,-616.37 455.79,-615.62 463.38,-614.48 463.38,-614.48\"/>\n",
"<text text-anchor=\"start\" x=\"377.66\" y=\"-687.13\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"391.66\" y=\"-672.13\" 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=\"black\" points=\"478.33,-457.33 448.16,-439.33 478.33,-421.33 508.49,-439.33 478.33,-457.33\"/>\n",
"<text text-anchor=\"middle\" x=\"478.33\" y=\"-435.63\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M334.72,-670.07C336.13,-622.61 342.37,-497.03 369.33,-467.33 387.5,-447.32 417.95,-440.8 441.9,-439.02\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"449.1,-438.61 442.29,-442.15 445.61,-438.81 442.11,-439.01 442.11,-439.01 442.11,-439.01 445.61,-438.81 441.93,-435.86 449.1,-438.61 449.1,-438.61\"/>\n",
"<text text-anchor=\"start\" x=\"375.66\" y=\"-486.13\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"391.66\" y=\"-471.13\" 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=\"black\" d=\"M482.04,-423.32C491.46,-373.79 527.45,-226.33 622.32,-226.33 622.32,-226.33 622.32,-226.33 994.32,-226.33 1028.16,-226.33 1060.83,-201.97 1080.08,-184.29\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1085.61,-179.06 1082.69,-186.16 1083.07,-181.46 1080.53,-183.87 1080.53,-183.87 1080.53,-183.87 1083.07,-181.46 1078.36,-181.58 1085.61,-179.06 1085.61,-179.06\"/>\n",
"<text text-anchor=\"start\" x=\"805.99\" y=\"-245.13\" font-family=\"Lato\" font-size=\"14.00\">o0</text>\n",
"<text text-anchor=\"start\" x=\"806.49\" y=\"-230.13\" 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=\"black\" d=\"M465.13,-449.76C459.11,-455.53 452.25,-463.18 447.99,-471.33 431.11,-503.63 449.09,-520.29 429.99,-551.33 411.69,-581.09 389.44,-572.76 369.33,-601.33 355.73,-620.64 360.27,-629.47 351.33,-651.33 349.42,-655.99 347.26,-660.92 345.14,-665.61\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"342.08,-672.25 342.14,-664.58 343.54,-669.07 345.01,-665.89 345.01,-665.89 345.01,-665.89 343.54,-669.07 347.87,-667.21 342.08,-672.25 342.08,-672.25\"/>\n",
"<text text-anchor=\"start\" x=\"389.16\" y=\"-620.13\" font-family=\"Lato\" font-size=\"14.00\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"391.66\" y=\"-605.13\" 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=\"black\" d=\"M212.95,-705.86C239.34,-701.99 281.84,-695.75 308.37,-691.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"315.41,-690.82 308.94,-694.95 311.94,-691.33 308.48,-691.83 308.48,-691.83 308.48,-691.83 311.94,-691.33 308.02,-688.72 315.41,-690.82 315.41,-690.82\"/>\n",
"<text text-anchor=\"start\" x=\"262.5\" y=\"-720.13\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"<text text-anchor=\"start\" x=\"259\" y=\"-705.13\" 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=\"black\" d=\"M291.05,-868.31C317.09,-872.44 360.79,-878.33 398.66,-878.33 398.66,-878.33 398.66,-878.33 756.65,-878.33 789.18,-878.33 821.74,-857.29 841.38,-841.72\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"847.05,-837.09 843.62,-843.96 844.34,-839.31 841.63,-841.52 841.63,-841.52 841.63,-841.52 844.34,-839.31 839.63,-839.08 847.05,-837.09 847.05,-837.09\"/>\n",
"<text text-anchor=\"start\" x=\"552.49\" y=\"-897.13\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"<text text-anchor=\"start\" x=\"548.99\" y=\"-882.13\" 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=\"black\" d=\"M423.83,-520.7C449.06,-516.86 490.63,-510.89 526.66,-507.33 550.78,-504.95 578.42,-503.34 597.77,-502.39\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"605.01,-502.04 598.17,-505.52 601.51,-502.21 598.02,-502.38 598.02,-502.38 598.02,-502.38 601.51,-502.21 597.87,-499.23 605.01,-502.04 605.01,-502.04\"/>\n",
"<text text-anchor=\"start\" x=\"473.83\" y=\"-535.13\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"<text text-anchor=\"start\" x=\"470.33\" y=\"-520.13\" 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=\"black\" d=\"M583.2,-928.76C608.3,-926.42 647.93,-923.33 682.32,-923.33 682.32,-923.33 682.32,-923.33 994.32,-923.33 1060.05,-923.33 1085.47,-828.35 1093.95,-782.08\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1095.16,-775.1 1097.06,-782.53 1094.56,-778.54 1093.96,-781.99 1093.96,-781.99 1093.96,-781.99 1094.56,-778.54 1090.86,-781.45 1095.16,-775.1 1095.16,-775.1\"/>\n",
"<text text-anchor=\"start\" x=\"809.99\" y=\"-942.13\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"<text text-anchor=\"start\" x=\"806.49\" y=\"-927.13\" 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=\"black\" d=\"M1314.46,-169.47C1308.62,-170.24 1302.23,-170.95 1296.32,-171.33 1285.32,-172.04 1273.29,-171.47 1262.63,-170.5\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1255.5,-169.77 1262.78,-167.35 1258.98,-170.12 1262.46,-170.48 1262.46,-170.48 1262.46,-170.48 1258.98,-170.12 1262.14,-173.61 1255.5,-169.77 1255.5,-169.77\"/>\n",
"<text text-anchor=\"start\" x=\"1283.32\" y=\"-191.13\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"<text text-anchor=\"start\" x=\"1279.82\" y=\"-176.13\" 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 0x7f6c003de2a0> >"
]
},
"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",
"id": "a2f7d570",
"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,
"id": "b46ddd69",
"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.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"650pt\" height=\"360pt\"\n",
" viewBox=\"0.00 0.00 650.45 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.4854368932038835 0.4854368932038835) rotate(0) translate(4 737.02)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-737.02 1334.88,-737.02 1334.88,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"553.94\" y=\"-718.82\" font-family=\"Lato\" font-size=\"14.00\">Inf(</text>\n",
"<text text-anchor=\"start\" x=\"574.94\" y=\"-718.82\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"590.94\" y=\"-718.82\" font-family=\"Lato\" font-size=\"14.00\">) | (Fin(</text>\n",
"<text text-anchor=\"start\" x=\"632.94\" y=\"-718.82\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"648.94\" y=\"-718.82\" font-family=\"Lato\" font-size=\"14.00\">) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"694.94\" y=\"-718.82\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"710.94\" y=\"-718.82\" font-family=\"Lato\" font-size=\"14.00\">) | Fin(</text>\n",
"<text text-anchor=\"start\" x=\"748.94\" y=\"-718.82\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"764.94\" y=\"-718.82\" font-family=\"Lato\" font-size=\"14.00\">)))</text>\n",
"<text text-anchor=\"start\" x=\"609.94\" y=\"-704.82\" font-family=\"Lato\" font-size=\"14.00\">[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.02\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-603.32\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1.15,-607.02C2.79,-607.02 17.15,-607.02 30.63,-607.02\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.94,-607.02 30.94,-610.17 34.44,-607.02 30.94,-607.02 30.94,-607.02 30.94,-607.02 34.44,-607.02 30.94,-603.87 37.94,-607.02 37.94,-607.02\"/>\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.33,-523.02 126.17,-505.02 156.33,-487.02 186.5,-505.02 156.33,-523.02\"/>\n",
"<text text-anchor=\"middle\" x=\"156.33\" y=\"-501.32\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M69.06,-594.51C86.85,-576.05 120.15,-541.51 139.77,-521.16\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"144.68,-516.07 142.09,-523.29 142.25,-518.59 139.82,-521.11 139.82,-521.11 139.82,-521.11 142.25,-518.59 137.55,-518.92 144.68,-516.07 144.68,-516.07\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-571.82\" 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=\"235,-647.02 204.83,-629.02 235,-611.02 265.16,-629.02 235,-647.02\"/>\n",
"<text text-anchor=\"middle\" x=\"235\" y=\"-625.32\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M73.97,-609.13C103.58,-612.81 165.09,-620.45 202.63,-625.12\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"209.81,-626.01 202.47,-628.27 206.33,-625.58 202.86,-625.15 202.86,-625.15 202.86,-625.15 206.33,-625.58 203.25,-622.02 209.81,-626.01 209.81,-626.01\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-615.82\" 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.66,-388.02 337.5,-370.02 367.66,-352.02 397.83,-370.02 367.66,-388.02\"/>\n",
"<text text-anchor=\"middle\" x=\"367.66\" y=\"-366.32\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M60.92,-589.43C68.46,-559.48 87.74,-498.4 126,-463.02 186.96,-406.64 285.83,-383.14 335.74,-374.47\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"342.74,-373.3 336.36,-377.56 339.29,-373.88 335.84,-374.46 335.84,-374.46 335.84,-374.46 339.29,-373.88 335.32,-371.35 342.74,-373.3 342.74,-373.3\"/>\n",
"<text text-anchor=\"start\" x=\"148.33\" y=\"-466.82\" 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.99,-697.02 494.82,-679.02 524.99,-661.02 555.16,-679.02 524.99,-697.02\"/>\n",
"<text text-anchor=\"middle\" x=\"524.99\" y=\"-675.32\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M67.25,-621.59C83.37,-642.63 116.82,-679.02 155.33,-679.02 155.33,-679.02 155.33,-679.02 368.66,-679.02 409.35,-679.02 456.04,-679.02 487.52,-679.02\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"494.79,-679.02 487.79,-682.17 491.29,-679.02 487.79,-679.02 487.79,-679.02 487.79,-679.02 491.29,-679.02 487.79,-675.87 494.79,-679.02 494.79,-679.02\"/>\n",
"<text text-anchor=\"start\" x=\"227\" y=\"-682.82\" 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.65\" cy=\"-558.02\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"992.65\" y=\"-554.32\" font-family=\"Lato\" font-size=\"14.00\">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.98,-429.02 1062.82,-411.02 1092.98,-393.02 1123.15,-411.02 1092.98,-429.02\"/>\n",
"<text text-anchor=\"middle\" x=\"1092.98\" y=\"-407.32\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1003.44,-543.39C1021.49,-516.4 1059.97,-458.87 1079.73,-429.34\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1083.64,-423.48 1082.37,-431.05 1081.7,-426.39 1079.75,-429.3 1079.75,-429.3 1079.75,-429.3 1081.7,-426.39 1077.13,-427.55 1083.64,-423.48 1083.64,-423.48\"/>\n",
"<text text-anchor=\"start\" x=\"1028.65\" y=\"-504.82\" 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.98,-576.02 1062.82,-558.02 1092.98,-540.02 1123.15,-558.02 1092.98,-576.02\"/>\n",
"<text text-anchor=\"middle\" x=\"1092.98\" y=\"-554.32\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1010.78,-558.02C1023.07,-558.02 1040.1,-558.02 1055.39,-558.02\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1062.73,-558.02 1055.73,-561.17 1059.23,-558.02 1055.73,-558.02 1055.73,-558.02 1055.73,-558.02 1059.23,-558.02 1055.73,-554.87 1062.73,-558.02 1062.73,-558.02\"/>\n",
"<text text-anchor=\"start\" x=\"1028.65\" y=\"-561.82\" 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.76\" cy=\"-457.02\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1196.76\" y=\"-453.32\" font-family=\"Lato\" font-size=\"14.00\">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.72,-414.91C1129.13,-417.57 1144.53,-421.77 1157.32,-428.02 1164.19,-431.38 1171.06,-436.04 1177.05,-440.64\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"1182.72,-445.18 1175.29,-443.26 1179.68,-443.38 1176.94,-441.19 1177.26,-440.8 1177.57,-440.41 1180.3,-442.6 1179.23,-438.35 1182.72,-445.18 1182.72,-445.18\"/>\n",
"<text text-anchor=\"start\" x=\"1141.32\" y=\"-431.82\" 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.17,-566.18C1063.4,-571.76 1044.94,-577.57 1028.65,-574.02 1024.2,-573.05 1019.63,-571.46 1015.32,-569.65\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"1008.83,-566.68 1016.51,-566.73 1012.23,-567.68 1015.41,-569.14 1015.2,-569.59 1014.99,-570.05 1011.81,-568.59 1013.89,-572.46 1008.83,-566.68 1008.83,-566.68\"/>\n",
"<text text-anchor=\"start\" x=\"1028.65\" y=\"-578.82\" 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.54,-513.02 1270.38,-495.02 1300.54,-477.02 1330.71,-495.02 1300.54,-513.02\"/>\n",
"<text text-anchor=\"middle\" x=\"1300.54\" y=\"-491.32\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1213.76,-463.93C1220.64,-466.83 1228.78,-470.18 1236.21,-473.02 1248.46,-477.69 1262.19,-482.51 1273.73,-486.44\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1280.59,-488.77 1272.95,-489.51 1277.28,-487.64 1273.96,-486.52 1273.96,-486.52 1273.96,-486.52 1277.28,-487.64 1274.97,-483.54 1280.59,-488.77 1280.59,-488.77\"/>\n",
"<text text-anchor=\"start\" x=\"1236.21\" y=\"-481.82\" 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.32,-554.02 862.15,-536.02 892.32,-518.02 922.48,-536.02 892.32,-554.02\"/>\n",
"<text text-anchor=\"middle\" x=\"892.32\" y=\"-532.32\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1178.79,-455.45C1148.16,-453.15 1081.9,-450.54 1028.65,-465.02 984.28,-477.08 937.96,-505.35 912.67,-522.36\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"906.7,-526.42 910.71,-519.88 909.6,-524.45 912.49,-522.48 912.49,-522.48 912.49,-522.48 909.6,-524.45 914.26,-525.08 906.7,-526.42 906.7,-526.42\"/>\n",
"<text text-anchor=\"start\" x=\"1028.65\" y=\"-468.82\" 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.12,-483.08C1281.48,-473.16 1267.69,-459.79 1252.21,-454.02 1242.6,-450.43 1231.37,-450.42 1221.61,-451.6\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"1214.49,-452.69 1220.93,-448.52 1217.87,-451.67 1221.33,-451.14 1221.4,-451.63 1221.48,-452.13 1218.02,-452.66 1221.88,-454.74 1214.49,-452.69 1214.49,-452.69\"/>\n",
"<text text-anchor=\"start\" x=\"1236.21\" y=\"-457.82\" 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.66,-540.79C930.33,-544.3 951.63,-549.06 967.86,-552.69\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"974.91,-554.27 967.4,-555.82 971.39,-554 967.97,-553.23 968.08,-552.75 968.19,-552.26 971.61,-553.02 968.77,-549.67 974.91,-554.27 974.91,-554.27\"/>\n",
"<text text-anchor=\"start\" x=\"940.65\" y=\"-552.82\" 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.65\" cy=\"-357.02\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"992.65\" y=\"-353.32\" font-family=\"Lato\" font-size=\"14.00\">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.98,-136.02 1062.82,-118.02 1092.98,-100.02 1123.15,-118.02 1092.98,-136.02\"/>\n",
"<text text-anchor=\"middle\" x=\"1092.98\" y=\"-114.32\" font-family=\"Lato\" font-size=\"14.00\">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.93,-344.04C1017.86,-330.62 1035.5,-308.51 1044.65,-286.02 1064.81,-236.47 1044.57,-217.36 1062.65,-167.02 1066.53,-156.21 1072.91,-145.14 1078.73,-136.27\"/>\n",
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"1082.82,-130.23 1081.5,-137.79 1081.27,-133.41 1079.31,-136.31 1078.89,-136.03 1078.48,-135.75 1080.44,-132.85 1076.29,-134.26 1082.82,-130.23 1082.82,-130.23\"/>\n",
"<text text-anchor=\"start\" x=\"1028.65\" y=\"-316.82\" 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.98,-364.02 1062.82,-346.02 1092.98,-328.02 1123.15,-346.02 1092.98,-364.02\"/>\n",
"<text text-anchor=\"middle\" x=\"1092.98\" y=\"-342.32\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1010.69,-359.95C1016.38,-360.79 1022.77,-361.6 1028.65,-362.02 1035.74,-362.52 1037.63,-363.17 1044.65,-362.02 1052.35,-360.75 1060.49,-358.4 1067.8,-355.88\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1074.8,-353.34 1069.29,-358.69 1071.51,-354.53 1068.22,-355.73 1068.22,-355.73 1068.22,-355.73 1071.51,-354.53 1067.14,-352.77 1074.8,-353.34 1074.8,-353.34\"/>\n",
"<text text-anchor=\"start\" x=\"1028.65\" y=\"-365.82\" 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.76\" cy=\"-118.02\" rx=\"21.4\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1196.76\" y=\"-114.32\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1108.96,-109.4C1121.71,-103.11 1140.58,-96.29 1157.32,-100.02 1162.36,-101.14 1167.53,-103 1172.37,-105.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1178.73,-108.09 1171.05,-107.97 1175.56,-106.6 1172.39,-105.12 1172.39,-105.12 1172.39,-105.12 1175.56,-106.6 1173.73,-102.26 1178.73,-108.09 1178.73,-108.09\"/>\n",
"<text text-anchor=\"start\" x=\"1141.32\" y=\"-103.82\" 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=\"black\" d=\"M1068.93,-342.33C1056.84,-341.04 1041.84,-340.48 1028.65,-343.02 1024.45,-343.83 1020.12,-345.14 1015.99,-346.63\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1009.29,-349.29 1014.64,-343.78 1012.55,-348 1015.8,-346.71 1015.8,-346.71 1015.8,-346.71 1012.55,-348 1016.96,-349.64 1009.29,-349.29 1009.29,-349.29\"/>\n",
"<text text-anchor=\"start\" x=\"1028.65\" y=\"-346.82\" 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.99\" cy=\"-605.02\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"791.99\" y=\"-601.32\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M807.91,-595.78C818.19,-589.32 832.08,-580.38 843.99,-572.02 853.73,-565.17 864.31,-557.19 872.99,-550.48\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"878.66,-546.06 875.07,-552.85 875.89,-548.21 873.13,-550.36 873.13,-550.36 873.13,-550.36 875.89,-548.21 871.2,-547.88 878.66,-546.06 878.66,-546.06\"/>\n",
"<text text-anchor=\"start\" x=\"827.99\" y=\"-585.82\" 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.65,-585.02 661.49,-567.02 691.65,-549.02 721.82,-567.02 691.65,-585.02\"/>\n",
"<text text-anchor=\"middle\" x=\"691.65\" y=\"-563.32\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M774.26,-600.37C764.21,-597.43 751.24,-593.38 739.99,-589.02 731.83,-585.86 723.11,-581.96 715.39,-578.32\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"708.64,-575.09 716.31,-575.27 711.79,-576.6 714.95,-578.11 714.95,-578.11 714.95,-578.11 711.79,-576.6 713.59,-580.95 708.64,-575.09 708.64,-575.09\"/>\n",
"<text text-anchor=\"start\" x=\"739.99\" y=\"-597.82\" 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=\"black\" d=\"M713.01,-561.69C743.32,-553.14 801.28,-534.4 843.99,-506.02 899.72,-468.98 951.52,-408.35 976.32,-377.07\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"980.92,-371.23 979.07,-378.68 978.75,-373.98 976.59,-376.73 976.59,-376.73 976.59,-376.73 978.75,-373.98 974.11,-374.78 980.92,-371.23 980.92,-371.23\"/>\n",
"<text text-anchor=\"start\" x=\"827.99\" y=\"-518.82\" 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.06,-564.14C729.23,-563.68 743.91,-564.68 755.99,-570.02 763.57,-573.37 770.41,-579.17 775.98,-585.09\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"780.74,-590.5 773.75,-587.32 778.05,-588.2 775.74,-585.57 776.12,-585.24 776.49,-584.91 778.8,-587.54 778.48,-583.16 780.74,-590.5 780.74,-590.5\"/>\n",
"<text text-anchor=\"start\" x=\"739.99\" y=\"-573.82\" 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.65\" cy=\"-232.02\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"992.65\" y=\"-228.32\" font-family=\"Lato\" font-size=\"14.00\">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=\"M994.3,-213.83C996.18,-190.23 1003.18,-149.53 1028.65,-128.02 1036.87,-121.07 1047.92,-117.95 1058.48,-116.75\"/>\n",
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"1065.68,-116.2 1058.94,-119.87 1062.22,-116.96 1058.73,-117.23 1058.7,-116.73 1058.66,-116.23 1062.15,-115.97 1058.46,-113.59 1065.68,-116.2 1065.68,-116.2\"/>\n",
"<text text-anchor=\"start\" x=\"1028.65\" y=\"-131.82\" 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.98,-212.02 1062.82,-194.02 1092.98,-176.02 1123.15,-194.02 1092.98,-212.02\"/>\n",
"<text text-anchor=\"middle\" x=\"1092.98\" y=\"-190.32\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1003.09,-217.32C1009.27,-209.12 1018.13,-199.65 1028.65,-195.02 1038.87,-190.52 1050.95,-189.43 1061.81,-189.76\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1069.09,-190.19 1061.92,-192.92 1065.59,-189.98 1062.1,-189.78 1062.1,-189.78 1062.1,-189.78 1065.59,-189.98 1062.28,-186.63 1069.09,-190.19 1069.09,-190.19\"/>\n",
"<text text-anchor=\"start\" x=\"1028.65\" y=\"-198.82\" 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=\"black\" d=\"M1074.05,-200.95C1057.89,-207.19 1034.03,-216.41 1016.5,-223.19\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1009.89,-225.74 1015.28,-220.28 1013.15,-224.48 1016.42,-223.22 1016.42,-223.22 1016.42,-223.22 1013.15,-224.48 1017.55,-226.16 1009.89,-225.74 1009.89,-225.74\"/>\n",
"<text text-anchor=\"start\" x=\"1028.65\" y=\"-221.82\" 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.65\" cy=\"-118.02\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"992.65\" y=\"-114.32\" font-family=\"Lato\" font-size=\"14.00\">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=\"M1003.07,-103.26C1009.23,-95.03 1018.09,-85.56 1028.65,-81.02 1035.18,-78.21 1037.93,-78.7 1044.65,-81.02 1056.51,-85.1 1067.67,-93.51 1076.17,-101.29\"/>\n",
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"1081.61,-106.5 1074.38,-103.93 1078.74,-104.44 1076.21,-102.02 1076.56,-101.66 1076.91,-101.3 1079.43,-103.72 1078.74,-99.38 1081.61,-106.5 1081.61,-106.5\"/>\n",
"<text text-anchor=\"start\" x=\"1028.65\" y=\"-84.82\" 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=\"black\" d=\"M997.38,-135.42C1002.75,-159.01 1013.67,-202.2 1028.65,-237.02 1042.99,-270.36 1065.33,-306.25 1079.29,-327.39\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1083.33,-333.46 1076.83,-329.38 1081.39,-330.55 1079.45,-327.63 1079.45,-327.63 1079.45,-327.63 1081.39,-330.55 1082.07,-325.89 1083.33,-333.46 1083.33,-333.46\"/>\n",
"<text text-anchor=\"start\" x=\"1028.65\" y=\"-271.82\" 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=\"black\" d=\"M1007.32,-128.59C1024.54,-141.89 1054.19,-164.81 1073.44,-179.68\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1079.05,-184.02 1071.59,-182.24 1076.28,-181.88 1073.51,-179.74 1073.51,-179.74 1073.51,-179.74 1076.28,-181.88 1075.44,-177.25 1079.05,-184.02 1079.05,-184.02\"/>\n",
"<text text-anchor=\"start\" x=\"1028.65\" y=\"-159.82\" 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.98,-41.02 1062.82,-23.02 1092.98,-5.02 1123.15,-23.02 1092.98,-41.02\"/>\n",
"<text text-anchor=\"middle\" x=\"1092.98\" y=\"-19.32\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M993.21,-99.85C993.68,-73.91 998.89,-26.95 1028.65,-5.02 1041.54,4.48 1059.29,-1.8 1072.71,-9.44\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1078.92,-13.24 1071.3,-12.27 1075.93,-11.41 1072.95,-9.59 1072.95,-9.59 1072.95,-9.59 1075.93,-11.41 1074.59,-6.9 1078.92,-13.24 1078.92,-13.24\"/>\n",
"<text text-anchor=\"start\" x=\"1028.65\" y=\"-8.82\" 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=\"black\" d=\"M1074.88,-30.47C1061.2,-37.05 1042.14,-47.67 1028.65,-61.02 1018.65,-70.92 1010.27,-84.22 1004.22,-95.49\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1000.94,-101.84 1001.35,-94.18 1002.54,-98.73 1004.15,-95.63 1004.15,-95.63 1004.15,-95.63 1002.54,-98.73 1006.95,-97.07 1000.94,-101.84 1000.94,-101.84\"/>\n",
"<text text-anchor=\"start\" x=\"1028.65\" y=\"-64.82\" 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.32\" cy=\"-329.02\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"591.32\" y=\"-325.32\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M607.02,-338.11C643.9,-360.04 743.92,-414.02 834.99,-414.02 834.99,-414.02 834.99,-414.02 993.65,-414.02 1014.91,-414.02 1038.74,-413.31 1057.62,-412.58\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1064.86,-412.29 1057.99,-415.72 1061.36,-412.43 1057.87,-412.57 1057.87,-412.57 1057.87,-412.57 1061.36,-412.43 1057.74,-409.42 1064.86,-412.29 1064.86,-412.29\"/>\n",
"<text text-anchor=\"start\" x=\"827.99\" y=\"-417.82\" 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=\"black\" d=\"M603.1,-343.04C615.44,-358.02 637.1,-381.19 661.32,-393.02 820.37,-470.7 896.23,-404.58 1044.65,-501.02 1059.35,-510.57 1071.81,-526.1 1080.25,-538.54\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1084.29,-544.71 1077.82,-540.58 1082.37,-541.78 1080.46,-538.86 1080.46,-538.86 1080.46,-538.86 1082.37,-541.78 1083.09,-537.13 1084.29,-544.71 1084.29,-544.71\"/>\n",
"<text text-anchor=\"start\" x=\"827.99\" y=\"-441.82\" 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.65,-335.02 661.49,-317.02 691.65,-299.02 721.82,-317.02 691.65,-335.02\"/>\n",
"<text text-anchor=\"middle\" x=\"691.65\" y=\"-313.32\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M609.45,-326.93C623.1,-325.26 642.58,-322.89 659.04,-320.88\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"666.36,-319.98 659.79,-323.96 662.88,-320.41 659.41,-320.83 659.41,-320.83 659.41,-320.83 662.88,-320.41 659.03,-317.7 666.36,-319.98 666.36,-319.98\"/>\n",
"<text text-anchor=\"start\" x=\"627.32\" y=\"-327.82\" 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.65,-271.02 661.49,-253.02 691.65,-235.02 721.82,-253.02 691.65,-271.02\"/>\n",
"<text text-anchor=\"middle\" x=\"691.65\" y=\"-249.32\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M605.99,-318.45C623.21,-305.14 652.86,-282.23 672.11,-267.35\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"677.72,-263.01 674.11,-269.79 674.95,-265.15 672.18,-267.29 672.18,-267.29 672.18,-267.29 674.95,-265.15 670.26,-264.8 677.72,-263.01 677.72,-263.01\"/>\n",
"<text text-anchor=\"start\" x=\"627.32\" y=\"-303.82\" 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=\"black\" d=\"M710.41,-310.17C736.09,-300.43 785.21,-282.37 827.99,-270.02 877.02,-255.85 935.48,-243.3 967.58,-236.77\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"974.77,-235.32 968.53,-239.79 971.34,-236.01 967.91,-236.71 967.91,-236.71 967.91,-236.71 971.34,-236.01 967.29,-233.62 974.77,-235.32 974.77,-235.32\"/>\n",
"<text text-anchor=\"start\" x=\"827.99\" y=\"-273.82\" 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.99\" cy=\"-317.02\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"791.99\" y=\"-313.32\" font-family=\"Lato\" font-size=\"14.00\">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=\"M721.89,-317.02C736.13,-317.02 753.04,-317.02 766.57,-317.02\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"773.71,-317.02 766.71,-320.17 770.21,-317.52 766.71,-317.52 766.71,-317.02 766.71,-316.52 770.21,-316.52 766.71,-313.87 773.71,-317.02 773.71,-317.02\"/>\n",
"<text text-anchor=\"start\" x=\"739.99\" y=\"-320.82\" 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=\"black\" d=\"M711.66,-246.85C737.61,-238.79 785.73,-225.1 827.99,-220.02 877.48,-214.07 935.77,-221.86 967.72,-227.39\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"974.87,-228.66 967.43,-230.53 971.43,-228.05 967.98,-227.43 967.98,-227.43 967.98,-227.43 971.43,-228.05 968.54,-224.33 974.87,-228.66 974.87,-228.66\"/>\n",
"<text text-anchor=\"start\" x=\"827.99\" y=\"-223.82\" 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.5,-256.04C653.82,-258.61 638.6,-263.34 627.32,-272.02 616.01,-280.72 607.5,-294.2 601.7,-305.87\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"598.6,-312.48 598.72,-304.8 599.63,-309.1 601.12,-305.93 601.57,-306.14 602.02,-306.35 600.53,-309.52 604.42,-307.48 598.6,-312.48 598.6,-312.48\"/>\n",
"<text text-anchor=\"start\" x=\"627.32\" y=\"-275.82\" 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=\"black\" d=\"M793.07,-335.08C793.65,-390.6 797.9,-557.65 827.99,-601.02 846.08,-627.1 859.58,-634.02 891.32,-634.02 891.32,-634.02 891.32,-634.02 1197.76,-634.02 1254.92,-634.02 1283.46,-556.56 1294.26,-517.29\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1296.07,-510.42 1297.33,-518 1295.18,-513.81 1294.28,-517.19 1294.28,-517.19 1294.28,-517.19 1295.18,-513.81 1291.24,-516.39 1296.07,-510.42 1296.07,-510.42\"/>\n",
"<text text-anchor=\"start\" x=\"1028.65\" y=\"-637.82\" 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=\"black\" d=\"M794.17,-335.28C796.74,-364.78 804.61,-424.06 827.99,-468.02 834.15,-479.6 858.04,-503.91 874.64,-520.1\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"879.96,-525.25 872.74,-522.64 877.45,-522.81 874.93,-520.38 874.93,-520.38 874.93,-520.38 877.45,-522.81 877.12,-518.12 879.96,-525.25 879.96,-525.25\"/>\n",
"<text text-anchor=\"start\" x=\"827.99\" y=\"-490.82\" 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.32,-321.02 862.15,-303.02 892.32,-285.02 922.48,-303.02 892.32,-321.02\"/>\n",
"<text text-anchor=\"middle\" x=\"892.32\" y=\"-299.32\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M810.01,-315.23C819.94,-314.14 832.69,-312.64 843.99,-311.02 849.67,-310.2 855.72,-309.25 861.54,-308.29\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"868.72,-307.08 862.34,-311.35 865.27,-307.66 861.82,-308.24 861.82,-308.24 861.82,-308.24 865.27,-307.66 861.3,-305.13 868.72,-307.08 868.72,-307.08\"/>\n",
"<text text-anchor=\"start\" x=\"827.99\" y=\"-316.82\" 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.33,-439.02 416.16,-421.02 446.33,-403.02 476.49,-421.02 446.33,-439.02\"/>\n",
"<text text-anchor=\"middle\" x=\"446.33\" y=\"-417.32\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M786.05,-334.18C780.96,-348.59 771.53,-368.47 755.99,-379.02 669.5,-437.68 537.72,-431.72 478.29,-425.26\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"471.08,-424.44 478.39,-422.1 474.55,-424.83 478.03,-425.23 478.03,-425.23 478.03,-425.23 474.55,-424.83 477.67,-428.36 471.08,-424.44 471.08,-424.44\"/>\n",
"<text text-anchor=\"start\" x=\"627.32\" y=\"-426.82\" 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=\"black\" d=\"M911.27,-296.08C924.54,-290.46 942.67,-281.73 956.65,-271.02 963.87,-265.49 970.79,-258.33 976.55,-251.65\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"981.08,-246.21 979.02,-253.6 978.84,-248.9 976.6,-251.58 976.6,-251.58 976.6,-251.58 978.84,-248.9 974.18,-249.57 981.08,-246.21 981.08,-246.21\"/>\n",
"<text text-anchor=\"start\" x=\"940.65\" y=\"-283.82\" 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.35,-295.73C861.42,-291.21 843.29,-287.11 827.99,-292.02 822.06,-293.92 816.28,-297.23 811.18,-300.84\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"805.54,-305.14 809.2,-298.39 808.02,-302.62 810.8,-300.5 811.11,-300.89 811.41,-301.29 808.63,-303.41 813.02,-303.4 805.54,-305.14 805.54,-305.14\"/>\n",
"<text text-anchor=\"start\" x=\"827.99\" y=\"-295.82\" 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=\"black\" d=\"M466.36,-414.7C513.4,-399.67 639.15,-363.02 746.99,-363.02 746.99,-363.02 746.99,-363.02 893.32,-363.02 945.97,-363.02 973.9,-294.49 985.32,-256.56\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"987.39,-249.41 988.47,-257.01 986.42,-252.78 985.45,-256.14 985.45,-256.14 985.45,-256.14 986.42,-252.78 982.42,-255.26 987.39,-249.41 987.39,-249.41\"/>\n",
"<text text-anchor=\"start\" x=\"739.99\" y=\"-366.82\" 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=\"M454.22,-407.69C462.16,-393.62 476.47,-371.77 494.66,-359.02 506.33,-350.84 542.24,-340.84 566.59,-334.7\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"573.43,-333 567.39,-337.75 570.15,-334.33 566.75,-335.18 566.63,-334.69 566.51,-334.21 569.91,-333.36 565.87,-331.63 573.43,-333 573.43,-333\"/>\n",
"<text text-anchor=\"start\" x=\"516.99\" y=\"-362.82\" 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.33\" cy=\"-498.02\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"301.33\" y=\"-494.32\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M319.42,-501.38C346.16,-506.33 399.57,-515.02 445.33,-515.02 445.33,-515.02 445.33,-515.02 748.99,-515.02 789.05,-515.02 834.79,-523.26 863.36,-529.42\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"870.24,-530.93 862.73,-532.51 866.82,-530.18 863.4,-529.43 863.4,-529.43 863.4,-529.43 866.82,-530.18 864.08,-526.35 870.24,-530.93 870.24,-530.93\"/>\n",
"<text text-anchor=\"start\" x=\"627.32\" y=\"-518.82\" 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=\"black\" d=\"M313.61,-511.32C319.9,-517.79 328.27,-525.02 337.33,-529.02 447.09,-577.51 594.03,-574.25 658.29,-569.89\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"665.34,-569.38 658.58,-573.03 661.85,-569.63 658.36,-569.88 658.36,-569.88 658.36,-569.88 661.85,-569.63 658.13,-566.74 665.34,-569.38 665.34,-569.38\"/>\n",
"<text text-anchor=\"start\" x=\"516.99\" y=\"-574.82\" 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=\"black\" d=\"M318.17,-490.88C337.37,-482.08 370.55,-466.4 397.99,-451.02 407.19,-445.86 417.08,-439.7 425.44,-434.3\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"431.48,-430.35 427.34,-436.81 428.55,-432.26 425.62,-434.18 425.62,-434.18 425.62,-434.18 428.55,-432.26 423.9,-431.54 431.48,-430.35 431.48,-430.35\"/>\n",
"<text text-anchor=\"start\" x=\"359.66\" y=\"-484.82\" 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.33,-289.02 416.16,-271.02 446.33,-253.02 476.49,-271.02 446.33,-289.02\"/>\n",
"<text text-anchor=\"middle\" x=\"446.33\" y=\"-267.32\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M304.08,-480.05C308.16,-441.42 319.32,-351.99 337.33,-328.02 357.11,-301.68 392.67,-286.31 417.56,-278.3\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"424.28,-276.24 418.51,-281.31 420.93,-277.27 417.59,-278.3 417.59,-278.3 417.59,-278.3 420.93,-277.27 416.66,-275.28 424.28,-276.24 424.28,-276.24\"/>\n",
"<text text-anchor=\"start\" x=\"359.66\" y=\"-331.82\" 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=\"black\" d=\"M454.69,-257.61C473.07,-226.1 524.3,-150.02 590.32,-150.02 590.32,-150.02 590.32,-150.02 893.32,-150.02 920.78,-150.02 950.53,-138.59 970.03,-129.4\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"976.48,-126.26 971.56,-132.15 973.33,-127.79 970.19,-129.32 970.19,-129.32 970.19,-129.32 973.33,-127.79 968.81,-126.49 976.48,-126.26 976.48,-126.26\"/>\n",
"<text text-anchor=\"start\" x=\"739.99\" y=\"-153.82\" 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.02,-281.39C426.98,-287.15 420.12,-294.8 415.99,-303.02 396.9,-341.03 422.65,-362.36 397.99,-397.02 379.95,-422.38 358.94,-409.62 337.33,-432.02 333.92,-435.55 322.3,-457.99 313.38,-475.74\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"310.23,-482.02 310.55,-474.35 311.35,-478.67 312.92,-475.54 313.36,-475.76 313.81,-475.99 312.24,-479.12 316.18,-477.17 310.23,-482.02 310.23,-482.02\"/>\n",
"<text text-anchor=\"start\" x=\"359.66\" y=\"-435.82\" 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.57,-503.69C210.97,-502.39 250.65,-500.45 276.02,-499.21\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"283.08,-498.86 276.25,-502.35 279.61,-499.53 276.12,-499.7 276.09,-499.2 276.07,-498.71 279.56,-498.53 275.94,-496.06 283.08,-498.86 283.08,-498.86\"/>\n",
"<text text-anchor=\"start\" x=\"227\" y=\"-505.82\" 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.54,-632.49C285.66,-636.03 329.07,-641.02 366.66,-641.02 366.66,-641.02 366.66,-641.02 692.65,-641.02 720.75,-641.02 750.75,-627.9 770.13,-617.5\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"776.27,-614.1 771.67,-620.25 773.45,-616.23 770.39,-617.93 770.15,-617.49 769.91,-617.05 772.97,-615.36 768.62,-614.74 776.27,-614.1 776.27,-614.1\"/>\n",
"<text text-anchor=\"start\" x=\"516.99\" y=\"-644.82\" 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.56,-364.22C413.24,-357.25 456.71,-345.64 494.66,-339.02 518.87,-334.79 546.87,-332.12 566.29,-330.61\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"573.29,-330.09 566.54,-333.75 569.84,-330.85 566.35,-331.11 566.31,-330.61 566.27,-330.11 569.76,-329.85 566.07,-327.47 573.29,-330.09 573.29,-330.09\"/>\n",
"<text text-anchor=\"start\" x=\"438.33\" y=\"-359.82\" 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.42,-679.02C577.2,-679.02 607.62,-679.02 634.32,-679.02 634.32,-679.02 634.32,-679.02 893.32,-679.02 942.93,-679.02 971.91,-617 984.36,-581.76\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"986.64,-575.1 987.36,-582.74 985.98,-578.57 984.85,-581.88 984.38,-581.72 983.9,-581.56 985.03,-578.25 981.4,-580.71 986.64,-575.1 986.64,-575.1\"/>\n",
"<text text-anchor=\"start\" x=\"739.99\" y=\"-682.82\" 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.31,-118.02C1162.45,-118.02 1145.49,-118.02 1130.39,-118.02\"/>\n",
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"1123.15,-118.02 1130.15,-114.87 1126.65,-117.52 1130.15,-117.52 1130.15,-118.02 1130.15,-118.52 1126.65,-118.52 1130.15,-121.17 1123.15,-118.02 1123.15,-118.02\"/>\n",
"<text text-anchor=\"start\" x=\"1141.32\" y=\"-121.82\" 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",
"id": "6e1b2985",
"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,
"id": "3574558b",
"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.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"729pt\" height=\"240pt\"\n",
" viewBox=\"0.00 0.00 729.00 240.47\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(0.6896551724137931 0.6896551724137931) rotate(0) translate(4 345.65)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-345.65 1056,-345.65 1056,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-232.65\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-228.95\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.15,-232.65C2.79,-232.65 17.15,-232.65 30.63,-232.65\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.94,-232.65 30.94,-235.8 34.44,-232.65 30.94,-232.65 30.94,-232.65 30.94,-232.65 34.44,-232.65 30.94,-229.5 37.94,-232.65 37.94,-232.65\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"234\" cy=\"-161.65\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"234\" y=\"-157.95\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M72.93,-226.22C104.26,-213.58 174.01,-185.45 210.21,-170.84\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"216.98,-168.11 211.67,-173.65 213.73,-169.42 210.49,-170.73 210.49,-170.73 210.49,-170.73 213.73,-169.42 209.31,-167.81 216.98,-168.11 216.98,-168.11\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94,-218.15 94,-237.15 146,-237.15 146,-218.15 94,-218.15\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-223.95\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"150\" y=\"-223.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"161,-218.15 161,-237.15 174,-237.15 174,-218.15 161,-218.15\"/>\n",
"<text text-anchor=\"start\" x=\"163\" y=\"-223.95\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"440\" cy=\"-223.65\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"440\" y=\"-219.95\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M73.18,-238.29C79.03,-240.06 85.74,-241.77 92,-242.65 128.97,-247.83 138.67,-242.74 176,-242.65 268.45,-242.43 292.74,-256.43 384,-241.65 394.85,-239.89 406.48,-236.35 416.23,-232.87\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"422.97,-230.37 417.5,-235.76 419.68,-231.59 416.4,-232.8 416.4,-232.8 416.4,-232.8 419.68,-231.59 415.31,-229.85 422.97,-230.37 422.97,-230.37\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"196,-248.15 196,-267.15 244,-267.15 244,-248.15 196,-248.15\"/>\n",
"<text text-anchor=\"start\" x=\"198\" y=\"-253.95\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"248\" y=\"-253.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"259,-248.15 259,-267.15 272,-267.15 272,-248.15 259,-248.15\"/>\n",
"<text text-anchor=\"start\" x=\"261\" y=\"-253.95\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"440\" cy=\"-87.65\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"440\" y=\"-83.95\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M65.5,-217.27C71.9,-206.54 81.37,-192.28 92,-181.65 130.88,-142.77 142.34,-130.48 194,-111.65 270.86,-83.63 369.77,-84.1 414.77,-86.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"422.03,-86.47 414.88,-89.27 418.53,-86.3 415.03,-86.13 415.03,-86.13 415.03,-86.13 418.53,-86.3 415.19,-82.98 422.03,-86.47 422.03,-86.47\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"196,-113.15 196,-132.15 244,-132.15 244,-113.15 196,-113.15\"/>\n",
"<text text-anchor=\"start\" x=\"198\" y=\"-118.95\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"248\" y=\"-118.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"259,-113.15 259,-132.15 272,-132.15 272,-113.15 259,-113.15\"/>\n",
"<text text-anchor=\"start\" x=\"261\" y=\"-118.95\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>4</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"860\" cy=\"-126.65\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"860\" y=\"-122.95\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M70.06,-244.25C97.9,-267.72 166,-318.65 233,-318.65 233,-318.65 233,-318.65 649,-318.65 748.52,-318.65 821.45,-199.75 848.02,-149.09\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"851.31,-142.69 850.9,-150.36 849.71,-145.8 848.1,-148.91 848.1,-148.91 848.1,-148.91 849.71,-145.8 845.3,-147.47 851.31,-142.69 851.31,-142.69\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"404,-320.15 404,-339.15 448,-339.15 448,-320.15 404,-320.15\"/>\n",
"<text text-anchor=\"start\" x=\"406\" y=\"-325.95\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"452\" y=\"-325.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"463,-320.15 463,-339.15 476,-339.15 476,-320.15 463,-320.15\"/>\n",
"<text text-anchor=\"start\" x=\"465\" y=\"-325.95\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M219.65,-172.71C210.66,-184.43 215.45,-197.65 234,-197.65 249.22,-197.65 255.17,-188.75 251.86,-179.09\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"248.35,-172.71 254.49,-177.32 250.04,-175.77 251.73,-178.84 251.73,-178.84 251.73,-178.84 250.04,-175.77 248.97,-180.36 248.35,-172.71 248.35,-172.71\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"188,-199.15 188,-218.15 240,-218.15 240,-199.15 188,-199.15\"/>\n",
"<text text-anchor=\"start\" x=\"190\" y=\"-204.95\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"244\" y=\"-204.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"255,-199.15 255,-218.15 280,-218.15 280,-199.15 255,-199.15\"/>\n",
"<text text-anchor=\"start\" x=\"257\" y=\"-204.95\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M249.97,-170.97C261.17,-177.58 277.08,-186.21 292,-191.65 333.85,-206.9 385.18,-216.03 414.79,-220.43\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"421.83,-221.45 414.45,-223.57 418.36,-220.95 414.9,-220.45 414.9,-220.45 414.9,-220.45 418.36,-220.95 415.35,-217.33 421.83,-221.45 421.83,-221.45\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"294,-216.15 294,-235.15 342,-235.15 342,-216.15 294,-216.15\"/>\n",
"<text text-anchor=\"start\" x=\"296\" y=\"-221.95\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"346\" y=\"-221.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"357,-216.15 357,-235.15 382,-235.15 382,-216.15 357,-216.15\"/>\n",
"<text text-anchor=\"start\" x=\"359\" y=\"-221.95\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M251.39,-155.38C262.74,-151.09 278.23,-145.36 292,-140.65 332.57,-126.79 343.85,-126.69 384,-111.65 394.94,-107.55 406.85,-102.44 416.78,-97.99\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"423.3,-95.03 418.22,-100.79 420.11,-96.48 416.92,-97.92 416.92,-97.92 416.92,-97.92 420.11,-96.48 415.62,-95.05 423.3,-95.03 423.3,-95.03\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"294,-142.15 294,-161.15 342,-161.15 342,-142.15 294,-142.15\"/>\n",
"<text text-anchor=\"start\" x=\"296\" y=\"-147.95\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"346\" y=\"-147.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"357,-142.15 357,-161.15 382,-161.15 382,-142.15 357,-142.15\"/>\n",
"<text text-anchor=\"start\" x=\"359\" y=\"-147.95\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M252.21,-162.41C263.51,-162.87 278.63,-163.42 292,-163.65 332.88,-164.37 343.11,-164.12 384,-163.65 520.03,-162.09 554.28,-165.87 690,-156.65 737.3,-153.44 749.49,-153.86 796,-144.65 809.31,-142.02 823.89,-137.93 835.67,-134.32\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"842.6,-132.14 836.86,-137.24 839.26,-133.19 835.92,-134.24 835.92,-134.24 835.92,-134.24 839.26,-133.19 834.98,-131.23 842.6,-132.14 842.6,-132.14\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"500,-165.15 500,-184.15 544,-184.15 544,-165.15 500,-165.15\"/>\n",
"<text text-anchor=\"start\" x=\"502\" y=\"-170.95\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"548\" y=\"-170.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"559,-165.15 559,-184.15 584,-184.15 584,-165.15 559,-165.15\"/>\n",
"<text text-anchor=\"start\" x=\"561\" y=\"-170.95\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M425.36,-234.71C416.19,-246.43 421.07,-259.65 440,-259.65 455.67,-259.65 461.71,-250.58 458.12,-240.81\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"454.64,-234.71 460.84,-239.23 456.37,-237.75 458.11,-240.79 458.11,-240.79 458.11,-240.79 456.37,-237.75 455.37,-242.35 454.64,-234.71 454.64,-234.71\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"410,-261.15 410,-280.15 430,-280.15 430,-261.15 410,-261.15\"/>\n",
"<text text-anchor=\"start\" x=\"412\" y=\"-266.95\" font-family=\"Lato\" font-size=\"14.00\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"434\" y=\"-266.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"445,-261.15 445,-280.15 470,-280.15 470,-261.15 445,-261.15\"/>\n",
"<text text-anchor=\"start\" x=\"447\" y=\"-266.95\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M457.99,-226.1C511.07,-232.95 677.33,-248.31 796,-191.65 816.53,-181.85 833.99,-162.34 845.29,-147.24\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"849.45,-141.5 847.89,-149.01 847.4,-144.33 845.34,-147.17 845.34,-147.17 845.34,-147.17 847.4,-144.33 842.79,-145.32 849.45,-141.5 849.45,-141.5\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"620,-233.15 620,-252.15 636,-252.15 636,-233.15 620,-233.15\"/>\n",
"<text text-anchor=\"start\" x=\"622\" y=\"-238.95\" font-family=\"Lato\" font-size=\"14.00\">i1</text>\n",
"<text text-anchor=\"start\" x=\"640\" y=\"-238.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"651,-233.15 651,-252.15 676,-252.15 676,-233.15 651,-233.15\"/>\n",
"<text text-anchor=\"start\" x=\"653\" y=\"-238.95\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M425.36,-98.71C416.19,-110.43 421.07,-123.65 440,-123.65 455.67,-123.65 461.71,-114.58 458.12,-104.81\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"454.64,-98.71 460.84,-103.23 456.37,-101.75 458.11,-104.79 458.11,-104.79 458.11,-104.79 456.37,-101.75 455.37,-106.35 454.64,-98.71 454.64,-98.71\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"398,-125.15 398,-144.15 446,-144.15 446,-125.15 398,-125.15\"/>\n",
"<text text-anchor=\"start\" x=\"400\" y=\"-130.95\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"450\" y=\"-130.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"461,-125.15 461,-144.15 482,-144.15 482,-125.15 461,-125.15\"/>\n",
"<text text-anchor=\"start\" x=\"463\" y=\"-130.95\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M456.49,-95.07C467.29,-99.87 482.2,-105.75 496,-108.65 621.24,-134.97 775.89,-130.88 834.73,-128.05\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"841.75,-127.7 834.91,-131.2 838.25,-127.87 834.76,-128.05 834.76,-128.05 834.76,-128.05 838.25,-127.87 834.6,-124.9 841.75,-127.7 841.75,-127.7\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"608,-131.15 608,-150.15 652,-150.15 652,-131.15 608,-131.15\"/>\n",
"<text text-anchor=\"start\" x=\"610\" y=\"-136.95\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"656\" y=\"-136.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"667,-131.15 667,-150.15 688,-150.15 688,-131.15 667,-131.15\"/>\n",
"<text text-anchor=\"start\" x=\"669\" y=\"-136.95\" font-family=\"Lato\" font-size=\"14.00\">o0</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>5</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1020\" cy=\"-49.65\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1020\" y=\"-45.95\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M449.47,-72.01C458.73,-56.53 475.1,-33.47 496,-21.65 539.06,2.7 556.68,-8.44 606,-4.65 774.31,8.28 818.62,-7.81 984,-41.65 987.65,-42.4 991.5,-43.23 995.26,-44.07\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1002.3,-45.67 994.78,-47.19 998.89,-44.89 995.47,-44.12 995.47,-44.12 995.47,-44.12 998.89,-44.89 996.17,-41.05 1002.3,-45.67 1002.3,-45.67\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"710,-7.15 710,-26.15 758,-26.15 758,-7.15 710,-7.15\"/>\n",
"<text text-anchor=\"start\" x=\"712\" y=\"-12.95\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"762\" y=\"-12.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"773,-7.15 773,-26.15 794,-26.15 794,-7.15 773,-7.15\"/>\n",
"<text text-anchor=\"start\" x=\"775\" y=\"-12.95\" font-family=\"Lato\" font-size=\"14.00\">o0</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"648\" cy=\"-31.65\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"648\" y=\"-27.95\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M451.94,-73.59C461.98,-61.89 478,-45.99 496,-38.65 537.89,-21.57 591.84,-24.32 622.61,-27.94\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"629.91,-28.86 622.57,-31.11 626.44,-28.42 622.96,-27.98 622.96,-27.98 622.96,-27.98 626.44,-28.42 623.36,-24.86 629.91,-28.86 629.91,-28.86\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"498,-40.15 498,-59.15 550,-59.15 550,-40.15 498,-40.15\"/>\n",
"<text text-anchor=\"start\" x=\"500\" y=\"-45.95\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"554\" y=\"-45.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"565,-40.15 565,-59.15 586,-59.15 586,-40.15 565,-40.15\"/>\n",
"<text text-anchor=\"start\" x=\"567\" y=\"-45.95\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M845.99,-138.45C838.26,-149.98 842.93,-162.65 860,-162.65 873.87,-162.65 879.56,-154.29 877.05,-144.97\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"874.01,-138.45 879.82,-143.46 875.49,-141.62 876.97,-144.79 876.97,-144.79 876.97,-144.79 875.49,-141.62 874.11,-146.13 874.01,-138.45 874.01,-138.45\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"834,-164.15 834,-183.15 850,-183.15 850,-164.15 834,-164.15\"/>\n",
"<text text-anchor=\"start\" x=\"836\" y=\"-169.95\" font-family=\"Lato\" font-size=\"14.00\">i1</text>\n",
"<text text-anchor=\"start\" x=\"854\" y=\"-169.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"865,-164.15 865,-183.15 886,-183.15 886,-164.15 865,-164.15\"/>\n",
"<text text-anchor=\"start\" x=\"867\" y=\"-169.95\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M878.04,-127.12C903.3,-126.99 951.21,-123.58 984,-101.65 994.64,-94.54 1002.89,-82.99 1008.7,-72.58\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1012,-66.29 1011.53,-73.95 1010.37,-69.39 1008.74,-72.49 1008.74,-72.49 1008.74,-72.49 1010.37,-69.39 1005.96,-71.02 1012,-66.29 1012,-66.29\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"926,-125.15 926,-144.15 946,-144.15 946,-125.15 926,-125.15\"/>\n",
"<text text-anchor=\"start\" x=\"928\" y=\"-130.95\" font-family=\"Lato\" font-size=\"14.00\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"950\" y=\"-130.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"961,-125.15 961,-144.15 982,-144.15 982,-125.15 961,-125.15\"/>\n",
"<text text-anchor=\"start\" x=\"963\" y=\"-130.95\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1002.08,-51.85C982.44,-54.9 949.5,-61.58 924,-74.65 906.93,-83.4 890.31,-97.43 878.43,-108.7\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"873.32,-113.67 876.14,-106.53 875.83,-111.23 878.34,-108.79 878.34,-108.79 878.34,-108.79 875.83,-111.23 880.53,-111.05 873.32,-113.67 873.32,-113.67\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"926,-76.15 926,-95.15 942,-95.15 942,-76.15 926,-76.15\"/>\n",
"<text text-anchor=\"start\" x=\"928\" y=\"-81.95\" font-family=\"Lato\" font-size=\"14.00\">i1</text>\n",
"<text text-anchor=\"start\" x=\"946\" y=\"-81.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"957,-76.15 957,-95.15 982,-95.15 982,-76.15 957,-76.15\"/>\n",
"<text text-anchor=\"start\" x=\"959\" y=\"-81.95\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M1009.09,-64.07C1005.28,-74.82 1008.91,-85.65 1020,-85.65 1028.66,-85.65 1032.78,-79.04 1032.34,-71.02\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1030.91,-64.07 1035.41,-70.29 1031.62,-67.5 1032.32,-70.92 1032.32,-70.92 1032.32,-70.92 1031.62,-67.5 1029.24,-71.56 1030.91,-64.07 1030.91,-64.07\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"990,-87.15 990,-106.15 1010,-106.15 1010,-87.15 990,-87.15\"/>\n",
"<text text-anchor=\"start\" x=\"992\" y=\"-92.95\" font-family=\"Lato\" font-size=\"14.00\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"1014\" y=\"-92.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"1025,-87.15 1025,-106.15 1050,-106.15 1050,-87.15 1025,-87.15\"/>\n",
"<text text-anchor=\"start\" x=\"1027\" y=\"-92.95\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M632.01,-40.84C620.4,-47.57 603.69,-56.4 588,-61.65 546.08,-75.67 494.77,-82.55 465.19,-85.58\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"458.16,-86.27 464.82,-82.45 461.64,-85.93 465.12,-85.59 465.12,-85.59 465.12,-85.59 461.64,-85.93 465.43,-88.72 458.16,-86.27 458.16,-86.27\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"498,-83.15 498,-102.15 546,-102.15 546,-83.15 498,-83.15\"/>\n",
"<text text-anchor=\"start\" x=\"500\" y=\"-88.95\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"550\" y=\"-88.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"561,-83.15 561,-102.15 586,-102.15 586,-83.15 561,-83.15\"/>\n",
"<text text-anchor=\"start\" x=\"563\" y=\"-88.95\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M665.23,-37.12C692.7,-46.59 749.88,-67.18 796,-89.65 810.66,-96.8 826.49,-106.1 838.61,-113.59\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"844.59,-117.32 836.98,-116.28 841.62,-115.46 838.65,-113.61 838.65,-113.61 838.65,-113.61 841.62,-115.46 840.32,-110.94 844.59,-117.32 844.59,-117.32\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"710,-91.15 710,-110.15 754,-110.15 754,-91.15 710,-91.15\"/>\n",
"<text text-anchor=\"start\" x=\"712\" y=\"-96.95\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"758\" y=\"-96.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"769,-91.15 769,-110.15 794,-110.15 794,-91.15 769,-91.15\"/>\n",
"<text text-anchor=\"start\" x=\"771\" y=\"-96.95\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M666.35,-32.49C726.31,-35.41 924.94,-45.07 994.6,-48.46\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1001.69,-48.81 994.54,-51.61 998.19,-48.64 994.7,-48.47 994.7,-48.47 994.7,-48.47 998.19,-48.64 994.85,-45.32 1001.69,-48.81 1001.69,-48.81\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"816,-46.15 816,-65.15 864,-65.15 864,-46.15 816,-46.15\"/>\n",
"<text text-anchor=\"start\" x=\"818\" y=\"-51.95\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"868\" y=\"-51.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"879,-46.15 879,-65.15 904,-65.15 904,-46.15 879,-46.15\"/>\n",
"<text text-anchor=\"start\" x=\"881\" y=\"-51.95\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M633.38,-42.34C623.62,-54.15 628.5,-67.65 648,-67.65 664.15,-67.65 670.27,-58.39 666.36,-48.5\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"662.62,-42.34 668.94,-46.69 664.44,-45.33 666.25,-48.33 666.25,-48.33 666.25,-48.33 664.44,-45.33 663.56,-49.96 662.62,-42.34 662.62,-42.34\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"602,-69.15 602,-88.15 654,-88.15 654,-69.15 602,-69.15\"/>\n",
"<text text-anchor=\"start\" x=\"604\" y=\"-74.95\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"658\" y=\"-74.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"669,-69.15 669,-88.15 694,-88.15 694,-69.15 669,-69.15\"/>\n",
"<text text-anchor=\"start\" x=\"671\" y=\"-74.95\" font-family=\"Lato\" font-size=\"14.00\">!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.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"472pt\" height=\"237pt\"\n",
" viewBox=\"0.00 0.00 472.00 236.78\" 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.78)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-232.78 468,-232.78 468,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-57.78\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-54.08\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.15,-57.78C2.79,-57.78 17.15,-57.78 30.63,-57.78\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.94,-57.78 30.94,-60.93 34.44,-57.78 30.94,-57.78 30.94,-57.78 30.94,-57.78 34.44,-57.78 30.94,-54.63 37.94,-57.78 37.94,-57.78\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"234\" cy=\"-120.78\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"234\" y=\"-117.08\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M66.09,-73.08C72.25,-82.04 81.22,-92.76 92,-98.78 128.89,-119.39 179.2,-122.3 208.69,-121.95\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"215.71,-121.8 208.78,-125.1 212.21,-121.88 208.71,-121.95 208.71,-121.95 208.71,-121.95 212.21,-121.88 208.65,-118.8 215.71,-121.8 215.71,-121.8\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94,-121.28 94,-140.28 146,-140.28 146,-121.28 94,-121.28\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-127.08\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"150\" y=\"-127.08\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"161,-121.28 161,-140.28 174,-140.28 174,-121.28 161,-121.28\"/>\n",
"<text text-anchor=\"start\" x=\"163\" y=\"-127.08\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M74.37,-56.73C98.3,-55.95 142.28,-56.98 176,-71.78 191.81,-78.72 206.51,-91.58 217.02,-102.39\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"221.83,-107.49 214.74,-104.55 219.43,-104.94 217.03,-102.39 217.03,-102.39 217.03,-102.39 219.43,-104.94 219.32,-100.23 221.83,-107.49 221.83,-107.49\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"96,-73.28 96,-92.28 144,-92.28 144,-73.28 96,-73.28\"/>\n",
"<text text-anchor=\"start\" x=\"98\" y=\"-79.08\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"148\" y=\"-79.08\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"159,-73.28 159,-92.28 172,-92.28 172,-73.28 159,-73.28\"/>\n",
"<text text-anchor=\"start\" x=\"161\" y=\"-79.08\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"420\" cy=\"-97.78\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"420\" y=\"-94.08\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M73.61,-53.51C123.38,-41.62 274.55,-12.09 384,-60.78 392.21,-64.43 399.41,-71.01 405.11,-77.62\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"409.54,-83.11 402.7,-79.64 407.35,-80.38 405.15,-77.66 405.15,-77.66 405.15,-77.66 407.35,-80.38 407.6,-75.68 409.54,-83.11 409.54,-83.11\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"196,-36.28 196,-55.28 244,-55.28 244,-36.28 196,-36.28\"/>\n",
"<text text-anchor=\"start\" x=\"198\" y=\"-42.08\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"248\" y=\"-42.08\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"259,-36.28 259,-55.28 272,-55.28 272,-36.28 259,-36.28\"/>\n",
"<text text-anchor=\"start\" x=\"261\" y=\"-42.08\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M70.17,-46.08C76.42,-41.05 84.21,-35.49 92,-31.78 165.78,3.34 192.88,4.03 274,-5.78 323.98,-11.82 344.19,-1.96 384,-32.78 397.33,-43.1 406.2,-59.96 411.67,-73.93\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"414.09,-80.51 408.72,-75.03 412.88,-77.23 411.68,-73.94 411.68,-73.94 411.68,-73.94 412.88,-77.23 414.63,-72.85 414.09,-80.51 414.09,-80.51\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"198,-7.28 198,-26.28 242,-26.28 242,-7.28 198,-7.28\"/>\n",
"<text text-anchor=\"start\" x=\"200\" y=\"-13.08\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"246\" y=\"-13.08\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"257,-7.28 257,-26.28 270,-26.28 270,-7.28 257,-7.28\"/>\n",
"<text text-anchor=\"start\" x=\"259\" y=\"-13.08\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M225.37,-136.7C223.11,-146.93 225.99,-156.78 234,-156.78 240.13,-156.78 243.25,-151.01 243.37,-143.71\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"242.63,-136.7 246.5,-143.33 243,-140.18 243.37,-143.66 243.37,-143.66 243.37,-143.66 243,-140.18 240.23,-143.99 242.63,-136.7 242.63,-136.7\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"190,-158.28 190,-177.28 238,-177.28 238,-158.28 190,-158.28\"/>\n",
"<text text-anchor=\"start\" x=\"192\" y=\"-164.08\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"242\" y=\"-164.08\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"253,-158.28 253,-177.28 278,-177.28 278,-158.28 253,-158.28\"/>\n",
"<text text-anchor=\"start\" x=\"255\" y=\"-164.08\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M221.69,-134.35C210.07,-154 214.18,-179.78 234,-179.78 251.66,-179.78 256.84,-159.33 249.56,-140.98\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"246.31,-134.35 252.22,-139.25 247.85,-137.49 249.39,-140.64 249.39,-140.64 249.39,-140.64 247.85,-137.49 246.56,-142.02 246.31,-134.35 246.31,-134.35\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"188,-181.28 188,-200.28 240,-200.28 240,-181.28 188,-181.28\"/>\n",
"<text text-anchor=\"start\" x=\"190\" y=\"-187.08\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"244\" y=\"-187.08\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"255,-181.28 255,-200.28 280,-200.28 280,-181.28 255,-181.28\"/>\n",
"<text text-anchor=\"start\" x=\"257\" y=\"-187.08\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M242.63,-136.82C251.72,-153.81 268.64,-179.68 292,-190.78 328.93,-208.33 350.38,-214.05 384,-190.78 405.92,-175.61 414.13,-144.87 417.19,-122.88\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"418.05,-115.79 420.34,-123.12 417.63,-119.27 417.21,-122.74 417.21,-122.74 417.21,-122.74 417.63,-119.27 414.08,-122.37 418.05,-115.79 418.05,-115.79\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"296,-207.28 296,-226.28 340,-226.28 340,-207.28 296,-207.28\"/>\n",
"<text text-anchor=\"start\" x=\"298\" y=\"-213.08\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"344\" y=\"-213.08\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"355,-207.28 355,-226.28 380,-226.28 380,-207.28 355,-207.28\"/>\n",
"<text text-anchor=\"start\" x=\"357\" y=\"-213.08\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M250.29,-128.98C278.35,-142.82 339.28,-167.24 384,-144.78 394.34,-139.59 402.4,-129.73 408.17,-120.38\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"411.79,-114.05 411.05,-121.69 410.05,-117.09 408.32,-120.12 408.32,-120.12 408.32,-120.12 410.05,-117.09 405.58,-118.56 411.79,-114.05 411.79,-114.05\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"294,-155.28 294,-174.28 342,-174.28 342,-155.28 294,-155.28\"/>\n",
"<text text-anchor=\"start\" x=\"296\" y=\"-161.08\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"346\" y=\"-161.08\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"357,-155.28 357,-174.28 382,-174.28 382,-155.28 357,-155.28\"/>\n",
"<text text-anchor=\"start\" x=\"359\" y=\"-161.08\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M402.06,-99.9C369.23,-104 296.86,-113.05 259.06,-117.77\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"251.98,-118.66 258.54,-114.66 255.45,-118.22 258.93,-117.79 258.93,-117.79 258.93,-117.79 255.45,-118.22 259.32,-120.92 251.98,-118.66 251.98,-118.66\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"296,-114.28 296,-133.28 344,-133.28 344,-114.28 296,-114.28\"/>\n",
"<text text-anchor=\"start\" x=\"298\" y=\"-120.08\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"348\" y=\"-120.08\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"359,-114.28 359,-133.28 380,-133.28 380,-114.28 359,-114.28\"/>\n",
"<text text-anchor=\"start\" x=\"361\" y=\"-120.08\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M405.64,-86.35C399.48,-81.81 391.8,-77.11 384,-74.78 344.83,-63.06 330.55,-61.16 292,-74.78 276.48,-80.26 262.08,-91.96 251.64,-102.19\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"246.55,-107.36 249.22,-100.16 249.01,-104.86 251.46,-102.37 251.46,-102.37 251.46,-102.37 249.01,-104.86 253.71,-104.58 246.55,-107.36 246.55,-107.36\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"294,-76.28 294,-95.28 346,-95.28 346,-76.28 294,-76.28\"/>\n",
"<text text-anchor=\"start\" x=\"296\" y=\"-82.08\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"350\" y=\"-82.08\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"361,-76.28 361,-95.28 382,-95.28 382,-76.28 361,-76.28\"/>\n",
"<text text-anchor=\"start\" x=\"363\" y=\"-82.08\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M412.79,-114.44C411.19,-124.41 413.59,-133.78 420,-133.78 424.8,-133.78 427.36,-128.51 427.66,-121.67\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"427.21,-114.44 430.79,-121.23 427.42,-117.94 427.64,-121.43 427.64,-121.43 427.64,-121.43 427.42,-117.94 424.5,-121.63 427.21,-114.44 427.21,-114.44\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"380,-135.28 380,-154.28 424,-154.28 424,-135.28 380,-135.28\"/>\n",
"<text text-anchor=\"start\" x=\"382\" y=\"-141.08\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"428\" y=\"-141.08\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"439,-135.28 439,-154.28 460,-154.28 460,-135.28 439,-135.28\"/>\n",
"<text text-anchor=\"start\" x=\"441\" y=\"-141.08\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M409.36,-112.52C400.52,-132.01 404.06,-156.78 420,-156.78 434.07,-156.78 438.48,-137.47 433.24,-119.54\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"430.64,-112.52 436.03,-117.99 431.86,-115.8 433.07,-119.08 433.07,-119.08 433.07,-119.08 431.86,-115.8 430.12,-120.18 430.64,-112.52 430.64,-112.52\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"378,-158.28 378,-177.28 426,-177.28 426,-158.28 378,-158.28\"/>\n",
"<text text-anchor=\"start\" x=\"380\" y=\"-164.08\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"430\" y=\"-164.08\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"441,-158.28 441,-177.28 462,-177.28 462,-158.28 441,-158.28\"/>\n",
"<text text-anchor=\"start\" x=\"443\" y=\"-164.08\" font-family=\"Lato\" font-size=\"14.00\">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.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"276pt\" height=\"181pt\"\n",
" viewBox=\"0.00 0.00 276.00 181.08\" 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.08)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-177.08 272,-177.08 272,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 1 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-73.08\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-69.38\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- I&#45;&gt;1 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.15,-73.08C2.79,-73.08 17.15,-73.08 30.63,-73.08\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.94,-73.08 30.94,-76.23 34.44,-73.08 30.94,-73.08 30.94,-73.08 30.94,-73.08 34.44,-73.08 30.94,-69.93 37.94,-73.08 37.94,-73.08\"/>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M52.76,-90.86C52.21,-100.39 53.29,-109.08 56,-109.08 57.99,-109.08 59.1,-104.39 59.33,-98.13\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"59.24,-90.86 62.48,-97.82 59.28,-94.36 59.33,-97.86 59.33,-97.86 59.33,-97.86 59.28,-94.36 56.18,-97.9 59.24,-90.86 59.24,-90.86\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"16,-110.58 16,-129.58 60,-129.58 60,-110.58 16,-110.58\"/>\n",
"<text text-anchor=\"start\" x=\"18\" y=\"-116.38\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"64\" y=\"-116.38\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"75,-110.58 75,-129.58 96,-129.58 96,-110.58 75,-110.58\"/>\n",
"<text text-anchor=\"start\" x=\"77\" y=\"-116.38\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M50.83,-90.49C47.6,-109.49 49.32,-132.08 56,-132.08 61.84,-132.08 63.89,-114.78 62.15,-97.73\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"61.17,-90.49 65.23,-97 61.64,-93.96 62.11,-97.42 62.11,-97.42 62.11,-97.42 61.64,-93.96 58.98,-97.85 61.17,-90.49 61.17,-90.49\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"14,-133.58 14,-152.58 62,-152.58 62,-133.58 14,-133.58\"/>\n",
"<text text-anchor=\"start\" x=\"16\" y=\"-139.38\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"66\" y=\"-139.38\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"77,-133.58 77,-152.58 98,-152.58 98,-133.58 77,-133.58\"/>\n",
"<text text-anchor=\"start\" x=\"79\" y=\"-139.38\" font-family=\"Lato\" font-size=\"14.00\">o0</text>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"220\" cy=\"-73.08\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"220\" y=\"-69.38\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M64.21,-89.34C70,-100.23 79.27,-113.68 92,-120.08 128.54,-138.42 147.46,-138.42 184,-120.08 194.34,-114.88 202.4,-105.03 208.17,-95.67\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"211.79,-89.34 211.05,-96.98 210.05,-92.38 208.32,-95.42 208.32,-95.42 208.32,-95.42 210.05,-92.38 205.58,-93.85 211.79,-89.34 211.79,-89.34\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"96,-134.58 96,-153.58 144,-153.58 144,-134.58 96,-134.58\"/>\n",
"<text text-anchor=\"start\" x=\"98\" y=\"-140.38\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"148\" y=\"-140.38\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"159,-134.58 159,-153.58 180,-153.58 180,-134.58 159,-134.58\"/>\n",
"<text text-anchor=\"start\" x=\"161\" y=\"-140.38\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M74.09,-73.66C79.78,-73.83 86.16,-73.99 92,-74.08 132.88,-74.66 143.12,-74.66 184,-74.08 187.46,-74.03 191.12,-73.95 194.71,-73.86\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"201.91,-73.66 195,-77 198.41,-73.76 194.91,-73.85 194.91,-73.85 194.91,-73.85 198.41,-73.76 194.83,-70.71 201.91,-73.66 201.91,-73.66\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94,-75.58 94,-94.58 146,-94.58 146,-75.58 94,-75.58\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-81.38\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"150\" y=\"-81.38\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"161,-75.58 161,-94.58 182,-94.58 182,-75.58 161,-75.58\"/>\n",
"<text text-anchor=\"start\" x=\"163\" y=\"-81.38\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M205.57,-62.14C199.39,-57.79 191.72,-53.3 184,-51.08 144.71,-39.75 131.29,-39.75 92,-51.08 86.57,-52.64 81.17,-55.32 76.29,-58.29\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"70.43,-62.14 74.56,-55.66 73.36,-60.22 76.28,-58.3 76.28,-58.3 76.28,-58.3 73.36,-60.22 78.01,-60.93 70.43,-62.14 70.43,-62.14\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"96,-52.58 96,-71.58 140,-71.58 140,-52.58 96,-52.58\"/>\n",
"<text text-anchor=\"start\" x=\"98\" y=\"-58.38\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"144\" y=\"-58.38\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"155,-52.58 155,-71.58 180,-71.58 180,-52.58 155,-52.58\"/>\n",
"<text text-anchor=\"start\" x=\"157\" y=\"-58.38\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M213.87,-55.94C208.74,-42.17 199.36,-23.75 184,-15.08 148.39,5.03 127.61,5.03 92,-15.08 79.04,-22.39 70.34,-36.65 64.85,-49.2\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"62.13,-55.94 61.83,-48.27 63.44,-52.69 64.75,-49.45 64.75,-49.45 64.75,-49.45 63.44,-52.69 67.67,-50.63 62.13,-55.94 62.13,-55.94\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94,-16.58 94,-35.58 142,-35.58 142,-16.58 94,-16.58\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-22.38\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"146\" y=\"-22.38\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"157,-16.58 157,-35.58 182,-35.58 182,-16.58 157,-16.58\"/>\n",
"<text text-anchor=\"start\" x=\"159\" y=\"-22.38\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M212.79,-89.74C211.19,-99.7 213.59,-109.08 220,-109.08 224.8,-109.08 227.36,-103.8 227.66,-96.96\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"227.21,-89.74 230.79,-96.53 227.42,-93.23 227.64,-96.73 227.64,-96.73 227.64,-96.73 227.42,-93.23 224.5,-96.92 227.21,-89.74 227.21,-89.74\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"176,-110.58 176,-129.58 224,-129.58 224,-110.58 176,-110.58\"/>\n",
"<text text-anchor=\"start\" x=\"178\" y=\"-116.38\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"228\" y=\"-116.38\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"239,-110.58 239,-129.58 264,-129.58 264,-110.58 239,-110.58\"/>\n",
"<text text-anchor=\"start\" x=\"241\" y=\"-116.38\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M209.36,-87.81C200.52,-107.3 204.06,-132.08 220,-132.08 234.07,-132.08 238.48,-112.77 233.24,-94.83\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"230.64,-87.81 236.03,-93.29 231.86,-91.1 233.07,-94.38 233.07,-94.38 233.07,-94.38 231.86,-91.1 230.12,-95.47 230.64,-87.81 230.64,-87.81\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"174,-133.58 174,-152.58 226,-152.58 226,-133.58 174,-133.58\"/>\n",
"<text text-anchor=\"start\" x=\"176\" y=\"-139.38\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"230\" y=\"-139.38\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"241,-133.58 241,-152.58 266,-152.58 266,-133.58 241,-133.58\"/>\n",
"<text text-anchor=\"start\" x=\"243\" y=\"-139.38\" font-family=\"Lato\" font-size=\"14.00\">!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.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"228pt\" height=\"99pt\"\n",
" viewBox=\"0.00 0.00 228.00 99.28\" 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.28)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-95.28 224,-95.28 224,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-32.28\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-28.58\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.15,-32.28C2.79,-32.28 17.15,-32.28 30.63,-32.28\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.94,-32.28 30.94,-35.43 34.44,-32.28 30.94,-32.28 30.94,-32.28 30.94,-32.28 34.44,-32.28 30.94,-29.13 37.94,-32.28 37.94,-32.28\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M49.62,-49.32C48.32,-59.14 50.45,-68.28 56,-68.28 60.17,-68.28 62.4,-63.14 62.71,-56.42\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"62.38,-49.32 65.85,-56.16 62.54,-52.81 62.71,-56.31 62.71,-56.31 62.71,-56.31 62.54,-52.81 59.56,-56.46 62.38,-49.32 62.38,-49.32\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"30,-69.78 30,-88.78 46,-88.78 46,-69.78 30,-69.78\"/>\n",
"<text text-anchor=\"start\" x=\"32\" y=\"-75.58\" font-family=\"Lato\" font-size=\"14.00\">i1</text>\n",
"<text text-anchor=\"start\" x=\"50\" y=\"-75.58\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"61,-69.78 61,-88.78 82,-88.78 82,-69.78 61,-69.78\"/>\n",
"<text text-anchor=\"start\" x=\"63\" y=\"-75.58\" font-family=\"Lato\" font-size=\"14.00\">o0</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"188\" cy=\"-32.28\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"188\" y=\"-28.58\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M74.09,-32.87C79.78,-33.04 86.16,-33.2 92,-33.28 118.66,-33.66 125.34,-33.66 152,-33.28 155.46,-33.23 159.12,-33.15 162.71,-33.06\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"169.91,-32.87 163,-36.21 166.41,-32.96 162.91,-33.06 162.91,-33.06 162.91,-33.06 166.41,-32.96 162.83,-29.91 169.91,-32.87 169.91,-32.87\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94,-34.78 94,-53.78 114,-53.78 114,-34.78 94,-34.78\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-40.58\" font-family=\"Lato\" font-size=\"14.00\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"118\" y=\"-40.58\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"129,-34.78 129,-53.78 150,-53.78 150,-34.78 129,-34.78\"/>\n",
"<text text-anchor=\"start\" x=\"131\" y=\"-40.58\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M174.53,-19.93C168.3,-14.64 160.34,-9.04 152,-6.28 126.68,2.09 117.32,2.09 92,-6.28 86.01,-8.26 80.21,-11.71 75.11,-15.46\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"69.47,-19.93 73,-13.11 72.22,-17.76 74.96,-15.58 74.96,-15.58 74.96,-15.58 72.22,-17.76 76.92,-18.05 69.47,-19.93 69.47,-19.93\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94,-7.78 94,-26.78 110,-26.78 110,-7.78 94,-7.78\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-13.58\" font-family=\"Lato\" font-size=\"14.00\">i1</text>\n",
"<text text-anchor=\"start\" x=\"114\" y=\"-13.58\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"125,-7.78 125,-26.78 150,-26.78 150,-7.78 125,-7.78\"/>\n",
"<text text-anchor=\"start\" x=\"127\" y=\"-13.58\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M177.09,-46.7C173.28,-57.45 176.91,-68.28 188,-68.28 196.66,-68.28 200.78,-61.67 200.34,-53.65\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"198.91,-46.7 203.41,-52.92 199.62,-50.13 200.32,-53.55 200.32,-53.55 200.32,-53.55 199.62,-50.13 197.24,-54.19 198.91,-46.7 198.91,-46.7\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"158,-69.78 158,-88.78 178,-88.78 178,-69.78 158,-69.78\"/>\n",
"<text text-anchor=\"start\" x=\"160\" y=\"-75.58\" font-family=\"Lato\" font-size=\"14.00\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"182\" y=\"-75.58\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"193,-69.78 193,-88.78 218,-88.78 218,-69.78 193,-69.78\"/>\n",
"<text text-anchor=\"start\" x=\"195\" y=\"-75.58\" font-family=\"Lato\" font-size=\"14.00\">!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.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"224pt\" height=\"99pt\"\n",
" viewBox=\"0.00 0.00 224.00 99.28\" 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.28)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-95.28 220,-95.28 220,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-32.28\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-28.58\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.15,-32.28C2.79,-32.28 17.15,-32.28 30.63,-32.28\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.94,-32.28 30.94,-35.43 34.44,-32.28 30.94,-32.28 30.94,-32.28 30.94,-32.28 34.44,-32.28 30.94,-29.13 37.94,-32.28 37.94,-32.28\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M49.62,-49.32C48.32,-59.14 50.45,-68.28 56,-68.28 60.17,-68.28 62.4,-63.14 62.71,-56.42\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"62.38,-49.32 65.85,-56.16 62.54,-52.81 62.71,-56.31 62.71,-56.31 62.71,-56.31 62.54,-52.81 59.56,-56.46 62.38,-49.32 62.38,-49.32\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"26,-69.78 26,-88.78 46,-88.78 46,-69.78 26,-69.78\"/>\n",
"<text text-anchor=\"start\" x=\"28\" y=\"-75.58\" font-family=\"Lato\" font-size=\"14.00\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"50\" y=\"-75.58\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"61,-69.78 61,-88.78 86,-88.78 86,-69.78 61,-69.78\"/>\n",
"<text text-anchor=\"start\" x=\"63\" y=\"-75.58\" font-family=\"Lato\" font-size=\"14.00\">!o0</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"188\" cy=\"-32.28\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"188\" y=\"-28.58\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M74.09,-32.87C79.78,-33.04 86.16,-33.2 92,-33.28 118.66,-33.66 125.34,-33.66 152,-33.28 155.46,-33.23 159.12,-33.15 162.71,-33.06\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"169.91,-32.87 163,-36.21 166.41,-32.96 162.91,-33.06 162.91,-33.06 162.91,-33.06 166.41,-32.96 162.83,-29.91 169.91,-32.87 169.91,-32.87\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94,-34.78 94,-53.78 110,-53.78 110,-34.78 94,-34.78\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-40.58\" font-family=\"Lato\" font-size=\"14.00\">i1</text>\n",
"<text text-anchor=\"start\" x=\"114\" y=\"-40.58\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"125,-34.78 125,-53.78 150,-53.78 150,-34.78 125,-34.78\"/>\n",
"<text text-anchor=\"start\" x=\"127\" y=\"-40.58\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M174.53,-19.93C168.3,-14.64 160.34,-9.04 152,-6.28 126.68,2.09 117.32,2.09 92,-6.28 86.01,-8.26 80.21,-11.71 75.11,-15.46\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"69.47,-19.93 73,-13.11 72.22,-17.76 74.96,-15.58 74.96,-15.58 74.96,-15.58 72.22,-17.76 76.92,-18.05 69.47,-19.93 69.47,-19.93\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94,-7.78 94,-26.78 114,-26.78 114,-7.78 94,-7.78\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-13.58\" font-family=\"Lato\" font-size=\"14.00\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"118\" y=\"-13.58\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"129,-7.78 129,-26.78 150,-26.78 150,-7.78 129,-7.78\"/>\n",
"<text text-anchor=\"start\" x=\"131\" y=\"-13.58\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M177.09,-46.7C173.28,-57.45 176.91,-68.28 188,-68.28 196.66,-68.28 200.78,-61.67 200.34,-53.65\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"198.91,-46.7 203.41,-52.92 199.62,-50.13 200.32,-53.55 200.32,-53.55 200.32,-53.55 199.62,-50.13 197.24,-54.19 198.91,-46.7 198.91,-46.7\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"162,-69.78 162,-88.78 178,-88.78 178,-69.78 162,-69.78\"/>\n",
"<text text-anchor=\"start\" x=\"164\" y=\"-75.58\" font-family=\"Lato\" font-size=\"14.00\">i1</text>\n",
"<text text-anchor=\"start\" x=\"182\" y=\"-75.58\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"193,-69.78 193,-88.78 214,-88.78 214,-69.78 193,-69.78\"/>\n",
"<text text-anchor=\"start\" x=\"195\" y=\"-75.58\" font-family=\"Lato\" font-size=\"14.00\">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.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"228pt\" height=\"99pt\"\n",
" viewBox=\"0.00 0.00 228.00 99.28\" 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.28)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-95.28 224,-95.28 224,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-32.28\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-28.58\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.15,-32.28C2.79,-32.28 17.15,-32.28 30.63,-32.28\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.94,-32.28 30.94,-35.43 34.44,-32.28 30.94,-32.28 30.94,-32.28 30.94,-32.28 34.44,-32.28 30.94,-29.13 37.94,-32.28 37.94,-32.28\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M49.62,-49.32C48.32,-59.14 50.45,-68.28 56,-68.28 60.17,-68.28 62.4,-63.14 62.71,-56.42\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"62.38,-49.32 65.85,-56.16 62.54,-52.81 62.71,-56.31 62.71,-56.31 62.71,-56.31 62.54,-52.81 59.56,-56.46 62.38,-49.32 62.38,-49.32\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"30,-69.78 30,-88.78 46,-88.78 46,-69.78 30,-69.78\"/>\n",
"<text text-anchor=\"start\" x=\"32\" y=\"-75.58\" font-family=\"Lato\" font-size=\"14.00\">i1</text>\n",
"<text text-anchor=\"start\" x=\"50\" y=\"-75.58\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"61,-69.78 61,-88.78 82,-88.78 82,-69.78 61,-69.78\"/>\n",
"<text text-anchor=\"start\" x=\"63\" y=\"-75.58\" font-family=\"Lato\" font-size=\"14.00\">o0</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"188\" cy=\"-32.28\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"188\" y=\"-28.58\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M74.09,-32.87C79.78,-33.04 86.16,-33.2 92,-33.28 118.66,-33.66 125.34,-33.66 152,-33.28 155.46,-33.23 159.12,-33.15 162.71,-33.06\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"169.91,-32.87 163,-36.21 166.41,-32.96 162.91,-33.06 162.91,-33.06 162.91,-33.06 166.41,-32.96 162.83,-29.91 169.91,-32.87 169.91,-32.87\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94,-34.78 94,-53.78 114,-53.78 114,-34.78 94,-34.78\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-40.58\" font-family=\"Lato\" font-size=\"14.00\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"118\" y=\"-40.58\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"129,-34.78 129,-53.78 150,-53.78 150,-34.78 129,-34.78\"/>\n",
"<text text-anchor=\"start\" x=\"131\" y=\"-40.58\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M174.53,-19.93C168.3,-14.64 160.34,-9.04 152,-6.28 126.68,2.09 117.32,2.09 92,-6.28 86.01,-8.26 80.21,-11.71 75.11,-15.46\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"69.47,-19.93 73,-13.11 72.22,-17.76 74.96,-15.58 74.96,-15.58 74.96,-15.58 72.22,-17.76 76.92,-18.05 69.47,-19.93 69.47,-19.93\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94,-7.78 94,-26.78 110,-26.78 110,-7.78 94,-7.78\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-13.58\" font-family=\"Lato\" font-size=\"14.00\">i1</text>\n",
"<text text-anchor=\"start\" x=\"114\" y=\"-13.58\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"125,-7.78 125,-26.78 150,-26.78 150,-7.78 125,-7.78\"/>\n",
"<text text-anchor=\"start\" x=\"127\" y=\"-13.58\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M177.09,-46.7C173.28,-57.45 176.91,-68.28 188,-68.28 196.66,-68.28 200.78,-61.67 200.34,-53.65\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"198.91,-46.7 203.41,-52.92 199.62,-50.13 200.32,-53.55 200.32,-53.55 200.32,-53.55 199.62,-50.13 197.24,-54.19 198.91,-46.7 198.91,-46.7\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"158,-69.78 158,-88.78 178,-88.78 178,-69.78 158,-69.78\"/>\n",
"<text text-anchor=\"start\" x=\"160\" y=\"-75.58\" font-family=\"Lato\" font-size=\"14.00\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"182\" y=\"-75.58\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"193,-69.78 193,-88.78 218,-88.78 218,-69.78 193,-69.78\"/>\n",
"<text text-anchor=\"start\" x=\"195\" y=\"-75.58\" font-family=\"Lato\" font-size=\"14.00\">!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",
"id": "95018bed",
"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,
"id": "eadda15f",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"729pt\" height=\"240pt\"\n",
" viewBox=\"0.00 0.00 729.00 240.19\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(0.5235602094240838 0.5235602094240838) rotate(0) translate(4 455)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-455 1389.13,-455 1389.13,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"689.57\" y=\"-435.8\" font-family=\"Lato\" font-size=\"14.00\">t</text>\n",
"<text text-anchor=\"start\" x=\"681.57\" y=\"-420.8\" font-family=\"Lato\" font-size=\"14.00\">[all]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-234\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-230.3\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.15,-234C2.79,-234 17.15,-234 30.63,-234\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.94,-234 30.94,-237.15 34.44,-234 30.94,-234 30.94,-234 30.94,-234 34.44,-234 30.94,-230.85 37.94,-234 37.94,-234\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"black\" points=\"180.98,-295 158.02,-277 180.98,-259 203.94,-277 180.98,-295\"/>\n",
"<text text-anchor=\"middle\" x=\"180.98\" y=\"-273.3\" font-family=\"Lato\" font-size=\"14.00\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M73.33,-239.71C95.1,-247.32 133.68,-260.81 157.99,-269.31\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"164.74,-271.67 157.09,-272.34 161.44,-270.52 158.13,-269.36 158.13,-269.36 158.13,-269.36 161.44,-270.52 159.17,-266.39 164.74,-271.67 164.74,-271.67\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-264.8\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"black\" points=\"244.94,-361 221.98,-343 244.94,-325 267.89,-343 244.94,-361\"/>\n",
"<text text-anchor=\"middle\" x=\"244.94\" y=\"-339.3\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M65.74,-249.35C71.99,-259.21 81.19,-271.67 92,-280 131.57,-310.5 188.03,-328.74 219.8,-337.23\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"226.95,-339.08 219.38,-340.37 223.56,-338.2 220.17,-337.32 220.17,-337.32 220.17,-337.32 223.56,-338.2 220.96,-334.28 226.95,-339.08 226.95,-339.08\"/>\n",
"<text text-anchor=\"start\" x=\"94\" y=\"-310.8\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>6</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"black\" points=\"244.94,-207 221.98,-189 244.94,-171 267.89,-189 244.94,-207\"/>\n",
"<text text-anchor=\"middle\" x=\"244.94\" y=\"-185.3\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M73.59,-230.01C106.76,-222.02 181.39,-204.06 219.92,-194.78\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"227.12,-193.05 221.05,-197.75 223.71,-193.87 220.31,-194.69 220.31,-194.69 220.31,-194.69 223.71,-193.87 219.57,-191.63 227.12,-193.05 227.12,-193.05\"/>\n",
"<text text-anchor=\"start\" x=\"94\" y=\"-228.8\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>8</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"black\" points=\"363.92,-86 340.96,-68 363.92,-50 386.87,-68 363.92,-86\"/>\n",
"<text text-anchor=\"middle\" x=\"363.92\" y=\"-64.3\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M71.05,-223.8C77.35,-219.38 84.93,-214.26 92,-210 182.87,-155.29 296.87,-99.51 342.58,-77.63\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"349.07,-74.54 344.11,-80.39 345.91,-76.04 342.75,-77.55 342.75,-77.55 342.75,-77.55 345.91,-76.04 341.4,-74.71 349.07,-74.54 349.07,-74.54\"/>\n",
"<text text-anchor=\"start\" x=\"160.98\" y=\"-175.8\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"303.92\" cy=\"-302\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"303.92\" y=\"-298.3\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M199.56,-280.64C220.49,-284.96 255.53,-292.21 278.93,-297.04\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"286.09,-298.52 278.6,-300.19 282.66,-297.81 279.23,-297.1 279.23,-297.1 279.23,-297.1 282.66,-297.81 279.87,-294.02 286.09,-298.52 286.09,-298.52\"/>\n",
"<text text-anchor=\"middle\" x=\"244.94\" y=\"-297.8\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"541.58\" cy=\"-364\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"541.58\" y=\"-360.3\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M259.1,-350.22C285.8,-364.31 348.65,-394.74 405.92,-402 450.29,-407.62 465.76,-408.37 505.58,-388 510.75,-385.36 516.05,-382.07 520.91,-378.78\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"526.79,-374.67 522.86,-381.26 523.92,-376.68 521.05,-378.68 521.05,-378.68 521.05,-378.68 523.92,-376.68 519.25,-376.1 526.79,-374.67 526.79,-374.67\"/>\n",
"<text text-anchor=\"middle\" x=\"363.92\" y=\"-401.8\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>5</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"541.58\" cy=\"-161\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"541.58\" y=\"-157.3\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M265.73,-187.12C317.96,-182.16 459.42,-168.71 516.36,-163.3\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"523.5,-162.62 516.83,-166.42 520.02,-162.95 516.53,-163.29 516.53,-163.29 516.53,-163.29 520.02,-162.95 516.23,-160.15 523.5,-162.62 523.5,-162.62\"/>\n",
"<text text-anchor=\"middle\" x=\"363.92\" y=\"-182.8\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node18\" class=\"node\">\n",
"<title>7</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1019.81\" cy=\"-56\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1019.81\" y=\"-52.3\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M375.91,-59.19C397.32,-42.97 446.64,-10 494.08,-10 494.08,-10 494.08,-10 915.47,-10 946.79,-10 979.2,-27.86 999.18,-41.32\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1004.96,-45.33 997.42,-43.93 1002.09,-43.34 999.21,-41.34 999.21,-41.34 999.21,-41.34 1002.09,-43.34 1001.01,-38.75 1004.96,-45.33 1004.96,-45.33\"/>\n",
"<text text-anchor=\"middle\" x=\"673.91\" y=\"-13.8\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 13 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>13</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"black\" points=\"914.47,-220 884.31,-202 914.47,-184 944.64,-202 914.47,-220\"/>\n",
"<text text-anchor=\"middle\" x=\"914.47\" y=\"-198.3\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M321.5,-298.02C354.27,-290.51 429.72,-275 494.08,-275 494.08,-275 494.08,-275 779.69,-275 826.97,-275 873.42,-239.44 897.17,-217.96\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"902.43,-213.09 899.43,-220.15 899.86,-215.46 897.29,-217.84 897.29,-217.84 897.29,-217.84 899.86,-215.46 895.16,-215.53 902.43,-213.09 902.43,-213.09\"/>\n",
"<text text-anchor=\"start\" x=\"581.58\" y=\"-278.8\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 18 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>18</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"black\" points=\"436.25,-247 406.08,-229 436.25,-211 466.41,-229 436.25,-247\"/>\n",
"<text text-anchor=\"middle\" x=\"436.25\" y=\"-225.3\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M310.74,-285.26C316.19,-272.16 325.67,-254.61 339.92,-245 357.68,-233.02 381.44,-229.01 400.8,-228\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"407.98,-227.75 401.09,-231.14 404.48,-227.87 400.98,-227.99 400.98,-227.99 400.98,-227.99 404.48,-227.87 400.87,-224.85 407.98,-227.75 407.98,-227.75\"/>\n",
"<text text-anchor=\"start\" x=\"341.92\" y=\"-248.8\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 19 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>19</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"black\" points=\"436.25,-393 406.08,-375 436.25,-357 466.41,-375 436.25,-393\"/>\n",
"<text text-anchor=\"middle\" x=\"436.25\" y=\"-371.3\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M313.82,-317.44C320.02,-326.94 329.1,-338.65 339.92,-346 359.16,-359.08 384.49,-366.42 404.21,-370.44\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"411.19,-371.78 403.73,-373.56 407.76,-371.12 404.32,-370.46 404.32,-370.46 404.32,-370.46 407.76,-371.12 404.91,-367.37 411.19,-371.78 411.19,-371.78\"/>\n",
"<text text-anchor=\"start\" x=\"341.92\" y=\"-369.8\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 20 -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>20</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"black\" points=\"436.25,-339 406.08,-321 436.25,-303 466.41,-321 436.25,-339\"/>\n",
"<text text-anchor=\"middle\" x=\"436.25\" y=\"-317.3\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M322.2,-302.27C339.07,-302.76 365.42,-304.14 387.92,-308 394.82,-309.19 402.18,-310.95 408.98,-312.8\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"416.1,-314.82 408.5,-315.94 412.73,-313.87 409.36,-312.91 409.36,-312.91 409.36,-312.91 412.73,-313.87 410.22,-309.88 416.1,-314.82 416.1,-314.82\"/>\n",
"<text text-anchor=\"start\" x=\"339.92\" y=\"-311.8\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M926.91,-191.39C932.59,-185.87 939.37,-178.85 944.81,-172 969.24,-141.22 992.83,-102.09 1006.57,-78.06\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1010.18,-71.7 1009.47,-79.34 1008.45,-74.74 1006.73,-77.79 1006.73,-77.79 1006.73,-77.79 1008.45,-74.74 1003.99,-76.23 1010.18,-71.7 1010.18,-71.7\"/>\n",
"<text text-anchor=\"start\" x=\"962.81\" y=\"-147.8\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M451.18,-219.83C468.96,-208.13 499.83,-187.82 520.23,-174.39\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"526.2,-170.46 522.09,-176.94 523.28,-172.39 520.35,-174.31 520.35,-174.31 520.35,-174.31 523.28,-172.39 518.62,-171.68 526.2,-170.46 526.2,-170.46\"/>\n",
"<text text-anchor=\"start\" x=\"484.58\" y=\"-200.8\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M450.1,-365.21C459.19,-358.93 471.96,-351.35 484.58,-348 493.6,-345.61 496.46,-346.01 505.58,-348 510.04,-348.97 514.6,-350.56 518.91,-352.37\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"525.4,-355.34 517.72,-355.29 522.21,-353.88 519.03,-352.43 519.03,-352.43 519.03,-352.43 522.21,-353.88 520.34,-349.56 525.4,-355.34 525.4,-355.34\"/>\n",
"<text text-anchor=\"start\" x=\"484.58\" y=\"-351.8\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M412.84,-325.05C393.23,-327.75 364.17,-329.72 339.92,-323 334.75,-321.57 329.58,-319.15 324.87,-316.45\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"318.75,-312.67 326.36,-313.68 321.73,-314.51 324.7,-316.35 324.7,-316.35 324.7,-316.35 321.73,-314.51 323.05,-319.03 318.75,-312.67 318.75,-312.67\"/>\n",
"<text text-anchor=\"start\" x=\"353.42\" y=\"-330.8\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M559.71,-364.68C611.54,-365.86 769.06,-362.82 866.14,-289 887.57,-272.71 900.49,-243.81 907.29,-223.81\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"909.45,-217.15 910.29,-224.78 908.37,-220.48 907.3,-223.81 907.3,-223.81 907.3,-223.81 908.37,-220.48 904.3,-222.84 909.45,-217.15 909.45,-217.15\"/>\n",
"<text text-anchor=\"start\" x=\"724.74\" y=\"-352.8\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M523.46,-365.82C508.8,-367.38 487.27,-369.67 469.4,-371.58\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"462,-372.37 468.63,-368.49 465.48,-371.99 468.96,-371.62 468.96,-371.62 468.96,-371.62 465.48,-371.99 469.29,-374.76 462,-372.37 462,-372.37\"/>\n",
"<text text-anchor=\"start\" x=\"487.08\" y=\"-372.8\" font-family=\"Lato\" font-size=\"14.00\">!i1</text>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node14\" class=\"node\">\n",
"<title>10</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"black\" points=\"1148.14,-142 1117.97,-124 1148.14,-106 1178.3,-124 1148.14,-142\"/>\n",
"<text text-anchor=\"middle\" x=\"1148.14\" y=\"-120.3\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M550.28,-144.91C556.19,-134.47 565.41,-121.61 577.58,-115 603.42,-100.95 614.18,-111.11 643.58,-110 820.74,-103.3 1033.07,-115.99 1113.79,-121.56\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1121.19,-122.08 1113.98,-124.73 1117.7,-121.83 1114.2,-121.59 1114.2,-121.59 1114.2,-121.59 1117.7,-121.83 1114.42,-118.45 1121.19,-122.08 1121.19,-122.08\"/>\n",
"<text text-anchor=\"start\" x=\"820.14\" y=\"-113.8\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 11 -->\n",
"<g id=\"node15\" class=\"node\">\n",
"<title>11</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"black\" points=\"1148.14,-36 1117.97,-18 1148.14,0 1178.3,-18 1148.14,-36\"/>\n",
"<text text-anchor=\"middle\" x=\"1148.14\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M548.61,-144.13C554.14,-131.15 563.61,-113.81 577.58,-104 666.4,-41.64 947.84,-16.06 1055.81,-5 1075.26,-3.01 1080.42,-2.39 1099.81,-5 1107.03,-5.97 1114.7,-7.75 1121.73,-9.68\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1128.49,-11.64 1120.89,-12.71 1125.13,-10.66 1121.77,-9.69 1121.77,-9.69 1121.77,-9.69 1125.13,-10.66 1122.64,-6.66 1128.49,-11.64 1128.49,-11.64\"/>\n",
"<text text-anchor=\"start\" x=\"822.14\" y=\"-37.8\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 15 -->\n",
"<g id=\"node16\" class=\"node\">\n",
"<title>15</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"black\" points=\"673.91,-155 643.75,-137 673.91,-119 704.08,-137 673.91,-155\"/>\n",
"<text text-anchor=\"middle\" x=\"673.91\" y=\"-133.3\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M552,-146.24C558.16,-138.02 567.02,-128.55 577.58,-124 600.64,-114.07 629.48,-120.28 649.36,-127.1\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"656,-129.51 648.34,-130.08 652.71,-128.32 649.42,-127.12 649.42,-127.12 649.42,-127.12 652.71,-128.32 650.5,-124.16 656,-129.51 656,-129.51\"/>\n",
"<text text-anchor=\"start\" x=\"577.58\" y=\"-127.8\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 16 -->\n",
"<g id=\"node17\" class=\"node\">\n",
"<title>16</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"black\" points=\"673.91,-209 643.75,-191 673.91,-173 704.08,-191 673.91,-209\"/>\n",
"<text text-anchor=\"middle\" x=\"673.91\" y=\"-187.3\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M557.9,-169.14C563.89,-172.02 570.92,-175.03 577.58,-177 597.69,-182.94 620.97,-186.42 639.48,-188.43\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"646.59,-189.15 639.3,-191.57 643.11,-188.79 639.62,-188.44 639.62,-188.44 639.62,-188.44 643.11,-188.79 639.94,-185.31 646.59,-189.15 646.59,-189.15\"/>\n",
"<text text-anchor=\"start\" x=\"579.58\" y=\"-189.8\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 9 -->\n",
"<g id=\"node19\" class=\"node\">\n",
"<title>9</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1249.47\" cy=\"-185\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1249.47\" y=\"-181.3\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1164.08,-132.55C1177.2,-140.13 1196.74,-151.57 1213.47,-162 1218.14,-164.91 1223.1,-168.11 1227.78,-171.17\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1233.93,-175.22 1226.35,-174 1231,-173.29 1228.08,-171.37 1228.08,-171.37 1228.08,-171.37 1231,-173.29 1229.81,-168.74 1233.93,-175.22 1233.93,-175.22\"/>\n",
"<text text-anchor=\"start\" x=\"1196.47\" y=\"-165.8\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1127.24,-12.4C1108.02,-8.11 1078.57,-4.5 1055.81,-15 1046.73,-19.19 1039.14,-27.01 1033.37,-34.71\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1029.32,-40.52 1030.74,-32.98 1031.32,-37.65 1033.32,-34.78 1033.32,-34.78 1033.32,-34.78 1031.32,-37.65 1035.91,-36.58 1029.32,-40.52 1029.32,-40.52\"/>\n",
"<text text-anchor=\"start\" x=\"1069.31\" y=\"-18.8\" font-family=\"Lato\" font-size=\"14.00\">o0</text>\n",
"</g>\n",
"<!-- 14 -->\n",
"<g id=\"node21\" class=\"node\">\n",
"<title>14</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"778.69\" cy=\"-210\" rx=\"21.4\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"778.69\" y=\"-206.3\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M688.35,-146.54C705.58,-158.78 735.69,-180.16 756.14,-194.69\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"761.89,-198.78 754.36,-197.29 759.04,-196.75 756.19,-194.73 756.19,-194.73 756.19,-194.73 759.04,-196.75 758.01,-192.16 761.89,-198.78 761.89,-198.78\"/>\n",
"<text text-anchor=\"start\" x=\"722.24\" y=\"-185.8\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M661.56,-180.06C652.6,-172.22 639.34,-162.32 625.58,-158 606.37,-151.97 583.43,-153.41 566.54,-155.96\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"559.24,-157.19 565.62,-152.92 562.69,-156.61 566.14,-156.03 566.14,-156.03 566.14,-156.03 562.69,-156.61 566.66,-159.14 559.24,-157.19 559.24,-157.19\"/>\n",
"<text text-anchor=\"start\" x=\"593.08\" y=\"-161.8\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1036.46,-63.21C1052.56,-70.75 1078.24,-83.1 1099.81,-95 1108.82,-99.97 1118.54,-105.84 1126.82,-110.99\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1132.84,-114.77 1125.23,-113.72 1129.87,-112.91 1126.91,-111.05 1126.91,-111.05 1126.91,-111.05 1129.87,-112.91 1128.58,-108.38 1132.84,-114.77 1132.84,-114.77\"/>\n",
"<text text-anchor=\"start\" x=\"1069.81\" y=\"-98.8\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M1037.53,-51.63C1053.57,-47.36 1078.44,-40.58 1099.81,-34 1107.02,-31.78 1114.79,-29.22 1121.92,-26.81\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1128.78,-24.46 1123.17,-29.71 1125.47,-25.6 1122.16,-26.73 1122.16,-26.73 1122.16,-26.73 1125.47,-25.6 1121.14,-23.75 1128.78,-24.46 1128.78,-24.46\"/>\n",
"<text text-anchor=\"start\" x=\"1071.81\" y=\"-50.8\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1231.43,-185.87C1179.15,-188.54 1020.27,-196.65 949.79,-200.25\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"942.44,-200.62 949.27,-197.12 945.94,-200.44 949.43,-200.27 949.43,-200.27 949.43,-200.27 945.94,-200.44 949.59,-203.41 942.44,-200.62 942.44,-200.62\"/>\n",
"<text text-anchor=\"start\" x=\"1071.81\" y=\"-197.8\" font-family=\"Lato\" font-size=\"14.00\">i1</text>\n",
"</g>\n",
"<!-- 12 -->\n",
"<g id=\"node20\" class=\"node\">\n",
"<title>12</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"black\" points=\"1354.8,-236 1324.64,-218 1354.8,-200 1384.97,-218 1354.8,-236\"/>\n",
"<text text-anchor=\"middle\" x=\"1354.8\" y=\"-214.3\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1267.07,-190.3C1283.53,-195.56 1308.99,-203.69 1328.07,-209.78\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1334.78,-211.93 1327.16,-212.8 1331.45,-210.86 1328.12,-209.8 1328.12,-209.8 1328.12,-209.8 1331.45,-210.86 1329.08,-206.8 1334.78,-211.93 1334.78,-211.93\"/>\n",
"<text text-anchor=\"start\" x=\"1287.97\" y=\"-205.8\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M1344.38,-206.06C1335.74,-196.15 1321.95,-182.77 1306.47,-177 1296,-173.1 1283.78,-174.24 1273.43,-176.72\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1266.61,-178.6 1272.52,-173.7 1269.98,-177.67 1273.36,-176.74 1273.36,-176.74 1273.36,-176.74 1269.98,-177.67 1274.19,-179.78 1266.61,-178.6 1266.61,-178.6\"/>\n",
"<text text-anchor=\"start\" x=\"1285.47\" y=\"-180.8\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M800.3,-208.77C821.38,-207.51 854.49,-205.53 879.46,-204.03\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"886.6,-203.61 879.8,-207.17 883.11,-203.82 879.61,-204.02 879.61,-204.02 879.61,-204.02 883.11,-203.82 879.42,-200.88 886.6,-203.61 886.6,-203.61\"/>\n",
"<text text-anchor=\"start\" x=\"822.14\" y=\"-210.8\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M757.46,-212.57C742.73,-214.36 722.28,-216.65 704.24,-218 621.57,-224.2 524.21,-227.1 472.95,-228.29\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"465.74,-228.46 472.66,-225.15 469.23,-228.38 472.73,-228.3 472.73,-228.3 472.73,-228.3 469.23,-228.38 472.8,-231.45 465.74,-228.46 465.74,-228.46\"/>\n",
"<text text-anchor=\"start\" x=\"579.58\" y=\"-227.8\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M797.84,-218.62C823.14,-229.83 870.74,-248 913.47,-248 913.47,-248 913.47,-248 1250.47,-248 1279,-248 1310.27,-237.32 1330.85,-228.71\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1337.4,-225.88 1332.22,-231.55 1334.19,-227.27 1330.98,-228.65 1330.98,-228.65 1330.98,-228.65 1334.19,-227.27 1329.73,-225.76 1337.4,-225.88 1337.4,-225.88\"/>\n",
"<text text-anchor=\"start\" x=\"1055.81\" y=\"-251.8\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 17 -->\n",
"<g id=\"node22\" class=\"node\">\n",
"<title>17</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"black\" points=\"914.47,-163 884.31,-145 914.47,-127 944.64,-145 914.47,-163\"/>\n",
"<text text-anchor=\"middle\" x=\"914.47\" y=\"-141.3\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M783.49,-192.23C788.28,-174.72 798.4,-148.92 818.14,-137 839.64,-124.03 868.99,-129.16 889.42,-135.55\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"896.25,-137.83 888.61,-138.6 892.93,-136.72 889.61,-135.61 889.61,-135.61 889.61,-135.61 892.93,-136.72 890.61,-132.62 896.25,-137.83 896.25,-137.83\"/>\n",
"<text text-anchor=\"start\" x=\"818.14\" y=\"-140.8\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M895.53,-151.77C876.08,-159.33 844.32,-172.3 818.14,-186 812.73,-188.83 807.06,-192.15 801.8,-195.41\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"795.84,-199.16 800.08,-192.77 798.8,-197.3 801.76,-195.43 801.76,-195.43 801.76,-195.43 798.8,-197.3 803.44,-198.1 795.84,-199.16 795.84,-199.16\"/>\n",
"<text text-anchor=\"start\" x=\"831.64\" y=\"-189.8\" font-family=\"Lato\" font-size=\"14.00\">!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 0x7f6c005968d0> >"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"spot.apply_strategy(game, False, False)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "515e06a8",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"729pt\" height=\"240pt\"\n",
" viewBox=\"0.00 0.00 729.00 240.47\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(0.6896551724137931 0.6896551724137931) rotate(0) translate(4 345.65)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-345.65 1056,-345.65 1056,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-232.65\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-228.95\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.15,-232.65C2.79,-232.65 17.15,-232.65 30.63,-232.65\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.94,-232.65 30.94,-235.8 34.44,-232.65 30.94,-232.65 30.94,-232.65 30.94,-232.65 34.44,-232.65 30.94,-229.5 37.94,-232.65 37.94,-232.65\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"234\" cy=\"-161.65\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"234\" y=\"-157.95\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M72.93,-226.22C104.26,-213.58 174.01,-185.45 210.21,-170.84\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"216.98,-168.11 211.67,-173.65 213.73,-169.42 210.49,-170.73 210.49,-170.73 210.49,-170.73 213.73,-169.42 209.31,-167.81 216.98,-168.11 216.98,-168.11\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94,-218.15 94,-237.15 146,-237.15 146,-218.15 94,-218.15\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-223.95\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"150\" y=\"-223.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"161,-218.15 161,-237.15 174,-237.15 174,-218.15 161,-218.15\"/>\n",
"<text text-anchor=\"start\" x=\"163\" y=\"-223.95\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"440\" cy=\"-223.65\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"440\" y=\"-219.95\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M73.18,-238.29C79.03,-240.06 85.74,-241.77 92,-242.65 128.97,-247.83 138.67,-242.74 176,-242.65 268.45,-242.43 292.74,-256.43 384,-241.65 394.85,-239.89 406.48,-236.35 416.23,-232.87\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"422.97,-230.37 417.5,-235.76 419.68,-231.59 416.4,-232.8 416.4,-232.8 416.4,-232.8 419.68,-231.59 415.31,-229.85 422.97,-230.37 422.97,-230.37\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"196,-248.15 196,-267.15 244,-267.15 244,-248.15 196,-248.15\"/>\n",
"<text text-anchor=\"start\" x=\"198\" y=\"-253.95\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"248\" y=\"-253.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"259,-248.15 259,-267.15 272,-267.15 272,-248.15 259,-248.15\"/>\n",
"<text text-anchor=\"start\" x=\"261\" y=\"-253.95\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"440\" cy=\"-87.65\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"440\" y=\"-83.95\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M65.5,-217.27C71.9,-206.54 81.37,-192.28 92,-181.65 130.88,-142.77 142.34,-130.48 194,-111.65 270.86,-83.63 369.77,-84.1 414.77,-86.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"422.03,-86.47 414.88,-89.27 418.53,-86.3 415.03,-86.13 415.03,-86.13 415.03,-86.13 418.53,-86.3 415.19,-82.98 422.03,-86.47 422.03,-86.47\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"196,-113.15 196,-132.15 244,-132.15 244,-113.15 196,-113.15\"/>\n",
"<text text-anchor=\"start\" x=\"198\" y=\"-118.95\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"248\" y=\"-118.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"259,-113.15 259,-132.15 272,-132.15 272,-113.15 259,-113.15\"/>\n",
"<text text-anchor=\"start\" x=\"261\" y=\"-118.95\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>4</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"860\" cy=\"-126.65\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"860\" y=\"-122.95\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M70.06,-244.25C97.9,-267.72 166,-318.65 233,-318.65 233,-318.65 233,-318.65 649,-318.65 748.52,-318.65 821.45,-199.75 848.02,-149.09\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"851.31,-142.69 850.9,-150.36 849.71,-145.8 848.1,-148.91 848.1,-148.91 848.1,-148.91 849.71,-145.8 845.3,-147.47 851.31,-142.69 851.31,-142.69\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"404,-320.15 404,-339.15 448,-339.15 448,-320.15 404,-320.15\"/>\n",
"<text text-anchor=\"start\" x=\"406\" y=\"-325.95\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"452\" y=\"-325.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"463,-320.15 463,-339.15 476,-339.15 476,-320.15 463,-320.15\"/>\n",
"<text text-anchor=\"start\" x=\"465\" y=\"-325.95\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M219.65,-172.71C210.66,-184.43 215.45,-197.65 234,-197.65 249.22,-197.65 255.17,-188.75 251.86,-179.09\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"248.35,-172.71 254.49,-177.32 250.04,-175.77 251.73,-178.84 251.73,-178.84 251.73,-178.84 250.04,-175.77 248.97,-180.36 248.35,-172.71 248.35,-172.71\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"188,-199.15 188,-218.15 240,-218.15 240,-199.15 188,-199.15\"/>\n",
"<text text-anchor=\"start\" x=\"190\" y=\"-204.95\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"244\" y=\"-204.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"255,-199.15 255,-218.15 280,-218.15 280,-199.15 255,-199.15\"/>\n",
"<text text-anchor=\"start\" x=\"257\" y=\"-204.95\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M249.97,-170.97C261.17,-177.58 277.08,-186.21 292,-191.65 333.85,-206.9 385.18,-216.03 414.79,-220.43\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"421.83,-221.45 414.45,-223.57 418.36,-220.95 414.9,-220.45 414.9,-220.45 414.9,-220.45 418.36,-220.95 415.35,-217.33 421.83,-221.45 421.83,-221.45\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"294,-216.15 294,-235.15 342,-235.15 342,-216.15 294,-216.15\"/>\n",
"<text text-anchor=\"start\" x=\"296\" y=\"-221.95\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"346\" y=\"-221.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"357,-216.15 357,-235.15 382,-235.15 382,-216.15 357,-216.15\"/>\n",
"<text text-anchor=\"start\" x=\"359\" y=\"-221.95\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M251.39,-155.38C262.74,-151.09 278.23,-145.36 292,-140.65 332.57,-126.79 343.85,-126.69 384,-111.65 394.94,-107.55 406.85,-102.44 416.78,-97.99\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"423.3,-95.03 418.22,-100.79 420.11,-96.48 416.92,-97.92 416.92,-97.92 416.92,-97.92 420.11,-96.48 415.62,-95.05 423.3,-95.03 423.3,-95.03\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"294,-142.15 294,-161.15 342,-161.15 342,-142.15 294,-142.15\"/>\n",
"<text text-anchor=\"start\" x=\"296\" y=\"-147.95\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"346\" y=\"-147.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"357,-142.15 357,-161.15 382,-161.15 382,-142.15 357,-142.15\"/>\n",
"<text text-anchor=\"start\" x=\"359\" y=\"-147.95\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M252.21,-162.41C263.51,-162.87 278.63,-163.42 292,-163.65 332.88,-164.37 343.11,-164.12 384,-163.65 520.03,-162.09 554.28,-165.87 690,-156.65 737.3,-153.44 749.49,-153.86 796,-144.65 809.31,-142.02 823.89,-137.93 835.67,-134.32\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"842.6,-132.14 836.86,-137.24 839.26,-133.19 835.92,-134.24 835.92,-134.24 835.92,-134.24 839.26,-133.19 834.98,-131.23 842.6,-132.14 842.6,-132.14\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"500,-165.15 500,-184.15 544,-184.15 544,-165.15 500,-165.15\"/>\n",
"<text text-anchor=\"start\" x=\"502\" y=\"-170.95\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"548\" y=\"-170.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"559,-165.15 559,-184.15 584,-184.15 584,-165.15 559,-165.15\"/>\n",
"<text text-anchor=\"start\" x=\"561\" y=\"-170.95\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M425.36,-234.71C416.19,-246.43 421.07,-259.65 440,-259.65 455.67,-259.65 461.71,-250.58 458.12,-240.81\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"454.64,-234.71 460.84,-239.23 456.37,-237.75 458.11,-240.79 458.11,-240.79 458.11,-240.79 456.37,-237.75 455.37,-242.35 454.64,-234.71 454.64,-234.71\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"410,-261.15 410,-280.15 430,-280.15 430,-261.15 410,-261.15\"/>\n",
"<text text-anchor=\"start\" x=\"412\" y=\"-266.95\" font-family=\"Lato\" font-size=\"14.00\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"434\" y=\"-266.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"445,-261.15 445,-280.15 470,-280.15 470,-261.15 445,-261.15\"/>\n",
"<text text-anchor=\"start\" x=\"447\" y=\"-266.95\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M457.99,-226.1C511.07,-232.95 677.33,-248.31 796,-191.65 816.53,-181.85 833.99,-162.34 845.29,-147.24\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"849.45,-141.5 847.89,-149.01 847.4,-144.33 845.34,-147.17 845.34,-147.17 845.34,-147.17 847.4,-144.33 842.79,-145.32 849.45,-141.5 849.45,-141.5\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"620,-233.15 620,-252.15 636,-252.15 636,-233.15 620,-233.15\"/>\n",
"<text text-anchor=\"start\" x=\"622\" y=\"-238.95\" font-family=\"Lato\" font-size=\"14.00\">i1</text>\n",
"<text text-anchor=\"start\" x=\"640\" y=\"-238.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"651,-233.15 651,-252.15 676,-252.15 676,-233.15 651,-233.15\"/>\n",
"<text text-anchor=\"start\" x=\"653\" y=\"-238.95\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M425.36,-98.71C416.19,-110.43 421.07,-123.65 440,-123.65 455.67,-123.65 461.71,-114.58 458.12,-104.81\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"454.64,-98.71 460.84,-103.23 456.37,-101.75 458.11,-104.79 458.11,-104.79 458.11,-104.79 456.37,-101.75 455.37,-106.35 454.64,-98.71 454.64,-98.71\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"398,-125.15 398,-144.15 446,-144.15 446,-125.15 398,-125.15\"/>\n",
"<text text-anchor=\"start\" x=\"400\" y=\"-130.95\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"450\" y=\"-130.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"461,-125.15 461,-144.15 482,-144.15 482,-125.15 461,-125.15\"/>\n",
"<text text-anchor=\"start\" x=\"463\" y=\"-130.95\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M456.49,-95.07C467.29,-99.87 482.2,-105.75 496,-108.65 621.24,-134.97 775.89,-130.88 834.73,-128.05\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"841.75,-127.7 834.91,-131.2 838.25,-127.87 834.76,-128.05 834.76,-128.05 834.76,-128.05 838.25,-127.87 834.6,-124.9 841.75,-127.7 841.75,-127.7\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"608,-131.15 608,-150.15 652,-150.15 652,-131.15 608,-131.15\"/>\n",
"<text text-anchor=\"start\" x=\"610\" y=\"-136.95\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"656\" y=\"-136.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"667,-131.15 667,-150.15 688,-150.15 688,-131.15 667,-131.15\"/>\n",
"<text text-anchor=\"start\" x=\"669\" y=\"-136.95\" font-family=\"Lato\" font-size=\"14.00\">o0</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>5</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1020\" cy=\"-49.65\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1020\" y=\"-45.95\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M449.47,-72.01C458.73,-56.53 475.1,-33.47 496,-21.65 539.06,2.7 556.68,-8.44 606,-4.65 774.31,8.28 818.62,-7.81 984,-41.65 987.65,-42.4 991.5,-43.23 995.26,-44.07\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1002.3,-45.67 994.78,-47.19 998.89,-44.89 995.47,-44.12 995.47,-44.12 995.47,-44.12 998.89,-44.89 996.17,-41.05 1002.3,-45.67 1002.3,-45.67\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"710,-7.15 710,-26.15 758,-26.15 758,-7.15 710,-7.15\"/>\n",
"<text text-anchor=\"start\" x=\"712\" y=\"-12.95\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"762\" y=\"-12.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"773,-7.15 773,-26.15 794,-26.15 794,-7.15 773,-7.15\"/>\n",
"<text text-anchor=\"start\" x=\"775\" y=\"-12.95\" font-family=\"Lato\" font-size=\"14.00\">o0</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"648\" cy=\"-31.65\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"648\" y=\"-27.95\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M451.94,-73.59C461.98,-61.89 478,-45.99 496,-38.65 537.89,-21.57 591.84,-24.32 622.61,-27.94\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"629.91,-28.86 622.57,-31.11 626.44,-28.42 622.96,-27.98 622.96,-27.98 622.96,-27.98 626.44,-28.42 623.36,-24.86 629.91,-28.86 629.91,-28.86\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"498,-40.15 498,-59.15 550,-59.15 550,-40.15 498,-40.15\"/>\n",
"<text text-anchor=\"start\" x=\"500\" y=\"-45.95\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"554\" y=\"-45.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"565,-40.15 565,-59.15 586,-59.15 586,-40.15 565,-40.15\"/>\n",
"<text text-anchor=\"start\" x=\"567\" y=\"-45.95\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M845.99,-138.45C838.26,-149.98 842.93,-162.65 860,-162.65 873.87,-162.65 879.56,-154.29 877.05,-144.97\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"874.01,-138.45 879.82,-143.46 875.49,-141.62 876.97,-144.79 876.97,-144.79 876.97,-144.79 875.49,-141.62 874.11,-146.13 874.01,-138.45 874.01,-138.45\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"834,-164.15 834,-183.15 850,-183.15 850,-164.15 834,-164.15\"/>\n",
"<text text-anchor=\"start\" x=\"836\" y=\"-169.95\" font-family=\"Lato\" font-size=\"14.00\">i1</text>\n",
"<text text-anchor=\"start\" x=\"854\" y=\"-169.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"865,-164.15 865,-183.15 886,-183.15 886,-164.15 865,-164.15\"/>\n",
"<text text-anchor=\"start\" x=\"867\" y=\"-169.95\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M878.04,-127.12C903.3,-126.99 951.21,-123.58 984,-101.65 994.64,-94.54 1002.89,-82.99 1008.7,-72.58\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1012,-66.29 1011.53,-73.95 1010.37,-69.39 1008.74,-72.49 1008.74,-72.49 1008.74,-72.49 1010.37,-69.39 1005.96,-71.02 1012,-66.29 1012,-66.29\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"926,-125.15 926,-144.15 946,-144.15 946,-125.15 926,-125.15\"/>\n",
"<text text-anchor=\"start\" x=\"928\" y=\"-130.95\" font-family=\"Lato\" font-size=\"14.00\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"950\" y=\"-130.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"961,-125.15 961,-144.15 982,-144.15 982,-125.15 961,-125.15\"/>\n",
"<text text-anchor=\"start\" x=\"963\" y=\"-130.95\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1002.08,-51.85C982.44,-54.9 949.5,-61.58 924,-74.65 906.93,-83.4 890.31,-97.43 878.43,-108.7\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"873.32,-113.67 876.14,-106.53 875.83,-111.23 878.34,-108.79 878.34,-108.79 878.34,-108.79 875.83,-111.23 880.53,-111.05 873.32,-113.67 873.32,-113.67\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"926,-76.15 926,-95.15 942,-95.15 942,-76.15 926,-76.15\"/>\n",
"<text text-anchor=\"start\" x=\"928\" y=\"-81.95\" font-family=\"Lato\" font-size=\"14.00\">i1</text>\n",
"<text text-anchor=\"start\" x=\"946\" y=\"-81.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"957,-76.15 957,-95.15 982,-95.15 982,-76.15 957,-76.15\"/>\n",
"<text text-anchor=\"start\" x=\"959\" y=\"-81.95\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M1009.09,-64.07C1005.28,-74.82 1008.91,-85.65 1020,-85.65 1028.66,-85.65 1032.78,-79.04 1032.34,-71.02\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1030.91,-64.07 1035.41,-70.29 1031.62,-67.5 1032.32,-70.92 1032.32,-70.92 1032.32,-70.92 1031.62,-67.5 1029.24,-71.56 1030.91,-64.07 1030.91,-64.07\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"990,-87.15 990,-106.15 1010,-106.15 1010,-87.15 990,-87.15\"/>\n",
"<text text-anchor=\"start\" x=\"992\" y=\"-92.95\" font-family=\"Lato\" font-size=\"14.00\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"1014\" y=\"-92.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"1025,-87.15 1025,-106.15 1050,-106.15 1050,-87.15 1025,-87.15\"/>\n",
"<text text-anchor=\"start\" x=\"1027\" y=\"-92.95\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M632.01,-40.84C620.4,-47.57 603.69,-56.4 588,-61.65 546.08,-75.67 494.77,-82.55 465.19,-85.58\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"458.16,-86.27 464.82,-82.45 461.64,-85.93 465.12,-85.59 465.12,-85.59 465.12,-85.59 461.64,-85.93 465.43,-88.72 458.16,-86.27 458.16,-86.27\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"498,-83.15 498,-102.15 546,-102.15 546,-83.15 498,-83.15\"/>\n",
"<text text-anchor=\"start\" x=\"500\" y=\"-88.95\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"550\" y=\"-88.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"561,-83.15 561,-102.15 586,-102.15 586,-83.15 561,-83.15\"/>\n",
"<text text-anchor=\"start\" x=\"563\" y=\"-88.95\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M665.23,-37.12C692.7,-46.59 749.88,-67.18 796,-89.65 810.66,-96.8 826.49,-106.1 838.61,-113.59\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"844.59,-117.32 836.98,-116.28 841.62,-115.46 838.65,-113.61 838.65,-113.61 838.65,-113.61 841.62,-115.46 840.32,-110.94 844.59,-117.32 844.59,-117.32\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"710,-91.15 710,-110.15 754,-110.15 754,-91.15 710,-91.15\"/>\n",
"<text text-anchor=\"start\" x=\"712\" y=\"-96.95\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"758\" y=\"-96.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"769,-91.15 769,-110.15 794,-110.15 794,-91.15 769,-91.15\"/>\n",
"<text text-anchor=\"start\" x=\"771\" y=\"-96.95\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M666.35,-32.49C726.31,-35.41 924.94,-45.07 994.6,-48.46\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1001.69,-48.81 994.54,-51.61 998.19,-48.64 994.7,-48.47 994.7,-48.47 994.7,-48.47 998.19,-48.64 994.85,-45.32 1001.69,-48.81 1001.69,-48.81\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"816,-46.15 816,-65.15 864,-65.15 864,-46.15 816,-46.15\"/>\n",
"<text text-anchor=\"start\" x=\"818\" y=\"-51.95\" font-family=\"Lato\" font-size=\"14.00\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"868\" y=\"-51.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"879,-46.15 879,-65.15 904,-65.15 904,-46.15 879,-46.15\"/>\n",
"<text text-anchor=\"start\" x=\"881\" y=\"-51.95\" font-family=\"Lato\" font-size=\"14.00\">!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=\"black\" d=\"M633.38,-42.34C623.62,-54.15 628.5,-67.65 648,-67.65 664.15,-67.65 670.27,-58.39 666.36,-48.5\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"662.62,-42.34 668.94,-46.69 664.44,-45.33 666.25,-48.33 666.25,-48.33 666.25,-48.33 664.44,-45.33 663.56,-49.96 662.62,-42.34 662.62,-42.34\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"602,-69.15 602,-88.15 654,-88.15 654,-69.15 602,-69.15\"/>\n",
"<text text-anchor=\"start\" x=\"604\" y=\"-74.95\" font-family=\"Lato\" font-size=\"14.00\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"658\" y=\"-74.95\" font-family=\"Lato\" font-size=\"14.00\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"669,-69.15 669,-88.15 694,-88.15 694,-69.15 669,-69.15\"/>\n",
"<text text-anchor=\"start\" x=\"671\" y=\"-74.95\" font-family=\"Lato\" font-size=\"14.00\">!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 0x7f6c003de630> >"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"spot.apply_strategy(game, True, False)"
]
},
{
"cell_type": "markdown",
"id": "aab74aac",
"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,
"id": "f7585a73",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"265pt\" height=\"208pt\"\n",
" viewBox=\"0.00 0.00 265.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=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-204 261.19,-204 261.19,4 -4,4\"/>\n",
"<!-- 6 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>6</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"black\" points=\"76.7,-118 11.7,-118 11.7,-82 76.7,-82 76.7,-118\"/>\n",
"<text text-anchor=\"middle\" x=\"44.2\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\">L0_out</text>\n",
"</g>\n",
"<!-- o0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>o0</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"black\" points=\"44.2,-154 88.59,-188.5 -0.2,-188.5 44.2,-154\"/>\n",
"<text text-anchor=\"middle\" x=\"44.2\" y=\"-173.3\" font-family=\"Times,serif\" font-size=\"14.00\">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=\"black\" d=\"M44.2,-118.19C44.2,-126.29 44.2,-136.29 44.2,-145.98\"/>\n",
"<ellipse fill=\"black\" stroke=\"black\" cx=\"44.2\" 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=\"black\" points=\"149.7,-118 94.7,-118 94.7,-82 149.7,-82 149.7,-118\"/>\n",
"<text text-anchor=\"middle\" x=\"122.2\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\">L0_in</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"black\" points=\"122.2,-46 83.2,-11.5 161.19,-11.5 122.2,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"122.2\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\">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=\"black\" d=\"M122.2,-46.1C122.2,-54.74 122.2,-64.71 122.2,-73.64\"/>\n",
"<ellipse fill=\"black\" stroke=\"black\" cx=\"122.2\" cy=\"-77.82\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"black\" points=\"218.2,-46 179.2,-11.5 257.19,-11.5 218.2,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"218.2\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\">i0</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.aig; proxy of <Swig Object of type 'spot::aig_ptr *' at 0x7f6c004d8870> >"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"aig = spot.strategy_to_aig(strat, \"isop\")\n",
"display(aig)"
]
},
{
"cell_type": "markdown",
"id": "a7100505",
"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,
"id": "8272357d",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"311pt\" height=\"172pt\"\n",
" viewBox=\"0.00 0.00 311.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=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-168 307.39,-168 307.39,4 -4,4\"/>\n",
"<!-- 6 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>6</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"black\" points=\"178.99,-41 113.99,-41 113.99,-5 178.99,-5 178.99,-41\"/>\n",
"<text text-anchor=\"middle\" x=\"146.49\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\">L0_out</text>\n",
"</g>\n",
"<!-- o0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>o0</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"black\" points=\"214.8,-23 281.39,0 281.39,-46 214.8,-23\"/>\n",
"<text text-anchor=\"middle\" x=\"259.19\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\">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=\"black\" d=\"M179.09,-23C187.85,-23 197.52,-23 206.88,-23\"/>\n",
"<ellipse fill=\"black\" stroke=\"black\" cx=\"210.99\" 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=\"black\" points=\"173.99,-95 118.99,-95 118.99,-59 173.99,-59 173.99,-95\"/>\n",
"<text text-anchor=\"middle\" x=\"146.49\" y=\"-73.3\" font-family=\"Times,serif\" font-size=\"14.00\">L0_in</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"black\" points=\"77.99,-77 19.5,-100 19.5,-54 77.99,-77\"/>\n",
"<text text-anchor=\"middle\" x=\"39\" y=\"-73.3\" font-family=\"Times,serif\" font-size=\"14.00\">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=\"black\" d=\"M78.08,-77C88.7,-77 100.18,-77 110.6,-77\"/>\n",
"<ellipse fill=\"black\" stroke=\"black\" cx=\"114.7\" 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=\"black\" points=\"77.99,-141 19.5,-164 19.5,-118 77.99,-141\"/>\n",
"<text text-anchor=\"middle\" x=\"39\" y=\"-137.3\" font-family=\"Times,serif\" font-size=\"14.00\">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",
"id": "a40e4c28",
"metadata": {},
"source": [
"# Adding more inputs and outputs by force"
]
},
{
"cell_type": "markdown",
"id": "4b8a9809",
"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,
"id": "efc7c557",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"392pt\" height=\"259pt\"\n",
" viewBox=\"0.00 0.00 392.00 258.92\" 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 254.92)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-254.92 388,-254.92 388,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"17\" y=\"-236.72\" font-family=\"Lato\" font-size=\"14.00\">Inf(</text>\n",
"<text text-anchor=\"start\" x=\"38\" y=\"-236.72\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#e31a1c\">❺</text>\n",
"<text text-anchor=\"start\" x=\"54\" y=\"-236.72\" font-family=\"Lato\" font-size=\"14.00\">) | (Fin(</text>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-236.72\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"<text text-anchor=\"start\" x=\"112\" y=\"-236.72\" font-family=\"Lato\" font-size=\"14.00\">) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"158\" y=\"-236.72\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"174\" y=\"-236.72\" font-family=\"Lato\" font-size=\"14.00\">) | (Fin(</text>\n",
"<text text-anchor=\"start\" x=\"216\" y=\"-236.72\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"232\" y=\"-236.72\" font-family=\"Lato\" font-size=\"14.00\">) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"278\" y=\"-236.72\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"294\" y=\"-236.72\" font-family=\"Lato\" font-size=\"14.00\">) | Fin(</text>\n",
"<text text-anchor=\"start\" x=\"332\" y=\"-236.72\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"348\" y=\"-236.72\" font-family=\"Lato\" font-size=\"14.00\">)))))</text>\n",
"<text text-anchor=\"start\" x=\"136.5\" y=\"-222.72\" font-family=\"Lato\" font-size=\"14.00\">[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=\"-96.92\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-93.22\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M1.15,-96.92C2.79,-96.92 17.15,-96.92 30.63,-96.92\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.94,-96.92 30.94,-100.07 34.44,-96.92 30.94,-96.92 30.94,-96.92 30.94,-96.92 34.44,-96.92 30.94,-93.77 37.94,-96.92 37.94,-96.92\"/>\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,-155.92 126,-137.92 153,-119.92 180,-137.92 153,-155.92\"/>\n",
"<text text-anchor=\"middle\" x=\"153\" y=\"-134.22\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M72.69,-103.69C88.13,-110.35 111.89,-120.6 129.37,-128.15\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"135.97,-131 128.3,-131.12 132.76,-129.61 129.54,-128.22 129.54,-128.22 129.54,-128.22 132.76,-129.61 130.79,-125.33 135.97,-131 135.97,-131\"/>\n",
"<text text-anchor=\"start\" x=\"94\" y=\"-136.72\" font-family=\"Lato\" font-size=\"14.00\">i0</text>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-121.72\" 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,-88.92 126,-70.92 153,-52.92 180,-70.92 153,-88.92\"/>\n",
"<text text-anchor=\"middle\" x=\"153\" y=\"-67.22\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M69.9,-84.83C76.09,-79.83 83.92,-74.58 92,-71.92 101.71,-68.71 112.8,-67.82 122.78,-67.94\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"129.81,-68.18 122.71,-71.09 126.32,-68.06 122.82,-67.94 122.82,-67.94 122.82,-67.94 126.32,-68.06 122.93,-64.79 129.81,-68.18 129.81,-68.18\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-90.72\" font-family=\"Lato\" font-size=\"14.00\">!i0</text>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-75.72\" 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=\"-98.92\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"255\" y=\"-95.22\" font-family=\"Lato\" font-size=\"14.00\">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,-129.92 330,-111.92 357,-93.92 384,-111.92 357,-129.92\"/>\n",
"<text text-anchor=\"middle\" x=\"357\" y=\"-108.22\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M267.12,-112.62C273.36,-119.2 281.74,-126.41 291,-129.92 305.82,-135.54 323.15,-130.18 336.18,-123.88\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"342.57,-120.55 337.82,-126.58 339.47,-122.17 336.36,-123.79 336.36,-123.79 336.36,-123.79 339.47,-122.17 334.91,-120.99 342.57,-120.55 342.57,-120.55\"/>\n",
"<text text-anchor=\"start\" x=\"297\" y=\"-150.72\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"<text text-anchor=\"start\" x=\"293.5\" y=\"-135.72\" 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.48,-104.77C332.22,-101.35 321.77,-97.64 312,-95.92 301.61,-94.09 289.98,-94.34 280.02,-95.25\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"272.78,-96.04 279.4,-92.15 276.21,-95.16 279.69,-94.78 279.74,-95.28 279.8,-95.78 276.32,-96.16 280.08,-98.41 272.78,-96.04 272.78,-96.04\"/>\n",
"<text text-anchor=\"start\" x=\"297\" y=\"-114.72\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"<text text-anchor=\"start\" x=\"293.5\" y=\"-99.72\" 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=\"-44.92\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"255\" y=\"-41.22\" font-family=\"Lato\" font-size=\"14.00\">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,-49.92 330,-31.92 357,-13.92 384,-31.92 357,-49.92\"/>\n",
"<text text-anchor=\"middle\" x=\"357\" y=\"-28.22\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M272.96,-42.71C287.69,-40.8 309.33,-37.98 326.83,-35.71\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"334.04,-34.77 327.51,-38.8 330.57,-35.22 327.1,-35.67 327.1,-35.67 327.1,-35.67 330.57,-35.22 326.7,-32.55 334.04,-34.77 334.04,-34.77\"/>\n",
"<text text-anchor=\"start\" x=\"297\" y=\"-58.72\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"<text text-anchor=\"start\" x=\"293.5\" y=\"-43.72\" 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.36,-21.28C332.45,-9.72 310.02,5.99 291,-2.92 281.82,-7.22 274.21,-15.24 268.46,-23.12\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"264.42,-29.07 265.75,-21.51 265.97,-25.89 267.94,-22.99 268.35,-23.28 268.77,-23.56 266.8,-26.45 270.96,-25.04 264.42,-29.07 264.42,-29.07\"/>\n",
"<text text-anchor=\"start\" x=\"291\" y=\"-21.72\" font-family=\"Lato\" font-size=\"14.00\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"293.5\" y=\"-6.72\" 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=\"-177.92\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"255\" y=\"-174.22\" font-family=\"Lato\" font-size=\"14.00\">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=\"black\" d=\"M240.9,-166.08C234.66,-161.02 226.86,-155.48 219,-151.92 207.86,-146.87 194.8,-143.6 183.32,-141.5\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"176.41,-140.34 183.83,-138.39 179.86,-140.92 183.31,-141.5 183.31,-141.5 183.31,-141.5 179.86,-140.92 182.79,-144.61 176.41,-140.34 176.41,-140.34\"/>\n",
"<text text-anchor=\"start\" x=\"204\" y=\"-170.72\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"<text text-anchor=\"start\" x=\"200.5\" y=\"-155.72\" 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=\"M163.02,-126.19C171.04,-116.8 183.68,-104.35 198,-98.92 207.95,-95.14 219.62,-94.59 229.73,-95.21\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"236.77,-95.82 229.52,-98.35 233.24,-96.02 229.75,-95.71 229.8,-95.21 229.84,-94.71 233.33,-95.02 230.07,-92.07 236.77,-95.82 236.77,-95.82\"/>\n",
"<text text-anchor=\"start\" x=\"200\" y=\"-117.72\" font-family=\"Lato\" font-size=\"14.00\">o0</text>\n",
"<text text-anchor=\"start\" x=\"200.5\" y=\"-102.72\" 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=\"black\" d=\"M162.07,-150.27C169.83,-160.92 182.63,-175.55 198,-181.92 208,-186.06 219.86,-185.85 230.09,-184.3\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"237.2,-182.96 230.9,-187.35 233.76,-183.61 230.32,-184.25 230.32,-184.25 230.32,-184.25 233.76,-183.61 229.73,-181.16 237.2,-182.96 237.2,-182.96\"/>\n",
"<text text-anchor=\"start\" x=\"198\" y=\"-203.72\" font-family=\"Lato\" font-size=\"14.00\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"200.5\" y=\"-188.72\" 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.34,-61.67C174.78,-55.93 186.48,-49.07 198,-45.92 208.16,-43.13 219.76,-42.53 229.75,-42.75\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"237.03,-43.07 229.9,-45.91 233.51,-43.42 230.01,-43.27 230.04,-42.77 230.06,-42.27 233.55,-42.42 230.17,-39.62 237.03,-43.07 237.03,-43.07\"/>\n",
"<text text-anchor=\"start\" x=\"198\" y=\"-64.72\" font-family=\"Lato\" font-size=\"14.00\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"200.5\" y=\"-49.72\" 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 0x7f6c003dec90> >"
]
},
"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.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"143pt\" height=\"352pt\"\n",
" viewBox=\"0.00 0.00 142.70 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=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-348 138.7,-348 138.7,4 -4,4\"/>\n",
"<!-- 4 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"black\" points=\"65,-118 0,-118 0,-82 65,-82 65,-118\"/>\n",
"<text text-anchor=\"middle\" x=\"32.5\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\">L0_out</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"62.5\" cy=\"-172\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"62.5\" y=\"-168.3\" font-family=\"Times,serif\" font-size=\"14.00\">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=\"black\" d=\"M39.92,-118.3C43.66,-127.03 48.25,-137.76 52.32,-147.25\"/>\n",
"<ellipse fill=\"black\" stroke=\"black\" cx=\"54.01\" cy=\"-151.18\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- L0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>L0</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"black\" points=\"62,-262 7,-262 7,-226 62,-226 62,-262\"/>\n",
"<text text-anchor=\"middle\" x=\"34.5\" y=\"-240.3\" font-family=\"Times,serif\" font-size=\"14.00\">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=\"black\" d=\"M56.15,-188.88C52.68,-197.54 48.32,-208.45 44.42,-218.2\"/>\n",
"<ellipse fill=\"black\" stroke=\"black\" cx=\"42.9\" cy=\"-221.99\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- o0 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>o0</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"black\" points=\"90.5,-298 134.89,-332.5 46.11,-332.5 90.5,-298\"/>\n",
"<text text-anchor=\"middle\" x=\"90.5\" y=\"-317.3\" font-family=\"Times,serif\" font-size=\"14.00\">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=\"black\" d=\"M68.58,-189.32C76.1,-210.91 88.19,-250.57 90.21,-287.63\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"86.72,-288.1 90.5,-298 93.72,-287.91 86.72,-288.1\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"black\" points=\"93.5,-46 54.51,-11.5 132.49,-11.5 93.5,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"93.5\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\">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=\"black\" d=\"M89.77,-43.11C86.03,-62.12 80.05,-92.11 74.5,-118 72.67,-126.56 70.58,-135.88 68.68,-144.29\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"65.2,-143.78 66.38,-154.31 72.02,-145.34 65.2,-143.78\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.aig; proxy of <Swig Object of type 'spot::aig_ptr *' at 0x7f6c0059b570> >"
]
},
"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",
"id": "c328c4d8",
"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,
"id": "f9f8d0e3",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"332pt\" height=\"352pt\"\n",
" viewBox=\"0.00 0.00 332.50 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=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-348 328.5,-348 328.5,4 -4,4\"/>\n",
"<!-- 6 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>6</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"black\" points=\"65,-118 0,-118 0,-82 65,-82 65,-118\"/>\n",
"<text text-anchor=\"middle\" x=\"32.5\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\">L0_out</text>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"62.5\" cy=\"-172\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"62.5\" y=\"-168.3\" font-family=\"Times,serif\" font-size=\"14.00\">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=\"black\" d=\"M39.92,-118.3C43.66,-127.03 48.25,-137.76 52.32,-147.25\"/>\n",
"<ellipse fill=\"black\" stroke=\"black\" cx=\"54.01\" cy=\"-151.18\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- L0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>L0</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"black\" points=\"67,-262 12,-262 12,-226 67,-226 67,-262\"/>\n",
"<text text-anchor=\"middle\" x=\"39.5\" y=\"-240.3\" font-family=\"Times,serif\" font-size=\"14.00\">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=\"black\" d=\"M57.17,-189.24C54.35,-197.82 50.82,-208.54 47.67,-218.14\"/>\n",
"<ellipse fill=\"black\" stroke=\"black\" cx=\"46.38\" cy=\"-222.08\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- o0 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>o0</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"black\" points=\"95.5,-298 139.89,-332.5 51.11,-332.5 95.5,-298\"/>\n",
"<text text-anchor=\"middle\" x=\"95.5\" y=\"-317.3\" font-family=\"Times,serif\" font-size=\"14.00\">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=\"black\" d=\"M69.5,-188.83C78.39,-210.3 92.87,-250.3 95.18,-287.97\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"91.69,-288.12 95.5,-298 98.68,-287.89 91.69,-288.12\"/>\n",
"</g>\n",
"<!-- o1 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>o1</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"black\" points=\"201.5,-298 245.89,-332.5 157.11,-332.5 201.5,-298\"/>\n",
"<text text-anchor=\"middle\" x=\"201.5\" y=\"-317.3\" font-family=\"Times,serif\" font-size=\"14.00\">o1</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"black\" points=\"93.5,-46 54.51,-11.5 132.49,-11.5 93.5,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"93.5\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\">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=\"black\" d=\"M89.57,-42.62C84.15,-68.35 74.32,-114.94 68.12,-144.35\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"64.65,-143.84 66.01,-154.35 71.5,-145.28 64.65,-143.84\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"black\" points=\"285.5,-46 246.51,-11.5 324.49,-11.5 285.5,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"285.5\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\">i1</text>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>0</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"black\" points=\"228.5,-41 174.5,-41 174.5,-5 228.5,-5 228.5,-41\"/>\n",
"<text text-anchor=\"middle\" x=\"201.5\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\">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=\"black\" d=\"M201.5,-41.31C201.5,-83.11 201.5,-193.09 201.5,-287.99\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"198,-288 201.5,-298 205,-288 198,-288\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.aig; proxy of <Swig Object of type 'spot::aig_ptr *' at 0x7f6c003dee40> >"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(spot.strategy_to_aig(strat, \"isop\", [\"i0\", \"i1\"], [\"o0\", \"o1\"]))"
]
},
{
"cell_type": "markdown",
"id": "a330b169",
"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,
"id": "57d7875d",
"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,
"id": "4796e7d7",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"202pt\" height=\"289pt\"\n",
" viewBox=\"0.00 0.00 202.39 289.50\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 285.5)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-285.5 198.39,-285.5 198.39,4 -4,4\"/>\n",
"<!-- 6 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"129.2\" cy=\"-100\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"129.2\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\">6</text>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>10</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"65.2\" cy=\"-176.75\" rx=\"23\" ry=\"23\"/>\n",
"<text text-anchor=\"middle\" x=\"65.2\" y=\"-173.05\" font-family=\"Times,serif\" font-size=\"14.00\">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=\"black\" d=\"M117.75,-114.36C108.69,-124.95 95.81,-139.99 85.07,-152.53\"/>\n",
"<ellipse fill=\"black\" stroke=\"black\" cx=\"82.29\" cy=\"-155.79\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- o1 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>o1</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"black\" points=\"150.2,-235.5 194.59,-270 105.8,-270 150.2,-235.5\"/>\n",
"<text text-anchor=\"middle\" x=\"150.2\" y=\"-254.8\" font-family=\"Times,serif\" font-size=\"14.00\">o1</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=\"black\" d=\"M133.55,-117.85C139.22,-141.22 148.58,-185.13 150.01,-225.36\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"146.51,-225.56 150.2,-235.5 153.51,-225.43 146.51,-225.56\"/>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"65.2\" cy=\"-100\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"65.2\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\">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=\"black\" d=\"M65.2,-118.34C65.2,-126.54 65.2,-136.58 65.2,-145.95\"/>\n",
"<ellipse fill=\"black\" stroke=\"black\" cx=\"65.2\" cy=\"-149.95\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- o0 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>o0</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"black\" points=\"44.2,-235.5 88.59,-270 -0.2,-270 44.2,-235.5\"/>\n",
"<text text-anchor=\"middle\" x=\"44.2\" y=\"-254.8\" font-family=\"Times,serif\" font-size=\"14.00\">o0</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=\"black\" d=\"M54.45,-196.9C50.57,-205.12 46.74,-215.16 45.07,-225.34\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"41.57,-225.23 44.2,-235.5 48.54,-225.83 41.57,-225.23\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"black\" points=\"44.2,-46 5.2,-11.5 83.19,-11.5 44.2,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"44.2\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\">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=\"black\" d=\"M56.74,-35.07C70.27,-47 92.03,-66.21 108.18,-80.46\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"106.23,-83.4 116.04,-87.39 110.86,-78.15 106.23,-83.4\"/>\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=\"black\" d=\"M49.17,-41.77C51.92,-51.58 55.37,-63.89 58.36,-74.59\"/>\n",
"<ellipse fill=\"black\" stroke=\"black\" cx=\"59.46\" cy=\"-78.53\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"black\" points=\"140.2,-46 101.2,-11.5 179.19,-11.5 140.2,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"140.2\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\">i1</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=\"black\" d=\"M137.31,-43.71C136.05,-52.28 134.55,-62.48 133.19,-71.76\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"129.72,-71.32 131.73,-81.72 136.64,-72.34 129.72,-71.32\"/>\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=\"black\" d=\"M128.48,-35.72C116.36,-47.83 97.3,-66.9 83.26,-80.94\"/>\n",
"<ellipse fill=\"black\" stroke=\"black\" cx=\"80.41\" cy=\"-83.79\" 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 0x7f6c00530750> >"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"this_aig = spot.aiger_circuit(aag_txt)\n",
"display(this_aig)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "000f3948",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"aag 5 2 0 2 3\n",
"2\n",
"4\n",
"10\n",
"6\n",
"6 2 4\n",
"8 3 5\n",
"10 7 9\n",
"i0 i0\n",
"i1 i1\n",
"o0 o0\n",
"o1 o1\n"
]
}
],
"source": [
"print(this_aig.to_str())"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "60e8b21a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"((2, 4), (3, 5), (7, 9))\n"
]
}
],
"source": [
"print(this_aig.gates())"
]
},
{
"cell_type": "markdown",
"id": "2213a2a2",
"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,
"id": "f5d49a9e",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"535pt\" height=\"115pt\"\n",
" viewBox=\"0.00 0.00 535.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=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-111 531,-111 531,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"260.5\" y=\"-91.8\" font-family=\"Lato\" font-size=\"14.00\">t</text>\n",
"<text text-anchor=\"start\" x=\"252.5\" y=\"-76.8\" font-family=\"Lato\" font-size=\"14.00\">[all]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"263.5\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"263.5\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M208.65,-18C210.29,-18 224.65,-18 238.13,-18\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"245.44,-18 238.44,-21.15 241.94,-18 238.44,-18 238.44,-18 238.44,-18 241.94,-18 238.44,-14.85 245.44,-18 245.44,-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=\"black\" d=\"M257.12,-35.04C255.82,-44.86 257.95,-54 263.5,-54 267.67,-54 269.9,-48.86 270.21,-42.14\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"269.88,-35.04 273.35,-41.88 270.04,-38.53 270.21,-42.03 270.21,-42.03 270.21,-42.03 270.04,-38.53 267.06,-42.18 269.88,-35.04 269.88,-35.04\"/>\n",
"<text text-anchor=\"start\" x=\"0\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\">(!i0 &amp; !i1 &amp; !o0 &amp; !o1) | (!i0 &amp; i1 &amp; o0 &amp; !o1) | (i0 &amp; !i1 &amp; o0 &amp; !o1) | (i0 &amp; i1 &amp; !o0 &amp; o1)</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6c003c2300> >"
]
},
"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.9.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}