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))) Arctic Interpretation Processor: dimension: 1 interpretation: [purge#](x0) = x0, [purge](x0) = 1x0, [ifrm](x0, x1, x2) = x0 + x2 + 0, [add](x0, x1) = x0 + 1x1 + 2, [rm](x0, x1) = x1, [nil] = 4, [false] = 4, [s](x0) = 4x0 + 4, [true] = 5, [eq](x0, x1) = x1 + 1, [0] = 5 orientation: purge#(add(N,X)) = N + 1X + 2 >= X = purge#(rm(N,X)) eq(0(),0()) = 5 >= 5 = true() eq(0(),s(X)) = 4X + 4 >= 4 = false() eq(s(X),0()) = 5 >= 4 = false() eq(s(X),s(Y)) = 4Y + 4 >= Y + 1 = eq(X,Y) rm(N,nil()) = 4 >= 4 = 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 + 5 >= X = rm(N,X) ifrm(false(),N,add(M,X)) = M + 1X + 4 >= M + 1X + 2 = add(M,rm(N,X)) purge(nil()) = 5 >= 4 = nil() purge(add(N,X)) = 1N + 2X + 3 >= N + 2X + 2 = add(N,purge(rm(N,X))) 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 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