Section: Scientific Foundations
Keywords : proof search, logic programming, linear logic.
Proof search
Participants : David Baelde, Dale Miller, Alexis Saurin, Lutz Straßburger.
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 de-emphasized.
-
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 [34] and [32] .
-
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) [26] .
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 [18] , Lolli of Hodas and Miller
[31] , and Forum of Miller [38] .
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 [3]
and reachability within progress calculi, such as the
-calculus
[6] , [47] , [50] ,
[51] .