{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Regular expressions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from tock import *"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Regular expressions in Tock use the following operators:\n",
    "\n",
    "- `|` or `∪` for union\n",
    "- concatenation for concatenation\n",
    "- `*` for Kleene star\n",
    "\n",
    "This is very similar to Unix regular expressions, but because a symbol can have more than one character, consecutive symbols must be separated by a space. Also, for the empty string, you must write `ε` (or `&`). The empty set is written as `∅`.\n",
    "\n",
    "To create a regular expression from a string (Sipser, Example 1.56):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "(a b ∪ a)*"
      ],
      "text/plain": [
       "<tock.regexps.RegularExpression at 0x1090ca520>"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r = RegularExpression.from_str('(a b|a)*')\n",
    "r"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "However, there isn't much you can do with a `RegularExpression` object other than to convert it to an NFA.\n",
    "\n",
    "## From regular expressions to NFAs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "m = from_regexp(r)          # from RegularExpression object\n",
    "m = from_regexp('(a b|a)*') # a str is automatically parsed into a RegularExpression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The regular expression is converted into a finite automaton, which you can view, as usual, as either a graph or a table."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"436pt\" height=\"142pt\" viewBox=\"0.00 0.00 436.00 142.00\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 138)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-138 432,-138 432,4 -4,4\"/>\n",
       "<!-- _START -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>_START</title>\n",
       "</g>\n",
       "<!-- 2 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M57.33,-70.5C57.33,-70.5 47.67,-70.5 47.67,-70.5 44.83,-70.5 42,-67.67 42,-64.83 42,-64.83 42,-59.17 42,-59.17 42,-56.33 44.83,-53.5 47.67,-53.5 47.67,-53.5 57.33,-53.5 57.33,-53.5 60.17,-53.5 63,-56.33 63,-59.17 63,-59.17 63,-64.83 63,-64.83 63,-67.67 60.17,-70.5 57.33,-70.5\"/>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M58.67,-74.5C58.67,-74.5 46.33,-74.5 46.33,-74.5 42.17,-74.5 38,-70.33 38,-66.17 38,-66.17 38,-57.83 38,-57.83 38,-53.67 42.17,-49.5 46.33,-49.5 46.33,-49.5 58.67,-49.5 58.67,-49.5 62.83,-49.5 67,-53.67 67,-57.83 67,-57.83 67,-66.17 67,-66.17 67,-70.33 62.83,-74.5 58.67,-74.5\"/>\n",
       "<text text-anchor=\"start\" x=\"46\" y=\"-59.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q8</text>\n",
       "</g>\n",
       "<!-- _START&#45;&gt;2 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>_START-&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1.14,-62C2.84,-62 19.1,-62 32.69,-62\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"37.92,-62 32.92,-64.25 35.42,-62 32.92,-62 32.92,-62 32.92,-62 35.42,-62 32.92,-59.75 37.92,-62 37.92,-62\"/>\n",
       "</g>\n",
       "<!-- 0 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M199.33,-132.5C199.33,-132.5 189.67,-132.5 189.67,-132.5 186.83,-132.5 184,-129.67 184,-126.83 184,-126.83 184,-121.17 184,-121.17 184,-118.33 186.83,-115.5 189.67,-115.5 189.67,-115.5 199.33,-115.5 199.33,-115.5 202.17,-115.5 205,-118.33 205,-121.17 205,-121.17 205,-126.83 205,-126.83 205,-129.67 202.17,-132.5 199.33,-132.5\"/>\n",
       "<text text-anchor=\"start\" x=\"188\" y=\"-121.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q1</text>\n",
       "</g>\n",
       "<!-- 1 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M272.33,-118.5C272.33,-118.5 262.67,-118.5 262.67,-118.5 259.83,-118.5 257,-115.67 257,-112.83 257,-112.83 257,-107.17 257,-107.17 257,-104.33 259.83,-101.5 262.67,-101.5 262.67,-101.5 272.33,-101.5 272.33,-101.5 275.17,-101.5 278,-104.33 278,-107.17 278,-107.17 278,-112.83 278,-112.83 278,-115.67 275.17,-118.5 272.33,-118.5\"/>\n",
       "<text text-anchor=\"start\" x=\"261\" y=\"-107.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q2</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;1 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>0-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M205.08,-122.11C216.97,-119.77 237.41,-115.74 251.42,-112.97\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"256.62,-111.95 252.15,-115.12 254.17,-112.43 251.72,-112.92 251.72,-112.92 251.72,-112.92 254.17,-112.43 251.28,-110.71 256.62,-111.95 256.62,-111.95\"/>\n",
       "<text text-anchor=\"start\" x=\"226\" y=\"-123.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">a</text>\n",
       "</g>\n",
       "<!-- 4 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M345.33,-69.5C345.33,-69.5 335.67,-69.5 335.67,-69.5 332.83,-69.5 330,-66.67 330,-63.83 330,-63.83 330,-58.17 330,-58.17 330,-55.33 332.83,-52.5 335.67,-52.5 335.67,-52.5 345.33,-52.5 345.33,-52.5 348.17,-52.5 351,-55.33 351,-58.17 351,-58.17 351,-63.83 351,-63.83 351,-66.67 348.17,-69.5 345.33,-69.5\"/>\n",
       "<text text-anchor=\"start\" x=\"334\" y=\"-58.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q3</text>\n",
       "</g>\n",
       "<!-- 1&#45;&gt;4 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>1-&gt;4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M278.08,-103.39C290.18,-95.04 311.13,-80.58 325.15,-70.9\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"329.62,-67.82 326.78,-72.51 327.56,-69.24 325.51,-70.66 325.51,-70.66 325.51,-70.66 327.56,-69.24 324.23,-68.81 329.62,-67.82 329.62,-67.82\"/>\n",
       "<text text-anchor=\"start\" x=\"303\" y=\"-91.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 5 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M130.33,-70.5C130.33,-70.5 120.67,-70.5 120.67,-70.5 117.83,-70.5 115,-67.67 115,-64.83 115,-64.83 115,-59.17 115,-59.17 115,-56.33 117.83,-53.5 120.67,-53.5 120.67,-53.5 130.33,-53.5 130.33,-53.5 133.17,-53.5 136,-56.33 136,-59.17 136,-59.17 136,-64.83 136,-64.83 136,-67.67 133.17,-70.5 130.33,-70.5\"/>\n",
       "<text text-anchor=\"start\" x=\"119\" y=\"-59.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q7</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;5 -->\n",
       "<g id=\"edge8\" class=\"edge\">\n",
       "<title>2-&gt;5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M67.19,-62C79.46,-62 97.41,-62 109.94,-62\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"114.94,-62 109.94,-64.25 112.44,-62 109.94,-62 109.94,-62 109.94,-62 112.44,-62 109.94,-59.75 114.94,-62 114.94,-62\"/>\n",
       "<text text-anchor=\"start\" x=\"88\" y=\"-67.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 3 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M199.33,-97.5C199.33,-97.5 189.67,-97.5 189.67,-97.5 186.83,-97.5 184,-94.67 184,-91.83 184,-91.83 184,-86.17 184,-86.17 184,-83.33 186.83,-80.5 189.67,-80.5 189.67,-80.5 199.33,-80.5 199.33,-80.5 202.17,-80.5 205,-83.33 205,-86.17 205,-86.17 205,-91.83 205,-91.83 205,-94.67 202.17,-97.5 199.33,-97.5\"/>\n",
       "<text text-anchor=\"start\" x=\"188\" y=\"-86.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q5</text>\n",
       "</g>\n",
       "<!-- 6 -->\n",
       "<g id=\"node8\" class=\"node\">\n",
       "<title>6</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M272.33,-71.5C272.33,-71.5 262.67,-71.5 262.67,-71.5 259.83,-71.5 257,-68.67 257,-65.83 257,-65.83 257,-60.17 257,-60.17 257,-57.33 259.83,-54.5 262.67,-54.5 262.67,-54.5 272.33,-54.5 272.33,-54.5 275.17,-54.5 278,-57.33 278,-60.17 278,-60.17 278,-65.83 278,-65.83 278,-68.67 275.17,-71.5 272.33,-71.5\"/>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M273.67,-75.5C273.67,-75.5 261.33,-75.5 261.33,-75.5 257.17,-75.5 253,-71.33 253,-67.17 253,-67.17 253,-58.83 253,-58.83 253,-54.67 257.17,-50.5 261.33,-50.5 261.33,-50.5 273.67,-50.5 273.67,-50.5 277.83,-50.5 282,-54.67 282,-58.83 282,-58.83 282,-67.17 282,-67.17 282,-71.33 277.83,-75.5 273.67,-75.5\"/>\n",
       "<text text-anchor=\"start\" x=\"261\" y=\"-60.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q6</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;6 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>3-&gt;6</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M205.08,-85.49C216.07,-81.47 234.34,-74.78 248.11,-69.73\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"252.96,-67.96 249.03,-71.79 250.61,-68.82 248.26,-69.68 248.26,-69.68 248.26,-69.68 250.61,-68.82 247.49,-67.57 252.96,-67.96 252.96,-67.96\"/>\n",
       "<text text-anchor=\"start\" x=\"226\" y=\"-83.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">a</text>\n",
       "</g>\n",
       "<!-- 7 -->\n",
       "<g id=\"node9\" class=\"node\">\n",
       "<title>7</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M418.33,-24.5C418.33,-24.5 408.67,-24.5 408.67,-24.5 405.83,-24.5 403,-21.67 403,-18.83 403,-18.83 403,-13.17 403,-13.17 403,-10.33 405.83,-7.5 408.67,-7.5 408.67,-7.5 418.33,-7.5 418.33,-7.5 421.17,-7.5 424,-10.33 424,-13.17 424,-13.17 424,-18.83 424,-18.83 424,-21.67 421.17,-24.5 418.33,-24.5\"/>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M419.67,-28.5C419.67,-28.5 407.33,-28.5 407.33,-28.5 403.17,-28.5 399,-24.33 399,-20.17 399,-20.17 399,-11.83 399,-11.83 399,-7.67 403.17,-3.5 407.33,-3.5 407.33,-3.5 419.67,-3.5 419.67,-3.5 423.83,-3.5 428,-7.67 428,-11.83 428,-11.83 428,-20.17 428,-20.17 428,-24.33 423.83,-28.5 419.67,-28.5\"/>\n",
       "<text text-anchor=\"start\" x=\"407\" y=\"-13.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q4</text>\n",
       "</g>\n",
       "<!-- 4&#45;&gt;7 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>4-&gt;7</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M351.08,-54.93C362.16,-47.9 380.66,-36.18 394.47,-27.43\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"398.96,-24.58 395.94,-29.16 396.84,-25.92 394.73,-27.26 394.73,-27.26 394.73,-27.26 396.84,-25.92 393.53,-25.36 398.96,-24.58 398.96,-24.58\"/>\n",
       "<text text-anchor=\"start\" x=\"372\" y=\"-48.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">b</text>\n",
       "</g>\n",
       "<!-- 5&#45;&gt;0 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>5-&gt;0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M132.18,-70.66C137.34,-78.14 145.42,-88.97 154,-97 161.63,-104.14 171.31,-110.79 179.18,-115.7\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"183.8,-118.52 178.36,-117.84 181.67,-117.22 179.54,-115.92 179.54,-115.92 179.54,-115.92 181.67,-117.22 180.71,-114 183.8,-118.52 183.8,-118.52\"/>\n",
       "<text text-anchor=\"start\" x=\"157\" y=\"-111.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 5&#45;&gt;3 -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>5-&gt;3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M136.1,-65.87C147.34,-70.4 166.08,-77.95 179.08,-83.19\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"183.92,-85.14 178.44,-85.36 181.6,-84.2 179.28,-83.27 179.28,-83.27 179.28,-83.27 181.6,-84.2 180.12,-81.18 183.92,-85.14 183.92,-85.14\"/>\n",
       "<text text-anchor=\"start\" x=\"157\" y=\"-82.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 6&#45;&gt;5 -->\n",
       "<g id=\"edge9\" class=\"edge\">\n",
       "<title>6-&gt;5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M252.8,-60.69C236.44,-58.19 208.26,-54.74 184,-56 169.53,-56.75 153.09,-58.56 141.51,-60\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"136.24,-60.67 140.92,-57.81 138.72,-60.36 141.2,-60.04 141.2,-60.04 141.2,-60.04 138.72,-60.36 141.49,-62.27 136.24,-60.67 136.24,-60.67\"/>\n",
       "<text text-anchor=\"start\" x=\"191.5\" y=\"-61.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 7&#45;&gt;5 -->\n",
       "<g id=\"edge10\" class=\"edge\">\n",
       "<title>7-&gt;5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M398.83,-11.03C384.68,-6.33 361.84,0 341.5,0 193.5,0 193.5,0 193.5,0 165.11,0 143.64,-30.37 133.31,-48.59\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"130.7,-53.38 131.12,-47.91 131.9,-51.19 133.09,-48.99 133.09,-48.99 133.09,-48.99 131.9,-51.19 135.07,-50.07 130.7,-53.38 130.7,-53.38\"/>\n",
       "<text text-anchor=\"start\" x=\"264.5\" y=\"-5.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>"
      ],
      "text/plain": [
       "<IPython.core.display.SVG object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "to_graph(m)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table style=\"font-family: Courier, monospace;\">\n",
       "  <tr>\n",
       "    <th style=\"text-align: left\"></th>\n",
       "    <th style=\"text-align: left\">ε</th>\n",
       "    <th style=\"text-align: left\">a</th>\n",
       "    <th style=\"text-align: left\">b</th>\n",
       "  </tr>\n",
       "  <tr>\n",
       "    <th style=\"text-align: left\">q1</th>\n",
       "    <td style=\"text-align: left\"></td>\n",
       "    <td style=\"text-align: left\">q2</td>\n",
       "    <td style=\"text-align: left\"></td>\n",
       "  </tr>\n",
       "  <tr>\n",
       "    <th style=\"text-align: left\">q2</th>\n",
       "    <td style=\"text-align: left\">q3</td>\n",
       "    <td style=\"text-align: left\"></td>\n",
       "    <td style=\"text-align: left\"></td>\n",
       "  </tr>\n",
       "  <tr>\n",
       "    <th style=\"text-align: left\">q3</th>\n",
       "    <td style=\"text-align: left\"></td>\n",
       "    <td style=\"text-align: left\"></td>\n",
       "    <td style=\"text-align: left\">q4</td>\n",
       "  </tr>\n",
       "  <tr>\n",
       "    <th style=\"text-align: left\">@q4</th>\n",
       "    <td style=\"text-align: left\">q7</td>\n",
       "    <td style=\"text-align: left\"></td>\n",
       "    <td style=\"text-align: left\"></td>\n",
       "  </tr>\n",
       "  <tr>\n",
       "    <th style=\"text-align: left\">q5</th>\n",
       "    <td style=\"text-align: left\"></td>\n",
       "    <td style=\"text-align: left\">q6</td>\n",
       "    <td style=\"text-align: left\"></td>\n",
       "  </tr>\n",
       "  <tr>\n",
       "    <th style=\"text-align: left\">@q6</th>\n",
       "    <td style=\"text-align: left\">q7</td>\n",
       "    <td style=\"text-align: left\"></td>\n",
       "    <td style=\"text-align: left\"></td>\n",
       "  </tr>\n",
       "  <tr>\n",
       "    <th style=\"text-align: left\">q7</th>\n",
       "    <td style=\"text-align: left\">{q1,q5}</td>\n",
       "    <td style=\"text-align: left\"></td>\n",
       "    <td style=\"text-align: left\"></td>\n",
       "  </tr>\n",
       "  <tr>\n",
       "    <th style=\"text-align: left\">&gt;@q8</th>\n",
       "    <td style=\"text-align: left\">q7</td>\n",
       "    <td style=\"text-align: left\"></td>\n",
       "    <td style=\"text-align: left\"></td>\n",
       "  </tr>\n",
       "</table>"
      ],
      "text/plain": [
       "<tock.tables.Table at 0x1090ca370>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "to_table(m)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The states are numbered according to the position in the regular expression they came from (so that listing them in alphabetical order is natural). The letter suffixes are explained below.\n",
    "\n",
    "We can also pass the `display_steps=True` option to show the automata created for all the subexpressions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "subexpression: a"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/svg+xml": [
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"144pt\" height=\"37pt\" viewBox=\"0.00 0.00 144.00 36.50\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 32.5)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-32.5 140,-32.5 140,4 -4,4\"/>\n",
       "<!-- _START -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>_START</title>\n",
       "</g>\n",
       "<!-- 0 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M53.33,-21C53.33,-21 43.67,-21 43.67,-21 40.83,-21 38,-18.17 38,-15.33 38,-15.33 38,-9.67 38,-9.67 38,-6.83 40.83,-4 43.67,-4 43.67,-4 53.33,-4 53.33,-4 56.17,-4 59,-6.83 59,-9.67 59,-9.67 59,-15.33 59,-15.33 59,-18.17 56.17,-21 53.33,-21\"/>\n",
       "<text text-anchor=\"start\" x=\"42\" y=\"-10\" font-family=\"Courier,monospace\" font-size=\"10.00\">q1</text>\n",
       "</g>\n",
       "<!-- _START&#45;&gt;0 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>_START-&gt;0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1.13,-12.5C2.79,-12.5 19.6,-12.5 32.5,-12.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"37.74,-12.5 32.74,-14.75 35.24,-12.5 32.74,-12.5 32.74,-12.5 32.74,-12.5 35.24,-12.5 32.74,-10.25 37.74,-12.5 37.74,-12.5\"/>\n",
       "</g>\n",
       "<!-- 1 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M126.33,-21C126.33,-21 116.67,-21 116.67,-21 113.83,-21 111,-18.17 111,-15.33 111,-15.33 111,-9.67 111,-9.67 111,-6.83 113.83,-4 116.67,-4 116.67,-4 126.33,-4 126.33,-4 129.17,-4 132,-6.83 132,-9.67 132,-9.67 132,-15.33 132,-15.33 132,-18.17 129.17,-21 126.33,-21\"/>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M127.67,-25C127.67,-25 115.33,-25 115.33,-25 111.17,-25 107,-20.83 107,-16.67 107,-16.67 107,-8.33 107,-8.33 107,-4.17 111.17,0 115.33,0 115.33,0 127.67,0 127.67,0 131.83,0 136,-4.17 136,-8.33 136,-8.33 136,-16.67 136,-16.67 136,-20.83 131.83,-25 127.67,-25\"/>\n",
       "<text text-anchor=\"start\" x=\"115\" y=\"-10\" font-family=\"Courier,monospace\" font-size=\"10.00\">q2</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;1 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>0-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M59.08,-12.5C69.97,-12.5 88.02,-12.5 101.75,-12.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"106.96,-12.5 101.96,-14.75 104.46,-12.5 101.96,-12.5 101.96,-12.5 101.96,-12.5 104.46,-12.5 101.96,-10.25 106.96,-12.5 106.96,-12.5\"/>\n",
       "<text text-anchor=\"start\" x=\"80\" y=\"-18.3\" font-family=\"Courier,monospace\" font-size=\"9.00\">a</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>"
      ],
      "text/plain": [
       "<IPython.core.display.SVG object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "subexpression: b"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/svg+xml": [
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"144pt\" height=\"37pt\" viewBox=\"0.00 0.00 144.00 36.50\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 32.5)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-32.5 140,-32.5 140,4 -4,4\"/>\n",
       "<!-- _START -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>_START</title>\n",
       "</g>\n",
       "<!-- 0 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M53.33,-21C53.33,-21 43.67,-21 43.67,-21 40.83,-21 38,-18.17 38,-15.33 38,-15.33 38,-9.67 38,-9.67 38,-6.83 40.83,-4 43.67,-4 43.67,-4 53.33,-4 53.33,-4 56.17,-4 59,-6.83 59,-9.67 59,-9.67 59,-15.33 59,-15.33 59,-18.17 56.17,-21 53.33,-21\"/>\n",
       "<text text-anchor=\"start\" x=\"42\" y=\"-10\" font-family=\"Courier,monospace\" font-size=\"10.00\">q3</text>\n",
       "</g>\n",
       "<!-- _START&#45;&gt;0 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>_START-&gt;0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1.13,-12.5C2.79,-12.5 19.6,-12.5 32.5,-12.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"37.74,-12.5 32.74,-14.75 35.24,-12.5 32.74,-12.5 32.74,-12.5 32.74,-12.5 35.24,-12.5 32.74,-10.25 37.74,-12.5 37.74,-12.5\"/>\n",
       "</g>\n",
       "<!-- 1 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M126.33,-21C126.33,-21 116.67,-21 116.67,-21 113.83,-21 111,-18.17 111,-15.33 111,-15.33 111,-9.67 111,-9.67 111,-6.83 113.83,-4 116.67,-4 116.67,-4 126.33,-4 126.33,-4 129.17,-4 132,-6.83 132,-9.67 132,-9.67 132,-15.33 132,-15.33 132,-18.17 129.17,-21 126.33,-21\"/>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M127.67,-25C127.67,-25 115.33,-25 115.33,-25 111.17,-25 107,-20.83 107,-16.67 107,-16.67 107,-8.33 107,-8.33 107,-4.17 111.17,0 115.33,0 115.33,0 127.67,0 127.67,0 131.83,0 136,-4.17 136,-8.33 136,-8.33 136,-16.67 136,-16.67 136,-20.83 131.83,-25 127.67,-25\"/>\n",
       "<text text-anchor=\"start\" x=\"115\" y=\"-10\" font-family=\"Courier,monospace\" font-size=\"10.00\">q4</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;1 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>0-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M59.08,-12.5C69.97,-12.5 88.02,-12.5 101.75,-12.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"106.96,-12.5 101.96,-14.75 104.46,-12.5 101.96,-12.5 101.96,-12.5 101.96,-12.5 104.46,-12.5 101.96,-10.25 106.96,-12.5 106.96,-12.5\"/>\n",
       "<text text-anchor=\"start\" x=\"80\" y=\"-18.3\" font-family=\"Courier,monospace\" font-size=\"9.00\">b</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>"
      ],
      "text/plain": [
       "<IPython.core.display.SVG object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "subexpression: a b"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/svg+xml": [
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"282pt\" height=\"37pt\" viewBox=\"0.00 0.00 282.00 36.50\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 32.5)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-32.5 278,-32.5 278,4 -4,4\"/>\n",
       "<!-- _START -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>_START</title>\n",
       "</g>\n",
       "<!-- 2 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M53.33,-21C53.33,-21 43.67,-21 43.67,-21 40.83,-21 38,-18.17 38,-15.33 38,-15.33 38,-9.67 38,-9.67 38,-6.83 40.83,-4 43.67,-4 43.67,-4 53.33,-4 53.33,-4 56.17,-4 59,-6.83 59,-9.67 59,-9.67 59,-15.33 59,-15.33 59,-18.17 56.17,-21 53.33,-21\"/>\n",
       "<text text-anchor=\"start\" x=\"42\" y=\"-10\" font-family=\"Courier,monospace\" font-size=\"10.00\">q1</text>\n",
       "</g>\n",
       "<!-- _START&#45;&gt;2 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>_START-&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1.13,-12.5C2.79,-12.5 19.6,-12.5 32.5,-12.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"37.74,-12.5 32.74,-14.75 35.24,-12.5 32.74,-12.5 32.74,-12.5 32.74,-12.5 35.24,-12.5 32.74,-10.25 37.74,-12.5 37.74,-12.5\"/>\n",
       "</g>\n",
       "<!-- 0 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M122.33,-21C122.33,-21 112.67,-21 112.67,-21 109.83,-21 107,-18.17 107,-15.33 107,-15.33 107,-9.67 107,-9.67 107,-6.83 109.83,-4 112.67,-4 112.67,-4 122.33,-4 122.33,-4 125.17,-4 128,-6.83 128,-9.67 128,-9.67 128,-15.33 128,-15.33 128,-18.17 125.17,-21 122.33,-21\"/>\n",
       "<text text-anchor=\"start\" x=\"111\" y=\"-10\" font-family=\"Courier,monospace\" font-size=\"10.00\">q2</text>\n",
       "</g>\n",
       "<!-- 1 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M191.33,-21C191.33,-21 181.67,-21 181.67,-21 178.83,-21 176,-18.17 176,-15.33 176,-15.33 176,-9.67 176,-9.67 176,-6.83 178.83,-4 181.67,-4 181.67,-4 191.33,-4 191.33,-4 194.17,-4 197,-6.83 197,-9.67 197,-9.67 197,-15.33 197,-15.33 197,-18.17 194.17,-21 191.33,-21\"/>\n",
       "<text text-anchor=\"start\" x=\"180\" y=\"-10\" font-family=\"Courier,monospace\" font-size=\"10.00\">q3</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;1 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>0-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M128.1,-12.5C139.24,-12.5 157.75,-12.5 170.73,-12.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"175.92,-12.5 170.92,-14.75 173.42,-12.5 170.92,-12.5 170.92,-12.5 170.92,-12.5 173.42,-12.5 170.92,-10.25 175.92,-12.5 175.92,-12.5\"/>\n",
       "<text text-anchor=\"start\" x=\"149\" y=\"-18.3\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 3 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M264.33,-21C264.33,-21 254.67,-21 254.67,-21 251.83,-21 249,-18.17 249,-15.33 249,-15.33 249,-9.67 249,-9.67 249,-6.83 251.83,-4 254.67,-4 254.67,-4 264.33,-4 264.33,-4 267.17,-4 270,-6.83 270,-9.67 270,-9.67 270,-15.33 270,-15.33 270,-18.17 267.17,-21 264.33,-21\"/>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M265.67,-25C265.67,-25 253.33,-25 253.33,-25 249.17,-25 245,-20.83 245,-16.67 245,-16.67 245,-8.33 245,-8.33 245,-4.17 249.17,0 253.33,0 253.33,0 265.67,0 265.67,0 269.83,0 274,-4.17 274,-8.33 274,-8.33 274,-16.67 274,-16.67 274,-20.83 269.83,-25 265.67,-25\"/>\n",
       "<text text-anchor=\"start\" x=\"253\" y=\"-10\" font-family=\"Courier,monospace\" font-size=\"10.00\">q4</text>\n",
       "</g>\n",
       "<!-- 1&#45;&gt;3 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>1-&gt;3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M197.08,-12.5C207.97,-12.5 226.02,-12.5 239.75,-12.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"244.96,-12.5 239.96,-14.75 242.46,-12.5 239.96,-12.5 239.96,-12.5 239.96,-12.5 242.46,-12.5 239.96,-10.25 244.96,-12.5 244.96,-12.5\"/>\n",
       "<text text-anchor=\"start\" x=\"218\" y=\"-18.3\" font-family=\"Courier,monospace\" font-size=\"9.00\">b</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;0 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>2-&gt;0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M59.1,-12.5C70.24,-12.5 88.75,-12.5 101.73,-12.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"106.92,-12.5 101.92,-14.75 104.42,-12.5 101.92,-12.5 101.92,-12.5 101.92,-12.5 104.42,-12.5 101.92,-10.25 106.92,-12.5 106.92,-12.5\"/>\n",
       "<text text-anchor=\"start\" x=\"80\" y=\"-18.3\" font-family=\"Courier,monospace\" font-size=\"9.00\">a</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>"
      ],
      "text/plain": [
       "<IPython.core.display.SVG object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "subexpression: a"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/svg+xml": [
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"144pt\" height=\"37pt\" viewBox=\"0.00 0.00 144.00 36.50\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 32.5)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-32.5 140,-32.5 140,4 -4,4\"/>\n",
       "<!-- _START -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>_START</title>\n",
       "</g>\n",
       "<!-- 1 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M53.33,-21C53.33,-21 43.67,-21 43.67,-21 40.83,-21 38,-18.17 38,-15.33 38,-15.33 38,-9.67 38,-9.67 38,-6.83 40.83,-4 43.67,-4 43.67,-4 53.33,-4 53.33,-4 56.17,-4 59,-6.83 59,-9.67 59,-9.67 59,-15.33 59,-15.33 59,-18.17 56.17,-21 53.33,-21\"/>\n",
       "<text text-anchor=\"start\" x=\"42\" y=\"-10\" font-family=\"Courier,monospace\" font-size=\"10.00\">q5</text>\n",
       "</g>\n",
       "<!-- _START&#45;&gt;1 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>_START-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1.13,-12.5C2.79,-12.5 19.6,-12.5 32.5,-12.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"37.74,-12.5 32.74,-14.75 35.24,-12.5 32.74,-12.5 32.74,-12.5 32.74,-12.5 35.24,-12.5 32.74,-10.25 37.74,-12.5 37.74,-12.5\"/>\n",
       "</g>\n",
       "<!-- 0 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M126.33,-21C126.33,-21 116.67,-21 116.67,-21 113.83,-21 111,-18.17 111,-15.33 111,-15.33 111,-9.67 111,-9.67 111,-6.83 113.83,-4 116.67,-4 116.67,-4 126.33,-4 126.33,-4 129.17,-4 132,-6.83 132,-9.67 132,-9.67 132,-15.33 132,-15.33 132,-18.17 129.17,-21 126.33,-21\"/>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M127.67,-25C127.67,-25 115.33,-25 115.33,-25 111.17,-25 107,-20.83 107,-16.67 107,-16.67 107,-8.33 107,-8.33 107,-4.17 111.17,0 115.33,0 115.33,0 127.67,0 127.67,0 131.83,0 136,-4.17 136,-8.33 136,-8.33 136,-16.67 136,-16.67 136,-20.83 131.83,-25 127.67,-25\"/>\n",
       "<text text-anchor=\"start\" x=\"115\" y=\"-10\" font-family=\"Courier,monospace\" font-size=\"10.00\">q6</text>\n",
       "</g>\n",
       "<!-- 1&#45;&gt;0 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>1-&gt;0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M59.08,-12.5C69.97,-12.5 88.02,-12.5 101.75,-12.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"106.96,-12.5 101.96,-14.75 104.46,-12.5 101.96,-12.5 101.96,-12.5 101.96,-12.5 104.46,-12.5 101.96,-10.25 106.96,-12.5 106.96,-12.5\"/>\n",
       "<text text-anchor=\"start\" x=\"80\" y=\"-18.3\" font-family=\"Courier,monospace\" font-size=\"9.00\">a</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>"
      ],
      "text/plain": [
       "<IPython.core.display.SVG object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "subexpression: a b ∪ a"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/svg+xml": [
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"359pt\" height=\"76pt\" viewBox=\"0.00 0.00 359.00 75.50\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 71.5)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-71.5 355,-71.5 355,4 -4,4\"/>\n",
       "<!-- _START -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>_START</title>\n",
       "</g>\n",
       "<!-- 4 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M53.33,-40C53.33,-40 43.67,-40 43.67,-40 40.83,-40 38,-37.17 38,-34.33 38,-34.33 38,-28.67 38,-28.67 38,-25.83 40.83,-23 43.67,-23 43.67,-23 53.33,-23 53.33,-23 56.17,-23 59,-25.83 59,-28.67 59,-28.67 59,-34.33 59,-34.33 59,-37.17 56.17,-40 53.33,-40\"/>\n",
       "<text text-anchor=\"start\" x=\"42\" y=\"-29\" font-family=\"Courier,monospace\" font-size=\"10.00\">q7</text>\n",
       "</g>\n",
       "<!-- _START&#45;&gt;4 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>_START-&gt;4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1.13,-31.5C2.79,-31.5 19.6,-31.5 32.5,-31.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"37.74,-31.5 32.74,-33.75 35.24,-31.5 32.74,-31.5 32.74,-31.5 32.74,-31.5 35.24,-31.5 32.74,-29.25 37.74,-31.5 37.74,-31.5\"/>\n",
       "</g>\n",
       "<!-- 0 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M122.33,-60C122.33,-60 112.67,-60 112.67,-60 109.83,-60 107,-57.17 107,-54.33 107,-54.33 107,-48.67 107,-48.67 107,-45.83 109.83,-43 112.67,-43 112.67,-43 122.33,-43 122.33,-43 125.17,-43 128,-45.83 128,-48.67 128,-48.67 128,-54.33 128,-54.33 128,-57.17 125.17,-60 122.33,-60\"/>\n",
       "<text text-anchor=\"start\" x=\"111\" y=\"-49\" font-family=\"Courier,monospace\" font-size=\"10.00\">q1</text>\n",
       "</g>\n",
       "<!-- 1 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M195.33,-60C195.33,-60 185.67,-60 185.67,-60 182.83,-60 180,-57.17 180,-54.33 180,-54.33 180,-48.67 180,-48.67 180,-45.83 182.83,-43 185.67,-43 185.67,-43 195.33,-43 195.33,-43 198.17,-43 201,-45.83 201,-48.67 201,-48.67 201,-54.33 201,-54.33 201,-57.17 198.17,-60 195.33,-60\"/>\n",
       "<text text-anchor=\"start\" x=\"184\" y=\"-49\" font-family=\"Courier,monospace\" font-size=\"10.00\">q2</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;1 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>0-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M128.08,-51.5C139.97,-51.5 160.41,-51.5 174.42,-51.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"179.62,-51.5 174.62,-53.75 177.12,-51.5 174.62,-51.5 174.62,-51.5 174.62,-51.5 177.12,-51.5 174.62,-49.25 179.62,-51.5 179.62,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"149\" y=\"-57.3\" font-family=\"Courier,monospace\" font-size=\"9.00\">a</text>\n",
       "</g>\n",
       "<!-- 2 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M268.33,-60C268.33,-60 258.67,-60 258.67,-60 255.83,-60 253,-57.17 253,-54.33 253,-54.33 253,-48.67 253,-48.67 253,-45.83 255.83,-43 258.67,-43 258.67,-43 268.33,-43 268.33,-43 271.17,-43 274,-45.83 274,-48.67 274,-48.67 274,-54.33 274,-54.33 274,-57.17 271.17,-60 268.33,-60\"/>\n",
       "<text text-anchor=\"start\" x=\"257\" y=\"-49\" font-family=\"Courier,monospace\" font-size=\"10.00\">q3</text>\n",
       "</g>\n",
       "<!-- 1&#45;&gt;2 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>1-&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M201.08,-51.5C212.97,-51.5 233.41,-51.5 247.42,-51.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"252.62,-51.5 247.62,-53.75 250.12,-51.5 247.62,-51.5 247.62,-51.5 247.62,-51.5 250.12,-51.5 247.62,-49.25 252.62,-51.5 252.62,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"226\" y=\"-57.3\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 5 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M341.33,-60C341.33,-60 331.67,-60 331.67,-60 328.83,-60 326,-57.17 326,-54.33 326,-54.33 326,-48.67 326,-48.67 326,-45.83 328.83,-43 331.67,-43 331.67,-43 341.33,-43 341.33,-43 344.17,-43 347,-45.83 347,-48.67 347,-48.67 347,-54.33 347,-54.33 347,-57.17 344.17,-60 341.33,-60\"/>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M342.67,-64C342.67,-64 330.33,-64 330.33,-64 326.17,-64 322,-59.83 322,-55.67 322,-55.67 322,-47.33 322,-47.33 322,-43.17 326.17,-39 330.33,-39 330.33,-39 342.67,-39 342.67,-39 346.83,-39 351,-43.17 351,-47.33 351,-47.33 351,-55.67 351,-55.67 351,-59.83 346.83,-64 342.67,-64\"/>\n",
       "<text text-anchor=\"start\" x=\"330\" y=\"-49\" font-family=\"Courier,monospace\" font-size=\"10.00\">q4</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;5 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>2-&gt;5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M274.08,-51.5C284.97,-51.5 303.02,-51.5 316.75,-51.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"321.96,-51.5 316.96,-53.75 319.46,-51.5 316.96,-51.5 316.96,-51.5 316.96,-51.5 319.46,-51.5 316.96,-49.25 321.96,-51.5 321.96,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"295\" y=\"-57.3\" font-family=\"Courier,monospace\" font-size=\"9.00\">b</text>\n",
       "</g>\n",
       "<!-- 3 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M122.33,-21C122.33,-21 112.67,-21 112.67,-21 109.83,-21 107,-18.17 107,-15.33 107,-15.33 107,-9.67 107,-9.67 107,-6.83 109.83,-4 112.67,-4 112.67,-4 122.33,-4 122.33,-4 125.17,-4 128,-6.83 128,-9.67 128,-9.67 128,-15.33 128,-15.33 128,-18.17 125.17,-21 122.33,-21\"/>\n",
       "<text text-anchor=\"start\" x=\"111\" y=\"-10\" font-family=\"Courier,monospace\" font-size=\"10.00\">q5</text>\n",
       "</g>\n",
       "<!-- 6 -->\n",
       "<g id=\"node8\" class=\"node\">\n",
       "<title>6</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M195.33,-21C195.33,-21 185.67,-21 185.67,-21 182.83,-21 180,-18.17 180,-15.33 180,-15.33 180,-9.67 180,-9.67 180,-6.83 182.83,-4 185.67,-4 185.67,-4 195.33,-4 195.33,-4 198.17,-4 201,-6.83 201,-9.67 201,-9.67 201,-15.33 201,-15.33 201,-18.17 198.17,-21 195.33,-21\"/>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M196.67,-25C196.67,-25 184.33,-25 184.33,-25 180.17,-25 176,-20.83 176,-16.67 176,-16.67 176,-8.33 176,-8.33 176,-4.17 180.17,0 184.33,0 184.33,0 196.67,0 196.67,0 200.83,0 205,-4.17 205,-8.33 205,-8.33 205,-16.67 205,-16.67 205,-20.83 200.83,-25 196.67,-25\"/>\n",
       "<text text-anchor=\"start\" x=\"184\" y=\"-10\" font-family=\"Courier,monospace\" font-size=\"10.00\">q6</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;6 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>3-&gt;6</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M128.08,-12.5C138.97,-12.5 157.02,-12.5 170.75,-12.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"175.96,-12.5 170.96,-14.75 173.46,-12.5 170.96,-12.5 170.96,-12.5 170.96,-12.5 173.46,-12.5 170.96,-10.25 175.96,-12.5 175.96,-12.5\"/>\n",
       "<text text-anchor=\"start\" x=\"149\" y=\"-18.3\" font-family=\"Courier,monospace\" font-size=\"9.00\">a</text>\n",
       "</g>\n",
       "<!-- 4&#45;&gt;0 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>4-&gt;0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M59.1,-34.37C70.34,-37.72 89.08,-43.32 102.08,-47.19\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"106.92,-48.64 101.48,-49.37 104.52,-47.92 102.13,-47.21 102.13,-47.21 102.13,-47.21 104.52,-47.92 102.77,-45.05 106.92,-48.64 106.92,-48.64\"/>\n",
       "<text text-anchor=\"start\" x=\"80\" y=\"-49.3\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 4&#45;&gt;3 -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>4-&gt;3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M59,-23.38C64.01,-19.62 70.46,-15.54 77,-13.5 84.83,-11.06 93.96,-10.68 101.47,-10.97\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"106.84,-11.3 101.72,-13.24 104.35,-11.14 101.85,-10.99 101.85,-10.99 101.85,-10.99 104.35,-11.14 101.99,-8.75 106.84,-11.3 106.84,-11.3\"/>\n",
       "<text text-anchor=\"start\" x=\"80\" y=\"-19.3\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>"
      ],
      "text/plain": [
       "<IPython.core.display.SVG object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "subexpression: (a b ∪ a)*"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/svg+xml": [
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"436pt\" height=\"142pt\" viewBox=\"0.00 0.00 436.00 142.00\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 138)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-138 432,-138 432,4 -4,4\"/>\n",
       "<!-- _START -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>_START</title>\n",
       "</g>\n",
       "<!-- 3 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M57.33,-70.5C57.33,-70.5 47.67,-70.5 47.67,-70.5 44.83,-70.5 42,-67.67 42,-64.83 42,-64.83 42,-59.17 42,-59.17 42,-56.33 44.83,-53.5 47.67,-53.5 47.67,-53.5 57.33,-53.5 57.33,-53.5 60.17,-53.5 63,-56.33 63,-59.17 63,-59.17 63,-64.83 63,-64.83 63,-67.67 60.17,-70.5 57.33,-70.5\"/>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M58.67,-74.5C58.67,-74.5 46.33,-74.5 46.33,-74.5 42.17,-74.5 38,-70.33 38,-66.17 38,-66.17 38,-57.83 38,-57.83 38,-53.67 42.17,-49.5 46.33,-49.5 46.33,-49.5 58.67,-49.5 58.67,-49.5 62.83,-49.5 67,-53.67 67,-57.83 67,-57.83 67,-66.17 67,-66.17 67,-70.33 62.83,-74.5 58.67,-74.5\"/>\n",
       "<text text-anchor=\"start\" x=\"46\" y=\"-59.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q8</text>\n",
       "</g>\n",
       "<!-- _START&#45;&gt;3 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>_START-&gt;3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1.14,-62C2.84,-62 19.1,-62 32.69,-62\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"37.92,-62 32.92,-64.25 35.42,-62 32.92,-62 32.92,-62 32.92,-62 35.42,-62 32.92,-59.75 37.92,-62 37.92,-62\"/>\n",
       "</g>\n",
       "<!-- 0 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M199.33,-132.5C199.33,-132.5 189.67,-132.5 189.67,-132.5 186.83,-132.5 184,-129.67 184,-126.83 184,-126.83 184,-121.17 184,-121.17 184,-118.33 186.83,-115.5 189.67,-115.5 189.67,-115.5 199.33,-115.5 199.33,-115.5 202.17,-115.5 205,-118.33 205,-121.17 205,-121.17 205,-126.83 205,-126.83 205,-129.67 202.17,-132.5 199.33,-132.5\"/>\n",
       "<text text-anchor=\"start\" x=\"188\" y=\"-121.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q1</text>\n",
       "</g>\n",
       "<!-- 1 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M272.33,-118.5C272.33,-118.5 262.67,-118.5 262.67,-118.5 259.83,-118.5 257,-115.67 257,-112.83 257,-112.83 257,-107.17 257,-107.17 257,-104.33 259.83,-101.5 262.67,-101.5 262.67,-101.5 272.33,-101.5 272.33,-101.5 275.17,-101.5 278,-104.33 278,-107.17 278,-107.17 278,-112.83 278,-112.83 278,-115.67 275.17,-118.5 272.33,-118.5\"/>\n",
       "<text text-anchor=\"start\" x=\"261\" y=\"-107.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q2</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;1 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>0-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M205.08,-122.11C216.97,-119.77 237.41,-115.74 251.42,-112.97\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"256.62,-111.95 252.15,-115.12 254.17,-112.43 251.72,-112.92 251.72,-112.92 251.72,-112.92 254.17,-112.43 251.28,-110.71 256.62,-111.95 256.62,-111.95\"/>\n",
       "<text text-anchor=\"start\" x=\"226\" y=\"-123.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">a</text>\n",
       "</g>\n",
       "<!-- 2 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M345.33,-69.5C345.33,-69.5 335.67,-69.5 335.67,-69.5 332.83,-69.5 330,-66.67 330,-63.83 330,-63.83 330,-58.17 330,-58.17 330,-55.33 332.83,-52.5 335.67,-52.5 335.67,-52.5 345.33,-52.5 345.33,-52.5 348.17,-52.5 351,-55.33 351,-58.17 351,-58.17 351,-63.83 351,-63.83 351,-66.67 348.17,-69.5 345.33,-69.5\"/>\n",
       "<text text-anchor=\"start\" x=\"334\" y=\"-58.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q3</text>\n",
       "</g>\n",
       "<!-- 1&#45;&gt;2 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>1-&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M278.08,-103.39C290.18,-95.04 311.13,-80.58 325.15,-70.9\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"329.62,-67.82 326.78,-72.51 327.56,-69.24 325.51,-70.66 325.51,-70.66 325.51,-70.66 327.56,-69.24 324.23,-68.81 329.62,-67.82 329.62,-67.82\"/>\n",
       "<text text-anchor=\"start\" x=\"303\" y=\"-91.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 7 -->\n",
       "<g id=\"node9\" class=\"node\">\n",
       "<title>7</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M418.33,-24.5C418.33,-24.5 408.67,-24.5 408.67,-24.5 405.83,-24.5 403,-21.67 403,-18.83 403,-18.83 403,-13.17 403,-13.17 403,-10.33 405.83,-7.5 408.67,-7.5 408.67,-7.5 418.33,-7.5 418.33,-7.5 421.17,-7.5 424,-10.33 424,-13.17 424,-13.17 424,-18.83 424,-18.83 424,-21.67 421.17,-24.5 418.33,-24.5\"/>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M419.67,-28.5C419.67,-28.5 407.33,-28.5 407.33,-28.5 403.17,-28.5 399,-24.33 399,-20.17 399,-20.17 399,-11.83 399,-11.83 399,-7.67 403.17,-3.5 407.33,-3.5 407.33,-3.5 419.67,-3.5 419.67,-3.5 423.83,-3.5 428,-7.67 428,-11.83 428,-11.83 428,-20.17 428,-20.17 428,-24.33 423.83,-28.5 419.67,-28.5\"/>\n",
       "<text text-anchor=\"start\" x=\"407\" y=\"-13.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q4</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;7 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>2-&gt;7</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M351.08,-54.93C362.16,-47.9 380.66,-36.18 394.47,-27.43\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"398.96,-24.58 395.94,-29.16 396.84,-25.92 394.73,-27.26 394.73,-27.26 394.73,-27.26 396.84,-25.92 393.53,-25.36 398.96,-24.58 398.96,-24.58\"/>\n",
       "<text text-anchor=\"start\" x=\"372\" y=\"-48.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">b</text>\n",
       "</g>\n",
       "<!-- 5 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M130.33,-70.5C130.33,-70.5 120.67,-70.5 120.67,-70.5 117.83,-70.5 115,-67.67 115,-64.83 115,-64.83 115,-59.17 115,-59.17 115,-56.33 117.83,-53.5 120.67,-53.5 120.67,-53.5 130.33,-53.5 130.33,-53.5 133.17,-53.5 136,-56.33 136,-59.17 136,-59.17 136,-64.83 136,-64.83 136,-67.67 133.17,-70.5 130.33,-70.5\"/>\n",
       "<text text-anchor=\"start\" x=\"119\" y=\"-59.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q7</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;5 -->\n",
       "<g id=\"edge8\" class=\"edge\">\n",
       "<title>3-&gt;5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M67.19,-62C79.46,-62 97.41,-62 109.94,-62\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"114.94,-62 109.94,-64.25 112.44,-62 109.94,-62 109.94,-62 109.94,-62 112.44,-62 109.94,-59.75 114.94,-62 114.94,-62\"/>\n",
       "<text text-anchor=\"start\" x=\"88\" y=\"-67.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 4 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M199.33,-97.5C199.33,-97.5 189.67,-97.5 189.67,-97.5 186.83,-97.5 184,-94.67 184,-91.83 184,-91.83 184,-86.17 184,-86.17 184,-83.33 186.83,-80.5 189.67,-80.5 189.67,-80.5 199.33,-80.5 199.33,-80.5 202.17,-80.5 205,-83.33 205,-86.17 205,-86.17 205,-91.83 205,-91.83 205,-94.67 202.17,-97.5 199.33,-97.5\"/>\n",
       "<text text-anchor=\"start\" x=\"188\" y=\"-86.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q5</text>\n",
       "</g>\n",
       "<!-- 6 -->\n",
       "<g id=\"node8\" class=\"node\">\n",
       "<title>6</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M272.33,-71.5C272.33,-71.5 262.67,-71.5 262.67,-71.5 259.83,-71.5 257,-68.67 257,-65.83 257,-65.83 257,-60.17 257,-60.17 257,-57.33 259.83,-54.5 262.67,-54.5 262.67,-54.5 272.33,-54.5 272.33,-54.5 275.17,-54.5 278,-57.33 278,-60.17 278,-60.17 278,-65.83 278,-65.83 278,-68.67 275.17,-71.5 272.33,-71.5\"/>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M273.67,-75.5C273.67,-75.5 261.33,-75.5 261.33,-75.5 257.17,-75.5 253,-71.33 253,-67.17 253,-67.17 253,-58.83 253,-58.83 253,-54.67 257.17,-50.5 261.33,-50.5 261.33,-50.5 273.67,-50.5 273.67,-50.5 277.83,-50.5 282,-54.67 282,-58.83 282,-58.83 282,-67.17 282,-67.17 282,-71.33 277.83,-75.5 273.67,-75.5\"/>\n",
       "<text text-anchor=\"start\" x=\"261\" y=\"-60.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q6</text>\n",
       "</g>\n",
       "<!-- 4&#45;&gt;6 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>4-&gt;6</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M205.08,-85.49C216.07,-81.47 234.34,-74.78 248.11,-69.73\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"252.96,-67.96 249.03,-71.79 250.61,-68.82 248.26,-69.68 248.26,-69.68 248.26,-69.68 250.61,-68.82 247.49,-67.57 252.96,-67.96 252.96,-67.96\"/>\n",
       "<text text-anchor=\"start\" x=\"226\" y=\"-83.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">a</text>\n",
       "</g>\n",
       "<!-- 5&#45;&gt;0 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>5-&gt;0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M132.18,-70.66C137.34,-78.14 145.42,-88.97 154,-97 161.63,-104.14 171.31,-110.79 179.18,-115.7\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"183.8,-118.52 178.36,-117.84 181.67,-117.22 179.54,-115.92 179.54,-115.92 179.54,-115.92 181.67,-117.22 180.71,-114 183.8,-118.52 183.8,-118.52\"/>\n",
       "<text text-anchor=\"start\" x=\"157\" y=\"-111.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 5&#45;&gt;4 -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>5-&gt;4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M136.1,-65.87C147.34,-70.4 166.08,-77.95 179.08,-83.19\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"183.92,-85.14 178.44,-85.36 181.6,-84.2 179.28,-83.27 179.28,-83.27 179.28,-83.27 181.6,-84.2 180.12,-81.18 183.92,-85.14 183.92,-85.14\"/>\n",
       "<text text-anchor=\"start\" x=\"157\" y=\"-82.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 6&#45;&gt;5 -->\n",
       "<g id=\"edge9\" class=\"edge\">\n",
       "<title>6-&gt;5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M252.8,-60.69C236.44,-58.19 208.26,-54.74 184,-56 169.53,-56.75 153.09,-58.56 141.51,-60\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"136.24,-60.67 140.92,-57.81 138.72,-60.36 141.2,-60.04 141.2,-60.04 141.2,-60.04 138.72,-60.36 141.49,-62.27 136.24,-60.67 136.24,-60.67\"/>\n",
       "<text text-anchor=\"start\" x=\"191.5\" y=\"-61.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 7&#45;&gt;5 -->\n",
       "<g id=\"edge10\" class=\"edge\">\n",
       "<title>7-&gt;5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M398.83,-11.03C384.68,-6.33 361.84,0 341.5,0 193.5,0 193.5,0 193.5,0 165.11,0 143.64,-30.37 133.31,-48.59\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"130.7,-53.38 131.12,-47.91 131.9,-51.19 133.09,-48.99 133.09,-48.99 133.09,-48.99 131.9,-51.19 135.07,-50.07 130.7,-53.38 130.7,-53.38\"/>\n",
       "<text text-anchor=\"start\" x=\"264.5\" y=\"-5.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>"
      ],
      "text/plain": [
       "<IPython.core.display.SVG object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "m = from_regexp('(a b|a)*', display_steps=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## From NFAs to regular expressions\n",
    "\n",
    "The `to_regexp` function converts in the opposite direction:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "ε ∪ a* a ∪ (ε ∪ a* a) (a b (ε ∪ a* a))* a b (ε ∪ a* a)"
      ],
      "text/plain": [
       "<tock.regexps.RegularExpression at 0x109129f10>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "e = to_regexp(m)\n",
    "e"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The resulting regular expression depends a lot on the order in which states are eliminated; Tock eliminates states in reverse alphabetical order.\n",
    "\n",
    "Again, the `display_steps` option causes all the intermediate steps of the conversion to be displayed."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600pt\" height=\"185pt\" viewBox=\"0.00 0.00 600.00 185.00\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 181)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-181 596,-181 596,4 -4,4\"/>\n",
       "<!-- _START -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>_START</title>\n",
       "</g>\n",
       "<!-- 0 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M71.33,-126.5C71.33,-126.5 43.67,-126.5 43.67,-126.5 40.83,-126.5 38,-123.67 38,-120.83 38,-120.83 38,-115.17 38,-115.17 38,-112.33 40.83,-109.5 43.67,-109.5 43.67,-109.5 71.33,-109.5 71.33,-109.5 74.17,-109.5 77,-112.33 77,-115.17 77,-115.17 77,-120.83 77,-120.83 77,-123.67 74.17,-126.5 71.33,-126.5\"/>\n",
       "<text text-anchor=\"start\" x=\"42\" y=\"-115.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">start</text>\n",
       "</g>\n",
       "<!-- _START&#45;&gt;0 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>_START-&gt;0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1.16,-118C2.89,-118 18.46,-118 32.64,-118\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"37.78,-118 32.78,-120.25 35.28,-118 32.78,-118 32.78,-118 32.78,-118 35.28,-118 32.78,-115.75 37.78,-118 37.78,-118\"/>\n",
       "</g>\n",
       "<!-- 2 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M140.33,-126.5C140.33,-126.5 130.67,-126.5 130.67,-126.5 127.83,-126.5 125,-123.67 125,-120.83 125,-120.83 125,-115.17 125,-115.17 125,-112.33 127.83,-109.5 130.67,-109.5 130.67,-109.5 140.33,-109.5 140.33,-109.5 143.17,-109.5 146,-112.33 146,-115.17 146,-115.17 146,-120.83 146,-120.83 146,-123.67 143.17,-126.5 140.33,-126.5\"/>\n",
       "<text text-anchor=\"start\" x=\"129\" y=\"-115.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q8</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;2 -->\n",
       "<g id=\"edge14\" class=\"edge\">\n",
       "<title>0-&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M77.29,-118C90.4,-118 107.65,-118 119.77,-118\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"124.95,-118 119.95,-120.25 122.45,-118 119.95,-118 119.95,-118 119.95,-118 122.45,-118 119.95,-115.75 124.95,-118 124.95,-118\"/>\n",
       "<text text-anchor=\"start\" x=\"98\" y=\"-123.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 1 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M582.33,-114.5C582.33,-114.5 548.67,-114.5 548.67,-114.5 545.83,-114.5 543,-111.67 543,-108.83 543,-108.83 543,-103.17 543,-103.17 543,-100.33 545.83,-97.5 548.67,-97.5 548.67,-97.5 582.33,-97.5 582.33,-97.5 585.17,-97.5 588,-100.33 588,-103.17 588,-103.17 588,-108.83 588,-108.83 588,-111.67 585.17,-114.5 582.33,-114.5\"/>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M583.67,-118.5C583.67,-118.5 547.33,-118.5 547.33,-118.5 543.17,-118.5 539,-114.33 539,-110.17 539,-110.17 539,-101.83 539,-101.83 539,-97.67 543.17,-93.5 547.33,-93.5 547.33,-93.5 583.67,-93.5 583.67,-93.5 587.83,-93.5 592,-97.67 592,-101.83 592,-101.83 592,-110.17 592,-110.17 592,-114.33 587.83,-118.5 583.67,-118.5\"/>\n",
       "<text text-anchor=\"start\" x=\"547\" y=\"-103.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">accept</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;1 -->\n",
       "<g id=\"edge9\" class=\"edge\">\n",
       "<title>2-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M143.75,-126.7C155.09,-139.27 178.34,-161 203.5,-161 203.5,-161 203.5,-161 481.5,-161 509.55,-161 535.38,-138.91 550.54,-122.73\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"554.16,-118.76 552.46,-123.97 552.48,-120.6 550.79,-122.45 550.79,-122.45 550.79,-122.45 552.48,-120.6 549.13,-120.94 554.16,-118.76 554.16,-118.76\"/>\n",
       "<text text-anchor=\"start\" x=\"339.5\" y=\"-166.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 9 -->\n",
       "<g id=\"node11\" class=\"node\">\n",
       "<title>9</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M209.33,-84.5C209.33,-84.5 199.67,-84.5 199.67,-84.5 196.83,-84.5 194,-81.67 194,-78.83 194,-78.83 194,-73.17 194,-73.17 194,-70.33 196.83,-67.5 199.67,-67.5 199.67,-67.5 209.33,-67.5 209.33,-67.5 212.17,-67.5 215,-70.33 215,-73.17 215,-73.17 215,-78.83 215,-78.83 215,-81.67 212.17,-84.5 209.33,-84.5\"/>\n",
       "<text text-anchor=\"start\" x=\"198\" y=\"-73.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q7</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;9 -->\n",
       "<g id=\"edge8\" class=\"edge\">\n",
       "<title>2-&gt;9</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M146.1,-111.98C157.44,-104.87 176.42,-92.98 189.42,-84.83\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"193.92,-82.01 190.88,-86.57 191.8,-83.33 189.68,-84.66 189.68,-84.66 189.68,-84.66 191.8,-83.33 188.49,-82.76 193.92,-82.01 193.92,-82.01\"/>\n",
       "<text text-anchor=\"start\" x=\"167\" y=\"-105.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 3 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M278.33,-45.5C278.33,-45.5 268.67,-45.5 268.67,-45.5 265.83,-45.5 263,-42.67 263,-39.83 263,-39.83 263,-34.17 263,-34.17 263,-31.33 265.83,-28.5 268.67,-28.5 268.67,-28.5 278.33,-28.5 278.33,-28.5 281.17,-28.5 284,-31.33 284,-34.17 284,-34.17 284,-39.83 284,-39.83 284,-42.67 281.17,-45.5 278.33,-45.5\"/>\n",
       "<text text-anchor=\"start\" x=\"267\" y=\"-34.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q1</text>\n",
       "</g>\n",
       "<!-- 4 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M347.33,-51.5C347.33,-51.5 337.67,-51.5 337.67,-51.5 334.83,-51.5 332,-48.67 332,-45.83 332,-45.83 332,-40.17 332,-40.17 332,-37.33 334.83,-34.5 337.67,-34.5 337.67,-34.5 347.33,-34.5 347.33,-34.5 350.17,-34.5 353,-37.33 353,-40.17 353,-40.17 353,-45.83 353,-45.83 353,-48.67 350.17,-51.5 347.33,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"336\" y=\"-40.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q2</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;4 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>3-&gt;4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M284.1,-37.86C295.24,-38.86 313.75,-40.52 326.73,-41.68\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"331.92,-42.14 326.74,-43.94 329.43,-41.92 326.94,-41.7 326.94,-41.7 326.94,-41.7 329.43,-41.92 327.14,-39.45 331.92,-42.14 331.92,-42.14\"/>\n",
       "<text text-anchor=\"start\" x=\"305\" y=\"-46.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">a</text>\n",
       "</g>\n",
       "<!-- 5 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M416.33,-51.5C416.33,-51.5 406.67,-51.5 406.67,-51.5 403.83,-51.5 401,-48.67 401,-45.83 401,-45.83 401,-40.17 401,-40.17 401,-37.33 403.83,-34.5 406.67,-34.5 406.67,-34.5 416.33,-34.5 416.33,-34.5 419.17,-34.5 422,-37.33 422,-40.17 422,-40.17 422,-45.83 422,-45.83 422,-48.67 419.17,-51.5 416.33,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"405\" y=\"-40.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q3</text>\n",
       "</g>\n",
       "<!-- 4&#45;&gt;5 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>4-&gt;5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M353.1,-43C364.24,-43 382.75,-43 395.73,-43\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"400.92,-43 395.92,-45.25 398.42,-43 395.92,-43 395.92,-43 395.92,-43 398.42,-43 395.92,-40.75 400.92,-43 400.92,-43\"/>\n",
       "<text text-anchor=\"start\" x=\"374\" y=\"-48.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 7 -->\n",
       "<g id=\"node9\" class=\"node\">\n",
       "<title>7</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M485.33,-51.5C485.33,-51.5 475.67,-51.5 475.67,-51.5 472.83,-51.5 470,-48.67 470,-45.83 470,-45.83 470,-40.17 470,-40.17 470,-37.33 472.83,-34.5 475.67,-34.5 475.67,-34.5 485.33,-34.5 485.33,-34.5 488.17,-34.5 491,-37.33 491,-40.17 491,-40.17 491,-45.83 491,-45.83 491,-48.67 488.17,-51.5 485.33,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"474\" y=\"-40.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q4</text>\n",
       "</g>\n",
       "<!-- 5&#45;&gt;7 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>5-&gt;7</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M422.1,-43C433.24,-43 451.75,-43 464.73,-43\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"469.92,-43 464.92,-45.25 467.42,-43 464.92,-43 464.92,-43 464.92,-43 467.42,-43 464.92,-40.75 469.92,-43 469.92,-43\"/>\n",
       "<text text-anchor=\"start\" x=\"443\" y=\"-48.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">b</text>\n",
       "</g>\n",
       "<!-- 6 -->\n",
       "<g id=\"node8\" class=\"node\">\n",
       "<title>6</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M278.33,-80.5C278.33,-80.5 268.67,-80.5 268.67,-80.5 265.83,-80.5 263,-77.67 263,-74.83 263,-74.83 263,-69.17 263,-69.17 263,-66.33 265.83,-63.5 268.67,-63.5 268.67,-63.5 278.33,-63.5 278.33,-63.5 281.17,-63.5 284,-66.33 284,-69.17 284,-69.17 284,-74.83 284,-74.83 284,-77.67 281.17,-80.5 278.33,-80.5\"/>\n",
       "<text text-anchor=\"start\" x=\"267\" y=\"-69.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q5</text>\n",
       "</g>\n",
       "<!-- 8 -->\n",
       "<g id=\"node10\" class=\"node\">\n",
       "<title>8</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M347.33,-114.5C347.33,-114.5 337.67,-114.5 337.67,-114.5 334.83,-114.5 332,-111.67 332,-108.83 332,-108.83 332,-103.17 332,-103.17 332,-100.33 334.83,-97.5 337.67,-97.5 337.67,-97.5 347.33,-97.5 347.33,-97.5 350.17,-97.5 353,-100.33 353,-103.17 353,-103.17 353,-108.83 353,-108.83 353,-111.67 350.17,-114.5 347.33,-114.5\"/>\n",
       "<text text-anchor=\"start\" x=\"336\" y=\"-103.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q6</text>\n",
       "</g>\n",
       "<!-- 6&#45;&gt;8 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>6-&gt;8</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M284.2,-74.95C292.37,-77.61 304.26,-81.88 314,-87 318.7,-89.47 323.55,-92.6 327.85,-95.61\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"331.94,-98.54 326.56,-97.45 329.9,-97.08 327.87,-95.62 327.87,-95.62 327.87,-95.62 329.9,-97.08 329.19,-93.8 331.94,-98.54 331.94,-98.54\"/>\n",
       "<text text-anchor=\"start\" x=\"305\" y=\"-92.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">a</text>\n",
       "</g>\n",
       "<!-- 7&#45;&gt;1 -->\n",
       "<g id=\"edge13\" class=\"edge\">\n",
       "<title>7-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M491.02,-50.23C503.82,-59.94 526.91,-77.47 543.8,-90.29\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"547.95,-93.44 542.61,-92.21 545.96,-91.93 543.97,-90.41 543.97,-90.41 543.97,-90.41 545.96,-91.93 545.33,-88.62 547.95,-93.44 547.95,-93.44\"/>\n",
       "<text text-anchor=\"start\" x=\"512\" y=\"-78.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 7&#45;&gt;9 -->\n",
       "<g id=\"edge12\" class=\"edge\">\n",
       "<title>7-&gt;9</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M472.25,-34.3C460.91,-21.73 437.66,0 412.5,0 272.5,0 272.5,0 272.5,0 239.61,0 219.02,-40.56 210.31,-62.42\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"208.44,-67.28 208.13,-61.81 209.34,-64.95 210.23,-62.61 210.23,-62.61 210.23,-62.61 209.34,-64.95 212.33,-63.42 208.44,-67.28 208.44,-67.28\"/>\n",
       "<text text-anchor=\"start\" x=\"339.5\" y=\"-5.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 8&#45;&gt;1 -->\n",
       "<g id=\"edge11\" class=\"edge\">\n",
       "<title>8-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M353.28,-106C384.54,-106 482.9,-106 533.61,-106\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"538.66,-106 533.66,-108.25 536.16,-106 533.66,-106 533.66,-106 533.66,-106 536.16,-106 533.66,-103.75 538.66,-106 538.66,-106\"/>\n",
       "<text text-anchor=\"start\" x=\"443\" y=\"-111.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 8&#45;&gt;9 -->\n",
       "<g id=\"edge10\" class=\"edge\">\n",
       "<title>8-&gt;9</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M331.84,-106.64C312.42,-107.58 267.55,-108.01 233,-95 228.21,-93.2 223.46,-90.39 219.29,-87.47\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"215.02,-84.31 220.38,-85.48 217.03,-85.8 219.04,-87.28 219.04,-87.28 219.04,-87.28 217.03,-85.8 217.7,-89.09 215.02,-84.31 215.02,-84.31\"/>\n",
       "<text text-anchor=\"start\" x=\"270.5\" y=\"-111.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 9&#45;&gt;3 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>9-&gt;3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M214.96,-67.38C220.06,-63.02 226.6,-57.84 233,-54 240.8,-49.32 250.13,-45.24 257.76,-42.25\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"262.73,-40.37 258.85,-44.24 260.39,-41.25 258.06,-42.14 258.06,-42.14 258.06,-42.14 260.39,-41.25 257.26,-40.04 262.73,-40.37 262.73,-40.37\"/>\n",
       "<text text-anchor=\"start\" x=\"236\" y=\"-59.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 9&#45;&gt;6 -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>9-&gt;6</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M215.1,-75.43C226.24,-74.76 244.75,-73.66 257.73,-72.88\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"262.92,-72.57 258.06,-75.12 260.42,-72.72 257.93,-72.87 257.93,-72.87 257.93,-72.87 260.42,-72.72 257.79,-70.62 262.92,-72.57 262.92,-72.57\"/>\n",
       "<text text-anchor=\"start\" x=\"236\" y=\"-80.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>"
      ],
      "text/plain": [
       "<IPython.core.display.SVG object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "eliminate q8"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/svg+xml": [
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"531pt\" height=\"185pt\" viewBox=\"0.00 0.00 531.00 185.00\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 181)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-181 527,-181 527,4 -4,4\"/>\n",
       "<!-- _START -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>_START</title>\n",
       "</g>\n",
       "<!-- 0 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M71.33,-126.5C71.33,-126.5 43.67,-126.5 43.67,-126.5 40.83,-126.5 38,-123.67 38,-120.83 38,-120.83 38,-115.17 38,-115.17 38,-112.33 40.83,-109.5 43.67,-109.5 43.67,-109.5 71.33,-109.5 71.33,-109.5 74.17,-109.5 77,-112.33 77,-115.17 77,-115.17 77,-120.83 77,-120.83 77,-123.67 74.17,-126.5 71.33,-126.5\"/>\n",
       "<text text-anchor=\"start\" x=\"42\" y=\"-115.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">start</text>\n",
       "</g>\n",
       "<!-- _START&#45;&gt;0 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>_START-&gt;0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1.16,-118C2.89,-118 18.46,-118 32.64,-118\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"37.78,-118 32.78,-120.25 35.28,-118 32.78,-118 32.78,-118 32.78,-118 35.28,-118 32.78,-115.75 37.78,-118 37.78,-118\"/>\n",
       "</g>\n",
       "<!-- 1 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M513.33,-114.5C513.33,-114.5 479.67,-114.5 479.67,-114.5 476.83,-114.5 474,-111.67 474,-108.83 474,-108.83 474,-103.17 474,-103.17 474,-100.33 476.83,-97.5 479.67,-97.5 479.67,-97.5 513.33,-97.5 513.33,-97.5 516.17,-97.5 519,-100.33 519,-103.17 519,-103.17 519,-108.83 519,-108.83 519,-111.67 516.17,-114.5 513.33,-114.5\"/>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M514.67,-118.5C514.67,-118.5 478.33,-118.5 478.33,-118.5 474.17,-118.5 470,-114.33 470,-110.17 470,-110.17 470,-101.83 470,-101.83 470,-97.67 474.17,-93.5 478.33,-93.5 478.33,-93.5 514.67,-93.5 514.67,-93.5 518.83,-93.5 523,-97.67 523,-101.83 523,-101.83 523,-110.17 523,-110.17 523,-114.33 518.83,-118.5 514.67,-118.5\"/>\n",
       "<text text-anchor=\"start\" x=\"478\" y=\"-103.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">accept</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;1 -->\n",
       "<g id=\"edge13\" class=\"edge\">\n",
       "<title>0-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M66.96,-126.7C80.14,-139.27 106.91,-161 134.5,-161 134.5,-161 134.5,-161 412.5,-161 440.55,-161 466.38,-138.91 481.54,-122.73\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"485.16,-118.76 483.46,-123.97 483.48,-120.6 481.79,-122.45 481.79,-122.45 481.79,-122.45 483.48,-120.6 480.13,-120.94 485.16,-118.76 485.16,-118.76\"/>\n",
       "<text text-anchor=\"start\" x=\"270.5\" y=\"-166.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 8 -->\n",
       "<g id=\"node10\" class=\"node\">\n",
       "<title>8</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M140.33,-84.5C140.33,-84.5 130.67,-84.5 130.67,-84.5 127.83,-84.5 125,-81.67 125,-78.83 125,-78.83 125,-73.17 125,-73.17 125,-70.33 127.83,-67.5 130.67,-67.5 130.67,-67.5 140.33,-67.5 140.33,-67.5 143.17,-67.5 146,-70.33 146,-73.17 146,-73.17 146,-78.83 146,-78.83 146,-81.67 143.17,-84.5 140.33,-84.5\"/>\n",
       "<text text-anchor=\"start\" x=\"129\" y=\"-73.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q7</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;8 -->\n",
       "<g id=\"edge12\" class=\"edge\">\n",
       "<title>0-&gt;8</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M74.25,-109.3C87.72,-101.85 106.96,-91.22 120.05,-83.99\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"124.57,-81.49 121.28,-85.87 122.38,-82.7 120.2,-83.91 120.2,-83.91 120.2,-83.91 122.38,-82.7 119.11,-81.94 124.57,-81.49 124.57,-81.49\"/>\n",
       "<text text-anchor=\"start\" x=\"98\" y=\"-102.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 2 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M209.33,-45.5C209.33,-45.5 199.67,-45.5 199.67,-45.5 196.83,-45.5 194,-42.67 194,-39.83 194,-39.83 194,-34.17 194,-34.17 194,-31.33 196.83,-28.5 199.67,-28.5 199.67,-28.5 209.33,-28.5 209.33,-28.5 212.17,-28.5 215,-31.33 215,-34.17 215,-34.17 215,-39.83 215,-39.83 215,-42.67 212.17,-45.5 209.33,-45.5\"/>\n",
       "<text text-anchor=\"start\" x=\"198\" y=\"-34.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q1</text>\n",
       "</g>\n",
       "<!-- 3 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M278.33,-51.5C278.33,-51.5 268.67,-51.5 268.67,-51.5 265.83,-51.5 263,-48.67 263,-45.83 263,-45.83 263,-40.17 263,-40.17 263,-37.33 265.83,-34.5 268.67,-34.5 268.67,-34.5 278.33,-34.5 278.33,-34.5 281.17,-34.5 284,-37.33 284,-40.17 284,-40.17 284,-45.83 284,-45.83 284,-48.67 281.17,-51.5 278.33,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"267\" y=\"-40.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q2</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;3 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>2-&gt;3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M215.1,-37.86C226.24,-38.86 244.75,-40.52 257.73,-41.68\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"262.92,-42.14 257.74,-43.94 260.43,-41.92 257.94,-41.7 257.94,-41.7 257.94,-41.7 260.43,-41.92 258.14,-39.45 262.92,-42.14 262.92,-42.14\"/>\n",
       "<text text-anchor=\"start\" x=\"236\" y=\"-46.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">a</text>\n",
       "</g>\n",
       "<!-- 4 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M347.33,-51.5C347.33,-51.5 337.67,-51.5 337.67,-51.5 334.83,-51.5 332,-48.67 332,-45.83 332,-45.83 332,-40.17 332,-40.17 332,-37.33 334.83,-34.5 337.67,-34.5 337.67,-34.5 347.33,-34.5 347.33,-34.5 350.17,-34.5 353,-37.33 353,-40.17 353,-40.17 353,-45.83 353,-45.83 353,-48.67 350.17,-51.5 347.33,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"336\" y=\"-40.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q3</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;4 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>3-&gt;4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M284.1,-43C295.24,-43 313.75,-43 326.73,-43\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"331.92,-43 326.92,-45.25 329.42,-43 326.92,-43 326.92,-43 326.92,-43 329.42,-43 326.92,-40.75 331.92,-43 331.92,-43\"/>\n",
       "<text text-anchor=\"start\" x=\"305\" y=\"-48.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 6 -->\n",
       "<g id=\"node8\" class=\"node\">\n",
       "<title>6</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M416.33,-51.5C416.33,-51.5 406.67,-51.5 406.67,-51.5 403.83,-51.5 401,-48.67 401,-45.83 401,-45.83 401,-40.17 401,-40.17 401,-37.33 403.83,-34.5 406.67,-34.5 406.67,-34.5 416.33,-34.5 416.33,-34.5 419.17,-34.5 422,-37.33 422,-40.17 422,-40.17 422,-45.83 422,-45.83 422,-48.67 419.17,-51.5 416.33,-51.5\"/>\n",
       "<text text-anchor=\"start\" x=\"405\" y=\"-40.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q4</text>\n",
       "</g>\n",
       "<!-- 4&#45;&gt;6 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>4-&gt;6</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M353.1,-43C364.24,-43 382.75,-43 395.73,-43\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"400.92,-43 395.92,-45.25 398.42,-43 395.92,-43 395.92,-43 395.92,-43 398.42,-43 395.92,-40.75 400.92,-43 400.92,-43\"/>\n",
       "<text text-anchor=\"start\" x=\"374\" y=\"-48.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">b</text>\n",
       "</g>\n",
       "<!-- 5 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M209.33,-80.5C209.33,-80.5 199.67,-80.5 199.67,-80.5 196.83,-80.5 194,-77.67 194,-74.83 194,-74.83 194,-69.17 194,-69.17 194,-66.33 196.83,-63.5 199.67,-63.5 199.67,-63.5 209.33,-63.5 209.33,-63.5 212.17,-63.5 215,-66.33 215,-69.17 215,-69.17 215,-74.83 215,-74.83 215,-77.67 212.17,-80.5 209.33,-80.5\"/>\n",
       "<text text-anchor=\"start\" x=\"198\" y=\"-69.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q5</text>\n",
       "</g>\n",
       "<!-- 7 -->\n",
       "<g id=\"node9\" class=\"node\">\n",
       "<title>7</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M278.33,-114.5C278.33,-114.5 268.67,-114.5 268.67,-114.5 265.83,-114.5 263,-111.67 263,-108.83 263,-108.83 263,-103.17 263,-103.17 263,-100.33 265.83,-97.5 268.67,-97.5 268.67,-97.5 278.33,-97.5 278.33,-97.5 281.17,-97.5 284,-100.33 284,-103.17 284,-103.17 284,-108.83 284,-108.83 284,-111.67 281.17,-114.5 278.33,-114.5\"/>\n",
       "<text text-anchor=\"start\" x=\"267\" y=\"-103.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q6</text>\n",
       "</g>\n",
       "<!-- 5&#45;&gt;7 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>5-&gt;7</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M215.2,-74.95C223.37,-77.61 235.26,-81.88 245,-87 249.7,-89.47 254.55,-92.6 258.85,-95.61\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"262.94,-98.54 257.56,-97.45 260.9,-97.08 258.87,-95.62 258.87,-95.62 258.87,-95.62 260.9,-97.08 260.19,-93.8 262.94,-98.54 262.94,-98.54\"/>\n",
       "<text text-anchor=\"start\" x=\"236\" y=\"-92.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">a</text>\n",
       "</g>\n",
       "<!-- 6&#45;&gt;1 -->\n",
       "<g id=\"edge11\" class=\"edge\">\n",
       "<title>6-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M422.02,-50.23C434.82,-59.94 457.91,-77.47 474.8,-90.29\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"478.95,-93.44 473.61,-92.21 476.96,-91.93 474.97,-90.41 474.97,-90.41 474.97,-90.41 476.96,-91.93 476.33,-88.62 478.95,-93.44 478.95,-93.44\"/>\n",
       "<text text-anchor=\"start\" x=\"443\" y=\"-78.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 6&#45;&gt;8 -->\n",
       "<g id=\"edge10\" class=\"edge\">\n",
       "<title>6-&gt;8</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M403.25,-34.3C391.91,-21.73 368.66,0 343.5,0 203.5,0 203.5,0 203.5,0 170.61,0 150.02,-40.56 141.31,-62.42\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"139.44,-67.28 139.13,-61.81 140.34,-64.95 141.23,-62.61 141.23,-62.61 141.23,-62.61 140.34,-64.95 143.33,-63.42 139.44,-67.28 139.44,-67.28\"/>\n",
       "<text text-anchor=\"start\" x=\"270.5\" y=\"-5.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 7&#45;&gt;1 -->\n",
       "<g id=\"edge9\" class=\"edge\">\n",
       "<title>7-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M284.28,-106C315.54,-106 413.9,-106 464.61,-106\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"469.66,-106 464.66,-108.25 467.16,-106 464.66,-106 464.66,-106 464.66,-106 467.16,-106 464.66,-103.75 469.66,-106 469.66,-106\"/>\n",
       "<text text-anchor=\"start\" x=\"374\" y=\"-111.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 7&#45;&gt;8 -->\n",
       "<g id=\"edge8\" class=\"edge\">\n",
       "<title>7-&gt;8</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M262.84,-106.64C243.42,-107.58 198.55,-108.01 164,-95 159.21,-93.2 154.46,-90.39 150.29,-87.47\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"146.02,-84.31 151.38,-85.48 148.03,-85.8 150.04,-87.28 150.04,-87.28 150.04,-87.28 148.03,-85.8 148.7,-89.09 146.02,-84.31 146.02,-84.31\"/>\n",
       "<text text-anchor=\"start\" x=\"201.5\" y=\"-111.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 8&#45;&gt;2 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>8-&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M145.96,-67.38C151.06,-63.02 157.6,-57.84 164,-54 171.8,-49.32 181.13,-45.24 188.76,-42.25\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"193.73,-40.37 189.85,-44.24 191.39,-41.25 189.06,-42.14 189.06,-42.14 189.06,-42.14 191.39,-41.25 188.26,-40.04 193.73,-40.37 193.73,-40.37\"/>\n",
       "<text text-anchor=\"start\" x=\"167\" y=\"-59.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 8&#45;&gt;5 -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>8-&gt;5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M146.1,-75.43C157.24,-74.76 175.75,-73.66 188.73,-72.88\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"193.92,-72.57 189.06,-75.12 191.42,-72.72 188.93,-72.87 188.93,-72.87 188.93,-72.87 191.42,-72.72 188.79,-70.62 193.92,-72.57 193.92,-72.57\"/>\n",
       "<text text-anchor=\"start\" x=\"167\" y=\"-80.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>"
      ],
      "text/plain": [
       "<IPython.core.display.SVG object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "eliminate q7"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/svg+xml": [
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600pt\" height=\"211pt\" viewBox=\"0.00 0.00 600.00 211.00\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 207)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-207 596,-207 596,4 -4,4\"/>\n",
       "<!-- _START -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>_START</title>\n",
       "</g>\n",
       "<!-- 0 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M71.33,-84.5C71.33,-84.5 43.67,-84.5 43.67,-84.5 40.83,-84.5 38,-81.67 38,-78.83 38,-78.83 38,-73.17 38,-73.17 38,-70.33 40.83,-67.5 43.67,-67.5 43.67,-67.5 71.33,-67.5 71.33,-67.5 74.17,-67.5 77,-70.33 77,-73.17 77,-73.17 77,-78.83 77,-78.83 77,-81.67 74.17,-84.5 71.33,-84.5\"/>\n",
       "<text text-anchor=\"start\" x=\"42\" y=\"-73.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">start</text>\n",
       "</g>\n",
       "<!-- _START&#45;&gt;0 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>_START-&gt;0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1.16,-76C2.89,-76 18.46,-76 32.64,-76\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"37.78,-76 32.78,-78.25 35.28,-76 32.78,-76 32.78,-76 32.78,-76 35.28,-76 32.78,-73.75 37.78,-76 37.78,-76\"/>\n",
       "</g>\n",
       "<!-- 1 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M582.33,-157.5C582.33,-157.5 548.67,-157.5 548.67,-157.5 545.83,-157.5 543,-154.67 543,-151.83 543,-151.83 543,-146.17 543,-146.17 543,-143.33 545.83,-140.5 548.67,-140.5 548.67,-140.5 582.33,-140.5 582.33,-140.5 585.17,-140.5 588,-143.33 588,-146.17 588,-146.17 588,-151.83 588,-151.83 588,-154.67 585.17,-157.5 582.33,-157.5\"/>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M583.67,-161.5C583.67,-161.5 547.33,-161.5 547.33,-161.5 543.17,-161.5 539,-157.33 539,-153.17 539,-153.17 539,-144.83 539,-144.83 539,-140.67 543.17,-136.5 547.33,-136.5 547.33,-136.5 583.67,-136.5 583.67,-136.5 587.83,-136.5 592,-140.67 592,-144.83 592,-144.83 592,-153.17 592,-153.17 592,-157.33 587.83,-161.5 583.67,-161.5\"/>\n",
       "<text text-anchor=\"start\" x=\"547\" y=\"-146.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">accept</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;1 -->\n",
       "<g id=\"edge12\" class=\"edge\">\n",
       "<title>0-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M60.08,-84.71C65.36,-110.88 84.99,-187 134.5,-187 134.5,-187 134.5,-187 481.5,-187 504.24,-187 527.57,-175.06 543.68,-164.56\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"548.03,-161.65 545.12,-166.31 545.95,-163.04 543.87,-164.44 543.87,-164.44 543.87,-164.44 545.95,-163.04 542.62,-162.57 548.03,-161.65 548.03,-161.65\"/>\n",
       "<text text-anchor=\"start\" x=\"305\" y=\"-192.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 2 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M140.33,-84.5C140.33,-84.5 130.67,-84.5 130.67,-84.5 127.83,-84.5 125,-81.67 125,-78.83 125,-78.83 125,-73.17 125,-73.17 125,-70.33 127.83,-67.5 130.67,-67.5 130.67,-67.5 140.33,-67.5 140.33,-67.5 143.17,-67.5 146,-70.33 146,-73.17 146,-73.17 146,-78.83 146,-78.83 146,-81.67 143.17,-84.5 140.33,-84.5\"/>\n",
       "<text text-anchor=\"start\" x=\"129\" y=\"-73.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q1</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;2 -->\n",
       "<g id=\"edge13\" class=\"edge\">\n",
       "<title>0-&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M77.29,-76C90.4,-76 107.65,-76 119.77,-76\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"124.95,-76 119.95,-78.25 122.45,-76 119.95,-76 119.95,-76 119.95,-76 122.45,-76 119.95,-73.75 124.95,-76 124.95,-76\"/>\n",
       "<text text-anchor=\"start\" x=\"98\" y=\"-81.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 5 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M416.33,-101.5C416.33,-101.5 406.67,-101.5 406.67,-101.5 403.83,-101.5 401,-98.67 401,-95.83 401,-95.83 401,-90.17 401,-90.17 401,-87.33 403.83,-84.5 406.67,-84.5 406.67,-84.5 416.33,-84.5 416.33,-84.5 419.17,-84.5 422,-87.33 422,-90.17 422,-90.17 422,-95.83 422,-95.83 422,-98.67 419.17,-101.5 416.33,-101.5\"/>\n",
       "<text text-anchor=\"start\" x=\"405\" y=\"-90.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q5</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;5 -->\n",
       "<g id=\"edge14\" class=\"edge\">\n",
       "<title>0-&gt;5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M62.19,-67.28C71.28,-47.32 96.81,0 134.5,0 134.5,0 134.5,0 343.5,0 382.14,0 400.71,-53.51 407.43,-79.35\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"408.68,-84.42 405.3,-80.11 408.08,-81.99 407.48,-79.56 407.48,-79.56 407.48,-79.56 408.08,-81.99 409.66,-79.02 408.68,-84.42 408.68,-84.42\"/>\n",
       "<text text-anchor=\"start\" x=\"236\" y=\"-5.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 3 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M209.33,-122.5C209.33,-122.5 199.67,-122.5 199.67,-122.5 196.83,-122.5 194,-119.67 194,-116.83 194,-116.83 194,-111.17 194,-111.17 194,-108.33 196.83,-105.5 199.67,-105.5 199.67,-105.5 209.33,-105.5 209.33,-105.5 212.17,-105.5 215,-108.33 215,-111.17 215,-111.17 215,-116.83 215,-116.83 215,-119.67 212.17,-122.5 209.33,-122.5\"/>\n",
       "<text text-anchor=\"start\" x=\"198\" y=\"-111.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q2</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;3 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>2-&gt;3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M146.1,-81.44C157.44,-87.88 176.42,-98.64 189.42,-106.02\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"193.92,-108.57 188.46,-108.06 191.74,-107.33 189.57,-106.1 189.57,-106.1 189.57,-106.1 191.74,-107.33 190.68,-104.14 193.92,-108.57 193.92,-108.57\"/>\n",
       "<text text-anchor=\"start\" x=\"167\" y=\"-102.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">a</text>\n",
       "</g>\n",
       "<!-- 4 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M278.33,-123.5C278.33,-123.5 268.67,-123.5 268.67,-123.5 265.83,-123.5 263,-120.67 263,-117.83 263,-117.83 263,-112.17 263,-112.17 263,-109.33 265.83,-106.5 268.67,-106.5 268.67,-106.5 278.33,-106.5 278.33,-106.5 281.17,-106.5 284,-109.33 284,-112.17 284,-112.17 284,-117.83 284,-117.83 284,-120.67 281.17,-123.5 278.33,-123.5\"/>\n",
       "<text text-anchor=\"start\" x=\"267\" y=\"-112.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q3</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;4 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>3-&gt;4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M215.1,-114.14C226.24,-114.31 244.75,-114.59 257.73,-114.78\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"262.92,-114.86 257.89,-117.03 260.42,-114.82 257.92,-114.78 257.92,-114.78 257.92,-114.78 260.42,-114.82 257.95,-112.53 262.92,-114.86 262.92,-114.86\"/>\n",
       "<text text-anchor=\"start\" x=\"236\" y=\"-119.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 6 -->\n",
       "<g id=\"node8\" class=\"node\">\n",
       "<title>6</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M347.33,-120.5C347.33,-120.5 337.67,-120.5 337.67,-120.5 334.83,-120.5 332,-117.67 332,-114.83 332,-114.83 332,-109.17 332,-109.17 332,-106.33 334.83,-103.5 337.67,-103.5 337.67,-103.5 347.33,-103.5 347.33,-103.5 350.17,-103.5 353,-106.33 353,-109.17 353,-109.17 353,-114.83 353,-114.83 353,-117.67 350.17,-120.5 347.33,-120.5\"/>\n",
       "<text text-anchor=\"start\" x=\"336\" y=\"-109.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q4</text>\n",
       "</g>\n",
       "<!-- 4&#45;&gt;6 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>4-&gt;6</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M284.1,-114.57C295.24,-114.07 313.75,-113.24 326.73,-112.66\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"331.92,-112.43 327.02,-114.9 329.42,-112.54 326.92,-112.65 326.92,-112.65 326.92,-112.65 329.42,-112.54 326.82,-110.41 331.92,-112.43 331.92,-112.43\"/>\n",
       "<text text-anchor=\"start\" x=\"305\" y=\"-118.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">b</text>\n",
       "</g>\n",
       "<!-- 7 -->\n",
       "<g id=\"node9\" class=\"node\">\n",
       "<title>7</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M485.33,-99.5C485.33,-99.5 475.67,-99.5 475.67,-99.5 472.83,-99.5 470,-96.67 470,-93.83 470,-93.83 470,-88.17 470,-88.17 470,-85.33 472.83,-82.5 475.67,-82.5 475.67,-82.5 485.33,-82.5 485.33,-82.5 488.17,-82.5 491,-85.33 491,-88.17 491,-88.17 491,-93.83 491,-93.83 491,-96.67 488.17,-99.5 485.33,-99.5\"/>\n",
       "<text text-anchor=\"start\" x=\"474\" y=\"-88.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q6</text>\n",
       "</g>\n",
       "<!-- 5&#45;&gt;7 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>5-&gt;7</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M422.1,-92.71C433.24,-92.38 451.75,-91.83 464.73,-91.44\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"469.92,-91.29 464.99,-93.68 467.42,-91.36 464.92,-91.44 464.92,-91.44 464.92,-91.44 467.42,-91.36 464.85,-89.19 469.92,-91.29 469.92,-91.29\"/>\n",
       "<text text-anchor=\"start\" x=\"443\" y=\"-97.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">a</text>\n",
       "</g>\n",
       "<!-- 6&#45;&gt;1 -->\n",
       "<g id=\"edge9\" class=\"edge\">\n",
       "<title>6-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M353.23,-116.58C358.4,-118.83 364.93,-121.41 371,-123 427.32,-137.8 495.18,-144.45 533.74,-147.22\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"538.75,-147.57 533.61,-149.46 536.26,-147.39 533.77,-147.22 533.77,-147.22 533.77,-147.22 536.26,-147.39 533.92,-144.97 538.75,-147.57 538.75,-147.57\"/>\n",
       "<text text-anchor=\"start\" x=\"443\" y=\"-143.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 6&#45;&gt;2 -->\n",
       "<g id=\"edge10\" class=\"edge\">\n",
       "<title>6-&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M331.79,-109.35C320.41,-106.31 300.94,-101.32 284,-98 235.85,-88.57 178.15,-81.04 151.43,-77.77\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"146.22,-77.14 151.45,-75.51 148.7,-77.44 151.18,-77.74 151.18,-77.74 151.18,-77.74 148.7,-77.44 150.91,-79.97 146.22,-77.14 146.22,-77.14\"/>\n",
       "<text text-anchor=\"start\" x=\"236\" y=\"-95.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 6&#45;&gt;5 -->\n",
       "<g id=\"edge11\" class=\"edge\">\n",
       "<title>6-&gt;5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M353.1,-109.28C364.34,-106.09 383.08,-100.77 396.08,-97.09\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"400.92,-95.72 396.72,-99.25 398.51,-96.4 396.11,-97.08 396.11,-97.08 396.11,-97.08 398.51,-96.4 395.49,-94.92 400.92,-95.72 400.92,-95.72\"/>\n",
       "<text text-anchor=\"start\" x=\"374\" y=\"-108.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 7&#45;&gt;1 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>7-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M491.02,-97.65C503.43,-106.32 525.5,-121.75 542.23,-133.44\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"546.36,-136.32 540.97,-135.3 544.31,-134.89 542.26,-133.46 542.26,-133.46 542.26,-133.46 544.31,-134.89 543.55,-131.61 546.36,-136.32 546.36,-136.32\"/>\n",
       "<text text-anchor=\"start\" x=\"512\" y=\"-123.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 7&#45;&gt;2 -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>7-&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M474.06,-82.25C463.94,-67.19 440.68,-38 412.5,-38 203.5,-38 203.5,-38 203.5,-38 182.35,-38 161.77,-52.5 149.12,-63.58\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"145.14,-67.19 147.34,-62.16 147,-65.51 148.85,-63.83 148.85,-63.83 148.85,-63.83 147,-65.51 150.36,-65.5 145.14,-67.19 145.14,-67.19\"/>\n",
       "<text text-anchor=\"start\" x=\"305\" y=\"-43.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 7&#45;&gt;5 -->\n",
       "<g id=\"edge8\" class=\"edge\">\n",
       "<title>7-&gt;5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M471.31,-82.41C463.51,-75.33 451.32,-67.03 440,-71 434.17,-73.05 428.66,-76.9 424.12,-80.83\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"420.25,-84.4 422.4,-79.35 422.08,-82.7 423.92,-81.01 423.92,-81.01 423.92,-81.01 422.08,-82.7 425.45,-82.66 420.25,-84.4 420.25,-84.4\"/>\n",
       "<text text-anchor=\"start\" x=\"443\" y=\"-76.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>"
      ],
      "text/plain": [
       "<IPython.core.display.SVG object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "eliminate q6"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/svg+xml": [
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"531pt\" height=\"196pt\" viewBox=\"0.00 0.00 531.00 196.00\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 192)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-192 527,-192 527,4 -4,4\"/>\n",
       "<!-- _START -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>_START</title>\n",
       "</g>\n",
       "<!-- 0 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M71.33,-98.5C71.33,-98.5 43.67,-98.5 43.67,-98.5 40.83,-98.5 38,-95.67 38,-92.83 38,-92.83 38,-87.17 38,-87.17 38,-84.33 40.83,-81.5 43.67,-81.5 43.67,-81.5 71.33,-81.5 71.33,-81.5 74.17,-81.5 77,-84.33 77,-87.17 77,-87.17 77,-92.83 77,-92.83 77,-95.67 74.17,-98.5 71.33,-98.5\"/>\n",
       "<text text-anchor=\"start\" x=\"42\" y=\"-87.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">start</text>\n",
       "</g>\n",
       "<!-- _START&#45;&gt;0 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>_START-&gt;0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1.16,-90C2.89,-90 18.46,-90 32.64,-90\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"37.78,-90 32.78,-92.25 35.28,-90 32.78,-90 32.78,-90 32.78,-90 35.28,-90 32.78,-87.75 37.78,-90 37.78,-90\"/>\n",
       "</g>\n",
       "<!-- 1 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M513.33,-133.5C513.33,-133.5 479.67,-133.5 479.67,-133.5 476.83,-133.5 474,-130.67 474,-127.83 474,-127.83 474,-122.17 474,-122.17 474,-119.33 476.83,-116.5 479.67,-116.5 479.67,-116.5 513.33,-116.5 513.33,-116.5 516.17,-116.5 519,-119.33 519,-122.17 519,-122.17 519,-127.83 519,-127.83 519,-130.67 516.17,-133.5 513.33,-133.5\"/>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M514.67,-137.5C514.67,-137.5 478.33,-137.5 478.33,-137.5 474.17,-137.5 470,-133.33 470,-129.17 470,-129.17 470,-120.83 470,-120.83 470,-116.67 474.17,-112.5 478.33,-112.5 478.33,-112.5 514.67,-112.5 514.67,-112.5 518.83,-112.5 523,-116.67 523,-120.83 523,-120.83 523,-129.17 523,-129.17 523,-133.33 518.83,-137.5 514.67,-137.5\"/>\n",
       "<text text-anchor=\"start\" x=\"478\" y=\"-122.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">accept</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;1 -->\n",
       "<g id=\"edge11\" class=\"edge\">\n",
       "<title>0-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M61.73,-98.78C70.15,-119.93 94.9,-172 134.5,-172 134.5,-172 134.5,-172 412.5,-172 438.3,-172 463.44,-154.59 479.16,-140.97\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"482.95,-137.6 480.71,-142.6 481.09,-139.26 479.22,-140.92 479.22,-140.92 479.22,-140.92 481.09,-139.26 477.72,-139.24 482.95,-137.6 482.95,-137.6\"/>\n",
       "<text text-anchor=\"start\" x=\"270.5\" y=\"-177.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 2 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M140.33,-98.5C140.33,-98.5 130.67,-98.5 130.67,-98.5 127.83,-98.5 125,-95.67 125,-92.83 125,-92.83 125,-87.17 125,-87.17 125,-84.33 127.83,-81.5 130.67,-81.5 130.67,-81.5 140.33,-81.5 140.33,-81.5 143.17,-81.5 146,-84.33 146,-87.17 146,-87.17 146,-92.83 146,-92.83 146,-95.67 143.17,-98.5 140.33,-98.5\"/>\n",
       "<text text-anchor=\"start\" x=\"129\" y=\"-87.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q1</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;2 -->\n",
       "<g id=\"edge12\" class=\"edge\">\n",
       "<title>0-&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M77.29,-90C90.4,-90 107.65,-90 119.77,-90\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"124.95,-90 119.95,-92.25 122.45,-90 119.95,-90 119.95,-90 119.95,-90 122.45,-90 119.95,-87.75 124.95,-90 124.95,-90\"/>\n",
       "<text text-anchor=\"start\" x=\"98\" y=\"-95.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 5 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M416.33,-54.5C416.33,-54.5 406.67,-54.5 406.67,-54.5 403.83,-54.5 401,-51.67 401,-48.83 401,-48.83 401,-43.17 401,-43.17 401,-40.33 403.83,-37.5 406.67,-37.5 406.67,-37.5 416.33,-37.5 416.33,-37.5 419.17,-37.5 422,-40.33 422,-43.17 422,-43.17 422,-48.83 422,-48.83 422,-51.67 419.17,-54.5 416.33,-54.5\"/>\n",
       "<text text-anchor=\"start\" x=\"405\" y=\"-43.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q5</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;5 -->\n",
       "<g id=\"edge13\" class=\"edge\">\n",
       "<title>0-&gt;5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M61.13,-81.37C68.6,-58.84 92.17,0 134.5,0 134.5,0 134.5,0 343.5,0 367.03,0 388.33,-19.52 400.33,-33.13\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"403.74,-37.13 398.79,-34.79 402.12,-35.23 400.5,-33.33 400.5,-33.33 400.5,-33.33 402.12,-35.23 402.21,-31.87 403.74,-37.13 403.74,-37.13\"/>\n",
       "<text text-anchor=\"start\" x=\"236\" y=\"-5.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 3 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M209.33,-136.5C209.33,-136.5 199.67,-136.5 199.67,-136.5 196.83,-136.5 194,-133.67 194,-130.83 194,-130.83 194,-125.17 194,-125.17 194,-122.33 196.83,-119.5 199.67,-119.5 199.67,-119.5 209.33,-119.5 209.33,-119.5 212.17,-119.5 215,-122.33 215,-125.17 215,-125.17 215,-130.83 215,-130.83 215,-133.67 212.17,-136.5 209.33,-136.5\"/>\n",
       "<text text-anchor=\"start\" x=\"198\" y=\"-125.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q2</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;3 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>2-&gt;3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M146.1,-95.44C157.44,-101.88 176.42,-112.64 189.42,-120.02\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"193.92,-122.57 188.46,-122.06 191.74,-121.33 189.57,-120.1 189.57,-120.1 189.57,-120.1 191.74,-121.33 190.68,-118.14 193.92,-122.57 193.92,-122.57\"/>\n",
       "<text text-anchor=\"start\" x=\"167\" y=\"-116.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">a</text>\n",
       "</g>\n",
       "<!-- 4 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M278.33,-135.5C278.33,-135.5 268.67,-135.5 268.67,-135.5 265.83,-135.5 263,-132.67 263,-129.83 263,-129.83 263,-124.17 263,-124.17 263,-121.33 265.83,-118.5 268.67,-118.5 268.67,-118.5 278.33,-118.5 278.33,-118.5 281.17,-118.5 284,-121.33 284,-124.17 284,-124.17 284,-129.83 284,-129.83 284,-132.67 281.17,-135.5 278.33,-135.5\"/>\n",
       "<text text-anchor=\"start\" x=\"267\" y=\"-124.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q3</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;4 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>3-&gt;4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M215.1,-127.86C226.24,-127.69 244.75,-127.41 257.73,-127.22\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"262.92,-127.14 257.95,-129.47 260.42,-127.18 257.92,-127.22 257.92,-127.22 257.92,-127.22 260.42,-127.18 257.89,-124.97 262.92,-127.14 262.92,-127.14\"/>\n",
       "<text text-anchor=\"start\" x=\"236\" y=\"-132.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 6 -->\n",
       "<g id=\"node8\" class=\"node\">\n",
       "<title>6</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M347.33,-118.5C347.33,-118.5 337.67,-118.5 337.67,-118.5 334.83,-118.5 332,-115.67 332,-112.83 332,-112.83 332,-107.17 332,-107.17 332,-104.33 334.83,-101.5 337.67,-101.5 337.67,-101.5 347.33,-101.5 347.33,-101.5 350.17,-101.5 353,-104.33 353,-107.17 353,-107.17 353,-112.83 353,-112.83 353,-115.67 350.17,-118.5 347.33,-118.5\"/>\n",
       "<text text-anchor=\"start\" x=\"336\" y=\"-107.5\" font-family=\"Courier,monospace\" font-size=\"10.00\">q4</text>\n",
       "</g>\n",
       "<!-- 4&#45;&gt;6 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>4-&gt;6</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M284.1,-124.56C295.24,-121.74 313.75,-117.04 326.73,-113.75\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"331.92,-112.43 327.63,-115.84 329.5,-113.05 327.07,-113.66 327.07,-113.66 327.07,-113.66 329.5,-113.05 326.52,-111.48 331.92,-112.43 331.92,-112.43\"/>\n",
       "<text text-anchor=\"start\" x=\"305\" y=\"-124.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">b</text>\n",
       "</g>\n",
       "<!-- 5&#45;&gt;1 -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>5-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M421.7,-54.76C435.35,-67.75 461.22,-92.37 478.41,-108.74\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"482.16,-112.3 476.98,-110.48 480.35,-110.58 478.53,-108.85 478.53,-108.85 478.53,-108.85 480.35,-110.58 480.09,-107.22 482.16,-112.3 482.16,-112.3\"/>\n",
       "<text text-anchor=\"start\" x=\"443\" y=\"-89.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">a</text>\n",
       "</g>\n",
       "<!-- 5&#45;&gt;2 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>5-&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M400.96,-46C387.96,-46 363.97,-46 343.5,-46 203.5,-46 203.5,-46 203.5,-46 180.55,-46 159.36,-64.26 147.19,-77.26\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"143.71,-81.1 145.4,-75.88 145.39,-79.24 147.07,-77.39 147.07,-77.39 147.07,-77.39 145.39,-79.24 148.74,-78.9 143.71,-81.1 143.71,-81.1\"/>\n",
       "<text text-anchor=\"start\" x=\"270.5\" y=\"-51.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">a</text>\n",
       "</g>\n",
       "<!-- 5&#45;&gt;5 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>5-&gt;5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M406.43,-54.69C403.64,-63.17 405.32,-72.5 411.5,-72.5 416.42,-72.5 418.49,-66.58 417.72,-59.88\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"416.57,-54.69 419.84,-59.08 417.11,-57.13 417.65,-59.57 417.65,-59.57 417.65,-59.57 417.11,-57.13 415.45,-60.05 416.57,-54.69 416.57,-54.69\"/>\n",
       "<text text-anchor=\"start\" x=\"408.5\" y=\"-78.3\" font-family=\"Courier,monospace\" font-size=\"9.00\">a</text>\n",
       "</g>\n",
       "<!-- 6&#45;&gt;1 -->\n",
       "<g id=\"edge8\" class=\"edge\">\n",
       "<title>6-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M353.01,-110.94C374.94,-113.1 429.84,-118.52 464.74,-121.96\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"469.74,-122.46 464.54,-124.21 467.25,-122.21 464.76,-121.97 464.76,-121.97 464.76,-121.97 467.25,-122.21 464.98,-119.73 469.74,-122.46 469.74,-122.46\"/>\n",
       "<text text-anchor=\"start\" x=\"408.5\" y=\"-122.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 6&#45;&gt;2 -->\n",
       "<g id=\"edge9\" class=\"edge\">\n",
       "<title>6-&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M331.67,-109.04C298.6,-105.81 191.21,-95.34 151.47,-91.46\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"146.11,-90.94 151.31,-89.18 148.6,-91.18 151.09,-91.42 151.09,-91.42 151.09,-91.42 148.6,-91.18 150.87,-93.66 146.11,-90.94 146.11,-90.94\"/>\n",
       "<text text-anchor=\"start\" x=\"236\" y=\"-106.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 6&#45;&gt;5 -->\n",
       "<g id=\"edge10\" class=\"edge\">\n",
       "<title>6-&gt;5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M352.54,-101.37C364.06,-90.36 384.08,-71.24 397.31,-58.6\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"401.18,-54.91 399.12,-59.99 399.37,-56.63 397.56,-58.36 397.56,-58.36 397.56,-58.36 399.37,-56.63 396.01,-56.73 401.18,-54.91 401.18,-54.91\"/>\n",
       "<text text-anchor=\"start\" x=\"374\" y=\"-87.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>"
      ],
      "text/plain": [
       "<IPython.core.display.SVG object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "eliminate q5"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/svg+xml": [
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"573pt\" height=\"88pt\" viewBox=\"0.00 0.00 573.00 88.47\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 84.47)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-84.47 569,-84.47 569,4 -4,4\"/>\n",
       "<!-- _START -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>_START</title>\n",
       "</g>\n",
       "<!-- 0 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M71.33,-52.97C71.33,-52.97 43.67,-52.97 43.67,-52.97 40.83,-52.97 38,-50.13 38,-47.3 38,-47.3 38,-41.63 38,-41.63 38,-38.8 40.83,-35.97 43.67,-35.97 43.67,-35.97 71.33,-35.97 71.33,-35.97 74.17,-35.97 77,-38.8 77,-41.63 77,-41.63 77,-47.3 77,-47.3 77,-50.13 74.17,-52.97 71.33,-52.97\"/>\n",
       "<text text-anchor=\"start\" x=\"42\" y=\"-41.97\" font-family=\"Courier,monospace\" font-size=\"10.00\">start</text>\n",
       "</g>\n",
       "<!-- _START&#45;&gt;0 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>_START-&gt;0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1.16,-44.47C2.89,-44.47 18.46,-44.47 32.64,-44.47\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"37.78,-44.47 32.78,-46.72 35.28,-44.47 32.78,-44.47 32.78,-44.47 32.78,-44.47 35.28,-44.47 32.78,-42.22 37.78,-44.47 37.78,-44.47\"/>\n",
       "</g>\n",
       "<!-- 1 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M555.33,-52.97C555.33,-52.97 521.67,-52.97 521.67,-52.97 518.83,-52.97 516,-50.13 516,-47.3 516,-47.3 516,-41.63 516,-41.63 516,-38.8 518.83,-35.97 521.67,-35.97 521.67,-35.97 555.33,-35.97 555.33,-35.97 558.17,-35.97 561,-38.8 561,-41.63 561,-41.63 561,-47.3 561,-47.3 561,-50.13 558.17,-52.97 555.33,-52.97\"/>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M556.67,-56.97C556.67,-56.97 520.33,-56.97 520.33,-56.97 516.17,-56.97 512,-52.8 512,-48.63 512,-48.63 512,-40.3 512,-40.3 512,-36.13 516.17,-31.97 520.33,-31.97 520.33,-31.97 556.67,-31.97 556.67,-31.97 560.83,-31.97 565,-36.13 565,-40.3 565,-40.3 565,-48.63 565,-48.63 565,-52.8 560.83,-56.97 556.67,-56.97\"/>\n",
       "<text text-anchor=\"start\" x=\"520\" y=\"-41.97\" font-family=\"Courier,monospace\" font-size=\"10.00\">accept</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;1 -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>0-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M77.12,-49.83C99.37,-55.75 137.83,-64.47 171.5,-64.47 171.5,-64.47 171.5,-64.47 417.5,-64.47 448.26,-64.47 482.86,-57.99 506.97,-52.41\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"511.96,-51.24 507.61,-54.58 509.52,-51.81 507.09,-52.39 507.09,-52.39 507.09,-52.39 509.52,-51.81 506.57,-50.2 511.96,-51.24 511.96,-51.24\"/>\n",
       "<text text-anchor=\"start\" x=\"273.5\" y=\"-70.27\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε ∪ a* a</text>\n",
       "</g>\n",
       "<!-- 2 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M177.33,-33.97C177.33,-33.97 167.67,-33.97 167.67,-33.97 164.83,-33.97 162,-31.13 162,-28.3 162,-28.3 162,-22.63 162,-22.63 162,-19.8 164.83,-16.97 167.67,-16.97 167.67,-16.97 177.33,-16.97 177.33,-16.97 180.17,-16.97 183,-19.8 183,-22.63 183,-22.63 183,-28.3 183,-28.3 183,-31.13 180.17,-33.97 177.33,-33.97\"/>\n",
       "<text text-anchor=\"start\" x=\"166\" y=\"-22.97\" font-family=\"Courier,monospace\" font-size=\"10.00\">q1</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;2 -->\n",
       "<g id=\"edge8\" class=\"edge\">\n",
       "<title>0-&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M77.32,-38.73C82.96,-37.17 89.2,-35.6 95,-34.47 116.04,-30.37 140.73,-27.88 156.25,-26.58\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"161.52,-26.16 156.72,-28.8 159.03,-26.36 156.54,-26.56 156.54,-26.56 156.54,-26.56 159.03,-26.36 156.36,-24.32 161.52,-26.16 161.52,-26.16\"/>\n",
       "<text text-anchor=\"start\" x=\"98.5\" y=\"-40.27\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε ∪ a* a</text>\n",
       "</g>\n",
       "<!-- 3 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M246.33,-33.97C246.33,-33.97 236.67,-33.97 236.67,-33.97 233.83,-33.97 231,-31.13 231,-28.3 231,-28.3 231,-22.63 231,-22.63 231,-19.8 233.83,-16.97 236.67,-16.97 236.67,-16.97 246.33,-16.97 246.33,-16.97 249.17,-16.97 252,-19.8 252,-22.63 252,-22.63 252,-28.3 252,-28.3 252,-31.13 249.17,-33.97 246.33,-33.97\"/>\n",
       "<text text-anchor=\"start\" x=\"235\" y=\"-22.97\" font-family=\"Courier,monospace\" font-size=\"10.00\">q2</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;3 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>2-&gt;3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M183.1,-25.47C194.24,-25.47 212.75,-25.47 225.73,-25.47\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"230.92,-25.47 225.92,-27.72 228.42,-25.47 225.92,-25.47 225.92,-25.47 225.92,-25.47 228.42,-25.47 225.92,-23.22 230.92,-25.47 230.92,-25.47\"/>\n",
       "<text text-anchor=\"start\" x=\"204\" y=\"-31.27\" font-family=\"Courier,monospace\" font-size=\"9.00\">a</text>\n",
       "</g>\n",
       "<!-- 4 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M352.33,-33.97C352.33,-33.97 342.67,-33.97 342.67,-33.97 339.83,-33.97 337,-31.13 337,-28.3 337,-28.3 337,-22.63 337,-22.63 337,-19.8 339.83,-16.97 342.67,-16.97 342.67,-16.97 352.33,-16.97 352.33,-16.97 355.17,-16.97 358,-19.8 358,-22.63 358,-22.63 358,-28.3 358,-28.3 358,-31.13 355.17,-33.97 352.33,-33.97\"/>\n",
       "<text text-anchor=\"start\" x=\"341\" y=\"-22.97\" font-family=\"Courier,monospace\" font-size=\"10.00\">q3</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;4 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>3-&gt;4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M252.1,-25.47C270.36,-25.47 310.22,-25.47 331.85,-25.47\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"336.93,-25.47 331.93,-27.72 334.43,-25.47 331.93,-25.47 331.93,-25.47 331.93,-25.47 334.43,-25.47 331.93,-23.22 336.93,-25.47 336.93,-25.47\"/>\n",
       "<text text-anchor=\"start\" x=\"291.5\" y=\"-31.27\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 5 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M421.33,-33.97C421.33,-33.97 411.67,-33.97 411.67,-33.97 408.83,-33.97 406,-31.13 406,-28.3 406,-28.3 406,-22.63 406,-22.63 406,-19.8 408.83,-16.97 411.67,-16.97 411.67,-16.97 421.33,-16.97 421.33,-16.97 424.17,-16.97 427,-19.8 427,-22.63 427,-22.63 427,-28.3 427,-28.3 427,-31.13 424.17,-33.97 421.33,-33.97\"/>\n",
       "<text text-anchor=\"start\" x=\"410\" y=\"-22.97\" font-family=\"Courier,monospace\" font-size=\"10.00\">q4</text>\n",
       "</g>\n",
       "<!-- 4&#45;&gt;5 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>4-&gt;5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M358.1,-25.47C369.24,-25.47 387.75,-25.47 400.73,-25.47\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"405.92,-25.47 400.92,-27.72 403.42,-25.47 400.92,-25.47 400.92,-25.47 400.92,-25.47 403.42,-25.47 400.92,-23.22 405.92,-25.47 405.92,-25.47\"/>\n",
       "<text text-anchor=\"start\" x=\"379\" y=\"-31.27\" font-family=\"Courier,monospace\" font-size=\"9.00\">b</text>\n",
       "</g>\n",
       "<!-- 5&#45;&gt;1 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>5-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M427.45,-26.29C442.1,-27.58 470.28,-30.36 494,-34.47 498.17,-35.19 502.54,-36.06 506.84,-36.98\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"511.83,-38.08 506.46,-39.2 509.39,-37.54 506.95,-37 506.95,-37 506.95,-37 509.39,-37.54 507.43,-34.81 511.83,-38.08 511.83,-38.08\"/>\n",
       "<text text-anchor=\"start\" x=\"448.5\" y=\"-40.27\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε ∪ a* a</text>\n",
       "</g>\n",
       "<!-- 5&#45;&gt;2 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>5-&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M405.92,-21.65C394.66,-17.35 375.3,-10.57 358,-7.47 302.44,2.49 286.56,2.49 231,-7.47 216,-10.15 199.45,-15.61 187.97,-19.82\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"183.08,-21.65 186.98,-17.79 185.42,-20.77 187.76,-19.9 187.76,-19.9 187.76,-19.9 185.42,-20.77 188.55,-22 183.08,-21.65 183.08,-21.65\"/>\n",
       "<text text-anchor=\"start\" x=\"273.5\" y=\"-7.27\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε ∪ a* a</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>"
      ],
      "text/plain": [
       "<IPython.core.display.SVG object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "eliminate q4"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/svg+xml": [
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"537pt\" height=\"109pt\" viewBox=\"0.00 0.00 537.00 109.16\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 105.16)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-105.16 533,-105.16 533,4 -4,4\"/>\n",
       "<!-- _START -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>_START</title>\n",
       "</g>\n",
       "<!-- 0 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M71.33,-70.66C71.33,-70.66 43.67,-70.66 43.67,-70.66 40.83,-70.66 38,-67.82 38,-64.99 38,-64.99 38,-59.32 38,-59.32 38,-56.49 40.83,-53.66 43.67,-53.66 43.67,-53.66 71.33,-53.66 71.33,-53.66 74.17,-53.66 77,-56.49 77,-59.32 77,-59.32 77,-64.99 77,-64.99 77,-67.82 74.17,-70.66 71.33,-70.66\"/>\n",
       "<text text-anchor=\"start\" x=\"42\" y=\"-59.66\" font-family=\"Courier,monospace\" font-size=\"10.00\">start</text>\n",
       "</g>\n",
       "<!-- _START&#45;&gt;0 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>_START-&gt;0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1.16,-62.16C2.89,-62.16 18.46,-62.16 32.64,-62.16\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"37.78,-62.16 32.78,-64.41 35.28,-62.16 32.78,-62.16 32.78,-62.16 32.78,-62.16 35.28,-62.16 32.78,-59.91 37.78,-62.16 37.78,-62.16\"/>\n",
       "</g>\n",
       "<!-- 1 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M519.33,-70.66C519.33,-70.66 485.67,-70.66 485.67,-70.66 482.83,-70.66 480,-67.82 480,-64.99 480,-64.99 480,-59.32 480,-59.32 480,-56.49 482.83,-53.66 485.67,-53.66 485.67,-53.66 519.33,-53.66 519.33,-53.66 522.17,-53.66 525,-56.49 525,-59.32 525,-59.32 525,-64.99 525,-64.99 525,-67.82 522.17,-70.66 519.33,-70.66\"/>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M520.67,-74.66C520.67,-74.66 484.33,-74.66 484.33,-74.66 480.17,-74.66 476,-70.49 476,-66.32 476,-66.32 476,-57.99 476,-57.99 476,-53.82 480.17,-49.66 484.33,-49.66 484.33,-49.66 520.67,-49.66 520.67,-49.66 524.83,-49.66 529,-53.82 529,-57.99 529,-57.99 529,-66.32 529,-66.32 529,-70.49 524.83,-74.66 520.67,-74.66\"/>\n",
       "<text text-anchor=\"start\" x=\"484\" y=\"-59.66\" font-family=\"Courier,monospace\" font-size=\"10.00\">accept</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;1 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>0-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M77.06,-68.32C99.26,-75.13 137.67,-85.16 171.5,-85.16 171.5,-85.16 171.5,-85.16 360.5,-85.16 398.91,-85.16 442.45,-76.74 470.85,-70.09\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"475.97,-68.87 471.63,-72.22 473.54,-69.45 471.11,-70.03 471.11,-70.03 471.11,-70.03 473.54,-69.45 470.59,-67.84 475.97,-68.87 475.97,-68.87\"/>\n",
       "<text text-anchor=\"start\" x=\"245\" y=\"-90.96\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε ∪ a* a</text>\n",
       "</g>\n",
       "<!-- 2 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M177.33,-48.66C177.33,-48.66 167.67,-48.66 167.67,-48.66 164.83,-48.66 162,-45.82 162,-42.99 162,-42.99 162,-37.32 162,-37.32 162,-34.49 164.83,-31.66 167.67,-31.66 167.67,-31.66 177.33,-31.66 177.33,-31.66 180.17,-31.66 183,-34.49 183,-37.32 183,-37.32 183,-42.99 183,-42.99 183,-45.82 180.17,-48.66 177.33,-48.66\"/>\n",
       "<text text-anchor=\"start\" x=\"166\" y=\"-37.66\" font-family=\"Courier,monospace\" font-size=\"10.00\">q1</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;2 -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>0-&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M77.16,-58.52C99.49,-54.18 136.4,-46.99 156.81,-43.02\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"161.86,-42.03 157.38,-45.2 159.41,-42.51 156.95,-42.99 156.95,-42.99 156.95,-42.99 159.41,-42.51 156.52,-40.78 161.86,-42.03 161.86,-42.03\"/>\n",
       "<text text-anchor=\"start\" x=\"98.5\" y=\"-60.96\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε ∪ a* a</text>\n",
       "</g>\n",
       "<!-- 3 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M270.83,-48.66C270.83,-48.66 261.17,-48.66 261.17,-48.66 258.33,-48.66 255.5,-45.82 255.5,-42.99 255.5,-42.99 255.5,-37.32 255.5,-37.32 255.5,-34.49 258.33,-31.66 261.17,-31.66 261.17,-31.66 270.83,-31.66 270.83,-31.66 273.67,-31.66 276.5,-34.49 276.5,-37.32 276.5,-37.32 276.5,-42.99 276.5,-42.99 276.5,-45.82 273.67,-48.66 270.83,-48.66\"/>\n",
       "<text text-anchor=\"start\" x=\"259.5\" y=\"-37.66\" font-family=\"Courier,monospace\" font-size=\"10.00\">q2</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;3 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>2-&gt;3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M183.29,-40.16C199.25,-40.16 230.98,-40.16 249.86,-40.16\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"255.28,-40.16 250.28,-42.41 252.78,-40.16 250.28,-40.16 250.28,-40.16 250.28,-40.16 252.78,-40.16 250.28,-37.91 255.28,-40.16 255.28,-40.16\"/>\n",
       "<text text-anchor=\"start\" x=\"204\" y=\"-45.96\" font-family=\"Courier,monospace\" font-size=\"9.00\">a</text>\n",
       "</g>\n",
       "<!-- 4 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M364.33,-48.66C364.33,-48.66 354.67,-48.66 354.67,-48.66 351.83,-48.66 349,-45.82 349,-42.99 349,-42.99 349,-37.32 349,-37.32 349,-34.49 351.83,-31.66 354.67,-31.66 354.67,-31.66 364.33,-31.66 364.33,-31.66 367.17,-31.66 370,-34.49 370,-37.32 370,-37.32 370,-42.99 370,-42.99 370,-45.82 367.17,-48.66 364.33,-48.66\"/>\n",
       "<text text-anchor=\"start\" x=\"353\" y=\"-37.66\" font-family=\"Courier,monospace\" font-size=\"10.00\">q3</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;4 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>3-&gt;4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M276.79,-40.16C292.75,-40.16 324.48,-40.16 343.36,-40.16\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"348.78,-40.16 343.78,-42.41 346.28,-40.16 343.78,-40.16 343.78,-40.16 343.78,-40.16 346.28,-40.16 343.78,-37.91 348.78,-40.16 348.78,-40.16\"/>\n",
       "<text text-anchor=\"start\" x=\"322\" y=\"-45.96\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε</text>\n",
       "</g>\n",
       "<!-- 4&#45;&gt;1 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>4-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M370.19,-41.62C387.72,-44.29 425.86,-50.1 458,-55.16 462.13,-55.81 466.47,-56.5 470.76,-57.18\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"475.74,-57.98 470.45,-59.41 473.27,-57.59 470.81,-57.19 470.81,-57.19 470.81,-57.19 473.27,-57.59 471.16,-54.97 475.74,-57.98 475.74,-57.98\"/>\n",
       "<text text-anchor=\"start\" x=\"391\" y=\"-60.96\" font-family=\"Courier,monospace\" font-size=\"9.00\">b (ε ∪ a* a)</text>\n",
       "</g>\n",
       "<!-- 4&#45;&gt;2 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>4-&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M348.67,-32.08C337.78,-23.72 319.35,-11.17 301,-6.16 270.99,2.05 261.01,2.05 231,-6.16 214.8,-10.59 198.54,-20.88 187.46,-28.99\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"183.33,-32.08 185.98,-27.28 185.33,-30.58 187.33,-29.08 187.33,-29.08 187.33,-29.08 185.33,-30.58 188.68,-30.88 183.33,-32.08 183.33,-32.08\"/>\n",
       "<text text-anchor=\"start\" x=\"234\" y=\"-11.96\" font-family=\"Courier,monospace\" font-size=\"9.00\">b (ε ∪ a* a)</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>"
      ],
      "text/plain": [
       "<IPython.core.display.SVG object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "eliminate q3"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/svg+xml": [
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"477pt\" height=\"83pt\" viewBox=\"0.00 0.00 477.00 83.22\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 79.22)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-79.22 473,-79.22 473,4 -4,4\"/>\n",
       "<!-- _START -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>_START</title>\n",
       "</g>\n",
       "<!-- 0 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M71.33,-54.72C71.33,-54.72 43.67,-54.72 43.67,-54.72 40.83,-54.72 38,-51.88 38,-49.05 38,-49.05 38,-43.38 38,-43.38 38,-40.55 40.83,-37.72 43.67,-37.72 43.67,-37.72 71.33,-37.72 71.33,-37.72 74.17,-37.72 77,-40.55 77,-43.38 77,-43.38 77,-49.05 77,-49.05 77,-51.88 74.17,-54.72 71.33,-54.72\"/>\n",
       "<text text-anchor=\"start\" x=\"42\" y=\"-43.72\" font-family=\"Courier,monospace\" font-size=\"10.00\">start</text>\n",
       "</g>\n",
       "<!-- _START&#45;&gt;0 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>_START-&gt;0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1.16,-46.22C2.89,-46.22 18.46,-46.22 32.64,-46.22\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"37.78,-46.22 32.78,-48.47 35.28,-46.22 32.78,-46.22 32.78,-46.22 32.78,-46.22 35.28,-46.22 32.78,-43.97 37.78,-46.22 37.78,-46.22\"/>\n",
       "</g>\n",
       "<!-- 1 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M459.33,-54.72C459.33,-54.72 425.67,-54.72 425.67,-54.72 422.83,-54.72 420,-51.88 420,-49.05 420,-49.05 420,-43.38 420,-43.38 420,-40.55 422.83,-37.72 425.67,-37.72 425.67,-37.72 459.33,-37.72 459.33,-37.72 462.17,-37.72 465,-40.55 465,-43.38 465,-43.38 465,-49.05 465,-49.05 465,-51.88 462.17,-54.72 459.33,-54.72\"/>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M460.67,-58.72C460.67,-58.72 424.33,-58.72 424.33,-58.72 420.17,-58.72 416,-54.55 416,-50.38 416,-50.38 416,-42.05 416,-42.05 416,-37.88 420.17,-33.72 424.33,-33.72 424.33,-33.72 460.67,-33.72 460.67,-33.72 464.83,-33.72 469,-37.88 469,-42.05 469,-42.05 469,-50.38 469,-50.38 469,-54.55 464.83,-58.72 460.67,-58.72\"/>\n",
       "<text text-anchor=\"start\" x=\"424\" y=\"-43.72\" font-family=\"Courier,monospace\" font-size=\"10.00\">accept</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;1 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>0-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M77.37,-49.92C83.02,-50.86 89.24,-51.75 95,-52.22 229.22,-63.17 263.65,-61.44 398,-52.22 402.15,-51.93 406.52,-51.49 410.81,-50.98\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"415.8,-50.35 411.12,-53.21 413.32,-50.67 410.84,-50.98 410.84,-50.98 410.84,-50.98 413.32,-50.67 410.56,-48.75 415.8,-50.35 415.8,-50.35\"/>\n",
       "<text text-anchor=\"start\" x=\"215\" y=\"-65.02\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε ∪ a* a</text>\n",
       "</g>\n",
       "<!-- 2 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M177.33,-35.72C177.33,-35.72 167.67,-35.72 167.67,-35.72 164.83,-35.72 162,-32.88 162,-30.05 162,-30.05 162,-24.38 162,-24.38 162,-21.55 164.83,-18.72 167.67,-18.72 167.67,-18.72 177.33,-18.72 177.33,-18.72 180.17,-18.72 183,-21.55 183,-24.38 183,-24.38 183,-30.05 183,-30.05 183,-32.88 180.17,-35.72 177.33,-35.72\"/>\n",
       "<text text-anchor=\"start\" x=\"166\" y=\"-24.72\" font-family=\"Courier,monospace\" font-size=\"10.00\">q1</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;2 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>0-&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M77.32,-40.48C82.96,-38.92 89.2,-37.35 95,-36.22 116.04,-32.12 140.73,-29.62 156.25,-28.33\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"161.52,-27.91 156.72,-30.55 159.03,-28.11 156.54,-28.31 156.54,-28.31 156.54,-28.31 159.03,-28.11 156.36,-26.06 161.52,-27.91 161.52,-27.91\"/>\n",
       "<text text-anchor=\"start\" x=\"98.5\" y=\"-42.02\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε ∪ a* a</text>\n",
       "</g>\n",
       "<!-- 3 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M304.33,-35.72C304.33,-35.72 294.67,-35.72 294.67,-35.72 291.83,-35.72 289,-32.88 289,-30.05 289,-30.05 289,-24.38 289,-24.38 289,-21.55 291.83,-18.72 294.67,-18.72 294.67,-18.72 304.33,-18.72 304.33,-18.72 307.17,-18.72 310,-21.55 310,-24.38 310,-24.38 310,-30.05 310,-30.05 310,-32.88 307.17,-35.72 304.33,-35.72\"/>\n",
       "<text text-anchor=\"start\" x=\"293\" y=\"-24.72\" font-family=\"Courier,monospace\" font-size=\"10.00\">q2</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;3 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>2-&gt;3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M183.31,-27.22C205.12,-27.22 257.77,-27.22 283.64,-27.22\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"288.74,-27.22 283.74,-29.47 286.24,-27.22 283.74,-27.22 283.74,-27.22 283.74,-27.22 286.24,-27.22 283.74,-24.97 288.74,-27.22 288.74,-27.22\"/>\n",
       "<text text-anchor=\"start\" x=\"233\" y=\"-33.02\" font-family=\"Courier,monospace\" font-size=\"9.00\">a</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;1 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>3-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M310.24,-27.68C327.85,-28.62 366.11,-31.1 398,-36.22 402.18,-36.89 406.56,-37.73 410.86,-38.63\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"415.85,-39.72 410.49,-40.85 413.41,-39.19 410.96,-38.66 410.96,-38.66 410.96,-38.66 413.41,-39.19 411.44,-36.46 415.85,-39.72 415.85,-39.72\"/>\n",
       "<text text-anchor=\"start\" x=\"331\" y=\"-42.02\" font-family=\"Courier,monospace\" font-size=\"9.00\">b (ε ∪ a* a)</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;2 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>3-&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M289.66,-18.55C284.63,-14.24 277.96,-9.48 271,-7.22 241.41,2.41 230.59,2.41 201,-7.22 195.78,-8.91 190.72,-12.02 186.4,-15.28\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"182.34,-18.55 184.82,-13.66 184.29,-16.98 186.23,-15.41 186.23,-15.41 186.23,-15.41 184.29,-16.98 187.65,-17.17 182.34,-18.55 182.34,-18.55\"/>\n",
       "<text text-anchor=\"start\" x=\"204\" y=\"-13.02\" font-family=\"Courier,monospace\" font-size=\"9.00\">b (ε ∪ a* a)</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>"
      ],
      "text/plain": [
       "<IPython.core.display.SVG object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "eliminate q2"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/svg+xml": [
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"388pt\" height=\"91pt\" viewBox=\"0.00 0.00 388.00 90.50\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 86.5)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-86.5 384,-86.5 384,4 -4,4\"/>\n",
       "<!-- _START -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>_START</title>\n",
       "</g>\n",
       "<!-- 0 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M71.33,-56C71.33,-56 43.67,-56 43.67,-56 40.83,-56 38,-53.17 38,-50.33 38,-50.33 38,-44.67 38,-44.67 38,-41.83 40.83,-39 43.67,-39 43.67,-39 71.33,-39 71.33,-39 74.17,-39 77,-41.83 77,-44.67 77,-44.67 77,-50.33 77,-50.33 77,-53.17 74.17,-56 71.33,-56\"/>\n",
       "<text text-anchor=\"start\" x=\"42\" y=\"-45\" font-family=\"Courier,monospace\" font-size=\"10.00\">start</text>\n",
       "</g>\n",
       "<!-- _START&#45;&gt;0 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>_START-&gt;0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1.16,-47.5C2.89,-47.5 18.46,-47.5 32.64,-47.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"37.78,-47.5 32.78,-49.75 35.28,-47.5 32.78,-47.5 32.78,-47.5 32.78,-47.5 35.28,-47.5 32.78,-45.25 37.78,-47.5 37.78,-47.5\"/>\n",
       "</g>\n",
       "<!-- 1 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M370.33,-56C370.33,-56 336.67,-56 336.67,-56 333.83,-56 331,-53.17 331,-50.33 331,-50.33 331,-44.67 331,-44.67 331,-41.83 333.83,-39 336.67,-39 336.67,-39 370.33,-39 370.33,-39 373.17,-39 376,-41.83 376,-44.67 376,-44.67 376,-50.33 376,-50.33 376,-53.17 373.17,-56 370.33,-56\"/>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M371.67,-60C371.67,-60 335.33,-60 335.33,-60 331.17,-60 327,-55.83 327,-51.67 327,-51.67 327,-43.33 327,-43.33 327,-39.17 331.17,-35 335.33,-35 335.33,-35 371.67,-35 371.67,-35 375.83,-35 380,-39.17 380,-43.33 380,-43.33 380,-51.67 380,-51.67 380,-55.83 375.83,-60 371.67,-60\"/>\n",
       "<text text-anchor=\"start\" x=\"335\" y=\"-45\" font-family=\"Courier,monospace\" font-size=\"10.00\">accept</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;1 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>0-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M77.31,-52.83C82.96,-54.24 89.19,-55.62 95,-56.5 189.03,-70.78 214.67,-69.67 309,-57.5 313.2,-56.96 317.59,-56.19 321.89,-55.32\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"326.89,-54.26 322.46,-57.5 324.44,-54.78 322,-55.3 322,-55.3 322,-55.3 324.44,-54.78 321.53,-53.1 326.89,-54.26 326.89,-54.26\"/>\n",
       "<text text-anchor=\"start\" x=\"165.5\" y=\"-72.3\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε ∪ a* a</text>\n",
       "</g>\n",
       "<!-- 2 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M191.33,-17C191.33,-17 181.67,-17 181.67,-17 178.83,-17 176,-14.17 176,-11.33 176,-11.33 176,-5.67 176,-5.67 176,-2.83 178.83,0 181.67,0 181.67,0 191.33,0 191.33,0 194.17,0 197,-2.83 197,-5.67 197,-5.67 197,-11.33 197,-11.33 197,-14.17 194.17,-17 191.33,-17\"/>\n",
       "<text text-anchor=\"start\" x=\"180\" y=\"-6\" font-family=\"Courier,monospace\" font-size=\"10.00\">q1</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;2 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>0-&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M77.24,-41.75C102.77,-33.91 147.94,-20.03 171.03,-12.94\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"175.87,-11.46 171.75,-15.08 173.48,-12.19 171.09,-12.92 171.09,-12.92 171.09,-12.92 173.48,-12.19 170.43,-10.77 175.87,-11.46 175.87,-11.46\"/>\n",
       "<text text-anchor=\"start\" x=\"98.5\" y=\"-42.3\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε ∪ a* a</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;1 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>2-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M197.33,-10.82C221.36,-16.5 283.92,-31.29 321.86,-40.26\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"326.81,-41.43 321.43,-42.47 324.38,-40.85 321.95,-40.28 321.95,-40.28 321.95,-40.28 324.38,-40.85 322.47,-38.09 326.81,-41.43 326.81,-41.43\"/>\n",
       "<text text-anchor=\"start\" x=\"232\" y=\"-43.3\" font-family=\"Courier,monospace\" font-size=\"9.00\">a b (ε ∪ a* a)</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;2 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>2-&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M176.67,-17.19C171.23,-25.67 174.51,-35 186.5,-35 196.24,-35 200.23,-28.84 198.47,-21.98\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"196.33,-17.19 200.42,-20.84 197.35,-19.47 198.37,-21.75 198.37,-21.75 198.37,-21.75 197.35,-19.47 196.31,-22.67 196.33,-17.19 196.33,-17.19\"/>\n",
       "<text text-anchor=\"start\" x=\"149.5\" y=\"-40.8\" font-family=\"Courier,monospace\" font-size=\"9.00\">a b (ε ∪ a* a)</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>"
      ],
      "text/plain": [
       "<IPython.core.display.SVG object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "eliminate q1"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/svg+xml": [
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"464pt\" height=\"37pt\" viewBox=\"0.00 0.00 464.00 36.50\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 32.5)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-32.5 460,-32.5 460,4 -4,4\"/>\n",
       "<!-- _START -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>_START</title>\n",
       "</g>\n",
       "<!-- 0 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M71.33,-21C71.33,-21 43.67,-21 43.67,-21 40.83,-21 38,-18.17 38,-15.33 38,-15.33 38,-9.67 38,-9.67 38,-6.83 40.83,-4 43.67,-4 43.67,-4 71.33,-4 71.33,-4 74.17,-4 77,-6.83 77,-9.67 77,-9.67 77,-15.33 77,-15.33 77,-18.17 74.17,-21 71.33,-21\"/>\n",
       "<text text-anchor=\"start\" x=\"42\" y=\"-10\" font-family=\"Courier,monospace\" font-size=\"10.00\">start</text>\n",
       "</g>\n",
       "<!-- _START&#45;&gt;0 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>_START-&gt;0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1.16,-12.5C2.89,-12.5 18.46,-12.5 32.64,-12.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"37.78,-12.5 32.78,-14.75 35.28,-12.5 32.78,-12.5 32.78,-12.5 32.78,-12.5 35.28,-12.5 32.78,-10.25 37.78,-12.5 37.78,-12.5\"/>\n",
       "</g>\n",
       "<!-- 1 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M446.33,-21C446.33,-21 412.67,-21 412.67,-21 409.83,-21 407,-18.17 407,-15.33 407,-15.33 407,-9.67 407,-9.67 407,-6.83 409.83,-4 412.67,-4 412.67,-4 446.33,-4 446.33,-4 449.17,-4 452,-6.83 452,-9.67 452,-9.67 452,-15.33 452,-15.33 452,-18.17 449.17,-21 446.33,-21\"/>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M447.67,-25C447.67,-25 411.33,-25 411.33,-25 407.17,-25 403,-20.83 403,-16.67 403,-16.67 403,-8.33 403,-8.33 403,-4.17 407.17,0 411.33,0 411.33,0 447.67,0 447.67,0 451.83,0 456,-4.17 456,-8.33 456,-8.33 456,-16.67 456,-16.67 456,-20.83 451.83,-25 447.67,-25\"/>\n",
       "<text text-anchor=\"start\" x=\"411\" y=\"-10\" font-family=\"Courier,monospace\" font-size=\"10.00\">accept</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;1 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>0-&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M77.1,-12.5C136.71,-12.5 323.37,-12.5 397.61,-12.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"402.75,-12.5 397.75,-14.75 400.25,-12.5 397.75,-12.5 397.75,-12.5 397.75,-12.5 400.25,-12.5 397.75,-10.25 402.75,-12.5 402.75,-12.5\"/>\n",
       "<text text-anchor=\"start\" x=\"98\" y=\"-18.3\" font-family=\"Courier,monospace\" font-size=\"9.00\">ε ∪ a* a ∪ (ε ∪ a* a) (a b (ε ∪ a* a))* a b (ε ∪ a* a)</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>"
      ],
      "text/plain": [
       "<IPython.core.display.SVG object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "e = to_regexp(m, display_steps=True)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
