Usage of Assuming for Integration

I can explain this.

The definite flavor of Integrate works with assumptions in a few ways. One is to use them in Simplify, Refine, and a few other places that accept Assumptions, to do what they will in the hope of attaining a better result (it also uses them to determine convergence and presence or absence of path singularities). Those places also get the $Assumptions default when there are no explicit Assumptions option settings in Integrate, hence one can do Assuming[...,Integrate[...]] with similar effect. But there is a difference.

Simplify et al. return "generic results", so e.g. Sin[ k π]/k will simplify to 0 if told that k is an integer.

Simplify[ Sin[ k π]/k, Assumptions-> k ∈ Integers]                 

(* Out[4]= 0 *)

Integrate knows Simplify will do this, and wishes it would not (always) be so aggressive. So it takes its Assumptions option and recasts things regarded as Integers into Reals. That's why the related example

Integrate[ Exp[ I k t], {t, -π, π}, Assumptions -> {k ∈ Integers}]

manages to provide a correct result. But Integrate does not attempt to mess with $Assumptions that may have been set outside its scope. This is what happens when one instead uses the Assuming[...,Integrate[...]] construction. In that case a trig result like the one I showed will be (over?-)simplified to zero.

Upshot: Integrate subverts the explicit Integrate assumptions of the user in order to avoid this generic simplification pitfall. It's not clear to me at this point which is the bug and which is the feature. Since there are valid arguments for either, and since I think tangling with global $Assumptions inside Integrate is a risky endeavor, I regard this as best left alone.


Try :

 Integrate[ Exp[ I k t], {t, -π, π}, Assumptions -> {k ∈ Integers}]
 (* (2 Sin[k π])/k *)

Limit[ Integrate[ Exp[ I k t], {t, -π, π},   Assumptions -> {k ∈ Integers}] , k -> 0]
(* 2 π *)

For this example, you could use FourierCoefficient instead of Integrate:

FourierCoefficient[1, t, k, FourierParameters->{-1,1}]

2 π DiscreteDelta[k]