MiniAgda: Integrating Sized and Dependent Types
arXiv:1012.4896 · doi:10.4204/EPTCS.43.2
Abstract
Sized types are a modular and theoretically well-understood tool for checking termination of recursive and productivity of corecursive definitions. The essential idea is to track structural descent and guardedness in the type system to make termination checking robust and suitable for strong abstractions like higher-order functions and polymorphism. To study the application of sized types to proof assistants and programming languages based on dependent type theory, we have implemented a core language, MiniAgda, with explicit handling of sizes. New considerations were necessary to soundly integrate sized types with dependencies and pattern matching, which was made possible by concepts such as inaccessible patterns and parametric function spaces. This paper provides an introduction to MiniAgda by example and informal explanations of the underlying principles.
In Proceedings PAR 2010, arXiv:1012.4555
References in corpus (2)
Cited by in corpus (10)
- Type-Based Termination, Inflationary Fixed-Points, and Mixed Inductive-Coinductive Types
- Polymorphic Iterable Sequential Effect Systems
- A Formal Comparison of Approaches to Datatype-Generic Programming
- Is Sized Typing for Coq Practical?
- Monotone recursive types and recursive data representations in Cedille
- The Size-Change Principle for Mixed Inductive and Coinductive types
- Coinduction: an elementary approach
- Course-of-Value Induction in Cedille
- Coinductive Invertibility in Higher Categories
- Elaborating Inductive Definitions and Course-of-Values Induction in Cedille