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 16775)
+++ /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/IntervalConstraintView.Designer.cs	(revision 16776)
@@ -25,5 +25,4 @@
     private void InitializeComponent() {
       this.components = new System.ComponentModel.Container();
-      this.expressionLabel = new System.Windows.Forms.Label();
       this.definitionLabel = new System.Windows.Forms.Label();
       this.lowerboundLabel = new System.Windows.Forms.Label();
@@ -35,26 +34,18 @@
       this.numberderivationLabel = new System.Windows.Forms.Label();
       this.definitionInput = new System.Windows.Forms.TextBox();
-      this.expressionInput = new System.Windows.Forms.TextBox();
       this.upperboundInput = new System.Windows.Forms.TextBox();
       this.lowerboundInput = new System.Windows.Forms.TextBox();
       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.inclupperboundInput = new System.Windows.Forms.CheckBox();
+      this.incllowerboundInput = new System.Windows.Forms.CheckBox();
+      this.derivationInput = new System.Windows.Forms.CheckBox();
+      this.expressionLabel = new System.Windows.Forms.Label();
+      this.expressionInput = 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();
-      // 
-      // expressionLabel
-      // 
-      this.expressionLabel.AutoSize = true;
-      this.expressionLabel.Location = new System.Drawing.Point(11, 20);
-      this.expressionLabel.Name = "expressionLabel";
-      this.expressionLabel.Size = new System.Drawing.Size(61, 13);
-      this.expressionLabel.TabIndex = 0;
-      this.expressionLabel.Text = "Expression:";
       // 
       // definitionLabel
@@ -139,14 +130,4 @@
       this.definitionInput.TabIndex = 9;
       // 
-      // 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
       // 
@@ -157,4 +138,6 @@
       this.upperboundInput.Size = new System.Drawing.Size(473, 20);
       this.upperboundInput.TabIndex = 11;
+      this.upperboundInput.Validating += new System.ComponentModel.CancelEventHandler(this.upperboundInput_Validating);
+      this.upperboundInput.Validated += new System.EventHandler(this.upperboundInput_Validated);
       // 
       // lowerboundInput
@@ -166,5 +149,6 @@
       this.lowerboundInput.Size = new System.Drawing.Size(473, 20);
       this.lowerboundInput.TabIndex = 12;
-      this.lowerboundInput.TextChanged += new System.EventHandler(this.lowerboundInput_TextChanged);
+      this.lowerboundInput.Validating += new System.ComponentModel.CancelEventHandler(this.lowerboundInput_Validating);
+      this.lowerboundInput.Validated += new System.EventHandler(this.lowerboundInput_Validated);
       // 
       // variableInput
@@ -176,5 +160,4 @@
       this.variableInput.Size = new System.Drawing.Size(473, 20);
       this.variableInput.TabIndex = 15;
-      this.variableInput.TextChanged += new System.EventHandler(this.variableInput_TextChanged);
       // 
       // numberderivationInput
@@ -184,53 +167,20 @@
       this.numberderivationInput.Location = new System.Drawing.Point(111, 221);
       this.numberderivationInput.Name = "numberderivationInput";
-      this.numberderivationInput.Size = new System.Drawing.Size(473, 20);
+      this.numberderivationInput.Size = new System.Drawing.Size(470, 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;
+      this.numberderivationInput.Validating += new System.ComponentModel.CancelEventHandler(this.numberderivationInput_Validating);
+      this.numberderivationInput.Validated += new System.EventHandler(this.numberderivationInput_Validated);
       // 
       // groupBox1
       // 
+      this.groupBox1.Controls.Add(this.expressionInput);
+      this.groupBox1.Controls.Add(this.expressionLabel);
+      this.groupBox1.Controls.Add(this.inclupperboundInput);
+      this.groupBox1.Controls.Add(this.incllowerboundInput);
       this.groupBox1.Controls.Add(this.derivationInput);
-      this.groupBox1.Controls.Add(this.lowerCombo);
-      this.groupBox1.Controls.Add(this.upperCombo);
       this.groupBox1.Controls.Add(this.numberderivationInput);
       this.groupBox1.Controls.Add(this.variableInput);
       this.groupBox1.Controls.Add(this.lowerboundInput);
       this.groupBox1.Controls.Add(this.upperboundInput);
-      this.groupBox1.Controls.Add(this.expressionInput);
       this.groupBox1.Controls.Add(this.definitionInput);
       this.groupBox1.Controls.Add(this.numberderivationLabel);
@@ -242,5 +192,4 @@
       this.groupBox1.Controls.Add(this.lowerboundLabel);
       this.groupBox1.Controls.Add(this.definitionLabel);
-      this.groupBox1.Controls.Add(this.expressionLabel);
       this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;
       this.groupBox1.Location = new System.Drawing.Point(0, 0);
@@ -251,7 +200,55 @@
       this.groupBox1.Text = "Interval Constraints Detail";
       // 
+      // inclupperboundInput
+      // 
+      this.inclupperboundInput.AutoSize = true;
+      this.inclupperboundInput.Location = new System.Drawing.Point(111, 146);
+      this.inclupperboundInput.Name = "inclupperboundInput";
+      this.inclupperboundInput.Size = new System.Drawing.Size(15, 14);
+      this.inclupperboundInput.TabIndex = 23;
+      this.inclupperboundInput.UseVisualStyleBackColor = true;
+      this.inclupperboundInput.CheckedChanged += new System.EventHandler(this.inclupperboundInput_CheckedChanged);
+      // 
+      // incllowerboundInput
+      // 
+      this.incllowerboundInput.AutoSize = true;
+      this.incllowerboundInput.Location = new System.Drawing.Point(111, 122);
+      this.incllowerboundInput.Name = "incllowerboundInput";
+      this.incllowerboundInput.Size = new System.Drawing.Size(15, 14);
+      this.incllowerboundInput.TabIndex = 22;
+      this.incllowerboundInput.UseVisualStyleBackColor = true;
+      this.incllowerboundInput.CheckedChanged += new System.EventHandler(this.incllowerboundInput_CheckedChanged);
+      // 
+      // derivationInput
+      // 
+      this.derivationInput.AutoSize = true;
+      this.derivationInput.Location = new System.Drawing.Point(111, 173);
+      this.derivationInput.Name = "derivationInput";
+      this.derivationInput.Size = new System.Drawing.Size(15, 14);
+      this.derivationInput.TabIndex = 21;
+      this.derivationInput.UseVisualStyleBackColor = true;
+      // 
+      // expressionLabel
+      // 
+      this.expressionLabel.AutoSize = true;
+      this.expressionLabel.Location = new System.Drawing.Point(11, 20);
+      this.expressionLabel.Name = "expressionLabel";
+      this.expressionLabel.Size = new System.Drawing.Size(61, 13);
+      this.expressionLabel.TabIndex = 24;
+      this.expressionLabel.Text = "Expression:";
+      // 
+      // 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(108, 17);
+      this.expressionInput.Name = "expressionInput";
+      this.expressionInput.Size = new System.Drawing.Size(473, 20);
+      this.expressionInput.TabIndex = 25;
+      // 
       // errorProvider
       // 
       this.errorProvider.ContainerControl = this;
+      this.errorProvider.RightToLeft = true;
       // 
       // IntervalConstraintView
@@ -269,6 +266,4 @@
 
     #endregion
-
-    private System.Windows.Forms.Label expressionLabel;
     private System.Windows.Forms.Label definitionLabel;
     private System.Windows.Forms.Label lowerboundLabel;
@@ -280,13 +275,14 @@
     private System.Windows.Forms.Label numberderivationLabel;
     private System.Windows.Forms.TextBox definitionInput;
-    private System.Windows.Forms.TextBox expressionInput;
     private System.Windows.Forms.TextBox upperboundInput;
     private System.Windows.Forms.TextBox lowerboundInput;
     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.CheckBox derivationInput;
+    private System.Windows.Forms.CheckBox inclupperboundInput;
+    private System.Windows.Forms.CheckBox incllowerboundInput;
+    private System.Windows.Forms.TextBox expressionInput;
+    private System.Windows.Forms.Label expressionLabel;
     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 16775)
+++ /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/IntervalConstraintView.cs	(revision 16776)
@@ -19,6 +19,6 @@
 
     public new IntervalConstraint Content {
-      get { return (IntervalConstraint)base.Content; }
-      set { base.Content = value; }
+      get => (IntervalConstraint) base.Content;
+      set => base.Content = value;
     }
 
@@ -27,21 +27,8 @@
       expressionInput.ReadOnly = true;
       definitionInput.ReadOnly = true;
-      derivationInput.ReadOnly = true;
-      if (derivationInput.Text == "False")
+      derivationInput.Enabled = false;
+      derivationInput.Checked = Content?.IsDerivation ?? false;
+      if (Content != null && !Content.IsDerivation)
         numberderivationInput.ReadOnly = true;
-    }
-
-    protected override void RegisterContentEvents() {
-      base.RegisterContentEvents();
-      Content.Changed += new EventHandler(Content_Changed);
-    }
-
-    protected override void DeregisterContentEvents() {
-      base.DeregisterContentEvents();
-      Content.Changed -= new EventHandler(Content_Changed);
-    }
-
-    private void Content_Changed(object sender, EventArgs e) {
-      UpdateControls();
     }
 
@@ -57,60 +44,7 @@
     }
 
-    private void UpdateControls() {
-      if (Content == null) {
-        expressionInput.Text = string.Empty;
-        definitionInput.Text = string.Empty;
-        lowerboundInput.Text = string.Empty;
-        upperboundInput.Text = string.Empty;
-        lowerCombo.SelectedItem = null;
-        lowerCombo.SelectedText = "--Nothing set--";
-        upperCombo.SelectedItem = null;
-        upperCombo.SelectedText = "--Nothing set--";
-      } else {
-        expressionInput.Text = Content.Expression;
-        definitionInput.Text = Content.Definition;
-        lowerboundInput.Text = Content.Interval.LowerBound.ToString(CultureInfo.InvariantCulture);
-        upperboundInput.Text = Content.Interval.UpperBound.ToString(CultureInfo.InvariantCulture);
-        lowerCombo.SelectedIndex = lowerCombo.FindString(Content.InclusiveLowerBound ? "True" : "False");
-        upperCombo.SelectedIndex = upperCombo.FindString(Content.InclusiveUpperBound ? "True" : "False");
-        derivationInput.Text = Content.IsDerivation ? "True" : "False";
-        variableInput.Text = Content.Variable;
-        numberderivationInput.Text = Content.NumberOfDerivation.ToString();
-      }
-      SetEnabledStateOfControls();
-    }
-
-    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!");
-        }
-      }
-    }
+
+
+    #region helpers
 
     private double ParseDoubleValue(string input, Control control) {
@@ -119,9 +53,11 @@
         case "inf.":
         case "+inf.":
+        case "Infinity":
           return double.PositiveInfinity;
         case "-inf.":
+        case "-Infinity":
           return double.NegativeInfinity;
-        default: { 
-          if (double.TryParse(input, out var value))
+        default: {
+          if (double.TryParse(input, NumberStyles.Any, CultureInfo.InvariantCulture, out var value))
             return value;
           else {
@@ -132,4 +68,140 @@
       }
     }
+
+    private void UpdateControls() {
+      if (Content == null) {
+        expressionInput.Text = string.Empty;
+        lowerboundInput.Text = string.Empty;
+        upperboundInput.Text = string.Empty;
+        incllowerboundInput.Checked = true;
+        inclupperboundInput.Checked = true;
+      } else {
+        expressionInput.Text = Content.Expression;
+        definitionInput.Text = Content.Definition;
+        lowerboundInput.Text = Content.Interval.LowerBound.ToString(CultureInfo.InvariantCulture);
+        upperboundInput.Text = Content.Interval.UpperBound.ToString(CultureInfo.InvariantCulture);
+        incllowerboundInput.Checked = Content.InclusiveLowerBound;
+        inclupperboundInput.Checked = Content.InclusiveUpperBound;
+        derivationInput.Checked = Content.IsDerivation;
+        variableInput.Text = Content.Variable;
+        numberderivationInput.Text = Content.NumberOfDerivation.ToString();
+      }
+      SetEnabledStateOfControls();
+    }
+
+    private void UpdateExpression() {
+      var expression = "";
+
+      if (!Content.IsDerivation) {
+        expression = string.Format("{0} in {1}{2} .. {3}{4}", 
+          Content.Variable, 
+          (Content.InclusiveLowerBound) ? "[" : "]", 
+          Content.Interval.LowerBound,
+          Content.Interval.UpperBound,
+          (Content.InclusiveUpperBound) ? "]" : "[");
+      } else {
+        expression = string.Format("\u2202Target/\u2202{0} in {1}{2} .. {3}{4}",
+          Content.Variable,
+          (Content.InclusiveLowerBound) ? "[" : "]",
+          Content.Interval.LowerBound,
+          Content.Interval.UpperBound,
+          (Content.InclusiveUpperBound) ? "]" : "[");
+      }
+
+      Content.Expression = expression;
+      Content.Name = expression;
+      UpdateControls();
+    }
+
+    #endregion
+
+    #region content event handlers
+
+    private void numberderivationInput_Validating(object sender, CancelEventArgs e) {
+      if (int.TryParse(numberderivationInput.Text, out var derivation)) {
+        if (derivation >= 0) {
+          errorProvider.SetError(numberderivationInput, string.Empty);
+          e.Cancel = false;
+        } else {
+          errorProvider.SetError(numberderivationInput, "Invalid Input: Derivation must be positive!");
+          e.Cancel = true;
+        }
+      } else {
+        errorProvider.SetError(numberderivationInput, "Invalid Input: Derivation must be an integer!");
+        e.Cancel = true;
+      }
+    }
+
+    private void numberderivationInput_Validated(object sender, EventArgs e) {
+      if (int.TryParse(numberderivationInput.Text, out var derivation)) {
+        Content.NumberOfDerivation = derivation;
+        UpdateExpression();
+      }
+    }
+
+    private void lowerboundInput_Validating(object sender, CancelEventArgs e) {
+      var value = ParseDoubleValue(lowerboundInput.Text, lowerboundInput);
+      if (!double.IsNaN(value)) {
+        if (value <= Content.Interval.UpperBound) {
+          errorProvider.SetError(lowerboundInput, string.Empty);
+          e.Cancel = false;
+        } else {
+          errorProvider.SetError(lowerboundInput, "Invalid Input: Lowerbound must be smaller than Upperbound!");
+          e.Cancel = true;
+        }
+      } else {
+        e.Cancel = true;
+      }
+    }
+
+    private void lowerboundInput_Validated(object sender, EventArgs e) {
+      var value = ParseDoubleValue(lowerboundInput.Text, lowerboundInput);
+      if (!double.IsNaN(value)) {
+        Content.Interval = new Interval(value, Content.Interval.UpperBound);
+        UpdateExpression();
+      }
+    }
+
+    private void upperboundInput_Validating(object sender, CancelEventArgs e) {
+      var value = ParseDoubleValue(upperboundInput.Text, upperboundInput);
+      if (!double.IsNaN(value)) {
+        if (value >= Content.Interval.LowerBound) {
+          errorProvider.SetError(upperboundInput, string.Empty);
+          e.Cancel = false;
+        } else {
+          errorProvider.SetError(lowerboundInput, "Invalid Input: Upperbound must be bigger than Lowerbound!");
+          e.Cancel = true;
+        }
+      } else {
+        e.Cancel = true;
+      }
+    }
+
+    private void upperboundInput_Validated(object sender, EventArgs e) {
+      var value = ParseDoubleValue(upperboundInput.Text, upperboundInput);
+      if (!double.IsNaN(value)) {
+        Content.Interval = new Interval(Content.Interval.LowerBound, value);
+        UpdateExpression();
+      }
+    }
+
+    private void incllowerboundInput_CheckedChanged(object sender, EventArgs e) {
+      if (Content.InclusiveLowerBound != incllowerboundInput.Checked) {
+        Content.InclusiveLowerBound = incllowerboundInput.Checked;
+        UpdateExpression();
+      }
+      
+      
+    }
+
+    private void inclupperboundInput_CheckedChanged(object sender, EventArgs e) {
+      if (Content.InclusiveUpperBound != incllowerboundInput.Checked) { 
+        Content.InclusiveUpperBound = incllowerboundInput.Checked;
+        UpdateExpression();
+      }
+    }
+    #endregion
+
+
   }
 }
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 16775)
+++ /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/ParsedConstraintView.cs	(revision 16776)
@@ -9,5 +9,5 @@
   [Content(typeof(ParsedConstraint), true)]
   public partial class ParsedConstraintView : AsynchronousContentView {
-
+    private CheckedItemList<IntervalConstraint> intervalConstraints;
     public new ParsedConstraint Content {
       get => (ParsedConstraint)base.Content;
@@ -18,19 +18,18 @@
       InitializeComponent();
       errorOutput.Text = "";
+      intervalConstraints = new CheckedItemList<IntervalConstraint>();
+    }
+
+    private void Content_Changed(object sender, EventArgs e) {
+      constraintsOutput.Content = intervalConstraints;
     }
 
     protected override void OnContentChanged() {
       base.OnContentChanged();
-      if (Content == null) {
-        constraintsInput.Text = string.Empty;
-        errorOutput.Text = "";
-      } else {
-        constraintsInput.Text = Content.Input;
-        constraintsOutput.Content = new ItemList<IntervalConstraint>(Content.Constraints) ?? new ItemList<IntervalConstraint>();
-      }
+      UpdateControl();
     }
 
-    private ItemList<IntervalConstraint> ParseConstraints(string input) {
-      ItemList<IntervalConstraint> constraints = new ItemList<IntervalConstraint>(IntervalConstraintsParser.ParseInput(input, Content.ProblemData.TargetVariable, Content.ProblemData.AllowedInputVariables));
+    private CheckedItemList<IntervalConstraint> ParseConstraints(string input) {
+      CheckedItemList<IntervalConstraint> constraints = new CheckedItemList<IntervalConstraint>(IntervalConstraintsParser.ParseInput(input, Content.ProblemData.TargetVariable, Content.ProblemData.AllowedInputVariables));
       return constraints;
     }
@@ -48,7 +47,30 @@
     }
 
+    private void UpdateControl() {
+      if (Content == null) {
+        ClearConstraints();
+        constraintsInput.Text = string.Empty;
+        errorOutput.Text = string.Empty;
+        constraintsOutput.Content = intervalConstraints;
+      } else {
+        constraintsInput.Text = Content.Input;
+        foreach (var constraint in Content.Constraints) {
+          constraint.Changed += new EventHandler(Content_Changed);
+          intervalConstraints.Add(constraint, true);
+        }
+      }
+    }
+
     private void constraintsInput_TextChanged(object sender, EventArgs e) {
       errorOutput.Text = "Unparsed changes! Press parse button to save changes.";
     }
+
+    private void ClearConstraints() {
+      foreach (var constraint in intervalConstraints) {
+        constraint.Changed -= new EventHandler(Content_Changed);
+      }
+      intervalConstraints.Clear();
+    }
+
   }
 }
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 16775)
+++ /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Views/3.4/ParsedConstraintView.designer.cs	(revision 16776)
@@ -31,5 +31,5 @@
       this.label1 = new System.Windows.Forms.Label();
       //this.constraintsOutput = new System.Windows.Forms.Label();
-      this.constraintsOutput = new HeuristicLab.Core.Views.ItemListView<IntervalConstraint>();
+      this.constraintsOutput = new HeuristicLab.Core.Views.CheckedItemListView<IntervalConstraint>();
       this.errorOutput = new System.Windows.Forms.Label();
       ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
@@ -149,5 +149,5 @@
 
     //private System.Windows.Forms.Label constraintsOutput;
-    private HeuristicLab.Core.Views.ItemListView<IntervalConstraint> constraintsOutput;
+    private HeuristicLab.Core.Views.CheckedItemListView<IntervalConstraint> constraintsOutput;
   }
 }
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 16775)
+++ /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Parser/IntervalConstraint.cs	(revision 16776)
@@ -12,8 +12,26 @@
   [Item("Interval Constraint", "Constraint on intervals.")]
   public class IntervalConstraint : NamedItem {
-    public string Expression { get; set; }
+    private string expression;
+    public string Expression {
+      get => expression;
+      set {
+        if (value != expression) {
+          expression = value;
+        }
+      }
+    }
     public string Definition { get; set; }
     public Interval Interval { get; set; }
-    public bool InclusiveLowerBound { get; set; }
+    private bool inclusiveLowerBound;
+
+    public bool InclusiveLowerBound {
+      get => inclusiveLowerBound;
+      set {
+        if (value != inclusiveLowerBound) {
+          inclusiveLowerBound = value;
+          OnChanged(EventArgs.Empty);
+        }
+      }
+    }
     public bool InclusiveUpperBound { get; set; }
     public bool IsDerivation { get; set; }
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 16775)
+++ /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionProblemData.cs	(revision 16776)
@@ -181,5 +181,5 @@
                            "#double: upperbound of the interval" + Environment.NewLine +
                            "#bracket: open or closed regarding to open or closed interval definition" + Environment.NewLine +
-                           "#Y2 in [0 .. 1.2]" + Environment.NewLine + Environment.NewLine +
+                           "#Target:Y2 in [0 .. 1.2]" + Environment.NewLine + Environment.NewLine +
                            "#Constraints on model parameters:" + Environment.NewLine +
                            "#derivation symbol: d or ∂" + Environment.NewLine +
Index: /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis/3.4/ParsedConstraint.cs
===================================================================
--- /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis/3.4/ParsedConstraint.cs	(revision 16775)
+++ /branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis/3.4/ParsedConstraint.cs	(revision 16776)
@@ -25,6 +25,9 @@
     public IEnumerable<IntervalConstraint> Constraints {
       get => constraints;
-      set => constraints = value;
-    }
+      set { 
+        constraints = value;
+        OnChanged(EventArgs.Empty);
+      }
+  }
 
     protected IRegressionProblemData problemData;
@@ -38,5 +41,5 @@
       : base(original, cloner) {
       this.input = original.Input ?? string.Empty;
-      this.constraints = original.Constraints ?? new ItemList<IntervalConstraint>();
+      this.constraints = original.Constraints ?? new CheckedItemList<IntervalConstraint>();
       
     }
@@ -48,10 +51,10 @@
     public ParsedConstraint() {
       this.input = string.Empty;
-      this.constraints = new ItemList<IntervalConstraint>();
+      this.constraints = new CheckedItemList<IntervalConstraint>();
     }
 
     public ParsedConstraint(string input, IRegressionProblemData problemData) {
       this.input = input;
-      this.constraints = new ItemList<IntervalConstraint>();
+      this.constraints = new CheckedItemList<IntervalConstraint>();
       this.problemData = problemData;
     }
@@ -61,4 +64,11 @@
       this.constraints = constraints;
     }
+
+    public event EventHandler Changed;
+    protected virtual void OnChanged(EventArgs e) {
+      EventHandler handlers = Changed;
+      if (handlers != null)
+        handlers(this, e);
+    }
   }
 }
