Reference. Elegant elaboration with function invocation
We present an elegant design of the core language in a dependently-typed lambda calculus with -reduction and an elaboration algorithm.
Cite
Cites 12 works (2 here)
With notes (2)
A simpler encoding of indexed types zhang-2021-a
In functional programming languages, generalized algebraic data types (GADTs) are very useful as the unnecessary pattern matching over them can be ruled out by the failure of unification of type arguments. In dependent type systems, this is usually called indexed types and it’s particularly useful as the identity type is a special case of it. However, pattern matching over indexed types is very complicated as it requires term unification in general. We study a simplified version of indexed types (called simpler indexed types) where we explicitly specify the selection process of constructors, and we discuss its expressiveness, limitations, and properties.
Elaboration in Dependent Type Theory moura-2015-elaboration
To be usable in practice, interactive theorem provers need to provide convenient and efficient means of writing expressions, definitions, and proofs. This involves inferring information that is often left implicit in an ordinary mathematical text, and resolving ambiguities in mathematical expressions. We refer to the process of passing from a quasi-formal and partially-specified expression to a completely precise formal one as elaboration. We describe an elaboration algorithm for dependent type theory that has been implemented in the Lean theorem prover. Lean’s elaborator supports higher-order unification, type class inference, ad hoc overloading, insertion of coercions, the use of tactics, and the computational reduction of terms. The interactions between these components are subtle and complex, and the elaboration algorithm has been carefully designed to balance efficiency and usability. We describe the central design goals, and the means by which they are achieved.
External (10)
- The Aya Proof Assistant (software) (2021)
- Cubical Agda: A Dependently Typed Programming Language with Univalence and Higher Inductive Types (preprint) (2020)
- Elaborating dependent (co)pattern matching (2018)
- On canonical notion of δ-reduction and on translation of typed λ-terms into untyped λ-terms (2017)
- The Arend Proof Assistant (software) (2015)
- A simple type-theoretic language: Mini-TT (2009)
- Eliminating Dependent Pattern Matching (2006)
- Abstract Computing Machines: A Lambda Calculus Perspective (2005)
- An algorithm for type-checking dependent types (1996)
- Reflection and semantics in LISP (1984)