Inductive Invariants for Nested Recursion

We show that certain input-output relations, termed inductive invariants are of central importance for termination proofs of algorithms defined by nested recursion. Inductive invariants can be used to enhance recursive function definition packages in higher-order logic mechanizations. We demonstrate the usefulness of inductive invariants on a large example of the BDD algorithm APPLY. Finally, we introduce a related concept of inductive fixpoints with the property that for every functional in higher-order logic there exists a largest partial function that is such a fixpoint.

[1]  Jean Goubault-Larrecq,et al.  Reflecting BDDs in Coq , 2000, ASIAN.

[2]  Harald Ruess,et al.  Case Studies in Meta-Level Theorem Proving , 1998, TPHOLs.

[3]  Venanzio Capretta,et al.  Type-Theoretic Functional Semantics , 2002, TPHOLs.

[4]  Venanzio Capretta,et al.  Nested General Recursion and Partiality in Type Theory , 2001, TPHOLs.

[5]  Lawrence C. Paulson Proving termination of normalization functions for conditional expressions , 2004, Journal of Automated Reasoning.

[6]  Tobias Nipkow,et al.  HOLCF = HOL + LCF , 1999, Journal of Functional Programming.

[7]  Konrad Slind,et al.  Function Definition in Higher-Order Logic , 1996, TPHOLs.

[8]  Venanzio Capretta,et al.  Modelling general recursion in type theory , 2005, Mathematical Structures in Computer Science.

[9]  J. Strother Moore,et al.  A Mechanical Proof of the Termination of Takeuchi's Function , 1979, Inf. Process. Lett..

[10]  Robert W. Sumners,et al.  Correctness Proof of a BDD Manager in the Context of Satisfiability Checking , 2000, ACL 2000.

[11]  Konrad Slind,et al.  Treating Partiality in a Logic of Total Functions , 1997, Comput. J..

[12]  John Matthews,et al.  Verifying BDD Algorithms through Monadic Interpretation , 2002, VMCAI.

[13]  Konrad Slind Reasoning about terminating functional programs , 1999 .

[14]  Randal E. Bryant,et al.  Graph-Based Algorithms for Boolean Function Manipulation , 1986, IEEE Transactions on Computers.

[15]  John Matthews Recursive Function Definition over Coinductive Types , 1999, TPHOLs.

[16]  Tobias Nipkow,et al.  A Proof Assistant for Higher-Order Logic , 2002 .

[17]  John Harrison,et al.  Inductive Definitions: Automation and Application , 1995, TPHOLs.

[18]  R. Stephenson A and V , 1962, The British journal of ophthalmology.

[19]  H. Andersen An Introduction to Binary Decision Diagrams , 1997 .

[20]  Glynn Winskel,et al.  The formal semantics of programming languages - an introduction , 1993, Foundation of computing series.

[21]  Zohar Manna,et al.  The optimal approach to recursive programs , 1977, Commun. ACM.

[22]  Jürgen Giesl Termination of Nested and Mutually Recursive Algorithms , 2004, Journal of Automated Reasoning.

[23]  Konrad Slind,et al.  Another Look at Nested Recursion , 2000, TPHOLs.