diff --git a/info4/kapitel-3/PDA_nach_kfG.ipynb b/info4/kapitel-3/PDA_nach_kfG.ipynb
index a5f9cfc16864fb7d8eb15167d33c60f0d90f1bf2..bd2e7f740be66b4903ab1337bc310b9669767aaa 100644
--- a/info4/kapitel-3/PDA_nach_kfG.ipynb
+++ b/info4/kapitel-3/PDA_nach_kfG.ipynb
@@ -9,7 +9,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 16,
+   "execution_count": 41,
    "metadata": {},
    "outputs": [
     {
@@ -18,7 +18,7 @@
        "Loaded machine: PDA_to_CFG"
       ]
      },
-     "execution_count": 16,
+     "execution_count": 41,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -28,56 +28,61 @@
     "MACHINE PDA_to_CFG\n",
     "/* Translating a PDA to a CFG */\n",
     "SETS\n",
-    " STATES = {z0,z1,   symbol}; \n",
+    " Z = {z0,z1,   symbol}; \n",
     "   /* symbol: virtueller Zustand um S und andere Symbole in der Grammatik darzustellen */\n",
-    " SYMBOLS={a,b, A, BOT, lambda,     S} /* BOT = # = bottom of stack*/\n",
+    " SYMBOLE={a,b, A, BOT, lambda,     S} /* BOT = # = Ende vom Keller */\n",
     "DEFINITIONS\n",
-    " CFG_Alphabet  == (STATES*(SYMBOLS-{lambda})*STATES);\n",
+    " kfG_Alphabet  == (Z*(SYMBOLE \\ {lambda})*Z);\n",
     " Σ == {a,b};\n",
     " Γ == {A,BOT};\n",
-    " ANIMATION_FUNCTION1 == {r,c,i| r=1 ∧ c∈dom(cur) ∧ i=prj1(STATES,SYMBOLS)(prj1(STATES*SYMBOLS,STATES)(cur(c)))};\n",
-    " ANIMATION_FUNCTION2 == {r,c,i| r=2 ∧ c∈dom(cur) ∧ i=prj2(STATES,SYMBOLS)(prj1(STATES*SYMBOLS,STATES)(cur(c)))};\n",
-    " ANIMATION_FUNCTION3 == {r,c,i| r=3 ∧ c∈dom(cur) ∧ i=prj2(STATES*SYMBOLS,STATES)(cur(c))};\n",
-    " ANIMATION_STR_JUSTIFY_LEFT == TRUE;\n",
-    " SET_PREF_PP_SEQUENCES == TRUE;\n",
-    " PDA_STATES == (STATES-{symbol});\n",
+    " PDA_Zustände == (Z-{symbol});\n",
     "\n",
     " SYMS(s) == IF (s=lambda) THEN [] ELSE [SYM(s)] END;\n",
-    " SYM(s) == (symbol,s,symbol);\n",
-    " TERMINALS == {x|∃t.(t∈Σ ∧ x=SYM(t))}\n",
-    "CONSTANTS delta, Productions\n",
+    " SYM(s) == (symbol,s,symbol); // Darstellung eines Symbols als Tripel für die Grammatik\n",
+    " kfG_TERMINALE == {x|∃t.(t∈Σ ∧ x=SYM(t))};\n",
+    " \n",
+    " ANIMATION_FUNCTION1 == {r,c,i| r=1 ∧ c∈dom(cur) ∧ i=prj1(Z,SYMBOLE)(prj1(Z*SYMBOLE,Z)(cur(c)))};\n",
+    " ANIMATION_FUNCTION2 == {r,c,i| r=2 ∧ c∈dom(cur) ∧ i=prj2(Z,SYMBOLE)(prj1(Z*SYMBOLE,Z)(cur(c)))};\n",
+    " ANIMATION_FUNCTION3 == {r,c,i| r=3 ∧ c∈dom(cur) ∧ i=prj2(Z*SYMBOLE,Z)(cur(c))};\n",
+    " ANIMATION_STR_JUSTIFY_LEFT == TRUE;\n",
+    " SET_PREF_PP_SEQUENCES == TRUE\n",
+    "CONSTANTS δ, Regeln\n",
     "PROPERTIES\n",
-    " /* A PDA accepting {a^mb^m| m≥1} ; Beispiel von Info 4 (Folie 95ff) */\n",
-    " delta = { (z0,a,BOT) ↦ (z0,[A,BOT]),\n",
+    " /* Ein PDA für {a^m b^m| m≥1} ; Beispiel von Info 4 (Folie 95ff) */\n",
+    " δ = {     (z0,a,BOT) ↦ (z0,[A,BOT]),\n",
     "           (z0,a,A) ↦ (z0,[A,A]),\n",
     "           (z0,b,A) ↦ (z1,[]),\n",
     "           (z1,lambda,BOT) ↦ (z1,[]),\n",
     "           (z1,b,A) ↦ (z1,[]) } ∧\n",
     "\n",
     "\n",
-    "  Productions = /* Punkt 1 Folie 109 */\n",
-    "      { lhs,rhs | ∃z.(z∈PDA_STATES ∧ lhs=SYM(S) ∧ rhs = [(z0,BOT,z)])}\n",
+    "  Regeln = /* Punkt 1 Folie 109 */\n",
+    "      { lhs,rhs | ∃z.(z∈PDA_Zustände ∧ lhs=SYM(S) ∧ rhs = [(z0,BOT,z)])}\n",
     "       ∪\n",
     "       /* Punkt 2 Folie 109 */\n",
-    "       { lhs,rhs | ∃(z,a,A,z2).((z,a,A)↦(z2,[])∈delta ∧\n",
+    "       { lhs,rhs | ∃(z,a,A,z2).((z,a,A)↦(z2,[])∈δ ∧\n",
     "                   lhs=(z,A,z2) ∧ rhs = SYMS(a)) }\n",
     "       ∪\n",
     "       /* Punkt 3 Folie 110 */\n",
-    "       { lhs,rhs | ∃(z,a,A,B,z1,z2).((z,a,A)↦(z1,[B])∈delta ∧ z2∈PDA_STATES ∧\n",
+    "       { lhs,rhs | ∃(z,a,A,B,z1,z2).((z,a,A)↦(z1,[B])∈δ ∧ z2∈PDA_Zustände ∧\n",
     "                   lhs=(z,A,z2) ∧ rhs = SYMS(a)^[(z1,B,z2)]) }\n",
     "       ∪\n",
     "       /* Punkt 4 Folie 110 */\n",
-    "       { lhs,rhs | ∃(z,a,A,B,C,z1,z2,z3).((z,a,A)↦(z1,[B,C])∈delta ∧ \n",
-    "                     z2∈PDA_STATES ∧ z3∈PDA_STATES ∧\n",
-    "                     lhs=(z,A,z3) ∧ rhs = SYMS(a)^[(z1,B,z2),(z2,C,z3)]) }\n",
+    "       { lhs,rhs | ∃(z,a,A,B,C,z1,z2,z3).((z,a,A)↦(z1,[B,C])∈δ ∧ \n",
+    "                     z2∈PDA_Zustände ∧ \n",
+    "                     z3∈PDA_Zustände ∧\n",
+    "                     lhs=(z,A,z3) ∧ \n",
+    "                     rhs = SYMS(a)^[(z1,B,z2),(z2,C,z3)]) }\n",
     "VARIABLES cur\n",
     "INVARIANT\n",
-    " cur ∈ seq(CFG_Alphabet)\n",
-    "INITIALISATION cur:=SYMS(S)\n",
+    " cur ∈ seq(kfG_Alphabet)\n",
+    "INITIALISATION\n",
+    "  cur:=SYMS(S)\n",
     "OPERATIONS\n",
-    "  ApplyRule(LHS,RHS,pre,post) = PRE LHS↦RHS ∈ Productions ∧\n",
+    "  // Anwendung einer Grammatikregel\n",
+    "  ApplyRule(LHS,RHS,pre,post) = PRE LHS↦RHS ∈ Regeln ∧\n",
     "                                    cur = pre^[LHS]^post ∧\n",
-    "                                    ran(pre) ⊆ TERMINALS /* Links Ableitung */\n",
+    "                                    ran(pre) ⊆ kfG_TERMINALE /* Links Ableitung */\n",
     "  THEN\n",
     "     cur := pre^RHS^post\n",
     "  END\n",
@@ -86,7 +91,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 17,
+   "execution_count": 42,
    "metadata": {},
    "outputs": [
     {
@@ -95,7 +100,7 @@
        "Machine constants set up using operation 0: $setup_constants()"
       ]
      },
-     "execution_count": 17,
+     "execution_count": 42,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -106,7 +111,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 18,
+   "execution_count": 43,
    "metadata": {},
    "outputs": [
     {
@@ -115,7 +120,7 @@
        "Machine initialised using operation 1: $initialise_machine()"
       ]
      },
-     "execution_count": 18,
+     "execution_count": 43,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -126,7 +131,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 37,
+   "execution_count": 45,
    "metadata": {},
    "outputs": [
     {
@@ -138,18 +143,18 @@
        "{(z0↦a↦A↦(z0↦[A,A])),(z0↦a↦BOT↦(z0↦[A,BOT])),(z0↦b↦A↦(z1↦[])),(z1↦b↦A↦(z1↦[])),(z1↦lambda↦BOT↦(z1↦[]))}"
       ]
      },
-     "execution_count": 37,
+     "execution_count": 45,
      "metadata": {},
      "output_type": "execute_result"
     }
    ],
    "source": [
-    "delta"
+    "δ"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 19,
+   "execution_count": 46,
    "metadata": {},
    "outputs": [
     {
@@ -171,7 +176,7 @@
        "<Animation function visualisation>"
       ]
      },
-     "execution_count": 19,
+     "execution_count": 46,
      "metadata": {},
      "output_type": "execute_result"
     }