Index: branches/3140_NumberSymbol/HeuristicLab.Algorithms.DataAnalysis/3.4/GBM/GradientBoostingRegressionAlgorithm.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Algorithms.DataAnalysis/3.4/GBM/GradientBoostingRegressionAlgorithm.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Algorithms.DataAnalysis/3.4/GBM/GradientBoostingRegressionAlgorithm.cs	(revision 18100)
@@ -417,5 +417,5 @@
       var addNode = new Addition().CreateTreeNode();
       var mulNode = new Multiplication().CreateTreeNode();
-      var scaleNode = (ConstantTreeNode)new Constant().CreateTreeNode(); // all models are scaled using the same nu
+      var scaleNode = (NumberTreeNode)new Number().CreateTreeNode(); // all models are scaled using the same nu
       scaleNode.Value = nu;
 
Index: branches/3140_NumberSymbol/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/RegressionTreeModel.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/RegressionTreeModel.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/RegressionTreeModel.cs	(revision 18100)
@@ -230,8 +230,8 @@
       var startSy = new StartSymbol();
       var varCondSy = new VariableCondition() { IgnoreSlope = true };
-      var constSy = new Constant();
+      var numSy = new Number();
 
       var startNode = startSy.CreateTreeNode();
-      startNode.AddSubtree(CreateSymbolicRegressionTreeRecursive(tree, 0, varCondSy, constSy));
+      startNode.AddSubtree(CreateSymbolicRegressionTreeRecursive(tree, 0, varCondSy, numSy));
       var rootNode = rootSy.CreateTreeNode();
       rootNode.AddSubtree(startNode);
@@ -239,8 +239,8 @@
     }
 
-    private ISymbolicExpressionTreeNode CreateSymbolicRegressionTreeRecursive(TreeNode[] treeNodes, int nodeIdx, VariableCondition varCondSy, Constant constSy) {
+    private ISymbolicExpressionTreeNode CreateSymbolicRegressionTreeRecursive(TreeNode[] treeNodes, int nodeIdx, VariableCondition varCondSy, Number constSy) {
       var curNode = treeNodes[nodeIdx];
       if (curNode.VarName == TreeNode.NO_VARIABLE) {
-        var node = (ConstantTreeNode)constSy.CreateTreeNode();
+        var node = (NumberTreeNode)constSy.CreateTreeNode();
         node.Value = curNode.Val;
         return node;
Index: branches/3140_NumberSymbol/HeuristicLab.Algorithms.DataAnalysis/3.4/NonlinearRegression/NonlinearRegression.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Algorithms.DataAnalysis/3.4/NonlinearRegression/NonlinearRegression.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Algorithms.DataAnalysis/3.4/NonlinearRegression/NonlinearRegression.cs	(revision 18100)
@@ -123,5 +123,5 @@
       : base() {
       Problem = new RegressionProblem();
-      Parameters.Add(new FixedValueParameter<StringValue>(ModelStructureParameterName, "The function for which the parameters must be fit (only numeric constants are tuned).", new StringValue("1.0 * x*x + 0.0")));
+      Parameters.Add(new FixedValueParameter<StringValue>(ModelStructureParameterName, "The function for which the parameters must be fit (only numeric constants are tuned).", new StringValue("<num> * x*x + 0.0")));
       Parameters.Add(new FixedValueParameter<IntValue>(IterationsParameterName, "The maximum number of iterations for constants optimization.", new IntValue(200)));
       Parameters.Add(new FixedValueParameter<IntValue>(RestartsParameterName, "The number of independent random restarts (>0)", new IntValue(10)));
@@ -267,5 +267,5 @@
       // initialize constants randomly
       if (rand != null) {
-        foreach (var node in tree.IterateNodesPrefix().OfType<ConstantTreeNode>()) {
+        foreach (var node in tree.IterateNodesPrefix().OfType<NumberTreeNode>()) {
           double f = Math.Exp(NormalDistributedRandom.NextDouble(rand, 0, 1));
           double s = rand.NextDouble() < 0.5 ? -1 : 1;
Index: branches/3140_NumberSymbol/HeuristicLab.Algorithms.DataAnalysis/3.4/RandomForest/RandomForestModel.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Algorithms.DataAnalysis/3.4/RandomForest/RandomForestModel.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Algorithms.DataAnalysis/3.4/RandomForest/RandomForestModel.cs	(revision 18100)
@@ -220,8 +220,8 @@
       }
 
-      var constSy = new Constant();
+      var numSy = new Number();
       var varCondSy = new VariableCondition() { IgnoreSlope = true };
 
-      var node = CreateRegressionTreeRec(rf.innerobj.trees, offset, offset + 1, constSy, varCondSy);
+      var node = CreateRegressionTreeRec(rf.innerobj.trees, offset, offset + 1, numSy, varCondSy);
 
       var startNode = new StartSymbol().CreateTreeNode();
@@ -232,5 +232,5 @@
     }
 
-    private ISymbolicExpressionTreeNode CreateRegressionTreeRec(double[] trees, int offset, int k, Constant constSy, VariableCondition varCondSy) {
+    private ISymbolicExpressionTreeNode CreateRegressionTreeRec(double[] trees, int offset, int k, Number numSy, VariableCondition varCondSy) {
 
       // alglib source for evaluation of one tree (dfprocessinternal)
@@ -262,7 +262,7 @@
 
       if ((double)(trees[k]) == (double)(-1)) {
-        var constNode = (ConstantTreeNode)constSy.CreateTreeNode();
-        constNode.Value = trees[k + 1];
-        return constNode;
+        var numNode = (NumberTreeNode)numSy.CreateTreeNode();
+        numNode.Value = trees[k + 1];
+        return numNode;
       } else {
         var condNode = (VariableConditionTreeNode)varCondSy.CreateTreeNode();
@@ -271,6 +271,6 @@
         condNode.Slope = double.PositiveInfinity;
 
-        var left = CreateRegressionTreeRec(trees, offset, k + 3, constSy, varCondSy);
-        var right = CreateRegressionTreeRec(trees, offset, offset + (int)Math.Round(trees[k + 2]), constSy, varCondSy);
+        var left = CreateRegressionTreeRec(trees, offset, k + 3, numSy, varCondSy);
+        var right = CreateRegressionTreeRec(trees, offset, offset + (int)Math.Round(trees[k + 2]), numSy, varCondSy);
 
         condNode.AddSubtree(left); // not 100% correct because interpreter uses: if(x <= thres) left() else right() and RF uses if(x < thres) left() else right() (see above)
Index: branches/3140_NumberSymbol/HeuristicLab.Algorithms.DataAnalysis/3.4/RandomForest/RandomForestModelAlglib_3_7.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Algorithms.DataAnalysis/3.4/RandomForest/RandomForestModelAlglib_3_7.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Algorithms.DataAnalysis/3.4/RandomForest/RandomForestModelAlglib_3_7.cs	(revision 18100)
@@ -220,8 +220,8 @@
       }
 
-      var constSy = new Constant();
+      var numSy = new Number();
       var varCondSy = new VariableCondition() { IgnoreSlope = true };
 
-      var node = CreateRegressionTreeRec(rf.innerobj.trees, offset, offset + 1, constSy, varCondSy);
+      var node = CreateRegressionTreeRec(rf.innerobj.trees, offset, offset + 1, numSy, varCondSy);
 
       var startNode = new StartSymbol().CreateTreeNode();
@@ -232,5 +232,5 @@
     }
 
-    private ISymbolicExpressionTreeNode CreateRegressionTreeRec(double[] trees, int offset, int k, Constant constSy, VariableCondition varCondSy) {
+    private ISymbolicExpressionTreeNode CreateRegressionTreeRec(double[] trees, int offset, int k, Number constSy, VariableCondition varCondSy) {
 
       // alglib source for evaluation of one tree (dfprocessinternal)
@@ -262,7 +262,7 @@
 
       if ((double)(trees[k]) == (double)(-1)) {
-        var constNode = (ConstantTreeNode)constSy.CreateTreeNode();
-        constNode.Value = trees[k + 1];
-        return constNode;
+        var numNode = (NumberTreeNode)constSy.CreateTreeNode();
+        numNode.Value = trees[k + 1];
+        return numNode;
       } else {
         var condNode = (VariableConditionTreeNode)varCondSy.CreateTreeNode();
Index: branches/3140_NumberSymbol/HeuristicLab.Algorithms.DataAnalysis/3.4/RandomForest/RandomForestModelFull.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Algorithms.DataAnalysis/3.4/RandomForest/RandomForestModelFull.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Algorithms.DataAnalysis/3.4/RandomForest/RandomForestModelFull.cs	(revision 18100)
@@ -199,8 +199,8 @@
       }
 
-      var constSy = new Constant();
+      var numSy = new Number();
       var varCondSy = new VariableCondition() { IgnoreSlope = true };
 
-      var node = CreateRegressionTreeRec(rf.innerobj.trees, offset, offset + 1, constSy, varCondSy);
+      var node = CreateRegressionTreeRec(rf.innerobj.trees, offset, offset + 1, numSy, varCondSy);
 
       var startNode = new StartSymbol().CreateTreeNode();
@@ -211,5 +211,5 @@
     }
 
-    private ISymbolicExpressionTreeNode CreateRegressionTreeRec(double[] trees, int offset, int k, Constant constSy, VariableCondition varCondSy) {
+    private ISymbolicExpressionTreeNode CreateRegressionTreeRec(double[] trees, int offset, int k, Number constSy, VariableCondition varCondSy) {
 
       // alglib source for evaluation of one tree (dfprocessinternal)
@@ -241,7 +241,7 @@
 
       if ((double)(trees[k]) == (double)(-1)) {
-        var constNode = (ConstantTreeNode)constSy.CreateTreeNode();
-        constNode.Value = trees[k + 1];
-        return constNode;
+        var numNode = (NumberTreeNode)constSy.CreateTreeNode();
+        numNode.Value = trees[k + 1];
+        return numNode;
       } else {
         var condNode = (VariableConditionTreeNode)varCondSy.CreateTreeNode();
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Classification/3.4/SymbolicClassificationPruningOperator.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Classification/3.4/SymbolicClassificationPruningOperator.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Classification/3.4/SymbolicClassificationPruningOperator.cs	(revision 18100)
@@ -101,5 +101,5 @@
       for (int i = 0; i < nodes.Count; ++i) {
         var node = nodes[i];
-        if (node is ConstantTreeNode) continue;
+        if (node is NumberTreeNode) continue;
 
         double impactValue, replacementValue, newQualityForImpactsCalculation;
@@ -109,8 +109,8 @@
         if (!pruneOnlyZeroImpactNodes && impactValue > nodeImpactThreshold) continue;
 
-        var constantNode = (ConstantTreeNode)node.Grammar.GetSymbol("Constant").CreateTreeNode();
-        constantNode.Value = replacementValue;
+        var numberNode = (NumberTreeNode)node.Grammar.GetSymbol("Number").CreateTreeNode();
+        numberNode.Value = replacementValue;
 
-        ReplaceWithConstant(node, constantNode);
+        ReplaceWithConstant(node, numberNode);
         i += node.GetLength() - 1; // skip subtrees under the node that was folded
 
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression.Views/3.4/SymbolicRegressionSolutionResponseFunctionView.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression.Views/3.4/SymbolicRegressionSolutionResponseFunctionView.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression.Views/3.4/SymbolicRegressionSolutionResponseFunctionView.cs	(revision 18100)
@@ -120,6 +120,6 @@
 
     private void ChangeVariableValue(string variableName, double value) {
-      foreach (var constNode in variableNodes[variableName].Cast<NumTreeNode>())
-        constNode.Value = value;
+      foreach (var numNode in variableNodes[variableName].Cast<NumberTreeNode>())
+        numNode.Value = value;
 
       UpdateResponseSeries();
@@ -210,5 +210,5 @@
 
           int childIndex = varNode.Parent.IndexOfSubtree(varNode);
-          var replacementNode = MakeConstantTreeNode(medianValues[varNode.VariableName]);
+          var replacementNode = MakeNumberTreeNode(medianValues[varNode.VariableName]);
           var parent = varNode.Parent;
           parent.RemoveSubtree(childIndex);
@@ -223,19 +223,19 @@
     }
 
-    private ISymbolicExpressionTreeNode MakeProduct(NumTreeNode c, double weight) {
+    private ISymbolicExpressionTreeNode MakeProduct(NumberTreeNode c, double weight) {
       var mul = new Multiplication();
       var prod = mul.CreateTreeNode();
-      prod.AddSubtree(MakeConstantTreeNode(weight));
+      prod.AddSubtree(MakeNumberTreeNode(weight));
       prod.AddSubtree(c);
       return prod;
     }
 
-    private NumTreeNode MakeConstantTreeNode(double value) {
-      Num num = new Num();
-      num.MinValue = value - 1;
-      num.MaxValue = value + 1;
-      NumTreeNode numTreeNode = (NumTreeNode)num.CreateTreeNode();
-      numTreeNode.Value = value;
-      return numTreeNode;
+    private NumberTreeNode MakeNumberTreeNode(double value) {
+      Number number = new Number();
+      number.MinValue = value - 1;
+      number.MaxValue = value + 1;
+      NumberTreeNode numberTreeNode = (NumberTreeNode)number.CreateTreeNode();
+      numberTreeNode.Value = value;
+      return numberTreeNode;
     }
   }
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/MultiObjective/NMSEMultiObjectiveConstraintsEvaluator.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/MultiObjective/NMSEMultiObjectiveConstraintsEvaluator.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/MultiObjective/NMSEMultiObjectiveConstraintsEvaluator.cs	(revision 18100)
@@ -123,7 +123,7 @@
           if (errorState == OnlineCalculatorError.None) {
             //Set alpha and beta to the scaling nodes from ia grammar
-            var offsetParameter = offset.GetSubtree(1) as ConstantTreeNode;
+            var offsetParameter = offset.GetSubtree(1) as NumberTreeNode;
             offsetParameter.Value = alpha;
-            var scalingParameter = scaling.GetSubtree(1) as ConstantTreeNode;
+            var scalingParameter = scaling.GetSubtree(1) as NumberTreeNode;
             scalingParameter.Value = beta;
           }
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SingleObjective/Evaluators/NMSESingleObjectiveConstraintsEvaluator.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SingleObjective/Evaluators/NMSESingleObjectiveConstraintsEvaluator.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SingleObjective/Evaluators/NMSESingleObjectiveConstraintsEvaluator.cs	(revision 18100)
@@ -155,7 +155,7 @@
           if (errorState == OnlineCalculatorError.None) {
             //Set alpha and beta to the scaling nodes from ia grammar
-            var offsetParameter = offset.GetSubtree(1) as NumTreeNode;
+            var offsetParameter = offset.GetSubtree(1) as NumberTreeNode;
             offsetParameter.Value = alpha;
-            var scalingParameter = scaling.GetSubtree(1) as NumTreeNode;
+            var scalingParameter = scaling.GetSubtree(1) as NumberTreeNode;
             scalingParameter.Value = beta;
           }
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SingleObjective/Evaluators/SymbolicRegressionConstantOptimizationEvaluator.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SingleObjective/Evaluators/SymbolicRegressionConstantOptimizationEvaluator.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SingleObjective/Evaluators/SymbolicRegressionConstantOptimizationEvaluator.cs	(revision 18100)
@@ -32,5 +32,5 @@
 
 namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Regression {
-  [Item("Num Optimization Evaluator", "Calculates Pearson R² of a symbolic regression solution and optimizes the constant used.")]
+  [Item("Constant Optimization Evaluator", "Calculates Pearson R² of a symbolic regression solution and optimizes the constant used.")]
   [StorableType("24B68851-036D-4446-BD6F-3823E9028FF4")]
   public class SymbolicRegressionConstantOptimizationEvaluator : SymbolicRegressionSingleObjectiveEvaluator {
@@ -307,11 +307,11 @@
       int i = 0;
       foreach (var node in tree.Root.IterateNodesPrefix().OfType<SymbolicExpressionTreeTerminalNode>()) {
-        NumTreeNode numTreeNode = node as NumTreeNode;
+        NumberTreeNode numberTreeNode = node as NumberTreeNode;
         VariableTreeNodeBase variableTreeNodeBase = node as VariableTreeNodeBase;
         FactorVariableTreeNode factorVarTreeNode = node as FactorVariableTreeNode;
-        if (numTreeNode != null) {
-          if (numTreeNode.Parent.Symbol is Power 
-              && numTreeNode.Parent.GetSubtree(1) == numTreeNode) continue; // exponents in powers are not optimizated (see TreeToAutoDiffTermConverter)
-          numTreeNode.Value = constants[i++];
+        if (numberTreeNode != null) {
+          if (numberTreeNode.Parent.Symbol is Power 
+              && numberTreeNode.Parent.GetSubtree(1) == numberTreeNode) continue; // exponents in powers are not optimizated (see TreeToAutoDiffTermConverter)
+          numberTreeNode.Value = constants[i++];
         } else if (updateVariableWeights && variableTreeNodeBase != null)
           variableTreeNodeBase.Weight = constants[i++];
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SymbolicRegressionPruningOperator.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SymbolicRegressionPruningOperator.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SymbolicRegressionPruningOperator.cs	(revision 18100)
@@ -91,5 +91,5 @@
       for (int i = 0; i < nodes.Count; ++i) {
         var node = nodes[i];
-        if (node is ConstantTreeNode) continue;
+        if (node is NumberTreeNode) continue;
 
         double impactValue, replacementValue;
@@ -100,5 +100,5 @@
         if (!pruneOnlyZeroImpactNodes && impactValue > nodeImpactThreshold) continue;
 
-        var constantNode = (ConstantTreeNode)node.Grammar.GetSymbol("Constant").CreateTreeNode();
+        var constantNode = (NumberTreeNode)node.Grammar.GetSymbol("Number").CreateTreeNode();
         constantNode.Value = replacementValue;
 
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/InteractiveSymbolicDataAnalysisSolutionSimplifierView.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/InteractiveSymbolicDataAnalysisSolutionSimplifierView.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/InteractiveSymbolicDataAnalysisSolutionSimplifierView.cs	(revision 18100)
@@ -203,5 +203,5 @@
 
         var replacementValues = impactAndReplacementValues.ToDictionary(x => x.Key, x => x.Value.Item2);
-        foreach (var pair in replacementValues.Where(pair => !(pair.Key is ConstantTreeNode))) {
+        foreach (var pair in replacementValues.Where(pair => !(pair.Key is NumberTreeNode))) {
           foldedNodes[pair.Key] = MakeConstantTreeNode(pair.Value);
         }
@@ -250,7 +250,7 @@
     }
 
-    private static ConstantTreeNode MakeConstantTreeNode(double value) {
-      var constant = new Constant { MinValue = value - 1, MaxValue = value + 1 };
-      var constantTreeNode = (ConstantTreeNode)constant.CreateTreeNode();
+    private static NumberTreeNode MakeConstantTreeNode(double value) {
+      var constant = new Number { MinValue = value - 1, MaxValue = value + 1 };
+      var constantTreeNode = (NumberTreeNode)constant.CreateTreeNode();
       constantTreeNode.Value = value;
       return constantTreeNode;
@@ -297,5 +297,5 @@
         VisualTreeNode<ISymbolicExpressionTreeNode> visualTree = treeChart.GetVisualSymbolicExpressionTreeNode(treeNode);
 
-        if (!(treeNode is ConstantTreeNode) && nodeImpacts.ContainsKey(treeNode)) {
+        if (!(treeNode is NumberTreeNode) && nodeImpacts.ContainsKey(treeNode)) {
           visualTree.ToolTip = visualTree.Content.ToString();
           double impact = nodeImpacts[treeNode];
@@ -314,5 +314,5 @@
           }
           visualTree.ToolTip += Environment.NewLine + "Node impact: " + impact;
-          var constantReplacementNode = foldedNodes[treeNode] as ConstantTreeNode;
+          var constantReplacementNode = foldedNodes[treeNode] as NumberTreeNode;
           if (constantReplacementNode != null) {
             visualTree.ToolTip += Environment.NewLine + "Replacement value: " + constantReplacementNode.Value;
@@ -324,5 +324,5 @@
           if (changedNodes.ContainsKey(treeNode)) {
             visualTree.LineColor = Color.DodgerBlue;
-          } else if (treeNode is ConstantTreeNode && foldedNodes.ContainsKey(treeNode)) {
+          } else if (treeNode is NumberTreeNode && foldedNodes.ContainsKey(treeNode)) {
             visualTree.LineColor = Color.DarkOrange;
           }
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/InteractiveSymbolicExpressionTreeChart.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/InteractiveSymbolicExpressionTreeChart.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/InteractiveSymbolicExpressionTreeChart.cs	(revision 18100)
@@ -104,7 +104,7 @@
         var symbol = dialog.SelectedSymbol;
         var node = symbol.CreateTreeNode();
-        if (node is ConstantTreeNode) {
-          var constant = node as ConstantTreeNode;
-          constant.Value = double.Parse(dialog.constantValueTextBox.Text);
+        if (node is NumberTreeNode) {
+          var number = node as NumberTreeNode;
+          number.Value = double.Parse(dialog.numberValueTextBox.Text);
         } else if (node is VariableTreeNode) {
           var variable = node as VariableTreeNode;
@@ -133,6 +133,6 @@
       ISymbolicExpressionTreeNode newNode = null;
       var result = DialogResult.Cancel;
-      if (node is ConstantTreeNode) {
-        using (var dialog = new ConstantNodeEditDialog(node)) {
+      if (node is NumberTreeNode) {
+        using (var dialog = new NumberNodeEditDialog(node)) {
           dialog.ShowDialog(this);
           newNode = dialog.NewNode;
@@ -200,5 +200,5 @@
       // check if the copied/cut node (stored in the tempNode) can be inserted as a child of the current selected node
       var node = currSelected.Content;
-      if (node is ConstantTreeNode || node is VariableTreeNode) return;
+      if (node is NumberTreeNode || node is VariableTreeNode) return;
       // check if the currently selected node can accept the copied node as a child 
       // no need to check the grammar, an arity check will do just fine here
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Symbols/ConstantView.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Symbols/ConstantView.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Symbols/ConstantView.cs	(revision 18100)
@@ -27,9 +27,9 @@
 
 namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Views {
-  [View("Constant View")]
-  [Content(typeof(Constant), true)]
+  [View("Number View")]
+  [Content(typeof(Number), true)]
   public partial class ConstantView : SymbolView {
-    public new Constant Content {
-      get { return (Constant)base.Content; }
+    public new Number Content {
+      get { return (Number)base.Content; }
       set { base.Content = value; }
     }
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/TreeEditDialogs/SymbolicExpressionTreeConstantNodeEditDialog.Designer.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/TreeEditDialogs/SymbolicExpressionTreeConstantNodeEditDialog.Designer.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/TreeEditDialogs/SymbolicExpressionTreeConstantNodeEditDialog.Designer.cs	(revision 18100)
@@ -21,5 +21,5 @@
 
 namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Views {
-  partial class ConstantNodeEditDialog {
+  partial class NumberNodeEditDialog {
     /// <summary>
     /// Required designer variable.
@@ -121,5 +121,5 @@
       this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click);
       // 
-      // ConstantNodeEditDialog
+      // NumberNodeEditDialog
       // 
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -138,10 +138,10 @@
       this.MaximizeBox = false;
       this.MinimizeBox = false;
-      this.Name = "ConstantNodeEditDialog";
+      this.Name = "NumberNodeEditDialog";
       this.ShowIcon = false;
       this.ShowInTaskbar = false;
       this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
       this.Text = "Edit constant value";
-      this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ConstantNodeEditDialog_KeyDown);
+      this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.NumberNodeEditDialog_KeyDown);
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
       this.ResumeLayout(false);
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/TreeEditDialogs/SymbolicExpressionTreeConstantNodeEditDialog.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/TreeEditDialogs/SymbolicExpressionTreeConstantNodeEditDialog.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/TreeEditDialogs/SymbolicExpressionTreeConstantNodeEditDialog.cs	(revision 18100)
@@ -28,20 +28,20 @@
 
 namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Views {
-  public partial class ConstantNodeEditDialog : Form {
-    private ConstantTreeNode constantTreeNode;
-    public ConstantTreeNode NewNode {
-      get { return constantTreeNode; }
+  public partial class NumberNodeEditDialog : Form {
+    private NumberTreeNode numberTreeNode;
+    public NumberTreeNode NewNode {
+      get { return numberTreeNode; }
       set {
         if (InvokeRequired)
-          Invoke(new Action<SymbolicExpressionTreeNode>(x => constantTreeNode = (ConstantTreeNode)x), value);
+          Invoke(new Action<SymbolicExpressionTreeNode>(x => numberTreeNode = (NumberTreeNode)x), value);
         else
-          constantTreeNode = value;
+          numberTreeNode = value;
       }
     }
 
-    public ConstantNodeEditDialog(ISymbolicExpressionTreeNode node) {
+    public NumberNodeEditDialog(ISymbolicExpressionTreeNode node) {
       InitializeComponent();
       oldValueTextBox.TabStop = false; // cannot receive focus using tab key
-      NewNode = (ConstantTreeNode)node;
+      NewNode = (NumberTreeNode)node;
       InitializeFields();
     }
@@ -49,8 +49,8 @@
     private void InitializeFields() {
       if (NewNode == null)
-        throw new ArgumentException("Node is not a constant.");
+        throw new ArgumentException("Node is not a number.");
       else {
         this.Text = "Edit constant";
-        newValueTextBox.Text = oldValueTextBox.Text = Math.Round(constantTreeNode.Value, 4).ToString();
+        newValueTextBox.Text = oldValueTextBox.Text = Math.Round(numberTreeNode.Value, 4).ToString();
       }
     }
@@ -87,8 +87,8 @@
     // proxy handler passing key strokes to the parent control
     private void childControl_KeyDown(object sender, KeyEventArgs e) {
-      ConstantNodeEditDialog_KeyDown(sender, e);
+      NumberNodeEditDialog_KeyDown(sender, e);
     }
 
-    private void ConstantNodeEditDialog_KeyDown(object sender, KeyEventArgs e) {
+    private void NumberNodeEditDialog_KeyDown(object sender, KeyEventArgs e) {
       if ((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Return)) {
         if (!ValidateChildren()) return;
@@ -100,10 +100,10 @@
     public event EventHandler DialogValidated;
     private void OnDialogValidated(object sender, EventArgs e) {
-      if (constantTreeNode == null) return;
+      if (numberTreeNode == null) return;
       var value = double.Parse(newValueTextBox.Text);
       // we impose an extra validation condition: that the new value is different from the original value
-      if (constantTreeNode.Value.Equals(value)) return;
+      if (numberTreeNode.Value.Equals(value)) return;
 
-      constantTreeNode.Value = value;
+      numberTreeNode.Value = value;
       DialogResult = DialogResult.OK;
       var dialogValidated = DialogValidated;
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/TreeEditDialogs/SymbolicExpressionTreeNodeInsertDialog.Designer.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/TreeEditDialogs/SymbolicExpressionTreeNodeInsertDialog.Designer.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/TreeEditDialogs/SymbolicExpressionTreeNodeInsertDialog.Designer.cs	(revision 18100)
@@ -52,6 +52,6 @@
       this.variableNamesCombo = new System.Windows.Forms.ComboBox();
       this.variableWeightTextBox = new System.Windows.Forms.TextBox();
-      this.constantValueTextBox = new System.Windows.Forms.TextBox();
-      this.constantValueLabel = new System.Windows.Forms.Label();
+      this.numberValueTextBox = new System.Windows.Forms.TextBox();
+      this.numberValueLabel = new System.Windows.Forms.Label();
       this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
       this.okButton = new System.Windows.Forms.Button();
@@ -121,23 +121,23 @@
       this.variableWeightTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.variableWeightTextBox_Validating);
       // 
-      // constantValueTextBox
-      // 
-      this.constantValueTextBox.Location = new System.Drawing.Point(101, 37);
-      this.constantValueTextBox.Name = "constantValueTextBox";
-      this.constantValueTextBox.Size = new System.Drawing.Size(127, 20);
-      this.constantValueTextBox.TabIndex = 7;
-      this.constantValueTextBox.Text = "0.0";
-      this.constantValueTextBox.Visible = false;
-      this.constantValueTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.constantValueTextBox_Validating);
-      // 
-      // constantValueLabel
-      // 
-      this.constantValueLabel.AutoSize = true;
-      this.constantValueLabel.Location = new System.Drawing.Point(19, 40);
-      this.constantValueLabel.Name = "constantValueLabel";
-      this.constantValueLabel.Size = new System.Drawing.Size(34, 13);
-      this.constantValueLabel.TabIndex = 8;
-      this.constantValueLabel.Text = "Value";
-      this.constantValueLabel.Visible = false;
+      // numberValueTextBox
+      // 
+      this.numberValueTextBox.Location = new System.Drawing.Point(101, 37);
+      this.numberValueTextBox.Name = "numberValueTextBox";
+      this.numberValueTextBox.Size = new System.Drawing.Size(127, 20);
+      this.numberValueTextBox.TabIndex = 7;
+      this.numberValueTextBox.Text = "0.0";
+      this.numberValueTextBox.Visible = false;
+      this.numberValueTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.numberValueTextBox_Validating);
+      // 
+      // numberValueLabel
+      // 
+      this.numberValueLabel.AutoSize = true;
+      this.numberValueLabel.Location = new System.Drawing.Point(19, 40);
+      this.numberValueLabel.Name = "numberValueLabel";
+      this.numberValueLabel.Size = new System.Drawing.Size(34, 13);
+      this.numberValueLabel.TabIndex = 8;
+      this.numberValueLabel.Text = "Value";
+      this.numberValueLabel.Visible = false;
       // 
       // errorProvider
@@ -187,6 +187,6 @@
       this.Controls.Add(this.cancelButton);
       this.Controls.Add(this.okButton);
-      this.Controls.Add(this.constantValueLabel);
-      this.Controls.Add(this.constantValueTextBox);
+      this.Controls.Add(this.numberValueLabel);
+      this.Controls.Add(this.numberValueTextBox);
       this.Controls.Add(this.variableWeightTextBox);
       this.Controls.Add(this.variableNamesCombo);
@@ -211,7 +211,7 @@
     private System.Windows.Forms.Label variableWeightLabel;
     private System.Windows.Forms.Label variableNameLabel;
-    private System.Windows.Forms.Label constantValueLabel;
+    private System.Windows.Forms.Label numberValueLabel;
     private System.Windows.Forms.ErrorProvider errorProvider;
-    internal System.Windows.Forms.TextBox constantValueTextBox;
+    internal System.Windows.Forms.TextBox numberValueTextBox;
     internal System.Windows.Forms.TextBox variableWeightTextBox;
     internal System.Windows.Forms.ComboBox variableNamesCombo;
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/TreeEditDialogs/SymbolicExpressionTreeNodeInsertDialog.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/TreeEditDialogs/SymbolicExpressionTreeNodeInsertDialog.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/TreeEditDialogs/SymbolicExpressionTreeNodeInsertDialog.cs	(revision 18100)
@@ -57,5 +57,5 @@
       var combo = (ComboBox)sender;
       var symbol = combo.Items[combo.SelectedIndex];
-      if (symbol is Constant) {
+      if (symbol is Number) {
         // add controls to the dialog for changing the constant value
         variableNameLabel.Visible = false;
@@ -63,6 +63,6 @@
         variableWeightLabel.Visible = false;
         variableWeightTextBox.Visible = false;
-        constantValueLabel.Visible = true;
-        constantValueTextBox.Visible = true;
+        numberValueLabel.Visible = true;
+        numberValueTextBox.Visible = true;
       } else if (symbol is VariableBase) {
         var variableSymbol = (VariableBase)symbol;
@@ -80,6 +80,6 @@
         variableWeightLabel.Visible = true;
         variableWeightTextBox.Visible = true;
-        constantValueLabel.Visible = false;
-        constantValueTextBox.Visible = false;
+        numberValueLabel.Visible = false;
+        numberValueTextBox.Visible = false;
         // add controls to the dialog for changing the variable name or weight
       } else {
@@ -88,6 +88,6 @@
         variableWeightLabel.Visible = false;
         variableWeightTextBox.Visible = false;
-        constantValueLabel.Visible = false;
-        constantValueTextBox.Visible = false;
+        numberValueLabel.Visible = false;
+        numberValueTextBox.Visible = false;
       }
     }
@@ -102,10 +102,10 @@
     }
 
-    private void constantValueTextBox_Validating(object sender, CancelEventArgs e) {
+    private void numberValueTextBox_Validating(object sender, CancelEventArgs e) {
       string errorMessage;
-      if (ValidateDoubleValue(constantValueTextBox.Text, out errorMessage)) return;
+      if (ValidateDoubleValue(numberValueTextBox.Text, out errorMessage)) return;
       e.Cancel = true;
-      errorProvider.SetError(constantValueTextBox, errorMessage);
-      constantValueTextBox.SelectAll();
+      errorProvider.SetError(numberValueTextBox, errorMessage);
+      numberValueTextBox.SelectAll();
     }
 
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Analyzers/SymbolicDataAnalysisAlleleFrequencyAnalyzer.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Analyzers/SymbolicDataAnalysisAlleleFrequencyAnalyzer.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Analyzers/SymbolicDataAnalysisAlleleFrequencyAnalyzer.cs	(revision 18100)
@@ -88,4 +88,5 @@
       StringBuilder builder = new StringBuilder();
       var varTreeNode = tree as VariableTreeNode;
+      var numTreeNode = tree as NumberTreeNode;
       var constTreeNode = tree as ConstantTreeNode;
       var factorVarTreeNode = tree as FactorVariableTreeNode;
@@ -97,5 +98,5 @@
       } else if (binFactorVarTreeNode != null) {
         builder.Append("(factor " + binFactorVarTreeNode.VariableName + "=" + binFactorVarTreeNode.VariableValue);
-      } else if (constTreeNode != null) {
+      } else if (numTreeNode != null || constTreeNode != null) {
         builder.Append("(const");
       } else {
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Converters/LinearModelToTreeConverter.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Converters/LinearModelToTreeConverter.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Converters/LinearModelToTreeConverter.cs	(revision 18100)
@@ -58,5 +58,5 @@
 
       if (@const!=0.0) {
-        NumTreeNode cNode = (NumTreeNode)new Num().CreateTreeNode();
+        NumberTreeNode cNode = (NumberTreeNode)new Number().CreateTreeNode();
         cNode.Value = @const;
         add.AddSubtree(cNode);
@@ -99,5 +99,5 @@
 
       if (!@const.IsAlmost(0.0)) {
-        NumTreeNode cNode = (NumTreeNode)new Num().CreateTreeNode();
+        NumberTreeNode cNode = (NumberTreeNode)new Number().CreateTreeNode();
         cNode.Value = @const;
         addition.AddSubtree(cNode);
@@ -130,5 +130,5 @@
 
       if (!@const.IsAlmost(0.0)) {
-        NumTreeNode cNode = (NumTreeNode)new Num().CreateTreeNode();
+        NumberTreeNode cNode = (NumberTreeNode)new Number().CreateTreeNode();
         cNode.Value = @const;
         addition.AddSubtree(cNode);
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Converters/TreeToAutoDiffTermConverter.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Converters/TreeToAutoDiffTermConverter.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Converters/TreeToAutoDiffTermConverter.cs	(revision 18100)
@@ -145,6 +145,6 @@
 
     private AutoDiff.Term ConvertToAutoDiff(ISymbolicExpressionTreeNode node) {
-      if (node.Symbol is Num) {
-        initialConstants.Add(((NumTreeNode)node).Value);
+      if (node.Symbol is Number) {
+        initialConstants.Add(((NumberTreeNode)node).Value);
         var var = new AutoDiff.Variable();
         variables.Add(var);
@@ -152,6 +152,6 @@
       }
 
-      if (node.Symbol is RealConstant) {
-        initialConstants.Add(((RealConstantTreeNode)node).Value);
+      if (node.Symbol is Constant) {
+        initialConstants.Add(((ConstantTreeNode)node).Value);
         var var = new AutoDiff.Variable();
         variables.Add(var);
@@ -267,5 +267,5 @@
       }
       if (node.Symbol is Power) {
-        var powerNode = node.GetSubtree(1) as NumTreeNode;
+        var powerNode = node.GetSubtree(1) as NumberTreeNode;
         if (powerNode == null)
           throw new NotSupportedException("Only integer powers are allowed in parameter optimization. Try to use exp() and log() instead of the power symbol.");
@@ -337,6 +337,6 @@
           !(n.Symbol is FactorVariable) &&
           !(n.Symbol is LaggedVariable) &&
-          !(n.Symbol is Num) &&
-          !(n.Symbol is RealConstant) &&
+          !(n.Symbol is Number) &&
+          !(n.Symbol is Constant) &&
           !(n.Symbol is Addition) &&
           !(n.Symbol is Subtraction) &&
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/InfixExpressionFormatter.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/InfixExpressionFormatter.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/InfixExpressionFormatter.cs	(revision 18100)
@@ -54,5 +54,5 @@
 
           var power = node.GetSubtree(1);
-          if(power is ConstantTreeNode constNode && Math.Truncate(constNode.Value) == constNode.Value) {
+          if(power is NumberTreeNode constNode && Math.Truncate(constNode.Value) == constNode.Value) {
             strBuilder.Append(" ").Append(token).Append(" ").Append(constNode.Value.ToString(formatString, numberFormat));
           } else {
@@ -141,6 +141,6 @@
 
           if (!factorNode.Weight.IsAlmost(1.0)) strBuilder.Append(")");
-        } else if (node.Symbol is Constant) {
-          var constNode = node as ConstantTreeNode;
+        } else if (node.Symbol is Number) {
+          var constNode = node as NumberTreeNode;
           if (constants == null && constNode.Value < 0) {
             strBuilder.Append("(").Append(constNode.Value.ToString(formatString, numberFormat))
@@ -204,5 +204,5 @@
     /// </summary>
     /// <param name="symbolicExpressionTree">The tree representation of the expression.</param>
-    /// <param name="numberFormat">Number format that should be used for numeric parameters (e.g. NumberFormatInfo.InvariantInfo (default)).</param>
+    /// <param name="numberFormat">Constant format that should be used for numeric parameters (e.g. NumberFormatInfo.InvariantInfo (default)).</param>
     /// <param name="formatString">The format string for numeric parameters (e.g. \"G4\" to limit to 4 digits, default is \"G\")</param>
     /// <returns>Infix expression</returns>
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionCSharpFormatter.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionCSharpFormatter.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionCSharpFormatter.cs	(revision 18100)
@@ -162,7 +162,6 @@
           var varNode = node as VariableTreeNode;
           strBuilder.AppendFormat("{0} * {1}", VariableName2Identifier(varNode.VariableName), varNode.Weight.ToString("g17", CultureInfo.InvariantCulture));
-        } else if (node is ConstantTreeNode) {
-          var constNode = node as ConstantTreeNode;
-          strBuilder.Append(constNode.Value.ToString("g17", CultureInfo.InvariantCulture));
+        } else if (node is INumericTreeNode numNode) {
+          strBuilder.Append(numNode.Value.ToString("g17", CultureInfo.InvariantCulture));
         } else if (node.Symbol is FactorVariable) {
           var factorNode = node as FactorVariableTreeNode;
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionExcelFormatter.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionExcelFormatter.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionExcelFormatter.cs	(revision 18100)
@@ -134,7 +134,7 @@
         }
         stringBuilder.Append("))");
-      } else if (symbol is Constant) {
-        ConstantTreeNode constantTreeNode = node as ConstantTreeNode;
-        stringBuilder.Append(constantTreeNode.Value.ToString(CultureInfo.InvariantCulture));
+      } else if (symbol is INumericSymbol numNode) {
+        var numTreeNode = node as INumericTreeNode;
+        stringBuilder.Append(numTreeNode.Value.ToString(CultureInfo.InvariantCulture));
       } else if (symbol is Cosine) {
         stringBuilder.Append("COS(");
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionLatexFormatter.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionLatexFormatter.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionLatexFormatter.cs	(revision 18100)
@@ -189,15 +189,14 @@
       } else if (node.Symbol is IfThenElse) {
         strBuilder.Append(@" \operatorname{if}  \left( ");
-      } else if (node.Symbol is Constant) {
-        var constName = "c_{" + constIndex + "}";
+      } else if (node.Symbol is INumericSymbol numNode) {
+        var numName = "c_{" + constIndex + "}";
         constIndex++;
-        var constNode = node as ConstantTreeNode;
-        if (constNode.Value.IsAlmost(1.0)) {
+        var numericNode = node as INumericTreeNode;
+        if (numericNode.Value.IsAlmost(1.0)) {
           strBuilder.Append("1 ");
         } else {
-          strBuilder.Append(constName);
-          constants.Add(new KeyValuePair<string, double>(constName, constNode.Value));
-        }
-
+          strBuilder.Append(numName);
+          constants.Add(new KeyValuePair<string, double>(numName, numericNode.Value));
+        }
       } else if (node.Symbol is FactorVariable) {
         var factorNode = node as FactorVariableTreeNode;
@@ -471,6 +470,7 @@
       } else if (node.Symbol is IfThenElse) {
         strBuilder.Append(@" \right) ");
+      } else if (node.Symbol is Number) {
       } else if (node.Symbol is Constant) {
-      } else if (node.Symbol is LaggedVariable) {
+      }else if (node.Symbol is LaggedVariable) {
       } else if (node.Symbol is Variable) {
       } else if (node.Symbol is FactorVariable) {
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionMATLABFormatter.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionMATLABFormatter.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionMATLABFormatter.cs	(revision 18100)
@@ -151,7 +151,7 @@
         }
         stringBuilder.Append(")");
-      } else if (symbol is Constant) {
-        ConstantTreeNode constantTreeNode = node as ConstantTreeNode;
-        stringBuilder.Append(constantTreeNode.Value.ToString(CultureInfo.InvariantCulture));
+      } else if (symbol is INumericSymbol) {
+        var numberTreeNode = node as INumericTreeNode;
+        stringBuilder.Append(numberTreeNode?.Value.ToString(CultureInfo.InvariantCulture));
       } else if (symbol is Cosine) {
         stringBuilder.Append("cos(");
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionMathematicaFormatter.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionMathematicaFormatter.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionMathematicaFormatter.cs	(revision 18100)
@@ -130,7 +130,7 @@
           var varNode = node as VariableTreeNode;
           strBuilder.AppendFormat("Times[{0}, {1}]", varNode.VariableName, varNode.Weight.ToString("G17", CultureInfo.InvariantCulture));
-        } else if (node.Symbol is Constant) {
-          var constNode = node as ConstantTreeNode;
-          strBuilder.Append(constNode.Value.ToString("G17", CultureInfo.InvariantCulture));
+        } else if (node.Symbol is INumericSymbol) {
+          var numNode = node as INumericTreeNode;
+          strBuilder.Append(numNode?.Value.ToString("G17", CultureInfo.InvariantCulture));
         } else if (node.Symbol is FactorVariable) {
           var factorNode = node as FactorVariableTreeNode;
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionPythonFormatter.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionPythonFormatter.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionPythonFormatter.cs	(revision 18100)
@@ -202,6 +202,6 @@
       else if (node is VariableTreeNode)
         FormatVariableTreeNode(node, strBuilder);
-      else if (node is ConstantTreeNode)
-        FormatConstantTreeNode(node, strBuilder);
+      else if (node is INumericTreeNode)
+        FormatNumericTreeNode(node, strBuilder);
       else
         throw new NotSupportedException("Formatting of symbol: " + symbol + " not supported for Python symbolic expression tree formatter.");
@@ -227,7 +227,16 @@
     }
 
-    private static void FormatConstantTreeNode(ISymbolicExpressionTreeNode node, StringBuilder strBuilder) {
-      var constNode = node as ConstantTreeNode;
-      strBuilder.Append(constNode.Value.ToString("g17", CultureInfo.InvariantCulture));
+    private static void FormatNumericTreeNode(ISymbolicExpressionTreeNode node, StringBuilder strBuilder) {
+      var symbol = node.Symbol;
+      double value = 0.0;
+      if (symbol is INumericSymbol) {
+        var numNode = node as INumericTreeNode;
+        value = numNode.Value;
+      } else {
+        throw new NotSupportedException("Formatting of symbol: " + symbol + " not supported for Python symbolic expression tree formatter.");
+      }
+        
+
+      strBuilder.Append(value.ToString("g17", CultureInfo.InvariantCulture));
     }
 
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionSmalltalkFormatter.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionSmalltalkFormatter.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionSmalltalkFormatter.cs	(revision 18100)
@@ -83,8 +83,8 @@
         }
         stringBuilder.Append(")");
-      } else if (symbol is Constant) {
-        ConstantTreeNode constantTreeNode = node as ConstantTreeNode;
-        stringBuilder.Append(constantTreeNode.Value.ToString(CultureInfo.InvariantCulture));
-      } else if (symbol is Cosine) {
+      } else if (symbol is INumericSymbol) {
+        var numberTreeNode = node as INumericTreeNode;
+        stringBuilder.Append(numberTreeNode?.Value.ToString(CultureInfo.InvariantCulture));
+      }else if (symbol is Cosine) {
         stringBuilder.Append(FormatRecursively(node.GetSubtree(0)));
         stringBuilder.Append(" cos");
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/TSQLExpressionFormatter.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/TSQLExpressionFormatter.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/TSQLExpressionFormatter.cs	(revision 18100)
@@ -164,8 +164,7 @@
           var varNode = node as VariableTreeNode;
           strBuilder.AppendFormat("{0} * {1}", VariableName2Identifier(varNode.VariableName), varNode.Weight.ToString("g17", CultureInfo.InvariantCulture));
-        } else if (node is ConstantTreeNode) {
-          var constNode = node as ConstantTreeNode;
-          strBuilder.Append(constNode.Value.ToString("g17", CultureInfo.InvariantCulture));
-        } else if (node.Symbol is FactorVariable) {
+        } else if (node is INumericTreeNode numNode) {
+          strBuilder.Append(numNode.Value.ToString("g17", CultureInfo.InvariantCulture));
+        }else if (node.Symbol is FactorVariable) {
           var factorNode = node as FactorVariableTreeNode;
           FormatFactor(level, factorNode, strBuilder);
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/ArithmeticExpressionGrammar.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/ArithmeticExpressionGrammar.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/ArithmeticExpressionGrammar.cs	(revision 18100)
@@ -49,15 +49,13 @@
       var mul = new Multiplication();
       var div = new Division();
-      var constant = new Num();
-      constant.MinValue = -20;
-      constant.MaxValue = 20;
-      var number = new RealConstant();
+      var number = new Number();
       number.MinValue = -20;
       number.MaxValue = 20;
+      var constant = new Constant();
       var variableSymbol = new HeuristicLab.Problems.DataAnalysis.Symbolic.Variable();
       var binFactorVariableSymbol = new BinaryFactorVariable();
       var factorVariableSymbol = new FactorVariable();
 
-      var allSymbols = new List<Symbol>() { add, sub, mul, div, constant, number, variableSymbol, binFactorVariableSymbol, factorVariableSymbol };
+      var allSymbols = new List<Symbol>() { add, sub, mul, div, number, constant, variableSymbol, binFactorVariableSymbol, factorVariableSymbol };
       var functionSymbols = new List<Symbol>() { add, sub, mul, div };
 
@@ -68,6 +66,6 @@
         SetSubtreeCount(funSymb, 1, 3);
       }
+      SetSubtreeCount(number, 0, 0);
       SetSubtreeCount(constant, 0, 0);
-      SetSubtreeCount(number, 0, 0);
       SetSubtreeCount(variableSymbol, 0, 0);
       SetSubtreeCount(binFactorVariableSymbol, 0, 0);
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/FullFunctionalExpressionGrammar.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/FullFunctionalExpressionGrammar.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/FullFunctionalExpressionGrammar.cs	(revision 18100)
@@ -118,7 +118,7 @@
       variableCondition.InitialFrequency = 0.0;
 
-      var constant = new Num();
-      constant.MinValue = -20;
-      constant.MaxValue = 20;
+      var number = new Number();
+      number.MinValue = -20;
+      number.MaxValue = 20;
       var variableSymbol = new HeuristicLab.Problems.DataAnalysis.Symbolic.Variable();
       var binFactorVariable = new BinaryFactorVariable();
@@ -130,11 +130,9 @@
       autoregressiveVariable.Enabled = false;
 
-      var number = new RealConstant();
-      number.MinValue = -20;
-      number.MaxValue = 20;
+      var constant = new Constant();
 
       var allSymbols = new List<Symbol>() { add, sub, mul, div, aq, mean, abs, sin, cos, tan, log, square, cube, pow, sqrt, cubeRoot, root, exp, tanh,
         airyA, airyB, bessel, cosineIntegral, dawson, erf, expIntegralEi, fresnelCosineIntegral, fresnelSineIntegral, gamma, hypCosineIntegral, hypSineIntegral, norm, psi, sineIntegral,
-        @if, gt, lt, and, or, not,xor, timeLag, integral, derivative, constant, number, variableSymbol, binFactorVariable, factorVariable, laggedVariable,autoregressiveVariable, variableCondition };
+        @if, gt, lt, and, or, not,xor, timeLag, integral, derivative, number, constant, variableSymbol, binFactorVariable, factorVariable, laggedVariable,autoregressiveVariable, variableCondition };
       var unaryFunctionSymbols = new List<Symbol>() { abs, square, sqrt, cube, cubeRoot, sin, cos, tan, log, exp, tanh, not, timeLag, integral, derivative,
         airyA, airyB, bessel, cosineIntegral, dawson, erf, expIntegralEi, fresnelCosineIntegral, fresnelSineIntegral, gamma, hypCosineIntegral, hypSineIntegral, norm, psi, sineIntegral
@@ -143,5 +141,5 @@
       var binaryFunctionSymbols = new List<Symbol>() { pow, root, gt, lt, aq, variableCondition };
       var ternarySymbols = new List<Symbol>() { add, sub, mul, div, mean, and, or, xor };
-      var terminalSymbols = new List<Symbol>() { variableSymbol, binFactorVariable, factorVariable, constant, number, laggedVariable, autoregressiveVariable };
+      var terminalSymbols = new List<Symbol>() { variableSymbol, binFactorVariable, factorVariable, number, constant, laggedVariable, autoregressiveVariable };
 
       foreach (var symb in allSymbols)
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/LinearScalingGrammar.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/LinearScalingGrammar.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/LinearScalingGrammar.cs	(revision 18100)
@@ -66,10 +66,8 @@
       var abs = new Absolute();
       var aq = new AnalyticQuotient();
-      var constant = new Num();
-      constant.MinValue = -20;
-      constant.MaxValue = 20;
-      var number = new RealConstant();
+      var number = new Number();
       number.MinValue = -20;
       number.MaxValue = 20;
+      var constant = new Constant();
       var variableSymbol = new Variable();
 
@@ -81,5 +79,5 @@
       //all other symbols
       var allSymbols = new List<Symbol> {
-        add, sub, mul, div, constant, number, variableSymbol, sin, cos, tan, log, square, sqrt, cube, cbrt, exp,
+        add, sub, mul, div, number, constant, variableSymbol, sin, cos, tan, log, square, sqrt, cube, cbrt, exp,
         tanh, aq, abs
       };
@@ -89,5 +87,5 @@
       var realValueSymbols = new List<Symbol> {
          add, sub, mul, div, sin, cos, tan, tanh, exp, log, aq, abs, square, cube, sqrt, cbrt,
-         variableSymbol, constant, number
+         variableSymbol, number, constant
         };
 
@@ -116,9 +114,9 @@
       //Define childs for offset
       AddAllowedChildSymbol(offset, scaling, 0);
-      AddAllowedChildSymbol(offset, constant, 1);
+      AddAllowedChildSymbol(offset, number, 1);
 
       //Define childs for scaling
       foreach (var symb in allSymbols) AddAllowedChildSymbol(scaling, symb, 0);
-      AddAllowedChildSymbol(scaling, constant, 1);
+      AddAllowedChildSymbol(scaling, number, 1);
 
       //Define childs for realvalue symbols
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/TypeCoherentExpressionGrammar.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/TypeCoherentExpressionGrammar.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/TypeCoherentExpressionGrammar.cs	(revision 18100)
@@ -105,10 +105,8 @@
       var derivative = new Derivative();
 
-      var constant = new Num();
-      constant.MinValue = -20;
-      constant.MaxValue = 20;
-      var number = new RealConstant();
+      var number = new Number();
       number.MinValue = -20;
       number.MaxValue = 20;
+      var constant = new Constant();
       var variableSymbol = new Variable();
       var binFactorVariable = new BinaryFactorVariable();
@@ -124,5 +122,5 @@
       var specialFunctions = new GroupSymbol(SpecialFunctionsName, new List<ISymbol> { abs, airyA, airyB, bessel, cosineIntegral, dawson, erf, expIntegralEi,
         fresnelCosineIntegral,fresnelSineIntegral,gamma,hypCosineIntegral,hypSineIntegral,norm, psi, sineIntegral, analyticalQuotient});
-      var terminalSymbols = new GroupSymbol(TerminalsName, new List<ISymbol> { constant, number, variableSymbol, binFactorVariable, factorVariable });
+      var terminalSymbols = new GroupSymbol(TerminalsName, new List<ISymbol> { number, constant, variableSymbol, binFactorVariable, factorVariable });
       var realValuedSymbols = new GroupSymbol(RealValuedSymbolsName, new List<ISymbol>() { arithmeticSymbols, trigonometricSymbols, exponentialAndLogarithmicSymbols, specialFunctions, terminalSymbols });
 
@@ -196,5 +194,5 @@
       AddAllowedChildSymbol(powerSymbols, laggedVariable, 0);
       AddAllowedChildSymbol(powerSymbols, autoregressiveVariable, 0);
-      AddAllowedChildSymbol(powerSymbols, constant, 1);
+      AddAllowedChildSymbol(powerSymbols, number, 1);
 
       AddAllowedChildSymbol(square, realValuedSymbols, 0);
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.csproj
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.csproj	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.csproj	(revision 18100)
@@ -174,4 +174,6 @@
     <Compile Include="Interfaces\IBoundsEstimator.cs" />
     <Compile Include="Interfaces\IModelBacktransformator.cs" />
+    <Compile Include="Interfaces\INumericSymbol.cs" />
+    <Compile Include="Interfaces\INumericTreeNode.cs" />
     <Compile Include="Interfaces\IVariableTreeNode.cs" />
     <Compile Include="Interfaces\IVariableSymbol.cs" />
@@ -238,6 +240,6 @@
     <Compile Include="Symbols\AutoregressiveVariable.cs" />
     <Compile Include="Symbols\Average.cs" />
-    <Compile Include="Symbols\Num.cs" />
-    <Compile Include="Symbols\NumTreeNode.cs" />
+    <Compile Include="Symbols\Number.cs" />
+    <Compile Include="Symbols\NumberTreeNode.cs" />
     <Compile Include="Symbols\AiryA.cs" />
     <Compile Include="Symbols\AiryB.cs" />
@@ -251,6 +253,6 @@
     <Compile Include="Symbols\CubeRoot.cs" />
     <Compile Include="Symbols\HyperbolicTangent.cs" />
-    <Compile Include="Symbols\RealConstant.cs" />
-    <Compile Include="Symbols\RealConstantTreeNode.cs" />
+    <Compile Include="Symbols\Constant.cs" />
+    <Compile Include="Symbols\ConstantTreeNode.cs" />
     <Compile Include="Symbols\VariableBase.cs" />
     <Compile Include="Symbols\VariableTreeNodeBase.cs" />
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Importer/InfixExpressionParser.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Importer/InfixExpressionParser.cs	(revision 18099)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Importer/InfixExpressionParser.cs	(revision 18100)
@@ -82,6 +82,6 @@
       knownSymbols = new BidirectionalLookup<string, ISymbol>(StringComparer.InvariantCulture, new SymbolComparer());
 
-    private Num num = new Num();
-    private RealConstant realConstant = new RealConstant();
+    private Number number = new Number();
+    private Constant constant = new Constant();
     private Variable variable = new Variable();
     private BinaryFactorVariable binaryFactorVar = new BinaryFactorVariable();
@@ -181,5 +181,6 @@
             && str[pos] != ']'
             && str[pos] != '}'
-            && str[pos] != ',') {
+            && str[pos] != ','
+            && str[pos] != '>') {
             sb.Append(str[pos]);
             pos++;
@@ -333,5 +334,5 @@
           foreach (var negTerm in negTerms) sumNeg.AddSubtree(negTerm);
 
-          var constNode = (NumTreeNode)num.CreateTreeNode();
+          var constNode = (NumberTreeNode)number.CreateTreeNode();
           constNode.Value = -1.0;
           var prod = GetSymbol("*").CreateTreeNode();
@@ -532,4 +533,5 @@
         }
       } else if (next.TokenType == TokenType.LeftAngleBracket) {
+        Token numberTok = null;
         var leftAngleBracket = tokens.Dequeue();
         if (leftAngleBracket.TokenType != TokenType.LeftAngleBracket)
@@ -539,12 +541,22 @@
         if (idTok.TokenType != TokenType.Identifier || idTok.strVal.ToLower() != "num")
           throw new ArgumentException("string 'num' expected");
+
+        if (tokens.Peek().TokenType == TokenType.Eq) {
+          var equalTok = tokens.Dequeue();
+          if (tokens.Peek().TokenType != TokenType.Number)
+            throw new ArgumentException("No value for number specified.");
+
+          numberTok = tokens.Dequeue();
+        }
+
         var rightAngleBracket = tokens.Dequeue();
         if (rightAngleBracket.TokenType != TokenType.RightAngleBracket)
           throw new ArgumentException("closing bracket > expected");
-        var numNode = (NumTreeNode)num.CreateTreeNode();
+        var numNode = (NumberTreeNode)number.CreateTreeNode();
+        if (numberTok != null) numNode.Value = numberTok.doubleVal;
         return numNode;
       } else if (next.TokenType == TokenType.Number) {
         var numTok = tokens.Dequeue();
-        var constNode = (RealConstantTreeNode)realConstant.CreateTreeNode();
+        var constNode = (ConstantTreeNode)constant.CreateTreeNode();
         constNode.Value = numTok.doubleVal;
         return constNode;
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interfaces/INumericSymbol.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interfaces/INumericSymbol.cs	(revision 18100)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interfaces/INumericSymbol.cs	(revision 18100)
@@ -0,0 +1,31 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using HEAL.Attic;
+using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
+
+namespace HeuristicLab.Problems.DataAnalysis.Symbolic {
+  [StorableType("3CD759AF-A45E-4B70-BDCF-66AF1A03BAD8")]
+  public interface INumericSymbol : ISymbol {
+
+  }
+
+}
Index: branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interfaces/INumericTreeNode.cs
===================================================================
--- branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interfaces/INumericTreeNode.cs	(revision 18100)
+++ branches/3140_NumberSymbol/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interfaces/INumericTreeNode.cs	(revision 18100)
@@ -0,0 +1,30 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using HEAL.Attic;
+using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
+
+namespace HeuristicLab.Problems.DataAnalysis.Symbolic {
+  [StorableType("194AFEE6-96E2-4F53-A5AD-D3CCFE928AE5")]
+  public interface INumericTreeNode : ISymbolicExpressionTreeNode {
+    double Value { get; set; }
+  }
+}
