YES We show the termination of the TRS R: rev(nil()) -> nil() rev(rev(x)) -> x rev(++(x,y)) -> ++(rev(y),rev(x)) ++(nil(),y) -> y ++(x,nil()) -> x ++(.(x,y),z) -> .(x,++(y,z)) ++(x,++(y,z)) -> ++(++(x,y),z) make(x) -> .(x,nil()) -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: rev#(++(x,y)) -> ++#(rev(y),rev(x)) p2: rev#(++(x,y)) -> rev#(y) p3: rev#(++(x,y)) -> rev#(x) p4: ++#(.(x,y),z) -> ++#(y,z) p5: ++#(x,++(y,z)) -> ++#(++(x,y),z) p6: ++#(x,++(y,z)) -> ++#(x,y) and R consists of: r1: rev(nil()) -> nil() r2: rev(rev(x)) -> x r3: rev(++(x,y)) -> ++(rev(y),rev(x)) r4: ++(nil(),y) -> y r5: ++(x,nil()) -> x r6: ++(.(x,y),z) -> .(x,++(y,z)) r7: ++(x,++(y,z)) -> ++(++(x,y),z) r8: make(x) -> .(x,nil()) The estimated dependency graph contains the following SCCs: {p2, p3} {p4, p5, p6} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: rev#(++(x,y)) -> rev#(x) p2: rev#(++(x,y)) -> rev#(y) and R consists of: r1: rev(nil()) -> nil() r2: rev(rev(x)) -> x r3: rev(++(x,y)) -> ++(rev(y),rev(x)) r4: ++(nil(),y) -> y r5: ++(x,nil()) -> x r6: ++(.(x,y),z) -> .(x,++(y,z)) r7: ++(x,++(y,z)) -> ++(++(x,y),z) r8: make(x) -> .(x,nil()) The set of usable rules consists of (no rules) Take the reduction pair: weighted path order base order: max/plus interpretations on natural numbers: rev#_A(x1) = x1 + 3 ++_A(x1,x2) = max{x1, x2 + 1} precedence: rev# = ++ partial status: pi(rev#) = [] pi(++) = [2] The next rules are strictly ordered: p2 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: rev#(++(x,y)) -> rev#(x) and R consists of: r1: rev(nil()) -> nil() r2: rev(rev(x)) -> x r3: rev(++(x,y)) -> ++(rev(y),rev(x)) r4: ++(nil(),y) -> y r5: ++(x,nil()) -> x r6: ++(.(x,y),z) -> .(x,++(y,z)) r7: ++(x,++(y,z)) -> ++(++(x,y),z) r8: make(x) -> .(x,nil()) The estimated dependency graph contains the following SCCs: {p1} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: rev#(++(x,y)) -> rev#(x) and R consists of: r1: rev(nil()) -> nil() r2: rev(rev(x)) -> x r3: rev(++(x,y)) -> ++(rev(y),rev(x)) r4: ++(nil(),y) -> y r5: ++(x,nil()) -> x r6: ++(.(x,y),z) -> .(x,++(y,z)) r7: ++(x,++(y,z)) -> ++(++(x,y),z) r8: make(x) -> .(x,nil()) The set of usable rules consists of (no rules) Take the reduction pair: weighted path order base order: max/plus interpretations on natural numbers: rev#_A(x1) = x1 + 2 ++_A(x1,x2) = max{x1 + 1, x2 + 1} precedence: rev# = ++ partial status: pi(rev#) = [] pi(++) = [2] The next rules are strictly ordered: p1 We remove them from the problem. Then no dependency pair remains. -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: ++#(.(x,y),z) -> ++#(y,z) p2: ++#(x,++(y,z)) -> ++#(x,y) p3: ++#(x,++(y,z)) -> ++#(++(x,y),z) and R consists of: r1: rev(nil()) -> nil() r2: rev(rev(x)) -> x r3: rev(++(x,y)) -> ++(rev(y),rev(x)) r4: ++(nil(),y) -> y r5: ++(x,nil()) -> x r6: ++(.(x,y),z) -> .(x,++(y,z)) r7: ++(x,++(y,z)) -> ++(++(x,y),z) r8: make(x) -> .(x,nil()) The set of usable rules consists of r4, r5, r6, r7 Take the reduction pair: weighted path order base order: max/plus interpretations on natural numbers: ++#_A(x1,x2) = x2 + 2 ._A(x1,x2) = max{x1 + 3, x2} ++_A(x1,x2) = max{x1, x2 + 3} nil_A = 0 precedence: ++ > ++# > . = nil partial status: pi(++#) = [2] pi(.) = [1] pi(++) = [] pi(nil) = [] The next rules are strictly ordered: p3 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: ++#(.(x,y),z) -> ++#(y,z) p2: ++#(x,++(y,z)) -> ++#(x,y) and R consists of: r1: rev(nil()) -> nil() r2: rev(rev(x)) -> x r3: rev(++(x,y)) -> ++(rev(y),rev(x)) r4: ++(nil(),y) -> y r5: ++(x,nil()) -> x r6: ++(.(x,y),z) -> .(x,++(y,z)) r7: ++(x,++(y,z)) -> ++(++(x,y),z) r8: make(x) -> .(x,nil()) The estimated dependency graph contains the following SCCs: {p1, p2} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: ++#(.(x,y),z) -> ++#(y,z) p2: ++#(x,++(y,z)) -> ++#(x,y) and R consists of: r1: rev(nil()) -> nil() r2: rev(rev(x)) -> x r3: rev(++(x,y)) -> ++(rev(y),rev(x)) r4: ++(nil(),y) -> y r5: ++(x,nil()) -> x r6: ++(.(x,y),z) -> .(x,++(y,z)) r7: ++(x,++(y,z)) -> ++(++(x,y),z) r8: make(x) -> .(x,nil()) The set of usable rules consists of (no rules) Take the reduction pair: weighted path order base order: max/plus interpretations on natural numbers: ++#_A(x1,x2) = max{0, x1 - 2} ._A(x1,x2) = max{x1 + 3, x2 + 1} ++_A(x1,x2) = x1 + 1 precedence: ++# = . = ++ partial status: pi(++#) = [] pi(.) = [2] pi(++) = [1] The next rules are strictly ordered: p1 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: ++#(x,++(y,z)) -> ++#(x,y) and R consists of: r1: rev(nil()) -> nil() r2: rev(rev(x)) -> x r3: rev(++(x,y)) -> ++(rev(y),rev(x)) r4: ++(nil(),y) -> y r5: ++(x,nil()) -> x r6: ++(.(x,y),z) -> .(x,++(y,z)) r7: ++(x,++(y,z)) -> ++(++(x,y),z) r8: make(x) -> .(x,nil()) The estimated dependency graph contains the following SCCs: {p1} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: ++#(x,++(y,z)) -> ++#(x,y) and R consists of: r1: rev(nil()) -> nil() r2: rev(rev(x)) -> x r3: rev(++(x,y)) -> ++(rev(y),rev(x)) r4: ++(nil(),y) -> y r5: ++(x,nil()) -> x r6: ++(.(x,y),z) -> .(x,++(y,z)) r7: ++(x,++(y,z)) -> ++(++(x,y),z) r8: make(x) -> .(x,nil()) The set of usable rules consists of (no rules) Take the reduction pair: weighted path order base order: max/plus interpretations on natural numbers: ++#_A(x1,x2) = max{x1 + 1, x2 + 1} ++_A(x1,x2) = max{x1, x2} precedence: ++# = ++ partial status: pi(++#) = [2] pi(++) = [1, 2] The next rules are strictly ordered: p1 We remove them from the problem. Then no dependency pair remains.