spot/wrap/python/tests/decompose.ipynb
Alexandre Duret-Lutz 104a372c41 Add a notebook illustrating decompose_strength()
* wrap/python/tests/decompose.ipynb: New file.
* wrap/python/tests/Makefile.am: Add it.
* src/twaalgos/strength.cc: Fix corner cases.
* src/tests/strength.test: Adjust corner case.
* NEWS, doc/org/tut.org: Mention the notebook.
2015-11-08 22:07:43 +01:00

4800 lines
No EOL
392 KiB
Text

{
"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.4.3+"
},
"name": ""
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": true,
"input": [
"from IPython.display import display\n",
"import spot\n",
"spot.setup()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This notebook demonstrates how to use the `strength_decompose()` function to split an automaton in up to three automata capturing different behaviors. This is based on the paper [Strength-based decomposition of the property B\u00fcchi automaton for faster model checking](https://www.lrde.epita.fr/~adl/dl/adl/renault.13.tacas.pdf) (TACAS'13).\n",
"\n",
"# Basics\n",
"\n",
"Let's define the following strengths of SCCs:\n",
"- an accepting SCC is **weak** if all its transitions belong to the same acceptance sets\n",
"- an accepting SCC is **terminal** if it is *weak* and complete (i.e. from any state, you can stay in the SCC by reading any word)\n",
"- an accepting SCC is **strictly weak** if it is *weak* and not complete (in other words: *weak* but not *terminal*)\n",
"- an accepting SCC is **strong** if it is not weak.\n",
"\n",
"The strengths **strong**, **stricly weak**, and **terminal** define a partition of all accepting SCCs. The following B\u00fcchi automaton has 4 SCCs, and its 3 accepting SCCs show an example of each strength."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"aut = spot.translate('(Ga -> Gb) W c')\n",
"aut.show('.sa')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 2,
"svg": [
"<svg height=\"260pt\" viewBox=\"0.00 0.00 419.00 260.24\" width=\"419pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 256.243)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-256.243 415,-256.243 415,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"184.5\" y=\"-238.043\">Inf(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"206.5\" y=\"-238.043\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"222.5\" y=\"-238.043\">)</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"164,-11.2426 164,-111.243 216,-111.243 216,-11.2426 164,-11.2426\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust2\"><title>cluster_1</title>\n",
"<polygon fill=\"none\" points=\"351,-32.2426 351,-132.243 403,-132.243 403,-32.2426 351,-32.2426\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust3\"><title>cluster_2</title>\n",
"<polygon fill=\"none\" points=\"268,-32.2426 268,-117.243 320,-117.243 320,-32.2426 268,-32.2426\" stroke=\"red\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust4\"><title>cluster_3</title>\n",
"<polygon fill=\"none\" points=\"30,-119.243 30,-221.243 216,-221.243 216,-119.243 30,-119.243\" stroke=\"green\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node2\"><title>1</title>\n",
"<ellipse cx=\"56\" cy=\"-145.243\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-141.543\">1</text>\n",
"</g>\n",
"<!-- I&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;1</title>\n",
"<path d=\"M1.15491,-145.243C2.79388,-145.243 17.1543,-145.243 30.6317,-145.243\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.9419,-145.243 30.9419,-148.393 34.4419,-145.243 30.9419,-145.243 30.9419,-145.243 30.9419,-145.243 34.4419,-145.243 30.9418,-142.093 37.9419,-145.243 37.9419,-145.243\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>1-&gt;1</title>\n",
"<path d=\"M49.6208,-162.28C48.3189,-172.101 50.4453,-181.243 56,-181.243 60.166,-181.243 62.4036,-176.1 62.7128,-169.386\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"62.3792,-162.28 65.8541,-169.124 62.5434,-165.776 62.7076,-169.272 62.7076,-169.272 62.7076,-169.272 62.5434,-165.776 59.561,-169.42 62.3792,-162.28 62.3792,-162.28\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"36\" y=\"-200.043\">!a &amp; !c</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"48\" y=\"-185.043\">\u24ff</text>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node3\"><title>0</title>\n",
"<ellipse cx=\"190\" cy=\"-37.2426\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"190\" y=\"-33.5426\">0</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>1-&gt;0</title>\n",
"<path d=\"M70.6291,-134.092C94.2674,-114.751 142.92,-74.9443 169.91,-52.8619\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"175.642,-48.1723 172.219,-55.0429 172.933,-50.3886 170.224,-52.605 170.224,-52.605 170.224,-52.605 172.933,-50.3886 168.229,-50.167 175.642,-48.1723 175.642,-48.1723\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-121.043\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g class=\"node\" id=\"node4\"><title>3</title>\n",
"<ellipse cx=\"377\" cy=\"-58.2426\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"377\" y=\"-54.5426\">3</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>1-&gt;3</title>\n",
"<path d=\"M61.4186,-127.992C66.5954,-110.192 76.4918,-82.2758 92,-62.2426 116.65,-30.4005 125.855,-20.1451 164,-7.24264 232.475,15.9189 316.751,-23.848 355.157,-45.552\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"361.35,-49.1217 353.712,-48.355 358.318,-47.3738 355.285,-45.6259 355.285,-45.6259 355.285,-45.6259 358.318,-47.3738 356.859,-42.8969 361.35,-49.1217 361.35,-49.1217\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"238.5\" y=\"-10.0426\">c</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node6\"><title>2</title>\n",
"<ellipse cx=\"190\" cy=\"-145.243\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"190\" y=\"-141.543\">2</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>1-&gt;2</title>\n",
"<path d=\"M74.2567,-145.243C97.2816,-145.243 138.189,-145.243 164.429,-145.243\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"171.739,-145.243 164.739,-148.393 168.239,-145.243 164.739,-145.243 164.739,-145.243 164.739,-145.243 168.239,-145.243 164.739,-142.093 171.739,-145.243 171.739,-145.243\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"105\" y=\"-149.043\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;0</title>\n",
"<path d=\"M181.021,-53.1587C178.679,-63.393 181.672,-73.2426 190,-73.2426 196.376,-73.2426 199.625,-67.469 199.746,-60.1694\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"198.979,-53.1587 202.872,-59.7742 199.36,-56.6379 199.741,-60.1171 199.741,-60.1171 199.741,-60.1171 199.36,-56.6379 196.61,-60.46 198.979,-53.1587 198.979,-53.1587\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"185.5\" y=\"-92.0426\">b</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"182\" y=\"-77.0426\">\u24ff</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge11\"><title>3-&gt;3</title>\n",
"<path d=\"M369.969,-74.9067C368.406,-84.8676 370.75,-94.2426 377,-94.2426 381.688,-94.2426 384.178,-88.9692 384.471,-82.1302\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"384.031,-74.9067 387.601,-81.7025 384.244,-78.4002 384.456,-81.8938 384.456,-81.8938 384.456,-81.8938 384.244,-78.4002 381.312,-82.0851 384.031,-74.9067 384.031,-74.9067\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"372.5\" y=\"-113.043\">1</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"369\" y=\"-98.0426\">\u24ff</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g class=\"node\" id=\"node5\"><title>4</title>\n",
"<ellipse cx=\"294\" cy=\"-58.2426\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"294\" y=\"-54.5426\">4</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge12\"><title>4-&gt;3</title>\n",
"<path d=\"M312.178,-58.2426C323.669,-58.2426 338.959,-58.2426 351.693,-58.2426\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"358.847,-58.2426 351.847,-61.3927 355.347,-58.2427 351.847,-58.2427 351.847,-58.2427 351.847,-58.2427 355.347,-58.2427 351.847,-55.0927 358.847,-58.2426 358.847,-58.2426\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"330\" y=\"-62.0426\">!a</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge13\"><title>4-&gt;4</title>\n",
"<path d=\"M286.969,-74.9067C285.406,-84.8676 287.75,-94.2426 294,-94.2426 298.688,-94.2426 301.178,-88.9692 301.471,-82.1302\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"301.031,-74.9067 304.601,-81.7025 301.244,-78.4002 301.456,-81.8938 301.456,-81.8938 301.456,-81.8938 301.244,-78.4002 298.312,-82.0851 301.031,-74.9067 301.031,-74.9067\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"290.5\" y=\"-98.0426\">a</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge7\"><title>2-&gt;1</title>\n",
"<path d=\"M173.816,-153.903C167.839,-156.847 160.789,-159.764 154,-161.243 127.075,-167.105 118.925,-167.105 92,-161.243 87.5445,-160.273 82.977,-158.682 78.6739,-156.872\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"72.1836,-153.903 79.8596,-153.95 75.3664,-155.359 78.5492,-156.815 78.5492,-156.815 78.5492,-156.815 75.3664,-155.359 77.2387,-159.679 72.1836,-153.903 72.1836,-153.903\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"103\" y=\"-184.043\">!a &amp; !c</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"115\" y=\"-169.043\">\u24ff</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge9\"><title>2-&gt;3</title>\n",
"<path d=\"M208.055,-145.496C233.928,-145.159 283.898,-141.629 320,-121.243 337.84,-111.169 352.915,-93.2717 362.915,-79.1208\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"366.883,-73.3192 365.531,-80.8754 364.907,-76.2082 362.931,-79.0971 362.931,-79.0971 362.931,-79.0971 364.907,-76.2082 360.331,-77.3188 366.883,-73.3192 366.883,-73.3192\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"276\" y=\"-143.043\">!a &amp; c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge10\"><title>2-&gt;4</title>\n",
"<path d=\"M204.335,-133.869C222.203,-118.628 254.008,-91.5003 274.273,-74.2153\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"279.662,-69.6192 276.38,-76.5585 276.999,-71.8905 274.336,-74.1618 274.336,-74.1618 274.336,-74.1618 276.999,-71.8905 272.292,-71.7652 279.662,-69.6192 279.662,-69.6192\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"226\" y=\"-119.043\">a &amp; c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge8\"><title>2-&gt;2</title>\n",
"<path d=\"M181.021,-161.159C178.679,-171.393 181.672,-181.243 190,-181.243 196.376,-181.243 199.625,-175.469 199.746,-168.169\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"198.979,-161.159 202.872,-167.774 199.36,-164.638 199.741,-168.117 199.741,-168.117 199.741,-168.117 199.36,-164.638 196.61,-168.46 198.979,-161.159 198.979,-161.159\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"172\" y=\"-185.043\">a &amp; !c</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
}
],
"prompt_number": 2
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The `strength_decompose()` function takes an automaton, and a string specifying which strength to preserve. \n",
"\n",
"The letters used for this specification are as follows:\n",
"- `t`: terminal\n",
"- `w`: strictly weak\n",
"- `s`: strong\n",
"\n",
"For instance if we want to preserve only the **strictly weak** part of this automaton, we should get only the SCC with the self-loop on $b$, and the SCC above it so that we can reach it. However the SCC above is not stricly weak, so it should not accept any word in the new automaton."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"sweak = spot.decompose_strength(aut, 'w')\n",
"sweak.show('.sa')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 3,
"svg": [
"<svg height=\"242pt\" viewBox=\"0.00 0.00 232.00 242.00\" width=\"232pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 238)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-238 228,-238 228,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"91\" y=\"-219.8\">Inf(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"113\" y=\"-219.8\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"129\" y=\"-219.8\">)</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"164,-8 164,-108 216,-108 216,-8 164,-8\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust2\"><title>cluster_1</title>\n",
"<polygon fill=\"none\" points=\"30,-116 30,-203 216,-203 216,-116 30,-116\" stroke=\"red\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\"><title>0</title>\n",
"<ellipse cx=\"56\" cy=\"-142\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-138.3\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;0</title>\n",
"<path d=\"M1.15491,-142C2.79388,-142 17.1543,-142 30.6317,-142\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.9419,-142 30.9419,-145.15 34.4419,-142 30.9419,-142 30.9419,-142 30.9419,-142 34.4419,-142 30.9418,-138.85 37.9419,-142 37.9419,-142\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>0-&gt;0</title>\n",
"<path d=\"M49.6208,-159.037C48.3189,-168.858 50.4453,-178 56,-178 60.166,-178 62.4036,-172.858 62.7128,-166.143\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"62.3792,-159.037 65.8541,-165.882 62.5434,-162.533 62.7076,-166.03 62.7076,-166.03 62.7076,-166.03 62.5434,-162.533 59.561,-166.177 62.3792,-159.037 62.3792,-159.037\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"36\" y=\"-181.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node3\"><title>1</title>\n",
"<ellipse cx=\"190\" cy=\"-34\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"190\" y=\"-30.3\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;1</title>\n",
"<path d=\"M70.6291,-130.849C94.2674,-111.508 142.92,-71.7016 169.91,-49.6192\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"175.642,-44.9296 172.219,-51.8003 172.933,-47.146 170.224,-49.3623 170.224,-49.3623 170.224,-49.3623 172.933,-47.146 168.229,-46.9243 175.642,-44.9296 175.642,-44.9296\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-117.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node4\"><title>2</title>\n",
"<ellipse cx=\"190\" cy=\"-143\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"190\" y=\"-139.3\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>0-&gt;2</title>\n",
"<path d=\"M74.2567,-142.131C97.2816,-142.305 138.189,-142.615 164.429,-142.814\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"171.739,-142.869 164.715,-145.966 168.239,-142.843 164.739,-142.816 164.739,-142.816 164.739,-142.816 168.239,-142.843 164.763,-139.666 171.739,-142.869 171.739,-142.869\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"105\" y=\"-145.8\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>1-&gt;1</title>\n",
"<path d=\"M179.087,-48.4167C175.276,-59.166 178.914,-70 190,-70 198.661,-70 202.776,-63.3875 202.344,-55.3688\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"200.913,-48.4167 205.41,-54.6375 201.619,-51.8447 202.325,-55.2728 202.325,-55.2728 202.325,-55.2728 201.619,-51.8447 199.239,-55.9082 200.913,-48.4167 200.913,-48.4167\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"185.5\" y=\"-88.8\">b</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"182\" y=\"-73.8\">\u24ff</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>2-&gt;0</title>\n",
"<path d=\"M173.759,-151.123C167.774,-153.883 160.735,-156.618 154,-158 127.007,-163.54 118.925,-163.862 92,-158 87.5445,-157.03 82.977,-155.44 78.6739,-153.629\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"72.1836,-150.66 79.8596,-150.708 75.3664,-152.116 78.5492,-153.572 78.5492,-153.572 78.5492,-153.572 75.3664,-152.116 77.2387,-156.437 72.1836,-150.66 72.1836,-150.66\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"103\" y=\"-165.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge7\"><title>2-&gt;2</title>\n",
"<path d=\"M179.087,-157.417C175.276,-168.166 178.914,-179 190,-179 198.661,-179 202.776,-172.387 202.344,-164.369\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"200.913,-157.417 205.41,-163.637 201.619,-160.845 202.325,-164.273 202.325,-164.273 202.325,-164.273 201.619,-160.845 199.239,-164.908 200.913,-157.417 200.913,-157.417\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"172\" y=\"-182.8\">a &amp; !c</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
}
],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Similarly, we can extract all the behaviors captured by the **terminal** part of the automaton:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"term = spot.decompose_strength(aut, 't')\n",
"term.show('.sa')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 4,
"svg": [
"<svg height=\"152pt\" viewBox=\"0.00 0.00 397.00 152.21\" width=\"397pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 148.207)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-148.207 393,-148.207 393,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"173.5\" y=\"-130.007\">Inf(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"195.5\" y=\"-130.007\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"211.5\" y=\"-130.007\">)</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"329,-11.2072 329,-111.207 381,-111.207 381,-11.2072 329,-11.2072\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust2\"><title>cluster_1</title>\n",
"<polygon fill=\"none\" points=\"246,-11.2072 246,-96.2072 298,-96.2072 298,-11.2072 246,-11.2072\" stroke=\"red\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust3\"><title>cluster_2</title>\n",
"<polygon fill=\"none\" points=\"30,-9.20721 30,-96.2072 194,-96.2072 194,-9.20721 30,-9.20721\" stroke=\"red\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\"><title>0</title>\n",
"<ellipse cx=\"56\" cy=\"-35.2072\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-31.5072\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;0</title>\n",
"<path d=\"M1.15491,-35.2072C2.79388,-35.2072 17.1543,-35.2072 30.6317,-35.2072\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.9419,-35.2072 30.9419,-38.3573 34.4419,-35.2073 30.9419,-35.2073 30.9419,-35.2073 30.9419,-35.2073 34.4419,-35.2073 30.9418,-32.0573 37.9419,-35.2072 37.9419,-35.2072\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;0</title>\n",
"<path d=\"M49.6208,-52.2445C48.3189,-62.0651 50.4453,-71.2072 56,-71.2072 60.166,-71.2072 62.4036,-66.0648 62.7128,-59.3505\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"62.3792,-52.2445 65.8541,-59.0891 62.5434,-55.7407 62.7076,-59.2368 62.7076,-59.2368 62.7076,-59.2368 62.5434,-55.7407 59.561,-59.3846 62.3792,-52.2445 62.3792,-52.2445\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"36\" y=\"-75.0072\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node3\"><title>2</title>\n",
"<ellipse cx=\"355\" cy=\"-37.2072\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"355\" y=\"-33.5072\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>0-&gt;2</title>\n",
"<path d=\"M73.0478,-29.4272C112.119,-16.1948 215.065,13.6081 298,-7.20721 310.58,-10.3645 323.419,-16.9513 333.624,-23.1507\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"339.612,-26.9265 332.011,-25.8575 336.652,-25.0597 333.691,-23.1929 333.691,-23.1929 333.691,-23.1929 336.652,-25.0597 335.371,-20.5284 339.612,-26.9265 339.612,-26.9265\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"216.5\" y=\"-6.00721\">c</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node5\"><title>1</title>\n",
"<ellipse cx=\"168\" cy=\"-37.2072\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"168\" y=\"-33.5072\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>0-&gt;1</title>\n",
"<path d=\"M74.2788,-35.363C89.4809,-35.5178 112.211,-35.7926 132,-36.2072 135.464,-36.2798 139.121,-36.3696 142.713,-36.4654\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"149.911,-36.6669 142.826,-39.6197 146.413,-36.5689 142.914,-36.471 142.914,-36.471 142.914,-36.471 146.413,-36.5689 143.002,-33.3222 149.911,-36.6669 149.911,-36.6669\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"94\" y=\"-40.0072\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge9\"><title>2-&gt;2</title>\n",
"<path d=\"M347.969,-53.8713C346.406,-63.8322 348.75,-73.2072 355,-73.2072 359.688,-73.2072 362.178,-67.9338 362.471,-61.0948\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"362.031,-53.8713 365.601,-60.667 362.244,-57.3648 362.456,-60.8584 362.456,-60.8584 362.456,-60.8584 362.244,-57.3648 359.312,-61.0497 362.031,-53.8713 362.031,-53.8713\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"350.5\" y=\"-92.0072\">1</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"347\" y=\"-77.0072\">\u24ff</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g class=\"node\" id=\"node4\"><title>3</title>\n",
"<ellipse cx=\"272\" cy=\"-37.2072\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"272\" y=\"-33.5072\">3</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge10\"><title>3-&gt;2</title>\n",
"<path d=\"M290.178,-37.2072C301.669,-37.2072 316.959,-37.2072 329.693,-37.2072\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"336.847,-37.2072 329.847,-40.3573 333.347,-37.2073 329.847,-37.2073 329.847,-37.2073 329.847,-37.2073 333.347,-37.2073 329.847,-34.0573 336.847,-37.2072 336.847,-37.2072\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"308\" y=\"-41.0072\">!a</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge11\"><title>3-&gt;3</title>\n",
"<path d=\"M264.969,-53.8713C263.406,-63.8322 265.75,-73.2072 272,-73.2072 276.688,-73.2072 279.178,-67.9338 279.471,-61.0948\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"279.031,-53.8713 282.601,-60.667 279.244,-57.3648 279.456,-60.8584 279.456,-60.8584 279.456,-60.8584 279.244,-57.3648 276.312,-61.0497 279.031,-53.8713 279.031,-53.8713\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"268.5\" y=\"-77.0072\">a</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>1-&gt;0</title>\n",
"<path d=\"M151.358,-44.9402C145.443,-47.4659 138.555,-49.9449 132,-51.2072 114.543,-54.5691 109.371,-54.9894 92,-51.2072 87.5445,-50.2371 82.977,-48.647 78.6739,-46.8365\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"72.1836,-43.8674 79.8596,-43.915 75.3664,-45.3234 78.5492,-46.7795 78.5492,-46.7795 78.5492,-46.7795 75.3664,-45.3234 77.2387,-49.644 72.1836,-43.8674 72.1836,-43.8674\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-58.0072\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge7\"><title>1-&gt;2</title>\n",
"<path d=\"M180.109,-50.6899C193.757,-66.0814 218.509,-90.3938 246,-100.207 267.766,-107.977 276.917,-109.675 298,-100.207 316.806,-91.762 331.873,-73.5336 341.62,-58.8467\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"345.468,-52.808 344.363,-60.4043 343.587,-55.7599 341.706,-58.7117 341.706,-58.7117 341.706,-58.7117 343.587,-55.7599 339.05,-57.0191 345.468,-52.808 345.468,-52.808\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"254\" y=\"-110.007\">!a &amp; c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge8\"><title>1-&gt;3</title>\n",
"<path d=\"M186.303,-37.2072C202.962,-37.2072 228.303,-37.2072 246.927,-37.2072\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"253.953,-37.2072 246.953,-40.3573 250.453,-37.2073 246.953,-37.2073 246.953,-37.2073 246.953,-37.2073 250.453,-37.2073 246.953,-34.0573 253.953,-37.2072 253.953,-37.2072\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"204\" y=\"-41.0072\">a &amp; c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>1-&gt;1</title>\n",
"<path d=\"M159.021,-53.1232C156.679,-63.3576 159.672,-73.2072 168,-73.2072 174.376,-73.2072 177.625,-67.4336 177.746,-60.134\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"176.979,-53.1232 180.872,-59.7387 177.36,-56.6024 177.741,-60.0816 177.741,-60.0816 177.741,-60.0816 177.36,-56.6024 174.61,-60.4246 176.979,-53.1232 176.979,-53.1232\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"150\" y=\"-77.0072\">a &amp; !c</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
}
],
"prompt_number": 4
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here is the strong part:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"strong = spot.decompose_strength(aut, 's')\n",
"strong.show('.sa')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 5,
"svg": [
"<svg height=\"149pt\" viewBox=\"0.00 0.00 210.00 149.00\" width=\"210pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 145)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-145 206,-145 206,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"80\" y=\"-126.8\">Inf(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"102\" y=\"-126.8\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"118\" y=\"-126.8\">)</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"30,-8 30,-110 194,-110 194,-8 30,-8\" stroke=\"green\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\"><title>0</title>\n",
"<ellipse cx=\"56\" cy=\"-35\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-31.3\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;0</title>\n",
"<path d=\"M1.15491,-35C2.79388,-35 17.1543,-35 30.6317,-35\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.9419,-35 30.9419,-38.1501 34.4419,-35 30.9419,-35.0001 30.9419,-35.0001 30.9419,-35.0001 34.4419,-35 30.9418,-31.8501 37.9419,-35 37.9419,-35\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;0</title>\n",
"<path d=\"M49.6208,-52.0373C48.3189,-61.8579 50.4453,-71 56,-71 60.166,-71 62.4036,-65.8576 62.7128,-59.1433\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"62.3792,-52.0373 65.8541,-58.8818 62.5434,-55.5335 62.7076,-59.0296 62.7076,-59.0296 62.7076,-59.0296 62.5434,-55.5335 59.561,-59.1774 62.3792,-52.0373 62.3792,-52.0373\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"36\" y=\"-89.8\">!a &amp; !c</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"48\" y=\"-74.8\">\u24ff</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node3\"><title>1</title>\n",
"<ellipse cx=\"168\" cy=\"-42\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"168\" y=\"-38.3\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>0-&gt;1</title>\n",
"<path d=\"M74.0256,-34.0467C89.2577,-33.4204 112.175,-33.0369 132,-35 135.683,-35.3646 139.552,-35.9401 143.32,-36.6081\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"150.366,-37.9759 142.894,-39.7343 146.93,-37.3089 143.495,-36.642 143.495,-36.642 143.495,-36.642 146.93,-37.3089 144.095,-33.5497 150.366,-37.9759 150.366,-37.9759\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"94\" y=\"-38.8\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>1-&gt;0</title>\n",
"<path d=\"M150.474,-46.6588C135.183,-50.2874 111.882,-54.081 92,-50 87.5802,-49.0928 83.0294,-47.6032 78.7315,-45.9062\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"72.2412,-43.1226 79.9161,-42.9868 75.4579,-44.5022 78.6745,-45.8818 78.6745,-45.8818 78.6745,-45.8818 75.4579,-44.5022 77.4329,-48.7768 72.2412,-43.1226 72.2412,-43.1226\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-69.8\">!a &amp; !c</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"104\" y=\"-54.8\">\u24ff</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>1-&gt;1</title>\n",
"<path d=\"M158.425,-57.5414C155.73,-67.9087 158.922,-78 168,-78 174.95,-78 178.45,-72.0847 178.499,-64.6591\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"177.575,-57.5414 181.6,-64.0771 178.026,-61.0123 178.477,-64.4831 178.477,-64.4831 178.477,-64.4831 178.026,-61.0123 175.353,-64.889 177.575,-57.5414 177.575,-57.5414\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"150\" y=\"-81.8\">a &amp; !c</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
}
],
"prompt_number": 5
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The union of these three automata recognize the same language as the original automaton.\n",
"\n",
"\n",
"The application proposed in the aforementioned TACAS'13 paper is for parallelizing model checking. Instead of testing the emptiness of the product between `aut` and a system, one could test the emptiness **3** products in parallel: each with a sub-automaton of different strength. Model checking using weak and terminal automata can be done with much more simpler emptiness check procedures than needed for the general case. So in effect, we have isolated the \"hard\" (i.e. strong) part of the original automaton in a smaller automaton, and we only need to use a full-fledged emptiness check for this case.\n",
"\n",
"An additional bonus is that it is possible that the simplification algorithms will do a better job at simplifying the sub-automata than at simplifying the original `aut`. For instance here the `strong` automaton can be further simplified:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"strong.postprocess('small')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 6,
"svg": [
"<?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.38.0 (20140413.2041)\n",
" -->\n",
"<!-- Title: G Pages: 1 -->\n",
"<svg width=\"84pt\" height=\"125pt\"\n",
" viewBox=\"0.00 0.00 84.00 125.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 1) rotate(0) translate(4 121)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-121 80,-121 80,4 -4,4\"/>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\"><title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" 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\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\"><title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.15491,-18C2.79388,-18 17.1543,-18 30.6317,-18\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.9419,-18 30.9419,-21.1501 34.4419,-18 30.9419,-18.0001 30.9419,-18.0001 30.9419,-18.0001 34.4419,-18 30.9418,-14.8501 37.9419,-18 37.9419,-18\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge2\" class=\"edge\"><title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M52.7643,-35.7817C52.2144,-45.3149 53.293,-54 56,-54 57.988,-54 59.0977,-49.3161 59.3292,-43.0521\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"59.2357,-35.7817 62.4756,-42.7406 59.2808,-39.2814 59.3258,-42.7812 59.3258,-42.7812 59.3258,-42.7812 59.2808,-39.2814 56.1761,-42.8217 59.2357,-35.7817 59.2357,-35.7817\"/>\n",
"<text text-anchor=\"start\" x=\"38\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge3\" class=\"edge\"><title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M50.6841,-35.4203C47.6538,-52.791 49.4258,-72 56,-72 61.7011,-72 63.7908,-57.5545 62.2691,-42.3894\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"61.3159,-35.4203 65.3856,-41.9288 61.7902,-38.888 62.2646,-42.3557 62.2646,-42.3557 62.2646,-42.3557 61.7902,-38.888 59.1437,-42.7826 61.3159,-35.4203 61.3159,-35.4203\"/>\n",
"<text text-anchor=\"start\" x=\"36\" y=\"-90.8\" font-family=\"Lato\" font-size=\"14.00\">!a &amp; !c</text>\n",
"<text text-anchor=\"start\" x=\"48\" y=\"-75.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#5da5da\">\u24ff</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text": [
"<spot_impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fe318ffbf00> >"
]
}
],
"prompt_number": 6
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Multi-strength extraction\n",
"\n",
"The string passed to `decompose_strength()` can include multiple letters to extract multiple strengths at once."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"for opt in ('sw', 'st', 'wt'):\n",
" a = spot.decompose_strength(aut, opt)\n",
" a.set_name(\"option: \" + opt)\n",
" display(a.show('.asn'))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"svg": [
"<svg height=\"270pt\" viewBox=\"0.00 0.00 232.00 270.00\" width=\"232pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 266)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-266 228,-266 228,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"78.5\" y=\"-247.8\">option: sw</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"91\" y=\"-233.8\">Inf(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"113\" y=\"-233.8\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"129\" y=\"-233.8\">)</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"164,-8 164,-108 216,-108 216,-8 164,-8\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust2\"><title>cluster_1</title>\n",
"<polygon fill=\"none\" points=\"30,-116 30,-218 216,-218 216,-116 30,-116\" stroke=\"green\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\"><title>0</title>\n",
"<ellipse cx=\"56\" cy=\"-142\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-138.3\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;0</title>\n",
"<path d=\"M1.15491,-142C2.79388,-142 17.1543,-142 30.6317,-142\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.9419,-142 30.9419,-145.15 34.4419,-142 30.9419,-142 30.9419,-142 30.9419,-142 34.4419,-142 30.9418,-138.85 37.9419,-142 37.9419,-142\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>0-&gt;0</title>\n",
"<path d=\"M49.6208,-159.037C48.3189,-168.858 50.4453,-178 56,-178 60.166,-178 62.4036,-172.858 62.7128,-166.143\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"62.3792,-159.037 65.8541,-165.882 62.5434,-162.533 62.7076,-166.03 62.7076,-166.03 62.7076,-166.03 62.5434,-162.533 59.561,-166.177 62.3792,-159.037 62.3792,-159.037\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"36\" y=\"-196.8\">!a &amp; !c</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"48\" y=\"-181.8\">\u24ff</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node3\"><title>1</title>\n",
"<ellipse cx=\"190\" cy=\"-34\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"190\" y=\"-30.3\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;1</title>\n",
"<path d=\"M70.6291,-130.849C94.2674,-111.508 142.92,-71.7016 169.91,-49.6192\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"175.642,-44.9296 172.219,-51.8003 172.933,-47.146 170.224,-49.3623 170.224,-49.3623 170.224,-49.3623 172.933,-47.146 168.229,-46.9243 175.642,-44.9296 175.642,-44.9296\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-117.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node4\"><title>2</title>\n",
"<ellipse cx=\"190\" cy=\"-150\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"190\" y=\"-146.3\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>0-&gt;2</title>\n",
"<path d=\"M74.2268,-141.209C93.6634,-140.542 126.194,-140.102 154,-143 157.681,-143.384 161.549,-143.969 165.316,-144.642\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"172.363,-146.011 164.89,-147.768 168.927,-145.344 165.491,-144.676 165.491,-144.676 165.491,-144.676 168.927,-145.344 166.092,-141.583 172.363,-146.011 172.363,-146.011\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"105\" y=\"-146.8\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>1-&gt;1</title>\n",
"<path d=\"M179.087,-48.4167C175.276,-59.166 178.914,-70 190,-70 198.661,-70 202.776,-63.3875 202.344,-55.3688\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"200.913,-48.4167 205.41,-54.6375 201.619,-51.8447 202.325,-55.2728 202.325,-55.2728 202.325,-55.2728 201.619,-51.8447 199.239,-55.9082 200.913,-48.4167 200.913,-48.4167\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"185.5\" y=\"-88.8\">b</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"182\" y=\"-73.8\">\u24ff</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>2-&gt;0</title>\n",
"<path d=\"M172.397,-154.598C166.622,-155.982 160.07,-157.315 154,-158 126.618,-161.09 118.925,-163.862 92,-158 87.5445,-157.03 82.977,-155.44 78.6739,-153.629\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"72.1836,-150.66 79.8596,-150.708 75.3664,-152.116 78.5492,-153.572 78.5492,-153.572 78.5492,-153.572 75.3664,-152.116 77.2387,-156.437 72.1836,-150.66 72.1836,-150.66\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"103\" y=\"-179.8\">!a &amp; !c</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"115\" y=\"-164.8\">\u24ff</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge7\"><title>2-&gt;2</title>\n",
"<path d=\"M179.087,-164.417C175.276,-175.166 178.914,-186 190,-186 198.661,-186 202.776,-179.387 202.344,-171.369\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"200.913,-164.417 205.41,-170.637 201.619,-167.845 202.325,-171.273 202.325,-171.273 202.325,-171.273 201.619,-167.845 199.239,-171.908 200.913,-164.417 200.913,-164.417\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"172\" y=\"-189.8\">a &amp; !c</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
},
{
"metadata": {},
"output_type": "display_data",
"svg": [
"<svg height=\"175pt\" viewBox=\"0.00 0.00 397.00 175.00\" width=\"397pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 171)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-171 393,-171 393,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"164\" y=\"-152.8\">option: st</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"173.5\" y=\"-138.8\">Inf(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"195.5\" y=\"-138.8\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"211.5\" y=\"-138.8\">)</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"329,-21 329,-121 381,-121 381,-21 329,-21\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust2\"><title>cluster_1</title>\n",
"<polygon fill=\"none\" points=\"246,-21 246,-106 298,-106 298,-21 246,-21\" stroke=\"red\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust3\"><title>cluster_2</title>\n",
"<polygon fill=\"none\" points=\"30,-8 30,-110 194,-110 194,-8 30,-8\" stroke=\"green\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\"><title>0</title>\n",
"<ellipse cx=\"56\" cy=\"-34\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-30.3\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;0</title>\n",
"<path d=\"M1.15491,-34C2.79388,-34 17.1543,-34 30.6317,-34\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.9419,-34 30.9419,-37.1501 34.4419,-34 30.9419,-34.0001 30.9419,-34.0001 30.9419,-34.0001 34.4419,-34 30.9418,-30.8501 37.9419,-34 37.9419,-34\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;0</title>\n",
"<path d=\"M49.6208,-51.0373C48.3189,-60.8579 50.4453,-70 56,-70 60.166,-70 62.4036,-64.8576 62.7128,-58.1433\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"62.3792,-51.0373 65.8541,-57.8818 62.5434,-54.5335 62.7076,-58.0296 62.7076,-58.0296 62.7076,-58.0296 62.5434,-54.5335 59.561,-58.1774 62.3792,-51.0373 62.3792,-51.0373\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"36\" y=\"-88.8\">!a &amp; !c</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"48\" y=\"-73.8\">\u24ff</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node3\"><title>2</title>\n",
"<ellipse cx=\"355\" cy=\"-47\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"355\" y=\"-43.3\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>0-&gt;2</title>\n",
"<path d=\"M73.6763,-29.2967C113.28,-18.8831 215.821,3.62551 298,-17 310.58,-20.1573 323.419,-26.7441 333.624,-32.9435\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"339.612,-36.7193 332.011,-35.6503 336.652,-34.8525 333.691,-32.9857 333.691,-32.9857 333.691,-32.9857 336.652,-34.8525 335.371,-30.3212 339.612,-36.7193 339.612,-36.7193\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"216.5\" y=\"-12.8\">c</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node5\"><title>1</title>\n",
"<ellipse cx=\"168\" cy=\"-50\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"168\" y=\"-46.3\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>0-&gt;1</title>\n",
"<path d=\"M74.1884,-32.3468C89.5275,-31.3146 112.51,-30.864 132,-35 136.414,-35.9366 140.962,-37.44 145.259,-39.1413\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"151.749,-41.9248 144.074,-42.0607 148.532,-40.5453 145.316,-39.1657 145.316,-39.1657 145.316,-39.1657 148.532,-40.5453 146.557,-36.2707 151.749,-41.9248 151.749,-41.9248\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"94\" y=\"-38.8\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge9\"><title>2-&gt;2</title>\n",
"<path d=\"M347.969,-63.6641C346.406,-73.625 348.75,-83 355,-83 359.688,-83 362.178,-77.7266 362.471,-70.8876\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"362.031,-63.6641 365.601,-70.4598 362.244,-67.1576 362.456,-70.6511 362.456,-70.6511 362.456,-70.6511 362.244,-67.1576 359.312,-70.8425 362.031,-63.6641 362.031,-63.6641\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"350.5\" y=\"-101.8\">1</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"347\" y=\"-86.8\">\u24ff</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g class=\"node\" id=\"node4\"><title>3</title>\n",
"<ellipse cx=\"272\" cy=\"-47\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"272\" y=\"-43.3\">3</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge10\"><title>3-&gt;2</title>\n",
"<path d=\"M290.178,-47C301.669,-47 316.959,-47 329.693,-47\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"336.847,-47 329.847,-50.1501 333.347,-47 329.847,-47.0001 329.847,-47.0001 329.847,-47.0001 333.347,-47 329.847,-43.8501 336.847,-47 336.847,-47\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"308\" y=\"-50.8\">!a</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge11\"><title>3-&gt;3</title>\n",
"<path d=\"M264.969,-63.6641C263.406,-73.625 265.75,-83 272,-83 276.688,-83 279.178,-77.7266 279.471,-70.8876\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"279.031,-63.6641 282.601,-70.4598 279.244,-67.1576 279.456,-70.6511 279.456,-70.6511 279.456,-70.6511 279.244,-67.1576 276.312,-70.8425 279.031,-63.6641 279.031,-63.6641\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"268.5\" y=\"-86.8\">a</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>1-&gt;0</title>\n",
"<path d=\"M150.1,-52.0318C134.754,-53.3995 111.593,-54.2661 92,-50 87.5445,-49.0299 82.977,-47.4398 78.6739,-45.6293\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"72.1836,-42.6602 79.8596,-42.7078 75.3664,-44.1162 78.5492,-45.5723 78.5492,-45.5723 78.5492,-45.5723 75.3664,-44.1162 77.2387,-48.4368 72.1836,-42.6602 72.1836,-42.6602\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-72.8\">!a &amp; !c</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"104\" y=\"-57.8\">\u24ff</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge7\"><title>1-&gt;2</title>\n",
"<path d=\"M180.495,-63.1155C194.327,-77.7993 219.074,-100.748 246,-110 267.857,-117.51 276.917,-119.468 298,-110 316.806,-101.555 331.873,-83.3264 341.62,-68.6395\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"345.468,-62.6008 344.363,-70.1971 343.587,-65.5526 341.706,-68.5045 341.706,-68.5045 341.706,-68.5045 343.587,-65.5526 339.05,-66.8119 345.468,-62.6008 345.468,-62.6008\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"254\" y=\"-119.8\">!a &amp; c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge8\"><title>1-&gt;3</title>\n",
"<path d=\"M186.303,-49.4911C202.962,-49.0011 228.303,-48.2558 246.927,-47.708\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"253.953,-47.5014 247.048,-50.8559 250.454,-47.6043 246.956,-47.7073 246.956,-47.7073 246.956,-47.7073 250.454,-47.6043 246.863,-44.5586 253.953,-47.5014 253.953,-47.5014\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"204\" y=\"-52.8\">a &amp; c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>1-&gt;1</title>\n",
"<path d=\"M159.021,-65.916C156.679,-76.1504 159.672,-86 168,-86 174.376,-86 177.625,-80.2263 177.746,-72.9268\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"176.979,-65.916 180.872,-72.5315 177.36,-69.3952 177.741,-72.8744 177.741,-72.8744 177.741,-72.8744 177.36,-69.3952 174.61,-73.2174 176.979,-65.916 176.979,-65.916\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"150\" y=\"-89.8\">a &amp; !c</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
},
{
"metadata": {},
"output_type": "display_data",
"svg": [
"<svg height=\"258pt\" viewBox=\"0.00 0.00 419.00 258.24\" width=\"419pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 254.243)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-254.243 415,-254.243 415,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"172\" y=\"-236.043\">option: wt</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"184.5\" y=\"-222.043\">Inf(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"206.5\" y=\"-222.043\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"222.5\" y=\"-222.043\">)</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"164,-11.2426 164,-111.243 216,-111.243 216,-11.2426 164,-11.2426\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust2\"><title>cluster_1</title>\n",
"<polygon fill=\"none\" points=\"351,-32.2426 351,-132.243 403,-132.243 403,-32.2426 351,-32.2426\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust3\"><title>cluster_2</title>\n",
"<polygon fill=\"none\" points=\"268,-32.2426 268,-117.243 320,-117.243 320,-32.2426 268,-32.2426\" stroke=\"red\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust4\"><title>cluster_3</title>\n",
"<polygon fill=\"none\" points=\"30,-119.243 30,-206.243 216,-206.243 216,-119.243 30,-119.243\" stroke=\"red\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\"><title>0</title>\n",
"<ellipse cx=\"56\" cy=\"-145.243\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-141.543\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;0</title>\n",
"<path d=\"M1.15491,-145.243C2.79388,-145.243 17.1543,-145.243 30.6317,-145.243\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.9419,-145.243 30.9419,-148.393 34.4419,-145.243 30.9419,-145.243 30.9419,-145.243 30.9419,-145.243 34.4419,-145.243 30.9418,-142.093 37.9419,-145.243 37.9419,-145.243\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>0-&gt;0</title>\n",
"<path d=\"M49.6208,-162.28C48.3189,-172.101 50.4453,-181.243 56,-181.243 60.166,-181.243 62.4036,-176.1 62.7128,-169.386\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"62.3792,-162.28 65.8541,-169.124 62.5434,-165.776 62.7076,-169.272 62.7076,-169.272 62.7076,-169.272 62.5434,-165.776 59.561,-169.42 62.3792,-162.28 62.3792,-162.28\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"36\" y=\"-185.043\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node3\"><title>1</title>\n",
"<ellipse cx=\"190\" cy=\"-37.2426\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"190\" y=\"-33.5426\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;1</title>\n",
"<path d=\"M70.6291,-134.092C94.2674,-114.751 142.92,-74.9443 169.91,-52.8619\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"175.642,-48.1723 172.219,-55.0429 172.933,-50.3886 170.224,-52.605 170.224,-52.605 170.224,-52.605 172.933,-50.3886 168.229,-50.167 175.642,-48.1723 175.642,-48.1723\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-121.043\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g class=\"node\" id=\"node4\"><title>3</title>\n",
"<ellipse cx=\"377\" cy=\"-58.2426\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"377\" y=\"-54.5426\">3</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>0-&gt;3</title>\n",
"<path d=\"M61.4186,-127.992C66.5954,-110.192 76.4918,-82.2758 92,-62.2426 116.65,-30.4005 125.855,-20.1451 164,-7.24264 232.475,15.9189 316.751,-23.848 355.157,-45.552\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"361.35,-49.1217 353.712,-48.355 358.318,-47.3738 355.285,-45.6259 355.285,-45.6259 355.285,-45.6259 358.318,-47.3738 356.859,-42.8969 361.35,-49.1217 361.35,-49.1217\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"238.5\" y=\"-10.0426\">c</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node6\"><title>2</title>\n",
"<ellipse cx=\"190\" cy=\"-145.243\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"190\" y=\"-141.543\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>0-&gt;2</title>\n",
"<path d=\"M74.2567,-145.243C97.2816,-145.243 138.189,-145.243 164.429,-145.243\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"171.739,-145.243 164.739,-148.393 168.239,-145.243 164.739,-145.243 164.739,-145.243 164.739,-145.243 168.239,-145.243 164.739,-142.093 171.739,-145.243 171.739,-145.243\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"105\" y=\"-149.043\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>1-&gt;1</title>\n",
"<path d=\"M181.021,-53.1587C178.679,-63.393 181.672,-73.2426 190,-73.2426 196.376,-73.2426 199.625,-67.469 199.746,-60.1694\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"198.979,-53.1587 202.872,-59.7742 199.36,-56.6379 199.741,-60.1171 199.741,-60.1171 199.741,-60.1171 199.36,-56.6379 196.61,-60.46 198.979,-53.1587 198.979,-53.1587\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"185.5\" y=\"-92.0426\">b</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"182\" y=\"-77.0426\">\u24ff</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge11\"><title>3-&gt;3</title>\n",
"<path d=\"M369.969,-74.9067C368.406,-84.8676 370.75,-94.2426 377,-94.2426 381.688,-94.2426 384.178,-88.9692 384.471,-82.1302\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"384.031,-74.9067 387.601,-81.7025 384.244,-78.4002 384.456,-81.8938 384.456,-81.8938 384.456,-81.8938 384.244,-78.4002 381.312,-82.0851 384.031,-74.9067 384.031,-74.9067\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"372.5\" y=\"-113.043\">1</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"369\" y=\"-98.0426\">\u24ff</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g class=\"node\" id=\"node5\"><title>4</title>\n",
"<ellipse cx=\"294\" cy=\"-58.2426\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"294\" y=\"-54.5426\">4</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge12\"><title>4-&gt;3</title>\n",
"<path d=\"M312.178,-58.2426C323.669,-58.2426 338.959,-58.2426 351.693,-58.2426\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"358.847,-58.2426 351.847,-61.3927 355.347,-58.2427 351.847,-58.2427 351.847,-58.2427 351.847,-58.2427 355.347,-58.2427 351.847,-55.0927 358.847,-58.2426 358.847,-58.2426\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"330\" y=\"-62.0426\">!a</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge13\"><title>4-&gt;4</title>\n",
"<path d=\"M286.969,-74.9067C285.406,-84.8676 287.75,-94.2426 294,-94.2426 298.688,-94.2426 301.178,-88.9692 301.471,-82.1302\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"301.031,-74.9067 304.601,-81.7025 301.244,-78.4002 301.456,-81.8938 301.456,-81.8938 301.456,-81.8938 301.244,-78.4002 298.312,-82.0851 301.031,-74.9067 301.031,-74.9067\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"290.5\" y=\"-98.0426\">a</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge7\"><title>2-&gt;0</title>\n",
"<path d=\"M173.816,-153.903C167.839,-156.847 160.789,-159.764 154,-161.243 127.075,-167.105 118.925,-167.105 92,-161.243 87.5445,-160.273 82.977,-158.682 78.6739,-156.872\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"72.1836,-153.903 79.8596,-153.95 75.3664,-155.359 78.5492,-156.815 78.5492,-156.815 78.5492,-156.815 75.3664,-155.359 77.2387,-159.679 72.1836,-153.903 72.1836,-153.903\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"103\" y=\"-169.043\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge9\"><title>2-&gt;3</title>\n",
"<path d=\"M208.055,-145.496C233.928,-145.159 283.898,-141.629 320,-121.243 337.84,-111.169 352.915,-93.2717 362.915,-79.1208\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"366.883,-73.3192 365.531,-80.8754 364.907,-76.2082 362.931,-79.0971 362.931,-79.0971 362.931,-79.0971 364.907,-76.2082 360.331,-77.3188 366.883,-73.3192 366.883,-73.3192\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"276\" y=\"-143.043\">!a &amp; c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge10\"><title>2-&gt;4</title>\n",
"<path d=\"M204.335,-133.869C222.203,-118.628 254.008,-91.5003 274.273,-74.2153\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"279.662,-69.6192 276.38,-76.5585 276.999,-71.8905 274.336,-74.1618 274.336,-74.1618 274.336,-74.1618 276.999,-71.8905 272.292,-71.7652 279.662,-69.6192 279.662,-69.6192\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"226\" y=\"-119.043\">a &amp; c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge8\"><title>2-&gt;2</title>\n",
"<path d=\"M181.021,-161.159C178.679,-171.393 181.672,-181.243 190,-181.243 196.376,-181.243 199.625,-175.469 199.746,-168.169\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"198.979,-161.159 202.872,-167.774 199.36,-164.638 199.741,-168.117 199.741,-168.117 199.741,-168.117 199.36,-164.638 196.61,-168.46 198.979,-161.159 198.979,-161.159\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"172\" y=\"-185.043\">a &amp; !c</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
}
],
"prompt_number": 7
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Generalized acceptance\n",
"\n",
"There is (almost, see below) nothing that prevents the above decomposition to work with other types of acceptance.\n",
"\n",
"## Rabin\n",
"\n",
"The following Rabin automaton was generated with\n",
"\n",
" ltldo -f '(Ga -> Gb) W c' 'ltl2dstar --ltl2nba=spin:ltl2tgba@-Ds' -H | autfilt -H --merge-transitions\n",
" \n",
"(The `autfilt -H --merge-transitions` pass is just here to reduce the size of the file and make the automaton more readable.)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"aut = spot.automaton(\"\"\"\n",
"HOA: v1\n",
"States: 9\n",
"Start: 2\n",
"AP: 3 \"a\" \"b\" \"c\"\n",
"acc-name: Rabin 2\n",
"Acceptance: 4 (Fin(0) & Inf(1)) | (Fin(2) & Inf(3))\n",
"properties: trans-labels explicit-labels state-acc complete\n",
"properties: deterministic\n",
"--BODY--\n",
"State: 0 {2}\n",
"[0&!2] 0\n",
"[0&2] 1\n",
"[!0&!2] 5\n",
"[!0&2] 6\n",
"State: 1 {2}\n",
"[0] 1\n",
"[!0] 6\n",
"State: 2 {2}\n",
"[0&!1&!2] 3\n",
"[0&1&!2] 4\n",
"[!0&!2] 5\n",
"[2] 6\n",
"State: 3 {1 2}\n",
"[0&!2] 0\n",
"[0&2] 1\n",
"[!0&!2] 5\n",
"[!0&2] 6\n",
"State: 4 {1 2}\n",
"[0&!1&!2] 0\n",
"[0&!1&2] 1\n",
"[!0&!2] 5\n",
"[!0&2] 6\n",
"[0&1&!2] 7\n",
"[0&1&2] 8\n",
"State: 5 {1 2}\n",
"[0&!1&!2] 0\n",
"[!0&!2] 5\n",
"[2] 6\n",
"[0&1&!2] 7\n",
"State: 6 {1 2}\n",
"[t] 6\n",
"State: 7 {3}\n",
"[0&!1&!2] 0\n",
"[0&!1&2] 1\n",
"[!0&!2] 5\n",
"[!0&2] 6\n",
"[0&1&!2] 7\n",
"[0&1&2] 8\n",
"State: 8 {3}\n",
"[0&!1] 1\n",
"[!0] 6\n",
"[0&1] 8\n",
"--END--\n",
"\"\"\")\n",
"aut.show(\".as\")"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 8,
"svg": [
"<svg height=\"360pt\" viewBox=\"0.00 0.00 594.00 360.00\" width=\"594pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(0.576923 0.576923) rotate(0) translate(4 620)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-620 1025.61,-620 1025.61,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"394.304\" y=\"-601.8\">(Fin(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"422.304\" y=\"-601.8\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"438.304\" y=\"-601.8\">) &amp; Inf(</text>\n",
"<text fill=\"#f17cb0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"481.304\" y=\"-601.8\">\u2776</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"497.304\" y=\"-601.8\">)) | (Fin(</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"544.304\" y=\"-601.8\">\u2777</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"560.304\" y=\"-601.8\">) &amp; Inf(</text>\n",
"<text fill=\"#b276b2\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"603.304\" y=\"-601.8\">\u2778</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"619.304\" y=\"-601.8\">))</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"929.725,-283 929.725,-400 1013.61,-400 1013.61,-283 929.725,-283\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust2\"><title>cluster_1</title>\n",
"<polygon fill=\"none\" points=\"828.985,-221 828.985,-324 898.725,-324 898.725,-221 828.985,-221\" stroke=\"red\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust3\"><title>cluster_2</title>\n",
"<polygon fill=\"none\" points=\"828.985,-8 828.985,-111 898.725,-111 898.725,-8 828.985,-8\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust4\"><title>cluster_3</title>\n",
"<polygon fill=\"none\" points=\"355.622,-217 355.622,-385 746.985,-385 746.985,-217 355.622,-217\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust5\"><title>cluster_4</title>\n",
"<polygon fill=\"none\" points=\"185.74,-376 185.74,-460 269.622,-460 269.622,-376 185.74,-376\" stroke=\"black\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust6\"><title>cluster_5</title>\n",
"<polygon fill=\"none\" points=\"185.74,-131 185.74,-215 269.622,-215 269.622,-131 185.74,-131\" stroke=\"black\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust7\"><title>cluster_6</title>\n",
"<polygon fill=\"none\" points=\"30,-305 30,-375 99.7401,-375 99.7401,-305 30,-305\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node2\"><title>2</title>\n",
"<ellipse cx=\"64.8701\" cy=\"-340\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"60.3701\" y=\"-343.8\">2</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"56.8701\" y=\"-328.8\">\u2777</text>\n",
"</g>\n",
"<!-- I&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;2</title>\n",
"<path d=\"M1.04557,-340C1.94668,-340 16.0699,-340 30.6965,-340\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.8616,-340 30.8617,-343.15 34.3616,-340 30.8616,-340 30.8616,-340 30.8616,-340 34.3616,-340 30.8616,-336.85 37.8616,-340 37.8616,-340\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g class=\"node\" id=\"node3\"><title>6</title>\n",
"<ellipse cx=\"971.666\" cy=\"-325\" fill=\"#ffffaa\" rx=\"33.8824\" ry=\"33.8824\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"967.166\" y=\"-328.8\">6</text>\n",
"<text fill=\"#f17cb0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"955.666\" y=\"-314.8\">\u2776</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"971.666\" y=\"-314.8\">\u2777</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge11\"><title>2-&gt;6</title>\n",
"<path d=\"M70.6773,-366.38C83.6475,-428.346 125.451,-578 226.681,-578 226.681,-578 226.681,-578 864.855,-578 955.533,-578 969.853,-437.963 971.242,-366.258\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"971.341,-359.121 974.393,-366.164 971.292,-362.62 971.243,-366.12 971.243,-366.12 971.243,-366.12 971.292,-362.62 968.094,-366.076 971.341,-359.121 971.341,-359.121\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"549.804\" y=\"-581.8\">c</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g class=\"node\" id=\"node7\"><title>5</title>\n",
"<ellipse cx=\"553.304\" cy=\"-310\" fill=\"#ffffaa\" rx=\"33.8824\" ry=\"33.8824\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"548.804\" y=\"-313.8\">5</text>\n",
"<text fill=\"#f17cb0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"537.304\" y=\"-299.8\">\u2776</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"553.304\" y=\"-299.8\">\u2777</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge10\"><title>2-&gt;5</title>\n",
"<path d=\"M89.1564,-328.414C127.645,-309.98 207.462,-274.755 279.622,-262 363.655,-247.147 462.273,-275.978 514.835,-295.048\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"521.631,-297.553 513.973,-298.088 518.347,-296.342 515.063,-295.132 515.063,-295.132 515.063,-295.132 518.347,-296.342 516.152,-292.176 521.631,-297.553 521.631,-297.553\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"292.622\" y=\"-265.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g class=\"node\" id=\"node9\"><title>3</title>\n",
"<ellipse cx=\"227.681\" cy=\"-418\" fill=\"#ffffaa\" rx=\"33.8824\" ry=\"33.8824\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"223.181\" y=\"-421.8\">3</text>\n",
"<text fill=\"#f17cb0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"211.681\" y=\"-407.8\">\u2776</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"227.681\" y=\"-407.8\">\u2777</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge8\"><title>2-&gt;3</title>\n",
"<path d=\"M89.2534,-351.342C115.766,-364.201 159.319,-385.327 190.285,-400.347\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"196.692,-403.454 189.019,-403.233 193.543,-401.926 190.393,-400.399 190.393,-400.399 190.393,-400.399 193.543,-401.926 191.768,-397.565 196.692,-403.454 196.692,-403.454\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"109.74\" y=\"-396.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g class=\"node\" id=\"node10\"><title>4</title>\n",
"<ellipse cx=\"227.681\" cy=\"-173\" fill=\"#ffffaa\" rx=\"33.8824\" ry=\"33.8824\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"223.181\" y=\"-176.8\">4</text>\n",
"<text fill=\"#f17cb0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"211.681\" y=\"-162.8\">\u2776</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"227.681\" y=\"-162.8\">\u2777</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge9\"><title>2-&gt;4</title>\n",
"<path d=\"M71.2529,-313.422C77.1981,-289.867 88.8254,-255.772 109.74,-233 130.994,-209.859 163.216,-194.254 188.458,-184.772\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"195.045,-182.376 189.544,-187.729 191.756,-183.572 188.467,-184.769 188.467,-184.769 188.467,-184.769 191.756,-183.572 187.39,-181.809 195.045,-182.376 195.045,-182.376\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"111.74\" y=\"-236.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge26\"><title>6-&gt;6</title>\n",
"<path d=\"M961.166,-357.463C961.166,-368.284 964.666,-376.941 971.666,-376.941 977.025,-376.941 980.333,-371.867 981.589,-364.632\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"982.166,-357.463 984.744,-364.693 981.885,-360.952 981.605,-364.441 981.605,-364.441 981.605,-364.441 981.885,-360.952 978.465,-364.188 982.166,-357.463 982.166,-357.463\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"971.666\" y=\"-380.741\">1</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node4\"><title>1</title>\n",
"<ellipse cx=\"863.855\" cy=\"-256\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"859.355\" y=\"-259.8\">1</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"855.855\" y=\"-244.8\">\u2777</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge7\"><title>1-&gt;6</title>\n",
"<path d=\"M886.779,-270.297C901.227,-279.719 920.436,-292.245 936.826,-302.933\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"942.723,-306.778 935.139,-305.593 939.791,-304.866 936.859,-302.954 936.859,-302.954 936.859,-302.954 939.791,-304.866 938.58,-300.316 942.723,-306.778 942.723,-306.778\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"908.725\" y=\"-294.8\">!a</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>1-&gt;1</title>\n",
"<path d=\"M854.562,-281.37C853.921,-291.924 857.019,-300.87 863.855,-300.87 869.089,-300.87 872.131,-295.626 872.982,-288.431\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"873.148,-281.37 876.133,-288.442 873.065,-284.869 872.983,-288.368 872.983,-288.368 872.983,-288.368 873.065,-284.869 869.834,-288.294 873.148,-281.37 873.148,-281.37\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"860.355\" y=\"-304.67\">a</text>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g class=\"node\" id=\"node5\"><title>8</title>\n",
"<ellipse cx=\"863.855\" cy=\"-43\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"859.355\" y=\"-46.8\">8</text>\n",
"<text fill=\"#b276b2\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"855.855\" y=\"-31.8\">\u2778</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge34\"><title>8-&gt;6</title>\n",
"<path d=\"M885.194,-59.8794C896.985,-70.7349 911.152,-85.8048 919.725,-102 950.677,-160.469 962.917,-237.273 967.692,-283.79\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"968.395,-290.989 964.579,-284.329 968.055,-287.505 967.714,-284.022 967.714,-284.022 967.714,-284.022 968.055,-287.505 970.849,-283.715 968.395,-290.989 968.395,-290.989\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"908.725\" y=\"-105.8\">!a</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge33\"><title>8-&gt;1</title>\n",
"<path d=\"M847.171,-64.7811C827.002,-92.619 794.184,-143.137 781.485,-192.5 779.824,-198.956 778.176,-201.712 781.485,-207.5 792.194,-226.234 813.276,-238.449 831.429,-245.935\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"837.96,-248.482 830.294,-248.874 834.7,-247.211 831.439,-245.939 831.439,-245.939 831.439,-245.939 834.7,-247.211 832.584,-243.004 837.96,-248.482 837.96,-248.482\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"769.485\" y=\"-196.3\">a &amp; !b</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;8 -->\n",
"<g class=\"edge\" id=\"edge35\"><title>8-&gt;8</title>\n",
"<path d=\"M854.562,-68.37C853.921,-78.9238 857.019,-87.8701 863.855,-87.8701 869.089,-87.8701 872.131,-82.6259 872.982,-75.4312\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"873.148,-68.37 876.133,-75.4419 873.065,-71.869 872.983,-75.3681 872.983,-75.3681 872.983,-75.3681 873.065,-71.869 869.834,-75.2943 873.148,-68.37 873.148,-68.37\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"846.855\" y=\"-91.6701\">a &amp; b</text>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node6\"><title>0</title>\n",
"<ellipse cx=\"390.492\" cy=\"-317\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"385.992\" y=\"-320.8\">0</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"382.492\" y=\"-305.8\">\u2777</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>0-&gt;6</title>\n",
"<path d=\"M405.588,-339.236C430.449,-375.408 485.801,-443 552.304,-443 552.304,-443 552.304,-443 864.855,-443 908.58,-443 938.792,-397.534 955.419,-363.046\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"958.563,-356.312 958.456,-363.987 957.082,-359.483 955.602,-362.655 955.602,-362.655 955.602,-362.655 957.082,-359.483 952.747,-361.322 958.563,-356.312 958.563,-356.312\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"694.115\" y=\"-446.8\">!a &amp; c</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>0-&gt;1</title>\n",
"<path d=\"M414.107,-330.764C420.892,-334.795 428.385,-339.151 435.362,-343 472.087,-363.257 478.59,-376.171 519.362,-386 548.692,-393.071 557.636,-391.793 587.245,-386 684.636,-366.944 787.277,-306.018 835.186,-274.812\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"841.303,-270.795 837.181,-277.27 838.377,-272.716 835.452,-274.637 835.452,-274.637 835.452,-274.637 838.377,-272.716 833.722,-272.004 841.303,-270.795 841.303,-270.795\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"620.245\" y=\"-385.8\">a &amp; c</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;0</title>\n",
"<path d=\"M376.663,-340.087C374.75,-351.6 379.36,-361.87 390.492,-361.87 399.19,-361.87 403.906,-355.602 404.641,-347.369\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"404.321,-340.087 407.775,-346.942 404.475,-343.583 404.628,-347.08 404.628,-347.08 404.628,-347.08 404.475,-343.583 401.481,-347.218 404.321,-340.087 404.321,-340.087\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"372.492\" y=\"-365.67\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>0-&gt;5</title>\n",
"<path d=\"M416.844,-310.208C422.87,-308.876 429.308,-307.681 435.362,-307 460.857,-304.131 489.667,-304.824 512.312,-306.262\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"519.435,-306.752 512.235,-309.414 515.943,-306.512 512.452,-306.272 512.452,-306.272 512.452,-306.272 515.943,-306.512 512.668,-303.129 519.435,-306.752 519.435,-306.752\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"448.362\" y=\"-310.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge24\"><title>5-&gt;6</title>\n",
"<path d=\"M585.837,-319.983C592.202,-321.623 598.89,-323.085 605.245,-324 734.36,-342.596 768.306,-330.718 898.725,-328 909.083,-327.784 920.274,-327.394 930.673,-326.964\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"937.726,-326.662 930.867,-330.109 934.229,-326.812 930.732,-326.962 930.732,-326.962 930.732,-326.962 934.229,-326.812 930.598,-323.815 937.726,-326.662 937.726,-326.662\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"784.485\" y=\"-337.8\">c</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge22\"><title>5-&gt;0</title>\n",
"<path d=\"M520.438,-318.696C514.161,-320.071 507.59,-321.276 501.362,-322 472.225,-325.386 464.649,-323.664 435.362,-322 431.818,-321.799 428.12,-321.507 424.441,-321.163\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"417.432,-320.45 424.715,-318.025 420.914,-320.804 424.396,-321.159 424.396,-321.159 424.396,-321.159 420.914,-320.804 424.077,-324.292 417.432,-320.45 417.432,-320.45\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"435.362\" y=\"-327.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge23\"><title>5-&gt;5</title>\n",
"<path d=\"M537.989,-340.41C537.308,-352.168 542.413,-361.941 553.304,-361.941 561.812,-361.941 566.789,-355.976 568.235,-347.76\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"568.619,-340.41 571.399,-347.565 568.436,-343.906 568.253,-347.401 568.253,-347.401 568.253,-347.401 568.436,-343.906 565.108,-347.237 568.619,-340.41 568.619,-340.41\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"533.304\" y=\"-365.741\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g class=\"node\" id=\"node8\"><title>7</title>\n",
"<ellipse cx=\"712.115\" cy=\"-252\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"707.615\" y=\"-255.8\">7</text>\n",
"<text fill=\"#b276b2\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"704.115\" y=\"-240.8\">\u2778</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge25\"><title>5-&gt;7</title>\n",
"<path d=\"M587.223,-307.418C610.467,-304.627 641.865,-298.86 667.245,-287 673.865,-283.906 680.372,-279.621 686.263,-275.108\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"691.931,-270.555 688.446,-277.395 689.202,-272.747 686.473,-274.939 686.473,-274.939 686.473,-274.939 689.202,-272.747 684.501,-272.484 691.931,-270.555 691.931,-270.555\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"605.245\" y=\"-308.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge30\"><title>7-&gt;6</title>\n",
"<path d=\"M723.736,-227.525C730.987,-214.105 742.01,-198.676 756.985,-191 813.214,-162.179 846.198,-166.882 898.725,-202 928.236,-221.73 947.267,-257.988 958.294,-286.045\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"960.793,-292.622 955.362,-287.198 959.55,-289.351 958.307,-286.079 958.307,-286.079 958.307,-286.079 959.55,-289.351 961.251,-284.96 960.793,-292.622 960.793,-292.622\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"845.855\" y=\"-205.8\">!a &amp; c</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge28\"><title>7-&gt;1</title>\n",
"<path d=\"M739.198,-252.697C764.35,-253.369 802.514,-254.388 829.787,-255.117\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"836.82,-255.305 829.739,-258.266 833.322,-255.211 829.823,-255.118 829.823,-255.118 829.823,-255.118 833.322,-255.211 829.907,-251.969 836.82,-255.305 836.82,-255.305\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"756.985\" y=\"-258.8\">a &amp; !b &amp; c</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;8 -->\n",
"<g class=\"edge\" id=\"edge32\"><title>7-&gt;8</title>\n",
"<path d=\"M720.839,-226.238C728.129,-204.294 740.415,-172.516 756.985,-148 779.396,-114.841 813.352,-83.4366 836.734,-63.7617\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"842.142,-59.2611 838.776,-66.16 839.452,-61.4999 836.761,-63.7388 836.761,-63.7388 836.761,-63.7388 839.452,-61.4999 834.746,-61.3175 842.142,-59.2611 842.142,-59.2611\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"758.985\" y=\"-151.8\">a &amp; b &amp; c</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge27\"><title>7-&gt;0</title>\n",
"<path d=\"M685.502,-248.089C648.268,-243.276 577.308,-237.402 519.362,-252 482.63,-261.254 444.405,-282.459 419.429,-298.146\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"413.373,-302.004 417.584,-295.586 416.325,-300.123 419.277,-298.243 419.277,-298.243 419.277,-298.243 416.325,-300.123 420.97,-300.899 413.373,-302.004 413.373,-302.004\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"520.304\" y=\"-255.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge29\"><title>7-&gt;5</title>\n",
"<path d=\"M685.23,-252.094C663.105,-253.05 630.877,-256.561 605.245,-268 597.558,-271.43 590.089,-276.349 583.346,-281.619\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"577.863,-286.105 581.287,-279.234 580.572,-283.888 583.281,-281.672 583.281,-281.672 583.281,-281.672 580.572,-283.888 585.276,-284.11 577.863,-286.105 577.863,-286.105\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"616.245\" y=\"-271.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge31\"><title>7-&gt;7</title>\n",
"<path d=\"M698.579,-275.546C696.907,-286.872 701.419,-296.87 712.115,-296.87 720.471,-296.87 725.052,-290.768 725.86,-282.698\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"725.651,-275.546 729.004,-282.451 725.753,-279.045 725.856,-282.543 725.856,-282.543 725.856,-282.543 725.753,-279.045 722.707,-282.636 725.651,-275.546 725.651,-275.546\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"681.115\" y=\"-300.67\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge15\"><title>3-&gt;6</title>\n",
"<path d=\"M248.804,-445.016C276.447,-478.728 329.604,-532 389.492,-532 389.492,-532 389.492,-532 864.855,-532 938.544,-532 960.944,-426.71 967.732,-366.314\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"968.485,-359.182 970.882,-366.474 968.117,-362.663 967.75,-366.143 967.75,-366.143 967.75,-366.143 968.117,-362.663 964.617,-365.813 968.485,-359.182 968.485,-359.182\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"618.245\" y=\"-535.8\">!a &amp; c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge13\"><title>3-&gt;1</title>\n",
"<path d=\"M259.066,-431.446C342.79,-466.322 581.561,-550.984 746.985,-462 812.598,-426.705 843.426,-337.849 855.806,-289.164\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"857.5,-282.283 858.885,-289.834 856.663,-285.682 855.826,-289.08 855.826,-289.08 855.826,-289.08 856.663,-285.682 852.768,-288.327 857.5,-282.283 857.5,-282.283\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"537.304\" y=\"-505.8\">a &amp; c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge12\"><title>3-&gt;0</title>\n",
"<path d=\"M257.061,-400.176C286.355,-381.777 331.797,-353.237 361.097,-334.834\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"367.093,-331.069 362.84,-337.459 364.129,-332.93 361.165,-334.792 361.165,-334.792 361.165,-334.792 364.129,-332.93 359.489,-332.124 367.093,-331.069 367.093,-331.069\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"294.622\" y=\"-389.8\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge14\"><title>3-&gt;5</title>\n",
"<path d=\"M261.614,-415.181C285.137,-412.895 317.472,-409.195 345.622,-404 418.726,-390.509 436.998,-380.193 501.362,-343 506.991,-339.748 512.864,-336.147 518.538,-332.554\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"524.596,-328.675 520.399,-335.103 521.648,-330.563 518.701,-332.45 518.701,-332.45 518.701,-332.45 521.648,-330.563 517.002,-329.797 524.596,-328.675 524.596,-328.675\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"370.492\" y=\"-405.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge19\"><title>4-&gt;6</title>\n",
"<path d=\"M259.868,-162.119C349.094,-132.667 612.268,-57.5477 818.985,-118 859.362,-129.808 869.773,-138.478 898.725,-169 929.959,-201.928 949.481,-250.832 960.178,-285.084\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"962.327,-292.159 957.278,-286.377 961.31,-288.81 960.292,-285.461 960.292,-285.461 960.292,-285.461 961.31,-288.81 963.306,-284.546 962.327,-292.159 962.327,-292.159\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"618.245\" y=\"-99.8\">!a &amp; c</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge17\"><title>4-&gt;1</title>\n",
"<path d=\"M261.724,-171.805C344.713,-169.603 568.065,-168.64 746.985,-213 776.744,-220.378 809.383,-232.917 832.414,-242.557\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"838.942,-245.319 831.267,-245.492 835.718,-243.955 832.495,-242.591 832.495,-242.591 832.495,-242.591 835.718,-243.955 833.723,-239.69 838.942,-245.319 838.942,-245.319\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"522.304\" y=\"-188.8\">a &amp; !b &amp; c</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;8 -->\n",
"<g class=\"edge\" id=\"edge21\"><title>4-&gt;8</title>\n",
"<path d=\"M239.866,-141.113C248.12,-121.831 261.148,-98.1297 279.622,-83 319.378,-50.4424 338.107,-47 389.492,-47 389.492,-47 389.492,-47 713.115,-47 753.152,-47 799.188,-45.5534 829.529,-44.4001\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"836.891,-44.1142 830.019,-47.5335 833.394,-44.2501 829.897,-44.3859 829.897,-44.3859 829.897,-44.3859 833.394,-44.2501 829.774,-41.2382 836.891,-44.1142 836.891,-44.1142\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"524.304\" y=\"-50.8\">a &amp; b &amp; c</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge16\"><title>4-&gt;0</title>\n",
"<path d=\"M236.628,-205.831C244.017,-229.759 257.323,-261.309 279.622,-281 301.03,-299.903 332.58,-308.915 356.386,-313.19\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"363.506,-314.371 356.085,-316.333 360.053,-313.798 356.6,-313.226 356.6,-313.226 356.6,-313.226 360.053,-313.798 357.115,-310.118 363.506,-314.371 363.506,-314.371\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"279.622\" y=\"-315.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge18\"><title>4-&gt;5</title>\n",
"<path d=\"M260.741,-181.809C332.775,-201.604 501.202,-247.893 501.362,-248 512.166,-255.196 511.173,-260.929 519.362,-271 521.487,-273.613 523.707,-276.31 525.947,-279.007\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"530.548,-284.52 523.645,-281.165 528.306,-281.833 526.063,-279.146 526.063,-279.146 526.063,-279.146 528.306,-281.833 528.481,-277.128 530.548,-284.52 530.548,-284.52\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"370.492\" y=\"-227.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge20\"><title>4-&gt;7</title>\n",
"<path d=\"M261.491,-176.573C284.957,-179.215 317.273,-183.029 345.622,-187 489.022,-207.085 526.086,-206.734 667.245,-239 671.214,-239.907 675.351,-240.972 679.432,-242.095\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"686.204,-244.023 678.609,-245.136 682.838,-243.065 679.472,-242.107 679.472,-242.107 679.472,-242.107 682.838,-243.065 680.334,-239.077 686.204,-244.023 686.204,-244.023\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"437.362\" y=\"-211.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
}
],
"prompt_number": 8
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's decompose it into three strengths:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"for (name, opt) in (('terminal', 't'), ('strictly weak', 'w'), ('strong', 's')):\n",
" a = spot.decompose_strength(aut, opt)\n",
" a.set_name(name)\n",
" display(a.show('.asn'))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"svg": [
"<svg height=\"360pt\" viewBox=\"0.00 0.00 543.00 360.00\" width=\"543pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(0.6 0.6) rotate(0) translate(4 596)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-596 901,-596 901,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"422.5\" y=\"-577.8\">terminal</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"427.5\" y=\"-563.8\">Inf(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"449.5\" y=\"-563.8\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"465.5\" y=\"-563.8\">)</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"829,-265 829,-358 889,-358 889,-265 829,-265\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust2\"><title>cluster_1</title>\n",
"<polygon fill=\"none\" points=\"746,-212 746,-297 798,-297 798,-212 746,-212\" stroke=\"red\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust3\"><title>cluster_2</title>\n",
"<polygon fill=\"none\" points=\"746,-8 746,-93 798,-93 798,-8 746,-8\" stroke=\"red\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust4\"><title>cluster_3</title>\n",
"<polygon fill=\"none\" points=\"308,-212 308,-348 664,-348 664,-212 308,-212\" stroke=\"red\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust5\"><title>cluster_4</title>\n",
"<polygon fill=\"none\" points=\"168,-355 168,-407 220,-407 220,-355 168,-355\" stroke=\"black\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust6\"><title>cluster_5</title>\n",
"<polygon fill=\"none\" points=\"168,-128 168,-180 220,-180 220,-128 168,-128\" stroke=\"black\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust7\"><title>cluster_6</title>\n",
"<polygon fill=\"none\" points=\"30,-260 30,-312 82,-312 82,-260 30,-260\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\"><title>0</title>\n",
"<ellipse cx=\"56\" cy=\"-286\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-282.3\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;0</title>\n",
"<path d=\"M1.15491,-286C2.79388,-286 17.1543,-286 30.6317,-286\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.9419,-286 30.9419,-289.15 34.4419,-286 30.9419,-286 30.9419,-286 30.9419,-286 34.4419,-286 30.9418,-282.85 37.9419,-286 37.9419,-286\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g class=\"node\" id=\"node3\"><title>4</title>\n",
"<ellipse cx=\"859\" cy=\"-295\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<ellipse cx=\"859\" cy=\"-295\" fill=\"none\" rx=\"22\" ry=\"22\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"859\" y=\"-291.3\">4</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>0-&gt;4</title>\n",
"<path d=\"M58.0785,-303.931C62.6265,-361.975 85.3776,-541 193,-541 193,-541 193,-541 773,-541 802.871,-541 805.349,-518.569 819,-492 847.2,-437.115 855.049,-363.961 857.207,-324.031\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"857.547,-316.974 860.356,-324.118 857.379,-320.47 857.21,-323.966 857.21,-323.966 857.21,-323.966 857.379,-320.47 854.064,-323.814 857.547,-316.974 857.547,-316.974\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"485.5\" y=\"-544.8\">c</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g class=\"node\" id=\"node7\"><title>3</title>\n",
"<ellipse cx=\"489\" cy=\"-289\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"489\" y=\"-285.3\">3</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>0-&gt;3</title>\n",
"<path d=\"M73.4476,-280.48C103.903,-270.584 171.326,-250.183 230,-243 317.664,-232.269 420.724,-264.26 465.428,-280.354\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"472.09,-282.792 464.434,-283.345 468.803,-281.589 465.516,-280.386 465.516,-280.386 465.516,-280.386 468.803,-281.589 466.598,-277.428 472.09,-282.792 472.09,-282.792\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"243\" y=\"-246.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node9\"><title>1</title>\n",
"<ellipse cx=\"194\" cy=\"-381\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"194\" y=\"-377.3\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;1</title>\n",
"<path d=\"M71.2973,-295.987C95.6441,-312.994 145.208,-347.616 172.986,-367.02\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"178.894,-371.147 171.352,-369.72 176.025,-369.142 173.156,-367.138 173.156,-367.138 173.156,-367.138 176.025,-369.142 174.96,-364.556 178.894,-371.147 178.894,-371.147\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-359.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node10\"><title>2</title>\n",
"<ellipse cx=\"194\" cy=\"-154\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"194\" y=\"-150.3\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>0-&gt;2</title>\n",
"<path d=\"M62.1305,-268.929C67.5363,-253.204 77.3224,-229.958 92,-214 114.022,-190.057 147.809,-172.658 170.153,-162.943\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"176.694,-160.176 171.474,-165.804 173.47,-161.539 170.247,-162.903 170.247,-162.903 170.247,-162.903 173.47,-161.539 169.02,-160.002 176.694,-160.176 176.694,-160.176\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"94\" y=\"-217.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge20\"><title>4-&gt;4</title>\n",
"<path d=\"M850.994,-315.581C849.886,-325.845 852.555,-335 859,-335 863.834,-335 866.544,-329.85 867.129,-322.945\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"867.006,-315.581 870.273,-322.527 867.065,-319.08 867.123,-322.58 867.123,-322.58 867.123,-322.58 867.065,-319.08 863.973,-322.632 867.006,-315.581 867.006,-315.581\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"859\" y=\"-338.8\">1</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g class=\"node\" id=\"node4\"><title>7</title>\n",
"<ellipse cx=\"772\" cy=\"-238\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"772\" y=\"-234.3\">7</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge32\"><title>7-&gt;4</title>\n",
"<path d=\"M787.419,-247.669C800.184,-256.229 819.066,-268.891 834.089,-278.966\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"840.262,-283.105 832.694,-281.823 837.355,-281.156 834.448,-279.206 834.448,-279.206 834.448,-279.206 837.355,-281.156 836.203,-276.59 840.262,-283.105 840.262,-283.105\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"808\" y=\"-272.8\">!a</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge31\"><title>7-&gt;7</title>\n",
"<path d=\"M764.969,-254.664C763.406,-264.625 765.75,-274 772,-274 776.688,-274 779.178,-268.727 779.471,-261.888\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"779.031,-254.664 782.601,-261.46 779.244,-258.158 779.456,-261.651 779.456,-261.651 779.456,-261.651 779.244,-258.158 776.312,-261.842 779.031,-254.664 779.031,-254.664\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"768.5\" y=\"-277.8\">a</text>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g class=\"node\" id=\"node5\"><title>8</title>\n",
"<ellipse cx=\"772\" cy=\"-34\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"772\" y=\"-30.3\">8</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge34\"><title>8-&gt;4</title>\n",
"<path d=\"M786.488,-44.8498C797.043,-54.1116 811.199,-68.3829 819,-84 848.838,-143.733 856.012,-223.256 857.632,-265.576\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"857.867,-272.784 854.49,-265.89 857.753,-269.286 857.638,-265.787 857.638,-265.787 857.638,-265.787 857.753,-269.286 860.787,-265.685 857.867,-272.784 857.867,-272.784\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"808\" y=\"-87.8\">!a</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge33\"><title>8-&gt;7</title>\n",
"<path d=\"M761.116,-48.5917C743.607,-73.0775 709.895,-124.665 697.5,-174.5 695.891,-180.97 694.322,-183.639 697.5,-189.5 708.151,-209.143 730.583,-222.08 748.064,-229.614\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"754.725,-232.332 747.054,-232.604 751.484,-231.009 748.244,-229.687 748.244,-229.687 748.244,-229.687 751.484,-231.009 749.434,-226.771 754.725,-232.332 754.725,-232.332\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"686.5\" y=\"-178.3\">a &amp; !b</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;8 -->\n",
"<g class=\"edge\" id=\"edge35\"><title>8-&gt;8</title>\n",
"<path d=\"M764.969,-50.6641C763.406,-60.625 765.75,-70 772,-70 776.688,-70 779.178,-64.7266 779.471,-57.8876\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"779.031,-50.6641 782.601,-57.4598 779.244,-54.1576 779.456,-57.6511 779.456,-57.6511 779.456,-57.6511 779.244,-54.1576 776.312,-57.8425 779.031,-50.6641 779.031,-50.6641\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"755\" y=\"-73.8\">a &amp; b</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g class=\"node\" id=\"node6\"><title>5</title>\n",
"<ellipse cx=\"334\" cy=\"-289\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"334\" y=\"-285.3\">5</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge24\"><title>5-&gt;4</title>\n",
"<path d=\"M340.203,-306.023C345.664,-320.87 355.753,-341.744 372,-353 403.111,-374.554 418.281,-363.878 456,-367 608.731,-379.64 649.312,-360.127 798,-323 807.418,-320.648 810.044,-320.744 819,-317 823.832,-314.98 828.823,-312.499 833.553,-309.94\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"839.802,-306.439 835.235,-312.608 836.749,-308.149 833.696,-309.86 833.696,-309.86 833.696,-309.86 836.749,-308.149 832.156,-307.112 839.802,-306.439 839.802,-306.439\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"620\" y=\"-368.8\">!a &amp; c</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge22\"><title>5-&gt;7</title>\n",
"<path d=\"M346.469,-302.602C353.237,-309.865 362.351,-318.431 372,-324 430.536,-357.784 455.416,-360.594 522,-349 612.734,-333.2 709.398,-277.287 750.553,-251.37\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"756.672,-247.479 752.455,-253.893 753.718,-249.357 750.765,-251.235 750.765,-251.235 750.765,-251.235 753.718,-249.357 749.074,-248.577 756.672,-247.479 756.672,-247.479\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"555\" y=\"-349.8\">a &amp; c</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge21\"><title>5-&gt;5</title>\n",
"<path d=\"M322.57,-303.042C318.296,-313.913 322.105,-325 334,-325 343.293,-325 347.651,-318.233 347.075,-310.089\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"345.43,-303.042 350.088,-309.143 346.225,-306.45 347.021,-309.859 347.021,-309.859 347.021,-309.859 346.225,-306.45 343.953,-310.575 345.43,-303.042 345.43,-303.042\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"316\" y=\"-328.8\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge23\"><title>5-&gt;3</title>\n",
"<path d=\"M351.851,-285.124C358.138,-283.86 365.361,-282.623 372,-282 401.205,-279.262 408.738,-279.962 438,-282 446.435,-282.588 455.613,-283.726 463.776,-284.917\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"470.937,-286.012 463.542,-288.068 467.478,-285.483 464.018,-284.954 464.018,-284.954 464.018,-284.954 467.478,-285.483 464.494,-281.84 470.937,-286.012 470.937,-286.012\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"385\" y=\"-285.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge18\"><title>3-&gt;4</title>\n",
"<path d=\"M505.785,-296.693C515.418,-300.955 528.126,-305.82 540,-308 645.842,-327.432 774.689,-309.774 830.281,-300.213\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"837.317,-298.978 830.967,-303.29 833.87,-299.583 830.422,-300.188 830.422,-300.188 830.422,-300.188 833.87,-299.583 829.878,-297.085 837.317,-298.978 837.317,-298.978\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"701.5\" y=\"-320.8\">c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge16\"><title>3-&gt;5</title>\n",
"<path d=\"M471.511,-293.993C461.847,-296.657 449.347,-299.657 438,-301 408.87,-304.447 400.973,-305.581 372,-301 367.36,-300.266 362.51,-299.045 357.906,-297.656\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"350.94,-295.38 358.573,-294.56 354.267,-296.467 357.594,-297.554 357.594,-297.554 357.594,-297.554 354.267,-296.467 356.616,-300.549 350.94,-295.38 350.94,-295.38\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"372\" y=\"-308.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge17\"><title>3-&gt;3</title>\n",
"<path d=\"M476.162,-301.918C470.307,-313.135 474.586,-325 489,-325 500.486,-325 505.537,-317.465 504.151,-308.729\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"501.838,-301.918 507.072,-307.533 502.963,-305.232 504.089,-308.546 504.089,-308.546 504.089,-308.546 502.963,-305.232 501.107,-309.56 501.838,-301.918 501.838,-301.918\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"469\" y=\"-328.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g class=\"node\" id=\"node8\"><title>6</title>\n",
"<ellipse cx=\"638\" cy=\"-238\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"638\" y=\"-234.3\">6</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge19\"><title>3-&gt;6</title>\n",
"<path d=\"M507.309,-289.825C530.207,-290.205 571.256,-288.372 602,-273 609.415,-269.293 616.211,-263.409 621.803,-257.516\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"626.582,-252.164 624.269,-259.484 624.251,-254.775 621.92,-257.385 621.92,-257.385 621.92,-257.385 624.251,-254.775 619.57,-255.287 626.582,-252.164 626.582,-252.164\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"540\" y=\"-292.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge28\"><title>6-&gt;4</title>\n",
"<path d=\"M642.992,-220.687C647.593,-205.147 656.835,-183.253 674,-173 697.657,-158.87 708.779,-168.718 736,-173 764.602,-177.499 775.406,-174.894 798,-193 822.369,-212.528 838.951,-244.824 848.404,-267.843\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"850.995,-274.367 845.483,-269.024 849.703,-271.114 848.411,-267.861 848.411,-267.861 848.411,-267.861 849.703,-271.114 851.338,-266.698 850.995,-274.367 850.995,-274.367\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"754\" y=\"-196.8\">!a &amp; c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge26\"><title>6-&gt;7</title>\n",
"<path d=\"M656.257,-238C679.282,-238 720.189,-238 746.429,-238\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"753.739,-238 746.739,-241.15 750.239,-238 746.739,-238 746.739,-238 746.739,-238 750.239,-238 746.739,-234.85 753.739,-238 753.739,-238\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"674\" y=\"-241.8\">a &amp; !b &amp; c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;8 -->\n",
"<g class=\"edge\" id=\"edge30\"><title>6-&gt;8</title>\n",
"<path d=\"M642.09,-220.071C646.534,-197.696 656.223,-158.866 674,-130 694.669,-96.4379 729.437,-65.9557 751.252,-48.7235\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"757.039,-44.223 753.447,-51.0069 754.276,-46.3717 751.513,-48.5204 751.513,-48.5204 751.513,-48.5204 754.276,-46.3717 749.579,-46.0339 757.039,-44.223 757.039,-44.223\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"676\" y=\"-133.8\">a &amp; b &amp; c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge25\"><title>6-&gt;5</title>\n",
"<path d=\"M619.814,-237.447C600.413,-236.952 567.915,-236.509 540,-238 502.506,-240.003 492.639,-238.791 456,-247 420.649,-254.921 381.287,-269.77 357.337,-279.521\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"350.714,-282.249 355.987,-276.671 353.95,-280.916 357.186,-279.583 357.186,-279.583 357.186,-279.583 353.95,-280.916 358.386,-282.496 350.714,-282.249 350.714,-282.249\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"456\" y=\"-250.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge27\"><title>6-&gt;3</title>\n",
"<path d=\"M619.907,-238.535C600.029,-239.667 566.552,-243.175 540,-254 528.732,-258.594 517.511,-266.11 508.563,-273.001\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"503.033,-277.403 506.548,-270.579 505.772,-275.223 508.51,-273.044 508.51,-273.044 508.51,-273.044 505.772,-275.223 510.472,-275.508 503.033,-277.403 503.033,-277.403\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"551\" y=\"-257.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge29\"><title>6-&gt;6</title>\n",
"<path d=\"M627.087,-252.417C623.276,-263.166 626.914,-274 638,-274 646.661,-274 650.776,-267.387 650.344,-259.369\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"648.913,-252.417 653.41,-258.637 649.619,-255.845 650.325,-259.273 650.325,-259.273 650.325,-259.273 649.619,-255.845 647.239,-259.908 648.913,-252.417 648.913,-252.417\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"607\" y=\"-277.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge9\"><title>1-&gt;4</title>\n",
"<path d=\"M201.25,-397.774C207.007,-411.366 216.678,-430.283 230,-443 267.092,-478.41 281.719,-495 333,-495 333,-495 333,-495 773,-495 846.297,-495 857.298,-379.815 858.342,-324.272\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"858.427,-317.168 861.493,-324.205 858.385,-320.667 858.343,-324.167 858.343,-324.167 858.343,-324.167 858.385,-320.667 855.193,-324.129 858.427,-317.168 858.427,-317.168\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"553\" y=\"-498.8\">!a &amp; c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge7\"><title>1-&gt;7</title>\n",
"<path d=\"M207.946,-393.044C231.127,-413.301 282.077,-452 333,-452 333,-452 333,-452 572,-452 661.279,-452 682.033,-407.122 736,-336 752.509,-314.242 761.726,-284.007 766.505,-262.894\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"768.015,-255.835 769.631,-263.339 767.283,-259.257 766.551,-262.68 766.551,-262.68 766.551,-262.68 767.283,-259.257 763.47,-262.021 768.015,-255.835 768.015,-255.835\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"473\" y=\"-455.8\">a &amp; c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>1-&gt;5</title>\n",
"<path d=\"M207.942,-369.524C214.396,-363.998 222.424,-357.414 230,-352 257.203,-332.562 290.492,-312.89 311.723,-300.821\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"317.905,-297.328 313.36,-303.514 314.858,-299.05 311.81,-300.771 311.81,-300.771 311.81,-300.771 314.858,-299.05 310.261,-298.029 317.905,-297.328 317.905,-297.328\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"245\" y=\"-355.8\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge8\"><title>1-&gt;3</title>\n",
"<path d=\"M212.062,-379.598C252.967,-375.697 359.078,-362.356 438,-324 448.945,-318.681 460.132,-311.09 469.142,-304.337\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"474.724,-300.052 471.089,-306.813 471.947,-302.183 469.171,-304.315 469.171,-304.315 469.171,-304.315 471.947,-302.183 467.253,-301.816 474.724,-300.052 474.724,-300.052\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"314\" y=\"-369.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge13\"><title>2-&gt;4</title>\n",
"<path d=\"M210.94,-147.15C278.195,-119.324 544.129,-20.1344 736,-104 803.247,-133.393 837.266,-221.348 850.779,-266.926\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"852.773,-273.861 847.811,-268.004 851.806,-270.497 850.839,-267.134 850.839,-267.134 850.839,-267.134 851.806,-270.497 853.866,-266.263 852.773,-273.861 852.773,-273.861\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"553\" y=\"-76.8\">!a &amp; c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge11\"><title>2-&gt;7</title>\n",
"<path d=\"M212.071,-152.242C217.766,-151.735 224.151,-151.25 230,-151 259.307,-149.746 266.674,-150.352 296,-151 396.518,-153.223 422.942,-143.785 522,-161 607.727,-175.898 705.159,-211.86 748.342,-228.836\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"755.038,-231.488 747.37,-231.839 751.784,-230.199 748.53,-228.91 748.53,-228.91 748.53,-228.91 751.784,-230.199 749.69,-225.982 755.038,-231.488 755.038,-231.488\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"458\" y=\"-164.8\">a &amp; !b &amp; c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;8 -->\n",
"<g class=\"edge\" id=\"edge15\"><title>2-&gt;8</title>\n",
"<path d=\"M197.172,-136.119C200.591,-115.776 209.147,-82.9326 230,-64 265.21,-32.0317 285.442,-35 333,-35 333,-35 333,-35 639,-35 676.545,-35 720.095,-34.5905 746.588,-34.2956\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"753.913,-34.2121 746.95,-37.4417 750.413,-34.252 746.914,-34.2919 746.914,-34.2919 746.914,-34.2919 750.413,-34.252 746.878,-31.1421 753.913,-34.2121 753.913,-34.2121\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"460\" y=\"-38.8\">a &amp; b &amp; c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge10\"><title>2-&gt;5</title>\n",
"<path d=\"M195.729,-172.07C197.695,-196.066 204.781,-238.18 230,-262 251.222,-282.045 285.453,-287.634 308.57,-288.974\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"315.654,-289.273 308.527,-292.125 312.157,-289.126 308.66,-288.978 308.66,-288.978 308.66,-288.978 312.157,-289.126 308.793,-285.831 315.654,-289.273 315.654,-289.273\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"230\" y=\"-291.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge12\"><title>2-&gt;3</title>\n",
"<path d=\"M210.91,-160.735C216.853,-163.153 223.691,-165.819 230,-168 321.049,-199.481 364.419,-166.816 438,-229 451.967,-240.804 444.216,-252.015 456,-266 459.199,-269.796 463.155,-273.289 467.183,-276.344\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"473.055,-280.492 465.52,-279.026 470.196,-278.473 467.337,-276.453 467.337,-276.453 467.337,-276.453 470.196,-278.473 469.155,-273.88 473.055,-280.492 473.055,-280.492\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"314\" y=\"-192.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge14\"><title>2-&gt;6</title>\n",
"<path d=\"M212.27,-154.192C252.329,-154.917 354.523,-158.391 438,-175 503.475,-188.027 577.766,-214.929 614.28,-228.991\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"621.065,-231.624 613.4,-232.028 617.802,-230.358 614.54,-229.092 614.54,-229.092 614.54,-229.092 617.802,-230.358 615.679,-226.155 621.065,-231.624 621.065,-231.624\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"374\" y=\"-178.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
},
{
"metadata": {},
"output_type": "display_data",
"svg": [
"<svg height=\"278pt\" viewBox=\"0.00 0.00 734.00 277.87\" width=\"734pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(0.897311 0.897311) rotate(0) translate(4 305.672)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-305.672 814,-305.672 814,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"365\" y=\"-287.472\">strictly weak</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"384\" y=\"-273.472\">Inf(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"406\" y=\"-273.472\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"422\" y=\"-273.472\">)</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"742,-150.672 742,-243.672 802,-243.672 802,-150.672 742,-150.672\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust2\"><title>cluster_1</title>\n",
"<polygon fill=\"none\" points=\"308,-31.6719 308,-167.672 664,-167.672 664,-31.6719 308,-31.6719\" stroke=\"red\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust3\"><title>cluster_2</title>\n",
"<polygon fill=\"none\" points=\"168,-14.6719 168,-66.6719 220,-66.6719 220,-14.6719 168,-14.6719\" stroke=\"black\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust4\"><title>cluster_3</title>\n",
"<polygon fill=\"none\" points=\"168,-135.672 168,-187.672 220,-187.672 220,-135.672 168,-135.672\" stroke=\"black\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust5\"><title>cluster_4</title>\n",
"<polygon fill=\"none\" points=\"30,-14.6719 30,-66.6719 82,-66.6719 82,-14.6719 30,-14.6719\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\"><title>0</title>\n",
"<ellipse cx=\"56\" cy=\"-40.6719\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-36.9719\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;0</title>\n",
"<path d=\"M1.15491,-40.6719C2.79388,-40.6719 17.1543,-40.6719 30.6317,-40.6719\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.9419,-40.6719 30.9419,-43.822 34.4419,-40.672 30.9419,-40.672 30.9419,-40.672 30.9419,-40.672 34.4419,-40.672 30.9418,-37.522 37.9419,-40.6719 37.9419,-40.6719\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g class=\"node\" id=\"node5\"><title>3</title>\n",
"<ellipse cx=\"489\" cy=\"-57.6719\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"489\" y=\"-53.9719\">3</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>0-&gt;3</title>\n",
"<path d=\"M73.2717,-34.8167C94.6626,-27.4595 133.568,-15.2429 168,-10.6719 287.282,5.16321 323.177,5.30906 438,-30.6719 448.151,-33.8528 458.621,-39.1442 467.341,-44.2039\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"473.351,-47.8137 465.729,-46.91 470.351,-46.0117 467.35,-44.2096 467.35,-44.2096 467.35,-44.2096 470.351,-46.0117 468.972,-41.5092 473.351,-47.8137 473.351,-47.8137\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"243\" y=\"-7.47194\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node7\"><title>1</title>\n",
"<ellipse cx=\"194\" cy=\"-40.6719\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"194\" y=\"-36.9719\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;1</title>\n",
"<path d=\"M74.2245,-40.6719C98.1366,-40.6719 141.511,-40.6719 168.704,-40.6719\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"175.915,-40.6719 168.915,-43.822 172.415,-40.672 168.915,-40.672 168.915,-40.672 168.915,-40.672 172.415,-40.672 168.915,-37.522 175.915,-40.6719 175.915,-40.6719\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-44.4719\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node8\"><title>2</title>\n",
"<ellipse cx=\"194\" cy=\"-161.672\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"194\" y=\"-157.972\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>0-&gt;2</title>\n",
"<path d=\"M70.0403,-52.2739C94.3484,-73.901 146.643,-120.428 174.557,-145.263\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"179.799,-149.927 172.476,-147.628 177.185,-147.601 174.57,-145.274 174.57,-145.274 174.57,-145.274 177.185,-147.601 176.663,-142.921 179.799,-149.927 179.799,-149.927\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"94\" y=\"-133.472\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g class=\"node\" id=\"node3\"><title>6</title>\n",
"<ellipse cx=\"772\" cy=\"-180.672\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<ellipse cx=\"772\" cy=\"-180.672\" fill=\"none\" rx=\"22\" ry=\"22\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"772\" y=\"-176.972\">6</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge20\"><title>6-&gt;6</title>\n",
"<path d=\"M760.047,-199.188C757.391,-210.255 761.375,-220.672 772,-220.672 780.301,-220.672 784.548,-214.314 784.743,-206.255\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"783.953,-199.188 787.861,-205.794 784.342,-202.666 784.731,-206.144 784.731,-206.144 784.731,-206.144 784.342,-202.666 781.6,-206.494 783.953,-199.188 783.953,-199.188\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"755\" y=\"-224.472\">a &amp; b</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g class=\"node\" id=\"node4\"><title>4</title>\n",
"<ellipse cx=\"334\" cy=\"-74.6719\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"334\" y=\"-70.9719\">4</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge14\"><title>4-&gt;4</title>\n",
"<path d=\"M322.57,-88.7137C318.296,-99.5845 322.105,-110.672 334,-110.672 343.293,-110.672 347.651,-103.905 347.075,-95.7604\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"345.43,-88.7137 350.088,-94.8145 346.225,-92.1221 347.021,-95.5305 347.021,-95.5305 347.021,-95.5305 346.225,-92.1221 343.953,-96.2465 345.43,-88.7137 345.43,-88.7137\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"316\" y=\"-114.472\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge15\"><title>4-&gt;3</title>\n",
"<path d=\"M349.425,-64.7106C355.998,-60.7565 364.072,-56.6776 372,-54.6719 403.017,-46.8255 440.193,-49.8689 463.949,-53.3105\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"471.166,-54.4286 463.766,-56.4697 467.707,-53.8927 464.249,-53.3568 464.249,-53.3568 464.249,-53.3568 467.707,-53.8927 464.731,-50.2439 471.166,-54.4286 471.166,-54.4286\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"385\" y=\"-58.4719\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge11\"><title>3-&gt;4</title>\n",
"<path d=\"M472.087,-64.1151C462.409,-67.6912 449.698,-71.7877 438,-73.6719 411.426,-77.9524 380.495,-77.5451 359.516,-76.4828\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"352.264,-76.0692 359.432,-73.3229 355.758,-76.2685 359.253,-76.4678 359.253,-76.4678 359.253,-76.4678 355.758,-76.2685 359.073,-79.6127 352.264,-76.0692 352.264,-76.0692\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"372\" y=\"-81.4719\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge12\"><title>3-&gt;3</title>\n",
"<path d=\"M476.162,-70.5904C470.307,-81.8067 474.586,-93.6719 489,-93.6719 500.486,-93.6719 505.537,-86.1374 504.151,-77.4008\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"501.838,-70.5904 507.072,-76.2049 502.963,-73.9043 504.089,-77.2183 504.089,-77.2183 504.089,-77.2183 502.963,-73.9043 501.107,-78.2316 501.838,-70.5904 501.838,-70.5904\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"469\" y=\"-97.4719\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g class=\"node\" id=\"node6\"><title>5</title>\n",
"<ellipse cx=\"638\" cy=\"-108.672\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"638\" y=\"-104.972\">5</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge13\"><title>3-&gt;5</title>\n",
"<path d=\"M507.017,-55.6165C529.949,-53.645 571.419,-52.9475 602,-68.6719 610.463,-73.0234 617.787,-80.36 623.517,-87.5705\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"627.944,-93.5295 621.241,-89.7896 625.857,-90.7202 623.769,-87.9108 623.769,-87.9108 623.769,-87.9108 625.857,-90.7202 626.298,-86.0321 627.944,-93.5295 627.944,-93.5295\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"540\" y=\"-72.4719\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge19\"><title>5-&gt;6</title>\n",
"<path d=\"M654.142,-116.931C676.586,-129.173 718.94,-152.275 746.022,-167.048\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"752.223,-170.43 744.57,-169.844 749.151,-168.754 746.078,-167.078 746.078,-167.078 746.078,-167.078 749.151,-168.754 747.587,-164.313 752.223,-170.43 752.223,-170.43\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"674\" y=\"-163.472\">a &amp; b &amp; c</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge16\"><title>5-&gt;4</title>\n",
"<path d=\"M621.258,-115.306C615.332,-117.471 608.463,-119.595 602,-120.672 574.819,-125.202 567.551,-121.164 540,-120.672 464.587,-119.326 441.741,-125.397 372,-96.6719 366.461,-94.3906 360.763,-91.381 355.549,-88.3229\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"349.252,-84.4745 356.867,-85.4368 352.238,-86.2996 355.225,-88.1247 355.225,-88.1247 355.225,-88.1247 352.238,-86.2996 353.582,-90.8125 349.252,-84.4745 349.252,-84.4745\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"456\" y=\"-124.472\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge17\"><title>5-&gt;3</title>\n",
"<path d=\"M620.166,-105.546C600.531,-101.625 567.282,-94.1247 540,-83.6719 530.244,-79.9341 519.928,-74.7909 511.216,-70.065\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"504.902,-66.5627 512.551,-67.2039 507.963,-68.2605 511.023,-69.9584 511.023,-69.9584 511.023,-69.9584 507.963,-68.2605 509.495,-72.713 504.902,-66.5627 504.902,-66.5627\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"551\" y=\"-105.472\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge18\"><title>5-&gt;5</title>\n",
"<path d=\"M627.292,-123.464C623.806,-134.088 627.375,-144.672 638,-144.672 646.135,-144.672 650.134,-138.468 649.997,-130.792\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"648.708,-123.464 653.023,-129.812 649.314,-126.911 649.92,-130.358 649.92,-130.358 649.92,-130.358 649.314,-126.911 646.818,-130.903 648.708,-123.464 648.708,-123.464\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"607\" y=\"-148.472\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>1-&gt;4</title>\n",
"<path d=\"M211.646,-44.7731C235.994,-50.772 281.442,-61.9694 309.281,-68.8282\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"316.295,-70.5562 308.745,-71.9401 312.897,-69.7189 309.498,-68.8816 309.498,-68.8816 309.498,-68.8816 312.897,-69.7189 310.252,-65.823 316.295,-70.5562 316.295,-70.5562\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"245\" y=\"-69.4719\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>1-&gt;3</title>\n",
"<path d=\"M212.21,-39.0735C234.346,-37.1049 273.997,-33.8741 308,-32.6719 328.432,-31.9496 333.625,-30.9857 354,-32.6719 391.719,-35.7937 400.839,-39.4924 438,-46.6719 446.639,-48.3411 456.074,-50.3643 464.398,-52.2182\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"471.378,-53.7905 463.857,-55.3252 467.963,-53.0213 464.549,-52.2522 464.549,-52.2522 464.549,-52.2522 467.963,-53.0213 465.241,-49.1792 471.378,-53.7905 471.378,-53.7905\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"314\" y=\"-36.4719\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge10\"><title>2-&gt;6</title>\n",
"<path d=\"M205.963,-175.189C227.483,-200.087 277.978,-250.672 333,-250.672 333,-250.672 333,-250.672 639,-250.672 682.226,-250.672 725.108,-221.011 749.779,-200.305\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"755.352,-195.517 752.094,-202.468 752.697,-197.798 750.042,-200.079 750.042,-200.079 750.042,-200.079 752.697,-197.798 747.989,-197.689 755.352,-195.517 755.352,-195.517\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"460\" y=\"-254.472\">a &amp; b &amp; c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge7\"><title>2-&gt;4</title>\n",
"<path d=\"M207.858,-150.076C214.292,-144.522 222.327,-137.948 230,-132.672 256.703,-114.31 289.653,-96.5325 310.984,-85.6048\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"317.478,-82.3055 312.664,-88.2844 314.358,-83.8908 311.237,-85.476 311.237,-85.476 311.237,-85.476 314.358,-83.8908 309.811,-82.6676 317.478,-82.3055 317.478,-82.3055\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"230\" y=\"-136.472\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge8\"><title>2-&gt;3</title>\n",
"<path d=\"M212.225,-159.725C232.384,-157.344 266.736,-152.97 296,-147.672 361.985,-135.725 380.609,-131.357 438,-96.6719 449.079,-89.9758 460.53,-81.2023 469.674,-73.6728\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"475.045,-69.1751 471.7,-76.0844 472.361,-71.4222 469.678,-73.6694 469.678,-73.6694 469.678,-73.6694 472.361,-71.4222 467.655,-71.2544 475.045,-69.1751 475.045,-69.1751\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"314\" y=\"-149.472\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge9\"><title>2-&gt;5</title>\n",
"<path d=\"M212.038,-164.6C217.731,-165.447 224.122,-166.254 230,-166.672 259.26,-168.751 266.671,-167.177 296,-166.672 321.789,-166.227 328.314,-167.018 354,-164.672 429.176,-157.805 447.34,-150.827 522,-139.672 557.559,-134.359 567.907,-139.088 602,-127.672 606.757,-126.079 611.63,-123.862 616.17,-121.504\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"622.532,-118.003 617.918,-124.138 619.465,-119.691 616.399,-121.378 616.399,-121.378 616.399,-121.378 619.465,-119.691 614.88,-118.618 622.532,-118.003 622.532,-118.003\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"374\" y=\"-167.472\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
},
{
"metadata": {},
"output_type": "display_data",
"svg": [
"<svg height=\"245pt\" viewBox=\"0.00 0.00 713.36 244.72\" width=\"713pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 240.724)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-240.724 709.362,-240.724 709.362,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"332.181\" y=\"-222.524\">strong</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"236.181\" y=\"-208.524\">(Fin(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"264.181\" y=\"-208.524\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"280.181\" y=\"-208.524\">) &amp; Inf(</text>\n",
"<text fill=\"#f17cb0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"323.181\" y=\"-208.524\">\u2776</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"339.181\" y=\"-208.524\">)) | (Fin(</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"386.181\" y=\"-208.524\">\u2777</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"402.181\" y=\"-208.524\">) &amp; Inf(</text>\n",
"<text fill=\"#b276b2\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"445.181\" y=\"-208.524\">\u2778</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"461.181\" y=\"-208.524\">))</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"306,-24.7243 306,-192.724 697.362,-192.724 697.362,-24.7243 306,-24.7243\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust2\"><title>cluster_1</title>\n",
"<polygon fill=\"none\" points=\"168,-113.724 168,-165.724 220,-165.724 220,-113.724 168,-113.724\" stroke=\"black\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust3\"><title>cluster_2</title>\n",
"<polygon fill=\"none\" points=\"168,-32.7243 168,-84.7243 220,-84.7243 220,-32.7243 168,-32.7243\" stroke=\"black\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust4\"><title>cluster_3</title>\n",
"<polygon fill=\"none\" points=\"30,-113.724 30,-165.724 82,-165.724 82,-113.724 30,-113.724\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\"><title>0</title>\n",
"<ellipse cx=\"56\" cy=\"-139.724\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-136.024\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;0</title>\n",
"<path d=\"M1.15491,-139.724C2.79388,-139.724 17.1543,-139.724 30.6317,-139.724\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.9419,-139.724 30.9419,-142.874 34.4419,-139.724 30.9419,-139.724 30.9419,-139.724 30.9419,-139.724 34.4419,-139.724 30.9418,-136.574 37.9419,-139.724 37.9419,-139.724\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g class=\"node\" id=\"node4\"><title>3</title>\n",
"<ellipse cx=\"503.681\" cy=\"-117.724\" fill=\"#ffffaa\" rx=\"33.8824\" ry=\"33.8824\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"499.181\" y=\"-121.524\">3</text>\n",
"<text fill=\"#f17cb0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"487.681\" y=\"-107.524\">\u2776</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"503.681\" y=\"-107.524\">\u2777</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>0-&gt;3</title>\n",
"<path d=\"M71.4624,-149.074C77.5767,-152.622 84.9132,-156.372 92,-158.724 124.391,-169.478 133.977,-167.027 168,-169.724 256.5,-176.741 279.511,-181.578 367.74,-171.724 405.78,-167.476 416.67,-168.06 451.74,-152.724 458.155,-149.919 464.609,-146.27 470.666,-142.39\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"476.574,-138.455 472.494,-144.957 473.661,-140.395 470.748,-142.335 470.748,-142.335 470.748,-142.335 473.661,-140.395 469.002,-139.714 476.574,-138.455 476.574,-138.455\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"243\" y=\"-180.524\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node6\"><title>1</title>\n",
"<ellipse cx=\"194\" cy=\"-139.724\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"194\" y=\"-136.024\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;1</title>\n",
"<path d=\"M74.2245,-139.724C98.1366,-139.724 141.511,-139.724 168.704,-139.724\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"175.915,-139.724 168.915,-142.874 172.415,-139.724 168.915,-139.724 168.915,-139.724 168.915,-139.724 172.415,-139.724 168.915,-136.574 175.915,-139.724 175.915,-139.724\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-143.524\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node7\"><title>2</title>\n",
"<ellipse cx=\"194\" cy=\"-58.7243\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"194\" y=\"-55.0243\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>0-&gt;2</title>\n",
"<path d=\"M71.8133,-130.902C96.0324,-116.477 144.183,-87.7991 171.944,-71.2649\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"178.205,-67.536 173.803,-73.8244 175.198,-69.327 172.191,-71.118 172.191,-71.118 172.191,-71.118 175.198,-69.327 170.579,-68.4116 178.205,-67.536 178.205,-67.536\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"94\" y=\"-122.524\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g class=\"node\" id=\"node3\"><title>4</title>\n",
"<ellipse cx=\"340.87\" cy=\"-79.7243\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"336.37\" y=\"-83.5243\">4</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"332.87\" y=\"-68.5243\">\u2777</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge13\"><title>4-&gt;4</title>\n",
"<path d=\"M327.041,-102.811C325.128,-114.324 329.737,-124.594 340.87,-124.594 349.568,-124.594 354.284,-118.326 355.018,-110.094\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"354.699,-102.811 358.153,-109.666 354.852,-106.307 355.006,-109.804 355.006,-109.804 355.006,-109.804 354.852,-106.307 351.859,-109.942 354.699,-102.811 354.699,-102.811\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"322.87\" y=\"-128.394\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge14\"><title>4-&gt;3</title>\n",
"<path d=\"M366.236,-89.4128C372.524,-91.6911 379.329,-93.965 385.74,-95.7243 410.997,-102.656 439.918,-108.117 462.68,-111.865\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"469.841,-113.021 462.429,-115.015 466.386,-112.463 462.931,-111.905 462.931,-111.905 462.931,-111.905 466.386,-112.463 463.433,-108.796 469.841,-113.021 469.841,-113.021\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"398.74\" y=\"-114.524\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge10\"><title>3-&gt;4</title>\n",
"<path d=\"M477.986,-95.1155C470.152,-89.2941 461.082,-83.8061 451.74,-80.7243 426.73,-72.4741 396.742,-72.8316 374.418,-74.9121\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"367.455,-75.6394 374.09,-71.7791 370.936,-75.2757 374.417,-74.912 374.417,-74.912 374.417,-74.912 370.936,-75.2757 374.745,-78.045 367.455,-75.6394 367.455,-75.6394\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"385.74\" y=\"-84.5243\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge11\"><title>3-&gt;3</title>\n",
"<path d=\"M488.366,-148.135C487.686,-159.893 492.791,-169.665 503.681,-169.665 512.19,-169.665 517.167,-163.701 518.612,-155.484\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"518.996,-148.135 521.777,-155.29 518.814,-151.63 518.631,-155.125 518.631,-155.125 518.631,-155.125 518.814,-151.63 515.485,-154.961 518.996,-148.135 518.996,-148.135\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"483.681\" y=\"-173.465\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g class=\"node\" id=\"node5\"><title>5</title>\n",
"<ellipse cx=\"662.492\" cy=\"-67.7243\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"657.992\" y=\"-71.5243\">5</text>\n",
"<text fill=\"#b276b2\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"654.492\" y=\"-56.5243\">\u2778</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge12\"><title>3-&gt;5</title>\n",
"<path d=\"M528.89,-94.8763C536.843,-88.6123 546.1,-82.5106 555.622,-78.7243 578.663,-69.5625 606.635,-66.9829 628.04,-66.6024\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"635.318,-66.5524 628.34,-69.7505 631.818,-66.5765 628.319,-66.6006 628.319,-66.6006 628.319,-66.6006 631.818,-66.5765 628.297,-63.4507 635.318,-66.5524 635.318,-66.5524\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"555.622\" y=\"-82.5243\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge15\"><title>5-&gt;4</title>\n",
"<path d=\"M635.525,-65.1793C629.642,-64.6521 623.42,-64.1334 617.622,-63.7243 514.785,-56.4681 487.324,-52.1503 385.74,-69.7243 381.988,-70.3734 378.073,-71.138 374.195,-71.9505\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"367.296,-73.4501 373.467,-68.8851 370.716,-72.7066 374.136,-71.9632 374.136,-71.9632 374.136,-71.9632 370.716,-72.7066 374.805,-75.0414 367.296,-73.4501 367.296,-73.4501\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"470.681\" y=\"-62.5243\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge16\"><title>5-&gt;3</title>\n",
"<path d=\"M639.889,-82.4171C633.01,-86.5712 625.21,-90.7622 617.622,-93.7243 594.201,-102.868 566.619,-108.813 544.576,-112.498\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"537.626,-113.617 544.036,-109.395 541.081,-113.061 544.537,-112.505 544.537,-112.505 544.537,-112.505 541.081,-113.061 545.037,-115.615 537.626,-113.617 537.626,-113.617\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"566.622\" y=\"-114.524\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge17\"><title>5-&gt;5</title>\n",
"<path d=\"M648.956,-91.2707C647.285,-102.596 651.797,-112.594 662.492,-112.594 670.848,-112.594 675.43,-106.492 676.238,-98.4218\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"676.029,-91.2707 679.382,-98.1756 676.131,-94.7692 676.233,-98.2677 676.233,-98.2677 676.233,-98.2677 676.131,-94.7692 673.085,-98.3598 676.029,-91.2707 676.029,-91.2707\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"631.492\" y=\"-116.394\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>1-&gt;4</title>\n",
"<path d=\"M210.779,-133.189C234.301,-123.447 279.012,-104.929 309.134,-92.4539\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"315.703,-89.7334 310.441,-95.3223 312.469,-91.0727 309.236,-92.412 309.236,-92.412 309.236,-92.412 312.469,-91.0727 308.03,-89.5017 315.703,-89.7334 315.703,-89.7334\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"245\" y=\"-129.524\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>1-&gt;3</title>\n",
"<path d=\"M212.053,-142.472C217.747,-143.306 224.135,-144.152 230,-144.724 290.954,-150.67 306.875,-155.522 367.74,-148.724 405.78,-144.476 414.445,-138.335 451.74,-129.724 455.503,-128.856 459.42,-127.945 463.337,-127.029\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"470.353,-125.385 464.257,-130.049 466.946,-126.184 463.538,-126.982 463.538,-126.982 463.538,-126.982 466.946,-126.184 462.819,-123.915 470.353,-125.385 470.353,-125.385\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"320.87\" y=\"-156.524\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge7\"><title>2-&gt;4</title>\n",
"<path d=\"M211.902,-61.1743C235.09,-64.5356 277.254,-70.6476 306.827,-74.9345\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"314.056,-75.9823 306.676,-78.0954 310.592,-75.4801 307.128,-74.978 307.128,-74.978 307.128,-74.978 310.592,-75.4801 307.58,-71.8606 314.056,-75.9823 314.056,-75.9823\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"230\" y=\"-77.5243\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge8\"><title>2-&gt;3</title>\n",
"<path d=\"M210.836,-51.7654C241.387,-39.2671 310.501,-15.5008 367.74,-28.7243 408.217,-38.0754 417.568,-46.1003 451.74,-69.7243 459.626,-75.1757 467.489,-81.8257 474.594,-88.4177\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"479.868,-93.4266 472.623,-90.89 477.33,-91.0163 474.793,-88.606 474.793,-88.606 474.793,-88.606 477.33,-91.0163 476.962,-86.3219 479.868,-93.4266 479.868,-93.4266\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"320.87\" y=\"-32.5243\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge9\"><title>2-&gt;5</title>\n",
"<path d=\"M205.362,-44.6743C211.612,-37.3566 220.243,-29.0525 230,-24.7243 320.177,15.2778 353.812,-2.80154 451.74,-14.7243 516.239,-22.5771 589.349,-44.0187 629.979,-57.0979\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"636.696,-59.2796 629.066,-60.1132 633.368,-58.1984 630.039,-57.1172 630.039,-57.1172 630.039,-57.1172 633.368,-58.1984 631.012,-54.1213 636.696,-59.2796 636.696,-59.2796\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"387.74\" y=\"-18.5243\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
}
],
"prompt_number": 9
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note how the two weak automata (i.e., stricly weak and terminal) are now using a B\u00fcchi acceptance condition (because that is sufficient for weak automata) while the strong automaton inherited the original acceptance condition.\n",
"\n",
"When extracting multiple strengths and one of the strength is **strong**, we preserve the original acceptance. For instance extracting **strong** and **terminal** gives the following automaton, where only **stricly weak** SCCs have become rejecting."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"spot.decompose_strength(aut, \"st\").show(\".as\")"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 10,
"svg": [
"<svg height=\"360pt\" viewBox=\"0.00 0.00 570.69 360.00\" width=\"571pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(0.593081 0.593081) rotate(0) translate(4 603)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-603 958.245,-603 958.245,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"360.622\" y=\"-584.8\">(Fin(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"388.622\" y=\"-584.8\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"404.622\" y=\"-584.8\">) &amp; Inf(</text>\n",
"<text fill=\"#f17cb0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"447.622\" y=\"-584.8\">\u2776</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"463.622\" y=\"-584.8\">)) | (Fin(</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"510.622\" y=\"-584.8\">\u2777</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"526.622\" y=\"-584.8\">) &amp; Inf(</text>\n",
"<text fill=\"#b276b2\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"569.622\" y=\"-584.8\">\u2778</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"585.622\" y=\"-584.8\">))</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"862.362,-266 862.362,-383 946.245,-383 946.245,-266 862.362,-266\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust2\"><title>cluster_1</title>\n",
"<polygon fill=\"none\" points=\"779.362,-212 779.362,-297 831.362,-297 831.362,-212 779.362,-212\" stroke=\"red\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust3\"><title>cluster_2</title>\n",
"<polygon fill=\"none\" points=\"779.362,-8 779.362,-93 831.362,-93 831.362,-8 779.362,-8\" stroke=\"red\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust4\"><title>cluster_3</title>\n",
"<polygon fill=\"none\" points=\"306,-200 306,-368 697.362,-368 697.362,-200 306,-200\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust5\"><title>cluster_4</title>\n",
"<polygon fill=\"none\" points=\"168,-375 168,-427 220,-427 220,-375 168,-375\" stroke=\"black\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust6\"><title>cluster_5</title>\n",
"<polygon fill=\"none\" points=\"168,-130 168,-182 220,-182 220,-130 168,-130\" stroke=\"black\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust7\"><title>cluster_6</title>\n",
"<polygon fill=\"none\" points=\"30,-266 30,-318 82,-318 82,-266 30,-266\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\"><title>0</title>\n",
"<ellipse cx=\"56\" cy=\"-292\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-288.3\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;0</title>\n",
"<path d=\"M1.15491,-292C2.79388,-292 17.1543,-292 30.6317,-292\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.9419,-292 30.9419,-295.15 34.4419,-292 30.9419,-292 30.9419,-292 30.9419,-292 34.4419,-292 30.9418,-288.85 37.9419,-292 37.9419,-292\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g class=\"node\" id=\"node3\"><title>4</title>\n",
"<ellipse cx=\"904.304\" cy=\"-308\" fill=\"#ffffaa\" rx=\"33.8824\" ry=\"33.8824\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"899.804\" y=\"-311.8\">4</text>\n",
"<text fill=\"#f17cb0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"888.304\" y=\"-297.8\">\u2776</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"904.304\" y=\"-297.8\">\u2777</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>0-&gt;4</title>\n",
"<path d=\"M57.667,-310.068C60.9454,-370.381 80.2273,-561 193,-561 193,-561 193,-561 806.362,-561 835.275,-561 838.164,-540.186 852.362,-515 882.062,-462.32 894.602,-392.555 899.788,-348.978\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"900.587,-341.951 902.925,-349.262 900.191,-345.429 899.796,-348.906 899.796,-348.906 899.796,-348.906 900.191,-345.429 896.666,-348.55 900.587,-341.951 900.587,-341.951\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"500.181\" y=\"-564.8\">c</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g class=\"node\" id=\"node7\"><title>3</title>\n",
"<ellipse cx=\"503.681\" cy=\"-293\" fill=\"#ffffaa\" rx=\"33.8824\" ry=\"33.8824\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"499.181\" y=\"-296.8\">3</text>\n",
"<text fill=\"#f17cb0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"487.681\" y=\"-282.8\">\u2776</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"503.681\" y=\"-282.8\">\u2777</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>0-&gt;3</title>\n",
"<path d=\"M73.3993,-285.969C103.776,-275.155 171.076,-252.862 230,-245 314.358,-233.745 412.459,-261.017 464.944,-278.909\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"471.732,-281.258 464.087,-281.946 468.425,-280.113 465.117,-278.969 465.117,-278.969 465.117,-278.969 468.425,-280.113 466.147,-275.992 471.732,-281.258 471.732,-281.258\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"243\" y=\"-248.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node9\"><title>1</title>\n",
"<ellipse cx=\"194\" cy=\"-401\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"194\" y=\"-397.3\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;1</title>\n",
"<path d=\"M70.5374,-302.85C94.8747,-322.355 146.073,-363.389 173.942,-385.726\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"179.517,-390.194 172.085,-388.274 176.786,-388.005 174.055,-385.816 174.055,-385.816 174.055,-385.816 176.786,-388.005 176.025,-383.358 179.517,-390.194 179.517,-390.194\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-375.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node10\"><title>2</title>\n",
"<ellipse cx=\"194\" cy=\"-156\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"194\" y=\"-152.3\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>0-&gt;2</title>\n",
"<path d=\"M61.7076,-274.613C66.9079,-258.007 76.6402,-233.054 92,-216 113.894,-191.69 148.005,-174.288 170.427,-164.682\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"176.984,-161.951 171.732,-167.55 173.752,-163.297 170.521,-164.642 170.521,-164.642 170.521,-164.642 173.752,-163.297 169.31,-161.734 176.984,-161.951 176.984,-161.951\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"94\" y=\"-219.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge20\"><title>4-&gt;4</title>\n",
"<path d=\"M893.804,-340.463C893.804,-351.284 897.304,-359.941 904.304,-359.941 909.663,-359.941 912.971,-354.867 914.227,-347.632\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"914.804,-340.463 917.382,-347.693 914.523,-343.952 914.242,-347.441 914.242,-347.441 914.242,-347.441 914.523,-343.952 911.102,-347.188 914.804,-340.463 914.804,-340.463\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"904.304\" y=\"-363.741\">1</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g class=\"node\" id=\"node4\"><title>7</title>\n",
"<ellipse cx=\"805.362\" cy=\"-238\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"805.362\" y=\"-234.3\">7</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge32\"><title>7-&gt;4</title>\n",
"<path d=\"M820.666,-248.329C833.613,-257.677 853.176,-271.803 870.018,-283.965\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"876.082,-288.344 868.563,-286.8 873.245,-286.295 870.407,-284.246 870.407,-284.246 870.407,-284.246 873.245,-286.295 872.251,-281.692 876.082,-288.344 876.082,-288.344\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"841.362\" y=\"-274.8\">!a</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge31\"><title>7-&gt;7</title>\n",
"<path d=\"M798.331,-254.664C796.769,-264.625 799.112,-274 805.362,-274 810.05,-274 812.54,-268.727 812.833,-261.888\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"812.394,-254.664 815.963,-261.46 812.606,-258.158 812.819,-261.651 812.819,-261.651 812.819,-261.651 812.606,-258.158 809.675,-261.842 812.394,-254.664 812.394,-254.664\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"801.862\" y=\"-277.8\">a</text>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g class=\"node\" id=\"node5\"><title>8</title>\n",
"<ellipse cx=\"805.362\" cy=\"-34\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"805.362\" y=\"-30.3\">8</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge34\"><title>8-&gt;4</title>\n",
"<path d=\"M819.681,-44.9366C830.138,-54.2488 844.244,-68.5454 852.362,-84 883.259,-142.817 895.516,-219.939 900.309,-266.637\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"901.016,-273.863 897.199,-267.203 900.675,-270.38 900.334,-266.896 900.334,-266.896 900.334,-266.896 900.675,-270.38 903.469,-266.59 901.016,-273.863 901.016,-273.863\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"841.362\" y=\"-87.8\">!a</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge33\"><title>8-&gt;7</title>\n",
"<path d=\"M794.478,-48.5917C776.969,-73.0775 743.258,-124.665 730.862,-174.5 729.253,-180.97 727.685,-183.639 730.862,-189.5 741.513,-209.143 763.946,-222.08 781.427,-229.614\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"788.087,-232.332 780.416,-232.604 784.847,-231.009 781.606,-229.687 781.606,-229.687 781.606,-229.687 784.847,-231.009 782.796,-226.771 788.087,-232.332 788.087,-232.332\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"719.862\" y=\"-178.3\">a &amp; !b</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;8 -->\n",
"<g class=\"edge\" id=\"edge35\"><title>8-&gt;8</title>\n",
"<path d=\"M798.331,-50.6641C796.769,-60.625 799.112,-70 805.362,-70 810.05,-70 812.54,-64.7266 812.833,-57.8876\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"812.394,-50.6641 815.963,-57.4598 812.606,-54.1576 812.819,-57.6511 812.819,-57.6511 812.819,-57.6511 812.606,-54.1576 809.675,-57.8425 812.394,-50.6641 812.394,-50.6641\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"788.362\" y=\"-73.8\">a &amp; b</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g class=\"node\" id=\"node6\"><title>5</title>\n",
"<ellipse cx=\"340.87\" cy=\"-300\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"336.37\" y=\"-303.8\">5</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"332.87\" y=\"-288.8\">\u2777</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge24\"><title>5-&gt;4</title>\n",
"<path d=\"M355.965,-322.236C380.826,-358.408 436.179,-426 502.681,-426 502.681,-426 502.681,-426 806.362,-426 848.245,-426 875.351,-381.069 889.969,-346.658\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"892.727,-339.932 892.986,-347.604 891.399,-343.171 890.071,-346.409 890.071,-346.409 890.071,-346.409 891.399,-343.171 887.157,-345.214 892.727,-339.932 892.727,-339.932\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"644.492\" y=\"-429.8\">!a &amp; c</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge22\"><title>5-&gt;7</title>\n",
"<path d=\"M364.485,-313.764C371.27,-317.795 378.763,-322.151 385.74,-326 422.464,-346.257 428.968,-359.171 469.74,-369 499.07,-376.071 508.014,-374.793 537.622,-369 637.518,-349.454 741.871,-282.226 784.476,-252.422\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"790.306,-248.307 786.404,-254.917 787.446,-250.325 784.587,-252.344 784.587,-252.344 784.587,-252.344 787.446,-250.325 782.77,-249.77 790.306,-248.307 790.306,-248.307\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"570.622\" y=\"-368.8\">a &amp; c</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge21\"><title>5-&gt;5</title>\n",
"<path d=\"M327.041,-323.087C325.128,-334.6 329.737,-344.87 340.87,-344.87 349.568,-344.87 354.284,-338.602 355.018,-330.369\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"354.699,-323.087 358.153,-329.942 354.852,-326.583 355.006,-330.08 355.006,-330.08 355.006,-330.08 354.852,-326.583 351.859,-330.218 354.699,-323.087 354.699,-323.087\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"322.87\" y=\"-348.67\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge23\"><title>5-&gt;3</title>\n",
"<path d=\"M366.143,-290.787C372.433,-288.807 379.262,-287.009 385.74,-286 411.218,-282.033 440.142,-283.712 462.849,-286.418\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"469.991,-287.326 462.649,-289.568 466.519,-286.885 463.047,-286.443 463.047,-286.443 463.047,-286.443 466.519,-286.885 463.445,-283.318 469.991,-287.326 469.991,-287.326\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"398.74\" y=\"-289.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge18\"><title>3-&gt;4</title>\n",
"<path d=\"M536.205,-303.058C542.57,-304.693 549.261,-306.132 555.622,-307 665.904,-322.04 797.699,-315.933 862.8,-311.339\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"870.024,-310.816 863.27,-314.463 866.533,-311.069 863.042,-311.322 863.042,-311.322 863.042,-311.322 866.533,-311.069 862.815,-308.18 870.024,-310.816 870.024,-310.816\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"734.862\" y=\"-320.8\">c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge16\"><title>3-&gt;5</title>\n",
"<path d=\"M470.816,-301.696C464.539,-303.071 457.968,-304.276 451.74,-305 422.603,-308.386 415.026,-306.664 385.74,-305 382.196,-304.799 378.498,-304.507 374.818,-304.163\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"367.81,-303.45 375.093,-301.025 371.292,-303.804 374.774,-304.159 374.774,-304.159 374.774,-304.159 371.292,-303.804 374.455,-307.292 367.81,-303.45 367.81,-303.45\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"385.74\" y=\"-310.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge17\"><title>3-&gt;3</title>\n",
"<path d=\"M488.366,-323.41C487.686,-335.168 492.791,-344.941 503.681,-344.941 512.19,-344.941 517.167,-338.976 518.612,-330.76\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"518.996,-323.41 521.777,-330.565 518.814,-326.906 518.631,-330.401 518.631,-330.401 518.631,-330.401 518.814,-326.906 515.485,-330.237 518.996,-323.41 518.996,-323.41\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"483.681\" y=\"-348.741\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g class=\"node\" id=\"node8\"><title>6</title>\n",
"<ellipse cx=\"662.492\" cy=\"-235\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"657.992\" y=\"-238.8\">6</text>\n",
"<text fill=\"#b276b2\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"654.492\" y=\"-223.8\">\u2778</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge19\"><title>3-&gt;6</title>\n",
"<path d=\"M537.601,-290.418C560.844,-287.627 592.242,-281.86 617.622,-270 624.243,-266.906 630.749,-262.621 636.641,-258.108\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"642.308,-253.555 638.824,-260.395 639.58,-255.747 636.851,-257.939 636.851,-257.939 636.851,-257.939 639.58,-255.747 634.878,-255.484 642.308,-253.555 642.308,-253.555\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"555.622\" y=\"-291.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge28\"><title>6-&gt;4</title>\n",
"<path d=\"M673.849,-210.452C681.063,-196.743 692.138,-180.878 707.362,-173 731.836,-160.337 742.142,-168.718 769.362,-173 797.965,-177.499 808.523,-175.204 831.362,-193 857.027,-212.997 875.943,-244.903 887.92,-270.041\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"890.964,-276.604 885.161,-271.579 889.492,-273.429 888.019,-270.254 888.019,-270.254 888.019,-270.254 889.492,-273.429 890.876,-268.928 890.964,-276.604 890.964,-276.604\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"787.362\" y=\"-196.8\">!a &amp; c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge26\"><title>6-&gt;7</title>\n",
"<path d=\"M689.659,-235.557C715.585,-236.109 754.968,-236.948 780.179,-237.485\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"787.205,-237.635 780.139,-240.635 783.705,-237.56 780.206,-237.485 780.206,-237.485 780.206,-237.485 783.705,-237.56 780.273,-234.336 787.205,-237.635 787.205,-237.635\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"707.362\" y=\"-241.8\">a &amp; !b &amp; c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;8 -->\n",
"<g class=\"edge\" id=\"edge30\"><title>6-&gt;8</title>\n",
"<path d=\"M671.019,-209.421C678.258,-187.248 690.576,-154.9 707.362,-130 729.275,-97.4969 763.378,-66.9095 784.763,-49.3371\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"790.437,-44.7351 786.985,-51.5912 787.718,-46.9399 785,-49.1447 785,-49.1447 785,-49.1447 787.718,-46.9399 783.016,-46.6983 790.437,-44.7351 790.437,-44.7351\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"709.362\" y=\"-133.8\">a &amp; b &amp; c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge25\"><title>6-&gt;5</title>\n",
"<path d=\"M635.88,-231.089C598.645,-226.276 527.686,-220.402 469.74,-235 433.008,-244.254 394.782,-265.459 369.806,-281.146\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"363.751,-285.004 367.962,-278.586 366.703,-283.123 369.654,-281.243 369.654,-281.243 369.654,-281.243 366.703,-283.123 371.347,-283.899 363.751,-285.004 363.751,-285.004\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"470.681\" y=\"-238.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge27\"><title>6-&gt;3</title>\n",
"<path d=\"M635.608,-235.094C613.483,-236.05 581.255,-239.561 555.622,-251 547.935,-254.43 540.467,-259.349 533.724,-264.619\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"528.241,-269.105 531.665,-262.234 530.95,-266.888 533.659,-264.672 533.659,-264.672 533.659,-264.672 530.95,-266.888 535.654,-267.11 528.241,-269.105 528.241,-269.105\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"566.622\" y=\"-254.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge29\"><title>6-&gt;6</title>\n",
"<path d=\"M648.956,-258.546C647.285,-269.872 651.797,-279.87 662.492,-279.87 670.848,-279.87 675.43,-273.768 676.238,-265.698\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"676.029,-258.546 679.382,-265.451 676.131,-262.045 676.233,-265.543 676.233,-265.543 676.233,-265.543 676.131,-262.045 673.085,-265.636 676.029,-258.546 676.029,-258.546\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"631.492\" y=\"-283.67\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge9\"><title>1-&gt;4</title>\n",
"<path d=\"M204.181,-415.904C224.494,-446.805 276.501,-515 339.87,-515 339.87,-515 339.87,-515 806.362,-515 878.815,-515 897.231,-409.71 901.835,-349.314\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"902.33,-342.182 904.987,-349.383 902.088,-345.673 901.845,-349.165 901.845,-349.165 901.845,-349.165 902.088,-345.673 898.702,-348.947 902.33,-342.182 902.33,-342.182\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"568.622\" y=\"-518.8\">!a &amp; c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge7\"><title>1-&gt;7</title>\n",
"<path d=\"M210.607,-408.187C275.248,-436.821 526.581,-536.867 697.362,-445 766.013,-408.072 791.939,-309.458 800.563,-262.942\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"801.803,-255.941 803.684,-263.383 801.192,-259.387 800.582,-262.834 800.582,-262.834 800.582,-262.834 801.192,-259.387 797.48,-262.285 801.803,-255.941 801.803,-255.941\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"487.681\" y=\"-486.8\">a &amp; c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>1-&gt;5</title>\n",
"<path d=\"M208.016,-389.626C214.488,-384.125 222.509,-377.531 230,-372 256.832,-352.188 288.864,-331.514 311.399,-317.429\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"317.49,-313.637 313.212,-320.011 314.519,-315.487 311.548,-317.337 311.548,-317.337 311.548,-317.337 314.519,-315.487 309.883,-314.662 317.49,-313.637 317.49,-313.637\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"245\" y=\"-375.8\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge8\"><title>1-&gt;3</title>\n",
"<path d=\"M212.249,-399.184C232.432,-396.927 266.805,-392.669 296,-387 328.27,-380.734 336.969,-380.564 367.74,-369 407,-354.246 415.426,-346.984 451.74,-326 457.368,-322.748 463.242,-319.147 468.916,-315.554\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"474.974,-311.675 470.777,-318.103 472.026,-313.563 469.078,-315.45 469.078,-315.45 469.078,-315.45 472.026,-313.563 467.38,-312.797 474.974,-311.675 474.974,-311.675\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"320.87\" y=\"-388.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge13\"><title>2-&gt;4</title>\n",
"<path d=\"M210.943,-149.342C280.632,-121.292 564.169,-18.1532 769.362,-106 836.972,-134.945 874.696,-218.523 891.828,-268.643\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"894.11,-275.484 888.907,-269.841 893.002,-272.164 891.895,-268.844 891.895,-268.844 891.895,-268.844 893.002,-272.164 894.883,-267.847 894.11,-275.484 894.11,-275.484\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"568.622\" y=\"-76.8\">!a &amp; c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge11\"><title>2-&gt;7</title>\n",
"<path d=\"M212.081,-154.828C217.778,-154.49 224.16,-154.167 230,-154 259.321,-153.163 266.676,-153.272 296,-154 475.302,-158.45 524.982,-146.461 697.362,-196 727.476,-204.654 760.9,-218.491 782.246,-227.899\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"788.733,-230.785 781.057,-230.817 785.535,-229.362 782.338,-227.939 782.338,-227.939 782.338,-227.939 785.535,-229.362 783.618,-225.061 788.733,-230.785 788.733,-230.785\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"472.681\" y=\"-165.8\">a &amp; !b &amp; c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;8 -->\n",
"<g class=\"edge\" id=\"edge15\"><title>2-&gt;8</title>\n",
"<path d=\"M197.174,-138.121C200.594,-117.78 209.153,-84.9384 230,-66 267.555,-31.8837 289.132,-35 339.87,-35 339.87,-35 339.87,-35 663.492,-35 704.353,-35 751.879,-34.5741 779.967,-34.2782\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"787.013,-34.2024 780.048,-37.4276 783.513,-34.2401 780.014,-34.2778 780.014,-34.2778 780.014,-34.2778 783.513,-34.2401 779.98,-31.128 787.013,-34.2024 787.013,-34.2024\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"474.681\" y=\"-38.8\">a &amp; b &amp; c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge10\"><title>2-&gt;5</title>\n",
"<path d=\"M195.981,-174.257C198.235,-198.072 205.65,-239.571 230,-264 250.378,-284.444 282.531,-293.279 306.8,-297.097\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"313.738,-298.087 306.363,-300.216 310.273,-297.593 306.808,-297.098 306.808,-297.098 306.808,-297.098 310.273,-297.593 307.253,-293.98 313.738,-298.087 313.738,-298.087\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"230\" y=\"-299.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge12\"><title>2-&gt;3</title>\n",
"<path d=\"M210.89,-162.793C216.831,-165.217 223.673,-167.872 230,-170 326.878,-202.587 366.672,-174.337 451.74,-231 462.543,-238.196 461.551,-243.929 469.74,-254 471.865,-256.613 474.085,-259.31 476.325,-262.007\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"480.926,-267.52 474.022,-264.165 478.683,-264.833 476.44,-262.146 476.44,-262.146 476.44,-262.146 478.683,-264.833 478.859,-260.128 480.926,-267.52 480.926,-267.52\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"320.87\" y=\"-198.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge14\"><title>2-&gt;6</title>\n",
"<path d=\"M212.241,-156.813C253.736,-158.956 362.356,-165.685 451.74,-181 526.593,-193.825 544.333,-202.095 617.622,-222 621.551,-223.067 625.665,-224.228 629.733,-225.402\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"636.493,-227.377 628.891,-228.438 633.134,-226.396 629.774,-225.414 629.774,-225.414 629.774,-225.414 633.134,-226.396 630.657,-222.391 636.493,-227.377 636.493,-227.377\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"387.74\" y=\"-184.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
}
],
"prompt_number": 10
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The weak automata seem to be good candidates for further simplification. Let's add a call to `postprocess()` to out decomposition loop, trying to preserve the determinism and state-based acceptance of the original automaton."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"for (name, opt) in (('terminal', 't'), ('strictly weak', 'w'), ('strong', 's')):\n",
" a = spot.decompose_strength(aut, opt).postprocess('deterministic', 'SBAcc')\n",
" a.set_name(name)\n",
" display(a.show('.asn'))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"svg": [
"<svg height=\"166pt\" viewBox=\"0.00 0.00 405.00 166.00\" width=\"405pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 162)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-162 401,-162 401,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"172.5\" y=\"-143.8\">terminal</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"177.5\" y=\"-129.8\">Inf(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"199.5\" y=\"-129.8\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"215.5\" y=\"-129.8\">)</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"329,-8 329,-101 389,-101 389,-8 329,-8\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust2\"><title>cluster_1</title>\n",
"<polygon fill=\"none\" points=\"246,-12 246,-97 298,-97 298,-12 246,-12\" stroke=\"red\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust3\"><title>cluster_2</title>\n",
"<polygon fill=\"none\" points=\"30,-10 30,-97 194,-97 194,-10 30,-10\" stroke=\"red\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node2\"><title>2</title>\n",
"<ellipse cx=\"56\" cy=\"-36\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-32.3\">2</text>\n",
"</g>\n",
"<!-- I&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;2</title>\n",
"<path d=\"M1.15491,-36C2.79388,-36 17.1543,-36 30.6317,-36\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.9419,-36 30.9419,-39.1501 34.4419,-36 30.9419,-36.0001 30.9419,-36.0001 30.9419,-36.0001 34.4419,-36 30.9418,-32.8501 37.9419,-36 37.9419,-36\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>2-&gt;2</title>\n",
"<path d=\"M49.6208,-53.0373C48.3189,-62.8579 50.4453,-72 56,-72 60.166,-72 62.4036,-66.8576 62.7128,-60.1433\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"62.3792,-53.0373 65.8541,-59.8818 62.5434,-56.5335 62.7076,-60.0296 62.7076,-60.0296 62.7076,-60.0296 62.5434,-56.5335 59.561,-60.1774 62.3792,-53.0373 62.3792,-53.0373\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"36\" y=\"-75.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node3\"><title>0</title>\n",
"<ellipse cx=\"359\" cy=\"-38\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<ellipse cx=\"359\" cy=\"-38\" fill=\"none\" rx=\"22\" ry=\"22\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"359\" y=\"-34.3\">0</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>2-&gt;0</title>\n",
"<path d=\"M73.3004,-30.2748C112.507,-17.3288 214.985,11.5971 298,-8 310.484,-10.9471 323.332,-16.9114 333.92,-22.7512\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"340.197,-26.3431 332.557,-25.6004 337.159,-24.6047 334.122,-22.8664 334.122,-22.8664 334.122,-22.8664 337.159,-24.6047 335.686,-20.1323 340.197,-26.3431 340.197,-26.3431\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"216.5\" y=\"-6.8\">c</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g class=\"node\" id=\"node5\"><title>3</title>\n",
"<ellipse cx=\"168\" cy=\"-38\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"168\" y=\"-34.3\">3</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge7\"><title>2-&gt;3</title>\n",
"<path d=\"M74.2788,-36.1557C89.4809,-36.3106 112.211,-36.5854 132,-37 135.464,-37.0726 139.121,-37.1624 142.713,-37.2582\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"149.911,-37.4597 142.826,-40.4125 146.413,-37.3617 142.914,-37.2638 142.914,-37.2638 142.914,-37.2638 146.413,-37.3617 143.002,-34.115 149.911,-37.4597 149.911,-37.4597\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"94\" y=\"-40.8\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;0</title>\n",
"<path d=\"M350.994,-58.5808C349.886,-68.8447 352.555,-78 359,-78 363.834,-78 366.544,-72.8502 367.129,-65.9451\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"367.006,-58.5808 370.273,-65.5273 367.065,-62.0803 367.123,-65.5798 367.123,-65.5798 367.123,-65.5798 367.065,-62.0803 363.973,-65.6324 367.006,-58.5808 367.006,-58.5808\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"359\" y=\"-81.8\">1</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node4\"><title>1</title>\n",
"<ellipse cx=\"272\" cy=\"-38\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"272\" y=\"-34.3\">1</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>1-&gt;0</title>\n",
"<path d=\"M290.201,-38C301.58,-38 316.762,-38 329.875,-38\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"336.91,-38 329.91,-41.1501 333.41,-38 329.91,-38.0001 329.91,-38.0001 329.91,-38.0001 333.41,-38 329.91,-34.8501 336.91,-38 336.91,-38\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"308\" y=\"-41.8\">!a</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>1-&gt;1</title>\n",
"<path d=\"M264.969,-54.6641C263.406,-64.625 265.75,-74 272,-74 276.688,-74 279.178,-68.7266 279.471,-61.8876\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"279.031,-54.6641 282.601,-61.4598 279.244,-58.1576 279.456,-61.6511 279.456,-61.6511 279.456,-61.6511 279.244,-58.1576 276.312,-61.8425 279.031,-54.6641 279.031,-54.6641\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"268.5\" y=\"-77.8\">a</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge10\"><title>3-&gt;2</title>\n",
"<path d=\"M151.358,-45.733C145.443,-48.2587 138.555,-50.7376 132,-52 114.543,-55.3619 109.371,-55.7822 92,-52 87.5445,-51.0299 82.977,-49.4398 78.6739,-47.6293\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"72.1836,-44.6602 79.8596,-44.7078 75.3664,-46.1162 78.5492,-47.5723 78.5492,-47.5723 78.5492,-47.5723 75.3664,-46.1162 77.2387,-50.4368 72.1836,-44.6602 72.1836,-44.6602\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-58.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge8\"><title>3-&gt;0</title>\n",
"<path d=\"M180.109,-51.4827C193.757,-66.8742 218.509,-91.1866 246,-101 267.766,-108.77 276.758,-110.104 298,-101 316.343,-93.1388 331.734,-76.6106 342.334,-62.4558\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"346.579,-56.5669 345.041,-64.0875 344.532,-59.4063 342.486,-62.2457 342.486,-62.2457 342.486,-62.2457 344.532,-59.4063 339.93,-60.4039 346.579,-56.5669 346.579,-56.5669\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"254\" y=\"-110.8\">!a &amp; c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge9\"><title>3-&gt;1</title>\n",
"<path d=\"M186.303,-38C202.962,-38 228.303,-38 246.927,-38\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"253.953,-38 246.953,-41.1501 250.453,-38 246.953,-38.0001 246.953,-38.0001 246.953,-38.0001 250.453,-38 246.953,-34.8501 253.953,-38 253.953,-38\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"204\" y=\"-41.8\">a &amp; c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge11\"><title>3-&gt;3</title>\n",
"<path d=\"M159.021,-53.916C156.679,-64.1504 159.672,-74 168,-74 174.376,-74 177.625,-68.2263 177.746,-60.9268\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"176.979,-53.916 180.872,-60.5315 177.36,-57.3952 177.741,-60.8744 177.741,-60.8744 177.741,-60.8744 177.36,-57.3952 174.61,-61.2174 176.979,-53.916 176.979,-53.916\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"150\" y=\"-77.8\">a &amp; !c</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
},
{
"metadata": {},
"output_type": "display_data",
"svg": [
"<svg height=\"348pt\" viewBox=\"0.00 0.00 408.00 348.00\" width=\"408pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 344)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-344 404,-344 404,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"160\" y=\"-325.8\">strictly weak</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"179\" y=\"-311.8\">Inf(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"201\" y=\"-311.8\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"217\" y=\"-311.8\">)</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"332,-8 332,-101 392,-101 392,-8 332,-8\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust2\"><title>cluster_1</title>\n",
"<polygon fill=\"none\" points=\"30,-109 30,-296 388,-296 388,-109 30,-109\" stroke=\"red\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node2\"><title>2</title>\n",
"<ellipse cx=\"56\" cy=\"-208\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-204.3\">2</text>\n",
"</g>\n",
"<!-- I&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;2</title>\n",
"<path d=\"M1.15491,-208C2.79388,-208 17.1543,-208 30.6317,-208\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.9419,-208 30.9419,-211.15 34.4419,-208 30.9419,-208 30.9419,-208 30.9419,-208 34.4419,-208 30.9418,-204.85 37.9419,-208 37.9419,-208\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>2-&gt;2</title>\n",
"<path d=\"M49.6208,-225.037C48.3189,-234.858 50.4453,-244 56,-244 60.166,-244 62.4036,-238.858 62.7128,-232.143\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"62.3792,-225.037 65.8541,-231.882 62.5434,-228.533 62.7076,-232.03 62.7076,-232.03 62.7076,-232.03 62.5434,-228.533 59.561,-232.177 62.3792,-225.037 62.3792,-225.037\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"36\" y=\"-247.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node4\"><title>1</title>\n",
"<ellipse cx=\"362\" cy=\"-222\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"362\" y=\"-218.3\">1</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>2-&gt;1</title>\n",
"<path d=\"M73.5774,-213.106C79.3504,-214.659 85.9075,-216.172 92,-217 115.794,-220.235 274.938,-221.499 336.629,-221.871\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"343.654,-221.912 336.635,-225.021 340.154,-221.892 336.654,-221.871 336.654,-221.871 336.654,-221.871 340.154,-221.892 336.672,-218.721 343.654,-221.912 343.654,-221.912\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"172\" y=\"-224.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g class=\"node\" id=\"node5\"><title>3</title>\n",
"<ellipse cx=\"205\" cy=\"-135\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"205\" y=\"-131.3\">3</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge7\"><title>2-&gt;3</title>\n",
"<path d=\"M64.0604,-191.651C69.8835,-180.153 79.2587,-165.378 92,-157 118.559,-139.537 155.808,-135.32 179.922,-134.607\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"186.958,-134.487 180.013,-137.756 183.459,-134.547 179.959,-134.606 179.959,-134.606 179.959,-134.606 183.459,-134.547 179.905,-131.457 186.958,-134.487 186.958,-134.487\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-160.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node3\"><title>0</title>\n",
"<ellipse cx=\"362\" cy=\"-38\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<ellipse cx=\"362\" cy=\"-38\" fill=\"none\" rx=\"22\" ry=\"22\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"362\" y=\"-34.3\">0</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;0</title>\n",
"<path d=\"M349.453,-56.1003C346.427,-67.3213 350.609,-78 362,-78 370.899,-78 375.398,-71.4822 375.498,-63.2801\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"374.547,-56.1003 378.589,-62.6261 375.007,-59.57 375.467,-63.0397 375.467,-63.0397 375.467,-63.0397 375.007,-59.57 372.344,-63.4533 374.547,-56.1003 374.547,-56.1003\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"345\" y=\"-81.8\">a &amp; b</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>1-&gt;2</title>\n",
"<path d=\"M344.328,-225.777C311.412,-232.77 235.737,-246.535 172,-241 136.039,-237.877 126.086,-238.877 92,-227 87.2624,-225.349 82.3986,-223.108 77.8606,-220.743\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"71.4979,-217.245 79.1496,-217.857 74.565,-218.931 77.632,-220.617 77.632,-220.617 77.632,-220.617 74.565,-218.931 76.1143,-223.378 71.4979,-217.245 71.4979,-217.245\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"185\" y=\"-245.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>1-&gt;1</title>\n",
"<path d=\"M350.244,-236.042C345.847,-246.913 349.766,-258 362,-258 371.558,-258 376.041,-251.233 375.448,-243.089\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"373.756,-236.042 378.453,-242.113 374.573,-239.445 375.391,-242.848 375.391,-242.848 375.391,-242.848 374.573,-239.445 372.328,-243.584 373.756,-236.042 373.756,-236.042\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"344\" y=\"-261.8\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge10\"><title>3-&gt;2</title>\n",
"<path d=\"M190.695,-146.472C181.002,-154.411 167.295,-164.802 154,-172 130.12,-184.929 100.617,-195.142 80.4603,-201.338\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"73.7447,-203.36 79.5393,-198.326 77.0961,-202.351 80.4475,-201.342 80.4475,-201.342 80.4475,-201.342 77.0961,-202.351 81.3557,-204.358 73.7447,-203.36 73.7447,-203.36\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"103\" y=\"-201.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge8\"><title>3-&gt;0</title>\n",
"<path d=\"M220.582,-125.874C247.288,-109.162 304.294,-73.4871 336.862,-53.1057\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"343.034,-49.2434 338.771,-55.6271 340.067,-51.1001 337.1,-52.9569 337.1,-52.9569 337.1,-52.9569 340.067,-51.1001 335.429,-50.2867 343.034,-49.2434 343.034,-49.2434\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"260\" y=\"-107.8\">a &amp; b &amp; c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge9\"><title>3-&gt;1</title>\n",
"<path d=\"M221.144,-143.5C248.88,-159.068 307.895,-192.193 339.675,-210.031\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"346.022,-213.593 338.376,-212.914 342.97,-211.88 339.918,-210.167 339.918,-210.167 339.918,-210.167 342.97,-211.88 341.46,-207.42 346.022,-213.593 346.022,-213.593\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"256\" y=\"-202.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge11\"><title>3-&gt;3</title>\n",
"<path d=\"M192.162,-147.918C186.307,-159.135 190.586,-171 205,-171 216.486,-171 221.537,-163.465 220.151,-154.729\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"217.838,-147.918 223.072,-153.533 218.963,-151.232 220.089,-154.546 220.089,-154.546 220.089,-154.546 218.963,-151.232 217.107,-155.56 217.838,-147.918 217.838,-147.918\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"174\" y=\"-174.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
},
{
"metadata": {},
"output_type": "display_data",
"svg": [
"<svg height=\"272pt\" viewBox=\"0.00 0.00 707.62 272.05\" width=\"708pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 268.052)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-268.052 703.622,-268.052 703.622,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"329.311\" y=\"-249.852\">strong</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"233.311\" y=\"-235.852\">(Fin(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"261.311\" y=\"-235.852\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"277.311\" y=\"-235.852\">) &amp; Inf(</text>\n",
"<text fill=\"#f17cb0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"320.311\" y=\"-235.852\">\u2776</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"336.311\" y=\"-235.852\">)) | (Fin(</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"383.311\" y=\"-235.852\">\u2777</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"399.311\" y=\"-235.852\">) &amp; Inf(</text>\n",
"<text fill=\"#b276b2\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"442.311\" y=\"-235.852\">\u2778</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"458.311\" y=\"-235.852\">))</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"284,-15.0523 284,-220.052 691.622,-220.052 691.622,-15.0523 284,-15.0523\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust2\"><title>cluster_1</title>\n",
"<polygon fill=\"none\" points=\"170,-142.052 170,-194.052 222,-194.052 222,-142.052 170,-142.052\" stroke=\"black\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust3\"><title>cluster_2</title>\n",
"<polygon fill=\"none\" points=\"170,-29.0523 170,-81.0523 222,-81.0523 222,-29.0523 170,-29.0523\" stroke=\"black\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust4\"><title>cluster_3</title>\n",
"<polygon fill=\"none\" points=\"30,-91.0523 30,-143.052 82,-143.052 82,-91.0523 30,-91.0523\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\"><title>0</title>\n",
"<ellipse cx=\"56\" cy=\"-117.052\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-113.352\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;0</title>\n",
"<path d=\"M1.15491,-117.052C2.79388,-117.052 17.1543,-117.052 30.6317,-117.052\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.9419,-117.052 30.9419,-120.202 34.4419,-117.052 30.9419,-117.052 30.9419,-117.052 30.9419,-117.052 34.4419,-117.052 30.9418,-113.902 37.9419,-117.052 37.9419,-117.052\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g class=\"node\" id=\"node3\"><title>3</title>\n",
"<ellipse cx=\"325.941\" cy=\"-121.052\" fill=\"#ffffaa\" rx=\"33.8824\" ry=\"33.8824\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"321.441\" y=\"-124.852\">3</text>\n",
"<text fill=\"#f17cb0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"309.941\" y=\"-110.852\">\u2776</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"325.941\" y=\"-110.852\">\u2777</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>0-&gt;3</title>\n",
"<path d=\"M74.1685,-117.309C116.234,-117.937 225.34,-119.565 284.828,-120.453\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"291.829,-120.558 284.783,-123.603 288.33,-120.506 284.83,-120.453 284.83,-120.453 284.83,-120.453 288.33,-120.506 284.877,-117.304 291.829,-120.558 291.829,-120.558\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"176\" y=\"-123.852\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node6\"><title>1</title>\n",
"<ellipse cx=\"196\" cy=\"-168.052\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"196\" y=\"-164.352\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;1</title>\n",
"<path d=\"M72.9832,-123.585C78.9348,-125.98 85.7589,-128.684 92,-131.052 119.452,-141.47 151.293,-152.792 172.221,-160.132\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"178.878,-162.461 171.23,-163.122 175.574,-161.305 172.271,-160.149 172.271,-160.149 172.271,-160.149 175.574,-161.305 173.311,-157.176 178.878,-162.461 178.878,-162.461\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-158.852\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node7\"><title>2</title>\n",
"<ellipse cx=\"196\" cy=\"-55.0523\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"196\" y=\"-51.3523\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>0-&gt;2</title>\n",
"<path d=\"M69.4267,-104.755C75.7584,-99.0355 83.8327,-92.5246 92,-88.0523 117.451,-74.1158 149.707,-64.98 171.278,-59.9273\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"178.159,-58.3693 172.027,-62.9875 174.745,-59.1423 171.331,-59.9153 171.331,-59.9153 171.331,-59.9153 174.745,-59.1423 170.636,-56.843 178.159,-58.3693 178.159,-58.3693\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"94\" y=\"-91.8523\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge10\"><title>3-&gt;3</title>\n",
"<path d=\"M312.829,-152.495C312.547,-163.787 316.918,-172.993 325.941,-172.993 332.991,-172.993 337.2,-167.374 338.57,-159.531\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"339.053,-152.495 341.717,-159.694 338.814,-155.987 338.574,-159.478 338.574,-159.478 338.574,-159.478 338.814,-155.987 335.431,-159.263 339.053,-152.495 339.053,-152.495\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"305.941\" y=\"-176.793\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g class=\"node\" id=\"node4\"><title>4</title>\n",
"<ellipse cx=\"656.752\" cy=\"-146.052\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"652.252\" y=\"-149.852\">4</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"648.752\" y=\"-134.852\">\u2777</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge11\"><title>3-&gt;4</title>\n",
"<path d=\"M354.589,-139.805C361.903,-144.065 369.973,-148.177 377.882,-151.052 462.117,-181.675 570.416,-165.223 623.502,-153.89\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"630.618,-152.331 624.455,-156.907 627.199,-153.08 623.78,-153.83 623.78,-153.83 623.78,-153.83 627.199,-153.08 623.106,-150.753 630.618,-152.331 630.618,-152.331\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"461.882\" y=\"-171.852\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g class=\"node\" id=\"node5\"><title>5</title>\n",
"<ellipse cx=\"494.882\" cy=\"-50.0523\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"490.382\" y=\"-53.8523\">5</text>\n",
"<text fill=\"#b276b2\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"486.882\" y=\"-38.8523\">\u2778</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge12\"><title>3-&gt;5</title>\n",
"<path d=\"M359.869,-119.96C384.268,-117.974 417.688,-112.71 443.882,-99.0523 454.592,-93.4682 464.521,-84.8358 472.662,-76.3631\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"477.491,-71.137 475.054,-78.416 475.116,-73.7077 472.741,-76.2783 472.741,-76.2783 472.741,-76.2783 475.116,-73.7077 470.427,-74.1406 477.491,-71.137 477.491,-71.137\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"379.882\" y=\"-121.852\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge13\"><title>4-&gt;3</title>\n",
"<path d=\"M629.852,-146.11C570.447,-146.098 425.823,-145.201 377.882,-137.052 373.624,-136.329 369.228,-135.338 364.886,-134.202\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"358.135,-132.315 365.725,-131.166 361.506,-133.257 364.877,-134.2 364.877,-134.2 364.877,-134.2 361.506,-133.257 364.028,-137.233 358.135,-132.315 358.135,-132.315\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"474.882\" y=\"-149.852\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge14\"><title>4-&gt;4</title>\n",
"<path d=\"M642.923,-169.139C641.01,-180.652 645.619,-190.922 656.752,-190.922 665.45,-190.922 670.166,-184.654 670.901,-176.422\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"670.581,-169.139 674.035,-175.994 670.735,-172.636 670.888,-176.132 670.888,-176.132 670.888,-176.132 670.735,-172.636 667.741,-176.27 670.581,-169.139 670.581,-169.139\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"638.752\" y=\"-194.722\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge15\"><title>5-&gt;3</title>\n",
"<path d=\"M468.563,-55.9998C436.943,-63.5203 385.992,-75.9799 377.882,-80.0523 370.659,-83.6799 363.512,-88.4613 356.959,-93.4741\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"351.123,-98.1162 354.641,-91.2935 353.862,-95.9375 356.601,-93.7588 356.601,-93.7588 356.601,-93.7588 353.862,-95.9375 358.562,-96.2241 351.123,-98.1162 351.123,-98.1162\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"390.882\" y=\"-83.8523\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge16\"><title>5-&gt;4</title>\n",
"<path d=\"M518.449,-63.6032C546.894,-80.6845 595.826,-110.067 626.945,-128.754\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"633.301,-132.57 625.678,-131.667 630.3,-130.769 627.3,-128.967 627.3,-128.967 627.3,-128.967 630.3,-130.769 628.921,-126.266 633.301,-132.57 633.301,-132.57\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"545.882\" y=\"-121.852\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge17\"><title>5-&gt;5</title>\n",
"<path d=\"M480.048,-72.6777C477.766,-84.3767 482.71,-94.9224 494.882,-94.9224 504.487,-94.9224 509.591,-88.3565 510.196,-79.8389\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"509.717,-72.6777 513.327,-79.4515 509.951,-76.1699 510.184,-79.662 510.184,-79.662 510.184,-79.662 509.951,-76.1699 507.042,-79.8725 509.717,-72.6777 509.717,-72.6777\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"463.882\" y=\"-98.7224\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>1-&gt;3</title>\n",
"<path d=\"M213.204,-162.1C231.704,-155.304 262.587,-143.958 287.203,-134.916\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"293.964,-132.432 288.479,-137.803 290.678,-133.639 287.393,-134.846 287.393,-134.846 287.393,-134.846 290.678,-133.639 286.307,-131.889 293.964,-132.432 293.964,-132.432\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"234\" y=\"-157.852\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>1-&gt;4</title>\n",
"<path d=\"M212.646,-174.976C229.77,-182.145 258.226,-192.87 284,-197.052 335.122,-205.348 508.639,-190.114 527.882,-187.052 565.995,-180.988 575.403,-177.647 611.882,-165.052 616.31,-163.524 620.918,-161.746 625.411,-159.902\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"631.877,-157.177 626.651,-162.798 628.652,-158.536 625.427,-159.896 625.427,-159.896 625.427,-159.896 628.652,-158.536 624.203,-156.993 631.877,-157.177 631.877,-157.177\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"392.882\" y=\"-201.852\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge7\"><title>2-&gt;3</title>\n",
"<path d=\"M212.998,-60.9891C228.833,-67.077 253.595,-77.1719 274,-88.0523 279.804,-91.1472 285.807,-94.6948 291.565,-98.2903\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"297.698,-102.192 290.101,-101.092 294.745,-100.313 291.792,-98.4343 291.792,-98.4343 291.792,-98.4343 294.745,-100.313 293.482,-95.7765 297.698,-102.192 297.698,-102.192\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"234\" y=\"-91.8523\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge8\"><title>2-&gt;4</title>\n",
"<path d=\"M213.003,-48.2172C261.709,-28.4252 411.887,25.1015 527.882,-14.0523 572.352,-29.0629 580.016,-43.5938 611.882,-78.0523 622.442,-89.4709 632.073,-103.73 639.603,-116.237\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"643.343,-122.594 637.078,-118.158 641.568,-119.578 639.793,-116.561 639.793,-116.561 639.793,-116.561 641.568,-119.578 642.508,-114.963 643.343,-122.594 643.343,-122.594\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"377.882\" y=\"-7.85232\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge9\"><title>2-&gt;5</title>\n",
"<path d=\"M214.245,-54.7619C262.051,-53.9568 396.902,-51.6856 460.236,-50.619\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"467.595,-50.495 460.649,-53.7626 464.095,-50.554 460.596,-50.613 460.596,-50.613 460.596,-50.613 464.095,-50.554 460.543,-47.4635 467.595,-50.495 467.595,-50.495\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"294.941\" y=\"-57.8523\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
}
],
"prompt_number": 11
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Streett\n",
"\n",
"Since this notebook also serves as a test suite, let's try a Streett automaton. This one was generated with\n",
"\n",
" ltldo -f '(Ga -> Gb) W c' 'ltl2dstar --automata=streett --ltl2nba=spin:ltl2tgba@-Ds' -H | \n",
" autfilt -H --merge-transitions"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"aut = spot.automaton(\"\"\"\n",
"HOA: v1\n",
"States: 8\n",
"Start: 7\n",
"AP: 3 \"a\" \"b\" \"c\"\n",
"acc-name: Streett 2\n",
"Acceptance: 4 (Fin(0) | Inf(1)) & (Fin(2) | Inf(3))\n",
"properties: trans-labels explicit-labels state-acc complete\n",
"properties: deterministic\n",
"--BODY--\n",
"State: 0 {2}\n",
"[0&1] 0\n",
"[0&!1] 3\n",
"[!0] 4\n",
"State: 1 {2}\n",
"[0&1&2] 0\n",
"[0&1&!2] 1\n",
"[0&!1&!2] 2\n",
"[0&!1&2] 3\n",
"[!0&2] 4\n",
"[!0&!2] 7\n",
"State: 2 {2}\n",
"[0&1&!2] 1\n",
"[0&!1&!2] 2\n",
"[0&2] 3\n",
"[!0&2] 4\n",
"[!0&!2] 7\n",
"State: 3 {0 3}\n",
"[0] 3\n",
"[!0] 4\n",
"State: 4 {1 3}\n",
"[t] 4\n",
"State: 5 {3}\n",
"[0&!1] 3\n",
"[!0] 4\n",
"[0&1] 5\n",
"State: 6 {3}\n",
"[0&!1&!2] 2\n",
"[0&!1&2] 3\n",
"[!0&2] 4\n",
"[0&1&2] 5\n",
"[0&1&!2] 6\n",
"[!0&!2] 7\n",
"State: 7 {3}\n",
"[0&!1&!2] 2\n",
"[2] 4\n",
"[0&1&!2] 6\n",
"[!0&!2] 7\n",
"--END--\n",
"\"\"\")\n",
"aut.show(\".as\")"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 12,
"svg": [
"<svg height=\"360pt\" viewBox=\"0.00 0.00 713.82 360.00\" width=\"714pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(0.705882 0.705882) rotate(0) translate(4 506)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-506 1007.24,-506 1007.24,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"387.622\" y=\"-487.8\">(Fin(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"415.622\" y=\"-487.8\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"431.622\" y=\"-487.8\">) | Inf(</text>\n",
"<text fill=\"#f17cb0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"468.622\" y=\"-487.8\">\u2776</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"484.622\" y=\"-487.8\">)) &amp; (Fin(</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"538.622\" y=\"-487.8\">\u2777</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"554.622\" y=\"-487.8\">) | Inf(</text>\n",
"<text fill=\"#b276b2\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"591.622\" y=\"-487.8\">\u2778</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"607.622\" y=\"-487.8\">))</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"911.362,-93 911.362,-210 995.245,-210 995.245,-93 911.362,-93\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust2\"><title>cluster_1</title>\n",
"<polygon fill=\"none\" points=\"796.48,-212 796.48,-329 880.362,-329 880.362,-212 796.48,-212\" stroke=\"red\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust3\"><title>cluster_2</title>\n",
"<polygon fill=\"none\" points=\"665.61,-160 665.61,-263 735.35,-263 735.35,-160 665.61,-160\" stroke=\"red\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust4\"><title>cluster_3</title>\n",
"<polygon fill=\"none\" points=\"665.61,-341 665.61,-444 735.35,-444 735.35,-341 665.61,-341\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust5\"><title>cluster_4</title>\n",
"<polygon fill=\"none\" points=\"30,-148 30,-373 579.35,-373 579.35,-148 30,-148\" stroke=\"green\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 7 -->\n",
"<g class=\"node\" id=\"node2\"><title>7</title>\n",
"<ellipse cx=\"64.8701\" cy=\"-219\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"60.3701\" y=\"-222.8\">7</text>\n",
"<text fill=\"#b276b2\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"56.8701\" y=\"-207.8\">\u2778</text>\n",
"</g>\n",
"<!-- I&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;7</title>\n",
"<path d=\"M1.04557,-219C1.94668,-219 16.0699,-219 30.6965,-219\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.8616,-219 30.8617,-222.15 34.3616,-219 30.8616,-219 30.8616,-219 30.8616,-219 34.3616,-219 30.8616,-215.85 37.8616,-219 37.8616,-219\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 7&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge31\"><title>7-&gt;7</title>\n",
"<path d=\"M56.6704,-244.821C56.2072,-255.178 58.9404,-263.87 64.8701,-263.87 69.3173,-263.87 71.9666,-258.981 72.8178,-252.167\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"73.0697,-244.821 75.9779,-251.925 72.9497,-248.319 72.8297,-251.817 72.8297,-251.817 72.8297,-251.817 72.9497,-248.319 69.6816,-251.709 73.0697,-244.821 73.0697,-244.821\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"44.8701\" y=\"-267.67\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g class=\"node\" id=\"node3\"><title>4</title>\n",
"<ellipse cx=\"953.304\" cy=\"-135\" fill=\"#ffffaa\" rx=\"33.8824\" ry=\"33.8824\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"948.804\" y=\"-138.8\">4</text>\n",
"<text fill=\"#f17cb0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"937.304\" y=\"-124.8\">\u2776</text>\n",
"<text fill=\"#b276b2\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"953.304\" y=\"-124.8\">\u2778</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge29\"><title>7-&gt;4</title>\n",
"<path d=\"M71.4782,-192.583C85.5575,-134.336 128.171,-0 221.74,-0 221.74,-0 221.74,-0 839.421,-0 889.962,-0 922.321,-56.3742 938.892,-96.2636\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"941.61,-103.007 936.071,-97.6919 940.301,-99.7606 938.993,-96.5144 938.993,-96.5144 938.993,-96.5144 940.301,-99.7606 941.914,-95.3368 941.61,-103.007 941.61,-103.007\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"540.98\" y=\"-3.8\">c</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node7\"><title>2</title>\n",
"<ellipse cx=\"384.61\" cy=\"-233\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"380.11\" y=\"-236.8\">2</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"376.61\" y=\"-221.8\">\u2777</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge28\"><title>7-&gt;2</title>\n",
"<path d=\"M91.8721,-220.146C149.269,-222.675 286.739,-228.732 350.318,-231.533\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"357.695,-231.858 350.563,-234.697 354.198,-231.704 350.701,-231.55 350.701,-231.55 350.701,-231.55 354.198,-231.704 350.84,-228.403 357.695,-231.858 357.695,-231.858\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"189.74\" y=\"-231.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g class=\"node\" id=\"node9\"><title>6</title>\n",
"<ellipse cx=\"222.74\" cy=\"-305\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"218.24\" y=\"-308.8\">6</text>\n",
"<text fill=\"#b276b2\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"214.74\" y=\"-293.8\">\u2778</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge30\"><title>7-&gt;6</title>\n",
"<path d=\"M76.0877,-243.444C83.3639,-257.804 94.553,-275.04 109.74,-285 133.091,-300.313 164.809,-304.813 188.53,-305.772\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"195.617,-305.964 188.534,-308.923 192.118,-305.869 188.62,-305.774 188.62,-305.774 188.62,-305.774 192.118,-305.869 188.705,-302.625 195.617,-305.964 195.617,-305.964\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"109.74\" y=\"-307.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge18\"><title>4-&gt;4</title>\n",
"<path d=\"M942.804,-167.463C942.804,-178.284 946.304,-186.941 953.304,-186.941 958.663,-186.941 961.971,-181.867 963.227,-174.632\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"963.804,-167.463 966.382,-174.693 963.523,-170.952 963.242,-174.441 963.242,-174.441 963.242,-174.441 963.523,-170.952 960.102,-174.188 963.804,-167.463 963.804,-167.463\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"953.304\" y=\"-190.741\">1</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g class=\"node\" id=\"node4\"><title>3</title>\n",
"<ellipse cx=\"838.421\" cy=\"-254\" fill=\"#ffffaa\" rx=\"33.8824\" ry=\"33.8824\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"833.921\" y=\"-257.8\">3</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"822.421\" y=\"-243.8\">\u24ff</text>\n",
"<text fill=\"#b276b2\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"838.421\" y=\"-243.8\">\u2778</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge17\"><title>3-&gt;4</title>\n",
"<path d=\"M862.537,-229.631C880.419,-210.781 905.254,-184.6 924.269,-164.554\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"929.219,-159.336 926.687,-166.582 926.81,-161.875 924.401,-164.415 924.401,-164.415 924.401,-164.415 926.81,-161.875 922.116,-162.247 929.219,-159.336 929.219,-159.336\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"890.362\" y=\"-202.8\">!a</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge16\"><title>3-&gt;3</title>\n",
"<path d=\"M827.921,-286.463C827.921,-297.284 831.421,-305.941 838.421,-305.941 843.781,-305.941 847.088,-300.867 848.345,-293.632\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"848.921,-286.463 851.5,-293.693 848.641,-289.952 848.36,-293.441 848.36,-293.441 848.36,-293.441 848.641,-289.952 845.22,-293.188 848.921,-286.463 848.921,-286.463\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"834.921\" y=\"-309.741\">a</text>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node5\"><title>0</title>\n",
"<ellipse cx=\"700.48\" cy=\"-195\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"695.98\" y=\"-198.8\">0</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"692.48\" y=\"-183.8\">\u2777</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>0-&gt;4</title>\n",
"<path d=\"M726.911,-188.917C770.803,-178.417 861.061,-156.826 913.059,-144.388\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"920.133,-142.696 914.058,-147.388 916.729,-143.51 913.325,-144.324 913.325,-144.324 913.325,-144.324 916.729,-143.51 912.592,-141.261 920.133,-142.696 920.133,-142.696\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"832.921\" y=\"-175.8\">!a</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>0-&gt;3</title>\n",
"<path d=\"M725.471,-205.412C746.233,-214.423 776.59,-227.599 800.456,-237.957\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"807.002,-240.798 799.327,-240.9 803.791,-239.404 800.581,-238.011 800.581,-238.011 800.581,-238.011 803.791,-239.404 801.835,-235.121 807.002,-240.798 807.002,-240.798\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"749.48\" y=\"-235.8\">a &amp; !b</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;0</title>\n",
"<path d=\"M688.35,-219.005C687.027,-230.141 691.07,-239.87 700.48,-239.87 707.832,-239.87 711.908,-233.932 712.709,-226.024\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"712.611,-219.005 715.858,-225.96 712.659,-222.504 712.708,-226.004 712.708,-226.004 712.708,-226.004 712.659,-222.504 709.559,-226.048 712.611,-219.005 712.611,-219.005\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"683.48\" y=\"-243.67\">a &amp; b</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g class=\"node\" id=\"node6\"><title>5</title>\n",
"<ellipse cx=\"700.48\" cy=\"-376\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"695.98\" y=\"-379.8\">5</text>\n",
"<text fill=\"#b276b2\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"692.48\" y=\"-364.8\">\u2778</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge20\"><title>5-&gt;4</title>\n",
"<path d=\"M727.515,-377.74C766.507,-378.815 839.814,-374.655 880.362,-333 922.411,-289.804 940.136,-220.153 947.429,-176.019\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"948.552,-168.894 950.573,-176.3 948.007,-172.352 947.462,-175.809 947.462,-175.809 947.462,-175.809 948.007,-172.352 944.35,-175.318 948.552,-168.894 948.552,-168.894\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"832.921\" y=\"-375.8\">!a</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge19\"><title>5-&gt;3</title>\n",
"<path d=\"M725.442,-365.273C747.026,-355.314 776.803,-340.747 786.48,-332 799.383,-320.338 810.434,-304.711 818.912,-290.507\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"822.624,-284.101 821.84,-291.737 820.87,-287.129 819.115,-290.158 819.115,-290.158 819.115,-290.158 820.87,-287.129 816.389,-288.579 822.624,-284.101 822.624,-284.101\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"749.48\" y=\"-356.8\">a &amp; !b</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge21\"><title>5-&gt;5</title>\n",
"<path d=\"M688.35,-400.005C687.027,-411.141 691.07,-420.87 700.48,-420.87 707.832,-420.87 711.908,-414.932 712.709,-407.024\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"712.611,-400.005 715.858,-406.96 712.659,-403.504 712.708,-407.004 712.708,-407.004 712.708,-407.004 712.659,-403.504 709.559,-407.048 712.611,-400.005 712.611,-400.005\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"683.48\" y=\"-424.67\">a &amp; b</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge15\"><title>2-&gt;7</title>\n",
"<path d=\"M358.349,-226.562C332.707,-220.382 291.764,-211.488 255.74,-208 200.897,-202.689 136.874,-208.976 98.9438,-213.997\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"91.716,-214.981 98.2273,-210.916 95.184,-214.509 98.652,-214.037 98.652,-214.037 98.652,-214.037 95.184,-214.509 99.0768,-217.158 91.716,-214.981 91.716,-214.981\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"202.74\" y=\"-211.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge14\"><title>2-&gt;4</title>\n",
"<path d=\"M393.7,-207.391C411.658,-156.176 459.992,-46 543.48,-46 543.48,-46 543.48,-46 839.421,-46 876.544,-46 908.638,-76.0486 929.013,-101.226\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"933.432,-106.84 926.627,-103.288 931.268,-104.09 929.103,-101.34 929.103,-101.34 929.103,-101.34 931.268,-104.09 931.578,-99.3911 933.432,-106.84 933.432,-106.84\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"682.48\" y=\"-49.8\">!a &amp; c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge13\"><title>2-&gt;3</title>\n",
"<path d=\"M409.904,-242.508C416.194,-244.636 423.018,-246.657 429.48,-248 562.836,-275.71 599.419,-275.621 735.35,-267 755.811,-265.702 778.44,-262.955 797.181,-260.32\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"804.425,-259.279 797.944,-263.392 800.961,-259.777 797.496,-260.274 797.496,-260.274 797.496,-260.274 800.961,-259.777 797.049,-257.156 804.425,-259.279 804.425,-259.279\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"606.48\" y=\"-276.8\">a &amp; c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge12\"><title>2-&gt;2</title>\n",
"<path d=\"M370.781,-256.087C368.868,-267.6 373.477,-277.87 384.61,-277.87 393.308,-277.87 398.024,-271.602 398.758,-263.369\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"398.439,-256.087 401.893,-262.942 398.593,-259.583 398.746,-263.08 398.746,-263.08 398.746,-263.08 398.593,-259.583 395.599,-263.218 398.439,-256.087 398.439,-256.087\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"351.61\" y=\"-281.67\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node8\"><title>1</title>\n",
"<ellipse cx=\"544.48\" cy=\"-185\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"539.98\" y=\"-188.8\">1</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"536.48\" y=\"-173.8\">\u2777</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge11\"><title>2-&gt;1</title>\n",
"<path d=\"M411.628,-231.237C434.35,-229.061 467.915,-224.292 495.48,-214 502.321,-211.446 509.273,-207.899 515.685,-204.161\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"521.892,-200.388 517.546,-206.716 518.901,-202.206 515.91,-204.024 515.91,-204.024 515.91,-204.024 518.901,-202.206 514.274,-201.332 521.892,-200.388 521.892,-200.388\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"431.48\" y=\"-232.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge10\"><title>1-&gt;7</title>\n",
"<path d=\"M517.587,-183.085C510.429,-182.636 502.657,-182.224 495.48,-182 466.161,-181.085 458.798,-181.06 429.48,-182 287.111,-186.566 249.308,-175.527 109.74,-204 105.597,-204.845 101.307,-205.975 97.105,-207.237\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"90.1574,-209.46 95.865,-204.327 93.491,-208.393 96.8246,-207.327 96.8246,-207.327 96.8246,-207.327 93.491,-208.393 97.7843,-210.327 90.1574,-209.46 90.1574,-209.46\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"286.74\" y=\"-187.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge9\"><title>1-&gt;4</title>\n",
"<path d=\"M559.853,-162.77C568.242,-151.796 579.855,-139.536 593.48,-133 699.699,-82.0446 844.795,-107.463 913.368,-124.225\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"920.553,-126.019 912.998,-127.379 917.157,-125.171 913.761,-124.323 913.761,-124.323 913.761,-124.323 917.157,-125.171 914.524,-121.267 920.553,-126.019 920.553,-126.019\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"749.98\" y=\"-108.8\">!a &amp; c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge8\"><title>1-&gt;3</title>\n",
"<path d=\"M567.697,-171.029C604.064,-150.066 677.989,-115.516 735.35,-141 754.546,-149.528 789.239,-191.008 812.794,-221.246\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"817.349,-227.13 810.574,-223.523 815.207,-224.363 813.065,-221.595 813.065,-221.595 813.065,-221.595 815.207,-224.363 815.556,-219.667 817.349,-227.13 817.349,-227.13\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"669.48\" y=\"-144.8\">a &amp; !b &amp; c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>1-&gt;0</title>\n",
"<path d=\"M571.604,-186.696C597.679,-188.39 637.841,-190.997 666.188,-192.838\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"673.486,-193.312 666.296,-196.002 669.993,-193.085 666.5,-192.858 666.5,-192.858 666.5,-192.858 669.993,-193.085 666.704,-189.715 673.486,-193.312 673.486,-193.312\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"593.48\" y=\"-195.8\">a &amp; b &amp; c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge7\"><title>1-&gt;2</title>\n",
"<path d=\"M517.593,-184.321C493.821,-184.579 458.058,-187.228 429.48,-199 422.798,-201.753 416.266,-205.811 410.369,-210.173\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"404.702,-214.6 408.28,-207.808 407.461,-212.445 410.219,-210.29 410.219,-210.29 410.219,-210.29 407.461,-212.445 412.158,-212.773 404.702,-214.6 404.702,-214.6\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"429.48\" y=\"-202.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>1-&gt;1</title>\n",
"<path d=\"M530.287,-208.087C528.323,-219.6 533.054,-229.87 544.48,-229.87 553.407,-229.87 558.247,-223.602 559.001,-215.369\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"558.673,-208.087 562.135,-214.938 558.831,-211.583 558.988,-215.079 558.988,-215.079 558.988,-215.079 558.831,-211.583 555.841,-215.221 558.673,-208.087 558.673,-208.087\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"513.48\" y=\"-233.67\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge27\"><title>6-&gt;7</title>\n",
"<path d=\"M201.09,-288.761C192.357,-282.374 181.875,-275.315 171.74,-270 145.711,-256.35 136.054,-260.091 109.74,-247 104.391,-244.339 98.8781,-241.184 93.6431,-237.969\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"87.6518,-234.192 95.2533,-235.26 90.6126,-236.058 93.5735,-237.925 93.5735,-237.925 93.5735,-237.925 90.6126,-236.058 91.8936,-240.589 87.6518,-234.192 87.6518,-234.192\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"120.74\" y=\"-273.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge24\"><title>6-&gt;4</title>\n",
"<path d=\"M234.46,-329.495C255.831,-374.096 308.256,-464 383.61,-464 383.61,-464 383.61,-464 839.421,-464 899.699,-464 934.612,-263.921 947.063,-175.82\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"948.06,-168.663 950.214,-176.03 947.577,-172.129 947.094,-175.596 947.094,-175.596 947.094,-175.596 947.577,-172.129 943.975,-175.161 948.06,-168.663 948.06,-168.663\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"604.48\" y=\"-467.8\">!a &amp; c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge23\"><title>6-&gt;3</title>\n",
"<path d=\"M249.412,-309.162C280.928,-313.903 336.051,-321 383.61,-321 383.61,-321 383.61,-321 701.48,-321 740.374,-321 779.677,-298.661 805.948,-279.781\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"811.679,-275.568 807.905,-282.252 808.859,-277.641 806.039,-279.714 806.039,-279.714 806.039,-279.714 808.859,-277.641 804.174,-277.176 811.679,-275.568 811.679,-275.568\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"513.48\" y=\"-324.8\">a &amp; !b &amp; c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge25\"><title>6-&gt;5</title>\n",
"<path d=\"M245.113,-320.686C253.614,-326.137 263.741,-331.706 273.74,-335 413.861,-381.157 592.916,-380.365 666.077,-377.696\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"673.235,-377.417 666.363,-380.838 669.737,-377.553 666.24,-377.69 666.24,-377.69 666.24,-377.69 669.737,-377.553 666.117,-374.542 673.235,-377.417 673.235,-377.417\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"433.48\" y=\"-377.8\">a &amp; b &amp; c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge22\"><title>6-&gt;2</title>\n",
"<path d=\"M247.674,-294.221C275.775,-281.565 322.431,-260.553 353.104,-246.739\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"359.774,-243.735 354.685,-249.482 356.583,-245.172 353.391,-246.61 353.391,-246.61 353.391,-246.61 356.583,-245.172 352.098,-243.737 359.774,-243.735 359.774,-243.735\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"273.74\" y=\"-285.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge26\"><title>6-&gt;6</title>\n",
"<path d=\"M207.906,-327.625C205.623,-339.324 210.568,-349.87 222.74,-349.87 232.344,-349.87 237.449,-343.304 238.054,-334.787\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"237.575,-327.625 241.185,-334.399 237.808,-331.118 238.042,-334.61 238.042,-334.61 238.042,-334.61 237.808,-331.118 234.899,-334.82 237.575,-327.625 237.575,-327.625\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"191.74\" y=\"-353.67\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
}
],
"prompt_number": 12
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"for (name, opt) in (('terminal', 't'), ('strictly weak', 'w'), ('strong', 's')):\n",
" a = spot.decompose_strength(aut, opt)\n",
" a.set_name(name)\n",
" display(a.show('.asn'))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"svg": [
"<svg height=\"360pt\" viewBox=\"0.00 0.00 675.63 360.00\" width=\"676pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(0.715706 0.715706) rotate(0) translate(4 499)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-499 940,-499 940,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"442\" y=\"-480.8\">terminal</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"447\" y=\"-466.8\">Inf(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"469\" y=\"-466.8\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"485\" y=\"-466.8\">)</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"868,-105 868,-198 928,-198 928,-105 868,-105\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust2\"><title>cluster_1</title>\n",
"<polygon fill=\"none\" points=\"777,-216 777,-309 837,-309 837,-216 777,-216\" stroke=\"red\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust3\"><title>cluster_2</title>\n",
"<polygon fill=\"none\" points=\"651,-160 651,-253 711,-253 711,-160 651,-160\" stroke=\"red\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust4\"><title>cluster_3</title>\n",
"<polygon fill=\"none\" points=\"651,-331 651,-424 711,-424 711,-331 651,-331\" stroke=\"red\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust5\"><title>cluster_4</title>\n",
"<polygon fill=\"none\" points=\"30,-143 30,-358 555,-358 555,-143 30,-143\" stroke=\"red\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\"><title>0</title>\n",
"<ellipse cx=\"60\" cy=\"-215\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<ellipse cx=\"60\" cy=\"-215\" fill=\"none\" rx=\"22\" ry=\"22\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"60\" y=\"-211.3\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;0</title>\n",
"<path d=\"M1.16638,-215C2.84121,-215 16.884,-215 30.7112,-215\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.8555,-215 30.8556,-218.15 34.3555,-215 30.8555,-215 30.8555,-215 30.8555,-215 34.3555,-215 30.8555,-211.85 37.8555,-215 37.8555,-215\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>0-&gt;0</title>\n",
"<path d=\"M52.6831,-235.991C51.7798,-246.087 54.2188,-255 60,-255 64.3359,-255 66.7918,-249.987 67.3677,-243.22\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"67.3169,-235.991 70.5161,-242.968 67.3415,-239.491 67.3662,-242.991 67.3662,-242.991 67.3662,-242.991 67.3415,-239.491 64.2163,-243.013 67.3169,-235.991 67.3169,-235.991\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"40\" y=\"-258.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node3\"><title>2</title>\n",
"<ellipse cx=\"898\" cy=\"-135\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<ellipse cx=\"898\" cy=\"-135\" fill=\"none\" rx=\"22\" ry=\"22\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"898\" y=\"-131.3\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>0-&gt;2</title>\n",
"<path d=\"M65.2774,-193.599C77.5204,-139.217 118.038,-0 212,-0 212,-0 212,-0 808,-0 858.477,-0 881.953,-66.6001 891.456,-106.243\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"893.071,-113.31 888.44,-107.188 892.291,-109.898 891.511,-106.486 891.511,-106.486 891.511,-106.486 892.291,-109.898 894.582,-105.784 893.071,-113.31 893.071,-113.31\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"521.5\" y=\"-3.8\">c</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node7\"><title>1</title>\n",
"<ellipse cx=\"370\" cy=\"-228\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<ellipse cx=\"370\" cy=\"-228\" fill=\"none\" rx=\"22\" ry=\"22\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"370\" y=\"-224.3\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;1</title>\n",
"<path d=\"M82.1701,-215.894C136.239,-218.176 279.455,-224.221 340.639,-226.803\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"347.682,-227.1 340.555,-229.952 344.185,-226.953 340.688,-226.805 340.688,-226.805 340.688,-226.805 344.185,-226.953 340.821,-223.658 347.682,-227.1 347.682,-227.1\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"180\" y=\"-226.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g class=\"node\" id=\"node9\"><title>3</title>\n",
"<ellipse cx=\"213\" cy=\"-295\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<ellipse cx=\"213\" cy=\"-295\" fill=\"none\" rx=\"22\" ry=\"22\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"213\" y=\"-291.3\">3</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>0-&gt;3</title>\n",
"<path d=\"M67.8974,-235.769C73.9503,-250.589 84.2768,-269.659 100,-280 124.807,-296.315 159.427,-298.582 183.587,-297.709\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"190.727,-297.349 183.894,-300.848 187.231,-297.525 183.736,-297.702 183.736,-297.702 183.736,-297.702 187.231,-297.525 183.577,-294.556 190.727,-297.349 190.727,-297.349\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"100\" y=\"-300.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge11\"><title>2-&gt;2</title>\n",
"<path d=\"M889.994,-155.581C888.886,-165.845 891.555,-175 898,-175 902.834,-175 905.544,-169.85 906.129,-162.945\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"906.006,-155.581 909.273,-162.527 906.065,-159.08 906.123,-162.58 906.123,-162.58 906.123,-162.58 906.065,-159.08 902.973,-162.632 906.006,-155.581 906.006,-155.581\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"898\" y=\"-178.8\">1</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g class=\"node\" id=\"node4\"><title>4</title>\n",
"<ellipse cx=\"807\" cy=\"-246\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<ellipse cx=\"807\" cy=\"-246\" fill=\"none\" rx=\"22\" ry=\"22\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"807\" y=\"-242.3\">4</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge19\"><title>4-&gt;2</title>\n",
"<path d=\"M821.517,-229.141C836.808,-210.071 861.787,-178.918 878.787,-157.715\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"883.356,-152.017 881.434,-159.449 881.166,-154.748 878.977,-157.478 878.977,-157.478 878.977,-157.478 881.166,-154.748 876.519,-155.508 883.356,-152.017 883.356,-152.017\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"847\" y=\"-201.8\">!a</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge18\"><title>4-&gt;4</title>\n",
"<path d=\"M798.994,-266.581C797.886,-276.845 800.555,-286 807,-286 811.834,-286 814.544,-280.85 815.129,-273.945\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"815.006,-266.581 818.273,-273.527 815.065,-270.08 815.123,-273.58 815.123,-273.58 815.123,-273.58 815.065,-270.08 811.973,-273.632 815.006,-266.581 815.006,-266.581\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"803.5\" y=\"-289.8\">a</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g class=\"node\" id=\"node5\"><title>7</title>\n",
"<ellipse cx=\"681\" cy=\"-190\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<ellipse cx=\"681\" cy=\"-190\" fill=\"none\" rx=\"22\" ry=\"22\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"681\" y=\"-186.3\">7</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge31\"><title>7-&gt;2</title>\n",
"<path d=\"M702.615,-184.726C741.543,-174.768 825.873,-153.195 869.546,-142.023\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"876.447,-140.258 870.446,-145.044 873.056,-141.125 869.666,-141.993 869.666,-141.993 869.666,-141.993 873.056,-141.125 868.885,-138.941 876.447,-140.258 876.447,-140.258\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"801.5\" y=\"-169.8\">!a</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge30\"><title>7-&gt;4</title>\n",
"<path d=\"M701.375,-198.75C722.577,-208.325 756.67,-223.722 780.143,-234.323\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"786.761,-237.311 779.085,-237.301 783.571,-235.871 780.381,-234.43 780.381,-234.43 780.381,-234.43 783.571,-235.871 781.678,-231.559 786.761,-237.311 786.761,-237.311\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"730\" y=\"-231.8\">a &amp; !b</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge29\"><title>7-&gt;7</title>\n",
"<path d=\"M669.305,-208.93C666.918,-219.842 670.816,-230 681,-230 688.797,-230 692.909,-224.046 693.338,-216.357\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"692.695,-208.93 696.437,-215.633 692.997,-212.417 693.299,-215.904 693.299,-215.904 693.299,-215.904 692.997,-212.417 690.16,-216.176 692.695,-208.93 692.695,-208.93\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"664\" y=\"-233.8\">a &amp; b</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g class=\"node\" id=\"node6\"><title>5</title>\n",
"<ellipse cx=\"681\" cy=\"-361\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<ellipse cx=\"681\" cy=\"-361\" fill=\"none\" rx=\"22\" ry=\"22\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"681\" y=\"-357.3\">5</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge21\"><title>5-&gt;2</title>\n",
"<path d=\"M703.13,-364.044C720.653,-365.798 746.003,-366.53 767,-360 802.783,-348.871 814.253,-342.779 837,-313 871.519,-267.81 886.851,-201.596 893.118,-163.966\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"894.254,-156.836 896.264,-164.244 893.703,-160.292 893.153,-163.749 893.153,-163.749 893.153,-163.749 893.703,-160.292 890.042,-163.253 894.254,-156.836 894.254,-156.836\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"801.5\" y=\"-359.8\">!a</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge20\"><title>5-&gt;4</title>\n",
"<path d=\"M702.126,-353.535C724.018,-345.114 757.205,-331.373 767,-322 780.875,-308.722 790.693,-289.429 797.007,-273.605\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"799.5,-267.064 799.95,-274.726 798.253,-270.334 797.007,-273.605 797.007,-273.605 797.007,-273.605 798.253,-270.334 794.063,-272.483 799.5,-267.064 799.5,-267.064\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"730\" y=\"-344.8\">a &amp; !b</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge22\"><title>5-&gt;5</title>\n",
"<path d=\"M669.305,-379.93C666.918,-390.842 670.816,-401 681,-401 688.797,-401 692.909,-395.046 693.338,-387.357\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"692.695,-379.93 696.437,-386.633 692.997,-383.417 693.299,-386.904 693.299,-386.904 693.299,-386.904 692.997,-383.417 690.16,-387.176 692.695,-379.93 692.695,-379.93\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"664\" y=\"-404.8\">a &amp; b</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge10\"><title>1-&gt;0</title>\n",
"<path d=\"M348.318,-222.247C324.044,-215.818 282.469,-205.812 246,-202 190.542,-196.203 125.455,-204.198 89.1456,-209.978\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"81.8483,-211.172 88.2478,-206.933 85.3024,-210.607 88.7565,-210.042 88.7565,-210.042 88.7565,-210.042 85.3024,-210.607 89.2651,-213.151 81.8483,-211.172 81.8483,-211.172\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"193\" y=\"-205.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge9\"><title>1-&gt;2</title>\n",
"<path d=\"M377.421,-207.122C393.562,-159.317 440.617,-46 524,-46 524,-46 524,-46 808,-46 843.857,-46 870.313,-82.5674 884.688,-108.823\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"888.081,-115.248 882.026,-110.529 886.446,-112.153 884.812,-109.058 884.812,-109.058 884.812,-109.058 886.446,-112.153 887.597,-107.587 888.081,-115.248 888.081,-115.248\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"663\" y=\"-49.8\">!a &amp; c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge8\"><title>1-&gt;4</title>\n",
"<path d=\"M390.025,-237.295C396.248,-239.928 403.289,-242.487 410,-244 541.058,-273.543 577.881,-264.821 712,-257 734.3,-255.7 759.426,-252.678 778.086,-250.13\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"785.154,-249.146 778.655,-253.231 781.687,-249.629 778.221,-250.112 778.221,-250.112 778.221,-250.112 781.687,-249.629 777.786,-246.992 785.154,-249.146 785.154,-249.146\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"587\" y=\"-268.8\">a &amp; c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge7\"><title>1-&gt;1</title>\n",
"<path d=\"M357.453,-246.1C354.427,-257.321 358.609,-268 370,-268 378.899,-268 383.398,-261.482 383.498,-253.28\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"382.547,-246.1 386.589,-252.626 383.007,-249.57 383.467,-253.04 383.467,-253.04 383.467,-253.04 383.007,-249.57 380.344,-253.453 382.547,-246.1 382.547,-246.1\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"337\" y=\"-271.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g class=\"node\" id=\"node8\"><title>6</title>\n",
"<ellipse cx=\"525\" cy=\"-178\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<ellipse cx=\"525\" cy=\"-178\" fill=\"none\" rx=\"22\" ry=\"22\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"525\" y=\"-174.3\">6</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>1-&gt;6</title>\n",
"<path d=\"M392.187,-226.62C413.882,-224.648 448.26,-219.958 476,-209 484.65,-205.583 493.401,-200.511 501.021,-195.455\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"507.127,-191.248 503.15,-197.813 504.245,-193.234 501.363,-195.219 501.363,-195.219 501.363,-195.219 504.245,-193.234 499.575,-192.625 507.127,-191.248 507.127,-191.248\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"412\" y=\"-228.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge28\"><title>6-&gt;0</title>\n",
"<path d=\"M502.995,-175.869C494.608,-175.117 484.856,-174.368 476,-174 446.692,-172.781 439.311,-172.867 410,-174 271.913,-179.337 234.091,-164.593 100,-198 95.5788,-199.101 91.0238,-200.659 86.6562,-202.389\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"79.9932,-205.209 85.2119,-199.58 83.2165,-203.845 86.4397,-202.481 86.4397,-202.481 86.4397,-202.481 83.2165,-203.845 87.6674,-205.382 79.9932,-205.209 79.9932,-205.209\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"277\" y=\"-179.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge27\"><title>6-&gt;2</title>\n",
"<path d=\"M539.033,-160.336C547.692,-150.091 560.017,-138.05 574,-132 675.428,-88.1145 812.108,-113.574 869.658,-127.62\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"876.599,-129.353 869.044,-130.714 873.203,-128.505 869.807,-127.657 869.807,-127.657 869.807,-127.657 873.203,-128.505 870.571,-124.601 876.599,-129.353 876.599,-129.353\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"730.5\" y=\"-114.8\">!a &amp; c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge26\"><title>6-&gt;4</title>\n",
"<path d=\"M544.51,-167.238C578.913,-148.74 654.438,-115.273 712,-141 748.242,-157.198 776.303,-195.041 791.995,-220.586\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"795.716,-226.795 789.416,-222.409 793.917,-223.792 792.118,-220.79 792.118,-220.79 792.118,-220.79 793.917,-223.792 794.82,-219.171 795.716,-226.795 795.716,-226.795\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"650\" y=\"-144.8\">a &amp; !b &amp; c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge23\"><title>6-&gt;7</title>\n",
"<path d=\"M547.09,-179.643C574.125,-181.75 621.11,-185.411 651.362,-187.768\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"658.67,-188.338 651.447,-190.935 655.181,-188.066 651.692,-187.794 651.692,-187.794 651.692,-187.794 655.181,-188.066 651.936,-184.654 658.67,-188.338 658.67,-188.338\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"574\" y=\"-190.8\">a &amp; b &amp; c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge25\"><title>6-&gt;1</title>\n",
"<path d=\"M502.727,-176.204C478.963,-175.089 439.908,-175.969 410,-190 402.11,-193.701 394.845,-199.665 388.778,-205.781\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"383.977,-210.908 386.462,-203.646 386.369,-208.353 388.762,-205.799 388.762,-205.799 388.762,-205.799 386.369,-208.353 391.061,-207.952 383.977,-210.908 383.977,-210.908\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"410\" y=\"-193.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge24\"><title>6-&gt;6</title>\n",
"<path d=\"M511.532,-195.684C508.018,-207.056 512.508,-218 525,-218 534.857,-218 539.732,-211.186 539.623,-202.725\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"538.468,-195.684 542.71,-202.082 539.035,-199.138 539.602,-202.592 539.602,-202.592 539.602,-202.592 539.035,-199.138 536.493,-203.102 538.468,-195.684 538.468,-195.684\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"494\" y=\"-221.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge17\"><title>3-&gt;0</title>\n",
"<path d=\"M195.189,-281.694C185.834,-274.783 173.736,-266.63 162,-261 136.015,-248.535 125.933,-254.574 100,-242 94.461,-239.314 88.8316,-235.895 83.6368,-232.4\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"77.7696,-228.301 85.312,-229.727 80.6388,-230.305 83.5079,-232.31 83.5079,-232.31 83.5079,-232.31 80.6388,-230.305 81.7038,-234.892 77.7696,-228.301 77.7696,-228.301\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"111\" y=\"-264.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge14\"><title>3-&gt;2</title>\n",
"<path d=\"M223.034,-314.786C243.053,-355.317 295.28,-444 369,-444 369,-444 369,-444 808,-444 865.868,-444 888.377,-241.358 894.846,-164.279\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"895.423,-157.223 897.992,-164.456 895.138,-160.711 894.853,-164.199 894.853,-164.199 894.853,-164.199 895.138,-160.711 891.713,-163.943 895.423,-157.223 895.423,-157.223\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"585\" y=\"-447.8\">!a &amp; c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge13\"><title>3-&gt;4</title>\n",
"<path d=\"M234.989,-298.551C264.72,-303.265 320.846,-311 369,-311 369,-311 369,-311 682,-311 721.661,-311 761.14,-284.593 784.556,-265.442\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"790.153,-260.75 786.812,-267.66 787.471,-262.998 784.789,-265.246 784.789,-265.246 784.789,-265.246 787.471,-262.998 782.765,-262.832 790.153,-260.75 790.153,-260.75\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"494\" y=\"-314.8\">a &amp; !b &amp; c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge15\"><title>3-&gt;5</title>\n",
"<path d=\"M231.099,-307.925C240.345,-314.201 252.251,-321.193 264,-325 404.061,-370.387 583.722,-366.417 651.993,-362.838\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"659.005,-362.451 652.189,-365.982 655.51,-362.644 652.015,-362.837 652.015,-362.837 652.015,-362.837 655.51,-362.644 651.842,-359.691 659.005,-362.451 659.005,-362.451\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"414\" y=\"-364.8\">a &amp; b &amp; c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge12\"><title>3-&gt;1</title>\n",
"<path d=\"M233.714,-286.531C256.803,-276.607 296.197,-259.653 330,-245 334.18,-243.188 338.611,-241.262 342.928,-239.382\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"349.566,-236.49 344.407,-242.174 346.358,-237.888 343.149,-239.286 343.149,-239.286 343.149,-239.286 346.358,-237.888 341.891,-236.398 349.566,-236.49 349.566,-236.49\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"264\" y=\"-276.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge16\"><title>3-&gt;3</title>\n",
"<path d=\"M198.98,-312.268C195.034,-323.787 199.707,-335 213,-335 223.593,-335 228.712,-327.88 228.358,-319.158\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"227.02,-312.268 231.447,-318.539 227.687,-315.704 228.354,-319.14 228.354,-319.14 228.354,-319.14 227.687,-315.704 225.262,-319.74 227.02,-312.268 227.02,-312.268\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"182\" y=\"-338.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
},
{
"metadata": {},
"output_type": "display_data",
"svg": [
"<svg height=\"360pt\" viewBox=\"0.00 0.00 538.09 360.00\" width=\"538pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(0.957447 0.957447) rotate(0) translate(4 372)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-372 558,-372 558,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"237\" y=\"-353.8\">strictly weak</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"256\" y=\"-339.8\">Inf(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"278\" y=\"-339.8\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"294\" y=\"-339.8\">)</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"340,-8 340,-101 400,-101 400,-8 340,-8\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust2\"><title>cluster_1</title>\n",
"<polygon fill=\"none\" points=\"30,-109 30,-324 546,-324 546,-109 30,-109\" stroke=\"red\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\"><title>0</title>\n",
"<ellipse cx=\"60\" cy=\"-230\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<ellipse cx=\"60\" cy=\"-230\" fill=\"none\" rx=\"22\" ry=\"22\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"60\" y=\"-226.3\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;0</title>\n",
"<path d=\"M1.16638,-230C2.84121,-230 16.884,-230 30.7112,-230\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.8555,-230 30.8556,-233.15 34.3555,-230 30.8555,-230 30.8555,-230 30.8555,-230 34.3555,-230 30.8555,-226.85 37.8555,-230 37.8555,-230\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>0-&gt;0</title>\n",
"<path d=\"M52.6831,-250.991C51.7798,-261.087 54.2188,-270 60,-270 64.3359,-270 66.7918,-264.987 67.3677,-258.22\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"67.3169,-250.991 70.5161,-257.968 67.3415,-254.491 67.3662,-257.991 67.3662,-257.991 67.3662,-257.991 67.3415,-254.491 64.2163,-258.013 67.3169,-250.991 67.3169,-250.991\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"40\" y=\"-273.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node4\"><title>1</title>\n",
"<ellipse cx=\"370\" cy=\"-227\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<ellipse cx=\"370\" cy=\"-227\" fill=\"none\" rx=\"22\" ry=\"22\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"370\" y=\"-223.3\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;1</title>\n",
"<path d=\"M81.9453,-234.375C105.621,-239.08 145.379,-246.254 180,-249 246.747,-254.295 264.171,-247.233 330,-235 333.644,-234.323 337.473,-233.578 341.249,-232.824\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"348.383,-231.378 342.148,-235.856 344.953,-232.074 341.523,-232.769 341.523,-232.769 341.523,-232.769 344.953,-232.074 340.897,-229.682 348.383,-231.378 348.383,-231.378\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"180\" y=\"-253.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node6\"><title>2</title>\n",
"<ellipse cx=\"213\" cy=\"-139\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<ellipse cx=\"213\" cy=\"-139\" fill=\"none\" rx=\"22\" ry=\"22\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"213\" y=\"-135.3\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>0-&gt;2</title>\n",
"<path d=\"M79.2141,-219.023C106.31,-202.694 157.285,-171.974 187.585,-153.713\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"193.721,-150.016 189.352,-156.327 190.724,-151.822 187.726,-153.629 187.726,-153.629 187.726,-153.629 190.724,-151.822 186.1,-150.931 193.721,-150.016 193.721,-150.016\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"100\" y=\"-209.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g class=\"node\" id=\"node3\"><title>3</title>\n",
"<ellipse cx=\"370\" cy=\"-38\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<ellipse cx=\"370\" cy=\"-38\" fill=\"none\" rx=\"22\" ry=\"22\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"370\" y=\"-34.3\">3</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge12\"><title>3-&gt;3</title>\n",
"<path d=\"M357.453,-56.1003C354.427,-67.3213 358.609,-78 370,-78 378.899,-78 383.398,-71.4822 383.498,-63.2801\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"382.547,-56.1003 386.589,-62.6261 383.007,-59.57 383.467,-63.0397 383.467,-63.0397 383.467,-63.0397 383.007,-59.57 380.344,-63.4533 382.547,-56.1003 382.547,-56.1003\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"353\" y=\"-81.8\">a &amp; b</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge7\"><title>1-&gt;0</title>\n",
"<path d=\"M347.682,-227.208C293.45,-227.736 150.228,-229.131 89.1943,-229.725\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"82.1701,-229.794 89.139,-226.576 85.6699,-229.76 89.1698,-229.726 89.1698,-229.726 89.1698,-229.726 85.6699,-229.76 89.2005,-232.875 82.1701,-229.794 82.1701,-229.794\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"193\" y=\"-231.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>1-&gt;1</title>\n",
"<path d=\"M357.453,-245.1C354.427,-256.321 358.609,-267 370,-267 378.899,-267 383.398,-260.482 383.498,-252.28\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"382.547,-245.1 386.589,-251.626 383.007,-248.57 383.467,-252.04 383.467,-252.04 383.467,-252.04 383.007,-248.57 380.344,-252.453 382.547,-245.1 382.547,-245.1\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"337\" y=\"-270.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g class=\"node\" id=\"node5\"><title>4</title>\n",
"<ellipse cx=\"516\" cy=\"-261\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<ellipse cx=\"516\" cy=\"-261\" fill=\"none\" rx=\"22\" ry=\"22\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"516\" y=\"-257.3\">4</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>1-&gt;4</title>\n",
"<path d=\"M390.649,-234.73C396.783,-236.959 403.615,-239.257 410,-241 435.622,-247.993 465.415,-253.418 486.706,-256.843\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"493.861,-257.97 486.456,-259.992 490.404,-257.425 486.947,-256.881 486.947,-256.881 486.947,-256.881 490.404,-257.425 487.437,-253.769 493.861,-257.97 493.861,-257.97\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"412\" y=\"-257.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge15\"><title>4-&gt;0</title>\n",
"<path d=\"M494.968,-268.043C472.275,-275.592 434.02,-287.026 400,-291 302.398,-302.4 276.257,-288.763 180,-269 143.878,-261.583 134.768,-259.288 100,-247 95.7041,-245.482 91.214,-243.708 86.8727,-241.89\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"80.2225,-239.028 87.8976,-238.902 83.4374,-240.412 86.6522,-241.795 86.6522,-241.795 86.6522,-241.795 83.4374,-240.412 85.4067,-244.689 80.2225,-239.028 80.2225,-239.028\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"277\" y=\"-298.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge14\"><title>4-&gt;1</title>\n",
"<path d=\"M502.662,-243.397C495.849,-235.241 486.616,-226.397 476,-222 451.157,-211.71 420.128,-214.921 398.263,-219.501\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"391.222,-221.089 397.357,-216.476 394.636,-220.319 398.05,-219.549 398.05,-219.549 398.05,-219.549 394.636,-220.319 398.744,-222.622 391.222,-221.089 391.222,-221.089\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"410\" y=\"-225.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge13\"><title>4-&gt;4</title>\n",
"<path d=\"M503.453,-279.1C500.427,-290.321 504.609,-301 516,-301 524.899,-301 529.398,-294.482 529.498,-286.28\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"528.547,-279.1 532.589,-285.626 529.007,-282.57 529.467,-286.04 529.467,-286.04 529.467,-286.04 529.007,-282.57 526.344,-286.453 528.547,-279.1 528.547,-279.1\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"485\" y=\"-304.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge11\"><title>2-&gt;0</title>\n",
"<path d=\"M190.94,-136.11C166.744,-133.946 126.924,-134.055 100,-153 83.7006,-164.469 73.8107,-184.804 68.0698,-201.697\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"65.8569,-208.691 64.9656,-201.067 66.9128,-205.354 67.9688,-202.017 67.9688,-202.017 67.9688,-202.017 66.9128,-205.354 70.972,-202.967 65.8569,-208.691 65.8569,-208.691\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"111\" y=\"-156.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge9\"><title>2-&gt;3</title>\n",
"<path d=\"M231.78,-127.414C259.662,-109.246 313.708,-74.029 345.007,-53.6339\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"350.949,-49.762 346.804,-56.2227 348.017,-51.6728 345.085,-53.5836 345.085,-53.5836 345.085,-53.5836 348.017,-51.6728 343.365,-50.9444 350.949,-49.762 350.949,-49.762\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"268\" y=\"-110.8\">a &amp; b &amp; c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge8\"><title>2-&gt;1</title>\n",
"<path d=\"M232.389,-149.44C260.09,-165.167 312.595,-194.976 343.826,-212.708\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"350.151,-216.299 342.509,-215.582 347.108,-214.571 344.064,-212.843 344.064,-212.843 344.064,-212.843 347.108,-214.571 345.619,-210.103 350.151,-216.299 350.151,-216.299\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"264\" y=\"-207.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge10\"><title>2-&gt;2</title>\n",
"<path d=\"M198.98,-156.268C195.034,-167.787 199.707,-179 213,-179 223.593,-179 228.712,-171.88 228.358,-163.158\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"227.02,-156.268 231.447,-162.539 227.687,-159.704 228.354,-163.14 228.354,-163.14 228.354,-163.14 227.687,-159.704 225.262,-163.74 227.02,-156.268 227.02,-156.268\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"182\" y=\"-182.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
},
{
"metadata": {},
"output_type": "display_data",
"svg": [
"<svg height=\"285pt\" viewBox=\"0.00 0.00 591.22 285.00\" width=\"591pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 281)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-281 587.22,-281 587.22,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"271.11\" y=\"-262.8\">strong</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"177.61\" y=\"-248.8\">(Fin(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"205.61\" y=\"-248.8\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"221.61\" y=\"-248.8\">) | Inf(</text>\n",
"<text fill=\"#f17cb0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"258.61\" y=\"-248.8\">\u2776</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"274.61\" y=\"-248.8\">)) &amp; (Fin(</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"328.61\" y=\"-248.8\">\u2777</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"344.61\" y=\"-248.8\">) | Inf(</text>\n",
"<text fill=\"#b276b2\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"381.61\" y=\"-248.8\">\u2778</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"397.61\" y=\"-248.8\">))</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"30,-8 30,-233 575.22,-233 575.22,-8 30,-8\" stroke=\"green\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\"><title>0</title>\n",
"<ellipse cx=\"64.8701\" cy=\"-109\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"60.3701\" y=\"-112.8\">0</text>\n",
"<text fill=\"#b276b2\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"56.8701\" y=\"-97.8\">\u2778</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;0</title>\n",
"<path d=\"M1.04557,-109C1.94668,-109 16.0699,-109 30.6965,-109\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.8616,-109 30.8617,-112.15 34.3616,-109 30.8616,-109 30.8616,-109 30.8616,-109 34.3616,-109 30.8616,-105.85 37.8616,-109 37.8616,-109\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>0-&gt;0</title>\n",
"<path d=\"M56.6704,-134.821C56.2072,-145.178 58.9404,-153.87 64.8701,-153.87 69.3173,-153.87 71.9666,-148.981 72.8178,-142.167\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"73.0697,-134.821 75.9779,-141.925 72.9497,-138.319 72.8297,-141.817 72.8297,-141.817 72.8297,-141.817 72.9497,-138.319 69.6816,-141.709 73.0697,-134.821 73.0697,-134.821\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"44.8701\" y=\"-157.67\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node3\"><title>1</title>\n",
"<ellipse cx=\"384.61\" cy=\"-106\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"380.11\" y=\"-109.8\">1</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"376.61\" y=\"-94.8\">\u2777</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;1</title>\n",
"<path d=\"M87.2051,-93.6406C94.2024,-88.9479 102.137,-83.9806 109.74,-80 143.666,-62.2382 152.137,-55.2418 189.74,-48 256.677,-35.1091 278.344,-50.381 339.74,-80 344.786,-82.4344 350.018,-85.2539 355.036,-88.1195\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"361.247,-91.7483 353.614,-90.9368 358.225,-89.9826 355.203,-88.217 355.203,-88.217 355.203,-88.217 358.225,-89.9826 356.792,-85.4972 361.247,-91.7483 361.247,-91.7483\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"189.74\" y=\"-51.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node5\"><title>2</title>\n",
"<ellipse cx=\"222.74\" cy=\"-145\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"218.24\" y=\"-148.8\">2</text>\n",
"<text fill=\"#b276b2\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"214.74\" y=\"-133.8\">\u2778</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>0-&gt;2</title>\n",
"<path d=\"M91.7873,-105.045C113.649,-102.69 145.484,-101.587 171.74,-110 180.412,-112.779 188.896,-117.636 196.341,-122.863\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"202.332,-127.303 194.833,-125.666 199.52,-125.219 196.708,-123.135 196.708,-123.135 196.708,-123.135 199.52,-125.219 198.584,-120.604 202.332,-127.303 202.332,-127.303\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"109.74\" y=\"-113.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge7\"><title>1-&gt;0</title>\n",
"<path d=\"M357.7,-102.851C331.904,-99.8856 291.154,-95.6581 255.74,-94 190.868,-90.9627 174.061,-91.0275 109.74,-100 105.986,-100.524 102.071,-101.174 98.1923,-101.884\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"91.2925,-103.213 97.5709,-98.7962 94.7294,-102.551 98.1663,-101.889 98.1663,-101.889 98.1663,-101.889 94.7294,-102.551 98.7618,-104.983 91.2925,-103.213 91.2925,-103.213\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"202.74\" y=\"-97.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>1-&gt;1</title>\n",
"<path d=\"M370.781,-129.087C368.868,-140.6 373.477,-150.87 384.61,-150.87 393.308,-150.87 398.024,-144.602 398.758,-136.369\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"398.439,-129.087 401.893,-135.942 398.593,-132.583 398.746,-136.08 398.746,-136.08 398.746,-136.08 398.593,-132.583 395.599,-136.218 398.439,-129.087 398.439,-129.087\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"351.61\" y=\"-154.67\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g class=\"node\" id=\"node4\"><title>3</title>\n",
"<ellipse cx=\"540.35\" cy=\"-144\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"535.85\" y=\"-147.8\">3</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"532.35\" y=\"-132.8\">\u2777</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>1-&gt;3</title>\n",
"<path d=\"M409.99,-115.637C416.279,-117.916 423.08,-120.203 429.48,-122 454.889,-129.133 484.223,-134.884 506.186,-138.715\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"513.336,-139.94 505.904,-141.862 509.886,-139.349 506.436,-138.758 506.436,-138.758 506.436,-138.758 509.886,-139.349 506.968,-135.653 513.336,-139.94 513.336,-139.94\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"431.48\" y=\"-139.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge13\"><title>3-&gt;0</title>\n",
"<path d=\"M516.388,-156.528C459.805,-185.708 309.563,-252.866 189.74,-214 146.429,-199.951 108.463,-161.835 86.3368,-135.612\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"81.8596,-130.21 88.7518,-133.589 84.093,-132.905 86.3264,-135.599 86.3264,-135.599 86.3264,-135.599 84.093,-132.905 83.901,-137.609 81.8596,-130.21 81.8596,-130.21\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"286.74\" y=\"-228.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge12\"><title>3-&gt;1</title>\n",
"<path d=\"M522.817,-122.878C515.398,-115.075 505.953,-107.132 495.48,-103 470.814,-93.2682 440.553,-94.9855 418.039,-98.5899\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"411.019,-99.8143 417.373,-95.5084 414.467,-99.2129 417.915,-98.6115 417.915,-98.6115 417.915,-98.6115 414.467,-99.2129 418.456,-101.715 411.019,-99.8143 411.019,-99.8143\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"429.48\" y=\"-106.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge11\"><title>3-&gt;3</title>\n",
"<path d=\"M526.521,-167.087C524.608,-178.6 529.217,-188.87 540.35,-188.87 549.048,-188.87 553.764,-182.602 554.499,-174.369\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"554.179,-167.087 557.633,-173.942 554.333,-170.583 554.486,-174.08 554.486,-174.08 554.486,-174.08 554.333,-170.583 551.339,-174.218 554.179,-167.087 554.179,-167.087\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"509.35\" y=\"-192.67\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge10\"><title>2-&gt;0</title>\n",
"<path d=\"M195.659,-141.647C172.778,-138.398 138.729,-132.812 109.74,-125 105.528,-123.865 101.148,-122.5 96.857,-121.052\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"90.2244,-118.73 97.8721,-118.07 93.5277,-119.886 96.8311,-121.043 96.8311,-121.043 96.8311,-121.043 93.5277,-119.886 95.79,-124.016 90.2244,-118.73 90.2244,-118.73\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"120.74\" y=\"-140.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge8\"><title>2-&gt;1</title>\n",
"<path d=\"M249.072,-138.82C276.786,-132.06 321.273,-121.207 351.435,-113.849\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"358.397,-112.151 352.343,-116.87 354.997,-112.98 351.596,-113.81 351.596,-113.81 351.596,-113.81 354.997,-112.98 350.85,-110.75 358.397,-112.151 358.397,-112.151\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"273.74\" y=\"-135.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge9\"><title>2-&gt;2</title>\n",
"<path d=\"M207.906,-167.625C205.623,-179.324 210.568,-189.87 222.74,-189.87 232.344,-189.87 237.449,-183.304 238.054,-174.787\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"237.575,-167.625 241.185,-174.399 237.808,-171.118 238.042,-174.61 238.042,-174.61 238.042,-174.61 237.808,-171.118 234.899,-174.82 237.575,-167.625 237.575,-167.625\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"191.74\" y=\"-193.67\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
}
],
"prompt_number": 13
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The subtlety of Streett acceptance is that if a path that does not visit any accepting set infinitely often *is* accepting. So when disabling SCCs, we must be careful to label them with a combination of rejecting acceptance sets.\n",
"\n",
"This is easy to understand using an example. In the following extraction of the **strong** and **terminal** parts, the rejecting SCCs (that were either rejecting or strictly weak originally) have been labeled by the same acceptance sets, to ensure that they are rejected."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"spot.decompose_strength(aut, 'st').show('.as')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 14,
"svg": [
"<svg height=\"360pt\" viewBox=\"0.00 0.00 703.84 360.00\" width=\"704pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(0.705882 0.705882) rotate(0) translate(4 506)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-506 993.103,-506 993.103,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"380.551\" y=\"-487.8\">(Fin(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"408.551\" y=\"-487.8\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"424.551\" y=\"-487.8\">) | Inf(</text>\n",
"<text fill=\"#f17cb0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"461.551\" y=\"-487.8\">\u2776</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"477.551\" y=\"-487.8\">)) &amp; (Fin(</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"531.551\" y=\"-487.8\">\u2777</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"547.551\" y=\"-487.8\">) | Inf(</text>\n",
"<text fill=\"#b276b2\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"584.551\" y=\"-487.8\">\u2778</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"600.551\" y=\"-487.8\">))</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"897.22,-93 897.22,-210 981.103,-210 981.103,-93 897.22,-93\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust2\"><title>cluster_1</title>\n",
"<polygon fill=\"none\" points=\"796.48,-219 796.48,-322 866.22,-322 866.22,-219 796.48,-219\" stroke=\"red\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust3\"><title>cluster_2</title>\n",
"<polygon fill=\"none\" points=\"665.61,-160 665.61,-263 735.35,-263 735.35,-160 665.61,-160\" stroke=\"red\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust4\"><title>cluster_3</title>\n",
"<polygon fill=\"none\" points=\"665.61,-341 665.61,-444 735.35,-444 735.35,-341 665.61,-341\" stroke=\"red\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust5\"><title>cluster_4</title>\n",
"<polygon fill=\"none\" points=\"30,-147 30,-372 579.35,-372 579.35,-147 30,-147\" stroke=\"green\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\"><title>0</title>\n",
"<ellipse cx=\"64.8701\" cy=\"-219\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"60.3701\" y=\"-222.8\">0</text>\n",
"<text fill=\"#b276b2\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"56.8701\" y=\"-207.8\">\u2778</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;0</title>\n",
"<path d=\"M1.04557,-219C1.94668,-219 16.0699,-219 30.6965,-219\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.8616,-219 30.8617,-222.15 34.3616,-219 30.8616,-219 30.8616,-219 30.8616,-219 34.3616,-219 30.8616,-215.85 37.8616,-219 37.8616,-219\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>0-&gt;0</title>\n",
"<path d=\"M56.6704,-244.821C56.2072,-255.178 58.9404,-263.87 64.8701,-263.87 69.3173,-263.87 71.9666,-258.981 72.8178,-252.167\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"73.0697,-244.821 75.9779,-251.925 72.9497,-248.319 72.8297,-251.817 72.8297,-251.817 72.8297,-251.817 72.9497,-248.319 69.6816,-251.709 73.0697,-244.821 73.0697,-244.821\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"44.8701\" y=\"-267.67\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node3\"><title>2</title>\n",
"<ellipse cx=\"939.161\" cy=\"-135\" fill=\"#ffffaa\" rx=\"33.8824\" ry=\"33.8824\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"934.661\" y=\"-138.8\">2</text>\n",
"<text fill=\"#f17cb0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"923.161\" y=\"-124.8\">\u2776</text>\n",
"<text fill=\"#b276b2\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"939.161\" y=\"-124.8\">\u2778</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>0-&gt;2</title>\n",
"<path d=\"M71.4782,-192.583C85.5575,-134.336 128.171,-0 221.74,-0 221.74,-0 221.74,-0 832.35,-0 881.472,-0 911.223,-56.0526 926.171,-95.9213\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"928.617,-102.664 923.268,-97.1583 927.423,-99.374 926.23,-96.0839 926.23,-96.0839 926.23,-96.0839 927.423,-99.374 929.191,-95.0095 928.617,-102.664 928.617,-102.664\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"540.98\" y=\"-3.8\">c</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node7\"><title>1</title>\n",
"<ellipse cx=\"384.61\" cy=\"-233\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"380.11\" y=\"-236.8\">1</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"376.61\" y=\"-221.8\">\u2777</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;1</title>\n",
"<path d=\"M91.8721,-220.146C149.269,-222.675 286.739,-228.732 350.318,-231.533\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"357.695,-231.858 350.563,-234.697 354.198,-231.704 350.701,-231.55 350.701,-231.55 350.701,-231.55 354.198,-231.704 350.84,-228.403 357.695,-231.858 357.695,-231.858\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"189.74\" y=\"-231.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g class=\"node\" id=\"node9\"><title>3</title>\n",
"<ellipse cx=\"222.74\" cy=\"-304\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"218.24\" y=\"-307.8\">3</text>\n",
"<text fill=\"#b276b2\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"214.74\" y=\"-292.8\">\u2778</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>0-&gt;3</title>\n",
"<path d=\"M76.3421,-243.4C83.6544,-257.48 94.7917,-274.272 109.74,-284 133.145,-299.231 164.857,-303.739 188.562,-304.722\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"195.644,-304.922 188.558,-307.873 192.146,-304.823 188.647,-304.725 188.647,-304.725 188.647,-304.725 192.146,-304.823 188.736,-301.576 195.644,-304.922 195.644,-304.922\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"109.74\" y=\"-306.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge11\"><title>2-&gt;2</title>\n",
"<path d=\"M928.661,-167.463C928.661,-178.284 932.161,-186.941 939.161,-186.941 944.521,-186.941 947.829,-181.867 949.085,-174.632\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"949.661,-167.463 952.24,-174.693 949.381,-170.952 949.1,-174.441 949.1,-174.441 949.1,-174.441 949.381,-170.952 945.96,-174.188 949.661,-167.463 949.661,-167.463\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"939.161\" y=\"-190.741\">1</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g class=\"node\" id=\"node4\"><title>4</title>\n",
"<ellipse cx=\"831.35\" cy=\"-254\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"826.85\" y=\"-257.8\">4</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"823.35\" y=\"-242.8\">\u2777</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge19\"><title>4-&gt;2</title>\n",
"<path d=\"M849.823,-234.35C866.489,-215.606 891.838,-187.097 911.114,-165.418\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"915.875,-160.064 913.578,-167.388 913.549,-162.68 911.224,-165.295 911.224,-165.295 911.224,-165.295 913.549,-162.68 908.87,-163.202 915.875,-160.064 915.875,-160.064\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"876.22\" y=\"-205.8\">!a</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge18\"><title>4-&gt;4</title>\n",
"<path d=\"M822.058,-279.37C821.417,-289.924 824.514,-298.87 831.35,-298.87 836.584,-298.87 839.626,-293.626 840.477,-286.431\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"840.643,-279.37 843.628,-286.442 840.561,-282.869 840.479,-286.368 840.479,-286.368 840.479,-286.368 840.561,-282.869 837.33,-286.294 840.643,-279.37 840.643,-279.37\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"827.85\" y=\"-302.67\">a</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g class=\"node\" id=\"node5\"><title>7</title>\n",
"<ellipse cx=\"700.48\" cy=\"-195\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"695.98\" y=\"-198.8\">7</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"692.48\" y=\"-183.8\">\u2777</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge31\"><title>7-&gt;2</title>\n",
"<path d=\"M726.809,-188.579C768.069,-178.119 850.078,-157.33 898.922,-144.947\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"905.88,-143.184 899.868,-147.957 902.487,-144.044 899.094,-144.904 899.094,-144.904 899.094,-144.904 902.487,-144.044 898.32,-141.85 905.88,-143.184 905.88,-143.184\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"825.85\" y=\"-173.8\">!a</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge30\"><title>7-&gt;4</title>\n",
"<path d=\"M725.117,-205.822C746.148,-215.45 777.03,-229.588 799.904,-240.061\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"806.427,-243.047 798.751,-242.997 803.245,-241.59 800.062,-240.133 800.062,-240.133 800.062,-240.133 803.245,-241.59 801.374,-237.269 806.427,-243.047 806.427,-243.047\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"749.48\" y=\"-237.8\">a &amp; !b</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge29\"><title>7-&gt;7</title>\n",
"<path d=\"M688.35,-219.005C687.027,-230.141 691.07,-239.87 700.48,-239.87 707.832,-239.87 711.908,-233.932 712.709,-226.024\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"712.611,-219.005 715.858,-225.96 712.659,-222.504 712.708,-226.004 712.708,-226.004 712.708,-226.004 712.659,-222.504 709.559,-226.048 712.611,-219.005 712.611,-219.005\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"683.48\" y=\"-243.67\">a &amp; b</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g class=\"node\" id=\"node6\"><title>5</title>\n",
"<ellipse cx=\"700.48\" cy=\"-376\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"695.98\" y=\"-379.8\">5</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"692.48\" y=\"-364.8\">\u2777</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge21\"><title>5-&gt;2</title>\n",
"<path d=\"M727.661,-377.039C744.737,-377.019 767.328,-375.66 786.48,-370 825.298,-358.528 839.732,-356.607 866.22,-326 903.813,-282.563 922.644,-217.541 931.4,-175.694\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"932.82,-168.673 934.52,-176.158 932.126,-172.103 931.432,-175.534 931.432,-175.534 931.432,-175.534 932.126,-172.103 928.345,-174.909 932.82,-168.673 932.82,-168.673\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"825.85\" y=\"-369.8\">!a</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge20\"><title>5-&gt;4</title>\n",
"<path d=\"M725.575,-365.415C747.254,-355.558 777.098,-341.062 786.48,-332 799.974,-318.966 810.498,-300.875 817.853,-285.396\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"820.81,-278.945 820.757,-286.621 819.351,-282.126 817.893,-285.308 817.893,-285.308 817.893,-285.308 819.351,-282.126 815.03,-283.995 820.81,-278.945 820.81,-278.945\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"749.48\" y=\"-356.8\">a &amp; !b</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge22\"><title>5-&gt;5</title>\n",
"<path d=\"M688.35,-400.005C687.027,-411.141 691.07,-420.87 700.48,-420.87 707.832,-420.87 711.908,-414.932 712.709,-407.024\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"712.611,-400.005 715.858,-406.96 712.659,-403.504 712.708,-407.004 712.708,-407.004 712.708,-407.004 712.659,-403.504 709.559,-407.048 712.611,-400.005 712.611,-400.005\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"683.48\" y=\"-424.67\">a &amp; b</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge10\"><title>1-&gt;0</title>\n",
"<path d=\"M358.384,-226.048C332.769,-219.375 291.846,-209.77 255.74,-206 200.748,-200.257 136.518,-207.578 98.6266,-213.336\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"91.41,-214.463 97.8403,-210.271 94.8681,-213.923 98.3262,-213.383 98.3262,-213.383 98.3262,-213.383 94.8681,-213.923 98.8121,-216.495 91.41,-214.463 91.41,-214.463\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"202.74\" y=\"-209.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge9\"><title>1-&gt;2</title>\n",
"<path d=\"M393.7,-207.391C411.658,-156.176 459.992,-46 543.48,-46 543.48,-46 543.48,-46 832.35,-46 867.684,-46 897.368,-75.4253 916.217,-100.437\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"920.538,-106.35 913.865,-102.557 918.473,-103.524 916.408,-100.699 916.408,-100.699 916.408,-100.699 918.473,-103.524 918.951,-98.8397 920.538,-106.35 920.538,-106.35\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"682.48\" y=\"-49.8\">!a &amp; c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge8\"><title>1-&gt;4</title>\n",
"<path d=\"M409.904,-242.508C416.194,-244.636 423.018,-246.657 429.48,-248 562.836,-275.71 599.461,-276.255 735.35,-267 756.17,-265.582 779.38,-262.436 797.647,-259.593\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"804.642,-258.482 798.223,-262.691 801.186,-259.031 797.729,-259.58 797.729,-259.58 797.729,-259.58 801.186,-259.031 797.235,-256.469 804.642,-258.482 804.642,-258.482\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"606.48\" y=\"-276.8\">a &amp; c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge7\"><title>1-&gt;1</title>\n",
"<path d=\"M370.781,-256.087C368.868,-267.6 373.477,-277.87 384.61,-277.87 393.308,-277.87 398.024,-271.602 398.758,-263.369\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"398.439,-256.087 401.893,-262.942 398.593,-259.583 398.746,-263.08 398.746,-263.08 398.746,-263.08 398.593,-259.583 395.599,-263.218 398.439,-256.087 398.439,-256.087\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"351.61\" y=\"-281.67\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g class=\"node\" id=\"node8\"><title>6</title>\n",
"<ellipse cx=\"544.48\" cy=\"-184\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"539.98\" y=\"-187.8\">6</text>\n",
"<text fill=\"#faa43a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"536.48\" y=\"-172.8\">\u2777</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>1-&gt;6</title>\n",
"<path d=\"M411.629,-230.944C434.352,-228.525 467.918,-223.43 495.48,-213 502.31,-210.416 509.257,-206.856 515.668,-203.115\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"521.875,-199.343 517.529,-205.67 518.884,-201.161 515.893,-202.979 515.893,-202.979 515.893,-202.979 518.884,-201.161 514.257,-200.287 521.875,-199.343 521.875,-199.343\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"431.48\" y=\"-232.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge28\"><title>6-&gt;0</title>\n",
"<path d=\"M517.877,-180.201C510.652,-179.292 502.773,-178.454 495.48,-178 466.204,-176.177 458.793,-176.901 429.48,-178 287.074,-183.337 248.74,-170.58 109.74,-202 105.348,-202.993 100.814,-204.346 96.4013,-205.859\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"89.6066,-208.338 95.1027,-202.98 92.8946,-207.139 96.1825,-205.939 96.1825,-205.939 96.1825,-205.939 92.8946,-207.139 97.2624,-208.898 89.6066,-208.338 89.6066,-208.338\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"286.74\" y=\"-184.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge27\"><title>6-&gt;2</title>\n",
"<path d=\"M559.817,-161.694C568.196,-150.698 579.81,-138.442 593.48,-132 695.067,-84.1267 832.938,-108.053 899.306,-124.238\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"906.271,-125.973 898.717,-127.338 902.875,-125.127 899.479,-124.281 899.479,-124.281 899.479,-124.281 902.875,-125.127 900.24,-121.225 906.271,-125.973 906.271,-125.973\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"749.98\" y=\"-109.8\">!a &amp; c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge26\"><title>6-&gt;4</title>\n",
"<path d=\"M567.523,-170.16C603.954,-149.185 678.363,-114.459 735.35,-141 771.701,-157.93 799.104,-196.373 814.918,-223.71\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"818.497,-230.054 812.314,-225.505 816.777,-227.006 815.057,-223.957 815.057,-223.957 815.057,-223.957 816.777,-227.006 817.801,-222.41 818.497,-230.054 818.497,-230.054\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"669.48\" y=\"-144.8\">a &amp; !b &amp; c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge23\"><title>6-&gt;7</title>\n",
"<path d=\"M571.604,-185.866C597.679,-187.728 637.841,-190.597 666.188,-192.622\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"673.486,-193.143 666.279,-195.786 669.994,-192.894 666.503,-192.644 666.503,-192.644 666.503,-192.644 669.994,-192.894 666.728,-189.502 673.486,-193.143 673.486,-193.143\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"593.48\" y=\"-195.8\">a &amp; b &amp; c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge25\"><title>6-&gt;1</title>\n",
"<path d=\"M517.453,-181.748C493.585,-180.713 457.758,-181.807 429.48,-194 421.886,-197.275 414.697,-202.393 408.421,-207.856\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"402.928,-212.927 405.934,-205.865 405.5,-210.553 408.071,-208.179 408.071,-208.179 408.071,-208.179 405.5,-210.553 410.208,-210.493 402.928,-212.927 402.928,-212.927\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"429.48\" y=\"-197.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge24\"><title>6-&gt;6</title>\n",
"<path d=\"M530.287,-207.087C528.323,-218.6 533.054,-228.87 544.48,-228.87 553.407,-228.87 558.247,-222.602 559.001,-214.369\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"558.673,-207.087 562.135,-213.938 558.831,-210.583 558.988,-214.079 558.988,-214.079 558.988,-214.079 558.831,-210.583 555.841,-214.221 558.673,-207.087 558.673,-207.087\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"513.48\" y=\"-232.67\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge17\"><title>3-&gt;0</title>\n",
"<path d=\"M202.459,-286.266C193.615,-278.869 182.677,-270.693 171.74,-265 146.175,-251.694 136.002,-257.871 109.74,-246 104.351,-243.564 98.8195,-240.585 93.5779,-237.506\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"87.5841,-233.873 95.2031,-234.808 90.5771,-235.687 93.57,-237.502 93.57,-237.502 93.57,-237.502 90.5771,-235.687 91.937,-240.195 87.5841,-233.873 87.5841,-233.873\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"120.74\" y=\"-268.8\">!a &amp; !c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge14\"><title>3-&gt;2</title>\n",
"<path d=\"M234.252,-328.301C255.443,-373.06 307.823,-464 383.61,-464 383.61,-464 383.61,-464 832.35,-464 892.241,-464 923.07,-263.921 933.742,-175.82\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"934.595,-168.663 936.895,-175.986 934.181,-172.138 933.767,-175.614 933.767,-175.614 933.767,-175.614 934.181,-172.138 930.639,-175.241 934.595,-168.663 934.595,-168.663\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"604.48\" y=\"-467.8\">!a &amp; c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge13\"><title>3-&gt;4</title>\n",
"<path d=\"M249.402,-308.422C280.907,-313.459 336.021,-321 383.61,-321 383.61,-321 383.61,-321 701.48,-321 741.166,-321 780.763,-295.677 805.38,-276.168\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"811.005,-271.603 807.554,-278.46 808.287,-273.809 805.569,-276.014 805.569,-276.014 805.569,-276.014 808.287,-273.809 803.584,-273.568 811.005,-271.603 811.005,-271.603\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"513.48\" y=\"-324.8\">a &amp; !b &amp; c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge15\"><title>3-&gt;5</title>\n",
"<path d=\"M244.557,-319.891C253.147,-325.628 263.482,-331.538 273.74,-335 413.521,-382.177 592.763,-380.822 666.026,-377.85\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"673.194,-377.54 666.336,-380.989 669.697,-377.691 666.2,-377.842 666.2,-377.842 666.2,-377.842 669.697,-377.691 666.064,-374.695 673.194,-377.54 673.194,-377.54\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"433.48\" y=\"-378.8\">a &amp; b &amp; c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge12\"><title>3-&gt;1</title>\n",
"<path d=\"M247.674,-293.371C275.775,-280.891 322.431,-260.17 353.104,-246.548\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"359.774,-243.586 354.655,-249.306 356.575,-245.007 353.376,-246.427 353.376,-246.427 353.376,-246.427 356.575,-245.007 352.098,-243.548 359.774,-243.586 359.774,-243.586\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"273.74\" y=\"-285.8\">a &amp; !b &amp; !c</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge16\"><title>3-&gt;3</title>\n",
"<path d=\"M207.906,-326.625C205.623,-338.324 210.568,-348.87 222.74,-348.87 232.344,-348.87 237.449,-342.304 238.054,-333.787\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"237.575,-326.625 241.185,-333.399 237.808,-330.118 238.042,-333.61 238.042,-333.61 238.042,-333.61 237.808,-330.118 234.899,-333.82 237.575,-326.625 237.575,-326.625\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"191.74\" y=\"-352.67\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
}
],
"prompt_number": 14
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Corner cases\n",
"\n",
"Here is the reason we said there is almost nothing preventing the decomposition to work for any acceptance condition.\n",
"To disable SCCs like above, the `decompose_strength()` must be able to find a set of acceptance sets to put those SCCs\n",
"in such that they will be rejected. This is impossible if the acceptance condition is always satisifiable.\n",
"\n",
"This include acceptances like `Acceptance: 0 t`, but also trickier ones like `Acceptance: 1 Inf(0) | Fin(0)` that you can make as complex as you fancy.\n",
"\n",
"### `Acceptance: 0 t`\n",
"\n",
"This is the least problematic case. Because automata with this acceptance are necessary weak, there is reason to extract the **strong** strength, and extracting the other two strengths will work as expected:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"aut = spot.translate('(Gb|c) R a', 'any'); aut.show('.as')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 15,
"svg": [
"<svg height=\"225pt\" viewBox=\"0.00 0.00 232.00 225.00\" width=\"232pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 221)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-221 228,-221 228,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"109\" y=\"-201.8\">t</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"164,-101 164,-186 216,-186 216,-101 164,-101\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust2\"><title>cluster_1</title>\n",
"<polygon fill=\"none\" points=\"164,-8 164,-93 216,-93 216,-8 164,-8\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust3\"><title>cluster_2</title>\n",
"<polygon fill=\"none\" points=\"30,-15 30,-100 82,-100 82,-15 30,-15\" stroke=\"green\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\"><title>0</title>\n",
"<ellipse cx=\"56\" cy=\"-41\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-37.3\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;0</title>\n",
"<path d=\"M1.15491,-41C2.79388,-41 17.1543,-41 30.6317,-41\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.9419,-41 30.9419,-44.1501 34.4419,-41 30.9419,-41.0001 30.9419,-41.0001 30.9419,-41.0001 34.4419,-41 30.9418,-37.8501 37.9419,-41 37.9419,-41\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;0</title>\n",
"<path d=\"M49.6208,-58.0373C48.3189,-67.8579 50.4453,-77 56,-77 60.166,-77 62.4036,-71.8576 62.7128,-65.1433\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"62.3792,-58.0373 65.8541,-64.8818 62.5434,-61.5335 62.7076,-65.0296 62.7076,-65.0296 62.7076,-65.0296 62.5434,-61.5335 59.561,-65.1774 62.3792,-58.0373 62.3792,-58.0373\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"38\" y=\"-80.8\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node3\"><title>1</title>\n",
"<ellipse cx=\"190\" cy=\"-127\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"190\" y=\"-123.3\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>0-&gt;1</title>\n",
"<path d=\"M71.3776,-50.3672C94.7607,-65.6017 141.128,-95.8104 168.136,-113.407\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"174.237,-117.382 166.653,-116.2 171.305,-115.471 168.372,-113.561 168.372,-113.561 168.372,-113.561 171.305,-115.471 170.092,-110.921 174.237,-117.382 174.237,-117.382\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"107\" y=\"-106.8\">a &amp; c</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node4\"><title>2</title>\n",
"<ellipse cx=\"190\" cy=\"-34\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"190\" y=\"-30.3\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>0-&gt;2</title>\n",
"<path d=\"M73.9865,-40.0992C97.0267,-38.8774 138.324,-36.6874 164.657,-35.2909\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"171.66,-34.9196 164.836,-38.4359 168.164,-35.105 164.669,-35.2904 164.669,-35.2904 164.669,-35.2904 168.164,-35.105 164.503,-32.1448 171.66,-34.9196 171.66,-34.9196\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-43.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>1-&gt;1</title>\n",
"<path d=\"M179.087,-141.417C175.276,-152.166 178.914,-163 190,-163 198.661,-163 202.776,-156.387 202.344,-148.369\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"200.913,-141.417 205.41,-147.637 201.619,-144.845 202.325,-148.273 202.325,-148.273 202.325,-148.273 201.619,-144.845 199.239,-148.908 200.913,-141.417 200.913,-141.417\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"190\" y=\"-166.8\">1</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>2-&gt;2</title>\n",
"<path d=\"M179.087,-48.4167C175.276,-59.166 178.914,-70 190,-70 198.661,-70 202.776,-63.3875 202.344,-55.3688\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"200.913,-48.4167 205.41,-54.6375 201.619,-51.8447 202.325,-55.2728 202.325,-55.2728 202.325,-55.2728 201.619,-51.8447 199.239,-55.9082 200.913,-48.4167 200.913,-48.4167\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"185.5\" y=\"-73.8\">b</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
}
],
"prompt_number": 15
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# There is no strong part for this automaton\n",
"assert spot.decompose_strength(aut, 's') is None"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 16
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"for opt in ('w', 't'):\n",
" display(spot.decompose_strength(aut, opt).show('.as'))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"svg": [
"<svg height=\"140pt\" viewBox=\"0.00 0.00 248.00 140.00\" width=\"248pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 136)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-136 244,-136 244,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"99\" y=\"-117.8\">Inf(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"121\" y=\"-117.8\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"137\" y=\"-117.8\">)</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"172,-8 172,-101 232,-101 232,-8 172,-8\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust2\"><title>cluster_1</title>\n",
"<polygon fill=\"none\" points=\"30,-8 30,-101 90,-101 90,-8 30,-8\" stroke=\"green\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\"><title>0</title>\n",
"<ellipse cx=\"60\" cy=\"-38\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<ellipse cx=\"60\" cy=\"-38\" fill=\"none\" rx=\"22\" ry=\"22\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"60\" y=\"-34.3\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;0</title>\n",
"<path d=\"M1.16638,-38C2.84121,-38 16.884,-38 30.7112,-38\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.8555,-38 30.8556,-41.1501 34.3555,-38 30.8555,-38.0001 30.8555,-38.0001 30.8555,-38.0001 34.3555,-38 30.8555,-34.8501 37.8555,-38 37.8555,-38\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;0</title>\n",
"<path d=\"M52.6831,-58.9908C51.7798,-69.0872 54.2188,-78 60,-78 64.3359,-78 66.7918,-72.9866 67.3677,-66.2204\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"67.3169,-58.9908 70.5161,-65.9684 67.3415,-62.4907 67.3662,-65.9906 67.3662,-65.9906 67.3662,-65.9906 67.3415,-62.4907 64.2163,-66.0128 67.3169,-58.9908 67.3169,-58.9908\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"42\" y=\"-81.8\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node3\"><title>1</title>\n",
"<ellipse cx=\"202\" cy=\"-38\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<ellipse cx=\"202\" cy=\"-38\" fill=\"none\" rx=\"22\" ry=\"22\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"202\" y=\"-34.3\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>0-&gt;1</title>\n",
"<path d=\"M82.263,-38C106.455,-38 146.065,-38 172.815,-38\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"179.996,-38 172.996,-41.1501 176.496,-38 172.996,-38.0001 172.996,-38.0001 172.996,-38.0001 176.496,-38 172.996,-34.8501 179.996,-38 179.996,-38\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"100\" y=\"-41.8\">a &amp; b &amp; !c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>1-&gt;1</title>\n",
"<path d=\"M189.695,-56.5156C186.961,-67.5833 191.062,-78 202,-78 210.545,-78 214.918,-71.6422 215.118,-63.5831\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"214.305,-56.5156 218.234,-63.1097 214.705,-59.9927 215.105,-63.4698 215.105,-63.4698 215.105,-63.4698 214.705,-59.9927 211.975,-63.8298 214.305,-56.5156 214.305,-56.5156\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"197.5\" y=\"-81.8\">b</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
},
{
"metadata": {},
"output_type": "display_data",
"svg": [
"<svg height=\"140pt\" viewBox=\"0.00 0.00 210.00 140.00\" width=\"210pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 136)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-136 206,-136 206,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"80\" y=\"-117.8\">Inf(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"102\" y=\"-117.8\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"118\" y=\"-117.8\">)</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"134,-8 134,-101 194,-101 194,-8 134,-8\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust2\"><title>cluster_1</title>\n",
"<polygon fill=\"none\" points=\"30,-12 30,-97 82,-97 82,-12 30,-12\" stroke=\"red\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\"><title>0</title>\n",
"<ellipse cx=\"56\" cy=\"-38\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-34.3\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;0</title>\n",
"<path d=\"M1.15491,-38C2.79388,-38 17.1543,-38 30.6317,-38\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.9419,-38 30.9419,-41.1501 34.4419,-38 30.9419,-38.0001 30.9419,-38.0001 30.9419,-38.0001 34.4419,-38 30.9418,-34.8501 37.9419,-38 37.9419,-38\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;0</title>\n",
"<path d=\"M49.6208,-55.0373C48.3189,-64.8579 50.4453,-74 56,-74 60.166,-74 62.4036,-68.8576 62.7128,-62.1433\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"62.3792,-55.0373 65.8541,-61.8818 62.5434,-58.5335 62.7076,-62.0296 62.7076,-62.0296 62.7076,-62.0296 62.5434,-58.5335 59.561,-62.1774 62.3792,-55.0373 62.3792,-55.0373\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"38\" y=\"-77.8\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node3\"><title>1</title>\n",
"<ellipse cx=\"164\" cy=\"-38\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<ellipse cx=\"164\" cy=\"-38\" fill=\"none\" rx=\"22\" ry=\"22\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"164\" y=\"-34.3\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>0-&gt;1</title>\n",
"<path d=\"M74.0307,-38C90.429,-38 115.526,-38 134.888,-38\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"141.998,-38 134.998,-41.1501 138.498,-38 134.998,-38.0001 134.998,-38.0001 134.998,-38.0001 138.498,-38 134.998,-34.8501 141.998,-38 141.998,-38\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-41.8\">a &amp; c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>1-&gt;1</title>\n",
"<path d=\"M153.933,-57.7575C152.223,-68.3499 155.578,-78 164,-78 170.448,-78 173.926,-72.3433 174.435,-64.9379\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"174.067,-57.7575 177.571,-64.5871 174.246,-61.2529 174.425,-64.7483 174.425,-64.7483 174.425,-64.7483 174.246,-61.2529 171.279,-64.9095 174.067,-57.7575 174.067,-57.7575\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"164\" y=\"-81.8\">1</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
}
],
"prompt_number": 17
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If we try to extract multiple strengths and include the (empty) strong part, this request will simply be ignored:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"spot.decompose_strength(aut, 'st').show('.as')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 18,
"svg": [
"<svg height=\"140pt\" viewBox=\"0.00 0.00 210.00 140.00\" width=\"210pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 136)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-136 206,-136 206,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"80\" y=\"-117.8\">Inf(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"102\" y=\"-117.8\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"118\" y=\"-117.8\">)</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"134,-8 134,-101 194,-101 194,-8 134,-8\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust2\"><title>cluster_1</title>\n",
"<polygon fill=\"none\" points=\"30,-12 30,-97 82,-97 82,-12 30,-12\" stroke=\"red\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\"><title>0</title>\n",
"<ellipse cx=\"56\" cy=\"-38\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-34.3\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;0</title>\n",
"<path d=\"M1.15491,-38C2.79388,-38 17.1543,-38 30.6317,-38\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.9419,-38 30.9419,-41.1501 34.4419,-38 30.9419,-38.0001 30.9419,-38.0001 30.9419,-38.0001 34.4419,-38 30.9418,-34.8501 37.9419,-38 37.9419,-38\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;0</title>\n",
"<path d=\"M49.6208,-55.0373C48.3189,-64.8579 50.4453,-74 56,-74 60.166,-74 62.4036,-68.8576 62.7128,-62.1433\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"62.3792,-55.0373 65.8541,-61.8818 62.5434,-58.5335 62.7076,-62.0296 62.7076,-62.0296 62.7076,-62.0296 62.5434,-58.5335 59.561,-62.1774 62.3792,-55.0373 62.3792,-55.0373\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"38\" y=\"-77.8\">a &amp; !c</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node3\"><title>1</title>\n",
"<ellipse cx=\"164\" cy=\"-38\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<ellipse cx=\"164\" cy=\"-38\" fill=\"none\" rx=\"22\" ry=\"22\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"164\" y=\"-34.3\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>0-&gt;1</title>\n",
"<path d=\"M74.0307,-38C90.429,-38 115.526,-38 134.888,-38\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"141.998,-38 134.998,-41.1501 138.498,-38 134.998,-38.0001 134.998,-38.0001 134.998,-38.0001 138.498,-38 134.998,-34.8501 141.998,-38 141.998,-38\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-41.8\">a &amp; c</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>1-&gt;1</title>\n",
"<path d=\"M153.933,-57.7575C152.223,-68.3499 155.578,-78 164,-78 170.448,-78 173.926,-72.3433 174.435,-64.9379\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"174.067,-57.7575 177.571,-64.5871 174.246,-61.2529 174.425,-64.7483 174.425,-64.7483 174.425,-64.7483 174.246,-61.2529 171.279,-64.9095 174.067,-57.7575 174.067,-57.7575\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"164\" y=\"-81.8\">1</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
}
],
"prompt_number": 18
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that the above is exactly the output of `decompose_strength(aut, 't')`. The `'s'` flag was actively ignored. If `'s'` had not been ignored an the automaton processed as if its strong part had to be preserved, the original acceptance conditions would have been used, and this would have prevented the disabling of the initial SCC."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `Acceptance: 1 Inf(0) | Fin(0)`\n",
"\n",
"This acceptance could be replaced by `Acceptance: 0 t` without altering the language of the automaton. However its use of acceptance sets allows us to define some automata with strong SCCs."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"aut = spot.automaton(\"\"\"\n",
"HOA: v1\n",
"States: 4\n",
"Start: 0\n",
"AP: 1 \"a\"\n",
"Acceptance: 1 Inf(0) | Fin(0)\n",
"--BODY--\n",
"State: 0\n",
"[0] 0 \n",
"[!0] 1\n",
"State: 1\n",
"[0] 1 \n",
"[!0] 2 {0}\n",
"State: 2\n",
"[0] 1\n",
"[!0] 3\n",
"State: 3\n",
"[t] 3 {0}\n",
"--END--\n",
"\"\"\")\n",
"aut.show('.as')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 19,
"svg": [
"<svg height=\"149pt\" viewBox=\"0.00 0.00 352.00 149.00\" width=\"352pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 145)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-145 348,-145 348,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"123\" y=\"-126.8\">Inf(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"145\" y=\"-126.8\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"161\" y=\"-126.8\">) | Fin(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"201\" y=\"-126.8\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"217\" y=\"-126.8\">)</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"284,-9 284,-109 336,-109 336,-9 284,-9\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust2\"><title>cluster_1</title>\n",
"<polygon fill=\"none\" points=\"113,-8 113,-110 253,-110 253,-8 113,-8\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust3\"><title>cluster_2</title>\n",
"<polygon fill=\"none\" points=\"30,-16 30,-101 82,-101 82,-16 30,-16\" stroke=\"green\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\"><title>0</title>\n",
"<ellipse cx=\"56\" cy=\"-42\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-38.3\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;0</title>\n",
"<path d=\"M1.15491,-42C2.79388,-42 17.1543,-42 30.6317,-42\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.9419,-42 30.9419,-45.1501 34.4419,-42 30.9419,-42.0001 30.9419,-42.0001 30.9419,-42.0001 34.4419,-42 30.9418,-38.8501 37.9419,-42 37.9419,-42\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;0</title>\n",
"<path d=\"M49.6208,-59.0373C48.3189,-68.8579 50.4453,-78 56,-78 60.166,-78 62.4036,-72.8576 62.7128,-66.1433\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"62.3792,-59.0373 65.8541,-65.8818 62.5434,-62.5335 62.7076,-66.0296 62.7076,-66.0296 62.7076,-66.0296 62.5434,-62.5335 59.561,-66.1774 62.3792,-59.0373 62.3792,-59.0373\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"52.5\" y=\"-81.8\">a</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node4\"><title>1</title>\n",
"<ellipse cx=\"139\" cy=\"-42\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"139\" y=\"-38.3\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>0-&gt;1</title>\n",
"<path d=\"M74.178,-42C85.6688,-42 100.959,-42 113.693,-42\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"120.847,-42 113.847,-45.1501 117.347,-42 113.847,-42.0001 113.847,-42.0001 113.847,-42.0001 117.347,-42 113.847,-38.8501 120.847,-42 120.847,-42\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-45.8\">!a</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g class=\"node\" id=\"node3\"><title>3</title>\n",
"<ellipse cx=\"310\" cy=\"-35\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"310\" y=\"-31.3\">3</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge8\"><title>3-&gt;3</title>\n",
"<path d=\"M302.969,-51.6641C301.406,-61.625 303.75,-71 310,-71 314.688,-71 317.178,-65.7266 317.471,-58.8876\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"317.031,-51.6641 320.601,-58.4598 317.244,-55.1576 317.456,-58.6511 317.456,-58.6511 317.456,-58.6511 317.244,-55.1576 314.312,-58.8425 317.031,-51.6641 317.031,-51.6641\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"305.5\" y=\"-89.8\">1</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"302\" y=\"-74.8\">\u24ff</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>1-&gt;1</title>\n",
"<path d=\"M131.969,-58.6641C130.406,-68.625 132.75,-78 139,-78 143.688,-78 146.178,-72.7266 146.471,-65.8876\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"146.031,-58.6641 149.601,-65.4598 146.244,-62.1576 146.456,-65.6511 146.456,-65.6511 146.456,-65.6511 146.244,-62.1576 143.312,-65.8425 146.031,-58.6641 146.031,-58.6641\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"135.5\" y=\"-81.8\">a</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node5\"><title>2</title>\n",
"<ellipse cx=\"227\" cy=\"-35\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"227\" y=\"-31.3\">2</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>1-&gt;2</title>\n",
"<path d=\"M156.634,-37.9759C162.411,-36.7645 168.957,-35.5984 175,-35 183.723,-34.1363 193.326,-33.9406 201.825,-34.0254\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"208.959,-34.1624 201.899,-37.1773 205.459,-34.0952 201.96,-34.0279 201.96,-34.0279 201.96,-34.0279 205.459,-34.0952 202.02,-30.8785 208.959,-34.1624 208.959,-34.1624\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"177.5\" y=\"-53.8\">!a</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"175\" y=\"-38.8\">\u24ff</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge7\"><title>2-&gt;3</title>\n",
"<path d=\"M245.178,-35C256.669,-35 271.959,-35 284.693,-35\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"291.847,-35 284.847,-38.1501 288.347,-35 284.847,-35.0001 284.847,-35.0001 284.847,-35.0001 288.347,-35 284.847,-31.8501 291.847,-35 291.847,-35\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"263\" y=\"-38.8\">!a</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>2-&gt;1</title>\n",
"<path d=\"M214.797,-48.2695C208.535,-54.6404 200.157,-61.6125 191,-65 180.09,-69.0359 168.226,-64.2616 158.688,-58.0371\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"152.79,-53.8154 160.315,-55.3282 155.636,-55.8525 158.482,-57.8896 158.482,-57.8896 158.482,-57.8896 155.636,-55.8525 156.648,-60.4511 152.79,-53.8154 152.79,-53.8154\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"179.5\" y=\"-69.8\">a</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
}
],
"prompt_number": 19
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"By our definitions, SCC $\\{0\\}$ is stricly weak, SCC $\\{1,2\\}$ is strong, and SCC $\\{3\\}$ is terminal.\n",
"\n",
"However with this acceptance condition, we would be unable to extract only the strong behaviors: because that would require a way to disable the SCC $\\{0\\}$, and we cannot do that with this acceptance condition. This could be solved by adding a new acceptance set, but if we are about the modify the accepance condition, it seems wiser to simply it.\n",
"Our solution to this problem is that whenever an acceptance condition is always satisfiable, we consider the entire automaton as weak, and ignore all requests to extract the strong part. As a consequence, the output will always use B\u00fcchi acceptance."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"for (name, opt) in (('terminal', 't'), ('strictly weak', 'w'), ('strong', 's'), ('all strengths', 'swt')):\n",
" a = spot.decompose_strength(aut, opt)\n",
" if a:\n",
" a.set_name(name)\n",
" display(a.show('.asn'))\n",
" else:\n",
" print(\"no output for \" + name)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"svg": [
"<svg height=\"177pt\" viewBox=\"0.00 0.00 347.00 177.00\" width=\"347pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 173)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-173 343,-173 343,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"143.5\" y=\"-154.8\">terminal</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"148.5\" y=\"-140.8\">Inf(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"170.5\" y=\"-140.8\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"186.5\" y=\"-140.8\">)</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"279,-25 279,-125 331,-125 331,-25 279,-25\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust2\"><title>cluster_1</title>\n",
"<polygon fill=\"none\" points=\"113,-8 113,-95 248,-95 248,-8 113,-8\" stroke=\"red\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust3\"><title>cluster_2</title>\n",
"<polygon fill=\"none\" points=\"30,-9 30,-94 82,-94 82,-9 30,-9\" stroke=\"red\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\"><title>0</title>\n",
"<ellipse cx=\"56\" cy=\"-35\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-31.3\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;0</title>\n",
"<path d=\"M1.15491,-35C2.79388,-35 17.1543,-35 30.6317,-35\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.9419,-35 30.9419,-38.1501 34.4419,-35 30.9419,-35.0001 30.9419,-35.0001 30.9419,-35.0001 34.4419,-35 30.9418,-31.8501 37.9419,-35 37.9419,-35\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;0</title>\n",
"<path d=\"M49.6208,-52.0373C48.3189,-61.8579 50.4453,-71 56,-71 60.166,-71 62.4036,-65.8576 62.7128,-59.1433\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"62.3792,-52.0373 65.8541,-58.8818 62.5434,-55.5335 62.7076,-59.0296 62.7076,-59.0296 62.7076,-59.0296 62.5434,-55.5335 59.561,-59.1774 62.3792,-52.0373 62.3792,-52.0373\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"52.5\" y=\"-74.8\">a</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node4\"><title>1</title>\n",
"<ellipse cx=\"139\" cy=\"-35\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"139\" y=\"-31.3\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>0-&gt;1</title>\n",
"<path d=\"M74.178,-35C85.6688,-35 100.959,-35 113.693,-35\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"120.847,-35 113.847,-38.1501 117.347,-35 113.847,-35.0001 113.847,-35.0001 113.847,-35.0001 117.347,-35 113.847,-31.8501 120.847,-35 120.847,-35\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-38.8\">!a</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g class=\"node\" id=\"node3\"><title>3</title>\n",
"<ellipse cx=\"305\" cy=\"-51\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"305\" y=\"-47.3\">3</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge8\"><title>3-&gt;3</title>\n",
"<path d=\"M297.969,-67.6641C296.406,-77.625 298.75,-87 305,-87 309.688,-87 312.178,-81.7266 312.471,-74.8876\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"312.031,-67.6641 315.601,-74.4598 312.244,-71.1576 312.456,-74.6511 312.456,-74.6511 312.456,-74.6511 312.244,-71.1576 309.312,-74.8425 312.031,-67.6641 312.031,-67.6641\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"300.5\" y=\"-105.8\">1</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"297\" y=\"-90.8\">\u24ff</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>1-&gt;1</title>\n",
"<path d=\"M131.969,-51.6641C130.406,-61.625 132.75,-71 139,-71 143.688,-71 146.178,-65.7266 146.471,-58.8876\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"146.031,-51.6641 149.601,-58.4598 146.244,-55.1576 146.456,-58.6511 146.456,-58.6511 146.456,-58.6511 146.244,-55.1576 143.312,-58.8425 146.031,-51.6641 146.031,-51.6641\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"135.5\" y=\"-74.8\">a</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node5\"><title>2</title>\n",
"<ellipse cx=\"222\" cy=\"-51\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"222\" y=\"-47.3\">2</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>1-&gt;2</title>\n",
"<path d=\"M157.225,-33.2737C165.943,-32.8337 176.636,-32.9611 186,-35 190.456,-35.9701 195.023,-37.5602 199.326,-39.3707\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"205.816,-42.3398 198.14,-42.2922 202.634,-40.8838 199.451,-39.4277 199.451,-39.4277 199.451,-39.4277 202.634,-40.8838 200.761,-36.5632 205.816,-42.3398 205.816,-42.3398\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"175\" y=\"-38.8\">!a</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge7\"><title>2-&gt;3</title>\n",
"<path d=\"M240.178,-51C251.669,-51 266.959,-51 279.693,-51\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"286.847,-51 279.847,-54.1501 283.347,-51 279.847,-51.0001 279.847,-51.0001 279.847,-51.0001 283.347,-51 279.847,-47.8501 286.847,-51 286.847,-51\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"258\" y=\"-54.8\">!a</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>2-&gt;1</title>\n",
"<path d=\"M203.779,-52.1713C195.061,-52.3758 184.368,-52.0293 175,-50 170.59,-49.0448 166.044,-47.5328 161.748,-45.8287\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"155.258,-43.0453 162.932,-42.9093 158.474,-44.4248 161.691,-45.8044 161.691,-45.8044 161.691,-45.8044 158.474,-44.4248 160.449,-48.6994 155.258,-43.0453 155.258,-43.0453\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"177\" y=\"-54.8\">a</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
},
{
"metadata": {},
"output_type": "display_data",
"svg": [
"<svg height=\"177pt\" viewBox=\"0.00 0.00 274.00 177.00\" width=\"274pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 173)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-173 270,-173 270,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"93\" y=\"-154.8\">strictly weak</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"112\" y=\"-140.8\">Inf(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"134\" y=\"-140.8\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"150\" y=\"-140.8\">)</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"118,-8 118,-125 258,-125 258,-8 118,-8\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust2\"><title>cluster_1</title>\n",
"<polygon fill=\"none\" points=\"30,-8 30,-108 82,-108 82,-8 30,-8\" stroke=\"green\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\"><title>0</title>\n",
"<ellipse cx=\"56\" cy=\"-34\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-30.3\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;0</title>\n",
"<path d=\"M1.15491,-34C2.79388,-34 17.1543,-34 30.6317,-34\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.9419,-34 30.9419,-37.1501 34.4419,-34 30.9419,-34.0001 30.9419,-34.0001 30.9419,-34.0001 34.4419,-34 30.9418,-30.8501 37.9419,-34 37.9419,-34\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;0</title>\n",
"<path d=\"M49.6208,-51.0373C48.3189,-60.8579 50.4453,-70 56,-70 60.166,-70 62.4036,-64.8576 62.7128,-58.1433\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"62.3792,-51.0373 65.8541,-57.8818 62.5434,-54.5335 62.7076,-58.0296 62.7076,-58.0296 62.7076,-58.0296 62.5434,-54.5335 59.561,-58.1774 62.3792,-51.0373 62.3792,-51.0373\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"52.5\" y=\"-88.8\">a</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"48\" y=\"-73.8\">\u24ff</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node3\"><title>1</title>\n",
"<ellipse cx=\"144\" cy=\"-34\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"144\" y=\"-30.3\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>0-&gt;1</title>\n",
"<path d=\"M74.4034,-34C87.1928,-34 104.732,-34 118.874,-34\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"125.916,-34 118.916,-37.1501 122.416,-34 118.916,-34.0001 118.916,-34.0001 118.916,-34.0001 122.416,-34 118.916,-30.8501 125.916,-34 125.916,-34\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"94.5\" y=\"-52.8\">!a</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-37.8\">\u24ff</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>1-&gt;1</title>\n",
"<path d=\"M136.332,-50.2903C134.483,-60.3892 137.039,-70 144,-70 149.221,-70 151.964,-64.5939 152.229,-57.6304\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"151.668,-50.2903 155.342,-57.0299 151.935,-53.7801 152.201,-57.2699 152.201,-57.2699 152.201,-57.2699 151.935,-53.7801 149.06,-57.5099 151.668,-50.2903 151.668,-50.2903\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"140.5\" y=\"-88.8\">a</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"136\" y=\"-73.8\">\u24ff</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node4\"><title>2</title>\n",
"<ellipse cx=\"232\" cy=\"-60\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"232\" y=\"-56.3\">2</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>1-&gt;2</title>\n",
"<path d=\"M161.96,-31.857C172.091,-31.178 185.072,-31.3793 196,-35 201.682,-36.8824 207.237,-40.037 212.188,-43.4825\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"218.099,-47.9286 210.611,-46.2386 215.302,-45.8248 212.505,-43.7211 212.505,-43.7211 212.505,-43.7211 215.302,-45.8248 214.398,-41.2036 218.099,-47.9286 218.099,-47.9286\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"182.5\" y=\"-53.8\">!a</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"180\" y=\"-38.8\">\u24ff</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>2-&gt;1</title>\n",
"<path d=\"M214.424,-65.3135C204.197,-67.7042 190.981,-69.1637 180,-65 173.055,-62.3667 166.604,-57.6555 161.18,-52.6883\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"156.119,-47.7031 163.316,-50.3709 158.612,-50.1591 161.106,-52.6152 161.106,-52.6152 161.106,-52.6152 158.612,-50.1591 158.895,-54.8594 156.119,-47.7031 156.119,-47.7031\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"184.5\" y=\"-85.8\">a</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"180\" y=\"-70.8\">\u24ff</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"no output for strong\n"
]
},
{
"metadata": {},
"output_type": "display_data",
"svg": [
"<svg height=\"177pt\" viewBox=\"0.00 0.00 362.00 177.00\" width=\"362pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 173)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-173 358,-173 358,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"139\" y=\"-154.8\">all strengths</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"156\" y=\"-140.8\">Inf(</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"178\" y=\"-140.8\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"194\" y=\"-140.8\">)</text>\n",
"<g class=\"cluster\" id=\"clust1\"><title>cluster_0</title>\n",
"<polygon fill=\"none\" points=\"294,-12 294,-112 346,-112 346,-12 294,-12\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust2\"><title>cluster_1</title>\n",
"<polygon fill=\"none\" points=\"118,-8 118,-125 258,-125 258,-8 118,-8\" stroke=\"green\"/>\n",
"</g>\n",
"<g class=\"cluster\" id=\"clust3\"><title>cluster_2</title>\n",
"<polygon fill=\"none\" points=\"30,-16 30,-116 82,-116 82,-16 30,-16\" stroke=\"green\"/>\n",
"</g>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\"><title>0</title>\n",
"<ellipse cx=\"56\" cy=\"-42\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-38.3\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;0</title>\n",
"<path d=\"M1.15491,-42C2.79388,-42 17.1543,-42 30.6317,-42\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.9419,-42 30.9419,-45.1501 34.4419,-42 30.9419,-42.0001 30.9419,-42.0001 30.9419,-42.0001 34.4419,-42 30.9418,-38.8501 37.9419,-42 37.9419,-42\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;0</title>\n",
"<path d=\"M49.6208,-59.0373C48.3189,-68.8579 50.4453,-78 56,-78 60.166,-78 62.4036,-72.8576 62.7128,-66.1433\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"62.3792,-59.0373 65.8541,-65.8818 62.5434,-62.5335 62.7076,-66.0296 62.7076,-66.0296 62.7076,-66.0296 62.5434,-62.5335 59.561,-66.1774 62.3792,-59.0373 62.3792,-59.0373\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"52.5\" y=\"-96.8\">a</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"48\" y=\"-81.8\">\u24ff</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node4\"><title>1</title>\n",
"<ellipse cx=\"144\" cy=\"-42\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"144\" y=\"-38.3\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>0-&gt;1</title>\n",
"<path d=\"M74.4034,-42C87.1928,-42 104.732,-42 118.874,-42\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"125.916,-42 118.916,-45.1501 122.416,-42 118.916,-42.0001 118.916,-42.0001 118.916,-42.0001 122.416,-42 118.916,-38.8501 125.916,-42 125.916,-42\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"94.5\" y=\"-60.8\">!a</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-45.8\">\u24ff</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g class=\"node\" id=\"node3\"><title>3</title>\n",
"<ellipse cx=\"320\" cy=\"-38\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"320\" y=\"-34.3\">3</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge8\"><title>3-&gt;3</title>\n",
"<path d=\"M312.332,-54.2903C310.483,-64.3892 313.039,-74 320,-74 325.221,-74 327.964,-68.5939 328.229,-61.6304\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"327.668,-54.2903 331.342,-61.0299 327.935,-57.7801 328.201,-61.2699 328.201,-61.2699 328.201,-61.2699 327.935,-57.7801 325.06,-61.5099 327.668,-54.2903 327.668,-54.2903\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"315.5\" y=\"-92.8\">1</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"312\" y=\"-77.8\">\u24ff</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>1-&gt;1</title>\n",
"<path d=\"M136.332,-58.2903C134.483,-68.3892 137.039,-78 144,-78 149.221,-78 151.964,-72.5939 152.229,-65.6304\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"151.668,-58.2903 155.342,-65.0299 151.935,-61.7801 152.201,-65.2699 152.201,-65.2699 152.201,-65.2699 151.935,-61.7801 149.06,-65.5099 151.668,-58.2903 151.668,-58.2903\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"140.5\" y=\"-96.8\">a</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"136\" y=\"-81.8\">\u24ff</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node5\"><title>2</title>\n",
"<ellipse cx=\"232\" cy=\"-38\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"232\" y=\"-34.3\">2</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>1-&gt;2</title>\n",
"<path d=\"M161.634,-37.9759C167.411,-36.7645 173.957,-35.5984 180,-35 188.738,-34.1348 198.345,-34.3874 206.842,-35.0227\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"213.973,-35.661 206.72,-38.1743 210.487,-35.3489 207.001,-35.0368 207.001,-35.0368 207.001,-35.0368 210.487,-35.3489 207.282,-31.8994 213.973,-35.661 213.973,-35.661\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"182.5\" y=\"-53.8\">!a</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"180\" y=\"-38.8\">\u24ff</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge7\"><title>2-&gt;3</title>\n",
"<path d=\"M250.403,-38C263.193,-38 280.732,-38 294.874,-38\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"301.916,-38 294.916,-41.1501 298.416,-38 294.916,-38.0001 294.916,-38.0001 294.916,-38.0001 298.416,-38 294.916,-34.8501 301.916,-38 301.916,-38\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"270.5\" y=\"-56.8\">!a</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"268\" y=\"-41.8\">\u24ff</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>2-&gt;1</title>\n",
"<path d=\"M218.926,-50.5316C212.677,-56.1133 204.571,-62.0781 196,-65 185.14,-68.702 173.444,-64.0906 163.995,-58.0496\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"158.142,-53.9464 165.682,-55.3852 161.008,-55.9555 163.874,-57.9646 163.874,-57.9646 163.874,-57.9646 161.008,-55.9555 162.066,-60.5439 158.142,-53.9464 158.142,-53.9464\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"184.5\" y=\"-84.8\">a</text>\n",
"<text fill=\"#5da5da\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"180\" y=\"-69.8\">\u24ff</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
}
],
"prompt_number": 20
}
],
"metadata": {}
}
]
}