MAYBE Problem: eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) app(nil(),y) -> y app(add(n,x),y) -> add(n,app(x,y)) min(nil()) -> 0() min(add(n,x)) -> minIter(add(n,x),add(n,x),0()) minIter(nil(),add(n,y),m) -> minIter(add(n,y),add(n,y),s(m)) minIter(add(n,x),y,m) -> if_min(le(n,m),x,y,m) if_min(true(),x,y,m) -> m if_min(false(),x,y,m) -> minIter(x,y,m) head(add(n,x)) -> n tail(add(n,x)) -> x tail(nil()) -> nil() null(nil()) -> true() null(add(n,x)) -> false() rm(n,nil()) -> nil() rm(n,add(m,x)) -> if_rm(eq(n,m),n,add(m,x)) if_rm(true(),n,add(m,x)) -> rm(n,x) if_rm(false(),n,add(m,x)) -> add(m,rm(n,x)) minsort(nil(),nil()) -> nil() minsort(add(n,x),y) -> if_minsort(eq(n,min(add(n,x))),add(n,x),y) if_minsort(true(),add(n,x),y) -> add(n,minsort(app(rm(n,x),y),nil())) if_minsort(false(),add(n,x),y) -> minsort(x,add(n,y)) Proof: DP Processor: DPs: eq#(s(x),s(y)) -> eq#(x,y) le#(s(x),s(y)) -> le#(x,y) app#(add(n,x),y) -> app#(x,y) min#(add(n,x)) -> minIter#(add(n,x),add(n,x),0()) minIter#(nil(),add(n,y),m) -> minIter#(add(n,y),add(n,y),s(m)) minIter#(add(n,x),y,m) -> le#(n,m) minIter#(add(n,x),y,m) -> if_min#(le(n,m),x,y,m) if_min#(false(),x,y,m) -> minIter#(x,y,m) rm#(n,add(m,x)) -> eq#(n,m) rm#(n,add(m,x)) -> if_rm#(eq(n,m),n,add(m,x)) if_rm#(true(),n,add(m,x)) -> rm#(n,x) if_rm#(false(),n,add(m,x)) -> rm#(n,x) minsort#(add(n,x),y) -> min#(add(n,x)) minsort#(add(n,x),y) -> eq#(n,min(add(n,x))) minsort#(add(n,x),y) -> if_minsort#(eq(n,min(add(n,x))),add(n,x),y) if_minsort#(true(),add(n,x),y) -> rm#(n,x) if_minsort#(true(),add(n,x),y) -> app#(rm(n,x),y) if_minsort#(true(),add(n,x),y) -> minsort#(app(rm(n,x),y),nil()) if_minsort#(false(),add(n,x),y) -> minsort#(x,add(n,y)) TRS: eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) app(nil(),y) -> y app(add(n,x),y) -> add(n,app(x,y)) min(nil()) -> 0() min(add(n,x)) -> minIter(add(n,x),add(n,x),0()) minIter(nil(),add(n,y),m) -> minIter(add(n,y),add(n,y),s(m)) minIter(add(n,x),y,m) -> if_min(le(n,m),x,y,m) if_min(true(),x,y,m) -> m if_min(false(),x,y,m) -> minIter(x,y,m) head(add(n,x)) -> n tail(add(n,x)) -> x tail(nil()) -> nil() null(nil()) -> true() null(add(n,x)) -> false() rm(n,nil()) -> nil() rm(n,add(m,x)) -> if_rm(eq(n,m),n,add(m,x)) if_rm(true(),n,add(m,x)) -> rm(n,x) if_rm(false(),n,add(m,x)) -> add(m,rm(n,x)) minsort(nil(),nil()) -> nil() minsort(add(n,x),y) -> if_minsort(eq(n,min(add(n,x))),add(n,x),y) if_minsort(true(),add(n,x),y) -> add(n,minsort(app(rm(n,x),y),nil())) if_minsort(false(),add(n,x),y) -> minsort(x,add(n,y)) Usable Rule Processor: DPs: eq#(s(x),s(y)) -> eq#(x,y) le#(s(x),s(y)) -> le#(x,y) app#(add(n,x),y) -> app#(x,y) min#(add(n,x)) -> minIter#(add(n,x),add(n,x),0()) minIter#(nil(),add(n,y),m) -> minIter#(add(n,y),add(n,y),s(m)) minIter#(add(n,x),y,m) -> le#(n,m) minIter#(add(n,x),y,m) -> if_min#(le(n,m),x,y,m) if_min#(false(),x,y,m) -> minIter#(x,y,m) rm#(n,add(m,x)) -> eq#(n,m) rm#(n,add(m,x)) -> if_rm#(eq(n,m),n,add(m,x)) if_rm#(true(),n,add(m,x)) -> rm#(n,x) if_rm#(false(),n,add(m,x)) -> rm#(n,x) minsort#(add(n,x),y) -> min#(add(n,x)) minsort#(add(n,x),y) -> eq#(n,min(add(n,x))) minsort#(add(n,x),y) -> if_minsort#(eq(n,min(add(n,x))),add(n,x),y) if_minsort#(true(),add(n,x),y) -> rm#(n,x) if_minsort#(true(),add(n,x),y) -> app#(rm(n,x),y) if_minsort#(true(),add(n,x),y) -> minsort#(app(rm(n,x),y),nil()) if_minsort#(false(),add(n,x),y) -> minsort#(x,add(n,y)) TRS: f32(x,y) -> x f32(x,y) -> y le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) min(add(n,x)) -> minIter(add(n,x),add(n,x),0()) minIter(add(n,x),y,m) -> if_min(le(n,m),x,y,m) if_min(true(),x,y,m) -> m if_min(false(),x,y,m) -> minIter(x,y,m) minIter(nil(),add(n,y),m) -> minIter(add(n,y),add(n,y),s(m)) rm(n,nil()) -> nil() rm(n,add(m,x)) -> if_rm(eq(n,m),n,add(m,x)) if_rm(true(),n,add(m,x)) -> rm(n,x) if_rm(false(),n,add(m,x)) -> add(m,rm(n,x)) app(nil(),y) -> y app(add(n,x),y) -> add(n,app(x,y)) TDG Processor: DPs: eq#(s(x),s(y)) -> eq#(x,y) le#(s(x),s(y)) -> le#(x,y) app#(add(n,x),y) -> app#(x,y) min#(add(n,x)) -> minIter#(add(n,x),add(n,x),0()) minIter#(nil(),add(n,y),m) -> minIter#(add(n,y),add(n,y),s(m)) minIter#(add(n,x),y,m) -> le#(n,m) minIter#(add(n,x),y,m) -> if_min#(le(n,m),x,y,m) if_min#(false(),x,y,m) -> minIter#(x,y,m) rm#(n,add(m,x)) -> eq#(n,m) rm#(n,add(m,x)) -> if_rm#(eq(n,m),n,add(m,x)) if_rm#(true(),n,add(m,x)) -> rm#(n,x) if_rm#(false(),n,add(m,x)) -> rm#(n,x) minsort#(add(n,x),y) -> min#(add(n,x)) minsort#(add(n,x),y) -> eq#(n,min(add(n,x))) minsort#(add(n,x),y) -> if_minsort#(eq(n,min(add(n,x))),add(n,x),y) if_minsort#(true(),add(n,x),y) -> rm#(n,x) if_minsort#(true(),add(n,x),y) -> app#(rm(n,x),y) if_minsort#(true(),add(n,x),y) -> minsort#(app(rm(n,x),y),nil()) if_minsort#(false(),add(n,x),y) -> minsort#(x,add(n,y)) TRS: f32(x,y) -> x f32(x,y) -> y le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) min(add(n,x)) -> minIter(add(n,x),add(n,x),0()) minIter(add(n,x),y,m) -> if_min(le(n,m),x,y,m) if_min(true(),x,y,m) -> m if_min(false(),x,y,m) -> minIter(x,y,m) minIter(nil(),add(n,y),m) -> minIter(add(n,y),add(n,y),s(m)) rm(n,nil()) -> nil() rm(n,add(m,x)) -> if_rm(eq(n,m),n,add(m,x)) if_rm(true(),n,add(m,x)) -> rm(n,x) if_rm(false(),n,add(m,x)) -> add(m,rm(n,x)) app(nil(),y) -> y app(add(n,x),y) -> add(n,app(x,y)) graph: if_minsort#(false(),add(n,x),y) -> minsort#(x,add(n,y)) -> minsort#(add(n,x),y) -> if_minsort#(eq(n,min(add(n,x))),add(n,x),y) if_minsort#(false(),add(n,x),y) -> minsort#(x,add(n,y)) -> minsort#(add(n,x),y) -> eq#(n,min(add(n,x))) if_minsort#(false(),add(n,x),y) -> minsort#(x,add(n,y)) -> minsort#(add(n,x),y) -> min#(add(n,x)) if_minsort#(true(),add(n,x),y) -> minsort#(app(rm(n,x),y),nil()) -> minsort#(add(n,x),y) -> if_minsort#(eq(n,min(add(n,x))),add(n,x),y) if_minsort#(true(),add(n,x),y) -> minsort#(app(rm(n,x),y),nil()) -> minsort#(add(n,x),y) -> eq#(n,min(add(n,x))) if_minsort#(true(),add(n,x),y) -> minsort#(app(rm(n,x),y),nil()) -> minsort#(add(n,x),y) -> min#(add(n,x)) if_minsort#(true(),add(n,x),y) -> rm#(n,x) -> rm#(n,add(m,x)) -> if_rm#(eq(n,m),n,add(m,x)) if_minsort#(true(),add(n,x),y) -> rm#(n,x) -> rm#(n,add(m,x)) -> eq#(n,m) if_minsort#(true(),add(n,x),y) -> app#(rm(n,x),y) -> app#(add(n,x),y) -> app#(x,y) minsort#(add(n,x),y) -> if_minsort#(eq(n,min(add(n,x))),add(n,x),y) -> if_minsort#(false(),add(n,x),y) -> minsort#(x,add(n,y)) minsort#(add(n,x),y) -> if_minsort#(eq(n,min(add(n,x))),add(n,x),y) -> if_minsort#(true(),add(n,x),y) -> minsort#(app(rm(n,x),y),nil()) minsort#(add(n,x),y) -> if_minsort#(eq(n,min(add(n,x))),add(n,x),y) -> if_minsort#(true(),add(n,x),y) -> app#(rm(n,x),y) minsort#(add(n,x),y) -> if_minsort#(eq(n,min(add(n,x))),add(n,x),y) -> if_minsort#(true(),add(n,x),y) -> rm#(n,x) minsort#(add(n,x),y) -> min#(add(n,x)) -> min#(add(n,x)) -> minIter#(add(n,x),add(n,x),0()) minsort#(add(n,x),y) -> eq#(n,min(add(n,x))) -> eq#(s(x),s(y)) -> eq#(x,y) if_rm#(false(),n,add(m,x)) -> rm#(n,x) -> rm#(n,add(m,x)) -> if_rm#(eq(n,m),n,add(m,x)) if_rm#(false(),n,add(m,x)) -> rm#(n,x) -> rm#(n,add(m,x)) -> eq#(n,m) if_rm#(true(),n,add(m,x)) -> rm#(n,x) -> rm#(n,add(m,x)) -> if_rm#(eq(n,m),n,add(m,x)) if_rm#(true(),n,add(m,x)) -> rm#(n,x) -> rm#(n,add(m,x)) -> eq#(n,m) rm#(n,add(m,x)) -> if_rm#(eq(n,m),n,add(m,x)) -> if_rm#(false(),n,add(m,x)) -> rm#(n,x) rm#(n,add(m,x)) -> if_rm#(eq(n,m),n,add(m,x)) -> if_rm#(true(),n,add(m,x)) -> rm#(n,x) rm#(n,add(m,x)) -> eq#(n,m) -> eq#(s(x),s(y)) -> eq#(x,y) if_min#(false(),x,y,m) -> minIter#(x,y,m) -> minIter#(add(n,x),y,m) -> if_min#(le(n,m),x,y,m) if_min#(false(),x,y,m) -> minIter#(x,y,m) -> minIter#(add(n,x),y,m) -> le#(n,m) if_min#(false(),x,y,m) -> minIter#(x,y,m) -> minIter#(nil(),add(n,y),m) -> minIter#(add(n,y),add(n,y),s(m)) minIter#(add(n,x),y,m) -> if_min#(le(n,m),x,y,m) -> if_min#(false(),x,y,m) -> minIter#(x,y,m) minIter#(add(n,x),y,m) -> le#(n,m) -> le#(s(x),s(y)) -> le#(x,y) minIter#(nil(),add(n,y),m) -> minIter#(add(n,y),add(n,y),s(m)) -> minIter#(add(n,x),y,m) -> if_min#(le(n,m),x,y,m) minIter#(nil(),add(n,y),m) -> minIter#(add(n,y),add(n,y),s(m)) -> minIter#(add(n,x),y,m) -> le#(n,m) minIter#(nil(),add(n,y),m) -> minIter#(add(n,y),add(n,y),s(m)) -> minIter#(nil(),add(n,y),m) -> minIter#(add(n,y),add(n,y),s(m)) min#(add(n,x)) -> minIter#(add(n,x),add(n,x),0()) -> minIter#(add(n,x),y,m) -> if_min#(le(n,m),x,y,m) min#(add(n,x)) -> minIter#(add(n,x),add(n,x),0()) -> minIter#(add(n,x),y,m) -> le#(n,m) min#(add(n,x)) -> minIter#(add(n,x),add(n,x),0()) -> minIter#(nil(),add(n,y),m) -> minIter#(add(n,y),add(n,y),s(m)) app#(add(n,x),y) -> app#(x,y) -> app#(add(n,x),y) -> app#(x,y) le#(s(x),s(y)) -> le#(x,y) -> le#(s(x),s(y)) -> le#(x,y) eq#(s(x),s(y)) -> eq#(x,y) -> eq#(s(x),s(y)) -> eq#(x,y) EDG Processor: DPs: eq#(s(x),s(y)) -> eq#(x,y) le#(s(x),s(y)) -> le#(x,y) app#(add(n,x),y) -> app#(x,y) min#(add(n,x)) -> minIter#(add(n,x),add(n,x),0()) minIter#(nil(),add(n,y),m) -> minIter#(add(n,y),add(n,y),s(m)) minIter#(add(n,x),y,m) -> le#(n,m) minIter#(add(n,x),y,m) -> if_min#(le(n,m),x,y,m) if_min#(false(),x,y,m) -> minIter#(x,y,m) rm#(n,add(m,x)) -> eq#(n,m) rm#(n,add(m,x)) -> if_rm#(eq(n,m),n,add(m,x)) if_rm#(true(),n,add(m,x)) -> rm#(n,x) if_rm#(false(),n,add(m,x)) -> rm#(n,x) minsort#(add(n,x),y) -> min#(add(n,x)) minsort#(add(n,x),y) -> eq#(n,min(add(n,x))) minsort#(add(n,x),y) -> if_minsort#(eq(n,min(add(n,x))),add(n,x),y) if_minsort#(true(),add(n,x),y) -> rm#(n,x) if_minsort#(true(),add(n,x),y) -> app#(rm(n,x),y) if_minsort#(true(),add(n,x),y) -> minsort#(app(rm(n,x),y),nil()) if_minsort#(false(),add(n,x),y) -> minsort#(x,add(n,y)) TRS: f32(x,y) -> x f32(x,y) -> y le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) min(add(n,x)) -> minIter(add(n,x),add(n,x),0()) minIter(add(n,x),y,m) -> if_min(le(n,m),x,y,m) if_min(true(),x,y,m) -> m if_min(false(),x,y,m) -> minIter(x,y,m) minIter(nil(),add(n,y),m) -> minIter(add(n,y),add(n,y),s(m)) rm(n,nil()) -> nil() rm(n,add(m,x)) -> if_rm(eq(n,m),n,add(m,x)) if_rm(true(),n,add(m,x)) -> rm(n,x) if_rm(false(),n,add(m,x)) -> add(m,rm(n,x)) app(nil(),y) -> y app(add(n,x),y) -> add(n,app(x,y)) graph: if_minsort#(false(),add(n,x),y) -> minsort#(x,add(n,y)) -> minsort#(add(n,x),y) -> min#(add(n,x)) if_minsort#(false(),add(n,x),y) -> minsort#(x,add(n,y)) -> minsort#(add(n,x),y) -> eq#(n,min(add(n,x))) if_minsort#(false(),add(n,x),y) -> minsort#(x,add(n,y)) -> minsort#(add(n,x),y) -> if_minsort#(eq(n,min(add(n,x))),add(n,x),y) if_minsort#(true(),add(n,x),y) -> minsort#(app(rm(n,x),y),nil()) -> minsort#(add(n,x),y) -> min#(add(n,x)) if_minsort#(true(),add(n,x),y) -> minsort#(app(rm(n,x),y),nil()) -> minsort#(add(n,x),y) -> eq#(n,min(add(n,x))) if_minsort#(true(),add(n,x),y) -> minsort#(app(rm(n,x),y),nil()) -> minsort#(add(n,x),y) -> if_minsort#(eq(n,min(add(n,x))),add(n,x),y) if_minsort#(true(),add(n,x),y) -> rm#(n,x) -> rm#(n,add(m,x)) -> eq#(n,m) if_minsort#(true(),add(n,x),y) -> rm#(n,x) -> rm#(n,add(m,x)) -> if_rm#(eq(n,m),n,add(m,x)) if_minsort#(true(),add(n,x),y) -> app#(rm(n,x),y) -> app#(add(n,x),y) -> app#(x,y) minsort#(add(n,x),y) -> if_minsort#(eq(n,min(add(n,x))),add(n,x),y) -> if_minsort#(true(),add(n,x),y) -> rm#(n,x) minsort#(add(n,x),y) -> if_minsort#(eq(n,min(add(n,x))),add(n,x),y) -> if_minsort#(true(),add(n,x),y) -> app#(rm(n,x),y) minsort#(add(n,x),y) -> if_minsort#(eq(n,min(add(n,x))),add(n,x),y) -> if_minsort#(true(),add(n,x),y) -> minsort#(app(rm(n,x),y),nil()) minsort#(add(n,x),y) -> if_minsort#(eq(n,min(add(n,x))),add(n,x),y) -> if_minsort#(false(),add(n,x),y) -> minsort#(x,add(n,y)) minsort#(add(n,x),y) -> min#(add(n,x)) -> min#(add(n,x)) -> minIter#(add(n,x),add(n,x),0()) minsort#(add(n,x),y) -> eq#(n,min(add(n,x))) -> eq#(s(x),s(y)) -> eq#(x,y) if_rm#(false(),n,add(m,x)) -> rm#(n,x) -> rm#(n,add(m,x)) -> eq#(n,m) if_rm#(false(),n,add(m,x)) -> rm#(n,x) -> rm#(n,add(m,x)) -> if_rm#(eq(n,m),n,add(m,x)) if_rm#(true(),n,add(m,x)) -> rm#(n,x) -> rm#(n,add(m,x)) -> eq#(n,m) if_rm#(true(),n,add(m,x)) -> rm#(n,x) -> rm#(n,add(m,x)) -> if_rm#(eq(n,m),n,add(m,x)) rm#(n,add(m,x)) -> if_rm#(eq(n,m),n,add(m,x)) -> if_rm#(true(),n,add(m,x)) -> rm#(n,x) rm#(n,add(m,x)) -> if_rm#(eq(n,m),n,add(m,x)) -> if_rm#(false(),n,add(m,x)) -> rm#(n,x) rm#(n,add(m,x)) -> eq#(n,m) -> eq#(s(x),s(y)) -> eq#(x,y) if_min#(false(),x,y,m) -> minIter#(x,y,m) -> minIter#(nil(),add(n,y),m) -> minIter#(add(n,y),add(n,y),s(m)) if_min#(false(),x,y,m) -> minIter#(x,y,m) -> minIter#(add(n,x),y,m) -> le#(n,m) if_min#(false(),x,y,m) -> minIter#(x,y,m) -> minIter#(add(n,x),y,m) -> if_min#(le(n,m),x,y,m) minIter#(add(n,x),y,m) -> if_min#(le(n,m),x,y,m) -> if_min#(false(),x,y,m) -> minIter#(x,y,m) minIter#(add(n,x),y,m) -> le#(n,m) -> le#(s(x),s(y)) -> le#(x,y) minIter#(nil(),add(n,y),m) -> minIter#(add(n,y),add(n,y),s(m)) -> minIter#(add(n,x),y,m) -> le#(n,m) minIter#(nil(),add(n,y),m) -> minIter#(add(n,y),add(n,y),s(m)) -> minIter#(add(n,x),y,m) -> if_min#(le(n,m),x,y,m) min#(add(n,x)) -> minIter#(add(n,x),add(n,x),0()) -> minIter#(add(n,x),y,m) -> le#(n,m) min#(add(n,x)) -> minIter#(add(n,x),add(n,x),0()) -> minIter#(add(n,x),y,m) -> if_min#(le(n,m),x,y,m) app#(add(n,x),y) -> app#(x,y) -> app#(add(n,x),y) -> app#(x,y) le#(s(x),s(y)) -> le#(x,y) -> le#(s(x),s(y)) -> le#(x,y) eq#(s(x),s(y)) -> eq#(x,y) -> eq#(s(x),s(y)) -> eq#(x,y) Restore Modifier: DPs: eq#(s(x),s(y)) -> eq#(x,y) le#(s(x),s(y)) -> le#(x,y) app#(add(n,x),y) -> app#(x,y) min#(add(n,x)) -> minIter#(add(n,x),add(n,x),0()) minIter#(nil(),add(n,y),m) -> minIter#(add(n,y),add(n,y),s(m)) minIter#(add(n,x),y,m) -> le#(n,m) minIter#(add(n,x),y,m) -> if_min#(le(n,m),x,y,m) if_min#(false(),x,y,m) -> minIter#(x,y,m) rm#(n,add(m,x)) -> eq#(n,m) rm#(n,add(m,x)) -> if_rm#(eq(n,m),n,add(m,x)) if_rm#(true(),n,add(m,x)) -> rm#(n,x) if_rm#(false(),n,add(m,x)) -> rm#(n,x) minsort#(add(n,x),y) -> min#(add(n,x)) minsort#(add(n,x),y) -> eq#(n,min(add(n,x))) minsort#(add(n,x),y) -> if_minsort#(eq(n,min(add(n,x))),add(n,x),y) if_minsort#(true(),add(n,x),y) -> rm#(n,x) if_minsort#(true(),add(n,x),y) -> app#(rm(n,x),y) if_minsort#(true(),add(n,x),y) -> minsort#(app(rm(n,x),y),nil()) if_minsort#(false(),add(n,x),y) -> minsort#(x,add(n,y)) TRS: eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) app(nil(),y) -> y app(add(n,x),y) -> add(n,app(x,y)) min(nil()) -> 0() min(add(n,x)) -> minIter(add(n,x),add(n,x),0()) minIter(nil(),add(n,y),m) -> minIter(add(n,y),add(n,y),s(m)) minIter(add(n,x),y,m) -> if_min(le(n,m),x,y,m) if_min(true(),x,y,m) -> m if_min(false(),x,y,m) -> minIter(x,y,m) head(add(n,x)) -> n tail(add(n,x)) -> x tail(nil()) -> nil() null(nil()) -> true() null(add(n,x)) -> false() rm(n,nil()) -> nil() rm(n,add(m,x)) -> if_rm(eq(n,m),n,add(m,x)) if_rm(true(),n,add(m,x)) -> rm(n,x) if_rm(false(),n,add(m,x)) -> add(m,rm(n,x)) minsort(nil(),nil()) -> nil() minsort(add(n,x),y) -> if_minsort(eq(n,min(add(n,x))),add(n,x),y) if_minsort(true(),add(n,x),y) -> add(n,minsort(app(rm(n,x),y),nil())) if_minsort(false(),add(n,x),y) -> minsort(x,add(n,y)) SCC Processor: #sccs: 6 #rules: 12 #arcs: 34/361 DPs: if_minsort#(false(),add(n,x),y) -> minsort#(x,add(n,y)) minsort#(add(n,x),y) -> if_minsort#(eq(n,min(add(n,x))),add(n,x),y) if_minsort#(true(),add(n,x),y) -> minsort#(app(rm(n,x),y),nil()) TRS: eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) app(nil(),y) -> y app(add(n,x),y) -> add(n,app(x,y)) min(nil()) -> 0() min(add(n,x)) -> minIter(add(n,x),add(n,x),0()) minIter(nil(),add(n,y),m) -> minIter(add(n,y),add(n,y),s(m)) minIter(add(n,x),y,m) -> if_min(le(n,m),x,y,m) if_min(true(),x,y,m) -> m if_min(false(),x,y,m) -> minIter(x,y,m) head(add(n,x)) -> n tail(add(n,x)) -> x tail(nil()) -> nil() null(nil()) -> true() null(add(n,x)) -> false() rm(n,nil()) -> nil() rm(n,add(m,x)) -> if_rm(eq(n,m),n,add(m,x)) if_rm(true(),n,add(m,x)) -> rm(n,x) if_rm(false(),n,add(m,x)) -> add(m,rm(n,x)) minsort(nil(),nil()) -> nil() minsort(add(n,x),y) -> if_minsort(eq(n,min(add(n,x))),add(n,x),y) if_minsort(true(),add(n,x),y) -> add(n,minsort(app(rm(n,x),y),nil())) if_minsort(false(),add(n,x),y) -> minsort(x,add(n,y)) Matrix Interpretation Processor: dimension: 1 interpretation: [if_minsort#](x0, x1, x2) = x1 + x2, [minsort#](x0, x1) = x0 + x1, [if_minsort](x0, x1, x2) = x1 + x2, [minsort](x0, x1) = x0 + x1, [if_rm](x0, x1, x2) = x2, [rm](x0, x1) = x1, [null](x0) = 1, [tail](x0) = x0 + 1, [head](x0) = x0, [if_min](x0, x1, x2, x3) = x2 + x3, [minIter](x0, x1, x2) = x1 + x2, [min](x0) = x0, [add](x0, x1) = x0 + x1 + 1, [app](x0, x1) = x0 + x1, [nil] = 0, [le](x0, x1) = 0, [false] = 0, [s](x0) = x0, [true] = 0, [eq](x0, x1) = x1, [0] = 0 orientation: if_minsort#(false(),add(n,x),y) = n + x + y + 1 >= n + x + y + 1 = minsort#(x,add(n,y)) minsort#(add(n,x),y) = n + x + y + 1 >= n + x + y + 1 = if_minsort#(eq(n,min(add(n,x))),add(n,x),y) if_minsort#(true(),add(n,x),y) = n + x + y + 1 >= x + y = minsort#(app(rm(n,x),y),nil()) eq(0(),0()) = 0 >= 0 = true() eq(0(),s(x)) = x >= 0 = false() eq(s(x),0()) = 0 >= 0 = false() eq(s(x),s(y)) = y >= y = eq(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) app(nil(),y) = y >= y = y app(add(n,x),y) = n + x + y + 1 >= n + x + y + 1 = add(n,app(x,y)) min(nil()) = 0 >= 0 = 0() min(add(n,x)) = n + x + 1 >= n + x + 1 = minIter(add(n,x),add(n,x),0()) minIter(nil(),add(n,y),m) = m + n + y + 1 >= m + n + y + 1 = minIter(add(n,y),add(n,y),s(m)) minIter(add(n,x),y,m) = m + y >= m + y = if_min(le(n,m),x,y,m) if_min(true(),x,y,m) = m + y >= m = m if_min(false(),x,y,m) = m + y >= m + y = minIter(x,y,m) head(add(n,x)) = n + x + 1 >= n = n tail(add(n,x)) = n + x + 2 >= x = x tail(nil()) = 1 >= 0 = nil() null(nil()) = 1 >= 0 = true() null(add(n,x)) = 1 >= 0 = false() rm(n,nil()) = 0 >= 0 = nil() rm(n,add(m,x)) = m + x + 1 >= m + x + 1 = if_rm(eq(n,m),n,add(m,x)) if_rm(true(),n,add(m,x)) = m + x + 1 >= x = rm(n,x) if_rm(false(),n,add(m,x)) = m + x + 1 >= m + x + 1 = add(m,rm(n,x)) minsort(nil(),nil()) = 0 >= 0 = nil() minsort(add(n,x),y) = n + x + y + 1 >= n + x + y + 1 = if_minsort(eq(n,min(add(n,x))),add(n,x),y) if_minsort(true(),add(n,x),y) = n + x + y + 1 >= n + x + y + 1 = add(n,minsort(app(rm(n,x),y),nil())) if_minsort(false(),add(n,x),y) = n + x + y + 1 >= n + x + y + 1 = minsort(x,add(n,y)) problem: DPs: if_minsort#(false(),add(n,x),y) -> minsort#(x,add(n,y)) minsort#(add(n,x),y) -> if_minsort#(eq(n,min(add(n,x))),add(n,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) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) app(nil(),y) -> y app(add(n,x),y) -> add(n,app(x,y)) min(nil()) -> 0() min(add(n,x)) -> minIter(add(n,x),add(n,x),0()) minIter(nil(),add(n,y),m) -> minIter(add(n,y),add(n,y),s(m)) minIter(add(n,x),y,m) -> if_min(le(n,m),x,y,m) if_min(true(),x,y,m) -> m if_min(false(),x,y,m) -> minIter(x,y,m) head(add(n,x)) -> n tail(add(n,x)) -> x tail(nil()) -> nil() null(nil()) -> true() null(add(n,x)) -> false() rm(n,nil()) -> nil() rm(n,add(m,x)) -> if_rm(eq(n,m),n,add(m,x)) if_rm(true(),n,add(m,x)) -> rm(n,x) if_rm(false(),n,add(m,x)) -> add(m,rm(n,x)) minsort(nil(),nil()) -> nil() minsort(add(n,x),y) -> if_minsort(eq(n,min(add(n,x))),add(n,x),y) if_minsort(true(),add(n,x),y) -> add(n,minsort(app(rm(n,x),y),nil())) if_minsort(false(),add(n,x),y) -> minsort(x,add(n,y)) Matrix Interpretation Processor: dimension: 1 interpretation: [if_minsort#](x0, x1, x2) = x1 + 1, [minsort#](x0, x1) = x0 + 1, [if_minsort](x0, x1, x2) = x1 + x2, [minsort](x0, x1) = x0 + x1, [if_rm](x0, x1, x2) = x2, [rm](x0, x1) = x1, [null](x0) = 0, [tail](x0) = x0 + 1, [head](x0) = x0, [if_min](x0, x1, x2, x3) = x3, [minIter](x0, x1, x2) = x2, [min](x0) = 0, [add](x0, x1) = x0 + x1 + 1, [app](x0, x1) = x0 + x1, [nil] = 0, [le](x0, x1) = 1, [false] = 0, [s](x0) = 0, [true] = 0, [eq](x0, x1) = 0, [0] = 0 orientation: if_minsort#(false(),add(n,x),y) = n + x + 2 >= x + 1 = minsort#(x,add(n,y)) minsort#(add(n,x),y) = n + x + 2 >= n + x + 2 = if_minsort#(eq(n,min(add(n,x))),add(n,x),y) eq(0(),0()) = 0 >= 0 = true() eq(0(),s(x)) = 0 >= 0 = false() eq(s(x),0()) = 0 >= 0 = false() eq(s(x),s(y)) = 0 >= 0 = eq(x,y) le(0(),y) = 1 >= 0 = true() le(s(x),0()) = 1 >= 0 = false() le(s(x),s(y)) = 1 >= 1 = le(x,y) app(nil(),y) = y >= y = y app(add(n,x),y) = n + x + y + 1 >= n + x + y + 1 = add(n,app(x,y)) min(nil()) = 0 >= 0 = 0() min(add(n,x)) = 0 >= 0 = minIter(add(n,x),add(n,x),0()) minIter(nil(),add(n,y),m) = m >= 0 = minIter(add(n,y),add(n,y),s(m)) minIter(add(n,x),y,m) = m >= m = if_min(le(n,m),x,y,m) if_min(true(),x,y,m) = m >= m = m if_min(false(),x,y,m) = m >= m = minIter(x,y,m) head(add(n,x)) = n + x + 1 >= n = n tail(add(n,x)) = n + x + 2 >= x = x tail(nil()) = 1 >= 0 = nil() null(nil()) = 0 >= 0 = true() null(add(n,x)) = 0 >= 0 = false() rm(n,nil()) = 0 >= 0 = nil() rm(n,add(m,x)) = m + x + 1 >= m + x + 1 = if_rm(eq(n,m),n,add(m,x)) if_rm(true(),n,add(m,x)) = m + x + 1 >= x = rm(n,x) if_rm(false(),n,add(m,x)) = m + x + 1 >= m + x + 1 = add(m,rm(n,x)) minsort(nil(),nil()) = 0 >= 0 = nil() minsort(add(n,x),y) = n + x + y + 1 >= n + x + y + 1 = if_minsort(eq(n,min(add(n,x))),add(n,x),y) if_minsort(true(),add(n,x),y) = n + x + y + 1 >= n + x + y + 1 = add(n,minsort(app(rm(n,x),y),nil())) if_minsort(false(),add(n,x),y) = n + x + y + 1 >= n + x + y + 1 = minsort(x,add(n,y)) problem: DPs: minsort#(add(n,x),y) -> if_minsort#(eq(n,min(add(n,x))),add(n,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) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) app(nil(),y) -> y app(add(n,x),y) -> add(n,app(x,y)) min(nil()) -> 0() min(add(n,x)) -> minIter(add(n,x),add(n,x),0()) minIter(nil(),add(n,y),m) -> minIter(add(n,y),add(n,y),s(m)) minIter(add(n,x),y,m) -> if_min(le(n,m),x,y,m) if_min(true(),x,y,m) -> m if_min(false(),x,y,m) -> minIter(x,y,m) head(add(n,x)) -> n tail(add(n,x)) -> x tail(nil()) -> nil() null(nil()) -> true() null(add(n,x)) -> false() rm(n,nil()) -> nil() rm(n,add(m,x)) -> if_rm(eq(n,m),n,add(m,x)) if_rm(true(),n,add(m,x)) -> rm(n,x) if_rm(false(),n,add(m,x)) -> add(m,rm(n,x)) minsort(nil(),nil()) -> nil() minsort(add(n,x),y) -> if_minsort(eq(n,min(add(n,x))),add(n,x),y) if_minsort(true(),add(n,x),y) -> add(n,minsort(app(rm(n,x),y),nil())) if_minsort(false(),add(n,x),y) -> minsort(x,add(n,y)) Matrix Interpretation Processor: dimension: 1 interpretation: [if_minsort#](x0, x1, x2) = 0, [minsort#](x0, x1) = 1, [if_minsort](x0, x1, x2) = x1 + x2, [minsort](x0, x1) = x0 + x1, [if_rm](x0, x1, x2) = x2, [rm](x0, x1) = x1, [null](x0) = 0, [tail](x0) = x0, [head](x0) = x0, [if_min](x0, x1, x2, x3) = x3, [minIter](x0, x1, x2) = x2, [min](x0) = 0, [add](x0, x1) = x0 + x1, [app](x0, x1) = x0 + x1, [nil] = 0, [le](x0, x1) = 0, [false] = 0, [s](x0) = x0, [true] = 0, [eq](x0, x1) = 0, [0] = 0 orientation: minsort#(add(n,x),y) = 1 >= 0 = if_minsort#(eq(n,min(add(n,x))),add(n,x),y) eq(0(),0()) = 0 >= 0 = true() eq(0(),s(x)) = 0 >= 0 = false() eq(s(x),0()) = 0 >= 0 = false() eq(s(x),s(y)) = 0 >= 0 = eq(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) app(nil(),y) = y >= y = y app(add(n,x),y) = n + x + y >= n + x + y = add(n,app(x,y)) min(nil()) = 0 >= 0 = 0() min(add(n,x)) = 0 >= 0 = minIter(add(n,x),add(n,x),0()) minIter(nil(),add(n,y),m) = m >= m = minIter(add(n,y),add(n,y),s(m)) minIter(add(n,x),y,m) = m >= m = if_min(le(n,m),x,y,m) if_min(true(),x,y,m) = m >= m = m if_min(false(),x,y,m) = m >= m = minIter(x,y,m) head(add(n,x)) = n + x >= n = n tail(add(n,x)) = n + x >= x = x tail(nil()) = 0 >= 0 = nil() null(nil()) = 0 >= 0 = true() null(add(n,x)) = 0 >= 0 = false() rm(n,nil()) = 0 >= 0 = nil() rm(n,add(m,x)) = m + x >= m + x = if_rm(eq(n,m),n,add(m,x)) if_rm(true(),n,add(m,x)) = m + x >= x = rm(n,x) if_rm(false(),n,add(m,x)) = m + x >= m + x = add(m,rm(n,x)) minsort(nil(),nil()) = 0 >= 0 = nil() minsort(add(n,x),y) = n + x + y >= n + x + y = if_minsort(eq(n,min(add(n,x))),add(n,x),y) if_minsort(true(),add(n,x),y) = n + x + y >= n + x + y = add(n,minsort(app(rm(n,x),y),nil())) if_minsort(false(),add(n,x),y) = n + x + y >= n + x + y = minsort(x,add(n,y)) 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) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) app(nil(),y) -> y app(add(n,x),y) -> add(n,app(x,y)) min(nil()) -> 0() min(add(n,x)) -> minIter(add(n,x),add(n,x),0()) minIter(nil(),add(n,y),m) -> minIter(add(n,y),add(n,y),s(m)) minIter(add(n,x),y,m) -> if_min(le(n,m),x,y,m) if_min(true(),x,y,m) -> m if_min(false(),x,y,m) -> minIter(x,y,m) head(add(n,x)) -> n tail(add(n,x)) -> x tail(nil()) -> nil() null(nil()) -> true() null(add(n,x)) -> false() rm(n,nil()) -> nil() rm(n,add(m,x)) -> if_rm(eq(n,m),n,add(m,x)) if_rm(true(),n,add(m,x)) -> rm(n,x) if_rm(false(),n,add(m,x)) -> add(m,rm(n,x)) minsort(nil(),nil()) -> nil() minsort(add(n,x),y) -> if_minsort(eq(n,min(add(n,x))),add(n,x),y) if_minsort(true(),add(n,x),y) -> add(n,minsort(app(rm(n,x),y),nil())) if_minsort(false(),add(n,x),y) -> minsort(x,add(n,y)) Qed DPs: rm#(n,add(m,x)) -> if_rm#(eq(n,m),n,add(m,x)) if_rm#(false(),n,add(m,x)) -> rm#(n,x) if_rm#(true(),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) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) app(nil(),y) -> y app(add(n,x),y) -> add(n,app(x,y)) min(nil()) -> 0() min(add(n,x)) -> minIter(add(n,x),add(n,x),0()) minIter(nil(),add(n,y),m) -> minIter(add(n,y),add(n,y),s(m)) minIter(add(n,x),y,m) -> if_min(le(n,m),x,y,m) if_min(true(),x,y,m) -> m if_min(false(),x,y,m) -> minIter(x,y,m) head(add(n,x)) -> n tail(add(n,x)) -> x tail(nil()) -> nil() null(nil()) -> true() null(add(n,x)) -> false() rm(n,nil()) -> nil() rm(n,add(m,x)) -> if_rm(eq(n,m),n,add(m,x)) if_rm(true(),n,add(m,x)) -> rm(n,x) if_rm(false(),n,add(m,x)) -> add(m,rm(n,x)) minsort(nil(),nil()) -> nil() minsort(add(n,x),y) -> if_minsort(eq(n,min(add(n,x))),add(n,x),y) if_minsort(true(),add(n,x),y) -> add(n,minsort(app(rm(n,x),y),nil())) if_minsort(false(),add(n,x),y) -> minsort(x,add(n,y)) Matrix Interpretation Processor: dimension: 1 interpretation: [if_rm#](x0, x1, x2) = x2, [rm#](x0, x1) = x1, [if_minsort](x0, x1, x2) = x1 + x2, [minsort](x0, x1) = x0 + x1, [if_rm](x0, x1, x2) = x2, [rm](x0, x1) = x1, [null](x0) = x0 + 1, [tail](x0) = x0 + 1, [head](x0) = x0, [if_min](x0, x1, x2, x3) = x3, [minIter](x0, x1, x2) = x2, [min](x0) = 0, [add](x0, x1) = x0 + x1 + 1, [app](x0, x1) = x0 + x1, [nil] = 0, [le](x0, x1) = 0, [false] = 0, [s](x0) = x0, [true] = 0, [eq](x0, x1) = 0, [0] = 0 orientation: rm#(n,add(m,x)) = m + x + 1 >= m + x + 1 = if_rm#(eq(n,m),n,add(m,x)) if_rm#(false(),n,add(m,x)) = m + x + 1 >= x = rm#(n,x) if_rm#(true(),n,add(m,x)) = m + x + 1 >= x = rm#(n,x) eq(0(),0()) = 0 >= 0 = true() eq(0(),s(x)) = 0 >= 0 = false() eq(s(x),0()) = 0 >= 0 = false() eq(s(x),s(y)) = 0 >= 0 = eq(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) app(nil(),y) = y >= y = y app(add(n,x),y) = n + x + y + 1 >= n + x + y + 1 = add(n,app(x,y)) min(nil()) = 0 >= 0 = 0() min(add(n,x)) = 0 >= 0 = minIter(add(n,x),add(n,x),0()) minIter(nil(),add(n,y),m) = m >= m = minIter(add(n,y),add(n,y),s(m)) minIter(add(n,x),y,m) = m >= m = if_min(le(n,m),x,y,m) if_min(true(),x,y,m) = m >= m = m if_min(false(),x,y,m) = m >= m = minIter(x,y,m) head(add(n,x)) = n + x + 1 >= n = n tail(add(n,x)) = n + x + 2 >= x = x tail(nil()) = 1 >= 0 = nil() null(nil()) = 1 >= 0 = true() null(add(n,x)) = n + x + 2 >= 0 = false() rm(n,nil()) = 0 >= 0 = nil() rm(n,add(m,x)) = m + x + 1 >= m + x + 1 = if_rm(eq(n,m),n,add(m,x)) if_rm(true(),n,add(m,x)) = m + x + 1 >= x = rm(n,x) if_rm(false(),n,add(m,x)) = m + x + 1 >= m + x + 1 = add(m,rm(n,x)) minsort(nil(),nil()) = 0 >= 0 = nil() minsort(add(n,x),y) = n + x + y + 1 >= n + x + y + 1 = if_minsort(eq(n,min(add(n,x))),add(n,x),y) if_minsort(true(),add(n,x),y) = n + x + y + 1 >= n + x + y + 1 = add(n,minsort(app(rm(n,x),y),nil())) if_minsort(false(),add(n,x),y) = n + x + y + 1 >= n + x + y + 1 = minsort(x,add(n,y)) problem: DPs: rm#(n,add(m,x)) -> if_rm#(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) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) app(nil(),y) -> y app(add(n,x),y) -> add(n,app(x,y)) min(nil()) -> 0() min(add(n,x)) -> minIter(add(n,x),add(n,x),0()) minIter(nil(),add(n,y),m) -> minIter(add(n,y),add(n,y),s(m)) minIter(add(n,x),y,m) -> if_min(le(n,m),x,y,m) if_min(true(),x,y,m) -> m if_min(false(),x,y,m) -> minIter(x,y,m) head(add(n,x)) -> n tail(add(n,x)) -> x tail(nil()) -> nil() null(nil()) -> true() null(add(n,x)) -> false() rm(n,nil()) -> nil() rm(n,add(m,x)) -> if_rm(eq(n,m),n,add(m,x)) if_rm(true(),n,add(m,x)) -> rm(n,x) if_rm(false(),n,add(m,x)) -> add(m,rm(n,x)) minsort(nil(),nil()) -> nil() minsort(add(n,x),y) -> if_minsort(eq(n,min(add(n,x))),add(n,x),y) if_minsort(true(),add(n,x),y) -> add(n,minsort(app(rm(n,x),y),nil())) if_minsort(false(),add(n,x),y) -> minsort(x,add(n,y)) Matrix Interpretation Processor: dimension: 1 interpretation: [if_rm#](x0, x1, x2) = 0, [rm#](x0, x1) = 1, [if_minsort](x0, x1, x2) = x1 + x2, [minsort](x0, x1) = x0 + x1, [if_rm](x0, x1, x2) = x2, [rm](x0, x1) = x1, [null](x0) = 0, [tail](x0) = x0, [head](x0) = x0, [if_min](x0, x1, x2, x3) = x3, [minIter](x0, x1, x2) = x2, [min](x0) = 0, [add](x0, x1) = x0 + x1, [app](x0, x1) = x0 + x1, [nil] = 0, [le](x0, x1) = 0, [false] = 0, [s](x0) = x0, [true] = 0, [eq](x0, x1) = 0, [0] = 0 orientation: rm#(n,add(m,x)) = 1 >= 0 = if_rm#(eq(n,m),n,add(m,x)) eq(0(),0()) = 0 >= 0 = true() eq(0(),s(x)) = 0 >= 0 = false() eq(s(x),0()) = 0 >= 0 = false() eq(s(x),s(y)) = 0 >= 0 = eq(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) app(nil(),y) = y >= y = y app(add(n,x),y) = n + x + y >= n + x + y = add(n,app(x,y)) min(nil()) = 0 >= 0 = 0() min(add(n,x)) = 0 >= 0 = minIter(add(n,x),add(n,x),0()) minIter(nil(),add(n,y),m) = m >= m = minIter(add(n,y),add(n,y),s(m)) minIter(add(n,x),y,m) = m >= m = if_min(le(n,m),x,y,m) if_min(true(),x,y,m) = m >= m = m if_min(false(),x,y,m) = m >= m = minIter(x,y,m) head(add(n,x)) = n + x >= n = n tail(add(n,x)) = n + x >= x = x tail(nil()) = 0 >= 0 = nil() null(nil()) = 0 >= 0 = true() null(add(n,x)) = 0 >= 0 = false() rm(n,nil()) = 0 >= 0 = nil() rm(n,add(m,x)) = m + x >= m + x = if_rm(eq(n,m),n,add(m,x)) if_rm(true(),n,add(m,x)) = m + x >= x = rm(n,x) if_rm(false(),n,add(m,x)) = m + x >= m + x = add(m,rm(n,x)) minsort(nil(),nil()) = 0 >= 0 = nil() minsort(add(n,x),y) = n + x + y >= n + x + y = if_minsort(eq(n,min(add(n,x))),add(n,x),y) if_minsort(true(),add(n,x),y) = n + x + y >= n + x + y = add(n,minsort(app(rm(n,x),y),nil())) if_minsort(false(),add(n,x),y) = n + x + y >= n + x + y = minsort(x,add(n,y)) 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) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) app(nil(),y) -> y app(add(n,x),y) -> add(n,app(x,y)) min(nil()) -> 0() min(add(n,x)) -> minIter(add(n,x),add(n,x),0()) minIter(nil(),add(n,y),m) -> minIter(add(n,y),add(n,y),s(m)) minIter(add(n,x),y,m) -> if_min(le(n,m),x,y,m) if_min(true(),x,y,m) -> m if_min(false(),x,y,m) -> minIter(x,y,m) head(add(n,x)) -> n tail(add(n,x)) -> x tail(nil()) -> nil() null(nil()) -> true() null(add(n,x)) -> false() rm(n,nil()) -> nil() rm(n,add(m,x)) -> if_rm(eq(n,m),n,add(m,x)) if_rm(true(),n,add(m,x)) -> rm(n,x) if_rm(false(),n,add(m,x)) -> add(m,rm(n,x)) minsort(nil(),nil()) -> nil() minsort(add(n,x),y) -> if_minsort(eq(n,min(add(n,x))),add(n,x),y) if_minsort(true(),add(n,x),y) -> add(n,minsort(app(rm(n,x),y),nil())) if_minsort(false(),add(n,x),y) -> minsort(x,add(n,y)) Qed DPs: app#(add(n,x),y) -> app#(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) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) app(nil(),y) -> y app(add(n,x),y) -> add(n,app(x,y)) min(nil()) -> 0() min(add(n,x)) -> minIter(add(n,x),add(n,x),0()) minIter(nil(),add(n,y),m) -> minIter(add(n,y),add(n,y),s(m)) minIter(add(n,x),y,m) -> if_min(le(n,m),x,y,m) if_min(true(),x,y,m) -> m if_min(false(),x,y,m) -> minIter(x,y,m) head(add(n,x)) -> n tail(add(n,x)) -> x tail(nil()) -> nil() null(nil()) -> true() null(add(n,x)) -> false() rm(n,nil()) -> nil() rm(n,add(m,x)) -> if_rm(eq(n,m),n,add(m,x)) if_rm(true(),n,add(m,x)) -> rm(n,x) if_rm(false(),n,add(m,x)) -> add(m,rm(n,x)) minsort(nil(),nil()) -> nil() minsort(add(n,x),y) -> if_minsort(eq(n,min(add(n,x))),add(n,x),y) if_minsort(true(),add(n,x),y) -> add(n,minsort(app(rm(n,x),y),nil())) if_minsort(false(),add(n,x),y) -> minsort(x,add(n,y)) Matrix Interpretation Processor: dimension: 1 interpretation: [app#](x0, x1) = x0 + 1, [if_minsort](x0, x1, x2) = x1 + x2, [minsort](x0, x1) = x0 + x1, [if_rm](x0, x1, x2) = x2, [rm](x0, x1) = x1, [null](x0) = 0, [tail](x0) = x0, [head](x0) = x0, [if_min](x0, x1, x2, x3) = x3, [minIter](x0, x1, x2) = x2, [min](x0) = 0, [add](x0, x1) = x0 + x1 + 1, [app](x0, x1) = x0 + x1, [nil] = 0, [le](x0, x1) = 1, [false] = 0, [s](x0) = x0, [true] = 0, [eq](x0, x1) = 0, [0] = 0 orientation: app#(add(n,x),y) = n + x + 2 >= x + 1 = app#(x,y) eq(0(),0()) = 0 >= 0 = true() eq(0(),s(x)) = 0 >= 0 = false() eq(s(x),0()) = 0 >= 0 = false() eq(s(x),s(y)) = 0 >= 0 = eq(x,y) le(0(),y) = 1 >= 0 = true() le(s(x),0()) = 1 >= 0 = false() le(s(x),s(y)) = 1 >= 1 = le(x,y) app(nil(),y) = y >= y = y app(add(n,x),y) = n + x + y + 1 >= n + x + y + 1 = add(n,app(x,y)) min(nil()) = 0 >= 0 = 0() min(add(n,x)) = 0 >= 0 = minIter(add(n,x),add(n,x),0()) minIter(nil(),add(n,y),m) = m >= m = minIter(add(n,y),add(n,y),s(m)) minIter(add(n,x),y,m) = m >= m = if_min(le(n,m),x,y,m) if_min(true(),x,y,m) = m >= m = m if_min(false(),x,y,m) = m >= m = minIter(x,y,m) head(add(n,x)) = n + x + 1 >= n = n tail(add(n,x)) = n + x + 1 >= x = x tail(nil()) = 0 >= 0 = nil() null(nil()) = 0 >= 0 = true() null(add(n,x)) = 0 >= 0 = false() rm(n,nil()) = 0 >= 0 = nil() rm(n,add(m,x)) = m + x + 1 >= m + x + 1 = if_rm(eq(n,m),n,add(m,x)) if_rm(true(),n,add(m,x)) = m + x + 1 >= x = rm(n,x) if_rm(false(),n,add(m,x)) = m + x + 1 >= m + x + 1 = add(m,rm(n,x)) minsort(nil(),nil()) = 0 >= 0 = nil() minsort(add(n,x),y) = n + x + y + 1 >= n + x + y + 1 = if_minsort(eq(n,min(add(n,x))),add(n,x),y) if_minsort(true(),add(n,x),y) = n + x + y + 1 >= n + x + y + 1 = add(n,minsort(app(rm(n,x),y),nil())) if_minsort(false(),add(n,x),y) = n + x + y + 1 >= n + x + y + 1 = minsort(x,add(n,y)) 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) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) app(nil(),y) -> y app(add(n,x),y) -> add(n,app(x,y)) min(nil()) -> 0() min(add(n,x)) -> minIter(add(n,x),add(n,x),0()) minIter(nil(),add(n,y),m) -> minIter(add(n,y),add(n,y),s(m)) minIter(add(n,x),y,m) -> if_min(le(n,m),x,y,m) if_min(true(),x,y,m) -> m if_min(false(),x,y,m) -> minIter(x,y,m) head(add(n,x)) -> n tail(add(n,x)) -> x tail(nil()) -> nil() null(nil()) -> true() null(add(n,x)) -> false() rm(n,nil()) -> nil() rm(n,add(m,x)) -> if_rm(eq(n,m),n,add(m,x)) if_rm(true(),n,add(m,x)) -> rm(n,x) if_rm(false(),n,add(m,x)) -> add(m,rm(n,x)) minsort(nil(),nil()) -> nil() minsort(add(n,x),y) -> if_minsort(eq(n,min(add(n,x))),add(n,x),y) if_minsort(true(),add(n,x),y) -> add(n,minsort(app(rm(n,x),y),nil())) if_minsort(false(),add(n,x),y) -> minsort(x,add(n,y)) Qed DPs: minIter#(add(n,x),y,m) -> if_min#(le(n,m),x,y,m) if_min#(false(),x,y,m) -> minIter#(x,y,m) minIter#(nil(),add(n,y),m) -> minIter#(add(n,y),add(n,y),s(m)) TRS: eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) app(nil(),y) -> y app(add(n,x),y) -> add(n,app(x,y)) min(nil()) -> 0() min(add(n,x)) -> minIter(add(n,x),add(n,x),0()) minIter(nil(),add(n,y),m) -> minIter(add(n,y),add(n,y),s(m)) minIter(add(n,x),y,m) -> if_min(le(n,m),x,y,m) if_min(true(),x,y,m) -> m if_min(false(),x,y,m) -> minIter(x,y,m) head(add(n,x)) -> n tail(add(n,x)) -> x tail(nil()) -> nil() null(nil()) -> true() null(add(n,x)) -> false() rm(n,nil()) -> nil() rm(n,add(m,x)) -> if_rm(eq(n,m),n,add(m,x)) if_rm(true(),n,add(m,x)) -> rm(n,x) if_rm(false(),n,add(m,x)) -> add(m,rm(n,x)) minsort(nil(),nil()) -> nil() minsort(add(n,x),y) -> if_minsort(eq(n,min(add(n,x))),add(n,x),y) if_minsort(true(),add(n,x),y) -> add(n,minsort(app(rm(n,x),y),nil())) if_minsort(false(),add(n,x),y) -> minsort(x,add(n,y)) Open DPs: le#(s(x),s(y)) -> le#(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) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) app(nil(),y) -> y app(add(n,x),y) -> add(n,app(x,y)) min(nil()) -> 0() min(add(n,x)) -> minIter(add(n,x),add(n,x),0()) minIter(nil(),add(n,y),m) -> minIter(add(n,y),add(n,y),s(m)) minIter(add(n,x),y,m) -> if_min(le(n,m),x,y,m) if_min(true(),x,y,m) -> m if_min(false(),x,y,m) -> minIter(x,y,m) head(add(n,x)) -> n tail(add(n,x)) -> x tail(nil()) -> nil() null(nil()) -> true() null(add(n,x)) -> false() rm(n,nil()) -> nil() rm(n,add(m,x)) -> if_rm(eq(n,m),n,add(m,x)) if_rm(true(),n,add(m,x)) -> rm(n,x) if_rm(false(),n,add(m,x)) -> add(m,rm(n,x)) minsort(nil(),nil()) -> nil() minsort(add(n,x),y) -> if_minsort(eq(n,min(add(n,x))),add(n,x),y) if_minsort(true(),add(n,x),y) -> add(n,minsort(app(rm(n,x),y),nil())) if_minsort(false(),add(n,x),y) -> minsort(x,add(n,y)) Open 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) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) app(nil(),y) -> y app(add(n,x),y) -> add(n,app(x,y)) min(nil()) -> 0() min(add(n,x)) -> minIter(add(n,x),add(n,x),0()) minIter(nil(),add(n,y),m) -> minIter(add(n,y),add(n,y),s(m)) minIter(add(n,x),y,m) -> if_min(le(n,m),x,y,m) if_min(true(),x,y,m) -> m if_min(false(),x,y,m) -> minIter(x,y,m) head(add(n,x)) -> n tail(add(n,x)) -> x tail(nil()) -> nil() null(nil()) -> true() null(add(n,x)) -> false() rm(n,nil()) -> nil() rm(n,add(m,x)) -> if_rm(eq(n,m),n,add(m,x)) if_rm(true(),n,add(m,x)) -> rm(n,x) if_rm(false(),n,add(m,x)) -> add(m,rm(n,x)) minsort(nil(),nil()) -> nil() minsort(add(n,x),y) -> if_minsort(eq(n,min(add(n,x))),add(n,x),y) if_minsort(true(),add(n,x),y) -> add(n,minsort(app(rm(n,x),y),nil())) if_minsort(false(),add(n,x),y) -> minsort(x,add(n,y)) Open