Small (toy) dependently typed core w. a bidirectional typechecker
Find a file
2026-04-19 18:06:54 +00:00
BidirTT Add definitional transport and congruence combinators derived from Id so equality programming isnt all raw idElim 2026-04-19 18:06:54 +00:00
.gitignore Initial 2026-04-19 04:17:45 +00:00
BidirTT.lean Initial 2026-04-19 04:17:45 +00:00
lakefile.lean Initial 2026-04-19 04:17:45 +00:00
lean-toolchain Initial 2026-04-19 04:17:45 +00:00
Main.lean Add definitional transport and congruence combinators derived from Id so equality programming isnt all raw idElim 2026-04-19 18:06:54 +00:00
README.md Initial 2026-04-19 04:17:45 +00:00
Tests.lean Add definitional transport and congruence combinators derived from Id so equality programming isnt all raw idElim 2026-04-19 18:06:54 +00:00

iris

Small (toy) dependently typed core w. a bidirectional typechecker. It takes a named raw syntax, checks and elaborates it into a de Bruijn core and evaluates terms into semantic values, quotes them back for diagnostics and uses conversion checking to compare normal forms. The current kernel has explicit universe levels U0, U1, U2, dependent function and pair types, projections, annotations, and let

One of the checked examples is:

def depPairTy : Raw :=
  .sig "A" (.univ 2) (.var "A")

def depPairTm : Raw :=
  .pair
    (.univ 1)
    (.pi "_" (.univ 0) (.univ 0))

which elaborates to a pair whose first component is the type U1 and whose second component inhabits it