spot/tests/python/synthesis.ipynb
Alexandre Duret-Lutz b36cee06a1 adjust to Swig 4.1.0
* python/spot/__init__.py: Add flatnested versions of some static
methods.
* spot/twa/acc.hh: Hide && version of & and |, causing trouble
to swig.
* tests/python/_synthesis.ipynb, tests/python/synthesis.ipynb:
Upgrade expected type names.
* tests/python/ipnbdoctest.py: Adjust for difference between 4.0 and
4.1.
2022-11-10 17:08:30 +01:00

4680 lines
342 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

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

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "4f84fa79",
"metadata": {},
"outputs": [],
"source": [
"import spot\n",
"spot.setup()\n",
"from spot.jupyter import display_inline"
]
},
{
"cell_type": "markdown",
"id": "4ad017a0",
"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 represents 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 controllable, so only job is to decide what output signal to produce.\n",
"\n",
"# Reactive synthesis in four steps\n",
"\n",
"A strategy/control circuit can be derived more conveniently from an LTL/PSL specification.\n",
"The process is decomposed in three steps:\n",
"- Creating the game\n",
"- Solving the game\n",
"- Simplifying the winnning strategy\n",
"- Building the circuit from 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 controllable 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": "e333be09",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"game has 29 states and 55 edges\n",
"output propositions are: o0\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"729pt\" height=\"350pt\"\n",
" viewBox=\"0.00 0.00 729.00 350.11\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(0.489 0.489) rotate(0) translate(4 712)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-712 1486.8756,-712 1486.8756,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"718.9378\" y=\"-693.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Fin(</text>\n",
"<text text-anchor=\"start\" x=\"743.9378\" y=\"-693.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"759.9378\" y=\"-693.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)</text>\n",
"<text text-anchor=\"start\" x=\"708.9378\" y=\"-679.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[co&#45;Büchi]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-83\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-79.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-83C4.178,-83 17.9448,-83 30.9241,-83\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-83 30.9808,-86.1501 34.4807,-83 30.9807,-83.0001 30.9807,-83.0001 30.9807,-83.0001 34.4807,-83 30.9807,-79.8501 37.9807,-83 37.9807,-83\"/>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>10</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"190.3322,-182 160.1669,-164 190.3322,-146 220.4975,-164 190.3322,-182\"/>\n",
"<text text-anchor=\"middle\" x=\"190.3322\" y=\"-160.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">10</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;10 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M67.5776,-97.2895C74.1594,-104.7544 82.8904,-113.6342 92,-120 114.3131,-135.5923 143.0392,-147.6774 163.6738,-155.2033\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"170.3404,-157.5792 162.6891,-158.1964 167.0435,-156.4042 163.7466,-155.2292 163.7466,-155.2292 163.7466,-155.2292 167.0435,-156.4042 164.8041,-152.262 170.3404,-157.5792 170.3404,-157.5792\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-149.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 11 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>11</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"268.9966,-78 238.8313,-60 268.9966,-42 299.1619,-60 268.9966,-78\"/>\n",
"<text text-anchor=\"middle\" x=\"268.9966\" y=\"-56.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">11</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;11 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M73.9087,-79.7636C79.6722,-78.7895 86.0946,-77.7748 92,-77 141.435,-70.5143 198.9444,-65.4456 234.6626,-62.5875\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"241.943,-62.0115 235.2133,-65.7039 238.4539,-62.2876 234.9648,-62.5637 234.9648,-62.5637 234.9648,-62.5637 238.4539,-62.2876 234.7163,-59.4235 241.943,-62.0115 241.943,-62.0115\"/>\n",
"<text text-anchor=\"start\" x=\"94\" y=\"-80.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 12 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>12</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"401.6609,-124 371.4956,-106 401.6609,-88 431.8262,-106 401.6609,-124\"/>\n",
"<text text-anchor=\"middle\" x=\"401.6609\" y=\"-102.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">12</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;12 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>0&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M73.4379,-88.1045C79.2879,-89.6167 85.8803,-91.1059 92,-92 190.0468,-106.3252 307.2443,-107.2862 365.3247,-106.6966\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"372.4465,-106.6134 365.4838,-109.845 368.9467,-106.6543 365.447,-106.6953 365.447,-106.6953 365.447,-106.6953 368.9467,-106.6543 365.4101,-103.5455 372.4465,-106.6134 372.4465,-106.6134\"/>\n",
"<text text-anchor=\"start\" x=\"167.3322\" y=\"-107.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 13 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>13</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"558.9897,-36 528.8244,-18 558.9897,0 589.155,-18 558.9897,-36\"/>\n",
"<text text-anchor=\"middle\" x=\"558.9897\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">13</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;13 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>0&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M69.8609,-71.2614C93.142,-52.7852 142.2825,-19 190.3322,-19 190.3322,-19 190.3322,-19 401.6609,-19 442.7528,-19 489.8806,-18.6547 521.7596,-18.3699\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"529.1218,-18.3027 522.1508,-21.5165 525.6219,-18.3347 522.1221,-18.3667 522.1221,-18.3667 522.1221,-18.3667 525.6219,-18.3347 522.0933,-15.2168 529.1218,-18.3027 529.1218,-18.3027\"/>\n",
"<text text-anchor=\"start\" x=\"247.4966\" y=\"-22.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node25\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"335.3288\" cy=\"-203\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"335.3288\" y=\"-199.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">8</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;8 -->\n",
"<g id=\"edge32\" class=\"edge\">\n",
"<title>10&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M211.4159,-169.6709C237.8048,-176.7688 282.9181,-188.903 310.8185,-196.4074\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"317.8602,-198.3014 310.2822,-199.5251 314.4803,-197.3923 311.1004,-196.4832 311.1004,-196.4832 311.1004,-196.4832 314.4803,-197.3923 311.9187,-193.4413 317.8602,-198.3014 317.8602,-198.3014\"/>\n",
"<text text-anchor=\"middle\" x=\"268.9966\" y=\"-195.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node23\" class=\"node\">\n",
"<title>7</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"864.9863\" cy=\"-102\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"864.9863\" y=\"-98.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">7</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;7 -->\n",
"<g id=\"edge33\" class=\"edge\">\n",
"<title>11&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M296.9985,-61.474C378.9148,-65.8778 625.1675,-79.7698 828.9863,-98 832.5741,-98.3209 836.3587,-98.6985 840.0724,-99.0913\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"847.0562,-99.8545 839.7554,-102.2253 843.5769,-99.4742 840.0977,-99.0939 840.0977,-99.0939 840.0977,-99.0939 843.5769,-99.4742 840.4399,-95.9626 847.0562,-99.8545 847.0562,-99.8545\"/>\n",
"<text text-anchor=\"middle\" x=\"558.9897\" y=\"-83.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 9 -->\n",
"<g id=\"node27\" class=\"node\">\n",
"<title>9</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"625.3219\" cy=\"-280\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"625.3219\" y=\"-276.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">9</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;9 -->\n",
"<g id=\"edge34\" class=\"edge\">\n",
"<title>12&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M430.3134,-107.0371C471.1686,-110.07 546.0006,-121.6253 589.3219,-165 601.9969,-177.6906 613.8432,-224.9736 620.2845,-254.8155\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"621.8029,-261.995 617.2726,-255.7983 621.0787,-258.5708 620.3545,-255.1465 620.3545,-255.1465 620.3545,-255.1465 621.0787,-258.5708 623.4363,-254.4947 621.8029,-261.995 621.8029,-261.995\"/>\n",
"<text text-anchor=\"middle\" x=\"480.3253\" y=\"-124.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node17\" class=\"node\">\n",
"<title>5</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"1104.6507\" cy=\"-52\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1104.6507\" y=\"-48.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">5</text>\n",
"</g>\n",
"<!-- 13&#45;&gt;5 -->\n",
"<g id=\"edge35\" class=\"edge\">\n",
"<title>13&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M585.2972,-15.3805C611.024,-13.0474 651.3251,-10 686.3219,-10 686.3219,-10 686.3219,-10 999.3185,-10 1030.3624,-10 1063.1269,-25.9354 1083.7138,-38.1749\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1089.6965,-41.833 1082.0811,-40.8688 1086.7104,-40.0072 1083.7244,-38.1813 1083.7244,-38.1813 1083.7244,-38.1813 1086.7104,-40.0072 1085.3676,-35.4939 1089.6965,-41.833 1089.6965,-41.833\"/>\n",
"<text text-anchor=\"middle\" x=\"818.4863\" y=\"-13.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"1104.6507\" cy=\"-435\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1104.6507\" y=\"-431.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 14 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>14</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"1238.9828,-571 1208.8175,-553 1238.9828,-535 1269.1481,-553 1238.9828,-571\"/>\n",
"<text text-anchor=\"middle\" x=\"1238.9828\" y=\"-549.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">14</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;14 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>1&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1106.3271,-453.1143C1109.3397,-474.8984 1117.6884,-511.0198 1140.6507,-531 1150.3799,-539.4657 1181.5214,-545.4776 1206.1826,-549.054\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1213.2694,-550.042 1205.9015,-552.1952 1209.8029,-549.5587 1206.3364,-549.0754 1206.3364,-549.0754 1206.3364,-549.0754 1209.8029,-549.5587 1206.7714,-545.9556 1213.2694,-550.042 1213.2694,-550.042\"/>\n",
"<text text-anchor=\"start\" x=\"1159.1507\" y=\"-549.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0</text>\n",
"</g>\n",
"<!-- 16 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>16</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"1238.9828,-495 1208.8175,-477 1238.9828,-459 1269.1481,-477 1238.9828,-495\"/>\n",
"<text text-anchor=\"middle\" x=\"1238.9828\" y=\"-473.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">16</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;16 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>1&#45;&gt;16</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1108.1744,-417.0975C1112.5734,-400.1037 1121.9258,-375.5001 1140.6507,-364 1159.5867,-352.3702 1172.103,-351.7602 1190.6507,-364 1220.4403,-383.6586 1231.9354,-425.8719 1236.3251,-452.7717\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1237.3841,-459.9213 1233.2424,-453.4584 1236.8713,-456.459 1236.3584,-452.9968 1236.3584,-452.9968 1236.3584,-452.9968 1236.8713,-456.459 1239.4744,-452.5352 1237.3841,-459.9213 1237.3841,-459.9213\"/>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-367.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0</text>\n",
"</g>\n",
"<!-- 15 -->\n",
"<g id=\"node30\" class=\"node\">\n",
"<title>15</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"1343.7631\" cy=\"-552\" rx=\"21.3963\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1343.7631\" y=\"-548.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">15</text>\n",
"</g>\n",
"<!-- 14&#45;&gt;15 -->\n",
"<g id=\"edge36\" class=\"edge\">\n",
"<title>14&#45;&gt;15</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1264.4257,-556.0255C1276.5119,-557.087 1291.1594,-557.8304 1304.315,-557 1307.9257,-556.7721 1311.7112,-556.428 1315.4486,-556.0247\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1322.5182,-555.1915 1315.935,-559.1393 1319.0422,-555.6012 1315.5663,-556.011 1315.5663,-556.011 1315.5663,-556.011 1319.0422,-555.6012 1315.1975,-552.8826 1322.5182,-555.1915 1322.5182,-555.1915\"/>\n",
"<text text-anchor=\"start\" x=\"1291.315\" y=\"-575.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"1287.815\" y=\"-560.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 16&#45;&gt;1 -->\n",
"<g id=\"edge38\" class=\"edge\">\n",
"<title>16&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1214.5753,-473.5411C1194.3263,-470.2019 1165.012,-464.27 1140.6507,-455 1135.7809,-453.147 1130.7664,-450.7282 1126.0842,-448.216\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1119.9501,-444.7766 1127.5964,-445.4525 1123.0029,-446.4884 1126.0558,-448.2001 1126.0558,-448.2001 1126.0558,-448.2001 1123.0029,-446.4884 1124.5152,-450.9477 1119.9501,-444.7766 1119.9501,-444.7766\"/>\n",
"<text text-anchor=\"middle\" x=\"1165.6507\" y=\"-471.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"1104.6507\" cy=\"-275\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1104.6507\" y=\"-271.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;14 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>2&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1107.1127,-292.9742C1112.089,-326.9028 1124.2788,-398.6309 1140.6507,-417 1156.4679,-434.7469 1174.7407,-418.3363 1190.6507,-436 1211.5738,-459.2294 1196.2884,-475.2849 1208.6507,-504 1213.1712,-514.5005 1219.6993,-525.3894 1225.5422,-534.2279\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1229.6371,-540.2666 1223.1012,-536.2409 1227.6727,-537.3698 1225.7083,-534.473 1225.7083,-534.473 1225.7083,-534.473 1227.6727,-537.3698 1228.3154,-532.705 1229.6371,-540.2666 1229.6371,-540.2666\"/>\n",
"<text text-anchor=\"start\" x=\"1159.1507\" y=\"-439.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"</g>\n",
"<!-- 17 -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>17</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"1238.9828,-297 1208.8175,-279 1238.9828,-261 1269.1481,-279 1238.9828,-297\"/>\n",
"<text text-anchor=\"middle\" x=\"1238.9828\" y=\"-275.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">17</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;17 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>2&#45;&gt;17</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1117.951,-262.8503C1124.3282,-257.8336 1132.3726,-252.5924 1140.6507,-250 1161.8573,-243.3588 1169.2348,-244.068 1190.6507,-250 1201.1229,-252.9007 1211.6042,-258.7416 1220.1162,-264.4261\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1225.938,-268.4934 1218.3956,-267.0666 1223.0688,-266.4889 1220.1997,-264.4844 1220.1997,-264.4844 1220.1997,-264.4844 1223.0688,-266.4889 1222.0037,-261.9021 1225.938,-268.4934 1225.938,-268.4934\"/>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"</g>\n",
"<!-- 17&#45;&gt;2 -->\n",
"<g id=\"edge39\" class=\"edge\">\n",
"<title>17&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1210.1201,-278.1406C1186.2117,-277.4286 1152.577,-276.4271 1129.7668,-275.7479\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1122.7673,-275.5395 1129.858,-272.5993 1126.2657,-275.6437 1129.7642,-275.7479 1129.7642,-275.7479 1129.7642,-275.7479 1126.2657,-275.6437 1129.6704,-278.8965 1122.7673,-275.5395 1122.7673,-275.5395\"/>\n",
"<text text-anchor=\"middle\" x=\"1165.6507\" y=\"-280.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"1104.6507\" cy=\"-553\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1104.6507\" y=\"-549.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;14 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>3&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1120.6509,-561.8317C1126.7251,-564.7176 1133.8264,-567.5518 1140.6507,-569 1162.3888,-573.6131 1168.7117,-572.537 1190.6507,-569 1198.5342,-567.729 1206.8728,-565.3624 1214.3635,-562.8318\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1220.967,-560.4884 1215.4236,-565.7982 1217.6685,-561.659 1214.3701,-562.8296 1214.3701,-562.8296 1214.3701,-562.8296 1217.6685,-561.659 1213.3166,-559.861 1220.967,-560.4884 1220.967,-560.4884\"/>\n",
"<text text-anchor=\"start\" x=\"1144.1507\" y=\"-575.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;16 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>3&#45;&gt;16</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1116.1204,-538.5525C1122.6706,-531.0414 1131.4058,-522.1677 1140.6507,-516 1162.3797,-501.5033 1190.3169,-491.0766 1210.8567,-484.6722\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1217.791,-482.5745 1212.003,-487.6164 1214.441,-483.5879 1211.0909,-484.6014 1211.0909,-484.6014 1211.0909,-484.6014 1214.441,-483.5879 1210.1788,-481.5863 1217.791,-482.5745 1217.791,-482.5745\"/>\n",
"<text text-anchor=\"start\" x=\"1142.6507\" y=\"-519.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;17 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>3&#45;&gt;17</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1107.9998,-535.1337C1115.1968,-497.4314 1132.1702,-412.3414 1140.6507,-402 1156.1612,-383.0859 1173.1902,-396.1305 1190.6507,-379 1212.6342,-357.4319 1225.9998,-323.8525 1232.944,-301.6442\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1234.9757,-294.8629 1235.9841,-302.4725 1233.9712,-298.2156 1232.9666,-301.5684 1232.9666,-301.5684 1232.9666,-301.5684 1233.9712,-298.2156 1229.9491,-300.6643 1234.9757,-294.8629 1234.9757,-294.8629\"/>\n",
"<text text-anchor=\"start\" x=\"1142.6507\" y=\"-405.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 18 -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>18</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"1238.9828,-666 1208.8175,-648 1238.9828,-630 1269.1481,-648 1238.9828,-666\"/>\n",
"<text text-anchor=\"middle\" x=\"1238.9828\" y=\"-644.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">18</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;18 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>3&#45;&gt;18</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1105.994,-571.1024C1108.6708,-592.7277 1116.6811,-628.0986 1140.6507,-645 1160.7535,-659.1749 1189.3589,-658.3504 1210.5379,-654.9168\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1217.6933,-653.6138 1211.3709,-657.967 1214.2499,-654.2409 1210.8065,-654.8679 1210.8065,-654.8679 1210.8065,-654.8679 1214.2499,-654.2409 1210.2422,-651.7689 1217.6933,-653.6138 1217.6933,-653.6138\"/>\n",
"<text text-anchor=\"start\" x=\"1140.6507\" y=\"-660.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 18&#45;&gt;3 -->\n",
"<g id=\"edge40\" class=\"edge\">\n",
"<title>18&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1222.057,-640.0665C1201.6946,-630.1118 1166.9673,-611.8014 1140.6507,-591 1133.6326,-585.4527 1126.6889,-578.553 1120.8,-572.1611\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1116.123,-566.9522 1123.1435,-570.0562 1118.4613,-569.5565 1120.7997,-572.1607 1120.7997,-572.1607 1120.7997,-572.1607 1118.4613,-569.5565 1118.4558,-574.2653 1116.123,-566.9522 1116.123,-566.9522\"/>\n",
"<text text-anchor=\"middle\" x=\"1165.6507\" y=\"-626.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node14\" class=\"node\">\n",
"<title>4</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"1343.7631\" cy=\"-216\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1343.7631\" y=\"-212.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">4</text>\n",
"</g>\n",
"<!-- 19 -->\n",
"<g id=\"node15\" class=\"node\">\n",
"<title>19</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"1452.5434,-272 1422.3781,-254 1452.5434,-236 1482.7087,-254 1452.5434,-272\"/>\n",
"<text text-anchor=\"middle\" x=\"1452.5434\" y=\"-250.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">19</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;19 -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>4&#45;&gt;19</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1361.7334,-213.4067C1374.035,-212.32 1390.5319,-212.2386 1404.2112,-217 1416.0502,-221.1208 1427.2952,-229.3673 1435.9547,-237.0311\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1441.5121,-242.1858 1434.2377,-239.735 1438.946,-239.8057 1436.3799,-237.4255 1436.3799,-237.4255 1436.3799,-237.4255 1438.946,-239.8057 1438.522,-235.116 1441.5121,-242.1858 1441.5121,-242.1858\"/>\n",
"<text text-anchor=\"start\" x=\"1385.7112\" y=\"-220.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"</g>\n",
"<!-- 20 -->\n",
"<g id=\"node16\" class=\"node\">\n",
"<title>20</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"999.3185,-108 969.1532,-90 999.3185,-72 1029.4838,-90 999.3185,-108\"/>\n",
"<text text-anchor=\"middle\" x=\"999.3185\" y=\"-86.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">20</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;20 -->\n",
"<g id=\"edge15\" class=\"edge\">\n",
"<title>4&#45;&gt;20</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1326.6686,-209.6221C1311.6149,-204.0484 1289.0739,-195.8059 1269.315,-189 1212.4407,-169.4097 1197.169,-167.5949 1140.6507,-147 1099.1723,-131.8856 1051.7217,-112.2585 1023.7056,-100.4226\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1017.0171,-97.5888 1024.6914,-97.4192 1020.2398,-98.9542 1023.4625,-100.3196 1023.4625,-100.3196 1023.4625,-100.3196 1020.2398,-98.9542 1022.2336,-103.22 1017.0171,-97.5888 1017.0171,-97.5888\"/>\n",
"<text text-anchor=\"start\" x=\"1159.1507\" y=\"-166.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"</g>\n",
"<!-- 19&#45;&gt;4 -->\n",
"<g id=\"edge41\" class=\"edge\">\n",
"<title>19&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1432.0768,-247.9648C1418.1969,-243.7598 1399.485,-237.8721 1383.2112,-232 1378.0495,-230.1375 1372.5635,-228.0094 1367.3756,-225.9265\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1360.5443,-223.1434 1368.2154,-222.8673 1363.7856,-224.4639 1367.0269,-225.7845 1367.0269,-225.7845 1367.0269,-225.7845 1363.7856,-224.4639 1365.8384,-228.7017 1360.5443,-223.1434 1360.5443,-223.1434\"/>\n",
"<text text-anchor=\"start\" x=\"1383.2112\" y=\"-242.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 20&#45;&gt;5 -->\n",
"<g id=\"edge42\" class=\"edge\">\n",
"<title>20&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1016.5639,-81.907C1025.6969,-77.7745 1037.1653,-72.8259 1047.6507,-69 1058.111,-65.1833 1069.872,-61.5658 1079.9822,-58.6568\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1087.01,-56.6711 1081.1302,-61.6058 1083.6418,-57.6228 1080.2737,-58.5745 1080.2737,-58.5745 1080.2737,-58.5745 1083.6418,-57.6228 1079.4172,-55.5432 1087.01,-56.6711 1087.01,-56.6711\"/>\n",
"<text text-anchor=\"start\" x=\"1047.6507\" y=\"-72.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 21 -->\n",
"<g id=\"node18\" class=\"node\">\n",
"<title>21</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"1238.9828,-234 1208.8175,-216 1238.9828,-198 1269.1481,-216 1238.9828,-234\"/>\n",
"<text text-anchor=\"middle\" x=\"1238.9828\" y=\"-212.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">21</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;21 -->\n",
"<g id=\"edge16\" class=\"edge\">\n",
"<title>5&#45;&gt;21</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1118.9848,-63.0679C1137.1382,-77.5613 1168.6933,-104.3886 1190.6507,-132 1206.4595,-151.8797 1220.4305,-177.5234 1229.2339,-195.2203\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1232.4587,-201.8156 1226.554,-196.9107 1230.9213,-198.6713 1229.3838,-195.527 1229.3838,-195.527 1229.3838,-195.527 1230.9213,-198.6713 1232.2137,-194.1434 1232.4587,-201.8156 1232.4587,-201.8156\"/>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-135.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"</g>\n",
"<!-- 22 -->\n",
"<g id=\"node19\" class=\"node\">\n",
"<title>22</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"1238.9828,-86 1208.8175,-68 1238.9828,-50 1269.1481,-68 1238.9828,-86\"/>\n",
"<text text-anchor=\"middle\" x=\"1238.9828\" y=\"-64.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">22</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;22 -->\n",
"<g id=\"edge17\" class=\"edge\">\n",
"<title>5&#45;&gt;22</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1122.7673,-54.1578C1144.1075,-56.6996 1179.9727,-60.9714 1206.2274,-64.0986\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1213.3577,-64.9478 1206.0342,-67.2478 1209.8823,-64.5339 1206.4068,-64.1199 1206.4068,-64.1199 1206.4068,-64.1199 1209.8823,-64.5339 1206.7794,-60.992 1213.3577,-64.9478 1213.3577,-64.9478\"/>\n",
"<text text-anchor=\"start\" x=\"1159.1507\" y=\"-65.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"</g>\n",
"<!-- 21&#45;&gt;4 -->\n",
"<g id=\"edge43\" class=\"edge\">\n",
"<title>21&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1269.2896,-216C1284.8333,-216 1303.5513,-216 1318.3333,-216\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1325.6669,-216 1318.6669,-219.1501 1322.1669,-216 1318.6669,-216.0001 1318.6669,-216.0001 1318.6669,-216.0001 1322.1669,-216 1318.6668,-212.8501 1325.6669,-216 1325.6669,-216\"/>\n",
"<text text-anchor=\"start\" x=\"1287.315\" y=\"-219.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 22&#45;&gt;5 -->\n",
"<g id=\"edge44\" class=\"edge\">\n",
"<title>22&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1226.3954,-57.4384C1217.1554,-50.4079 1203.9472,-41.7911 1190.6507,-38 1169.2801,-31.9068 1162.4919,-33.9026 1140.6507,-38 1136.4283,-38.7921 1132.0648,-40.0645 1127.8952,-41.5272\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1121.1202,-44.1172 1126.5339,-38.6752 1124.3895,-42.8674 1127.6587,-41.6175 1127.6587,-41.6175 1127.6587,-41.6175 1124.3895,-42.8674 1128.7836,-44.5598 1121.1202,-44.1172 1121.1202,-44.1172\"/>\n",
"<text text-anchor=\"start\" x=\"1157.1507\" y=\"-41.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node20\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"864.9863\" cy=\"-350\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"864.9863\" y=\"-346.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">6</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;19 -->\n",
"<g id=\"edge18\" class=\"edge\">\n",
"<title>6&#45;&gt;19</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M882.9584,-346.8337C922.758,-340.1066 1021.4007,-325 1104.6507,-325 1104.6507,-325 1104.6507,-325 1343.7631,-325 1382.6833,-325 1418.5645,-292.7336 1437.8166,-271.7046\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1442.5697,-266.3673 1440.2667,-273.6898 1440.242,-268.9811 1437.9143,-271.5948 1437.9143,-271.5948 1437.9143,-271.5948 1440.242,-268.9811 1435.5619,-269.4999 1442.5697,-266.3673 1442.5697,-266.3673\"/>\n",
"<text text-anchor=\"start\" x=\"1142.6507\" y=\"-328.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;20 -->\n",
"<g id=\"edge19\" class=\"edge\">\n",
"<title>6&#45;&gt;20</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M867.7653,-331.9842C873.147,-299.1037 885.8078,-231.0824 900.9863,-213 916.7126,-194.2649 933.5258,-207.1305 950.9863,-190 972.9699,-168.4319 986.3355,-134.8525 993.2796,-112.6442\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"995.3113,-105.8629 996.3197,-113.4725 994.3068,-109.2156 993.3022,-112.5684 993.3022,-112.5684 993.3022,-112.5684 994.3068,-109.2156 990.2848,-111.6643 995.3113,-105.8629 995.3113,-105.8629\"/>\n",
"<text text-anchor=\"start\" x=\"904.4863\" y=\"-216.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 23 -->\n",
"<g id=\"node21\" class=\"node\">\n",
"<title>23</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"999.3185,-407 969.1532,-389 999.3185,-371 1029.4838,-389 999.3185,-407\"/>\n",
"<text text-anchor=\"middle\" x=\"999.3185\" y=\"-385.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">23</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;23 -->\n",
"<g id=\"edge20\" class=\"edge\">\n",
"<title>6&#45;&gt;23</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M883.2618,-349.9099C901.014,-350.3315 928.5039,-352.3471 950.9863,-360 961.0257,-363.4174 971.2269,-369.1386 979.6536,-374.6006\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"985.7197,-378.6845 978.1538,-377.3882 982.8163,-376.7298 979.9129,-374.7752 979.9129,-374.7752 979.9129,-374.7752 982.8163,-376.7298 981.6721,-372.1622 985.7197,-378.6845 985.7197,-378.6845\"/>\n",
"<text text-anchor=\"start\" x=\"900.9863\" y=\"-363.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 24 -->\n",
"<g id=\"node22\" class=\"node\">\n",
"<title>24</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"480.3253,-298 450.16,-280 480.3253,-262 510.4906,-280 480.3253,-298\"/>\n",
"<text text-anchor=\"middle\" x=\"480.3253\" y=\"-276.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">24</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;24 -->\n",
"<g id=\"edge21\" class=\"edge\">\n",
"<title>6&#45;&gt;24</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M848.7864,-357.9816C833.9119,-364.8364 811.0495,-374.1964 789.9863,-378 733.629,-388.177 716.293,-387.0587 661.3219,-371 599.6044,-352.9705 533.7331,-314.2852 501.1137,-293.6395\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"495.0443,-289.7623 502.6392,-290.8761 497.9939,-291.6465 500.9434,-293.5307 500.9434,-293.5307 500.9434,-293.5307 497.9939,-291.6465 499.2477,-296.1853 495.0443,-289.7623 495.0443,-289.7623\"/>\n",
"<text text-anchor=\"start\" x=\"663.3219\" y=\"-385.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 23&#45;&gt;1 -->\n",
"<g id=\"edge45\" class=\"edge\">\n",
"<title>23&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1023.9683,-392.3438C1037.6389,-394.8511 1054.6532,-399.0774 1068.6507,-406 1074.779,-409.0308 1080.8151,-413.2558 1086.1417,-417.5445\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1091.6141,-422.1698 1084.2344,-420.0569 1088.941,-419.9105 1086.2679,-417.6511 1086.2679,-417.6511 1086.2679,-417.6511 1088.941,-419.9105 1088.3013,-415.2453 1091.6141,-422.1698 1091.6141,-422.1698\"/>\n",
"<text text-anchor=\"start\" x=\"1049.6507\" y=\"-409.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 23&#45;&gt;6 -->\n",
"<g id=\"edge46\" class=\"edge\">\n",
"<title>23&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M970.0202,-388.3629C949.9796,-387.087 923.1359,-383.6984 900.9863,-375 895.2847,-372.7609 889.6092,-369.458 884.5071,-365.9817\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"878.8139,-361.8745 886.3338,-363.4154 881.6524,-363.9223 884.4909,-365.97 884.4909,-365.97 884.4909,-365.97 881.6524,-363.9223 882.6479,-368.5246 878.8139,-361.8745 878.8139,-361.8745\"/>\n",
"<text text-anchor=\"start\" x=\"915.4863\" y=\"-389.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 24&#45;&gt;1 -->\n",
"<g id=\"edge47\" class=\"edge\">\n",
"<title>24&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M493.6577,-290.1498C499.3257,-294.877 505.7455,-300.8178 510.6575,-307 521.0504,-320.0805 519.7278,-325.8801 528.6575,-340 567.7158,-401.7601 552.2476,-473 625.3219,-473 625.3219,-473 625.3219,-473 999.3185,-473 1029.6661,-473 1062.1693,-458.8701 1082.9147,-447.8427\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1089.2194,-444.3933 1084.5904,-450.5166 1086.149,-446.0732 1083.0785,-447.7532 1083.0785,-447.7532 1083.0785,-447.7532 1086.149,-446.0732 1081.5665,-444.9897 1089.2194,-444.3933 1089.2194,-444.3933\"/>\n",
"<text text-anchor=\"start\" x=\"809.9863\" y=\"-476.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 24&#45;&gt;9 -->\n",
"<g id=\"edge48\" class=\"edge\">\n",
"<title>24&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M510.7214,-280C537.2118,-280 575.1792,-280 600.0389,-280\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"607.3059,-280 600.306,-283.1501 603.8059,-280 600.3059,-280.0001 600.3059,-280.0001 600.3059,-280.0001 603.8059,-280 600.3059,-276.8501 607.3059,-280 607.3059,-280\"/>\n",
"<text text-anchor=\"start\" x=\"548.4897\" y=\"-283.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;20 -->\n",
"<g id=\"edge22\" class=\"edge\">\n",
"<title>7&#45;&gt;20</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M883.1029,-100.3816C904.1813,-98.4987 939.4304,-95.3498 965.5923,-93.0128\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"972.711,-92.3769 966.0191,-96.1373 969.2249,-92.6883 965.7388,-92.9998 965.7388,-92.9998 965.7388,-92.9998 969.2249,-92.6883 965.4585,-89.8623 972.711,-92.3769 972.711,-92.3769\"/>\n",
"<text text-anchor=\"start\" x=\"919.4863\" y=\"-102.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"</g>\n",
"<!-- 25 -->\n",
"<g id=\"node24\" class=\"node\">\n",
"<title>25</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"759.6541,-180 729.4888,-162 759.6541,-144 789.8194,-162 759.6541,-180\"/>\n",
"<text text-anchor=\"middle\" x=\"759.6541\" y=\"-158.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">25</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;25 -->\n",
"<g id=\"edge23\" class=\"edge\">\n",
"<title>7&#45;&gt;25</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M846.8407,-100.2353C835.1478,-99.8833 819.9509,-100.9424 807.9863,-107 805.7515,-108.1314 787.942,-128.7248 774.5864,-144.3825\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"769.9046,-149.8826 772.0433,-142.5104 772.1732,-147.2174 774.4419,-144.5522 774.4419,-144.5522 774.4419,-144.5522 772.1732,-147.2174 776.8406,-146.594 769.9046,-149.8826 769.9046,-149.8826\"/>\n",
"<text text-anchor=\"start\" x=\"810.4863\" y=\"-110.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"</g>\n",
"<!-- 25&#45;&gt;2 -->\n",
"<g id=\"edge49\" class=\"edge\">\n",
"<title>25&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M784.9012,-158.945C822.2721,-155.3553 894.0285,-152.0619 950.9863,-171 1005.7796,-189.2184 1059.1784,-232.9124 1086.2719,-257.4742\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1091.6451,-262.4089 1084.3587,-259.994 1089.0673,-260.0414 1086.4895,-257.674 1086.4895,-257.674 1086.4895,-257.674 1089.0673,-260.0414 1088.6202,-255.3539 1091.6451,-262.4089 1091.6451,-262.4089\"/>\n",
"<text text-anchor=\"start\" x=\"917.4863\" y=\"-174.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 25&#45;&gt;7 -->\n",
"<g id=\"edge50\" class=\"edge\">\n",
"<title>25&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M775.1962,-153.1468C793.0629,-142.9694 822.5274,-126.1857 842.8018,-114.6369\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"849.0351,-111.0862 844.5118,-117.2881 845.9939,-112.8186 842.9526,-114.551 842.9526,-114.551 842.9526,-114.551 845.9939,-112.8186 841.3935,-111.8139 849.0351,-111.0862 849.0351,-111.0862\"/>\n",
"<text text-anchor=\"start\" x=\"807.9863\" y=\"-137.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;20 -->\n",
"<g id=\"edge24\" class=\"edge\">\n",
"<title>8&#45;&gt;20</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M352.0107,-195.9693C358.0351,-193.5754 364.9284,-191.0014 371.3288,-189 578.8119,-124.1213 631.098,-100.5096 846.9863,-75 889.9869,-69.919 939.9597,-77.3824 970.6099,-83.4801\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"977.5953,-84.9131 970.105,-86.592 974.1667,-84.2097 970.7381,-83.5063 970.7381,-83.5063 970.7381,-83.5063 974.1667,-84.2097 971.3712,-80.4205 977.5953,-84.9131 977.5953,-84.9131\"/>\n",
"<text text-anchor=\"start\" x=\"664.8219\" y=\"-107.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;24 -->\n",
"<g id=\"edge25\" class=\"edge\">\n",
"<title>8&#45;&gt;24</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M351.9535,-210.7599C371.378,-219.9401 404.3783,-235.8902 431.9931,-251 441.023,-255.9408 450.7922,-261.7174 459.1687,-266.8088\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"465.2675,-270.5435 457.6528,-269.5742 462.2827,-268.7157 459.2978,-266.8879 459.2978,-266.8879 459.2978,-266.8879 462.2827,-268.7157 460.9429,-264.2015 465.2675,-270.5435 465.2675,-270.5435\"/>\n",
"<text text-anchor=\"start\" x=\"378.6609\" y=\"-254.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;25 -->\n",
"<g id=\"edge26\" class=\"edge\">\n",
"<title>8&#45;&gt;25</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M353.2905,-201.2645C418.2024,-194.9924 641.271,-173.4386 726.3367,-165.2193\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"733.4156,-164.5353 726.751,-168.344 729.9318,-164.8719 726.448,-165.2086 726.448,-165.2086 726.448,-165.2086 729.9318,-164.8719 726.145,-162.0732 733.4156,-164.5353 733.4156,-164.5353\"/>\n",
"<text text-anchor=\"start\" x=\"535.9897\" y=\"-186.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 26 -->\n",
"<g id=\"node26\" class=\"node\">\n",
"<title>26</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"480.3253,-352 450.16,-334 480.3253,-316 510.4906,-334 480.3253,-352\"/>\n",
"<text text-anchor=\"middle\" x=\"480.3253\" y=\"-330.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">26</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;26 -->\n",
"<g id=\"edge27\" class=\"edge\">\n",
"<title>8&#45;&gt;26</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M341.57,-219.8909C347.435,-233.7958 357.4007,-253.2303 371.3288,-266 393.217,-286.0678 406.8634,-278.1789 431.9931,-294 438.1939,-297.9039 451.2275,-308.7533 462.1987,-318.1692\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"467.7009,-322.918 460.3435,-320.7289 465.0512,-320.6311 462.4016,-318.3443 462.4016,-318.3443 462.4016,-318.3443 465.0512,-320.6311 464.4598,-315.9596 467.7009,-322.918 467.7009,-322.918\"/>\n",
"<text text-anchor=\"start\" x=\"376.6609\" y=\"-297.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 26&#45;&gt;3 -->\n",
"<g id=\"edge51\" class=\"edge\">\n",
"<title>26&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M483.8575,-350.2032C495.215,-397.4914 535.422,-532 625.3219,-532 625.3219,-532 625.3219,-532 999.3185,-532 1027.6309,-532 1059.4122,-539.3873 1080.5878,-545.399\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1087.3422,-547.3724 1079.7397,-548.4329 1083.9827,-546.3908 1080.6231,-545.4093 1080.6231,-545.4093 1080.6231,-545.4093 1083.9827,-546.3908 1081.5065,-542.3857 1087.3422,-547.3724 1087.3422,-547.3724\"/>\n",
"<text text-anchor=\"start\" x=\"809.9863\" y=\"-535.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 26&#45;&gt;8 -->\n",
"<g id=\"edge52\" class=\"edge\">\n",
"<title>26&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M451.3391,-334.7481C427.0991,-333.8141 393.0873,-328.6464 371.3288,-309 359.2126,-298.06 347.496,-255.8337 340.8719,-228.0923\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"339.2214,-221.035 343.8828,-227.1337 340.0185,-224.443 340.8156,-227.8511 340.8156,-227.8511 340.8156,-227.8511 340.0185,-224.443 337.7483,-228.5684 339.2214,-221.035 339.2214,-221.035\"/>\n",
"<text text-anchor=\"start\" x=\"391.1609\" y=\"-336.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;21 -->\n",
"<g id=\"edge28\" class=\"edge\">\n",
"<title>9&#45;&gt;21</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M643.2644,-277.9808C649.0297,-277.3388 655.4446,-276.6317 661.3219,-276 868.5289,-253.7278 1117.7022,-228.3081 1206.0055,-219.3418\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1213.0668,-218.625 1206.4208,-222.4659 1209.5847,-218.9785 1206.1026,-219.332 1206.1026,-219.332 1206.1026,-219.332 1209.5847,-218.9785 1205.7845,-216.1981 1213.0668,-218.625 1213.0668,-218.625\"/>\n",
"<text text-anchor=\"start\" x=\"902.9863\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;22 -->\n",
"<g id=\"edge29\" class=\"edge\">\n",
"<title>9&#45;&gt;22</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M641.028,-271.0238C690.9254,-242.6775 845.7864,-156.0553 900.9863,-141 1025.4562,-107.0519 1074.6535,-178.4791 1190.6507,-122 1205.8707,-114.5893 1218.4429,-100.0521 1226.9464,-87.9264\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1231.0147,-81.8557 1229.7344,-89.4243 1229.0662,-84.7632 1227.1177,-87.6707 1227.1177,-87.6707 1227.1177,-87.6707 1229.0662,-84.7632 1224.501,-85.917 1231.0147,-81.8557 1231.0147,-81.8557\"/>\n",
"<text text-anchor=\"start\" x=\"904.4863\" y=\"-144.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 27 -->\n",
"<g id=\"node28\" class=\"node\">\n",
"<title>27</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"759.6541,-314 729.4888,-296 759.6541,-278 789.8194,-296 759.6541,-314\"/>\n",
"<text text-anchor=\"middle\" x=\"759.6541\" y=\"-292.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">27</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;27 -->\n",
"<g id=\"edge30\" class=\"edge\">\n",
"<title>9&#45;&gt;27</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M643.5408,-279.8115C661.0166,-279.8745 688.1016,-280.6112 711.3219,-284 718.1072,-284.9903 725.3273,-286.5188 732.0615,-288.1569\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"739.1345,-289.9573 731.5738,-291.2832 735.7427,-289.0939 732.3508,-288.2305 732.3508,-288.2305 732.3508,-288.2305 735.7427,-289.0939 733.1279,-285.1778 739.1345,-289.9573 739.1345,-289.9573\"/>\n",
"<text text-anchor=\"start\" x=\"661.3219\" y=\"-287.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 28 -->\n",
"<g id=\"node29\" class=\"node\">\n",
"<title>28</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"759.6541,-369 729.4888,-351 759.6541,-333 789.8194,-351 759.6541,-369\"/>\n",
"<text text-anchor=\"middle\" x=\"759.6541\" y=\"-347.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">28</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;28 -->\n",
"<g id=\"edge31\" class=\"edge\">\n",
"<title>9&#45;&gt;28</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M641.3543,-288.7009C647.5536,-292.0022 654.7309,-295.7478 661.3219,-299 683.2574,-309.8237 689.6912,-310.5793 711.3219,-322 720.5622,-326.8787 730.503,-332.733 738.9523,-337.9002\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"745.0864,-341.6901 737.4757,-340.6906 742.1089,-339.8505 739.1314,-338.0108 739.1314,-338.0108 739.1314,-338.0108 742.1089,-339.8505 740.787,-335.331 745.0864,-341.6901 745.0864,-341.6901\"/>\n",
"<text text-anchor=\"start\" x=\"663.3219\" y=\"-325.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 27&#45;&gt;1 -->\n",
"<g id=\"edge53\" class=\"edge\">\n",
"<title>27&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M787.2632,-297.5423C838.4208,-301.4776 949.9796,-315.1847 1029.6507,-362 1053.0908,-375.7736 1074.7514,-398.3841 1088.7052,-414.7963\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1093.4864,-420.5347 1086.5854,-417.1732 1091.2459,-417.8457 1089.0055,-415.1568 1089.0055,-415.1568 1089.0055,-415.1568 1091.2459,-417.8457 1091.4255,-413.1404 1093.4864,-420.5347 1093.4864,-420.5347\"/>\n",
"<text text-anchor=\"start\" x=\"915.4863\" y=\"-330.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 27&#45;&gt;6 -->\n",
"<g id=\"edge54\" class=\"edge\">\n",
"<title>27&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M776.1122,-304.4375C793.8908,-313.5519 822.3389,-328.1362 842.2473,-338.3425\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"848.6437,-341.6217 840.9775,-341.2314 845.5291,-340.025 842.4146,-338.4283 842.4146,-338.4283 842.4146,-338.4283 845.5291,-340.025 843.8516,-335.6251 848.6437,-341.6217 848.6437,-341.6217\"/>\n",
"<text text-anchor=\"start\" x=\"809.9863\" y=\"-333.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 28&#45;&gt;1 -->\n",
"<g id=\"edge55\" class=\"edge\">\n",
"<title>28&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M777.1162,-359.0101C803.4335,-370.7724 855.074,-392.6551 900.9863,-405 930.5513,-412.9495 938.7139,-411.4322 968.9863,-416 1007.4633,-421.8058 1052.1738,-427.9516 1079.4324,-431.6311\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1086.6383,-432.6012 1079.2806,-434.789 1083.1696,-432.1342 1079.7009,-431.6671 1079.7009,-431.6671 1079.7009,-431.6671 1083.1696,-432.1342 1080.1212,-428.5453 1086.6383,-432.6012 1086.6383,-432.6012\"/>\n",
"<text text-anchor=\"start\" x=\"915.4863\" y=\"-416.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 28&#45;&gt;9 -->\n",
"<g id=\"edge56\" class=\"edge\">\n",
"<title>28&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M732.4971,-353.0441C711.4678,-353.3098 682.4568,-350.6799 661.3219,-337 649.1351,-329.1119 640.3066,-315.4872 634.4431,-303.5364\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"631.4881,-297.1163 637.2764,-302.158 632.9515,-300.2957 634.4149,-303.4751 634.4149,-303.4751 634.4149,-303.4751 632.9515,-300.2957 631.5535,-304.7922 631.4881,-297.1163 631.4881,-297.1163\"/>\n",
"<text text-anchor=\"start\" x=\"677.8219\" y=\"-355.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 15&#45;&gt;14 -->\n",
"<g id=\"edge37\" class=\"edge\">\n",
"<title>15&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1329.6795,-538.2243C1322.6619,-532.3157 1313.684,-526.0732 1304.315,-523 1297.1358,-520.6451 1294.581,-520.9283 1287.315,-523 1276.6155,-526.0507 1265.9731,-532.226 1257.4096,-538.1852\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1251.5703,-542.4384 1255.3739,-535.7709 1254.3994,-540.3777 1257.2285,-538.3171 1257.2285,-538.3171 1257.2285,-538.3171 1254.3994,-540.3777 1259.0831,-540.8632 1251.5703,-542.4384 1251.5703,-542.4384\"/>\n",
"<text text-anchor=\"start\" x=\"1291.315\" y=\"-541.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"1287.815\" y=\"-526.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0e584de570> >"
]
},
"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": "4d030586",
"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": "f13ac820",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Found a solution: True\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"729pt\" height=\"306pt\"\n",
" viewBox=\"0.00 0.00 729.00 306.05\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(0.5908 0.5908) rotate(0) translate(4 514)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-514 1229.8756,-514 1229.8756,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"590.4378\" y=\"-495.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Fin(</text>\n",
"<text text-anchor=\"start\" x=\"615.4378\" y=\"-495.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"631.4378\" y=\"-495.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)</text>\n",
"<text text-anchor=\"start\" x=\"580.4378\" y=\"-481.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[co&#45;Büchi]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"56\" cy=\"-144\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-140.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-144C4.178,-144 17.9448,-144 30.9241,-144\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-144 30.9808,-147.1501 34.4807,-144 30.9807,-144.0001 30.9807,-144.0001 30.9807,-144.0001 34.4807,-144 30.9807,-140.8501 37.9807,-144 37.9807,-144\"/>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>10</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"141.3322,-208 111.1669,-190 141.3322,-172 171.4975,-190 141.3322,-208\"/>\n",
"<text text-anchor=\"middle\" x=\"141.3322\" y=\"-186.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">10</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;10 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M72.0503,-152.6522C85.2802,-159.7841 104.1947,-169.9803 118.9189,-177.9177\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"125.3538,-181.3865 117.6973,-180.8377 122.273,-179.7257 119.1921,-178.0649 119.1921,-178.0649 119.1921,-178.0649 122.273,-179.7257 120.6868,-175.2921 125.3538,-181.3865 125.3538,-181.3865\"/>\n",
"</g>\n",
"<!-- 11 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>11</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"219.9966,-133 189.8313,-115 219.9966,-97 250.1619,-115 219.9966,-133\"/>\n",
"<text text-anchor=\"middle\" x=\"219.9966\" y=\"-111.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">11</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;11 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M73.8627,-140.8413C101.6864,-135.9211 155.7032,-126.3692 189.6977,-120.3578\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"196.6312,-119.1318 190.2867,-123.4526 193.1847,-119.7413 189.7381,-120.3508 189.7381,-120.3508 189.7381,-120.3508 193.1847,-119.7413 189.1896,-117.2489 196.6312,-119.1318 196.6312,-119.1318\"/>\n",
"</g>\n",
"<!-- 12 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>12</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"352.6609,-336 322.4956,-318 352.6609,-300 382.8262,-318 352.6609,-336\"/>\n",
"<text text-anchor=\"middle\" x=\"352.6609\" y=\"-314.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">12</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;12 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>0&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M64.5897,-159.92C74.0673,-176.1852 90.7,-201.229 111,-217 177.9445,-269.0087 275.5468,-298.8315 323.6513,-311.1997\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"330.6575,-312.9671 323.0996,-314.3092 327.2638,-312.111 323.8701,-311.2548 323.8701,-311.2548 323.8701,-311.2548 327.2638,-312.111 324.6406,-308.2005 330.6575,-312.9671 330.6575,-312.9671\"/>\n",
"</g>\n",
"<!-- 13 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>13</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"509.9897,-54 479.8244,-36 509.9897,-18 540.155,-36 509.9897,-54\"/>\n",
"<text text-anchor=\"middle\" x=\"509.9897\" y=\"-32.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">13</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;13 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>0&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M62.912,-127.2598C74.8027,-101.4787 101.731,-55 141.3322,-55 141.3322,-55 141.3322,-55 352.6609,-55 397.2344,-55 448.4022,-47.3903 479.9656,-41.8027\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"487.1653,-40.5027 480.8364,-44.8464 483.721,-41.1246 480.2767,-41.7466 480.2767,-41.7466 480.2767,-41.7466 483.721,-41.1246 479.717,-38.6467 487.1653,-40.5027 487.1653,-40.5027\"/>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node25\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"286.3288\" cy=\"-199\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"286.3288\" y=\"-195.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">8</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;8 -->\n",
"<g id=\"edge32\" class=\"edge\">\n",
"<title>10&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M168.9462,-191.714C195.42,-193.3573 235.0584,-195.8176 260.809,-197.416\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"268.0027,-197.8625 260.821,-200.5727 264.4785,-198.1447 260.9852,-197.9278 261.0162,-197.4287 261.0472,-196.9297 264.5404,-197.1466 261.2114,-194.2848 268.0027,-197.8625 268.0027,-197.8625\"/>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node23\" class=\"node\">\n",
"<title>7</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"746.9863\" cy=\"-152\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"746.9863\" y=\"-148.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">7</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;7 -->\n",
"<g id=\"edge33\" class=\"edge\">\n",
"<title>11&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M249.1821,-115.7877C305.5265,-117.4367 433.1867,-121.7964 540.3219,-130 605.923,-135.0232 682.9212,-144.0521 721.7983,-148.8319\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"729.0507,-149.7287 721.717,-151.9957 725.5158,-149.7953 722.0423,-149.3658 722.1036,-148.8695 722.165,-148.3733 725.6386,-148.8029 722.4903,-145.7433 729.0507,-149.7287 729.0507,-149.7287\"/>\n",
"</g>\n",
"<!-- 9 -->\n",
"<g id=\"node27\" class=\"node\">\n",
"<title>9</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"576.3219\" cy=\"-324\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"576.3219\" y=\"-320.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">9</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;9 -->\n",
"<g id=\"edge34\" class=\"edge\">\n",
"<title>12&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M381.9007,-318.7844C426.1352,-319.971 509.322,-322.2026 551.071,-323.3226\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"558.1255,-323.5119 551.0435,-326.4729 554.6133,-323.9178 551.1146,-323.8239 551.128,-323.324 551.1414,-322.8242 554.6401,-322.9181 551.2125,-320.1752 558.1255,-323.5119 558.1255,-323.5119\"/>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node17\" class=\"node\">\n",
"<title>5</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"917.6507\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"917.6507\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">5</text>\n",
"</g>\n",
"<!-- 13&#45;&gt;5 -->\n",
"<g id=\"edge35\" class=\"edge\">\n",
"<title>13&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M532.3377,-31.182C553.0881,-27.1323 584.8948,-22 612.8219,-22 612.8219,-22 612.8219,-22 832.3185,-22 852.5105,-22 875.3607,-20.8686 892.3305,-19.8093\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"899.683,-19.3319 892.9018,-22.9289 896.2227,-20.0577 892.7301,-20.2845 892.6977,-19.7855 892.6653,-19.2866 896.1579,-19.0598 892.4935,-16.6421 899.683,-19.3319 899.683,-19.3319\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" cx=\"917.6507\" cy=\"-348\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"917.6507\" y=\"-344.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 14 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>14</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"1002.9828,-410 972.8175,-392 1002.9828,-374 1033.1481,-392 1002.9828,-410\"/>\n",
"<text text-anchor=\"middle\" x=\"1002.9828\" y=\"-388.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">14</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;14 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>1&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M933.701,-356.2761C946.8471,-363.0546 965.6061,-372.7274 980.2895,-380.2986\"/>\n",
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"986.7144,-383.6114 979.0491,-383.2031 983.3744,-382.4518 980.2636,-380.8477 980.4927,-380.4033 980.7219,-379.9589 983.8327,-381.563 981.9364,-377.6036 986.7144,-383.6114 986.7144,-383.6114\"/>\n",
"</g>\n",
"<!-- 16 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>16</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"1002.9828,-356 972.8175,-338 1002.9828,-320 1033.1481,-338 1002.9828,-356\"/>\n",
"<text text-anchor=\"middle\" x=\"1002.9828\" y=\"-334.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">16</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;16 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>1&#45;&gt;16</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M934.1036,-340.6139C944.5487,-338.1977 958.416,-336.2055 970.9689,-335.1922\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"978.1723,-334.713 971.3969,-338.3208 974.68,-334.9454 971.1877,-335.1778 971.1877,-335.1778 971.1877,-335.1778 974.68,-334.9454 970.9786,-332.0347 978.1723,-334.713 978.1723,-334.713\"/>\n",
"</g>\n",
"<!-- 15 -->\n",
"<g id=\"node30\" class=\"node\">\n",
"<title>15</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" cx=\"1106.7631\" cy=\"-392\" rx=\"21.3963\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1106.7631\" y=\"-388.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">15</text>\n",
"</g>\n",
"<!-- 14&#45;&gt;15 -->\n",
"<g id=\"edge36\" class=\"edge\">\n",
"<title>14&#45;&gt;15</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1033.2794,-392C1047.4428,-392 1064.2186,-392 1078.1631,-392\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1085.1682,-392 1078.1683,-395.1501 1081.6682,-392 1078.1682,-392.0001 1078.1682,-392.0001 1078.1682,-392.0001 1081.6682,-392 1078.1682,-388.8501 1085.1682,-392 1085.1682,-392\"/>\n",
"<text text-anchor=\"start\" x=\"1051.315\" y=\"-395.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 16&#45;&gt;1 -->\n",
"<g id=\"edge38\" class=\"edge\">\n",
"<title>16&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M985.3246,-345.6597C972.9731,-348.4111 956.3,-350.5693 942.5943,-351.2801\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"935.3315,-351.5207 942.2234,-348.1406 938.8296,-351.4048 942.3277,-351.2889 942.3277,-351.2889 942.3277,-351.2889 938.8296,-351.4048 942.432,-354.4372 935.3315,-351.5207 935.3315,-351.5207\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" cx=\"917.6507\" cy=\"-210\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"917.6507\" y=\"-206.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;14 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>2&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M920.9877,-228.0556C927.2366,-258.4127 942.8453,-320.6976 972.6507,-365 975.6809,-369.5041 979.6324,-373.7414 983.6768,-377.4649\"/>\n",
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"989.1717,-382.2007 981.8128,-380.0168 986.194,-380.2944 983.5428,-378.0095 983.8692,-377.6307 984.1957,-377.252 986.8469,-379.5369 985.9257,-375.2446 989.1717,-382.2007 989.1717,-382.2007\"/>\n",
"</g>\n",
"<!-- 17 -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>17</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"1002.9828,-232 972.8175,-214 1002.9828,-196 1033.1481,-214 1002.9828,-232\"/>\n",
"<text text-anchor=\"middle\" x=\"1002.9828\" y=\"-210.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">17</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;17 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>2&#45;&gt;17</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M935.3315,-205.2361C947.2765,-204.5368 963.2554,-205.0542 976.6845,-206.4796\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"983.8409,-207.363 976.5077,-209.6316 980.3673,-206.9342 976.8937,-206.5054 976.8937,-206.5054 976.8937,-206.5054 980.3673,-206.9342 977.2796,-203.3791 983.8409,-207.363 983.8409,-207.363\"/>\n",
"</g>\n",
"<!-- 17&#45;&gt;2 -->\n",
"<g id=\"edge39\" class=\"edge\">\n",
"<title>17&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M980.8689,-218.9627C969.0084,-219.3455 954.364,-218.7173 942.1575,-217.3231\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"934.9189,-216.3581 942.2738,-214.1608 938.3882,-216.8206 941.8575,-217.2832 941.8575,-217.2832 941.8575,-217.2832 938.3882,-216.8206 941.4412,-220.4055 934.9189,-216.3581 934.9189,-216.3581\"/>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" cx=\"917.6507\" cy=\"-439\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"917.6507\" y=\"-435.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;14 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>3&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M933.701,-430.1597C947.0146,-422.8267 966.085,-412.3229 980.8487,-404.1913\"/>\n",
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"987.2928,-400.6419 982.681,-406.7783 984.4683,-402.7685 981.4025,-404.4571 981.1613,-404.0191 980.9201,-403.5811 983.9858,-401.8925 979.6416,-401.2599 987.2928,-400.6419 987.2928,-400.6419\"/>\n",
"</g>\n",
"<!-- 3&#45;&gt;16 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>3&#45;&gt;16</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M927.5621,-423.8446C937.9812,-408.3767 955.2484,-384.0086 972.6507,-365 976.3163,-360.996 980.521,-356.958 984.6088,-353.2686\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"990.049,-348.4898 986.8688,-355.4761 987.4194,-350.7997 984.7899,-353.1095 984.7899,-353.1095 984.7899,-353.1095 987.4194,-350.7997 982.711,-350.7429 990.049,-348.4898 990.049,-348.4898\"/>\n",
"</g>\n",
"<!-- 3&#45;&gt;17 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>3&#45;&gt;17</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M924.0644,-422.0884C939.3697,-381.7323 978.0085,-279.8513 994.8855,-235.3507\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"997.4004,-228.7195 997.8634,-236.3816 996.1593,-231.992 994.9181,-235.2646 994.9181,-235.2646 994.9181,-235.2646 996.1593,-231.992 991.9728,-234.1475 997.4004,-228.7195 997.4004,-228.7195\"/>\n",
"</g>\n",
"<!-- 18 -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>18</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"1002.9828,-474 972.8175,-456 1002.9828,-438 1033.1481,-456 1002.9828,-474\"/>\n",
"<text text-anchor=\"middle\" x=\"1002.9828\" y=\"-452.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">18</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;18 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>3&#45;&gt;18</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M935.7474,-436.9693C948.6623,-438.2167 966.1332,-441.5546 980.0287,-445.3631\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"986.9262,-447.389 979.3222,-448.4386 983.5681,-446.4026 980.21,-445.4163 980.21,-445.4163 980.21,-445.4163 983.5681,-446.4026 981.0977,-442.3939 986.9262,-447.389 986.9262,-447.389\"/>\n",
"</g>\n",
"<!-- 18&#45;&gt;3 -->\n",
"<g id=\"edge40\" class=\"edge\">\n",
"<title>18&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M973.8792,-456.6392C962.9602,-454.9838 950.7186,-452.4167 940.4523,-449.5951\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"933.701,-447.609 941.3055,-446.5626 937.0587,-448.5968 940.4165,-449.5846 940.4165,-449.5846 940.4165,-449.5846 937.0587,-448.5968 939.5274,-452.6065 933.701,-447.609 933.701,-447.609\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node14\" class=\"node\">\n",
"<title>4</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"1106.7631\" cy=\"-160\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1106.7631\" y=\"-156.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">4</text>\n",
"</g>\n",
"<!-- 19 -->\n",
"<g id=\"node15\" class=\"node\">\n",
"<title>19</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"1195.5434,-178 1165.3781,-160 1195.5434,-142 1225.7087,-160 1195.5434,-178\"/>\n",
"<text text-anchor=\"middle\" x=\"1195.5434\" y=\"-156.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">19</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;19 -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>4&#45;&gt;19</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1124.3033,-154.4963C1136.6967,-153.1721 1153.5628,-152.9031 1167.7731,-153.6894\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1174.9243,-154.1967 1167.7189,-156.8434 1171.4331,-153.949 1167.9419,-153.7013 1167.9419,-153.7013 1167.9419,-153.7013 1171.4331,-153.949 1168.1648,-150.5592 1174.9243,-154.1967 1174.9243,-154.1967\"/>\n",
"</g>\n",
"<!-- 20 -->\n",
"<g id=\"node16\" class=\"node\">\n",
"<title>20</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"832.3185,-132 802.1532,-114 832.3185,-96 862.4838,-114 832.3185,-132\"/>\n",
"<text text-anchor=\"middle\" x=\"832.3185\" y=\"-110.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">20</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;20 -->\n",
"<g id=\"edge15\" class=\"edge\">\n",
"<title>4&#45;&gt;20</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1090.2172,-152.5161C1075.5703,-146.2335 1053.4528,-137.5722 1033.315,-133 976.8866,-120.1881 909.6496,-115.999 869.0109,-114.6394\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"861.9866,-114.4238 869.08,-111.4901 865.485,-114.5312 868.9833,-114.6386 868.9833,-114.6386 868.9833,-114.6386 865.485,-114.5312 868.8867,-117.7871 861.9866,-114.4238 861.9866,-114.4238\"/>\n",
"</g>\n",
"<!-- 19&#45;&gt;4 -->\n",
"<g id=\"edge41\" class=\"edge\">\n",
"<title>19&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M1174.9243,-165.8033C1161.9764,-166.9468 1145.2012,-167.0544 1131.533,-166.1261\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"1124.3033,-165.5037 1131.5477,-162.9658 1127.8332,-165.3058 1131.3204,-165.606 1131.2775,-166.1042 1131.2346,-166.6023 1127.7475,-166.3021 1131.0073,-169.2425 1124.3033,-165.5037 1124.3033,-165.5037\"/>\n",
"</g>\n",
"<!-- 20&#45;&gt;5 -->\n",
"<g id=\"edge42\" class=\"edge\">\n",
"<title>20&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M842.7819,-102.2285C857.14,-86.0754 883.1307,-56.8355 900.3928,-37.4153\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"905.4473,-31.7289 903.1511,-39.0536 903.4957,-34.6771 901.1705,-37.293 900.7968,-36.9609 900.4231,-36.6287 902.7483,-34.0127 898.4424,-34.8681 905.4473,-31.7289 905.4473,-31.7289\"/>\n",
"</g>\n",
"<!-- 21 -->\n",
"<g id=\"node18\" class=\"node\">\n",
"<title>21</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"1002.9828,-178 972.8175,-160 1002.9828,-142 1033.1481,-160 1002.9828,-178\"/>\n",
"<text text-anchor=\"middle\" x=\"1002.9828\" y=\"-156.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">21</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;21 -->\n",
"<g id=\"edge16\" class=\"edge\">\n",
"<title>5&#45;&gt;21</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M926.9451,-33.4668C942.607,-59.5294 974.2189,-112.1343 991.3361,-140.6189\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"994.958,-146.646 988.6524,-142.2685 993.1552,-143.646 991.3524,-140.646 991.3524,-140.646 991.3524,-140.646 993.1552,-143.646 994.0524,-139.0234 994.958,-146.646 994.958,-146.646\"/>\n",
"</g>\n",
"<!-- 22 -->\n",
"<g id=\"node19\" class=\"node\">\n",
"<title>22</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"1002.9828,-36 972.8175,-18 1002.9828,0 1033.1481,-18 1002.9828,-36\"/>\n",
"<text text-anchor=\"middle\" x=\"1002.9828\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">22</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;22 -->\n",
"<g id=\"edge17\" class=\"edge\">\n",
"<title>5&#45;&gt;22</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M934.9189,-12.4514C946.5064,-11.1969 962.0235,-10.9249 975.3153,-11.6352\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"982.4317,-12.131 975.2297,-14.7868 978.9401,-11.8877 975.4486,-11.6444 975.4486,-11.6444 975.4486,-11.6444 978.9401,-11.8877 975.6675,-8.5021 982.4317,-12.131 982.4317,-12.131\"/>\n",
"</g>\n",
"<!-- 21&#45;&gt;4 -->\n",
"<g id=\"edge43\" class=\"edge\">\n",
"<title>21&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M1033.2794,-160C1048.5637,-160 1066.8902,-160 1081.4177,-160\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"1088.6322,-160 1081.6322,-163.1501 1085.1322,-160.5 1081.6322,-160.5001 1081.6322,-160.0001 1081.6322,-159.5001 1085.1322,-159.5 1081.6322,-156.8501 1088.6322,-160 1088.6322,-160\"/>\n",
"</g>\n",
"<!-- 22&#45;&gt;5 -->\n",
"<g id=\"edge44\" class=\"edge\">\n",
"<title>22&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M982.4317,-23.869C970.2886,-24.9333 954.8424,-25.0333 942.0787,-24.169\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"934.9189,-23.5486 942.1647,-21.0147 938.449,-23.3527 941.9359,-23.6548 941.8928,-24.1529 941.8496,-24.6511 938.3627,-24.3489 941.6208,-27.2912 934.9189,-23.5486 934.9189,-23.5486\"/>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node20\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"746.9863\" cy=\"-291\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"746.9863\" y=\"-287.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">6</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;19 -->\n",
"<g id=\"edge18\" class=\"edge\">\n",
"<title>6&#45;&gt;19</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M764.1701,-285.3417C774.9385,-281.9609 789.1605,-277.7943 801.9863,-275 903.5218,-252.8789 934.1785,-272.1569 1033.315,-241 1086.8669,-224.1696 1144.5257,-191.486 1174.5879,-173.2\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1180.5725,-169.5274 1176.2539,-175.8735 1177.5894,-171.3581 1174.6063,-173.1887 1174.6063,-173.1887 1174.6063,-173.1887 1177.5894,-171.3581 1172.9588,-170.504 1180.5725,-169.5274 1180.5725,-169.5274\"/>\n",
"</g>\n",
"<!-- 6&#45;&gt;20 -->\n",
"<g id=\"edge19\" class=\"edge\">\n",
"<title>6&#45;&gt;20</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M754.8612,-274.6655C770.4107,-242.4119 805.0366,-170.5893 822.2302,-134.9255\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"825.4257,-128.2973 825.2232,-135.9708 823.9057,-131.4501 822.3857,-134.6028 822.3857,-134.6028 822.3857,-134.6028 823.9057,-131.4501 819.5483,-133.2349 825.4257,-128.2973 825.4257,-128.2973\"/>\n",
"</g>\n",
"<!-- 23 -->\n",
"<g id=\"node21\" class=\"node\">\n",
"<title>23</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"832.3185,-320 802.1532,-302 832.3185,-284 862.4838,-302 832.3185,-320\"/>\n",
"<text text-anchor=\"middle\" x=\"832.3185\" y=\"-298.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">23</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;23 -->\n",
"<g id=\"edge20\" class=\"edge\">\n",
"<title>6&#45;&gt;23</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M765.083,-287.6968C777.5492,-288.0244 794.2603,-290.0012 807.9034,-292.6846\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"815.1208,-294.2421 807.6138,-295.8446 811.6996,-293.5038 808.2783,-292.7654 808.2783,-292.7654 808.2783,-292.7654 811.6996,-293.5038 808.9428,-289.6863 815.1208,-294.2421 815.1208,-294.2421\"/>\n",
"</g>\n",
"<!-- 24 -->\n",
"<g id=\"node22\" class=\"node\">\n",
"<title>24</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"431.3253,-246 401.16,-228 431.3253,-210 461.4906,-228 431.3253,-246\"/>\n",
"<text text-anchor=\"middle\" x=\"431.3253\" y=\"-224.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">24</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;24 -->\n",
"<g id=\"edge21\" class=\"edge\">\n",
"<title>6&#45;&gt;24</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M729.3101,-287.4722C677.535,-277.1388 525.8085,-246.8571 461.1089,-233.9442\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"454.0269,-232.5308 461.5081,-230.8119 457.4592,-233.2159 460.8915,-233.9009 460.8915,-233.9009 460.8915,-233.9009 457.4592,-233.2159 460.2749,-236.99 454.0269,-232.5308 454.0269,-232.5308\"/>\n",
"</g>\n",
"<!-- 23&#45;&gt;1 -->\n",
"<g id=\"edge45\" class=\"edge\">\n",
"<title>23&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M848.3688,-310.6522C861.5986,-317.7841 880.5131,-327.9803 895.2374,-335.9177\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"901.6723,-339.3865 894.0158,-338.8377 898.5914,-337.7257 895.5105,-336.0649 895.5105,-336.0649 895.5105,-336.0649 898.5914,-337.7257 897.0053,-333.2921 901.6723,-339.3865 901.6723,-339.3865\"/>\n",
"</g>\n",
"<!-- 23&#45;&gt;6 -->\n",
"<g id=\"edge46\" class=\"edge\">\n",
"<title>23&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M806.846,-304.9536C795.3145,-304.1927 781.7706,-302.4024 770.4853,-300.1332\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"763.4392,-298.5789 770.9534,-297.0108 766.9647,-298.8446 770.3826,-299.5986 770.2748,-300.0869 770.1671,-300.5751 766.7493,-299.8212 769.5963,-303.1629 763.4392,-298.5789 763.4392,-298.5789\"/>\n",
"</g>\n",
"<!-- 24&#45;&gt;1 -->\n",
"<g id=\"edge47\" class=\"edge\">\n",
"<title>24&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M444.9399,-237.9362C450.6602,-242.6239 457.0428,-248.5928 461.6575,-255 473.5265,-271.4795 469.4304,-279.4543 479.6575,-297 515.3789,-358.2836 505.3874,-424 576.3219,-424 576.3219,-424 576.3219,-424 832.3185,-424 864.959,-424 890.891,-392.6072 905.255,-370.1739\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"908.9956,-364.1176 907.9971,-371.7286 907.1563,-367.0954 905.3171,-370.0733 905.3171,-370.0733 905.3171,-370.0733 907.1563,-367.0954 902.6371,-368.4179 908.9956,-364.1176 908.9956,-364.1176\"/>\n",
"</g>\n",
"<!-- 24&#45;&gt;9 -->\n",
"<g id=\"edge48\" class=\"edge\">\n",
"<title>24&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M444.1781,-238.4313C453.7617,-246.0621 467.2785,-256.5186 479.6575,-265 504.6841,-282.1468 534.6592,-300.0578 554.5255,-311.5825\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"560.6013,-315.0908 552.9642,-314.3183 557.3203,-313.7736 554.2893,-312.0234 554.5393,-311.5904 554.7894,-311.1574 557.8204,-312.9076 556.1145,-308.8625 560.6013,-315.0908 560.6013,-315.0908\"/>\n",
"</g>\n",
"<!-- 7&#45;&gt;20 -->\n",
"<g id=\"edge22\" class=\"edge\">\n",
"<title>7&#45;&gt;20</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M763.4392,-144.6732C776.175,-139.0017 793.9983,-131.0647 808.3236,-124.6854\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"815.0374,-121.6956 809.9242,-127.4209 811.8401,-123.1194 808.6428,-124.5433 808.6428,-124.5433 808.6428,-124.5433 811.8401,-123.1194 807.3613,-121.6657 815.0374,-121.6956 815.0374,-121.6956\"/>\n",
"</g>\n",
"<!-- 25 -->\n",
"<g id=\"node24\" class=\"node\">\n",
"<title>25</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"661.6541,-204 631.4888,-186 661.6541,-168 691.8194,-186 661.6541,-204\"/>\n",
"<text text-anchor=\"middle\" x=\"661.6541\" y=\"-182.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">25</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;25 -->\n",
"<g id=\"edge23\" class=\"edge\">\n",
"<title>7&#45;&gt;25</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M732.4988,-162.991C721.7491,-168.6712 706.6829,-175.1154 693.2067,-179.9703\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"686.3357,-182.3518 691.9181,-177.083 689.6427,-181.2055 692.9497,-180.0593 692.9497,-180.0593 692.9497,-180.0593 689.6427,-181.2055 693.9813,-183.0356 686.3357,-182.3518 686.3357,-182.3518\"/>\n",
"</g>\n",
"<!-- 25&#45;&gt;2 -->\n",
"<g id=\"edge49\" class=\"edge\">\n",
"<title>25&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M688.086,-188.478C737.662,-193.1258 843.9717,-203.0925 892.5288,-207.6448\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"899.5347,-208.3016 892.2712,-210.7844 896.05,-207.9749 892.5653,-207.6481 892.5653,-207.6481 892.5653,-207.6481 896.05,-207.9749 892.8593,-204.5119 899.5347,-208.3016 899.5347,-208.3016\"/>\n",
"</g>\n",
"<!-- 25&#45;&gt;7 -->\n",
"<g id=\"edge50\" class=\"edge\">\n",
"<title>25&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M674.9872,-175.625C687.5884,-168.8321 706.8058,-160.7986 722.2178,-155.6771\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"728.9938,-153.5437 723.2629,-158.6506 725.8055,-155.0718 722.467,-156.1229 722.3169,-155.6459 722.1667,-155.169 725.5052,-154.1179 721.3709,-152.6413 728.9938,-153.5437 728.9938,-153.5437\"/>\n",
"</g>\n",
"<!-- 8&#45;&gt;20 -->\n",
"<g id=\"edge24\" class=\"edge\">\n",
"<title>8&#45;&gt;20</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M303.8647,-194.89C309.7212,-193.5744 316.2928,-192.1595 322.3288,-191 502.1428,-156.4588 547.5133,-149.3669 728.9863,-125 752.2365,-121.8781 778.527,-119.0897 798.7707,-117.1014\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"805.9386,-116.4059 799.2755,-120.2173 802.4549,-116.744 798.9713,-117.082 798.9713,-117.082 798.9713,-117.082 802.4549,-116.744 798.667,-113.9468 805.9386,-116.4059 805.9386,-116.4059\"/>\n",
"</g>\n",
"<!-- 8&#45;&gt;24 -->\n",
"<g id=\"edge25\" class=\"edge\">\n",
"<title>8&#45;&gt;24</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M304.1082,-202.556C328.3685,-207.4082 372.1733,-216.1693 401.5051,-222.0358\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"408.6298,-223.4608 401.1479,-225.1767 405.1977,-222.7743 401.7657,-222.0879 401.7657,-222.0879 401.7657,-222.0879 405.1977,-222.7743 402.3835,-218.999 408.6298,-223.4608 408.6298,-223.4608\"/>\n",
"</g>\n",
"<!-- 8&#45;&gt;25 -->\n",
"<g id=\"edge26\" class=\"edge\">\n",
"<title>8&#45;&gt;25</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M304.4315,-198.373C362.8757,-196.3487 547.2791,-189.9616 625.7454,-187.2438\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"633.0004,-186.9925 626.1137,-190.383 629.5025,-187.1137 626.0046,-187.2349 626.0046,-187.2349 626.0046,-187.2349 629.5025,-187.1137 625.8955,-184.0868 633.0004,-186.9925 633.0004,-186.9925\"/>\n",
"</g>\n",
"<!-- 26 -->\n",
"<g id=\"node26\" class=\"node\">\n",
"<title>26</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"431.3253,-300 401.16,-282 431.3253,-264 461.4906,-282 431.3253,-300\"/>\n",
"<text text-anchor=\"middle\" x=\"431.3253\" y=\"-278.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">26</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;26 -->\n",
"<g id=\"edge27\" class=\"edge\">\n",
"<title>8&#45;&gt;26</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M303.8527,-204.5187C309.5956,-208.43 316.103,-213.105 322.3288,-217 353.0251,-236.2047 391.083,-254.626 413.1458,-267.4617\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"419.1893,-271.0949 411.5669,-270.1879 416.1896,-269.2915 413.19,-267.4882 413.19,-267.4882 413.19,-267.4882 416.1896,-269.2915 414.813,-264.7885 419.1893,-271.0949 419.1893,-271.0949\"/>\n",
"</g>\n",
"<!-- 26&#45;&gt;3 -->\n",
"<g id=\"edge51\" class=\"edge\">\n",
"<title>26&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M435.6181,-297.6589C448.6757,-341.4518 492.2541,-462 576.3219,-462 576.3219,-462 576.3219,-462 832.3185,-462 853.7991,-462 877.3058,-455.1213 894.1983,-448.8876\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"901.0078,-446.2773 895.599,-451.7242 897.7396,-447.5301 894.4715,-448.7829 894.4715,-448.7829 894.4715,-448.7829 897.7396,-447.5301 893.344,-445.8416 901.0078,-446.2773 901.0078,-446.2773\"/>\n",
"</g>\n",
"<!-- 26&#45;&gt;8 -->\n",
"<g id=\"edge52\" class=\"edge\">\n",
"<title>26&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M407.3035,-278.0622C384.7841,-269.5469 350.4642,-252.6025 322.3288,-235 315.2296,-230.5585 307.7641,-225.103 301.4836,-219.6005\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"296.0935,-214.5618 303.3583,-217.0409 298.9918,-216.5867 301.5486,-218.9768 301.2072,-219.3421 300.8657,-219.7074 298.3089,-217.3172 299.056,-221.6433 296.0935,-214.5618 296.0935,-214.5618\"/>\n",
"</g>\n",
"<!-- 9&#45;&gt;21 -->\n",
"<g id=\"edge28\" class=\"edge\">\n",
"<title>9&#45;&gt;21</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M592.3577,-315.6123C638.7332,-291.6642 777.4855,-222.1839 899.6507,-183 923.6024,-175.3176 951.4783,-169.2757 972.2367,-165.316\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"979.2642,-164.0029 972.9619,-168.3851 975.8238,-164.6458 972.3833,-165.2886 972.3833,-165.2886 972.3833,-165.2886 975.8238,-164.6458 971.8047,-162.1922 979.2642,-164.0029 979.2642,-164.0029\"/>\n",
"</g>\n",
"<!-- 9&#45;&gt;22 -->\n",
"<g id=\"edge29\" class=\"edge\">\n",
"<title>9&#45;&gt;22</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M577.1663,-305.7173C580.9699,-246.5358 601.5326,-64 710.4863,-64 710.4863,-64 710.4863,-64 917.6507,-64 943.732,-64 969.5063,-47.1435 985.788,-33.8386\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"991.34,-29.1353 988.035,-36.0635 988.6695,-31.3977 985.9989,-33.66 985.9989,-33.66 985.9989,-33.66 988.6695,-31.3977 983.9628,-31.2565 991.34,-29.1353 991.34,-29.1353\"/>\n",
"</g>\n",
"<!-- 27 -->\n",
"<g id=\"node28\" class=\"node\">\n",
"<title>27</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"661.6541,-342 631.4888,-324 661.6541,-306 691.8194,-324 661.6541,-342\"/>\n",
"<text text-anchor=\"middle\" x=\"661.6541\" y=\"-320.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">27</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;27 -->\n",
"<g id=\"edge30\" class=\"edge\">\n",
"<title>9&#45;&gt;27</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M594.4187,-324C603.0841,-324 613.8007,-324 624.1122,-324\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"631.156,-324 624.156,-327.1501 627.656,-324 624.156,-324.0001 624.156,-324.0001 624.156,-324.0001 627.656,-324 624.1559,-320.8501 631.156,-324 631.156,-324\"/>\n",
"</g>\n",
"<!-- 28 -->\n",
"<g id=\"node29\" class=\"node\">\n",
"<title>28</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"661.6541,-396 631.4888,-378 661.6541,-360 691.8194,-378 661.6541,-396\"/>\n",
"<text text-anchor=\"middle\" x=\"661.6541\" y=\"-374.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">28</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;28 -->\n",
"<g id=\"edge31\" class=\"edge\">\n",
"<title>9&#45;&gt;28</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M593.5901,-329.3791C608.5045,-337.2026 629.9287,-350.7731 644.739,-361.7858\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"650.6431,-366.3247 643.1736,-364.5557 647.8683,-364.1915 645.0935,-362.0583 645.0935,-362.0583 645.0935,-362.0583 647.8683,-364.1915 647.0134,-359.561 650.6431,-366.3247 650.6431,-366.3247\"/>\n",
"</g>\n",
"<!-- 27&#45;&gt;1 -->\n",
"<g id=\"edge53\" class=\"edge\">\n",
"<title>27&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M688.086,-326.478C737.662,-331.1258 843.9717,-341.0925 892.5288,-345.6448\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"899.5347,-346.3016 892.2712,-348.7844 896.05,-345.9749 892.5653,-345.6481 892.5653,-345.6481 892.5653,-345.6481 896.05,-345.9749 892.8593,-342.5119 899.5347,-346.3016 899.5347,-346.3016\"/>\n",
"</g>\n",
"<!-- 27&#45;&gt;6 -->\n",
"<g id=\"edge54\" class=\"edge\">\n",
"<title>27&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M680.1699,-316.8395C692.7758,-311.9645 709.5755,-305.4677 723.1755,-300.2082\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"729.9567,-297.5857 724.5641,-303.0486 726.8726,-299.3145 723.6082,-300.577 723.4279,-300.1107 723.2475,-299.6443 726.5119,-298.3819 722.2917,-297.1727 729.9567,-297.5857 729.9567,-297.5857\"/>\n",
"</g>\n",
"<!-- 28&#45;&gt;1 -->\n",
"<g id=\"edge55\" class=\"edge\">\n",
"<title>28&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M690.3548,-377.0407C732.5678,-375.2582 813.7435,-370.4135 881.6507,-358 885.4792,-357.3001 889.4907,-356.379 893.389,-355.3788\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"900.2198,-353.5237 894.2901,-358.3983 896.8421,-354.441 893.4645,-355.3584 893.4645,-355.3584 893.4645,-355.3584 896.8421,-354.441 892.6389,-352.3185 900.2198,-353.5237 900.2198,-353.5237\"/>\n",
"</g>\n",
"<!-- 28&#45;&gt;9 -->\n",
"<g id=\"edge56\" class=\"edge\">\n",
"<title>28&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M642.047,-371.376C627.7485,-363.6594 608.511,-351.4406 594.5456,-341.1813\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"588.913,-336.9233 596.3966,-338.6318 592.0065,-338.6351 594.7985,-340.7457 594.497,-341.1446 594.1954,-341.5434 591.4034,-339.4328 592.5974,-343.6574 588.913,-336.9233 588.913,-336.9233\"/>\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=\"M1089.3186,-381.5186C1082.6722,-378.0924 1074.8742,-374.7256 1067.315,-373 1052.9456,-369.7198 1037.0604,-374.3269 1024.6703,-379.8243\"/>\n",
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"1018.1783,-382.9255 1023.1368,-377.0658 1021.1209,-380.9657 1024.279,-379.457 1024.4946,-379.9081 1024.7101,-380.3593 1021.5519,-381.868 1025.8524,-382.7505 1018.1783,-382.9255 1018.1783,-382.9255\"/>\n",
"<text text-anchor=\"start\" x=\"1051.315\" y=\"-376.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</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": "98aa1402",
"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 have the form `(ins)&(outs)` where `ins` and `outs` are Boolean formulas representing possible inputs and outputs (they could be more than just conjunctions of atomic proposition). Mealy machines with this type of labels are called \"separated\" in Spot."
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "4c93add7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"simplification lvl 0 : No simplification\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"729pt\" height=\"236pt\"\n",
" viewBox=\"0.00 0.00 729.00 236.03\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(0.675 0.675) rotate(0) translate(4 345.6811)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-345.6811 1076,-345.6811 1076,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-232.6811\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-228.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-232.6811C4.178,-232.6811 17.9448,-232.6811 30.9241,-232.6811\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-232.6811 30.9808,-235.8312 34.4807,-232.6812 30.9807,-232.6812 30.9807,-232.6812 30.9807,-232.6812 34.4807,-232.6812 30.9807,-229.5312 37.9807,-232.6811 37.9807,-232.6811\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"237\" cy=\"-161.6811\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"237\" y=\"-157.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M73.028,-226.0016C105.4516,-213.283 176.1206,-185.562 213.2019,-171.0163\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"220.1491,-168.2912 214.7828,-173.7799 216.8908,-169.5693 213.6325,-170.8475 213.6325,-170.8475 213.6325,-170.8475 216.8908,-169.5693 212.4822,-167.915 220.1491,-168.2912 220.1491,-168.2912\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94,-218.1811 94,-237.1811 148,-237.1811 148,-218.1811 94,-218.1811\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-223.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"152\" y=\"-223.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"163,-218.1811 163,-237.1811 176,-237.1811 176,-218.1811 163,-218.1811\"/>\n",
"<text text-anchor=\"start\" x=\"165\" y=\"-223.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"447.5\" cy=\"-223.6811\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"447.5\" y=\"-219.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M73.3788,-238.5315C79.2248,-240.2236 85.8299,-241.8401 92,-242.6811 129.872,-247.8434 139.7779,-242.7713 178,-242.6811 272.223,-242.4589 296.8925,-256.1387 390,-241.6811 401.4218,-239.9076 413.6964,-236.3115 423.9596,-232.7966\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"430.7083,-230.3996 425.1663,-235.7108 427.4101,-231.5711 424.112,-232.7425 424.112,-232.7425 424.112,-232.7425 427.4101,-231.5711 423.0577,-229.7742 430.7083,-230.3996 430.7083,-230.3996\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"198,-248.1811 198,-267.1811 248,-267.1811 248,-248.1811 198,-248.1811\"/>\n",
"<text text-anchor=\"start\" x=\"200\" y=\"-253.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"252\" y=\"-253.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"263,-248.1811 263,-267.1811 276,-267.1811 276,-248.1811 263,-248.1811\"/>\n",
"<text text-anchor=\"start\" x=\"265\" y=\"-253.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"447.5\" cy=\"-87.6811\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"447.5\" y=\"-83.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;3 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>0&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M65.0796,-216.8288C71.6816,-206.1416 81.3074,-192.1386 92,-181.6811 131.8335,-142.7236 143.5431,-130.4607 196,-111.6811 274.8215,-83.4631 375.9185,-83.9818 422.255,-86.0719\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"429.4713,-86.4309 422.3234,-89.2291 425.9756,-86.2569 422.48,-86.083 422.48,-86.083 422.48,-86.083 425.9756,-86.2569 422.6365,-82.9369 429.4713,-86.4309 429.4713,-86.4309\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"198,-113.1811 198,-132.1811 248,-132.1811 248,-113.1811 198,-113.1811\"/>\n",
"<text text-anchor=\"start\" x=\"200\" y=\"-118.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"252\" y=\"-118.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"263,-113.1811 263,-132.1811 276,-132.1811 276,-113.1811 263,-113.1811\"/>\n",
"<text text-anchor=\"start\" x=\"265\" y=\"-118.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>4</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"878\" cy=\"-126.6811\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"878\" y=\"-122.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">4</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;4 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>0&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M69.9301,-244.6391C98.9375,-268.2695 168.811,-318.6811 237,-318.6811 237,-318.6811 237,-318.6811 660.5,-318.6811 761.7284,-318.6811 838.0661,-200.3464 866.205,-149.4778\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"869.7016,-143.0509 869.1232,-150.7053 868.0289,-146.1254 866.3562,-149.1999 866.3562,-149.1999 866.3562,-149.1999 868.0289,-146.1254 863.5892,-147.6944 869.7016,-143.0509 869.7016,-143.0509\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"410.5,-320.1811 410.5,-339.1811 457.5,-339.1811 457.5,-320.1811 410.5,-320.1811\"/>\n",
"<text text-anchor=\"start\" x=\"412.5\" y=\"-325.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"461.5\" y=\"-325.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"472.5,-320.1811 472.5,-339.1811 485.5,-339.1811 485.5,-320.1811 472.5,-320.1811\"/>\n",
"<text text-anchor=\"start\" x=\"474.5\" y=\"-325.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M222.3621,-172.7383C213.1949,-184.4609 218.0742,-197.6811 237,-197.6811 252.6729,-197.6811 258.7129,-188.6148 255.1199,-178.8408\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"251.6379,-172.7383 257.843,-177.2571 253.3725,-175.7783 255.1071,-178.8182 255.1071,-178.8182 255.1071,-178.8182 253.3725,-175.7783 252.3711,-180.3794 251.6379,-172.7383 251.6379,-172.7383\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"190,-199.1811 190,-218.1811 244,-218.1811 244,-199.1811 190,-199.1811\"/>\n",
"<text text-anchor=\"start\" x=\"192\" y=\"-204.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"248\" y=\"-204.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"259,-199.1811 259,-218.1811 284,-218.1811 284,-199.1811 259,-199.1811\"/>\n",
"<text text-anchor=\"start\" x=\"261\" y=\"-204.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>1&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M252.5254,-170.9993C264.1427,-177.6141 280.6127,-186.2505 296,-191.6811 338.9998,-206.8571 391.5304,-215.9711 422.0831,-220.3936\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"429.3581,-221.4177 421.9873,-223.5611 425.8923,-220.9298 422.4264,-220.4419 422.4264,-220.4419 422.4264,-220.4419 425.8923,-220.9298 422.8656,-217.3226 429.3581,-221.4177 429.3581,-221.4177\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"298,-216.1811 298,-235.1811 348,-235.1811 348,-216.1811 298,-216.1811\"/>\n",
"<text text-anchor=\"start\" x=\"300\" y=\"-221.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"352\" y=\"-221.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"363,-216.1811 363,-235.1811 388,-235.1811 388,-216.1811 363,-216.1811\"/>\n",
"<text text-anchor=\"start\" x=\"365\" y=\"-221.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;3 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>1&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M253.9738,-155.4229C265.7281,-151.1424 281.7604,-145.4094 296,-140.6811 337.4931,-126.9032 348.89,-126.5631 390,-111.6811 401.5143,-107.5129 414.0889,-102.3381 424.5347,-97.862\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"431.059,-95.039 425.8855,-100.7098 427.8468,-96.4289 424.6346,-97.8188 424.6346,-97.8188 424.6346,-97.8188 427.8468,-96.4289 423.3837,-94.9278 431.059,-95.039 431.059,-95.039\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"298,-142.1811 298,-161.1811 348,-161.1811 348,-142.1811 298,-142.1811\"/>\n",
"<text text-anchor=\"start\" x=\"300\" y=\"-147.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"352\" y=\"-147.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"363,-142.1811 363,-161.1811 388,-161.1811 388,-142.1811 363,-142.1811\"/>\n",
"<text text-anchor=\"start\" x=\"365\" y=\"-147.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;4 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>1&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M255.0715,-162.4523C266.7468,-162.9114 282.2684,-163.4485 296,-163.6811 337.7718,-164.3889 348.2248,-164.1467 390,-163.6811 529.5816,-162.1255 564.7134,-165.8832 704,-156.6811 752.6311,-153.4683 765.139,-153.8809 813,-144.6811 826.7457,-142.039 841.827,-137.9396 853.9995,-134.3199\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"860.7982,-132.2588 855.0132,-137.3043 857.4488,-133.2743 854.0993,-134.2898 854.0993,-134.2898 854.0993,-134.2898 857.4488,-133.2743 853.1854,-131.2752 860.7982,-132.2588 860.7982,-132.2588\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"509,-165.1811 509,-184.1811 556,-184.1811 556,-165.1811 509,-165.1811\"/>\n",
"<text text-anchor=\"start\" x=\"511\" y=\"-170.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"560\" y=\"-170.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"571,-165.1811 571,-184.1811 596,-184.1811 596,-165.1811 571,-165.1811\"/>\n",
"<text text-anchor=\"start\" x=\"573\" y=\"-170.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>2&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M432.875,-234.3686C423.125,-246.1811 428,-259.6811 447.5,-259.6811 463.6484,-259.6811 469.7672,-250.423 465.8562,-240.5319\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"462.125,-234.3686 468.4449,-238.7254 463.9376,-237.3627 465.7503,-240.3568 465.7503,-240.3568 465.7503,-240.3568 463.9376,-237.3627 463.0556,-241.9882 462.125,-234.3686 462.125,-234.3686\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"417.5,-261.1811 417.5,-280.1811 437.5,-280.1811 437.5,-261.1811 417.5,-261.1811\"/>\n",
"<text text-anchor=\"start\" x=\"419.5\" y=\"-266.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"441.5\" y=\"-266.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"452.5,-261.1811 452.5,-280.1811 477.5,-280.1811 477.5,-261.1811 452.5,-261.1811\"/>\n",
"<text text-anchor=\"start\" x=\"454.5\" y=\"-266.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;4 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>2&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M465.334,-226.2282C520.2735,-233.2455 690.615,-248.7548 813,-191.6811 833.8128,-181.9752 851.7652,-162.6433 863.4967,-147.5737\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"867.8319,-141.8304 866.1289,-149.3152 865.7233,-144.6239 863.6147,-147.4175 863.6147,-147.4175 863.6147,-147.4175 865.7233,-144.6239 861.1005,-145.5197 867.8319,-141.8304 867.8319,-141.8304\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"632.5,-234.1811 632.5,-253.1811 649.5,-253.1811 649.5,-234.1811 632.5,-234.1811\"/>\n",
"<text text-anchor=\"start\" x=\"634.5\" y=\"-239.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"<text text-anchor=\"start\" x=\"653.5\" y=\"-239.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"664.5,-234.1811 664.5,-253.1811 689.5,-253.1811 689.5,-234.1811 664.5,-234.1811\"/>\n",
"<text text-anchor=\"start\" x=\"666.5\" y=\"-239.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g id=\"edge15\" class=\"edge\">\n",
"<title>3&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M432.875,-98.3686C423.125,-110.1811 428,-123.6811 447.5,-123.6811 463.6484,-123.6811 469.7672,-114.423 465.8562,-104.5319\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"462.125,-98.3686 468.4449,-102.7254 463.9376,-101.3627 465.7503,-104.3568 465.7503,-104.3568 465.7503,-104.3568 463.9376,-101.3627 463.0556,-105.9882 462.125,-98.3686 462.125,-98.3686\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"404.5,-125.1811 404.5,-144.1811 454.5,-144.1811 454.5,-125.1811 404.5,-125.1811\"/>\n",
"<text text-anchor=\"start\" x=\"406.5\" y=\"-130.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"458.5\" y=\"-130.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"469.5,-125.1811 469.5,-144.1811 490.5,-144.1811 490.5,-125.1811 469.5,-125.1811\"/>\n",
"<text text-anchor=\"start\" x=\"471.5\" y=\"-130.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;4 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>3&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M464.2191,-95.3128C475.4898,-100.0731 490.8323,-105.8211 505,-108.6811 633.5914,-134.6399 791.9349,-130.8079 852.6598,-128.0614\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"859.9057,-127.7173 853.063,-131.1959 856.4097,-127.8834 852.9136,-128.0494 852.9136,-128.0494 852.9136,-128.0494 856.4097,-127.8834 852.7642,-124.903 859.9057,-127.7173 859.9057,-127.7173\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"619.5,-131.1811 619.5,-150.1811 666.5,-150.1811 666.5,-131.1811 619.5,-131.1811\"/>\n",
"<text text-anchor=\"start\" x=\"621.5\" y=\"-136.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"670.5\" y=\"-136.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"681.5,-131.1811 681.5,-150.1811 702.5,-150.1811 702.5,-131.1811 681.5,-131.1811\"/>\n",
"<text text-anchor=\"start\" x=\"683.5\" y=\"-136.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>5</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"1040\" cy=\"-49.6811\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1040\" y=\"-45.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">5</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;5 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>3&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M456.519,-72.0273C466.342,-56.5295 483.5561,-33.4622 505,-21.6811 549.127,2.5618 566.7948,-8.4697 617,-4.6811 789.2945,8.3203 834.5718,-7.7917 1004,-41.6811 1007.6727,-42.4158 1011.5467,-43.2324 1015.3383,-44.0552\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1022.4535,-45.6251 1014.9392,-47.1928 1019.0357,-44.871 1015.6179,-44.1168 1015.6179,-44.1168 1015.6179,-44.1168 1019.0357,-44.871 1016.2967,-41.0408 1022.4535,-45.6251 1022.4535,-45.6251\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"724.5,-7.1811 724.5,-26.1811 774.5,-26.1811 774.5,-7.1811 724.5,-7.1811\"/>\n",
"<text text-anchor=\"start\" x=\"726.5\" y=\"-12.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"778.5\" y=\"-12.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"789.5,-7.1811 789.5,-26.1811 810.5,-26.1811 810.5,-7.1811 789.5,-7.1811\"/>\n",
"<text text-anchor=\"start\" x=\"791.5\" y=\"-12.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"660.5\" cy=\"-31.6811\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"660.5\" y=\"-27.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">6</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;6 -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>3&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M459.0755,-73.6097C469.659,-61.894 486.4523,-45.99 505,-38.6811 548.2938,-21.621 603.7002,-24.3444 635.3365,-27.9557\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"642.4684,-28.8316 635.1366,-31.1047 638.9945,-28.4049 635.5206,-27.9782 635.5206,-27.9782 635.5206,-27.9782 638.9945,-28.4049 635.9046,-24.8517 642.4684,-28.8316 642.4684,-28.8316\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"507,-40.1811 507,-59.1811 561,-59.1811 561,-40.1811 507,-40.1811\"/>\n",
"<text text-anchor=\"start\" x=\"509\" y=\"-45.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"565\" y=\"-45.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"576,-40.1811 576,-59.1811 597,-59.1811 597,-40.1811 576,-40.1811\"/>\n",
"<text text-anchor=\"start\" x=\"578\" y=\"-45.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;4 -->\n",
"<g id=\"edge17\" class=\"edge\">\n",
"<title>4&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M863.9938,-138.4805C856.257,-150.0117 860.9258,-162.6811 878,-162.6811 891.8728,-162.6811 897.556,-154.3173 895.0497,-144.9959\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"892.0062,-138.4805 897.8229,-143.4895 893.4875,-141.6516 894.9689,-144.8227 894.9689,-144.8227 894.9689,-144.8227 893.4875,-141.6516 892.1149,-146.1559 892.0062,-138.4805 892.0062,-138.4805\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"852,-164.1811 852,-183.1811 869,-183.1811 869,-164.1811 852,-164.1811\"/>\n",
"<text text-anchor=\"start\" x=\"854\" y=\"-169.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"<text text-anchor=\"start\" x=\"873\" y=\"-169.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"884,-164.1811 884,-183.1811 905,-183.1811 905,-164.1811 884,-164.1811\"/>\n",
"<text text-anchor=\"start\" x=\"886\" y=\"-169.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;5 -->\n",
"<g id=\"edge16\" class=\"edge\">\n",
"<title>4&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M896.2808,-127.1991C922.3182,-127.0754 970.621,-123.5767 1004,-101.6811 1014.7964,-94.599 1023.2702,-83.0511 1029.2772,-72.6345\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1032.6973,-66.3449 1032.1206,-73.9993 1031.0253,-69.4197 1029.3533,-72.4945 1029.3533,-72.4945 1029.3533,-72.4945 1031.0253,-69.4197 1026.5859,-70.9897 1032.6973,-66.3449 1032.6973,-66.3449\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"945.5,-125.1811 945.5,-144.1811 965.5,-144.1811 965.5,-125.1811 945.5,-125.1811\"/>\n",
"<text text-anchor=\"start\" x=\"947.5\" y=\"-130.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"969.5\" y=\"-130.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"980.5,-125.1811 980.5,-144.1811 1001.5,-144.1811 1001.5,-125.1811 980.5,-125.1811\"/>\n",
"<text text-anchor=\"start\" x=\"982.5\" y=\"-130.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;4 -->\n",
"<g id=\"edge19\" class=\"edge\">\n",
"<title>5&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1022.0379,-51.9927C1001.9423,-55.0946 968.8227,-61.7748 943,-74.6811 925.5124,-83.4215 908.3559,-97.4454 896.0639,-108.728\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"890.7748,-113.6901 893.7246,-106.6033 893.3274,-111.2954 895.8799,-108.9006 895.8799,-108.9006 895.8799,-108.9006 893.3274,-111.2954 898.0351,-111.1979 890.7748,-113.6901 890.7748,-113.6901\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"945.5,-76.1811 945.5,-95.1811 962.5,-95.1811 962.5,-76.1811 945.5,-76.1811\"/>\n",
"<text text-anchor=\"start\" x=\"947.5\" y=\"-81.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"<text text-anchor=\"start\" x=\"966.5\" y=\"-81.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"977.5,-76.1811 977.5,-95.1811 1002.5,-95.1811 1002.5,-76.1811 977.5,-76.1811\"/>\n",
"<text text-anchor=\"start\" x=\"979.5\" y=\"-81.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;5 -->\n",
"<g id=\"edge18\" class=\"edge\">\n",
"<title>5&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1029.0873,-64.0978C1025.2765,-74.8472 1028.9141,-85.6811 1040,-85.6811 1048.6609,-85.6811 1052.7757,-79.0686 1052.3443,-71.0499\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1050.9127,-64.0978 1055.4099,-70.3186 1051.6187,-67.5259 1052.3246,-70.954 1052.3246,-70.954 1052.3246,-70.954 1051.6187,-67.5259 1049.2394,-71.5893 1050.9127,-64.0978 1050.9127,-64.0978\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"1010,-87.1811 1010,-106.1811 1030,-106.1811 1030,-87.1811 1010,-87.1811\"/>\n",
"<text text-anchor=\"start\" x=\"1012\" y=\"-92.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"1034\" y=\"-92.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"1045,-87.1811 1045,-106.1811 1070,-106.1811 1070,-87.1811 1045,-87.1811\"/>\n",
"<text text-anchor=\"start\" x=\"1047\" y=\"-92.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;3 -->\n",
"<g id=\"edge23\" class=\"edge\">\n",
"<title>6&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M644.8347,-40.8689C632.7052,-47.5956 615.2814,-56.4316 599,-61.6811 555.9169,-75.5723 503.4134,-82.4699 472.8884,-85.543\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"465.6205,-86.2439 472.2858,-82.4364 469.1043,-85.9079 472.5882,-85.5719 472.5882,-85.5719 472.5882,-85.5719 469.1043,-85.9079 472.8906,-88.7073 465.6205,-86.2439 465.6205,-86.2439\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"507,-83.1811 507,-102.1811 557,-102.1811 557,-83.1811 507,-83.1811\"/>\n",
"<text text-anchor=\"start\" x=\"509\" y=\"-88.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"561\" y=\"-88.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"572,-83.1811 572,-102.1811 597,-102.1811 597,-83.1811 572,-83.1811\"/>\n",
"<text text-anchor=\"start\" x=\"574\" y=\"-88.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;4 -->\n",
"<g id=\"edge21\" class=\"edge\">\n",
"<title>6&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M677.7811,-37.2807C706.4336,-46.7788 765.3425,-67.2181 813,-89.6811 827.9031,-96.7056 844.0008,-105.8562 856.4478,-113.2997\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"862.5984,-117.0162 854.9781,-116.092 859.6028,-115.2061 856.6072,-113.396 856.6072,-113.396 856.6072,-113.396 859.6028,-115.2061 858.2364,-110.6999 862.5984,-117.0162 862.5984,-117.0162\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"724.5,-91.1811 724.5,-110.1811 771.5,-110.1811 771.5,-91.1811 724.5,-91.1811\"/>\n",
"<text text-anchor=\"start\" x=\"726.5\" y=\"-96.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"775.5\" y=\"-96.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"786.5,-91.1811 786.5,-110.1811 811.5,-110.1811 811.5,-91.1811 786.5,-91.1811\"/>\n",
"<text text-anchor=\"start\" x=\"788.5\" y=\"-96.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;5 -->\n",
"<g id=\"edge20\" class=\"edge\">\n",
"<title>6&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M678.5488,-32.5372C740.2304,-35.4628 942.7891,-45.0703 1014.5325,-48.4732\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1021.8407,-48.8198 1014.6993,-51.6346 1018.3447,-48.654 1014.8486,-48.4881 1014.8486,-48.4881 1014.8486,-48.4881 1018.3447,-48.654 1014.9979,-45.3416 1021.8407,-48.8198 1021.8407,-48.8198\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"833,-46.1811 833,-65.1811 883,-65.1811 883,-46.1811 833,-46.1811\"/>\n",
"<text text-anchor=\"start\" x=\"835\" y=\"-51.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"887\" y=\"-51.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"898,-46.1811 898,-65.1811 923,-65.1811 923,-46.1811 898,-46.1811\"/>\n",
"<text text-anchor=\"start\" x=\"900\" y=\"-51.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;6 -->\n",
"<g id=\"edge22\" class=\"edge\">\n",
"<title>6&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M645.5938,-42.3686C635.6563,-54.1811 640.625,-67.6811 660.5,-67.6811 676.959,-67.6811 683.1954,-58.423 679.2092,-48.5319\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"675.4063,-42.3686 681.7629,-46.6717 677.2442,-45.3472 679.0821,-48.3259 679.0821,-48.3259 679.0821,-48.3259 677.2442,-45.3472 676.4014,-49.98 675.4063,-42.3686 675.4063,-42.3686\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"613.5,-69.1811 613.5,-88.1811 667.5,-88.1811 667.5,-69.1811 613.5,-69.1811\"/>\n",
"<text text-anchor=\"start\" x=\"615.5\" y=\"-74.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"671.5\" y=\"-74.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"682.5,-69.1811 682.5,-88.1811 707.5,-88.1811 707.5,-69.1811 682.5,-69.1811\"/>\n",
"<text text-anchor=\"start\" x=\"684.5\" y=\"-74.9811\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0e5855c9f0> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simplification lvl 1 : bisimulation-based reduction\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"479pt\" height=\"237pt\"\n",
" viewBox=\"0.00 0.00 479.00 236.82\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 232.8155)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-232.8155 475,-232.8155 475,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-57.8155\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-54.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-57.8155C4.178,-57.8155 17.9448,-57.8155 30.9241,-57.8155\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-57.8155 30.9808,-60.9656 34.4807,-57.8156 30.9807,-57.8156 30.9807,-57.8156 30.9807,-57.8156 34.4807,-57.8156 30.9807,-54.6656 37.9807,-57.8155 37.9807,-57.8155\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"237\" cy=\"-120.8155\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"237\" y=\"-117.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M65.7261,-73.5413C72.081,-82.4268 81.1956,-92.9073 92,-98.8155 129.8938,-119.5371 181.2311,-122.4573 211.5599,-122.069\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"218.797,-121.9078 211.8689,-125.213 215.2979,-121.9858 211.7987,-122.0637 211.7987,-122.0637 211.7987,-122.0637 215.2979,-121.9858 211.7285,-118.9145 218.797,-121.9078 218.797,-121.9078\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94,-121.3155 94,-140.3155 148,-140.3155 148,-121.3155 94,-121.3155\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-127.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"152\" y=\"-127.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"163,-121.3155 163,-140.3155 176,-140.3155 176,-121.3155 163,-121.3155\"/>\n",
"<text text-anchor=\"start\" x=\"165\" y=\"-127.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M74.1865,-56.7447C98.7692,-55.9869 143.4933,-57.0772 178,-71.8155 193.9948,-78.6472 209.028,-91.2647 219.9165,-101.9848\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"224.9148,-107.0614 217.759,-104.2834 222.4592,-104.5673 220.0036,-102.0733 220.0036,-102.0733 220.0036,-102.0733 222.4592,-104.5673 222.2482,-99.8633 224.9148,-107.0614 224.9148,-107.0614\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"96,-73.3155 96,-92.3155 146,-92.3155 146,-73.3155 96,-73.3155\"/>\n",
"<text text-anchor=\"start\" x=\"98\" y=\"-79.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"150\" y=\"-79.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"161,-73.3155 161,-92.3155 174,-92.3155 174,-73.3155 161,-73.3155\"/>\n",
"<text text-anchor=\"start\" x=\"163\" y=\"-79.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"426\" cy=\"-97.8155\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"426\" y=\"-94.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M73.665,-53.355C125.1345,-41.2987 278.382,-12.1252 390,-60.8155 398.2148,-64.399 405.505,-70.8287 411.3394,-77.3341\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"415.8863,-82.7557 408.9745,-79.4164 413.6372,-80.0739 411.3881,-77.3922 411.3881,-77.3922 411.3881,-77.3922 413.6372,-80.0739 413.8017,-75.368 415.8863,-82.7557 415.8863,-82.7557\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"198,-36.3155 198,-55.3155 248,-55.3155 248,-36.3155 198,-36.3155\"/>\n",
"<text text-anchor=\"start\" x=\"200\" y=\"-42.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"252\" y=\"-42.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"263,-36.3155 263,-55.3155 276,-55.3155 276,-36.3155 263,-36.3155\"/>\n",
"<text text-anchor=\"start\" x=\"265\" y=\"-42.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M69.9253,-45.8464C76.3009,-40.8877 84.1703,-35.4561 92,-31.8155 167.6887,3.3773 195.1128,4.0343 278,-5.8155 328.846,-11.8577 349.2617,-1.7958 390,-32.8155 403.4946,-43.0909 412.6239,-59.9579 418.3123,-73.9349\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"420.8323,-80.5226 415.3892,-75.1102 419.5818,-77.2536 418.3312,-73.9847 418.3312,-73.9847 418.3312,-73.9847 419.5818,-77.2536 421.2733,-72.8592 420.8323,-80.5226 420.8323,-80.5226\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"200,-7.3155 200,-26.3155 247,-26.3155 247,-7.3155 200,-7.3155\"/>\n",
"<text text-anchor=\"start\" x=\"202\" y=\"-13.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"251\" y=\"-13.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"262,-7.3155 262,-26.3155 275,-26.3155 275,-7.3155 262,-7.3155\"/>\n",
"<text text-anchor=\"start\" x=\"264\" y=\"-13.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M228.1939,-136.7316C225.8967,-146.9659 228.832,-156.8155 237,-156.8155 243.2536,-156.8155 246.4399,-151.0419 246.559,-143.7423\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"245.8061,-136.7316 249.6857,-143.3551 246.1799,-140.2115 246.5537,-143.6915 246.5537,-143.6915 246.5537,-143.6915 246.1799,-140.2115 243.4217,-144.0279 245.8061,-136.7316 245.8061,-136.7316\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"192,-158.3155 192,-177.3155 242,-177.3155 242,-158.3155 192,-158.3155\"/>\n",
"<text text-anchor=\"start\" x=\"194\" y=\"-164.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"246\" y=\"-164.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"257,-158.3155 257,-177.3155 282,-177.3155 282,-158.3155 257,-158.3155\"/>\n",
"<text text-anchor=\"start\" x=\"259\" y=\"-164.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M224.6173,-134.0948C212.5521,-153.7801 216.6797,-179.8155 237,-179.8155 255.0978,-179.8155 260.3513,-159.1639 252.7604,-140.7396\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"249.3827,-134.0948 255.3628,-138.9074 250.9687,-137.2148 252.5548,-140.3349 252.5548,-140.3349 252.5548,-140.3349 250.9687,-137.2148 249.7467,-141.7623 249.3827,-134.0948 249.3827,-134.0948\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"190,-181.3155 190,-200.3155 244,-200.3155 244,-181.3155 190,-181.3155\"/>\n",
"<text text-anchor=\"start\" x=\"192\" y=\"-187.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"248\" y=\"-187.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"259,-181.3155 259,-200.3155 284,-200.3155 284,-181.3155 259,-181.3155\"/>\n",
"<text text-anchor=\"start\" x=\"261\" y=\"-187.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>1&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M245.2252,-137.1812C254.7983,-154.1886 272.3644,-179.8257 296,-190.8155 333.8829,-208.4299 355.5366,-214.4302 390,-190.8155 401.6341,-182.8437 413.0404,-147.3531 419.7971,-122.5982\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"421.6578,-115.618 422.8984,-123.1932 420.7563,-118.9999 419.8547,-122.3818 419.8547,-122.3818 419.8547,-122.3818 420.7563,-118.9999 416.811,-121.5704 421.6578,-115.618 421.6578,-115.618\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"300,-207.3155 300,-226.3155 347,-226.3155 347,-207.3155 300,-207.3155\"/>\n",
"<text text-anchor=\"start\" x=\"302\" y=\"-213.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"351\" y=\"-213.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"362,-207.3155 362,-226.3155 387,-226.3155 387,-207.3155 362,-207.3155\"/>\n",
"<text text-anchor=\"start\" x=\"364\" y=\"-213.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>1&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M253.1307,-129.288C282.1015,-143.2559 344.1922,-167.43 390,-144.8155 400.3339,-139.7139 408.5215,-130.065 414.4606,-120.8308\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"418.2118,-114.5651 417.3187,-122.1891 416.4139,-117.5681 414.6161,-120.571 414.6161,-120.571 414.6161,-120.571 416.4139,-117.5681 411.9134,-118.953 418.2118,-114.5651 418.2118,-114.5651\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"298,-155.3155 298,-174.3155 348,-174.3155 348,-155.3155 298,-155.3155\"/>\n",
"<text text-anchor=\"start\" x=\"300\" y=\"-161.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"352\" y=\"-161.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"363,-155.3155 363,-174.3155 388,-174.3155 388,-155.3155 363,-155.3155\"/>\n",
"<text text-anchor=\"start\" x=\"365\" y=\"-161.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>2&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M407.9328,-100.0142C374.1072,-104.1305 301.1494,-113.009 262.3952,-117.7251\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"255.1221,-118.6102 261.6903,-114.6376 258.5965,-118.1873 262.0709,-117.7645 262.0709,-117.7645 262.0709,-117.7645 258.5965,-118.1873 262.4514,-120.8914 255.1221,-118.6102 255.1221,-118.6102\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"300,-114.3155 300,-133.3155 350,-133.3155 350,-114.3155 300,-114.3155\"/>\n",
"<text text-anchor=\"start\" x=\"302\" y=\"-120.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"354\" y=\"-120.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"365,-114.3155 365,-133.3155 386,-133.3155 386,-114.3155 365,-114.3155\"/>\n",
"<text text-anchor=\"start\" x=\"367\" y=\"-120.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>2&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M411.8693,-86.1383C405.5789,-81.6718 397.8309,-77.1035 390,-74.8155 349.8988,-63.099 335.5085,-61.234 296,-74.8155 280.1013,-80.2809 265.1967,-91.9793 254.3454,-102.2104\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"249.0565,-107.3862 251.8563,-100.2388 251.558,-104.9382 254.0595,-102.4902 254.0595,-102.4902 254.0595,-102.4902 251.558,-104.9382 256.2627,-104.7415 249.0565,-107.3862 249.0565,-107.3862\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"298,-76.3155 298,-95.3155 352,-95.3155 352,-76.3155 298,-76.3155\"/>\n",
"<text text-anchor=\"start\" x=\"300\" y=\"-82.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"356\" y=\"-82.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"367,-76.3155 367,-95.3155 388,-95.3155 388,-76.3155 367,-76.3155\"/>\n",
"<text text-anchor=\"start\" x=\"369\" y=\"-82.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>2&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M418.793,-114.4796C417.1914,-124.4405 419.5938,-133.8155 426,-133.8155 430.8047,-133.8155 433.3572,-128.5421 433.6575,-121.7031\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"433.207,-114.4796 436.7867,-121.2699 433.4249,-117.9728 433.6428,-121.466 433.6428,-121.466 433.6428,-121.466 433.4249,-117.9728 430.4989,-121.6621 433.207,-114.4796 433.207,-114.4796\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"385,-135.3155 385,-154.3155 432,-154.3155 432,-135.3155 385,-135.3155\"/>\n",
"<text text-anchor=\"start\" x=\"387\" y=\"-141.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"436\" y=\"-141.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"447,-135.3155 447,-154.3155 468,-154.3155 468,-135.3155 447,-135.3155\"/>\n",
"<text text-anchor=\"start\" x=\"449\" y=\"-141.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>2&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M415.3556,-112.5532C406.5163,-132.0407 410.0645,-156.8155 426,-156.8155 440.0681,-156.8155 444.482,-137.5071 439.2417,-119.5738\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"436.6444,-112.5532 442.0276,-118.0254 437.8588,-115.8358 439.0732,-119.1184 439.0732,-119.1184 439.0732,-119.1184 437.8588,-115.8358 436.1189,-120.2114 436.6444,-112.5532 436.6444,-112.5532\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"383,-158.3155 383,-177.3155 433,-177.3155 433,-158.3155 383,-158.3155\"/>\n",
"<text text-anchor=\"start\" x=\"385\" y=\"-164.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"437\" y=\"-164.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"448,-158.3155 448,-177.3155 469,-177.3155 469,-158.3155 448,-158.3155\"/>\n",
"<text text-anchor=\"start\" x=\"450\" y=\"-164.1155\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0e5855cb10> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simplification lvl 2 : bisimulation-based reduction with output assignement\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"279pt\" height=\"181pt\"\n",
" viewBox=\"0.00 0.00 279.00 181.23\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 177.232)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-177.232 275,-177.232 275,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 1 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-73.232\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-69.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- I&#45;&gt;1 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-73.232C4.178,-73.232 17.9448,-73.232 30.9241,-73.232\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-73.232 30.9808,-76.382 34.4807,-73.232 30.9807,-73.232 30.9807,-73.232 30.9807,-73.232 34.4807,-73.232 30.9807,-70.082 37.9807,-73.232 37.9807,-73.232\"/>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M52.7643,-91.0137C52.2144,-100.5469 53.293,-109.232 56,-109.232 57.988,-109.232 59.0977,-104.548 59.3292,-98.2841\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"59.2357,-91.0137 62.4756,-97.9726 59.2808,-94.5134 59.3258,-98.0131 59.3258,-98.0131 59.3258,-98.0131 59.2808,-94.5134 56.1761,-98.0536 59.2357,-91.0137 59.2357,-91.0137\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"15,-110.732 15,-129.732 62,-129.732 62,-110.732 15,-110.732\"/>\n",
"<text text-anchor=\"start\" x=\"17\" y=\"-116.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"66\" y=\"-116.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"77,-110.732 77,-129.732 98,-129.732 98,-110.732 77,-110.732\"/>\n",
"<text text-anchor=\"start\" x=\"79\" y=\"-116.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M50.8337,-90.6434C47.5982,-109.6474 49.3203,-132.232 56,-132.232 61.8447,-132.232 63.8938,-114.9407 62.1472,-97.8866\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"61.1663,-90.6434 65.2273,-97.1573 61.6361,-94.1117 62.1058,-97.58 62.1058,-97.58 62.1058,-97.58 61.6361,-94.1117 58.9843,-98.0028 61.1663,-90.6434 61.1663,-90.6434\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"13,-133.732 13,-152.732 63,-152.732 63,-133.732 13,-133.732\"/>\n",
"<text text-anchor=\"start\" x=\"15\" y=\"-139.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"67\" y=\"-139.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"78,-133.732 78,-152.732 99,-152.732 99,-133.732 78,-133.732\"/>\n",
"<text text-anchor=\"start\" x=\"80\" y=\"-139.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"222\" cy=\"-73.232\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"222\" y=\"-69.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>1&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M63.7882,-89.9815C69.8139,-100.7859 79.2814,-113.953 92,-120.232 129.4614,-138.7259 148.5386,-138.7259 186,-120.232 196.3339,-115.1303 204.5215,-105.4814 210.4606,-96.2472\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"214.2118,-89.9815 213.3187,-97.6055 212.4139,-92.9845 210.6161,-95.9875 210.6161,-95.9875 210.6161,-95.9875 212.4139,-92.9845 207.9134,-94.3694 214.2118,-89.9815 214.2118,-89.9815\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"96,-134.732 96,-153.732 146,-153.732 146,-134.732 96,-134.732\"/>\n",
"<text text-anchor=\"start\" x=\"98\" y=\"-140.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"150\" y=\"-140.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"161,-134.732 161,-153.732 182,-153.732 182,-134.732 161,-134.732\"/>\n",
"<text text-anchor=\"start\" x=\"163\" y=\"-140.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>1&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M74.3121,-73.839C79.9813,-74.0005 86.2483,-74.1521 92,-74.232 133.7738,-74.812 144.2262,-74.812 186,-74.232 189.4151,-74.1845 193.0118,-74.1118 196.5572,-74.0268\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"203.6879,-73.839 196.7733,-77.1723 200.1891,-73.9312 196.6904,-74.0233 196.6904,-74.0233 196.6904,-74.0233 200.1891,-73.9312 196.6074,-70.8744 203.6879,-73.839 203.6879,-73.839\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94,-75.732 94,-94.732 148,-94.732 148,-75.732 94,-75.732\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-81.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"152\" y=\"-81.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"163,-75.732 163,-94.732 184,-94.732 184,-75.732 163,-75.732\"/>\n",
"<text text-anchor=\"start\" x=\"165\" y=\"-81.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M207.7962,-62.0563C201.4934,-57.783 193.756,-53.4142 186,-51.232 145.7838,-39.9165 132.2162,-39.9165 92,-51.232 86.5466,-52.7664 81.1023,-55.3817 76.1595,-58.2849\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"70.2038,-62.0563 74.4325,-55.65 73.1608,-60.1838 76.1178,-58.3112 76.1178,-58.3112 76.1178,-58.3112 73.1608,-60.1838 77.8031,-60.9725 70.2038,-62.0563 70.2038,-62.0563\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"96,-52.732 96,-71.732 143,-71.732 143,-52.732 96,-52.732\"/>\n",
"<text text-anchor=\"start\" x=\"98\" y=\"-58.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"147\" y=\"-58.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"158,-52.732 158,-71.732 183,-71.732 183,-52.732 158,-52.732\"/>\n",
"<text text-anchor=\"start\" x=\"160\" y=\"-58.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M216.4776,-55.8036C211.0953,-42.056 201.4317,-23.8163 186,-15.232 149.4909,5.0773 128.5091,5.0773 92,-15.232 78.9795,-22.475 70.0654,-36.5918 64.3646,-49.0844\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"61.5224,-55.8036 61.3484,-48.1295 62.886,-52.5801 64.2495,-49.3567 64.2495,-49.3567 64.2495,-49.3567 62.886,-52.5801 67.1506,-50.5838 61.5224,-55.8036 61.5224,-55.8036\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94,-16.732 94,-35.732 144,-35.732 144,-16.732 94,-16.732\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-22.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"148\" y=\"-22.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"159,-16.732 159,-35.732 184,-35.732 184,-16.732 159,-16.732\"/>\n",
"<text text-anchor=\"start\" x=\"161\" y=\"-22.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M214.793,-89.896C213.1914,-99.857 215.5938,-109.232 222,-109.232 226.8047,-109.232 229.3572,-103.9585 229.6575,-97.1195\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"229.207,-89.896 232.7867,-96.6864 229.4249,-93.3892 229.6428,-96.8824 229.6428,-96.8824 229.6428,-96.8824 229.4249,-93.3892 226.4989,-97.0785 229.207,-89.896 229.207,-89.896\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"177,-110.732 177,-129.732 227,-129.732 227,-110.732 177,-110.732\"/>\n",
"<text text-anchor=\"start\" x=\"179\" y=\"-116.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"231\" y=\"-116.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"242,-110.732 242,-129.732 267,-129.732 267,-110.732 242,-110.732\"/>\n",
"<text text-anchor=\"start\" x=\"244\" y=\"-116.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M211.3556,-87.9697C202.5163,-107.4572 206.0645,-132.232 222,-132.232 236.0681,-132.232 240.482,-112.9235 235.2417,-94.9902\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"232.6444,-87.9697 238.0276,-93.4419 233.8588,-91.2522 235.0732,-94.5348 235.0732,-94.5348 235.0732,-94.5348 233.8588,-91.2522 232.1189,-95.6278 232.6444,-87.9697 232.6444,-87.9697\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"175,-133.732 175,-152.732 229,-152.732 229,-133.732 175,-133.732\"/>\n",
"<text text-anchor=\"start\" x=\"177\" y=\"-139.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"233\" y=\"-139.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"244,-133.732 244,-152.732 269,-152.732 269,-133.732 244,-133.732\"/>\n",
"<text text-anchor=\"start\" x=\"246\" y=\"-139.532\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0e5855ccf0> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simplification lvl 3 : SAT-based exact minimization\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"229pt\" height=\"99pt\"\n",
" viewBox=\"0.00 0.00 229.00 99.26\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 95.2559)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-95.2559 225,-95.2559 225,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-32.2559\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-28.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-32.2559C4.178,-32.2559 17.9448,-32.2559 30.9241,-32.2559\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-32.2559 30.9808,-35.406 34.4807,-32.256 30.9807,-32.256 30.9807,-32.256 30.9807,-32.256 34.4807,-32.256 30.9807,-29.106 37.9807,-32.2559 37.9807,-32.2559\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M49.6208,-49.2932C48.3189,-59.1139 50.4453,-68.2559 56,-68.2559 60.166,-68.2559 62.4036,-63.1135 62.7128,-56.3992\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"62.3792,-49.2932 65.8541,-56.1378 62.5434,-52.7894 62.7076,-56.2855 62.7076,-56.2855 62.7076,-56.2855 62.5434,-52.7894 59.561,-56.4333 62.3792,-49.2932 62.3792,-49.2932\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"30,-69.7559 30,-88.7559 47,-88.7559 47,-69.7559 30,-69.7559\"/>\n",
"<text text-anchor=\"start\" x=\"32\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"<text text-anchor=\"start\" x=\"51\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"62,-69.7559 62,-88.7559 83,-88.7559 83,-69.7559 62,-69.7559\"/>\n",
"<text text-anchor=\"start\" x=\"64\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"189\" cy=\"-32.2559\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"189\" y=\"-28.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M74.3121,-32.863C79.9813,-33.0245 86.2483,-33.1761 92,-33.2559 119.1085,-33.6324 125.8915,-33.6324 153,-33.2559 156.4151,-33.2085 160.0118,-33.1358 163.5572,-33.0508\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"170.6879,-32.863 163.7733,-36.1962 167.1891,-32.9552 163.6904,-33.0473 163.6904,-33.0473 163.6904,-33.0473 167.1891,-32.9552 163.6074,-29.8984 170.6879,-32.863 170.6879,-32.863\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94.5,-34.7559 94.5,-53.7559 114.5,-53.7559 114.5,-34.7559 94.5,-34.7559\"/>\n",
"<text text-anchor=\"start\" x=\"96.5\" y=\"-40.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"118.5\" y=\"-40.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"129.5,-34.7559 129.5,-53.7559 150.5,-53.7559 150.5,-34.7559 129.5,-34.7559\"/>\n",
"<text text-anchor=\"start\" x=\"131.5\" y=\"-40.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M175.7776,-19.6276C169.4162,-14.4117 161.3626,-8.96 153,-6.2559 127.204,2.0853 117.796,2.0853 92,-6.2559 85.9894,-8.1995 80.1384,-11.5625 74.9606,-15.2371\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"69.2224,-19.6276 72.8676,-12.8722 72.0021,-17.5008 74.7818,-15.3739 74.7818,-15.3739 74.7818,-15.3739 72.0021,-17.5008 76.6959,-17.8756 69.2224,-19.6276 69.2224,-19.6276\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94.5,-7.7559 94.5,-26.7559 111.5,-26.7559 111.5,-7.7559 94.5,-7.7559\"/>\n",
"<text text-anchor=\"start\" x=\"96.5\" y=\"-13.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"<text text-anchor=\"start\" x=\"115.5\" y=\"-13.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"126.5,-7.7559 126.5,-26.7559 151.5,-26.7559 151.5,-7.7559 126.5,-7.7559\"/>\n",
"<text text-anchor=\"start\" x=\"128.5\" y=\"-13.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M178.0873,-46.6726C174.2765,-57.422 177.9141,-68.2559 189,-68.2559 197.6609,-68.2559 201.7757,-61.6434 201.3443,-53.6247\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"199.9127,-46.6726 204.4099,-52.8934 200.6187,-50.1007 201.3246,-53.5288 201.3246,-53.5288 201.3246,-53.5288 200.6187,-50.1007 198.2394,-54.1641 199.9127,-46.6726 199.9127,-46.6726\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"159,-69.7559 159,-88.7559 179,-88.7559 179,-69.7559 159,-69.7559\"/>\n",
"<text text-anchor=\"start\" x=\"161\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"183\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"194,-69.7559 194,-88.7559 219,-88.7559 219,-69.7559 194,-69.7559\"/>\n",
"<text text-anchor=\"start\" x=\"196\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0e5855cd80> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simplification lvl 4 : First 1 then 3 (exact)\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"226pt\" height=\"99pt\"\n",
" viewBox=\"0.00 0.00 225.50 99.26\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 95.2559)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-95.2559 221.5,-95.2559 221.5,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-32.2559\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-28.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-32.2559C4.178,-32.2559 17.9448,-32.2559 30.9241,-32.2559\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-32.2559 30.9808,-35.406 34.4807,-32.256 30.9807,-32.256 30.9807,-32.256 30.9807,-32.256 34.4807,-32.256 30.9807,-29.106 37.9807,-32.2559 37.9807,-32.2559\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M49.6208,-49.2932C48.3189,-59.1139 50.4453,-68.2559 56,-68.2559 60.166,-68.2559 62.4036,-63.1135 62.7128,-56.3992\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"62.3792,-49.2932 65.8541,-56.1378 62.5434,-52.7894 62.7076,-56.2855 62.7076,-56.2855 62.7076,-56.2855 62.5434,-52.7894 59.561,-56.4333 62.3792,-49.2932 62.3792,-49.2932\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"26,-69.7559 26,-88.7559 46,-88.7559 46,-69.7559 26,-69.7559\"/>\n",
"<text text-anchor=\"start\" x=\"28\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"50\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"61,-69.7559 61,-88.7559 86,-88.7559 86,-69.7559 61,-69.7559\"/>\n",
"<text text-anchor=\"start\" x=\"63\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"189\" cy=\"-32.2559\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"189\" y=\"-28.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M74.3121,-32.863C79.9813,-33.0245 86.2483,-33.1761 92,-33.2559 119.1085,-33.6324 125.8915,-33.6324 153,-33.2559 156.4151,-33.2085 160.0118,-33.1358 163.5572,-33.0508\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"170.6879,-32.863 163.7733,-36.1962 167.1891,-32.9552 163.6904,-33.0473 163.6904,-33.0473 163.6904,-33.0473 167.1891,-32.9552 163.6074,-29.8984 170.6879,-32.863 170.6879,-32.863\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94.5,-34.7559 94.5,-53.7559 111.5,-53.7559 111.5,-34.7559 94.5,-34.7559\"/>\n",
"<text text-anchor=\"start\" x=\"96.5\" y=\"-40.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"<text text-anchor=\"start\" x=\"115.5\" y=\"-40.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"126.5,-34.7559 126.5,-53.7559 151.5,-53.7559 151.5,-34.7559 126.5,-34.7559\"/>\n",
"<text text-anchor=\"start\" x=\"128.5\" y=\"-40.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>1&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M175.7776,-19.6276C169.4162,-14.4117 161.3626,-8.96 153,-6.2559 127.204,2.0853 117.796,2.0853 92,-6.2559 85.9894,-8.1995 80.1384,-11.5625 74.9606,-15.2371\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"69.2224,-19.6276 72.8676,-12.8722 72.0021,-17.5008 74.7818,-15.3739 74.7818,-15.3739 74.7818,-15.3739 72.0021,-17.5008 76.6959,-17.8756 69.2224,-19.6276 69.2224,-19.6276\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94.5,-7.7559 94.5,-26.7559 114.5,-26.7559 114.5,-7.7559 94.5,-7.7559\"/>\n",
"<text text-anchor=\"start\" x=\"96.5\" y=\"-13.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"118.5\" y=\"-13.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"129.5,-7.7559 129.5,-26.7559 150.5,-26.7559 150.5,-7.7559 129.5,-7.7559\"/>\n",
"<text text-anchor=\"start\" x=\"131.5\" y=\"-13.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M178.0873,-46.6726C174.2765,-57.422 177.9141,-68.2559 189,-68.2559 197.6609,-68.2559 201.7757,-61.6434 201.3443,-53.6247\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"199.9127,-46.6726 204.4099,-52.8934 200.6187,-50.1007 201.3246,-53.5288 201.3246,-53.5288 201.3246,-53.5288 200.6187,-50.1007 198.2394,-54.1641 199.9127,-46.6726 199.9127,-46.6726\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"163,-69.7559 163,-88.7559 180,-88.7559 180,-69.7559 163,-69.7559\"/>\n",
"<text text-anchor=\"start\" x=\"165\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"<text text-anchor=\"start\" x=\"184\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"195,-69.7559 195,-88.7559 216,-88.7559 216,-69.7559 195,-69.7559\"/>\n",
"<text text-anchor=\"start\" x=\"197\" y=\"-75.5559\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0e584defc0> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simplification lvl 5 : First 2 then 3 (not exact)\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"279pt\" height=\"187pt\"\n",
" viewBox=\"0.00 0.00 279.00 186.73\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 182.727)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-182.727 275,-182.727 275,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-78.727\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-75.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-78.727C4.178,-78.727 17.9448,-78.727 30.9241,-78.727\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-78.727 30.9808,-81.8771 34.4807,-78.7271 30.9807,-78.7271 30.9807,-78.7271 30.9807,-78.7271 34.4807,-78.7271 30.9807,-75.5771 37.9807,-78.727 37.9807,-78.727\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M52.7643,-96.5088C52.2144,-106.042 53.293,-114.727 56,-114.727 57.988,-114.727 59.0977,-110.0431 59.3292,-103.7791\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"59.2357,-96.5088 62.4756,-103.4677 59.2808,-100.0085 59.3258,-103.5082 59.3258,-103.5082 59.3258,-103.5082 59.2808,-100.0085 56.1761,-103.5487 59.2357,-96.5088 59.2357,-96.5088\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"15,-116.227 15,-135.227 62,-135.227 62,-116.227 15,-116.227\"/>\n",
"<text text-anchor=\"start\" x=\"17\" y=\"-122.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"66\" y=\"-122.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"77,-116.227 77,-135.227 98,-135.227 98,-116.227 77,-116.227\"/>\n",
"<text text-anchor=\"start\" x=\"79\" y=\"-122.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M50.8337,-96.1384C47.5982,-115.1425 49.3203,-137.727 56,-137.727 61.8447,-137.727 63.8938,-120.4358 62.1472,-103.3817\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"61.1663,-96.1384 65.2273,-102.6524 61.6361,-99.6068 62.1058,-103.0751 62.1058,-103.0751 62.1058,-103.0751 61.6361,-99.6068 58.9843,-103.4979 61.1663,-96.1384 61.1663,-96.1384\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"13,-139.227 13,-158.227 63,-158.227 63,-139.227 13,-139.227\"/>\n",
"<text text-anchor=\"start\" x=\"15\" y=\"-145.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"67\" y=\"-145.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"78,-139.227 78,-158.227 99,-158.227 99,-139.227 78,-139.227\"/>\n",
"<text text-anchor=\"start\" x=\"80\" y=\"-145.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"222\" cy=\"-78.727\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"222\" y=\"-75.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M63.7882,-95.4766C69.8139,-106.281 79.2814,-119.4481 92,-125.727 129.4614,-144.221 148.5386,-144.221 186,-125.727 196.3339,-120.6254 204.5215,-110.9765 210.4606,-101.7423\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"214.2118,-95.4766 213.3187,-103.1006 212.4139,-98.4796 210.6161,-101.4825 210.6161,-101.4825 210.6161,-101.4825 212.4139,-98.4796 207.9134,-99.8645 214.2118,-95.4766 214.2118,-95.4766\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"96,-140.227 96,-159.227 146,-159.227 146,-140.227 96,-140.227\"/>\n",
"<text text-anchor=\"start\" x=\"98\" y=\"-146.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"150\" y=\"-146.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"161,-140.227 161,-159.227 182,-159.227 182,-140.227 161,-140.227\"/>\n",
"<text text-anchor=\"start\" x=\"163\" y=\"-146.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M74.3121,-79.3341C79.9813,-79.4956 86.2483,-79.6472 92,-79.727 133.7738,-80.3071 144.2262,-80.3071 186,-79.727 189.4151,-79.6796 193.0118,-79.6069 196.5572,-79.5218\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"203.6879,-79.3341 196.7733,-82.6673 200.1891,-79.4263 196.6904,-79.5184 196.6904,-79.5184 196.6904,-79.5184 200.1891,-79.4263 196.6074,-76.3695 203.6879,-79.3341 203.6879,-79.3341\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94,-81.227 94,-100.227 148,-100.227 148,-81.227 94,-81.227\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-87.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"152\" y=\"-87.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"163,-81.227 163,-100.227 184,-100.227 184,-81.227 163,-81.227\"/>\n",
"<text text-anchor=\"start\" x=\"165\" y=\"-87.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>1&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M208.7776,-66.0987C202.4162,-60.8828 194.3626,-55.4311 186,-52.727 146.2487,-39.8733 131.7513,-39.8733 92,-52.727 85.9894,-54.6706 80.1384,-58.0336 74.9606,-61.7082\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"69.2224,-66.0987 72.8676,-59.3433 72.0021,-63.9719 74.7818,-61.845 74.7818,-61.845 74.7818,-61.845 72.0021,-63.9719 76.6959,-64.3467 69.2224,-66.0987 69.2224,-66.0987\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"96,-54.227 96,-73.227 143,-73.227 143,-54.227 96,-54.227\"/>\n",
"<text text-anchor=\"start\" x=\"98\" y=\"-60.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"147\" y=\"-60.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"158,-54.227 158,-73.227 183,-73.227 183,-54.227 158,-54.227\"/>\n",
"<text text-anchor=\"start\" x=\"160\" y=\"-60.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>1&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M217.3021,-61.0363C212.2732,-46.0148 202.6701,-25.4011 186,-15.727 149.866,5.2423 128.134,5.2423 92,-15.727 77.6741,-24.0407 68.5674,-40.4335 63.0978,-54.4133\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"60.6979,-61.0363 60.1211,-53.3819 61.8903,-57.7457 63.0827,-54.4551 63.0827,-54.4551 63.0827,-54.4551 61.8903,-57.7457 66.0443,-55.5282 60.6979,-61.0363 60.6979,-61.0363\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94,-17.227 94,-36.227 144,-36.227 144,-17.227 94,-17.227\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-23.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"148\" y=\"-23.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"159,-17.227 159,-36.227 184,-36.227 184,-17.227 159,-17.227\"/>\n",
"<text text-anchor=\"start\" x=\"161\" y=\"-23.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M214.793,-95.3911C213.1914,-105.352 215.5938,-114.727 222,-114.727 226.8047,-114.727 229.3572,-109.4536 229.6575,-102.6146\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"229.207,-95.3911 232.7867,-102.1814 229.4249,-98.8843 229.6428,-102.3775 229.6428,-102.3775 229.6428,-102.3775 229.4249,-98.8843 226.4989,-102.5736 229.207,-95.3911 229.207,-95.3911\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"177,-116.227 177,-135.227 227,-135.227 227,-116.227 177,-116.227\"/>\n",
"<text text-anchor=\"start\" x=\"179\" y=\"-122.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"231\" y=\"-122.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"242,-116.227 242,-135.227 267,-135.227 267,-116.227 242,-116.227\"/>\n",
"<text text-anchor=\"start\" x=\"244\" y=\"-122.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M211.3556,-93.4648C202.5163,-112.9522 206.0645,-137.727 222,-137.727 236.0681,-137.727 240.482,-118.4186 235.2417,-100.4853\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"232.6444,-93.4648 238.0276,-98.9369 233.8588,-96.7473 235.0732,-100.0299 235.0732,-100.0299 235.0732,-100.0299 233.8588,-96.7473 232.1189,-101.1229 232.6444,-93.4648 232.6444,-93.4648\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"175,-139.227 175,-158.227 229,-158.227 229,-139.227 175,-139.227\"/>\n",
"<text text-anchor=\"start\" x=\"177\" y=\"-145.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"233\" y=\"-145.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"244,-139.227 244,-158.227 269,-158.227 269,-139.227 244,-139.227\"/>\n",
"<text text-anchor=\"start\" x=\"246\" y=\"-145.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0e5855ca20> >"
]
},
"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 assignement\n",
"# 3 : SAT-based exact minimization\n",
"# 4 : First 1 then 3 (exact)\n",
"# 5 : First 2 then 3 (not exact)\n",
"\n",
"descr = [\"0 : No simplification\", \n",
" \"1 : bisimulation-based reduction\", \n",
" \"2 : bisimulation-based reduction with output assignement\",\n",
" \"3 : SAT-based exact minimization\",\n",
" \"4 : First 1 then 3 (exact)\",\n",
" \"5 : First 2 then 3 (not exact)\"]\n",
"\n",
"\n",
"for i in range(6):\n",
" print(\"simplification lvl \", descr[i])\n",
" si.minimize_lvl = i\n",
" mealy = spot.solved_game_to_mealy(game, si)\n",
" spot.simplify_mealy_here(mealy, si.minimize_lvl, False)\n",
" display(mealy)"
]
},
{
"cell_type": "markdown",
"id": "9d8d52f6",
"metadata": {},
"source": [
"If needed, a separated Mealy machine can be turned into game shape using `split_sepearated_mealy()`, which is more efficient than `split_2step()`."
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "707f4cf6",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div style='vertical-align:text-top;display:inline-block;width:50%;'><?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"279pt\" height=\"187pt\"\n",
" viewBox=\"0.00 0.00 279.00 186.73\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 182.727)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-182.727 275,-182.727 275,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-78.727\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-75.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-78.727C4.178,-78.727 17.9448,-78.727 30.9241,-78.727\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-78.727 30.9808,-81.8771 34.4807,-78.7271 30.9807,-78.7271 30.9807,-78.7271 30.9807,-78.7271 34.4807,-78.7271 30.9807,-75.5771 37.9807,-78.727 37.9807,-78.727\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M52.7643,-96.5088C52.2144,-106.042 53.293,-114.727 56,-114.727 57.988,-114.727 59.0977,-110.0431 59.3292,-103.7791\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"59.2357,-96.5088 62.4756,-103.4677 59.2808,-100.0085 59.3258,-103.5082 59.3258,-103.5082 59.3258,-103.5082 59.2808,-100.0085 56.1761,-103.5487 59.2357,-96.5088 59.2357,-96.5088\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"15,-116.227 15,-135.227 62,-135.227 62,-116.227 15,-116.227\"/>\n",
"<text text-anchor=\"start\" x=\"17\" y=\"-122.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"66\" y=\"-122.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"77,-116.227 77,-135.227 98,-135.227 98,-116.227 77,-116.227\"/>\n",
"<text text-anchor=\"start\" x=\"79\" y=\"-122.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M50.8337,-96.1384C47.5982,-115.1425 49.3203,-137.727 56,-137.727 61.8447,-137.727 63.8938,-120.4358 62.1472,-103.3817\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"61.1663,-96.1384 65.2273,-102.6524 61.6361,-99.6068 62.1058,-103.0751 62.1058,-103.0751 62.1058,-103.0751 61.6361,-99.6068 58.9843,-103.4979 61.1663,-96.1384 61.1663,-96.1384\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"13,-139.227 13,-158.227 63,-158.227 63,-139.227 13,-139.227\"/>\n",
"<text text-anchor=\"start\" x=\"15\" y=\"-145.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"67\" y=\"-145.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"78,-139.227 78,-158.227 99,-158.227 99,-139.227 78,-139.227\"/>\n",
"<text text-anchor=\"start\" x=\"80\" y=\"-145.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"222\" cy=\"-78.727\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"222\" y=\"-75.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M63.7882,-95.4766C69.8139,-106.281 79.2814,-119.4481 92,-125.727 129.4614,-144.221 148.5386,-144.221 186,-125.727 196.3339,-120.6254 204.5215,-110.9765 210.4606,-101.7423\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"214.2118,-95.4766 213.3187,-103.1006 212.4139,-98.4796 210.6161,-101.4825 210.6161,-101.4825 210.6161,-101.4825 212.4139,-98.4796 207.9134,-99.8645 214.2118,-95.4766 214.2118,-95.4766\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"96,-140.227 96,-159.227 146,-159.227 146,-140.227 96,-140.227\"/>\n",
"<text text-anchor=\"start\" x=\"98\" y=\"-146.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"150\" y=\"-146.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"161,-140.227 161,-159.227 182,-159.227 182,-140.227 161,-140.227\"/>\n",
"<text text-anchor=\"start\" x=\"163\" y=\"-146.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M74.3121,-79.3341C79.9813,-79.4956 86.2483,-79.6472 92,-79.727 133.7738,-80.3071 144.2262,-80.3071 186,-79.727 189.4151,-79.6796 193.0118,-79.6069 196.5572,-79.5218\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"203.6879,-79.3341 196.7733,-82.6673 200.1891,-79.4263 196.6904,-79.5184 196.6904,-79.5184 196.6904,-79.5184 200.1891,-79.4263 196.6074,-76.3695 203.6879,-79.3341 203.6879,-79.3341\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94,-81.227 94,-100.227 148,-100.227 148,-81.227 94,-81.227\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-87.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"152\" y=\"-87.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"163,-81.227 163,-100.227 184,-100.227 184,-81.227 163,-81.227\"/>\n",
"<text text-anchor=\"start\" x=\"165\" y=\"-87.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>1&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M208.7776,-66.0987C202.4162,-60.8828 194.3626,-55.4311 186,-52.727 146.2487,-39.8733 131.7513,-39.8733 92,-52.727 85.9894,-54.6706 80.1384,-58.0336 74.9606,-61.7082\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"69.2224,-66.0987 72.8676,-59.3433 72.0021,-63.9719 74.7818,-61.845 74.7818,-61.845 74.7818,-61.845 72.0021,-63.9719 76.6959,-64.3467 69.2224,-66.0987 69.2224,-66.0987\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"96,-54.227 96,-73.227 143,-73.227 143,-54.227 96,-54.227\"/>\n",
"<text text-anchor=\"start\" x=\"98\" y=\"-60.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"147\" y=\"-60.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"158,-54.227 158,-73.227 183,-73.227 183,-54.227 158,-54.227\"/>\n",
"<text text-anchor=\"start\" x=\"160\" y=\"-60.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>1&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M217.3021,-61.0363C212.2732,-46.0148 202.6701,-25.4011 186,-15.727 149.866,5.2423 128.134,5.2423 92,-15.727 77.6741,-24.0407 68.5674,-40.4335 63.0978,-54.4133\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"60.6979,-61.0363 60.1211,-53.3819 61.8903,-57.7457 63.0827,-54.4551 63.0827,-54.4551 63.0827,-54.4551 61.8903,-57.7457 66.0443,-55.5282 60.6979,-61.0363 60.6979,-61.0363\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94,-17.227 94,-36.227 144,-36.227 144,-17.227 94,-17.227\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-23.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"148\" y=\"-23.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"159,-17.227 159,-36.227 184,-36.227 184,-17.227 159,-17.227\"/>\n",
"<text text-anchor=\"start\" x=\"161\" y=\"-23.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M214.793,-95.3911C213.1914,-105.352 215.5938,-114.727 222,-114.727 226.8047,-114.727 229.3572,-109.4536 229.6575,-102.6146\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"229.207,-95.3911 232.7867,-102.1814 229.4249,-98.8843 229.6428,-102.3775 229.6428,-102.3775 229.6428,-102.3775 229.4249,-98.8843 226.4989,-102.5736 229.207,-95.3911 229.207,-95.3911\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"177,-116.227 177,-135.227 227,-135.227 227,-116.227 177,-116.227\"/>\n",
"<text text-anchor=\"start\" x=\"179\" y=\"-122.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"231\" y=\"-122.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"242,-116.227 242,-135.227 267,-135.227 267,-116.227 242,-116.227\"/>\n",
"<text text-anchor=\"start\" x=\"244\" y=\"-122.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M211.3556,-93.4648C202.5163,-112.9522 206.0645,-137.727 222,-137.727 236.0681,-137.727 240.482,-118.4186 235.2417,-100.4853\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"232.6444,-93.4648 238.0276,-98.9369 233.8588,-96.7473 235.0732,-100.0299 235.0732,-100.0299 235.0732,-100.0299 233.8588,-96.7473 232.1189,-101.1229 232.6444,-93.4648 232.6444,-93.4648\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"175,-139.227 175,-158.227 229,-158.227 229,-139.227 175,-139.227\"/>\n",
"<text text-anchor=\"start\" x=\"177\" y=\"-145.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"233\" y=\"-145.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"244,-139.227 244,-158.227 269,-158.227 269,-139.227 244,-139.227\"/>\n",
"<text text-anchor=\"start\" x=\"246\" y=\"-145.027\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n",
"</div><div style='vertical-align:text-top;display:inline-block;width:50%;'><?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"455pt\" height=\"233pt\"\n",
" viewBox=\"0.00 0.00 455.00 233.01\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 229.01)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-229.01 451,-229.01 451,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"220.5\" y=\"-209.81\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">t</text>\n",
"<text text-anchor=\"start\" x=\"212.5\" y=\"-194.81\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[all]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-98.01\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-94.31\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-98.01C4.178,-98.01 17.9448,-98.01 30.9241,-98.01\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-98.01 30.9808,-101.1601 34.4807,-98.01 30.9807,-98.0101 30.9807,-98.0101 30.9807,-98.0101 34.4807,-98.01 30.9807,-94.8601 37.9807,-98.01 37.9807,-98.01\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"187,-59.01 160,-41.01 187,-23.01 214,-41.01 187,-59.01\"/>\n",
"<text text-anchor=\"middle\" x=\"187\" y=\"-37.31\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M65.3666,-82.3451C71.7071,-73.1651 80.9325,-62.1918 92,-56.01 110.743,-45.541 134.6225,-41.8043 153.751,-40.6781\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"160.829,-40.3657 153.9747,-43.8214 157.3324,-40.5201 153.8358,-40.6745 153.8358,-40.6745 153.8358,-40.6745 157.3324,-40.5201 153.6969,-37.5275 160.829,-40.3657 160.829,-40.3657\"/>\n",
"<text text-anchor=\"start\" x=\"94\" y=\"-59.81\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M58.9866,-80.1403C63.0405,-62.195 72.1964,-35.4711 92,-23.01 114.5938,-8.7932 145.7755,-19.1846 166.1574,-29.0976\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"172.6275,-32.4048 164.9609,-32.0236 169.511,-30.8118 166.3946,-29.2188 166.3946,-29.2188 166.3946,-29.2188 169.511,-30.8118 167.8283,-26.4139 172.6275,-32.4048 172.6275,-32.4048\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-26.81\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>3</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"187,-135.01 160,-117.01 187,-99.01 214,-117.01 187,-135.01\"/>\n",
"<text text-anchor=\"middle\" x=\"187\" y=\"-113.31\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;3 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M71.5228,-88.2743C77.6596,-84.9634 84.9272,-81.6797 92,-80.01 113.6278,-74.9044 121.0803,-72.5139 142,-80.01 153.4495,-84.1126 164.0717,-92.5248 172.1175,-100.2927\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"177.2546,-105.5067 170.0978,-102.7311 174.7982,-103.0135 172.3417,-100.5203 172.3417,-100.5203 172.3417,-100.5203 174.7982,-103.0135 174.5856,-98.3095 177.2546,-105.5067 177.2546,-105.5067\"/>\n",
"<text text-anchor=\"start\" x=\"95.5\" y=\"-83.81\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;3 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>0&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M66.549,-112.7238C72.9434,-120.3351 81.8234,-128.8784 92,-133.01 115.7048,-142.6338 144.9992,-135.0444 164.7401,-127.3761\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"171.2995,-124.6886 166.0164,-130.2574 168.0608,-126.0156 164.8221,-127.3426 164.8221,-127.3426 164.8221,-127.3426 168.0608,-126.0156 163.6278,-124.4278 171.2995,-124.6886 171.2995,-124.6886\"/>\n",
"<text text-anchor=\"start\" x=\"94\" y=\"-140.81\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"289\" cy=\"-51.01\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"289\" y=\"-47.31\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>2&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M210.6572,-43.3293C226.5802,-44.8904 247.5517,-46.9464 263.7896,-48.5384\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"270.882,-49.2337 263.608,-51.6856 267.3987,-48.8922 263.9154,-48.5506 263.9154,-48.5506 263.9154,-48.5506 267.3987,-48.8922 264.2228,-45.4157 270.882,-49.2337 270.882,-49.2337\"/>\n",
"<text text-anchor=\"start\" x=\"234\" y=\"-51.81\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;0 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>3&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M164.4523,-113.7397C141.2212,-110.3703 105.097,-105.1309 81.0037,-101.6365\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"73.9403,-100.612 81.32,-98.4995 77.4041,-101.1144 80.8678,-101.6169 80.8678,-101.6169 80.8678,-101.6169 77.4041,-101.1144 80.4157,-104.7342 73.9403,-100.612 73.9403,-100.612\"/>\n",
"<text text-anchor=\"start\" x=\"108.5\" y=\"-113.81\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"420,-164.01 393,-146.01 420,-128.01 447,-146.01 420,-164.01\"/>\n",
"<text text-anchor=\"middle\" x=\"420\" y=\"-142.31\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">4</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;4 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>1&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M293.0946,-68.8167C297.8893,-85.5863 307.5012,-110.1435 325,-124.01 342.2534,-137.682 366.4893,-143.141 386.1632,-145.2029\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"393.1836,-145.8178 385.9354,-148.345 389.697,-145.5124 386.2103,-145.207 386.2103,-145.207 386.2103,-145.207 389.697,-145.5124 386.4852,-142.069 393.1836,-145.8178 393.1836,-145.8178\"/>\n",
"<text text-anchor=\"start\" x=\"328.5\" y=\"-146.81\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;4 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>1&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M304.6069,-60.3504C325.8096,-73.1182 362.5071,-95.5167 375,-105.01 384.9823,-112.5955 395.3758,-121.9546 403.6561,-129.8148\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"409.0199,-134.9768 401.7919,-132.3925 406.498,-132.5499 403.9761,-130.1229 403.9761,-130.1229 403.9761,-130.1229 406.498,-132.5499 406.1604,-127.8532 409.0199,-134.9768 409.0199,-134.9768\"/>\n",
"<text text-anchor=\"start\" x=\"327\" y=\"-108.81\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>5</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"420,-50.01 393,-32.01 420,-14.01 447,-32.01 420,-50.01\"/>\n",
"<text text-anchor=\"middle\" x=\"420\" y=\"-28.31\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">5</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;5 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>1&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M307.2994,-51.9803C324.8335,-52.5331 351.9591,-52.3992 375,-48.01 382.3306,-46.6135 390.0688,-44.2214 397.0218,-41.7063\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"403.669,-39.1825 398.2429,-44.6121 400.3969,-40.4249 397.1248,-41.6673 397.1248,-41.6673 397.1248,-41.6673 400.3969,-40.4249 396.0067,-38.7224 403.669,-39.1825 403.669,-39.1825\"/>\n",
"<text text-anchor=\"start\" x=\"327\" y=\"-56.81\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;5 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>1&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M303.2038,-39.8344C309.5066,-35.561 317.244,-31.1923 325,-29.01 346.9727,-22.8276 372.9371,-24.2024 392.164,-26.7724\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"399.1806,-27.8027 391.7972,-29.9023 395.7178,-27.2942 392.2549,-26.7857 392.2549,-26.7857 392.2549,-26.7857 395.7178,-27.2942 392.7125,-23.6691 399.1806,-27.8027 399.1806,-27.8027\"/>\n",
"<text text-anchor=\"start\" x=\"325\" y=\"-32.81\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;0 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>4&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M403.6952,-153.327C395.3057,-156.6974 384.8052,-160.3187 375,-162.01 353.1012,-165.7873 347.2204,-162.296 325,-162.01 221.4187,-160.6765 181.8703,-207.5288 92,-156.01 79.0738,-148.6 70.1614,-134.4801 64.4379,-122.0278\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"61.581,-115.3346 67.2262,-120.536 62.955,-118.5536 64.329,-121.7726 64.329,-121.7726 64.329,-121.7726 62.955,-118.5536 61.4319,-123.0093 61.581,-115.3346 61.581,-115.3346\"/>\n",
"<text text-anchor=\"start\" x=\"232\" y=\"-175.81\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;1 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>5&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M407.4194,-22.3219C398.8118,-16.3271 386.8523,-9.1878 375,-6.01 353.5359,-.255 345.029,3.6164 325,-6.01 315.0357,-10.7991 306.9661,-19.8379 301.0121,-28.5656\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"297.2307,-34.502 298.3347,-26.9056 299.1111,-31.55 300.9915,-28.598 300.9915,-28.598 300.9915,-28.598 299.1111,-31.55 303.6483,-30.2903 297.2307,-34.502 297.2307,-34.502\"/>\n",
"<text text-anchor=\"start\" x=\"339.5\" y=\"-9.81\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n",
"</div>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display_inline(mealy, spot.split_separated_mealy(mealy), per_row=2)"
]
},
{
"cell_type": "markdown",
"id": "b9e4412e",
"metadata": {},
"source": [
"# Converting the separated Mealy machine to AIG\n",
"\n",
"A separated Mealy machine can be converted to a circuit in the [AIGER format](http://fmv.jku.at/aiger/FORMAT.aiger) using `mealy_machine_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 if `i0` can be ignored."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "9f344931",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"266pt\" height=\"208pt\"\n",
" viewBox=\"0.00 0.00 266.19 208.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 204)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-204 262.1926,-204 262.1926,4 -4,4\"/>\n",
"<!-- 6 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>6</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"#000000\" points=\"77.1961,-118 11.1961,-118 11.1961,-82 77.1961,-82 77.1961,-118\"/>\n",
"<text text-anchor=\"middle\" x=\"44.1961\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">L0_out</text>\n",
"</g>\n",
"<!-- o0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>o0</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"#000000\" points=\"44.1961,-154 88.5891,-188.5 -.197,-188.5 44.1961,-154\"/>\n",
"<text text-anchor=\"middle\" x=\"44.1961\" y=\"-173.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;o0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>6&#45;&gt;o0:s</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M44.1961,-118C44.1961,-126.2031 44.1961,-136.2373 44.1961,-145.9568\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"44.1961\" cy=\"-150\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- L0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>L0</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"#000000\" points=\"151.1961,-118 95.1961,-118 95.1961,-82 151.1961,-82 151.1961,-118\"/>\n",
"<text text-anchor=\"middle\" x=\"123.1961\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">L0_in</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"123.1961,-46 84.203,-11.5 162.1892,-11.5 123.1961,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"123.1961\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;L0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>2&#45;&gt;L0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M123.1961,-46.1025C123.1961,-54.6964 123.1961,-64.5158 123.1961,-73.3982\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"123.1961\" cy=\"-77.5566\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"219.1961,-46 180.203,-11.5 258.1892,-11.5 219.1961,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"219.1961\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i0</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.aig; proxy of <Swig Object of type 'std::shared_ptr< spot::aig > *' at 0x7f0e584deae0> >"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"aig = spot.mealy_machine_to_aig(mealy, \"isop\")\n",
"display(aig)"
]
},
{
"cell_type": "markdown",
"id": "92bbe8d0",
"metadata": {},
"source": [
"While we are at it, let us mention that you can render those circuits horizontally as follows:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "3ae7ce32",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"312pt\" height=\"172pt\"\n",
" viewBox=\"0.00 0.00 312.39 172.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 168)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-168 308.3852,-168 308.3852,4 -4,4\"/>\n",
"<!-- 6 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>6</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"#000000\" points=\"179.9931,-41 113.9931,-41 113.9931,-5 179.9931,-5 179.9931,-41\"/>\n",
"<text text-anchor=\"middle\" x=\"146.9931\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">L0_out</text>\n",
"</g>\n",
"<!-- o0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>o0</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"#000000\" points=\"215.7961,-23 282.3857,0 282.3857,-46 215.7961,-23\"/>\n",
"<text text-anchor=\"middle\" x=\"260.1892\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;o0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>6&#45;&gt;o0:w</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M180.334,-23C189.0884,-23 198.6813,-23 207.9549,-23\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"211.9931\" cy=\"-23\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- L0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>L0</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"#000000\" points=\"174.9931,-95 118.9931,-95 118.9931,-59 174.9931,-59 174.9931,-95\"/>\n",
"<text text-anchor=\"middle\" x=\"146.9931\" y=\"-73.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">L0_in</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"77.9896,-77 19.5,-100 19.5,-54 77.9896,-77\"/>\n",
"<text text-anchor=\"middle\" x=\"38.9965\" y=\"-73.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;L0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>2&#45;&gt;L0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M78.2913,-77C88.8559,-77 100.2334,-77 110.6309,-77\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"114.7252\" cy=\"-77\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"77.9896,-141 19.5,-164 19.5,-118 77.9896,-141\"/>\n",
"<text text-anchor=\"middle\" x=\"38.9965\" y=\"-137.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i0</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.jupyter.SVG object>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"aig.show('h')"
]
},
{
"cell_type": "markdown",
"id": "44fbc0ac",
"metadata": {},
"source": [
"To encode the circuit in the AIGER format (ASCII version) use:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "566715d5",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"aag 3 2 1 1 0\n",
"2\n",
"4\n",
"6 3\n",
"7\n",
"i0 i1\n",
"i1 i0\n",
"o0 o0\n"
]
}
],
"source": [
"print(aig.to_str())"
]
},
{
"cell_type": "markdown",
"id": "ef304f36",
"metadata": {},
"source": [
"# Adding more inputs and outputs by force"
]
},
{
"cell_type": "markdown",
"id": "5c2b0b78",
"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": "874c7df1",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"392pt\" height=\"223pt\"\n",
" viewBox=\"0.00 0.00 392.00 222.85\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 218.851)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-218.851 388,-218.851 388,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"171\" y=\"-200.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n",
"<text text-anchor=\"start\" x=\"193\" y=\"-200.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"209\" y=\"-200.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)</text>\n",
"<text text-anchor=\"start\" x=\"169\" y=\"-186.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Büchi]</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=\"-89.851\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-86.151\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
"</g>\n",
"<!-- I&#45;&gt;3 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-89.851C4.178,-89.851 17.9448,-89.851 30.9241,-89.851\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-89.851 30.9808,-93.0011 34.4807,-89.851 30.9807,-89.8511 30.9807,-89.8511 30.9807,-89.8511 34.4807,-89.851 30.9807,-86.7011 37.9807,-89.851 37.9807,-89.851\"/>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>6</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"153,-139.851 126,-121.851 153,-103.851 180,-121.851 153,-139.851\"/>\n",
"<text text-anchor=\"middle\" x=\"153\" y=\"-118.151\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">6</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;6 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>3&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M73.3417,-95.572C88.5045,-100.5741 110.7133,-107.9008 127.8315,-113.548\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"134.8209,-115.8537 127.1864,-116.6521 131.4971,-114.7572 128.1732,-113.6607 128.1732,-113.6607 128.1732,-113.6607 131.4971,-114.7572 129.1601,-110.6692 134.8209,-115.8537 134.8209,-115.8537\"/>\n",
"<text text-anchor=\"start\" x=\"93.5\" y=\"-109.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0</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,-80.851 126,-62.851 153,-44.851 180,-62.851 153,-80.851\"/>\n",
"<text text-anchor=\"middle\" x=\"153\" y=\"-59.151\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">7</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;7 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>3&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M72.6544,-82.7301C78.6762,-80.3277 85.5749,-77.7714 92,-75.851 102.4524,-72.7269 114.1257,-70.0483 124.4399,-67.9485\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"131.3316,-66.5888 125.0737,-71.0342 127.8978,-67.2663 124.464,-67.9438 124.464,-67.9438 124.464,-67.9438 127.8978,-67.2663 123.8543,-64.8533 131.3316,-66.5888 131.3316,-66.5888\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-79.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0</text>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"255\" cy=\"-97.851\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"255\" y=\"-94.151\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"357,-128.851 330,-110.851 357,-92.851 384,-110.851 357,-128.851\"/>\n",
"<text text-anchor=\"middle\" x=\"357\" y=\"-107.151\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">4</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;4 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M266.8292,-111.8858C273.2312,-118.3797 281.7212,-125.4065 291,-128.851 305.981,-134.4123 323.4458,-129.1557 336.6454,-122.9163\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"343.1234,-119.616 338.3161,-125.6004 340.0048,-121.2048 336.8862,-122.7937 336.8862,-122.7937 336.8862,-122.7937 340.0048,-121.2048 335.4562,-119.9869 343.1234,-119.616 343.1234,-119.616\"/>\n",
"<text text-anchor=\"start\" x=\"297\" y=\"-149.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"293.5\" y=\"-134.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;0 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>4&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M340.6952,-103.5339C332.3057,-100.1636 321.8052,-96.5423 312,-94.851 301.5488,-93.0483 289.8739,-93.2772 279.8251,-94.1541\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"272.8362,-94.8873 279.4692,-91.024 276.2649,-94.0248 279.7458,-93.6596 279.798,-94.1568 279.8501,-94.6541 276.3692,-95.0194 280.1267,-97.2896 272.8362,-94.8873 272.8362,-94.8873\"/>\n",
"<text text-anchor=\"start\" x=\"297\" y=\"-113.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"293.5\" y=\"-98.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"255\" cy=\"-43.851\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"255\" y=\"-40.151\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>5</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"357,-48.851 330,-30.851 357,-12.851 384,-30.851 357,-48.851\"/>\n",
"<text text-anchor=\"middle\" x=\"357\" y=\"-27.151\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">5</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;5 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>1&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M273.2356,-41.5269C288.1771,-39.6225 309.6253,-36.8889 327.0775,-34.6646\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"334.2817,-33.7465 327.7362,-37.7563 330.8098,-34.189 327.3379,-34.6315 327.3379,-34.6315 327.3379,-34.6315 330.8098,-34.189 326.9396,-31.5068 334.2817,-33.7465 334.2817,-33.7465\"/>\n",
"<text text-anchor=\"start\" x=\"297\" y=\"-57.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"293.5\" y=\"-42.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;1 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>5&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M345.7181,-20.1427C332.5203,-8.9804 310.0494,5.7732 291,-2.851 281.923,-6.9604 274.2274,-14.6148 268.3104,-22.2072\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"264.139,-27.9414 265.7097,-20.4276 265.7937,-24.8169 267.8527,-21.9866 268.257,-22.2807 268.6613,-22.5749 266.6024,-25.4052 270.8043,-24.1338 264.139,-27.9414 264.139,-27.9414\"/>\n",
"<text text-anchor=\"start\" x=\"291\" y=\"-21.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"293.5\" y=\"-6.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</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=\"-160.851\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"255\" y=\"-157.151\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;6 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>2&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M242.0237,-148.1962C235.5924,-142.6329 227.4121,-136.5382 219,-132.851 208.527,-128.2605 196.3496,-125.5739 185.3271,-124.0057\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"178.2801,-123.1279 185.6158,-120.8674 181.7532,-123.5606 185.2264,-123.9932 185.2264,-123.9932 185.2264,-123.9932 181.7532,-123.5606 184.837,-127.1191 178.2801,-123.1279 178.2801,-123.1279\"/>\n",
"<text text-anchor=\"middle\" x=\"208.5\" y=\"-136.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</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=\"M165.522,-111.7952C174.105,-105.5719 186.0588,-98.1585 198,-94.851 208.2975,-91.9987 220.0329,-92.0815 230.1679,-93.1328\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"237.2215,-94.0414 229.8763,-96.2712 233.6862,-94.0901 230.2149,-93.6429 230.2788,-93.147 230.3427,-92.6511 233.814,-93.0983 230.6813,-90.0228 237.2215,-94.0414 237.2215,-94.0414\"/>\n",
"<text text-anchor=\"start\" x=\"200\" y=\"-98.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;2 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>6&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M166.6424,-131.1786C175.2959,-136.7223 186.9136,-143.4989 198,-147.851 208.1876,-151.8503 219.9056,-154.7869 230.0574,-156.8465\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"237.1284,-158.1939 229.6624,-159.9779 233.6902,-157.5387 230.2521,-156.8835 230.2521,-156.8835 230.2521,-156.8835 233.6902,-157.5387 230.8418,-153.7892 237.1284,-158.1939 237.1284,-158.1939\"/>\n",
"<text text-anchor=\"start\" x=\"198\" y=\"-157.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</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=\"M174.1345,-58.9142C190.4731,-55.8707 213.126,-51.651 230.3005,-48.4519\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"237.2912,-47.1497 230.9865,-51.5284 233.942,-48.2822 230.5012,-48.9232 230.4096,-48.4316 230.318,-47.9401 233.7588,-47.2991 229.8327,-45.3349 237.2912,-47.1497 237.2912,-47.1497\"/>\n",
"<text text-anchor=\"start\" x=\"198\" y=\"-57.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0e5855cb70> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"380pt\" height=\"151pt\"\n",
" viewBox=\"0.00 0.00 380.00 151.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 147)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-147 376,-147 376,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"183\" y=\"-127.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">t</text>\n",
"<text text-anchor=\"start\" x=\"175\" y=\"-112.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[all]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-60\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-56.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-60C4.178,-60 17.9448,-60 30.9241,-60\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-60 30.9808,-63.1501 34.4807,-60 30.9807,-60.0001 30.9807,-60.0001 30.9807,-60.0001 34.4807,-60 30.9807,-56.8501 37.9807,-60 37.9807,-60\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"153,-105 126,-87 153,-69 180,-87 153,-105\"/>\n",
"<text text-anchor=\"middle\" x=\"153\" y=\"-83.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M73.3417,-64.8271C88.2184,-68.968 109.8778,-74.9969 126.8572,-79.7231\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"133.8142,-81.6596 126.2258,-82.8171 130.4424,-80.721 127.0706,-79.7825 127.0706,-79.7825 127.0706,-79.7825 130.4424,-80.721 127.9153,-76.7478 133.8142,-81.6596 133.8142,-81.6596\"/>\n",
"<text text-anchor=\"start\" x=\"93.5\" y=\"-77.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"153,-51 126,-33 153,-15 180,-33 153,-51\"/>\n",
"<text text-anchor=\"middle\" x=\"153\" y=\"-29.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">4</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;4 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M73.3417,-55.1729C88.2184,-51.032 109.8778,-45.0031 126.8572,-40.2769\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"133.8142,-38.3404 127.9153,-43.2522 130.4424,-39.279 127.0706,-40.2175 127.0706,-40.2175 127.0706,-40.2175 130.4424,-39.279 126.2258,-37.1829 133.8142,-38.3404 133.8142,-38.3404\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-52.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"255\" cy=\"-87\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"255\" y=\"-83.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>2&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M180.0663,-87C195.4852,-87 214.6786,-87 229.7802,-87\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"236.8306,-87 229.8306,-90.1501 233.3306,-87 229.8306,-87.0001 229.8306,-87.0001 229.8306,-87.0001 233.3306,-87 229.8305,-83.8501 236.8306,-87 236.8306,-87\"/>\n",
"<text text-anchor=\"start\" x=\"200\" y=\"-90.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"255\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"255\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;3 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>4&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M175.1325,-29.7452C191.1885,-27.384 212.9362,-24.1858 229.6837,-21.723\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"236.9883,-20.6488 230.5211,-24.7838 233.5255,-21.1581 230.0627,-21.6673 230.0627,-21.6673 230.0627,-21.6673 233.5255,-21.1581 229.6044,-18.5508 236.9883,-20.6488 236.9883,-20.6488\"/>\n",
"<text text-anchor=\"start\" x=\"198\" y=\"-28.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>5</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"345,-105 318,-87 345,-69 372,-87 345,-105\"/>\n",
"<text text-anchor=\"middle\" x=\"345\" y=\"-83.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">5</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;5 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M273.2128,-87C283.9471,-87 297.8786,-87 310.6089,-87\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"317.9322,-87 310.9323,-90.1501 314.4322,-87 310.9322,-87.0001 310.9322,-87.0001 310.9322,-87.0001 314.4322,-87 310.9322,-83.8501 317.9322,-87 317.9322,-87\"/>\n",
"<text text-anchor=\"middle\" x=\"295.5\" y=\"-90.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</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=\"#000000\" d=\"M331.459,-77.5583C320.6676,-71.1818 305.0844,-64.5113 291,-68 286.1146,-69.2101 281.1612,-71.2174 276.5558,-73.4847\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"270.1057,-76.93 274.7959,-70.8534 273.1929,-75.2809 276.2801,-73.6319 276.2801,-73.6319 276.2801,-73.6319 273.1929,-75.2809 277.7642,-76.4104 270.1057,-76.93 270.1057,-76.93\"/>\n",
"<text text-anchor=\"middle\" x=\"295.5\" y=\"-71.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;4 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>3&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M238.9259,-9.5005C227.4496,-4.5368 211.6855,.0278 198,-4 188.195,-6.8857 178.5101,-12.6435 170.6514,-18.2734\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"165.026,-22.5039 168.7272,-15.779 167.8233,-20.4002 170.6205,-18.2966 170.6205,-18.2966 170.6205,-18.2966 167.8233,-20.4002 172.5139,-20.8141 165.026,-22.5039 165.026,-22.5039\"/>\n",
"<text text-anchor=\"middle\" x=\"208.5\" y=\"-7.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0e5855cc60> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div style='vertical-align:text-top;display:inline-block;'><?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"282pt\" height=\"149pt\"\n",
" viewBox=\"0.00 0.00 282.00 148.79\" 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 144.7892)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-144.7892 278,-144.7892 278,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"134\" y=\"-125.5892\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">t</text>\n",
"<text text-anchor=\"start\" x=\"126\" y=\"-110.5892\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[all]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-57.7892\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-54.0892\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-57.7892C4.178,-57.7892 17.9448,-57.7892 30.9241,-57.7892\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-57.7892 30.9808,-60.9393 34.4807,-57.7893 30.9807,-57.7893 30.9807,-57.7893 30.9807,-57.7893 34.4807,-57.7893 30.9807,-54.6393 37.9807,-57.7892 37.9807,-57.7892\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"154,-102.7892 127,-84.7892 154,-66.7892 181,-84.7892 154,-102.7892\"/>\n",
"<text text-anchor=\"middle\" x=\"154\" y=\"-81.0892\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M72.1667,-65.9774C78.2588,-68.7936 85.329,-71.7482 92,-73.7892 102.1784,-76.9034 113.5832,-79.2399 123.809,-80.9398\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"131.0122,-82.0671 123.6093,-84.0968 127.5543,-81.5259 124.0964,-80.9847 124.0964,-80.9847 124.0964,-80.9847 127.5543,-81.5259 124.5835,-77.8726 131.0122,-82.0671 131.0122,-82.0671\"/>\n",
"<text text-anchor=\"start\" x=\"94\" y=\"-81.5892\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>3</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"154,-37.7892 127,-19.7892 154,-1.7892 181,-19.7892 154,-37.7892\"/>\n",
"<text text-anchor=\"middle\" x=\"154\" y=\"-16.0892\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;3 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M69.9281,-46.1588C76.3043,-41.3683 84.1733,-36.1616 92,-32.7892 101.9298,-28.5107 113.3768,-25.6011 123.7111,-23.6401\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"130.6555,-22.4287 124.3009,-26.7348 127.2076,-23.0302 123.7596,-23.6317 123.7596,-23.6317 123.7596,-23.6317 127.2076,-23.0302 123.2183,-20.5285 130.6555,-22.4287 130.6555,-22.4287\"/>\n",
"<text text-anchor=\"start\" x=\"92.5\" y=\"-36.5892\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;0 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>2&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M142.4044,-74.2388C133.86,-67.2136 121.5812,-58.5985 109,-54.7892 100.1793,-52.1186 90.1626,-51.9921 81.2303,-52.8297\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"74.0322,-53.7254 80.5896,-49.7351 77.5054,-53.2932 80.9786,-52.861 80.9786,-52.861 80.9786,-52.861 77.5054,-53.2932 81.3676,-55.9869 74.0322,-53.7254 74.0322,-53.7254\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-58.5892\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"256\" cy=\"-19.7892\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"256\" y=\"-16.0892\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;1 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>3&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M181.0663,-19.7892C196.4852,-19.7892 215.6786,-19.7892 230.7802,-19.7892\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"237.8306,-19.7892 230.8306,-22.9393 234.3306,-19.7893 230.8306,-19.7893 230.8306,-19.7893 230.8306,-19.7893 234.3306,-19.7893 230.8305,-16.6393 237.8306,-19.7892 237.8306,-19.7892\"/>\n",
"<text text-anchor=\"start\" x=\"199\" y=\"-23.5892\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;3 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M240.4772,-10.0535C234.3404,-6.7427 227.0728,-3.4589 220,-1.7892 204.8413,1.7892 187.8936,-3.0221 174.9677,-8.5666\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"168.6057,-11.4924 173.6493,-5.7057 171.7856,-10.03 174.9655,-8.5676 174.9655,-8.5676 174.9655,-8.5676 171.7856,-10.03 176.2816,-11.4295 168.6057,-11.4924 168.6057,-11.4924\"/>\n",
"<text text-anchor=\"middle\" x=\"209.5\" y=\"-5.5892\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n",
"</div><div style='vertical-align:text-top;display:inline-block;'><?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"229pt\" height=\"85pt\"\n",
" viewBox=\"0.00 0.00 228.50 85.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 81)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-81 224.5,-81 224.5,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-18C4.178,-18 17.9448,-18 30.9241,-18\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-18 30.9808,-21.1501 34.4807,-18 30.9807,-18.0001 30.9807,-18.0001 30.9807,-18.0001 34.4807,-18 30.9807,-14.8501 37.9807,-18 37.9807,-18\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M49.6208,-35.0373C48.3189,-44.8579 50.4453,-54 56,-54 60.166,-54 62.4036,-48.8576 62.7128,-42.1433\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"62.3792,-35.0373 65.8541,-41.8818 62.5434,-38.5335 62.7076,-42.0296 62.7076,-42.0296 62.7076,-42.0296 62.5434,-38.5335 59.561,-42.1774 62.3792,-35.0373 62.3792,-35.0373\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"30,-55.5 30,-74.5 47,-74.5 47,-55.5 30,-55.5\"/>\n",
"<text text-anchor=\"start\" x=\"32\" y=\"-61.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0</text>\n",
"<text text-anchor=\"start\" x=\"51\" y=\"-61.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"62,-55.5 62,-74.5 83,-74.5 83,-55.5 62,-55.5\"/>\n",
"<text text-anchor=\"start\" x=\"64\" y=\"-61.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"192\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"192\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M74.0597,-18C97.8362,-18 139.7672,-18 166.6957,-18\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"173.8656,-18 166.8656,-21.1501 170.3656,-18 166.8656,-18.0001 166.8656,-18.0001 166.8656,-18.0001 170.3656,-18 166.8655,-14.8501 173.8656,-18 173.8656,-18\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"94,-19.5 94,-38.5 114,-38.5 114,-19.5 94,-19.5\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-25.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0</text>\n",
"<text text-anchor=\"start\" x=\"118\" y=\"-25.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"129,-19.5 129,-38.5 154,-38.5 154,-19.5 129,-19.5\"/>\n",
"<text text-anchor=\"start\" x=\"131\" y=\"-25.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M180.7566,-32.4167C176.8303,-43.166 180.5781,-54 192,-54 200.9233,-54 205.1628,-47.3875 204.7184,-39.3688\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"203.2434,-32.4167 207.7777,-38.6105 203.9698,-35.8405 204.6963,-39.2643 204.6963,-39.2643 204.6963,-39.2643 203.9698,-35.8405 201.6149,-39.918 203.2434,-32.4167 203.2434,-32.4167\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"166,-55.5 166,-74.5 179,-74.5 179,-55.5 166,-55.5\"/>\n",
"<text text-anchor=\"start\" x=\"168\" y=\"-61.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"183\" y=\"-61.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"194,-55.5 194,-74.5 219,-74.5 219,-55.5 194,-55.5\"/>\n",
"<text text-anchor=\"start\" x=\"196\" y=\"-61.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n",
"</div>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"143pt\" height=\"352pt\"\n",
" viewBox=\"0.00 0.00 143.20 352.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 348)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-348 139.1961,-348 139.1961,4 -4,4\"/>\n",
"<!-- 4 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"#000000\" points=\"66,-118 0,-118 0,-82 66,-82 66,-118\"/>\n",
"<text text-anchor=\"middle\" x=\"33\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">L0_out</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"63\" cy=\"-172\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"63\" y=\"-168.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">6</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;6 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>4&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M40.5703,-118.1686C44.2957,-127.1097 48.8392,-138.014 52.8602,-147.6645\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"54.4089\" cy=\"-151.3814\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- L0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>L0</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"#000000\" points=\"63,-262 7,-262 7,-226 63,-226 63,-262\"/>\n",
"<text text-anchor=\"middle\" x=\"35\" y=\"-240.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">L0_in</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;L0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>6&#45;&gt;L0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M56.3644,-189.063C52.9701,-197.7912 48.7684,-208.5956 44.9916,-218.3072\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"43.5273\" cy=\"-222.0728\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- o0 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>o0</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"#000000\" points=\"91,-298 135.393,-332.5 46.607,-332.5 91,-298\"/>\n",
"<text text-anchor=\"middle\" x=\"91\" y=\"-317.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;o0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>6&#45;&gt;o0:s</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M69.3536,-189.2599C76.9049,-211.2221 88.7373,-250.7491 90.7152,-287.6717\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"87.2256,-288.1003 91,-298 94.2229,-287.9073 87.2256,-288.1003\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"94,-46 55.0069,-11.5 132.9931,-11.5 94,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"94\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i0</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;6 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>2&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M90.1917,-42.6751C86.4398,-61.9047 80.4887,-91.9979 75,-118 73.2149,-126.457 71.2017,-135.6418 69.3416,-143.9975\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"65.8669,-143.4974 67.0958,-154.0208 72.6976,-145.0279 65.8669,-143.4974\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.aig; proxy of <Swig Object of type 'std::shared_ptr< spot::aig > *' at 0x7f0e5855c9f0> >"
]
},
"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",
"mealy = spot.solved_game_to_mealy(game)\n",
"display(mealy)\n",
"spot.simplify_mealy_here(mealy, 2, True)\n",
"display_inline(mealy, spot.unsplit_mealy(mealy))\n",
"aig = spot.mealy_machine_to_aig(mealy, \"isop\")\n",
"display(aig)"
]
},
{
"cell_type": "markdown",
"id": "c564dba3",
"metadata": {},
"source": [
"To force the presence of extra variables in the circuit, they can be passed to `mealy_machine_to_aig()`."
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "c31a3b38",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"333pt\" height=\"352pt\"\n",
" viewBox=\"0.00 0.00 333.00 352.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 348)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-348 328.9965,-348 328.9965,4 -4,4\"/>\n",
"<!-- 6 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>6</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"#000000\" points=\"66,-118 0,-118 0,-82 66,-82 66,-118\"/>\n",
"<text text-anchor=\"middle\" x=\"33\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">L0_out</text>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"63\" cy=\"-172\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"63\" y=\"-168.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">8</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;8 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>6&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M40.5703,-118.1686C44.2957,-127.1097 48.8392,-138.014 52.8602,-147.6645\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"54.4089\" cy=\"-151.3814\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- L0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>L0</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"#000000\" points=\"68,-262 12,-262 12,-226 68,-226 68,-262\"/>\n",
"<text text-anchor=\"middle\" x=\"40\" y=\"-240.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">L0_in</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;L0 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>8&#45;&gt;L0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M57.4323,-189.4292C54.6695,-198.078 51.2776,-208.6961 48.2225,-218.26\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"46.9738\" cy=\"-222.1691\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- o0 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>o0</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"#000000\" points=\"96,-298 140.393,-332.5 51.607,-332.5 96,-298\"/>\n",
"<text text-anchor=\"middle\" x=\"96\" y=\"-317.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;o0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>8&#45;&gt;o0:s</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M70.3238,-188.7535C79.2103,-210.5107 93.3039,-250.1396 95.6606,-287.5301\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"92.1778,-288.1187 96,-298 99.1741,-287.8918 92.1778,-288.1187\"/>\n",
"</g>\n",
"<!-- o1 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>o1</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"#000000\" points=\"202,-298 246.393,-332.5 157.607,-332.5 202,-298\"/>\n",
"<text text-anchor=\"middle\" x=\"202\" y=\"-317.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">o1</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"94,-46 55.0069,-11.5 132.9931,-11.5 94,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"94\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i0</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;8 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>2&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M90.1917,-42.6751C86.4398,-61.9047 80.4887,-91.9979 75,-118 73.2149,-126.457 71.2017,-135.6418 69.3416,-143.9975\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"65.8669,-143.4974 67.0958,-154.0208 72.6976,-145.0279 65.8669,-143.4974\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"286,-46 247.0069,-11.5 324.9931,-11.5 286,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"286\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>0</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"#000000\" points=\"229,-41 175,-41 175,-5 229,-5 229,-41\"/>\n",
"<text text-anchor=\"middle\" x=\"202\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">False</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;o1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;o1:s</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M202,-41.0182C202,-83.4483 202,-193.2273 202,-287.9984\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"198.5001,-288 202,-298 205.5001,-288 198.5001,-288\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.aig; proxy of <Swig Object of type 'std::shared_ptr< spot::aig > *' at 0x7f0e5855c900> >"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(spot.mealy_machine_to_aig(mealy, \"isop\", [\"i0\", \"i1\"], [\"o0\", \"o1\"]))"
]
},
{
"cell_type": "markdown",
"id": "3323fc84",
"metadata": {},
"source": [
"# Combining Mealy machines\n",
"\n",
"It can happen that the complete specification of the controller can be separated into sub-specifications with DISJOINT output propositions, see Finkbeiner et al. Specification Decomposition for Reactive Synthesis.\n",
"This results in multiple Mealy machines which have to be converted into one single AIG circuit.\n",
"\n",
"This can be done in two ways:\n",
"\n",
"1. Using the function `mealy_machines_to_aig()`, which takes a vector of separated Mealy machines as argument.\n",
"2. Combine the mealy machines into one before passing it to `mealy_machine_to aig(). This currently only supports input complete machines of the same type (mealy/separated mealy/split mealy)\n",
"\n",
"Note that the method version is usually preferable as it is faster.\n",
"Also note that in order for this to work, all mealy machines need to share the same `bdd_dict`. This can be ensured by passing a common options strucuture."
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "5d8e4cdb",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Solved games:\n"
]
},
{
"data": {
"text/html": [
"<div style='vertical-align:text-top;display:inline-block;'><?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"290pt\" height=\"174pt\"\n",
" viewBox=\"0.00 0.00 290.00 174.14\" 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 170.141)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-170.141 286,-170.141 286,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"138\" y=\"-150.941\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">t</text>\n",
"<text text-anchor=\"start\" x=\"130\" y=\"-135.941\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[all]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"56\" cy=\"-67.141\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-63.441\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-67.141C4.178,-67.141 17.9448,-67.141 30.9241,-67.141\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-67.141 30.9808,-70.2911 34.4807,-67.1411 30.9807,-67.1411 30.9807,-67.1411 30.9807,-67.1411 34.4807,-67.1411 30.9807,-63.9911 37.9807,-67.141 37.9807,-67.141\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"255,-117.141 228,-99.141 255,-81.141 282,-99.141 255,-117.141\"/>\n",
"<text text-anchor=\"middle\" x=\"255\" y=\"-95.441\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M66.549,-81.8549C72.9434,-89.4662 81.8234,-98.0095 92,-102.141 137.1042,-120.4528 195.1765,-112.8051 228.4329,-105.8139\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"235.5363,-104.2505 229.3771,-108.8316 232.1181,-105.0029 228.6999,-105.7552 228.6999,-105.7552 228.6999,-105.7552 232.1181,-105.0029 228.0228,-102.6789 235.5363,-104.2505 235.5363,-104.2505\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-116.941\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">(!i0 &amp; !i1) | (i0 &amp; i1)</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"255,-52.141 228,-34.141 255,-16.141 282,-34.141 255,-52.141\"/>\n",
"<text text-anchor=\"middle\" x=\"255\" y=\"-30.441\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M71.6117,-57.7466C77.7594,-54.4776 85.0112,-51.1334 92,-49.141 135.5744,-36.7192 188.099,-33.9519 221.5225,-33.6316\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"228.7661,-33.5978 221.7809,-36.7805 225.2662,-33.6141 221.7662,-33.6305 221.7662,-33.6305 221.7662,-33.6305 225.2662,-33.6141 221.7514,-30.4806 228.7661,-33.5978 228.7661,-33.5978\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-52.941\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">(!i0 &amp; i1) | (i0 &amp; !i1)</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=\"#33a02c\" stroke-width=\"2\" d=\"M238.1877,-92.0882C229.8492,-88.8689 219.5428,-85.3008 210,-83.141 165.5294,-73.0765 112.3796,-69.3249 81.5763,-67.939\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"74.2453,-67.6352 81.3698,-64.7778 77.7631,-67.2806 81.2601,-67.4256 81.2393,-67.9251 81.2186,-68.4247 77.7216,-68.2797 81.1089,-71.0724 74.2453,-67.6352 74.2453,-67.6352\"/>\n",
"<text text-anchor=\"start\" x=\"140.5\" y=\"-86.941\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;0 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>2&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M240.1247,-25.6367C231.6034,-21.2572 220.5375,-16.3773 210,-14.141 158.698,-3.254 138.3456,10.4049 92,-14.141 80.0852,-20.4514 71.3827,-32.6679 65.5216,-43.7828\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"62.3962,-50.1469 62.6545,-42.4751 63.4903,-46.7849 65.0331,-43.6433 65.4819,-43.8637 65.9307,-44.0841 64.3879,-47.2257 68.3094,-45.2523 62.3962,-50.1469 62.3962,-50.1469\"/>\n",
"<text text-anchor=\"start\" x=\"142.5\" y=\"-17.941\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n",
"</div><div style='vertical-align:text-top;display:inline-block;'><?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"290pt\" height=\"174pt\"\n",
" viewBox=\"0.00 0.00 290.00 174.14\" 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 170.141)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-170.141 286,-170.141 286,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"138\" y=\"-150.941\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">t</text>\n",
"<text text-anchor=\"start\" x=\"130\" y=\"-135.941\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[all]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"56\" cy=\"-67.141\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-63.441\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-67.141C4.178,-67.141 17.9448,-67.141 30.9241,-67.141\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-67.141 30.9808,-70.2911 34.4807,-67.1411 30.9807,-67.1411 30.9807,-67.1411 30.9807,-67.1411 34.4807,-67.1411 30.9807,-63.9911 37.9807,-67.141 37.9807,-67.141\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"255,-117.141 228,-99.141 255,-81.141 282,-99.141 255,-117.141\"/>\n",
"<text text-anchor=\"middle\" x=\"255\" y=\"-95.441\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M66.549,-81.8549C72.9434,-89.4662 81.8234,-98.0095 92,-102.141 137.1042,-120.4528 195.1765,-112.8051 228.4329,-105.8139\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"235.5363,-104.2505 229.3771,-108.8316 232.1181,-105.0029 228.6999,-105.7552 228.6999,-105.7552 228.6999,-105.7552 232.1181,-105.0029 228.0228,-102.6789 235.5363,-104.2505 235.5363,-104.2505\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-116.941\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">(!i0 &amp; !i1) | (i0 &amp; i1)</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"255,-52.141 228,-34.141 255,-16.141 282,-34.141 255,-52.141\"/>\n",
"<text text-anchor=\"middle\" x=\"255\" y=\"-30.441\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M71.6117,-57.7466C77.7594,-54.4776 85.0112,-51.1334 92,-49.141 135.5744,-36.7192 188.099,-33.9519 221.5225,-33.6316\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"228.7661,-33.5978 221.7809,-36.7805 225.2662,-33.6141 221.7662,-33.6305 221.7662,-33.6305 221.7662,-33.6305 225.2662,-33.6141 221.7514,-30.4806 228.7661,-33.5978 228.7661,-33.5978\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-52.941\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">(!i0 &amp; i1) | (i0 &amp; !i1)</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=\"#33a02c\" stroke-width=\"2\" d=\"M238.1877,-92.0882C229.8492,-88.8689 219.5428,-85.3008 210,-83.141 165.5294,-73.0765 112.3796,-69.3249 81.5763,-67.939\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"74.2453,-67.6352 81.3698,-64.7778 77.7631,-67.2806 81.2601,-67.4256 81.2393,-67.9251 81.2186,-68.4247 77.7216,-68.2797 81.1089,-71.0724 74.2453,-67.6352 74.2453,-67.6352\"/>\n",
"<text text-anchor=\"start\" x=\"142.5\" y=\"-86.941\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o1</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;0 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>2&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M240.1247,-25.6367C231.6034,-21.2572 220.5375,-16.3773 210,-14.141 158.698,-3.254 138.3456,10.4049 92,-14.141 80.0852,-20.4514 71.3827,-32.6679 65.5216,-43.7828\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"62.3962,-50.1469 62.6545,-42.4751 63.4903,-46.7849 65.0331,-43.6433 65.4819,-43.8637 65.9307,-44.0841 64.3879,-47.2257 68.3094,-45.2523 62.3962,-50.1469 62.3962,-50.1469\"/>\n",
"<text text-anchor=\"start\" x=\"140.5\" y=\"-17.941\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o1</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n",
"</div>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Reduced strategies:\n"
]
},
{
"data": {
"text/html": [
"<div style='vertical-align:text-top;display:inline-block;'><?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"174pt\" height=\"126pt\"\n",
" viewBox=\"0.00 0.00 174.00 126.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 122)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-122 170,-122 170,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"83\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"83\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M28.1233,-18C31.178,-18 44.9448,-18 57.9241,-18\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"64.9807,-18 57.9808,-21.1501 61.4807,-18 57.9807,-18.0001 57.9807,-18.0001 57.9807,-18.0001 61.4807,-18 57.9807,-14.8501 64.9807,-18 64.9807,-18\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M79.7643,-35.7817C79.2144,-45.3149 80.293,-54 83,-54 84.988,-54 86.0977,-49.3161 86.3292,-43.0521\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"86.2357,-35.7817 89.4756,-42.7406 86.2808,-39.2814 86.3258,-42.7812 86.3258,-42.7812 86.3258,-42.7812 86.2808,-39.2814 83.1761,-42.8217 86.2357,-35.7817 86.2357,-35.7817\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"2,-55.5 2,-74.5 124,-74.5 124,-55.5 2,-55.5\"/>\n",
"<text text-anchor=\"start\" x=\"4\" y=\"-61.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">(!i0 &amp; !i1) | (i0 &amp; i1)</text>\n",
"<text text-anchor=\"start\" x=\"128\" y=\"-61.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"139,-55.5 139,-74.5 164,-74.5 164,-55.5 139,-55.5\"/>\n",
"<text text-anchor=\"start\" x=\"141\" y=\"-61.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M77.8337,-35.4114C74.5982,-54.4155 76.3203,-77 83,-77 88.8447,-77 90.8938,-59.7087 89.1472,-42.6547\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"88.1663,-35.4114 92.2273,-41.9253 88.6361,-38.8797 89.1058,-42.3481 89.1058,-42.3481 89.1058,-42.3481 88.6361,-38.8797 85.9843,-42.7709 88.1663,-35.4114 88.1663,-35.4114\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"4,-78.5 4,-97.5 126,-97.5 126,-78.5 4,-78.5\"/>\n",
"<text text-anchor=\"start\" x=\"6\" y=\"-84.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">(!i0 &amp; i1) | (i0 &amp; !i1)</text>\n",
"<text text-anchor=\"start\" x=\"130\" y=\"-84.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"141,-78.5 141,-97.5 162,-97.5 162,-78.5 141,-78.5\"/>\n",
"<text text-anchor=\"start\" x=\"143\" y=\"-84.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n",
"</div><div style='vertical-align:text-top;display:inline-block;'><?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"174pt\" height=\"126pt\"\n",
" viewBox=\"0.00 0.00 174.00 126.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 122)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-122 170,-122 170,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"83\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"83\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M28.1233,-18C31.178,-18 44.9448,-18 57.9241,-18\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"64.9807,-18 57.9808,-21.1501 61.4807,-18 57.9807,-18.0001 57.9807,-18.0001 57.9807,-18.0001 61.4807,-18 57.9807,-14.8501 64.9807,-18 64.9807,-18\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M79.7643,-35.7817C79.2144,-45.3149 80.293,-54 83,-54 84.988,-54 86.0977,-49.3161 86.3292,-43.0521\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"86.2357,-35.7817 89.4756,-42.7406 86.2808,-39.2814 86.3258,-42.7812 86.3258,-42.7812 86.3258,-42.7812 86.2808,-39.2814 83.1761,-42.8217 86.2357,-35.7817 86.2357,-35.7817\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"4,-55.5 4,-74.5 126,-74.5 126,-55.5 4,-55.5\"/>\n",
"<text text-anchor=\"start\" x=\"6\" y=\"-61.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">(!i0 &amp; !i1) | (i0 &amp; i1)</text>\n",
"<text text-anchor=\"start\" x=\"130\" y=\"-61.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"141,-55.5 141,-74.5 162,-74.5 162,-55.5 141,-55.5\"/>\n",
"<text text-anchor=\"start\" x=\"143\" y=\"-61.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M77.8337,-35.4114C74.5982,-54.4155 76.3203,-77 83,-77 88.8447,-77 90.8938,-59.7087 89.1472,-42.6547\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"88.1663,-35.4114 92.2273,-41.9253 88.6361,-38.8797 89.1058,-42.3481 89.1058,-42.3481 89.1058,-42.3481 88.6361,-38.8797 85.9843,-42.7709 88.1663,-35.4114 88.1663,-35.4114\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"2,-78.5 2,-97.5 124,-97.5 124,-78.5 2,-78.5\"/>\n",
"<text text-anchor=\"start\" x=\"4\" y=\"-84.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">(!i0 &amp; i1) | (i0 &amp; !i1)</text>\n",
"<text text-anchor=\"start\" x=\"128\" y=\"-84.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"139,-78.5 139,-97.5 164,-97.5 164,-78.5 139,-78.5\"/>\n",
"<text text-anchor=\"start\" x=\"141\" y=\"-84.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o1</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n",
"</div>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Circuit implementing both machines from a vector of machines:\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"202pt\" height=\"289pt\"\n",
" viewBox=\"0.00 0.00 202.39 289.50\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 285.496)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-285.496 198.3922,-285.496 198.3922,4 -4,4\"/>\n",
"<!-- 6 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"70.1961\" cy=\"-100\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"70.1961\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">6</text>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>10</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"97.1961\" cy=\"-176.748\" rx=\"22.9987\" ry=\"22.9987\"/>\n",
"<text text-anchor=\"middle\" x=\"97.1961\" y=\"-173.048\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">10</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;10 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>6&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M76.1883,-117.0329C79.3328,-125.9714 83.2743,-137.175 86.8911,-147.456\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"88.2476\" cy=\"-151.3119\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"124.1961\" cy=\"-100\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"124.1961\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">8</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;10 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>8&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M118.2039,-117.0329C115.0593,-125.9714 111.1179,-137.175 107.501,-147.456\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"106.1445\" cy=\"-151.3119\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- o0 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>o0</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"#000000\" points=\"44.1961,-235.496 88.5891,-269.996 -.197,-269.996 44.1961,-235.496\"/>\n",
"<text text-anchor=\"middle\" x=\"44.1961\" y=\"-254.796\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;o0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>10&#45;&gt;o0:s</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M77.1591,-188.2313C64.261,-197.0431 49.1875,-210.5001 45.2031,-227.1007\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"44.6725\" cy=\"-231.5244\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- o1 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>o1</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"#000000\" points=\"150.1961,-235.496 194.5891,-269.996 105.803,-269.996 150.1961,-235.496\"/>\n",
"<text text-anchor=\"middle\" x=\"150.1961\" y=\"-254.796\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">o1</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;o1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>10&#45;&gt;o1:s</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M117.2331,-188.2313C129.6622,-196.7227 144.1113,-209.5275 148.711,-225.3022\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"145.2909,-226.105 150.1961,-235.496 152.2178,-225.0958 145.2909,-226.105\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"49.1961,-46 10.203,-11.5 88.1892,-11.5 49.1961,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"49.1961\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i0</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;6 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>2&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M54.2796,-41.6396C56.988,-51.5705 60.3586,-63.9293 63.2998,-74.7138\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"64.3947\" cy=\"-78.7286\" rx=\"4\" ry=\"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=\"#000000\" d=\"M61.2461,-35.3714C72.8455,-47.28 90.5958,-65.5037 104.2943,-79.5675\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"101.9382,-82.1648 111.4229,-86.8862 106.9527,-77.2806 101.9382,-82.1648\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"145.1961,-46 106.203,-11.5 184.1892,-11.5 145.1961,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"145.1961\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;6 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>4&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M133.146,-35.3714C121.5467,-47.28 103.7964,-65.5037 90.0979,-79.5675\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"87.4395,-77.2806 82.9693,-86.8862 92.4539,-82.1648 87.4395,-77.2806\"/>\n",
"</g>\n",
"<!-- 4&#45;&gt;8 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>4&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M140.1126,-41.6396C137.4041,-51.5705 134.0335,-63.9293 131.0923,-74.7138\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"129.9974\" cy=\"-78.7286\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.aig; proxy of <Swig Object of type 'std::shared_ptr< spot::aig > *' at 0x7f0e584def00> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Combining the two machines into one.\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"208pt\" height=\"126pt\"\n",
" viewBox=\"0.00 0.00 208.00 126.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 122)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-122 204,-122 204,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"100\" cy=\"-18\" rx=\"23.2963\" ry=\"18\"/>\n",
"<text text-anchor=\"start\" x=\"90\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0,0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M39.786,-18C42.8731,-18 55.9317,-18 69.1022,-18\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"76.3681,-18 69.3682,-21.1501 72.8681,-18 69.3681,-18.0001 69.3681,-18.0001 69.3681,-18.0001 72.8681,-18 69.3681,-14.8501 76.3681,-18 76.3681,-18\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M96.3818,-36.1527C95.8252,-45.5391 97.0313,-54 100,-54 102.1802,-54 103.4097,-49.437 103.6886,-43.2953\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"103.6182,-36.1527 106.8372,-43.1213 103.6527,-39.6525 103.6873,-43.1524 103.6873,-43.1524 103.6873,-43.1524 103.6527,-39.6525 100.5375,-43.1835 103.6182,-36.1527 103.6182,-36.1527\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"2,-55.5 2,-74.5 124,-74.5 124,-55.5 2,-55.5\"/>\n",
"<text text-anchor=\"start\" x=\"4\" y=\"-61.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">(!i0 &amp; !i1) | (i0 &amp; i1)</text>\n",
"<text text-anchor=\"start\" x=\"128\" y=\"-61.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"139,-55.5 139,-74.5 198,-74.5 198,-55.5 139,-55.5\"/>\n",
"<text text-anchor=\"start\" x=\"141\" y=\"-61.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0 &amp; o1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M94.2033,-35.7118C90.685,-54.6526 92.6172,-77 100,-77 106.46,-77 108.7468,-59.8903 106.8606,-42.924\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"105.7967,-35.7118 109.9346,-42.1771 106.3075,-39.1743 106.8183,-42.6368 106.8183,-42.6368 106.8183,-42.6368 106.3075,-39.1743 103.702,-43.0966 105.7967,-35.7118 105.7967,-35.7118\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"2,-78.5 2,-97.5 124,-97.5 124,-78.5 2,-78.5\"/>\n",
"<text text-anchor=\"start\" x=\"4\" y=\"-84.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">(!i0 &amp; i1) | (i0 &amp; !i1)</text>\n",
"<text text-anchor=\"start\" x=\"128\" y=\"-84.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"139,-78.5 139,-97.5 198,-97.5 198,-78.5 139,-78.5\"/>\n",
"<text text-anchor=\"start\" x=\"141\" y=\"-84.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">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 0x7f0e5855cd20> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"202pt\" height=\"289pt\"\n",
" viewBox=\"0.00 0.00 202.39 289.50\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 285.496)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-285.496 198.3922,-285.496 198.3922,4 -4,4\"/>\n",
"<!-- 6 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"70.1961\" cy=\"-100\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"70.1961\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">6</text>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>10</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"97.1961\" cy=\"-176.748\" rx=\"22.9987\" ry=\"22.9987\"/>\n",
"<text text-anchor=\"middle\" x=\"97.1961\" y=\"-173.048\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">10</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;10 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>6&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M76.1883,-117.0329C79.3328,-125.9714 83.2743,-137.175 86.8911,-147.456\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"88.2476\" cy=\"-151.3119\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"124.1961\" cy=\"-100\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"124.1961\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">8</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;10 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>8&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M118.2039,-117.0329C115.0593,-125.9714 111.1179,-137.175 107.501,-147.456\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"106.1445\" cy=\"-151.3119\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- o0 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>o0</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"#000000\" points=\"44.1961,-235.496 88.5891,-269.996 -.197,-269.996 44.1961,-235.496\"/>\n",
"<text text-anchor=\"middle\" x=\"44.1961\" y=\"-254.796\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;o0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>10&#45;&gt;o0:s</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M77.1591,-188.2313C64.261,-197.0431 49.1875,-210.5001 45.2031,-227.1007\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"44.6725\" cy=\"-231.5244\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- o1 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>o1</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"#000000\" points=\"150.1961,-235.496 194.5891,-269.996 105.803,-269.996 150.1961,-235.496\"/>\n",
"<text text-anchor=\"middle\" x=\"150.1961\" y=\"-254.796\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">o1</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;o1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>10&#45;&gt;o1:s</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M117.2331,-188.2313C129.6622,-196.7227 144.1113,-209.5275 148.711,-225.3022\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"145.2909,-226.105 150.1961,-235.496 152.2178,-225.0958 145.2909,-226.105\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"49.1961,-46 10.203,-11.5 88.1892,-11.5 49.1961,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"49.1961\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i0</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;6 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>2&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M54.2796,-41.6396C56.988,-51.5705 60.3586,-63.9293 63.2998,-74.7138\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"64.3947\" cy=\"-78.7286\" rx=\"4\" ry=\"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=\"#000000\" d=\"M61.2461,-35.3714C72.8455,-47.28 90.5958,-65.5037 104.2943,-79.5675\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"101.9382,-82.1648 111.4229,-86.8862 106.9527,-77.2806 101.9382,-82.1648\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"145.1961,-46 106.203,-11.5 184.1892,-11.5 145.1961,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"145.1961\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;6 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>4&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M133.146,-35.3714C121.5467,-47.28 103.7964,-65.5037 90.0979,-79.5675\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"87.4395,-77.2806 82.9693,-86.8862 92.4539,-82.1648 87.4395,-77.2806\"/>\n",
"</g>\n",
"<!-- 4&#45;&gt;8 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>4&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M140.1126,-41.6396C137.4041,-51.5705 134.0335,-63.9293 131.0923,-74.7138\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"129.9974\" cy=\"-78.7286\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.aig; proxy of <Swig Object of type 'std::shared_ptr< spot::aig > *' at 0x7f0e5855c930> >"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"g1 = spot.ltl_to_game(\"G((i0 xor i1) <-> o0)\", [\"o0\"], si)\n",
"g2 = spot.ltl_to_game(\"G((i0 xor i1) <-> (!o1))\", [\"o1\"], si)\n",
"spot.solve_game(g1)\n",
"spot.highlight_strategy(g1)\n",
"spot.solve_game(g2)\n",
"spot.highlight_strategy(g2)\n",
"print(\"Solved games:\")\n",
"display_inline(g1, g2)\n",
"strat1 = spot.solved_game_to_separated_mealy(g1)\n",
"strat2 = spot.solved_game_to_separated_mealy(g2)\n",
"print(\"Reduced strategies:\")\n",
"display_inline(strat1, strat2)\n",
"#Method 1\n",
"print(\"Circuit implementing both machines from a vector of machines:\")\n",
"aig = spot.mealy_machines_to_aig([strat1, strat2], \"isop\")\n",
"display(aig)\n",
"#Method 2\n",
"strat_comb = spot.mealy_product(strat1, strat2)\n",
"print(\"Combining the two machines into one.\")\n",
"display(strat_comb)\n",
"aig_comb = spot.mealy_machine_to_aig(strat_comb, \"isop\")\n",
"display(aig_comb)"
]
},
{
"cell_type": "markdown",
"id": "c7a1986f",
"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": 12,
"id": "a10d7e3b",
"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": 13,
"id": "2c40e19b",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"161pt\" height=\"289pt\"\n",
" viewBox=\"0.00 0.00 161.29 289.50\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 285.496)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-285.496 157.2941,-285.496 157.2941,4 -4,4\"/>\n",
"<!-- 6 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"108.4971\" cy=\"-100\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"108.4971\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">6</text>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>10</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"47.4971\" cy=\"-176.748\" rx=\"22.9987\" ry=\"22.9987\"/>\n",
"<text text-anchor=\"middle\" x=\"47.4971\" y=\"-173.048\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">10</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;10 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>6&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M97.0235,-114.4357C88.5006,-125.1589 76.6775,-140.0343 66.7205,-152.5618\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"64.2\" cy=\"-155.7331\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- o1 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>o1</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"#000000\" points=\"119.4971,-235.496 153.0923,-269.996 85.9019,-269.996 119.4971,-235.496\"/>\n",
"<text text-anchor=\"middle\" x=\"119.4971\" y=\"-254.796\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">d</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;o1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>6&#45;&gt;o1:s</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M110.884,-117.9348C113.8664,-141.8139 118.6699,-185.673 119.4022,-225.478\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"115.9025,-225.5296 119.4971,-235.496 122.9021,-225.4632 115.9025,-225.5296\"/>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"47.4971\" cy=\"-100\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"47.4971\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">8</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;10 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>8&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M47.4971,-118.1882C47.4971,-126.4164 47.4971,-136.3755 47.4971,-145.729\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"47.4972\" cy=\"-149.7341\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- o0 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>o0</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"#000000\" points=\"35.4971,-235.496 67.9913,-269.996 3.0029,-269.996 35.4971,-235.496\"/>\n",
"<text text-anchor=\"middle\" x=\"35.4971\" y=\"-254.796\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">c</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;o0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>10&#45;&gt;o0:s</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M40.8653,-198.5716C38.8273,-206.6287 36.8875,-216.0847 36.0008,-225.4459\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"32.5021,-225.3333 35.4971,-235.496 39.4934,-225.6837 32.5021,-225.3333\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"32.4971,-46 .0029,-11.5 64.9913,-11.5 32.4971,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"32.4971\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;6 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>2&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M43.7112,-34.3616C55.417,-46.2215 74.0226,-65.0719 88.2981,-79.5352\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"86.1964,-82.3883 95.7121,-87.0468 91.1784,-77.471 86.1964,-82.3883\"/>\n",
"</g>\n",
"<!-- 2&#45;&gt;8 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>2&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M36.2822,-42.4304C38.1587,-52.0626 40.4501,-63.8255 42.4715,-74.202\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"43.2568\" cy=\"-78.2331\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"116.4971,-46 82.9019,-11.5 150.0923,-11.5 116.4971,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"116.4971\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">b</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;6 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>4&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M114.3111,-44.0406C113.4266,-52.5538 112.392,-62.5119 111.4427,-71.6488\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"107.9338,-71.5536 110.3816,-81.8618 114.8964,-72.277 107.9338,-71.5536\"/>\n",
"</g>\n",
"<!-- 4&#45;&gt;8 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>4&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M105.7159,-35.0313C94.8691,-47.1356 77.9599,-66.0053 65.1537,-80.2963\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"62.2644\" cy=\"-83.5206\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.aig; proxy of <Swig Object of type 'std::shared_ptr< spot::aig > *' at 0x7f0e584def90> >"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"this_aig = spot.aiger_circuit(aag_txt)\n",
"display(this_aig)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "0ad6c566",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"aag 5 2 0 2 3\n",
"2\n",
"4\n",
"10\n",
"6\n",
"6 2 4\n",
"8 3 5\n",
"10 7 9\n",
"i0 a\n",
"i1 b\n",
"o0 c\n",
"o1 d\n"
]
}
],
"source": [
"print(this_aig.to_str())"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "2e1996c1",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"((2, 4), (3, 5), (7, 9))\n"
]
}
],
"source": [
"print(this_aig.gates())"
]
},
{
"cell_type": "markdown",
"id": "41a8e042",
"metadata": {},
"source": [
"An AIG circuit can be transformed into a monitor/Mealy machine. This can be used for instance to check that it does not intersect the negation of the specification."
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "7399ea38",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"175pt\" height=\"127pt\"\n",
" viewBox=\"0.00 0.00 175.00 127.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 123)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-123 171,-123 171,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"83.5\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"83.5\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M14.2861,-18C18.6233,-18 40.0823,-18 57.9715,-18\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"65.3594,-18 58.3595,-21.1501 61.8594,-18 58.3594,-18.0001 58.3594,-18.0001 58.3594,-18.0001 61.8594,-18 58.3594,-14.8501 65.3594,-18 65.3594,-18\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M74.8666,-33.916C72.6144,-44.1504 75.4922,-54 83.5,-54 89.631,-54 92.7548,-48.2263 92.8716,-40.9268\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"92.1334,-33.916 95.9992,-40.5477 92.5,-37.3968 92.8665,-40.8775 92.8665,-40.8775 92.8665,-40.8775 92.5,-37.3968 89.7338,-41.2074 92.1334,-33.916 92.1334,-33.916\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"2.5,-97.5 2.5,-116.5 105.5,-116.5 105.5,-97.5 2.5,-97.5\"/>\n",
"<text text-anchor=\"start\" x=\"62.5\" y=\"-103.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a &amp; !b</text>\n",
"<text text-anchor=\"start\" x=\"109.5\" y=\"-103.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"120.5,-97.5 120.5,-116.5 165.5,-116.5 165.5,-97.5 120.5,-97.5\"/>\n",
"<text text-anchor=\"start\" x=\"122.5\" y=\"-103.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!c &amp; !d</text>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"2.5,-76.5 2.5,-95.5 105.5,-95.5 105.5,-76.5 2.5,-76.5\"/>\n",
"<text text-anchor=\"start\" x=\"69.5\" y=\"-82.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a &amp; b</text>\n",
"<text text-anchor=\"start\" x=\"109.5\" y=\"-82.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"120.5,-76.5 120.5,-95.5 165.5,-95.5 165.5,-76.5 120.5,-76.5\"/>\n",
"<text text-anchor=\"start\" x=\"122.5\" y=\"-82.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!c &amp; d</text>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"2.5,-55.5 2.5,-74.5 105.5,-74.5 105.5,-55.5 2.5,-55.5\"/>\n",
"<text text-anchor=\"start\" x=\"4.5\" y=\"-61.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">(!a &amp; b) | (a &amp; !b)</text>\n",
"<text text-anchor=\"start\" x=\"109.5\" y=\"-61.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"120.5,-55.5 120.5,-74.5 165.5,-74.5 165.5,-55.5 120.5,-55.5\"/>\n",
"<text text-anchor=\"start\" x=\"122.5\" y=\"-61.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">c &amp; !d</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f0e584ee4e0> >"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"this_aig.as_automaton()"
]
},
{
"cell_type": "markdown",
"id": "7ac06afc",
"metadata": {},
"source": [
"Note that the generation of aiger circuits from Mealy machines is flexible and accepts separated Mealy machines\n",
"as well as split Mealy machines."
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "bac68923",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div style='vertical-align:text-top;display:inline-block;'><?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"174pt\" height=\"126pt\"\n",
" viewBox=\"0.00 0.00 174.00 126.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 122)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-122 170,-122 170,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"83\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"83\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M28.1233,-18C31.178,-18 44.9448,-18 57.9241,-18\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"64.9807,-18 57.9808,-21.1501 61.4807,-18 57.9807,-18.0001 57.9807,-18.0001 57.9807,-18.0001 61.4807,-18 57.9807,-14.8501 64.9807,-18 64.9807,-18\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M79.7643,-35.7817C79.2144,-45.3149 80.293,-54 83,-54 84.988,-54 86.0977,-49.3161 86.3292,-43.0521\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"86.2357,-35.7817 89.4756,-42.7406 86.2808,-39.2814 86.3258,-42.7812 86.3258,-42.7812 86.3258,-42.7812 86.2808,-39.2814 83.1761,-42.8217 86.2357,-35.7817 86.2357,-35.7817\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"2,-55.5 2,-74.5 124,-74.5 124,-55.5 2,-55.5\"/>\n",
"<text text-anchor=\"start\" x=\"4\" y=\"-61.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">(!i0 &amp; !i1) | (i0 &amp; i1)</text>\n",
"<text text-anchor=\"start\" x=\"128\" y=\"-61.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"139,-55.5 139,-74.5 164,-74.5 164,-55.5 139,-55.5\"/>\n",
"<text text-anchor=\"start\" x=\"141\" y=\"-61.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M77.8337,-35.4114C74.5982,-54.4155 76.3203,-77 83,-77 88.8447,-77 90.8938,-59.7087 89.1472,-42.6547\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"88.1663,-35.4114 92.2273,-41.9253 88.6361,-38.8797 89.1058,-42.3481 89.1058,-42.3481 89.1058,-42.3481 88.6361,-38.8797 85.9843,-42.7709 88.1663,-35.4114 88.1663,-35.4114\"/>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"transparent\" points=\"4,-78.5 4,-97.5 126,-97.5 126,-78.5 4,-78.5\"/>\n",
"<text text-anchor=\"start\" x=\"6\" y=\"-84.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">(!i0 &amp; i1) | (i0 &amp; !i1)</text>\n",
"<text text-anchor=\"start\" x=\"130\" y=\"-84.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">/</text>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"transparent\" points=\"141,-78.5 141,-97.5 162,-97.5 162,-78.5 141,-78.5\"/>\n",
"<text text-anchor=\"start\" x=\"143\" y=\"-84.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n",
"</div><div style='vertical-align:text-top;display:inline-block;'><?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"290pt\" height=\"174pt\"\n",
" viewBox=\"0.00 0.00 290.00 174.14\" 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 170.141)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-170.141 286,-170.141 286,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"138\" y=\"-150.941\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">t</text>\n",
"<text text-anchor=\"start\" x=\"130\" y=\"-135.941\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[all]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-67.141\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-63.441\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-67.141C4.178,-67.141 17.9448,-67.141 30.9241,-67.141\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-67.141 30.9808,-70.2911 34.4807,-67.1411 30.9807,-67.1411 30.9807,-67.1411 30.9807,-67.1411 34.4807,-67.1411 30.9807,-63.9911 37.9807,-67.141 37.9807,-67.141\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"255,-117.141 228,-99.141 255,-81.141 282,-99.141 255,-117.141\"/>\n",
"<text text-anchor=\"middle\" x=\"255\" y=\"-95.441\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M66.549,-81.8549C72.9434,-89.4662 81.8234,-98.0095 92,-102.141 137.1042,-120.4528 195.1765,-112.8051 228.4329,-105.8139\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"235.5363,-104.2505 229.3771,-108.8316 232.1181,-105.0029 228.6999,-105.7552 228.6999,-105.7552 228.6999,-105.7552 232.1181,-105.0029 228.0228,-102.6789 235.5363,-104.2505 235.5363,-104.2505\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-116.941\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">(!i0 &amp; !i1) | (i0 &amp; i1)</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"255,-52.141 228,-34.141 255,-16.141 282,-34.141 255,-52.141\"/>\n",
"<text text-anchor=\"middle\" x=\"255\" y=\"-30.441\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M71.6117,-57.7466C77.7594,-54.4776 85.0112,-51.1334 92,-49.141 135.5744,-36.7192 188.099,-33.9519 221.5225,-33.6316\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"228.7661,-33.5978 221.7809,-36.7805 225.2662,-33.6141 221.7662,-33.6305 221.7662,-33.6305 221.7662,-33.6305 225.2662,-33.6141 221.7514,-30.4806 228.7661,-33.5978 228.7661,-33.5978\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-52.941\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">(!i0 &amp; i1) | (i0 &amp; !i1)</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M238.1877,-92.0882C229.8492,-88.8689 219.5428,-85.3008 210,-83.141 165.5294,-73.0765 112.3796,-69.3249 81.5763,-67.939\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"74.2453,-67.6352 81.3698,-64.7778 77.7423,-67.7802 81.2393,-67.9251 81.2393,-67.9251 81.2393,-67.9251 77.7423,-67.7802 81.1089,-71.0724 74.2453,-67.6352 74.2453,-67.6352\"/>\n",
"<text text-anchor=\"start\" x=\"140.5\" y=\"-86.941\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;0 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>2&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M240.1247,-25.6367C231.6034,-21.2572 220.5375,-16.3773 210,-14.141 158.698,-3.254 138.3456,10.4049 92,-14.141 80.0852,-20.4514 71.3827,-32.6679 65.5216,-43.7828\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"62.3962,-50.1469 62.6545,-42.4751 63.9391,-47.0053 65.4819,-43.8637 65.4819,-43.8637 65.4819,-43.8637 63.9391,-47.0053 68.3094,-45.2523 62.3962,-50.1469 62.3962,-50.1469\"/>\n",
"<text text-anchor=\"start\" x=\"142.5\" y=\"-17.941\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n",
"</div>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"('o0',)\n",
"('o0',)\n"
]
}
],
"source": [
"strat1_s = spot.split_separated_mealy(strat1)\n",
"display_inline(strat1, strat1_s)\n",
"print(spot.get_synthesis_output_aps(strat1))\n",
"print(spot.get_synthesis_output_aps(strat1_s))"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "03ceb2a8",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div style='vertical-align:text-top;display:inline-block;'><?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"182pt\" height=\"289pt\"\n",
" viewBox=\"0.00 0.00 181.99 289.50\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 285.496)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-285.496 177.9931,-285.496 177.9931,4 -4,4\"/>\n",
"<!-- 6 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"59.9965\" cy=\"-100\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"59.9965\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">6</text>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>10</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"86.9965\" cy=\"-176.748\" rx=\"22.9987\" ry=\"22.9987\"/>\n",
"<text text-anchor=\"middle\" x=\"86.9965\" y=\"-173.048\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">10</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;10 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>6&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M65.9887,-117.0329C69.1333,-125.9714 73.0747,-137.175 76.6916,-147.456\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"78.0481\" cy=\"-151.3119\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"113.9965\" cy=\"-100\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"113.9965\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">8</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;10 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>8&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M108.0044,-117.0329C104.8598,-125.9714 100.9183,-137.175 97.3015,-147.456\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"95.945\" cy=\"-151.3119\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- o0 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>o0</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"#000000\" points=\"86.9965,-235.496 131.3896,-269.996 42.6035,-269.996 86.9965,-235.496\"/>\n",
"<text text-anchor=\"middle\" x=\"86.9965\" y=\"-254.796\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">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=\"#000000\" d=\"M86.9965,-199.6254C86.9965,-208.0311 86.9965,-217.8147 86.9965,-227.2904\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"86.9966\" cy=\"-231.496\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"38.9965,-46 .0035,-11.5 77.9896,-11.5 38.9965,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"38.9965\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i0</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;6 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>2&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M44.0801,-41.6396C46.7885,-51.5705 50.1591,-63.9293 53.1003,-74.7138\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"54.1952\" cy=\"-78.7286\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- 2&#45;&gt;8 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>2&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M51.0466,-35.3714C62.6459,-47.28 80.3962,-65.5037 94.0947,-79.5675\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"91.7387,-82.1648 101.2234,-86.8862 96.7531,-77.2806 91.7387,-82.1648\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"134.9965,-46 96.0035,-11.5 173.9896,-11.5 134.9965,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"134.9965\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;6 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>4&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M122.9465,-35.3714C111.3472,-47.28 93.5969,-65.5037 79.8984,-79.5675\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"77.2399,-77.2806 72.7697,-86.8862 82.2544,-82.1648 77.2399,-77.2806\"/>\n",
"</g>\n",
"<!-- 4&#45;&gt;8 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>4&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M129.913,-41.6396C127.2046,-51.5705 123.834,-63.9293 120.8928,-74.7138\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"119.7979\" cy=\"-78.7286\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n",
"</div><div style='vertical-align:text-top;display:inline-block;'><?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"182pt\" height=\"289pt\"\n",
" viewBox=\"0.00 0.00 181.99 289.50\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 285.496)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-285.496 177.9931,-285.496 177.9931,4 -4,4\"/>\n",
"<!-- 6 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"59.9965\" cy=\"-100\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"59.9965\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">6</text>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>10</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"86.9965\" cy=\"-176.748\" rx=\"22.9987\" ry=\"22.9987\"/>\n",
"<text text-anchor=\"middle\" x=\"86.9965\" y=\"-173.048\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">10</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;10 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>6&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M65.9887,-117.0329C69.1333,-125.9714 73.0747,-137.175 76.6916,-147.456\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"78.0481\" cy=\"-151.3119\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"113.9965\" cy=\"-100\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"113.9965\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">8</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;10 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>8&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M108.0044,-117.0329C104.8598,-125.9714 100.9183,-137.175 97.3015,-147.456\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"95.945\" cy=\"-151.3119\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- o0 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>o0</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"#000000\" points=\"86.9965,-235.496 131.3896,-269.996 42.6035,-269.996 86.9965,-235.496\"/>\n",
"<text text-anchor=\"middle\" x=\"86.9965\" y=\"-254.796\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">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=\"#000000\" d=\"M86.9965,-199.6254C86.9965,-208.0311 86.9965,-217.8147 86.9965,-227.2904\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"86.9966\" cy=\"-231.496\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"38.9965,-46 .0035,-11.5 77.9896,-11.5 38.9965,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"38.9965\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i0</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;6 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>2&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M44.0801,-41.6396C46.7885,-51.5705 50.1591,-63.9293 53.1003,-74.7138\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"54.1952\" cy=\"-78.7286\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- 2&#45;&gt;8 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>2&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M51.0466,-35.3714C62.6459,-47.28 80.3962,-65.5037 94.0947,-79.5675\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"91.7387,-82.1648 101.2234,-86.8862 96.7531,-77.2806 91.7387,-82.1648\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"134.9965,-46 96.0035,-11.5 173.9896,-11.5 134.9965,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"134.9965\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;6 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>4&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M122.9465,-35.3714C111.3472,-47.28 93.5969,-65.5037 79.8984,-79.5675\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"77.2399,-77.2806 72.7697,-86.8862 82.2544,-82.1648 77.2399,-77.2806\"/>\n",
"</g>\n",
"<!-- 4&#45;&gt;8 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>4&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M129.913,-41.6396C127.2046,-51.5705 123.834,-63.9293 120.8928,-74.7138\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"119.7979\" cy=\"-78.7286\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n",
"</div>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display_inline(spot.mealy_machine_to_aig(strat1, \"isop\"), spot.mealy_machine_to_aig(strat1_s, \"isop\"))"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.8.10"
}
},
"nbformat": 4,
"nbformat_minor": 5
}