TIMEOUT
MAYBE
Trs:
 {      check(f(x)) -> f(check(x)),
           check(x) -> start(match(f(X()), x)),
      match(X(), x) -> proper(x),
  match(f(x), f(y)) -> f(match(x, y)),
        proper(c()) -> ok(c()),
       proper(f(x)) -> f(proper(x)),
       start(ok(x)) -> found(x),
      top(found(x)) -> top(active(x)),
   top(active(c())) -> top(mark(c())),
       top(mark(x)) -> top(check(x)),
       active(f(x)) -> f(active(x)),
       active(f(x)) -> mark(x),
           f(ok(x)) -> ok(f(x)),
        f(found(x)) -> found(f(x)),
         f(mark(x)) -> mark(f(x))}
 Open