Section: Scientific Foundations
Keywords : proof search, logic programming, linear logic.
The term ``proof search'' refers to a modern updating of the logic programming paradigm. In particular, that update implies several things that have not been generally embraced by the logic programming community.
Proof search takes its motivation for new design and analysis from proof theory instead of model theory. Proof theory provides a solid foundation for explaining logic programming generally and has been a productive framework for motivating exciting new programming languages.
Proof theory allows for relatively easy exploring of such intensional aspects of computation as binders, binder mobility, and resource management.
Proof search, given its foundations in ``finitistic'' proof theory often allows one to move quickly to consider implementations using logic variables, unification, backtracking, resource-splitting, explicit substitutions, etc.
Proof search has a focus on logically correct deduction. In particular, many short cuts that have been easy to implement in, say, Prolog systems, such as negation-as-failure, Prolog's cut, unsound unification, etc, are generally deemphasized.
Proof search emphasizes specifications and execution of specifications rather than programming and pure performance. Emphasis is more generally on clear and deductive specifications. There are, however, at least a couple of examples of when the more declarative specification also turned out to provide the more effective implementation (given suitable compilers): see  and  .
Proof search design and theory also focuses on the meaning of logical connectives and quantifiers. This focus is in contrast to the focus of constraint logic programming (on processing of constraints on terms) and concurrent logic programming language (with their focus on novel readings of logic variables or constraints)  .
The proof theory of proof search has been used to design various logic programming languages. In the late 1980's, sequent calculus for intuitionistic logic was used to motivate the various extensions now incorporated into Prolog. Later, linear logic programming languages have been introduced: in particular, LO of Andreoli and Pareschi  , Lolli of Hodas and Miller  , and Forum of Miller  .
A key application area for proof search and the above logic programs is the specification of operational semantics. Particularly successful specifications along these lines are those of evaluation and typing for the untyped -calculus  and reachability within progress calculi, such as the -calculus  ,  ,  ,  .