An introduction to mathematical logic and type theory: to truth through proof
An introduction to mathematical logic and type theory: to truth through proof
A computational logic handbook
A computational logic handbook
Introduction to HOL: a theorem proving environment for higher order logic
Introduction to HOL: a theorem proving environment for higher order logic
Termination of term rewriting using dependency pairs
Theoretical Computer Science - Trees in algebra and programming
The size-change principle for program termination
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Computer-Aided Reasoning: An Approach
Computer-Aided Reasoning: An Approach
Partial Functions in a Total Setting
Journal of Automated Reasoning
Termination of Nested and Mutually Recursive Algorithms
Journal of Automated Reasoning
Induction Proofs with Partial Functions
Journal of Automated Reasoning
Object-Oriented Verification Based on Record Subtyping in Higher-Order Logic
Proceedings of the 11th International Conference on Theorem Proving in Higher Order Logics
TYPES '00 Selected papers from the International Workshop on Types for Proofs and Programs
Journal of Automated Reasoning
Interactive Theorem Proving and Program Development
Interactive Theorem Proving and Program Development
Modelling general recursion in type theory
Mathematical Structures in Computer Science
Efficient execution in an automated reasoning environment
Journal of Functional Programming
Proceedings of the Eighth International Workshop on the ACL2 Theorem Prover and its Applications
General recursion in type theory
TYPES'02 Proceedings of the 2002 international conference on Types for proofs and programs
TLCA'07 Proceedings of the 8th international conference on Typed lambda calculi and applications
Finding lexicographic orders for termination proofs in Isabelle/HOL
TPHOLs'07 Proceedings of the 20th international conference on Theorem proving in higher order logics
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 higher-order logic
IJCAR'06 Proceedings of the Third international joint conference on Automated Reasoning
Recursive functions with higher order domains
TLCA'05 Proceedings of the 7th international conference on Typed Lambda Calculi and Applications
TAP'10 Proceedings of the 4th international conference on Tests and proofs
Termination of Isabelle functions via termination of rewriting
ITP'11 Proceedings of the Second international conference on Interactive theorem proving
Verified efficient enumeration of plane graphs modulo isomorphism
ITP'11 Proceedings of the Second international conference on Interactive theorem proving
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
The optimal fixed point combinator
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
A Two-Valued Logic for Properties of Strict Functional Programs Allowing Partial Functions
Journal of Automated Reasoning
ITP'13 Proceedings of the 4th international conference on Interactive Theorem Proving
Proof Pearl--A Mechanized Proof of GHC's Mergesort
Journal of Automated Reasoning
Hi-index | 0.00 |
Based on inductive definitions, we develop a tool that automates the definition of partial recursive functions in higher-order logic (HOL) and provides appropriate proof rules for reasoning about them. Termination is modeled by an inductive domain predicate which follows the structure of the recursion. Since a partial induction rule is available immediately, partial correctness properties can be proved before termination is established. It turns out that this modularity also facilitates termination arguments for total functions, in particular for nested recursions. Our tool is implemented as a definitional package extending Isabelle/HOL. Various extensions provide convenience to the user: pattern matching, default values, tail recursion, mutual recursion and currying.