The importance of search problems in computer science has led to many advances in search techniques. However, techniques developed for a particular search problem may not be easily applied to other problems. In this paper, we take an abstract view of search problems by describing search procedures as particular kinds of proofs in type theory, using the proofs-as-programs paradigm. We explore in depth a large family of search problems and present a constructive proof which leads to a correct search procedure for these problems. We show how classical logic can describe a typical use of nonlocal control in the search algorithm that results when we extend this proof to encorporate intelligent backtracking techniques such as`con ict-directed backjumping' (CBJ). We show how to avoid most of the problems traditionally associated with extracting programs from formal proofs, by a Nuprl formalization leading to a runnable Scheme program. We use this program to implement CBJ and demonstrate its value for the Hamiltonian circuit problem. Our work is important in demonstrating an important application of the proofs-asprograms paradigm in practice, and for showing the true generality of con ict-directed backjumping and the ease with which it can now be applied to new problems. Authors are named in alphabetical order although Judith Underwood is principal author. We thank members of APES for their help. Ian Gent and Judith Underwood especially thank Mr Denis Magnus for his invaluable contributions to their research.
Caldwell, Gent and Underwood have considered program extraction from classical proofs in the proof assistant NuPrl REF .
Search algorithms in type theory
Theor. Comput. Sci.
Computer Science