diff --git a/BewerterStrukturellerInduktion/Ausgabeverwaltung/Ausgabeverwalter.cs b/BewerterStrukturellerInduktion/Ausgabeverwaltung/Ausgabeverwalter.cs
index 3cfd15e49b9170ca0e8f244fe82be040f912a74a..ea840735bc05afe361694845c4b327c6507b27f9 100644
--- a/BewerterStrukturellerInduktion/Ausgabeverwaltung/Ausgabeverwalter.cs
+++ b/BewerterStrukturellerInduktion/Ausgabeverwaltung/Ausgabeverwalter.cs
@@ -168,7 +168,7 @@ namespace Ausgabeverwaltung
             }
             str += ":\r\n";
             foreach (Error err in errors)
-                str += "    " + err.errorCode + " " + err.Output + "\r\n";
+                str += "    " + err.errorCode + " " + err.Hint + "\r\n";
             return str;
         }
     }
diff --git a/BewerterStrukturellerInduktion/BewerterStrukturellerInduktion.csproj b/BewerterStrukturellerInduktion/BewerterStrukturellerInduktion.csproj
index 7ccb666727caa8fcfe020f668587bf4dc40bfd89..4e13e8aa8d9a628a5a2f0f1f45e1da80f0add5ee 100644
--- a/BewerterStrukturellerInduktion/BewerterStrukturellerInduktion.csproj
+++ b/BewerterStrukturellerInduktion/BewerterStrukturellerInduktion.csproj
@@ -11,4 +11,9 @@
     <PackageReference Include="Antlr4.Runtime.Standard" Version="4.8.0" />
   </ItemGroup>
 
+  <ItemGroup>
+    <Folder Include="Ueberpruefung\Errors\LemmaErrors\" />
+    <Folder Include="Ueberpruefung\Errors\InductionErrors\" />
+  </ItemGroup>
+
 </Project>
diff --git a/BewerterStrukturellerInduktion/Eingabeverwaltung/Metamodell/Error.cs b/BewerterStrukturellerInduktion/Eingabeverwaltung/Metamodell/Error.cs
index a4a564780166c98209c4e842828490eebf1145e7..d3766d78792e4f9e752f5ed9981045b2aef5f76c 100644
--- a/BewerterStrukturellerInduktion/Eingabeverwaltung/Metamodell/Error.cs
+++ b/BewerterStrukturellerInduktion/Eingabeverwaltung/Metamodell/Error.cs
@@ -2,33 +2,39 @@
 
 namespace Eingabeverwaltung.Metamodell
 {
-    public class Error
+    public abstract class Error
     {
         public readonly int errorCode;
-        private string output;
+        private string hint;
 
         public Error(int errorCode)
         {
             this.errorCode = errorCode;
-            output = null;
+            hint = null;
         }
-        public Error(int errorCode, string output)
+        public Error(int errorCode, string hint)
         {
             this.errorCode = errorCode;
-            this.output = output;
+            this.hint = hint;
         }
 
-        public string Output
+        public string Hint
         {
             get
             {
-                return output;
+                return hint;
             }
             set
             {
-                if (output == null) output = value;
-                else throw new Exception("ERROR: It was tried to change Error.output while it was set!");
+                if (hint == null) hint = value;
+                else throw new Exception("ERROR: It was tried to change Error.hint while it was set!");
             }
         }
+
+        /// <summary>
+        /// Description returns the description of the error.
+        /// </summary>
+        /// <returns></returns>
+        public abstract string Description();
     }
 }
diff --git a/BewerterStrukturellerInduktion/Testverwaltung/InductionTest.cs b/BewerterStrukturellerInduktion/Testverwaltung/InductionTest.cs
index b7684bd788a901eb73c52e9ba2f54696ce7c44cc..67c52ed3c267e2364e615b2e7d5d302ae87ea533 100644
--- a/BewerterStrukturellerInduktion/Testverwaltung/InductionTest.cs
+++ b/BewerterStrukturellerInduktion/Testverwaltung/InductionTest.cs
@@ -3,6 +3,7 @@ using System;
 using System.Collections.Generic;
 using System.Collections.Immutable;
 using Ueberpruefung;
+using Ueberpruefung.Errors;
 
 namespace Testverwaltung
 {
@@ -34,42 +35,42 @@ namespace Testverwaltung
             string L1 = "Lemma L1 geht ein in Teilaufgaben: L1 \r\n";
             string Lo = "Lemma L1 ohne Bewertung \r\n";
             string hb = "Hauptbeweis\r\n";
-            string m32(string c) => aus.ErrorMessage(new List<Error>() { new Error(32, c+" ") }, true, "", false, -1, -1);
+            string m32(string c) => aus.ErrorMessage(new List<Error>() { new Error32(c+" ") }, true, "", false, -1, -1);
             foreach (string testID in testIDs)
             {
                 string str;
                 switch (testID)
                 {
-                    case "1,2"   : str = L1 + aus.ErrorMessage(new List<Error>() { new Error(1), new Error(2) }, true, "Fall null", true, -1, -1);  break;                        
-                    case "30,37" : str = hb + aus.ErrorMessage(new List<Error>() { new Error(21), new Error(37,"y ") }, true, "Fall null", true, 1, -1)
-                                       + Lo + aus.ErrorMessage(new List<Error>() { new Error(22) }, false, -1, -1)
-                                            + aus.ErrorMessage(new List<Error>() { new Error(30) },true,"", false, -1, -1); ; break;
-                    case "31,38" : str = L1 + aus.ErrorMessage(new List<Error>() { new Error(38), new Error(31) }, true, "", false, -1, -1); break;
+                    case "1,2"   : str = L1 + aus.ErrorMessage(new List<Error>() { new Error01(), new Error02() }, true, "Fall null", true, -1, -1);  break;                        
+                    case "30,37" : str = hb + aus.ErrorMessage(new List<Error>() { new Error21(), new Error37("y ") }, true, "Fall null", true, 1, -1)
+                                       + Lo + aus.ErrorMessage(new List<Error>() { new Error22() }, false, -1, -1)
+                                            + aus.ErrorMessage(new List<Error>() { new Error30() },true,"", false, -1, -1); ; break;
+                    case "31,38" : str = L1 + aus.ErrorMessage(new List<Error>() { new Error38(), new Error31() }, true, "", false, -1, -1); break;
                     case "32,40,43" 
                                  : str = hb + m32("inc")
-                                            + aus.ErrorMessage(new List<Error>() { new Error(40, "m "), new Error(43) }, true, "IH", false, -1, -1)
-                                       + L1 + aus.ErrorMessage(new List<Error>() { new Error(8) },true,"Fall null", true, 1, -1); break;
+                                            + aus.ErrorMessage(new List<Error>() { new Error40("m "), new Error43() }, true, "IH", false, -1, -1)
+                                       + L1 + aus.ErrorMessage(new List<Error>() { new Error08() },true,"Fall null", true, 1, -1); break;
                     case "33d,41,43"
                                  : str = hb + m32("inc")
-                                            + aus.ErrorMessage(new List<Error>() { new Error(43) }, true, "IH", false, -1, -1)
-                                            + aus.ErrorMessage(new List<Error>() { new Error(41), new Error(33) }, true, "Fall null", false, -1, -1); break;
+                                            + aus.ErrorMessage(new List<Error>() { new Error43() }, true, "IH", false, -1, -1)
+                                            + aus.ErrorMessage(new List<Error>() { new Error41(), new Error33() }, true, "Fall null", false, -1, -1); break;
                     case "33u"   : str = L1 + m32("null")
-                                            + aus.ErrorMessage(new List<Error>() { new Error(33) }, true, "Fall plus( null,plus( null,null ) ) = plus( null,null )", false, -1, -1); break;
+                                            + aus.ErrorMessage(new List<Error>() { new Error33() }, true, "Fall plus( null,plus( null,null ) ) = plus( null,null )", false, -1, -1); break;
                     case "34c"   : str = hb + m32("null")
-                                            + aus.ErrorMessage(new List<Error>() { new Error(34), new Error(33) }, true, "Fall plus( null,null ) = null", false, -1, -1); break;
+                                            + aus.ErrorMessage(new List<Error>() { new Error34(), new Error33() }, true, "Fall plus( null,null ) = null", false, -1, -1); break;
                     case "34cIS,43" 
-                                 : str = hb + aus.ErrorMessage(new List<Error>() { new Error(43)}, true, "IH", false, -1, -1)
-                                            + aus.ErrorMessage(new List<Error>() { new Error(34, ": fixed Y-0 : Nat : forall m : Nat : plus( inc( Y-0 ),m ) = plus( m,inc( Y-0 ) )") }, true, "Fall inc", false, -1, -1); break;
-                    case "34h"   : str = hb + aus.ErrorMessage(new List<Error>() { new Error(34, ": fixed k : Nat : forall m : Nat : plus( k,m ) = plus( m,k )") }, true, "IH", false, -1, -1)
-                                            + aus.ErrorMessage(new List<Error>() { new Error(9, "[ plus( m,k ) / y ]") }, true, "Fall inc", true, 2, -1); break;
-                    case "35"    : str = hb + aus.ErrorMessage(new List<Error>() { new Error(35, "k ") }, true, "IH", false, -1, -1)
-                                            + aus.ErrorMessage(new List<Error>() { new Error(35, "k ") }, true, "Fall inc", false, -1, -1); break;
-                    case "36"    : str = hb + aus.ErrorMessage(new List<Error>() { new Error(36), new Error(37,"k ") }, true, "Fall null", true, 1, -1); break;
-                    case "39"    : str = L1 + aus.ErrorMessage(new List<Error>() { new Error(39) }, true, -1, -1)
-                                            + aus.ErrorMessage(new List<Error>() { new Error(21, "{ L1 }") }, true, 1, -1); break;
+                                 : str = hb + aus.ErrorMessage(new List<Error>() { new Error43()}, true, "IH", false, -1, -1)
+                                            + aus.ErrorMessage(new List<Error>() { new Error34(": fixed Y-0 : Nat : forall m : Nat : plus( inc( Y-0 ),m ) = plus( m,inc( Y-0 ) )") }, true, "Fall inc", false, -1, -1); break;
+                    case "34h"   : str = hb + aus.ErrorMessage(new List<Error>() { new Error34(": fixed k : Nat : forall m : Nat : plus( k,m ) = plus( m,k )") }, true, "IH", false, -1, -1)
+                                            + aus.ErrorMessage(new List<Error>() { new Error09("[ plus( m,k ) / y ]") }, true, "Fall inc", true, 2, -1); break;
+                    case "35"    : str = hb + aus.ErrorMessage(new List<Error>() { new Error35("k ") }, true, "IH", false, -1, -1)
+                                            + aus.ErrorMessage(new List<Error>() { new Error35("k ") }, true, "Fall inc", false, -1, -1); break;
+                    case "36"    : str = hb + aus.ErrorMessage(new List<Error>() { new Error36(), new Error37("k ") }, true, "Fall null", true, 1, -1); break;
+                    case "39"    : str = L1 + aus.ErrorMessage(new List<Error>() { new Error39() }, true, -1, -1)
+                                            + aus.ErrorMessage(new List<Error>() { new Error21("{ L1 }") }, true, 1, -1); break;
                     default: 
                         Console.WriteLine("Found an unexpected testID " + testID+". This test may not be tested correctly.");
-                        str = aus.NoErrors(); ; break;
+                        str = aus.NoErrors(); break;
                 }
                 shouldValues.Add(str);
             }
@@ -87,9 +88,9 @@ namespace Testverwaltung
                 switch (testID)
                 {
                     case "22": str = "Lemma Komm ohne Bewertung \r\n" 
-                                   + aus.ErrorMessage(new List<Error>() { new Error(22) }, false, "", false, -1, -1); break;
-                    case "42": str = hb + aus.ErrorMessage(new List<Error>() { new Error(42) }, true, "IH", false, -1, -1); break;
-                    case "43": str = hb + aus.ErrorMessage(new List<Error>() { new Error(43) }, true, "IH3", false, -1, -1); break;
+                                   + aus.ErrorMessage(new List<Error>() { new Error22() }, false, "", false, -1, -1); break;
+                    case "42": str = hb + aus.ErrorMessage(new List<Error>() { new Error42() }, true, "IH", false, -1, -1); break;
+                    case "43": str = hb + aus.ErrorMessage(new List<Error>() { new Error43() }, true, "IH3", false, -1, -1); break;
                     default:
                         Console.WriteLine("Found an unexpected testID " + testID + ". This test may not be tested correctly.");
                         str = aus.NoErrors(); ; break;
diff --git a/BewerterStrukturellerInduktion/Testverwaltung/TransformationTest.cs b/BewerterStrukturellerInduktion/Testverwaltung/TransformationTest.cs
index a17c8ef7bacdfbc82436f515108ff12e8efc27d4..2d054b12cc5f1e4e98d1197b111033ac52a934e2 100644
--- a/BewerterStrukturellerInduktion/Testverwaltung/TransformationTest.cs
+++ b/BewerterStrukturellerInduktion/Testverwaltung/TransformationTest.cs
@@ -1,6 +1,8 @@
 using Ueberpruefung;
 using System.Collections.Generic;
 using Eingabeverwaltung.Metamodell;
+using Ueberpruefung.Errors;
+using System;
 
 namespace Testverwaltung
 {
@@ -14,22 +16,28 @@ namespace Testverwaltung
 			shouldValues = new List<string>();
 			string err = "";
 			string errO = "[ inc( n ) / n ]";
-			for (int ts = -1, sub = -1, error = 1; error < numTests; error++)
+			for (int ts = -1, sub = -1, testID = 1; testID < numTests -1; testID++)
 			{
-                switch (error)
+                switch (testID)
                 {
-					case 3:  err = aus.ErrorMessage(new List<Error>() { new Error(error)                   }, 1 , 2  ); ts = 1; break;
-					case 4:  err = aus.ErrorMessage(new List<Error>() { new Error(error)                   }, 1 , 1  );         break;
-					case 5:  err = aus.ErrorMessage(new List<Error>() { new Error(error)                   }, 1 , sub)+
-								   aus.ErrorMessage(new List<Error>() { new Error(error)                   }, 2 , sub);         break;
-					case 6:  err = aus.ErrorMessage(new List<Error>() { new Error(6),new Error(7)          }, 2 , sub);         break;
-					case 8:  err = aus.ErrorMessage(new List<Error>() { new Error(error)                   }, 2 , sub);         break;
-					case 9:  err = aus.ErrorMessage(new List<Error>() {              new Error(error,errO) }, ts, sub);         break;
-					case 10: err = aus.ErrorMessage(new List<Error>() { new Error(8),new Error(error,errO) }, ts, sub);         break;
-					case 12: err = aus.ErrorMessage(new List<Error>() { new Error(8),new Error(error)      }, ts, sub);         break;
-					case 13: err = aus.ErrorMessage(new List<Error>() { new Error(error)                   }, 1 , 2  );         break;
-					default: err = aus.ErrorMessage(new List<Error>() { new Error(error)                   }, ts, sub);         break;
-				}
+					case 1:  err = aus.ErrorMessage(new List<Error>() { new Error01()                   }, ts, sub);         break;
+                    case 2:  err = aus.ErrorMessage(new List<Error>() { new Error02()                   }, ts, sub);         break;
+                    case 3:  err = aus.ErrorMessage(new List<Error>() { new Error03()                   }, 1 , 2  ); ts = 1; break;
+					case 4:  err = aus.ErrorMessage(new List<Error>() { new Error04()                   }, 1 , 1  );         break;
+					case 5:  err = aus.ErrorMessage(new List<Error>() { new Error05()                   }, 1 , sub)+
+								   aus.ErrorMessage(new List<Error>() { new Error05()                   }, 2 , sub);         break;
+					case 6:  err = aus.ErrorMessage(new List<Error>() { new Error06(),new Error07()     }, 2 , sub);         break;
+                    case 7:  err = aus.ErrorMessage(new List<Error>() { new Error07()                   }, ts, sub);         break;
+                    case 8:  err = aus.ErrorMessage(new List<Error>() { new Error08()                   }, 2 , sub);         break;
+					case 9:  err = aus.ErrorMessage(new List<Error>() {               new Error09(errO) }, ts, sub);         break;
+					case 10: err = aus.ErrorMessage(new List<Error>() { new Error08(),new Error10(errO) }, ts, sub);         break;
+                    case 11: err = aus.ErrorMessage(new List<Error>() { new Error11()                   }, ts, sub);         break;
+                    case 12: err = aus.ErrorMessage(new List<Error>() { new Error08(),new Error12()     }, ts, sub);         break;
+					case 13: err = aus.ErrorMessage(new List<Error>() { new Error13()                   }, 1 , 2  );         break;
+                    default:
+                        Console.WriteLine("Found an unexpected testID " + testID + ". This test may not be tested correctly.");
+                        err = aus.NoErrors(); break;
+                }
 				shouldValues.Add("Hauptbeweis\r\n" + err);
 			}
 		}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckFixedVarsNotSubstituted.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckFixedVarsNotSubstituted.cs
index 30ec506c45d8f776b2dc0f8f7a898bb32c41d478..ae14564824337883b2035c93db5f744f7d742ae9 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckFixedVarsNotSubstituted.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckFixedVarsNotSubstituted.cs
@@ -1,5 +1,6 @@
 using Eingabeverwaltung.Metamodell;
 using System;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung.CheckInduction
 {
@@ -20,7 +21,7 @@ namespace Ueberpruefung.CheckInduction
                         // renamings without changing name are substitutions added at model creating and are no errors
                         if (!(sub.tree is TreeVariable tv && tv.name == sub.variable.name))
                         { result = false; output += sub.variable.name+" "; }
-                if (!result) ts.errors.Add(new Error(37, output));
+                if (!result) ts.errors.Add(new Error37(output));
                 return result;
             }
             else throw new InvalidOperationException();
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndCaseType.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndCaseType.cs
index e81a66440b7b5e6d262c3bd8c7d3df41aea01896..eede5f3b782d2f97193733100175ceb8a87df89f 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndCaseType.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndCaseType.cs
@@ -1,6 +1,7 @@
 using Eingabeverwaltung;
 using Eingabeverwaltung.Metamodell;
 using System;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung.CheckInduction
 {
@@ -25,7 +26,7 @@ namespace Ueberpruefung.CheckInduction
                 else if (indC.type == "IS")
                     { if (indC.Constructor != null) result = indC.Constructor is BuildingConstructor; }
                 else throw new KontextException(indC.coords,"Found an unknown induction case type: " + indC.type);
-                if (!result) indC.errors.Add(new Error(41));
+                if (!result) indC.errors.Add(new Error41());
                 return result;
             }
             else throw new InvalidOperationException();
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndCaseTypeIsValid.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndCaseTypeIsValid.cs
index 4c6f65cc84346deb3dd5635c74f8941bded07242..9cdf121b140e370cbf4a6bf9d2b48cc18517d945 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndCaseTypeIsValid.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndCaseTypeIsValid.cs
@@ -3,6 +3,7 @@ using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung.CheckInduction
 {
@@ -36,7 +37,7 @@ namespace Ueberpruefung.CheckInduction
                         }
                 }
                 foreach (InductionCase ic in invalidCases)
-                    ic.errors.Add(new Error(33));
+                    ic.errors.Add(new Error33());
                 return invalidCases.Count == 0;
             }
             else throw new InvalidOperationException();
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndCasesAllExisting.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndCasesAllExisting.cs
index 08179f4cf082326f97777a9b7419a612db70d9f1..a7ea156bcce238bc7dc2c72013be28936e071b23 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndCasesAllExisting.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndCasesAllExisting.cs
@@ -1,6 +1,7 @@
 using Eingabeverwaltung.Metamodell;
 using System;
 using System.Collections.Generic;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung.CheckInduction
 {
@@ -29,7 +30,7 @@ namespace Ueberpruefung.CheckInduction
                 {
                     string output = "";
                     foreach (Constructor indVarC in indVarCs) output += indVarC.name + " ";
-                    ind.errors.Add(new Error(32, output));
+                    ind.errors.Add(new Error32(output));
                     return false;
                 }
                 else return true;
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndHypCanBeUseful.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndHypCanBeUseful.cs
index ff7eccc10f9105858a2eded6036f488fdf4b1786..59836b14428a36ed5fd3ef2ef00fa6c330772f4b 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndHypCanBeUseful.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndHypCanBeUseful.cs
@@ -2,6 +2,7 @@
 using System;
 using System.Collections.Generic;
 using System.Text;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung.CheckInduction
 {
@@ -34,7 +35,7 @@ namespace Ueberpruefung.CheckInduction
                             ihBuildingVarName = tv.name;
                     if (ihBuildingVarName != "")
                         if (!bPVNames.Contains(ihBuildingVarName))
-                        { result = false; ih.errors.Add(new Error(43)); }
+                        { result = false; ih.errors.Add(new Error43()); }
                 }
                 return result;
             }
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndHypNotUsedInIA.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndHypNotUsedInIA.cs
index fc8c890bd549dfb52d71e7f1f93651a16f55cb1d..4ef1757752736fa2f8cdeb792b6ebb3a57fc56b4 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndHypNotUsedInIA.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndHypNotUsedInIA.cs
@@ -1,5 +1,6 @@
 using Eingabeverwaltung.Metamodell;
 using System;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung.CheckInduction
 {
@@ -25,7 +26,7 @@ namespace Ueberpruefung.CheckInduction
                         if (ts.rule is InductionHypothesis)
                         {
                             result = false;
-                            ts.errors.Add(new Error(36));
+                            ts.errors.Add(new Error36());
                         }
                     return result;
                 }
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndHypsUnique.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndHypsUnique.cs
index eca6d670e5bb5d00cd21ec62a9956531de5f607f..41a7849b172887e3d633f3eebeeb26184c996eb7 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndHypsUnique.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndHypsUnique.cs
@@ -1,6 +1,7 @@
 using Eingabeverwaltung.Metamodell;
 using System;
 using System.Collections.Generic;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung.CheckInduction
 {
@@ -30,7 +31,7 @@ namespace Ueberpruefung.CheckInduction
                             ihBuildingVarName = tv.name;
                     if (ihBuildingVarName != "")
                         if (ihBuildingVarNames.Contains(ihBuildingVarName))
-                        { result = false; ih.errors.Add(new Error(42)); }
+                        { result = false; ih.errors.Add(new Error42()); }
                         else ihBuildingVarNames.Add(ihBuildingVarName);
                 }
                 return result;
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndPartEquation.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndPartEquation.cs
index f8501ade24424fc99e4597983e1b055617e2dbb5..15671d89ba91997a0f97b40b8a541b4395194aba 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndPartEquation.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndPartEquation.cs
@@ -2,6 +2,7 @@
 using Eingabeverwaltung.Metamodell;
 using System;
 using System.Collections.Generic;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung.CheckInduction
 {
@@ -37,7 +38,7 @@ namespace Ueberpruefung.CheckInduction
                     foreach (Substitution sub in renamings)
                         if (sub.variable != parent.indVar)
                             result &= sub.variable.name == ((TreeVariable)sub.tree).name;
-                if (!result) ih.errors.Add(new Error(34, errOutput));
+                if (!result) ih.errors.Add(new Error34(errOutput));
                 return result;
             }
             else if (e is InductionCase ic)
@@ -84,7 +85,7 @@ namespace Ueberpruefung.CheckInduction
                             result &= sub.variable.name == ((TreeVariable)sub.tree).name;
                         // 6. only ind var is allowed to be substituted by composed tree
                         result &= subs[0].variable == parent.indVar;
-                        // 7. build corrected constructor for error output
+                        // 7. build corrected constructor for error hint
                         if (!result)
                         {
                             if (parent.indVar.sort == cTree.sort)
@@ -99,7 +100,7 @@ namespace Ueberpruefung.CheckInduction
                         }
                     }
                 }
-                if (!result) ic.errors.Add(new Error(34, errOutput));
+                if (!result) ic.errors.Add(new Error34(errOutput));
                 return result;
             }
             else throw new InvalidOperationException();
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndPartEquationFixedVars.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndPartEquationFixedVars.cs
index abd581a698a223bd2932c1e2ef5b5fcf5417713e..6bc515fd9425cb7d715b28539fadc0493ef5ed67 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndPartEquationFixedVars.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndPartEquationFixedVars.cs
@@ -46,7 +46,7 @@ namespace Ueberpruefung.CheckInduction
         protected abstract bool check(List<Variable> shouldValueFixedVars, List<Variable> isValueFixedVars, List<Error> contextErrorList);
 
         /// <summary>
-        /// checks error 35. Removes all should be fixed vars from isValueFixedVars and prints error output in err35Output if result is false.
+        /// checks error 35. Removes all should be fixed vars from isValueFixedVars and prints error hint in err35Output if result is false.
         /// </summary>
         /// <param name="shouldValueFixedVars"></param>
         /// <param name="isValueFixedVars"></param>
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndPartEquationIsFixed.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndPartEquationIsFixed.cs
index deb2e3bd70aefde6721cdc1d3a1cb127398c73af..9907b0013088d48f88bd3ce762e01e13abcd3dd6 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndPartEquationIsFixed.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndPartEquationIsFixed.cs
@@ -1,5 +1,6 @@
 using Eingabeverwaltung.Metamodell;
 using System.Collections.Generic;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung.CheckInduction
 {
@@ -22,7 +23,7 @@ namespace Ueberpruefung.CheckInduction
         {
             isValueFixedVars = new List<Variable>(isValueFixedVars); // copy list
             bool result = check35(shouldValueFixedVars,isValueFixedVars, out string err35Output);
-            if (!result) contextErrorList.Add(new Error(35, err35Output));
+            if (!result) contextErrorList.Add(new Error35(err35Output));
             return result;
         }
     }
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndPartEquationIsNotFixed.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndPartEquationIsNotFixed.cs
index cdf38add6f144faea39dd838d52a611e30affaae..cc928e3c369a4e0eb22754e0cd28c67b2936db5f 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndPartEquationIsNotFixed.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndPartEquationIsNotFixed.cs
@@ -1,5 +1,6 @@
 using Eingabeverwaltung.Metamodell;
 using System.Collections.Generic;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung.CheckInduction
 {
@@ -28,7 +29,7 @@ namespace Ueberpruefung.CheckInduction
                 string output = "";
                 foreach (Variable var in isValueFixedVars)
                     output += var.name + " ";
-                contextErrorList.Add(new Error(40, output));
+                contextErrorList.Add(new Error40(output));
             }
             return result;
         }
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndTask_Satisfied.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndTask_Satisfied.cs
index 02a33297843e375937aa1509fc88eb40ac7f2b5a..1e8aa55171a7c587edd395f72564ec202793fa92 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndTask_Satisfied.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndTask_Satisfied.cs
@@ -2,6 +2,7 @@
 using Eingabeverwaltung.Metamodell;
 using System;
 using System.Collections.Generic;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung.CheckInduction
 {
@@ -39,11 +40,11 @@ namespace Ueberpruefung.CheckInduction
             bool result = true;
             Variable taskIndVar = ((TreeVariable)taskRenaming.tree).variable;
             if (proof is Transformation tr)
-            { result = false; tr.errors.Add(new Error(39)); }
+            { result = false; tr.errors.Add(new Error39()); }
             else if (proof is Induction ind)
             {
                 if (ind.indVar != taskRenaming.variable)
-                { result = false; ind.errors.Add(new Error(38)); }
+                { result = false; ind.errors.Add(new Error38()); }
             }
             else throw new KontextException(proof.coords,"Found a single proof that is neither Transformation nor Induction!");
             return result;
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndVarHasConstructors.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndVarHasConstructors.cs
index a4dc095012672f199bfb22b8a87282086e371c45..cfbf2601ce078f9a3ebcf7b68daeaaffb0b657a7 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndVarHasConstructors.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndVarHasConstructors.cs
@@ -1,5 +1,6 @@
 using Eingabeverwaltung.Metamodell;
 using System;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung.CheckInduction
 {
@@ -15,7 +16,7 @@ namespace Ueberpruefung.CheckInduction
             {
                 if (ind.indVar == null) return true;
                 bool result = ind.indVar.sort.GetConstructors().Count > 0;
-                if (!result) ind.errors.Add(new Error(31));
+                if (!result) ind.errors.Add(new Error31());
                 return result;
             }
             else throw new InvalidOperationException();
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndVarNotFixed.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndVarNotFixed.cs
index 1afc7b29076e5c04e056d36074412051678c9c1a..4f75caeda00c2a6ee6ffbda6da31a4d7095fb793 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndVarNotFixed.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckInduction/CheckIndVarNotFixed.cs
@@ -1,5 +1,6 @@
 using Eingabeverwaltung.Metamodell;
 using System;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung.CheckInduction
 {
@@ -15,7 +16,7 @@ namespace Ueberpruefung.CheckInduction
             if (e is Induction ind)
             {
                 bool result = !ind.fixedVars.Contains(ind.indVar);
-                if (!result) ind.errors.Add(new Error(30));
+                if (!result) ind.errors.Add(new Error30());
                 return result;
             }
             else throw new InvalidOperationException();
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckLemmaEqualsTask.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckLemmaEqualsTask.cs
index 7d84807b0dc7fc161ffab929635d810a2d73def6..4bf650f6ae50f78f6f0cb607c9cd009dac5507e3 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckLemmaEqualsTask.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckLemmaEqualsTask.cs
@@ -1,6 +1,7 @@
 using Eingabeverwaltung.Metamodell;
 using System;
 using System.Collections.Generic;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung
 {
@@ -49,10 +50,10 @@ namespace Ueberpruefung
                     {
                         variableRenaming1.Clear(); variableRenaming2.Clear();
                         if (!FindVariableRenamings(variableRenaming1, variableRenaming2, true))
-                            { l.errors.Add(new Error(22)); return false; }
+                            { l.errors.Add(new Error22()); return false; }
                     }
                     if (CheckHelper.unionSubstitutions(variableRenaming1, variableRenaming2) == null)
-                        { l.errors.Add(new Error(22)); return false; }
+                        { l.errors.Add(new Error22()); return false; }
                     return true;
                 }
                 else return true;
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckLemmaIsAcyclic.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckLemmaIsAcyclic.cs
index d79f9224edc77db56a3b62244125529d5e9fb53b..e615fa07555a3dc37d44499b227ecccde84ccfd4 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckLemmaIsAcyclic.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckLemmaIsAcyclic.cs
@@ -1,5 +1,6 @@
 using System;
 using Eingabeverwaltung.Metamodell;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung
 {
@@ -16,7 +17,7 @@ namespace Ueberpruefung
                     string output = "{ ";
                     foreach (Lemma dep in l.cyclicDependencies) output += dep.name + " ";
                     output += "}";
-                    l.errors.Add(new Error(20,output));
+                    l.errors.Add(new Error20(output));
                 }
                 return result;
             }
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckLemmaTaskIsUsed.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckLemmaTaskIsUsed.cs
index efb88183418793400a82c29d39e720e69cbb905f..788c68a17e902e7abd3769c9e68972b539cd7f7d 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckLemmaTaskIsUsed.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckLemmaTaskIsUsed.cs
@@ -2,6 +2,7 @@
 using System.Collections.Generic;
 using Eingabeverwaltung;
 using Eingabeverwaltung.Metamodell;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung
 {
@@ -51,7 +52,7 @@ namespace Ueberpruefung
                 bool result = mainLemmata.Count == 0;
                 if (!result)
                     foreach (Lemma lemma in mainLemmata)
-                        lemma.errors.Add(new Error(23));
+                        lemma.errors.Add(new Error23());
                 return result;
             }
             else throw new InvalidOperationException();
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckResultTree_for_RuleEndTree.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckResultTree_for_RuleEndTree.cs
index da4284f2ed4d5b7d1aa7af1ec32d1961081ad149..77898bf52b9330a1a1ebbacefcba2e52b6a9c74c 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckResultTree_for_RuleEndTree.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckResultTree_for_RuleEndTree.cs
@@ -1,5 +1,6 @@
 using Eingabeverwaltung.Metamodell;
 using System;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung.CheckTransformation
 {
@@ -12,7 +13,7 @@ namespace Ueberpruefung.CheckTransformation
             if (e is TransformationStep ts) 
             {
                 bool result = ts.resultTree.Equals(CheckHelper.transform(ts.startTree, ts.termPart, CheckHelper.substitute(ts.ruleStartTree(), ts.substitutions)));
-                if (!result) ts.errors.Add(new Error(12));
+                if (!result) ts.errors.Add(new Error12());
                 return result;
             }
             else throw new InvalidOperationException();
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckResultTree_for_RuleStartTree.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckResultTree_for_RuleStartTree.cs
index ab9480e387d60538545b86fe74a7dc3672890f11..b0019de0afe6f6818295950a77148758fd37e11f 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckResultTree_for_RuleStartTree.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckResultTree_for_RuleStartTree.cs
@@ -1,5 +1,6 @@
 using Eingabeverwaltung.Metamodell;
 using System;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung.CheckTransformation
 {
@@ -12,7 +13,7 @@ namespace Ueberpruefung.CheckTransformation
             if (e is TransformationStep ts)
             {
                 bool result = ts.resultTree.Equals(CheckHelper.transform(ts.startTree,ts.termPart,CheckHelper.substitute(ts.ruleEndTree(),ts.substitutions)));
-                if (!result) ts.errors.Add(new Error(11));
+                if (!result) ts.errors.Add(new Error11());
                 return result;
             }
             else throw new InvalidOperationException();
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckSubstitutionVariable_DefinedIn_ADT.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckSubstitutionVariable_DefinedIn_ADT.cs
index 1270c0beb11da1df552abe8987483af2dc963440..fc8d18612e40a3e173e7c9bbe56f531fc18b831a 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckSubstitutionVariable_DefinedIn_ADT.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckSubstitutionVariable_DefinedIn_ADT.cs
@@ -1,5 +1,6 @@
 using Eingabeverwaltung.Metamodell;
 using System;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung.CheckTransformation
 {
@@ -12,7 +13,7 @@ namespace Ueberpruefung.CheckTransformation
             if (e is Substitution sub)
             {
                 bool result = sub.variable != null;
-                if (!result) sub.errors.Add(new Error(3));
+                if (!result) sub.errors.Add(new Error03());
                 return result;
             }
             else throw new InvalidOperationException();
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckSubstitutionVariable_isUsedInRule.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckSubstitutionVariable_isUsedInRule.cs
index b911a0cc49d41a0222c147db33d218f6fb588dd1..a4ab876617d3219ffdf9cd69a87181c5273b0ec1 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckSubstitutionVariable_isUsedInRule.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckSubstitutionVariable_isUsedInRule.cs
@@ -1,5 +1,6 @@
 using Eingabeverwaltung.Metamodell;
 using System;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung.CheckTransformation
 {
@@ -21,7 +22,7 @@ namespace Ueberpruefung.CheckTransformation
                 {
                     res = ts.rule.eq.leftTree.findSubTree(new TreeVariable(sub.variable)).Count > 0
                          || ts.rule.eq.rightTree.findSubTree(new TreeVariable(sub.variable)).Count > 0;
-                    if (!res) sub.errors.Add(new Error(13));
+                    if (!res) sub.errors.Add(new Error13());
                 }
                 return result;
             }
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckSubstitution_NoSortChange.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckSubstitution_NoSortChange.cs
index 6eb8a5e865987e4005726d656ef81b465c555af7..846afe572e940574ec446201fe7a8001ba80ac9e 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckSubstitution_NoSortChange.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckSubstitution_NoSortChange.cs
@@ -1,5 +1,6 @@
 using Eingabeverwaltung.Metamodell;
 using System;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung.CheckTransformation
 {
@@ -12,7 +13,7 @@ namespace Ueberpruefung.CheckTransformation
             if (e is Substitution sub)
             {
                 bool result = sub.variable.sort == sub.tree.sort;
-                if (!result) sub.errors.Add(new Error(4));
+                if (!result) sub.errors.Add(new Error04());
                 return result;
             }
             else throw new InvalidOperationException();
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckSubstitution_for_RuleEndTree.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckSubstitution_for_RuleEndTree.cs
index 81688818d0da54e4fe63bab57a23caa91e17e6bd..eee25bf72b64a6a552c79e314d746f72bd4813b4 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckSubstitution_for_RuleEndTree.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckSubstitution_for_RuleEndTree.cs
@@ -1,6 +1,7 @@
 using Eingabeverwaltung.Metamodell;
 using System;
 using System.Collections.Generic;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung.CheckTransformation
 {
@@ -16,8 +17,8 @@ namespace Ueberpruefung.CheckTransformation
                 r = ts.termPart.Equals(CheckHelper.substitute(ts.ruleEndTree(), ts.substitutions));
                 if (e && !r && !(new CheckTermPart_match_RuleStartTree().check(ts)))
                 {
-                    Error err = new Error(10);
-                    err.Output = Util.ListSubstitutionToString(CheckHelper.findSubstitution(ts.ruleEndTree(),ts.termPart));
+                    Error err = new Error10();
+                    err.Hint = Util.ListSubstitutionToString(CheckHelper.findSubstitution(ts.ruleEndTree(),ts.termPart));
                     ts.errors.Add(err);
                 }
                 return !e || r;
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckSubstitution_for_RuleStartTree.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckSubstitution_for_RuleStartTree.cs
index c8bb4e1aeb991024d7f0cb23ff7ce2e1dabb6d6e..c60ba315a53ea984826335cb090957b43f5505a9 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckSubstitution_for_RuleStartTree.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckSubstitution_for_RuleStartTree.cs
@@ -1,6 +1,7 @@
 using Eingabeverwaltung.Metamodell;
 using System;
 using System.Collections.Generic;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung.CheckTransformation
 {
@@ -16,8 +17,8 @@ namespace Ueberpruefung.CheckTransformation
                 r = ts.termPart.Equals(CheckHelper.substitute(ts.ruleStartTree(), ts.substitutions));
                 if (s && !r)
                 {
-                    Error err = new Error(9);
-                    err.Output = Util.ListSubstitutionToString(CheckHelper.findSubstitution(ts.ruleStartTree(), ts.termPart));
+                    Error err = new Error09();
+                    err.Hint = Util.ListSubstitutionToString(CheckHelper.findSubstitution(ts.ruleStartTree(), ts.termPart));
                     ts.errors.Add(err);
                 }
                 return !s || r;
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckTask_Satisfied.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckTask_Satisfied.cs
index 2db9e6be951a0daf87878b21b43dfe5e63a5e03c..eabb9f27f72b6795df50f8b482ddf057f7255e6c 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckTask_Satisfied.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckTask_Satisfied.cs
@@ -3,6 +3,7 @@ using Eingabeverwaltung.Metamodell;
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung.CheckTransformation
 {
@@ -44,8 +45,8 @@ namespace Ueberpruefung.CheckTransformation
             if (startL && endR || startR && endL) result = null;
             else
             {
-                if (!startL && !startR) result.Add(new Error(1));
-                if (!endL && !endR || startL && !endR || startR && !endL) result.Add(new Error(2));
+                if (!startL && !startR) result.Add(new Error01());
+                if (!endL && !endR || startL && !endR || startR && !endL) result.Add(new Error02());
             }
             return result;
         }
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckTermPart_isSubTreeFrom_StartTree.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckTermPart_isSubTreeFrom_StartTree.cs
index 8c2bb831cbe6f9f7c50a77bedaea3f39baba1035..d7def587ec204b846743427cf47638d983c2fbab 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckTermPart_isSubTreeFrom_StartTree.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckTermPart_isSubTreeFrom_StartTree.cs
@@ -1,5 +1,6 @@
 using Eingabeverwaltung.Metamodell;
 using System;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung.CheckTransformation
 {
@@ -12,7 +13,7 @@ namespace Ueberpruefung.CheckTransformation
             if (e is TransformationStep ts)
             {
                 bool result = ts.startTree.findSubTree(ts.termPart).Count > 0;
-                if (!result) ts.errors.Add(new Error(6));
+                if (!result) ts.errors.Add(new Error06());
                 return result;
             }
             else throw new InvalidOperationException();
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckTransformationStep_NoSortChange.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckTransformationStep_NoSortChange.cs
index 3980c59c180b1e66931f2e5775e47185b9c4a205..52713b7e705e6e2fea072cc9f518f4f99b785450 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckTransformationStep_NoSortChange.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckTransformationStep_NoSortChange.cs
@@ -1,5 +1,6 @@
 using Eingabeverwaltung.Metamodell;
 using System;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung.CheckTransformation
 {
@@ -12,7 +13,7 @@ namespace Ueberpruefung.CheckTransformation
             if (e is TransformationStep ts)
             {
                 bool result = ts.startTree.sort == ts.resultTree.sort;
-                if (!result) ts.errors.Add(new Error(5));
+                if (!result) ts.errors.Add(new Error05());
                 return result;
             }
             else throw new InvalidOperationException();
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckUsedLemmaIsProved.cs b/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckUsedLemmaIsProved.cs
index 53acee790eb099a7f5c7a9f22ba24e9b917d20d5..2f7abf2e8a77dcdd844fcdc5b7c8457d95eea290 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckUsedLemmaIsProved.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/CheckTransformation/CheckUsedLemmaIsProved.cs
@@ -1,6 +1,7 @@
 using Eingabeverwaltung;
 using Eingabeverwaltung.Metamodell;
 using System;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung.CheckTransformation
 {
@@ -30,7 +31,7 @@ namespace Ueberpruefung.CheckTransformation
                         }
                         result &= result2;
                     }
-                    if (!result) ts.errors.Add(new Error(21,output));
+                    if (!result) ts.errors.Add(new Error21(output));
                     return result;
                 }
                 else if (ts.rule is InductionHypothesis ih)
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error30.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error30.cs
new file mode 100644
index 0000000000000000000000000000000000000000..c14db3d60b38450e3818f51b731fc9806eeaf933
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error30.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error30 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error30() : base(30) { }
+        public Error30(string hint) : base(30,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error31.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error31.cs
new file mode 100644
index 0000000000000000000000000000000000000000..1a3f34f0c5c99c54773956c30bf2a7b25ed14c77
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error31.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error31 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error31() : base(31) { }
+        public Error31(string hint) : base(31,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error32.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error32.cs
new file mode 100644
index 0000000000000000000000000000000000000000..2c69ba6d45e358cf43ec39ce8a2c062a31b7f2f3
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error32.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error32 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error32() : base(32) { }
+        public Error32(string hint) : base(32,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error33.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error33.cs
new file mode 100644
index 0000000000000000000000000000000000000000..3da5325d7216bf7ee54a461fda9ba4a3fdefaeb2
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error33.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error33 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error33() : base(33) { }
+        public Error33(string hint) : base(33,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error34.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error34.cs
new file mode 100644
index 0000000000000000000000000000000000000000..ebd48972fc9e3f78df74d0fa616de0ab52a572a4
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error34.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error34 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error34() : base(34) { }
+        public Error34(string hint) : base(34,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error35.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error35.cs
new file mode 100644
index 0000000000000000000000000000000000000000..abfa647382a119a8cee2019f8b35ee277ea51dae
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error35.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error35 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error35() : base(35) { }
+        public Error35(string hint) : base(35,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error36.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error36.cs
new file mode 100644
index 0000000000000000000000000000000000000000..261a38878182e1d92da83a114c3efca0f1a111e2
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error36.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error36 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error36() : base(36) { }
+        public Error36(string hint) : base(36,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error37.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error37.cs
new file mode 100644
index 0000000000000000000000000000000000000000..117e50e9634e9cf5070213cddfc51d4557ba0d4e
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error37.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error37 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error37() : base(37) { }
+        public Error37(string hint) : base(37,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error38.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error38.cs
new file mode 100644
index 0000000000000000000000000000000000000000..16128a6fb5eed8845a3c128556bba9aa3628d236
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error38.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error38 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error38() : base(38) { }
+        public Error38(string hint) : base(38,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error39.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error39.cs
new file mode 100644
index 0000000000000000000000000000000000000000..081cb24ed9b1acaef173e79613b1d62f087eb122
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error39.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error39 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error39() : base(39) { }
+        public Error39(string hint) : base(39,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error40.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error40.cs
new file mode 100644
index 0000000000000000000000000000000000000000..6c3156b414cda7ff54deaea23ad98759eab8e591
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error40.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error40 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error40() : base(40) { }
+        public Error40(string hint) : base(40,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error41.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error41.cs
new file mode 100644
index 0000000000000000000000000000000000000000..d112807e4b639ab3788dbf112e803362baa15245
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error41.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error41 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error41() : base(41) { }
+        public Error41(string hint) : base(41,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error42.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error42.cs
new file mode 100644
index 0000000000000000000000000000000000000000..bf7e35d0b74eb797a52666a9aad105d3008ee837
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error42.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error42 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error42() : base(42) { }
+        public Error42(string hint) : base(42,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error43.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error43.cs
new file mode 100644
index 0000000000000000000000000000000000000000..e605ef8e451b2e3e922d0e3b704aa3894808c0db
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/InductionErrors/Error43.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error43 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error43() : base(43) { }
+        public Error43(string hint) : base(43,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/LemmaErrors/Error20.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/LemmaErrors/Error20.cs
new file mode 100644
index 0000000000000000000000000000000000000000..fc81924420adcf6ac4f3144a9015b1bec951e38f
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/LemmaErrors/Error20.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error20 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error20() : base(20) { }
+        public Error20(string hint) : base(20,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/LemmaErrors/Error21.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/LemmaErrors/Error21.cs
new file mode 100644
index 0000000000000000000000000000000000000000..ed8e2b8a3130c844ca74d4766d2e3205c22b7d0d
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/LemmaErrors/Error21.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error21 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error21() : base(21) { }
+        public Error21(string hint) : base(21,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/LemmaErrors/Error22.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/LemmaErrors/Error22.cs
new file mode 100644
index 0000000000000000000000000000000000000000..faa43da285c6315b0d7c736766d0e07688ffa6dc
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/LemmaErrors/Error22.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error22 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error22() : base(22) { }
+        public Error22(string hint) : base(22,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/LemmaErrors/Error23.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/LemmaErrors/Error23.cs
new file mode 100644
index 0000000000000000000000000000000000000000..3eca3c707a923629fb8d51bf5b2b9a40c1782025
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/LemmaErrors/Error23.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error23 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error23() : base(23) { }
+        public Error23(string hint) : base(23,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error01.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error01.cs
new file mode 100644
index 0000000000000000000000000000000000000000..af41d550b8d33b4dde7949e19b2434fbc7dd7e57
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error01.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error01 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error01() : base(1) { }
+        public Error01(string hint) : base(1,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error02.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error02.cs
new file mode 100644
index 0000000000000000000000000000000000000000..eee18f4566fb9a68c7baa1b2f9673ec858e7040d
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error02.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error02 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error02() : base(2) { }
+        public Error02(string hint) : base(2,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error03.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error03.cs
new file mode 100644
index 0000000000000000000000000000000000000000..229fba97a4ed4a108382903716829c11c4165863
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error03.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error03 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error03() : base(3) { }
+        public Error03(string hint) : base(3,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error04.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error04.cs
new file mode 100644
index 0000000000000000000000000000000000000000..7880c935e442d14306e312b6884271bf25c9f216
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error04.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error04 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error04() : base(4) { }
+        public Error04(string hint) : base(4,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error05.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error05.cs
new file mode 100644
index 0000000000000000000000000000000000000000..dcb923e76a9170ec1fa54c412445b6b66f400720
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error05.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error05 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error05() : base(5) { }
+        public Error05(string hint) : base(5,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error06.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error06.cs
new file mode 100644
index 0000000000000000000000000000000000000000..11cd95ed47e9e6900185ad5e7dfa66ba2c03d593
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error06.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error06 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error06() : base(6) { }
+        public Error06(string hint) : base(6,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error07.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error07.cs
new file mode 100644
index 0000000000000000000000000000000000000000..d9e67a001da2e7adfe84f3650403bc197a720212
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error07.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error07 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error07() : base(7) { }
+        public Error07(string hint) : base(7,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error08.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error08.cs
new file mode 100644
index 0000000000000000000000000000000000000000..3ab0fba1933986b8a2bccf69956ba920732bebdb
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error08.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error08 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error08() : base(8) { }
+        public Error08(string hint) : base(8,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error09.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error09.cs
new file mode 100644
index 0000000000000000000000000000000000000000..58c6194b57c42ba3c150d5d02a549b36784a6bba
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error09.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error09 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error09() : base(9) { }
+        public Error09(string hint) : base(9,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error10.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error10.cs
new file mode 100644
index 0000000000000000000000000000000000000000..4676f87243aea3da589d49bacd25497a5b1fddc2
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error10.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error10 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error10() : base(10) { }
+        public Error10(string hint) : base(10,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error11.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error11.cs
new file mode 100644
index 0000000000000000000000000000000000000000..f4ce7afd1823f5bdfb410be787854f97aa5ba711
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error11.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error11 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error11() : base(11) { }
+        public Error11(string hint) : base(11,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error12.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error12.cs
new file mode 100644
index 0000000000000000000000000000000000000000..7a20d5126d60e30377d482c3819ea9fb7b92e858
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error12.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error12 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error12() : base(12) { }
+        public Error12(string hint) : base(12,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error13.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error13.cs
new file mode 100644
index 0000000000000000000000000000000000000000..5d9babfccf8c6ed9d48c5e0e6473c5f85842f6ed
--- /dev/null
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Errors/TransformationErrors/Error13.cs
@@ -0,0 +1,10 @@
+namespace Ueberpruefung.Errors
+{
+    class Error13 : Eingabeverwaltung.Metamodell.Error
+    {
+        public Error13() : base(13) { }
+        public Error13(string hint) : base(13,hint) { }
+
+        public override string Description() { throw new System.NotImplementedException(); }
+    }
+}
diff --git a/BewerterStrukturellerInduktion/Ueberpruefung/Ueberpruefer.cs b/BewerterStrukturellerInduktion/Ueberpruefung/Ueberpruefer.cs
index 26f33ac950c966c90af1de75502984cc38fcaa72..addacf9cf9da685e023536a78854e70258d5ff1f 100644
--- a/BewerterStrukturellerInduktion/Ueberpruefung/Ueberpruefer.cs
+++ b/BewerterStrukturellerInduktion/Ueberpruefung/Ueberpruefer.cs
@@ -4,6 +4,7 @@ using System.Collections.Generic;
 using Ueberpruefung.CheckTransformation;
 using Ueberpruefung.CheckInduction;
 using Eingabeverwaltung;
+using Ueberpruefung.Errors;
 
 namespace Ueberpruefung
 {
@@ -122,7 +123,7 @@ namespace Ueberpruefung
                         if (ts.accept(new CheckSubstitution_for_RuleEndTree()))                    // 10
                         {
                             // direction is wrong
-                            ts.errors.Add(new Error(8));
+                            ts.errors.Add(new Error08());
                             if (termPart_isSubTreeFrom_starTree)
                                 isProved &= ts.accept(new CheckResultTree_for_RuleEndTree());      // 12
                         }
@@ -147,13 +148,13 @@ namespace Ueberpruefung
                         {
                             if (termPart_match_RuleEndTree)
                             {
-                                ts.errors.Add(new Error(8));
+                                ts.errors.Add(new Error08());
                                 if (ts.accept(new CheckSubstitution_for_RuleEndTree())             // 10
                                     && termPart_isSubTreeFrom_starTree)
                                     isProved &= ts.accept(new CheckResultTree_for_RuleEndTree());  // 12
                                 else isProved = false;
                             }
-                            else { ts.errors.Add(new Error(7)); isProved = false; }
+                            else { ts.errors.Add(new Error07()); isProved = false; }
                         }
                     }
                     ts.accept(new CheckSubstitutionVariable_isUsedInRule());                       // 13
diff --git a/BewerterStrukturellerInduktion/Util.cs b/BewerterStrukturellerInduktion/Util.cs
index 63eafe3264309dd77c50e72bfba38430a4a963ec..2b7b469eceea8319b2df9f7775821f1be1663652 100644
--- a/BewerterStrukturellerInduktion/Util.cs
+++ b/BewerterStrukturellerInduktion/Util.cs
@@ -15,7 +15,7 @@ public static class Util
     {
         string result = "Errors: { ";
         foreach (Error err in errors)
-            result += err.errorCode + "(" + err.Output + ") ";
+            result += err.errorCode + "(" + err.Hint + ") ";
         result += "}";
         return result;
     }