MAYBE Problem: ge(0(),0()) -> true() ge(s(x),0()) -> ge(x,0()) ge(0(),s(0())) -> false() ge(0(),s(s(x))) -> ge(0(),s(x)) ge(s(x),s(y)) -> ge(x,y) minus(0(),0()) -> 0() minus(0(),s(x)) -> minus(0(),x) minus(s(x),0()) -> s(minus(x,0())) minus(s(x),s(y)) -> minus(x,y) plus(0(),0()) -> 0() plus(0(),s(x)) -> s(plus(0(),x)) plus(s(x),y) -> s(plus(x,y)) div(x,y) -> ify(ge(y,s(0())),x,y) ify(false(),x,y) -> divByZeroError() ify(true(),x,y) -> if(ge(x,y),x,y) if(false(),x,y) -> 0() if(true(),x,y) -> s(div(minus(x,y),y)) div(plus(x,y),z) -> plus(div(x,z),div(y,z)) Proof: DP Processor: DPs: ge#(s(x),0()) -> ge#(x,0()) ge#(0(),s(s(x))) -> ge#(0(),s(x)) ge#(s(x),s(y)) -> ge#(x,y) minus#(0(),s(x)) -> minus#(0(),x) minus#(s(x),0()) -> minus#(x,0()) minus#(s(x),s(y)) -> minus#(x,y) plus#(0(),s(x)) -> plus#(0(),x) plus#(s(x),y) -> plus#(x,y) div#(x,y) -> ge#(y,s(0())) div#(x,y) -> ify#(ge(y,s(0())),x,y) ify#(true(),x,y) -> ge#(x,y) ify#(true(),x,y) -> if#(ge(x,y),x,y) if#(true(),x,y) -> minus#(x,y) if#(true(),x,y) -> div#(minus(x,y),y) div#(plus(x,y),z) -> div#(y,z) div#(plus(x,y),z) -> div#(x,z) div#(plus(x,y),z) -> plus#(div(x,z),div(y,z)) TRS: ge(0(),0()) -> true() ge(s(x),0()) -> ge(x,0()) ge(0(),s(0())) -> false() ge(0(),s(s(x))) -> ge(0(),s(x)) ge(s(x),s(y)) -> ge(x,y) minus(0(),0()) -> 0() minus(0(),s(x)) -> minus(0(),x) minus(s(x),0()) -> s(minus(x,0())) minus(s(x),s(y)) -> minus(x,y) plus(0(),0()) -> 0() plus(0(),s(x)) -> s(plus(0(),x)) plus(s(x),y) -> s(plus(x,y)) div(x,y) -> ify(ge(y,s(0())),x,y) ify(false(),x,y) -> divByZeroError() ify(true(),x,y) -> if(ge(x,y),x,y) if(false(),x,y) -> 0() if(true(),x,y) -> s(div(minus(x,y),y)) div(plus(x,y),z) -> plus(div(x,z),div(y,z)) ADG Processor: DPs: ge#(s(x),0()) -> ge#(x,0()) ge#(0(),s(s(x))) -> ge#(0(),s(x)) ge#(s(x),s(y)) -> ge#(x,y) minus#(0(),s(x)) -> minus#(0(),x) minus#(s(x),0()) -> minus#(x,0()) minus#(s(x),s(y)) -> minus#(x,y) plus#(0(),s(x)) -> plus#(0(),x) plus#(s(x),y) -> plus#(x,y) div#(x,y) -> ge#(y,s(0())) div#(x,y) -> ify#(ge(y,s(0())),x,y) ify#(true(),x,y) -> ge#(x,y) ify#(true(),x,y) -> if#(ge(x,y),x,y) if#(true(),x,y) -> minus#(x,y) if#(true(),x,y) -> div#(minus(x,y),y) div#(plus(x,y),z) -> div#(y,z) div#(plus(x,y),z) -> div#(x,z) div#(plus(x,y),z) -> plus#(div(x,z),div(y,z)) TRS: ge(0(),0()) -> true() ge(s(x),0()) -> ge(x,0()) ge(0(),s(0())) -> false() ge(0(),s(s(x))) -> ge(0(),s(x)) ge(s(x),s(y)) -> ge(x,y) minus(0(),0()) -> 0() minus(0(),s(x)) -> minus(0(),x) minus(s(x),0()) -> s(minus(x,0())) minus(s(x),s(y)) -> minus(x,y) plus(0(),0()) -> 0() plus(0(),s(x)) -> s(plus(0(),x)) plus(s(x),y) -> s(plus(x,y)) div(x,y) -> ify(ge(y,s(0())),x,y) ify(false(),x,y) -> divByZeroError() ify(true(),x,y) -> if(ge(x,y),x,y) if(false(),x,y) -> 0() if(true(),x,y) -> s(div(minus(x,y),y)) div(plus(x,y),z) -> plus(div(x,z),div(y,z)) graph: if#(true(),x,y) -> div#(minus(x,y),y) -> div#(x,y) -> ge#(y,s(0())) if#(true(),x,y) -> div#(minus(x,y),y) -> div#(x,y) -> ify#(ge(y,s(0())),x,y) if#(true(),x,y) -> div#(minus(x,y),y) -> div#(plus(x,y),z) -> div#(y,z) if#(true(),x,y) -> div#(minus(x,y),y) -> div#(plus(x,y),z) -> div#(x,z) if#(true(),x,y) -> div#(minus(x,y),y) -> div#(plus(x,y),z) -> plus#(div(x,z),div(y,z)) if#(true(),x,y) -> minus#(x,y) -> minus#(0(),s(x)) -> minus#(0(),x) if#(true(),x,y) -> minus#(x,y) -> minus#(s(x),0()) -> minus#(x,0()) if#(true(),x,y) -> minus#(x,y) -> minus#(s(x),s(y)) -> minus#(x,y) ify#(true(),x,y) -> if#(ge(x,y),x,y) -> if#(true(),x,y) -> minus#(x,y) ify#(true(),x,y) -> if#(ge(x,y),x,y) -> if#(true(),x,y) -> div#(minus(x,y),y) ify#(true(),x,y) -> ge#(x,y) -> ge#(s(x),0()) -> ge#(x,0()) ify#(true(),x,y) -> ge#(x,y) -> ge#(0(),s(s(x))) -> ge#(0(),s(x)) ify#(true(),x,y) -> ge#(x,y) -> ge#(s(x),s(y)) -> ge#(x,y) div#(plus(x,y),z) -> div#(y,z) -> div#(x,y) -> ge#(y,s(0())) div#(plus(x,y),z) -> div#(y,z) -> div#(x,y) -> ify#(ge(y,s(0())),x,y) div#(plus(x,y),z) -> div#(y,z) -> div#(plus(x,y),z) -> div#(y,z) div#(plus(x,y),z) -> div#(y,z) -> div#(plus(x,y),z) -> div#(x,z) div#(plus(x,y),z) -> div#(y,z) -> div#(plus(x,y),z) -> plus#(div(x,z),div(y,z)) div#(plus(x,y),z) -> div#(x,z) -> div#(x,y) -> ge#(y,s(0())) div#(plus(x,y),z) -> div#(x,z) -> div#(x,y) -> ify#(ge(y,s(0())),x,y) div#(plus(x,y),z) -> div#(x,z) -> div#(plus(x,y),z) -> div#(y,z) div#(plus(x,y),z) -> div#(x,z) -> div#(plus(x,y),z) -> div#(x,z) div#(plus(x,y),z) -> div#(x,z) -> div#(plus(x,y),z) -> plus#(div(x,z),div(y,z)) div#(plus(x,y),z) -> plus#(div(x,z),div(y,z)) -> plus#(0(),s(x)) -> plus#(0(),x) div#(plus(x,y),z) -> plus#(div(x,z),div(y,z)) -> plus#(s(x),y) -> plus#(x,y) div#(x,y) -> ify#(ge(y,s(0())),x,y) -> ify#(true(),x,y) -> ge#(x,y) div#(x,y) -> ify#(ge(y,s(0())),x,y) -> ify#(true(),x,y) -> if#(ge(x,y),x,y) div#(x,y) -> ge#(y,s(0())) -> ge#(s(x),s(y)) -> ge#(x,y) plus#(s(x),y) -> plus#(x,y) -> plus#(0(),s(x)) -> plus#(0(),x) plus#(s(x),y) -> plus#(x,y) -> plus#(s(x),y) -> plus#(x,y) plus#(0(),s(x)) -> plus#(0(),x) -> plus#(0(),s(x)) -> plus#(0(),x) minus#(s(x),s(y)) -> minus#(x,y) -> minus#(0(),s(x)) -> minus#(0(),x) minus#(s(x),s(y)) -> minus#(x,y) -> minus#(s(x),0()) -> minus#(x,0()) minus#(s(x),s(y)) -> minus#(x,y) -> minus#(s(x),s(y)) -> minus#(x,y) minus#(s(x),0()) -> minus#(x,0()) -> minus#(s(x),0()) -> minus#(x,0()) minus#(0(),s(x)) -> minus#(0(),x) -> minus#(0(),s(x)) -> minus#(0(),x) ge#(s(x),s(y)) -> ge#(x,y) -> ge#(s(x),0()) -> ge#(x,0()) ge#(s(x),s(y)) -> ge#(x,y) -> ge#(0(),s(s(x))) -> ge#(0(),s(x)) ge#(s(x),s(y)) -> ge#(x,y) -> ge#(s(x),s(y)) -> ge#(x,y) ge#(s(x),0()) -> ge#(x,0()) -> ge#(s(x),0()) -> ge#(x,0()) ge#(0(),s(s(x))) -> ge#(0(),s(x)) -> ge#(0(),s(s(x))) -> ge#(0(),s(x)) Restore Modifier: DPs: ge#(s(x),0()) -> ge#(x,0()) ge#(0(),s(s(x))) -> ge#(0(),s(x)) ge#(s(x),s(y)) -> ge#(x,y) minus#(0(),s(x)) -> minus#(0(),x) minus#(s(x),0()) -> minus#(x,0()) minus#(s(x),s(y)) -> minus#(x,y) plus#(0(),s(x)) -> plus#(0(),x) plus#(s(x),y) -> plus#(x,y) div#(x,y) -> ge#(y,s(0())) div#(x,y) -> ify#(ge(y,s(0())),x,y) ify#(true(),x,y) -> ge#(x,y) ify#(true(),x,y) -> if#(ge(x,y),x,y) if#(true(),x,y) -> minus#(x,y) if#(true(),x,y) -> div#(minus(x,y),y) div#(plus(x,y),z) -> div#(y,z) div#(plus(x,y),z) -> div#(x,z) div#(plus(x,y),z) -> plus#(div(x,z),div(y,z)) TRS: ge(0(),0()) -> true() ge(s(x),0()) -> ge(x,0()) ge(0(),s(0())) -> false() ge(0(),s(s(x))) -> ge(0(),s(x)) ge(s(x),s(y)) -> ge(x,y) minus(0(),0()) -> 0() minus(0(),s(x)) -> minus(0(),x) minus(s(x),0()) -> s(minus(x,0())) minus(s(x),s(y)) -> minus(x,y) plus(0(),0()) -> 0() plus(0(),s(x)) -> s(plus(0(),x)) plus(s(x),y) -> s(plus(x,y)) div(x,y) -> ify(ge(y,s(0())),x,y) ify(false(),x,y) -> divByZeroError() ify(true(),x,y) -> if(ge(x,y),x,y) if(false(),x,y) -> 0() if(true(),x,y) -> s(div(minus(x,y),y)) div(plus(x,y),z) -> plus(div(x,z),div(y,z)) SCC Processor: #sccs: 9 #rules: 13 #arcs: 41/289 DPs: if#(true(),x,y) -> div#(minus(x,y),y) div#(plus(x,y),z) -> div#(x,z) div#(plus(x,y),z) -> div#(y,z) div#(x,y) -> ify#(ge(y,s(0())),x,y) ify#(true(),x,y) -> if#(ge(x,y),x,y) TRS: ge(0(),0()) -> true() ge(s(x),0()) -> ge(x,0()) ge(0(),s(0())) -> false() ge(0(),s(s(x))) -> ge(0(),s(x)) ge(s(x),s(y)) -> ge(x,y) minus(0(),0()) -> 0() minus(0(),s(x)) -> minus(0(),x) minus(s(x),0()) -> s(minus(x,0())) minus(s(x),s(y)) -> minus(x,y) plus(0(),0()) -> 0() plus(0(),s(x)) -> s(plus(0(),x)) plus(s(x),y) -> s(plus(x,y)) div(x,y) -> ify(ge(y,s(0())),x,y) ify(false(),x,y) -> divByZeroError() ify(true(),x,y) -> if(ge(x,y),x,y) if(false(),x,y) -> 0() if(true(),x,y) -> s(div(minus(x,y),y)) div(plus(x,y),z) -> plus(div(x,z),div(y,z)) Open DPs: ge#(s(x),s(y)) -> ge#(x,y) TRS: ge(0(),0()) -> true() ge(s(x),0()) -> ge(x,0()) ge(0(),s(0())) -> false() ge(0(),s(s(x))) -> ge(0(),s(x)) ge(s(x),s(y)) -> ge(x,y) minus(0(),0()) -> 0() minus(0(),s(x)) -> minus(0(),x) minus(s(x),0()) -> s(minus(x,0())) minus(s(x),s(y)) -> minus(x,y) plus(0(),0()) -> 0() plus(0(),s(x)) -> s(plus(0(),x)) plus(s(x),y) -> s(plus(x,y)) div(x,y) -> ify(ge(y,s(0())),x,y) ify(false(),x,y) -> divByZeroError() ify(true(),x,y) -> if(ge(x,y),x,y) if(false(),x,y) -> 0() if(true(),x,y) -> s(div(minus(x,y),y)) div(plus(x,y),z) -> plus(div(x,z),div(y,z)) Open DPs: ge#(s(x),0()) -> ge#(x,0()) TRS: ge(0(),0()) -> true() ge(s(x),0()) -> ge(x,0()) ge(0(),s(0())) -> false() ge(0(),s(s(x))) -> ge(0(),s(x)) ge(s(x),s(y)) -> ge(x,y) minus(0(),0()) -> 0() minus(0(),s(x)) -> minus(0(),x) minus(s(x),0()) -> s(minus(x,0())) minus(s(x),s(y)) -> minus(x,y) plus(0(),0()) -> 0() plus(0(),s(x)) -> s(plus(0(),x)) plus(s(x),y) -> s(plus(x,y)) div(x,y) -> ify(ge(y,s(0())),x,y) ify(false(),x,y) -> divByZeroError() ify(true(),x,y) -> if(ge(x,y),x,y) if(false(),x,y) -> 0() if(true(),x,y) -> s(div(minus(x,y),y)) div(plus(x,y),z) -> plus(div(x,z),div(y,z)) Open DPs: ge#(0(),s(s(x))) -> ge#(0(),s(x)) TRS: ge(0(),0()) -> true() ge(s(x),0()) -> ge(x,0()) ge(0(),s(0())) -> false() ge(0(),s(s(x))) -> ge(0(),s(x)) ge(s(x),s(y)) -> ge(x,y) minus(0(),0()) -> 0() minus(0(),s(x)) -> minus(0(),x) minus(s(x),0()) -> s(minus(x,0())) minus(s(x),s(y)) -> minus(x,y) plus(0(),0()) -> 0() plus(0(),s(x)) -> s(plus(0(),x)) plus(s(x),y) -> s(plus(x,y)) div(x,y) -> ify(ge(y,s(0())),x,y) ify(false(),x,y) -> divByZeroError() ify(true(),x,y) -> if(ge(x,y),x,y) if(false(),x,y) -> 0() if(true(),x,y) -> s(div(minus(x,y),y)) div(plus(x,y),z) -> plus(div(x,z),div(y,z)) Open DPs: minus#(s(x),s(y)) -> minus#(x,y) TRS: ge(0(),0()) -> true() ge(s(x),0()) -> ge(x,0()) ge(0(),s(0())) -> false() ge(0(),s(s(x))) -> ge(0(),s(x)) ge(s(x),s(y)) -> ge(x,y) minus(0(),0()) -> 0() minus(0(),s(x)) -> minus(0(),x) minus(s(x),0()) -> s(minus(x,0())) minus(s(x),s(y)) -> minus(x,y) plus(0(),0()) -> 0() plus(0(),s(x)) -> s(plus(0(),x)) plus(s(x),y) -> s(plus(x,y)) div(x,y) -> ify(ge(y,s(0())),x,y) ify(false(),x,y) -> divByZeroError() ify(true(),x,y) -> if(ge(x,y),x,y) if(false(),x,y) -> 0() if(true(),x,y) -> s(div(minus(x,y),y)) div(plus(x,y),z) -> plus(div(x,z),div(y,z)) Open DPs: minus#(0(),s(x)) -> minus#(0(),x) TRS: ge(0(),0()) -> true() ge(s(x),0()) -> ge(x,0()) ge(0(),s(0())) -> false() ge(0(),s(s(x))) -> ge(0(),s(x)) ge(s(x),s(y)) -> ge(x,y) minus(0(),0()) -> 0() minus(0(),s(x)) -> minus(0(),x) minus(s(x),0()) -> s(minus(x,0())) minus(s(x),s(y)) -> minus(x,y) plus(0(),0()) -> 0() plus(0(),s(x)) -> s(plus(0(),x)) plus(s(x),y) -> s(plus(x,y)) div(x,y) -> ify(ge(y,s(0())),x,y) ify(false(),x,y) -> divByZeroError() ify(true(),x,y) -> if(ge(x,y),x,y) if(false(),x,y) -> 0() if(true(),x,y) -> s(div(minus(x,y),y)) div(plus(x,y),z) -> plus(div(x,z),div(y,z)) Open DPs: minus#(s(x),0()) -> minus#(x,0()) TRS: ge(0(),0()) -> true() ge(s(x),0()) -> ge(x,0()) ge(0(),s(0())) -> false() ge(0(),s(s(x))) -> ge(0(),s(x)) ge(s(x),s(y)) -> ge(x,y) minus(0(),0()) -> 0() minus(0(),s(x)) -> minus(0(),x) minus(s(x),0()) -> s(minus(x,0())) minus(s(x),s(y)) -> minus(x,y) plus(0(),0()) -> 0() plus(0(),s(x)) -> s(plus(0(),x)) plus(s(x),y) -> s(plus(x,y)) div(x,y) -> ify(ge(y,s(0())),x,y) ify(false(),x,y) -> divByZeroError() ify(true(),x,y) -> if(ge(x,y),x,y) if(false(),x,y) -> 0() if(true(),x,y) -> s(div(minus(x,y),y)) div(plus(x,y),z) -> plus(div(x,z),div(y,z)) Open DPs: plus#(s(x),y) -> plus#(x,y) TRS: ge(0(),0()) -> true() ge(s(x),0()) -> ge(x,0()) ge(0(),s(0())) -> false() ge(0(),s(s(x))) -> ge(0(),s(x)) ge(s(x),s(y)) -> ge(x,y) minus(0(),0()) -> 0() minus(0(),s(x)) -> minus(0(),x) minus(s(x),0()) -> s(minus(x,0())) minus(s(x),s(y)) -> minus(x,y) plus(0(),0()) -> 0() plus(0(),s(x)) -> s(plus(0(),x)) plus(s(x),y) -> s(plus(x,y)) div(x,y) -> ify(ge(y,s(0())),x,y) ify(false(),x,y) -> divByZeroError() ify(true(),x,y) -> if(ge(x,y),x,y) if(false(),x,y) -> 0() if(true(),x,y) -> s(div(minus(x,y),y)) div(plus(x,y),z) -> plus(div(x,z),div(y,z)) Open DPs: plus#(0(),s(x)) -> plus#(0(),x) TRS: ge(0(),0()) -> true() ge(s(x),0()) -> ge(x,0()) ge(0(),s(0())) -> false() ge(0(),s(s(x))) -> ge(0(),s(x)) ge(s(x),s(y)) -> ge(x,y) minus(0(),0()) -> 0() minus(0(),s(x)) -> minus(0(),x) minus(s(x),0()) -> s(minus(x,0())) minus(s(x),s(y)) -> minus(x,y) plus(0(),0()) -> 0() plus(0(),s(x)) -> s(plus(0(),x)) plus(s(x),y) -> s(plus(x,y)) div(x,y) -> ify(ge(y,s(0())),x,y) ify(false(),x,y) -> divByZeroError() ify(true(),x,y) -> if(ge(x,y),x,y) if(false(),x,y) -> 0() if(true(),x,y) -> s(div(minus(x,y),y)) div(plus(x,y),z) -> plus(div(x,z),div(y,z)) Open