/export/starexec/sandbox/solver/bin/starexec_run_ttt2-1.17+nonreach /export/starexec/sandbox/benchmark/theBenchmark.xml /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- YES Problem: eq(0(),0()) -> true() eq(0(),s(m)) -> false() eq(s(n),0()) -> false() eq(s(n),s(m)) -> eq(n,m) le(0(),m) -> true() le(s(n),0()) -> false() le(s(n),s(m)) -> le(n,m) min(cons(x,nil())) -> x min(cons(n,cons(m,x))) -> if_min(le(n,m),cons(n,cons(m,x))) if_min(true(),cons(n,cons(m,x))) -> min(cons(n,x)) if_min(false(),cons(n,cons(m,x))) -> min(cons(m,x)) replace(n,m,nil()) -> nil() replace(n,m,cons(k,x)) -> if_replace(eq(n,k),n,m,cons(k,x)) if_replace(true(),n,m,cons(k,x)) -> cons(m,x) if_replace(false(),n,m,cons(k,x)) -> cons(k,replace(n,m,x)) empty(nil()) -> true() empty(cons(n,x)) -> false() head(cons(n,x)) -> n tail(nil()) -> nil() tail(cons(n,x)) -> x sort(x) -> sortIter(x,nil()) sortIter(x,y) -> if(empty(x),x,y,append(y,cons(min(x),nil()))) if(true(),x,y,z) -> y if(false(),x,y,z) -> sortIter(replace(min(x),head(x),tail(x)),z) Proof: DP Processor: DPs: eq#(s(n),s(m)) -> eq#(n,m) le#(s(n),s(m)) -> le#(n,m) min#(cons(n,cons(m,x))) -> le#(n,m) min#(cons(n,cons(m,x))) -> if_min#(le(n,m),cons(n,cons(m,x))) if_min#(true(),cons(n,cons(m,x))) -> min#(cons(n,x)) if_min#(false(),cons(n,cons(m,x))) -> min#(cons(m,x)) replace#(n,m,cons(k,x)) -> eq#(n,k) replace#(n,m,cons(k,x)) -> if_replace#(eq(n,k),n,m,cons(k,x)) if_replace#(false(),n,m,cons(k,x)) -> replace#(n,m,x) sort#(x) -> sortIter#(x,nil()) sortIter#(x,y) -> min#(x) sortIter#(x,y) -> empty#(x) sortIter#(x,y) -> if#(empty(x),x,y,append(y,cons(min(x),nil()))) if#(false(),x,y,z) -> tail#(x) if#(false(),x,y,z) -> head#(x) if#(false(),x,y,z) -> min#(x) if#(false(),x,y,z) -> replace#(min(x),head(x),tail(x)) if#(false(),x,y,z) -> sortIter#(replace(min(x),head(x),tail(x)),z) TRS: eq(0(),0()) -> true() eq(0(),s(m)) -> false() eq(s(n),0()) -> false() eq(s(n),s(m)) -> eq(n,m) le(0(),m) -> true() le(s(n),0()) -> false() le(s(n),s(m)) -> le(n,m) min(cons(x,nil())) -> x min(cons(n,cons(m,x))) -> if_min(le(n,m),cons(n,cons(m,x))) if_min(true(),cons(n,cons(m,x))) -> min(cons(n,x)) if_min(false(),cons(n,cons(m,x))) -> min(cons(m,x)) replace(n,m,nil()) -> nil() replace(n,m,cons(k,x)) -> if_replace(eq(n,k),n,m,cons(k,x)) if_replace(true(),n,m,cons(k,x)) -> cons(m,x) if_replace(false(),n,m,cons(k,x)) -> cons(k,replace(n,m,x)) empty(nil()) -> true() empty(cons(n,x)) -> false() head(cons(n,x)) -> n tail(nil()) -> nil() tail(cons(n,x)) -> x sort(x) -> sortIter(x,nil()) sortIter(x,y) -> if(empty(x),x,y,append(y,cons(min(x),nil()))) if(true(),x,y,z) -> y if(false(),x,y,z) -> sortIter(replace(min(x),head(x),tail(x)),z) TDG Processor: DPs: eq#(s(n),s(m)) -> eq#(n,m) le#(s(n),s(m)) -> le#(n,m) min#(cons(n,cons(m,x))) -> le#(n,m) min#(cons(n,cons(m,x))) -> if_min#(le(n,m),cons(n,cons(m,x))) if_min#(true(),cons(n,cons(m,x))) -> min#(cons(n,x)) if_min#(false(),cons(n,cons(m,x))) -> min#(cons(m,x)) replace#(n,m,cons(k,x)) -> eq#(n,k) replace#(n,m,cons(k,x)) -> if_replace#(eq(n,k),n,m,cons(k,x)) if_replace#(false(),n,m,cons(k,x)) -> replace#(n,m,x) sort#(x) -> sortIter#(x,nil()) sortIter#(x,y) -> min#(x) sortIter#(x,y) -> empty#(x) sortIter#(x,y) -> if#(empty(x),x,y,append(y,cons(min(x),nil()))) if#(false(),x,y,z) -> tail#(x) if#(false(),x,y,z) -> head#(x) if#(false(),x,y,z) -> min#(x) if#(false(),x,y,z) -> replace#(min(x),head(x),tail(x)) if#(false(),x,y,z) -> sortIter#(replace(min(x),head(x),tail(x)),z) TRS: eq(0(),0()) -> true() eq(0(),s(m)) -> false() eq(s(n),0()) -> false() eq(s(n),s(m)) -> eq(n,m) le(0(),m) -> true() le(s(n),0()) -> false() le(s(n),s(m)) -> le(n,m) min(cons(x,nil())) -> x min(cons(n,cons(m,x))) -> if_min(le(n,m),cons(n,cons(m,x))) if_min(true(),cons(n,cons(m,x))) -> min(cons(n,x)) if_min(false(),cons(n,cons(m,x))) -> min(cons(m,x)) replace(n,m,nil()) -> nil() replace(n,m,cons(k,x)) -> if_replace(eq(n,k),n,m,cons(k,x)) if_replace(true(),n,m,cons(k,x)) -> cons(m,x) if_replace(false(),n,m,cons(k,x)) -> cons(k,replace(n,m,x)) empty(nil()) -> true() empty(cons(n,x)) -> false() head(cons(n,x)) -> n tail(nil()) -> nil() tail(cons(n,x)) -> x sort(x) -> sortIter(x,nil()) sortIter(x,y) -> if(empty(x),x,y,append(y,cons(min(x),nil()))) if(true(),x,y,z) -> y if(false(),x,y,z) -> sortIter(replace(min(x),head(x),tail(x)),z) graph: if#(false(),x,y,z) -> sortIter#(replace(min(x),head(x),tail(x)),z) -> sortIter#(x,y) -> if#(empty(x),x,y,append(y,cons(min(x),nil()))) if#(false(),x,y,z) -> sortIter#(replace(min(x),head(x),tail(x)),z) -> sortIter#(x,y) -> empty#(x) if#(false(),x,y,z) -> sortIter#(replace(min(x),head(x),tail(x)),z) -> sortIter#(x,y) -> min#(x) if#(false(),x,y,z) -> replace#(min(x),head(x),tail(x)) -> replace#(n,m,cons(k,x)) -> if_replace#(eq(n,k),n,m,cons(k,x)) if#(false(),x,y,z) -> replace#(min(x),head(x),tail(x)) -> replace#(n,m,cons(k,x)) -> eq#(n,k) if#(false(),x,y,z) -> min#(x) -> min#(cons(n,cons(m,x))) -> if_min#(le(n,m),cons(n,cons(m,x))) if#(false(),x,y,z) -> min#(x) -> min#(cons(n,cons(m,x))) -> le#(n,m) sortIter#(x,y) -> if#(empty(x),x,y,append(y,cons(min(x),nil()))) -> if#(false(),x,y,z) -> sortIter#(replace(min(x),head(x),tail(x)),z) sortIter#(x,y) -> if#(empty(x),x,y,append(y,cons(min(x),nil()))) -> if#(false(),x,y,z) -> replace#(min(x),head(x),tail(x)) sortIter#(x,y) -> if#(empty(x),x,y,append(y,cons(min(x),nil()))) -> if#(false(),x,y,z) -> min#(x) sortIter#(x,y) -> if#(empty(x),x,y,append(y,cons(min(x),nil()))) -> if#(false(),x,y,z) -> head#(x) sortIter#(x,y) -> if#(empty(x),x,y,append(y,cons(min(x),nil()))) -> if#(false(),x,y,z) -> tail#(x) sortIter#(x,y) -> min#(x) -> min#(cons(n,cons(m,x))) -> if_min#(le(n,m),cons(n,cons(m,x))) sortIter#(x,y) -> min#(x) -> min#(cons(n,cons(m,x))) -> le#(n,m) sort#(x) -> sortIter#(x,nil()) -> sortIter#(x,y) -> if#(empty(x),x,y,append(y,cons(min(x),nil()))) sort#(x) -> sortIter#(x,nil()) -> sortIter#(x,y) -> empty#(x) sort#(x) -> sortIter#(x,nil()) -> sortIter#(x,y) -> min#(x) if_replace#(false(),n,m,cons(k,x)) -> replace#(n,m,x) -> replace#(n,m,cons(k,x)) -> if_replace#(eq(n,k),n,m,cons(k,x)) if_replace#(false(),n,m,cons(k,x)) -> replace#(n,m,x) -> replace#(n,m,cons(k,x)) -> eq#(n,k) replace#(n,m,cons(k,x)) -> if_replace#(eq(n,k),n,m,cons(k,x)) -> if_replace#(false(),n,m,cons(k,x)) -> replace#(n,m,x) replace#(n,m,cons(k,x)) -> eq#(n,k) -> eq#(s(n),s(m)) -> eq#(n,m) if_min#(false(),cons(n,cons(m,x))) -> min#(cons(m,x)) -> min#(cons(n,cons(m,x))) -> if_min#(le(n,m),cons(n,cons(m,x))) if_min#(false(),cons(n,cons(m,x))) -> min#(cons(m,x)) -> min#(cons(n,cons(m,x))) -> le#(n,m) if_min#(true(),cons(n,cons(m,x))) -> min#(cons(n,x)) -> min#(cons(n,cons(m,x))) -> if_min#(le(n,m),cons(n,cons(m,x))) if_min#(true(),cons(n,cons(m,x))) -> min#(cons(n,x)) -> min#(cons(n,cons(m,x))) -> le#(n,m) min#(cons(n,cons(m,x))) -> if_min#(le(n,m),cons(n,cons(m,x))) -> if_min#(false(),cons(n,cons(m,x))) -> min#(cons(m,x)) min#(cons(n,cons(m,x))) -> if_min#(le(n,m),cons(n,cons(m,x))) -> if_min#(true(),cons(n,cons(m,x))) -> min#(cons(n,x)) min#(cons(n,cons(m,x))) -> le#(n,m) -> le#(s(n),s(m)) -> le#(n,m) le#(s(n),s(m)) -> le#(n,m) -> le#(s(n),s(m)) -> le#(n,m) eq#(s(n),s(m)) -> eq#(n,m) -> eq#(s(n),s(m)) -> eq#(n,m) SCC Processor: #sccs: 5 #rules: 9 #arcs: 30/324 DPs: if#(false(),x,y,z) -> sortIter#(replace(min(x),head(x),tail(x)),z) sortIter#(x,y) -> if#(empty(x),x,y,append(y,cons(min(x),nil()))) TRS: eq(0(),0()) -> true() eq(0(),s(m)) -> false() eq(s(n),0()) -> false() eq(s(n),s(m)) -> eq(n,m) le(0(),m) -> true() le(s(n),0()) -> false() le(s(n),s(m)) -> le(n,m) min(cons(x,nil())) -> x min(cons(n,cons(m,x))) -> if_min(le(n,m),cons(n,cons(m,x))) if_min(true(),cons(n,cons(m,x))) -> min(cons(n,x)) if_min(false(),cons(n,cons(m,x))) -> min(cons(m,x)) replace(n,m,nil()) -> nil() replace(n,m,cons(k,x)) -> if_replace(eq(n,k),n,m,cons(k,x)) if_replace(true(),n,m,cons(k,x)) -> cons(m,x) if_replace(false(),n,m,cons(k,x)) -> cons(k,replace(n,m,x)) empty(nil()) -> true() empty(cons(n,x)) -> false() head(cons(n,x)) -> n tail(nil()) -> nil() tail(cons(n,x)) -> x sort(x) -> sortIter(x,nil()) sortIter(x,y) -> if(empty(x),x,y,append(y,cons(min(x),nil()))) if(true(),x,y,z) -> y if(false(),x,y,z) -> sortIter(replace(min(x),head(x),tail(x)),z) Usable Rule Processor: DPs: if#(false(),x,y,z) -> sortIter#(replace(min(x),head(x),tail(x)),z) sortIter#(x,y) -> if#(empty(x),x,y,append(y,cons(min(x),nil()))) TRS: tail(nil()) -> nil() tail(cons(n,x)) -> x head(cons(n,x)) -> n min(cons(x,nil())) -> x min(cons(n,cons(m,x))) -> if_min(le(n,m),cons(n,cons(m,x))) if_min(true(),cons(n,cons(m,x))) -> min(cons(n,x)) if_min(false(),cons(n,cons(m,x))) -> min(cons(m,x)) le(0(),m) -> true() le(s(n),0()) -> false() le(s(n),s(m)) -> le(n,m) replace(n,m,nil()) -> nil() replace(n,m,cons(k,x)) -> if_replace(eq(n,k),n,m,cons(k,x)) if_replace(true(),n,m,cons(k,x)) -> cons(m,x) if_replace(false(),n,m,cons(k,x)) -> cons(k,replace(n,m,x)) eq(0(),0()) -> true() eq(0(),s(m)) -> false() eq(s(n),0()) -> false() eq(s(n),s(m)) -> eq(n,m) empty(nil()) -> true() empty(cons(n,x)) -> false() Matrix Interpretation Processor: dim=1 usable rules: tail(nil()) -> nil() tail(cons(n,x)) -> x replace(n,m,nil()) -> nil() replace(n,m,cons(k,x)) -> if_replace(eq(n,k),n,m,cons(k,x)) if_replace(true(),n,m,cons(k,x)) -> cons(m,x) if_replace(false(),n,m,cons(k,x)) -> cons(k,replace(n,m,x)) empty(nil()) -> true() empty(cons(n,x)) -> false() interpretation: [if#](x0, x1, x2, x3) = 1/2x0 + 1/2x1 + 2, [sortIter#](x0, x1) = x0 + 5/2, [append](x0, x1) = 1/2, [tail](x0) = 1/2x0, [head](x0) = 0, [empty](x0) = x0, [if_replace](x0, x1, x2, x3) = x3, [replace](x0, x1, x2) = x2, [if_min](x0, x1) = 0, [min](x0) = 0, [cons](x0, x1) = 2x1 + 2, [nil] = 0, [le](x0, x1) = 2x1 + 1/2, [false] = 1, [s](x0) = x0 + 5/2, [true] = 0, [eq](x0, x1) = 2x1, [0] = 0 orientation: if#(false(),x,y,z) = 1/2x + 5/2 >= 1/2x + 5/2 = sortIter#(replace(min(x),head(x),tail(x)),z) sortIter#(x,y) = x + 5/2 >= x + 2 = if#(empty(x),x,y,append(y,cons(min(x),nil()))) tail(nil()) = 0 >= 0 = nil() tail(cons(n,x)) = x + 1 >= x = x head(cons(n,x)) = 0 >= n = n min(cons(x,nil())) = 0 >= x = x min(cons(n,cons(m,x))) = 0 >= 0 = if_min(le(n,m),cons(n,cons(m,x))) if_min(true(),cons(n,cons(m,x))) = 0 >= 0 = min(cons(n,x)) if_min(false(),cons(n,cons(m,x))) = 0 >= 0 = min(cons(m,x)) le(0(),m) = 2m + 1/2 >= 0 = true() le(s(n),0()) = 1/2 >= 1 = false() le(s(n),s(m)) = 2m + 11/2 >= 2m + 1/2 = le(n,m) replace(n,m,nil()) = 0 >= 0 = nil() replace(n,m,cons(k,x)) = 2x + 2 >= 2x + 2 = if_replace(eq(n,k),n,m,cons(k,x)) if_replace(true(),n,m,cons(k,x)) = 2x + 2 >= 2x + 2 = cons(m,x) if_replace(false(),n,m,cons(k,x)) = 2x + 2 >= 2x + 2 = cons(k,replace(n,m,x)) eq(0(),0()) = 0 >= 0 = true() eq(0(),s(m)) = 2m + 5 >= 1 = false() eq(s(n),0()) = 0 >= 1 = false() eq(s(n),s(m)) = 2m + 5 >= 2m = eq(n,m) empty(nil()) = 0 >= 0 = true() empty(cons(n,x)) = 2x + 2 >= 1 = false() problem: DPs: if#(false(),x,y,z) -> sortIter#(replace(min(x),head(x),tail(x)),z) TRS: tail(nil()) -> nil() tail(cons(n,x)) -> x head(cons(n,x)) -> n min(cons(x,nil())) -> x min(cons(n,cons(m,x))) -> if_min(le(n,m),cons(n,cons(m,x))) if_min(true(),cons(n,cons(m,x))) -> min(cons(n,x)) if_min(false(),cons(n,cons(m,x))) -> min(cons(m,x)) le(0(),m) -> true() le(s(n),0()) -> false() le(s(n),s(m)) -> le(n,m) replace(n,m,nil()) -> nil() replace(n,m,cons(k,x)) -> if_replace(eq(n,k),n,m,cons(k,x)) if_replace(true(),n,m,cons(k,x)) -> cons(m,x) if_replace(false(),n,m,cons(k,x)) -> cons(k,replace(n,m,x)) eq(0(),0()) -> true() eq(0(),s(m)) -> false() eq(s(n),0()) -> false() eq(s(n),s(m)) -> eq(n,m) empty(nil()) -> true() empty(cons(n,x)) -> false() Restore Modifier: DPs: if#(false(),x,y,z) -> sortIter#(replace(min(x),head(x),tail(x)),z) TRS: eq(0(),0()) -> true() eq(0(),s(m)) -> false() eq(s(n),0()) -> false() eq(s(n),s(m)) -> eq(n,m) le(0(),m) -> true() le(s(n),0()) -> false() le(s(n),s(m)) -> le(n,m) min(cons(x,nil())) -> x min(cons(n,cons(m,x))) -> if_min(le(n,m),cons(n,cons(m,x))) if_min(true(),cons(n,cons(m,x))) -> min(cons(n,x)) if_min(false(),cons(n,cons(m,x))) -> min(cons(m,x)) replace(n,m,nil()) -> nil() replace(n,m,cons(k,x)) -> if_replace(eq(n,k),n,m,cons(k,x)) if_replace(true(),n,m,cons(k,x)) -> cons(m,x) if_replace(false(),n,m,cons(k,x)) -> cons(k,replace(n,m,x)) empty(nil()) -> true() empty(cons(n,x)) -> false() head(cons(n,x)) -> n tail(nil()) -> nil() tail(cons(n,x)) -> x sort(x) -> sortIter(x,nil()) sortIter(x,y) -> if(empty(x),x,y,append(y,cons(min(x),nil()))) if(true(),x,y,z) -> y if(false(),x,y,z) -> sortIter(replace(min(x),head(x),tail(x)),z) SCC Processor: #sccs: 0 #rules: 0 #arcs: 2/1 DPs: replace#(n,m,cons(k,x)) -> if_replace#(eq(n,k),n,m,cons(k,x)) if_replace#(false(),n,m,cons(k,x)) -> replace#(n,m,x) TRS: eq(0(),0()) -> true() eq(0(),s(m)) -> false() eq(s(n),0()) -> false() eq(s(n),s(m)) -> eq(n,m) le(0(),m) -> true() le(s(n),0()) -> false() le(s(n),s(m)) -> le(n,m) min(cons(x,nil())) -> x min(cons(n,cons(m,x))) -> if_min(le(n,m),cons(n,cons(m,x))) if_min(true(),cons(n,cons(m,x))) -> min(cons(n,x)) if_min(false(),cons(n,cons(m,x))) -> min(cons(m,x)) replace(n,m,nil()) -> nil() replace(n,m,cons(k,x)) -> if_replace(eq(n,k),n,m,cons(k,x)) if_replace(true(),n,m,cons(k,x)) -> cons(m,x) if_replace(false(),n,m,cons(k,x)) -> cons(k,replace(n,m,x)) empty(nil()) -> true() empty(cons(n,x)) -> false() head(cons(n,x)) -> n tail(nil()) -> nil() tail(cons(n,x)) -> x sort(x) -> sortIter(x,nil()) sortIter(x,y) -> if(empty(x),x,y,append(y,cons(min(x),nil()))) if(true(),x,y,z) -> y if(false(),x,y,z) -> sortIter(replace(min(x),head(x),tail(x)),z) Subterm Criterion Processor: simple projection: pi(replace#) = 2 pi(if_replace#) = 3 problem: DPs: replace#(n,m,cons(k,x)) -> if_replace#(eq(n,k),n,m,cons(k,x)) TRS: eq(0(),0()) -> true() eq(0(),s(m)) -> false() eq(s(n),0()) -> false() eq(s(n),s(m)) -> eq(n,m) le(0(),m) -> true() le(s(n),0()) -> false() le(s(n),s(m)) -> le(n,m) min(cons(x,nil())) -> x min(cons(n,cons(m,x))) -> if_min(le(n,m),cons(n,cons(m,x))) if_min(true(),cons(n,cons(m,x))) -> min(cons(n,x)) if_min(false(),cons(n,cons(m,x))) -> min(cons(m,x)) replace(n,m,nil()) -> nil() replace(n,m,cons(k,x)) -> if_replace(eq(n,k),n,m,cons(k,x)) if_replace(true(),n,m,cons(k,x)) -> cons(m,x) if_replace(false(),n,m,cons(k,x)) -> cons(k,replace(n,m,x)) empty(nil()) -> true() empty(cons(n,x)) -> false() head(cons(n,x)) -> n tail(nil()) -> nil() tail(cons(n,x)) -> x sort(x) -> sortIter(x,nil()) sortIter(x,y) -> if(empty(x),x,y,append(y,cons(min(x),nil()))) if(true(),x,y,z) -> y if(false(),x,y,z) -> sortIter(replace(min(x),head(x),tail(x)),z) SCC Processor: #sccs: 0 #rules: 0 #arcs: 2/1 DPs: eq#(s(n),s(m)) -> eq#(n,m) TRS: eq(0(),0()) -> true() eq(0(),s(m)) -> false() eq(s(n),0()) -> false() eq(s(n),s(m)) -> eq(n,m) le(0(),m) -> true() le(s(n),0()) -> false() le(s(n),s(m)) -> le(n,m) min(cons(x,nil())) -> x min(cons(n,cons(m,x))) -> if_min(le(n,m),cons(n,cons(m,x))) if_min(true(),cons(n,cons(m,x))) -> min(cons(n,x)) if_min(false(),cons(n,cons(m,x))) -> min(cons(m,x)) replace(n,m,nil()) -> nil() replace(n,m,cons(k,x)) -> if_replace(eq(n,k),n,m,cons(k,x)) if_replace(true(),n,m,cons(k,x)) -> cons(m,x) if_replace(false(),n,m,cons(k,x)) -> cons(k,replace(n,m,x)) empty(nil()) -> true() empty(cons(n,x)) -> false() head(cons(n,x)) -> n tail(nil()) -> nil() tail(cons(n,x)) -> x sort(x) -> sortIter(x,nil()) sortIter(x,y) -> if(empty(x),x,y,append(y,cons(min(x),nil()))) if(true(),x,y,z) -> y if(false(),x,y,z) -> sortIter(replace(min(x),head(x),tail(x)),z) Subterm Criterion Processor: simple projection: pi(eq#) = 0 problem: DPs: TRS: eq(0(),0()) -> true() eq(0(),s(m)) -> false() eq(s(n),0()) -> false() eq(s(n),s(m)) -> eq(n,m) le(0(),m) -> true() le(s(n),0()) -> false() le(s(n),s(m)) -> le(n,m) min(cons(x,nil())) -> x min(cons(n,cons(m,x))) -> if_min(le(n,m),cons(n,cons(m,x))) if_min(true(),cons(n,cons(m,x))) -> min(cons(n,x)) if_min(false(),cons(n,cons(m,x))) -> min(cons(m,x)) replace(n,m,nil()) -> nil() replace(n,m,cons(k,x)) -> if_replace(eq(n,k),n,m,cons(k,x)) if_replace(true(),n,m,cons(k,x)) -> cons(m,x) if_replace(false(),n,m,cons(k,x)) -> cons(k,replace(n,m,x)) empty(nil()) -> true() empty(cons(n,x)) -> false() head(cons(n,x)) -> n tail(nil()) -> nil() tail(cons(n,x)) -> x sort(x) -> sortIter(x,nil()) sortIter(x,y) -> if(empty(x),x,y,append(y,cons(min(x),nil()))) if(true(),x,y,z) -> y if(false(),x,y,z) -> sortIter(replace(min(x),head(x),tail(x)),z) Qed DPs: min#(cons(n,cons(m,x))) -> if_min#(le(n,m),cons(n,cons(m,x))) if_min#(true(),cons(n,cons(m,x))) -> min#(cons(n,x)) if_min#(false(),cons(n,cons(m,x))) -> min#(cons(m,x)) TRS: eq(0(),0()) -> true() eq(0(),s(m)) -> false() eq(s(n),0()) -> false() eq(s(n),s(m)) -> eq(n,m) le(0(),m) -> true() le(s(n),0()) -> false() le(s(n),s(m)) -> le(n,m) min(cons(x,nil())) -> x min(cons(n,cons(m,x))) -> if_min(le(n,m),cons(n,cons(m,x))) if_min(true(),cons(n,cons(m,x))) -> min(cons(n,x)) if_min(false(),cons(n,cons(m,x))) -> min(cons(m,x)) replace(n,m,nil()) -> nil() replace(n,m,cons(k,x)) -> if_replace(eq(n,k),n,m,cons(k,x)) if_replace(true(),n,m,cons(k,x)) -> cons(m,x) if_replace(false(),n,m,cons(k,x)) -> cons(k,replace(n,m,x)) empty(nil()) -> true() empty(cons(n,x)) -> false() head(cons(n,x)) -> n tail(nil()) -> nil() tail(cons(n,x)) -> x sort(x) -> sortIter(x,nil()) sortIter(x,y) -> if(empty(x),x,y,append(y,cons(min(x),nil()))) if(true(),x,y,z) -> y if(false(),x,y,z) -> sortIter(replace(min(x),head(x),tail(x)),z) Usable Rule Processor: DPs: min#(cons(n,cons(m,x))) -> if_min#(le(n,m),cons(n,cons(m,x))) if_min#(true(),cons(n,cons(m,x))) -> min#(cons(n,x)) if_min#(false(),cons(n,cons(m,x))) -> min#(cons(m,x)) TRS: le(0(),m) -> true() le(s(n),0()) -> false() le(s(n),s(m)) -> le(n,m) Arctic Interpretation Processor: dimension: 1 usable rules: le(0(),m) -> true() le(s(n),0()) -> false() le(s(n),s(m)) -> le(n,m) interpretation: [if_min#](x0, x1) = x0 + x1 + -16, [min#](x0) = x0 + 0, [cons](x0, x1) = x0 + 1x1 + -3, [le](x0, x1) = x0 + 1x1, [false] = 4, [s](x0) = 4x0 + 5, [true] = 0, [0] = 0 orientation: min#(cons(n,cons(m,x))) = 1m + n + 2x + 0 >= 1m + n + 2x + -2 = if_min#(le(n,m),cons(n,cons(m,x))) if_min#(true(),cons(n,cons(m,x))) = 1m + n + 2x + 0 >= n + 1x + 0 = min#(cons(n,x)) if_min#(false(),cons(n,cons(m,x))) = 1m + n + 2x + 4 >= m + 1x + 0 = min#(cons(m,x)) le(0(),m) = 1m + 0 >= 0 = true() le(s(n),0()) = 4n + 5 >= 4 = false() le(s(n),s(m)) = 5m + 4n + 6 >= 1m + n = le(n,m) problem: DPs: min#(cons(n,cons(m,x))) -> if_min#(le(n,m),cons(n,cons(m,x))) if_min#(true(),cons(n,cons(m,x))) -> min#(cons(n,x)) TRS: le(0(),m) -> true() le(s(n),0()) -> false() le(s(n),s(m)) -> le(n,m) Restore Modifier: DPs: min#(cons(n,cons(m,x))) -> if_min#(le(n,m),cons(n,cons(m,x))) if_min#(true(),cons(n,cons(m,x))) -> min#(cons(n,x)) TRS: eq(0(),0()) -> true() eq(0(),s(m)) -> false() eq(s(n),0()) -> false() eq(s(n),s(m)) -> eq(n,m) le(0(),m) -> true() le(s(n),0()) -> false() le(s(n),s(m)) -> le(n,m) min(cons(x,nil())) -> x min(cons(n,cons(m,x))) -> if_min(le(n,m),cons(n,cons(m,x))) if_min(true(),cons(n,cons(m,x))) -> min(cons(n,x)) if_min(false(),cons(n,cons(m,x))) -> min(cons(m,x)) replace(n,m,nil()) -> nil() replace(n,m,cons(k,x)) -> if_replace(eq(n,k),n,m,cons(k,x)) if_replace(true(),n,m,cons(k,x)) -> cons(m,x) if_replace(false(),n,m,cons(k,x)) -> cons(k,replace(n,m,x)) empty(nil()) -> true() empty(cons(n,x)) -> false() head(cons(n,x)) -> n tail(nil()) -> nil() tail(cons(n,x)) -> x sort(x) -> sortIter(x,nil()) sortIter(x,y) -> if(empty(x),x,y,append(y,cons(min(x),nil()))) if(true(),x,y,z) -> y if(false(),x,y,z) -> sortIter(replace(min(x),head(x),tail(x)),z) Subterm Criterion Processor: simple projection: pi(s) = [0,0] pi(cons) = [1,1] pi(append) = 0 pi(min#) = [0,0] pi(if_min#) = 1 problem: DPs: if_min#(true(),cons(n,cons(m,x))) -> min#(cons(n,x)) TRS: eq(0(),0()) -> true() eq(0(),s(m)) -> false() eq(s(n),0()) -> false() eq(s(n),s(m)) -> eq(n,m) le(0(),m) -> true() le(s(n),0()) -> false() le(s(n),s(m)) -> le(n,m) min(cons(x,nil())) -> x min(cons(n,cons(m,x))) -> if_min(le(n,m),cons(n,cons(m,x))) if_min(true(),cons(n,cons(m,x))) -> min(cons(n,x)) if_min(false(),cons(n,cons(m,x))) -> min(cons(m,x)) replace(n,m,nil()) -> nil() replace(n,m,cons(k,x)) -> if_replace(eq(n,k),n,m,cons(k,x)) if_replace(true(),n,m,cons(k,x)) -> cons(m,x) if_replace(false(),n,m,cons(k,x)) -> cons(k,replace(n,m,x)) empty(nil()) -> true() empty(cons(n,x)) -> false() head(cons(n,x)) -> n tail(nil()) -> nil() tail(cons(n,x)) -> x sort(x) -> sortIter(x,nil()) sortIter(x,y) -> if(empty(x),x,y,append(y,cons(min(x),nil()))) if(true(),x,y,z) -> y if(false(),x,y,z) -> sortIter(replace(min(x),head(x),tail(x)),z) SCC Processor: #sccs: 0 #rules: 0 #arcs: 4/1 DPs: le#(s(n),s(m)) -> le#(n,m) TRS: eq(0(),0()) -> true() eq(0(),s(m)) -> false() eq(s(n),0()) -> false() eq(s(n),s(m)) -> eq(n,m) le(0(),m) -> true() le(s(n),0()) -> false() le(s(n),s(m)) -> le(n,m) min(cons(x,nil())) -> x min(cons(n,cons(m,x))) -> if_min(le(n,m),cons(n,cons(m,x))) if_min(true(),cons(n,cons(m,x))) -> min(cons(n,x)) if_min(false(),cons(n,cons(m,x))) -> min(cons(m,x)) replace(n,m,nil()) -> nil() replace(n,m,cons(k,x)) -> if_replace(eq(n,k),n,m,cons(k,x)) if_replace(true(),n,m,cons(k,x)) -> cons(m,x) if_replace(false(),n,m,cons(k,x)) -> cons(k,replace(n,m,x)) empty(nil()) -> true() empty(cons(n,x)) -> false() head(cons(n,x)) -> n tail(nil()) -> nil() tail(cons(n,x)) -> x sort(x) -> sortIter(x,nil()) sortIter(x,y) -> if(empty(x),x,y,append(y,cons(min(x),nil()))) if(true(),x,y,z) -> y if(false(),x,y,z) -> sortIter(replace(min(x),head(x),tail(x)),z) Subterm Criterion Processor: simple projection: pi(le#) = 0 problem: DPs: TRS: eq(0(),0()) -> true() eq(0(),s(m)) -> false() eq(s(n),0()) -> false() eq(s(n),s(m)) -> eq(n,m) le(0(),m) -> true() le(s(n),0()) -> false() le(s(n),s(m)) -> le(n,m) min(cons(x,nil())) -> x min(cons(n,cons(m,x))) -> if_min(le(n,m),cons(n,cons(m,x))) if_min(true(),cons(n,cons(m,x))) -> min(cons(n,x)) if_min(false(),cons(n,cons(m,x))) -> min(cons(m,x)) replace(n,m,nil()) -> nil() replace(n,m,cons(k,x)) -> if_replace(eq(n,k),n,m,cons(k,x)) if_replace(true(),n,m,cons(k,x)) -> cons(m,x) if_replace(false(),n,m,cons(k,x)) -> cons(k,replace(n,m,x)) empty(nil()) -> true() empty(cons(n,x)) -> false() head(cons(n,x)) -> n tail(nil()) -> nil() tail(cons(n,x)) -> x sort(x) -> sortIter(x,nil()) sortIter(x,y) -> if(empty(x),x,y,append(y,cons(min(x),nil()))) if(true(),x,y,z) -> y if(false(),x,y,z) -> sortIter(replace(min(x),head(x),tail(x)),z) Qed