YES Problem: app(app(fmap(),fnil()),x) -> nil() app(app(fmap(),app(app(fcons(),f),t)),x) -> app(app(cons(),app(f,x)),app(app(fmap(),t),x)) Proof: Uncurry Processor: fmap2(fnil(),x) -> nil() fmap2(fcons2(f,t),x) -> cons2(app(f,x),fmap2(t,x)) app(fmap1(x3),x4) -> fmap2(x3,x4) app(fmap(),x4) -> fmap1(x4) app(fcons1(x3),x4) -> fcons2(x3,x4) app(fcons(),x4) -> fcons1(x4) app(cons1(x3),x4) -> cons2(x3,x4) app(cons(),x4) -> cons1(x4) DP Processor: DPs: fmap{2,#}(fcons2(f,t),x) -> fmap{2,#}(t,x) fmap{2,#}(fcons2(f,t),x) -> app#(f,x) app#(fmap1(x3),x4) -> fmap{2,#}(x3,x4) TRS: fmap2(fnil(),x) -> nil() fmap2(fcons2(f,t),x) -> cons2(app(f,x),fmap2(t,x)) app(fmap1(x3),x4) -> fmap2(x3,x4) app(fmap(),x4) -> fmap1(x4) app(fcons1(x3),x4) -> fcons2(x3,x4) app(fcons(),x4) -> fcons1(x4) app(cons1(x3),x4) -> cons2(x3,x4) app(cons(),x4) -> cons1(x4) TDG Processor: DPs: fmap{2,#}(fcons2(f,t),x) -> fmap{2,#}(t,x) fmap{2,#}(fcons2(f,t),x) -> app#(f,x) app#(fmap1(x3),x4) -> fmap{2,#}(x3,x4) TRS: fmap2(fnil(),x) -> nil() fmap2(fcons2(f,t),x) -> cons2(app(f,x),fmap2(t,x)) app(fmap1(x3),x4) -> fmap2(x3,x4) app(fmap(),x4) -> fmap1(x4) app(fcons1(x3),x4) -> fcons2(x3,x4) app(fcons(),x4) -> fcons1(x4) app(cons1(x3),x4) -> cons2(x3,x4) app(cons(),x4) -> cons1(x4) graph: app#(fmap1(x3),x4) -> fmap{2,#}(x3,x4) -> fmap{2,#}(fcons2(f,t),x) -> app#(f,x) app#(fmap1(x3),x4) -> fmap{2,#}(x3,x4) -> fmap{2,#}(fcons2(f,t),x) -> fmap{2,#}(t,x) fmap{2,#}(fcons2(f,t),x) -> app#(f,x) -> app#(fmap1(x3),x4) -> fmap{2,#}(x3,x4) fmap{2,#}(fcons2(f,t),x) -> fmap{2,#}(t,x) -> fmap{2,#}(fcons2(f,t),x) -> app#(f,x) fmap{2,#}(fcons2(f,t),x) -> fmap{2,#}(t,x) -> fmap{2,#}(fcons2(f,t),x) -> fmap{2,#}(t,x) Subterm Criterion Processor: simple projection: pi(fmap{2,#}) = 0 pi(app#) = 0 problem: DPs: TRS: fmap2(fnil(),x) -> nil() fmap2(fcons2(f,t),x) -> cons2(app(f,x),fmap2(t,x)) app(fmap1(x3),x4) -> fmap2(x3,x4) app(fmap(),x4) -> fmap1(x4) app(fcons1(x3),x4) -> fcons2(x3,x4) app(fcons(),x4) -> fcons1(x4) app(cons1(x3),x4) -> cons2(x3,x4) app(cons(),x4) -> cons1(x4) Qed