MAYBE Problem: minus(x,x) -> 0() minus(0(),x) -> 0() minus(x,0()) -> x minus(s(x),s(y)) -> minus(x,y) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) quot(x,y) -> if_quot(minus(x,y),y,le(y,0()),le(y,x)) if_quot(x,y,true(),z) -> divByZeroError() if_quot(x,y,false(),true()) -> s(quot(x,y)) if_quot(x,y,false(),false()) -> 0() Proof: DP Processor: DPs: minus#(s(x),s(y)) -> minus#(x,y) le#(s(x),s(y)) -> le#(x,y) quot#(x,y) -> le#(y,x) quot#(x,y) -> le#(y,0()) quot#(x,y) -> minus#(x,y) quot#(x,y) -> if_quot#(minus(x,y),y,le(y,0()),le(y,x)) if_quot#(x,y,false(),true()) -> quot#(x,y) TRS: minus(x,x) -> 0() minus(0(),x) -> 0() minus(x,0()) -> x minus(s(x),s(y)) -> minus(x,y) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) quot(x,y) -> if_quot(minus(x,y),y,le(y,0()),le(y,x)) if_quot(x,y,true(),z) -> divByZeroError() if_quot(x,y,false(),true()) -> s(quot(x,y)) if_quot(x,y,false(),false()) -> 0() TDG Processor: DPs: minus#(s(x),s(y)) -> minus#(x,y) le#(s(x),s(y)) -> le#(x,y) quot#(x,y) -> le#(y,x) quot#(x,y) -> le#(y,0()) quot#(x,y) -> minus#(x,y) quot#(x,y) -> if_quot#(minus(x,y),y,le(y,0()),le(y,x)) if_quot#(x,y,false(),true()) -> quot#(x,y) TRS: minus(x,x) -> 0() minus(0(),x) -> 0() minus(x,0()) -> x minus(s(x),s(y)) -> minus(x,y) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) quot(x,y) -> if_quot(minus(x,y),y,le(y,0()),le(y,x)) if_quot(x,y,true(),z) -> divByZeroError() if_quot(x,y,false(),true()) -> s(quot(x,y)) if_quot(x,y,false(),false()) -> 0() graph: if_quot#(x,y,false(),true()) -> quot#(x,y) -> quot#(x,y) -> if_quot#(minus(x,y),y,le(y,0()),le(y,x)) if_quot#(x,y,false(),true()) -> quot#(x,y) -> quot#(x,y) -> minus#(x,y) if_quot#(x,y,false(),true()) -> quot#(x,y) -> quot#(x,y) -> le#(y,0()) if_quot#(x,y,false(),true()) -> quot#(x,y) -> quot#(x,y) -> le#(y,x) quot#(x,y) -> if_quot#(minus(x,y),y,le(y,0()),le(y,x)) -> if_quot#(x,y,false(),true()) -> quot#(x,y) quot#(x,y) -> le#(y,0()) -> le#(s(x),s(y)) -> le#(x,y) quot#(x,y) -> le#(y,x) -> le#(s(x),s(y)) -> le#(x,y) quot#(x,y) -> minus#(x,y) -> minus#(s(x),s(y)) -> minus#(x,y) le#(s(x),s(y)) -> le#(x,y) -> le#(s(x),s(y)) -> le#(x,y) minus#(s(x),s(y)) -> minus#(x,y) -> minus#(s(x),s(y)) -> minus#(x,y) SCC Processor: #sccs: 3 #rules: 4 #arcs: 10/49 DPs: if_quot#(x,y,false(),true()) -> quot#(x,y) quot#(x,y) -> if_quot#(minus(x,y),y,le(y,0()),le(y,x)) TRS: minus(x,x) -> 0() minus(0(),x) -> 0() minus(x,0()) -> x minus(s(x),s(y)) -> minus(x,y) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) quot(x,y) -> if_quot(minus(x,y),y,le(y,0()),le(y,x)) if_quot(x,y,true(),z) -> divByZeroError() if_quot(x,y,false(),true()) -> s(quot(x,y)) if_quot(x,y,false(),false()) -> 0() Open DPs: minus#(s(x),s(y)) -> minus#(x,y) TRS: minus(x,x) -> 0() minus(0(),x) -> 0() minus(x,0()) -> x minus(s(x),s(y)) -> minus(x,y) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) quot(x,y) -> if_quot(minus(x,y),y,le(y,0()),le(y,x)) if_quot(x,y,true(),z) -> divByZeroError() if_quot(x,y,false(),true()) -> s(quot(x,y)) if_quot(x,y,false(),false()) -> 0() Subterm Criterion Processor: simple projection: pi(minus#) = 1 problem: DPs: TRS: minus(x,x) -> 0() minus(0(),x) -> 0() minus(x,0()) -> x minus(s(x),s(y)) -> minus(x,y) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) quot(x,y) -> if_quot(minus(x,y),y,le(y,0()),le(y,x)) if_quot(x,y,true(),z) -> divByZeroError() if_quot(x,y,false(),true()) -> s(quot(x,y)) if_quot(x,y,false(),false()) -> 0() Qed DPs: le#(s(x),s(y)) -> le#(x,y) TRS: minus(x,x) -> 0() minus(0(),x) -> 0() minus(x,0()) -> x minus(s(x),s(y)) -> minus(x,y) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) quot(x,y) -> if_quot(minus(x,y),y,le(y,0()),le(y,x)) if_quot(x,y,true(),z) -> divByZeroError() if_quot(x,y,false(),true()) -> s(quot(x,y)) if_quot(x,y,false(),false()) -> 0() Subterm Criterion Processor: simple projection: pi(le#) = 1 problem: DPs: TRS: minus(x,x) -> 0() minus(0(),x) -> 0() minus(x,0()) -> x minus(s(x),s(y)) -> minus(x,y) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) quot(x,y) -> if_quot(minus(x,y),y,le(y,0()),le(y,x)) if_quot(x,y,true(),z) -> divByZeroError() if_quot(x,y,false(),true()) -> s(quot(x,y)) if_quot(x,y,false(),false()) -> 0() Qed