MAYBE
MAYBE
TRS:
 {
               cons(mark(X1), X2) -> mark(cons(X1, X2)),
             cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)),
                   recip(mark(X)) -> mark(recip(X)),
                     recip(ok(X)) -> ok(recip(X)),
                     sqr(mark(X)) -> mark(sqr(X)),
                       sqr(ok(X)) -> ok(sqr(X)),
                   terms(mark(X)) -> mark(terms(X)),
                     terms(ok(X)) -> ok(terms(X)),
                       s(mark(X)) -> mark(s(X)),
                         s(ok(X)) -> ok(s(X)),
             active(cons(X1, X2)) -> cons(active(X1), X2),
                 active(recip(X)) -> recip(active(X)),
                   active(sqr(X)) -> sqr(active(X)),
                active(sqr(s(X))) -> mark(s(add(sqr(X), dbl(X)))),
                 active(sqr(0())) -> mark(0()),
                 active(terms(N)) -> mark(cons(recip(sqr(N)), terms(s(N)))),
                 active(terms(X)) -> terms(active(X)),
                     active(s(X)) -> s(active(X)),
              active(add(X1, X2)) -> add(X1, active(X2)),
              active(add(X1, X2)) -> add(active(X1), X2),
             active(add(s(X), Y)) -> mark(s(add(X, Y))),
              active(add(0(), X)) -> mark(X),
                   active(dbl(X)) -> dbl(active(X)),
                active(dbl(s(X))) -> mark(s(s(dbl(X)))),
                 active(dbl(0())) -> mark(0()),
            active(first(X1, X2)) -> first(X1, active(X2)),
            active(first(X1, X2)) -> first(active(X1), X2),
  active(first(s(X), cons(Y, Z))) -> mark(cons(Y, first(X, Z))),
            active(first(0(), X)) -> mark(nil()),
                  active(half(X)) -> half(active(X)),
            active(half(s(s(X)))) -> mark(s(half(X))),
             active(half(s(0()))) -> mark(0()),
                active(half(0())) -> mark(0()),
             active(half(dbl(X))) -> mark(X),
                add(X1, mark(X2)) -> mark(add(X1, X2)),
                add(mark(X1), X2) -> mark(add(X1, X2)),
              add(ok(X1), ok(X2)) -> ok(add(X1, X2)),
                     dbl(mark(X)) -> mark(dbl(X)),
                       dbl(ok(X)) -> ok(dbl(X)),
              first(X1, mark(X2)) -> mark(first(X1, X2)),
              first(mark(X1), X2) -> mark(first(X1, X2)),
            first(ok(X1), ok(X2)) -> ok(first(X1, X2)),
                    half(mark(X)) -> mark(half(X)),
                      half(ok(X)) -> ok(half(X)),
             proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)),
                 proper(recip(X)) -> recip(proper(X)),
                   proper(sqr(X)) -> sqr(proper(X)),
                 proper(terms(X)) -> terms(proper(X)),
                     proper(s(X)) -> s(proper(X)),
                      proper(0()) -> ok(0()),
              proper(add(X1, X2)) -> add(proper(X1), proper(X2)),
                   proper(dbl(X)) -> dbl(proper(X)),
                    proper(nil()) -> ok(nil()),
            proper(first(X1, X2)) -> first(proper(X1), proper(X2)),
                  proper(half(X)) -> half(proper(X)),
                     top(mark(X)) -> top(proper(X)),
                       top(ok(X)) -> top(active(X))
 }
 DUP: We consider a duplicating system.
  Trs:
   {
                 cons(mark(X1), X2) -> mark(cons(X1, X2)),
               cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)),
                     recip(mark(X)) -> mark(recip(X)),
                       recip(ok(X)) -> ok(recip(X)),
                       sqr(mark(X)) -> mark(sqr(X)),
                         sqr(ok(X)) -> ok(sqr(X)),
                     terms(mark(X)) -> mark(terms(X)),
                       terms(ok(X)) -> ok(terms(X)),
                         s(mark(X)) -> mark(s(X)),
                           s(ok(X)) -> ok(s(X)),
               active(cons(X1, X2)) -> cons(active(X1), X2),
                   active(recip(X)) -> recip(active(X)),
                     active(sqr(X)) -> sqr(active(X)),
                  active(sqr(s(X))) -> mark(s(add(sqr(X), dbl(X)))),
                   active(sqr(0())) -> mark(0()),
                   active(terms(N)) -> mark(cons(recip(sqr(N)), terms(s(N)))),
                   active(terms(X)) -> terms(active(X)),
                       active(s(X)) -> s(active(X)),
                active(add(X1, X2)) -> add(X1, active(X2)),
                active(add(X1, X2)) -> add(active(X1), X2),
               active(add(s(X), Y)) -> mark(s(add(X, Y))),
                active(add(0(), X)) -> mark(X),
                     active(dbl(X)) -> dbl(active(X)),
                  active(dbl(s(X))) -> mark(s(s(dbl(X)))),
                   active(dbl(0())) -> mark(0()),
              active(first(X1, X2)) -> first(X1, active(X2)),
              active(first(X1, X2)) -> first(active(X1), X2),
    active(first(s(X), cons(Y, Z))) -> mark(cons(Y, first(X, Z))),
              active(first(0(), X)) -> mark(nil()),
                    active(half(X)) -> half(active(X)),
              active(half(s(s(X)))) -> mark(s(half(X))),
               active(half(s(0()))) -> mark(0()),
                  active(half(0())) -> mark(0()),
               active(half(dbl(X))) -> mark(X),
                  add(X1, mark(X2)) -> mark(add(X1, X2)),
                  add(mark(X1), X2) -> mark(add(X1, X2)),
                add(ok(X1), ok(X2)) -> ok(add(X1, X2)),
                       dbl(mark(X)) -> mark(dbl(X)),
                         dbl(ok(X)) -> ok(dbl(X)),
                first(X1, mark(X2)) -> mark(first(X1, X2)),
                first(mark(X1), X2) -> mark(first(X1, X2)),
              first(ok(X1), ok(X2)) -> ok(first(X1, X2)),
                      half(mark(X)) -> mark(half(X)),
                        half(ok(X)) -> ok(half(X)),
               proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)),
                   proper(recip(X)) -> recip(proper(X)),
                     proper(sqr(X)) -> sqr(proper(X)),
                   proper(terms(X)) -> terms(proper(X)),
                       proper(s(X)) -> s(proper(X)),
                        proper(0()) -> ok(0()),
                proper(add(X1, X2)) -> add(proper(X1), proper(X2)),
                     proper(dbl(X)) -> dbl(proper(X)),
                      proper(nil()) -> ok(nil()),
              proper(first(X1, X2)) -> first(proper(X1), proper(X2)),
                    proper(half(X)) -> half(proper(X)),
                       top(mark(X)) -> top(proper(X)),
                         top(ok(X)) -> top(active(X))
   }
  Fail