Backward chaining, rather than forward chaining, is the method of choice for most search problems. The reason is that backward chaining causes variables to be bound to the constant data of the problem of interest, and thus greatly reduces the size of the search space.

** Example:**

*&forall x &forall y WIFE(x,y) &rarr LOVES(x,y)*

*WIFE(John,Mary)*

*WIFE(Bill,Jane)*

...

Suppose we want to prove LOVES(John,Mary). Backward chaining will bind x and y in the theorem, do a single database lookup of WIFE(John,Mary), and succeed. Forward chaining will assert the LOVES relationship for every WIFE pair in the database until it happens to hit LOVES(John,Mary).