packages feed

MiniAgda-0.2014.1.9: test/fail/BadSizeLambdaInductive.ma

-- 2013-03-30

-- inductive counterexample

data Unit { unit }

data Nat +(i : Size)
{ zero [j < i]
; suc  [j < i] (n : Nat j) }

fun apply : [i : Size] -> ([j < i] -> Nat $j -> Unit) -> Nat i -> Unit
{ apply i f (zero j)  = f j (zero j)
; apply i f (suc j x) = f j (suc j x)
}

fun caseN : [i : Size] -> Unit -> (Nat i -> Unit) -> Nat $i -> Unit
{ caseN i z s (zero j)  = z
; caseN i z s (suc j x) = s x
}

-- not strongly normalizing:
fun run : [i : Size] -> |i| -> Nat i -> Unit
{ run i = apply i (\ j -> caseN j unit (run j))
}