Files
iris/BidirTT/Examples.lean
T

104 lines
2.1 KiB
Lean4
Raw Normal View History

2026-04-19 04:17:45 +00:00
import BidirTT.Syntax
namespace BidirTT.Examples
open BidirTT
def idTy : Raw :=
.pi "A" (.univ 0) (.pi "_" (.var "A") (.var "A"))
def idTm : Raw :=
.lam "A" (.lam "x" (.var "x"))
def idAnn : Raw := .ann idTm idTy
def constTy : Raw :=
.pi "A" (.univ 0) (.pi "B" (.univ 0)
(.pi "_" (.var "A") (.pi "_" (.var "B") (.var "A"))))
def constTm : Raw :=
.lam "A" (.lam "B" (.lam "x" (.lam "_" (.var "x"))))
def constAnn : Raw := .ann constTm constTy
def swapTy : Raw :=
.pi "A" (.univ 0) (.pi "B" (.univ 0)
(.pi "_" (.sig "_" (.var "A") (.var "B"))
(.sig "_" (.var "B") (.var "A"))))
def swapTm : Raw :=
.lam "A" (.lam "B" (.lam "p"
(.pair (.snd (.var "p")) (.fst (.var "p")))))
def swapAnn : Raw := .ann swapTm swapTy
def depPairTy : Raw :=
.sig "A" (.univ 2) (.var "A")
def depPairTm : Raw :=
.pair
(.univ 1)
(.pi "_" (.univ 0) (.univ 0))
def depPairAnn : Raw := .ann depPairTm depPairTy
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
2026-04-19 04:17:45 +00:00
def omegaTy : Raw :=
.pi "A" (.univ 0) (.var "A")
def omegaTm : Raw :=
.lam "x" (.app (.var "x") (.var "x"))
def omegaAnn : Raw := .ann omegaTm omegaTy
def unknownVar : Raw := .var "nope"
def pairMismatch : Raw :=
.ann (.pair (.univ 1) (.univ 1))
(.sig "A" (.univ 2) (.var "A"))
def badFst : Raw := .fst (.univ 0)
def letUniverse : Raw :=
.ann
(.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))
2026-04-19 04:17:45 +00:00
def univ0 : Raw := .univ 0
end BidirTT.Examples