Integrate and Sum evaluations return generic solutions. These are usually correct for general cases, but may not apply for specific parameter values (see Generic and Non-Generic Cases).

For example, this summation is unbounded if x is greater than or equal to 1:

In[1]:= Sum[x^n, {n, 0, Infinity}]

Out[1]=  1 / (1 - x)

The GenerateConditions->True option tells the function to state when the solution is valid.

Now we confirm that the result applies only for Abs[x]<1:

In[2]:= Sum[x^n, {n, 0, Infinity}, GenerateConditions -> True]

Out[2]=  ConditionalExpression[1/(1 - x), Abs[x] < 1]

If any condition is known already, the Assumptions option can be used to tell Sum about it. This gives a simple output suitable for later use in the code. The explicit condition used here will need to be remembered when the result is used:

In[3]:= Sum[x^n, {n, 0, Infinity}, Assumptions -> {-1 < x && x < 1}]

Out[3]= 1/(1 - x)

Assumptions can also be passed using the Assuming function or \$Assumptions:

In[4]:= Integrate[1/(x + a), {x, 0, 1}]

Out[4]= ConditionalExpression[-Log[a] + Log[1 + a],
Re[a] > 0 || Re[a] < -1 || NotElement[a, Reals]
In[5]:= Assuming[a > 0, Integrate[1/(x + a), {x, 0, 1}]] Out[5]= Log[1 + 1/a] In[6]:= \$Assumptions = a > 0;         Integrate[1/(x + a), {x, 0, 1}] Out[7]= Log[1 + 1/a]

This resets \$Assumptions to its default:

In[8]:= \$Assumptions =. ;