Journal of Symbolic Computation
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
A framework for defining logics
Journal of the ACM (JACM)
The size-change principle for program termination
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Theoretical Computer Science - Special issue on theories of types and proofs
Structural Recursive Definitions in Type Theory
ICALP '98 Proceedings of the 25th International Colloquium on Automata, Languages and Programming
Codifying Guarded Definitions with Recursive Schemes
TYPES '94 Selected papers from the International Workshop on Types for Proofs and Programs
Analysis of a Guard Condition in Type Theory (Extended Abstract)
FoSSaCS '98 Proceedings of the First International Conference on Foundations of Software Science and Computation Structure
Termination Analysis for Functional Programs using Term Orderings
SAS '95 Proceedings of the Second International Symposium on Static Analysis
Argument-Bounded Algorithms as a Basis for Automated Termination Proofs
Proceedings of the 9th International Conference on Automated Deduction
CADE-13 Proceedings of the 13th International Conference on Automated Deduction: Automated Deduction
A Predicative Strong Normalisation Proof for a lambda-Calculus with Interleaving Inductive Types
TYPES '99 Selected papers from the International Workshop on Types for Proofs and Programs
Specification and Verification of a Formal System for Structurally Recursive Functions
TYPES '99 Selected papers from the International Workshop on Types for Proofs and Programs
An Introduction to Dependent Type Theory
Applied Semantics, International Summer School, APPSEM 2000, Caminha, Portugal, September 9-15, 2000, Advanced Lectures
Type-based termination of recursive definitions
Mathematical Structures in Computer Science
Journal of Functional Programming
Verifying Termination and Reduction Properties about Higher-Order Logic Programs
Journal of Automated Reasoning
Adapting functional programs to higher order logic
Higher-Order and Symbolic Computation
ACM Transactions on Computational Logic (TOCL)
Termination and productivity checking with continuous types
TLCA'03 Proceedings of the 6th international conference on Typed lambda calculi and applications
A formalisation of a dependently typed language as an inductive-recursive family
TYPES'06 Proceedings of the 2006 international conference on Types for proofs and programs
Finding lexicographic orders for termination proofs in Isabelle/HOL
TPHOLs'07 Proceedings of the 20th international conference on Theorem proving in higher order logics
Hereditary substitutions for simple types, formalized
Proceedings of the third ACM SIGPLAN workshop on Mathematically structured functional programming
Subtyping, declaratively: an exercise in mixed induction and coinduction
MPC'10 Proceedings of the 10th international conference on Mathematics of program construction
Proving the unique fixed-point principle correct: an adventure with category theory
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Epigram: practical programming with dependent types
AFP'04 Proceedings of the 5th international conference on Advanced Functional Programming
Agda-curious?: an exploration of programming with dependent types
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
We introduce a language based upon lambda calculus with products, coproducts and strictly positive inductive types that allows the definition of recursive terms. We present the implementation (foetus) of a syntactical check that ensures that all such terms are structurally recursive, i.e. recursive calls appear only with arguments structurally smaller than the input parameters of terms considered. To ensure the correctness of the termination checker, we show that all structurally recursive terms are normalizing with respect to a given operational semantics. To this end, we define a semantics on all types and a structural ordering on the values in this semantics and prove that all values are accessible with regard to this ordering. Finally, we point out how to do this proof predicatively using set based operators.