Edit for Mathematica version 9 and higher
To make this answer work with definite integrals in versions greater than 8, I added the line with SetAttributes
in the definition below. Without declaring the antiderivative ff
as a NumericFunction
, the simplifications that were done in version 8 don't kick in, and the expressions remain unevaluated.
End edit
There is no way to do exactly what you want because an assumption can't be used to tell Mathematica that there exists an indefinite integral of the unknown function f[x]
. See for example this MathGroup post.
However, you can get almost what you need if you define the indefinite integral yourself in the following way:
f /: Integrate[f[x_], x_] := ff[x]
SetAttributes[ff, {NumericFunction}]
This declares ff[x]
as the anti-derivative of f[x]
. Now we can get somewhere with the symbolic integration:
Simplify[Integrate[c f[x], {x, a, b}]/c]
-ff[a] + ff[b]
By using the delayed assignment (TagSetDelayed
) for the indefinite integral, it's also possible to use other integration variables, as in
Simplify[Integrate[c f[t], {t, a, b}]/c]
-ff[a] + ff[b]
Edit
The advantage of this approach is that it also helps with other simplifications whose pattern you may not have foreseen at the outset. If you follow the pattern-matching micromanagement approach of the other answers, you'd have to introduce new patterns for new cases. For example, I can also simplify the integral:
Simplify[Integrate[c + f[x], {x, a, b}]]
(-a + b) c - ff[a] + ff[b]
And one could go on...
int[c_Symbol*f_, dom_] := c*int[f, dom]
or some such, then that should work fine. $\endgroup$