{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"These examples are tests for scc_info on alternating automata."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from IPython.display import display\n",
"import spot\n",
"spot.setup(show_default='.bas')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n"
],
"text/plain": [
" *' at 0x7f41e84e9810> >"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"spot.automaton('''\n",
"HOA: v1\n",
"States: 2\n",
"Start: 0&1\n",
"AP: 2 \"a\" \"b\"\n",
"acc-name: Buchi\n",
"Acceptance: 1 Inf(0)\n",
"--BODY--\n",
"State: 0\n",
"[0] 0\n",
"[!0] 1\n",
"State: 1\n",
"[1] 1 {0}\n",
"--END--\n",
"''')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"universal edges are handled as if they were many distinct existencial edges from the point of view of `scc_info`, so the acceptance / rejection status is not always meaningful."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n"
],
"text/plain": [
" *' at 0x7f41e8571900> >"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"spot.automaton('''\n",
"HOA: v1\n",
"States: 2\n",
"Start: 0&1\n",
"AP: 2 \"a\" \"b\"\n",
"Acceptance: 1 Fin(0)\n",
"--BODY--\n",
"State: 0\n",
"[0] 0&1 {0}\n",
"State: 1\n",
"[1] 1\n",
"--END--\n",
"''')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n"
],
"text/plain": [
" *' at 0x7f41e85070f0> >"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"spot.automaton('''\n",
"HOA: v1\n",
"States: 2\n",
"Start: 0&1\n",
"AP: 2 \"a\" \"b\"\n",
"Acceptance: 1 Fin(0)\n",
"--BODY--\n",
"State: 0\n",
"[0] 0 {0}\n",
"[!0] 1\n",
"State: 1\n",
"[1] 1&0\n",
"--END--\n",
"''')"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n"
],
"text/plain": [
" *' at 0x7f41e8507120> >"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"spot.automaton('''\n",
"HOA: v1\n",
"States: 2\n",
"Start: 0\n",
"AP: 2 \"a\" \"b\"\n",
"Acceptance: 1 Fin(0)\n",
"--BODY--\n",
"State: 0\n",
"[0] 0\n",
"[!0] 1 {0}\n",
"State: 1\n",
"[1] 1&0\n",
"--END--\n",
"''')"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n"
],
"text/plain": [
" *' at 0x7f41e8507150> >"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"spot.automaton('''\n",
"HOA: v1\n",
"States: 2\n",
"Start: 0\n",
"AP: 2 \"a\" \"b\"\n",
"Acceptance: 1 Fin(0)\n",
"--BODY--\n",
"State: 0\n",
"[0] 0 {0}\n",
"[!0] 1 \n",
"State: 1\n",
"[1] 1&0 {0}\n",
"--END--\n",
"''')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A corner case for the dot printer"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n"
],
"text/plain": [
" *' at 0x7f41e8507630> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n"
],
"text/plain": [
" *' at 0x7f41e84e98a0> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n"
],
"text/plain": [
" *' at 0x7f41e9624660> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/svg+xml": [
""
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"for a in spot.automata('''\n",
"HOA: v1\n",
"States: 3\n",
"Start: 0\n",
"AP: 2 \"a\" \"b\"\n",
"Acceptance: 1 Fin(0)\n",
"--BODY--\n",
"State: 0\n",
"[0] 1&2\n",
"State: 1\n",
"[1] 1&2 {0}\n",
"State: 2\n",
"[1] 2\n",
"--END--\n",
"HOA: v1\n",
"States: 3\n",
"Start: 0\n",
"AP: 2 \"a\" \"b\"\n",
"Acceptance: 1 Fin(0)\n",
"--BODY--\n",
"State: 0\n",
"[0] 1&2\n",
"State: 1\n",
"[1] 1 {0}\n",
"State: 2\n",
"[1] 2\n",
"--END--\n",
"'''):\n",
" display(a)\n",
"\n",
"a = spot.automaton('''\n",
"HOA: v1\n",
"States: 3\n",
"Start: 0&2\n",
"AP: 2 \"a\" \"b\"\n",
"Acceptance: 1 Fin(0)\n",
"spot.highlight.edges: 2 2\n",
"--BODY--\n",
"State: 0\n",
"[0] 1&2\n",
"State: 1\n",
"[1] 1&2 {0}\n",
"State: 2\n",
"[1] 1&2\n",
"--END--\n",
"''')\n",
"display(a, a.show('.basy'))"
]
}
],
"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"
}
},
"nbformat": 4,
"nbformat_minor": 2
}