YES Input TRS: 1: app(app(app(compose(),f),g),x) -> app(g,app(f,x)) 2: app(reverse(),l) -> app(app(reverse2(),l),nil()) 3: app(app(reverse2(),nil()),l) -> l 4: app(app(reverse2(),app(app(cons(),x),xs)),l) -> app(app(reverse2(),xs),app(app(cons(),x),l)) 5: app(hd(),app(app(cons(),x),xs)) -> x 6: app(tl(),app(app(cons(),x),xs)) -> xs 7: last() -> app(app(compose(),hd()),reverse()) 8: init() -> app(app(compose(),reverse()),app(app(compose(),tl()),reverse())) Number of strict rules: 8 Direct POLO(bPol) ... removes: 8 1 3 5 7 6 2 hd w: 1 init w: 262447 reverse2 w: 10451 reverse w: 44407 compose w: 30613 tl w: 2 last w: 131224 nil w: 5854 cons w: 1 app w: x1 + x2 + 28101 Number of strict rules: 1 Direct POLO(bPol) ... failed. Uncurrying app 4: app^2_reverse2(app^2_cons(x,xs),l) -> app^2_reverse2(xs,app^2_cons(x,l)) 9: app(reverse2(),_1) ->= app^1_reverse2(_1) 10: app(app^1_reverse2(_1),_2) ->= app^2_reverse2(_1,_2) 11: app(cons(),_1) ->= app^1_cons(_1) 12: app(app^1_cons(_1),_2) ->= app^2_cons(_1,_2) Number of strict rules: 1 Direct POLO(bPol) ... removes: 10 12 11 9 hd w: 0 app^1_cons w: 2 * x1 + 2 init w: 0 reverse2 w: 8857 app^2_reverse2 w: x1 + x2 reverse w: 0 compose w: 0 tl w: 0 last w: 0 nil w: 0 cons w: 3 app^1_reverse2 w: 2 * x1 + 1 app^2_cons w: 2 * x1 + x2 + 1 app w: x1 + 2 * x2 Number of strict rules: 1 Direct POLO(bPol) ... removes: 4 hd w: 0 app^1_cons w: 2 * x1 + 1 init w: 0 reverse2 w: 5854 app^2_reverse2 w: 2 * x1 + x2 reverse w: 0 compose w: 0 tl w: 0 last w: 0 nil w: 0 cons w: 3 app^1_reverse2 w: 2 * x1 + 1 app^2_cons w: 2 * x1 + x2 + 1 app w: x1 + 2 * x2 Number of strict rules: 0