Inspects OCaml heap values and lowers the reachable object graph to graphviz DOT
Find a file
2025-09-07 12:38:44 +00:00
BidirTT Add definitional transport and congruence combinators derived from Id so equality programming isnt all raw idElim 2025-09-07 12:38:44 +00:00
.gitignore Initial 2025-09-06 22:57:54 +00:00
BidirTT.lean Initial 2025-09-06 22:57:54 +00:00
lakefile.lean Initial 2025-09-06 22:57:54 +00:00
lean-toolchain Initial 2025-09-06 22:57:54 +00:00
Main.lean Add definitional transport and congruence combinators derived from Id so equality programming isnt all raw idElim 2025-09-07 12:38:44 +00:00
README.md Initial 2025-09-06 22:57:54 +00:00
Tests.lean Add definitional transport and congruence combinators derived from Id so equality programming isnt all raw idElim 2025-09-07 12:38:44 +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