public override Expression FindDerivative() =>
 AdditionExpression.Build(VariableParts.Select(x => x.FindDerivative() * MultiplicationExpression.Build(VariableParts.Where(y => y != x)))) * Coefficient;
 public override string ToString() =>
 IsVariableWithCoefficient ?
 $"{Coefficient}{VariableParts[0]}" :
 "(" + (Coefficient == Fraction.One ? string.Empty : $"{Coefficient} * ") + string.Join(" * ", VariableParts.Select(x => x.ToString())) + ")";
 public override Expression SubstituteVariables(Dictionary <string, Fraction> variableValues, Dictionary <string, Expression> variableExpressions) =>
 Build(Coefficient, VariableParts.Select(x => x.SubstituteVariables(variableValues, variableExpressions)));