We gratefully acknowledge support from
the Simons Foundation and member institutions.
Full-text links:

Download:

Current browse context:

cs.PL

Change to browse by:

cs

References & Citations

DBLP - CS Bibliography

Bookmark

(what is this?)
CiteULike logo BibSonomy logo Mendeley logo del.icio.us logo Digg logo Reddit logo

Computer Science > Programming Languages

Title: Beyond Notations: Hygienic Macro Expansion for Theorem Proving Languages

Abstract: In interactive theorem provers (ITPs), extensible syntax is not only crucial to lower the cognitive burden of manipulating complex mathematical objects, but plays a critical role in developing reusable abstractions in libraries. Most ITPs support such extensions in the form of restrictive "syntax sugar" substitutions and other ad hoc mechanisms, which are too rudimentary to support many desirable abstractions. As a result, libraries are littered with unnecessary redundancy. Tactic languages in these systems are plagued by a seemingly unrelated issue: accidental name capture, which often produces unexpected and counterintuitive behavior. We take ideas from the Scheme family of programming languages and solve these two problems simultaneously by proposing a novel hygienic macro system custom-built for ITPs. We further describe how our approach can be extended to cover type-directed macro expansion resulting in a single, uniform system offering multiple abstraction levels that range from supporting simplest syntax sugars to elaboration of formerly baked-in syntax. We have implemented our new macro system and integrated it into the new version of the Lean theorem prover, Lean 4. Despite its expressivity, the macro system is simple enough that it can easily be integrated into other systems.
Subjects: Programming Languages (cs.PL)
Journal reference: Logical Methods in Computer Science, Volume 18, Issue 2 (April 13, 2022) lmcs:7421
DOI: 10.46298/lmcs-18(2:1)2022
Cite as: arXiv:2001.10490 [cs.PL]
  (or arXiv:2001.10490v7 [cs.PL] for this version)

Submission history

From: Sebastian Ullrich [view email] [via LOGICAL proxy]
[v1] Tue, 28 Jan 2020 17:49:29 GMT (29kb,D)
[v2] Thu, 26 Mar 2020 23:03:20 GMT (29kb,D)
[v3] Thu, 16 Apr 2020 09:10:16 GMT (31kb,D)
[v4] Thu, 29 Apr 2021 13:12:46 GMT (36kb,D)
[v5] Mon, 20 Dec 2021 14:22:17 GMT (37kb)
[v6] Tue, 15 Feb 2022 10:32:57 GMT (38kb)
[v7] Tue, 12 Apr 2022 12:44:09 GMT (47kb,D)

Link back to: arXiv, form interface, contact.