Section: Scientific Foundations
Keywords : type theory, induction, coinduction, higherorder abstract syntax.
A type theory for proof search
Participants : Joëlle Despeyroux, Dale Miller.
Type theory can be used to specify and reason about computation using much as LINC is used as a to reason about computation. The metalevel would be, for example, CIC. The applications would in principle be the same, except that conventional type theories are often better suited for proofs in mathematics and less suited for encoding of languages with binders, although Coq can certainly code reachability of, say, the calculus [1] .
The type theory approach does not need to make a distinction between metalogic and objectlogic, which may make specifications more compactness and elegance. This approach also avoids the duplication of code. However, we like the flexibility given by the existence of two different metalogics in LINC. Note that the Isabelle system also uses two metalogics, giving rise to several systems that people can choose: Isabelle/ZF, Isabelle/HOL, etc. Having a single metalogic is more natural in the context of a rich type theory. Outside this context, we think that both choices make sense.
More points of comparison between the two approaches are listed below.

Type theory is generally explained using natural deduction , whereas proof search usually relies on sequent calculus . Normalization of proofs in type theory correspond to computation. In contrast, proof search explores only normal proofs (cutfree proofs) and uses normalization (cutelimination) for reasoning about computation.

Type theory provides a fixed, rich notion of proof, usually with dependent types, while there is no apriori notion of proofs as objects in proof search, although most proof search systems provide primitives for building proof objects.

The development of proofs using relational specifications require the instantiation of quantified variables. Proof search systems provide unification and backtracking search to fully automate such instantiations. In type theory, such instantiations are usually done interactively.

In type theory, object level bindings are either coded as functions (a priori, a wrong choice) or names or deBruijn numbers (usually messy), while binding in syntax can be naturally supported by the meta logic in proof search (as in Prolog and Twelf).

The new quantifier in LINC describes the intensional behavior of abstraction, which has no (current) correspondence in type theory.
In their first experiments [19] , [18] , Despeyroux, Hirschowitz, and Felty worked in the Coq system. They defined certain expressions in higherorder abstract syntax as ``valid'' expressions (using an inductively defined predicate ``valid'') to describe a well defined subpart of all the functional terms corresponding roughly to syntactic expressions.
In a second step, Despeyroux, Pfenning, Leleu, and Schürmann proposed two different, yet similar type theories [20] , [23] , [21] based on modal logic in which expressions live in the functional space AB while general functions (for case and iteration reasoning in the proposed systems) live in the full functional space . An initial attempt to extend the systems in [20] , [21] to dependent types was given in [22] : clearly more work on that kind of extension is needed. These papers give a possible answer to the problem of extending the Edinburgh Logical Framework (LF is a subsystem of CC where the function space is restricted to trees) with recursion and induction principles.
Pfenning and Schürmann then proposed a different (two levels) system to which it was easier to add dependent types [44] , [43] .
The previous works mentioned proposed principles for recursion. In the traditional functional approach, in a rich type theory like CIC, those principles naturally come with their counterparts at the level of types: the principles for induction. In proof search, the situation is less clear. Among the works proposing principles for induction in our context, let us cite the similar induction principles independently discovered by Despeyroux & coworkers at the proof level [19] , [20] , [21] and by Hofmann at the model level [32] . There is also the work by Miller and McDowell [35] and more recently the work by Momigliano and Tiu on LINC [41] .