(VAR x y z ) (RULES min(x, 0) -> 0 min(0, y) -> 0 min(s(x), s(y)) -> s(min(x, y)) max(x, 0) -> x max(0, y) -> y max(s(x), s(y)) -> s(max(x, y)) minus(x, 0) -> x minus(s(x), s(y)) -> s(minus(x, y)) gcd(s(x), s(y)) -> gcd(minus(max(x, y), min(x, transform(y))), s(min(x, y))) transform(x) -> s(s(x)) transform(cons(x, y)) -> cons(cons(x, x), x) transform(cons(x, y)) -> y transform(s(x)) -> s(s(transform(x))) cons(x, y) -> y cons(x, cons(y, s(z))) -> cons(y, x) cons(cons(x, z), s(y)) -> transform(x) )