The logical framework LF [HHP93] offers concise encodings of deductive systems and their meta-theory. Twelf [SP98] is a realization of LF. It provides a higher-order logic programming language for the implementation of deductive systems as well as a higher-order inductive theorem prover to automatically prove properties about these systems. The inductive theorem prover has been used successfully to prove several challenging theorems like cut-admissibility of intuitionistic logic and the Church-Rosser theorem. Under the proofs-asprograms paradigm the application of the induction hypothesis (IH) in a proof corresponds to the recursive call in a program. To check that the IH application is valid, we need to show that the induction hypothesis is smaller than the induction conclusion according to a well-founded order. This corresponds to proving that the arguments in the recursive call decrease according to a well-founded order, i.e., a program terminates. Twelf uses a termination checker based on structural ordering [RP96] to check termination of programs and to generate valid induction hypotheses according to a given order. We are interested in extending the power of the induction component to enable complete induction or so called course-of-value ind. Complete induction plays an important role in proofs about sequences of computation. These proofs follow by induction on the structure of the computation sequence. Often we do not only want to apply the induction hypothesis to immediate subsequences, but to all smaller subsequences. In general, we also want to be able to apply the induction hypothesis to the outcome of a previous IH application. This can be done by first showing that the computation sequence resulting from the IH application is smaller than the sequence we applied the IH to. Then we verify that each IH application itself is valid, i.e. the sequence we apply the IH to is smaller than the original sequence. To show that a subcomputation is smaller than the original sequence of computation we need to reason about orders relating subsequences. In this paper, we present a reduction and termination checker which reasons about orders. The reduction checker verifies properties relating input and out-
[1]
Frank Pfenning,et al.
Structural cut elimination
,
1995,
Proceedings of Tenth Annual IEEE Symposium on Logic in Computer Science.
[2]
Jürgen Giesl,et al.
Termination of term rewriting using dependency pairs
,
2000,
Theor. Comput. Sci..
[3]
Alan Bundy,et al.
Extensions to the Estimation Calculus
,
1999,
LPAR.
[4]
Frank Pfenning,et al.
Automated Theorem Proving in a Simple Meta-Logic for LF
,
1998,
CADE.
[5]
Frank Pfenning,et al.
Mode and Termination Checking for Higher-Order Logic Programs
,
1996,
ESOP.
[6]
Patrick J. Hayes,et al.
Computation and Deduction
,
1973,
MFCS.
[7]
Forbes AvenuePittsburgh,et al.
Compiler Veriication in Lf
,
1992
.
[8]
John Hannan,et al.
Compiler verification in LF
,
1992,
[1992] Proceedings of the Seventh Annual IEEE Symposium on Logic in Computer Science.
[9]
Olav Lysne,et al.
A Termination Ordering for Higher Order Rewrite System
,
1995,
RTA.
[10]
Femke van Raamsdonk,et al.
Higher-Order Rewriting
,
1999,
RTA.
[11]
Albert Rubio,et al.
The higher-order recursive path ordering
,
1999,
Proceedings. 14th Symposium on Logic in Computer Science (Cat. No. PR00158).
[12]
Furio Honsell,et al.
A framework for defining logics
,
1993,
JACM.
[13]
Helmut Schwichtenberg,et al.
Strict Functionals for Termination Proofs
,
1995,
TLCA.