MAYBE Problem: le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) zero(0()) -> true() zero(s(x)) -> false() id(0()) -> 0() id(s(x)) -> s(id(x)) minus(x,0()) -> x minus(s(x),s(y)) -> minus(x,y) mod(x,y) -> if_mod(zero(x),zero(y),le(y,x),id(x),id(y)) if_mod(true(),b1,b2,x,y) -> 0() if_mod(false(),b1,b2,x,y) -> if2(b1,b2,x,y) if2(true(),b2,x,y) -> 0() if2(false(),b2,x,y) -> if3(b2,x,y) if3(true(),x,y) -> mod(minus(x,y),s(y)) if3(false(),x,y) -> x Proof: DP Processor: DPs: le#(s(x),s(y)) -> le#(x,y) id#(s(x)) -> id#(x) minus#(s(x),s(y)) -> minus#(x,y) mod#(x,y) -> id#(y) mod#(x,y) -> id#(x) mod#(x,y) -> le#(y,x) mod#(x,y) -> zero#(y) mod#(x,y) -> zero#(x) mod#(x,y) -> if_mod#(zero(x),zero(y),le(y,x),id(x),id(y)) if_mod#(false(),b1,b2,x,y) -> if2#(b1,b2,x,y) if2#(false(),b2,x,y) -> if3#(b2,x,y) if3#(true(),x,y) -> minus#(x,y) if3#(true(),x,y) -> mod#(minus(x,y),s(y)) TRS: le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) zero(0()) -> true() zero(s(x)) -> false() id(0()) -> 0() id(s(x)) -> s(id(x)) minus(x,0()) -> x minus(s(x),s(y)) -> minus(x,y) mod(x,y) -> if_mod(zero(x),zero(y),le(y,x),id(x),id(y)) if_mod(true(),b1,b2,x,y) -> 0() if_mod(false(),b1,b2,x,y) -> if2(b1,b2,x,y) if2(true(),b2,x,y) -> 0() if2(false(),b2,x,y) -> if3(b2,x,y) if3(true(),x,y) -> mod(minus(x,y),s(y)) if3(false(),x,y) -> x Usable Rule Processor: DPs: le#(s(x),s(y)) -> le#(x,y) id#(s(x)) -> id#(x) minus#(s(x),s(y)) -> minus#(x,y) mod#(x,y) -> id#(y) mod#(x,y) -> id#(x) mod#(x,y) -> le#(y,x) mod#(x,y) -> zero#(y) mod#(x,y) -> zero#(x) mod#(x,y) -> if_mod#(zero(x),zero(y),le(y,x),id(x),id(y)) if_mod#(false(),b1,b2,x,y) -> if2#(b1,b2,x,y) if2#(false(),b2,x,y) -> if3#(b2,x,y) if3#(true(),x,y) -> minus#(x,y) if3#(true(),x,y) -> mod#(minus(x,y),s(y)) TRS: f20(x,y) -> x f20(x,y) -> y id(0()) -> 0() id(s(x)) -> s(id(x)) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) zero(0()) -> true() zero(s(x)) -> false() minus(x,0()) -> x minus(s(x),s(y)) -> minus(x,y) ADG Processor: DPs: le#(s(x),s(y)) -> le#(x,y) id#(s(x)) -> id#(x) minus#(s(x),s(y)) -> minus#(x,y) mod#(x,y) -> id#(y) mod#(x,y) -> id#(x) mod#(x,y) -> le#(y,x) mod#(x,y) -> zero#(y) mod#(x,y) -> zero#(x) mod#(x,y) -> if_mod#(zero(x),zero(y),le(y,x),id(x),id(y)) if_mod#(false(),b1,b2,x,y) -> if2#(b1,b2,x,y) if2#(false(),b2,x,y) -> if3#(b2,x,y) if3#(true(),x,y) -> minus#(x,y) if3#(true(),x,y) -> mod#(minus(x,y),s(y)) TRS: f20(x,y) -> x f20(x,y) -> y id(0()) -> 0() id(s(x)) -> s(id(x)) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) zero(0()) -> true() zero(s(x)) -> false() minus(x,0()) -> x minus(s(x),s(y)) -> minus(x,y) graph: if3#(true(),x,y) -> mod#(minus(x,y),s(y)) -> mod#(x,y) -> id#(y) if3#(true(),x,y) -> mod#(minus(x,y),s(y)) -> mod#(x,y) -> id#(x) if3#(true(),x,y) -> mod#(minus(x,y),s(y)) -> mod#(x,y) -> le#(y,x) if3#(true(),x,y) -> mod#(minus(x,y),s(y)) -> mod#(x,y) -> zero#(y) if3#(true(),x,y) -> mod#(minus(x,y),s(y)) -> mod#(x,y) -> zero#(x) if3#(true(),x,y) -> mod#(minus(x,y),s(y)) -> mod#(x,y) -> if_mod#(zero(x),zero(y),le(y,x),id(x),id(y)) if3#(true(),x,y) -> minus#(x,y) -> minus#(s(x),s(y)) -> minus#(x,y) if2#(false(),b2,x,y) -> if3#(b2,x,y) -> if3#(true(),x,y) -> minus#(x,y) if2#(false(),b2,x,y) -> if3#(b2,x,y) -> if3#(true(),x,y) -> mod#(minus(x,y),s(y)) if_mod#(false(),b1,b2,x,y) -> if2#(b1,b2,x,y) -> if2#(false(),b2,x,y) -> if3#(b2,x,y) mod#(x,y) -> if_mod#(zero(x),zero(y),le(y,x),id(x),id(y)) -> if_mod#(false(),b1,b2,x,y) -> if2#(b1,b2,x,y) mod#(x,y) -> id#(x) -> id#(s(x)) -> id#(x) mod#(x,y) -> id#(y) -> id#(s(x)) -> id#(x) mod#(x,y) -> le#(y,x) -> le#(s(x),s(y)) -> le#(x,y) minus#(s(x),s(y)) -> minus#(x,y) -> minus#(s(x),s(y)) -> minus#(x,y) id#(s(x)) -> id#(x) -> id#(s(x)) -> id#(x) le#(s(x),s(y)) -> le#(x,y) -> le#(s(x),s(y)) -> le#(x,y) Restore Modifier: DPs: le#(s(x),s(y)) -> le#(x,y) id#(s(x)) -> id#(x) minus#(s(x),s(y)) -> minus#(x,y) mod#(x,y) -> id#(y) mod#(x,y) -> id#(x) mod#(x,y) -> le#(y,x) mod#(x,y) -> zero#(y) mod#(x,y) -> zero#(x) mod#(x,y) -> if_mod#(zero(x),zero(y),le(y,x),id(x),id(y)) if_mod#(false(),b1,b2,x,y) -> if2#(b1,b2,x,y) if2#(false(),b2,x,y) -> if3#(b2,x,y) if3#(true(),x,y) -> minus#(x,y) if3#(true(),x,y) -> mod#(minus(x,y),s(y)) TRS: le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) zero(0()) -> true() zero(s(x)) -> false() id(0()) -> 0() id(s(x)) -> s(id(x)) minus(x,0()) -> x minus(s(x),s(y)) -> minus(x,y) mod(x,y) -> if_mod(zero(x),zero(y),le(y,x),id(x),id(y)) if_mod(true(),b1,b2,x,y) -> 0() if_mod(false(),b1,b2,x,y) -> if2(b1,b2,x,y) if2(true(),b2,x,y) -> 0() if2(false(),b2,x,y) -> if3(b2,x,y) if3(true(),x,y) -> mod(minus(x,y),s(y)) if3(false(),x,y) -> x SCC Processor: #sccs: 4 #rules: 7 #arcs: 17/169 DPs: if3#(true(),x,y) -> mod#(minus(x,y),s(y)) mod#(x,y) -> if_mod#(zero(x),zero(y),le(y,x),id(x),id(y)) if_mod#(false(),b1,b2,x,y) -> if2#(b1,b2,x,y) if2#(false(),b2,x,y) -> if3#(b2,x,y) TRS: le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) zero(0()) -> true() zero(s(x)) -> false() id(0()) -> 0() id(s(x)) -> s(id(x)) minus(x,0()) -> x minus(s(x),s(y)) -> minus(x,y) mod(x,y) -> if_mod(zero(x),zero(y),le(y,x),id(x),id(y)) if_mod(true(),b1,b2,x,y) -> 0() if_mod(false(),b1,b2,x,y) -> if2(b1,b2,x,y) if2(true(),b2,x,y) -> 0() if2(false(),b2,x,y) -> if3(b2,x,y) if3(true(),x,y) -> mod(minus(x,y),s(y)) if3(false(),x,y) -> x Open DPs: id#(s(x)) -> id#(x) TRS: le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) zero(0()) -> true() zero(s(x)) -> false() id(0()) -> 0() id(s(x)) -> s(id(x)) minus(x,0()) -> x minus(s(x),s(y)) -> minus(x,y) mod(x,y) -> if_mod(zero(x),zero(y),le(y,x),id(x),id(y)) if_mod(true(),b1,b2,x,y) -> 0() if_mod(false(),b1,b2,x,y) -> if2(b1,b2,x,y) if2(true(),b2,x,y) -> 0() if2(false(),b2,x,y) -> if3(b2,x,y) if3(true(),x,y) -> mod(minus(x,y),s(y)) if3(false(),x,y) -> x Open DPs: le#(s(x),s(y)) -> le#(x,y) TRS: le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) zero(0()) -> true() zero(s(x)) -> false() id(0()) -> 0() id(s(x)) -> s(id(x)) minus(x,0()) -> x minus(s(x),s(y)) -> minus(x,y) mod(x,y) -> if_mod(zero(x),zero(y),le(y,x),id(x),id(y)) if_mod(true(),b1,b2,x,y) -> 0() if_mod(false(),b1,b2,x,y) -> if2(b1,b2,x,y) if2(true(),b2,x,y) -> 0() if2(false(),b2,x,y) -> if3(b2,x,y) if3(true(),x,y) -> mod(minus(x,y),s(y)) if3(false(),x,y) -> x Open DPs: minus#(s(x),s(y)) -> minus#(x,y) TRS: le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) zero(0()) -> true() zero(s(x)) -> false() id(0()) -> 0() id(s(x)) -> s(id(x)) minus(x,0()) -> x minus(s(x),s(y)) -> minus(x,y) mod(x,y) -> if_mod(zero(x),zero(y),le(y,x),id(x),id(y)) if_mod(true(),b1,b2,x,y) -> 0() if_mod(false(),b1,b2,x,y) -> if2(b1,b2,x,y) if2(true(),b2,x,y) -> 0() if2(false(),b2,x,y) -> if3(b2,x,y) if3(true(),x,y) -> mod(minus(x,y),s(y)) if3(false(),x,y) -> x Open