nbe-kripke-racket/README.md
Yiyun Liu d897ccce09
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Add README.md
2025-04-29 18:17:49 -04:00

15 lines
830 B
Markdown

# Kripke-style untyped NbE in racket
[![status-badge](https://woodpecker.electriclam.com/api/badges/4/status.svg)](https://woodpecker.electriclam.com/repos/4)
An implementation of normalization by evaluation loosely based on [A
Denotational Account of Untyped Normalization by
Evaluation](https://www.brics.dk/RS/03/40/BRICS-RS-03-40.pdf) and
[Abel's thesis on NbE](https://www.cse.chalmers.se/~abela/habil.pdf).
Since the implementation is untyped, the `normalize` function only
gives you $\beta$-normal forms. However, you can get a little bit of
$\beta\eta$-equivalence by invoking Coquand's algorithm (`η-eq?`) on
$\beta$-normal forms.
I'm hoping to expand the repository into a benchmark suite where I can
visualize the performance trade-off of type-directed NbE compared to
untyped NbE composed with Coquand's algorithm.