The symbolic differentiator was easy to write because the differential of an expression is easily constructed by combining the differentials of its sub-expressions. It is always obvious how to split the expression: at the principal operator. Many symbolic problems, such as integration, do not have this property. One may need to try a lot of alternative decompositions before finding the right ones. If we wrote the rules for integration in the same way as we did for differentiation, Prolog would eventually find an answer, but only after much searching.

To improve performance, we can incorporate *strategic knowledge*, to
guide the program in finding the most appropriate rule. I shall
illustrate this in equation-solving, for example transforming
to .

Successful human equation do not apply the axioms of algebra blindly.
Instead, they have learnt various strategies. *PRESS* was a program,
written by Alan Bundy of Edinburgh University, for solving the equations
found in applied mechanics problems from English A-level questions. It
was part of a bigger program called MECHO, for reading and answering
these questions. In writing it, Bundy incorporated knowledge gleaned by
observing human mathematicians. See ``The Computer Modelling of Mathematical
Reasoning'' by Bundy.

Mon Jul 17 22:27:41 BST 1995