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
The formal semantics of programming languages: an introduction
The formal semantics of programming languages: an introduction
Handbook of logic in computer science (vol. 1)
Handbook of logic in computer science (vol. 2)
The Definition of Standard ML
Partial Functions in a Total Setting
Journal of Automated Reasoning
Proceedings of the 15th International Conference on Theorem Proving in Higher Order Logics
TPHOLs '02 Proceedings of the 15th International Conference on Theorem Proving in Higher Order Logics
LPAR '92 Proceedings of the International Conference on Logic Programming and Automated Reasoning
Inductively Defined Types in the Calculus of Constructions
Proceedings of the 5th International Conference on Mathematical Foundations of Programming Semantics
Weakest Precondition for General Recursive Programs Formalized in Coq
TPHOLs '02 Proceedings of the 15th 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
COLOG '88 Proceedings of the International Conference on Computer Logic
Simple general recursion in type theory
Nordic Journal of Computing
Proof-assistants using dependent type systems
Handbook of automated reasoning
A categorical programming language
A categorical programming language
Type-based termination of recursive definitions
Mathematical Structures in Computer Science
Journal of Functional Programming
Lectures on the Curry-Howard Isomorphism, Volume 149 (Studies in Logic and the Foundations of Mathematics)
General recursion in type theory
TYPES'02 Proceedings of the 2002 international conference on Types for proofs and programs
Recursive functions with higher order domains
TLCA'05 Proceedings of the 7th international conference on Typed Lambda Calculi and Applications
Recursive coalgebras from comonads
Information and Computation - Special issue: Seventh workshop on coalgebraic methods in computer science 2004
Constructive analysis, types and exact real numbers
Mathematical Structures in Computer Science
Inductive and Coinductive Components of Corecursive Functions in Coq
Electronic Notes in Theoretical Computer Science (ENTCS)
Automating Side Conditions in Formalized Partial Functions
Proceedings of the 9th AISC international conference, the 15th Calculemas symposium, and the 7th international MKM conference on Intelligent Computer Mathematics
A Type of Partial Recursive Functions
TPHOLs '08 Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics
Embedding a logical theory of constructions in Agda
Proceedings of the 3rd workshop on Programming languages meets program verification
Another Look at Function Domains
Electronic Notes in Theoretical Computer Science (ENTCS)
Algebra of programming in agda: Dependent types for relational program derivation
Journal of Functional Programming
Recursive Coalgebras from Comonads
Electronic Notes in Theoretical Computer Science (ENTCS)
Recursive coalgebras from comonads
Information and Computation - Special issue: Seventh workshop on coalgebraic methods in computer science 2004
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
CIC∧: type-based termination of recursive definitions in the calculus of inductive constructions
LPAR'06 Proceedings of the 13th international conference on Logic for Programming, Artificial Intelligence, and Reasoning
Defining and reasoning about recursive functions: a practical tool for the coq proof assistant
FLOPS'06 Proceedings of the 8th international conference on Functional and Logic Programming
Partial recursive functions in martin-löf type theory
CiE'06 Proceedings of the Second conference on Computability in Europe: logical Approaches to Computational Barriers
Equational reasoning about programs with general recursion and call-by-value semantics
PLPV '12 Proceedings of the sixth workshop on Programming languages meets program verification
Partial recursive functions in higher-order logic
IJCAR'06 Proceedings of the Third international joint conference on Automated Reasoning
Sorted: Verifying the problem of the dutch national flag in agda
Journal of Functional Programming
TYPES'04 Proceedings of the 2004 international conference on Types for Proofs and Programs
Recursive functions with higher order domains
TLCA'05 Proceedings of the 7th international conference on Typed Lambda Calculi and Applications
Privacy in data mining using formal methods
TLCA'05 Proceedings of the 7th international conference on Typed Lambda Calculi and Applications
Equations: a dependent pattern-matching compiler
ITP'10 Proceedings of the First international conference on Interactive Theorem Proving
Combining interactive and automatic reasoning in first order theories of functional programs
FOSSACS'12 Proceedings of the 15th international conference on Foundations of Software Science and Computational Structures
Hi-index | 0.00 |
Constructive type theory is an expressive programming language in which both algorithms and proofs can be represented. A limitation of constructive type theory as a programming language is that only terminating programs can be defined in it. Hence, general recursive algorithms have no direct formalisation in type theory since they contain recursive calls that satisfy no syntactic condition guaranteeing termination. In this work, we present a method to formalise general recursive algorithms in type theory. Given a general recursive algorithm, our method is to define an inductive special-purpose accessibility predicate that characterises the inputs on which the algorithm terminates. The type-theoretic version of the algorithm is then defined by structural recursion on the proof that the input values satisfy this predicate. The method separates the computational and logical parts of the definitions and thus 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. Here, we give a formal definition of the method and discuss its power and its limitations.