YES

Problem:
 active(first(0(),X)) -> mark(nil())
 active(first(s(X),cons(Y,Z))) -> mark(cons(Y,first(X,Z)))
 active(from(X)) -> mark(cons(X,from(s(X))))
 active(first(X1,X2)) -> first(active(X1),X2)
 active(first(X1,X2)) -> first(X1,active(X2))
 active(s(X)) -> s(active(X))
 active(cons(X1,X2)) -> cons(active(X1),X2)
 active(from(X)) -> from(active(X))
 first(mark(X1),X2) -> mark(first(X1,X2))
 first(X1,mark(X2)) -> mark(first(X1,X2))
 s(mark(X)) -> mark(s(X))
 cons(mark(X1),X2) -> mark(cons(X1,X2))
 from(mark(X)) -> mark(from(X))
 proper(first(X1,X2)) -> first(proper(X1),proper(X2))
 proper(0()) -> ok(0())
 proper(nil()) -> ok(nil())
 proper(s(X)) -> s(proper(X))
 proper(cons(X1,X2)) -> cons(proper(X1),proper(X2))
 proper(from(X)) -> from(proper(X))
 first(ok(X1),ok(X2)) -> ok(first(X1,X2))
 s(ok(X)) -> ok(s(X))
 cons(ok(X1),ok(X2)) -> ok(cons(X1,X2))
 from(ok(X)) -> ok(from(X))
 top(mark(X)) -> top(proper(X))
 top(ok(X)) -> top(active(X))

Proof:
 DP Processor:
  DPs:
   active#(first(s(X),cons(Y,Z))) -> first#(X,Z)
   active#(first(s(X),cons(Y,Z))) -> cons#(Y,first(X,Z))
   active#(from(X)) -> s#(X)
   active#(from(X)) -> from#(s(X))
   active#(from(X)) -> cons#(X,from(s(X)))
   active#(first(X1,X2)) -> active#(X1)
   active#(first(X1,X2)) -> first#(active(X1),X2)
   active#(first(X1,X2)) -> active#(X2)
   active#(first(X1,X2)) -> first#(X1,active(X2))
   active#(s(X)) -> active#(X)
   active#(s(X)) -> s#(active(X))
   active#(cons(X1,X2)) -> active#(X1)
   active#(cons(X1,X2)) -> cons#(active(X1),X2)
   active#(from(X)) -> active#(X)
   active#(from(X)) -> from#(active(X))
   first#(mark(X1),X2) -> first#(X1,X2)
   first#(X1,mark(X2)) -> first#(X1,X2)
   s#(mark(X)) -> s#(X)
   cons#(mark(X1),X2) -> cons#(X1,X2)
   from#(mark(X)) -> from#(X)
   proper#(first(X1,X2)) -> proper#(X2)
   proper#(first(X1,X2)) -> proper#(X1)
   proper#(first(X1,X2)) -> first#(proper(X1),proper(X2))
   proper#(s(X)) -> proper#(X)
   proper#(s(X)) -> s#(proper(X))
   proper#(cons(X1,X2)) -> proper#(X2)
   proper#(cons(X1,X2)) -> proper#(X1)
   proper#(cons(X1,X2)) -> cons#(proper(X1),proper(X2))
   proper#(from(X)) -> proper#(X)
   proper#(from(X)) -> from#(proper(X))
   first#(ok(X1),ok(X2)) -> first#(X1,X2)
   s#(ok(X)) -> s#(X)
   cons#(ok(X1),ok(X2)) -> cons#(X1,X2)
   from#(ok(X)) -> from#(X)
   top#(mark(X)) -> proper#(X)
   top#(mark(X)) -> top#(proper(X))
   top#(ok(X)) -> active#(X)
   top#(ok(X)) -> top#(active(X))
  TRS:
   active(first(0(),X)) -> mark(nil())
   active(first(s(X),cons(Y,Z))) -> mark(cons(Y,first(X,Z)))
   active(from(X)) -> mark(cons(X,from(s(X))))
   active(first(X1,X2)) -> first(active(X1),X2)
   active(first(X1,X2)) -> first(X1,active(X2))
   active(s(X)) -> s(active(X))
   active(cons(X1,X2)) -> cons(active(X1),X2)
   active(from(X)) -> from(active(X))
   first(mark(X1),X2) -> mark(first(X1,X2))
   first(X1,mark(X2)) -> mark(first(X1,X2))
   s(mark(X)) -> mark(s(X))
   cons(mark(X1),X2) -> mark(cons(X1,X2))
   from(mark(X)) -> mark(from(X))
   proper(first(X1,X2)) -> first(proper(X1),proper(X2))
   proper(0()) -> ok(0())
   proper(nil()) -> ok(nil())
   proper(s(X)) -> s(proper(X))
   proper(cons(X1,X2)) -> cons(proper(X1),proper(X2))
   proper(from(X)) -> from(proper(X))
   first(ok(X1),ok(X2)) -> ok(first(X1,X2))
   s(ok(X)) -> ok(s(X))
   cons(ok(X1),ok(X2)) -> ok(cons(X1,X2))
   from(ok(X)) -> ok(from(X))
   top(mark(X)) -> top(proper(X))
   top(ok(X)) -> top(active(X))
  TDG Processor:
   DPs:
    active#(first(s(X),cons(Y,Z))) -> first#(X,Z)
    active#(first(s(X),cons(Y,Z))) -> cons#(Y,first(X,Z))
    active#(from(X)) -> s#(X)
    active#(from(X)) -> from#(s(X))
    active#(from(X)) -> cons#(X,from(s(X)))
    active#(first(X1,X2)) -> active#(X1)
    active#(first(X1,X2)) -> first#(active(X1),X2)
    active#(first(X1,X2)) -> active#(X2)
    active#(first(X1,X2)) -> first#(X1,active(X2))
    active#(s(X)) -> active#(X)
    active#(s(X)) -> s#(active(X))
    active#(cons(X1,X2)) -> active#(X1)
    active#(cons(X1,X2)) -> cons#(active(X1),X2)
    active#(from(X)) -> active#(X)
    active#(from(X)) -> from#(active(X))
    first#(mark(X1),X2) -> first#(X1,X2)
    first#(X1,mark(X2)) -> first#(X1,X2)
    s#(mark(X)) -> s#(X)
    cons#(mark(X1),X2) -> cons#(X1,X2)
    from#(mark(X)) -> from#(X)
    proper#(first(X1,X2)) -> proper#(X2)
    proper#(first(X1,X2)) -> proper#(X1)
    proper#(first(X1,X2)) -> first#(proper(X1),proper(X2))
    proper#(s(X)) -> proper#(X)
    proper#(s(X)) -> s#(proper(X))
    proper#(cons(X1,X2)) -> proper#(X2)
    proper#(cons(X1,X2)) -> proper#(X1)
    proper#(cons(X1,X2)) -> cons#(proper(X1),proper(X2))
    proper#(from(X)) -> proper#(X)
    proper#(from(X)) -> from#(proper(X))
    first#(ok(X1),ok(X2)) -> first#(X1,X2)
    s#(ok(X)) -> s#(X)
    cons#(ok(X1),ok(X2)) -> cons#(X1,X2)
    from#(ok(X)) -> from#(X)
    top#(mark(X)) -> proper#(X)
    top#(mark(X)) -> top#(proper(X))
    top#(ok(X)) -> active#(X)
    top#(ok(X)) -> top#(active(X))
   TRS:
    active(first(0(),X)) -> mark(nil())
    active(first(s(X),cons(Y,Z))) -> mark(cons(Y,first(X,Z)))
    active(from(X)) -> mark(cons(X,from(s(X))))
    active(first(X1,X2)) -> first(active(X1),X2)
    active(first(X1,X2)) -> first(X1,active(X2))
    active(s(X)) -> s(active(X))
    active(cons(X1,X2)) -> cons(active(X1),X2)
    active(from(X)) -> from(active(X))
    first(mark(X1),X2) -> mark(first(X1,X2))
    first(X1,mark(X2)) -> mark(first(X1,X2))
    s(mark(X)) -> mark(s(X))
    cons(mark(X1),X2) -> mark(cons(X1,X2))
    from(mark(X)) -> mark(from(X))
    proper(first(X1,X2)) -> first(proper(X1),proper(X2))
    proper(0()) -> ok(0())
    proper(nil()) -> ok(nil())
    proper(s(X)) -> s(proper(X))
    proper(cons(X1,X2)) -> cons(proper(X1),proper(X2))
    proper(from(X)) -> from(proper(X))
    first(ok(X1),ok(X2)) -> ok(first(X1,X2))
    s(ok(X)) -> ok(s(X))
    cons(ok(X1),ok(X2)) -> ok(cons(X1,X2))
    from(ok(X)) -> ok(from(X))
    top(mark(X)) -> top(proper(X))
    top(ok(X)) -> top(active(X))
   graph:
    top#(ok(X)) -> top#(active(X)) -> top#(ok(X)) -> top#(active(X))
    top#(ok(X)) -> top#(active(X)) -> top#(ok(X)) -> active#(X)
    top#(ok(X)) -> top#(active(X)) ->
    top#(mark(X)) -> top#(proper(X))
    top#(ok(X)) -> top#(active(X)) -> top#(mark(X)) -> proper#(X)
    top#(ok(X)) -> active#(X) -> active#(from(X)) -> from#(active(X))
    top#(ok(X)) -> active#(X) -> active#(from(X)) -> active#(X)
    top#(ok(X)) -> active#(X) ->
    active#(cons(X1,X2)) -> cons#(active(X1),X2)
    top#(ok(X)) -> active#(X) -> active#(cons(X1,X2)) -> active#(X1)
    top#(ok(X)) -> active#(X) -> active#(s(X)) -> s#(active(X))
    top#(ok(X)) -> active#(X) -> active#(s(X)) -> active#(X)
    top#(ok(X)) -> active#(X) ->
    active#(first(X1,X2)) -> first#(X1,active(X2))
    top#(ok(X)) -> active#(X) -> active#(first(X1,X2)) -> active#(X2)
    top#(ok(X)) -> active#(X) ->
    active#(first(X1,X2)) -> first#(active(X1),X2)
    top#(ok(X)) -> active#(X) -> active#(first(X1,X2)) -> active#(X1)
    top#(ok(X)) -> active#(X) -> active#(from(X)) -> cons#(X,from(s(X)))
    top#(ok(X)) -> active#(X) -> active#(from(X)) -> from#(s(X))
    top#(ok(X)) -> active#(X) -> active#(from(X)) -> s#(X)
    top#(ok(X)) -> active#(X) ->
    active#(first(s(X),cons(Y,Z))) -> cons#(Y,first(X,Z))
    top#(ok(X)) -> active#(X) ->
    active#(first(s(X),cons(Y,Z))) -> first#(X,Z)
    top#(mark(X)) -> top#(proper(X)) ->
    top#(ok(X)) -> top#(active(X))
    top#(mark(X)) -> top#(proper(X)) -> top#(ok(X)) -> active#(X)
    top#(mark(X)) -> top#(proper(X)) ->
    top#(mark(X)) -> top#(proper(X))
    top#(mark(X)) -> top#(proper(X)) -> top#(mark(X)) -> proper#(X)
    top#(mark(X)) -> proper#(X) -> proper#(from(X)) -> from#(proper(X))
    top#(mark(X)) -> proper#(X) -> proper#(from(X)) -> proper#(X)
    top#(mark(X)) -> proper#(X) ->
    proper#(cons(X1,X2)) -> cons#(proper(X1),proper(X2))
    top#(mark(X)) -> proper#(X) -> proper#(cons(X1,X2)) -> proper#(X1)
    top#(mark(X)) -> proper#(X) -> proper#(cons(X1,X2)) -> proper#(X2)
    top#(mark(X)) -> proper#(X) -> proper#(s(X)) -> s#(proper(X))
    top#(mark(X)) -> proper#(X) -> proper#(s(X)) -> proper#(X)
    top#(mark(X)) -> proper#(X) ->
    proper#(first(X1,X2)) -> first#(proper(X1),proper(X2))
    top#(mark(X)) -> proper#(X) -> proper#(first(X1,X2)) -> proper#(X1)
    top#(mark(X)) -> proper#(X) ->
    proper#(first(X1,X2)) -> proper#(X2)
    proper#(from(X)) -> proper#(X) ->
    proper#(from(X)) -> from#(proper(X))
    proper#(from(X)) -> proper#(X) -> proper#(from(X)) -> proper#(X)
    proper#(from(X)) -> proper#(X) ->
    proper#(cons(X1,X2)) -> cons#(proper(X1),proper(X2))
    proper#(from(X)) -> proper#(X) ->
    proper#(cons(X1,X2)) -> proper#(X1)
    proper#(from(X)) -> proper#(X) ->
    proper#(cons(X1,X2)) -> proper#(X2)
    proper#(from(X)) -> proper#(X) -> proper#(s(X)) -> s#(proper(X))
    proper#(from(X)) -> proper#(X) -> proper#(s(X)) -> proper#(X)
    proper#(from(X)) -> proper#(X) ->
    proper#(first(X1,X2)) -> first#(proper(X1),proper(X2))
    proper#(from(X)) -> proper#(X) ->
    proper#(first(X1,X2)) -> proper#(X1)
    proper#(from(X)) -> proper#(X) ->
    proper#(first(X1,X2)) -> proper#(X2)
    proper#(from(X)) -> from#(proper(X)) ->
    from#(ok(X)) -> from#(X)
    proper#(from(X)) -> from#(proper(X)) ->
    from#(mark(X)) -> from#(X)
    proper#(cons(X1,X2)) -> proper#(X2) ->
    proper#(from(X)) -> from#(proper(X))
    proper#(cons(X1,X2)) -> proper#(X2) ->
    proper#(from(X)) -> proper#(X)
    proper#(cons(X1,X2)) -> proper#(X2) ->
    proper#(cons(X1,X2)) -> cons#(proper(X1),proper(X2))
    proper#(cons(X1,X2)) -> proper#(X2) ->
    proper#(cons(X1,X2)) -> proper#(X1)
    proper#(cons(X1,X2)) -> proper#(X2) ->
    proper#(cons(X1,X2)) -> proper#(X2)
    proper#(cons(X1,X2)) -> proper#(X2) ->
    proper#(s(X)) -> s#(proper(X))
    proper#(cons(X1,X2)) -> proper#(X2) ->
    proper#(s(X)) -> proper#(X)
    proper#(cons(X1,X2)) -> proper#(X2) ->
    proper#(first(X1,X2)) -> first#(proper(X1),proper(X2))
    proper#(cons(X1,X2)) -> proper#(X2) ->
    proper#(first(X1,X2)) -> proper#(X1)
    proper#(cons(X1,X2)) -> proper#(X2) ->
    proper#(first(X1,X2)) -> proper#(X2)
    proper#(cons(X1,X2)) -> proper#(X1) ->
    proper#(from(X)) -> from#(proper(X))
    proper#(cons(X1,X2)) -> proper#(X1) ->
    proper#(from(X)) -> proper#(X)
    proper#(cons(X1,X2)) -> proper#(X1) ->
    proper#(cons(X1,X2)) -> cons#(proper(X1),proper(X2))
    proper#(cons(X1,X2)) -> proper#(X1) ->
    proper#(cons(X1,X2)) -> proper#(X1)
    proper#(cons(X1,X2)) -> proper#(X1) ->
    proper#(cons(X1,X2)) -> proper#(X2)
    proper#(cons(X1,X2)) -> proper#(X1) ->
    proper#(s(X)) -> s#(proper(X))
    proper#(cons(X1,X2)) -> proper#(X1) ->
    proper#(s(X)) -> proper#(X)
    proper#(cons(X1,X2)) -> proper#(X1) ->
    proper#(first(X1,X2)) -> first#(proper(X1),proper(X2))
    proper#(cons(X1,X2)) -> proper#(X1) ->
    proper#(first(X1,X2)) -> proper#(X1)
    proper#(cons(X1,X2)) -> proper#(X1) ->
    proper#(first(X1,X2)) -> proper#(X2)
    proper#(cons(X1,X2)) -> cons#(proper(X1),proper(X2)) ->
    cons#(ok(X1),ok(X2)) -> cons#(X1,X2)
    proper#(cons(X1,X2)) -> cons#(proper(X1),proper(X2)) ->
    cons#(mark(X1),X2) -> cons#(X1,X2)
    proper#(s(X)) -> proper#(X) -> proper#(from(X)) -> from#(proper(X))
    proper#(s(X)) -> proper#(X) -> proper#(from(X)) -> proper#(X)
    proper#(s(X)) -> proper#(X) ->
    proper#(cons(X1,X2)) -> cons#(proper(X1),proper(X2))
    proper#(s(X)) -> proper#(X) -> proper#(cons(X1,X2)) -> proper#(X1)
    proper#(s(X)) -> proper#(X) -> proper#(cons(X1,X2)) -> proper#(X2)
    proper#(s(X)) -> proper#(X) -> proper#(s(X)) -> s#(proper(X))
    proper#(s(X)) -> proper#(X) -> proper#(s(X)) -> proper#(X)
    proper#(s(X)) -> proper#(X) ->
    proper#(first(X1,X2)) -> first#(proper(X1),proper(X2))
    proper#(s(X)) -> proper#(X) -> proper#(first(X1,X2)) -> proper#(X1)
    proper#(s(X)) -> proper#(X) ->
    proper#(first(X1,X2)) -> proper#(X2)
    proper#(s(X)) -> s#(proper(X)) -> s#(ok(X)) -> s#(X)
    proper#(s(X)) -> s#(proper(X)) -> s#(mark(X)) -> s#(X)
    proper#(first(X1,X2)) -> proper#(X2) ->
    proper#(from(X)) -> from#(proper(X))
    proper#(first(X1,X2)) -> proper#(X2) ->
    proper#(from(X)) -> proper#(X)
    proper#(first(X1,X2)) -> proper#(X2) ->
    proper#(cons(X1,X2)) -> cons#(proper(X1),proper(X2))
    proper#(first(X1,X2)) -> proper#(X2) ->
    proper#(cons(X1,X2)) -> proper#(X1)
    proper#(first(X1,X2)) -> proper#(X2) ->
    proper#(cons(X1,X2)) -> proper#(X2)
    proper#(first(X1,X2)) -> proper#(X2) ->
    proper#(s(X)) -> s#(proper(X))
    proper#(first(X1,X2)) -> proper#(X2) ->
    proper#(s(X)) -> proper#(X)
    proper#(first(X1,X2)) -> proper#(X2) ->
    proper#(first(X1,X2)) -> first#(proper(X1),proper(X2))
    proper#(first(X1,X2)) -> proper#(X2) ->
    proper#(first(X1,X2)) -> proper#(X1)
    proper#(first(X1,X2)) -> proper#(X2) ->
    proper#(first(X1,X2)) -> proper#(X2)
    proper#(first(X1,X2)) -> proper#(X1) ->
    proper#(from(X)) -> from#(proper(X))
    proper#(first(X1,X2)) -> proper#(X1) ->
    proper#(from(X)) -> proper#(X)
    proper#(first(X1,X2)) -> proper#(X1) ->
    proper#(cons(X1,X2)) -> cons#(proper(X1),proper(X2))
    proper#(first(X1,X2)) -> proper#(X1) ->
    proper#(cons(X1,X2)) -> proper#(X1)
    proper#(first(X1,X2)) -> proper#(X1) ->
    proper#(cons(X1,X2)) -> proper#(X2)
    proper#(first(X1,X2)) -> proper#(X1) ->
    proper#(s(X)) -> s#(proper(X))
    proper#(first(X1,X2)) -> proper#(X1) ->
    proper#(s(X)) -> proper#(X)
    proper#(first(X1,X2)) -> proper#(X1) ->
    proper#(first(X1,X2)) -> first#(proper(X1),proper(X2))
    proper#(first(X1,X2)) -> proper#(X1) ->
    proper#(first(X1,X2)) -> proper#(X1)
    proper#(first(X1,X2)) -> proper#(X1) ->
    proper#(first(X1,X2)) -> proper#(X2)
    proper#(first(X1,X2)) -> first#(proper(X1),proper(X2)) ->
    first#(ok(X1),ok(X2)) -> first#(X1,X2)
    proper#(first(X1,X2)) -> first#(proper(X1),proper(X2)) ->
    first#(X1,mark(X2)) -> first#(X1,X2)
    proper#(first(X1,X2)) -> first#(proper(X1),proper(X2)) ->
    first#(mark(X1),X2) -> first#(X1,X2)
    from#(ok(X)) -> from#(X) -> from#(ok(X)) -> from#(X)
    from#(ok(X)) -> from#(X) -> from#(mark(X)) -> from#(X)
    from#(mark(X)) -> from#(X) -> from#(ok(X)) -> from#(X)
    from#(mark(X)) -> from#(X) -> from#(mark(X)) -> from#(X)
    s#(ok(X)) -> s#(X) -> s#(ok(X)) -> s#(X)
    s#(ok(X)) -> s#(X) -> s#(mark(X)) -> s#(X)
    s#(mark(X)) -> s#(X) -> s#(ok(X)) -> s#(X)
    s#(mark(X)) -> s#(X) -> s#(mark(X)) -> s#(X)
    cons#(ok(X1),ok(X2)) -> cons#(X1,X2) ->
    cons#(ok(X1),ok(X2)) -> cons#(X1,X2)
    cons#(ok(X1),ok(X2)) -> cons#(X1,X2) ->
    cons#(mark(X1),X2) -> cons#(X1,X2)
    cons#(mark(X1),X2) -> cons#(X1,X2) ->
    cons#(ok(X1),ok(X2)) -> cons#(X1,X2)
    cons#(mark(X1),X2) -> cons#(X1,X2) ->
    cons#(mark(X1),X2) -> cons#(X1,X2)
    first#(ok(X1),ok(X2)) -> first#(X1,X2) ->
    first#(ok(X1),ok(X2)) -> first#(X1,X2)
    first#(ok(X1),ok(X2)) -> first#(X1,X2) ->
    first#(X1,mark(X2)) -> first#(X1,X2)
    first#(ok(X1),ok(X2)) -> first#(X1,X2) ->
    first#(mark(X1),X2) -> first#(X1,X2)
    first#(mark(X1),X2) -> first#(X1,X2) ->
    first#(ok(X1),ok(X2)) -> first#(X1,X2)
    first#(mark(X1),X2) -> first#(X1,X2) ->
    first#(X1,mark(X2)) -> first#(X1,X2)
    first#(mark(X1),X2) -> first#(X1,X2) ->
    first#(mark(X1),X2) -> first#(X1,X2)
    first#(X1,mark(X2)) -> first#(X1,X2) ->
    first#(ok(X1),ok(X2)) -> first#(X1,X2)
    first#(X1,mark(X2)) -> first#(X1,X2) ->
    first#(X1,mark(X2)) -> first#(X1,X2)
    first#(X1,mark(X2)) -> first#(X1,X2) ->
    first#(mark(X1),X2) -> first#(X1,X2)
    active#(from(X)) -> from#(s(X)) -> from#(ok(X)) -> from#(X)
    active#(from(X)) -> from#(s(X)) ->
    from#(mark(X)) -> from#(X)
    active#(from(X)) -> from#(active(X)) ->
    from#(ok(X)) -> from#(X)
    active#(from(X)) -> from#(active(X)) -> from#(mark(X)) -> from#(X)
    active#(from(X)) -> s#(X) -> s#(ok(X)) -> s#(X)
    active#(from(X)) -> s#(X) -> s#(mark(X)) -> s#(X)
    active#(from(X)) -> cons#(X,from(s(X))) ->
    cons#(ok(X1),ok(X2)) -> cons#(X1,X2)
    active#(from(X)) -> cons#(X,from(s(X))) ->
    cons#(mark(X1),X2) -> cons#(X1,X2)
    active#(from(X)) -> active#(X) ->
    active#(from(X)) -> from#(active(X))
    active#(from(X)) -> active#(X) -> active#(from(X)) -> active#(X)
    active#(from(X)) -> active#(X) ->
    active#(cons(X1,X2)) -> cons#(active(X1),X2)
    active#(from(X)) -> active#(X) ->
    active#(cons(X1,X2)) -> active#(X1)
    active#(from(X)) -> active#(X) -> active#(s(X)) -> s#(active(X))
    active#(from(X)) -> active#(X) -> active#(s(X)) -> active#(X)
    active#(from(X)) -> active#(X) ->
    active#(first(X1,X2)) -> first#(X1,active(X2))
    active#(from(X)) -> active#(X) ->
    active#(first(X1,X2)) -> active#(X2)
    active#(from(X)) -> active#(X) ->
    active#(first(X1,X2)) -> first#(active(X1),X2)
    active#(from(X)) -> active#(X) ->
    active#(first(X1,X2)) -> active#(X1)
    active#(from(X)) -> active#(X) ->
    active#(from(X)) -> cons#(X,from(s(X)))
    active#(from(X)) -> active#(X) -> active#(from(X)) -> from#(s(X))
    active#(from(X)) -> active#(X) -> active#(from(X)) -> s#(X)
    active#(from(X)) -> active#(X) ->
    active#(first(s(X),cons(Y,Z))) -> cons#(Y,first(X,Z))
    active#(from(X)) -> active#(X) ->
    active#(first(s(X),cons(Y,Z))) -> first#(X,Z)
    active#(cons(X1,X2)) -> cons#(active(X1),X2) ->
    cons#(ok(X1),ok(X2)) -> cons#(X1,X2)
    active#(cons(X1,X2)) -> cons#(active(X1),X2) ->
    cons#(mark(X1),X2) -> cons#(X1,X2)
    active#(cons(X1,X2)) -> active#(X1) ->
    active#(from(X)) -> from#(active(X))
    active#(cons(X1,X2)) -> active#(X1) ->
    active#(from(X)) -> active#(X)
    active#(cons(X1,X2)) -> active#(X1) ->
    active#(cons(X1,X2)) -> cons#(active(X1),X2)
    active#(cons(X1,X2)) -> active#(X1) ->
    active#(cons(X1,X2)) -> active#(X1)
    active#(cons(X1,X2)) -> active#(X1) ->
    active#(s(X)) -> s#(active(X))
    active#(cons(X1,X2)) -> active#(X1) ->
    active#(s(X)) -> active#(X)
    active#(cons(X1,X2)) -> active#(X1) ->
    active#(first(X1,X2)) -> first#(X1,active(X2))
    active#(cons(X1,X2)) -> active#(X1) ->
    active#(first(X1,X2)) -> active#(X2)
    active#(cons(X1,X2)) -> active#(X1) ->
    active#(first(X1,X2)) -> first#(active(X1),X2)
    active#(cons(X1,X2)) -> active#(X1) ->
    active#(first(X1,X2)) -> active#(X1)
    active#(cons(X1,X2)) -> active#(X1) ->
    active#(from(X)) -> cons#(X,from(s(X)))
    active#(cons(X1,X2)) -> active#(X1) ->
    active#(from(X)) -> from#(s(X))
    active#(cons(X1,X2)) -> active#(X1) ->
    active#(from(X)) -> s#(X)
    active#(cons(X1,X2)) -> active#(X1) ->
    active#(first(s(X),cons(Y,Z))) -> cons#(Y,first(X,Z))
    active#(cons(X1,X2)) -> active#(X1) ->
    active#(first(s(X),cons(Y,Z))) -> first#(X,Z)
    active#(s(X)) -> s#(active(X)) -> s#(ok(X)) -> s#(X)
    active#(s(X)) -> s#(active(X)) -> s#(mark(X)) -> s#(X)
    active#(s(X)) -> active#(X) -> active#(from(X)) -> from#(active(X))
    active#(s(X)) -> active#(X) -> active#(from(X)) -> active#(X)
    active#(s(X)) -> active#(X) ->
    active#(cons(X1,X2)) -> cons#(active(X1),X2)
    active#(s(X)) -> active#(X) -> active#(cons(X1,X2)) -> active#(X1)
    active#(s(X)) -> active#(X) -> active#(s(X)) -> s#(active(X))
    active#(s(X)) -> active#(X) -> active#(s(X)) -> active#(X)
    active#(s(X)) -> active#(X) ->
    active#(first(X1,X2)) -> first#(X1,active(X2))
    active#(s(X)) -> active#(X) -> active#(first(X1,X2)) -> active#(X2)
    active#(s(X)) -> active#(X) ->
    active#(first(X1,X2)) -> first#(active(X1),X2)
    active#(s(X)) -> active#(X) -> active#(first(X1,X2)) -> active#(X1)
    active#(s(X)) -> active#(X) ->
    active#(from(X)) -> cons#(X,from(s(X)))
    active#(s(X)) -> active#(X) -> active#(from(X)) -> from#(s(X))
    active#(s(X)) -> active#(X) -> active#(from(X)) -> s#(X)
    active#(s(X)) -> active#(X) ->
    active#(first(s(X),cons(Y,Z))) -> cons#(Y,first(X,Z))
    active#(s(X)) -> active#(X) ->
    active#(first(s(X),cons(Y,Z))) -> first#(X,Z)
    active#(first(s(X),cons(Y,Z))) -> cons#(Y,first(X,Z)) ->
    cons#(ok(X1),ok(X2)) -> cons#(X1,X2)
    active#(first(s(X),cons(Y,Z))) -> cons#(Y,first(X,Z)) ->
    cons#(mark(X1),X2) -> cons#(X1,X2)
    active#(first(s(X),cons(Y,Z))) -> first#(X,Z) ->
    first#(ok(X1),ok(X2)) -> first#(X1,X2)
    active#(first(s(X),cons(Y,Z))) -> first#(X,Z) ->
    first#(X1,mark(X2)) -> first#(X1,X2)
    active#(first(s(X),cons(Y,Z))) -> first#(X,Z) ->
    first#(mark(X1),X2) -> first#(X1,X2)
    active#(first(X1,X2)) -> first#(active(X1),X2) ->
    first#(ok(X1),ok(X2)) -> first#(X1,X2)
    active#(first(X1,X2)) -> first#(active(X1),X2) ->
    first#(X1,mark(X2)) -> first#(X1,X2)
    active#(first(X1,X2)) -> first#(active(X1),X2) ->
    first#(mark(X1),X2) -> first#(X1,X2)
    active#(first(X1,X2)) -> first#(X1,active(X2)) ->
    first#(ok(X1),ok(X2)) -> first#(X1,X2)
    active#(first(X1,X2)) -> first#(X1,active(X2)) ->
    first#(X1,mark(X2)) -> first#(X1,X2)
    active#(first(X1,X2)) -> first#(X1,active(X2)) ->
    first#(mark(X1),X2) -> first#(X1,X2)
    active#(first(X1,X2)) -> active#(X2) ->
    active#(from(X)) -> from#(active(X))
    active#(first(X1,X2)) -> active#(X2) ->
    active#(from(X)) -> active#(X)
    active#(first(X1,X2)) -> active#(X2) ->
    active#(cons(X1,X2)) -> cons#(active(X1),X2)
    active#(first(X1,X2)) -> active#(X2) ->
    active#(cons(X1,X2)) -> active#(X1)
    active#(first(X1,X2)) -> active#(X2) ->
    active#(s(X)) -> s#(active(X))
    active#(first(X1,X2)) -> active#(X2) ->
    active#(s(X)) -> active#(X)
    active#(first(X1,X2)) -> active#(X2) ->
    active#(first(X1,X2)) -> first#(X1,active(X2))
    active#(first(X1,X2)) -> active#(X2) ->
    active#(first(X1,X2)) -> active#(X2)
    active#(first(X1,X2)) -> active#(X2) ->
    active#(first(X1,X2)) -> first#(active(X1),X2)
    active#(first(X1,X2)) -> active#(X2) ->
    active#(first(X1,X2)) -> active#(X1)
    active#(first(X1,X2)) -> active#(X2) ->
    active#(from(X)) -> cons#(X,from(s(X)))
    active#(first(X1,X2)) -> active#(X2) ->
    active#(from(X)) -> from#(s(X))
    active#(first(X1,X2)) -> active#(X2) ->
    active#(from(X)) -> s#(X)
    active#(first(X1,X2)) -> active#(X2) ->
    active#(first(s(X),cons(Y,Z))) -> cons#(Y,first(X,Z))
    active#(first(X1,X2)) -> active#(X2) ->
    active#(first(s(X),cons(Y,Z))) -> first#(X,Z)
    active#(first(X1,X2)) -> active#(X1) ->
    active#(from(X)) -> from#(active(X))
    active#(first(X1,X2)) -> active#(X1) ->
    active#(from(X)) -> active#(X)
    active#(first(X1,X2)) -> active#(X1) ->
    active#(cons(X1,X2)) -> cons#(active(X1),X2)
    active#(first(X1,X2)) -> active#(X1) ->
    active#(cons(X1,X2)) -> active#(X1)
    active#(first(X1,X2)) -> active#(X1) ->
    active#(s(X)) -> s#(active(X))
    active#(first(X1,X2)) -> active#(X1) ->
    active#(s(X)) -> active#(X)
    active#(first(X1,X2)) -> active#(X1) ->
    active#(first(X1,X2)) -> first#(X1,active(X2))
    active#(first(X1,X2)) -> active#(X1) ->
    active#(first(X1,X2)) -> active#(X2)
    active#(first(X1,X2)) -> active#(X1) ->
    active#(first(X1,X2)) -> first#(active(X1),X2)
    active#(first(X1,X2)) -> active#(X1) ->
    active#(first(X1,X2)) -> active#(X1)
    active#(first(X1,X2)) -> active#(X1) ->
    active#(from(X)) -> cons#(X,from(s(X)))
    active#(first(X1,X2)) -> active#(X1) ->
    active#(from(X)) -> from#(s(X))
    active#(first(X1,X2)) -> active#(X1) ->
    active#(from(X)) -> s#(X)
    active#(first(X1,X2)) -> active#(X1) ->
    active#(first(s(X),cons(Y,Z))) -> cons#(Y,first(X,Z))
    active#(first(X1,X2)) -> active#(X1) -> active#(first(s(X),cons(Y,Z))) -> first#(X,Z)
   SCC Processor:
    #sccs: 7
    #rules: 22
    #arcs: 221/1444
    DPs:
     top#(ok(X)) -> top#(active(X))
     top#(mark(X)) -> top#(proper(X))
    TRS:
     active(first(0(),X)) -> mark(nil())
     active(first(s(X),cons(Y,Z))) -> mark(cons(Y,first(X,Z)))
     active(from(X)) -> mark(cons(X,from(s(X))))
     active(first(X1,X2)) -> first(active(X1),X2)
     active(first(X1,X2)) -> first(X1,active(X2))
     active(s(X)) -> s(active(X))
     active(cons(X1,X2)) -> cons(active(X1),X2)
     active(from(X)) -> from(active(X))
     first(mark(X1),X2) -> mark(first(X1,X2))
     first(X1,mark(X2)) -> mark(first(X1,X2))
     s(mark(X)) -> mark(s(X))
     cons(mark(X1),X2) -> mark(cons(X1,X2))
     from(mark(X)) -> mark(from(X))
     proper(first(X1,X2)) -> first(proper(X1),proper(X2))
     proper(0()) -> ok(0())
     proper(nil()) -> ok(nil())
     proper(s(X)) -> s(proper(X))
     proper(cons(X1,X2)) -> cons(proper(X1),proper(X2))
     proper(from(X)) -> from(proper(X))
     first(ok(X1),ok(X2)) -> ok(first(X1,X2))
     s(ok(X)) -> ok(s(X))
     cons(ok(X1),ok(X2)) -> ok(cons(X1,X2))
     from(ok(X)) -> ok(from(X))
     top(mark(X)) -> top(proper(X))
     top(ok(X)) -> top(active(X))
    Matrix Interpretation Processor: dim=2
     
     interpretation:
      [top#](x0) = [1 2]x0,
      
                  [1 1]  
      [top](x0) = [2 2]x0,
      
                 [1 0]     [0]
      [ok](x0) = [0 2]x0 + [1],
      
                     [1 0]     [0]
      [proper](x0) = [0 0]x0 + [1],
      
                        [2]
      [from](x0) = x0 + [0],
      
                         
      [cons](x0, x1) = x0,
      
                     [3]
      [s](x0) = x0 + [0],
      
                   [1 0]     [3]
      [mark](x0) = [0 0]x0 + [0],
      
              [0]
      [nil] = [0],
      
                          [1]
      [active](x0) = x0 + [0],
      
                             [1 0]  
      [first](x0, x1) = x0 + [0 0]x1,
      
            [2]
      [0] = [0]
     orientation:
      top#(ok(X)) = [1 4]X + [2] >= [1 2]X + [1] = top#(active(X))
      
      top#(mark(X)) = [1 0]X + [3] >= [1 0]X + [2] = top#(proper(X))
      
                             [1 0]    [3]    [3]              
      active(first(0(),X)) = [0 0]X + [0] >= [0] = mark(nil())
      
                                          [1 0]    [4]    [1 0]    [3]                           
      active(first(s(X),cons(Y,Z))) = X + [0 0]Y + [0] >= [0 0]Y + [0] = mark(cons(Y,first(X,Z)))
      
                            [3]    [1 0]    [3]                           
      active(from(X)) = X + [0] >= [0 0]X + [0] = mark(cons(X,from(s(X))))
      
                                  [1 0]     [1]         [1 0]     [1]                       
      active(first(X1,X2)) = X1 + [0 0]X2 + [0] >= X1 + [0 0]X2 + [0] = first(active(X1),X2)
      
                                  [1 0]     [1]         [1 0]     [1]                       
      active(first(X1,X2)) = X1 + [0 0]X2 + [0] >= X1 + [0 0]X2 + [0] = first(X1,active(X2))
      
                         [4]        [4]               
      active(s(X)) = X + [0] >= X + [0] = s(active(X))
      
                                 [1]         [1]                      
      active(cons(X1,X2)) = X1 + [0] >= X1 + [0] = cons(active(X1),X2)
      
                            [3]        [3]                  
      active(from(X)) = X + [0] >= X + [0] = from(active(X))
      
                           [1 0]     [1 0]     [3]    [1 0]     [1 0]     [3]                     
      first(mark(X1),X2) = [0 0]X1 + [0 0]X2 + [0] >= [0 0]X1 + [0 0]X2 + [0] = mark(first(X1,X2))
      
                                [1 0]     [3]    [1 0]     [1 0]     [3]                     
      first(X1,mark(X2)) = X1 + [0 0]X2 + [0] >= [0 0]X1 + [0 0]X2 + [0] = mark(first(X1,X2))
      
                   [1 0]    [6]    [1 0]    [6]             
      s(mark(X)) = [0 0]X + [0] >= [0 0]X + [0] = mark(s(X))
      
                          [1 0]     [3]    [1 0]     [3]                    
      cons(mark(X1),X2) = [0 0]X1 + [0] >= [0 0]X1 + [0] = mark(cons(X1,X2))
      
                      [1 0]    [5]    [1 0]    [5]                
      from(mark(X)) = [0 0]X + [0] >= [0 0]X + [0] = mark(from(X))
      
                             [1 0]     [1 0]     [0]    [1 0]     [1 0]     [0]                               
      proper(first(X1,X2)) = [0 0]X1 + [0 0]X2 + [1] >= [0 0]X1 + [0 0]X2 + [1] = first(proper(X1),proper(X2))
      
                    [2]    [2]          
      proper(0()) = [1] >= [1] = ok(0())
      
                      [0]    [0]            
      proper(nil()) = [1] >= [1] = ok(nil())
      
                     [1 0]    [3]    [1 0]    [3]               
      proper(s(X)) = [0 0]X + [1] >= [0 0]X + [1] = s(proper(X))
      
                            [1 0]     [0]    [1 0]     [0]                              
      proper(cons(X1,X2)) = [0 0]X1 + [1] >= [0 0]X1 + [1] = cons(proper(X1),proper(X2))
      
                        [1 0]    [2]    [1 0]    [2]                  
      proper(from(X)) = [0 0]X + [1] >= [0 0]X + [1] = from(proper(X))
      
                             [1 0]     [1 0]     [0]    [1 0]     [1 0]     [0]                   
      first(ok(X1),ok(X2)) = [0 2]X1 + [0 0]X2 + [1] >= [0 2]X1 + [0 0]X2 + [1] = ok(first(X1,X2))
      
                 [1 0]    [3]    [1 0]    [3]           
      s(ok(X)) = [0 2]X + [1] >= [0 2]X + [1] = ok(s(X))
      
                            [1 0]     [0]    [1 0]     [0]                  
      cons(ok(X1),ok(X2)) = [0 2]X1 + [1] >= [0 2]X1 + [1] = ok(cons(X1,X2))
      
                    [1 0]    [2]    [1 0]    [2]              
      from(ok(X)) = [0 2]X + [1] >= [0 2]X + [1] = ok(from(X))
      
                     [1 0]    [3]    [1 0]    [1]                 
      top(mark(X)) = [2 0]X + [6] >= [2 0]X + [2] = top(proper(X))
      
                   [1 2]    [1]    [1 1]    [1]                 
      top(ok(X)) = [2 4]X + [2] >= [2 2]X + [2] = top(active(X))
     problem:
      DPs:
       
      TRS:
       active(first(0(),X)) -> mark(nil())
       active(first(s(X),cons(Y,Z))) -> mark(cons(Y,first(X,Z)))
       active(from(X)) -> mark(cons(X,from(s(X))))
       active(first(X1,X2)) -> first(active(X1),X2)
       active(first(X1,X2)) -> first(X1,active(X2))
       active(s(X)) -> s(active(X))
       active(cons(X1,X2)) -> cons(active(X1),X2)
       active(from(X)) -> from(active(X))
       first(mark(X1),X2) -> mark(first(X1,X2))
       first(X1,mark(X2)) -> mark(first(X1,X2))
       s(mark(X)) -> mark(s(X))
       cons(mark(X1),X2) -> mark(cons(X1,X2))
       from(mark(X)) -> mark(from(X))
       proper(first(X1,X2)) -> first(proper(X1),proper(X2))
       proper(0()) -> ok(0())
       proper(nil()) -> ok(nil())
       proper(s(X)) -> s(proper(X))
       proper(cons(X1,X2)) -> cons(proper(X1),proper(X2))
       proper(from(X)) -> from(proper(X))
       first(ok(X1),ok(X2)) -> ok(first(X1,X2))
       s(ok(X)) -> ok(s(X))
       cons(ok(X1),ok(X2)) -> ok(cons(X1,X2))
       from(ok(X)) -> ok(from(X))
       top(mark(X)) -> top(proper(X))
       top(ok(X)) -> top(active(X))
     Qed
    
    DPs:
     active#(first(X1,X2)) -> active#(X1)
     active#(first(X1,X2)) -> active#(X2)
     active#(s(X)) -> active#(X)
     active#(cons(X1,X2)) -> active#(X1)
     active#(from(X)) -> active#(X)
    TRS:
     active(first(0(),X)) -> mark(nil())
     active(first(s(X),cons(Y,Z))) -> mark(cons(Y,first(X,Z)))
     active(from(X)) -> mark(cons(X,from(s(X))))
     active(first(X1,X2)) -> first(active(X1),X2)
     active(first(X1,X2)) -> first(X1,active(X2))
     active(s(X)) -> s(active(X))
     active(cons(X1,X2)) -> cons(active(X1),X2)
     active(from(X)) -> from(active(X))
     first(mark(X1),X2) -> mark(first(X1,X2))
     first(X1,mark(X2)) -> mark(first(X1,X2))
     s(mark(X)) -> mark(s(X))
     cons(mark(X1),X2) -> mark(cons(X1,X2))
     from(mark(X)) -> mark(from(X))
     proper(first(X1,X2)) -> first(proper(X1),proper(X2))
     proper(0()) -> ok(0())
     proper(nil()) -> ok(nil())
     proper(s(X)) -> s(proper(X))
     proper(cons(X1,X2)) -> cons(proper(X1),proper(X2))
     proper(from(X)) -> from(proper(X))
     first(ok(X1),ok(X2)) -> ok(first(X1,X2))
     s(ok(X)) -> ok(s(X))
     cons(ok(X1),ok(X2)) -> ok(cons(X1,X2))
     from(ok(X)) -> ok(from(X))
     top(mark(X)) -> top(proper(X))
     top(ok(X)) -> top(active(X))
    Matrix Interpretation Processor: dim=1
     
     interpretation:
      [active#](x0) = x0,
      
      [top](x0) = 0,
      
      [ok](x0) = x0,
      
      [proper](x0) = 4x0 + 2,
      
      [from](x0) = 4x0 + 3,
      
      [cons](x0, x1) = 2x0 + 4,
      
      [s](x0) = x0 + 1,
      
      [mark](x0) = 3,
      
      [nil] = 4,
      
      [active](x0) = x0,
      
      [first](x0, x1) = x0 + x1 + 3,
      
      [0] = 4
     orientation:
      active#(first(X1,X2)) = X1 + X2 + 3 >= X1 = active#(X1)
      
      active#(first(X1,X2)) = X1 + X2 + 3 >= X2 = active#(X2)
      
      active#(s(X)) = X + 1 >= X = active#(X)
      
      active#(cons(X1,X2)) = 2X1 + 4 >= X1 = active#(X1)
      
      active#(from(X)) = 4X + 3 >= X = active#(X)
      
      active(first(0(),X)) = X + 7 >= 3 = mark(nil())
      
      active(first(s(X),cons(Y,Z))) = X + 2Y + 8 >= 3 = mark(cons(Y,first(X,Z)))
      
      active(from(X)) = 4X + 3 >= 3 = mark(cons(X,from(s(X))))
      
      active(first(X1,X2)) = X1 + X2 + 3 >= X1 + X2 + 3 = first(active(X1),X2)
      
      active(first(X1,X2)) = X1 + X2 + 3 >= X1 + X2 + 3 = first(X1,active(X2))
      
      active(s(X)) = X + 1 >= X + 1 = s(active(X))
      
      active(cons(X1,X2)) = 2X1 + 4 >= 2X1 + 4 = cons(active(X1),X2)
      
      active(from(X)) = 4X + 3 >= 4X + 3 = from(active(X))
      
      first(mark(X1),X2) = X2 + 6 >= 3 = mark(first(X1,X2))
      
      first(X1,mark(X2)) = X1 + 6 >= 3 = mark(first(X1,X2))
      
      s(mark(X)) = 4 >= 3 = mark(s(X))
      
      cons(mark(X1),X2) = 10 >= 3 = mark(cons(X1,X2))
      
      from(mark(X)) = 15 >= 3 = mark(from(X))
      
      proper(first(X1,X2)) = 4X1 + 4X2 + 14 >= 4X1 + 4X2 + 7 = first(proper(X1),proper(X2))
      
      proper(0()) = 18 >= 4 = ok(0())
      
      proper(nil()) = 18 >= 4 = ok(nil())
      
      proper(s(X)) = 4X + 6 >= 4X + 3 = s(proper(X))
      
      proper(cons(X1,X2)) = 8X1 + 18 >= 8X1 + 8 = cons(proper(X1),proper(X2))
      
      proper(from(X)) = 16X + 14 >= 16X + 11 = from(proper(X))
      
      first(ok(X1),ok(X2)) = X1 + X2 + 3 >= X1 + X2 + 3 = ok(first(X1,X2))
      
      s(ok(X)) = X + 1 >= X + 1 = ok(s(X))
      
      cons(ok(X1),ok(X2)) = 2X1 + 4 >= 2X1 + 4 = ok(cons(X1,X2))
      
      from(ok(X)) = 4X + 3 >= 4X + 3 = ok(from(X))
      
      top(mark(X)) = 0 >= 0 = top(proper(X))
      
      top(ok(X)) = 0 >= 0 = top(active(X))
     problem:
      DPs:
       
      TRS:
       active(first(0(),X)) -> mark(nil())
       active(first(s(X),cons(Y,Z))) -> mark(cons(Y,first(X,Z)))
       active(from(X)) -> mark(cons(X,from(s(X))))
       active(first(X1,X2)) -> first(active(X1),X2)
       active(first(X1,X2)) -> first(X1,active(X2))
       active(s(X)) -> s(active(X))
       active(cons(X1,X2)) -> cons(active(X1),X2)
       active(from(X)) -> from(active(X))
       first(mark(X1),X2) -> mark(first(X1,X2))
       first(X1,mark(X2)) -> mark(first(X1,X2))
       s(mark(X)) -> mark(s(X))
       cons(mark(X1),X2) -> mark(cons(X1,X2))
       from(mark(X)) -> mark(from(X))
       proper(first(X1,X2)) -> first(proper(X1),proper(X2))
       proper(0()) -> ok(0())
       proper(nil()) -> ok(nil())
       proper(s(X)) -> s(proper(X))
       proper(cons(X1,X2)) -> cons(proper(X1),proper(X2))
       proper(from(X)) -> from(proper(X))
       first(ok(X1),ok(X2)) -> ok(first(X1,X2))
       s(ok(X)) -> ok(s(X))
       cons(ok(X1),ok(X2)) -> ok(cons(X1,X2))
       from(ok(X)) -> ok(from(X))
       top(mark(X)) -> top(proper(X))
       top(ok(X)) -> top(active(X))
     Qed
    
    DPs:
     proper#(first(X1,X2)) -> proper#(X2)
     proper#(first(X1,X2)) -> proper#(X1)
     proper#(s(X)) -> proper#(X)
     proper#(cons(X1,X2)) -> proper#(X2)
     proper#(cons(X1,X2)) -> proper#(X1)
     proper#(from(X)) -> proper#(X)
    TRS:
     active(first(0(),X)) -> mark(nil())
     active(first(s(X),cons(Y,Z))) -> mark(cons(Y,first(X,Z)))
     active(from(X)) -> mark(cons(X,from(s(X))))
     active(first(X1,X2)) -> first(active(X1),X2)
     active(first(X1,X2)) -> first(X1,active(X2))
     active(s(X)) -> s(active(X))
     active(cons(X1,X2)) -> cons(active(X1),X2)
     active(from(X)) -> from(active(X))
     first(mark(X1),X2) -> mark(first(X1,X2))
     first(X1,mark(X2)) -> mark(first(X1,X2))
     s(mark(X)) -> mark(s(X))
     cons(mark(X1),X2) -> mark(cons(X1,X2))
     from(mark(X)) -> mark(from(X))
     proper(first(X1,X2)) -> first(proper(X1),proper(X2))
     proper(0()) -> ok(0())
     proper(nil()) -> ok(nil())
     proper(s(X)) -> s(proper(X))
     proper(cons(X1,X2)) -> cons(proper(X1),proper(X2))
     proper(from(X)) -> from(proper(X))
     first(ok(X1),ok(X2)) -> ok(first(X1,X2))
     s(ok(X)) -> ok(s(X))
     cons(ok(X1),ok(X2)) -> ok(cons(X1,X2))
     from(ok(X)) -> ok(from(X))
     top(mark(X)) -> top(proper(X))
     top(ok(X)) -> top(active(X))
    Matrix Interpretation Processor: dim=1
     
     interpretation:
      [proper#](x0) = 2x0,
      
      [top](x0) = 0,
      
      [ok](x0) = 0,
      
      [proper](x0) = 2x0,
      
      [from](x0) = 6x0 + 1,
      
      [cons](x0, x1) = 2x0 + 4x1 + 1,
      
      [s](x0) = x0 + 1,
      
      [mark](x0) = 2,
      
      [nil] = 2,
      
      [active](x0) = 4x0,
      
      [first](x0, x1) = 4x0 + x1 + 2,
      
      [0] = 1
     orientation:
      proper#(first(X1,X2)) = 8X1 + 2X2 + 4 >= 2X2 = proper#(X2)
      
      proper#(first(X1,X2)) = 8X1 + 2X2 + 4 >= 2X1 = proper#(X1)
      
      proper#(s(X)) = 2X + 2 >= 2X = proper#(X)
      
      proper#(cons(X1,X2)) = 4X1 + 8X2 + 2 >= 2X2 = proper#(X2)
      
      proper#(cons(X1,X2)) = 4X1 + 8X2 + 2 >= 2X1 = proper#(X1)
      
      proper#(from(X)) = 12X + 2 >= 2X = proper#(X)
      
      active(first(0(),X)) = 4X + 24 >= 2 = mark(nil())
      
      active(first(s(X),cons(Y,Z))) = 16X + 8Y + 16Z + 28 >= 2 = mark(cons(Y,first(X,Z)))
      
      active(from(X)) = 24X + 4 >= 2 = mark(cons(X,from(s(X))))
      
      active(first(X1,X2)) = 16X1 + 4X2 + 8 >= 16X1 + X2 + 2 = first(active(X1),X2)
      
      active(first(X1,X2)) = 16X1 + 4X2 + 8 >= 4X1 + 4X2 + 2 = first(X1,active(X2))
      
      active(s(X)) = 4X + 4 >= 4X + 1 = s(active(X))
      
      active(cons(X1,X2)) = 8X1 + 16X2 + 4 >= 8X1 + 4X2 + 1 = cons(active(X1),X2)
      
      active(from(X)) = 24X + 4 >= 24X + 1 = from(active(X))
      
      first(mark(X1),X2) = X2 + 10 >= 2 = mark(first(X1,X2))
      
      first(X1,mark(X2)) = 4X1 + 4 >= 2 = mark(first(X1,X2))
      
      s(mark(X)) = 3 >= 2 = mark(s(X))
      
      cons(mark(X1),X2) = 4X2 + 5 >= 2 = mark(cons(X1,X2))
      
      from(mark(X)) = 13 >= 2 = mark(from(X))
      
      proper(first(X1,X2)) = 8X1 + 2X2 + 4 >= 8X1 + 2X2 + 2 = first(proper(X1),proper(X2))
      
      proper(0()) = 2 >= 0 = ok(0())
      
      proper(nil()) = 4 >= 0 = ok(nil())
      
      proper(s(X)) = 2X + 2 >= 2X + 1 = s(proper(X))
      
      proper(cons(X1,X2)) = 4X1 + 8X2 + 2 >= 4X1 + 8X2 + 1 = cons(proper(X1),proper(X2))
      
      proper(from(X)) = 12X + 2 >= 12X + 1 = from(proper(X))
      
      first(ok(X1),ok(X2)) = 2 >= 0 = ok(first(X1,X2))
      
      s(ok(X)) = 1 >= 0 = ok(s(X))
      
      cons(ok(X1),ok(X2)) = 1 >= 0 = ok(cons(X1,X2))
      
      from(ok(X)) = 1 >= 0 = ok(from(X))
      
      top(mark(X)) = 0 >= 0 = top(proper(X))
      
      top(ok(X)) = 0 >= 0 = top(active(X))
     problem:
      DPs:
       
      TRS:
       active(first(0(),X)) -> mark(nil())
       active(first(s(X),cons(Y,Z))) -> mark(cons(Y,first(X,Z)))
       active(from(X)) -> mark(cons(X,from(s(X))))
       active(first(X1,X2)) -> first(active(X1),X2)
       active(first(X1,X2)) -> first(X1,active(X2))
       active(s(X)) -> s(active(X))
       active(cons(X1,X2)) -> cons(active(X1),X2)
       active(from(X)) -> from(active(X))
       first(mark(X1),X2) -> mark(first(X1,X2))
       first(X1,mark(X2)) -> mark(first(X1,X2))
       s(mark(X)) -> mark(s(X))
       cons(mark(X1),X2) -> mark(cons(X1,X2))
       from(mark(X)) -> mark(from(X))
       proper(first(X1,X2)) -> first(proper(X1),proper(X2))
       proper(0()) -> ok(0())
       proper(nil()) -> ok(nil())
       proper(s(X)) -> s(proper(X))
       proper(cons(X1,X2)) -> cons(proper(X1),proper(X2))
       proper(from(X)) -> from(proper(X))
       first(ok(X1),ok(X2)) -> ok(first(X1,X2))
       s(ok(X)) -> ok(s(X))
       cons(ok(X1),ok(X2)) -> ok(cons(X1,X2))
       from(ok(X)) -> ok(from(X))
       top(mark(X)) -> top(proper(X))
       top(ok(X)) -> top(active(X))
     Qed
   
   DPs:
    from#(mark(X)) -> from#(X)
    from#(ok(X)) -> from#(X)
   TRS:
    active(first(0(),X)) -> mark(nil())
    active(first(s(X),cons(Y,Z))) -> mark(cons(Y,first(X,Z)))
    active(from(X)) -> mark(cons(X,from(s(X))))
    active(first(X1,X2)) -> first(active(X1),X2)
    active(first(X1,X2)) -> first(X1,active(X2))
    active(s(X)) -> s(active(X))
    active(cons(X1,X2)) -> cons(active(X1),X2)
    active(from(X)) -> from(active(X))
    first(mark(X1),X2) -> mark(first(X1,X2))
    first(X1,mark(X2)) -> mark(first(X1,X2))
    s(mark(X)) -> mark(s(X))
    cons(mark(X1),X2) -> mark(cons(X1,X2))
    from(mark(X)) -> mark(from(X))
    proper(first(X1,X2)) -> first(proper(X1),proper(X2))
    proper(0()) -> ok(0())
    proper(nil()) -> ok(nil())
    proper(s(X)) -> s(proper(X))
    proper(cons(X1,X2)) -> cons(proper(X1),proper(X2))
    proper(from(X)) -> from(proper(X))
    first(ok(X1),ok(X2)) -> ok(first(X1,X2))
    s(ok(X)) -> ok(s(X))
    cons(ok(X1),ok(X2)) -> ok(cons(X1,X2))
    from(ok(X)) -> ok(from(X))
    top(mark(X)) -> top(proper(X))
    top(ok(X)) -> top(active(X))
   Matrix Interpretation Processor: dim=1
    
    interpretation:
     [from#](x0) = 2x0 + 1,
     
     [top](x0) = 0,
     
     [ok](x0) = x0 + 2,
     
     [proper](x0) = 3x0,
     
     [from](x0) = 2x0 + 2,
     
     [cons](x0, x1) = x0,
     
     [s](x0) = x0,
     
     [mark](x0) = x0 + 1/2,
     
     [nil] = 1,
     
     [active](x0) = 2x0,
     
     [first](x0, x1) = 2x0 + 2x1 + 1/2,
     
     [0] = 5/2
    orientation:
     from#(mark(X)) = 2X + 2 >= 2X + 1 = from#(X)
     
     from#(ok(X)) = 2X + 5 >= 2X + 1 = from#(X)
     
     active(first(0(),X)) = 4X + 11 >= 3/2 = mark(nil())
     
     active(first(s(X),cons(Y,Z))) = 4X + 4Y + 1 >= Y + 1/2 = mark(cons(Y,first(X,Z)))
     
     active(from(X)) = 4X + 4 >= X + 1/2 = mark(cons(X,from(s(X))))
     
     active(first(X1,X2)) = 4X1 + 4X2 + 1 >= 4X1 + 2X2 + 1/2 = first(active(X1),X2)
     
     active(first(X1,X2)) = 4X1 + 4X2 + 1 >= 2X1 + 4X2 + 1/2 = first(X1,active(X2))
     
     active(s(X)) = 2X >= 2X = s(active(X))
     
     active(cons(X1,X2)) = 2X1 >= 2X1 = cons(active(X1),X2)
     
     active(from(X)) = 4X + 4 >= 4X + 2 = from(active(X))
     
     first(mark(X1),X2) = 2X1 + 2X2 + 3/2 >= 2X1 + 2X2 + 1 = mark(first(X1,X2))
     
     first(X1,mark(X2)) = 2X1 + 2X2 + 3/2 >= 2X1 + 2X2 + 1 = mark(first(X1,X2))
     
     s(mark(X)) = X + 1/2 >= X + 1/2 = mark(s(X))
     
     cons(mark(X1),X2) = X1 + 1/2 >= X1 + 1/2 = mark(cons(X1,X2))
     
     from(mark(X)) = 2X + 3 >= 2X + 5/2 = mark(from(X))
     
     proper(first(X1,X2)) = 6X1 + 6X2 + 3/2 >= 6X1 + 6X2 + 1/2 = first(proper(X1),proper(X2))
     
     proper(0()) = 15/2 >= 9/2 = ok(0())
     
     proper(nil()) = 3 >= 3 = ok(nil())
     
     proper(s(X)) = 3X >= 3X = s(proper(X))
     
     proper(cons(X1,X2)) = 3X1 >= 3X1 = cons(proper(X1),proper(X2))
     
     proper(from(X)) = 6X + 6 >= 6X + 2 = from(proper(X))
     
     first(ok(X1),ok(X2)) = 2X1 + 2X2 + 17/2 >= 2X1 + 2X2 + 5/2 = ok(first(X1,X2))
     
     s(ok(X)) = X + 2 >= X + 2 = ok(s(X))
     
     cons(ok(X1),ok(X2)) = X1 + 2 >= X1 + 2 = ok(cons(X1,X2))
     
     from(ok(X)) = 2X + 6 >= 2X + 4 = ok(from(X))
     
     top(mark(X)) = 0 >= 0 = top(proper(X))
     
     top(ok(X)) = 0 >= 0 = top(active(X))
    problem:
     DPs:
      
     TRS:
      active(first(0(),X)) -> mark(nil())
      active(first(s(X),cons(Y,Z))) -> mark(cons(Y,first(X,Z)))
      active(from(X)) -> mark(cons(X,from(s(X))))
      active(first(X1,X2)) -> first(active(X1),X2)
      active(first(X1,X2)) -> first(X1,active(X2))
      active(s(X)) -> s(active(X))
      active(cons(X1,X2)) -> cons(active(X1),X2)
      active(from(X)) -> from(active(X))
      first(mark(X1),X2) -> mark(first(X1,X2))
      first(X1,mark(X2)) -> mark(first(X1,X2))
      s(mark(X)) -> mark(s(X))
      cons(mark(X1),X2) -> mark(cons(X1,X2))
      from(mark(X)) -> mark(from(X))
      proper(first(X1,X2)) -> first(proper(X1),proper(X2))
      proper(0()) -> ok(0())
      proper(nil()) -> ok(nil())
      proper(s(X)) -> s(proper(X))
      proper(cons(X1,X2)) -> cons(proper(X1),proper(X2))
      proper(from(X)) -> from(proper(X))
      first(ok(X1),ok(X2)) -> ok(first(X1,X2))
      s(ok(X)) -> ok(s(X))
      cons(ok(X1),ok(X2)) -> ok(cons(X1,X2))
      from(ok(X)) -> ok(from(X))
      top(mark(X)) -> top(proper(X))
      top(ok(X)) -> top(active(X))
    Qed
   
   DPs:
    cons#(mark(X1),X2) -> cons#(X1,X2)
    cons#(ok(X1),ok(X2)) -> cons#(X1,X2)
   TRS:
    active(first(0(),X)) -> mark(nil())
    active(first(s(X),cons(Y,Z))) -> mark(cons(Y,first(X,Z)))
    active(from(X)) -> mark(cons(X,from(s(X))))
    active(first(X1,X2)) -> first(active(X1),X2)
    active(first(X1,X2)) -> first(X1,active(X2))
    active(s(X)) -> s(active(X))
    active(cons(X1,X2)) -> cons(active(X1),X2)
    active(from(X)) -> from(active(X))
    first(mark(X1),X2) -> mark(first(X1,X2))
    first(X1,mark(X2)) -> mark(first(X1,X2))
    s(mark(X)) -> mark(s(X))
    cons(mark(X1),X2) -> mark(cons(X1,X2))
    from(mark(X)) -> mark(from(X))
    proper(first(X1,X2)) -> first(proper(X1),proper(X2))
    proper(0()) -> ok(0())
    proper(nil()) -> ok(nil())
    proper(s(X)) -> s(proper(X))
    proper(cons(X1,X2)) -> cons(proper(X1),proper(X2))
    proper(from(X)) -> from(proper(X))
    first(ok(X1),ok(X2)) -> ok(first(X1,X2))
    s(ok(X)) -> ok(s(X))
    cons(ok(X1),ok(X2)) -> ok(cons(X1,X2))
    from(ok(X)) -> ok(from(X))
    top(mark(X)) -> top(proper(X))
    top(ok(X)) -> top(active(X))
   Matrix Interpretation Processor: dim=1
    
    interpretation:
     [cons#](x0, x1) = 4x0 + 2x1 + 6,
     
     [top](x0) = 0,
     
     [ok](x0) = x0 + 1,
     
     [proper](x0) = 2x0,
     
     [from](x0) = 3x0 + 4,
     
     [cons](x0, x1) = x0 + 4,
     
     [s](x0) = x0,
     
     [mark](x0) = x0 + 4,
     
     [nil] = 4,
     
     [active](x0) = 2x0,
     
     [first](x0, x1) = x0 + x1,
     
     [0] = 4
    orientation:
     cons#(mark(X1),X2) = 4X1 + 2X2 + 22 >= 4X1 + 2X2 + 6 = cons#(X1,X2)
     
     cons#(ok(X1),ok(X2)) = 4X1 + 2X2 + 12 >= 4X1 + 2X2 + 6 = cons#(X1,X2)
     
     active(first(0(),X)) = 2X + 8 >= 8 = mark(nil())
     
     active(first(s(X),cons(Y,Z))) = 2X + 2Y + 8 >= Y + 8 = mark(cons(Y,first(X,Z)))
     
     active(from(X)) = 6X + 8 >= X + 8 = mark(cons(X,from(s(X))))
     
     active(first(X1,X2)) = 2X1 + 2X2 >= 2X1 + X2 = first(active(X1),X2)
     
     active(first(X1,X2)) = 2X1 + 2X2 >= X1 + 2X2 = first(X1,active(X2))
     
     active(s(X)) = 2X >= 2X = s(active(X))
     
     active(cons(X1,X2)) = 2X1 + 8 >= 2X1 + 4 = cons(active(X1),X2)
     
     active(from(X)) = 6X + 8 >= 6X + 4 = from(active(X))
     
     first(mark(X1),X2) = X1 + X2 + 4 >= X1 + X2 + 4 = mark(first(X1,X2))
     
     first(X1,mark(X2)) = X1 + X2 + 4 >= X1 + X2 + 4 = mark(first(X1,X2))
     
     s(mark(X)) = X + 4 >= X + 4 = mark(s(X))
     
     cons(mark(X1),X2) = X1 + 8 >= X1 + 8 = mark(cons(X1,X2))
     
     from(mark(X)) = 3X + 16 >= 3X + 8 = mark(from(X))
     
     proper(first(X1,X2)) = 2X1 + 2X2 >= 2X1 + 2X2 = first(proper(X1),proper(X2))
     
     proper(0()) = 8 >= 5 = ok(0())
     
     proper(nil()) = 8 >= 5 = ok(nil())
     
     proper(s(X)) = 2X >= 2X = s(proper(X))
     
     proper(cons(X1,X2)) = 2X1 + 8 >= 2X1 + 4 = cons(proper(X1),proper(X2))
     
     proper(from(X)) = 6X + 8 >= 6X + 4 = from(proper(X))
     
     first(ok(X1),ok(X2)) = X1 + X2 + 2 >= X1 + X2 + 1 = ok(first(X1,X2))
     
     s(ok(X)) = X + 1 >= X + 1 = ok(s(X))
     
     cons(ok(X1),ok(X2)) = X1 + 5 >= X1 + 5 = ok(cons(X1,X2))
     
     from(ok(X)) = 3X + 7 >= 3X + 5 = ok(from(X))
     
     top(mark(X)) = 0 >= 0 = top(proper(X))
     
     top(ok(X)) = 0 >= 0 = top(active(X))
    problem:
     DPs:
      
     TRS:
      active(first(0(),X)) -> mark(nil())
      active(first(s(X),cons(Y,Z))) -> mark(cons(Y,first(X,Z)))
      active(from(X)) -> mark(cons(X,from(s(X))))
      active(first(X1,X2)) -> first(active(X1),X2)
      active(first(X1,X2)) -> first(X1,active(X2))
      active(s(X)) -> s(active(X))
      active(cons(X1,X2)) -> cons(active(X1),X2)
      active(from(X)) -> from(active(X))
      first(mark(X1),X2) -> mark(first(X1,X2))
      first(X1,mark(X2)) -> mark(first(X1,X2))
      s(mark(X)) -> mark(s(X))
      cons(mark(X1),X2) -> mark(cons(X1,X2))
      from(mark(X)) -> mark(from(X))
      proper(first(X1,X2)) -> first(proper(X1),proper(X2))
      proper(0()) -> ok(0())
      proper(nil()) -> ok(nil())
      proper(s(X)) -> s(proper(X))
      proper(cons(X1,X2)) -> cons(proper(X1),proper(X2))
      proper(from(X)) -> from(proper(X))
      first(ok(X1),ok(X2)) -> ok(first(X1,X2))
      s(ok(X)) -> ok(s(X))
      cons(ok(X1),ok(X2)) -> ok(cons(X1,X2))
      from(ok(X)) -> ok(from(X))
      top(mark(X)) -> top(proper(X))
      top(ok(X)) -> top(active(X))
    Qed
  
  DPs:
   s#(mark(X)) -> s#(X)
   s#(ok(X)) -> s#(X)
  TRS:
   active(first(0(),X)) -> mark(nil())
   active(first(s(X),cons(Y,Z))) -> mark(cons(Y,first(X,Z)))
   active(from(X)) -> mark(cons(X,from(s(X))))
   active(first(X1,X2)) -> first(active(X1),X2)
   active(first(X1,X2)) -> first(X1,active(X2))
   active(s(X)) -> s(active(X))
   active(cons(X1,X2)) -> cons(active(X1),X2)
   active(from(X)) -> from(active(X))
   first(mark(X1),X2) -> mark(first(X1,X2))
   first(X1,mark(X2)) -> mark(first(X1,X2))
   s(mark(X)) -> mark(s(X))
   cons(mark(X1),X2) -> mark(cons(X1,X2))
   from(mark(X)) -> mark(from(X))
   proper(first(X1,X2)) -> first(proper(X1),proper(X2))
   proper(0()) -> ok(0())
   proper(nil()) -> ok(nil())
   proper(s(X)) -> s(proper(X))
   proper(cons(X1,X2)) -> cons(proper(X1),proper(X2))
   proper(from(X)) -> from(proper(X))
   first(ok(X1),ok(X2)) -> ok(first(X1,X2))
   s(ok(X)) -> ok(s(X))
   cons(ok(X1),ok(X2)) -> ok(cons(X1,X2))
   from(ok(X)) -> ok(from(X))
   top(mark(X)) -> top(proper(X))
   top(ok(X)) -> top(active(X))
  Matrix Interpretation Processor: dim=1
   
   interpretation:
    [s#](x0) = x0 + 4,
    
    [top](x0) = 0,
    
    [ok](x0) = 3x0 + 2,
    
    [proper](x0) = 3x0 + 2,
    
    [from](x0) = x0,
    
    [cons](x0, x1) = x0,
    
    [s](x0) = 2x0 + 1,
    
    [mark](x0) = x0 + 1,
    
    [nil] = 0,
    
    [active](x0) = 2x0 + 1,
    
    [first](x0, x1) = 4x0 + x1 + 4,
    
    [0] = 0
   orientation:
    s#(mark(X)) = X + 5 >= X + 4 = s#(X)
    
    s#(ok(X)) = 3X + 6 >= X + 4 = s#(X)
    
    active(first(0(),X)) = 2X + 9 >= 1 = mark(nil())
    
    active(first(s(X),cons(Y,Z))) = 16X + 2Y + 17 >= Y + 1 = mark(cons(Y,first(X,Z)))
    
    active(from(X)) = 2X + 1 >= X + 1 = mark(cons(X,from(s(X))))
    
    active(first(X1,X2)) = 8X1 + 2X2 + 9 >= 8X1 + X2 + 8 = first(active(X1),X2)
    
    active(first(X1,X2)) = 8X1 + 2X2 + 9 >= 4X1 + 2X2 + 5 = first(X1,active(X2))
    
    active(s(X)) = 4X + 3 >= 4X + 3 = s(active(X))
    
    active(cons(X1,X2)) = 2X1 + 1 >= 2X1 + 1 = cons(active(X1),X2)
    
    active(from(X)) = 2X + 1 >= 2X + 1 = from(active(X))
    
    first(mark(X1),X2) = 4X1 + X2 + 8 >= 4X1 + X2 + 5 = mark(first(X1,X2))
    
    first(X1,mark(X2)) = 4X1 + X2 + 5 >= 4X1 + X2 + 5 = mark(first(X1,X2))
    
    s(mark(X)) = 2X + 3 >= 2X + 2 = mark(s(X))
    
    cons(mark(X1),X2) = X1 + 1 >= X1 + 1 = mark(cons(X1,X2))
    
    from(mark(X)) = X + 1 >= X + 1 = mark(from(X))
    
    proper(first(X1,X2)) = 12X1 + 3X2 + 14 >= 12X1 + 3X2 + 14 = first(proper(X1),proper(X2))
    
    proper(0()) = 2 >= 2 = ok(0())
    
    proper(nil()) = 2 >= 2 = ok(nil())
    
    proper(s(X)) = 6X + 5 >= 6X + 5 = s(proper(X))
    
    proper(cons(X1,X2)) = 3X1 + 2 >= 3X1 + 2 = cons(proper(X1),proper(X2))
    
    proper(from(X)) = 3X + 2 >= 3X + 2 = from(proper(X))
    
    first(ok(X1),ok(X2)) = 12X1 + 3X2 + 14 >= 12X1 + 3X2 + 14 = ok(first(X1,X2))
    
    s(ok(X)) = 6X + 5 >= 6X + 5 = ok(s(X))
    
    cons(ok(X1),ok(X2)) = 3X1 + 2 >= 3X1 + 2 = ok(cons(X1,X2))
    
    from(ok(X)) = 3X + 2 >= 3X + 2 = ok(from(X))
    
    top(mark(X)) = 0 >= 0 = top(proper(X))
    
    top(ok(X)) = 0 >= 0 = top(active(X))
   problem:
    DPs:
     
    TRS:
     active(first(0(),X)) -> mark(nil())
     active(first(s(X),cons(Y,Z))) -> mark(cons(Y,first(X,Z)))
     active(from(X)) -> mark(cons(X,from(s(X))))
     active(first(X1,X2)) -> first(active(X1),X2)
     active(first(X1,X2)) -> first(X1,active(X2))
     active(s(X)) -> s(active(X))
     active(cons(X1,X2)) -> cons(active(X1),X2)
     active(from(X)) -> from(active(X))
     first(mark(X1),X2) -> mark(first(X1,X2))
     first(X1,mark(X2)) -> mark(first(X1,X2))
     s(mark(X)) -> mark(s(X))
     cons(mark(X1),X2) -> mark(cons(X1,X2))
     from(mark(X)) -> mark(from(X))
     proper(first(X1,X2)) -> first(proper(X1),proper(X2))
     proper(0()) -> ok(0())
     proper(nil()) -> ok(nil())
     proper(s(X)) -> s(proper(X))
     proper(cons(X1,X2)) -> cons(proper(X1),proper(X2))
     proper(from(X)) -> from(proper(X))
     first(ok(X1),ok(X2)) -> ok(first(X1,X2))
     s(ok(X)) -> ok(s(X))
     cons(ok(X1),ok(X2)) -> ok(cons(X1,X2))
     from(ok(X)) -> ok(from(X))
     top(mark(X)) -> top(proper(X))
     top(ok(X)) -> top(active(X))
   Qed
  
  DPs:
   first#(mark(X1),X2) -> first#(X1,X2)
   first#(X1,mark(X2)) -> first#(X1,X2)
   first#(ok(X1),ok(X2)) -> first#(X1,X2)
  TRS:
   active(first(0(),X)) -> mark(nil())
   active(first(s(X),cons(Y,Z))) -> mark(cons(Y,first(X,Z)))
   active(from(X)) -> mark(cons(X,from(s(X))))
   active(first(X1,X2)) -> first(active(X1),X2)
   active(first(X1,X2)) -> first(X1,active(X2))
   active(s(X)) -> s(active(X))
   active(cons(X1,X2)) -> cons(active(X1),X2)
   active(from(X)) -> from(active(X))
   first(mark(X1),X2) -> mark(first(X1,X2))
   first(X1,mark(X2)) -> mark(first(X1,X2))
   s(mark(X)) -> mark(s(X))
   cons(mark(X1),X2) -> mark(cons(X1,X2))
   from(mark(X)) -> mark(from(X))
   proper(first(X1,X2)) -> first(proper(X1),proper(X2))
   proper(0()) -> ok(0())
   proper(nil()) -> ok(nil())
   proper(s(X)) -> s(proper(X))
   proper(cons(X1,X2)) -> cons(proper(X1),proper(X2))
   proper(from(X)) -> from(proper(X))
   first(ok(X1),ok(X2)) -> ok(first(X1,X2))
   s(ok(X)) -> ok(s(X))
   cons(ok(X1),ok(X2)) -> ok(cons(X1,X2))
   from(ok(X)) -> ok(from(X))
   top(mark(X)) -> top(proper(X))
   top(ok(X)) -> top(active(X))
  Matrix Interpretation Processor: dim=1
   
   interpretation:
    [first#](x0, x1) = 4x0 + x1,
    
    [top](x0) = 4,
    
    [ok](x0) = x0 + 4,
    
    [proper](x0) = 5x0,
    
    [from](x0) = x0 + 4,
    
    [cons](x0, x1) = x0,
    
    [s](x0) = 4x0 + 2,
    
    [mark](x0) = x0 + 2,
    
    [nil] = 1,
    
    [active](x0) = x0,
    
    [first](x0, x1) = x0 + x1,
    
    [0] = 4
   orientation:
    first#(mark(X1),X2) = 4X1 + X2 + 8 >= 4X1 + X2 = first#(X1,X2)
    
    first#(X1,mark(X2)) = 4X1 + X2 + 2 >= 4X1 + X2 = first#(X1,X2)
    
    first#(ok(X1),ok(X2)) = 4X1 + X2 + 20 >= 4X1 + X2 = first#(X1,X2)
    
    active(first(0(),X)) = X + 4 >= 3 = mark(nil())
    
    active(first(s(X),cons(Y,Z))) = 4X + Y + 2 >= Y + 2 = mark(cons(Y,first(X,Z)))
    
    active(from(X)) = X + 4 >= X + 2 = mark(cons(X,from(s(X))))
    
    active(first(X1,X2)) = X1 + X2 >= X1 + X2 = first(active(X1),X2)
    
    active(first(X1,X2)) = X1 + X2 >= X1 + X2 = first(X1,active(X2))
    
    active(s(X)) = 4X + 2 >= 4X + 2 = s(active(X))
    
    active(cons(X1,X2)) = X1 >= X1 = cons(active(X1),X2)
    
    active(from(X)) = X + 4 >= X + 4 = from(active(X))
    
    first(mark(X1),X2) = X1 + X2 + 2 >= X1 + X2 + 2 = mark(first(X1,X2))
    
    first(X1,mark(X2)) = X1 + X2 + 2 >= X1 + X2 + 2 = mark(first(X1,X2))
    
    s(mark(X)) = 4X + 10 >= 4X + 4 = mark(s(X))
    
    cons(mark(X1),X2) = X1 + 2 >= X1 + 2 = mark(cons(X1,X2))
    
    from(mark(X)) = X + 6 >= X + 6 = mark(from(X))
    
    proper(first(X1,X2)) = 5X1 + 5X2 >= 5X1 + 5X2 = first(proper(X1),proper(X2))
    
    proper(0()) = 20 >= 8 = ok(0())
    
    proper(nil()) = 5 >= 5 = ok(nil())
    
    proper(s(X)) = 20X + 10 >= 20X + 2 = s(proper(X))
    
    proper(cons(X1,X2)) = 5X1 >= 5X1 = cons(proper(X1),proper(X2))
    
    proper(from(X)) = 5X + 20 >= 5X + 4 = from(proper(X))
    
    first(ok(X1),ok(X2)) = X1 + X2 + 8 >= X1 + X2 + 4 = ok(first(X1,X2))
    
    s(ok(X)) = 4X + 18 >= 4X + 6 = ok(s(X))
    
    cons(ok(X1),ok(X2)) = X1 + 4 >= X1 + 4 = ok(cons(X1,X2))
    
    from(ok(X)) = X + 8 >= X + 8 = ok(from(X))
    
    top(mark(X)) = 4 >= 4 = top(proper(X))
    
    top(ok(X)) = 4 >= 4 = top(active(X))
   problem:
    DPs:
     
    TRS:
     active(first(0(),X)) -> mark(nil())
     active(first(s(X),cons(Y,Z))) -> mark(cons(Y,first(X,Z)))
     active(from(X)) -> mark(cons(X,from(s(X))))
     active(first(X1,X2)) -> first(active(X1),X2)
     active(first(X1,X2)) -> first(X1,active(X2))
     active(s(X)) -> s(active(X))
     active(cons(X1,X2)) -> cons(active(X1),X2)
     active(from(X)) -> from(active(X))
     first(mark(X1),X2) -> mark(first(X1,X2))
     first(X1,mark(X2)) -> mark(first(X1,X2))
     s(mark(X)) -> mark(s(X))
     cons(mark(X1),X2) -> mark(cons(X1,X2))
     from(mark(X)) -> mark(from(X))
     proper(first(X1,X2)) -> first(proper(X1),proper(X2))
     proper(0()) -> ok(0())
     proper(nil()) -> ok(nil())
     proper(s(X)) -> s(proper(X))
     proper(cons(X1,X2)) -> cons(proper(X1),proper(X2))
     proper(from(X)) -> from(proper(X))
     first(ok(X1),ok(X2)) -> ok(first(X1,X2))
     s(ok(X)) -> ok(s(X))
     cons(ok(X1),ok(X2)) -> ok(cons(X1,X2))
     from(ok(X)) -> ok(from(X))
     top(mark(X)) -> top(proper(X))
     top(ok(X)) -> top(active(X))
   Qed