spot/tests/python/gen.ipynb
Alexandre Duret-Lutz e7df182a30 gen: rename KS_COBUCHI to KS_NCA for consistency
* spot/gen/automata.cc, spot/gen/automata.hh, bin/genaut.cc: Rename
the enum, function, and command-line option.
* tests/core/genaut.test, tests/python/gen.ipynb, tests/python/gen.py:
Adjust test cases.
* doc/org/genaut.org: Adjust doc.
2017-09-03 15:47:27 +02:00

919 lines
59 KiB
Text

{
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.4"
},
"name": ""
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Formulas & Automata generators\n",
"\n",
"The `spot.gen` package contains the functions used to generate the patterns produced by [`genltl`](https://spot.lrde.epita.fr/genltl.html) and [`genaut`](https://spot.lrde.epita.fr/genaut.html)."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import spot\n",
"import spot.gen as sg\n",
"spot.setup()\n",
"from IPython.display import display"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## LTL patterns\n",
"\n",
"Generation of LTL formulas is done via the `ltl_pattern()` function. This takes two arguments: a pattern id, and a pattern size (or index if the id refers to a list)."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"sg.ltl_pattern(sg.LTL_AND_GF, 3)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"latex": [
"$\\mathsf{G} \\mathsf{F} p_{1} \\land \\mathsf{G} \\mathsf{F} p_{2} \\land \\mathsf{G} \\mathsf{F} p_{3}$"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 2,
"text": [
"GFp1 & GFp2 & GFp3"
]
}
],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"sg.ltl_pattern(sg.LTL_CCJ_BETA_PRIME, 4)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"latex": [
"$\\mathsf{F} (p \\land \\mathsf{X} p \\land \\mathsf{X} \\mathsf{X} p \\land \\mathsf{X} \\mathsf{X} \\mathsf{X} p) \\land \\mathsf{F} (q \\land \\mathsf{X} q \\land \\mathsf{X} \\mathsf{X} q \\land \\mathsf{X} \\mathsf{X} \\mathsf{X} q)$"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 3,
"text": [
"F(p & Xp & XXp & XXXp) & F(q & Xq & XXq & XXXq)"
]
}
],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To see the list of supported patterns, the easiest way is to look at the `--help` output of `genltl`. The above pattern for instance is attached to option `--ccj-beta-prime`. The name of the pattern identifier is the same using capital letters, underscores, and an `LTL_` prefix. If a pattern has multiple aliased options in `genltl`, the first one used for the identifier (e.g., `genltl` accept both `--dac-patterns` and `--spec-patterns` as synonyms to denote the patterns of `spot.gen.LTL_DAC_PATTERNS`).\n",
"\n",
"Multiple patterns can be generated using the `ltl_patterns()` function. It's arguments should be either can be:\n",
" - pairs of the form `(id, n)`: in this case the pattern `id` with size/index `n` is returned,\n",
" - triplets of the form `(id, min, max)`: in this case the patterns are output for all `n` between `min` and `max` included,\n",
" - an integer `id`: then this is equivalent to `(id, 1, 10)` if the pattern has now upper bound, or `(id, 1, upper)` if the patter `id` has an upper bound `upper`. This is mostly used when the pattern id correspond to a hard-coded list of formulas.\n",
"\n",
"Here is an example showing these three types of arguments:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"for f in sg.ltl_patterns((sg.LTL_GH_R, 3), (sg.LTL_AND_FG, 1, 3), sg.LTL_EH_PATTERNS):\n",
" display(f)"
],
"language": "python",
"metadata": {
"scrolled": false
},
"outputs": [
{
"latex": [
"$(\\mathsf{G} \\mathsf{F} p_{1} \\lor \\mathsf{F} \\mathsf{G} p_{2}) \\land (\\mathsf{G} \\mathsf{F} p_{2} \\lor \\mathsf{F} \\mathsf{G} p_{3}) \\land (\\mathsf{G} \\mathsf{F} p_{3} \\lor \\mathsf{F} \\mathsf{G} p_{4})$"
],
"metadata": {},
"output_type": "display_data",
"text": [
"(GFp1 | FGp2) & (GFp2 | FGp3) & (GFp3 | FGp4)"
]
},
{
"latex": [
"$\\mathsf{F} \\mathsf{G} p_{1}$"
],
"metadata": {},
"output_type": "display_data",
"text": [
"FGp1"
]
},
{
"latex": [
"$\\mathsf{F} \\mathsf{G} p_{1} \\land \\mathsf{F} \\mathsf{G} p_{2}$"
],
"metadata": {},
"output_type": "display_data",
"text": [
"FGp1 & FGp2"
]
},
{
"latex": [
"$\\mathsf{F} \\mathsf{G} p_{1} \\land \\mathsf{F} \\mathsf{G} p_{2} \\land \\mathsf{F} \\mathsf{G} p_{3}$"
],
"metadata": {},
"output_type": "display_data",
"text": [
"FGp1 & FGp2 & FGp3"
]
},
{
"latex": [
"$p_{0} \\mathbin{\\mathsf{U}} (p_{1} \\land \\mathsf{G} p_{2})$"
],
"metadata": {},
"output_type": "display_data",
"text": [
"p0 U (p1 & Gp2)"
]
},
{
"latex": [
"$p_{0} \\mathbin{\\mathsf{U}} (p_{1} \\land \\mathsf{X} (p_{2} \\mathbin{\\mathsf{U}} p_{3}))$"
],
"metadata": {},
"output_type": "display_data",
"text": [
"p0 U (p1 & X(p2 U p3))"
]
},
{
"latex": [
"$p_{0} \\mathbin{\\mathsf{U}} (p_{1} \\land \\mathsf{X} (p_{2} \\land \\mathsf{F} (p_{3} \\land \\mathsf{X} \\mathsf{F} (p_{4} \\land \\mathsf{X} \\mathsf{F} (p_{5} \\land \\mathsf{X} \\mathsf{F} p_{6})))))$"
],
"metadata": {},
"output_type": "display_data",
"text": [
"p0 U (p1 & X(p2 & F(p3 & XF(p4 & XF(p5 & XFp6)))))"
]
},
{
"latex": [
"$\\mathsf{F} (p_{0} \\land \\mathsf{X} \\mathsf{G} p_{1})$"
],
"metadata": {},
"output_type": "display_data",
"text": [
"F(p0 & XGp1)"
]
},
{
"latex": [
"$\\mathsf{F} (p_{0} \\land \\mathsf{X} (p_{1} \\land \\mathsf{X} \\mathsf{F} p_{2}))$"
],
"metadata": {},
"output_type": "display_data",
"text": [
"F(p0 & X(p1 & XFp2))"
]
},
{
"latex": [
"$\\mathsf{F} (p_{0} \\land \\mathsf{X} (p_{1} \\mathbin{\\mathsf{U}} p_{2}))$"
],
"metadata": {},
"output_type": "display_data",
"text": [
"F(p0 & X(p1 U p2))"
]
},
{
"latex": [
"$\\mathsf{G} \\mathsf{F} p_{0} \\lor \\mathsf{F} \\mathsf{G} p_{1}$"
],
"metadata": {},
"output_type": "display_data",
"text": [
"GFp0 | FGp1"
]
},
{
"latex": [
"$\\mathsf{G} (p_{0} \\rightarrow (p_{1} \\mathbin{\\mathsf{U}} p_{2}))$"
],
"metadata": {},
"output_type": "display_data",
"text": [
"G(p0 -> (p1 U p2))"
]
},
{
"latex": [
"$\\mathsf{G} (p_{0} \\land \\mathsf{X} \\mathsf{F} (p_{1} \\land \\mathsf{X} \\mathsf{F} (p_{2} \\land \\mathsf{X} \\mathsf{F} p_{3})))$"
],
"metadata": {},
"output_type": "display_data",
"text": [
"G(p0 & XF(p1 & XF(p2 & XFp3)))"
]
},
{
"latex": [
"$\\mathsf{G} \\mathsf{F} p_{1} \\land \\mathsf{G} \\mathsf{F} p_{2} \\land \\mathsf{G} \\mathsf{F} p_{3} \\land \\mathsf{G} \\mathsf{F} p_{0} \\land \\mathsf{G} \\mathsf{F} p_{4}$"
],
"metadata": {},
"output_type": "display_data",
"text": [
"GFp1 & GFp2 & GFp3 & GFp0 & GFp4"
]
},
{
"latex": [
"$(p_{0} \\mathbin{\\mathsf{U}} (p_{1} \\mathbin{\\mathsf{U}} p_{2})) \\lor (p_{1} \\mathbin{\\mathsf{U}} (p_{2} \\mathbin{\\mathsf{U}} p_{0})) \\lor (p_{2} \\mathbin{\\mathsf{U}} (p_{0} \\mathbin{\\mathsf{U}} p_{1}))$"
],
"metadata": {},
"output_type": "display_data",
"text": [
"(p0 U (p1 U p2)) | (p1 U (p2 U p0)) | (p2 U (p0 U p1))"
]
},
{
"latex": [
"$\\mathsf{G} (p_{0} \\rightarrow (p_{1} \\mathbin{\\mathsf{U}} (\\mathsf{G} p_{2} \\lor \\mathsf{G} p_{3})))$"
],
"metadata": {},
"output_type": "display_data",
"text": [
"G(p0 -> (p1 U (Gp2 | Gp3)))"
]
}
],
"prompt_number": 4
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Automata patterns\n",
"\n",
"We currently have only a couple of generators of automata:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"display(sg.aut_pattern(sg.AUT_KS_NCA, 3).show('.a'),\n",
" sg.aut_pattern(sg.AUT_L_DSA, 3).show('.a'),\n",
" sg.aut_pattern(sg.AUT_L_NBA, 3).show('.a'))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"svg": [
"<svg height=\"311pt\" viewBox=\"0.00 0.00 734.00 310.64\" width=\"734pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(0.906173 0.906173) rotate(0) translate(4 338.8)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-338.8 806,-338.8 806,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"368.5\" y=\"-304.6\">[co-B\u00fcchi]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\"><title>0</title>\n",
"<ellipse cx=\"60\" cy=\"-127\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<ellipse cx=\"60\" cy=\"-127\" fill=\"none\" rx=\"22\" ry=\"22\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"60\" y=\"-123.3\">0</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;0</title>\n",
"<path d=\"M1.16638,-127C2.84121,-127 16.884,-127 30.7112,-127\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.8555,-127 30.8556,-130.15 34.3555,-127 30.8555,-127 30.8555,-127 30.8555,-127 34.3555,-127 30.8555,-123.85 37.8555,-127 37.8555,-127\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node3\"><title>1</title>\n",
"<ellipse cx=\"177\" cy=\"-244\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"177\" y=\"-240.3\">1</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;1</title>\n",
"<path d=\"M64.3012,-148.616C68.7209,-170.194 78.6392,-202.826 100,-222 114.183,-234.731 135.317,-240.125 151.701,-242.394\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"158.853,-243.233 151.534,-245.546 155.377,-242.825 151.901,-242.418 151.901,-242.418 151.901,-242.418 155.377,-242.825 152.267,-239.289 158.853,-243.233 158.853,-243.233\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"120.5\" y=\"-243.8\">1</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node4\"><title>2</title>\n",
"<ellipse cx=\"348\" cy=\"-187\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"348\" y=\"-183.3\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>0-&gt;2</title>\n",
"<path d=\"M80.6443,-134.746C86.778,-136.976 93.6116,-139.271 100,-141 180.398,-162.766 278.283,-177.654 322.836,-183.815\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"330.019,-184.797 322.657,-186.97 326.551,-184.323 323.083,-183.849 323.083,-183.849 323.083,-183.849 326.551,-184.323 323.509,-180.728 330.019,-184.797 330.019,-184.797\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"177\" y=\"-165.8\">1</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g class=\"node\" id=\"node5\"><title>3</title>\n",
"<ellipse cx=\"457\" cy=\"-135\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"457\" y=\"-131.3\">3</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>0-&gt;3</title>\n",
"<path d=\"M82.2369,-127.43C149.802,-128.799 359.56,-133.047 431.496,-134.504\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"438.797,-134.652 431.735,-137.659 435.298,-134.581 431.799,-134.51 431.799,-134.51 431.799,-134.51 435.298,-134.581 431.862,-131.36 438.797,-134.652 438.797,-134.652\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"262.5\" y=\"-135.8\">1</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g class=\"node\" id=\"node6\"><title>4</title>\n",
"<ellipse cx=\"566\" cy=\"-89\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"566\" y=\"-85.3\">4</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>0-&gt;4</title>\n",
"<path d=\"M79.5054,-116.817C101.729,-105.561 140.464,-89 176,-89 176,-89 176,-89 458,-89 486.415,-89 519.075,-89 540.762,-89\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"547.951,-89 540.951,-92.1501 544.451,-89 540.951,-89.0001 540.951,-89.0001 540.951,-89.0001 544.451,-89 540.951,-85.8501 547.951,-89 547.951,-89\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"348\" y=\"-92.8\">1</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g class=\"node\" id=\"node7\"><title>5</title>\n",
"<ellipse cx=\"675\" cy=\"-64\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"675\" y=\"-60.3\">5</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>0-&gt;5</title>\n",
"<path d=\"M73.6216,-109.186C92.7218,-84.5283 131.496,-43 176,-43 176,-43 176,-43 567,-43 596.254,-43 629.179,-50.6519 650.683,-56.7178\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"657.517,-58.7008 649.916,-59.775 654.155,-57.7253 650.794,-56.7498 650.794,-56.7498 650.794,-56.7498 654.155,-57.7253 651.672,-53.7247 657.517,-58.7008 657.517,-58.7008\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"402.5\" y=\"-46.8\">1</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g class=\"node\" id=\"node8\"><title>6</title>\n",
"<ellipse cx=\"784\" cy=\"-64\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"784\" y=\"-60.3\">6</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge7\"><title>0-&gt;6</title>\n",
"<path d=\"M67.626,-106.353C73.8972,-89.2423 84.6482,-65.0504 100,-48 126.732,-18.3106 136.049,-0 176,-0 176,-0 176,-0 676,-0 712.01,-0 746.404,-27.0268 766.075,-45.9541\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"771.222,-51.0486 764.031,-48.3631 768.735,-48.5865 766.247,-46.1243 766.247,-46.1243 766.247,-46.1243 768.735,-48.5865 768.463,-43.8855 771.222,-51.0486 771.222,-51.0486\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"457\" y=\"-3.8\">1</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge8\"><title>1-&gt;0</title>\n",
"<path d=\"M165.954,-229.325C159.567,-220.812 150.692,-210.354 141,-203 125,-190.86 115.33,-196.974 100,-184 89.7476,-175.323 81.0004,-163.327 74.404,-152.576\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"70.7736,-146.426 77.0445,-150.853 72.5527,-149.44 74.3317,-152.454 74.3317,-152.454 74.3317,-152.454 72.5527,-149.44 71.619,-154.055 70.7736,-146.426 70.7736,-146.426\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"100\" y=\"-206.8\">!a &amp; !b</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge9\"><title>1-&gt;1</title>\n",
"<path d=\"M167.425,-259.541C164.73,-269.909 167.922,-280 177,-280 183.95,-280 187.45,-274.085 187.499,-266.659\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"186.575,-259.541 190.6,-266.077 187.026,-263.012 187.477,-266.483 187.477,-266.483 187.477,-266.483 187.026,-263.012 184.353,-266.889 186.575,-259.541 186.575,-259.541\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"160\" y=\"-283.8\">a &amp; b</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge10\"><title>1-&gt;2</title>\n",
"<path d=\"M187.973,-229.425C194.214,-221.483 202.964,-212.233 213,-207 248.036,-188.73 294.791,-185.826 322.799,-185.988\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"329.836,-186.096 322.789,-189.138 326.337,-186.042 322.837,-185.989 322.837,-185.989 322.837,-185.989 326.337,-186.042 322.886,-182.839 329.836,-186.096 329.836,-186.096\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"213\" y=\"-210.8\">(!a &amp; b) | (a &amp; !b)</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge11\"><title>2-&gt;1</title>\n",
"<path d=\"M336.543,-201.086C330.263,-208.501 321.634,-217.057 312,-222 276.764,-240.079 230.071,-243.904 202.13,-244.398\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"195.11,-244.458 202.083,-241.248 198.61,-244.428 202.11,-244.398 202.11,-244.398 202.11,-244.398 198.61,-244.428 202.137,-247.548 195.11,-244.458 195.11,-244.458\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"244\" y=\"-246.8\">!a &amp; b</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge12\"><title>2-&gt;2</title>\n",
"<path d=\"M338.767,-202.541C336.169,-212.909 339.246,-223 348,-223 354.702,-223 358.077,-217.085 358.124,-209.659\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"357.233,-202.541 361.229,-209.095 357.668,-206.014 358.103,-209.487 358.103,-209.487 358.103,-209.487 357.668,-206.014 354.977,-209.879 357.233,-202.541 357.233,-202.541\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"298.5\" y=\"-226.8\">(!a &amp; !b) | (a &amp; b)</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge13\"><title>2-&gt;3</title>\n",
"<path d=\"M364.788,-179.327C383.148,-170.405 413.562,-155.624 434.175,-145.607\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"440.495,-142.535 435.576,-148.428 437.347,-144.065 434.199,-145.595 434.199,-145.595 434.199,-145.595 437.347,-144.065 432.822,-142.762 440.495,-142.535 440.495,-142.535\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"384\" y=\"-171.8\">a &amp; !b</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge14\"><title>3-&gt;3</title>\n",
"<path d=\"M447.767,-150.541C445.169,-160.909 448.246,-171 457,-171 463.702,-171 467.077,-165.085 467.124,-157.659\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"466.233,-150.541 470.229,-157.095 466.668,-154.014 467.103,-157.487 467.103,-157.487 467.103,-157.487 466.668,-154.014 463.977,-157.879 466.233,-150.541 466.233,-150.541\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"441.5\" y=\"-174.8\">!a | b</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge15\"><title>3-&gt;4</title>\n",
"<path d=\"M473.788,-128.213C491.964,-120.399 521.954,-107.506 542.552,-98.6504\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"549.147,-95.8153 543.96,-101.474 545.932,-97.1977 542.716,-98.5801 542.716,-98.5801 542.716,-98.5801 545.932,-97.1977 541.472,-95.6861 549.147,-95.8153 549.147,-95.8153\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"493\" y=\"-121.8\">a &amp; !b</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge16\"><title>4-&gt;4</title>\n",
"<path d=\"M556.767,-104.541C554.169,-114.909 557.246,-125 566,-125 572.702,-125 576.077,-119.085 576.124,-111.659\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"575.233,-104.541 579.229,-111.095 575.668,-108.014 576.103,-111.487 576.103,-111.487 576.103,-111.487 575.668,-108.014 572.977,-111.879 575.233,-104.541 575.233,-104.541\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"550.5\" y=\"-128.8\">!a | b</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge17\"><title>4-&gt;5</title>\n",
"<path d=\"M583.719,-85.0938C601.622,-80.9108 630.176,-74.2394 650.371,-69.5207\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"657.399,-67.8788 651.299,-72.5389 653.99,-68.6752 650.582,-69.4715 650.582,-69.4715 650.582,-69.4715 653.99,-68.6752 649.866,-66.4041 657.399,-67.8788 657.399,-67.8788\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"602\" y=\"-83.8\">a &amp; !b</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge18\"><title>5-&gt;5</title>\n",
"<path d=\"M665.767,-79.5414C663.169,-89.9087 666.246,-100 675,-100 681.702,-100 685.077,-94.0847 685.124,-86.6591\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"684.233,-79.5414 688.229,-86.0955 684.668,-83.0143 685.103,-86.4871 685.103,-86.4871 685.103,-86.4871 684.668,-83.0143 681.977,-86.8788 684.233,-79.5414 684.233,-79.5414\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"659.5\" y=\"-103.8\">!a | b</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge19\"><title>5-&gt;6</title>\n",
"<path d=\"M693.191,-64C710.897,-64 738.648,-64 758.616,-64\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"765.851,-64 758.851,-67.1501 762.351,-64 758.851,-64.0001 758.851,-64.0001 758.851,-64.0001 762.351,-64 758.851,-60.8501 765.851,-64 765.851,-64\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"711\" y=\"-67.8\">a &amp; !b</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge20\"><title>6-&gt;1</title>\n",
"<path d=\"M782.177,-82.2688C778.801,-133.36 761.723,-274 676,-274 347,-274 347,-274 347,-274 287.12,-274 270.767,-275.766 213,-260 208.601,-258.799 204.06,-257.102 199.765,-255.257\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"193.275,-252.289 200.951,-252.336 196.458,-253.745 199.64,-255.2 199.64,-255.2 199.64,-255.2 196.458,-253.745 198.33,-258.065 193.275,-252.289 193.275,-252.289\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"493\" y=\"-277.8\">a &amp; !b</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge21\"><title>6-&gt;6</title>\n",
"<path d=\"M774.767,-79.5414C772.169,-89.9087 775.246,-100 784,-100 790.702,-100 794.077,-94.0847 794.124,-86.6591\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"793.233,-79.5414 797.229,-86.0955 793.668,-83.0143 794.103,-86.4871 794.103,-86.4871 794.103,-86.4871 793.668,-83.0143 790.977,-86.8788 793.233,-79.5414 793.233,-79.5414\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"768.5\" y=\"-103.8\">!a | b</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
},
{
"metadata": {},
"output_type": "display_data",
"svg": [
"<svg height=\"268pt\" viewBox=\"0.00 0.00 734.00 268.19\" width=\"734pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(0.817976 0.817976) rotate(0) translate(4 323.87)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-323.87 893.337,-323.87 893.337,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"269.168\" y=\"-305.67\">(Fin(</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"297.168\" y=\"-305.67\">\u24ff</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"313.168\" y=\"-305.67\">) | Inf(</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"350.168\" y=\"-305.67\">\u2776</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"366.168\" y=\"-305.67\">)) &amp; (Fin(</text>\n",
"<text fill=\"#ff7f00\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"420.168\" y=\"-305.67\">\u2777</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"436.168\" y=\"-305.67\">) | Inf(</text>\n",
"<text fill=\"#6a3d9a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"473.168\" y=\"-305.67\">\u2778</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"489.168\" y=\"-305.67\">)) &amp; (Fin(</text>\n",
"<text fill=\"#33a02c\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"543.168\" y=\"-305.67\">\u2779</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"559.168\" y=\"-305.67\">) | Inf(</text>\n",
"<text fill=\"#e31a1c\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"596.168\" y=\"-305.67\">\u277a</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"612.168\" y=\"-305.67\">))</text>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"412.668\" y=\"-291.67\">[Streett 3]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node2\"><title>0</title>\n",
"<ellipse cx=\"64.8701\" cy=\"-218.87\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"60.3701\" y=\"-222.67\">0</text>\n",
"<text fill=\"#1f78b4\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"56.8701\" y=\"-207.67\">\u24ff</text>\n",
"</g>\n",
"<!-- I&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;0</title>\n",
"<path d=\"M1.04557,-218.87C1.94668,-218.87 16.0699,-218.87 30.6965,-218.87\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.8616,-218.87 30.8617,-222.02 34.3616,-218.87 30.8616,-218.87 30.8616,-218.87 30.8616,-218.87 34.3616,-218.87 30.8616,-215.72 37.8616,-218.87 37.8616,-218.87\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node3\"><title>2</title>\n",
"<ellipse cx=\"152.74\" cy=\"-120.87\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"152.74\" y=\"-117.17\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;2</title>\n",
"<path d=\"M83.2471,-199.038C98.4814,-181.652 120.465,-156.563 135.387,-139.533\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"140.157,-134.09 137.912,-141.431 137.85,-136.722 135.543,-139.355 135.543,-139.355 135.543,-139.355 137.85,-136.722 133.174,-137.279 140.157,-134.09 140.157,-134.09\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"109.74\" y=\"-171.67\">a</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g class=\"node\" id=\"node6\"><title>3</title>\n",
"<ellipse cx=\"298.61\" cy=\"-47.8701\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"294.11\" y=\"-51.6701\">3</text>\n",
"<text fill=\"#ff4da0\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"290.61\" y=\"-36.6701\">\u2776</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>2-&gt;3</title>\n",
"<path d=\"M169.008,-112.423C175.117,-109.085 182.236,-105.247 188.74,-101.87 215.212,-88.1255 245.649,-73.093 267.598,-62.3868\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"274.123,-59.2093 269.209,-65.106 270.977,-60.7416 267.83,-62.274 267.83,-62.274 267.83,-62.274 270.977,-60.7416 266.451,-59.4419 274.123,-59.2093 274.123,-59.2093\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"188.74\" y=\"-105.67\">!a</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g class=\"node\" id=\"node7\"><title>6</title>\n",
"<ellipse cx=\"235.74\" cy=\"-120.87\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"235.74\" y=\"-117.17\">6</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>2-&gt;6</title>\n",
"<path d=\"M170.918,-120.87C182.409,-120.87 197.699,-120.87 210.433,-120.87\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"217.587,-120.87 210.587,-124.02 214.087,-120.87 210.587,-120.87 210.587,-120.87 210.587,-120.87 214.087,-120.87 210.587,-117.72 217.587,-120.87 217.587,-120.87\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"190.74\" y=\"-124.67\">a</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node4\"><title>1</title>\n",
"<ellipse cx=\"590.857\" cy=\"-113.87\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"590.857\" y=\"-110.17\">1</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>1-&gt;0</title>\n",
"<path d=\"M588.267,-131.954C583.58,-172.841 565.975,-268.87 503.987,-268.87 151.74,-268.87 151.74,-268.87 151.74,-268.87 128.694,-268.87 106.316,-255.254 90.1853,-242.232\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"84.5354,-237.488 91.9218,-239.577 87.2158,-239.739 89.8962,-241.99 89.8962,-241.99 89.8962,-241.99 87.2158,-239.739 87.8706,-244.402 84.5354,-237.488 84.5354,-237.488\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"293.11\" y=\"-272.67\">!a</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g class=\"node\" id=\"node5\"><title>5</title>\n",
"<ellipse cx=\"669.857\" cy=\"-113.87\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"669.857\" y=\"-110.17\">5</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>1-&gt;5</title>\n",
"<path d=\"M608.945,-113.87C619.413,-113.87 632.976,-113.87 644.55,-113.87\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"651.816,-113.87 644.816,-117.02 648.316,-113.87 644.816,-113.87 644.816,-113.87 644.816,-113.87 648.316,-113.87 644.816,-110.72 651.816,-113.87 651.816,-113.87\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"626.857\" y=\"-117.67\">a</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g class=\"node\" id=\"node8\"><title>4</title>\n",
"<ellipse cx=\"761.727\" cy=\"-162.87\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"757.227\" y=\"-166.67\">4</text>\n",
"<text fill=\"#ff7f00\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"753.727\" y=\"-151.67\">\u2777</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge9\"><title>5-&gt;4</title>\n",
"<path d=\"M686.102,-122.182C698.459,-128.92 716.238,-138.613 731.342,-146.849\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"737.629,-150.276 729.975,-149.691 734.556,-148.601 731.483,-146.925 731.483,-146.925 731.483,-146.925 734.556,-148.601 732.991,-144.16 737.629,-150.276 737.629,-150.276\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"705.857\" y=\"-142.67\">!a</text>\n",
"</g>\n",
"<!-- 9 -->\n",
"<g class=\"node\" id=\"node9\"><title>9</title>\n",
"<ellipse cx=\"761.727\" cy=\"-59.8701\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"761.727\" y=\"-56.1701\">9</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;9 -->\n",
"<g class=\"edge\" id=\"edge10\"><title>5-&gt;9</title>\n",
"<path d=\"M685.697,-104.953C700.397,-96.1202 723.05,-82.5089 739.62,-72.5524\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"745.864,-68.8003 741.487,-75.1057 742.864,-70.603 739.864,-72.4057 739.864,-72.4057 739.864,-72.4057 742.864,-70.603 738.242,-69.7056 745.864,-68.8003 745.864,-68.8003\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"707.857\" y=\"-95.6701\">a</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge7\"><title>3-&gt;1</title>\n",
"<path d=\"M325.323,-43.0758C357.063,-38.0969 412.442,-32.4888 458.117,-43.8701 500.977,-54.55 545.199,-82.0675 569.947,-99.2482\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"575.806,-103.377 568.269,-101.92 572.945,-101.361 570.084,-99.3449 570.084,-99.3449 570.084,-99.3449 572.945,-101.361 571.898,-96.7699 575.806,-103.377 575.806,-103.377\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"427.746\" y=\"-47.6701\">a</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g class=\"node\" id=\"node10\"><title>7</title>\n",
"<ellipse cx=\"431.246\" cy=\"-94.8701\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"426.746\" y=\"-98.6701\">7</text>\n",
"<text fill=\"#6a3d9a\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"423.246\" y=\"-83.6701\">\u2778</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge11\"><title>6-&gt;7</title>\n",
"<path d=\"M252.891,-114.419C258.741,-112.327 265.457,-110.204 271.74,-108.87 314.45,-99.8027 364.838,-96.5951 397.145,-95.468\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"404.154,-95.2464 397.257,-98.6162 400.656,-95.357 397.158,-95.4677 397.158,-95.4677 397.158,-95.4677 400.656,-95.357 397.058,-92.3193 404.154,-95.2464 404.154,-95.2464\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"293.11\" y=\"-112.67\">!a</text>\n",
"</g>\n",
"<!-- 10 -->\n",
"<g class=\"node\" id=\"node11\"><title>10</title>\n",
"<ellipse cx=\"364.928\" cy=\"-143.87\" fill=\"#ffffaa\" rx=\"21.3963\" ry=\"21.3963\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"364.928\" y=\"-140.17\">10</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;10 -->\n",
"<g class=\"edge\" id=\"edge12\"><title>6-&gt;10</title>\n",
"<path d=\"M253.63,-123.924C274.787,-127.75 311.314,-134.356 336.502,-138.91\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"343.604,-140.195 336.155,-142.049 340.159,-139.572 336.715,-138.949 336.715,-138.949 336.715,-138.949 340.159,-139.572 337.276,-135.849 343.604,-140.195 343.604,-140.195\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"295.11\" y=\"-140.67\">a</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge8\"><title>4-&gt;2</title>\n",
"<path d=\"M744.223,-183.848C727.796,-202.175 700.772,-225.87 670.857,-225.87 234.74,-225.87 234.74,-225.87 234.74,-225.87 194.072,-225.87 170.962,-175.879 160.542,-144.885\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"158.393,-138.209 163.536,-143.907 159.465,-141.54 160.538,-144.872 160.538,-144.872 160.538,-144.872 159.465,-141.54 157.539,-145.837 158.393,-138.209 158.393,-138.209\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"499.487\" y=\"-229.67\">a</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;9 -->\n",
"<g class=\"edge\" id=\"edge16\"><title>9-&gt;9</title>\n",
"<path d=\"M753.093,-75.7861C750.841,-86.0204 753.719,-95.8701 761.727,-95.8701 767.858,-95.8701 770.982,-90.0964 771.098,-82.7969\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"770.36,-75.7861 774.226,-82.4177 770.727,-79.2668 771.093,-82.7476 771.093,-82.7476 771.093,-82.7476 770.727,-79.2668 767.961,-83.0775 770.36,-75.7861 770.36,-75.7861\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"758.227\" y=\"-99.6701\">a</text>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g class=\"node\" id=\"node12\"><title>8</title>\n",
"<ellipse cx=\"862.467\" cy=\"-26.8701\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"857.967\" y=\"-30.6701\">8</text>\n",
"<text fill=\"#33a02c\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"854.467\" y=\"-15.6701\">\u2779</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;8 -->\n",
"<g class=\"edge\" id=\"edge15\"><title>9-&gt;8</title>\n",
"<path d=\"M779.032,-54.4208C792.739,-49.8396 812.74,-43.1549 829.608,-37.5175\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"836.618,-35.1747 830.978,-40.3812 833.299,-36.2842 829.979,-37.3936 829.979,-37.3936 829.979,-37.3936 833.299,-36.2842 828.981,-34.406 836.618,-35.1747 836.618,-35.1747\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"806.597\" y=\"-48.6701\">!a</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge13\"><title>7-&gt;1</title>\n",
"<path d=\"M458.404,-96.7592C478.093,-98.3077 505.722,-100.75 529.857,-103.87 541.77,-105.41 554.942,-107.556 565.903,-109.465\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"573.095,-110.739 565.653,-112.62 569.648,-110.128 566.202,-109.518 566.202,-109.518 566.202,-109.518 569.648,-110.128 566.751,-106.416 573.095,-110.739 573.095,-110.739\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"499.487\" y=\"-107.67\">a</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;10 -->\n",
"<g class=\"edge\" id=\"edge18\"><title>10-&gt;10</title>\n",
"<path d=\"M353.327,-162.13C350.749,-173.045 354.616,-183.318 364.928,-183.318 372.985,-183.318 377.108,-177.048 377.297,-169.1\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"376.53,-162.13 380.426,-168.744 376.913,-165.609 377.295,-169.088 377.295,-169.088 377.295,-169.088 376.913,-165.609 374.164,-169.433 376.53,-162.13 376.53,-162.13\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"361.428\" y=\"-187.118\">a</text>\n",
"</g>\n",
"<!-- 11 -->\n",
"<g class=\"node\" id=\"node13\"><title>11</title>\n",
"<ellipse cx=\"502.987\" cy=\"-154.87\" fill=\"#ffffaa\" rx=\"26.7407\" ry=\"26.7407\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"494.487\" y=\"-158.67\">11</text>\n",
"<text fill=\"#e31a1c\" font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"494.987\" y=\"-143.67\">\u277a</text>\n",
"</g>\n",
"<!-- 10&#45;&gt;11 -->\n",
"<g class=\"edge\" id=\"edge17\"><title>10-&gt;11</title>\n",
"<path d=\"M386.593,-145.541C408.473,-147.31 443.33,-150.128 469.015,-152.204\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"475.997,-152.769 468.766,-155.344 472.508,-152.487 469.02,-152.205 469.02,-152.205 469.02,-152.205 472.508,-152.487 469.274,-149.065 475.997,-152.769 475.997,-152.769\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"425.746\" y=\"-155.67\">!a</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge14\"><title>8-&gt;2</title>\n",
"<path d=\"M836.615,-18.5703C816.832,-12.7004 788.314,-5.87006 762.727,-5.87006 234.74,-5.87006 234.74,-5.87006 234.74,-5.87006 190.738,-5.87006 168.55,-62.8403 159.267,-96.5847\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"157.479,-103.404 156.208,-95.8339 158.367,-100.018 159.255,-96.633 159.255,-96.633 159.255,-96.633 158.367,-100.018 162.302,-97.432 157.479,-103.404 157.479,-103.404\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"547.857\" y=\"-9.67006\">a</text>\n",
"</g>\n",
"<!-- 11&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge19\"><title>11-&gt;1</title>\n",
"<path d=\"M527.451,-143.667C540.02,-137.665 555.415,-130.315 567.768,-124.417\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"574.281,-121.307 569.322,-127.165 571.123,-122.815 567.964,-124.323 567.964,-124.323 567.964,-124.323 571.123,-122.815 566.607,-121.48 574.281,-121.307 574.281,-121.307\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"547.857\" y=\"-137.67\">a</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
},
{
"metadata": {},
"output_type": "display_data",
"svg": [
"<svg height=\"172pt\" viewBox=\"0.00 0.00 734.00 172.28\" width=\"734pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(0.762994 0.762994) rotate(0) translate(4 221.8)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-221.8 958,-221.8 958,4 -4,4\" stroke=\"none\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"454\" y=\"-187.6\">[B\u00fcchi]</text>\n",
"<!-- I -->\n",
"<!-- 1 -->\n",
"<g class=\"node\" id=\"node2\"><title>1</title>\n",
"<ellipse cx=\"56\" cy=\"-83\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"56\" y=\"-79.3\">1</text>\n",
"</g>\n",
"<!-- I&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>I-&gt;1</title>\n",
"<path d=\"M1.15491,-83C2.79388,-83 17.1543,-83 30.6317,-83\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"37.9419,-83 30.9419,-86.1501 34.4419,-83 30.9419,-83.0001 30.9419,-83.0001 30.9419,-83.0001 34.4419,-83 30.9418,-79.8501 37.9419,-83 37.9419,-83\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>1-&gt;1</title>\n",
"<path d=\"M49.6208,-100.037C48.3189,-109.858 50.4453,-119 56,-119 60.166,-119 62.4036,-113.858 62.7128,-107.143\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"62.3792,-100.037 65.8541,-106.882 62.5434,-103.533 62.7076,-107.03 62.7076,-107.03 62.7076,-107.03 62.5434,-103.533 59.561,-107.177 62.3792,-100.037 62.3792,-100.037\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"42.5\" y=\"-122.8\">a | b</text>\n",
"</g>\n",
"<!-- 7 -->\n",
"<g class=\"node\" id=\"node5\"><title>7</title>\n",
"<ellipse cx=\"165\" cy=\"-113\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"165\" y=\"-109.3\">7</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>1-&gt;7</title>\n",
"<path d=\"M73.7188,-87.6875C91.7003,-92.7291 120.426,-100.783 140.637,-106.45\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"147.399,-108.345 139.808,-109.489 144.029,-107.401 140.659,-106.456 140.659,-106.456 140.659,-106.456 144.029,-107.401 141.509,-103.423 147.399,-108.345 147.399,-108.345\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"92\" y=\"-105.8\">a &amp; !b</text>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g class=\"node\" id=\"node3\"><title>0</title>\n",
"<ellipse cx=\"278\" cy=\"-113\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<ellipse cx=\"278\" cy=\"-113\" fill=\"none\" rx=\"22\" ry=\"22\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"278\" y=\"-109.3\">0</text>\n",
"</g>\n",
"<!-- 4 -->\n",
"<g class=\"node\" id=\"node4\"><title>4</title>\n",
"<ellipse cx=\"391\" cy=\"-80\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"391\" y=\"-76.3\">4</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;4 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>0-&gt;4</title>\n",
"<path d=\"M299.359,-106.947C318.311,-101.313 346.551,-92.9173 366.463,-86.9975\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"373.39,-84.9382 367.578,-89.9525 370.035,-85.9356 366.68,-86.9331 366.68,-86.9331 366.68,-86.9331 370.035,-85.9356 365.782,-83.9137 373.39,-84.9382 373.39,-84.9382\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"318\" y=\"-104.8\">a &amp; !b</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;1 -->\n",
"<g class=\"edge\" id=\"edge10\"><title>4-&gt;1</title>\n",
"<path d=\"M372.738,-80.1555C317.685,-80.6515 146.119,-82.1971 81.7395,-82.7771\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"74.4347,-82.8429 81.406,-79.6299 77.9345,-82.8114 81.4344,-82.7798 81.4344,-82.7798 81.4344,-82.7798 77.9345,-82.8114 81.4628,-85.9296 74.4347,-82.8429 74.4347,-82.8429\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"201\" y=\"-84.8\">!a &amp; b</text>\n",
"</g>\n",
"<!-- 5 -->\n",
"<g class=\"node\" id=\"node10\"><title>5</title>\n",
"<ellipse cx=\"500\" cy=\"-80\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"500\" y=\"-76.3\">5</text>\n",
"</g>\n",
"<!-- 4&#45;&gt;5 -->\n",
"<g class=\"edge\" id=\"edge9\"><title>4-&gt;5</title>\n",
"<path d=\"M409.191,-80C426.897,-80 454.648,-80 474.616,-80\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"481.851,-80 474.851,-83.1501 478.351,-80 474.851,-80.0001 474.851,-80.0001 474.851,-80.0001 478.351,-80 474.851,-76.8501 481.851,-80 481.851,-80\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"427\" y=\"-83.8\">a &amp; !b</text>\n",
"</g>\n",
"<!-- 7&#45;&gt;0 -->\n",
"<g class=\"edge\" id=\"edge15\"><title>7-&gt;0</title>\n",
"<path d=\"M183.344,-113C200.83,-113 228.111,-113 248.728,-113\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"255.991,-113 248.991,-116.15 252.491,-113 248.991,-113 248.991,-113 248.991,-113 252.491,-113 248.991,-109.85 255.991,-113 255.991,-113\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"201\" y=\"-116.8\">!a &amp; b</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g class=\"node\" id=\"node6\"><title>2</title>\n",
"<ellipse cx=\"663.5\" cy=\"-97\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"663.5\" y=\"-93.3\">2</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>2-&gt;2</title>\n",
"<path d=\"M654.267,-112.541C651.669,-122.909 654.746,-133 663.5,-133 670.202,-133 673.577,-127.085 673.624,-119.659\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"672.733,-112.541 676.729,-119.095 673.168,-116.014 673.603,-119.487 673.603,-119.487 673.603,-119.487 673.168,-116.014 670.477,-119.879 672.733,-112.541 672.733,-112.541\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"650\" y=\"-136.8\">a | b</text>\n",
"</g>\n",
"<!-- 8 -->\n",
"<g class=\"node\" id=\"node7\"><title>8</title>\n",
"<ellipse cx=\"936\" cy=\"-97\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"936\" y=\"-93.3\">8</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;8 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>2-&gt;8</title>\n",
"<path d=\"M681.832,-97C728.496,-97 856.874,-97 910.724,-97\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"917.812,-97 910.812,-100.15 914.312,-97 910.812,-97.0001 910.812,-97.0001 910.812,-97.0001 914.312,-97 910.812,-93.8501 917.812,-97 917.812,-97\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"754\" y=\"-100.8\">a &amp; !b</text>\n",
"</g>\n",
"<!-- 8&#45;&gt;7 -->\n",
"<g class=\"edge\" id=\"edge16\"><title>8-&gt;7</title>\n",
"<path d=\"M923.304,-110.356C905.046,-129.641 867.723,-163 828,-163 277,-163 277,-163 277,-163 242.566,-163 207.004,-142.75 185.696,-128.024\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"179.817,-123.849 187.348,-125.334 182.671,-125.876 185.525,-127.902 185.525,-127.902 185.525,-127.902 182.671,-125.876 183.701,-130.471 179.817,-123.849 179.817,-123.849\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"536\" y=\"-166.8\">a &amp; !b</text>\n",
"</g>\n",
"<!-- 3 -->\n",
"<g class=\"node\" id=\"node8\"><title>3</title>\n",
"<ellipse cx=\"718\" cy=\"-18\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"718\" y=\"-14.3\">3</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge7\"><title>3-&gt;3</title>\n",
"<path d=\"M708.767,-33.5414C706.169,-43.9087 709.246,-54 718,-54 724.702,-54 728.077,-48.0847 728.124,-40.6591\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"727.233,-33.5414 731.229,-40.0955 727.668,-37.0143 728.103,-40.4871 728.103,-40.4871 728.103,-40.4871 727.668,-37.0143 724.977,-40.8788 727.233,-33.5414 727.233,-33.5414\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"704.5\" y=\"-57.8\">a | b</text>\n",
"</g>\n",
"<!-- 9 -->\n",
"<g class=\"node\" id=\"node9\"><title>9</title>\n",
"<ellipse cx=\"827\" cy=\"-18\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"827\" y=\"-14.3\">9</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;9 -->\n",
"<g class=\"edge\" id=\"edge8\"><title>3-&gt;9</title>\n",
"<path d=\"M736.191,-18C753.897,-18 781.648,-18 801.616,-18\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"808.851,-18 801.851,-21.1501 805.351,-18 801.851,-18.0001 801.851,-18.0001 801.851,-18.0001 805.351,-18 801.851,-14.8501 808.851,-18 808.851,-18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"754\" y=\"-21.8\">a &amp; !b</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;8 -->\n",
"<g class=\"edge\" id=\"edge17\"><title>9-&gt;8</title>\n",
"<path d=\"M842.6,-27.608C857.331,-37.4247 880.608,-53.2746 900,-68 905.446,-72.1354 911.216,-76.7941 916.465,-81.1478\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"921.918,-85.7133 914.529,-83.6348 919.235,-83.4665 916.551,-81.2196 916.551,-81.2196 916.551,-81.2196 919.235,-83.4665 918.573,-78.8043 921.918,-85.7133 921.918,-85.7133\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"863\" y=\"-71.8\">a &amp; !b</text>\n",
"</g>\n",
"<!-- 9&#45;&gt;9 -->\n",
"<g class=\"edge\" id=\"edge18\"><title>9-&gt;9</title>\n",
"<path d=\"M817.767,-33.5414C815.169,-43.9087 818.246,-54 827,-54 833.702,-54 837.077,-48.0847 837.124,-40.6591\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"836.233,-33.5414 840.229,-40.0955 836.668,-37.0143 837.103,-40.4871 837.103,-40.4871 837.103,-40.4871 836.668,-37.0143 833.977,-40.8788 836.233,-33.5414 836.233,-33.5414\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"808.5\" y=\"-57.8\">a &amp; !b</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;2 -->\n",
"<g class=\"edge\" id=\"edge12\"><title>5-&gt;2</title>\n",
"<path d=\"M517.978,-81.7872C546.739,-84.8147 605.135,-90.9615 638.216,-94.4438\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"645.263,-95.1856 637.972,-97.5854 641.783,-94.8192 638.302,-94.4527 638.302,-94.4527 638.302,-94.4527 641.783,-94.8192 638.632,-91.32 645.263,-95.1856 645.263,-95.1856\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"536\" y=\"-90.8\">!a &amp; b</text>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g class=\"node\" id=\"node11\"><title>6</title>\n",
"<ellipse cx=\"609\" cy=\"-18\" fill=\"#ffffaa\" rx=\"18\" ry=\"18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"middle\" x=\"609\" y=\"-14.3\">6</text>\n",
"</g>\n",
"<!-- 5&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge11\"><title>5-&gt;6</title>\n",
"<path d=\"M515.878,-71.3792C534.3,-60.7047 565.804,-42.4499 586.764,-30.3052\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"592.904,-26.7475 588.426,-32.9825 589.875,-28.5023 586.847,-30.257 586.847,-30.257 586.847,-30.257 589.875,-28.5023 585.268,-27.5315 592.904,-26.7475 592.904,-26.7475\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"536\" y=\"-62.8\">a &amp; !b</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;3 -->\n",
"<g class=\"edge\" id=\"edge14\"><title>6-&gt;3</title>\n",
"<path d=\"M627.191,-18C644.897,-18 672.648,-18 692.616,-18\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"699.851,-18 692.851,-21.1501 696.351,-18 692.851,-18.0001 692.851,-18.0001 692.851,-18.0001 696.351,-18 692.851,-14.8501 699.851,-18 699.851,-18\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"645\" y=\"-21.8\">!a &amp; b</text>\n",
"</g>\n",
"<!-- 6&#45;&gt;6 -->\n",
"<g class=\"edge\" id=\"edge13\"><title>6-&gt;6</title>\n",
"<path d=\"M599.767,-33.5414C597.169,-43.9087 600.246,-54 609,-54 615.702,-54 619.077,-48.0847 619.124,-40.6591\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"618.233,-33.5414 622.229,-40.0955 618.668,-37.0143 619.103,-40.4871 619.103,-40.4871 619.103,-40.4871 618.668,-37.0143 615.977,-40.8788 618.233,-33.5414 618.233,-33.5414\" stroke=\"black\"/>\n",
"<text font-family=\"Lato\" font-size=\"14.00\" text-anchor=\"start\" x=\"590.5\" y=\"-57.8\">a &amp; !b</text>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text": [
"<IPython.core.display.SVG object>"
]
}
],
"prompt_number": 5
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Multiple automata can be generated using the `aut_patterns()` function, which works similarly to `ltl_patterns()`."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"for aut in sg.aut_patterns(sg.AUT_KS_NCA):\n",
" print(aut.num_states())"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"3\n",
"5\n",
"7\n",
"9\n",
"11\n",
"13\n",
"15\n",
"17\n",
"19\n",
"21\n"
]
}
],
"prompt_number": 6
}
],
"metadata": {}
}
]
}