spot/tests/python/ltsmin-pml.ipynb
Alexandre Duret-Lutz a7051b32c8 dot: fix #393
* spot/twaalgos/dot.cc: Add support for option 'E', and default to
rectangle nodes for large labels.
* bin/common_aoutput.cc, NEWS: Document it.
* tests/core/alternating.test, tests/core/dstar.test,
tests/core/readsave.test, tests/core/sccdot.test,
tests/core/tgbagraph.test, tests/python/_product_weak.ipynb,
tests/python/alternation.ipynb, tests/python/atva16-fig2b.ipynb,
tests/python/automata.ipynb, tests/python/decompose.ipynb,
tests/python/gen.ipynb, tests/python/highlighting.ipynb,
tests/python/ltsmin-dve.ipynb, tests/python/ltsmin-pml.ipynb,
tests/python/parity.ipynb, tests/python/pdegen.py,
tests/python/satmin.ipynb, tests/python/stutter-inv.ipynb: Adjust all
test cases.
2020-04-29 21:14:36 +02:00

1378 lines
85 KiB
Text

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import spot\n",
"import spot.ltsmin\n",
"# The following line causes the notebook to exit with 77 if spins is not \n",
"# installed, therefore skipping this test in the test suite.\n",
"spot.ltsmin.require('spins')\n",
"spot.setup()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are two ways to load a Promela model: from a file or from a cell. \n",
"\n",
"Loading from a cell\n",
"-------------------\n",
"\n",
"Using the `%%pml` magic will save the model in a temporary file, call `spins` to compile it, load the resulting shared library, and store the result into an object whose name is passed as an argument to `%%pml`."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"SpinS Promela Compiler - version 1.1 (3-Feb-2015)\n",
"(C) University of Twente, Formal Methods and Tools group\n",
"\n",
"Parsing tmpfkmh8g4r.pml...\n",
"Parsing tmpfkmh8g4r.pml done (0.0 sec)\n",
"\n",
"Optimizing graphs...\n",
" StateMerging changed 0 states/transitions.\n",
" RemoveUselessActions changed 2 states/transitions.\n",
" RemoveUselessGotos changed 2 states/transitions.\n",
" RenumberAll changed 1 states/transitions.\n",
"Optimization done (0.0 sec)\n",
"\n",
"Generating next-state function ...\n",
" Instantiating processes\n",
" Statically binding references\n",
" Creating transitions\n",
"Generating next-state function done (0.0 sec)\n",
"\n",
"Creating state vector\n",
"Creating state labels\n",
"Generating transitions/state dependency matrices (2 / 3 slots) ... \n",
"\n",
" [.......... ]\n",
" [.................... ]\n",
" [.............................. ]\n",
" [........................................ ]\n",
" [..................................................]\n",
" Found 5 / 15 ( 33.3%) Guard/slot reads \n",
"\n",
" [......................... ]\n",
" [..................................................]\n",
" Found 6 / 6 (100.0%) Transition/slot tests \n",
"\n",
" [........ ]\n",
" [................ ]\n",
" [......................... ]\n",
" [................................. ]\n",
" [......................................... ]\n",
" [..................................................]\n",
" Found 2, 4, 4 / 18 ( 11.1%, 22.2%, 22.2%) Actions/slot r,W,w \n",
"\n",
" [......................... ]\n",
" [..................................................]\n",
" Found 2, 4, 4 / 6 ( 33.3%, 66.7%, 66.7%) Atomics/slot r,W,w \n",
"\n",
" [......................... ]\n",
" [..................................................]\n",
" Found 6, 4, 4 / 6 (100.0%, 66.7%, 66.7%) Transition/slot r,W,w \n",
"Generating transition/state dependency matrices done (0.0 sec)\n",
"\n",
"Generating guard dependency matrices (5 guards) ...\n",
"\n",
" [.... ]\n",
" [........ ]\n",
" [............ ]\n",
" [................ ]\n",
" [.................... ]\n",
" [......................... ]\n",
" [............................. ]\n",
" [................................. ]\n",
" [..................................... ]\n",
" [......................................... ]\n",
" Found 3 / 12 ( 25.0%) Guard/guard dependencies \n",
"\n",
" [..... ]\n",
" [.......... ]\n",
" [............... ]\n",
" [.................... ]\n",
" [......................... ]\n",
" [.............................. ]\n",
" [................................... ]\n",
" [........................................ ]\n",
" [............................................. ]\n",
" [..................................................]\n",
" Found 8 / 10 ( 80.0%) Transition/guard writes \n",
"\n",
" Found 4 / 4 (100.0%) Transition/transition writes \n",
"\n",
" [.... ]\n",
" [........ ]\n",
" [............ ]\n",
" [................ ]\n",
" [.................... ]\n",
" [......................... ]\n",
" [............................. ]\n",
" [................................. ]\n",
" [..................................... ]\n",
" [......................................... ]\n",
" Found 2 / 12 ( 16.7%) !MCE guards \n",
"\n",
" [......................... ]\n",
" Found 1 / 2 ( 50.0%) !MCE transitions \n",
"\n",
" [.. ]\n",
" [.... ]\n",
" [...... ]\n",
" [........ ]\n",
" [.......... ]\n",
" [............ ]\n",
" [.............. ]\n",
" [................ ]\n",
" [.................. ]\n",
" [.................... ]\n",
" [...................... ]\n",
" [........................ ]\n",
" [.......................... ]\n",
" [............................ ]\n",
" [.............................. ]\n",
" [................................ ]\n",
" [.................................. ]\n",
" [.................................... ]\n",
" [...................................... ]\n",
" [........................................ ]\n",
" [.......................................... ]\n",
" [............................................ ]\n",
" [.............................................. ]\n",
" [................................................ ]\n",
" [..................................................]\n",
" Found 7 / 25 ( 28.0%) !ICE guards \n",
"\n",
" [..... ]\n",
" [.......... ]\n",
" [............... ]\n",
" [.................... ]\n",
" [......................... ]\n",
" [.............................. ]\n",
" [................................... ]\n",
" [........................................ ]\n",
" [............................................. ]\n",
" [..................................................]\n",
" Found 10 / 10 (100.0%) !NES guards \n",
"\n",
" [............ ]\n",
" [......................... ]\n",
" [..................................... ]\n",
" [..................................................]\n",
" Found 4 / 4 (100.0%) !NES transitions \n",
"\n",
" [..... ]\n",
" [.......... ]\n",
" [............... ]\n",
" [.................... ]\n",
" [......................... ]\n",
" [.............................. ]\n",
" [................................... ]\n",
" [........................................ ]\n",
" [............................................. ]\n",
" [..................................................]\n",
" Found 8 / 10 ( 80.0%) !NDS guards \n",
"\n",
" [..... ]\n",
" [.......... ]\n",
" [............... ]\n",
" [.................... ]\n",
" [......................... ]\n",
" [.............................. ]\n",
" [................................... ]\n",
" [........................................ ]\n",
" [............................................. ]\n",
" [..................................................]\n",
" Found 0 / 10 ( 0.0%) MDS guards \n",
"\n",
" [..... ]\n",
" [.......... ]\n",
" [............... ]\n",
" [.................... ]\n",
" [......................... ]\n",
" [.............................. ]\n",
" [................................... ]\n",
" [........................................ ]\n",
" [............................................. ]\n",
" [..................................................]\n",
" Found 4 / 10 ( 40.0%) MES guards \n",
"\n",
" [............ ]\n",
" [......................... ]\n",
" [..................................... ]\n",
" [..................................................]\n",
" Found 0 / 4 ( 0.0%) !NDS transitions \n",
"\n",
" [......................... ]\n",
" Found 0 / 2 ( 0.0%) !DNA transitions \n",
"\n",
" [......................... ]\n",
" [..................................................]\n",
" [..................................................]\n",
" Found 2 / 2 (100.0%) Commuting actions \n",
"Generating guard dependency matrices done (0.0 sec)\n",
"\n",
"Written C code to /home/adl/git/spot/tests/python/tmpfkmh8g4r.pml.spins.c\n",
"Compiled C code to PINS library tmpfkmh8g4r.pml.spins\n",
"\n"
]
}
],
"source": [
"%%pml model\n",
"active proctype P() {\n",
"int a = 0;\n",
"int b = 0;\n",
"x: if\n",
" :: d_step {a < 3 && b < 3; a = a + 1; } goto x;\n",
" :: d_step {a < 3 && b < 3; b = b + 1; } goto x;\n",
"fi;\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Yes, the `spins` compiler is quite verbose. Printing the resulting `model` object will show information about the variables in that model. "
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"ltsmin model with the following variables:\n",
" P_0._pc: pc\n",
" P_0.a: int\n",
" P_0.b: int"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To instantiate a Kripke structure, one should provide a list of atomic proposition to observe."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"734pt\" height=\"135pt\"\n",
" viewBox=\"0.00 0.00 734.00 134.56\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(0.4672897196261682 0.4672897196261682) rotate(0) translate(4 284)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-284 1567,-284 1567,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"778.5\" y=\"-264.8\" font-family=\"Lato\" font-size=\"14.00\">t</text>\n",
"<text text-anchor=\"start\" x=\"770.5\" y=\"-249.8\" font-family=\"Lato\" font-size=\"14.00\">[all]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<path fill=\"#ffffaa\" stroke=\"black\" d=\"M249,-140C249,-140 49,-140 49,-140 43,-140 37,-134 37,-128 37,-128 37,-114 37,-114 37,-108 43,-102 49,-102 49,-102 249,-102 249,-102 255,-102 261,-108 261,-114 261,-114 261,-128 261,-128 261,-134 255,-140 249,-140\"/>\n",
"<text text-anchor=\"start\" x=\"60\" y=\"-124.8\" font-family=\"Lato\" font-size=\"14.00\">P_0._pc=0, P_0.a=0, P_0.b=0</text>\n",
"<text text-anchor=\"start\" x=\"45\" y=\"-109.8\" font-family=\"Lato\" font-size=\"14.00\">&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; !dead</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.11,-121C2.32,-121 13.71,-121 29.67,-121\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"36.78,-121 29.78,-124.15 33.28,-121 29.78,-121 29.78,-121 29.78,-121 33.28,-121 29.78,-117.85 36.78,-121 36.78,-121\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<path fill=\"#ffffaa\" stroke=\"black\" d=\"M509,-168C509,-168 309,-168 309,-168 303,-168 297,-162 297,-156 297,-156 297,-142 297,-142 297,-136 303,-130 309,-130 309,-130 509,-130 509,-130 515,-130 521,-136 521,-142 521,-142 521,-156 521,-156 521,-162 515,-168 509,-168\"/>\n",
"<text text-anchor=\"start\" x=\"320\" y=\"-152.8\" font-family=\"Lato\" font-size=\"14.00\">P_0._pc=0, P_0.a=1, P_0.b=0</text>\n",
"<text text-anchor=\"start\" x=\"305\" y=\"-137.8\" font-family=\"Lato\" font-size=\"14.00\">&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; !dead</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M261.29,-133.08C270.63,-134.09 280.11,-135.12 289.5,-136.14\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"296.67,-136.92 289.37,-139.29 293.19,-136.54 289.71,-136.16 289.71,-136.16 289.71,-136.16 293.19,-136.54 290.05,-133.03 296.67,-136.92 296.67,-136.92\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<path fill=\"#ffffaa\" stroke=\"black\" d=\"M509,-112C509,-112 309,-112 309,-112 303,-112 297,-106 297,-100 297,-100 297,-86 297,-86 297,-80 303,-74 309,-74 309,-74 509,-74 509,-74 515,-74 521,-80 521,-86 521,-86 521,-100 521,-100 521,-106 515,-112 509,-112\"/>\n",
"<text text-anchor=\"start\" x=\"320\" y=\"-96.8\" font-family=\"Lato\" font-size=\"14.00\">P_0._pc=0, P_0.a=0, P_0.b=1</text>\n",
"<text text-anchor=\"start\" x=\"305\" y=\"-81.8\" font-family=\"Lato\" font-size=\"14.00\">&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; !dead</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M261.29,-108.92C270.63,-107.91 280.11,-106.88 289.5,-105.86\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"296.67,-105.08 290.05,-108.97 293.19,-105.46 289.71,-105.84 289.71,-105.84 289.71,-105.84 293.19,-105.46 289.37,-102.71 296.67,-105.08 296.67,-105.08\"/>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>3</title>\n",
"<path fill=\"#ffffaa\" stroke=\"black\" d=\"M772,-196C772,-196 569,-196 569,-196 563,-196 557,-190 557,-184 557,-184 557,-170 557,-170 557,-164 563,-158 569,-158 569,-158 772,-158 772,-158 778,-158 784,-164 784,-170 784,-170 784,-184 784,-184 784,-190 778,-196 772,-196\"/>\n",
"<text text-anchor=\"start\" x=\"581.5\" y=\"-180.8\" font-family=\"Lato\" font-size=\"14.00\">P_0._pc=0, P_0.a=2, P_0.b=0</text>\n",
"<text text-anchor=\"start\" x=\"565\" y=\"-165.8\" font-family=\"Lato\" font-size=\"14.00\">!&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; !dead</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;3 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M521.18,-161C530.7,-162.02 540.36,-163.07 549.94,-164.1\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"556.9,-164.85 549.6,-167.23 553.42,-164.47 549.94,-164.1 549.94,-164.1 549.94,-164.1 553.42,-164.47 550.28,-160.97 556.9,-164.85 556.9,-164.85\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>4</title>\n",
"<path fill=\"#ffffaa\" stroke=\"black\" d=\"M770.5,-140C770.5,-140 570.5,-140 570.5,-140 564.5,-140 558.5,-134 558.5,-128 558.5,-128 558.5,-114 558.5,-114 558.5,-108 564.5,-102 570.5,-102 570.5,-102 770.5,-102 770.5,-102 776.5,-102 782.5,-108 782.5,-114 782.5,-114 782.5,-128 782.5,-128 782.5,-134 776.5,-140 770.5,-140\"/>\n",
"<text text-anchor=\"start\" x=\"581.5\" y=\"-124.8\" font-family=\"Lato\" font-size=\"14.00\">P_0._pc=0, P_0.a=1, P_0.b=1</text>\n",
"<text text-anchor=\"start\" x=\"566.5\" y=\"-109.8\" font-family=\"Lato\" font-size=\"14.00\">&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; !dead</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;4 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>1&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M521.18,-137C531.03,-135.94 541.03,-134.86 550.94,-133.79\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"558.14,-133.02 551.52,-136.9 554.66,-133.39 551.18,-133.77 551.18,-133.77 551.18,-133.77 554.66,-133.39 550.84,-130.64 558.14,-133.02 558.14,-133.02\"/>\n",
"</g>\n",
"<!-- 2&#45;&gt;4 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>2&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M521.18,-105C531.03,-106.06 541.03,-107.14 550.94,-108.21\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"558.14,-108.98 550.84,-111.36 554.66,-108.61 551.18,-108.23 551.18,-108.23 551.18,-108.23 554.66,-108.61 551.52,-105.1 558.14,-108.98 558.14,-108.98\"/>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>5</title>\n",
"<path fill=\"#ffffaa\" stroke=\"black\" d=\"M768.5,-84C768.5,-84 572.5,-84 572.5,-84 566.5,-84 560.5,-78 560.5,-72 560.5,-72 560.5,-58 560.5,-58 560.5,-52 566.5,-46 572.5,-46 572.5,-46 768.5,-46 768.5,-46 774.5,-46 780.5,-52 780.5,-58 780.5,-58 780.5,-72 780.5,-72 780.5,-78 774.5,-84 768.5,-84\"/>\n",
"<text text-anchor=\"start\" x=\"581.5\" y=\"-68.8\" font-family=\"Lato\" font-size=\"14.00\">P_0._pc=0, P_0.a=0, P_0.b=2</text>\n",
"<text text-anchor=\"start\" x=\"568.5\" y=\"-53.8\" font-family=\"Lato\" font-size=\"14.00\">&quot;P_0.a &lt; 2&quot; &amp; &quot;P_0.b &gt; 1&quot; &amp; !dead</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;5 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>2&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M521.18,-81C531.79,-79.86 542.56,-78.7 553.22,-77.55\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"560.2,-76.79 553.58,-80.68 556.72,-77.17 553.24,-77.54 553.24,-77.54 553.24,-77.54 556.72,-77.17 552.9,-74.41 560.2,-76.79 560.2,-76.79\"/>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>6</title>\n",
"<path fill=\"#ffffaa\" stroke=\"black\" d=\"M1033.5,-224C1033.5,-224 833.5,-224 833.5,-224 827.5,-224 821.5,-218 821.5,-212 821.5,-212 821.5,-198 821.5,-198 821.5,-192 827.5,-186 833.5,-186 833.5,-186 1033.5,-186 1033.5,-186 1039.5,-186 1045.5,-192 1045.5,-198 1045.5,-198 1045.5,-212 1045.5,-212 1045.5,-218 1039.5,-224 1033.5,-224\"/>\n",
"<text text-anchor=\"start\" x=\"844.5\" y=\"-208.8\" font-family=\"Lato\" font-size=\"14.00\">P_0._pc=0, P_0.a=3, P_0.b=0</text>\n",
"<text text-anchor=\"start\" x=\"829.5\" y=\"-193.8\" font-family=\"Lato\" font-size=\"14.00\">!&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; dead</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;6 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>3&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M784.08,-189.08C793.96,-190.14 803.98,-191.21 813.91,-192.28\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"821.12,-193.05 813.82,-195.44 817.64,-192.68 814.16,-192.3 814.16,-192.3 814.16,-192.3 817.64,-192.68 814.5,-189.17 821.12,-193.05 821.12,-193.05\"/>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>7</title>\n",
"<path fill=\"#ffffaa\" stroke=\"black\" d=\"M1035,-168C1035,-168 832,-168 832,-168 826,-168 820,-162 820,-156 820,-156 820,-142 820,-142 820,-136 826,-130 832,-130 832,-130 1035,-130 1035,-130 1041,-130 1047,-136 1047,-142 1047,-142 1047,-156 1047,-156 1047,-162 1041,-168 1035,-168\"/>\n",
"<text text-anchor=\"start\" x=\"844.5\" y=\"-152.8\" font-family=\"Lato\" font-size=\"14.00\">P_0._pc=0, P_0.a=2, P_0.b=1</text>\n",
"<text text-anchor=\"start\" x=\"828\" y=\"-137.8\" font-family=\"Lato\" font-size=\"14.00\">!&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; !dead</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;7 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>3&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M784.08,-164.92C793.63,-163.9 803.31,-162.86 812.91,-161.83\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"819.88,-161.08 813.25,-164.96 816.4,-161.46 812.92,-161.83 812.92,-161.83 812.92,-161.83 816.4,-161.46 812.58,-158.7 819.88,-161.08 819.88,-161.08\"/>\n",
"</g>\n",
"<!-- 4&#45;&gt;7 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>4&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M782.57,-132.92C792.6,-133.99 802.79,-135.08 812.89,-136.17\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"819.87,-136.92 812.57,-139.3 816.39,-136.54 812.91,-136.17 812.91,-136.17 812.91,-136.17 816.39,-136.54 813.24,-133.04 819.87,-136.92 819.87,-136.92\"/>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>8</title>\n",
"<path fill=\"#ffffaa\" stroke=\"black\" d=\"M1031.5,-112C1031.5,-112 835.5,-112 835.5,-112 829.5,-112 823.5,-106 823.5,-100 823.5,-100 823.5,-86 823.5,-86 823.5,-80 829.5,-74 835.5,-74 835.5,-74 1031.5,-74 1031.5,-74 1037.5,-74 1043.5,-80 1043.5,-86 1043.5,-86 1043.5,-100 1043.5,-100 1043.5,-106 1037.5,-112 1031.5,-112\"/>\n",
"<text text-anchor=\"start\" x=\"844.5\" y=\"-96.8\" font-family=\"Lato\" font-size=\"14.00\">P_0._pc=0, P_0.a=1, P_0.b=2</text>\n",
"<text text-anchor=\"start\" x=\"831.5\" y=\"-81.8\" font-family=\"Lato\" font-size=\"14.00\">&quot;P_0.a &lt; 2&quot; &amp; &quot;P_0.b &gt; 1&quot; &amp; !dead</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;8 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>4&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M782.57,-109.08C793.61,-107.9 804.84,-106.7 815.93,-105.51\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"823.2,-104.73 816.57,-108.6 819.72,-105.1 816.24,-105.47 816.24,-105.47 816.24,-105.47 819.72,-105.1 815.9,-102.34 823.2,-104.73 823.2,-104.73\"/>\n",
"</g>\n",
"<!-- 5&#45;&gt;8 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>5&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M780.68,-76.71C792.47,-77.98 804.5,-79.27 816.37,-80.54\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"823.34,-81.29 816.05,-83.67 819.86,-80.92 816.38,-80.54 816.38,-80.54 816.38,-80.54 819.86,-80.92 816.72,-77.41 823.34,-81.29 823.34,-81.29\"/>\n",
"</g>\n",
"<!-- 9 -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>9</title>\n",
"<path fill=\"#ffffaa\" stroke=\"black\" d=\"M1029.5,-38C1029.5,-38 837.5,-38 837.5,-38 831.5,-38 825.5,-32 825.5,-26 825.5,-26 825.5,-12 825.5,-12 825.5,-6 831.5,0 837.5,0 837.5,0 1029.5,0 1029.5,0 1035.5,0 1041.5,-6 1041.5,-12 1041.5,-12 1041.5,-26 1041.5,-26 1041.5,-32 1035.5,-38 1029.5,-38\"/>\n",
"<text text-anchor=\"start\" x=\"844.5\" y=\"-22.8\" font-family=\"Lato\" font-size=\"14.00\">P_0._pc=0, P_0.a=0, P_0.b=3</text>\n",
"<text text-anchor=\"start\" x=\"833.5\" y=\"-7.8\" font-family=\"Lato\" font-size=\"14.00\">&quot;P_0.a &lt; 2&quot; &amp; &quot;P_0.b &gt; 1&quot; &amp; dead</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;9 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>5&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M779.54,-45.96C792.32,-43.71 805.4,-41.4 818.26,-39.13\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"825.38,-37.88 819.03,-42.2 821.93,-38.49 818.49,-39.09 818.49,-39.09 818.49,-39.09 821.93,-38.49 817.94,-35.99 825.38,-37.88 825.38,-37.88\"/>\n",
"</g>\n",
"<!-- 6&#45;&gt;6 -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>6&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M886.19,-224.04C879.64,-233.53 895.41,-242 933.5,-242 961.47,-242 977.4,-237.43 981.3,-231.25\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"980.81,-224.04 984.43,-230.81 981.05,-227.53 981.29,-231.02 981.29,-231.02 981.29,-231.02 981.05,-227.53 978.14,-231.24 980.81,-224.04 980.81,-224.04\"/>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>10</title>\n",
"<path fill=\"#ffffaa\" stroke=\"black\" d=\"M1295,-196C1295,-196 1095,-196 1095,-196 1089,-196 1083,-190 1083,-184 1083,-184 1083,-170 1083,-170 1083,-164 1089,-158 1095,-158 1095,-158 1295,-158 1295,-158 1301,-158 1307,-164 1307,-170 1307,-170 1307,-184 1307,-184 1307,-190 1301,-196 1295,-196\"/>\n",
"<text text-anchor=\"start\" x=\"1106\" y=\"-180.8\" font-family=\"Lato\" font-size=\"14.00\">P_0._pc=0, P_0.a=3, P_0.b=1</text>\n",
"<text text-anchor=\"start\" x=\"1091\" y=\"-165.8\" font-family=\"Lato\" font-size=\"14.00\">!&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; dead</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;10 -->\n",
"<g id=\"edge15\" class=\"edge\">\n",
"<title>7&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1047.19,-161.16C1056.56,-162.17 1066.06,-163.19 1075.47,-164.21\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1082.65,-164.99 1075.36,-167.37 1079.17,-164.61 1075.69,-164.23 1075.69,-164.23 1075.69,-164.23 1079.17,-164.61 1076.03,-161.1 1082.65,-164.99 1082.65,-164.99\"/>\n",
"</g>\n",
"<!-- 11 -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>11</title>\n",
"<path fill=\"#ffffaa\" stroke=\"black\" d=\"M1295,-140C1295,-140 1095,-140 1095,-140 1089,-140 1083,-134 1083,-128 1083,-128 1083,-114 1083,-114 1083,-108 1089,-102 1095,-102 1095,-102 1295,-102 1295,-102 1301,-102 1307,-108 1307,-114 1307,-114 1307,-128 1307,-128 1307,-134 1301,-140 1295,-140\"/>\n",
"<text text-anchor=\"start\" x=\"1106\" y=\"-124.8\" font-family=\"Lato\" font-size=\"14.00\">P_0._pc=0, P_0.a=2, P_0.b=2</text>\n",
"<text text-anchor=\"start\" x=\"1091\" y=\"-109.8\" font-family=\"Lato\" font-size=\"14.00\">!&quot;P_0.a &lt; 2&quot; &amp; &quot;P_0.b &gt; 1&quot; &amp; !dead</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;11 -->\n",
"<g id=\"edge16\" class=\"edge\">\n",
"<title>7&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1047.19,-136.84C1056.56,-135.83 1066.06,-134.81 1075.47,-133.79\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1082.65,-133.01 1076.03,-136.9 1079.17,-133.39 1075.69,-133.77 1075.69,-133.77 1075.69,-133.77 1079.17,-133.39 1075.36,-130.63 1082.65,-133.01 1082.65,-133.01\"/>\n",
"</g>\n",
"<!-- 8&#45;&gt;11 -->\n",
"<g id=\"edge17\" class=\"edge\">\n",
"<title>8&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1043.8,-104.79C1054.37,-105.93 1065.12,-107.09 1075.77,-108.24\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1082.75,-109 1075.45,-111.38 1079.27,-108.62 1075.79,-108.24 1075.79,-108.24 1075.79,-108.24 1079.27,-108.62 1076.13,-105.11 1082.75,-109 1082.75,-109\"/>\n",
"</g>\n",
"<!-- 12 -->\n",
"<g id=\"node14\" class=\"node\">\n",
"<title>12</title>\n",
"<path fill=\"#ffffaa\" stroke=\"black\" d=\"M1291,-66C1291,-66 1099,-66 1099,-66 1093,-66 1087,-60 1087,-54 1087,-54 1087,-40 1087,-40 1087,-34 1093,-28 1099,-28 1099,-28 1291,-28 1291,-28 1297,-28 1303,-34 1303,-40 1303,-40 1303,-54 1303,-54 1303,-60 1297,-66 1291,-66\"/>\n",
"<text text-anchor=\"start\" x=\"1106\" y=\"-50.8\" font-family=\"Lato\" font-size=\"14.00\">P_0._pc=0, P_0.a=1, P_0.b=3</text>\n",
"<text text-anchor=\"start\" x=\"1095\" y=\"-35.8\" font-family=\"Lato\" font-size=\"14.00\">&quot;P_0.a &lt; 2&quot; &amp; &quot;P_0.b &gt; 1&quot; &amp; dead</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;12 -->\n",
"<g id=\"edge18\" class=\"edge\">\n",
"<title>8&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1041.92,-73.96C1054.39,-71.75 1067.15,-69.49 1079.71,-67.26\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1086.66,-66.03 1080.32,-70.35 1083.21,-66.64 1079.77,-67.25 1079.77,-67.25 1079.77,-67.25 1083.21,-66.64 1079.22,-64.15 1086.66,-66.03 1086.66,-66.03\"/>\n",
"</g>\n",
"<!-- 9&#45;&gt;9 -->\n",
"<g id=\"edge19\" class=\"edge\">\n",
"<title>9&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M886.19,-38.04C879.64,-47.53 895.41,-56 933.5,-56 961.47,-56 977.4,-51.43 981.3,-45.25\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"980.81,-38.04 984.43,-44.81 981.05,-41.53 981.29,-45.02 981.29,-45.02 981.29,-45.02 981.05,-41.53 978.14,-45.24 980.81,-38.04 980.81,-38.04\"/>\n",
"</g>\n",
"<!-- 10&#45;&gt;10 -->\n",
"<g id=\"edge20\" class=\"edge\">\n",
"<title>10&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1148.05,-196.04C1141.56,-205.53 1157.21,-214 1195,-214 1222.75,-214 1238.57,-209.43 1242.43,-203.25\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1241.95,-196.04 1245.56,-202.81 1242.18,-199.53 1242.42,-203.02 1242.42,-203.02 1242.42,-203.02 1242.18,-199.53 1239.28,-203.23 1241.95,-196.04 1241.95,-196.04\"/>\n",
"</g>\n",
"<!-- 13 -->\n",
"<g id=\"node15\" class=\"node\">\n",
"<title>13</title>\n",
"<path fill=\"#ffffaa\" stroke=\"black\" d=\"M1551,-177C1551,-177 1355,-177 1355,-177 1349,-177 1343,-171 1343,-165 1343,-165 1343,-151 1343,-151 1343,-145 1349,-139 1355,-139 1355,-139 1551,-139 1551,-139 1557,-139 1563,-145 1563,-151 1563,-151 1563,-165 1563,-165 1563,-171 1557,-177 1551,-177\"/>\n",
"<text text-anchor=\"start\" x=\"1364\" y=\"-161.8\" font-family=\"Lato\" font-size=\"14.00\">P_0._pc=0, P_0.a=3, P_0.b=2</text>\n",
"<text text-anchor=\"start\" x=\"1351\" y=\"-146.8\" font-family=\"Lato\" font-size=\"14.00\">!&quot;P_0.a &lt; 2&quot; &amp; &quot;P_0.b &gt; 1&quot; &amp; dead</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;13 -->\n",
"<g id=\"edge21\" class=\"edge\">\n",
"<title>11&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1307.17,-137.07C1316.72,-138.45 1326.41,-139.85 1336,-141.23\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1342.96,-142.24 1335.58,-144.36 1339.5,-141.74 1336.04,-141.24 1336.04,-141.24 1336.04,-141.24 1339.5,-141.74 1336.49,-138.12 1342.96,-142.24 1342.96,-142.24\"/>\n",
"</g>\n",
"<!-- 14 -->\n",
"<g id=\"node16\" class=\"node\">\n",
"<title>14</title>\n",
"<path fill=\"#ffffaa\" stroke=\"black\" d=\"M1551,-103C1551,-103 1355,-103 1355,-103 1349,-103 1343,-97 1343,-91 1343,-91 1343,-77 1343,-77 1343,-71 1349,-65 1355,-65 1355,-65 1551,-65 1551,-65 1557,-65 1563,-71 1563,-77 1563,-77 1563,-91 1563,-91 1563,-97 1557,-103 1551,-103\"/>\n",
"<text text-anchor=\"start\" x=\"1364\" y=\"-87.8\" font-family=\"Lato\" font-size=\"14.00\">P_0._pc=0, P_0.a=2, P_0.b=3</text>\n",
"<text text-anchor=\"start\" x=\"1351\" y=\"-72.8\" font-family=\"Lato\" font-size=\"14.00\">!&quot;P_0.a &lt; 2&quot; &amp; &quot;P_0.b &gt; 1&quot; &amp; dead</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;14 -->\n",
"<g id=\"edge22\" class=\"edge\">\n",
"<title>11&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1307.17,-104.93C1316.72,-103.55 1326.41,-102.15 1336,-100.77\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1342.96,-99.76 1336.49,-103.88 1339.5,-100.26 1336.04,-100.76 1336.04,-100.76 1336.04,-100.76 1339.5,-100.26 1335.58,-97.64 1342.96,-99.76 1342.96,-99.76\"/>\n",
"</g>\n",
"<!-- 12&#45;&gt;12 -->\n",
"<g id=\"edge23\" class=\"edge\">\n",
"<title>12&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1148.05,-66.04C1141.56,-75.53 1157.21,-84 1195,-84 1222.75,-84 1238.57,-79.43 1242.43,-73.25\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1241.95,-66.04 1245.56,-72.81 1242.18,-69.53 1242.42,-73.02 1242.42,-73.02 1242.42,-73.02 1242.18,-69.53 1239.28,-73.23 1241.95,-66.04 1241.95,-66.04\"/>\n",
"</g>\n",
"<!-- 13&#45;&gt;13 -->\n",
"<g id=\"edge24\" class=\"edge\">\n",
"<title>13&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1406.05,-177.04C1399.56,-186.53 1415.21,-195 1453,-195 1480.75,-195 1496.57,-190.43 1500.43,-184.25\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1499.95,-177.04 1503.56,-183.81 1500.18,-180.53 1500.42,-184.02 1500.42,-184.02 1500.42,-184.02 1500.18,-180.53 1497.28,-184.23 1499.95,-177.04 1499.95,-177.04\"/>\n",
"</g>\n",
"<!-- 14&#45;&gt;14 -->\n",
"<g id=\"edge25\" class=\"edge\">\n",
"<title>14&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1406.05,-103.04C1399.56,-112.53 1415.21,-121 1453,-121 1480.75,-121 1496.57,-116.43 1500.43,-110.25\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1499.95,-103.04 1503.56,-109.81 1500.18,-106.53 1500.42,-110.02 1500.42,-110.02 1500.42,-110.02 1500.18,-106.53 1497.28,-110.23 1499.95,-103.04 1499.95,-103.04\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.impl.kripke; proxy of <Swig Object of type 'std::shared_ptr< spot::kripke > *' at 0x7f3030ca5150> >"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"k = model.kripke(['P_0.a < 2', 'P_0.b > 1']); k"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And then from this Kripke structure you can do some model checking using the same functions as illustrated in `ltsmin-dve.ipynb`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For displaying Kripke structures more compactly, it can be useful to use option `1` to move all state labels in tooltips (mouse over the state to see them):"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"455pt\" height=\"280pt\"\n",
" viewBox=\"0.00 0.00 454.79 280.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 276)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-276 450.79,-276 450.79,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"220.4\" y=\"-256.8\" font-family=\"Lato\" font-size=\"14.00\">t</text>\n",
"<text text-anchor=\"start\" x=\"212.4\" y=\"-241.8\" font-family=\"Lato\" font-size=\"14.00\">[all]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<g id=\"a_node2\"><a xlink:title=\"P_0._pc=0, P_0.a=0, P_0.b=0&#10;&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; !dead\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"55\" cy=\"-117\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"55\" y=\"-113.3\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.15,-117C2.75,-117 16.68,-117 29.83,-117\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"36.98,-117 29.98,-120.15 33.48,-117 29.98,-117 29.98,-117 29.98,-117 33.48,-117 29.98,-113.85 36.98,-117 36.98,-117\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<g id=\"a_node3\"><a xlink:title=\"P_0._pc=0, P_0.a=1, P_0.b=0&#10;&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; !dead\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"127\" cy=\"-144\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"127\" y=\"-140.3\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M72.24,-123.26C81.42,-126.81 93.06,-131.3 103.16,-135.19\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"109.85,-137.77 102.19,-138.19 106.59,-136.51 103.32,-135.25 103.32,-135.25 103.32,-135.25 106.59,-136.51 104.46,-132.31 109.85,-137.77 109.85,-137.77\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<g id=\"a_node4\"><a xlink:title=\"P_0._pc=0, P_0.a=0, P_0.b=1&#10;&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; !dead\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"127\" cy=\"-90\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"127\" y=\"-86.3\" font-family=\"Lato\" font-size=\"14.00\">2</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M72.24,-110.74C81.42,-107.19 93.06,-102.7 103.16,-98.81\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"109.85,-96.23 104.46,-101.69 106.59,-97.49 103.32,-98.75 103.32,-98.75 103.32,-98.75 106.59,-97.49 102.19,-95.81 109.85,-96.23 109.85,-96.23\"/>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>3</title>\n",
"<g id=\"a_node5\"><a xlink:title=\"P_0._pc=0, P_0.a=2, P_0.b=0&#10;!&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; !dead\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"199\" cy=\"-171\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"199\" y=\"-167.3\" font-family=\"Lato\" font-size=\"14.00\">3</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 1&#45;&gt;3 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M144.24,-150.26C153.42,-153.81 165.06,-158.3 175.16,-162.19\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"181.85,-164.77 174.19,-165.19 178.59,-163.51 175.32,-162.25 175.32,-162.25 175.32,-162.25 178.59,-163.51 176.46,-159.31 181.85,-164.77 181.85,-164.77\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>4</title>\n",
"<g id=\"a_node6\"><a xlink:title=\"P_0._pc=0, P_0.a=1, P_0.b=1&#10;&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; !dead\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"199\" cy=\"-117\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"199\" y=\"-113.3\" font-family=\"Lato\" font-size=\"14.00\">4</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 1&#45;&gt;4 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>1&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M144.24,-137.74C153.42,-134.19 165.06,-129.7 175.16,-125.81\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"181.85,-123.23 176.46,-128.69 178.59,-124.49 175.32,-125.75 175.32,-125.75 175.32,-125.75 178.59,-124.49 174.19,-122.81 181.85,-123.23 181.85,-123.23\"/>\n",
"</g>\n",
"<!-- 2&#45;&gt;4 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>2&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M144.24,-96.26C153.42,-99.81 165.06,-104.3 175.16,-108.19\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"181.85,-110.77 174.19,-111.19 178.59,-109.51 175.32,-108.25 175.32,-108.25 175.32,-108.25 178.59,-109.51 176.46,-105.31 181.85,-110.77 181.85,-110.77\"/>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>5</title>\n",
"<g id=\"a_node7\"><a xlink:title=\"P_0._pc=0, P_0.a=0, P_0.b=2&#10;&quot;P_0.a &lt; 2&quot; &amp; &quot;P_0.b &gt; 1&quot; &amp; !dead\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"199\" cy=\"-63\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"199\" y=\"-59.3\" font-family=\"Lato\" font-size=\"14.00\">5</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 2&#45;&gt;5 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>2&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M144.24,-83.74C153.42,-80.19 165.06,-75.7 175.16,-71.81\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"181.85,-69.23 176.46,-74.69 178.59,-70.49 175.32,-71.75 175.32,-71.75 175.32,-71.75 178.59,-70.49 174.19,-68.81 181.85,-69.23 181.85,-69.23\"/>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>6</title>\n",
"<g id=\"a_node8\"><a xlink:title=\"P_0._pc=0, P_0.a=3, P_0.b=0&#10;!&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; dead\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"271\" cy=\"-198\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"271\" y=\"-194.3\" font-family=\"Lato\" font-size=\"14.00\">6</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 3&#45;&gt;6 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>3&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M216.24,-177.26C225.42,-180.81 237.06,-185.3 247.16,-189.19\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"253.85,-191.77 246.19,-192.19 250.59,-190.51 247.32,-189.25 247.32,-189.25 247.32,-189.25 250.59,-190.51 248.46,-186.31 253.85,-191.77 253.85,-191.77\"/>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>7</title>\n",
"<g id=\"a_node9\"><a xlink:title=\"P_0._pc=0, P_0.a=2, P_0.b=1&#10;!&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; !dead\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"271\" cy=\"-144\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"271\" y=\"-140.3\" font-family=\"Lato\" font-size=\"14.00\">7</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 3&#45;&gt;7 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>3&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M216.24,-164.74C225.42,-161.19 237.06,-156.7 247.16,-152.81\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"253.85,-150.23 248.46,-155.69 250.59,-151.49 247.32,-152.75 247.32,-152.75 247.32,-152.75 250.59,-151.49 246.19,-149.81 253.85,-150.23 253.85,-150.23\"/>\n",
"</g>\n",
"<!-- 4&#45;&gt;7 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>4&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M216.24,-123.26C225.42,-126.81 237.06,-131.3 247.16,-135.19\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"253.85,-137.77 246.19,-138.19 250.59,-136.51 247.32,-135.25 247.32,-135.25 247.32,-135.25 250.59,-136.51 248.46,-132.31 253.85,-137.77 253.85,-137.77\"/>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>8</title>\n",
"<g id=\"a_node10\"><a xlink:title=\"P_0._pc=0, P_0.a=1, P_0.b=2&#10;&quot;P_0.a &lt; 2&quot; &amp; &quot;P_0.b &gt; 1&quot; &amp; !dead\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"271\" cy=\"-90\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"271\" y=\"-86.3\" font-family=\"Lato\" font-size=\"14.00\">8</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 4&#45;&gt;8 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>4&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M216.24,-110.74C225.42,-107.19 237.06,-102.7 247.16,-98.81\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"253.85,-96.23 248.46,-101.69 250.59,-97.49 247.32,-98.75 247.32,-98.75 247.32,-98.75 250.59,-97.49 246.19,-95.81 253.85,-96.23 253.85,-96.23\"/>\n",
"</g>\n",
"<!-- 5&#45;&gt;8 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>5&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M216.24,-69.26C225.42,-72.81 237.06,-77.3 247.16,-81.19\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"253.85,-83.77 246.19,-84.19 250.59,-82.51 247.32,-81.25 247.32,-81.25 247.32,-81.25 250.59,-82.51 248.46,-78.31 253.85,-83.77 253.85,-83.77\"/>\n",
"</g>\n",
"<!-- 9 -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>9</title>\n",
"<g id=\"a_node11\"><a xlink:title=\"P_0._pc=0, P_0.a=0, P_0.b=3&#10;&quot;P_0.a &lt; 2&quot; &amp; &quot;P_0.b &gt; 1&quot; &amp; dead\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"271\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"271\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\">9</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 5&#45;&gt;9 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>5&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M214.5,-53.68C224.64,-47.16 238.32,-38.37 249.56,-31.14\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"255.51,-27.31 251.33,-33.75 252.57,-29.2 249.63,-31.1 249.63,-31.1 249.63,-31.1 252.57,-29.2 247.92,-28.45 255.51,-27.31 255.51,-27.31\"/>\n",
"</g>\n",
"<!-- 6&#45;&gt;6 -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>6&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M259.24,-212.04C254.85,-222.91 258.77,-234 271,-234 280.56,-234 285.04,-227.23 284.45,-219.09\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"282.76,-212.04 287.45,-218.11 283.57,-215.45 284.39,-218.85 284.39,-218.85 284.39,-218.85 283.57,-215.45 281.33,-219.58 282.76,-212.04 282.76,-212.04\"/>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>10</title>\n",
"<g id=\"a_node12\"><a xlink:title=\"P_0._pc=0, P_0.a=3, P_0.b=1&#10;!&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; dead\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"346.45\" cy=\"-171\" rx=\"21.4\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"346.45\" y=\"-167.3\" font-family=\"Lato\" font-size=\"14.00\">10</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 7&#45;&gt;10 -->\n",
"<g id=\"edge15\" class=\"edge\">\n",
"<title>7&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M288.3,-149.99C297.59,-153.41 309.44,-157.76 319.94,-161.62\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"326.6,-164.07 318.94,-164.61 323.31,-162.86 320.03,-161.66 320.03,-161.66 320.03,-161.66 323.31,-162.86 321.12,-158.7 326.6,-164.07 326.6,-164.07\"/>\n",
"</g>\n",
"<!-- 11 -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>11</title>\n",
"<g id=\"a_node13\"><a xlink:title=\"P_0._pc=0, P_0.a=2, P_0.b=2&#10;!&quot;P_0.a &lt; 2&quot; &amp; &quot;P_0.b &gt; 1&quot; &amp; !dead\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"346.45\" cy=\"-117\" rx=\"21.4\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"346.45\" y=\"-113.3\" font-family=\"Lato\" font-size=\"14.00\">11</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 7&#45;&gt;11 -->\n",
"<g id=\"edge16\" class=\"edge\">\n",
"<title>7&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M288.3,-138.01C297.59,-134.59 309.44,-130.24 319.94,-126.38\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"326.6,-123.93 321.12,-129.3 323.31,-125.14 320.03,-126.34 320.03,-126.34 320.03,-126.34 323.31,-125.14 318.94,-123.39 326.6,-123.93 326.6,-123.93\"/>\n",
"</g>\n",
"<!-- 8&#45;&gt;11 -->\n",
"<g id=\"edge17\" class=\"edge\">\n",
"<title>8&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M288.3,-95.99C297.59,-99.41 309.44,-103.76 319.94,-107.62\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"326.6,-110.07 318.94,-110.61 323.31,-108.86 320.03,-107.66 320.03,-107.66 320.03,-107.66 323.31,-108.86 321.12,-104.7 326.6,-110.07 326.6,-110.07\"/>\n",
"</g>\n",
"<!-- 12 -->\n",
"<g id=\"node14\" class=\"node\">\n",
"<title>12</title>\n",
"<g id=\"a_node14\"><a xlink:title=\"P_0._pc=0, P_0.a=1, P_0.b=3&#10;&quot;P_0.a &lt; 2&quot; &amp; &quot;P_0.b &gt; 1&quot; &amp; dead\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"346.45\" cy=\"-45\" rx=\"21.4\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"346.45\" y=\"-41.3\" font-family=\"Lato\" font-size=\"14.00\">12</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 8&#45;&gt;12 -->\n",
"<g id=\"edge18\" class=\"edge\">\n",
"<title>8&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M286.86,-80.89C297.05,-74.65 310.76,-66.25 322.36,-59.14\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"328.55,-55.35 324.23,-61.7 325.57,-57.18 322.58,-59.01 322.58,-59.01 322.58,-59.01 325.57,-57.18 320.94,-56.32 328.55,-55.35 328.55,-55.35\"/>\n",
"</g>\n",
"<!-- 9&#45;&gt;9 -->\n",
"<g id=\"edge19\" class=\"edge\">\n",
"<title>9&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M259.24,-32.04C254.85,-42.91 258.77,-54 271,-54 280.56,-54 285.04,-47.23 284.45,-39.09\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"282.76,-32.04 287.45,-38.11 283.57,-35.45 284.39,-38.85 284.39,-38.85 284.39,-38.85 283.57,-35.45 281.33,-39.58 282.76,-32.04 282.76,-32.04\"/>\n",
"</g>\n",
"<!-- 10&#45;&gt;10 -->\n",
"<g id=\"edge20\" class=\"edge\">\n",
"<title>10&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M334.07,-185.79C330.04,-196.42 334.16,-207 346.45,-207 356.05,-207 360.66,-200.54 360.3,-192.65\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"358.83,-185.79 363.38,-191.97 359.57,-189.21 360.3,-192.64 360.3,-192.64 360.3,-192.64 359.57,-189.21 357.22,-193.3 358.83,-185.79 358.83,-185.79\"/>\n",
"</g>\n",
"<!-- 13 -->\n",
"<g id=\"node15\" class=\"node\">\n",
"<title>13</title>\n",
"<g id=\"a_node15\"><a xlink:title=\"P_0._pc=0, P_0.a=3, P_0.b=2&#10;!&quot;P_0.a &lt; 2&quot; &amp; &quot;P_0.b &gt; 1&quot; &amp; dead\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"425.34\" cy=\"-153\" rx=\"21.4\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"425.34\" y=\"-149.3\" font-family=\"Lato\" font-size=\"14.00\">13</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 11&#45;&gt;13 -->\n",
"<g id=\"edge21\" class=\"edge\">\n",
"<title>11&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M365.67,-125.53C375.82,-130.28 388.6,-136.27 399.64,-141.44\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"406.25,-144.53 398.58,-144.41 403.08,-143.05 399.91,-141.56 399.91,-141.56 399.91,-141.56 403.08,-143.05 401.25,-138.71 406.25,-144.53 406.25,-144.53\"/>\n",
"</g>\n",
"<!-- 14 -->\n",
"<g id=\"node16\" class=\"node\">\n",
"<title>14</title>\n",
"<g id=\"a_node16\"><a xlink:title=\"P_0._pc=0, P_0.a=2, P_0.b=3&#10;!&quot;P_0.a &lt; 2&quot; &amp; &quot;P_0.b &gt; 1&quot; &amp; dead\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"425.34\" cy=\"-81\" rx=\"21.4\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"425.34\" y=\"-77.3\" font-family=\"Lato\" font-size=\"14.00\">14</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 11&#45;&gt;14 -->\n",
"<g id=\"edge22\" class=\"edge\">\n",
"<title>11&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M365.67,-108.47C375.82,-103.72 388.6,-97.73 399.64,-92.56\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"406.25,-89.47 401.25,-95.29 403.08,-90.95 399.91,-92.44 399.91,-92.44 399.91,-92.44 403.08,-90.95 398.58,-89.59 406.25,-89.47 406.25,-89.47\"/>\n",
"</g>\n",
"<!-- 12&#45;&gt;12 -->\n",
"<g id=\"edge23\" class=\"edge\">\n",
"<title>12&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M334.07,-59.79C330.04,-70.42 334.16,-81 346.45,-81 356.05,-81 360.66,-74.54 360.3,-66.65\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"358.83,-59.79 363.38,-65.97 359.57,-63.21 360.3,-66.64 360.3,-66.64 360.3,-66.64 359.57,-63.21 357.22,-67.3 358.83,-59.79 358.83,-59.79\"/>\n",
"</g>\n",
"<!-- 13&#45;&gt;13 -->\n",
"<g id=\"edge24\" class=\"edge\">\n",
"<title>13&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M412.45,-167.42C407.94,-178.17 412.24,-189 425.34,-189 435.58,-189 440.44,-182.39 439.93,-174.37\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"438.24,-167.42 442.96,-173.47 439.07,-170.82 439.9,-174.22 439.9,-174.22 439.9,-174.22 439.07,-170.82 436.84,-174.96 438.24,-167.42 438.24,-167.42\"/>\n",
"</g>\n",
"<!-- 14&#45;&gt;14 -->\n",
"<g id=\"edge25\" class=\"edge\">\n",
"<title>14&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M412.45,-95.42C407.94,-106.17 412.24,-117 425.34,-117 435.58,-117 440.44,-110.39 439.93,-102.37\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"438.24,-95.42 442.96,-101.47 439.07,-98.82 439.9,-102.22 439.9,-102.22 439.9,-102.22 439.07,-98.82 436.84,-102.96 438.24,-95.42 438.24,-95.42\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.jupyter.SVG object>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"k.show('.1')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Another option is to use option `K` to disable to state-labeling (that is enabled by default for Kripke structure) and use transition-labeling instead. Combining with `1`, this will preserve the state's data as a tooltip."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"734pt\" height=\"147pt\"\n",
" viewBox=\"0.00 0.00 734.00 146.58\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(0.4629629629629629 0.4629629629629629) rotate(0) translate(4 312)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-312 1578.34,-312 1578.34,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"784.17\" y=\"-292.8\" font-family=\"Lato\" font-size=\"14.00\">t</text>\n",
"<text text-anchor=\"start\" x=\"776.17\" y=\"-277.8\" font-family=\"Lato\" font-size=\"14.00\">[all]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<g id=\"a_node2\"><a xlink:title=\"P_0._pc=0, P_0.a=0, P_0.b=0\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-124\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-120.3\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.15,-124C2.79,-124 17.15,-124 30.63,-124\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.94,-124 30.94,-127.15 34.44,-124 30.94,-124 30.94,-124 30.94,-124 34.44,-124 30.94,-120.85 37.94,-124 37.94,-124\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<g id=\"a_node3\"><a xlink:title=\"P_0._pc=0, P_0.a=1, P_0.b=0\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"336\" cy=\"-151\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"336\" y=\"-147.3\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M73.97,-125.65C121.37,-130.25 255.31,-143.26 310.63,-148.63\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"317.9,-149.34 310.63,-151.8 314.41,-149 310.93,-148.66 310.93,-148.66 310.93,-148.66 314.41,-149 311.23,-145.53 317.9,-149.34 317.9,-149.34\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-150.8\" font-family=\"Lato\" font-size=\"14.00\">&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; !dead</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<g id=\"a_node4\"><a xlink:title=\"P_0._pc=0, P_0.a=0, P_0.b=1\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"336\" cy=\"-97\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"336\" y=\"-93.3\" font-family=\"Lato\" font-size=\"14.00\">2</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M72.22,-115.5C78.2,-112.58 85.25,-109.63 92,-108 170.19,-89.11 266.56,-92.24 310.76,-95.08\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"317.9,-95.57 310.7,-98.23 314.4,-95.33 310.91,-95.09 310.91,-95.09 310.91,-95.09 314.4,-95.33 311.13,-91.95 317.9,-95.57 317.9,-95.57\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-111.8\" font-family=\"Lato\" font-size=\"14.00\">&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; !dead</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>3</title>\n",
"<g id=\"a_node5\"><a xlink:title=\"P_0._pc=0, P_0.a=2, P_0.b=0\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"616\" cy=\"-181\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"616\" y=\"-177.3\" font-family=\"Lato\" font-size=\"14.00\">3</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 1&#45;&gt;3 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M353.65,-155.29C359.42,-156.64 365.97,-158.04 372,-159 451.49,-171.62 546.85,-177.63 590.73,-179.88\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"597.81,-180.24 590.67,-183.04 594.32,-180.06 590.82,-179.89 590.82,-179.89 590.82,-179.89 594.32,-180.06 590.98,-176.74 597.81,-180.24 597.81,-180.24\"/>\n",
"<text text-anchor=\"start\" x=\"372\" y=\"-182.8\" font-family=\"Lato\" font-size=\"14.00\">&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; !dead</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>4</title>\n",
"<g id=\"a_node6\"><a xlink:title=\"P_0._pc=0, P_0.a=1, P_0.b=1\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"616\" cy=\"-124\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"616\" y=\"-120.3\" font-family=\"Lato\" font-size=\"14.00\">4</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 1&#45;&gt;4 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>1&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M353.67,-147.26C359.45,-146.07 365.99,-144.85 372,-144 451.65,-132.8 546.93,-127.21 590.76,-125.07\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"597.84,-124.73 591,-128.21 594.34,-124.9 590.85,-125.06 590.85,-125.06 590.85,-125.06 594.34,-124.9 590.7,-121.92 597.84,-124.73 597.84,-124.73\"/>\n",
"<text text-anchor=\"start\" x=\"372\" y=\"-147.8\" font-family=\"Lato\" font-size=\"14.00\">&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; !dead</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;4 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>2&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M354.16,-95.12C394.41,-91.25 497.71,-84.46 580,-106 584.71,-107.23 589.5,-109.17 593.98,-111.33\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"600.25,-114.59 592.59,-114.16 597.14,-112.98 594.04,-111.36 594.04,-111.36 594.04,-111.36 597.14,-112.98 595.49,-108.57 600.25,-114.59 600.25,-114.59\"/>\n",
"<text text-anchor=\"start\" x=\"372\" y=\"-109.8\" font-family=\"Lato\" font-size=\"14.00\">&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; !dead</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>5</title>\n",
"<g id=\"a_node7\"><a xlink:title=\"P_0._pc=0, P_0.a=0, P_0.b=2\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"616\" cy=\"-67\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"616\" y=\"-63.3\" font-family=\"Lato\" font-size=\"14.00\">5</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 2&#45;&gt;5 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>2&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M349.9,-84.93C356.1,-79.93 363.92,-74.68 372,-72 448.66,-46.56 546.55,-56.37 591.05,-62.94\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"598.22,-64.04 590.83,-66.09 594.76,-63.51 591.3,-62.98 591.3,-62.98 591.3,-62.98 594.76,-63.51 591.78,-59.86 598.22,-64.04 598.22,-64.04\"/>\n",
"<text text-anchor=\"start\" x=\"372\" y=\"-75.8\" font-family=\"Lato\" font-size=\"14.00\">&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; !dead</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>6</title>\n",
"<g id=\"a_node8\"><a xlink:title=\"P_0._pc=0, P_0.a=3, P_0.b=0\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"899\" cy=\"-219\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"899\" y=\"-215.3\" font-family=\"Lato\" font-size=\"14.00\">6</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 3&#45;&gt;6 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>3&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M632.26,-189.34C638.25,-192.25 645.28,-195.22 652,-197 731.15,-217.97 829.09,-219.9 873.75,-219.52\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"880.96,-219.44 873.99,-222.67 877.46,-219.48 873.96,-219.52 873.96,-219.52 873.96,-219.52 877.46,-219.48 873.92,-216.37 880.96,-219.44 880.96,-219.44\"/>\n",
"<text text-anchor=\"start\" x=\"652\" y=\"-222.8\" font-family=\"Lato\" font-size=\"14.00\">!&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; !dead</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>7</title>\n",
"<g id=\"a_node9\"><a xlink:title=\"P_0._pc=0, P_0.a=2, P_0.b=1\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"899\" cy=\"-162\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"899\" y=\"-158.3\" font-family=\"Lato\" font-size=\"14.00\">7</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 3&#45;&gt;7 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>3&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M634.15,-179.84C682.17,-176.59 818,-167.41 873.71,-163.64\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"880.71,-163.17 873.94,-166.78 877.22,-163.41 873.73,-163.64 873.73,-163.64 873.73,-163.64 877.22,-163.41 873.52,-160.5 880.71,-163.17 880.71,-163.17\"/>\n",
"<text text-anchor=\"start\" x=\"652\" y=\"-181.8\" font-family=\"Lato\" font-size=\"14.00\">!&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; !dead</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;7 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>4&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M634.08,-123.34C674.62,-122.23 779.52,-122.02 863,-145 867.53,-146.25 872.18,-148.07 876.56,-150.07\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"883.14,-153.29 875.47,-153.04 880,-151.75 876.85,-150.21 876.85,-150.21 876.85,-150.21 880,-151.75 878.24,-147.38 883.14,-153.29 883.14,-153.29\"/>\n",
"<text text-anchor=\"start\" x=\"653.5\" y=\"-148.8\" font-family=\"Lato\" font-size=\"14.00\">&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; !dead</text>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>8</title>\n",
"<g id=\"a_node10\"><a xlink:title=\"P_0._pc=0, P_0.a=1, P_0.b=2\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"899\" cy=\"-105\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"899\" y=\"-101.3\" font-family=\"Lato\" font-size=\"14.00\">8</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 4&#45;&gt;8 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>4&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M631.72,-114.47C637.75,-111.1 644.96,-107.72 652,-106 731.23,-86.65 829.13,-95.61 873.77,-101.41\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"880.97,-102.38 873.61,-104.57 877.5,-101.92 874.03,-101.45 874.03,-101.45 874.03,-101.45 877.5,-101.92 874.45,-98.33 880.97,-102.38 880.97,-102.38\"/>\n",
"<text text-anchor=\"start\" x=\"653.5\" y=\"-109.8\" font-family=\"Lato\" font-size=\"14.00\">&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; !dead</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;8 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>5&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M633.84,-64.02C674.75,-57.54 781.94,-45.09 863,-76 869.5,-78.48 875.67,-82.69 880.97,-87.14\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"886.35,-92 879.05,-89.65 883.75,-89.65 881.16,-87.31 881.16,-87.31 881.16,-87.31 883.75,-89.65 883.27,-84.97 886.35,-92 886.35,-92\"/>\n",
"<text text-anchor=\"start\" x=\"655.5\" y=\"-79.8\" font-family=\"Lato\" font-size=\"14.00\">&quot;P_0.a &lt; 2&quot; &amp; &quot;P_0.b &gt; 1&quot; &amp; !dead</text>\n",
"</g>\n",
"<!-- 9 -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>9</title>\n",
"<g id=\"a_node11\"><a xlink:title=\"P_0._pc=0, P_0.a=0, P_0.b=3\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"899\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"899\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\">9</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 5&#45;&gt;9 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>5&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M628.63,-53.71C634.88,-47.5 643.13,-40.68 652,-37 728.1,-5.47 828.67,-10.59 874.02,-15.09\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"881.06,-15.83 873.77,-18.23 877.58,-15.46 874.1,-15.09 874.1,-15.09 874.1,-15.09 877.58,-15.46 874.43,-11.96 881.06,-15.83 881.06,-15.83\"/>\n",
"<text text-anchor=\"start\" x=\"655.5\" y=\"-40.8\" font-family=\"Lato\" font-size=\"14.00\">&quot;P_0.a &lt; 2&quot; &amp; &quot;P_0.b &gt; 1&quot; &amp; !dead</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;6 -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>6&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M882.5,-227.14C865.34,-239.46 870.84,-255 899,-255 923.64,-255 930.94,-243.1 920.88,-231.87\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"915.5,-227.14 922.84,-229.4 918.13,-229.45 920.75,-231.76 920.75,-231.76 920.75,-231.76 918.13,-229.45 918.67,-234.13 915.5,-227.14 915.5,-227.14\"/>\n",
"<text text-anchor=\"start\" x=\"795\" y=\"-258.8\" font-family=\"Lato\" font-size=\"14.00\">!&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; dead</text>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>10</title>\n",
"<g id=\"a_node12\"><a xlink:title=\"P_0._pc=0, P_0.a=3, P_0.b=1\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1185.45\" cy=\"-201\" rx=\"21.4\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1185.45\" y=\"-197.3\" font-family=\"Lato\" font-size=\"14.00\">10</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 7&#45;&gt;10 -->\n",
"<g id=\"edge15\" class=\"edge\">\n",
"<title>7&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M915.77,-168.82C921.7,-171.12 928.56,-173.49 935,-175 1014.08,-193.49 1110.35,-198.84 1156.77,-200.38\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1163.79,-200.6 1156.69,-203.53 1160.29,-200.49 1156.79,-200.38 1156.79,-200.38 1156.79,-200.38 1160.29,-200.49 1156.89,-197.23 1163.79,-200.6 1163.79,-200.6\"/>\n",
"<text text-anchor=\"start\" x=\"935\" y=\"-202.8\" font-family=\"Lato\" font-size=\"14.00\">!&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; !dead</text>\n",
"</g>\n",
"<!-- 11 -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>11</title>\n",
"<g id=\"a_node13\"><a xlink:title=\"P_0._pc=0, P_0.a=2, P_0.b=2\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1185.45\" cy=\"-147\" rx=\"21.4\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1185.45\" y=\"-143.3\" font-family=\"Lato\" font-size=\"14.00\">11</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 7&#45;&gt;11 -->\n",
"<g id=\"edge16\" class=\"edge\">\n",
"<title>7&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M917.09,-161.01C922.79,-160.68 929.17,-160.32 935,-160 1015.39,-155.61 1110.38,-150.75 1156.51,-148.41\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1163.75,-148.04 1156.92,-151.54 1160.25,-148.22 1156.76,-148.4 1156.76,-148.4 1156.76,-148.4 1160.25,-148.22 1156.6,-145.25 1163.75,-148.04 1163.75,-148.04\"/>\n",
"<text text-anchor=\"start\" x=\"935\" y=\"-163.8\" font-family=\"Lato\" font-size=\"14.00\">!&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; !dead</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;11 -->\n",
"<g id=\"edge17\" class=\"edge\">\n",
"<title>8&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M917.03,-104.91C957.47,-105.07 1062.17,-107.81 1146,-130 1150.74,-131.25 1155.64,-133.02 1160.29,-134.95\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1166.88,-137.84 1159.2,-137.91 1163.67,-136.43 1160.47,-135.02 1160.47,-135.02 1160.47,-135.02 1163.67,-136.43 1161.73,-132.14 1166.88,-137.84 1166.88,-137.84\"/>\n",
"<text text-anchor=\"start\" x=\"938.5\" y=\"-133.8\" font-family=\"Lato\" font-size=\"14.00\">&quot;P_0.a &lt; 2&quot; &amp; &quot;P_0.b &gt; 1&quot; &amp; !dead</text>\n",
"</g>\n",
"<!-- 12 -->\n",
"<g id=\"node14\" class=\"node\">\n",
"<title>12</title>\n",
"<g id=\"a_node14\"><a xlink:title=\"P_0._pc=0, P_0.a=1, P_0.b=3\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1185.45\" cy=\"-60\" rx=\"21.4\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1185.45\" y=\"-56.3\" font-family=\"Lato\" font-size=\"14.00\">12</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 8&#45;&gt;12 -->\n",
"<g id=\"edge18\" class=\"edge\">\n",
"<title>8&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M914.82,-95.85C920.87,-92.52 928.06,-89.08 935,-87 1013.02,-63.6 1110.16,-59.98 1156.85,-59.73\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1163.9,-59.71 1156.91,-62.88 1160.4,-59.72 1156.9,-59.73 1156.9,-59.73 1156.9,-59.73 1160.4,-59.72 1156.9,-56.58 1163.9,-59.71 1163.9,-59.71\"/>\n",
"<text text-anchor=\"start\" x=\"938.5\" y=\"-90.8\" font-family=\"Lato\" font-size=\"14.00\">&quot;P_0.a &lt; 2&quot; &amp; &quot;P_0.b &gt; 1&quot; &amp; !dead</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;9 -->\n",
"<g id=\"edge19\" class=\"edge\">\n",
"<title>9&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M882.5,-26.14C865.34,-38.46 870.84,-54 899,-54 923.64,-54 930.94,-42.1 920.88,-30.87\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"915.5,-26.14 922.84,-28.4 918.13,-28.45 920.75,-30.76 920.75,-30.76 920.75,-30.76 918.13,-28.45 918.67,-33.13 915.5,-26.14 915.5,-26.14\"/>\n",
"<text text-anchor=\"start\" x=\"799\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\">&quot;P_0.a &lt; 2&quot; &amp; &quot;P_0.b &gt; 1&quot; &amp; dead</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;10 -->\n",
"<g id=\"edge20\" class=\"edge\">\n",
"<title>10&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1166.79,-210.59C1151.77,-222.64 1157.99,-237 1185.45,-237 1209.04,-237 1216.96,-226.4 1209.19,-215.76\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1204.11,-210.59 1211.26,-213.38 1206.56,-213.08 1209.01,-215.58 1209.01,-215.58 1209.01,-215.58 1206.56,-213.08 1206.76,-217.79 1204.11,-210.59 1204.11,-210.59\"/>\n",
"<text text-anchor=\"start\" x=\"1081.45\" y=\"-240.8\" font-family=\"Lato\" font-size=\"14.00\">!&quot;P_0.a &lt; 2&quot; &amp; !&quot;P_0.b &gt; 1&quot; &amp; dead</text>\n",
"</g>\n",
"<!-- 13 -->\n",
"<g id=\"node15\" class=\"node\">\n",
"<title>13</title>\n",
"<g id=\"a_node15\"><a xlink:title=\"P_0._pc=0, P_0.a=3, P_0.b=2\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1472.34\" cy=\"-185\" rx=\"21.4\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1472.34\" y=\"-181.3\" font-family=\"Lato\" font-size=\"14.00\">13</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 11&#45;&gt;13 -->\n",
"<g id=\"edge21\" class=\"edge\">\n",
"<title>11&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1206.94,-149.73C1257.24,-156.44 1386.88,-173.73 1443.82,-181.33\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1451.04,-182.29 1443.69,-184.49 1447.57,-181.83 1444.1,-181.37 1444.1,-181.37 1444.1,-181.37 1447.57,-181.83 1444.52,-178.24 1451.04,-182.29 1451.04,-182.29\"/>\n",
"<text text-anchor=\"start\" x=\"1224.9\" y=\"-182.8\" font-family=\"Lato\" font-size=\"14.00\">!&quot;P_0.a &lt; 2&quot; &amp; &quot;P_0.b &gt; 1&quot; &amp; !dead</text>\n",
"</g>\n",
"<!-- 14 -->\n",
"<g id=\"node16\" class=\"node\">\n",
"<title>14</title>\n",
"<g id=\"a_node16\"><a xlink:title=\"P_0._pc=0, P_0.a=2, P_0.b=3\">\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"1472.34\" cy=\"-98\" rx=\"21.4\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1472.34\" y=\"-94.3\" font-family=\"Lato\" font-size=\"14.00\">14</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 11&#45;&gt;14 -->\n",
"<g id=\"edge22\" class=\"edge\">\n",
"<title>11&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1204.98,-139.37C1211.22,-137.04 1218.28,-134.66 1224.9,-133 1302.93,-113.48 1397.78,-103.84 1443.73,-100.04\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1450.94,-99.45 1444.22,-103.16 1447.46,-99.74 1443.97,-100.02 1443.97,-100.02 1443.97,-100.02 1447.46,-99.74 1443.71,-96.88 1450.94,-99.45 1450.94,-99.45\"/>\n",
"<text text-anchor=\"start\" x=\"1224.9\" y=\"-136.8\" font-family=\"Lato\" font-size=\"14.00\">!&quot;P_0.a &lt; 2&quot; &amp; &quot;P_0.b &gt; 1&quot; &amp; !dead</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;12 -->\n",
"<g id=\"edge23\" class=\"edge\">\n",
"<title>12&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1166.79,-69.59C1151.77,-81.64 1157.99,-96 1185.45,-96 1209.04,-96 1216.96,-85.4 1209.19,-74.76\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1204.11,-69.59 1211.26,-72.38 1206.56,-72.08 1209.01,-74.58 1209.01,-74.58 1209.01,-74.58 1206.56,-72.08 1206.76,-76.79 1204.11,-69.59 1204.11,-69.59\"/>\n",
"<text text-anchor=\"start\" x=\"1085.45\" y=\"-99.8\" font-family=\"Lato\" font-size=\"14.00\">&quot;P_0.a &lt; 2&quot; &amp; &quot;P_0.b &gt; 1&quot; &amp; dead</text>\n",
"</g>\n",
"<!-- 13&#45;&gt;13 -->\n",
"<g id=\"edge24\" class=\"edge\">\n",
"<title>13&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1453.68,-194.59C1438.67,-206.64 1444.89,-221 1472.34,-221 1495.94,-221 1503.85,-210.4 1496.08,-199.76\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1491.01,-194.59 1498.16,-197.38 1493.46,-197.08 1495.91,-199.58 1495.91,-199.58 1495.91,-199.58 1493.46,-197.08 1493.66,-201.79 1491.01,-194.59 1491.01,-194.59\"/>\n",
"<text text-anchor=\"start\" x=\"1370.34\" y=\"-224.8\" font-family=\"Lato\" font-size=\"14.00\">!&quot;P_0.a &lt; 2&quot; &amp; &quot;P_0.b &gt; 1&quot; &amp; dead</text>\n",
"</g>\n",
"<!-- 14&#45;&gt;14 -->\n",
"<g id=\"edge25\" class=\"edge\">\n",
"<title>14&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1453.68,-107.59C1438.67,-119.64 1444.89,-134 1472.34,-134 1495.94,-134 1503.85,-123.4 1496.08,-112.76\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1491.01,-107.59 1498.16,-110.38 1493.46,-110.08 1495.91,-112.58 1495.91,-112.58 1495.91,-112.58 1493.46,-110.08 1493.66,-114.79 1491.01,-107.59 1491.01,-107.59\"/>\n",
"<text text-anchor=\"start\" x=\"1370.34\" y=\"-137.8\" font-family=\"Lato\" font-size=\"14.00\">!&quot;P_0.a &lt; 2&quot; &amp; &quot;P_0.b &gt; 1&quot; &amp; dead</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.jupyter.SVG object>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"k.show('.1K')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Loading from a `*.pml` file\n",
"---------------------------\n",
"\n",
"Another option is to use `ltsmin.load()` to load a Promela file directly. In order for this test-case to be self-contained, we are going to write the Promela file first, but in practice you probably already have your model."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"!rm -rf test1.pml"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Writing test1.pml\n"
]
}
],
"source": [
"%%file test1.pml\n",
"active proctype P() {\n",
"int a = 0;\n",
"int b = 0;\n",
"x: if\n",
" :: d_step {a < 3 && b < 3; a = a + 1; } goto x;\n",
" :: d_step {a < 3 && b < 3; b = b + 1; } goto x;\n",
"fi;\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now load it:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"model2 = spot.ltsmin.load('test1.pml')"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"ltsmin model with the following variables:\n",
" P_0._pc: pc\n",
" P_0.a: int\n",
" P_0.b: int"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model2"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"!rm -f test1.pml test1.pml.spins.c test1.pml.spins"
]
}
],
"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.8.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}