YES Problem: eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) rm(N,nil()) -> nil() rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) purge(nil()) -> nil() purge(add(N,X)) -> add(N,purge(rm(N,X))) Proof: DP Processor: DPs: eq#(s(X),s(Y)) -> eq#(X,Y) rm#(N,add(M,X)) -> eq#(N,M) rm#(N,add(M,X)) -> ifrm#(eq(N,M),N,add(M,X)) ifrm#(true(),N,add(M,X)) -> rm#(N,X) ifrm#(false(),N,add(M,X)) -> rm#(N,X) purge#(add(N,X)) -> rm#(N,X) purge#(add(N,X)) -> purge#(rm(N,X)) TRS: eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) rm(N,nil()) -> nil() rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) purge(nil()) -> nil() purge(add(N,X)) -> add(N,purge(rm(N,X))) TDG Processor: DPs: eq#(s(X),s(Y)) -> eq#(X,Y) rm#(N,add(M,X)) -> eq#(N,M) rm#(N,add(M,X)) -> ifrm#(eq(N,M),N,add(M,X)) ifrm#(true(),N,add(M,X)) -> rm#(N,X) ifrm#(false(),N,add(M,X)) -> rm#(N,X) purge#(add(N,X)) -> rm#(N,X) purge#(add(N,X)) -> purge#(rm(N,X)) TRS: eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) rm(N,nil()) -> nil() rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) purge(nil()) -> nil() purge(add(N,X)) -> add(N,purge(rm(N,X))) graph: purge#(add(N,X)) -> purge#(rm(N,X)) -> purge#(add(N,X)) -> purge#(rm(N,X)) purge#(add(N,X)) -> purge#(rm(N,X)) -> purge#(add(N,X)) -> rm#(N,X) purge#(add(N,X)) -> rm#(N,X) -> rm#(N,add(M,X)) -> ifrm#(eq(N,M),N,add(M,X)) purge#(add(N,X)) -> rm#(N,X) -> rm#(N,add(M,X)) -> eq#(N,M) ifrm#(false(),N,add(M,X)) -> rm#(N,X) -> rm#(N,add(M,X)) -> ifrm#(eq(N,M),N,add(M,X)) ifrm#(false(),N,add(M,X)) -> rm#(N,X) -> rm#(N,add(M,X)) -> eq#(N,M) ifrm#(true(),N,add(M,X)) -> rm#(N,X) -> rm#(N,add(M,X)) -> ifrm#(eq(N,M),N,add(M,X)) ifrm#(true(),N,add(M,X)) -> rm#(N,X) -> rm#(N,add(M,X)) -> eq#(N,M) rm#(N,add(M,X)) -> ifrm#(eq(N,M),N,add(M,X)) -> ifrm#(false(),N,add(M,X)) -> rm#(N,X) rm#(N,add(M,X)) -> ifrm#(eq(N,M),N,add(M,X)) -> ifrm#(true(),N,add(M,X)) -> rm#(N,X) rm#(N,add(M,X)) -> eq#(N,M) -> eq#(s(X),s(Y)) -> eq#(X,Y) eq#(s(X),s(Y)) -> eq#(X,Y) -> eq#(s(X),s(Y)) -> eq#(X,Y) SCC Processor: #sccs: 3 #rules: 5 #arcs: 12/49 DPs: purge#(add(N,X)) -> purge#(rm(N,X)) TRS: eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) rm(N,nil()) -> nil() rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) purge(nil()) -> nil() purge(add(N,X)) -> add(N,purge(rm(N,X))) Usable Rule Processor: DPs: purge#(add(N,X)) -> purge#(rm(N,X)) TRS: rm(N,nil()) -> nil() rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) Arctic Interpretation Processor: dimension: 1 usable rules: rm(N,nil()) -> nil() rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) interpretation: [purge#](x0) = x0 + 0, [ifrm](x0, x1, x2) = x2 + 0, [add](x0, x1) = x0 + 1x1 + 2, [rm](x0, x1) = x1 + 0, [nil] = 5, [false] = 2, [s](x0) = x0, [true] = 0, [eq](x0, x1) = x0 + 4x1 + -5, [0] = 0 orientation: purge#(add(N,X)) = N + 1X + 2 >= X + 0 = purge#(rm(N,X)) rm(N,nil()) = 5 >= 5 = nil() rm(N,add(M,X)) = M + 1X + 2 >= M + 1X + 2 = ifrm(eq(N,M),N,add(M,X)) ifrm(true(),N,add(M,X)) = M + 1X + 2 >= X + 0 = rm(N,X) ifrm(false(),N,add(M,X)) = M + 1X + 2 >= M + 1X + 2 = add(M,rm(N,X)) eq(0(),0()) = 4 >= 0 = true() eq(0(),s(X)) = 4X + 0 >= 2 = false() eq(s(X),0()) = X + 4 >= 2 = false() eq(s(X),s(Y)) = X + 4Y + -5 >= X + 4Y + -5 = eq(X,Y) problem: DPs: TRS: rm(N,nil()) -> nil() rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) Qed DPs: rm#(N,add(M,X)) -> ifrm#(eq(N,M),N,add(M,X)) ifrm#(true(),N,add(M,X)) -> rm#(N,X) ifrm#(false(),N,add(M,X)) -> rm#(N,X) TRS: eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) rm(N,nil()) -> nil() rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) purge(nil()) -> nil() purge(add(N,X)) -> add(N,purge(rm(N,X))) Subterm Criterion Processor: simple projection: pi(rm#) = 1 pi(ifrm#) = 2 problem: DPs: rm#(N,add(M,X)) -> ifrm#(eq(N,M),N,add(M,X)) TRS: eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) rm(N,nil()) -> nil() rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) purge(nil()) -> nil() purge(add(N,X)) -> add(N,purge(rm(N,X))) SCC Processor: #sccs: 0 #rules: 0 #arcs: 4/1 DPs: eq#(s(X),s(Y)) -> eq#(X,Y) TRS: eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) rm(N,nil()) -> nil() rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) purge(nil()) -> nil() purge(add(N,X)) -> add(N,purge(rm(N,X))) Subterm Criterion Processor: simple projection: pi(eq#) = 1 problem: DPs: TRS: eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) rm(N,nil()) -> nil() rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) purge(nil()) -> nil() purge(add(N,X)) -> add(N,purge(rm(N,X))) Qed