{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Test the optimization of `product()` for weak arguments."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import spot\n",
"spot.setup()\n",
"from spot.jupyter import display_inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"auts = list(spot.automata(\"\"\"\n",
"HOA: v1\n",
"name: \"a\"\n",
"States: 2\n",
"Start: 1\n",
"AP: 1 \"a\"\n",
"acc-name: all\n",
"Acceptance: 0 t\n",
"properties: trans-labels explicit-labels state-acc deterministic\n",
"properties: stutter-invariant terminal\n",
"--BODY--\n",
"State: 0\n",
"[t] 0\n",
"State: 1\n",
"[0] 0\n",
"--END--\n",
"HOA: v1\n",
"name: \"Fb\"\n",
"States: 2\n",
"Start: 1\n",
"AP: 1 \"b\"\n",
"acc-name: Buchi\n",
"Acceptance: 1 Inf(0)\n",
"properties: trans-labels explicit-labels state-acc complete\n",
"properties: deterministic stutter-invariant terminal\n",
"--BODY--\n",
"State: 0 {0}\n",
"[t] 0\n",
"State: 1\n",
"[0] 0\n",
"[!0] 1\n",
"--END--\n",
"HOA: v1\n",
"name: \"Fb\"\n",
"States: 2\n",
"Start: 1\n",
"AP: 1 \"b\"\n",
"acc-name: co-Buchi\n",
"Acceptance: 1 Fin(0)\n",
"properties: trans-labels explicit-labels state-acc complete\n",
"properties: deterministic stutter-invariant terminal\n",
"--BODY--\n",
"State: 0 \n",
"[t] 0\n",
"State: 1 {0}\n",
"[0] 0\n",
"[!0] 1\n",
"--END--\n",
"HOA: v1\n",
"name: \"GFc\"\n",
"States: 1\n",
"Start: 0\n",
"AP: 1 \"c\"\n",
"acc-name: Buchi\n",
"Acceptance: 1 Inf(0)\n",
"properties: trans-labels explicit-labels trans-acc complete\n",
"properties: deterministic stutter-invariant\n",
"--BODY--\n",
"State: 0\n",
"[!0] 0\n",
"[0] 0 {0}\n",
"--END--\n",
"HOA: v1\n",
"name: \"FGd\"\n",
"States: 1\n",
"Start: 0\n",
"AP: 1 \"c\"\n",
"acc-name: co-Buchi\n",
"Acceptance: 1 Fin(0)\n",
"properties: trans-labels explicit-labels trans-acc complete\n",
"properties: deterministic stutter-invariant\n",
"--BODY--\n",
"State: 0\n",
"[!0] 0 {0}\n",
"[0] 0\n",
"--END--\n",
"HOA: v1\n",
"States: 1\n",
"Start: 0\n",
"AP: 1 \"d\"\n",
"Acceptance: 1 Inf(0)&Fin(0)\n",
"--BODY--\n",
"State: 0\n",
"[!0] 0 {0}\n",
"[0] 0\n",
"--END--\n",
"HOA: v1\n",
"States: 1\n",
"Start: 0\n",
"AP: 1 \"d\"\n",
"Acceptance: 1 Inf(0)|Fin(0)\n",
"--BODY--\n",
"State: 0 \n",
"[!0] 0 {0}\n",
"[0] 0\n",
"--END--\n",
"\"\"\"))"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"7"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(auts)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"a \n",
" \n",
"t \n",
"[all] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"a \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n"
],
"text/plain": [
" *' at 0x7f26743d3720> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"a \n",
" \n",
"t \n",
"[all] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"a \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"t \n",
"[all] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"2,2 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"Fb \n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & b \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"a & !b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"2->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!b \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & b \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"a & !b \n",
" \n",
"\n",
"\n",
"3 \n",
"\n",
"\n",
"2,0 \n",
" \n",
"\n",
"\n",
"0->3 \n",
" \n",
" \n",
"!a & b \n",
" \n",
"\n",
"\n",
"4 \n",
"\n",
"2,1 \n",
" \n",
"\n",
"\n",
"0->4 \n",
" \n",
" \n",
"!a & !b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"2->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"3->3 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"4->3 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"4->4 \n",
" \n",
" \n",
"!b \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"Fb \n",
" \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & b \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"a & !b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"2->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!b \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & b \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"a & !b \n",
" \n",
"\n",
"\n",
"3 \n",
"\n",
"\n",
"2,0 \n",
" \n",
"\n",
"\n",
"0->3 \n",
" \n",
" \n",
"!a & b \n",
" \n",
"\n",
"\n",
"4 \n",
"\n",
"2,1 \n",
" \n",
"\n",
"\n",
"0->4 \n",
" \n",
" \n",
"!a & !b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"2->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"3->3 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"4->3 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"4->4 \n",
" \n",
" \n",
"!b \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"GFc \n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !c \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"2,0 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"FGd \n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !c \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & c \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"2,0 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & !c \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
") \n",
"[Rabin-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
") \n",
"[Rabin-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"2,0 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!d \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") | Fin( \n",
"⓿ \n",
") \n",
"[Streett-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") | Fin( \n",
"⓿ \n",
") \n",
"[Streett-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !d \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & d \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"2,0 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & !d \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"autslen = len(auts)\n",
"# In a previous version we used to iterate over all possible left automata with \"for left in auts:\"\n",
"# however we had trouble with Jupyter on i386, where running the full loop abort with some low-level \n",
"# exeptions from Jupyter client. Halving the loop helped for some times, but then the timeout\n",
"# came back. So we do one left automaton at a time.\n",
"left = auts[0]\n",
"display(left)\n",
"for right in auts:\n",
" display_inline(right, spot.product(left, right), spot.product_or(left, right))"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"Fb \n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n"
],
"text/plain": [
" *' at 0x7f26743d36c0> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"a \n",
" \n",
"t \n",
"[all] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"a \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & b \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"a & !b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"2->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!b \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & b \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"\n",
"0,2 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & b \n",
" \n",
"\n",
"\n",
"3 \n",
"\n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"0->3 \n",
" \n",
" \n",
"a & !b \n",
" \n",
"\n",
"\n",
"4 \n",
"\n",
"1,2 \n",
" \n",
"\n",
"\n",
"0->4 \n",
" \n",
" \n",
"!a & !b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"3->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"3->3 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"4->2 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"4->4 \n",
" \n",
" \n",
"!b \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"Fb \n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"Fb \n",
" \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"GFc \n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"FGd \n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
") \n",
"[Rabin-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
") \n",
"[Rabin-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") | Fin( \n",
"⓿ \n",
") \n",
"[Streett-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") | Fin( \n",
"⓿ \n",
") \n",
"[Streett-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"left = auts[1]\n",
"display(left)\n",
"for right in auts:\n",
" display_inline(right, spot.product(left, right), spot.product_or(left, right))"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"Fb \n",
" \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n"
],
"text/plain": [
" *' at 0x7f26743d37e0> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"a \n",
" \n",
"t \n",
"[all] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"a \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & b \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"a & !b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"2->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!b \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & b \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"\n",
"0,2 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & b \n",
" \n",
"\n",
"\n",
"3 \n",
"\n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"0->3 \n",
" \n",
" \n",
"a & !b \n",
" \n",
"\n",
"\n",
"4 \n",
"\n",
"1,2 \n",
" \n",
"\n",
"\n",
"0->4 \n",
" \n",
" \n",
"!a & !b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"3->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"3->3 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"4->2 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"4->4 \n",
" \n",
" \n",
"!b \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"Fb \n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"Fb \n",
" \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"GFc \n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"FGd \n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
") \n",
"[Rabin-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
") \n",
"[Rabin-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") | Fin( \n",
"⓿ \n",
") \n",
"[Streett-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") | Fin( \n",
"⓿ \n",
") \n",
"[Streett-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"left = auts[2]\n",
"display(left)\n",
"for right in auts:\n",
" display_inline(right, spot.product(left, right), spot.product_or(left, right))"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"GFc \n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n"
],
"text/plain": [
" *' at 0x7f26743d3870> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"a \n",
" \n",
"t \n",
"[all] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"a \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !c \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"0,2 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"Fb \n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"Fb \n",
" \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"GFc \n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
") \n",
"[gen. Büchi 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
"❶ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"FGd \n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
") \n",
"[Rabin-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") | Fin( \n",
"❶ \n",
") \n",
"[gen. Streett 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
") \n",
"[Rabin-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
")) & Fin( \n",
"❶ \n",
") \n",
"[Streett-like 3] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") | (Inf( \n",
"❶ \n",
") & Fin( \n",
"❶ \n",
")) \n",
"[Rabin-like 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") | Fin( \n",
"⓿ \n",
") \n",
"[Streett-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") & (Inf( \n",
"❶ \n",
") | Fin( \n",
"❶ \n",
")) \n",
"[Streett-like 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") | Inf( \n",
"❶ \n",
") | Fin( \n",
"❶ \n",
") \n",
"[Rabin-like 3] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"left = auts[3]\n",
"display(left)\n",
"for right in auts:\n",
" display_inline(right, spot.product(left, right), spot.product_or(left, right))"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"FGd \n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n"
],
"text/plain": [
" *' at 0x7f26743d3900> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"a \n",
" \n",
"t \n",
"[all] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"a \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !c \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & c \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"0,2 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & !c \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"Fb \n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"Fb \n",
" \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"GFc \n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Fin( \n",
"⓿ \n",
") & Inf( \n",
"❶ \n",
") \n",
"[Rabin 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
"❶ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Fin( \n",
"⓿ \n",
") | Inf( \n",
"❶ \n",
") \n",
"[Streett 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
"❶ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"FGd \n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Fin( \n",
"⓿ \n",
")|Fin( \n",
"❶ \n",
") \n",
"[gen. co-Büchi 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
") \n",
"[Rabin-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Fin( \n",
"⓿ \n",
") & Inf( \n",
"❶ \n",
") & Fin( \n",
"❶ \n",
") \n",
"[Streett-like 3] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Fin( \n",
"⓿ \n",
") | (Inf( \n",
"❶ \n",
") & Fin( \n",
"❶ \n",
")) \n",
"[Rabin-like 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") | Fin( \n",
"⓿ \n",
") \n",
"[Streett-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Fin( \n",
"⓿ \n",
") & (Inf( \n",
"❶ \n",
") | Fin( \n",
"❶ \n",
")) \n",
"[Streett-like 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Fin( \n",
"⓿ \n",
")|Fin( \n",
"❶ \n",
")) | Inf( \n",
"❶ \n",
") \n",
"[Rabin-like 3] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"left = auts[4]\n",
"display(left)\n",
"for right in auts:\n",
" display_inline(right, spot.product(left, right), spot.product_or(left, right))"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
") \n",
"[Rabin-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n"
],
"text/plain": [
" *' at 0x7f26743d3990> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"a \n",
" \n",
"t \n",
"[all] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"a \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
") \n",
"[Rabin-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"0,2 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!d \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"Fb \n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
") \n",
"[Rabin-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"Fb \n",
" \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
") \n",
"[Rabin-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"GFc \n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
")) & Fin( \n",
"⓿ \n",
") \n",
"[Streett-like 3] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
"❶ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
")) | Inf( \n",
"❶ \n",
") \n",
"[Rabin-like 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
"❶ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"FGd \n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
") \n",
"[Streett-like 3] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
")) | Fin( \n",
"❶ \n",
") \n",
"[Rabin-like 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
") \n",
"[Rabin-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
")) & Fin( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
") \n",
"[Streett-like 4] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
")) | (Inf( \n",
"❶ \n",
") & Fin( \n",
"❶ \n",
")) \n",
"[Rabin-like 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") | Fin( \n",
"⓿ \n",
") \n",
"[Streett-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
") & (Inf( \n",
"❶ \n",
") | Fin( \n",
"❶ \n",
")) \n",
"[Streett-like 3] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
")) | Inf( \n",
"❶ \n",
") | Fin( \n",
"❶ \n",
") \n",
"[Rabin-like 3] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"left = auts[5]\n",
"display(left)\n",
"for right in auts:\n",
" display_inline(right, spot.product(left, right), spot.product_or(left, right))"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"a \n",
" \n",
"t \n",
"[all] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"a \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n"
],
"text/plain": [
" *' at 0x7f26743d3720> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"a \n",
" \n",
"t \n",
"[all] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"a \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"2,2 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"\n",
"2,2 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"Fb \n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & b \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"a & !b \n",
" \n",
"\n",
"\n",
"3 \n",
"\n",
"\n",
"2,0 \n",
" \n",
"\n",
"\n",
"0->3 \n",
" \n",
" \n",
"!a & b \n",
" \n",
"\n",
"\n",
"4 \n",
"\n",
"2,1 \n",
" \n",
"\n",
"\n",
"0->4 \n",
" \n",
" \n",
"!a & !b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"2->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"3->3 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"4->3 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"4->4 \n",
" \n",
" \n",
"!b \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & b \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"a & !b \n",
" \n",
"\n",
"\n",
"3 \n",
"\n",
"2,0 \n",
" \n",
"\n",
"\n",
"0->3 \n",
" \n",
" \n",
"!a & b \n",
" \n",
"\n",
"\n",
"4 \n",
"\n",
"\n",
"2,1 \n",
" \n",
"\n",
"\n",
"0->4 \n",
" \n",
" \n",
"!a & !b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"2->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"3->3 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"4->3 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"4->4 \n",
" \n",
" \n",
"!b \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"Fb \n",
" \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & b \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"a & !b \n",
" \n",
"\n",
"\n",
"3 \n",
"\n",
"\n",
"2,0 \n",
" \n",
"\n",
"\n",
"0->3 \n",
" \n",
" \n",
"!a & b \n",
" \n",
"\n",
"\n",
"4 \n",
"\n",
"2,1 \n",
" \n",
"\n",
"\n",
"0->4 \n",
" \n",
" \n",
"!a & !b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"2->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"3->3 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"4->3 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"4->4 \n",
" \n",
" \n",
"!b \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & b \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"a & !b \n",
" \n",
"\n",
"\n",
"3 \n",
"\n",
"2,0 \n",
" \n",
"\n",
"\n",
"0->3 \n",
" \n",
" \n",
"!a & b \n",
" \n",
"\n",
"\n",
"4 \n",
"\n",
"\n",
"2,1 \n",
" \n",
"\n",
"\n",
"0->4 \n",
" \n",
" \n",
"!a & !b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"2->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"3->3 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"4->3 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"4->4 \n",
" \n",
" \n",
"!b \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"GFc \n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) | (Fin( \n",
"⓿ \n",
") & Inf( \n",
"❶ \n",
")) \n",
"[Rabin-like 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"2,0 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"c \n",
"❶ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
")) | (Fin( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"2,0 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"c \n",
"❶ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"FGd \n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
")) | (Fin( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"2,0 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & !c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!c \n",
"❶ \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) | (Fin( \n",
"⓿ \n",
") & Inf( \n",
"❶ \n",
")) \n",
"[Rabin-like 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"2,0 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & !c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!c \n",
"❶ \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
") \n",
"[Rabin-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"2,0 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!d \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !d \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & d \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"2,0 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & !d \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"d \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") | Fin( \n",
"⓿ \n",
") \n",
"[Streett-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !d \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & d \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"2,0 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & !d \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"d \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"2,0 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!d \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"left = auts[0]\n",
"display(left)\n",
"for right in auts:\n",
" display_inline(right, spot.product_xor(left, right), spot.product_xnor(left, right))"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"Fb \n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n"
],
"text/plain": [
" *' at 0x7f26743d36c0> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"a \n",
" \n",
"t \n",
"[all] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"a \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & b \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"\n",
"0,2 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & b \n",
" \n",
"\n",
"\n",
"3 \n",
"\n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"0->3 \n",
" \n",
" \n",
"a & !b \n",
" \n",
"\n",
"\n",
"4 \n",
"\n",
"1,2 \n",
" \n",
"\n",
"\n",
"0->4 \n",
" \n",
" \n",
"!a & !b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"3->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"3->3 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"4->2 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"4->4 \n",
" \n",
" \n",
"!b \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & b \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"0,2 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & b \n",
" \n",
"\n",
"\n",
"3 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"0->3 \n",
" \n",
" \n",
"a & !b \n",
" \n",
"\n",
"\n",
"4 \n",
"\n",
"\n",
"1,2 \n",
" \n",
"\n",
"\n",
"0->4 \n",
" \n",
" \n",
"!a & !b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"3->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"3->3 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"4->2 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"4->4 \n",
" \n",
" \n",
"!b \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"Fb \n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"Fb \n",
" \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"GFc \n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) | (Fin( \n",
"⓿ \n",
") & Inf( \n",
"❶ \n",
")) \n",
"[Rabin-like 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
"❶ \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
"❶ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
")) | (Fin( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
"❶ \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
"❶ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"FGd \n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
")) | (Fin( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) | (Fin( \n",
"⓿ \n",
") & Inf( \n",
"❶ \n",
")) \n",
"[Rabin-like 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
") \n",
"[Rabin-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") | Fin( \n",
"⓿ \n",
") \n",
"[Streett-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"left = auts[1]\n",
"display(left)\n",
"for right in auts:\n",
" display_inline(right, spot.product_xor(left, right), spot.product_xnor(left, right))"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"Fb \n",
" \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n"
],
"text/plain": [
" *' at 0x7f26743d37e0> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"a \n",
" \n",
"t \n",
"[all] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"a \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & b \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"\n",
"0,2 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & b \n",
" \n",
"\n",
"\n",
"3 \n",
"\n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"0->3 \n",
" \n",
" \n",
"a & !b \n",
" \n",
"\n",
"\n",
"4 \n",
"\n",
"1,2 \n",
" \n",
"\n",
"\n",
"0->4 \n",
" \n",
" \n",
"!a & !b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"3->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"3->3 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"4->2 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"4->4 \n",
" \n",
" \n",
"!b \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & b \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"0,2 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & b \n",
" \n",
"\n",
"\n",
"3 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"0->3 \n",
" \n",
" \n",
"a & !b \n",
" \n",
"\n",
"\n",
"4 \n",
"\n",
"\n",
"1,2 \n",
" \n",
"\n",
"\n",
"0->4 \n",
" \n",
" \n",
"!a & !b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"1 \n",
" \n",
"\n",
"\n",
"3->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"3->3 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"4->2 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"4->4 \n",
" \n",
" \n",
"!b \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"Fb \n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"Fb \n",
" \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"GFc \n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Fin( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) | (Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
")) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"❶ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Fin( \n",
"⓿ \n",
") & Inf( \n",
"❶ \n",
")) | (Inf( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) \n",
"[Rabin-like 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"❶ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"FGd \n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Fin( \n",
"⓿ \n",
") & Inf( \n",
"❶ \n",
")) | (Inf( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) \n",
"[Rabin-like 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Fin( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) | (Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
")) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
") \n",
"[Rabin-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") | Fin( \n",
"⓿ \n",
") \n",
"[Streett-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"1,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"left = auts[2]\n",
"display(left)\n",
"for right in auts:\n",
" display_inline(right, spot.product_xor(left, right), spot.product_xnor(left, right))"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"GFc \n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n"
],
"text/plain": [
" *' at 0x7f26743d3870> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"a \n",
" \n",
"t \n",
"[all] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"a \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) | (Fin( \n",
"⓿ \n",
") & Inf( \n",
"❶ \n",
")) \n",
"[Rabin-like 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !c \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"0,2 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & !c \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
")) | (Fin( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !c \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"0,2 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & !c \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"Fb \n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) | (Fin( \n",
"⓿ \n",
") & Inf( \n",
"❶ \n",
")) \n",
"[Rabin-like 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
"❶ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
")) | (Fin( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
"❶ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"Fb \n",
" \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
")) | (Fin( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) | (Fin( \n",
"⓿ \n",
") & Inf( \n",
"❶ \n",
")) \n",
"[Rabin-like 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"GFc \n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) | (Fin( \n",
"⓿ \n",
") & Inf( \n",
"❶ \n",
")) \n",
"[Rabin-like 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
"❶ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
")) | (Fin( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
"❶ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"FGd \n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
")) | (Fin( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) | (Fin( \n",
"⓿ \n",
") & Inf( \n",
"❶ \n",
")) \n",
"[Rabin-like 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
") \n",
"[Rabin-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
") & (Fin( \n",
"❶ \n",
") | Inf( \n",
"❶ \n",
"))) | (Fin( \n",
"⓿ \n",
") & Inf( \n",
"❶ \n",
") & Fin( \n",
"❶ \n",
")) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"((Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
")) & Fin( \n",
"❶ \n",
")) | (Fin( \n",
"⓿ \n",
") & (Fin( \n",
"❶ \n",
") | Inf( \n",
"❶ \n",
"))) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") | Fin( \n",
"⓿ \n",
") \n",
"[Streett-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"((Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
")) & Fin( \n",
"❶ \n",
")) | (Fin( \n",
"⓿ \n",
") & (Inf( \n",
"❶ \n",
") | Fin( \n",
"❶ \n",
"))) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
") & (Inf( \n",
"❶ \n",
") | Fin( \n",
"❶ \n",
"))) | (Fin( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
") & Inf( \n",
"❶ \n",
")) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"left = auts[3]\n",
"display(left)\n",
"for right in auts:\n",
" display_inline(right, spot.product_xor(left, right), spot.product_xnor(left, right))"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"FGd \n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n"
],
"text/plain": [
" *' at 0x7f26743d3900> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"a \n",
" \n",
"t \n",
"[all] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"a \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Fin( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) | (Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
")) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & c \n",
"❶ \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"0,2 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & !c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & c \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"❶ \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Fin( \n",
"⓿ \n",
") & Inf( \n",
"❶ \n",
")) | (Inf( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) \n",
"[Rabin-like 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & c \n",
"❶ \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"0,2 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & !c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & c \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"❶ \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"Fb \n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Fin( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) | (Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
")) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"❶ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Fin( \n",
"⓿ \n",
") & Inf( \n",
"❶ \n",
")) | (Inf( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) \n",
"[Rabin-like 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
"❶ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"Fb \n",
" \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Fin( \n",
"⓿ \n",
") & Inf( \n",
"❶ \n",
")) | (Inf( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) \n",
"[Rabin-like 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
"❶ \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Fin( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) | (Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
")) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & c \n",
"❶ \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & c \n",
"❶ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"GFc \n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Fin( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) | (Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
")) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
"❶ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Fin( \n",
"⓿ \n",
") & Inf( \n",
"❶ \n",
")) | (Inf( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) \n",
"[Rabin-like 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
"❶ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"FGd \n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Fin( \n",
"⓿ \n",
") & Inf( \n",
"❶ \n",
")) | (Inf( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) \n",
"[Rabin-like 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Fin( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) | (Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
")) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
") \n",
"[Rabin-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Fin( \n",
"⓿ \n",
") & (Fin( \n",
"❶ \n",
") | Inf( \n",
"❶ \n",
"))) | ((Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
")) & Fin( \n",
"❶ \n",
")) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Fin( \n",
"⓿ \n",
") & Inf( \n",
"❶ \n",
") & Fin( \n",
"❶ \n",
")) | (Inf( \n",
"⓿ \n",
") & (Fin( \n",
"❶ \n",
") | Inf( \n",
"❶ \n",
"))) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") | Fin( \n",
"⓿ \n",
") \n",
"[Streett-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Fin( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
") & Inf( \n",
"❶ \n",
")) | (Inf( \n",
"⓿ \n",
") & (Inf( \n",
"❶ \n",
") | Fin( \n",
"❶ \n",
"))) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Fin( \n",
"⓿ \n",
") & (Inf( \n",
"❶ \n",
") | Fin( \n",
"❶ \n",
"))) | ((Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
")) & Fin( \n",
"❶ \n",
")) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"left = auts[4]\n",
"display(left)\n",
"for right in auts:\n",
" display_inline(right, spot.product_xor(left, right), spot.product_xnor(left, right))"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
") \n",
"[Rabin-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n"
],
"text/plain": [
" *' at 0x7f26743d3990> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"a \n",
" \n",
"t \n",
"[all] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"a \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"0,2 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!d \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !d \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & d \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"0,2 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & !d \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"d \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"Fb \n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"Fb \n",
" \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"GFc \n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) | ((Fin( \n",
"⓿ \n",
") | Inf( \n",
"⓿ \n",
")) & Inf( \n",
"❶ \n",
")) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
"❶ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"((Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
")) & Fin( \n",
"⓿ \n",
")) | ((Fin( \n",
"⓿ \n",
") | Inf( \n",
"⓿ \n",
")) & Fin( \n",
"❶ \n",
")) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
"❶ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"FGd \n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"((Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
")) & Fin( \n",
"⓿ \n",
")) | ((Fin( \n",
"⓿ \n",
") | Inf( \n",
"⓿ \n",
")) & Fin( \n",
"❶ \n",
")) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) | ((Fin( \n",
"⓿ \n",
") | Inf( \n",
"⓿ \n",
")) & Inf( \n",
"❶ \n",
")) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
") \n",
"[Rabin-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
") & (Fin( \n",
"❶ \n",
") | Inf( \n",
"❶ \n",
"))) | ((Fin( \n",
"⓿ \n",
") | Inf( \n",
"⓿ \n",
")) & Inf( \n",
"❶ \n",
") & Fin( \n",
"❶ \n",
")) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"((Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
")) & Fin( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) | ((Fin( \n",
"⓿ \n",
") | Inf( \n",
"⓿ \n",
")) & (Fin( \n",
"❶ \n",
") | Inf( \n",
"❶ \n",
"))) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") | Fin( \n",
"⓿ \n",
") \n",
"[Streett-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"((Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
")) & Fin( \n",
"⓿ \n",
") & Fin( \n",
"❶ \n",
")) | ((Fin( \n",
"⓿ \n",
") | Inf( \n",
"⓿ \n",
")) & (Inf( \n",
"❶ \n",
") | Fin( \n",
"❶ \n",
"))) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
") & (Inf( \n",
"❶ \n",
") | Fin( \n",
"❶ \n",
"))) | ((Fin( \n",
"⓿ \n",
") | Inf( \n",
"⓿ \n",
")) & Fin( \n",
"❶ \n",
") & Inf( \n",
"❶ \n",
")) \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"left = auts[5]\n",
"display(left)\n",
"for right in auts:\n",
" display_inline(right, spot.product_xor(left, right), spot.product_xnor(left, right))"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") | Fin( \n",
"⓿ \n",
") \n",
"[Streett-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n"
],
"text/plain": [
" *' at 0x7f26743d3a20> >"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"a \n",
" \n",
"t \n",
"[all] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"a \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") | Fin( \n",
"⓿ \n",
") \n",
"[Streett-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & !d \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"a & d \n",
" \n",
"\n",
"\n",
"2 \n",
"\n",
"0,2 \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & !d \n",
" \n",
"\n",
"\n",
"0->2 \n",
" \n",
" \n",
"!a & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"2->2 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"Fb \n",
" \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") | Fin( \n",
"⓿ \n",
") \n",
"[Streett-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"Fb \n",
" \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"1 \n",
"\n",
"\n",
"1 \n",
" \n",
"\n",
"\n",
"I->1 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!b \n",
" \n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"1->0 \n",
" \n",
" \n",
"b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"1 \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") | Fin( \n",
"⓿ \n",
") \n",
"[Streett-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,1 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!b & d \n",
" \n",
"\n",
"\n",
"1 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->1 \n",
" \n",
" \n",
"b & d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"!d \n",
" \n",
"\n",
"\n",
"1->1 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"GFc \n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
") | Fin( \n",
"⓿ \n",
")) & Inf( \n",
"❶ \n",
") \n",
"[Streett-like 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
"❶ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") | Fin( \n",
"⓿ \n",
") | Inf( \n",
"❶ \n",
") \n",
"[Rabin-like 3] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
"❶ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
"FGd \n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
") | Fin( \n",
"⓿ \n",
")) & Fin( \n",
"❶ \n",
") \n",
"[Streett-like 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") | (Fin( \n",
"⓿ \n",
")|Fin( \n",
"❶ \n",
")) \n",
"[Rabin-like 3] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & !d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & !d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!c & d \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"c & d \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") & Fin( \n",
"⓿ \n",
") \n",
"[Rabin-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
") | Fin( \n",
"⓿ \n",
")) & Inf( \n",
"❶ \n",
") & Fin( \n",
"❶ \n",
") \n",
"[Streett-like 3] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") | Fin( \n",
"⓿ \n",
") | (Inf( \n",
"❶ \n",
") & Fin( \n",
"❶ \n",
")) \n",
"[Rabin-like 3] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") | Fin( \n",
"⓿ \n",
") \n",
"[Streett-like 1] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"(Inf( \n",
"⓿ \n",
") | Fin( \n",
"⓿ \n",
")) & (Inf( \n",
"❶ \n",
") | Fin( \n",
"❶ \n",
")) \n",
"[Streett-like 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") | (Fin( \n",
"⓿ \n",
")|Fin( \n",
"❶ \n",
")) | Inf( \n",
"❶ \n",
") \n",
"[Rabin-like 4] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!d \n",
"⓿ \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"d \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"left = auts[6]\n",
"display(left)\n",
"for right in auts:\n",
" display_inline(right, spot.product(left, right), spot.product_or(left, right))"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
")&Inf( \n",
"❶ \n",
") \n",
"[gen. Büchi 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!a & !b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!a & b \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"a & !b \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"a & b \n",
"⓿ \n",
"❶ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Inf( \n",
"⓿ \n",
") \n",
"[Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!a & !b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!a & b \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"a & !b \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"a & b \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"a1 = spot.translate('GFa')\n",
"a2 = spot.translate('GFb')\n",
"display_inline(spot.product(a1,a2), spot.product_or(a1, a2))"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Fin( \n",
"⓿ \n",
") \n",
"[co-Büchi] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!a & !b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!a & b \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"a & !b \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"a & b \n",
"⓿ \n",
" \n",
" \n",
" \n",
"
\n",
"\n",
"\n",
"\n",
"
\n",
"\n",
" \n",
"Fin( \n",
"⓿ \n",
")|Fin( \n",
"❶ \n",
") \n",
"[gen. co-Büchi 2] \n",
"\n",
"\n",
"\n",
"0 \n",
"\n",
"0,0 \n",
" \n",
"\n",
"\n",
"I->0 \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!a & !b \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"!a & b \n",
"❶ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"a & !b \n",
"⓿ \n",
" \n",
"\n",
"\n",
"0->0 \n",
" \n",
" \n",
"a & b \n",
"⓿ \n",
"❶ \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"a1 = spot.dualize(a1)\n",
"a2 = spot.dualize(a2)\n",
"display_inline(spot.product(a1,a2), spot.product_or(a1, a2))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.10.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}