Dependently typed core calculus with mechanised soundness proofs
Find a file
2026-04-18 21:27:26 +00:00
.gitattributes Small changes, not much 2026-04-18 20:30:16 +00:00
.gitignore Small changes, not much 2026-04-18 20:30:16 +00:00
README.md Initial commit 2026-04-18 20:17:16 +00:00
stlc_effects Initial commit 2026-04-18 20:17:16 +00:00
stlc_effects.ml Make effect composition abstract instead of hard-coding the current lattice 2026-04-18 21:27:26 +00:00
StlcEffects.lean Refactor substitution into reusable renaming/substitution algebras over binders 2026-04-18 21:22:23 +00:00

remina

this project formalises a dependently typed lambda calculus as an inductive type w.in lean 4. by encoding the syntax via de bruijn indices, the implementation defines the statics and dynamics of a system similar to lambda pi. the core objective is the mechanisation of fundamental metatheory, specifically the proofs of progress and preservation

surface syntax

types

Unit
A * B
A + B
A -[pure]-> B
A -[io]-> B
forall A. T

terms

unit
tick
fun (x : T) -[eff]-> t
tfun A => t
t [T]
(t, u)
fst t
snd t
inl [B] t
inr [A] t
case t of inl x => l | inr y => r