(* http://stackoverflow.com/q/7743774/421225 *) In[1]:= $Version Out[1]= "8.0 for Linux x86 (64-bit) (February 23, 2011)" In[2]:= res = Integrate[ Cos[(Pi x)/2]^2 Cos[((2 n + 1) Pi x)/2] Cos[((2 m + 1) Pi x)/2], {x, -1, 1}, Assumptions -> Element[{n, m}, Integers]] Out[2]= ((-(1 + 2*n))*(3*m*(1 + m) + n + n^2)*Cos[n*Pi]* Sin[m*Pi] + (1 + 2*m)*(m + m^2 + 3*n*(1 + n))*Cos[m*Pi]*Sin[n*Pi])/ (2*(-1 + m - n)*(m - n)*(1 + m - n)*(m + n)*(1 + m + n)*(2 + m + n)*Pi) In[3]:= nonzero = Flatten@Solve[Denominator[res] == 0, m] Out[3]= {m -> -2 - n, m -> -1 - n, m -> -1 + n, m -> -n, m -> n, m -> 1 + n} In[4]:= Table[Simplify[Limit[res, lim], Element[{m, n}, Integers]], {lim, nonzero}] Out[4]= {1/4, 1/2, 1/4, 1/4, 1/2, 1/4} The documentation claims that "The result of Reduce[expr,vars] always describes exactly the same mathematical set as expr." However: In[5]:= Reduce[res == 0, {m, n}, Integers] Out[5]= Element[m | n, Integers]