2017
DOI: 10.1145/3110278
|View full text |Cite
|
Sign up to set email alerts
|

A metaprogramming framework for formal verification

Abstract: We describe the metaprogramming framework currently used in Lean, an interactive theorem prover based on dependent type theory. This framework extends Lean's object language with an API to some of Lean's internal structures and procedures, and provides ways of reflecting object-level expressions into the metalanguage. We provide evidence to show that our implementation is performant, and that it provides a convenient and flexible way of writing not only small-scale interactive tactics, but also more substantia… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
2
1

Citation Types

0
66
0

Year Published

2018
2018
2020
2020

Publication Types

Select...
6
1
1

Relationship

0
8

Authors

Journals

citations
Cited by 74 publications
(66 citation statements)
references
References 32 publications
0
66
0
Order By: Relevance
“…The Lean project was started by Leonardo de Moura in 2013 [20]. Its most recent version, Lean 3, was released in early 2017 [22]. A new version is under development [57].…”
Section: A History Of Mathlib and Leanmentioning
confidence: 99%
See 1 more Smart Citation
“…The Lean project was started by Leonardo de Moura in 2013 [20]. Its most recent version, Lean 3, was released in early 2017 [22]. A new version is under development [57].…”
Section: A History Of Mathlib and Leanmentioning
confidence: 99%
“…A key feature of Lean 3 is its metaprogramming framework [22]. This allows users to write tactics, commands, and other tools for manipulating the Lean environment directly in the language of Lean itself.…”
Section: A History Of Mathlib and Leanmentioning
confidence: 99%
“…The use of dependent types for code generation is studied by Chlipala [8] and Ebner et al [12]. They use inductive types to guarantee well-formedness of generated code.…”
Section: Related Workmentioning
confidence: 99%
“…Features realized generically in logical frameworks include reasoning about object logics (Twelf [17], Abella [9]), interactive theorem proving (Isabelle [16]), concurrency (CLF [24]), reasoning about contexts (Beluga [18]), rewriting (Dedukti [2]), side conditions (LLF P [12]), or integration with proof assistants (Hybrid [8]). Moreover, many logic-specific systems are investigating how to allow users to experiment with system behavior inside the system, e.g., via meta-programming (for Idris in [4], for Lean in [7]) or unification hints (for Coq in [10], for Matita in [1]).…”
Section: Introduction and Related Workmentioning
confidence: 99%