From 92a368fd798bbad321053fc024afa538c97f8f96 Mon Sep 17 00:00:00 2001 From: Chris <Christopher.Happe@uni-duesseldorf.de> Date: Wed, 14 Oct 2020 12:33:30 +0200 Subject: [PATCH] Neue Maschiene zur Visualisierung der Chomsky-Hierarchie --- info4/kapitel-1/Grammatiken.ipynb | 855 +++++++++++++++++++----------- 1 file changed, 551 insertions(+), 304 deletions(-) diff --git a/info4/kapitel-1/Grammatiken.ipynb b/info4/kapitel-1/Grammatiken.ipynb index ea71fb5..be926db 100644 --- a/info4/kapitel-1/Grammatiken.ipynb +++ b/info4/kapitel-1/Grammatiken.ipynb @@ -29,7 +29,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -38,7 +38,7 @@ "Loaded machine: Grammatik" ] }, - "execution_count": 4, + "execution_count": 1, "metadata": {}, "output_type": "execute_result" } @@ -65,7 +65,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -74,7 +74,7 @@ "Machine constants set up using operation 0: $setup_constants()" ] }, - "execution_count": 5, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -85,7 +85,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -103,7 +103,7 @@ "\tRHS = []" ] }, - "execution_count": 6, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -121,7 +121,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -133,7 +133,7 @@ "{[],[a,S,b]}" ] }, - "execution_count": 7, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -159,7 +159,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -168,7 +168,7 @@ "Loaded machine: Grammatik" ] }, - "execution_count": 8, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -199,7 +199,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -208,7 +208,7 @@ "Machine constants set up using operation 0: $setup_constants()" ] }, - "execution_count": 9, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -226,7 +226,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -238,7 +238,7 @@ "/*@symbolic*/ {u,v∣∃(x,z,p,q)·(p ↦ q ∈ {([S]↦[]),([S]↦[a,S,b])} ∧ u = x ⌒ p ⌒ z ∧ v = x ⌒ q ⌒ z)}" ] }, - "execution_count": 10, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -249,7 +249,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -261,7 +261,7 @@ "TRUE" ] }, - "execution_count": 14, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -272,7 +272,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -284,7 +284,7 @@ "FALSE" ] }, - "execution_count": 12, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -295,7 +295,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -313,7 +313,7 @@ "\tx = []" ] }, - "execution_count": 15, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -331,7 +331,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -343,7 +343,7 @@ "{[],[a,S,b]}" ] }, - "execution_count": 16, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -354,7 +354,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -366,7 +366,7 @@ "{[a,b,S],[a,S,b],[a,S,b,a,S,b],[a,a,S,b,b,S]}" ] }, - "execution_count": 18, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -384,7 +384,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -396,7 +396,7 @@ "{[a,b],[a,a,S,b,b]}" ] }, - "execution_count": 19, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -407,7 +407,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -419,7 +419,7 @@ "{[a,a,b,b],[a,a,a,S,b,b,b]}" ] }, - "execution_count": 20, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -443,7 +443,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -455,7 +455,7 @@ "TRUE" ] }, - "execution_count": 23, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -473,7 +473,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -485,7 +485,7 @@ "{[S]}" ] }, - "execution_count": 24, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -496,7 +496,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -508,7 +508,7 @@ "{[],[a,S,b]}" ] }, - "execution_count": 25, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -519,7 +519,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -531,7 +531,7 @@ "{[a,b],[a,a,S,b,b]}" ] }, - "execution_count": 26, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -542,7 +542,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -554,7 +554,7 @@ "{[a,a,b,b],[a,a,a,S,b,b,b]}" ] }, - "execution_count": 27, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -565,7 +565,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -577,7 +577,7 @@ "{[a,a,a,b,b,b],[a,a,a,a,S,b,b,b,b]}" ] }, - "execution_count": 28, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -600,7 +600,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -612,7 +612,7 @@ "{[],[a,b],[S],[a,a,b,b],[a,S,b],[a,a,a,b,b,b],[a,a,S,b,b],[a,a,a,S,b,b,b],[a,a,a,a,S,b,b,b,b]}" ] }, - "execution_count": 29, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -630,7 +630,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -642,7 +642,7 @@ "{[],[a,b],[a,a,b,b],[a,a,a,b,b,b]}" ] }, - "execution_count": 30, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -660,7 +660,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -672,7 +672,7 @@ "{[],[a,b],[S],[a,a,b,b],[a,S,b],[a,a,a,b,b,b],[a,a,S,b,b],[a,a,a,S,b,b,b],[a,a,a,a,S,b,b,b,b]}" ] }, - "execution_count": 31, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -683,7 +683,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -692,7 +692,7 @@ "Preference changed: DOT_DECOMPOSE_NODES = FALSE\n" ] }, - "execution_count": 32, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -703,7 +703,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -712,106 +712,123 @@ "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n", "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n", " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n", - "<!-- Generated by graphviz version 2.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: state Pages: 1 -->\n", - "<svg width=\"354pt\" height=\"404pt\"\n", - " viewBox=\"0.00 0.00 354.00 404.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 400)\">\n", + "<svg width=\"352pt\" height=\"392pt\"\n", + " viewBox=\"0.00 0.00 351.50 392.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 388)\">\n", "<title>state</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-400 351,-400 351,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-388 347.5,-388 347.5,4 -4,4\"/>\n", "<!-- [a,a,a,S,b,b,b] -->\n", - "<g id=\"node1\" class=\"node\"><title>[a,a,a,S,b,b,b]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"160.312,-126 67.6878,-126 67.6878,-90 160.312,-90 160.312,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"114\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,S,b,b,b]</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>[a,a,a,S,b,b,b]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"197,-123 82,-123 82,-87 197,-87 197,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"139.5\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,S,b,b,b]</text>\n", "</g>\n", "<!-- [a,a,a,a,S,b,b,b,b] -->\n", - "<g id=\"node3\" class=\"node\"><title>[a,a,a,a,S,b,b,b,b]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"112.472,-36 -0.471819,-36 -0.471819,-0 112.472,-0 112.472,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"56\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,a,S,b,b,b,b]</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>[a,a,a,a,S,b,b,b,b]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"141,-36 0,-36 0,0 141,0 141,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"70.5\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,a,S,b,b,b,b]</text>\n", "</g>\n", "<!-- [a,a,a,S,b,b,b]->[a,a,a,a,S,b,b,b,b] -->\n", - "<g id=\"edge2\" class=\"edge\"><title>[a,a,a,S,b,b,b]->[a,a,a,a,S,b,b,b,b]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M102.541,-89.614C94.0659,-76.7551 82.389,-59.0384 72.8518,-44.5682\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"75.6633,-42.4739 67.2378,-36.0504 69.8186,-46.3261 75.6633,-42.4739\"/>\n", - "<text text-anchor=\"middle\" x=\"99.5526\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>[a,a,a,S,b,b,b]->[a,a,a,a,S,b,b,b,b]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M125.54,-86.8C115.62,-74.59 102.15,-57.99 91.02,-44.28\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"93.46,-41.73 84.44,-36.18 88.03,-46.15 93.46,-41.73\"/>\n", + "<text text-anchor=\"middle\" x=\"120.5\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,a,b,b,b] -->\n", - "<g id=\"node5\" class=\"node\"><title>[a,a,a,b,b,b]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"213.349,-36 130.651,-36 130.651,-0 213.349,-0 213.349,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"172\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,b,b,b]</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>[a,a,a,b,b,b]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"260,-36 159,-36 159,0 260,0 260,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"209.5\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,b,b,b]</text>\n", "</g>\n", "<!-- [a,a,a,S,b,b,b]->[a,a,a,b,b,b] -->\n", - "<g id=\"edge4\" class=\"edge\"><title>[a,a,a,S,b,b,b]->[a,a,a,b,b,b]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M125.459,-89.614C133.934,-76.7551 145.611,-59.0384 155.148,-44.5682\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"158.181,-46.3261 160.762,-36.0504 152.337,-42.4739 158.181,-46.3261\"/>\n", - "<text text-anchor=\"middle\" x=\"157.553\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>[a,a,a,S,b,b,b]->[a,a,a,b,b,b]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M153.67,-86.8C163.72,-74.59 177.39,-57.99 188.68,-44.28\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"191.7,-46.12 195.36,-36.18 186.3,-41.67 191.7,-46.12\"/>\n", + "<text text-anchor=\"middle\" x=\"190.5\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,S,b,b] -->\n", - "<g id=\"node6\" class=\"node\"><title>[a,a,S,b,b]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"222.154,-216 149.846,-216 149.846,-180 222.154,-180 222.154,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"186\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,S,b,b]</text>\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>[a,a,S,b,b]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"240,-210 151,-210 151,-174 240,-174 240,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"195.5\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,S,b,b]</text>\n", "</g>\n", "<!-- [a,a,S,b,b]->[a,a,a,S,b,b,b] -->\n", - "<g id=\"edge6\" class=\"edge\"><title>[a,a,S,b,b]->[a,a,a,S,b,b,b]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M171.775,-179.614C161.155,-166.634 146.485,-148.704 134.585,-134.16\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"136.992,-131.574 127.95,-126.05 131.574,-136.006 136.992,-131.574\"/>\n", - "<text text-anchor=\"middle\" x=\"165.553\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>[a,a,S,b,b]->[a,a,a,S,b,b,b]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M184.17,-173.8C176.2,-161.7 165.39,-145.3 156.41,-131.67\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"159.24,-129.6 150.82,-123.18 153.39,-133.45 159.24,-129.6\"/>\n", + "<text text-anchor=\"middle\" x=\"182.5\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,b,b] -->\n", - "<g id=\"node9\" class=\"node\"><title>[a,a,b,b]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"241.188,-126 178.812,-126 178.812,-90 241.188,-90 241.188,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"210\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,b,b]</text>\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>[a,a,b,b]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"290,-123 215,-123 215,-87 290,-87 290,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"252.5\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,b,b]</text>\n", "</g>\n", "<!-- [a,a,S,b,b]->[a,a,b,b] -->\n", - "<g id=\"edge8\" class=\"edge\"><title>[a,a,S,b,b]->[a,a,b,b]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M190.742,-179.614C194.149,-167.119 198.808,-150.037 202.69,-135.804\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"206.095,-136.619 205.35,-126.05 199.342,-134.777 206.095,-136.619\"/>\n", - "<text text-anchor=\"middle\" x=\"209.553\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>[a,a,S,b,b]->[a,a,b,b]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M207.03,-173.8C215.15,-161.7 226.14,-145.3 235.29,-131.67\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"238.32,-133.43 240.98,-123.18 232.51,-129.53 238.32,-133.43\"/>\n", + "<text text-anchor=\"middle\" x=\"238.5\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,S,b] -->\n", - "<g id=\"node10\" class=\"node\"><title>[a,S,b]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"274,-306 220,-306 220,-270 274,-270 274,-306\"/>\n", - "<text text-anchor=\"middle\" x=\"247\" y=\"-283.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,S,b]</text>\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>[a,S,b]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"271.5,-297 209.5,-297 209.5,-261 271.5,-261 271.5,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"240.5\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,S,b]</text>\n", "</g>\n", "<!-- [a,S,b]->[a,a,S,b,b] -->\n", - "<g id=\"edge10\" class=\"edge\"><title>[a,S,b]->[a,a,S,b,b]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M234.948,-269.614C226.035,-256.755 213.754,-239.038 203.723,-224.568\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"206.393,-222.275 197.819,-216.05 200.64,-226.263 206.393,-222.275\"/>\n", - "<text text-anchor=\"middle\" x=\"230.553\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>[a,S,b]->[a,a,S,b,b]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M231.39,-260.8C225.05,-248.82 216.47,-232.62 209.29,-219.06\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"212.37,-217.38 204.59,-210.18 206.18,-220.65 212.37,-217.38\"/>\n", + "<text text-anchor=\"middle\" x=\"232.5\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,b] -->\n", - "<g id=\"node13\" class=\"node\"><title>[a,b]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"295,-216 241,-216 241,-180 295,-180 295,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"268\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,b]</text>\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>[a,b]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"312.5,-210 258.5,-210 258.5,-174 312.5,-174 312.5,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"285.5\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,b]</text>\n", "</g>\n", "<!-- [a,S,b]->[a,b] -->\n", - "<g id=\"edge12\" class=\"edge\"><title>[a,S,b]->[a,b]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M251.149,-269.614C254.131,-257.119 258.207,-240.037 261.603,-225.804\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"265.014,-226.59 263.931,-216.05 258.205,-224.965 265.014,-226.59\"/>\n", - "<text text-anchor=\"middle\" x=\"268.553\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>[a,S,b]->[a,b]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M249.61,-260.8C255.95,-248.82 264.53,-232.62 271.71,-219.06\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"274.82,-220.65 276.41,-210.18 268.63,-217.38 274.82,-220.65\"/>\n", + "<text text-anchor=\"middle\" x=\"277.5\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [S] -->\n", - "<g id=\"node14\" class=\"node\"><title>[S]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"318,-396 264,-396 264,-360 318,-360 318,-396\"/>\n", - "<text text-anchor=\"middle\" x=\"291\" y=\"-373.8\" font-family=\"Times,serif\" font-size=\"14.00\">[S]</text>\n", + "<g id=\"node8\" class=\"node\">\n", + "<title>[S]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"305.5,-384 251.5,-384 251.5,-348 305.5,-348 305.5,-384\"/>\n", + "<text text-anchor=\"middle\" x=\"278.5\" y=\"-362.3\" font-family=\"Times,serif\" font-size=\"14.00\">[S]</text>\n", "</g>\n", "<!-- [S]->[a,S,b] -->\n", - "<g id=\"edge14\" class=\"edge\"><title>[S]->[a,S,b]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M282.307,-359.614C275.999,-346.998 267.353,-329.705 260.195,-315.391\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"263.128,-313.429 255.525,-306.05 256.867,-316.56 263.128,-313.429\"/>\n", - "<text text-anchor=\"middle\" x=\"281.553\" y=\"-328.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>[S]->[a,S,b]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M270.81,-347.8C265.5,-335.93 258.35,-319.93 252.32,-306.45\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"255.46,-304.88 248.18,-297.18 249.06,-307.73 255.46,-304.88\"/>\n", + "<text text-anchor=\"middle\" x=\"273.5\" y=\"-318.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [] -->\n", - "<g id=\"node17\" class=\"node\"><title>[]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"346,-306 292,-306 292,-270 346,-270 346,-306\"/>\n", - "<text text-anchor=\"middle\" x=\"319\" y=\"-283.8\" font-family=\"Times,serif\" font-size=\"14.00\">[]</text>\n", + "<g id=\"node9\" class=\"node\">\n", + "<title>[]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"343.5,-297 289.5,-297 289.5,-261 343.5,-261 343.5,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"316.5\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">[]</text>\n", "</g>\n", "<!-- [S]->[] -->\n", - "<g id=\"edge16\" class=\"edge\"><title>[S]->[]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M296.532,-359.614C300.508,-347.119 305.943,-330.037 310.471,-315.804\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"313.878,-316.641 313.575,-306.05 307.208,-314.518 313.878,-316.641\"/>\n", - "<text text-anchor=\"middle\" x=\"316.553\" y=\"-328.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge8\" class=\"edge\">\n", + "<title>[S]->[]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M286.19,-347.8C291.5,-335.93 298.65,-319.93 304.68,-306.45\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"307.94,-307.73 308.82,-297.18 301.54,-304.88 307.94,-307.73\"/>\n", + "<text text-anchor=\"middle\" x=\"310.5\" y=\"-318.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "</g>\n", "</svg>" @@ -820,7 +837,7 @@ "<Dot visualization: expr_as_graph [SFSF={[],[a,b],[S],[a,a,b,b],[a,S,b],[a,a,a,b,b,b],[a,a,S,b,b],[a,a,a,S,b,b,b],[a,a,a,a,S,b,b,b,b]}(\"abl\",SF<|abl|>SF)]>" ] }, - "execution_count": 33, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -838,7 +855,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -847,7 +864,7 @@ "Loaded machine: Grammatik2" ] }, - "execution_count": 34, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -883,7 +900,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -892,7 +909,7 @@ "Machine constants set up using operation 0: $setup_constants()" ] }, - "execution_count": 35, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -903,7 +920,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -915,7 +932,7 @@ "{[S],[a,b,c],[a,b,C],[a,S,B,C],[a,B,C],[a,a,b,c,B,C],[a,a,b,C,B,C],[a,a,b,B,C,C],[a,a,B,C,B,C],[a,a,B,B,C,C],[a,a,S,B,C,B,C],[a,a,S,B,B,C,C],[a,a,a,S,B,C,B,B,C,C],[a,a,a,S,B,B,C,C,B,C],[a,a,a,S,B,C,B,C,B,C],[a,a,a,B,B,C,C,B,C],[a,a,a,b,C,B,C,B,C],[a,a,a,B,C,B,B,C,C],[a,a,a,B,C,B,C,B,C],[a,a,a,a,B,C,B,C,B,C,B,C],[a,a,a,a,S,B,C,B,C,B,C,B,C]}" ] }, - "execution_count": 36, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -926,7 +943,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -938,7 +955,7 @@ "{[a,b,c]}" ] }, - "execution_count": 37, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -949,7 +966,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -958,7 +975,7 @@ "Preference changed: DOT_DECOMPOSE_NODES = FALSE\n" ] }, - "execution_count": 38, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } @@ -969,7 +986,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -978,256 +995,300 @@ "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n", "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n", " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n", - "<!-- Generated by graphviz version 2.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: state Pages: 1 -->\n", - "<svg width=\"1329pt\" height=\"404pt\"\n", - " viewBox=\"0.00 0.00 1329.00 404.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 400)\">\n", + "<svg width=\"1547pt\" height=\"392pt\"\n", + " viewBox=\"0.00 0.00 1546.50 392.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 388)\">\n", "<title>state</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-400 1326,-400 1326,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-388 1542.5,-388 1542.5,4 -4,4\"/>\n", "<!-- [a,a,a,B,C,B,C,B,C] -->\n", - "<g id=\"node1\" class=\"node\"><title>[a,a,a,B,C,B,C,B,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1031.49,-126 904.511,-126 904.511,-90 1031.49,-90 1031.49,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"968\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,B,C,B,C,B,C]</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>[a,a,a,B,C,B,C,B,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1202.5,-123 1051.5,-123 1051.5,-87 1202.5,-87 1202.5,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"1127\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,B,C,B,C,B,C]</text>\n", "</g>\n", "<!-- [a,a,a,B,C,B,B,C,C] -->\n", - "<g id=\"node3\" class=\"node\"><title>[a,a,a,B,C,B,B,C,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1031.49,-36 904.511,-36 904.511,-0 1031.49,-0 1031.49,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"968\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,B,C,B,B,C,C]</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>[a,a,a,B,C,B,B,C,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1202.5,-36 1051.5,-36 1051.5,0 1202.5,0 1202.5,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"1127\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,B,C,B,B,C,C]</text>\n", "</g>\n", "<!-- [a,a,a,B,C,B,C,B,C]->[a,a,a,B,C,B,B,C,C] -->\n", - "<g id=\"edge2\" class=\"edge\"><title>[a,a,a,B,C,B,C,B,C]->[a,a,a,B,C,B,B,C,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M968,-89.614C968,-77.2403 968,-60.3686 968,-46.2198\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"971.5,-46.0504 968,-36.0504 964.5,-46.0504 971.5,-46.0504\"/>\n", - "<text text-anchor=\"middle\" x=\"976.553\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>[a,a,a,B,C,B,C,B,C]->[a,a,a,B,C,B,B,C,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M1127,-86.8C1127,-75.16 1127,-59.55 1127,-46.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"1130.5,-46.18 1127,-36.18 1123.5,-46.18 1130.5,-46.18\"/>\n", + "<text text-anchor=\"middle\" x=\"1138\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,a,b,C,B,C,B,C] -->\n", - "<g id=\"node5\" class=\"node\"><title>[a,a,a,b,C,B,C,B,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1175.24,-36 1050.76,-36 1050.76,-0 1175.24,-0 1175.24,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"1113\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,b,C,B,C,B,C]</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>[a,a,a,b,C,B,C,B,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1369.5,-36 1220.5,-36 1220.5,0 1369.5,0 1369.5,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"1295\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,b,C,B,C,B,C]</text>\n", "</g>\n", "<!-- [a,a,a,B,C,B,C,B,C]->[a,a,a,b,C,B,C,B,C] -->\n", - "<g id=\"edge4\" class=\"edge\"><title>[a,a,a,B,C,B,C,B,C]->[a,a,a,b,C,B,C,B,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M996.302,-89.8238C1019.06,-76.0139 1051.2,-56.5033 1076,-41.4559\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"1078.04,-44.3132 1084.77,-36.1329 1074.4,-38.3291 1078.04,-44.3132\"/>\n", - "<text text-anchor=\"middle\" x=\"1062.55\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>[a,a,a,B,C,B,C,B,C]->[a,a,a,b,C,B,C,B,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M1161,-86.8C1187.27,-73.51 1223.8,-55.02 1252.09,-40.71\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"1254,-43.67 1261.34,-36.03 1250.84,-37.42 1254,-43.67\"/>\n", + "<text text-anchor=\"middle\" x=\"1233\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,a,B,B,C,C,B,C] -->\n", - "<g id=\"node7\" class=\"node\"><title>[a,a,a,B,B,C,C,B,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1321.49,-36 1194.51,-36 1194.51,-0 1321.49,-0 1321.49,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"1258\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,B,B,C,C,B,C]</text>\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>[a,a,a,B,B,C,C,B,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1538.5,-36 1387.5,-36 1387.5,0 1538.5,0 1538.5,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"1463\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,B,B,C,C,B,C]</text>\n", "</g>\n", "<!-- [a,a,a,B,C,B,C,B,C]->[a,a,a,B,B,C,C,B,C] -->\n", - "<g id=\"edge6\" class=\"edge\"><title>[a,a,a,B,C,B,C,B,C]->[a,a,a,B,B,C,C,B,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M1024.26,-89.9284C1072.28,-75.3554 1141.41,-54.379 1192.03,-39.0179\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"1193.34,-42.2771 1201.9,-36.0241 1191.31,-35.5787 1193.34,-42.2771\"/>\n", - "<text text-anchor=\"middle\" x=\"1147.55\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>[a,a,a,B,C,B,C,B,C]->[a,a,a,B,B,C,C,B,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M1194.59,-86.9C1249.84,-72.92 1327.98,-53.16 1385.71,-38.55\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"1386.68,-41.92 1395.52,-36.07 1384.96,-35.13 1386.68,-41.92\"/>\n", + "<text text-anchor=\"middle\" x=\"1327\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,a,S,B,C,B,C,B,C] -->\n", - "<g id=\"node8\" class=\"node\"><title>[a,a,a,S,B,C,B,C,B,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"716.45,-126 577.55,-126 577.55,-90 716.45,-90 716.45,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"647\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,S,B,C,B,C,B,C]</text>\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>[a,a,a,S,B,C,B,C,B,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"836,-123 672,-123 672,-87 836,-87 836,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"754\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,S,B,C,B,C,B,C]</text>\n", "</g>\n", "<!-- [a,a,a,a,S,B,C,B,C,B,C,B,C] -->\n", - "<g id=\"node10\" class=\"node\"><title>[a,a,a,a,S,B,C,B,C,B,C,B,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"546.992,-36 373.008,-36 373.008,-0 546.992,-0 546.992,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"460\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,a,S,B,C,B,C,B,C,B,C]</text>\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>[a,a,a,a,S,B,C,B,C,B,C,B,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"638.5,-36 431.5,-36 431.5,0 638.5,0 638.5,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"535\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,a,S,B,C,B,C,B,C,B,C]</text>\n", "</g>\n", "<!-- [a,a,a,S,B,C,B,C,B,C]->[a,a,a,a,S,B,C,B,C,B,C,B,C] -->\n", - "<g id=\"edge8\" class=\"edge\"><title>[a,a,a,S,B,C,B,C,B,C]->[a,a,a,a,S,B,C,B,C,B,C,B,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M610.501,-89.8238C580.511,-75.7111 537.87,-55.6449 505.629,-40.4725\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"506.946,-37.224 496.407,-36.1329 503.965,-43.5578 506.946,-37.224\"/>\n", - "<text text-anchor=\"middle\" x=\"579.553\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>[a,a,a,S,B,C,B,C,B,C]->[a,a,a,a,S,B,C,B,C,B,C,B,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M709.95,-86.9C674.97,-73.33 625.94,-54.29 588.67,-39.83\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"589.57,-36.43 578.98,-36.07 587.04,-42.95 589.57,-36.43\"/>\n", + "<text text-anchor=\"middle\" x=\"669\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,a,a,B,C,B,C,B,C,B,C] -->\n", - "<g id=\"node12\" class=\"node\"><title>[a,a,a,a,B,C,B,C,B,C,B,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"728.529,-36 565.471,-36 565.471,-0 728.529,-0 728.529,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"647\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,a,B,C,B,C,B,C,B,C]</text>\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>[a,a,a,a,B,C,B,C,B,C,B,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"851,-36 657,-36 657,0 851,0 851,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"754\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,a,B,C,B,C,B,C,B,C]</text>\n", "</g>\n", "<!-- [a,a,a,S,B,C,B,C,B,C]->[a,a,a,a,B,C,B,C,B,C,B,C] -->\n", - "<g id=\"edge10\" class=\"edge\"><title>[a,a,a,S,B,C,B,C,B,C]->[a,a,a,a,B,C,B,C,B,C,B,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M647,-89.614C647,-77.2403 647,-60.3686 647,-46.2198\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"650.5,-46.0504 647,-36.0504 643.5,-46.0504 650.5,-46.0504\"/>\n", - "<text text-anchor=\"middle\" x=\"655.553\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>[a,a,a,S,B,C,B,C,B,C]->[a,a,a,a,B,C,B,C,B,C,B,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M754,-86.8C754,-75.16 754,-59.55 754,-46.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"757.5,-46.18 754,-36.18 750.5,-46.18 757.5,-46.18\"/>\n", + "<text text-anchor=\"middle\" x=\"765\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,a,S,B,B,C,C,B,C] -->\n", - "<g id=\"node14\" class=\"node\"><title>[a,a,a,S,B,B,C,C,B,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"354.45,-36 215.55,-36 215.55,-0 354.45,-0 354.45,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"285\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,S,B,B,C,C,B,C]</text>\n", + "<g id=\"node8\" class=\"node\">\n", + "<title>[a,a,a,S,B,B,C,C,B,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"413,-36 249,-36 249,0 413,0 413,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"331\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,S,B,B,C,C,B,C]</text>\n", "</g>\n", "<!-- [a,a,a,S,B,C,B,C,B,C]->[a,a,a,S,B,B,C,C,B,C] -->\n", - "<g id=\"edge12\" class=\"edge\"><title>[a,a,a,S,B,C,B,C,B,C]->[a,a,a,S,B,B,C,C,B,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M577.631,-90.1368C516.733,-75.3329 428.176,-53.8051 364.449,-38.3135\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"364.986,-34.8422 354.442,-35.8809 363.332,-41.6441 364.986,-34.8422\"/>\n", - "<text text-anchor=\"middle\" x=\"507.553\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>[a,a,a,S,B,C,B,C,B,C]->[a,a,a,S,B,B,C,C,B,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M671.94,-87.51C600.55,-73.16 497.18,-52.39 423,-37.49\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"423.69,-34.05 413.19,-35.52 422.31,-40.92 423.69,-34.05\"/>\n", + "<text text-anchor=\"middle\" x=\"579\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,a,S,B,C,B,B,C,C] -->\n", - "<g id=\"node16\" class=\"node\"><title>[a,a,a,S,B,C,B,B,C,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"885.45,-36 746.55,-36 746.55,-0 885.45,-0 885.45,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"816\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,S,B,C,B,B,C,C]</text>\n", + "<g id=\"node9\" class=\"node\">\n", + "<title>[a,a,a,S,B,C,B,B,C,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1033,-36 869,-36 869,0 1033,0 1033,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"951\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,S,B,C,B,B,C,C]</text>\n", "</g>\n", "<!-- [a,a,a,S,B,C,B,C,B,C]->[a,a,a,S,B,C,B,B,C,C] -->\n", - "<g id=\"edge14\" class=\"edge\"><title>[a,a,a,S,B,C,B,C,B,C]->[a,a,a,S,B,C,B,B,C,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M679.986,-89.8238C706.856,-75.8322 744.964,-55.9889 774.011,-40.8643\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"775.844,-43.8558 783.097,-36.1329 772.611,-37.647 775.844,-43.8558\"/>\n", - "<text text-anchor=\"middle\" x=\"755.553\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>[a,a,a,S,B,C,B,C,B,C]->[a,a,a,S,B,C,B,B,C,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M793.87,-86.8C825.08,-73.33 868.63,-54.54 901.98,-40.15\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"903.73,-43.21 911.53,-36.03 900.96,-36.78 903.73,-43.21\"/>\n", + "<text text-anchor=\"middle\" x=\"876\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,S,B,B,C,C] -->\n", - "<g id=\"node17\" class=\"node\"><title>[a,a,S,B,B,C,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"880.41,-126 777.59,-126 777.59,-90 880.41,-90 880.41,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"829\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,S,B,B,C,C]</text>\n", + "<g id=\"node10\" class=\"node\">\n", + "<title>[a,a,S,B,B,C,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1027,-123 905,-123 905,-87 1027,-87 1027,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"966\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,S,B,B,C,C]</text>\n", "</g>\n", "<!-- [a,a,S,B,B,C,C]->[a,a,a,B,C,B,B,C,C] -->\n", - "<g id=\"edge16\" class=\"edge\"><title>[a,a,S,B,B,C,C]->[a,a,a,B,C,B,B,C,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M856.131,-89.8238C877.848,-76.0745 908.492,-56.6744 932.217,-41.6541\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"934.361,-44.4392 940.938,-36.1329 930.617,-38.5248 934.361,-44.4392\"/>\n", - "<text text-anchor=\"middle\" x=\"919.553\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge8\" class=\"edge\">\n", + "<title>[a,a,S,B,B,C,C]->[a,a,a,B,C,B,B,C,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M998.58,-86.8C1023.76,-73.51 1058.77,-55.02 1085.88,-40.71\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"1087.53,-43.79 1094.74,-36.03 1084.27,-37.6 1087.53,-43.79\"/>\n", + "<text text-anchor=\"middle\" x=\"1068\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,S,B,B,C,C]->[a,a,a,S,B,C,B,B,C,C] -->\n", - "<g id=\"edge18\" class=\"edge\"><title>[a,a,S,B,B,C,C]->[a,a,a,S,B,C,B,B,C,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M826.432,-89.614C824.604,-77.2403 822.111,-60.3686 820.021,-46.2198\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"823.443,-45.4315 818.519,-36.0504 816.518,-46.4546 823.443,-45.4315\"/>\n", - "<text text-anchor=\"middle\" x=\"832.553\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge9\" class=\"edge\">\n", + "<title>[a,a,S,B,B,C,C]->[a,a,a,S,B,C,B,B,C,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M962.96,-86.8C960.91,-75.16 958.16,-59.55 955.81,-46.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"959.22,-45.41 954.03,-36.18 952.32,-46.63 959.22,-45.41\"/>\n", + "<text text-anchor=\"middle\" x=\"971\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,S,B,C,B,C] -->\n", - "<g id=\"node20\" class=\"node\"><title>[a,a,S,B,C,B,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"880.41,-216 777.59,-216 777.59,-180 880.41,-180 880.41,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"829\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,S,B,C,B,C]</text>\n", + "<g id=\"node11\" class=\"node\">\n", + "<title>[a,a,S,B,C,B,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1027,-210 905,-210 905,-174 1027,-174 1027,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"966\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,S,B,C,B,C]</text>\n", "</g>\n", "<!-- [a,a,S,B,C,B,C]->[a,a,a,B,C,B,C,B,C] -->\n", - "<g id=\"edge20\" class=\"edge\"><title>[a,a,S,B,C,B,C]->[a,a,a,B,C,B,C,B,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M856.131,-179.824C877.848,-166.075 908.492,-146.674 932.217,-131.654\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"934.361,-134.439 940.938,-126.133 930.617,-128.525 934.361,-134.439\"/>\n", - "<text text-anchor=\"middle\" x=\"919.553\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge10\" class=\"edge\">\n", + "<title>[a,a,S,B,C,B,C]->[a,a,a,B,C,B,C,B,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M998.58,-173.8C1023.76,-160.51 1058.77,-142.02 1085.88,-127.71\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"1087.53,-130.79 1094.74,-123.03 1084.27,-124.6 1087.53,-130.79\"/>\n", + "<text text-anchor=\"middle\" x=\"1068\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,S,B,C,B,C]->[a,a,a,S,B,C,B,C,B,C] -->\n", - "<g id=\"edge22\" class=\"edge\"><title>[a,a,S,B,C,B,C]->[a,a,a,S,B,C,B,C,B,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M793.477,-179.824C764.414,-165.772 723.144,-145.817 691.814,-130.668\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"692.96,-127.335 682.434,-126.133 689.913,-133.637 692.96,-127.335\"/>\n", - "<text text-anchor=\"middle\" x=\"763.553\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge11\" class=\"edge\">\n", + "<title>[a,a,S,B,C,B,C]->[a,a,a,S,B,C,B,C,B,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M923.35,-173.9C889.5,-160.33 842.03,-141.29 805.96,-126.83\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"807.16,-123.54 796.58,-123.07 804.56,-130.04 807.16,-123.54\"/>\n", + "<text text-anchor=\"middle\" x=\"884\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,S,B,C,B,C]->[a,a,S,B,B,C,C] -->\n", - "<g id=\"edge24\" class=\"edge\"><title>[a,a,S,B,C,B,C]->[a,a,S,B,B,C,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M829,-179.614C829,-167.24 829,-150.369 829,-136.22\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"832.5,-136.05 829,-126.05 825.5,-136.05 832.5,-136.05\"/>\n", - "<text text-anchor=\"middle\" x=\"837.553\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge12\" class=\"edge\">\n", + "<title>[a,a,S,B,C,B,C]->[a,a,S,B,B,C,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M966,-173.8C966,-162.16 966,-146.55 966,-133.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"969.5,-133.18 966,-123.18 962.5,-133.18 969.5,-133.18\"/>\n", + "<text text-anchor=\"middle\" x=\"977\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,B,B,C,C] -->\n", - "<g id=\"node24\" class=\"node\"><title>[a,a,B,B,C,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"91.9491,-126 0.0508791,-126 0.0508791,-90 91.9491,-90 91.9491,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"46\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,B,B,C,C]</text>\n", + "<g id=\"node12\" class=\"node\">\n", + "<title>[a,a,B,B,C,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"108,-123 0,-123 0,-87 108,-87 108,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"54\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,B,B,C,C]</text>\n", "</g>\n", "<!-- [a,a,b,B,C,C] -->\n", - "<g id=\"node26\" class=\"node\"><title>[a,a,b,B,C,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"92.1953,-36 1.80466,-36 1.80466,-0 92.1953,-0 92.1953,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"47\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,b,B,C,C]</text>\n", + "<g id=\"node13\" class=\"node\">\n", + "<title>[a,a,b,B,C,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"108.5,-36 1.5,-36 1.5,0 108.5,0 108.5,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"55\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,b,B,C,C]</text>\n", "</g>\n", "<!-- [a,a,B,B,C,C]->[a,a,b,B,C,C] -->\n", - "<g id=\"edge26\" class=\"edge\"><title>[a,a,B,B,C,C]->[a,a,b,B,C,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M46.1976,-89.614C46.3382,-77.2403 46.5299,-60.3686 46.6907,-46.2198\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"50.1923,-46.0896 46.8062,-36.0504 43.1927,-46.01 50.1923,-46.0896\"/>\n", - "<text text-anchor=\"middle\" x=\"55.5526\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge13\" class=\"edge\">\n", + "<title>[a,a,B,B,C,C]->[a,a,b,B,C,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.2,-86.8C54.34,-75.16 54.52,-59.55 54.68,-46.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"58.18,-46.22 54.8,-36.18 51.18,-46.13 58.18,-46.22\"/>\n", + "<text text-anchor=\"middle\" x=\"66\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,B,C,B,C] -->\n", - "<g id=\"node27\" class=\"node\"><title>[a,a,B,C,B,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"200.949,-216 109.051,-216 109.051,-180 200.949,-180 200.949,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"155\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,B,C,B,C]</text>\n", + "<g id=\"node14\" class=\"node\">\n", + "<title>[a,a,B,C,B,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"234,-210 126,-210 126,-174 234,-174 234,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"180\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,B,C,B,C]</text>\n", "</g>\n", "<!-- [a,a,B,C,B,C]->[a,a,B,B,C,C] -->\n", - "<g id=\"edge28\" class=\"edge\"><title>[a,a,B,C,B,C]->[a,a,B,B,C,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M133.725,-179.824C117.07,-166.377 93.72,-147.526 75.2974,-132.653\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"77.2008,-129.691 67.2214,-126.133 72.8036,-135.138 77.2008,-129.691\"/>\n", - "<text text-anchor=\"middle\" x=\"119.553\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge14\" class=\"edge\">\n", + "<title>[a,a,B,C,B,C]->[a,a,B,B,C,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M154.5,-173.8C135.29,-160.84 108.76,-142.94 87.78,-128.79\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"89.71,-125.87 79.46,-123.18 85.79,-131.67 89.71,-125.87\"/>\n", + "<text text-anchor=\"middle\" x=\"136\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,b,C,B,C] -->\n", - "<g id=\"node30\" class=\"node\"><title>[a,a,b,C,B,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"200.195,-126 109.805,-126 109.805,-90 200.195,-90 200.195,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"155\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,b,C,B,C]</text>\n", + "<g id=\"node15\" class=\"node\">\n", + "<title>[a,a,b,C,B,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"233.5,-123 126.5,-123 126.5,-87 233.5,-87 233.5,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"180\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,b,C,B,C]</text>\n", "</g>\n", "<!-- [a,a,B,C,B,C]->[a,a,b,C,B,C] -->\n", - "<g id=\"edge30\" class=\"edge\"><title>[a,a,B,C,B,C]->[a,a,b,C,B,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M155,-179.614C155,-167.24 155,-150.369 155,-136.22\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"158.5,-136.05 155,-126.05 151.5,-136.05 158.5,-136.05\"/>\n", - "<text text-anchor=\"middle\" x=\"163.553\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge15\" class=\"edge\">\n", + "<title>[a,a,B,C,B,C]->[a,a,b,C,B,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M180,-173.8C180,-162.16 180,-146.55 180,-133.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"183.5,-133.18 180,-123.18 176.5,-133.18 183.5,-133.18\"/>\n", + "<text text-anchor=\"middle\" x=\"191\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,b,C,B,C]->[a,a,b,B,C,C] -->\n", - "<g id=\"edge32\" class=\"edge\"><title>[a,a,b,C,B,C]->[a,a,b,B,C,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M133.92,-89.8238C117.418,-76.3774 94.2822,-57.5263 76.0286,-42.6529\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"77.9899,-39.7363 68.0267,-36.1329 73.5682,-45.163 77.9899,-39.7363\"/>\n", - "<text text-anchor=\"middle\" x=\"119.553\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge16\" class=\"edge\">\n", + "<title>[a,a,b,C,B,C]->[a,a,b,B,C,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M154.7,-86.8C135.73,-73.9 109.56,-56.1 88.79,-41.98\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"90.5,-38.9 80.26,-36.18 86.56,-44.69 90.5,-38.9\"/>\n", + "<text text-anchor=\"middle\" x=\"136\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,b,c,B,C] -->\n", - "<g id=\"node33\" class=\"node\"><title>[a,a,b,c,B,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"197.353,-36 110.647,-36 110.647,-0 197.353,-0 197.353,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"154\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,b,c,B,C]</text>\n", + "<g id=\"node16\" class=\"node\">\n", + "<title>[a,a,b,c,B,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"231,-36 127,-36 127,0 231,0 231,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"179\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,b,c,B,C]</text>\n", "</g>\n", "<!-- [a,a,b,C,B,C]->[a,a,b,c,B,C] -->\n", - "<g id=\"edge34\" class=\"edge\"><title>[a,a,b,C,B,C]->[a,a,b,c,B,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M154.802,-89.614C154.662,-77.2403 154.47,-60.3686 154.309,-46.2198\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"157.807,-46.01 154.194,-36.0504 150.808,-46.0896 157.807,-46.01\"/>\n", - "<text text-anchor=\"middle\" x=\"163.553\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge17\" class=\"edge\">\n", + "<title>[a,a,b,C,B,C]->[a,a,b,c,B,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M179.8,-86.8C179.66,-75.16 179.48,-59.55 179.32,-46.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"182.82,-46.13 179.2,-36.18 175.82,-46.22 182.82,-46.13\"/>\n", + "<text text-anchor=\"middle\" x=\"191\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,B,C] -->\n", - "<g id=\"node34\" class=\"node\"><title>[a,B,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"962.406,-306 905.594,-306 905.594,-270 962.406,-270 962.406,-306\"/>\n", - "<text text-anchor=\"middle\" x=\"934\" y=\"-283.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,B,C]</text>\n", + "<g id=\"node17\" class=\"node\">\n", + "<title>[a,B,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1140.5,-297 1075.5,-297 1075.5,-261 1140.5,-261 1140.5,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"1108\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,B,C]</text>\n", "</g>\n", "<!-- [a,b,C] -->\n", - "<g id=\"node36\" class=\"node\"><title>[a,b,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1035.15,-216 980.845,-216 980.845,-180 1035.15,-180 1035.15,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"1008\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,b,C]</text>\n", + "<g id=\"node18\" class=\"node\">\n", + "<title>[a,b,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1264,-210 1200,-210 1200,-174 1264,-174 1264,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"1232\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,b,C]</text>\n", "</g>\n", "<!-- [a,B,C]->[a,b,C] -->\n", - "<g id=\"edge36\" class=\"edge\"><title>[a,B,C]->[a,b,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M948.62,-269.614C959.637,-256.512 974.895,-238.368 987.185,-223.753\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"989.905,-225.957 993.662,-216.05 984.547,-221.451 989.905,-225.957\"/>\n", - "<text text-anchor=\"middle\" x=\"986.553\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge18\" class=\"edge\">\n", + "<title>[a,B,C]->[a,b,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M1133.09,-260.8C1151.92,-247.9 1177.88,-230.1 1198.48,-215.98\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"1200.67,-218.72 1206.94,-210.18 1196.72,-212.94 1200.67,-218.72\"/>\n", + "<text text-anchor=\"middle\" x=\"1189\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,b,c] -->\n", - "<g id=\"node41\" class=\"node\"><title>[a,b,c]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1104,-126 1050,-126 1050,-90 1104,-90 1104,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"1077\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,b,c]</text>\n", + "<g id=\"node20\" class=\"node\">\n", + "<title>[a,b,c]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1281.5,-123 1220.5,-123 1220.5,-87 1281.5,-87 1281.5,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"1251\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,b,c]</text>\n", "</g>\n", "<!-- [a,b,C]->[a,b,c] -->\n", - "<g id=\"edge42\" class=\"edge\"><title>[a,b,C]->[a,b,c]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M1021.63,-179.614C1031.81,-166.634 1045.87,-148.704 1057.27,-134.16\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"1060.21,-136.079 1063.63,-126.05 1054.71,-131.76 1060.21,-136.079\"/>\n", - "<text text-anchor=\"middle\" x=\"1057.55\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge21\" class=\"edge\">\n", + "<title>[a,b,C]->[a,b,c]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M1235.84,-173.8C1238.45,-162.16 1241.94,-146.55 1244.91,-133.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"1248.39,-133.7 1247.16,-123.18 1241.56,-132.17 1248.39,-133.7\"/>\n", + "<text text-anchor=\"middle\" x=\"1254\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,S,B,C] -->\n", - "<g id=\"node37\" class=\"node\"><title>[a,S,B,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"863.37,-306 794.63,-306 794.63,-270 863.37,-270 863.37,-306\"/>\n", - "<text text-anchor=\"middle\" x=\"829\" y=\"-283.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,S,B,C]</text>\n", + "<g id=\"node19\" class=\"node\">\n", + "<title>[a,S,B,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1005.5,-297 926.5,-297 926.5,-261 1005.5,-261 1005.5,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"966\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,S,B,C]</text>\n", "</g>\n", "<!-- [a,S,B,C]->[a,a,S,B,C,B,C] -->\n", - "<g id=\"edge38\" class=\"edge\"><title>[a,S,B,C]->[a,a,S,B,C,B,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M829,-269.614C829,-257.24 829,-240.369 829,-226.22\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"832.5,-226.05 829,-216.05 825.5,-226.05 832.5,-226.05\"/>\n", - "<text text-anchor=\"middle\" x=\"837.553\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge19\" class=\"edge\">\n", + "<title>[a,S,B,C]->[a,a,S,B,C,B,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M966,-260.8C966,-249.16 966,-233.55 966,-220.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"969.5,-220.18 966,-210.18 962.5,-220.18 969.5,-220.18\"/>\n", + "<text text-anchor=\"middle\" x=\"977\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,S,B,C]->[a,a,B,C,B,C] -->\n", - "<g id=\"edge40\" class=\"edge\"><title>[a,S,B,C]->[a,a,B,C,B,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M794.65,-282.515C685.626,-268.281 346.654,-224.023 211.481,-206.374\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"211.708,-202.874 201.339,-205.05 210.802,-209.816 211.708,-202.874\"/>\n", - "<text text-anchor=\"middle\" x=\"561.553\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge20\" class=\"edge\">\n", + "<title>[a,S,B,C]->[a,a,B,C,B,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M926.48,-273.73C799.46,-259.99 400.78,-216.88 244.12,-199.93\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"244.47,-196.45 234.15,-198.86 243.72,-203.41 244.47,-196.45\"/>\n", + "<text text-anchor=\"middle\" x=\"632\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [S] -->\n", - "<g id=\"node42\" class=\"node\"><title>[S]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"916,-396 862,-396 862,-360 916,-360 916,-396\"/>\n", - "<text text-anchor=\"middle\" x=\"889\" y=\"-373.8\" font-family=\"Times,serif\" font-size=\"14.00\">[S]</text>\n", + "<g id=\"node21\" class=\"node\">\n", + "<title>[S]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1037,-384 983,-384 983,-348 1037,-348 1037,-384\"/>\n", + "<text text-anchor=\"middle\" x=\"1010\" y=\"-362.3\" font-family=\"Times,serif\" font-size=\"14.00\">[S]</text>\n", "</g>\n", "<!-- [S]->[a,B,C] -->\n", - "<g id=\"edge44\" class=\"edge\"><title>[S]->[a,B,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M897.891,-359.614C904.404,-346.876 913.355,-329.372 920.715,-314.979\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"923.844,-316.547 925.281,-306.05 917.612,-313.36 923.844,-316.547\"/>\n", - "<text text-anchor=\"middle\" x=\"924.553\" y=\"-328.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge22\" class=\"edge\">\n", + "<title>[S]->[a,B,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M1029.83,-347.8C1044.44,-335.13 1064.5,-317.73 1080.63,-303.74\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"1082.94,-306.37 1088.2,-297.18 1078.35,-301.08 1082.94,-306.37\"/>\n", + "<text text-anchor=\"middle\" x=\"1076\" y=\"-318.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [S]->[a,S,B,C] -->\n", - "<g id=\"edge46\" class=\"edge\"><title>[S]->[a,S,B,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M877.146,-359.614C868.378,-346.755 856.299,-329.038 846.433,-314.568\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"849.15,-312.341 840.625,-306.05 843.367,-316.284 849.15,-312.341\"/>\n", - "<text text-anchor=\"middle\" x=\"873.553\" y=\"-328.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge23\" class=\"edge\">\n", + "<title>[S]->[a,S,B,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M1001.1,-347.8C994.89,-335.82 986.51,-319.62 979.49,-306.06\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"982.6,-304.45 974.89,-297.18 976.38,-307.67 982.6,-304.45\"/>\n", + "<text text-anchor=\"middle\" x=\"1002\" y=\"-318.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "</g>\n", "</svg>" @@ -1236,7 +1297,7 @@ "<Dot visualization: expr_as_graph [SFSF={[S],[a,b,c],[a,b,C],[a,S,B,C],[a,B,C],[a,a,b,c,B,C],[a,a,b,C,B,C],[a,a,b,B,C,C],[a,a,B,C,B,C],[a,a,B,B,C,C],[a,a,S,B,C,B,C],[a,a,S,B,B,C,C],[a,a,a,S,B,C,B,B,C,C],[a,a,a,S,B,B,C,C,B,C],[a,a,a,S,B,C,B,C,B,C],[a,a,a,B,B,C,C,B,C],[a,a,a,b,C,B,C,B,C],[a,a,a,B,C,B,B,C,C],[a,a,a,B,C,B,C,B,C],[a,a,a,a,B,C,B,C,B,C,B,C],[a,a,a,a,S,B,C,B,C,B,C,B,C]}(\"abl\",SF<|abl|>SF)]>" ] }, - "execution_count": 39, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -1247,7 +1308,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 32, "metadata": {}, "outputs": [], "source": [ @@ -1289,9 +1350,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 33, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/markdown": [ + "$\\{([a,B]\\mapsto [a,b]),([b,B]\\mapsto [b,b]),([b,C]\\mapsto [b,c]),([c,C]\\mapsto [c,c]),([S]\\mapsto [a,\\mathit{S},\\mathit{B},C]),([S]\\mapsto [a,\\mathit{B},C]),([C,B]\\mapsto [B,C])\\}$" + ], + "text/plain": [ + "{([a,B]↦[a,b]),([b,B]↦[b,b]),([b,C]↦[b,c]),([c,C]↦[c,c]),([S]↦[a,S,B,C]),([S]↦[a,B,C]),([C,B]↦[B,C])}" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "P" ] @@ -1306,7 +1381,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 34, "metadata": {}, "outputs": [ { @@ -1318,7 +1393,7 @@ "TRUE" ] }, - "execution_count": 42, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -1329,7 +1404,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 35, "metadata": {}, "outputs": [ { @@ -1341,7 +1416,7 @@ "{([a,B]↦[a,b]),([b,B]↦[b,b]),([b,C]↦[b,c]),([c,C]↦[c,c]),([S]↦[a,S,B,C]),([S]↦[a,B,C]),([C,B]↦[B,C])}" ] }, - "execution_count": 41, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -1359,7 +1434,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 36, "metadata": {}, "outputs": [ { @@ -1371,7 +1446,7 @@ "FALSE" ] }, - "execution_count": 43, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -1390,7 +1465,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 37, "metadata": {}, "outputs": [ { @@ -1417,7 +1492,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 38, "metadata": {}, "outputs": [ { @@ -1429,7 +1504,7 @@ "{([S]↦[]),([S]↦[a,S,b])}" ] }, - "execution_count": 45, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -1440,7 +1515,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -1458,7 +1533,7 @@ "\tP1 = {([S]↦[]),([S]↦[a,S,b])}" ] }, - "execution_count": 46, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } @@ -1476,7 +1551,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 40, "metadata": {}, "outputs": [ { @@ -1488,7 +1563,7 @@ "FALSE" ] }, - "execution_count": 47, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -1499,7 +1574,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 41, "metadata": {}, "outputs": [ { @@ -1521,7 +1596,7 @@ "\tP1 = {([S]↦[]),([S]↦[a,S,b])}" ] }, - "execution_count": 48, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } @@ -1560,6 +1635,178 @@ "* $REG \\subseteq CF \\subseteq CS \\subseteq \\mathfrak{L}_0.$" ] }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Loaded machine: Chomsky" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "::load\n", + "MACHINE Chomsky\n", + "SETS ΣN = {a, b, c, S, A, B, C}\n", + "CONSTANTS Σ, N, P0, P1, P2, P3, P4, Grammatiken\n", + "PROPERTIES\n", + " Σ = {a, b, c} ∧\n", + " N = {S, A, B, C} ∧\n", + " Σ ∩ N = {} ∧\n", + " Σ ∪ N = ΣN ∧\n", + " //L0 = {x∈{a, b}^* | x enthält gleich viele as und bs}\n", + " //Ohne Sonderrregelung für lambda ist L0 von Typ 0.\n", + " P0 = {([S] ↦ [a, b]), ([S] ↦ [S, S]), ([S] ↦ []), ([a, b] ↦ [b, a]), ([b, a] ↦ [a, b])} ∧\n", + " //L1 = {a^mb^mc^m | m≥1}\n", + " P1 = {([S] ↦ [S, S]), ([S] ↦ [A, B, C]), ([B, A] ↦ [A, B]), ([C, A] ↦ [A, C]), ([C, B] ↦ [B, C]),\n", + " ([A] ↦ [a]), ([a, B] ↦ [a, b]), ([b, B] ↦ [b, b]), ([b, C] ↦ [b, c]), ([c, C] ↦ [c, c])} ∧\n", + " //L2 = {x∈{a, b}^+ | x enthält gleich viele as und bs}\n", + " P2 = {([S] ↦ [A, B]), ([S] ↦ [B, A]),\n", + " ([A] ↦ [A, A, B]), ([A] ↦ [A, B, A]), ([A] ↦ [B, A, A]), ([A] ↦ [a]),\n", + " ([B] ↦ [B, B, A]), ([B] ↦ [B, A, B]), ([B] ↦ [A, B, B]), ([B] ↦ [b])} ∧\n", + " //L3 = L4 = {a, b, c}\n", + " P3 = {([S] ↦ [a]), ([S] ↦ [b]), ([S] ↦ [c])} ∧\n", + " P4 = {([S] ↦ [A, A]), ([A, A] ↦ [a]), ([S] ↦ [b]), ([S] ↦ [c])} ∧\n", + " Grammatiken = [P0, P1, P2, P3, P4]\n", + " \n", + "DEFINITIONS\n", + " SET_PREF_PP_SEQUENCES == TRUE;\n", + " L0(R) == TRUE; //Jede Grammatik ist vom Typ 0\n", + " L1(R) == IF ∀(p,q).( p↦q ∈ R ⇒ size(p) ≤ size(q)) THEN L0(R) ELSE FALSE END;\n", + " L2(R) == IF ∀(p,q).( p↦q ∈ R ⇒ size(p)=1 & p∈seq(N)) THEN L1(R) ELSE FALSE END;\n", + " L3(R) == IF ∀(p,q).( p↦q ∈ R ⇒ size(q)>0 & size(q) ≤ 2 & first(q)∈Σ & (size(q)≤1 or first(tail(q))∈N)) THEN L2(R) ELSE FALSE END;\n", + " \n", + " \"LibraryStrings.def\";\n", + " ANIMATION_FUNCTION_DEFAULT == {(0,0,\"P\"), (1,0,\"P0\"), (2,0,\"P1\"), (3,0,\"P2\"), (4,0,\"P3\"), (5,0,\"P4\")};\n", + " ANIMATION_FUNCTION1 == {c,r,i| r=1 ∧ c∈dom(Grammatiken) ∧ i=TO_STRING(L0(Grammatiken(c)))} ∪ {(0,1,\"L0(P)\")};\n", + " ANIMATION_FUNCTION2 == {c,r,i| r=2 ∧ c∈dom(Grammatiken) ∧ i=TO_STRING(L1(Grammatiken(c)))} ∪ {(0,2,\"L1(P)\")};\n", + " ANIMATION_FUNCTION3 == {c,r,i| r=3 ∧ c∈dom(Grammatiken) ∧ i=TO_STRING(L2(Grammatiken(c)))} ∪ {(0,3,\"L2(P)\")};\n", + " ANIMATION_FUNCTION4 == {c,r,i| r=4 ∧ c∈dom(Grammatiken) ∧ i=TO_STRING(L3(Grammatiken(c)))} ∪ {(0,4,\"L3(P)\")};\n", + "END" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Machine constants set up using operation 0: $setup_constants()" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":constants" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Machine initialised using operation 1: $initialise_machine()" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":init" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "<table style=\"font-family:monospace\"><tbody>\n", + "<tr>\n", + "<td style=\"padding:10px\">P</td>\n", + "<td style=\"padding:10px\">L0(P)</td>\n", + "<td style=\"padding:10px\">L1(P)</td>\n", + "<td style=\"padding:10px\">L2(P)</td>\n", + "<td style=\"padding:10px\">L3(P)</td>\n", + "</tr>\n", + "<tr>\n", + "<td style=\"padding:10px\">P0</td>\n", + "<td style=\"padding:10px\">TRUE</td>\n", + "<td style=\"padding:10px\">FALSE</td>\n", + "<td style=\"padding:10px\">FALSE</td>\n", + "<td style=\"padding:10px\">FALSE</td>\n", + "</tr>\n", + "<tr>\n", + "<td style=\"padding:10px\">P1</td>\n", + "<td style=\"padding:10px\">TRUE</td>\n", + "<td style=\"padding:10px\">TRUE</td>\n", + "<td style=\"padding:10px\">FALSE</td>\n", + "<td style=\"padding:10px\">FALSE</td>\n", + "</tr>\n", + "<tr>\n", + "<td style=\"padding:10px\">P2</td>\n", + "<td style=\"padding:10px\">TRUE</td>\n", + "<td style=\"padding:10px\">TRUE</td>\n", + "<td style=\"padding:10px\">TRUE</td>\n", + "<td style=\"padding:10px\">FALSE</td>\n", + "</tr>\n", + "<tr>\n", + "<td style=\"padding:10px\">P3</td>\n", + "<td style=\"padding:10px\">TRUE</td>\n", + "<td style=\"padding:10px\">TRUE</td>\n", + "<td style=\"padding:10px\">TRUE</td>\n", + "<td style=\"padding:10px\">TRUE</td>\n", + "</tr>\n", + "<tr>\n", + "<td style=\"padding:10px\">P4</td>\n", + "<td style=\"padding:10px\">TRUE</td>\n", + "<td style=\"padding:10px\">FALSE</td>\n", + "<td style=\"padding:10px\">FALSE</td>\n", + "<td style=\"padding:10px\">FALSE</td>\n", + "</tr>\n", + "</tbody></table>" + ], + "text/plain": [ + "<Animation function visualisation>" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":show" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Die obige Tabelle zeigt, in welche Sprachklasse die entsprechenden Grammatiken fallen. Dabei ist zu beachten, dass L3 = L4 ist, aber P3 und P4 unterschiedliche Typen haben. Die Sprache fällt allerdings immer in die größte Spracheklasse zu der es eine Grammatik gibt, die diese Sprache erzeugt. Also gilt $L4 ∈ \\mathfrak{L}_3 = REG$. Daher reicht die Angabe einer Grammatik nicht aus, um zu zeigen dass eine Sprache höchstens in einer der Klassen liegt. Um dies zu zeigen gibt es verschiedene Methoden, wie z.B. das Pumping-Lemma oder die Myhill-Nerode Relation." + ] + }, { "cell_type": "code", "execution_count": null, -- GitLab