packages feed

rzk-0.10.0: test/typecheck/cases/ill-nbe-church-unequal.rzk

#lang rzk-1

-- A wrong Church-numeral equation must still be rejected: the NbE fast path
-- (Rzk.TypeCheck.NbE) answers only "definitely convertible" or "do not
-- know", so inequality must surface from the ordinary unification.

#define CN : U
  := (X : U) → (X → X) → X → X

#define czero : CN
  := \ X s x → x

#define csucc (n : CN) : CN
  := \ X s x → s (n X s x)

#define cadd (m n : CN) : CN
  := \ X s x → m X s (n X s x)

#define c1 : CN := csucc czero
#define c2 : CN := cadd c1 c1
#define c4 : CN := cadd c2 c2

-- 2 + 2 is not 2
#define test-wrong : cadd c2 c2 = c2 := refl