MAYBE Problem: diff(x,y) -> cond1(equal(x,y),x,y) cond1(true(),x,y) -> 0() cond1(false(),x,y) -> cond2(gt(x,y),x,y) cond2(true(),x,y) -> s(diff(x,s(y))) cond2(false(),x,y) -> s(diff(s(x),y)) gt(0(),v) -> false() gt(s(u),0()) -> true() gt(s(u),s(v)) -> gt(u,v) equal(0(),0()) -> true() equal(s(x),0()) -> false() equal(0(),s(y)) -> false() equal(s(x),s(y)) -> equal(x,y) Proof: DP Processor: DPs: diff#(x,y) -> equal#(x,y) diff#(x,y) -> cond1#(equal(x,y),x,y) cond1#(false(),x,y) -> gt#(x,y) cond1#(false(),x,y) -> cond2#(gt(x,y),x,y) cond2#(true(),x,y) -> diff#(x,s(y)) cond2#(false(),x,y) -> diff#(s(x),y) gt#(s(u),s(v)) -> gt#(u,v) equal#(s(x),s(y)) -> equal#(x,y) TRS: diff(x,y) -> cond1(equal(x,y),x,y) cond1(true(),x,y) -> 0() cond1(false(),x,y) -> cond2(gt(x,y),x,y) cond2(true(),x,y) -> s(diff(x,s(y))) cond2(false(),x,y) -> s(diff(s(x),y)) gt(0(),v) -> false() gt(s(u),0()) -> true() gt(s(u),s(v)) -> gt(u,v) equal(0(),0()) -> true() equal(s(x),0()) -> false() equal(0(),s(y)) -> false() equal(s(x),s(y)) -> equal(x,y) TDG Processor: DPs: diff#(x,y) -> equal#(x,y) diff#(x,y) -> cond1#(equal(x,y),x,y) cond1#(false(),x,y) -> gt#(x,y) cond1#(false(),x,y) -> cond2#(gt(x,y),x,y) cond2#(true(),x,y) -> diff#(x,s(y)) cond2#(false(),x,y) -> diff#(s(x),y) gt#(s(u),s(v)) -> gt#(u,v) equal#(s(x),s(y)) -> equal#(x,y) TRS: diff(x,y) -> cond1(equal(x,y),x,y) cond1(true(),x,y) -> 0() cond1(false(),x,y) -> cond2(gt(x,y),x,y) cond2(true(),x,y) -> s(diff(x,s(y))) cond2(false(),x,y) -> s(diff(s(x),y)) gt(0(),v) -> false() gt(s(u),0()) -> true() gt(s(u),s(v)) -> gt(u,v) equal(0(),0()) -> true() equal(s(x),0()) -> false() equal(0(),s(y)) -> false() equal(s(x),s(y)) -> equal(x,y) graph: cond2#(false(),x,y) -> diff#(s(x),y) -> diff#(x,y) -> cond1#(equal(x,y),x,y) cond2#(false(),x,y) -> diff#(s(x),y) -> diff#(x,y) -> equal#(x,y) cond2#(true(),x,y) -> diff#(x,s(y)) -> diff#(x,y) -> cond1#(equal(x,y),x,y) cond2#(true(),x,y) -> diff#(x,s(y)) -> diff#(x,y) -> equal#(x,y) gt#(s(u),s(v)) -> gt#(u,v) -> gt#(s(u),s(v)) -> gt#(u,v) cond1#(false(),x,y) -> cond2#(gt(x,y),x,y) -> cond2#(false(),x,y) -> diff#(s(x),y) cond1#(false(),x,y) -> cond2#(gt(x,y),x,y) -> cond2#(true(),x,y) -> diff#(x,s(y)) cond1#(false(),x,y) -> gt#(x,y) -> gt#(s(u),s(v)) -> gt#(u,v) equal#(s(x),s(y)) -> equal#(x,y) -> equal#(s(x),s(y)) -> equal#(x,y) diff#(x,y) -> cond1#(equal(x,y),x,y) -> cond1#(false(),x,y) -> cond2#(gt(x,y),x,y) diff#(x,y) -> cond1#(equal(x,y),x,y) -> cond1#(false(),x,y) -> gt#(x,y) diff#(x,y) -> equal#(x,y) -> equal#(s(x),s(y)) -> equal#(x,y) SCC Processor: #sccs: 3 #rules: 6 #arcs: 12/64 DPs: cond2#(false(),x,y) -> diff#(s(x),y) diff#(x,y) -> cond1#(equal(x,y),x,y) cond1#(false(),x,y) -> cond2#(gt(x,y),x,y) cond2#(true(),x,y) -> diff#(x,s(y)) TRS: diff(x,y) -> cond1(equal(x,y),x,y) cond1(true(),x,y) -> 0() cond1(false(),x,y) -> cond2(gt(x,y),x,y) cond2(true(),x,y) -> s(diff(x,s(y))) cond2(false(),x,y) -> s(diff(s(x),y)) gt(0(),v) -> false() gt(s(u),0()) -> true() gt(s(u),s(v)) -> gt(u,v) equal(0(),0()) -> true() equal(s(x),0()) -> false() equal(0(),s(y)) -> false() equal(s(x),s(y)) -> equal(x,y) Open DPs: gt#(s(u),s(v)) -> gt#(u,v) TRS: diff(x,y) -> cond1(equal(x,y),x,y) cond1(true(),x,y) -> 0() cond1(false(),x,y) -> cond2(gt(x,y),x,y) cond2(true(),x,y) -> s(diff(x,s(y))) cond2(false(),x,y) -> s(diff(s(x),y)) gt(0(),v) -> false() gt(s(u),0()) -> true() gt(s(u),s(v)) -> gt(u,v) equal(0(),0()) -> true() equal(s(x),0()) -> false() equal(0(),s(y)) -> false() equal(s(x),s(y)) -> equal(x,y) Subterm Criterion Processor: simple projection: pi(gt#) = 1 problem: DPs: TRS: diff(x,y) -> cond1(equal(x,y),x,y) cond1(true(),x,y) -> 0() cond1(false(),x,y) -> cond2(gt(x,y),x,y) cond2(true(),x,y) -> s(diff(x,s(y))) cond2(false(),x,y) -> s(diff(s(x),y)) gt(0(),v) -> false() gt(s(u),0()) -> true() gt(s(u),s(v)) -> gt(u,v) equal(0(),0()) -> true() equal(s(x),0()) -> false() equal(0(),s(y)) -> false() equal(s(x),s(y)) -> equal(x,y) Qed DPs: equal#(s(x),s(y)) -> equal#(x,y) TRS: diff(x,y) -> cond1(equal(x,y),x,y) cond1(true(),x,y) -> 0() cond1(false(),x,y) -> cond2(gt(x,y),x,y) cond2(true(),x,y) -> s(diff(x,s(y))) cond2(false(),x,y) -> s(diff(s(x),y)) gt(0(),v) -> false() gt(s(u),0()) -> true() gt(s(u),s(v)) -> gt(u,v) equal(0(),0()) -> true() equal(s(x),0()) -> false() equal(0(),s(y)) -> false() equal(s(x),s(y)) -> equal(x,y) Subterm Criterion Processor: simple projection: pi(equal#) = 1 problem: DPs: TRS: diff(x,y) -> cond1(equal(x,y),x,y) cond1(true(),x,y) -> 0() cond1(false(),x,y) -> cond2(gt(x,y),x,y) cond2(true(),x,y) -> s(diff(x,s(y))) cond2(false(),x,y) -> s(diff(s(x),y)) gt(0(),v) -> false() gt(s(u),0()) -> true() gt(s(u),s(v)) -> gt(u,v) equal(0(),0()) -> true() equal(s(x),0()) -> false() equal(0(),s(y)) -> false() equal(s(x),s(y)) -> equal(x,y) Qed