YES We show the termination of the TRS R: top(free(x)) -> top(check(new(x))) new(free(x)) -> free(new(x)) old(free(x)) -> free(old(x)) new(serve()) -> free(serve()) old(serve()) -> free(serve()) check(free(x)) -> free(check(x)) check(new(x)) -> new(check(x)) check(old(x)) -> old(check(x)) check(old(x)) -> old(x) -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: top#(free(x)) -> top#(check(new(x))) p2: top#(free(x)) -> check#(new(x)) p3: top#(free(x)) -> new#(x) p4: new#(free(x)) -> new#(x) p5: old#(free(x)) -> old#(x) p6: check#(free(x)) -> check#(x) p7: check#(new(x)) -> new#(check(x)) p8: check#(new(x)) -> check#(x) p9: check#(old(x)) -> old#(check(x)) p10: check#(old(x)) -> check#(x) and R consists of: r1: top(free(x)) -> top(check(new(x))) r2: new(free(x)) -> free(new(x)) r3: old(free(x)) -> free(old(x)) r4: new(serve()) -> free(serve()) r5: old(serve()) -> free(serve()) r6: check(free(x)) -> free(check(x)) r7: check(new(x)) -> new(check(x)) r8: check(old(x)) -> old(check(x)) r9: check(old(x)) -> old(x) The estimated dependency graph contains the following SCCs: {p1} {p6, p8, p10} {p4} {p5} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: top#(free(x)) -> top#(check(new(x))) and R consists of: r1: top(free(x)) -> top(check(new(x))) r2: new(free(x)) -> free(new(x)) r3: old(free(x)) -> free(old(x)) r4: new(serve()) -> free(serve()) r5: old(serve()) -> free(serve()) r6: check(free(x)) -> free(check(x)) r7: check(new(x)) -> new(check(x)) r8: check(old(x)) -> old(check(x)) r9: check(old(x)) -> old(x) The set of usable rules consists of r2, r3, r4, r5, r6, r7, r8, r9 Take the reduction pair: lexicographic combination of reduction pairs: 1. weighted path order base order: matrix interpretations: carrier: N^2 order: standard order interpretations: top#_A(x1) = ((1,1),(0,0)) x1 + (1,1) free_A(x1) = x1 + (1,0) check_A(x1) = ((1,1),(0,0)) x1 new_A(x1) = x1 + (1,0) old_A(x1) = ((1,1),(0,0)) x1 + (2,0) serve_A() = (1,0) precedence: top# = free = check = new = old = serve partial status: pi(top#) = [] pi(free) = [] pi(check) = [] pi(new) = [] pi(old) = [] pi(serve) = [] 2. weighted path order base order: matrix interpretations: carrier: N^2 order: standard order interpretations: top#_A(x1) = ((1,1),(0,0)) x1 free_A(x1) = x1 + (4,0) check_A(x1) = ((1,0),(0,0)) x1 + (2,0) new_A(x1) = ((1,1),(0,1)) x1 + (1,0) old_A(x1) = ((1,0),(0,0)) x1 + (1,0) serve_A() = (1,4) precedence: check > old = serve > top# = free = new partial status: pi(top#) = [] pi(free) = [] pi(check) = [] pi(new) = [1] pi(old) = [] pi(serve) = [] 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: check#(free(x)) -> check#(x) p2: check#(old(x)) -> check#(x) p3: check#(new(x)) -> check#(x) and R consists of: r1: top(free(x)) -> top(check(new(x))) r2: new(free(x)) -> free(new(x)) r3: old(free(x)) -> free(old(x)) r4: new(serve()) -> free(serve()) r5: old(serve()) -> free(serve()) r6: check(free(x)) -> free(check(x)) r7: check(new(x)) -> new(check(x)) r8: check(old(x)) -> old(check(x)) r9: check(old(x)) -> old(x) The set of usable rules consists of (no rules) Take the reduction pair: lexicographic combination of reduction pairs: 1. weighted path order base order: matrix interpretations: carrier: N^2 order: lexicographic order interpretations: check#_A(x1) = ((1,0),(1,1)) x1 + (1,2) free_A(x1) = x1 + (2,3) old_A(x1) = x1 + (2,1) new_A(x1) = ((1,0),(0,0)) x1 + (2,1) precedence: old > check# = free = new partial status: pi(check#) = [1] pi(free) = [1] pi(old) = [1] pi(new) = [] 2. weighted path order base order: matrix interpretations: carrier: N^2 order: lexicographic order interpretations: check#_A(x1) = ((0,0),(1,0)) x1 free_A(x1) = ((1,0),(0,0)) x1 + (1,1) old_A(x1) = ((1,0),(0,0)) x1 + (1,1) new_A(x1) = (1,1) precedence: check# = free = old = new partial status: pi(check#) = [] pi(free) = [] pi(old) = [] pi(new) = [] The next rules are strictly ordered: p1, p2, p3 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: new#(free(x)) -> new#(x) and R consists of: r1: top(free(x)) -> top(check(new(x))) r2: new(free(x)) -> free(new(x)) r3: old(free(x)) -> free(old(x)) r4: new(serve()) -> free(serve()) r5: old(serve()) -> free(serve()) r6: check(free(x)) -> free(check(x)) r7: check(new(x)) -> new(check(x)) r8: check(old(x)) -> old(check(x)) r9: check(old(x)) -> old(x) The set of usable rules consists of (no rules) Take the reduction pair: lexicographic combination of reduction pairs: 1. weighted path order base order: matrix interpretations: carrier: N^2 order: lexicographic order interpretations: new#_A(x1) = ((1,0),(1,1)) x1 + (2,2) free_A(x1) = ((1,0),(0,0)) x1 + (1,1) precedence: new# = free partial status: pi(new#) = [] pi(free) = [] 2. weighted path order base order: matrix interpretations: carrier: N^2 order: lexicographic order interpretations: new#_A(x1) = ((1,0),(0,0)) x1 free_A(x1) = (1,1) precedence: free > new# partial status: pi(new#) = [] pi(free) = [] 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: old#(free(x)) -> old#(x) and R consists of: r1: top(free(x)) -> top(check(new(x))) r2: new(free(x)) -> free(new(x)) r3: old(free(x)) -> free(old(x)) r4: new(serve()) -> free(serve()) r5: old(serve()) -> free(serve()) r6: check(free(x)) -> free(check(x)) r7: check(new(x)) -> new(check(x)) r8: check(old(x)) -> old(check(x)) r9: check(old(x)) -> old(x) The set of usable rules consists of (no rules) Take the reduction pair: lexicographic combination of reduction pairs: 1. weighted path order base order: matrix interpretations: carrier: N^2 order: lexicographic order interpretations: old#_A(x1) = ((1,0),(1,1)) x1 + (2,2) free_A(x1) = ((1,0),(0,0)) x1 + (1,1) precedence: old# = free partial status: pi(old#) = [] pi(free) = [] 2. weighted path order base order: matrix interpretations: carrier: N^2 order: lexicographic order interpretations: old#_A(x1) = ((1,0),(0,0)) x1 free_A(x1) = (1,1) precedence: free > old# partial status: pi(old#) = [] pi(free) = [] The next rules are strictly ordered: p1 We remove them from the problem. Then no dependency pair remains.