spot/tests/python/synthesis.ipynb
Florian Renkin dd58747659 synthesis.ipynb: remove useless import
* tests/python/synthesis.ipynb: here.
2022-03-22 16:08:51 +01:00

4786 lines
365 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

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

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import spot\n",
"spot.setup()\n",
"from spot.jupyter import display_inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This notebook presents functions that can be used to solve the Reactive Synthesis problem using games.\n",
"If you are not familiar with how Spot 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,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"game has 29 states and 55 edges\n",
"output propositions are: o0\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"538pt\" height=\"360pt\"\n",
" viewBox=\"0.00 0.00 538.00 360.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(0.3609 0.3609) rotate(0) translate(4 993.6189)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-993.6189 1486.8756,-993.6189 1486.8756,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"657.4378\" y=\"-975.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Fin(</text>\n",
"<text text-anchor=\"start\" x=\"682.4378\" y=\"-975.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"698.4378\" y=\"-975.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"745.4378\" y=\"-975.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"761.4378\" y=\"-975.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) | Fin(</text>\n",
"<text text-anchor=\"start\" x=\"801.4378\" y=\"-975.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"817.4378\" y=\"-975.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">))</text>\n",
"<text text-anchor=\"start\" x=\"683.9378\" y=\"-961.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[parity max odd 3]</text>\n",
"<!-- I -->\n",
"<!-- 9 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>9</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-799.6189\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-795.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">9</text>\n",
"</g>\n",
"<!-- I&#45;&gt;9 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-799.6189C4.178,-799.6189 17.9448,-799.6189 30.9241,-799.6189\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-799.6189 30.9808,-802.769 34.4807,-799.619 30.9807,-799.619 30.9807,-799.619 30.9807,-799.619 34.4807,-799.619 30.9807,-796.469 37.9807,-799.6189 37.9807,-799.6189\"/>\n",
"</g>\n",
"<!-- 25 -->\n",
"<g id=\"node26\" class=\"node\">\n",
"<title>25</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"190.3322,-727.6189 160.1669,-709.6189 190.3322,-691.6189 220.4975,-709.6189 190.3322,-727.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"190.3322\" y=\"-705.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">25</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;25 -->\n",
"<g id=\"edge28\" class=\"edge\">\n",
"<title>9&#45;&gt;25</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M71.1485,-789.4697C95.2873,-773.2972 142.5223,-741.6506 169.7184,-723.4298\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"175.8506,-719.3213 171.7885,-725.8345 172.9429,-721.2694 170.0352,-723.2176 170.0352,-723.2176 170.0352,-723.2176 172.9429,-721.2694 168.2818,-720.6006 175.8506,-719.3213 175.8506,-719.3213\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-793.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"109\" y=\"-778.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 26 -->\n",
"<g id=\"node27\" class=\"node\">\n",
"<title>26</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"268.9966,-882.6189 238.8313,-864.6189 268.9966,-846.6189 299.1619,-864.6189 268.9966,-882.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"268.9966\" y=\"-860.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">26</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;26 -->\n",
"<g id=\"edge29\" class=\"edge\">\n",
"<title>9&#45;&gt;26</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M73.4304,-804.9381C110.5884,-816.2776 197.8088,-842.8946 242.1289,-856.4197\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"248.8594,-858.4737 241.2448,-859.4433 245.5119,-857.4521 242.1643,-856.4304 242.1643,-856.4304 242.1643,-856.4304 245.5119,-857.4521 243.0837,-853.4176 248.8594,-858.4737 248.8594,-858.4737\"/>\n",
"<text text-anchor=\"start\" x=\"94\" y=\"-843.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"109\" y=\"-828.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 27 -->\n",
"<g id=\"node28\" class=\"node\">\n",
"<title>27</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"401.6609,-542.6189 371.4956,-524.6189 401.6609,-506.6189 431.8262,-524.6189 401.6609,-542.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"401.6609\" y=\"-520.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">27</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;27 -->\n",
"<g id=\"edge30\" class=\"edge\">\n",
"<title>9&#45;&gt;27</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M63.8562,-783.416C78.8625,-753.9169 114.2247,-690.9591 160,-652.6189 229.4122,-594.4812 329.5194,-551.9284 376.067,-534.0047\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"382.8007,-531.4403 377.3801,-536.8754 379.5299,-532.686 376.259,-533.9316 376.259,-533.9316 376.259,-533.9316 379.5299,-532.686 375.1379,-530.9879 382.8007,-531.4403 382.8007,-531.4403\"/>\n",
"<text text-anchor=\"start\" x=\"167.3322\" y=\"-671.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"182.3322\" y=\"-656.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 28 -->\n",
"<g id=\"node29\" class=\"node\">\n",
"<title>28</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"558.9897,-949.6189 528.8244,-931.6189 558.9897,-913.6189 589.155,-931.6189 558.9897,-949.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"558.9897\" y=\"-927.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">28</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;28 -->\n",
"<g id=\"edge31\" class=\"edge\">\n",
"<title>9&#45;&gt;28</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M63.3412,-816.1013C69.6055,-828.8227 79.5662,-846.2773 92,-858.6189 128.1725,-894.5233 139.3658,-917.6189 190.3322,-917.6189 190.3322,-917.6189 190.3322,-917.6189 401.6609,-917.6189 445.3261,-917.6189 495.5408,-923.0354 527.2634,-927.1303\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"534.5235,-928.0861 527.1721,-930.2953 531.0534,-927.6292 527.5834,-927.1723 527.5834,-927.1723 527.5834,-927.1723 531.0534,-927.6292 527.9946,-924.0492 534.5235,-928.0861 534.5235,-928.0861\"/>\n",
"<text text-anchor=\"start\" x=\"247.4966\" y=\"-936.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"260.9966\" y=\"-921.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"1104.6507\" cy=\"-757.6189\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1104.6507\" y=\"-753.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>10</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"1238.9828,-598.6189 1208.8175,-580.6189 1238.9828,-562.6189 1269.1481,-580.6189 1238.9828,-598.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"1238.9828\" y=\"-576.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">10</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;10 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1117.42,-744.7743C1134.9668,-726.791 1167.0399,-692.7032 1190.6507,-660.6189 1204.9999,-641.12 1219.0398,-617.1768 1228.2572,-600.5924\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1231.6624,-594.4046 1231.0472,-602.0561 1229.9749,-597.471 1228.2875,-600.5373 1228.2875,-600.5373 1228.2875,-600.5373 1229.9749,-597.471 1225.5278,-599.0186 1231.6624,-594.4046 1231.6624,-594.4046\"/>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-738.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-723.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 11 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>11</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"1238.9828,-775.6189 1208.8175,-757.6189 1238.9828,-739.6189 1269.1481,-757.6189 1238.9828,-775.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"1238.9828\" y=\"-753.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">11</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;11 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1122.7673,-757.6189C1142.8637,-757.6189 1175.8415,-757.6189 1201.5437,-757.6189\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1208.5834,-757.6189 1201.5835,-760.769 1205.0834,-757.619 1201.5834,-757.619 1201.5834,-757.619 1201.5834,-757.619 1205.0834,-757.619 1201.5834,-754.469 1208.5834,-757.6189 1208.5834,-757.6189\"/>\n",
"<text text-anchor=\"start\" x=\"1159.1507\" y=\"-776.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-761.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"1343.7631\" cy=\"-626.6189\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1343.7631\" y=\"-622.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;1 -->\n",
"<g id=\"edge32\" class=\"edge\">\n",
"<title>10&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1263.0028,-576.9337C1275.8289,-576.0314 1291.5558,-576.686 1304.315,-582.6189 1314.7459,-587.4692 1323.6071,-596.5114 1330.2725,-605.1431\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1334.5286,-610.9967 1327.8643,-607.1875 1332.4704,-608.1659 1330.4121,-605.335 1330.4121,-605.335 1330.4121,-605.335 1332.4704,-608.1659 1332.9598,-603.4826 1334.5286,-610.9967 1334.5286,-610.9967\"/>\n",
"<text text-anchor=\"start\" x=\"1287.315\" y=\"-601.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"<text text-anchor=\"start\" x=\"1287.815\" y=\"-586.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;0 -->\n",
"<g id=\"edge33\" class=\"edge\">\n",
"<title>11&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1226.4545,-768.5274C1217.2425,-775.7898 1204.0432,-784.693 1190.6507,-788.6189 1169.3258,-794.8701 1161.4837,-796.3526 1140.6507,-788.6189 1133.6916,-786.0355 1127.1761,-781.4371 1121.6525,-776.5598\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1116.4798,-771.6538 1123.7265,-774.1853 1119.0193,-774.0623 1121.5588,-776.4709 1121.5588,-776.4709 1121.5588,-776.4709 1119.0193,-774.0623 1119.3911,-778.7564 1116.4798,-771.6538 1116.4798,-771.6538\"/>\n",
"<text text-anchor=\"start\" x=\"1157.1507\" y=\"-812.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-797.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 12 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>12</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"1452.5434,-697.6189 1422.3781,-679.6189 1452.5434,-661.6189 1482.7087,-679.6189 1452.5434,-697.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"1452.5434\" y=\"-675.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">12</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;12 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1357.1525,-639.123C1364.419,-645.3757 1373.8184,-652.6492 1383.2112,-657.6189 1395.7373,-664.2464 1410.6041,-669.291 1423.3526,-672.8668\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1430.1889,-674.703 1422.6113,-675.9293 1426.8087,-673.7951 1423.4285,-672.8871 1423.4285,-672.8871 1423.4285,-672.8871 1426.8087,-673.7951 1424.2457,-669.8449 1430.1889,-674.703 1430.1889,-674.703\"/>\n",
"<text text-anchor=\"start\" x=\"1385.7112\" y=\"-684.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"1385.7112\" y=\"-669.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 13 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>13</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"999.3185,-745.6189 969.1532,-727.6189 999.3185,-709.6189 1029.4838,-727.6189 999.3185,-745.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"999.3185\" y=\"-723.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">13</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;13 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>1&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1326.0923,-623.0926C1290.1334,-616.6714 1206.2979,-605.573 1140.6507,-626.6189 1088.854,-643.2244 1039.8901,-686.5642 1015.4772,-710.7259\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1010.3688,-715.859 1013.0739,-708.6753 1012.8377,-713.3781 1015.3066,-710.8973 1015.3066,-710.8973 1015.3066,-710.8973 1012.8377,-713.3781 1017.5394,-713.1193 1010.3688,-715.859 1010.3688,-715.859\"/>\n",
"<text text-anchor=\"start\" x=\"1159.1507\" y=\"-645.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-630.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;1 -->\n",
"<g id=\"edge34\" class=\"edge\">\n",
"<title>12&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1445.2824,-665.7633C1437.2805,-652.1568 1423.0108,-632.2267 1404.2112,-623.6189 1393.1612,-618.5594 1379.7567,-618.6842 1368.381,-620.3415\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1361.2436,-621.6127 1367.5828,-617.284 1364.6894,-620.9989 1368.1352,-620.3852 1368.1352,-620.3852 1368.1352,-620.3852 1364.6894,-620.9989 1368.6876,-623.4864 1361.2436,-621.6127 1361.2436,-621.6127\"/>\n",
"<text text-anchor=\"start\" x=\"1383.2112\" y=\"-642.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"1385.7112\" y=\"-627.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 13&#45;&gt;0 -->\n",
"<g id=\"edge35\" class=\"edge\">\n",
"<title>13&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1019.8776,-733.4744C1037.2138,-738.412 1062.0555,-745.4873 1080.3683,-750.703\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1087.283,-752.6724 1079.6879,-753.7844 1083.9169,-751.7136 1080.5507,-750.7549 1080.5507,-750.7549 1080.5507,-750.7549 1083.9169,-751.7136 1081.4136,-747.7253 1087.283,-752.6724 1087.283,-752.6724\"/>\n",
"<text text-anchor=\"start\" x=\"1047.6507\" y=\"-765.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"1050.1507\" y=\"-750.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"1104.6507\" cy=\"-509.6189\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1104.6507\" y=\"-505.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"</g>\n",
"<!-- 14 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>14</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"1238.9828,-184.6189 1208.8175,-166.6189 1238.9828,-148.6189 1269.1481,-166.6189 1238.9828,-184.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"1238.9828\" y=\"-162.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">14</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;14 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>2&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1110.8379,-492.4646C1116.7845,-477.7274 1126.8972,-456.5553 1140.6507,-441.6189 1158.5224,-422.2101 1176.739,-432.0368 1190.6507,-409.6189 1209.9826,-378.4665 1200.0085,-281.2491 1208.6507,-245.6189 1213.5758,-225.3136 1222.39,-203.1877 1229.2522,-187.5308\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1232.2467,-180.822 1232.2699,-188.4981 1230.8201,-184.0181 1229.3934,-187.2141 1229.3934,-187.2141 1229.3934,-187.2141 1230.8201,-184.0181 1226.517,-185.9302 1232.2467,-180.822 1232.2467,-180.822\"/>\n",
"<text text-anchor=\"start\" x=\"1159.1507\" y=\"-460.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-445.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 16 -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>16</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"1238.9828,-502.6189 1208.8175,-484.6189 1238.9828,-466.6189 1269.1481,-484.6189 1238.9828,-502.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"1238.9828\" y=\"-480.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">16</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;16 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>2&#45;&gt;16</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1122.1669,-514.3592C1139.8219,-518.3274 1167.6707,-522.3552 1190.6507,-515.6189 1201.4275,-512.4598 1212.0792,-506.0778 1220.6288,-499.9212\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1226.4545,-495.5274 1222.7626,-502.2574 1223.6602,-497.6349 1220.8658,-499.7425 1220.8658,-499.7425 1220.8658,-499.7425 1223.6602,-497.6349 1218.969,-497.2275 1226.4545,-495.5274 1226.4545,-495.5274\"/>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-537.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-522.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 15 -->\n",
"<g id=\"node30\" class=\"node\">\n",
"<title>15</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"1343.7631\" cy=\"-166.6189\" rx=\"21.3963\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1343.7631\" y=\"-162.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">15</text>\n",
"</g>\n",
"<!-- 14&#45;&gt;15 -->\n",
"<g id=\"edge36\" class=\"edge\">\n",
"<title>14&#45;&gt;15</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1252.2734,-156.082C1265.3197,-147.0477 1285.887,-136.2713 1304.315,-141.6189 1310.4715,-143.4055 1316.5879,-146.473 1322.1017,-149.8599\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1328.264,-153.925 1320.6863,-152.6998 1325.3424,-151.9977 1322.4208,-150.0704 1322.4208,-150.0704 1322.4208,-150.0704 1325.3424,-151.9977 1324.1554,-147.441 1328.264,-153.925 1328.264,-153.925\"/>\n",
"<text text-anchor=\"start\" x=\"1291.315\" y=\"-160.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"1287.815\" y=\"-145.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 16&#45;&gt;2 -->\n",
"<g id=\"edge38\" class=\"edge\">\n",
"<title>16&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1216.8354,-479.5745C1196.4569,-475.9394 1165.691,-473.0274 1140.6507,-481.6189 1134.2707,-483.8079 1128.1504,-487.6406 1122.8235,-491.7806\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1117.3798,-496.3303 1120.7308,-489.4243 1120.0654,-494.0858 1122.7509,-491.8412 1122.7509,-491.8412 1122.7509,-491.8412 1120.0654,-494.0858 1124.771,-494.2582 1117.3798,-496.3303 1117.3798,-496.3303\"/>\n",
"<text text-anchor=\"start\" x=\"1161.1507\" y=\"-500.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-485.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"864.9863\" cy=\"-825.6189\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"864.9863\" y=\"-821.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;13 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>3&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M882.9304,-822.1403C901.4307,-817.8649 930.4017,-809.1853 950.9863,-793.6189 967.0966,-781.436 980.2236,-762.42 988.71,-747.9229\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"992.2766,-741.6209 991.5702,-749.2645 990.5527,-744.6669 988.8288,-747.713 988.8288,-747.713 988.8288,-747.713 990.5527,-744.6669 986.0873,-746.1614 992.2766,-741.6209 992.2766,-741.6209\"/>\n",
"<text text-anchor=\"start\" x=\"919.4863\" y=\"-835.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"<text text-anchor=\"start\" x=\"917.9863\" y=\"-820.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 17 -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>17</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"759.6541,-795.6189 729.4888,-777.6189 759.6541,-759.6189 789.8194,-777.6189 759.6541,-795.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"759.6541\" y=\"-773.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">17</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;17 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>3&#45;&gt;17</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M846.9569,-822.9632C835.4497,-820.8439 820.4151,-817.2732 807.9863,-811.6189 797.364,-806.7865 786.639,-799.5357 777.9997,-792.9698\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"772.3789,-788.5718 779.833,-790.4046 775.1353,-790.7286 777.8918,-792.8854 777.8918,-792.8854 777.8918,-792.8854 775.1353,-790.7286 775.9507,-795.3663 772.3789,-788.5718 772.3789,-788.5718\"/>\n",
"<text text-anchor=\"start\" x=\"810.4863\" y=\"-836.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i1</text>\n",
"<text text-anchor=\"start\" x=\"810.4863\" y=\"-821.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 17&#45;&gt;2 -->\n",
"<g id=\"edge39\" class=\"edge\">\n",
"<title>17&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M781.6796,-772.5392C825.8079,-762.0713 923.204,-737.4194 950.9863,-717.6189 969.569,-704.375 1055.5508,-580.9834 1090.1606,-530.7465\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1094.3102,-524.7164 1092.9369,-532.2687 1092.326,-527.5997 1090.3419,-530.483 1090.3419,-530.483 1090.3419,-530.483 1092.326,-527.5997 1087.7469,-528.6973 1094.3102,-524.7164 1094.3102,-524.7164\"/>\n",
"<text text-anchor=\"start\" x=\"917.4863\" y=\"-757.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"<text text-anchor=\"start\" x=\"917.9863\" y=\"-742.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 17&#45;&gt;3 -->\n",
"<g id=\"edge40\" class=\"edge\">\n",
"<title>17&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M781.7383,-772.7484C795.9662,-770.7492 814.4521,-770.3518 828.9863,-777.6189 839.6862,-782.9689 848.031,-793.1787 853.9803,-802.8114\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"857.5446,-809.0013 851.3217,-804.507 855.798,-805.9682 854.0515,-802.9351 854.0515,-802.9351 854.0515,-802.9351 855.798,-805.9682 856.7812,-801.3632 857.5446,-809.0013 857.5446,-809.0013\"/>\n",
"<text text-anchor=\"start\" x=\"807.9863\" y=\"-796.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"810.4863\" y=\"-781.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node14\" class=\"node\">\n",
"<title>4</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"1104.6507\" cy=\"-330.6189\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1104.6507\" y=\"-326.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">4</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;14 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>4&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1105.7736,-312.5218C1108.6272,-273.2423 1117.6321,-182.2042 1140.6507,-163.6189 1160.9155,-147.2571 1191.9299,-151.4529 1213.6962,-157.5203\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1220.4129,-159.5324 1212.8033,-160.5411 1217.0601,-158.528 1213.7073,-157.5236 1213.7073,-157.5236 1213.7073,-157.5236 1217.0601,-158.528 1214.6112,-154.5061 1220.4129,-159.5324 1220.4129,-159.5324\"/>\n",
"<text text-anchor=\"start\" x=\"1159.1507\" y=\"-182.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-167.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 18 -->\n",
"<g id=\"node15\" class=\"node\">\n",
"<title>18</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"1238.9828,-290.6189 1208.8175,-272.6189 1238.9828,-254.6189 1269.1481,-272.6189 1238.9828,-290.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"1238.9828\" y=\"-268.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">18</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;18 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>4&#45;&gt;18</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1110.3889,-313.2499C1115.8543,-299.79 1125.5228,-282.0575 1140.6507,-273.6189 1161.8567,-261.7898 1189.8521,-262.7962 1210.5468,-266.027\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1217.5392,-267.2452 1210.1024,-269.147 1214.0912,-266.6445 1210.6431,-266.0437 1210.6431,-266.0437 1210.6431,-266.0437 1214.0912,-266.6445 1211.1837,-262.9405 1217.5392,-267.2452 1217.5392,-267.2452\"/>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-292.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-277.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 18&#45;&gt;4 -->\n",
"<g id=\"edge41\" class=\"edge\">\n",
"<title>18&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1225.1753,-282.8834C1215.8055,-289.4878 1202.9325,-297.878 1190.6507,-303.6189 1170.8032,-312.8963 1146.9436,-320.1015 1129.3961,-324.7263\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1122.2923,-326.549 1128.2898,-321.7581 1125.6825,-325.6791 1129.0727,-324.8092 1129.0727,-324.8092 1129.0727,-324.8092 1125.6825,-325.6791 1129.8555,-327.8604 1122.2923,-326.549 1122.2923,-326.549\"/>\n",
"<text text-anchor=\"start\" x=\"1161.1507\" y=\"-339.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-324.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node16\" class=\"node\">\n",
"<title>5</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"1104.6507\" cy=\"-166.6189\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1104.6507\" y=\"-162.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">5</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;14 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>5&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1111.2511,-149.6822C1117.0053,-137.4929 1126.6453,-121.9571 1140.6507,-114.6189 1160.3346,-104.3054 1170.2788,-105.7412 1190.6507,-114.6189 1205.853,-121.2438 1218.4261,-135.2688 1226.9344,-147.0853\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1231.0056,-153.0124 1224.4458,-149.0259 1229.0239,-150.1274 1227.0423,-147.2424 1227.0423,-147.2424 1227.0423,-147.2424 1229.0239,-150.1274 1229.6388,-145.4589 1231.0056,-153.0124 1231.0056,-153.0124\"/>\n",
"<text text-anchor=\"start\" x=\"1144.1507\" y=\"-133.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-118.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;16 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>5&#45;&gt;16</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1107.1899,-184.7385C1113.5511,-229.2018 1130.3934,-341.0748 1140.6507,-354.6189 1155.6505,-374.4252 1173.3681,-361.7697 1190.6507,-379.6189 1213.1687,-402.8753 1226.4991,-438.514 1233.2796,-461.696\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1235.1765,-468.463 1230.2539,-462.5731 1234.2318,-465.0929 1233.287,-461.7228 1233.287,-461.7228 1233.287,-461.7228 1234.2318,-465.0929 1236.3201,-460.8726 1235.1765,-468.463 1235.1765,-468.463\"/>\n",
"<text text-anchor=\"start\" x=\"1142.6507\" y=\"-398.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-383.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;18 -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>5&#45;&gt;18</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1117.9867,-178.8163C1124.6306,-184.7063 1132.8859,-191.7511 1140.6507,-197.6189 1161.8931,-213.6719 1169.4444,-214.5181 1190.6507,-230.6189 1201.3554,-238.7465 1212.7296,-248.5653 1221.753,-256.665\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1227.0406,-261.4555 1219.738,-259.09 1224.4468,-259.1056 1221.853,-256.7556 1221.853,-256.7556 1221.853,-256.7556 1224.4468,-259.1056 1223.968,-254.4212 1227.0406,-261.4555 1227.0406,-261.4555\"/>\n",
"<text text-anchor=\"start\" x=\"1142.6507\" y=\"-249.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-234.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 19 -->\n",
"<g id=\"node17\" class=\"node\">\n",
"<title>19</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"1238.9828,-52.6189 1208.8175,-34.6189 1238.9828,-16.6189 1269.1481,-34.6189 1238.9828,-52.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"1238.9828\" y=\"-30.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">19</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;19 -->\n",
"<g id=\"edge15\" class=\"edge\">\n",
"<title>5&#45;&gt;19</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1106.0042,-148.638C1109.2496,-111.006 1118.8782,-25.9886 1140.6507,-8.6189 1163.5163,9.6228 1197.9617,-6.6286 1219.4276,-20.3722\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1225.3814,-24.3334 1217.8085,-23.0785 1222.4674,-22.3946 1219.5534,-20.4559 1219.5534,-20.4559 1219.5534,-20.4559 1222.4674,-22.3946 1221.2982,-17.8333 1225.3814,-24.3334 1225.3814,-24.3334\"/>\n",
"<text text-anchor=\"start\" x=\"1140.6507\" y=\"-27.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-12.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 19&#45;&gt;5 -->\n",
"<g id=\"edge42\" class=\"edge\">\n",
"<title>19&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1214.9273,-38.5108C1192.9266,-43.2447 1160.8254,-53.277 1140.6507,-73.6189 1122.3287,-92.0926 1113.1121,-120.9257 1108.6244,-141.5893\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1107.2271,-148.5272 1105.5212,-141.043 1107.9181,-145.0961 1108.6092,-141.665 1108.6092,-141.665 1108.6092,-141.665 1107.9181,-145.0961 1111.6972,-142.2869 1107.2271,-148.5272 1107.2271,-148.5272\"/>\n",
"<text text-anchor=\"start\" x=\"1161.1507\" y=\"-92.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-77.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node18\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"625.3219\" cy=\"-501.6189\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"625.3219\" y=\"-497.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">6</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;10 -->\n",
"<g id=\"edge16\" class=\"edge\">\n",
"<title>6&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M638.4633,-513.92C644.9308,-519.4058 653.0938,-525.5375 661.3219,-529.6189 721.746,-559.5914 741.2337,-558.9486 807.9863,-568.6189 883.4503,-579.5512 1111.7714,-580.6832 1201.8579,-580.6897\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1208.8669,-580.6879 1201.8678,-583.8398 1205.3669,-580.6888 1201.8669,-580.6898 1201.8669,-580.6898 1201.8669,-580.6898 1205.3669,-580.6888 1201.8661,-577.5398 1208.8669,-580.6879 1208.8669,-580.6879\"/>\n",
"<text text-anchor=\"start\" x=\"902.9863\" y=\"-595.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"917.9863\" y=\"-580.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;11 -->\n",
"<g id=\"edge17\" class=\"edge\">\n",
"<title>6&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M633.1604,-518.3766C639.3183,-529.8329 648.9224,-544.5328 661.3219,-553.6189 686.8356,-572.315 698.7953,-566.3353 729.3219,-574.6189 780.2035,-588.426 1147.4523,-655.3951 1190.6507,-685.6189 1208.7842,-698.306 1222.0289,-720.1632 1230.0202,-736.4758\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1233.1224,-743.0846 1227.2964,-738.0864 1231.6351,-739.9163 1230.1479,-736.7479 1230.1479,-736.7479 1230.1479,-736.7479 1231.6351,-739.9163 1232.9994,-735.4094 1233.1224,-743.0846 1233.1224,-743.0846\"/>\n",
"<text text-anchor=\"start\" x=\"904.4863\" y=\"-639.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"917.9863\" y=\"-624.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 20 -->\n",
"<g id=\"node19\" class=\"node\">\n",
"<title>20</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"759.6541,-499.6189 729.4888,-481.6189 759.6541,-463.6189 789.8194,-481.6189 759.6541,-499.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"759.6541\" y=\"-477.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">20</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;20 -->\n",
"<g id=\"edge18\" class=\"edge\">\n",
"<title>6&#45;&gt;20</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M643.1602,-498.9631C664.8185,-495.7385 701.7277,-490.2433 728.2003,-486.3019\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"735.3689,-485.2346 728.9091,-489.3812 731.907,-485.7501 728.4452,-486.2655 728.4452,-486.2655 728.4452,-486.2655 731.907,-485.7501 727.9813,-483.1499 735.3689,-485.2346 735.3689,-485.2346\"/>\n",
"<text text-anchor=\"start\" x=\"661.3219\" y=\"-514.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"678.3219\" y=\"-499.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 21 -->\n",
"<g id=\"node20\" class=\"node\">\n",
"<title>21</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"759.6541,-413.6189 729.4888,-395.6189 759.6541,-377.6189 789.8194,-395.6189 759.6541,-413.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"759.6541\" y=\"-391.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">21</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;21 -->\n",
"<g id=\"edge19\" class=\"edge\">\n",
"<title>6&#45;&gt;21</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M634.9642,-485.914C641.5359,-476.0911 650.9114,-463.6365 661.3219,-454.6189 680.5733,-437.9433 689.4817,-439.7223 711.3219,-426.6189 720.4498,-421.1425 730.3719,-414.8412 738.8377,-409.3559\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"744.9903,-405.3475 740.8447,-411.8079 742.0578,-407.258 739.1252,-409.1686 739.1252,-409.1686 739.1252,-409.1686 742.0578,-407.258 737.4057,-406.5293 744.9903,-405.3475 744.9903,-405.3475\"/>\n",
"<text text-anchor=\"start\" x=\"663.3219\" y=\"-473.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"678.3219\" y=\"-458.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 20&#45;&gt;4 -->\n",
"<g id=\"edge43\" class=\"edge\">\n",
"<title>20&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M772.939,-471.1939C797.1383,-452.6452 850.5694,-413.6971 900.9863,-390.6189 933.4369,-375.7648 1033.3231,-349.053 1080.0604,-336.9209\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1087.0866,-335.103 1081.0988,-339.906 1083.6982,-335.9797 1080.3098,-336.8564 1080.3098,-336.8564 1080.3098,-336.8564 1083.6982,-335.9797 1079.5207,-333.8068 1087.0866,-335.103 1087.0866,-335.103\"/>\n",
"<text text-anchor=\"start\" x=\"915.4863\" y=\"-409.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"917.9863\" y=\"-394.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node21\" class=\"node\">\n",
"<title>7</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"864.9863\" cy=\"-488.6189\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"864.9863\" y=\"-484.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">7</text>\n",
"</g>\n",
"<!-- 20&#45;&gt;7 -->\n",
"<g id=\"edge44\" class=\"edge\">\n",
"<title>20&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M789.0548,-481.0656C801.4085,-481.0864 815.9176,-481.4424 828.9863,-482.6189 832.6011,-482.9443 836.4007,-483.4245 840.1213,-483.974\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"847.1096,-485.0933 839.6994,-487.0965 843.6536,-484.5397 840.1977,-483.9861 840.1977,-483.9861 840.1977,-483.9861 843.6536,-484.5397 840.6959,-480.8758 847.1096,-485.0933 847.1096,-485.0933\"/>\n",
"<text text-anchor=\"start\" x=\"809.9863\" y=\"-501.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"<text text-anchor=\"start\" x=\"810.4863\" y=\"-486.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 21&#45;&gt;4 -->\n",
"<g id=\"edge45\" class=\"edge\">\n",
"<title>21&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M774.555,-386.0733C799.5064,-370.7507 851.8497,-341.3956 900.9863,-331.6189 964.2213,-319.037 1040.702,-323.8715 1079.4772,-327.6949\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1086.7144,-328.4407 1079.4283,-330.8565 1083.2328,-328.0819 1079.7512,-327.7231 1079.7512,-327.7231 1079.7512,-327.7231 1083.2328,-328.0819 1080.0742,-324.5897 1086.7144,-328.4407 1086.7144,-328.4407\"/>\n",
"<text text-anchor=\"start\" x=\"915.4863\" y=\"-350.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"917.9863\" y=\"-335.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 21&#45;&gt;6 -->\n",
"<g id=\"edge46\" class=\"edge\">\n",
"<title>21&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M740.6448,-388.7245C719.2402,-382.2773 684.4378,-375.9095 661.3219,-392.6189 647.5492,-402.5745 636.1497,-447.6418 630.0739,-476.6195\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"628.6457,-483.6089 626.961,-476.1199 629.3465,-480.1797 630.0472,-476.7506 630.0472,-476.7506 630.0472,-476.7506 629.3465,-480.1797 633.1334,-477.3813 628.6457,-483.6089 628.6457,-483.6089\"/>\n",
"<text text-anchor=\"start\" x=\"677.8219\" y=\"-411.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"<text text-anchor=\"start\" x=\"678.3219\" y=\"-396.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;12 -->\n",
"<g id=\"edge20\" class=\"edge\">\n",
"<title>7&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M865.5143,-507.0206C867.699,-577.1077 877.0657,-824.6712 900.9863,-849.6189 931.5379,-881.4824 955.1745,-863.6189 999.3185,-863.6189 999.3185,-863.6189 999.3185,-863.6189 1343.7631,-863.6189 1417.1818,-863.6189 1442.0909,-753.7227 1449.6193,-703.7919\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1450.6455,-696.5994 1452.7751,-703.9742 1450.1511,-700.0643 1449.6567,-703.5292 1449.6567,-703.5292 1449.6567,-703.5292 1450.1511,-700.0643 1446.5383,-703.0842 1450.6455,-696.5994 1450.6455,-696.5994\"/>\n",
"<text text-anchor=\"start\" x=\"1142.6507\" y=\"-882.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"1157.6507\" y=\"-867.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;13 -->\n",
"<g id=\"edge21\" class=\"edge\">\n",
"<title>7&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M866.701,-506.5777C870.7503,-545.6587 882.0172,-636.8224 900.9863,-660.6189 916.2332,-679.7461 930.5908,-670.1153 950.9863,-683.6189 962.5825,-691.2966 974.1534,-701.7081 983.0652,-710.4758\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"988.2469,-715.6834 981.0765,-712.9432 985.7782,-713.2024 983.3095,-710.7213 983.3095,-710.7213 983.3095,-710.7213 985.7782,-713.2024 985.5424,-708.4995 988.2469,-715.6834 988.2469,-715.6834\"/>\n",
"<text text-anchor=\"start\" x=\"904.4863\" y=\"-702.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"917.9863\" y=\"-687.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 22 -->\n",
"<g id=\"node22\" class=\"node\">\n",
"<title>22</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"999.3185,-454.6189 969.1532,-436.6189 999.3185,-418.6189 1029.4838,-436.6189 999.3185,-454.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"999.3185\" y=\"-432.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">22</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;22 -->\n",
"<g id=\"edge22\" class=\"edge\">\n",
"<title>7&#45;&gt;22</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M882.9964,-486.005C900.7898,-483.0149 928.5251,-477.2454 950.9863,-467.6189 961.1611,-463.2582 971.603,-456.8476 980.1658,-450.986\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"986.038,-446.8521 982.1274,-453.4574 983.176,-448.8669 980.3141,-450.8816 980.3141,-450.8816 980.3141,-450.8816 983.176,-448.8669 978.5008,-448.3059 986.038,-446.8521 986.038,-446.8521\"/>\n",
"<text text-anchor=\"start\" x=\"900.9863\" y=\"-500.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"917.9863\" y=\"-485.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 23 -->\n",
"<g id=\"node23\" class=\"node\">\n",
"<title>23</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"480.3253,-623.6189 450.16,-605.6189 480.3253,-587.6189 510.4906,-605.6189 480.3253,-623.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"480.3253\" y=\"-601.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">23</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;23 -->\n",
"<g id=\"edge23\" class=\"edge\">\n",
"<title>7&#45;&gt;23</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M861.8377,-506.4913C857.6518,-524.5286 848.3895,-551.6539 828.9863,-565.6189 730.8955,-636.2172 575.4908,-621.4269 510.4782,-611.1866\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"503.3727,-610.028 510.7885,-608.0457 506.8271,-610.5913 510.2815,-611.1546 510.2815,-611.1546 510.2815,-611.1546 506.8271,-610.5913 509.7745,-614.2635 503.3727,-610.028 503.3727,-610.028\"/>\n",
"<text text-anchor=\"start\" x=\"663.3219\" y=\"-636.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"678.3219\" y=\"-621.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 22&#45;&gt;4 -->\n",
"<g id=\"edge47\" class=\"edge\">\n",
"<title>22&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1017.9782,-429.574C1033.1185,-423.111 1054.2415,-412.3096 1068.6507,-397.6189 1080.7288,-385.3049 1089.854,-368.1133 1095.8951,-354.2279\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1098.6125,-347.7129 1098.825,-355.3861 1097.2651,-350.9432 1095.9178,-354.1735 1095.9178,-354.1735 1095.9178,-354.1735 1097.2651,-350.9432 1093.0105,-352.9609 1098.6125,-347.7129 1098.6125,-347.7129\"/>\n",
"<text text-anchor=\"start\" x=\"1049.6507\" y=\"-432.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"<text text-anchor=\"start\" x=\"1050.1507\" y=\"-417.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 22&#45;&gt;7 -->\n",
"<g id=\"edge48\" class=\"edge\">\n",
"<title>22&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M979.1261,-430.3801C958.2379,-425.157 925.3258,-420.4604 900.9863,-433.6189 888.65,-440.2882 879.8621,-453.2274 874.0584,-464.8806\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"870.9818,-471.5361 871.0597,-463.8603 872.4504,-468.3591 873.919,-465.1821 873.919,-465.1821 873.919,-465.1821 872.4504,-468.3591 876.7783,-466.5038 870.9818,-471.5361 870.9818,-471.5361\"/>\n",
"<text text-anchor=\"start\" x=\"915.4863\" y=\"-452.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"917.9863\" y=\"-437.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 23&#45;&gt;4 -->\n",
"<g id=\"edge49\" class=\"edge\">\n",
"<title>23&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M502.0618,-600.2668C554.4356,-587.5118 691.8738,-554.8782 807.9863,-534.6189 871.1462,-523.5988 890.2914,-536.2768 950.9863,-515.6189 1008.1653,-496.1577 1031.0183,-494.8628 1068.6507,-447.6189 1089.982,-420.8394 1098.7223,-381.4316 1102.2711,-355.8939\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1103.1774,-348.7622 1105.4198,-356.1035 1102.7362,-352.2342 1102.2949,-355.7063 1102.2949,-355.7063 1102.2949,-355.7063 1102.7362,-352.2342 1099.17,-355.3092 1103.1774,-348.7622 1103.1774,-348.7622\"/>\n",
"<text text-anchor=\"start\" x=\"809.9863\" y=\"-553.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"<text text-anchor=\"start\" x=\"810.4863\" y=\"-538.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 23&#45;&gt;6 -->\n",
"<g id=\"edge50\" class=\"edge\">\n",
"<title>23&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M485.6664,-590.5966C492.7428,-572.873 506.9255,-543.7793 528.6575,-527.6189 549.6148,-512.0347 579.2783,-505.7876 600.2043,-503.2856\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"607.213,-502.5477 600.5814,-506.4134 603.7323,-502.9142 600.2515,-503.2807 600.2515,-503.2807 600.2515,-503.2807 603.7323,-502.9142 599.9216,-500.148 607.213,-502.5477 607.213,-502.5477\"/>\n",
"<text text-anchor=\"start\" x=\"548.4897\" y=\"-546.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"550.9897\" y=\"-531.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node24\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"335.3288\" cy=\"-688.6189\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"335.3288\" y=\"-684.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">8</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;13 -->\n",
"<g id=\"edge24\" class=\"edge\">\n",
"<title>8&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M351.9534,-695.842C357.9724,-698.2541 364.8769,-700.7903 371.3288,-702.6189 418.714,-716.0491 431.0736,-722.6189 480.3253,-722.6189 480.3253,-722.6189 480.3253,-722.6189 818.4863,-722.6189 868.9182,-722.6189 927.2314,-724.5862 963.6961,-726.0527\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"971.1349,-726.3572 964.0119,-729.2182 967.6379,-726.214 964.1408,-726.0709 964.1408,-726.0709 964.1408,-726.0709 967.6379,-726.214 964.2697,-722.9235 971.1349,-726.3572 971.1349,-726.3572\"/>\n",
"<text text-anchor=\"start\" x=\"664.8219\" y=\"-741.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"678.3219\" y=\"-726.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;17 -->\n",
"<g id=\"edge25\" class=\"edge\">\n",
"<title>8&#45;&gt;17</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M343.2553,-705.2894C349.3426,-716.1293 358.8271,-729.5232 371.3288,-736.6189 488.796,-803.2915 658.6356,-791.0186 728.1739,-782.2988\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"735.3684,-781.3637 728.8328,-785.3897 731.8976,-781.8149 728.4268,-782.266 728.4268,-782.266 728.4268,-782.266 731.8976,-781.8149 728.0208,-779.1423 735.3684,-781.3637 735.3684,-781.3637\"/>\n",
"<text text-anchor=\"start\" x=\"535.9897\" y=\"-807.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"550.9897\" y=\"-792.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;23 -->\n",
"<g id=\"edge26\" class=\"edge\">\n",
"<title>8&#45;&gt;23</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M351.5552,-680.067C370.8814,-669.8024 404.0615,-651.9289 431.9931,-635.6189 441.1,-630.3012 451.0187,-624.2001 459.4875,-618.8944\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"465.6436,-615.0183 461.3984,-621.4137 462.6818,-616.8832 459.72,-618.7481 459.72,-618.7481 459.72,-618.7481 462.6818,-616.8832 458.0416,-616.0825 465.6436,-615.0183 465.6436,-615.0183\"/>\n",
"<text text-anchor=\"start\" x=\"378.6609\" y=\"-687.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; i1</text>\n",
"<text text-anchor=\"start\" x=\"393.6609\" y=\"-672.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 24 -->\n",
"<g id=\"node25\" class=\"node\">\n",
"<title>24</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#000000\" points=\"480.3253,-457.6189 450.16,-439.6189 480.3253,-421.6189 510.4906,-439.6189 480.3253,-457.6189\"/>\n",
"<text text-anchor=\"middle\" x=\"480.3253\" y=\"-435.9189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">24</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;24 -->\n",
"<g id=\"edge27\" class=\"edge\">\n",
"<title>8&#45;&gt;24</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M335.8092,-670.3494C337.4338,-622.8748 344.2526,-497.2478 371.3288,-467.6189 389.6033,-447.6214 420.057,-441.0722 444.1358,-439.2698\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"451.3833,-438.8532 444.5756,-442.3998 447.8891,-439.0541 444.3948,-439.255 444.3948,-439.255 444.3948,-439.255 447.8891,-439.0541 444.214,-436.1102 451.3833,-438.8532 451.3833,-438.8532\"/>\n",
"<text text-anchor=\"start\" x=\"376.6609\" y=\"-486.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0 &amp; !i1</text>\n",
"<text text-anchor=\"start\" x=\"393.6609\" y=\"-471.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 24&#45;&gt;5 -->\n",
"<g id=\"edge51\" class=\"edge\">\n",
"<title>24&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M483.2281,-423.2588C493.1094,-373.3822 530.2619,-226.6189 625.3219,-226.6189 625.3219,-226.6189 625.3219,-226.6189 999.3185,-226.6189 1033.7526,-226.6189 1067.1978,-202.1097 1086.8523,-184.4204\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1092.0195,-179.638 1089.0218,-186.7046 1089.4508,-182.0154 1086.8821,-184.3928 1086.8821,-184.3928 1086.8821,-184.3928 1089.4508,-182.0154 1084.7425,-182.081 1092.0195,-179.638 1092.0195,-179.638\"/>\n",
"<text text-anchor=\"start\" x=\"809.9863\" y=\"-245.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"<text text-anchor=\"start\" x=\"810.4863\" y=\"-230.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 24&#45;&gt;8 -->\n",
"<g id=\"edge52\" class=\"edge\">\n",
"<title>24&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M467.3993,-450.2547C461.251,-455.9762 454.316,-463.514 449.9931,-471.6189 432.842,-503.7754 451.0854,-520.5757 431.9931,-551.6189 413.6892,-581.3803 391.445,-573.0512 371.3288,-601.6189 357.7307,-620.93 362.5081,-629.8573 353.3288,-651.6189 351.3055,-656.4154 348.9756,-661.4794 346.6774,-666.27\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"343.5952,-672.5822 343.8361,-664.9098 345.1309,-669.4371 346.6667,-666.292 346.6667,-666.292 346.6667,-666.292 345.1309,-669.4371 349.4973,-667.6742 343.5952,-672.5822 343.5952,-672.5822\"/>\n",
"<text text-anchor=\"start\" x=\"391.1609\" y=\"-620.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"393.6609\" y=\"-605.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 25&#45;&gt;8 -->\n",
"<g id=\"edge53\" class=\"edge\">\n",
"<title>25&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M214.9289,-706.0565C241.5162,-702.2059 283.661,-696.102 310.3834,-692.2318\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"317.4858,-691.2031 311.0096,-695.324 314.0219,-691.7048 310.558,-692.2066 310.558,-692.2066 310.558,-692.2066 314.0219,-691.7048 310.1065,-689.0891 317.4858,-691.2031 317.4858,-691.2031\"/>\n",
"<text text-anchor=\"start\" x=\"264.4966\" y=\"-720.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"260.9966\" y=\"-705.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 26&#45;&gt;3 -->\n",
"<g id=\"edge54\" class=\"edge\">\n",
"<title>26&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M292.8827,-868.6683C319.3818,-872.803 363.4471,-878.6189 401.6609,-878.6189 401.6609,-878.6189 401.6609,-878.6189 759.6541,-878.6189 792.6329,-878.6189 825.8172,-857.6308 845.8887,-842.0696\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"851.4365,-837.6454 847.9277,-844.4727 848.7001,-839.8277 845.9637,-842.0099 845.9637,-842.0099 845.9637,-842.0099 848.7001,-839.8277 843.9997,-839.5471 851.4365,-837.6454 851.4365,-837.6454\"/>\n",
"<text text-anchor=\"start\" x=\"554.4897\" y=\"-897.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"550.9897\" y=\"-882.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 27&#45;&gt;6 -->\n",
"<g id=\"edge55\" class=\"edge\">\n",
"<title>27&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M425.9474,-520.8453C451.4631,-517.0036 492.7924,-511.128 528.6575,-507.6189 552.8446,-505.2524 580.5331,-503.6455 600.0593,-502.6949\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"607.1189,-502.3625 600.2749,-505.8383 603.6228,-502.5271 600.1267,-502.6918 600.1267,-502.6918 600.1267,-502.6918 603.6228,-502.5271 599.9785,-499.5453 607.1189,-502.3625 607.1189,-502.3625\"/>\n",
"<text text-anchor=\"start\" x=\"475.8253\" y=\"-535.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"472.3253\" y=\"-520.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 28&#45;&gt;0 -->\n",
"<g id=\"edge56\" class=\"edge\">\n",
"<title>28&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M585.2972,-928.9994C611.024,-926.6663 651.3251,-923.6189 686.3219,-923.6189 686.3219,-923.6189 686.3219,-923.6189 999.3185,-923.6189 1065.2492,-923.6189 1091.6544,-829.1063 1100.6446,-782.711\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1101.9413,-775.6998 1103.7656,-783.156 1101.3048,-779.1415 1100.6682,-782.5831 1100.6682,-782.5831 1100.6682,-782.5831 1101.3048,-779.1415 1097.5707,-782.0102 1101.9413,-775.6998 1101.9413,-775.6998\"/>\n",
"<text text-anchor=\"start\" x=\"813.9863\" y=\"-942.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"810.4863\" y=\"-927.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 15&#45;&gt;14 -->\n",
"<g id=\"edge37\" class=\"edge\">\n",
"<title>15&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1322.5182,-169.8104C1316.6362,-170.5579 1310.2402,-171.2449 1304.315,-171.6189 1293.3381,-172.3118 1281.3335,-171.7681 1270.6432,-170.823\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1263.481,-170.1148 1270.757,-167.669 1266.964,-170.4593 1270.447,-170.8037 1270.447,-170.8037 1270.447,-170.8037 1266.964,-170.4593 1270.1371,-173.9384 1263.481,-170.1148 1263.481,-170.1148\"/>\n",
"<text text-anchor=\"start\" x=\"1291.315\" y=\"-191.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"1287.815\" y=\"-176.4189\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fb964737d50> >"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"si = spot.synthesis_info()\n",
"si.s = spot.synthesis_info.algo_LAR # Use LAR algorithm\n",
"\n",
"game = spot.ltl_to_game(\"G((F(i0) && F(i1))->(G(i1<->(X(o0)))))\", [\"o0\"], si)\n",
"print(\"game has\", game.num_states(), \"states and\", game.num_edges(), \"edges\")\n",
"print(\"output propositions are:\", \", \".join(spot.get_synthesis_output_aps(game)))\n",
"display(game)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Solving the game, is done with `solve_game()` as with any game. There is also a version that takes a `synthesis_info` as second argument in case the time it takes has to be recorded. Here passing `si` or not makes no difference."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Found a solution: True\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"650pt\" height=\"360pt\"\n",
" viewBox=\"0.00 0.00 650.40 360.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(0.4858 0.4858) rotate(0) translate(4 737.0711)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-737.0711 1334.8756,-737.0711 1334.8756,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"581.4378\" y=\"-718.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Fin(</text>\n",
"<text text-anchor=\"start\" x=\"606.4378\" y=\"-718.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"622.4378\" y=\"-718.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"669.4378\" y=\"-718.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"685.4378\" y=\"-718.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) | Fin(</text>\n",
"<text text-anchor=\"start\" x=\"725.4378\" y=\"-718.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"741.4378\" y=\"-718.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">))</text>\n",
"<text text-anchor=\"start\" x=\"607.9378\" y=\"-704.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[parity max odd 3]</text>\n",
"<!-- I -->\n",
"<!-- 9 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>9</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"56\" cy=\"-607.0711\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-603.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">9</text>\n",
"</g>\n",
"<!-- I&#45;&gt;9 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-607.0711C4.178,-607.0711 17.9448,-607.0711 30.9241,-607.0711\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-607.0711 30.9808,-610.2212 34.4807,-607.0711 30.9807,-607.0712 30.9807,-607.0712 30.9807,-607.0712 34.4807,-607.0711 30.9807,-603.9212 37.9807,-607.0711 37.9807,-607.0711\"/>\n",
"</g>\n",
"<!-- 25 -->\n",
"<g id=\"node26\" class=\"node\">\n",
"<title>25</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"156.3322,-523.0711 126.1669,-505.0711 156.3322,-487.0711 186.4975,-505.0711 156.3322,-523.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"156.3322\" y=\"-501.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">25</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;25 -->\n",
"<g id=\"edge28\" class=\"edge\">\n",
"<title>9&#45;&gt;25</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M68.7071,-594.1527C86.8106,-575.7483 120.0348,-541.9718 139.9614,-521.7139\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"144.9646,-516.6276 142.3015,-523.8269 142.5102,-519.1228 140.0558,-521.618 140.0558,-521.618 140.0558,-521.618 142.5102,-519.1228 137.8102,-519.409 144.9646,-516.6276 144.9646,-516.6276\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-571.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 26 -->\n",
"<g id=\"node27\" class=\"node\">\n",
"<title>26</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"234.9966,-647.0711 204.8313,-629.0711 234.9966,-611.0711 265.1619,-629.0711 234.9966,-647.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"234.9966\" y=\"-625.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">26</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;26 -->\n",
"<g id=\"edge29\" class=\"edge\">\n",
"<title>9&#45;&gt;26</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M74.1482,-609.3016C104.3116,-613.0089 165.1581,-620.4874 202.759,-625.1088\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"209.9533,-625.9931 202.6213,-628.2655 206.4794,-625.5661 203.0056,-625.139 203.0056,-625.139 203.0056,-625.139 206.4794,-625.5661 203.3899,-622.0126 209.9533,-625.9931 209.9533,-625.9931\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-615.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 27 -->\n",
"<g id=\"node28\" class=\"node\">\n",
"<title>27</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"367.6609,-388.0711 337.4956,-370.0711 367.6609,-352.0711 397.8262,-370.0711 367.6609,-388.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"367.6609\" y=\"-366.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">27</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;27 -->\n",
"<g id=\"edge30\" class=\"edge\">\n",
"<title>9&#45;&gt;27</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M60.0456,-589.4701C67.8001,-559.5094 87.5088,-498.4182 126,-463.0711 187.0669,-406.9923 285.5713,-383.4464 335.8764,-374.664\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"342.9385,-373.4733 336.5597,-377.7433 339.4872,-374.0552 336.0359,-374.6372 336.0359,-374.6372 336.0359,-374.6372 339.4872,-374.0552 335.5122,-371.531 342.9385,-373.4733 342.9385,-373.4733\"/>\n",
"<text text-anchor=\"start\" x=\"148.3322\" y=\"-466.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 28 -->\n",
"<g id=\"node29\" class=\"node\">\n",
"<title>28</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"524.9897,-697.0711 494.8244,-679.0711 524.9897,-661.0711 555.155,-679.0711 524.9897,-697.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"524.9897\" y=\"-675.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">28</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;28 -->\n",
"<g id=\"edge31\" class=\"edge\">\n",
"<title>9&#45;&gt;28</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M66.7967,-621.9895C83.4389,-643.0788 117.5262,-679.0711 156.3322,-679.0711 156.3322,-679.0711 156.3322,-679.0711 367.6609,-679.0711 408.4991,-679.0711 455.3001,-679.0711 487.1689,-679.0711\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"494.5349,-679.0711 487.535,-682.2212 491.0349,-679.0711 487.5349,-679.0712 487.5349,-679.0712 487.5349,-679.0712 491.0349,-679.0711 487.5349,-675.9212 494.5349,-679.0711 494.5349,-679.0711\"/>\n",
"<text text-anchor=\"start\" x=\"226.9966\" y=\"-682.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"992.6507\" cy=\"-558.0711\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"992.6507\" y=\"-554.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>10</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"1092.9828,-429.0711 1062.8175,-411.0711 1092.9828,-393.0711 1123.1481,-411.0711 1092.9828,-429.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"1092.9828\" y=\"-407.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">10</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;10 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1002.8232,-543.167C1021.2414,-516.1818 1060.0697,-459.2933 1080.2296,-429.7563\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1084.234,-423.8892 1082.8896,-431.4467 1082.2609,-426.7801 1080.2878,-429.6709 1080.2878,-429.6709 1080.2878,-429.6709 1082.2609,-426.7801 1077.6861,-427.8951 1084.234,-423.8892 1084.234,-423.8892\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-504.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 11 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>11</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"1092.9828,-576.0711 1062.8175,-558.0711 1092.9828,-540.0711 1123.1481,-558.0711 1092.9828,-576.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"1092.9828\" y=\"-554.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">11</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;11 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1011.0531,-558.0711C1023.4018,-558.0711 1040.1126,-558.0711 1055.2217,-558.0711\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1062.484,-558.0711 1055.4841,-561.2212 1058.984,-558.0711 1055.484,-558.0712 1055.484,-558.0712 1055.484,-558.0712 1058.984,-558.0711 1055.484,-554.9212 1062.484,-558.0711 1062.484,-558.0711\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-561.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"1196.7631\" cy=\"-457.0711\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1196.7631\" y=\"-453.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;1 -->\n",
"<g id=\"edge32\" class=\"edge\">\n",
"<title>10&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M1116.6532,-415.1043C1129.1448,-417.7761 1144.4967,-421.94 1157.315,-428.0711 1164.2164,-431.372 1171.1408,-435.9362 1177.2192,-440.4675\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"1182.9833,-444.9399 1175.5218,-443.1375 1179.9115,-443.1893 1177.1463,-441.0438 1177.4528,-440.6487 1177.7593,-440.2537 1180.5245,-442.3993 1179.3838,-438.16 1182.9833,-444.9399 1182.9833,-444.9399\"/>\n",
"<text text-anchor=\"start\" x=\"1141.315\" y=\"-431.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;0 -->\n",
"<g id=\"edge33\" class=\"edge\">\n",
"<title>11&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M1076.3944,-566.4406C1063.4459,-571.9422 1044.9752,-577.5354 1028.6507,-574.0711 1024.1722,-573.1207 1019.5745,-571.5734 1015.226,-569.8063\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"1008.6509,-566.9028 1016.3269,-566.849 1012.0546,-567.8593 1015.2564,-569.2732 1015.0544,-569.7306 1014.8524,-570.188 1011.6507,-568.7741 1013.7819,-572.6121 1008.6509,-566.9028 1008.6509,-566.9028\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-578.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 12 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>12</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"1300.5434,-513.0711 1270.3781,-495.0711 1300.5434,-477.0711 1330.7087,-495.0711 1300.5434,-513.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"1300.5434\" y=\"-491.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">12</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;12 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1213.575,-464.1309C1220.5446,-466.9946 1228.7339,-470.2786 1236.2112,-473.0711 1248.5736,-477.6878 1262.4074,-482.4679 1274.0699,-486.3882\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1281.0183,-488.7089 1273.3809,-489.4791 1277.6986,-487.6001 1274.3788,-486.4913 1274.3788,-486.4913 1274.3788,-486.4913 1277.6986,-487.6001 1275.3767,-483.5036 1281.0183,-488.7089 1281.0183,-488.7089\"/>\n",
"<text text-anchor=\"start\" x=\"1236.2112\" y=\"-481.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 13 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>13</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"892.3185,-554.0711 862.1532,-536.0711 892.3185,-518.0711 922.4838,-536.0711 892.3185,-554.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"892.3185\" y=\"-532.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">13</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;13 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>1&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1178.7053,-455.4322C1147.4876,-453.1459 1081.6818,-450.7451 1028.6507,-465.0711 984.2382,-477.0688 937.8181,-505.1042 912.234,-522.1372\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"906.1923,-526.2141 910.2328,-519.6874 909.0936,-524.2563 911.9948,-522.2985 911.9948,-522.2985 911.9948,-522.2985 909.0936,-524.2563 913.7568,-524.9096 906.1923,-526.2141 906.1923,-526.2141\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-468.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;1 -->\n",
"<g id=\"edge34\" class=\"edge\">\n",
"<title>12&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M1290.5158,-482.7291C1281.6362,-472.8566 1267.7058,-459.7578 1252.2112,-454.0711 1242.5473,-450.5243 1231.2982,-450.4582 1221.4677,-451.5863\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"1214.2765,-452.6439 1220.7437,-448.5089 1217.6665,-451.6399 1221.1293,-451.1307 1221.202,-451.6253 1221.2748,-452.12 1217.812,-452.6293 1221.6604,-454.7418 1214.2765,-452.6439 1214.2765,-452.6439\"/>\n",
"<text text-anchor=\"start\" x=\"1236.2112\" y=\"-457.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 13&#45;&gt;0 -->\n",
"<g id=\"edge35\" class=\"edge\">\n",
"<title>13&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M914.5854,-540.9536C930.3056,-544.4006 951.3851,-549.0227 967.677,-552.5951\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"974.7892,-554.1545 967.2769,-555.7321 971.2633,-553.8933 967.8445,-553.1436 967.9516,-552.6552 968.0587,-552.1668 971.4775,-552.9165 968.6263,-549.5783 974.7892,-554.1545 974.7892,-554.1545\"/>\n",
"<text text-anchor=\"start\" x=\"940.6507\" y=\"-552.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" cx=\"992.6507\" cy=\"-357.0711\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"992.6507\" y=\"-353.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"</g>\n",
"<!-- 14 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>14</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"1092.9828,-136.0711 1062.8175,-118.0711 1092.9828,-100.0711 1123.1481,-118.0711 1092.9828,-136.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"1092.9828\" y=\"-114.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">14</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;14 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>2&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M1005.401,-343.8885C1017.5729,-330.4792 1035.3893,-308.5296 1044.6507,-286.0711 1065.043,-236.6202 1044.198,-217.278 1062.6507,-167.0711 1066.6327,-156.2364 1073.1864,-145.2151 1079.185,-136.3761\"/>\n",
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"1083.2107,-130.6345 1081.7712,-138.1745 1081.6107,-133.7873 1079.6014,-136.6531 1079.192,-136.366 1078.7826,-136.079 1080.7919,-133.2132 1076.6128,-134.5576 1083.2107,-130.6345 1083.2107,-130.6345\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-316.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 16 -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>16</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"1092.9828,-364.0711 1062.8175,-346.0711 1092.9828,-328.0711 1123.1481,-346.0711 1092.9828,-364.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"1092.9828\" y=\"-342.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">16</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;16 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>2&#45;&gt;16</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1010.5451,-360.0524C1016.3078,-360.8793 1022.7334,-361.6621 1028.6507,-362.0711 1035.7448,-362.5614 1037.6302,-363.2029 1044.6507,-362.0711 1052.5342,-360.8001 1060.8728,-358.4335 1068.3635,-355.9029\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1074.967,-353.5595 1069.4236,-358.8693 1071.6685,-354.7301 1068.3701,-355.9006 1068.3701,-355.9006 1068.3701,-355.9006 1071.6685,-354.7301 1067.3166,-352.932 1074.967,-353.5595 1074.967,-353.5595\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-365.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 15 -->\n",
"<g id=\"node30\" class=\"node\">\n",
"<title>15</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" cx=\"1196.7631\" cy=\"-118.0711\" rx=\"21.3963\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1196.7631\" y=\"-114.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">15</text>\n",
"</g>\n",
"<!-- 14&#45;&gt;15 -->\n",
"<g id=\"edge36\" class=\"edge\">\n",
"<title>14&#45;&gt;15</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1108.7157,-109.2166C1121.6612,-103.0109 1140.5421,-96.4252 1157.315,-100.0711 1162.3724,-101.1704 1167.5584,-102.9774 1172.4393,-105.0328\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1178.8652,-107.9463 1171.1891,-107.9245 1175.6775,-106.501 1172.4899,-105.0557 1172.4899,-105.0557 1172.4899,-105.0557 1175.6775,-106.501 1173.7907,-102.1868 1178.8652,-107.9463 1178.8652,-107.9463\"/>\n",
"<text text-anchor=\"start\" x=\"1141.315\" y=\"-103.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 16&#45;&gt;2 -->\n",
"<g id=\"edge38\" class=\"edge\">\n",
"<title>16&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1068.9703,-342.336C1056.7974,-341.1017 1041.8377,-340.5972 1028.6507,-343.0711 1024.4283,-343.8632 1020.0648,-345.1356 1015.8952,-346.5982\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1009.1202,-349.1883 1014.5339,-343.7462 1012.3895,-347.9384 1015.6587,-346.6886 1015.6587,-346.6886 1015.6587,-346.6886 1012.3895,-347.9384 1016.7836,-349.6309 1009.1202,-349.1883 1009.1202,-349.1883\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-346.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"791.9863\" cy=\"-605.0711\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"791.9863\" y=\"-601.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;13 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>3&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M807.6561,-595.5507C818.0809,-589.114 832.0081,-580.3158 843.9863,-572.0711 853.7899,-565.3231 864.4237,-557.4642 873.2145,-550.814\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"878.973,-546.4315 875.3103,-553.1774 876.1878,-548.5511 873.4026,-550.6708 873.4026,-550.6708 873.4026,-550.6708 876.1878,-548.5511 871.495,-548.1641 878.973,-546.4315 878.973,-546.4315\"/>\n",
"<text text-anchor=\"start\" x=\"827.9863\" y=\"-585.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 17 -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>17</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"691.6541,-585.0711 661.4888,-567.0711 691.6541,-549.0711 721.8194,-567.0711 691.6541,-585.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"691.6541\" y=\"-563.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">17</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;17 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>3&#45;&gt;17</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M774.4636,-600.2893C764.2894,-597.3621 751.2894,-593.3621 739.9863,-589.0711 731.6364,-585.9012 722.6849,-581.98 714.7827,-578.33\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"708.4279,-575.3503 716.1031,-575.4701 711.5969,-576.8362 714.7658,-578.3221 714.7658,-578.3221 714.7658,-578.3221 711.5969,-576.8362 713.4285,-581.1742 708.4279,-575.3503 708.4279,-575.3503\"/>\n",
"<text text-anchor=\"start\" x=\"739.9863\" y=\"-597.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 17&#45;&gt;2 -->\n",
"<g id=\"edge39\" class=\"edge\">\n",
"<title>17&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M712.9023,-561.5349C743.5917,-552.9045 801.3169,-534.2533 843.9863,-506.0711 899.9606,-469.1012 952.1033,-408.5347 977.1268,-377.2237\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"981.4784,-371.73 979.6012,-379.173 979.3052,-374.4735 977.132,-377.2171 977.132,-377.2171 977.132,-377.2171 979.3052,-374.4735 974.6627,-375.2612 981.4784,-371.73 981.4784,-371.73\"/>\n",
"<text text-anchor=\"start\" x=\"827.9863\" y=\"-517.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 17&#45;&gt;3 -->\n",
"<g id=\"edge40\" class=\"edge\">\n",
"<title>17&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M717.0288,-564.1728C729.2668,-563.7774 743.8808,-564.8246 755.9863,-570.0711 763.7019,-573.415 770.7147,-579.2088 776.4586,-585.1312\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"781.3607,-590.5398 774.3257,-587.4685 778.6397,-588.2822 776.2892,-585.6889 776.6597,-585.3531 777.0302,-585.0173 779.3807,-587.6107 778.9937,-583.2377 781.3607,-590.5398 781.3607,-590.5398\"/>\n",
"<text text-anchor=\"start\" x=\"739.9863\" y=\"-573.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node14\" class=\"node\">\n",
"<title>4</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" cx=\"992.6507\" cy=\"-232.0711\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"992.6507\" y=\"-228.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">4</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;14 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>4&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M996.4899,-214.258C1002.6023,-187.607 1015.2329,-139.2785 1028.6507,-128.0711 1036.8972,-121.183 1047.8901,-118.0316 1058.4526,-116.7915\"/>\n",
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"1065.6573,-116.216 1058.9304,-119.9135 1062.2082,-116.9932 1058.7194,-117.2719 1058.6795,-116.7735 1058.6397,-116.2751 1062.1286,-115.9963 1058.4287,-113.6335 1065.6573,-116.216 1065.6573,-116.216\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-131.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 18 -->\n",
"<g id=\"node15\" class=\"node\">\n",
"<title>18</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"1092.9828,-212.0711 1062.8175,-194.0711 1092.9828,-176.0711 1123.1481,-194.0711 1092.9828,-212.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"1092.9828\" y=\"-190.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">18</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;18 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>4&#45;&gt;18</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1002.7506,-216.9795C1009.1173,-208.8657 1018.1173,-199.6157 1028.6507,-195.0711 1038.9991,-190.6063 1051.1836,-189.5056 1062.1494,-189.8108\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1069.148,-190.1931 1061.9865,-192.9565 1065.6532,-190.0021 1062.1584,-189.8112 1062.1584,-189.8112 1062.1584,-189.8112 1065.6532,-190.0021 1062.3303,-186.6658 1069.148,-190.1931 1069.148,-190.1931\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-198.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 18&#45;&gt;4 -->\n",
"<g id=\"edge41\" class=\"edge\">\n",
"<title>18&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1074.5165,-201.0651C1058.1556,-207.2616 1034.1742,-216.3443 1016.392,-223.0792\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1009.6706,-225.6249 1015.1011,-220.1997 1012.9438,-224.3852 1016.2169,-223.1455 1016.2169,-223.1455 1016.2169,-223.1455 1012.9438,-224.3852 1017.3326,-226.0913 1009.6706,-225.6249 1009.6706,-225.6249\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-221.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node16\" class=\"node\">\n",
"<title>5</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" cx=\"992.6507\" cy=\"-118.0711\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"992.6507\" y=\"-114.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">5</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;14 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>5&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M1002.7244,-102.918C1009.0823,-94.7837 1018.0823,-85.5337 1028.6507,-81.0711 1035.2017,-78.3048 1037.9156,-78.7891 1044.6507,-81.0711 1056.5233,-85.0938 1067.7708,-93.3331 1076.4232,-101.0174\"/>\n",
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"1081.9745,-106.1901 1074.7057,-103.7226 1079.0729,-104.1699 1076.5123,-101.7838 1076.8531,-101.418 1077.194,-101.0522 1079.7547,-103.4382 1079.0005,-99.1134 1081.9745,-106.1901 1081.9745,-106.1901\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-84.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;16 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>5&#45;&gt;16</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M996.6239,-135.8838C1002.2237,-159.5736 1013.4738,-202.4815 1028.6507,-237.0711 1043.2757,-270.4028 1065.9094,-306.2364 1080.0642,-327.3784\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1083.9922,-333.1934 1077.4636,-329.1561 1082.033,-330.2931 1080.0738,-327.3928 1080.0738,-327.3928 1080.0738,-327.3928 1082.033,-330.2931 1082.6841,-325.6295 1083.9922,-333.1934 1083.9922,-333.1934\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-271.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;18 -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>5&#45;&gt;18</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1007.0258,-128.96C1024.6055,-142.2763 1054.4205,-164.8607 1073.9058,-179.6205\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1079.5963,-183.931 1072.1144,-182.2152 1076.8063,-181.8176 1074.0164,-179.7042 1074.0164,-179.7042 1074.0164,-179.7042 1076.8063,-181.8176 1075.9184,-177.1933 1079.5963,-183.931 1079.5963,-183.931\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-159.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 19 -->\n",
"<g id=\"node17\" class=\"node\">\n",
"<title>19</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"1092.9828,-41.0711 1062.8175,-23.0711 1092.9828,-5.0711 1123.1481,-23.0711 1092.9828,-41.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"1092.9828\" y=\"-19.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">19</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;19 -->\n",
"<g id=\"edge15\" class=\"edge\">\n",
"<title>5&#45;&gt;19</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M995.7861,-99.8796C1001.1924,-70.9024 1013.1917,-16.3706 1028.6507,-5.0711 1041.6859,4.4569 1059.5693,-1.7016 1073.1726,-9.303\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1079.4668,-13.0882 1071.8445,-12.1801 1076.4674,-11.2844 1073.4679,-9.4806 1073.4679,-9.4806 1073.4679,-9.4806 1076.4674,-11.2844 1075.0913,-6.7811 1079.4668,-13.0882 1079.4668,-13.0882\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-8.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 19&#45;&gt;5 -->\n",
"<g id=\"edge42\" class=\"edge\">\n",
"<title>19&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1075.3677,-30.6484C1061.5143,-37.2317 1042.3333,-47.7899 1028.6507,-61.0711 1018.541,-70.8841 1009.9791,-84.0715 1003.7447,-95.2902\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1000.3488,-101.6277 1000.8784,-93.9699 1002.0019,-98.5427 1003.655,-95.4577 1003.655,-95.4577 1003.655,-95.4577 1002.0019,-98.5427 1006.4315,-96.9454 1000.3488,-101.6277 1000.3488,-101.6277\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-64.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node18\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"591.3219\" cy=\"-329.0711\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"591.3219\" y=\"-325.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">6</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;10 -->\n",
"<g id=\"edge16\" class=\"edge\">\n",
"<title>6&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M606.7024,-338.4923C644.3447,-360.6231 744.7036,-414.0711 835.9863,-414.0711 835.9863,-414.0711 835.9863,-414.0711 992.6507,-414.0711 1014.2841,-414.0711 1038.5297,-413.3656 1057.7668,-412.6389\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1064.8785,-412.3607 1058.007,-415.782 1061.3812,-412.4976 1057.8839,-412.6344 1057.8839,-412.6344 1057.8839,-412.6344 1061.3812,-412.4976 1057.7608,-409.4868 1064.8785,-412.3607 1064.8785,-412.3607\"/>\n",
"<text text-anchor=\"start\" x=\"827.9863\" y=\"-417.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;11 -->\n",
"<g id=\"edge17\" class=\"edge\">\n",
"<title>6&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M602.5438,-343.3352C615.1529,-358.2873 637.0562,-381.2197 661.3219,-393.0711 820.3676,-470.7487 895.735,-405.3972 1044.6507,-501.0711 1059.6598,-510.714 1072.489,-526.442 1081.1501,-538.9366\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1085.0584,-544.7697 1078.545,-540.7077 1083.1102,-541.862 1081.162,-538.9543 1081.162,-538.9543 1081.162,-538.9543 1083.1102,-541.862 1083.7789,-537.201 1085.0584,-544.7697 1085.0584,-544.7697\"/>\n",
"<text text-anchor=\"start\" x=\"827.9863\" y=\"-442.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 20 -->\n",
"<g id=\"node19\" class=\"node\">\n",
"<title>20</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"691.6541,-335.0711 661.4888,-317.0711 691.6541,-299.0711 721.8194,-317.0711 691.6541,-335.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"691.6541\" y=\"-313.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">20</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;20 -->\n",
"<g id=\"edge18\" class=\"edge\">\n",
"<title>6&#45;&gt;20</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M609.2593,-326.9257C623.0433,-325.2771 642.4568,-322.9552 658.9775,-320.9793\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"666.334,-320.0994 659.7577,-324.0585 662.8588,-320.5151 659.3835,-320.9308 659.3835,-320.9308 659.3835,-320.9308 662.8588,-320.5151 659.0094,-317.8031 666.334,-320.0994 666.334,-320.0994\"/>\n",
"<text text-anchor=\"start\" x=\"627.3219\" y=\"-327.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 21 -->\n",
"<g id=\"node20\" class=\"node\">\n",
"<title>21</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"691.6541,-271.0711 661.4888,-253.0711 691.6541,-235.0711 721.8194,-253.0711 691.6541,-271.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"691.6541\" y=\"-249.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">21</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;21 -->\n",
"<g id=\"edge19\" class=\"edge\">\n",
"<title>6&#45;&gt;21</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M605.6971,-318.1821C623.2767,-304.8658 653.0917,-282.2814 672.577,-267.5216\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"678.2675,-263.2112 674.5896,-269.9488 675.4776,-265.3245 672.6876,-267.4379 672.6876,-267.4379 672.6876,-267.4379 675.4776,-265.3245 670.7856,-264.9269 678.2675,-263.2112 678.2675,-263.2112\"/>\n",
"<text text-anchor=\"start\" x=\"627.3219\" y=\"-303.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 20&#45;&gt;4 -->\n",
"<g id=\"edge43\" class=\"edge\">\n",
"<title>20&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M710.421,-309.8973C736.5245,-300.0814 785.3912,-282.2915 827.9863,-270.0711 877.0146,-256.0049 935.393,-243.5185 967.8108,-236.9533\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"974.7054,-235.5673 968.4636,-240.0352 971.274,-236.2571 967.8427,-236.947 967.8427,-236.947 967.8427,-236.947 971.274,-236.2571 967.2218,-233.8588 974.7054,-235.5673 974.7054,-235.5673\"/>\n",
"<text text-anchor=\"start\" x=\"827.9863\" y=\"-273.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node21\" class=\"node\">\n",
"<title>7</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"791.9863\" cy=\"-317.0711\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"791.9863\" y=\"-313.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">7</text>\n",
"</g>\n",
"<!-- 20&#45;&gt;7 -->\n",
"<g id=\"edge44\" class=\"edge\">\n",
"<title>20&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M722.0293,-317.0711C736.3367,-317.0711 753.2018,-317.0711 766.7878,-317.0711\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"773.9611,-317.0711 766.9611,-320.2212 770.4611,-317.5711 766.9611,-317.5712 766.9611,-317.0712 766.9611,-316.5712 770.4611,-316.5711 766.9611,-313.9212 773.9611,-317.0711 773.9611,-317.0711\"/>\n",
"<text text-anchor=\"start\" x=\"739.9863\" y=\"-320.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 21&#45;&gt;4 -->\n",
"<g id=\"edge45\" class=\"edge\">\n",
"<title>21&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M711.7057,-246.6278C738.0501,-238.532 785.9116,-225.0908 827.9863,-220.0711 877.2592,-214.1925 935.1944,-221.7526 967.5425,-227.2638\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"974.8115,-228.5418 967.3717,-230.432 971.3643,-227.9357 967.9172,-227.3296 967.9172,-227.3296 967.9172,-227.3296 971.3643,-227.9357 968.4627,-224.2272 974.8115,-228.5418 974.8115,-228.5418\"/>\n",
"<text text-anchor=\"start\" x=\"827.9863\" y=\"-223.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 21&#45;&gt;6 -->\n",
"<g id=\"edge46\" class=\"edge\">\n",
"<title>21&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M666.5437,-256.1959C653.7973,-258.7862 638.6554,-263.503 627.3219,-272.0711 615.927,-280.6856 607.2148,-294.0415 601.2171,-305.6601\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"597.9998,-312.2511 598.2398,-304.5788 599.0858,-308.8865 600.6212,-305.7412 601.0705,-305.9606 601.5198,-306.1799 599.9845,-309.3252 603.9013,-307.3424 597.9998,-312.2511 597.9998,-312.2511\"/>\n",
"<text text-anchor=\"start\" x=\"627.3219\" y=\"-275.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;12 -->\n",
"<g id=\"edge20\" class=\"edge\">\n",
"<title>7&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M793.3115,-335.3209C797.7516,-394.6105 812.6865,-579.2484 827.9863,-601.0711 846.4335,-627.383 860.1841,-634.0711 892.3185,-634.0711 892.3185,-634.0711 892.3185,-634.0711 1196.7631,-634.0711 1254.0331,-634.0711 1283.4849,-557.3717 1294.8455,-517.9219\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"1296.7589,-511.0161 1297.9254,-518.6031 1295.8243,-514.3891 1294.8898,-517.762 1294.8898,-517.762 1294.8898,-517.762 1295.8243,-514.3891 1291.8541,-516.9209 1296.7589,-511.0161 1296.7589,-511.0161\"/>\n",
"<text text-anchor=\"start\" x=\"1028.6507\" y=\"-637.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;13 -->\n",
"<g id=\"edge21\" class=\"edge\">\n",
"<title>7&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M793.2836,-335.3536C796.0277,-364.8896 804.2644,-424.2185 827.9863,-468.0711 834.2386,-479.6292 858.2641,-503.7207 875.1126,-519.8982\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"880.5153,-525.0515 873.2758,-522.4994 877.9827,-522.6357 875.45,-520.22 875.45,-520.22 875.45,-520.22 877.9827,-522.6357 877.6242,-517.9406 880.5153,-525.0515 880.5153,-525.0515\"/>\n",
"<text text-anchor=\"start\" x=\"827.9863\" y=\"-490.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 22 -->\n",
"<g id=\"node22\" class=\"node\">\n",
"<title>22</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"892.3185,-321.0711 862.1532,-303.0711 892.3185,-285.0711 922.4838,-303.0711 892.3185,-321.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"892.3185\" y=\"-299.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">22</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;22 -->\n",
"<g id=\"edge22\" class=\"edge\">\n",
"<title>7&#45;&gt;22</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M810.3039,-315.1798C820.278,-314.0941 832.827,-312.6375 843.9863,-311.0711 849.6715,-310.273 855.7189,-309.3397 861.5422,-308.3978\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"868.7543,-307.2098 862.3594,-311.4557 865.3009,-307.7787 861.8474,-308.3476 861.8474,-308.3476 861.8474,-308.3476 865.3009,-307.7787 861.3354,-305.2395 868.7543,-307.2098 868.7543,-307.2098\"/>\n",
"<text text-anchor=\"start\" x=\"827.9863\" y=\"-316.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 23 -->\n",
"<g id=\"node23\" class=\"node\">\n",
"<title>23</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"446.3253,-439.0711 416.16,-421.0711 446.3253,-403.0711 476.4906,-421.0711 446.3253,-439.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"446.3253\" y=\"-417.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">23</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;23 -->\n",
"<g id=\"edge23\" class=\"edge\">\n",
"<title>7&#45;&gt;23</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M786.6686,-334.53C781.3243,-348.9255 771.606,-368.618 755.9863,-379.0711 669.293,-437.0881 538.1408,-431.6474 478.2194,-425.3439\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"470.9309,-424.5353 478.2356,-422.1765 474.4095,-424.9213 477.8882,-425.3073 477.8882,-425.3073 477.8882,-425.3073 474.4095,-424.9213 477.5408,-428.4381 470.9309,-424.5353 470.9309,-424.5353\"/>\n",
"<text text-anchor=\"start\" x=\"627.3219\" y=\"-426.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 22&#45;&gt;4 -->\n",
"<g id=\"edge47\" class=\"edge\">\n",
"<title>22&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M910.7979,-296.0081C924.236,-290.3821 942.4797,-281.6988 956.6507,-271.0711 963.9072,-265.6289 970.906,-258.6056 976.7723,-252.0218\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"981.4145,-246.6391 979.2282,-253.9973 979.1286,-249.2895 976.8428,-251.94 976.8428,-251.94 976.8428,-251.94 979.1286,-249.2895 974.4574,-249.8828 981.4145,-246.6391 981.4145,-246.6391\"/>\n",
"<text text-anchor=\"start\" x=\"940.6507\" y=\"-283.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 22&#45;&gt;7 -->\n",
"<g id=\"edge48\" class=\"edge\">\n",
"<title>22&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M874.5431,-295.6092C861.455,-291.1729 843.3408,-287.2625 827.9863,-292.0711 822.0364,-293.9344 816.2073,-297.166 811.0311,-300.6992\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"805.2867,-304.9214 809.0615,-298.2375 807.8107,-302.4456 810.6309,-300.3728 810.927,-300.7757 811.2231,-301.1785 808.403,-303.2514 812.7926,-303.3138 805.2867,-304.9214 805.2867,-304.9214\"/>\n",
"<text text-anchor=\"start\" x=\"827.9863\" y=\"-295.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 23&#45;&gt;4 -->\n",
"<g id=\"edge49\" class=\"edge\">\n",
"<title>23&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M465.84,-414.6424C513.4749,-399.5414 639.7245,-363.0711 747.9863,-363.0711 747.9863,-363.0711 747.9863,-363.0711 892.3185,-363.0711 945.2262,-363.0711 974.0147,-294.8896 985.9481,-256.9037\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"988.1122,-249.7383 989.1037,-257.3501 987.1002,-253.0888 986.0883,-256.4394 986.0883,-256.4394 986.0883,-256.4394 987.1002,-253.0888 983.0728,-255.5286 988.1122,-249.7383 988.1122,-249.7383\"/>\n",
"<text text-anchor=\"start\" x=\"739.9863\" y=\"-366.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 23&#45;&gt;6 -->\n",
"<g id=\"edge50\" class=\"edge\">\n",
"<title>23&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M453.7325,-407.217C461.9459,-393.1312 476.4694,-371.6425 494.6575,-359.0711 506.3665,-350.9779 541.9687,-341.1135 566.5335,-334.9608\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"573.4518,-333.2526 567.4111,-337.9888 570.1737,-334.577 566.7758,-335.4161 566.6559,-334.9307 566.5361,-334.4453 569.934,-333.6062 565.9008,-331.8725 573.4518,-333.2526 573.4518,-333.2526\"/>\n",
"<text text-anchor=\"start\" x=\"516.9897\" y=\"-362.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node24\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"301.3288\" cy=\"-498.0711\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"301.3288\" y=\"-494.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">8</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;13 -->\n",
"<g id=\"edge24\" class=\"edge\">\n",
"<title>8&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M319.1078,-501.5113C346.3712,-506.4787 400.1966,-515.0711 446.3253,-515.0711 446.3253,-515.0711 446.3253,-515.0711 747.9863,-515.0711 788.3701,-515.0711 834.4538,-523.2214 863.4621,-529.367\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"870.4553,-530.88 862.9474,-532.4785 867.0344,-530.1399 863.6136,-529.3997 863.6136,-529.3997 863.6136,-529.3997 867.0344,-530.1399 864.2797,-526.3209 870.4553,-530.88 870.4553,-530.88\"/>\n",
"<text text-anchor=\"start\" x=\"627.3219\" y=\"-518.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;17 -->\n",
"<g id=\"edge25\" class=\"edge\">\n",
"<title>8&#45;&gt;17</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M313.3248,-511.6906C319.7694,-518.0786 328.2471,-525.1361 337.3288,-529.0711 446.9244,-576.558 592.7332,-574.033 657.8058,-569.9209\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"664.963,-569.4412 658.1894,-573.0524 661.4708,-569.6753 657.9787,-569.9095 657.9787,-569.9095 657.9787,-569.9095 661.4708,-569.6753 657.768,-566.7665 664.963,-569.4412 664.963,-569.4412\"/>\n",
"<text text-anchor=\"start\" x=\"516.9897\" y=\"-574.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;23 -->\n",
"<g id=\"edge26\" class=\"edge\">\n",
"<title>8&#45;&gt;23</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M318.0115,-490.5954C337.4906,-481.7215 370.542,-466.2118 397.9931,-451.0711 407.2274,-445.9779 417.1672,-439.914 425.6174,-434.5754\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"431.7526,-430.6624 427.5447,-437.0825 428.8017,-432.5445 425.8508,-434.4266 425.8508,-434.4266 425.8508,-434.4266 428.8017,-432.5445 424.1569,-431.7708 431.7526,-430.6624 431.7526,-430.6624\"/>\n",
"<text text-anchor=\"start\" x=\"359.6609\" y=\"-483.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 24 -->\n",
"<g id=\"node25\" class=\"node\">\n",
"<title>24</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"446.3253,-289.0711 416.16,-271.0711 446.3253,-253.0711 476.4906,-271.0711 446.3253,-289.0711\"/>\n",
"<text text-anchor=\"middle\" x=\"446.3253\" y=\"-267.3711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">24</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;24 -->\n",
"<g id=\"edge27\" class=\"edge\">\n",
"<title>8&#45;&gt;24</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M303.1906,-480.0977C307.4982,-441.4468 319.1908,-351.989 337.3288,-328.0711 357.2613,-301.7867 392.8262,-286.4687 417.8997,-278.453\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"424.6718,-276.3828 418.8985,-281.4416 421.3247,-277.406 417.9776,-278.4293 417.9776,-278.4293 417.9776,-278.4293 421.3247,-277.406 417.0567,-275.4169 424.6718,-276.3828 424.6718,-276.3828\"/>\n",
"<text text-anchor=\"start\" x=\"359.6609\" y=\"-331.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 24&#45;&gt;5 -->\n",
"<g id=\"edge51\" class=\"edge\">\n",
"<title>24&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M454.1177,-257.1908C473.1037,-225.408 525.0926,-150.0711 591.3219,-150.0711 591.3219,-150.0711 591.3219,-150.0711 892.3185,-150.0711 920.079,-150.0711 950.2042,-138.8141 970.1235,-129.6535\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"976.4693,-126.6465 971.4925,-132.4906 973.3064,-128.1453 970.1436,-129.644 970.1436,-129.644 970.1436,-129.644 973.3064,-128.1453 968.7947,-126.7974 976.4693,-126.6465 976.4693,-126.6465\"/>\n",
"<text text-anchor=\"start\" x=\"739.9863\" y=\"-153.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 24&#45;&gt;8 -->\n",
"<g id=\"edge52\" class=\"edge\">\n",
"<title>24&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M433.2887,-281.649C427.1121,-287.3557 420.1853,-294.8978 415.9931,-303.0711 396.5801,-340.9197 422.6514,-362.4105 397.9931,-397.0711 379.9488,-422.4349 359.0741,-409.7986 337.3288,-432.0711 335.5828,-433.8593 323.0359,-457.14 313.2395,-475.5511\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"309.7799,-482.065 310.2814,-474.4053 310.98,-478.7394 312.6218,-475.6483 313.0634,-475.8829 313.505,-476.1174 311.8632,-479.2085 315.8453,-477.3604 309.7799,-482.065 309.7799,-482.065\"/>\n",
"<text text-anchor=\"start\" x=\"359.6609\" y=\"-435.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 25&#45;&gt;8 -->\n",
"<g id=\"edge53\" class=\"edge\">\n",
"<title>25&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M184.289,-503.7214C210.8036,-502.4413 250.2957,-500.5348 275.9322,-499.2971\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"283.0933,-498.9514 276.2534,-502.4354 279.6215,-499.6196 276.1256,-499.7885 276.1015,-499.2891 276.0774,-498.7896 279.5733,-498.6208 275.9495,-496.1427 283.0933,-498.9514 283.0933,-498.9514\"/>\n",
"<text text-anchor=\"start\" x=\"226.9966\" y=\"-505.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 26&#45;&gt;3 -->\n",
"<g id=\"edge54\" class=\"edge\">\n",
"<title>26&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M259.388,-632.6066C285.9556,-636.1463 329.7342,-641.0711 367.6609,-641.0711 367.6609,-641.0711 367.6609,-641.0711 691.6541,-641.0711 719.9193,-641.0711 750.171,-628.2567 769.9778,-617.9186\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"776.2765,-614.5296 771.6046,-620.6204 773.4312,-616.6283 770.349,-618.2867 770.1121,-617.8464 769.8752,-617.4061 772.9574,-615.7477 768.6195,-615.0724 776.2765,-614.5296 776.2765,-614.5296\"/>\n",
"<text text-anchor=\"start\" x=\"516.9897\" y=\"-644.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 27&#45;&gt;6 -->\n",
"<g id=\"edge55\" class=\"edge\">\n",
"<title>27&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M388.1564,-364.1522C413.1115,-357.159 456.6397,-345.6461 494.6575,-339.0711 518.6862,-334.9154 546.3951,-332.2646 565.9692,-330.7441\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"573.0482,-330.2159 566.302,-333.8781 569.5951,-330.975 566.1048,-331.2355 566.0676,-330.7368 566.0304,-330.2382 569.5207,-329.9778 565.8332,-327.5956 573.0482,-330.2159 573.0482,-330.2159\"/>\n",
"<text text-anchor=\"start\" x=\"438.3253\" y=\"-359.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 28&#45;&gt;0 -->\n",
"<g id=\"edge56\" class=\"edge\">\n",
"<title>28&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M555.4298,-679.0711C577.5862,-679.0711 608.3135,-679.0711 635.3219,-679.0711 635.3219,-679.0711 635.3219,-679.0711 892.3185,-679.0711 942.2067,-679.0711 972.0083,-617.3665 984.9707,-582.0852\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"987.3397,-575.4074 987.968,-583.0578 986.6407,-578.8732 985.4705,-582.1718 984.9993,-582.0046 984.5281,-581.8374 985.6982,-578.5388 982.0305,-580.9514 987.3397,-575.4074 987.3397,-575.4074\"/>\n",
"<text text-anchor=\"start\" x=\"739.9863\" y=\"-682.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 15&#45;&gt;14 -->\n",
"<g id=\"edge37\" class=\"edge\">\n",
"<title>15&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M1175.1682,-118.0711C1162.2589,-118.0711 1145.4996,-118.0711 1130.4853,-118.0711\"/>\n",
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"1123.2794,-118.0711 1130.2794,-114.9212 1126.7794,-117.5711 1130.2794,-117.5712 1130.2794,-118.0712 1130.2794,-118.5712 1126.7794,-118.5711 1130.2793,-121.2212 1123.2794,-118.0711 1123.2794,-118.0711\"/>\n",
"<text text-anchor=\"start\" x=\"1141.315\" y=\"-121.8711\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.jupyter.SVG object>"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(\"Found a solution:\", spot.solve_game(game, si))\n",
"spot.highlight_strategy(game)\n",
"game.show('.g')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Once a strategy has been found, it can be extracted as an automaton and simplified using 6 different levels (the default is 2). The output should be interpreted as a Mealy automaton, where transition 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,
"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 0x7fb9646b7870> >"
]
},
"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 0x7fb9646b7de0> >"
]
},
"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 0x7fb9646b7630> >"
]
},
"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 0x7fb9646b77b0> >"
]
},
"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 0x7fb9646b7f00> >"
]
},
"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 0x7fb9646b74b0> >"
]
},
"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",
"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,
"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",
"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,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"266pt\" height=\"208pt\"\n",
" viewBox=\"0.00 0.00 266.19 208.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 204)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-204 262.1926,-204 262.1926,4 -4,4\"/>\n",
"<!-- 6 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>6</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"#000000\" points=\"77.1961,-118 11.1961,-118 11.1961,-82 77.1961,-82 77.1961,-118\"/>\n",
"<text text-anchor=\"middle\" x=\"44.1961\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">L0_out</text>\n",
"</g>\n",
"<!-- o0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>o0</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"#000000\" points=\"44.1961,-154 88.5891,-188.5 -.197,-188.5 44.1961,-154\"/>\n",
"<text text-anchor=\"middle\" x=\"44.1961\" y=\"-173.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;o0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>6&#45;&gt;o0:s</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M44.1961,-118C44.1961,-126.2031 44.1961,-136.2373 44.1961,-145.9568\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"44.1961\" cy=\"-150\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- L0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>L0</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"#000000\" points=\"151.1961,-118 95.1961,-118 95.1961,-82 151.1961,-82 151.1961,-118\"/>\n",
"<text text-anchor=\"middle\" x=\"123.1961\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">L0_in</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"123.1961,-46 84.203,-11.5 162.1892,-11.5 123.1961,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"123.1961\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;L0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>2&#45;&gt;L0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M123.1961,-46.1025C123.1961,-54.6964 123.1961,-64.5158 123.1961,-73.3982\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"123.1961\" cy=\"-77.5566\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"219.1961,-46 180.203,-11.5 258.1892,-11.5 219.1961,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"219.1961\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i0</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.aig; proxy of <Swig Object of type 'spot::aig_ptr *' at 0x7fb9646b73f0> >"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"aig = spot.mealy_machine_to_aig(mealy, \"isop\")\n",
"display(aig)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"While we are at it, let us mention that you can render those circuits horizontally as follows:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"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",
"metadata": {},
"source": [
"To encode the circuit in the AIGER format (ASCII version) use:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"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",
"metadata": {},
"source": [
"# Adding more inputs and outputs by force"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It can happen that propositions declared as output are ommited in the aig circuit (either because they are not part of the specification, or because they do not appear in the winning strategy). In that case those \n",
"values can take arbitrary values.\n",
"\n",
"For instance so following constraint mention `o1` and `i1`, but those atomic proposition are actually unconstrained (`F(... U x)` can be simplified to `Fx`). Without any indication, the circuit built will ignore those variables:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"392pt\" height=\"258pt\"\n",
" viewBox=\"0.00 0.00 392.00 257.85\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 253.851)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-253.851 388,-253.851 388,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"143\" y=\"-235.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n",
"<text text-anchor=\"start\" x=\"165\" y=\"-235.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"181\" y=\"-235.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) | Fin(</text>\n",
"<text text-anchor=\"start\" x=\"221\" y=\"-235.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"237\" y=\"-235.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)</text>\n",
"<text text-anchor=\"start\" x=\"160\" y=\"-221.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Streett 1]</text>\n",
"<!-- I -->\n",
"<!-- 3 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"56\" cy=\"-95.851\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-92.151\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
"</g>\n",
"<!-- I&#45;&gt;3 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-95.851C4.178,-95.851 17.9448,-95.851 30.9241,-95.851\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-95.851 30.9808,-99.0011 34.4807,-95.851 30.9807,-95.8511 30.9807,-95.8511 30.9807,-95.8511 34.4807,-95.851 30.9807,-92.7011 37.9807,-95.851 37.9807,-95.851\"/>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>6</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"153,-154.851 126,-136.851 153,-118.851 180,-136.851 153,-154.851\"/>\n",
"<text text-anchor=\"middle\" x=\"153\" y=\"-133.151\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">6</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;6 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>3&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M72.8961,-102.9926C88.6134,-109.6361 112.174,-119.5946 129.6791,-126.9937\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"136.2975,-129.7912 128.6234,-129.9673 133.0737,-128.4285 129.8498,-127.0658 129.8498,-127.0658 129.8498,-127.0658 133.0737,-128.4285 131.0762,-124.1643 136.2975,-129.7912 136.2975,-129.7912\"/>\n",
"<text text-anchor=\"start\" x=\"93.5\" y=\"-135.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">i0</text>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-120.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>7</title>\n",
"<polygon fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"153,-87.851 126,-69.851 153,-51.851 180,-69.851 153,-87.851\"/>\n",
"<text text-anchor=\"middle\" x=\"153\" y=\"-66.151\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">7</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;7 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>3&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M69.6576,-83.5003C75.9837,-78.5764 83.8883,-73.4645 92,-70.851 101.7348,-67.7145 112.8047,-66.8019 122.8174,-66.8817\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"129.8872,-67.0977 122.7942,-70.0324 126.3888,-66.9908 122.8904,-66.8839 122.8904,-66.8839 122.8904,-66.8839 126.3888,-66.9908 122.9866,-63.7353 129.8872,-67.0977 129.8872,-67.0977\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-89.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!i0</text>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-74.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</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=\"#ff4da0\">❶</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=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#33a02c\" stroke-width=\"2\" cx=\"255\" cy=\"-176.851\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"255\" y=\"-173.151\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;6 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>2&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M241.1356,-164.7477C234.7713,-159.7642 226.8939,-154.3502 219,-150.851 207.8265,-145.898 194.7968,-142.6567 183.2803,-140.5547\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"176.3353,-139.388 183.7605,-137.4413 179.7869,-139.9679 183.2386,-140.5478 183.2386,-140.5478 183.2386,-140.5478 179.7869,-139.9679 182.7167,-143.6543 176.3353,-139.388 176.3353,-139.388\"/>\n",
"<text text-anchor=\"start\" x=\"204\" y=\"-169.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
"<text text-anchor=\"start\" x=\"200.5\" y=\"-154.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;0 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>6&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M162.6152,-124.7394C170.864,-115.398 183.6643,-103.1987 198,-97.851 208.0722,-94.0937 219.8601,-93.5252 230.094,-94.1158\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"237.2245,-94.7216 229.9829,-97.2676 233.6947,-94.9235 230.2073,-94.6271 230.2496,-94.1289 230.292,-93.6307 233.7794,-93.9271 230.5163,-90.9902 237.2245,-94.7216 237.2245,-94.7216\"/>\n",
"<text text-anchor=\"start\" x=\"200\" y=\"-116.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"<text text-anchor=\"start\" x=\"200.5\" y=\"-101.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;2 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>6&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M161.6314,-149.6319C169.6399,-160.2454 182.6205,-174.5816 198,-180.851 208.2254,-185.0194 220.3351,-184.8065 230.7573,-183.2344\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"237.6591,-181.9661 231.3438,-186.3295 234.2167,-182.5987 230.7744,-183.2314 230.7744,-183.2314 230.7744,-183.2314 234.2167,-182.5987 230.205,-180.1333 237.6591,-181.9661 237.6591,-181.9661\"/>\n",
"<text text-anchor=\"start\" x=\"198\" y=\"-202.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"200.5\" y=\"-187.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;1 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>7&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M166.0387,-60.3452C174.6466,-54.6607 186.4339,-47.9566 198,-44.851 208.2301,-42.1041 219.8688,-41.4792 229.9503,-41.6821\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"236.9736,-41.9576 229.8554,-44.8307 233.4567,-42.32 229.9594,-42.1827 229.979,-41.6831 229.9986,-41.1835 233.4959,-41.3208 230.1025,-38.5355 236.9736,-41.9576 236.9736,-41.9576\"/>\n",
"<text text-anchor=\"start\" x=\"198\" y=\"-63.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"200.5\" y=\"-48.651\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#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 0x7fb9646b7570> >"
]
},
"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 0x7fb9646b7630> >"
]
},
"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 'spot::aig_ptr *' at 0x7fb9646b74b0> >"
]
},
"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",
"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,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"333pt\" height=\"352pt\"\n",
" viewBox=\"0.00 0.00 333.00 352.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 348)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-348 328.9965,-348 328.9965,4 -4,4\"/>\n",
"<!-- 6 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>6</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"#000000\" points=\"66,-118 0,-118 0,-82 66,-82 66,-118\"/>\n",
"<text text-anchor=\"middle\" x=\"33\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">L0_out</text>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"63\" cy=\"-172\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"63\" y=\"-168.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">8</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;8 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>6&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M40.5703,-118.1686C44.2957,-127.1097 48.8392,-138.014 52.8602,-147.6645\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"54.4089\" cy=\"-151.3814\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- L0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>L0</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"#000000\" points=\"68,-262 12,-262 12,-226 68,-226 68,-262\"/>\n",
"<text text-anchor=\"middle\" x=\"40\" y=\"-240.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">L0_in</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;L0 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>8&#45;&gt;L0</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M57.4323,-189.4292C54.6695,-198.078 51.2776,-208.6961 48.2225,-218.26\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"46.9738\" cy=\"-222.1691\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- o0 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>o0</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"#000000\" points=\"96,-298 140.393,-332.5 51.607,-332.5 96,-298\"/>\n",
"<text text-anchor=\"middle\" x=\"96\" y=\"-317.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;o0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>8&#45;&gt;o0:s</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M70.3238,-188.7535C79.2103,-210.5107 93.3039,-250.1396 95.6606,-287.5301\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"92.1778,-288.1187 96,-298 99.1741,-287.8918 92.1778,-288.1187\"/>\n",
"</g>\n",
"<!-- o1 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>o1</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"#000000\" points=\"202,-298 246.393,-332.5 157.607,-332.5 202,-298\"/>\n",
"<text text-anchor=\"middle\" x=\"202\" y=\"-317.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">o1</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"94,-46 55.0069,-11.5 132.9931,-11.5 94,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"94\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i0</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;8 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>2&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M90.1917,-42.6751C86.4398,-61.9047 80.4887,-91.9979 75,-118 73.2149,-126.457 71.2017,-135.6418 69.3416,-143.9975\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"65.8669,-143.4974 67.0958,-154.0208 72.6976,-145.0279 65.8669,-143.4974\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"286,-46 247.0069,-11.5 324.9931,-11.5 286,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"286\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">i1</text>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>0</title>\n",
"<polygon fill=\"#ffe6cc\" stroke=\"#000000\" points=\"229,-41 175,-41 175,-5 229,-5 229,-41\"/>\n",
"<text text-anchor=\"middle\" x=\"202\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">False</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;o1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;o1:s</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M202,-41.0182C202,-83.4483 202,-193.2273 202,-287.9984\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"198.5001,-288 202,-298 205.5001,-288 198.5001,-288\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.aig; proxy of <Swig Object of type 'spot::aig_ptr *' at 0x7fb964737c30> >"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(spot.mealy_machine_to_aig(mealy, \"isop\", [\"i0\", \"i1\"], [\"o0\", \"o1\"]))"
]
},
{
"cell_type": "markdown",
"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,
"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=\"238pt\"\n",
" viewBox=\"0.00 0.00 290.00 237.69\" 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 233.6944)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-233.6944 286,-233.6944 286,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-215.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n",
"<text text-anchor=\"start\" x=\"114\" y=\"-215.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"130\" y=\"-215.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) | Fin(</text>\n",
"<text text-anchor=\"start\" x=\"170\" y=\"-215.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"186\" y=\"-215.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)</text>\n",
"<text text-anchor=\"start\" x=\"109\" y=\"-201.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Streett 1]</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=\"-93.6944\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-89.9944\" 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,-93.6944C4.178,-93.6944 17.9448,-93.6944 30.9241,-93.6944\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-93.6944 30.9808,-96.8445 34.4807,-93.6944 30.9807,-93.6945 30.9807,-93.6945 30.9807,-93.6945 34.4807,-93.6944 30.9807,-90.5445 37.9807,-93.6944 37.9807,-93.6944\"/>\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,-151.6944 228,-133.6944 255,-115.6944 282,-133.6944 255,-151.6944\"/>\n",
"<text text-anchor=\"middle\" x=\"255\" y=\"-129.9944\" 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=\"M61.5224,-111.1227C66.9047,-124.8703 76.5683,-143.11 92,-151.6944 136.83,-176.6323 199.3027,-157.5484 232.3742,-144.0574\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"238.9682,-141.2813 233.7389,-146.9008 235.7424,-142.6395 232.5166,-143.9976 232.5166,-143.9976 232.5166,-143.9976 235.7424,-142.6395 231.2943,-141.0944 238.9682,-141.2813 238.9682,-141.2813\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-182.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">(!i0 &amp; !i1) | (i0 &amp; i1)</text>\n",
"<text text-anchor=\"start\" x=\"143\" y=\"-167.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</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,-71.6944 228,-53.6944 255,-35.6944 282,-53.6944 255,-71.6944\"/>\n",
"<text text-anchor=\"middle\" x=\"255\" y=\"-49.9944\" 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=\"M69.7566,-81.632C76.101,-76.7615 83.9925,-71.6117 92,-68.6944 135.3177,-52.9128 189.1929,-51.1093 222.8487,-51.9055\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"230.1247,-52.1258 223.0325,-55.0624 226.6263,-52.0198 223.1279,-51.9138 223.1279,-51.9138 223.1279,-51.9138 226.6263,-52.0198 223.2233,-48.7653 230.1247,-52.1258 230.1247,-52.1258\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-87.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">(!i0 &amp; i1) | (i0 &amp; !i1)</text>\n",
"<text text-anchor=\"start\" x=\"143\" y=\"-72.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</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.1369,-126.8534C229.7864,-123.6842 219.4845,-120.0971 210,-117.6944 197.7459,-114.5901 121.3247,-103.2297 80.9444,-97.3205\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"73.8475,-96.2837 81.2293,-94.1787 77.383,-96.2949 80.8462,-96.8009 80.774,-97.2957 80.7017,-97.7904 77.2384,-97.2844 80.3186,-100.4126 73.8475,-96.2837 73.8475,-96.2837\"/>\n",
"<text text-anchor=\"start\" x=\"140.5\" y=\"-136.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o0</text>\n",
"<text text-anchor=\"start\" x=\"143\" y=\"-121.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</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=\"M244.8495,-42.1443C236.4819,-33.5587 223.7837,-22.5294 210,-17.6944 160.5119,-.3349 136.3161,10.3503 92,-17.6944 74.5122,-28.7612 65.3534,-50.8736 60.6615,-68.4065\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"58.9129,-75.5947 57.5068,-68.0484 59.2544,-72.0757 60.0817,-68.6748 60.5675,-68.793 61.0533,-68.9112 60.226,-72.312 63.6282,-69.5376 58.9129,-75.5947 58.9129,-75.5947\"/>\n",
"<text text-anchor=\"start\" x=\"142.5\" y=\"-36.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o0</text>\n",
"<text text-anchor=\"start\" x=\"143\" y=\"-21.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</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=\"238pt\"\n",
" viewBox=\"0.00 0.00 290.00 237.69\" 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 233.6944)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-233.6944 286,-233.6944 286,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-215.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n",
"<text text-anchor=\"start\" x=\"114\" y=\"-215.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"130\" y=\"-215.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">) | Fin(</text>\n",
"<text text-anchor=\"start\" x=\"170\" y=\"-215.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"186\" y=\"-215.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)</text>\n",
"<text text-anchor=\"start\" x=\"109\" y=\"-201.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Streett 1]</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=\"-93.6944\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-89.9944\" 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,-93.6944C4.178,-93.6944 17.9448,-93.6944 30.9241,-93.6944\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-93.6944 30.9808,-96.8445 34.4807,-93.6944 30.9807,-93.6945 30.9807,-93.6945 30.9807,-93.6945 34.4807,-93.6944 30.9807,-90.5445 37.9807,-93.6944 37.9807,-93.6944\"/>\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,-151.6944 228,-133.6944 255,-115.6944 282,-133.6944 255,-151.6944\"/>\n",
"<text text-anchor=\"middle\" x=\"255\" y=\"-129.9944\" 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=\"M61.5224,-111.1227C66.9047,-124.8703 76.5683,-143.11 92,-151.6944 136.83,-176.6323 199.3027,-157.5484 232.3742,-144.0574\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"238.9682,-141.2813 233.7389,-146.9008 235.7424,-142.6395 232.5166,-143.9976 232.5166,-143.9976 232.5166,-143.9976 235.7424,-142.6395 231.2943,-141.0944 238.9682,-141.2813 238.9682,-141.2813\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-182.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">(!i0 &amp; !i1) | (i0 &amp; i1)</text>\n",
"<text text-anchor=\"start\" x=\"143\" y=\"-167.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</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,-71.6944 228,-53.6944 255,-35.6944 282,-53.6944 255,-71.6944\"/>\n",
"<text text-anchor=\"middle\" x=\"255\" y=\"-49.9944\" 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=\"M69.7566,-81.632C76.101,-76.7615 83.9925,-71.6117 92,-68.6944 135.3177,-52.9128 189.1929,-51.1093 222.8487,-51.9055\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"230.1247,-52.1258 223.0325,-55.0624 226.6263,-52.0198 223.1279,-51.9138 223.1279,-51.9138 223.1279,-51.9138 226.6263,-52.0198 223.2233,-48.7653 230.1247,-52.1258 230.1247,-52.1258\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-87.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">(!i0 &amp; i1) | (i0 &amp; !i1)</text>\n",
"<text text-anchor=\"start\" x=\"143\" y=\"-72.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</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.1369,-126.8534C229.7864,-123.6842 219.4845,-120.0971 210,-117.6944 197.7459,-114.5901 121.3247,-103.2297 80.9444,-97.3205\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"73.8475,-96.2837 81.2293,-94.1787 77.383,-96.2949 80.8462,-96.8009 80.774,-97.2957 80.7017,-97.7904 77.2384,-97.2844 80.3186,-100.4126 73.8475,-96.2837 73.8475,-96.2837\"/>\n",
"<text text-anchor=\"start\" x=\"142.5\" y=\"-136.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">o1</text>\n",
"<text text-anchor=\"start\" x=\"143\" y=\"-121.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</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=\"M244.8495,-42.1443C236.4819,-33.5587 223.7837,-22.5294 210,-17.6944 160.5119,-.3349 136.3161,10.3503 92,-17.6944 74.5122,-28.7612 65.3534,-50.8736 60.6615,-68.4065\"/>\n",
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"58.9129,-75.5947 57.5068,-68.0484 59.2544,-72.0757 60.0817,-68.6748 60.5675,-68.793 61.0533,-68.9112 60.226,-72.312 63.6282,-69.5376 58.9129,-75.5947 58.9129,-75.5947\"/>\n",
"<text text-anchor=\"start\" x=\"140.5\" y=\"-36.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!o1</text>\n",
"<text text-anchor=\"start\" x=\"143\" y=\"-21.4944\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</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 'spot::aig_ptr *' at 0x7fb964737d80> >"
]
},
"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 0x7fb9646b7c60> >"
]
},
"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 'spot::aig_ptr *' at 0x7fb9646b7de0> >"
]
},
"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",
"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,
"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,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"161pt\" height=\"289pt\"\n",
" viewBox=\"0.00 0.00 161.29 289.50\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 285.496)\">\n",
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-285.496 157.2941,-285.496 157.2941,4 -4,4\"/>\n",
"<!-- 6 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"108.4971\" cy=\"-100\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"108.4971\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">6</text>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>10</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"47.4971\" cy=\"-176.748\" rx=\"22.9987\" ry=\"22.9987\"/>\n",
"<text text-anchor=\"middle\" x=\"47.4971\" y=\"-173.048\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">10</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;10 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>6&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M97.0235,-114.4357C88.5006,-125.1589 76.6775,-140.0343 66.7205,-152.5618\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"64.2\" cy=\"-155.7331\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- o1 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>o1</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"#000000\" points=\"119.4971,-235.496 153.0923,-269.996 85.9019,-269.996 119.4971,-235.496\"/>\n",
"<text text-anchor=\"middle\" x=\"119.4971\" y=\"-254.796\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">d</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;o1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>6&#45;&gt;o1:s</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M110.884,-117.9348C113.8664,-141.8139 118.6699,-185.673 119.4022,-225.478\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"115.9025,-225.5296 119.4971,-235.496 122.9021,-225.4632 115.9025,-225.5296\"/>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"47.4971\" cy=\"-100\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"47.4971\" y=\"-96.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">8</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;10 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>8&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M47.4971,-118.1882C47.4971,-126.4164 47.4971,-136.3755 47.4971,-145.729\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"47.4972\" cy=\"-149.7341\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- o0 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>o0</title>\n",
"<polygon fill=\"#ffe5f1\" stroke=\"#000000\" points=\"35.4971,-235.496 67.9913,-269.996 3.0029,-269.996 35.4971,-235.496\"/>\n",
"<text text-anchor=\"middle\" x=\"35.4971\" y=\"-254.796\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">c</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;o0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>10&#45;&gt;o0:s</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M40.8653,-198.5716C38.8273,-206.6287 36.8875,-216.0847 36.0008,-225.4459\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"32.5021,-225.3333 35.4971,-235.496 39.4934,-225.6837 32.5021,-225.3333\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"32.4971,-46 .0029,-11.5 64.9913,-11.5 32.4971,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"32.4971\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;6 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>2&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M43.7112,-34.3616C55.417,-46.2215 74.0226,-65.0719 88.2981,-79.5352\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"86.1964,-82.3883 95.7121,-87.0468 91.1784,-77.471 86.1964,-82.3883\"/>\n",
"</g>\n",
"<!-- 2&#45;&gt;8 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>2&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M36.2822,-42.4304C38.1587,-52.0626 40.4501,-63.8255 42.4715,-74.202\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"43.2568\" cy=\"-78.2331\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"#e9f4fb\" stroke=\"#000000\" points=\"116.4971,-46 82.9019,-11.5 150.0923,-11.5 116.4971,-46\"/>\n",
"<text text-anchor=\"middle\" x=\"116.4971\" y=\"-19.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">b</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;6 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>4&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M114.3111,-44.0406C113.4266,-52.5538 112.392,-62.5119 111.4427,-71.6488\"/>\n",
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"107.9338,-71.5536 110.3816,-81.8618 114.8964,-72.277 107.9338,-71.5536\"/>\n",
"</g>\n",
"<!-- 4&#45;&gt;8 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>4&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"#000000\" d=\"M105.7159,-35.0313C94.8691,-47.1356 77.9599,-66.0053 65.1537,-80.2963\"/>\n",
"<ellipse fill=\"#000000\" stroke=\"#000000\" cx=\"62.2644\" cy=\"-83.5206\" rx=\"4\" ry=\"4\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.aig; proxy of <Swig Object of type 'spot::aig_ptr *' at 0x7fb964737de0> >"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"this_aig = spot.aiger_circuit(aag_txt)\n",
"display(this_aig)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"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,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"((2, 4), (3, 5), (7, 9))\n"
]
}
],
"source": [
"print(this_aig.gates())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"An 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,
"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 0x7fb9646c8360> >"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"this_aig.as_automaton()"
]
},
{
"cell_type": "markdown",
"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,
"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,
"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",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}