Skip to content

Simply-typed lambda calculus and extensions: termination, extrinsic/intrinsic representations, nominal binding techniques

Notifications You must be signed in to change notification settings

annenkov/stlcnorm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This projects includes:

  • The proof of normalization of the Call-by-Value Simply-Typed Lambda Calculus (STLC) using Tait's method in Coq (with Martin Elsman).
  • Implementation of nominal sets with applications to STLC (nominal set of lambda terms, definition of alpha-equivalence, proof of equivariance of the typing relation)
  • Bi-directional type checking for STLC (with Étienne MIQUEY) - WIP.
  • Intrinsically-typed System T (STLC with natural numbers). Features a denotation function on the intrinsic syntax allowing for "unquoting" syntactic expressions into Coq's definitions.
  • An interpretation of the intrinsically-typed syntax of the STLC into a cartesian closed category using the Equations plugin for advanced pattern-matching on dependent types. It also features notations for "calculational proofs" similar to Lean and Agda. They allow for chaining several equational reasoning steps in an explicit manner.

Browse the docs

The html version is build using Coqdoc and CoqdocJS by Tobias Tebbi (https://github.com/tebbi/coqdocjs).

To get access to the html version follow this links:

Usage

Requires Coq 8.11.*, depends on the Equations plugin v1.2.3+8.11 and the Categories library by Amin Timany (https://github.com/amintimany/Categories).

Use make to build both source file in Stlc folder and html.

About

Simply-typed lambda calculus and extensions: termination, extrinsic/intrinsic representations, nominal binding techniques

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published