Input TRS: 1: +(0(),y) -> y 2: +(s(x),y) -> s(+(x,y)) 3: sum1(nil()) -> 0() 4: sum1(cons(x,y)) -> +(x,sum1(y)) 5: sum2(nil(),z) -> z 6: sum2(cons(x,y),z) -> sum2(y,+(x,z)) 7: tests(0()) -> true() 8: tests(s(x)) -> and(test(rands(rand(0()),nil())),x) 9: test(done(y)) -> eq(f(y),g(y)) 10: eq(x,x) -> true() 11: rands(0(),y) -> done(y) 12: rands(s(x),y) -> rands(x,::(rand(0()),y)) 13: rand(x) ->= x 14: rand(x) ->= rand(s(x)) Number of strict rules: 12 Direct Order(PosReal,>,Poly) ... removes: 4 8 1 3 5 10 7 11 9 6 rands(x1,x2) weight: (/ 1 4) + x2 + x1 tests(x1) weight: (/ 428177 8) + x1 test(x1) weight: (/ 86717 4) + 2 * x1 s(x1) weight: x1 done(x1) weight: (/ 1 8) + x1 and(x1,x2) weight: x2 + x1 eq(x1,x2) weight: (/ 1 8) + x2 + x1 sum2(x1,x2) weight: 2 * x2 + 2 * x1 ::(x1,x2) weight: x2 + x1 true() weight: 0 rand(x1) weight: x1 f(x1) weight: (/ 173433 8) + x1 0() weight: 0 nil() weight: (/ 127369 8) cons(x1,x2) weight: (/ 1 4) + x2 + x1 +(x1,x2) weight: (/ 1 8) + x2 + x1 g(x1) weight: (/ 1 8) + x1 sum1(x1) weight: (/ 2249 8) + x1 Number of strict rules: 2 Direct Order(PosReal,>,Poly) ... failed. Freezing ... failed. Dependency Pairs: #1: #+(s(x),y) -> #+(x,y) #2: #rands(s(x),y) -> #rands(x,::(rand(0()),y)) Number of SCCs: 2, DPs: 2, edges: 2 SCC { #1 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... QLPOpS... Order(PosReal,>,MaxSum)... QWPOpS(PosReal,>,MaxSum)... succeeded. rands(x1,x2) weight: x1 status: [x1] precedence above: tests(x1) weight: x1 status: [] precedence above: test(x1) weight: x1 status: [] precedence above: s(x1) weight: x1 status: [x1] precedence above: rands :: + #+ done(x1) weight: (/ 1 4) status: [] precedence above: and(x1,x2) weight: (/ 1 4) + x2 + x1 status: [x2,x1] precedence above: eq(x1,x2) weight: x1 status: [x1] precedence above: sum2(x1,x2) weight: (/ 1 4) + x1 status: [x1] precedence above: ::(x1,x2) weight: (/ 1 4) status: [] precedence above: rands s + #+ true() weight: 0 status: [] precedence above: rand(x1) weight: (/ 1 4) + x1 status: [] precedence above: rands f(x1) weight: x1 status: [] precedence above: #rands(x1,x2) weight: (/ 1 4) + x2 + x1 status: [x1,x2] precedence above: 0() weight: (/ 1 4) status: [] precedence above: nil() weight: 0 status: [] precedence above: cons(x1,x2) weight: (/ 1 4) + x2 status: [x2] precedence above: +(x1,x2) weight: x1 status: x1 g(x1) weight: x1 status: [] precedence above: #+(x1,x2) weight: x1 status: [x1] precedence above: sum1(x1) weight: x1 status: [] precedence above: Removed DPs: #1 Number of SCCs: 1, DPs: 1, edges: 1 SCC { #2 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... QLPOpS... Order(PosReal,>,MaxSum)... QWPOpS(PosReal,>,MaxSum)... succeeded. rands(x1,x2) weight: x1 status: [x1] precedence above: tests(x1) weight: x1 status: [] precedence above: test(x1) weight: x1 status: [] precedence above: s(x1) weight: x1 status: [x1] precedence above: rands :: #rands 0 + #+ done(x1) weight: (/ 1 2) status: [] precedence above: and(x1,x2) weight: (/ 1 2) + x2 + x1 status: [x2,x1] precedence above: eq(x1,x2) weight: x1 status: [x1] precedence above: sum2(x1,x2) weight: (/ 1 2) + x1 status: [x1] precedence above: ::(x1,x2) weight: (/ 1 2) status: [] precedence above: rands #+ true() weight: 0 status: [] precedence above: rand(x1) weight: (/ 1 2) + x1 status: [] precedence above: rands f(x1) weight: x1 status: [] precedence above: #rands(x1,x2) weight: x1 status: [x1] precedence above: rands :: #+ 0() weight: 0 status: [] precedence above: nil() weight: 0 status: [] precedence above: cons(x1,x2) weight: (/ 1 2) + x2 status: [x2] precedence above: +(x1,x2) weight: x1 status: x1 g(x1) weight: x1 status: [] precedence above: #+(x1,x2) weight: x1 status: [x1] precedence above: sum1(x1) weight: x1 status: [] precedence above: Removed DPs: #2 Number of SCCs: 0, DPs: 0, edges: 0 YES