Proceedings of the 21st ACM SIGPLAN International Conference on Functional Programming 2016
DOI: 10.1145/2951913.2951932
|View full text |Cite
|
Sign up to set email alerts
|

Elaborator reflection: extending Idris in Idris

Abstract: Many programming languages and proof assistants are defined by elaboration from a high-level language with a great deal of implicit information to a highly explicit core language. In many advanced languages, these elaboration facilities contain powerful tools for program construction, but these tools are rarely designed to be repurposed by users. We describe elaborator reflection, a paradigm for metaprogramming in which the elaboration machinery is made directly available to metaprograms, as well as a concrete… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
3
1
1

Citation Types

0
21
0

Year Published

2018
2018
2024
2024

Publication Types

Select...
4
1

Relationship

0
5

Authors

Journals

citations
Cited by 21 publications
(21 citation statements)
references
References 24 publications
0
21
0
Order By: Relevance
“…Moving away from SMT-based verifiers, ITPs have long relied on separate languages for proof scripting, starting with Edinburgh LCF [38] and ML, and continuing with HOL, Isabelle and Coq, which are either extensible via ML, or have dedicated tactic languages [4,30,57,63]. Meta-F builds instead on a recent idea in the space of dependently typed ITPs [23,31,43,64] of reusing the object-language as the meta-language. This idea first appeared in Mtac, a Coq-based tactics framework for Coq [43,64], and has many generic benefits including reusing the standard library, IDE support, and type checker of the proof assistant.…”
Section: Related Workmentioning
confidence: 99%
See 1 more Smart Citation
“…Moving away from SMT-based verifiers, ITPs have long relied on separate languages for proof scripting, starting with Edinburgh LCF [38] and ML, and continuing with HOL, Isabelle and Coq, which are either extensible via ML, or have dedicated tactic languages [4,30,57,63]. Meta-F builds instead on a recent idea in the space of dependently typed ITPs [23,31,43,64] of reusing the object-language as the meta-language. This idea first appeared in Mtac, a Coq-based tactics framework for Coq [43,64], and has many generic benefits including reusing the standard library, IDE support, and type checker of the proof assistant.…”
Section: Related Workmentioning
confidence: 99%
“…Mtac can additionally check the partial correctness of tactics, which is also sometimes possible in Meta-F but still rather limited ( §3.4). Meta-F 's design is instead more closely inspired by the metaprogramming frameworks of Idris [23] and Lean [31], which provide a deep embedding of terms that metaprograms can inspect and construct at will without dependent types getting in the way. However, F 's effects, its weakest precondition calculus, and its use of SMT solvers distinguish Meta-F from these other frameworks, presenting both challenges and opportunities, as discussed in this paper.…”
Section: Related Workmentioning
confidence: 99%
“…The convenience of programming in Agda, combined with the ability to avoid axiom K, makes it a good laboratory for experimenting macro mc1 : Term → Term → TC ⊤ mc1 exp hole = do exp' ← quoteTC exp unify hole exp' sampleTerm : Term sampleTerm = mc1 (λ (n : Nat) → n) Agda's reflection library enables compile-time metaprogramming. This reflection library directly exposes parts of the implementation of Agda's type checker and elaborator for use by metaprograms, in a manner that is similar to Idris's elaborator reflection [22,6] and Lean's tactic metaprogramming [23]. The type checker's implementation is exposed as effects in a monad called TC.…”
Section: Agda Reflectionmentioning
confidence: 99%
“…Boilerplate postulates, however, are not just inconvenient, they are also an opportunity to make mistakes. Luckily, this boilerplate code can be mechanically generated using Agda's recent support for elaborator reflection [6], a paradigm for metaprogramming in an implementation of type theory. An elaborator is the part of the implementation that translates a convenient language designed for humans into a much simpler, more explicit, verbose language designed to be easy for a machine to process.…”
Section: Introductionmentioning
confidence: 99%
“…See [6,9,14,31,33,42,49] for a selection of the work done on using reflection in Coq. Many other systems also support metareasoning and reflection: Agda [48,55,56], Idris [16,15,17] Isabelle/HOL [13], Lean [24], Maude [19], PVS [37], reFLect [34,46],and Theorema [28,10].…”
Section: Related Workmentioning
confidence: 99%