This is to workaround differences in minidom's pretty-printing that occurred between Python 3.7 and 3.8. * python/spot/jupyter.py (SVG): New class. * python/spot/__init__.py: Use it. * tests/python/_altscc.ipynb, tests/python/alternation.ipynb, tests/python/automata.ipynb, tests/python/formulas.ipynb, tests/python/gen.ipynb, tests/python/highlighting.ipynb, tests/python/ltsmin-dve.ipynb, tests/python/ltsmin-pml.ipynb, tests/python/product.ipynb, tests/python/randaut.ipynb, tests/python/testingaut.ipynb, tests/python/twagraph-internals.ipynb, tests/python/word.ipynb: Adjust.
1261 lines
66 KiB
Text
1261 lines
66 KiB
Text
{
|
|
"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",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import spot\n",
|
|
"import spot.gen as sg\n",
|
|
"spot.setup()\n",
|
|
"from IPython.display import display"
|
|
]
|
|
},
|
|
{
|
|
"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",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$\\mathsf{G} \\mathsf{F} p_{1} \\land \\mathsf{G} \\mathsf{F} p_{2} \\land \\mathsf{G} \\mathsf{F} p_{3}$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"GFp1 & GFp2 & GFp3\")"
|
|
]
|
|
},
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"sg.ltl_pattern(sg.LTL_AND_GF, 3)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/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)$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"F(p & Xp & XXp & XXXp) & F(q & Xq & XXq & XXXq)\")"
|
|
]
|
|
},
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"sg.ltl_pattern(sg.LTL_CCJ_BETA_PRIME, 4)"
|
|
]
|
|
},
|
|
{
|
|
"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",
|
|
"execution_count": 4,
|
|
"metadata": {
|
|
"scrolled": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/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})$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"(GFp1 | FGp2) & (GFp2 | FGp3) & (GFp3 | FGp4)\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$\\mathsf{F} \\mathsf{G} p_{1}$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"FGp1\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$\\mathsf{F} \\mathsf{G} p_{1} \\land \\mathsf{F} \\mathsf{G} p_{2}$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"FGp1 & FGp2\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$\\mathsf{F} \\mathsf{G} p_{1} \\land \\mathsf{F} \\mathsf{G} p_{2} \\land \\mathsf{F} \\mathsf{G} p_{3}$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"FGp1 & FGp2 & FGp3\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$p_{0} \\mathbin{\\mathsf{U}} (p_{1} \\land \\mathsf{G} p_{2})$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"p0 U (p1 & Gp2)\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$p_{0} \\mathbin{\\mathsf{U}} (p_{1} \\land \\mathsf{X} (p_{2} \\mathbin{\\mathsf{U}} p_{3}))$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"p0 U (p1 & X(p2 U p3))\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/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})))))$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"p0 U (p1 & X(p2 & F(p3 & XF(p4 & XF(p5 & XFp6)))))\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$\\mathsf{F} (p_{0} \\land \\mathsf{X} \\mathsf{G} p_{1})$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"F(p0 & XGp1)\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$\\mathsf{F} (p_{0} \\land \\mathsf{X} (p_{1} \\land \\mathsf{X} \\mathsf{F} p_{2}))$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"F(p0 & X(p1 & XFp2))\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$\\mathsf{F} (p_{0} \\land \\mathsf{X} (p_{1} \\mathbin{\\mathsf{U}} p_{2}))$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"F(p0 & X(p1 U p2))\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$\\mathsf{G} \\mathsf{F} p_{0} \\lor \\mathsf{F} \\mathsf{G} p_{1}$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"GFp0 | FGp1\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$\\mathsf{G} (p_{0} \\rightarrow (p_{1} \\mathbin{\\mathsf{U}} p_{2}))$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"G(p0 -> (p1 U p2))\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/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})))$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"G(p0 & XF(p1 & XF(p2 & XFp3)))\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/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}$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"GFp1 & GFp2 & GFp3 & GFp0 & GFp4\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/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}))$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"(p0 U (p1 U p2)) | (p1 U (p2 U p0)) | (p2 U (p0 U p1))\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$\\mathsf{G} (p_{0} \\rightarrow (p_{1} \\mathbin{\\mathsf{U}} (\\mathsf{G} p_{2} \\lor \\mathsf{G} p_{3})))$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"G(p0 -> (p1 U (Gp2 | Gp3)))\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"for f in sg.ltl_patterns((sg.LTL_GH_R, 3), (sg.LTL_AND_FG, 1, 3), sg.LTL_EH_PATTERNS):\n",
|
|
" display(f)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Some LTL patterns take two arguments. In this case, the arguments passed to `ltl_pattern()` should be one of:\n",
|
|
"- `(id, n, m)` giving the value of both arguments,\n",
|
|
"- `(id, min1, max1, min2, max2)` specifying a range for both arguments,\n",
|
|
"- `(id, n)` equivalent to `(id, n, n)`,\n",
|
|
"- `id` equivalent to `(id, 1, 3, 1, 3)`."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$\\mathsf{G} \\mathsf{F} a_{1} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{0} \\mathbin{\\mathsf{U}} \\mathsf{X} b)$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"GFa1 U G(GFa0 U Xb)\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$\\mathsf{G} \\mathsf{F} a_{1} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{0} \\mathbin{\\mathsf{U}} \\mathsf{X} \\mathsf{X} b)$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"GFa1 U G(GFa0 U XXb)\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$\\mathsf{G} \\mathsf{F} a_{1} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{0} \\mathbin{\\mathsf{U}} \\mathsf{X} \\mathsf{X} \\mathsf{X} b)$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"GFa1 U G(GFa0 U XXXb)\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$\\mathsf{G} \\mathsf{F} a_{2} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{1} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{0} \\mathbin{\\mathsf{U}} \\mathsf{X} b))$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"GFa2 U G(GFa1 U G(GFa0 U Xb))\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$\\mathsf{G} \\mathsf{F} a_{2} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{1} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{0} \\mathbin{\\mathsf{U}} \\mathsf{X} \\mathsf{X} b))$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"GFa2 U G(GFa1 U G(GFa0 U XXb))\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$\\mathsf{G} \\mathsf{F} a_{2} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{1} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{0} \\mathbin{\\mathsf{U}} \\mathsf{X} \\mathsf{X} \\mathsf{X} b))$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"GFa2 U G(GFa1 U G(GFa0 U XXXb))\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$\\mathsf{G} \\mathsf{F} a_{3} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{2} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{1} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{0} \\mathbin{\\mathsf{U}} \\mathsf{X} b)))$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"GFa3 U G(GFa2 U G(GFa1 U G(GFa0 U Xb)))\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$\\mathsf{G} \\mathsf{F} a_{3} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{2} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{1} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{0} \\mathbin{\\mathsf{U}} \\mathsf{X} \\mathsf{X} b)))$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"GFa3 U G(GFa2 U G(GFa1 U G(GFa0 U XXb)))\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$\\mathsf{G} \\mathsf{F} a_{3} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{2} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{1} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{0} \\mathbin{\\mathsf{U}} \\mathsf{X} \\mathsf{X} \\mathsf{X} b)))$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"GFa3 U G(GFa2 U G(GFa1 U G(GFa0 U XXXb)))\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"for f in sg.ltl_patterns(sg.LTL_SEJK_F):\n",
|
|
" display(f)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$\\mathsf{G} \\mathsf{F} a_{2} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{1} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{0} \\mathbin{\\mathsf{U}} \\mathsf{X} \\mathsf{X} \\mathsf{X} b))$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"GFa2 U G(GFa1 U G(GFa0 U XXXb))\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$\\mathsf{G} \\mathsf{F} a_{2} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{1} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{0} \\mathbin{\\mathsf{U}} \\mathsf{X} \\mathsf{X} b))$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"GFa2 U G(GFa1 U G(GFa0 U XXb))\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$\\mathsf{G} \\mathsf{F} a_{1} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{0} \\mathbin{\\mathsf{U}} \\mathsf{X} b)$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"GFa1 U G(GFa0 U Xb)\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$\\mathsf{G} \\mathsf{F} a_{1} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{0} \\mathbin{\\mathsf{U}} \\mathsf{X} \\mathsf{X} b)$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"GFa1 U G(GFa0 U XXb)\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$\\mathsf{G} \\mathsf{F} a_{2} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{1} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{0} \\mathbin{\\mathsf{U}} \\mathsf{X} b))$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"GFa2 U G(GFa1 U G(GFa0 U Xb))\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$\\mathsf{G} \\mathsf{F} a_{2} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{1} \\mathbin{\\mathsf{U}} \\mathsf{G} (\\mathsf{G} \\mathsf{F} a_{0} \\mathbin{\\mathsf{U}} \\mathsf{X} \\mathsf{X} b))$"
|
|
],
|
|
"text/plain": [
|
|
"spot.formula(\"GFa2 U G(GFa1 U G(GFa0 U XXb))\")"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"for f in sg.ltl_patterns((sg.LTL_SEJK_F, 2, 3), (sg.LTL_SEJK_F, 2), (sg.LTL_SEJK_F, 1, 2, 1, 2)):\n",
|
|
" display(f)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Automata patterns\n",
|
|
"\n",
|
|
"We currently have only a couple of generators of automata:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/svg+xml": [
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
|
|
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
|
|
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
|
|
"<!-- Generated by graphviz version 2.43.0 (0)\n",
|
|
" -->\n",
|
|
"<!-- Pages: 1 -->\n",
|
|
"<svg width=\"734pt\" height=\"311pt\"\n",
|
|
" viewBox=\"0.00 0.00 734.00 310.64\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
|
|
"<g id=\"graph0\" class=\"graph\" transform=\"scale(0.9090909090909091 0.9090909090909091) rotate(0) translate(4 338.8)\">\n",
|
|
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-338.8 806,-338.8 806,4 -4,4\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"368.5\" y=\"-304.6\" font-family=\"Lato\" font-size=\"14.00\">[co-Büchi]</text>\n",
|
|
"<!-- I -->\n",
|
|
"<!-- 0 -->\n",
|
|
"<g id=\"node2\" class=\"node\">\n",
|
|
"<title>0</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"60\" cy=\"-127\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<ellipse fill=\"none\" stroke=\"black\" cx=\"60\" cy=\"-127\" rx=\"22\" ry=\"22\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"60\" y=\"-123.3\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
|
|
"</g>\n",
|
|
"<!-- I->0 -->\n",
|
|
"<g id=\"edge1\" class=\"edge\">\n",
|
|
"<title>I->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M1.17,-127C2.84,-127 16.88,-127 30.71,-127\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"37.86,-127 30.86,-130.15 34.36,-127 30.86,-127 30.86,-127 30.86,-127 34.36,-127 30.86,-123.85 37.86,-127 37.86,-127\"/>\n",
|
|
"</g>\n",
|
|
"<!-- 1 -->\n",
|
|
"<g id=\"node3\" class=\"node\">\n",
|
|
"<title>1</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"177\" cy=\"-244\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"177\" y=\"-240.3\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->1 -->\n",
|
|
"<g id=\"edge2\" class=\"edge\">\n",
|
|
"<title>0->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M64.3,-148.62C68.72,-170.19 78.64,-202.83 100,-222 114.18,-234.73 135.32,-240.12 151.7,-242.39\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"158.85,-243.23 151.53,-245.55 155.38,-242.83 151.9,-242.42 151.9,-242.42 151.9,-242.42 155.38,-242.83 152.27,-239.29 158.85,-243.23 158.85,-243.23\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"120.5\" y=\"-243.8\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2 -->\n",
|
|
"<g id=\"node4\" class=\"node\">\n",
|
|
"<title>2</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"348\" cy=\"-188\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"348\" y=\"-184.3\" font-family=\"Lato\" font-size=\"14.00\">2</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->2 -->\n",
|
|
"<g id=\"edge3\" class=\"edge\">\n",
|
|
"<title>0->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M80.65,-134.73C86.78,-136.96 93.61,-139.26 100,-141 180.41,-162.94 278.29,-178.3 322.84,-184.69\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"330.02,-185.71 322.65,-187.84 326.56,-185.22 323.09,-184.72 323.09,-184.72 323.09,-184.72 326.56,-185.22 323.53,-181.6 330.02,-185.71 330.02,-185.71\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"177\" y=\"-165.8\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3 -->\n",
|
|
"<g id=\"node5\" class=\"node\">\n",
|
|
"<title>3</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"457\" cy=\"-135\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"457\" y=\"-131.3\" font-family=\"Lato\" font-size=\"14.00\">3</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->3 -->\n",
|
|
"<g id=\"edge4\" class=\"edge\">\n",
|
|
"<title>0->3</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M82.24,-127.43C149.8,-128.8 359.56,-133.05 431.5,-134.5\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"438.8,-134.65 431.73,-137.66 435.3,-134.58 431.8,-134.51 431.8,-134.51 431.8,-134.51 435.3,-134.58 431.86,-131.36 438.8,-134.65 438.8,-134.65\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"262.5\" y=\"-135.8\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4 -->\n",
|
|
"<g id=\"node6\" class=\"node\">\n",
|
|
"<title>4</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"566\" cy=\"-89\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"566\" y=\"-85.3\" font-family=\"Lato\" font-size=\"14.00\">4</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->4 -->\n",
|
|
"<g id=\"edge5\" class=\"edge\">\n",
|
|
"<title>0->4</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M79.51,-116.82C101.73,-105.56 140.46,-89 176,-89 176,-89 176,-89 458,-89 486.42,-89 519.08,-89 540.76,-89\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"547.95,-89 540.95,-92.15 544.45,-89 540.95,-89 540.95,-89 540.95,-89 544.45,-89 540.95,-85.85 547.95,-89 547.95,-89\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"348\" y=\"-92.8\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 5 -->\n",
|
|
"<g id=\"node7\" class=\"node\">\n",
|
|
"<title>5</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"675\" cy=\"-67\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"675\" y=\"-63.3\" font-family=\"Lato\" font-size=\"14.00\">5</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->5 -->\n",
|
|
"<g id=\"edge6\" class=\"edge\">\n",
|
|
"<title>0->5</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M73.62,-109.19C92.72,-84.53 131.5,-43 176,-43 176,-43 176,-43 567,-43 596.59,-43 629.69,-51.85 651.13,-58.8\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"657.94,-61.07 650.3,-61.84 654.62,-59.96 651.3,-58.85 651.3,-58.85 651.3,-58.85 654.62,-59.96 652.29,-55.86 657.94,-61.07 657.94,-61.07\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"402.5\" y=\"-46.8\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 6 -->\n",
|
|
"<g id=\"node8\" class=\"node\">\n",
|
|
"<title>6</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"784\" cy=\"-67\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"784\" y=\"-63.3\" font-family=\"Lato\" font-size=\"14.00\">6</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->6 -->\n",
|
|
"<g id=\"edge7\" class=\"edge\">\n",
|
|
"<title>0->6</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M67.63,-106.35C73.9,-89.24 84.65,-65.05 100,-48 126.73,-18.31 136.05,0 176,0 176,0 176,0 676,0 712.82,0 747.39,-28.85 766.81,-48.69\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"771.64,-53.76 764.54,-50.87 769.23,-51.23 766.82,-48.69 766.82,-48.69 766.82,-48.69 769.23,-51.23 769.1,-46.52 771.64,-53.76 771.64,-53.76\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"457\" y=\"-3.8\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->0 -->\n",
|
|
"<g id=\"edge8\" class=\"edge\">\n",
|
|
"<title>1->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M165.95,-229.32C159.57,-220.81 150.69,-210.35 141,-203 125,-190.86 115.33,-196.97 100,-184 89.75,-175.32 81,-163.33 74.4,-152.58\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"70.77,-146.43 77.04,-150.85 72.55,-149.44 74.33,-152.45 74.33,-152.45 74.33,-152.45 72.55,-149.44 71.62,-154.05 70.77,-146.43 70.77,-146.43\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"100\" y=\"-206.8\" font-family=\"Lato\" font-size=\"14.00\">!a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->1 -->\n",
|
|
"<g id=\"edge9\" class=\"edge\">\n",
|
|
"<title>1->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M167.43,-259.54C164.73,-269.91 167.92,-280 177,-280 183.95,-280 187.45,-274.08 187.5,-266.66\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"186.57,-259.54 190.6,-266.08 187.03,-263.01 187.48,-266.48 187.48,-266.48 187.48,-266.48 187.03,-263.01 184.35,-266.89 186.57,-259.54 186.57,-259.54\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"160\" y=\"-283.8\" font-family=\"Lato\" font-size=\"14.00\">a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->2 -->\n",
|
|
"<g id=\"edge10\" class=\"edge\">\n",
|
|
"<title>1->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M187.96,-229.4C194.2,-221.45 202.95,-212.2 213,-207 248.07,-188.88 294.81,-186.36 322.81,-186.77\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"329.84,-186.94 322.77,-189.92 326.35,-186.85 322.85,-186.77 322.85,-186.77 322.85,-186.77 326.35,-186.85 322.92,-183.62 329.84,-186.94 329.84,-186.94\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"213\" y=\"-210.8\" font-family=\"Lato\" font-size=\"14.00\">(!a & b) | (a & !b)</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->1 -->\n",
|
|
"<g id=\"edge11\" class=\"edge\">\n",
|
|
"<title>2->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M336.16,-202.03C329.89,-209.15 321.38,-217.27 312,-222 276.63,-239.82 229.98,-243.73 202.08,-244.31\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"195.08,-244.39 202.04,-241.16 198.58,-244.35 202.08,-244.31 202.08,-244.31 202.08,-244.31 198.58,-244.35 202.11,-247.46 195.08,-244.39 195.08,-244.39\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"244\" y=\"-246.8\" font-family=\"Lato\" font-size=\"14.00\">!a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->2 -->\n",
|
|
"<g id=\"edge12\" class=\"edge\">\n",
|
|
"<title>2->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M338.77,-203.54C336.17,-213.91 339.25,-224 348,-224 354.7,-224 358.08,-218.08 358.12,-210.66\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"357.23,-203.54 361.23,-210.1 357.67,-207.01 358.1,-210.49 358.1,-210.49 358.1,-210.49 357.67,-207.01 354.98,-210.88 357.23,-203.54 357.23,-203.54\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"298.5\" y=\"-227.8\" font-family=\"Lato\" font-size=\"14.00\">(!a & !b) | (a & b)</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->3 -->\n",
|
|
"<g id=\"edge13\" class=\"edge\">\n",
|
|
"<title>2->3</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M364.33,-180.41C382.58,-171.37 413.2,-156.2 433.98,-145.91\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"440.35,-142.75 435.48,-148.68 437.21,-144.31 434.08,-145.86 434.08,-145.86 434.08,-145.86 437.21,-144.31 432.68,-143.04 440.35,-142.75 440.35,-142.75\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"384\" y=\"-172.8\" font-family=\"Lato\" font-size=\"14.00\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3->3 -->\n",
|
|
"<g id=\"edge14\" class=\"edge\">\n",
|
|
"<title>3->3</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M447.77,-150.54C445.17,-160.91 448.25,-171 457,-171 463.7,-171 467.08,-165.08 467.12,-157.66\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"466.23,-150.54 470.23,-157.1 466.67,-154.01 467.1,-157.49 467.1,-157.49 467.1,-157.49 466.67,-154.01 463.98,-157.88 466.23,-150.54 466.23,-150.54\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"441.5\" y=\"-174.8\" font-family=\"Lato\" font-size=\"14.00\">!a | b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3->4 -->\n",
|
|
"<g id=\"edge15\" class=\"edge\">\n",
|
|
"<title>3->4</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M473.79,-128.21C491.96,-120.4 521.95,-107.51 542.55,-98.65\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"549.15,-95.82 543.96,-101.47 545.93,-97.2 542.72,-98.58 542.72,-98.58 542.72,-98.58 545.93,-97.2 541.47,-95.69 549.15,-95.82 549.15,-95.82\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"493\" y=\"-121.8\" font-family=\"Lato\" font-size=\"14.00\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4->4 -->\n",
|
|
"<g id=\"edge16\" class=\"edge\">\n",
|
|
"<title>4->4</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M556.77,-104.54C554.17,-114.91 557.25,-125 566,-125 572.7,-125 576.08,-119.08 576.12,-111.66\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"575.23,-104.54 579.23,-111.1 575.67,-108.01 576.1,-111.49 576.1,-111.49 576.1,-111.49 575.67,-108.01 572.98,-111.88 575.23,-104.54 575.23,-104.54\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"550.5\" y=\"-128.8\" font-family=\"Lato\" font-size=\"14.00\">!a | b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4->5 -->\n",
|
|
"<g id=\"edge17\" class=\"edge\">\n",
|
|
"<title>4->5</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M583.72,-85.56C601.52,-81.9 629.84,-76.08 650.02,-71.93\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"657.05,-70.49 650.82,-74.98 653.62,-71.19 650.19,-71.9 650.19,-71.9 650.19,-71.9 653.62,-71.19 649.55,-68.81 657.05,-70.49 657.05,-70.49\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"602\" y=\"-84.8\" font-family=\"Lato\" font-size=\"14.00\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 5->5 -->\n",
|
|
"<g id=\"edge18\" class=\"edge\">\n",
|
|
"<title>5->5</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M665.77,-82.54C663.17,-92.91 666.25,-103 675,-103 681.7,-103 685.08,-97.08 685.12,-89.66\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"684.23,-82.54 688.23,-89.1 684.67,-86.01 685.1,-89.49 685.1,-89.49 685.1,-89.49 684.67,-86.01 681.98,-89.88 684.23,-82.54 684.23,-82.54\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"659.5\" y=\"-106.8\" font-family=\"Lato\" font-size=\"14.00\">!a | b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 5->6 -->\n",
|
|
"<g id=\"edge19\" class=\"edge\">\n",
|
|
"<title>5->6</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M693.19,-67C710.9,-67 738.65,-67 758.62,-67\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"765.85,-67 758.85,-70.15 762.35,-67 758.85,-67 758.85,-67 758.85,-67 762.35,-67 758.85,-63.85 765.85,-67 765.85,-67\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"711\" y=\"-70.8\" font-family=\"Lato\" font-size=\"14.00\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 6->1 -->\n",
|
|
"<g id=\"edge20\" class=\"edge\">\n",
|
|
"<title>6->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M782.08,-85.01C778.45,-135.37 760.75,-274 676,-274 347,-274 347,-274 347,-274 287.12,-274 270.77,-275.77 213,-260 208.6,-258.8 204.06,-257.1 199.77,-255.26\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"193.27,-252.29 200.95,-252.34 196.46,-253.74 199.64,-255.2 199.64,-255.2 199.64,-255.2 196.46,-253.74 198.33,-258.06 193.27,-252.29 193.27,-252.29\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"493\" y=\"-277.8\" font-family=\"Lato\" font-size=\"14.00\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 6->6 -->\n",
|
|
"<g id=\"edge21\" class=\"edge\">\n",
|
|
"<title>6->6</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M774.77,-82.54C772.17,-92.91 775.25,-103 784,-103 790.7,-103 794.08,-97.08 794.12,-89.66\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"793.23,-82.54 797.23,-89.1 793.67,-86.01 794.1,-89.49 794.1,-89.49 794.1,-89.49 793.67,-86.01 790.98,-89.88 793.23,-82.54 793.23,-82.54\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"768.5\" y=\"-106.8\" font-family=\"Lato\" font-size=\"14.00\">!a | b</text>\n",
|
|
"</g>\n",
|
|
"</g>\n",
|
|
"</svg>\n"
|
|
],
|
|
"text/plain": [
|
|
"<spot.jupyter.SVG object>"
|
|
]
|
|
},
|
|
"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=\"734pt\" height=\"272pt\"\n",
|
|
" viewBox=\"0.00 0.00 734.00 272.28\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
|
|
"<g id=\"graph0\" class=\"graph\" transform=\"scale(0.819672131147541 0.819672131147541) rotate(0) translate(4 328.87)\">\n",
|
|
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-328.87 893.34,-328.87 893.34,4 -4,4\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"269.17\" y=\"-310.67\" font-family=\"Lato\" font-size=\"14.00\">(Fin(</text>\n",
|
|
"<text text-anchor=\"start\" x=\"297.17\" y=\"-310.67\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"<text text-anchor=\"start\" x=\"313.17\" y=\"-310.67\" font-family=\"Lato\" font-size=\"14.00\">) | Inf(</text>\n",
|
|
"<text text-anchor=\"start\" x=\"350.17\" y=\"-310.67\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
|
|
"<text text-anchor=\"start\" x=\"366.17\" y=\"-310.67\" font-family=\"Lato\" font-size=\"14.00\">)) & (Fin(</text>\n",
|
|
"<text text-anchor=\"start\" x=\"420.17\" y=\"-310.67\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
|
|
"<text text-anchor=\"start\" x=\"436.17\" y=\"-310.67\" font-family=\"Lato\" font-size=\"14.00\">) | Inf(</text>\n",
|
|
"<text text-anchor=\"start\" x=\"473.17\" y=\"-310.67\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
|
|
"<text text-anchor=\"start\" x=\"489.17\" y=\"-310.67\" font-family=\"Lato\" font-size=\"14.00\">)) & (Fin(</text>\n",
|
|
"<text text-anchor=\"start\" x=\"543.17\" y=\"-310.67\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
|
|
"<text text-anchor=\"start\" x=\"559.17\" y=\"-310.67\" font-family=\"Lato\" font-size=\"14.00\">) | Inf(</text>\n",
|
|
"<text text-anchor=\"start\" x=\"596.17\" y=\"-310.67\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#e31a1c\">❺</text>\n",
|
|
"<text text-anchor=\"start\" x=\"612.17\" y=\"-310.67\" font-family=\"Lato\" font-size=\"14.00\">))</text>\n",
|
|
"<text text-anchor=\"start\" x=\"412.67\" y=\"-296.67\" font-family=\"Lato\" font-size=\"14.00\">[Streett 3]</text>\n",
|
|
"<!-- I -->\n",
|
|
"<!-- 0 -->\n",
|
|
"<g id=\"node2\" class=\"node\">\n",
|
|
"<title>0</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"64.87\" cy=\"-207.87\" rx=\"26.74\" ry=\"26.74\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"60.37\" y=\"-211.67\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
|
|
"<text text-anchor=\"start\" x=\"56.87\" y=\"-196.67\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
|
|
"</g>\n",
|
|
"<!-- I->0 -->\n",
|
|
"<g id=\"edge1\" class=\"edge\">\n",
|
|
"<title>I->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M1.05,-207.87C1.95,-207.87 16.07,-207.87 30.7,-207.87\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"37.86,-207.87 30.86,-211.02 34.36,-207.87 30.86,-207.87 30.86,-207.87 30.86,-207.87 34.36,-207.87 30.86,-204.72 37.86,-207.87 37.86,-207.87\"/>\n",
|
|
"</g>\n",
|
|
"<!-- 2 -->\n",
|
|
"<g id=\"node3\" class=\"node\">\n",
|
|
"<title>2</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"152.74\" cy=\"-133.87\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"152.74\" y=\"-130.17\" font-family=\"Lato\" font-size=\"14.00\">2</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->2 -->\n",
|
|
"<g id=\"edge2\" class=\"edge\">\n",
|
|
"<title>0->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M85.79,-190.71C100.01,-178.45 119.01,-162.08 132.96,-150.05\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"138.6,-145.19 135.36,-152.15 135.95,-147.47 133.3,-149.76 133.3,-149.76 133.3,-149.76 135.95,-147.47 131.25,-147.37 138.6,-145.19 138.6,-145.19\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"109.74\" y=\"-171.67\" font-family=\"Lato\" font-size=\"14.00\">a</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3 -->\n",
|
|
"<g id=\"node6\" class=\"node\">\n",
|
|
"<title>3</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"298.61\" cy=\"-52.87\" rx=\"26.74\" ry=\"26.74\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"294.11\" y=\"-56.67\" font-family=\"Lato\" font-size=\"14.00\">3</text>\n",
|
|
"<text text-anchor=\"start\" x=\"290.61\" y=\"-41.67\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff4da0\">❶</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->3 -->\n",
|
|
"<g id=\"edge5\" class=\"edge\">\n",
|
|
"<title>2->3</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M168.86,-125.35C192.51,-112.04 238.62,-86.08 268.76,-69.11\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"274.94,-65.64 270.38,-71.81 271.89,-67.35 268.84,-69.07 268.84,-69.07 268.84,-69.07 271.89,-67.35 267.29,-66.32 274.94,-65.64 274.94,-65.64\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"188.74\" y=\"-116.67\" font-family=\"Lato\" font-size=\"14.00\">!a</text>\n",
|
|
"</g>\n",
|
|
"<!-- 6 -->\n",
|
|
"<g id=\"node7\" class=\"node\">\n",
|
|
"<title>6</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"235.74\" cy=\"-133.87\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"235.74\" y=\"-130.17\" font-family=\"Lato\" font-size=\"14.00\">6</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->6 -->\n",
|
|
"<g id=\"edge6\" class=\"edge\">\n",
|
|
"<title>2->6</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M170.92,-133.87C182.41,-133.87 197.7,-133.87 210.43,-133.87\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"217.59,-133.87 210.59,-137.02 214.09,-133.87 210.59,-133.87 210.59,-133.87 210.59,-133.87 214.09,-133.87 210.59,-130.72 217.59,-133.87 217.59,-133.87\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"190.74\" y=\"-137.67\" font-family=\"Lato\" font-size=\"14.00\">a</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1 -->\n",
|
|
"<g id=\"node4\" class=\"node\">\n",
|
|
"<title>1</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"590.86\" cy=\"-119.87\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"590.86\" y=\"-116.17\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->0 -->\n",
|
|
"<g id=\"edge3\" class=\"edge\">\n",
|
|
"<title>1->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M588.22,-137.84C583.45,-178.46 565.67,-273.87 503.99,-273.87 151.74,-273.87 151.74,-273.87 151.74,-273.87 124.82,-273.87 101.15,-253.22 85.51,-235.02\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"80.93,-229.48 87.82,-232.86 83.16,-232.18 85.39,-234.87 85.39,-234.87 85.39,-234.87 83.16,-232.18 82.96,-236.88 80.93,-229.48 80.93,-229.48\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"293.11\" y=\"-277.67\" font-family=\"Lato\" font-size=\"14.00\">!a</text>\n",
|
|
"</g>\n",
|
|
"<!-- 5 -->\n",
|
|
"<g id=\"node5\" class=\"node\">\n",
|
|
"<title>5</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"669.86\" cy=\"-119.87\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"669.86\" y=\"-116.17\" font-family=\"Lato\" font-size=\"14.00\">5</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->5 -->\n",
|
|
"<g id=\"edge4\" class=\"edge\">\n",
|
|
"<title>1->5</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M608.95,-119.87C619.41,-119.87 632.98,-119.87 644.55,-119.87\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"651.82,-119.87 644.82,-123.02 648.32,-119.87 644.82,-119.87 644.82,-119.87 644.82,-119.87 648.32,-119.87 644.82,-116.72 651.82,-119.87 651.82,-119.87\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"626.86\" y=\"-123.67\" font-family=\"Lato\" font-size=\"14.00\">a</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4 -->\n",
|
|
"<g id=\"node8\" class=\"node\">\n",
|
|
"<title>4</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"761.73\" cy=\"-211.87\" rx=\"26.74\" ry=\"26.74\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"757.23\" y=\"-215.67\" font-family=\"Lato\" font-size=\"14.00\">4</text>\n",
|
|
"<text text-anchor=\"start\" x=\"753.73\" y=\"-200.67\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#ff7f00\">❷</text>\n",
|
|
"</g>\n",
|
|
"<!-- 5->4 -->\n",
|
|
"<g id=\"edge9\" class=\"edge\">\n",
|
|
"<title>5->4</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M682.98,-132.28C696.78,-146.41 719.68,-169.85 737.06,-187.64\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"742.26,-192.97 735.12,-190.16 739.81,-190.46 737.37,-187.96 737.37,-187.96 737.37,-187.96 739.81,-190.46 739.62,-185.76 742.26,-192.97 742.26,-192.97\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"705.86\" y=\"-169.67\" font-family=\"Lato\" font-size=\"14.00\">!a</text>\n",
|
|
"</g>\n",
|
|
"<!-- 9 -->\n",
|
|
"<g id=\"node9\" class=\"node\">\n",
|
|
"<title>9</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"761.73\" cy=\"-100.87\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"761.73\" y=\"-97.17\" font-family=\"Lato\" font-size=\"14.00\">9</text>\n",
|
|
"</g>\n",
|
|
"<!-- 5->9 -->\n",
|
|
"<g id=\"edge10\" class=\"edge\">\n",
|
|
"<title>5->9</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M687.76,-116.3C701.57,-113.38 721.26,-109.21 736.7,-105.95\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"743.9,-104.43 737.7,-108.96 740.47,-105.15 737.05,-105.88 737.05,-105.88 737.05,-105.88 740.47,-105.15 736.4,-102.79 743.9,-104.43 743.9,-104.43\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"707.86\" y=\"-115.67\" font-family=\"Lato\" font-size=\"14.00\">a</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3->1 -->\n",
|
|
"<g id=\"edge7\" class=\"edge\">\n",
|
|
"<title>3->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M325.06,-48.08C356.76,-43.04 412.34,-37.32 458.12,-48.87 501.08,-59.71 545.27,-87.62 569.98,-105.04\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"575.83,-109.23 568.31,-107.72 572.99,-107.19 570.14,-105.16 570.14,-105.16 570.14,-105.16 572.99,-107.19 571.97,-102.59 575.83,-109.23 575.83,-109.23\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"427.75\" y=\"-52.67\" font-family=\"Lato\" font-size=\"14.00\">a</text>\n",
|
|
"</g>\n",
|
|
"<!-- 7 -->\n",
|
|
"<g id=\"node10\" class=\"node\">\n",
|
|
"<title>7</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"431.25\" cy=\"-99.87\" rx=\"26.74\" ry=\"26.74\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"426.75\" y=\"-103.67\" font-family=\"Lato\" font-size=\"14.00\">7</text>\n",
|
|
"<text text-anchor=\"start\" x=\"423.25\" y=\"-88.67\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#6a3d9a\">❸</text>\n",
|
|
"</g>\n",
|
|
"<!-- 6->7 -->\n",
|
|
"<g id=\"edge11\" class=\"edge\">\n",
|
|
"<title>6->7</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M252.08,-126.17C258.08,-123.46 265.1,-120.65 271.74,-118.87 314.17,-107.49 364.83,-102.92 397.25,-101.09\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"404.29,-100.72 397.46,-104.23 400.79,-100.9 397.3,-101.08 397.3,-101.08 397.3,-101.08 400.79,-100.9 397.13,-97.94 404.29,-100.72 404.29,-100.72\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"293.11\" y=\"-122.67\" font-family=\"Lato\" font-size=\"14.00\">!a</text>\n",
|
|
"</g>\n",
|
|
"<!-- 10 -->\n",
|
|
"<g id=\"node11\" class=\"node\">\n",
|
|
"<title>10</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"364.93\" cy=\"-148.87\" rx=\"21.4\" ry=\"21.4\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"364.93\" y=\"-145.17\" font-family=\"Lato\" font-size=\"14.00\">10</text>\n",
|
|
"</g>\n",
|
|
"<!-- 6->10 -->\n",
|
|
"<g id=\"edge12\" class=\"edge\">\n",
|
|
"<title>6->10</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M253.63,-135.86C274.79,-138.36 311.31,-142.66 336.5,-145.64\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"343.6,-146.47 336.28,-148.78 340.13,-146.06 336.65,-145.65 336.65,-145.65 336.65,-145.65 340.13,-146.06 337.02,-142.52 343.6,-146.47 343.6,-146.47\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"295.11\" y=\"-147.67\" font-family=\"Lato\" font-size=\"14.00\">a</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4->2 -->\n",
|
|
"<g id=\"edge8\" class=\"edge\">\n",
|
|
"<title>4->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M735.84,-220.04C717.97,-225.19 693.18,-230.87 670.86,-230.87 234.74,-230.87 234.74,-230.87 234.74,-230.87 196.55,-230.87 172.85,-186.03 161.59,-157.33\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"159.12,-150.77 164.53,-156.21 160.35,-154.04 161.58,-157.32 161.58,-157.32 161.58,-157.32 160.35,-154.04 158.64,-158.43 159.12,-150.77 159.12,-150.77\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"499.49\" y=\"-234.67\" font-family=\"Lato\" font-size=\"14.00\">a</text>\n",
|
|
"</g>\n",
|
|
"<!-- 9->9 -->\n",
|
|
"<g id=\"edge16\" class=\"edge\">\n",
|
|
"<title>9->9</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M753.09,-116.79C750.84,-127.02 753.72,-136.87 761.73,-136.87 767.86,-136.87 770.98,-131.1 771.1,-123.8\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"770.36,-116.79 774.23,-123.42 770.73,-120.27 771.09,-123.75 771.09,-123.75 771.09,-123.75 770.73,-120.27 767.96,-124.08 770.36,-116.79 770.36,-116.79\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"758.23\" y=\"-140.67\" font-family=\"Lato\" font-size=\"14.00\">a</text>\n",
|
|
"</g>\n",
|
|
"<!-- 8 -->\n",
|
|
"<g id=\"node12\" class=\"node\">\n",
|
|
"<title>8</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"862.47\" cy=\"-26.87\" rx=\"26.74\" ry=\"26.74\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"857.97\" y=\"-30.67\" font-family=\"Lato\" font-size=\"14.00\">8</text>\n",
|
|
"<text text-anchor=\"start\" x=\"854.47\" y=\"-15.67\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#33a02c\">❹</text>\n",
|
|
"</g>\n",
|
|
"<!-- 9->8 -->\n",
|
|
"<g id=\"edge15\" class=\"edge\">\n",
|
|
"<title>9->8</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M776.87,-90.27C791.82,-79.07 815.76,-61.13 834.36,-47.18\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"840.44,-42.63 836.73,-49.34 837.64,-44.72 834.84,-46.82 834.84,-46.82 834.84,-46.82 837.64,-44.72 832.95,-44.3 840.44,-42.63 840.44,-42.63\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"806.6\" y=\"-70.67\" font-family=\"Lato\" font-size=\"14.00\">!a</text>\n",
|
|
"</g>\n",
|
|
"<!-- 7->1 -->\n",
|
|
"<g id=\"edge13\" class=\"edge\">\n",
|
|
"<title>7->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M458.42,-101.65C478.12,-103.14 505.75,-105.56 529.86,-108.87 541.91,-110.53 555.22,-112.91 566.24,-115.04\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"573.11,-116.39 565.63,-118.13 569.68,-115.71 566.24,-115.04 566.24,-115.04 566.24,-115.04 569.68,-115.71 566.85,-111.95 573.11,-116.39 573.11,-116.39\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"499.49\" y=\"-112.67\" font-family=\"Lato\" font-size=\"14.00\">a</text>\n",
|
|
"</g>\n",
|
|
"<!-- 10->10 -->\n",
|
|
"<g id=\"edge18\" class=\"edge\">\n",
|
|
"<title>10->10</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M353.33,-167.13C350.75,-178.05 354.62,-188.32 364.93,-188.32 372.98,-188.32 377.11,-182.05 377.3,-174.1\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"376.53,-167.13 380.43,-173.74 376.91,-170.61 377.3,-174.09 377.3,-174.09 377.3,-174.09 376.91,-170.61 374.16,-174.43 376.53,-167.13 376.53,-167.13\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"361.43\" y=\"-192.12\" font-family=\"Lato\" font-size=\"14.00\">a</text>\n",
|
|
"</g>\n",
|
|
"<!-- 11 -->\n",
|
|
"<g id=\"node13\" class=\"node\">\n",
|
|
"<title>11</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"502.99\" cy=\"-159.87\" rx=\"26.74\" ry=\"26.74\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"494.49\" y=\"-163.67\" font-family=\"Lato\" font-size=\"14.00\">11</text>\n",
|
|
"<text text-anchor=\"start\" x=\"494.99\" y=\"-148.67\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#e31a1c\">❺</text>\n",
|
|
"</g>\n",
|
|
"<!-- 10->11 -->\n",
|
|
"<g id=\"edge17\" class=\"edge\">\n",
|
|
"<title>10->11</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M386.59,-150.54C408.47,-152.31 443.33,-155.13 469.01,-157.2\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"476,-157.77 468.77,-160.34 472.51,-157.49 469.02,-157.2 469.02,-157.2 469.02,-157.2 472.51,-157.49 469.27,-154.06 476,-157.77 476,-157.77\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"425.75\" y=\"-159.67\" font-family=\"Lato\" font-size=\"14.00\">!a</text>\n",
|
|
"</g>\n",
|
|
"<!-- 8->2 -->\n",
|
|
"<g id=\"edge14\" class=\"edge\">\n",
|
|
"<title>8->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M836.08,-20.45C816.24,-16 787.91,-10.87 762.73,-10.87 234.74,-10.87 234.74,-10.87 234.74,-10.87 188.19,-10.87 166.89,-73.07 158.46,-109.01\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"156.85,-116.25 155.29,-108.73 157.61,-112.83 158.37,-109.41 158.37,-109.41 158.37,-109.41 157.61,-112.83 161.45,-110.1 156.85,-116.25 156.85,-116.25\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"547.86\" y=\"-14.67\" font-family=\"Lato\" font-size=\"14.00\">a</text>\n",
|
|
"</g>\n",
|
|
"<!-- 11->1 -->\n",
|
|
"<g id=\"edge19\" class=\"edge\">\n",
|
|
"<title>11->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M527.91,-148.73C540.38,-142.92 555.55,-135.85 567.75,-130.17\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"574.19,-127.17 569.17,-132.98 571.01,-128.65 567.84,-130.13 567.84,-130.13 567.84,-130.13 571.01,-128.65 566.51,-127.27 574.19,-127.17 574.19,-127.17\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"547.86\" y=\"-141.67\" font-family=\"Lato\" font-size=\"14.00\">a</text>\n",
|
|
"</g>\n",
|
|
"</g>\n",
|
|
"</svg>\n"
|
|
],
|
|
"text/plain": [
|
|
"<spot.jupyter.SVG object>"
|
|
]
|
|
},
|
|
"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=\"734pt\" height=\"172pt\"\n",
|
|
" viewBox=\"0.00 0.00 734.00 172.28\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
|
|
"<g id=\"graph0\" class=\"graph\" transform=\"scale(0.7633587786259541 0.7633587786259541) rotate(0) translate(4 221.8)\">\n",
|
|
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-221.8 958,-221.8 958,4 -4,4\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"454\" y=\"-187.6\" font-family=\"Lato\" font-size=\"14.00\">[Büchi]</text>\n",
|
|
"<!-- I -->\n",
|
|
"<!-- 1 -->\n",
|
|
"<g id=\"node2\" class=\"node\">\n",
|
|
"<title>1</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-79\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"56\" y=\"-75.3\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
|
|
"</g>\n",
|
|
"<!-- I->1 -->\n",
|
|
"<g id=\"edge1\" class=\"edge\">\n",
|
|
"<title>I->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M1.15,-79C2.79,-79 17.15,-79 30.63,-79\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"37.94,-79 30.94,-82.15 34.44,-79 30.94,-79 30.94,-79 30.94,-79 34.44,-79 30.94,-75.85 37.94,-79 37.94,-79\"/>\n",
|
|
"</g>\n",
|
|
"<!-- 1->1 -->\n",
|
|
"<g id=\"edge3\" class=\"edge\">\n",
|
|
"<title>1->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M49.62,-96.04C48.32,-105.86 50.45,-115 56,-115 60.17,-115 62.4,-109.86 62.71,-103.14\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"62.38,-96.04 65.85,-102.88 62.54,-99.53 62.71,-103.03 62.71,-103.03 62.71,-103.03 62.54,-99.53 59.56,-103.18 62.38,-96.04 62.38,-96.04\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"42.5\" y=\"-118.8\" font-family=\"Lato\" font-size=\"14.00\">a | b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 7 -->\n",
|
|
"<g id=\"node5\" class=\"node\">\n",
|
|
"<title>7</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"165\" cy=\"-113\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"165\" y=\"-109.3\" font-family=\"Lato\" font-size=\"14.00\">7</text>\n",
|
|
"</g>\n",
|
|
"<!-- 1->7 -->\n",
|
|
"<g id=\"edge4\" class=\"edge\">\n",
|
|
"<title>1->7</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M73.25,-84.16C91.24,-89.88 120.39,-99.14 140.78,-105.62\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"147.6,-107.79 139.97,-108.67 144.26,-106.73 140.92,-105.67 140.92,-105.67 140.92,-105.67 144.26,-106.73 141.88,-102.67 147.6,-107.79 147.6,-107.79\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"92\" y=\"-104.8\" font-family=\"Lato\" font-size=\"14.00\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0 -->\n",
|
|
"<g id=\"node3\" class=\"node\">\n",
|
|
"<title>0</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"278\" cy=\"-113\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<ellipse fill=\"none\" stroke=\"black\" cx=\"278\" cy=\"-113\" rx=\"22\" ry=\"22\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"278\" y=\"-109.3\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4 -->\n",
|
|
"<g id=\"node4\" class=\"node\">\n",
|
|
"<title>4</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"391\" cy=\"-80\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"391\" y=\"-76.3\" font-family=\"Lato\" font-size=\"14.00\">4</text>\n",
|
|
"</g>\n",
|
|
"<!-- 0->4 -->\n",
|
|
"<g id=\"edge2\" class=\"edge\">\n",
|
|
"<title>0->4</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M299.36,-106.95C318.31,-101.31 346.55,-92.92 366.46,-87\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"373.39,-84.94 367.58,-89.95 370.03,-85.94 366.68,-86.93 366.68,-86.93 366.68,-86.93 370.03,-85.94 365.78,-83.91 373.39,-84.94 373.39,-84.94\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"318\" y=\"-104.8\" font-family=\"Lato\" font-size=\"14.00\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4->1 -->\n",
|
|
"<g id=\"edge10\" class=\"edge\">\n",
|
|
"<title>4->1</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M372.74,-79.95C317.68,-79.78 146.12,-79.27 81.74,-79.07\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"74.43,-79.05 81.44,-75.92 77.93,-79.06 81.43,-79.07 81.43,-79.07 81.43,-79.07 77.93,-79.06 81.43,-82.22 74.43,-79.05 74.43,-79.05\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"201\" y=\"-82.8\" font-family=\"Lato\" font-size=\"14.00\">!a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 5 -->\n",
|
|
"<g id=\"node10\" class=\"node\">\n",
|
|
"<title>5</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"500\" cy=\"-80\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"500\" y=\"-76.3\" font-family=\"Lato\" font-size=\"14.00\">5</text>\n",
|
|
"</g>\n",
|
|
"<!-- 4->5 -->\n",
|
|
"<g id=\"edge9\" class=\"edge\">\n",
|
|
"<title>4->5</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M409.19,-80C426.9,-80 454.65,-80 474.62,-80\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"481.85,-80 474.85,-83.15 478.35,-80 474.85,-80 474.85,-80 474.85,-80 478.35,-80 474.85,-76.85 481.85,-80 481.85,-80\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"427\" y=\"-83.8\" font-family=\"Lato\" font-size=\"14.00\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 7->0 -->\n",
|
|
"<g id=\"edge15\" class=\"edge\">\n",
|
|
"<title>7->0</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M183.34,-113C200.83,-113 228.11,-113 248.73,-113\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"255.99,-113 248.99,-116.15 252.49,-113 248.99,-113 248.99,-113 248.99,-113 252.49,-113 248.99,-109.85 255.99,-113 255.99,-113\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"201\" y=\"-116.8\" font-family=\"Lato\" font-size=\"14.00\">!a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2 -->\n",
|
|
"<g id=\"node6\" class=\"node\">\n",
|
|
"<title>2</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"663.5\" cy=\"-97\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"663.5\" y=\"-93.3\" font-family=\"Lato\" font-size=\"14.00\">2</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->2 -->\n",
|
|
"<g id=\"edge5\" class=\"edge\">\n",
|
|
"<title>2->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M654.27,-112.54C651.67,-122.91 654.75,-133 663.5,-133 670.2,-133 673.58,-127.08 673.62,-119.66\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"672.73,-112.54 676.73,-119.1 673.17,-116.01 673.6,-119.49 673.6,-119.49 673.6,-119.49 673.17,-116.01 670.48,-119.88 672.73,-112.54 672.73,-112.54\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"650\" y=\"-136.8\" font-family=\"Lato\" font-size=\"14.00\">a | b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 8 -->\n",
|
|
"<g id=\"node7\" class=\"node\">\n",
|
|
"<title>8</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"936\" cy=\"-97\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"936\" y=\"-93.3\" font-family=\"Lato\" font-size=\"14.00\">8</text>\n",
|
|
"</g>\n",
|
|
"<!-- 2->8 -->\n",
|
|
"<g id=\"edge6\" class=\"edge\">\n",
|
|
"<title>2->8</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M681.83,-97C728.5,-97 856.87,-97 910.72,-97\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"917.81,-97 910.81,-100.15 914.31,-97 910.81,-97 910.81,-97 910.81,-97 914.31,-97 910.81,-93.85 917.81,-97 917.81,-97\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"754\" y=\"-100.8\" font-family=\"Lato\" font-size=\"14.00\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 8->7 -->\n",
|
|
"<g id=\"edge16\" class=\"edge\">\n",
|
|
"<title>8->7</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M923.3,-110.36C905.05,-129.64 867.72,-163 828,-163 277,-163 277,-163 277,-163 242.57,-163 207,-142.75 185.7,-128.02\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"179.82,-123.85 187.35,-125.33 182.67,-125.88 185.52,-127.9 185.52,-127.9 185.52,-127.9 182.67,-125.88 183.7,-130.47 179.82,-123.85 179.82,-123.85\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"536\" y=\"-166.8\" font-family=\"Lato\" font-size=\"14.00\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3 -->\n",
|
|
"<g id=\"node8\" class=\"node\">\n",
|
|
"<title>3</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"718\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"718\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\">3</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3->3 -->\n",
|
|
"<g id=\"edge7\" class=\"edge\">\n",
|
|
"<title>3->3</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M708.77,-33.54C706.17,-43.91 709.25,-54 718,-54 724.7,-54 728.08,-48.08 728.12,-40.66\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"727.23,-33.54 731.23,-40.1 727.67,-37.01 728.1,-40.49 728.1,-40.49 728.1,-40.49 727.67,-37.01 724.98,-40.88 727.23,-33.54 727.23,-33.54\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"704.5\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\">a | b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 9 -->\n",
|
|
"<g id=\"node9\" class=\"node\">\n",
|
|
"<title>9</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"827\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"827\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\">9</text>\n",
|
|
"</g>\n",
|
|
"<!-- 3->9 -->\n",
|
|
"<g id=\"edge8\" class=\"edge\">\n",
|
|
"<title>3->9</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M736.19,-18C753.9,-18 781.65,-18 801.62,-18\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"808.85,-18 801.85,-21.15 805.35,-18 801.85,-18 801.85,-18 801.85,-18 805.35,-18 801.85,-14.85 808.85,-18 808.85,-18\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"754\" y=\"-21.8\" font-family=\"Lato\" font-size=\"14.00\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 9->8 -->\n",
|
|
"<g id=\"edge17\" class=\"edge\">\n",
|
|
"<title>9->8</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M842.6,-27.61C857.33,-37.42 880.61,-53.27 900,-68 905.45,-72.14 911.22,-76.79 916.47,-81.15\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"921.92,-85.71 914.53,-83.63 919.23,-83.47 916.55,-81.22 916.55,-81.22 916.55,-81.22 919.23,-83.47 918.57,-78.8 921.92,-85.71 921.92,-85.71\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"863\" y=\"-71.8\" font-family=\"Lato\" font-size=\"14.00\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 9->9 -->\n",
|
|
"<g id=\"edge18\" class=\"edge\">\n",
|
|
"<title>9->9</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M817.77,-33.54C815.17,-43.91 818.25,-54 827,-54 833.7,-54 837.08,-48.08 837.12,-40.66\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"836.23,-33.54 840.23,-40.1 836.67,-37.01 837.1,-40.49 837.1,-40.49 837.1,-40.49 836.67,-37.01 833.98,-40.88 836.23,-33.54 836.23,-33.54\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"808.5\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 5->2 -->\n",
|
|
"<g id=\"edge12\" class=\"edge\">\n",
|
|
"<title>5->2</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M517.98,-81.79C546.74,-84.81 605.13,-90.96 638.22,-94.44\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"645.26,-95.19 637.97,-97.59 641.78,-94.82 638.3,-94.45 638.3,-94.45 638.3,-94.45 641.78,-94.82 638.63,-91.32 645.26,-95.19 645.26,-95.19\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"536\" y=\"-90.8\" font-family=\"Lato\" font-size=\"14.00\">!a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 6 -->\n",
|
|
"<g id=\"node11\" class=\"node\">\n",
|
|
"<title>6</title>\n",
|
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"609\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
|
|
"<text text-anchor=\"middle\" x=\"609\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\">6</text>\n",
|
|
"</g>\n",
|
|
"<!-- 5->6 -->\n",
|
|
"<g id=\"edge11\" class=\"edge\">\n",
|
|
"<title>5->6</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M515.88,-71.38C534.3,-60.7 565.8,-42.45 586.76,-30.31\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"592.9,-26.75 588.43,-32.98 589.88,-28.5 586.85,-30.26 586.85,-30.26 586.85,-30.26 589.88,-28.5 585.27,-27.53 592.9,-26.75 592.9,-26.75\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"536\" y=\"-62.8\" font-family=\"Lato\" font-size=\"14.00\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 6->3 -->\n",
|
|
"<g id=\"edge14\" class=\"edge\">\n",
|
|
"<title>6->3</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M627.19,-18C644.9,-18 672.65,-18 692.62,-18\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"699.85,-18 692.85,-21.15 696.35,-18 692.85,-18 692.85,-18 692.85,-18 696.35,-18 692.85,-14.85 699.85,-18 699.85,-18\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"645\" y=\"-21.8\" font-family=\"Lato\" font-size=\"14.00\">!a & b</text>\n",
|
|
"</g>\n",
|
|
"<!-- 6->6 -->\n",
|
|
"<g id=\"edge13\" class=\"edge\">\n",
|
|
"<title>6->6</title>\n",
|
|
"<path fill=\"none\" stroke=\"black\" d=\"M599.77,-33.54C597.17,-43.91 600.25,-54 609,-54 615.7,-54 619.08,-48.08 619.12,-40.66\"/>\n",
|
|
"<polygon fill=\"black\" stroke=\"black\" points=\"618.23,-33.54 622.23,-40.1 618.67,-37.01 619.1,-40.49 619.1,-40.49 619.1,-40.49 618.67,-37.01 615.98,-40.88 618.23,-33.54 618.23,-33.54\"/>\n",
|
|
"<text text-anchor=\"start\" x=\"590.5\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\">a & !b</text>\n",
|
|
"</g>\n",
|
|
"</g>\n",
|
|
"</svg>\n"
|
|
],
|
|
"text/plain": [
|
|
"<spot.jupyter.SVG object>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"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'))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Multiple automata can be generated using the `aut_patterns()` function, which works similarly to `ltl_patterns()`."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"3\n",
|
|
"5\n",
|
|
"7\n",
|
|
"9\n",
|
|
"11\n",
|
|
"13\n",
|
|
"15\n",
|
|
"17\n",
|
|
"19\n",
|
|
"21\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"for aut in sg.aut_patterns(sg.AUT_KS_NCA):\n",
|
|
" print(aut.num_states())"
|
|
]
|
|
}
|
|
],
|
|
"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.7.5"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|