Skip to content

A refinement type checker for simply typed lamda calculus with inductive data-types and well-founded recursive functions

License

Notifications You must be signed in to change notification settings

mzacho/refinement-types

Repository files navigation

Refinement types

A refinement type checker for simply typed lamda calculus with inductive data-types and well-founded recursive functions.

Based on the tutorial by Ranjit Jhala and Niki Vazou. See report.pdf for details.

5 ECTS project work for the class on Advanced Topics in Programming Languague Theory at Aarhus University.

Quickstart

Enter a nix-shell:

nix-shell

Print help:

make help

Setup

Install the required libraries with opam:

opam pin add -y -n .
opam install --deps-only atplt2023

Building and running

Build and run the code using

dune build
dune exec -- ./bin/compiler.exe

Testing

dune test

Code formatting

Assuming ocamlformat is installed run

dune fmt

Correct formatting can be ensured using a pre-commit hook. Install using pip install pre-commit, then in the repo: pre-commit install.

Autors

Martin Jensen, Martin Zacho and Wolfgang Meier

About

A refinement type checker for simply typed lamda calculus with inductive data-types and well-founded recursive functions

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published