YES Problem: active(fst(0(),Z)) -> mark(nil()) active(fst(s(X),cons(Y,Z))) -> mark(cons(Y,fst(X,Z))) active(from(X)) -> mark(cons(X,from(s(X)))) active(add(0(),X)) -> mark(X) active(add(s(X),Y)) -> mark(s(add(X,Y))) active(len(nil())) -> mark(0()) active(len(cons(X,Z))) -> mark(s(len(Z))) active(cons(X1,X2)) -> cons(active(X1),X2) active(fst(X1,X2)) -> fst(active(X1),X2) active(fst(X1,X2)) -> fst(X1,active(X2)) active(from(X)) -> from(active(X)) active(add(X1,X2)) -> add(active(X1),X2) active(add(X1,X2)) -> add(X1,active(X2)) active(len(X)) -> len(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) fst(mark(X1),X2) -> mark(fst(X1,X2)) fst(X1,mark(X2)) -> mark(fst(X1,X2)) from(mark(X)) -> mark(from(X)) add(mark(X1),X2) -> mark(add(X1,X2)) add(X1,mark(X2)) -> mark(add(X1,X2)) len(mark(X)) -> mark(len(X)) proper(0()) -> ok(0()) proper(s(X)) -> s(proper(X)) proper(nil()) -> ok(nil()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(fst(X1,X2)) -> fst(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(add(X1,X2)) -> add(proper(X1),proper(X2)) proper(len(X)) -> len(proper(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) fst(ok(X1),ok(X2)) -> ok(fst(X1,X2)) from(ok(X)) -> ok(from(X)) add(ok(X1),ok(X2)) -> ok(add(X1,X2)) len(ok(X)) -> ok(len(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Proof: DP Processor: DPs: active#(fst(s(X),cons(Y,Z))) -> fst#(X,Z) active#(fst(s(X),cons(Y,Z))) -> cons#(Y,fst(X,Z)) active#(from(X)) -> s#(X) active#(from(X)) -> from#(s(X)) active#(from(X)) -> cons#(X,from(s(X))) active#(add(s(X),Y)) -> add#(X,Y) active#(add(s(X),Y)) -> s#(add(X,Y)) active#(len(cons(X,Z))) -> len#(Z) active#(len(cons(X,Z))) -> s#(len(Z)) active#(cons(X1,X2)) -> active#(X1) active#(cons(X1,X2)) -> cons#(active(X1),X2) active#(fst(X1,X2)) -> active#(X1) active#(fst(X1,X2)) -> fst#(active(X1),X2) active#(fst(X1,X2)) -> active#(X2) active#(fst(X1,X2)) -> fst#(X1,active(X2)) active#(from(X)) -> active#(X) active#(from(X)) -> from#(active(X)) active#(add(X1,X2)) -> active#(X1) active#(add(X1,X2)) -> add#(active(X1),X2) active#(add(X1,X2)) -> active#(X2) active#(add(X1,X2)) -> add#(X1,active(X2)) active#(len(X)) -> active#(X) active#(len(X)) -> len#(active(X)) cons#(mark(X1),X2) -> cons#(X1,X2) fst#(mark(X1),X2) -> fst#(X1,X2) fst#(X1,mark(X2)) -> fst#(X1,X2) from#(mark(X)) -> from#(X) add#(mark(X1),X2) -> add#(X1,X2) add#(X1,mark(X2)) -> add#(X1,X2) len#(mark(X)) -> len#(X) 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#(fst(X1,X2)) -> proper#(X2) proper#(fst(X1,X2)) -> proper#(X1) proper#(fst(X1,X2)) -> fst#(proper(X1),proper(X2)) proper#(from(X)) -> proper#(X) proper#(from(X)) -> from#(proper(X)) proper#(add(X1,X2)) -> proper#(X2) proper#(add(X1,X2)) -> proper#(X1) proper#(add(X1,X2)) -> add#(proper(X1),proper(X2)) proper#(len(X)) -> proper#(X) proper#(len(X)) -> len#(proper(X)) s#(ok(X)) -> s#(X) cons#(ok(X1),ok(X2)) -> cons#(X1,X2) fst#(ok(X1),ok(X2)) -> fst#(X1,X2) from#(ok(X)) -> from#(X) add#(ok(X1),ok(X2)) -> add#(X1,X2) len#(ok(X)) -> len#(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(fst(0(),Z)) -> mark(nil()) active(fst(s(X),cons(Y,Z))) -> mark(cons(Y,fst(X,Z))) active(from(X)) -> mark(cons(X,from(s(X)))) active(add(0(),X)) -> mark(X) active(add(s(X),Y)) -> mark(s(add(X,Y))) active(len(nil())) -> mark(0()) active(len(cons(X,Z))) -> mark(s(len(Z))) active(cons(X1,X2)) -> cons(active(X1),X2) active(fst(X1,X2)) -> fst(active(X1),X2) active(fst(X1,X2)) -> fst(X1,active(X2)) active(from(X)) -> from(active(X)) active(add(X1,X2)) -> add(active(X1),X2) active(add(X1,X2)) -> add(X1,active(X2)) active(len(X)) -> len(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) fst(mark(X1),X2) -> mark(fst(X1,X2)) fst(X1,mark(X2)) -> mark(fst(X1,X2)) from(mark(X)) -> mark(from(X)) add(mark(X1),X2) -> mark(add(X1,X2)) add(X1,mark(X2)) -> mark(add(X1,X2)) len(mark(X)) -> mark(len(X)) proper(0()) -> ok(0()) proper(s(X)) -> s(proper(X)) proper(nil()) -> ok(nil()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(fst(X1,X2)) -> fst(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(add(X1,X2)) -> add(proper(X1),proper(X2)) proper(len(X)) -> len(proper(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) fst(ok(X1),ok(X2)) -> ok(fst(X1,X2)) from(ok(X)) -> ok(from(X)) add(ok(X1),ok(X2)) -> ok(add(X1,X2)) len(ok(X)) -> ok(len(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) TDG Processor: DPs: active#(fst(s(X),cons(Y,Z))) -> fst#(X,Z) active#(fst(s(X),cons(Y,Z))) -> cons#(Y,fst(X,Z)) active#(from(X)) -> s#(X) active#(from(X)) -> from#(s(X)) active#(from(X)) -> cons#(X,from(s(X))) active#(add(s(X),Y)) -> add#(X,Y) active#(add(s(X),Y)) -> s#(add(X,Y)) active#(len(cons(X,Z))) -> len#(Z) active#(len(cons(X,Z))) -> s#(len(Z)) active#(cons(X1,X2)) -> active#(X1) active#(cons(X1,X2)) -> cons#(active(X1),X2) active#(fst(X1,X2)) -> active#(X1) active#(fst(X1,X2)) -> fst#(active(X1),X2) active#(fst(X1,X2)) -> active#(X2) active#(fst(X1,X2)) -> fst#(X1,active(X2)) active#(from(X)) -> active#(X) active#(from(X)) -> from#(active(X)) active#(add(X1,X2)) -> active#(X1) active#(add(X1,X2)) -> add#(active(X1),X2) active#(add(X1,X2)) -> active#(X2) active#(add(X1,X2)) -> add#(X1,active(X2)) active#(len(X)) -> active#(X) active#(len(X)) -> len#(active(X)) cons#(mark(X1),X2) -> cons#(X1,X2) fst#(mark(X1),X2) -> fst#(X1,X2) fst#(X1,mark(X2)) -> fst#(X1,X2) from#(mark(X)) -> from#(X) add#(mark(X1),X2) -> add#(X1,X2) add#(X1,mark(X2)) -> add#(X1,X2) len#(mark(X)) -> len#(X) 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#(fst(X1,X2)) -> proper#(X2) proper#(fst(X1,X2)) -> proper#(X1) proper#(fst(X1,X2)) -> fst#(proper(X1),proper(X2)) proper#(from(X)) -> proper#(X) proper#(from(X)) -> from#(proper(X)) proper#(add(X1,X2)) -> proper#(X2) proper#(add(X1,X2)) -> proper#(X1) proper#(add(X1,X2)) -> add#(proper(X1),proper(X2)) proper#(len(X)) -> proper#(X) proper#(len(X)) -> len#(proper(X)) s#(ok(X)) -> s#(X) cons#(ok(X1),ok(X2)) -> cons#(X1,X2) fst#(ok(X1),ok(X2)) -> fst#(X1,X2) from#(ok(X)) -> from#(X) add#(ok(X1),ok(X2)) -> add#(X1,X2) len#(ok(X)) -> len#(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(fst(0(),Z)) -> mark(nil()) active(fst(s(X),cons(Y,Z))) -> mark(cons(Y,fst(X,Z))) active(from(X)) -> mark(cons(X,from(s(X)))) active(add(0(),X)) -> mark(X) active(add(s(X),Y)) -> mark(s(add(X,Y))) active(len(nil())) -> mark(0()) active(len(cons(X,Z))) -> mark(s(len(Z))) active(cons(X1,X2)) -> cons(active(X1),X2) active(fst(X1,X2)) -> fst(active(X1),X2) active(fst(X1,X2)) -> fst(X1,active(X2)) active(from(X)) -> from(active(X)) active(add(X1,X2)) -> add(active(X1),X2) active(add(X1,X2)) -> add(X1,active(X2)) active(len(X)) -> len(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) fst(mark(X1),X2) -> mark(fst(X1,X2)) fst(X1,mark(X2)) -> mark(fst(X1,X2)) from(mark(X)) -> mark(from(X)) add(mark(X1),X2) -> mark(add(X1,X2)) add(X1,mark(X2)) -> mark(add(X1,X2)) len(mark(X)) -> mark(len(X)) proper(0()) -> ok(0()) proper(s(X)) -> s(proper(X)) proper(nil()) -> ok(nil()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(fst(X1,X2)) -> fst(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(add(X1,X2)) -> add(proper(X1),proper(X2)) proper(len(X)) -> len(proper(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) fst(ok(X1),ok(X2)) -> ok(fst(X1,X2)) from(ok(X)) -> ok(from(X)) add(ok(X1),ok(X2)) -> ok(add(X1,X2)) len(ok(X)) -> ok(len(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#(len(X)) -> len#(active(X)) top#(ok(X)) -> active#(X) -> active#(len(X)) -> active#(X) top#(ok(X)) -> active#(X) -> active#(add(X1,X2)) -> add#(X1,active(X2)) top#(ok(X)) -> active#(X) -> active#(add(X1,X2)) -> active#(X2) top#(ok(X)) -> active#(X) -> active#(add(X1,X2)) -> add#(active(X1),X2) top#(ok(X)) -> active#(X) -> active#(add(X1,X2)) -> active#(X1) 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#(fst(X1,X2)) -> fst#(X1,active(X2)) top#(ok(X)) -> active#(X) -> active#(fst(X1,X2)) -> active#(X2) top#(ok(X)) -> active#(X) -> active#(fst(X1,X2)) -> fst#(active(X1),X2) top#(ok(X)) -> active#(X) -> active#(fst(X1,X2)) -> active#(X1) 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#(len(cons(X,Z))) -> s#(len(Z)) top#(ok(X)) -> active#(X) -> active#(len(cons(X,Z))) -> len#(Z) top#(ok(X)) -> active#(X) -> active#(add(s(X),Y)) -> s#(add(X,Y)) top#(ok(X)) -> active#(X) -> active#(add(s(X),Y)) -> add#(X,Y) 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#(fst(s(X),cons(Y,Z))) -> cons#(Y,fst(X,Z)) top#(ok(X)) -> active#(X) -> active#(fst(s(X),cons(Y,Z))) -> fst#(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#(len(X)) -> len#(proper(X)) top#(mark(X)) -> proper#(X) -> proper#(len(X)) -> proper#(X) top#(mark(X)) -> proper#(X) -> proper#(add(X1,X2)) -> add#(proper(X1),proper(X2)) top#(mark(X)) -> proper#(X) -> proper#(add(X1,X2)) -> proper#(X1) top#(mark(X)) -> proper#(X) -> proper#(add(X1,X2)) -> proper#(X2) 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#(fst(X1,X2)) -> fst#(proper(X1),proper(X2)) top#(mark(X)) -> proper#(X) -> proper#(fst(X1,X2)) -> proper#(X1) top#(mark(X)) -> proper#(X) -> proper#(fst(X1,X2)) -> proper#(X2) 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) proper#(len(X)) -> proper#(X) -> proper#(len(X)) -> len#(proper(X)) proper#(len(X)) -> proper#(X) -> proper#(len(X)) -> proper#(X) proper#(len(X)) -> proper#(X) -> proper#(add(X1,X2)) -> add#(proper(X1),proper(X2)) proper#(len(X)) -> proper#(X) -> proper#(add(X1,X2)) -> proper#(X1) proper#(len(X)) -> proper#(X) -> proper#(add(X1,X2)) -> proper#(X2) proper#(len(X)) -> proper#(X) -> proper#(from(X)) -> from#(proper(X)) proper#(len(X)) -> proper#(X) -> proper#(from(X)) -> proper#(X) proper#(len(X)) -> proper#(X) -> proper#(fst(X1,X2)) -> fst#(proper(X1),proper(X2)) proper#(len(X)) -> proper#(X) -> proper#(fst(X1,X2)) -> proper#(X1) proper#(len(X)) -> proper#(X) -> proper#(fst(X1,X2)) -> proper#(X2) proper#(len(X)) -> proper#(X) -> proper#(cons(X1,X2)) -> cons#(proper(X1),proper(X2)) proper#(len(X)) -> proper#(X) -> proper#(cons(X1,X2)) -> proper#(X1) proper#(len(X)) -> proper#(X) -> proper#(cons(X1,X2)) -> proper#(X2) proper#(len(X)) -> proper#(X) -> proper#(s(X)) -> s#(proper(X)) proper#(len(X)) -> proper#(X) -> proper#(s(X)) -> proper#(X) proper#(len(X)) -> len#(proper(X)) -> len#(ok(X)) -> len#(X) proper#(len(X)) -> len#(proper(X)) -> len#(mark(X)) -> len#(X) proper#(add(X1,X2)) -> proper#(X2) -> proper#(len(X)) -> len#(proper(X)) proper#(add(X1,X2)) -> proper#(X2) -> proper#(len(X)) -> proper#(X) proper#(add(X1,X2)) -> proper#(X2) -> proper#(add(X1,X2)) -> add#(proper(X1),proper(X2)) proper#(add(X1,X2)) -> proper#(X2) -> proper#(add(X1,X2)) -> proper#(X1) proper#(add(X1,X2)) -> proper#(X2) -> proper#(add(X1,X2)) -> proper#(X2) proper#(add(X1,X2)) -> proper#(X2) -> proper#(from(X)) -> from#(proper(X)) proper#(add(X1,X2)) -> proper#(X2) -> proper#(from(X)) -> proper#(X) proper#(add(X1,X2)) -> proper#(X2) -> proper#(fst(X1,X2)) -> fst#(proper(X1),proper(X2)) proper#(add(X1,X2)) -> proper#(X2) -> proper#(fst(X1,X2)) -> proper#(X1) proper#(add(X1,X2)) -> proper#(X2) -> proper#(fst(X1,X2)) -> proper#(X2) proper#(add(X1,X2)) -> proper#(X2) -> proper#(cons(X1,X2)) -> cons#(proper(X1),proper(X2)) proper#(add(X1,X2)) -> proper#(X2) -> proper#(cons(X1,X2)) -> proper#(X1) proper#(add(X1,X2)) -> proper#(X2) -> proper#(cons(X1,X2)) -> proper#(X2) proper#(add(X1,X2)) -> proper#(X2) -> proper#(s(X)) -> s#(proper(X)) proper#(add(X1,X2)) -> proper#(X2) -> proper#(s(X)) -> proper#(X) proper#(add(X1,X2)) -> proper#(X1) -> proper#(len(X)) -> len#(proper(X)) proper#(add(X1,X2)) -> proper#(X1) -> proper#(len(X)) -> proper#(X) proper#(add(X1,X2)) -> proper#(X1) -> proper#(add(X1,X2)) -> add#(proper(X1),proper(X2)) proper#(add(X1,X2)) -> proper#(X1) -> proper#(add(X1,X2)) -> proper#(X1) proper#(add(X1,X2)) -> proper#(X1) -> proper#(add(X1,X2)) -> proper#(X2) proper#(add(X1,X2)) -> proper#(X1) -> proper#(from(X)) -> from#(proper(X)) proper#(add(X1,X2)) -> proper#(X1) -> proper#(from(X)) -> proper#(X) proper#(add(X1,X2)) -> proper#(X1) -> proper#(fst(X1,X2)) -> fst#(proper(X1),proper(X2)) proper#(add(X1,X2)) -> proper#(X1) -> proper#(fst(X1,X2)) -> proper#(X1) proper#(add(X1,X2)) -> proper#(X1) -> proper#(fst(X1,X2)) -> proper#(X2) proper#(add(X1,X2)) -> proper#(X1) -> proper#(cons(X1,X2)) -> cons#(proper(X1),proper(X2)) proper#(add(X1,X2)) -> proper#(X1) -> proper#(cons(X1,X2)) -> proper#(X1) proper#(add(X1,X2)) -> proper#(X1) -> proper#(cons(X1,X2)) -> proper#(X2) proper#(add(X1,X2)) -> proper#(X1) -> proper#(s(X)) -> s#(proper(X)) proper#(add(X1,X2)) -> proper#(X1) -> proper#(s(X)) -> proper#(X) proper#(add(X1,X2)) -> add#(proper(X1),proper(X2)) -> add#(ok(X1),ok(X2)) -> add#(X1,X2) proper#(add(X1,X2)) -> add#(proper(X1),proper(X2)) -> add#(X1,mark(X2)) -> add#(X1,X2) proper#(add(X1,X2)) -> add#(proper(X1),proper(X2)) -> add#(mark(X1),X2) -> add#(X1,X2) proper#(from(X)) -> proper#(X) -> proper#(len(X)) -> len#(proper(X)) proper#(from(X)) -> proper#(X) -> proper#(len(X)) -> proper#(X) proper#(from(X)) -> proper#(X) -> proper#(add(X1,X2)) -> add#(proper(X1),proper(X2)) proper#(from(X)) -> proper#(X) -> proper#(add(X1,X2)) -> proper#(X1) proper#(from(X)) -> proper#(X) -> proper#(add(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#(fst(X1,X2)) -> fst#(proper(X1),proper(X2)) proper#(from(X)) -> proper#(X) -> proper#(fst(X1,X2)) -> proper#(X1) proper#(from(X)) -> proper#(X) -> proper#(fst(X1,X2)) -> proper#(X2) 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)) -> 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#(len(X)) -> len#(proper(X)) proper#(cons(X1,X2)) -> proper#(X2) -> proper#(len(X)) -> proper#(X) proper#(cons(X1,X2)) -> proper#(X2) -> proper#(add(X1,X2)) -> add#(proper(X1),proper(X2)) proper#(cons(X1,X2)) -> proper#(X2) -> proper#(add(X1,X2)) -> proper#(X1) proper#(cons(X1,X2)) -> proper#(X2) -> proper#(add(X1,X2)) -> proper#(X2) 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#(fst(X1,X2)) -> fst#(proper(X1),proper(X2)) proper#(cons(X1,X2)) -> proper#(X2) -> proper#(fst(X1,X2)) -> proper#(X1) proper#(cons(X1,X2)) -> proper#(X2) -> proper#(fst(X1,X2)) -> proper#(X2) 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#(X1) -> proper#(len(X)) -> len#(proper(X)) proper#(cons(X1,X2)) -> proper#(X1) -> proper#(len(X)) -> proper#(X) proper#(cons(X1,X2)) -> proper#(X1) -> proper#(add(X1,X2)) -> add#(proper(X1),proper(X2)) proper#(cons(X1,X2)) -> proper#(X1) -> proper#(add(X1,X2)) -> proper#(X1) proper#(cons(X1,X2)) -> proper#(X1) -> proper#(add(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#(fst(X1,X2)) -> fst#(proper(X1),proper(X2)) proper#(cons(X1,X2)) -> proper#(X1) -> proper#(fst(X1,X2)) -> proper#(X1) proper#(cons(X1,X2)) -> proper#(X1) -> proper#(fst(X1,X2)) -> proper#(X2) 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)) -> 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#(len(X)) -> len#(proper(X)) proper#(s(X)) -> proper#(X) -> proper#(len(X)) -> proper#(X) proper#(s(X)) -> proper#(X) -> proper#(add(X1,X2)) -> add#(proper(X1),proper(X2)) proper#(s(X)) -> proper#(X) -> proper#(add(X1,X2)) -> proper#(X1) proper#(s(X)) -> proper#(X) -> proper#(add(X1,X2)) -> proper#(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#(fst(X1,X2)) -> fst#(proper(X1),proper(X2)) proper#(s(X)) -> proper#(X) -> proper#(fst(X1,X2)) -> proper#(X1) proper#(s(X)) -> proper#(X) -> proper#(fst(X1,X2)) -> proper#(X2) 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)) -> s#(proper(X)) -> s#(ok(X)) -> s#(X) proper#(fst(X1,X2)) -> proper#(X2) -> proper#(len(X)) -> len#(proper(X)) proper#(fst(X1,X2)) -> proper#(X2) -> proper#(len(X)) -> proper#(X) proper#(fst(X1,X2)) -> proper#(X2) -> proper#(add(X1,X2)) -> add#(proper(X1),proper(X2)) proper#(fst(X1,X2)) -> proper#(X2) -> proper#(add(X1,X2)) -> proper#(X1) proper#(fst(X1,X2)) -> proper#(X2) -> proper#(add(X1,X2)) -> proper#(X2) proper#(fst(X1,X2)) -> proper#(X2) -> proper#(from(X)) -> from#(proper(X)) proper#(fst(X1,X2)) -> proper#(X2) -> proper#(from(X)) -> proper#(X) proper#(fst(X1,X2)) -> proper#(X2) -> proper#(fst(X1,X2)) -> fst#(proper(X1),proper(X2)) proper#(fst(X1,X2)) -> proper#(X2) -> proper#(fst(X1,X2)) -> proper#(X1) proper#(fst(X1,X2)) -> proper#(X2) -> proper#(fst(X1,X2)) -> proper#(X2) proper#(fst(X1,X2)) -> proper#(X2) -> proper#(cons(X1,X2)) -> cons#(proper(X1),proper(X2)) proper#(fst(X1,X2)) -> proper#(X2) -> proper#(cons(X1,X2)) -> proper#(X1) proper#(fst(X1,X2)) -> proper#(X2) -> proper#(cons(X1,X2)) -> proper#(X2) proper#(fst(X1,X2)) -> proper#(X2) -> proper#(s(X)) -> s#(proper(X)) proper#(fst(X1,X2)) -> proper#(X2) -> proper#(s(X)) -> proper#(X) proper#(fst(X1,X2)) -> proper#(X1) -> proper#(len(X)) -> len#(proper(X)) proper#(fst(X1,X2)) -> proper#(X1) -> proper#(len(X)) -> proper#(X) proper#(fst(X1,X2)) -> proper#(X1) -> proper#(add(X1,X2)) -> add#(proper(X1),proper(X2)) proper#(fst(X1,X2)) -> proper#(X1) -> proper#(add(X1,X2)) -> proper#(X1) proper#(fst(X1,X2)) -> proper#(X1) -> proper#(add(X1,X2)) -> proper#(X2) proper#(fst(X1,X2)) -> proper#(X1) -> proper#(from(X)) -> from#(proper(X)) proper#(fst(X1,X2)) -> proper#(X1) -> proper#(from(X)) -> proper#(X) proper#(fst(X1,X2)) -> proper#(X1) -> proper#(fst(X1,X2)) -> fst#(proper(X1),proper(X2)) proper#(fst(X1,X2)) -> proper#(X1) -> proper#(fst(X1,X2)) -> proper#(X1) proper#(fst(X1,X2)) -> proper#(X1) -> proper#(fst(X1,X2)) -> proper#(X2) proper#(fst(X1,X2)) -> proper#(X1) -> proper#(cons(X1,X2)) -> cons#(proper(X1),proper(X2)) proper#(fst(X1,X2)) -> proper#(X1) -> proper#(cons(X1,X2)) -> proper#(X1) proper#(fst(X1,X2)) -> proper#(X1) -> proper#(cons(X1,X2)) -> proper#(X2) proper#(fst(X1,X2)) -> proper#(X1) -> proper#(s(X)) -> s#(proper(X)) proper#(fst(X1,X2)) -> proper#(X1) -> proper#(s(X)) -> proper#(X) proper#(fst(X1,X2)) -> fst#(proper(X1),proper(X2)) -> fst#(ok(X1),ok(X2)) -> fst#(X1,X2) proper#(fst(X1,X2)) -> fst#(proper(X1),proper(X2)) -> fst#(X1,mark(X2)) -> fst#(X1,X2) proper#(fst(X1,X2)) -> fst#(proper(X1),proper(X2)) -> fst#(mark(X1),X2) -> fst#(X1,X2) len#(ok(X)) -> len#(X) -> len#(ok(X)) -> len#(X) len#(ok(X)) -> len#(X) -> len#(mark(X)) -> len#(X) len#(mark(X)) -> len#(X) -> len#(ok(X)) -> len#(X) len#(mark(X)) -> len#(X) -> len#(mark(X)) -> len#(X) add#(ok(X1),ok(X2)) -> add#(X1,X2) -> add#(ok(X1),ok(X2)) -> add#(X1,X2) add#(ok(X1),ok(X2)) -> add#(X1,X2) -> add#(X1,mark(X2)) -> add#(X1,X2) add#(ok(X1),ok(X2)) -> add#(X1,X2) -> add#(mark(X1),X2) -> add#(X1,X2) add#(mark(X1),X2) -> add#(X1,X2) -> add#(ok(X1),ok(X2)) -> add#(X1,X2) add#(mark(X1),X2) -> add#(X1,X2) -> add#(X1,mark(X2)) -> add#(X1,X2) add#(mark(X1),X2) -> add#(X1,X2) -> add#(mark(X1),X2) -> add#(X1,X2) add#(X1,mark(X2)) -> add#(X1,X2) -> add#(ok(X1),ok(X2)) -> add#(X1,X2) add#(X1,mark(X2)) -> add#(X1,X2) -> add#(X1,mark(X2)) -> add#(X1,X2) add#(X1,mark(X2)) -> add#(X1,X2) -> add#(mark(X1),X2) -> add#(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) 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) fst#(ok(X1),ok(X2)) -> fst#(X1,X2) -> fst#(ok(X1),ok(X2)) -> fst#(X1,X2) fst#(ok(X1),ok(X2)) -> fst#(X1,X2) -> fst#(X1,mark(X2)) -> fst#(X1,X2) fst#(ok(X1),ok(X2)) -> fst#(X1,X2) -> fst#(mark(X1),X2) -> fst#(X1,X2) fst#(mark(X1),X2) -> fst#(X1,X2) -> fst#(ok(X1),ok(X2)) -> fst#(X1,X2) fst#(mark(X1),X2) -> fst#(X1,X2) -> fst#(X1,mark(X2)) -> fst#(X1,X2) fst#(mark(X1),X2) -> fst#(X1,X2) -> fst#(mark(X1),X2) -> fst#(X1,X2) fst#(X1,mark(X2)) -> fst#(X1,X2) -> fst#(ok(X1),ok(X2)) -> fst#(X1,X2) fst#(X1,mark(X2)) -> fst#(X1,X2) -> fst#(X1,mark(X2)) -> fst#(X1,X2) fst#(X1,mark(X2)) -> fst#(X1,X2) -> fst#(mark(X1),X2) -> fst#(X1,X2) active#(len(cons(X,Z))) -> len#(Z) -> len#(ok(X)) -> len#(X) active#(len(cons(X,Z))) -> len#(Z) -> len#(mark(X)) -> len#(X) active#(len(cons(X,Z))) -> s#(len(Z)) -> s#(ok(X)) -> s#(X) active#(len(X)) -> len#(active(X)) -> len#(ok(X)) -> len#(X) active#(len(X)) -> len#(active(X)) -> len#(mark(X)) -> len#(X) active#(len(X)) -> active#(X) -> active#(len(X)) -> len#(active(X)) active#(len(X)) -> active#(X) -> active#(len(X)) -> active#(X) active#(len(X)) -> active#(X) -> active#(add(X1,X2)) -> add#(X1,active(X2)) active#(len(X)) -> active#(X) -> active#(add(X1,X2)) -> active#(X2) active#(len(X)) -> active#(X) -> active#(add(X1,X2)) -> add#(active(X1),X2) active#(len(X)) -> active#(X) -> active#(add(X1,X2)) -> active#(X1) active#(len(X)) -> active#(X) -> active#(from(X)) -> from#(active(X)) active#(len(X)) -> active#(X) -> active#(from(X)) -> active#(X) active#(len(X)) -> active#(X) -> active#(fst(X1,X2)) -> fst#(X1,active(X2)) active#(len(X)) -> active#(X) -> active#(fst(X1,X2)) -> active#(X2) active#(len(X)) -> active#(X) -> active#(fst(X1,X2)) -> fst#(active(X1),X2) active#(len(X)) -> active#(X) -> active#(fst(X1,X2)) -> active#(X1) active#(len(X)) -> active#(X) -> active#(cons(X1,X2)) -> cons#(active(X1),X2) active#(len(X)) -> active#(X) -> active#(cons(X1,X2)) -> active#(X1) active#(len(X)) -> active#(X) -> active#(len(cons(X,Z))) -> s#(len(Z)) active#(len(X)) -> active#(X) -> active#(len(cons(X,Z))) -> len#(Z) active#(len(X)) -> active#(X) -> active#(add(s(X),Y)) -> s#(add(X,Y)) active#(len(X)) -> active#(X) -> active#(add(s(X),Y)) -> add#(X,Y) active#(len(X)) -> active#(X) -> active#(from(X)) -> cons#(X,from(s(X))) active#(len(X)) -> active#(X) -> active#(from(X)) -> from#(s(X)) active#(len(X)) -> active#(X) -> active#(from(X)) -> s#(X) active#(len(X)) -> active#(X) -> active#(fst(s(X),cons(Y,Z))) -> cons#(Y,fst(X,Z)) active#(len(X)) -> active#(X) -> active#(fst(s(X),cons(Y,Z))) -> fst#(X,Z) active#(add(s(X),Y)) -> add#(X,Y) -> add#(ok(X1),ok(X2)) -> add#(X1,X2) active#(add(s(X),Y)) -> add#(X,Y) -> add#(X1,mark(X2)) -> add#(X1,X2) active#(add(s(X),Y)) -> add#(X,Y) -> add#(mark(X1),X2) -> add#(X1,X2) active#(add(s(X),Y)) -> s#(add(X,Y)) -> s#(ok(X)) -> s#(X) active#(add(X1,X2)) -> add#(active(X1),X2) -> add#(ok(X1),ok(X2)) -> add#(X1,X2) active#(add(X1,X2)) -> add#(active(X1),X2) -> add#(X1,mark(X2)) -> add#(X1,X2) active#(add(X1,X2)) -> add#(active(X1),X2) -> add#(mark(X1),X2) -> add#(X1,X2) active#(add(X1,X2)) -> add#(X1,active(X2)) -> add#(ok(X1),ok(X2)) -> add#(X1,X2) active#(add(X1,X2)) -> add#(X1,active(X2)) -> add#(X1,mark(X2)) -> add#(X1,X2) active#(add(X1,X2)) -> add#(X1,active(X2)) -> add#(mark(X1),X2) -> add#(X1,X2) active#(add(X1,X2)) -> active#(X2) -> active#(len(X)) -> len#(active(X)) active#(add(X1,X2)) -> active#(X2) -> active#(len(X)) -> active#(X) active#(add(X1,X2)) -> active#(X2) -> active#(add(X1,X2)) -> add#(X1,active(X2)) active#(add(X1,X2)) -> active#(X2) -> active#(add(X1,X2)) -> active#(X2) active#(add(X1,X2)) -> active#(X2) -> active#(add(X1,X2)) -> add#(active(X1),X2) active#(add(X1,X2)) -> active#(X2) -> active#(add(X1,X2)) -> active#(X1) active#(add(X1,X2)) -> active#(X2) -> active#(from(X)) -> from#(active(X)) active#(add(X1,X2)) -> active#(X2) -> active#(from(X)) -> active#(X) active#(add(X1,X2)) -> active#(X2) -> active#(fst(X1,X2)) -> fst#(X1,active(X2)) active#(add(X1,X2)) -> active#(X2) -> active#(fst(X1,X2)) -> active#(X2) active#(add(X1,X2)) -> active#(X2) -> active#(fst(X1,X2)) -> fst#(active(X1),X2) active#(add(X1,X2)) -> active#(X2) -> active#(fst(X1,X2)) -> active#(X1) active#(add(X1,X2)) -> active#(X2) -> active#(cons(X1,X2)) -> cons#(active(X1),X2) active#(add(X1,X2)) -> active#(X2) -> active#(cons(X1,X2)) -> active#(X1) active#(add(X1,X2)) -> active#(X2) -> active#(len(cons(X,Z))) -> s#(len(Z)) active#(add(X1,X2)) -> active#(X2) -> active#(len(cons(X,Z))) -> len#(Z) active#(add(X1,X2)) -> active#(X2) -> active#(add(s(X),Y)) -> s#(add(X,Y)) active#(add(X1,X2)) -> active#(X2) -> active#(add(s(X),Y)) -> add#(X,Y) active#(add(X1,X2)) -> active#(X2) -> active#(from(X)) -> cons#(X,from(s(X))) active#(add(X1,X2)) -> active#(X2) -> active#(from(X)) -> from#(s(X)) active#(add(X1,X2)) -> active#(X2) -> active#(from(X)) -> s#(X) active#(add(X1,X2)) -> active#(X2) -> active#(fst(s(X),cons(Y,Z))) -> cons#(Y,fst(X,Z)) active#(add(X1,X2)) -> active#(X2) -> active#(fst(s(X),cons(Y,Z))) -> fst#(X,Z) active#(add(X1,X2)) -> active#(X1) -> active#(len(X)) -> len#(active(X)) active#(add(X1,X2)) -> active#(X1) -> active#(len(X)) -> active#(X) active#(add(X1,X2)) -> active#(X1) -> active#(add(X1,X2)) -> add#(X1,active(X2)) active#(add(X1,X2)) -> active#(X1) -> active#(add(X1,X2)) -> active#(X2) active#(add(X1,X2)) -> active#(X1) -> active#(add(X1,X2)) -> add#(active(X1),X2) active#(add(X1,X2)) -> active#(X1) -> active#(add(X1,X2)) -> active#(X1) active#(add(X1,X2)) -> active#(X1) -> active#(from(X)) -> from#(active(X)) active#(add(X1,X2)) -> active#(X1) -> active#(from(X)) -> active#(X) active#(add(X1,X2)) -> active#(X1) -> active#(fst(X1,X2)) -> fst#(X1,active(X2)) active#(add(X1,X2)) -> active#(X1) -> active#(fst(X1,X2)) -> active#(X2) active#(add(X1,X2)) -> active#(X1) -> active#(fst(X1,X2)) -> fst#(active(X1),X2) active#(add(X1,X2)) -> active#(X1) -> active#(fst(X1,X2)) -> active#(X1) active#(add(X1,X2)) -> active#(X1) -> active#(cons(X1,X2)) -> cons#(active(X1),X2) active#(add(X1,X2)) -> active#(X1) -> active#(cons(X1,X2)) -> active#(X1) active#(add(X1,X2)) -> active#(X1) -> active#(len(cons(X,Z))) -> s#(len(Z)) active#(add(X1,X2)) -> active#(X1) -> active#(len(cons(X,Z))) -> len#(Z) active#(add(X1,X2)) -> active#(X1) -> active#(add(s(X),Y)) -> s#(add(X,Y)) active#(add(X1,X2)) -> active#(X1) -> active#(add(s(X),Y)) -> add#(X,Y) active#(add(X1,X2)) -> active#(X1) -> active#(from(X)) -> cons#(X,from(s(X))) active#(add(X1,X2)) -> active#(X1) -> active#(from(X)) -> from#(s(X)) active#(add(X1,X2)) -> active#(X1) -> active#(from(X)) -> s#(X) active#(add(X1,X2)) -> active#(X1) -> active#(fst(s(X),cons(Y,Z))) -> cons#(Y,fst(X,Z)) active#(add(X1,X2)) -> active#(X1) -> active#(fst(s(X),cons(Y,Z))) -> fst#(X,Z) 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)) -> 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#(len(X)) -> len#(active(X)) active#(from(X)) -> active#(X) -> active#(len(X)) -> active#(X) active#(from(X)) -> active#(X) -> active#(add(X1,X2)) -> add#(X1,active(X2)) active#(from(X)) -> active#(X) -> active#(add(X1,X2)) -> active#(X2) active#(from(X)) -> active#(X) -> active#(add(X1,X2)) -> add#(active(X1),X2) active#(from(X)) -> active#(X) -> active#(add(X1,X2)) -> active#(X1) 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#(fst(X1,X2)) -> fst#(X1,active(X2)) active#(from(X)) -> active#(X) -> active#(fst(X1,X2)) -> active#(X2) active#(from(X)) -> active#(X) -> active#(fst(X1,X2)) -> fst#(active(X1),X2) active#(from(X)) -> active#(X) -> active#(fst(X1,X2)) -> active#(X1) 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#(len(cons(X,Z))) -> s#(len(Z)) active#(from(X)) -> active#(X) -> active#(len(cons(X,Z))) -> len#(Z) active#(from(X)) -> active#(X) -> active#(add(s(X),Y)) -> s#(add(X,Y)) active#(from(X)) -> active#(X) -> active#(add(s(X),Y)) -> add#(X,Y) 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#(fst(s(X),cons(Y,Z))) -> cons#(Y,fst(X,Z)) active#(from(X)) -> active#(X) -> active#(fst(s(X),cons(Y,Z))) -> fst#(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#(len(X)) -> len#(active(X)) active#(cons(X1,X2)) -> active#(X1) -> active#(len(X)) -> active#(X) active#(cons(X1,X2)) -> active#(X1) -> active#(add(X1,X2)) -> add#(X1,active(X2)) active#(cons(X1,X2)) -> active#(X1) -> active#(add(X1,X2)) -> active#(X2) active#(cons(X1,X2)) -> active#(X1) -> active#(add(X1,X2)) -> add#(active(X1),X2) active#(cons(X1,X2)) -> active#(X1) -> active#(add(X1,X2)) -> active#(X1) 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#(fst(X1,X2)) -> fst#(X1,active(X2)) active#(cons(X1,X2)) -> active#(X1) -> active#(fst(X1,X2)) -> active#(X2) active#(cons(X1,X2)) -> active#(X1) -> active#(fst(X1,X2)) -> fst#(active(X1),X2) active#(cons(X1,X2)) -> active#(X1) -> active#(fst(X1,X2)) -> active#(X1) 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#(len(cons(X,Z))) -> s#(len(Z)) active#(cons(X1,X2)) -> active#(X1) -> active#(len(cons(X,Z))) -> len#(Z) active#(cons(X1,X2)) -> active#(X1) -> active#(add(s(X),Y)) -> s#(add(X,Y)) active#(cons(X1,X2)) -> active#(X1) -> active#(add(s(X),Y)) -> add#(X,Y) 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#(fst(s(X),cons(Y,Z))) -> cons#(Y,fst(X,Z)) active#(cons(X1,X2)) -> active#(X1) -> active#(fst(s(X),cons(Y,Z))) -> fst#(X,Z) active#(fst(s(X),cons(Y,Z))) -> cons#(Y,fst(X,Z)) -> cons#(ok(X1),ok(X2)) -> cons#(X1,X2) active#(fst(s(X),cons(Y,Z))) -> cons#(Y,fst(X,Z)) -> cons#(mark(X1),X2) -> cons#(X1,X2) active#(fst(s(X),cons(Y,Z))) -> fst#(X,Z) -> fst#(ok(X1),ok(X2)) -> fst#(X1,X2) active#(fst(s(X),cons(Y,Z))) -> fst#(X,Z) -> fst#(X1,mark(X2)) -> fst#(X1,X2) active#(fst(s(X),cons(Y,Z))) -> fst#(X,Z) -> fst#(mark(X1),X2) -> fst#(X1,X2) active#(fst(X1,X2)) -> fst#(active(X1),X2) -> fst#(ok(X1),ok(X2)) -> fst#(X1,X2) active#(fst(X1,X2)) -> fst#(active(X1),X2) -> fst#(X1,mark(X2)) -> fst#(X1,X2) active#(fst(X1,X2)) -> fst#(active(X1),X2) -> fst#(mark(X1),X2) -> fst#(X1,X2) active#(fst(X1,X2)) -> fst#(X1,active(X2)) -> fst#(ok(X1),ok(X2)) -> fst#(X1,X2) active#(fst(X1,X2)) -> fst#(X1,active(X2)) -> fst#(X1,mark(X2)) -> fst#(X1,X2) active#(fst(X1,X2)) -> fst#(X1,active(X2)) -> fst#(mark(X1),X2) -> fst#(X1,X2) active#(fst(X1,X2)) -> active#(X2) -> active#(len(X)) -> len#(active(X)) active#(fst(X1,X2)) -> active#(X2) -> active#(len(X)) -> active#(X) active#(fst(X1,X2)) -> active#(X2) -> active#(add(X1,X2)) -> add#(X1,active(X2)) active#(fst(X1,X2)) -> active#(X2) -> active#(add(X1,X2)) -> active#(X2) active#(fst(X1,X2)) -> active#(X2) -> active#(add(X1,X2)) -> add#(active(X1),X2) active#(fst(X1,X2)) -> active#(X2) -> active#(add(X1,X2)) -> active#(X1) active#(fst(X1,X2)) -> active#(X2) -> active#(from(X)) -> from#(active(X)) active#(fst(X1,X2)) -> active#(X2) -> active#(from(X)) -> active#(X) active#(fst(X1,X2)) -> active#(X2) -> active#(fst(X1,X2)) -> fst#(X1,active(X2)) active#(fst(X1,X2)) -> active#(X2) -> active#(fst(X1,X2)) -> active#(X2) active#(fst(X1,X2)) -> active#(X2) -> active#(fst(X1,X2)) -> fst#(active(X1),X2) active#(fst(X1,X2)) -> active#(X2) -> active#(fst(X1,X2)) -> active#(X1) active#(fst(X1,X2)) -> active#(X2) -> active#(cons(X1,X2)) -> cons#(active(X1),X2) active#(fst(X1,X2)) -> active#(X2) -> active#(cons(X1,X2)) -> active#(X1) active#(fst(X1,X2)) -> active#(X2) -> active#(len(cons(X,Z))) -> s#(len(Z)) active#(fst(X1,X2)) -> active#(X2) -> active#(len(cons(X,Z))) -> len#(Z) active#(fst(X1,X2)) -> active#(X2) -> active#(add(s(X),Y)) -> s#(add(X,Y)) active#(fst(X1,X2)) -> active#(X2) -> active#(add(s(X),Y)) -> add#(X,Y) active#(fst(X1,X2)) -> active#(X2) -> active#(from(X)) -> cons#(X,from(s(X))) active#(fst(X1,X2)) -> active#(X2) -> active#(from(X)) -> from#(s(X)) active#(fst(X1,X2)) -> active#(X2) -> active#(from(X)) -> s#(X) active#(fst(X1,X2)) -> active#(X2) -> active#(fst(s(X),cons(Y,Z))) -> cons#(Y,fst(X,Z)) active#(fst(X1,X2)) -> active#(X2) -> active#(fst(s(X),cons(Y,Z))) -> fst#(X,Z) active#(fst(X1,X2)) -> active#(X1) -> active#(len(X)) -> len#(active(X)) active#(fst(X1,X2)) -> active#(X1) -> active#(len(X)) -> active#(X) active#(fst(X1,X2)) -> active#(X1) -> active#(add(X1,X2)) -> add#(X1,active(X2)) active#(fst(X1,X2)) -> active#(X1) -> active#(add(X1,X2)) -> active#(X2) active#(fst(X1,X2)) -> active#(X1) -> active#(add(X1,X2)) -> add#(active(X1),X2) active#(fst(X1,X2)) -> active#(X1) -> active#(add(X1,X2)) -> active#(X1) active#(fst(X1,X2)) -> active#(X1) -> active#(from(X)) -> from#(active(X)) active#(fst(X1,X2)) -> active#(X1) -> active#(from(X)) -> active#(X) active#(fst(X1,X2)) -> active#(X1) -> active#(fst(X1,X2)) -> fst#(X1,active(X2)) active#(fst(X1,X2)) -> active#(X1) -> active#(fst(X1,X2)) -> active#(X2) active#(fst(X1,X2)) -> active#(X1) -> active#(fst(X1,X2)) -> fst#(active(X1),X2) active#(fst(X1,X2)) -> active#(X1) -> active#(fst(X1,X2)) -> active#(X1) active#(fst(X1,X2)) -> active#(X1) -> active#(cons(X1,X2)) -> cons#(active(X1),X2) active#(fst(X1,X2)) -> active#(X1) -> active#(cons(X1,X2)) -> active#(X1) active#(fst(X1,X2)) -> active#(X1) -> active#(len(cons(X,Z))) -> s#(len(Z)) active#(fst(X1,X2)) -> active#(X1) -> active#(len(cons(X,Z))) -> len#(Z) active#(fst(X1,X2)) -> active#(X1) -> active#(add(s(X),Y)) -> s#(add(X,Y)) active#(fst(X1,X2)) -> active#(X1) -> active#(add(s(X),Y)) -> add#(X,Y) active#(fst(X1,X2)) -> active#(X1) -> active#(from(X)) -> cons#(X,from(s(X))) active#(fst(X1,X2)) -> active#(X1) -> active#(from(X)) -> from#(s(X)) active#(fst(X1,X2)) -> active#(X1) -> active#(from(X)) -> s#(X) active#(fst(X1,X2)) -> active#(X1) -> active#(fst(s(X),cons(Y,Z))) -> cons#(Y,fst(X,Z)) active#(fst(X1,X2)) -> active#(X1) -> active#(fst(s(X),cons(Y,Z))) -> fst#(X,Z) SCC Processor: #sccs: 9 #rules: 31 #arcs: 421/3025 DPs: top#(ok(X)) -> top#(active(X)) top#(mark(X)) -> top#(proper(X)) TRS: active(fst(0(),Z)) -> mark(nil()) active(fst(s(X),cons(Y,Z))) -> mark(cons(Y,fst(X,Z))) active(from(X)) -> mark(cons(X,from(s(X)))) active(add(0(),X)) -> mark(X) active(add(s(X),Y)) -> mark(s(add(X,Y))) active(len(nil())) -> mark(0()) active(len(cons(X,Z))) -> mark(s(len(Z))) active(cons(X1,X2)) -> cons(active(X1),X2) active(fst(X1,X2)) -> fst(active(X1),X2) active(fst(X1,X2)) -> fst(X1,active(X2)) active(from(X)) -> from(active(X)) active(add(X1,X2)) -> add(active(X1),X2) active(add(X1,X2)) -> add(X1,active(X2)) active(len(X)) -> len(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) fst(mark(X1),X2) -> mark(fst(X1,X2)) fst(X1,mark(X2)) -> mark(fst(X1,X2)) from(mark(X)) -> mark(from(X)) add(mark(X1),X2) -> mark(add(X1,X2)) add(X1,mark(X2)) -> mark(add(X1,X2)) len(mark(X)) -> mark(len(X)) proper(0()) -> ok(0()) proper(s(X)) -> s(proper(X)) proper(nil()) -> ok(nil()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(fst(X1,X2)) -> fst(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(add(X1,X2)) -> add(proper(X1),proper(X2)) proper(len(X)) -> len(proper(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) fst(ok(X1),ok(X2)) -> ok(fst(X1,X2)) from(ok(X)) -> ok(from(X)) add(ok(X1),ok(X2)) -> ok(add(X1,X2)) len(ok(X)) -> ok(len(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) KBO Processor: argument filtering: pi(0) = [] pi(fst) = [0,1] pi(active) = 0 pi(nil) = [] pi(mark) = [0] pi(s) = [] pi(cons) = 0 pi(from) = [0] pi(add) = [0,1] pi(len) = [0] pi(proper) = 0 pi(ok) = 0 pi(top) = 0 pi(top#) = 0 weight function: w0 = 1 w(top#) = w(top) = w(len) = w(from) = w(s) = w(mark) = w(nil) = w( fst) = w(0) = 1 w(ok) = w(proper) = w(add) = w(cons) = w(active) = 0 precedence: len ~ add ~ from ~ 0 > fst > top# ~ top ~ ok ~ proper ~ cons ~ s ~ mark ~ nil ~ active problem: DPs: top#(ok(X)) -> top#(active(X)) TRS: active(fst(0(),Z)) -> mark(nil()) active(fst(s(X),cons(Y,Z))) -> mark(cons(Y,fst(X,Z))) active(from(X)) -> mark(cons(X,from(s(X)))) active(add(0(),X)) -> mark(X) active(add(s(X),Y)) -> mark(s(add(X,Y))) active(len(nil())) -> mark(0()) active(len(cons(X,Z))) -> mark(s(len(Z))) active(cons(X1,X2)) -> cons(active(X1),X2) active(fst(X1,X2)) -> fst(active(X1),X2) active(fst(X1,X2)) -> fst(X1,active(X2)) active(from(X)) -> from(active(X)) active(add(X1,X2)) -> add(active(X1),X2) active(add(X1,X2)) -> add(X1,active(X2)) active(len(X)) -> len(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) fst(mark(X1),X2) -> mark(fst(X1,X2)) fst(X1,mark(X2)) -> mark(fst(X1,X2)) from(mark(X)) -> mark(from(X)) add(mark(X1),X2) -> mark(add(X1,X2)) add(X1,mark(X2)) -> mark(add(X1,X2)) len(mark(X)) -> mark(len(X)) proper(0()) -> ok(0()) proper(s(X)) -> s(proper(X)) proper(nil()) -> ok(nil()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(fst(X1,X2)) -> fst(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(add(X1,X2)) -> add(proper(X1),proper(X2)) proper(len(X)) -> len(proper(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) fst(ok(X1),ok(X2)) -> ok(fst(X1,X2)) from(ok(X)) -> ok(from(X)) add(ok(X1),ok(X2)) -> ok(add(X1,X2)) len(ok(X)) -> ok(len(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) KBO Processor: argument filtering: pi(0) = [] pi(fst) = 1 pi(active) = [0] pi(nil) = [] pi(mark) = 0 pi(s) = 0 pi(cons) = 1 pi(from) = 0 pi(add) = 1 pi(len) = [0] pi(proper) = [0] pi(ok) = [0] pi(top) = [] pi(top#) = 0 weight function: w0 = 1 w(top#) = w(top) = w(ok) = w(proper) = w(len) = w(cons) = w(nil) = w( 0) = 1 w(add) = w(from) = w(s) = w(mark) = w(active) = w(fst) = 0 precedence: top ~ proper ~ active ~ 0 > len > top# ~ ok ~ add ~ from ~ cons ~ s ~ mark ~ nil ~ fst problem: DPs: TRS: active(fst(0(),Z)) -> mark(nil()) active(fst(s(X),cons(Y,Z))) -> mark(cons(Y,fst(X,Z))) active(from(X)) -> mark(cons(X,from(s(X)))) active(add(0(),X)) -> mark(X) active(add(s(X),Y)) -> mark(s(add(X,Y))) active(len(nil())) -> mark(0()) active(len(cons(X,Z))) -> mark(s(len(Z))) active(cons(X1,X2)) -> cons(active(X1),X2) active(fst(X1,X2)) -> fst(active(X1),X2) active(fst(X1,X2)) -> fst(X1,active(X2)) active(from(X)) -> from(active(X)) active(add(X1,X2)) -> add(active(X1),X2) active(add(X1,X2)) -> add(X1,active(X2)) active(len(X)) -> len(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) fst(mark(X1),X2) -> mark(fst(X1,X2)) fst(X1,mark(X2)) -> mark(fst(X1,X2)) from(mark(X)) -> mark(from(X)) add(mark(X1),X2) -> mark(add(X1,X2)) add(X1,mark(X2)) -> mark(add(X1,X2)) len(mark(X)) -> mark(len(X)) proper(0()) -> ok(0()) proper(s(X)) -> s(proper(X)) proper(nil()) -> ok(nil()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(fst(X1,X2)) -> fst(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(add(X1,X2)) -> add(proper(X1),proper(X2)) proper(len(X)) -> len(proper(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) fst(ok(X1),ok(X2)) -> ok(fst(X1,X2)) from(ok(X)) -> ok(from(X)) add(ok(X1),ok(X2)) -> ok(add(X1,X2)) len(ok(X)) -> ok(len(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Qed DPs: active#(cons(X1,X2)) -> active#(X1) active#(fst(X1,X2)) -> active#(X1) active#(fst(X1,X2)) -> active#(X2) active#(from(X)) -> active#(X) active#(add(X1,X2)) -> active#(X1) active#(add(X1,X2)) -> active#(X2) active#(len(X)) -> active#(X) TRS: active(fst(0(),Z)) -> mark(nil()) active(fst(s(X),cons(Y,Z))) -> mark(cons(Y,fst(X,Z))) active(from(X)) -> mark(cons(X,from(s(X)))) active(add(0(),X)) -> mark(X) active(add(s(X),Y)) -> mark(s(add(X,Y))) active(len(nil())) -> mark(0()) active(len(cons(X,Z))) -> mark(s(len(Z))) active(cons(X1,X2)) -> cons(active(X1),X2) active(fst(X1,X2)) -> fst(active(X1),X2) active(fst(X1,X2)) -> fst(X1,active(X2)) active(from(X)) -> from(active(X)) active(add(X1,X2)) -> add(active(X1),X2) active(add(X1,X2)) -> add(X1,active(X2)) active(len(X)) -> len(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) fst(mark(X1),X2) -> mark(fst(X1,X2)) fst(X1,mark(X2)) -> mark(fst(X1,X2)) from(mark(X)) -> mark(from(X)) add(mark(X1),X2) -> mark(add(X1,X2)) add(X1,mark(X2)) -> mark(add(X1,X2)) len(mark(X)) -> mark(len(X)) proper(0()) -> ok(0()) proper(s(X)) -> s(proper(X)) proper(nil()) -> ok(nil()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(fst(X1,X2)) -> fst(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(add(X1,X2)) -> add(proper(X1),proper(X2)) proper(len(X)) -> len(proper(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) fst(ok(X1),ok(X2)) -> ok(fst(X1,X2)) from(ok(X)) -> ok(from(X)) add(ok(X1),ok(X2)) -> ok(add(X1,X2)) len(ok(X)) -> ok(len(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Subterm Criterion Processor: simple projection: pi(active#) = 0 problem: DPs: TRS: active(fst(0(),Z)) -> mark(nil()) active(fst(s(X),cons(Y,Z))) -> mark(cons(Y,fst(X,Z))) active(from(X)) -> mark(cons(X,from(s(X)))) active(add(0(),X)) -> mark(X) active(add(s(X),Y)) -> mark(s(add(X,Y))) active(len(nil())) -> mark(0()) active(len(cons(X,Z))) -> mark(s(len(Z))) active(cons(X1,X2)) -> cons(active(X1),X2) active(fst(X1,X2)) -> fst(active(X1),X2) active(fst(X1,X2)) -> fst(X1,active(X2)) active(from(X)) -> from(active(X)) active(add(X1,X2)) -> add(active(X1),X2) active(add(X1,X2)) -> add(X1,active(X2)) active(len(X)) -> len(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) fst(mark(X1),X2) -> mark(fst(X1,X2)) fst(X1,mark(X2)) -> mark(fst(X1,X2)) from(mark(X)) -> mark(from(X)) add(mark(X1),X2) -> mark(add(X1,X2)) add(X1,mark(X2)) -> mark(add(X1,X2)) len(mark(X)) -> mark(len(X)) proper(0()) -> ok(0()) proper(s(X)) -> s(proper(X)) proper(nil()) -> ok(nil()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(fst(X1,X2)) -> fst(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(add(X1,X2)) -> add(proper(X1),proper(X2)) proper(len(X)) -> len(proper(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) fst(ok(X1),ok(X2)) -> ok(fst(X1,X2)) from(ok(X)) -> ok(from(X)) add(ok(X1),ok(X2)) -> ok(add(X1,X2)) len(ok(X)) -> ok(len(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Qed DPs: proper#(s(X)) -> proper#(X) proper#(cons(X1,X2)) -> proper#(X2) proper#(cons(X1,X2)) -> proper#(X1) proper#(fst(X1,X2)) -> proper#(X2) proper#(fst(X1,X2)) -> proper#(X1) proper#(from(X)) -> proper#(X) proper#(add(X1,X2)) -> proper#(X2) proper#(add(X1,X2)) -> proper#(X1) proper#(len(X)) -> proper#(X) TRS: active(fst(0(),Z)) -> mark(nil()) active(fst(s(X),cons(Y,Z))) -> mark(cons(Y,fst(X,Z))) active(from(X)) -> mark(cons(X,from(s(X)))) active(add(0(),X)) -> mark(X) active(add(s(X),Y)) -> mark(s(add(X,Y))) active(len(nil())) -> mark(0()) active(len(cons(X,Z))) -> mark(s(len(Z))) active(cons(X1,X2)) -> cons(active(X1),X2) active(fst(X1,X2)) -> fst(active(X1),X2) active(fst(X1,X2)) -> fst(X1,active(X2)) active(from(X)) -> from(active(X)) active(add(X1,X2)) -> add(active(X1),X2) active(add(X1,X2)) -> add(X1,active(X2)) active(len(X)) -> len(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) fst(mark(X1),X2) -> mark(fst(X1,X2)) fst(X1,mark(X2)) -> mark(fst(X1,X2)) from(mark(X)) -> mark(from(X)) add(mark(X1),X2) -> mark(add(X1,X2)) add(X1,mark(X2)) -> mark(add(X1,X2)) len(mark(X)) -> mark(len(X)) proper(0()) -> ok(0()) proper(s(X)) -> s(proper(X)) proper(nil()) -> ok(nil()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(fst(X1,X2)) -> fst(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(add(X1,X2)) -> add(proper(X1),proper(X2)) proper(len(X)) -> len(proper(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) fst(ok(X1),ok(X2)) -> ok(fst(X1,X2)) from(ok(X)) -> ok(from(X)) add(ok(X1),ok(X2)) -> ok(add(X1,X2)) len(ok(X)) -> ok(len(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Subterm Criterion Processor: simple projection: pi(proper#) = 0 problem: DPs: TRS: active(fst(0(),Z)) -> mark(nil()) active(fst(s(X),cons(Y,Z))) -> mark(cons(Y,fst(X,Z))) active(from(X)) -> mark(cons(X,from(s(X)))) active(add(0(),X)) -> mark(X) active(add(s(X),Y)) -> mark(s(add(X,Y))) active(len(nil())) -> mark(0()) active(len(cons(X,Z))) -> mark(s(len(Z))) active(cons(X1,X2)) -> cons(active(X1),X2) active(fst(X1,X2)) -> fst(active(X1),X2) active(fst(X1,X2)) -> fst(X1,active(X2)) active(from(X)) -> from(active(X)) active(add(X1,X2)) -> add(active(X1),X2) active(add(X1,X2)) -> add(X1,active(X2)) active(len(X)) -> len(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) fst(mark(X1),X2) -> mark(fst(X1,X2)) fst(X1,mark(X2)) -> mark(fst(X1,X2)) from(mark(X)) -> mark(from(X)) add(mark(X1),X2) -> mark(add(X1,X2)) add(X1,mark(X2)) -> mark(add(X1,X2)) len(mark(X)) -> mark(len(X)) proper(0()) -> ok(0()) proper(s(X)) -> s(proper(X)) proper(nil()) -> ok(nil()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(fst(X1,X2)) -> fst(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(add(X1,X2)) -> add(proper(X1),proper(X2)) proper(len(X)) -> len(proper(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) fst(ok(X1),ok(X2)) -> ok(fst(X1,X2)) from(ok(X)) -> ok(from(X)) add(ok(X1),ok(X2)) -> ok(add(X1,X2)) len(ok(X)) -> ok(len(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Qed DPs: len#(mark(X)) -> len#(X) len#(ok(X)) -> len#(X) TRS: active(fst(0(),Z)) -> mark(nil()) active(fst(s(X),cons(Y,Z))) -> mark(cons(Y,fst(X,Z))) active(from(X)) -> mark(cons(X,from(s(X)))) active(add(0(),X)) -> mark(X) active(add(s(X),Y)) -> mark(s(add(X,Y))) active(len(nil())) -> mark(0()) active(len(cons(X,Z))) -> mark(s(len(Z))) active(cons(X1,X2)) -> cons(active(X1),X2) active(fst(X1,X2)) -> fst(active(X1),X2) active(fst(X1,X2)) -> fst(X1,active(X2)) active(from(X)) -> from(active(X)) active(add(X1,X2)) -> add(active(X1),X2) active(add(X1,X2)) -> add(X1,active(X2)) active(len(X)) -> len(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) fst(mark(X1),X2) -> mark(fst(X1,X2)) fst(X1,mark(X2)) -> mark(fst(X1,X2)) from(mark(X)) -> mark(from(X)) add(mark(X1),X2) -> mark(add(X1,X2)) add(X1,mark(X2)) -> mark(add(X1,X2)) len(mark(X)) -> mark(len(X)) proper(0()) -> ok(0()) proper(s(X)) -> s(proper(X)) proper(nil()) -> ok(nil()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(fst(X1,X2)) -> fst(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(add(X1,X2)) -> add(proper(X1),proper(X2)) proper(len(X)) -> len(proper(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) fst(ok(X1),ok(X2)) -> ok(fst(X1,X2)) from(ok(X)) -> ok(from(X)) add(ok(X1),ok(X2)) -> ok(add(X1,X2)) len(ok(X)) -> ok(len(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Subterm Criterion Processor: simple projection: pi(len#) = 0 problem: DPs: TRS: active(fst(0(),Z)) -> mark(nil()) active(fst(s(X),cons(Y,Z))) -> mark(cons(Y,fst(X,Z))) active(from(X)) -> mark(cons(X,from(s(X)))) active(add(0(),X)) -> mark(X) active(add(s(X),Y)) -> mark(s(add(X,Y))) active(len(nil())) -> mark(0()) active(len(cons(X,Z))) -> mark(s(len(Z))) active(cons(X1,X2)) -> cons(active(X1),X2) active(fst(X1,X2)) -> fst(active(X1),X2) active(fst(X1,X2)) -> fst(X1,active(X2)) active(from(X)) -> from(active(X)) active(add(X1,X2)) -> add(active(X1),X2) active(add(X1,X2)) -> add(X1,active(X2)) active(len(X)) -> len(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) fst(mark(X1),X2) -> mark(fst(X1,X2)) fst(X1,mark(X2)) -> mark(fst(X1,X2)) from(mark(X)) -> mark(from(X)) add(mark(X1),X2) -> mark(add(X1,X2)) add(X1,mark(X2)) -> mark(add(X1,X2)) len(mark(X)) -> mark(len(X)) proper(0()) -> ok(0()) proper(s(X)) -> s(proper(X)) proper(nil()) -> ok(nil()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(fst(X1,X2)) -> fst(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(add(X1,X2)) -> add(proper(X1),proper(X2)) proper(len(X)) -> len(proper(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) fst(ok(X1),ok(X2)) -> ok(fst(X1,X2)) from(ok(X)) -> ok(from(X)) add(ok(X1),ok(X2)) -> ok(add(X1,X2)) len(ok(X)) -> ok(len(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Qed DPs: add#(mark(X1),X2) -> add#(X1,X2) add#(X1,mark(X2)) -> add#(X1,X2) add#(ok(X1),ok(X2)) -> add#(X1,X2) TRS: active(fst(0(),Z)) -> mark(nil()) active(fst(s(X),cons(Y,Z))) -> mark(cons(Y,fst(X,Z))) active(from(X)) -> mark(cons(X,from(s(X)))) active(add(0(),X)) -> mark(X) active(add(s(X),Y)) -> mark(s(add(X,Y))) active(len(nil())) -> mark(0()) active(len(cons(X,Z))) -> mark(s(len(Z))) active(cons(X1,X2)) -> cons(active(X1),X2) active(fst(X1,X2)) -> fst(active(X1),X2) active(fst(X1,X2)) -> fst(X1,active(X2)) active(from(X)) -> from(active(X)) active(add(X1,X2)) -> add(active(X1),X2) active(add(X1,X2)) -> add(X1,active(X2)) active(len(X)) -> len(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) fst(mark(X1),X2) -> mark(fst(X1,X2)) fst(X1,mark(X2)) -> mark(fst(X1,X2)) from(mark(X)) -> mark(from(X)) add(mark(X1),X2) -> mark(add(X1,X2)) add(X1,mark(X2)) -> mark(add(X1,X2)) len(mark(X)) -> mark(len(X)) proper(0()) -> ok(0()) proper(s(X)) -> s(proper(X)) proper(nil()) -> ok(nil()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(fst(X1,X2)) -> fst(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(add(X1,X2)) -> add(proper(X1),proper(X2)) proper(len(X)) -> len(proper(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) fst(ok(X1),ok(X2)) -> ok(fst(X1,X2)) from(ok(X)) -> ok(from(X)) add(ok(X1),ok(X2)) -> ok(add(X1,X2)) len(ok(X)) -> ok(len(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Subterm Criterion Processor: simple projection: pi(add#) = 1 problem: DPs: add#(mark(X1),X2) -> add#(X1,X2) TRS: active(fst(0(),Z)) -> mark(nil()) active(fst(s(X),cons(Y,Z))) -> mark(cons(Y,fst(X,Z))) active(from(X)) -> mark(cons(X,from(s(X)))) active(add(0(),X)) -> mark(X) active(add(s(X),Y)) -> mark(s(add(X,Y))) active(len(nil())) -> mark(0()) active(len(cons(X,Z))) -> mark(s(len(Z))) active(cons(X1,X2)) -> cons(active(X1),X2) active(fst(X1,X2)) -> fst(active(X1),X2) active(fst(X1,X2)) -> fst(X1,active(X2)) active(from(X)) -> from(active(X)) active(add(X1,X2)) -> add(active(X1),X2) active(add(X1,X2)) -> add(X1,active(X2)) active(len(X)) -> len(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) fst(mark(X1),X2) -> mark(fst(X1,X2)) fst(X1,mark(X2)) -> mark(fst(X1,X2)) from(mark(X)) -> mark(from(X)) add(mark(X1),X2) -> mark(add(X1,X2)) add(X1,mark(X2)) -> mark(add(X1,X2)) len(mark(X)) -> mark(len(X)) proper(0()) -> ok(0()) proper(s(X)) -> s(proper(X)) proper(nil()) -> ok(nil()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(fst(X1,X2)) -> fst(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(add(X1,X2)) -> add(proper(X1),proper(X2)) proper(len(X)) -> len(proper(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) fst(ok(X1),ok(X2)) -> ok(fst(X1,X2)) from(ok(X)) -> ok(from(X)) add(ok(X1),ok(X2)) -> ok(add(X1,X2)) len(ok(X)) -> ok(len(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Subterm Criterion Processor: simple projection: pi(add#) = 0 problem: DPs: TRS: active(fst(0(),Z)) -> mark(nil()) active(fst(s(X),cons(Y,Z))) -> mark(cons(Y,fst(X,Z))) active(from(X)) -> mark(cons(X,from(s(X)))) active(add(0(),X)) -> mark(X) active(add(s(X),Y)) -> mark(s(add(X,Y))) active(len(nil())) -> mark(0()) active(len(cons(X,Z))) -> mark(s(len(Z))) active(cons(X1,X2)) -> cons(active(X1),X2) active(fst(X1,X2)) -> fst(active(X1),X2) active(fst(X1,X2)) -> fst(X1,active(X2)) active(from(X)) -> from(active(X)) active(add(X1,X2)) -> add(active(X1),X2) active(add(X1,X2)) -> add(X1,active(X2)) active(len(X)) -> len(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) fst(mark(X1),X2) -> mark(fst(X1,X2)) fst(X1,mark(X2)) -> mark(fst(X1,X2)) from(mark(X)) -> mark(from(X)) add(mark(X1),X2) -> mark(add(X1,X2)) add(X1,mark(X2)) -> mark(add(X1,X2)) len(mark(X)) -> mark(len(X)) proper(0()) -> ok(0()) proper(s(X)) -> s(proper(X)) proper(nil()) -> ok(nil()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(fst(X1,X2)) -> fst(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(add(X1,X2)) -> add(proper(X1),proper(X2)) proper(len(X)) -> len(proper(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) fst(ok(X1),ok(X2)) -> ok(fst(X1,X2)) from(ok(X)) -> ok(from(X)) add(ok(X1),ok(X2)) -> ok(add(X1,X2)) len(ok(X)) -> ok(len(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(fst(0(),Z)) -> mark(nil()) active(fst(s(X),cons(Y,Z))) -> mark(cons(Y,fst(X,Z))) active(from(X)) -> mark(cons(X,from(s(X)))) active(add(0(),X)) -> mark(X) active(add(s(X),Y)) -> mark(s(add(X,Y))) active(len(nil())) -> mark(0()) active(len(cons(X,Z))) -> mark(s(len(Z))) active(cons(X1,X2)) -> cons(active(X1),X2) active(fst(X1,X2)) -> fst(active(X1),X2) active(fst(X1,X2)) -> fst(X1,active(X2)) active(from(X)) -> from(active(X)) active(add(X1,X2)) -> add(active(X1),X2) active(add(X1,X2)) -> add(X1,active(X2)) active(len(X)) -> len(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) fst(mark(X1),X2) -> mark(fst(X1,X2)) fst(X1,mark(X2)) -> mark(fst(X1,X2)) from(mark(X)) -> mark(from(X)) add(mark(X1),X2) -> mark(add(X1,X2)) add(X1,mark(X2)) -> mark(add(X1,X2)) len(mark(X)) -> mark(len(X)) proper(0()) -> ok(0()) proper(s(X)) -> s(proper(X)) proper(nil()) -> ok(nil()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(fst(X1,X2)) -> fst(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(add(X1,X2)) -> add(proper(X1),proper(X2)) proper(len(X)) -> len(proper(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) fst(ok(X1),ok(X2)) -> ok(fst(X1,X2)) from(ok(X)) -> ok(from(X)) add(ok(X1),ok(X2)) -> ok(add(X1,X2)) len(ok(X)) -> ok(len(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Subterm Criterion Processor: simple projection: pi(from#) = 0 problem: DPs: TRS: active(fst(0(),Z)) -> mark(nil()) active(fst(s(X),cons(Y,Z))) -> mark(cons(Y,fst(X,Z))) active(from(X)) -> mark(cons(X,from(s(X)))) active(add(0(),X)) -> mark(X) active(add(s(X),Y)) -> mark(s(add(X,Y))) active(len(nil())) -> mark(0()) active(len(cons(X,Z))) -> mark(s(len(Z))) active(cons(X1,X2)) -> cons(active(X1),X2) active(fst(X1,X2)) -> fst(active(X1),X2) active(fst(X1,X2)) -> fst(X1,active(X2)) active(from(X)) -> from(active(X)) active(add(X1,X2)) -> add(active(X1),X2) active(add(X1,X2)) -> add(X1,active(X2)) active(len(X)) -> len(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) fst(mark(X1),X2) -> mark(fst(X1,X2)) fst(X1,mark(X2)) -> mark(fst(X1,X2)) from(mark(X)) -> mark(from(X)) add(mark(X1),X2) -> mark(add(X1,X2)) add(X1,mark(X2)) -> mark(add(X1,X2)) len(mark(X)) -> mark(len(X)) proper(0()) -> ok(0()) proper(s(X)) -> s(proper(X)) proper(nil()) -> ok(nil()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(fst(X1,X2)) -> fst(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(add(X1,X2)) -> add(proper(X1),proper(X2)) proper(len(X)) -> len(proper(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) fst(ok(X1),ok(X2)) -> ok(fst(X1,X2)) from(ok(X)) -> ok(from(X)) add(ok(X1),ok(X2)) -> ok(add(X1,X2)) len(ok(X)) -> ok(len(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Qed DPs: fst#(mark(X1),X2) -> fst#(X1,X2) fst#(X1,mark(X2)) -> fst#(X1,X2) fst#(ok(X1),ok(X2)) -> fst#(X1,X2) TRS: active(fst(0(),Z)) -> mark(nil()) active(fst(s(X),cons(Y,Z))) -> mark(cons(Y,fst(X,Z))) active(from(X)) -> mark(cons(X,from(s(X)))) active(add(0(),X)) -> mark(X) active(add(s(X),Y)) -> mark(s(add(X,Y))) active(len(nil())) -> mark(0()) active(len(cons(X,Z))) -> mark(s(len(Z))) active(cons(X1,X2)) -> cons(active(X1),X2) active(fst(X1,X2)) -> fst(active(X1),X2) active(fst(X1,X2)) -> fst(X1,active(X2)) active(from(X)) -> from(active(X)) active(add(X1,X2)) -> add(active(X1),X2) active(add(X1,X2)) -> add(X1,active(X2)) active(len(X)) -> len(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) fst(mark(X1),X2) -> mark(fst(X1,X2)) fst(X1,mark(X2)) -> mark(fst(X1,X2)) from(mark(X)) -> mark(from(X)) add(mark(X1),X2) -> mark(add(X1,X2)) add(X1,mark(X2)) -> mark(add(X1,X2)) len(mark(X)) -> mark(len(X)) proper(0()) -> ok(0()) proper(s(X)) -> s(proper(X)) proper(nil()) -> ok(nil()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(fst(X1,X2)) -> fst(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(add(X1,X2)) -> add(proper(X1),proper(X2)) proper(len(X)) -> len(proper(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) fst(ok(X1),ok(X2)) -> ok(fst(X1,X2)) from(ok(X)) -> ok(from(X)) add(ok(X1),ok(X2)) -> ok(add(X1,X2)) len(ok(X)) -> ok(len(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Subterm Criterion Processor: simple projection: pi(fst#) = 1 problem: DPs: fst#(mark(X1),X2) -> fst#(X1,X2) TRS: active(fst(0(),Z)) -> mark(nil()) active(fst(s(X),cons(Y,Z))) -> mark(cons(Y,fst(X,Z))) active(from(X)) -> mark(cons(X,from(s(X)))) active(add(0(),X)) -> mark(X) active(add(s(X),Y)) -> mark(s(add(X,Y))) active(len(nil())) -> mark(0()) active(len(cons(X,Z))) -> mark(s(len(Z))) active(cons(X1,X2)) -> cons(active(X1),X2) active(fst(X1,X2)) -> fst(active(X1),X2) active(fst(X1,X2)) -> fst(X1,active(X2)) active(from(X)) -> from(active(X)) active(add(X1,X2)) -> add(active(X1),X2) active(add(X1,X2)) -> add(X1,active(X2)) active(len(X)) -> len(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) fst(mark(X1),X2) -> mark(fst(X1,X2)) fst(X1,mark(X2)) -> mark(fst(X1,X2)) from(mark(X)) -> mark(from(X)) add(mark(X1),X2) -> mark(add(X1,X2)) add(X1,mark(X2)) -> mark(add(X1,X2)) len(mark(X)) -> mark(len(X)) proper(0()) -> ok(0()) proper(s(X)) -> s(proper(X)) proper(nil()) -> ok(nil()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(fst(X1,X2)) -> fst(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(add(X1,X2)) -> add(proper(X1),proper(X2)) proper(len(X)) -> len(proper(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) fst(ok(X1),ok(X2)) -> ok(fst(X1,X2)) from(ok(X)) -> ok(from(X)) add(ok(X1),ok(X2)) -> ok(add(X1,X2)) len(ok(X)) -> ok(len(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Subterm Criterion Processor: simple projection: pi(fst#) = 0 problem: DPs: TRS: active(fst(0(),Z)) -> mark(nil()) active(fst(s(X),cons(Y,Z))) -> mark(cons(Y,fst(X,Z))) active(from(X)) -> mark(cons(X,from(s(X)))) active(add(0(),X)) -> mark(X) active(add(s(X),Y)) -> mark(s(add(X,Y))) active(len(nil())) -> mark(0()) active(len(cons(X,Z))) -> mark(s(len(Z))) active(cons(X1,X2)) -> cons(active(X1),X2) active(fst(X1,X2)) -> fst(active(X1),X2) active(fst(X1,X2)) -> fst(X1,active(X2)) active(from(X)) -> from(active(X)) active(add(X1,X2)) -> add(active(X1),X2) active(add(X1,X2)) -> add(X1,active(X2)) active(len(X)) -> len(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) fst(mark(X1),X2) -> mark(fst(X1,X2)) fst(X1,mark(X2)) -> mark(fst(X1,X2)) from(mark(X)) -> mark(from(X)) add(mark(X1),X2) -> mark(add(X1,X2)) add(X1,mark(X2)) -> mark(add(X1,X2)) len(mark(X)) -> mark(len(X)) proper(0()) -> ok(0()) proper(s(X)) -> s(proper(X)) proper(nil()) -> ok(nil()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(fst(X1,X2)) -> fst(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(add(X1,X2)) -> add(proper(X1),proper(X2)) proper(len(X)) -> len(proper(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) fst(ok(X1),ok(X2)) -> ok(fst(X1,X2)) from(ok(X)) -> ok(from(X)) add(ok(X1),ok(X2)) -> ok(add(X1,X2)) len(ok(X)) -> ok(len(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(fst(0(),Z)) -> mark(nil()) active(fst(s(X),cons(Y,Z))) -> mark(cons(Y,fst(X,Z))) active(from(X)) -> mark(cons(X,from(s(X)))) active(add(0(),X)) -> mark(X) active(add(s(X),Y)) -> mark(s(add(X,Y))) active(len(nil())) -> mark(0()) active(len(cons(X,Z))) -> mark(s(len(Z))) active(cons(X1,X2)) -> cons(active(X1),X2) active(fst(X1,X2)) -> fst(active(X1),X2) active(fst(X1,X2)) -> fst(X1,active(X2)) active(from(X)) -> from(active(X)) active(add(X1,X2)) -> add(active(X1),X2) active(add(X1,X2)) -> add(X1,active(X2)) active(len(X)) -> len(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) fst(mark(X1),X2) -> mark(fst(X1,X2)) fst(X1,mark(X2)) -> mark(fst(X1,X2)) from(mark(X)) -> mark(from(X)) add(mark(X1),X2) -> mark(add(X1,X2)) add(X1,mark(X2)) -> mark(add(X1,X2)) len(mark(X)) -> mark(len(X)) proper(0()) -> ok(0()) proper(s(X)) -> s(proper(X)) proper(nil()) -> ok(nil()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(fst(X1,X2)) -> fst(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(add(X1,X2)) -> add(proper(X1),proper(X2)) proper(len(X)) -> len(proper(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) fst(ok(X1),ok(X2)) -> ok(fst(X1,X2)) from(ok(X)) -> ok(from(X)) add(ok(X1),ok(X2)) -> ok(add(X1,X2)) len(ok(X)) -> ok(len(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Subterm Criterion Processor: simple projection: pi(cons#) = 1 problem: DPs: cons#(mark(X1),X2) -> cons#(X1,X2) TRS: active(fst(0(),Z)) -> mark(nil()) active(fst(s(X),cons(Y,Z))) -> mark(cons(Y,fst(X,Z))) active(from(X)) -> mark(cons(X,from(s(X)))) active(add(0(),X)) -> mark(X) active(add(s(X),Y)) -> mark(s(add(X,Y))) active(len(nil())) -> mark(0()) active(len(cons(X,Z))) -> mark(s(len(Z))) active(cons(X1,X2)) -> cons(active(X1),X2) active(fst(X1,X2)) -> fst(active(X1),X2) active(fst(X1,X2)) -> fst(X1,active(X2)) active(from(X)) -> from(active(X)) active(add(X1,X2)) -> add(active(X1),X2) active(add(X1,X2)) -> add(X1,active(X2)) active(len(X)) -> len(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) fst(mark(X1),X2) -> mark(fst(X1,X2)) fst(X1,mark(X2)) -> mark(fst(X1,X2)) from(mark(X)) -> mark(from(X)) add(mark(X1),X2) -> mark(add(X1,X2)) add(X1,mark(X2)) -> mark(add(X1,X2)) len(mark(X)) -> mark(len(X)) proper(0()) -> ok(0()) proper(s(X)) -> s(proper(X)) proper(nil()) -> ok(nil()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(fst(X1,X2)) -> fst(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(add(X1,X2)) -> add(proper(X1),proper(X2)) proper(len(X)) -> len(proper(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) fst(ok(X1),ok(X2)) -> ok(fst(X1,X2)) from(ok(X)) -> ok(from(X)) add(ok(X1),ok(X2)) -> ok(add(X1,X2)) len(ok(X)) -> ok(len(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Subterm Criterion Processor: simple projection: pi(cons#) = 0 problem: DPs: TRS: active(fst(0(),Z)) -> mark(nil()) active(fst(s(X),cons(Y,Z))) -> mark(cons(Y,fst(X,Z))) active(from(X)) -> mark(cons(X,from(s(X)))) active(add(0(),X)) -> mark(X) active(add(s(X),Y)) -> mark(s(add(X,Y))) active(len(nil())) -> mark(0()) active(len(cons(X,Z))) -> mark(s(len(Z))) active(cons(X1,X2)) -> cons(active(X1),X2) active(fst(X1,X2)) -> fst(active(X1),X2) active(fst(X1,X2)) -> fst(X1,active(X2)) active(from(X)) -> from(active(X)) active(add(X1,X2)) -> add(active(X1),X2) active(add(X1,X2)) -> add(X1,active(X2)) active(len(X)) -> len(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) fst(mark(X1),X2) -> mark(fst(X1,X2)) fst(X1,mark(X2)) -> mark(fst(X1,X2)) from(mark(X)) -> mark(from(X)) add(mark(X1),X2) -> mark(add(X1,X2)) add(X1,mark(X2)) -> mark(add(X1,X2)) len(mark(X)) -> mark(len(X)) proper(0()) -> ok(0()) proper(s(X)) -> s(proper(X)) proper(nil()) -> ok(nil()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(fst(X1,X2)) -> fst(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(add(X1,X2)) -> add(proper(X1),proper(X2)) proper(len(X)) -> len(proper(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) fst(ok(X1),ok(X2)) -> ok(fst(X1,X2)) from(ok(X)) -> ok(from(X)) add(ok(X1),ok(X2)) -> ok(add(X1,X2)) len(ok(X)) -> ok(len(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Qed DPs: s#(ok(X)) -> s#(X) TRS: active(fst(0(),Z)) -> mark(nil()) active(fst(s(X),cons(Y,Z))) -> mark(cons(Y,fst(X,Z))) active(from(X)) -> mark(cons(X,from(s(X)))) active(add(0(),X)) -> mark(X) active(add(s(X),Y)) -> mark(s(add(X,Y))) active(len(nil())) -> mark(0()) active(len(cons(X,Z))) -> mark(s(len(Z))) active(cons(X1,X2)) -> cons(active(X1),X2) active(fst(X1,X2)) -> fst(active(X1),X2) active(fst(X1,X2)) -> fst(X1,active(X2)) active(from(X)) -> from(active(X)) active(add(X1,X2)) -> add(active(X1),X2) active(add(X1,X2)) -> add(X1,active(X2)) active(len(X)) -> len(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) fst(mark(X1),X2) -> mark(fst(X1,X2)) fst(X1,mark(X2)) -> mark(fst(X1,X2)) from(mark(X)) -> mark(from(X)) add(mark(X1),X2) -> mark(add(X1,X2)) add(X1,mark(X2)) -> mark(add(X1,X2)) len(mark(X)) -> mark(len(X)) proper(0()) -> ok(0()) proper(s(X)) -> s(proper(X)) proper(nil()) -> ok(nil()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(fst(X1,X2)) -> fst(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(add(X1,X2)) -> add(proper(X1),proper(X2)) proper(len(X)) -> len(proper(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) fst(ok(X1),ok(X2)) -> ok(fst(X1,X2)) from(ok(X)) -> ok(from(X)) add(ok(X1),ok(X2)) -> ok(add(X1,X2)) len(ok(X)) -> ok(len(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Subterm Criterion Processor: simple projection: pi(s#) = 0 problem: DPs: TRS: active(fst(0(),Z)) -> mark(nil()) active(fst(s(X),cons(Y,Z))) -> mark(cons(Y,fst(X,Z))) active(from(X)) -> mark(cons(X,from(s(X)))) active(add(0(),X)) -> mark(X) active(add(s(X),Y)) -> mark(s(add(X,Y))) active(len(nil())) -> mark(0()) active(len(cons(X,Z))) -> mark(s(len(Z))) active(cons(X1,X2)) -> cons(active(X1),X2) active(fst(X1,X2)) -> fst(active(X1),X2) active(fst(X1,X2)) -> fst(X1,active(X2)) active(from(X)) -> from(active(X)) active(add(X1,X2)) -> add(active(X1),X2) active(add(X1,X2)) -> add(X1,active(X2)) active(len(X)) -> len(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) fst(mark(X1),X2) -> mark(fst(X1,X2)) fst(X1,mark(X2)) -> mark(fst(X1,X2)) from(mark(X)) -> mark(from(X)) add(mark(X1),X2) -> mark(add(X1,X2)) add(X1,mark(X2)) -> mark(add(X1,X2)) len(mark(X)) -> mark(len(X)) proper(0()) -> ok(0()) proper(s(X)) -> s(proper(X)) proper(nil()) -> ok(nil()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(fst(X1,X2)) -> fst(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(add(X1,X2)) -> add(proper(X1),proper(X2)) proper(len(X)) -> len(proper(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) fst(ok(X1),ok(X2)) -> ok(fst(X1,X2)) from(ok(X)) -> ok(from(X)) add(ok(X1),ok(X2)) -> ok(add(X1,X2)) len(ok(X)) -> ok(len(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Qed