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 Matrix Interpretation Processor: dimension: 1 interpretation: [id#](x0) = x0 + 1, [if3](x0, x1, x2) = x1 + 1, [if2](x0, x1, x2, x3) = x2 + 1, [if_mod](x0, x1, x2, x3, x4) = x3 + 1, [mod](x0, x1) = x0 + 1, [minus](x0, x1) = x0, [id](x0) = x0, [zero](x0) = 1, [false] = 1, [s](x0) = x0 + 1, [true] = 1, [le](x0, x1) = 1, [0] = 1 orientation: id#(s(x)) = x + 2 >= x + 1 = id#(x) le(0(),y) = 1 >= 1 = true() le(s(x),0()) = 1 >= 1 = false() le(s(x),s(y)) = 1 >= 1 = le(x,y) zero(0()) = 1 >= 1 = true() zero(s(x)) = 1 >= 1 = false() id(0()) = 1 >= 1 = 0() id(s(x)) = x + 1 >= x + 1 = s(id(x)) minus(x,0()) = x >= x = x minus(s(x),s(y)) = x + 1 >= x = minus(x,y) mod(x,y) = x + 1 >= x + 1 = if_mod(zero(x),zero(y),le(y,x),id(x),id(y)) if_mod(true(),b1,b2,x,y) = x + 1 >= 1 = 0() if_mod(false(),b1,b2,x,y) = x + 1 >= x + 1 = if2(b1,b2,x,y) if2(true(),b2,x,y) = x + 1 >= 1 = 0() if2(false(),b2,x,y) = x + 1 >= x + 1 = if3(b2,x,y) if3(true(),x,y) = x + 1 >= x + 1 = mod(minus(x,y),s(y)) if3(false(),x,y) = x + 1 >= x = x problem: DPs: 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 Qed 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 Matrix Interpretation Processor: dimension: 1 interpretation: [le#](x0, x1) = x0 + 1, [if3](x0, x1, x2) = x1, [if2](x0, x1, x2, x3) = x2, [if_mod](x0, x1, x2, x3, x4) = x3, [mod](x0, x1) = x0, [minus](x0, x1) = x0, [id](x0) = x0, [zero](x0) = 0, [false] = 0, [s](x0) = x0 + 1, [true] = 0, [le](x0, x1) = 0, [0] = 0 orientation: le#(s(x),s(y)) = x + 2 >= x + 1 = le#(x,y) le(0(),y) = 0 >= 0 = true() le(s(x),0()) = 0 >= 0 = false() le(s(x),s(y)) = 0 >= 0 = le(x,y) zero(0()) = 0 >= 0 = true() zero(s(x)) = 0 >= 0 = false() id(0()) = 0 >= 0 = 0() id(s(x)) = x + 1 >= x + 1 = s(id(x)) minus(x,0()) = x >= x = x minus(s(x),s(y)) = x + 1 >= x = minus(x,y) mod(x,y) = x >= x = if_mod(zero(x),zero(y),le(y,x),id(x),id(y)) if_mod(true(),b1,b2,x,y) = x >= 0 = 0() if_mod(false(),b1,b2,x,y) = x >= x = if2(b1,b2,x,y) if2(true(),b2,x,y) = x >= 0 = 0() if2(false(),b2,x,y) = x >= x = if3(b2,x,y) if3(true(),x,y) = x >= x = mod(minus(x,y),s(y)) if3(false(),x,y) = x >= x = x problem: DPs: 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 Qed 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 Matrix Interpretation Processor: dimension: 1 interpretation: [minus#](x0, x1) = x0 + 1, [if3](x0, x1, x2) = x1, [if2](x0, x1, x2, x3) = x2, [if_mod](x0, x1, x2, x3, x4) = x3, [mod](x0, x1) = x0, [minus](x0, x1) = x0, [id](x0) = x0, [zero](x0) = 0, [false] = 0, [s](x0) = x0 + 1, [true] = 0, [le](x0, x1) = 0, [0] = 0 orientation: minus#(s(x),s(y)) = x + 2 >= x + 1 = minus#(x,y) le(0(),y) = 0 >= 0 = true() le(s(x),0()) = 0 >= 0 = false() le(s(x),s(y)) = 0 >= 0 = le(x,y) zero(0()) = 0 >= 0 = true() zero(s(x)) = 0 >= 0 = false() id(0()) = 0 >= 0 = 0() id(s(x)) = x + 1 >= x + 1 = s(id(x)) minus(x,0()) = x >= x = x minus(s(x),s(y)) = x + 1 >= x = minus(x,y) mod(x,y) = x >= x = if_mod(zero(x),zero(y),le(y,x),id(x),id(y)) if_mod(true(),b1,b2,x,y) = x >= 0 = 0() if_mod(false(),b1,b2,x,y) = x >= x = if2(b1,b2,x,y) if2(true(),b2,x,y) = x >= 0 = 0() if2(false(),b2,x,y) = x >= x = if3(b2,x,y) if3(true(),x,y) = x >= x = mod(minus(x,y),s(y)) if3(false(),x,y) = x >= x = x problem: DPs: 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 Qed