Fixes #267 * spot/twaalgos/gfguarantee.cc: Fix a typo when comparing automata sizes. * spot/twaalgos/translate.cc, spot/twaalgos/translate.hh: Use ltl-split even for BA/TGBA, but only of conjunctions with GF(..) in those cases. * tests/core/ltl2tgba2.test: Adjust and add the example of #267. * tests/core/degenid.test, tests/core/parity2.test, tests/core/stutter-tgba.test, tests/python/automata.ipynb, tests/python/highlighting.ipynb, tests/python/stutter-inv.ipynb, bin/spot-x.cc: Adjust.
2837 lines
193 KiB
Text
2837 lines
193 KiB
Text
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import spot\n",
|
|
"spot.setup()\n",
|
|
"from IPython.display import display"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"This notebook shows you different ways in which states or transitions can be highlighted in Spot. \n",
|
|
"\n",
|
|
"It should be noted that highlighting works using some special [named properties](https://spot.lrde.epita.fr/concepts.html#named-properties): basically, two maps that are attached to the automaton, and associated state or edge numbers to color numbers. This named properties are fragile: they will be lost if the automaton is transformed into a new automaton, and they can become meaningless of the automaton is modified in place (e.g., if the transitions or states are reordered).\n",
|
|
"\n",
|
|
"Nonetheless, highlighting is OK to use right before displaying or printing the automaton. The `dot` and `hoa` printer both know how to represent highlighted states and transitions.\n",
|
|
"\n",
|
|
"# Manual highlighting"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"a = spot.translate('a U b U c')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"The `#` option of `print_dot()` can be used to display the internal number of each transition "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/svg+xml": [
|
|
"<svg height=\"165pt\" viewBox=\"0.00 0.00 307.00 164.80\" width=\"307pt\" 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 160.8)\">\n",
|
|
"<polygon fill=\"#ffffff\" points=\"-4,4 -4,-160.8 303,-160.8 303,4 -4,4\" stroke=\"transparent\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"126.5\" y=\"-126.6\">[Büchi]</text>\n",
|
|
"<!-- I -->\n",
|
|
"<!-- 2 -->\n",
|
|
"<g class=\"node\" id=\"node2\">\n",
|
|
"<title>2</title>\n",
|
|
"<ellipse cx=\"56\" cy=\"-62\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-58.3\">2</text>\n",
|
|
"</g>\n",
|
|
"<!-- I->2 -->\n",
|
|
"<g class=\"edge\" id=\"edge1\">\n",
|
|
"<title>I->2</title>\n",
|
|
"<path d=\"M1.1233,-62C4.178,-62 17.9448,-62 30.9241,-62\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"37.9807,-62 30.9808,-65.1501 34.4807,-62 30.9807,-62.0001 30.9807,-62.0001 30.9807,-62.0001 34.4807,-62 30.9807,-58.8501 37.9807,-62 37.9807,-62\" stroke=\"#000000\"/>\n",
|
|
"</g>\n",
|
|
"<!-- 2->2 -->\n",
|
|
"<g class=\"edge\" id=\"edge7\">\n",
|
|
"<title>2->2</title>\n",
|
|
"<path d=\"M49.6208,-79.0373C48.3189,-88.8579 50.4453,-98 56,-98 60.166,-98 62.4036,-92.8576 62.7128,-86.1433\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"62.3792,-79.0373 65.8541,-85.8818 62.5434,-82.5335 62.7076,-86.0296 62.7076,-86.0296 62.7076,-86.0296 62.5434,-82.5335 59.561,-86.1774 62.3792,-79.0373 62.3792,-79.0373\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"38\" y=\"-101.8\">a & !c</text>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"41.1208\" y=\"-82.8373\">#6</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0 -->\n",
|
|
"<g class=\"node\" id=\"node3\">\n",
|
|
"<title>0</title>\n",
|
|
"<ellipse cx=\"277\" cy=\"-62\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n",
|
|
"<ellipse cx=\"277\" cy=\"-62\" fill=\"none\" rx=\"22\" ry=\"22\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"277\" y=\"-58.3\">0</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->0 -->\n",
|
|
"<g class=\"edge\" id=\"edge5\">\n",
|
|
"<title>2->0</title>\n",
|
|
"<path d=\"M73.8043,-66.4087C102.797,-73.0076 161.9993,-84.0634 212,-78 224.3248,-76.5054 237.6823,-73.472 249.0644,-70.4443\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"255.8692,-68.5737 249.9546,-73.4666 252.4944,-69.5015 249.1196,-70.4292 249.1196,-70.4292 249.1196,-70.4292 252.4944,-69.5015 248.2846,-67.3919 255.8692,-68.5737 255.8692,-68.5737\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"190.5\" y=\"-82.8\">c</text>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"82.3043\" y=\"-55.2087\">#4</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1 -->\n",
|
|
"<g class=\"node\" id=\"node4\">\n",
|
|
"<title>1</title>\n",
|
|
"<ellipse cx=\"194\" cy=\"-18\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"189.5\" y=\"-14.3\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->1 -->\n",
|
|
"<g class=\"edge\" id=\"edge6\">\n",
|
|
"<title>2->1</title>\n",
|
|
"<path d=\"M73.1988,-56.5163C97.4739,-48.7764 141.9077,-34.6091 169.5907,-25.7827\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"176.5845,-23.5528 170.8722,-28.6804 173.2499,-24.616 169.9153,-25.6793 169.9153,-25.6793 169.9153,-25.6793 173.2499,-24.616 168.9584,-22.6781 176.5845,-23.5528 176.5845,-23.5528\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-53.8\">!a & b & !c</text>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"81.6988\" y=\"-45.3163\">#5</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->0 -->\n",
|
|
"<g class=\"edge\" id=\"edge2\">\n",
|
|
"<title>0->0</title>\n",
|
|
"<path d=\"M269.3173,-82.9908C268.3688,-93.0872 270.9297,-102 277,-102 281.5527,-102 284.1314,-96.9866 284.7361,-90.2204\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"284.6827,-82.9908 287.8844,-89.9673 284.7086,-86.4907 284.7345,-89.9906 284.7345,-89.9906 284.7345,-89.9906 284.7086,-86.4907 281.5846,-90.0139 284.6827,-82.9908 284.6827,-82.9908\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"272.5\" y=\"-105.8\">1</text>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"260.8173\" y=\"-86.7908\">#1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->0 -->\n",
|
|
"<g class=\"edge\" id=\"edge3\">\n",
|
|
"<title>1->0</title>\n",
|
|
"<path d=\"M210.0032,-26.4836C221.6622,-32.6643 237.7048,-41.1688 251.1684,-48.3062\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"257.5402,-51.684 249.8801,-51.1884 254.4478,-50.0446 251.3555,-48.4053 251.3555,-48.4053 251.3555,-48.4053 254.4478,-50.0446 252.8309,-45.6221 257.5402,-51.684 257.5402,-51.684\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"230\" y=\"-43.8\">c</text>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"218.5032\" y=\"-30.2836\">#2</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->1 -->\n",
|
|
"<g class=\"edge\" id=\"edge4\">\n",
|
|
"<title>1->1</title>\n",
|
|
"<path d=\"M187.2664,-35.0373C185.8922,-44.8579 188.1367,-54 194,-54 198.3975,-54 200.7594,-48.8576 201.0858,-42.1433\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"200.7336,-35.0373 204.2263,-41.8728 200.9069,-38.533 201.0802,-42.0287 201.0802,-42.0287 201.0802,-42.0287 200.9069,-38.533 197.934,-42.1847 200.7336,-35.0373 200.7336,-35.0373\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"175.5\" y=\"-57.8\">b & !c</text>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"178.7664\" y=\"-38.8373\">#3</text>\n",
|
|
"</g>\n",
|
|
"</g>\n",
|
|
"</svg>"
|
|
],
|
|
"text/plain": [
|
|
"<IPython.core.display.SVG object>"
|
|
]
|
|
},
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"a.show('.#')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Using these numbers you can selectively hightlight some transitions. The second argument is a color number (from a list of predefined colors)."
|
|
]
|
|
},
|
|
{
|
|
"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.40.1 (20161225.0304)\n",
|
|
" -->\n",
|
|
"<!-- Pages: 1 -->\n",
|
|
"<svg width=\"307pt\" height=\"165pt\"\n",
|
|
" viewBox=\"0.00 0.00 307.00 164.80\" 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 160.8)\">\n",
|
|
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-160.8 303,-160.8 303,4 -4,4\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"126.5\" y=\"-126.6\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Büchi]</text>\n",
|
|
"<!-- I -->\n",
|
|
"<!-- 2 -->\n",
|
|
"<g id=\"node2\" class=\"node\">\n",
|
|
"<title>2</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-62\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"56\" y=\"-58.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
|
|
"</g>\n",
|
|
"<!-- I->2 -->\n",
|
|
"<g id=\"edge1\" class=\"edge\">\n",
|
|
"<title>I->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-62C4.178,-62 17.9448,-62 30.9241,-62\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-62 30.9808,-65.1501 34.4807,-62 30.9807,-62.0001 30.9807,-62.0001 30.9807,-62.0001 34.4807,-62 30.9807,-58.8501 37.9807,-62 37.9807,-62\"/>\n",
|
|
"</g>\n",
|
|
"<!-- 2->2 -->\n",
|
|
"<g id=\"edge7\" class=\"edge\">\n",
|
|
"<title>2->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M49.6208,-79.0373C48.3189,-88.8579 50.4453,-98 56,-98 60.166,-98 62.4036,-92.8576 62.7128,-86.1433\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"62.3792,-79.0373 65.8541,-85.8818 62.5434,-82.5335 62.7076,-86.0296 62.7076,-86.0296 62.7076,-86.0296 62.5434,-82.5335 59.561,-86.1774 62.3792,-79.0373 62.3792,-79.0373\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"38\" y=\"-101.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !c</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0 -->\n",
|
|
"<g id=\"node3\" class=\"node\">\n",
|
|
"<title>0</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"277\" cy=\"-62\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"277\" cy=\"-62\" rx=\"22\" ry=\"22\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"277\" y=\"-58.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->0 -->\n",
|
|
"<g id=\"edge5\" class=\"edge\">\n",
|
|
"<title>2->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#ff4da0\" stroke-width=\"2\" d=\"M73.8043,-66.4087C102.797,-73.0076 161.9993,-84.0634 212,-78 224.3248,-76.5054 237.6823,-73.472 249.0644,-70.4443\"/>\n",
|
|
"<polygon fill=\"#ff4da0\" stroke=\"#ff4da0\" stroke-width=\"2\" points=\"255.8692,-68.5737 249.9546,-73.4666 252.6269,-69.9836 249.2521,-70.9113 249.1196,-70.4292 248.9871,-69.9471 252.3619,-69.0194 248.2846,-67.3919 255.8692,-68.5737 255.8692,-68.5737\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"190.5\" y=\"-82.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">c</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1 -->\n",
|
|
"<g id=\"node4\" class=\"node\">\n",
|
|
"<title>1</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"194\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"189.5\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->1 -->\n",
|
|
"<g id=\"edge6\" class=\"edge\">\n",
|
|
"<title>2->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#ff4da0\" stroke-width=\"2\" d=\"M73.1988,-56.5163C97.4739,-48.7764 141.9077,-34.6091 169.5907,-25.7827\"/>\n",
|
|
"<polygon fill=\"#ff4da0\" stroke=\"#ff4da0\" stroke-width=\"2\" points=\"176.5845,-23.5528 170.8722,-28.6804 173.4018,-25.0924 170.0672,-26.1556 169.9153,-25.6793 169.7634,-25.2029 173.098,-24.1396 168.9584,-22.6781 176.5845,-23.5528 176.5845,-23.5528\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"92\" y=\"-53.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a & b & !c</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->0 -->\n",
|
|
"<g id=\"edge2\" class=\"edge\">\n",
|
|
"<title>0->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M269.3173,-82.9908C268.3688,-93.0872 270.9297,-102 277,-102 281.5527,-102 284.1314,-96.9866 284.7361,-90.2204\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"284.6827,-82.9908 287.8844,-89.9673 284.7086,-86.4907 284.7345,-89.9906 284.7345,-89.9906 284.7345,-89.9906 284.7086,-86.4907 281.5846,-90.0139 284.6827,-82.9908 284.6827,-82.9908\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"272.5\" y=\"-105.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->0 -->\n",
|
|
"<g id=\"edge3\" class=\"edge\">\n",
|
|
"<title>1->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#ff4da0\" stroke-width=\"2\" d=\"M210.0032,-26.4836C221.6622,-32.6643 237.7048,-41.1688 251.1684,-48.3062\"/>\n",
|
|
"<polygon fill=\"#ff4da0\" stroke=\"#ff4da0\" stroke-width=\"2\" points=\"257.5402,-51.684 249.8801,-51.1884 254.2136,-50.4864 251.1213,-48.847 251.3555,-48.4053 251.5897,-47.9635 254.682,-49.6028 252.8309,-45.6221 257.5402,-51.684 257.5402,-51.684\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"230\" y=\"-43.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">c</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->1 -->\n",
|
|
"<g id=\"edge4\" class=\"edge\">\n",
|
|
"<title>1->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M187.2664,-35.0373C185.8922,-44.8579 188.1367,-54 194,-54 198.3975,-54 200.7594,-48.8576 201.0858,-42.1433\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"200.7336,-35.0373 204.2263,-41.8728 200.9069,-38.533 201.0802,-42.0287 201.0802,-42.0287 201.0802,-42.0287 200.9069,-38.533 197.934,-42.1847 200.7336,-35.0373 200.7336,-35.0373\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"175.5\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">b & !c</text>\n",
|
|
"</g>\n",
|
|
"</g>\n",
|
|
"</svg>\n"
|
|
],
|
|
"text/plain": [
|
|
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7d6b72ef90> >"
|
|
]
|
|
},
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"a.highlight_edges([2, 4, 5], 1)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Note that these `highlight_` functions work for edges and states, and come with both singular (changing the color of single state or edge) and plural versions.\n",
|
|
"\n",
|
|
"They modify the automaton in place."
|
|
]
|
|
},
|
|
{
|
|
"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.40.1 (20161225.0304)\n",
|
|
" -->\n",
|
|
"<!-- Pages: 1 -->\n",
|
|
"<svg width=\"307pt\" height=\"165pt\"\n",
|
|
" viewBox=\"0.00 0.00 307.00 164.80\" 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 160.8)\">\n",
|
|
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-160.8 303,-160.8 303,4 -4,4\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"126.5\" y=\"-126.6\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Büchi]</text>\n",
|
|
"<!-- I -->\n",
|
|
"<!-- 2 -->\n",
|
|
"<g id=\"node2\" class=\"node\">\n",
|
|
"<title>2</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-62\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"56\" y=\"-58.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
|
|
"</g>\n",
|
|
"<!-- I->2 -->\n",
|
|
"<g id=\"edge1\" class=\"edge\">\n",
|
|
"<title>I->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-62C4.178,-62 17.9448,-62 30.9241,-62\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-62 30.9808,-65.1501 34.4807,-62 30.9807,-62.0001 30.9807,-62.0001 30.9807,-62.0001 34.4807,-62 30.9807,-58.8501 37.9807,-62 37.9807,-62\"/>\n",
|
|
"</g>\n",
|
|
"<!-- 2->2 -->\n",
|
|
"<g id=\"edge7\" class=\"edge\">\n",
|
|
"<title>2->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"#ff7f00\" stroke-width=\"2\" d=\"M49.6208,-79.0373C48.3189,-88.8579 50.4453,-98 56,-98 60.166,-98 62.4036,-92.8576 62.7128,-86.1433\"/>\n",
|
|
"<polygon fill=\"#ff7f00\" stroke=\"#ff7f00\" stroke-width=\"2\" points=\"62.3792,-79.0373 65.8541,-85.8818 63.0428,-82.51 63.207,-86.0062 62.7076,-86.0296 62.2081,-86.0531 62.0439,-82.5569 59.561,-86.1774 62.3792,-79.0373 62.3792,-79.0373\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"38\" y=\"-101.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !c</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0 -->\n",
|
|
"<g id=\"node3\" class=\"node\">\n",
|
|
"<title>0</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#1f78b4\" stroke-width=\"2\" cx=\"277\" cy=\"-62\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<ellipse fill=\"none\" stroke=\"#1f78b4\" stroke-width=\"2\" cx=\"277\" cy=\"-62\" rx=\"22\" ry=\"22\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"277\" y=\"-58.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->0 -->\n",
|
|
"<g id=\"edge5\" class=\"edge\">\n",
|
|
"<title>2->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#ff4da0\" stroke-width=\"2\" d=\"M73.8043,-66.4087C102.797,-73.0076 161.9993,-84.0634 212,-78 224.3248,-76.5054 237.6823,-73.472 249.0644,-70.4443\"/>\n",
|
|
"<polygon fill=\"#ff4da0\" stroke=\"#ff4da0\" stroke-width=\"2\" points=\"255.8692,-68.5737 249.9546,-73.4666 252.6269,-69.9836 249.2521,-70.9113 249.1196,-70.4292 248.9871,-69.9471 252.3619,-69.0194 248.2846,-67.3919 255.8692,-68.5737 255.8692,-68.5737\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"190.5\" y=\"-82.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">c</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1 -->\n",
|
|
"<g id=\"node4\" class=\"node\">\n",
|
|
"<title>1</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#1f78b4\" stroke-width=\"2\" cx=\"194\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"189.5\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->1 -->\n",
|
|
"<g id=\"edge6\" class=\"edge\">\n",
|
|
"<title>2->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#ff4da0\" stroke-width=\"2\" d=\"M73.1988,-56.5163C97.4739,-48.7764 141.9077,-34.6091 169.5907,-25.7827\"/>\n",
|
|
"<polygon fill=\"#ff4da0\" stroke=\"#ff4da0\" stroke-width=\"2\" points=\"176.5845,-23.5528 170.8722,-28.6804 173.4018,-25.0924 170.0672,-26.1556 169.9153,-25.6793 169.7634,-25.2029 173.098,-24.1396 168.9584,-22.6781 176.5845,-23.5528 176.5845,-23.5528\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"92\" y=\"-53.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a & b & !c</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->0 -->\n",
|
|
"<g id=\"edge2\" class=\"edge\">\n",
|
|
"<title>0->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M269.3173,-82.9908C268.3688,-93.0872 270.9297,-102 277,-102 281.5527,-102 284.1314,-96.9866 284.7361,-90.2204\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"284.6827,-82.9908 287.8844,-89.9673 284.7086,-86.4907 284.7345,-89.9906 284.7345,-89.9906 284.7345,-89.9906 284.7086,-86.4907 281.5846,-90.0139 284.6827,-82.9908 284.6827,-82.9908\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"272.5\" y=\"-105.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->0 -->\n",
|
|
"<g id=\"edge3\" class=\"edge\">\n",
|
|
"<title>1->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#ff4da0\" stroke-width=\"2\" d=\"M210.0032,-26.4836C221.6622,-32.6643 237.7048,-41.1688 251.1684,-48.3062\"/>\n",
|
|
"<polygon fill=\"#ff4da0\" stroke=\"#ff4da0\" stroke-width=\"2\" points=\"257.5402,-51.684 249.8801,-51.1884 254.2136,-50.4864 251.1213,-48.847 251.3555,-48.4053 251.5897,-47.9635 254.682,-49.6028 252.8309,-45.6221 257.5402,-51.684 257.5402,-51.684\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"230\" y=\"-43.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">c</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->1 -->\n",
|
|
"<g id=\"edge4\" class=\"edge\">\n",
|
|
"<title>1->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M187.2664,-35.0373C185.8922,-44.8579 188.1367,-54 194,-54 198.3975,-54 200.7594,-48.8576 201.0858,-42.1433\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"200.7336,-35.0373 204.2263,-41.8728 200.9069,-38.533 201.0802,-42.0287 201.0802,-42.0287 201.0802,-42.0287 200.9069,-38.533 197.934,-42.1847 200.7336,-35.0373 200.7336,-35.0373\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"175.5\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">b & !c</text>\n",
|
|
"</g>\n",
|
|
"</g>\n",
|
|
"</svg>\n"
|
|
],
|
|
"text/plain": [
|
|
"<spot.twa; proxy of <Swig Object of type 'std::shared_ptr< spot::twa > *' at 0x7f7d6b654870> >"
|
|
]
|
|
},
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"a.highlight_edge(6, 2).highlight_states((0, 1), 0)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"The plural version can take a list or tuple of state numbers (as above) or of Booleans (as below). In the latter case the indices of the True values give the states to highlight."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/svg+xml": [
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
|
|
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
|
|
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
|
|
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
|
|
" -->\n",
|
|
"<!-- Pages: 1 -->\n",
|
|
"<svg width=\"307pt\" height=\"165pt\"\n",
|
|
" viewBox=\"0.00 0.00 307.00 164.80\" 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 160.8)\">\n",
|
|
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-160.8 303,-160.8 303,4 -4,4\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"126.5\" y=\"-126.6\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Büchi]</text>\n",
|
|
"<!-- I -->\n",
|
|
"<!-- 2 -->\n",
|
|
"<g id=\"node2\" class=\"node\">\n",
|
|
"<title>2</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" cx=\"56\" cy=\"-62\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"56\" y=\"-58.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
|
|
"</g>\n",
|
|
"<!-- I->2 -->\n",
|
|
"<g id=\"edge1\" class=\"edge\">\n",
|
|
"<title>I->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-62C4.178,-62 17.9448,-62 30.9241,-62\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-62 30.9808,-65.1501 34.4807,-62 30.9807,-62.0001 30.9807,-62.0001 30.9807,-62.0001 34.4807,-62 30.9807,-58.8501 37.9807,-62 37.9807,-62\"/>\n",
|
|
"</g>\n",
|
|
"<!-- 2->2 -->\n",
|
|
"<g id=\"edge7\" class=\"edge\">\n",
|
|
"<title>2->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"#ff7f00\" stroke-width=\"2\" d=\"M49.6208,-79.0373C48.3189,-88.8579 50.4453,-98 56,-98 60.166,-98 62.4036,-92.8576 62.7128,-86.1433\"/>\n",
|
|
"<polygon fill=\"#ff7f00\" stroke=\"#ff7f00\" stroke-width=\"2\" points=\"62.3792,-79.0373 65.8541,-85.8818 63.0428,-82.51 63.207,-86.0062 62.7076,-86.0296 62.2081,-86.0531 62.0439,-82.5569 59.561,-86.1774 62.3792,-79.0373 62.3792,-79.0373\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"38\" y=\"-101.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !c</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0 -->\n",
|
|
"<g id=\"node3\" class=\"node\">\n",
|
|
"<title>0</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#1f78b4\" stroke-width=\"2\" cx=\"277\" cy=\"-62\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<ellipse fill=\"none\" stroke=\"#1f78b4\" stroke-width=\"2\" cx=\"277\" cy=\"-62\" rx=\"22\" ry=\"22\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"277\" y=\"-58.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->0 -->\n",
|
|
"<g id=\"edge5\" class=\"edge\">\n",
|
|
"<title>2->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#ff4da0\" stroke-width=\"2\" d=\"M73.8043,-66.4087C102.797,-73.0076 161.9993,-84.0634 212,-78 224.3248,-76.5054 237.6823,-73.472 249.0644,-70.4443\"/>\n",
|
|
"<polygon fill=\"#ff4da0\" stroke=\"#ff4da0\" stroke-width=\"2\" points=\"255.8692,-68.5737 249.9546,-73.4666 252.6269,-69.9836 249.2521,-70.9113 249.1196,-70.4292 248.9871,-69.9471 252.3619,-69.0194 248.2846,-67.3919 255.8692,-68.5737 255.8692,-68.5737\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"190.5\" y=\"-82.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">c</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1 -->\n",
|
|
"<g id=\"node4\" class=\"node\">\n",
|
|
"<title>1</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" cx=\"194\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"189.5\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->1 -->\n",
|
|
"<g id=\"edge6\" class=\"edge\">\n",
|
|
"<title>2->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#ff4da0\" stroke-width=\"2\" d=\"M73.1988,-56.5163C97.4739,-48.7764 141.9077,-34.6091 169.5907,-25.7827\"/>\n",
|
|
"<polygon fill=\"#ff4da0\" stroke=\"#ff4da0\" stroke-width=\"2\" points=\"176.5845,-23.5528 170.8722,-28.6804 173.4018,-25.0924 170.0672,-26.1556 169.9153,-25.6793 169.7634,-25.2029 173.098,-24.1396 168.9584,-22.6781 176.5845,-23.5528 176.5845,-23.5528\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"92\" y=\"-53.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a & b & !c</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->0 -->\n",
|
|
"<g id=\"edge2\" class=\"edge\">\n",
|
|
"<title>0->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M269.3173,-82.9908C268.3688,-93.0872 270.9297,-102 277,-102 281.5527,-102 284.1314,-96.9866 284.7361,-90.2204\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"284.6827,-82.9908 287.8844,-89.9673 284.7086,-86.4907 284.7345,-89.9906 284.7345,-89.9906 284.7345,-89.9906 284.7086,-86.4907 281.5846,-90.0139 284.6827,-82.9908 284.6827,-82.9908\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"272.5\" y=\"-105.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->0 -->\n",
|
|
"<g id=\"edge3\" class=\"edge\">\n",
|
|
"<title>1->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#ff4da0\" stroke-width=\"2\" d=\"M210.0032,-26.4836C221.6622,-32.6643 237.7048,-41.1688 251.1684,-48.3062\"/>\n",
|
|
"<polygon fill=\"#ff4da0\" stroke=\"#ff4da0\" stroke-width=\"2\" points=\"257.5402,-51.684 249.8801,-51.1884 254.2136,-50.4864 251.1213,-48.847 251.3555,-48.4053 251.5897,-47.9635 254.682,-49.6028 252.8309,-45.6221 257.5402,-51.684 257.5402,-51.684\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"230\" y=\"-43.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">c</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->1 -->\n",
|
|
"<g id=\"edge4\" class=\"edge\">\n",
|
|
"<title>1->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M187.2664,-35.0373C185.8922,-44.8579 188.1367,-54 194,-54 198.3975,-54 200.7594,-48.8576 201.0858,-42.1433\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"200.7336,-35.0373 204.2263,-41.8728 200.9069,-38.533 201.0802,-42.0287 201.0802,-42.0287 201.0802,-42.0287 200.9069,-38.533 197.934,-42.1847 200.7336,-35.0373 200.7336,-35.0373\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"175.5\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">b & !c</text>\n",
|
|
"</g>\n",
|
|
"</g>\n",
|
|
"</svg>\n"
|
|
],
|
|
"text/plain": [
|
|
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7d6b72ef90> >"
|
|
]
|
|
},
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"a.highlight_states([False, True, True], 5)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Saving to HOA 1.1\n",
|
|
"\n",
|
|
"When saving to HOA format, the highlighting is only output if version 1.1 of the format is selected, because the headers `spot.highlight.edges` and `spot.highlight.states` contain dots, which are disallowed in version 1. Compare these two outputs:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"HOA: v1\n",
|
|
"States: 3\n",
|
|
"Start: 2\n",
|
|
"AP: 3 \"a\" \"b\" \"c\"\n",
|
|
"acc-name: Buchi\n",
|
|
"Acceptance: 1 Inf(0)\n",
|
|
"properties: trans-labels explicit-labels state-acc deterministic\n",
|
|
"properties: stutter-invariant terminal\n",
|
|
"--BODY--\n",
|
|
"State: 0 {0}\n",
|
|
"[t] 0\n",
|
|
"State: 1\n",
|
|
"[2] 0\n",
|
|
"[1&!2] 1\n",
|
|
"State: 2\n",
|
|
"[2] 0\n",
|
|
"[!0&1&!2] 1\n",
|
|
"[0&!2] 2\n",
|
|
"--END--\n",
|
|
"\n",
|
|
"HOA: v1.1\n",
|
|
"States: 3\n",
|
|
"Start: 2\n",
|
|
"AP: 3 \"a\" \"b\" \"c\"\n",
|
|
"acc-name: Buchi\n",
|
|
"Acceptance: 1 Inf(0)\n",
|
|
"properties: trans-labels explicit-labels state-acc !complete\n",
|
|
"properties: deterministic stutter-invariant terminal\n",
|
|
"spot.highlight.states: 0 0 1 5 2 5\n",
|
|
"spot.highlight.edges: 2 1 4 1 5 1 6 2\n",
|
|
"--BODY--\n",
|
|
"State: 0 {0}\n",
|
|
"[t] 0\n",
|
|
"State: 1\n",
|
|
"[2] 0\n",
|
|
"[1&!2] 1\n",
|
|
"State: 2\n",
|
|
"[2] 0\n",
|
|
"[!0&1&!2] 1\n",
|
|
"[0&!2] 2\n",
|
|
"--END--\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"print(a.to_str('HOA', '1'))\n",
|
|
"print()\n",
|
|
"print(a.to_str('HOA', '1.1'))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Highlighting a run\n",
|
|
"\n",
|
|
"One use of this highlighting is to highlight a run in an automaton.\n",
|
|
"\n",
|
|
"The following few command generate an automaton, then an accepting run on this automaton, and highlight that accepting run on the automaton. Note that a run knows the automaton from which it was generated, so calling `highlight()` will directly decorate that automaton."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/svg+xml": [
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
|
|
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
|
|
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
|
|
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
|
|
" -->\n",
|
|
"<!-- Pages: 1 -->\n",
|
|
"<svg width=\"386pt\" height=\"276pt\"\n",
|
|
" viewBox=\"0.00 0.00 386.00 276.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 272)\">\n",
|
|
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-272 382,-272 382,4 -4,4\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"168\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n",
|
|
"<text text-anchor=\"start\" x=\"190\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"<text text-anchor=\"start\" x=\"206\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)</text>\n",
|
|
"<text text-anchor=\"start\" x=\"166\" y=\"-239.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Büchi]</text>\n",
|
|
"<!-- I -->\n",
|
|
"<!-- 4 -->\n",
|
|
"<g id=\"node2\" class=\"node\">\n",
|
|
"<title>4</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-105\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"56\" y=\"-101.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">4</text>\n",
|
|
"</g>\n",
|
|
"<!-- I->4 -->\n",
|
|
"<g id=\"edge1\" class=\"edge\">\n",
|
|
"<title>I->4</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-105C4.178,-105 17.9448,-105 30.9241,-105\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-105 30.9808,-108.1501 34.4807,-105 30.9807,-105.0001 30.9807,-105.0001 30.9807,-105.0001 34.4807,-105 30.9807,-101.8501 37.9807,-105 37.9807,-105\"/>\n",
|
|
"</g>\n",
|
|
"<!-- 0 -->\n",
|
|
"<g id=\"node3\" class=\"node\">\n",
|
|
"<title>0</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"137\" cy=\"-105\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"137\" y=\"-101.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4->0 -->\n",
|
|
"<g id=\"edge12\" class=\"edge\">\n",
|
|
"<title>4->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M74.3802,-105C85.4352,-105 99.6622,-105 111.7609,-105\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"118.9716,-105 111.9716,-108.1501 115.4716,-105 111.9716,-105.0001 111.9716,-105.0001 111.9716,-105.0001 115.4716,-105 111.9716,-101.8501 118.9716,-105 118.9716,-105\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"96.5\" y=\"-108.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->0 -->\n",
|
|
"<g id=\"edge2\" class=\"edge\">\n",
|
|
"<title>0->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M129.9688,-121.6641C128.4063,-131.625 130.75,-141 137,-141 141.6875,-141 144.1777,-135.7266 144.4707,-128.8876\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"144.0313,-121.6641 147.6006,-128.4598 144.2438,-125.1576 144.4564,-128.6511 144.4564,-128.6511 144.4564,-128.6511 144.2438,-125.1576 141.3122,-128.8425 144.0313,-121.6641 144.0313,-121.6641\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"123.5\" y=\"-144.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a | b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1 -->\n",
|
|
"<g id=\"node4\" class=\"node\">\n",
|
|
"<title>1</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"360\" cy=\"-129\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"360\" y=\"-125.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->1 -->\n",
|
|
"<g id=\"edge3\" class=\"edge\">\n",
|
|
"<title>0->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M144.8384,-121.309C157.9792,-146.5059 187.0932,-193.9758 228,-213 273.4887,-234.1551 322.045,-181.0667 345.5673,-149.848\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"349.9296,-143.9244 348.3152,-151.4288 347.8542,-146.7426 345.7787,-149.5609 345.7787,-149.5609 345.7787,-149.5609 347.8542,-146.7426 343.2423,-147.693 349.9296,-143.9244 349.9296,-143.9244\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"228\" y=\"-220.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2 -->\n",
|
|
"<g id=\"node5\" class=\"node\">\n",
|
|
"<title>2</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"248.5\" cy=\"-105\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"248.5\" y=\"-101.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->2 -->\n",
|
|
"<g id=\"edge4\" class=\"edge\">\n",
|
|
"<title>0->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M155.412,-105C173.9217,-105 202.5942,-105 223.2267,-105\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"230.4306,-105 223.4307,-108.1501 226.9306,-105 223.4306,-105.0001 223.4306,-105.0001 223.4306,-105.0001 226.9306,-105 223.4306,-101.8501 230.4306,-105 230.4306,-105\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"174.5\" y=\"-108.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3 -->\n",
|
|
"<g id=\"node6\" class=\"node\">\n",
|
|
"<title>3</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"248.5\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"248.5\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->3 -->\n",
|
|
"<g id=\"edge5\" class=\"edge\">\n",
|
|
"<title>0->3</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M151.5767,-93.6263C171.301,-78.236 206.5611,-50.7236 228.6783,-33.4662\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"234.2723,-29.1014 230.6912,-35.8911 231.5129,-31.2545 228.7535,-33.4076 228.7535,-33.4076 228.7535,-33.4076 231.5129,-31.2545 226.8157,-30.9242 234.2723,-29.1014 234.2723,-29.1014\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"173\" y=\"-79.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->1 -->\n",
|
|
"<g id=\"edge6\" class=\"edge\">\n",
|
|
"<title>1->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M355.1797,-146.4099C354.28,-156.0879 355.8867,-165 360,-165 363.0207,-165 364.6896,-160.1936 365.0067,-153.8073\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"364.8203,-146.4099 368.1457,-153.3283 364.9085,-149.9088 364.9967,-153.4077 364.9967,-153.4077 364.9967,-153.4077 364.9085,-149.9088 361.8477,-153.4871 364.8203,-146.4099 364.8203,-146.4099\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"353.5\" y=\"-183.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!b</text>\n",
|
|
"<text text-anchor=\"start\" x=\"352\" y=\"-168.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->1 -->\n",
|
|
"<g id=\"edge7\" class=\"edge\">\n",
|
|
"<title>1->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M352.7325,-145.5959C347.2416,-166.8633 349.6641,-195 360,-195 369.2458,-195 372.1594,-172.4854 368.7408,-152.5132\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"367.2675,-145.5959 371.8066,-151.7861 367.9966,-149.0191 368.7257,-152.4423 368.7257,-152.4423 368.7257,-152.4423 367.9966,-149.0191 365.6448,-153.0985 367.2675,-145.5959 367.2675,-145.5959\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"355.5\" y=\"-198.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->2 -->\n",
|
|
"<g id=\"edge8\" class=\"edge\">\n",
|
|
"<title>2->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M243.5012,-122.4099C242.5681,-132.0879 244.2344,-141 248.5,-141 251.6326,-141 253.3633,-136.1936 253.6921,-129.8073\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"253.4988,-122.4099 256.8307,-129.3252 253.5903,-125.9087 253.6818,-129.4075 253.6818,-129.4075 253.6818,-129.4075 253.5903,-125.9087 250.5329,-129.4899 253.4988,-122.4099 253.4988,-122.4099\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"230\" y=\"-159.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !b</text>\n",
|
|
"<text text-anchor=\"start\" x=\"240.5\" y=\"-144.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->2 -->\n",
|
|
"<g id=\"edge9\" class=\"edge\">\n",
|
|
"<title>2->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M240.9634,-121.5959C235.269,-142.8633 237.7813,-171 248.5,-171 258.0883,-171 261.1098,-148.4854 257.5645,-128.5132\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"256.0366,-121.5959 260.6223,-127.7517 256.7915,-125.0135 257.5464,-128.4311 257.5464,-128.4311 257.5464,-128.4311 256.7915,-125.0135 254.4706,-129.1106 256.0366,-121.5959 256.0366,-121.5959\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"231.5\" y=\"-174.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3->1 -->\n",
|
|
"<g id=\"edge10\" class=\"edge\">\n",
|
|
"<title>3->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M261.2905,-30.7331C281.0962,-50.4501 319.2564,-88.4391 341.8888,-110.9701\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"347.0153,-116.0735 339.832,-113.3672 344.5348,-113.6042 342.0544,-111.1348 342.0544,-111.1348 342.0544,-111.1348 344.5348,-113.6042 344.2768,-108.9024 347.0153,-116.0735 347.0153,-116.0735\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"287\" y=\"-96.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3->3 -->\n",
|
|
"<g id=\"edge11\" class=\"edge\">\n",
|
|
"<title>3->3</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M238.9254,-33.5414C236.2303,-43.9087 239.4219,-54 248.5,-54 255.4504,-54 258.9503,-48.0847 258.9995,-40.6591\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"258.0746,-33.5414 262.1004,-40.0771 258.5256,-37.0123 258.9767,-40.4831 258.9767,-40.4831 258.9767,-40.4831 258.5256,-37.0123 255.853,-40.889 258.0746,-33.5414 258.0746,-33.5414\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"231.5\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & b</text>\n",
|
|
"</g>\n",
|
|
"</g>\n",
|
|
"</svg>\n"
|
|
],
|
|
"text/plain": [
|
|
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7d6b6542a0> >"
|
|
]
|
|
},
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"b = spot.translate('X (F(Ga <-> b) & GF!b)'); b"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"Prefix:\n",
|
|
" 4\n",
|
|
" | 1\n",
|
|
" 0\n",
|
|
" | !a & !b\n",
|
|
"Cycle:\n",
|
|
" 1\n",
|
|
" | !b\t{0}"
|
|
]
|
|
},
|
|
"execution_count": 9,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"r = b.accepting_run(); r"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"r.highlight(5) # the parameter is a color number"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"The call of `highlight(5)` on the accepting run `r` modified the original automaton `b`:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/svg+xml": [
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
|
|
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
|
|
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
|
|
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
|
|
" -->\n",
|
|
"<!-- Pages: 1 -->\n",
|
|
"<svg width=\"386pt\" height=\"276pt\"\n",
|
|
" viewBox=\"0.00 0.00 386.00 276.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 272)\">\n",
|
|
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-272 382,-272 382,4 -4,4\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"168\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n",
|
|
"<text text-anchor=\"start\" x=\"190\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"<text text-anchor=\"start\" x=\"206\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)</text>\n",
|
|
"<text text-anchor=\"start\" x=\"166\" y=\"-239.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Büchi]</text>\n",
|
|
"<!-- I -->\n",
|
|
"<!-- 4 -->\n",
|
|
"<g id=\"node2\" class=\"node\">\n",
|
|
"<title>4</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-105\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"56\" y=\"-101.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">4</text>\n",
|
|
"</g>\n",
|
|
"<!-- I->4 -->\n",
|
|
"<g id=\"edge1\" class=\"edge\">\n",
|
|
"<title>I->4</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-105C4.178,-105 17.9448,-105 30.9241,-105\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-105 30.9808,-108.1501 34.4807,-105 30.9807,-105.0001 30.9807,-105.0001 30.9807,-105.0001 34.4807,-105 30.9807,-101.8501 37.9807,-105 37.9807,-105\"/>\n",
|
|
"</g>\n",
|
|
"<!-- 0 -->\n",
|
|
"<g id=\"node3\" class=\"node\">\n",
|
|
"<title>0</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"137\" cy=\"-105\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"137\" y=\"-101.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4->0 -->\n",
|
|
"<g id=\"edge12\" class=\"edge\">\n",
|
|
"<title>4->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M74.3802,-105C85.4352,-105 99.6622,-105 111.7609,-105\"/>\n",
|
|
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"118.9716,-105 111.9716,-108.1501 115.4716,-105.5 111.9716,-105.5001 111.9716,-105.0001 111.9716,-104.5001 115.4716,-104.5 111.9716,-101.8501 118.9716,-105 118.9716,-105\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"96.5\" y=\"-108.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->0 -->\n",
|
|
"<g id=\"edge2\" class=\"edge\">\n",
|
|
"<title>0->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M129.9688,-121.6641C128.4063,-131.625 130.75,-141 137,-141 141.6875,-141 144.1777,-135.7266 144.4707,-128.8876\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"144.0313,-121.6641 147.6006,-128.4598 144.2438,-125.1576 144.4564,-128.6511 144.4564,-128.6511 144.4564,-128.6511 144.2438,-125.1576 141.3122,-128.8425 144.0313,-121.6641 144.0313,-121.6641\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"123.5\" y=\"-144.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a | b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1 -->\n",
|
|
"<g id=\"node4\" class=\"node\">\n",
|
|
"<title>1</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"360\" cy=\"-129\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"360\" y=\"-125.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->1 -->\n",
|
|
"<g id=\"edge3\" class=\"edge\">\n",
|
|
"<title>0->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M144.8384,-121.309C157.9792,-146.5059 187.0932,-193.9758 228,-213 273.4887,-234.1551 322.045,-181.0667 345.5673,-149.848\"/>\n",
|
|
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"349.9296,-143.9244 348.3152,-151.4288 348.2568,-147.0391 346.1813,-149.8574 345.7787,-149.5609 345.3761,-149.2644 347.4516,-146.4461 343.2423,-147.693 349.9296,-143.9244 349.9296,-143.9244\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"228\" y=\"-220.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2 -->\n",
|
|
"<g id=\"node5\" class=\"node\">\n",
|
|
"<title>2</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"248.5\" cy=\"-105\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"248.5\" y=\"-101.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->2 -->\n",
|
|
"<g id=\"edge4\" class=\"edge\">\n",
|
|
"<title>0->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M155.412,-105C173.9217,-105 202.5942,-105 223.2267,-105\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"230.4306,-105 223.4307,-108.1501 226.9306,-105 223.4306,-105.0001 223.4306,-105.0001 223.4306,-105.0001 226.9306,-105 223.4306,-101.8501 230.4306,-105 230.4306,-105\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"174.5\" y=\"-108.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3 -->\n",
|
|
"<g id=\"node6\" class=\"node\">\n",
|
|
"<title>3</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"248.5\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"248.5\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->3 -->\n",
|
|
"<g id=\"edge5\" class=\"edge\">\n",
|
|
"<title>0->3</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M151.5767,-93.6263C171.301,-78.236 206.5611,-50.7236 228.6783,-33.4662\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"234.2723,-29.1014 230.6912,-35.8911 231.5129,-31.2545 228.7535,-33.4076 228.7535,-33.4076 228.7535,-33.4076 231.5129,-31.2545 226.8157,-30.9242 234.2723,-29.1014 234.2723,-29.1014\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"173\" y=\"-79.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->1 -->\n",
|
|
"<g id=\"edge6\" class=\"edge\">\n",
|
|
"<title>1->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M355.1797,-146.4099C354.28,-156.0879 355.8867,-165 360,-165 363.0207,-165 364.6896,-160.1936 365.0067,-153.8073\"/>\n",
|
|
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"364.8203,-146.4099 368.1457,-153.3283 365.4083,-149.8962 365.4966,-153.3951 364.9967,-153.4077 364.4969,-153.4203 364.4086,-149.9214 361.8477,-153.4871 364.8203,-146.4099 364.8203,-146.4099\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"353.5\" y=\"-183.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!b</text>\n",
|
|
"<text text-anchor=\"start\" x=\"352\" y=\"-168.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->1 -->\n",
|
|
"<g id=\"edge7\" class=\"edge\">\n",
|
|
"<title>1->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M352.7325,-145.5959C347.2416,-166.8633 349.6641,-195 360,-195 369.2458,-195 372.1594,-172.4854 368.7408,-152.5132\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"367.2675,-145.5959 371.8066,-151.7861 367.9966,-149.0191 368.7257,-152.4423 368.7257,-152.4423 368.7257,-152.4423 367.9966,-149.0191 365.6448,-153.0985 367.2675,-145.5959 367.2675,-145.5959\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"355.5\" y=\"-198.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->2 -->\n",
|
|
"<g id=\"edge8\" class=\"edge\">\n",
|
|
"<title>2->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M243.5012,-122.4099C242.5681,-132.0879 244.2344,-141 248.5,-141 251.6326,-141 253.3633,-136.1936 253.6921,-129.8073\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"253.4988,-122.4099 256.8307,-129.3252 253.5903,-125.9087 253.6818,-129.4075 253.6818,-129.4075 253.6818,-129.4075 253.5903,-125.9087 250.5329,-129.4899 253.4988,-122.4099 253.4988,-122.4099\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"230\" y=\"-159.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !b</text>\n",
|
|
"<text text-anchor=\"start\" x=\"240.5\" y=\"-144.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->2 -->\n",
|
|
"<g id=\"edge9\" class=\"edge\">\n",
|
|
"<title>2->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M240.9634,-121.5959C235.269,-142.8633 237.7813,-171 248.5,-171 258.0883,-171 261.1098,-148.4854 257.5645,-128.5132\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"256.0366,-121.5959 260.6223,-127.7517 256.7915,-125.0135 257.5464,-128.4311 257.5464,-128.4311 257.5464,-128.4311 256.7915,-125.0135 254.4706,-129.1106 256.0366,-121.5959 256.0366,-121.5959\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"231.5\" y=\"-174.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3->1 -->\n",
|
|
"<g id=\"edge10\" class=\"edge\">\n",
|
|
"<title>3->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M261.2905,-30.7331C281.0962,-50.4501 319.2564,-88.4391 341.8888,-110.9701\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"347.0153,-116.0735 339.832,-113.3672 344.5348,-113.6042 342.0544,-111.1348 342.0544,-111.1348 342.0544,-111.1348 344.5348,-113.6042 344.2768,-108.9024 347.0153,-116.0735 347.0153,-116.0735\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"287\" y=\"-96.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3->3 -->\n",
|
|
"<g id=\"edge11\" class=\"edge\">\n",
|
|
"<title>3->3</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M238.9254,-33.5414C236.2303,-43.9087 239.4219,-54 248.5,-54 255.4504,-54 258.9503,-48.0847 258.9995,-40.6591\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"258.0746,-33.5414 262.1004,-40.0771 258.5256,-37.0123 258.9767,-40.4831 258.9767,-40.4831 258.9767,-40.4831 258.5256,-37.0123 255.853,-40.889 258.0746,-33.5414 258.0746,-33.5414\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"231.5\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & b</text>\n",
|
|
"</g>\n",
|
|
"</g>\n",
|
|
"</svg>\n"
|
|
],
|
|
"text/plain": [
|
|
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7d6b6542a0> >"
|
|
]
|
|
},
|
|
"execution_count": 11,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"b"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Highlighting from a product\n",
|
|
"\n",
|
|
"Pretty often, accepting runs are found in a product but we want to display them on one of the original automata. This can be done by projecting the runs on those automata before displaying them."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/svg+xml": [
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
|
|
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
|
|
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
|
|
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
|
|
" -->\n",
|
|
"<!-- Pages: 1 -->\n",
|
|
"<svg width=\"171pt\" height=\"125pt\"\n",
|
|
" viewBox=\"0.00 0.00 171.00 124.80\" 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 120.8)\">\n",
|
|
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-120.8 167,-120.8 167,4 -4,4\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"58.5\" y=\"-86.6\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Büchi]</text>\n",
|
|
"<!-- I -->\n",
|
|
"<!-- 1 -->\n",
|
|
"<g id=\"node2\" class=\"node\">\n",
|
|
"<title>1</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-22\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"56\" y=\"-18.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- I->1 -->\n",
|
|
"<g id=\"edge1\" class=\"edge\">\n",
|
|
"<title>I->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-22C4.178,-22 17.9448,-22 30.9241,-22\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-22 30.9808,-25.1501 34.4807,-22 30.9807,-22.0001 30.9807,-22.0001 30.9807,-22.0001 34.4807,-22 30.9807,-18.8501 37.9807,-22 37.9807,-22\"/>\n",
|
|
"</g>\n",
|
|
"<!-- 1->1 -->\n",
|
|
"<g id=\"edge4\" class=\"edge\">\n",
|
|
"<title>1->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M49.6208,-39.0373C48.3189,-48.8579 50.4453,-58 56,-58 60.166,-58 62.4036,-52.8576 62.7128,-46.1433\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"62.3792,-39.0373 65.8541,-45.8818 62.5434,-42.5335 62.7076,-46.0296 62.7076,-46.0296 62.7076,-46.0296 62.5434,-42.5335 59.561,-46.1774 62.3792,-39.0373 62.3792,-39.0373\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"37.5\" y=\"-61.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0 -->\n",
|
|
"<g id=\"node3\" class=\"node\">\n",
|
|
"<title>0</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"141\" cy=\"-22\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"141\" cy=\"-22\" rx=\"22\" ry=\"22\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"141\" y=\"-18.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->0 -->\n",
|
|
"<g id=\"edge3\" class=\"edge\">\n",
|
|
"<title>1->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M74.0263,-22C84.9439,-22 99.13,-22 111.634,-22\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"118.7644,-22 111.7645,-25.1501 115.2644,-22 111.7644,-22.0001 111.7644,-22.0001 111.7644,-22.0001 115.2644,-22 111.7644,-18.8501 118.7644,-22 118.7644,-22\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"92\" y=\"-25.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->0 -->\n",
|
|
"<g id=\"edge2\" class=\"edge\">\n",
|
|
"<title>0->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M132.9937,-42.5808C131.8859,-52.8447 134.5547,-62 141,-62 145.834,-62 148.5437,-56.8502 149.129,-49.9451\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"149.0063,-42.5808 152.2726,-49.5273 149.0647,-46.0803 149.123,-49.5798 149.123,-49.5798 149.123,-49.5798 149.0647,-46.0803 145.9735,-49.6324 149.0063,-42.5808 149.0063,-42.5808\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"141\" y=\"-65.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"</g>\n",
|
|
"</svg>\n"
|
|
],
|
|
"text/plain": [
|
|
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7d6b654ab0> >"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/svg+xml": [
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
|
|
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
|
|
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
|
|
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
|
|
" -->\n",
|
|
"<!-- Pages: 1 -->\n",
|
|
"<svg width=\"82pt\" height=\"161pt\"\n",
|
|
" viewBox=\"0.00 0.00 82.00 161.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 157)\">\n",
|
|
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-157 78,-157 78,4 -4,4\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"16\" y=\"-138.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n",
|
|
"<text text-anchor=\"start\" x=\"38\" y=\"-138.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"<text text-anchor=\"start\" x=\"54\" y=\"-138.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)</text>\n",
|
|
"<text text-anchor=\"start\" x=\"14\" y=\"-124.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Büchi]</text>\n",
|
|
"<!-- I -->\n",
|
|
"<!-- 0 -->\n",
|
|
"<g id=\"node2\" class=\"node\">\n",
|
|
"<title>0</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"56\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
|
|
"</g>\n",
|
|
"<!-- I->0 -->\n",
|
|
"<g id=\"edge1\" class=\"edge\">\n",
|
|
"<title>I->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-18C4.178,-18 17.9448,-18 30.9241,-18\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-18 30.9808,-21.1501 34.4807,-18 30.9807,-18.0001 30.9807,-18.0001 30.9807,-18.0001 34.4807,-18 30.9807,-14.8501 37.9807,-18 37.9807,-18\"/>\n",
|
|
"</g>\n",
|
|
"<!-- 0->0 -->\n",
|
|
"<g id=\"edge2\" class=\"edge\">\n",
|
|
"<title>0->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" 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=\"#000000\" stroke=\"#000000\" 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=\"50.5\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->0 -->\n",
|
|
"<g id=\"edge3\" class=\"edge\">\n",
|
|
"<title>0->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" 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=\"#000000\" stroke=\"#000000\" 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=\"52.5\" y=\"-90.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
|
|
"<text text-anchor=\"start\" x=\"48\" y=\"-75.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"</g>\n",
|
|
"</g>\n",
|
|
"</svg>\n"
|
|
],
|
|
"text/plain": [
|
|
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7d6b654960> >"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"left = spot.translate('a U b')\n",
|
|
"right = spot.translate('GFa')\n",
|
|
"display(left, right)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/svg+xml": [
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
|
|
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
|
|
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
|
|
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
|
|
" -->\n",
|
|
"<!-- Pages: 1 -->\n",
|
|
"<svg width=\"227pt\" height=\"164pt\"\n",
|
|
" viewBox=\"0.00 0.00 227.00 164.45\" 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 160.4473)\">\n",
|
|
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-160.4473 223,-160.4473 223,4 -4,4\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"88.5\" y=\"-142.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n",
|
|
"<text text-anchor=\"start\" x=\"110.5\" y=\"-142.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"<text text-anchor=\"start\" x=\"126.5\" y=\"-142.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)</text>\n",
|
|
"<text text-anchor=\"start\" x=\"86.5\" y=\"-128.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Büchi]</text>\n",
|
|
"<!-- I -->\n",
|
|
"<!-- 0 -->\n",
|
|
"<g id=\"node2\" class=\"node\">\n",
|
|
"<title>0</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"65\" cy=\"-21.4473\" rx=\"27\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"55\" y=\"-17.7473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1,0</text>\n",
|
|
"</g>\n",
|
|
"<!-- I->0 -->\n",
|
|
"<g id=\"edge1\" class=\"edge\">\n",
|
|
"<title>I->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.2244,-21.4473C4.383,-21.4473 17.3969,-21.4473 30.8528,-21.4473\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.8798,-21.4473 30.8799,-24.5974 34.3798,-21.4474 30.8798,-21.4474 30.8798,-21.4474 30.8798,-21.4474 34.3798,-21.4474 30.8798,-18.2974 37.8798,-21.4473 37.8798,-21.4473\"/>\n",
|
|
"</g>\n",
|
|
"<!-- 0->0 -->\n",
|
|
"<g id=\"edge4\" class=\"edge\">\n",
|
|
"<title>0->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M57.1448,-38.8572C55.6785,-48.5352 58.2969,-57.4473 65,-57.4473 69.9226,-57.4473 72.6423,-52.641 73.1591,-46.2546\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"72.8552,-38.8572 76.2899,-45.722 72.9989,-42.3543 73.1426,-45.8513 73.1426,-45.8513 73.1426,-45.8513 72.9989,-42.3543 69.9953,-45.9806 72.8552,-38.8572 72.8552,-38.8572\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"46.5\" y=\"-61.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1 -->\n",
|
|
"<g id=\"node3\" class=\"node\">\n",
|
|
"<title>1</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"192\" cy=\"-21.4473\" rx=\"27\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"182\" y=\"-17.7473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0,0</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->1 -->\n",
|
|
"<g id=\"edge2\" class=\"edge\">\n",
|
|
"<title>0->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M92.2447,-21.4473C111.4127,-21.4473 137.2089,-21.4473 157.7667,-21.4473\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"164.8004,-21.4473 157.8004,-24.5974 161.3004,-21.4474 157.8004,-21.4474 157.8004,-21.4474 157.8004,-21.4474 161.3004,-21.4474 157.8003,-18.2974 164.8004,-21.4473 164.8004,-21.4473\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"110\" y=\"-25.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->1 -->\n",
|
|
"<g id=\"edge3\" class=\"edge\">\n",
|
|
"<title>0->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M86.4111,-10.3522C93.6978,-7.1385 102.0208,-4.0628 110,-2.4473 126.1174,.8158 130.8826,.8158 147,-2.4473 152.6104,-3.5832 158.3907,-5.441 163.8613,-7.5611\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"170.5889,-10.3522 162.9162,-10.5793 167.3561,-9.0109 164.1233,-7.6697 164.1233,-7.6697 164.1233,-7.6697 167.3561,-9.0109 165.3304,-4.7602 170.5889,-10.3522 170.5889,-10.3522\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"111.5\" y=\"-6.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->1 -->\n",
|
|
"<g id=\"edge5\" class=\"edge\">\n",
|
|
"<title>1->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M186.4273,-39.2291C185.4803,-48.7623 187.3379,-57.4473 192,-57.4473 195.4237,-57.4473 197.335,-52.7634 197.7337,-46.4994\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"197.5727,-39.2291 200.877,-46.1576 197.6502,-42.7282 197.7277,-46.2273 197.7277,-46.2273 197.7277,-46.2273 197.6502,-42.7282 194.5785,-46.2971 197.5727,-39.2291 197.5727,-39.2291\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"186.5\" y=\"-61.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->1 -->\n",
|
|
"<g id=\"edge6\" class=\"edge\">\n",
|
|
"<title>1->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M182.9293,-38.5891C177.5936,-56.0323 180.6172,-75.4473 192,-75.4473 201.871,-75.4473 205.4558,-60.8469 202.7543,-45.5934\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"201.0707,-38.5891 205.7695,-44.659 201.8887,-41.9922 202.7067,-45.3952 202.7067,-45.3952 202.7067,-45.3952 201.8887,-41.9922 199.644,-46.1315 201.0707,-38.5891 201.0707,-38.5891\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"188.5\" y=\"-94.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
|
|
"<text text-anchor=\"start\" x=\"184\" y=\"-79.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"</g>\n",
|
|
"</g>\n",
|
|
"</svg>\n"
|
|
],
|
|
"text/plain": [
|
|
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7d6b654990> >"
|
|
]
|
|
},
|
|
"execution_count": 13,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"prod = spot.product(left, right); prod"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 14,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"Prefix:\n",
|
|
" 1,0\n",
|
|
" | !a & b\n",
|
|
"Cycle:\n",
|
|
" 0,0\n",
|
|
" | a\t{0}"
|
|
]
|
|
},
|
|
"execution_count": 14,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"run = prod.accepting_run(); run"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"run.highlight(5)\n",
|
|
"# Note that by default project() needs to know on which side you project, but it cannot \n",
|
|
"# guess it. The left-side is assumed unless you pass True as a second argument.\n",
|
|
"run.project(left).highlight(5)\n",
|
|
"run.project(right, True).highlight(5)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 16,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/svg+xml": [
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
|
|
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
|
|
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
|
|
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
|
|
" -->\n",
|
|
"<!-- Pages: 1 -->\n",
|
|
"<svg width=\"227pt\" height=\"164pt\"\n",
|
|
" viewBox=\"0.00 0.00 227.00 164.45\" 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 160.4473)\">\n",
|
|
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-160.4473 223,-160.4473 223,4 -4,4\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"88.5\" y=\"-142.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n",
|
|
"<text text-anchor=\"start\" x=\"110.5\" y=\"-142.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"<text text-anchor=\"start\" x=\"126.5\" y=\"-142.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)</text>\n",
|
|
"<text text-anchor=\"start\" x=\"86.5\" y=\"-128.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Büchi]</text>\n",
|
|
"<!-- I -->\n",
|
|
"<!-- 0 -->\n",
|
|
"<g id=\"node2\" class=\"node\">\n",
|
|
"<title>0</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"65\" cy=\"-21.4473\" rx=\"27\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"55\" y=\"-17.7473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1,0</text>\n",
|
|
"</g>\n",
|
|
"<!-- I->0 -->\n",
|
|
"<g id=\"edge1\" class=\"edge\">\n",
|
|
"<title>I->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.2244,-21.4473C4.383,-21.4473 17.3969,-21.4473 30.8528,-21.4473\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.8798,-21.4473 30.8799,-24.5974 34.3798,-21.4474 30.8798,-21.4474 30.8798,-21.4474 30.8798,-21.4474 34.3798,-21.4474 30.8798,-18.2974 37.8798,-21.4473 37.8798,-21.4473\"/>\n",
|
|
"</g>\n",
|
|
"<!-- 0->0 -->\n",
|
|
"<g id=\"edge4\" class=\"edge\">\n",
|
|
"<title>0->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M57.1448,-38.8572C55.6785,-48.5352 58.2969,-57.4473 65,-57.4473 69.9226,-57.4473 72.6423,-52.641 73.1591,-46.2546\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"72.8552,-38.8572 76.2899,-45.722 72.9989,-42.3543 73.1426,-45.8513 73.1426,-45.8513 73.1426,-45.8513 72.9989,-42.3543 69.9953,-45.9806 72.8552,-38.8572 72.8552,-38.8572\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"46.5\" y=\"-61.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1 -->\n",
|
|
"<g id=\"node3\" class=\"node\">\n",
|
|
"<title>1</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"192\" cy=\"-21.4473\" rx=\"27\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"182\" y=\"-17.7473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0,0</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->1 -->\n",
|
|
"<g id=\"edge2\" class=\"edge\">\n",
|
|
"<title>0->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M92.2447,-21.4473C111.4127,-21.4473 137.2089,-21.4473 157.7667,-21.4473\"/>\n",
|
|
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"164.8004,-21.4473 157.8004,-24.5974 161.3004,-21.9474 157.8004,-21.9474 157.8004,-21.4474 157.8004,-20.9474 161.3004,-20.9474 157.8003,-18.2974 164.8004,-21.4473 164.8004,-21.4473\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"110\" y=\"-25.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->1 -->\n",
|
|
"<g id=\"edge3\" class=\"edge\">\n",
|
|
"<title>0->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M86.4111,-10.3522C93.6978,-7.1385 102.0208,-4.0628 110,-2.4473 126.1174,.8158 130.8826,.8158 147,-2.4473 152.6104,-3.5832 158.3907,-5.441 163.8613,-7.5611\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"170.5889,-10.3522 162.9162,-10.5793 167.3561,-9.0109 164.1233,-7.6697 164.1233,-7.6697 164.1233,-7.6697 167.3561,-9.0109 165.3304,-4.7602 170.5889,-10.3522 170.5889,-10.3522\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"111.5\" y=\"-6.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->1 -->\n",
|
|
"<g id=\"edge5\" class=\"edge\">\n",
|
|
"<title>1->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M186.4273,-39.2291C185.4803,-48.7623 187.3379,-57.4473 192,-57.4473 195.4237,-57.4473 197.335,-52.7634 197.7337,-46.4994\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"197.5727,-39.2291 200.877,-46.1576 197.6502,-42.7282 197.7277,-46.2273 197.7277,-46.2273 197.7277,-46.2273 197.6502,-42.7282 194.5785,-46.2971 197.5727,-39.2291 197.5727,-39.2291\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"186.5\" y=\"-61.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->1 -->\n",
|
|
"<g id=\"edge6\" class=\"edge\">\n",
|
|
"<title>1->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M182.9293,-38.5891C177.5936,-56.0323 180.6172,-75.4473 192,-75.4473 201.871,-75.4473 205.4558,-60.8469 202.7543,-45.5934\"/>\n",
|
|
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"201.0707,-38.5891 205.7695,-44.659 202.3749,-41.8753 203.1929,-45.2784 202.7067,-45.3952 202.2206,-45.5121 201.4025,-42.109 199.644,-46.1315 201.0707,-38.5891 201.0707,-38.5891\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"188.5\" y=\"-94.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
|
|
"<text text-anchor=\"start\" x=\"184\" y=\"-79.2473\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"</g>\n",
|
|
"</g>\n",
|
|
"</svg>\n"
|
|
],
|
|
"text/plain": [
|
|
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7d6b654990> >"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/svg+xml": [
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
|
|
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
|
|
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
|
|
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
|
|
" -->\n",
|
|
"<!-- Pages: 1 -->\n",
|
|
"<svg width=\"171pt\" height=\"125pt\"\n",
|
|
" viewBox=\"0.00 0.00 171.00 124.80\" 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 120.8)\">\n",
|
|
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-120.8 167,-120.8 167,4 -4,4\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"58.5\" y=\"-86.6\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Büchi]</text>\n",
|
|
"<!-- I -->\n",
|
|
"<!-- 1 -->\n",
|
|
"<g id=\"node2\" class=\"node\">\n",
|
|
"<title>1</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-22\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"56\" y=\"-18.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- I->1 -->\n",
|
|
"<g id=\"edge1\" class=\"edge\">\n",
|
|
"<title>I->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-22C4.178,-22 17.9448,-22 30.9241,-22\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-22 30.9808,-25.1501 34.4807,-22 30.9807,-22.0001 30.9807,-22.0001 30.9807,-22.0001 34.4807,-22 30.9807,-18.8501 37.9807,-22 37.9807,-22\"/>\n",
|
|
"</g>\n",
|
|
"<!-- 1->1 -->\n",
|
|
"<g id=\"edge4\" class=\"edge\">\n",
|
|
"<title>1->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M49.6208,-39.0373C48.3189,-48.8579 50.4453,-58 56,-58 60.166,-58 62.4036,-52.8576 62.7128,-46.1433\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"62.3792,-39.0373 65.8541,-45.8818 62.5434,-42.5335 62.7076,-46.0296 62.7076,-46.0296 62.7076,-46.0296 62.5434,-42.5335 59.561,-46.1774 62.3792,-39.0373 62.3792,-39.0373\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"37.5\" y=\"-61.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0 -->\n",
|
|
"<g id=\"node3\" class=\"node\">\n",
|
|
"<title>0</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"141\" cy=\"-22\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"141\" cy=\"-22\" rx=\"22\" ry=\"22\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"141\" y=\"-18.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->0 -->\n",
|
|
"<g id=\"edge3\" class=\"edge\">\n",
|
|
"<title>1->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M74.0263,-22C84.9439,-22 99.13,-22 111.634,-22\"/>\n",
|
|
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"118.7644,-22 111.7645,-25.1501 115.2644,-22.5 111.7644,-22.5001 111.7644,-22.0001 111.7644,-21.5001 115.2644,-21.5 111.7644,-18.8501 118.7644,-22 118.7644,-22\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"92\" y=\"-25.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->0 -->\n",
|
|
"<g id=\"edge2\" class=\"edge\">\n",
|
|
"<title>0->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M132.9937,-42.5808C131.8859,-52.8447 134.5547,-62 141,-62 145.834,-62 148.5437,-56.8502 149.129,-49.9451\"/>\n",
|
|
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"149.0063,-42.5808 152.2726,-49.5273 149.5646,-46.072 149.623,-49.5715 149.123,-49.5798 148.6231,-49.5882 148.5647,-46.0887 145.9735,-49.6324 149.0063,-42.5808 149.0063,-42.5808\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"141\" y=\"-65.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"</g>\n",
|
|
"</svg>\n"
|
|
],
|
|
"text/plain": [
|
|
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7d6b654ab0> >"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/svg+xml": [
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
|
|
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
|
|
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
|
|
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
|
|
" -->\n",
|
|
"<!-- Pages: 1 -->\n",
|
|
"<svg width=\"82pt\" height=\"161pt\"\n",
|
|
" viewBox=\"0.00 0.00 82.00 161.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 157)\">\n",
|
|
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-157 78,-157 78,4 -4,4\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"16\" y=\"-138.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n",
|
|
"<text text-anchor=\"start\" x=\"38\" y=\"-138.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"<text text-anchor=\"start\" x=\"54\" y=\"-138.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)</text>\n",
|
|
"<text text-anchor=\"start\" x=\"14\" y=\"-124.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Büchi]</text>\n",
|
|
"<!-- I -->\n",
|
|
"<!-- 0 -->\n",
|
|
"<g id=\"node2\" class=\"node\">\n",
|
|
"<title>0</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"56\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
|
|
"</g>\n",
|
|
"<!-- I->0 -->\n",
|
|
"<g id=\"edge1\" class=\"edge\">\n",
|
|
"<title>I->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-18C4.178,-18 17.9448,-18 30.9241,-18\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-18 30.9808,-21.1501 34.4807,-18 30.9807,-18.0001 30.9807,-18.0001 30.9807,-18.0001 34.4807,-18 30.9807,-14.8501 37.9807,-18 37.9807,-18\"/>\n",
|
|
"</g>\n",
|
|
"<!-- 0->0 -->\n",
|
|
"<g id=\"edge2\" class=\"edge\">\n",
|
|
"<title>0->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" 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=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"59.2357,-35.7817 62.4756,-42.7406 59.7808,-39.275 59.8258,-42.7747 59.3258,-42.7812 58.8259,-42.7876 58.7808,-39.2879 56.1761,-42.8217 59.2357,-35.7817 59.2357,-35.7817\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"50.5\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->0 -->\n",
|
|
"<g id=\"edge3\" class=\"edge\">\n",
|
|
"<title>0->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" 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=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"61.3159,-35.4203 65.3856,-41.9288 62.2856,-38.8202 62.76,-42.2879 62.2646,-42.3557 61.7692,-42.4235 61.2949,-38.9558 59.1437,-42.7826 61.3159,-35.4203 61.3159,-35.4203\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"52.5\" y=\"-90.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
|
|
"<text text-anchor=\"start\" x=\"48\" y=\"-75.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"</g>\n",
|
|
"</g>\n",
|
|
"</svg>\n"
|
|
],
|
|
"text/plain": [
|
|
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7d6b654960> >"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"display(prod, left, right)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"The projection also works for products generated on-the-fly, but the on-the-fly product itself cannot be highlighted (it does not store states or transitions). "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 17,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"Prefix:\n",
|
|
" 0 * 3\n",
|
|
" | a & !b\n",
|
|
" 1 * 2\n",
|
|
" | a\t{0}\n",
|
|
" 1 * 1\n",
|
|
" | a\t{0}\n",
|
|
" 1 * 0\n",
|
|
" | a & b\t{0}\n",
|
|
"Cycle:\n",
|
|
" 1 * 4\n",
|
|
" | a\t{0,1}"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/svg+xml": [
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
|
|
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
|
|
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
|
|
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
|
|
" -->\n",
|
|
"<!-- Pages: 1 -->\n",
|
|
"<svg width=\"687pt\" height=\"262pt\"\n",
|
|
" viewBox=\"0.00 0.00 686.57 262.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 258)\">\n",
|
|
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-258 682.5675,-258 682.5675,4 -4,4\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"292.2837\" y=\"-239.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n",
|
|
"<text text-anchor=\"start\" x=\"314.2837\" y=\"-239.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"<text text-anchor=\"start\" x=\"330.2837\" y=\"-239.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)&Inf(</text>\n",
|
|
"<text text-anchor=\"start\" x=\"366.2837\" y=\"-239.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
|
|
"<text text-anchor=\"start\" x=\"382.2837\" y=\"-239.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)</text>\n",
|
|
"<text text-anchor=\"start\" x=\"295.2837\" y=\"-225.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[gen. Büchi 2]</text>\n",
|
|
"<!-- I -->\n",
|
|
"<!-- 0 -->\n",
|
|
"<g id=\"node2\" class=\"node\">\n",
|
|
"<title>0</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"68.5473\" cy=\"-166\" rx=\"30.5947\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"53.0473\" y=\"-162.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0 * 3</text>\n",
|
|
"</g>\n",
|
|
"<!-- I->0 -->\n",
|
|
"<g id=\"edge1\" class=\"edge\">\n",
|
|
"<title>I->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.2642,-166C4.4473,-166 17.1175,-166 30.6189,-166\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.7092,-166 30.7093,-169.1501 34.2092,-166 30.7092,-166.0001 30.7092,-166.0001 30.7092,-166.0001 34.2092,-166 30.7092,-162.8501 37.7092,-166 37.7092,-166\"/>\n",
|
|
"</g>\n",
|
|
"<!-- 1 -->\n",
|
|
"<g id=\"node3\" class=\"node\">\n",
|
|
"<title>1</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"202.6419\" cy=\"-193\" rx=\"30.5947\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"187.1419\" y=\"-189.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1 * 2</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->1 -->\n",
|
|
"<g id=\"edge2\" class=\"edge\">\n",
|
|
"<title>0->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M97.6438,-171.8586C117.8516,-175.9274 144.9174,-181.3772 166.5079,-185.7244\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"173.6021,-187.1528 166.118,-188.8591 170.171,-186.4619 166.7398,-185.771 166.7398,-185.771 166.7398,-185.771 170.171,-186.4619 167.3617,-182.683 173.6021,-187.1528 173.6021,-187.1528\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"117.0946\" y=\"-185.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2 -->\n",
|
|
"<g id=\"node4\" class=\"node\">\n",
|
|
"<title>2</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"202.6419\" cy=\"-139\" rx=\"30.5947\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"187.1419\" y=\"-135.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2 * 2</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->2 -->\n",
|
|
"<g id=\"edge3\" class=\"edge\">\n",
|
|
"<title>0->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M97.6438,-160.1414C117.8516,-156.0726 144.9174,-150.6228 166.5079,-146.2756\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"173.6021,-144.8472 167.3617,-149.317 170.171,-145.5381 166.7398,-146.229 166.7398,-146.229 166.7398,-146.229 170.171,-145.5381 166.118,-143.1409 173.6021,-144.8472 173.6021,-144.8472\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"129.0946\" y=\"-158.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3 -->\n",
|
|
"<g id=\"node5\" class=\"node\">\n",
|
|
"<title>3</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"315.7364\" cy=\"-182\" rx=\"30.5947\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"300.2364\" y=\"-178.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1 * 1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->3 -->\n",
|
|
"<g id=\"edge4\" class=\"edge\">\n",
|
|
"<title>1->3</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M232.9491,-190.0522C246.8938,-188.6959 263.574,-187.0735 278.2962,-185.6416\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"285.3455,-184.9559 278.6834,-188.7689 281.862,-185.2948 278.3784,-185.6337 278.3784,-185.6337 278.3784,-185.6337 281.862,-185.2948 278.0734,-182.4985 285.3455,-184.9559 285.3455,-184.9559\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"255.6892\" y=\"-206.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
|
|
"<text text-anchor=\"start\" x=\"251.1892\" y=\"-191.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->3 -->\n",
|
|
"<g id=\"edge5\" class=\"edge\">\n",
|
|
"<title>2->3</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M228.588,-148.8651C244.8232,-155.0379 265.8742,-163.0418 283.2194,-169.6366\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"289.911,-172.1808 282.2485,-172.6374 286.6395,-170.9369 283.368,-169.693 283.368,-169.693 283.368,-169.693 286.6395,-170.9369 284.4875,-166.7487 289.911,-172.1808 289.911,-172.1808\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"255.6892\" y=\"-166.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4 -->\n",
|
|
"<g id=\"node6\" class=\"node\">\n",
|
|
"<title>4</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"315.7364\" cy=\"-117\" rx=\"30.5947\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"300.2364\" y=\"-113.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2 * 1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->4 -->\n",
|
|
"<g id=\"edge6\" class=\"edge\">\n",
|
|
"<title>2->4</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M225.7285,-126.8171C233.5889,-123.2705 242.5705,-119.8539 251.1892,-118 259.8348,-116.1403 269.2831,-115.332 278.2178,-115.1036\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"285.248,-115.0358 278.2787,-118.2533 281.7482,-115.0696 278.2483,-115.1034 278.2483,-115.1034 278.2483,-115.1034 281.7482,-115.0696 278.2179,-111.9536 285.248,-115.0358 285.248,-115.0358\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"259.1892\" y=\"-121.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 5 -->\n",
|
|
"<g id=\"node7\" class=\"node\">\n",
|
|
"<title>5</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"428.831\" cy=\"-171\" rx=\"30.5947\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"413.331\" y=\"-167.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1 * 0</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3->5 -->\n",
|
|
"<g id=\"edge7\" class=\"edge\">\n",
|
|
"<title>3->5</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M346.0437,-179.0522C359.9884,-177.6959 376.6686,-176.0735 391.3907,-174.6416\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"398.4401,-173.9559 391.778,-177.7689 394.9565,-174.2948 391.473,-174.6337 391.473,-174.6337 391.473,-174.6337 394.9565,-174.2948 391.168,-171.4985 398.4401,-173.9559 398.4401,-173.9559\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"368.7837\" y=\"-195.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
|
|
"<text text-anchor=\"start\" x=\"364.2837\" y=\"-180.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4->5 -->\n",
|
|
"<g id=\"edge8\" class=\"edge\">\n",
|
|
"<title>4->5</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M339.7209,-128.452C356.8142,-136.6137 379.9295,-147.6507 398.3337,-156.4382\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"404.8811,-159.5645 397.207,-159.3909 401.7227,-158.0564 398.5643,-156.5483 398.5643,-156.5483 398.5643,-156.5483 401.7227,-158.0564 399.9216,-153.7057 404.8811,-159.5645 404.8811,-159.5645\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"368.7837\" y=\"-150.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
|
|
"</g>\n",
|
|
"<!-- 6 -->\n",
|
|
"<g id=\"node8\" class=\"node\">\n",
|
|
"<title>6</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"428.831\" cy=\"-106\" rx=\"30.5947\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"413.331\" y=\"-102.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2 * 0</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4->6 -->\n",
|
|
"<g id=\"edge9\" class=\"edge\">\n",
|
|
"<title>4->6</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M344.0891,-110.2301C350.6808,-108.9156 357.6972,-107.7229 364.2837,-107 372.9003,-106.0543 382.2021,-105.5887 390.9886,-105.3996\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"398.2217,-105.3012 391.2653,-108.5462 394.722,-105.3488 391.2224,-105.3965 391.2224,-105.3965 391.2224,-105.3965 394.722,-105.3488 391.1795,-102.2468 398.2217,-105.3012 398.2217,-105.3012\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"372.2837\" y=\"-110.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 7 -->\n",
|
|
"<g id=\"node9\" class=\"node\">\n",
|
|
"<title>7</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"648.0202\" cy=\"-120\" rx=\"30.5947\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"632.5202\" y=\"-116.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1 * 4</text>\n",
|
|
"</g>\n",
|
|
"<!-- 5->7 -->\n",
|
|
"<g id=\"edge10\" class=\"edge\">\n",
|
|
"<title>5->7</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M457.4862,-164.3326C497.2784,-155.074 569.2352,-138.3314 612.4232,-128.2826\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"619.358,-126.669 613.254,-131.3235 615.9491,-127.4622 612.5401,-128.2554 612.5401,-128.2554 612.5401,-128.2554 615.9491,-127.4622 611.8262,-125.1874 619.358,-126.669 619.358,-126.669\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"517.9256\" y=\"-171.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & b</text>\n",
|
|
"<text text-anchor=\"start\" x=\"526.9256\" y=\"-156.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"</g>\n",
|
|
"<!-- 6->7 -->\n",
|
|
"<g id=\"edge11\" class=\"edge\">\n",
|
|
"<title>6->7</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M459.3083,-107.9466C498.7837,-110.468 567.5827,-114.8623 610.3068,-117.5912\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"617.4492,-118.0474 610.2626,-120.7447 613.9563,-117.8242 610.4634,-117.6011 610.4634,-117.6011 610.4634,-117.6011 613.9563,-117.8242 610.6643,-114.4575 617.4492,-118.0474 617.4492,-118.0474\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"517.9256\" y=\"-118.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 8 -->\n",
|
|
"<g id=\"node10\" class=\"node\">\n",
|
|
"<title>8</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"534.9256\" cy=\"-18\" rx=\"30.5947\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"519.4256\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2 * 4</text>\n",
|
|
"</g>\n",
|
|
"<!-- 6->8 -->\n",
|
|
"<g id=\"edge12\" class=\"edge\">\n",
|
|
"<title>6->8</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M446.8285,-91.072C464.6161,-76.3181 491.9205,-53.6705 511.4141,-37.5016\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"517.1939,-32.7075 513.8171,-39.601 514.5,-34.942 511.8061,-37.1765 511.8061,-37.1765 511.8061,-37.1765 514.5,-34.942 509.795,-34.752 517.1939,-32.7075 517.1939,-32.7075\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"477.3783\" y=\"-68.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 7->7 -->\n",
|
|
"<g id=\"edge13\" class=\"edge\">\n",
|
|
"<title>7->7</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M638.097,-137.0373C636.0718,-146.8579 639.3796,-156 648.0202,-156 654.5007,-156 657.9814,-150.8576 658.4623,-144.1433\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"657.9434,-137.0373 661.595,-143.7892 658.1984,-140.528 658.4533,-144.0187 658.4533,-144.0187 658.4533,-144.0187 658.1984,-140.528 655.3117,-144.2482 657.9434,-137.0373 657.9434,-137.0373\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"644.5202\" y=\"-173.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
|
|
"<text text-anchor=\"start\" x=\"632.0202\" y=\"-159.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"<text text-anchor=\"start\" x=\"648.0202\" y=\"-159.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
|
|
"</g>\n",
|
|
"<!-- 8->7 -->\n",
|
|
"<g id=\"edge14\" class=\"edge\">\n",
|
|
"<title>8->7</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M551.9312,-33.2448C564.9572,-44.9307 583.3671,-61.4655 599.4729,-76 607.9809,-83.678 617.3114,-92.1275 625.4993,-99.5521\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"630.9612,-104.5063 623.66,-102.1365 628.3687,-102.1548 625.7763,-99.8033 625.7763,-99.8033 625.7763,-99.8033 628.3687,-102.1548 627.8927,-97.4702 630.9612,-104.5063 630.9612,-104.5063\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"587.9729\" y=\"-94.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
|
|
"<text text-anchor=\"start\" x=\"583.4729\" y=\"-79.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
|
|
"</g>\n",
|
|
"<!-- 8->8 -->\n",
|
|
"<g id=\"edge15\" class=\"edge\">\n",
|
|
"<title>8->8</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M525.6422,-35.4099C523.9092,-45.0879 527.0037,-54 534.9256,-54 540.7432,-54 543.9574,-49.1936 544.5682,-42.8073\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"544.2091,-35.4099 547.6948,-42.2489 544.3788,-38.9058 544.5486,-42.4017 544.5486,-42.4017 544.5486,-42.4017 544.3788,-38.9058 541.4023,-42.5544 544.2091,-35.4099 544.2091,-35.4099\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"530.4256\" y=\"-72.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"<text text-anchor=\"start\" x=\"526.9256\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
|
|
"</g>\n",
|
|
"</g>\n",
|
|
"</svg>\n"
|
|
],
|
|
"text/plain": [
|
|
"<spot.impl.twa_product; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_product > *' at 0x7f7d6b654930> >"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/svg+xml": [
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
|
|
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
|
|
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
|
|
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
|
|
" -->\n",
|
|
"<!-- Pages: 1 -->\n",
|
|
"<svg width=\"255pt\" height=\"165pt\"\n",
|
|
" viewBox=\"0.00 0.00 255.00 164.80\" 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 160.8)\">\n",
|
|
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-160.8 251,-160.8 251,4 -4,4\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"100.5\" y=\"-126.6\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Büchi]</text>\n",
|
|
"<!-- I -->\n",
|
|
"<!-- 0 -->\n",
|
|
"<g id=\"node2\" class=\"node\">\n",
|
|
"<title>0</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-62\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"56\" y=\"-58.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
|
|
"</g>\n",
|
|
"<!-- I->0 -->\n",
|
|
"<g id=\"edge1\" class=\"edge\">\n",
|
|
"<title>I->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-62C4.178,-62 17.9448,-62 30.9241,-62\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-62 30.9808,-65.1501 34.4807,-62 30.9807,-62.0001 30.9807,-62.0001 30.9807,-62.0001 34.4807,-62 30.9807,-58.8501 37.9807,-62 37.9807,-62\"/>\n",
|
|
"</g>\n",
|
|
"<!-- 1 -->\n",
|
|
"<g id=\"node3\" class=\"node\">\n",
|
|
"<title>1</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"225\" cy=\"-62\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"225\" cy=\"-62\" rx=\"22\" ry=\"22\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"225\" y=\"-58.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->1 -->\n",
|
|
"<g id=\"edge2\" class=\"edge\">\n",
|
|
"<title>0->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M73.4307,-67.3514C86.8358,-71.1754 105.8972,-75.9862 123,-78 139.3316,-79.923 143.6752,-79.9797 160,-78 172.3248,-76.5054 185.6823,-73.472 197.0644,-70.4443\"/>\n",
|
|
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"203.8692,-68.5737 197.9546,-73.4666 200.6269,-69.9836 197.2521,-70.9113 197.1196,-70.4292 196.9871,-69.9471 200.3619,-69.0194 196.2846,-67.3919 203.8692,-68.5737 203.8692,-68.5737\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"123\" y=\"-82.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2 -->\n",
|
|
"<g id=\"node4\" class=\"node\">\n",
|
|
"<title>2</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"141.5\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"141.5\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->2 -->\n",
|
|
"<g id=\"edge3\" class=\"edge\">\n",
|
|
"<title>0->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M72.0819,-53.7239C85.3378,-46.9022 104.2894,-37.1493 119.0427,-29.557\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"125.4902,-26.239 120.7074,-32.243 122.3781,-27.8405 119.266,-29.4421 119.266,-29.4421 119.266,-29.4421 122.3781,-27.8405 117.8246,-26.6412 125.4902,-26.239 125.4902,-26.239\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"92\" y=\"-45.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->1 -->\n",
|
|
"<g id=\"edge4\" class=\"edge\">\n",
|
|
"<title>1->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M217.3173,-82.9908C216.3688,-93.0872 218.9297,-102 225,-102 229.5527,-102 232.1314,-96.9866 232.7361,-90.2204\"/>\n",
|
|
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"232.6827,-82.9908 235.8844,-89.9673 233.2086,-86.487 233.2345,-89.9869 232.7345,-89.9906 232.2345,-89.9943 232.2086,-86.4944 229.5846,-90.0139 232.6827,-82.9908 232.6827,-82.9908\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"221.5\" y=\"-105.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->1 -->\n",
|
|
"<g id=\"edge5\" class=\"edge\">\n",
|
|
"<title>2->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M157.5996,-26.4836C169.3289,-32.6643 185.468,-41.1688 199.0128,-48.3062\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"205.423,-51.684 197.7616,-51.2074 202.3265,-50.0523 199.2301,-48.4206 199.2301,-48.4206 199.2301,-48.4206 202.3265,-50.0523 200.6986,-45.6338 205.423,-51.684 205.423,-51.684\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"178\" y=\"-43.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->2 -->\n",
|
|
"<g id=\"edge6\" class=\"edge\">\n",
|
|
"<title>2->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M134.4688,-34.6641C132.9063,-44.625 135.25,-54 141.5,-54 146.1875,-54 148.6777,-48.7266 148.9707,-41.8876\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"148.5313,-34.6641 152.1006,-41.4598 148.7438,-38.1576 148.9564,-41.6511 148.9564,-41.6511 148.9564,-41.6511 148.7438,-38.1576 145.8122,-41.8425 148.5313,-34.6641 148.5313,-34.6641\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"141.5\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"</g>\n",
|
|
"</svg>\n"
|
|
],
|
|
"text/plain": [
|
|
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7d6b654ba0> >"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/svg+xml": [
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
|
|
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
|
|
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
|
|
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
|
|
" -->\n",
|
|
"<!-- Pages: 1 -->\n",
|
|
"<svg width=\"414pt\" height=\"125pt\"\n",
|
|
" viewBox=\"0.00 0.00 414.00 124.80\" 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 120.8)\">\n",
|
|
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-120.8 410,-120.8 410,4 -4,4\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"180\" y=\"-86.6\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Büchi]</text>\n",
|
|
"<!-- I -->\n",
|
|
"<!-- 3 -->\n",
|
|
"<g id=\"node2\" class=\"node\">\n",
|
|
"<title>3</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-22\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"56\" y=\"-18.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
|
|
"</g>\n",
|
|
"<!-- I->3 -->\n",
|
|
"<g id=\"edge1\" class=\"edge\">\n",
|
|
"<title>I->3</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-22C4.178,-22 17.9448,-22 30.9241,-22\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-22 30.9808,-25.1501 34.4807,-22 30.9807,-22.0001 30.9807,-22.0001 30.9807,-22.0001 34.4807,-22 30.9807,-18.8501 37.9807,-22 37.9807,-22\"/>\n",
|
|
"</g>\n",
|
|
"<!-- 2 -->\n",
|
|
"<g id=\"node6\" class=\"node\">\n",
|
|
"<title>2</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"137\" cy=\"-22\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"137\" y=\"-18.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3->2 -->\n",
|
|
"<g id=\"edge5\" class=\"edge\">\n",
|
|
"<title>3->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M74.3802,-22C85.4352,-22 99.6622,-22 111.7609,-22\"/>\n",
|
|
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"118.9716,-22 111.9716,-25.1501 115.4716,-22.5 111.9716,-22.5001 111.9716,-22.0001 111.9716,-21.5001 115.4716,-21.5 111.9716,-18.8501 118.9716,-22 118.9716,-22\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"96.5\" y=\"-25.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0 -->\n",
|
|
"<g id=\"node3\" class=\"node\">\n",
|
|
"<title>0</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"299\" cy=\"-22\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"299\" y=\"-18.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4 -->\n",
|
|
"<g id=\"node4\" class=\"node\">\n",
|
|
"<title>4</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"384\" cy=\"-22\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"384\" cy=\"-22\" rx=\"22\" ry=\"22\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"384\" y=\"-18.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">4</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->4 -->\n",
|
|
"<g id=\"edge2\" class=\"edge\">\n",
|
|
"<title>0->4</title>\n",
|
|
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M317.0263,-22C327.9439,-22 342.13,-22 354.634,-22\"/>\n",
|
|
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"361.7644,-22 354.7645,-25.1501 358.2644,-22.5 354.7644,-22.5001 354.7644,-22.0001 354.7644,-21.5001 358.2644,-21.5 354.7644,-18.8501 361.7644,-22 361.7644,-22\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"335\" y=\"-25.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4->4 -->\n",
|
|
"<g id=\"edge6\" class=\"edge\">\n",
|
|
"<title>4->4</title>\n",
|
|
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M375.9937,-42.5808C374.8859,-52.8447 377.5547,-62 384,-62 388.834,-62 391.5437,-56.8502 392.129,-49.9451\"/>\n",
|
|
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"392.0063,-42.5808 395.2726,-49.5273 392.5646,-46.072 392.623,-49.5715 392.123,-49.5798 391.6231,-49.5882 391.5647,-46.0887 388.9735,-49.6324 392.0063,-42.5808 392.0063,-42.5808\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"384\" y=\"-65.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1 -->\n",
|
|
"<g id=\"node5\" class=\"node\">\n",
|
|
"<title>1</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"218\" cy=\"-22\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"218\" y=\"-18.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->0 -->\n",
|
|
"<g id=\"edge3\" class=\"edge\">\n",
|
|
"<title>1->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M236.3802,-22C247.4352,-22 261.6622,-22 273.7609,-22\"/>\n",
|
|
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"280.9716,-22 273.9716,-25.1501 277.4716,-22.5 273.9716,-22.5001 273.9716,-22.0001 273.9716,-21.5001 277.4716,-21.5 273.9716,-18.8501 280.9716,-22 280.9716,-22\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"258.5\" y=\"-25.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->1 -->\n",
|
|
"<g id=\"edge4\" class=\"edge\">\n",
|
|
"<title>2->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M155.3802,-22C166.4352,-22 180.6622,-22 192.7609,-22\"/>\n",
|
|
"<polygon fill=\"#e31a1c\" stroke=\"#e31a1c\" stroke-width=\"2\" points=\"199.9716,-22 192.9716,-25.1501 196.4716,-22.5 192.9716,-22.5001 192.9716,-22.0001 192.9716,-21.5001 196.4716,-21.5 192.9716,-18.8501 199.9716,-22 199.9716,-22\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"177.5\" y=\"-25.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"</g>\n",
|
|
"</svg>\n"
|
|
],
|
|
"text/plain": [
|
|
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7d6b654a80> >"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"left2 = spot.translate('!b & FG a')\n",
|
|
"right2 = spot.translate('XXXb')\n",
|
|
"prod2 = spot.otf_product(left2, right2) # Note \"otf_product()\"\n",
|
|
"run2 = prod2.accepting_run()\n",
|
|
"run2.project(left2).highlight(5)\n",
|
|
"run2.project(right2, True).highlight(5)\n",
|
|
"display(run2, prod2, left2, right2)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Highlighting nondeterminism\n",
|
|
"\n",
|
|
"Sometimes its is hard to locate non-deterministic states inside a large automaton. Here are two functions that can help for that."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 18,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/svg+xml": [
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
|
|
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
|
|
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
|
|
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
|
|
" -->\n",
|
|
"<!-- Pages: 1 -->\n",
|
|
"<svg width=\"386pt\" height=\"276pt\"\n",
|
|
" viewBox=\"0.00 0.00 386.00 276.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 272)\">\n",
|
|
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-272 382,-272 382,4 -4,4\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"168\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n",
|
|
"<text text-anchor=\"start\" x=\"190\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"<text text-anchor=\"start\" x=\"206\" y=\"-253.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)</text>\n",
|
|
"<text text-anchor=\"start\" x=\"166\" y=\"-239.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Büchi]</text>\n",
|
|
"<!-- I -->\n",
|
|
"<!-- 4 -->\n",
|
|
"<g id=\"node2\" class=\"node\">\n",
|
|
"<title>4</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-105\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"56\" y=\"-101.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">4</text>\n",
|
|
"</g>\n",
|
|
"<!-- I->4 -->\n",
|
|
"<g id=\"edge1\" class=\"edge\">\n",
|
|
"<title>I->4</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-105C4.178,-105 17.9448,-105 30.9241,-105\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-105 30.9808,-108.1501 34.4807,-105 30.9807,-105.0001 30.9807,-105.0001 30.9807,-105.0001 34.4807,-105 30.9807,-101.8501 37.9807,-105 37.9807,-105\"/>\n",
|
|
"</g>\n",
|
|
"<!-- 0 -->\n",
|
|
"<g id=\"node3\" class=\"node\">\n",
|
|
"<title>0</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" cx=\"137\" cy=\"-105\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"137\" y=\"-101.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4->0 -->\n",
|
|
"<g id=\"edge12\" class=\"edge\">\n",
|
|
"<title>4->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M74.3802,-105C85.4352,-105 99.6622,-105 111.7609,-105\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"118.9716,-105 111.9716,-108.1501 115.4716,-105 111.9716,-105.0001 111.9716,-105.0001 111.9716,-105.0001 115.4716,-105 111.9716,-101.8501 118.9716,-105 118.9716,-105\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"96.5\" y=\"-108.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->0 -->\n",
|
|
"<g id=\"edge2\" class=\"edge\">\n",
|
|
"<title>0->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M129.9688,-121.6641C128.4063,-131.625 130.75,-141 137,-141 141.6875,-141 144.1777,-135.7266 144.4707,-128.8876\"/>\n",
|
|
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"144.0313,-121.6641 147.6006,-128.4598 144.7429,-125.1272 144.9555,-128.6208 144.4564,-128.6511 143.9573,-128.6815 143.7448,-125.188 141.3122,-128.8425 144.0313,-121.6641 144.0313,-121.6641\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"123.5\" y=\"-144.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a | b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1 -->\n",
|
|
"<g id=\"node4\" class=\"node\">\n",
|
|
"<title>1</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"360\" cy=\"-129\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"360\" y=\"-125.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->1 -->\n",
|
|
"<g id=\"edge3\" class=\"edge\">\n",
|
|
"<title>0->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M144.8384,-121.309C157.9792,-146.5059 187.0932,-193.9758 228,-213 273.4887,-234.1551 322.045,-181.0667 345.5673,-149.848\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"349.9296,-143.9244 348.3152,-151.4288 347.8542,-146.7426 345.7787,-149.5609 345.7787,-149.5609 345.7787,-149.5609 347.8542,-146.7426 343.2423,-147.693 349.9296,-143.9244 349.9296,-143.9244\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"228\" y=\"-220.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2 -->\n",
|
|
"<g id=\"node5\" class=\"node\">\n",
|
|
"<title>2</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"248.5\" cy=\"-105\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"248.5\" y=\"-101.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->2 -->\n",
|
|
"<g id=\"edge4\" class=\"edge\">\n",
|
|
"<title>0->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M155.412,-105C173.9217,-105 202.5942,-105 223.2267,-105\"/>\n",
|
|
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"230.4306,-105 223.4307,-108.1501 226.9307,-105.5 223.4307,-105.5001 223.4306,-105.0001 223.4306,-104.5001 226.9306,-104.5 223.4306,-101.8501 230.4306,-105 230.4306,-105\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"174.5\" y=\"-108.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3 -->\n",
|
|
"<g id=\"node6\" class=\"node\">\n",
|
|
"<title>3</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"248.5\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"248.5\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->3 -->\n",
|
|
"<g id=\"edge5\" class=\"edge\">\n",
|
|
"<title>0->3</title>\n",
|
|
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M151.5767,-93.6263C171.301,-78.236 206.5611,-50.7236 228.6783,-33.4662\"/>\n",
|
|
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"234.2723,-29.1014 230.6912,-35.8911 231.8205,-31.6487 229.0611,-33.8018 228.7535,-33.4076 228.4459,-33.0134 231.2053,-30.8603 226.8157,-30.9242 234.2723,-29.1014 234.2723,-29.1014\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"173\" y=\"-79.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->1 -->\n",
|
|
"<g id=\"edge6\" class=\"edge\">\n",
|
|
"<title>1->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M355.1797,-146.4099C354.28,-156.0879 355.8867,-165 360,-165 363.0207,-165 364.6896,-160.1936 365.0067,-153.8073\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"364.8203,-146.4099 368.1457,-153.3283 364.9085,-149.9088 364.9967,-153.4077 364.9967,-153.4077 364.9967,-153.4077 364.9085,-149.9088 361.8477,-153.4871 364.8203,-146.4099 364.8203,-146.4099\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"353.5\" y=\"-183.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!b</text>\n",
|
|
"<text text-anchor=\"start\" x=\"352\" y=\"-168.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->1 -->\n",
|
|
"<g id=\"edge7\" class=\"edge\">\n",
|
|
"<title>1->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M352.7325,-145.5959C347.2416,-166.8633 349.6641,-195 360,-195 369.2458,-195 372.1594,-172.4854 368.7408,-152.5132\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"367.2675,-145.5959 371.8066,-151.7861 367.9966,-149.0191 368.7257,-152.4423 368.7257,-152.4423 368.7257,-152.4423 367.9966,-149.0191 365.6448,-153.0985 367.2675,-145.5959 367.2675,-145.5959\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"355.5\" y=\"-198.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->2 -->\n",
|
|
"<g id=\"edge8\" class=\"edge\">\n",
|
|
"<title>2->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M243.5012,-122.4099C242.5681,-132.0879 244.2344,-141 248.5,-141 251.6326,-141 253.3633,-136.1936 253.6921,-129.8073\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"253.4988,-122.4099 256.8307,-129.3252 253.5903,-125.9087 253.6818,-129.4075 253.6818,-129.4075 253.6818,-129.4075 253.5903,-125.9087 250.5329,-129.4899 253.4988,-122.4099 253.4988,-122.4099\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"230\" y=\"-159.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !b</text>\n",
|
|
"<text text-anchor=\"start\" x=\"240.5\" y=\"-144.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->2 -->\n",
|
|
"<g id=\"edge9\" class=\"edge\">\n",
|
|
"<title>2->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M240.9634,-121.5959C235.269,-142.8633 237.7813,-171 248.5,-171 258.0883,-171 261.1098,-148.4854 257.5645,-128.5132\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"256.0366,-121.5959 260.6223,-127.7517 256.7915,-125.0135 257.5464,-128.4311 257.5464,-128.4311 257.5464,-128.4311 256.7915,-125.0135 254.4706,-129.1106 256.0366,-121.5959 256.0366,-121.5959\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"231.5\" y=\"-174.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3->1 -->\n",
|
|
"<g id=\"edge10\" class=\"edge\">\n",
|
|
"<title>3->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M261.2905,-30.7331C281.0962,-50.4501 319.2564,-88.4391 341.8888,-110.9701\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"347.0153,-116.0735 339.832,-113.3672 344.5348,-113.6042 342.0544,-111.1348 342.0544,-111.1348 342.0544,-111.1348 344.5348,-113.6042 344.2768,-108.9024 347.0153,-116.0735 347.0153,-116.0735\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"287\" y=\"-96.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3->3 -->\n",
|
|
"<g id=\"edge11\" class=\"edge\">\n",
|
|
"<title>3->3</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M238.9254,-33.5414C236.2303,-43.9087 239.4219,-54 248.5,-54 255.4504,-54 258.9503,-48.0847 258.9995,-40.6591\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"258.0746,-33.5414 262.1004,-40.0771 258.5256,-37.0123 258.9767,-40.4831 258.9767,-40.4831 258.9767,-40.4831 258.5256,-37.0123 255.853,-40.889 258.0746,-33.5414 258.0746,-33.5414\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"231.5\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & b</text>\n",
|
|
"</g>\n",
|
|
"</g>\n",
|
|
"</svg>\n"
|
|
],
|
|
"text/plain": [
|
|
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7d6b654d20> >"
|
|
]
|
|
},
|
|
"execution_count": 18,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"b = spot.translate('X (F(Ga <-> b) & GF!b)')\n",
|
|
"spot.highlight_nondet_states(b, 5)\n",
|
|
"spot.highlight_nondet_edges(b, 4)\n",
|
|
"b"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Disappearing highlights\n",
|
|
"\n",
|
|
"As explained at the top of this notebook, named properties (such as highlights) are fragile, and you should not really on them being preserved across algorithms. In-place algorithm are probably the worst, because they might modify the automaton and ignore the attached named properties. \n",
|
|
"\n",
|
|
"`randomize()` is one such in-place algorithm: it reorder states or transitions of the automaton. By doing so it renumber the states and edges, and that process would completely invalidate the highlights information. Fortunately `randomize()` know about highlights: it will preserve highlighted states, but it will drop all highlighted edges."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 19,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/svg+xml": [
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
|
|
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
|
|
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
|
|
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
|
|
" -->\n",
|
|
"<!-- Pages: 1 -->\n",
|
|
"<svg width=\"386pt\" height=\"299pt\"\n",
|
|
" viewBox=\"0.00 0.00 386.00 299.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 295)\">\n",
|
|
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-295 382,-295 382,4 -4,4\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"168\" y=\"-276.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n",
|
|
"<text text-anchor=\"start\" x=\"190\" y=\"-276.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"<text text-anchor=\"start\" x=\"206\" y=\"-276.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)</text>\n",
|
|
"<text text-anchor=\"start\" x=\"166\" y=\"-262.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Büchi]</text>\n",
|
|
"<!-- I -->\n",
|
|
"<!-- 3 -->\n",
|
|
"<g id=\"node2\" class=\"node\">\n",
|
|
"<title>3</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-105\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"56\" y=\"-101.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
|
|
"</g>\n",
|
|
"<!-- I->3 -->\n",
|
|
"<g id=\"edge1\" class=\"edge\">\n",
|
|
"<title>I->3</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-105C4.178,-105 17.9448,-105 30.9241,-105\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-105 30.9808,-108.1501 34.4807,-105 30.9807,-105.0001 30.9807,-105.0001 30.9807,-105.0001 34.4807,-105 30.9807,-101.8501 37.9807,-105 37.9807,-105\"/>\n",
|
|
"</g>\n",
|
|
"<!-- 4 -->\n",
|
|
"<g id=\"node6\" class=\"node\">\n",
|
|
"<title>4</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" cx=\"137\" cy=\"-105\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"137\" y=\"-101.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">4</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3->4 -->\n",
|
|
"<g id=\"edge8\" class=\"edge\">\n",
|
|
"<title>3->4</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M74.3802,-105C85.4352,-105 99.6622,-105 111.7609,-105\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"118.9716,-105 111.9716,-108.1501 115.4716,-105 111.9716,-105.0001 111.9716,-105.0001 111.9716,-105.0001 115.4716,-105 111.9716,-101.8501 118.9716,-105 118.9716,-105\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"96.5\" y=\"-108.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0 -->\n",
|
|
"<g id=\"node3\" class=\"node\">\n",
|
|
"<title>0</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"248.5\" cy=\"-156\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"248.5\" y=\"-152.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->0 -->\n",
|
|
"<g id=\"edge2\" class=\"edge\">\n",
|
|
"<title>0->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M243.5012,-173.4099C242.5681,-183.0879 244.2344,-192 248.5,-192 251.6326,-192 253.3633,-187.1936 253.6921,-180.8073\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"253.4988,-173.4099 256.8307,-180.3252 253.5903,-176.9087 253.6818,-180.4075 253.6818,-180.4075 253.6818,-180.4075 253.5903,-176.9087 250.5329,-180.4899 253.4988,-173.4099 253.4988,-173.4099\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"230\" y=\"-210.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !b</text>\n",
|
|
"<text text-anchor=\"start\" x=\"240.5\" y=\"-195.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->0 -->\n",
|
|
"<g id=\"edge3\" class=\"edge\">\n",
|
|
"<title>0->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M240.9634,-172.5959C235.269,-193.8633 237.7813,-222 248.5,-222 258.0883,-222 261.1098,-199.4854 257.5645,-179.5132\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"256.0366,-172.5959 260.6223,-178.7517 256.7915,-176.0135 257.5464,-179.4311 257.5464,-179.4311 257.5464,-179.4311 256.7915,-176.0135 254.4706,-180.1106 256.0366,-172.5959 256.0366,-172.5959\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"231.5\" y=\"-225.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1 -->\n",
|
|
"<g id=\"node4\" class=\"node\">\n",
|
|
"<title>1</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"360\" cy=\"-62\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"360\" y=\"-58.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->1 -->\n",
|
|
"<g id=\"edge4\" class=\"edge\">\n",
|
|
"<title>1->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M355.1797,-79.4099C354.28,-89.0879 355.8867,-98 360,-98 363.0207,-98 364.6896,-93.1936 365.0067,-86.8073\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"364.8203,-79.4099 368.1457,-86.3283 364.9085,-82.9088 364.9967,-86.4077 364.9967,-86.4077 364.9967,-86.4077 364.9085,-82.9088 361.8477,-86.4871 364.8203,-79.4099 364.8203,-79.4099\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"353.5\" y=\"-116.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!b</text>\n",
|
|
"<text text-anchor=\"start\" x=\"352\" y=\"-101.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->1 -->\n",
|
|
"<g id=\"edge5\" class=\"edge\">\n",
|
|
"<title>1->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M352.7325,-78.5959C347.2416,-99.8633 349.6641,-128 360,-128 369.2458,-128 372.1594,-105.4854 368.7408,-85.5132\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"367.2675,-78.5959 371.8066,-84.7861 367.9966,-82.0191 368.7257,-85.4423 368.7257,-85.4423 368.7257,-85.4423 367.9966,-82.0191 365.6448,-86.0985 367.2675,-78.5959 367.2675,-78.5959\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"355.5\" y=\"-131.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2 -->\n",
|
|
"<g id=\"node5\" class=\"node\">\n",
|
|
"<title>2</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"248.5\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"248.5\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->1 -->\n",
|
|
"<g id=\"edge6\" class=\"edge\">\n",
|
|
"<title>2->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M265.4345,-24.6827C284.3448,-32.1451 315.0839,-44.2752 336.3584,-52.6706\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"342.9062,-55.2545 335.2385,-55.615 339.6505,-53.9697 336.3948,-52.6849 336.3948,-52.6849 336.3948,-52.6849 339.6505,-53.9697 337.5511,-49.7548 342.9062,-55.2545 342.9062,-55.2545\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"287\" y=\"-50.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->2 -->\n",
|
|
"<g id=\"edge7\" class=\"edge\">\n",
|
|
"<title>2->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M238.9254,-33.5414C236.2303,-43.9087 239.4219,-54 248.5,-54 255.4504,-54 258.9503,-48.0847 258.9995,-40.6591\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"258.0746,-33.5414 262.1004,-40.0771 258.5256,-37.0123 258.9767,-40.4831 258.9767,-40.4831 258.9767,-40.4831 258.5256,-37.0123 255.853,-40.889 258.0746,-33.5414 258.0746,-33.5414\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"231.5\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4->0 -->\n",
|
|
"<g id=\"edge12\" class=\"edge\">\n",
|
|
"<title>4->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M153.4522,-112.5252C172.4744,-121.226 203.9159,-135.6073 225.3876,-145.4284\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"231.9803,-148.4439 224.3043,-148.3967 228.7974,-146.988 225.6146,-145.5322 225.6146,-145.5322 225.6146,-145.5322 228.7974,-146.988 226.9249,-142.6676 231.9803,-148.4439 231.9803,-148.4439\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"174.5\" y=\"-141.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4->1 -->\n",
|
|
"<g id=\"edge9\" class=\"edge\">\n",
|
|
"<title>4->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M154.7028,-101.6126C169.4872,-98.7818 191.119,-94.6357 210,-91 253.9395,-82.5392 305.1085,-72.6356 334.8967,-66.8652\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"341.9919,-65.4906 335.7188,-69.9146 338.5558,-66.1563 335.1197,-66.8221 335.1197,-66.8221 335.1197,-66.8221 338.5558,-66.1563 334.5205,-63.7296 341.9919,-65.4906 341.9919,-65.4906\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"228\" y=\"-90.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4->2 -->\n",
|
|
"<g id=\"edge11\" class=\"edge\">\n",
|
|
"<title>4->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M150.959,-93.6315C157.6056,-88.2503 165.6831,-81.7563 173,-76 191.5787,-61.3839 212.9624,-44.997 228.2187,-33.3794\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"233.9495,-29.0204 230.2851,-35.7654 231.1638,-31.1393 228.3781,-33.2583 228.3781,-33.2583 228.3781,-33.2583 231.1638,-31.1393 226.471,-30.7511 233.9495,-29.0204 233.9495,-29.0204\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"173\" y=\"-79.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4->4 -->\n",
|
|
"<g id=\"edge10\" class=\"edge\">\n",
|
|
"<title>4->4</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M129.9688,-121.6641C128.4063,-131.625 130.75,-141 137,-141 141.6875,-141 144.1777,-135.7266 144.4707,-128.8876\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"144.0313,-121.6641 147.6006,-128.4598 144.2438,-125.1576 144.4564,-128.6511 144.4564,-128.6511 144.4564,-128.6511 144.2438,-125.1576 141.3122,-128.8425 144.0313,-121.6641 144.0313,-121.6641\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"123.5\" y=\"-144.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a | b</text>\n",
|
|
"</g>\n",
|
|
"</g>\n",
|
|
"</svg>\n"
|
|
],
|
|
"text/plain": [
|
|
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7d6b654d20> >"
|
|
]
|
|
},
|
|
"execution_count": 19,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"spot.randomize(b); b"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Highlighting with partial output\n",
|
|
"\n",
|
|
"For simplicity, rendering of partial automata is actually implemented by copying the original automaton and marking some states as \"incomplete\". This also allows the same display code to work with automata generated on-the-fly. However since there is a copy, propagating the highlighting information requires extra work. Let's make sure it has been done:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 20,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/svg+xml": [
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
|
|
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
|
|
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
|
|
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
|
|
" -->\n",
|
|
"<!-- Pages: 1 -->\n",
|
|
"<svg width=\"386pt\" height=\"299pt\"\n",
|
|
" viewBox=\"0.00 0.00 386.00 299.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 295)\">\n",
|
|
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-295 382,-295 382,4 -4,4\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"168\" y=\"-276.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">Inf(</text>\n",
|
|
"<text text-anchor=\"start\" x=\"190\" y=\"-276.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"<text text-anchor=\"start\" x=\"206\" y=\"-276.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">)</text>\n",
|
|
"<text text-anchor=\"start\" x=\"166\" y=\"-262.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">[Büchi]</text>\n",
|
|
"<!-- I -->\n",
|
|
"<!-- 3 -->\n",
|
|
"<g id=\"node2\" class=\"node\">\n",
|
|
"<title>3</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"56\" cy=\"-105\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"56\" y=\"-101.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">3</text>\n",
|
|
"</g>\n",
|
|
"<!-- I->3 -->\n",
|
|
"<g id=\"edge1\" class=\"edge\">\n",
|
|
"<title>I->3</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M1.1233,-105C4.178,-105 17.9448,-105 30.9241,-105\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"37.9807,-105 30.9808,-108.1501 34.4807,-105 30.9807,-105.0001 30.9807,-105.0001 30.9807,-105.0001 34.4807,-105 30.9807,-101.8501 37.9807,-105 37.9807,-105\"/>\n",
|
|
"</g>\n",
|
|
"<!-- 4 -->\n",
|
|
"<g id=\"node6\" class=\"node\">\n",
|
|
"<title>4</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" cx=\"137\" cy=\"-105\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"137\" y=\"-101.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">4</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3->4 -->\n",
|
|
"<g id=\"edge8\" class=\"edge\">\n",
|
|
"<title>3->4</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M74.3802,-105C85.4352,-105 99.6622,-105 111.7609,-105\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"118.9716,-105 111.9716,-108.1501 115.4716,-105 111.9716,-105.0001 111.9716,-105.0001 111.9716,-105.0001 115.4716,-105 111.9716,-101.8501 118.9716,-105 118.9716,-105\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"96.5\" y=\"-108.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0 -->\n",
|
|
"<g id=\"node3\" class=\"node\">\n",
|
|
"<title>0</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"248.5\" cy=\"-156\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"248.5\" y=\"-152.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">0</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->0 -->\n",
|
|
"<g id=\"edge2\" class=\"edge\">\n",
|
|
"<title>0->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M243.5012,-173.4099C242.5681,-183.0879 244.2344,-192 248.5,-192 251.6326,-192 253.3633,-187.1936 253.6921,-180.8073\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"253.4988,-173.4099 256.8307,-180.3252 253.5903,-176.9087 253.6818,-180.4075 253.6818,-180.4075 253.6818,-180.4075 253.5903,-176.9087 250.5329,-180.4899 253.4988,-173.4099 253.4988,-173.4099\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"230\" y=\"-210.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !b</text>\n",
|
|
"<text text-anchor=\"start\" x=\"240.5\" y=\"-195.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->0 -->\n",
|
|
"<g id=\"edge3\" class=\"edge\">\n",
|
|
"<title>0->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M240.9634,-172.5959C235.269,-193.8633 237.7813,-222 248.5,-222 258.0883,-222 261.1098,-199.4854 257.5645,-179.5132\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"256.0366,-172.5959 260.6223,-178.7517 256.7915,-176.0135 257.5464,-179.4311 257.5464,-179.4311 257.5464,-179.4311 256.7915,-176.0135 254.4706,-180.1106 256.0366,-172.5959 256.0366,-172.5959\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"231.5\" y=\"-225.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1 -->\n",
|
|
"<g id=\"node4\" class=\"node\">\n",
|
|
"<title>1</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"360\" cy=\"-62\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"360\" y=\"-58.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->1 -->\n",
|
|
"<g id=\"edge4\" class=\"edge\">\n",
|
|
"<title>1->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M355.1797,-79.4099C354.28,-89.0879 355.8867,-98 360,-98 363.0207,-98 364.6896,-93.1936 365.0067,-86.8073\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"364.8203,-79.4099 368.1457,-86.3283 364.9085,-82.9088 364.9967,-86.4077 364.9967,-86.4077 364.9967,-86.4077 364.9085,-82.9088 361.8477,-86.4871 364.8203,-79.4099 364.8203,-79.4099\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"353.5\" y=\"-116.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!b</text>\n",
|
|
"<text text-anchor=\"start\" x=\"352\" y=\"-101.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->1 -->\n",
|
|
"<g id=\"edge5\" class=\"edge\">\n",
|
|
"<title>1->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M352.7325,-78.5959C347.2416,-99.8633 349.6641,-128 360,-128 369.2458,-128 372.1594,-105.4854 368.7408,-85.5132\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"367.2675,-78.5959 371.8066,-84.7861 367.9966,-82.0191 368.7257,-85.4423 368.7257,-85.4423 368.7257,-85.4423 367.9966,-82.0191 365.6448,-86.0985 367.2675,-78.5959 367.2675,-78.5959\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"355.5\" y=\"-131.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2 -->\n",
|
|
"<g id=\"node5\" class=\"node\">\n",
|
|
"<title>2</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"#000000\" cx=\"248.5\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"248.5\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">2</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->1 -->\n",
|
|
"<g id=\"edge6\" class=\"edge\">\n",
|
|
"<title>2->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M265.4345,-24.6827C284.3448,-32.1451 315.0839,-44.2752 336.3584,-52.6706\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"342.9062,-55.2545 335.2385,-55.615 339.6505,-53.9697 336.3948,-52.6849 336.3948,-52.6849 336.3948,-52.6849 339.6505,-53.9697 337.5511,-49.7548 342.9062,-55.2545 342.9062,-55.2545\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"287\" y=\"-50.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->2 -->\n",
|
|
"<g id=\"edge7\" class=\"edge\">\n",
|
|
"<title>2->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M238.9254,-33.5414C236.2303,-43.9087 239.4219,-54 248.5,-54 255.4504,-54 258.9503,-48.0847 258.9995,-40.6591\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"258.0746,-33.5414 262.1004,-40.0771 258.5256,-37.0123 258.9767,-40.4831 258.9767,-40.4831 258.9767,-40.4831 258.5256,-37.0123 255.853,-40.889 258.0746,-33.5414 258.0746,-33.5414\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"231.5\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4->0 -->\n",
|
|
"<g id=\"edge12\" class=\"edge\">\n",
|
|
"<title>4->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M153.4522,-112.5252C172.4744,-121.226 203.9159,-135.6073 225.3876,-145.4284\"/>\n",
|
|
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"231.9803,-148.4439 224.3043,-148.3967 228.5895,-147.4427 225.4066,-145.9869 225.6146,-145.5322 225.8226,-145.0775 229.0054,-146.5333 226.9249,-142.6676 231.9803,-148.4439 231.9803,-148.4439\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"174.5\" y=\"-141.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4->1 -->\n",
|
|
"<g id=\"edge9\" class=\"edge\">\n",
|
|
"<title>4->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"#000000\" d=\"M154.7028,-101.6126C169.4872,-98.7818 191.119,-94.6357 210,-91 253.9395,-82.5392 305.1085,-72.6356 334.8967,-66.8652\"/>\n",
|
|
"<polygon fill=\"#000000\" stroke=\"#000000\" points=\"341.9919,-65.4906 335.7188,-69.9146 338.5558,-66.1563 335.1197,-66.8221 335.1197,-66.8221 335.1197,-66.8221 338.5558,-66.1563 334.5205,-63.7296 341.9919,-65.4906 341.9919,-65.4906\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"228\" y=\"-90.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">!a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4->2 -->\n",
|
|
"<g id=\"edge11\" class=\"edge\">\n",
|
|
"<title>4->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M150.959,-93.6315C157.6056,-88.2503 165.6831,-81.7563 173,-76 191.5787,-61.3839 212.9624,-44.997 228.2187,-33.3794\"/>\n",
|
|
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"233.9495,-29.0204 230.2851,-35.7654 231.4665,-31.5373 228.6808,-33.6562 228.3781,-33.2583 228.0754,-32.8603 230.8611,-30.7414 226.471,-30.7511 233.9495,-29.0204 233.9495,-29.0204\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"173\" y=\"-79.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4->4 -->\n",
|
|
"<g id=\"edge10\" class=\"edge\">\n",
|
|
"<title>4->4</title>\n",
|
|
"<path fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\" d=\"M129.9688,-121.6641C128.4063,-131.625 130.75,-141 137,-141 141.6875,-141 144.1777,-135.7266 144.4707,-128.8876\"/>\n",
|
|
"<polygon fill=\"#33a02c\" stroke=\"#33a02c\" stroke-width=\"2\" points=\"144.0313,-121.6641 147.6006,-128.4598 144.7429,-125.1272 144.9555,-128.6208 144.4564,-128.6511 143.9573,-128.6815 143.7448,-125.188 141.3122,-128.8425 144.0313,-121.6641 144.0313,-121.6641\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"123.5\" y=\"-144.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#000000\">a | b</text>\n",
|
|
"</g>\n",
|
|
"</g>\n",
|
|
"</svg>\n"
|
|
],
|
|
"text/plain": [
|
|
"<spot.impl.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7d6b654d20> >"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/svg+xml": [
|
|
"<svg height=\"206pt\" viewBox=\"0.00 0.00 386.00 205.50\" width=\"386pt\" 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 201.5)\">\n",
|
|
"<polygon fill=\"#ffffff\" points=\"-4,4 -4,-201.5 382,-201.5 382,4 -4,4\" stroke=\"transparent\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"168\" y=\"-183.3\">Inf(</text>\n",
|
|
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"190\" y=\"-183.3\">⓿</text>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"206\" y=\"-183.3\">)</text>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"166\" y=\"-169.3\">[Büchi]</text>\n",
|
|
"<!-- I -->\n",
|
|
"<!-- 0 -->\n",
|
|
"<g class=\"node\" id=\"node2\">\n",
|
|
"<title>0</title>\n",
|
|
"<ellipse cx=\"56\" cy=\"-105\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"51.5\" y=\"-101.3\">3</text>\n",
|
|
"</g>\n",
|
|
"<!-- I->0 -->\n",
|
|
"<g class=\"edge\" id=\"edge1\">\n",
|
|
"<title>I->0</title>\n",
|
|
"<path d=\"M1.1233,-105C4.178,-105 17.9448,-105 30.9241,-105\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"37.9807,-105 30.9808,-108.1501 34.4807,-105 30.9807,-105.0001 30.9807,-105.0001 30.9807,-105.0001 34.4807,-105 30.9807,-101.8501 37.9807,-105 37.9807,-105\" stroke=\"#000000\"/>\n",
|
|
"</g>\n",
|
|
"<!-- 1 -->\n",
|
|
"<g class=\"node\" id=\"node3\">\n",
|
|
"<title>1</title>\n",
|
|
"<ellipse cx=\"137\" cy=\"-105\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#e31a1c\" stroke-width=\"2\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"132.5\" y=\"-101.3\">4</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->1 -->\n",
|
|
"<g class=\"edge\" id=\"edge2\">\n",
|
|
"<title>0->1</title>\n",
|
|
"<path d=\"M74.3802,-105C85.4352,-105 99.6622,-105 111.7609,-105\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"118.9716,-105 111.9716,-108.1501 115.4716,-105 111.9716,-105.0001 111.9716,-105.0001 111.9716,-105.0001 115.4716,-105 111.9716,-101.8501 118.9716,-105 118.9716,-105\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"96.5\" y=\"-108.8\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->1 -->\n",
|
|
"<g class=\"edge\" id=\"edge5\">\n",
|
|
"<title>1->1</title>\n",
|
|
"<path d=\"M129.9688,-121.6641C128.4063,-131.625 130.75,-141 137,-141 141.6875,-141 144.1777,-135.7266 144.4707,-128.8876\" fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\"/>\n",
|
|
"<polygon fill=\"#33a02c\" points=\"144.0313,-121.6641 147.6006,-128.4598 144.7429,-125.1272 144.9555,-128.6208 144.4564,-128.6511 143.9573,-128.6815 143.7448,-125.188 141.3122,-128.8425 144.0313,-121.6641 144.0313,-121.6641\" stroke=\"#33a02c\" stroke-width=\"2\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"123.5\" y=\"-144.8\">a | b</text>\n",
|
|
"</g>\n",
|
|
"<!-- u1 -->\n",
|
|
"<g class=\"node\" id=\"node4\">\n",
|
|
"<title>u1</title>\n",
|
|
"<polygon fill=\"#ffffaa\" points=\"261.5,-161.5 235.5,-161.5 235.5,-138.5 261.5,-138.5 261.5,-161.5\" stroke=\"transparent\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"248.5\" y=\"-146.3\">...</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->u1 -->\n",
|
|
"<g class=\"edge\" id=\"edge3\">\n",
|
|
"<title>1->u1</title>\n",
|
|
"<path d=\"M153.9345,-111.8345C173.9671,-119.9195 207.2741,-133.3617 228.5417,-141.9451\" fill=\"none\" stroke=\"#000000\" stroke-dasharray=\"5,2\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"235.2561,-144.6549 227.5859,-144.9562 232.0105,-143.345 228.7648,-142.0351 228.7648,-142.0351 228.7648,-142.0351 232.0105,-143.345 229.9438,-139.114 235.2561,-144.6549 235.2561,-144.6549\" stroke=\"#000000\"/>\n",
|
|
"</g>\n",
|
|
"<!-- 2 -->\n",
|
|
"<g class=\"node\" id=\"node5\">\n",
|
|
"<title>2</title>\n",
|
|
"<ellipse cx=\"360\" cy=\"-62\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"360\" y=\"-58.3\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->2 -->\n",
|
|
"<g class=\"edge\" id=\"edge4\">\n",
|
|
"<title>1->2</title>\n",
|
|
"<path d=\"M154.7028,-101.6126C169.4872,-98.7818 191.119,-94.6357 210,-91 253.9395,-82.5392 305.1085,-72.6356 334.8967,-66.8652\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"341.9919,-65.4906 335.7188,-69.9146 338.5558,-66.1563 335.1197,-66.8221 335.1197,-66.8221 335.1197,-66.8221 338.5558,-66.1563 334.5205,-63.7296 341.9919,-65.4906 341.9919,-65.4906\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"228\" y=\"-90.8\">!a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3 -->\n",
|
|
"<g class=\"node\" id=\"node6\">\n",
|
|
"<title>3</title>\n",
|
|
"<ellipse cx=\"248.5\" cy=\"-18\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"248.5\" y=\"-14.3\">2</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->3 -->\n",
|
|
"<g class=\"edge\" id=\"edge6\">\n",
|
|
"<title>1->3</title>\n",
|
|
"<path d=\"M150.959,-93.6315C157.6056,-88.2503 165.6831,-81.7563 173,-76 191.5787,-61.3839 212.9624,-44.997 228.2187,-33.3794\" fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\"/>\n",
|
|
"<polygon fill=\"#33a02c\" points=\"233.9495,-29.0204 230.2851,-35.7654 231.4665,-31.5373 228.6808,-33.6562 228.3781,-33.2583 228.0754,-32.8603 230.8611,-30.7414 226.471,-30.7511 233.9495,-29.0204 233.9495,-29.0204\" stroke=\"#33a02c\" stroke-width=\"2\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"173\" y=\"-79.8\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->2 -->\n",
|
|
"<g class=\"edge\" id=\"edge7\">\n",
|
|
"<title>2->2</title>\n",
|
|
"<path d=\"M355.1797,-79.4099C354.28,-89.0879 355.8867,-98 360,-98 363.0207,-98 364.6896,-93.1936 365.0067,-86.8073\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"364.8203,-79.4099 368.1457,-86.3283 364.9085,-82.9088 364.9967,-86.4077 364.9967,-86.4077 364.9967,-86.4077 364.9085,-82.9088 361.8477,-86.4871 364.8203,-79.4099 364.8203,-79.4099\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"353.5\" y=\"-116.8\">!b</text>\n",
|
|
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"352\" y=\"-101.8\">⓿</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->2 -->\n",
|
|
"<g class=\"edge\" id=\"edge8\">\n",
|
|
"<title>2->2</title>\n",
|
|
"<path d=\"M352.7325,-78.5959C347.2416,-99.8633 349.6641,-128 360,-128 369.2458,-128 372.1594,-105.4854 368.7408,-85.5132\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"367.2675,-78.5959 371.8066,-84.7861 367.9966,-82.0191 368.7257,-85.4423 368.7257,-85.4423 368.7257,-85.4423 367.9966,-82.0191 365.6448,-86.0985 367.2675,-78.5959 367.2675,-78.5959\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"355.5\" y=\"-131.8\">b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3->2 -->\n",
|
|
"<g class=\"edge\" id=\"edge9\">\n",
|
|
"<title>3->2</title>\n",
|
|
"<path d=\"M265.4345,-24.6827C284.3448,-32.1451 315.0839,-44.2752 336.3584,-52.6706\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"342.9062,-55.2545 335.2385,-55.615 339.6505,-53.9697 336.3948,-52.6849 336.3948,-52.6849 336.3948,-52.6849 339.6505,-53.9697 337.5511,-49.7548 342.9062,-55.2545 342.9062,-55.2545\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"287\" y=\"-50.8\">!a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3->3 -->\n",
|
|
"<g class=\"edge\" id=\"edge10\">\n",
|
|
"<title>3->3</title>\n",
|
|
"<path d=\"M238.9254,-33.5414C236.2303,-43.9087 239.4219,-54 248.5,-54 255.4504,-54 258.9503,-48.0847 258.9995,-40.6591\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"258.0746,-33.5414 262.1004,-40.0771 258.5256,-37.0123 258.9767,-40.4831 258.9767,-40.4831 258.9767,-40.4831 258.5256,-37.0123 255.853,-40.889 258.0746,-33.5414 258.0746,-33.5414\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"231.5\" y=\"-57.8\">a & b</text>\n",
|
|
"</g>\n",
|
|
"</g>\n",
|
|
"</svg>"
|
|
],
|
|
"text/plain": [
|
|
"<IPython.core.display.SVG object>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/svg+xml": [
|
|
"<svg height=\"113pt\" viewBox=\"0.00 0.00 226.00 113.00\" width=\"226pt\" 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 109)\">\n",
|
|
"<polygon fill=\"#ffffff\" points=\"-4,4 -4,-109 222,-109 222,4 -4,4\" stroke=\"transparent\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"88\" y=\"-90.8\">Inf(</text>\n",
|
|
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"110\" y=\"-90.8\">⓿</text>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"126\" y=\"-90.8\">)</text>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"86\" y=\"-76.8\">[Büchi]</text>\n",
|
|
"<!-- I -->\n",
|
|
"<!-- 0 -->\n",
|
|
"<g class=\"node\" id=\"node2\">\n",
|
|
"<title>0</title>\n",
|
|
"<ellipse cx=\"56\" cy=\"-18\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"51.5\" y=\"-14.3\">3</text>\n",
|
|
"</g>\n",
|
|
"<!-- I->0 -->\n",
|
|
"<g class=\"edge\" id=\"edge1\">\n",
|
|
"<title>I->0</title>\n",
|
|
"<path d=\"M1.1233,-18C4.178,-18 17.9448,-18 30.9241,-18\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"37.9807,-18 30.9808,-21.1501 34.4807,-18 30.9807,-18.0001 30.9807,-18.0001 30.9807,-18.0001 34.4807,-18 30.9807,-14.8501 37.9807,-18 37.9807,-18\" stroke=\"#000000\"/>\n",
|
|
"</g>\n",
|
|
"<!-- 1 -->\n",
|
|
"<g class=\"node\" id=\"node3\">\n",
|
|
"<title>1</title>\n",
|
|
"<ellipse cx=\"137\" cy=\"-18\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#e31a1c\" stroke-width=\"2\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"132.5\" y=\"-14.3\">4</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->1 -->\n",
|
|
"<g class=\"edge\" id=\"edge2\">\n",
|
|
"<title>0->1</title>\n",
|
|
"<path d=\"M74.3802,-18C85.4352,-18 99.6622,-18 111.7609,-18\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"118.9716,-18 111.9716,-21.1501 115.4716,-18 111.9716,-18.0001 111.9716,-18.0001 111.9716,-18.0001 115.4716,-18 111.9716,-14.8501 118.9716,-18 118.9716,-18\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"96.5\" y=\"-21.8\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->1 -->\n",
|
|
"<g class=\"edge\" id=\"edge4\">\n",
|
|
"<title>1->1</title>\n",
|
|
"<path d=\"M130.6208,-35.0373C129.3189,-44.8579 131.4453,-54 137,-54 141.166,-54 143.4036,-48.8576 143.7128,-42.1433\" fill=\"none\" stroke=\"#33a02c\" stroke-width=\"2\"/>\n",
|
|
"<polygon fill=\"#33a02c\" points=\"143.3792,-35.0373 146.8541,-41.8818 144.0428,-38.51 144.207,-42.0062 143.7076,-42.0296 143.2081,-42.0531 143.0439,-38.5569 140.561,-42.1774 143.3792,-35.0373 143.3792,-35.0373\" stroke=\"#33a02c\" stroke-width=\"2\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"123.5\" y=\"-57.8\">a | b</text>\n",
|
|
"</g>\n",
|
|
"<!-- u1 -->\n",
|
|
"<g class=\"node\" id=\"node4\">\n",
|
|
"<title>u1</title>\n",
|
|
"<polygon fill=\"#ffffaa\" points=\"218,-29.5 192,-29.5 192,-6.5 218,-6.5 218,-29.5\" stroke=\"transparent\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"205\" y=\"-14.3\">...</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->u1 -->\n",
|
|
"<g class=\"edge\" id=\"edge3\">\n",
|
|
"<title>1->u1</title>\n",
|
|
"<path d=\"M155.2228,-18C164.2871,-18 175.2737,-18 184.6169,-18\" fill=\"none\" stroke=\"#000000\" stroke-dasharray=\"5,2\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"191.6896,-18 184.6896,-21.1501 188.1896,-18 184.6896,-18.0001 184.6896,-18.0001 184.6896,-18.0001 188.1896,-18 184.6895,-14.8501 191.6896,-18 191.6896,-18\" stroke=\"#000000\"/>\n",
|
|
"</g>\n",
|
|
"</g>\n",
|
|
"</svg>"
|
|
],
|
|
"text/plain": [
|
|
"<IPython.core.display.SVG object>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"spot.highlight_nondet_edges(b, 4) # let's get those highlighted edges back\n",
|
|
"display(b, b.show('.<4'), b.show('.<2'))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Highlighting languages\n",
|
|
"\n",
|
|
"For deterministic automata, the function `spot.highlight_languages()` can be used to highlight states that recognize the same language. This can be a great help in reading automata. States with a colored border share their language, and states with a black border all have a language different from all other states."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 21,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/svg+xml": [
|
|
"<svg height=\"360pt\" viewBox=\"0.00 0.00 664.23 360.00\" width=\"664pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
|
|
"<g class=\"graph\" id=\"graph0\" transform=\"scale(.7243 .7243) rotate(0) translate(4 493)\">\n",
|
|
"<polygon fill=\"#ffffff\" points=\"-4,4 -4,-493 913,-493 913,4 -4,4\" stroke=\"transparent\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"433.5\" y=\"-474.8\">Inf(</text>\n",
|
|
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"455.5\" y=\"-474.8\">⓿</text>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"471.5\" y=\"-474.8\">)</text>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"431.5\" y=\"-460.8\">[Büchi]</text>\n",
|
|
"<g class=\"cluster\" id=\"clust1\">\n",
|
|
"<title>cluster_0</title>\n",
|
|
"<polygon fill=\"none\" points=\"318,-345 318,-445 370,-445 370,-345 318,-345\" stroke=\"#00ff00\"/>\n",
|
|
"</g>\n",
|
|
"<g class=\"cluster\" id=\"clust2\">\n",
|
|
"<title>cluster_1</title>\n",
|
|
"<polygon fill=\"none\" points=\"164.5,-294 164.5,-394 216.5,-394 216.5,-294 164.5,-294\" stroke=\"#00ff00\"/>\n",
|
|
"</g>\n",
|
|
"<g class=\"cluster\" id=\"clust3\">\n",
|
|
"<title>cluster_2</title>\n",
|
|
"<polygon fill=\"none\" points=\"663,-160 663,-392 901,-392 901,-160 663,-160\" stroke=\"#00ff00\"/>\n",
|
|
"</g>\n",
|
|
"<g class=\"cluster\" id=\"clust4\">\n",
|
|
"<title>cluster_3</title>\n",
|
|
"<polygon fill=\"none\" points=\"559,-68 559,-120 611,-120 611,-68 559,-68\" stroke=\"#000000\"/>\n",
|
|
"</g>\n",
|
|
"<g class=\"cluster\" id=\"clust5\">\n",
|
|
"<title>cluster_4</title>\n",
|
|
"<polygon fill=\"none\" points=\"164.5,-101 164.5,-216 498,-216 498,-101 164.5,-101\" stroke=\"#00ff00\"/>\n",
|
|
"</g>\n",
|
|
"<g class=\"cluster\" id=\"clust6\">\n",
|
|
"<title>cluster_5</title>\n",
|
|
"<polygon fill=\"none\" points=\"30,-248 30,-300 82,-300 82,-248 30,-248\" stroke=\"#000000\"/>\n",
|
|
"</g>\n",
|
|
"<!-- I -->\n",
|
|
"<!-- 0 -->\n",
|
|
"<g class=\"node\" id=\"node2\">\n",
|
|
"<title>0</title>\n",
|
|
"<ellipse cx=\"56\" cy=\"-274\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-270.3\">0</text>\n",
|
|
"</g>\n",
|
|
"<!-- I->0 -->\n",
|
|
"<g class=\"edge\" id=\"edge1\">\n",
|
|
"<title>I->0</title>\n",
|
|
"<path d=\"M1.1233,-274C4.178,-274 17.9448,-274 30.9241,-274\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"37.9807,-274 30.9808,-277.1501 34.4807,-274 30.9807,-274.0001 30.9807,-274.0001 30.9807,-274.0001 34.4807,-274 30.9807,-270.8501 37.9807,-274 37.9807,-274\" stroke=\"#000000\"/>\n",
|
|
"</g>\n",
|
|
"<!-- 1 -->\n",
|
|
"<g class=\"node\" id=\"node3\">\n",
|
|
"<title>1</title>\n",
|
|
"<ellipse cx=\"344\" cy=\"-371\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#1f78b4\" stroke-width=\"2\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"344\" y=\"-367.3\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->1 -->\n",
|
|
"<g class=\"edge\" id=\"edge2\">\n",
|
|
"<title>0->1</title>\n",
|
|
"<path d=\"M63.8824,-290.3811C78.7868,-319.1066 114.1788,-377.4637 164.5,-398 217.5667,-419.6567 285.8315,-396.9135 320.9146,-381.9272\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"327.4745,-379.0488 322.3302,-384.7461 324.2695,-380.4552 321.0644,-381.8615 321.0644,-381.8615 321.0644,-381.8615 324.2695,-380.4552 319.7987,-378.977 327.4745,-379.0488 327.4745,-379.0488\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"172\" y=\"-409.8\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2 -->\n",
|
|
"<g class=\"node\" id=\"node4\">\n",
|
|
"<title>2</title>\n",
|
|
"<ellipse cx=\"190.5\" cy=\"-320\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#1f78b4\" stroke-width=\"2\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"190.5\" y=\"-316.3\">2</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->2 -->\n",
|
|
"<g class=\"edge\" id=\"edge3\">\n",
|
|
"<title>0->2</title>\n",
|
|
"<path d=\"M72.7754,-280.7513C78.8086,-283.1189 85.6835,-285.7478 92,-288 117.039,-296.9278 146.0092,-306.2165 166.019,-312.4716\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"172.9617,-314.6325 165.3417,-315.5598 169.6198,-313.5923 166.2779,-312.5521 166.2779,-312.5521 166.2779,-312.5521 169.6198,-313.5923 167.2141,-309.5444 172.9617,-314.6325 172.9617,-314.6325\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"106\" y=\"-311.8\">a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3 -->\n",
|
|
"<g class=\"node\" id=\"node7\">\n",
|
|
"<title>3</title>\n",
|
|
"<ellipse cx=\"585\" cy=\"-94\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"585\" y=\"-90.3\">3</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->3 -->\n",
|
|
"<g class=\"edge\" id=\"edge4\">\n",
|
|
"<title>0->3</title>\n",
|
|
"<path d=\"M60.5211,-256.4433C76.6018,-195.9686 133.1366,0 190.5,0 190.5,0 190.5,0 472,0 495.3255,0 542.9619,-47.9358 568.2929,-75.3444\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"573.0478,-80.5321 565.9958,-77.5002 570.6829,-77.9519 568.318,-75.3718 568.318,-75.3718 568.318,-75.3718 570.6829,-77.9519 570.6401,-73.2433 573.0478,-80.5321 573.0478,-80.5321\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"323.5\" y=\"-3.8\">!a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4 -->\n",
|
|
"<g class=\"node\" id=\"node8\">\n",
|
|
"<title>4</title>\n",
|
|
"<ellipse cx=\"190.5\" cy=\"-135\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#ff4da0\" stroke-width=\"2\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"190.5\" y=\"-131.3\">4</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->4 -->\n",
|
|
"<g class=\"edge\" id=\"edge5\">\n",
|
|
"<title>0->4</title>\n",
|
|
"<path d=\"M68.6534,-260.9232C92.6859,-236.0867 144.9938,-182.0287 172.605,-153.4938\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"177.7822,-148.1433 175.1783,-155.3643 175.3484,-150.6586 172.9145,-153.1738 172.9145,-153.1738 172.9145,-153.1738 175.3484,-150.6586 170.6508,-150.9834 177.7822,-148.1433 177.7822,-148.1433\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-239.8\">!a & b & c</text>\n",
|
|
"</g>\n",
|
|
"<!-- 5 -->\n",
|
|
"<g class=\"node\" id=\"node9\">\n",
|
|
"<title>5</title>\n",
|
|
"<ellipse cx=\"472\" cy=\"-147\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#ff4da0\" stroke-width=\"2\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"472\" y=\"-143.3\">5</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->5 -->\n",
|
|
"<g class=\"edge\" id=\"edge6\">\n",
|
|
"<title>0->5</title>\n",
|
|
"<path d=\"M74.0581,-274.6959C114.3952,-275.7124 214.4468,-275.2309 293,-250 355.4054,-229.9557 419.964,-186.0138 451.7765,-162.527\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"457.6921,-158.1156 453.9637,-164.8254 454.8863,-160.2079 452.0806,-162.3003 452.0806,-162.3003 452.0806,-162.3003 454.8863,-160.2079 450.1975,-159.7751 457.6921,-158.1156 457.6921,-158.1156\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"227\" y=\"-268.8\">!a & b & !c</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->1 -->\n",
|
|
"<g class=\"edge\" id=\"edge7\">\n",
|
|
"<title>1->1</title>\n",
|
|
"<path d=\"M332.5701,-385.0417C328.2955,-395.9126 332.1055,-407 344,-407 353.2926,-407 357.6508,-400.2328 357.0745,-392.0885\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"355.4299,-385.0417 360.0885,-391.1426 356.2254,-388.4502 357.0209,-391.8586 357.0209,-391.8586 357.0209,-391.8586 356.2254,-388.4502 353.9534,-392.5745 355.4299,-385.0417 355.4299,-385.0417\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"339.5\" y=\"-425.8\">1</text>\n",
|
|
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"336\" y=\"-410.8\">⓿</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->1 -->\n",
|
|
"<g class=\"edge\" id=\"edge8\">\n",
|
|
"<title>2->1</title>\n",
|
|
"<path d=\"M207.81,-325.7512C235.218,-334.8574 288.6836,-352.6213 319.8499,-362.9762\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"326.5177,-365.1916 318.8816,-365.9737 323.1963,-364.088 319.8748,-362.9844 319.8748,-362.9844 319.8748,-362.9844 323.1963,-364.088 320.868,-359.9951 326.5177,-365.1916 326.5177,-365.1916\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"244.5\" y=\"-356.8\">a | !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->2 -->\n",
|
|
"<g class=\"edge\" id=\"edge9\">\n",
|
|
"<title>2->2</title>\n",
|
|
"<path d=\"M179.5873,-334.4167C175.7765,-345.166 179.4141,-356 190.5,-356 199.1609,-356 203.2757,-349.3875 202.8443,-341.3688\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"201.4127,-334.4167 205.9099,-340.6375 202.1187,-337.8447 202.8246,-341.2728 202.8246,-341.2728 202.8246,-341.2728 202.1187,-337.8447 199.7394,-341.9082 201.4127,-334.4167 201.4127,-334.4167\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"172\" y=\"-374.8\">!a & b</text>\n",
|
|
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"182.5\" y=\"-359.8\">⓿</text>\n",
|
|
"</g>\n",
|
|
"<!-- 6 -->\n",
|
|
"<g class=\"node\" id=\"node5\">\n",
|
|
"<title>6</title>\n",
|
|
"<ellipse cx=\"689\" cy=\"-236\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#ff7f00\" stroke-width=\"2\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"689\" y=\"-232.3\">6</text>\n",
|
|
"</g>\n",
|
|
"<!-- 6->6 -->\n",
|
|
"<g class=\"edge\" id=\"edge22\">\n",
|
|
"<title>6->6</title>\n",
|
|
"<path d=\"M684.3583,-253.4099C683.4918,-263.0879 685.0391,-272 689,-272 691.9088,-272 693.5159,-267.1936 693.8213,-260.8073\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"693.6417,-253.4099 696.9607,-260.3314 693.7267,-256.9089 693.8117,-260.4078 693.8117,-260.4078 693.8117,-260.4078 693.7267,-256.9089 690.6626,-260.4843 693.6417,-253.4099 693.6417,-253.4099\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"670.5\" y=\"-275.8\">!b & c</text>\n",
|
|
"</g>\n",
|
|
"<!-- 6->6 -->\n",
|
|
"<g class=\"edge\" id=\"edge23\">\n",
|
|
"<title>6->6</title>\n",
|
|
"<path d=\"M681.5375,-252.5858C676.8641,-270.1697 679.3516,-290 689,-290 697.367,-290 700.3489,-275.0873 697.9456,-259.659\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"696.4625,-252.5858 700.982,-258.7903 697.1808,-256.0113 697.8991,-259.4368 697.8991,-259.4368 697.8991,-259.4368 697.1808,-256.0113 694.8161,-260.0833 696.4625,-252.5858 696.4625,-252.5858\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"672\" y=\"-308.8\">b & c</text>\n",
|
|
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"681\" y=\"-293.8\">⓿</text>\n",
|
|
"</g>\n",
|
|
"<!-- 7 -->\n",
|
|
"<g class=\"node\" id=\"node6\">\n",
|
|
"<title>7</title>\n",
|
|
"<ellipse cx=\"875\" cy=\"-186\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"#ff7f00\" stroke-width=\"2\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"875\" y=\"-182.3\">7</text>\n",
|
|
"</g>\n",
|
|
"<!-- 6->7 -->\n",
|
|
"<g class=\"edge\" id=\"edge24\">\n",
|
|
"<title>6->7</title>\n",
|
|
"<path d=\"M705.5151,-228.0187C723.2665,-219.7696 752.5101,-207.1224 779,-200 802.5091,-193.6791 830.0733,-190.033 849.6199,-188.0562\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"856.6936,-187.3782 850.0261,-191.1818 853.2096,-187.7122 849.7256,-188.0461 849.7256,-188.0461 849.7256,-188.0461 853.2096,-187.7122 849.425,-184.9105 856.6936,-187.3782 856.6936,-187.3782\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"779\" y=\"-203.8\">!b & !c</text>\n",
|
|
"</g>\n",
|
|
"<!-- 6->7 -->\n",
|
|
"<g class=\"edge\" id=\"edge25\">\n",
|
|
"<title>6->7</title>\n",
|
|
"<path d=\"M707.2418,-234.9539C732.9675,-233.0613 781.1089,-227.9784 820,-215 831.5915,-211.1318 843.6862,-205.014 853.5725,-199.3924\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"859.7228,-195.7986 855.2682,-202.05 856.7009,-197.5644 853.679,-199.3303 853.679,-199.3303 853.679,-199.3303 856.7009,-197.5644 852.0897,-196.6105 859.7228,-195.7986 859.7228,-195.7986\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"781\" y=\"-243.8\">b & !c</text>\n",
|
|
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"791.5\" y=\"-228.8\">⓿</text>\n",
|
|
"</g>\n",
|
|
"<!-- 7->6 -->\n",
|
|
"<g class=\"edge\" id=\"edge26\">\n",
|
|
"<title>7->6</title>\n",
|
|
"<path d=\"M867.9738,-202.6857C859.5061,-220.3681 843.431,-247.3165 820,-259 784.7574,-276.5731 738.3315,-260.524 711.2642,-247.8515\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"704.8184,-244.7249 712.4913,-244.9457 707.9675,-246.2524 711.1166,-247.7799 711.1166,-247.7799 711.1166,-247.7799 707.9675,-246.2524 709.7418,-250.6141 704.8184,-244.7249 704.8184,-244.7249\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"781\" y=\"-284.8\">!b & c</text>\n",
|
|
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"791.5\" y=\"-269.8\">⓿</text>\n",
|
|
"</g>\n",
|
|
"<!-- 7->6 -->\n",
|
|
"<g class=\"edge\" id=\"edge27\">\n",
|
|
"<title>7->6</title>\n",
|
|
"<path d=\"M872.2777,-204.1752C867.2316,-230.6201 853.6853,-278.8509 820,-300 781.1735,-324.3769 731.7148,-282.2264 706.1025,-255.4817\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"701.0115,-250.038 708.0935,-252.999 703.4022,-252.5943 705.7929,-255.1506 705.7929,-255.1506 705.7929,-255.1506 703.4022,-252.5943 703.4922,-257.3022 701.0115,-250.038 701.0115,-250.038\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"782.5\" y=\"-310.8\">b & c</text>\n",
|
|
"</g>\n",
|
|
"<!-- 7->7 -->\n",
|
|
"<g class=\"edge\" id=\"edge28\">\n",
|
|
"<title>7->7</title>\n",
|
|
"<path d=\"M871.7643,-203.7817C871.2144,-213.3149 872.293,-222 875,-222 876.988,-222 878.0977,-217.3161 878.3292,-211.0521\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"878.2357,-203.7817 881.4756,-210.7406 878.2808,-207.2814 878.3258,-210.7812 878.3258,-210.7812 878.3258,-210.7812 878.2808,-207.2814 875.1761,-210.8217 878.2357,-203.7817 878.2357,-203.7817\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"854.5\" y=\"-240.8\">!b & !c</text>\n",
|
|
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"867\" y=\"-225.8\">⓿</text>\n",
|
|
"</g>\n",
|
|
"<!-- 7->7 -->\n",
|
|
"<g class=\"edge\" id=\"edge29\">\n",
|
|
"<title>7->7</title>\n",
|
|
"<path d=\"M869.9906,-203.5771C866.5451,-224.718 868.2148,-252 875,-252 881.043,-252 883.0285,-230.3596 880.9564,-210.6907\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"880.0094,-203.5771 884.0556,-210.1002 880.4713,-207.0465 880.9332,-210.5159 880.9332,-210.5159 880.9332,-210.5159 880.4713,-207.0465 877.8107,-210.9316 880.0094,-203.5771 880.0094,-203.5771\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"856.5\" y=\"-255.8\">b & !c</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3->6 -->\n",
|
|
"<g class=\"edge\" id=\"edge10\">\n",
|
|
"<title>3->6</title>\n",
|
|
"<path d=\"M598.8412,-105.6195C613.6039,-118.5256 637.0155,-140.521 653,-163 663.9361,-178.3795 673.2592,-197.5791 679.6759,-212.4277\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"682.4151,-218.9146 676.7901,-213.6912 681.0535,-215.6902 679.692,-212.4659 679.692,-212.4659 679.692,-212.4659 681.0535,-215.6902 682.5939,-211.2405 682.4151,-218.9146 682.4151,-218.9146\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"621\" y=\"-166.8\">a & c</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3->7 -->\n",
|
|
"<g class=\"edge\" id=\"edge11\">\n",
|
|
"<title>3->7</title>\n",
|
|
"<path d=\"M602.945,-91.0507C647.3899,-84.7604 764.372,-74.5063 839,-126 851.5701,-134.6734 860.4762,-149.2981 866.2855,-161.9371\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"869.1978,-168.7041 863.5371,-163.5196 867.8142,-165.4892 866.4305,-162.2743 866.4305,-162.2743 866.4305,-162.2743 867.8142,-165.4892 869.3239,-161.029 869.1978,-168.7041 869.1978,-168.7041\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"725\" y=\"-96.8\">a & !c</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4->6 -->\n",
|
|
"<g class=\"edge\" id=\"edge15\">\n",
|
|
"<title>4->6</title>\n",
|
|
"<path d=\"M201.897,-149.4708C225.2917,-177.3982 281.7937,-236 344,-236 344,-236 344,-236 585,-236 611.9726,-236 642.8801,-236 663.9454,-236\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"670.9634,-236 663.9635,-239.1501 667.4634,-236 663.9634,-236.0001 663.9634,-236.0001 663.9634,-236.0001 667.4634,-236 663.9634,-232.8501 670.9634,-236 670.9634,-236\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"456\" y=\"-239.8\">a & c</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4->7 -->\n",
|
|
"<g class=\"edge\" id=\"edge16\">\n",
|
|
"<title>4->7</title>\n",
|
|
"<path d=\"M202.5433,-121.4251C226.6527,-95.8337 283.7257,-43 344,-43 344,-43 344,-43 799.5,-43 852.2032,-43 868.2105,-119.8983 873,-160.9136\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"873.7469,-167.889 869.8695,-161.2642 873.3742,-164.4088 873.0016,-160.9287 873.0016,-160.9287 873.0016,-160.9287 873.3742,-164.4088 876.1336,-160.5933 873.7469,-167.889 873.7469,-167.889\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"567\" y=\"-46.8\">a & !c</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4->3 -->\n",
|
|
"<g class=\"edge\" id=\"edge12\">\n",
|
|
"<title>4->3</title>\n",
|
|
"<path d=\"M208.3429,-132.1959C256.5239,-124.7569 393.3563,-104.5101 508,-96 525.3054,-94.7154 544.8514,-94.2192 559.92,-94.0423\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"566.9282,-93.979 559.957,-97.1922 563.4283,-94.0106 559.9285,-94.0423 559.9285,-94.0423 559.9285,-94.0423 563.4283,-94.0106 559.9,-90.8924 566.9282,-93.979 566.9282,-93.979\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"395\" y=\"-109.8\">!a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4->4 -->\n",
|
|
"<g class=\"edge\" id=\"edge13\">\n",
|
|
"<title>4->4</title>\n",
|
|
"<path d=\"M179.5873,-149.4167C175.7765,-160.166 179.4141,-171 190.5,-171 199.1609,-171 203.2757,-164.3875 202.8443,-156.3688\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"201.4127,-149.4167 205.9099,-155.6375 202.1187,-152.8447 202.8246,-156.2728 202.8246,-156.2728 202.8246,-156.2728 202.1187,-152.8447 199.7394,-156.9082 201.4127,-149.4167 201.4127,-149.4167\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"159.5\" y=\"-189.8\">!a & b & c</text>\n",
|
|
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"182.5\" y=\"-174.8\">⓿</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4->5 -->\n",
|
|
"<g class=\"edge\" id=\"edge14\">\n",
|
|
"<title>4->5</title>\n",
|
|
"<path d=\"M208.5111,-135.3944C241.7985,-136.1645 315.1953,-138.0548 377,-141 400.6079,-142.125 427.4875,-143.8656 446.6154,-145.1829\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"453.7971,-145.6826 446.5953,-148.339 450.3056,-145.4396 446.814,-145.1966 446.814,-145.1966 446.814,-145.1966 450.3056,-145.4396 447.0327,-142.0542 453.7971,-145.6826 453.7971,-145.6826\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"311\" y=\"-159.8\">!a & b & !c</text>\n",
|
|
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"336\" y=\"-144.8\">⓿</text>\n",
|
|
"</g>\n",
|
|
"<!-- 5->6 -->\n",
|
|
"<g class=\"edge\" id=\"edge20\">\n",
|
|
"<title>5->6</title>\n",
|
|
"<path d=\"M488.6673,-153.8359C527.0087,-169.5612 621.5487,-208.3356 665.6477,-226.4223\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"672.2759,-229.1408 664.6041,-229.3989 669.0377,-227.8127 665.7994,-226.4845 665.7994,-226.4845 665.7994,-226.4845 669.0377,-227.8127 666.9948,-223.5701 672.2759,-229.1408 672.2759,-229.1408\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"569\" y=\"-206.8\">a & c</text>\n",
|
|
"</g>\n",
|
|
"<!-- 5->7 -->\n",
|
|
"<g class=\"edge\" id=\"edge21\">\n",
|
|
"<title>5->7</title>\n",
|
|
"<path d=\"M490.099,-148.7515C554.8067,-155.0136 774.8091,-176.3041 849.7547,-183.5569\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"856.9509,-184.2533 849.68,-186.7143 853.4672,-183.9161 849.9834,-183.579 849.9834,-183.579 849.9834,-183.579 853.4672,-183.9161 850.2869,-180.4436 856.9509,-184.2533 856.9509,-184.2533\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"671\" y=\"-172.8\">a & !c</text>\n",
|
|
"</g>\n",
|
|
"<!-- 5->3 -->\n",
|
|
"<g class=\"edge\" id=\"edge17\">\n",
|
|
"<title>5->3</title>\n",
|
|
"<path d=\"M484.2148,-133.5487C490.7151,-127.1095 499.1767,-119.7796 508,-115 524.1242,-106.2656 544.1557,-100.9496 559.7453,-97.852\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"567.005,-96.5042 560.6976,-100.8791 563.5638,-97.1431 560.1226,-97.782 560.1226,-97.782 560.1226,-97.782 563.5638,-97.1431 559.5476,-94.6849 567.005,-96.5042 567.005,-96.5042\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"508\" y=\"-118.8\">!a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 5->4 -->\n",
|
|
"<g class=\"edge\" id=\"edge18\">\n",
|
|
"<title>5->4</title>\n",
|
|
"<path d=\"M454.7373,-152.737C435.8867,-158.6757 404.6852,-167.557 377,-171 347.8909,-174.6201 340.0248,-175.243 311,-171 276.3928,-165.9409 237.9146,-153.1176 213.96,-144.2276\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"207.3083,-141.7212 214.9695,-141.2418 210.5835,-142.9553 213.8587,-144.1895 213.8587,-144.1895 213.8587,-144.1895 210.5835,-142.9553 212.748,-147.1372 207.3083,-141.7212 207.3083,-141.7212\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"313\" y=\"-176.8\">!a & b & c</text>\n",
|
|
"</g>\n",
|
|
"<!-- 5->5 -->\n",
|
|
"<g class=\"edge\" id=\"edge19\">\n",
|
|
"<title>5->5</title>\n",
|
|
"<path d=\"M462.4254,-162.5414C459.7303,-172.9087 462.9219,-183 472,-183 478.9504,-183 482.4503,-177.0847 482.4995,-169.6591\" fill=\"none\" stroke=\"#000000\"/>\n",
|
|
"<polygon fill=\"#000000\" points=\"481.5746,-162.5414 485.6004,-169.0771 482.0256,-166.0123 482.4767,-169.4831 482.4767,-169.4831 482.4767,-169.4831 482.0256,-166.0123 479.353,-169.889 481.5746,-162.5414 481.5746,-162.5414\" stroke=\"#000000\"/>\n",
|
|
"<text fill=\"#000000\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"439\" y=\"-186.8\">!a & b & !c</text>\n",
|
|
"</g>\n",
|
|
"</g>\n",
|
|
"</svg>"
|
|
],
|
|
"text/plain": [
|
|
"<IPython.core.display.SVG object>"
|
|
]
|
|
},
|
|
"execution_count": 21,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"aut = spot.translate('(b W Xa) & GF(c <-> Xb) | a', 'generic', 'det')\n",
|
|
"spot.highlight_languages(aut)\n",
|
|
"aut.show('.bas')"
|
|
]
|
|
}
|
|
],
|
|
"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.6.6"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|