result = integrate(fn(tau) * Box(tau), tau)
and then to somehow explain to SymPy that the integration of expression that involves multiplication Box can be reduced to following form:
result = Box(tau) * (Integral(fn(tau), {tau, -1/2, 1/2}) / 2 + Integral(fn(tau), tau)) + Step(tau - 1/2) * Integral(fn(tau), {tau, -1/2, 1/2})
(this is a universal rule that comes directly from definition of Box function but SymPy doesn't know that)
Again what I'm asking is whether there is a way to extend existing integration rule system for the integrate function to account for the cases that I could provide it with.
I understand that I could use pattern matching to find and transform the expressions or perform monkey-patching of integrate method in order to check for above patterns but this all seems to quirky, are there any proper mechanisms to extend integrations