(VAR x y) (RULES random(x) -> rand(x, 0) rand(x, y) -> y :|: x = 0 rand(x, y) -> rand(x - 1, id_inc(y)) :|: x > 0 rand(x, y) -> rand(x + 1, id_dec(y)) :|: 0 > x id_inc(x) -> x id_inc(x) -> x + 1 id_dec(x) -> x id_dec(x) -> x - 1 )