YES Problem: ite(tt(),u,v) -> u ite(ff(),u,v) -> v find(u,v,nil()) -> ff() find(u,v,cons(cons(u,v),E)) -> tt() find(u,v,cons(cons(u2,v2),E)) -> find(u,v,E) complete(u,nil(),E) -> tt() complete(u,cons(v,S),E) -> ite(find(u,v,E),complete(u,S,E),ff()) clique(nil(),E) -> tt() clique(cons(u,K),E) -> ite(complete(u,K,E),clique(K,E),ff()) choice(nil(),K,E) -> ite(clique(K,E),K,nil()) choice(cons(u,S),K,E) -> choice(S,cons(u,K),E) choice(cons(u,S),K,E) -> choice(S,K,E) Proof: DP Processor: DPs: find#(u,v,cons(cons(u2,v2),E)) -> find#(u,v,E) complete#(u,cons(v,S),E) -> complete#(u,S,E) complete#(u,cons(v,S),E) -> find#(u,v,E) complete#(u,cons(v,S),E) -> ite#(find(u,v,E),complete(u,S,E),ff()) clique#(cons(u,K),E) -> clique#(K,E) clique#(cons(u,K),E) -> complete#(u,K,E) clique#(cons(u,K),E) -> ite#(complete(u,K,E),clique(K,E),ff()) choice#(nil(),K,E) -> clique#(K,E) choice#(nil(),K,E) -> ite#(clique(K,E),K,nil()) choice#(cons(u,S),K,E) -> choice#(S,cons(u,K),E) choice#(cons(u,S),K,E) -> choice#(S,K,E) TRS: ite(tt(),u,v) -> u ite(ff(),u,v) -> v find(u,v,nil()) -> ff() find(u,v,cons(cons(u,v),E)) -> tt() find(u,v,cons(cons(u2,v2),E)) -> find(u,v,E) complete(u,nil(),E) -> tt() complete(u,cons(v,S),E) -> ite(find(u,v,E),complete(u,S,E),ff()) clique(nil(),E) -> tt() clique(cons(u,K),E) -> ite(complete(u,K,E),clique(K,E),ff()) choice(nil(),K,E) -> ite(clique(K,E),K,nil()) choice(cons(u,S),K,E) -> choice(S,cons(u,K),E) choice(cons(u,S),K,E) -> choice(S,K,E) Matrix Interpretation Processor: dim=1 interpretation: [choice#](x0, x1, x2) = 2x0 + x1 + 5/2x2, [clique#](x0, x1) = x0 + 2x1, [complete#](x0, x1, x2) = 1/2x0 + x1 + 2x2, [find#](x0, x1, x2) = x1 + 2x2, [ite#](x0, x1, x2) = x2, [choice](x0, x1, x2) = 3x0 + 2x1 + 1/2x2 + 7/2, [clique](x0, x1) = 0, [complete](x0, x1, x2) = 0, [cons](x0, x1) = x0 + x1 + 1/2, [find](x0, x1, x2) = x2 + 2, [nil] = 1, [ff] = 0, [ite](x0, x1, x2) = 2x1 + 2x2, [tt] = 0 orientation: find#(u,v,cons(cons(u2,v2),E)) = 2E + 2u2 + v + 2v2 + 2 >= 2E + v = find#(u,v,E) complete#(u,cons(v,S),E) = 2E + S + 1/2u + v + 1/2 >= 2E + S + 1/2u = complete#(u,S,E) complete#(u,cons(v,S),E) = 2E + S + 1/2u + v + 1/2 >= 2E + v = find#(u,v,E) complete#(u,cons(v,S),E) = 2E + S + 1/2u + v + 1/2 >= 0 = ite#(find(u,v,E),complete(u,S,E),ff()) clique#(cons(u,K),E) = 2E + K + u + 1/2 >= 2E + K = clique#(K,E) clique#(cons(u,K),E) = 2E + K + u + 1/2 >= 2E + K + 1/2u = complete#(u,K,E) clique#(cons(u,K),E) = 2E + K + u + 1/2 >= 0 = ite#(complete(u,K,E),clique(K,E),ff()) choice#(nil(),K,E) = 5/2E + K + 2 >= 2E + K = clique#(K,E) choice#(nil(),K,E) = 5/2E + K + 2 >= 1 = ite#(clique(K,E),K,nil()) choice#(cons(u,S),K,E) = 5/2E + K + 2S + 2u + 1 >= 5/2E + K + 2S + u + 1/2 = choice#(S,cons(u,K),E) choice#(cons(u,S),K,E) = 5/2E + K + 2S + 2u + 1 >= 5/2E + K + 2S = choice#(S,K,E) ite(tt(),u,v) = 2u + 2v >= u = u ite(ff(),u,v) = 2u + 2v >= v = v find(u,v,nil()) = 3 >= 0 = ff() find(u,v,cons(cons(u,v),E)) = E + u + v + 3 >= 0 = tt() find(u,v,cons(cons(u2,v2),E)) = E + u2 + v2 + 3 >= E + 2 = find(u,v,E) complete(u,nil(),E) = 0 >= 0 = tt() complete(u,cons(v,S),E) = 0 >= 0 = ite(find(u,v,E),complete(u,S,E),ff()) clique(nil(),E) = 0 >= 0 = tt() clique(cons(u,K),E) = 0 >= 0 = ite(complete(u,K,E),clique(K,E),ff()) choice(nil(),K,E) = 1/2E + 2K + 13/2 >= 2K + 2 = ite(clique(K,E),K,nil()) choice(cons(u,S),K,E) = 1/2E + 2K + 3S + 3u + 5 >= 1/2E + 2K + 3S + 2u + 9/2 = choice(S,cons(u,K),E) choice(cons(u,S),K,E) = 1/2E + 2K + 3S + 3u + 5 >= 1/2E + 2K + 3S + 7/2 = choice(S,K,E) problem: DPs: TRS: ite(tt(),u,v) -> u ite(ff(),u,v) -> v find(u,v,nil()) -> ff() find(u,v,cons(cons(u,v),E)) -> tt() find(u,v,cons(cons(u2,v2),E)) -> find(u,v,E) complete(u,nil(),E) -> tt() complete(u,cons(v,S),E) -> ite(find(u,v,E),complete(u,S,E),ff()) clique(nil(),E) -> tt() clique(cons(u,K),E) -> ite(complete(u,K,E),clique(K,E),ff()) choice(nil(),K,E) -> ite(clique(K,E),K,nil()) choice(cons(u,S),K,E) -> choice(S,cons(u,K),E) choice(cons(u,S),K,E) -> choice(S,K,E) Qed