Proving termination of normalization functions for conditional expressions
Journal of Automated Reasoning
Information and Computation - Semantics of Data Types
Programming in Martin-Lo¨f's type theory: an introduction
Programming in Martin-Lo¨f's type theory: an introduction
Partial Functions in a Total Setting
Journal of Automated Reasoning
Termination of Nested and Mutually Recursive Algorithms
Journal of Automated Reasoning
Proceedings of the 13th International Conference on Theorem Proving in Higher Order Logics
TPHOLs '00 Proceedings of the 13th International Conference on Theorem Proving in Higher Order Logics
Function Definition in Higher-Order Logic
TPHOLs '96 Proceedings of the 9th International Conference on Theorem Proving in Higher Order Logics
Type-Theoretic Functional Semantics
TPHOLs '02 Proceedings of the 15th International Conference on Theorem Proving in Higher Order Logics
Simple general recursion in type theory
Nordic Journal of Computing
Type-based termination of recursive definitions
Mathematical Structures in Computer Science
Journal of Functional Programming
Modelling general recursion in type theory
Mathematical Structures in Computer Science
Inductive and Coinductive Components of Corecursive Functions in Coq
Electronic Notes in Theoretical Computer Science (ENTCS)
Fixed point semantics and partial recursion in Coq
Proceedings of the 10th international ACM SIGPLAN conference on Principles and practice of declarative programming
A Type of Partial Recursive Functions
TPHOLs '08 Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics
Another Look at Function Domains
Electronic Notes in Theoretical Computer Science (ENTCS)
Partial and Nested Recursive Function Definitions in Higher-order Logic
Journal of Automated Reasoning
TLCA'07 Proceedings of the 8th international conference on Typed lambda calculi and applications
Recursive functions with higher order domains
TLCA'05 Proceedings of the 7th international conference on Typed Lambda Calculi and Applications
Hi-index | 0.00 |
In this work, a method to formalise general recursive algorithms in constructive type theory is presented throughout examples. The method separates the computational and logical parts of the definitions. As a consequence, the resulting type-theoretic algorithms are clear, compact and easy to understand. They are as simple as their equivalents in a functional programming language, where there is no restriction on recursive calls. Given a general recursive algorithm, the method consists in defining an inductive special-purpose accessibility predicate that characterises the inputs on which the algorithm terminates. The type-theoretic version of the algorithm can then be defined by structural recursion on the proof that the input values satisfy this predicate. When formalising nested algorithms, the special-purpose accessibility predicate and the type-theoretic version of the algorithm must be defined simultaneously because they depend on each other. Since the method separates the computational part from the logical part of a definition, formalising partial functions becomes also possible.