Index: /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/IntervalConstraintView.Designer.cs
===================================================================
--- /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/IntervalConstraintView.Designer.cs	(revision 16773)
+++ /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/IntervalConstraintView.Designer.cs	(revision 16774)
@@ -24,4 +24,5 @@
     /// </summary>
     private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
       this.expressionLabel = new System.Windows.Forms.Label();
       this.definitionLabel = new System.Windows.Forms.Label();
@@ -39,9 +40,11 @@
       this.variableInput = new System.Windows.Forms.TextBox();
       this.numberderivationInput = new System.Windows.Forms.TextBox();
+      this.upperCombo = new System.Windows.Forms.ComboBox();
+      this.lowerCombo = new System.Windows.Forms.ComboBox();
+      this.derivationInput = new System.Windows.Forms.TextBox();
       this.groupBox1 = new System.Windows.Forms.GroupBox();
-      this.lowerCombo = new System.Windows.Forms.ComboBox();
-      this.upperCombo = new System.Windows.Forms.ComboBox();
-      this.derivationInput = new System.Windows.Forms.TextBox();
+      this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
       this.groupBox1.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
       this.SuspendLayout();
       // 
@@ -129,4 +132,6 @@
       // definitionInput
       // 
+      this.definitionInput.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
       this.definitionInput.Location = new System.Drawing.Point(111, 42);
       this.definitionInput.Name = "definitionInput";
@@ -136,11 +141,16 @@
       // expressionInput
       // 
+      this.expressionInput.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
       this.expressionInput.Location = new System.Drawing.Point(111, 17);
       this.expressionInput.Name = "expressionInput";
       this.expressionInput.Size = new System.Drawing.Size(473, 20);
       this.expressionInput.TabIndex = 10;
+      this.expressionInput.TextChanged += new System.EventHandler(this.expressionInput_TextChanged);
       // 
       // upperboundInput
       // 
+      this.upperboundInput.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
       this.upperboundInput.Location = new System.Drawing.Point(111, 93);
       this.upperboundInput.Name = "upperboundInput";
@@ -150,22 +160,66 @@
       // lowerboundInput
       // 
+      this.lowerboundInput.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
       this.lowerboundInput.Location = new System.Drawing.Point(111, 68);
       this.lowerboundInput.Name = "lowerboundInput";
       this.lowerboundInput.Size = new System.Drawing.Size(473, 20);
       this.lowerboundInput.TabIndex = 12;
+      this.lowerboundInput.TextChanged += new System.EventHandler(this.lowerboundInput_TextChanged);
       // 
       // variableInput
       // 
+      this.variableInput.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
       this.variableInput.Location = new System.Drawing.Point(111, 195);
       this.variableInput.Name = "variableInput";
       this.variableInput.Size = new System.Drawing.Size(473, 20);
       this.variableInput.TabIndex = 15;
+      this.variableInput.TextChanged += new System.EventHandler(this.variableInput_TextChanged);
       // 
       // numberderivationInput
       // 
+      this.numberderivationInput.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
       this.numberderivationInput.Location = new System.Drawing.Point(111, 221);
       this.numberderivationInput.Name = "numberderivationInput";
       this.numberderivationInput.Size = new System.Drawing.Size(473, 20);
       this.numberderivationInput.TabIndex = 17;
+      this.numberderivationInput.TextChanged += new System.EventHandler(this.numberderivationInput_TextChanged);
+      // 
+      // upperCombo
+      // 
+      this.upperCombo.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.upperCombo.FormattingEnabled = true;
+      this.upperCombo.Items.AddRange(new object[] {
+            "True",
+            "False"});
+      this.upperCombo.Location = new System.Drawing.Point(111, 146);
+      this.upperCombo.Name = "upperCombo";
+      this.upperCombo.Size = new System.Drawing.Size(473, 21);
+      this.upperCombo.TabIndex = 19;
+      // 
+      // lowerCombo
+      // 
+      this.lowerCombo.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.lowerCombo.FormattingEnabled = true;
+      this.lowerCombo.Items.AddRange(new object[] {
+            "True",
+            "False"});
+      this.lowerCombo.Location = new System.Drawing.Point(111, 119);
+      this.lowerCombo.Name = "lowerCombo";
+      this.lowerCombo.Size = new System.Drawing.Size(473, 21);
+      this.lowerCombo.TabIndex = 20;
+      // 
+      // derivationInput
+      // 
+      this.derivationInput.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.derivationInput.Location = new System.Drawing.Point(111, 170);
+      this.derivationInput.Name = "derivationInput";
+      this.derivationInput.Size = new System.Drawing.Size(473, 20);
+      this.derivationInput.TabIndex = 21;
       // 
       // groupBox1
@@ -197,32 +251,7 @@
       this.groupBox1.Text = "Interval Constraints Detail";
       // 
-      // lowerCombo
-      // 
-      this.lowerCombo.FormattingEnabled = true;
-      this.lowerCombo.Items.AddRange(new object[] {
-            "True",
-            "False"});
-      this.lowerCombo.Location = new System.Drawing.Point(111, 119);
-      this.lowerCombo.Name = "lowerCombo";
-      this.lowerCombo.Size = new System.Drawing.Size(473, 21);
-      this.lowerCombo.TabIndex = 20;
-      // 
-      // upperCombo
-      // 
-      this.upperCombo.FormattingEnabled = true;
-      this.upperCombo.Items.AddRange(new object[] {
-            "True",
-            "False"});
-      this.upperCombo.Location = new System.Drawing.Point(111, 146);
-      this.upperCombo.Name = "upperCombo";
-      this.upperCombo.Size = new System.Drawing.Size(473, 21);
-      this.upperCombo.TabIndex = 19;
-      // 
-      // derivationInput
-      // 
-      this.derivationInput.Location = new System.Drawing.Point(111, 170);
-      this.derivationInput.Name = "derivationInput";
-      this.derivationInput.Size = new System.Drawing.Size(473, 20);
-      this.derivationInput.TabIndex = 21;
+      // errorProvider
+      // 
+      this.errorProvider.ContainerControl = this;
       // 
       // IntervalConstraintView
@@ -234,4 +263,5 @@
       this.groupBox1.ResumeLayout(false);
       this.groupBox1.PerformLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
       this.ResumeLayout(false);
 
@@ -255,8 +285,9 @@
     private System.Windows.Forms.TextBox variableInput;
     private System.Windows.Forms.TextBox numberderivationInput;
+    private System.Windows.Forms.ComboBox upperCombo;
+    private System.Windows.Forms.ComboBox lowerCombo;
+    private System.Windows.Forms.TextBox derivationInput;
     private System.Windows.Forms.GroupBox groupBox1;
-    private System.Windows.Forms.ComboBox lowerCombo;
-    private System.Windows.Forms.ComboBox upperCombo;
-    private System.Windows.Forms.TextBox derivationInput;
+    private System.Windows.Forms.ErrorProvider errorProvider;
   }
 }
Index: /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/IntervalConstraintView.cs
===================================================================
--- /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/IntervalConstraintView.cs	(revision 16773)
+++ /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/IntervalConstraintView.cs	(revision 16774)
@@ -22,4 +22,5 @@
       set { base.Content = value; }
     }
+
     public IntervalConstraintView() {
       InitializeComponent();
@@ -27,4 +28,6 @@
       definitionInput.ReadOnly = true;
       derivationInput.ReadOnly = true;
+      if (derivationInput.Text == "False")
+        numberderivationInput.ReadOnly = true;
     }
 
@@ -46,6 +49,6 @@
       base.OnContentChanged();
       UpdateControls();
-      UpdateValues();
     }
+
 
     protected override void SetEnabledStateOfControls() {
@@ -78,6 +81,54 @@
     }
 
-    private void UpdateValues() {
+    private void expressionInput_TextChanged(object sender, EventArgs e) {
 
+    }
+
+    private void variableInput_TextChanged(object sender, EventArgs e) {
+      
+    }
+
+    private void numberderivationInput_TextChanged(object sender, EventArgs e) {
+      if (int.TryParse(numberderivationInput.Text, out var derivation)) {
+        if (derivation >= 0) { 
+          Content.NumberOfDerivation = derivation;
+          errorProvider.SetError(numberderivationInput, string.Empty);
+        } else {
+          errorProvider.SetError(numberderivationInput, "Invalid Input: Derivation must be positive!");
+        }
+      } else {
+        errorProvider.SetError(numberderivationInput, "Invalid Input: Derivation must be an integer!");
+      }
+    }
+
+    private void lowerboundInput_TextChanged(object sender, EventArgs e) {
+      var value = ParseDoubleValue(lowerboundInput.Text, lowerboundInput);
+      if (!double.IsNaN(value)) {
+        if (value <= Content.Interval.UpperBound) {
+          Content.Interval = new Interval(value, Content.Interval.UpperBound);
+          errorProvider.SetError(lowerboundInput, string.Empty);
+        } else {
+          errorProvider.SetError(lowerboundInput, "Invalid Input: Lowerbound must be smaller than Upperbound!");
+        }
+      }
+    }
+
+    private double ParseDoubleValue(string input, Control control) {
+      input = input.ToLower();
+      switch (input) {
+        case "inf.":
+        case "+inf.":
+          return double.PositiveInfinity;
+        case "-inf.":
+          return double.NegativeInfinity;
+        default: { 
+          if (double.TryParse(input, out var value))
+            return value;
+          else {
+            errorProvider.SetError(control, "Invalid Input: Value must be a double!");
+            return double.NaN;
+          }
+        }
+      }
     }
   }
Index: /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/IntervalConstraintView.resx
===================================================================
--- /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/IntervalConstraintView.resx	(revision 16773)
+++ /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/IntervalConstraintView.resx	(revision 16774)
@@ -118,3 +118,9 @@
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <metadata name="errorProvider.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>57</value>
+  </metadata>
 </root>
Index: /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/ParsedConstraintView.cs
===================================================================
--- /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/ParsedConstraintView.cs	(revision 16773)
+++ /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/ParsedConstraintView.cs	(revision 16774)
@@ -32,5 +32,5 @@
 
     private ItemList<IntervalConstraint> ParseConstraints(string input) {
-      ItemList<IntervalConstraint> constraints = new ItemList<IntervalConstraint>(IntervalConstraintsParser.ParseInput(input, Content.TargetVariable, Content.AllowedVariables));
+      ItemList<IntervalConstraint> constraints = new ItemList<IntervalConstraint>(IntervalConstraintsParser.ParseInput(input, Content.ProblemData.TargetVariable, Content.ProblemData.AllowedInputVariables));
       return constraints;
     }
Index: /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/ParsedConstraintView.designer.cs
===================================================================
--- /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/ParsedConstraintView.designer.cs	(revision 16773)
+++ /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/ParsedConstraintView.designer.cs	(revision 16774)
@@ -30,5 +30,4 @@
       this.parseBtn = new System.Windows.Forms.Button();
       this.label1 = new System.Windows.Forms.Label();
-      this.groupBox2 = new System.Windows.Forms.GroupBox();
       //this.constraintsOutput = new System.Windows.Forms.Label();
       this.constraintsOutput = new HeuristicLab.Core.Views.ItemListView<IntervalConstraint>();
@@ -39,5 +38,4 @@
       this.splitContainer1.SuspendLayout();
       this.groupBox1.SuspendLayout();
-      this.groupBox2.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -54,5 +52,5 @@
       // splitContainer1.Panel2
       // 
-      this.splitContainer1.Panel2.Controls.Add(this.groupBox2);
+      this.splitContainer1.Panel2.Controls.Add(this.constraintsOutput);
       this.splitContainer1.Size = new System.Drawing.Size(888, 629);
       this.splitContainer1.SplitterDistance = 296;
@@ -105,16 +103,4 @@
       this.label1.Text = resources.GetString("label1.Text");
       // 
-      // groupBox2
-      // 
-      this.groupBox2.Controls.Add(this.constraintsOutput);
-      this.groupBox2.Controls.Add(this.errorOutput);
-      this.groupBox2.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.groupBox2.Location = new System.Drawing.Point(0, 0);
-      this.groupBox2.Name = "groupBox2";
-      this.groupBox2.Size = new System.Drawing.Size(588, 629);
-      this.groupBox2.TabIndex = 0;
-      this.groupBox2.TabStop = false;
-      this.groupBox2.Text = "Parsed Constraints";
-      // 
       // constraintsOutput
       // 
@@ -149,5 +135,4 @@
       this.groupBox1.ResumeLayout(false);
       this.groupBox1.PerformLayout();
-      this.groupBox2.ResumeLayout(false);
       this.ResumeLayout(false);
 
@@ -161,5 +146,4 @@
     private System.Windows.Forms.Label label1;
     private System.Windows.Forms.TextBox constraintsInput;
-    private System.Windows.Forms.GroupBox groupBox2;
     private System.Windows.Forms.Label errorOutput;
 
Index: /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Parser/IntervalConstraint.cs
===================================================================
--- /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Parser/IntervalConstraint.cs	(revision 16773)
+++ /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Parser/IntervalConstraint.cs	(revision 16774)
@@ -18,5 +18,15 @@
     public bool InclusiveUpperBound { get; set; }
     public bool IsDerivation { get; set; }
-    public string Variable { get; set; }
+
+    private string variable;
+    public string Variable {
+      get => variable;
+      set {
+        if (value != variable) {
+          variable = value;
+          OnChanged(EventArgs.Empty);
+        }
+      }
+    }
     public int NumberOfDerivation { get; set; }
 
@@ -53,5 +63,5 @@
       this.IsDerivation = original.IsDerivation;
       this.Variable = original.Variable;
-      this.NumberOfDerivation = NumberOfDerivation;
+      this.NumberOfDerivation = original.NumberOfDerivation;
     }
 
Index: /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Parser/IntervalConstraintsParser.cs
===================================================================
--- /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Parser/IntervalConstraintsParser.cs	(revision 16773)
+++ /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Parser/IntervalConstraintsParser.cs	(revision 16774)
@@ -47,4 +47,5 @@
     }
 
+    
     public static IEnumerable<IntervalConstraint> ParseInput(string input, string target = "", IEnumerable<string> variables = null) {
       var lines = input.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None);
@@ -132,5 +133,4 @@
         } else if (trimmedLine.StartsWith("#") || trimmedLine == "") {
           //If it is a comment just continue without saving anything
-          //TODO maybe save comment too.
           continue;
         } else {
Index: /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionProblemData.cs
===================================================================
--- /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionProblemData.cs	(revision 16773)
+++ /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionProblemData.cs	(revision 16774)
@@ -192,5 +192,5 @@
 
       Parameters.Add(new FixedValueParameter<NamedIntervals>(VariableRangesParameterName, namedIntervals));
-      Parameters.Add(new FixedValueParameter<ParsedConstraint>(IntervalConstraintsParameterName, new ParsedConstraint(commentMessage, targetVariable, allowedInputVariables)));
+      Parameters.Add(new FixedValueParameter<ParsedConstraint>(IntervalConstraintsParameterName, new ParsedConstraint(commentMessage, this)));
       RegisterParameterEvents();
     }
Index: /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis/3.4/ParsedConstraint.cs
===================================================================
--- /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis/3.4/ParsedConstraint.cs	(revision 16773)
+++ /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis/3.4/ParsedConstraint.cs	(revision 16774)
@@ -28,15 +28,9 @@
     }
 
-    protected string targetVariable;
-    public string TargetVariable {
-      get => targetVariable;
-      set => targetVariable = value;
-    }
+    protected IRegressionProblemData problemData;
 
-    protected IEnumerable<string> allowedVariables;
-
-    public IEnumerable<string> AllowedVariables {
-      get => allowedVariables;
-      set => allowedVariables = value;
+    public IRegressionProblemData ProblemData {
+      get => problemData;
+      set => problemData = value;
     }
 
@@ -57,9 +51,8 @@
     }
 
-    public ParsedConstraint(string input, string targetVariable, IEnumerable<string> allowedVariables) {
+    public ParsedConstraint(string input, IRegressionProblemData problemData) {
       this.input = input;
       this.constraints = new ItemList<IntervalConstraint>();
-      this.targetVariable = targetVariable;
-      this.allowedVariables = allowedVariables;
+      this.problemData = problemData;
     }
 
