Write Nat/Unit/Empty/Id Eliminators Through NbE and Bidir Elaboration

This commit is contained in:
2026-04-19 13:55:05 +00:00
parent a154e2b98c
commit 85be37b1d6
8 changed files with 374 additions and 2 deletions
+31
View File
@@ -46,6 +46,32 @@ def fstDepPair : Raw := .fst depPairAnn
def sndDepPair : Raw := .snd depPairAnn
def natTwo : Raw :=
.succ (.succ .zero)
def natFoldId : Raw :=
.ann
(.natElim "n" .nat .zero "k" "ih" (.succ (.var "ih")) natTwo)
.nat
def unitToNat : Raw :=
.ann
(.unitElim "u" .nat natTwo .triv)
.nat
def absurdNat : Raw :=
.ann
(.lam "e" (.emptyElim "x" .nat (.var "e")))
(.pi "e" .empty .nat)
def reflZero : Raw :=
.ann .refl (.id .nat .zero .zero)
def idElimNat : Raw :=
.ann
(.idElim "y" "p" .nat .zero .zero reflZero)
.nat
def omegaTy : Raw :=
.pi "A" (.univ 0) (.var "A")
@@ -67,6 +93,11 @@ def letUniverse : Raw :=
(.letE "A" (.univ 1) (.pi "_" (.univ 0) (.univ 0)) (.var "A"))
(.univ 1)
def badSucc : Raw := .succ (.univ 0)
def badRefl : Raw :=
.ann .refl (.id .nat .zero (.succ .zero))
def univ0 : Raw := .univ 0
end BidirTT.Examples