/pi-forall-kt

A dependently typed programming language

Primary LanguageKotlinBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Introduction

This project was started as a Kotlin implementation of pi-forall, a dependently typed language developed by Stephanie Weirich for teaching purposes, first appeared at OPLSS 2014. However, more features (and many differences) are to be expected in this implementation. So this project would eventually grow out of the original one.

The purpose of this project is for me to familiarize some of the implementation details of common features found in dependently typed programming languages.

Roadmap (subject to rapid change)

  • Basic bidirectional elaborator for MLTT with one universe
    • Terms
    • Top-level definitions
    • Propositional equality
  • Basic inductive data types and pattern matching
  • Universe levels
    • universe polymorphism
  • implicit arguments
  • metavariables(holes)
  • termination checking

Reading List

These are the papers that I found relevant to implementing a dependently typed PL.