Removed ~10000 hack in function idx that can lead to inconsistencies
when unifying terms with a large number of abstractions.
consts value :: ('a => 'v) => ('a,'v)expr => 'v
primrec
"value env (Cex v) = v"
"value env (Vex a) = env a"
"value env (Bex f e1 e2) = f (value env e1) (value env e2)"