spot/tests/python/_zlktree.ipynb
Alexandre Duret-Lutz 8c5bb6c2eb zlktree: add a paritization based on zielonka trees
* spot/twaalgos/zlktree.hh,
spot/twaalgos/zlktree.cc (zielonka_tree_transform): New function.
* tests/python/_zlktree.ipynb: Test it on three examples.
2021-08-30 10:27:06 +02:00

2273 lines
121 KiB
Text

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "found-hurricane",
"metadata": {},
"outputs": [],
"source": [
"import spot\n",
"spot.setup()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "colonial-testimony",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Title: zielonka_tree Pages: 1 -->\n",
"<svg width=\"560pt\" height=\"278pt\"\n",
" viewBox=\"0.00 0.00 560.07 277.74\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 273.74)\">\n",
"<title>zielonka_tree</title>\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-273.74 556.07,-273.74 556.07,4 -4,4\"/>\n",
"<!-- 0 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>0</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"295.36,-269.74 211.36,-269.74 211.36,-233.74 295.36,-233.74 295.36,-269.74\"/>\n",
"<text text-anchor=\"middle\" x=\"253.36\" y=\"-248.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3}</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"161.36\" cy=\"-179.74\" rx=\"46.29\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"161.36\" y=\"-176.04\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2,3}</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M230.61,-233.44C218.3,-224.07 202.98,-212.41 189.88,-202.44\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"191.72,-199.45 181.64,-196.18 187.48,-205.02 191.72,-199.45\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"340.36\" cy=\"-179.74\" rx=\"46.29\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"340.36\" y=\"-176.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,3}</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M274.86,-233.44C286.39,-224.16 300.72,-212.63 313.03,-202.73\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"315.57,-205.17 321.17,-196.18 311.18,-199.72 315.57,-205.17\"/>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>3</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"107.86,-125.74 50.86,-125.74 50.86,-89.74 107.86,-89.74 107.86,-125.74\"/>\n",
"<text text-anchor=\"middle\" x=\"79.36\" y=\"-104.04\" font-family=\"Times,serif\" font-size=\"14.00\">{2,3}</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;3 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>1&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M142.75,-162.86C132.23,-153.88 118.87,-142.47 107.13,-132.45\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"109.2,-129.61 99.32,-125.78 104.65,-134.94 109.2,-129.61\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"189.86,-125.74 132.86,-125.74 132.86,-89.74 189.86,-89.74 189.86,-125.74\"/>\n",
"<text text-anchor=\"middle\" x=\"161.36\" y=\"-104.04\" font-family=\"Times,serif\" font-size=\"14.00\">{1,3}</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;4 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M161.36,-161.44C161.36,-153.72 161.36,-144.45 161.36,-135.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"164.86,-135.84 161.36,-125.84 157.86,-135.84 164.86,-135.84\"/>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>5</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"368.86,-125.74 311.86,-125.74 311.86,-89.74 368.86,-89.74 368.86,-125.74\"/>\n",
"<text text-anchor=\"middle\" x=\"340.36\" y=\"-104.04\" font-family=\"Times,serif\" font-size=\"14.00\">{1,3}</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;5 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>2&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M340.36,-161.44C340.36,-153.72 340.36,-144.45 340.36,-135.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"343.86,-135.84 340.36,-125.84 336.86,-135.84 343.86,-135.84\"/>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>6</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"506.86,-125.74 449.86,-125.74 449.86,-89.74 506.86,-89.74 506.86,-125.74\"/>\n",
"<text text-anchor=\"middle\" x=\"478.36\" y=\"-104.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1}</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;6 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>2&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M367.29,-165.08C388.11,-154.52 417.19,-139.76 440.38,-128.01\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"442.25,-130.98 449.58,-123.33 439.08,-124.74 442.25,-130.98\"/>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>7</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"35.36\" cy=\"-26.87\" rx=\"35.21\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"35.36\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{3}</text>\n",
"<text text-anchor=\"middle\" x=\"35.36\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;7&gt;</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;7 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>3&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M69.81,-89.63C65.09,-81.16 59.22,-70.65 53.68,-60.72\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"56.65,-58.86 48.72,-51.83 50.54,-62.27 56.65,-58.86\"/>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"124.36\" cy=\"-26.87\" rx=\"35.21\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"124.36\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{3}</text>\n",
"<text text-anchor=\"middle\" x=\"124.36\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;8&gt;</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;8 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>4&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M153.33,-89.63C149.46,-81.39 144.69,-71.21 140.14,-61.51\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"143.29,-60 135.88,-52.43 136.96,-62.97 143.29,-60\"/>\n",
"</g>\n",
"<!-- 9 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>9</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"213.36\" cy=\"-26.87\" rx=\"35.21\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"213.36\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{1}</text>\n",
"<text text-anchor=\"middle\" x=\"213.36\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;9&gt;</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;9 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>4&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M172.64,-89.63C178.43,-80.85 185.66,-69.87 192.43,-59.61\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"195.37,-61.51 197.95,-51.23 189.52,-57.66 195.37,-61.51\"/>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>10</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"308.36\" cy=\"-26.87\" rx=\"41.94\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"308.36\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{3}</text>\n",
"<text text-anchor=\"middle\" x=\"308.36\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;10&gt;</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;10 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>5&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M333.41,-89.63C330.19,-81.69 326.24,-71.96 322.44,-62.58\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"325.57,-60.99 318.57,-53.04 319.08,-63.62 325.57,-60.99\"/>\n",
"</g>\n",
"<!-- 11 -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>11</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"409.36\" cy=\"-26.87\" rx=\"41.94\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"409.36\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{1}</text>\n",
"<text text-anchor=\"middle\" x=\"409.36\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;11&gt;</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;11 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>5&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M355.33,-89.63C363.36,-80.44 373.51,-68.84 382.83,-58.19\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"385.49,-60.47 389.44,-50.64 380.22,-55.86 385.49,-60.47\"/>\n",
"</g>\n",
"<!-- 12 -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>12</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"510.36\" cy=\"-26.87\" rx=\"41.94\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"510.36\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{1}</text>\n",
"<text text-anchor=\"middle\" x=\"510.36\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;12&gt;</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;12 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>6&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M485.3,-89.63C488.52,-81.69 492.47,-71.96 496.27,-62.58\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"499.63,-63.62 500.14,-53.04 493.14,-60.99 499.63,-63.62\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7efe7807fa80> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"(6, 7, False, False, False)"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c = spot.acc_cond('Fin(0)&Inf(1)&(Inf(2)|Fin(3)) | (Inf(0)|Fin(1))&Fin(2)&Inf(3)')\n",
"t = spot.zielonka_tree(c); display(t)\n",
"t.num_branches(), t.first_branch(), t.has_rabin_shape(), t.has_streett_shape(), t.has_parity_shape()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "incorrect-protection",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(7, 3)"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"t.step(7, [3])"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "rolled-command",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(7, 2)"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"t.step(7, [2])"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "affecting-border",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(8, 1)"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"t.step(7, [1])"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "accepting-clerk",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(9, 2)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"t.step(8, [1])"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "flexible-country",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(9, 3)"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"t.step(9, [1])"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "continental-sessions",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(8, 3)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"t.step(8, [3])"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "expired-asian",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(10, 0)"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"t.step(8, [0])"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "binary-republic",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(7, 0)"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"t.step(10, [0,2])"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "starting-liechtenstein",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(10, 0)"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"t.step(7, [0,2])"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "forced-canyon",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(7, 4)"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"t.step(7, [])"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "floppy-chassis",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(6, (Fin(0) & Inf(1)) | (Fin(2) & Inf(3)) | (Fin(4) & Inf(5)))\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Title: zielonka_tree Pages: 1 -->\n",
"<svg width=\"650pt\" height=\"422pt\"\n",
" viewBox=\"0.00 0.00 650.29 421.74\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 417.74)\">\n",
"<title>zielonka_tree</title>\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-417.74 646.29,-417.74 646.29,4 -4,4\"/>\n",
"<!-- 0 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>0</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"381.65,-413.74 270.65,-413.74 270.65,-377.74 381.65,-377.74 381.65,-413.74\"/>\n",
"<text text-anchor=\"middle\" x=\"326.15\" y=\"-392.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3,4,5}</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"161.15\" cy=\"-323.74\" rx=\"63.89\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"161.15\" y=\"-320.04\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2,3,4,5}</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M285.78,-377.62C261.08,-367.14 229.49,-353.73 204.29,-343.04\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"205.55,-339.78 194.97,-339.09 202.81,-346.22 205.55,-339.78\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"326.15\" cy=\"-323.74\" rx=\"63.89\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"326.15\" y=\"-320.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,3,4,5}</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M326.15,-377.44C326.15,-369.72 326.15,-360.45 326.15,-351.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"329.65,-351.84 326.15,-341.84 322.65,-351.84 329.65,-351.84\"/>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"481.15\" cy=\"-323.74\" rx=\"63.89\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"481.15\" y=\"-320.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3,5}</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;3 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M364.06,-377.62C386.91,-367.3 416.02,-354.15 439.5,-343.55\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"441.18,-346.63 448.86,-339.32 438.3,-340.25 441.18,-346.63\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"198.15,-269.74 114.15,-269.74 114.15,-233.74 198.15,-233.74 198.15,-269.74\"/>\n",
"<text text-anchor=\"middle\" x=\"156.15\" y=\"-248.04\" font-family=\"Times,serif\" font-size=\"14.00\">{2,3,4,5}</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;4 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M159.91,-305.44C159.36,-297.72 158.7,-288.45 158.08,-279.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"161.57,-279.57 157.37,-269.84 154.59,-280.07 161.57,-279.57\"/>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>5</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"368.15,-269.74 284.15,-269.74 284.15,-233.74 368.15,-233.74 368.15,-269.74\"/>\n",
"<text text-anchor=\"middle\" x=\"326.15\" y=\"-248.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,4,5}</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;5 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>2&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M326.15,-305.44C326.15,-297.72 326.15,-288.45 326.15,-279.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"329.65,-279.84 326.15,-269.84 322.65,-279.84 329.65,-279.84\"/>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>6</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"528.15,-269.74 444.15,-269.74 444.15,-233.74 528.15,-233.74 528.15,-269.74\"/>\n",
"<text text-anchor=\"middle\" x=\"486.15\" y=\"-248.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3}</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;6 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>3&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M482.38,-305.44C482.93,-297.72 483.6,-288.45 484.21,-279.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"487.7,-280.07 484.92,-269.84 480.72,-279.57 487.7,-280.07\"/>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>7</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"46.15\" cy=\"-179.74\" rx=\"46.29\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"46.15\" y=\"-176.04\" font-family=\"Times,serif\" font-size=\"14.00\">{3,4,5}</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;7 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>4&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M129.24,-233.62C113.78,-223.78 94.28,-211.37 78.05,-201.05\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"79.74,-197.97 69.42,-195.55 75.98,-203.87 79.74,-197.97\"/>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>8</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"156.15\" cy=\"-179.74\" rx=\"46.29\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"156.15\" y=\"-176.04\" font-family=\"Times,serif\" font-size=\"14.00\">{2,3,5}</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;8 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>4&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M156.15,-233.44C156.15,-225.72 156.15,-216.45 156.15,-207.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"159.65,-207.84 156.15,-197.84 152.65,-207.84 159.65,-207.84\"/>\n",
"</g>\n",
"<!-- 9 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>9</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"266.15\" cy=\"-179.74\" rx=\"46.29\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"266.15\" y=\"-176.04\" font-family=\"Times,serif\" font-size=\"14.00\">{1,4,5}</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;9 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>5&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M311.31,-233.44C304.01,-224.92 295.09,-214.5 287.1,-205.19\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"289.56,-202.68 280.39,-197.36 284.24,-207.23 289.56,-202.68\"/>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>10</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"376.15\" cy=\"-179.74\" rx=\"46.29\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"376.15\" y=\"-176.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,5}</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;10 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>5&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M338.51,-233.44C344.47,-225.09 351.73,-214.92 358.28,-205.76\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"361.31,-207.53 364.27,-197.36 355.61,-203.47 361.31,-207.53\"/>\n",
"</g>\n",
"<!-- 11 -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>11</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"486.15\" cy=\"-179.74\" rx=\"46.29\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"486.15\" y=\"-176.04\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2,3}</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;11 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>6&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M486.15,-233.44C486.15,-225.72 486.15,-216.45 486.15,-207.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"489.65,-207.84 486.15,-197.84 482.65,-207.84 489.65,-207.84\"/>\n",
"</g>\n",
"<!-- 12 -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>12</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"596.15\" cy=\"-179.74\" rx=\"46.29\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"596.15\" y=\"-176.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,3}</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;12 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>6&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M513.05,-233.62C528.51,-223.78 548.01,-211.37 564.24,-201.05\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"566.31,-203.87 572.87,-195.55 562.55,-197.97 566.31,-203.87\"/>\n",
"</g>\n",
"<!-- 13 -->\n",
"<g id=\"node14\" class=\"node\">\n",
"<title>13</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"74.65,-125.74 17.65,-125.74 17.65,-89.74 74.65,-89.74 74.65,-125.74\"/>\n",
"<text text-anchor=\"middle\" x=\"46.15\" y=\"-104.04\" font-family=\"Times,serif\" font-size=\"14.00\">{4,5}</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;13 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>7&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M46.15,-161.44C46.15,-153.72 46.15,-144.45 46.15,-135.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"49.65,-135.84 46.15,-125.84 42.65,-135.84 49.65,-135.84\"/>\n",
"</g>\n",
"<!-- 14 -->\n",
"<g id=\"node15\" class=\"node\">\n",
"<title>14</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"184.65,-125.74 127.65,-125.74 127.65,-89.74 184.65,-89.74 184.65,-125.74\"/>\n",
"<text text-anchor=\"middle\" x=\"156.15\" y=\"-104.04\" font-family=\"Times,serif\" font-size=\"14.00\">{2,3}</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;14 -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>8&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M156.15,-161.44C156.15,-153.72 156.15,-144.45 156.15,-135.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"159.65,-135.84 156.15,-125.84 152.65,-135.84 159.65,-135.84\"/>\n",
"</g>\n",
"<!-- 15 -->\n",
"<g id=\"node16\" class=\"node\">\n",
"<title>15</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"294.65,-125.74 237.65,-125.74 237.65,-89.74 294.65,-89.74 294.65,-125.74\"/>\n",
"<text text-anchor=\"middle\" x=\"266.15\" y=\"-104.04\" font-family=\"Times,serif\" font-size=\"14.00\">{4,5}</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;15 -->\n",
"<g id=\"edge15\" class=\"edge\">\n",
"<title>9&#45;&gt;15</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M266.15,-161.44C266.15,-153.72 266.15,-144.45 266.15,-135.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"269.65,-135.84 266.15,-125.84 262.65,-135.84 269.65,-135.84\"/>\n",
"</g>\n",
"<!-- 16 -->\n",
"<g id=\"node17\" class=\"node\">\n",
"<title>16</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"404.65,-125.74 347.65,-125.74 347.65,-89.74 404.65,-89.74 404.65,-125.74\"/>\n",
"<text text-anchor=\"middle\" x=\"376.15\" y=\"-104.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1}</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;16 -->\n",
"<g id=\"edge16\" class=\"edge\">\n",
"<title>10&#45;&gt;16</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M376.15,-161.44C376.15,-153.72 376.15,-144.45 376.15,-135.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"379.65,-135.84 376.15,-125.84 372.65,-135.84 379.65,-135.84\"/>\n",
"</g>\n",
"<!-- 17 -->\n",
"<g id=\"node18\" class=\"node\">\n",
"<title>17</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"514.65,-125.74 457.65,-125.74 457.65,-89.74 514.65,-89.74 514.65,-125.74\"/>\n",
"<text text-anchor=\"middle\" x=\"486.15\" y=\"-104.04\" font-family=\"Times,serif\" font-size=\"14.00\">{2,3}</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;17 -->\n",
"<g id=\"edge17\" class=\"edge\">\n",
"<title>11&#45;&gt;17</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M486.15,-161.44C486.15,-153.72 486.15,-144.45 486.15,-135.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"489.65,-135.84 486.15,-125.84 482.65,-135.84 489.65,-135.84\"/>\n",
"</g>\n",
"<!-- 18 -->\n",
"<g id=\"node19\" class=\"node\">\n",
"<title>18</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"624.65,-125.74 567.65,-125.74 567.65,-89.74 624.65,-89.74 624.65,-125.74\"/>\n",
"<text text-anchor=\"middle\" x=\"596.15\" y=\"-104.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1}</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;18 -->\n",
"<g id=\"edge18\" class=\"edge\">\n",
"<title>12&#45;&gt;18</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M596.15,-161.44C596.15,-153.72 596.15,-144.45 596.15,-135.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"599.65,-135.84 596.15,-125.84 592.65,-135.84 599.65,-135.84\"/>\n",
"</g>\n",
"<!-- 19 -->\n",
"<g id=\"node20\" class=\"node\">\n",
"<title>19</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"46.15\" cy=\"-26.87\" rx=\"41.94\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"46.15\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{5}</text>\n",
"<text text-anchor=\"middle\" x=\"46.15\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;19&gt;</text>\n",
"</g>\n",
"<!-- 13&#45;&gt;19 -->\n",
"<g id=\"edge19\" class=\"edge\">\n",
"<title>13&#45;&gt;19</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M46.15,-89.63C46.15,-82.14 46.15,-73.05 46.15,-64.17\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"49.65,-63.95 46.15,-53.95 42.65,-63.95 49.65,-63.95\"/>\n",
"</g>\n",
"<!-- 20 -->\n",
"<g id=\"node21\" class=\"node\">\n",
"<title>20</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"156.15\" cy=\"-26.87\" rx=\"41.94\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"156.15\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{3}</text>\n",
"<text text-anchor=\"middle\" x=\"156.15\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;20&gt;</text>\n",
"</g>\n",
"<!-- 14&#45;&gt;20 -->\n",
"<g id=\"edge20\" class=\"edge\">\n",
"<title>14&#45;&gt;20</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M156.15,-89.63C156.15,-82.14 156.15,-73.05 156.15,-64.17\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"159.65,-63.95 156.15,-53.95 152.65,-63.95 159.65,-63.95\"/>\n",
"</g>\n",
"<!-- 21 -->\n",
"<g id=\"node22\" class=\"node\">\n",
"<title>21</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"266.15\" cy=\"-26.87\" rx=\"41.94\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"266.15\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{5}</text>\n",
"<text text-anchor=\"middle\" x=\"266.15\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;21&gt;</text>\n",
"</g>\n",
"<!-- 15&#45;&gt;21 -->\n",
"<g id=\"edge21\" class=\"edge\">\n",
"<title>15&#45;&gt;21</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M266.15,-89.63C266.15,-82.14 266.15,-73.05 266.15,-64.17\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"269.65,-63.95 266.15,-53.95 262.65,-63.95 269.65,-63.95\"/>\n",
"</g>\n",
"<!-- 22 -->\n",
"<g id=\"node23\" class=\"node\">\n",
"<title>22</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"376.15\" cy=\"-26.87\" rx=\"41.94\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"376.15\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{1}</text>\n",
"<text text-anchor=\"middle\" x=\"376.15\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;22&gt;</text>\n",
"</g>\n",
"<!-- 16&#45;&gt;22 -->\n",
"<g id=\"edge22\" class=\"edge\">\n",
"<title>16&#45;&gt;22</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M376.15,-89.63C376.15,-82.14 376.15,-73.05 376.15,-64.17\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"379.65,-63.95 376.15,-53.95 372.65,-63.95 379.65,-63.95\"/>\n",
"</g>\n",
"<!-- 23 -->\n",
"<g id=\"node24\" class=\"node\">\n",
"<title>23</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"486.15\" cy=\"-26.87\" rx=\"41.94\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"486.15\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{3}</text>\n",
"<text text-anchor=\"middle\" x=\"486.15\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;23&gt;</text>\n",
"</g>\n",
"<!-- 17&#45;&gt;23 -->\n",
"<g id=\"edge23\" class=\"edge\">\n",
"<title>17&#45;&gt;23</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M486.15,-89.63C486.15,-82.14 486.15,-73.05 486.15,-64.17\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"489.65,-63.95 486.15,-53.95 482.65,-63.95 489.65,-63.95\"/>\n",
"</g>\n",
"<!-- 24 -->\n",
"<g id=\"node25\" class=\"node\">\n",
"<title>24</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"596.15\" cy=\"-26.87\" rx=\"41.94\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"596.15\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{1}</text>\n",
"<text text-anchor=\"middle\" x=\"596.15\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;24&gt;</text>\n",
"</g>\n",
"<!-- 18&#45;&gt;24 -->\n",
"<g id=\"edge24\" class=\"edge\">\n",
"<title>18&#45;&gt;24</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M596.15,-89.63C596.15,-82.14 596.15,-73.05 596.15,-64.17\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"599.65,-63.95 596.15,-53.95 592.65,-63.95 599.65,-63.95\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7efe7807fab0> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"(6, 19, True, False, False)"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c = spot.acc_cond('Rabin 3')\n",
"print(c)\n",
"t = spot.zielonka_tree(c)\n",
"display(t)\n",
"t.num_branches(), t.first_branch(), t.has_rabin_shape(), t.has_streett_shape(), t.has_parity_shape()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "acquired-rogers",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(6, (Fin(0) | Inf(1)) & (Fin(2) | Inf(3)) & (Fin(4) | Inf(5)))\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Title: zielonka_tree Pages: 1 -->\n",
"<svg width=\"542pt\" height=\"406pt\"\n",
" viewBox=\"0.00 0.00 542.09 406.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 402)\">\n",
"<title>zielonka_tree</title>\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-402 538.09,-402 538.09,4 -4,4\"/>\n",
"<!-- 0 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"270.05\" cy=\"-380\" rx=\"72.29\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"270.05\" y=\"-376.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3,4,5}</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>1</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"187.05,-326 89.05,-326 89.05,-290 187.05,-290 187.05,-326\"/>\n",
"<text text-anchor=\"middle\" x=\"138.05\" y=\"-304.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,2,3,4,5}</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M240.75,-363.46C222.7,-353.89 199.29,-341.48 179.37,-330.92\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"180.98,-327.8 170.5,-326.21 177.7,-333.99 180.98,-327.8\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"319.05,-326 221.05,-326 221.05,-290 319.05,-290 319.05,-326\"/>\n",
"<text text-anchor=\"middle\" x=\"270.05\" y=\"-304.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,4,5}</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M270.05,-361.7C270.05,-353.98 270.05,-344.71 270.05,-336.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"273.55,-336.1 270.05,-326.1 266.55,-336.1 273.55,-336.1\"/>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>3</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"440.05,-326 342.05,-326 342.05,-290 440.05,-290 440.05,-326\"/>\n",
"<text text-anchor=\"middle\" x=\"391.05\" y=\"-304.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3,4}</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;3 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M297.2,-363.29C313.46,-353.89 334.39,-341.78 352.36,-331.38\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"354.54,-334.16 361.44,-326.13 351.03,-328.11 354.54,-334.16\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>4</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"129.05\" cy=\"-236\" rx=\"54.69\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"129.05\" y=\"-232.3\" font-family=\"Times,serif\" font-size=\"14.00\">{2,3,4,5}</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;4 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>1&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M135.82,-289.7C134.83,-281.98 133.64,-272.71 132.53,-264.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"135.99,-263.58 131.25,-254.1 129.05,-264.47 135.99,-263.58\"/>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>5</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"270.05\" cy=\"-236\" rx=\"54.69\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"270.05\" y=\"-232.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,4,5}</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;5 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>2&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M270.05,-289.7C270.05,-281.98 270.05,-272.71 270.05,-264.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"273.55,-264.1 270.05,-254.1 266.55,-264.1 273.55,-264.1\"/>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"405.05\" cy=\"-236\" rx=\"54.69\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"405.05\" y=\"-232.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3}</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;6 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>3&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M394.51,-289.7C396.05,-281.98 397.9,-272.71 399.62,-264.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"403.1,-264.6 401.63,-254.1 396.23,-263.22 403.1,-264.6\"/>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>7</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"74.55,-182 3.55,-182 3.55,-146 74.55,-146 74.55,-182\"/>\n",
"<text text-anchor=\"middle\" x=\"39.05\" y=\"-160.3\" font-family=\"Times,serif\" font-size=\"14.00\">{2,4,5}</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;7 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>4&#45;&gt;7</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M108.62,-219.12C96.97,-210.05 82.14,-198.51 69.16,-188.42\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"71,-185.42 60.96,-182.04 66.71,-190.95 71,-185.42\"/>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>8</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"164.55,-182 93.55,-182 93.55,-146 164.55,-146 164.55,-182\"/>\n",
"<text text-anchor=\"middle\" x=\"129.05\" y=\"-160.3\" font-family=\"Times,serif\" font-size=\"14.00\">{2,3,4}</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;8 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>4&#45;&gt;8</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M129.05,-217.7C129.05,-209.98 129.05,-200.71 129.05,-192.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"132.55,-192.1 129.05,-182.1 125.55,-192.1 132.55,-192.1\"/>\n",
"</g>\n",
"<!-- 9 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>9</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"257.55,-182 186.55,-182 186.55,-146 257.55,-146 257.55,-182\"/>\n",
"<text text-anchor=\"middle\" x=\"222.05\" y=\"-160.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,4,5}</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;9 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>5&#45;&gt;9</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M258.43,-218.05C252.79,-209.84 245.9,-199.79 239.64,-190.66\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"242.43,-188.54 233.89,-182.28 236.66,-192.5 242.43,-188.54\"/>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>10</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"347.55,-182 276.55,-182 276.55,-146 347.55,-146 347.55,-182\"/>\n",
"<text text-anchor=\"middle\" x=\"312.05\" y=\"-160.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,4}</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;10 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>5&#45;&gt;10</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M280.21,-218.05C285.09,-209.92 291.05,-200 296.48,-190.94\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"299.54,-192.65 301.68,-182.28 293.54,-189.05 299.54,-192.65\"/>\n",
"</g>\n",
"<!-- 11 -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>11</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"440.55,-182 369.55,-182 369.55,-146 440.55,-146 440.55,-182\"/>\n",
"<text text-anchor=\"middle\" x=\"405.05\" y=\"-160.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,2,3}</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;11 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>6&#45;&gt;11</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M405.05,-217.7C405.05,-209.98 405.05,-200.71 405.05,-192.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"408.55,-192.1 405.05,-182.1 401.55,-192.1 408.55,-192.1\"/>\n",
"</g>\n",
"<!-- 12 -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>12</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"530.55,-182 459.55,-182 459.55,-146 530.55,-146 530.55,-182\"/>\n",
"<text text-anchor=\"middle\" x=\"495.05\" y=\"-160.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2}</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;12 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>6&#45;&gt;12</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M425.47,-219.12C437.13,-210.05 451.96,-198.51 464.93,-188.42\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"467.39,-190.95 473.13,-182.04 463.09,-185.42 467.39,-190.95\"/>\n",
"</g>\n",
"<!-- 13 -->\n",
"<g id=\"node14\" class=\"node\">\n",
"<title>13</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"37.05\" cy=\"-92\" rx=\"37.09\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"37.05\" y=\"-88.3\" font-family=\"Times,serif\" font-size=\"14.00\">{4,5}</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;13 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>7&#45;&gt;13</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M38.55,-145.7C38.33,-137.98 38.07,-128.71 37.82,-120.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"41.32,-120 37.54,-110.1 34.32,-120.2 41.32,-120\"/>\n",
"</g>\n",
"<!-- 14 -->\n",
"<g id=\"node15\" class=\"node\">\n",
"<title>14</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"129.05\" cy=\"-92\" rx=\"37.09\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"129.05\" y=\"-88.3\" font-family=\"Times,serif\" font-size=\"14.00\">{2,3}</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;14 -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>8&#45;&gt;14</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M129.05,-145.7C129.05,-137.98 129.05,-128.71 129.05,-120.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"132.55,-120.1 129.05,-110.1 125.55,-120.1 132.55,-120.1\"/>\n",
"</g>\n",
"<!-- 15 -->\n",
"<g id=\"node16\" class=\"node\">\n",
"<title>15</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"221.05\" cy=\"-92\" rx=\"37.09\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"221.05\" y=\"-88.3\" font-family=\"Times,serif\" font-size=\"14.00\">{4,5}</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;15 -->\n",
"<g id=\"edge15\" class=\"edge\">\n",
"<title>9&#45;&gt;15</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M221.8,-145.7C221.69,-137.98 221.56,-128.71 221.43,-120.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"224.93,-120.05 221.29,-110.1 217.93,-120.15 224.93,-120.05\"/>\n",
"</g>\n",
"<!-- 16 -->\n",
"<g id=\"node17\" class=\"node\">\n",
"<title>16</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"313.05\" cy=\"-92\" rx=\"37.09\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"313.05\" y=\"-88.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1}</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;16 -->\n",
"<g id=\"edge16\" class=\"edge\">\n",
"<title>10&#45;&gt;16</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M312.29,-145.7C312.4,-137.98 312.54,-128.71 312.66,-120.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"316.16,-120.15 312.8,-110.1 309.16,-120.05 316.16,-120.15\"/>\n",
"</g>\n",
"<!-- 17 -->\n",
"<g id=\"node18\" class=\"node\">\n",
"<title>17</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"405.05\" cy=\"-92\" rx=\"37.09\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"405.05\" y=\"-88.3\" font-family=\"Times,serif\" font-size=\"14.00\">{2,3}</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;17 -->\n",
"<g id=\"edge17\" class=\"edge\">\n",
"<title>11&#45;&gt;17</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M405.05,-145.7C405.05,-137.98 405.05,-128.71 405.05,-120.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"408.55,-120.1 405.05,-110.1 401.55,-120.1 408.55,-120.1\"/>\n",
"</g>\n",
"<!-- 18 -->\n",
"<g id=\"node19\" class=\"node\">\n",
"<title>18</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"497.05\" cy=\"-92\" rx=\"37.09\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"497.05\" y=\"-88.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1}</text>\n",
"</g>\n",
"<!-- 12&#45;&gt;18 -->\n",
"<g id=\"edge18\" class=\"edge\">\n",
"<title>12&#45;&gt;18</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M495.54,-145.7C495.76,-137.98 496.03,-128.71 496.27,-120.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"499.77,-120.2 496.56,-110.1 492.77,-120 499.77,-120.2\"/>\n",
"</g>\n",
"<!-- 19 -->\n",
"<g id=\"node20\" class=\"node\">\n",
"<title>19</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"66.55,-38 7.55,-38 7.55,0 66.55,0 66.55,-38\"/>\n",
"<text text-anchor=\"middle\" x=\"37.05\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">{4}</text>\n",
"<text text-anchor=\"middle\" x=\"37.05\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;19&gt;</text>\n",
"</g>\n",
"<!-- 13&#45;&gt;19 -->\n",
"<g id=\"edge19\" class=\"edge\">\n",
"<title>13&#45;&gt;19</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M37.05,-73.81C37.05,-66.11 37.05,-56.82 37.05,-48.15\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"40.55,-48.02 37.05,-38.02 33.55,-48.02 40.55,-48.02\"/>\n",
"</g>\n",
"<!-- 20 -->\n",
"<g id=\"node21\" class=\"node\">\n",
"<title>20</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"158.55,-38 99.55,-38 99.55,0 158.55,0 158.55,-38\"/>\n",
"<text text-anchor=\"middle\" x=\"129.05\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">{2}</text>\n",
"<text text-anchor=\"middle\" x=\"129.05\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;20&gt;</text>\n",
"</g>\n",
"<!-- 14&#45;&gt;20 -->\n",
"<g id=\"edge20\" class=\"edge\">\n",
"<title>14&#45;&gt;20</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M129.05,-73.81C129.05,-66.11 129.05,-56.82 129.05,-48.15\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"132.55,-48.02 129.05,-38.02 125.55,-48.02 132.55,-48.02\"/>\n",
"</g>\n",
"<!-- 21 -->\n",
"<g id=\"node22\" class=\"node\">\n",
"<title>21</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"250.55,-38 191.55,-38 191.55,0 250.55,0 250.55,-38\"/>\n",
"<text text-anchor=\"middle\" x=\"221.05\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">{4}</text>\n",
"<text text-anchor=\"middle\" x=\"221.05\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;21&gt;</text>\n",
"</g>\n",
"<!-- 15&#45;&gt;21 -->\n",
"<g id=\"edge21\" class=\"edge\">\n",
"<title>15&#45;&gt;21</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M221.05,-73.81C221.05,-66.11 221.05,-56.82 221.05,-48.15\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"224.55,-48.02 221.05,-38.02 217.55,-48.02 224.55,-48.02\"/>\n",
"</g>\n",
"<!-- 22 -->\n",
"<g id=\"node23\" class=\"node\">\n",
"<title>22</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"342.55,-38 283.55,-38 283.55,0 342.55,0 342.55,-38\"/>\n",
"<text text-anchor=\"middle\" x=\"313.05\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">{0}</text>\n",
"<text text-anchor=\"middle\" x=\"313.05\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;22&gt;</text>\n",
"</g>\n",
"<!-- 16&#45;&gt;22 -->\n",
"<g id=\"edge22\" class=\"edge\">\n",
"<title>16&#45;&gt;22</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M313.05,-73.81C313.05,-66.11 313.05,-56.82 313.05,-48.15\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"316.55,-48.02 313.05,-38.02 309.55,-48.02 316.55,-48.02\"/>\n",
"</g>\n",
"<!-- 23 -->\n",
"<g id=\"node24\" class=\"node\">\n",
"<title>23</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"434.55,-38 375.55,-38 375.55,0 434.55,0 434.55,-38\"/>\n",
"<text text-anchor=\"middle\" x=\"405.05\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">{2}</text>\n",
"<text text-anchor=\"middle\" x=\"405.05\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;23&gt;</text>\n",
"</g>\n",
"<!-- 17&#45;&gt;23 -->\n",
"<g id=\"edge23\" class=\"edge\">\n",
"<title>17&#45;&gt;23</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M405.05,-73.81C405.05,-66.11 405.05,-56.82 405.05,-48.15\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"408.55,-48.02 405.05,-38.02 401.55,-48.02 408.55,-48.02\"/>\n",
"</g>\n",
"<!-- 24 -->\n",
"<g id=\"node25\" class=\"node\">\n",
"<title>24</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"526.55,-38 467.55,-38 467.55,0 526.55,0 526.55,-38\"/>\n",
"<text text-anchor=\"middle\" x=\"497.05\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">{0}</text>\n",
"<text text-anchor=\"middle\" x=\"497.05\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;24&gt;</text>\n",
"</g>\n",
"<!-- 18&#45;&gt;24 -->\n",
"<g id=\"edge24\" class=\"edge\">\n",
"<title>18&#45;&gt;24</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M497.05,-73.81C497.05,-66.11 497.05,-56.82 497.05,-48.15\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"500.55,-48.02 497.05,-38.02 493.55,-48.02 500.55,-48.02\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7efe6a301e70> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"(6, 19, False, True, False)"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c = spot.acc_cond('Streett 3')\n",
"print(c)\n",
"t = spot.zielonka_tree(c)\n",
"display(t)\n",
"t.num_branches(), t.first_branch(), t.has_rabin_shape(), t.has_streett_shape(), t.has_parity_shape()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "minimal-douglas",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(5, (Inf(0) & Fin(1)) | (Inf(2) & Fin(3) & Fin(4)))\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Title: zielonka_tree Pages: 1 -->\n",
"<svg width=\"228pt\" height=\"278pt\"\n",
" viewBox=\"0.00 0.00 227.74 277.74\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 273.74)\">\n",
"<title>zielonka_tree</title>\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-273.74 223.74,-273.74 223.74,4 -4,4\"/>\n",
"<!-- 0 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>0</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"162.6,-269.74 64.6,-269.74 64.6,-233.74 162.6,-233.74 162.6,-269.74\"/>\n",
"<text text-anchor=\"middle\" x=\"113.6\" y=\"-248.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3,4}</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"54.6\" cy=\"-179.74\" rx=\"54.69\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"54.6\" y=\"-176.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,2,3,4}</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M99.01,-233.44C91.83,-224.92 83.05,-214.5 75.2,-205.19\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"77.73,-202.75 68.61,-197.36 72.37,-207.26 77.73,-202.75\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"173.6\" cy=\"-179.74\" rx=\"46.29\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"173.6\" y=\"-176.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2}</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M128.43,-233.44C135.73,-224.92 144.65,-214.5 152.64,-205.19\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"155.5,-207.23 159.35,-197.36 150.18,-202.68 155.5,-207.23\"/>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>3</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"90.1,-125.74 19.1,-125.74 19.1,-89.74 90.1,-89.74 90.1,-125.74\"/>\n",
"<text text-anchor=\"middle\" x=\"54.6\" y=\"-104.04\" font-family=\"Times,serif\" font-size=\"14.00\">{2,3,4}</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;3 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>1&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M54.6,-161.44C54.6,-153.72 54.6,-144.45 54.6,-135.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"58.1,-135.84 54.6,-125.84 51.1,-135.84 58.1,-135.84\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"202.1,-125.74 145.1,-125.74 145.1,-89.74 202.1,-89.74 202.1,-125.74\"/>\n",
"<text text-anchor=\"middle\" x=\"173.6\" y=\"-104.04\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1}</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;4 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>2&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M173.6,-161.44C173.6,-153.72 173.6,-144.45 173.6,-135.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"177.1,-135.84 173.6,-125.84 170.1,-135.84 177.1,-135.84\"/>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>5</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"54.6\" cy=\"-26.87\" rx=\"35.21\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"54.6\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{2}</text>\n",
"<text text-anchor=\"middle\" x=\"54.6\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;5&gt;</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;5 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>3&#45;&gt;5</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M54.6,-89.63C54.6,-82.14 54.6,-73.05 54.6,-64.17\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"58.1,-63.95 54.6,-53.95 51.1,-63.95 58.1,-63.95\"/>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>6</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"173.6\" cy=\"-26.87\" rx=\"35.21\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"173.6\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{0}</text>\n",
"<text text-anchor=\"middle\" x=\"173.6\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;6&gt;</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;6 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>4&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M173.6,-89.63C173.6,-82.14 173.6,-73.05 173.6,-64.17\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"177.1,-63.95 173.6,-53.95 170.1,-63.95 177.1,-63.95\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7efe6a301e10> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"(2, 5, True, False, False)"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c = spot.acc_cond('Inf(0)&Fin(1) | (Inf(2)&Fin(3)&Fin(4))')\n",
"print(c)\n",
"t = spot.zielonka_tree(c)\n",
"display(t)\n",
"t.num_branches(), t.first_branch(), t.has_rabin_shape(), t.has_streett_shape(), t.has_parity_shape()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "tired-thumbnail",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(5, Fin(4) & (Inf(3) | (Fin(2) & (Inf(1) | Fin(0)))))\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Title: zielonka_tree Pages: 1 -->\n",
"<svg width=\"117pt\" height=\"334pt\"\n",
" viewBox=\"0.00 0.00 117.19 334.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 330)\">\n",
"<title>zielonka_tree</title>\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-330 113.19,-330 113.19,4 -4,4\"/>\n",
"<!-- 0 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>0</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"103.6,-326 5.6,-326 5.6,-290 103.6,-290 103.6,-326\"/>\n",
"<text text-anchor=\"middle\" x=\"54.6\" y=\"-304.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3,4}</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"54.6\" cy=\"-236\" rx=\"54.69\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"54.6\" y=\"-232.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2,3}</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M54.6,-289.7C54.6,-281.98 54.6,-272.71 54.6,-264.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"58.1,-264.1 54.6,-254.1 51.1,-264.1 58.1,-264.1\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>2</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"90.1,-182 19.1,-182 19.1,-146 90.1,-146 90.1,-182\"/>\n",
"<text text-anchor=\"middle\" x=\"54.6\" y=\"-160.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1,2}</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>1&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M54.6,-217.7C54.6,-209.98 54.6,-200.71 54.6,-192.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"58.1,-192.1 54.6,-182.1 51.1,-192.1 58.1,-192.1\"/>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>3</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"54.6\" cy=\"-92\" rx=\"37.09\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"54.6\" y=\"-88.3\" font-family=\"Times,serif\" font-size=\"14.00\">{0,1}</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>2&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M54.6,-145.7C54.6,-137.98 54.6,-128.71 54.6,-120.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"58.1,-120.1 54.6,-110.1 51.1,-120.1 58.1,-120.1\"/>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>4</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"81.6,-38 27.6,-38 27.6,0 81.6,0 81.6,-38\"/>\n",
"<text text-anchor=\"middle\" x=\"54.6\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">{0}</text>\n",
"<text text-anchor=\"middle\" x=\"54.6\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;4&gt;</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;4 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>3&#45;&gt;4</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M54.6,-73.81C54.6,-66.11 54.6,-56.82 54.6,-48.15\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"58.1,-48.02 54.6,-38.02 51.1,-48.02 58.1,-48.02\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7efe6a301840> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"(1, 4, True, True, True)"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c = spot.acc_cond('parity max odd 5')\n",
"print(c)\n",
"t = spot.zielonka_tree(c)\n",
"display(t)\n",
"t.num_branches(), t.first_branch(), t.has_rabin_shape(), t.has_streett_shape(), t.has_parity_shape()"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "structured-palace",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(0, f)\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Title: zielonka_tree Pages: 1 -->\n",
"<svg width=\"62pt\" height=\"46pt\"\n",
" viewBox=\"0.00 0.00 62.00 46.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 42)\">\n",
"<title>zielonka_tree</title>\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-42 58,-42 58,4 -4,4\"/>\n",
"<!-- 0 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>0</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"54,-38 0,-38 0,0 54,0 54,-38\"/>\n",
"<text text-anchor=\"middle\" x=\"27\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">{}</text>\n",
"<text text-anchor=\"middle\" x=\"27\" y=\"-7.8\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;0&gt;</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7efe6a301300> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"(1, 0, True, True, True)"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c = spot.acc_cond('f')\n",
"print(c)\n",
"t = spot.zielonka_tree(c)\n",
"display(t)\n",
"t.num_branches(), t.first_branch(), t.has_rabin_shape(), t.has_streett_shape(), t.has_parity_shape()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "plain-modern",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(0, t)\n"
]
},
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Title: zielonka_tree Pages: 1 -->\n",
"<svg width=\"79pt\" height=\"62pt\"\n",
" viewBox=\"0.00 0.00 78.71 61.74\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 57.74)\">\n",
"<title>zielonka_tree</title>\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-57.74 74.71,-57.74 74.71,4 -4,4\"/>\n",
"<!-- 0 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"35.36\" cy=\"-26.87\" rx=\"35.21\" ry=\"26.74\"/>\n",
"<text text-anchor=\"middle\" x=\"35.36\" y=\"-30.67\" font-family=\"Times,serif\" font-size=\"14.00\">{}</text>\n",
"<text text-anchor=\"middle\" x=\"35.36\" y=\"-15.67\" font-family=\"Times,serif\" font-size=\"14.00\">&lt;0&gt;</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7efe6a305780> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"(1, 0, True, True, True)"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c = spot.acc_cond('t')\n",
"print(c)\n",
"t = spot.zielonka_tree(c)\n",
"display(t)\n",
"t.num_branches(), t.first_branch(), t.has_rabin_shape(), t.has_streett_shape(), t.has_parity_shape()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "interesting-seller",
"metadata": {},
"outputs": [],
"source": [
"a = spot.automaton(\"\"\"HOA: v1 name: \"(FGp0 & ((XFp0 & F!p1) | F(Gp1 &\n",
"XG!p0))) | G(F!p0 & (XFp0 | F!p1) & F(Gp1 | G!p0))\" States: 14 Start:\n",
"0 AP: 2 \"p1\" \"p0\" Acceptance: 6 (Fin(0) & Fin(1)) | ((Fin(4)|Fin(5)) &\n",
"(Inf(2)&Inf(3))) properties: trans-labels explicit-labels trans-acc\n",
"complete properties: deterministic --BODY-- State: 0 [!0] 1 [0] 2\n",
"State: 1 [!0&!1] 1 {0 1 2 3 5} [0&!1] 3 [!0&1] 4 [0&1] 5 State: 2\n",
"[0&!1] 2 {1} [!0&1] 4 [!0&!1] 6 [0&1] 7 State: 3 [0&!1] 3 {1 3} [!0&1]\n",
"4 [!0&!1] 6 {0 1 2 3 5} [0&1] 8 State: 4 [!0&!1] 4 {1 2 3 5} [!0&1] 4\n",
"{2 4 5} [0&!1] 5 {1 3} [0&1] 5 {4} State: 5 [!0&1] 4 {2 4 5} [0&!1] 5\n",
"{1 3} [0&1] 8 {2 4} [!0&!1] 9 {1 2 3 5} State: 6 [0&!1] 3 {1 3} [!0&1]\n",
"4 [0&1] 5 [!0&!1] 10 State: 7 [!0&1] 4 [0&!1] 7 {1 3} [!0&!1] 11 [0&1]\n",
"12 {0 4} State: 8 [!0&1] 4 {2 4 5} [0&1] 5 {4} [0&!1] 8 {1 3} [!0&!1]\n",
"11 {1 3 5} State: 9 [!0&1] 4 {2 4 5} [0&!1] 5 {1 3} [0&1] 5 {4}\n",
"[!0&!1] 11 {1 3 5} State: 10 [!0&1] 4 [0&1] 8 [!0&!1] 10 {0 1 2 3 5}\n",
"[0&!1] 13 {1 2 3} State: 11 [!0&1] 4 {2 4 5} [0&!1] 8 {1 2 3} [0&1] 8\n",
"{2 4} [!0&!1] 11 {1 2 3 5} State: 12 [!0&1] 4 [0&1] 7 {0 2 4} [!0&!1]\n",
"9 [0&!1] 12 {1 3} State: 13 [!0&1] 4 [0&1] 5 [!0&!1] 10 {0 1 3 5}\n",
"[0&!1] 13 {1 3} --END--\"\"\")"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "informative-mainland",
"metadata": {},
"outputs": [],
"source": [
"b = spot.zielonka_tree_transform(a)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "angry-comedy",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"33"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b.num_states()"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "contained-combat",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.equivalent_to(b)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "paperback-handle",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"356pt\" height=\"233pt\"\n",
" viewBox=\"0.00 0.00 356.00 233.30\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 229.3)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-229.3 352,-229.3 352,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"8\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\">(Fin(</text>\n",
"<text text-anchor=\"start\" x=\"35\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"51\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\">) &amp; (Fin(</text>\n",
"<text text-anchor=\"start\" x=\"99\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"115\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\">)|Fin(</text>\n",
"<text text-anchor=\"start\" x=\"146\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"<text text-anchor=\"start\" x=\"162\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\">)) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"211\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"227\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\">)&amp;Inf(</text>\n",
"<text text-anchor=\"start\" x=\"261\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"277\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\">))) | Inf(</text>\n",
"<text text-anchor=\"start\" x=\"320\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"336\" y=\"-211.1\" font-family=\"Lato\" font-size=\"14.00\">)</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"120.75\" cy=\"-44.3\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"120.75\" y=\"-40.6\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M65.9,-44.3C67.54,-44.3 81.9,-44.3 95.38,-44.3\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"102.69,-44.3 95.69,-47.45 99.19,-44.3 95.69,-44.3 95.69,-44.3 95.69,-44.3 99.19,-44.3 95.69,-41.15 102.69,-44.3 102.69,-44.3\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M117.51,-62.08C116.96,-71.62 118.04,-80.3 120.75,-80.3 122.74,-80.3 123.85,-75.62 124.08,-69.35\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"123.99,-62.08 127.23,-69.04 124.03,-65.58 124.08,-69.08 124.08,-69.08 124.08,-69.08 124.03,-65.58 120.93,-69.12 123.99,-62.08 123.99,-62.08\"/>\n",
"<text text-anchor=\"start\" x=\"94.25\" y=\"-98.1\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"104.75\" y=\"-84.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"120.75\" y=\"-84.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M115.69,-61.9C112.31,-82.43 114,-108.3 120.75,-108.3 126.74,-108.3 128.74,-87.96 126.76,-69.03\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"125.81,-61.9 129.86,-68.42 126.28,-65.37 126.74,-68.83 126.74,-68.83 126.74,-68.83 126.28,-65.37 123.62,-69.25 125.81,-61.9 125.81,-61.9\"/>\n",
"<text text-anchor=\"start\" x=\"92.25\" y=\"-126.1\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"96.75\" y=\"-112.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"112.75\" y=\"-112.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"128.75\" y=\"-112.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"256.75\" cy=\"-44.3\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"256.75\" y=\"-40.6\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M133.35,-57.44C139.59,-63.52 147.84,-70.09 156.75,-73.3 183.51,-82.95 193.99,-82.95 220.75,-73.3 227.29,-70.94 233.48,-66.77 238.78,-62.32\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"244.15,-57.44 241.08,-64.48 241.56,-59.79 238.97,-62.14 238.97,-62.14 238.97,-62.14 241.56,-59.79 236.85,-59.81 244.15,-57.44 244.15,-57.44\"/>\n",
"<text text-anchor=\"start\" x=\"162.25\" y=\"-84.1\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M138.82,-42.54C144.52,-42.04 150.9,-41.55 156.75,-41.3 185.17,-40.09 192.33,-40.09 220.75,-41.3 224.22,-41.45 227.88,-41.68 231.48,-41.95\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"238.68,-42.54 231.44,-45.11 235.19,-42.26 231.7,-41.97 231.7,-41.97 231.7,-41.97 235.19,-42.26 231.96,-38.83 238.68,-42.54 238.68,-42.54\"/>\n",
"<text text-anchor=\"start\" x=\"164.25\" y=\"-59.1\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"172.75\" y=\"-45.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"188.75\" y=\"-45.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>1&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M245.96,-29.56C239.78,-21.64 231.03,-12.64 220.75,-8.3 194.55,2.77 182.95,2.77 156.75,-8.3 148.88,-11.63 141.91,-17.68 136.3,-23.89\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"131.54,-29.56 133.63,-22.17 133.79,-26.88 136.04,-24.2 136.04,-24.2 136.04,-24.2 133.79,-26.88 138.45,-26.22 131.54,-29.56 131.54,-29.56\"/>\n",
"<text text-anchor=\"start\" x=\"160.25\" y=\"-26.1\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"156.75\" y=\"-12.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"172.75\" y=\"-12.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"188.75\" y=\"-12.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"204.75\" y=\"-12.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M252.68,-62.08C251.98,-71.62 253.34,-80.3 256.75,-80.3 259.25,-80.3 260.65,-75.62 260.94,-69.35\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"260.82,-62.08 264.09,-69.03 260.88,-65.58 260.94,-69.08 260.94,-69.08 260.94,-69.08 260.88,-65.58 257.79,-69.13 260.82,-62.08 260.82,-62.08\"/>\n",
"<text text-anchor=\"start\" x=\"230.25\" y=\"-99.1\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"248.75\" y=\"-84.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M250.58,-61.22C246.06,-82.45 248.12,-110.3 256.75,-110.3 264.47,-110.3 266.93,-88.02 264.13,-68.12\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"262.92,-61.22 267.23,-67.57 263.53,-64.67 264.13,-68.12 264.13,-68.12 264.13,-68.12 263.53,-64.67 261.03,-68.66 262.92,-61.22 262.92,-61.22\"/>\n",
"<text text-anchor=\"start\" x=\"230.25\" y=\"-128.1\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"240.75\" y=\"-114.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"256.75\" y=\"-114.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M249.23,-61.02C240.3,-91.2 242.8,-138.3 256.75,-138.3 269.66,-138.3 272.77,-97.93 266.07,-68\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"264.27,-61.02 269.07,-67.01 265.14,-64.41 266.02,-67.8 266.02,-67.8 266.02,-67.8 265.14,-64.41 262.97,-68.59 264.27,-61.02 264.27,-61.02\"/>\n",
"<text text-anchor=\"start\" x=\"232.25\" y=\"-156.1\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"232.75\" y=\"-142.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"248.75\" y=\"-142.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"264.75\" y=\"-142.1\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7efe6a34b960> >"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c = spot.automaton(\"\"\"\n",
"HOA: v1\n",
"States: 2\n",
"Start: 0\n",
"AP: 2 \"p1\" \"p0\"\n",
"Acceptance: 5 (Fin(0) & (Fin(3)|Fin(4)) & (Inf(1)&Inf(2))) | Inf(3)\n",
"properties: trans-labels explicit-labels trans-acc complete\n",
"properties: deterministic stutter-invariant\n",
"--BODY--\n",
"State: 0\n",
"[0&!1] 0 {2 3}\n",
"[!0&!1] 0 {2 3 4}\n",
"[!0&1] 1\n",
"[0&1] 1 {2 4}\n",
"State: 1\n",
"[!0&!1] 0 {0 2 3 4}\n",
"[!0&1] 1 {1}\n",
"[0&!1] 1 {2 3}\n",
"[0&1] 1 {1 2 4}\n",
"--END--\n",
"\"\"\"); c"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "tired-webcam",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"366pt\" height=\"238pt\"\n",
" viewBox=\"0.00 0.00 365.50 238.16\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 234.16)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-234.16 361.5,-234.16 361.5,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"34.25\" y=\"-215.96\" font-family=\"Lato\" font-size=\"14.00\">Inf(</text>\n",
"<text text-anchor=\"start\" x=\"55.25\" y=\"-215.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"71.25\" y=\"-215.96\" font-family=\"Lato\" font-size=\"14.00\">) | (Fin(</text>\n",
"<text text-anchor=\"start\" x=\"113.25\" y=\"-215.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"129.25\" y=\"-215.96\" font-family=\"Lato\" font-size=\"14.00\">) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"175.25\" y=\"-215.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"191.25\" y=\"-215.96\" font-family=\"Lato\" font-size=\"14.00\">) | (Fin(</text>\n",
"<text text-anchor=\"start\" x=\"233.25\" y=\"-215.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"249.25\" y=\"-215.96\" font-family=\"Lato\" font-size=\"14.00\">) &amp; Inf(</text>\n",
"<text text-anchor=\"start\" x=\"291.25\" y=\"-215.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"<text text-anchor=\"start\" x=\"307.25\" y=\"-215.96\" font-family=\"Lato\" font-size=\"14.00\">))))</text>\n",
"<text text-anchor=\"start\" x=\"121.75\" y=\"-201.96\" font-family=\"Lato\" font-size=\"14.00\">[parity min even 5]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-44.16\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-40.46\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.15,-44.16C2.79,-44.16 17.15,-44.16 30.63,-44.16\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.94,-44.16 30.94,-47.31 34.44,-44.16 30.94,-44.16 30.94,-44.16 30.94,-44.16 34.44,-44.16 30.94,-41.01 37.94,-44.16 37.94,-44.16\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M52.76,-61.94C52.21,-71.47 53.29,-80.16 56,-80.16 57.99,-80.16 59.1,-75.48 59.33,-69.21\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"59.24,-61.94 62.48,-68.9 59.28,-65.44 59.33,-68.94 59.33,-68.94 59.33,-68.94 59.28,-65.44 56.18,-68.98 59.24,-61.94 59.24,-61.94\"/>\n",
"<text text-anchor=\"start\" x=\"29.5\" y=\"-98.96\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"48\" y=\"-83.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M50.99,-61.74C47.55,-82.88 49.21,-110.16 56,-110.16 62.04,-110.16 64.03,-88.52 61.96,-68.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"61.01,-61.74 65.06,-68.26 61.47,-65.21 61.93,-68.68 61.93,-68.68 61.93,-68.68 61.47,-65.21 58.81,-69.09 61.01,-61.74 61.01,-61.74\"/>\n",
"<text text-anchor=\"start\" x=\"27.5\" y=\"-128.96\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"48\" y=\"-113.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"195.5\" cy=\"-71.16\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"195.5\" y=\"-67.46\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M62.13,-61.3C67.26,-75.07 76.64,-93.49 92,-102.16 114.06,-114.61 124.79,-109.62 149,-102.16 158.75,-99.15 168.29,-93.26 176.09,-87.41\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"181.69,-83 178.14,-89.81 178.94,-85.17 176.19,-87.33 176.19,-87.33 176.19,-87.33 178.94,-85.17 174.24,-84.86 181.69,-83 181.69,-83\"/>\n",
"<text text-anchor=\"start\" x=\"94\" y=\"-127.96\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"112.5\" y=\"-112.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M73.86,-47.47C98.09,-52.23 142.86,-61.02 170.52,-66.45\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"177.5,-67.82 170.03,-69.56 174.07,-67.15 170.63,-66.47 170.63,-66.47 170.63,-66.47 174.07,-67.15 171.24,-63.38 177.5,-67.82 177.5,-67.82\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-79.96\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"112.5\" y=\"-64.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>1&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M186.44,-55.56C178.77,-42.58 165.9,-25.02 149,-17.16 126.03,-6.48 115.98,-8.99 92,-17.16 85.84,-19.26 79.92,-22.93 74.76,-26.9\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"69.07,-31.63 72.44,-24.73 71.77,-29.39 74.46,-27.15 74.46,-27.15 74.46,-27.15 71.77,-29.39 76.47,-29.58 69.07,-31.63 69.07,-31.63\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-35.96\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"112.5\" y=\"-20.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M183.74,-85.2C179.35,-96.07 183.27,-107.16 195.5,-107.16 205.06,-107.16 209.54,-100.39 208.95,-92.25\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"207.26,-85.2 211.95,-91.27 208.07,-88.6 208.89,-92.01 208.89,-92.01 208.89,-92.01 208.07,-88.6 205.83,-92.74 207.26,-85.2 207.26,-85.2\"/>\n",
"<text text-anchor=\"start\" x=\"169\" y=\"-125.96\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"187.5\" y=\"-110.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"331\" cy=\"-71.16\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"331\" y=\"-67.46\" font-family=\"Lato\" font-size=\"14.00\">2</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>1&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M200.35,-88.7C205.8,-108.8 217.92,-140.82 242,-155.16 262.24,-167.21 275.4,-168.23 295,-155.16 314.55,-142.13 323.2,-115.88 327.01,-96.18\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"328.21,-89.25 330.12,-96.69 327.61,-92.7 327.02,-96.15 327.02,-96.15 327.02,-96.15 327.61,-92.7 323.91,-95.61 328.21,-89.25 328.21,-89.25\"/>\n",
"<text text-anchor=\"start\" x=\"242\" y=\"-182.96\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"260.5\" y=\"-167.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>1&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M209.31,-83C217.87,-90.07 229.76,-98.39 242,-102.16 264.51,-109.1 272.97,-110.51 295,-102.16 301.94,-99.53 308.4,-94.82 313.82,-89.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"318.88,-84.86 316.1,-92.02 316.39,-87.32 313.89,-89.78 313.89,-89.78 313.89,-89.78 316.39,-87.32 311.68,-87.53 318.88,-84.86 318.88,-84.86\"/>\n",
"<text text-anchor=\"start\" x=\"244\" y=\"-125.96\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"260.5\" y=\"-110.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;0 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>2&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M322.72,-54.68C316.89,-43.56 307.6,-29.6 295,-22.16 238.74,11.05 214.22,-8.94 149,-5.16 123.71,-3.69 115.13,5.16 92,-5.16 83.43,-8.98 76.09,-16.05 70.37,-23.14\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"65.96,-29.02 67.64,-21.53 68.06,-26.22 70.16,-23.42 70.16,-23.42 70.16,-23.42 68.06,-26.22 72.68,-25.31 65.96,-29.02 65.96,-29.02\"/>\n",
"<text text-anchor=\"start\" x=\"167\" y=\"-23.96\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"187.5\" y=\"-8.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>2&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M312.93,-69.4C307.23,-68.89 300.85,-68.41 295,-68.16 271.47,-67.15 265.54,-67.38 242,-68.16 235.14,-68.39 227.72,-68.8 220.89,-69.25\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"213.77,-69.75 220.53,-66.12 217.26,-69.51 220.75,-69.26 220.75,-69.26 220.75,-69.26 217.26,-69.51 220.97,-72.41 213.77,-69.75 213.77,-69.75\"/>\n",
"<text text-anchor=\"start\" x=\"242\" y=\"-86.96\" font-family=\"Lato\" font-size=\"14.00\">!p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"260.5\" y=\"-71.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>2&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M320.67,-56.01C314.54,-47.57 305.68,-37.84 295,-33.16 273.43,-23.7 264.14,-25.13 242,-33.16 230.99,-37.15 220.79,-45.1 212.84,-52.7\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"207.72,-57.85 210.42,-50.66 210.18,-55.37 212.65,-52.89 212.65,-52.89 212.65,-52.89 210.18,-55.37 214.89,-55.11 207.72,-57.85 207.72,-57.85\"/>\n",
"<text text-anchor=\"start\" x=\"244\" y=\"-51.96\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; p1</text>\n",
"<text text-anchor=\"start\" x=\"260.5\" y=\"-36.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>2&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M320.63,-85.95C317.25,-96.58 320.71,-107.16 331,-107.16 338.88,-107.16 342.75,-100.96 342.62,-93.28\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"341.37,-85.95 345.65,-92.32 341.96,-89.4 342.55,-92.85 342.55,-92.85 342.55,-92.85 341.96,-89.4 339.44,-93.38 341.37,-85.95 341.37,-85.95\"/>\n",
"<text text-anchor=\"start\" x=\"304.5\" y=\"-125.96\" font-family=\"Lato\" font-size=\"14.00\">p0 &amp; !p1</text>\n",
"<text text-anchor=\"start\" x=\"323\" y=\"-110.96\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7efe6a34b540> >"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d = spot.zielonka_tree_transform(c); d"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "funny-taylor",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c.equivalent_to(d)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "liable-update",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"194pt\" height=\"207pt\"\n",
" viewBox=\"0.00 0.00 194.00 206.51\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 202.51)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-202.51 190,-202.51 190,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"15\" y=\"-184.31\" font-family=\"Lato\" font-size=\"14.00\">Inf(</text>\n",
"<text text-anchor=\"start\" x=\"36\" y=\"-184.31\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"52\" y=\"-184.31\" font-family=\"Lato\" font-size=\"14.00\">) &amp; (Fin(</text>\n",
"<text text-anchor=\"start\" x=\"100\" y=\"-184.31\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"116\" y=\"-184.31\" font-family=\"Lato\" font-size=\"14.00\">)|Fin(</text>\n",
"<text text-anchor=\"start\" x=\"147\" y=\"-184.31\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"163\" y=\"-184.31\" font-family=\"Lato\" font-size=\"14.00\">))</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-63.51\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-59.81\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.15,-63.51C2.79,-63.51 17.15,-63.51 30.63,-63.51\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.94,-63.51 30.94,-66.66 34.44,-63.51 30.94,-63.51 30.94,-63.51 30.94,-63.51 34.44,-63.51 30.94,-60.36 37.94,-63.51 37.94,-63.51\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M52.76,-81.29C52.21,-90.82 53.29,-99.51 56,-99.51 57.99,-99.51 59.1,-94.83 59.33,-88.56\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"59.24,-81.29 62.48,-88.25 59.28,-84.79 59.33,-88.29 59.33,-88.29 59.33,-88.29 59.28,-84.79 56.18,-88.33 59.24,-81.29 59.24,-81.29\"/>\n",
"<text text-anchor=\"start\" x=\"36\" y=\"-118.31\" font-family=\"Lato\" font-size=\"14.00\">!a &amp; !b</text>\n",
"<text text-anchor=\"start\" x=\"48\" y=\"-103.31\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M50.99,-81.09C47.55,-102.23 49.21,-129.51 56,-129.51 62.04,-129.51 64.03,-107.87 61.96,-88.2\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"61.01,-81.09 65.06,-87.61 61.47,-84.56 61.93,-88.03 61.93,-88.03 61.93,-88.03 61.47,-84.56 58.81,-88.44 61.01,-81.09 61.01,-81.09\"/>\n",
"<text text-anchor=\"start\" x=\"38\" y=\"-147.31\" font-family=\"Lato\" font-size=\"14.00\">a &amp; !b</text>\n",
"<text text-anchor=\"start\" x=\"40\" y=\"-133.31\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"56\" y=\"-133.31\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"168\" cy=\"-63.51\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"168\" y=\"-59.81\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M64.12,-80.11C69.87,-91.22 79.13,-104.97 92,-111.51 107.85,-119.57 116.15,-119.57 132,-111.51 142.56,-106.14 150.69,-95.93 156.44,-86.3\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"159.88,-80.11 159.23,-87.76 158.18,-83.17 156.48,-86.23 156.48,-86.23 156.48,-86.23 158.18,-83.17 153.73,-84.7 159.88,-80.11 159.88,-80.11\"/>\n",
"<text text-anchor=\"start\" x=\"94\" y=\"-136.31\" font-family=\"Lato\" font-size=\"14.00\">!a &amp; b</text>\n",
"<text text-anchor=\"start\" x=\"104\" y=\"-121.31\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M74.19,-63.51C92.59,-63.51 121.95,-63.51 142.71,-63.51\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"149.93,-63.51 142.93,-66.66 146.43,-63.51 142.93,-63.51 142.93,-63.51 142.93,-63.51 146.43,-63.51 142.93,-60.36 149.93,-63.51 149.93,-63.51\"/>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-81.31\" font-family=\"Lato\" font-size=\"14.00\">a &amp; b</text>\n",
"<text text-anchor=\"start\" x=\"96\" y=\"-67.31\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"112\" y=\"-67.31\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>1&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M152.69,-53.64C146.6,-50.02 139.24,-46.35 132,-44.51 114.77,-40.13 109.23,-40.13 92,-44.51 87.14,-45.74 82.22,-47.81 77.67,-50.13\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"71.31,-53.64 75.91,-47.5 74.37,-51.95 77.44,-50.25 77.44,-50.25 77.44,-50.25 74.37,-51.95 78.96,-53.01 71.31,-53.64 71.31,-53.64\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-48.31\" font-family=\"Lato\" font-size=\"14.00\">!a &amp; !b</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>1&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M161.68,-46.39C156.48,-32.88 147.1,-14.96 132,-6.51 116.49,2.17 107.51,2.17 92,-6.51 79.26,-13.64 70.59,-27.51 65.07,-39.79\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"62.32,-46.39 62.1,-38.71 63.66,-43.16 65.01,-39.93 65.01,-39.93 65.01,-39.93 63.66,-43.16 67.92,-41.14 62.32,-46.39 62.32,-46.39\"/>\n",
"<text text-anchor=\"start\" x=\"94\" y=\"-25.31\" font-family=\"Lato\" font-size=\"14.00\">a &amp; !b</text>\n",
"<text text-anchor=\"start\" x=\"104\" y=\"-10.31\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M163,-80.92C162.07,-90.6 163.73,-99.51 168,-99.51 171.13,-99.51 172.86,-94.7 173.19,-88.32\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"173,-80.92 176.33,-87.83 173.09,-84.42 173.18,-87.92 173.18,-87.92 173.18,-87.92 173.09,-84.42 170.03,-88 173,-80.92 173,-80.92\"/>\n",
"<text text-anchor=\"start\" x=\"150\" y=\"-118.31\" font-family=\"Lato\" font-size=\"14.00\">!a &amp; b</text>\n",
"<text text-anchor=\"start\" x=\"160\" y=\"-103.31\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M160.46,-80.11C154.77,-101.37 157.28,-129.51 168,-129.51 177.59,-129.51 180.61,-107 177.06,-87.02\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"175.54,-80.11 180.12,-86.26 176.29,-83.52 177.05,-86.94 177.05,-86.94 177.05,-86.94 176.29,-83.52 173.97,-87.62 175.54,-80.11 175.54,-80.11\"/>\n",
"<text text-anchor=\"start\" x=\"152\" y=\"-147.31\" font-family=\"Lato\" font-size=\"14.00\">a &amp; b</text>\n",
"<text text-anchor=\"start\" x=\"152\" y=\"-133.31\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"168\" y=\"-133.31\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7efe6a301ed0> >"
]
},
"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.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"306pt\" height=\"283pt\"\n",
" viewBox=\"0.00 0.00 306.00 283.28\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 279.28)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-279.28 302,-279.28 302,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"34.5\" y=\"-261.08\" font-family=\"Lato\" font-size=\"14.00\">Fin(</text>\n",
"<text text-anchor=\"start\" x=\"57.5\" y=\"-261.08\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"73.5\" y=\"-261.08\" font-family=\"Lato\" font-size=\"14.00\">) &amp; (Inf(</text>\n",
"<text text-anchor=\"start\" x=\"119.5\" y=\"-261.08\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"<text text-anchor=\"start\" x=\"135.5\" y=\"-261.08\" font-family=\"Lato\" font-size=\"14.00\">) | (Fin(</text>\n",
"<text text-anchor=\"start\" x=\"177.5\" y=\"-261.08\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"<text text-anchor=\"start\" x=\"193.5\" y=\"-261.08\" font-family=\"Lato\" font-size=\"14.00\">) &amp; Inf(</text>\n",
"<text text-anchor=\"start\" x=\"235.5\" y=\"-261.08\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"<text text-anchor=\"start\" x=\"251.5\" y=\"-261.08\" font-family=\"Lato\" font-size=\"14.00\">)))</text>\n",
"<text text-anchor=\"start\" x=\"95\" y=\"-247.08\" font-family=\"Lato\" font-size=\"14.00\">[parity min odd 4]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>0</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-48.28\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-44.58\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.15,-48.28C2.79,-48.28 17.15,-48.28 30.63,-48.28\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.94,-48.28 30.94,-51.43 34.44,-48.28 30.94,-48.28 30.94,-48.28 30.94,-48.28 34.44,-48.28 30.94,-45.13 37.94,-48.28 37.94,-48.28\"/>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M52.76,-66.07C52.21,-75.6 53.29,-84.28 56,-84.28 57.99,-84.28 59.1,-79.6 59.33,-73.34\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"59.24,-66.07 62.48,-73.02 59.28,-69.57 59.33,-73.07 59.33,-73.07 59.33,-73.07 59.28,-69.57 56.18,-73.11 59.24,-66.07 59.24,-66.07\"/>\n",
"<text text-anchor=\"start\" x=\"36\" y=\"-103.08\" font-family=\"Lato\" font-size=\"14.00\">!a &amp; !b</text>\n",
"<text text-anchor=\"start\" x=\"48\" y=\"-88.08\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;0 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>0&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M50.99,-65.86C47.55,-87 49.21,-114.28 56,-114.28 62.04,-114.28 64.03,-92.64 61.96,-72.97\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"61.01,-65.86 65.06,-72.38 61.47,-69.33 61.93,-72.8 61.93,-72.8 61.93,-72.8 61.47,-69.33 58.81,-73.22 61.01,-65.86 61.01,-65.86\"/>\n",
"<text text-anchor=\"start\" x=\"38\" y=\"-133.08\" font-family=\"Lato\" font-size=\"14.00\">a &amp; !b</text>\n",
"<text text-anchor=\"start\" x=\"48\" y=\"-118.08\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>1</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"166\" cy=\"-118.28\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"166\" y=\"-114.58\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M65.05,-64.23C71.13,-74.75 80.39,-88.05 92,-96.28 106.48,-106.55 125.81,-112.09 140.94,-115.05\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"148,-116.3 140.55,-118.18 144.55,-115.69 141.1,-115.08 141.1,-115.08 141.1,-115.08 144.55,-115.69 141.66,-111.98 148,-116.3 148,-116.3\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-130.08\" font-family=\"Lato\" font-size=\"14.00\">!a &amp; b</text>\n",
"<text text-anchor=\"start\" x=\"102\" y=\"-115.08\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>0&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M74.18,-48.05C89.5,-48.63 111.93,-51.51 128,-62.28 140.08,-70.39 149.18,-83.91 155.33,-95.64\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"158.45,-101.92 152.52,-97.05 156.89,-98.79 155.34,-95.65 155.34,-95.65 155.34,-95.65 156.89,-98.79 158.16,-94.25 158.45,-101.92 158.45,-101.92\"/>\n",
"<text text-anchor=\"start\" x=\"94\" y=\"-81.08\" font-family=\"Lato\" font-size=\"14.00\">a &amp; b</text>\n",
"<text text-anchor=\"start\" x=\"102\" y=\"-66.08\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M161,-135.69C160.07,-145.37 161.73,-154.28 166,-154.28 169.13,-154.28 170.86,-149.48 171.19,-143.09\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"171,-135.69 174.33,-142.61 171.09,-139.19 171.18,-142.69 171.18,-142.69 171.18,-142.69 171.09,-139.19 168.03,-142.77 171,-135.69 171,-135.69\"/>\n",
"<text text-anchor=\"start\" x=\"148\" y=\"-173.08\" font-family=\"Lato\" font-size=\"14.00\">!a &amp; b</text>\n",
"<text text-anchor=\"start\" x=\"158\" y=\"-158.08\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M158.46,-134.88C152.77,-156.15 155.28,-184.28 166,-184.28 175.59,-184.28 178.61,-161.77 175.06,-141.8\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"173.54,-134.88 178.12,-141.04 174.29,-138.3 175.05,-141.72 175.05,-141.72 175.05,-141.72 174.29,-138.3 171.97,-142.39 173.54,-134.88 173.54,-134.88\"/>\n",
"<text text-anchor=\"start\" x=\"150\" y=\"-203.08\" font-family=\"Lato\" font-size=\"14.00\">a &amp; b</text>\n",
"<text text-anchor=\"start\" x=\"158\" y=\"-188.08\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"280\" cy=\"-91.28\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"280\" y=\"-87.58\" font-family=\"Lato\" font-size=\"14.00\">2</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>1&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M169.16,-136.05C172.65,-156.05 181.58,-187.66 204,-202.28 218.89,-212 229.66,-212.8 244,-202.28 270.66,-182.74 277.54,-142.83 279.03,-116.58\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"279.32,-109.56 282.18,-116.69 279.18,-113.06 279.03,-116.56 279.03,-116.56 279.03,-116.56 279.18,-113.06 275.89,-116.43 279.32,-109.56 279.32,-109.56\"/>\n",
"<text text-anchor=\"start\" x=\"204\" y=\"-228.08\" font-family=\"Lato\" font-size=\"14.00\">!a &amp; !b</text>\n",
"<text text-anchor=\"start\" x=\"216\" y=\"-213.08\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>1&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M178.58,-131.68C185.25,-138.35 194.23,-145.73 204,-149.28 220.71,-155.36 228.52,-158.02 244,-149.28 256.96,-141.97 265.66,-127.71 271.15,-115.16\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"273.87,-108.42 274.17,-116.09 272.56,-111.67 271.25,-114.91 271.25,-114.91 271.25,-114.91 272.56,-111.67 268.33,-113.73 273.87,-108.42 273.87,-108.42\"/>\n",
"<text text-anchor=\"start\" x=\"206\" y=\"-173.08\" font-family=\"Lato\" font-size=\"14.00\">a &amp; !b</text>\n",
"<text text-anchor=\"start\" x=\"216\" y=\"-158.08\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;0 -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>2&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M269.08,-76.84C262.85,-69.02 254.1,-60.02 244,-55.28 190.31,-30.11 118.12,-37.27 81.11,-43.46\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"73.76,-44.75 80.11,-40.44 77.21,-44.15 80.65,-43.54 80.65,-43.54 80.65,-43.54 77.21,-44.15 81.2,-46.64 73.76,-44.75 73.76,-44.75\"/>\n",
"<text text-anchor=\"start\" x=\"146\" y=\"-58.08\" font-family=\"Lato\" font-size=\"14.00\">!a &amp; !b</text>\n",
"<text text-anchor=\"start\" x=\"158\" y=\"-43.08\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;0 -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>2&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M271.08,-75.57C264.83,-64.25 255.29,-49.13 244,-38.28 222.28,-17.43 215,-11.36 186,-3.28 146.61,7.68 101.77,-16.53 76.69,-33.51\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"70.75,-37.65 74.69,-31.06 73.62,-35.65 76.49,-33.65 76.49,-33.65 76.49,-33.65 73.62,-35.65 78.29,-36.23 70.75,-37.65 70.75,-37.65\"/>\n",
"<text text-anchor=\"start\" x=\"148\" y=\"-22.08\" font-family=\"Lato\" font-size=\"14.00\">a &amp; !b</text>\n",
"<text text-anchor=\"start\" x=\"158\" y=\"-7.08\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>2&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M262.2,-95.33C243.26,-99.9 212.33,-107.36 190.89,-112.53\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"184.01,-114.18 190.08,-109.48 187.41,-113.36 190.82,-112.54 190.82,-112.54 190.82,-112.54 187.41,-113.36 191.55,-115.61 184.01,-114.18 184.01,-114.18\"/>\n",
"<text text-anchor=\"start\" x=\"206\" y=\"-127.08\" font-family=\"Lato\" font-size=\"14.00\">!a &amp; b</text>\n",
"<text text-anchor=\"start\" x=\"216\" y=\"-112.08\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>2&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M266.53,-78.94C260.3,-73.64 252.34,-68.04 244,-65.28 227.12,-59.7 219.76,-57.06 204,-65.28 191.77,-71.66 182.76,-84.13 176.69,-95.37\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"173.46,-101.79 173.79,-94.12 175.03,-98.66 176.61,-95.54 176.61,-95.54 176.61,-95.54 175.03,-98.66 179.42,-96.95 173.46,-101.79 173.46,-101.79\"/>\n",
"<text text-anchor=\"start\" x=\"208\" y=\"-84.08\" font-family=\"Lato\" font-size=\"14.00\">a &amp; b</text>\n",
"<text text-anchor=\"start\" x=\"216\" y=\"-69.08\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7efe6a301720> >"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"e = spot.translate('!(GFa -> (GFb & GF(!b & !Xb)))', 'gen', 'det')\n",
"f = spot.zielonka_tree_transform(e)\n",
"display(e,f)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "complimentary-person",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"e.equivalent_to(f)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "determined-bankruptcy",
"metadata": {},
"outputs": [],
"source": []
}
],
"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.9.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}