MAYBE
MAYBE
TRS:
 {
                    U12(mark(X1), X2) -> mark(U12(X1, X2)),
                  U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)),
                splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)),
                splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)),
              splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)),
                  active(U12(X1, X2)) -> U12(active(X1), X2),
         active(U12(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)),
              active(splitAt(X1, X2)) -> splitAt(X1, active(X2)),
              active(splitAt(X1, X2)) -> splitAt(active(X1), X2),
   active(splitAt(s(N), cons(X, XS))) -> mark(U11(tt(), N, X, XS)),
             active(splitAt(0(), XS)) -> mark(pair(nil(), XS)),
          active(U11(X1, X2, X3, X4)) -> U11(active(X1), X2, X3, X4),
          active(U11(tt(), N, X, XS)) -> mark(U12(splitAt(N, XS), X)),
                 active(pair(X1, X2)) -> pair(X1, active(X2)),
                 active(pair(X1, X2)) -> pair(active(X1), X2),
                 active(cons(X1, X2)) -> cons(active(X1), X2),
                       active(snd(X)) -> snd(active(X)),
              active(snd(pair(X, Y))) -> mark(Y),
              active(afterNth(N, XS)) -> mark(snd(splitAt(N, XS))),
             active(afterNth(X1, X2)) -> afterNth(X1, active(X2)),
             active(afterNth(X1, X2)) -> afterNth(active(X1), X2),
                  active(and(X1, X2)) -> and(active(X1), X2),
                 active(and(tt(), X)) -> mark(X),
                       active(fst(X)) -> fst(active(X)),
              active(fst(pair(X, Y))) -> mark(X),
                      active(head(X)) -> head(active(X)),
            active(head(cons(N, XS))) -> mark(N),
                  active(natsFrom(N)) -> mark(cons(N, natsFrom(s(N)))),
                  active(natsFrom(X)) -> natsFrom(active(X)),
                         active(s(X)) -> s(active(X)),
                   active(sel(N, XS)) -> mark(head(afterNth(N, XS))),
                  active(sel(X1, X2)) -> sel(X1, active(X2)),
                  active(sel(X1, X2)) -> sel(active(X1), X2),
                      active(tail(X)) -> tail(active(X)),
            active(tail(cons(N, XS))) -> mark(XS),
                  active(take(N, XS)) -> mark(fst(splitAt(N, XS))),
                 active(take(X1, X2)) -> take(X1, active(X2)),
                 active(take(X1, X2)) -> take(active(X1), X2),
            U11(mark(X1), X2, X3, X4) -> mark(U11(X1, X2, X3, X4)),
  U11(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U11(X1, X2, X3, X4)),
                   pair(X1, mark(X2)) -> mark(pair(X1, X2)),
                   pair(mark(X1), X2) -> mark(pair(X1, X2)),
                 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)),
                   cons(mark(X1), X2) -> mark(cons(X1, X2)),
                 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)),
                         snd(mark(X)) -> mark(snd(X)),
                           snd(ok(X)) -> ok(snd(X)),
               afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)),
               afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)),
             afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)),
                    and(mark(X1), X2) -> mark(and(X1, X2)),
                  and(ok(X1), ok(X2)) -> ok(and(X1, X2)),
                         fst(mark(X)) -> mark(fst(X)),
                           fst(ok(X)) -> ok(fst(X)),
                        head(mark(X)) -> mark(head(X)),
                          head(ok(X)) -> ok(head(X)),
                    natsFrom(mark(X)) -> mark(natsFrom(X)),
                      natsFrom(ok(X)) -> ok(natsFrom(X)),
                           s(mark(X)) -> mark(s(X)),
                             s(ok(X)) -> ok(s(X)),
                    sel(X1, mark(X2)) -> mark(sel(X1, X2)),
                    sel(mark(X1), X2) -> mark(sel(X1, X2)),
                  sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)),
                        tail(mark(X)) -> mark(tail(X)),
                          tail(ok(X)) -> ok(tail(X)),
                   take(X1, mark(X2)) -> mark(take(X1, X2)),
                   take(mark(X1), X2) -> mark(take(X1, X2)),
                 take(ok(X1), ok(X2)) -> ok(take(X1, X2)),
                  proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)),
              proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)),
          proper(U11(X1, X2, X3, X4)) ->
  U11(proper(X1), proper(X2), proper(X3), proper(X4)),
                         proper(tt()) -> ok(tt()),
                 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)),
                 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)),
                       proper(snd(X)) -> snd(proper(X)),
             proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)),
                  proper(and(X1, X2)) -> and(proper(X1), proper(X2)),
                       proper(fst(X)) -> fst(proper(X)),
                      proper(head(X)) -> head(proper(X)),
                  proper(natsFrom(X)) -> natsFrom(proper(X)),
                         proper(s(X)) -> s(proper(X)),
                  proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)),
                        proper(nil()) -> ok(nil()),
                          proper(0()) -> ok(0()),
                      proper(tail(X)) -> tail(proper(X)),
                 proper(take(X1, X2)) -> take(proper(X1), proper(X2)),
                         top(mark(X)) -> top(proper(X)),
                           top(ok(X)) -> top(active(X))
 }
 DUP: We consider a duplicating system.
  Trs:
   {
                      U12(mark(X1), X2) -> mark(U12(X1, X2)),
                    U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)),
                  splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)),
                  splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)),
                splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)),
                    active(U12(X1, X2)) -> U12(active(X1), X2),
           active(U12(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)),
                active(splitAt(X1, X2)) -> splitAt(X1, active(X2)),
                active(splitAt(X1, X2)) -> splitAt(active(X1), X2),
     active(splitAt(s(N), cons(X, XS))) -> mark(U11(tt(), N, X, XS)),
               active(splitAt(0(), XS)) -> mark(pair(nil(), XS)),
            active(U11(X1, X2, X3, X4)) -> U11(active(X1), X2, X3, X4),
            active(U11(tt(), N, X, XS)) -> mark(U12(splitAt(N, XS), X)),
                   active(pair(X1, X2)) -> pair(X1, active(X2)),
                   active(pair(X1, X2)) -> pair(active(X1), X2),
                   active(cons(X1, X2)) -> cons(active(X1), X2),
                         active(snd(X)) -> snd(active(X)),
                active(snd(pair(X, Y))) -> mark(Y),
                active(afterNth(N, XS)) -> mark(snd(splitAt(N, XS))),
               active(afterNth(X1, X2)) -> afterNth(X1, active(X2)),
               active(afterNth(X1, X2)) -> afterNth(active(X1), X2),
                    active(and(X1, X2)) -> and(active(X1), X2),
                   active(and(tt(), X)) -> mark(X),
                         active(fst(X)) -> fst(active(X)),
                active(fst(pair(X, Y))) -> mark(X),
                        active(head(X)) -> head(active(X)),
              active(head(cons(N, XS))) -> mark(N),
                    active(natsFrom(N)) -> mark(cons(N, natsFrom(s(N)))),
                    active(natsFrom(X)) -> natsFrom(active(X)),
                           active(s(X)) -> s(active(X)),
                     active(sel(N, XS)) -> mark(head(afterNth(N, XS))),
                    active(sel(X1, X2)) -> sel(X1, active(X2)),
                    active(sel(X1, X2)) -> sel(active(X1), X2),
                        active(tail(X)) -> tail(active(X)),
              active(tail(cons(N, XS))) -> mark(XS),
                    active(take(N, XS)) -> mark(fst(splitAt(N, XS))),
                   active(take(X1, X2)) -> take(X1, active(X2)),
                   active(take(X1, X2)) -> take(active(X1), X2),
              U11(mark(X1), X2, X3, X4) -> mark(U11(X1, X2, X3, X4)),
    U11(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U11(X1, X2, X3, X4)),
                     pair(X1, mark(X2)) -> mark(pair(X1, X2)),
                     pair(mark(X1), X2) -> mark(pair(X1, X2)),
                   pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)),
                     cons(mark(X1), X2) -> mark(cons(X1, X2)),
                   cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)),
                           snd(mark(X)) -> mark(snd(X)),
                             snd(ok(X)) -> ok(snd(X)),
                 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)),
                 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)),
               afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)),
                      and(mark(X1), X2) -> mark(and(X1, X2)),
                    and(ok(X1), ok(X2)) -> ok(and(X1, X2)),
                           fst(mark(X)) -> mark(fst(X)),
                             fst(ok(X)) -> ok(fst(X)),
                          head(mark(X)) -> mark(head(X)),
                            head(ok(X)) -> ok(head(X)),
                      natsFrom(mark(X)) -> mark(natsFrom(X)),
                        natsFrom(ok(X)) -> ok(natsFrom(X)),
                             s(mark(X)) -> mark(s(X)),
                               s(ok(X)) -> ok(s(X)),
                      sel(X1, mark(X2)) -> mark(sel(X1, X2)),
                      sel(mark(X1), X2) -> mark(sel(X1, X2)),
                    sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)),
                          tail(mark(X)) -> mark(tail(X)),
                            tail(ok(X)) -> ok(tail(X)),
                     take(X1, mark(X2)) -> mark(take(X1, X2)),
                     take(mark(X1), X2) -> mark(take(X1, X2)),
                   take(ok(X1), ok(X2)) -> ok(take(X1, X2)),
                    proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)),
                proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)),
            proper(U11(X1, X2, X3, X4)) ->
    U11(proper(X1), proper(X2), proper(X3), proper(X4)),
                           proper(tt()) -> ok(tt()),
                   proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)),
                   proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)),
                         proper(snd(X)) -> snd(proper(X)),
               proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)),
                    proper(and(X1, X2)) -> and(proper(X1), proper(X2)),
                         proper(fst(X)) -> fst(proper(X)),
                        proper(head(X)) -> head(proper(X)),
                    proper(natsFrom(X)) -> natsFrom(proper(X)),
                           proper(s(X)) -> s(proper(X)),
                    proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)),
                          proper(nil()) -> ok(nil()),
                            proper(0()) -> ok(0()),
                        proper(tail(X)) -> tail(proper(X)),
                   proper(take(X1, X2)) -> take(proper(X1), proper(X2)),
                           top(mark(X)) -> top(proper(X)),
                             top(ok(X)) -> top(active(X))
   }
  Fail