(VAR x y ) (RULES top1(free(x), y) -> top2(check(new(x)), y) top1(free(x), y) -> top2(new(x), check(y)) top1(free(x), y) -> top2(check(x), new(y)) top1(free(x), y) -> top2(x, check(new(y))) top2(x, free(y)) -> top1(check(new(x)), y) top2(x, free(y)) -> top1(new(x), check(y)) top2(x, free(y)) -> top1(check(x), new(y)) top2(x, free(y)) -> top1(x, check(new(y))) new(free(x)) -> free(new(x)) old(free(x)) -> free(old(x)) new(serve) -> free(serve) old(serve) -> free(serve) check(free(x)) -> free(check(x)) check(new(x)) -> new(check(x)) check(old(x)) -> old(check(x)) check(old(x)) -> old(x) )