Reduction Techniques for First-Order Reasoning

We have outlined a completion procedure for first-order clausal reasoning with inspiration from completion procedures for equational reasoning. We believe this to be a useful method for many practical applications involving clausal reasoning where the theory stays constant and is used repeatedly for proving many goals. Program synthesis (see [3]) is such an application. We have implemented a prototype completion procedure in Prolog and used it for simple examples. We are currently involved in integrating it with the Focus program derivation system.