YES Problem: rev(nil()) -> nil() rev(cons(x,l)) -> cons(rev1(x,l),rev2(x,l)) rev1(0(),nil()) -> 0() rev1(s(x),nil()) -> s(x) rev1(x,cons(y,l)) -> rev1(y,l) rev2(x,nil()) -> nil() rev2(x,cons(y,l)) -> rev(cons(x,rev2(y,l))) Proof: DP Processor: DPs: rev#(cons(x,l)) -> rev2#(x,l) rev#(cons(x,l)) -> rev1#(x,l) rev1#(x,cons(y,l)) -> rev1#(y,l) rev2#(x,cons(y,l)) -> rev2#(y,l) rev2#(x,cons(y,l)) -> rev#(cons(x,rev2(y,l))) TRS: rev(nil()) -> nil() rev(cons(x,l)) -> cons(rev1(x,l),rev2(x,l)) rev1(0(),nil()) -> 0() rev1(s(x),nil()) -> s(x) rev1(x,cons(y,l)) -> rev1(y,l) rev2(x,nil()) -> nil() rev2(x,cons(y,l)) -> rev(cons(x,rev2(y,l))) TDG Processor: DPs: rev#(cons(x,l)) -> rev2#(x,l) rev#(cons(x,l)) -> rev1#(x,l) rev1#(x,cons(y,l)) -> rev1#(y,l) rev2#(x,cons(y,l)) -> rev2#(y,l) rev2#(x,cons(y,l)) -> rev#(cons(x,rev2(y,l))) TRS: rev(nil()) -> nil() rev(cons(x,l)) -> cons(rev1(x,l),rev2(x,l)) rev1(0(),nil()) -> 0() rev1(s(x),nil()) -> s(x) rev1(x,cons(y,l)) -> rev1(y,l) rev2(x,nil()) -> nil() rev2(x,cons(y,l)) -> rev(cons(x,rev2(y,l))) graph: rev1#(x,cons(y,l)) -> rev1#(y,l) -> rev1#(x,cons(y,l)) -> rev1#(y,l) rev2#(x,cons(y,l)) -> rev2#(y,l) -> rev2#(x,cons(y,l)) -> rev#(cons(x,rev2(y,l))) rev2#(x,cons(y,l)) -> rev2#(y,l) -> rev2#(x,cons(y,l)) -> rev2#(y,l) rev2#(x,cons(y,l)) -> rev#(cons(x,rev2(y,l))) -> rev#(cons(x,l)) -> rev1#(x,l) rev2#(x,cons(y,l)) -> rev#(cons(x,rev2(y,l))) -> rev#(cons(x,l)) -> rev2#(x,l) rev#(cons(x,l)) -> rev1#(x,l) -> rev1#(x,cons(y,l)) -> rev1#(y,l) rev#(cons(x,l)) -> rev2#(x,l) -> rev2#(x,cons(y,l)) -> rev#(cons(x,rev2(y,l))) rev#(cons(x,l)) -> rev2#(x,l) -> rev2#(x,cons(y,l)) -> rev2#(y,l) SCC Processor: #sccs: 2 #rules: 4 #arcs: 8/25 DPs: rev2#(x,cons(y,l)) -> rev2#(y,l) rev2#(x,cons(y,l)) -> rev#(cons(x,rev2(y,l))) rev#(cons(x,l)) -> rev2#(x,l) TRS: rev(nil()) -> nil() rev(cons(x,l)) -> cons(rev1(x,l),rev2(x,l)) rev1(0(),nil()) -> 0() rev1(s(x),nil()) -> s(x) rev1(x,cons(y,l)) -> rev1(y,l) rev2(x,nil()) -> nil() rev2(x,cons(y,l)) -> rev(cons(x,rev2(y,l))) Matrix Interpretation Processor: dim=1 interpretation: [rev2#](x0, x1) = 4x1 + 7, [rev#](x0) = 4x0 + 6, [s](x0) = 0, [0] = 0, [rev2](x0, x1) = x1, [rev1](x0, x1) = 7x1 + 3, [cons](x0, x1) = 4x1 + 2, [rev](x0) = x0, [nil] = 2 orientation: rev2#(x,cons(y,l)) = 16l + 15 >= 4l + 7 = rev2#(y,l) rev2#(x,cons(y,l)) = 16l + 15 >= 16l + 14 = rev#(cons(x,rev2(y,l))) rev#(cons(x,l)) = 16l + 14 >= 4l + 7 = rev2#(x,l) rev(nil()) = 2 >= 2 = nil() rev(cons(x,l)) = 4l + 2 >= 4l + 2 = cons(rev1(x,l),rev2(x,l)) rev1(0(),nil()) = 17 >= 0 = 0() rev1(s(x),nil()) = 17 >= 0 = s(x) rev1(x,cons(y,l)) = 28l + 17 >= 7l + 3 = rev1(y,l) rev2(x,nil()) = 2 >= 2 = nil() rev2(x,cons(y,l)) = 4l + 2 >= 4l + 2 = rev(cons(x,rev2(y,l))) problem: DPs: TRS: rev(nil()) -> nil() rev(cons(x,l)) -> cons(rev1(x,l),rev2(x,l)) rev1(0(),nil()) -> 0() rev1(s(x),nil()) -> s(x) rev1(x,cons(y,l)) -> rev1(y,l) rev2(x,nil()) -> nil() rev2(x,cons(y,l)) -> rev(cons(x,rev2(y,l))) Qed DPs: rev1#(x,cons(y,l)) -> rev1#(y,l) TRS: rev(nil()) -> nil() rev(cons(x,l)) -> cons(rev1(x,l),rev2(x,l)) rev1(0(),nil()) -> 0() rev1(s(x),nil()) -> s(x) rev1(x,cons(y,l)) -> rev1(y,l) rev2(x,nil()) -> nil() rev2(x,cons(y,l)) -> rev(cons(x,rev2(y,l))) KBO Processor: argument filtering: pi(nil) = [] pi(rev) = 0 pi(cons) = [1] pi(rev1) = [] pi(rev2) = 1 pi(0) = [] pi(s) = [] pi(rev1#) = 1 weight function: w0 = 1 w(rev1#) = w(s) = w(0) = w(rev2) = w(rev1) = w(cons) = w(rev) = w(nil) = 1 precedence: rev1# ~ rev2 ~ rev1 ~ cons ~ rev ~ nil > s ~ 0 problem: DPs: TRS: rev(nil()) -> nil() rev(cons(x,l)) -> cons(rev1(x,l),rev2(x,l)) rev1(0(),nil()) -> 0() rev1(s(x),nil()) -> s(x) rev1(x,cons(y,l)) -> rev1(y,l) rev2(x,nil()) -> nil() rev2(x,cons(y,l)) -> rev(cons(x,rev2(y,l))) Qed