mzacho / refinement-types

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

License:MIT License


Languages

Language:OCaml 95.3%Language:Standard ML 3.1%Language:Makefile 0.9%Language:Nix 0.7%