Metaprogramming allows users to write programs that write programs. In dependently-typed languages such as Idris, recent work on elaborator reflection [17] paved the way for new applications of metaprogramming by showing that a tacticbased proof language can be substituted with a monadic interface that exposes the internal elaborator. The goal of our work is to use elaborator reflection to write editor interaction actions in Idris. Currently in Idris modes of editors such as Emacs, users can perform actions like type-checking holes, case-splitting, and lemma extraction. Implementations of all of these Idris editor actions are hard-coded in the compiler, and they are written in Haskell. Our work will allow us to rewrite them in Idris as metaprograms and to move them into an Idris library, instead of having them embedded into the compiler. 4.1. New constructors for the new Elab primitives, and function definitions based on them. 4.2. The relationship between reflection, reification, quotation, unquotation, elaboration and delaboration. 4.3. The function to reflect Haskell terms of the type SExp to the internal representations of Idris terms of the Idris type SExp. 4.4. The function to reify the internal representations of Idris terms of the Idris type SExp to Haskell terms of the type SExp. 4.5. The runElabAction function in the compiler, how Elab action terms are run under the hood. viii 4.6. Adding cases for Prim__FromEditor and Prim__ToEditor in runTacTm in the compiler. 4.7. The function elabEditAt that runs editor actions in the compiler. 4.8. The function collectTypes to dissect a type signature to its components. 5.1. Implementation of the edit-time tactic for "add clause". 5.2. Example function to run addClause on. 5.3. Result of running addClause on the example function. 5.4. Definitions of Context and Sequent for Hezarfen. 5.5. The "Either implies" case in Hezarfen 5.6. Rudimentary implementation of reduce in Hezarfen. 6.1. Definition of hole_command in Lean. ix CHAPTER 1 Especially as dependent types gradually sneak into mainstream languages, like they already have to Haskell [26] and Scala [3], we predict that TDD will only get more popular. 2 Propositions and types are distinct in these systems.
We have developed a web-based pedagogical proof assistant, the Proof Tree Builder, that lets you apply rules upwards from the initial goal in sequent calculus and Hoare logic for a simple imperative language. We equipped our tool with a basic proof automation feature and Z3 integration. Students in the automated reasoning course at Princeton University used our tool and found it intuitive. The Proof Tree Builder is available online at https://proof-tree-builder.github.io.
for the emotional support they provided by putting up with me babbling ceaselessly about linguistics and politics. Finally, I would like to thank Cloie for helping me find a logic pun for my thesis title.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.
customersupport@researchsolutions.com
10624 S. Eastern Ave., Ste. A-614
Henderson, NV 89052, USA
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Copyright © 2025 scite LLC. All rights reserved.
Made with 💙 for researchers
Part of the Research Solutions Family.