(COMMENT random(x) computes a random number between 0 and x. Example 5.1 in a paper about predictive labeling (submitted to WRS '07) ) (VAR x y) (RULES nonZero(0) -> false nonZero(s(x)) -> true p(0) -> 0 p(s(x)) -> x id_inc(x) -> x id_inc(x) -> s(x) random(x) -> rand(x,0) rand(x,y) -> if(nonZero(x),x,y) if(false,x,y) -> y if(true,x,y) -> rand(p(x),id_inc(y)) )