YES Problem: rev(a()) -> a() rev(b()) -> b() rev(++(x,y)) -> ++(rev(y),rev(x)) rev(++(x,x)) -> rev(x) Proof: DP Processor: DPs: rev#(++(x,y)) -> rev#(x) rev#(++(x,y)) -> rev#(y) rev#(++(x,x)) -> rev#(x) TRS: rev(a()) -> a() rev(b()) -> b() rev(++(x,y)) -> ++(rev(y),rev(x)) rev(++(x,x)) -> rev(x) Usable Rule Processor: DPs: rev#(++(x,y)) -> rev#(x) rev#(++(x,y)) -> rev#(y) rev#(++(x,x)) -> rev#(x) TRS: Restore Modifier: DPs: rev#(++(x,y)) -> rev#(x) rev#(++(x,y)) -> rev#(y) rev#(++(x,x)) -> rev#(x) TRS: rev(a()) -> a() rev(b()) -> b() rev(++(x,y)) -> ++(rev(y),rev(x)) rev(++(x,x)) -> rev(x) SCC Processor: #sccs: 1 #rules: 3 #arcs: 9/9 DPs: rev#(++(x,y)) -> rev#(x) rev#(++(x,y)) -> rev#(y) rev#(++(x,x)) -> rev#(x) TRS: rev(a()) -> a() rev(b()) -> b() rev(++(x,y)) -> ++(rev(y),rev(x)) rev(++(x,x)) -> rev(x) Matrix Interpretation Processor: dimension: 1 interpretation: [rev#](x0) = x0 + 1, [++](x0, x1) = x0 + x1 + 1, [b] = 0, [rev](x0) = x0, [a] = 0 orientation: rev#(++(x,y)) = x + y + 2 >= x + 1 = rev#(x) rev#(++(x,y)) = x + y + 2 >= y + 1 = rev#(y) rev#(++(x,x)) = 2x + 2 >= x + 1 = rev#(x) rev(a()) = 0 >= 0 = a() rev(b()) = 0 >= 0 = b() rev(++(x,y)) = x + y + 1 >= x + y + 1 = ++(rev(y),rev(x)) rev(++(x,x)) = 2x + 1 >= x = rev(x) problem: DPs: TRS: rev(a()) -> a() rev(b()) -> b() rev(++(x,y)) -> ++(rev(y),rev(x)) rev(++(x,x)) -> rev(x) Qed