## Symbolic Differentiation

### March 24, 2017

One of the original motivations for the Lisp language was to write a program that performed symbolic differentiation. In this exercise we look at the symbolic differentiator in Section 2.3.2 of SICP, which handles expressions containing only addition and multiplication according to the following rules:

$\frac{dc}{dx} = 0$, with $c \not= x$,

$\frac{dx}{dx} = 1$,

$\frac{d(u+v)}{dx} = \frac{du}{dx} + \frac{dv}{dx}$, and

$\frac{d(uv)}{dx} = u\frac{dv}{dx} + v\frac{du}{dx}$.

Your task is to write a program that performs symbolic differentiation according to the rules given above. When you are finished, you are welcome to read or run a suggested solution, or to post your own solution or discuss the exercise in the comments below.