(VAR x y u v) (RULES f(TRUE, x, y) -> fNat(x >= 0 && y >= 0, x, y) fNat(TRUE, x, y) -> f(x > y, trunc(x), y+1) trunc(x) -> if(x % 2 = 0, x, x-1) if(TRUE, u, v) -> u if(FALSE, u, v) -> v )