YES Problem: app(app(append(),nil()),ys) -> ys app(app(append(),app(app(cons(),x),xs)),ys) -> app(app(cons(),x),app(app(append(),xs),ys)) app(app(flatwith(),f),app(leaf(),x)) -> app(app(cons(),app(f,x)),nil()) app(app(flatwith(),f),app(node(),xs)) -> app(app(flatwithsub(),f),xs) app(app(flatwithsub(),f),nil()) -> nil() app(app(flatwithsub(),f),app(app(cons(),x),xs)) -> app(app(append(),app(app(flatwith(),f),x)),app(app(flatwithsub(),f),xs)) Proof: Uncurry Processor: append2(nil(),ys) -> ys append2(cons2(x,xs),ys) -> cons2(x,append2(xs,ys)) flatwith2(f,leaf1(x)) -> cons2(app(f,x),nil()) flatwith2(f,node1(xs)) -> flatwithsub2(f,xs) flatwithsub2(f,nil()) -> nil() flatwithsub2(f,cons2(x,xs)) -> append2(flatwith2(f,x),flatwithsub2(f,xs)) app(append1(x4),x5) -> append2(x4,x5) app(append(),x5) -> append1(x5) app(cons1(x4),x5) -> cons2(x4,x5) app(cons(),x5) -> cons1(x5) app(flatwith1(x4),x5) -> flatwith2(x4,x5) app(flatwith(),x5) -> flatwith1(x5) app(leaf(),x5) -> leaf1(x5) app(node(),x5) -> node1(x5) app(flatwithsub1(x4),x5) -> flatwithsub2(x4,x5) app(flatwithsub(),x5) -> flatwithsub1(x5) DP Processor: DPs: append{2,#}(cons2(x,xs),ys) -> append{2,#}(xs,ys) flatwith{2,#}(f,leaf1(x)) -> app#(f,x) flatwith{2,#}(f,node1(xs)) -> flatwithsub{2,#}(f,xs) flatwithsub{2,#}(f,cons2(x,xs)) -> flatwithsub{2,#}(f,xs) flatwithsub{2,#}(f,cons2(x,xs)) -> flatwith{2,#}(f,x) flatwithsub{2,#}(f,cons2(x,xs)) -> append{2,#}(flatwith2(f,x),flatwithsub2(f,xs)) app#(append1(x4),x5) -> append{2,#}(x4,x5) app#(flatwith1(x4),x5) -> flatwith{2,#}(x4,x5) app#(flatwithsub1(x4),x5) -> flatwithsub{2,#}(x4,x5) TRS: append2(nil(),ys) -> ys append2(cons2(x,xs),ys) -> cons2(x,append2(xs,ys)) flatwith2(f,leaf1(x)) -> cons2(app(f,x),nil()) flatwith2(f,node1(xs)) -> flatwithsub2(f,xs) flatwithsub2(f,nil()) -> nil() flatwithsub2(f,cons2(x,xs)) -> append2(flatwith2(f,x),flatwithsub2(f,xs)) app(append1(x4),x5) -> append2(x4,x5) app(append(),x5) -> append1(x5) app(cons1(x4),x5) -> cons2(x4,x5) app(cons(),x5) -> cons1(x5) app(flatwith1(x4),x5) -> flatwith2(x4,x5) app(flatwith(),x5) -> flatwith1(x5) app(leaf(),x5) -> leaf1(x5) app(node(),x5) -> node1(x5) app(flatwithsub1(x4),x5) -> flatwithsub2(x4,x5) app(flatwithsub(),x5) -> flatwithsub1(x5) TDG Processor: DPs: append{2,#}(cons2(x,xs),ys) -> append{2,#}(xs,ys) flatwith{2,#}(f,leaf1(x)) -> app#(f,x) flatwith{2,#}(f,node1(xs)) -> flatwithsub{2,#}(f,xs) flatwithsub{2,#}(f,cons2(x,xs)) -> flatwithsub{2,#}(f,xs) flatwithsub{2,#}(f,cons2(x,xs)) -> flatwith{2,#}(f,x) flatwithsub{2,#}(f,cons2(x,xs)) -> append{2,#}(flatwith2(f,x),flatwithsub2(f,xs)) app#(append1(x4),x5) -> append{2,#}(x4,x5) app#(flatwith1(x4),x5) -> flatwith{2,#}(x4,x5) app#(flatwithsub1(x4),x5) -> flatwithsub{2,#}(x4,x5) TRS: append2(nil(),ys) -> ys append2(cons2(x,xs),ys) -> cons2(x,append2(xs,ys)) flatwith2(f,leaf1(x)) -> cons2(app(f,x),nil()) flatwith2(f,node1(xs)) -> flatwithsub2(f,xs) flatwithsub2(f,nil()) -> nil() flatwithsub2(f,cons2(x,xs)) -> append2(flatwith2(f,x),flatwithsub2(f,xs)) app(append1(x4),x5) -> append2(x4,x5) app(append(),x5) -> append1(x5) app(cons1(x4),x5) -> cons2(x4,x5) app(cons(),x5) -> cons1(x5) app(flatwith1(x4),x5) -> flatwith2(x4,x5) app(flatwith(),x5) -> flatwith1(x5) app(leaf(),x5) -> leaf1(x5) app(node(),x5) -> node1(x5) app(flatwithsub1(x4),x5) -> flatwithsub2(x4,x5) app(flatwithsub(),x5) -> flatwithsub1(x5) graph: flatwithsub{2,#}(f,cons2(x,xs)) -> flatwithsub{2,#}(f,xs) -> flatwithsub{2,#}(f,cons2(x,xs)) -> append{2,#}(flatwith2(f,x),flatwithsub2(f,xs)) flatwithsub{2,#}(f,cons2(x,xs)) -> flatwithsub{2,#}(f,xs) -> flatwithsub{2,#}(f,cons2(x,xs)) -> flatwith{2,#}(f,x) flatwithsub{2,#}(f,cons2(x,xs)) -> flatwithsub{2,#}(f,xs) -> flatwithsub{2,#}(f,cons2(x,xs)) -> flatwithsub{2,#}(f,xs) flatwithsub{2,#}(f,cons2(x,xs)) -> flatwith{2,#}(f,x) -> flatwith{2,#}(f,node1(xs)) -> flatwithsub{2,#}(f,xs) flatwithsub{2,#}(f,cons2(x,xs)) -> flatwith{2,#}(f,x) -> flatwith{2,#}(f,leaf1(x)) -> app#(f,x) flatwithsub{2,#}(f,cons2(x,xs)) -> append{2,#}(flatwith2(f,x),flatwithsub2(f,xs)) -> append{2,#}(cons2(x,xs),ys) -> append{2,#}(xs,ys) app#(flatwithsub1(x4),x5) -> flatwithsub{2,#}(x4,x5) -> flatwithsub{2,#}(f,cons2(x,xs)) -> append{2,#}(flatwith2(f,x),flatwithsub2(f,xs)) app#(flatwithsub1(x4),x5) -> flatwithsub{2,#}(x4,x5) -> flatwithsub{2,#}(f,cons2(x,xs)) -> flatwith{2,#}(f,x) app#(flatwithsub1(x4),x5) -> flatwithsub{2,#}(x4,x5) -> flatwithsub{2,#}(f,cons2(x,xs)) -> flatwithsub{2,#}(f,xs) app#(flatwith1(x4),x5) -> flatwith{2,#}(x4,x5) -> flatwith{2,#}(f,node1(xs)) -> flatwithsub{2,#}(f,xs) app#(flatwith1(x4),x5) -> flatwith{2,#}(x4,x5) -> flatwith{2,#}(f,leaf1(x)) -> app#(f,x) app#(append1(x4),x5) -> append{2,#}(x4,x5) -> append{2,#}(cons2(x,xs),ys) -> append{2,#}(xs,ys) flatwith{2,#}(f,node1(xs)) -> flatwithsub{2,#}(f,xs) -> flatwithsub{2,#}(f,cons2(x,xs)) -> append{2,#}(flatwith2(f,x),flatwithsub2(f,xs)) flatwith{2,#}(f,node1(xs)) -> flatwithsub{2,#}(f,xs) -> flatwithsub{2,#}(f,cons2(x,xs)) -> flatwith{2,#}(f,x) flatwith{2,#}(f,node1(xs)) -> flatwithsub{2,#}(f,xs) -> flatwithsub{2,#}(f,cons2(x,xs)) -> flatwithsub{2,#}(f,xs) flatwith{2,#}(f,leaf1(x)) -> app#(f,x) -> app#(flatwithsub1(x4),x5) -> flatwithsub{2,#}(x4,x5) flatwith{2,#}(f,leaf1(x)) -> app#(f,x) -> app#(flatwith1(x4),x5) -> flatwith{2,#}(x4,x5) flatwith{2,#}(f,leaf1(x)) -> app#(f,x) -> app#(append1(x4),x5) -> append{2,#}(x4,x5) append{2,#}(cons2(x,xs),ys) -> append{2,#}(xs,ys) -> append{2,#}(cons2(x,xs),ys) -> append{2,#}(xs,ys) SCC Processor: #sccs: 2 #rules: 7 #arcs: 19/81 DPs: flatwithsub{2,#}(f,cons2(x,xs)) -> flatwithsub{2,#}(f,xs) flatwithsub{2,#}(f,cons2(x,xs)) -> flatwith{2,#}(f,x) flatwith{2,#}(f,leaf1(x)) -> app#(f,x) app#(flatwith1(x4),x5) -> flatwith{2,#}(x4,x5) flatwith{2,#}(f,node1(xs)) -> flatwithsub{2,#}(f,xs) app#(flatwithsub1(x4),x5) -> flatwithsub{2,#}(x4,x5) TRS: append2(nil(),ys) -> ys append2(cons2(x,xs),ys) -> cons2(x,append2(xs,ys)) flatwith2(f,leaf1(x)) -> cons2(app(f,x),nil()) flatwith2(f,node1(xs)) -> flatwithsub2(f,xs) flatwithsub2(f,nil()) -> nil() flatwithsub2(f,cons2(x,xs)) -> append2(flatwith2(f,x),flatwithsub2(f,xs)) app(append1(x4),x5) -> append2(x4,x5) app(append(),x5) -> append1(x5) app(cons1(x4),x5) -> cons2(x4,x5) app(cons(),x5) -> cons1(x5) app(flatwith1(x4),x5) -> flatwith2(x4,x5) app(flatwith(),x5) -> flatwith1(x5) app(leaf(),x5) -> leaf1(x5) app(node(),x5) -> node1(x5) app(flatwithsub1(x4),x5) -> flatwithsub2(x4,x5) app(flatwithsub(),x5) -> flatwithsub1(x5) Subterm Criterion Processor: simple projection: pi(flatwith{2,#}) = 1 pi(app#) = 1 pi(flatwithsub{2,#}) = 1 problem: DPs: app#(flatwith1(x4),x5) -> flatwith{2,#}(x4,x5) app#(flatwithsub1(x4),x5) -> flatwithsub{2,#}(x4,x5) TRS: append2(nil(),ys) -> ys append2(cons2(x,xs),ys) -> cons2(x,append2(xs,ys)) flatwith2(f,leaf1(x)) -> cons2(app(f,x),nil()) flatwith2(f,node1(xs)) -> flatwithsub2(f,xs) flatwithsub2(f,nil()) -> nil() flatwithsub2(f,cons2(x,xs)) -> append2(flatwith2(f,x),flatwithsub2(f,xs)) app(append1(x4),x5) -> append2(x4,x5) app(append(),x5) -> append1(x5) app(cons1(x4),x5) -> cons2(x4,x5) app(cons(),x5) -> cons1(x5) app(flatwith1(x4),x5) -> flatwith2(x4,x5) app(flatwith(),x5) -> flatwith1(x5) app(leaf(),x5) -> leaf1(x5) app(node(),x5) -> node1(x5) app(flatwithsub1(x4),x5) -> flatwithsub2(x4,x5) app(flatwithsub(),x5) -> flatwithsub1(x5) SCC Processor: #sccs: 0 #rules: 0 #arcs: 12/4 DPs: append{2,#}(cons2(x,xs),ys) -> append{2,#}(xs,ys) TRS: append2(nil(),ys) -> ys append2(cons2(x,xs),ys) -> cons2(x,append2(xs,ys)) flatwith2(f,leaf1(x)) -> cons2(app(f,x),nil()) flatwith2(f,node1(xs)) -> flatwithsub2(f,xs) flatwithsub2(f,nil()) -> nil() flatwithsub2(f,cons2(x,xs)) -> append2(flatwith2(f,x),flatwithsub2(f,xs)) app(append1(x4),x5) -> append2(x4,x5) app(append(),x5) -> append1(x5) app(cons1(x4),x5) -> cons2(x4,x5) app(cons(),x5) -> cons1(x5) app(flatwith1(x4),x5) -> flatwith2(x4,x5) app(flatwith(),x5) -> flatwith1(x5) app(leaf(),x5) -> leaf1(x5) app(node(),x5) -> node1(x5) app(flatwithsub1(x4),x5) -> flatwithsub2(x4,x5) app(flatwithsub(),x5) -> flatwithsub1(x5) Subterm Criterion Processor: simple projection: pi(append{2,#}) = 0 problem: DPs: TRS: append2(nil(),ys) -> ys append2(cons2(x,xs),ys) -> cons2(x,append2(xs,ys)) flatwith2(f,leaf1(x)) -> cons2(app(f,x),nil()) flatwith2(f,node1(xs)) -> flatwithsub2(f,xs) flatwithsub2(f,nil()) -> nil() flatwithsub2(f,cons2(x,xs)) -> append2(flatwith2(f,x),flatwithsub2(f,xs)) app(append1(x4),x5) -> append2(x4,x5) app(append(),x5) -> append1(x5) app(cons1(x4),x5) -> cons2(x4,x5) app(cons(),x5) -> cons1(x5) app(flatwith1(x4),x5) -> flatwith2(x4,x5) app(flatwith(),x5) -> flatwith1(x5) app(leaf(),x5) -> leaf1(x5) app(node(),x5) -> node1(x5) app(flatwithsub1(x4),x5) -> flatwithsub2(x4,x5) app(flatwithsub(),x5) -> flatwithsub1(x5) Qed