YES (VAR x y f xs) (RULES app(id,x) -> x app(add,0) -> id app(app(add,app(s,x)),y) -> app(s,app(app(add,x),y)) app(app(map,f),nil) -> nil app(app(map,f),app(app(cons,x),xs)) -> app(app(cons,app(f,x)),app(app(map,f),xs)) ) The TRS is an overlay system and all critical pairs are trivial, thus termination of innermost rewriting is equivalent to termination of rewriting. Proving termination of innermost rewriting for Ex1SimplyTyped: -> Dependency pairs: nF_app(app(add,app(s,x)),y) -> nF_app(s,app(app(add,x),y)) nF_app(app(add,app(s,x)),y) -> nF_app(app(add,x),y) nF_app(app(add,app(s,x)),y) -> nF_app(add,x) nF_app(app(map,f),app(app(cons,x),xs)) -> nF_app(app(cons,app(f,x)),app(app(map,f),xs)) nF_app(app(map,f),app(app(cons,x),xs)) -> nF_app(cons,app(f,x)) nF_app(app(map,f),app(app(cons,x),xs)) -> nF_app(f,x) nF_app(app(map,f),app(app(cons,x),xs)) -> nF_app(app(map,f),xs) nF_app(app(map,f),app(app(cons,x),xs)) -> nF_app(map,f) -> Proof of termination for Ex1SimplyTyped_1: -> -> Dependency pairs in cycle: nF_app(app(add,app(s,x)),y) -> nF_app(app(add,x),y) nF_app(app(map,f),app(app(cons,x),xs)) -> nF_app(f,x) nF_app(app(map,f),app(app(cons,x),xs)) -> nF_app(app(map,f),xs) nF_app(app(map,f),app(app(cons,x),xs)) -> nF_app(app(cons,app(f,x)),app(app(map,f),xs)) UsableRules: app(id,x) -> x app(add,0) -> id app(app(add,app(s,x)),y) -> app(s,app(app(add,x),y)) app(app(map,f),nil) -> nil app(app(map,f),app(app(cons,x),xs)) -> app(app(cons,app(f,x)),app(app(map,f),xs)) Polynomial Interpretation: [app](X1,X2) = X1.X2 + X1 [id] = 1 [add] = 1 [0] = 1 [s] = 1 [map] = 1 [nil] = 1 [cons] = 0 [nF_app](X1,X2) = X1 TIME: 0.304075 -> -> Dependency pairs in cycle: nF_app(app(add,app(s,x)),y) -> nF_app(app(add,x),y) nF_app(app(map,f),app(app(cons,x),xs)) -> nF_app(app(map,f),xs) nF_app(app(map,f),app(app(cons,x),xs)) -> nF_app(f,x) Dependency pairs oriented using subterm criterion. -> -> Dependency pairs in cycle: nF_app(app(add,app(s,x)),y) -> nF_app(app(add,x),y) UsableRules: app(id,x) -> x app(add,0) -> id app(app(add,app(s,x)),y) -> app(s,app(app(add,x),y)) app(app(map,f),nil) -> nil app(app(map,f),app(app(cons,x),xs)) -> app(app(cons,app(f,x)),app(app(map,f),xs)) Polynomial Interpretation: [app](X1,X2) = X1.X2 + X1 [id] = 1 [add] = 1 [0] = 1 [s] = 1 [map] = 0 [nil] = 0 [cons] = 0 [nF_app](X1,X2) = X1 TIME: 0.101063 SETTINGS: Base ordering: Polynomial ordering Proof mode: SCCs in DG + base ordering Upper bound for coeffs: 1 Rationals below 1 for all non-replacing args: No Polynomial interpretation: Simple mixed Coeffs in polynomials: No rationals Delta: automatic Termination was proved succesfully.