I am trying to integrate expressions involving a formal function $f(x)$:

```
sage: var('x')
sage: function('f')
```

It works in some simple cases:

```
sage: integrate(cos(f(x)) * f(x).diff(), x)
sin(f(x))
```

However, a slightly more complicated expression is left unchanged:

```
sage: integrate(x * f(x).diff() + f(x), x)
integrate(x*diff(f(x), x) + f(x), x)
```

instead of simplifying to $x\ f(x)$.

Is it possible to integrate such expressions in Sage? I tried to use other algorithms (e.g. `algorithm='mathematica_free'`

), but I got this traceback:

```
.local/opt/sage-8.0/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.pyc in derivative(self, ex, operator)
588 from sage.symbolic.ring import is_SymbolicVariable
589 if self.name_init != "_maxima_init_":
--> 590 raise NotImplementedError
591 args = ex.operands()
592 if (not all(is_SymbolicVariable(v) for v in args) or
```

so it looks like only Maxima algorithm can be used because the derivative operation cannot be converted to anything else.