Skip to content

hazelgrove/dependent-hazelnut

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dependent Hazelnut

An experimental structured editing environment for a rudimentary dependently typed language, based on the theory of Hazel, specifically the marked lambda calculus.

Usage notes

The purple circles are holes. The let bindings and functions look non-standard. Hopefully you can figure out what they are. The boxes are type universes. Use arrow keys to move, tab to go to the next hole. apologize to anyone who actually tries to move the cursor around in the current state.

Type "fun," "let," or "typ," then press space, to create a function, let-binding, or type universe. Type "=" to create an arrow type. Press space to create a function application.

Tactical edit actions: Press ctrl+r to refine a hole into a function abstraction if the goal is an arrow. Press ctrl+e to introduce a step of equational reasoning, if the goal is an equation. When selecting a subterm of the last equational reasoning term, press ctrl+e to rewrite that subterm.

UI Screenshot: image

Todos

  • Eta equivalence

  • Full normalization

  • Basic type hole inference

  • Fix Type : Type

  • Better editing flow

  • Better visuals

  • Additional type theoretic features

    • Inductive declarations
    • Record types
    • Quotient types
    • Gauge types

Known Bugs:

  • Visual capture
  • Goal can be out of scope
  • Misleading projections

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages